diff --git a/.config/chromium/BrowserMetrics-spare.pma b/.config/chromium/BrowserMetrics-spare.pma deleted file mode 100644 index 98fc2c0..0000000 Binary files a/.config/chromium/BrowserMetrics-spare.pma and /dev/null differ diff --git a/.config/chromium/Default/Affiliation Database b/.config/chromium/Default/Affiliation Database deleted file mode 100644 index e459ac3..0000000 Binary files a/.config/chromium/Default/Affiliation Database and /dev/null differ diff --git a/.config/chromium/Default/Affiliation Database-journal b/.config/chromium/Default/Affiliation Database-journal deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/AutofillStrikeDatabase/LOCK b/.config/chromium/Default/AutofillStrikeDatabase/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/AutofillStrikeDatabase/LOG b/.config/chromium/Default/AutofillStrikeDatabase/LOG deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/AutofillStrikeDatabase/LOG.old b/.config/chromium/Default/AutofillStrikeDatabase/LOG.old deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/Bookmarks b/.config/chromium/Default/Bookmarks deleted file mode 100644 index 3e20a91..0000000 --- a/.config/chromium/Default/Bookmarks +++ /dev/null @@ -1,69 +0,0 @@ -{ - "checksum": "b288913561a17036e9779bd6c4cd9b50", - "roots": { - "bookmark_bar": { - "children": [ ], - "date_added": "13371338712178276", - "date_last_used": "0", - "date_modified": "0", - "guid": "0bc5d13f-2cba-5d74-951f-3f233fe6c908", - "id": "1", - "name": "Bookmarks bar", - "type": "folder" - }, - "other": { - "children": [ { - "date_added": "13371341067659665", - "date_last_used": "0", - "guid": "d77dd80b-cd55-4e5f-8223-153bb12064d4", - "id": "6", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "SearXNG @ searx.tiekoetter.com", - "type": "url", - "url": "https://searx.tiekoetter.com/" - }, { - "date_added": "13371347906164494", - "date_last_used": "0", - "guid": "74746efb-e4bb-4a2d-b576-96c07e541d01", - "id": "8", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "Invidious - search", - "type": "url", - "url": "https://yewtu.be/?dark_mode=true" - }, { - "date_added": "13371412140292672", - "date_last_used": "0", - "guid": "59a57491-481c-493a-a7c0-005c5744e0f3", - "id": "10", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "ArchWiki", - "type": "url", - "url": "https://wiki.archlinux.org/title/Main_page" - } ], - "date_added": "13371338712178280", - "date_last_used": "0", - "date_modified": "13371412140292672", - "guid": "82b081ec-3dd3-529c-8475-ab6c344590dd", - "id": "2", - "name": "Other bookmarks", - "type": "folder" - }, - "synced": { - "children": [ ], - "date_added": "13371338712178285", - "date_last_used": "0", - "date_modified": "0", - "guid": "4cf2e351-0e85-532b-bb37-df045d8f8d0f", - "id": "3", - "name": "Mobile bookmarks", - "type": "folder" - } - }, - "version": 1 -} diff --git a/.config/chromium/Default/Bookmarks.bak b/.config/chromium/Default/Bookmarks.bak deleted file mode 100644 index 5f52d34..0000000 --- a/.config/chromium/Default/Bookmarks.bak +++ /dev/null @@ -1,58 +0,0 @@ -{ - "checksum": "74bb24d81c9b34e1c12258d441fc5adc", - "roots": { - "bookmark_bar": { - "children": [ ], - "date_added": "13371338712178276", - "date_last_used": "0", - "date_modified": "0", - "guid": "0bc5d13f-2cba-5d74-951f-3f233fe6c908", - "id": "1", - "name": "Bookmarks bar", - "type": "folder" - }, - "other": { - "children": [ { - "date_added": "13371341067659665", - "date_last_used": "0", - "guid": "d77dd80b-cd55-4e5f-8223-153bb12064d4", - "id": "6", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "SearXNG @ searx.tiekoetter.com", - "type": "url", - "url": "https://searx.tiekoetter.com/" - }, { - "date_added": "13371347906164494", - "date_last_used": "0", - "guid": "74746efb-e4bb-4a2d-b576-96c07e541d01", - "id": "8", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "Invidious - search", - "type": "url", - "url": "https://yewtu.be/?dark_mode=true" - } ], - "date_added": "13371338712178280", - "date_last_used": "0", - "date_modified": "13371347906164494", - "guid": "82b081ec-3dd3-529c-8475-ab6c344590dd", - "id": "2", - "name": "Other bookmarks", - "type": "folder" - }, - "synced": { - "children": [ ], - "date_added": "13371338712178285", - "date_last_used": "0", - "date_modified": "0", - "guid": "4cf2e351-0e85-532b-bb37-df045d8f8d0f", - "id": "3", - "name": "Mobile bookmarks", - "type": "folder" - } - }, - "version": 1 -} diff --git a/.config/chromium/Default/BrowsingTopicsSiteData b/.config/chromium/Default/BrowsingTopicsSiteData deleted file mode 100644 index f2452f6..0000000 Binary files a/.config/chromium/Default/BrowsingTopicsSiteData and /dev/null differ diff --git a/.config/chromium/Default/BrowsingTopicsSiteData-journal b/.config/chromium/Default/BrowsingTopicsSiteData-journal deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/BrowsingTopicsState b/.config/chromium/Default/BrowsingTopicsState deleted file mode 100644 index 37f0fbb..0000000 --- a/.config/chromium/Default/BrowsingTopicsState +++ /dev/null @@ -1,12 +0,0 @@ -{ - "epochs": [ { - "calculation_time": "13371338662888379", - "config_version": 0, - "model_version": "0", - "padded_top_topics_start_index": 0, - "taxonomy_version": 0, - "top_topics_and_observing_domains": [ ] - } ], - "hex_encoded_hmac_key": "C6284259A66126C989A81526894D206523F17EE7879102FB97CE4B347DE7D7B2", - "next_scheduled_calculation_time": "13371943462888468" -} diff --git a/.config/chromium/Default/BudgetDatabase/LOCK b/.config/chromium/Default/BudgetDatabase/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/BudgetDatabase/LOG b/.config/chromium/Default/BudgetDatabase/LOG deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/BudgetDatabase/LOG.old b/.config/chromium/Default/BudgetDatabase/LOG.old deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/ClientCertificates/LOCK b/.config/chromium/Default/ClientCertificates/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/ClientCertificates/LOG b/.config/chromium/Default/ClientCertificates/LOG deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/ClientCertificates/LOG.old b/.config/chromium/Default/ClientCertificates/LOG.old deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/Cookies b/.config/chromium/Default/Cookies deleted file mode 100644 index 5212c1d..0000000 Binary files a/.config/chromium/Default/Cookies and /dev/null differ diff --git a/.config/chromium/Default/Cookies-journal b/.config/chromium/Default/Cookies-journal deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/DIPS b/.config/chromium/Default/DIPS deleted file mode 100644 index 57a6485..0000000 Binary files a/.config/chromium/Default/DIPS and /dev/null differ diff --git a/.config/chromium/Default/DIPS-journal b/.config/chromium/Default/DIPS-journal deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/DawnGraphiteCache/data_0 b/.config/chromium/Default/DawnGraphiteCache/data_0 deleted file mode 100644 index d76fb77..0000000 Binary files a/.config/chromium/Default/DawnGraphiteCache/data_0 and /dev/null differ diff --git a/.config/chromium/Default/DawnGraphiteCache/data_1 b/.config/chromium/Default/DawnGraphiteCache/data_1 deleted file mode 100644 index 5add007..0000000 Binary files a/.config/chromium/Default/DawnGraphiteCache/data_1 and /dev/null differ diff --git a/.config/chromium/Default/DawnGraphiteCache/data_2 b/.config/chromium/Default/DawnGraphiteCache/data_2 deleted file mode 100644 index c7e2eb9..0000000 Binary files a/.config/chromium/Default/DawnGraphiteCache/data_2 and /dev/null differ diff --git a/.config/chromium/Default/DawnGraphiteCache/data_3 b/.config/chromium/Default/DawnGraphiteCache/data_3 deleted file mode 100644 index 5eec973..0000000 Binary files a/.config/chromium/Default/DawnGraphiteCache/data_3 and /dev/null differ diff --git a/.config/chromium/Default/DawnGraphiteCache/index b/.config/chromium/Default/DawnGraphiteCache/index deleted file mode 100644 index 00c6a8b..0000000 Binary files a/.config/chromium/Default/DawnGraphiteCache/index and /dev/null differ diff --git a/.config/chromium/Default/DawnWebGPUCache/data_0 b/.config/chromium/Default/DawnWebGPUCache/data_0 deleted file mode 100644 index d76fb77..0000000 Binary files a/.config/chromium/Default/DawnWebGPUCache/data_0 and /dev/null differ diff --git a/.config/chromium/Default/DawnWebGPUCache/data_1 b/.config/chromium/Default/DawnWebGPUCache/data_1 deleted file mode 100644 index 7fa818d..0000000 Binary files a/.config/chromium/Default/DawnWebGPUCache/data_1 and /dev/null differ diff --git a/.config/chromium/Default/DawnWebGPUCache/data_2 b/.config/chromium/Default/DawnWebGPUCache/data_2 deleted file mode 100644 index c7e2eb9..0000000 Binary files a/.config/chromium/Default/DawnWebGPUCache/data_2 and /dev/null differ diff --git a/.config/chromium/Default/DawnWebGPUCache/data_3 b/.config/chromium/Default/DawnWebGPUCache/data_3 deleted file mode 100644 index 5eec973..0000000 Binary files a/.config/chromium/Default/DawnWebGPUCache/data_3 and /dev/null differ diff --git a/.config/chromium/Default/DawnWebGPUCache/index b/.config/chromium/Default/DawnWebGPUCache/index deleted file mode 100644 index e2ae0ef..0000000 Binary files a/.config/chromium/Default/DawnWebGPUCache/index and /dev/null differ diff --git a/.config/chromium/Default/Download Service/EntryDB/LOCK b/.config/chromium/Default/Download Service/EntryDB/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/Download Service/EntryDB/LOG b/.config/chromium/Default/Download Service/EntryDB/LOG deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/Download Service/EntryDB/LOG.old b/.config/chromium/Default/Download Service/EntryDB/LOG.old deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/Extension Cookies b/.config/chromium/Default/Extension Cookies deleted file mode 100644 index 365f7f2..0000000 Binary files a/.config/chromium/Default/Extension Cookies and /dev/null differ diff --git a/.config/chromium/Default/Extension Cookies-journal b/.config/chromium/Default/Extension Cookies-journal deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/Extension Rules/000003.log b/.config/chromium/Default/Extension Rules/000003.log deleted file mode 100644 index 61f8dd2..0000000 Binary files a/.config/chromium/Default/Extension Rules/000003.log and /dev/null differ diff --git a/.config/chromium/Default/Extension Rules/CURRENT b/.config/chromium/Default/Extension Rules/CURRENT deleted file mode 100644 index 7ed683d..0000000 --- a/.config/chromium/Default/Extension Rules/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/.config/chromium/Default/Extension Rules/LOCK b/.config/chromium/Default/Extension Rules/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/Extension Rules/LOG b/.config/chromium/Default/Extension Rules/LOG deleted file mode 100644 index e31127a..0000000 --- a/.config/chromium/Default/Extension Rules/LOG +++ /dev/null @@ -1,3 +0,0 @@ -2024/09/20-22:46:07.888 3f7e5 Reusing MANIFEST /home/gor/.config/chromium/Default/Extension Rules/MANIFEST-000001 -2024/09/20-22:46:07.888 3f7e5 Recovering log #3 -2024/09/20-22:46:07.888 3f7e5 Reusing old log /home/gor/.config/chromium/Default/Extension Rules/000003.log diff --git a/.config/chromium/Default/Extension Rules/LOG.old b/.config/chromium/Default/Extension Rules/LOG.old deleted file mode 100644 index 78be5f4..0000000 --- a/.config/chromium/Default/Extension Rules/LOG.old +++ /dev/null @@ -1,3 +0,0 @@ -2024/09/20-20:16:10.474 38052 Reusing MANIFEST /home/gor/.config/chromium/Default/Extension Rules/MANIFEST-000001 -2024/09/20-20:16:10.475 38052 Recovering log #3 -2024/09/20-20:16:10.475 38052 Reusing old log /home/gor/.config/chromium/Default/Extension Rules/000003.log diff --git a/.config/chromium/Default/Extension Rules/MANIFEST-000001 b/.config/chromium/Default/Extension Rules/MANIFEST-000001 deleted file mode 100644 index 18e5cab..0000000 Binary files a/.config/chromium/Default/Extension Rules/MANIFEST-000001 and /dev/null differ diff --git a/.config/chromium/Default/Extension Scripts/000003.log b/.config/chromium/Default/Extension Scripts/000003.log deleted file mode 100644 index aa265aa..0000000 Binary files a/.config/chromium/Default/Extension Scripts/000003.log and /dev/null differ diff --git a/.config/chromium/Default/Extension Scripts/CURRENT b/.config/chromium/Default/Extension Scripts/CURRENT deleted file mode 100644 index 7ed683d..0000000 --- a/.config/chromium/Default/Extension Scripts/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/.config/chromium/Default/Extension Scripts/LOCK b/.config/chromium/Default/Extension Scripts/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/Extension Scripts/LOG b/.config/chromium/Default/Extension Scripts/LOG deleted file mode 100644 index ea4a299..0000000 --- a/.config/chromium/Default/Extension Scripts/LOG +++ /dev/null @@ -1,3 +0,0 @@ -2024/09/20-22:46:07.889 3f7e5 Reusing MANIFEST /home/gor/.config/chromium/Default/Extension Scripts/MANIFEST-000001 -2024/09/20-22:46:07.889 3f7e5 Recovering log #3 -2024/09/20-22:46:07.889 3f7e5 Reusing old log /home/gor/.config/chromium/Default/Extension Scripts/000003.log diff --git a/.config/chromium/Default/Extension Scripts/LOG.old b/.config/chromium/Default/Extension Scripts/LOG.old deleted file mode 100644 index 6939c1a..0000000 --- a/.config/chromium/Default/Extension Scripts/LOG.old +++ /dev/null @@ -1,3 +0,0 @@ -2024/09/20-20:16:10.476 38052 Reusing MANIFEST /home/gor/.config/chromium/Default/Extension Scripts/MANIFEST-000001 -2024/09/20-20:16:10.476 38052 Recovering log #3 -2024/09/20-20:16:10.476 38052 Reusing old log /home/gor/.config/chromium/Default/Extension Scripts/000003.log diff --git a/.config/chromium/Default/Extension Scripts/MANIFEST-000001 b/.config/chromium/Default/Extension Scripts/MANIFEST-000001 deleted file mode 100644 index 18e5cab..0000000 Binary files a/.config/chromium/Default/Extension Scripts/MANIFEST-000001 and /dev/null differ diff --git a/.config/chromium/Default/Extension State/000003.log b/.config/chromium/Default/Extension State/000003.log deleted file mode 100644 index fd9c3e0..0000000 Binary files a/.config/chromium/Default/Extension State/000003.log and /dev/null differ diff --git a/.config/chromium/Default/Extension State/CURRENT b/.config/chromium/Default/Extension State/CURRENT deleted file mode 100644 index 7ed683d..0000000 --- a/.config/chromium/Default/Extension State/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/.config/chromium/Default/Extension State/LOCK b/.config/chromium/Default/Extension State/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/Extension State/LOG b/.config/chromium/Default/Extension State/LOG deleted file mode 100644 index 7f10754..0000000 --- a/.config/chromium/Default/Extension State/LOG +++ /dev/null @@ -1,3 +0,0 @@ -2024/09/21-14:41:19.267 92ec Reusing MANIFEST /home/gor/.config/chromium/Default/Extension State/MANIFEST-000001 -2024/09/21-14:41:19.267 92ec Recovering log #3 -2024/09/21-14:41:19.269 92ec Reusing old log /home/gor/.config/chromium/Default/Extension State/000003.log diff --git a/.config/chromium/Default/Extension State/LOG.old b/.config/chromium/Default/Extension State/LOG.old deleted file mode 100644 index 89f6e38..0000000 --- a/.config/chromium/Default/Extension State/LOG.old +++ /dev/null @@ -1,3 +0,0 @@ -2024/09/21-14:41:07.061 90fe Reusing MANIFEST /home/gor/.config/chromium/Default/Extension State/MANIFEST-000001 -2024/09/21-14:41:07.061 90fe Recovering log #3 -2024/09/21-14:41:07.063 90fe Reusing old log /home/gor/.config/chromium/Default/Extension State/000003.log diff --git a/.config/chromium/Default/Extension State/MANIFEST-000001 b/.config/chromium/Default/Extension State/MANIFEST-000001 deleted file mode 100644 index 18e5cab..0000000 Binary files a/.config/chromium/Default/Extension State/MANIFEST-000001 and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/_metadata/verified_contents.json b/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/_metadata/verified_contents.json deleted file mode 100644 index a5592a7..0000000 --- a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/_metadata/verified_contents.json +++ /dev/null @@ -1 +0,0 @@ -[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJpY29ucy8xMjgucG5nIiwicm9vdF9oYXNoIjoiOWFCTHNWdWU0UG55WlRBUG9hMnJEbzZrWTZTSklFd0ZDWlRsa0lhLXZvVSJ9LHsicGF0aCI6Imljb25zLzE2LnBuZyIsInJvb3RfaGFzaCI6ImhvYnpYeHlYUl8tZ1c2TXJDT0N5NGhrcFBmc2Y1bEdhVmVSQnVkY0dVeUEifSx7InBhdGgiOiJpY29ucy8zMi5wbmciLCJyb290X2hhc2giOiItT09ScldyVjhGSGx4NVdTeWluTzYwZ2RndGVTeV9fWlBXYTlyUWxpQTFJIn0seyJwYXRoIjoiaWNvbnMvMzgtb2ZmLnBuZyIsInJvb3RfaGFzaCI6Ikt0ZUk2cWhXS2xxX2c3MTRyQzFkN1gtQmtqbF9JUGNLRGtLR1dteGxuX3cifSx7InBhdGgiOiJpY29ucy8zOC1vbi5wbmciLCJyb290X2hhc2giOiJxU29hTHlVWnpUUlI4QllrX2dVc3EtLVVsazNaWUk4UFJaZjY0aER5RVRNIn0seyJwYXRoIjoiaWNvbnMvNDgucG5nIiwicm9vdF9oYXNoIjoiV3VTUkpPekZhM0MtUDM0aHhJR3ZyU3BZU2ZYSTY1cFhtMmphb2R0OENLTSJ9LHsicGF0aCI6ImpzL29wdGlvbnMuanMiLCJyb290X2hhc2giOiJTOFZaYlBBM1g2eE5vb2FMOFlZR3cyS3Z4aXdyUXk3dVpOd0pPeWlTS3BzIn0seyJwYXRoIjoianMvc2VydmljZS13b3JrZXItYXN5bmMuanMiLCJyb290X2hhc2giOiJFbHBIY0NyRUNVdXFEYTNrZnhiQ1VCYVppZHlaMDBGX1l3SDNqcnAwQkdRIn0seyJwYXRoIjoibWFuaWZlc3QuanNvbiIsInJvb3RfaGFzaCI6Ii1NenJoaWV3ak1CS3lHV1RsQzFZdndLbjNBVjdCd0dQN1RvVjdMVGdtUmsifSx7InBhdGgiOiJvcHRpb25zLmh0bWwiLCJyb290X2hhc2giOiJ5YnFrOVNHOGhrS05fY3pkSEtDdnpYYUdNOWpmcWxlM2hSdG01ZmVFYm8wIn1dLCJmb3JtYXQiOiJ0cmVlaGFzaCIsImhhc2hfYmxvY2tfc2l6ZSI6NDA5Nn1dLCJpdGVtX2lkIjoiY2lkbGNqZGFsb21uZHBlYWdranBuZWZobGpmZmJubG8iLCJpdGVtX3ZlcnNpb24iOiIyLjAiLCJwcm90b2NvbF92ZXJzaW9uIjoxfQ","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"FhJ8dTHz8Ds_YrpcJ3sPSDjbwj8CpUqUBC3S9CckwJaLNcu4n9qCN07bswrBeV4Spi7O9yfUvsHnqNS2-P8Y1sk6TX4KMC5BZrWrfbNgWPI8pfd5FSP9ssqhqbEGwxpk1j7tmcExG5PPHYaKGlrUvPF_It4QSxS5SXJElr6M6CodlFjuJzDxW6rvv6ucocHN0SNt1ajONkniFvcuAcejH9CQux6c_Xk7z-U5b9xAALc7Xek7S829rYzwZop76IomRaxJZWGN5OeBp2k43iqQEbnK7c5YGDEAmwYCxDZrAwtm5X61jZLWqHQ9bbgCK7SxJDmHp7HsxB5PXENNTu5RDw"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"idniNKOuoQ-Px0IOdaoSNocph4rNrzwhphTG1Heug4-Y9rC2TYYxhrWdJgTK9P7-e9fBq0YN4JO242eKKx0JAkMg26UNZFW2nB0r1eRZYjSjPkhvF_zVcIMGRCPeStl9UmE5FG6l67C0ay3DVjz050ZZpKREfoncW3gh8ZtNlOwuUAS3AqNHJ2bSDV9SnIxFe3wmzvUOobQWMOTlJho6OaFsovVWQ4BSHYrMh3Bn3Pd8oeI_-wxvT7iMujbGytm7ZKW_6io4RPfOsT2FozY5x5z09V3NQjKIH5SjnfPSe_hgRdBpnhOZq3r_bD-ue0UrBkBS1drFCpMkh3GRdxocug"}]}}] \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/icons/128.png b/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/icons/128.png deleted file mode 100644 index 17cf86f..0000000 Binary files a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/icons/128.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/icons/16.png b/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/icons/16.png deleted file mode 100644 index abbe62c..0000000 Binary files a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/icons/16.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/icons/32.png b/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/icons/32.png deleted file mode 100644 index c896ad1..0000000 Binary files a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/icons/32.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/icons/38-off.png b/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/icons/38-off.png deleted file mode 100644 index ac0cb1e..0000000 Binary files a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/icons/38-off.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/icons/38-on.png b/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/icons/38-on.png deleted file mode 100644 index b729b48..0000000 Binary files a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/icons/38-on.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/icons/48.png b/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/icons/48.png deleted file mode 100644 index 6c34da9..0000000 Binary files a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/icons/48.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/js/options.js b/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/js/options.js deleted file mode 100644 index f4c4a75..0000000 --- a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/js/options.js +++ /dev/null @@ -1,28 +0,0 @@ -function load() { - chrome.storage.sync.get(function(config) { - Object.keys(config).forEach(function(k) { - document.querySelector('[data-storage-key="' + k + '"]').checked = config[k]; - }); - }); -} - -function update(config) { - chrome.storage.sync.set(config, function() { - }); -} - -function init() { - load(); - - document.getElementById('opts-container').addEventListener('click', function(evt) { - var el = evt.target; - var key = el.getAttribute('data-storage-key'); - if (key) { - var checked = el.checked; - var obj = {[key]: checked}; - update(obj); - } - }); -} - -document.addEventListener('DOMContentLoaded', init); diff --git a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/js/service-worker-async.js b/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/js/service-worker-async.js deleted file mode 100644 index 78d296d..0000000 --- a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/js/service-worker-async.js +++ /dev/null @@ -1,88 +0,0 @@ -/** - * A service worker which handles extension-level functionality. - */ - -const DEBUG = false; - -function debug() { - if (!DEBUG) return; - console.log.apply(console, arguments); -} - -class ToggleJSWorker { - constructor() { - debug('constructor'); - chrome.action.onClicked.addListener(this.toggleState.bind(this)); - chrome.windows.onFocusChanged.addListener(this.onWinFocusChanged.bind(this)); - this.updateIcon(); - } - - async getConfig() { - const cfg = await chrome.storage.sync.get(); - debug('getConfig', cfg); - return cfg; - } - - async getState(win) { - const data = { - 'primaryUrl': 'http://*', - 'incognito': win.incognito || false - }; - - const state = await chrome.contentSettings.javascript.get(data); - state.enabled = (state.setting === 'allow'); - debug('getState', { data, state }); - return state; - } - - async setState(win, enabled) { - const data = { - 'primaryPattern': '', - 'setting': (enabled) ? 'allow' : 'block', - 'scope': (win.incognito === true) ? 'incognito_session_only' : 'regular' - }; - const res = await chrome.contentSettings.javascript.set(data); - debug('setState', { data, res }); - return this.updateIcon(); - } - - async toggleState() { - const win = await chrome.windows.getCurrent(); - const state = await this.getState(win); - debug('toggleState', { win, state }); - await this.setState(win, !state.enabled); - return this.reloadCurrentTab(); - } - - // responds to switching between incognito and regular windows - async onWinFocusChanged() { - debug('onWinFocusChanged'); - return this.updateIcon(); - } - - async reloadCurrentTab() { - const cfg = await this.getConfig(); - debug('reloadCurrentTab', { cfg }); - if (cfg.norefresh === true) return; - const tabs = await chrome.tabs.query({currentWindow: true, active: true}); - const tab = tabs[0]; - debug('reloadCurrentTab', { tab }); - tab && chrome.tabs.reload(tab.id); - } - - async updateIcon() { - const win = await chrome.windows.getCurrent(); - const state = await this.getState(win); - debug('updateIcon', { win, state }); - if (state.enabled) { - chrome.action.setIcon({path: '../icons/38-on.png'}); - chrome.action.setTitle({title: 'JavaScript is enabled'}); - } - else { - chrome.action.setIcon({path: '../icons/38-off.png'}); - chrome.action.setTitle({title: 'JavaScript is disabled'}); - } - } -} - -new ToggleJSWorker(); diff --git a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/manifest.json b/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/manifest.json deleted file mode 100644 index 0fe5660..0000000 --- a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/manifest.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "action": { - "default_icon": "icons/38-on.png" - }, - "background": { - "service_worker": "js/service-worker-async.js" - }, - "commands": { - "_execute_action": { - "suggested_key": { - "default": "Alt+Shift+J", - "mac": "Alt+Shift+J" - } - } - }, - "description": "Enable or disable JavaScript without the hassle.", - "icons": { - "128": "icons/128.png", - "16": "icons/16.png", - "32": "icons/32.png", - "48": "icons/48.png" - }, - "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzz3yyR/vKdVLUROnBi5ahpvAh5fKUYqb02HJcSZmewex+Ad4vgFsgOuzH9Sw3os52qCHZcSnyQQyjQ+OK29ZZ8ZG2ak1Hf5M+CVpWggh79AEd40TCHtUgPUQlWZDtwpGBpyq3Vv+r3wNtx5/UZ0ZGshLoSTFXG8KQBm/oXsgF1BMCIux7WoPps5nqF/WP8vbWWNIFwSifUkBb7Btc+/1ZzJ5OjFLvteXppje55WC/tB9RyS2FHusep5K6pwodbia4HjicxFpxdL38y0hHD4PuYortg6Y60N1hisBCwQA0ziAJZCZFI45e9Iqf1QzMX1HGdVh0PkVo+BMCkDbWA5VQIDAQAB", - "manifest_version": 3, - "name": "Toggle JavaScript", - "options_ui": { - "open_in_tab": false, - "page": "options.html" - }, - "permissions": [ "contentSettings", "storage" ], - "update_url": "https://clients2.google.com/service/update2/crx", - "version": "2.0" -} diff --git a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/options.html b/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/options.html deleted file mode 100644 index c41d85c..0000000 --- a/.config/chromium/Default/Extensions/cidlcjdalomndpeagkjpnefhljffbnlo/2.0_0/options.html +++ /dev/null @@ -1,12 +0,0 @@ - - -Toggle JavaScript Options - -
- - -
-
- - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/1p-filters.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/1p-filters.html deleted file mode 100644 index bc08479..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/1p-filters.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - -uBlock — Your filters - - - - - - - - - - - - - - - - -
-
-

- - -   - - -

-

-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/3p-filters.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/3p-filters.html deleted file mode 100644 index c9123cc..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/3p-filters.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - -uBlock — Filter lists - - - - - - - - - - -
- -
-

- - -

- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
- -
search
-
- -
- -
- - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/LICENSE.txt b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/LICENSE.txt deleted file mode 100644 index 5e1c8e2..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/LICENSE.txt +++ /dev/null @@ -1,674 +0,0 @@ -GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. {http://fsf.org/} - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - {{project}} Copyright (C) {{year}} {{fullname}} - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -{http://www.gnu.org/licenses/}. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -{http://www.gnu.org/philosophy/why-not-lgpl.html}. diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ar/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ar/messages.json deleted file mode 100644 index 7e17b2e..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ar/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "حفظ التغيرات" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "تفعيل تصفياتي المخصصة" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "تصدير" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "استيراد و إضافة" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "الفلاتر الخاصة بي" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "السماح بالفلاتر المخصصة التي تتطلب الثقة" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "لا تضف مرشحات من مصادر غير موثوقة." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "حفظ التغيرات" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "تحديث تلقائي للستات الفلاتر" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "متقادم." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "رابط واحد في كل سطر. الروابط الغير الصحيحة سوف يتم تجاهلها بصمت." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "اعلانات" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "عناصر مزعجة" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "اشعارات ملفات تعريف الارتباط" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "مخصصه" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "مدمج" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "مواقع مصابة أو تحتوي على فايروسات" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "متعددة الأغراض" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "خصوصيه" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "المناطق واللغات" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "أدوات مواقع التواصل الاجتماعية" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "تجاهل الفلاتر التجميلية العامة" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "الفلاتر التجميلية العمومية هي الفلاتر التجميلية التي تنطبق على كل مواقع الإنترنت. تفعيل هذا الخيار سوف يترك مساحة أقل من الذاكرة و قوة المعالجة للإستعمال من قبل صفحات الويب كنتيجة لمعالجة الفلاتر التجميلية العمومية.\n\nمن الأفضل تفعيل هذا الخيار على الأجهزة الأقل قوة." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "إسترجاع..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "آخر تحديث: {{ago}}. \nانقر لفرض التحديث." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "قائمة المواقع المحجوبة" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} تم استعماله من {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} من فلاتر الشبكه + {{cosmeticFilterCount}} فلاتر تجميليه:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "حدث خطأ في الشبكة منع تحديث المورد." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "قوائم الفلاتر" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "الفلاتر التجميلية تعمل لإزالة العناصر في صفحة الويب التي تعتبر إزعاج بصريًا و تلك التي لا يمكن حجبها عن طريق محركات التصفية القائمة على طلبات الشبكة." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "تحليل وتطبيق فلاتر التجميليه" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "نظف جميع المخابئ" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "تعليق نشاط الشبكة حتى يتم تحميل كافة قوائم عوامل التصفية" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "حدث الان" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "جار التحديث..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "اظهر المحتوى" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "جيغا بايت" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "كيلو بايت" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "ميغا بايت" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "النسخ الإحتياطي إلى ملف" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "إحتياط-ublock-الخاص-بي_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "يتم استضافة قوائم عوامل التصفية الخاصة بـ uBO بحرية على ما يلي \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "يتم استخدام CDN الذي تم اختياره عشوائيًا عند الحاجة إلى تحديث قائمة عوامل التصفية" - }, - "aboutChangelog": { - "description": "", - "message": "سجل التغييرات" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "اكواد البرنامج (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "المساهمين" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "الإعتماديات الخارجية (متوافقة مع GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "القوائم المرشحة" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "حول البرنامج" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "سياسة الخصوصية" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "إعادة الضبط للوضع الافتراضي..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "كل إعداداتك سيتم إلغائها، و سيتم إعادة تشغيل \"uBlock₀\".\n\n\nإعادة ضبط \"uBlock₀\" على الإعدادات الأصلية؟" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "إسترجع من الملف..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "كل إعداداتك سوف يتم كتابتها بإستعمال البيانات التي تم نسخها إحتياطيا على {{time}}، و سيعيد uBlock₀ التشغيل.\n\nأعد كتابة كل الإعدادات الموجود بإستخدام البيانات التي تم نسخها إحتياطيا؟" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "تعذر قراءة البيانات أو إنها غير صالحة" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "شيفرة المصدر" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "الترجمات" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "الإعدادات المتقدمة" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "تحذير! تغيير هذه الإعدادات المتقدمة يكون على مسؤوليتك." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — مُعاين العناصر" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "اضغط للتحميل" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "إسم هذا الجهاز:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "إستيراد من سحابة التخزين" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "إستيراد التخزين من السحابية و دمجه مع الإعدادات الحالية" - }, - "cloudPush": { - "description": "tooltip", - "message": "التصدير إلى سحابة التخزين" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "احظر العنصر في البرواز..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "اشترك في قائمة التصفية ..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "السماح مؤقتا لعناصر الوسائط كبيرة" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "عرض المصدر…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — لوحة التحكم" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "تنبيه! لديك تغييرات لم تقم بحفظها" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "تجاهل" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "إبقى" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "العودة للخلف" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "أغلق هذه النافذة" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "تقدّم" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "بشكل دائم" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "مؤقتا" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "لا تحذرني لهذا الموقع مرة أخرى" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "موجود في:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "دون معلمات" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "تعطيل الحجب الصارم على {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock₀ منع الصفحة التالية من التحميل:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "بسبب الفلتر التالي" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "الصفحة محجوبة" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "يجب أن يكون هذا الإدخال آخر واحد" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "منذ {{value}} أيام" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "منذ {{value}} ساعات" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "منذ {{value}} دقائق" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "قبل يوم واحد" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "منذ ساعة" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "منذ دقيقة" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "خطأ في الشبكة: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "يو بلوك أوريجين" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "وأخيراً, مانع اعلانات كفوء. خفيف على المعالج و الذاكرة." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "تعطيل" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "حفظ التغييرات" - }, - "genericBytes": { - "description": "", - "message": "بايت" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "نسخ إلى الحافظة" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "بدل حالة التمرير الموصَد" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "إلغاء" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "اختر الكل" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "تطبيق" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "أخطاء: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "كل" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "بلا تبويب" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "رشّح محتوى السجل" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "الموقع" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "فلتر" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "النوع" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "رابط الموقع" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "امسح السجلات" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "علامة التبويب الحالية" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "تفعيل أو تعطيل مراقب DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "السياق" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "فلتر" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "قائمة الفلتر" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "تفاصيل" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "عديمة الطرف" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "سياق الجدر" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "قاعدة" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "النوع" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "واضح" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "قائمة" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "جدول" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "ويكي يو بلوك أوريجين: حافظ السجلات" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "ايقاف التسجيل مؤقتا (استبعاد كل البيانات الواردة) " - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "تفعيل أو تعطيل اللوحة المنبثقة" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "إعادة تحميل محتوى علامة التبويب" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "أول طرف " - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "ثالث-طرف " - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "مسموح" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "محظور" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "معدّل" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "ليس" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "خيارات التصفية للمسجّل" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "تبديل ترشيح بيانات التسجيل " - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "مدخلات السجل التي لا تطابق أيا من المعايير ستحذف تلقائيا:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} السياق" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} المرشِّح\\القاعدة" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} الجهة" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} الوقت" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "أخفِ الأعمدة:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "استخدم {{input}} من السطور لكل مدخلة في الوضع الرأسي" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "أبق على المدخلات في آخر {{input}} دقيقة" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "أبق بحد أقصى على {{input}} مدخلات في كل تبويبة" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "أبقِ بحد أقصى على {{input}} تحميلات للصفحة في كل لسان" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "فلتر ثابت \u003Ccode>{{filter}}\u003C/code> موجود في:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "الفلتر الثابت لا يوجد في أي من قوائم الفلاتر المفعلة" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "فلتر ثابت" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} طلبات شبكة {{type}} {{br}}اللتي تحتوي عنوان الرابط {{url}} {{br}}من المصدر {{origin}},{{br}}{{importance}} هناك فلتر استثناء مطابق." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "سماح" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "من أي مكان" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "أي نوع" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "حجب" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "حتى لو" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "باستثناء إذا" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "من “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "نوع “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "حالة:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "قاعدة URL" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "نوع:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "استىئناف حافظ السجلات" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "إحجب العنصر..." - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "فلاتر تجميلية" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "إضغط، إضغط مع Ctrl" - }, - "pickerCreate": { - "description": "English: Create", - "message": "إنشاء" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "فلاتر الشبكة" - }, - "pickerPick": { - "description": "English: Pick", - "message": "اختار" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "معاينة" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "خروج" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "سكربتات من الطرف الاول" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "جهة خارجية" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "إطار" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "إطارات من طرف خارجي" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "كود CSS/صورة من مصدر خارجي" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "سكربت" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "سكربتات من طرف خارجي" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "الكل" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "على هذه الصفحة" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "محجوب من هذه الصفحة" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "تم منع الطلبات" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "منذ التنصيب" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "حُجِب منذ التنصيب" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} أو {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "النطاقات المتصلة" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} من {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "النطاقات المتصلة" - }, - "popupImageRulePrompt": { - "description": "", - "message": "الصور" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "نصوص برمجة بين السطور" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "أقل" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "المزيد" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "إعادات الفلاتر التجميلية العمومية" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "عناصر وسائط كبيرة" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "الإطارات المنبثقة" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "الخطوط الخارجية" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "جافا سكريبت" - }, - "popupOr": { - "description": "English: or", - "message": "أو" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "اضغط: لتعطيل/تشغيل ميكروبلوك لهذا الموقع.\n\nCtrl+click لتعطيل ميكروبلوك لهذه الصفحة فقط." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "اضغط لتعطيل uBlock₀ لهذا الموقع.\n\nCtrl+click لتعطيل uBlock₀ لهذه الصفحة فقط." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "اضغط لتفعيل uBlock₀ لهذا الموقع." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "إضغط لفتح لوحة التحكم" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "القواعد العامة: هذا العمود يتعلق بالقواعد التي تنطبق على جميع الموقع." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "القواعد الموضعية: هذا العمود يتعلق بالقواعد التي تنطبق فقط على الموقع المزار حاليا.\nالقواعد الموضعية تحل محل القواعد العامة." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "إفتح سجل طلبات الشبكة" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "تفعيل أو تعطيل الفلترة التجميلية لهذا الموقع" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "اضغط لتعطيل الفلترة التجميلية لهذا الموقع" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "اضغط لتشغيل الفلترة التجميلية لهذا الموقع" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "تفعيل أو تعطيل حجب عناصر الوسائط الكبيرة لهذا الموقع" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "اضغط لحجب عناصر الوسائط الكبيرة لهذا الموقع" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "أضغط للوقف منع عناصر الوسائط الكبيرة لهذا الموقع" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "تفعيل أو تعطيل النوافذ منبثقة لهذا الموقع" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "اضغط لحجب جميع النوافذ المنبثقة لهذا الموقع" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "أضغط للوقف منع جميع النوافذ المنبثقة لهذا الموقع" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "تفعيل أو تعطيل حجب الخطوط الخارجية لهذا الموقع" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "أضغط لحجب الخطوط الخارجية لهذا الموقع" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "أضغط للسماح للخطوط الخارجية لهذا الموقع" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "انقر لتعطيل الجافا سكريبت على هذا الموقع" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "انقر لإلغاء تعطيل الجافا سكريبت على هذا الموقع" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "دخول وضع تحديد العناصر" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "التقرير عن مُشكلة في الموقع" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "إضغط لإعادة التغييرات للوضع السابق." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "إضغط لحفظ التغييرات بشكل دائم." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "دخول وضع تحديد العناصر السريع" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "نسخة" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "وضع الحظر المتراخي" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "تطبق" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "تعديل" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "إلغاء" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "حفظ" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "تصدير إلى ملف" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "صياغة القواعد: \u003Ccode>مصدر نوع وجهة العمل\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>تعليمات كاملة\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "قائمة قواعد الفلترات الديناميكية الخاصة بك." - }, - "rulesImport": { - "description": "", - "message": "الاستيراد من ملف..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "القواعد الخاصة بي" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "قواعد دائمة" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "إلغاء" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "الفرز:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "الوجهة" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "المصدر" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "نوع القاعدة" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "قواعد مؤقتة" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "السلوك الإفتراضي" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "هذه السلوكيات الإفتراضية يمكن إستبدالها في كل حالة" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "متقدم" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "ميزات مناسبة فقط للمستخدمين التقنيين" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "أنا مستخدم ذو خبرة (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>قراءة إجبارية\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "الإعدادات المتقدمة" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "مظهر" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "تفعيل دعم سحابة التخزين" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "اخفاء مكان العناصر المحجوبه" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "وضع عمى الألوان" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "إستخدم لائحة السياق في المكان المناسب" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "تعطيل مراجعة الروابط التشعبية" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "عرض عدد طلبات المحضوره على الايقونه" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "آخر نسخ إحتياطي:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "آخر إسترجاع:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "حظر تقارير الـ CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "تعطيل الفلترة التجميلية" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "احجب عناصر الوسائط الأكبر من {{input}} كيلو بايت" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "منع الخطوط البعيدة" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "تعطيل الجافا سكريبت" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "الإعدادات" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "تعطيل الجلب المسبق على الشبكة (لمنع أي اتصال لطلبات الشبكة المحجوبة)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "لون التمييز المخصص" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "المظاهر" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "تعطيل التلميحات" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "فك الأسماء المتعارف عليها" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "منع WebRTC من كشف عنوان الـ IP المحلي" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "ادخل اختصار" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "الاختصارات" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "عرض لوحة التحكم" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "عرض سجل الإتصال بالشبكة" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "\"uBlock₀\" — سجل الإتصال بالشبكة" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "مساحة التخزين المستخدمة: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "اشترك" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "µBlock : أضف الرابط التالي لقائمة الفلترة الخاصة بك؟\n\nعنوان : \"{{title}}\"\nرابط : {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "العثور على تقارير مماثلة" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "افتح" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "الدعم" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "تنقيح" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "إنشاء تقرير جديد" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "وثائق" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "اقرأ الوثائق على \u003Ccode>uBlock/wiki\u003C/code> للتعرف على جميع ميزات يو بلوك أوريجين." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "الأسئلة والدعم" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "يتم توفير إجابات للأسئلة وأنواع أخرى من دعم المساعدة على subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>" - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "تصفية المسائل/موقع الويب معطل" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "الإبلاغ عن مشكلات التصفية في مواقع ويب محددة لـ \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> أداة تعقب المشكلات\u003C/span>. يتطلب حساب GitHub.." - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>هام:\u003C/b> تجنب استخدام أدوات الحظر الأخرى ذات الغرض المشابه مع يو بلوك أوريجين، حيث قد يتسبب ذلك في حدوث مشكلات في التصفية على مواقع ويب معينة." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>نصائح:\u003C/b> تأكد من تحديث قوائم التصفية. \u003Cspan data-url=\"logger-ui.html#_\">المُسجِّل\u003C/span> هو الأداة الأساسية لتشخيص المشكلات المتعلقة بالفلتر" - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "تقرير الأخطاء" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "الإبلاغ عن المشكلات المتعلقة بيو بلوك أوريجين نفسه إلى \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> أداة تعقب المشكلات\u003C/span>. يتطلب حساب GitHub." - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "رأس قسم \"معلومات استكشاف الأخطاء وإصلاحها\" في جزء الدعم" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "فيما يلي معلومات فنية قد تكون مفيدة عندما يحاول المتطوعون مساعدتك في حل مشكلة ما.فيما يلي معلومات فنية قد تكون مفيدة عندما يحاول المتطوعون مساعدتك في حل مشكلة ما." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>هام:\u003C/b> يتم تنقيح المعلومات التي يُحتمل أن تكون خاصة أو حساسة بشكل افتراضي. المعلومات المنقحة قد تجعل حل مشكلة ما أكثر صعوبة." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "تسمية صفحة الويب باسم \"NSFW\" (\u003Ca href=\"https://ar.wikipedia.org/wiki/%D8%BA%D9%8A%D8%B1_%D9%85%D9%86%D8%A7%D8%B3%D8%A8_%D9%84%D9%84%D8%B9%D9%85%D9%84\">\"ليس آمن للعمل\"\n" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "الإبلاغ عن مشكلة في عوامل التصفية" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "لتجنب إثقال كاهل المتطوعين بتقارير مكررة، يرجى التحقق من عدم الإبلاغ عن المشكلة بالفعل." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "يتم تحديث قوائم الفلتر بشكل يومي. تحقق أن مشكلتك لم يتم مواجهتها في أحدث قوائم الفلتر" - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "تحقق من أن المشكلة ما تزال موجودة بعد إعادة تحميل صفحة الويب التي بها إشكالية." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "صفحة الويب..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- إختر خيارًا --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "ٌيُظهر الإعلانات أو بقايا الإعلانات" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "به تراكبات أو مضايقات أخرى" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "يكتشف يو بلوك أوريجين" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "لديه مشاكل متعلقة بالخصوصية" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "الأعطال عند تمكين يو بلوك أوريجين" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "افتح التبويبات أو النوافذ التي ليس مرغوبًا بها" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "عنوان صفحة الويب:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "غير منقح" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "تبديل تصفية مستحضرات التجميل" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "تعطيل جافا سكريبت" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "لا يمكن الفلترة بشكل صحيح عند تشغيل المتصفح.\nقم بتحديث الصفحة للتأكد من الفلترة بشكل صحيح." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "حفظ التغيرات" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "تصدير" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-whitelist_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "استيراد و إضافة" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "المواقع الموثوقة" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "تحدد توجيهات الموقع الموثوق به صفحات الويب التي يجب تعطيل uBlock Origin عليها.\nأدخل رابط واحد كل سطر. " - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/az/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/az/messages.json deleted file mode 100644 index 7d9fbbc..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/az/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Dəyişiklikləri tətbiq et" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "İxrac et" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "İdxal və əlavə et" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filtrlərim" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Etibarsız mənbələrdən filtrlər əlavə etməyin." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Dəyişiklikləri tətbiq et" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Filtr siyahılarını avtomatik yenilə" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Köhnəlmişdir." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Hər sətrdə yalnız bir URL. Yanlış URL-lər xəbərdarlıq edilmədən nəzərə alınmayacaq." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Reklam" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Zəhlətökən elementlər əleyhinə filtrlər" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Fərdi" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Lokal filtrlər" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Zərərli domenlər" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Çoxməqsədli filtrlər" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Məxfilik" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Bölgələr, dillər" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ümumi kosmetik filtrləri nəzərə alma" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Ümumi kosmetik filtrlərin bütün veb-saytlarda istifadəsi nəzərdə tutulur. Bu seçimi etdiyiniz təqdirdə veb-səhifələrdə ümumi kosmetik filtrlərin işlənməsi ilə əlaqədar yaddaşdan istifadə və prosessor yükü azalacaq.\n\nAz güclü cihazlarda bu seçimin aktivləşdirilməsi tövsiyə olunur." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Əlavə et..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Sonuncu yeniləmə: {{ago}}.\nYeniləmək üçün düyməyə basın." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{total}} ədəddən {{used}} ədədi istifadə olundu" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} şəbəkə filtri + {{cosmeticFilterCount}} kosmetik filtr:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Şəbəkə xətası üzündən yeniləmə mümkün olmadı." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filtr siyahıları" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Kosmetik filtrlər bir veb səhifəsində görüntü rahatsızlığına səbəb olan və şəbəkə sorğularının filtrlənməsi vasitəsilə əngəllənə bilməyən elementləri gizlətmək üçün istifadə olunur." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Kosmetik filtrləri təhlil və tətbiq et" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Bütün keşləri sil" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Filter siyahıları yüklənənə kimi şəbəkə fəaliyyətini dayandır" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Yenilə" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Yenilənir..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "məzmunu nəzərdən keçir" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Fayla yaz" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO-nun öz filtr siyahıları ödənişsiz şəkildə bu \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN-lərdə\u003C/a> yerləşdirilib:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Bir filtr siyahısının yenilənməsi lazım olduqda təsadüfi seçilən bir CDN istifadə olunur" - }, - "aboutChangelog": { - "description": "", - "message": "Dəyişikliklər siyahısı" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Mənbə kodu (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Layihəyə töhfə verənlər" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Xarici asılılıqlar (GPLv3-uyumlu):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filtr siyahıları" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Haqqında" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Məxfilik siyasəti" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Standart parametrləri yüklə..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Bütün parametrləriniz silinəcək və uBlock₀ yenidən başladılacaq.\n\nuBlock₀ standart parametrlərə qaytarılsın?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Fayldan bərpa et..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Bütün parametrləriniz {{time}} tarixində yadda saxlanılmış məlumatlarla əvəz olunacaq və uBlock₀ yenidən başladılacaq.\n\nBütün cari parametrlər ehtiyat nüsxəsindəki məlumatlarla əvəz olunsun?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Məlumat oxunmur yaxud xətalıdır" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Mənbə kodu" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Tərcümələr" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Qabaqcıl tənzimləmələr" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Diqqət! Bu əlavə parametrlərdəki dəyişikliklərə görə siz məsuliyyət daşıyırsınız." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Resurslar" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Yükləmək üçün düyməyə bas" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Bu cihazın adı:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Bulud yaddaşdan götür" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Bulud yaddaşdan götür və cari parametrlərlə birləşdir" - }, - "cloudPush": { - "description": "tooltip", - "message": "Bulud yaddaşa göndər" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Çərçivədəki elementi əngəllə" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Filter siyahısına abunə ol" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Böyük media elementlərinin yüklənməsinə müvəqqəti icazə ver" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Mənbə kodunu nəzərdən keçir..." - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — İdarəetmə paneli" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Xəbərdarlıq! Saxlamadığınız dəyişikliklər var" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Əhəmiyyət vermə" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Qal" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Geriyə qayıt" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Bu pəncərəni bağla" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Davam et" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Daimi" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Müvəqqəti" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Bu sayt barədə məni xəbərdar etmə" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Mənbə:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "parametrsiz" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "{{hostname}} üçün sərt əngəlləməni dayandır" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin bu səhifənin yüklənməsini əngəllədi:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Bu filtrə görə" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Səhifə əngəlləndi" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} gün əvvəl" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} saat əvvəl" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} dəq. əvvəl" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "bir gün əvvəl" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "bir saat əvvəl" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "bir dəqiqə əvvəl" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Şəbəkə xətası: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Axır ki, prosessor və yaddaş yükünü azaldan səmərəli bir əngəlləyici var." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "işləmir" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Dəyişiklikləri tətbiq et" - }, - "genericBytes": { - "description": "", - "message": "bayt" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Lövhəyə kopyala" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Məhdud sürüşdürməni işə sal/dayandır" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Geri qaytar" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Hamısını seç" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Təsdiqlə" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Xətalar: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Hamısı" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Tabsız" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "logger qeydlərinin filtrlənməsi" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domen" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filtr" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Növü" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Loggeri təmizlə" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Cari tab vərəqi" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "DOM müfəttişini işə sal/söndür" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Məzmun" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filtr" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filtr siyahısı" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Təfsilatlar" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Tərəf" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Ana məzmun" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Qayda" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Növü" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Nişanlı" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Sadə" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Siyahı" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Cədvəl" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin viki: Logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Loggeri dayandır (daxil olan bütün məlumatları rədd et)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Peyda olan paneli aç/bağla" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Tab vərəqinin məzmununu yenidən yüklə" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1-ci tərəf resurslar" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3-cü tərəf resurslar" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "icazə verilmiş" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "əngəllənmiş" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "dəyişdirildi" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Deyil" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Logger üçün filtrləmə parametrləri" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Logger filtrləməsini işə sal/dayandır" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Üç şərtin hamısına cavab erməyən aşağıdakı logger qeydləri avtomatik olaraq rədd ediləcək:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Məzmun" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filtr/Qayda" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Tərəf" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Vaxt" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Sütunları gizlə:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Şaquli genişləndirilmiş rejimdə hər qeyd üçün {{input}} sətir istifadə et" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Son {{input}} dəq. ərzində edilmiş qeydləri saxla" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Hər tab vərəqi üzrə ən çox {{input}} qeyd saxla" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Hər tab vərəqi üzrə ən çox {{input}} səh. yükləməsini saxla" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "\u003Ccode>{{filter}}\u003C/code> statik filtrinin mənbəyi:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Statik filtr hal-hazırda aktiv olan filtr siyahılarının heç birində tapılmadı" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statik filtr" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "Müvafiq istisna filtri varsa {{importance}},{{br}}URL ünvanı {{url}} {{br}}ilə eyni olan və mənbəyi {{origin}} {{br}}olan {{type}} növlü şəbəkə sorğularını {{action}}." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "İcazə ver" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "istənilən yerdən" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "istənilən növ" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Əngəllə" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "əgər hətta" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "halından savayı" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "“{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "“{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Məzmun:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL qaydası" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Növ:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Loggeri yenidən işə sal" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Elementi əngəllə..." - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Kosmetik filtrlər" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klik, Ctrl-klik" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Yarat" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Şəbəkə filtrləri" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Seç" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Önbaxış" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Çıxış" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1-ci tərəf skriptlər" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "3-cü tərəf" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "çərçivə" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "3-cü tərəf frame-lər" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "3-cü tərəf CSS/təsvirlər" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "skript" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "3-cü tərəf skriptlər" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "hamısı" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "bu səhifədə" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Bu səhifədə əngəllənən" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "tələb(request) bloklandı" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "quraşdırmadan bəri" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Quraşdırmadan bəri əngəllənən" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} və ya {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Bağlantı qurulmuş domenlər" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} / {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "qoşulmuş domen" - }, - "popupImageRulePrompt": { - "description": "", - "message": "təsvirlər" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "sətiriçi skriptlər" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Daha az" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Daha çox" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Kosmetik filtrləmə" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Böyük ölçülü media elementləri" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Peyda olan pəncərələr" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Kənar şriftlər" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "və ya" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klikləmə: Bu sayt üçün uBlock₀-u fəallaşdır/sıradan çıxart.\n\nCtrl+klikləmə: Yalnız bu səhifə üçün uBlock₀-u sıradan çıxart." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Bu sayt üçün uBlock₀-u sıradan çıxartmaq üçün klikləyin.\n\nYalnız bu səhifə üçün uBlock₀-u sıradan çıxartmaq üçün Ctrl+klikləyin." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Bu saytda uBlock₀-u fəallaşdırmaq üçün klikləyin." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "İdarəetmə panelini aç" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Qlobal qaydalar: bu sütun bütün saytlarda tətbiq olunan qaydalar üçündür." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Lokal qaydalar: bu sütun yalnız bu saytda tətbiq olunan qaydalar üçündür.\nLokal qaydalar qlobal qaydalardan üstün tutulur." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Jurnalı aç" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Bu saytda kosmetik filtrləri qoş/söndür" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Bu saytda kosmetik filtrləri söndürmək üçün düyməyə basın" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Bu saytda kosmetik filtrləri qoşmaq üçün düyməyə basın" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Bu saytda böyük media elemetlərini əngəlləməyi aç/bağla" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Bu saytda böyük media elementlərini əngəlləmək üçün düyməyə basın" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Bu saytda böyük media elementlərini daha əngəlləməmək üçün düyməyə basın" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Bu sayt üçün bütün açılan pəncələri aç/bağla" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Bu saytda bütün açılan pəncərələri əngəlləmək üçün kliklə" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Bu saytdakı bütün açılan pəncələri artıq əngəlləməmək üçün kliklə" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Bu saytda uzaqdan idarə olunan şriftləri qoş/söndür" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Bu saytda uzaqdan idarə olunan şriftləri əngəlləmək üçün düyməyə basın" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Bu saytda uzaqdan idarə olunan şriftləri daha əngəlləməmək üçün düyməyə basın" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Bu saytda JavaScript-i sıradan çıxartmaq üçün kliklə" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Bu saytda JavaScript-i artıq əngəlləməmək üçün düyməyə basın" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Element seçmə rejiminə keç" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Bu veb-saytdakı problemi bildir" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Dəyişiklikləri geri qaytarmaq üçün düyməyə basın." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Dəyişiklikləri daimi etmək üçün klikləyin." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Element silmə rejiminə keç" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versiya" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Əngəlləmə rejimini yüngülləşdir" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Təsdiq et" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Redaktə" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Nəzərə alma" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Yadda saxla" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Fayla yaz" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Qaydalar sintaksisi: \u003Ccode>mənbə təyinat növ əməliyyat\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>bütün sənədlər\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Dinamik filtr qaydalarınızın siyahısı." - }, - "rulesImport": { - "description": "", - "message": "Fayldan götür..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Qaydalarım" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Daimi qaydalar" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Geri qaytar" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sırala:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Hədəf" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Mənbə" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Qayda növü" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Müvəqqəti qaydalar" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Standart davranış" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Bu standart parametrlər hər bir sayt üçün ayrıca qeyd oluna bilər" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Təkmil" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Yalnız texniki istifadəçilərə uyğun parametrlər" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Mən təcrübəli istifadəçiyəm (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>mütləq oxuyun\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "əlavə parametrlər" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Görünüş" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Bulud yaddaşı dəstəyini işə sal" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Əngəllənmiş elementlərin tutduğu yeri gizlə" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Rəng seçmə qabiliyyəti olmayanlar üçün rəngləmə rejimi" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Uyğun olduqda kontekst menüsündən istifadə et" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Hiperkeçidlərin yoxlanılmasını dayandır" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Əngəllənən tələb sayını nişan üstündə göstər" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Son ehtiyat nüsxəsinin tarixi:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Son bərpa əməliyyatının tarixi:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "CSP hesabatlarını əngəllə" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Kosmetik filtrləri söndür" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "{{input}} KB-dan artıq olan media elementlərini əngəllə" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Uzaqdan idarə olunan şriftləri əngəllə" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "JavaScript-i Əngəllə" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Tənzimləmələr" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Erkən yükləməni dayandır (əngəllənmiş şəbəkə sorğuları üzrə qoşulmalara yol verməmək üçün)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Xüsusi vurğu rəngi" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Mövzu" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Alət izahlarını söndür" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Canonical adları ortaya çıxarın" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Lokal IP-ünvanların WebRTC vasitəsilə sızmasını əngəllə" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Qısayol yaz" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Qısayollar" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "İdarəetmə panelini göstər" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Loggeri göstər" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Jurnal" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "İstifadə olunan anbar: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Abunə ol" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: Aşağıdakı URL ünvanı fərdi filtr siyahılarınıza əlavə edilsin?\n\nAdı: \"{{title}}\"\nURL ünvanı: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Oxşar hesabat tap" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Aç" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Dəstək" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Yeni hesabat yaradın" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentasiya" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "UBlock Origin-in bütün xüsusiyyətlərini öyrənmək üçün \u003Ccode>uBlock/wiki\u003C/code> ünvanında sənədləri oxuyun." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Suallar və dəstək" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Suallara və yardım dəstəyinin digər növlərinə cavablar \u003Ccode>/r/uBlock Origin\u003C/Code > - də təqdim olunur." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter problemləri / vebsəhifə işləmir" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Müəyyən vebsaytların filtr problemlərini \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> problem izləyicisinə\u003C/span> bildirin. \u003Cu>GitHub hesabı tələb edir.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Vacib:\u003C/b> uBlock Origin-lə yanaşı, oxşar bloklayıcı genişləndirmələrin istifadəsindən çəkinin. Əks halda bəzi veb-saytlarda filtr problemləri ilə üzləşə bilərsiniz." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>İpuçları:\u003C/b> Filtr siyahınızın yenilənmiş olduğundan əmin olun. \u003Cspan data-url=\"logger-ui.html#_\">Qeydiyyatçı\u003C/span>, filtrlərlə bağlı problemləri müəyyənləşdirmək üçün başlıca vasitədir." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Xəta bildirişi" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "uBlock Origin-lə bağlı problemləri \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> problem izləyicisinə\u003C/span> bildirin. \u003Cu>Github hesabı tələb edir.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Problemlərin Həlli" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Aşağıdaki könüllülər sizə probleminizi aradan qaldırmağa çalışırkən faydalı ola biləcək texniki məlumatdır." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Vacib:\u003C/b> Gizli və həssas ola biləcək məlumatlar defolt olaraq qısaldılır. Qısaldılmış məlumatlar, bir problemi aradan qaldırmağı çətinləşdirə bilər." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Veb-səhifəni uyğun olmayan (“NSFW”) olaraq işarələ (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Filter problemini bildir" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Könüllülərə eyni hesabatların narahatçılıq verməməsi üçün, xahiş olunur problemin əvvəlcədən bildirilmədiyinə əmin olun." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filtr siyahıları hər gün yenilənir. Probleminizin ən son filtr siyahılarında həll edilmədiyinə əmin olun." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Problemli veb-səhifəni yenidən yüklədikdən sonra problemin hələ də qaldığından əmin olun." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Səhifə..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Bir daxiletmə seçin --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Reklam və ya reklam qalıqları göstərir" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Üst-üstə düşmə və ya digər nasazlıqları var" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "uBlock Origin-i aşkarlayır" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Məxfiliklə bağlı problemləri var" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "uBlock Origin aktiv ikən xarab olur" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Arzuolunmaz tab-vərəqələr və ya pəncərələr açır" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Veb-səhifənin ünvanı:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Kozmetik filtrləməni yandır/söndür" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Brauzer açılışında filtrləmə düzgün alınmadı. Düzgün filtrləməni təmin etmək üçün səhifəni yenidən yükləyin." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Dəyişiklikləri tətbiq et" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "İxrac et" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-whitelist_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "İdxal və əlavə et" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Etibarlı saytlar" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "İstisnalar siyahısındakı təlimatlar uBlock Origin-in hansı veb-səhifələrdə işləyişinin dayandırılmasını təmin edir. Hər sətirdə yalnız bir təlimat ola bilər. Yanlış təlimatlar xəbərdarlıq edilmədən nəzərə alınmayacaq və şərhə çeviriləcəkdir." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/be/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/be/messages.json deleted file mode 100644 index 63e3e7a..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/be/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Ужыць змяненні" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Уключыць мае карыстальніцкія фільтры" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Экспартаваць" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Імпартаваць і дадаць" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Мае фільтры" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Дазволіць карыстальніцкія фільтры, якія патрабуюць даверу" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Не дадавайце фільтры з крыніц, якім не давяраеце." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Ужыць змяненні" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Аўтаматычна абнаўляць спісы фільтраў" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Неактуальны." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Адзін URL на радок. Няспраўныя URL-адрасы будуць праігнараваныя." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Рэклама" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Надакучлівасці" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Абвесткі пра кукі" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Карыстальніцкія" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Убудаваныя" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Дамены шкодных праграм" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Шматмэтавыя" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Прыватнасць" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Рэгіёны, мовы" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Віджэты сацыяльных сетак" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ігнараваць агульныя касметычныя фільтры" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Агульныя касметычныя фільтры — гэта тыя касметычныя фільтры, якія прызначаны для прымянення на ўсіх вэб-сайтах. Уключэнне гэтай налады знізіць спажыванне памяці і працэсара, дададзенае да вэб-старонак у выніку працы агульных касметычных фільтраў.\n\nРэкамендуецца ўключыць гэту наладу на менш магутных прыладах." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Імпартаваць…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Апошняе абнаўленне: {{ago}}.\nНацісніце для прымусовага абнаўлення." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} выкарыстана з {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} сеткавых фільтраў + {{cosmeticFilterCount}} касметычных фільтраў з:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Памылка сеткі не дазволіла абнавіць рэсурс." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Спісы фільтраў" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Касметычныя фільтры служаць для хавання элементаў вэб-старонак, якія ствараюць візуальныя нязручнасці, і якія не могуць быць заблакаваныя сродкамі фільтравання сеткавых запытаў." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Разбіраць і прымяняць касметычныя фільтры" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Ачысціць усе кэшы" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Прыпыніць сеткавую актыўнасць, пакуль не пагрузяцца ўсе спісы фільтраў" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Абнавіць зараз" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Абнаўляецца…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "паглядзець змест" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "ГБ" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "КБ" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "МБ" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Стварыць рэзервовую копію…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Уласныя спісы фільтраў uBO свабодна размяшчаюцца ў наступных сетках \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Калі спіс фільтраў патрабуе абнаўлення, выкарыстоўваецца выпадкова выбраная сетка CDN" - }, - "aboutChangelog": { - "description": "", - "message": "Журнал змяненняў" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Зыходны код (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Удзельнікі" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Вонкавыя залежнасці (GPLv3-сумяшчальныя):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Спісы фільтраў" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Пра пашырэнне" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Палітыка прыватнасці" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Скінуць на пачатковыя налады…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Усе вашы налады будуць выдаленыя, uBlock₀ будзе перазапушчаны.\n\nСкінуць uBlock₀ да прадвызначаных налад?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Аднавіць з файла…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Усе вашы налады будуць заменены звесткамі з рэзервовай копіі, створанай {{time}}, затым uBlock₀ будзе перазапушчаны.\n\nПеразапісаць усе налады, выкарыстаўшы рэзервовую копію?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Звесткі немагчыма прачытаць або яны нядзейсныя" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Зыходны код" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Пераклады" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Пашыраныя налады" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Увага! Змяняйце гэтыя пашыраныя налады на ўласную рызыку." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Прагляд рэсурсаў" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Націсніце, каб загрузіць" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Назва гэтай прылады:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Імпартаваць з воблачнага сховішча" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Імпартаваць з воблачнага сховішча і аб'яднаць з дзейнымі наладамі" - }, - "cloudPush": { - "description": "tooltip", - "message": "Экспартаваць у воблачнае сховішча" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Заблакаваць элемент у рамцы…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Падпісацца на спіс фільтраў…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Тымчасова дазволіць вялікія медыя-элементы" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Паглядзець зыходны код…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Панэль кіравання" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Увага! Ёсць незахаваныя змены" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ігнараваць" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Застацца" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Вярнуцца" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Закрыць гэта акно" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Працягнуць" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Назаўжды" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Часова" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Не папярэджваць больш пра гэты сайт" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Знойдзены ў:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "без параметраў" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Выключыць строгае блакаванне для {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin папярэдзіў чытанне наступнай старонкі:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "З-за наступнага фільтра" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Старонка заблакавана" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} дні таму" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} гадзін(ы) таму" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} хвілін(ы) таму" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "дзень таму" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "гадзіну таму назад" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "хвіліну таму" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Памылка сеткі: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Нарэшце, эфектыўны блакавальнік. Не нагружае працэсар і памяць." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "выключаны" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Ужыць змяненні" - }, - "genericBytes": { - "description": "", - "message": "байтаў" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Капіяваць у буфер абмену" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Пераключыць агульную пракрутку" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Вярнуць" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Абраць усе" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Пацвердзіць" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Памылак: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Усе" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Па-за карткамі" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "фільтраваць запісы логера" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Дамен" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Фільтр" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Тып" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Ачысціць логер" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Дзейная картка" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Пераключыць інспектар DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Кантэкст" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Фільтр" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Спіс фільтраў" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Падрабязнасці" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Старана" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Кантэкст кораня" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Правіла" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Тып" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL-адрас" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Просты" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Спіс" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Табліца" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin вікі: Логер" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Паставіць логер на паўзу (адкідваць усе ўваходныя звесткі)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Пераключыць выплыўную панэль" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Перазагрузіць змесціва карткі" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "асноўны" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "старонні" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "дазволены" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "заблакаваны" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "мадыфікаваны" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Не" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Налады фільтравання логера" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Пераключыць фільтраванне логера" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Запісы логера, якія не адпавядаюць усім тром дадзеным ніжэй умовам, будуць аўтаматычна адкінуты:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Кантэкст" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Фільтр/правіла" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Старана" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Час" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Схаваць слупкі:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Выкарыстоўваць {{input}} радкоў на запіс пры вертыкальным пашырэнні" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Захоўваць запісы за апошнія {{input}} хвілін" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Захоўваць не больш за {{input}} запісаў на картку" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Захоўваць не больш за {{input}} загрузак старонкі на картцы" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Статычны фільтр \u003Ccode>{{filter}}\u003C/code> знойдзены ў:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Статычны фільтр не знойдзены ні ў адным з уключаных зараз спісе фільтраў" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Статычны фільтр" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} сеткавыя запыты {{type}}, {{br}}URL-адрас якіх супадае з {{url}} {{br}}і паходзяць з {{origin}},{{br}}{{importance}} ёсць адпаведны фільтр-вынятак." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Дазволіць" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "з любога месца" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "любы тып" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Блакаваць" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "нават калі" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "акрамя выпадкаў, калі" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "з “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "тыпу “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Кантэкст:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL правіла" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Тып:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Зняць логер з паўзы" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Блакаваць элемент…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Касметычныя фільтры" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Клік, Ctrl-клік" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Стварыць" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Сеткавыя фільтры" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Выбраць" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Папярэдні прагляд" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Выйсці" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "уласныя скрыпты" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "староннія" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "рамка" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "староннія рамкі" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "староннія CSS/відарысы" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "скрыпт" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "староннія скрыпты" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "усе" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "на гэтай старонцы" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Заблакавана на гэтай старонцы" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "запытаў заблакавана" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "з моманту ўсталявання" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Заблакавана з моманту ўсталявання" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Даменаў падлучана" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} з {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "даменаў падлучана" - }, - "popupImageRulePrompt": { - "description": "", - "message": "відарысы" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "убудаваныя скрыпты" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Менш" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Больш" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Касметычнае фільтраванне" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Вялікія медыя-элементы" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Выплыўныя вокны" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Аддаленыя шрыфты" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "або" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Націсканне: адключыць/уключыць uBlock₀ для гэтага сайта.\n\nCtrl+націсканне: адключыць uBlock₀ толькі на гэтай старонцы." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Націсніце, каб адключыць uBlock₀ для гэтага сайта.\n\nНацісніце з Ctrl, каб адключыць uBlock₀ толькі на гэтай старонцы." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Націсніце, каб уключыць uBlock₀ для гэтага сайта." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Адкрыць панэль кіравання" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Глабальныя правілы: гэты слупок для правіл, якія прымяняюцца на ўсіх сайтах." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Лакальныя правілы: гэты слупок для правіл, якія прымяняюцца толькі на гэтым сайце.\nЛакальныя правілы перавызначаюць глабальныя." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Адкрыць журнал запытаў" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Пераключыць касметычнае фільтраванне на гэтым сайце" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Націсніце, каб выключыць касметычнае фільтраванне на гэтым сайце" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Націсніце, каб уключыць касметычнае фільтраванне на гэтым сайце" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Пераключыць блакаванне вялікіх медыя-элементаў на гэтым сайце" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Націсніце, каб блакаваць вялікія медыя-элементы на гэтым сайце" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Націсніце, каб выключыць блакаванне вялікіх медыя-элементаў на гэтым сайце" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Пераключыць блакаванне ўсіх выплыўных акон на гэтым сайце" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Націсніце, каб блакаваць усе выплыўныя вокны на гэтым сайце" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Націсніце, каб выключыць блакаванне ўсіх выплыўных акон на гэтым сайце" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Пераключыць блакаванне аддаленых шрыфтоў на гэтым сайце" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Націсніце, каб блакаваць аддаленыя шрыфты на гэтым сайце" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Націсніце, каб выключыць блакаванне аддаленых шрыфтоў на гэтым сайце" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Націсніце, каб выключыць JavaScript на гэтым сайце" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Націсніце, каб JavaScript не быў выключаны на гэтым сайце" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Перайсці ў рэжым выбару элементаў" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Паведаміць аб праблеме з сайтам" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Націсніце, каб скасаваць змены." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Націсніце, каб захаваць змены." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Перайсці ў рэжым імгненнага хавання элементаў" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Версія" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Паслаблены рэжым блакавання" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Зацвердзіць" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Змяніць" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Адкінуць" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Захаваць" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Экспартаваць у файл" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Сінтаксіс правіл: \u003Ccode>крыніца прызначэнне тып дзеянне\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>поўная дакументацыя\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Спіс вашых правіл дынамічнага фільтравання." - }, - "rulesImport": { - "description": "", - "message": "Імпартаваць з файла…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Мае правілы" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Пастаянныя правілы" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Вярнуць" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Сартаванне:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Прызначэнне" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Крыніца" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Тып правіла" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Часовыя правілы" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Прадвызначаныя паводзіны" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Гэтыя налады могуць быць перавызначаныя для кожнага сайта асобна" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Пашыраныя налады" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Функцыі, патрэбныя толькі тэхнічным карыстальнікам" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Я — дасведчаны карыстальнік" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "пашыраныя налады" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Выгляд" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Уключыць падтрымку воблачнага сховішча" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Хаваць контуры заблакаваных элементаў" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Колеравая схема для дальтонікаў" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Выкарыстоўваць кантэкстнае меню, дзе магчыма" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Выключыць праверку гіперспасылак" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Паказваць колькасць заблакаваных запытаў на значцы" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Апошняя рэзервовая копія:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Апошняе аднаўленне:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Блакаваць справаздачы CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Выключыць касметычныя фільтры" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Блакаваць медыя-элементы большыя за {{input}} КБ" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Блакаваць аддаленыя шрыфты" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Адключыць JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Налады" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Адключыць папярэднюю загрузку (каб прадухіліць злучэнне для заблакаваных сеткавых запытаў)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Уласны колеравы акцэнт" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Тэма" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Адключыць выплыўныя падказкі" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Раскрываць CNAME назвы" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Прадухіліць уцечку лакальнага IP-адраса праз WebRTC" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Упішыце спалучэнне" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Спалучэнні клавіш" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Паказаць панэль кіравання" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Паказаць логер" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Журнал сеткавых запытаў" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Памер сховішча: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Падпісацца" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Дадаць наступны URL-адрас да вашага спісу фільтраў?\n\nНазва: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Знайсці падобныя справаздачы" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Адкрыць" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Падтрымка" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Стварыць новую справаздачу" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Дакументацыя" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Прачытайце дакументацыю на \u003Ccode>uBlock/wiki\u003C/code>, каб даведацца пра ўсе магчымасці uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Пытанні і падтрымка" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Адказы на пытанні і іншыя віды падтрымкі даступныя на сабрэддыце \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Праблемы з фільтрамі/няспраўны сайт" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Паведамляйце аб праблемах з фільтрамі на пэўных сайтах на \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">трэкеры хібаў \u003Ccode>uBlockOrigin/uAssets\u003C/code>\u003C/span>. \u003Cu>Патрабуе ўліковы запіс GitHub.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Важна:\u003C/b> Пазбягайце выкарыстання іншых блакавальнікаў аналагічнага прызначэння разам з uBlock Origin, паколькі гэта можа прывесці да праблем з фільтрамі на пэўных сайтах." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Парада:\u003C/b> Упэўніцеся, што вашы спісы фільтраў абноўленыя. \u003Cspan data-url=\"logger-ui.html#_\">Логер\u003C/span> — галоўны інструмент для дыягностыкі праблем, звязаных з фільтрамі." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Справаздача пра хібу" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Паведамляйце пра праблемы самога uBlock Origin на \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">трэкеры хібаў \u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>\u003C/span>. \u003Cu>Патрабуе ўліковы запіс GitHub.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Інфармацыя для выпраўлення непаладак" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Ніжэй - тэхнічная інфармацыя, што можа быць карысная добраахвотнікам, якія паспрабуюць дапамагчы вам вырашыць праблему." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Важна:\u003C/b> Патэнцыйна прыватная або адчувальная інфармацыя тыпова рэдагуецца. Адрэдагаваная інфармацыя можа зрабіць цяжэйшым вырашэнне праблемы." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Пазначыць вэб-старонку як “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Паведаміць аб праблеме з фільтрам" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Каб не абцяжарваць добраахвотнікаў дубляванымі справаздачамі, калі ласка, праверце, што пра гэтую праблему не паведамлялі раней." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Спісы фільтраў абнаўляюцца штодзённа. Упэўніцеся, што ваша праблема не была вырашана ў найноўшых спісах фільтраў." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Спраўдзіце, ці праблема ўсё яшчэ існуе пасля перазагрузкі праблемнай вэб-старонкі." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Вэб-старонка…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Выберыце запіс праблемы --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Паказвае рэкламу або яе астачу" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Мае накладанні або іншыя недарэчнасці" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Выяўляе uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Праблемы, звязаныя з прыватнасцю" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Няспраўная, калі ўключаны uBlock Origin" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Адкрывае непажаданыя карткі або вокны" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Адрас вэб-старонкі:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Пераключыць касметычнае фільтраванне" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Уключыць/адключыць JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Немагчыма фільтраваць належным чынам пры запуску браўзера.\nАбнавіце старонку, каб забяспечыць належнае фільтраванне." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Ужыць змяненні" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Экспартаваць" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Імпартаваць і дадаць" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Давераныя сайты" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Дырэктывы давераных сайтаў указваюць, на якіх вэб-старонках uBlock Origin павінен быць выключаны. Адзін запіс на радок." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/bg/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/bg/messages.json deleted file mode 100644 index 6029402..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/bg/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Прилагане на промените" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Активиране на моите потребителски филтри" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Изнасяне..." - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "ublock-мои-филтри_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Внасяне и добавяне..." - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Мои филтри" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Разрешаване на потребителски филтри, изискващи доверие" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Не добавяйте филтри от ненадеждни източници." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Прилагане на промените" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Автоматично обновяване на филтрите" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Остарял" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Един адрес на ред. Невалидните адреси ще бъдат игнорирани." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Реклами" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Досадни неща" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Известия за бисквитки" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Потребителски" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Вградени" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Защита от зловреден софтуер, сигурност" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Многоцелеви" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Поверителност" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Региони, езици" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Социални джаджи" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Игнориране на общите козметични филтри" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Общокозметични са филтрите, предназначени за прилагане във всички сайтове. Разрешаването на тази опция ще премахне натоварването на паметта и процесора, добавено към уеб страниците в резултат на обработката на общите козметични филтри." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Внасяне..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Последно обновяване: {{ago}}.\nЩракнете за принудително обновяване." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Списъци на блокираните хостове" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "ползвани {{used}} от общо {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} мрежови филтри + {{cosmeticFilterCount}} козметични филтри от:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Грешка в мрежата възпрепятства обновяването на ресурса." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Филтри" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Козметичните филтри служат за скриване на елементи в уебстраницата, които се считат за визуално неприятни и които не могат да бъдат блокирани от механизмите за филтриране, базирани на мрежови заявки." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Анализиране и прилагане на козметичните филтри" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Изчистване на кеш паметта" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Преустановяване на мрежовата дейност, докато се заредят всички списъци с филтри" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Обновяване" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Обновяване..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "Преглед на съдържанието" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "ГБ" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "КБ" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "МБ" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Изнасяне във файл..." - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ublock-всички-настройки_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Собствените списъци с филтри на uBO се хостват свободно на следните \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN-и\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Ще бъде използван случайно избран CDN, когато трябва да се обнови списък с филтри" - }, - "aboutChangelog": { - "description": "", - "message": "Списък с промени" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Изходен код (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Сътрудници" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Външни зависимости (съвместими с GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Списъци с филтри" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Относно" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Политика за поверителност" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Възстановяване на първоначалните настройки..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Всички настройки ще бъдат премахнати и uBlock₀ ще се рестартира.\n\nВръщане на uBlock₀ към стандартните настройки?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Възстановяване от файл..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Всички настройки ще бъдат презаписани с данни, архивирани на {{time}} и uBlock₀ ще се рестартира.\n\nПрезаписване на съществуващите настройки, използвайки архивираните данни?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Данните не могат да бъдат прочетени или са невалидни" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Изходен код" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Преводи" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Разширени настройки" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Внимание! Променяте настройките на свой собствен риск." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Активи" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Щракнете, за да се зареди" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Име на устройството:" - }, - "cloudNoData": { - "description": "", - "message": "..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Внасяне от облачно хранилище" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Внасяне на настройки от облачно хранилище и обединяване с текущите" - }, - "cloudPush": { - "description": "tooltip", - "message": "Изнасяне в облачно хранилище" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Блокиране на елемента в рамката..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Абониране за списъка с филтри..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Временно разрешаване на големи мултимедийни елементи" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Преглед на изходния код…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Табло" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Внимание! Има незапазени промени" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Игнориране" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Оставане" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Назад" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Затваряне на прозореца" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Продължаване" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Постоянно" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Временно" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Без повторно предупреждение за този сайт" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Намерен в:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "без параметри" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Изключване на строгото блокиране за {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin предотврати зареждането на страницата:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Блокиращ филтър" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Страницата е блокирана" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Това поле трябва да бъде последното" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "преди {{value}} дни" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "преди {{value}} часа" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "преди {{value}} минути" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "преди ден" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "преди час" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "преди минута" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Грешка в мрежата: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Най-накрая, ефективен блокер. Щадящ процесора и паметта." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "изключен" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Прилагане на промените" - }, - "genericBytes": { - "description": "", - "message": "байта" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Копиране в клипборда" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Превключване на заключеното превъртане" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Връщане" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Избиране на всичко" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Изпращане" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Грешки: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Всички" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Скрити" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "филтриране на записи" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Домейн" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Филтър" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Тип" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL адрес" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Изчистване на заявките" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Последно активен раздел" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Превключване на DOM инспектора" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Контекст" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Филтър" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Списък с филтри" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Детайли" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Страна" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Основен контекст" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Правило" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Тип" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "Адрес" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Обикновен" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Списък" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Таблица" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Дневникът със заявки" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Пауза на заявките (отхвърляне на входящите данни)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Превключване на изскачащия панел" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Презареждане съдържанието на раздела" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1-ви страни" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3-ти страни" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "позволени" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "блокирани" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "изпълнен със събития" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "променен" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Изкл." - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Опции за филтриране" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Превключване на филтрирането" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Записите в дневника, които не отговарят на трите условия по-долу ще бъдат автоматично отхвърлени:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Контекст" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Филтър/правило" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Страна" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Време" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Скриване на колони:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Използване на {{input}} реда за записи в разширен вертикален режим" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Запазване на записите от последните {{input}} минути" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Запазване най-много на {{input}} записа за раздел" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Запазване най-много на {{input}} зареждания на страница за раздел" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Статичният филтър \u003Ccode>{{filter}}\u003C/code> е намерен в:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Статичният филтър не е намерен в никой от активните списъци с филтри" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Статично филтриране" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} на мрежови заявки от {{type}} за адрес, съвпадащ с {{br}}{{url}}{{br}}и произлизащ от {{origin}},{{importance}} има филтър със съвпадащи изключения." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Разрешаване" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "където и да е" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "всеки тип" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Блокиране" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "дори ако" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "с изключение, когато" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "\"{{origin}}\"" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "тип \"{{type}}\"" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Контекст:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Правило за адрес" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Тип:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Включване на заявките" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Блокиране на елемент…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Козметични филтри" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Щракване, Ctrl + щракване" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Създаване" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Мрежови филтри" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Нов избор" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Преглед" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Отказ" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "Скриптове от 1-ви страни" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "3-ти страни" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "рамка" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "Рамки от 3-ти страни" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/изображения от 3-ти страни" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "скрипт" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "Скриптове от 3-ти страни" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "Всички" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "на тази страница" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Блокирани на тази страница" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "блокирани заявки" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "общо досега" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Блокирани общо досега" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} или {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Свързани домейни" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} от {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "свързани домейни" - }, - "popupImageRulePrompt": { - "description": "", - "message": "Изображения" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "Вградени скриптове" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "По-малко" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Още" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Козметично филтриране" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Големи мултимедийни елементи" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Изкачащи прозорци" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Външни шрифтове" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "или" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Щракване: изключва/включва uBlock₀ за този сайт.\n\nCtrl + щракване: изключва uBlock₀ само за тази страница." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Щракване: изключва uBlock₀ за този сайт.\n\nCtrl + щракване: изключва uBlock₀ само за тази страница." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Щракнете, за да включите uBlock₀ за този сайт." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Табло с настройки" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Глобални правила: колона с правила, приложими към всички сайтове." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Локални правила: колона с правила, приложими само към текущият сайт. Локалните правила заместват глобалните." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Преглед на дневника със заявки" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Превключване на козметичното филтриране за този сайт" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Щракнете, за да изключите козметичните филтри за този сайт" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Щракнете, за да включите козметичните филтри за този сайт" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Превключване блокирането на големи мултимедийни елементи за този сайт" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Щракнете, за да блокирате големите мултимедийни елементи за този сайт" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Щракнете, за да разрешите големите мултимедийни елементи за този сайт" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Превключване блокирането на всички изскачащи прозорци за този сайт" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Щракнете, за да блокирате всички изскачащи прозорци за този сайт" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Щракнете, за да разрешите всички изскачащи прозорци за този сайт" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Превключване блокирането на външни шрифтове за този сайт" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Щракнете, за да блокирате външните шрифтове за този сайт" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Щракнете, за да разрешите външните шрифтове за този сайт" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Щракнете, за да забраните JavaScript за този сайт" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Щракнете, за да разрешите JavaScript за този сайт" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Блокиране на отделен елемент" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Докладване на проблем с този уебсайт" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Щракнете, за да отмените направените промени." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Щракнете, за да направите промените постоянни." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Временно блокиране на отделен елемент" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Версия" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Отпуснат режим на блокиране" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Приемане" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "ublock-мои-правила_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Редактиране" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Отказ на промените" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Запазване" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Изнасяне във файл..." - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Синтаксис на правилото: \u003Ccode>източник цел тип действие\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>пълна документация\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Списък на динамичните правила за филтриране." - }, - "rulesImport": { - "description": "", - "message": "Внасяне от файл..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Мои правила" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Постоянни правила" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Връщане" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Сортиране:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Дестинация" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Източник" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Тип правило" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Временни правила" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Поведение по подразбиране" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Тези поведения по подразбиране могат да бъдат отменени за отделни сайтове" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Разширени" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Функции, подходящи само за технически грамотни потребители" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Аз съм опитен потребител" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "разширени настройки" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Външен вид" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Включване на поддръжка за съхранение в облак" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Скриване подсказващите текстове на блокираните елементи" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Достъпност за хора с нарушено цветоусещане" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Използване на контекстното меню, когато е възможно" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Изключване на проверката за препратки" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Показване на брояч в иконката за блокираните заявки" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Последно резервно копие:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Последно възстановяване:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Блокиране на CSP отчетите" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Изключване на козметичното филтриране" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Блокиране на мултимедийни елементи, по-големи от {{input}} kB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Блокиране на външни шрифтове" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Забраняване на JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Настройки" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Изключване на предварителното извличане (за избягване на всяка връзка за блокираните мрежови заявки)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Потребителски цвят на акцента" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Тема" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Изключване на поясненията" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Разкриване на каноничните имена" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Предотвратяване изтичането на локалния IP адрес през WebRTC" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Натиснете клавиши" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Клавишни комбинации" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Показване на табло" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Показване на дневник за мрежовите заявки" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Дневник" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Използвано пространство: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Абониране" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Добавяне на следния адрес към списъците с потребителски филтри?\n\nИме: \"{{title}}\"\nURL адрес: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Намиране на подобни доклади" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Отваряне" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Поддръжка" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Редактиран вид" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Нов доклад" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Документация" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Прочетете документацията в \u003Ccode>uBlock/wiki\u003C/code>, за да научите повече за всички функции на uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Въпроси и поддръжка" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Отговори на въпроси и други видове помощ се предоставят в Reddit \u003Ccode>/r/uBlockOrigin\u003C/code>" - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Проблеми с филтъра/уебсайтът е счупен" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Докладвайте за проблеми с филтрирането на конкретни уебсайтове в \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> за проследяване на проблеми\u003C/span>. \u003Cu>Изисква се акаунт в GitHub.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Важно:\u003C/b> Избягвайте да използвате други блокери с подобно предназначение заедно с uBlock Origin, тъй като това може да доведе до проблеми с филтрирането на определени уебсайтове." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Съвети:\u003C/b> Уверете се, че списъците ви с филтри са актуални. \u003Cspan data-url=\"logger-ui.html#_\">Дневникът\u003C/span> е основният инструмент за диагностициране на проблеми, свързани с филтрите." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Доклад за грешка" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Докладвайте за проблеми със самия uBlock Origin в \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> за проследяване на проблеми\u003C/span>. \u003Cu>Изисква се акаунт в GitHub.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Информация за отстраняване на неизправности" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "По-долу е представена техническа информация, която може да е полезна, когато доброволците се опитват да ви помогнат да разрешите даден проблем." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Важно:\u003C/b> Потенциално лична или чувствителна информация се редактира по подразбиране. Редактираната информация може да затрудни решаването на даден проблем." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Маркиране на уеб страницата като “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“не е безопасна за работа”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Докладване на проблем с филтъра" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "За да се избегне натоварването на доброволците с дублиращи се доклади, моля, проверете дали проблемът все още не е докладван." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Списъците с филтри се актуализират ежедневно. Уверете се, че вашият проблем вече не е решен в най-новите списъци с филтри." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Проверете дали проблемът продължава да съществува след презареждане на проблемната уеб страница." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Уеб страницата..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Изберете запис --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Показва реклами или остатъци от реклами" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Има наслагвания или други неудобства" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Открива uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Има проблеми, свързани с поверителността" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Функционира неправилно, когато uBlock Origin е активиран" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Отваря нежелани раздели или прозорци" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Адрес на уеб страницата:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Нередактиран вид" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Превключване на козметичното филтриране" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Превключване на JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Не може да се филтрира правилно при стартиране на браузъра.\nПрезаредете страницата, за да се уверите, че филтрирането е правилно." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Прилагане на промените" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Изнасяне..." - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "ublock-доверени_сайтове_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Внасяне и добавяне..." - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Доверени сайтове" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Указанията за доверени сайтове определят кои уеб страници трябва да бъдат изключени от uBlock Origin. По един запис на ред." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/bn/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/bn/messages.json deleted file mode 100644 index ed85fa0..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/bn/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "পরিবর্তনগুলি প্রয়োগ" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "আপনার কাস্টম ফিল্টারটি চালু করুন" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "রপ্তানি করুন" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "amar-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "আমদানি করে পরিশেষে যোগ করুন" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "আমার ফিল্টার" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "কাস্টম ফিল্টারকে বিশ্বস্ততার অনুমতি দিন" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "সন্দেহজনক উৎস থেকে ফিল্টারে কোন কিছু যোগ করবেন না।" - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "পরিবর্তনগুলি প্রয়োগ" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "ফিল্টার তালিকা স্বয়ংক্রিয়-হালনাগাদ করুন।" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "পুরোনো" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "লাইন প্রতি একটি URL। ‘!’ সহ উপসর্গ লাইন উপেক্ষা করা হবে। অকার্যকর URL গুলি নীরবে উপেক্ষা করা হবে।" - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "বিজ্ঞাপন" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "বিরক্তিকর" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "কুকি নোটিশ" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "স্বনির্ধারিত" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "বিল্ট-ইন" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "ম্যালওয়্যার ডোমেইন" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "বহুমুখী" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "গোপনীয়তা" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "অঞ্চল, ভাষা" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "সোশ্যাল উইজেট" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "জেরেরিক প্রসাধনী ছাঁকনি উপেক্ষা করুন।" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "\u003Cp>জেনেরিক প্রসাধনী ছাঁকনি হচ্ছে সেইসব প্রসাধনী ছাঁকনি যা সব ওয়েবসাইটে প্রয়োগের জন্য অভিপ্রেত।\u003Cp>যদিও তা uBlock₀ দ্বারা দক্ষতার সঙ্গে পরিচালনা করে, কিন্তু জেনেরিক প্রসাধন ফিল্টার এখনও কিছু ওয়েব পাতার পরিমাপযোগ্য মেমরি ও CPU-র অত্যাধিক চাপ সৃষ্টিতে অবদান রাখতে পারে, বিশেষ করে বড় এবং দীর্ঘ একটিতে।\u003Cp>এই অপশন সক্রিয় করলে জেনেরিক প্রসাধনী ছাঁকনি পরিচালিত হবে যা ওয়েব পাতার পরিমাপযোগ্য মেমরি ও CPU-র অত্যাধিক চাপ সৃষ্টি দূর করবে এবং uBlock₀ নিজেই মেমরি পদাঙ্ক অর্ধ করবে।\u003Cp>এটা কম শক্তিশালী ডিভাইসে এই অপশনটি সক্রিয় করার জন্য সুপারিশ করা হচ্ছে।" - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "আমদানি করুন..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "সর্বশেষ হালনাগাদ: {{ago}}" - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "অবরুদ্ধ হোস্টের তালিকা" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{total}}টির মধ্যে {{used}}টি ব্যবহৃত" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "এ থেকে {{netFilterCount}}টি নেটওয়ার্ক ফিল্টার + {{cosmeticFilterCount}}টি প্রসাধনী ফিল্টার:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "একটি নেটওয়ার্ক ত্রুটি রিসোর্স বা তথ্য হালনাগাদ হওয়া রোধ করেছে।" - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "ছাঁকন তালিকা" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "\u003Cp>এই অপশনটি \u003Ca href=\"https://adblockplus.org/en/faq_internal#elemhide\">অ্যাডব্লক-প্লাসের সামঞ্জস্যপূর্ণ “উপাদান আড়াল করার” ফিল্টারকে\u003C/a> সক্রিয় করবে। এই ফিল্টারগুলি মূলত প্রসাধনী, তাদের একটি ওয়েব পাতায় উপাদান আড়াল করতে প্রয়োজন হয় যাকে চাক্ষুষ উত্পাত বলিয়া গণ্য করা হয়, এবং যাদের নেট অনুরোধ ভিত্তিক ফিল্টারিং ইঞ্জিন দ্বারা অবরুদ্ধ করা যায় না।\u003C/p>\u003Cp>এই বৈশিষ্ট্য সক্রিয় করলে uBlock₀-এর মেমরির পদচিহ্ন বৃদ্ধি পাবে।\u003C/p>" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "প্রসাধনী ফিল্টার পার্স ও কার্যকর করুন।" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "সব ক্যাশে শোধন করুন" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "সবগুলি ফিল্টার তালিকা লোড না হওয়া পর্যন্ত নেটওয়ার্ক কার্যকলাপ স্থগিত করুন" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "এখনই হালনাগাদ করুন" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "হালনাগাদ করা হচ্ছে..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "কন্টেন্ট দেখুন" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "গিগাবাইট" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "কিলোবাইট" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "মেগাবাইট" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "ফাইলে ব্যাকআপ" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "amar-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO-এর নিজস্ব ফিল্টার তালিকাগুলি নিম্নলিখিত \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN\u003C/a> এ অবাধে হোস্ট করা হয়েছে:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "একটি ফিল্টার তালিকা আপডেট করার প্রয়োজন হলে একটি এলোমেলোভাবে বাছাই করা CDN ব্যবহার করা হয়" - }, - "aboutChangelog": { - "description": "", - "message": "পরিবর্তন লগ" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "উত্স কোড (GPLv৩)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "অবদানকারী" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "বাহ্যিকভাবে নির্ভশীলসমূহ (জিপিএল ভা.৩-সঙ্গতিপূর্ণ)" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "ফিল্টার লিস্ট" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "সম্পর্কে" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "গোপনীয়তার নীতি" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "ডিফল্ট সেটিংসে পুন:স্থাপন করুন..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "আপনার সব সেটিংস বাতিল করা হবে, এবং uBlock₀ পুনরায় চালু হবে।\n\nইউব্লক₀ সেটিংস পুনঃস্থাপন করবেন?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "ফাইল থেকে পুনরুদ্ধার..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "{{time}}-এর ডেটা ব্যাকআপ ব্যবহার করে আপনার সেটিংস পুনঃলিখিত হবে, এবং uBlock₀ পুনরায় চালু হবে।\n\nডেটা ব্যাকআপ ব্যবহার করে সমস্ত বিদ্যমান সেটিংস পুনঃলিখবেন?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "উপাত্তটি পড়া যায়নি বা অকার্যকর" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "সোর্স কোড" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "অনুবাদ সমূহ" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "উন্নত সেটিংস" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "সতর্কবাণী! আপনার নিজ ঝুঁকিতে এই উন্নত সেটিংগুলি পরিবর্তন করুন।" - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — তথ্য নিরিক্ষক" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "লোড করতে টিপ দাও" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "এই ডিভাইসের নাম:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "ক্লাউড সঞ্চয় থেকে আমদানি করুন" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "ক্লাউড সংগ্রহস্থল থেকে আমদানি করে বর্তমানে সেটিংসের সঙ্গে একত্রীকরণ করুন" - }, - "cloudPush": { - "description": "tooltip", - "message": "ক্লাউড সঞ্চয়ে রপ্তানি করুন" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "ফ্রেমের উপাদান রুদ্ধ করো..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "ফিল্টার তালিকায় সাবস্ক্রাইব করুন..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "সাময়িকভাবে বৃহৎ মিডিয়া উপাদান মঞ্জুরি দিন" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "সোর্স কোড দেখুন.... " - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — ড্যাশবোর্ড" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "সতর্কীকরণ! আপনার পরিবর্তনগুলো সংরক্ষণ করা হয়নি।" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "বাদ দিন" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "এখানে থাকুন" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "ফিরে যান" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "এই উইন্ডোটি বন্ধ করুন" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "এগিয়ে যান" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "স্থায়ীভাবে" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "সাময়িকভাবে" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "এই সাইটের ব্যাপারে আর সতর্ক করবেন না" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "যা এতে পাওয়া গেছে:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "প্যারামিটার বিহীন" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "{{hostname}}-এর জন্য কঠোর অবরোধ নিষ্ক্রিয় করুন" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uব্লক অরিজিন নিচের পৃষ্ঠা লোড করাকে প্রতিহত করেছে:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "নিম্নলিখিত ফিল্টারের কারণে" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "পেজটি ব্লক করা হয়েছে" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} দিন আগে" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} ঘণ্টা আগে" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} মিনিট আগে" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "এক দিন আগে" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "এক ঘণ্টা আগে" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "এক মিনিট আগে" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "{{url}} -এ সংযোগ করতে অক্ষম" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "একটি শক্তিশালী বিজ্ঞাপন প্রতিরোধক, অবশেষে তৈরী হল। যা সিপিইউ এবং মেমরির জন্য সহনীয়।" - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "বন্ধ" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "পরিবর্তনগুলি প্রয়োগ" - }, - "genericBytes": { - "description": "", - "message": "বাইট" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "ক্লিপবোর্ডে প্রতিলিপি করুন" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "স্ক্রলিং চালু/বন্ধ করুন" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "প্রত্যাবর্তন" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "সবগুলো নির্বাচন করুন" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "জমা দিন" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "এরর: {{গণনা}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "সব" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "পর্দার আড়ালে" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "ফিল্টার লগের ভুক্তি" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "ডোমেইন" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "ফিল্টার" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "ধরন" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "লগার পরিষ্কার করুন" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "বর্তমান ট্যাব" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "ড.অ.ম. পরিদর্শক বোতাম" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "প্রসঙ্গ" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "ছাকন" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "ছাঁকন তালিকা" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "বিস্তারিত" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "দলমত" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "রুট প্রসঙ্গ" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "নিয়ম" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "ধরন" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "ইউ.আর.এল." - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "মার্কডাউন" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "সমান্তরাল" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "তালিকা" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "ছক" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "ইউব্লক অরিজিন উইকি: লগার" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "লগার থামান (আগত সকল তথ্য বাতিল করুন)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "পপআপ এলাকার বোতাম" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "ট্যাবের বিষয় বস্তু রিলোড করুণ" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "১ম-পক্ষ" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "৩য়-পক্ষ" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "অনুমোদিত" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "অবরুদ্ধ" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "পাল্টানো" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "না" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "লগার ছাকন বাছাইকরণ" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "লগার ছাকন বোতাম" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "নীচের যে লগার এন্ট্রিগুলি তিনটি শর্ত সম্পূর্ণ পূরণ করে না তাদেরকে স্বয়ংক্রিয়ভাবে বাতিল হবে:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "অনুবন্ধ {{input}}" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "ছাকন/নিয়ম {{input}}" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "দলের অন্তর্ভুক্ত" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "সময় {{input}}" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "কলাম লুকানো:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "প্রত্যেক এন্ট্রির জন্য খাড়াভাবে ছড়ানো মোডে {{input}}গুলো লাইন ব্যবহার করা হবে" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "শেষ {{input}} মিনিটের এন্ত্রিগুলো সংরক্ষণ করা হবে" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "প্রত্যেক ট্যাবে সর্বোচ্চ {{input}} এন্ট্রি সংরক্ষণ করা হবে" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "প্রত্যেক ট্যাবের সর্বোচ্চ {{input}} পেজ লোড সংরক্ষণ করা হবে" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "স্থির ফিল্টার \u003Ccode>{{filter}}\u003C/code> পাওয়া গেছে:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "স্থির ফিল্টার বর্তমানে সক্রিয় ফিল্টার তালিকার কোনটিতে পাওয়া যায় নি" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "স্থির ফিল্টারিং" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{type}}-এর নেটওয়ার্ক অনুরোধ {{action}} {{br}}যার URL ঠিকানা {{url}}-এর সাথে মিলেছে {{br}}এবং যার মূলভিত্তি {{origin}},{{br}} {{importance}} এখানে একটি মেলানো ব্যতিক্রম ফিল্টার আছে।" - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "মঞ্জুর" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "যে কোন জায়গা থেকে" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "যে কোন ধরন" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "অবরুদ্ধ করুন" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "এমনকি যদি" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "এছাড়া যখন" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "“{{origin}}” থেকে" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "ধরন “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "প্রসঙ্গ:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "ডায়নামিক URL ফিল্টারিং" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "ধরন:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "লগার চালু করুন" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "উপাদান রুদ্ধ করুন" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "প্রসাধনী ফিল্টার" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "ক্লিক, Ctrl-ক্লিক" - }, - "pickerCreate": { - "description": "English: Create", - "message": "তৈরি করুন" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "নেটওয়ার্ক ফিল্টার" - }, - "pickerPick": { - "description": "English: Pick", - "message": "চয়ন করুন" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "প্রাকদর্শন" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "প্রস্থান" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "১ম-পক্ষের স্ক্রিপ্ট" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "৩য়-পক্ষ" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "কাঠামো" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "৩য়-পক্ষের ফ্রেম" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "৩য়-পক্ষের সিএসএস/চিত্র" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "স্ক্রিপ্ট" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "৩য়-পক্ষের স্ক্রিপ্ট" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "সব" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "এই পাতায়" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "এই পাতাটা অবরুদ্ধ হয়েছে" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "অবরোধের অনুরোধ" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "ইনস্টলের পর থেকে" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "ইনস্টল করার পর থেকে অবরুদ্ধ হয়েছে" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}}টি বা {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "যুক্ত ডোমেন " - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{total}}টির মধ্যে {{count}}টি" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "যুক্ত ডোমেন " - }, - "popupImageRulePrompt": { - "description": "", - "message": "চিত্র" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "সারির সাথে সঙ্গতিপূর্ণ স্ক্রিপ্ট" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "কম" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "আরো" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "সৌন্দর্য্যবর্ধক ছাকন প্রক্রিয়া" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "বড় মিডিয়ার এলিমেন্টগুলো" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "পপ-আপ উইন্ডোগুলি" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "রিমোট ফন্টগুলি" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "জাভাস্ক্রিপ্ট" - }, - "popupOr": { - "description": "English: or", - "message": "বা" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "ক্লিক: এই সাইটের জন্য uBlock₀ সক্রিয়/নিষ্ক্রিয় করুন\n\nCtrl+ক্লিক: শুধু এই পেজে uBlock₀ নিষ্ক্রিয় করুন" - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "এই সাইটে uBlock₀ নিষ্ক্রিয় করুন\n\nCtrl+ক্লিক: শুধু এই পেজে uBlock₀ নিষ্ক্রিয় করুন" - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "এই সাইটের জন্য ইউব্লক₀ সক্রিয় করতে ক্লিক করুন।" - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "ড্যাশবোর্ড খুলুন" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "সার্বজনীন নিয়ম: এই স্তম্ভ সেইসব নিয়মের জন্য যা সকল সাইটের উপর প্রযোজ্য।" - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "অভ্যন্তরীন নিয়ম: এই কলামটি সেইসব নিয়মের জন্য যা শুধু বর্তমান সাইটে প্রয়োগ করা হবে।\nঅভ্যন্তরীন নিয়ম সার্বজনীন নিয়মকে অগ্রাহ্য করবে।" - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "ঘটনাবলী খুলুন" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "এই সাইটের জন্য সৌন্দর্যবর্ধক ছাঁকন চালু/বন্ধ করুন" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "এই সাইটে সৌন্দর্যবর্ধক ছাঁকন প্রক্রিয়া বন্ধ করতে ক্লিক করুন" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "এই সাইটে সৌন্দর্যবর্ধক ছাঁকন প্রক্রিয়া চালু করতে ক্লিক করুন" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "এই সাইটের বড় মিডিয়া উপাদানগুলো অবরোধ ব্লক করার জন্য অদলবদল করুন" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "এই সাইটে বড় মিডিয়া এলিমেন্ট ব্লক করতে ক্লিক করুন" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "এই সাইটের বর মিডিয়া এলিমেন্টগুলি ব্লক করা বন্ধ করতে ক্লিক করুন" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "এই সাইটের সব পপআপ ব্লকিং চালু/বন্ধ করুন" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "এই সাইটে সকল পপআপ বন্ধ করতে ক্লিক করুন" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "এই সাইটে আর কোনো পপআপ ব্লক না করতে ক্লিক করুন" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "এই সাইটের রিমোট ফন্ট বন্ধের প্রক্রিয়া অদলবদল করুন" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "এই সাইটে রিমোট ফন্ট ব্লক করতে ক্লিক করুন" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "এই সাইটে রিমোট ফন্ট আর ব্লক না করতে ক্লিক করুন" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "এই সাইটের জাভাস্ক্রিপ্ট বন্ধ করতে ক্লিক করুণ" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "এই সাইটের জাভাস্ক্রিপ্ট চালু করতে ক্লিক করুন" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "উপাদান বাছাইকারী মোডে প্রবেশ করুন" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "এই ওয়েবসাইট এর একটি সমস্যার ব্যাপারা অভিযোগ যানান" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "আপনার পরিবর্তনগুলি ফেরত নিতে ক্লিক করুন।" - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "আপনার পরিবর্তনগুলি স্থায়ী করতে ক্লিক করুন।" - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "উপাদান অপসারণ মোডে প্রবেশ করুন" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "সংস্করণ" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "রোধক মোড শিথিল করুন" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "কমিট" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "amar-ublock-dynamic-niyom_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "সম্পাদনা" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "বাতিল করুন" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "সংরক্ষণ" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "ফাইলে রপ্তানি" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "শব্দবিন্যাসের নিয়ম: \u003Ccode>source destination type action\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>সম্পূর্ণ নথিপত্র\u003C/a>)।" - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "আপনার গতিশীল ফিল্টারের নিয়মের তালিকা।" - }, - "rulesImport": { - "description": "", - "message": "ফাইল থেকে আমদানি..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "আমার নিয়ম" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "স্থায়ী নিয়ম" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "প্রত্যাবর্তন" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "সাজাও:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "গন্তব্য" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "উৎস" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "নিয়মের ধরন" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "অস্থায়ী নিয়ম" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "পূর্বনির্ধারিত আচরণ" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "এই পূর্বনির্ধারিত আচরণ প্রতি সাইট ভিত্তিতে ওভাররাইড করা যেতে পারে" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "অ্যাডভান্সড" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "শুধুমাত্র প্রযুক্তিগত ব্যবহারকারীদের জন্য উপযুক্ত ফিচারসমুহ" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "আমি একজন উন্নত ব্যবহারকারী (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>পড়া আবশ্যক\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "উন্নত সেটিংস" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "দৃষ্টি" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "ক্লাউড সংরক্ষণ সক্রিয় করুন" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "অবরুদ্ধ উপাদানের স্থানধারক লুকান" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "বর্ণান্ধ সহযোগী" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "উপযুক্ত স্থানে প্রাসঙ্গিক মেনু ব্যবহার করুন" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "হাইপারলিঙ্ক নিরীক্ষণ নিষ্ক্রিয় করুন" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "আইকনে অবরোধের অনুরোধ সংখ্যা দেখান" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "সর্বশেষ ব্যাকআপ:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "সর্বশেষ পুনঃস্থাপন:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "CSP প্রতিবেদন অবরুদ্ধ করুন" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "প্রসাধন ফিল্টারিং নিষ্ক্রিয় করুন" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "{{input:number}} কেবির থেকে বড় মিডিয়া উপাদান অবরুদ্ধ করুন" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "রিমোট ফন্ট অবরুদ্ধ করুন" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "জাভা স্ক্রিপ্ট বন্ধ করা" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "সেটিংস" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "প্রি-ফেচিং বন্ধ করুন (অবরুদ্ধ নেটওয়ার্ক থেকে যে কোনো সংযোগ প্রতিরোধ করতে)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "কাস্টম অ্যাকসেন্ট রঙ" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "থিম" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "টুলটিপ নিষ্ক্রিয় করুন" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Canonical Name এর উন্মোচন" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "স্থানীয় আইপি ঠিকানা ফাঁস থেকে ওয়েব আর.টি.সি.কে প্রতিরোধ করুন" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "শর্টকাট লিখুন" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "শর্টকাটগুলি" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "ড্যাশবোর্ড দেখুন" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "লগার দেখান" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — ঘটনাবলী" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "ব্যবহৃত স্টোরেজ: {{value}}{{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "সদস্যতা নাও" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: আপনার নিজস্ব ফিল্টার তালিকায় নিম্নলিখিত URL যোগ করবেন?\n\nশিরোনাম: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "একই রকম অভিযোগ দেখুন" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "খুলুন" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "সাহায্য" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "নতুন অভিযোগ" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "ডকুমেন্টেশন" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "uBlock Origin এর সমস্ত ফিচার সম্পর্কে জানতে \u003Ccode>uBlock/wiki\u003C/code> এ ডকুমেন্টেশন পড়ুন।" - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "যোগাযোগ এবং সহায়তা" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "প্রশ্নের উত্তর এবং অন্যান্য ধরনের সাহায্য ও সহায়তা \u003Ccode>/r/uBlockOrigin\u003C/code> সাবরেডিট এ দেওয়া আছে।" - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "ফিল্টার সমস্যা/ওয়েবসাইট ভেঙে গেছে" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "নির্দিষ্ট ওয়েবসাইটের ফিল্টার সমস্যাগুলি \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> ইস্যু ট্র্যাকারে রিপোর্ট করুন\u003Cspan> \u003Cu>একটি GitHub অ্যাকাউন্ট প্রয়োজন৷\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>গুরুত্বপূর্ণ:\u003C/b> uBlock Origin-এর সাথে একই রকম-উদ্দেশ্যযুক্ত ব্লকার ব্যবহার করা এড়িয়ে চলুন, কারণ এটি নির্দিষ্ট ওয়েবসাইটে ফিল্টার এর সমস্যা সৃষ্টি করতে পারে।" - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>টিপস:\u003C/b> আপনার ফিল্টার তালিকা আপ টু ডেট আছে তা নিশ্চিত করুন। \u003Cspan data-url=\"logger-ui.html#_\">লগার\u003C/span> হল ফিল্টার-সম্পর্কিত সমস্যা নির্ণয়ের প্রাথমিক টুল।" - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "বাগ রিপোর্ট" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "\u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> ইস্যু ট্র্যাকার\u003C/span> এ uBlock অরিজিন সংক্রান্ত সমস্যাগুলি রিপোর্ট করুন। \u003Cu>একটি GitHub অ্যাকাউন্ট প্রয়োজন৷\u003C/u>৷" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "সমস্যা সমাধানের তথ্য" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "স্বেচ্ছাসেবকরা যখন কোনো সমস্যা সমাধানের জন্য আপনাকে সাহায্য করার চেষ্টা করছেন তখন প্রযুক্তিগত তথ্য নিচে দেওয়া হল যা কার্যকর হতে পারে।" - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>গুরুত্বপূর্ণ:\u003C/b> সম্ভাব্য ব্যক্তিগত বা সংবেদনশীল তথ্য ডিফল্টরূপে সংশোধন করা হয়। সংশোধিত তথ্য সমস্যা সমাধান করা আরও কঠিন করে তুলতে পারে।" - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "ওয়েব পৃষ্ঠাটিকে “NSFW” হিসাবে লেবেল করুন (\u003Ca href=\"https://bn.wikipedia.org/wiki/নট_সেফ_ফর_ওয়ার্ক\">“কাজের জন্য নিরাপদ নয়”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "একটি ফিল্টার সমস্যা রিপোর্ট করুন" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "ডুপ্লিকেট রিপোর্ট সহ স্বেচ্ছাসেবকদের বোঝা এড়াতে, অনুগ্রহ করে যাচাই করুন যে সমস্যাটি ইতিমধ্যে রিপোর্ট করা হয়নি।" - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "ফিল্টারের লিস্ট প্রতিদিন আপডেট করা হয়। নতুন আপডেটে আপনার সমস্যার সমাধান করা হয়েছে কিনা তা লক্ষ্য করুন। " - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "অভিযোগ দিন যদি আপনার রিলোডের পরও ওয়েবপেজের সমস্যার সমাধান না হয়।" - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "ওয়েব পেজটি…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- একটি এন্ট্রি চয়ন করুন --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "বিজ্ঞাপন বা বিজ্ঞাপনের অবশিষ্টাংশ দেখায়" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "ওভারলে বা অন্যান্য উপদ্রব আছে" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "uBlock Origin শনাক্ত করে" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "গোপনীয়তা-সম্পর্কিত সমস্যা আছে" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "যখন uBlock Origin চালু করা থাকে তখন সমস্যা দেখা দেয়" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "অবাঞ্ছিত ট্যাব বা উইন্ডো খোলে" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "ওয়েব পেজের ঠিকানা:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "সৌন্দর্য্যবর্ধক ফিল্টার চালু বা বন্ধ করুন" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Javascript টগল করুন" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "ঠিকভাবে ফিল্টার চালু করা যায়নি। পুনরায় আবার পেজ রিলোড করুন ঠিকভাবে ফিল্টার চালু করার জন্য" - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "পরিবর্তনগুলি প্রয়োগ" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "রপ্তানি করুন" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "amar-ublock-whitelist_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "আমদানি ও পরিশেষে যোগ করুন" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "বিশ্বস্ত তালিকা" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "আপনার হোস্টের তালিকা যাদের জন্য uBlock₀ নিষ্ক্রিয় করা হবে। লাইন প্রতি একটি ভুক্তি। অবৈধ হোস্ট নাম নিশব্দে উপেক্ষা করা হবে।" - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/br_FR/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/br_FR/messages.json deleted file mode 100644 index be9eb0a..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/br_FR/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Lakaat da dalvezout" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Gweredekaat ma siloù personelaet" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Ezporzhiañ" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "ma-siloù-statek-ublock_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Enporzhiañ hag ouzhpennañ" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Ma siloù" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Kaout fiziañs er siloù personelaet" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Arabat ouzhpennañ siloù a zeu diouzh mammennoù douetus." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Lakaat da dalvezout" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Hizivaat ar rolloù siloù ent-emgefreek" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Diamzeriet." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Un URL dre linenn. Graet e vo fae ouzh an URLoù direizh hep kemenn deoc'h." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Bruderezh" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Saotradurioù" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Kemennadennoù diwar-benn an toupinoù" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Personelaet" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Enframmet" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Gwarez a-enep ar malware ha surentez" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Siloù lies-implij" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Prevezded" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Rannvroioù, broioù" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Widgetoù sokial" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ober fae ouzh ar siloù kenedel hollek" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Ar siloù kenedel hollek a zo siloù kenedel bet savet evit bezañ implijet war an holl lec'hiennoù. Ma'z enaouit an dibarzh-mañ e vo implijer nebeutoc'h a vevor hag ar reizhiad korvoiñ (CPU) war al lec'hiennoù-se.\n\nErbedet eo deoc'h enaouiñ an dibarzh-mañ m'emaoc'h oc'h ober gant un ardivink re zic'halloudek." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Enporzhiañ" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Hizivaet da ziwezhañ: {{ago}}.\nKlikit evit hizivaat." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} anezho implijet diwar {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} sil rouedad + {{cosmeticFilterCount}} sil kenedel diouzh:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Ur fazi rouedad en deus miret an danvez da vezañ hizivaet." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Roll ar siloù" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Ar siloù kenedel a servij da guzhat elfennoù ur bajenn web a c'hallfe saotrañ ar gweled ha ne c'hallont ket bezañ stanket gant ar siloù rouedad diazezet war ar rekedoù." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Dielfennañ ha lakaat ar siloù kenedel da dalvezout" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Riñsañ an holl grubuilhoù" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Ehan oberoù ar rouedad betek ma kargo an holl rolloù siloù" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Hizivaat diouzhtu" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Oc'h hizivaat…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "gwelet an endalc'had" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Ezporzhiañ war-zu ur restr…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ma-roadennoù-ublock_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Ar rolloù siloù a zo da uBO e-unan a zo herberc'hiet digoust war ar \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN\u003C/a>où-mañ:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Graet e vez gant ur CDN dre zegouezh pa vez ezhomm hizivaat ur roll siloù." - }, - "aboutChangelog": { - "description": "", - "message": "Deizlevr ar cheñchamantoù" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Kod mammenn (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Kenlabourerien" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Dalc'hioù diavaez (a glot gant GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Rolloù ar siloù" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Diwar-benn" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Politikerezh prevezded" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Adlakaat an arventennoù dre ziouer…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Skarzhet e vo hoc'h arventennoù hag adloc'het uBlock₀.\n\nHa fellout a ra deoc'h adderaouekaat arventennoù uBlock₀?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Adsevel diwar ur restr…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Hoc'h arventennoù a vo erlec'hiet gant ar roadennoù bet gwaredet d'an/ar {{time}}, goude-se ec'h adloc'ho uBlock₀.\n\nKenderc'hel gant an oberiadenn-se?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "N'haller ket lenn ar roadennoù pe direizh ez int" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Kod mammenn" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Troidigezhioù" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Arventennoù araokaet" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Diwallit! Kemmit an arventennoù araokaet-mañ nemet ma ouifec'h petra emaoc'h oc'h ober." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Enseller elfennoù" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Klikañ evit kargañ" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Anv an ardivink-mañ:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Enporzhiañ diouzh stokañ ar goumoulenn (cloud)" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Enporzhiañ adalek ar goumoulenn ha kendeuziñ gant an arventennoù a-vremañ" - }, - "cloudPush": { - "description": "tooltip", - "message": "Ezporzhiañ etrezek stokañ ar goumoulenn (cloud)" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Stankañ an elfenn er framm…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Koumanantiñ d'ar roll siloù…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Aotren elfennoù media pounner evit ar mare" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Diskouez ar c'hod mammenn…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Taolenn-vourzh" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Diwallit! Kemmoù zo ha n'ho peus enrollet anezho" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Tremen e-bioù" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Chom amañ" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Distreiñ" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Serriñ ar prenestr-mañ" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Kenderc'hel" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Da badout" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "berrbad" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Arabat kemenn din diwar-benn al lec'hienn-mañ en-dro" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Hag a vez kavet e-barzh:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "kuit a arventennoù" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Lazhañ ar stankañ strizh evit {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin en deus miret ar bajenn-mañ da gargañ:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Stanket eo bet abalamour d'ar sil-mañ:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Pajenn stanket" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} deiz zo" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} eur zo" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} v/munutenn zo" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "un devezh zo" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "un eurvezh zo" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "ur vunutenn zo" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Fazi rouedad: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Erfin, ur stanker saotradurioù efedus hag a zouj d'ho reizhiad korvoiñ ha d'ho memor." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "enaouet" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Lakaat da dalvezout" - }, - "genericBytes": { - "description": "", - "message": "eizhbitoù" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Eilañ er golver" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Prennañ/dibrennañ an dibunañ" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Nullañ" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Diuzañ an holl" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Kas" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Fazioù: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Pep tra" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Rekedoù dre guzh" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "Silañ endalc'had an deizlevr" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domani" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Sil" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Seurt" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Skarzhañ an deizlevr" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Ivinell a-vremañ" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Enaouiñ/lazhañ an enseller DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Kontekst" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Sil" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Roll ar siloù" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Munudoù" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Seurt keveler" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Kontekst gwrizienn" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Reolenn" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Seurt" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Plaen" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Listenn" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Taolenn" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "Pajenn wiki uBlock Origin: An Deizlevr" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Ehan an deizlevr (ober fae ouzh an titouroù resevet)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Enaouiñ/lazhañ ar banell pop-up" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Adkargañ endalc'had an ivinell" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Domani ar bajenn" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Kevelerien diavaez" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "aotreet" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "stanket" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "kemmet" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Pas" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Arventennoù silañ an deizlevr" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Stagañ da silañ an deizlevr" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Enmonedoù an deizlevr ha ne glot gant an tri diviz zo amañ dindan a vo skarzhet ent-emgefreek:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Kendestenn" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Sil/reolenn" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Seurt keveler" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Eur" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Kuzhat ar bannoù:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Ober gant {{input}} linenn dre enmont er mod dispaket a-blom" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Mirout an enmonedoù eus ar/an {{input}} v/munutenn gent" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Mirout {{input}} enmont dre ivinell d'ar muiañ" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Mirout {{input}} g/kargadenn pajenn dre ivinell d'ar muiañ" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Kavet e vez ar sil statek \u003Ccode>{{filter}}\u003C/code> e-barzh:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "N'haller ket kavout ar sil statek-mañ e-touez ar rolloù siloù oberiant" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Sil statek" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} ar rekedoù rouedad eus ar seurt {{type}} {{br}}da neuze an URL a glot gant {{url}} {{br}}hag a zeu eus {{origin}},{{br}}{{importance}} bout zo ur sil nemedennoù hag a glot gantañ." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Aotren" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "n'eus forzh pelec'h" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "a bep seurt" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Stankañ" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "zoken ma" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "nemet pa" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "\"{{origin}}\"" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "seurt \"{{type}}\"" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Kontekst:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Reolenn URL" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Seurt:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Adstagañ gant an deizlevr" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Stankañ an elfenn-mañ…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Siloù kenedel" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klik, Reol.-klik" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Krouiñ" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Siloù rouedad" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Dibab" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Rakwel" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Kuitaat" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "Skriptoù domani ar bajenn" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "Kevelerien diavaez" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "framm" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "Frammoù kevelerien diavaez" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/skeudennoù kevelerien diavaez" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "skript" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "Skriptoù kevelerien diavaez" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "Pep tra" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "er bajenn-mañ" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Stanket er bajenn-mañ" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "Rekedoù stanket" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "abaoe ar staliadur" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Stanket abaoe ar staliadur" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} pe {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domanioù kennasket" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} diwar {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domanioù kennasket" - }, - "popupImageRulePrompt": { - "description": "", - "message": "Skeudennoù" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "skriptoù enlakaet" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Nebeutoc'h" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Muioc'h" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Silañ kenedel" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Elfennoù media pounner" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Prenestroù pop-up" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Polisoù diavaez" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "pe" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klik: lazhañ/enaouiñ uBlock₀ war al lec'hienn-mañ.\n\nReol+klik: lazhañ uBlock₀ war al lec'hienn-mañ nemetken." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Klikit evit lazhañ uBlock₀ war al lec'hienn-mañ.\n\nReol+klik evit lazhañ uBlock₀ war al lec'hienn-mañ." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Enaouiñ uBlock₀ war al lec'hienn-mañ." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Digeriñ an daolenn-vourzh" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Reolennoù hollek: er bann-mañ e vez lakaet ar reolennoù a dalvez da gement lec'hienn." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Reolennoù lec'hel: er bann-mañ e vez lakaet ar reolennoù ne dalvezont nemet d'al lec'hienn m'emaoc'h.\nAr reolennoù lec'hel a ya a-raok ar reolennoù hollek." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Digeriñ deizlevr ar rekedoù" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Lazhañ/enaouiñ ar silañ kenedel war al lec'hienn-mañ" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Lazhañ ar silañ kenedel war al lec'hienn-mañ" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Enaouiñ ar silañ kenedel war al lec'hienn-mañ" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Stankañ/aotren kargadur an elfennoù media pounner war al lec'hienn-mañ" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Stankañ an elfennoù media pounner war al lec'hienn-mañ" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Aotren an elfennoù media pounner en-dro war al lec'hienn-mañ" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Lazhañ/enaouiñ evit stankañ an holl brenestroù pop-up war al lec'hienn-mañ" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Stankañ an holl brenestroù pop-up war al lec'hienn-mañ" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Aotren an holl brenestroù pop-up war al lec'hienn-mañ" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Aotren/stankañ ar polisoù diavaez war al lec'hienn-mañ" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Stankañ ar polisoù diavaez war al lec'hienn-mañ" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Aotren ar polisoù diavaez war al lec'hienn-mañ" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Diweredekaat JavaScript war al lec'hienn-mañ" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Gweredekaat JavaScript war al lec'hienn-mañ en-dro" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Diuzañ elfennoù" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Danevelliñ ur gudenn war al lec'hienn-mañ" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Nullañ ar c'hemmoù ho peus graet." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Lakaat ho kemmoù da dalvezout." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Lemel elfennoù" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Handelv" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Distanañ ar mod stankañ" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Lakaat da dalvezout" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "ma-reolennoù-silañ-dinamek-ublock_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Kemmañ" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Nullañ" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Enrollañ" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Ezporzhiañ etrezek ur restr" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Reolenn ereadurezh: \u003Ccode>mammenn pal seurt ober\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>Teuliadur klok e saozneg\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Roll eus ho reolennoù silañ dinamek." - }, - "rulesImport": { - "description": "", - "message": "Enporzhiañ diouzh ur restr…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Ma reolennoù" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Reolennoù da badout" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Nullañ" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Rummañ:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Pal" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Mammenn" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Seurt reolenn" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Reolennoù berrbad" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Emzalc'h dre ziouer" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Gallout a reer erlec'hiañ an emzalc'hioù-se dre ziouer e lec'hiennoù resis" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Araokaet" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Fonksionelezhioù azasaet d'an implijerien araokaet hepken" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Me zo un implijer araokaet" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "arventennoù araokaet" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Neuz" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Gweredekaat ar stokañ e-barzh ar goumoulenn (cloud)" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Kuzhat an esaouennoù lezet gant an elfennoù bet stanket" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Mod daltonek" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Ober gant al lañser kendestenn pa vez ezhomm" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Diweredekaat evezhiañ ar gourliammoù" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Diskouez an niver a rekedoù bet stanket war an arouez" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Gwaredet da ziwezhañ:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Adsavet da ziwezhañ:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Stankañ an danevelloù CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Lazhañ ar silañ kenedel" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Stankañ an elfennoù media a zo pounneroc'h evit {{input}} KB " - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Stankañ ar polisoù diavaez" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Diweredekaat JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Arventennoù" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Diweredekaat ar \"rak-lenn\", pe diougan an oberoù war ar rouedad (evit ma ne gennaskfe ket ar rekedoù rouedad stanket)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Liv splannañ personelaet" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tem" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Diweredekaat an tunioù" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Diskouez an anvioù gwir (CNAME)" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Mirout ouzh WebRTC da ziskuilhañ chomlec'hioù IP lec'hel" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Enankit ur verradenn" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Berradennoù" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Diskouez an daolenn-vourzh" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Gwelet deizlevr ar rekedoù" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Deizlevr ar rekedoù" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Spas stokañ implijet: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Koumanantiñ" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Fellout a ra deoc'h ouzhpennañ an URL-mañ d'ho rolloù siloù?\n\nTitl: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Klask danevelloù koulz ha homañ" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Digeriñ" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Skoazell" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Sevel ur rentañ-kont nevez" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Teuliadur" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Lennit an teuliadur en \u003Ccode>uBlock/wiki\u003C/code> evit gouzout hiroc'h diwar-benn uBlock Origin ha pep tra a c'hall ober." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Goulennoù ha skor" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Er subreddit \u003Ccode>/r/uBlockOrigin\u003C/code> e c'hallit kavout respontoù d'ho koulennoù hag a bep seurt skoazelloù all." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Kudennoù silañ/lec'hienn sac'het" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Danevellit kudennoù silañ e lec'hiennoù resis zo e-barzh \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">roll evezhiañ kudennoù \u003Ccode>uBlockOrigin/uAssets\u003C/code>\u003C/span>. \u003Cu>Ur c'hont GitHub zo rekis.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>A-bouez:\u003C/b> Chomit hep ober gant meur a stanker a zo heñvel ouzh uBlock Origin war un dro rak kement-se a c'hallfe degas kudennoù e lod lec'hiennoù zo." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tro-bleg:\u003C/b> Gwiriit ma'z eo bet hizivaet ho rolloù siloù. \u003Cspan data-url=\"logger-ui.html#_\">An deizlevr\u003C/span> eo an ostilh pennañ evit diagnostikañ kudennoù e-keñver ar silañ." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Danevelliñ un draen" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Danevellit kudennoù gant uBlock Origin e-unan e-barzh \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">roll evezhiañ kudennoù \u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>\u003C/span>. \u003Cu>Ur c'hont GitHub zo rekis.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Titouroù diagnostikañ kudennoù" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Amañ dindan ez eus titouroù teknikel a c'hallfe sikour an dud a-youl vat a zo o klask diskoulmañ ur gudenn." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Talvoudus:\u003C/b> An titouroù a c'hallfe bezañ prevez pe kizidik a zo skarzhet ent-emgefreek. Pa vez skarzhet an titouroù mod-se e c'hall bezañ diaesoc'h da ziskoulmañ ur gudenn." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Merkañ ar bejenn evel \"NSFW\" (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>) hag a dalv ez eus danvez noazus pe kizidik enni" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Danevelliñ ur gudenn gant ur sil" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Evit nompas sammañ ar genlabourerien a-youl vat gant meur a zanevell heñvel, gwiriit ma n'eo ket bet danevellet ho kudenn en ar-raok mar plij." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Bemdez e vez hizivaet ar rolloù siloù. Gwiriit ma n'eo ket bet diskoulmet ho kudenn c'hoazh er rolloù siloù nevesañ." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Gwiriit ma chom ar gudenn goude bezañ adloc'het ar bajenn gudennek." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Ar bajenn web-mañ…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Dibab ur seurt --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Diskouez a ra bruderezh pa restachoù bruderezh" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Gwiskadoù pe saotradurioù all en deus" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Diskoachañ a ra uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Kudennoù a-fed prevezded he deus" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ne ya ket mat en-dro p'eo enaouet uBlock Origin" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Digeriñ a ra ivinelloù pe prenestroù noazus" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Chomlec'h ar bajenn web:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Enaouiñ ar silañ kenedel" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Enaouiñ/lazhañ JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Ur fazi silañ zo bet en ur lañsañ ar merdeer. Adkargit ar bajenn evit ma vo silet mat." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Lakaat da dalvezout" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Ezporzhiañ" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "ma-lec'hiennoù-fizius-ublock_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Enporzhiañ hag ouzhpennañ" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Lec'hiennoù sur" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "En ur dermeniñ peseurt lec'hiennoù a zo sur e lavarit da uBlock Origin e peseurt lec'hiennoù e rank bezañ diweredekaet. Un enmont dre linenn." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/bs/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/bs/messages.json deleted file mode 100644 index 4b1f867..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/bs/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Primijenite promjene" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Omogući moje prilagođene filtere" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Izvezi" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "moji-ublock-statični-filteri_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Uvezi i dodaj" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Moji filteri" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Dozvolite prilagođene filtere koji zahtijevaju povjerenje" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Nemojte dodavati filtere iz nepouzdanih izvora." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Primijenite promjene" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Automatski ažuriraj popise filtera" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Zastarjelo." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Jedan URL po redu. Neispravni URL-ovi će biti tiho ignorisani." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Reklame" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Smetnje" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Obavještenja o kolačićima" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Prilagođeno" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Ugrađeno" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Zlonamjerne domene" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Višenamjenski" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privatnost" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regije, jezici" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Društveni widgeti" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignorišite opće estetske filtere." - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Opći estetski filteri su onakvi estetski filteri koji su namijenjeni za primjenu na svim sajtovima. Uključivanjem ove postavke će se eliminirati dodatna upotreba memorije i procesora na sajtovima kao rezultat upravljanja općih estetskih filtera.\n\nPreporučeno je omogućiti ovu postavku na slabijim uređajima." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Uvezi…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Posljednje ažuriranje: {{ago}}.\nKliknite za biste prisilili ažuriranje." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lista blokiranih hostova" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} iskorišteno od {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} mrežni/ih filter/a + {{cosmeticFilterCount}} estetski/ih filter/a iz:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Mrežna greška je spriječila ažuriranje resursa." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Liste filtera" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Estetski filteri služe za sakrivanje elementa na web stranici koji se smatraju izglednim smjetnjama, i koji ne mogu biti blokirani filterima zasnovanih od mrežnih zahtjeva." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Raščlanite i primijenite estetske filtre." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Obriši svu predmemoriju" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Obustavite mrežnu aktivnost dok se ne učitaju svi popisi filtera" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Ažuriraj sada" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Ažuriranje u toku…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "prikaži sadržaj" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Sačuvaj rezervnu kopiju u datoteku" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "moja-ublock-rez_kopija_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Sopstveni zapisi filtera uBO-a su besplatno hostani na sljedećim \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN-ovima\u003C/a>:\n" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Slučajno odabrani CDN će biti korišten kada zapis filtera treba biti ažuriran" - }, - "aboutChangelog": { - "description": "", - "message": "Popis izmjena" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Izvorni kod (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Saradnici" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Vanjske zavisnosti (GPLv3-kompatiblini):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Liste filtera" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "O aplikaciji" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Pravila privatnosti" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Vrati na izvorne postavke…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Sve vaše postavke će je biti obrisane i µBlock₀ će se ponovo pokrenuti. \n\nVrati µBlock₀ na izvorne postavke?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Vrati iz datoteke…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Sve vaše postavke će je biti prebrisane koristeći rezervnu kopiju sa postavkama sačuvanim {{time}}, i uBlock₀ će se ponovno pokrenuti. \n\nPrepisati sve postojeće postavke sa rezervnom kopijom postavki?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Podatke nije moguće učitati ili su neispravni" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Izvorni kod" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Prijevodi" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Napredne postavke" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Upozorenje! Napredne postavke mijenjate na vlastitu odgovornost." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Pregled sadržaja" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Kliknite za učitavanje" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Naziv ovog uređaja:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Uvezi iz cloud pohrane" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Uvezite iz cloud pohrane i spojite sa trenutnim postavkama" - }, - "cloudPush": { - "description": "tooltip", - "message": "Izvezi u cloud pohranu" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Blokiraj elemenat u okviru…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Pretplatite se na popis filtera…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Privremeno omogući velike medijske elemente" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Pogledaj izvorni kod…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Kontrolna ploča" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Upozorenje! Imate nesačuvane promjene" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignoriši" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Ostani" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Nazad" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Zatvori ovaj prozor" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Nastavi" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Trajno" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Privremeno" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Ne upozoravaj me ponovo za ovu stranicu" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Pronađeno u:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "bez parametara" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Isključi strogo blokiranje za {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin je onemogućio učitavanje sljedeće stranice:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Zbog sljedećeg filtera" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Stranica je blokirana" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Ova stavka mora biti posljednja" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "prije {{value}} dana" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "prije {{value}} sata/i" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "prije {{value}} minute/a" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "prije jedan dan" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "prije sat vremena" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "prije minutu" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Greška sa mrežom: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Konačno, efikasan bloker. Štedljiv na procesoru i memoriji." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "isključen" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Primijeni promjene" - }, - "genericBytes": { - "description": "", - "message": "bajta" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopiraj u međuspremnik" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "(De)aktivacija zaključanog pomicanja" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Vrati" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Označi sve" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Pošalji" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Greške: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Sve" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Bez tabova" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtrirajte sadržaj zapisa" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domena" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filter" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Vrsta" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Očistite zapise" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Trenutni tab" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Uključite/isključite DOM inspektor" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Kontekst" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Lista filtera" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Detalji" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Pripadna informacija" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Korijenski kontekst" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Pravilo" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Vrsta" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Obično" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Popis/Lista" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tablica" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: zapisnik" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pauzirajte zapise (odbacite sve dolazne podatke)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Uključite/isključite okno za skočne prozore" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Ponovo učitaj sadržaj taba" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Prve strane" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Treće strane" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "dozvoljeno" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blokirano" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "puno događaja" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "Izmjenjeno:" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Nije" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Postavke filtriranja zapisa" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Uključite/isključite filtriranje zapisa" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Unosi u bilješku koji ne ispunjavaju sva tri navedena uvjeta/uslova ispod će biti automatski odbačeni:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Kontekst" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/pravilo" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Strana/Pripadnost" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Vrijeme" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Sakrij stubove:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Koristi {{input}} linija po unosu u vertikalno proširenom režimu" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Spremite unose iz zadnje/ih {{input}} minute/a" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Spremite najviše {{input}} unosa po kartici" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Spremite najviše {{input}} učitavanja stranica po kartici" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Statični filter \u003Ccode>{{filter}}\u003C/code> pronađen u:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Statični filter nije pronađen u nijednoj od trenutno uključenih filterskih listi" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statični filter" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} mrežni zahtjevi {{type}} {{br}} od čiji se URL adresa slaže sa {{url}} {{br}} i koji izvire od {{origin}},{{br}}{{importance}} postoji odgovarajući odstupni filter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Dozvoli" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "od bilo kuda" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "bilo koja vrsta" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Blokiraj" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "čak iako" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "osim kada" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "od “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "vrsta “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Kontekst:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL pravilo" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Vrsta:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Pokrenite zapise" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Blokiraj elemenat…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Estetski filteri" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klik, Ctrl-klik" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Kreiraj" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Mrežni filteri" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Odaberi" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Pregled" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Zatvori" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "Korisničke skripte" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "Treće strane" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "okvir" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "Okviri trećih strana" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/slike trećih strana" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "skripta" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "Skripte trećih strana" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "sve" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "na ovoj stranici" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokirano na ovoj stranici" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "zahtjeva blokirano" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "od instalacije" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokirano od instalacije" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domena povezano" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} od {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "povezane domene" - }, - "popupImageRulePrompt": { - "description": "", - "message": "slike" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "umetnute skripte" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Manje" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Više" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Estetsko filtriranje" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Veliki medijski elementi" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Pop-Up prozor" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Udaljeni fontovi" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "ili" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klik: onemogućite/omogućite uBlock₀ za ovaj sajt.\n\nCtrl+klik: onemogućite µBlock₀ samo za ovu stranicu." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Kliknite da onemogućite uBlock₀ za ovaj sajt.\n\nCtrl+klik da onemogućite uBlock₀ samo za ovu stranicu." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Kliknite da omogućite uBlock₀ za ovaj sajt." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Otvori kontrolnu ploču" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Globalna pravila: ovaj stupac je za pravila koja su primjenjena za sve sajtove." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Lokalna pravila: ovaj stupac je za pravila koja su primjenjena samo za ovaj sajt.\nLokalna pravila nadglasaju globalna pravila." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Otvorite zapisnik" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Uključite/isključite estetsko filtriranje za ovaj sajt" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Kliknite da isključite estetsko filtriranje za ovaj sajt" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Kliknite da uključite estetsko filtriranje za ovaj sajt" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Uključite/isključite blokiranje velikih medijskih elemenata za ovaj sajt" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Kliknite da blokirate velike medijske elemente na ovom sajtu" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Kliknite da više ne blokirate velike medijske elemente na ovom sajtu" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Uključite/isključite sve iskačujuće prozore na ovoj stranici" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Kliknite da blokirate sve iskačujuće prozore na ovoj stranici" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Kliknite da više ne blokirate sve iskačujuće prozore na ovoj stranici" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Uključite/isključite blokiranje udaljenih fontova za ovaj sajt" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Kliknite da blokirate udaljene fontove na ovom sajtu" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Kliknite da više ne blokirate udaljene fontove na ovom sajtu" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Kliknite da isključite JavaScript na ovom sajtu" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Kliknite da uključite JavaScript na ovom sajtu" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Pokrenite režim za odabiranje elemenata" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Prijavite problem na ovoj web stranici" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Kliknite da biste vratili promjene." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Kliknite da vaše promjene učinite trajnim." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Pokrenite režim za odabiranje i uklanjanje elemenata" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Verzija" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relaksiran mod blokiranja" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Potvrdi" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "moja-ublock-dinamična-pravila_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Uredi" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Odbaci" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Spremi" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Izvezi u datoteku" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Pravila sintakse: \u003Ccode>izvor odredište tip akcija\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>sva dokumentacija\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Lista vaših dinamičkih pravila za filtriranje." - }, - "rulesImport": { - "description": "", - "message": "Uvezi iz datoteke…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Moja pravila" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Trajna/Stalna pravila" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Vrati" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sortiraj:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destinacija/odredište" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Izvor" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Vrsta/tip pravila" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Privremena pravila" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Podrazumijevano ponašanje" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Ova podrazumijevana ponašanja mogu biti poništena posebno po stranici" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Napredno" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Funkcije prikladne samo za napredne korisnike" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Ja sam napredni korisnik (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>obavezna literatura\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "napredne postavke" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Izgled" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Uključi podršku za pohranu u oblaku" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Sakrij držače blokiranih elemenata" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Mod za daltoniste" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Koristite kontekstni meni gdje je prikladno" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Onemogućite provjeravanje hiperlinkova" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Prikaži broj blokiranih zahtjeva na ikoni" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Posljednja rezervna kopija:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Posljednji prijašnji povratak:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Blokirajte CSP izvještaje" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Onemogućite estesko filtriranje" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Blokirajte medijske elemente veće od {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Blokirajte udaljene fontove" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Islkjučite JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Postavke" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Onemogućite predučitavanje (da bi ste spriječili bilo koju vezu za blokirane mrežne zahtjeve)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Prilagođena prikazna boja" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Isključi savjete" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Otkrijte kanonske nazive" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Spriječite WebRTC da propušta lokalnu IP adresu" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Upišite prečicu" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Prečice" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Prikaži kontrolnu ploču" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Pokaži zapisnik" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Logiranje" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Iskorišten prostor: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Pretplatite se" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Dodajte slijedeću URL adresu u vašu listu prilagođenih filtera?\n\nNaziv: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Pronađite slične prijave" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Otvori" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Podrška" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Zakloni" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Napravite novu prijavu" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentacija" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Pročitajte dokumentaciju na \u003Ccode>uBlock/wiki\u003C/code> da bi ste naučili sve o uBlock Origin-ovim funkcijama." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Pitanja i podrška" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Odgovori na pitanja i druge vrste podrške nalaze se na podreditu \u003Ccode>r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Problemi sa filterom/website ne radi" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Prijavite probleme s filtriranjem određenih web stranica na \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> stranici za praćenje problema\u003C/span>. \u003Cu>Potreban će vam biti GitHub račun.\u003C/u>\n\n" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Važno:\u003C/b> Nemojte koristiti druge blokere slične namjene zajedno sa uBlock Origin-om, jer bi to moglo uzrokovati probleme s filtriranjem na određenim web stranicama." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Savjeti:\u003C/b> Provjerite jesu li vaše liste filtera ažurirane. \u003Cspan data-url=\"logger-ui.html#_\">Zapisnik\u003C/span> je primarni alat za dijagnosticiranje problema povezanim sa filterima." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Prijava greške" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Prijavite probleme sa samim uBlock Origin-om na \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-problem\u003C/code> stranici za praćenje problema\u003C/span>. \u003Cu>Potreban če vam biti GitHub račun.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Informacija o rješavanju problema" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Ispod se nalaze tehničke informacije koje bi vam mogle biti korisne kada vam dobrovoljci pokušavaju pomoći s rješenjem problema." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Važno:\u003C/b> Moguće privatna ili osjetljiva informacija je prema zadanim postavkama automatski zaklonjena. Zaklonjene informacije mogu otežati rješavanju problema." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Označite web stranicu kao “NSZP” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Ne-Sigurna-Za-Posao”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Prijavite problem sa filterom" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Da bi ste izbjegli opterećivanje dobrovoljaca sa dupliciranim prijavama, molimo vas da provjerite da li je vaš problem već prijavljen, ili nije." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Liste filtera se ažuriraju svakodnevno. Budite sigurni da vaš problem nije već riješen na najnovijim listama filtera." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Provjerite postoji li problem i nakon ponovnog učitavanja problematične web stranice." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Web stranica…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Odaberite unos --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Pokaže oglase ili ostatke oglasa" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ima prekrive ili druge dosade" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Otkrije uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ima probleme povezane za privatnost" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Kvari se kad je uBlock Origin uključen" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Otvara neželjene kartice ili prozore" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Adresa web stranice:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Odzakloni" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Uključi/isključi estetsko filtriranje" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Uključi JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Nije moguće ispravno filtrirati pri pokretanju preglednika. Ponovo učitajte stranicu kako biste osigurali pravilno filtriranje." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Primijenite izmjene" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Izvezi" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "moji-ublock-pouzdani-sajtovi_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Uvezi i dodaj" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Bijela lista" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Direktive pouzdanih sajtova kažu na kojim sajtovima bi uBlock Origin trebao biti isključen. Jedna stavka po redu." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ca/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ca/messages.json deleted file mode 100644 index f6b44d9..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ca/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Aplicar canvis" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Habilita els meus filtres personalitzats" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Exporta" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "ublock-custom-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importa i annexa" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Els vostres filtres" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Permet filtres personalitzats que requereixin confiança" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "No afegiu filtres de fonts no confiables." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Aplicar canvis" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Actualitzar automàticament la llista de filtres." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Obsolet" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Una URL per línia. S'ignoraran les línies amb el símbol ‘!’. Les URL no vàlides s'ignoraran silenciosament." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Anuncis" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Elements molestos" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Avís de galetes" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Personalitzat" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Local" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Dominis perillosos" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Polivalent" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privacitat" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regions, llengües" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Ginys socials" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignora els filtres cosmètics genèrics" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "\u003Cp>Els filtres cosmètics genèrics són filtres que no s'apliquen a tots els llocs web.\u003Cp>Tot i que l'uBlock₀ els gestiona de manera eficient, aquests filtres encara poden contribuir a un augment d'ús de la memòria o sobrecàrrega de la CPU en algunes pàgines web, especialment si tenen molt contingut, elements d'animació o temps real.\u003Cp>En habilitar aquesta opció s'elimina el risc de sobrecàrrega a la CPU i excés d'ús de la memòria com a resultat de la manipulació de filtres cosmètics genèrics i també es redueix el consum de memòria de l'uBlock₀.\u003Cp>Es recomana habilitar aquesta opció en dispositius poc potents." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importa..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Darrera actualització: {{ago}}" - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Llistes de servidors bloquejats" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} utilitzats de {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} filtres de xarxa + {{cosmeticFilterCount}} filtres cosmètics de:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Un error de xarxa va impedir que s'actualitzés el recurs." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filtres de tercers" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "\u003Cp>Aquesta opció permet l'anàlisi i l'aplicació dels \u003Ca href=\"https://adblockplus.org/en/faq_internal#elemhide\">filtres compatibles amb l'Adblock Plus “element hiding”\u003C/a>. Aquests filtres són principalment cosmètics, que serveixen per amagar elements d'una pàgina web molestos que per defecte no es poden amagar.\u003C/p>\u003Cp>Habilitant aquesta opció augmentarà el consum de memòria de l'\u003Ci>µBlock\u003C/i>.\u003C/p>" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Analitzar i aplicar filtres cosmètics." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Neteja la memòria caché" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspèn l'activitat de la xarxa fins a carregar totes les llistes de filtres" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Actualitza ara" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "S'està actualitzant..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "mostra el contingut" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Còpia de seguretat a un fitxer" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Les llistes de filtres pròpies d'uBO s'allotgen lliurement als següents \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "S'utilitzarà un CDN triat a l'atzar quan calgui actualitzar una llista de filtres" - }, - "aboutChangelog": { - "description": "", - "message": "Registre de canvis" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Codi font (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Col·laboradors" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Dependències externes (compatibles amb GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Llistat de filtres" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Quant a" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Política de privadesa" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Restaura als valors per defecte..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "La configuració serà suprimida i es reiniciarà l'uBlock₀.\n\nVoleu reiniciar l'uBlock₀ als valors per defecte?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Restaura des d'un fitxer..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "La configuració es sobreescriurà amb la còpia de seguretat del {{time}}, i l'uBlock₀ es reiniciarà.\n\nVoleu restaurar la configuració amb la còpia de seguretat?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Les dades no es poden llegir o no son vàlides" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Codi font" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Traduccions" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Configuració avançada" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Atenció! Canvieu aquestes configuracions avançades sota la vostra responsabilitat." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Visor de recursos" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Clic per carregar" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Nom d'aquest dispositiu:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Importa des d'un servei al núvol" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importa des del núvol i afegeix a la configuració actual" - }, - "cloudPush": { - "description": "tooltip", - "message": "Exporta a un servei al núvol" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Bloca l'element al marc..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Uniu-vos a la llista de filtres... " - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Permet temporalment els fitxers multimèdia grans" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Mostra el codi font…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Tauler de control" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Atenció! Hi ha canvis sense desar" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignora" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Roman" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Enrere" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Tanca aquesta finestra" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Procedeix" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanentment" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Temporalment" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "No em tornis a avisar sobre aquest lloc" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Trobat a:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "sense paràmetres" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Inhabilita el blocatge estricte per {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "L'uBlock Origin ha impedit que es carregui la pàgina:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Detectat per aquest filtre" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Pàgina blocada" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Aquesta entrada ha de ser l'última" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "fa {{value}} dies" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "fa {{value}} hores" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "fa {{value}} minuts" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "fa un dia" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "fa una hora" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "fa un minut" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Error de xarxa: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Finalment, un blocador eficient que utilitza pocs recursos de memòria i processador." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "desactivat" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Aplica els canvis" - }, - "genericBytes": { - "description": "", - "message": "bytes" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Copia al porta-retalls" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Commuta el desplaçament blocat" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Desfés" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Selecciona-ho tot" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Envia" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Tot" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Peticions amagades" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtra entrades del registre" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domini" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filtre" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Tipus" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Neteja l'informe" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Pestanya actual" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Commuta l'inspector DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Context" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filtre" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Llista de filtres" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Detalls" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Petició" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Context arrel" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Regla" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Tipus" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Text pla" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Llista" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Taula" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "Wiki - uBlock Origin: L'informe" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pausa el registre de l'informe (descarta qualsevol data entrant)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Commuta el menú emergent" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Torna a carregar el contingut de la pestanya" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "primari" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "de tercers" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "permès" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blocat" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "important" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modificat" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Cap" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Opcions de filtratge del registre" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Commuta el filtratge del registre" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Les entrades del registrador que no compleixin les tres condicions següents es rebutjaran automàticament:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Context" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filtre/regla" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "Petició de {{input}}" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Temps" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Amaga les columnes:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Utilitza {{input}} línies per entrada en mode expandit verticalment" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Conserva les entrades dels darrers {{input}} minuts" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Conserva com a màxim {{input}} entrades per pestanya" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Conserva com a màxim {{input}} càrregues de pàgina per pestanya" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "S'ha trobat el filtre estàtic \u003Ccode>{{filter}}\u003C/code> a:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "No s'ha trobat el filtre estàtic \u003Ccode>{{filter}}\u003C/code> a cap de les llistes de filtres actualment habilitades" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Filtre estàtic" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} peticions de la xarxa {{type}} {{br}}amb l'URL coincidint {{url}} {{br}}originada des de {{origin}},{{br}}{{importance}} si és una concordança d'un filtre d'excepció.\nhttps://github.com/gorhill/uBlock/issues/235#issuecomment-109745745." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Permet" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "des de qualsevol web" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "de qualsevol tipus" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Bloca" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "fins i tot" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "excepte" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "des de «{{origin}}»" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "tipus «{{type}}»" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Context:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Filtre dinàmic d'URL" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Tipus:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Continua creant el registre" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Bloca l'element" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Filtres cosmètics" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Clic, Ctrl+clic" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Crear" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Filtres de xarxa" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Escollir" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Vista prèvia" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Sortir" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "scripts" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "de tercers" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "marc" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "marcs de tercers" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "css/imatges de tercers" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "scripts de tercers" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "tot" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "en aquesta pàgina" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blocat en aquesta pàgina" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "sol·licituds bloquejades" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "des de la instal·lació" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blocat des de la instal·lació" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} o {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Dominis connectats" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} de {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "dominis connectats" - }, - "popupImageRulePrompt": { - "description": "", - "message": "imatges" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "scripts incrustats" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Menys" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Més" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Filtres cosmètics" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Elements multimèdia grans" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Finestres emergents" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Fonts remotes" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "o" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Clic: habilita/inhabilita l'uBlock₀ per a aquest lloc.\n\nCtrl+clic: inhabilita l'uBlock₀ només en aquesta pàgina." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Feu clic per inhabilitar l'uBlock₀ en aquest lloc.\n\nFeu Ctrl+clic per inhabilitar l'uBlock₀ només en aquesta pàgina." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Feu clic per habilitar l'uBlock₀ en aquest lloc." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Clic per obrir el tauler de control" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Regles globals: les regles d'aquesta columna s'apliquen a tots els llocs." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Regles locals: les regles d'aquesta columna s'apliquen només al lloc actual.\nLes regles locals anul·len les regles globals." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Obre el registre d'esdeveniments" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Commuta els filtres cosmètics d'aquest lloc" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Feu clic per inhabilitar els filtres cosmètics en aquest lloc" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Feu clic per habilitar els filtres cosmètics en aquest lloc" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Commuta el bloqueig d'elements multimèdia grans per a aquest lloc" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Feu clic per blocar elements multimèdia grans en aquest lloc" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Feu clic per desblocar elements multimèdia grans en aquest lloc" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Commuta el bloqueig de totes les finestres emergents d'aquest lloc" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Feu clic per blocar totes les finestres emergents d'aquest lloc" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Feu clic per desblocar les finestres emergents d'aquest lloc" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Commuta el bloqueig de fonts remotes per a aquest lloc" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Feu clic per blocar les fonts remotes en aquest lloc" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Feu clic per desblocar les fonts remotes en aquest lloc" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Feu clic per inhabilitar completament el JavaScript en aquest lloc" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Feu clic per no inhabilitar el JavaScript en aquest lloc" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Canvia al mode de selecció d'elements" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Informeu d'un problema en aquest lloc web" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Feu clic per desfer els canvis." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Feu clic per fer els canvis permanents." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Activa el mode d'eliminació d'elements" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versió" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Mode de bloqueig relaxat" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Establir" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Editar" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Descartar" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Desar" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Exporta a..." - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Sintaxi de les regles: \u003Ccode>origen destinació tipus acció\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>documentació\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Llista de regles de filtrat dinàmic." - }, - "rulesImport": { - "description": "", - "message": "Importa des del fitxer..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Les meves regles" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Normes permanents" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Desfer" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Ordena:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destinació" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Origen" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Tipus de regla" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Normes temporals" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Comportament per defecte" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Es pot anul·lar el comportament per defecte per a qualsevol web" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Avançat" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Característiques adequades només per a usuaris tècnics" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Sóc un usuari avançat (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>lectura necessària\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "configuració avançada" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Aparença" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Habilita el suport d'emmagatzematge al núvol" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Amaga els marcadors de posició dels elements blocats" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Configuració per a persones daltòniques" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Utilitzar el menú contextual quan sigui possible" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Inhabilita l'auditoria de l'enllaç" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Mostra el número de peticions blocades a l'icona" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Darrera còpia de seguretat:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Darrera restauració:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Bloca els informes CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Inhabilita els filtres cosmètics" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Bloca els fitxers multimèdia més grans que {{input:number}} kB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Bloca les fonts remotes" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Inhabilita el JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Configuració" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Inhabilita la cerca prèvia (per evitar qualsevol connexió de xarxa per a sol·licituds blocades)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Color d'accent personalitzat" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Inhabilita els suggeriments" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Revela els noms canònics" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Evita que el protocol WebRTC divulgui la IP local" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Escriviu una drecera" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Dreceres" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Mostrar Tauler de control" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Mostra el registre d'esdeveniments" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Registre de peticions de xarxa" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Emmagatzematge utilitzat: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Subscriu-me" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: Voleu afegir aquest URL a la llista de filtres personalitzats?\n\nTítol: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Cerca d'informes semblants" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Obre" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Ajuda" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redacta" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Crea un informe nou" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentació" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Llegiu la documentació a \u003Ccode>uBlock/wiki\u003C/code> per obtenir informació sobre totes les funcions de l'uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Preguntes i suport" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Les respostes a preguntes i altres tipus d’ajuda es proporcionen al subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Problemes de filtre/lloc web trencat" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Informeu de problemes de filtres amb llocs web específics al \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> rastrejador de problemes\u003C/span>. Requereix un compte de GitHub." - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important\u003C/b>: eviteu utilitzar altres bloquejadors amb propòsits similars juntament amb l'uBlock Origin, ja que això pot causar problemes de filtratge en llocs web específics." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Consells:\u003C/b> Assegureu-vos que les vostres llistes de filtres estiguin actualitzades. \u003Cspan data-url=\"logger-ui.html#_\">El registrador\u003C/span> és l’eina principal per diagnosticar problemes relacionats amb els filtres." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Informe d'errors" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Informeu de problemes amb el propi uBlock Origin al \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> rastrejador de problemes \u003C/span>. Requereix un compte de GitHub." - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Informació de resolució de problemes" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "A continuació es mostra informació tècnica que pot ser útil quan els voluntaris intenten ajudar-vos a resoldre un problema." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Per defecte es redacta informació potencialment privada o confidencial. La informació redactada pot dificultar la resolució d'un problema." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Marca aquesta pàgina com a “NSFW” (\u003Ca href=\"https://ca.wikipedia.org/wiki/NSFW\">“No segur per al treball”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Informeu d'un problema de filtre" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Per evitar carregar els voluntaris amb informes duplicats, verifiqueu que el problema encara no s'hagi notificat." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Les llistes de filtres s'actualitzen diàriament. Assegureu-vos que el vostre problema encara no s'hagi resolt amb les llistes de filtres més recents." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Comproveu que el problema encara existeix després de recarregar la pàgina web problemàtica." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "La pàgina web..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Trieu una entrada --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Mostra anuncis o restes d'anuncis" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Té superposicions o altres errors" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detecta l'uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Té problemes relacionats amb la privadesa" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "No funciona amb l'uBlock Origin habilitat" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Obre pestanyes o finestres no desitjades" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Adreça de la pàgina web:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "No redactis" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Commuta els filtres cosmètics" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Canviar l'estat de JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "No s'ha pogut filtrar correctament en iniciar el navegador.\nTorneu a carregar la pàgina per garantir un filtratge correcte" - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Aplicar canvis" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Exporta" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "Llista-blanca-de-l'ublock_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importa i annexa" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Llista blanca" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Llistat dels noms de servidor amb que s'inhabilitarà l'µBlock. Una entrada per línia. S'ignoraran els noms de servidor no vàlids." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/cs/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/cs/messages.json deleted file mode 100644 index 4424516..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/cs/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Použít změny" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Povolit mé vlastní filtry" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Exportovat…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "ublock-me-vlastni-filtry_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importovat a připojit…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Vaše filtry" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Povolit vlastní filtry vyžadující důvěryhodnost" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Nepřidávejte filtry z nedůvěryhodných zdrojů." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Použít změny" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Automaticky aktualizovat seznamy filtrů." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Zastaralé." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Jedna URL adresa na řádek. Neplatné URL adresy budou tiše ignorovány." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Reklamy" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Dotěrnosti" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Oznámení o používání souborů cookie" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Vlastní" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Zabudované" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Ochrana před malwarem, bezpečnost" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Víceúčelové" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Soukromí" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regionální, jazykové" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Widgety sociálních sítí" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignorovat obecné kosmetické filtry" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Obecné kosmetické filtry jsou takové kosmetické filtry, které jsou určeny k použití na všech webových stránkách. Povolení této možnosti odstraní nadbytečnou režii paměti a procesoru, přidanou na webové stránky v důsledku manipulace s obecnými kosmetickými filtry.\n\nTuto možnost doporučujeme povolit na méně výkonných zařízeních." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importovat…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Poslední aktualizace: {{ago}}.\nKliknutím vynutíte aktualizaci." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Seznamy blokovaných hostitelů" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} použito z celkových {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} síťových filtrů + {{cosmeticFilterCount}} kosmetických filtrů z:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Chyba sítě znemožnila aktualizaci tohoto zdroje." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filtry třetích stran" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "\nKosmetické filtry slouží ke skrytí prvků na webové stránce, které jsou považovány za vizuálně obtěžující a které nemohou být blokovány filtry na základě síťových volání." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Zpracovat a použít kosmetické filtry." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Vyčistit celou mezipaměť" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Pozastavit síťové aktivity, dokud se nenačtou všechny seznamy filtrů." - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Aktualizovat nyní" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Aktualizuji…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "Zobrazit obsah" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Zálohovat do souboru…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ublock-moje-zaloha_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Vlastní seznamy filtrů uBO jsou volně hostovány na následujících \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Při aktualizaci seznamu filtrů se použije náhodně vybraná síť CDN." - }, - "aboutChangelog": { - "description": "", - "message": "Přehled změn" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Zdrojový kód (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Přispěvatelé" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Externí závislosti (kompatibilní s GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Seznam filtrů" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "O rozšíření" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Ochrana soukromí" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Obnovit výchozí nastavení…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Všechna nastavení budou smazána a uBlock₀ se restaruje.\n\nObnovit uBlock₀ do továrního nastavení?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Obnovit ze souboru…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Všechna nastavení budou přepsána těmi zálohovanými {{time}} a uBlock₀ se restartuje.\n\nPřepsat všechna existující nastavení zálohovanými daty?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Data nemohla být načtena nebo jsou neplatná" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Zdrojový kód" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Překlady" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Pokročilá nastavení" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Pozor! Tato pokročilá nastavení měníte na vlastní nebezpečí." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Prohlížeč zdrojů" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Klikněte pro načtení" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Název tohoto zařízení:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Importovat z cloudového úložiště" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importovat z cloudového úložiště a sloučit se současným nastavením" - }, - "cloudPush": { - "description": "tooltip", - "message": "Exportovat do cloudového úložiště" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Zablokovat prvek v rámečku…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Přihlásit se k odběru seznamu filtrů ..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Dočasně povolit velké multimediální prvky" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Zobrazit zdrojový kód…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Ovládací panel" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Varování! Máte neuložené změny" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignorovat" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Zůstat" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Jít zpět" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Zavřít toto okno" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Pokračovat" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Trvale" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Dočasně" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Znova mě nevarujte ohladně této stránky" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Nalezeno v:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "bez parametrů" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Zakázat striktní blokování pro {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin zabránil následující stránce v načtení:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Kvůli následujícímu filtru" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Zablokována stránka" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "před {{value}} dny" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "před {{value}} hodinami" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "před {{value}} minutami" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "včera" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "před hodinou" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "před minutou" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Chyba sítě: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Konečně efektivní blokovač. Nezatěžuje CPU a paměť." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "vypnutý" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Použít změny" - }, - "genericBytes": { - "description": "", - "message": "bajtů" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopírovat do schránky" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Přepnout uzamčení posuvu" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Vrátit" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Vybrat vše" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Odeslat" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Chyby: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Všechny stránky" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Za oponou" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtrovat obsah loggeru" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Doména" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filtr" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Typ" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Vyčistit logger" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Aktivní list" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Přepnout DOM inspektor" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Kontext" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filtr" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Seznam filtrů" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Podrobnosti" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Strana" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Kořenový kontext" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Pravidlo" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Typ" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Prostý text" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Seznam" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabulka" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Zastavit logování (ignorovat všechny příchozí údaje)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Přepnout vyskakovací panel" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Znovu načíst obsah listu" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "vlastní doména" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "třetí strany" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "povoleno" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blokováno" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "upraveno" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Není" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Možnosti filtrování loggeru" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Přepnout filtrování loggeru" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Záznamy logu, které nesplní všechny uvedené podmínky, budou automaticky zahozeny:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Kontext" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filtr/pravidlo" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} strana" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Čas" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Skrýt sloupce:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Použít {{input}} řádků pro jeden záznam v režimu svislého rozbalení" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Zachovat záznamy z posledních {{input}} minut" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Zachovat nejvýše {{input}} záznamů pro list" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Zachovat nejvýše {{input}} načtení stránky pro list" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Statický filtr \u003Ccode>{{filter}}\u003C/code> nalezen v seznamech:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Statický filtr \u003Ccode>{{filter}}\u003C/code> nebyl nalezen v žádném aktuálně povoleném seznamu filtrů" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statický filtr" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} síťové požadavky {{type}} {{br}}jejichž URL adresa se shoduje s {{url}} {{br}}a pochází {{origin}},{{br}}{{importance}} shodný výjimkový filtr." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Povolit" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "odkudkoliv" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "jakéhokoliv typu" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Blokovat" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "i když existuje" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "pokud neexistuje" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "z “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "typu “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Kontext:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Dynamické filtrování URL adres" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Typ:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Pokračovat v logování" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Zablokovat prvek" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Kosmetické filtry" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Kliknutí, Ctrl+Kliknutí" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Vytvořit" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Síťové filtry" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Vybrat" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Náhled" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Ukončit" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "skripty první strany" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "z třetí strany" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "rámec" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "rámce třetích stran" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/obrázky třetích stran" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "skript" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "skripty třetích stran" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "vše" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "na této stránce" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Zablokováno na této stránce" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "zablokované požadavky" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "od instalace" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Zablokováno od instalace" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} neboli {{percent}} %" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Počet připojených domén" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} z {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domén připojeno" - }, - "popupImageRulePrompt": { - "description": "", - "message": "obrázky" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "řádkové skripty" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Méně" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Více" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Kosmetické filtrování" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Velké multimediální prvky" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Vyskakovací okna" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Vzdálená písma" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "neboli" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Kliknutí: trvale zakázat uBlock₀ pro celý tento web.\n\nCtrl+kliknutí: zakázat uBlock₀ pouze pro tuto stránku." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Kliknutí: trvale zakázat uBlock₀ pro celý tento web.\n\nCtrl+kliknutí: zakázat uBlock₀ pouze pro tuto stránku." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Kliknutím povolíte uBlock₀ pro tento web." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Otevřít ovládací panel" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Globální pravidla: tento sloupec slouží pro pravidla, která platí pro všechny weby." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Lokální pravidla: tento sloupec slouží pro pravidla, která platí pouze pro aktuální web.\nLokální pravidla přepisují globální pravidla." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Otevřít protokol požadavků" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Přepnout kosmetické filtrování na tomto webu" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Kliknutím zakážete kosmetické filtrování na tomto webu" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Kliknutím povolíte kosmetické filtrování na tomto webu" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Přepnout blokování velkých multimediálních prvků na tomto webu" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Kliknutím zablokujete velké multimediální prvky na tomto webu" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Kliknutím vypnete blokování velkých multimediálních prvků na tomto webu" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Přepnout blokování všech vyskakovacích oken na tomto webu" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Kliknutím zablokujete všechny popupy pro tento web" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Kliknutím vypnete blokování všech popupů pro tento web" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Přepnout blokování vzdálených fontů pro tento web" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Kliknutím zablokujete externí/vzdálené fonty na tomto webu" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Kliknutím vypnete blokování externích/vzdálených fontů na tomto webu" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Kliknutím zakážete JavaScript na této stránce" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Kliknutím znovu povolíte JavaScript na této stránce" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Zapnout režim výběru prvků" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Nahlásit problém na této webové stránce" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Kliknutím zrušíte provedené změny." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Kliknutím natrvalo uložíte provedené změny." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Zapnout režim likvidace prvků" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Verze" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Uvolnit režim blokování" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Potvrdit" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "ublock-ma-dynamicka-pravidla_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Upravit" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Zrušit" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Uložit" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Exportovat do souboru…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Syntaxe pravidel: \u003Ccode>zdroj destinace typ akce\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>kompletní dokumentace\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Seznam vašich pravidel pro dynamické filtrování." - }, - "rulesImport": { - "description": "", - "message": "Načíst ze souboru…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Vaše pravidla" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Permanentní pravidla" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Vrátit" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Třídit:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Cíl" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Zdroj" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Typ pravidla" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Dočasná pravidla" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Výchozí chování" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Tato výchozí chování mohou být přepsána u jednotlivých webů" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Pokročilé" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Funkce vhodné pouze pro pokročilé uživatele" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Jsem pokročilý uživatel (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>nutno přečíst\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "pokročilá nastavení" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Vzhled" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Povolit podporu cloudového úložiště" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Skrýt zástupné objekty zablokovaných prvků" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Styl pro barvoslepé" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Využít kontextovou nabídku kde je to možné" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Vypnout auditování hypertextových odkazů" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Zobrazit počet blokovaných požadavků u ikony" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Poslední záloha:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Poslední obnova:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Blokovat CSP reporty" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Zakázat kosmetické filtrování" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Blokovat multimediální prvky větší než {{input}} kB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Blokovat externí fonty" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Zakázat JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Nastavení" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Zakázat přednačítání (zakáže jakékoliv spojení pro zablokované síťové požadavky)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Vlastní barva motivu" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Motiv" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Skrýt nápovědu při najetí" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Odkrýt kanonická jména" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Předejít úniku lokálních IP adres přes WebRTC" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Stiskněte zkratku" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Zkratky" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Zobrazit řídící panel" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Zobrazit Zaznamenávač" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Protokol požadavků" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Využití úložiště: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Odebírat" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: Přidat následující URL adresu do seznamů vlastních filtrů?\n\nNázev: „{{title}}“\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Vyhledat podobná hlášení" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Otevřít" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Podpora" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Upravit" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Vytvořit nové hlášení" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentace" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Přečtěte si dokumentaci na \u003Ccode>uBlock/wiki\u003C/code>, kde se dozvíte o všech funkcích uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Dotazy a podpora" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Odpovědi na otázky a další druhy podpory jsou poskytovány na subredditu \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Problémy s filtrem/web. stránka je nefunkční" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Hlášení problémů s filtrem u učitých web. stránek do \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. Vyžaduje účet GitHub." - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Důležité:\u003C/b> Nepoužívejte podobně zaměřené blokátory s uBlock Origin, může to způsobit problémy s filtry na určitých webových stránkách." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tipy:\u003C/b> Ověřte, že jsou seznamy filtrů aktuální. \u003Cspan data-url=\"logger-ui.html#_\">Protokol\u003C/span> je hlavní nástroj pro diagnósu problémů s filtry." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Hlášení chyb" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Hlášení problémů se samotným uBlock Origin na \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. Požaduje účet GitHub." - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Informace o řešení problémů" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Níže jsou technické informace, které mohou být užitečné, když vám dobrovolníci pomáhají vyřešit nějaký problém." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Důležité:\u003C/b> Potenciálně soukromé nebo citlivé informace jsou ve výchozím nastavení redigovány. Redigované informace mohou ztížit řešení problému." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Označit webovou stránku jako “NSFW” (\u003Ca href=\"https://cs.wikipedia.org/wiki/Not_safe_for_work\">Není bezpečné pro práci”)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Nahlásit problém s filtrem" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Abyste dobrovolníky nezatěžovali duplicitními hlášeními, ověřte si, zda již problém nebyl nahlášen." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Seznamy filtrů jsou aktualizovány denně. Ujistěte se, že váš problém již nebyl vyřešen v nejnovějších seznamech filtrů." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Ověřte, že problém přetrvává i po opětovném načtení problematické webové stránky." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Webová stránka…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Vyberte položku --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Zobrazuje reklamy nebo zbytky reklam" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Je překrytá nebo má jiné nedostatky" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detekuje uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Má problémy související se soukromím" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Je rozbitá, když je povolen uBlock Origin" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Otevírá nechtěné karty nebo okna" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Adresa webové stránky:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Odstranit" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Zapnout kosmetické filtrování" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Přepnout JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Nebylo možné správně filtrovat při spuštění prohlížeče.\nNačtěte stránku znovu, abyste zajistili správné filtrování." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Použít změny" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Exportovat" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "ublock-muj-whitelist_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importovat a připojit" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Povolené domény" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Pravidla v seznamu povolených domén určují, pro které webové stránky bude uBlock Origin vypnutý. Jedna položka na řádek." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/cv/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/cv/messages.json deleted file mode 100644 index d2f386f..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/cv/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Улшӑнӑва ҫирӗплет" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Куҫар" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "ublock-custom-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Import and append…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Манӑн фильтрсем" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Улшӑнӑва ҫирӗплет" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Auto-update filter lists" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Кивелнӗ" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "One URL per line. Invalid URLs will be silently ignored." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Реклама" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Annoyances" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Custom" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Built-in" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Malware protection, security" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Нумай тӗллевлисем" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Вӑрттӑнлӑх" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Регионсем, чӗлхесем" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignore generic cosmetic filters" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Import…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Юлашки ҫӗнетӳ: {{ago}}" - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Чарнӑ хостсен йышӗ" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} used out of {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "A network error prevented the resource from being updated." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Ют фильтрсем" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the network request-based filtering engines." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Parse and enforce cosmetic filters" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Purge all caches" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspend network activity until all filter lists are loaded" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Халех ҫӗнет" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Updating…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "view content" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Back up to file…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO's own filter lists are freely hosted on the following \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "A randomly picked CDN is used when a filter list needs to be updated." - }, - "aboutChangelog": { - "description": "", - "message": "Улшӑнусен йышӗ" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Source code (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Пайташсем" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "External dependencies (GPLv3-compatible):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filter lists" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Сарӑм пирки" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Privacy policy" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Reset to default settings…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Restore from file…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "The data could not be read or is invalid" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Source code" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Translations" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Advanced settings" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Warning! Change these advanced settings at your own risk." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Asset viewer" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Click to load" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Ку хатӗрӗн ячӗ:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Import from cloud storage" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Import from cloud storage and merge with current settings" - }, - "cloudPush": { - "description": "tooltip", - "message": "Export to cloud storage" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Block element in frame…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subscribe to filter list…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Пысӑк медиа-элементсене вӑхӑтлӑха уҫ" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "View source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "Йӗркелӳ ҫӳлӗкӗ" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Асӑрха! Санӑн упраман улшӑнусем пур" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignore" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Stay here" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Таврӑн" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Close this window" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Proceed" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Яланлăха" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Вӑхӑтлӑха" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Тупӑннӑ:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "ӗнерлевсӗр" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Disable strict blocking for {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin has prevented the following page from loading:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Тепӗр фильтра пула" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Page blocked" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Ку ҫыру юлашки пулмалла" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} кун каялла" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} сехет каялла" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} минут каялла" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "пӗр кун каялла" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "пӗр сехет каялла" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "пӗр минут каялла" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Network error: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock₀" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Тинех Интернет тишкерӳҫӗ валли хӑвӑрт та витӗмлӗ чаркӑч пур." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "off" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Apply changes" - }, - "genericBytes": { - "description": "", - "message": "байт" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Copy to clipboard" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Toggle locked scrolling" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Тавӑр" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Select all" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Йышӑн" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Пурте" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Tabless" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filter logger content" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Домен" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Фильтр" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Тĕсĕ" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Clear logger" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Current tab" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Toggle the DOM inspector" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Context" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filter list" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Details" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partyness" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Root context" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Rule" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Type" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "Тӗл" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Plain" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "List" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Table" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: The logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pause logger (discard all incoming data)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Toggle the popup panel" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Reload the tab content" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1st-party" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3rd-party" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "allowed" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blocked" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modified" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Not" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Logger filtering options" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Toggle logger filtering" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Context" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/rule" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partyness" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Time" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Hide columns:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Use {{input}} lines per entry in vertically expanded mode" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Preserve entries from the last {{input}} minutes" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Preserve at most {{input}} entries per tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preserve at most {{input}} page loads per tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Static filter \u003Ccode>{{filter}}\u003C/code> found in:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Static filter could not be found in any of the currently enabled filter lists" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Статика фильстрацийӗ" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Ирӗк пар" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "Кирек ӑҫтан та" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "any type" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Чар" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "even if" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "except when" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": " “{{origin}}” ран" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "тĕсĕ “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Контекст:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": " URL динамика фильтрацийӗ" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Тĕсĕ:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Unpause logger" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Block element…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Cosmetic filters" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Click, Ctrl-click" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Create" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Network filters" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Суйласа ил" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Preview" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Тух" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "Харпӑр скриптсем" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "ют ресурссем" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "Ют фреймсем" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "ют css/ӳкерчӗксем" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "ют скриптсем" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "пурте" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "on this page" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blocked on this page" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "requests blocked" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "since install" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blocked since install" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} е {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domains connected" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} out of {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domains connected" - }, - "popupImageRulePrompt": { - "description": "", - "message": "ӳкерчӗксем" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "inline-скриптсем" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Less" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Тата" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Cosmetic filtering" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Large media elements" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Pop-up windows" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Remote fonts" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "е" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Click to disable uBlock₀ for this site.\n\nCtrl+click to disable uBlock₀ only on this page." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Click to enable uBlock₀ for this site." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Йӗркелӳ ҫӳлӗкне уҫма пус" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Global rules: this column is for rules which apply to all sites." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Open the logger" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Toggle cosmetic filtering for this site" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click to disable cosmetic filtering on this site" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click to enable cosmetic filtering on this site" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Toggle the blocking of large media elements for this site" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click to block large media elements on this site" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click to no longer block large media elements on this site" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Toggle the blocking of all popups for this site" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Click to block all popups on this site" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Click to no longer block all popups on this site" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Toggle the blocking of remote fonts for this site" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Click to block remote fonts on this site" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Click to no longer block remote fonts on this site" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Click to disable JavaScript on this site" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Click to no longer disable JavaScript on this site" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Enter element picker mode" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Report an issue on this website" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Click to revert your changes." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Click to make your changes permanent." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Enter element zapper mode" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Version" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relax blocking mode" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Ҫирӗплет" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Улӑштар" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Discard" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Упра" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Export to file…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Rule syntax: \u003Ccode>source destination type action\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>full documentation\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "List of your dynamic filtering rules." - }, - "rulesImport": { - "description": "", - "message": "Import from file…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Манӑн йӗрке" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Яланлӑх йӗрке" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Тавӑр" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sort:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destination" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Source" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Rule type" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Вӑхӑтлӑх йӗрке" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Default behavior" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Ку ӗнерлеве кашни сайт валли уйрӑм палӑртма май пур" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Advanced" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Features suitable only for technical users" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Эпӗ ӑста усӑҫ (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>Вуламасӑр иртме ҫук\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "advanced settings" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Appearance" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Enable cloud storage support" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Hide placeholders of blocked elements" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Color-blind friendly" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Make use of context menu where appropriate" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Disable hyperlink auditing" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Show the number of blocked requests on the icon" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Last backup:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Юлашки тавӑру:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Block CSP reports" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Disable cosmetic filtering" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "{{input:number}} КБ йывӑртарах медиа-элементсене чар" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Ют шрифтсене чар" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Disable JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Ӗнерлев" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Disable pre-fetching (to prevent any connection for blocked network requests)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Custom accent color" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Theme" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Disable tooltips" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Uncloak canonical names" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Prevent WebRTC from leaking local IP addresses" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Type a shortcut" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Shortcuts" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Йӗркелӳ ҫӳлӗкне кӑтарт" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Show Logger" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Logger" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Storage used: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Subscribe" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Add the following URL to your custom filter lists?\n\nTitle: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Find similar reports" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Open" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Support" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Create new report" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentation" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Read the documentation at \u003Ccode>uBlock/wiki\u003C/code> to learn about all of uBlock Origin's features." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Questions and support" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter issues/website is broken" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Bug report" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Troubleshooting Information" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Report a filter issue" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "The web page…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pick an entry --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shows ads or ad leftovers" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has privacy-related issues" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfunctions when uBlock Origin is enabled" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Opens unwanted tabs or windows" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Address of the web page:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Улшӑнӑва ҫирӗплет" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Export…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Import and append…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Trusted sites" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/cy/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/cy/messages.json deleted file mode 100644 index 1b11c0f..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/cy/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Apply changes" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Allforio…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "fy-hidlyddion-statig_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Import and append…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Fy hidlyddion" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Apply changes" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Auto-update filter lists" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Out of date." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "One URL per line. Invalid URLs will be silently ignored." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Hysbysebion" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Pethau diflas" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Addasedig" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Built-in" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Diogelwch ac amddiffyn rhag maleiswedd" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Amlbwrpas" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Preifatrwydd" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Rhanbarthau, ieithoedd" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Anwybyddu hidlyddion arwynebol cyffredinol" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Hidlyddion arwynebol cyffredinol yw'r hidlyddion arwynebol hynny sy'n gweithredu ar bob gwefan. Mae galluogi'r dewisiad hwn yn dileu'r pwysau a roddir ar y cof a'r CPU gan wefannau o ganlyniad i drin hidlyddion arwynebol cyffredinol.\n\nArgymhellir galluogi'r dewisiad hwn ar ddyfeisiau llai pwerus." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Mewnforio…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Last update: {{ago}}.\nClick to force an update." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "Defnyddir {{used}} o {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "A network error prevented the resource from being updated." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Rhestri hidlo" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the network request-based filtering engines." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Parse and enforce cosmetic filters" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Purge all caches" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspend network activity until all filter lists are loaded" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Diweddaru nawr" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Updating…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "gweld y cynnwys" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Back up to file…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO's own filter lists are freely hosted on the following \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "A randomly picked CDN is used when a filter list needs to be updated." - }, - "aboutChangelog": { - "description": "", - "message": "Changelog" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Cod ffynhonnell (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Cyfranwyr" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "External dependencies (GPLv3-compatible):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Rhestri hidlo" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Ynghylch" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Polisi preifatrwydd" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Reset to default settings…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Restore from file…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "The data could not be read or is invalid" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Cod ffynhonnell" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Cyfieithiadau" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Gosodiadau uwch" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Warning! Change these advanced settings at your own risk." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Asset viewer" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Click to load" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Enw'r ddyfais hon:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Import from cloud storage" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Import from cloud storage and merge with current settings" - }, - "cloudPush": { - "description": "tooltip", - "message": "Export to cloud storage" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Block element in frame…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subscribe to filter list…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Temporarily allow large media elements" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Gweld y cod ffynhonnell…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Dashfwrdd" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Rhybudd! Mae yna newidiadau heb eu cadw" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Anwybyddu" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Aros yma" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Yn ôl" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Cau'r ffenestr hon" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Parhau" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Yn barhaol" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Dros dro" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Found in:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "without parameters" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Disable strict blocking for {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin has prevented the following page from loading:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Because of the following filter:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Page blocked" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} o ddiwrnodau yn ôl" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} awr yn ôl" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} o funudau yn ôl" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "ddiwrnod yn ôl" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "awr yn ôl" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "funud yn ôl" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Network error: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "O'r diwedd, rhwystrydd effeithlon. Ysgafn ar y CPU a'r cof." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "off" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Apply changes" - }, - "genericBytes": { - "description": "", - "message": "bytes" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Copïo i'r clipfwrdd" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Toggle locked scrolling" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Revert" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Dewis y cyfan" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Cyflwyno" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Gwallau: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Y cyfan" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Tabless" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "hidlo cynnwys yr hidlydd" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Parth" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Hidlydd" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Math" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Clirio'r logiwr" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Y tab presennol" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Toggle the DOM inspector" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Cyd-destun" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Hidlydd" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filter list" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Manylion" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partyness" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Root context" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Rheol" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Math" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Plaen" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Rhestr" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabl" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: The logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Oedi'r logiwr (diystyru data sy'n cyrraedd)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Toggle the popup panel" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Reload the tab content" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1st-party" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3rd-party" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "wedi caniatáu" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "wedi rhwystro" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "wedi addasu" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Nid" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Dewisiadau hidlo'r logiwr" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Toglo hidlo'r logiwr" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Cyd-destun" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Hidlydd/rheol" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partyness" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Amser" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Cuddio colofnau:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Use {{input}} lines per entry in vertically expanded mode" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Preserve entries from the last {{input}} minutes" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Preserve at most {{input}} entries per tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preserve at most {{input}} page loads per tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Static filter \u003Ccode>{{filter}}\u003C/code> found in:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Static filter could not be found in any of the currently enabled filter lists" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Hidlydd statig" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Caniatáu" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "from anywhere" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "any type" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Rhwystro" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "even if" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "except when" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "o \"{{origin}}\"" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "math \"{{type}}\"" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Cyd-destun:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL rule" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Math:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Dad-oedi'r logiwr" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Block element…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Hidlyddion arwynebol" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Click, Ctrl-click" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Creu" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Network filters" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Pick" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Preview" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Quit" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1st-party scripts" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "3rd-party" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "3rd-party frames" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "3rd-party CSS/images" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "3rd-party scripts" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "all" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "ar y dudalen hon" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Wedi rhwystro ar y dudalen hon" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "requests blocked" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "since install" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Wedi rhwystro ers gosod" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Parthau wedi cysylltu" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} o {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domains connected" - }, - "popupImageRulePrompt": { - "description": "", - "message": "images" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "inline scripts" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Llai" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Mwy" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Hidlo arwynebol" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Large media elements" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Pop-up windows" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Ffontiau pell" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "neu" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Clic: analluogi/galluogi uBlock₀ ar y wefan hon.\n\nCtrl+clic: analluogi uBlock₀ ar y dudalen hon yn unig." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Cliciwch i analluogi uBlock₀ ar y wefan hon.\n\nDefnyddiwch ctrl+clic i analluogi uBlock₀ ar y dudalen hon yn unig." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Cliciwch i alluogi uBlock₀ ar y wefan hon." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Agor y dashfwrdd" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Global rules: this column is for rules which apply to all sites." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Agor y logiwr" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Toglo hidlo arwynebol ar gyfer y wefan hon" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Cliciwch i analluogi hidlo arwynebol ar y wefan hon" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Cliciwch i alluogi hidlo arwynebol ar y wefan hon" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Toggle the blocking of large media elements for this site" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click to block large media elements on this site" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click to no longer block large media elements on this site" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Toggle the blocking of all popups for this site" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Click to block all popups on this site" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Click to no longer block all popups on this site" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Toggle the blocking of remote fonts for this site" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Cliciwch i rwystro ffontiau pell ar y wefan hon" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Cliciwch i ganiatáu ffontiau pell ar y wefan hon" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Cliciwch i analluogi JavaScript ar y wefan hon" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Cliciwch i alluogi JavaScript ar y wefan hon" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Modd dewis elfen" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Adrodd nam ar y wefan hon" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Click to revert your changes." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Click to make your changes permanent." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Modd saethu elfen" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Fersiwn" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relax blocking mode" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Commit" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "fy-hidlyddion-deinamig_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Golygu" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Discard" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Cadw" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Export to file…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Rule syntax: \u003Ccode>source destination type action\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>full documentation\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Rhestr o'ch rheolau hidlo deinamig. " - }, - "rulesImport": { - "description": "", - "message": "Import from file…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Fy rheolau" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Permanent rules" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Revert" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Trefnu:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Cyrchfan" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Ffynhonnell" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Math o reol" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Temporary rules" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Default behavior" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "These default behaviors can be overridden on a per-site basis" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Uwch" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Features suitable only for technical users" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Rwy'n ddefnyddiwr profiadol" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "gosodiadau uwch" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Golwg" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Enable cloud storage support" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Hide placeholders of blocked elements" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Color-blind friendly" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Make use of context menu where appropriate" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Disable hyperlink auditing" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Show the number of blocked requests on the icon" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Last backup:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Last restore:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Block CSP reports" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Analluogi hidlo arwynebol" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Block media elements larger than {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Rhwystro ffontiau pell" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Analluogi JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Gosodiadau" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Disable pre-fetching (to prevent any connection for blocked network requests)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Custom accent color" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Thema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Disable tooltips" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Uncloak canonical names" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Rhwystro WebRTC rhag datgelu eich cyfeiriad IP mewnol" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Type a shortcut" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Llwybrau byr" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Dangos y dashfwrdd" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Dangos y logiwr" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Logiwr" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Storfa: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Tanysgrifio" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Add the following URL to your custom filter lists?\n\nTitle: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Canfod adroddiadau tebyg" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Agor" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Cymorth" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Creu adroddiad newydd" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dogfennaeth" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Read the documentation at \u003Ccode>uBlock/wiki\u003C/code> to learn about all of uBlock Origin's features." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Cwestiynau a chymorth" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter issues/website is broken" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Bug report" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Troubleshooting Information" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Adrodd nam ar hidlydd" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Y dudalen we…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pick an entry --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shows ads or ad leftovers" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has privacy-related issues" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfunctions when uBlock Origin is enabled" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Opens unwanted tabs or windows" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Cyfeiriad y dudalen we:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toglo hidlo arwynebol" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toglo JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Apply changes" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Allforio…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Import and append…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Gwefannau dibynadwy" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/da/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/da/messages.json deleted file mode 100644 index 2f98a9f..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/da/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Effektuér ændringer" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Aktivér mine tilpassede filtre" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Eksportér…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "mine-ublock-statiske-filtre_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importér og tilføj…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Mine filtre" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Tillad tilpassede filtre som kræver tillid" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Tilføj ikke filtre fra ikke-betroede kilder." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Effektuér ændringer" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Auto-opdatér filterlister" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Forældet." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Én URL pr. linje. Ugyldige URL'er ignoreres uden notificering." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Annoncer" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Gener" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie-meddelelser" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Tilpasset" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Integreret" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Malware-beskyttelse, sikkerhed" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Universalfiltre" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privatliv" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regioner, sprog" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Sociale widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignorér generiske kosmetiske filtre" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Generiske kosmetiske filtre er de kosmetiske filtre, der er beregnet til at gælde på alle websteder. Aktivering af denne indstilling vil eliminere hukommelse- og CPU-forbrug, der tilføjes til websider som et resultat af håndtering af generiske kosmetiske filtre.\n\nDet anbefales at aktivere denne indstilling på mindre kraftfulde enheder." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importér..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Seneste opdatering: {{ago}}.\nKlik for at gennemtvinge en opdatering." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Liste over blokerede værter" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} af {{total}} brugt" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} netværksfiltre + {{cosmeticFilterCount}} kosmetiske filtre fra:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "En netværksfejl forhindrede opdatering af ressourcen." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filterlister" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Kosmetiske filtre tjener til at skjule elementer på en webside, der anses for at være visuel generende, og som ikke kan blokeres af den netværksanmodningsbaserede filtreringsmotor." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Fortolk og benyt kosmetiske filtre" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Ryd alle caches" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspendér netværksaktivitet, indtil alle filterlister er indlæst" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Opdatér nu" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Opdaterer..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "vis indhold" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Sikkerhedskopiér til fil..." - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "min-ublock-sikkerhedskopi_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBOs egne filterlister hostes frit på flg. \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN'er\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "En tilfældigt valgt CDN anvendes, når en filterliste kræver opdatering." - }, - "aboutChangelog": { - "description": "", - "message": "Ændringslog" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Kildekode (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Bidragsydere" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Eksterne afhængigheder (GPLv3-kompatible):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filterlister" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Om" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Fortrolighedspolitik" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Nulstil til standardindstillinger..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Alle dine indstillinger fjernes, hvorefter uBlock₀ genstarter.\n\nNulstil uBlock₀ til standardindstillingerne?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Gendan fra fil..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Alle dine indstillinger overskreves med data sikkerhedskopieret d. {{time}}, hvorefter uBlock₀ genstarter.\n\nOverskriv aktuelle indstillinger med data fra sikkerhedskopien?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Dataene kunne ikke læses eller er ugyldige" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Kildekode" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Oversættelser" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Avancerede indstillinger" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Advarsel! Ændring af disse avancerede indstillinger sker på eget ansvar." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Visning af aktiver" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Klik for at indlæse" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Denne enheds navn:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Importér fra Skylager" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importér fra Skylager og sammenflet med de aktuelle indstillinger" - }, - "cloudPush": { - "description": "tooltip", - "message": "Eksportér til Skylager" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Blokér element i ramme..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Abonnér på filterliste..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Tillad midlertidigt store medieelementer" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Vis kildekode…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Kontrolpanel" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Advarsel! Du har ændringer, der ikke er gemt" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignorér" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Bliv her" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Gå tilbage" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Luk dette vindue" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Fortsæt" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanent" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Midlertidig" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Advar ikke igen om dette websted" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Fundet i:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "uden parametre" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Deaktivér stringent blokering for {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origins har blokeret flg. side fra at hente:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Grundet flg. filter" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Side blokeret" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Denne post skal være den sidste" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} dage siden" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} timer siden" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} minutter siden" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "en dag siden" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "en time siden" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "et minut siden" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Netværksfejl: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Endelig en effektiv blocker. Lavt CPU- og hukommelsesforbrug." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "Slået fra" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Effektuér ændringer" - }, - "genericBytes": { - "description": "", - "message": "bytes" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopiér til Udklipsholder" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Slå rullelåsning til/fra" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Gendan" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Vælg alt" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Indsend" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Fejl: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Alle" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Bag kulisserne" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtrér logindhold" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domæne" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filter" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Type" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Ryd logger" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Aktuel fane" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Slå DOM-inspektøren til/fra" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Kontekst" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filterliste" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Detaljer" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partsrelation" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Root-kontekst" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Regel" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Type" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Enkel" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Liste" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabel" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin-wiki: Loggeren" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Sæt logger på pause (ignorér alle indgående data)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Slå popup-panelet til/fra" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Genindlæs faneindholdet" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "førsteparts" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "tredjeparts" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "tilladte" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blokerede" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "begivenhedsrig" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "ændret" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Ikke" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Logger-filtreringsindstillinger" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Slå logger-filtrering til/fra" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Loggerposter, som ikke opfylder alle tre betingelser nedenfor, kasseres automatisk:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Kontekst" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/regel" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partsrelation" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} tid" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Skjul kolonner:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Benyt {{input}} linjer pr. post i lodret udvidet tilstand" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Bevar poster fra de seneste {{input}} minutter" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Bevar maks. {{input}} poster pr. fane" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Bevar maks. {{input}} sideindlæsninger pr. fane" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Statisk filter \u003Ccode>{{filter}}\u003C/code> fundet i:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Statisk filter kunne ikke findes i nogen af de aktuelt aktiverede filterlister" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statisk filtrering" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} netværksanmodninger af {{type}} {{br}}, hvis URL matcher {{url}} {{br}}, og som stammer fra {{origin}},{{br}}{{importance}} når der er et matchende undtagelsesfilter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Tillad" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "fra hvor som helst" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "enhver type" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Blokér" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "selvom" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "undtagen når" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "fra \"{{origin}}\"" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "type \"{{type}}\"" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Kontekst:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL-regel" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Type:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Fortsæt logger" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Blokér element..." - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Kosmetiske filtre" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klik, Ctrl-klik" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Opret" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Netværksfiltre" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Vælg" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Forhåndsvisning" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Afslut" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "Førsteparts-scripts" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "Tredjeparts" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "Tredjeparts-rammer" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "Tredjeparts CSS/billeder" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "Tredjeparts-scripts" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "alle" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "på denne side" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokeret på denne side" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "blokerede forespørgsler" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "siden installation" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokeret siden installation" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} eller {{percent}} %" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Tilknyttede domæner" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} af {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "forbundne domæner" - }, - "popupImageRulePrompt": { - "description": "", - "message": "billeder" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "indlejrede scripts" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Skjul" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Mere" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Kosmetisk filtrering" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Store medieelementer" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Popup-vinduer" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Fjernskrifttyper" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "eller" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klik: Deaktivér/aktivér uBlock₀ på dette websted.\n\nCtrl+klik: Deaktivér kun uBlock₀ på denne side." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Klik for at deaktivere uBlock₀ på dette websted.\n\nCtrl+klik for kun at deaktivere uBlock₀ på denne side." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Klik for at aktivere uBlock₀ på dette websted." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Åbn kontrolpanelet" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Globale regler: Denne kolonne er til regler gældende alle websteder." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Lokale regler: Denne kolonne er til regler kun gældene dette websted.\nLokale regler tilsidesætter globale regler." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Åbn loggeren" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Slå kosmetisk filtrering til/fra for dette websted" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klik for at slå kosmetisk filtrering fra på dette websted" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klik for at slå kosmetisk filtrering til på dette websted" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Aktivér/deaktivér blokering af store medieelementer på dette websted" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klik for at blokere store medieelementer på dette websted" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klik for ikke længere at blokere store medieelementer på dette websted" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Aktivér/deaktivér blokering af alle popups på dette websted" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klik for at blokere alle popups på dette websted" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klik for ikke længere at blokere alle popups på dette websted" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Slå blokeringen af fjernskrifttyper til/fra for dette websted" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klik for at blokere fjernskrifttyper på dette websted" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klik for ikke længere at blokere fjernskrifttyper på dette websted" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klik for at deaktivere JavaScript på dette websted" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klik for ikke længere at deaktivere JavaScript på dette websted" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Gå til elementvælger­tilstand" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Anmeld et problem med dette websted" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Klik for at fortryde dine ændringer." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Klik for at gøre dine ændringer permanente." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Gå til elementdræber­tilstand" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Version" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Lemp blokeringstilstand" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Gør permanent" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "mine-ublock-dynamiske-regler_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Redigér" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Kassér" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Gem" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Eksportér til fil…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Regelsyntaks: \u003Ccode>kilde destination type handling\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>fuld dokumentation\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Liste over dine dynamiske filtreringsregler." - }, - "rulesImport": { - "description": "", - "message": "Importér fra fil..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Mine regler" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Permanente regler" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Gendan" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sortering:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destination" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Kilde" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Regeltype" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Midlertidige regler" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Standardadfærd" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Standardadfærd som disse kan tilsidesættes pr. websted" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Avanceret" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Funktioner kun egnet til tekniske brugere." - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Jeg er en erfaren bruger" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "avancerede indstillinger" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Udseende" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Aktivér understøttelse for Skylagring" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Skjul blokerede elementers pladsholdere" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Optimeret til farveblinde" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Benyt kontekstmenuen, hvor det er relevant" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Deaktivér hyperlinkrevision" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Vis antallet af blokerede forespørgsler på ikonet" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Seneste sikkerhedskopi:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Seneste gendannelse:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Blokér CSP-rapporter" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Deaktivér kosmetisk filtrering" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Blokér medieelementer større end {{input:number}} kB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Blokér fjernskrifttyper" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Deaktivér JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Indstillinger" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Deaktivér præindlæsning (for at hindre enhver forbindelse for blokerede netværksanmodninger)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Tilpasset fremhævningsfarve" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Deaktivér værktøjstips" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Vis kanoniske navne" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Forhindr WebRTC i at lække lokale IP-adresser" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Angiv en genvej" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Genveje" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Vis Kontrolpanel" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Vis Logger" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Logger" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Lagerplads brugt: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Abonnér" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Føj følgende URL til dine tilpassede filterlister?\n\nTitel: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Find lign. anmeldelser" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Åbn" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Support" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Bortredigér" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Opret ny anmeldelse" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentation" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Læs dokumentationen på \u003Ccode> uBlock/wiki\u003C/code> for at få mere at vide om alle uBlock Origin-funktionerne." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Spørgsmål og Support" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Svar på spørgsmål samt andre former for hjælp/support er tilgængelig via subreddit\u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filterproblemer/websted er ødelagt" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Rapportér filterproblemer med bestemte websteder via \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code>-problemsporing\u003C/span>. \u003Cu>Kræver en GitHub-konto.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Vigtigt:\u003C/b> Undgå brug af andre blockere med lign. formål sammen med uBlock Origin, da dette kan medføre filterproblemer på visse websteder." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tip:\u003C/b> Sørg for, at dine filterlister er opdaterede. \u003Cspan data-url=\"logger-ui.html#_\">Loggeren\u003C/span> er det primære værktøj til diagnosticering af filterrelaterede problemer." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Fejlrapport" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Rapportér problemer med selve uBlock Origin via \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> problemsporingen\u003C/span>. \u003Cu>Kræver en GitHub-konto.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Fejlfindingsinformation" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Nedenfor findes tekniske oplysninger, som kan være nyttige, når frivillige forsøger at hjælpe dig med at løse et problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Vigtigt:\u003C/b> Potentielt fortrolige eller sensitive oplysninger bortredigeres som standard, hvilket kan gøre problemløsningen vanskeligere." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Markér websiden som “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Ikke sikker til arbejdsbrug”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Anmeld et filterproblem" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "For at undgå at belaste frivillige med dubletanmeldelser, så tjek venligst, at problemet ikke allerede er anmeldt." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filterlister opdateres dagligt. Sørg for, at problematikken ikke allerede er blevet behandlet i de seneste filterlister." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Bekræft problematikkens fortsatte eksistens efter genindlæsning af den problematiske webside." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Websiden..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Vælg problemtype --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Viser annoncer eller annoncerester" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Indeholder overlejringer eller andre gener" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detekterer uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Indeholder fortrolighedsrelaterede problemer" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ødelægges, når uBlock Origin er aktiveret" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Åbner uønskede faner eller vinduer" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Websideadressen" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Bortredigér ikke" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Kosmetisk filtrering til/fra" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "JavaScript til/fra" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Kunne ikke filtrere korrekt ved webbrowserstart. Genindlæs siden for at sikre korrekt filtrering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Effektuér ændringer" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Eksportér…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "mine-ublock-betroede-websteder_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importér og tilføj…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Betroede websteder" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "De betroede webstedsdirektiver dikterer, på hvilke websider uBlock Origin skal deaktiveres. En post pr. linje." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/de/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/de/messages.json deleted file mode 100644 index 187f1da..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/de/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Änderungen übernehmen" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Eigene Filter aktivieren" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Exportieren …" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "ublock-statische-filter_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importieren und anfügen …" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Meine Filter" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Eigene Filter zulassen, die Vertrauen erfordern" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Verwenden Sie keine Filter aus unseriösen Quellen." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Änderungen übernehmen" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Filterlisten automatisch aktualisieren" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "veraltet" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Eine URL pro Zeile. Ungültige URLs werden stillschweigend ignoriert." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Werbung" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Belästigungen" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie-Hinweise" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Eigene Filterlisten" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "uBlock-eigene Filterlisten" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Schutz vor Schadsoftware, Sicherheit" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Verschiedene Zwecke" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Datenschutz" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regionen, Sprachen" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Soziale Widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Allgemeine kosmetische Filter ignorieren" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Allgemeine kosmetische Filter sind kosmetische Filter, die auf alle Websites angewendet werden sollen. Das Aktivieren dieser Option verhindert die Mehrbelastung des Arbeitsspeichers und der CPU, die durch das Verarbeiten allgemeiner kosmetischer Filter auf Websites entsteht.\n\nEs wird empfohlen, diese Option auf weniger leistungsfähigen Geräten zu aktivieren." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importieren …" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Letzte Aktualisierung: {{ago}}.\nAktualisierung durch Anklicken erzwingen." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Listen blockierter Hostnamen" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}}/{{total}} verwendet" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} Netzwerkfilter + {{cosmeticFilterCount}} kosmetische Filter von:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Ein Netzwerkfehler verhinderte die Aktualisierung der Ressource." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filterlisten" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Kosmetische Filter dienen dazu, Elemente in einer Webseite auszublenden, die als visuell störend empfunden werden und die von den auf Netzwerkanfragen basierenden Filter-Engines nicht blockiert werden können." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Kosmetische Filter auswerten und anwenden" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Alle Caches leeren" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Netzwerkaktivität unterbrechen, bis alle Filterlisten geladen sind" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Jetzt aktualisieren" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Wird aktualisiert …" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "Inhalt anzeigen" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "In Datei sichern …" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ublock-sicherung_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Die uBO-eigenen Filterlisten werden auf den folgenden \u003Ca href=\"https://de.wikipedia.org/wiki/Content_Delivery_Network\">CDNs\u003C/a> frei zur Verfügung gestellt:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Ein zufällig ausgewähltes CDN wird verwendet, wenn eine Filterliste aktualisiert werden muss." - }, - "aboutChangelog": { - "description": "", - "message": "Änderungsprotokoll" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Quellcode (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Mitwirkende" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Externe Abhängigkeiten (GPLv3-kompatibel):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filterlisten" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Über" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Datenschutzhinweise" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Auf Werkseinstellungen zurücksetzen …" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Alle Einstellungen werden gelöscht und uBlock₀ wird neu gestartet.\n\nSoll uBlock₀ auf Werkseinstellungen zurückgesetzt werden?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Aus Datei wiederherstellen …" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Alle Einstellungen werden überschrieben und auf den Stand vom {{time}} gebracht. Anschließend wird uBlock₀ neu gestartet.\n\nSollen die aktuellen Einstellungen durch die Sicherung ersetzt werden?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Die Daten konnten nicht gelesen werden oder sind ungültig" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Quellcode" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Übersetzungen" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Erweiterte Einstellungen" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Warnung! Das Ändern der erweiterten Einstellungen erfolgt auf eigenes Risiko." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Ressourcenbetrachter" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Zum Laden anklicken" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Name dieses Gerätes:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Aus dem Cloud-Speicher importieren" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Aus dem Cloud-Speicher importieren und mit den aktuellen Einstellungen zusammenführen" - }, - "cloudPush": { - "description": "tooltip", - "message": "In den Cloud-Speicher exportieren" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Element im Frame blockieren …" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Filterliste abonnieren …" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Große Medienelemente temporär zulassen" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Quellcode anzeigen …" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Dashboard" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Warnung! Nicht gespeicherte Änderungen" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignorieren" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Bleiben" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Zurück" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Dieses Fenster schließen" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Fortfahren" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Dauerhaft" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Temporär" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Nicht erneut vor dieser Seite warnen" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Gefunden in:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "ohne Parameter" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Striktes Blockieren für {{hostname}} deaktivieren" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin hat das Laden der folgenden Seite verhindert:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Aufgrund des folgenden Filters:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Seite blockiert" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Dieser Eintrag muss der letzte sein" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "vor {{value}} Tagen" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "vor {{value}} Stunden" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "vor {{value}} Minuten" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "vor einem Tag" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "vor einer Stunde" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "vor einer Minute" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Netzwerkfehler: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Endlich ein effizienter Blocker, der wenig Prozessorleistung und Arbeitsspeicher verbraucht." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "aus" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Änderungen übernehmen" - }, - "genericBytes": { - "description": "", - "message": "Bytes" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "In die Zwischenablage kopieren" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Synchrones Scrollen ein-/ausschalten" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Rückgängig machen" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Alles auswählen" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Absenden" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Fehler: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Alle" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Hintergrund-Netzwerkanfragen" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "Protokolleinträge filtern" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domain" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filter" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Typ" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Protokoll leeren" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Aktueller Tab" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "DOM-Inspektor ein-/ausschalten" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Kontext" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filterliste" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Details" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Zugehörigkeit" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Wurzelkontext" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Regel" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Typ" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Einfach" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Liste" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabelle" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin-Wiki: Protokoll der Netzwerkanfragen" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Protokollierung anhalten (alle eingehenden Daten verwerfen)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Pop-up-Fenster ein-/ausblenden" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Inhalt des Tabs neu laden" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Aktuelle Domain" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Ressourcen aus Drittquellen" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "zugelassen" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blockiert" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "Ereignisreich" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "geändert" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Nicht" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Protokollfilteroptionen" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Protokollfilter ein-/ausschalten" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Protokolleinträge werden automatisch verworfen, wenn sie nicht alle der drei folgenden Bedingungen erfüllen:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Kontext" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/Regel" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Zugehörigkeit" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Uhrzeit" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Spalten ausblenden:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "{{input}} Zeilen pro Eintrag im vertikal erweiterten Modus verwenden" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Einträge der letzten {{input}} Minuten beibehalten" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Höchstens {{input}} Einträge pro Tab beibehalten" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Höchstens {{input}} Seitenladevorgänge pro Tab beibehalten" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Statischer Filter \u003Ccode>{{filter}}\u003C/code> gefunden in:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Statischer Filter konnte in keiner der derzeit aktivierten Filterlisten gefunden werden" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statischer Filter" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "Netzwerkanfragen {{type}} {{action}},{{br}}deren URL-Adresse mit {{url}} übereinstimmt{{br}}und von {{origin}} stammen,{{br}}{{importance}} ein übereinstimmender Ausnahmefilter existiert." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "zulassen" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "überall" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "aller Typen" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "blockieren" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "selbst wenn" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "außer wenn" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "{{origin}}" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "vom Typ »{{type}}«" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Kontext:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL-Regel" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Typ:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Protokollierung fortsetzen" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Element blockieren …" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Kosmetische Filter" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klick, Strg-Klick" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Erstellen" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Netzwerkfilter" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Auswählen" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Vorschau" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Beenden" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "Skripte dieser Domain" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "Ressourcen aus Drittquellen" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "Frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "Frames aus Drittquellen" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/Bilder aus Drittquellen" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "Skript" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "Skripte aus Drittquellen" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "Alle Ressourcen" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "auf dieser Seite" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Auf dieser Seite blockiert" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "Blockierte Anfragen" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "seit Installation" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Seit der Installation blockiert" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}} %)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Verbundene Domains" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} von {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "Verbundene Domains" - }, - "popupImageRulePrompt": { - "description": "", - "message": "Bilder" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "Inline-Skripte" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Weniger" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Mehr" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Kosmetisches Filtern" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Große Medienelemente" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Pop-up-Fenster" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Externe Schriftarten" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "oder" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klick: uBlock₀ für diese Website ein-/ausschalten.\n\nStrg+Klick: uBlock₀ nur für die aktuelle Seite ausschalten." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Hier klicken, um uBlock₀ für diese Website auszuschalten. \n\nStrg+Klick, um uBlock₀ nur auf dieser Seite auszuschalten." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Hier klicken, um uBlock₀ für diese Website einzuschalten." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Dashboard öffnen" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Globale Regeln: Diese Spalte ist für Regeln, die für alle Websites gelten." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Lokale Regeln: Diese Spalte ist für Regeln, die nur für die aktuelle Website gelten.\nLokale Regeln überschreiben globale Regeln." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Protokoll der Netzwerkanfragen öffnen" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Kosmetisches Filtern für diese Website ein-/ausschalten" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Hier klicken, um kosmetisches Filtern auf dieser Website zu deaktivieren" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Hier klicken, um kosmetisches Filtern auf dieser Website zu aktivieren" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Große Medienelemente auf dieser Website anzeigen/blockieren" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Hier klicken, um große Medienelemente auf dieser Website zu blockieren" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Hier klicken, um große Medienelemente auf dieser Website wieder zuzulassen" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Pop-ups auf dieser Website blockieren/zulassen" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Hier klicken, um alle Pop-ups auf dieser Website zu blockieren" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Hier klicken, um Pop-ups auf dieser Website wieder zuzulassen" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Externe Schriftarten für diese Website blockieren/zulassen" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Hier klicken, um externe Schriftarten auf dieser Website zu blockieren" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Hier klicken, um externe Schriftarten auf dieser Website wieder zuzulassen" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Hier klicken, um JavaScript auf dieser Website zu deaktivieren" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Hier klicken, um JavaScript auf dieser Website wieder zuzulassen" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Element dauerhaft entfernen" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Ein Problem mit dieser Website melden" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Hier klicken, um die Änderungen rückgängig zu machen." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Hier klicken, um die Änderungen dauerhaft zu übernehmen." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Element temporär entfernen" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Version" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Blockiermodus lockern" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Dauerhaft speichern" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "ublock-dynamische-regeln_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Bearbeiten" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Verwerfen" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Speichern" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "In Datei exportieren …" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Regelsyntax: \u003Ccode>Quelle Ziel Typ Aktion\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>Ausführliche Dokumentation\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Liste eigener dynamischer Filterregeln." - }, - "rulesImport": { - "description": "", - "message": "Aus Datei importieren …" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Meine Regeln" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Dauerhafte Regeln" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Rückgängig machen" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sortieren:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Ziel" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Quelle" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Regeltyp" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Temporäre Regeln" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Standardverhalten" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Dieses Standardverhalten kann für jede Website angepasst werden" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Erweitert" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Funktionen, die nur für technisch Versierte bestimmt sind" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Ich bin technisch versiert" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "Erweiterte Einstellungen" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Erscheinungsbild" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Unterstützung für Cloud-Speicher aktivieren" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Platzhalter für blockierte Elemente ausblenden" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Modus für Farbenblinde" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Kontextmenü verwenden, falls verfügbar" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Hyperlink-Überwachung deaktivieren" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Anzahl der blockierten Anfragen auf dem Symbol in der Symbolleiste anzeigen" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Letzte Sicherung:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Letzte Wiederherstellung:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "CSP-Berichte blockieren" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Kosmetisches Filtern deaktivieren" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Medienelemente größer als {{input}} KB blockieren" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Externe Schriftarten blockieren" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "JavaScript deaktivieren" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Einstellungen" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Vorabruf von Webseiten deaktivieren (um jede Verbindung für blockierte Netzwerkanfragen zu verhindern)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Personalisierte Akzentfarbe" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Farbschema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Tooltips deaktivieren" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Kanonische Namen auflösen" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Freigabe der lokalen IP-Adresse via WebRTC verhindern" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Tastenkombination drücken" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Tastenkombinationen" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Dashboard anzeigen" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Protokoll der Netzwerkanfragen anzeigen" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Protokoll der Netzwerkanfragen" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Genutzter Speicherplatz: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Abonnieren" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Folgende URL zu den eigenen Filterlisten hinzufügen?\n\nTitel: »{{title}}«\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Ähnliche Berichte suchen" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Öffnen" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Unterstützung" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Unkenntlich machen" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Neuen Bericht erstellen" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentation" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Lesen Sie die Dokumentation auf \u003Ccode>uBlock/wiki\u003C/code>, um mehr über alle Funktionen von uBlock Origin zu erfahren." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Fragen und Unterstützung" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Antworten auf Fragen und andere Arten der Hilfe werden im Subreddit \u003Ccode>/r/uBlockOrigin\u003C/code> gegeben." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filterprobleme / Website funktioniert nicht" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Bitte melden Sie Filterprobleme mit bestimmten Websites an den \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> Issue Tracker\u003C/span>. \u003Cu>Erfordert ein GitHub-Konto.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Wichtig:\u003C/b> Vermeiden Sie es, andere ähnliche Blocker zusammen mit uBlock Origin zu verwenden, da dies bei einigen Websites zu Filterproblemen führen kann." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tipp:\u003C/b> Vergewissern Sie sich, dass die Filterlisten auf dem aktuellen Stand sind. \u003Cspan data-url=\"logger-ui.html#_\">Protokoll der Netzwerkanfragen\u003C/span> ist das primäre Werkzeug, um filterbezogene Fehler zu diagnostizieren." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Fehlerbericht" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Bitte melden Sie Probleme mit uBlock Origin an den \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> Issue Tracker\u003C/span>. \u003Cu>Erfordert ein GitHub-Konto.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Informationen zur Fehlerbehebung" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Im Folgenden sind einige technische Informationen aufgeführt, die nützlich sein können, wenn Freiwillige versuchen, bei der Lösung eines Problems zu helfen." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Wichtig:\u003C/b> Potenziell private oder sensible Informationen werden standardmäßig unkenntlich gemacht. Unkenntlich gemachte Informationen können das Lösen eines Problems erschweren." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Webseite als »NSFW« kennzeichnen (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">»Unpassend für den Arbeitsplatz«\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Ein Filterproblem melden" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Um die Freiwilligen nicht mit doppelten Meldungen zu belasten, vergewissern Sie sich bitte, dass das Problem nicht schon einmal gemeldet wurde." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filterlisten werden täglich aktualisiert. Bitte vergewissern Sie sich, dass Ihr Problem nicht durch aktuelle Filterlisten behoben wurde." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Bitte überprüfen Sie, ob das Problem nach dem Neuladen der Webseite weiterhin besteht." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Die Webseite …" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Einen Eintrag auswählen --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Zeigt Werbung oder Anzeigenreste" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Enthält Überdeckungen oder andere Belästigungen" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Erkennt uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Hat Datenschutzprobleme" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Funktioniert nicht richtig, wenn uBlock Origin aktiviert ist" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Öffnet unerwünschte Tabs oder Fenster" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Adresse der Webseite:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Kenntlich machen" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Kosmetisches Filtern ein-/ausschalten" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "JavaScript aktivieren/deaktivieren" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Beim Start des Browsers konnte nicht richtig gefiltert werden. Bitte die Seite neu laden, um ein korrektes Filtern zu gewährleisten." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Änderungen übernehmen" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Exportieren …" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "ublock-ausnahmeregeln_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importieren und anfügen …" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Ausnahmeregeln" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Ausnahmeregeln bestimmen, auf welchen Webseiten uBlock Origin deaktiviert werden soll. Ein Eintrag pro Zeile." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/el/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/el/messages.json deleted file mode 100644 index 4d72abb..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/el/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Εφαρμογή αλλαγών" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Ενεργοποίηση των προσαρμοσμένων φίλτρων μου" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Εξαγωγή" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "τα-στατικά-ublock-φίλτρα-μου_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Εισαγωγή και προσάρτηση" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Τα φίλτρα μου" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Επιτρέψτε προσαρμοσμένα φίλτρα που απαιτούν εμπιστοσύνη" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Να μην προστίθενται φίλτρα από μη αξιόπιστες πηγές." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Εφαρμογή αλλαγών" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Αυτόματη ενημέρωση λιστών φίλτρων." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "απαρχαιωμένη." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Ένα URL ανά γραμμή. Γραμμές με το πρόθεμα ‘!’ θα παραβλέπονται. Άκυρα URL θα παρακάμπτονται σιωπηλά." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Διαφημίσεις" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Ενοχλήσεις" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Ειδοποιήσεις για cookies" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Προσαρμοσμένη" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Τοπικά" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Τομείς κακόβουλου λογισμικού" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Πολλαπλών χρήσεων" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Ιδιωτικό απόρρητο" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Περιοχές, γλώσσες" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Γραφικά στοιχεία κοινωνικής δικτύωσης" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Παράβλεψη γενικών κοσμητικών φίλτρων" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "\u003Cp>Τα γενικά κοσμητικά φίλτρα είναι εκείνα τα κοσμητικά φίλτρα που εφαρμόζονται σε όλες τις ιστοσελίδες.\u003Cp>Αν και γίνεται αποτελεσματική διαχείρισή τους από το uBlock₀, τα γενικά κοσμητικά φίλτρα ενδέχεται να καταναλώσουν σημαντική μνήμη και να υπερφορτώσουν τη CPU σε μερικές ιστοσελίδες, ειδικά για μεγάλες μακροχρόνιες.\u003Cp>Η ενεργοποίηση αυτής της επιλογής θα εξαλείψει την υπερφόρτωση μνήμης και CPU στις ιστοσελίδες ως αποτέλεσμα της διαχείρισης γενικών κοσμητικών φίλτρων, ενώ ενδέχεται να μειώσει την κατανάλωση μνήμης του ίδιου του uBlock₀.\u003Cp>Προτείνεται η ενεργοποίηση αυτής της επιλογής στις λιγότερο ισχυρές συσκευές." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Εισαγωγή..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Τελευταία ενημέρωση: {{ago}}.\nΚάντε κλικ για επιβολή ενημέρωσης." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Λίστες αποκλεισμένων hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} σε χρήση από {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} φίλτρα δικτύου+ {{cosmeticFilterCount}} κοσμητικά φίλτρα από:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Ένα σφάλμα δικτύου εμπόδισε την ενημέρωση του πόρου." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Λίστες φίλτρων" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Τα καλλωπιστικά φίλτρα χρησιμεύουν για να κρύβουν εκείνα τα στοιχεία σε μια ιστοσελίδα που οπτικά θεωρούνται ενοχλητικά, και τα οποία δεν μπορούν να αποκλειστούν με τις μηχανές φιλτραρίσματος που βασίζονται σε αιτήματα δικτύου." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Ανάλυση και επιβολή κοσμητικών φίλτρων." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Εκκαθάριση προσωρινής μνήμης κάθε λίστας" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Αναστολή της δραστηριότητας δικτύου μέχρι να φορτωθούν όλες οι λίστες φίλτρων" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Ενημέρωση τώρα" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Ενημέρωση..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "εμφάνιση περιεχομένου" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Δημιουργία αντιγράφου ασφαλείας σε αρχείο..." - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "το-ublock-αντίγραφο-ασφαλείας-μου_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Οι λίστες φίλτρων του uBO φιλοξενούνται ελεύθερα στα ακόλουθα \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Ένα τυχαία επιλεγμένο CDN χρησιμοποιείται όταν πρέπει να ενημερωθεί μια λίστα φίλτρων" - }, - "aboutChangelog": { - "description": "", - "message": "Αρχείο καταγραφής αλλαγών" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Πηγαίος κώδικας (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Συνεισφέροντες" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Εξωτερικές εξαρτήσεις (συμβατές με GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Λίστες φίλτρων" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Σχετικά" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Πολιτική απορρήτου" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Επαναφορά στις προεπιλεγμένες ρυθμίσεις…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Όλες οι ρυθμίσεις σας θα καταργηθούν και θα γίνει επανεκκίνηση του uBlock.\n\nΕπαναφορά του uBlock στις εργοστασιακές ρυθμίσεις;" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Επαναφορά από αρχείο…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Όλες οι ρυθμίσεις σας θα αντικατασταθούν χρησιμοποιώντας τα δεδομένα του αντιγράφου ασφαλείας που δημιουργήθηκε κατά ημ/νία και ώρα: {{time}} και θα ακολουθήσει επανεκκίνηση του uBlock." - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Τα δεδομένα ήταν αδύνατο να αναγνωστούν ή είναι άκυρα" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Πηγαίος κώδικας" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Μεταφράσεις" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Ρυθμίσεις για προχωρημένους" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Προειδοποίηση! Αλλάξτε αυτές τις ρυθμίσεις για προχωρημένους με δική σας ευθύνη." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Προβολή πόρων" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Κάντε κλικ για φόρτωση" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Όνομα αυτής της συσκευής:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Εισαγωγή από cloud storage" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Εισαγωγή αποθηκευμένων στο νέφος ρυθμίσεων και συγχώνευση στις τρέχουσες ρυθμίσεις" - }, - "cloudPush": { - "description": "tooltip", - "message": "Εξαγωγή στο cloud storage" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Στοιχείο μπλοκ στο πλαίσιο..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Εγγραφή σε λιστα φιλτρων" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Να επιτρέπονται προσωρινά μεγάλα στοιχεία πολυμέσων" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Προβολή πηγαίου κώδικα…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ - Πίνακας ελέγχου" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Προειδοποίηση! Έχετε μη αποθηκευμένες αλλαγές" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Παράβλεψη" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Παραμονή" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Επιστροφή" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Κλείσιμο του παραθύρου" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Συνέχεια" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Μόνιμα" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Προσωρινά" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Να μην προειδοποιηθώ ξανά για αυτόν τον ιστότοπο" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Βρέθηκε σε:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "χωρίς παραμέτρους" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Απενεργοποίηση αυστηρής φραγής για το {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "Το uBlock₀ έχει αποτρέψει τη φόρτωση της παρακάτω σελίδας:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Εξαιτίας του ακόλουθου φίλτρου" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Η σελίδα αποκλείστηκε" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Αυτή η καταχώρηση θα πρέπει να είναι τελευταία" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "πριν από {{value}} ημέρες" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "πριν από {{value}} ώρες" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "πριν από {{value}} λεπτά" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "πριν από μια ημέρα" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "πριν από μια ώρα" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "πριν από ένα λεπτό" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Σφάλμα δικτύου: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Επιτέλους, ένας αποτελεσματικός blocker. Ελαφρύς για τον επεξεργαστή και τη μνήμη." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "απενεργοποιημένο" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Εφαρμογή αλλαγών" - }, - "genericBytes": { - "description": "", - "message": "bytes" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Αντιγραφή στο πρόχειρο" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Εναλλαγή κλειδώματος ολίσθησης" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Επαναφορά" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Επιλογή όλων" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Υποβολή" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Σφάλματα: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Όλα" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Παρασκήνιο" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "φιλτράρισμα των καταχωρήσεων" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Τομέας" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Φίλτρο" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Τύπος" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Καθαρισμός καταγραφέα" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Τρέχουσα καρτέλα" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Εναλλαγή του επιθεωρητή DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Συμφραζόμενα" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Φίλτρο" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Λίστα φίλτρων" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Λεπτομέρειες" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Μέρος αιτήματος" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Πλαίσιο ρίζας" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Κανόνας" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Τύπος" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Απλό" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Λίστα" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Πίνακας" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Ο καταγραφέας" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Παύση καταγραφέα (απόρριψη όλων των εισερχόμενων δεδομένων)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Εναλλαγή του αναδυόμενου πίνακα" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Επαναφόρτωση του περιεχόμενου της καρτέλας" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Πρωτομερής" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Τριτομερής" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "επιτρέπεται" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "μπλοκαρισμένο" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "επεξεργασμένο" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Δεν" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Ρυθμίσης φιλτραρίσματος καταγραφέα" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Εναλλαγή φίλτρου καταγραφέα" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Οι καταχωρίσεις στον καταγραφέα που δεν εκπληρούν και τις τρεις συνθήκες θα απορρίπτονται αυτόματα:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Περιεχόμενο" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Φίλτρο/κανόνας" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} μέρος αιτήματος" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Ώρα" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Απόκρυψη στηλών:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Χρησιμοποιήστε {{input}} γραμμές ανά καταχώριση σε κατακόρυφη λειτουργία" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Διατηρήσε καταχωρήσεις από τα {{input}} τελευταία λεπτά" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Διατηρήσε το πολύ {{input}} καταχωρήσεις ανά καρτέλα" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Διατηρήσε το πολύ {{input}} page loads ανά καρτέλα" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Στατικό φίλτρο \u003Ccode>{{filter}}\u003C/code> βρέθηκε σε:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Το στατικό φίλτρο δεν βρέθηκε σε καμία από τις λίστες φίλτρων που έχουν ενεργοποιηθεί αυτήν τη στιγμή" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Στατικό φιλτράρισμα" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} τα δικτυακά αιτήματα {{type}} {{br}} των οποίων η διεύθυνση ταιριάζει με {{url}} {{br}} και προέρχεται από {{origin}},{{br}}{{importance}} υπάρχει ένα ταιριαστό φίλτρο για εξαίρεση." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Αποδοχή" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "από οπουδήποτε" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "οποιοσδήποτε τύπος" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Φραγή" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "ακόμη και αν" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "εκτός όταν" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "από “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "τύπος “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Περιεχόμενο:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Κανόνας URL" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Τύπος:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Κατάργηση παύσης καταγραφέα" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Φραγή στοιχείου..." - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Κοσμητικά φίλτρα" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Κλικ, Ctrl-κλικ" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Δημιουργία" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Φίλτρα δικτύου" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Επιλογή" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Προεπισκόπηση" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Κλείσιμο" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "scripts τρέχοντος ιστότοπου" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "πόροι ιστότοπων τρίτων" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "πλαίσιο" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "frames ιστότοπων τρίτων" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/Εικόνες τρίτων" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "δέσμη ενεργειών" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "scripts ιστότοπων τρίτων" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "όλα" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "σε αυτήν τη σελίδα" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Αποκλεισμένα σε αυτή τη σελίδα" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "αποκλεισμένα αιτήματα" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "από την εγκατάσταση" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Φραγμένο από εγκατάσταση" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ή {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Συνδεδεμένοι τομείς" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} από {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "συνδεδεμένοι τομείς" - }, - "popupImageRulePrompt": { - "description": "", - "message": "Εικόνες" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "inline scripts" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Λιγότερα" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Περισσότερα" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Καλλωπιστικά φίλτρα" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Στοιχεία μεγάλων πολυμέσων" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Αναδυόμενα παράθυρα" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Απομακρυσμένες γραμματοσειρές" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "ή" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Κλικ: απενεργοποίηση/ενεργοποίηση του uBlock₀ για αυτόν τον ιστότοπο.\n\nCtrl+κλικ: απενεργοποίηση του uBlock₀ μόνο για αυτήν την σελίδα." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Κάντε κλικ για απενεργοποίηση του uBlock₀ για αυτήν την ιστοσελίδα.\n\nCtrl+κλικ για απενεργοποίηση του uBlock₀ μόνο σε αυτήν τη σελίδα." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Κάντε κλικ για ενεργοποίηση του uBlock₀ για αυτή την ιστοσελίδα." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Κάντε κλικ για να ανοίξετε τον πίνακα εργαλείων" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Καθολικοί κανόνες: αυτή η στήλη είναι για κανόνες με εφαρμογή σε όλες τις τοποθεσίες." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Τοπικοί κανόνες: αυτή η στήλη είναι για κανόνες με εφαρμογή στην τρέχουσα τοποθεσία μόνο.\nΟι τοπικοί κανόνες παραμερίζουν τους καθολικούς κανόνες." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Πηγαίνετε στο αρχείο καταγραφής αιτημάτων" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Ενεργοποιήστε διακοσμητικό φιλτράρισμα για αυτήν τη σελίδα" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Κάντε κλικ για να απενεργοποιήσετε το καλλωπιστικό φιλτράρισμα σε αυτή την τοποθεσία" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Κάντε κλικ για να ενεργοποιήσετε το καλλωπιστικό φιλτράρισμα σε αυτή την τοποθεσία" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Εναλλαγή της φραγής των μεγάλων στοιχείων πολυμέσων για αυτήν την τοποθεσία" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Κάντε κλικ για αποκλεισμό μεγάλων στοιχείων πολυμέσων σε αυτή την ιστοσελίδα" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Κάντε κλικ για αναίρεση φραγής των μεγάλων στοιχείων πολυμέσων σε αυτή την τοποθεσία" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Παρεμπόδιση αναδυόμενων παραθύρων για αυτόν τον ιστότοπο" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Κάντε κλικ για φραγή όλων των αναδυόμενων σε αυτή την ιστοσελίδα" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Κάντε κλικ για φραγή όλων των αναδυόμενων σε αυτή την ιστοσελίδα" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Ενεργοποιήστε το μπλοκάρισμα απομακρυσμένων γραμματοσειρών για αυτήν την ιστοσελίδα" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Κάντε κλικ για φραγή απομακρυσμένων γραμματοσειρών σε αυτή την ιστοσελίδα" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Κάντε κλικ για να μην μπλοκάρετε πλέον απομακρυσμένες γραμματοσειρές σε αυτήν την ιστοσελίδα" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Κάντε κλικ για να απενεργοποιήσετε το JavaScript σε αυτήν την ιστοσελίδα" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Κάντε κλικ για να μην απενεργοποιείται πλέον η JavaScript σε αυτή την τοποθεσία" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Είσοδος στη λειτουργία επιλογής στοιχείων" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Αναφέρετε ένα πρόβλημα σε αυτόν τον ιστότοπο" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Πατήστε για να αντιστρέψετε τις αλλαγές σας." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Πατήστε για να κάνετε τις αλλαγές σας μόνιμες." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Είσοδος σε λειτουργία εκτέλεσης στοιχείων" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Έκδοση" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Χαλάρωση κατάστασης φραγής" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Επικύρωση" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "οι-δυναμικοί-ublock-κανόνες-μου_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Επεξεργασία" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Απόρριψη" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Αποθήκευση" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Εξαγωγή σε αρχείο…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Συντακτικό κανόνων: \u003Ccode>προέλευση προορισμός τύπος ενέργεια\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>πλήρης τεκμηρίωση\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Λίστα δυναμικών κανόνων φιλτραρίσματος." - }, - "rulesImport": { - "description": "", - "message": "Εισαγωγή από αρχείο…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Οι κανόνες μου" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Μόνιμοι κανόνες" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Επαναφορά" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Ταξινόμηση:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Προορισμός" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Προέλευση" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Τύπος κανόνα" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Προσωρινοί κανόνες" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Προεπιλεγμένη συμπεριφορά" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Αυτές οι προεπιλεγμένες συμπεριφορές μπορούν να παρακαμφθούν ανά τοποθεσία" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Για προχωρημένους" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Χαρακτηριστικά κατάλληλα μόνο για τεχνικούς χρήστες." - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Είμαι προχωρημένος χρήστης (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>Aπαραίτητη ανάγνωση\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "ρυθμίσεις για προχωρημένους" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Εμφάνιση" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Ενεργοποίηση υποστήριξης cloud storage" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Απόκρυψη κρατημένων πεδίων από αποκλεισμένα στοιχεία" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Λειτουργία φιλική προς χρήστες με αχρωματοψία" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Να γίνεται χρήση του αναδυόμενου μενού, όπου ενδείκνυται" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Απενεργοποίηση ελέγχου/διόπτευσης υπερσυνδέσμων" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Εμφάνιση του αριθμού αποκλεισμένων αιτημάτων στο εικονίδιο" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Τελευταίο αντίγραφο ασφαλείας:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Τελευταία ανάκτηση:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Φραγή αναφορών CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Απενεργοποίηση διακοσμητικού φιλτραρίσματος" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Φραγή στοιχείων πολυμέσων μεγαλύτερων από {{input:number}} kB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Φραγή απομακρυσμένων γραμματοσειρών" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Απενεργοποίηση JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Ρυθμίσεις" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Απενεργοποίηση προ-φόρτωσης (για να αποτραπεί κάθε σύνδεση σε αποκλεισμένες αιτήσεις δικτύου)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Προσαρμοσμένο χρώμα έμφασης" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Θέμα" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Απενεργοποίηση υποδείξεων" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Ξεσκέπασμα/εμφάνιση κανονικών ονομάτων CNAME" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Αποτρέψτε το WebRTC από το να διαρρέει την τοπική διεύθυνση IP" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Πληκτρολογήστε μια συντόμευση" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Συντομεύσεις" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Προβολή Πίνακα Εργαλείων" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Προβολή Αρχείου Καταγραφών Αιτημάτων Δικτύου" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ - Καταγραφή αιτημάτων δικτύου" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Χώρος σε χρήση: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Εγγραφή" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Προσθήκη της ακόλουθης διεύθυνσης URL στις λίστες προσαρμοσμένων φίλτρων σας;\n\nΤίτλος: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Βρείτε παρόμοιες αναφορές" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Άνοιγμα" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Υποστήριξη" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Δημιουργία νέας αναφοράς" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Οδηγίες" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Διαβάστε τις οδηγίες στο \u003Ccode>uBlock/wiki\u003C/code> για να μάθετε για όλες τις δυνατότητες του uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Ερωτήσεις και υποστήριξη" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Απαντήσεις σε ερωτήσεις και άλλα είδη υποστήριξης βοήθειας παρέχονται στο subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Προβλήματα φίλτρου/ιστότοπος είναι κατεστραμμένος" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Αναφέρετε προβλήματα φίλτρου με συγκεκριμένους ιστότοπους στο \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. Απαιτείται λογαριασμός GitHub." - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Σημαντικό:\u003C/b> Αποφύγετε τη χρήση άλλων blocker με παρόμοιο σκοπό μαζί με το uBlock Origin, καθώς αυτό μπορεί να προκαλέσει προβλήματα φιλτραρίσματος σε συγκεκριμένους ιστότοπους." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Συμβουλές:\u003C/b> Βεβαιωθείτε ότι οι λίστες φίλτρων σας είναι ενημερωμένες. \u003Cspan data-url=\"logger-ui.html#_\">Ο καταγραφέας\u003C/span> είναι το κύριο εργαλείο για τη διάγνωση προβλημάτων που σχετίζονται με το φίλτρο." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Αναφορά σφαλμάτων" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Αναφέρετε προβλήματα με το ίδιο το uBlock Origin στο \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. Απαιτείται λογαριασμός GitHub." - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Πληροφορίες αντιμετώπισης προβλημάτων" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Παρακάτω υπάρχουν τεχνικές πληροφορίες που μπορεί να είναι χρήσιμες όταν εθελοντές προσπαθούν να σας βοηθήσουν να λύσετε ένα πρόβλημα." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Σημαντικό:\u003C/b> Πιθανώς ιδιωτικές ή ευαίσθητες πληροφορίες αναπροσαρμόζονται από προεπιλογή. Οι αναδιατυπωμένες πληροφορίες ενδέχεται να δυσκολέψουν την επίλυση ενός προβλήματος." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Επισημάνετε την ιστοσελίδα ως “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Αναφέρετε ένα πρόβλημα φίλτρου" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Για να αποφύγετε την επιβάρυνση των εθελοντών με διπλές αναφορές, βεβαιωθείτε ότι το ζήτημα δεν έχει ήδη αναφερθεί." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Οι λίστες φίλτρων ενημερώνονται καθημερινά. Βεβαιωθείτε ότι το πρόβλημά σας δεν έχει ήδη αντιμετωπιστεί στις πιο πρόσφατες λίστες φίλτρων." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Βεβαιωθείτε ότι το πρόβλημα εξακολουθεί να υπάρχει μετά τη φόρτωση εκ νέου της προβληματικής ιστοσελίδας." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Η ιστοσελίδα..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Επιλέξτε μια καταχώρηση --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Εμφανίζει διαφημίσεις ή υπολείμματα διαφημίσεων" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Έχει επικαλύψεις ή άλλες ενοχλήσεις" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ανιχνεύει το uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Έχει ζητήματα που σχετίζονται με το απόρρητο" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Μη λειτουργικό όταν το uBlock Origin είναι ενεργοποιημένο" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ανοίγει ανεπιθύμητες καρτέλες ή παράθυρα" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Διεύθυνση της ιστοσελίδας:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Εναλλαγή διακοσμητικού φιλτραρίσματος" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Εναλλαγή JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Δεν ήταν δυνατό το σωστό φιλτράρισμα κατά την εκκίνηση του προγράμματος περιήγησης.\nΦορτώστε ξανά τη σελίδα για να διασφαλίσετε το σωστό φιλτράρισμα" - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Εφαρμογή αλλαγών" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Εξαγωγή" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "ublock-έμπιστες-τοποθεσίες_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Εισαγωγή και προσάρτηση" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Έμπιστες τοποθεσίες" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Η λίστα σας με τα ονόματα κόμβων (host names) στα οποία το uBlock θα είναι απενεργοποιημένο. Μια καταχώρηση ανά γραμμή. Άκυρα ονόματα κόμβων θα παρακάμπτονται σιωπηλά." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/en/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/en/messages.json deleted file mode 100644 index 7a2ff88..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/en/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Apply changes" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Export…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Import and append…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "My filters" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Apply changes" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Auto-update filter lists" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Out of date." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "One URL per line. Invalid URLs will be silently ignored." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Ads" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Annoyances" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Custom" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Built-in" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Malware protection, security" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multipurpose" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privacy" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regions, languages" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignore generic cosmetic filters" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Import…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Last update: {{ago}}.\nClick to force an update." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} used out of {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "A network error prevented the resource from being updated." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filter lists" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the network request-based filtering engines." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Parse and enforce cosmetic filters" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Purge all caches" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspend network activity until all filter lists are loaded" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Update now" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Updating…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "view content" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Back up to file…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO's own filter lists are freely hosted on the following \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "A randomly picked CDN is used when a filter list needs to be updated." - }, - "aboutChangelog": { - "description": "", - "message": "Changelog" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Source code (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Contributors" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "External dependencies (GPLv3-compatible):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filter lists" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "About" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Privacy policy" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Reset to default settings…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Restore from file…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "The data could not be read or is invalid" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Source code" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Translations" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Advanced settings" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Warning! Change these advanced settings at your own risk." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Asset viewer" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Click to load" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "This device name:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Import from cloud storage" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Import from cloud storage and merge with current settings" - }, - "cloudPush": { - "description": "tooltip", - "message": "Export to cloud storage" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Block element in frame…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subscribe to filter list…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Temporarily allow large media elements" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "View source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Dashboard" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Warning! You have unsaved changes" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignore" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Stay here" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Go back" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Close this window" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Proceed" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanently" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Temporarily" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Found in:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "without parameters" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Disable strict blocking for {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin has prevented the following page from loading:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Because of the following filter:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Page blocked" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} days ago" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} hours ago" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} minutes ago" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "a day ago" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "an hour ago" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "a minute ago" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Network error: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Finally, an efficient blocker. Easy on CPU and memory." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "off" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Apply changes" - }, - "genericBytes": { - "description": "", - "message": "bytes" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Copy to clipboard" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Toggle locked scrolling" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Revert" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Select all" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Submit" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "All" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Tabless" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filter logger content" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domain" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filter" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Type" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Clear logger" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Current tab" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Toggle the DOM inspector" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Context" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filter list" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Details" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partyness" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Root context" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Rule" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Type" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Plain" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "List" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Table" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: The logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pause logger (discard all incoming data)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Toggle the popup panel" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Reload the tab content" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1st-party" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3rd-party" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "allowed" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blocked" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modified" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Not" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Logger filtering options" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Toggle logger filtering" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Context" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/rule" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partyness" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Time" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Hide columns:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Use {{input}} lines per entry in vertically expanded mode" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Preserve entries from the last {{input}} minutes" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Preserve at most {{input}} entries per tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preserve at most {{input}} page loads per tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Static filter \u003Ccode>{{filter}}\u003C/code> found in:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Static filter could not be found in any of the currently enabled filter lists" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Static filter" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Allow" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "from anywhere" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "any type" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Block" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "even if" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "except when" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "from “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "type “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Context:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL rule" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Type:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Unpause logger" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Block element…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Cosmetic filters" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Click, Ctrl-click" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Create" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Network filters" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Pick" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Preview" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Quit" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1st-party scripts" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "3rd-party" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "3rd-party frames" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "3rd-party CSS/images" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "3rd-party scripts" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "all" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "on this page" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blocked on this page" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "requests blocked" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "since install" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blocked since install" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domains connected" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} out of {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domains connected" - }, - "popupImageRulePrompt": { - "description": "", - "message": "images" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "inline scripts" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Less" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "More" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Cosmetic filtering" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Large media elements" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Pop-up windows" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Remote fonts" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "or" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Click to disable uBlock₀ for this site.\n\nCtrl+click to disable uBlock₀ only on this page." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Click to enable uBlock₀ for this site." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Open the dashboard" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Global rules: this column is for rules which apply to all sites." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Open the logger" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Toggle cosmetic filtering for this site" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click to disable cosmetic filtering on this site" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click to enable cosmetic filtering on this site" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Toggle the blocking of large media elements for this site" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click to block large media elements on this site" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click to no longer block large media elements on this site" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Toggle the blocking of all popups for this site" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Click to block all popups on this site" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Click to no longer block all popups on this site" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Toggle the blocking of remote fonts for this site" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Click to block remote fonts on this site" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Click to no longer block remote fonts on this site" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Click to disable JavaScript on this site" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Click to no longer disable JavaScript on this site" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Enter element picker mode" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Report an issue on this website" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Click to revert your changes." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Click to make your changes permanent." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Enter element zapper mode" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Version" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relax blocking mode" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Commit" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Edit" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Discard" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Save" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Export to file…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Rule syntax: \u003Ccode>source destination type action\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>full documentation\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "List of your dynamic filtering rules." - }, - "rulesImport": { - "description": "", - "message": "Import from file…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "My rules" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Permanent rules" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Revert" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sort:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destination" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Source" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Rule type" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Temporary rules" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Default behavior" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "These default behaviors can be overridden on a per-site basis" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Advanced" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Features suitable only for technical users" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "I am an advanced user" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "advanced settings" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Appearance" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Enable cloud storage support" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Hide placeholders of blocked elements" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Color-blind friendly" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Make use of context menu where appropriate" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Disable hyperlink auditing" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Show the number of blocked requests on the icon" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Last backup:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Last restore:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Block CSP reports" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Disable cosmetic filtering" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Block media elements larger than {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Block remote fonts" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Disable JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Settings" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Disable pre-fetching (to prevent any connection for blocked network requests)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Custom accent color" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Theme" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Disable tooltips" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Uncloak canonical names" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Prevent WebRTC from leaking local IP addresses" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Type a shortcut" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Shortcuts" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Show Dashboard" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Show Logger" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Logger" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Storage used: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Subscribe" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Add the following URL to your custom filter lists?\n\nTitle: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Find similar reports" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Open" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Support" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Create new report" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentation" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Read the documentation at \u003Ccode>uBlock/wiki\u003C/code> to learn about all of uBlock Origin's features." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Questions and support" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter issues/website is broken" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Bug report" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Troubleshooting Information" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Report a filter issue" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "The web page…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pick an entry --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shows ads or ad leftovers" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has privacy-related issues" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfunctions when uBlock Origin is enabled" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Opens unwanted tabs or windows" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Address of the web page:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Apply changes" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Export…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Import and append…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Trusted sites" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/en_GB/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/en_GB/messages.json deleted file mode 100644 index ddb8fc9..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/en_GB/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Apply changes" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Export" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Import and append" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "My filters" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Apply changes" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Auto-update filter lists" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Out of date." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "One URL per line. Invalid URLs will be silently ignored." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Ads" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Annoyances" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Custom" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Built-in" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Malware domains" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multi-purpose" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privacy" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regions, languages" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignore generic cosmetic filters" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Import…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Last update: {{ago}}.\nClick to force an update." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} used out of {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "A network error prevented the resource from being updated." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filter lists" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which cannot be blocked by the network request-based filtering engines." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Parse and enforce cosmetic filters" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Purge all caches" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspend network activity until all filter lists are loaded" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Update now" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Updating…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "view content" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Back up to file" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO's own filter lists are freely hosted on the following \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "A randomly picked CDN is used when a filter list needs to be updated" - }, - "aboutChangelog": { - "description": "", - "message": "Changelog" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Source code (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Contributors" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "External dependencies (GPLv3-compatible):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filter lists" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "About" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Privacy policy" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Reset to default settings…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Restore from file…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "The data could not be read or is invalid" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Source code" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Translations" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Advanced settings" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Warning! Change these advanced settings at your own risk." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Asset viewer" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Click to load" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "This device name:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Import from cloud storage" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Import from cloud storage and merge with current settings" - }, - "cloudPush": { - "description": "tooltip", - "message": "Export to cloud storage" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Block element in frame…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subscribe to filter list…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Temporarily allow large media elements" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "View source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Dashboard" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Warning! You have unsaved changes" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignore" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Stay" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Go back" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Close this window" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Proceed" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanently" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Temporarily" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Found in:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "without parameters" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Disable strict blocking for {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin has prevented the following page from loading:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Because of the following filter:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Page blocked" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} days ago" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} hours ago" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} minutes ago" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "a day ago" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "an hour ago" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "a minute ago" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Network error: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Finally, an efficient blocker. Easy on CPU and memory." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "off" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Apply changes" - }, - "genericBytes": { - "description": "", - "message": "bytes" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Copy to clipboard" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Toggle locked scrolling" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Revert" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Select all" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Submit" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "All" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Tabless" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filter logger content" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domain" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filter" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Type" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Clear logger" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Current tab" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Toggle the DOM inspector" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Context" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filter list" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Details" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partyness" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Root context" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Rule" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Type" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Plain" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "List" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Table" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: The logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pause logger (discard all incoming data)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Toggle the pop-up panel" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Reload the tab content" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1st-party" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3rd-party" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "allowed" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blocked" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modified" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Not" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Logger filtering options" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Toggle logger filtering" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Logger entries which do not fulfil all three conditions below will be automatically discarded:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Context" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/rule" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partyness" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Time" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Hide columns:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Use {{input}} lines per entry in vertically expanded mode" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Preserve entries from the last {{input}} minutes" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Preserve at most {{input}} entries per tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preserve at most {{input}} page loads per tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Static filter \u003Ccode>{{filter}}\u003C/code> found in:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Static filter could not be found in any of the currently enabled filter lists" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Static filter" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Allow" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "from anywhere" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "any type" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Block" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "even if" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "except when" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "from “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "type “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Context:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL rule" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Type:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Unpause logger" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Block element…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Cosmetic filters" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Click, Ctrl-click" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Create" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Network filters" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Pick" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Preview" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Quit" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1st-party scripts" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "3rd-party" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "3rd-party frames" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "3rd-party CSS/images" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "3rd-party scripts" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "all" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "on this page" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blocked on this page" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "requests blocked" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "since install" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blocked since install" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domains connected" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} out of {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domains connected" - }, - "popupImageRulePrompt": { - "description": "", - "message": "images" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "inline scripts" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Less" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "More" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Cosmetic filtering" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Large media elements" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Pop-up windows" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Remote fonts" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "or" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Click to disable uBlock₀ for this site.\n\nCtrl+click to disable uBlock₀ only on this page." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Click to enable uBlock₀ for this site." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Open the dashboard" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Global rules: this column is for rules which apply to all sites." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Open the logger" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Toggle cosmetic filtering for this site" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click to disable cosmetic filtering on this site" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click to enable cosmetic filtering on this site" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Toggle the blocking of large media elements for this site" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click to block large media elements on this site" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click to no longer block large media elements on this site" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Toggle the blocking of all pop-ups for this site" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Click to block all pop-ups on this site" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Click to no longer block all pop-ups on this site" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Toggle the blocking of remote fonts for this site" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Click to block remote fonts on this site" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Click to no longer block remote fonts on this site" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Click to disable JavaScript on this site" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Click to no longer disable JavaScript on this site" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Enter element picker mode" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Report an issue on this website" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Click to revert your changes." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Click to make your changes permanent." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Enter element zapper mode" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Version" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relax blocking mode" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Commit" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Edit" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Discard" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Save" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Export to file" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Rule syntax: \u003Ccode>source destination type action\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>full documentation\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "List of your dynamic filtering rules." - }, - "rulesImport": { - "description": "", - "message": "Import from file…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "My rules" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Permanent rules" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Revert" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sort:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destination" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Source" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Rule type" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Temporary rules" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Default behaviour" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "These default behaviours can be overridden on a per-site basis" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Advanced" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Features suitable only for technical users" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "I am an advanced user" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "advanced settings" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Appearance" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Enable cloud storage support" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Hide placeholders of blocked elements" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Colour-blind friendly" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Make use of context menu where appropriate" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Disable hyperlink auditing" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Show the number of blocked requests on the icon" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Last backup:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Last restore:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Block CSP reports" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Disable cosmetic filtering" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Block media elements larger than {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Block remote fonts" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Disable JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Settings" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Disable pre-fetching (to prevent any connection for blocked network requests)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Custom accent colour" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Theme" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Disable tooltips" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Uncloak canonical names" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Prevent WebRTC from leaking local IP addresses" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Type a shortcut" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Shortcuts" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Show Dashboard" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Show Logger" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Logger" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Storage used: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Subscribe" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Add the following URL to your custom filter lists?\n\nTitle: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Find similar reports" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Open" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Support" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Create new report" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentation" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Read the documentation at \u003Ccode>uBlock/wiki\u003C/code> to learn about all of uBlock Origin's features." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Questions and support" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter issues/website is broken" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Bug report" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Troubleshooting Information" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Report a filter issue" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "The web page…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pick an entry --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shows ads or ad leftovers" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has privacy-related issues" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfunctions when uBlock Origin is enabled" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Opens unwanted tabs or windows" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Address of the web page:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Apply changes" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Export" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Import and append" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Trusted sites" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/eo/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/eo/messages.json deleted file mode 100644 index e20a6f1..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/eo/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Apliki ŝanĝojn" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Eksporti" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "miaj-statikaj-ublock-filtriloj_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importi kaj postaldoni" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Miaj filtriloj" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Ne aldonu filtrilojn el ne fidindaj fontoj." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Apliki ŝanĝojn" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Ĝisdatigi listojn de filtriloj aŭtomate." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "malaktuala" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Unu regulo por ĉiu linio. Prefiksitaj linioj kun ‘!’ estos ignorataj. Nevalidaj ligiloj estos ignorataj silente." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Reklamoj" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Ĝenoj" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Tajlorita" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Interna" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Domajno kun fiprogramaro" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Plurcela" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privateco" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regionoj, lingvoj" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignori ĝeneralajn ornamajn filtrilojn" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Ĝenerikaj kozmetikaj filtriloj estas tiuj kozmetikaj filtriloj, kiuj estas intencitaj esti aplikitaj sur ĉiuj retejoj. Aktivigante tiun opcion, oni eliminigos la memoran kaj procesorecan ŝarĝon, kiu estas aldonita al retpaĝoj pro la pritraktado de ĝenerikaj kozmetikaj filtriloj.\n\nEstas rekomendite aktivigi tiun opcion sur aparatoj ne estas potencaj." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importi..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Lasta ĝisdatigo: {{ago}}" - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} estas uzita de {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} retaj filtriloj kaj {{cosmeticFilterCount}} ornamaj filtriloj de:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Reta eraro malhelpis ĝisdatigon de la resurso." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Listoj de filtriloj" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "\u003Cp>Ĉi tiu opcio ŝaltas la analizadon kaj eltrudadon de la \u003Ca href=\"https://adblockplus.org/en/faq_internal#elemhide\">Adblock Plus-kongruaj “elementokaŝadaj” filtriloj\u003C/a>. Ĉi tiuj filtriloj estas nur ornama kaj servas por kaŝi elementojn en retpaĝoj kiuj estas opiniite vidaj ĝenaĵoj kaj ne blokeblaj de la reta peta filtrado.\u003C/p>\u003Cp>Ŝalti ĉi tiun trajton pligrandigas la memoruzadon de uBlock₀.\u003C/p>" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Analizi kaj eltrudi ornamajn filtrilojn." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Malplenigi ĉiujn kaŝmemorojn" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspendu retan aktivecon ĝis ĉiuj filtraj listoj estas ŝargitaj." - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Ĝisdatigi nun" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Ĝisdatigo..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "vidi enhavon" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "kB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Savkopii al dosiero" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "mia-ublock-savkopio_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "La proprajn filtrilojn de uBO gastigas la jenaj \u003Ca href=\"https://en.wikipedia.org/wiki/Content_delivery_network\">enhavo-liverantaj retoj\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Kiam filtrilo postulas ĝisdatigon, hazarde elektita enhavo-liveranta reto estas uzata." - }, - "aboutChangelog": { - "description": "", - "message": "Ŝanĝoprotokolo" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Fontkodo (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Kontribuantoj" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Eksteraj dependaĵoj (kongruaj kun GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Listoj de filtriloj" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Pri" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Reguloj pri privateco" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Remeti normajn agordojn..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Ĉiuj viaj agordoj estos forigita kaj uBlock₀ restartigos.\n\nĈu vi volas reagordi uBlock₀ al la defaŭltaj agordoj?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Restaŭri el dosiero..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Ĉiuj viaj agordoj estos anstataŭigitaj per via savkopio kreita je {{time}} kaj uBlock₀ restartigos.\n\nĈu vi volas anstataŭigi ĉiujn de viaj ekzistantaj agordoj uzita la savkopio?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "La datumoj ne legeblas aŭ ĝi estas nevalida" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Fontkodo" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Tradukoj" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Altgradaj agordoj" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Averto! Tiuj altnivelaj opcioj esta eble danĝeraj." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Montrilo de rimedoj" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Alklaku por ŝarĝi" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Nomo de ĉi tiu aparato:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Importi el nuba konservado" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importi el nuba konservado kaj kunfandi kun nunaj agordoj" - }, - "cloudPush": { - "description": "tooltip", - "message": "Eksporti al nuba konservado" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Bloki elementon en kadro…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Aboni filtrilon…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Permesi grandajn aŭdvideajn elementojn nedaŭre" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Vidi fontkodon..." - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Panelo" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Averto! Vi havas nekonservitajn ŝanĝojn" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignori" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Resti" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Reen" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Fermi ĉi tiun fenestron" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Procedi" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Daŭra" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Nedaŭra" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Trovita en:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "sen parametroj" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Malŝalti striktan blokadon por {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock₀ preventis la ŝarĝadon de la sekva paĝo:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Pro la sekva filtrilo" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Paĝo blokita" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "antaŭ {{value}} tagoj" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "antaŭ {{value}} horoj" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "antaŭ {{value}} minutoj" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "antaŭ 1 tago" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "antaŭ 1 horo" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "antaŭ 1 minuto" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "{{url}} ne konekteblas" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Finfine rendimenta reklamoblokilo. Afabla por ĉefprocesoro kaj memoro." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "ne aktiva" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Apliki ŝanĝojn" - }, - "genericBytes": { - "description": "", - "message": "bajtoj" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopii al tondujo" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Baskuligi ŝlositan rulumadon" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Malfari" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Elekti ĉiujn" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Sendi" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Eraroj: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Ĉio" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Fonaj petoj" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtri protokolerojn" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domajno" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filtrilo" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Tipo" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "Ligilo" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Klariĝi protokolilon" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Nuna langeto" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Baskuligi la DOM-inspektilon" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Kunteksto" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filtrilo" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Listo de filtriloj" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Detaloj" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Nivelo de rekteco" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Ĉefa kunteksto" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Regulo" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Tipo" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "Retadreso" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Simpla" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Listo" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabulo" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "Dokumentaro de uBlock Origin: la protokolilo" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Paŭzigi protokolilon (forĵeti ĉiujn envenantajn datenojn)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Baskuligi la ŝprucpanelon" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Reŝargi la langetan enhavon" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "rekta" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "nerekta" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "permesata" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blokita" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modifita" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Ne" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Opcioj pri filtrado de protokolilo" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Baskuligi filtradon de protokolilo" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Logeto-enskriboj, kiuj ne plenumas ĉiujn tri kondiĉojn sube, estos aŭtomate forĵetitaj:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} kunteksto" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} filtrilo/regulo" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} rekteco" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} tempo" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Kaŝi kolumnojn:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Use {{input}} lines per entry in vertically expanded mode" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Preserve entries from the last {{input}} minutes" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Preserve at most {{input}} entries per tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preserve at most {{input}} page loads per tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Statika filtrilo \u003Ccode>{{filter}}\u003C/code> estas trovita en:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Stata filtro ne povis esti trovita en iu ajn el la nuntempe aktivigitaj filtro-listoj." - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statika filtrado" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} retaj petoj de {{type}} {{br}}kiu ligilo estas la sama kiel {{url}} {{br}}kaj kiu devenas el {{origin}},{{br}}{{importance}} estas kongrua escepta filtrilo." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Permesi" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "de ie ajn" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "ajna tipo" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Bloki" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "eĉ se" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "krom se" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "de “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "tipo “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Kunteksto:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Dinamika filtrado de ligiloj" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Tipo:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Malpaŭzigi protokolilon" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Bloki elementon" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Ornamaj filtriloj" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klako, Stir-klako" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Krei" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Retaj filtriloj" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Elekti" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Antaŭrigardo" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Forlasi" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "Skriptoj de propraj liverantoj" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "De eksteraj liverantoj" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "kadro" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "Kadroj de eksteraj liverantoj" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/bildoj de eksteraj liverantoj" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "skripto" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "Skriptoj de eksteraj liverantoj" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "ĉio" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "en ĉi tiu paĝo" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokita ĉe ĉi tiu paĝo" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "blokitaj petoj" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "ekde instalado" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokita ekde instalo" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} aŭ {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Konektitaj domajnoj" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} de {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "konektitaj domajnoj" - }, - "popupImageRulePrompt": { - "description": "", - "message": "bildoj" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "entekstaj skriptoj" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Malpli" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Pli" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Ornama filtrado" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Grandaj aŭdvidaj elementoj" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Ŝprucfenestroj" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Foraj tiparoj" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "aŭ" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klako: malŝalti/ŝalti uBlock₀ por ĉi tiu retejo.\n\nCtrl+klako: malŝalti uBlock₀ nur en ĉi tiu paĝo." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Alklaku premante la stirklavo por malŝalti uBlock₀ nur en tiu ĉi retejo." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Alklaku por aktivigi uBlock₀ en tiu ĉi retejo." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Klaku por malfermi la panelon" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Ĝeneralaj reguloj: ĉi tiu kolumno estas por reguloj, kiuj aplikas al ĉiuj retejoj." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Lokaj reguloj: ĉi tiu kolumno estas por reguloj, kiuj aplikas nur al la nuna retejo.\nLokaj reguloj transpasas ĝeneralajn regulojn." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Malfermi la protokolilon" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Baskuligi ornaman filtradon por ĉi tiu retejo" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Alklaku por malaktivigi kosmetikan filtradon en tiu ĉi retejo" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Alklaku por aktivigi kosmetikan filtradon en tiu ĉi retejo" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Baskuligi la blokadon de grandaj aŭdvideaj elementoj por ĉi tiu retejo" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Alklaku por bloki grandajn aŭdvidajn elementojn en tiu ĉi retejo" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Alklaku por ne plu bloki grandajn aŭdvidajn elementojn en tiu ĉi retejo" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Baskuligi la blokadon de ŝprucfenestroj por ĉi tiu retejo" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Alklaku por bloki ĉiujn ŝprucfenestrojn en tiu ĉi retejo" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Alklaku por ne plu bloki ĉiujn ŝprucfenestrojn en tiu ĉi retejo" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Baskuligi la blokadon de foraj tiparoj por ĉi tiu retejo" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Alklaku por bloki forajn tiparojn en tiu ĉi retejo" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Alklaku por ne plu bloki forajn tiparojn en tiu ĉi retejo" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Alklaku por malaktivigi JavaScript en tiu ĉi retejo" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Alklaku por ne plu malaktivigi JavaScript en tiu ĉi retejo" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Malfermi reĝimon de elementoselektilo" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Raporti problemon ĉe ĉi tiu retejo" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Klaku por malfari viajn ŝanĝojn." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Klaku por fari viajn ŝanĝojn konstante." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Eniri la reĝimon de forigo de elementoj" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versio" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Malstriktigi blokadan reĝimon" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Apliki" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "miaj-dinamikaj-ublock-reguloj_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Redakti" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Nuligi" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Konservi" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Eksporti al dosiero" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Sintakso de reguloj: \u003Ccode>fonto celo tipo ago\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>kompleta dokumentado\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Listo de viaj dinamikaj filtradaj reguloj." - }, - "rulesImport": { - "description": "", - "message": "Importi el dosiero..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Miaj reguloj" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Daŭraj reguloj" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Malfari" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Ordigi:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Celo" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Fonto" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Speco de regulo" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Nedaŭraj reguloj" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Norma konduto" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Oni povas superregi la normajn kondutojn depende de la retejo" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Altnivelaĵoj" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Funkcioj taŭgaj nur por spertuloj" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Mi estas sperta uzanto" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "altgradaj agordoj" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Aspekto" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Ŝalti subtenon por nelokdependa konservado" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Kaŝi lokokupilojn de blokitaj elementoj" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Afabla por kolorblinduloj" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Uzi kuntekstan menuon laŭeble" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Malŝalti ekzamenadon de ligiloj" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Montri la nombron de la blokitaj petoj sur la bildsimbolo" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Lasta savkopio:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Lasta restaŭro:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Bloki CSP-raportojn" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Malŝalti ornaman filtradon" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Bloki aŭdvideajn elementojn pli granda ol {{input:number}} kB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Bloki forajn tiparojn" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Malŝalti JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Agordoj" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Malŝalti antaŭvenigadon (por preventi ajnan konekton de blokitaj retaj petoj)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Propra akcenta koloro" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Etoso" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Malŝalti butonajn informojn" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Malkaŝi ĉefnomojn" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Preventi likado de WebRTC de lokaj IP-adresoj" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Tajpu alirklavon" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Alirklavoj" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Montri panelon" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Montri protokolilon" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Protokolilo" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Uzata memoro: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Sekvi" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: Ĉu vi volas aldoni la sekvan ligilon al viaj tajloritaj listoj de filtriloj?\n\nTitolo: \"{{title}}\"\nLigilo: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Serĉi similajn raportojn" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Malfermi" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Subteno" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Krei novan raporton" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentaro" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Legu la dokumentaron ĉe \u003Ccode>uBlock/wiki\u003C/code> por lerni ĉiujn funkciojn de uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Demandoj kaj subtenado" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Problemoj pri filtrilo / la retejo misfunkcias" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Raportu problemojn pri specifaj retejoj ĉe la \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">cimspurilo \u003Ccode>uBlockOrigin/uAssets\u003C/code>\u003C/span>. \u003Cu>Tio postulas konton ĉe GitHub.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Raporto pri cimo" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Raportu problemojn pri uBlock Origin mem ĉe la \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">cimspurilo \u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>\u003C/span>. \u003Cu>Tio postulas konton ĉe GitHub.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Informoj pri problemsolvado" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Jen teknikaj informoj eble utilaj al tiuj volontuloj, kiuj helpas vin solvi problemon." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Marki la paĝon kiel «\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">nelabortaŭgan\u003C/a>»" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Raporti problemon pri filtrado" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "La retpaĝo…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Elektu ion --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Montras reklamojn aŭ restaĵojn de reklamoj" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Havas plustavolojn aŭ aliajn ĝenaĵojn" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detektas uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Havas problemojn pri privateco" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Misfunkcias, se uBlock Origin estas ŝaltita " - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfermas nedeziratajn langetojn aŭ fenestrojn" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Adreso de la retpaĝo:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Baskuligi ornaman filtradon" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Baskuli Javascript-kodoj" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Apliki ŝanĝojn" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Eksporti" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "mia-ublock-blanklisto_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importi kaj postaldoni" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Permeslisto" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Via listo de gastignomoj por kiuj uBlock₀ estos malŝaltata. Unu gastignomo por ĉiu linio. Nevalidaj gastignomoj estos ignorataj silente." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/es/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/es/messages.json deleted file mode 100644 index 760c23b..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/es/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Aplicar cambios" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Habilitar mis filtros personalizados" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Exportar…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "ublock-mis-filtros-estaticos_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importar y anexar…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Mis filtros" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Permitir filtros personalizados que requieran confianza" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "No añadir filtros de fuentes no confiables." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Aplicar cambios" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Actualizar automáticamente las listas de filtros" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Desactualizado." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Una URL por línea. Las URL no válidas serán ignoradas." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Anuncios" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Elementos molestos" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Avisos de cookies" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Personalizado" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Incluidos" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Protección de malware, seguridad" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multiusos" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privacidad" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regiones, idiomas" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Widgets sociales" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignorar los filtros cosméticos genéricos" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Los filtros cosméticos genéricos son aquellos filtros cosméticos que se aplican a todos los sitios web. Al habilitar esta opción se elimina el riesgo de sobrecarga a la CPU y exceso de uso de la memoria que resulta del procesamiento de los filtros cosméticos genéricos.\n\nSe recomienda habilitar esta opción en dispositivos poco potentes." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importar…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Última actualización: {{ago}}.\nHaz clic para actualizar ahora." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lista de dominios bloqueados" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} utilizados de {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} filtros de red y {{cosmeticFilterCount}} filtros cosméticos de:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Un error de red impide que se actualicen los recursos." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Listas de filtros" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Los filtros cosméticos sirven para ocultar elementos que se consideran una molestia visual en una página web, y que no pueden ser bloqueados por los motores de filtrado basados ​​en peticiones de red." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Analizar y aplicar filtros cosméticos" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Vaciar todas las memorias caché" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspender actividad de la red hasta que todas las listas de filtros estén cargadas" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Actualizar ahora" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Actualizando…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "ver contenido" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Respaldar en archivo…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ublock-mi-respaldo_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Las listas de filtros propias de uBO se alojan de forma gratuita en las siguientes \u003Ca href=\"https://es.wikipedia.org/wiki/Red_de_distribuci%C3%B3n_de_contenidos\">CDN\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Se utilizará una CDN elegida al azar cuando sea necesario actualizar una lista de filtros." - }, - "aboutChangelog": { - "description": "", - "message": "Registro de cambios" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Código fuente (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Colaboradores" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Dependencias externas (compatibles con GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Listas de filtros" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Acerca de" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Política de privacidad" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Restablecer ajustes predeterminados…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Se borrará todas tus configuraciones y uBlock₀ se reiniciará.\n\n¿Restablecer uBlock₀ a la configuración predeterminada?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Restaurar desde archivo…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Toda la configuración se sobrescribirá utilizando datos respaldados en {{time}} y uBlock₀ se reiniciará.\n\n¿Sobrescribir toda la configuración existente utilizando los datos de respaldo?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Los datos no se pueden leer o no son válidos" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Código fuente" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Traducciones" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Configuración avanzada" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "¡Atención! Cambia estas configuraciones avanzadas bajo tu propio riesgo." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Visor de recursos" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Clic para cargar" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Nombre de este dispositivo:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Importar datos de la nube" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importar desde la nube y anexar a la configuración actual" - }, - "cloudPush": { - "description": "tooltip", - "message": "Exportar datos a la nube" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Bloquear elemento en frame…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Suscribirse a lista de filtros…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Permitir temporalmente elementos multimedia grandes" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Ver código fuente…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Panel de control" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "¡Atención! Tienes cambios sin guardar" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignorar" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Conservar" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Regresar" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Cerrar esta ventana" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Continuar" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanentemente" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Temporalmente" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "No me adviertas de nuevo sobre este sitio" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Encontrado en:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "sin parámetros" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Deshabilitar bloqueo estricto para {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin impidió la carga de la página:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Como resultado del siguiente filtro:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Página bloqueada" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Esta entrada debe ser la última" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "hace {{value}} días" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "hace {{value}} horas" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "hace {{value}} minutos" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "hace un día" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "hace 1 hora" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "hace un minuto" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Error de red: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Por fin, un bloqueador eficiente con uso mínimo de procesador y memoria." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "deshabilitado" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Aplicar cambios" - }, - "genericBytes": { - "description": "", - "message": "bytes" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Copiar al portapapeles" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Alternar bloqueo de desplazamiento" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Revertir" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Seleccionar todo" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Enviar" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errores: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Todo" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Sin pestaña" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtrar contenido" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Dominio" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filtro" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Tipo" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Borrar el registro de peticiones" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Pestaña actual" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Alternar el inspector DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Contexto" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filtro" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Lista de filtros" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Detalles" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Tipo de petición" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Contexto raíz" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Regla" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Tipo" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Formato markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Sin formato" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Lista" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabla" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Registro de peticiones" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pausar registro de peticiones (descarta todos los datos entrantes)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Alternar el panel emergente" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Recargar contenido de la pestaña" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "petición del dominio" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "petición de tercero" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "permitido" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "bloqueado" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "destacado" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modificado" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "No" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Opciones de filtrado del registro de peticiones" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Alternar el filtrado del registro de peticiones" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Las entradas del registro de peticiones que no cumplan las tres condiciones a continuación se descartarán automáticamente:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Contexto" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filtro/regla" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Tipo de petición" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Hora" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Ocultar columnas:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Usar {{input}} líneas por entrada en modo expandido verticalmente" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Conservar entradas de los últimos {{input}} minutos" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Conservar como máximo {{input}} entradas por pestaña" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Conservar como máximo {{input}} cargas de página por pestaña" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Filtro estático \u003Ccode>{{filter}}\u003C/code> encontrado en:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "No se pudo encontrar el filtro estático en ninguna de las listas de filtros actualmente habilitadas" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Filtro estático" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} peticiones de red de {{type}} {{br}}cuya dirección URL contenga {{url}} {{br}}y que se origine {{origin}},{{br}}{{importance}} exista una regla de excepción aplicable." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Permitir" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "desde cualquier lugar" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "cualquier tipo" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Bloquear" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "incluso cuando" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "excepto cuando" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "desde “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "tipo “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Contexto:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Regla de URL" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Tipo:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Continuar con el registro de peticiones" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Bloquear elemento…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Filtros cosméticos" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Clic, Ctrl-clic" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Crear" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Filtros de red" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Elegir" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Vista previa" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Salir" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "scripts del dominio" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "peticiones de terceros" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "frames de terceros" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/imágenes de terceros" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "scripts de terceros" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "todo" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "en esta página" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Bloqueado en esta página" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "peticiones bloqueadas" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "desde que se instaló" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Bloqueado desde que se instaló" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} o {{percent}} %" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Dominios conectados" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} de {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "dominios conectados" - }, - "popupImageRulePrompt": { - "description": "", - "message": "imágenes" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "scripts integrados" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Menos" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Más" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Filtrado cosmético" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Elementos multimedia grandes" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Ventanas emergentes" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Fuentes remotas" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "o" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Clic: deshabilitar/habilitar uBlock₀ en este sitio.\n\nCtrl+clic: deshabilitar uBlock₀ solo en esta página." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Clic para deshabilitar uBlock₀ en este sitio.\n\nCtrl+clic para deshabilitar uBlock₀ solo en esta página." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Clic para habilitar uBlock₀ en este sitio." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Abrir panel de control" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Reglas globales: las reglas en esta columna se aplican a todos los sitios." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Reglas locales: las reglas en esta columna se aplican solo al sitio actual.\nLas reglas locales anulan las reglas globales." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Ir al registro de peticiones" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Alternar el filtrado cosmético en este sitio" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Clic para deshabilitar el filtrado cosmético en este sitio" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Clic para habilitar el filtrado cosmético en este sitio" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Alternar bloqueo de elementos multimedia grandes en este sitio" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Clic para bloquear elementos multimedia grandes en este sitio" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Clic para no bloquear más elementos multimedia grandes en este sitio" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Alternar bloqueo de todas las ventanas emergentes en este sitio" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Clic para bloquear todas las ventanas emergentes en este sitio" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Clic para no bloquear más todas las ventanas emergentes en este sitio" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Alternar bloqueo de fuentes remotas en este sitio" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Clic para bloquear fuentes remotas en este sitio" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Clic para no bloquear más fuentes remotas en este sitio" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Clic para deshabilitar JavaScript en este sitio" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Clic para no deshabilitar más JavaScript en este sitio" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Entrar al modo selección de elementos" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Reportar un problema en este sitio web" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Haz clic para revertir tus cambios." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Haz clic para hacer tus cambios permanentes." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Entrar al modo eliminación de elementos" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versión" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Modo de bloqueo relajado" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Establecer" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "ublock-mis-reglas-dinamicas_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Editar" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Descartar" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Guardar" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Exportar a archivo…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Sintaxis de las reglas: \u003Ccode>origen destino tipo acción\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>documentación completa\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Lista de tus reglas de filtrado dinámico." - }, - "rulesImport": { - "description": "", - "message": "Importar desde archivo…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Mis reglas" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Reglas permanentes" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Revertir" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Ordenar:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destino" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Fuente" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Tipo de regla" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Reglas temporales" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Comportamiento predeterminado" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Es posible anular el comportamiento predeterminado para cada sitio" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Avanzado" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Características aptas solo para usuarios técnicos" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Soy usuario avanzado" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "configuración avanzada" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Apariencia" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Habilitar almacenamiento en la nube" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Ocultar marcadores de posición de los elementos bloqueados" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Accesible para daltónicos" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Hacer uso del menú contextual cuando sea posible" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Deshabilitar auditoría de hipervínculos" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Mostrar el número de peticiones bloqueadas en el icono" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Último respaldo:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Última restauración:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Bloquear reportes CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Deshabilitar el filtrado cosmético" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Bloquear elementos multimedia mayores que {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Bloquear fuentes remotas" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Deshabilitar JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Configuración" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Deshabilitar pre-carga de sitios (previene cualquier conexión para peticiones de red bloqueadas)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Tono de color personalizado" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Deshabilitar las descripciones emergentes" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Desvelar nombres canónicos" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Impedir que WebRTC divulgue la dirección IP local" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Escribe un atajo" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Atajos" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Mostrar panel de control" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Mostrar registro de peticiones" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Registro de peticiones" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Almacenamiento usado: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Suscribirse" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "¿Deseas añadir la siguiente URL a tus listas de filtros personalizados?\n\nTítulo: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Encontrar reportes similares" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Abrir" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Soporte" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redactar" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Crear nuevo reporte" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentación" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Lee la documentación en \u003Ccode>uBlock/wiki\u003C/code> para aprender sobre todas las características de uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Preguntas y soporte" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Respuestas a preguntas y otros tipos de ayuda se proporcionan en el sub-reddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Problemas de filtros/sitio web roto" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Reportar problemas de filtros con sitios web específicos en el registro de problemas \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code>\u003C/span>. \u003Cu>Requiere una cuenta en GitHub\u003C/u>." - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Importante:\u003C/b> evita utilizar otros bloqueadores con propósito similar junto con uBlock Origin, ya que esto puede causar problemas de filtros en sitios web específicos." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Consejos:\u003C/b> asegúrate de que tus listas de filtros estén actualizadas. El \u003Cspan data-url=\"logger-ui.html#_\">registro de peticiones\u003C/span> es la principal herramienta para diagnosticar problemas relacionados con los filtros." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Reportar error" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Reportar problemas con uBlock Origin en el registro de problemas \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>\u003C/span>. \u003Cu>Requiere una cuenta en GitHub\u003C/u>." - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Información para solucionar problemas" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "A continuación encontrarás información técnica que puede ser útil cuando los voluntarios intenten ayudarte a resolver un problema." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Importante:\u003C/b> la información potencialmente privada o sensible se redacta de forma predeterminada. La información redactada puede dificultar la resolución de un problema." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Etiquetar la página web como “NSFW” (\u003Ca href=\"https://es.wikipedia.org/wiki/NSFW\">“no es seguro/apropiado para el trabajo”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Reportar un problema de filtro" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Para evitar sobrecargar a voluntarios con reportes duplicados, verifica que el problema no haya sido reportado." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Las listas de filtros se actualizan diariamente. Asegúrate de que tu problema no haya sido abordado en las listas de filtros más recientes." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verifica que el problema aún exista después de recargar la página web problemática." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "La página web…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Elige una entrada --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Muestra anuncios o restos de anuncios" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Tiene superposiciones u otras molestias" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detecta uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Tiene problemas relacionados con la privacidad" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Se rompe cuando uBlock Origin está habilitado" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Abre pestañas o ventanas no deseadas" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Dirección de la página web:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Sin redactar" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Alternar filtrado cosmético" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Alternar JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "No se puede filtrar correctamente al iniciar el navegador. Recarga la página para garantizar el filtrado correcto." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Aplicar cambios" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Exportar…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "ublock-mis-sitios-de-confianza_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importar y anexar…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Sitios de confianza" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Sitios de confianza para los cuales se deshabilitará uBlock Origin. Una entrada por línea." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/et/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/et/messages.json deleted file mode 100644 index fcada0f..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/et/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Kinnita muudatused" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Luba enda loodud filtrid" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Ekspordi…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "minu-ublocki-staatilised-filtrid_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Impordi ja lisa…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Minu filtrid" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Luba usaldusväärsust tõestama peavad enda loodud filtrid" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Ära lisa filtreid tundmatutest allikatest." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Kinnita muudatused" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Uuenda filtriloendeid automaatselt." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "vananenud" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Üks URL rea kohta. Vigaseid URLe eiratakse hoiatuseta." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Reklaamid" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Tüütused" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Küpsise teatised" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Kohandatud" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Sisseehitatud" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Pahavara kaitse, turvalisus" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Mitmeotstarbelised" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privaatsus" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regioonid, keeled" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Sotsiaalvõrgustike vidinad" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Eira üldiseid ilufiltreid." - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Üldised ilufiltrid on need ilufiltrid, mis töötavad kõikidel veebisaitidel. Selle valiku lubamine vähendab veebisaitidel üldiste ilufiltrite kasutamisest tulenevat mälu ja protsessori koormust.\n\nSelle valiku lubamine on soovitatav vähem võimekates seadmetes." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Impordi..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Viimane uuendus: {{ago}}.\nUuendamiseks vajutage." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Blokeeritud domeenide loendid" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "kasutusel {{used}}/{{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} võrgufiltrit + {{cosmeticFilterCount}} ilufiltrit:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Ressursi uuendamist takistas võrgu viga." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filtriloendid" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Ilufiltrid peidavad veebilehe elemente, mis häirivad visuaalselt ning mida ei saa blokeerida võrgutaotlustel põhinevate filtreerimismootoritega." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Tuvasta ja rakenda ilufiltrid." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Tühjenda kõik vahemälud" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Peata võrguliiklus kõikide filtriloendite laadimiseni" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Uuenda kohe" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Uuendamine..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "vaata sisu" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Varunda faili…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "minu-ublocki-varundus_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO enda filtriloendid on vabalt hostitud järgnevates \u003Ca href=\"https://et.wikipedia.org/wiki/Sisuedastusv%C3%B5rk\">sisuedastusvõrkudes\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Filtriloendi uuendamiseks kasutatakse juhuslikult valitud sisuedastusvõrku." - }, - "aboutChangelog": { - "description": "", - "message": "Muudatuste logi" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Lähtekood (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Toetajad" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Välised sõltuvused (ühilduvad GPLv3-ga):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filtriloendid" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Teave" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Privaatsusteatis" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Alusta nullist..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Kõik seaded kustutatakse ning uBlock₀ taaskäivitatakse.\n\nTaastan uBlock₀'i algseadetele?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Taasta failist..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Kõik seaded kirjutatakse üle, kasutades varundust kuupäevast {{time}} ning uBlock₀ taaskäivitatakse.\n\nKirjutan üle kõik praegused seaded varundusandmetega?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Andmeid ei suudetud lugeda või on vigased" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Lähtekood" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Tõlked" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Täpsemad seaded" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Hoiatus! Muuda täpsemaid seadeid oma vastutusel." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — vara vaatur" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Klõpsa laadimiseks" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Selle seadme nimi:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Impordi pilvehoidlast" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Impordi pilvekettalt ja ühilda praeguste seadetega" - }, - "cloudPush": { - "description": "tooltip", - "message": "Ekspordi pilvehoidlasse" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Blokeeri raamis olev element..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Telli filtriloend..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Luba ajutiselt mahukad meediaelemendid" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Vaata lähtekoodi…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Töölaud" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Hoiatus! Sul on salvestamata muutusi" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Eira" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Jää lehele" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Mine tagasi" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Sulge see aken" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Jätka" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Püsivalt" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Ajutiselt" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Ära selle saidi puhul enam hoiata" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Asub filtrites:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "parameetriteta" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Keela karm blokeerimine {{hostname}} jaoks" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin on keelanud järgneva lehe laadimise:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Järgneva filtri tõttu" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Leht blokeeritud" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "See sisestus peab olema viimane" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} päeva tagasi" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} tunni eest" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} minuti eest" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "eile" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "tunni eest" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "minuti eest" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Võrgu viga: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Lõpuks on valminud tõhus blokeerija. Protsessori- ja mälusõbralik." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "väljas" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Kinnita muudatused" - }, - "genericBytes": { - "description": "", - "message": "baiti" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopeeri lõikelauale" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Lülita sisse lukustatud kerimine" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Ennista" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Vali kõik" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Saada" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Vigu: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Kõik" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Kaardivaba" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtreeri logija sisu" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domeen" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filter" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Tüüp" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Tühjenda logija" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Praegune kaart" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Lülita sisse DOM-inspektor" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Kontekst" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filtriloend" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Andmed" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Osapool" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Juurkontekst" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Reegel" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Tüüp" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Lihttekst" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Loend" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabel" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin'i viki: Logija" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Peata logija (ignoreeri sissetulevaid andmeid)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Lülita sisse hüpikpaneel" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Laadi kaardi sisu uuesti" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1. osapool" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3. osapool" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "lubatud" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blokeeritud" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "oluline" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "muudetud" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Mitte" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Logija filtreerimise valikud" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Lülita sisse logija filtreerimine" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Logija kirjeid, mis ei vasta kõigile kolmele alumisele tingimusele, eiratakse automaatselt:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} kontekst" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} filter/reegel" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} osapool" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} aeg" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Peida veerud:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Kasuta {{input}} rida kirje kohta vertikaalses laiendatud režiimis" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Säilita viimase {{input}} minuti kirjed" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Säilita kuni {{input}} kirjet vahekaardi kohta" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Säilita kuni {{input}} lehe laadimist vahekaardi kohta" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Staatiline filter \u003Ccode>{{filter}}\u003C/code> asub:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Staatilist filtrit ei leitud ühegi hetkel lubatud filtrite loendist" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Staatiline filtreerimine" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} võrgupäringud {{type}} {{br}}mille URL-aadress vastab väärtusele {{url}} {{br}}ja mis pärineb {{origin}},{{br}}{{importance}} on olemas vastav erandfilter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Luba" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "mistahes domeenilt" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "mistahes tüübiga" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Blokeeri" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "isegi, kui" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "välja arvatud, kui" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "domeenilt “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "tüübiga “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Kontekst:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL'i reegel" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Tüüp:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Jätka logimist" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Blokeeri element..." - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Ilufiltrid" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klõps, Ctrl-klõps" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Loo" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Võrgufiltrid" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Vali" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Eelvaade" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Välju" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1. osapoole skriptid" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "3. osapool" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "raam" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "3. osapoole raamid" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "3. osapoole CSS/pildid" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "skript" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "3. osapoole skriptid" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "kõik" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "sellel lehel" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Sellel lehel blokeeritud" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "blokeeritud taotlusi" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "paigaldamise algusest" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Paigaldamise algusest blokeeritud" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} või {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domeene ühendatud" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}}/{{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "ühendatud domeene" - }, - "popupImageRulePrompt": { - "description": "", - "message": "pildid" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "tekstisisesed skriptid" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Vähem" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Rohkem" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Ilufiltrid" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Suured meediaelemendid" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Hüpikaknad" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Välised fondid" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "või" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klõps: keela/luba uBlock₀ sellel saidil.\n\nCtrl+klõps: keela uBlock₀ ainult sellel lehel." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Klõpsa, et keelata uBlock₀ sellel saidil.\n\nCtrl+klõps, et keelata uBlock₀ ainult sellel lehel." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Klõpsa, et lubada uBlock₀ sellel saidil." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Ava töölaud" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Üldised reeglid: selle veeru reeglid kehtivad kõikidele saitidele." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Kohalikud reeglid: selle veeru reeglid kehtivad ainult praegusele saidile.\nKohalikud reeglid kirjutavad üldised reeglid üle." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Ava logija" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Keela ilufiltrid sellel saidil" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klõpsa, et keelata ilufiltrid sellel saidil" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klõpsa, et lubada ilufiltrid sellel saidil" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Lülita mahukate meediaelementide blokeerimine siin saidil sisse/välja" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klõpsa, et keelata mahukad meediaelemendid sellel saidil" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klõpsa, et lõpetada mahukate meediaelementide keelamine sellel saidil" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Keela hüpikaknad sellel saidil" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klõpsa, et keelata kõik hüpikaknad sellel saidil" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klõpsa, et lõpetada hüpikakende keelamine sellel saidil" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Luba väliste fontide blokeerimine sellel saidil" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klõpsa, et keelata välisfondid sellel saidil" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klõpsa, et lõpetada välisfontide keelamine sellel saidil" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klõpsa, et keelata JavaScript sellel saidil" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klõpsa, et lõpetada sellel saidil JavaScripti keelamine" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Sisene elemendi valikuolekusse" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Teavita selle veebilehe probleemist" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Klõpsa, et võtta muudatused tagasi." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Klõpsa, et teha oma muudatused püsivaks." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Sisene elemendi hävitusrežiimi" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versioon" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Rahulik blokeerimisrežiim" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Rakenda" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "minu-ublocki-dünaamilised-reeglid_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Muuda" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Tühista" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Salvesta" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Ekspordi faili…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Reegli süntaks: \u003Ccode>allikas sihtkoht tüüp tegevus\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>kogu dokumentatsioon\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Sinu dünaamiliste filtrite reeglide nimekiri." - }, - "rulesImport": { - "description": "", - "message": "Impordi failist..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Minu reeglid" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Igavesed reeglid" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Ennista" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sorteeri:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Sihtkoht" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Allikas" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Reegli tüüp" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Ajutised reeglid" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Vaikeväärtused" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Neid vaikeväärtusi saab saitide põhiselt eraldi määrata" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Täpsemad" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Funktsioonid, mis on sobilikud vaid tehnikas pädevatele kasutajatele." - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Olen kogenud kasutaja" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "täpsemad seaded" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Välimus" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Luba pilves hoiustamise tugi" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Peida blokeeritud elementide asukohad" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Värvipimeduse-sõbralik" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Kasuta sobivusel kontekstmenüüd" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Keela hüperlingi auditeerimine" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Kuva ikoonil blokeeritud elementide arv" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Viimane varundus:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Viimane taastus:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Keela lehe turvareeglite (CSP-de) aruanded" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Keela ilufiltrid" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Blokeeri meediaelemendid, mis on suuremad kui {{input}} kB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Keela välised fondid" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Keela JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Seaded" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Keela eellaadimine (et vältida ühendusi blokeeritud võrgutaotlustele)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Kohandatud rõhuvärv" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Teema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Keela näpunäited" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Kanooniliste nimede tuvastamine" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Tõkesta WebRTC'l kohalike IP-aadresside lekitamist" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Kirjuta kiirklahv" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Kiirklahvid" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Kuva töölaud" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Kuva logija" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Logija" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Mahtu kasutatud: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Telli" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Kas lisada järgnev URL sinu kohandatud filtrite nimekirja?\n\nPealkiri: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Leia sarnaseid aruandeid" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Ava" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Tugi" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Kata info" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Loo uus aruanne" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumendid" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Loe dokumente kohas \u003Ccode>uBlock/wiki\u003C/code>, et avastada kõik uBlock Origini võimalusi." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Küsimused ja tugi" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Vastused küsimustele ja muud sorti kliendituge pakutakse subredditis \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filtrivead/veebileht on katki" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Teata kindlate veebilehtede filtrivigadest \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> veahalduris\u003C/span>. \u003Cu>Nõuab GitHubi kontot.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Oluline:\u003C/b> väldi teiste sarnaselt toimivate blokeerijate kasutamist koos uBlock Originiga, see võib põhjustada teatud lehtedel filtrivigu." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Nõuanne:\u003C/b> veendu, et filtrinimekirjad on ajakohased. \u003Cspan data-url=\"logger-ui.html#_\">Logija\u003C/span> on peamine tööriist filtritega seotud vigade diagnoosimiseks." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Veast teatamine" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Teata uBlock Origini vigadest \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">uBlockOrigin/uBlock-issue\u003C/code> veahalduris\u003C/span>. \u003Cu>Nõuab GitHubi kontot.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Tõrkeotsingu teave" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Allpool on tehniline info, mis võib olla kasulik, kui vabatahtlikud aitavad sul probleemi lahendada." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Oluline:\u003C/b> potentsiaalselt privaatne või tundlik info on vaikimisi kaetud. Kaetud info võib probleemi lahendamist raskendada." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Sildista veebileht kui „NSFW“ (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“tööks sobimatu”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Teavita filtri veast" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Vabatahtlike koormuse vähendamiseks veendu, et probleemi pole juba teatatud." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filtriloendeid uuendatakse iga päev. Kindlasti veenduge, kas probleem on juba lahendatud uusimates filtriloendites." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Kontrollige probleemi olemasolu veel kord, laadides muret tekitav veebileht uuesti." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Veebileht..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Vali kirje --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Kuvab reklaame või reklaami kohatäitjaid" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Omab ülekatteid või teisi nuhtlusi" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Tuvastab uBlock Origini" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Omab privaatsusega seonduvaid probleeme" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Läheb uBlock Origini olemasolul katki" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Avab soovimatuid kaarte või aknaid" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Veebilehe aadress:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Ära kata infot" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Lülita kosmeetilist filtreerimist" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Lülita JavaScripti" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Brauseri avamisel korralikult filtreerimine ebaõnnestus. Selle parandamiseks laadi leht uuesti." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Kinnita muudatused" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Ekspordi…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "minu-ublocki-usaldatud-saidid_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Impordi ja lisa…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Usaldatud saidid" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Usaldatud saitide direktiivid määravad, millistel veebilehtedel peaks uBlock Origin keelatud olema. Üks kirje rea kohta." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/eu/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/eu/messages.json deleted file mode 100644 index be96356..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/eu/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Aplikatu aldaketak" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Aktibatu nire filtro pertsonalitsatuak" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Esportatu" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "nire-ublock-iragazki-estatikoak_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Inportatu eta gehitu" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Nire iragazkiak" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Konfiantza behar duten iragazki pertsonalizatuak baimendu" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Ez gehitu jatorri ezezaguneko iragazkirik" - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Aplikatu aldaketak" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Automatikoki eguneratu iragazkien zerrenda." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Zaharkituta." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "URL bat lerroko. Baliogabeko URL-ak ezikusiko dira." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Iragarkiak" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Eragozpenak" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie oharrak" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Pertsonala" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Barnekoa" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Malware domeinuak" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Helburu anitzekoak" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Pribatutasuna" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Eskualdeak, hizkuntzak" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Widgets Sozialak" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ezikusi iragazki kosmetiko orokorrak" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "\u003Cp>Iragazki kosmetiko orokorrak webgune guztietan aplikatzeko sortu diren iragazki kosmetikoak dira. \u003Cp>uBlock₀ aplikazioak ongi kudeatzen baditu ere iragazki kosmetiko orokorrek wegune batzuetan memoria edo PUZ erabilera nabarmena ekar dezakete handiak eta antzinakoak diren horietan gehienbat. \u003Cp>Aukera hau gaituz iragazki kosmetiko orokorren erabileraren ondoriozko memoria eta PUZ erabilera gehigarria sahiestuko da, eta baita uBlock₀ beraren memoria erabilera gutxiagotu. \u003Cp> Ahalmen gutxiagoko gailuetan aukera hau gaitzea aholkatzen da." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Inportatu..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Azken eguneraketa: {{ago}}." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} erabilita, guztira {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} sare iragazki + {{cosmeticFilterCount}} iragazki kosmetiko hemendik:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Sare errore batek baliabidea eguneratzea eragotzi du." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Iragazki-zerrendak" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "\u003Cp>Aukera honek \u003Ca href=\"https://adblockplus.org/en/faq_internal#elemhide\">Adblock Plusekin bateragarriak diren “elementuak ezkutatzeko” iragazkiak\u003C/a> prozesatzea eta ezartzea gaitzen du. Iragazki hauek nagusiki kosmetikoak dira, web orri batean itsusitzat jo diren eta sare iragazkien bidez blokeatzerik ez dauden elementuak ezkutatzeko balio dute.\u003C/p>\u003Cp>Ezaugarri hau gaitzeak uBlock₀en memoria erabilera handitzen du.\u003C/p>" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Prozesatu eta ezarri iragazki kosmetikoak." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Garbitu cache guztiak" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Eten sarearen jarduera iragazki-zerrenda guztiak kargatuta egon arte" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Eguneratu orain" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Eguneratzen..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "ikusi edukia" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Egin babeskopia fitxategian" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "nire-ublock-babeskopia_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBOren iragazki zerrendan \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN\u003C/a> hauetan daude:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Ausaz aukeratutako CDN bat erabiltzen da iragazki zerrenda bat eguneratu behar denean" - }, - "aboutChangelog": { - "description": "", - "message": "Aldaketa egunkaria" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Iturburu kodea (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Parte-hartzaileak" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Kanpo menpekotasunak (GPLv3 lizentziarekin bateragarriak):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Iragazki-zerrendak" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Honi buruz" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Pribatutasun politika" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Leheneratu lehenetsitako ezarpenetara..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Zure ezarpen guztiak ezabatuko dira, eta uBlock₀ berrabiaraziko da.\n\nLeheneratu uBlock₀ jatorrizko ezarpenetara?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Berreskuratu fitxategitik..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Zure ezarpen guztiak gainidatziko dira {{time}}ko datuak erabiliz, eta uBlock₀ berrabiaraziko da.\n\nGainidatzi ezarpen guztiak babeskopiako datuekin?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Datuak ezin dira irakurri edo baliogabeak dira" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Iturburu-kodea" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Itzulpenak" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Ezarpen aurreratuak" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Abisua! Ez aldatu ezarpen aurreratu hauek zertan ari zaren ez badakizu." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Aktibo-ikuslea" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Sakatu kargatzeko" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Gailu honen izena:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Inportatu hodei biltegiratzetik" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Inportatu hodeiko biltegiratzetik eta nahastu oraingo ezarpenekin" - }, - "cloudPush": { - "description": "tooltip", - "message": "Esportatu hodei biltegiratzera" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Marko bateko elementua blokeatu..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Harpidetu iragazki zerrenda batera..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Une batez baimendu multimedia elementu handiak" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Ikusi iturburu kodea…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Kontrol panela" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Abisua! Gorde gabeko aldaketak dituzu" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ezikusi" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Geratu" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Atzera" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Itxi leiho hau" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Aurrera" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Behin betiko" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Une batez" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Ez esan ezer berriz ere orrialde honi buruz" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Hemen aurkitua:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "parametrorik gabe" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Ezgaitu blokeatze zorrotza {{hostname}} gunean" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock₀ek orri hau kargatzea galarazi du:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Iragazki hau dela eta" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Blokeatutako orrialdea" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "duela {{value}} egun" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "duela {{value}} ordu" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "duela {{value}} minutu" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "duela egun bat" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "duela ordu bat" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "duela minutu bat" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Sare-errorea: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Behingoz, blokeatzaile eraginkor bat. PUZ eta memorian arina." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "itzalita" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Aplikatu aldaketak" - }, - "genericBytes": { - "description": "", - "message": "byte" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopiatu arbelera" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Txandakatu korritze blokeatua" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Baztertu" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Hautatu dena" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Bidali" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Erroreak: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Guztiak" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Atzeko planoan" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "iragazi egunkariko sarrerak" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domeinua" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Iragazkia" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Mota" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Garbitu egunkaria" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Uneko fitxa" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Txandakatu DOM ikuskatzailea" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Testuingurua" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Iragazkia" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Iragazki-zerrendak" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Xehetasunak" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Jatorria" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Erro testuingurua" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Araua" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Mota" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URLa" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Laua" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Zerrenda" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Taula" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Egunkaria" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pausatu egunkaria (baztertu jasotako informazioa)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Txandakatu laster-leiho panela" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Birkargatu fitxako edukia" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Lehen eskukoa" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Hirugarrengoa" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "baimenduta" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blokeatuta" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "aldatua" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Ez" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Egunkaria iragazteko aukerak" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Txandakatu egunkariaren iragazkia" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Beheko hiru baldintzak betetzen ez dituzten egunkariko sarrerak automatikoki ezikusiko dira:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Testuingurua" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Iragazkia/araua" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} jatorria" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Denbora" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Ezkutatu zutabeak:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Erabili {{input}} errenkada sarrerako bertikalki hedatutako moduan" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Mantendu azken {{input}} minutuetako sarrerak" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Mantendu gehienez {{input}} sarrera fitxako" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Mantendu gehienez {{input}} orrien kargak fitxako" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "\u003Ccode>{{filter}}\u003C/code> iragazki estatikoa aurkitu da hemen:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "\u003Ccode>{{filter}}\u003C/code> iragazki estatikoa ezin izan da aurkitu orain aktibatutako iragazki zerrendetan" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Iragazketa estatikoa" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} {{type}} motako sare eskariak {{br}}URL helbidea {{url}} helbidearekin bat datorrenean {{br}}eta jatorria {{origin}} denean,{{br}}{{importance}} bat datorren salbuespen iragazki bat badago." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Baimendu" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "edonondik" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "edozein mota" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Blokeatu" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "nahiz eta" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "kenduta" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "hemendik “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "mota “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Testuingurua:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL araua" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Mota:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Kendu pausa egunkariari" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Blokeatu elementua..." - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Iragazki kosmetikoak" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klik, Ktrl-klik" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Sortu" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Sare iragazkiak" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Hautatu" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Aurreikusi" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Irten" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "bertako scriptak" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "Hirugarrengoak" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "markoa" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "hirugarrengoen markoak" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "Hirugarrengoen CSS/Irudiak" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "scripta" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "hirugarrengoen scriptak" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "guztiak" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "orri honetan" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokeatuta orri honetan" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "blokeatutako eskariak" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "instalaziotik" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokeatuta instalaziotik" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} edo %{{percent}}" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Konektatutako domeinuak" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} / {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "konektatutako domeinuak" - }, - "popupImageRulePrompt": { - "description": "", - "message": "irudiak" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "barne scriptak" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Gutxiago" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Gehiago" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Iragazki kosmetikoak" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Multimedia elementu handiak" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Laster-leihoak" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Urruneko tipografiak" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "edo" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klik: gaitu/ezgaitu uBlock₀ gune honetan.\n\nKtrl+klik: ezgaitu uBlock₀ orri honetan soilik." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Klik: Gaitu/ezgaitu uBlock₀ gune honetan.\n\nKtrl+klik: Desgaitu uBlock₀ orri honetan soilik." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Klik: Gaitu uBlock₀ gune honetan." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Ireki kontrol panela" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Arau orokorrak: Zutabe hau gune guztietan aplikatzen diren arauentzat da." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Tokiko arauak: Zutabe hau soilik uneko gunean aplikatuko diren arauentzat da. Tokiko arauek arau orokorrak gainidazten dituzte." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Ireki egunkaria" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Txandakatu iragazki kosmetikoa gune honetan" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klik: Desgaitu iragazki kosmetikoak gune honetan" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klik: Gaitu iragazki kosmetikoak gune honetan" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Txandakatu multimedia elementu handiak blokeatzea gune honetan" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klik: Blokeatu gune honetako tamaina handiko elementuak" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klik: Utzi gune honetako tamaina handiko elementuak blokeatzeari" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Txandakatu laster-leihoen blokeoa gune honetan" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klik: Blokeatu gune honetako laster leiho guztiak" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klik: Utzi gune honetako laster-leihoak blokeatzeari" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Txandakatu urruneko letra tipoen blokeoa gune honetan" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klik: Blokeatu urruneko letra-tipoak gune honetan" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klik: Utzi urruneko letra-tipoak gune honetan blokeatzeari" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Egin klik gune honetan JavaScript desgaitzeko" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Egin klik gune honetan JavaScript desgaitzeari uzteko" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Elementuak hautatzeko modua" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Webgune honetan arazo baten berri eman" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Sakatu aldaketak desegiteko." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Sakatu aldaketak gordetzeko." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Elementuak lekuz aldatzeko modua" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Bertsioa" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Baretu blokeatze-modua" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Behin betiko bihurtu" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "nire-ublock-arau-dinamikoak_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Aldatu" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Baztertu" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Gorde" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Esportatu fitxategira" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Arauen sintaxia: \u003Ccode>jatorria helburua mota ekintza\u003C/code>(\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>Dokumentazio osoa\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Zure iragazki dinamikoen arau zerrenda." - }, - "rulesImport": { - "description": "", - "message": "Inportatu fitxategitik..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Nire arauak" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Behin betiko arauak" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Baztertu" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Ordena:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Helburua" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Iturria" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Arau mota" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Behin behineko arauak" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Lehenetsitako portaera" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Lehenetsitako portaera hauek gunez gune gainidatzi daitezke" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Aurreratua" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Erabiltzaile teknikoentzat soilik egokiak diren funtzioak" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Erabiltzaile aurreratua naiz (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>Irakurri beharrekoa\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "ezarpen aurreratuak" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Itxura" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Gaitu hodei biltegiratzearen euskarria" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Ezkutatu blokeatutako elementuen hutsuneak" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Kolore-itsuentzat egokia" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Erabili laster-menua egokia denean" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Desgaitu loturen auditoretza" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Bistaratu blokeatutako eskari kopurua ikonoan" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Azken babeskopia:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Azken berreskuratzea:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Blokeatu CSP txostenak" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Desgaitu iragazki kosmetikoa" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Blokeatu {{input:number}} kB baino handiagoak diren multimedia elementuak" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Blokeatu urruneko letra-tipoak" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Desgaitu JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Ezarpenak" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Desgaitu aurrez-kargatzea (blokeatutako sare eskaeretako edozein konexio galarazteko)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Azentu-kolore pertsonalizatua" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Azala" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Desgaitu argibideak" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Erakutsi izen kanonikoak" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Galarazi WebRTCk tokiko IP helbidea iragartzea" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Idatzi lasterbide bat" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Lasterbideak" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Bistaratu kontrol panela" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Bistaratu egunkaria" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Egunkaria" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Erabilitako biltegiratzea: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Harpidetu" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: Gehitu honako URL hauek zure iragazki pertsonalizatuen zerrendara?\n\nIzenburua: \"{{title}}\"\nURLa: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Antzeko txostenak aurkitu" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Ireki" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Soportea" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Erredaktatu" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Txosten berri bat sortu" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentazioa" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Irakurri dokumentazioa \u003Ccode>uBlock/wiki\u003C/code> helbidean, uBlock Originen funtzio guztiak ezagutzeko." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Galderak eta laguntza" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "\u003Ccode>/r/uBlockOrigin\u003C/code> azpidian galderen erantzunak eta beste laguntza mota batzuk eskaintzen dira." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Arazoak iragazkiekin/webguneak ez du funtzionatzen" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Web-gune espezifikoekin iragazteko arazoak jakinaraz iezaguzu hemen: \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>GitHub kontu bat behar da\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Kontuan izan:\u003C/b> Ez erabili antzeko helburua duten beste blokeatzaile batzuk uBlock Originekin batera, horrek arazoak sor baititzake webgune espezifikoetan iragazteko." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Aholkuak\u003C/b> Ziurtatu zure iragazki-zerrendak eguneratuta daudela. \u003Cspan data-url=\"logger-ui.html#_\">Erregistratzailea\u003C/span> da iragazkiekin lotutako arazoak diagnostikatzeko tresna nagusia." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Errore-txostena" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Arazoak jakinarazi uBlock Originekin arazoen erregistroan \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>issue tracker\u003C/span>. \u003Cu>GitHub kontua beharrezkoa da.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Arazoen konponbideari buruzko informazioa" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Jarraian, boluntarioek arazo bat konpontzen laguntzen saiatzen direnean baliagarria izan daitekeen informazio teknikoa aurkituko duzu." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Garrantzitsua:\u003C/b> Pribatua edo sentikorra izan daitekeen informazioa modu lehenetsian idazten da. Idatzitako informazioak arazo bat konpontzea zaildu dezake." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Web orria «NSFW» moduan jarri (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work” \u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Iragazkiko arazo baten berri eman" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Txosten bikoiztuak dituzten boluntarioak ez gainkargatzeko, mesedez egiaztatu arazoa ez dela jakinarazi." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Iragazki-zerrendak egunero eguneratzen dira. Begiratu zure kasua azken iragazki-zerrendetako baten konpondu den." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Egiaztatu zure kasua arazoak eman dizkizun webgunea berriz kargatu ostean oraindik ere gertatzen den." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Webgunea..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Aukeratu sarrera bat --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Iragarkiak edo iragarkien hondarrak erakusten ditu" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Gainjartzeak edo bestelako eragozpenak ditu" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "uBlock Origin detektatzen du" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Pribatutasun-arazoak ditu" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Funtzionamendu-akatsak uBlock Origin aktibatuta dagoenean" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ireki nahi ez diren erlaitzak edo leihoak" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Web orriaren helbidea:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Desegin erredakzioa" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Iragazte kosmetikoa txandakatu" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "JavaScripta aktibatu/desaktibatu" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Iragazkia ezin izan da kargatu nabigatzailea irekitzeak. Kargatu berriz orria iragazkiak ondo funtzionatzen duela ziurtatzeko." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Aplikatu aldaketak" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Esportatu" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "nire-ublock-zerrendazuria_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Inportatu eta gehitu" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Konfidantzazko webguneak" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Zerrenda zuriaren direktibek uBlock zeintzu web orrietan desgaituko den zehazten dute. Sarrera bat lerroko. Baliogabeko ostalari izenak ezikusiko dira." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/fa/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/fa/messages.json deleted file mode 100644 index c40d2ec..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/fa/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "اعمال تغییرات" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "فعال‌سازی پالایه‌های سفارشی من" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "خروجي گرفتن" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "وارد کردن و الحاق" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "فیلترهای من" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "اجازه‌دهی به پالایه‌های سفارشی نیازمند اعتمادسازی " - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "پالایه‌ها از منابع نامعتبر افزوده نشود." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "اعمال تغییرات" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "بروز رسانی خودکار لیست فیلتر." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "منقضی شده." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "هر آدرس در یک خط. خطوطی با پیشوند ‘!’ در نظر گرفته نمیشوند. آدرس های نامعتبر نیز در سکوت نادیده گرفته میشوند." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "تبلیغات" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "مزاحم‌ها" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "اطلاعیه‌های کلوچک" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "سفارشی" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "داخلی" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "دامنه های مخرب" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "چند منظوره" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "حریم خصوصی" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "مناطق، زبانها" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "نادیده گرفتن فیلترهای زیبا سازی عمومی" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "\u003Cp>فیلترهای زیبا سازی عمومی، آن دسته از فیلترهای زیبا سازی هستند که در همه وب سایت ها کاربرد دارند.\n\u003Cp>اگر چه بصورت موثر توسط uBlock₀ انجام شده، ولی فیلترهای عمومی زیبا سازی هنوز هم ممکن است سربار حافظه قابل اندازه گیری و سربار پردازنده در برخی از صفحات وب به جای بگذارد، به ویژه برای صفحات وب بزرگ و طولانی مدت.\u003Cp>فعال کردن این گزینه سربارهای حافظه و پردازنده را که به صفحات اضافه شده به عنوان نتیجۀ اجرای فیلترهای عمومی زیبا سازی برطرف می‌کند، و همچنین ردپای حافظۀ خود uBlock₀ را کمتر می‌کند\u003Cp>توصیه می شود این گزینه را در دستگاه های با قدرت کمتر فعال کنید." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "وارد شده" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "آخرین به روز رسانی: {{ago}}.\nبرای یک به روز رسانی اجباری کلیک کنید." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "فهرست میزبان های مسدود شده" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "تعداد {{used}} از {{total}} مورد استفاده شده" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} فیلتر های شبکه + {{cosmeticFilterCount}} فرم های فیلتر انتخابی:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "یک خطای شبکه از بروزشدن این منبع جلوگیری کرد." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "لیست‌های فیلتر" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "\u003Cp>این گزینه \u003Ca href=\"https://adblockplus.org/en/faq_internal#elemhide\">فیلترهای “مخفی‌کردن اشیا” سازگار با ادبلاک پلاس\u003C/a> را تجزیه و اجرا میکند. این فیلتر ها اساساً فنی هستند، آنها اشیاء موجود در صفحه وب را که مزاحم تلقی میشوند و با موتور فیلترینگ شبکه قابل بلاک کردن نیستند را حذف میکنند.\u003C/p>\u003Cp>فعال کردن این قابلیت مصرف حافظه ی uBlock را افزایش میدهد.\u003C/p>" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "تجزیه و اجرای فیلترهای انتخابی." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "پاکسازی تمام انبارها" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "تا وقتی همه‌ی فیلترها لود نشده‌اند ارتباط شبکه را قطع کن" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "اکنون به روز رسانی شود" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "درحال بروزرسانی..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "نمایش محتویات" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "گیگابایت" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "کیلوبایت" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "مگابایت" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "پشتیبان گیری در فایل" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "لیست‌های فیلتر اصلی uBlock Origin به صورت آزاد در \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">این شبکه‌های تحویل محتوا\u003C/a> میزبانی می‌شوند." - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "وقتی که لازم باشد تا یک لیست فیلتر به روزرسانی شود، از یکی از شبکه‌های تحویل محتوا به صورت تصادفی استفاده می‌شود" - }, - "aboutChangelog": { - "description": "", - "message": "تغییرات اخیر" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "سورس کد (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "مشارکت کنندگان" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "وابستگی‌های خارجی (سازگار با GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "لیست‌های فیلتر" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "در باره" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "قوانین حریم خصوصی" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "تنظیم مجدد تنظیمات پیش فرض..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "تمام تنظیمات شما حذف شده و uBlock₀ دوباره راه اندازی خواهد شد.\n\nتنظیم مجدد uBlock₀ به تنظیمات کارخانه؟" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "بازیابی از فایل..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "تمام تنظیمات با استفاده از پشتیبان گیری در {{time}}، رونویسی شده و uBlock₀ مجدد راه اندازی میشود.\n\nتمام تنظیمات موجود با استفاده از داده های پشتیبانی رونویسی شود؟" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "داده ها نمی تواند خوانده شوند و یا نامعتبر اند" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "کد منبع" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "ترجمه‌ها" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "تنظیمات پیشرفته" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "هشدار! این تنظیمات پیشرفته را با مسئولیت خود تغییر دهید." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — نماینگر دارایی" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "برای بازکردن کلیک نمایید" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "نام این وسیله:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "وارد کردن از فضای ذخیره سازی ابری" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "وارد کردن از فضای ذخیره سازی ابری و ادغام با تنظیمات فعلی" - }, - "cloudPush": { - "description": "tooltip", - "message": "صدور به فضای ذخیره سازی ابری" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "بلاک‌کردن اِلمان در فریم..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subscribe to filter list..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "اجازه موقت عناصر رسانه‌ای حجیم" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "مشاهده کد منبع…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — داشبورد" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "هشدار! شما تنطیمات ذخیره نشده دارید" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "نادیده بگیر" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "بمان" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "بازگشت به عقب" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "بستن این پنجره" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "ادامه" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "دائمی" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "موقتا" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "دیگر در مورد این تارنما هشداری به من داده نشود" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "یافته شده در:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "بدون پارامترها" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "غیر فعال کردن بلاک برای {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock₀ از بارگذاری این صفحات جلوگیری کرده:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "بخاطر فیلتر زیر" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "صفحه مسدود شده است" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "این باید آخرین مطلب باشد" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} روز قبل" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} ساعت قبل" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} دقیقه پیش" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "دیروز" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "یک ساعت پیش" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "1 دقیقه پیش" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "خطای شبکه: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "بالاخره، یک بلاکر کارآمد. کم حجم بر روی پردازنده و حافظه." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "خاموش" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "اعمال تغییرات" - }, - "genericBytes": { - "description": "", - "message": "بایت" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "کپی به کلیپ‌بورد" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "تغییر وضعیت پیمایش قفل شده" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "بازگرداندن" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "انتخاب همه" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "ارسال" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "خطا: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "همه" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "پشت صحنه" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "فیلتر کردن محتوای لاگ" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "دامنه" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "فیلتر" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "نوع" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "آدرس" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "پاک‌کردن رویداد‌ها" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "برگۀ فعلی" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "تغییر وضعیت جستجوگر DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "محتوا" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "فیلتر" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "لیست فیلتر" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "جزئیات" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partyness" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "محتوای ریشه" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "قانون" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "نوع" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "آدرس" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "مارک‌داون" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "ساده" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "لیست" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "جدول" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "ویکی uBlock Origin: ثبت‌کننده رویداد‌ها" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "توقف ثبت رویداد‌ها (تمام داده‌های ورودی را نادیده بگیر)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "تغییر وضعیت پنل پاپ‌آپ" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "بارگیری مجدد محتوای صفحه" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1st-party" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "طرف سوم" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "مجاز" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "مسدود شده" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "تغییر کرده" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "نفی" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "گزینه‌های فیلتر ثبت رویداد‌ها" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "تغییر وضعیت فیلتر ثبت رویداد‌ها" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "رویدادهای ورودی که مطابق سه شرط زیر نباشند، بصورت خودکار نادیده گرفته خواهند شد:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Context" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} فیلتر/قانون" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partyness" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} زمان" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "پنهان‌سازی ستون" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Use {{input}} lines per entry in vertically expanded mode" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "ورودی‌های {{input}} دقیقه اخیر را نگه دار" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "لطفا در هر تب حداکثر {{input}} مدخل نگه‌دارید" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preserve at most {{input}} page loads per tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "انسداد ایستا \u003Ccode>{{filter}}\u003C/code> یافت شد در:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "فیلتر ایستا \u003Ccode>{{filter}}\u003C/code> در هیچ یک از لیست‌های فیلتر فعال پیدا نشد" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "فیلترینگ ایستا" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} درخواست های شبکه از نوع {{type}}{{br}} که مطابقت دارد با آدرس اینترنی {{url}}{{br}} و سرچشمه می‌گیرد از {{origin}}،{{br}}{{importance}} اینها یک فیلتر استثناء از تطبیق هستند." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "مجاز" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "از هر جایی" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "هر نوعی" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "انسداد" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "حتی اگر" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "بجز وقتی" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "از “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "نوع “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "زمینه:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "فیلترینگ پویای آدرس اینترنتی" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "نوع:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "از سرگیری ثبت رویداد‌ها" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "بلاک کردن این بخش" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "فیلترهای انتخابی" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "کلیک، کنترل-کلیک" - }, - "pickerCreate": { - "description": "English: Create", - "message": "ایجاد" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "فیلترهای شبکه" - }, - "pickerPick": { - "description": "English: Pick", - "message": "انتخاب" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "پیش نمایش" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "خروج" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "اسکریپت های 1st-party" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "3rd-party" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "چارچوب" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "فریم های 3rd-party" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "تصاویر/css سایت های ثالث" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "اسکریپت" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "اسکریپت های 3rd-party" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "همه" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "در این صفحه" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "بلاک‌شده در این صفحه" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "درخواست مسدود شده" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "از زمان نصب" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "بلاک شده از زمان نصب" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} یا {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "دامنه‌های متصل‌شده" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "تعداد {{count}} از {{total}} تا" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "دامنه های دست خورده" - }, - "popupImageRulePrompt": { - "description": "", - "message": "تصاویر" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "اسکریپت های درون خطی" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "کمتر" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "بیشتر" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "فیلترهای انتخابی" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "اِلمان‌های دارای مدیای بزرگ" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "پنجره‌ی پاپ‌آپ" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "فونت‌های راه دور" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "جاوااسکریپت" - }, - "popupOr": { - "description": "English: or", - "message": "یا" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "کلیک: غیر فعال/ فعال کردن uBlock₀ برای این سایت.\n\nکنترل+کلیک: غیر فعال کردن uBlock₀ فقط برای همین صفحه." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "کلیک کنید تا uBlock₀ برای این سایت غیر فعال شود.\n\nهمزمان کلیدکنترل را نگهدارید و کلیک کنید تا uBlock₀ فقط برای این صفحه غیر فعال شود." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "کلیک کنید تا uBlock₀ برای این سایت فعال شود." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "باز کردن داشبورد" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "قوانین همگانی: این ستون برای قوانینی است که برای همۀ سایت ها اعمال می شوند." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "قوانین محلی: این ستون برای قوانینی است که تنها در این وب‌گاه اعمال می شود.\nقوانین محلی بر قوانین سراسری برتری دارد." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "بازکردن واقعه‌نگار" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "تغییر وضعیت فیلترزیباسازی برای این سایت" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "کلیک کنید تا فیلتر زیبا سازی بر روی این سایت غیر فعال شود" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "کلیک کنید تا فیلتر زیبا سازی بر روی این سایت فعال شود" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "تغییر وضعیت مسدود کردن عناصر رسانه ای حجیم برای این سایت" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "کلیک کنید تا عناصر رسانه ای حجیم بر روی این سایت مسدود شوند" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "کلیک کنید تا از این به بعد عناصر رسانه ای حجیم روی این سایت مسدود نشوند" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "تغییر وضعیت انسداد همه‌ی پنجره های بالاپَر برای این سایت" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "کلیک کنید تا همۀ پنجره های بالاپَر در این سایت مسدود شوند" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "کلیک کنید تا دیگر هیچ کدام از پنجره های بالاپَر این سایت مسدود نشوند" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "تغییر وضعیت انسداد فونت های راه دور برای این سایت" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "کلیک کنید تا فونت های راه دور در این سایت مسدود شوند" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "کلیک کنید تا از این به بعد فونت های راه دور در این سایت مسدود نشوند" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "کلیک کنید تا جاوا اسکریپت در این سایت غیرفعال شود" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "کلیک کنید تا جاوا اسکریپت دیگر در این سایت غیرفعال نشود" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "ورود به حالت انتخاب اشیاء" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "گزارش یک اشکال در خصوص این وبسایت" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "برای دور انداختن تغییراتی که اعمال کرده اید کلیک کنید." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "برای دائمی سازی تغییرات کلیک کنید." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "ورود به حالت له کردن اشیاء" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "نگارش" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "حالت بلاک‌کردن غیرسخت‌گیر" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "ذخیره در منبع" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "ویرایش" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "لغو" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "ذخيره" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "خروجی گرفتن به فایل..." - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "نحوه استفاده: \u003Ccode>source destination type action\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>مستندات کامل\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "لیست قوانین فیلترینگ پویای شما." - }, - "rulesImport": { - "description": "", - "message": "وارد کردن از فایل..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "قوانین من" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "قوانین دائمی" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "بازگرداندن" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "مرتب‌سازی:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "مقصد" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "منبع " - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "نوع قانون" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "قوانین موقت" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "رفتار پیش فرض" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "تنظیمات مخصوص هر سایت این تنظیمات پیش فرض را لغو می‌کند" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "پیشرفته" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "قابلیت‌های مناسب برای کاربران فنی" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "من کاربر حرفه ای هستم (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>لازم است بخوانید\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "تنظیمات پیشرفته" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "ظاهر" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "فعال سازی پشتیبانی ذخیره سازی ابری" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "مخفی کردن نگاهدارنده اشیاء بلاک شده" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "بهینه سازی کور رنگی" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "استفاده از منوی متنی در زمانهای لازم" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "غیرفعال کردن حسابرسی پیوند" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "نمایش تعداد درخواست های بلاک شده بر روی آیکون" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "آخرین پشتیبانی:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "آخرین بازیابی:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "مسدود کردن براساس گزارشات سیاست امنیت محتوا" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "غیر فعال‌سازی فیلتر زیبا سازی" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "انسداد عناصر رسانه ای حجیم تر از {{input:number}} کیلوبایت" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "انسداد فونت های راه دور" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "غیرفعال کردن جاوا اسکریپت" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "تنظیمات" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "غیر فعال کردن واکشی اولیه (برای جلوگیری از هر گونه اتصال برای درخواست های مسدود شدۀ شبکه)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "رنگ اصلی دلخواه" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "پوسته" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "غیر فعال سازی راهنماها" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "اسامی متعارف را از حالت قفل خارج کنید" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "جلوگیری کردن از WebRTC از افشاسازی آدرس های IP محلی" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "یک میانبر وارد کنید" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "میانبرها" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "نمایش داشبورد" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "نمایش واقعه‌نگار" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — واقعه‌نگار" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "فضای مصرفی: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "آبونه شدن" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: آدرس اینترنتی زیر به فهرست فیلتر های سفارشی شما اضافه شود؟\n\nعنوان: \"{{title}}\"\nآدرس: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "یافتن گزارش‌های مشابه" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "باز کردن" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "پشتیبانی" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "ایجاد گزارش جدید" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "مستندات" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "مستنداتی که در \u003Ccode>uBlock/wiki\u003C/code> هست را بخوانید تا با تمام امکانات uBlock Origin آشنا شوید." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "سوال‌ها و پشتیبانی" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "پاسخ به سوالات و انواع راهنمایی‌ها در ساب‌ردیت \u003Ccode>/r/uBlockOrigin\u003C/code> ارائه می‌شود." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "مشکل فیلترها/وبسایتی ایراد دارد" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>مهم:\u003C/b> از مسدودکننده‌های مشابه دیگر در کنار یوبلاک اوریجین استفاده نکنید. این کار ممکن است باعث ایجاد مشکل در فیلترها برای برخی سایت‌ها شود." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "گزارش اشکال" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "اطلاعات مشکل‌گشایی" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "در زیر اطلاعات فنی آمده که ممکن است برای داوطلبانی که می‌خواهند در حل یک مشکل کمک کنند مفید باشد." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>مهم:\u003C/b> اطلاعات شخصی یا حساس به طور پیشفرض ویرایش و مبهم می‌شوند. اطلاعات مبهم‌شده ممکن است حل مشکل را سخت‌تر کند." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "علامت زدن صفحه به عنوان \"NSFW\" (\u003Ca href=\"https://fa.wikipedia.org/wiki/%D9%86%D8%A7%D9%85%D9%86%D8%A7%D8%B3%D8%A8_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%A9%D8%A7%D8%B1\">\"نامناسب برای کار\"\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "گزارش یک اشکال در فیلتر" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "برای این که وقت داوطلبان با گزارش‌های تکراری گرفته نشوند، لطفا مطمئن شوید که این اشکال قبلا گزارش نشده باشد." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "فهرست‌های پالایش روزانه به‌روز می‌شوند. مطمئن شوید که مشکل شما پیشتر در فهرست‌های پالایش اخیر بررسی نشده باشد." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "این صفحه‌ی وب..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- یک گزینه را انتخاب کنید --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "تبلیغات یا باقی‌مانده‌هایی از آن نشان می‌دهد" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "یوبلاک اوریجین را تشخیص می‌دهد" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "دارای ایراد مربوط به حریم خصوصی است" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "وقتی یوبلاک اوریجین فعال است عملکرد درستی ندارد" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "تب یا پنجره‌ی ناخواسته باز می‌کند" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "آدرس صفحه‌ی وب:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "تغییر وضعیت جاوا اسکریپت" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "اعمال تغییرات" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "خروجي گرفتن" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-whitelist_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "وارد کردن و الحاق" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "لیست سپید" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "دستور العمل‌های لیست سفید حکم می‌کند که uBlock₀ باید بر روی کدام یک از صفحات وب غیر فعال باشد. در هر خط فقط یک مورد. دستور العمل‌های نامعتبر بدون اشاره ای نادیده گرفته شده و بیرون انداخته می‌شوند." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/fi/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/fi/messages.json deleted file mode 100644 index 552d68a..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/fi/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Vahvista muutokset" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Ota omat suodattimet käyttöön" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Vie…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "omat-staattiset-ublock-suodattimet_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Tuo ja lisää…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Omat suodattimet" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Älä lisää suodattimia lähteistä, joihin et luota." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Vahvista muutokset" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Päivitä suodatinlistat automaattisesti" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Vanhentunut" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Yksi URL-osoite riviä kohden. Virheelliset osoitteet ohitetaan huomaamattomasti." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Mainokset" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Ärsykkeet" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Evästeilmoitukset" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Muut listat" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Laajennukseen sisältyvät" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Haittaohjelmasuojaus, tietoturva" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Yleishyödylliset" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Tietosuoja" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Alueet, kielet" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Sosiaaliset widgetit" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ohita kosmeettiset yleissuodattimet" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Kosmeettiset yleissuodattimet ovat sellaisia kosmeettisia suodattimia, jotka on tarkoitettu käytettäväksi kaikilla verkkosivustoilla. Tämä asetus poistaa tällaisten suodattimien käsittelystä verkkosivuille aiheutuvan, korkeamman keskusmuistin ja suorittimen kuormituksen.\n\nAsetuksen käyttö on suositeltavaa heikkotehoisilla laitteilla." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Tuo…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Viimeisin päivitys: {{ago}}.\nPakota päivitys painamalla tästä." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lista estetyistä osoitteista" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "Käytössä {{used}}/{{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} verkkosuodatinta + {{cosmeticFilterCount}} kosmeettista suodatinta:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Verkkovirhe esti resurssin päivityksen." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Suodatinlistat" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Kosmeettisten suodattimien tehtävä on piilottaa sivujen elementtejä, jotka on luokiteltu visuaalisiksi ärsykkeiksi ja joiden esto ei ole mahdollista verkkopyyntöjen estoon perustuvien suodatusmoottoreiden avulla." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Jäsennä ja pakota kosmeettiset suodattimet" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Tyhjennä kaikki välimuistit" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Keskeytä verkon toiminta, kunnes kaikki suodatinlistat on ladattu" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Päivitä nyt" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Päivitetään…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "Näytä sisältö" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "Gt" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "kt" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "Mt" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Varmuuskopioi tiedostoon…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "oma-ublock-varmuuskopio_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO:n omat suodatinlistat ovat vapaasti saatavilla seuraavista \u003Ca href=\"https://fi.wikipedia.org/wiki/Sis%C3%A4ll%C3%B6njakeluverkko\">sisällönjakeluverkoista\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Suodatinlistat päivitetään satunnaisesti valitusta sisällönjakeluverkosta (CDN)." - }, - "aboutChangelog": { - "description": "", - "message": "Muutoshistoria" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Lähdekoodi (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Avustajat" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Ulkopuoliset riippuvuudet (GPLv3-yhteensopiva):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Suodatinlistat" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Tietoja" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Tietosuojakäytäntö" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Palauta oletusasetukset…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Kaikki asetuksesi poistetaan ja uBlock₀ käynnistyy uudelleen. \n\nPalautetaanko uBlock₀ oletusasetuksiin?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Palauta tiedostosta…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Kaikki asetuksesi korvataan {{time}} varmuuskopioiduilla tiedoilla ja uBlock₀ käynnistyy uudelleen.\n\nKorvataanko kaikki nykyiset asetukset varmuuskopioduilla tiedoilla?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Tietoja ei voitu lukea tai ne ovat virheellisiä" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Lähdekoodi" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Käännökset" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Lisäasetukset" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Varoitus! Muuta näitä lisäasetuksia omalla vastuullasi." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Resurssien katselu" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Lataa painamalla tästä" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Tämän laitteen nimi:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Tuo pilvitallennustilasta" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Tuo pilvitallennustilasta ja yhdistä nykyisiin asetuksiin" - }, - "cloudPush": { - "description": "tooltip", - "message": "Vie pilvitallennustilaan" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Estä elementti kehyksestä…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Tilaa suodatinlista…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Salli suuret mediaelementit tilapäisesti" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Näytä lähdekoodi…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Hallintapaneeli" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Varoitus! Olet tehnyt muutoksia, joita ei ole vielä tallennettu" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ohita" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Älä poistu" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Palaa takaisin" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Sulje tämä ikkuna" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Jatka" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Pysyvästi" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Tilapäisesti" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Älä varoita tästä sivustosta uudelleen" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Sisältyy listoihin:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "ilman parametrejä" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Älä käytä tiukkaa estoa osoitteelle {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock₀ on estänyt seuraavan sivun latauksen:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Seuraavan suodattimen vuoksi:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Sivu estetty" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Tämän on oltava viimeinen merkintä" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} päivää sitten" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} tuntia sitten" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} minuuttia sitten" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "päivä sitten" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "tunti sitten" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "minuutti sitten" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Verkkovirhe: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Viimeinkin tehokas estotyökalu, joka ei kuormita prosessoria ja muistia." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "ei käytössä" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Vahvista muutokset" - }, - "genericBytes": { - "description": "", - "message": "tavua" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopioi leikepöydälle" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Kytke puoliskojen välisen vierityksen lukitus" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Palauta" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Valitse kaikki" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Lähetä" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Virheitä: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Kaikki" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Piilotetut" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "Suodata pyyntöhistoriaa" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Verkkotunnus" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Suodatin" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Tyyppi" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Tyhjennä pyyntöhistoria" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Nykyinen välilehti" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Kytke DOM-rakennenäkymä" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Konteksti" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Suodatin" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Suodatinlista" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Tiedot" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Osapuoli" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Juurikonteksti" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Sääntö" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Tyyppi" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown-kieli" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Pelkkä teksti" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Lista" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Taulukko" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Pyyntöhistoria" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pysäytä pyyntöhistoria (ohita kaikki saapuva tietoliikenne)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Kytke ponnahduspaneeli" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Lataa välilehden sisältö uudelleen" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1. osapuoli" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3. osapuoli" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "sallittu" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "estetty" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "tapahtumarikas" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "muokattu" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Ei" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Pyyntöhistorian suodatusvalinnat" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Muuta pyyntöhistorian suodatusta" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Merkinnät, jotka eivät täytä alla olevista kolmesta ehdosta jokaista, ohitetaan automaattisesti:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Konteksti" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Suodatin/sääntö" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Osapuoli" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Aika" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Piilota sarakkeita:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Näytä pyynnöille {{input}} riviä pystysuutaan laajennetussa tilassa" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Säilytä merkinnät viimeisten {{input}} minuutin ajalta" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Säilytä enintään {{input}} pyyntöä välilehteä kohden" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Säilytä enintään {{input}} sivulatausta välilehteä kohden" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Staattinen suodatin \u003Ccode>{{filter}}\u003C/code> löydettiin:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Staattista suodatinta ei löytynyt tällä hetkellä käytössä olevilta suodatinlistoilta" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Staattinen suodatus" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} verkkopyynnöt, joiden tyyppi on {{type}}, {{br}}URL vastaa osoitetta {{url}} {{br}}ja joiden lähde on {{origin}},{{br}}{{importance}} vastaava poikkeussuodatin." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Salli" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "mikä tahansa" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "mikä tahansa" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Estä" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "vaikka löytyisi" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "paitsi, kun löytyy" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "{{origin}}" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "{{type}}" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Konteksti: " - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL-sääntö" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Tyyppi: " - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Käynnistä pyyntöhistoria" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Estä elementti…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Kosmeettiset suodattimet" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Painallus, Ctrl-painallus" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Luo" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Verkkosuodattimet" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Valitse" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Esikatsele" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Lopeta" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1. osapuolen komentosarjat" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "3. osapuoli" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "kehys" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "3. osapuolen kehykset" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "Kolmannen osapuolen css/kuvat" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "komentosarja" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "3. osapuolen komentosarjat" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "kaikki" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "tällä sivulla" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Estetty tällä sivulla" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "pyyntöjä estetty" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "asennuksen jälkeen" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Estetty asennuksen jälkeen" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Verkkotunnuksia yhdistetty" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}}/{{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "verkkotunnuksia yhdistetty" - }, - "popupImageRulePrompt": { - "description": "", - "message": "kuvat" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "upotetut komentosarjat" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Vähemmän" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Enemmän" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Kosmeettinen suodatus" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Suuret mediaelementit" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Ponnahdukset" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Ulkoiset fontit" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "tai" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Painallus: poista uBlock₀ käytöstä/ota se käyttöön tällä sivustolla.\n\nCtrl+painallus: poista uBlock₀ käytöstä vain tällä sivulla." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Poista uBlock₀ käytöstä tällä sivustolla painamalla tästä.\n\nCtrl+painallus poistaa uBlock₀:n käytöstä vain tällä sivulla." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Ota uBlock₀ käyttöön tällä sivustolla painamalla tästä." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Avaa hallintapaneeli" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Yleiset säännöt: Sarake säännöille, joita käytetään kaikilla sivustoilla." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Paikalliset säännöt: Sarake säännöille, joita käytetään vain nykyisellä sivustolla.\nPaikalliset säännöt ohittavat yleiset säännöt." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Näytä pyyntöhistoria" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Muuta kosmeettisen suodatuksen tilaa tällä sivustolla" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Poista kosmeettinen suodatus käytöstä tällä sivustolla painamalla tästä" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Ota kosmeettinen suodatus käyttöön tällä sivustolla painamalla tästä" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Muuta suurten mediaelementtien eston tilaa tällä sivustolla" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Estä suuret mediaelementit tällä sivustolla painamalla tästä" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Salli suuret mediaelementit tällä sivustolla painamalla tästä" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Muuta ponnahduseston tilaa tällä sivustolla" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Estä kaikki ponnahdukset tällä sivustolla painamalla tästä" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Salli kaikki ponnahdukset tällä sivustolla painamalla tästä" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Muuta ulkoisten fonttien lataustilaa tällä sivustolla" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Estä ulkoisten fonttien lataus tällä sivustolla painamalla tästä" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Salli ulkoisten fonttien lataus tällä sivustolla painamalla tästä" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Estä JavaScript tällä sivustolla painamalla tästä" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Salli JavaScript tällä sivustolla painamalla tästä" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Avaa elementtien valintatila" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Ilmoita ongelmasta tällä verkkosivustolla" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Kumoa muutoksesi painamalla tästä." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Tee muutoksistasi pysyviä painamalla tästä." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Avaa elementtien piilotustila" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versio" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Kevennetty estotila" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Pysyväksi" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "omat-dynaamiset-ublock-saannot_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Muokkaa" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Hylkää" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Tallenna" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Vie tiedostoon…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Sääntösyntaksi: \u003Ccode>lähde kohde tyyppi toiminto\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>täysi ohje\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Listaus dynaamisista suodatussäännöistä." - }, - "rulesImport": { - "description": "", - "message": "Tuo tiedostosta…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Omat säännöt" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Pysyvät säännöt" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Palauta" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Järjestys:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Kohde" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Lähde" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Säännön tyyppi" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Tilapäiset säännöt" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Oletuskäytännöt" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Nämä oletuskäytännöt voidaan ohittaa sivustokohtaisesti" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Lisäasetukset" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Teknisille käyttäjille sopivat ominaisuudet" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Olen edistynyt käyttäjä" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "Lisäasetukset" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Ulkoasu" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Käytä pilvitallennusta" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Piilota estettyjen elementtien paikkamerkit" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Värisokeille sopiva tila" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Käytä kontekstivalikkoa tarvittaessa" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Älä salli hyperlinkkien käytönseurantaa" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Näytä estettyjen pyyntöjen määrä" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Viimeisin varmuuskopio:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Viimeisin palautus:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Estä CSP-raportit" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Älä käytä kosmeetista suodatusta" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Estä mediaelementit, jotka ovat suurempia kuin {{input:number}} kt" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Estä ulkoisten fonttien lataus" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Poista JavaScript käytöstä" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Asetukset" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Älä käytä esihakua (estää kaikki yhteydet estetyiltä verkkopyynnöiltä)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Oma korostusväri" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Teema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Älä näytä työkaluvihjeitä" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Paljasta kanoniset nimet (CNAME-uncloaking)" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Estä paikallisen IP-osoitteen vuoto WebRTC:n välityksellä" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Syötä näppäinyhdistelmä" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Pikanäppäimet" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Näytä Hallintapaneeli" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Näytä pyyntöhistoria" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Pyyntöhistoria" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Tallennustilan käyttö: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Tilaa" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Lisätäänkö seuraava URL-osoite omiin suodatinlistoihisi?\n\nOtsikko: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Etsi samankaltaisia ilmoituksia" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Avaa" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Tuki" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Älä sisällytä" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Luo uusi ilmoitus" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Ohje" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Lue ohjeet sijainnista \u003Ccode>uBlock/wiki\u003C/code> tutustuaksesi uBlock Originin kaikkiin ominaisuuksiin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Kysymykset ja tuki" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Vastauksia kysymyksiin ja muuta tukea on saatavilla \u003Ccode>/r/uBlockOrigin\u003C/code>-subredditistä." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Suodatusongelma/sivusto on hajonnut" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Ilmoita ongelmista suodatuksessa tietyillä sivustoilla \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code>-ongelmaseurannassa\u003C/span>. \u003Cu>Vaatii GitHub-tilin\u003C/u>." - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tärkeää:\u003C/b> Vältä muiden vastaavien estotyökalujen samanaikaista käyttöä uBlock Originin kanssa, koska se voi aiheuttaa ongelmia joillakin sivustoilla." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Vinkkejä:\u003C/b> Varmista, että suodatinlistasi ovat ajan tasalla. \u003Cspan data-url=\"logger-ui.html#_\">Pyyntöhistoria\u003C/span> on pääasiallinen työkalu suodattimiin liittyvien ongelmien selvityksessä." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Virheilmoitus" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Ilmoita uBlock Origin -laajennuksen ongelmista \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock\u003C/code>-ongelmaseurannanssa\u003C/span>. \u003Cu>Vaatii GitHub-tilin\u003C/u>." - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Vianmääritystiedot" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Alla on teknisiä tietoja, joista voi olla hyötyä vapaaehtoisille, jotka pyrkivät auttamaan ongelmasi ratkaisussa." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Tärkeää:\u003C/b> Mahdolliset yksityiset ja arkaluonteiset tiedot poistetaan oletusarvoisesti. Tietojen puuttuminen saattaa vaikeuttaa ongelman ratkaisemista." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Luokittele verkkosivu ns. työpaikalle sopimattomaksi, \"NSFW\" (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">\"Not Safe For Work\"\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Ilmoita suodatinongelmasta" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Välttääksesi vapaaehtoisten kuormittamisen ylimääräisillä ilmoituksilla, tarkista ensin onko ongelmasta jo ilmoitettu." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Suodatinlistoja päivitetään päivittäin. Varmista, ettei ongelmaasi ole jo korjattu listojen uusissa versioissa." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Vahvista ongelman edelleen esiintyvän kyseisellä verkkosivulla." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Verkkosivu…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Valitse aihe --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Näyttää mainoksia tai niiden jäänteitä" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Sisältää peiteruutuja tai muita ärsykkeitä" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Havaitsee uBlock Originin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Sisältää tietosuojaan liittyviä ongelmia" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Hajoaa, kun uBlock Origin on käytössä" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Avaa ei-toivottuja välilehtiä tai ikkunoita" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Verkkosivun osoite:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Sisällytä" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Kytke kosmeettinen suodatus" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Kytke JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Suodatus ei onnistunut kunnolla selaimen käynnistyessä. Päivitä sivu varmistaaksesi kunnollisen suodatuksen." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Vahvista muutokset" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Vie…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "omat-luotetut-ublock-sivustot_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Tuo ja lisää…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Luotetut sivustot" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Luotettu sivusto -luokitukset määrittelevät millä sivuilla uBlock Originia ei käytetä. Yksi osoite riviä kohden." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/fil/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/fil/messages.json deleted file mode 100644 index 92d5006..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/fil/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Ilapat ang mga pagbabago" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "I-export" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "mga-static-filter-ko-sa-ublock_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "I-import at idagdag" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Mga filter ko" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Huwag magdagdag ng pangsala mula sa mga hindi katiwa-tiwalang pinagmulan." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Ilapat ang mga pagbabago" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Awtomatikong i-update ang listahan ng mga filter" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Luma na" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Isang URL kada linya. Hindi papansinin ang mga invalid na URL." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Mga ad" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Mga nakakaabalang bagay" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Ipinasadya" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Built-in" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Mga domain na may malware" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Maraming-mapaggagamitan" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Pagkapribado" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Mga rehiyon o wika" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Huwag pansinin ang mga generikong kosmetikong filter" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Ang generikong kosmetikong filter ay ang mga kosmetikong filter na para sa lahat ng mga website. Nakakatipid ito ng memorya at CPU sapagkat ihihinto ang pagproseso sa mga generikong kosmetikong filter.\n\nMainam na gamitin ang opsyong ito sa mga device na hindi ganoon kalakas." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Mag-import…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Huling update: {{ago}}.\nPindutin upang pilitin ang pag-update." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Listahan ng mga naharang na host" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} ginagamit sa {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} (na) mga network filter + {{cosmeticFilterCount}} (na) mga kosmetikong filter mula sa:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Hindi na-update ang resource dahil sa isang network error." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Listahan ng mga filter" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Hinaharang ng kosmetikong filter ang mga elemento sa web page na nakakaabala at hindi maharang ng mga pangharang na nakabase sa mga hiling sa network." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Iproseso at ipatupad ang mga kosmetikong filter" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Tanggalin lahat ng mga cache" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Itigil ang lahat ng mga aktibidad sa network hanggang sa ma-load ang lahat ng mga listahan ng mga filter" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "I-update ngayon" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Ina-update…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "tingnan ang nilalaman" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "I-back up sa file…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ublock-backup-ko_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Naka-host sa mga \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN\u003C/a> na ito ang mga listahan ng mga filter ng uBO:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Random na pumipili ng CDN ang uBO kung may listahan ng mga filter na kailangang i-update" - }, - "aboutChangelog": { - "description": "", - "message": "Talaan ng mga pagbabago" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Source code (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Mga nag-ambag" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Mga panlabas na dependency (angkop sa GPLv3)" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Listahan ng mga filter" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Tungkol" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Patakaran sa pagkapribado" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "I-reset sa mga default na setting…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Tatanggalin lahat ng mga setting mo, at magre-restart ang uBlock₀.\n\nI-reset ang uBlock₀ sa default na mga setting?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Ibalik mula sa file…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Papalitan ng datos na binack-up noong {{time}} ang mga setting mo, at magre-restart ang uBlock₀.\n\nPayagang palitan ng naka-back up na data ang kasalukuyan mong mga setting?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Hindi mabasa o invalid ang datos" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Source code" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Mga pagsasalin" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Karagdagang mga setting" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Babala! Mag-ingat kung babaguhin mo ang mga advanced na setting." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Tingnan ang mga Asset" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Pindutin upang i-load" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Itong pangalan ng device:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Mag-export mula sa imbakan sa cloud" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Mag-export mula sa imbakan sa cloud at ihalo sa mga kasalukuyang setting" - }, - "cloudPush": { - "description": "tooltip", - "message": "I-export sa imbakan sa cloud" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Harangin ang elemento sa frame…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subaybayan ang listahan ng filter…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Pansamantalang payagan ang mga malalaking elemento ng media" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Tingnan ang source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Dashboard" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Babala! Hindi pa na-save ang ilan mong mga pagbabago" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Balewalain" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Manatili" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Bumalik" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Isarado ang window na ito" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Tumuloy" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanente" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Pansamantala" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Huwag na akong balaan ulit tungkol sa site na ito" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Nahanap sa:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "kung walang mga parameter" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Patayin ang striktong pagharang para sa {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "Hinarang ng uBlock Origin ang sumusunod na pahina sa paglo-load:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Dahil sa sumusunod na filter:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Hinarang ang pahina" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Dapat mahuli ang entry na ito" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} (na) mga araw ang nakalipas" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} (na) mga oras ang nakalipas" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} (na) mga minuto ang nakalipas" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "isang araw ang nakalipas" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "isang oras ang nakalipas" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "isang minuto ang nakalipas" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Error sa network: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Mainam na pangharang sa content. Magaan sa CPU at memorya." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "hindi umaandar" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Ilapat ang mga pagbabago" - }, - "genericBytes": { - "description": "", - "message": "(na) mga byte" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopyahin sa clipboard" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Paandarin/patayin ang naka-lock na pagso-scroll" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Ibalik" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Piliin lahat" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "I-submit" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Lahat" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Walang tab" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "nilalaman ng filter sa pagtatala" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domain" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filter" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Uri" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Linisin ang talaan" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Kasalukuyang tab" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Buksan/isara ang inspektor ng DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Konteksto" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Listahan ng filter" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Mga detalye" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Pagkapartido" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Pangunahing konteksto" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Patakaran" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Uri" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Plain" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Listahan" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Talahanayan" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "wiki ng uBlock Origin: Ang talaan" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Ihinto ang tagatala (itapon ang lahat ng papasok na datos)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Buksan/isara ang popup panel" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "I-reload ang nilalaman ng tab" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1st-party" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3rd-party" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "pinayagan" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "hinarang" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "inaksyunan" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "binago" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Hindi" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Mga opsyon sa pagfi-filter ng talaan" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Paandarin/patayin ang pagfi-filter ng talaan" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Awtomatikong itatapon ang mga entry sa talaan na hindi nakakasunod sa lahat ng mga kondisyon sa ibaba:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Konteksto" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/patakaran" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Pagkapartido" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Oras" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Itago ang mga hanay:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Gumamit ng {{input}} (na mga) linya kada entry sa mode na pinalaki patayo" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Panatilihin ang mga entry mula sa huling {{input}} (na mga) minuto" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Panatilihin ang hanggang sa {{input}} entry kada tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Panatilihin ang hanggang sa {{input}} page load kada tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Statikong filter \u003Ccode>{{filter}}\u003C/code> sa:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Hindi mahanap ang statikong filter sa mga kasalukuyang ipinapatupad na listahan ng mga filter" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statikong filter" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} ang mga hiling sa network na {{type}} {{br}}kung tumutugma ang URL address nito sa {{url}} {{br}}at nagmumula ito sa {{origin}},{{br}}{{importance}} may tugmang exception filter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Payagan" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "mula saanman" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "anumang uri" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Harangin" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "kahit na" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "maliban na lang kung" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "mula sa “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "uri “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Konteksto:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Patakaran sa URL" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Uri:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Ituloy ang pagtatala" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Harangin ang elemento…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Mga kosmetikong filter" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "I-click, Ctrl-click" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Lumikha" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Mga filter sa network" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Pumili" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Silipin" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Umalis" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "mga 1st-party na script" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "3rd-party" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "mga 3rd-party na frame" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "mga 3rd-party na CSS/larawan" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "mga 3rd-party na script" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "lahat" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "sa pahinang ito" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Hinarang sa pahinang ito" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "mga hinarang na hiling" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "mula pagka-install" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Hinarang mula pagka-install" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Mga konektadong domain" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} sa {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "mga konektadong domain" - }, - "popupImageRulePrompt": { - "description": "", - "message": "mga larawan" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "mga nakapaloob na script" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Mas konti" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Higit pa" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Kosmetikong pagfi-filter" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Malalaking mga elemento ng media" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Mga window na nagpa-pop-up" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Remote fonts" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "o" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Click: patayin/paandarin ang uBlock₀ para sa site na ito.\n\nCtrl+click: patayin ang uBlock₀ sa pahinang ito lang." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "I-click para patayin ang uBlock₀ sa site na ito.\n\nI-Ctrl+click para patayin ang uBlock₀ sa pahinang ito lang." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "I-click para paandarin ang uBlock₀ sa site na ito." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Buksan ang dashboard" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Mga pangkalahatang patakaran: ang hanay na ito ay para sa mga patakarang ipinapatupad sa lahat ng mga site." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Mga lokal na patakaran: ang hanay na ito ay para sa mga patakarang ipinapatupad sa site site na ito lamang. Mas sinusunod ang mga lokal na patakaran kaysa sa mga pandaigdigang patakaran." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Buksan ang talaan" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Paandarin/patayin ang kosmetikong pagfi-filter sa site na ito" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Pindutin upang ihinto ang kosmetikong pagfi-filter sa site na ito" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Pindutin upang paandarin ang kosmetikong pagfi-filter sa site na ito" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Paandarin/patayin ang pagharang sa mga malalaking elemento ng media sa site na ito" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Pindutin upang harangin ang mga malalaking elemento ng media sa site na ito" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Pindutin upang ihinto ang pagharang sa mga malalaking elemento ng media sa site na ito" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Paandarin/patayin ang pagharang sa mga popup sa site na ito" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Pindutin upang harangin lahat ng mga popup sa site na ito" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Pindutin upang payagan lahat ng mga popup sa site na ito" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Paandarin/patayin ang pagharang sa remote fonts sa site na ito" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Pindutin upang harangin ang remote fonts sa site na ito" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Pindutin upang ihinto ang pagharang sa remote fonts sa site na ito" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Pindutin upang harangin ang JavaScript sa site na ito" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Pindutin upang paandarin ang JavaScript sa site na ito" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Buksan ang tagapili sa mga elemento" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Mag-ulat ng isyu sa website na ito" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Pindutin upang kanselahin ang mga pagbabago mo." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Pindutin upang maging permanente ang mga pagbabago mo." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Buksan ang pantanggal sa mga elemento" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Bersyon" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Babaan ang lebel ng pagharang" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Ilapat" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "mga-dynamikong-patakaran-ko-sa-ublock_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Baguhin" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Itapon" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "I-save" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "I-export sa file" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Format ng patakaran: \u003Ccode>pinagmulan patutunguhan uri aksyon\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>kumpletong dokumentasyon [sa Ingles]\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Listahan ng mga dynamikong patakaran mo sa pagfi-filter." - }, - "rulesImport": { - "description": "", - "message": "Mag-import mula sa file…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Mga patakaran ko" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Mga permanenteng patakaran" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Ibalik" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Pagsunud-sunurin:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Patutunguhan" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Pinagmulan" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Uri ng patakaran" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Mga panandaliang patakaran" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Default na ugali" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Mas sinusunod ang mga per-site na ugali kaysa sa default na ugali" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Advanced" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Mga feature na angkop lang sa mga gumagamit na maraming alam" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Isa akong advanced user" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "karagdagang mga setting" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Hitsura" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Paandarin ang suporta sa imbakan sa cloud" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Itago ang placeholder ng mga hinarang na mga elemento" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Para sa color-blind" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Gamitin ang menu sa konteksto kung naaangkop" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Pigilan ang pag-audit sa hyperlink" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Ipakita kung ilan ang mga naharang na hiling sa icon" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Huling pag-backup:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Huling pag-restore:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Harangin ang mga ulat ng CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Ihinto ang kosmetikong pagfi-filter" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Harangin ang mga elemento ng media na mas malaki sa {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Harangin ang remote fonts" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Harangin ang JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Mga Setting" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Pigilan ang browser na mag-preload ng mga pahinang iniisip nito na baka bisitahin mo (upang pigilan ang koneksyon sa mga hinarang na site)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Pinasadyang kulay ng accent" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Huwag magpakita ng mga tooltip" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Ilantad ang totoong pagkakakilanlan ng mga kanonikal na pangalan (CNAME)" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Pigilan ang WebRTC na magkalat ng mga lokal na IP address" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Magsulat ng shortcut" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Mga Shortcut" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Ipakita ang Dashboard" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Ipakita ang Talaan" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Talaan" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Nagamit na imbakan: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Subaybayan" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Idagdag ang sumusunod na mga URL sa iyong listahan ng mga pinasadyang filter?\n\nPangalan: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Maghanap ng mga magkahawig na ulat" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Buksan" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Suporta" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Itago" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Gumawa ng bagong ulat" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentasyon" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Basahin ang dokumentasyon sa \u003Ccode>uBlock/wiki\u003C/code> upang matuto tungkol sa lahat ng mga feature ng uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Mga tanong at suporta" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Makakapagtanong at sasagutin ka, o makakahingi ka ng higit pang tulong sa subreddit na \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Mga problema sa filter/may problema sa website" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Iulat ang mga problema sa filter sa iilang mga website sa \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">issue tracker ng \u003Ccode>uBlockOrigin/uAssets\u003C/code>\u003C/span>. \u003Cu>Kailangan mo ng account sa GitHub.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Mahalaga:\u003C/b> Upang maiwasan ang mga problema sa ilang mga website, iwasang gumamit ng iba pang mga katulad na pangharang sa content kasabay ng uBlock Origin." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tip:\u003C/b> Siguraduhing updated ang listahan mo ng mga filter. Gamitin mo ang \u003Cspan data-url=\"logger-ui.html#_\">talaan\u003C/span> upang ayusin ang mga problemang naidudulot ng ilang mga filter." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Mag-ulat ng problema" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Iulat ang mga problema ng mismong uBlock Origin sa \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">issue tracker ng \u003Ccode>uBlockOrigin/uBlock-issues\u003C/code>\u003C/span>. \u003Cu>Kailangan mo ng account sa GitHub.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Impormasyon para sa Pag-aayos ng Problema" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Nasa ibaba ang mga teknikal na impormasyon na maaaring makatulong sa mga volunteer na tumutulong masolusyonan ang problema mo." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Mahalaga:\u003C/b> Sa default, nakatago ang mga pribado o sensitibong impormasyon. Maaaring mas mahirap masolusyonan ang mga problema dahil sa pagtatago ng pribadong impormasyon." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Markahan bilang hindi dapat tinitignan sa pook-trabahuan (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Mag-ulat ng problema ng filter" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Siguraduhing wala pang ibang nakakapag-ulat ng problema mo upang hindi bahain ng trabaho ang mga volunteer." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Ang listahan ng pangsala ng kontent ay araw-araw binabago at dinadag-dagan. Siguruhin na ang iyong isyu ay hindi pa napauukulan sa mga pinakabagong update sa listahan ng pangsala. " - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Kumpirmahin na nanatili ang isyu pagkatapos i-reload ang nagkaproblema na pahina ng web." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Ang web page…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pumili rito --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Nagpapakita ng mga ad o mga tira-tira ng ad" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "May overlay o iba pang mga panggulo" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Nade-detect ang uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "May mga problema sa pagkapribado" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Nasisira kung umaandar ang uBlock Origin" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Kung anu-anong mga tab o window ang binubuksan" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Address ng web page:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Huwag itago" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Paandarin/patayin ang kosmetikong pagfi-filter" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Hindi nakapagsala ng maayos nung binuksan ang browser. I-reload ang pahina upang masiguro ang tamang proseso ng pagsasala." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Ilapat ang mga pagbabago" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "I-export" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "mga-pinagkakatiwalaan-kong-site-sa-ublock_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "I-import at idagdag" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Mga pinagkakatiwalaang site" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Idinidikta nito kung sa aling mga webpage papatayin ang uBlock Origin. Isang entry kada linya." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/fr/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/fr/messages.json deleted file mode 100644 index eb23b56..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/fr/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Appliquer" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Activer mes filtres personnalisés" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Exporter" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "mes-filtres-statiques-ublock_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importer" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Mes filtres" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Faire confiance aux filtres personnalisés" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Il est recommandé de ne pas ajouter de filtres en provenance de sources non fiables." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Appliquer" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Mettre à jour les listes de filtres sélectionnées automatiquement" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Obsolète" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Une adresse Web par ligne. Les adresses Web invalides seront ignorées sans avertissement." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Publicités" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Nuisances" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Bannières de cookie" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Vos propres listes" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Intégrées" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Protection anti-malware et sécurité" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Tout usage" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Confidentialité" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Régions, langues" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Widgets de réseaux sociaux" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignorer les filtres esthétiques génériques" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Les filtres esthétiques génériques sont des filtres esthétiques conçus pour être appliqués sur tous les sites Web. Activer cette option réduira l'utilisation en mémoire et en processeur sur les pages Web.\n\nIl est recommandé d'activer ce paramètre sur des appareils à la puissance modeste." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importer" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Dernière mise à jour effectuée : {{ago}}\nCliquez pour forcer la mise à jour" - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Listes prédéfinies d'hôtes à bloquer" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} utilisé(s) sur un total de {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} filtre(s) réseau et {{cosmeticFilterCount}} filtre(s) esthétique(s) sont actuellement en vigueur :" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Une erreur réseau a empêché la mise à jour de la ressource." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Listes de filtres" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Les filtres esthétiques servent à cacher des éléments d'une page Web considérés comme une nuisance visuelle, et qui ne peuvent pas être bloqués par le filtrage réseau basé sur les requêtes." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Utiliser en plus les règles esthétiques" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Vider tous les caches" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspendre l'activité réseau jusqu'au chargement de toutes les listes de filtres" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Mettre à jour maintenant" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Mise à jour en cours…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "Voir le contenu" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "Go" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "Ko" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "Mo" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Exporter vers un fichier" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "mes-donnees-ublock_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Les propres listes de filtres d'uBO sont hébergées gratuitement sur les \u003Ca href=\"https://fr.wikipedia.org/wiki/R%C3%A9seau_de_diffusion_de_contenu\">RDC\u003C/a> suivants :" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Un RDC choisi aléatoirement est utilisé lorsqu'une liste de filtres doit être mise à jour." - }, - "aboutChangelog": { - "description": "", - "message": "Journal des changements" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Code Source (Licence GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Contributeurs" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Dépendances externes (compatibles GPLv3) :" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Listes de filtres" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "À propos" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Politique de confidentialité" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Réinitialiser les réglages" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Vos paramètres seront effacés, puis uBlock₀ redémarrera.\n\nProcéder à la réinitialisation des paramètres ?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Restaurer depuis un fichier…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Vos paramètres seront remplacés par les données sauvegardées le {{time}}, puis uBlock₀ redémarrera.\n\nProcéder à l'importation ?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Les données ne peuvent être lues ou sont invalides" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Code source" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Traductions" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Paramètres avancés" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Attention, modifiez ces paramètres avancés à vos risques et périls." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Visionneuse d'éléments" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Cliquez pour charger" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Nom de ce périphérique :" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Importer depuis le stockage dans le nuage" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importer depuis le stockage dans le nuage et fusionner avec les réglages actuels" - }, - "cloudPush": { - "description": "tooltip", - "message": "Exporter vers le stockage dans le nuage" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Bloquer l'élément dans le cadre" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Souscrire à la liste de filtres" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Autoriser temporairement le chargement d'éléments médias à taille plus importante" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Voir la source…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Tableau de bord" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Attention, vous avez des changements non enregistrés !" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignorer" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Rester ici" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Retour" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Fermer cette fenêtre" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Poursuivre" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "De manière définitive" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "De manière temporaire" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Ne plus m'avertir à propos de ce site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Trouvé dans :" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "sans paramètres" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Désactiver le blocage strict du domaine {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock₀ a empêché le chargement de la page suivante :" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "À cause du filtre suivant :" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Page bloquée" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "Il y a {{value}} jours" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "Il y a {{value}} heures" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "Il y a {{value}} minutes" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "Il y a un jour" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "Il y a une heure" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "Il y a une minute" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Erreur réseau : {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Un bloqueur de nuisances efficace, qui ménagera votre processeur et votre mémoire vive." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "Arrêt" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Appliquer" - }, - "genericBytes": { - "description": "", - "message": "octets" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Copier vers le presse-papier" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Verrouiller/Déverrouiller le défilement" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Rétablir" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Sélectionner tout" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Appliquer" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Erreurs : {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Tout" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "En coulisses" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "Filtrer le contenu du journal" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domaine" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filtre" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Type" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Vider le journal" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Onglet courant" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Activer/Désactiver l'Inspecteur DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Contexte" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filtre" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Liste de filtres" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Détails" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Niveau de partie" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Contexte racine" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Règle" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Type" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "Lien" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Brut" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Liste" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tableau" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "Page Wiki uBlock Origin : Le journal" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Mettre en pause le journal (désactive toutes les données entrantes)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Activer/Désactiver le panneau pop-up" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Recharger le contenu de l'onglet" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Domaine de la page" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Tierce-partie" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "autorisée" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "bloquée" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "dynamique" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "Modifié" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Pas" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Options de filtrage du journal" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Activer le filtrage du journal" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Les entrées du journal ne remplissant aucune des trois conditions ci-dessous seront automatiquement abandonnées :" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Contexte" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filtre/Règle" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Niveau de partie" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Heure" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Cacher les colonnes :" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Utiliser {{input}} lignes par entrée dans le mode développé verticalement" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Conserver les entrées des {{input}} dernières minutes" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Préserver {{input}} entrées maximum par onglet" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Préserver {{input}} chargements de page maximum par onglet" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Filtre statique \u003Ccode>{{filter}}\u003C/code> trouvé dans :" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Filtre statique introuvable parmi les listes de filtre actives" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Filtre statique" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} les requêtes réseau de {{type}} {{br}} dont l'adresse Web correspond à {{url}} {{br}} qui provient du domaine {{origin}}, {{br}}{{importance}} il y a un filtre d'exception correspondant" - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Autoriser" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "de n'importe où" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "tout type" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Bloquer" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "même s'" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "sauf quand" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "\"{{origin}}\"" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "type \"{{type}}\"" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Contexte :" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Règle de lien" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Type :" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Terminer la mise en pause du journal" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Bloquer l'élément" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Filtres esthétiques" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Clic, Ctrl-clic" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Créer" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Filtres de réseau" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Cibler" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Aperçu" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Quitter" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "Scripts du domaine de la page" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "Tierce-partie" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "cadre" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "Cadres de tierce-partie" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/Images de tierce-partie" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "Scripts de tierce-partie" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "Tout" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "sur cette page :" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Bloqués sur cette page" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "Requêtes bloquées" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "depuis toujours :" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Bloqués depuis l'installation" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}}, soit {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domaines connectés" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} sur un total de {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "Domaines connectés" - }, - "popupImageRulePrompt": { - "description": "", - "message": "Images" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "Scripts embarqués" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Moins" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Plus" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Filtrage esthétique" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Médias de grande taille" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Fenêtres pop-ups" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Polices d'écriture distantes" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "soit" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Clic : Désactiver/Activer uBlock₀ pour ce site.\n\nCtrl+clic : Désactiver uBlock₀ uniquement sur cette page." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Cliquez pour désactiver uBlock₀ pour ce site\n\nCtrl+Clic pour désactiver uBlock₀ uniquement pour cette page" - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Cliquez pour activer uBlock₀ pour ce site" - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Ouvrir le Tableau de bord" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Règles globales : Cette colonne concerne des règles qui s'appliquent partout." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Règles locales : Cette colonne concerne des règles qui ne s'appliquent que sur le site actuellement visité.\nLes règles locales supplantent les règles globales." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Ouvrir le journal des requêtes" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Activer/Désactiver le filtrage esthétique pour ce site" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Cliquez pour désactiver le filtrage esthétique sur ce site" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Cliquez pour activer le filtrage esthétique sur ce site" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Bloquer/Autoriser le chargement d'éléments médias à taille plus importante pour ce site" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Cliquez pour bloquer les médias de grande taille sur ce site" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Cliquez pour cesser de bloquer les médias de grande taille sur ce site" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Activer/Désactiver le blocage des fenêtres pop-ups pour ce site" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Cliquez pour bloquer toutes les pop-ups de ce site" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Cliquez pour cesser de bloquer toutes les pop-ups de ce site" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Autoriser/Bloquer le téléchargement des polices d'écriture distantes pour ce site" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Cliquez pour bloquer les polices d'écriture distantes sur ce site" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Cliquez pour cesser de bloquer les polices d'écriture distantes sur ce site" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Cliquez pour désactiver JavaScript sur ce site" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Cliquez pour cesser de désactiver JavaScript sur ce site" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Entrer en mode Sélecteur" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Rapporter un problème sur ce site Web" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Cliquez pour annuler les changements opérés." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Cliquez pour rendre les changements opérés permanents." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Entrer en mode Zappeur" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Version" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Détendre le mode de blocage" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Appliquer" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "mes-regles-de-filtrage-dynamique-ublock_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Éditer" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Annuler" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Enregistrer" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Exporter vers un fichier" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Syntaxe : \u003Ccode>source destination type action\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>Documentation complète en anglais\u003C/a>)" - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Liste de vos règles de filtrage dynamique" - }, - "rulesImport": { - "description": "", - "message": "Importer à partir du fichier…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Mon filtrage dynamique" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Règles permanentes" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Rétablir" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Trier :" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destination" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Source" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Type de règle" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Règles temporaires" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Comportement par défaut" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Ces comportements par défaut peuvent être remplacés au cas par cas" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Avancé" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Fonctionnalités convenant uniquement aux utilisateurs avancés" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Je suis un utilisateur/une utilisatrice avancé(e)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "Paramètres avancés" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Apparence" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Activer le stockage des paramètres dans le nuage" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Cacher les espaces réservés aux éléments bloqués" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Mode Daltonien" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Utiliser le menu contextuel si possible" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Désactiver l'audit hyperlien" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Afficher le nombre de requêtes bloquées sur l'icône" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Date de la dernière sauvegarde :" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Date de la dernière restauration :" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Bloquer les rapports CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Désactiver le filtrage esthétique" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Bloquer les éléments médias d'une taille supérieure à {{input}} Ko" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Bloquer les polices d'écriture distantes" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Désactiver JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Paramètres" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Désactiver la prédiction des actions sur le réseau (afin d'empêcher toute connexion pour les requêtes réseau bloquées)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Couleur d'accentuation personnalisée" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Thème" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Désactiver les infobulles" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Révéler les noms canoniques" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Empêcher la fuite des adresses IP locales via WebRTC" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Saisir un raccourci" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Raccourcis" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Afficher le Tableau de bord" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Voir le Journal" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Journal des requêtes réseau" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Espace de stockage utilisé : {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Souscrire" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Ajouter le lien suivant à votre sélection de listes de filtrage ?\n\nTitre : \"{{title}}\"\nLien : {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Trouver des rapports similaires" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Ouvrir" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Support" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Retirer les informations potentiellement privées ou sensibles" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Créer un rapport" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentation" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Lisez la documentation à \u003Ccode>uBlock/wiki\u003C/code> pour apprendre toutes les fonctionnalités d'uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Questions et support" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Les réponses aux questions et autres formes d'assistance sont fournies dans le subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Problèmes de filtrage/Site Web non fonctionnel" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Rapportez les problèmes de filtrage avec des sites Web spécifiques dans le \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">suivi des problèmes\u003C/span>. \u003Cu>Nécessite un compte GitHub.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important :\u003C/b> Evitez d'utiliser des bloqueurs similaires à uBlock Origin en même temps que ce dernier, car cela peut causer des problèmes de filtrage sur certains sites Web." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Astuces :\u003C/b> Assurez-vous que vos listes de filtres sont à jour. \u003Cspan data-url=\"logger-ui.html#_\">Le journal des requêtes\u003C/span> est l'outil principal pour diagnostiquer des problèmes liés au filtrage." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Rapporter un bogue" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Rapportez des problèmes avec l'extension uBlock Origin elle-même dans le \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">suivi des problèmes\u003C/span>. \u003Cu>Nécessite un compte GitHub.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Informations de dépannage" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Veuillez trouver ci-dessous les informations techniques pouvant aider les bénévoles à vous assister dans la résolution de problème." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important :\u003C/b> Les informations potentiellement privées ou sensibles sont retirées par défaut. Ainsi éditées, elles peuvent compliquer la résolution de problème." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Marquer le site Web en tant que \"NSFW\" (\u003Ca href=\"https://fr.wikipedia.org/wiki/Not_safe_for_work\">\"Not Safe For Work\", c'est-à-dire pour public averti/inapproprié au travail\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Rapporter un problème de filtre" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Pour éviter d'encombrer les contributeurs avec des rapports en double, veuillez vérifier que le problème n'a pas déjà été rapporté." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Les listes de filtres sont actualisées tous les jours. Assurez-vous que votre problème n'ait pas déjà été résolu dans les listes de filtres les plus récentes." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Vérifiez que le problème persiste après avoir rechargé la page Web problématique." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "La page Web…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Choisir un type --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "affiche des publicités ou des résidus de publicité" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "a une surcouche ou d'autres nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "détecte uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "a des problèmes de confidentialité" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "ne fonctionne pas correctement quand uBlock Origin est activée" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "ouvre des onglets ou fenêtres indésirables" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Adresse de la page Web :" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Restaurer les informations potentiellement privées ou sensibles" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Commuter le filtrage esthétique" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Commuter JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Échec du filtrage au lancement du navigateur. Rechargez la page pour assurer un filtrage correct." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Appliquer" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Exporter" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "mes-sites-fiables-ublock-{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importer" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Sites Web fiables" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Les directives de site de confiance indiquent sur quelles pages Web uBlock Origin devrait être désactivée. Une entrée par ligne." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/fy/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/fy/messages.json deleted file mode 100644 index 8b2c826..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/fy/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Wizigingen tapasse" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Myn oanpaste filters ynskeakelje" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Eksportearje" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "myn-ublock-statyske-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Ymportearje en tafoegje" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Myn filters" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Oanpaste filters dy’t fertrouwen fereaskje tastean" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Foegje gjin filters fan ûnbekende boarnen ta." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Wizigingen tapasse" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Filterlisten automatysk fernije." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Ferâldere." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Ien URL per rigel. Unjildige URL's wurde stil negearre." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Advertinsjes" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Ungeriif" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookiemeldingen" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Oanpast" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Lokaal" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Malwaredomeinen" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multifunksjoneel" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privacy" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Gebieden, talen" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Sosjale widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Algemiene kosmetyske filters negearje" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Algemiene kosmetyske filters binne dy kosmetyske filters dy't bedoeld binne om op alle websites tapast te wurden. It ynskeakeljen fan dizze opsje eliminearret de oan websiden tafoege ûnthâld- en cpu-oerhead as gefolch fan it ferwurkjen fan algemiene kosmetyske filters." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Ymportearje…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Lêste fernijing: {{ago}}." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "List fan blokkearre hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} gebrûk fan {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} netwurkfilters + {{cosmeticFilterCount}} kosmetyske filters fan:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "In netwurkflater hat opkeard dat de boarne bywurke waard." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filterlisten" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Kosmetyske filters binne foar it ferstopjen fan eleminten yn in webside dy't fisueel steurend wêze kinne en net troch de op netwurkoanfragen basearre filter-masinen blokkearre wurde kinne." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Kosmetyske filters ynlêze en tapasse." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Alle buffers leegje" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Netwurkaktiviteit ûnderbrekke oant alle filterlisten laden binne" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "No fernije" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Fernijt…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "ynhâld werjaan" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Reservekopy nei bestân meitsje…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "myn-ublock-reservekopy_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO’s eigen filterlisten binne fergees beskikber op de folgjende \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN’s\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "As in filterlist bywurke wurde moat, wurdt samar in CDN brûkt" - }, - "aboutChangelog": { - "description": "", - "message": "Wizigingenlochboek" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Boarnekoade (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Meiwurkers" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Eksterne ôfhinklikheden (GPLv3-kompatibel):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filterlisten" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Oer" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Privacybelied" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Nei de standertynstellingen weromsette…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Al jo ynstellingen sille fuortsmiten wurde, wêrnei uBlock₀ werstart.\n\nYnstellingen dochs werstelle nei de standertwearden?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Ut bestân werstelle…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Al jo ynstellingen sille oerskreaun wurde mei de reservekopygegevens fan {{time}} en uBlock₀ sil werstart wurde.\n\nBinne jo wis dat jo alle besteande ynstellingen oerskriuwe wolle mei de reservekopygegevens?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "De gegevens koene net lêzen wurde of binne ûnjildich" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Boarnekoade" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Oersettingen" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Avansearre ynstellingen" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Warskôging! Wizigje dizze avansearre ynstellingen op eigen risiko." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ – Middelenviewer" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Klik om te laden" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Apparaatnamme:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Ymportearje fan cloudûnthâld" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Ut cloudopslach ymportearje en gearfoegje mei aktuele ynstellingen" - }, - "cloudPush": { - "description": "tooltip", - "message": "Eksportearje nei cloudûnthâld" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Elemint yn frame blokkearje..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Abonnearje op filterlist..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Grutte media-eleminten tydlik tastean" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Boarnekoade besjen…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Dashboerd" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Warskôging! Net bewarre wizigingen" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Negearje" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Bliuwe" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Tebekgean" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Dit finster slute" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Trochgean" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanint" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Tydlik" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "My net mear warskôgje oer dizze website" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Fûn yn:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "sûnder parameters" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Strikte blokkearring foar {{hostname}} útskeakelje" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin hat it laden fan de folgjende side opkeard:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Fanwege it folgjende filter" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Side blokkearre" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} dagen lyn" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} oeren lyn" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} minuten lyn" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "in dei lyn" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "in oere lyn" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "in minút lyn" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Netwurkflater: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock₀" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Einlik, in effisjinte adblocker. Brûkt hast gjin prosessorkrêft of ûnthâld." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "útskeakele" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Wizigingen tapasse" - }, - "genericBytes": { - "description": "", - "message": "bytes" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopiearje nei klamboerd" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Beskoattele skowe yn-/útskeakelje" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Tebeksette" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Alles selektearje" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Ferstjoere" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Flaters: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Alles" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Efter de skermen" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "loggerynhâld filterje" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domein" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filter" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Type" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Logger wiskje" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Aktuele ljepblêd" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "De DOM-inspector yn-/útskeakelje" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Kontekst" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filterlist" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Details" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "1e/3e partij" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Haadkontekst" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Rigel" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Type" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Plat" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "List" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabel" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin-wiki: de logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Lochboek pauzearje (alle ynkommende gegevens negearje)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "It pop-uppaniel yn-/útskeakelje" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "De ljepblêdynhâld fernije" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "aktuele domein" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "fan tredden" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "tastien" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blokkearre" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "ôfwikseljend" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "oanpast" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Net" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Opsjes foar loggerfiltering" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Loggerfiltering yn-/útskeakelje" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Loggerfermeldingen dy't net oan alle trije fan de ûndersteande betingsten foldogge, wurde automatysk negearre:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Kontekst" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/rigel" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} 1e/3e partij" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Tiid" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Kolommen ferstopje:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "{{input}} rigels per fermelding yn fertikaal útklappe modus brûke" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Fermeldingen fan de lêste {{input}} minuten behâlde" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Maksimaal {{input}} fermeldingen per ljepblêd behâlde" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Maksimaal {{input}} sideladingen per ljepblêd behâlde" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Statysk filter \u003Ccode>{{filter}}\u003C/code> fûn yn:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Statysk filter koe net yn ien fan de op dit stuit ynskeakele filterlisten fûn wurde" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statysk filter" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} netwurkfersiken fan {{type}} {{br}}wêrfan de URL lyk is oan {{url}} {{br}}en dy komme fan {{origin}},{{br}}{{importance}} der is in oerienkomstich útsûnderingsfilter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Tastean" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "fan oeral wei" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "elts type" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Blokkearje" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "sels as" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "útsein as" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "fan “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "type “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Kontekst:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Dynamyske URL-filtering" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Type:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Lochboek ferfetsje" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Elemint blokkearje…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Kosmetyske filters" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klik, Ctrl-klik" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Meitsje" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Netfilters" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Kieze" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Foarbyld" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Slute" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "skripts fan de websites sels" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "fan tredden" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "frames fan tredden" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/ôfbyldingen fan tredden" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "skripts fan tredden" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "alles" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "op dizze side" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokkearre op dizze side" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "blokkearre fersiken" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "sûnt ynstallaasje" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokkearre sûnt ynstallaasje" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} fan {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Ferbûne domeinen" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} fan de {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "ferbûne domeinen" - }, - "popupImageRulePrompt": { - "description": "", - "message": "ôfbyldingen" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "ynline skripts" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Minder" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Mear" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Kosmetyske filters" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Grutte media-eleminten" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Pop-upfinsters" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Eksterne lettertypen" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "of" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klikke: uBlock₀ foar dizze website yn-/útskeakelje.\n\nCtrl+klikke: uBlock₀ inkeld foar dizze side útskeakelje." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Klik om uBlock₀ foar dizze website út te skeakeljen.\n\nCtrl+klik om uBlock₀ inkeld foar dizze side út te skeakeljen." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Klik om uBlock₀ foar dizze website yn te skeakeljen." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Dashboerd iepenje" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Globale rigels: dizze kolom is foar rigels dy't op alle websites fan tapassing binne." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Lokale rigels: dizze kolom is foar rigels dy't allinnich op de aktuele website fan tapassing binne.\nLokale rigels hawwe foarrang op globale rigels." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Lochboek iepenje" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Kosmetyske filters foar dizze website yn-/útskeakelje" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klik om kosmetyske filters op dizze website út te skeakeljen" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klik om kosmetyske filters op dizze website yn te skeakeljen" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Grutte media-eleminten foar dizze website yn-/útskeakelje" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klik om grutte media-eleminten op dizze website te blokkearjen" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klik om grutte media-eleminten op dizze website net mear te blokkearjen" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Alle pop-ups foar dizze website yn-/útskeakelje" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klik om alle pop-ups op dizze website te blokkearjen" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klik om alle pop-ups op dizze website net mear te blokkearjen" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Blokkearjen fan eksterne lettertypen foar dizze website yn-/útskeakelje" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klik om eksterne lettertypen op dizze website te blokkearjen" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klik om eksterne lettertypen op dizze website net mear te blokkearjen" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klik om JavaScript op dizze website út te skeakeljen" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klik om JavaScript op dizze website net mear út te skeakeljen" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Elemintkiesmodus iepenje" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "In probleem op dizze website melde" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Klik om jo wizigingen werom te draaien." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Klik om jo wizigingen permanint te meitsjen." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Elemintwiskmodus iepenje" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Ferzje" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Blokkearringsmodus beheine" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Tapasse" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "myn-ublock-dynamyske-rigels_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Bewurkje" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Annulearje" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Bewarje" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Nei bestân eksportearje" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Rigelsyntaks: \u003Ccode>boarne bestimming type aksje\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>folsleine dokumintaasje\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "List fan jo dynamyske filterrigels." - }, - "rulesImport": { - "description": "", - "message": "Ut bestân ymportearje…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Myn rigels" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Permaninte rigels" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Tebeksette" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sortearje:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Bestimming" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Boarne" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Rigeltype" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Tydlike rigels" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Standertgedrach" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Dizze standertgedragingen kinne foar eltse website oerskreaun wurde" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Avansearre" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Allinnich foar technyske brûkers geskikte funksjes." - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Ik bin in betûfte brûker (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>Lês dit earst\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "avansearre ynstellingen" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Foarmjouwing" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Stipe foar cloudûnthâld ynskeakelje" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Tydlike oantsjutting fan blokkearre eleminten ferstopje" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Kleureblynfreonlik" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Wêr mooglik gebrûk meitsje fan it kontekstmenu" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Auditing fan keppelingen útskeakelje" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "It tal blokkearre oanfragen op it ikoan toane" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Lêste reservekopy:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Lêste werstel:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "CSP-rapporten blokkearje" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Kosmetyske filters útskeakelje" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Media-eleminten grutter as {{input}} KB blokkearje" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Eksterne lettertypen blokkearje" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "JavaScript útskeakelje" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Ynstellingen" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Pre-fetching útskeakelje (om eltse ferbining foar blokkearre netwurkfersiken foar te kommen)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Oanpaste aksintkleur" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Tooltips útskeakelje" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Kanonike nammen toane" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "It lekken fan it lokale IP-adres fia WebRTC opkeare" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Typ in fluchtoets" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Fluchtoetsen" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Dashboerd toane" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Lochboek toane" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Lochboek" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Brûkte ûnthâldromte {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Abonnearje" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: De folgjende URL oan jo oanpaste filterlisten tafoegje?\n\nTitel: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Soartgelikense meldingen sykje" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Iepenje" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Stipe" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redigearje" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Nije melding meitsje" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumintaasje" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Lês de dokumintaasje op \u003Ccode>uBlock/wiki\u003C/code> foar mear ynfo oer alle funksjes fan uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Fragen en stipe" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Antwurden op fragen en oare soarten stipe wurde levere op de subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filterproblemen/website wurket net" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Meld filterproblemen mei spesifike websites op de \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\"> probleemtracker\u003C/span>. Fereasket in GitHub-account." - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Wichtich:\u003C/b> mij it gebrûk fan oare adblockers foar itselde doel yn kombinaasje mei uBlock Origin, omdat dit op bepaalde websites problemen jaan kin." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> soargje derfoar dat jo filterlisten by-de-tiid binne. \u003Cspan data-url=\"logger-ui.html#_\">De logger\u003C/span> is it primêre helpmiddel foar it analysearjen fan filterrelatearre problemen." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Bugmelding" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Meld problemen mei uBlock Origin sels by de \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\"> probleemtracker\u003C/span>. Fereasket in GitHub-account." - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Probleemoplossingsynformaasje" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Hjirûnder stiet technyske ynformaasje dy't handich wêze kin wannear't frijwilligers jo probearje te helpen by it oplossen fan in probleem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Wichtich:\u003C/b> mooglik gefoelige of priveegegevens wurde standert redigearre. Redigearre gegevens kinne it oplossen fan in probleem swierder meitsje." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "De webside labelje as ‘NSFW’ (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">‘Not Safe For Work’\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "In filterprobleem melde" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Kontrolearje oft it probleem net earder meld is om foar te kommen dat frijwilligers mei dûbele meldingen belêst wurde." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filterlisten wurde elke dei bywurke. Kontrolearje oft jo probleem net al yn de meast resinte filterlisten ferholpen is." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Kontrolearje oft it probleem noch hieltyd bestiet nei opnij laden fan de problematyske webside." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "De webside..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Meitsje in kar --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Toant advertinsjes of restanten" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Hat oerlapingen of oare ûngemakken" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detektearret uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Hat privacy-relatearre problemen" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Wurket net as uBlock Origin ynskeakele is" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Iepenet net-winske ljepblêden of finsters" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Adres fan de webside:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Redigearje ûngedien meitsje" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Kosmetyske filters yn-/útskeakelje" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "JavaScript yn-/útskeakelje" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Koe net goed filterje by starten fan browser.\nFernij de side foar in goede filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Wizigingen tapasse" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Eksportearje" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "myn-ublock-whitelist_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Ymportearje en tafoegje" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Whitelist" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "De fertroude-website-ynstruksjes skriuwe foar op hokker websiden uBlock Origin útskeakele wurde moat. Ien fermelding per rigel." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/gl/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/gl/messages.json deleted file mode 100644 index f7128f2..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/gl/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Aplicar cambios" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Activar os meus filtros personais" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Exportar…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "o-meu-ublock-filtros-estaticos_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importar e engadir…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Os meus filtros" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Requerir confiar nos filtros personalizados" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Non engadir filtros de fontes non confiables." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Aplicar os cambios" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Actualización automática das listas de filtros." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Desactualizada." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Un enderezo por liña. Os enderezos inválidos seranche ignorados." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Anuncios" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Molestias" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Avisos de rastro" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Personalizado" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Local" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Dominios de \u003Ci>malware\u003C/i>" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multipropósito" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privacidade" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Rexións, linguaxes" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Widgets sociais" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignorar os filtros cosméticos xenéricos" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "\u003Cp>Os filtros cosméticos xenéricos estanche pensados para seren aplicados en todas as páxinas.\u003Cp>Aínda que o uBlock₀ os xestiona dun xeito eficiente, algúns deles precisan de altas cantidades de memoria e sobreemprego da CPU, especialmente nas páxinas grandes e nas máis duradeiras.\u003Cp>Activar esta opción suprimirá os requerimentos de memoria e CPU por causa destes filtros cosméticos xenéricos, así como reducirá a cantidade de memoria ocupada polo uBlock₀ mesmo.\u003Cp>Recomendámosche activar esta opción sobre todo nos dispositivos menos potentes." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importar..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Última actualización: {{ago}}\nFai click para forzar a actualización." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lista dos servidores bloqueados" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "Empregados {{used}} de {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} filtros de rede + {{cosmeticFilterCount}} filtros cosméticos:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Un erro de rede está a impedir que se actualicen os recursos." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filtros de terceiros" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "\u003Cp>Esta opción permitirache a análise e a aplicación de \u003Ca href=\"https://adblockplus.org/en/faq_internal#elemhide\">“filtros de ocultación de elementos” compatibles co Adblock Plus\u003C/a>. \nEstes filtros sonche sobre todo cosméticos, serven para agochar elementos visualmente molestos nunha determinada páxina, non sendo posible a súa eliminación cun motor de bloqueo baseado en peticións.\u003C/p>\u003Cp>Activar esta opción incrementará o uso de memoria do \u003Ci>uBlock₀\u003C/i>.\u003C/p>" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Analizar e aplicar filtros cosméticos." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Vaciar todas as cachés" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspender actividade da rede ata que se carguen todas as listas de filtrado" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Actualizar agora" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Actualizando..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "ver contido" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Facer copia de seguridade nun arquivo" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ublock-copia-seguridade_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "As listas de filtrado de uBO están aloxadas gratuitamente nos seguintes servidores \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Escóllese un CDN ao chou cando se precisa actualizar a lista." - }, - "aboutChangelog": { - "description": "", - "message": "Rexistro de cambios" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Código fonte (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Colaboradores" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Dependencias externas (GPLv3-compatible)" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Listas de filtrado" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Sobre" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Política de privacidade" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Restabelecer os axustes por defecto..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Eliminaranse todas as túas preferencias, e reiniciará o uBlock₀. Queres resetear o uBlock₀ á configuración por defecto?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Recuperar desde arquivo..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Todas as túas preferencias serán rescritas, usando os datos rexistrados no {{time}}, e o uBlock₀ reiniciará. Queres sobrescribir toda a configuración existente empregando os datos da copia de seguridade?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Os datos son inválidos ou non poden ser lidos" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Código fonte" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Traducións" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Configuración avanzada" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Ollo! Non cambies estas configuracións avanzadas senón sabes ben o que estás a facer." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Visor de elementos" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Preme para cargar" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "O nome deste dispositivo:" - }, - "cloudNoData": { - "description": "", - "message": "... ..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Importar dende o almacenamento na nube" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importar dende a nube e combinar coas preferencias actuais" - }, - "cloudPush": { - "description": "tooltip", - "message": "Exportar ó almacenamento na nube" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Bloquear elemento no marco..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subscribirse á lista de filtrado..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Permitir temporalmente os elementos multimedia grandes" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Ver código fonte..." - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Panel de control" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Aviso! ten cambios sen gardar" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignorar" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Non saír" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Retroceder" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Pechar esta xanela" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Proceder" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanentemente" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Temporalmente" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Non avisarme máis sobre esta web" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Atopado en:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "sen parámetros" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Desactivar o bloqueo estricto en {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "O uBlock₀ impediu cargar a seguinte páxina:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Por mor deste filtro:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Páxina bloqueada" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Esta ten que ser a derradeira entrada" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "fai {{value}} días" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "fai {{value}} horas" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "fai {{value}} minutos" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "fai un día" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "fai unha hora" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "fai un minuto" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Erro da rede: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Ó fin, un bloqueador eficiente que non chupa toda a memoria e o procesador." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "desactivado" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Aplicar os cambios" - }, - "genericBytes": { - "description": "", - "message": "bytes" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Copiar ao portapapeis" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Cambiar estado desprazamento" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Reverter" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Seleccionar todo" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Enviar" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Erros: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Todas" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Peticións ocultas" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtras as entradas de rexistro" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Dominio" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filtro" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Tipo" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "Enderezo" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Baleirar rexistro" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Lapela activa" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Activar inspector do DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Contexto" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filtrar" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Lista de filtrado" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Detalles" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Orixe do elemento" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Contexto Root" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Regra" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Tipo" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Plano" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Lista" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Táboa" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "wiki de uBlock Origin: The logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pausar rexistro (desbotar todos os datos de entrada)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Activar panel emerxente" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Recargar contido da pestana" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "da orixe" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "de terceiras partes" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "permitido" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "bloqueado" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modificado" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Non" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Opcións do filtrado do rexistro" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Activar filtrado do rexistro" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "As entradas no rexistro que non cumpran coas tres condicións inferiores desbotaranse automáticamente:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Contexto" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filtro/regra" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Orixe" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Hora" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Agochar columnas:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Usar {{input}} liñas por entrada en modo vertical despregado" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Manter entradas dos últimos {{input}} minutos" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Manter como máximo {{input}} entradas por pestana" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Manter como máximo {{input}} cargas da páxina por pestana" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Filtro estático \u003Ccode>{{filter}}\u003C/code>atopado en:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Non atopamos filtro estático \u003Ccode>{{filter}}\u003C/code> en ningunha das listas de filtros activas" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Filtrado estático" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} peticións de rede tipo {{type}} {{br}} nas cales o enderezo contenga {{url}} {{br}}e que teñan como orixe {{origin}},{{br}}{{importance}} haxa un filtro de excepción aplicable." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Permitir" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "dende calquera sitio" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "calquera tipo" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Bloquear" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "aínda cando" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "agás cando" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "dende “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "tipo “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Contexto:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Filtrado dinámico do enderezo" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Tipo:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Reactivar rexistro" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Bloquear elemento…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Filtros cosméticos" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Click, Ctrl-click" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Crear" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Filtros da rede" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Escoller" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Vista previa" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Saír" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "Scripts de dominio" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "de terceiros" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "marco" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "Frames de terceiros" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "Imaxes/css de terceiros" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "Scripts de terceiros" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "todo" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "nesta páxina" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Bloqueado nesta páxina" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "peticións bloqueadas" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "dende a instalación" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Bloqueado desde a instalación" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ou {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Dominos conectados" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} de {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "dominios conectados" - }, - "popupImageRulePrompt": { - "description": "", - "message": "imaxes" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "Scripts embebidos" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Menos" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Máis" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Filtrado cosmético" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Elementos multimedia grandes" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Ventás emerxentes" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Tipografías remotas" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "ou" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Click: desactivar/activar o uBlock₀ neste sitio.\n\nCtrl+click: desactivar o Block₀ só nesta páxina." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Click: desactivar/activar o uBlock₀ neste sitio.\n\nCtrl+click: desactivar o Block₀ só nesta páxina." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Click: activar o uBlock₀ neste sitio." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Fai click para abrir o panel de control" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Reglas globais: esta columna é para as reglas que afectan a todos os sitios." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Reglas locais: esta columna é para as reglas que afectan só a un sitio. As reglas locais anteponse ás globais." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Ir ó rexistro de peticións" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Activar o filtrado cosmético nesta páxina" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click: desactivar filtrado cosmético neste sitio" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click: activar filtrado cosmético neste sitio" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Activar/desactivar o bloqueo de elementos multimedia grandes para este sitio" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click: bloquear todos elementos multimedia de gran tamaño neste sitio" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click: deixar de bloquear todos elementos multimedia de gran tamaño neste sitio" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Activar todas as xanelas emerxentes nesta páxina" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Click: bloquear todos os elementos emerxentes neste sitio" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Click: deixar de bloquear todos os elementos emerxentes neste sitio" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Activar o bloqueo de fontes remotas para esta páxina" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Click: bloquear fontes remotas neste sitio" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Click: deixar de bloquear fontes remotas neste sitio" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Preme para desactivar JavaScript nesta web" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Preme para volver a activar JavaScript nesta web" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Ir ó modo do selector de elementos" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Informar dun problema nesta web" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Fai click para desfacer os cambios." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Fai click para gardar os cambios." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Activar o modo \"eliminación de elementos\"" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versión" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relaxar o modo de bloqueo" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Estabelecer" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "o-meu-ublock-regras-dinamicas_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Editar" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Descartar" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Gardar" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Exportar a un arquivo…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Sintaxe das regras: \u003Ccode>orixe destino tipo acción\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>documentación completa\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Listado coas túas regras de filtrado dinámico." - }, - "rulesImport": { - "description": "", - "message": "Importar dun arquivo..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "As miñas regras" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Regras permanentes" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Reverter" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Orde:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destino" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Orixe" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Tipo de regra" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Regras temporais" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Comportamento predefinido" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Estes comportamentos predefinidos poden ser modificados para cada páxina en particular" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Avanzadas" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Ferramentas orientadas a persoas con coñecemento técnico" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Son unha persoa experta" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "configuración avanzada" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Aspecto" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Activar soporte para almacenamento na nube" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Agochar marcadores de posición dos elementos bloqueados" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Accesible para daltónicos" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Empregar o menú contextual cando sexa posible" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Desactivar a auditoría de hiperligazóns/señais (\u003Ci>beacons\u003C/i>)" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Amosar o número de peticións bloqueadas no icono" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Última copia de seguridade:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Última recuperación:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Bloquear reportes CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Desactivar o filtrado cosmético" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Bloquear elementos audiovisuais maiores de {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Bloquear fontes remotas" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Desactivar JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Configuración" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Desactivar a precarga de sitios (prevén calquera conexión para peticións de red bloqueadas)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Cor destacada personalizada" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Decorado" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Desactivar axuda emerxente" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Descubrir nomes canónicos" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Impedir que o WebRTC revele os enderezos IP locais" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Introduce un atallo" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Atallos" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Amosar no Panel de control" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Amosar o rexistro de peticións da rede" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Rexistro de peticións de rede" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Almacenaxe usada: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Subscribir" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: Engadir o seguinte enderezo á túa lista de filtros personalizados?\n\nTitle: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Atopar denuncias parecidas" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Abrir" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Axuda" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Crear nova denuncia" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentación" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Le a documentación en \u003Ccode>uBlock/wiki\u003C/code> para saber máis acerca das ferramentas de uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Preguntas e axuda" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "No subreddit \u003Ccode>/r/uBlockOrigin\u003C/code> hai respostas a preguntas e outro tipo de axuda" - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Problemas co filtrado/Esta web non funciona" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Informar de problemas co filtrado en sitios web específicos no \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>.\u003Cu>Require unha conta en GitHub.\u003C/ul>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Importante:\u003C/b> Evitar usar ao mesmo tempo outros bloqueadores semellantes a uBlock Origin, xa que podería causar problemas co filtrado nalgunhas webs en concreto." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Truco:\u003C/b> Mira que as listas de filtrado estean actualizadas.\u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> é a ferramenta principal para diagnosticar problemas relacionados co filtrado." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Informar de problemas" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Informar de problemas co filtrado en sitios web específicos no \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>.\u003Cu>Require unha conta en GitHub.\u003C/ul>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Información para arranxar problemas" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "A información técnica seguinte podería ser útil para que as persoas que intentan axudar poidan resolver o problema." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Importante:\u003C/b> A potencial información privada ou sensible está editada por defecto. Ao editar a información poderías dificultar a resolución do problema." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Etiqueta a páxina como \"NSFW\" (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">\"Non é Segura No Traballo\"\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Informar dun problema co filtrado" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Para evitar a sobrecarga de traballo para as persoas voluntarias con duplicados dos problemas, comproba que aínda non se informou acerca do problema." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "As listas de filtrado actualizanse a diario. Comproba que non fose solucionado coa lista de filtrado máis recente." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Comproba que o problema persiste despois de recargar a web problemática." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "A páxina web..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Escolle unha opción --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Mostra publicidade ou restos dela" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ten capas sobreimpostas ou elementos molestos" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detecta uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ten problemas relacionados coa privacidade" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Funciona mal cando teño uBlock Origin activado" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Abre ventás ou páxinas non desexadas" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Enderezo da páxina web:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Activar filtrado cosmético" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Alternar JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Non se filtrou correctamente ao inicio do navegador. Recarga a páxina para asegurar un filtrado correcto." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Aplicar os cambios" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Exportar" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "o-meu-ublock-lista-branca_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importar e anexar" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Lista branca" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "As directivas de sitios de confianza indican as páxinas nas que uBlock Origin estará desactivado. Ten unha entrada por cada liña." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/gu/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/gu/messages.json deleted file mode 100644 index 44d7a37..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/gu/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Apply changes" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Export…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Import and append…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "મારા ફિલ્ટર " - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Apply changes" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Auto-update filter lists" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Out of date." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "One URL per line. Invalid URLs will be silently ignored." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Ads" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Annoyances" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Custom" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Built-in" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Malware protection, security" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multipurpose" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privacy" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regions, languages" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignore generic cosmetic filters" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Import…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Last update: {{ago}}.\nClick to force an update." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} used out of {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "A network error prevented the resource from being updated." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "ફિલ્ટર યાદીઓ" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the network request-based filtering engines." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Parse and enforce cosmetic filters" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Purge all caches" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspend network activity until all filter lists are loaded" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Update now" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Updating…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "view content" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Back up to file…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO's own filter lists are freely hosted on the following \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "A randomly picked CDN is used when a filter list needs to be updated." - }, - "aboutChangelog": { - "description": "", - "message": "Changelog" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Source code (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Contributors" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "External dependencies (GPLv3-compatible):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filter lists" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "About" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Privacy policy" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Reset to default settings…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Restore from file…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "The data could not be read or is invalid" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Source code" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Translations" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Advanced settings" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Warning! Change these advanced settings at your own risk." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Asset viewer" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Click to load" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "This device name:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Import from cloud storage" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Import from cloud storage and merge with current settings" - }, - "cloudPush": { - "description": "tooltip", - "message": "Export to cloud storage" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Block element in frame…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subscribe to filter list…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Temporarily allow large media elements" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "View source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Dashboard" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "ચેતવણી! તમારા ફેરફારો સચવાયેલા નથી " - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "અવગણો" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "રહો\n" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Go back" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Close this window" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Proceed" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanently" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Temporarily" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Found in:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "without parameters" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Disable strict blocking for {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin has prevented the following page from loading:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Because of the following filter:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Page blocked" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} days ago" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} hours ago" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} minutes ago" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "a day ago" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "an hour ago" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "a minute ago" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Network error: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "અંતે, એક કાર્યક્ષમ અવરોધક. સીપીયુ અને મેમરી પર સરળ." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "off" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Apply changes" - }, - "genericBytes": { - "description": "", - "message": "bytes" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Copy to clipboard" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Toggle locked scrolling" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Revert" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Select all" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Submit" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "All" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Tabless" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filter logger content" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domain" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filter" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Type" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Clear logger" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Current tab" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Toggle the DOM inspector" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Context" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filter list" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Details" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partyness" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Root context" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Rule" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Type" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Plain" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "List" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Table" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: The logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pause logger (discard all incoming data)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Toggle the popup panel" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Reload the tab content" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1st-party" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3rd-party" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "allowed" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blocked" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modified" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Not" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Logger filtering options" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Toggle logger filtering" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Context" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/rule" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partyness" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Time" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Hide columns:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Use {{input}} lines per entry in vertically expanded mode" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Preserve entries from the last {{input}} minutes" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Preserve at most {{input}} entries per tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preserve at most {{input}} page loads per tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Static filter \u003Ccode>{{filter}}\u003C/code> found in:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Static filter could not be found in any of the currently enabled filter lists" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Static filter" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Allow" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "from anywhere" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "any type" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Block" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "even if" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "except when" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "from “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "type “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Context:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL rule" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Type:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Unpause logger" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Block element…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Cosmetic filters" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Click, Ctrl-click" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Create" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Network filters" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Pick" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Preview" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Quit" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1st-party scripts" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "3rd-party" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "3rd-party frames" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "3rd-party CSS/images" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "3rd-party scripts" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "all" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "on this page" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blocked on this page" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "requests blocked" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "since install" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blocked since install" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domains connected" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} out of {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domains connected" - }, - "popupImageRulePrompt": { - "description": "", - "message": "images" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "inline scripts" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Less" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "More" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Cosmetic filtering" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Large media elements" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Pop-up windows" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Remote fonts" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "or" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Click to disable uBlock₀ for this site.\n\nCtrl+click to disable uBlock₀ only on this page." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Click to enable uBlock₀ for this site." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Open the dashboard" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Global rules: this column is for rules which apply to all sites." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Open the logger" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Toggle cosmetic filtering for this site" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click to disable cosmetic filtering on this site" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click to enable cosmetic filtering on this site" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Toggle the blocking of large media elements for this site" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click to block large media elements on this site" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click to no longer block large media elements on this site" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Toggle the blocking of all popups for this site" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Click to block all popups on this site" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Click to no longer block all popups on this site" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Toggle the blocking of remote fonts for this site" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Click to block remote fonts on this site" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Click to no longer block remote fonts on this site" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Click to disable JavaScript on this site" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Click to no longer disable JavaScript on this site" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Enter element picker mode" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Report an issue on this website" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Click to revert your changes." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Click to make your changes permanent." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Enter element zapper mode" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Version" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relax blocking mode" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Commit" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Edit" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Discard" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Save" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Export to file…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Rule syntax: \u003Ccode>source destination type action\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>full documentation\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "List of your dynamic filtering rules." - }, - "rulesImport": { - "description": "", - "message": "Import from file…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "મારા નિયમો" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Permanent rules" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Revert" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sort:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destination" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Source" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Rule type" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Temporary rules" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Default behavior" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "These default behaviors can be overridden on a per-site basis" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Advanced" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Features suitable only for technical users" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "I am an advanced user" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "advanced settings" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Appearance" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Enable cloud storage support" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Hide placeholders of blocked elements" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Color-blind friendly" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Make use of context menu where appropriate" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Disable hyperlink auditing" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Show the number of blocked requests on the icon" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Last backup:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Last restore:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Block CSP reports" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Disable cosmetic filtering" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Block media elements larger than {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Block remote fonts" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Disable JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "સેટિંગ્સ" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Disable pre-fetching (to prevent any connection for blocked network requests)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Custom accent color" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Theme" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Disable tooltips" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Uncloak canonical names" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Prevent WebRTC from leaking local IP addresses" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Type a shortcut" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Shortcuts" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Show Dashboard" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Show Logger" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Logger" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Storage used: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Subscribe" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Add the following URL to your custom filter lists?\n\nTitle: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Find similar reports" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Open" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Support" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Create new report" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentation" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Read the documentation at \u003Ccode>uBlock/wiki\u003C/code> to learn about all of uBlock Origin's features." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Questions and support" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter issues/website is broken" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Bug report" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Troubleshooting Information" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Report a filter issue" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "The web page…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pick an entry --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shows ads or ad leftovers" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has privacy-related issues" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfunctions when uBlock Origin is enabled" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Opens unwanted tabs or windows" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Address of the web page:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Apply changes" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Export…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Import and append…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Trusted sites" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/he/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/he/messages.json deleted file mode 100644 index 36c1a77..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/he/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "החל שינויים" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "אפשור מסננים מותאמים אישית" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "ייצוא…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "ייבא וצרף…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "המסננים שלי" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "אפשור למסננים מותאמים אישית לדרוש אמון" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "אל תוסיף מסננים ממקורות לא מהימנים." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "החל שינויים" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "עדכן אוטומטית את רשימות המסננים." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "לא עדכני." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "כתובת אינטרנט אחת בכל שורה. כתובות אינטרנט שאינן חוקיות לא יפורשו." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "פרסומות" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "מטרדים" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "הודעות בקשר לעוגיות" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "מותאם אישית" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "מובנה" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "הגנה מפני נוזקות, אבטחה" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "רב תכליתי" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "פרטיות" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "אזורים, שפות" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "יישומונים חברתיים" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "התעלם ממסננים קוסמטיים כלליים" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "מסננים קוסמטיים כלליים - אלה הם המסננים הקוסמטיים, אשר מיועדים להיות מוחלים על כל דפי האינטרנט. אפשור הגדרה זו תוריד את צריכת הזיכרון והמעבד אשר מתווספות לדפי אינטרנט כתוצאה משימוש במסננים קוסמטיים כלליים.\n\nמומלץ לאפשר הגדרה זו במכשירים פחות חזקים." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "ייבא…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "עדכון אחרון: {{ago}}.\nלחץ על מנת לאלץ עידכון." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "רשימה של דומיינים חסומים" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} בשימוש מתוך {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} מסנני רשת + {{cosmeticFilterCount}} מסננים קוסמטיים מתוך:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "בעיית רשת מנעה מהמשאב להתעדכן." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "רשימות מסננים" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "מסננים קוסמטיים נועדו להסתיר אלמנטים בדף אינטרנט אשר נחשבים למטרד חזותי, ואשר לא יכולים להיחסם על ידי מנוע חסימת בקשות רשת." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "פרסר ואפשר מסננים קוסמטיים." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "נקה את כל זיכרוני המטמון" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "השהה פעילות רשת עד לסיום טעינת כל רשימות הסינון" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "עדכן כעת" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "מעדכן…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "הצג תוכן" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "גבה לקובץ…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "רשימות המסננים של uBO מופצות בחינם בשירותי ה \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN\u003C/a> הבאים:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "שרות CDN אקראי נבחר לשם עדכון רשימת מסננים" - }, - "aboutChangelog": { - "description": "", - "message": "רשימת שינויים" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "קוד מקור (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "תורמים" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "תלויות חיצוניות (תואם-GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "רשימות מסננים" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "אודות" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "מדיניות פרטיות" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "אפס להגדרות ברירת מחדל…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "כל ההגדרות שלך יימחקו, ו uBlock₀ יופעל מחדש.\n\nלאפס את uBlock₀ להגדרות ברירת מחדל?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "שחזר מקובץ…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "כל ההגדרות שלך יוחלפו בנתונים שגובו ב {{time}}, ו uBlock₀ יופעל מחדש.\n\nהאם להחליף את כל ההגדרות הקיימות בנתונים המגובים?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "לא הוצלח לקרוא את המידע או שהוא פגום" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "קוד מקור" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "תרגומים" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "הגדרות מתקדמות" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "אזהרה! שינוי הגדרות אלו על אחריותך בלבד." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — מציג הנכסים" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "לחץ על מנת לטעון" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "שם המכשיר:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "ייבא מאחסון ענן" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "ייבא מהגיבוי בענן ומזג עם ההגדרות הקיימות" - }, - "cloudPush": { - "description": "tooltip", - "message": "ייצא לאחסון ענן" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "חסום אלמנט בתוך מסגרת…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "הירשם לרשימת המסננים…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "זמנית אפשר אלמנטי מדיה גדולים" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "צפה בקוד המקור…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — לוח מחוונים" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "אזהרה! יש לך שינויים שלא שמרת עדיין" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "התעלם" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "הישאר" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "חזור אחורה" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "סגור חלון זה" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "המשך" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "לצמיתות" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "זמנית" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "אל תתריע לי שוב על אתר זה" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "נמצא ב:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "ללא פרמטרים" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "בטל חסימה נוקשה עבור {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin מנע מהעמוד הבא להיטען:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "בגלל המסנן הבא" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "הדף חסום" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "ערך זה חייב להיות האחרון" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "לפני {{value}} ימים" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "לפני {{value}} שעות" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "לפני {{value}} דקות" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "לפני יום" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "לפני שעה" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "לפני דקה" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "בעיית רשת: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock₀" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "סוף סוף, חוסם יעיל. קל על המעבד והזיכרון." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "מכובה" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "החל שינויים" - }, - "genericBytes": { - "description": "", - "message": "בתים" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "העתק ללוח" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "הפעל/כבה נעילת גלילה" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "החזר למצב הקודם" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "בחר הכל" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "שלח" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "שגיאות: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "כל הטאבים" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "מאחורי הקלעים" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "סנן רשומות של מתעד הבקשות" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "דומיין" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "מסנן" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "סוג" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "כתובת" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "נקה בקשות" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "לשונית נוכחית" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "פתח/סגור את ה DOM inspector" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "הקשר" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "מסנן" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "רשימת מסננים" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "פרטים" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "צד" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "ההקשר המקורי" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "חוק" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "סוג" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "כתובת" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "פורמט Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "פשוט" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "רשימה" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "טבלה" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin וויקי: מתעד הבקשות" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "עצור תיעוד של בקשות (התעלם מכל בקשה חדשה)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "הצג/הסתר את הפאנל הקופץ" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "טען מחדש את תוכן הלשונית" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "צד-1" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "צד-3" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "מאופשר" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "חסום" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "השתנה" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "לא" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "הגדרות סינון של מתעד הבקשות" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "הפעל/כבה סינון של מתעד הבקשות" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "רשומות של מתעד הבקשות שלא תואמות את כל שלושת התנאים הבאים לא ישמרו:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} הקשר" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} מסנן/חוק" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} צד" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} זמן" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "הסתר עמודות:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "השתמש ב {{input}} שורות עבור כל רשומה במצב פרוס אנכית" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "שמור היסטוריית רשומות של {{input}} הדקות האחרונות" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "שמור היסטוריה עד {{input}} רשומות עבור כל לשונית" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "שמור היסטוריה של עד {{input}} טעינות עמוד עבור כל לשונית" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "המסנן הסטאטי \u003Ccode>{{filter}}\u003C/code> נמצא ב:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "המסנן הסטאטי לא נמצא בשום אחת מרשימות המסננים המופעלות כרגע" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "סינון סטאטי" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} בקשות רשת מסוג {{type}} {{br}} שה URL שלהן הוא {{url}} {{br}} ואשר מגיע מהאתר {{origin}},{{br}}{{importance}} קיים כבר מסנן שמתיר להעביר בקשות רשת אלה." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "אפשר" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "מכל מקום" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "כל סוג" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "חסום" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "גם אם" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "אך לא כאשר" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "מתוך \"{{origin}}\"" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "מסוג \"{{type}}\"" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "הקשר:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "סינון URL דינאמי" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "סוג:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "המשך תיעוד של בקשות" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "חסום אלמנט…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "מסננים קוסמטיים" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "לחיצה, Ctrl+לחיצה" - }, - "pickerCreate": { - "description": "English: Create", - "message": "צור" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "מסנני רשת" - }, - "pickerPick": { - "description": "English: Pick", - "message": "בחר" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "תצוגה מקדימה" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "צא" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "סקריפטים צד-1" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "צד-3" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "מסגרת" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "מסגרות צד-3" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/תמונות צד-3" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "סקריפט" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "סקריפטים צד-3" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "הכל" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "בדף זה" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "חסומים בדף זה" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "בקשות שנחסמו" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "מאז ההתקנה" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "נחסמו מאז ההתקנה" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "דומיינים שהתחברת אליהם" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} מתוך {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "דומיינים שהתחברת אליהם" - }, - "popupImageRulePrompt": { - "description": "", - "message": "תמונות" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "סקריפטים מוטמעים" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "פחות" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "עוד" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "מסננים קוסמטיים" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "אלמנטי מדיה גדולים" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "חלונות קופצים" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "פונטים חיצוניים" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "או" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "לחיצה: כבה/הפעל את uBlock₀ לאתר זה לצמיתות.\n\nCtrl+לחיצה: כבה את uBlock₀ רק בדף זה." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "לחיצה: כבה את uBlock₀ לאתר זה.\n\nCtrl+לחיצה: כבה את uBlock₀ רק בדף זה." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "לחץ על מנת להפעיל את uBlock₀ באתר זה." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "פתח את לוח המחוונים" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "חוקים גלובליים: עמודה זו היא עבור חוקים אשר תקפים לכל האתרים." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "חוקים לוקאליים: עמודה זו היא עבור חוקים אשר תקפים לאתר הנוכחי בלבד.\nחוקים לוקאליים דורסים את החוקים הגלובליים." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "פתח את מתעד הבקשות" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "הפעל/כבה מסננים קוסמטיים באתר זה" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "לחץ על מנת לכבות מסננים קוסמטיים באתר זה" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "לחץ על מנת להפעיל מסננים קוסמטיים באתר זה" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "הפעל/כבה את החסימה של אלמנטי מדיה גדולים באתר זה" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "לחץ על מנת לחסום אלמנטי מדיה גדולים באתר זה" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "לחץ על מנת לבטל את החסימה של אלמנטי מדיה גדולים באתר זה" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "הפעל/כבה את החסימה של חלונות קופצים באתר זה" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "לחץ על מנת לחסום חלונות קופצים באתר זה" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "לחץ על מנת לבטל את החסימה של חלונות קופצים באתר זה" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "הפעל/כבה את החסימה של פונטים חיצוניים באתר זה" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "לחץ על מנת לחסום פונטים חיצוניים באתר זה" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "לחץ על מנת לבטל את החסימה של פונטים חיצוניים באתר זה" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "לחץ על מנת לחסום JavaScript באתר זה" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "לחץ על מנת להפסיק לחסום JavaScript באתר זה" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "היכנס למצב בחירת אלמנט" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "דווח על בעיה באתר אינטרנט זה" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "לחץ על מנת לבטל את השינויים שלך." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "לחץ על מנת להפוך את השינויים שלך לקבועים." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "היכנס למצב מחיקת אלמנט באופן זמני" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "גרסה" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "הרפה את מצב החסימה הנוכחי" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "החל" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "ערוך" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "בטל" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "שמור" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "ייצא לקובץ…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "סינטקס חוק: \u003Ccode>פעולה סוג יעד מקור\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>תיעוד מלא\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "רשימת חוקי המסננים הדינאמיים שלך." - }, - "rulesImport": { - "description": "", - "message": "ייבא מקובץ…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "החוקים שלי" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "חוקים קבועים" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "החזר למצב הקודם" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "מיין לפי:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "יעד" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "מקור" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "סוג הרשומה" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "חוקים זמניים" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "התנהגות ברירת מחדל" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "התנהגויות ברירת מחדל אלו יכולות להיקבע עבור כל אתר בנפרד" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "מתקדם" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "מאפיינים למשתמשים בעלי ידע טכני בלבד" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "אני משתמש מתקדם" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "הגדרות מתקדמות" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "נראות" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "הפעל אחסון בענן" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "הסתר את המקום שנשאר מחסימה של אלמנטים" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "ידידותי לעיוורי צבעים" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "הצגת הפריט 'חסום אלמנט' בתפריט הלחצן הימני איפה שאפשר" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "חסום Hyperlink auditing" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "הראה את מספר הבקשות החסומות על האייקון" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "גיבוי אחרון:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "שחזור אחרון:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "חסום דיווחי CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "כבה מסננים קוסמטיים" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "חסום אלמנטי מדיה הגדולים מ {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "חסום פונטים חיצוניים" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "חסום JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "הגדרות" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "כבה אחזור מוקדם של משאבים (על מנת למנוע מחיבורים של בקשות רשת חסומות להישלח)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "צבע הדגשה מותאם אישית" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "ערכת נושא" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "כבה רמזים צצים" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "חשוף רשומות DNS מסוג CNAME" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "מנע מ WebRTC להדליף כתובות IP לוקאליות" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "הקלד קיצור דרך" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "קיצורי דרך" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "הצג את לוח המחוונים" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "הצג את מתעד הבקשות" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — מתעד הבקשות" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "אחסון בשימוש: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "הירשם כמנוי" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "הוסף את הכתובת הבאה לרשימת הפילטרים המותאמים אישית שלך?\n\nכותרת: \"{{title}}\"\nכתובת URL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "מצא דוחות דומים" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "לפתוח" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "תמיכה" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "הסר מידע פרטי או רגיש" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "צור דוח חדש" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "דוקומנטציה" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "קרא את הדוקומנטציה ב \u003Ccode>uBlock/wik\u003C/code> על מנת ללמוד על כל היכולות של uBlock Origin" - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "שאלות ותמיכה" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "תשובות לשאלות ושאר סוגי העזרה ניתן להיעזר בסאברדיט \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "בעיות סינון/אתר שבור" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "דווח על בעיות סינון באתרים קונקרטיים \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">בלוח הבעיות \u003Ccode>uBlockOrigin/uAssets\u003C/code>\u003C/span>. נדרש משתמש GitHub." - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>חשוב:\u003C/b> המנע משימוש בחוסמים אחרים שיש להם את אותה המטרה באותו הזמן עם uBlock Origin, שכן זה יכול לגרום לבעיות סינון באתרים ספציפיים." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>טיפים:\u003C/b> וודאו כי רשימות המסננים שלכם מעודכנים. \u003Cspan data-url=\"logger-ui.html#_\">מתעד הבקשות\u003C/span> הינו הכלי המרכזי לפענוח בעיות הקשורות לרשימות מסננים." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "דיווח על באג" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "דווח על בעיות ב uBlock Origin עצמו ל \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\"> מעקב הסוגייות \u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>\u003C/span>.\n\u003Cu>נידרש חשבון גיטהאב (GitHub)\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "מידע לפתרון בעיות" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "ראה מטה מידע טכני שיכול להיות מועיל למתנדב, כאשר הוא מנסה לעזור לך לפתור בעיה." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>חשוב:\u003C/b> מידע שהוא פוטנציאלי רגיש או פרטי מוסר בברירת מחדל. המידע שמוסר יכול לגרום לעיכוב בפתרון בעיות." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "תיוג דף האינטרנט כ- לב\"ל (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">'לא בטוח לעבודה'\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "דיווח על בעיית מסנן" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "כדי להימנע מהכבדה על מתנדבים בדווחים כפולים, נא לודא שבעיה דומה טרם דווחה." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "רשימות הסינון מתעדכנות מדי יום. וודא שהבעיה שלך עדיין לא טופלה ברשימות הסינון המעודכנות." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "וודא כי הבעיה עדיין קיימת לאחר רענון הדף הבעייתי." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "דף האינטרנט…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- בחר קטגוריה --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "הצגת פרסומות או שאריות שלהן" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "קיים ריבוד או מטרד אחר" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "מזהה את uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "בעיות הקשורות לפרטיות" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "כשל תפעולי כאשר uBlock Origin פעיל" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "נפתחים לשוניות או חלונות לא רצויים" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "כתובת דף האינטרנט:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "שחזר מידע פרטי או רגיש" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "הפעל/כבה מסננים קוסמטיים" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "מיתוג JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "לא ניתן היה לסנן כראוי בעת הפעלת הדפדפן. נא לטעון את העמוד מחדש להבטחת סינון ראוי." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "החל שינויים" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "ייצוא…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "ייבא וצרף…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "אתרים מהימנים" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "הנחיות אתר מהימנות, מכתיבות באילו עמודי מרשתת יש להשבית את uBlock Origin. רשומה אחת לכול שורה." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/hi/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/hi/messages.json deleted file mode 100644 index 85acb14..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/hi/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "परिवर्तन लागू करें" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "मेरे कस्टम फ़िल्टर सक्षम करें" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "निर्यात करें" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "मेरे-ublock-स्‍थिर-फिल्टेरें_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "इम्पोर्ट करें और जोड़ें..." - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "मेरे फिल्टर" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "विश्वास की आवश्यकता वाले कस्टम फ़िल्टर की अनुमति दें" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "अविश्वसनीय स्रोतों से फ़िल्टर न जोड़ें." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "परिवर्तन लागू करें" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "स्व-अद्यतन फ़िल्टर सूचियां" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "पुरानी" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "एक URL हर लाइन में. अमान्य URLs को सीधे से नजरअंदाज किया जायेगा।" - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "विज्ञापन" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "सतानेवाले विज्ञापन" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "कुकी सूचनाएं" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "कस्टम" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "बिल्ट-इन " - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "मैलवेयर डोमेन" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "बहुउद्देशीय" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "गोपनीयता" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "क्षेत्र, भाषा" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "सोशल विज़ेट्स" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "जेनेरिक कम्सेटिक फिल्टरों को नजरंदाज करें" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "जेनेरिक कॉस्मेटिक फिल्टरस वो कॉस्मेटिक फिल्टरस हैं जो सब वेब साइट्स पर लागू होते हैं। यह विकल्प को चालू कराने से मेमोरी और सीपीयू पर जो उपर का दबाव पड़ता है वो नहीं रहेगा जो कॉस्मेटिक फिल्टरों को जारी करने से हुआ था।\n\nइस विकल्प को कमज़ोर डिवाइसों पर चालू कराने की सलाह दी जाती है।" - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "इम्पोर्ट..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "अन्तिम अद्यातन: {{ago}}. \nकृत्रिम नवीकरण के लिए क्लिक की जिए" - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{total}} में से {{used}} का इस्तेमाल किया" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} नेटवर्क फिल्टर्स + {{cosmeticFilterCount}} कॉस्मेटिक फिल्टर्स यहां से:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "एक नेटवर्क त्रुटि ने रिसोर्स को अपडेट होने से रोक दिया। " - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "तृतीय-पक्ष फ़िल्टर" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "यह विकल्प कॉस्मेटिक फिल्टर्स को लेता और उन्हें जारी करता है जो Adblock Plus- \"एलीमेंट हाइड\" से मिलतें-जुलातें हैं। यह उन चीजों को ब्लॉक करतें हैं जो वेब पेज के दिखावत में छोटे- मोटी समस्या पैदा करतें है जो नेटवर्क रिक्वेस्ट-के फिल्टरों से ब्लुक नहीं किए जा सकते। " - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "कॉस्मेटिक फिल्टर्स को लें और लागू करें" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "सभी अस्थायी मेमोरी को शुद्ध करे" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "सभी फ़िल्टर सूचियाँ लोड होने तक नेटवर्क गति-विधि को निलंबित करें" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "अभी नवीकृत करें" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "नवीकरण प्रगति में हैं..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "चीजों को देखें " - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "जीबी" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "केबी" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "एमबी" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "फ़ाइल में बैकअप लें" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "मेरे-ublock-बैकअप_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO's स्वयं की फ़िल्टर सूचियाँ निम्नलिखित पर स्वतंत्र रूप से होस्ट की जाती हैं \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\"> CDNs \u003C/a>" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "बेतरतीब ढंग से चुनी गई सीडीएन का उपयोग तब किया जाता है जब फ़िल्टर सूची को अद्यतन करने की आवश्यकता होती है" - }, - "aboutChangelog": { - "description": "", - "message": "परिवर्तन सूची" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "सोर्स कोड {GPLv3}" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "योगदानकर्ता" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "बाहरी डिपेंडेंसीज (GPLv3-compatible):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "फिल्टर सूची" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "जानकारी" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "गोपनीयता नीति" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "सेटिंग्स को पहले की तरह करें..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "आपकी सारी सेटिंग्स मिटा दी जाएंगी, और uBlock₀ को फिर से चालू किया जाएगा।\n\nuBlock₀ को फ़ैक्टरी सेटिंग्स पर रीसेट करें?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "फाइल से वापस करो" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "{{समय}} पर बैकअप किए गए डेटा इस्तेमाल करके आपकी सभी सेटिंग्स को ओवरराइट कर दिया जाएगा, और uBlock₀ फिर से चालू किया जाएगा।\n\nबैकअप डेटा का इस्तेमाल करके सभी मौजूदा सेटिंग्स को ओवरराइट करें?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "डेटा पढ़ा नहीं जा सका या अमान्य है" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "सोर्स कोड" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "अनुवाद" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "उन्नत सेटिंग्स" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "चेतावनी! इन एडवांस सेटिंग्स को अपने जोखिम पर बदलें" - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — असेट व्यूअर" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "लोड करने के लिए क्लिक करें" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "इस साधन का नाम:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "क्लाउड स्टोरेज से आयात करें" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "क्लाउड स्टोरेज से डाउनलोड करें और मौजूदा सेटिंग्स के साथ मिलाएं " - }, - "cloudPush": { - "description": "tooltip", - "message": "क्लाउड स्टोरेज में भेजें" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "फ्रेम में तत्व को ब्लॉक करें..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "फ़िल्टर सूची की सदस्यता लें..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "कुछ समय के लिए विशाल तत्वोंको चलने की अनुमति दे" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "स्रोत कोड देखें" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — डैशबोर्ड" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "चेतावनी! आपके कुछ परिवर्तनों को सहेजना अभी बाकी है" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "नज़रअंदाज़ करें " - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "यहाँ रुकें" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "पीछे जाएं" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "इस विंडो को बंद करे" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "आगे बढ़ें" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "स्थायी" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "कुछ समय के लिए" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "इस साइट के बारे में मुझे दोबारा चेतावनी न दें" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "इन में पायी है:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "पैरामीटर के बिना" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "स्ट्रिक्ट ब्लॉकिंग को बंद करें इस साइट पर {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin ने इस पेज को लोड होने से रोक दिया हैं:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "इस फिल्टर की वजह से " - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "पृष्ठ प्रतिबंधित है" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} दिन पहले" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} घंटे पहले" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} मिनट पेहेले " - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "एक दिन पहले" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "एक घंटे पेहेले " - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "एक मिनट पेहेले " - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "नेटवर्क त्रुटि: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "आख़िरकार, क्रोमियम-बेस्ड ब्राउज़रों के लिए एक कुशल अवरोधक। सीपीयू और मेमोरी पर कम भार के साथ।\n" - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "बंद" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "परिवर्तन लागू करें" - }, - "genericBytes": { - "description": "", - "message": "बाइट्स" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "क्लिपबोर्ड में कॉपी करें" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "लॉक की हुई स्क्रोलिंग को टोगल करें " - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "पलटदे" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "सभी चुनें" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "पक्का" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "त्रुटियाँ : {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "सब" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "पर्दे के पीछे" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "लोगर चीज़ों को फिल्टीर करें " - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "डोमेन" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "फिल्टर" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "प्रकार" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "यू आर एल" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "लॉगर क्लियर करें " - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "वर्तमान टैब" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "DOM इंस्पेक्टर को टॉगल करें " - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "संदर्भ" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "फ़िल्टर " - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "फिल्टीर सूची" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "विवरण" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "पर्टिनेस" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "मूल सन्दर्भ " - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "नियम" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "प्रकार" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "मार्कडाउन" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "प्लेन" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "सूची" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "टेबल" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin विकी: लॉग्गर " - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "लॉग्गर क्लियर करें" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "पॉप-उप पैनल को टॉगल करें " - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "टैब की चीज़ों को फिर से लोड करें " - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "१ली-पार्टी " - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "तृतीय-पक्ष" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "स्वीकार किया हुआ " - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "ब्लॉक किया हुआ " - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "परिवर्तित" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "नही" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "लोगर फ़िल्टर के चुनाव " - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "लोगर फ़िल्टर को टॉगल करें " - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "नीचे दी गई तीनों सूचियों से जो नहीं मिलते उनको ऑटोमेटिकली निकाल दिया जाएगा:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} संदर्भ" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} फिल्टर/रूल" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "पर्टीनेस" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} समय" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "कॉलम्स को छिपाएं:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "{{input}} लाइनों को इस्तेमाल करें पर एंट्री में जो खड़ी स्थिति में हैं" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "आखरी {{input}} मिनट की जो एंट्रेंस हैं उन्हें बचा कर रखें" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "ज्यादा से ज्यादा {{input}} एंट्रीज को रखें" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "ज्यादा-से-ज्यादा इतनी पेज लोड्स को बचा कर रखें {{input}}" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "\u003Ccode>{{filter}}\u003C/code> में पाया गया स्थिर फ़िल्टर" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "फिलहाल चालू की गई हुई कोई भी फिल्टर्स सूची में स्थिर फिल्टर नहीं मिल पाया" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "स्थिर फ़िल्टर" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{type}}{{br}} कि नेटवर्क रिक्वेस्ट्स {{action}} जो मिलती है इस URL पते से {{url}}{{br}} और जो आती है यहां से {{origin}},{{br}}{{importance}} मैचिंग एक्सेप्शन फिल्टर मौजूद है।" - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "अनुमति दें" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "कहि से भी" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "कोई भी प्रकार का" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "ब्लॉक" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "फिर भी " - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "सिवाय जब " - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "\"{{origin}}\" से" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "प्रकार \"{{type}}\"" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "सन्दर्भ:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL नियम " - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "प्रकार:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "लोगेर को फिर से चालू करें " - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "इस को ब्लॉक करो" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "कॉस्मेटिक फिल्टर" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "क्लिक, कंट्रोल - क्लिक" - }, - "pickerCreate": { - "description": "English: Create", - "message": "बनाएँ" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "नेट फिलटर्स" - }, - "pickerPick": { - "description": "English: Pick", - "message": "चयन" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "पूर्व दर्शन" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "बंद करें" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "असली साइट के स्क्रिप्ट्स" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "तीसरे पक्ष" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "फ़्रेम" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "दूसरी साइट के फ्रेम्स" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "३री-पार्टी CSS/तस्वीरें " - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "स्क्रिप्ट" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "दूसरी साइट के स्क्रिप्ट्स" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "सभी" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "इस पृष्ठ पर" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "इस पेज पर ब्लॉक किया गया " - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "रुके हुए अनुरोध" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "स्थापना से अब तक" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "स्थापना के समय से ब्लॉक किया हुआ" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} या {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "कनेक्ट हुई डोमेंस" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{total}} मे से {{count}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "कनेक्ट हुई साइटें " - }, - "popupImageRulePrompt": { - "description": "", - "message": "चित्र" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "लाइन के बीच वाले स्क्रिप्ट्स" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "कम" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "और" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "कॉस्मेटिक फिल्टर" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "बड़े मीडिया एलिमेंट्स " - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "पॉप-अप विंडोज" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "रिमोट फोंट्स\n" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "जावास्क्रिप्ट " - }, - "popupOr": { - "description": "English: or", - "message": "या" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "दबाए : uBlock को इस साईट में बंद/चालु करने के लिए।\n\nCtrl के साथ दबाए : uBlock को सिर्फ इस पेज में बंद करने के लिए।" - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "दबाए: uBlock को इस साईट पर बंद करने के लिए।\n\nCtrl के साथ दबाए: uBlock को केवल इस पेज पर बंद करने के लिए।" - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "इस साईट में uBlock₀ को चालू करने के लिए क्लिक कीजिये।" - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "डैशबोर्ड खोलें" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "सार्वत्रिक नियम: इस क़तार के नियम सारे साइट्स पर लागु करने के लिए हैं " - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "निन्मलिखित नियमें सिर्फ इस वेबसाइट पर लागू है" - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "लॉगर खोलें" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "इस वेबसाइट की खूबसूरत फ़िल्टरिंग करें" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "इस साइट पर कॉस्मेटिक फ़िल्टरिंग बंद करने के लिए क्लिक करें" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "इस साइट पर कॉस्मेटिक फ़िल्टरिंग चालू करने के लिए क्लिक करें" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "बड़े मीडिया चीजों को रोक दें" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "इस वेबसाइट पर बड़े मीडिया ऐलिमेंटस को ब्लाक करने के लिए क्लिक करें" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "इस वेबसाइट पर बड़े मीडिया ऐलिमेंटस को ब्लाक न करने के लिए क्लिक करें" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "इस साईट के लिए कोई पॉपअप नहीं" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "इस वेबसाइट पर सभी पॉप-अप्स को ब्लाक करने के लिए क्लिक करें" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "इस वेबसाइट पर सभी पॉप-अप्स को और ब्लाक न करने के लिए क्लिक करें" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "बाहरी फ़ॉन्ट्स को ब्लॉक करें" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "इस साइट पर रिमोट फोंट को बंद करने के लिए क्लिक करें" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "इस साइट पर रिमोट फोंट अब और नहीं ब्लॉक करने के क्लिक करें " - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "जावास्क्रिप्ट को रोकने के के लिए दबाएं" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "जावास्क्रिप्ट को अब और न बंद करने के लिए दबाएं" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "एलिमेंट पिकर मोड में जाएं " - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "इस वेबसाइट पर किसी समस्या की रिपोर्ट करें" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "आपके परिवर्तनों को उलटने के लिए क्लिक करें" - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "अपने परिवर्तनों को पक्का बनाने के लिए क्लिक करें।" - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "चीजें मिटाने के मोड में जाएं" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "वर्जन" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "ब्लैकिंग मोड को ढील दें" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "पक्का करो" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "मेरे-ublock-डायनामिक-नियम_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "एडिट" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "रद्द करें" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "सहेजें" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "फाइल में एक्सपोर्ट करें..." - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "सिंटेक्स नियम: \u003Ccode>सोर्स डेस्टिनेशन टाइप एक्शन\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'> पूरी डॉक्यूमेंटेशन\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "मेरे डायनामिक रूल्स की लिस्ट।" - }, - "rulesImport": { - "description": "", - "message": "फाइल से आयात करे..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "मेरे नियमों" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "स्थायी नियम" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "पलटदे" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "क्रम में लगाये:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "गंतव्य" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "मूल" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "नियम प्रकार" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "अस्थायी नियम" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "सामान्य व्यवहार" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "ये सामान्य व्यवहारों को प्रति-पृष्ठ आधार पर बदला जा सकता है" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "उन्नत" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "केवल तकनीकी उपयोगकर्ताओं के लिए उपयुक्त सुविधाएँ." - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "मैं एक उन्नत प्रयोक्ता हूँ" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "उन्नत सेटिंग्स" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "दिखावट" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "क्लाउड स्टोरेज सपोर्ट चालू करें" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "ब्लॉक किये चीज़ो की प्लेसहोल्डर को हटाओ" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "वरणांध अनुकूलित " - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "जहाँ उपयुक्त हो, संदर्भ मेनू का इस्तेमाल करें" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "हाइपरलिंक जाँच को बंद करें" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "ब्लॉक कि गयी चीज़ो की गिनती आइकॉन पर दिखाओ" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "पिछला बैकअप" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": " पिछला रिस्टोर:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": " CSP रिपोर्ट्स को ब्लॉक करें " - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "कॉस्मेटिक फ़िल्टरिंग बंद करें " - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "{{input}} KB से बड़े मीडिया चीजें को बंद करें " - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "बाहरी फोंट्स को बंद करें " - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "जावास्क्रिप्ट को बंद करें " - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "सेटिंग्स" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "प्री-फ़ेचिंग बंद करें (कोई भी ब्लॉक किये गए कनेक्शंनो से संपर्क न करने लिए)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "निर्मित किए हुए उच्चारण रंग" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "थीम" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "टूलटिप्स बंद कीजिऐ" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "विहित नाम अनलॉक करें" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "WebRTC को स्थानीय IP पतों लीक करने से रोकें " - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "शॉर्टकट को टाइप करें " - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "शॉर्टकट" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "डैशबोर्ड दिखाओ" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "लॉगर दिखाएं" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — लॉगर" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "इस्तेमाल हुई स्टोरेज:{{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "फ़िल्टर सूची का उपयोग करें" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: इस यूआरएल को अपने कस्टम लिस्ट में डालें?\n\nTitle: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "ऐसी ही रिपोर्ट खोजें" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "खोलें" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "सहायता" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "संपादन" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "नई रिपोर्ट बनाएं" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "प्रलेखन" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "uBlock की सभी विशेषताओं के बारे में जानने के लिए \u003Ccode>uBlock/wiki\u003C/code> पर दस्तावेज़ पढ़ें।" - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "प्रश्न और समर्थन" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "सबरेडिट \u003Ccode>/r/uBlockOrigin\u003C/code>. पर सवालों के जवाब और अन्य प्रकार की सहायता सहायता प्रदान की जाती है" - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "फ़िल्टर समस्याएं/वेबसाइट टूट गई है" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "विशिष्ट वेबसाइटों के साथ फ़िल्टर समस्याओं की रिपोर्ट\u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> इश्यू ट्रैकर\u003C/span>. \u003Cu>GitHub खाते की आवश्यकता है।\u003C/u> " - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>ध्यान दें :\u003C/b>uBlock Origin के साथ समान उद्देश्य वाले अन्य अवरोधकों का उपयोग करने से बचें, क्योंकि इससे विशिष्ट वेबसाइटों पर फ़िल्टर समस्याएँ हो सकती हैं।" - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>युक्तियाँ :\u003C/b> सुनिश्चित करें कि आपकी फ़िल्टर सूचियाँ नवीनतम हैं। \u003Cspan data-url=\"logger-ui.html#_\">लॉगर\u003C/span> आपकी फ़िल्टर से संबंधित समस्याओं के निदान के लिए प्राथमिक टूल है।" - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "बग रिपोर्ट" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "uBlock Origin के साथ समस्याओं की रिपोर्ट यहाँ \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>इश्यू ट्रैकर\u003C/span> पर करें। \u003Cu>इसके लिए GitHub खाते की आवश्यकता है।\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "समस्या निवारक जानकारी" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "नीचे तकनीकी जानकारी दी गई है जो तब उपयोगी हो सकती है जब स्वयंसेवक किसी समस्या का समाधान करने में आपकी सहायता करने का प्रयास कर रहे हों।" - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb> महत्वपूर्ण: \u003C/b> संभावित रूप से निजी या संवेदनशील जानकारी को डिफ़ॉल्ट रूप से संशोधित किया जाता है। संशोधित जानकारी किसी समस्या को हल करना अधिक कठिन बना सकती है।" - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "वेब पेज को इस रूप में लेबल करें “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“काम करने के लिए सुरक्षित नहीं”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "फ़िल्टर समस्या की रिपोर्ट करें" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "स्वयंसेवकों पर डुप्लीकेट रिपोर्ट का बोझ डालने से बचने के लिए, कृपया सत्यापित करें कि समस्या की रिपोर्ट पहले ही नहीं की गई है।" - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "फ़िल्टर सूचियों को रोजाना अपडेट किया जाता है। सुनिश्चित करें कि आपकी समस्या का समाधान पहले से ही नवीनतम फ़िल्टर सूचियों में नहीं किया गया है।" - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "सत्यापित करें कि समस्यात्मक वेबपेज को रीलोड करने के बाद समस्या अभी भी बनी हुई है।" - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "वेब पेज..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- एक प्रविष्टि चुनें --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "विज्ञापन या बचा हुआ विज्ञापन दिखाता है" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "ओवरले या अन्य उपद्रव हैं" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "uBlock Origin का पता लगाता है" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "गोपनीयता से संबंधित समस्याएं हैं" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "uBlock Origin सक्षम होने पर खराबी" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "अवांछित टैब या विंडो खोलता है" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "वेब पेज का पता:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "असंशोधित" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "कॉस्मेटिक फ़िल्टरिंग टॉगल करें" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "जावास्क्रिप्ट टॉगल करें" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "ब्राउज़र खोलने पर ठीक से फ़िल्टर नहीं कर सका। उचित फ़िल्टरिंग सुनिश्चित करने के लिए वेबपेज को रीलोड करें।" - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "परिवर्तन लागू करें" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "निर्यात करें..." - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "मेरे-उबलॉक-व्हाइटलिस्ट_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "इम्पोर्ट करें और जोड़ें..." - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "विश्वस्त साइट सूची" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "वाइटलिस्ट के नियम यह बताते हैं कि uBlock Origin को किस वेब पेज पर बंद करना चाहिए। एक एंट्री हर लाइन में। अमान्य नियमों को सीधे-सीधे नजरअंदाज कर दिया जाएगा।" - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/hr/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/hr/messages.json deleted file mode 100644 index 512580f..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/hr/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Primijeni promjene" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Omogući moje prilagođene filtre" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Izvoz..." - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "moji-ublock-staticni-filteri_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Uvesti i dodati..." - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Moji filteri" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Dopusti prilagođene filtre koji zahtijevaju povjerenje" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Nemojte dodavati filtere iz nepouzdanih izvora." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Primijeni promjene" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Automatsko ažuriranje popisa filtera." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Zastarjelo." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Jedan URL po retku. Nevaljani URL-ovi će biti tiho ignorirani." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Reklame" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Nametljivost" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Obavijest o kolačićima" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Prilagođeno" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Ugrađeno" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Zaštita od zlonamjernog softvera, sigurnost" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Višenamjensko" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privatnost" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regije, jezici" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Socijalni widgeti" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignoriraj opće estetsko filtriranje." - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Generički estetski filteri su takvi filteri koji su namijenjeni svim web stranicama. Omogućavanjem ove postavke eliminirati će se memorijska i procesorska dodatna upotreba na web stranicama kao rezultat korištenja generičkih estetskih filtera.\n\nPreporučeno je omogućiti ovu postavku na slabijim uređajima." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Uvoz…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Posljednje ažuriranje: {{ago}}.\nKliknite za ažuriranje." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Popis blokiranih hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} korišteno od {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} mrežni/ih filter/a + {{cosmeticFilterCount}} estetski/ih filter/a iz:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Mrežna pogreška je sprječila ažuriranje resursa." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Liste filtera" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Estetski filteri služe za skrivanje elementa web stranice koji se smatraju vizualnim smetanjem i koji ne mogu biti blokirani filtriranjem mrežnih zahtjeva." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Raščlaniti i primijeniti estetske filtre." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Očistiti sve cache-ove" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Obustavite mrežnu aktivnost dok se ne učitaju svi popisi filtera" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Ažuriraj odmah" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Ažuriranje u tijeku…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "vidi sadržaj" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Sigurnosno kopiranje u datoteku..." - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "moja-ublock-sig_kopija_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Vlastiti popisi filtera uBO-a besplatno su posluženi sa sljedećih \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN-ova\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Koristit će se slučajno odabrani CDN kada treba ažurirati popis filtera" - }, - "aboutChangelog": { - "description": "", - "message": "Popis promjena" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Izvorni kôd (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Suradnici" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Vanjski korišteni programi (GPLv3-kompatiblini):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Liste filtera" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "O programu" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Pravila privatnosti" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Vraćanje izvornih zadanih postavki…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Sve vaše postavke će biti obrisane i µBlock₀ će se ponovno pokrenuti. \n\nVraćanje µBlock₀ tvorničkih postavki?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Vraćanje iz datoteke…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Sve vaše postavke prebrisat će se sa postavkama spremljenim {{time}}, i uBlock₀ će se ponovno pokrenuti. \n\nPrepisati sve postojeće postavke pomoću sigurnosne kopije postavki?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Podatke nije moguće učitati ili su neispravni" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Izvorni kod" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Prijevodi" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Napredne postavke" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Upozorenje! Mijenjate ove napredne postavke na vlastitu odgovornost." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Preglednik svojstva" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Kliknite za pokretanje" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Naziv ovog uređaja:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Uvezi iz pohrane u oblaku" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Uvezite iz spremišta u oblaku i spojite sa trenutnim postavkama" - }, - "cloudPush": { - "description": "tooltip", - "message": "Izvezi u pohranu u oblaku" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Blokiraj element u okviru…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Prijavite se na popis filtera…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Privremeno dopusti velike medijske elemente" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Pogledaj izvorni kod..." - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Nadzorna ploča" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Upozorenje! Niste spremili promjene" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignoriraj" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Ostani" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Natrag" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Zatvori ovaj prozor" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Nastavi" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Trajno" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Privremeno" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Ne upozoravaj me više za ovu web stranicu" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Pronađeno u:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "bez parametara" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Isključi strogo blokiranje za {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin je onemogućio učitavanje sljedeće stranice:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Zbog sljedećeg filtera" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Stranica blokirana" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Ova stavka mora biti posljednja" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "prije {{value}} dana" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "prije {{value}} sata/i" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "prije {{value}} minute/a" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "prije jedan dan" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "prije jedan sat" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "prije minutu" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Mrežna greška {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Konačno, efikasan blokator. Lak na CPU i memoriji." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "isključen" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Primijeni promjene" - }, - "genericBytes": { - "description": "", - "message": "bajtovi" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopiraj u međuspremnik" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Uključi/Isključi zaključano pomicanje" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Vratiti" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Odaberi sve" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Pošalji" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Greške: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Sve" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Iza scene" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtrirajte zabilješke" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domena" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filter" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Tip" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Očisti zabilješke" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Trenutna kartica" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Uključi/Isključi DOM inspektor" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Kontekst" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Lista filtera" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Detalji" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Pripadnost" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Korijenski kontekst" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Pravilo" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Tip" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Obično" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Popis" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tablica" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Zabilješke" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pauziraj zabilješke (odbaci sve dolazne podatke)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Uključi/Isključi panel sa skočnim prozorima" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Ponovno učitaj sadržaj kartice" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Prve strane" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Treće strane" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "dopušteno" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blokirano" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "sadržajno" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "promijenjeno" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Ne" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Postavke filtiriranja zabilješki" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Uključi/Isključi filtriranje zabilješki" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Unosi zapisnika koji ne ispunjavaju sva tri uvjeta navedena ispod bit će automatski odbačeni:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Kontekst" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/pravilo" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Pripadnost" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Vrijeme" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Sakrij stupce:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Koristi {{input}} linija po unosu u vertikalno proširenom načinu" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Sačuvajte unose od zadnjih {{input}} minuta" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Sačuvajte najviše {{input}} unosa po kartici" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Sačuvajte najviše {{input}} osvježavanja stranice po kartici" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Statični filter \u003Ccode>{{filter}}\u003C/code> pronađen u:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Statični filter nije pronađen u trenutno uključenim listama filtera" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statičko filtriranje" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} mrežni zahtjev {{type}} {{br}}kojem URL adresa odgovora {{url}} {{br}}i koji dolazi od {{origin}},{{br}}{{importance}} postoji odgovarajući filter izuzetak." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Dopusti" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "bilo gdje" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "i tip" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Blokiraj" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "čak i ako" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "osim kad" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "od “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "tip “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Kontekst:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Dinamično URL filtriranje" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Tip:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Uključite zabilješke" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Blokiraj element…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Estetski filteri" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klik, Ctrl-klik" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Stvaranje" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Mrežni filteri" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Odabir" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Pregled" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Izlaz" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "Skripte prve strane" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "treće strane" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "okvir" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "Okviri trećih strana" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/slike trećih strana" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "skripta" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "Skripte trećih strana" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "sve" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "na ovoj stranici" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokirano na ovoj stranici" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "zahtjeva blokirano" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "od instalacije" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokirano od instalacije" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ili {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domena povezano" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} od {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domena povezan" - }, - "popupImageRulePrompt": { - "description": "", - "message": "slike" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "skripte u liniji" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Manje" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Više" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Estetski filteri" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Veliki medija elementi" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Skočni prozori" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Udaljeni fontovi" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "ili" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klik: trajno onemogućiti/omogućiti uBlock₀ za ovaj sajt.\n\nCtrl+klik: onemogućiti µBlock₀ samo za ovu stranicu." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Kliknite za onemogućiti uBlock₀ za ovaj sajt.\n\nCtrl+klik za onemogućiti uBlock₀ samo za ovu stranicu." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Kliknite za omogućiti uBlock₀ za ovaj sajt." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Otvori upravljačku ploču" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Globalna pravila: ovaj stupac je za pravila koja vrijede za sve stranice." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Lokalna pravila: ovaj stupac je za pravila koja vrijede samo za trenutnu stranicu.\nLokalna pravila nadjačavaju globalna pravila." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Odlazak na zapisnik zahtjeva" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Uključi/isključi estestko filtriranje na ovoj stranici" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Kliknite kako biste onemogućili estestko filtriranje na ovom sajtu" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Kliknite kako biste omogućili estestko filtriranje na ovom sajtu" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Namjestite blokiranje velikih medijskih elemenata za ovo mjesto" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Kliknite za blokiranje velikih medijskih elemenata na ovom sajtu" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Kliknite za ukloniti blokiranje velikih medijskih elemenata na ovom sajtu" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Uključi/isključi skočne prozore na ovoj stranici" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Kliknite za blokiranje svih pop-up prozora na ovom sajtu" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Kliknite za ukloniti blokiranje svih pop-up prozora na ovom sajtu" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Uključi/isključi blokiranje udaljenih fontova za ovu stranicu" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Kliknite za blokiranje udaljenih fontova na ovom sajtu" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Kliknite za ukloniti blokiranje udaljenih fontova na ovom sajtu" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Kliknite kako biste onemogućili JavaScript na ovoj stranici" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Kliknite kako biste omogućili JavaScript na ovoj stranici" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Pokrenite odabir elementa" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Prijavite problem na ovoj web stranici" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Kliknite kako bi vratili promjene." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Kliknite kako biste spremili promjene." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Pokrenite odabir elementa za blokiranje" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Verzija" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Opušteni način blokiranja" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Izvršiti" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "moja-ublock-dinamicna-pravila_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Uredi" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Odbaci" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Spremi" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Izvoz u datoteku..." - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Pravila sintakse: \u003Ccode>akcija tipa izvornog odredišta\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>sva dokumentacija\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Popis dinamičkih pravila filtriranja." - }, - "rulesImport": { - "description": "", - "message": "Uvoz iz datoteke…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Moja pravila" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Trajna pravila" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Vratiti" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sortiraj:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destinacija" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Izvor" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Vrsta pravila" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Privremena pravila" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Zadano ponašanje" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Ova zadana ponašanja mogu biti poništena na bazi web-stranice" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Napredno" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Značajke prikladne samo za napredne korisnike." - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Ja sam napredni korisnik" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "napredne postavke" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Izgled" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Omogući podršku za pohranu u oblaku" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Sakrij rezervirana mjesta blokiranih elemenata" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Ugodan za daltoniste" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Koristite kontekstni izbornik gdje je prikladno" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Onemogući provjeravanje hiperlinkova" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Pokaži broj blokiranih zahtjeva na ikoni" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Posljednja sigurnosna kopija:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Posljednji povratak na prijašnje:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Blokiraj CSP izvješća" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Onemogući estesko filtriranje" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Blokiraj medijske elemente veće od {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Blokiraj udaljene fontove" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Onemogući JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Postavke" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Onemogući pretpreuzimanje (za sprečavanje bilo koje veze blokiranih mrežnih zahtjeva)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Prilagođena glavna boja" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Isključi naputke" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Prikaži kanonske nazive" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Spriječi WebRTC da propušta lokalnu IP adresu" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Utipkajte tipkovni prečac" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Tipkovni prečaci" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Prikaži kontrolnu ploču" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Prikaži zapis mrežnih zahtjeva" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Zapisnik mrežnih zahtjeva" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Korišteno prostora: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Prijava" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Dodajte slijedeći izvor u vaš izbor filter lista?\n\nNaslov: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Nađi slične prijave" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Otvori" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Podrška" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redigiraj" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Napravi novu prijavu" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentacija" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Pročitajte dokumentaciju na \u003Ccode>uBlock/wiki\u003C/code> kako bi ste saznali uBlock Origin mogućnosti." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Pitanja i podrška" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Odgovori na pitanja i druge vrste podrške nalaze se na subreddit \u003Ccode>r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter problemi/website je pao" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Prijavite probleme s filtriranjem određenih web stranica \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> alatki za praćenje problema\u003C/span>. \u003Cu>Potreban je GitHub račun.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Važno:\u003C/b> Izbjegavajte korištenje drugih blokera slične namjene u isto vrijeme s uBlock Origin-om jer to može uzrokovati probleme s filtriranjem na određenim web stranicama." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Savjeti:\u003C/b> Provjerite jesu li vaše liste filtera ažurirane. \u003Cspan data-url=\"logger-ui.html#_\">Zapisnik\u003C/span> je primarni alat za dijagnosticiranje problema povezanih s filterima." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Prijava greške" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Prijavite probleme sa samim uBlock Origin-om na \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-problem\u003C/code> alatki za praćenje problema\u003C/span>. \u003Cu>Potreban je GitHub račun.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Informacije o rješavanju problema" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "U nastavku se nalaze tehničke informacije koje bi mogle biti korisne kada vam volonteri pokušavaju pomoći u rješavanju problema." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Važno:\u003C/b> Potencijalno privatni ili osjetljivi podaci redigirani su prema zadanim postavkama. Redaktirane informacije mogu otežati rješavanje problema." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Označite web stranicu kao “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“nije sigurno za pregledavanje na poslu“\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Prijavi problem sa filterom" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Kako biste izbjegli opterećivanje volontera duplim prijavama, provjerite nije li problem već prijavljen." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Popisi filtera ažuriraju se svakodnevno. Provjerite nije li vaš problem već riješen sa najnovijim popisima filtera." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Provjerite postoji li problem i dalje nakon ponovnog učitavanja problematične web stranice." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Web stranica…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Odaberite unos --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Prikazuje oglase ili ostatke oglasa" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ima overlaye ili druge smetnje" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detektira uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ima problema u vezi s privatnošću" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ruši se kad je uBlock Origin omogućen" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Otvara neželjene kartice ili prozore" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Adresa web stranice:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Vratiti na prijašnje" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Prekidač estetskog filtriranja" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Uključi/isključi JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Nije moguće pravilno filtrirati pri pokretanju \npreglednika. Ponovno učitajte stranicu \nkako biste osigurali ispravno filtriranje." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Primijeni promjene" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Izvoz..." - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "moje-ublock-pouzdane-stranice_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Uvesti i dodati..." - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Pouzdane stranice" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Direktiva pouzdanih stranica govori za koje bi web stranice uBlock Origin trebao biti onemogućen. Jedan zapis po retku." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/hu/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/hu/messages.json deleted file mode 100644 index a21f887..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/hu/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Módosítások alkalmazása" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Egyedi szűrőim engedélyezése" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Exportál" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "ublock-statikus-szabalyaim_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importál és hozzáad" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Saját szűrők" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Megbízhatóságot igénylő egyéni szűrők engedélyezése" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Ne adj hozzá szűrőket megbízhatatlan forrásokból." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Módosítások alkalmazása" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Szűrőlisták automatikus frissítése." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Elavult." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Soronként egy URL. A ‘!’ kezdetű sorok figyelmen kívül maradnak. A szabálytalan URL-ek szintén figyelmen kívül maradnak, hibajelzés nélkül." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Hirdetések" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Kellemetlenségek" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Sütiértesítések" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Saját" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Beépített" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Malware domainek" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Többcélú" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Adatvédelem" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Régiók, nyelvek" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Közösségi widgetek" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Általános kozmetikai szűrők figyelmen kívül hagyása" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "\u003Cp>Az általános kozmetikai szűrők azok a kozmetikai szűrők, amelyek minden weboldalra érvényesek.\u003Cp>Ugyan a uBlock₀ hatékonyan kezeli őket, az általános kozmetikai szűrők mégis mérhetően magasabb memória és CPU használatot eredményezhetnek néhány weboldalon, főleg nagy, és régóta futóak esetében.\u003Cp>Ennek az opciónak a bekapcsolása kiküszöböli az általános kozmetikai szűrők kezeléséből a weboldalakon adódó memória és CPU használat többletet, továbbá csökkenti a uBlock₀ által foglalt memóriát is.\u003Cp>Ajánlott bekapcsolni ezt az opciót a gyengébb eszközökön." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importálás..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Utolsó frissítés: {{ago}}.\nKattintson a frissítés kényszerítéséhez." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Blokkolt hostokat tartalmazó listák" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} használatban a listában lévő {{total}} szűrő közül" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} hálózati szűrők + {{cosmeticFilterCount}} kozmetikai szűrők:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Egy hálózati hiba megakadályozta az erőforrás frissítését." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Külső szűrők" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "\u003Cp>Ez a beállítás engedélyezi az \u003Ca href=\"https://adblockplus.org/en/faq_internal#elemhide\">Adblock Plus-típusú “elemelrejtő” szűrőket\u003C/a>. Ezek kizárólag kozmetikai célokat szolgálnak; elrejtik egy webhely azon elemeit, amelyek vizuálisan zavaróak, de a hálózati lekérések alapján nem szűrhetők ki.\u003C/p>\u003Cp>A beállítás engedélyezése megnöveli a \u003Ci>uBlock₀\u003C/i> memóriahasználatát.\u003C/p>" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Értelmezze és alkalmazza a kozmetikai szűrőket." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Gyorsítótárak ürítése" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Hálózati forgalom szüneteltetése, amíg a szűrőlisták be nem töltődtek" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Frissítés most" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Frissítés..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "tartalom megtekintése" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Biztonsági mentés fájlba" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ublock-mentesem_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Az uBO saját szűrőlistáit a következő ingyenes \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN-ek (angol)\u003C/a> szolgáltatják:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "A szűrőlisták frissítéséhez egy véletlenszerűen kiválasztott CDN-t használ a bővítmény" - }, - "aboutChangelog": { - "description": "", - "message": "Változások listája" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Forráskód (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Közreműködők" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Külső függőségek (GPLv3-kompatibilis):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Szűrő listák" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Névjegy" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Adatvédelmi szabályzat" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Alapértelmezett beállítások visszaállítása..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Az összes beállítás törlődik, utána a uBlock₀ újraindul.\n\nÁllítsa vissza a gyári beállításokat?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Visszaállítás fájlból..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "A jelenlegi beállítások felülíródnak a mentett adatokkal (mentési idő: {{time}}), utána a uBlock₀ újraindul.\n\nFelülírja a jelenlegi beállításokat a biztonsági mentéssel?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Nem olvasható vagy érvénytelen adat" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Forráskód" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Fordítások" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Haladó beállítások" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Figyelem! Haladó beállítások, megváltoztatásuk csak saját felelősségre." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ - Eszköznézet" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Kattints a betöltéshez" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Ennek az eszköznek a neve:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Importálás a felhőszolgáltatásból" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importálás a felhőből és egybevonás a jelenlegi beállításokkal" - }, - "cloudPush": { - "description": "tooltip", - "message": "Exportálás a felhőszolgáltatásba" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Elem blokkolása a keretben" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Feliratkozás szűrőlistára..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Nagyméretű média elemek ideiglenes engedélyezése" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Forráskód megtekintése…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Vezérlőpult" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Figyelem! Neked még vannak nem mentett változtatásaid" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Figyelmen kívül hagyás" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Tartózkodás" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Vissza" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Ablak bezárása" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Továbblépés" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Véglegesen" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Ideiglenesen" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Ne figyelmeztessen újra ennél az oldalnál" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Ezekben található:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "paraméterek nélkül" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Kapcsolja ki a szigorú tiltást a(z) {{hostname}} részére" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin nem engedte a következő lap betöltését:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "A következő szűrő miatt" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Oldal blokkolva" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Ez a bejegyzés utolsó kell hogy legyen" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} napja" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} órája" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} perce" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "egy napja" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "egy órája" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "egy perce" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Hálózati hiba: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Végre egy hatékony reklám- és követésblokkoló böngészőkhöz, amely kíméletes a processzorral és a memóriával." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "kikapcsolva" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Módosítások alkalmazása" - }, - "genericBytes": { - "description": "", - "message": "bájt" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Másolás a vágólapra" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Zárolt görgetés kapcsolása" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Visszaállítás" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Mindent kijelöl" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Küldés" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Hibák: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Összes" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Hálózati forgalom a háttérben" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "naplóbejegyzések szűrése" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domain" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Szűrő" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Típus" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Naplózó törlése" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Jelenlegi lap" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "DOM ellenőrző kapcsolása" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Kontextus" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Szűrő" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Szűrő lista" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Részletek" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partyness" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Gyökér kontextus" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Szabály" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Típus" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Sík" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Lista" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tábla" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: A naplózó" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Naplózás szüneteltetése (az összes bejövő adat elvetése)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Felugró panel kapcsolása" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Töltse újra a lap tartalmát" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1. fél" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3. fél" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "engedélyezve" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blokkolva" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "módosított" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Nem" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Naplózó szűrő beállítások" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Naplózó szűrőjének kapcsolása" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "A naplózó bejegyzések, amelyek nem felelnek meg az alábbi három feltételnek, automatikusan eldobásra kerülnek:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Kontextus" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Szűrő/szabály" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partyness" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Idő" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Oszlopok elrejtése:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Használja a {{input}} sorokat egy bejegyzésre függőlegesen bővített módban" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "A bejegyzések megőrzése az utolsó {{input}} percből" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Tartsa meg a legtöbb {{input}} bejegyzést laponként" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Tartsa meg a legtöbb {{input}} lapot betöltéskor laponként" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Statikus filter, amiben \u003Ccode>{{filter}}\u003C/code> benne van:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "A statikus szűrő \u003Ccode>{{filter}}\u003C/code> nem található az aktuálisan engedélyezett szűrőlisták egyikében sem" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statikus szűrés" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "Hálózati kérések {{action}} amik {{type}} {{br}} és illeszkednek a(z) {{url}} URL-re {{br}} és amik innen származnak: {{origin}},{{br}}{{importance}} van illeszkedő kivétel szűrő." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "engedélyezése" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "bárhonnan" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "bármilyen típusúak" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "blokkolása" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "akkor is, ha" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "kivéve ha" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "{{origin}}" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "„{{type}}” típusúak" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Kontextus:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Dinamikus URL szűrő" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Típus:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Naplózó folytatása" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Elem blokkolása" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Kozmetikai szűrők" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klikk, Ctrl-klikk" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Létrehoz" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Hálózati szűrők" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Választ" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Előnézet" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Kilép" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1st-party scriptek" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "külső féltől" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "keret" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "3rd-party frame-ek" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "külső féltől származó css/képek" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "szkript" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "3rd-party scriptek" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "minden" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "ezen a lapon" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokkolva ezen az oldalon" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "blokkolt lekérések" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "telepítés óta" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokkolva a telepítés óta" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} vagy {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Csatlakoztatott domain-ek" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}}, összesen: {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domain csatlakozik" - }, - "popupImageRulePrompt": { - "description": "", - "message": "képek" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "inline scriptek" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Kevesebb" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Több" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Kozmetikai szűrés" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Nagy média elemek" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Felugró ablakok" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Távoli betűtípusok" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "vagy" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klikk: uBlock₀ tiltása/engedélyezése ezen a webhelyen.\n\nCtrl+klikk: csak a jelenlegi oldal tiltása/engedélyezése." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Kattints a uBlock₀ letiltásához ezen a webhelyen.\n\nCtrl+kattintás a uBlock₀ letiltásához csak a jelenlegi oldalon." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Kattints az uBlock₀ engedélyezéséhez ezen a webhelyen." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Vezérlőpult megnyitása" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Globális szabályok: ebben az oszlopban azok a szabályok vannak, amelyek minden weboldalra vonatkoznak." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Lokális szabályok: ebben az oszlopban azok a szabályok vannak, amelyek csak a jelenlegi weboldalra vonatkoznak.\nA lokális szabályok felülírják a globális szabályokat." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Naplózott lekérések megtekintése" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Kozmetikai szűrés ki- és bekapcsolása ezen a weboldalon" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Kattints a kozmetikai szűrés kikapcsolásához ezen a webhelyen" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Kattints a kozmetikai szűrés bekapcsolásához ezen a webhelyen" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Nagyméretű média elemek blokkolásának ki/bekapcsolása" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Kattints a nagyméretű médiaelemek blokkolásához ezen a webhelyen" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Kattints a nagyméretű médiaelemek blokkolásának visszavonásához ezen a webhelyen" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Oldal összes felugró ablakának blokkolása/engedélyezése" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Kattints az összes előugró ablak letiltásához ezen a webhelyen" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Kattints, hogy ne legyen többé az összes előugró ablak blokkolva ezen a webhelyen" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Távoli betűkészletek blokkolásának ki/bekapcsolása ezen az oldalon" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Kattints a távoli fontok blokkolásához ezen a webhelyen" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Kattints a távoli betűtípusok blokkolásának visszavonásához ezen a webhelyen" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Kattints a JavaScript teljes letiltásához ezen az oldalon" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Kattints, hogy JavaScript ne legyen teljesen letiltva ezen az oldalon" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Elemválasztó mód aktiválása" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Az oldalon lévő probléma bejelentése" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Kattintson ide a módosítások visszavonásához." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Kattintson a módosítások véglegesítéséhez." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Belépés az elemeltávolító módba" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Verzió" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relaxáló blokkolási mód" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Alkalmaz" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "ublock-dinamikus-szabalyaim_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Szerkesztés" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Elvetés" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Mentés" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Exportálás fájlba…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Szabály szintaxis: \u003Ccode>forrás cél típus művelet\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>Teljes dokumentáció\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Saját szűrőszabályok listája." - }, - "rulesImport": { - "description": "", - "message": "Importálás fájlból…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Saját szabályok" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Állandó szabályok" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Visszaállítás" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Rendezés:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Cél" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Forrás" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Szabály típusa" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Átmeneti szabályok" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Alapértelmezett viselkedés" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Ezek az alapértelmezett viselkedések felülírhatóak weboldal-szinten" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Haladó" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Funkciók csak haladó felhasználóknak " - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Haladó felhasználó vagyok (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>További tudnivalók\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "haladó beállítások" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Kinézet" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Felhőben tárolás bekapcsolása" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Blokkolt elemek helyőrzőinek elrejtése" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Színvak-barát" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Környezeti menü alkalmazása, ahol lehetséges" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Hivatkozás-vizsgálat kikapcsolása" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Jelenjen meg a blokkolt lekérések száma az ikonon" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Utolsó biztonsági mentés:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Utolsó visszaállítás:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "CSP jelentések blokkolása" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Kozmetikai szűrés kikapcsolása" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Média elemek blokkolása, amelyek nagyobbak, mint {{input:number}} kB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Távoli betűkészletek blokkolása" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "JavaScript letiltása" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Beállítások" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Előtöltés kikapcsolása (kapcsolódás megakadályozása blokkolt hálózati lekérésekhez)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Egyedi akcentus szín" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Téma" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Buboréksúgó (tooltip) kikapcsolása" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Kanonikus nevek felfedése" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "WebRTC helyi IP-cím szivárogtatásának megakadályozása" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Billentyűkombináció megadása" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Billentyűparancsok" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Vezérlőpult megnyitása" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Napló mutatása" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Hálózati lekérések naplója" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Használt tárolás: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Feliratkozás" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: Hozzáadja a következő URL-t a saját szűrő listákhoz?\n\nNév: \"{{title}}\"\nURL: \"{{url}}\"" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Hasonló hibák keresése" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Megnyitás" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Támogatás" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Elrejtés" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Hiba bejelentése" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentáció" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Az uBlock Origin további funkcióihoz látogassa meg a dokumentációt itt: \u003Ccode>uBlock/wiki\u003C/code>." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Kérdések és támogatás" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "A felhasználói kérdésekre választ és további segítséget, támogatást az \u003Ccode>/r/uBlockOrigin\u003C/code> subredditen nyújtunk." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Szűrőhibák/a weboldal nem működik megfelelően" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Adott weboldalra vonatkozó szűrőhibákat jelentse a \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> hibakövetőn\u003C/span>. GitHub-fiók szükséges." - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Fontos:\u003C/b> Ne használjon hasonló célú reklámblokkolókat az uBlock Originnal egyszerre, mert ez szűrőhibákat okozhat bizonyos weboldalakon." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tippek:\u003C/b> Bizonyosodjon meg arról, hogy a legfrissebb szűrőlistákat használja. \u003Cspan data-url=\"logger-ui.html#_\">A napló\u003Cspan> a legfontosabb eszköz a szűrőkkel kapcsolatos hibák diagnózisában." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Hibajelentés" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Az uBlock Origin hibáit jelentse a \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> hibakövetőn\u003C/span>. GitHub-fiók szükséges." - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Hibakeresési információ" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Az alább található technikai információk segíthetnek önkénteseinknek megoldani a problémáját." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Fontos:\u003C/b> Az esetlegesen személyes vagy érzékeny adatok alapértelmezésből rejtve vannak. Az elrejtett információk megnehezíthetik a probléma megoldását." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "A weboldal megjelölése felnőtt tartalomként" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Szűrőhibák bejelentése" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Az önkéntesek terhelésének csökkentése érdekében győződjön meg róla, hogy a hiba még nem lett bejelentve." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "A szűrőlisták naponta frissülnek. Ügyeljen arra, hogy az Ön problémája ne szerepeljen már a legfrissebb szűrőlistákon." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Ellenőrizze, hogy a probléma a problémás weboldal újratöltése után is fennáll-e." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "A weboldal..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Válasszon egy opciót --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Hirdetéseket vagy hirdetés maradványokat jelenít meg" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Zavaró elemeket tartalmaz" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Érzékeli a uBlock Origin-t" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Adatvédelmi problémákat vet fel" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Hibásan működik, amikor az uBlock Origin be van kapcsolva" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Kéretlen lapokat vagy ablakokat nyit meg" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "A weboldal címe:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Megjelenítés" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Kozmetikai szűrés kapcsolása" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Javascript ki/bekapcsolása" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Nem sikerült megfelelően szűrni a böngésző indításakor. Töltse újra az oldalt a megfelelő szűrés biztosítása érdekében." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Módosítások alkalmazása" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Exportál" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "ublock-feherlistam_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importál és hozzáad" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Kivételek" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Az alábbi listában felsorolt hostokon a kiegészítő nem fog működni. Soronként egy bejegyzés. Érvénytelen hostnevek figyelmen kívül maradnak." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/hy/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/hy/messages.json deleted file mode 100644 index 2ecdbdc..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/hy/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Կիրառել փոփոխությունները" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Թուլատրել իմ անհատական ֆիլտրերը" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Արտահանել" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Ներմուծել և հավելել" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Իմ զտիչները" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Թույլատրել վստահություն պահանջող հատուկ զտիչները" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Մի՛ ավելացրեք զտիչներ անվստահելի աղբյուրներից։" - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Կիրառել փոփոխությունները" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Ինքնաշխատորեն թարմացնել զտիչների ցանկերը" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Ժամկետանց։" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Մեկ URL մեկ տողում։ Անվավեր URL֊ներն անտեսվելու են առանց նախազգուշացման։" - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Գովազդ" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Ջղայնացնող տարրեր" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie ծանուցում" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Օգտվողային" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Ներկառուցված" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Վնասակար տիրույթներ" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Բազմանպատակային" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Գաղտնիություն" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Տարածաշրջաններ, լեզուներ" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Սոցիալական վիդջեթներ" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Անտեսել ընդհանուր կոսմետիկ զտիչները" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Ընդհանուր կոսմետիկ զտիչներն այն կոսմետիկ զտիչներն են, որոնք նախատեսված են կիրառվել բոլոր կայքերում։ Այս ընտրանքը միացնելը կվերացնի հիշողության և մշակիչի բեռնվածությունը, որը կայքեջերի մոտ ավելանում է ընդհանուր կոսմետիկ զտիչների մշակման արդյունքում։\n\nԽորհուրդ է տրվում միացնել այս ընտրանքը ոչ բավականաչափ հզոր սարքերում։" - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Ներմուծել..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Վերջին թարմացումը՝ {{ago}}։\nԿտտացրեք՝ ստիպողական թարմացման համար։" - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{total}}֊ից օգտագործվում է {{used}}֊ը" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} ցանցային զտիչ + {{cosmeticFilterCount}} կոսմետիկ զտիչ այստեղից՝" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Ցանցի սխալի պատճառով թարմացումը տեղի չունեցավ։" - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Զտիչների ցանկեր" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Կոսմետիկ զտիչները ծառայում են կայքէջի այն տարրերը թաքցնելու համար, որոնք պատճառում են տեսողական անհանգստություն և որոնք չեն կարող արգելափակվել ցանցային հայտերի հիման վրա աշխատող զտման մեխանիզմներով։" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Վերլուծել և կիրառել կոսմետիկ զտիչներ" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Մաքրել բոլոր հիշապահեստները" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Կանգնեցնել ցանցային ակտիվությմւնը մինչև բեռնվեն զտիչների բոլոր ցուցակները" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Թարմացնել հիմա" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Թարմացվում է..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "տեսնել բովանդակությունը" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "ԳԲ" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "ԿԲ" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "ՄԲ" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Պահուստավորել նիշքում..." - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ublock-իմ-պահուստ_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO-ի սեփական զտիչների ցանկերն ազատորեն տեղաբաշխված են հետևյալ \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN-երում\u003C/a>." - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Զտիչների ցանկը թարմացնելիս օգտագործվում է պատահականորեն ընտրված CDN" - }, - "aboutChangelog": { - "description": "", - "message": "Փոփոխությունների մատյան" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Աղբյուրի կոդ (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Աջակցողներ" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Արտաքին կախվածություններ (GPLv3-համատեղելի)՝" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Զտիչների ցանկեր" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Ընդլայնման մասին" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Գաղտնիության քաղաքականություն" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Վերականգնել լռելյայն կարգավորումները..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Ձեր բոլոր կարգավորումները կջնջվեն, uBlock₀֊ը կվերագործարկվի։\n\nՎերականգնե՞լ լռելյայն կարգավորումները։" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Վերականգնել նիշքից..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Ընթացիկ կարգավորումները կփոխարինվեն տվյալներով {{time}}-ին ստեղծված պահուստային պատճենից, և uBlock₀-ը կվերագործարկվի։\n\nՓոխարինե՞լ առկա բոլոր կարգավորումները պահուստավորված տվյալներով։" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Տվյալները չեն կարող ընթերցվել կամ անվավեր են" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Աղբյուրի կոդ" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Թարգմանություններ" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Ընդլայնված կարգավորումներ" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Ուշադրությո՛ւն։ Փոխեք այս կարգավորումները Ձեր ռիսկով և պատասխանատվությամբ։" - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Ակտիվների դիտակ" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Կտտացրեք՝ բեռնելու համար" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Այս սարքի անունը՝" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Ներմուծել ամպային պահեստից" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Ներմուծել ամպային պահեստից և միաձուլել ընթացիկ կարգավորումների հետ" - }, - "cloudPush": { - "description": "tooltip", - "message": "Արտահանել առ ամպային պահեստ" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Արգելափակել տարրը շրջանակում..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Բաժնեգրվել զտիչների ցանկի..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Ժամանակավորապես թույլ տալ խոշոր մեդիա տարրերը" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Դիտել աղբյուրի կոդը…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Կառավահան" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Ուշադրությո՛ւն։ Դուք ունեք չպահպանված փոփոխություններ։" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Անտեսել" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Մնալ" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Հետ" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Փակել այս լուսամուտը" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Շարունակել" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Մշտապես" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Առժամապես" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Այլևս չզգուշացնե՛լ ինձ այս կայքի մասին" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Գտնվել է այստեղ՝" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "առանց չափանիշների" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Անջատեք խիստ արգելափակումը {{hostname}}-ի համար" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin֊ը կանխել է հետևյալ էջի բեռնումը՝" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Հետևյալ զտիչի պատճառով՝" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Էջն արգելաբացվեց" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} օր առաջ" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} ժամ առաջ" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} րոպե առաջ" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "օր առաջ" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "ժամ առաջ" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "րոպե առաջ" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Ցանցի սխալ՝ {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Վերջապե՛ս, արդյունավետ արգելափակիչ։ Խնայում է մշակիչը և հիշողությունը։" - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "անջատված է" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Կիրառել" - }, - "genericBytes": { - "description": "", - "message": "բայթ" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Պատճենել առ սեղմատախտակ" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Միաց./Անջատել ընդհանուր ոլորումը" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Հետադարձել" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Ընտրել բոլորը" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Հաստատել" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Սխալներ՝ {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Բոլորը" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Անդրկուլիսյան հարցումներ" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "մատյանի գրառումների զտում" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Տիրույթ" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Զտիչ" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Տեսակ" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Մաքրել մատյանը" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Ընթացիկ ներդիր" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Միաց./Անջատել DOM-տեսուչը" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Համատեքստ" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Զտիչ" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Զտիչների ցանկ" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Մանրամասներ" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Պատկանելություն" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Արմատային համատեքստ" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Կանոն" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Տեսակ" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Պարզ" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Ցանկ" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Աղյուսակ" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin վիքի. Մատյան" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Դադարեցնել մատյանավորումը (մերժել բոլոր մուտքային տվյալները)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Միաց./Անջատել ելնող վահանակը" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Վերաբեռնել ներդիրի բովանդակությունը" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1-ին կողմ" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3-րդ կողմ" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "թույլատրված" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "արգելափակված" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "փոփոխված" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Ոչ" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Մատյանի զտման ընտրանքներ" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Միաց./Անջ. մատյանի զտումը" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Մատյանի գրառումները, որոնք չեն բավարարում ցածում նշված բոլոր երեք պայմաններին, ինքնաշխատ կմերժվեն։" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Համատեքստ" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Զտիչ/կանոն" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Պատկանելություն" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Ժամանակ" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Թաքցնել սյունակները՝" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Ուղղահայացորեն ընդլայնված ռեժիմում օգտագործել {{input}} տող ամեն մի գրառման համար" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Պահպանել վերջին {{input}} րոպեի գրառումները" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Պահպանել ոչ ավելի, քան {{input}} գրառում ամեն մի ներդիրում" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Պահպանել ոչ ավելի, քան {{input}} բեռնում ամեն մի ներդիրում" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "\u003Ccode>{{filter}}\u003C/code> ստատիկ զտիչը գտնվել է՝" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Ստատիկ զտիչն անհնար է գտնել ներկայումս միացված զտիչների ցանկերից որևէ մեկում" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Ստատիկ զտիչ" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} {{type}} ցանցային հարցումները,{{br}}որոնց URL-հասցեներն համընկնում են {{url}} {{br}}և որոնք ծագում են {{origin}},{{br}}{{importance}} կա համապատասխան բացառության կանոն։" - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Թույլատրել" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "ցանկացած տեղից" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "ցանկացած տեսակի" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Արգելափակել" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "նույնիսկ եթե" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "բացառությամբ այն դեպքերի, երբ" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "«{{origin}}»-ից" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "«{{type}}» տեսակի" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Համատեքստ՝" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL-ի կանոն" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Տեսակ՝" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Վերսկսել մատյանավորումը" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Արգելափակել տարրը..." - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Կոսմետիկ զտիչներ" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Կտտոց, Ctrl+կտտոց" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Ստեղծել" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Ցանցային զտիչներ" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Ընտրել" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Նախադիտում" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Դուրս գալ" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1-ին կողմի սկրիպտներ" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "3-րդ կողմերի ռեսուրսներ" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "շրջանակ" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "3-րդ կողմերի շրջանակներ" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "3-րդ կողմերի CSS/պատկերներ" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "սկրիպտ" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "3-րդ կողմերի սկրիպտներ" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "բոլորը" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "այս էջում" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Արգելափակվել է այս էջում" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "արգելափակված հարցում" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "տեղադրման պահից" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Արգելափակվել է տեղադրման պահից" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Միացվել է տիրույթներ" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{total}}֊ից {{count}}֊ը" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "միացված տիրույթներ" - }, - "popupImageRulePrompt": { - "description": "", - "message": "պատկերներ" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "ներտող սկրիպտներ" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Պակաս" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Ավել" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Կոսմետիկ զտում" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Խոշոր մեդիա տարրեր" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Ելնող լուսամուտներ" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Կողմնակի տառատեսակներ" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "կամ" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Կտտոց՝ անջատել/միացնել uBlock₀-ն այս կայքի համար։\n\nCtrl+կտտոց՝ անջատել uBlock₀-ը միայն այս էջում։" - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Կտտացրեք՝ uBlock₀֊ն այս կայքի համար անջատելու համար։\n\nCtrl+կտտոց՝ uBlock₀֊ն միայն այս էջում անջատելու համար։" - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "կտտացրեք՝ uBlock₀֊ն այս կայքի համար միացնելու համար։" - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Բացել կառավահանը" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Համընդհանուր կանոններ. այս սյունակը նախատեսված է բոլոր կայքերի վրա տարածվող կանոնների համար։" - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Տեղական կանոններ. այս սյունակը նախատեսված է միայն այս կայքի վրա տարածվող կանոնների համար։\nՏեղական կանոնները վերասահմանում են համընդհանուր կանոնները։" - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Բացել մատյանը" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Միաց./Անջ. կոսմետիկ զտումն այս կայքի համար" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Կտտացրեք՝ այս կայքում կոսմետիկ զտումն անջատելու" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Կտտացրեք՝ այս կայքում կոսմետիկ զտումը միացնելու" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Միաց./Անջ. այս կայքի խոշոր մեդիա տարրերի արգելափակումը" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Կտտացրեք՝ այս կայքի խոշոր մեդիա տարրերն արգելափակելու" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Կտտացրեք՝ այս կայքի խոշոր մեդիա տարրերի արգելափակումն անջատելու" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Միաց./Անջ. այս կայքի բոլոր ելնող լուսամուտների արգելափակումը" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Կտտացրեք՝ այս կայքի բոլոր ելնող լուսամուտներն արգելափակելու" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Կտտացրեք՝ այս կայքի բոլոր ելնող լուսամուտների արգելափակումն անջատելու" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Միաց./Անջ. կողմնակի տառատեսակների արգելափակումն այս կայքի համար" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Կտտացրեք՝ կողմնակի տառատեսակներն այս կայքում արգելափակելու" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Կտտացրեք՝ այս կայքի համար կողմնակի տառատեսակների արգելափակումն անջատելու" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Կտտացրեք՝ JavaScript֊ն այս կայքում անջատելու" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Կտտացրեք՝ այս կայքում JavaScript֊ն այլևս չանջատելու համար" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Գործարկել տարրերի ընտրության ռեժիմը" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Հաղորդել կայքում առաջացած խնդրի մասին" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Կտտացրեք՝ փոփոխությունները հետարկելու համար։" - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Կտտացրեք՝ փոփոխությունները պահպանելու համար։" - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Գործարկել տարրերի ջնջման ռեժիմը" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Տարբերակ" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Արգելափակման թուլացված ռեժիմ" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Հաստատել" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Խմբագրել" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Չեղարկել" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Պահպանել" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Արտահանել դեպի նիշք" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Կանոնների շարահյուսություն՝ \u003Ccode>աղբյուր նպատակակետ տեսակ գործողություն\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>բոլոր փաստաթղթերը\u003C/a>)։" - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Դինամիկական զտման կանոնների Ձեր ցուցակը։" - }, - "rulesImport": { - "description": "", - "message": "Ներմուծել նիշքից..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Իս կանոնները" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Մշտական կանոններ" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Հետադարձել" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Տեսակավորել՝" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Նպատակակետ" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Աղբյուր" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Կանոնի տեսակ" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Ժամանակավոր կանոններ" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Լռելյայն վարքագիծ" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Այս կարգավորումները կարող են նշված լինել յուրաքանչյուր կայքի համար ջոկ֊ջոկ" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Ընդլայնված կարգավորումներ" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Տեխնիկական օգտվողների համար նախատեսված գործառույթներ" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Ես հմուտ օգտվող եմ (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>կարդալը պարտադիր է\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "ընդլայնված կարգավորումներ" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Արտաքին տեսք" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Միացնել ամպային պահեստի աջակցոմը" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Թաքցնել արգելափակված տարրերի տեղապահները" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Բարեհաճ գույներ գունակուրություն ունեցողների համար" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Օգտվեք համատեքստային ընտրացանկից, երբ դա տեղին է" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Անջատել հիպերհղումների ստուգումը" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Ցուցադրել արգելափակված հայտերի քանակը պատկերակի վրա" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Վերջին պահուստային պատճենը՝" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Վերջին վերականգնումը՝" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Արգելափակել CSP հաշվետվությունները" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Անջատել կոսմետիկ զտումը" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Արգելափակել {{input}} ԿԲ-ից մեծ մեդիա տարրերը" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Արգելափակել կողմնակի տառատեսակները" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Անջատել JavaScript֊ը" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Կարգավորումներ" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Անջատել նախաբեռնումը՝ արգելափակված ցանցային հայտերի համար միացումները կանխելու" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Ընտրովի շեշտային գույն" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Թեմա" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Անջատել գործիքահուշերը" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Բանալ կանոնական անունները" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Կանխել տեղական IP-հասցեների արտահոսքը WebRTC-ի միջոցով" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Մուտքագրեք դյուրանցում" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Դյուրանցումներ" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Ցույց տալ կառավահանը" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Ցույց տալ մատյանը" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Մատյան" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Պահեստի չափը՝ {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Բաժանորդագրվել" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Ավելացնե՞լ հետևյալ հասցեն զտիչների օգտվողային ցանկին։\n\nՎերնագիր՝ «{{title}}»\nURL՝ {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Գտնել նման զեկույցներ" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Բացել" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Աջակցություն" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Խմբագրել" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Նոր զեկույց ստեղծել" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Փաստաթղթեր" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Կարդացեք փաստաթղթերը \u003Ccode>uBlock/wiki\u003C/code>-ում՝ uBlock Origin-ի բոլոր հնարավորությունների մասին իմանալու։" - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Հարցեր և աջակցություն" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Հարցերի պատասխանները և օգնության այլ տեսակները մատչելի են Reddit-ի \u003Ccode>/r/uBlockOrigin\u003C/code> բաժնում։" - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Զտիչի խնդիրներ/կայքը կոտրված է" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Հաղորդեք որոշակի կայքերի հետ կապված զտիչի խնդիրների մասին \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets-ի\u003C/code> խնդիրների հետագծիչի բաժնում\u003C/span>։ \u003Cu>Պահանջվում է GitHub հաշիվ։\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Կարևոր է.\u003C/b> Խուսափեք uBlock Origin-ի հետ մեկտեղ նման այլ արգելափակիչներ օգտագործելուց, քանի որ դա կարող է որոշակի կայքերում զտիչի հետ կապված խնդիրներ առաջացնել:" - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Խորհուրդներ.\u003C/b>Համոզվեք, որ Ձեր զտիչների ցուցակները թարմացված են: \u003Cspan data-url=\"logger-ui.html#_\">Մատյանը\u003C/span> զտիչների հետ կապված խնդիրների ախտորոշման հիմնական գործիքն է։" - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Զեկույց սխալի մասին" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Հաղորդեք uBlock Origin-ի սեփական սխալների մասին \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> խնդիրների հետագծիչի բաժնում\u003C/span>։ \u003Cu>Պահանջվում է GitHub հաշիվ։\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Ախտորոշիչ տեղեկություն" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Ցածում տեխնիկական տեղեկություն է, որը կարող է օգտակար լինել, երբ կամավորները փորձում են օգնել Ձեզ լուծել խնդիրը։" - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Կարևոր է.\u003C/b> Հնարավոր անձնական կամ զգայուն տեղեկությունները խմբագրվում է լռելյայնորեն։ Վերամշակված տեղեկություները կարող է ավելի բարդացնել խնդրի լուծումը:" - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Նշել վեբ էջը որպես «NSFW» (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">«Աշխատանքի համար անվտանգ չէ»\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Հաղորդել զտիչի խնդրի մասին" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Կամավորներին կրկնօրինակ զեկույցներով չծանրաբեռնելու համար խնդրում ենք ստուգել, որ խնդիրն արդեն հաղորդված չէ։" - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Զտիչների ցուցակները թարմացվում են ամեն օր։ Համոզվեք, որ Ձեր խնդիրը չի լուծվել զտիչների թարմ ցուցակներում։" - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Համոզվեք, որ խնդիրը պահպանվում է նույնիսկ խնդրահարույց էջը վերաբեռնելուց հետո։" - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Վեբ էջը..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Ընտրեք կատեգորիա --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Գովազդ է ցուցադրվում կամ դրա մնացորդներ" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Վրածածկումներ կամ այլ խանգարումներ" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Հայտնաբերվում է uBlock Origin-ը" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Գաղտնիության հետ կապված խնդիրներ" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Անսարքություններ, երբ uBlock Origin-ը միացված է" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Բացում է անցանկալի ներդիրները կամ լուսամուտները" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Վեբ էջի հասցեն՝" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Չեղարկել խմբագրումը" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Փոխանջատել կոսմետիկ զտումը" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Անջատել JavaScript֊ը" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Չհաջողվեց կատարել զտումը զննիչի գործարկման ժամանակ։\nՎերաբեռնեք էջը՝ պատշաճ զտումն ապահովելու համար։" - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Կիրառել փոփոխությունները" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Արտահանել" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Ներմուծել և հավելել" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Վստահված կայքեր" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Վստահված կայքերի ցուցակը սահմանում է, թե որ կայքերում uBlock Origin-ը պիտի անջատված լինի։ Մեկ տողում մեկ գրառում։ Անճիշտ կանոններն առանց նախազգուշացման անտեսվելու և մեկնաբանվելու են։" - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/id/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/id/messages.json deleted file mode 100644 index 5835931..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/id/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Terapkan perubahan" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Aktifkan filter kustom saya" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Ekspor…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Impor dan tambahkan…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filter Saya" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Izinkan filter kustom yang memerlukan kepercayaan" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Jangan tambah filter dari sumber yang tidak tepercaya." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Terapkan perubahan" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Otomatis perbarui daftar filter" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Sudah usang." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Satu URL per baris. URL yang tidak valid akan diabaikan tanpa peringatan." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Iklan" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Gangguan" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Pemberitahuan cookie" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Khusus" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Bawaan" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Perlindungan malware, keamanan" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Serbaguna" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privasi" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Wilayah, bahasa" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Widget sosial" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Abaikan filter tampilan generik" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Filter tampilan generik adalah filter tampilan yang dibuat untuk diterapkan pada semua situs web. Mengaktifkan opsi ini akan menghilangkan peningkatan overhead memori ram dan CPU pada halaman web akibat diterapkannya filter tampilan generik.\n\nDirekomendasikan untuk mengaktifkan opsi ini pada perangkat dengan performa rendah." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Impor..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Pembaruan terakhir: {{ago}}.\nKlik untuk memaksa memperbarui." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Daftar host yang diblokir" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} digunakan dari {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} filter jaringan + {{cosmeticFilterCount}} filter tampilan dari:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Galat jaringan mencegah sumber daya diperbarui." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Daftar Filter" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Filter tampilan berfungsi untuk menyembunyikan elemen di halaman web yang dianggap sebagai gangguan visual, dan tidak bisa diblokir oleh filter berbasis permintaan jaringan." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Urai dan paksa terapkan filter tampilan" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Bersihkan semua tembolok" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Tunda aktivitas jaringan sampai semua daftar filter dimuat" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Perbarui sekarang" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Memperbarui..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "lihat konten" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Cadangkan ke berkas…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Daftar filter uBO sendiri dihosting secara gratis di \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN\u003C/a> berikut:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "CDN yang dipilih secara acak digunakan saat daftar filter perlu diperbarui" - }, - "aboutChangelog": { - "description": "", - "message": "Catatan perubahan" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Kode sumber (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Kontributor" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Dependensi eksternal (kompatibel GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Daftar filter" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Tentang" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Kebijakan privasi" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Kembalikan ke pengaturan bawaan..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Semua pengaturan Anda akan dihapus, dan uBlock₀ akan memulai ulang.\n\nKembalikan uBlock₀ ke pengaturan bawaan?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Pulihkan dari berkas..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Semua pengaturan Anda akan ditimpa dengan data yang dicadangkan pada {{time}}, dan uBlock₀ akan memulai ulang.\n\nTimpa semua pengaturan yang ada dengan data cadangan?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Data tidak dapat dibaca atau tidak valid" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Kode sumber" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Terjemahan" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Pengaturan lanjutan" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Peringatan! Ubah pengaturan lanjutan berikut dengan risiko Anda sendiri." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Penampil aset" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Klik untuk memuat" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Nama perangkat ini:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Impor dari penyimpanan awan" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Impor dari penyimpanan awan dan gabungkan dengan pengaturan saat ini" - }, - "cloudPush": { - "description": "tooltip", - "message": "Ekspor ke penyimpanan awan" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Blokir elemen di dalam frame..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Berlangganan daftar filter..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Sementara izinkan elemen media besar" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Lihat kode sumber…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Dasbor" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Peringatan! Anda memiliki ubahan yang belum disimpan" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Abaikan" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Tinggal" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Kembali" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Tutup jendela ini" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Lanjutkan" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanen" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Sementara" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Jangan ingatkan saya lagi tentang situs ini" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Ditemukan di:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "tanpa parameter" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Nonaktifkan pemblokiran ketat untuk {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin telah mencegah halaman berikut dimuat:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Disebabkan oleh filter berikut" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Halaman diblokir" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Entri ini harus menjadi yang terakhir" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} hari yang lalu" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} jam yang lalu" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} menit yang lalu" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "sehari yang lalu" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "sejam yang lalu" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "semenit yang lalu" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Galat jaringan: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Akhirnya, pemblokir iklan yang efisien. Ringan penggunaan CPU dan memori." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "mati" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Terapkan perubahan" - }, - "genericBytes": { - "description": "", - "message": "byte" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Salin ke papan klip" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Aktif/Nonaktifkan bilah gulir" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Urungkan" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Pilih semua" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Kirim" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Galat: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Semua" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Di balik layar" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filter konten pencatat log" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domain" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filter" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Jenis" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Kosongkan pencatat log" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Tab saat ini" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Aktif/Nonaktifkan inspeksi DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Konteks" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Daftar filter" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Detail" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Hubungan" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Konteks induk" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Aturan" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Jenis" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Biasa" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Daftar" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabel" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Pencatat log" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Jeda pencatat log (buang semua data masuk)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Aktif/Nonaktifkan panel popup" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Muat ulang konten tab" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "pihak ke-1" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "pihak ke-3" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "diizinkan" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "diblokir" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "diubah" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Tidak" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Opsi filter pencatat log" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Aktif/Nonaktifkan penyaringan pencatat log" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Entri pencatat log yang tidak memenuhi ketiga kondisi di bawah akan otomatis dibuang:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Konteks" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/aturan" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Relasi" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Waktu" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Sembunyikan kolom:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Gunakan {{input}} baris per entri dalam mode perluasan vertikal" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Pertahankan entri sejak {{input}} menit terakhir" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Pertahankan maksimal {{input}} entri per tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Pertahankan maksimal {{input}} pemuatan laman per tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Filter statis \u003Ccode>{{filter}}\u003C/code> ditemukan di dalam:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Filter statis tidak dapat ditemukan di semua daftar filter yang aktif saat ini" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Filter statis" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} permintaan jaringan dari {{type}} {{br}}yang alamat URLnya cocok dengan {{url}} {{br}}dan yang berasal dari {{origin}},{{br}}{{importance}} ada pengecualian penyaring yang cocok." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Izinkan" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "dari manapun" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "semua jenis" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Blokir" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "meskipun" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "kecuali ketika" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "dari “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "jenis “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Konteks:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Aturan URL" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Jenis:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Lanjutkan pencatat log" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Blokir elemen..." - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Filter tampilan" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klik, Ctrl-klik" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Buat" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Filter jaringan" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Pilih" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Pratinjau" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Keluar" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "skrip pihak pertama" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "pihak ketiga" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "frame pihak ketiga" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/gambar pihak ke-3" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "skrip" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "skrip pihak ketiga" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "semua" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "di laman ini" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Diblokir di laman ini" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "permintaan diblokir" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "sejak dipasang" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Diblokir sejak dipasang" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} atau {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domain terhubung" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} dari {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domain terhubung" - }, - "popupImageRulePrompt": { - "description": "", - "message": "gambar" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "skrip inline" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Lebih sedikit" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Lebih banyak" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Filter tampilan" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Elemen media besar" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Jendela pop-up" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Fon eksternal" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "atau" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klik: nonaktif/aktifkan uBlock₀ untuk situs ini.\n\nCtrl+klik: nonaktifkan uBlock₀ hanya di laman ini." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Klik untuk menonaktifkan uBlock₀ pada situs ini.\n\nCtrl+klik untuk menonaktifkan uBlock₀ hanya di laman ini." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Klik untuk mengaktifkan uBlock₀ pada situs ini." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Buka dasbor" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Aturan global: kolom ini untuk aturan yang diterapkan ke semua situs." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Aturan lokal: kolom ini untuk aturan yang diterapkan ke situs yang sedang dikunjungi saja.\nAturan lokal menimpa aturan global." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Buka pencatat log" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Aktif/Nonaktifkan filter tampilan untuk situs ini" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klik untuk menonaktifkan filter tampilan pada situs ini" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klik untuk mengaktifkan filter tampilan pada situs ini" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Aktifkan/Nonaktifkan pemblokiran elemen media besar untuk situs ini" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klik untuk memblokir elemen media berukuran besar pada situs ini" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klik untuk tidak lagi memblokir elemen media berukuran besar pada situs ini" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Alihkan pemblokiran semua popup untuk situs ini" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klik untuk memblokir semua popup pada situs ini" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klik untuk tidak lagi memblokir semua popup pada situs ini" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Aktif/Nonaktifkan pemblokiran fon eksternal untuk situs ini" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klik untuk memblokir fon eksternal pada situs ini" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klik untuk tidak lagi memblokir fon eksternal pada situs ini" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klik untuk menonaktifkan total JavaScript di situs ini" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klik untuk tidak lagi menonaktifkan total JavaScript di situs ini" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Memasuki mode pemilihan elemen" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Laporkan masalah situs web ini" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Klik untuk membatalkan ubahan Anda." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Klik untuk membuat ubahan Anda permanen." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Memasuki mode penghapus elemen" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versi" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Perlonggar mode pemblokiran" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Tetapkan" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Sunting" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Batal" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Simpan" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Ekspor ke berkas…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Aturan sintaksis: \u003Ccode>sumber tujuan jenis tindakan\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>dokumentasi lengkap\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Daftar aturan filter dinamis Anda." - }, - "rulesImport": { - "description": "", - "message": "Impor dari berkas..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Aturan Saya" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Aturan permanen" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Urungkan" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Urutkan:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Tujuan" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Sumber" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Tipe aturan" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Aturan sementara" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Perilaku bawaan" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Perilaku bawaan ini bisa ditimpa pada masing-masing aturan situs" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Tingkat lanjut" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Fitur ditujukan untuk pengguna tingkat lanjut." - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Saya pengguna tingkat lanjut" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "pengaturan lanjutan" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Tampilan" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Aktifkan dukungan penyimpanan awan" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Sembunyikan wadah elemen yang diblokir" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Ramah buta warna" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Pergunakan menu konteks jika sesuai" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Nonaktifkan pengauditan pranala" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Tampilkan jumlah permintaan yang diblokir pada ikon" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Pencadangan terakhir:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Pemulihan terakhir:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Blokir laporan CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Nonaktifkan filter tampilan" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Blokir elemen media yang lebih besar dari {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Blokir fon eksternal" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Nonaktifkan JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Pengaturan" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Nonaktifkan pra-ambil (untuk mencegah sambungan apapun untuk permintaan jaringan yang diblokir)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Warna aksen khusus" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Nonaktifkan tip alat" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Ungkap nama kanonis" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Cegah WebRTC membocorkan alamat IP lokal" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Ketik pintasan" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Pintasan" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Tampilkan Dasbor" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Tampilkan Pencatat Log" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Pencatat Log" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Penyimpanan terpakai: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Berlangganan" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Tambah URL berikut ke ke daftar filter khusus Anda?\n\nJudul: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Temukan laporan serupa" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Buka" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Dukungan" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Sensor" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Buat laporan baru" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentasi" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Baca dokumentasi di \u003Ccode>uBlock/wiki\u003C/code> untuk mempelajari semua fitur uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Pertanyaan dan dukungan" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Jawaban pertanyaan dan dukungan bantuan lainnya tersedia di subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Masalah filter/situs web rusak" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Laporkan masalah filter pada situs web ke \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">pelacak masalah \u003Ccode>uBlockOrigin/uAssets\u003C/code>\u003C/span>. \u003Cu>Membutuhkan akun GitHub.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Penting:\u003C/b> Hindari menggunakan pemblokir sejenis bersamaan dengan uBlock Origin, karena mungkin akan mengakibatkan terjadinya masalah filter pada situs web tertentu." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Pastikan filter Anda selalu yang terbaru. \u003Cspan data-url=\"logger-ui.html#_\">Pencatat log\u003C/span> adalah utilitas utama untuk mendiagnosis masalah yang terkait dengan filter." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Laporan bug" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Laporkan masalah ekstensi uBlock Origin ke \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">pelacak masalah \u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>\u003C/span>. \u003Cu>Membutuhkan akun GitHub.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Informasi penyelesaian masalah" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Di bawah ini adalah informasi teknis yang mungkin berguna saat sukarelawan berusaha membantu memecahkan masalah Anda." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Penting:\u003C/b> Informasi yang sifatnya privat dan sensitif disensor secara bawaan. Informasi yang disensor mungkin akan membuat proses memecahkan masalah semakin sulit." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Beri label halaman web sebagai “TAUSB” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Tidak Aman Untuk Saat Bekerja”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Laporkan masalah filter" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Untuk menghindari membebani sukarelawan dengan laporan duplikat, harap verifikasi bahwa masalah tersebut belum dilaporkan." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Daftar filter diperbarui setiap hari. Pastikan masalah Anda belum teratasi dalam daftar filter terbaru." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verifikasi bahwa masalah masih ada setelah memuat ulang halaman web yang bermasalah." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Laman web…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pilih entri --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Menampilkan iklan atau sejenisnya" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Memiliki overlay atau gangguan lainnya" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Mendeteksi uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Memiliki masalah terkait privasi" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Rusak saat uBlock Origin aktif" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Membuka tab atau jendela yang tidak diinginkan" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Alamat laman web:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Batal sensor" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Aktif/Nonaktifkan filter tampilan" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Aktif/Nonaktifkan JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Filter tidak dapat bekerja dengan baik saat peramban dimulai.\nMuat ulang halaman agar filter dapat bekerja dengan baik." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Terapkan perubahan" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Ekspor…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Impor dan tambahkan…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Situs Terpercaya" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Arahan situs tepercaya menentukan halaman web mana yang uBlock Origin harus dinonaktifkan. Satu entri per baris." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/it/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/it/messages.json deleted file mode 100644 index 0d9356c..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/it/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Salva i cambiamenti" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Abilita i miei filtri personalizzati" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Esporta" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "ublock-filtri-statici-personalizzati_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importa e aggiungi" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "I miei filtri" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Consenti i filtri personalizzati che richiedono affidabilità" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Non aggiungere filtri da fonti non affidabili." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Salva i cambiamenti" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Aggiornamento automatico liste." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Obsoleto." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Un URL per riga. Gli URL non validi saranno silenziosamente ignorati." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Pubblicità" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Elementi fastidiosi" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Avvisi sui cookie" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Personalizzate" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Integrati" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Protezione dai malware, sicurezza" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multiuso" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privacy" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regioni, lingue" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Widget dei social" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignora filtri cosmetici generici." - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "\u003Cp>I filtri cosmetici generici sono i filtri cosmetici intesi per essere applicati a tutti i siti Web.\u003Cp>Benché questi siano gestiti in modo efficiente da uBlock₀, i filtri cosmetici generici potrebbero contribuire a un carico elevato in termini di memoria e CPU su alcune pagine Web, in particolare quelle di notevoli dimensioni e a lunga scadenza.\u003Cp>L'attivazione di quest'opzione eliminerà il carico elevato in termini di memoria e CPU aggiunto alle pagine Web in conseguenza della gestione dei filtri cosmetici generici, e inoltre ridurrà l'impatto sulla memoria di uBlock₀ stesso.\u003Cp>È raccomandato abilitare quest'opzione sui dispositivi meno potenti." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importa..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Ultimo aggiornamento: {{ago}}.\nClicca per forzare l'aggiornamento." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lista degli hosts bloccati" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} usati su {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} filtri di rete + {{cosmeticFilterCount}} filtri cosmetici da:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Un errore di rete ha impedito l'aggiornamento della risorsa." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filtri di terze parti" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "\nI filtri cosmetici servono a nascondere gli elementi in una pagina web che sono considerati visivamente fastidiosi e che non possono essere bloccati dai motori di filtraggio basati sulle richieste di rete." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Analizza e applica i filtri cosmetici" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Elimina tutte le cache" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Sospendi l'attività di rete finché tutte le liste dei filtri sono caricate" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Aggiorna ora" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Aggiornamento in corso..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "visualizza contenuto" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Crea file di backup..." - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Gli elenchi di filtri di uBO sono liberamente ospitati sui seguenti \u003Ca href=\"https://it.wikipedia.org/wiki/Content_Delivery_Network\">CDN\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Un CDN selezionato a caso verrà utilizzato quando è necessario aggiornare un elenco di filtri" - }, - "aboutChangelog": { - "description": "", - "message": "Registro delle modifiche" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Codice sorgente (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Collaboratori" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Dipendenze esterne (GPLv3-compatibili):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Liste filtri" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Info" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Informativa sulla privacy" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Ripristina le impostazioni predefinite…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Verranno cancellate tutte le impostazioni, e uBlock₀ sarà riavviato.\n\nResettare uBlock alle impostazioni di fabbrica?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Ripristina dal file..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Tutte le impostazioni verranno sovrascritte utilizzando i dati di backup del {{time}} e uBlock sarà riavviato.\n\nSovrascrivere tutte le impostazioni esistenti con quelle del backup?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "I dati non possono essere letti o non sono validi" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Codice sorgente" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Traduzioni" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Impostazioni avanzate" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Attenzione! Modifica queste impostazioni avanzate a tuo rischio e pericolo." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Visualizzatore di risorse" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Clicca per caricare" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Nome di questo dispositivo:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Importa dal cloud" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importa da archivio cloud ed unisci con le impostazioni attuali" - }, - "cloudPush": { - "description": "tooltip", - "message": "Esporta nel cloud" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Blocca elemento in un frame" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Iscriviti alla lista dei filtri..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Consenti temporaneamente elementi multimediali di grandi dimensioni" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Visualizza il codice sorgente…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Dashboard" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Attenzione! Ci sono delle modifiche non ancora salvate" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignora" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Attendi" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Torna indietro" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Chiudi questa finestra" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Procedi" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanentemente" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Temporaneamente" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Non avvisarmi di nuovo riguardo questo sito" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Trovato in:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "senza parametri" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Disabilita blocco assoluto per {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock₀ ha impedito alla seguente pagina di caricarsi:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "A causa del seguente filtro" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Pagina bloccata" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} giorni fa" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} ore fa" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} minuti fa" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "un giorno fa" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "un'ora fa" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "un minuto fa" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Errore di rete: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Finalmente, un blocker efficiente. Leggero sulla CPU e sulla memoria." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "disattivato" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Salva i cambiamenti" - }, - "genericBytes": { - "description": "", - "message": "byte" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Copia negli appunti" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Attiva o disattiva il blocco dello scorrimento" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Ripristina" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Seleziona tutto" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Invia" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errori: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Tutte" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Dietro le quinte" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtra il contenuto del registro" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Dominio" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filtro" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Tipo" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Pulisci il registro" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Scheda corrente" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Attiva o disattiva l'ispettore DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Contesto" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filtro" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Elenco dei filtri" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Dettagli" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Parte della richiesta" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Contesto di root" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Regola" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Tipo" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Semplice" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Lista" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabella" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "Wiki di uBlock Origin: Il registro" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Metti in pausa il registro (scarta tutti i dati in arrivo)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Attiva o disattiva il pannello popup" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Ricarica il contenuto della scheda" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Dominio attuale" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Di terze parti" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "Consentito" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "bloccato" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "movimentato" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modificato" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Non" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Opzioni di filtraggio del registro" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Attiva o disattiva il filtraggio del registro" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Le voci del registro che non soddisfano tutte e tre le condizioni seguenti verranno automaticamente scartate:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Contesto" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filtro/regola" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Parte della richiesta" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Tempo" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Nascondi colonne:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Usa {{input}} righe per voce in modalità espansa verticale" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Mantieni le voci degli ultimi {{input}} minuti" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Conserva al massimo {{input}} voci per scheda" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Conserva al massimo {{input}} caricamenti di pagina per scheda" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Filtro statico \u003Ccode>{{filter}}\u003C/code> trovato in:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Non è stato possibile trovare il filtro statico in alcuna delle liste dei filtri attualmente abilitate" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Filtraggio statico" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} la richiesta di rete di {{type}} {{br}} il cui indirizzo URL corrisponde a {{url}} {{br}}e che proviene da {{origin}},{{br}}{{importance}} c'è una corrispondenza nel filtro delle eccezioni." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Permetti" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "da ovunque" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "qualsiasi tipo" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Blocca" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "anche se" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "tranne quando" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "da “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "tipo “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Contesto:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Regola dell'URL" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Tipo:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Riattiva il registro" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Blocca elemento..." - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Filtri cosmetici" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Click, Ctrl-click" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Crea" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Filtri di rete" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Seleziona" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Anteprima" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Esci" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "Script di proprietà del sito" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "Di terze parti" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "Frame di terze parti" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "Immagini/CSS di terze parti" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "Script di terze parti" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "Tutto" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "in questa pagina" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Bloccati su questa pagina" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "richieste bloccate" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "dall'installazione" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Bloccati dall'installazione" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} o {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domini connessi" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} di {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domini connessi" - }, - "popupImageRulePrompt": { - "description": "", - "message": "Immagini" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "Script inline" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Meno" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Altro" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Filtraggio cosmetico" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Elementi multimediali di grandi dimensioni" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Finestre pop-up" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Caratteri remoti" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "o" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Click: disabilita/abilita uBlock₀ per questo sito.\n\nCtrl+click: disabilita uBlock₀ solo per questa pagina." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Click per disabilitare uBlock₀ per questo sito.\n\nCtrl+click per disabilitare uBlock₀ solo su questa pagina." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Clicca per attivare uBlock₀ in questo sito." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Apri la dashboard" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Regole globali: questa colonna è per le regole che si applicano a tutti i siti." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Regole locali: questa colonna è per le regole che si applicano solo al sito corrente.\nLe regole locali hanno la precedenza su quelle globali." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Vai al registro delle richieste" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Disabilita/abilita filtraggio cosmetico per questo sito" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Clicca per disattivare il filtraggio cosmetico in questo sito" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Clicca per attivare il filtraggio cosmetico in questo sito" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Abilita/disabilita il blocco di elementi multimediali di grandi dimensioni per questo sito" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Clicca per bloccare elementi multimediali di grandi dimensioni in questo sito" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Clicca per sbloccare elementi multimediali di grandi dimensioni in questo sito" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Disabilita/abilita il blocco di tutti i popup per questo sito" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Clicca per bloccare tutti i popup in questo sito" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Clicca per sbloccare tutti i popup in questo sito" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Attiva o disattiva il blocco dei font remoti per questo sito" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Clicca per bloccare i font remoti in questo sito" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Clicca per sbloccare i font remoti in questo sito" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Clicca per disattivare JavaScript su questo sito" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Clicca per non disabilitare più JavaScript su questo sito" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Accedi alla modalità seleziona elemento" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Segnala un problema su questo sito" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Clicca per annullare i cambiamenti." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Clicca per rendere le tue scelte permanenti." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Accedi alla modalità elimina elemento" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versione" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Rilassa la modalità di blocco" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Applica" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "ublock-filtri-dinamici-personalizzati_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Modifica" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Annulla" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Salva" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Esporta in file" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Sintassi per le regole: \u003Ccode>sorgente destinazione tipo azione\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>documentazione completa\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Lista delle regole di filtraggio dinamiche personalizzate." - }, - "rulesImport": { - "description": "", - "message": "Importa da file..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Le mie regole" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Regole permanenti" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Ripristina" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Ordina:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destinazione" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Fonte" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Tipo regola" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Regole temporanee" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Comportamento predefinito" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Questi comportamenti predefiniti possono essere modificati per ogni singolo sito" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Avanzate" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Funzionalità adatte solo per gli utenti tecnici." - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Sono un utente avanzato (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>Lettura obbligatoria\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "impostazioni avanzate" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Aspetto" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Abilita supporto salvataggio nel cloud" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Nascondi lo spazio riservato agli elementi bloccati" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Adatto ai daltonici" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Usa il menu contestuale quando è possibile" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Disattiva la revisione dei collegamenti ipertestuali" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Visualizza il numero degli elementi bloccati sull'icona" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Ultimo backup:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Ultimo ripristino:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Blocca i report CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Disabilita filtraggio cosmetico" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Blocca gli elementi multimediali di dimensioni maggiori di {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Blocca font remoti" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Disattiva JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Opzioni" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Disattiva pre-fetching (per evitare qualsiasi connessione per le richieste di rete bloccate)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Colore di risalto personalizzato" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Disabilita suggerimenti" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Rivela i nomi canonici" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Impedisci a WebRTC di rivelare l'indirizzo IP locale" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Digita una scorciatoia" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Scorciatoie" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Visualizza Dashboard" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Visualizza registro richieste di rete" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Cronologia richieste di rete" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Spazio utilizzato: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Sottoscrivi" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: Aggiungere il seguente URL alla tua lista dei filtri personalizzata?\n\nTitolo: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Trova segnalazioni simili" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Apri" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Supporto" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Oscura" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Crea una nuova segnalazione" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentazione" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Leggi la documentazione su \u003Ccode>uBlock/wiki\u003C/code> per conoscere tutte le funzionalità di uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Domande e supporto" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Le risposte alle domande e ad altri tipi di supporto sono fornite sul subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Problemi dei filtri/siti malfunzionanti" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Segnala problemi dei filtri con siti specifici al \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">tracciatore di bug \u003Ccode>uBlockOrigin/uAssets\u003C/code>\u003C/span>. Richiede un account GitHub." - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Importante:\u003C/b> Evita di utilizzare altre estensioni simili insieme a uBlock Origin, poiché ciò potrebbe causare problemi di filtraggio su specifici siti." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Suggerimenti:\u003C/b> Assicurati che le tue liste di filtri siano aggiornate. \u003Cspan data-url=\"logger-ui.html#_\">Il registro\u003C/span> è lo strumento principale per diagnosticare i problemi relativi ai filtri." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Segnalazione di errori" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Segnala problemi di uBlock Origin stesso al \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">tracciatore di bug \u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>\u003C/span>. Richiede un account GitHub." - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Informazioni sulla risoluzione dei problemi" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Di seguito sono riportate informazioni tecniche che potrebbero essere utili quando i volontari cercheranno di aiutarti a risolvere un problema." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Importante:\u003C/b> Le informazioni potenzialmente private o sensibili vengono oscurate automaticamente. Le informazioni oscurate possono rendere più difficile risolvere un problema." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Etichetta la pagina web come “NSFW” (\u003Ca href=\"https://it.wikipedia.org/wiki/NSFW\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Segnala un problema con un filtro" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Per evitare di appesantire i volontari con segnalazioni doppie, verifica che il problema non sia già stato segnalato." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Gli elenchi dei filtri vengono aggiornati quotidianamente. Assicurati che il tuo problema non sia già stato risolto negli elenchi di filtri più recenti." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verifica che il problema sussista ancora dopo aver ricaricato la pagina web problematica." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "La pagina web..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "Scegli una voce" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Mostra pubblicità o avanzi di pubblicità" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ha sovrapposizioni o altri fastidi" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Rileva uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ha problemi relativi alla privacy" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Si rompe quando uBlock Origin è attivato" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Apre schede o finestre indesiderate" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Indirizzo della pagina web:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Non oscurare" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Attiva/Disattiva il filtraggio cosmetico" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Attiva o disattiva JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Non è stato effettuato correttamente il filtraggio all'avvio del browser.\nRicarica la pagina per garantire un filtraggio adeguato." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Salva i cambiamenti" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Esporta" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "ublock-whitelist_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importa e aggiungi" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Siti affidabili" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Lista dei siti dove uBlock è disattivato. Un sito per ogni riga. Le voci non valide verranno silenziosamente ignorate." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ja/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ja/messages.json deleted file mode 100644 index 26e86d2..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ja/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "変更を適用" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "マイカスタムフィルターを有効化" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "エクスポート" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "インポートと追加" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "マイフィルター" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "信頼が必要なカスタムフィルターを許可する" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "信頼できないソースからフィルターを追加しないでください。" - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "変更を適用" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "フィルターリストを自動更新する" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "期限切れです。" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "1 行につき 1 つの URL です。無効な URL はそのまま無視されます。" - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "広告" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "迷惑系" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "クッキー通知" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "カスタム" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "内製" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "マルウェアドメイン" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "多目的" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "プライバシー" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "地域・言語" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "SNS ウィジェット" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "汎用整形フィルターを無視する" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "汎用整形フィルターとは、すべてのウェブサイトに適用することを目的とした整形フィルターです。このオプションを有効にすると、汎用整形フィルターを処理する結果としてウェブページに加わる、メモリーと CPU のオーバーヘッドが削減されます。\n\n性能の低い端末ではこのオプションを有効にすることをお勧めします。" - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "インポート..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "最終更新: {{ago}}。\nクリックすると強制的に更新できます。" - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "ブロックしたホストの一覧" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{total}} 件中 {{used}} 件使用" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} 件のネットワークフィルター + {{cosmeticFilterCount}} 件の整形フィルター:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "ネットワークエラーが発生したため、リソースを更新できませんでした。" - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "フィルターリスト" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "整形フィルターは、ネットワークリクエストに基づいたフィルタリングエンジンではブロックできない、邪魔とみなされる視覚的要素をウェブページ上から隠すという機能を果たします。" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "整形フィルターを解析して適用する" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "キャッシュをすべて削除" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "フィルターリストをすべて読み込むまで、ネットワークアクティビティを停止する" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "今すぐ更新" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "更新中..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "中身を表示します" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "ファイルにバックアップ..." - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO の内製フィルターリストは以下の \u003Ca href=\"https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%83%87%E3%83%AA%E3%83%90%E3%83%AA%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF\">CDN\u003C/a> に無料でホストしています:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "フィルターリストの更新が必要なときにはランダムに選択した CDN を使用します" - }, - "aboutChangelog": { - "description": "", - "message": "更新履歴" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "ソースコード (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "貢献者" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "外部依存関係 (GPLv3 と両立):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "フィルターリスト" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "uBlock₀ について" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "プライバシーポリシー" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "初期設定にリセット..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "すべての設定を削除した後、uBlock₀ が再起動します。\n\nuBlock₀ を初期設定にリセットしますか?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "ファイルから復元..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "すべての設定を {{time}} にバックアップしたデータを使用して上書きした後、uBlock₀ が再起動します。\n\nバックアップデータを使用して既存の設定をすべて上書きしますか?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "データが無効、または読み込みができませんでした" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "ソースコード" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "翻訳" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "高度な設定" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "警告! 以下の高度な設定の変更は自己責任で行ってください。" - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — アセットビューアー" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "クリックして読み込む" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "この端末の名前:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "クラウドストレージからインポートします" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "クラウドストレージからインポートして現在の設定に統合します" - }, - "cloudPush": { - "description": "tooltip", - "message": "クラウドストレージにエクスポートします" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "フレーム内の要素をブロック..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "フィルターリストを購読..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "大きなメディア要素を一時的に許可" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "ソースを表示…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — ダッシュボード" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "警告! 保存していない変更があります" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "無視" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "留まる" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "戻る" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "このウィンドウを閉じる" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "続行する" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "永続的" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "一時的" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "今後このサイトに関する警告を表示しない" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "このフィルターを含むフィルターリスト:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "パラメーターなし" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "{{hostname}} への厳格なブロッキングを無効にする" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin は、 以下のサイトの読み込みを防止しました:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "以下のフィルターと一致したためです:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "ブロックしたページ" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} 日前" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} 時間前" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} 分前" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "1 日前" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "1 時間前" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "1 分前" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "ネットワークエラー: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "高効率ブロッカーついに登場。CPU とメモリーに負担をかけません。" - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "オフ" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "変更を適用" - }, - "genericBytes": { - "description": "", - "message": "バイト" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "クリップボードにコピー" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "スクロールの同期/非同期を切り替えます" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "元に戻す" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "すべて選択" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "送信" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "エラー: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "すべて" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "バックグラウンド通信" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "出力するログを絞り込む" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "ドメイン" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "フィルター" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "タイプ" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "ログを消去します" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "現在のタブ" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "DOM インスペクターの表示/非表示を切り替えます" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "コンテキスト" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "フィルター" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "フィルターリスト" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "詳細" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "パーティ種別" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "ルートコンテキスト" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "ルール" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "タイプ" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown 形式" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "テキスト形式" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "リスト形式" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "表形式" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: ログ" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "ログの出力を中断します (以後のデータはすべて破棄)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "ポップアップパネルの表示/非表示を切り替えます" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "タブを再読み込みします" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "ファーストパーティ" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "サードパーティ" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "許可した" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "ブロックした" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "フィルタリングした" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "変更した" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "除外" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "ログ絞り込みオプション" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "ログの絞り込みの有効/無効を切り替えます" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "以下の 3 つの条件から 1 つでも外れたログは自動的に破棄されます:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} コンテキスト" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} フィルター/ルール" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} パーティ種別" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} 時刻" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "非表示にする列:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "展開表示モードではログ 1 件につき {{input}} 行で表示する" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "過去 {{input}} 分間のログを保持する" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "1 つのタブにつき最大 {{input}} 件のログを保持する" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "1 つのタブにつき最大 {{input}} ページの読み込みを保持する" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "この静的フィルター \u003Ccode>{{filter}}\u003C/code> を含むフィルターリスト:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "この静的フィルターは現在有効なフィルターリストのどれにも含まれていません" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "静的フィルター" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "一致する例外フィルター {{importance}}{{br}}{{url}} に URL アドレスが一致し{{br}}{{origin}} 発信された{{br}}{{type}} のネットワークリクエストを {{action}} する。" - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "許可" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "任意のサイトから" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "任意のタイプ" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "ブロック" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "に関係なく" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "がない場合" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "“{{origin}}” から" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "タイプ “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "コンテキスト:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL ルール" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "タイプ:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "ログの出力を再開します" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "要素をブロック..." - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "整形フィルター" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "クリック、Ctrl+クリック" - }, - "pickerCreate": { - "description": "English: Create", - "message": "作成" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "ネットワークフィルター" - }, - "pickerPick": { - "description": "English: Pick", - "message": "選択" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "プレビュー" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "終了" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "ファーストパーティスクリプト" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "サードパーティ" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "フレーム" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "サードパーティフレーム" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "サードパーティ CSS/画像" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "スクリプト" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "サードパーティスクリプト" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "すべて" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "このページ" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "このページでのブロック数" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "ブロックしたリクエスト数" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "インストールしてから" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "インストールからのブロック数" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} 件 ({{percent}} %)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "接続したドメイン数" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} 件 ({{total}} 件中)" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "接続したドメイン数" - }, - "popupImageRulePrompt": { - "description": "", - "message": "画像" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "インラインスクリプト" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "折りたたむ" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "さらに表示" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "整形フィルタリング" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "大きなメディア要素" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "ポップアップウィンドウ" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "リモートフォント" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "/" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "クリック: このサイトで uBlock₀ を無効または有効にします。\n\nCtrl+クリック: このページだけで uBlock₀ を無効にします。" - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "クリックするとこのサイトで uBlock₀ を無効にします。\n\nCtrl+クリックでこのページだけで uBlock₀ を無効にします。" - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "クリックするとこのサイトで uBlock₀ を有効にします。" - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "ダッシュボードを開く" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "グローバルルール: この列のルールはすべてのサイトに適用されます。" - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "ローカルルール: この列のルールは現在のサイトだけに適用されます。\nローカルルールはグローバルルールを上書きします。" - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "ログを開く" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "このサイトに対する整形フィルタリングの有効/無効を切り替えます" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "クリックするとこのサイトでの整形フィルタリングを無効にします" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "クリックするとこのサイトでの整形フィルタリングを有効にします" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "このサイトに対する大きなメディア要素のブロックの有効/無効を切り替えます" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "クリックするとこのサイトの大きなメディア要素をブロックします" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "クリックするとこのサイトの大きなメディア要素をブロックしなくなります" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "このサイトに対するポップアップブロックの有効/無効をすべて切り替えます" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "クリックするとこのサイトのポップアップをすべてブロックします" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "クリックするとこのサイトのポップアップをすべてブロックしなくなります" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "このサイトに対するリモートフォントのブロックの有効/無効を切り替えます" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "クリックするとこのサイトのリモートフォントをブロックします" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "クリックするとこのサイトのリモートフォントをブロックしなくなります" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "クリックするとこのサイトの JavaScript を無効にします" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "クリックするとこのサイトの JavaScript は無効にならなくなります" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "要素選択モードに入る" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "このサイト上での問題を報告" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "クリックすると変更を元に戻します。" - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "クリックすると変更を確定します。" - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "要素抹消モードに入る" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "バージョン" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "ブロッキングモードを緩和する" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "確定" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "編集" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "破棄" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "保存" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "ファイルへエクスポート" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "ルールの構文: \u003Ccode>発信源 通信先 タイプ アクション\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>詳しい解説\u003C/a>)" - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "動的フィルタリングルールの一覧です。" - }, - "rulesImport": { - "description": "", - "message": "ファイルからインポート..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "マイルール" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "永続ルール" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "元に戻す" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "並べ替え:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "通信先" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "発信源" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "ルールの種類" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "一時ルール" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "既定の動作" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "以下の既定の動作はサイトごとに上書きできます" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "高度な設定" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "技術に詳しいユーザーのみを対象にした機能です" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "私は上級者です" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "高度な設定" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "外観" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "クラウドストレージのサポートを有効にする" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "ブロックした要素のプレースホルダーを非表示にする" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "色覚多様性に配慮した色を使用する" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "状況に合わせてコンテキストメニューを活用する" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "ハイパーリンクの監査を無効にする" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "ブロックしたリクエストの数をアイコンに表示する" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "前回のバックアップ:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "前回の復元:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "CSP レポートをブロックする" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "整形フィルタリングを無効にする" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "{{input}} KB より大きいメディア要素をブロックする" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "リモートフォントをブロックする" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "JavaScript を無効にする" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "設定" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "先読み機能を無効にする (ブロックしているネットワークリクエストへの接続を完全に防ぐため)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "カスタムアクセントカラー" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "テーマ" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "ツールチップを無効にする" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "CNAME クローキングを解除する" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "WebRTC によるローカル IP アドレスの漏洩を防ぐ" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "ショートカットキーを入力" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "ショートカットキー" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "ダッシュボードを表示" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "ログを表示" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — ログ" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "ストレージ使用量: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "購読" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "以下の URL をカスタムフィルターリストに追加しますか?\n\nフィルター名: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "似た報告を探す" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "開く" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "サポート" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "編集済にする" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "新しい報告を作成" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "ドキュメント" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "uBlock Origin のすべての機能については \u003Ccode>uBlock/wiki\u003C/code> のドキュメントをお読みください。" - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "質問とサポート" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "質問への回答などのヘルプやサポートは \u003Ccode>/r/uBlockOrigin\u003C/code> の subreddit で提供しています。" - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "フィルターの問題 / ウェブサイトが正しく動作しない" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "特定のウェブサイトで起きるフィルターの問題は \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> の Issue トラッカー\u003C/span>に報告してください。\u003Cu>GitHub のアカウントが必要です。\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>重要:\u003C/b> 似た機能を持つブロッカーを uBlock Origin と併用することは控えてください。特定のウェブサイトでフィルターの問題を引き起こすことがあります。" - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>ヒント:\u003C/b> フィルターリストが最新か確認しましょう。\u003Cspan data-url=\"logger-ui.html#_\">ログ\u003C/span>はフィルターに関連する問題の原因を調査するための第一のツールです。" - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "バグ報告" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "uBlock Origin 自体の問題は \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> の Issue トラッカー\u003C/span>に報告してください。\u003Cu>GitHub のアカウントが必要です。\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "トラブルシューティング情報" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "以下の技術情報はボランティアが問題解決の手助けをするときに役立つことがあります。" - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>重要:\u003C/b> 個人情報や機密情報の可能性のある情報は既定で削除されます。情報が削除されたことによって問題解決が困難になることがあります。" - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "ウェブページに“NSFW” (閲覧注意、\u003Ca href=\"https://ja.wikipedia.org/wiki/NSFW\">“Not Safe For Work”\u003C/a>) とラベルをつける" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "フィルターの問題を報告する" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "重複した報告によってボランティアに負担をかけないように、問題がすでに報告されていないか確認してください。" - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "フィルターリストは毎日更新されます。まず最新のフィルターリストで問題が修正されていないか確認してください。" - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "問題のあるページを再読み込みしても問題がまだ残っているか確認してください。" - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "ウェブページは..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- エントリーを選択する --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "広告またはその消し残りを表示します" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "オーバーレイなど邪魔なものがあります" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "uBlock Origin を検出します" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "プライバシーに関連する問題があります" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "uBlock Origin を有効にすると誤動作します" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "勝手にタブやウィンドウを開きます" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "ウェブページのアドレス:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "無編集にする" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "整形フィルタリングの有効/無効を切り替える" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "JavaScript の切り替え" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "ブラウザー起動時に正しくフィルターできませんでした。\nページを再読み込みしてください。" - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "変更を適用" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "エクスポート" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "インポートと追加" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "信頼するサイト" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "[信頼するサイト] では uBlock Origin を無効にするウェブページを指定します。1 行につき 1 つです。" - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ka/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ka/messages.json deleted file mode 100644 index eaa8a65..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ka/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "ცვლილებების ასახვა" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "საკუთარი ფილტრების ამოქმედება" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "შენახვა" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "ჩემი-უცვლელი-ublock-ფილტრები_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "შემოტანა და დამატება" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "ჩემი ფილტრები" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "ნების დართვა მორგებული ფილტრებისთვის, რომლებიც ნდობას ითხოვს" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "ფილტრების არიდება არასანდო წყაროებიდან." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "ცვლილებების ასახვა" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "ფილტრების წესების თვითგანახლება" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "მოძველებული" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "თითოეული URL ცალკეულ ხაზზე. არამართებული URL-ბმულები უგულებელყოფილი იქნება გაუფრთხილებლად." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "რეკლამები" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "შემაწუხებელი შიგთავსი" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "ცნობები ფუნთუშების შესახებ" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "საკუთარი სიები" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "ჩაშენებული" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "მავნე დომენები" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "უნივერსალური" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "პირადულობა" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "რეგიონები, ენები" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "სოცქსელების ნაწილები" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "გარეგნული საერთო ფილტრების უგულებელყოფა" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "გარეგნული საერთო ფილტრებია, რომლებიც ყველა ვებსაიტზე მოქმედებს. ამ პარამეტრის ჩართვით კი თავიდან აიცილებთ გარეგნული საერთო ფილტრებით მეხსიერებისა და პროცესორის ზედმეტ დატვირთვას.\n\nამ პარამეტრის ჩართვა სასურველია სუსტ მოწყობილობებზე." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "შემოტანა..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "ბოლო განახლება: {{ago}}.\nდააწკაპეთ ახლავე გასაახლებლად." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{total}}-იდან გამოიყენება {{used}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} ქსელის ფილტრი + {{cosmeticFilterCount}} გარეგნული ნაწილების ფილტრი:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "ქსელის შეცდომის შედეგად, შიგთავსის განახლება ვერ მოხერხდა." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "სხვა ფილტრები" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "გარეგნული ფილტრები, ჩვეულებრივ, ვებგვერდზე იმ ხილული ნაწილების დასამალად გამოიყენება, რომლებზეც ქსელში მოთხოვნის შემზღუდავი ფილტრები ვერ მოქმედებს." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "გარეგნული ნაწილების ფილტრების დამუშავება და გამოყენება" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "მარაგის გასუფთავება" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "ქსელის მოქმედებების გადავადება ყველა ფილტრის ჩატვირთვამდე" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "ახლავე განახლება" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "ახლდება..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "შიგთავსის ნახვა" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "გბ" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "კბ" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "მბ" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "ფაილში დამარქაფება" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ჩემი-ublock-მარქაფი_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO-ს კუთვნილი ფილტრები ღიადაა განთავსებული შემდეგ \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN-ებზე\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "CDN შეირჩევა შემთხვევითობით ფილტრების განახლების დროს" - }, - "aboutChangelog": { - "description": "", - "message": "ცვლილებათა ჟურნალი" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "წყაროს კოდი (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "მოხალისეები" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "ცალკეული დაქვემდებარებული პროექტები (GPLv3-თან თავსებადი):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "ფილტრების სიები" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "შესახებ" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "პირადულობის დებულება" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "ნაგულისხმევ პარამეტრებზე დაბრუნება..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "თქვენ მიერ მითითებული ყველა პარამეტრი წაიშლება და uBlock₀ გაეშვება ხელახლა.\n\nნამდვილად გსურთ uBlock₀-ის ნაგულისხმევ პარამეტრებზე დაბრუნება?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "აღდგენა ფაილიდან..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "თქვენს ყველა პარამეტრს გადაეწერება {{time}} დროინდელი დამარქაფებული მონაცემები და uBlock₀ გაეშვება ხელახლა.\n\nნამდვილად გსურთ არსებული პარამეტრების დამარქაფებული მონაცემებით ჩანაცვლება?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "მონაცემები ვერ იკითხება, ან დაზიანებულია" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "პირველწყარო კოდი" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "თარგმანები" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "გაფართოებული პარამეტრები" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "გაფრთხილება! გაფართოებული პარამეტრების ჩასწორების შედეგებზე თავად იქნებით პასუხისმგებელი." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — მასალების ნახვა" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "დაწკაპეთ ჩასატვირთად" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "ამ მოწყობილობის დასახელება:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "ღრუბლოვანი საცავიდან გადმოტანა" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "ღრუბლოვანი საცავიდან გადმოტანა და არსებულ პარამეტრებთან მისადაგება" - }, - "cloudPush": { - "description": "tooltip", - "message": "ღრუბლოვან საცავში შენახვა" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "ნაწილების შეზღუდვა ჩარჩოში..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "ფილტრის სიის გამოწერა..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "დიდი მედიაფაილების დროებით დაშვება" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "პირველწყარო კოდის ნახვა…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — სამართავი დაფა" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "გაფრთხილება! ცვლილებები არ შენახულა" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "უგულებელყოფა" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "დარჩენა" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "უკან დაბრუნება" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "ფანჯრის დახურვა" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "მაინც გადასვლა" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "მუდმივად" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "დროებით" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "მომავალში გაფრთხილების გარეშე ამ საიტზე" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "შეიცავს:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "პარამეტრების გარეშე" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "მკაცრი შეზღუდვის მოხსნა საიტისთვის: {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin ზღუდავს მოცემული გვერდის ჩატვირთვას:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "აღნიშნული ფილტრის მიხედვით:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "გვერდი შეიზღუდა" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} დღის წინ" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} საათის წინ" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} წუთის წინ" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "ერთი დღის წინ" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "ერთი საათის წინ" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "ერთი წუთის წინ" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "ქსელის შეცდომა: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "როგორც იქნა, მძლავრი და შედეგიანი რეკლამების შემზღუდავი. ზოგავს CPU-ს და მეხსიერებას." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "გამორთული" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "ცვლილებების ასახვა" - }, - "genericBytes": { - "description": "", - "message": "ბაიტი" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "ასლის აღება" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "ჩაკეტილად გადაადგილების ჩამრთველი" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "დაბრუნება" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "ყველას მონიშვნა" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "მიღება" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "შეცდომა: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "ყველა" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "ფარული მოთხოვნები" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "აღრიცხული ჩანაწერების გამორჩევა" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "დომენი" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "ფილტრი" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "სახეობა" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "აღმრიცხავის გასუფთავება" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "მიმდინარე ჩანართი" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "DOM-დამკვირვებლის ჩამრთველი" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "კონტექსტი" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "ფილტრი" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "ფილტრების სია" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "ვრცლად" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "მხარე" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "ძირეული კონტექსტი" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "წესი" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "სახეობა" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "მისამართი" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "გაფორმებული" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "მარტივი" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "სია" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "ცხრილი" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock-Origin-ცნობარი: აღმრიცხავი" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "აღმრიცხავის შეჩერება (მიღებული მონაცემების მოცილება)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "ამომხტომი არეს ჩამრთველი" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "ჩანართის შიგთავსის ხელახლა ჩატვირთვა" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "მონახულებული" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "გარეშე მხარის" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "დაშვებული" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "შეზღუდული" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "საგულისხმო" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "ჩასწორებული" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "განურჩევლად" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "აღრიცხულის გამორჩევის პარამეტრები" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "აღმრიცხავის გამორჩევის ჩამრთველი" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "აღრიცხული ჩანაწერი, რომელიც არ აკმაყოფილებს ქვემოთ მოცემულ სამივე პირობას, ავტომატურად ამოიშლება:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} კონტექსტი" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} ფილტრი/წესი" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} მხარე" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} დრო" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "სვეტების დამალვა:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "თითოეული ჩანაწერისთვის {{input}} ხაზის გამოყენება, შვეულად ჩამოშლის რეჟიმში" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "ბოლო {{input}} წუთის ჩანაწერების დატოვება" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "არაუმეტეს {{input}} ჩანაწერის დატოვება თითოეულ ჩანართში" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "არაუმეტეს {{input}} გვერდის ჩატვირთვის დატოვება თითოეულ ჩანართზე" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "უცვლელი ფილტრი \u003Ccode>{{filter}}\u003C/code> ნაპოვნია სიაში:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "უცვლელი ფილტრი ვერ მოიძებნა ამჟამად გამოყენებულ ფილტრებში" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "უცვლელი ფილტრები" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{type}} ქსელის მოთხოვნების {{action}} {{br}}რომლის URL მისამართიც შეესაბამება ბმულს {{url}} {{br}}და რომლის წყაროცაა {{origin}},{{br}}{{importance}}, როცა არსებობს შესაბამისი გამონაკლისი." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "დაშვება" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "ნებისმიერი" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "ნებისმიერი სახის" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "შეზღუდვა" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "იმ შემთხვევაშიც კი" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "გარდა იმ შემთხვევისა" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "„{{origin}}“" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "„{{type}}“ სახის" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "კონტექსტი:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "ცვალებადი URL ფილტრები" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "სახეობა:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "აღრიცხვის გაგრძელება" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "ამ ნაწილის შეზღუდვა…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "გარეგნული ფილტრები" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Click, Ctrl + დაწკაპუნება" - }, - "pickerCreate": { - "description": "English: Create", - "message": "შექმნა" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "ქსელის ფილტრები" - }, - "pickerPick": { - "description": "English: Pick", - "message": "გადარჩევა" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "შეთვალიერება" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "გამოსვლა" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1-ლი მხრის სკრიპტები" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "მესამე მხარე" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "ჩარჩო" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "მე-3 მხრის ჩარჩოები" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "მესამე მხრის css/ნახატები" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "სკრიპტი" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "მე-3 მხრის სკრიპტები" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "ყველა" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "ამ გვერდზე" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "შეზღუდული ამ გვერდზე" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "შეზღუდული მოთხოვნები" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "დაყენების შემდგომ" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "შეზღუდული დაყენების შემდგომ" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ანუ {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "დაკავშირებული დომენები" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{total}}-დან {{count}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "დაკავშირებული დომენები" - }, - "popupImageRulePrompt": { - "description": "", - "message": "სურათები" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "ხაზოვანი სკრიპტები" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "მოკლედ" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "ვრცლად" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "გარეგნული გაფილტვრა" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "დიდი მედიაფაილები" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "ამომხტომი ფანჯრები" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "ვებშრიფტები" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "ანუ" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "დაწკაპუნება: ამ საიტისთვის uBlock-ის ჩართვა/გამორთვა.\n\nCtrl+დაწკაპუნება: uBlock-ის მხოლოდ ამ გვერდზე გამორთვა." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "დაწკაპეთ, რომ გაითიშოს uBlock₀ ამ საიტისთვის.\n\nCtrl+დაწკაპებით uBlock₀ მხოლოდ ამ გვერდზე გაითიშება." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "დაწკაპეთ, რომ ჩაირთოს uBlock₀ ამ საიტისთვის." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "სამართავის გახსნა" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "გლობალური წესები: ეს სვეტი არის წესებისთვის, რომლებიც მოქმედებს ყველა საიტზე." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "ლოკალური წესები: ეს სვეტი არის წესებისთვის, რომლებიც მოქმედებს მხოლოდ მიმდინარე საიტზე." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "აღმრიცხავის გახსნა" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "გარეგნული ნაწილების ფილტრის ჩამრთველი" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "დაწკაპეთ გარეგნული ნაწილების ფილტრის გასათიშად ამ საიტზე" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "დაწკაპეთ გარეგნული ნაწილების გასაფილტრად ამ საიტზე" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "ამ საიტზე დიდი მედიაფაილების შეზღუდვის ჩამრთველი" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "დაწკაპეთ, რომ დიდი მედიაფაილები შეიზღუდოს ამ საიტზე" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "დაწკაპეთ, რომ დიდი მედიაფაილები აღარ შეიზღუდოს ამ საიტზე" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "ამ საიტზე ყველა ამომხტომის შეზღუდვის ჩამრთველი" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "დაწკაპეთ, რომ ყველა ამომხტომი ფანჯარა შეიზღუდოს ამ საიტზე" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "დაწკაპეთ, რომ ამომხტომი ფანჯრები აღარ შეიზღუდოს ამ საიტზე" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "ვებშრიფტების შეზღუდვის ჩართვა/გამორთვა ამ საიტზე" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "დაწკაპეთ, რომ ვებშრიფტები შეიზღუდოს ამ საიტზე" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "დაწკაპეთ, რომ ვებშრიფტები აღარ შეიზღუდოს ამ საიტზე" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "დაწკაპეთ, რომ გაითიშოს JavaScript ამ საიტზე" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "დაწკაპეთ, რომ აღარ გაითიშოს JavaScript ამ საიტზე" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "ნაწილების შერჩევა" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "ამ საიტზე ხარვეზის მოხსენება" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "დააწკაპუნეთ შეტანილი ცვლილებების გაუქმებისთვის." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "დაწკაპეთ ცვლილებების მუდმივად შენახვისთვის." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "ნაწილების ამოჭრა" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "ვერსია" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "მსუბუქი შეზღუდვის რეჟიმი" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "მიბარება" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "ჩემი-ublock-ცვალებადი-წესები_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "შეცვლა" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "გაუქმება" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "შენახვა" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "ფაილში შენახვა" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "წესის აგებულება: \u003Ccode>წყარო დანიშნულება მოთხოვნის სახე მოქმედება\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>მასალები სრულად\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "თქვენი ცვალებადი ფილტრების წესები." - }, - "rulesImport": { - "description": "", - "message": "ფაილიდან შემოტანა..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "ჩემი წესები" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "მუდმივი წესები" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "დაბრუნება" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "დალაგება:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "დანიშნულება" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "წყარო" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "წესის სახეობა" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "დროებითი წესები" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "ნაგულისხმევი მითითებები" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "ეს ნაგულისხმევი მითითებები შესაძლებელია შეიცვალოს ცალკეული საიტისთვის" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "გაფართოებული" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "შესაძლებლობები მხოლოდ ტექნიკური მომხმარებლებისთვის" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "მე ვარ გამოცდილი მომხმარებელი (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>აუცილებლად წასაკითხი\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "გაფართოებული პარამეტრები" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "იერსახე" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "ღრუბლოვანი მეხსიერების მხარდაჭერის ჩართვა" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "შეზღუდული ნაწილების ადგილის შემავსებლის დამალვა" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "ფერთა მორგება სუსტად მხედველთათვის" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "კონტექსტური მენიუს გამოყენება, როდესაც ეს ხელსაყრელია" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "ბმულებით სარგებლობისას აღრიცხვის არიდება" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "შეზღუდული მოთხოვნების რაოდენობის ჩვენება ხატულაზე" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "ბოლო მარქაფი:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "ბოლო აღდგენა:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "CSP-მოხსენებების აკრძალვა" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "გარეგნული ნაწილების გაფილტვრის გათიშვა" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "მედიაფაილების შეზღუდვა, რომლებიც აჭარბებს {{input:number}} კბაიტს" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "ვებშრიფტების შეზღუდვა" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "JavaScript-ის გათიშვა" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "პარამეტრები" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "წინასწარი ჩატვირთვის გათიშვა (კავშირის არიდება ქსელის შეზღუდული მოთხოვნებისთვის)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "სასურველი შეფერილობა" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "თემა" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "მინიშნებების გათიშვა" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "დადგენილი სახელების გამოაშკარავება" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "WebRTC-სთვის ხელის შეშლა შიდა IP მისამართის გაჟონვაში" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "მალსახმობის მითითება" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "მალსახმობები" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "ხელსაწყოების გვერდის ჩვენება" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "აღრიცხვის ჩვენება" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — აღმრიცხავი" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "გამოყენებული მოცულობა: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "გამოწერა" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: გსურთ შემდეგი URL ბმულის საკუთარ ფილტრის წესებში ჩამატება?\n\nდასახელება: „{{title}}“\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "იპოვეთ მსგავსი მოხსენებები" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "გახსნა" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "მხარდაჭერა" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "შეკვეცილი" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "შექმენით ახალი მოსხენება" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "მასალები" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "დამატებითი მასალებისთვის იხილეთ \u003Ccode>uBlock/wiki\u003C/code>, რომ უკეთ გაიცნოთ uBlock Origin და მისი შესაძლებლობები." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "შეკითხვები და დახმარება" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "კითხვებზე პასუხისა და სხვა სახის მხარდაჭერის მისაღებად ეწვიეთ Reddit-განყოფილებას \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "ფილტრის ხარვეზი/გაუმართაობა საიტზე" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "ცალკეულ საიტზე ფილტრების ხარვეზების მოსახსენებლად გამოიყენეთ \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> ხარვეზების აღსარიცხავი\u003C/span>. დაგჭირდებათ GitHub-ანგარიში." - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>ყურადღება:\u003C/b> ეცადეთ, არ გამოიყენოთ uBlock Origin და სხვა მსგავსი შემზღუდავები ერთდროულად, ვინაიდან წარმოიქმნება ფილტრების ხარვეზები ცალკეულ საიტებზე." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>რჩევა:\u003C/b> გადაამოწმეთ, რომ ფილტრები განახლებულია. \u003Cspan data-url=\"logger-ui.html#_\">აღმრიცხავი\u003C/span> ხელსაწყო მთავარი საშუალებაა ფილტრების ხარვეზების გამოსავლენად." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "ხარვეზის მოხსენება" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "თავად uBlock Origin-ის ხარვეზების მოსახსენებლად, გამოიყენეთ \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> ხარვეზების აღსარიცხავი\u003C/span>. დაგჭირდებათ GitHub-ანგარიში." - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "მონაცემები ხარვეზის მოსაგვარებლად" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "ქვემოთ მოცემულია ტექნიკური ინფორმაცია, რომელიც გამოადგებათ მოხალისეებს, უკეთ დაგეხმარონ ხარვეზის აღმოფხვრაში." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>გაითვალისწინეთ:\u003C/b> მონაცემები, რომლებიც შესაძლოა პირადი და მნიშვნელოვანი იყოს, ნაგულისხმევად იკვეცება. ამასთანავე, შეკვეცილი ინფორმაციით სავარაუდოდ გართულდება ხარვეზის გამოსწორება." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "გვერდი მოინიშნოს, როგორც „NSFW“ (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">„შეუსაბამო“\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "ფილტრის ხარვეზის მოხსენება" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "მოხალისეები რომ არ მოცდნენ ერთნაირი მოსხენებების ნახვით, გთოხვთ გადაამოწმოთ, უკვე ხომ არაა გაგზავნილი საჩივარი ამ ხარვეზზე." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "ფილტრთა სიები ახლდება ყოველდღე. გადაამოწმეთ, ხარვეზი ხომ არ გამოსწორებულა უახლეს სიებში." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "შეამოწმეთ, გაახლებით ხომ არ გამოსწორდა ხარვეზიანი ვებგვერდი. " - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "ვებგვერდი..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- შეარჩიეთ --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "აჩვენებს რეკლამებს ან მის ნარჩენებს" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "ადებს შემაწუხებელ შრეებსა და მისთანებს" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "ამჩნევს, რომ uBlock Origin ჩართულია" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": " პირადულობის დაცვის ხარვეზებითაა" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "ფუჭდება, როცა uBlock Origin ჩართულია" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "ხსნის არასასურველ ჩანართებს ან ფანჯრებს" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "ვებგვერდის მისამართი" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "შეუკვეცელი" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "გარეგნული ფილტრის ჩამრთველი" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "JavaScript-ის ჩამრთველი" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "სათანადოდ ვერ გაიფილტრა ბრაუზერის ჩართვისას.\nახლიდან გახსენით გვერდი უკეთ გასაფილტრად." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "ცვლილებების ასახვა" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "შენახვა" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "ჩემი-ublock-გამონაკლისები_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "შემოტანა და დამატება" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "გამონაკლისები" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "გამონაკლისებში მითითებულ ვებგვერდებზე uBlock Origin გამოირთვება. თითო ჩანაწერი ცალკეულ ხაზზე." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/kk/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/kk/messages.json deleted file mode 100644 index 259af25..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/kk/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Apply changes" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Export…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Import and append…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Менің сүзгілерім" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Өзерістерді іске асыру" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Auto-update filter lists" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Out of date." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "One URL per line. Invalid URLs will be silently ignored." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Жарнамалар" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Annoyances" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Custom" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Built-in" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Malware protection, security" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multipurpose" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Жекелік" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regions, languages" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignore generic cosmetic filters" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Import…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Last update: {{ago}}.\nClick to force an update." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} used out of {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "A network error prevented the resource from being updated." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "3-ші жақты сүзгілер" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the network request-based filtering engines." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Parse and enforce cosmetic filters" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Purge all caches" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspend network activity until all filter lists are loaded" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Update now" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Updating…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "view content" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "ГБ" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "КБ" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "МБ" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Файлға сақтық көшірме жасау" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO's own filter lists are freely hosted on the following \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "A randomly picked CDN is used when a filter list needs to be updated." - }, - "aboutChangelog": { - "description": "", - "message": "Changelog" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Бастапқы код (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Салымшылар" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Сыртқы тәуелділіктер (GPLv3 үйлесімді):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Тізімдерді сүзу" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Осы туралы" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Privacy policy" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Әдепкі параметрлерге қайтару..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Барлық параметрлер жойылып, uBlock₀ қайта қосылады.\n\nUBlock₀ зауыттық параметрлерге қайтарылсын ба?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Файлдан қалпына келтіру..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Барлық параметрлер {{time}} күні сақтық көшірмесі жасалған деректерді пайдаланып жазылады және uBlock₀ қайта іске қосылады.\n\nСақтық көшірме жасалған деректерді пайдаланып, барлық қолданыстағы параметрлерді қайта жазу керек пе?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Дата оқуға сай емес (жарамсыз)" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Бастапқы код" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Аудармашылар" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Кеңейтілген баптаулар" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Ескерту! Өзіңіздің тәуекеліңізбен осы кеңейтілген параметрлерді өзгертіңіз." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Активтерді қарау" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Click to load" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Девайстың аты:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Бұлт қоймасынан импорттау" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Бұлтты сақтау қоймасынан импорттаңыз және ағымдағы параметрлермен біріктіру" - }, - "cloudPush": { - "description": "tooltip", - "message": "Бұлтты жадқа экспорттау" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Block element in frame…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subscribe to filter list…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Үлкен медиа элементтеріне уақытша рұқсат беру" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "View source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Орнату" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Сізде сақталмаған параметрлер бар!" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Өшіру" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Қалу" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Артқа" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Терезені жабу" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Proceed" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Тұрақты" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Уақытша" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Мында табылды:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "параметрсіз" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "{{Hostname}} үшін қатаң блоктауды өшіру" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin келесі парақтың жүктелуіне жол бермеді:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Келесі сүзгіге байланысты:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Page blocked" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} күн бұрын" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} сағат бұрын" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} минут бұрын" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "бір күн бұрын" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "бір сағат бұрын" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "бір минут бұрын" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Желілік қате: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Жарнамаларды жақсы өшіретін Addon'дардың бірі. Компьютердің қуатың аз алады." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "сөнд." - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Өзгерістерді қолдану" - }, - "genericBytes": { - "description": "", - "message": "байт" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Аралық сақтағышқа көшіру" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Құлыпталған айналдыруды қосу" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Қайтару" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Select all" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Жіберу" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Барлығы" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Tabless" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "сүзгі журналының мазмұны" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Домен" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Сүзгі" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Түрі" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Clear logger" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Current tab" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Toggle the DOM inspector" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Контекст" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Сүзгі" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Сүзгілер тізімі" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Егжей" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Көңілділік" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Түбірлік контекст" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Ереже" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Түрі" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Plain" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "List" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Table" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: The logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Журналды кідірту (барлық кіріс деректерін алып тастау)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Toggle the popup panel" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Reload the tab content" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1-ші тарап" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3-і тарап" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "рұқсаты" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "бұғату" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modified" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Жоқ:" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Журнал тіркесімін сүзу параметрлері" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Журнал тіркеушісі сүзгісін қосу" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Context" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/rule" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partyness" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Time" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Hide columns:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Use {{input}} lines per entry in vertically expanded mode" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Preserve entries from the last {{input}} minutes" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Preserve at most {{input}} entries per tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preserve at most {{input}} page loads per tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Static filter \u003Ccode>{{filter}}\u003C/code> found in:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Static filter could not be found in any of the currently enabled filter lists" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Статикалық сүзгі" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} қай URL мекен-жайы {{url}} {{br}} сәйкес келетін және {{Origin}}, {{br}} {{маңыздылығы) қай URL мекен-жайы сәйкес келетін {{type}} {{br}} желілік сұраулары сәйкес ерекше жағдай сүзгісі." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Рұқсат ету" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "from anywhere" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "any type" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Бұғату" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "even if" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "except when" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "from “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "type “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Контекст:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL ережесі" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Түрі:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Журналды тоқтата тұру" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Элементті блоктау" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Cosmetic filters" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Шерту, Ctrl-шерту" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Жасау" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Network filters" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Таңдау" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Алдын-ала қарау" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Шығу" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1st-party scripts" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "3-ші жақты" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "3rd-party frames" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "3-ші жақты css/суреттер" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "3rd-party scripts" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "барлығы" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "бұл парақта" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Жарнамалар жойылды" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "сұраным блокталды" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "орнатылғаннан бастап" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Орнатудан бастап құлыптаулы" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} немесе {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Домендар қосылды" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} out of {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domains connected" - }, - "popupImageRulePrompt": { - "description": "", - "message": "суреттер" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "inline scripts" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Less" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "More" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Cosmetic filtering" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Large media elements" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Қалқымалы терезелер" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Remote fonts" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "немесе" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Жай басу: осы сайт үшін uBlock₀ өшіріңіз / қосыңыз.\n\nCtrl+басу: тек осы бетте uBlock₀ өшіріңіз." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Осы сайт үшін uBlock₀ өшіру үшін басыңыз\n\nТек осы бетте uBlock₀ өшіру үшін Ctrl+Басу." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Осы сайт үшін uBlock₀ қосу үшін басыңыз." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "uBlock₀-ты орнату" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Global rules: this column is for rules which apply to all sites." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Журналды ашу" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Осы сайт үшін косметикалық сүзуді қосу/өшіру" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Мына сайт үшін косметикалық сүзуді өшіру үшін басыңыз" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Мына сайт үшін косметикалық сүзуді қосу үшін басыңыз" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Мына сайттағы үлкен медиа элементтерді бұғаттауын қосу/сөндіру" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Мына сайттағы үлкен медиа элементтерді бұғаттауын қосу үшін басыңыз" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Мына сайттағы үлкен медиа элементтерді бұғаттауын өшіру үшін басыңыз" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Осы сайт үшін барлық попаптарды бұғаттау" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Мына сайттағы барлық қалқымалы терезелерді бұғаттау үшін басыңыз" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Мына сайттағы барлық қалқымалы терезелерді бұғаттамау үшін басыңыз" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Осы сайт үшін қашықтан қосылған қаріптерді қосу/өшіру" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Мына сайттағы қашықтан қосылған қаріптерді бұғаттау үшін басыңыз" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Мына сайттағы қашықтан қосылған қаріптерді бұғаттамау үшін басыңыз" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Осы сайт үшін JavaScript-ты өшіру үшін басыңыз" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Осы сайт үшін JavaScript-ты өшірмеу үшін басыңыз" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Элемент таңдау режиміне өту" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Осы вебсайттағы мәселе жайлы хабарлау" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Click to revert your changes." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Click to make your changes permanent." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Элементтің режимін енгізу" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Version" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Бөгеу режимі" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Commit" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Түзету" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Елемеу" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Сақтау" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Файлға экспорттау" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Rule syntax: \u003Ccode>source destination type action\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>full documentation\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "List of your dynamic filtering rules." - }, - "rulesImport": { - "description": "", - "message": "Файлдан импорттау..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Менің ережелерім" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Permanent rules" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Қайтару" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sort:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destination" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Source" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Rule type" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Temporary rules" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Default behavior" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "These default behaviors can be overridden on a per-site basis" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Advanced" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Features suitable only for technical users" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "I am an advanced user" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "advanced settings" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Appearance" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Enable cloud storage support" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Hide placeholders of blocked elements" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Color-blind friendly" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Make use of context menu where appropriate" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Disable hyperlink auditing" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Show the number of blocked requests on the icon" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Last backup:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Last restore:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Block CSP reports" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Disable cosmetic filtering" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Block media elements larger than {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Block remote fonts" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Disable JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Баптаулар" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Disable pre-fetching (to prevent any connection for blocked network requests)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Custom accent color" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Theme" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Disable tooltips" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Uncloak canonical names" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Prevent WebRTC from leaking local IP addresses" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Жарлық теріңіз" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Жапсырм-р" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Орнату-ды көрсету" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Logger-ді көрсету" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Журналшы" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "{{value}} {{unit}} қолданылды." - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Жазылу" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Келесі URL-ді өзіңіздің теңшелетін сүзгілер тізіміне қосыңыз?\n\nТақырып: «{{title}}»\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Find similar reports" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Open" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Қолдау" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Create new report" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentation" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Read the documentation at \u003Ccode>uBlock/wiki\u003C/code> to learn about all of uBlock Origin's features." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Questions and support" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter issues/website is broken" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Bug report" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Troubleshooting Information" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Report a filter issue" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "The web page…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pick an entry --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shows ads or ad leftovers" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has privacy-related issues" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfunctions when uBlock Origin is enabled" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Opens unwanted tabs or windows" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Address of the web page:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Өзерістерді іске асыру" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Экспорт" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-whitelist_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Import and append…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Рұқсат тізімі" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/kn/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/kn/messages.json deleted file mode 100644 index af7a043..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/kn/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "ಬದಲಾವಣೆಗಳನ್ನು ಅನ್ವಯಿಸಿ" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "ರಫ್ತು..." - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "ನನ್ನ-ublock-ಸ್ಥಿರ-ಶೋಧಕಗಳು_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "ಆಮದಿಸಿ ಸೇರ್ಪಡಿಸು..." - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "ನನ್ನ ಶೋಧಕಗಳು" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "ಬದಲಾವಣೆಗಳನ್ನು ಅನ್ವಯಿಸಿ" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "ಶೋಧಕ ಪಟ್ಟಿಗಳನ್ನು ಸ್ವಯಂ ನವೀಕರಿಸಿ." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "ಹಳೆಯದಾಗಿದೆ" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "One URL per line. Invalid URLs will be silently ignored." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "ಜಾಹಿರಾತು" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Annoyances" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "ಇಚ್ಛೆಯ" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Built-in" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "ಮಾಲ್ವೇರ್ ರಕ್ಷಣೆ, ಭದ್ರತೆ" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "ಬಹುಪಯೋಗಿ" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "ಗೌಪ್ಯತೆ" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "ಪ್ರದೇಶಗಳು, ಭಾಷೆಗಳು" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignore generic cosmetic filters" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "ಆಮದು..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Last update: {{ago}}.\nClick to force an update." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{total}} ರಿಂದ {{used}} ಬಳಸಲುಗುವುತಿದೆ " - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "ಕೆಳಗಿನ ಫೈಲಟ್ರ್ಪಟ್ಟಿಗೆಯಿಂದ {{netFilterCount}} ನೆಟ್ವರ್ಕ್ ಫಿಲ್ಟರ್ಗಳು + {{cosmeticfiltercount}} ಕಾಸ್ಮೆಟಿಕ್ ಶೋಧಕಗಳು ಕ್ರಿಯಾಶೀಲವಾಗಿದೆ:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "A network error prevented the resource from being updated." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "೩ನೇ ವ್ಯಕ್ತಿ ಶೋಧಕಗಳು" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the network request-based filtering engines." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Parse and enforce cosmetic filters" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Purge all caches" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspend network activity until all filter lists are loaded" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "ಈಗ ನವೀಕರಿಸಿ" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "ಸೇರಿಸಲಾಗುತ್ತಿದೆ..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "ವಿಷಯವನ್ನು ವೀಕ್ಷಿಸಿ" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Back up to file…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO's own filter lists are freely hosted on the following \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "A randomly picked CDN is used when a filter list needs to be updated." - }, - "aboutChangelog": { - "description": "", - "message": "ಬದಲಾವಣೆಗಳು" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Source code (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "ನೀಡುಗರು" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "External dependencies (GPLv3-compatible):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "ಫಿಲ್ಟರ್ ಪಟ್ಟಿಗಳು" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "ಕುರಿತು" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "ಗೌಪ್ಯತಾ ನೀತಿ\n" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Reset to default settings…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Restore from file…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "The data could not be read or is invalid" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "ಮೂಲ ಕೊಡ್" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "ಅನುವಾದ" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "ಸುಧಾರಿತ ಆಯ್ಕೆಗಳು" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Warning! Change these advanced settings at your own risk." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — ಆಸ್ತಿ ವೀಕ್ಷಕ" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Click to load" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "ಈ ಸಾಧನದ ಹೆಸರು:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Import from cloud storage" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Import from cloud storage and merge with current settings" - }, - "cloudPush": { - "description": "tooltip", - "message": "Export to cloud storage" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Block element in frame…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subscribe to filter list…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Temporarily allow large media elements" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "View source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ - ಡ್ಯಾಶ್ಬೋರ್ಡ" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "ಎಚ್ಚರಿಕೆ! ನೀವು ಉಳಿಸದ ಬದಲಾವಣೆಗಳನ್ನು ಹೊಂದಿದ್ದೀರಿ" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "ನಿರ್ಲಕ್ಷಿಸು" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "ಇಲ್ಲೇ ಇರು" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "ಹಿಂದೆ ಹೋಗಿ" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "ಈ ವಿಂಡೋವನ್ನು ಮುಚ್ಚಿ" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Proceed" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "ಶಾಶ್ವತವಾಗಿ" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "ತಾತ್ಕಾಲಿಕವಾಗಿ" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Found in:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "without parameters" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Disable strict blocking for {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin ಈ ಕೆಳಗಿನ ಪುಟವನ್ನು ಲೋಡ್ ಮಾಡುವುದನ್ನು ತಡೆಯುತ್ತದೆ:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Because of the following filter:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Page blocked" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} ದಿನದ ಹಿಂದೆ" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} ತಾಸಿನ ಹಿಂದೆ" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} ನಿಮಿಷದ ಹಿಂದೆ" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "ಒಂದು ದಿನದ ಹಿಂದೆ" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "ಒಂದು ತಾಸಿನ ಹಿಂದೆ" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "ಒಂದು ನಿಮಿಷದ ಹಿಂದೆ" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Network error: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "ಯುಬ್ಲಾಕ್" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "ಕೊನೆಗೆ, ಒಂದು ದಕ್ಷ ನಿರ್ಬಂಧಕ. ಮಿತವಾದ ಸಿಪಿಯೂ ಹಾಗು ಮೆಮೊರಿ ಬಳಿಕೇಒಂದಿಗೆ ." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "ಆಫ್" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "ಬದಲಾವಣೆಗಳನ್ನು ಅನ್ವಯಿಸಿ" - }, - "genericBytes": { - "description": "", - "message": "ಬೈಟ್ಗಳು" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Copy to clipboard" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Toggle locked scrolling" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "ಹಿಂತಿರುಗಿಸಿ" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Select all" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "ಸಲ್ಲಿಸಿ" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "ಎಲ್ಲಾ" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Tabless" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filter logger content" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "ಡೊಮೇನ್" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "ಫಿಲ್ಟರ್" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "ವಿಧ" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Clear logger" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "ಪ್ರಸ್ತುತ ಟ್ಯಾಬ್" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Toggle the DOM inspector" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Context" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "ಫಿಲ್ಟರ್ ಪಟ್ಟಿ" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "ವಿವರಗಳು" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partyness" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Root context" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "ನಿಯಮ" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "ವಿಧ" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "ಸಾದಾ" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "List" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Table" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: The logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pause logger (discard all incoming data)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Toggle the popup panel" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Reload the tab content" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1st-party" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3rd-party" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "ಅನುಮತಿಸಲಾಗಿದೆ" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blocked" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modified" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "ಅಲ್ಲದ " - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Logger filtering options" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Toggle logger filtering" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Context" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/rule" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partyness" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} ಗಂಟೆ" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Hide columns:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Use {{input}} lines per entry in vertically expanded mode" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Preserve entries from the last {{input}} minutes" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Preserve at most {{input}} entries per tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preserve at most {{input}} page loads per tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Static filter \u003Ccode>{{filter}}\u003C/code> found in:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Static filter could not be found in any of the currently enabled filter lists" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Static filter" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "ಅನುಮತಿಸು" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "from anywhere" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "any type" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "ನಿರ್ಬಂಧಿಸು" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "even if" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "except when" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "\"{{origin}} \"ಇಂದಾ" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "type “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Context:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL ನಿಯಮ " - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "ವಿಧ:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Unpause logger" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "ಭಾಗ ತಡೆಹಿಡಿಯಿರಿ" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "ಕಾಸ್ಮೆಟಿಕ್ ಫಿಲ್ಟರುಗಳು" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "ಕ್ಲಿಕ್, ಕಂಟ್ರೋಲ್-ಕ್ಲಿಕ್" - }, - "pickerCreate": { - "description": "English: Create", - "message": "ರಚಿಸಿ" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "ನಿವ್ವಳ ಫಿಲ್ಟರುಗಳು" - }, - "pickerPick": { - "description": "English: Pick", - "message": "ಆಯ್ಕೆ" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "ಮುನ್ನೋಟ" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "ತ್ಯಜಿಸಿ" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "೧ನೇ ವ್ಯಕ್ತಿ ಸ್ಕ್ರಿಪ್ಟುಗಳು" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "೩ನೇ ವ್ಯಕ್ತಿ" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "ಫ್ರೇಮ್" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "೩ನೇ ವ್ಯಕ್ತಿ ಫ್ರೇಮುಗಳು" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "೩ನೇ ವ್ಯಕ್ತಿ ಸಿಎಸ್ಸೇಸು/ಚಿತ್ರಗಳು" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "ಸ್ಕ್ರಿಪ್ಟ್" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "೩ನೇ ವ್ಯಕ್ತಿ ಸ್ಕ್ರಿಪ್ಟುಗಳು" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "ಎಲ್ಲಾ" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "ಈ ಪುಟದಲ್ಲಿ" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "ಈ ಪುಟದಲ್ಲಿ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "ಬೇಡಿಕೆಗಳನ್ನು ತಡೆಹಿಡಿಯಲಾಗಿದೆ" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "ಅನುಸ್ಥಾಪಿಸಿದ ಈಚೆಗೆ" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "ಸ್ಥಾಪಿಸಿದಾಗಿನಿಂದ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ಅಥವಾ {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "ಸಂಪರ್ಕಳಗಿಸಿದ ಡೊಮೈನುಗಳು " - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{total}} ರಲ್ಲಿ {{count}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "ಸಂಪರ್ಕ ಹೊಂದಿರುವ ಡೊಮೈನ್ಗಳು" - }, - "popupImageRulePrompt": { - "description": "", - "message": "ಚಿತ್ರಗಳು" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "ಒಳಸಾಲಿನ ಸ್ಕ್ರಿಪ್ಟುಗಳು" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "ಕಡಿಮೆ" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "ಅಧಿಕ" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "ಕಾಸ್ಮೆಟಿಕ್ ಫಿಲ್ಟರಿಂಗ್" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "ದೊಡ್ಡ ಮಾಧ್ಯಮ ಅಂಶಗಳು" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "ಪಾಪ್-ಅಪ್ ವಿಂಡೋ" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Remote fonts" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್" - }, - "popupOr": { - "description": "English: or", - "message": "ಅಥವಾ" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "ಕ್ಲಿಕ್: ಈ ಜಾಲತಾಣಕ್ಕೆ ನಿಷ್ಕ್ರಿಯ/ಸಕ್ರಿಯಗೊಳಿಸಲು.\nಕಂಟ್ರೋಲ್ + ಕ್ಲಿಕ್: ಈ ಜಾಲತಾಣಕ್ಕೆ ಮಾತ್ರ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "ಈ ಸೈಟ್‌ಗಾಗಿ uBlock₀ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ.\n\nಈ ಪುಟದಲ್ಲಿ ಮಾತ್ರ uBlock₀ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು Ctrl+ಕ್ಲಿಕ್ ಮಾಡಿ." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "ಈ ಸೈಟ್‌ಗಾಗಿ uBlock₀ ಸಕ್ರಿಯಗೊಳಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "ಡ್ಯಾಶ್ಬೋರ್ಡ ತೆರೆಯಲು ಕ್ಲಿಕಿಸಿ" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Global rules: this column is for rules which apply to all sites." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "ಲಾಗರ್ ತೆರೆಯಿರಿ" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "ಈ ಜಾಲತಾಣಕ್ಕೆ ಕಾಸ್ಮೆಟಿಕ್ ಫಿಲ್ಟರಿಂಗನ್ನು ಟಾಗಲ್ ಮಾಡಿ" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click to disable cosmetic filtering on this site" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click to enable cosmetic filtering on this site" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "ಈ ಸೈಟ್‌ಗಾಗಿ ದೊಡ್ಡ ಮಾಧ್ಯಮ ಅಂಶಗಳ ನಿರ್ಬಂಧಿಸುವಿಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click to block large media elements on this site" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click to no longer block large media elements on this site" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "ಈ ಜಾಲತಾಣದ ಎಲ್ಲಾ ಪಾಪ್ಅಪ್ ಗಳ ನಿರ್ಬಂಧವನ್ನು ಟಾಗಲ್ ಮಾಡಿ" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "ಈ ಸೈಟ್‌ನಲ್ಲಿ ಎಲ್ಲಾ ಪಾಪ್‌ಅಪ್‌ಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "ಈ ಸೈಟ್‌ನಲ್ಲಿ ಇನ್ನು ಮುಂದೆ ಎಲ್ಲಾ ಪಾಪ್‌ಅಪ್‌ಗಳನ್ನು ನಿರ್ಬಂಧಿಸದಿರಲು ಕ್ಲಿಕ್ ಮಾಡಿ" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "ಈ ಜಾಲತಾಣಕ್ಕೆ ದೂರಸ್ಥ ಅಕ್ಷರಶೈಲಿಯ ನಿರ್ಬಂಧವನ್ನು ಟಾಗಲ್ ಮಾಡಿ" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Click to block remote fonts on this site" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Click to no longer block remote fonts on this site" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "ಈ ಸೈಟ್‌ನಲ್ಲಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Click to no longer disable JavaScript on this site" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "ಅಂಶ ಆಯ್ವಿಕೆ ಕ್ರಮಕ್ಕೆ ದಾಖಲಾಗಿ" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "ublock origin ಗೆ ಸಂಬಂಧಿಸಿದ ಈ ವೆಬ್‌ಸೈಟ್‌ನಲ್ಲಿ ಸಮಸ್ಯೆಯನ್ನು ವರದಿ ಮಾಡಿ" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "ನಿಮ್ಮ ಬದಲಾವಣೆಗಳನ್ನು ಹಿಂತಿರುಗಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ" - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "ಶಾಶ್ವತ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲು ಕ್ಲಿಕ್ ಮಾಡಿ" - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Element zapper ಮೋಡ್ ಅನ್ನು ಬಳಸಿ" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "ಆವೃತ್ತಿ" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relax blocking mode" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "ಕಮಿಟ್" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "ನನ್ನ-ublock-ಡೈನಾಮಿಕ್-ಫಿಲ್ಟರ್-ನಿಯಮಗಳು_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "ತಿದ್ದಿ " - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "ತ್ಯಜಿಸಿ" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "ಉಳಿಸು" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Export to file…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Rule syntax: \u003Ccode>source destination type action\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>full documentation\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "List of your dynamic filtering rules." - }, - "rulesImport": { - "description": "", - "message": "ಫೈಲಿಂದ ಆಮದಿಸು...\n" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "ನನ್ನ ನಿಯಮಗಳು" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "ಶಾಶ್ವತ ನಿಯಮಗಳು" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "ಹಿಂತಿರುಗಿಸಿ" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sort:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "ಗಮ್ಯಸ್ಥಾನ" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "ಮೂಲ" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Rule type" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "ತಾತ್ಕಾಲಿಕ ನಿಯಮಗಳು" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Default behavior" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "These default behaviors can be overridden on a per-site basis" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "ಉನ್ನತ ಸಂಯೋಜನೆಗಳು" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Features suitable only for technical users" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "ನಾನು ಮುಂದುವರಿದ ಬಳಕೆದಾರ" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "ಮು೦ದುವರಿದ ಸೆಟ್ಟಿಂಗ್ಸ್" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "ನೋಟ" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Enable cloud storage support" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "ನಿರ್ಬಂಧಿಸಿದ ಭಾಗಗಳಿರುವ ಪ್ಲೇಸ್ಹೋಲ್ಡರ್ಸ್ ಮರೆಮಾಡಿ" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "ಬಣ್ಣ ಅಂಧತೆ ಉಪಯುಕ್ತ" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Make use of context menu where appropriate" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Disable hyperlink auditing" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Show the number of blocked requests on the icon" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "ಕೊನೆಯ ಬ್ಯಾಕಪ್:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Last restore:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Block CSP reports" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Disable cosmetic filtering" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Block media elements larger than {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Block remote fonts" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "ಸೆಟ್ಟಿಂಗ್ಸ್" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Disable pre-fetching (to prevent any connection for blocked network requests)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Custom accent color" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "ಥೀಮ್" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Disable tooltips" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Uncloak canonical names" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Prevent WebRTC from leaking local IP addresses" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Type a shortcut" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Show Dashboard" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Show Logger" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — ಲಾಗರ್" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "ಉಪಯೊಗಿಸುತಿರುವ ಸಂಗ್ರಹಣೆ: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "ಫಿಲ್ಟರ್ ಪಟ್ಟಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Add the following URL to your custom filter lists?\n\nTitle: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Find similar reports" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "ತೆರೆ" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "ಬೆಂಬಲ" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Create new report" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentation" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Read the documentation at \u003Ccode>uBlock/wiki\u003C/code> to learn about all of uBlock Origin's features." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Questions and support" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter issues/website is broken" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Bug report" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Troubleshooting Information" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Report a filter issue" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "The web page…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pick an entry --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shows ads or ad leftovers" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has privacy-related issues" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfunctions when uBlock Origin is enabled" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Opens unwanted tabs or windows" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Address of the web page:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "ಬದಲಾವಣೆಗಳನ್ನು ಅನ್ವಯಿಸಿ" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "ರಫ್ತು...\n" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "ನನ್ನ-ublock-ವಿಶ್ವಾಸಾರ್ಹ-ಸೈಟ್ಗಳು_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "ಆಮದಿಸಿ ಸೇರ್ಪಡಿಸು" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "ವೈಟ್ ಲಿಸ್ಟ್" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ko/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ko/messages.json deleted file mode 100644 index c21a847..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ko/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "변경사항 적용" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "내 사용자 정의 필터 활성화" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "내보내기" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "ublock-고정필터_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "가져오기 및 추가하기" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "내 필터" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "신뢰가 필요한 사용자 정의 필터 허용" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "신뢰할 수 없는 출처의 필터를 추가하지 마십시오." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "변경사항 적용" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "필터 목록 자동 업데이트" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "구버전" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "한 줄에 한 개의 URL을 입력하세요. 시작 부분이 ‘!’ 로 시작되면 무시됩니다. 존재하지 않는 URL은 자동으로 무시됩니다." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "광고" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "골칫거리" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "쿠키 알림" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "사용자 지정" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Ublock₀ 제공" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "멀웨어 도메인" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "다목적" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "개인정보" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "지역, 언어" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "소셜 위젯" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "전체적 표면 필터 무시" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "\u003Cp>전체적 표면 필터들은 방문하는 모든 사이트에 적용하는 표면 필터입니다. \u003Cp>uBlock₀는 이를 효율적으로 적용하지만, 전체적 표면 필터들은 사이트의 크기와 유지시간에 따라 확연할 정도의 메모리 및 CPU 오버헤드를 줄 수 있습니다. \u003Cp>이 옵션을 활성화하면 전체적 표면 필터 적용으로 메모리 및 CPU 오버헤드를 제거하고, uBlock₀ 자체의 메모리 사용량도 줄입니다. \u003Cp>저전력 기기에 사용하는 것을 권장합니다." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "불러오기.." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "마지막 업데이트: {{ago}}\n업데이트하려면 여기를 클릭하세요." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "차단된 호스트 목록" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{total}}개 중 {{used}}개 사용 중" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} 네트워크 필터 + {{cosmeticFilterCount}} 표면 필터:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "네트워크 오류로 인해 리소스가 업데이트되지 못했습니다." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "필터 목록" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "\u003Cp>이 옵션은 \u003Ca href=\"https://adblockplus.org/en/faq_internal#elemhide\">애드블록 플러스-호환 “구성 요소 감추기” 필터\u003C/a>를 분석하고 적용하는 것을 활성화합니다. 이 필터는 기본적으로 웹 페이지에서 시각적 방해 요소들을 숨기는 역할을 하며, 네트워크 요청에 기반한 필터링 엔진에서 차단될 수 없습니다.\u003C/p>\u003Cp>이 기능을 활성화하면 \u003Ci>uBlock₀\u003C/i>의 메모리 사용량이 증가합니다.\u003C/p>" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "표면 필터 분석 및 적용" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "모든 캐시 제거" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "모든 필터 목록을 불러올 때까지 네트워크 일시 중단" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "지금 업데이트" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "업데이트 중..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "내용 보기" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "파일로 백업하기" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ublock-백업_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "아래 \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN\u003C/a>에서 uBO의 필터 목록을 무료로 호스팅해 줍니다:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "필터 목록을 업데이트할 때 무작위로 선택된 CDN이 쓰입니다." - }, - "aboutChangelog": { - "description": "", - "message": "변경사항" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "소스 코드 (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "기여자" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "외부 종속성 (GPLv3 호환):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "필터 목록" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "정보" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "개인정보취급방침" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "기본 설정으로 초기화..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "모든 설정이 제거되며, uBlock₀이 재시작됩니다.\n\nuBlock₀의 설정을 처음 설정으로 초기화하시겠습니까?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "파일로부터 복원하기..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "모든 설정은 {{time}}에 백업된 데이터에 덮어씌워지며, uBlock₀이 재시작됩니다.\n\n모든 존재하는 설정을 백업 데이터로 덮어씌우시겠습니까?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "데이터를 읽을 수 없거나 잘못되었습니다." - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "소스 코드" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "번역" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "고급 설정" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "경고! 고급 옵션을 변경하여 발생하는 문제는 사용자에게 있습니다." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Asset 뷰어" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "불러오려면 클릭하기" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "현재 기기의 이름:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "클라우드 저장소로부터 가져오기" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "클라우드 저장소의 설정 불러오기 및 현재 설정과 통합" - }, - "cloudPush": { - "description": "tooltip", - "message": "클라우드 저장소로 내보내기" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "프레임 내 구성 요소 차단" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "필터 목록 구독..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "이번만 대형 미디어 구성요소 허용" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "소스 코드 보기…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — 대시보드" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "경고! 저장되지 않은 변경 사항이 있습니다" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "무시" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "취소" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "돌아가기" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "이 창을 닫기" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "계속" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "항상" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "이번만" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "더 이상 이 사이트에 대해 경고 하지 않기" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "다음 필터에서 찾음:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "제외 매개 변수" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "{{hostname}}에서 엄격 차단기능 끄기" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin이 다음 페이지를 로드하는것을 방지했습니다:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "다음 필터로 인해 방지됨" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "페이지 차단됨" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} 일 전" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} 시간 전" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} 분 전" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "1 일 전" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "1 시간 전" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "1 분 전" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "네트워크 오류: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock₀" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "이 부가 기능은 효율적인 차단기입니다. CPU와 메모리에 주는 부담이 적습니다." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "끄기" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "변경사항 적용" - }, - "genericBytes": { - "description": "", - "message": "바이트" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "클립보드에 복사" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "스크롤 잠금 토글" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "되돌리기" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "모두 선택" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "제출" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "오류: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "전체" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "숨겨진 구성 요소" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "필터 로그 항목" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "도메인" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "필터" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "유형" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "로거 초기화" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "현재 탭" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "DOM 속성 검사기 토글" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "컨텍스트" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "필터" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "필터 목록" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "상세정보" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "파티" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "최상위 컨텍스트" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "규칙" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "유형" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "마크다운" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "일반" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "목록" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "테이블" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin 위키: 로거" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "로거 일시중지 (들어오는 모든 데이터 무시)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "팝업 패널 토글" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "탭 내용 새로고침" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "퍼스트 파티" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "보조" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "허용됨" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "차단됨" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "수정됨" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "제외" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "로거 필터링 옵션" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "로거 필터링 토글" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "아래의 세 가지 조건을 모두 충족하지 않는 항목은 자동으로 삭제됩니다." - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} 컨텍스트" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} 필터/규칙" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} 파티" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} 시간" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "숨긴 열:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "수직 확장 모드에서 항목 당 {{input}} 줄 사용" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "최근 {{input}} 분의 항목 유지" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "탭 당 최대 {{input}} 항목 유지" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "탭 당 최대 {{input}} 페이지로드 유지" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "\u003Ccode>{{filter}}\u003C/code> 에서 찾은 고정 필터:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "활성화된 정적 필터 목록에서 \u003Ccode>{{filter}}\u003C/code>를 찾지 못했습니다" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "고정 필터링" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "네트워크 요청이 {{type}} 일 경우,{{br}}URL 주소가 {{url}} 와 일치하고{{br}}{{origin}} 에서 비롯 되었을 경우 {{action}} 한다.{{br}}그리고 다음 예외 필터와 일치할 경우 {{importance}} 한다." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "허용" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "전체" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "모든 종류" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "차단" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "비 예외 처리" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "예외 처리" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "\"{{origin}}\"" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "\"{{type}}\" 종류" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "페이지:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "동적 URL 필터링" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "유형:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "로거 일시중지 해제" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "구성 요소 차단" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "표면 필터" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "클릭, Ctrl-클릭" - }, - "pickerCreate": { - "description": "English: Create", - "message": "생성" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "넷 필터" - }, - "pickerPick": { - "description": "English: Pick", - "message": "선택" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "미리보기" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "종료" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "주 스크립트" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "보조 필터" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "프레임" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "보조 프레임" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "보조 CSS/이미지" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "스크립트" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "보조 스크립트" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "전체" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "이 페이지에서" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "이 페이지에서 차단됨" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "요청 차단됨" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "설치된 이후" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "설치 후 차단됨" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}}개 / {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "도메인 연결됨" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{total}}개 중 {{count}}개" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "도메인 연결됨" - }, - "popupImageRulePrompt": { - "description": "", - "message": "이미지" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "인라인 스크립트" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "간단히" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "더보기" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "표면 필터링" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "큰 미디어 요소" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "팝업 창" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "외부 폰트" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "자바스크립트" - }, - "popupOr": { - "description": "English: or", - "message": "/" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "클릭: 이 사이트에서 uBlock₀을 켜고 끕니다.\n\nCtrl+클릭: 이 페이지에서 uBlock₀을 끕니다." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "클릭: 이 사이트에서 uBlock₀을 끕니다.\n\nCtrl+클릭: 이 페이지에서만 uBlock₀을 끕니다." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "클릭하여 이 사이트에서 uBlock₀ 을 켭니다." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "클릭하여 대시보드 열기" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "공용 규칙: 이 열은 모든 사이트에 적용되는 규칙 열 입니다." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "로컬 규칙: 이 열은 현재 사이트만 적용되는 규칙 열 입니다.\n로컬 규칙은 공용 규칙보다 우선권을 가지고 있습니다." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "로그로 이동" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "이 사이트에서 시각적 필터링 토글" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "클릭하여 이 사이트에서 시각적 필터링을 끕니다." - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "클릭하여 이 사이트에서 시각적 필터링을 켭니다." - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "이 사이트에서만 적용되는 대형 미디어 구성요소 차단 기능을 켜고 끕니다." - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "클릭하여 이 사이트에서 대용량의 미디어를 차단합니다." - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "클릭하여 이 사이트에서 대용량의 미디어 차단을 해제합니다." - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "이 사이트에서 팝업 차단 토글" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "클릭하여 이 사이트에서 모든 팝업을 차단합니다." - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "클릭하여 이 사이트에서 모든 팝업 차단을 해제합니다." - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "이 사이트에서 글꼴조정 차단 토글" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "클릭하여 이 사이트에서 외부 폰트를 차단합니다." - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "클릭하여 이 사이트에서 더 이상 외부 폰트를 차단하지 않습니다." - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "클릭하여 이 사이트에서 JavaScript 비활성화" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "클릭하여 이 사이트에서 JavaScript 활성화" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "구성 요소 선택기 모드로 진입" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "이 사이트의 이슈 신고" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "클릭하여 변경사항 적용을 되돌립니다." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "클릭하여 변경사항을 저장합니다." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "구성 요소 선택기 모드로 진입" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "버전" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "차단 모드 완화" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "제출" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "ublock-동적규칙_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "편집" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "취소" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "저장" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "파일로 내보내기..." - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "규칙 문법: \u003Ccode>소스 페이지, 필터링 대상, 필터링할 타입, 적용할 조치\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>전체 설명서\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "동적 필터링 규칙 목록입니다." - }, - "rulesImport": { - "description": "", - "message": "파일로부터 불러오기..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "내 규칙" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "영구 규칙" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "되돌리기" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "분류:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "목표" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "소스" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "규칙 유형" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "임시 규칙" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "기본 동작" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "이 기본 동작들은 사이트 별로 정의 할 수 있습니다." - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "고급" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "전문적인 사용자에게만 권장되는 설정입니다." - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "고급 사용자 모드 (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>필수로 읽어보세요.\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "고급 설정" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "표시" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "클라우드 저장소 활성화" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "차단된 구성 요소의 자리 감추기" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "색맹 최적화" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "컨텍스트 메뉴를 상황에 맞게 사용" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "하이퍼링크 검사 비활성화" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "차단된 요청 개수를 아이콘에 표시" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "최근 백업:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "최근 복원:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "CSP 보고서 차단" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "표면 필터 비활성화" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "{{input:number}} KB 보다 큰 미디어 구성요소 차단" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "글꼴 조종 차단" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "JavaScript 비활성화" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "설정" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "프리-페칭 비활성화 (차단된 네트워크 요청에 대해 모든 접속요청 방지)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "사용자 지정 강조 색상" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "테마" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "툴팁 비활성화" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "표준 이름 잠금 해제" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "WebRTC로부터 로컬 IP 주소 유출을 방지" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "단축키를 입력하세요" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "단축키" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "대쉬보드 보기" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "로그 보기" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — 로그" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "스토리지 사용량: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "구독" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: 선택한 URL을 사용자 지정 필터 목록에 추가하시겠습니까?\n\n제목: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "유사한 신고 탐색" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "열기" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "지원" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "지우기" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "새 신고 생성" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "문서" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "\u003Ccode>uBlock/wiki\u003C/code>의 문서를 읽고 uBlock Origin의 모든 기능에 대해 알아보세요." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "질문 및 지원" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "질문에 대한 답변 및 기타 도움 지원은 \u003Ccode>/r/uBlockOrigin\u003C/code> 서브레딧에서 제공됩니다." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "필터 문제/웹사이트가 망가짐" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "특정 웹사이트에서 발생하는 필터 이슈는 \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> 이슈 트래커\u003C/span>에 보고해주세요. GitHub 계정이 필요합니다." - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>중요:\u003C/b> uBlock Origin과 유사한 목적의 다른 차단기를 함께 사용하지 마세요. 특정 웹사이트에서 필터 문제가 발생할 수 있습니다." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>팁:\u003C/b> 필터 목록이 최신 버전인지 확인하세요. \u003Cspan data-url=\"logger-ui.html#_\">로거\u003C/span>는 필터 관련 문제를 진단하는 데에 사용되는 기본적인 도구입니다." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "오류 신고" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "uBlock Origin 자체에 대한 이슈는 \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> 이슈 트래커\u003C/span>에 보고해주세요. GitHub 계정이 필요합니다." - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "문제 해결 정보" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "다음은 자원 봉사자들이 문제를 해결하는 데에 도움을 줄 때 유용할 수 있는 기술적인 정보입니다." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>중요:\u003C/b> 잠재적으로 개인 정보이거나 민감한 정보는 기본적으로 지워집니다. 정보가 지워지면 문제 해결이 더 어려워질 수도 있습니다." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "웹페이지를 \"NSFW\" (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)로 분류" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "필터 이슈 신고" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "봉사자들이 중복 신고로 인해 부담을 겪지 않도록, 해당 이슈가 이미 신고되지는 않았는지 확인해주시기 바랍니다." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "필터 목록은 매일 갱신됩니다. 최신 필터 목록에서 문제가 이미 해결되진 않았는지 확인하세요." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "문제가 생긴 웹페이지를 새로고침해도 문제가 여전히 남아 있는지 확인하세요." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "웹 페이지가..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- 주제 선택 --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "광고나 광고 흔적을 보여줍니다" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "오버레이나 기타 성가신 요소를 보여줍니다" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "uBlock Origin 사용을 감지합니다" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "개인정보 보호 관련 이슈가 있습니다" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "uBlock Origin을 켜면 깨집니다" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "원치 않는 탭이나 창을 엽니다" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "웹 페이지의 주소:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "지우지 않기" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "표면 필터 토글" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "JavaScript 토글" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "브라우저 시작 시 필터링을 제대로 수행할 수 없습니다.\n정확한 필터링을 위해 페이지를 새로고침해주세요." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "변경사항 적용" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "내보내기" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "ublock-제외목록_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "가져오기 및 추가하기" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "제외 목록" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "목록에 있는 호스트들은 uBlock₀에서 비활성화됩니다. 한 줄에 한 개씩 입력하세요. 존재하지 않는 호스트는 자동으로 무시됩니다." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/lt/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/lt/messages.json deleted file mode 100644 index 74e3916..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/lt/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Taikyti pakeitimus" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Eksportuoti" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "mano-ublock-statiniai-filtrai_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importuoti ir papildyti" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Mano filtrai" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Taikyti pakeitimus" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Automatiškai atnaujinti filtrų sąrašus." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Pasenęs." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Vienas URL eilutėje. Neteisingi URL bus tyliai ignoruoti." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Reklamos" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Erzinimas" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Adaptuoti" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Įtaisyti" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Kenksmingos sritys" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Univarsalūs" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privatumas" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regionai, kalbos" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignoruoti daugybinius kosmetinius filtrus." - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "\u003Cp>Daugybiniai kosmetiniai filtrai yra tokie kosmetiniai filtrai, kurie taikomi visoms svetainėms.\u003Cp>Nors uBlock₀ juos apdoroja efektyviai, daugybiniai kosmetiniai filtrai vis tiek gali prisidėti prie pamatuojamo atminties ir procesoriaus panaudojimo kai kuriose svetainėse, ypač didelėse ir ilgai gyvuojančiose.\u003Cp>Šio nustatymo įjungimas sumažins atminties ir procesoriaus naudojimą, kurį sukelia svetainės dėl daugybinių kosmetinių filtrų apdorojimo, bei sumažins bendrą uBlock₀ atminties naudojimą.\u003Cp>Rekomenduojama įjungti šį nustatymą mažiau galinguose įrenginiuose." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importuoti..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Paskutinis atnaujinimas: {{ago}}.\nIeškoti atnaujinimo." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Blokuotų serverių sąrašas" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "naudojama {{used}} iš {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "Tinklo filtrų ({{netFilterCount}}) + kosmetinių filtrų ({{cosmeticFilterCount}}) iš:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Tinklo klaida sutrukdė atnaujinti resursą." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filtrų sąrašai" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "\u003Cp>Ši nuostata įjungia \u003Ca href=\"https://adblockplus.org/en/faq_internal#elemhide\">Su Adblock Plus suderinamų „elementų slėpimo“ filtrų\u003C/a> analizę ir taikymą. Šie filtrai iš esmės yra kosmetiniai, jie naudojami tinklalapio elementams, kurie yra laikomi vaizdiniais nepatogumais ir kurių negalima užblokuoti tinklo užklausomis paremtais filtrais, paslėpti.\u003C/p>\u003Cp>Šios nuostatos įjungimas padidina uBlock₀ atminties naudojimą.\u003C/p>" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Analizuoti ir taikyti kosmetinius filtrus." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Valyti visus podėlius" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspend network activity until all filter lists are loaded" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Atnaujinti dabar" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Atnaujinama..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "peržiūrėti turinį" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Padaryti atsarginę kopiją į failą" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "mano-ublock-atsarginė_kopija_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO's own filter lists are freely hosted on the following \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "A randomly picked CDN is used when a filter list needs to be updated." - }, - "aboutChangelog": { - "description": "", - "message": "Pakeitimų žurnalas" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Pirminis tekstas (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Talkininkai" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Išorinės priklausomybės (suderinamos su „GPLv3“):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filtrų sąrašai" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Apie" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Privatumo politika" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Atkurti numatytuosius nustatymus..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Visi jūsų nustatymai bus pašalinti, o uBlock₀ bus perleistas.\n\nAtkurti uBlock₀ pradinius nustatymus?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Atkurti iš failo..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Visi jūsų nustatymai bus perrašyti naudojant duomenis iš {{time}} atsarginės kopijos, o uBlock₀ bus perleistas.\n\nPerrašyti visus nustatymus naudojant atsarginės kopijos duomenis?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Nepavyko nuskaityti duomenų arba jie neteisingi" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Programinis kodas" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Vertimai" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Sudėtingesni nustatymai" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Įspėjimas! Keiskite šiuos sudėtingesnius nustatymus savo rizika." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — resursų žiūryklė" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Click to load" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Šio įrenginio vardas:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Importuoti iš nuotolinės saugyklos" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importuoti iš nuotolinės saugyklos ir sulieti su dabartiniais nustatymais" - }, - "cloudPush": { - "description": "tooltip", - "message": "Eksportuoti į nuotolinę saugyklą" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Block element in frame…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subscribe to filter list…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Laikinai leisti didelius medijos elementus" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "View source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Prietaisų skydas" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Dėmesio! Turite neišsaugotų pakeitimų" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignoruoti" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Pasilikti" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Grįžti" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Užverti langą" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Tęsti" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Negrįžtamai" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Laikinai" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Rasta:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "be parametrų" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Išjungti griežtą {{hostname}} blokavimą" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin neleido įkelti šio puslapio:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Dėl šio filtro" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Puslapis užblokuotas" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "prieš {{value}} d." - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "prieš {{value}} val." - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "prieš {{value}} min." - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "prieš dieną" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "prieš valandą" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "prieš minutę" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Tinklo klaida: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Pagaliau, efektyvus blokatorius, neapkraunantis nei procesoriaus, nei darbinės atminties." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "išjungta" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Taikyti pakeitimus" - }, - "genericBytes": { - "description": "", - "message": "baitai" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopijuoti į iškarpinę" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Toggle locked scrolling" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Atstatyti" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Žymėti viską" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Pateikti" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Klaidos: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Visos" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Užkulisiai" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtruoti žurnalo įrašus" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Sritis" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filtras" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Tipas" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Valyti žurnalą" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Dabartinė kortelė" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Įjungti / išjungti DOM tyriklį" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Kontekstas" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filtras" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filtrų sąrašas" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Išsamiau" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partyness" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Šakninis kontekstas" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Taisyklė" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Tipas" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Neformatuotas" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Sąrašas" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Lentelė" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "„uBlock Origin“ viki: žurnalas" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pristabdyti žurnalą (atmesti visus gaunamus duomenis)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Įjungti/išjungti iššokantį langą" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Įkelti kortelės turinį iš naujo" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1-oji šalis" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3-ioji šalis" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "leidžiama" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "užblokuota" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modifikuota" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Ne" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Žurnalo filtravimo nuostatos" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Įjungti / išjungti žurnalo filtravimą" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Loggerio įrašai, kurie neatitinka visų trijų žemiau esančių sąlygų bus automatiškai panaikinami" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Context" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/rule" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partyness" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Time" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Hide columns:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Use {{input}} lines per entry in vertically expanded mode" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Išsaugoti įrašus ne senesnius kaip {{input}} min." - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Preserve at most {{input}} entries per tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preserve at most {{input}} page loads per tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Statinis filtras \u003Ccode>{{filter}}\u003C/code> rastas:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Statinis filtras \u003Ccode>{{filter}}\u003C/code> nerastas jokiame dabar įjungtame filtrų sąraše" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statinis filtravimas" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} {{type}} tinklo užklausas, {{br}}kur URL adresas atitinka {{url}} {{br}}ir kurios kyla {{origin}},{{br}}{{importance}} yra atitinkantis išimties filtras." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Leisti" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "bet kur" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "bet kokio tipo" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Blokuoti" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "net jei" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "išskyrus kai" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "iš „{{origin}}“" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "„{{type}}“ tipo" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Kontekstas:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL taisyklė" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Tipas:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Tęsti žurnalą" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Blokuoti elementą" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Kosmetiniai filtrai" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Spustelėjimas, Vald-spustelėjimas" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Sukurti" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Tinklo filtrai" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Parinkti" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Peržiūra" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Baigti" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1-os šalies scenarijai" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "trečios šalies" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "3-ios šalies rėmeliai" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "3-ios šalies CSS/paveikslai" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "Skriptas" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "3-ios šalies scenarijai" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "visi" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "šiame puslapyje" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokuojama šiame puslapyje" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "blokuotos užklausos" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "nuo įdiegimo" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Užblokuota nuo įdiegimo" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} arba {{percent}} %" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Prijungti domenai" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} iš {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "jungtasi prie sričių" - }, - "popupImageRulePrompt": { - "description": "", - "message": "vaizdai" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "įterptieji scenarijai" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Mažiau" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Daugiau" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Kosmetinis filtravimas" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Dideli medijos elementai" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Iškylantysis langas" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Nuotoliniai šriftai" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "arba" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Spustelėjimas: įjungti/išjungti uBlock₀ šiam puslapiui.\n\nVald+spustelėjimas: išjungti uBlock₀ tik šiam puslapiui." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Spustelėkite, kad išjungtumėte uBlock₀ šiai svetainei.\n\nVald+spustelėkite, kad išjungtumėte uBlock₀ tik šiam puslapiui." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Spustelėkite, kad įjungtumėte uBlock₀ šiai svetainei." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Atverti prietaisų skydą" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Globalios taisyklės: ši skiltis skirta visiems puslapiams taikomoms taisyklėms." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Vietinės taisyklės: ši skiltis skirta dabartiniam puslapiui taikomoms taisyklėms.\nVietinės taisyklės nustelbia globalias." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Atverti žurnalą" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Perjungti kosmetinį filtravimą šiame puslapyje" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Spustelėkite kosmetinių filtrų išjungimui šioje svetainėje" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Spustelėkite kosmetinių filtrų įjungimui šioje svetainėje" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Perjungti didelių medijos elementų blokavimą šiame puslapyje" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Spustelėkite didelių medijos elementų blokavimui šioje svetainėje" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Spustelėkite didelių medijos elementų neblokavimui šioje svetainėje" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Perjungti visų iškylančiųjų langų blokavimą šiame puslapyje" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Spustelėkite visų iškylančių langų blokavimui šioje svetainėje" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Spustelėkite visų iškylančių langų neblokavimui šioje svetainėje" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Perjungti nuotolinių šriftų blokavimą šiame puslapyje" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Spustelėkite nutolusių šriftų blokavimui šioje svetainėje" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Spustelėkite nutolusių šriftų neblokavimui šioje svetainėje" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Spustelėkite JavaScript išjungimui šioje svetainėje" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Spustelėkite JavaScript įjungimui šioje svetainėje" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Atverti elementų parinkimo veikseną" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Pranešti apie problemą šioje svetainėje" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Spauskite pakeitimams atstatyti." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Spauskite pakeitimams padaryti pastoviais." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Atverti elementų trynimo veikseną" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versija" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relax blocking mode" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Pritaikyti" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "mano-ublock-dinaminės-taisyklės_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Redaguoti" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Atmesti" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Įrašyti" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Eksportuoti į failą" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Taisyklės sintaksė: \u003Ccode>šaltinis paskirtis tipas veiksmas\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>dokumentacija\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Dinaminių filtravimo taisyklių sąrašas." - }, - "rulesImport": { - "description": "", - "message": "Importuoti iš failo..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Mano taisyklės" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Pastovios taisyklės" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Atstatyti" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Rikiuoti pagal:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Tikslas" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Šaltinis" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Taisyklės tipas" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Laikinos taisyklės" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Numatytoji elgsena" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Šios numatytosios elgsenos gali būti nustelbtos kiekvienam puslapiui atskirai" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Papildomi nustatymai" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Features suitable only for technical users" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Aš esu patyręs naudotojas (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>privaloma perskaityti\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "sudėtingesni nustatymai" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Išvaizda" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Įjungti nuotolinės saugyklos palaikymą" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Slėpti blokuotų elementų rezervuotą vietą" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Draugiškas neskiriantiems spalvų" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Kur tinka, naudoti kontekstinį meniu" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Išjungti saitų auditą" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Rodyti blokuotų užklausų skaičių piktogramoje" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Paskutinė atsarginė kopija:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Paskutinis atkūrimas:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Blokuoti CSP ataskaitas" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Išjungti kosmetinius filtrus" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Blokuoti medijos elementus didesnius nei {{input}} kB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Blokuoti nuotolinius šriftus" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Išjungti JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Nustatymai" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Išjungti išankstinį gavimą (visiems blokuotų tinklo užklausų prisijungimams išvengti)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Custom accent color" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Išjungti paaiškinimus" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Uncloak canonical names" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Neleisti WebRTC atskleisti vietinio IP adreso" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Įveskite nuorodą" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Nuorodos" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Rodyti prietaisų skydą" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Rodyti žurnalą" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Žurnalas" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Storage used: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Prenumeruoti" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: Pridėti šį URL į jūsų adaptuotų filtrų sąrašą?\n\nPavadinimas: „{{title}}“\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Rasti panašias ataskaitas" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Atidaryti" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Pagalba" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Sukurti naują ataskaitą" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentacija" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Read the documentation at \u003Ccode>uBlock/wiki\u003C/code> to learn about all of uBlock Origin's features." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Klausimai ir pagalba" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter issues/website is broken" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Klaidos pranešimas" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Troubleshooting Information" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Report a filter issue" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "The web page…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pick an entry --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shows ads or ad leftovers" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has privacy-related issues" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfunctions when uBlock Origin is enabled" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Opens unwanted tabs or windows" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Address of the web page:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Taikyti pakeitimus" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Eksportuoti" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "mano-ublock-išimtys_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importuoti ir papildyti" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Išimtys" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Baltojo sąrašo direktyvos nurodo, kurioms svetainėms uBlock Origin turėtų būti išjungtas. Vienas įrašas eilutėje. Neteisingos direktyvos bus tyliai ignoruotos ir užkomentuotos." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/lv/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/lv/messages.json deleted file mode 100644 index 9bc9624..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/lv/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Lietot izmaiņas" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Iespējot manas pielāgotās atlases" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Eksportēt" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importēt un pievienot" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Mani filtri" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Ļaut pielāgotas atlases, kas pieprasa uzticēšanos" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Nevajag pievienot filtrus no neuzticamiem avotiem." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Lietot izmaiņas" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Automātiski atjaunināt filtra sarakstus." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Novecojis." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Vienu URL katrā rindiņā. Rindiņas, kuras sākas ar ‘!’ tiks ignorētas. Nederīgs URL tiks ignorēts bez brīdinājuma." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Reklāmas" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Traucējoši elementi" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Sīkdatņu paziņojumi" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Lietotāja" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Iebūvētie" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Ļaundabīgo programmu domēni" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Daudzfunkcionālie" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Konfidencialitāte" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Reģionālie, valodas" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Sabiedriskās ekrānvadīklas" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignorēt vispārīgos kosmētiskos filtrus" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "\u003Cp>Vispārīgie kosmētikas filtri ir kosmētikas filtri, kurus paredzēts piemērot visās tīmekļvietnēs.\u003Cp>Lai gan uBlock ₀ darbojas efektīvi, vispārīgie kosmētikas filtri dažās tīmekļa lapās var ievērojami noslogot atmiņu un centrālo procesoru.\u003Cp>Šīs opcijas izmantošana samazinās vispārīgo kosmētikas filtru izmantotās atmiņas un procesora noslodzi kā arī samazinās paša uBlock₀ izmantoto atmiņu.\u003Cp>Ieteicams izmantot zemas veiktspējas ierīcēm." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importēt…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Pēdējo reizi atjaunināts: {{ago}}.\nNoklikšķiniet, lai atjauninātu." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Bloķēto hostu saraksti" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} izmanto no {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} tīkla filtri + {{cosmeticFilterCount}} kosmētikas filtri no:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Tīkla kļūda neļāva atjaunināt resursu." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Trešo pušu filtri" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "\u003Cp>Šī opcija iespējo apstrādāt un ieviest ar \u003Ca href=\"https://adblockplus.org/en/faq_internal#elemhide\"> Adblock Plus saderīgus “elementu paslēpšanas”\u003C/a> filtrus. Šie filtri ir būtībā kosmētiski, tie kalpo, lai paslēptu tīmekļa lapu elementus, kas tiek uzskatīti par vizuālu traucējumu, un kas nevar būt nobloķēti ar pieprasījumu balstītu filtrēšanas programmu.\u003C/p>\u003Cp>Šī līdzekļa iespējošana palielina \u003Ci>uBlock₀\u003C/i> izmantojamās atmiņas daudzumu.\u003C/p>" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Apstrādāt un izpildīt kosmētikas filtrus." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Visas kešatmiņas iztīrīšana" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Atlikt tīkla darbības, līdz visi aizturēšanas saraksti ir ielādēti." - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Atjaunināt tūlīt" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Atjaunina…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "skatīt saturu" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Saglabāt iestatījumus failā" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO pašu aizturēšanas saraksti ir brīvi pieejami šajos \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">SPT (satura piegādes tīklos)\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Nejauši izvēlēts SPT tiks izmantots, kad būs jāatjaunina aizturēšanas saraksts." - }, - "aboutChangelog": { - "description": "", - "message": "Izmaiņu žurnāls" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Pirmkods (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Atbalstītāji" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Ārējās atkarības (GPLv3 saderīgas):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filtru saraksti" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Par" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Privātuma nosacījumi" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Atgriezt noklusējuma iestatījumus…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Tiks atcelti visi Jūsu iestatījumi, un uBlock₀ tiks restartēts. \nAtjaunot rūpnīcas iestatījumus?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Atjaunot iestatījumus no faila..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Tiks pārrakstīti visi iestatījumi izmantojot datus, kas saglabāti {{time}}, un µBlock₀ tiks restartēts. Pārrakstīt visus esošos iestatījumus, izmantojot rezerves kopiju?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Datus nevar nolasīt vai tie nav derīgi" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Pirmkods" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Tulkojumi" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Papildu iestatījumi" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Brīdinājums! Mainiet šos iestatījumus uz savu atbildību." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — līdzekļu skatītājs" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Klikšķināt, lai ielādētu" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Šīs ierīces nosaukums:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Imports no mākoņdatu glabātuves" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importēt no mākoņdatu glabātuves un apvienot ar pašreizējiem iestatījumiem" - }, - "cloudPush": { - "description": "tooltip", - "message": "Eksports uz mākoņdatu glabātuvi" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Aizturēt elementu rāmī…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Abonēt filtru sarakstu…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Īslaicīgi atļaut lielos multivides elementus" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Skatīt pirmkodu…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Vadības panelis" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Brīdinājums! Veiktās izmaiņas nav saglabātas" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignorēt" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Palikt" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Doties atpakaļ" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Aizvērt šo logu" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Turpināt" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Paliekoši" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Pagaidu" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Vairs nebrīdināt par šo vietni" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Atrodas:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "bez parametriem" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Atslēgt satura bloķēšanu saitnei {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock₀ novērsa šo lapu no ielādes:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Sakarā ar šādu filtru" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Lapa aizturēta" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Šim ierakstam ir jābūt pēdējam" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "pirms {{value}} dienām" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "pirms {{value}} stundām" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "pirms {{value}} minūtēm" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "vakar" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "pirms stundas" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "pirms minūtes" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Tīkla kļūda: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock₀" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Beidzot, efektīvs bloķētājs. Nepārslogo procesoru un atmiņu." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "izslēgts" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Lietot izmaiņas" - }, - "genericBytes": { - "description": "", - "message": "baiti" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopēt starpliktuvē" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Pārslēgt slēgto ritināšanu" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Atgriezt" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Atlasīt visu" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Iesniegt" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Kļūdas: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Viss" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Aizkulisēs" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "žurnāla ierakstu filtrs" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domēns" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filtrs" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Tips" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Iztīrīt žurnālu" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Šī cilne" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Pārslēgt DOM pārlūku" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Konteksts" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filtrs" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filtru saraksts" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Izklāsts" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Ballīte" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Saknes konteksts" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Nosacījums" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Veids" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "Vietnes URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Vienkāršs" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Saraksts" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabula" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: žurnāls" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Apturēt žurnalēšanu (atmest visus ienākošos datus)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Pārslēgt uznirstošo paneli" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Pārlādēt cilnes saturu" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Pirmā puse" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Trešā puse" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "atļauts" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "aizturēts" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "mainīts" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Nav" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Žurnāla atlases iespējas" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Pārslēgt žurnāla atlasi" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Žurnāla ieraksti, kas neatbilsts visiem trim zemāk esošajiem nosacījumiem, tiks atmesti:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Konteksts" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} aizturētājs/nosacījums" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Ballīte" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Laiks" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Paslēpt kolonnas:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Izmantot {{input}} rindas ierakstam stateniski izvērstā skatā" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Saglabāt pēdējo {{input}} minūšu ierakstus" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Saglabāt ne vairāk kā {{input}} ierakstus cilnē" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Saglabāt ne vairāk kā {{input}} lapu ielādes cilnē" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Statiskais filtrs \u003Ccode>{{filter}}\u003C/code> atrasts:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Nemainīgs aizturētājs netika atrasts nevienā no pašreiz iespējotajiem aizturēšanas sarakstiem" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statiskā filtrēšana" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} tīkla pieprasījumiem {{type}} {{br}}kuru URL adrese satur {{url}} {{br}}un kas nāk no {{origin}},{{br}}{{importance}} ir atbilstošs izņēmumu filtrs." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Atļaut" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "no jebkuras vietas" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "jebkurš tips" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Bloķēt" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "pat ja" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "izņemot gadījumus, kad" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "no “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "tips “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Konteksts:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Dinamiskā URL filtrēšana" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Tips:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Atsākt žurnālus" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Bloķēt elementu…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Vizuālie filtri" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Click, Ctrl-click" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Izveidot" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Resursu filtri" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Izvēlēties" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Priekšskatījums" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Iziet" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1st-party skripti" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "No trešajām pusēm" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "rāmis" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "3rd-party freimi" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "trešo pušu CSS/attēli" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "skripts" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "3rd-party skripti" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "Visi" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "šajā lapā" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Aizturētas šajā lapā" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "bloķētie pieprasījumi" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "kopš instalācijas brīža" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Pavisam aizturētas" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} vai {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Savienotie domēni" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} no {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "savienotie domēni" - }, - "popupImageRulePrompt": { - "description": "", - "message": "attēli" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "inline skripti" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Mazāk" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Vairāk" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Vizuālā aizturēšana" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Lielas informācijas nesēju daļas" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Uznirstošie logi" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Attālinātie fonti" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "vai" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klikšķis: atslēgt/ieslēgt uBlock₀ šajā vietnē.\n\nCtrl+klikšķis: atslēgt uBlock₀ tikai šai lapai." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Noklikšķināt, lai atslēgtu uBlock₀ šajā vietnē.\n\nCtrl + klikšķis, lai atslēgtu uBlock₀ tikai šajā lapā." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Klikšķināt, lai šai vietnei ieslēgtu uBlock₀." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Atvērt vadības paneli" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Globālie ierobežojumi: šī kolonna paredzēta ierobežojumiem, kas attieksies uz visām mājaslapām." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Vietējie ierobežojumi: šī kolonna paredzēta ierobežojumiem, kas attieksies tikai uz konkrēto mājaslapu.\nVietējie ierobežojumi pārraksta globālos ierobežojumus." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Atvērt pieprasījumu žurnālu" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Pārslēgt kosmētisko filtrēšanu šajā vietnē" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klikšķināt, lai šajā vietnē atspējotu vizuālo aizturēšanu" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klikšķināt, lai šajā vietnē iespējotu vizuālo aizturēšanu" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Pārslēgt lielu multivides elementu bloķēšanu šajā vietnē" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klikšķināt, lai šajā vietnē aizturētu lielas informācijas nesēju daļas" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klikšķināt, lai neaizturētu lielas informācijas nesēju daļas" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Pārslēgt uznirstošo logu bloķēšanu šajā vietnē" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klikšķināt, lai šajā vietnē aizturētu uznirstošos logus" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klikšķināt, lai šajā vietnē vairs neaizturētu uznirstošos logus" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Pārslēgt ārējo fontu bloķēšanu šajā vietnē" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klikšķināt, lai šajā vietnē aizturētu attālos fontus" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klikšķināt, lai šajā vietnē vairs neaizturēt attālos fontus" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klikšķināt, lai šajā vietnē atspējotu JavaScript" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klikšķināt, lai šajā vietnē vairs neatspējotu JavaScript" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Ienākt elementa atlasītāju režīmā" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Ziņot par nepilnību šajā vietnē" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Klikšķināt, lai atceltu izmaiņas." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Nokliķšķināt šeit, lai saglabātu izmaiņas." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Ieiet elementa dzēšanas režīmā" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versija" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Atslābinātais aizturēšanas režīms" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Ieviest" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Rediģēt" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Atsacīties" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Saglabāt" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Eksportēt uz failu" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Noteikumu sintakse: \u003Ccode>avots mērķis tips rīcība\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>pilna dokumentācija\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Dinamisko filtrēšanas noteikumu saraksts." - }, - "rulesImport": { - "description": "", - "message": "Importēt no faila…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Mani noteikumi" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Pastāvīgie noteikumi" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Atgriezt" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Kārtot:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Mērķis" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Avots" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Nosacījuma veids" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Pagaidu noteikumi" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Noklusējuma darbība" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Šos uzstādījumus var mainīt katrai vietnei atsevišķi" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Paplašināti" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Iespējas, kas piemērotas tikai tehniskiem lietotājiem." - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Es esmu pieredzējis lietotājs (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>Vēlams izlasīt\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "papildu iestatījumi" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Izskats" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Aktivizēt mākoņdatu glabāšanas atbalstu" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Paslēpt vietu no bloķētā elementa" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Daltoniķiem draudzīgs" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Izmantot konteksta izvēlni vajadzības gadījumā" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Atslēgt tīmekļa saišu izsekošanu" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Parādīt bloķēto pieprasījumu skaitu uz ikonas" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Pēdējā rezerves kopija:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Pēdējā atjaunošana veikta:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Bloķēt CSP atskaites" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Atslēgt kosmētiskos filtrus" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Aizturēt informācijas nesēju daļas, kas ir lielākas par {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Bloķēt ārējos fontus" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Atspējot JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Iestatījumi" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Atslēgt pirmsielādi (lai novērstu bloķētus tīkla pieprasījumus)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Pielāgota izcēluma krāsa" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Izskats" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Atslēgt rīka padomus (tooltips)" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Atslēpt kanoniskos nosaukumus" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Novērst savas IP adreses noplūdi ar WebRTC" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Ievadīt saīsni" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Īsceļi" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Parādīt Vadības paneli" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Parādīt tīkla pieprasījumu žurnālu" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Tīkla pieprasījumu žurnāls" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Izmantotais krātuves lielums: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Abonēt" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: Pievienot sekojošo URL Jūsu lietotāja filtru sarakstiem?\n\nNosaukums: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Meklēt līdzīgus ziņojumus" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Atvērt" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Atbalsts" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Izņemt" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Izveidot jaunu ziņojumu" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentācija" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Dokumentāciju var lasīt \u003Ccode>uBlock/wiki\u003C/code>, lai uzzinātu par visām uBlock Origin iespējām." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Jautājumi un atbalsts" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Atbildes uz jautājumiem un cita veida atbalsts tiek sniegts \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Aizturēšanas nepilnības/nedarbojas vietne" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Par aizturēšanas nepilnībām noteiktās vietnēs var ziņot nepilnību uzskaitē \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code>\u003C/span>." - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Svarīgi:\u003C/b> ir jāizvairas no līdzīgu aizturētāju izmantošanas vienlaicīgi ar uBlock Origin, jo tas var radīt aizturēšanas kļūmes noteiktās vietnēs." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Ieteikums:\u003C/b> jāpārliecinās, ka aizturēšanas saraksti ir atjaunināti. \u003Cspan data-url=\"logger-ui.html#_\">Žurnāls\u003C/span> ir galvenais rīks, lai noteiktu ar aizturēšanu saistītas kļūmes." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Nepilnību ziņojums" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Par uBlock Origin nepilnībām jāziņo \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>\u003C/span>." - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Kļūmju noteikšanas informācija" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Zemāk ir tehniskā informācija, kas var būt noderīga, kad brīvprātīgie mēģinās palīdzēt atrisināt sarežģījumus." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Svarīgi:\u003C/b> iespējami privāta vai sensitīva informācija pēc noklusējuma tiek izņemta. Aizvākta informācija var apgrūtināt sarežģījuma atrisināšanu." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Iezīmēt tīmekļa lapu kā \"NSFW\" (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">\"Not Safe for Work\u003C/a> (nav droša darbam))" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Ziņot par aizturētāja nepilnībām" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Lai izvairītos no brīvprātīgo noslogošanas ar ziņojumiem, kas atkārtojas, lūgums pārbaudīt, vai par šādu nepilnību jau ir ziņots." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Aizturēšanas saraksti tiek atjaunināti ik dienu. Jāpārliecinās, vai nepilnība jau nav novērsta visjaunākajos aizturēšanas sarakstos." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Jāpārliecinās, vai nepilnība joprojām pastāv pēc tīmekļa vietnes ar sarežģījumiem pārlādēšanas." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Tīmekļa lapa…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Atlasīt ierakstu --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Rāda reklāmas vai to paliekas" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ir pārklājumi vai citas neērtības" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Nosaka uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ir ar privātumu saistītas nebūšanas" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Salūzt, kad uBlock Origin ir iespējots" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Atver nevēlamas cilnes vai logus" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Tīmekļa lapas adrese:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Atdarīt izņemšanu" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Pārslēgt kosmētisko atlasi" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Pārslēgt JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Nevarēja pienācīgi aizturēt pārlūka palaišanas laikā.\nJāpārlādē lapa, lai nodrošinātu pienācīgu aizturēšanu." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Lietot izmaiņas" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Eksportēt" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-whitelist_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importēt un pievienot" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Uzticamas vietnes" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Saraksts ar interneta resursiem, kuriem tiks atslēgts uBlock Origin. Viens ieraksts katrā rindiņā. Nederīgi interneta resursu nosaukumi tiks ignorēti bez brīdinājuma." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/mk/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/mk/messages.json deleted file mode 100644 index be90699..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/mk/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Apply changes" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Ескпортирај" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "мои-ублок-статични-филтери_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Внеси и додај" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Мои филтери" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Примени измени" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Авто-ажурирање филтер листи" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Застарени." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Еден УРЛ по линија. Неважечки УРЛи ќе бидат игнорирани во тишина." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Реклами" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Досадни" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Custom" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Вградено" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Домени на малвер" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multipurpose" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Приватност" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Региони, јазици" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignore generic cosmetic filters" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Импортирај..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Last update: {{ago}}.\nClick to force an update." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} користени од {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} мрежни филтери + {{cosmeticFilterCount}} козметичи филтери од:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "A network error prevented the resource from being updated." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Филтер листи" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the network request-based filtering engines." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Parse and enforce cosmetic filters" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Исчисти сите кешови" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspend network activity until all filter lists are loaded" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Апдејтирај сега" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Ажурирање..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "view content" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "ГБ" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "КБ" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "МБ" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Back up to file…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "мој-ублок-бекап_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO's own filter lists are freely hosted on the following \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "A randomly picked CDN is used when a filter list needs to be updated." - }, - "aboutChangelog": { - "description": "", - "message": "Дневник на промена" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Сорс Код (ГПЛв3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Соработници" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "External dependencies (GPLv3-compatible):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Филтер листи" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "За" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Privacy policy" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Reset to default settings…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Restore from file…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "The data could not be read or is invalid" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Сорс код" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Преведувања" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Напредни подесувања" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Warning! Change these advanced settings at your own risk." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Asset viewer" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Click to load" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Име на уред:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Import from cloud storage" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Import from cloud storage and merge with current settings" - }, - "cloudPush": { - "description": "tooltip", - "message": "Export to cloud storage" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Block element in frame…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subscribe to filter list…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Temporarily allow large media elements" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "View source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Табла" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Предупредување! Имате неснимени промени" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Игнорирај" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Остани" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Оди назад" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Затвори го прозорецот" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Proceed" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Трајно" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Повремено" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Најдено во:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "без параметри" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Disable strict blocking for {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin has prevented the following page from loading:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Because of the following filter:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Page blocked" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "пред {{value}} дена" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "пред {{value}} саати" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "пред {{value}} минути" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "пред еден ден" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "пред саат време" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "пред една минута" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Мрежна грешка: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Конечно, ефикасен блокер. Лесен на CPU и меморија." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "исклучи" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Примени ги измените" - }, - "genericBytes": { - "description": "", - "message": "бајтови" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Копирај во табла со исечоци" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Toggle locked scrolling" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Поврати" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Select all" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Submit" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Сите" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Без табови" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filter logger content" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Домен" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Филтер" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Тип" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "УРЛ" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Исчисти логови" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Сегашен таб" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Toggle the DOM inspector" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Контекст" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Филтер" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Филтер листа" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Детали" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Партија" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Root context" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Правило" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Тип" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "УРЛ" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Маркдаун" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Обично" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Листа\n" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Табла" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: The logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Паузирај логови (отфрли влезни податоци)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Toggle the popup panel" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Reload the tab content" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1ва-партија" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3та-партија" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "Дозволен" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "блокиран" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modified" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Не" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Logger filtering options" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Toggle logger filtering" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} контекст" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Филтер/правило" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Партија" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Време" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Hide columns:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Use {{input}} lines per entry in vertically expanded mode" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Preserve entries from the last {{input}} minutes" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Preserve at most {{input}} entries per tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preserve at most {{input}} page loads per tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Статичен филтер \u003Ccode>{{filter}}\u003C/code> најден во:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Static filter could not be found in any of the currently enabled filter lists" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Статичен филтер" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} мрежни барана од {{type}} {{br}} кои УРЛ адреси одговараат на {{url}} {{br}}кои доаѓаат од {{origin}},{{br}}{{importance}} има соодветен филтер за исклучоци." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Дозволи" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "од било каде" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "било кој тип" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Блокирај" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "иако " - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "освен кога" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "од \"{{origin}}\"" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "тип \"{{type}}\"" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Контекст: " - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "УРЛ правило" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Тип:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Продолжи логирање" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Блокирај елемент..." - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Козметичко филтрирање" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Клик, Контрол-клик" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Создади" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Мрежни филтери" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Одбери" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Прегледај" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Исклучи" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "Самострани скрипти" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "Трети лица" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "3rd-party фрејмови" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "Трети лица css/слики" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "Други страни скрипти" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "сите" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "на оваа страница" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Блокирани на оваа страна" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "побарувања блокирани" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "од инсталирање" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Блокирани од инсталирање" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} или {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Домени конектирани" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} од {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "домени конектирани" - }, - "popupImageRulePrompt": { - "description": "", - "message": "слики" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "внатрешни скрипти" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Помалку" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Повеќе" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Козметичко филтрирање" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Големи медија елемнти" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Поп-ап прозорец" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Далечни фонтови" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "или" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Click to disable uBlock₀ for this site.\n\nCtrl+click to disable uBlock₀ only on this page." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Click to enable uBlock₀ for this site." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Отворија ја таблата" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Глобални правила: оваа колона е за правила што се однесуваат на сите сајтови." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Локални правила: оваа колона е за правила што се однесуваат само на моменталниот сајт.\nЛокални правила надминуваат глобални правила." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Отвоери го логерот" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Toggle cosmetic filtering for this site" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Кликнете да го исклучите козметичките филтри на оваа страна" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Кликнете да го уклучите козметичките филтри на оваа страна" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Toggle the blocking of large media elements for this site" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click to block large media elements on this site" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click to no longer block large media elements on this site" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Toggle the blocking of all popups for this site" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Кликни да блокираш сите попапи на оваа страница" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Click to no longer block all popups on this site" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Toggle the blocking of remote fonts for this site" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Click to block remote fonts on this site" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Click to no longer block remote fonts on this site" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Кликнете за да се блокира JavaScript на оваа страна" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Кликнете за да не се блокира JavaScript на оваа страна повеќе" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Влези во елемент одбирач мод" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Report an issue on this website" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Кликни да ги повратиш твоите промени" - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Кликни да ги снимиш твоите промени трајно" - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Влези во елемент западник мод" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Верзија" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Релаксиран мод на блокирање" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Изврши" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "мои_ублок_динамични_правила_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Уреди" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Отфрли" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Сними" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Изнеси во фајл" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Rule syntax: \u003Ccode>source destination type action\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>full documentation\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Листа од твоите динамични филтер правила" - }, - "rulesImport": { - "description": "", - "message": "Внеси од фајл" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Мои правила" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Постојани правила" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Поврати" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Подреди:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Дестинација" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Извор" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Тип на правило" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Привремени правила" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Стандардно однесување" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Овие стандардни однесувања можат да се променат на база на сајт" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Advanced" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Features suitable only for technical users" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Јас сум напреден корисник (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>потребно читање\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "напредни подесувања" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Appearance" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Уклучи поддршка за складирање во облак" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Hide placeholders of blocked elements" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Користи бои за слепоболност" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Make use of context menu where appropriate" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Disable hyperlink auditing" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Покажувај ја бројката на блокирани барања на иконата" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Последно снимено:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Последно ресторирање:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Block CSP reports" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Исклучи козметичо филтрирање" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Блокирај медија елементи поголеми од {{input}} КБ" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Блокирај далечни фонтови" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Исклучи JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Подесувања" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Disable pre-fetching (to prevent any connection for blocked network requests)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Custom accent color" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Theme" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": " Исклучи ги советите" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Uncloak canonical names" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Prevent WebRTC from leaking local IP addresses" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Внесете кратенка" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Кратенки" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Покажи Дешборд" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Покажи Логер" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Логови" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Место вземеноЧ {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Subscribe" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Add the following URL to your custom filter lists?\n\nTitle: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Find similar reports" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Open" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Support" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Create new report" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentation" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Read the documentation at \u003Ccode>uBlock/wiki\u003C/code> to learn about all of uBlock Origin's features." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Questions and support" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter issues/website is broken" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Bug report" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Troubleshooting Information" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Report a filter issue" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "The web page…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pick an entry --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shows ads or ad leftovers" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has privacy-related issues" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfunctions when uBlock Origin is enabled" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Opens unwanted tabs or windows" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Address of the web page:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Примени ги измените" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Експортирај" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "моите_ублок_верувани_сајтови_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Внеси и додади" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Верувани сајтови" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ml/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ml/messages.json deleted file mode 100644 index caaacf7..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ml/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "മാറ്റങ്ങള്‍ അപ്ലേ ചെയ്യുക" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "എക്സ്പോര്‍ട്ട്‌" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "എന്‍റെ-യുബ്ലോക്ക്-സ്റ്റാറ്റിക്ക്-ഫില്‍ട്ടറുകള്‍_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "ഇമ്പോര്‍ട്ടും കൂട്ടിചേര്‍ക്കലും ചെയ്യുക" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "എന്‍റെ ഫില്‍ട്ടറുകള്‍" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "മാറ്റങ്ങള്‍ അപ്ലേ ചെയ്യുക" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "ഫില്‍ട്ടര്‍ ലിസ്റ്റുകള്‍ ഓട്ടോ-അപ്ഡേറ്റ് ചെയ്യുക." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "കാലഹരണപ്പെട്ടത്" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "ഒരു വരിയില്‍ ഒരു യുആര്‍എല്‍ എന്ന രീതിയില്‍. ‘!’ എന്നിവയില്‍ തുടങ്ങുന്ന വരികള്‍ ഇഗ്നോര്‍ ചെയ്യപ്പെടും. ഇന്‍വാലിഡ്‌ ആയ യുആര്‍എല്ലുകള്‍ നിശബ്ദമായി ഇഗ്നോര്‍ ചെയ്യപ്പെടും." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "പരസ്യങ്ങള്‍" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "ശല്യപ്പെടുത്തലുകൾ" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "കസ്റ്റം" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "അന്തർനിർമ്മിതം" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "മാല്‍വെയര്‍ ഡൊമൈനുകള്‍" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "മള്‍ട്ടിപര്‍പ്പസ്" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "സ്വകാര്യത" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "പ്രാദേശികം, ഭാഷകള്‍" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "ജനറിക് കോസ്മെറ്റിക് ഫിൽട്ടറുകൾ അവഗണിക്കുക" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "എല്ലാ വെബ് സൈറ്റുകളിലും പ്രയോഗിക്കാൻ ഉദ്ദേശിക്കുന്ന കോസ്മെറ്റിക് ഫിൽട്ടറുകളാണ് ജനറിക് കോസ്മെറ്റിക് ഫിൽട്ടറുകൾ. ഈ ഓപ്ഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നത് ജനറിക് കോസ്മെറ്റിക് ഫിൽട്ടറുകൾ കൈകാര്യം ചെയ്യുന്നതിന്റെ ഫലമായി വെബ് പേജുകളിൽ ചേർത്ത മെമ്മറിയും സിപിയു ഓവർഹെഡും ഇല്ലാതാക്കും.\n\nശക്തി കുറഞ്ഞ ഉപകരണങ്ങളിൽ ഈ ഓപ്‌ഷൻ പ്രവർത്തനക്ഷമമാക്കാൻ ശുപാർശ ചെയ്യുന്നു." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "ഇറക്കുമതി ചെയ്യുക ..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "അവസാന അപ്ഡേറ്റ്:{{ago}}" - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{total}} ല്‍ നിന്നും {{used}} ഉപയോഗിക്കുന്നു" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} നെറ്റ്‌വര്‍ക്ക് ഫില്‍ട്ടറുകള്‍ + {{cosmeticFilterCount}} സൗന്ദര്യ ഫില്‍ട്ടറുകള്‍ ഇവിടെ നിന്നും:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "ഒരു നെറ്റ്‌വർക്ക് പിശക് ഉറവിടം അപ്‌ഡേറ്റുചെയ്യുന്നതിൽ നിന്ന് തടഞ്ഞു." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "തേര്‍ഡ് പാര്‍ട്ടി ഫില്‍ട്ടറുകള്‍" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "ഒരു വിഷ്വൽ ശല്യമെന്ന് കരുതപ്പെടുന്നതും നെറ്റ്‌വർക്ക് അഭ്യർത്ഥന അടിസ്ഥാനമാക്കിയുള്ള ഫിൽട്ടറിംഗ് എഞ്ചിനുകൾക്ക് തടയാൻ കഴിയാത്തതുമായ ഒരു വെബ് പേജിലെ ഘടകങ്ങൾ മറയ്ക്കാൻ കോസ്മെറ്റിക് ഫിൽട്ടറുകൾ സഹായിക്കുന്നു." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "ശുദ്ധീകരിച്ച് സൗന്ദര്യ ഫില്‍ട്ടറുകള്‍ എന്‍ഫോര്‍സ് ചെയ്യുക." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "ക്യാഷ് ശുദ്ധീകരിക്കുക" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspend network activity until all filter lists are loaded" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "ഇപ്പോള്‍ അപ്ഡേറ്റ് ചെയ്യുക" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "അപ്‌ഡേറ്റുചെയ്യുന്നു..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "ഉള്ളടക്കം കാണുക" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "ജി.ബി." - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "കെ.ബി." - }, - "MB": { - "description": "short for 'megabytes'", - "message": "എം.ബി." - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "ഫയലിലേക്ക് ബാക്അപ്" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "എന്‍റെ-യുബ്ലോക്ക്-ബാക്ക്അപ്_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO- യുടെ സ്വന്തം ഫിൽട്ടർ ലിസ്റ്റുകൾ ഇനിപ്പറയുന്നവയിൽ സ്വതന്ത്രമായി ഹോസ്റ്റുചെയ്യുന്നു \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "ഒരു ഫിൽട്ടർ ലിസ്റ്റ് അപ്ഡേറ്റ് ചെയ്യേണ്ടിവരുമ്പോൾ ക്രമരഹിതമായി തിരഞ്ഞെടുത്ത CDN ഉപയോഗിക്കുന്നു" - }, - "aboutChangelog": { - "description": "", - "message": "മാറ്റങ്ങളുടെ ലോഗ്" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "സോര്‍സ് കോഡ് (ജിപിഎല്‍വി3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "കോണ്‍ട്രിബ്യൂട്ടര്‍മാര്‍" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "ബാഹ്യ ഡിപൻഡൻസികൾ (GPLv3- അനുയോജ്യമാണ്):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "ലിസ്റ്റുകൾ ഫിൽട്ടർ ചെയ്യുക" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "ഇതിനെ കുറിച്ച്" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "സ്വകാര്യതാ നയം" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "ഡീഫാള്‍ട്ട് സെറ്റിംഗ്സിലേക്ക് റീസ്റ്റോര്‍ ചെയ്യുക..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "എല്ലാ സെറ്റിങ്ങുകളും റിമൂവ് ചെയ്യപ്പെടും. അതിനു ശേഷം യുബ്ലോക്ക്ഒ റീസ്റ്റാര്‍ട്ട്‌ ചെയ്യപ്പെടും.\n\nയുബ്ലോക്ക്ഒ-യെ ഫാക്ടറി സെറ്റിങ്ങുകളിലേക്ക് റീസെറ്റ് ചെയ്യട്ടെയോ?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "ഫയലില്‍ നിന്നും റീസ്റ്റോര്‍ ചെയ്യുക..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "{{time}}ല്‍ ബാക്ക്അപ് ചെയ്യപ്പെട്ട ഡേറ്റ ഉപയോഗിച്ച് താങ്കളുടെ എല്ലാ സെറ്റിംഗ്സും ഓവര്‍ റൈറ്റ് ചെയ്യപ്പെടും. അതിനു ശേഷം യുബ്ലോക്ക്‌ഒ റീസ്റ്റാര്‍ട്ട്‌ ചെയ്യപ്പെടും.\n\nനിലവിലുള്ള എല്ലാ സെറ്റിങ്ങുകളും ഓവര്‍റൈറ്റ് ചെയ്യട്ടെയോ?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "ഡേറ്റ വായിക്കാന്‍ ഒക്കുന്നില്ല അല്ലെങ്കില്‍ അത് ഇന്‍വാലിഡ്‌ ആണ്" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "സോഴ്സ് കോഡ്" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "വിവർത്തനങ്ങൾ" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "വിപുലമായ ക്രമീകരണങ്ങൾ" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "മുന്നറിയിപ്പ്! നിങ്ങളുടെ സ്വന്തം ഉത്തരവാദിത്തത്തിൽ ഈ നൂതന ക്രമീകരണങ്ങൾ മാറ്റുക." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ - അസറ്റ് വ്യൂവർ" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "ലോഡുചെയ്യാൻ ക്ലിക്കുചെയ്യുക" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "ഈ ഉപകരണത്തിന്‍റെ പേര്:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "ക്ലൌഡ് സ്റ്റോറേജില്‍ നിന്ന് ഇമ്പോര്‍ട്ട് ചെയ്യുക" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "ക്ലൗഡ് സംഭരനിയില്‍ നിന്ന് ഇറക്കുമതി ചെയ്ത് നിലവിലെ ക്രമീകരണത്തില്‍ ലയിപ്പിക്കും" - }, - "cloudPush": { - "description": "tooltip", - "message": "ക്ലൌഡ് സ്റ്റോറേജിലേക്ക് എക്സ്പോര്‍ട്ട്‌ ചെയ്യുക" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "ഫ്രെയിമിലെ ഘടകം തടയുക ..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "ഫിൽട്ടർ ലിസ്റ്റിലേക്ക് സബ്സ്ക്രൈബ് ചെയ്യുക ..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "താൽക്കാലികമായി വലിയ മീഡിയ അനുവദിക്കുക" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "View source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "യുബ്ലോക്ക്ഒ - ഡാഷ്ബോര്‍ഡ്" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "മുന്നറിയിപ്പ്! നിങ്ങൾക്ക് സംരക്ഷിക്കാത്ത മാറ്റങ്ങളുണ്ട്" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "അവഗണിക്കുക" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "താമസിക്കുക" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "പിന്നിലേക്ക്‌ പോകുക" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "ഈ വിന്‍ഡോ ക്ലോസ് ചെയ്യുക" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Proceed" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "സ്ഥിരമായി" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "താല്‍ക്കാലികമായി" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "ഇതില്‍ കണ്ടെത്തി:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "പാരാമീറ്ററുകള്‍ ഇല്ലാതെ" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "{{hostname}}ലേക്ക് കര്‍ശന ബ്ലോക്കിംഗ് ഡിസേബിള്‍ ചെയ്യുക" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "താഴെ പറയുന്ന പേജ് ലോഡ് ചെയ്യുന്നത് യുബ്ലോക്ക് ഒറിജിന്‍ തടഞ്ഞിരിക്കുന്നു:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "ഈ ഫില്‍റ്റര്‍ കാരണം" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Page blocked" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} ദിവസങ്ങള്‍ക്ക്മുന്‍പ്" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} മണിക്കൂറുകള്‍ മുന്‍പ്" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} മിനിറ്റുകള്‍ മുന്‍പ്" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "ഒരു ദിവസം മുന്‍പ്" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "ഒരു മണിക്കൂര്‍ മുന്‍പ്" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "ഒരു മിനിറ്റ് മുന്‍പ്" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "{{url}} എന്നതിലേക്ക് കണക്റ്റ് ചെയ്യാനാകുന്നില്ല" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "അവസാനം, ഒരു കാര്യക്ഷമമായ ബ്ലോക്കര്‍. ലഘുവായ CPU, memory ഉപയോഗം." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "ഓഫ്" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "മാറ്റങ്ങൾ വരുത്തു" - }, - "genericBytes": { - "description": "", - "message": "ബൈറ്റുകള്‍" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "ക്ലിപ്പ്ബോർഡിലേയ്ക്ക് പകർത്തുക" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "ലോക്കുചെയ്‌ത സ്ക്രോളിംഗ് ടോഗിൾ ചെയ്യുക" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "റിവേര്‍ട്ട്" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Select all" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "സബ്മിറ്റ്" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "എല്ലാം" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "സീനിനു പിന്നില്‍" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "ലോഗ് എന്‍ട്രി ഫില്‍ട്ടര്‍ ചെയ്യുക" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "ഡൊമൈന്‍" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "ഫില്‍ട്ടര്‍" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "ടൈപ്പ്" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "യുആര്‍എല്‍" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "ലോഗർ മായ്‌ക്കുക" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "നിലവിലെ ടാബ്" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "DOM ഇൻസ്പെക്ടർ ടോഗിൾ ചെയ്യുക" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "സന്ദർഭം" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "ഫിൽട്ടർ ചെയ്യുക" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "ലിസ്റ്റ് ഫിൽട്ടർ ചെയ്യുക" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "വിശദാംശങ്ങൾ" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "പാർട്ടിത്വം" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "റൂട്ട് സന്ദർഭം" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "ഭരണം" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "തരം" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL\n" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "മാർക്ക്ഡ .ൺ" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "പ്ലെയിൻ" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "പട്ടിക" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "മേശ" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock ഉറവിട വിക്കി: ലോഗർ" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "ലോഗർ താൽക്കാലികമായി നിർത്തുക (ഇൻകമിംഗ് ഡാറ്റയെല്ലാം ഉപേക്ഷിക്കുക)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "പോപ്പ്അപ്പ് പാനൽ ടോഗിൾ ചെയ്യുക" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "ടാബ് ഉള്ളടക്കം വീണ്ടും ലോഡുചെയ്യുക" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "ഒന്നാം കക്ഷി" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "തേര്‍ഡ് പാര്‍ട്ടി" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "അനുവദനീയമാണ്" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "തടഞ്ഞു" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "തിരുത്തപ്പെട്ടത്" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "അല്ല" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "ലോഗർ ഫിൽട്ടറിംഗ് ഓപ്ഷനുകൾ" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "ലോഗർ ഫിൽട്ടറിംഗ് ടോഗിൾ ചെയ്യുക" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "ചുവടെയുള്ള മൂന്ന് നിബന്ധനകളും പാലിക്കാത്ത ലോഗർ എൻ‌ട്രികൾ സ്വപ്രേരിതമായി നിരസിക്കപ്പെടും:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}}സന്ദർഭം" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} ഫിൽട്ടർ / റൂൾ" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} പാർട്ടിത്വം" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} സമയം" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "നിരകൾ മറയ്‌ക്കുക:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "ലംബമായി വികസിപ്പിച്ച മോഡിൽ ഓരോ എൻട്രിക്കും {{input}} വരികൾ ഉപയോഗിക്കുക" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "അവസാന {{input}} മിനിറ്റുകളിൽ നിന്ന് എൻട്രികൾ സംരക്ഷിക്കുക" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "ഒരു ടാബിന് പരമാവധി {{input}} എൻ‌ട്രികൾ സംരക്ഷിക്കുക" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "ഒരു ടാബിന് പരമാവധി {{input}} പേജ് ലോഡുകൾ സംരക്ഷിക്കുക" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "സ്റ്റാറ്റിക് ഫില്‍ട്ടര്‍ \u003Ccode>{{filter}}\u003C/code> ഇതില്‍ കണ്ടെത്തി:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "നിലവിൽ പ്രവർത്തനക്ഷമമാക്കിയ ഏതെങ്കിലും ഫിൽട്ടർ ലിസ്റ്റുകളിൽ സ്റ്റാറ്റിക് ഫിൽട്ടർ കണ്ടെത്താൻ കഴിഞ്ഞില്ല" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "സ്റ്റാറ്റിക് ഫില്‍ട്ടറിങ്ങ്" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "URL {{action}} നെറ്റ്വർക്ക് അഭ്യർത്ഥനകൾ {{type}} {{br}} ഏത് URL വിലാസം പൊരുത്തപ്പെടുന്നു {{url}} {{br}}, ഒപ്പം {{origin}}, {{br}} {{importance}} an പൊരുത്തപ്പെടുന്ന ഒഴിവാക്കൽ ഫിൽട്ടർ ഉണ്ട്." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "അനുവദിക്കുക" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "എവിടെ നിന്നും" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "ഏതു ടൈപ്പും" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "ബ്ലോക്ക്‌ ചെയ്യുക" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "എന്നിരുന്നാലും" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "അങ്ങിനെ അല്ലെങ്കില്‍" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "\"{{origin}}\"ല്‍ നിന്നും" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "ടൈപ്പ് \"{{type}}\"" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "കോണ്‍ടെക്സ്റ്റ്:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "ഡൈനാമിക് യുആര്‍എല്‍ ഫില്‍ട്ടറിങ്ങ്" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "ടൈപ്പ്:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "ലോഗർ അൺപോസ് ചെയ്യുക" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "എലമെന്‍ഡ് ബ്ലോക്ക് ചെയ്യുക" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "സൗന്ദര്യ ഫില്‍ട്ടറുകള്‍" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "ക്ലിക്ക്, Ctrl - ക്ലിക്ക്" - }, - "pickerCreate": { - "description": "English: Create", - "message": "ക്രിയേറ്റ് ചെയ്യുക" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "നെറ്റ് ഫില്‍ട്ടറുകള്‍" - }, - "pickerPick": { - "description": "English: Pick", - "message": "പിക്ക് ചെയ്യുക" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "പ്രിവ്യൂ" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "പുറത്ത് കടക്കുക" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "ഫസ്റ്റ് പാര്‍ട്ടി സ്ക്രിപ്റ്റുകള്‍" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "തേര്‍ഡ് പാര്‍ട്ടി" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "തേര്‍ഡ് പാര്‍ട്ടി ഫ്രെയിമുകള്‍" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "മൂന്നാം പാര്‍ട്ടി സിഎസ്എസ്/ ചിത്രങ്ങള്‍" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "തേര്‍ഡ് പാര്‍ട്ടി സ്ക്രിപ്റ്റുകള്‍" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "എല്ലാം" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "ഈ പേജില്‍" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "ഈ പേജിൽ തടഞ്ഞു" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "അപേക്ഷകള്‍ ബ്ലോക്ക്‌ ചെയ്യപ്പെട്ടു" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "ഇന്‍സ്റ്റാളിനു ശേഷം" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "ഇൻസ്റ്റാളുചെയ്‌തതിനുശേഷം തടഞ്ഞു" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} അല്ലെങ്കില്‍ {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "ഡൊമെയ്‌നുകൾ കണക്റ്റുചെയ്‌തു" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{total}} ല്‍ നിന്നും {{count}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "കണക്റ്റ് ചെയ്യപ്പെട്ട ഡൊമൈനുകള്‍" - }, - "popupImageRulePrompt": { - "description": "", - "message": "ചിത്രങ്ങള്‍" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "ഇന്‍ലൈന്‍ സ്ക്രിപ്റ്റുകള്‍" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "കുറവ്" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "കൂടുതൽ" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "കോസ്മെറ്റിക് ഫിൽട്ടറിംഗ്" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "വലിയ മീഡിയ ഘടകങ്ങൾ" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "പോപ്പ്-അപ്പ് വിൻഡോകൾ" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "വിദൂര ഫോണ്ടുകൾ" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "ജാവാസ്ക്രിപ്റ്റ്" - }, - "popupOr": { - "description": "English: or", - "message": "അല്ലെങ്കില്‍" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "ക്ലിക്ക്: ഈ സൈറ്റില്‍ യുബ്ലോക്ക്ഒ ഡിസേബിള്‍/എനെബിള്‍ ചെയ്യാന്‍.\nCtrl + ക്ലിക്ക്: ഈ പേജില്‍ യുബ്ലോക്ക്ഒ ഡിസേബിള്‍/എനെബിള്‍ ചെയ്യാന്‍." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "ഈ സൈറ്റിനായി uBlock₀ പ്രവർത്തനരഹിതമാക്കാൻ ക്ലിക്കുചെയ്യുക.\n\nഈ പേജിൽ മാത്രം uBlock₀ പ്രവർത്തനരഹിതമാക്കാൻ Ctrl + ക്ലിക്കുചെയ്യുക." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "ഈ സൈറ്റിനായി uBlock₀ പ്രവർത്തനക്ഷമമാക്കാൻ ക്ലിക്കുചെയ്യുക." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "ഡാഷ്ബോര്‍ഡ് തുറക്കാന്‍ ക്ലിക്ക് ചെയ്യുക" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "ആഗോള നിയമങ്ങൾ: ഈ കോളത്തിലെ നിയമങ്ങൾ എല്ലാ സൈറ്റുകളിലും പ്രയോഗിക്കുന്ന നിയമങ്ങള് ആണ്." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "പ്രാദേശിക നിയമങ്ങൾ: ഈ കോളത്തിലെ നിയമങ്ങൾ നിലവിലെ സൈറ്റിലെ മാത്രം പ്രയോഗിക്കുന്ന.\nപ്രാദേശിക നിയമങ്ങൾ ആഗോള നിയമങ്ങൾ അതിലംഘിച്ച് പ്രവർത്തിക്കുന്നതായിരിക്കും." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "അപേക്ഷാ ലോഗിലേക്ക് പോകുക" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "ഈ സൈറ്റില്‍ സൗന്ദര്യ ഫില്‍ട്ടറുകള്‍ ടോഗ്ഗിള്‍ ചെയ്യുക" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "ഈ സൈറ്റിൽ കോസ്മെറ്റിക് ഫിൽ‌ട്ടറിംഗ് അപ്രാപ്‌തമാക്കാൻ ക്ലിക്കുചെയ്യുക" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "ഈ സൈറ്റിൽ കോസ്മെറ്റിക് ഫിൽ‌ട്ടറിംഗ് പ്രാപ്തമാക്കുന്നതിന് ക്ലിക്കുചെയ്യുക" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "ഈ സൈറ്റിനായി വലിയ മീഡിയ ഘടകങ്ങളുടെ തടയൽ ടോഗിൾ ചെയ്യുക" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "ഈ സൈറ്റിലെ വലിയ മീഡിയ ഘടകങ്ങൾ തടയാൻ ക്ലിക്കുചെയ്യുക" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "ഈ സൈറ്റിലെ വലിയ മീഡിയ ഘടകങ്ങളെ മേലിൽ തടയാൻ ക്ലിക്കുചെയ്യുക" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "ഈ സൈറ്റിലെ എല്ലാ പോപ്‌അപ്പുകളും ബ്ലോക്ക്‌ ചെയ്യുന്നത് ടോഗ്ഗിള്‍ ചെയ്യുക" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "ഈ സൈറ്റിലെ എല്ലാ പോപ്പ്അപ്പുകളും തടയാൻ ക്ലിക്കുചെയ്യുക" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "ഈ സൈറ്റിലെ എല്ലാ പോപ്പ്അപ്പുകളും മേലിൽ തടയാൻ ക്ലിക്കുചെയ്യുക" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "ഈ സൈറ്റില്‍ റിമോട്ട് ഫോണ്ടുകള്‍ ബ്ലോക്ക് ചെയ്യുന്നത് ടോഗ്ഗിള്‍ ചെയ്യുക" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "ഈ സൈറ്റിലെ വിദൂര ഫോണ്ടുകൾ തടയാൻ ക്ലിക്കുചെയ്യുക" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "ഈ സൈറ്റിൽ വിദൂര ഫോണ്ടുകൾ മേലിൽ തടയാൻ ക്ലിക്കുചെയ്യുക" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "ഈ സൈറ്റിൽ JavaScript അപ്രാപ്തമാക്കാൻ ക്ലിക്കുചെയ്യുക" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "ഈ സൈറ്റിൽ‌ ഇനിമുതൽ‌ JavaScript അപ്രാപ്‌തമാക്കുന്നതിന് ക്ലിക്കുചെയ്യുക" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "എലമെന്‍ഡ് പിക്കര്‍ മോഡില്‍ കടക്കുക" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "ഈ വെബ്‌സൈറ്റിൽ ഉള്ള പ്രശ്നങ്ങൾ അറിയിക്കുക " - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "നിങ്ങളുടെ മാറ്റങ്ങൾ പഴയപടി ആകാന്‍ ക്ലിക്കുചെയ്യുക." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "നിങ്ങളുടെ മാറ്റങ്ങൾ സ്ഥിരപെടുത്താന്‍ ക്ലിക്കുചെയ്യുക." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "ഘടക സപ്പർ മോഡ് നൽകുക" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "പതിപ്പ്" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "തടയൽ മോഡ് വിശ്രമിക്കുക" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "കമ്മിറ്റ്" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "എന്‍റെ-യുബ്ലോക്ക്-ഡൈനാമിക്-നിയമങ്ങള്‍_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "എഡിറ്റ്‌" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "കളയുക" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "സേവ്" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "ഫയലിലേക്ക് എക്സ്പോര്‍ട്ട്‌ ചെയ്യുക" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "നിയമത്തിന്‍റെ സിന്‍റ്റാക്സ്‌: \u003Ccode> സോര്‍സ് ഡെസ്റ്റിനേഷന്‍ ടൈപ്പ് ആക്ഷന്‍\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'> മുഴുനീള പ്രമാണം\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "താങ്കളുടെ ഡൈനാമിക് ഫില്‍റ്റര്‍ നിയമങ്ങളുടെ ലിസ്റ്റ്." - }, - "rulesImport": { - "description": "", - "message": "ഫയലില്‍ നിന്നും ഇമ്പോര്‍ട്ട് ചെയ്യുക..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "എന്‍റെ നിയമങ്ങള്‍" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "സ്ഥിര നിയമങ്ങള്‍" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "റിവേര്‍ട്ട്" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "അടുക്കുക:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "ലക്ഷ്യസ്ഥാനം" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "ഉറവിടം" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "റൂൾ തരം" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "താല്‍ക്കാലിക നിയമങ്ങള്‍" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "സ്ഥിര രീതി" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "ഓരോ സ്ഥിരസ്ഥിതി അടിസ്ഥാനത്തിലും ഈ സ്ഥിരസ്ഥിതി പെരുമാറ്റങ്ങൾ അസാധുവാക്കാനാകും" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "വിപുലമായ ക്രമീകരണങ്ങൾ" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Features suitable only for technical users" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "ഞാന്‍ ഒരു അഡ്വാന്‍സ്ഡ് യൂസര്‍ ആണ് (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'> വായിക്കേണ്ടത്\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "വിപുലമായ ക്രമീകരണങ്ങൾ" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Appearance" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "ക്ലൌഡ് സ്റ്റോറെജ് സപ്പോര്‍ട്ട് എനേബിള്‍ ചെയ്യുക" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "ബ്ലോക്ക് ചെയ്യപ്പെട്ട എലമെന്‍ഡുകള്‍ക്ക് പകരമായുള്ള പ്ലയ്സ്ഹോള്‍ഡറുകള്‍ മറയ്ക്കുക" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "വർണ്ണാന്ധതാ സൗഹാര്‍ദ്ദപരമായത്" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "ആവശ്യമായ ഇടങ്ങളില്‍ കോണ്‍ടെക്സ്റ്റ്‌ മെനു ഉപയോഗിക്കുക" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "ഹൈപര്‍ ലിങ്ക് ഓഡിറ്റിങ്ങ്/ബീക്കന്‍ ഡിസേബിള്‍ ചെയ്യുക" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "ഐക്കണില്‍ ബ്ലോക്ക് ചെയ്യപ്പെട്ട അപേക്ഷകളുടെ എണ്ണം കാണിക്കുക" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "അവസാന ബാക്ക്അപ്:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "അവസാന റീസ്റ്റോര്‍:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "സി‌എസ്‌പി റിപ്പോർട്ടുകൾ തടയുക" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "കോസ്മെറ്റിക് ഫിൽട്ടറിംഗ് പ്രവർത്തനരഹിതമാക്കുക" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "മീഡിയ ഘടകങ്ങളെക്കാൾ വലുത് തടയുക {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "വിദൂര ഫോണ്ടുകൾ തടയുക" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "ജാവാസ്ക്രിപ്റ്റ് അപ്രാപ്തമാക്കുക" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "ക്രമീകരണം" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "പ്രീ-ഫെച്ചിംഗ് ഡിസേബിള്‍ ചെയ്യുക (ബ്ലോക്ക് ചെയ്ത നെറ്റ്‌വര്‍ക്ക് അപേക്ഷകള്‍ക്ക് കണക്ഷന്‍ ലഭിക്കുന്നത് തടയുന്നതിന്)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Custom accent color" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Theme" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "ടൂള്ടിപ്പ് പ്രവർത്തനരഹിതമാക്കുക" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "കാനോനിക്കൽ പേരുകൾ അൺലോക്ക് ചെയ്യുക" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "വെബ്‌ആര്‍ടിസി ലോക്കല്‍ ഐ പി അഡ്രസുകള്‍ ലീക്ക് ചെയ്യുന്നത് തടയുക" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "ഒരു കുറുക്കുവഴി ടൈപ്പുചെയ്യുക" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "കുറുക്കുവഴികൾ" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "ഡാഷ്ബോര്‍ഡ് കാണിക്കുക" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "ലോഗ്ഗര്‍ കാണിക്കുക" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "യുബ്ലോക്ക്ഒ - നെറ്റ്‌വര്‍ക്ക് അപേക്ഷാ ലോഗ്" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "ഉപയോഗിച്ച സംഭരണം: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "സബ്‌സ്‌ക്രൈബുചെയ്യുക" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "യുബ്ലോക്ക്ഒ: താഴെ പറയുന്ന യുആര്‍എല്‍ താങ്കളുടെ കസ്റ്റം ഫില്‍റ്ററില്‍ ചേര്‍ക്കട്ടേയോ?\n\nടൈറ്റില്‍: \"{{title}}\"\nയുആര്‍എല്‍: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "സമാനമായ റിപോർട്ടുകൾ കാണുക" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "തുറക്കുക" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "സഹായം " - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "പുതിയ റിപ്പോർട്ട് നിർമ്മിക്കുക" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "പ്രമാണീകരണം" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Read the documentation at \u003Ccode>uBlock/wiki\u003C/code> to learn about all of uBlock Origin's features." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Questions and support" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter issues/website is broken" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Bug report" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Troubleshooting Information" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Report a filter issue" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "The web page…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pick an entry --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shows ads or ad leftovers" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has privacy-related issues" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfunctions when uBlock Origin is enabled" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Opens unwanted tabs or windows" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Address of the web page:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "മാറ്റങ്ങള്‍ അപ്ലേ ചെയ്യുക" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "എക്സ്പോര്‍ട്ട്‌" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "എന്‍റെ-യുബ്ലോക്ക്-വൈറ്റ്ലിസ്റ്റ്_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "ഇമ്പോര്‍ട്ടും കൂട്ടിചേര്‍ക്കലും ചെയ്യുക" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "വൈറ്റ് ലിസ്റ്റ്" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "യുബ്ലോക്ക്ഒ ഡിസേബിള്‍ ചെയ്യപ്പെടേണ്ട ഹോസ്റ്റ് നെയിമുകള്‍. ഒരു വരിയില്‍ ഒരു എന്‍ട്രി എന്ന രീതിയില്‍ ചേര്‍ക്കുക. ഇന്‍വാലിഡ്‌ ഹോസ്റ്റ് നെയിമുകള്‍ നിശബ്ദമായി ഇഗ്നോര്‍ ചെയ്യപെടും." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/mr/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/mr/messages.json deleted file mode 100644 index e48cc41..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/mr/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "बदल लागू करा" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "निर्यात करा" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "आयात आणि समावेश करा" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "आपले फिल्टर" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "बदल लागू करा" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "स्वयं-अद्यतन फिल्टर यादी." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "कालबाह्य" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "प्रति ओळ एक युआरएल. ओळी सह प्रिफिक्स ‘!’ कढे दुर्लक्ष केले जाईल. अवैध युआरएल शांतपणे दुर्लक्ष केले जाईल." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "जाहिराती" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "चिडवणाऱ्या गोष्टी" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "सानुकूल" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Built-in" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "मालवेअर डोमेन" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "बहुउद्देशीय" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "गोपनीयता" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "विभाग , भाषा" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignore generic cosmetic filters" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Import…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Last update: {{ago}}.\nClick to force an update." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "उअवरोधित होस्ट यांची सूची" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} वापरले {{total}} पैकी" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} नेटवर्क फिल्टर + {{cosmeticFilterCount}} उटणे फिल्टर :" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "A network error prevented the resource from being updated." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "तृतीय-पक्ष फिल्टर" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "\u003Cp>हा पर्याय \u003Ca href=\"https://adblockplus.org/en/faq_internal#elemhide\">अद्ब्लोक प्लस सुसंगत “घटक लपवणारे” फिल्टर\u003C/a>चे विश्लेषण आणि अंमलबजावणी सक्षम करतो. हे फिल्टर मूलत: उटणे आहेत, ते वेब पृष्ठावर घटक लपवतात जें व्हिज्युअल उपद्रव असल्याचे मानण्यात येतात आणि जे निव्वळ विनंती-आधारित फिल्टरिंग इंजिनद्वारे अवरोधित करणे शक्य नाही.\u003C/p>\u003Cp>हे वैशिष्ट्य सक्षम केले तर\u003Ci>म्यूब्लॉकचे\u003C/i> मेमरी पावलाचा ठसा वाढतो.\u003C/p>" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "उटणे फिल्टरना विश्लेषित करा आणि त्यांची अंमलबजावणी करा." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "सर्व कॅशे साफ करा" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspend network activity until all filter lists are loaded" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "आता अद्यतनित करा" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Updating…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "view content" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "फाइल वर बॅकअप करा..." - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO's own filter lists are freely hosted on the following \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "A randomly picked CDN is used when a filter list needs to be updated." - }, - "aboutChangelog": { - "description": "", - "message": "बदल नोंदी" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "स्त्रोत कोड (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "सहभागी" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "External dependencies (GPLv3-compatible):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filter lists" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "माहिती" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Privacy policy" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "मुळापासून सुरू करा..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "आपले सर्व सेटिंग्ज पुसले जातील, आणि म्यूब्लॉक रीस्टार्ट होईल .\n\nम्यूब्लॉक ला फॉक्टोरी सेटिंग्ज ला रीसेट करावे का?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "फाइल पासून पुनर्संचयित करा..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "आपले सर्व सेटिंग्ज ना खोडून {{time}} चा बॅकअप डेटा वापरला जाईल, आणि म्यूब्लॉक रीस्टार्ट होईल.\n\nसर्व विद्यमान सेटिंग्ज ना खोडून बॅकअप डेटा वापरावे का?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "The data could not be read or is invalid" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Source code" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Translations" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "प्रगत सेटिंग्ज" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Warning! Change these advanced settings at your own risk." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Asset viewer" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Click to load" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "This device name:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Import from cloud storage" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Import from cloud storage and merge with current settings" - }, - "cloudPush": { - "description": "tooltip", - "message": "Export to cloud storage" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Block element in frame…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subscribe to filter list…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Temporarily allow large media elements" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "View source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "म्यूब्लॉक — डैशबोर्ड" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Warning! You have unsaved changes" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignore" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Stay here" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Go back" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Close this window" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Proceed" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanently" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Temporarily" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Found in:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "without parameters" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Disable strict blocking for {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin has prevented the following page from loading:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Because of the following filter:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Page blocked" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} days ago" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} hours ago" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} minutes ago" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "a day ago" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "an hour ago" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "a minute ago" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "{{url}} ला कनेक्ट करण्यात अक्षम" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "शेवटी, एक कार्यक्षम ब्लॉकर क्रोमियम आधारित ब्राउझरांसाठी. सीपीयू आणि मेमरी वर सोपे जातो." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "off" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Apply changes" - }, - "genericBytes": { - "description": "", - "message": "bytes" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Copy to clipboard" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Toggle locked scrolling" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Revert" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Select all" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Submit" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "All" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Tabless" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filter logger content" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "डोमेन" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "फिल्टर" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "प्रकार" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "यूआरएल" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Clear logger" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Current tab" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Toggle the DOM inspector" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Context" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filter list" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Details" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partyness" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Root context" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Rule" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Type" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Plain" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "List" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Table" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: The logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pause logger (discard all incoming data)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Toggle the popup panel" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Reload the tab content" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1st-party" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3rd-party" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "allowed" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blocked" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modified" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Not" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Logger filtering options" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Toggle logger filtering" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Context" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/rule" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partyness" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Time" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Hide columns:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Use {{input}} lines per entry in vertically expanded mode" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Preserve entries from the last {{input}} minutes" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Preserve at most {{input}} entries per tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preserve at most {{input}} page loads per tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Static filter \u003Ccode>{{filter}}\u003C/code> found in:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Static filter could not be found in any of the currently enabled filter lists" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Static filter" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Allow" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "from anywhere" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "any type" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Block" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "even if" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "except when" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "from “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "type “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Context:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL rule" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Type:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Unpause logger" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "घटक अवरोधित करा" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "उटणे फिल्टर" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Ctrl - क्लिक करा" - }, - "pickerCreate": { - "description": "English: Create", - "message": "निर्माण करा" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "नेट फिल्टर" - }, - "pickerPick": { - "description": "English: Pick", - "message": "निवडा" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Preview" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "बाहेर पडा" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1st-party scripts" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "तृतीय पक्ष" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "3rd-party frames" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "तृतीय पक्षी css/चित्रे" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "3rd-party scripts" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "सर्व" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "या पृष्ठावर" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blocked on this page" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "विनंत्या अवरोधित" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "स्थापने पासून" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blocked since install" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} किंवा {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domains connected" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} पैकी {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domains connected" - }, - "popupImageRulePrompt": { - "description": "", - "message": "चित्रे" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "inline scripts" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Less" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "More" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Cosmetic filtering" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Large media elements" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Pop-up windows" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Remote fonts" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "किंवा" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "क्लिक करा : या साइटसाठी म्यूब्लॉक अक्षम/सक्षम.\n\nCtrl+क्लिक करा: फक्त या पृष्ठावर म्यूब्लॉक अक्षम." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Ctrl क्लिक करा फक्त या साइटवर म्यूब्लॉक बंद करण्यासाठी." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Ctrl क्लिक करा फक्त या साइटवर म्यूब्लॉक चालू करण्यासाठी." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "डॅशबोर्ड उघडण्यासाठी क्लिक करा" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Global rules: this column is for rules which apply to all sites." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "विनंती लॉग ला जा" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "या साइटसाठी कॉस्मेटिक फिल्टरिंग टॉगल करा" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click to disable cosmetic filtering on this site" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click to enable cosmetic filtering on this site" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "या साइटसाठी मोठ्या माध्यम घटक अवरोधित करणे टॉगल करा" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click to block large media elements on this site" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click to no longer block large media elements on this site" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "या साइटसाठी सर्व पॉपअप अवरोधित करणे टॉगल करा" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Click to block all popups on this site" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Click to no longer block all popups on this site" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Toggle the blocking of remote fonts for this site" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Click to block remote fonts on this site" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Click to no longer block remote fonts on this site" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Click to disable JavaScript on this site" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Click to no longer disable JavaScript on this site" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "घटक निवडक मोड प्रविष्ट करा" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Report an issue on this website" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Click to revert your changes." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Click to make your changes permanent." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Enter element zapper mode" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Version" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relax blocking mode" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Commit" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "संपादित करा" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Discard" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Save" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Export to file…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Rule syntax: \u003Ccode>source destination type action\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>full documentation\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "List of your dynamic filtering rules." - }, - "rulesImport": { - "description": "", - "message": "Import from file…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "माझे नियम" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "स्थायी नियम" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "मागे जा" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sort:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destination" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Source" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Rule type" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "अस्थायी नियम" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Default behavior" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "These default behaviors can be overridden on a per-site basis" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Advanced" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Features suitable only for technical users" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "I am an advanced user" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "प्रगत सेटिंग्ज" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Appearance" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Enable cloud storage support" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "अवरोधित घटकाचे प्लेसहोल्डर लपवा" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Color-blind friendly" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "जेथे योग्य तेथे संदर्भ मेनू याचा वापर करा" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Disable hyperlink auditing" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "अवरोधित विनंत्यांची संख्या चिन्हावर दाखवा" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "अंतिम बॅकअप:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "अखेरचे पुनर्संचयित:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Block CSP reports" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Disable cosmetic filtering" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Block media elements larger than {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Block remote fonts" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Disable JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "सेटिंग्ज" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Disable pre-fetching (to prevent any connection for blocked network requests)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Custom accent color" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Theme" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Disable tooltips" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Uncloak canonical names" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Prevent WebRTC from leaking local IP addresses" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Type a shortcut" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Shortcuts" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Show Dashboard" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Show Logger" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — लॉगर" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Storage used: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Subscribe" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Add the following URL to your custom filter lists?\n\nTitle: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Find similar reports" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Open" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Support" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Create new report" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentation" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Read the documentation at \u003Ccode>uBlock/wiki\u003C/code> to learn about all of uBlock Origin's features." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Questions and support" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter issues/website is broken" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Bug report" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Troubleshooting Information" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Report a filter issue" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "The web page…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pick an entry --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shows ads or ad leftovers" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has privacy-related issues" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfunctions when uBlock Origin is enabled" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Opens unwanted tabs or windows" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Address of the web page:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "बदल लागू करा" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "निर्यात करा" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "आयात आणि समावेश करा" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "श्वेतसूची" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "आपली होस्ट नावांची यादी ज्याचासाठी म्यूब्लॉक अक्षम केले जाईल. प्रति ओळ एक प्रविष्टी. अवैध होस्ट नावांकडे शांतपणे दुर्लक्ष केले जाईल." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ms/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ms/messages.json deleted file mode 100644 index 5a1c919..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ms/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Terapkan perubahan" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Dayakan penapis tersuai saya" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Eksport" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filter _ {{datetime}}. txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Import dan melampirkan" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Penapis saya" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Benarkan penapis tersuai yang memerlukan kepercayaan" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Jangan tambah penapis daripada sumber yang tidak dipercayai." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Terapkan perubahan" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Kemas kini auto senarai tapisan" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Usang." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Satu URL per garisan. URL yang tidak sah akan diabaikan secara senyap." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Iklan" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Kejengkelan" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Notis kuki" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Tersuai" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Terbina dalam" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Domain perisian hasad" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Pelbagai guna" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privasi" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Wilayah, bahasa" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Widget sosial" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Abaikan penapis kosmetik generik" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Penapis kosmetik generik adalah penapis kosmetik itu mengubah kesemua laman web. Mendayakan tetapan ini akan mengurangkan penggunaan memori dan overhed CPU dari laman web sebagai hasil pengendalian penapis kosmetik generik.\n\nIa disyorkan untuk mengaktifkan tetapan ini untuk peranti yang lemah." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Import..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Kemaskini terakhir: {{ago}}.\nKlik untuk memaksa kemas kini." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} digunakan dari {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} penapis rangkaian + {{cosmeticFilterCount}} penapis kosmetik dari:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Ralat rangkaian menghalang sumber dikemas kini.." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Senarai penapis" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Penapis kosmetik berkhidmat untuk menyembunyikan unsur-unsur dalam laman web yang disifatkan sebagai suatu gangguan visual, dan yang tidak mampu disekat oleh enjin tapisan berasaskan permintaan rangkaian." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Hurai dan kuatkuasakan tapisan kosmetik" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Bersihkan semua cache" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Gantung aktiviti rangkaian sehingga semua senarai penapis dimuatkan" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Kemas kini sekarang" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Sedang mengemaskini..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "melihat kandungan" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Sandarkan ke fail" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt\n" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Senarai penapis uBO sendiri dihoskan secara bebas di \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "CDN yang dipilih secara rawak digunakan apabila senarai penapis perlu dikemas kini" - }, - "aboutChangelog": { - "description": "", - "message": "Catatan perubahan" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Kod sumber (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Penyumbang" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Pergantungan luaran (serasi dengan GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Senarai penapis" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Mengenai" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Dasar privasi" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Tetapkan semula ke tetapan lalai ..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Semua tetapan anda akan dikeluarkan, dan uBlock₀ akan dimulakan semula.\n\nTetapkan semula uBlock₀ ke tetapan kilang?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Pulihkan dari fail ..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Semua tetapan anda akan ditimpa menggunakan data yang disandarkan pada {{time}}, dan uBlock₀ akan dimulakan semula.\n\nMenimpa semua tetapan yang ada menggunakan data yang disandarkan?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Data tidak dapat dibaca atau tidak sah" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Kod sumber" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Terjemahan" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Tetapan lanjut" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Amaran! Ubah tetapan lanjutan ini dengan risiko anda sendiri." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Pertonton aset" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Klik untuk memuatkan" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Nama peranti ini:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Import dari storan awan" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Import dari storan awan dan gabungkan dengan tetapan semasa" - }, - "cloudPush": { - "description": "tooltip", - "message": "Eksport ke storan awan" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Blok elemen dalam bingkai ..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Langgan ke senarai tapisan..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Biarkan sementara elemen media besar" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Lihat kod sumber…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Papan pemuka" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Amaran! Anda mempunyai perubahan yang tidak disimpan" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Abaikan" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Kekal" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Kembali" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Tutup tetingkap ini" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Teruskan" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Kekal" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Sementara" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Jangan beri amaran kepada saya lagi tentang laman web ini" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Dijumpai di:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "tanpa parameter" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Lumpuhkan sekatan ketat untuk {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin menghalang halaman berikut memuatkan:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Kerana penapis berikut:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Halaman disekat" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} hari yang lalu" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} jam yang lalu" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} minit yang lalu" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "sehari yang lalu" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "satu jam yang lalu" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "seminit yang lalu" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Ralat rangkaian: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Akhirnya, penyekat yang cekap. Tidak membebankan CPU dan memori." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "mati" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Terapkan perubahan" - }, - "genericBytes": { - "description": "", - "message": "bait" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Salin ke papan keratan" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Togol tatal terkunci" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Membalikkan" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Pilih semua" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Hantar" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Ralat: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Semua" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Tanpa tab" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "tapis kandungan catatan" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domain" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Penapis" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Jenis" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Kosongkan catatan" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Tab semasa" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Togol pemeriksa DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Konteks" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Penapis" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Senarai tapisan" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Butiran" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partyness" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Konteks akar" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Peraturan" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Jenis" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Penurunan harga" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Kosong" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Senarai" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Jadual" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Catatan" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Jedakan catatan (singkirkan semua data masuk)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Togol panel pop timbul" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Muat semula kandungan tab" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "pihak pertama" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "pihak ketiga" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "dibenarkan" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "disekat" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "diubah suai" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Bukan" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Pilihan tapisan catatan" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Togol penapis catatan" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Entri logger yang tidak memenuhi ketiga-tiga syarat di bawah akan dibuang secara automatik:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Konteks" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Tapis / peraturan" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Kesopanan" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Masa" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Sembunyikan lajur:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Gunakan baris {{input}} setiap entri dalam mod yang diluaskan secara menegak" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Simpan entri dari {{input}} minit terakhir" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Simpan paling banyak {{input}} entri setiap tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Simpan paling banyak {{input}} pemuatan halaman setiap tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Penapis statik \u003Ccode> {{filter}} \u003C/code> terdapat di:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Penapis statik tidak dapat dijumpai dalam daftar penapis yang diaktifkan sekarang" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Penapis statik" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} permintaan rangkaian {{type}} {{br}} alamat URL yang sesuai dengan {{url}} {{br}} dan mana yang berasal {{origin}}, {{br}} {{kepentingan} } ada penapis pengecualian yang sepadan." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Benarkan" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "dari mana-mana " - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "pelbagai jenis" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Sekat" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "walaupun" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "kecuali bila" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "dari “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "jenis “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Konteks:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Aturan URL" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Jenis:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Nyahjeda catatan" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Halang elemen" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Penapis Kosmetik" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klik, Ctrl-klik" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Cipta" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Penapis network" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Pilih" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Preview" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Keluar" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "Skrip parti pertama" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "pihak ketiga" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "kerangka" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "Kerangka parti ke-3" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/imej pihak ketiga" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "skrip" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "Skrip parti ke-3" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "semua" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "pada halaman ini" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Disekat di halaman ini" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "permintaan dihalang" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "sejak dipasang" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Disekat sejak dipasang" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} atau {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domain telah dihubungkan" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} daripada {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "Domain telah dihubungkan" - }, - "popupImageRulePrompt": { - "description": "", - "message": "gambar" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "Skrip dalam ayat" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Kurangkan" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Lagi" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Tapisan kosmetik" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Unsur-unsur media besar" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Tingkap timbul" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Font tersendiri" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "atau" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klik: tutup/aktifkan uBlock₀ untuk laman web ini.\n\nCtrl+klik: tutupkan uBlock₀ pada halaman ini sahaja." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Kilk untuk nyahdayakan uBlock₀ untuk laman web ini.\n\nCtrl+klik untuk nyahdayakan uBlock₀ hanya di halaman ini." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Klik untuk mendayakan uBlock₀ untuk laman web ini." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Klik untuk membuka dashboard" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Peraturan global: lajur ini adalah untuk peraturan yang dikuatkuasakan untuk semua laman." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Peraturan tempatan: lajur ini adalah untuk peraturan yang dikuatkuasakan untuk laman semasa sahaja.\nPeraturan tempatan menolak peraturan global." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Buka pengelog" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Togol penapis kosmetik untuk laman ini" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klik untuk mematikan penapisan kosmetik di laman ini" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klik untuk mengaktifkan penapisan kosmetik di laman ini" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Togol penghalang semua elemen media besar untuk laman ini" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klik untuk menyekat elemen media yang besar di laman ini" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klik untuk berhenti menyekat elemen media yang besar di laman ini" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Togol penghalang untuk segala pop timbul laman ini" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klik untuk menyekat semua pop timbul di laman ini" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klik untuk berhenti menyekat semua pop timbul di laman ini" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Togol menyekat fon terpencil untuk laman web ini" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klik untuk menyekat fon jauh di laman ini" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klik untuk berhenti menyekat fon jauh di laman ini" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klik untuk hilangkan keupayaan JavaScript di halaman ini" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klik untuk berhenti hilangkan keupayaan JavaScript di halaman ini" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Memasuki mod pemetik elemen" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Laporkan masalah tentang laman web ini" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Klik untuk memungkiri perubahan anda." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Klik untuk membuat perubahan anda kekal." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Masuk mod pilihan elemen" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versi" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Tenang mod menyekat" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Keterikatan" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt\n" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Edit" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Batal" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Simpan" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Eksport ke fail" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Sintaks peraturan: \u003Ccode> tindakan jenis tujuan sumber \u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'> dokumentasi lengkap \u003C/a> )." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Senaraikan peraturan penapisan dinamik anda." - }, - "rulesImport": { - "description": "", - "message": "Import dari fail..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Peraturan saya" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Peraturan kekal" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Bebalik" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Susun:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destinasi" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Sumber" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Jenis peraturan" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Peraturan sementara" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Kelakuan lalai" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Tingkah laku lalai ini boleh diatasi secara per-halaman" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Lanjutan" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Features suitable only for technical users" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Saya adalah pengguna mahir (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>memerlukan pembacaan\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "tetapan lanjutan" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Appearance" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Membolehkan sokongan storan awangan" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Sembunyikan simbol unsur-unsur yang disekat" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Mesra buta warna" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Gunakan menu konteks yang sesuai" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Nyahaktifkan pengauditan hiperpautan" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Tunjukkan nombor permintaan yang disekat di atas ikon" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Sandaran lalu:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Pemulihan lalu:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Sekat laporan CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Lumpuhkan tapisan kosmetik" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Sekat unsur-unsur media yang lebih besar dari {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Sekat fon terpencil" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Lumpuhkan JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Tetapan" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Lumpuhkan pra-ambilan (untuk mengelakkan apa-apa sambungan untuk permintaan rangkaian yang disekat)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Custom accent color" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Menutupkan mesej bantuan" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Mendedahkan nama kanonik" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Mencegah WebRTC dari membocorkan alamat IP tempatan" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Taipkan jalan pintas" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Pintasan" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Tunjukkan Papan Pemuka" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Tunjukkan Pencatat" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Catatan" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Storan yang digunakan: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Langgan" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Tambahkan URL berikut ke senarai penapis tersuai anda?\n\nTajuk: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Cari laporan yang serupa" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Buka" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Sokongan" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Hitamkan" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Cipta laporan baru" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Pendokumenan" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Baca pendokumenan di \u003Ccode>uBlock/wiki\u003C/code> untuk belajar tentang kesemua ciri-ciri uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Soalan dan sokongan" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Menjawab soalan dan pelbagai sokongan disediakan di subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Masalah penapisan/laman web rosak" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Laporkan masalah penapisan di laman web tertentu di \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> pengesan masalah\u003C/span>. Memerlukan akaun GitHub." - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Penting:\u003C/b> Elakkan menggunakan penyekat-penyekat lain yang serupa dengan uBlock Origin, kerana ia menimbulkan masalah penapis di laman web tertentu." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tip:\u003C/b> Pastikan senarai penapis kamu dikemaskinikan \u003Cspan data-url=\"logger-ui.html#_\">\tPencatat\u003C/span> adalah peralatan utama untuk memeriksa masalah yang berkaitan penapis." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Laporan pepijat" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Laporkan masalah dengan uBlock Origin sendiri ke \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> pengesan masalah\u003C/span>. Memerlukan akaun GitHub." - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Informasi Pencarisilapan" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Berikut adalah maklumat teknikal yang mungkin berguna ketika sukarelawan berusaha membantu anda menyelesaikan masalah." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Penting:\u003C/b>Maklumat yang bersifat sensitif dan peribadi dihitamkan secara lalai. Maklumat yang dihitamkan berkemungkinan sukar untuk menyelesaikan masalah. " - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Labelkan laman web itu sebagai \"NSFW\" (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Laporkan masalah berkaitan penapis" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Untuk menggelakkan bebanan penyumbang dengan laporan pendua, sila mengesahkan bahawa isu itu belum dilaporkan." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Senarai penapis dikemas kini setiap hari. Pastikan isu anda belum ditangani dalam senarai penapis terbaharu." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Sahkan bahawa isu itu masih wujud selepas memuat semula halaman web yang bermasalah." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Laman web..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pilih entri --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Tunjuk iklan dan baki iklan tertinggal" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Mempunyai panel dan gangguan lain" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Mengesan uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Mempunyai masalah berkaitan privasi" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Rosak pabila uBlock Origin didayakan" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Membuka tab atau tetingkap yang tidak diingini" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Alamat laman web:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Nyahhitamkan" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Togol penapis kosmetik" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Togol JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Tidak dapat menapis dengan betul semasa pelancaran pelayar. Muat semula halaman untuk memastikan penapisan yang betul." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Terapkan perubahan" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Eksport" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt\n" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Import dan melampirkan" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Halaman dipercayai" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Arahan laman web yang dipercayai menentukan halaman web mana uBlock Origin harus dilumpuhkan. Satu penyertaan setiap baris. Arahan tidak sah akan diam-diam diabaikan dan dikomentari." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/nb/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/nb/messages.json deleted file mode 100644 index 41724b1..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/nb/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Bruk endringer" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Aktiver mine egendefinerte filtre" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Eksporter…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "mine-ublock-statiske-filtre_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importer og legg til…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Mine filtre" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Tillat egendefinerte filtre som krever tiltro" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Ikke legg til filtre fra ikke-betrodde kilder." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Bruk endringer" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Automatisk oppdatering av filterlister" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Utgått på dato" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "En nettadresse per linje. Ugyldige nettadresser ignoreres stille." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Reklame" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Irritasjonsmomenter" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Infokapselmeldinger" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Egendefinert" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Innebygd" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Beskyttelse mot skadelig programvare, sikkerhet" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multi-formål" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Personvern" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regioner, språk" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Sosiale mediers moduler" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignorer generelle kosmetiske filtre" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Generelle kosmetiske filtre er de kosmetiske filtrene som er ment å brukes på alle nettsteder. Aktivering av dette alternativet vil eliminere ekstra minne- og prosessorbruk på nettsider grunnet håndteringen av generelle kosmetiske filtre.\n\nDet anbefales å aktivere dette alternativet på mindre kraftige enheter." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importer…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Siste oppdatering: {{ago}}.\nKlikk for å framtvinge en oppdatering." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} brukt av {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} nettverksfiltre + {{cosmeticFilterCount}} kosmetiske filtre fra:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "En nettverksfeil forhindret ressursen i å bli oppdatert." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filterlister" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Kosmetiske filtre tjener den hensikt å skjule elementer i en nettside som anses for å være en visuell ulempe, og som ikke blokkeres av de nettverkforespørselsbaserte filtreringsmotorene." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Analyser og bruk kosmetiske filtre" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Tøm alle hurtigbuffere" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Stans nettverksaktivitet inntil alle filterlister er lastet" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Oppdater nå" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Oppdaterer…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "Vis innhold" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Sikkerhetskopier til fil…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "min-ublock-sikkerhetskopi_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBlock Origins egne filterlister finnes fritt tilgjengelig hos følgende \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN-er\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "En tilfeldig valgt CDN blir brukt når en filterliste trenger å bli oppdatert." - }, - "aboutChangelog": { - "description": "", - "message": "Endringslogg" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Kildekode (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Bidragsytere" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Eksterne avhengigheter (GPLv3-kompatible):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filterlister" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Om" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Personvernpraksis" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Tilbakestill til standardinnstillinger…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Alle dine innstillinger blir fjernet, og uBlock₀ vil starte på nytt.\n\nTilbakestille uBlock₀ til opprinnelige innstillinger?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Gjenopprett fra fil…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Alle dine innstillinger vil bli overskrevet med data sikkerhetskopiert {{time}}, og uBlock₀ vil starte på nytt.\n\nOverskrive alle eksisterende innstillinger med sikkerhetskopierte data?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Dataene kunne ikke leses eller er ugyldige" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Kildekode" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Oversettelser" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Avanserte innstillinger" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Advarsel! Endringer av de avanserte innstillingene skjer på eget ansvar." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Ressursviser" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Klikk for å laste" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Denne enhets navn:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Importer fra nettlagring" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importer fra nettlagring og slå sammen med gjeldende innstillinger" - }, - "cloudPush": { - "description": "tooltip", - "message": "Eksporter til nettlagring" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Blokker element i ramme…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Abonner på filterliste…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Tillat store mediaelementer midlertidig" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Vis kildekode…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Dashbord" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Advarsel! Du har ulagrede endringer" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignorer" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Bli her" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Gå tilbake" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Lukk dette vinduet" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Fortsett" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanent" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Midlertidig" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Ikke varsle igjen om dette nettstedet" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Funnet i:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "uten parametere" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Slå av streng (fullstendig) blokkering for {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin har forhindret lasting av følgende side:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "På grunn av følgende filter:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Side blokkert" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} dager siden" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} timer siden" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} minutter siden" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "en dag siden" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "en time siden" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "et minutt siden" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Nettverksfeil: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Endelig en effektiv blokkeringsutvidelse. Lavt CPU- og minnebruk." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "av" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Bruk endringer" - }, - "genericBytes": { - "description": "", - "message": "bytes" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopier til utklippstavle" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Slå av/på låst rulling" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Tilbakestill" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Merk alt" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Send" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Feil: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Alle" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Faneløs" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtrer logginnhold" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domene" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filter" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Type" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "Nettadresse" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Tøm loggen" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Gjeldende fane" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Slå av/på DOM-inspektør" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Kontekst" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filterliste" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Detaljer" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partsrelasjon" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Rotkontekst" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Regel" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Type" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "Nettadresse" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Uformatert" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Liste" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabell" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Loggen" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Sett loggen i pausemodus (forkast alle innkommende data)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Slå av/på oppsprettspanelet" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Last faneinnholdet på nytt" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "førstepart" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "tredjepart" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "tillatt" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blokkert" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "hendelsesrik" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "endret" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Ikke" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Alternativer for loggfiltrering" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Slå av/på loggfiltrering" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Loggoppføringer som ikke oppfyller alle tre betingelser nedenfor blir automatisk forkastet:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Kontekst" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/regel" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partsrelasjon" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Tid" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Skjul kolonner:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Bruk {{input}} linjer per oppføring i vertikalt utvidet modus" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Bevar oppføringer fra de siste {{input}} minuttene" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Bevar maksimalt {{input}} oppføringer per fane" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Bevar maksimalt {{input}} sideinnlastinger per fane" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Statisk filter \u003Ccode>{{filter}}\u003C/code> funnet i:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Statisk filter ble ikke funnet i noen av filterlistene som er aktiverte nå" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statisk filter" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} nettverksforespørsler av {{type}} {{br}}som matcher nettadressen {{url}} {{br}}og som stammer {{origin}},{{br}}{{importance}} det er et matchende unntaksfilter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Tillat" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "fra hvor som helst" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "enhver type" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Blokker" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "selv om" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "unntatt når" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "fra “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "type “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Kontekst:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Nettadresseregel" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Type:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Gjenoppta logging" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Blokker element…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Kosmetiske filtre" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klikk, Ctrl-klikk" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Opprett" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Nettfiltre" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Velg" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Forhåndsvis" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Avslutt" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "førsteparts skript" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "tredjepart" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "ramme" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "tredjeparts rammer" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "tredjeparts CSS/bilder" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "skript" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "tredjeparts skript" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "alle" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "på denne siden" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokkert på denne siden" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "forespørsler blokkert" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "siden installering" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokkert siden installering" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domener tilkoblet" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} av {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domener tilkoblet" - }, - "popupImageRulePrompt": { - "description": "", - "message": "bilder" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "integrerte skript" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Mindre" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Mer" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Kosmetisk filtrering" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Store media­elementer" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Oppspretts-vinduer" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Eksterne skrifttyper" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "eller" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klikk: Deaktiver/aktiver uBlock₀ for dette nettstedet.\n\nCtrl+klikk: Deaktiver uBlock₀ bare på denne siden." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Klikk for å deaktivere uBlock₀ for dette nettstedet.\n\nCtrl+klikk for å deaktivere uBlock₀ bare på denne siden." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Klikk for å aktivere uBlock₀ for dette nettstedet." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Åpne dashbordet" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Globale regler: Denne kolonnen er for regler som gjelder alle nettsteder." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Lokale regler: Denne kolonnen er for regler som bare gjelder for det gjeldende nettstedet.\nLokale regler har prioritet foran globale regler." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Åpne loggen" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Slå av/på kosmetisk filtrering for dette nettstedet" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klikk for å slå av kosmetisk filtrering på dette nettstedet" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klikk for å slå på kosmetisk filtrering på dette nettstedet" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Slå av/på blokkering av store mediaelementer for dette nettstedet" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klikk for å blokkere store mediaelementer på dette nettstedet" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klikk for å ikke lenger blokkere store mediaelementer på dette nettstedet" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Slå av/på blokkering av alle oppspretts-vinduer for dette nettstedet" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klikk for å blokkere alle oppspretts-vinduer på dette nettstedet" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klikk for å ikke lenger blokkere alle oppspretts-vinduer på dette nettstedet" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Slå av/på blokkering av eksterne skrifttyper for dette nettstedet" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klikk for å blokkere eksterne skrifttyper på dette nettstedet" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klikk for å ikke lenger blokkere eksterne skrifttyper på dette nettstedet" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klikk for å slå av JavaScript på dette nettstedet" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klikk for å ikke lenger slå av JavaScript på dette nettstedet" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Gå til element­velger­modus" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Rapporter om problem på dette nettstedet" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Klikk for å tilbakestille endringer." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Klikk for å gjøre endringer permanente." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Gå til element­fjernings­modus" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versjon" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Lemp på blokkeringsmodus" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Send" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "mine-ublock-dynamiske-regler_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Rediger" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Forkast" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Lagre" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Eksporter til fil…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Regelsyntaks: \u003Ccode>kilde destinasjon type handling\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>full dokumentasjon\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Liste over dine dynamiske filtreringsregler." - }, - "rulesImport": { - "description": "", - "message": "Importer fra fil…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Mine regler" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Permanente regler" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Tilbakestill" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sorter:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destinasjon" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Kilde" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Regeltype" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Midlertidige regler" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Standard virkemåte" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Disse standard virkemåtene kan overstyres for hvert enkelt nettsted" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Avansert" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Funksjoner kun egnet for tekniske brukere" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Jeg er en avansert bruker" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "Avanserte innstillinger" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Utseende" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Aktiver støtte for nettlagring" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Skjul blokkerte elementers plassholdere" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Fargeblind-vennlig" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Gjør bruk av høyreklikkmeny der det er hensiktsmessig" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Deaktiver lenkesporing" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Vis antall blokkerte forespørsler på ikonet" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Siste sikkerhetskopi:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Siste gjenoppretting:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Blokker CSP-rapporter" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Deaktiver kosmetisk filtrering" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Blokker mediaelementer større enn {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Blokker eksterne skrifttyper" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Deaktiver JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Innstillinger" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Deaktiver forhåndshenting (for å hindre enhver tilkobling for blokkerte nettverksforespørsler)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Tilpasset aksentfarge" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Deaktiver hjelpetekst (verktøytips)" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "CNAME-avdekking" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Hindre WebRTC i å lekke lokale IP-adresser" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Oppfør en snarvei" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Snarveier" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Vis dashbord" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Vis logg" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Logg" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Brukt lagringsplass: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Abonner" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Legge til følgende nettadresse i din egendefinerte filterliste?\n\nTittel: \"{{title}}\"\nNettadresse: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Finn lignende rapporter" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Åpne" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Brukerstøtte" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Rediger" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Opprett ny rapport" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentasjon" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Les dokumentasjonen på \u003Ccode>uBlock/wiki\u003C/code> for å lære om alle uBlock Origins funksjoner." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Spørsmål og brukerstøtte" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Svar på spørsmål og andre typer hjelp er gitt på subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filterproblemer/nettside defekt" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Rapporter filterproblemer med bestemte nettsteder til \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> problemsporing\u003C/span>. \u003Cu>Krever en GitHub-konto.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Viktig:\u003C/b> Unngå å bruke andre blokkerere med lignende formål sammen med uBlock Origin, da dette kan forårsake filterproblemer på bestemte nettsteder." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Sørg for at filterlistene dine er oppdaterte. \u003Cspan data-url=\"logger-ui.html#_\">Loggen\u003C/span> er primærverktøyet for å diagnostisere filterrelaterte problemer." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Feilrapport" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Rapporter problemer med selve uBlock Origin til \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> problemsporing\u003C/span>. \u003Cu>Krever en GitHub-konto.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Problemløsingsinformasjon" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Nedenfor er teknisk informasjon som kan være nyttig når frivillige prøver å hjelpe deg med å løse et problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Viktig:\u003C/b> Potensielt privat eller sensitiv informasjon blir redigert som standard. Redigert informasjon kan gjøre det vanskeligere å løse et problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Merk nettsiden som “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>) (advarsel mot sider med upassende innhold)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Rapporter om filterproblem" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "For å unngå å belaste frivillige med duplikate rapporter, kontroller at problemet ikke allerede er rapportert." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filterlister oppdateres daglig. Forsikre deg om at problemet ikke har blitt løst allerede i de nyeste filterlistene." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verifiser at problemet fremdeles eksisterer etter å ha lastet den problematiske nettsiden på nytt." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Nettsiden…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Velg en type --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Viser reklame eller reklamerester" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Har overlegg eller andre ulemper" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detekterer uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Har personvernrelaterte problemer" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Fungerer ikke riktig når uBlock Origin er aktivert" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Åpner uønskede faner eller vinduer" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Nettsidens adresse:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Ikke rediger" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Slå av/på kosmetisk filtrering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Slå av/på JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Kan ikke filtrere riktig ved nettleseroppstart. Last siden på nytt for å sikre riktig filtrering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Bruk endringer" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Eksporter…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "mine-ublock-betrodde-sider_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importer og legg til…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Betrodde sider" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Direktivene for betrodde sider bestemmer hvilke nettsider uBlock Origin ikke skal være aktiv på. Én oppføring per linje." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/nl/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/nl/messages.json deleted file mode 100644 index 5693117..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/nl/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Wijzigingen toepassen" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Mijn aangepaste filters inschakelen" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Exporteren…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "mijn-ublock-statische-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importeren en toevoegen…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Mijn filters" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Aangepaste filters die vertrouwen vereisen toestaan" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Voeg geen filters van niet-vertrouwde bronnen toe." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Wijzigingen toepassen" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Filterlijsten automatisch bijwerken" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Verouderd." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Eén URL per regel. Ongeldige URL’s worden zonder mededeling genegeerd." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Advertenties" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Storende elementen" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookiemeldingen" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Aangepast" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Ingebouwd" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Bescherming tegen malware, beveiliging" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multifunctioneel" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privacy" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Gebieden, talen" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Sociale widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Algemene cosmetische filters negeren" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Algemene cosmetische filters zijn die cosmetische filters die zijn bedoeld om op alle websites te worden toegepast. Het inschakelen van deze optie elimineert de aan webpagina’s toegevoegde geheugen- en cpu-overhead als gevolg van het verwerken van algemene cosmetische filters.\n\nHet wordt aanbevolen deze optie op minder krachtige apparaten in te schakelen." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importeren…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Laatst bijgewerkt: {{ago}}.\nKlik om een update af te dwingen." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lijst van geblokkeerde hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} van de {{total}} gebruikt" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} netwerkfilters + {{cosmeticFilterCount}} cosmetische filters van:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Een netwerkfout heeft voorkomen dat de bron werd bijgewerkt." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filterlijsten" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Cosmetische filters dienen voor het verbergen van elementen in een webpagina die visueel storend kunnen zijn en niet door de op netwerkaanvragen gebaseerde filter-engines kunnen worden geblokkeerd." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Cosmetische filters inlezen en toepassen" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Alle caches legen" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Netwerkactiviteit onderbreken totdat alle filterlijsten zijn geladen" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Nu bijwerken" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Bijwerken…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "inhoud weergeven" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Back-up maken naar bestand…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "mijn-ublock-back-up_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO’s eigen filterlijsten zijn gratis beschikbaar op de volgende \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN’s\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Als een filterlijst moet worden bijgewerkt, wordt een willekeurig gekozen CDN gebruikt." - }, - "aboutChangelog": { - "description": "", - "message": "Wijzigingenlogboek" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Broncode (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Medewerkers" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Externe afhankelijkheden (GPLv3-compatibel):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filterlijsten" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Over" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Privacybeleid" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Standaardinstellingen terugzetten…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Al uw instellingen zullen worden verwijderd, waarna uBlock₀ wordt herstart.\n\nStandaardinstellingen van uBlock₀ terugzetten?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Terugzetten uit bestand…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Al uw instellingen zullen met back-upgegevens van {{time}} worden overschreven, en uBlock₀ zal worden herstart.\n\nWilt u alle bestaande instellingen met back-upgegevens overschrijven?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "De gegevens konden niet worden gelezen of zijn ongeldig" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Broncode" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Vertalingen" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Geavanceerde instellingen" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Waarschuwing! Wijzig deze geavanceerde instellingen op eigen risico." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ – Middelenviewer" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Klik om te laden" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Naam van dit apparaat:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Importeren uit cloudopslag" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importeren uit cloudopslag en samenvoegen met huidige instellingen" - }, - "cloudPush": { - "description": "tooltip", - "message": "Exporteren naar cloudopslag" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Element in frame blokkeren…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Abonneren op filterlijst…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Grote media-elementen tijdelijk toestaan" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Broncode weergeven…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ – Dashboard" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Waarschuwing! Niet-opgeslagen wijzigingen" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Negeren" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Hier blijven" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Teruggaan" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Dit venster sluiten" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Doorgaan" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanent" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Tijdelijk" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Mij niet meer waarschuwen over deze website" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Gevonden in:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "zonder parameters" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Strenge blokkering voor {{hostname}} uitschakelen" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin heeft het laden van de volgende pagina voorkomen:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "vanwege het volgende filter:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Pagina geblokkeerd" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} dagen geleden" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} uur geleden" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} minuten geleden" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "een dag geleden" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "een uur geleden" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "een minuut geleden" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Netwerkfout: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Eindelijk, een efficiënte adblocker. Gebruikt weinig processorkracht en geheugen." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "uitgeschakeld" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Wijzigingen toepassen" - }, - "genericBytes": { - "description": "", - "message": "bytes" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopiëren naar klembord" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Vergrendeld scrollen in-/uitschakelen" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Ongedaan maken" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Alles selecteren" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Verzenden" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Fouten: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Alles" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Achter de schermen" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "loggerinhoud filteren" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domein" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filter" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Type" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Logger wissen" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Huidige tabblad" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "De DOM-inspector in-/uitschakelen" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Context" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filterlijst" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Details" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "1e/3e partij" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Hoofdcontext" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Regel" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Type" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Plat" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Lijst" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabel" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin-wiki: de logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Logger pauzeren (alle inkomende gegevens negeren)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Het pop-uppaneel in-/uitschakelen" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "De tabbladinhoud vernieuwen" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "huidige domein" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "van derden" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "toegestaan" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "geblokkeerd" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "afwisselend" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "aangepast" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Niet" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Opties voor loggerfiltering" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Loggerfiltering in-/uitschakelen" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Loggervermeldingen die niet aan alle drie de onderstaande voorwaarden voldoen, worden automatisch genegeerd:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Context" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/regel" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} 1e/3e partij" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Tijd" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Kolommen verbergen:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "{{input}} regels per vermelding in verticaal uitgevouwen modus gebruiken" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Vermeldingen van de laatste {{input}} minuten behouden" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Maximaal {{input}} vermeldingen per tabblad behouden" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Maximaal {{input}} paginalaadacties per tabblad behouden" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Statisch filter \u003Ccode>{{filter}}\u003C/code> gevonden in:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Statisch filter kon niet in een van de momenteel ingeschakelde filterlijsten worden gevonden" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statisch filter" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "Netwerkaanvragen van {{type}} {{action}}{{br}}waarvan de URL overeenkomt met {{url}} {{br}}en die {{origin}} afkomstig zijn,{{br}}{{importance}} er een overeenkomstig uitzonderingsfilter bestaat." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "toestaan" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "van overal" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "alle typen" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "blokkeren" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "zelfs als" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "behalve wanneer" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "van ‘{{origin}}’" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "type ‘{{type}}’" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Context:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL-regel" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Type:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Logger hervatten" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Element blokkeren…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Cosmetische filters" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klik, Ctrl-klik" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Aanmaken" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Netwerkfilters" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Kiezen" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Voorbeeld" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Afsluiten" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "scripts van de webpagina" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "van derden" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "frames van derden" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/afbeeldingen van derden" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "scripts van derden" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "alles" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "op deze pagina" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Geblokkeerd op deze pagina" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "geblokkeerde aanvragen" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "sinds installatie" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Geblokkeerd sinds installatie" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Verbonden domeinen" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} van {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "verbonden domeinen" - }, - "popupImageRulePrompt": { - "description": "", - "message": "afbeeldingen" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "inline scripts" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Minder" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Meer" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Cosmetische filters" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Grote media-elementen" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Pop-upvensters" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Externe lettertypen" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "of" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klikken: uBlock₀ voor deze website in- of uitschakelen.\n\nCtrl+klikken: uBlock₀ alleen voor deze pagina uitschakelen." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Klik om uBlock₀ voor deze website uit te schakelen.\n\nCtrl+klik om uBlock₀ alleen op deze pagina uit te schakelen." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Klik om uBlock₀ voor deze website in te schakelen." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Dashboard openen" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Algemene regels: deze kolom is voor regels die op alle websites van toepassing zijn." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Lokale regels: deze kolom is voor regels die alleen op de huidige website van toepassing zijn.\nLokale regels hebben voorrang op algemene regels." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Logger openen" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Cosmetische filters voor deze website in-/uitschakelen" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klik om cosmetische filters op deze website uit te schakelen" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klik om cosmetische filters op deze website in te schakelen" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Grote media-elementen voor deze website in-/uitschakelen" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klik om grote media-elementen op deze website te blokkeren" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klik om grote media-elementen op deze website niet meer te blokkeren" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Alle pop-ups voor deze website in-/uitschakelen" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klik om alle pop-ups op deze website te blokkeren" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klik om alle pop-ups op deze website niet meer te blokkeren" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Blokkeren van externe lettertypen voor deze website in-/uitschakelen" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klik om externe lettertypen op deze website te blokkeren" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klik om externe lettertypen op deze website niet meer te blokkeren" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klik om JavaScript op deze website uit te schakelen" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klik om JavaScript op deze website niet meer uit te schakelen" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Element­kiezer­modus openen" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Een probleem op deze website melden" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Klik om uw wijzigingen ongedaan te maken." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Klik om uw wijzigingen permanent te maken." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Element­wisser­modus openen" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versie" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Blokkeringsmodus beperken" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Vastleggen" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "mijn-ublock-dynamische-regels_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Bewerken" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Annuleren" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Opslaan" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Exporteren naar bestand…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Regelsyntaxis: \u003Ccode>bron bestemming type actie\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>volledige documentatie\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Lijst van uw dynamische filterregels." - }, - "rulesImport": { - "description": "", - "message": "Importeren uit bestand…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Mijn regels" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Permanente regels" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Terugzetten" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sorteren:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Bestemming" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Bron" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Regeltype" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Tijdelijke regels" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Standaardgedrag" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Van deze standaardgedragingen kan per website worden afgeweken" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Geavanceerd" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Alleen voor technische gebruikers geschikte functies" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Ik ben een ervaren gebruiker" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "geavanceerde instellingen" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Vormgeving" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Ondersteuning voor cloudopslag inschakelen" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Aanduidingen van geblokkeerde elementen verbergen" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Vriendelijk voor kleurenblinden" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Contextmenu gebruiken waar mogelijk" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Hyperlink auditing uitschakelen" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Het aantal geblokkeerde aanvragen op het pictogram tonen" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Laatste back-up:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Laatste terugzetactie:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "CSP-rapporten blokkeren" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Cosmetische filters uitschakelen" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Media-elementen groter dan {{input}} KB blokkeren" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Externe lettertypen blokkeren" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "JavaScript uitschakelen" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Instellingen" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Vooraf ophalen uitschakelen (om verbindingen voor geblokkeerde netwerkaanvragen te voorkomen)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Aangepaste accentkleur" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Thema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Tooltips uitschakelen" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Canonieke namen onthullen" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Het lekken van lokale IP-adressen via WebRTC voorkomen" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Typ een sneltoets" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Sneltoetsen" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Dashboard tonen" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Logger tonen" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ – Logger" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Gebruikte opslagruimte: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Abonneren" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "De volgende URL aan uw lijsten met aangepaste filters toevoegen?\n\nTitel: ‘{{title}}’\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Soortgelijke meldingen zoeken" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Openen" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Ondersteuning" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redigeren" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Nieuwe melding maken" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentatie" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Lees de documentatie op \u003Ccode>uBlock/wiki\u003C/code> voor meer info over alle functies van uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Vragen en ondersteuning" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Antwoorden op vragen en andere soorten ondersteuning worden geleverd op de subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filterproblemen/website werkt niet" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Meld filterproblemen met specifieke websites in de \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code>-probleemtracker\u003C/span>. \u003Cu>Vereist een GitHub-account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Belangrijk:\u003C/b> vermijd het gebruik van andere adblockers voor dezelfde doeleinden in combinatie met uBlock Origin, omdat dit op bepaalde websites problemen kan geven." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> zorg ervoor dat uw filterlijsten up-to-date zijn. \u003Cspan data-url=\"logger-ui.html#_\">De logger\u003C/span> is het primaire hulpmiddel voor het analyseren van filtergerelateerde problemen." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Bugmelding" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Meld problemen met uBlock Origin zelf in de \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>-probleemtracker\u003C/span>. \u003Cu>Vereist een GitHub-account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Probleemoplossingsinformatie" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Hieronder bevindt zich technische informatie die handig kan zijn wanneer vrijwilligers u proberen te helpen bij het oplossen van een probleem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Belangrijk:\u003C/b> mogelijk gevoelige of privégegevens worden standaard geredigeerd. Geredigeerde gegevens kunnen het oplossen van een probleem bemoeilijken." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "De webpagina labelen als ‘NSFW’ (\u003Ca href=\"https://nl.wikipedia.org/wiki/NSFW\">‘Not Safe For Work’\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Een filterprobleem melden" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Controleer of het probleem niet eerder is gemeld om te voorkomen dat vrijwilligers met dubbele meldingen worden belast." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filterlijsten worden dagelijks bijgewerkt. Controleer of uw probleem niet al in de meest recente filterlijsten is verholpen." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Controleer of het probleem nog steeds bestaat na vernieuwen van de problematische webpagina." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "De webpagina…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Maak een keuze --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Toont advertenties of restanten" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Heeft overlappingen of andere ongemakken" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detecteert uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Heeft privacy-gerelateerde problemen" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Werkt niet als uBlock Origin is ingeschakeld" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Opent ongewenste tabbladen of vensters" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Adres van de webpagina:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Redigeren ongedaan maken" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Cosmetische filters in-/uitschakelen" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "JavaScript in-/uitschakelen" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Kon niet goed filteren bij het starten van de browser. Vernieuw de pagina voor een juiste filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Wijzigingen toepassen" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Exporteren…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "mijn-ublock-vertrouwde-websites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importeren en toevoegen…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Vertrouwde websites" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "De vertrouwde-website-instructies schrijven voor op welke webpagina’s uBlock Origin dient te worden uitgeschakeld. Eén vermelding per regel." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/no/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/no/messages.json deleted file mode 100644 index 41724b1..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/no/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Bruk endringer" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Aktiver mine egendefinerte filtre" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Eksporter…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "mine-ublock-statiske-filtre_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importer og legg til…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Mine filtre" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Tillat egendefinerte filtre som krever tiltro" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Ikke legg til filtre fra ikke-betrodde kilder." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Bruk endringer" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Automatisk oppdatering av filterlister" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Utgått på dato" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "En nettadresse per linje. Ugyldige nettadresser ignoreres stille." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Reklame" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Irritasjonsmomenter" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Infokapselmeldinger" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Egendefinert" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Innebygd" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Beskyttelse mot skadelig programvare, sikkerhet" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multi-formål" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Personvern" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regioner, språk" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Sosiale mediers moduler" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignorer generelle kosmetiske filtre" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Generelle kosmetiske filtre er de kosmetiske filtrene som er ment å brukes på alle nettsteder. Aktivering av dette alternativet vil eliminere ekstra minne- og prosessorbruk på nettsider grunnet håndteringen av generelle kosmetiske filtre.\n\nDet anbefales å aktivere dette alternativet på mindre kraftige enheter." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importer…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Siste oppdatering: {{ago}}.\nKlikk for å framtvinge en oppdatering." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} brukt av {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} nettverksfiltre + {{cosmeticFilterCount}} kosmetiske filtre fra:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "En nettverksfeil forhindret ressursen i å bli oppdatert." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filterlister" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Kosmetiske filtre tjener den hensikt å skjule elementer i en nettside som anses for å være en visuell ulempe, og som ikke blokkeres av de nettverkforespørselsbaserte filtreringsmotorene." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Analyser og bruk kosmetiske filtre" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Tøm alle hurtigbuffere" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Stans nettverksaktivitet inntil alle filterlister er lastet" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Oppdater nå" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Oppdaterer…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "Vis innhold" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Sikkerhetskopier til fil…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "min-ublock-sikkerhetskopi_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBlock Origins egne filterlister finnes fritt tilgjengelig hos følgende \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN-er\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "En tilfeldig valgt CDN blir brukt når en filterliste trenger å bli oppdatert." - }, - "aboutChangelog": { - "description": "", - "message": "Endringslogg" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Kildekode (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Bidragsytere" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Eksterne avhengigheter (GPLv3-kompatible):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filterlister" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Om" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Personvernpraksis" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Tilbakestill til standardinnstillinger…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Alle dine innstillinger blir fjernet, og uBlock₀ vil starte på nytt.\n\nTilbakestille uBlock₀ til opprinnelige innstillinger?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Gjenopprett fra fil…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Alle dine innstillinger vil bli overskrevet med data sikkerhetskopiert {{time}}, og uBlock₀ vil starte på nytt.\n\nOverskrive alle eksisterende innstillinger med sikkerhetskopierte data?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Dataene kunne ikke leses eller er ugyldige" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Kildekode" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Oversettelser" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Avanserte innstillinger" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Advarsel! Endringer av de avanserte innstillingene skjer på eget ansvar." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Ressursviser" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Klikk for å laste" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Denne enhets navn:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Importer fra nettlagring" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importer fra nettlagring og slå sammen med gjeldende innstillinger" - }, - "cloudPush": { - "description": "tooltip", - "message": "Eksporter til nettlagring" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Blokker element i ramme…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Abonner på filterliste…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Tillat store mediaelementer midlertidig" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Vis kildekode…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Dashbord" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Advarsel! Du har ulagrede endringer" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignorer" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Bli her" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Gå tilbake" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Lukk dette vinduet" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Fortsett" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanent" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Midlertidig" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Ikke varsle igjen om dette nettstedet" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Funnet i:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "uten parametere" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Slå av streng (fullstendig) blokkering for {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin har forhindret lasting av følgende side:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "På grunn av følgende filter:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Side blokkert" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} dager siden" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} timer siden" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} minutter siden" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "en dag siden" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "en time siden" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "et minutt siden" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Nettverksfeil: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Endelig en effektiv blokkeringsutvidelse. Lavt CPU- og minnebruk." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "av" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Bruk endringer" - }, - "genericBytes": { - "description": "", - "message": "bytes" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopier til utklippstavle" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Slå av/på låst rulling" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Tilbakestill" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Merk alt" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Send" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Feil: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Alle" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Faneløs" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtrer logginnhold" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domene" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filter" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Type" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "Nettadresse" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Tøm loggen" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Gjeldende fane" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Slå av/på DOM-inspektør" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Kontekst" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filterliste" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Detaljer" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partsrelasjon" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Rotkontekst" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Regel" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Type" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "Nettadresse" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Uformatert" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Liste" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabell" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Loggen" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Sett loggen i pausemodus (forkast alle innkommende data)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Slå av/på oppsprettspanelet" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Last faneinnholdet på nytt" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "førstepart" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "tredjepart" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "tillatt" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blokkert" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "hendelsesrik" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "endret" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Ikke" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Alternativer for loggfiltrering" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Slå av/på loggfiltrering" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Loggoppføringer som ikke oppfyller alle tre betingelser nedenfor blir automatisk forkastet:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Kontekst" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/regel" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partsrelasjon" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Tid" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Skjul kolonner:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Bruk {{input}} linjer per oppføring i vertikalt utvidet modus" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Bevar oppføringer fra de siste {{input}} minuttene" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Bevar maksimalt {{input}} oppføringer per fane" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Bevar maksimalt {{input}} sideinnlastinger per fane" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Statisk filter \u003Ccode>{{filter}}\u003C/code> funnet i:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Statisk filter ble ikke funnet i noen av filterlistene som er aktiverte nå" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statisk filter" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} nettverksforespørsler av {{type}} {{br}}som matcher nettadressen {{url}} {{br}}og som stammer {{origin}},{{br}}{{importance}} det er et matchende unntaksfilter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Tillat" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "fra hvor som helst" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "enhver type" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Blokker" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "selv om" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "unntatt når" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "fra “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "type “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Kontekst:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Nettadresseregel" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Type:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Gjenoppta logging" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Blokker element…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Kosmetiske filtre" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klikk, Ctrl-klikk" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Opprett" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Nettfiltre" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Velg" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Forhåndsvis" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Avslutt" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "førsteparts skript" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "tredjepart" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "ramme" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "tredjeparts rammer" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "tredjeparts CSS/bilder" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "skript" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "tredjeparts skript" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "alle" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "på denne siden" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokkert på denne siden" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "forespørsler blokkert" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "siden installering" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokkert siden installering" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domener tilkoblet" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} av {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domener tilkoblet" - }, - "popupImageRulePrompt": { - "description": "", - "message": "bilder" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "integrerte skript" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Mindre" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Mer" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Kosmetisk filtrering" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Store media­elementer" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Oppspretts-vinduer" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Eksterne skrifttyper" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "eller" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klikk: Deaktiver/aktiver uBlock₀ for dette nettstedet.\n\nCtrl+klikk: Deaktiver uBlock₀ bare på denne siden." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Klikk for å deaktivere uBlock₀ for dette nettstedet.\n\nCtrl+klikk for å deaktivere uBlock₀ bare på denne siden." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Klikk for å aktivere uBlock₀ for dette nettstedet." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Åpne dashbordet" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Globale regler: Denne kolonnen er for regler som gjelder alle nettsteder." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Lokale regler: Denne kolonnen er for regler som bare gjelder for det gjeldende nettstedet.\nLokale regler har prioritet foran globale regler." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Åpne loggen" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Slå av/på kosmetisk filtrering for dette nettstedet" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klikk for å slå av kosmetisk filtrering på dette nettstedet" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klikk for å slå på kosmetisk filtrering på dette nettstedet" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Slå av/på blokkering av store mediaelementer for dette nettstedet" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klikk for å blokkere store mediaelementer på dette nettstedet" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klikk for å ikke lenger blokkere store mediaelementer på dette nettstedet" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Slå av/på blokkering av alle oppspretts-vinduer for dette nettstedet" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klikk for å blokkere alle oppspretts-vinduer på dette nettstedet" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klikk for å ikke lenger blokkere alle oppspretts-vinduer på dette nettstedet" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Slå av/på blokkering av eksterne skrifttyper for dette nettstedet" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klikk for å blokkere eksterne skrifttyper på dette nettstedet" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klikk for å ikke lenger blokkere eksterne skrifttyper på dette nettstedet" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klikk for å slå av JavaScript på dette nettstedet" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klikk for å ikke lenger slå av JavaScript på dette nettstedet" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Gå til element­velger­modus" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Rapporter om problem på dette nettstedet" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Klikk for å tilbakestille endringer." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Klikk for å gjøre endringer permanente." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Gå til element­fjernings­modus" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versjon" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Lemp på blokkeringsmodus" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Send" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "mine-ublock-dynamiske-regler_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Rediger" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Forkast" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Lagre" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Eksporter til fil…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Regelsyntaks: \u003Ccode>kilde destinasjon type handling\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>full dokumentasjon\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Liste over dine dynamiske filtreringsregler." - }, - "rulesImport": { - "description": "", - "message": "Importer fra fil…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Mine regler" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Permanente regler" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Tilbakestill" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sorter:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destinasjon" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Kilde" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Regeltype" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Midlertidige regler" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Standard virkemåte" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Disse standard virkemåtene kan overstyres for hvert enkelt nettsted" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Avansert" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Funksjoner kun egnet for tekniske brukere" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Jeg er en avansert bruker" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "Avanserte innstillinger" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Utseende" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Aktiver støtte for nettlagring" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Skjul blokkerte elementers plassholdere" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Fargeblind-vennlig" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Gjør bruk av høyreklikkmeny der det er hensiktsmessig" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Deaktiver lenkesporing" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Vis antall blokkerte forespørsler på ikonet" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Siste sikkerhetskopi:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Siste gjenoppretting:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Blokker CSP-rapporter" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Deaktiver kosmetisk filtrering" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Blokker mediaelementer større enn {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Blokker eksterne skrifttyper" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Deaktiver JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Innstillinger" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Deaktiver forhåndshenting (for å hindre enhver tilkobling for blokkerte nettverksforespørsler)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Tilpasset aksentfarge" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Deaktiver hjelpetekst (verktøytips)" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "CNAME-avdekking" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Hindre WebRTC i å lekke lokale IP-adresser" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Oppfør en snarvei" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Snarveier" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Vis dashbord" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Vis logg" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Logg" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Brukt lagringsplass: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Abonner" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Legge til følgende nettadresse i din egendefinerte filterliste?\n\nTittel: \"{{title}}\"\nNettadresse: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Finn lignende rapporter" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Åpne" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Brukerstøtte" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Rediger" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Opprett ny rapport" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentasjon" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Les dokumentasjonen på \u003Ccode>uBlock/wiki\u003C/code> for å lære om alle uBlock Origins funksjoner." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Spørsmål og brukerstøtte" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Svar på spørsmål og andre typer hjelp er gitt på subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filterproblemer/nettside defekt" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Rapporter filterproblemer med bestemte nettsteder til \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> problemsporing\u003C/span>. \u003Cu>Krever en GitHub-konto.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Viktig:\u003C/b> Unngå å bruke andre blokkerere med lignende formål sammen med uBlock Origin, da dette kan forårsake filterproblemer på bestemte nettsteder." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Sørg for at filterlistene dine er oppdaterte. \u003Cspan data-url=\"logger-ui.html#_\">Loggen\u003C/span> er primærverktøyet for å diagnostisere filterrelaterte problemer." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Feilrapport" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Rapporter problemer med selve uBlock Origin til \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> problemsporing\u003C/span>. \u003Cu>Krever en GitHub-konto.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Problemløsingsinformasjon" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Nedenfor er teknisk informasjon som kan være nyttig når frivillige prøver å hjelpe deg med å løse et problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Viktig:\u003C/b> Potensielt privat eller sensitiv informasjon blir redigert som standard. Redigert informasjon kan gjøre det vanskeligere å løse et problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Merk nettsiden som “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>) (advarsel mot sider med upassende innhold)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Rapporter om filterproblem" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "For å unngå å belaste frivillige med duplikate rapporter, kontroller at problemet ikke allerede er rapportert." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filterlister oppdateres daglig. Forsikre deg om at problemet ikke har blitt løst allerede i de nyeste filterlistene." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verifiser at problemet fremdeles eksisterer etter å ha lastet den problematiske nettsiden på nytt." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Nettsiden…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Velg en type --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Viser reklame eller reklamerester" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Har overlegg eller andre ulemper" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detekterer uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Har personvernrelaterte problemer" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Fungerer ikke riktig når uBlock Origin er aktivert" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Åpner uønskede faner eller vinduer" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Nettsidens adresse:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Ikke rediger" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Slå av/på kosmetisk filtrering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Slå av/på JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Kan ikke filtrere riktig ved nettleseroppstart. Last siden på nytt for å sikre riktig filtrering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Bruk endringer" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Eksporter…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "mine-ublock-betrodde-sider_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importer og legg til…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Betrodde sider" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Direktivene for betrodde sider bestemmer hvilke nettsider uBlock Origin ikke skal være aktiv på. Én oppføring per linje." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/oc/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/oc/messages.json deleted file mode 100644 index e115542..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/oc/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Aplicar las modificacions" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Exportar" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "mos-filtres-estatics-ublock_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importar e apondre" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Mos filtres" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Aplicar las modificacions" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Mesa a jorn auto de las listas" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Obsolèt." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "One URL per line. Invalid URLs will be silently ignored." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Publicitats" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Annoyances" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Personalizat" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Integrats" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Domenis malfasents" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multipurpose" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Confidencialitat" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regions, lengas" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignore generic cosmetic filters" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importar..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Darrièra actualizacion : {{ago}}.\nClicar per forçar la mesa a jorn." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} used out of {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "A network error prevented the resource from being updated." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Listas de filtre" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the network request-based filtering engines." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Parse and enforce cosmetic filters" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Purgar totes los caches" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspend network activity until all filter lists are loaded" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Metre a jorn ara" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Mesa a jorn..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "veire contengut" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "Go" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "Ko" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "Mo" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Back up to file…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO's own filter lists are freely hosted on the following \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "A randomly picked CDN is used when a filter list needs to be updated." - }, - "aboutChangelog": { - "description": "", - "message": "Jornal de modificacions" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Còdi font (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Contributors" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "External dependencies (GPLv3-compatible):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Listas de filtres" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "A prepaus" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Politica de confidencialitat" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Reset to default settings…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Restore from file…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "The data could not be read or is invalid" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Còdi font" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Traduccions" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Paramètres avançats" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Warning! Change these advanced settings at your own risk." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Visualizaira d’elements" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Clicatz per cargar" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Nom d’aqueste periferic :" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Import from cloud storage" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Import from cloud storage and merge with current settings" - }, - "cloudPush": { - "description": "tooltip", - "message": "Export to cloud storage" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Block element in frame…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subscribe to filter list…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Permetre temporàriament los elements mèdias larges" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "View source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Tablèu de bòrd" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Atencion ! Avètz de modificacions pas enregistradas" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignorar" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Demorar" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Tornar" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Tampar aquesta fenèstra" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Contunhar" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanentament" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Temporàriament" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "M’assabentar pas mai per aqueste site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Trobat dins :" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "without parameters" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Desactivar lo blocatge estric del domeni {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin a empachat lo cargament de la pagina seguenta :" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "A causa del filtre seguent :" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Pagina blocada" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "fa {{value}} jorns" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "fa {{value}} oras" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "fa {{value}} minutas" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "a un jorn" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "fa una ora" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "fa una minuta" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Network error: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Enfin un blocador eficaç. Sollicita pauc lo CPU e la memòria" - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "off" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Aplicar las modificacions" - }, - "genericBytes": { - "description": "", - "message": "octets" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Copiar al quichapapièrs" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Toggle locked scrolling" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Restablir" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Tot seleccionar" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Mandar" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Totes" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Tabless" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filter logger content" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domeni" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filtre" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Tipe" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Clear logger" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Onglet actual" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Toggle the DOM inspector" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Contèxte" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filtre" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Lista de filtre" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Detalhs" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partyness" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Root context" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Règla" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Tipe" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Brut" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Lista" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tablèu" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: The logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pause logger (discard all incoming data)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Toggle the popup panel" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Reload the tab content" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1st-party" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3rd-party" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "autorizat" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blocat" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modificat" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Not" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Logger filtering options" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Toggle logger filtering" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Context" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/rule" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partyness" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Time" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Hide columns:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Use {{input}} lines per entry in vertically expanded mode" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Preserve entries from the last {{input}} minutes" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Preserve at most {{input}} entries per tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preserve at most {{input}} page loads per tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Static filter \u003Ccode>{{filter}}\u003C/code> found in:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Static filter could not be found in any of the currently enabled filter lists" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Static filter" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Autorizar" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "from anywhere" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "any type" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Blocar" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "even if" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "except when" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "from “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "type “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Contèxte :" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Règla d’URL" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Tipe :" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Unpause logger" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Blocar un element..." - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Filtres cosmetics" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Click, Ctrl-click" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Crear" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Filtres ret" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Causir" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Apercebut" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Quitar" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1st-party scripts" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "Tèrça partida" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "3rd-party frames" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "3rd-party CSS/images" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "3rd-party scripts" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "totes" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "sus aquesta pagina" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blocats sus aquesta pagina" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "requèstas blocadas" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "dempuèi l’installacion" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blocats dempuèi l’installacion" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} o {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domenis connectats" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} de {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domenis connectats" - }, - "popupImageRulePrompt": { - "description": "", - "message": "imatges" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "scripts en una linha" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Mens" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Mai" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Filtres cosmetics" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Mèdias de granda talha" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Fenèstras sorgissentas" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Poliças distantas" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "o" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Clicatz per desactivar uBlock₀ per aqueste site\n\nCtrl+Clic per desactivar uBlock₀ sonque per aquesta pagina" - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Clicatz per activar uBlock₀ per aqueste site" - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Dobrir lo tablèu de bòrd" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Global rules: this column is for rules which apply to all sites." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Dobrir la visualizaira d’eveniments" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Toggle cosmetic filtering for this site" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click to disable cosmetic filtering on this site" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click to enable cosmetic filtering on this site" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Toggle the blocking of large media elements for this site" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Clicatz per blocar los mèdias de granda talha d’aqueste site" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Clicatz per blocar pas mai los mèdias de granda talha d’aqueste site" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Toggle the blocking of all popups for this site" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Clicatz per blocar las fenèstras sorgissentas d’aqueste site" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Clicatz per blocar pas mai las fenèstras sorgissentas d’aqueste site" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Toggle the blocking of remote fonts for this site" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Clicatz per blocar las poliças distantas d’aqueste site" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Clicatz per blocar pas mai las poliças distantas d’aqueste site" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Clicatz per desactivar JavaScript sus aqueste site" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Clicatz per quitar de desactivar JavaScript sus aqueste site" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Passar en mòde Selector" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Senhalar un problèma amb aqueste site web" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Click to revert your changes." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Click to make your changes permanent." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Passar en mòde Eliminador" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Version" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relax blocking mode" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Commit" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Modificar" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Anullar" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Enregistrar" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Export to file…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Rule syntax: \u003Ccode>source destination type action\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>full documentation\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "List of your dynamic filtering rules." - }, - "rulesImport": { - "description": "", - "message": "Import from file…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Mas règlas" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Règlas permanentas" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Revert" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Triar :" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destinacion" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Font" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Tipe de règla" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Règlas temporàrias" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Compòrtament per defaut" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "These default behaviors can be overridden on a per-site basis" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Avançat" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Features suitable only for technical users" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Soi un-a utilizaire-a avandat-ada" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "paramètres avançats" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Aparéncia" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Enable cloud storage support" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Hide placeholders of blocked elements" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "De bon usar pels daltonians" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Make use of context menu where appropriate" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Disable hyperlink auditing" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Show the number of blocked requests on the icon" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Darrièra salvagarda :" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Darrièra restauracion :" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Block CSP reports" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Disable cosmetic filtering" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Block media elements larger than {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Blocar las poliças distantas" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Desactivar JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Paramètres" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Disable pre-fetching (to prevent any connection for blocked network requests)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Personalizar la color afortida" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tèmas" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Disable tooltips" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Uncloak canonical names" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Prevent WebRTC from leaking local IP addresses" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Picar un acorchi" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Acorchis" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Show Dashboard" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Show Logger" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Jornals d’eveniments" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Espaci emmagazinatge : {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "S'abonar" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Add the following URL to your custom filter lists?\n\nTitle: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Find similar reports" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Dobrir" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Assisténcia" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Create new report" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentacion" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Read the documentation at \u003Ccode>uBlock/wiki\u003C/code> to learn about all of uBlock Origin's features." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Questions and support" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter issues/website is broken" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Senhalament d’avarias" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Troubleshooting Information" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Report a filter issue" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "The web page…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pick an entry --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shows ads or ad leftovers" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has privacy-related issues" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfunctions when uBlock Origin is enabled" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Opens unwanted tabs or windows" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Address of the web page:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Aplicar las modificacions" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Exportar" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Import and append…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Lista blanca" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/pa/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/pa/messages.json deleted file mode 100644 index f102fdd..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/pa/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "ਤਬਦੀਲੀਆਂ ਲਾਗੂ ਕਰੋ" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "ਐਕਸਪੋਰਟ…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "ਇੰਪੋਰਟ ਕਰੋ ਤੇ ਜੋੜੋ…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "ਮੇਰੇ ਫਿਲਟਰ" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "ਗ਼ੈਰ-ਭਰੋਸੇਯੋਗ ਸਰੋਤਾਂ ਤੋਂ ਫਿਲਟਰ ਨਾ ਜੋੜੋ।" - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "ਤਬਦੀਲੀਆਂ ਲਾਗੂ ਕਰੋ" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "ਫਿਲਟਰ ਸੂਚੀਆਂ ਆਪੇ ਅੱਪਡੇਟ ਕਰੋ" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "ਪੁਰਾਣਾ।" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "ਹਰ ਲਾਈਨ ਵਿੱਚ ਇੱਕ URL। ਗਲਤ URL ਨੂੰ ਬਿਨਾਂ ਰੁਕੇ ਅਣਡਿੱਠਾ ਕੀਤਾ ਜਾਵੇਗਾ।" - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "ਇਸ਼ਤਿਹਾਰ" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "ਅਣਚਾਹੇ" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "ਕਸਟਮ" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "ਬਿਲਟ-ਇਨ" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "ਮਾਲਵੇਅਰਾਂ ਤੋਂ ਬਚਾਅ, ਸੁਰੱਖਿਆ" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "ਬਹੁ-ਮਕਸਦੀ" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "ਪਰਦੇਦਾਰੀ" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "ਖੇਤਰ, ਭਾਸ਼ਾਵਾਂ" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "ਆਮ ਦਿੱਖ ਆਧਾਰਿਤ ਫਿਲਟਰ ਅਣਡਿੱਠੇ ਕਰੋ" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "ਇੰਪੋਰਟ…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "ਆਖਰੀ ਅੱਪਡੇਟ: {{ago}}।\nਅੱਪਡੇਟ ਲਈ ਮਜ਼ਬੂਰ ਕਰਨ ਵਾਸਤੇ ਕਲਿੱਕ ਕਰੋ।" - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{total}} ਵਿੱਚੋਂ {{used}} ਵਰਤੇ" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} ਨੈੱਟਵਰਕ ਫਿਲਟਰ + {{cosmeticFilterCount}} ਦਿੱਖ ਫਿਲਟਰ, ਇੱਥੋਂ:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "ਨੈੱਟਵਰਕ ਗਲਤੀ ਸਰੋਤ ਨੂੰ ਅੱਪਡੇਟ ਹੋਣ ਤੋਂ ਰੋਕਦੀ ਹੈ।" - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "ਫਿਲਟਰ ਸੂਚੀਆਂ" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "ਦਿੱਖ (cosmetic) ਫਿਲਟਰ ਵੈੱਬ ਸਫ਼ੇ ਉੱਤੇ ਅਜਿਹਾ ਭਾਗਾਂ ਨੂੰ ਲੁਕਾਉਂਦੇ ਹਨ, ਜੋ ਕਿ ਦਿੱਖ ਵਿੱਚ ਰੁਕਾਵਟ ਬਣਦੇ ਹਨ ਅਤੇ ਜਿਹਨਾਂ ਉੱਤੇ ਨੈੱਟਵਰਕ ਅਧਾਰਿਤ ਫਿਲਟਰ ਇੰਜਣਾਂ ਰਾਹੀਂ ਪਾਬੰਦੀ ਨਹੀਂ ਲਾਈ ਜਾ ਸਕਦੀ ਹੈ।" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "ਦਿੱਖ ਫਿਲਟਰ ਨੂੰ ਪਾਰਸ ਅਤੇ ਲਾਗੂ ਕਰੋ" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "ਸਭ ਕੈਸ਼ ਮਿਟਾਓ" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "ਸਭ ਫਿਲਟਰ ਸੂਚੀਆਂ ਲੋਡ ਹੋਣ ਤੱਕ ਨੈੱਟਵਰਕ ਸਰਗਰਮੀ ਨੂੰ ਸਸਪੈਂਡ ਰੱਖੋ" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "ਹੁਣੇ ਅੱਪਡੇਟ ਕਰੋ" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "…ਅੱਪਡੇਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "ਸਮੱਗਰੀ ਵੇਖੋ" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "ਫ਼ਾਈਲ ਤੋਂ ਬੈਕਅੱਪ ਲਵੋ…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO's own filter lists are freely hosted on the following \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "A randomly picked CDN is used when a filter list needs to be updated." - }, - "aboutChangelog": { - "description": "", - "message": "ਤਬਦੀਲੀ-ਸੂਚੀ" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "ਸਰੋਤ ਕੋਡ (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "ਯੋਗਦਾਨੀ" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "ਬਾਹਰੀ ਨਿਰਭਰਤਾਵਾਂ (GPLv3-ਅਨੁਕੂਲ):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "ਫਿਲਟਰ ਸੂਚੀਆਂ" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "ਇਸ ਬਾਰੇ" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "ਪਰਦੇਦਾਰੀ ਨੀਤੀ" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "…ਮੂਲ ਸੈਟਿੰਗਾਂ ਬਹਾਲ ਕਰੋ" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "ਤੁਹਾਡੀਆਂ ਸਾਰੀਆਂ ਸੈਟਿੰਗਾਂ ਨੂੰ ਹਟਾਇਆ ਜਾਵੇਗਾ ਅਤੇ uBlock₀ ਮੁੜ-ਚਾਲੂ ਹੋਵੇਗਾ।\n\nਕੀ uBlock₀ ਨੂੰ ਫੈਕਟਰੀ ਸੈਟਿੰਗਾਂ ਲਈ ਮੁੜ-ਸੈੱਟ ਕਰਨਾ ਹੈ?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "…ਫ਼ਾਈਲ ਤੋਂ ਬਹਾਲ ਕਰੋ" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "ਡਾਟਾ ਪੜ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਜਾਂ ਗ਼ੈਰ-ਵਾਜਬ ਹੈ" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "ਸਰੋਤ ਕੋਡ" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "ਅਨੁਵਾਦ" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "ਤਕਨੀਕੀ ਸੈਟਿੰਗਾਂ" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "ਸਾਵਧਾਨ! ਇਹ ਤਕਨੀਕੀ ਸੈਟਿੰਗਾਂ ਨੂੰ ਆਪਣੇ ਖ਼ਤਰੇ ਮੁਤਾਬਕ ਬਦਲੋ।" - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — ਸੰਪੱਤੀ ਦਰਸ਼ਕ" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "ਲੋਡ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "ਇਸ ਡਿਵਾਈਸ ਦਾ ਨਾਂ:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "ਕਲਾਉਡ ਸਟੋਰੇਜ਼ ਤੋਂ ਇੰਪੋਰਟ ਕਰੋ" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "ਕਲਾਉਡ ਸਟੋਰੇਜ਼ ਤੋਂ ਇੰਪੋਰਟ ਕਰੋ ਅਤੇ ਮੌਜੂਦਾ ਸੈਟਿੰਗਾਂ ਨਾਲ ਮਿਲਾਓ" - }, - "cloudPush": { - "description": "tooltip", - "message": "ਕਲਾਉਡ ਸਟੋਰੇਜ਼ ਉੱਤੇ ਐਕਸਪੋਰਟ ਕਰੋ" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "ਫਰੇਮ ਵਿੱਚ ਭਾਗ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਈ…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "ਫਿਲਟਰ ਸੂਚੀ ਲਈ ਮੈਂਬਰ ਬਣੋ…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "ਆਰਜ਼ੀ ਤੌਰ ਉੱਤੇ ਵੱਡੇ ਮੀਡੀਆ ਭਾਗਾਂ ਨੂੰ ਮਨਜ਼ੂਰੀ ਦਿਓ" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "ਸਰੋਤ ਕੋਡ ਵੇਖੋ…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — ਡੈਸ਼ਬੋਰਡ" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "ਸਾਵਧਾਨ! ਤੁਹਾਡੇ ਕੋਲ ਨਾ-ਸੰਭਾਲੀਆਂ ਤਬਦੀਲੀਆਂ ਹਨ" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "ਅਣਡਿੱਠਾ" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "ਰਹੋ" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "ਪਿੱਛੇ ਜਾਓ" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "ਇਹ ਵਿੰਡੋ ਬੰਦ ਕਰੋ" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "ਜਾਰੀ ਰੱਖੋ" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "ਪੱਕੇ ਤੌਰ ਉੱਤੇ" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "ਆਰਜ਼ੀ" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "ਇਸ ਸਾਈਟ ਬਾਰੇ ਮੈਨੂੰ ਮੁੜ ਚੇਤਾਵਨੀ ਨਾ ਦਿਓ" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "ਲੱਭੋ:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "ਬਿਨਾਂ ਪੈਰਾਮੀਟਰ" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "{{hostname}} ਲਈ ਸਖ਼ਤ ਪਾਬੰਦੀਆਂ ਲਾਉਣਾ ਅਸਮਰੱਥ ਕਰੋ" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin ਨੇ ਅੱਗੇ ਦਿੱਤੇ ਸਫ਼ੇ ਨੂੰ ਲੋਡ ਹੋਣ ਤੋਂ ਰੋਕਿਆ ਹੈ:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "ਅੱਗੇ ਦਿੱਤੇ ਫਿਲਟਰ ਕਰਕੇ:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "ਸਫ਼ੇ ਉੱਤੇ ਪਾਬੰਦੀ ਹੈ" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} ਦਿਨ ਪਹਿਲਾਂ" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} ਘੰਟੇ ਪਹਿਲਾਂ" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} ਮਿੰਟ ਪਹਿਲਾਂ" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "ਇੱਕ ਦਿਨ ਪਹਿਲਾਂ" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "ਘੰਟਾ ਪਹਿਲਾਂ" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "ਮਿੰਟ ਪਹਿਲਾਂ" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "ਨੈੱਟਵਰਕ ਗਲਤੀ: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "ਆਖਰਕਾਰ ਪ੍ਰਭਾਵੀ ਬਲੌਕਰ ਹੈ। CPU ਅਤੇ ਮੈਮੋਰੀ ਲਈ ਸੌਖਾ।" - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "ਬੰਦ" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "ਤਬਦੀਲੀਆਂ ਲਾਗੂ ਕਰੋ" - }, - "genericBytes": { - "description": "", - "message": "ਬਾਈਟ" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "ਕਲਿੱਪਬੋਰਡ ਵਿੱਚ ਕਾਪੀ ਕਰੋ" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Toggle locked scrolling" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "ਵਾਪਸ ਲਵੋ" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "ਸਭ ਚੁਣੋ" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "ਭੇਜੋ" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "ਗਲਤੀਆਂ: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "ਸਭ" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "ਬਿਨ-ਟੈਬ" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "ਲੌਗਰ ਸਮੱਗਰੀ ਨੂੰ ਫਿਲਟਰ ਕਰੋ" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "ਡੋਮੇਨ" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "ਫਿਲਟਰ" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "ਕਿਸਮ" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "ਲੌਗਰ ਮਿਟਾਓ" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "ਮੌਜੂਦਾ ਟੈਬ" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "DOM ਇੰਸਪੈਕਟਰ ਨੂੰ ਬਦਲੋ" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "ਪਰਸੰਗ" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "ਫਿਲਟਰ" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "ਫਿਲਟਰ ਸੂਚੀ" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "ਵੇਰਵੇ" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "ਬਿਨ-ਧਿਰ" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "ਰੂਟ ਪਰਸੰਗ" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "ਨਿਯਮ" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "ਕਿਸਮ" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "ਮਾਰਕਡਾਊਨ" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "ਸਰਲ" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "ਸੂਚੀ" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "ਸਾਰਣੀ" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin ਵਿਕੀ: ਲੌਗਰ" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "ਲੌਗਰ ਨੂੰ ਰੋਕੋ (ਸਭ ਆਉਣ ਵਾਲੇ ਡਾਟੇ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰੋ)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "ਪੌਪ-ਅੱਪ ਪੈਨਲ ਬਦਲੋ" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "ਟੈਬ ਸਮੱਗਰੀ ਮੁੜ-ਲੋਡ ਕਰੋ" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1ਲੀ-ਧਿਰ" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3ਜੀ-ਧਿਰ" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "ਮਨਜ਼ੂਰ ਕੀਤੇ" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "ਪਾਬੰਦੀ ਲਾਏ" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "ਸੋਧ ਕੀਤੇ" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "ਨਹੀਂ" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "ਲੌਗਰ ਫਿਲਟਰ ਕਰਨ ਲਈ ਚੋਣਾਂ" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "ਲੌਗਰ ਫਿਲਟਰਾਂ ਨੂੰ ਬਦਲੋ" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} ਪਰਸੰਗ" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} ਫਿਲਟਰ/ਨਿਯਮ" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} ਬਿਨ-ਧਿਰ" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} ਸਮਾਂ" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "ਕਾਲਮ ਲੁਕਾਓ:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Use {{input}} lines per entry in vertically expanded mode" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "ਪਿਛਲੇ {{input}} ਮਿੰਟਾਂ ਤੋਂ ਐਂਟਰੀਆਂ ਰੱਖੋ" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Preserve at most {{input}} entries per tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preserve at most {{input}} page loads per tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "ਸਥਿਰ ਫਿਲਟਰ \u003Ccode>{{filter}}\u003C/code> ਇਸ ਵਿੱਚ ਮੌਜੂਦ ਹੈ:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Static filter could not be found in any of the currently enabled filter lists" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "ਟਿਕਾਊ ਫਿਲਟਰ" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "ਮਨਜ਼ੂਰ" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "ਕਿਸੇ ਵੀ ਥਾਂ ਤੋਂ" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "ਕੋਈ ਵੀ ਕਿਸਮ" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "ਪਾਬੰਦੀ" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "ਭਾਵੇਂ ਜੇ" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "ਛੋਟ ਜਦੋਂ" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "“{{origin}}” ਤੋਂ" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "ਕਿਸਮ “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "ਪਰਸੰਗ:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL ਨਿਯਮ" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "ਕਿਸਮ:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "ਲੌਗਰ ਨੂੰ ਚਾਲੂ ਕਰੋ" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "ਭਾਗ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਓ…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "ਦਿੱਖ ਫਿਲਟਰ ਕਰਨਾ" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "ਕਲਿੱਕ, Ctrl-ਕਲਿੱਕ" - }, - "pickerCreate": { - "description": "English: Create", - "message": "ਬਣਾਓ" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "ਨੈੱਟਵਰਕ ਫਿਲਟਰ" - }, - "pickerPick": { - "description": "English: Pick", - "message": "ਚੁਣੋ" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "ਝਲਕ" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "ਬਾਹਰ" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1ਲੀ-ਧਿਰ ਸਕ੍ਰਿਪਟਾਂ" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "ਤੀਜੀ-ਧਿਰ" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "ਫਰੇਮ" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "ਤੀਜੀ-ਧਿਰ ਫਰੇਮ" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "ਤੀਜੀ-ਧਿਰ CSS/ਚਿੱਤਰ" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "ਸਕ੍ਰਿਪਟ" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "ਤੀਜੀ-ਧਿਰ ਸਕ੍ਰਿਪਟਾਂ" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "ਸਭ" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "ਇਸ ਸਫ਼ੇ ਉੱਤੇ" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "ਇਸ ਸਫ਼ੇ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਏ" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "ਪਾਬੰਦੀ ਲਾਈਆਂ ਬੇਨਤੀਆਂ" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "ਇੰਸਟਾਲ ਕਰਨ ਤੋਂ ਬਾਅਦ" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "ਇੰਸਟਾਲ ਹੋਣ ਤੋਂ ਬਾਅਦ ਪਾਬੰਦੀ ਲਾਏ" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "ਕਨੈਕਟ ਹੋਈਆਂ ਡੋਮੇਨਾਂ" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{total}} ਵਿੱਚੋਂ {{count}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "ਕਨੈਕਟ ਹੋਈਆਂ ਡੋਮੇਨਾਂ" - }, - "popupImageRulePrompt": { - "description": "", - "message": "ਚਿੱਤਰ" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "ਇਨ-ਲਾਈਨ ਸਕ੍ਰਿਪਟਾਂ" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "ਘੱਟ" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "ਹੋਰ" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "ਦਿੱਖ ਫਿਲਟਰ ਕਰਨਾ" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "ਵੱਡੇ ਮੀਡੀਆ ਭਾਗ" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "ਪੌਪ-ਅੱਪ ਵਿੰਡੋ" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "ਰਿਮੋਟ ਫ਼ੌਂਟ" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "ਜਾਂ" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "ਕਲਿੱਕ: ਇਸ ਸਾਈਟ ਲਈ uBlock₀ ਨੂੰ ਅਸਮਰੱਥ/ਸਮਰੱਥ ਕਰੋ।\n\nCtrl+ਕਲਿੱਕ: ਸਿਰਫ਼ ਇਸ ਸਫ਼ੇ ਲਈ uBlock₀ ਨੂੰ ਅਸਮਰੱਥ/ਸਮਰੱਥ ਕਰੋ।" - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "ਇਸ ਸਾਈਟ ਲਈ uBlock₀ ਨੂੰ ਅਸਮਰੱਥ/ਸਮਰੱਥ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ।\n\nਸਿਰਫ਼ ਇਸ ਸਫ਼ੇ ਲਈ uBlock₀ ਨੂੰ ਅਸਮਰੱਥ/ਸਮਰੱਥ ਕਰਨ ਲਈ Ctrl+ਕਲਿੱਕ ਕਰੋ।" - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "ਇਸ ਸਾਈਟ ਲਈ uBlock₀ ਸਮਰੱਥ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ।" - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "ਡੈਸ਼ਬੋਰਡ ਨੂੰ ਖੋਲ੍ਹੋ" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "ਗਲੋਬਲ ਨਿਯਮ: ਇਹ ਕਾਲਮ ਸਾਰੀਆਂ ਸਾਈਟਾਂ ਉੱਤੇ ਲਾਗੂ ਹੋਣ ਵਾਲੇ ਨਿਯਮਾਂ ਲਈ ਹੈ।" - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "ਲੋਕਲ ਨਿਯਮ: ਇਹ ਕਾਲਮ ਨਿਯਮਾਂ ਲਈ ਹੈ, ਜੋ ਕਿ ਸਿਰਫ਼ ਲੋਕਲ ਸਾਈਟਾਂ ਉੱਤੇ ਹੀ ਲਾਗੂ ਹੁੰਦੇ ਹਨ।\nਲੋਕਲ ਨਿਯਮ ਗਲੋਬਲ ਨਿਯਮਾਂ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰਦੇ ਹਨ।" - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "ਲੌਗਰ ਖੋਲ੍ਹੋ" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "ਇਸ ਸਾਈਟ ਲਈ ਦਿੱਖ ਫਿਲਟਰ ਕਰਨ ਨੂੰ ਬਦਲੋ" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "ਇਸ ਸਾਈਟ ਉੱਤੇ ਦਿੱਖ ਫਿਲਟਰ ਕਰਨ ਨੂੰ ਅਸਮਰੱਥ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "ਇਸ ਸਾਈਟ ਉੱਤੇ ਦਿੱਖ ਫਿਲਟਰ ਕਰਨ ਨੂੰ ਸਮਰੱਥ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "ਇਸ ਸਾਈਟ ਲਈ ਵੱਡੇ ਮੀਡਿਆ ਭਾਗਾਂ ਉੱਤੇ ਪਾਬੰਦੀਆਂ ਨੂੰ ਬਦਲੋ" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "ਇਸ ਸਾਈਟ ਲਈ ਵੱਡੇ ਮੀਡੀਆ ਭਾਗਾਂ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "ਇਸ ਸਾਈਟ ਲਈ ਵੱਡੇ ਮੀਡੀਆ ਭਾਗਾਂ ਉੱਤੇ ਪਾਬੰਦੀ ਹਟਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "ਇਸ ਸਾਈਟ ਲਈ ਸਾਰੇ ਪੌਪ-ਅੱਪ ਉੱਤੇ ਪਾਬੰਦੀਆਂ ਨੂੰ ਬਦਲੋ" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "ਇਸ ਸਾਈਟ ਲਈ ਸਾਰੇ ਪੌਪ-ਅੱਪ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "ਇਸ ਸਾਈਟ ਲਈ ਸਾਰੇ ਪੌਪ-ਅੱਪ ਉੱਤੇ ਪਾਬੰਦੀ ਨਾ ਲਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "ਇਸ ਸਾਈਟ ਲਈ ਰਿਮੋਟ ਫ਼ੌਂਟਾਂ ਉੱਤੇ ਪਾਬੰਦੀਆਂ ਨੂੰ ਬਦਲੋ" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "ਇਸ ਸਾਈਟ ਲਈ ਰਿਮੋਟ ਫ਼ੌਂਟਾਂ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "ਇਸ ਸਾਈਟ ਲਈ ਰਿਮੋਟ ਫ਼ੌਂਟਾਂ ਉੱਤੇ ਪਾਬੰਦੀ ਹਟਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "ਇਸ ਸਾਈਟ ਉੱਤੇ JavaScript ਅਸਮਰੱਥ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "ਇਸ ਸਾਈਟ ਉੱਤੇ JavaScript ਅਸਮਰੱਥ ਕਰਨ ਨੂੰ ਹਟਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Enter element picker mode" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "ਇਸ ਵੈੱਬਸਾਈਟ ਉੱਤੇ ਮਸਲੇ ਬਾਰੇ ਰਿਪੋਰਟ ਕਰੋ" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "ਆਪਣੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਵਾਪਸ ਲੈਣ ਲਈ ਕਲਿੱਕ ਕਰੋ।" - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "ਆਪਣੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਪੱਕਾ ਬਣਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ।" - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Enter element zapper mode" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "ਵਰਜ਼ਨ" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relax blocking mode" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "ਕਮਿਟ" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "ਸੋਧੋ" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "ਖ਼ਾਰਜ" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "ਸੰਭਾਲੋ" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "…ਫ਼ਾਈਲ ਉੱਤੇ ਐਕਸਪੋਰਟ ਕਰੋ" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Rule syntax: \u003Ccode>source destination type action\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>full documentation\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "ਤੁਹਾਡੇ ਚਾਲੂ ਫਿਲਟਰ ਕਰਨ ਦੇ ਨਿਯਮਾਂ ਦੀ ਸੂਚੀ ਹੈ।" - }, - "rulesImport": { - "description": "", - "message": "…ਫ਼ਾਈਲ ਤੋਂ ਇੰਪੋਰਟ ਕਰੋ" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "ਮੇਰੇ ਨਿਯਮ" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "ਪੱਕੇ ਨਿਯਮ" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "ਵਾਪਸ ਲਵੋ" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "ਲੜੀਬੱਧ:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "ਟਿਕਾਣਾ" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "ਸਰੋਤ" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "ਨਿਯਮ ਦੀ ਕਿਸਮ" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "ਆਰਜ਼ੀ ਨਿਯਮ" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "ਮੂਲ ਰਵੱਈਆ" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "ਇਹ ਮੂਲ ਰਵੱਈਏ ਨੂੰ ਹਰ-ਸਟਾਈ ਮੁਤਾਬਕ ਅਣਡਿੱਠਾ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "ਤਕਨੀਕੀ" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "ਫ਼ੀਚਰ ਸਿਰਫ਼ ਤਕਨੀਕੀ ਮਾਹਰ ਵਰਤੋਂਕਾਰਾਂ ਲਈ ਢੁੱਕਵੇਂ ਹਨ" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "ਮੈਂ ਮਾਹਰ ਵਰਤੋਂਕਾਰ ਹਾਂ" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "ਤਕਨੀਕੀ ਸੈਟਿੰਗਾਂ" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "ਦਿੱਖ" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "ਕਲਾਉਡ ਸਟੋਰੇਜ਼ ਸਹਾਇਤਾ ਸਮਰੱਥ ਕਰੋ" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "ਪਾਬੰਦੀ ਲਾਏ ਭਾਗਾਂ ਲਈ ਸਥਾਨ ਨੂੰ ਓਹਲੇ ਕਰੋ" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "ਰੰਗ-ਅੰਨ੍ਹੇਪਣ ਲਈ ਸਰਲ" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "ਜਦੋਂ ਵੀ ਵਾਜਬ ਹੋਵੇ ਤਾਂ ਪ੍ਰਸੰਗ ਮੇਨੂ ਨੂੰ ਵਰਤੋਂ" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "ਹਾਈਪਰ-ਲਿੰਕ ਪੜਤਾਲ ਨੂੰ ਅਸਮਰੱਥ ਕਰੋ" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "ਆਈਕਾਨ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਈਆਂ ਬੇਨਤੀਆਂ ਦੀ ਗਿਣਤੀ ਦਿਖਾਓ" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "ਪਿਛਲਾ ਬੈਕਅੱਪ:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "ਪਿਛਲਾ ਰੀ-ਸਟੋਰ:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "CSP ਰਿਪੋਰਟਾਂ ਉੱਤੇ ਪਾਬੰਦੀ" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "ਦਿੱਖ ਫਿਲਟਰ ਕਰਨ ਨੂੰ ਅਸਮਰੱਥ ਕਰੋ" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "{{input}} KB ਤੋਂ ਵੱਡੇ ਮੀਡੀਆ ਭਾਗਾਂ ਉੱਤੇ ਪਾਬੰਦੀ" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "ਰਿਮੋਟ ਫ਼ੌਂਟਾਂ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਓ" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "JavaScript ਅਸਮਰੱਥ ਕਰੋ" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "ਸੈਟਿੰਗਾਂ" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "ਪਹਿਲਾਂ-ਪ੍ਰਾਪਤ ਕਰਨਾ ਅਸਮਰੱਥ (ਪਾਬੰਦੀ ਲਾਈਆਂ ਨੈੱਟਵਰਕ ਬੇਨਤੀਆਂ ਲਈ ਕਿਸੇ ਵੀ ਕਨੈਕਸ਼ਨ ਨੂੰ ਰੋਕਣ ਲਈ)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Custom accent color" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "ਥੀਮ" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "ਟੂਲ-ਟਿੱਪ ਅਸਮਰੱਥ ਕਰੋ" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Uncloak canonical names" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "WebRTC ਨੂੰ ਲੋਕਲ IP ਐਡਰੈਸ ਲੀਕ ਕਰਨ ਤੋਂ ਰੋਕੋ" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "ਸ਼ਾਰਟਕੱਟ ਲਿਖੋ" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "ਸ਼ਾਰਟਕੱਟ" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "ਡੈਸ਼ਬੋਰਡ ਵੇਖਾਓ" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "ਲੌਗਰ ਵੇਖਾਓ" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — ਲੌਗਰ" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "ਵਰਤੀ ਗਈ ਸਟੋਰੇਜ਼: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "ਮੈਂਬਰ ਬਣੋ" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "ਕੀ ਅੱਗੇ ਦਿੱਤੇ URL ਨੂੰ ਤੁਹਾਡੀਆਂ ਕਸਟਮ ਫਿਲਟਰ ਸੂਚੀਆਂ ਵਿੱਚ ਜੋੜਨਾ ਹੈ?\n\nਨਾਂ: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "ਰਲਦੀਆਂ ਰਿਪੋਰਟਾਂ ਲੱਭੋ" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "ਖੋਲ੍ਹੋ" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "ਸਹਿਯੋਗ" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "ਨਵੀਂ ਰਿਪੋਰਟ ਬਣਾਓ" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "ਦਸਤਾਵੇਜ਼" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "uBlock Origin ਦੇ ਸਾਰੇ ਫੀਚਰਾਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਲੈਣ ਲਈ \u003Ccode>uBlock/wiki\u003C/code> ਤੋਂ ਦਸਤਾਵੇਜ਼ ਪੜ੍ਹੋ।" - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "ਸਵਾਲ ਅਤੇ ਸਹਿਯੋਗ" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "ਫਿਲਟਰ ਮਸਲੇ/ਵੈੱਬਸਾਈਟ ਖਰਾਬ ਹੈ" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "ਬੱਗ ਰਿਪੋਰਟ" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "ਸਮੱਸਿਆ ਹੱਲ ਕਰਨ ਸੰਬੰਧੀ ਜਾਣਕਾਰੀ" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "ਹੇਠਾਂ ਤਕਨੀਕੀ ਜਾਣਕਾਰੀ ਦਿੱਤੀ ਹੈ, ਜੋ ਕਿ ਵਲੰਟੀਅਰਾਂ ਲਈ ਮਦਦਗਾਰ ਹੋ ਸਕਦੀ ਹੈ, ਜੋ ਤੁਹਾਡੀ ਸਮੱਸਿਆ ਹੱਲ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ ਕਰਦੇ ਹਨ।" - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>ਖਾਸ:\u003C/b> ਸੰਭਾਵਿਤ ਤੌਰ ਉੱਤੇ ਪ੍ਰਾਈਵੇਟ ਜਾਂ ਸੰਵੇਦਨਸ਼ੀਲ ਜਾਣਕਾਰੀ ਨੂੰ ਮੂਲ ਰੂਪ ਵਿੱਚ ਛਾਂਟ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਛਾਂਂਟੀ ਕੀਤੀ ਜਾਣਕਾਰੀ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਨਾ ਵੱਧ ਔਖਾ ਬਣਾ ਸਕਦੀ ਹੈ।" - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "ਫਿਲਟਰ ਮਸਲੇ ਬਾਰੇ ਰਿਪੋਰਟ ਕਰੋ" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "ਵਲੰਟੀਅਰਾਂ ਕੋਲ ਡੁਪਲੀਕੇਟ ਰਿਪੋਰਟਾਂ ਦਾ ਕੰਮ ਵਧਾਉਣ ਤੋਂ ਬਚਣ ਲਈ ਕਿਰਪਾ ਕਰਕੇ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਮਸਲਾ ਕਿਤੇ ਪਹਿਲਾਂ ਰਿਪੋਰਟ ਤਾਂ ਨਹੀ ਕੀਤਾ ਹੋਇਆ ਹੈ।" - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "ਫਿਲਟਰ ਸੂਚੀਆਂ ਰੋਜ਼ ਅੱਪਡੇਟ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਕਿਤੇ ਤੁਹਾਡਾ ਮਸਲਾ ਪਹਿਲਾਂ ਹੀ ਸਭ ਤੋਂ ਤਾਜ਼ਾ ਫਿਲਟਰ ਸੂਚੀਆਂ ਰਾਹੀਂ ਹੱਲ ਤਾਂ ਨਹੀਂ ਹੋ ਚੁੱਕਿਆ ਹੈ।" - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "ਸਮੱਸਿਆ ਵਾਲੇ ਵੈੱਬ-ਸਫ਼ੇ ਨੂੰ ਮੁੜ-ਲੋਡ ਕਰਨ ਦੇ ਬਾਅਦ ਜਾਂਚ ਕਰੋ ਕਿ ਕੀ ਮਸਲਾ ਹਾਲੇ ਵੀ ਮੌਜੂਦ ਹੈ।" - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "ਵੈੱਬ ਸਫ਼ਾ…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- ਐਂਟਰੀ ਚੁਣੋ --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "ਇਸ਼ਤਿਹਾਰ ਜਾਂ ਇਸ਼ਤਿਹਾਰ ਦੀ ਰਹਿੰਦ-ਖੂੰਦ ਦਿਖਾਉਂਦਾ ਹੈ" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "uBlock Origin ਖੋਜਦਾ ਹੈ" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "ਪਰਦੇਦਾਰੀ ਸੰਬੰਧੀ ਮਸਲੇ ਹਨ" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "uBlock Origin ਸਮਰੱਥ ਕਰਨ ਦੇ ਬਾਅਦ ਗੜਬੜ ਹੁੰਦੀ ਹੈ" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "ਬੇਲੋੜੀਆਂ ਟੈਬਾਂ ਜਾਂ ਵਿੰਡੋ ਖੋਲ੍ਹਦਾ ਹੈ" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "ਵੈੱਬ ਸਾਈਟ ਦਾ ਸਿਰਨਾਵਾਂ:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "JavaScript ਨੂੰ ਬਦਲੋ" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "ਤਬਦੀਲੀਆਂ ਲਾਗੂ ਕਰੋ" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "ਐਕਸਪੋਰਟ…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "ਇੰਪੋਰਟ ਕਰੋ ਤੇ ਜੋੜੋ…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "ਭਰੋਸੇਯੋਗ ਸਾਈਟਾਂ" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/pl/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/pl/messages.json deleted file mode 100644 index ce936fe..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/pl/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Zastosuj zmiany" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Włącz moje własne filtry" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Eksportuj…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "ublock-statyczne-filtry_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importuj i dołącz…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Moje filtry" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Zezwól na filtry wymagające zaufania" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Nie dodawaj filtrów z niezaufanych źródeł." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Zastosuj zmiany" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Automatycznie aktualizuj listy filtrów" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Nieaktualna." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Jeden adres URL listy na linię. Błędne adresy URL będą pomijane." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Reklamy" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Elementy irytujące" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Powiadomienia o ciasteczkach" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Własne" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Wbudowane" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Ochrona przed złośliwym oprogramowaniem, bezpieczeństwo" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Wielofunkcyjne" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Prywatność" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regiony, języki" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Widżety społecznościowe" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignoruj ogólne filtry kosmetyczne" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Ogólne filtry kosmetyczne, to filtry które mają być zastosowane na wszystkich stronach internetowych. Włącznie tej funkcji zmniejszy obciążenie procesora i pamięci.\n\nZaleca się włączenie tej funkcji na mniej wydajnych urządzeniach." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importuj…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Zaktualizowano: {{ago}}.\nKliknij, aby wymusić aktualizację." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Listy zablokowanych hostów" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "użytych {{used}} z {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "Filtry sieciowe: {{netFilterCount}} + filtry kosmetyczne: {{cosmeticFilterCount}} z:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Błąd sieci uniemożliwił aktualizację zasobów." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Listy filtrów" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Filtry kosmetyczne służą do ukrywania elementów stron internetowych uważanych za wizualne uciążliwe, które to nie mogą zostać zablokowane za pomocą filtrów żądań sieciowych." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Przetwarzaj i stosuj filtry kosmetyczne" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Wyczyść całą pamięć podręczną" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Zawieś aktywność sieciową do czasu załadowania wszystkich list filtrów" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Zaktualizuj teraz" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Aktualizowanie…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "zobacz zawartość" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Utwórz kopię zapasową…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ublock-kopia-zapasowa_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Własne listy filtrów uBO są dobrowolnie hostowane w następujących sieciach \u003Ca href=\"https://pl.wikipedia.org/wiki/Content_delivery_network\">CDN\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Losowo wybrana sieć CDN zostanie użyta, gdy lista filtrów będzie wymagała aktualizacji." - }, - "aboutChangelog": { - "description": "", - "message": "Informacje o wydaniu" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Kod źródłowy (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Współtwórcy" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Zewnętrzne zależności (kompatybilne z GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Listy filtrów" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "O rozszerzeniu" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Polityka prywatności" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Przywróć ustawienia domyślne…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Wszystkie twoje ustawienia zostaną usunięte i uBlock₀ zostanie ponownie uruchomiony.\n\nCzy chcesz przywrócić ustawienia domyślne?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Przywróć kopię z pliku…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Wszystkie twoje ustawienia zostaną zastąpione ustawieniami z kopii stworzonej {{time}}. Po zakończeniu uBlock₀ zostanie uruchomiony ponownie.\n\nPrzywrócić ustawienia z kopii zapasowej?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Danych nie można odczytać lub są nieprawidłowe" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Kod źródłowy" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Tłumaczenia" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Ustawienia zaawansowane" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Uwaga! Te ustawienia zmieniasz na własne ryzyko." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ – Podgląd zasobu" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Kliknij, aby załadować" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Nazwa urządzenia:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Importuj z chmury" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importuj z chmury i połącz z aktualnymi ustawieniami" - }, - "cloudPush": { - "description": "tooltip", - "message": "Eksportuj do chmury" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Zablokuj element w ramce…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subskrybuj listę filtrów…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Tymczasowo zezwalaj na wyświetlanie dużych elementów multimedialnych" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Pokaż źródło…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ – Panel sterowania" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Uwaga! Masz niezapisane zmiany" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignoruj" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Zostań" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Wstecz" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Zamknij to okno" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Kontynuuj" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Na stałe" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Tymczasowo" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Nie ostrzegaj mnie ponownie o tej stronie" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Filtr znajduje się na liście:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "bez parametrów" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Wyłącz rygorystyczne blokowanie dla {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin zablokował wczytywanie następującej strony:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Powodem zablokowania jest filtr" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Strona zablokowana" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Ten wpis musi być ostatni" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} dni temu" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} godz. temu" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} min. temu" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "wczoraj" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "godzinę temu" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "minutę temu" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Błąd sieci: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Nareszcie skuteczny bloker charakteryzujący się niskim użyciem procesora i pamięci." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "wyłączony" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Zastosuj zmiany" - }, - "genericBytes": { - "description": "", - "message": "bajty" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopiuj do schowka" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Przełącz przewijanie synchroniczne" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Przywróć" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Zaznacz wszystko" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Wyślij" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Błędy: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Wszystkie" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Bez kart" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtruj zawartość rejestru" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domena" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filtr" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Typ" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "Adres URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Wyczyść rejestr" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Aktywna karta" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Przełącz inspektor DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Kontekst" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filtr" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Lista filtrów" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Szczegóły" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Lokalność" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Kontekst główny" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Reguła" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Typ" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "Adres URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Bez formatowania" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Lista" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabela" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Rejestrator (ang.)" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pauzuj rejestrowanie (porzuć wszystkie przychodzące dane)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Przełącz panel popup" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Przeładuj zawartość karty" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "własna domena" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "domeny zewnętrzne" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "dozwolone" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "zablokowane" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "akcje" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "zmodyfikowane" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Nie" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Opcje filtrowania rejestru" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Przełącz filtrowanie rejestru" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Wpisy rejestru niespełniające wszystkich trzech warunków będą automatycznie porzucane:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Kontekst" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filtr/reguła" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Lokalność" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Czas" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Ukryj kolumny:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Użyj {{input}} linie na wpis w widoku poszerzonym" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Zachowuj wpisy z ostatnich {{input}} minut" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Zachowuj nie więcej niż {{input}} wpisów na kartę" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Zachowuj nie więcej niż {{input}} przeładowań strony na kartę" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Filtr statyczny \u003Ccode>{{filter}}\u003C/code> znajdujący się w:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Filtr statyczny nie został znaleziony w aktualnie włączonych listach filtrów" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Filtr statyczny" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} żądania sieciowe {{type}}, których adres URL jest zgodny z: {{url}} {{br}}i pochodzi {{origin}}, {{importance}} filtr znajduje się na liście wyjątków." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Zezwalaj na" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "z dowolnego miejsca" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "każdego typu" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Blokuj" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "nawet, jeśli" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "z wyjątkiem, gdy" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "z „{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "typu „{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Kontekst:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Reguła URL" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Typ:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Wznów rejestrowanie" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Zablokuj element…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Filtry kosmetyczne" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klik, Ctrl + klik" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Utwórz" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Filtry sieciowe" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Wybierz" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Podgląd" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Zamknij" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "skrypty tej samej domeny" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "domeny zewnętrzne" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "ramka" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "ramki z domen zewnętrznych" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "zewnętrzne CSS/obrazki" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "skrypt" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "skrypty z domen zewnętrznych" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "wszystko" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "na tej stronie" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Zablokowane na tej stronie" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "zablokowane żądania" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "od instalacji" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Zablokowane od instalacji" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domeny podłączone" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} z {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "podłączone domeny" - }, - "popupImageRulePrompt": { - "description": "", - "message": "obrazki" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "zagnieżdżone skrypty" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Mniej" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Więcej" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Filtrowanie kosmetyczne" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Duże elementy multimedialne" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Wyskakujące okna" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Zdalne czcionki" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "lub" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Kliknij, aby wyłączyć uBlock₀ dla tej witryny.\n\nKliknij z wciśniętym klawiszem Ctrl,\naby wyłączyć uBlock₀ tylko dla tej strony." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Kliknij, aby wyłączyć uBlock₀ dla tej witryny.\n\nKliknij z wciśniętym klawiszem Ctrl, aby wyłączyć uBlock₀ tylko dla tej strony." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Kliknij, aby włączyć uBlock₀ dla tej witryny." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Otwórz panel sterowania" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Reguły globalne:\nW tej kolumnie znajdują się reguły stosowane na wszystkich witrynach." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Reguły lokalne:\nW tej kolumnie znajdują się reguły stosowane tylko na bieżącej witrynie.\nReguły lokalne zastępują reguły globalne." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Otwórz rejestrator" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Włącz/wyłącz kosmetyczne filtrowanie na tej witrynie" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Kliknij, aby wyłączyć filtrowanie kosmetyczne na tej witrynie" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Kliknij, aby włączyć filtrowanie kosmetyczne na tej witrynie" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Włącz/wyłącz blokowanie dużych elementów multimedialnych na tej witrynie" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Kliknij, aby zablokować duże elementy multimedialne na tej witrynie" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Kliknij, aby nie blokować dużych elementów multimedialnych na tej witrynie" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Włącz/wyłącz blokowanie wyskakujących okien na tej witrynie" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Kliknij, aby zablokować wszystkie wyskakujące okna na tej witrynie" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Kliknij, aby nie blokować wyskakujących okien na tej witrynie" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Włącz/wyłącz blokowanie zdalnych czcionek na tej witrynie" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Kliknij, aby zablokować zdalne czcionki na tej witrynie" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Kliknij, aby nie blokować zdalnych czcionek na tej witrynie" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Kliknij, aby wyłączyć JavaScript na tej witrynie" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Kliknij, aby JavaScript nie był już wyłączony na tej witrynie" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Przejdź do trybu zaznaczania elementów" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Zgłoś problem z tą stroną" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Kliknij, aby odrzucić zmiany." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Kliknij, aby zastosować zmiany na stałe." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Przejdź do trybu usuwania elementów" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Wersja" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Rozluźnij tryb blokowania" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Zatwierdź" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "ublock-dynamiczne-reguly_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Edytuj" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Odrzuć" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Zapisz" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Eksportuj do pliku…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Składnia reguły: \u003Ccode>źródło cel typ akcja\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>pełna dokumentacja\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Lista reguł dynamicznego filtrowania." - }, - "rulesImport": { - "description": "", - "message": "Importuj z pliku…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Moje reguły" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Stałe reguły" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Przywróć" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sortowanie:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Miejsce docelowe" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Źródło" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Typ reguły" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Tymczasowe reguły" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Działanie domyślne" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Te ustawienia mogą być zastąpione przez ustawienia danej witryny" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Zaawansowane" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Funkcje odpowiednie tylko dla użytkowników z przygotowaniem technicznym" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Jestem zaawansowanym użytkownikiem" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "Ustawienia zaawansowane" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Wygląd" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Włącz obsługę zapisu ustawień w chmurze" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Ukrywaj symbole zastępcze zablokowanych elementów" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Interfejs przyjazny osobom z zaburzeniami widzenia kolorów" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Używaj menu kontekstowego, gdzie to możliwe" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Wyłącz śledzenie kliknięć odnośników" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Wyświetlaj liczbę zablokowanych żądań na ikonie rozszerzenia" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Ostatnią kopię zapasową wykonano:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Ostatnie przywrócenie wykonano:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Blokuj raporty CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Wyłącz filtrowanie kosmetyczne" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Blokuj elementy multimedialne większe niż {{input}} KiB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Blokuj zdalne czcionki" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Wyłącz JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Ustawienia" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Wyłącz wstępne pobieranie (by uniknąć połączeń z zablokowanymi zapytaniami sieciowymi)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Własny kolor akcentujący" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Motyw" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Nie wyświetlaj dymków podpowiedzi" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Pokaż rzeczywistą nazwę domeny (CNAME)" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Zapobiegaj ujawnianiu lokalnego adresu IP poprzez interfejs WebRTC" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Wprowadź skrót" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Skróty" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Panel sterowania" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Pokaż rejestrator" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ – Rejestrator" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Użycie pamięci dyskowej: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Subskrybuj" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Dodać następujący URL do twoich list filtrów?\n\nTytuł: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Znajdź podobne raporty" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Otwórz" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Pomoc techniczna" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Ocenzuruj" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Utwórz nowy raport" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentacja" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Przeczytaj dokumentację na \u003Ccode>uBlock/wiki\u003C/code>, by nauczyć się obsługi uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Pytania oraz pomoc" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Odpowiedzi na pytania oraz inne rodzaje pomocy są udzielane na subreddicie \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Problemy z filtrami/błędy w wyświetlaniu stron" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Zgłoś problemy z filtrami na poszczególnych stronach na \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\"> trackerze błędów \u003Ccode>uBlockOrigin/uAssets\u003C/code>\u003C/span>. \u003Cu>Wymaga konta GitHub.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Ważne:\u003C/b> Unikaj innych podobnie działających dodatków razem z uBlock Origin, ponieważ może to powodować problemy z filtrami na poszczególnych stronach." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Porada:\u003C/b> Upewnij się, że listy filtrów są aktualne. \u003Cspan data-url=\"logger-ui.html#_\">Rejestrator\u003C/span> jest głównym narzędziem do diagnozowania problemów związanych z filtrami." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Zgłaszanie błędów" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Zgłoś problemy związane bezpośrednio z uBlock Origin na \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">trackerze błędów \u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>\u003C/span>. \u003Cu>Wymaga konta GitHub.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Informacje pomocne w rozwiązywaniu problemów" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Poniżej znajdują się informacje techniczne które mogą być użyteczne gdy wolontariusze próbują pomóc ci w rozwiązaniu problemu." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Ważne:\u003C/b> Potencjalnie prywatne lub wrażliwe informacje są domyślnie ocenzurowane. Ocenzurowanie może utrudnić rozwiązanie problemu." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Oznacz stronę internetową jako „NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">„Not Safe For Work (nieodpowiednią w pracy)”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Zgłoś problem z filtrem" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Aby uniknąć obciążania wolontariuszy zduplikowanymi zgłoszeniami, sprawdź, czy problem nie został już zgłoszony." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Listy filtrów są aktualizowane codziennie. Sprawdź, czy twój problem nie został już rozwiązany w najnowszych listach filtrów." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Sprawdź, czy problem nadal występuje po odświeżeniu problematycznej strony internetowej." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Strona internetowa…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "— Wybierz pozycję —" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Wyświetla reklamy lub ich pozostałości" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ma nakładki lub inne niedogodności" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Wykrywa uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ma problemy związane z prywatnością" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Działa nieprawidłowo, gdy włączony jest uBlock Origin" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Otwiera niepożądane karty lub okna" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Adres strony internetowej:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Nie cenzuruj" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Włącz/wyłącz filtrowanie kosmetyczne" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Włącz/wyłącz JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Podczas uruchamiania przeglądarki nie można prawidłowo filtrować.\nAby zapewnić prawidłowe filtrowanie, wczytaj ponownie stronę." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Zastosuj zmiany" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Eksportuj…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "ublock-zaufane-witryny_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importuj i dołącz…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Zaufane witryny" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Wytyczne zaufanych witryn nakazują, na których stronach uBlock Origin powinien zostać wyłączony. Jeden wpis na linię." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/pt_BR/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/pt_BR/messages.json deleted file mode 100644 index a5aa2f9..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/pt_BR/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Aplicar mudanças" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Ativar meus filtros personalizados" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Exportar" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "meus-filtros-estáticos-do-ublock_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importar e anexar" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Meus filtros" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Permitir os filtros personalizados que requerem confiança" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Não adicionar filtros de fontes não confiáveis." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Aplicar mudanças" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Auto-atualizar as listas de filtros" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Desatualizada." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Uma URL por linha. As URLs inválidas serão ignoradas silenciosamente." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Anúncios" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Aborrecimentos" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Avisos dos cookies" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Personalizar" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Embutidos" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Proteção contra malware, segurança" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multi-propósito" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privacidade" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regiões, idiomas" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Widgets sociais" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignorar filtros cosméticos genéricos" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Os filtros cosméticos genéricos são aqueles filtros cosméticos os quais são destinados a serem aplicados em todos os sites da web. Ativar esta opção eliminará a sobrecarga da memória e da CPU adicionada as páginas da web como um resultado de lidar com filtros cosméticos genéricos.\n\nÉ recomendado ativar esta opção em dispositivos menos poderosos." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importar..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Última atualização: {{ago}}.\nClique para forçar uma atualização." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Listas de hospedeiros bloqueados" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} usados de {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} filtros de rede + {{cosmeticFilterCount}} filtros cosméticos de:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Um erro de rede impediu o recurso de ser atualizado." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Listas de filtros" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Os filtros cosméticos servem pra esconder elementos de uma página da web os quais são considerados um incômodo visual e os quais não podem ser bloqueados pelas engines de filtragem baseadas em requisições de rede." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Analisar e impor filtros cosméticos" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Limpar todos os caches" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspender atividade da rede até que todas as listas de filtros estejam carregadas" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Atualizar agora" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Atualizando..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "visualizar conteúdo" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GBs" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KBs" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MBs" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Fazer backup no arquivo" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "meu-backup-do-ublock_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "As próprias listas de filtros do uBO estão hospedadas gratuitamente nos seguintes \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>: " - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Um CDN escolhido aleatoriamente é usado quando uma lista de filtros precisa ser atualizada" - }, - "aboutChangelog": { - "description": "", - "message": "Changelog" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Código fonte (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Colaboradores" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Dependências externas (compatíveis com GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Listas de filtros" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Sobre" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Política de privacidade" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Resetar para as configurações padrão…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Todas as suas configurações serão removidas, e o uBlock₀ reiniciará.\n\nResetar o uBlock₀ para as configurações de fábrica?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Restaurar do arquivo..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Todas as suas configurações serão sobrescritas usando dados do backup salvos em {{time}}, e o uBlock₀ reiniciará. \n\nSobrescrever todas as configurações existentes usando os dados do backup?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Os dados não puderam ser lidos ou são inválidos" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Código fonte" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Traduções" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Configurações avançadas" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Aviso! Mude estas configurações avançadas por sua própria conta e risco." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Visualizador de recursos" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Clique pra carregar" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Este nome de dispositivo:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Importar do armazenamento na nuvem" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importar do armazenamento na nuvem e unir com as configurações atuais" - }, - "cloudPush": { - "description": "tooltip", - "message": "Exportar pro armazenamento na nuvem" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Bloquear elemento no frame..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subscrever na lista de filtros... " - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Permitir temporariamente grandes elementos de mídia" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Visualizar código fonte…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Painel" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Aviso! Você tem mudanças não salvas" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignorar" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Ficar" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Voltar" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Fechar esta janela" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Prosseguir" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanentemente" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Temporariamente" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Não me avisar de novo sobre este site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Achado em:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "sem parâmetros" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Desativar o bloqueio restrito para {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "O uBlock Origin impediu a seguinte página de carregar:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Por causa do seguinte filtro:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Página bloqueada" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Esta entrada deve ser a última" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} dias atrás" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} horas atrás" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} minutos atrás" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "um dia atrás" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "uma hora atrás" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "um minuto atrás" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Erro da rede: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Finalmente, um bloqueador eficiente. Com baixo uso de memória e CPU." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "desligado" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Aplicar mudanças" - }, - "genericBytes": { - "description": "", - "message": "bytes" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Copiar pra área de transferência" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Alternar bloqueio de rolagem" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Reverter" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Selecionar tudo" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Submeter" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Erros: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Todos" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Sem abas" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtrar conteúdo do coletor" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domínio" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filtro" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Tipo" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Limpar coletor" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Aba atual" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Alternar o inspetor do DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Contexto" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filtro" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Lista de filtros" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Detalhes" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Grupos" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Contexto raiz" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Regra" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Tipo" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Formatação" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Simples" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Lista" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabela" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "Wiki do uBlock Origin: O coletor" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pausar coletor (descartar todos os dados que entram)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Alternar o painel do pop-up" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Recarregar o conteúdo da aba" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "primário" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "de terceiros" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "permitido" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "bloqueado" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "importante" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modificado" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Não" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Opções de filtragem do coletor" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Alternar filtragem do coletor" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "As entradas do coletor que não preencherem todas as três condições abaixo serão descartadas automaticamente:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Contexto" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filtro/regra" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Grupos" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Hora" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Ocultar colunas:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Usar {{input}} linhas por entrada no modo expandido verticalmente" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Preservar entradas dos últimos {{input}} minutos" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Preservar no máximo {{input}} entradas por aba" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preservar no máximo {{input}} carregamentos de página por aba" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Filtro estático \u003Ccode>{{filter}}\u003C/code> achado em:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "O filtro estático não pôde ser achado em nenhuma das listas de filtros ativadas atualmente" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Filtro estático" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} requisições da rede de {{type}} {{br}}cujo endereço de URL corresponde {{url}} {{br}}e o qual se origina em {{origin}},{{br}}{{importance}} há um filtro de exceção correspondente." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Permitir" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "de qualquer lugar" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "qualquer tipo" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Bloquear" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "mesmo se" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "exceto quando" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "de “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "tipo “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Contexto:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Regra da URL" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Tipo:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Despausar coletor" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Bloquear elemento..." - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Filtros cosméticos" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Clique, Ctrl-clique" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Criar" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Filtros de rede" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Escolher" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Pré-visualizar" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Sair" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "scripts primários" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "de terceiros" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "frames de terceiros" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/Imagens de terceiros" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "scripts de terceiros" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "todos" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "nesta página" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Bloqueado(s) nesta página" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "requisições bloqueadas" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "desde a instalação" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Bloqueado(s) desde a instalação" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domínios conectados" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} de {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domínios conectados" - }, - "popupImageRulePrompt": { - "description": "", - "message": "imagens" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "scripts inline" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Menos" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Mais" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Filtragem cosmética" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Grandes elementos de mídia" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Janelas pop-up" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Fontes remotas" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "ou" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Clique: desativa/ativa o uBlock₀ neste site.\n\nCtrl+clique: desativa o uBlock₀ só nesta página." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Clique pra desativar o uBlock₀ neste site.\n\nCtrl+clique pra desativar o uBlock₀ só nesta página." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Clique pra ativar o uBlock₀ neste site." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Abrir painel" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Regras globais: esta coluna é para as regras as quais se aplicam a todos os sites." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Regras locais: esta coluna é para regras as quais se aplicam só ao site atual.\nRegras locais substituem regras globais." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Abrir o coletor" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Alternar a filtragem cosmética neste site" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Clique pra desativar a filtragem cosmética neste site" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Clique pra ativar a filtragem cosmética neste site" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Alternar o bloqueio de grandes elementos de mídia neste site" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Clique pra bloquear grandes elementos de mídia neste site" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Clique pra não mais bloquear grandes elementos de mídia neste site" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Alternar o bloqueio de todos os pop-ups neste site" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Clique pra bloquear todos os pop-ups neste site" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Clique pra não mais bloquear todos os pop-ups neste site" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Alternar o bloqueio de fontes remotas neste site" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Clique pra bloquear fontes remotas neste site" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Clique pra não mais bloquear fontes remotas neste site" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Clique pra desativar o JavaScript neste site" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Clique pra não mais desativar o JavaScript neste site" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Entrar no modo de seleção de elemento" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Reportar um problema com este site da web" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Clique pra reverter suas mudanças." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Clique pra tornar suas mudanças permanentes." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Entrar no modo do elemento zapper" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versão" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relaxar modo de bloqueio" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Submeter" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "minhas-regras-dinâmicas-do-ublock_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Editar" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Descartar" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Salvar" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Exportar pro arquivo" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Regras da sintaxe: \u003Ccode>ação do tipo de destino da origem\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>documentação completa\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Lista das suas regras de filtragem dinâmica." - }, - "rulesImport": { - "description": "", - "message": "Importar do arquivo..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Minhas regras" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Regras permanentes" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Reverter" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Organizar:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destino" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Fonte" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Tipo de regra" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Regras temporárias" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Comportamento padrão" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Estes comportamentos padrão podem ser substituídos numa base por site" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Avançado" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Recursos adequados só pra usuários técnicos." - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Eu sou um usuário avançado" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "configurações avançadas" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Aparência" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Ativar suporte de armazenamento na nuvem" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Ocultar os espaços reservados dos elementos bloqueados" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Cores amigáveis para daltônicos" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Fazer uso do menu de contexto aonde apropriado" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Desativar auditoria dos hyperlinks" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Mostrar o número de requisições bloqueadas no ícone" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Último backup:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Última restauração:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Bloquear relatórios do CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Desativar filtragem cosmética" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Bloquear elementos de mídia maiores do que {{input}} KBs" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Bloquear fontes remotas" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Desativar JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Configurações" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Desativar pré-busca (pra impedir quaisquer requisições de redes bloqueadas)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Cor de destaque personalizada" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Desativar dicas das ferramentas" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Revelar nomes canônicos" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Impedir o WebRTC de vazar endereços de IP locais" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Digite um atalho" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Atalhos" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Mostrar Painel" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Mostrar Coletor" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Coletor" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Armazenamento usado: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Subscrever" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Adicionar a seguinte URL a sua lista de filtros personalizados?\n\nTítulo: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Achar relatórios similares" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Abrir" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Suporte" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redigir" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Criar um novo relatório" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentação" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Leia a documentação em \u003Ccode>uBlock/wiki\u003C/code> para saber sobre todos os recursos do uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Perguntas e suporte" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Respostas a perguntas e outros tipos de suporte de ajuda são fornecidas no subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Problemas com o filtro/o site da web está quebrado" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Reporte problemas com os filtros em sites específicos da web no \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">rastreador de problemas do \u003Ccode>uBlockOrigin/uAssets\u003C/code>\u003C/span>. \u003Cu>Requer uma conta no GitHub.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Importante:\u003C/b> Evite usar outros bloqueadores com propósito similar junto do uBlock Origin pois isto pode causar problemas com filtros em sites da web específicos." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Dicas:\u003C/b> Certifique-se que sua lista de filtros está atualizada. \u003Cspan data-url=\"logger-ui.html#_\">O coletor\u003C/span> é a ferramenta primária pra diagnosticar problemas relacionados com os filtros." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Relatório de erro" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Reporte problemas com o próprio uBlock Origin no \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>rastreador de problemas\u003C/span>. \u003Cu>Requer uma conta no GitHub.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Informações para solução de problemas" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Abaixo estão informações técnicas que poderiam ser úteis quando voluntários estão tentando ajudar você a resolver um problema." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Atenção:\u003C/b> Informações potencialmente privadas ou sensíveis são eliminadas por padrão. As informações eliminadas podem tornar mais difícil resolver um problema." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Rotula a página da web como \"NSFW\" (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">\"Não é Seguro no Trabalho\"\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Reportar um problema com o filtro" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Pra evitar sobrecarregar os voluntários com relatórios duplicados por favor certifique-se que o problema já não foi reportado." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "As listas de filtros são atualizadas diariamente. Certifique-se que seu problema ainda não foi abordado nas listas de filtros mais recentes." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verifique se o problema ainda existe após recarregar a página da Web problemática." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "A página da web..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "— Escolha uma entrada —" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Mostra os anúncios ou restos de anúncios" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Tem sobreposições ou outros incômodos" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detecta o uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Tem problemas relacionados a privacidade" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Funciona mal quando o uBlock Origin está ativado" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Abre abas ou janelas indesejadas" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Endereço da página da web:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Não redigir" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Alternar filtragem cosmética" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Alternar JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Não conseguiu filtrar apropriadamente na inicialização do navegador. Recarregue a página pra garantir a filtragem apropriada." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Aplicar mudanças" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Exportar" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "meus-sites-confiaveis-do-ublock_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importar e anexar" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Sites confiáveis" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "As diretivas dos sites confiáveis ditam em quais páginas da web o uBlock Origin deve ser desativado. Uma entrada por linha. " - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/pt_PT/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/pt_PT/messages.json deleted file mode 100644 index 514c74a..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/pt_PT/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Aplicar alterações" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Ativar os meus filtros personalizados" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Exportar…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-custom-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importar e anexar…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Os meus filtros" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Permitir filtros personalizados que requeiram confiança" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Não adicione filtros de fontes não confiáveis." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Aplicar alterações" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Atualizar automaticamente listas de filtros" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Desatualizada." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Um URL por linha. Os URLs inválidos serão ignorados silenciosamente." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Anúncios" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Inconveniências" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Avisos de cookies" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Personalizados" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Integrados" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Proteção contra malware, segurança" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multifunções" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privacidade" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regiões e idiomas" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Widgets sociais" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignorar filtros cosméticos genéricos" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Os filtros cosméticos genéricos são destinados para aplicação em todos os sites. Se ativar esta opção irá eliminar o excesso de utilização da memória e CPU, como resultado da manipulação dos filtros cosméticos genéricos.\n\nRecomendamos a ativação desta opção em dispositivos mais fracos." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importar…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Última atualização: {{ago}}.\nClique para forçar uma atualização." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Listas de servidores bloqueados" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} utilizados de {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} filtros de rede + {{cosmeticFilterCount}} filtros cosméticos a partir de:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Um erro de rede impediu que o recurso fosse atualizado." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Listas de filtros" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Os filtros cosméticos servem para ocultar elementos numa página web que sejam considerados incómodo visual e que não podem ser bloqueados pelo motor de filtragem baseado em pedidos de rede." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Analisar e aplicar filtros cosméticos" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Limpar todas as caches" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspender a atividade da rede até que todas as listas de filtros sejam carregadas" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Atualizar agora" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "A atualizar…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "ver conteúdo" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Copiar para ficheiro…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "As listas de filtros do uBO estão livremente hospedadas nas seguintes \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Uma CDN escolhida aleatoriamente é utilizada quando uma lista de filtros precisar de ser atualizada." - }, - "aboutChangelog": { - "description": "", - "message": "Registo de alterações" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Código fonte (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Contribuidores" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Dependências externas (compatíveis com GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Listas de filtros" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Acerca" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Política de privacidade" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Restaurar predefinições…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Todas as suas definições serão removidas e o uBlock₀ será reiniciado.\n\nRestaurar predefinições do uBlock₀?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Restaurar a partir de ficheiro…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Todas as suas definições serão substituídas utilizando os dados da cópia de segurança de {{time}}, e o uBlock₀ irá reiniciar.\n\nSubstituir todas as definições existentes utilizando os dados da cópia de segurança?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Os dados não puderam ser lidos ou são inválidos" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Código fonte" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Traduções" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Definições avançadas" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Atenção! Altere estas definições avançadas por sua conta e risco." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Visualizador de recursos" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Clique para carregar" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Nome deste dispositivo:" - }, - "cloudNoData": { - "description": "", - "message": "... ..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Importar a partir da nuvem" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importar a partir da nuvem e juntar às definições atuais" - }, - "cloudPush": { - "description": "tooltip", - "message": "Exportar para a nuvem" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Bloquear elemento no frame…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subscrever à lista de filtros…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Permitir temporariamente elementos multimédia grandes" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Ver código fonte…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Painel de controlo" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Atenção! Tem alterações não guardadas" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignorar" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Permanecer" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Retroceder" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Fechar esta janela" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Proceder" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanentemente" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Temporariamente" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Não me avisar novamente acerca deste site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Encontrado em:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "sem parâmetros" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Desativar bloqueio estrito para {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "O uBlock Origin impediu que a seguinte página fosse carregada:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Devido ao seguinte filtro:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Página bloqueada" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Esta entrada deve ser a última" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "há {{value}} dias" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "há {{value}} horas" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "há {{value}} minutos" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "há um dia" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "há uma hora" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "há um minuto" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Erro de rede: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Finalmente, um bloqueador eficiente. Leve na CPU e memória." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "desativado" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Aplicar alterações" - }, - "genericBytes": { - "description": "", - "message": "bytes" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Copiar para a área de transferência" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Alternar deslocamento bloqueado" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Reverter" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Selecionar tudo" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Submeter" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Erros: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Todos" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Sem separador" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtrar conteúdo do registo" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domínio" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filtro" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Tipo" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Limpar registador" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Separador atual" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Alternar o inspetor DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Contexto" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filtro" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Lista de filtros" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Detalhes" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Tipo de relação" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Contexto raiz" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Regra" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Tipo" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Sem formatação" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Lista" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabela" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: O registador" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pausar registador (descartar todos os dados a receber)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Alternar o painel de popup" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Recarregar o conteúdo do separador" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "primário" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "terceiro" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "permitido" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "bloqueado" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modificado" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Não" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Opções de filtragem do registador" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Alternar filtragem do registador" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Entradas do registador que não preenchem todas as três condições abaixo serão automaticamente descartadas:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Contexto" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filtro/regra" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Tipo de relação" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Hora" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Ocultar colunas:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Utilizar {{input}} linhas por entrada no modo verticalmente expandido" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Preservar entradas dos últimos {{input}} minutos" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Preservar no máximo {{input}} entradas por separador" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preservar no máximo {{input}} carregamentos de página por separador" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Filtro estático \u003Ccode>{{filter}}\u003C/code> encontrado em:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "O filtro estático não pôde ser encontrado em quaisquer das listas de filtros ativadas atualmente" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Filtro estático" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} pedidos de rede de {{type}} {{br}}cujo endereço URL corresponde a {{url}} {{br}}e que origina {{origin}},{{br}}{{importance}} existe um filtro de exceção correspondente." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Permitir" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "de qualquer lugar" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "qualquer tipo" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Bloquear" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "mesmo se" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "exceto quando" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "de \"{{origin}}\"" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "tipo \"{{type}}\"" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Contexto:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Regra do URL" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Tipo:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Retomar registador" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Bloquear elemento…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Filtros cosméticos" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Clique, Ctrl-clique" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Criar" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Filtros de rede" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Escolher" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Pré-visualizar" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Sair" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "scripts primários" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "terceiros" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "frames de terceiros" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/imagens de terceiros" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "scripts de terceiros" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "tudo" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "nesta página" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Bloqueado(s) nesta página" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "pedidos bloqueados" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "desde a instalação" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Bloqueado(s) desde a instalação" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domínios ligados" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} de {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domínios ligados" - }, - "popupImageRulePrompt": { - "description": "", - "message": "imagens" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "scripts inline" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Menos" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Mais" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Filtragem cosmética" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Elementos multimédia grandes" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Janelas pop-up" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Tipos de letra remotos" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "ou" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Clique: desativar/ativar o uBlock₀ para este site.\n\nCtrl+clique: desativar o uBlock₀ apenas nesta página." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Clique para desativar o uBlock₀ para este site.\n\nCtrl+clique para desativar o uBlock₀ apenas nesta página." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Clique para ativar o uBlock₀ para este site." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Abrir o painel de controlo" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Regras globais: esta coluna é para as regras que se aplicam a todos os sites." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Regras locais: esta coluna é para as regras que se aplicam apenas a este site.\nAs regras locais sobrepõem-se às regras globais." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Abrir o registador" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Alternar a filtragem cosmética para este site" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Clique para desativar a filtragem cosmética neste site" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Clique para ativar a filtragem cosmética neste site" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Alternar o bloqueio de elementos multimédia grandes para este site" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Clique para bloquear elementos multimédia grandes neste site" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Clique para deixar de bloquear elementos multimédia grandes neste site" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Alternar o bloqueio de todos os popups para este site" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Clique para bloquear todos os popups neste site" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Clique para deixar de bloquear todos os popups neste site" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Alternar o bloqueio de tipos de letra remotos para este site" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Clique para bloquear os tipos de letra remotos neste site" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Clique para deixar de bloquear os tipos de letra remotos neste site" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Clique para desativar JavaScript neste site" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Clique para deixar de desativar JavaScript neste site" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Entrar no modo de seleção de elemento" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Relatar um problema neste website" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Clique para reverter as suas alterações." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Clique para tornar as suas alterações permanentes." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Entrar no modo \"zapper\" de elemento" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versão" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relaxar modo de bloqueio" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Aplicar" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Editar" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Descartar" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Guardar" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Exportar para ficheiro…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Regra de sintaxe: \u003Ccode>origem destino tipo ação\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>documentação completa\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Lista das suas regras de filtragem dinâmica." - }, - "rulesImport": { - "description": "", - "message": "Importar a partir de ficheiro…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "As minhas regras" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Regras permanentes" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Reverter" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Ordenar:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destino" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Origem" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Tipo de regra" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Regras temporárias" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Comportamento predefinido" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Estes comportamentos predefinidos podem ser substituídos numa base por site" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Avançadas" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Funcionalidades adequadas apenas para utilizadores avançados" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Sou um utilizador avançado" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "definições avançadas" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Aparência" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Ativar suporte para armazenamento na nuvem" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Ocultar espaços ocupados por elementos bloqueados" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Cores amigáveis para daltónicos" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Fazer uso do menu de contexto onde apropriado" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Desativar auditoria de hiperligações" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Mostrar o número de pedidos bloqueados no ícone" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Última cópia de segurança:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Último restauro:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Bloquear relatórios CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Desativar filtragem cosmética" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Bloquear elementos multimédia maiores do que {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Bloquear tipos de letra remotos" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Desativar JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Definições" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Desativar pré-obtenção (para impedir qualquer ligação para pedidos de rede bloqueados)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Cor de destaque personalizada" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Desativar dicas" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Desvendar nomes canónicos" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Impedir o WebRTC de vazar endereços IP locais" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Digitar um atalho" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Atalhos" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Mostrar painel de controlo" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Mostrar registador" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Registador" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Armazenamento utilizado: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Subscrever" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Adicionar o seguinte URL à sua lista de filtros personalizados?\n\nTítulo: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Encontrar relatórios semelhantes" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Abrir" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Suporte" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redigir" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Criar novo relatório" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentação" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Leia a documentação em \u003Ccode>uBlock/wiki\u003C/code> para saber mais acerca de todas as funcionalidades do uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Perguntas e suporte" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "As respostas às perguntas e outros tipos de ajuda são fornecidas no subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Problemas de filtros/website está com falhas" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Relate problemas de filtros com websites específicos para o \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">controlador de problemas \u003Ccode>uBlockOrigin/uAssets\u003C/code>\u003C/span>. \u003Cu>Requer uma conta GitHub.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Importante:\u003C/b> evite a utilização de outros bloqueadores com propósitos semelhantes juntamente com o uBlock Origin, dado que isto pode causar problemas com filtros em websites específicos." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Dicas:\u003C/b> certifique-se de que as suas listas de filtros estão atualizadas. \u003Cspan data-url=\"logger-ui.html#_\">O registador\u003C/span> é a ferramenta principal para diagnosticar problemas relacionados com filtros." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Relatório de erros" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Relate problemas com o próprio uBlock Origin para o \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">controlador de problemas \u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>\u003C/span>. \u003Cu>Requer uma conta GitHub.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Informação sobre resolução de problemas" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Abaixo encontra-se informação técnica que pode ser útil quando voluntários estão a tentar ajudar-lhe a resolver um problema." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Importante:\u003C/b> a informação potencialmente privada ou sensível é redigida por predefinição. A informação redigida pode tornar mais difícil a resolução de um problema." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Rotular a página web como “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Não seguro para o trabalho”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Relatar um problema de filtro" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Para evitar sobrecarregar os voluntários com relatórios duplicados, por favor verifique se o problema ainda não foi relatado." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "As listas de filtros são atualizadas diariamente. Certifique-se de que o seu problema ainda não foi abordado nas listas de filtros mais recentes." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verifique se o problema ainda existe após o recarregamento da página web problemática." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "A página web…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Escolha uma entrada --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Mostra anúncios ou restos de anúncios" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Tem sobreposições ou outros incómodos" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Deteta o uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Tem problemas relacionados com a privacidade" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Falha quando o uBlock Origin é ativado" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Abre separadores ou janelas indesejáveis" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Endereço da página web:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Não redigir" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Alternar filtragem cosmética" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Alternar JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Não foi possível filtrar adequadamente no arranque do navegador. Recarregue a página para assegurar uma filtragem adequada." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Aplicar alterações" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Exportar…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importar e anexar…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Sites fidedignos" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "As diretivas de sites fidedignos determinam em que páginas web o uBlock Origin deve ser desativado. Uma entrada por linha." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ro/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ro/messages.json deleted file mode 100644 index 78da463..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ro/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Aplică modificările" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Exportă" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "filtrele-mele-statice-ublock_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importă și adaugă" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filtrele mele" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Nu adăuga filtre din surse nesigure." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Aplică modificările" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Actualizare automată a listelor de filtre." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "învechit" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "O adresă pe linie. Adresele nevalide vor fi ignorate fără avertizare." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Reclame" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Neplăceri" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Personalizare" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Încorporate" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Domenii malițioase" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multifuncționale" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Intimitate" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regiuni, limbi" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Widget-uri sociale" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignoră filtrele cosmetice generice" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "\u003Cp>FIltrele cosmetice generice sunt acelea care se aplică tuturor site-urilor.\u003Cp>Deși sunt folosite eficient de uBlock₀, filtrele cosmetice generice pot contribui semnificativ la creșterea cantității de memorie și a utilizării procesorului pe anumite pagini, în special cele de mari dimensiuni și care sunt încărcate pentru mult timp.\u003Cp>Activarea acestei opțiuni va elimina încărcarea suplimentară a memoriei și a procesorului rezultată în urma folosirii filtrelor cosmetice generice, și, de asemenea, va micșora impactul uBlock₀ asupra sistemului.\u003Cp>Se recomandă activarea acestei opțiuni pe dispozitivele mai puțin performante." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importă…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Ultima actualizare: {{ago}}.\nClic pentru a forța o actualizare." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lista adreselor blocate" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} folosite din {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} filtre rețea + {{cosmeticFilterCount}} filtre vizuale din:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "O eroare de rețea a împiedicat actualizarea resursei." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Liste de filtre" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Filtrele cosmetice servesc la ascunderea elementelor dintr-o pagină web care sunt considerate a fi deranjante din punct de vedere vizual și care nu pot fi blocate de motoarele de filtrare bazate pe solicitări de rețea." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Citește și aplică filtrele vizuale." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Golește tot din memoria tampon" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspendă activitatea în rețea până când se încarcă toate listele cu filtre" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Actualizează acum" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Se actualizează…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "vezi conținut" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Copie de rezervă…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "salvarea-mea-ublock_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "FIltrele proprii uBO sunt găzduite gratuit de următoarele \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">rețele de distribuție de conținut\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Un CDN ales aleator va fi folosit când listele de filtre vor trebui actualizate" - }, - "aboutChangelog": { - "description": "", - "message": "Jurnal de modificări" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Cod sursă (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Contribuitori" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Dependențe externe (compatibile GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Liste de filtre" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Despre" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Politică de confidențialitate" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Restabilește reglările inițiale…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Toate configurările tale vor fi eliminate și uBlock₀ va reporni.\n\nRestaurează uBlock₀ la configurările din fabrică?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Restabilește din fișier…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Toate opțiunile vor fi suprascrise cu datele din {{time}} și uBlock₀ va fi repornit.\n\nDorești să suprascrii toate opțiunile folosind datele salvate?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Datele nu au putut fi citite sau sunt nevalide" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Cod sursă" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Traduceri" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Setări avansate" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Atenție: schimbă aceste setări avansate pe propriul risc." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Vizualizator de resurse" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Apasă pentru a încărca" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Numele acestui dispozitiv:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Importă din stocarea în cloud" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importă din stocarea în cloud și combină cu setările curente" - }, - "cloudPush": { - "description": "tooltip", - "message": "Exportă către stocarea în cloud" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Blochează un element în cadru…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Înscrie-te la lista de filtre…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Permite temporar elementele media mari" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Vezi sursa" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Panou de control" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Atenție! Ai modificări nesalvate" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignoră" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Așteaptă" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Înapoi" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Închide această fereastră" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Continuă" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanent" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Temporar" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Nu mă avertiza din nou despre acest sit" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Găsit în:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "fără parametri" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Dezactivează blocarea strictă pentru {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin a prevenit încărcarea acestei pagini:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Din cauza următorului filtru" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Pagină blocată" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Aceasta intrare trebuie sa fie ultima" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "în urmă cu {{value}} zile" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "acum {{value}} ore" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "acum {{value}} minute" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "în urmă cu o zi" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "acum o oră" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "acum un minut" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Eroare de rețea: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "În sfârșit, un blocant eficient. Are un impact mic asupra procesorului și memoriei." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "dezactivat" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Aplică modificările" - }, - "genericBytes": { - "description": "", - "message": "octeți" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Copiază în clipboard" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Activează/Dezactivează Blocarea răsfoirii" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Înlătură" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Alege tot" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Trimite" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Erori: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Tot" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Fără tab-uri" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtrează conținutul jurnalierului" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domeniu" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filtru" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Tip" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Şterge logger-ul" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Fila curentă" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Comută inspector DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Context" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filtru" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Lista filtrelor" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Detalii" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Apartenență" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Context de bază" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Regulă" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Tip" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Marcaj" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Simplu" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Listă" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabel" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Jurnal" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Oprește logger-ul(ignoră tot traficul primit)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Comută panou pop-up" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Reîncarcă conținutul tab-ului" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "primare" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "terțe" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "permis" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blocat" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "activ" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modificat" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Nu" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Opțiunile de filtrare ale jurnalierului" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Comută filtrarea jurnalierului" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Intrările din jurnal care nu îndeplinesc cele trei condiții de mai jos vor fi respinse automat:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Context" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filtru/regulă" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Apartenență" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Timp" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Ascunde coloanele:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Folosește {{input}} linii pentru intrările în modul vertical expandat" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Păstrează intrările din ultimele {{input}} minute" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Păstrează cel mult {{input}} intrări pe filă" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Păstrează cel mult {{input}} încărcări de pagină pe filă" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Filtrul static \u003Ccode>{{filter}}\u003C/code> găsit în:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Filtrul static \u003Ccode>{{filter}}\u003C/code> nu se găsește în niciuna dintre listele de filtre activate" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Filtru static" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} cererile de rețea de {{type}} {{br}}când adresa URL corespunde cu {{url}} {{br}}și care își au originea {{origin}},{{br}}{{importance}} există un filtru corespondent de excepție." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Permite" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "de oriunde" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "orice tip" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Blochează" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "chiar dacă" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "exceptând când" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "de la “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "tip “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Context:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Regulă URL" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Tip:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Pornește logger-ul" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Blochează elementul…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Filtre vizuale" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Clic, Ctrl-clic" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Creează" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Filtre de rețea" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Alege" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Previzualizare" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Ieșire" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "scripturi din saitul primar" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "terțe" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "cadru" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "cadre din saituri terțe" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/imagini terțe" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "scripturi din saituri terțe" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "tot" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "pe această pagină" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blocate pe această pagină" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "cereri blocate" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "de la instalare" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blocate de la instalare" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} sau {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domenii conectate" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} din {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domenii conectate" - }, - "popupImageRulePrompt": { - "description": "", - "message": "imagini" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "scripturi înglobate" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Mai puțin" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Mai multe" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Filtre vizuale" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Elemente media mari" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Ferestre suprapuse" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Fonturi externe" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "sau" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Clic: dezactivează/activează uBlock₀ pentru acest sait.\n\nCtrl+clic: dezactivează uBlock₀ doar pe această pagină." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Clic ca să dezactivezi uBlock₀ pe acest site.\n\nCtrl+clic ca să dezactivezi uBlock₀ doar pe această pagină." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Clic pentru a activa uBlock₀ pe acest site." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Deschide panoul de control" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Reguli globale: această coloană este pentru regulile care se aplică tuturor site-urilor." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Reguli locale: această coloană este pentru regulile care se aplică doar site-ului curent.\nRegulile locale suprascriu pe cele globale." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Deschide jurnalul" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Comută filtrarea vizuală pentru acest sait" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Clic pentru a dezactiva filtrele vizuale pe acest site" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Clic pentru a activa filtrele vizuale pe acest site" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Modifică modul de blocare a elementelor media de mari dimensiuni pentru acest sait" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Clic pentru a bloca elementele media de mari dimensiuni pe acest site" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Clic pentru a nu mai bloca elementele media de mari dimensiuni pe acest site" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Comută blocarea tuturor popup-urilor pentru acest sait" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Clic pentru a bloca toate popup-urile pe acest site" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Clic pentru a nu mai bloca toate popup-urile pe acest site" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Comută blocarea fonturilor externe pentru acest sait" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Clic pentru a bloca fonturile externe pe acest site" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Clic pentru a nu mai bloca fonturile externe pe acest site" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Apasă pentru a dezactiva JavaScript pe acest site" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Apasă pentru a nu mai dezactiva JavaScript pe acest site" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Modul alege element" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Raportează o eroare cu acest sit" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Apasă pentru a renunța la modificări." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Apasă pentru a face modificările permanente." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Accesați modul de eliminare elemente" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versiune" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relaxați modul de blocare" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Aplică" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "regulile-mele-dinamice-ublock_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Modifică" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Elimină" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Salvează" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Exportă în fișier..." - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Sintaxa pentru regulă: \u003Ccode>sursă destinație tip acțiune\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>documentație\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Lista regulilor tale de filtrare dinamică." - }, - "rulesImport": { - "description": "", - "message": "Importă din fișier…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Regulile mele" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Reguli permanente" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Înlătură" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sortare:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destinaţia" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Sursa" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Tipul regulei" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Reguli temporare" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Comportament implicit" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Aceste comportamente implicite pot fi suprascrise pentru fiecare sait în parte" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Avansate" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Proprietăți potrivite pentru utilizatorii avansați" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Sunt un utilizator avansat" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "setări avansate" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Aspect" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Activează suportul pentru stocare în cloud" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Ascunde substituenții elementelor blocate" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Accesibil pentru daltonism" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Folosește meniul contextual unde este cazul" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Dezactivează auditarea hiperlinkurilor" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Arată numărul cererilor blocate pe pictogramă" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Ultima copie de siguranță:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Ultima restaurare:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Blochează rapoartele CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Dezactivează filtrele cosmetice" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Blochează elementele media mai mari de {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Blochează fonturile de la distanță" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Dezactivare JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Opțiuni" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Dezactivează preluarea în avans (pentru a preveni orice conexiune ce s-ar încadra în cereri de rețea blocate)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Culoare de accentuare personalizată" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Aspect" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Dezactivează indiciile" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Dezvăluie numele canonice" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Previne dezvăluirea adreselor IP locale prin intermediul protocolului WebRTC" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Tastează o comandă rapidă" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Comenzi rapide" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Deschide panoul de control" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Arată jurnalul" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Jurnal" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Spațiu de stocare utilizat: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Abonează-te" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock: Adaugă următorul URL în lista ta de filtre personalizate?\n\nTitlu: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Găsește sesizări similare" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Deschide" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Asistență" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redactează" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Crează o nouă sesizare" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentație" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Citește documentația de la \u003Ccode>uBlock/wiki\u003C/code> pentru a învăța totul despre caracteristicile uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Întrebări și ajutor" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Răspunsuri la întrebări și alte informații de ajutor sunt disponibile pe subreddit-ul \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Probleme cu filtrele/siturile defecte" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Raportează probleme cu filtrele pe anumite situri în \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> centralizatorul de probleme\u003C/span>. Necesită un cont GitHub." - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": ">Important:\u003C/b> Evită să folosești alte extensii cu același scop ca uBlock Origin, deoarece pot exista probleme cu filtrele pe anumite situri." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Sfat:\u003C/b> Asigurați-vă că filtrele sunt actualizate. \u003Cspan data-url=\"logger-ui.html#_\">Registrul cu înregistrări\u003C/span> este unealta principală pentru diagnosticarea problemelor cu filtrele." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Raportare defecte" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Raportați probleme cu uBlock Origin în \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>centralizatorul de probleme\u003C/span>. Necesită un cont GitHub." - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Informații pentru depanare" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Mai jos sunt informații care îi pot ajuta pe voluntarii care încearcă să vă ajute în rezolvarea problemelor." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Informațiile potențial private sau sensibile sunt redactate implicit. Aceasta poate face mai dificilă rezolvarea problemelor." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Etichetează pagina ca fiind „NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Raportează o problemăcu filtrele" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Pentru a evita suprasolicitarea voluntarilor, vă rugăm să verificați dacă această problemă nu a fost deja raportată." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Listele cu filtre sunt actualizate zilnic. Verificați că problema dumneavoastră nu a fost rezolvată în cele mai recente liste cu filtre." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verificați că problema există și după reîncărcarea paginii." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Pagina web…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Alege o intrare --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Arată reclame sau resturi de reclame" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Are acoperiri sau alte neplăceri" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detectează uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Are probleme privind confidențialitatea" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Nu mai funcționează când uBlock Origin este activat" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Deschide file sau ferestre nedorite" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Adresa paginii web:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Anulează redactarea" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Comută filtrele cosmetice" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Comută JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Nu s-a putut filtra corespunzător in timpul lansării browser-ului. Reîncarcați paginile" - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Aplică modificările" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Exportă" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "situri-de-încredere-ublock_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importă și adaugă" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Situri de încredere" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Directivele privind siturile de încredere stabilesc pe ce pagini web trebuie dezactivat uBlock Origin. O intrare pe linie." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ru/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ru/messages.json deleted file mode 100644 index 4b63a4c..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ru/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Применить изменения" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Включить мои пользовательские фильтры" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Экспортировать…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Импортировать и добавить…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Мои фильтры" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Разрешить пользовательские фильтры, требующие доверия" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Не добавляйте фильтры из ненадёжных источников." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Применить изменения" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Автообновление списков фильтров" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Устарел." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Один URL на строку. Неверные URL будут проигнорированы без предупреждения." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Реклама" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Раздражающие элементы" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Уведомления о файлах куки" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Пользовательские" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Встроенные" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Защита от вредоносных сайтов, безопасность" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Многоцелевые" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Приватность" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Регионы, языки" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Виджеты соцсетей" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Игнорировать общие косметические фильтры" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Общие косметические фильтры — это те косметические фильтры, которые должны применяться на всех веб-сайтах. Включение этой опции снизит потребление памяти и избавит процессор от обработки общих косметических фильтров на веб-страницах.\n\nРекомендуется включить эту опцию на недостаточно мощных устройствах." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Импортировать..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Последнее обновление: {{ago}}.\nКликните для принудительного обновления." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Список заблокированных хостов" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} используется из {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} сетевых фильтров + {{cosmeticFilterCount}} косметических фильтров из:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "В результате ошибки сети обновление не произошло." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Списки фильтров" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Косметические фильтры применяются на веб-странице для скрытия элементов, которые создают визуальные помехи, и которые не могут быть заблокированы механизмом фильтрации сетевых запросов." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Парсить и применять косметические фильтры" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Очистить все кэши" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Приостановить сетевую активность, пока не запустятся все списки фильтров" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Обновить сейчас" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Обновление..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "показать содержимое" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "ГБ" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KБ" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "МБ" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Резервное копирование в файл…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Собственные списки фильтров uBO свободно размещены на следующих \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "При обновлении списка фильтров используется выбранный случайным образом CDN" - }, - "aboutChangelog": { - "description": "", - "message": "Список изменений" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Исходный код (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Участники" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Внешние зависимости (GPLv3-совместимые):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Списки фильтров" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "О расширении" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Политика конфиденциальности" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Восстановить настройки по умолчанию..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Все ваши настройки будут удалены, uBlock₀ будет перезапущен. \n\nВосстановить настройки по умолчанию?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Восстановить из файла..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Текущие настройки будут заменены данными из резервной копии от {{time}}, и uBlock₀ будет перезапущен.\n\nПерезаписать все существующие параметры данными из резервной копии?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Данные не могут быть прочитаны или ошибочны" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Исходный код" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Переводы" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Расширенные настройки" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Внимание! Изменяйте эти настройки на свой страх и риск." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Активы" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Нажмите, чтобы загрузить" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Имя этого устройства:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Импорт из облачного хранилища" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Импортировать из облачного хранилища и объединить с текущими настройками" - }, - "cloudPush": { - "description": "tooltip", - "message": "Экспорт в облачное хранилище" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Заблокировать элемент во фрейме..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Установить список фильтров..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Временно разрешить большие медиа-элементы" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Показать исходный код..." - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Панель управления" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Внимание! У вас есть несохраненные изменения" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Игнорировать" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Остаться" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Вернуться" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Закрыть это окно" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Продолжить" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Навсегда" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Временно" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Не предупреждать меня больше про этот сайт" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Найден в:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "без параметров" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Отключить строгую блокировку для {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin предотвратил загрузку следующей страницы:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Из-за следующего фильтра" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Страница заблокирована" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Эта запись должна быть последней" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} дня(-ей) назад" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} часа(-ов) назад" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} минут(-ы) назад" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "день назад" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "час назад" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "минуту назад" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Ошибка сети: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock₀" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Наконец-то, быстрый и эффективный блокировщик для браузеров." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "выключен" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Применить изменения" - }, - "genericBytes": { - "description": "", - "message": "байт" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Скопировать в буфер" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Вкл/Выкл общую прокрутку" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Вернуть" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Выбрать все" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Принять" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Ошибки: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Все" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Закулисные запросы" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "фильтрация записей логгера" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Домен" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Фильтр" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Тип" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Очистить логгер" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Текущая вкладка" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Вкл/Выкл DOM-инспектор" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Контекст" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Фильтр" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Список фильтров" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Подробно" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Сторона" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Контекст корня" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Правило" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Тип" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Простой" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Список" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Таблица" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin вики: Логгер" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Поставить логгер на паузу (отбрасывать все входящие данные)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Вкл/Выкл всплывающую панель" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Перезагрузить содержимое вкладки" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1st-party" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3rd-party" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "allowed" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blocked" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "модифицировано" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Not" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Настройки фильтрации логгера" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Вкл/Выкл фильтрацию логгера" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Записи логгера, не удовлетворяющие всем трём нижеуказанным условиям, будут автоматически отброшены:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Контекст" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Фильтр/правило" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Сторона" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Время" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Скрыть столбцы:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Использовать {{input}} строк для каждой записи при вертикальном расширении" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Хранить записи последних {{input}} минут" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Хранить не больше {{input}} записей на вкладку" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Хранить не больше {{input}} загрузок страницы на вкладку" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Статический фильтр \u003Ccode>{{filter}}\u003C/code> найден в:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Статический фильтр не найден ни в одном списке фильтров, включенных в данный момент" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Статич. фильтр" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} сетевые запросы {{type}}, {{br}}URL которых совпадает с {{url}} {{br}} и которые происходят из {{origin}},{{br}}{{importance}} имеется подходящий фильтр-исключение." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Разрешить" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "откуда угодно" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "любой тип" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Блокировать" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "даже если" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "кроме случаев, когда" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "из “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "типа “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Контекст:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL правило" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Тип:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Снять логгер с паузы" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Блокировать элемент..." - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Косметические фильтры" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Клик, Ctrl+клик" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Создать" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Сетевые фильтры" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Выбрать" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Предпросмотр" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Выйти" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1st-party скрипты" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "3rd-party ресурсы" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "фрейм" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "3rd-party фреймы" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "3rd-party CSS/изображения" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "скрипт" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "3rd-party скрипты" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "все" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "на этой странице" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Заблокировано на этой странице" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "запросов заблокировано" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "с момента установки" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Заблокировано с момента установки" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Доменов подключено" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} из {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "доменов подключено" - }, - "popupImageRulePrompt": { - "description": "", - "message": "изображения" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "inline-скрипты" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Меньше" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Больше" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Косметическая фильтрация" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Большие медиа-элементы" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Всплывающие окна" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Загружаемые шрифты" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "или" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Клик: отключить/включить uBlock₀ для этого сайта.\n\nCtrl+клик: отключить uBlock₀ только на этой странице." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Кликните, чтобы отключить uBlock₀ для этого сайта.\nCtrl+клик, чтобы отключить uBlock₀ только на этой странице." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Кликните, чтобы активировать uBlock₀ для этого сайта." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Открыть панель управления" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Глобальные правила: этот столбец предназначен для правил, применяемых ко всем сайтам." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Локальные правила: этот столбец предназначен для правил, применяемых только к текущему сайту.\nЛокальные правила переопределяют глобальные." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Открыть логгер" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Вкл/Выкл косметическую фильтрацию на этом сайте" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Нажмите, чтобы отключить косметическую фильтрацию на этом сайте" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Нажмите, чтобы включить косметическую фильтрацию на этом сайте" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Вкл/Выкл блокировку больших медиа-элементов на этом сайте" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Нажмите для включения блокировки больших медиа-элементов на этом сайте" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Нажмите для отключения блокировки больших медиа-элементов на этом сайте" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Вкл/Выкл блокировку всех всплывающих окон на этом сайте" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Нажмите, чтобы блокировать все всплывающие окна на этом сайте" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Нажмите, чтобы отключить блокировку всех всплывающих окон на этом сайте" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Вкл/Выкл блокировку сторонних шрифтов на этом сайте" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Нажмите для блокировки сторонних шрифтов на этом сайте" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Нажмите для отключения блокировки сторонних шрифтов на этом сайте" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Нажмите, чтобы отключить JavaScript на этом сайте" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Кликните, чтобы перестать блокировать JavaScript на этом сайте" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Войти в режим выбора элементов" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Сообщить о проблеме на данном сайте" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Нажмите, чтобы отменить изменения." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Нажмите, чтобы сохранить изменения." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Режим мгновенного временного скрытия элемента" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Версия" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Ослабленный режим блокировки" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Утвердить" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Изменить" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Сбросить" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Сохранить" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Экспортировать в файл…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Синтаксис правил: \u003Ccode>источник назначение тип действие\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>полная документация\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Список ваших правил динамической фильтрации." - }, - "rulesImport": { - "description": "", - "message": "Импорт из файла..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Мои правила" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Постоянные правила" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Вернуть" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Сортировка:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Цель" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Источник" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Тип правила" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Временные правила" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Поведение по умолчанию" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Эти настройки могут быть указаны для каждого сайта отдельно" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Расширенные настройки" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Функции, предназначенные для технических пользователей" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Я — опытный пользователь" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "расширенные настройки" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Настройки интерфейса" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Включить поддержку облачного хранилища" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Скрыть оставшееся от заблокированных элементов место" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Цветовая схема для дальтоников" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Использовать контекстное меню, где возможно" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Отключить проверку гиперссылок" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Показывать количество заблокированных запросов на иконке" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Последняя резервная копия:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Последнее восстановление:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Блокировать CSP-отчёты" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Отключить косметические фильтры" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Блокировать медиа-элементы больше {{input}} KБ" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Блокировать сторонние шрифты" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Отключить JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Настройки" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Отключить предзагрузку для предотвращения подключений для заблокированных запросов" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Выбрать акцент цветового оформления" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Тема" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Отключить всплывающие подсказки" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Раскрывать CNAME записи" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Предотвратить утечку локального IP-адреса через WebRTC" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Введите сочетание" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Сочетания клавиш" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Показать панель управления" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Показать логгер" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Логгер" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Размер хранилища: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Подписаться" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Добавить следующий адрес к пользовательским спискам фильтров?\n\nЗаголовок: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Найти похожие отчеты" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Открыть" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Поддержка" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Редактировать" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Создать новый отчет" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Документация" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Прочитайте документацию на \u003Ccode>uBlock/wiki\u003C/code>, чтобы узнать обо всех возможностях uBlock Origin. " - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Вопросы и поддержка" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Ответы на вопросы и другая помощь доступны в разделе \u003Ccode>/r/uBlockOrigin\u003C/code> на reddit." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Проблемы фильтрации/сломанный сайт" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Сообщайте о проблемах фильтрации на конкретных сайтах в раздел трекера \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code>\u003C/span>. \u003Cu>Требуется аккаунт GitHub.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Важно:\u003C/b> Избегайте использования других блокировщиков схожего назначения совместно с uBlock Origin, так как это может привести к проблемам с фильтрацией на определенных сайтах." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Советы:\u003C/b> убедитесь, что ваши списки фильтров обновлены. \u003Cspan data-url=\"logger-ui.html#_\">Логгер\u003C/span> — основной инструмент диагностики проблем, связанных с фильтрами." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Отчет об ошибке" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Сообщайте о собственных ошибках дополнения uBlock Origin в раздел трекера \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>\u003C/span>. \u003Cu>Требуется GitHub аккаунт.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Диагностика неисправностей" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Ниже представлена техническая информация, которая может быть полезна волонтерам, помогающим вам решить проблему." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Важно:\u003C/b> Предположительно конфиденциальная информация редактируется по умолчанию. Отредактированная информация может усложнить диагностику проблемы." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Пометить веб-страницу как “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Сообщить о проблемном фильтре" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Чтобы не обременять волонтеров дублированными отчетами, пожалуйста, убедитесь, что о данной проблеме еще не сообщали" - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Списки фильтров обновляются ежедневно. Убедитесь, что ваша проблема не была решена в свежих списках фильтров." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Удостоверьтесь, что проблема воспроизводится даже после обновления проблемной страницы." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Веб-страница..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "--Выберите категорию--" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Показывается реклама или ее заполнители" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Всплывающие окна или другие помехи" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Обнаруживается uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Проблемы, связанные с приватностью" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Поломки, когда включен uBlock Origin" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Открываются нежелательные вкладки или окна" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Адрес веб-страницы:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Отменить редактирование" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Вкл/Выкл косметическую фильтрацию" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Вкл/Выкл JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Не удалось выполнить фильтрацию при запуске браузера.\nПерезагрузите страницу, чтобы обеспечить фильтрацию." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Применить изменения" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Экспортировать…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Импортировать и добавить…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Доверенные сайты" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Записи доверенных сайтов указывают на каких веб-страницах uBlock Origin должен быть отключен. Одна запись на строку." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/si/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/si/messages.json deleted file mode 100644 index 855e9eb..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/si/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "වෙනස්කම් යොදන්න" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "නිර්යාත" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Import and append…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "මාගේ පෙරහන්" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "වෙනස්කම් යොදන්න" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Auto-update filter lists" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Out of date." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "One URL per line. Invalid URLs will be silently ignored." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "දැන්වීම්" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Annoyances" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "අභිරුචි" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Built-in" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Malware protection, security" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multipurpose" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "පෞද්ගලිකත්වය" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regions, languages" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignore generic cosmetic filters" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "ඇතුල් කරන්න..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Last update: {{ago}}.\nClick to force an update." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} used out of {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "A network error prevented the resource from being updated." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filter lists" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the network request-based filtering engines." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Parse and enforce cosmetic filters" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Purge all caches" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspend network activity until all filter lists are loaded" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "දැන් යාවත්කාල කරන්න" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "යාවත්කාල වෙමින්..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "view content" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "ගි.බ." - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "කි.බ." - }, - "MB": { - "description": "short for 'megabytes'", - "message": "මෙ.බ." - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "ගොනුවකට උපස්ථ කරන්න" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO's own filter lists are freely hosted on the following \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "A randomly picked CDN is used when a filter list needs to be updated." - }, - "aboutChangelog": { - "description": "", - "message": "Changelog" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Source code (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "දායකයින්" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "External dependencies (GPLv3-compatible):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filter lists" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "පිළිබඳව" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "රහස්‍යතා ප්‍රතිපත්තිය" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Reset to default settings…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "ගොනුවකින් ප්‍රත්‍යර්පණය කරන්න..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "The data could not be read or is invalid" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Source code" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "පරිවර්තන" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "වැඩිදුර සැකසුම්" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Warning! Change these advanced settings at your own risk." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Asset viewer" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "පූරණයට ඔබන්න" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "මෙම උපාංගයේ නම:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "මේඝ ආචයනයෙන් ආයාත කරන්න" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "මේඝ ආචයනයෙන් ආයාත කර වත්මන් සැකසුම් සමඟ සංයුක්ත කරන්න" - }, - "cloudPush": { - "description": "tooltip", - "message": "මේඝ ආචයනයට නිර්යාත කරන්න" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Block element in frame…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subscribe to filter list…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Temporarily allow large media elements" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "View source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "යූබ්ලොක්₀ - උපකරණ පුවරුව" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Warning! You have unsaved changes" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "නොසලකන්න" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "නවතින්න" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "ආපසු යන්න" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "මෙම කවුළුව වසන්න" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Proceed" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "සදාකාලිකව" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "තාවකාලිකව" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Found in:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "without parameters" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Disable strict blocking for {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin has prevented the following page from loading:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Because of the following filter:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Page blocked" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "දවස් {{value}} කට පෙර" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "පැය {{value}} කට පෙර" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "විනාඩි {{value}} කට පෙර" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "දිනකට පෙර" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "පැයකට පෙර" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "විනාඩියකට පෙර" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "ජාලයේ දෝෂය: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "අවසානයේදී, මධ්‍ය සැකසුම් ඒකකය සහ මතකය අඩුවෙන් භාවිතා කරන කාර්යක්‍ෂම අවහිරකයක් ඇත." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "off" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "වෙනස්කම් යොදන්න" - }, - "genericBytes": { - "description": "", - "message": "බයිට" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "පසුරුපුවරුවට පිටපත් කරන්න" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Toggle locked scrolling" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Revert" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Select all" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Submit" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "සියල්ල" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Tabless" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filter logger content" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "වසම" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "පෙරහන" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "වර්ගය" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "ඒ.ස.නි." - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Clear logger" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Current tab" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Toggle the DOM inspector" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Context" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "පෙරහන" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filter list" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "විස්තර" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partyness" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Root context" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "නීතිය" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "වර්ගය" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "ඒ.ස.නි." - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Plain" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "List" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "වගුව" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: The logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pause logger (discard all incoming data)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Toggle the popup panel" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Reload the tab content" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "ප්‍රථම-පාර්ශවීය" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "තෙවන-පාර්ශවීය" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "allowed" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blocked" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modified" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Not" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Logger filtering options" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Toggle logger filtering" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Context" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} පෙරහන/නීතිය" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partyness" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} වේලාව" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "තීරු සඟවන්න:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Use {{input}} lines per entry in vertically expanded mode" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Preserve entries from the last {{input}} minutes" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Preserve at most {{input}} entries per tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preserve at most {{input}} page loads per tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Static filter \u003Ccode>{{filter}}\u003C/code> found in:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Static filter could not be found in any of the currently enabled filter lists" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Static filter" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "ඉඩදෙන්න" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "from anywhere" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "ඕනෑම වර්ගයක" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "අවහිර" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "even if" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "except when" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "from “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "වර්ගය “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Context:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "ඒ.ස.නි. නීතිය" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "වර්ගය:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Unpause logger" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Block element…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Cosmetic filters" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Click, Ctrl-click" - }, - "pickerCreate": { - "description": "English: Create", - "message": "සාදන්න" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "ජාල පෙරහන්" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Pick" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "පෙරදසුන" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "ඉවත් වන්න" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1st-party scripts" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "තෙවන-පාර්ශවීය" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "3rd-party frames" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "3rd-party CSS/images" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "3rd-party scripts" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "සියල්ල" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "මෙම පිටුවෙහි" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "මෙම පිටුවේ අවහිර කළ" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "ඉල්ලීම් අවහිර කර ඇත" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "since install" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "ස්ථාපනයෙන් පසු අවහිර කළ" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "සම්බන්ධිත වසම්" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} out of {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "සම්බන්ධිත වසම්" - }, - "popupImageRulePrompt": { - "description": "", - "message": "images" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "inline scripts" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Less" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "තව" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Cosmetic filtering" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Large media elements" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Pop-up windows" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "දුරස්ථ මුද්‍රණඅකුරු" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "හෝ" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Click to disable uBlock₀ for this site.\n\nCtrl+click to disable uBlock₀ only on this page." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "මෙම අඩවියට යූබ්ලොක්₀ සබල කිරීමට ඔබන්න." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "උපකරණපුවරුව විවෘත කරන්න" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "ගෝලීය නීති: මෙම තීරුව සියලුම අඩවි වලට යොදන නීතී සඳහා ය." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Open the logger" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Toggle cosmetic filtering for this site" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click to disable cosmetic filtering on this site" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click to enable cosmetic filtering on this site" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Toggle the blocking of large media elements for this site" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click to block large media elements on this site" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Click to no longer block large media elements on this site" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Toggle the blocking of all popups for this site" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Click to block all popups on this site" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Click to no longer block all popups on this site" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Toggle the blocking of remote fonts for this site" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Click to block remote fonts on this site" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Click to no longer block remote fonts on this site" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Click to disable JavaScript on this site" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Click to no longer disable JavaScript on this site" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Enter element picker mode" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Report an issue on this website" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Click to revert your changes." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Click to make your changes permanent." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Enter element zapper mode" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "අනුවාදය" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relax blocking mode" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Commit" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "මගේ-ස්ථිර-නීති_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "සංස්කරණය" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Discard" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "සුරකින්න" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "ගොනුවකට නිර්යාත කරන්න" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Rule syntax: \u003Ccode>source destination type action\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>full documentation\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "List of your dynamic filtering rules." - }, - "rulesImport": { - "description": "", - "message": "ගොනුවකින් ඇතුල් කරන්න..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "මාගේ නීති" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Permanent rules" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Revert" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sort:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destination" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Source" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "නීතියේ වර්ගය" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "තාවකාලික නීති" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Default behavior" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "These default behaviors can be overridden on a per-site basis" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Advanced" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Features suitable only for technical users" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "I am an advanced user" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "වැඩිදුර සැකසුම්" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Appearance" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "මේඝ ආචයන සහාය සබල කරන්න" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Hide placeholders of blocked elements" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "වර්ණ-අන්ධ හිතකාමී" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Make use of context menu where appropriate" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Disable hyperlink auditing" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Show the number of blocked requests on the icon" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Last backup:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Last restore:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "අ.ආ.ප්‍ර.(සීඑස්පී) වාර්තා අවහිරකරන්න" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Disable cosmetic filtering" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Block media elements larger than {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "දුරස්ථ මුද්‍රණඅකුරු බ්ලොක් කරන්න" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Disable JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "සැකසුම්" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Disable pre-fetching (to prevent any connection for blocked network requests)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Custom accent color" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Theme" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Disable tooltips" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Uncloak canonical names" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Prevent WebRTC from leaking local IP addresses" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Type a shortcut" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "කෙටිමං" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "උපකරණ පුවරුව පෙන්වන්න" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Show Logger" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Logger" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Storage used: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Subscribe" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Add the following URL to your custom filter lists?\n\nTitle: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Find similar reports" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Open" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Support" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Create new report" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentation" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Read the documentation at \u003Ccode>uBlock/wiki\u003C/code> to learn about all of uBlock Origin's features." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Questions and support" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter issues/website is broken" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Bug report" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Troubleshooting Information" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Report a filter issue" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "The web page…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pick an entry --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shows ads or ad leftovers" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has privacy-related issues" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfunctions when uBlock Origin is enabled" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Opens unwanted tabs or windows" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Address of the web page:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "වෙනස්කම් යොදන්න" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "නිර්යාත" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "මට-විශ්වාස-වෙබ්-අඩවි_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Import and append…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "විශ්වාසදායී අඩවි" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/sk/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/sk/messages.json deleted file mode 100644 index 874c1ae..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/sk/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Použiť zmeny" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Povoliť moje vlastné filtre" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Exportovať" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "ublock-moje-statické-filtre_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importovať a pripojiť" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Moje filtre" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Povoliť vlastné filtre vyžadujúce dôveru" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Nepridávajte filtre z nedôveryhodných zdrojov." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Použiť zmeny" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Automaticky aktualizovať zoznamy filtrov." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Zastarané." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Jedna URL adresa na riadok. Neplatné URL adresy budú potichu ignorované." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Reklamy" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Obťažujúce" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Oznámenie o cookies" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Vlastné" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Vstavané" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Domény malvéru" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Viacúčelové" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Súkromie" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regióny, jazyky" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Sociálne widgety" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignorovať generické kozmetické filtre" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Generické kozmetické filtre sú tie kozmetické filtre, ktoré sú určené na použitie na všetkých webových stránkach. Zapnutím tejto možnosti sa zníži zaťaženie pamäte a procesora v dôsledku použitia generických kozmetických filtrov.\n\nOdporúča sa povoliť túto možnosť na menej výkonných zariadeniach." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importovať..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Posledná aktualizácia: {{ago}}.\nKliknutím vynútite aktualizáciu." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Zoznamy zablokovaných hostiteľov" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} použitých z {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} sieťových filtrov + {{cosmeticFilterCount}} kozmetických filtrov z:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Chyba siete zabránila aktualizácii zdroja." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Zoznam filtrov" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Kozmetické filtre slúžia na skrytie prvkov na webovej stránke, ktoré sa považujú za vizuálne obťažujúce a ktoré nemôžu byť zablokované filtrovaním sieťových požiadavkov." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Spracovať a vynútiť kozmetické filtre" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Vyčistiť celú vyrovnávaciu pamäť" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Pozastaviť sieťovú aktivitu, kým sa nenačítajú všetky zoznamy filtrov" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Aktualizovať teraz" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Aktualizácia..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "zobraziť obsah" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Zálohovať do súboru" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ublock-moja-záloha_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Vlastné zoznamy filtrov uBO sú voľne dostupné na nasledujúcich \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Pri aktualizácii zoznamu filtrov sa použije náhodne vybraná CDN." - }, - "aboutChangelog": { - "description": "", - "message": "Zoznam zmien" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Zdrojový kód (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Prispievatelia" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Externé závislosti (kompatibilné s GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Zoznam filtrov" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "O doplnku" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Zásady ochrany osobných údajov" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Obnoviť na predvolené nastavenia..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Všetky vaše nastavenia budú odstránené a uBlock sa reštartne.\n\nObnoviť uBlock na predvolené nastavenia?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Obnoviť zo súboru..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Všetky vaše nastavenia budú prepísané pomocou dáta zálohovaných dňa {{time}} a uBlock sa reštartne.\n\nPrepísať všetky existujúce nastavenia pomocou zálohovaných dát?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Dáta sa nepodarilo načítať alebo sú neplatné" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Zdrojový kód" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Preklady" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Pokročilé nastavenia" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Upozornenie! Zmenu pokročilých nastavení vykonávate na vlastné nebezpečenstvo." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Zobrazenie zdrojov" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Kliknite pre načítanie" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Názov tohto zariadenia:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Importovať z cloudového úložiska" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importovať z cloudového úložiska a zlúčiť so súčasnými nastaveniami" - }, - "cloudPush": { - "description": "tooltip", - "message": "Exportovať do cloudového úložiska" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Zablokovať prvok v ráme…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Prihlásiť sa k odberu zoznamu filtrov…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Dočasne povoliť veľké multimediálne prvky" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Zobraziť zdrojový kód" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Ovládací panel" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Upozornenie! Máte neuložené zmeny" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignorovať" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Zostať" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Naspäť" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Zatvoriť toto okno" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Pokračovať" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Natrvalo" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Dočasne" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Už ma na túto stránku neupozorňovať" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Nájdený v:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "bez parametrov" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Zakázať prísne blokovanie pre {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin zabránil načítaniu nasledujúcej stránky:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Kvôli nasledujúcemu filtru" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Blokovaná stránka" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "pred {{value}} dňami" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "pred {{value}} hodinami" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "pred {{value}} minútami" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "pred dňom" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "pred hodinou" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "pred minútou" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Chyba siete: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Konečne efektívny blokovač. Nezaťažuje CPU ani pamäť." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "vypnutý" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Použiť zmeny" - }, - "genericBytes": { - "description": "", - "message": "bajtov" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopírovať do schránky" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Prepnúť zámok posúvania" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Vrátiť" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Vybrať všetko" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Poslať" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Chyby: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Všetky" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Za oponou" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtrovať obsah zaznamenávača" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Doména" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filter" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Typ" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Vyčistiť zaznamenávač" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Aktívna karta" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Prepnúť DOM inšpektor" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Kontext" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Zoznam filtrov" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Podrobnosti" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partnerská strana" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Koreňový kontext" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Pravidlo" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Typ" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Formátované" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Neformátované" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Zoznam" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabuľka" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Zaznamenávač" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pozastaviť zaznamenávač (vymazať všetky prichádzajúce dáta)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Prepnúť na vyskakovací panel" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Obnoviť obsah karty" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Z prvej strany" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Z tretej strany" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "povolené" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blokované" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "zmenené" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Nie" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Možnosti filtrovania zaznamenávača" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Prepnúť filtrovanie zaznamenávača" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Záznamy v zaznamenávači, ktoré nespĺňajú všetky 3 podmienky uvedené nižšie budú automatické zamietnuté:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Kontext" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/pravidlo" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Zdroj požiadavky" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Čas" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Skryť stĺpce:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Pre každú položku zobraziť {{input}} riadky vo vertikálnom rozšírenom režime" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Ponechať záznamy za posledných {{input}} minút" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Ponechať načítaných aspoň {{input}} položiek na kartu" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Ponechať načítaných aspoň {{input}} strán na kartu" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Statický filter \u003Ccode>{{filter}}\u003C/code> bol nájdený v:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Statický filter sa nepodarilo nájsť v žiadnom momentálne povolenom zozname filtrov" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statické filtrovanie" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} sieťové požiadavky {{type}} {{br}}, ktorých URL adresa sa zhoduje s {{url}} {{br}}a pochádza {{origin}},{{br}}{{importance}} zodpovedajúci výnimkový filter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Povoliť" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "z odkiaľkoľvek" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "akéhokoľvek typu" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Zablokovať" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "aj keď existuje" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "pokiaľ neexistuje" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "z “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "typu “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Kontext:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Dynamické filtrovanie URL" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Typ:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Pokračovať v zaznamenávaní" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Zablokovať prvok…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Kozmetické filtre" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Kliknutie, Ctrl-kliknutie" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Vytvoriť" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Sieťové filtre" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Vybrať" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Náhľad" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Ukončiť" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "skripty prvej triedy" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "z tretej strany" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "rámec" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "rámy tretej triedy" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/obrázky tretích strán" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "skript" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "skripty tretej triedy" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "všetko" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "na tejto stránke" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokované na tejto stránke" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "zablokované požiadavky" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "od inštalácie" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokované od inštalácie" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} alebo {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Pripojené domény" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} z {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "pripojené domény" - }, - "popupImageRulePrompt": { - "description": "", - "message": "obrázky" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "vstavané skripty" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Menej" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Viac" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Kozmetické filtrovanie" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Veľké mediálne prvky" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Vyskakovacie okná" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Vzdialené písma" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "alebo" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Kliknutie: zakázať/povoliť uBlock pre túto stránku.\n\nCtrl+kliknutie: zakázať uBlock₀ len pre túto stránku." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Kliknutím zakážete uBlock₀ pre túto stránku.\n\nCtrl+kliknutie zakáže uBlock₀ len pre túto stránku." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Kliknutím povolíte uBlock₀ pre túto stránku." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Otvoriť ovládací panel" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Globálne pravidlá: tento stĺpec slúži pre pravidlá, ktoré platia pre všetky weby." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Lokálne pravidlá: tento stĺpec slúži pre pravidlá, ktoré platia len pre aktuálny web.\nLokálne pravidlá prepisujú globálne pravidlá." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Otvoriť Zaznamenávač" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Prepnúť kozmetické filtrovanie pre túto stránku" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Kliknutím zakážete kozmetické filtrovanie na tejto stránke" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Kliknutím povolíte kozmetické filtrovanie na tejto stránke" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Prepnúť blokovanie veľkých multimediálnych prvkov na tejto stránke" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Kliknutím zablokovať veľké multimediálne prvky na tejto stránke" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Kliknutím povolíte veľké multimediálne prvky na tejto stránke" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Žiadne vyskakovacie okná pre túto stránku" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Kliknutím zakážete všetky vyskakovacie okná na tejto stránke" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Kliknutím povolíte všetky vyskakovacie okná na tejto stránke" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Prepnúť blokovanie vzdialených písiem na tejto stránke" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Kliknutím zakážete vzdialené písma pre túto stránku" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Kliknutím povolíte vzdialené písma pre túto stránku" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Kliknutím úplne zakážete JavaScript na tejto stránke" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Kliknutím už nebude úplne zakázaný JavaScript na tejto stránke" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Prejsť do režimu výberu prvku" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Nahlásiť problém na tejto webovej stránke" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Kliknutím vrátite vaše zmeny." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Kliknutím použijete vaše zmeny." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Prejsť do režimu výberu prvku" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Verzia" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Zmierniť režim blokovania" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Potvrdiť" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "ublock-moje-dynamické-pravidlá_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Upraviť" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Zahodiť" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Uložiť" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Exportovať do súboru" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Syntax pravidla: \u003Ccode>zdroj cieľ typ akcia\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>úplná dokumentácia\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Zoznam vašich dynamických filtrovacích pravidiel." - }, - "rulesImport": { - "description": "", - "message": "Importovať zo súboru..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Moje pravidlá" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Trvalé pravidlá" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Vrátiť" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Zoradiť:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Cieľ" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Zdroj" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Typ pravidla" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Dočasné pravidlá" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Predvolené správanie" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Tieto predvolené správania môžu byť prepísané u jednotlivých stránkach" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Pokročilé" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Funkcie vhodné iba pre pokročilých používateľov." - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Som pokročilý používateľ" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "pokročilé nastavenia" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Vzhľad" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Povoliť podporu cloudového úložiska" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Skryť zástupcov zablokovaných prvkov" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Režim pre farboslepých" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Používať kontextovú ponuku v prípade potreby" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Zakázať auditovanie hypertextových odkazov" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Zobraziť počet zablokovaných požiadaviek na ikone" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Posledná záloha:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Posledná obnova:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Zablokovať CSP hlásenia" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Vypnúť kozmetické filtrovanie" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Blokovať multimediálne prvky väčšie ako {{input:number}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Blokovať vzdialené písma" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Zakázať JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Nastavenia" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Zakázať prednačítavanie (zakáže akékoľvek pripojenie pre zablokované sieťové požiadavky)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Vlastná farba témy" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Téma" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Zakázať tipy pre nástroje" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Odhaliť kanonické mená" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Zabrániť úniku lokálnej IP adresy cez WebRTC" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Zadajte klávesovú skratku" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Klávesové skratky" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Zobraziť ovládací panel" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Zobraziť Zaznamenávač" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Zaznamenávač" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Využité miesto: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Pridať" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: Pridať nasledujúcu URL do zoznamu vlastných filtrov?\n\nNázov: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Vyhľadať podobné hlásenia" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Otvoriť" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Podpora" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Upraviť" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Vytvoriť nové hlásenie" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentácia" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Prečítajte si dokumentáciu na \u003Ccode>uBlock/wiki\u003C/code> a dozviete sa o všetkých funkciách uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Otázky a podpora" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Odpovede na otázky a iné druhy podpory pomoci sa poskytujú na subreddite \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Problémy s filtrom/webová stránka je nefunkčná" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Nahlásenie problémov s filtrom s konkrétnymi webovými stránkami na \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. Vyžaduje sa GitHub účet." - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Dôležité:\u003C/b> Vyhnite sa používaniu iných podobne zameraných blokátorov spolu s uBlock Origin, pretože to môže spôsobiť problémy s filtrovaním na konkrétnych webových stránkach." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tipy:\u003C/b> Uistite sa, že je váš zoznam filtrov aktuálny. \u003Cspan data-url=\"logger-ui.html#_\">Záznamenávač\u003C/span> je primárnym nástrojom na diagnostiku problémov súvisiacich s filtrami." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Nahlásiť chybu" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Nahlásenie problémov so samotným uBlock Origin na\u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Vyžaduje sa GitHub účet.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Informácie o riešení problémov" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Nasledujú technické informácie, ktoré môžu byť užitočné, keď sa vám dobrovoľníci pokúšajú pomôcť vyriešiť problém." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Dôležité:\u003C/b> Potenciálne súkromné alebo citlivé informácie sú štandardne upravované. Upravené informácie môžu sťažiť riešenie problému." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Označiť webstránku ako “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">Nie je bezpečné pre prácu”)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Nahlásiť problém s filtrom" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Aby ste dobrovoľníkov nezaťažovali duplicitnými hláseniami, overte si, či už problém nebol nahlásený." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Zoznamy filtrov sa aktualizujú denne. Uistite sa, že váš problém už nebol vyriešený v najnovších zoznamoch filtrov." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Overte, či problém pretrváva aj po opätovnom načítaní problematickej webovej stránky." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Webová stránka…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Vyberte položku --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Zobrazuje reklamy alebo zvyšky reklám" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Je prekrytá alebo má iné nedostatky" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Deteguje uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Má problémy súvisiace so súkromím" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Má problém s funkčnosťou, keď je povolený uBlock Origin" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Otvára nechcené karty alebo okná" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Adresa webovej stránky:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Neupravovať" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Prepnúť kozmetické filtrovanie" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Prepnúť JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Pri spustení prehliadača sa nepodarilo správne filtrovať.\nZnova načítajte stránku, aby ste zaistili správne filtrovanie." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Použiť zmeny" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Exportovať" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "ublock-doveryhodne-stranky_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importovať a pripojiť" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Dôveryhodné stránky" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Zoznam dôveryhodných stránok pre ktoré bude uBlock Origin zakázaný. Jedna položka na riadok." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/sl/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/sl/messages.json deleted file mode 100644 index 9032d77..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/sl/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Uporabi spremembe" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Izvozi" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "moji-ublock-staticni-filtri_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Uvozi in dodaj" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Moji filtri" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Uveljavi spremembe" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Samodejno posodabljanje seznama filtrov." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "zastarelo" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "En URL na vrstico. Vrstice s predpono ‘!’ in neveljavni URL-ji bodo prezrti." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Oglasi" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "\t\nNadlegovanje" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Po meri" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Lokalno" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Zlonamerne domene" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Večnamenski" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Zasebnost" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regije, jeziki" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignoriraj generične kozmetične filtre" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "\u003Cp>Generični vizualni filtri so vizualni filtri, ki naj bi bili uporabljeni na vseh spletnih straneh.\u003Cp>Kljub temu, da je njihova uporaba v uBlock₀ učinkovita, generični vizualni filtri lahko, na nekaterih spletnih straneh (še posebno na velikih in starih), pripomorejo k opazni dodatni porabi pomnilnika in uporabi CPE.\u003Cp>Omogočitev te funkcije bo zmanjšala porabo pomnilnika in uporabo CPE, ki nastane kot rezultat dodajanja generičnih vizualnih filtrov, in tudi zmanjšala porabo pomnilnika dodatka uBlock₀.\u003Cp>Priporočeno je, da omogočite to možnost na manj zmogljivih napravah." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Uvozi ..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Zadnja posodobitev: {{ago}}" - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Seznam blokiranih gostiteljev" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "uporabljenih {{used}} od {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} omrežnih in {{cosmeticFilterCount}} kozmetičnih filtrov od:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Omrežna napaka je preprečila posodobitev virov." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filtri tretjih oseb" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "\u003Cp>Ta opcija omogoči razčlenjevanje in uveljavljanje \u003Ca href=\"https://adblockplus.org/en/faq_internal#elemhide\"> Adblock Plus kompatibilnih filtrov za “skrivanje elementov”\u003C/a> Le-ti filtri so v bistvu kozmetični in služijo skrivanju elementov na spletnih straneh, ki jih lahko obravnavamo kot \"vizualna nadloga\", in taki, ki se jih preko filtrov zahtev omrežja ne da blokirati.\u003C/p>\n\u003Cp>Vklop te funkcije poveča spominski odtis uBlock₀.\u003C/p>" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Razčleni in uveljavi kozmetične filtre." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Sprosti celoten predpomnilnik" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Prekini aktivnosti omrežja, dokler niso naloženi vsi filtri" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Posodobi zdaj" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Posodabljanje ..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "view content" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Naredi varnostno kopijo v datoteko" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "moja-ublock-varnostna-kopija_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO's own filter lists are freely hosted on the following \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Ob posodobitvi seznama filtrov se uporabi naključno izbran CDN" - }, - "aboutChangelog": { - "description": "", - "message": "Dnevnik sprememb" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Izvorna koda (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Razvijalci" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Zunanje odvisnosti (GPLv3-kompatibilne):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Seznami filtrov" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "O razširitvi" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Pravilnik o zasebnosti" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Ponastavi na privzete nastavitve..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Vse vaše spremembe bodo izbrisane, uBlock₀ pa se bo ponovno zagnal.\n\nPonastavim uBlock₀ na tovarniške nastavitve?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Obnovi iz datoteke..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Vse vaše nastavitve bodo prepisane s podatki, ki so bili varnostno shranjeni {{time}}. uBlock₀ se bo ponovno zagnal.\n\nPrepišem vse obstoječe nastavitve z varnostno shranjenimi podatki?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Podatki varnostne kopije niso uspeli biti uspešno prebrani oz. so neveljavni" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Izvorna koda" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Prevodi" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Napredne nastavitve" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Opozorilo! Sprememba teh naprednih nastavitev na lastno odgovornost." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — pregled sredstev" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Kliknite za prikaz" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Ime te naprave:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Uvozi iz shrambe oblaka" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Uvozi iz oblaka in spoji s trenutnimi nastavitvami" - }, - "cloudPush": { - "description": "tooltip", - "message": "Izvozi v shrambe oblaka" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Blokiraj element v okvirju" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Naroči se na seznam filtrov.." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Začasno dovoli velike medijske elemente" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "View source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Nadzorna plošča" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Pozor! Spremembe niso shranjene" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Prezri" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Ostani" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Nazaj" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Zapri to okno" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Proceed" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Trajno" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Začasno" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Najden v:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "brez parametrov" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Onemogoči striktno blokiranje za {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock₀ je preprečil nalaganje naslednje strani:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Zaradi sledečega filtra" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Page blocked" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} dni nazaj" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} ur nazaj" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} minut nazaj" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "1 dan nazaj" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "1 uro nazaj" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "1 minuto nazaj" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Ne morem se povezati do {{url}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Končno, učinkovita, procesorju in pomnilniku prijazna razširitev za blokiranje oglasov." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "izklop" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Uveljavi spremembe" - }, - "genericBytes": { - "description": "", - "message": "biti" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopiraj v odložišče" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Preklopi zaklenjeno drsenje" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Povrni" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Izberi vse" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Predloži" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Vse" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Za zaveso" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtriraj vnose dnevnika" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domena" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filter" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Vrsta" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Počisti dnevnik omrežnih zahtev" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Trenutni zavihek" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Preklopi DOM pregledovalnik" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Vsebina" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Seznam filtrov" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Podrobnosti" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Pripadnost" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Glavna vsebina" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Pravilo" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Vrsta" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Navaden" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Seznam" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabela" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Dnevnik omrežnih zahtev" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Ustavi dnevnik omrežnih zahtev (zavrne vse prihajajoče zahteve)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Preklopi pojavno okno" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Ponovno naloži vsebino zavihka" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1. osebni" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3. osebni" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "dovoljeno" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blokiran" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "spremenjeno" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Ni" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Nastavitve filtriranja dnevnika" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Preklopi filtriranje dnevnika" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Zapisi, ki ne ustrezajo vsem spodaj podanim pogojem, bodo avtomatsko zavrženi:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} vsebina" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} filter/pravilo" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Pripadnost" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} čas" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Skrij stolpce:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Uporabi {{input}} vrstic pri vsakem vnosu v navpično razširjenem načinu" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Ohrani vnose izpred zadnjih {{input}} minut" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Ohrani največ {{input}} vnosov na zavihek" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Ohrani največ {{input}} nalaganj strani na zavihek" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Statičen filter \u003Ccode>{{filter}}\u003C/code> najden v:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Statični filter \u003Ccode>{{filter}}\u003C/code> ni bil najden v nobenem izmed trenutno izbranih seznamov" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statično filtriranje" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} zahteve omrežja {{type}} {{br}}katerih URL naslov se ujema z {{url}} {{br}}in izvirajo iz {{origin}},{{br}}{{importance}} obstaja ustrezen filter izjeme." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Dovoli" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "iz kjerkoli" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "vsaka vrsta" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Blokiraj" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "tudi če" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "razen če" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "iz “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "vrsta {{type}}" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Vsebina:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Dinamično URL filtriranje" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Vrsta:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Nadaljuj dnevnik omrežnih zahtev" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Blokiraj element" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Kozmetični filtri" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klik, Ctrl-klik" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Ustvari" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Omrežni filtri" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Izberi" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Predogled" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Končaj" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "strani lastni skripti" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "tretjih oseb" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "okvirji tretjih oseb" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "css/slike tretje osebe" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "skripti tretjih oseb" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "vse" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "na tej strani" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokirano na tej strani" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "blokirane zahteve" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "od namestitve" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blokirano od namestitve" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ali {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Povezane domene" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} od {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "povezane domene" - }, - "popupImageRulePrompt": { - "description": "", - "message": "slike" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "vrinjene skripti" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Manj" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Več" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Kozmetično filtriranje" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Veliki predstavnostni elementi" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Pojavna okna" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Oddaljene pisave" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "ali" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klik: onemogoči/omogoči uBlock₀ za to stran.\n\nCtrl+klik: onemogoči uBlock₀ samo na tej strani." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Kliknite, da onemogočite uBlock₀ za to stran.\n\nPritisnite Ctrl in kliknite, da onemogočite uBlock₀ samo na tej strani." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Kliknite, da omogočite uBlock₀ za to stran." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Klikni za odpiranje nadzorne plošče" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Globalna pravila: ta stolpec je za pravila, ki se uveljavljajo za vse strani." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Lokalna pravila: ta stolpec je za pravila, ki se uveljavljajo samo za trenutno stran. Lokalna pravila preglasijo globalna pravila." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Pojdi na dnevnik omrežnih zahtev" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Vklop/Izklop kozmetičnih filtrov za to stran" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Kliknite, da onemogočite kozmetično filtriranje na tej strani" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Kliknite, da omogočite kozmetično filtriranje na tej strani" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Vklop/izklop blokiranja večjih medijev za to stran" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Kliknite, da omogičite blokiranje večjih medijev za to stran" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Kliknite, da onemogočite blokiranje večjih medijev za to stran" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Vklop/Izklop blokiranja vseh pojavnih oken za to stran" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Kliknite, da omogičite blokiranje vseh pojavnih oken za to stran" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Kliknite, da onemogočite blokiranje vsah pojavnih oken na tej strani" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Vklopi/izklopi blokiranje oddaljenih pisav za to stran" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Kliknite, da omogočite blokiranje oddaljenih pisav na tej strani" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Kliknite, da onemogočite blokiranje oddaljenih pisav na tej strani" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klikni, da onemogočiš JavaScript na tej strani" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klikni, da prenehaš onemogočati JavaScript na tej strani" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Vklopi način izbire elementov" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Prijavi napako na tej strani" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Kliknite za preklic sprememb." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Kliknite za uveljavitev sprememb." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Vklopi način izbire elementov" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Različica" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Sprostite način blokiranja." - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Stori" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "moji-ublock-dinamicna-pravila_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Uredi" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Zavrži" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Shrani" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Izvozi v datoteko" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Sintaksa pravil: \u003Ccode>vir destinacija tip akcija\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>polna dokumentacija (v angleščini)\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Seznam vaših dinamičnih pravil filtriranja." - }, - "rulesImport": { - "description": "", - "message": "Uvozi iz datoteke..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Moja pravila" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Stalna pravila" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Povrni" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Razvrsti" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Cilju" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Vir" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Tip pravila" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Začasna pravila" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Privzeto ravnanje" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Te privzete nastavitve lahko spremenite za posamezne strani" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Napredno" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Funkcije primerne zgolj za napredne uporabnike" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Sem napreden uporabnik (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>Potrebno branje\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "napredne nastavitve" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Izgled" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Omogoči podporo za shrambo v oblaku" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Skrij držala blokiranih elementov" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Način prijazen barvno slepim uporabnikom" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Izkoristite kontekstni meni, kjer je to primerno" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Onemogoči revizijo hiperlinkov (Hyperlink-auditing)" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Prikaži število blokiranih zahtevkov na ikoni" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Zadnja varnostna kopija:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Zadnja obnovitev:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Blokiraj CSP poročila" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Onemogoči kosmetično filtriranje" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Blokiraj medijske elemente večje kot {input:number} kB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Blokiraj oddaljene pisave" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Onemogoči JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Nastavitve" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Onemogoči prednalaganje strani (da se prepreči kakršno koli povezavo za blokirane zahteve omrežja)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Barva akcenta po meri" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Onemogoči namige" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Uncloak canonical names" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Prepreči izpostavitev lokalnega IP naslova preko WebRTC" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Vnesite bližnjico" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Bližnjice" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Prikaži nadzorno ploščo" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Prikaži dnevnik" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Dnevnik omrežnih zahtev" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Uporabljena shramba: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Naročite se" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: Dodam sledeči URL na listo lastnih filtrov?\n\nNaslov: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Najdi podobna poročila" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Odpri" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Podpora" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Ustvari novo poročilo" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentacija" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Preberi dokumentacijo na \u003Ccode>uBlock/wiki\u003C/code>, da izveš vse o funkcijah uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Vprašanja in podpora" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Odgovori na vprašanja in druga pomoč so na voljo na forumu \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Težave s filtrom/stran ne deluje" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Prijavi težave s filtrom na posameznih straneh v \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> sledilnik težav." - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Pomembno:\u003C/b> Izogibajte se sočasni uporabi podobnih orodij za blokiranje, to lahko povzroči težave s filtrom na posameznih straneh." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Preverjajte, da so vaši seznami filtrov redno posodobljeni. \u003Cspan data-url=\"logger-ui.html#_\">Zapisovalnik\u003C/span> je glavno orodje za diagnostiko težav s filtri." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Prijavi napako" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Prijavi težave z uBlock Origin na \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>sledilnik težav\u003C/span>. \u003Cu>Potreben je GitHub račun.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Informacije za odpravljanje težav" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Prijavi napako filtra" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Zaradi preprečitve obremenjevanja prostovoljcev s podvojenimi poročili prosim preveri da težava še ni bila sporočena." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Spletna stran …" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Izberi vnos --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Prikaže reklame ali ostanke reklam" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ima probleme povezane z zasebnostjo" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfunctions when uBlock Origin is enabled" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Opens unwanted tabs or windows" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Naslov spletne strani:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Preklopi lepotno filtriranje" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Uveljavi spremembe" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Izvozi" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "moj-ublock-seznam-dovoljenih_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Uvozi in dodaj" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Seznam dovoljenih" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Vaš seznam gostiteljskih naslovov, za katere želite, da je uBlock₀ izklopljen. En vnos na vrstico. Neveljavna gostiteljska imena bodo brez opozoril ignorirana." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/so/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/so/messages.json deleted file mode 100644 index 5bbddd2..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/so/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Cusbooneysii ugu dambeysay: {{ago}} " - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Waqtigii dhacay" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "fiiri nuxurka" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Hal URL laynkiiba. URL-yada aan ansax ahayn waa la iska indho-tiraa aamusnaan." - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "filtarradayda" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Kala saar oo dhaqan geli filtarrada qurxinta" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Ka fur magacyada canonical" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Goobaha Malware" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Qarsoodi" - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Iska daa filtarrada guud ee qurxinta" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Waxaa lagu talinayaa in lagu suurtageliyo doorashadan aaladaha awoodda yar." - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Lagu dhex dhisay" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Shaandhooyinka isqurxintu waxay u adeegaan inay ku qariyaan walxaha ku jira bogga shabakadda kuwaas oo loo arko inay dhib ku yihiin aragga, oo aanay xannibi karin matoorada shaandhaynta ku salaysan codsiga shabakadda." - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Malware protection, security" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Liisaska martida la xannibay" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Shaandhooyinka isqurxinta guud waa filtarrada qurxinta kuwaas oo loogu talagalay in lagu dabaqo dhammaan shabakadaha internetka. Awood u yeelashada doorashadan waxay meesha ka saaraysaa xusuusta iyo dusha sare ee CPU ee lagu daray boggaga internetka taasoo ka dhalatay maaraynta filtarrada isqurxinta guud. " - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Codso isbeddelada" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Si otomaatig ah u cusbooneysii liisaska shaandhada" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Cusbooneysii hadda" - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Xayeysiisyada" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Ujeedo badan" - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "Jooji warbixinnada CSP" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "Dami JavaScript" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Caadiyan" - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Liisaska sifee" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "{{la isticmaalay}} la isticmaalay {{ total}}" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "filtarrada shabkada {{netFilterCount}} ? {{cosmeticFilterCount}} filtarrada qurxinta ee:" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Kaydka u dambeeya:" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspend network activity until all filter lists are loaded" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Soo celinta u dambaysay:" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Gobollada, luqadaha" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "Cadhada" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "Gudbi" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "Qalabkan magaca:" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "Digniin! Beddel goobahan horumarsan khatartaada." - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Koodhka isha (GPLv3)" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "Wax ku darsaday" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Qaanuunka Arrimaha Khaaska ah" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Changelog" - }, - "aboutChangelog": { - "description": "", - "message": "Warbixinta cayayaanka" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Ka warbixi arrimaha uBlock Origin laftiisa \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> arin tracker\u003C/span>. Wuxuu u baahan yahay akoon GitHub" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Macluumaadka Cilad-bixinta" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Aan waxba laga beddelin" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Dib u habeyn" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Ku saabsan" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "\u003Cb>Talooyin:\u003C/b> Hubi in liisaska shaandhayntaadu ay cusub yihiin. \u003Cspan data-url=\"logger-ui.html#_\">Logger\u003C/span> waa aaladda koowaad ee lagu baadho arrimaha shaandhada la xiriira." - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Turjumaada" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Liisaska shaandhaynta uBO ayaa si xor ah loogu martigaliyay kuwa soo socda \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Source code" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Liisaska sifee" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Ku tiirsanaanta dibadda (GPLv3-ku habboon):" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Hoos waxaa ah macluumaadka farsamada oo laga yaabo inay faa'iido leedahay marka tabaruceyaashu ay isku dayayaan inay kaa caawiyaan xallinta dhibaatada." - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "\u003Cb>Muhiim:\u003C/b> Macluumaad gaar ah ama mid xasaasi ah ayaa si toos ah wax looga beddelay. Macluumaadka dib loo habeeyey ayaa laga yaabaa inay sii adkeeyaan xallinta mushkiladda." - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Dejinta horumarsan" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "off" - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock? - Daawaha hantida" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Codso isbeddelada" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Muuji Logger" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "maalin ka hor" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "{{value}} maalmo kahor" - }, - "cloudPush": { - "description": "tooltip", - "message": "{{value}} saac kahor" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Ku noqo" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Xir daaqadan" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Dami xannibaadda adag ee {{hostname}}" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "View source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock? - Dashboard" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Digniin! Waxaad leedahay isbedelo aan la keydin" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Iska daa" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Joog" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "URL: {{url}}" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Subscribe dheh" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Proceed" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "saacad ka hor" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "{{value}} daqiiqo kahor" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Ciwaanka: \"{{ciwaanka}}\" " - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "without parameters" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "hal daqiiqo ka hor" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "Cilada shabakada: {{msg}}" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "uBlock?: Ku dar URL-kan soo socda liisaska shaandhaynta gaarka ah? " - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Page blocked" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "Xogta lama akhrin karo ama waa khalad" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} hours ago" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "Dib u deji dejinta caadiga ah..." - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "Dib u qor dhammaan dejimaha jira adiga oo isticmaalaya xogta la taageeray?" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "Dhammaan dejimahaaga waa lagu beddeli doonaa iyadoo la adeegsanayo xogta la xoojiyay {{waqtiga}}, iyo uBlock? ayaa dib u bilaaban doona. " - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "Ka soo celi faylka..." - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "CDN si aan kala sooc lahayn loo soo doortay ayaa la isticmaalaa marka liiska shaandhada loo baahan yahay in la cusboonaysiiyo" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Ugu dambeyntii, xannibaado hufan. Ku fudud oo ku saabsan CPU iyo xusuusta." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "Dib u deji uBlock? u dejisay dejinta warshadda?" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "shaandhada soo socota awgeed" - }, - "genericBytes": { - "description": "", - "message": "Laga helay:" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "U dhoofi kaydinta daruuraha" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Si joogto ah" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "aan xuduud lahayn" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Ka soo deji kaydinta daruuraha" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "UBlock Origin ayaa ka diiday bogga soo socda in la soo raro:" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Soo deji oo ku dheji" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Dhoofinta" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "Dib u soo rar nuxurka tab" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Xigasho" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Awaamiirta goobta lagu kalsoon yahay ayaa tilmaamaysa boggaga internetka ee uBlock Origin waa in la curyaamiyo. Hal gelitaan halkii sadar. Awaamiirta aan ansax ahayn si aamusnaan ah ayaa loo indhatiraa oo faallo looga bixin doonaa." - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Nooca qaanuunka" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "Meesha loo socdo" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Shaandhayso" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Nooca" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "ogol yahay" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Maya" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "dhacdo" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Xulashada shaandhaynta Logger" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "xisbiga 1aad" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "wax laga beddelay" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "xannibay" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "xisbiga 3aad" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "Faahfaahin" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Qari tiirarka:" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Isticmaal {{input}} khadadka gelistaba qaab si toosan loo fidiyay" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Ilaali ugu badnaan {{input}} culayska bogga tabkiiba" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Ilaali ugu badnaan {{input}} gelinta tab kasta" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "URL" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Dhammaan" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Domain" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Codso isbeddelada" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Beddel shaandhaynta logger" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "shaandhayso waxa ku jira logger" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "Jooji logger (ka tuur dhammaan xogta soo socota)" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "Nadiifi logger" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "Jooji gooyaha" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Beddel guddiga soo booda" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Bedeli kormeeraha DOM" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "tab hadda" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "ku qor \"{{type}}\"" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "Gelida Logger ee aan buuxin dhammaan saddexda shuruudood ee hoose si toos ah ayaa loo tuurayaa:" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "Shaandhaynta taagan lagama helin mid ka mid ah liisaska shaandhaynta hadda karti u leh" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "Kaydi gelida daqiiqadihii ugu dambeeyay {{Input}}" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "Shaandheeyaha taagan \u003Ccode>{{filter}}\u003C/code> ayaa laga helay:" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "xataa haddii" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "marka laga reebo" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "nooc kasta" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "meel kasta ka yimid" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "ka \"{{asalka}}\"" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Block" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Allow" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Dulucda" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "macnaha guud" - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Nooca" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "Nooca:" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "Xeerka URL" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Xaflada" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "{{action}} codsiyada shabakada {{type}} {{br}} URL kee u dhigma {{url}} {{br}}oo asal ahaan ka soo jeeda {{asalka}},{{br}}{{{muhiimada} } waxaa jira shaandheyn ka reeban oo ku habboon." - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "Shaandheeyaha taagan" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "Dulucda:" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "URL" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Liiska kala shaandheynta" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Shaandhayso" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Xeer" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Shaxda" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Jooji" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Abuur" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Dooro" - }, - "pickerCreate": { - "description": "English: Create", - "message": "domains ku xiran" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "?: Xooga saar safafka leh meeraha xisbiga 3aad" - }, - "pickerPick": { - "description": "English: Pick", - "message": "{{tirinta}} ka baxsan {{ total}}" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "?: Xooga saar safafka leh meeraha xisbiga 3aad" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Nooca" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "dhammaan" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "Xeerarka maxalliga ah ayaa meesha ka saaraya xeerarka caalamiga ah." - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "xisbiga 3aad" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "Guji si aad isbeddelkaaga uga dhigto mid joogto ah." - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "sawiro" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "Xeerarka caalamiga ah: tiirkan waxaa loogu talagalay xeerar khuseeya dhammaan bogagga." - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "on this page" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "boggan" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "Guji si aad u joojiso uBlock? ee goobtan. " - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "Guji si aad awood ugu siiso uBlock? goobtan." - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "{{count}} ({{boqolkiiba}}%)" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "Ctrl+guji si aad u joojiso uBlock? kaliya boggan." - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "tan iyo markii la rakibo" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "xarfaha xariiqda" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "CSS/sawirrada xisbiga 3aad" - }, - "popupImageRulePrompt": { - "description": "", - "message": "Xeerarka maxalliga ah: tiirkan waxaa loogu talagalay xeerar khuseeya goobta hadda jirta oo keliya. " - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "Guji si aad u soo celiso isbedeladaada" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Shaandhaynta qurxinta" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Qaybaha warbaahinta waaweyn" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Guji si aad JavaScript uga joojiso goobtan" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Guji si aadan mar dambe u xannibin farta fog ee goobtan" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Guji si aad u xannibto farta fog ee goobtan" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Guji si aad mar dambe u damin JavaScript ee goobtan" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "daaqadaha soo booda" - }, - "popupOr": { - "description": "English: or", - "message": "codsiyada la xannibay" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Guji: dami/damar uBlock? goobtan. " - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Click to disable uBlock₀ for this site.\n\nCtrl+click to disable uBlock₀ only on this page." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Ctrl+guji: dami uBlock? kaliya boggan." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "ama" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Farta fog" - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "JavaScript" - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Domains ku xiran" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Guji si aadan mar dambe u xannibin dhammaan soo-bandhigyada goobtan" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "U beddel xannibaadda walxaha waaweyn ee warbaahinta ee goobtan" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Guji si aad u xannibto qaybaha warbaahinta waaweyn ee boggan" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Fur qoraha" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Bedeli xannibaadda dhammaan soo-baxayaasha goobtan" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Guji si aad u xannibto dhammaan popup-yada goobtan" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Fur dashboard-ka" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Geli qaabka zapper element" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Geli qaabka xulashada walxaha" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Guji si aanad mar dambe u xannibin qaybaha warbaahinta waaweyn ee boggan" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "U beddel shaandhaynta qurxinta goobtan" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Guji si aad u joojiso shaandhaynta isqurxinta ee goobtan" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Guji si aad awood ugu siiso shaandhaynta goobtan" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "U beddel xannibaadda xarfaha fog ee boggan" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Xirmay tan iyo markii la rakibay" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Report an issue on this website" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "In ka yar" - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Wax badan" - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Xiray boggan" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Qoraallada xisbiga 1-aad" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "... " - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Hal filter halkii sadar Shaandheeyaha wuxuu noqon karaa magaca martida loo yahay ee cad, ama shaandhada ku habboon Adblock Plus. Khadadka horgalayaasha leh \u003Ccode>!\u003C/code> waa la iska indhatiraa" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "Xeerarka ku meel gaadhka ah" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Soo deji oo ku dheji" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Dhoofinta" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Xeerarka joogtada ah" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Ballanqaad" - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Soo noqo" - }, - "rulesImport": { - "description": "", - "message": "Codso isbeddelada" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Xeerarkayga" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Guji si aad u qasbi cusbooneysiinta" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Cilad shabakadeed ayaa ka hor istaagtay in kheyraadka la cusboonaysiiyo." - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Wax ka beddel" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Ka soo deji faylka..." - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Tuur" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Badbaadin" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Cusbooneysiinta..." - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Waxaan ahay isticmaale horumarsan (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>akhris loo baahan yahay\u003C/a>)" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "goobaha horumarsan" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Advanced" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Features suitable only for technical users" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Ku muuji tirada codsiyada la xannibay ee sumadda" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "Dami tilmaanta aaladaha" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Appearance" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Qari meel-hayeyaasha walxaha xanniban" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Horudhac" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Cunsurka xannibi..." - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Guji, Ctrl-guji" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Midab-indho la'aan saaxiibtinimo" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Shabakadda shabkada" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Jooji xarfaha fogfog" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Jooji walxaha warbaahinta ee ka weyn {{input}} KB" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Dabeecadahan aan caadiga ahayn waa laga gudbi karaa si ku saleysan goob kasta" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Dami soo-keenista ka hor (si looga hortago xidhiidh kasta ee codsiyada shabakada la xidhay)" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Jooji xisaabinta hyperlink" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Ka ilaali WebRTC inay soo daadato cinwaannada IP-ga maxalliga ah" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Dabeecada aan caadiga ahayn" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Dejinta" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Isticmaal macnaha guud marka ay habboon tahay" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Custom accent color" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Theme" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Shaandhooyinka qurxinta" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Dami shaandhaynta qurxinta" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Daar taageerada kaydinta daruuraha" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Si ku meel gaar ah" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Jid gaaban" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Dhammaan dejimahaaga waa laga saari doonaa, oo uBlock? dib ayuu u bilaabi doonaa. " - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Show Logger" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock? - Logger" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "..." - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Ku soo celi faylka" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Find similar reports" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "{{Input}} Waqtiga" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Taageero" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Ka warbixi arrimaha shaandhaynta shabakadaha gaarka ah \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> soo saara raadraacayaasha\u003C/span >. Wuxuu u baahan yahay akoon GitHub" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Create new report" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "{{input}} Shaandhayso/xukun" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "{{Input}} Dulucda" - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "{{Input}} Xaflada" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Liiska" - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Miis" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Cad" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "Markdown" - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "Furan" - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Dukumeenti" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Ka akhri dukumeentiga \u003Ccode>uBlock/wiki\u003C/code> si aad wax uga ogaato dhammaan astaamaha uBlock Origin." - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Su'aalo iyo taageero" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Jawaabaha su'aalaha iyo noocyada kale ee taageerada caawimada waxaa lagu bixiyaa subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Arrimaha shaandhaynta/mareegaha ayaa jabay" - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Report a filter issue" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "The web page…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pick an entry --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shows ads or ad leftovers" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has privacy-related issues" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfunctions when uBlock Origin is enabled" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Opens unwanted tabs or windows" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Address of the web page:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "\u003Cb>Muhiim:\u003C/b> Iska ilaali isticmaalka xannibaadaha kale ee la midka ah oo ay la socdaan uBlock Origin, sababtoo ah tani waxay sababi kartaa arrimo shaandhaynta shabakadaha gaarka ah." - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Kala sooc:" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Liiska xeerarka shaandhaynta firfircoon." - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "Xeerka syntax: \u003Ccode> nooca goobta loo socdo\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>full documents\u003C/a> )." - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Goobaha lagu kalsoon yahay" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "U Dhoofinta faylka" - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/sq/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/sq/messages.json deleted file mode 100644 index 6879cb7..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/sq/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Ruaj ndryshimet" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Aktivizoj filtrat e mi të personalizuar" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Eksportoj…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importoj dhe shtoj…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filtrat e mi" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Lejoj filtrat e personalizuar që duhen besuar" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Mos shtoni filtra nga burime të pabesueshme." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Ruaj ndryshimet" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Përditësoj automatikisht filtrat" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "E vjetër." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Një URL për rresht. Nuk do të merren parasysh adresat e pasakta." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Reklamat" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Elementet e bezdisshme" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Njoftimi për cookies" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Personale" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Lokale" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Domenet e rrezikshme, siguria" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Për qëllime të ndryshme" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Privatësia" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Sipas rajonit, gjuhës" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Veglat sociale" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Nuk marr parasysh filtrat kozmetikë jospecifikë" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Filtrat kozmetikë jospecifikë janë filtra që aplikohen për të gjitha faqet e internetit. Me aktivizimin e këtij opsioni ulet ngarkesa e memories dhe procesorit.\n\nKy opsion rekomandohet për aparatet kompjuterike jo shumë të shpejta." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importoj…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Përditësimi i fundit: {{ago}}.\nKlikoni për ta përditësuar vetë." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lista e hosteve të bllokuara" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "përdor {{used}} nga {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} filtra rrjeti + {{cosmeticFilterCount}} filtra kozmetikë nga:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Një problem me rrjetin kompjuterik pengoi përditësimin e informacionit." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Listat e filtrave" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Filtrat kozmetikë shërbejnë për të fshehur nga ana vizive elementet e padëshirueshme të faqes, të cilat nuk bllokohen me metodën standarde të filtrimit sipas kërkesës." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Analizoj dhe zbatoj filtrat kozmetikë" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Heq të gjitha stoqet" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Pezulloj aktivitetin deri kur të jenë gati të gjitha listat" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Përditësoj tani" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Përditëson…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "shfaqni përmbajtjen" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Kopjoj në skedar…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Listat e filtrave të uBO mundësohen falas në \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN-të\u003C/a> e mëposhtme:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Përditësimi i listave do të kryhet nëpërmjet një CDN-je rastësore." - }, - "aboutChangelog": { - "description": "", - "message": "Ditari i ndryshimeve" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Materiali burimor (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Kontribuesit" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Programet kushtëzuese (sipas GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Listat e filtrave" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Info" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Politika e privatësisë" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Kthej parametrat fillestarë…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Të gjithë parametrat do të fshihen dhe uBlock₀ do të hapet sërish.\n\nDo ktheni parametrat origjinalë?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Rindërtoj sipas skedarit…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Të gjithë parametrat do të mbishkruhen me të dhënat e kopjuara më {{time}}, dhe uBlock₀ do të hapet sërish.\n\nDo mbishkruani parametrat aktualë?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Të dhënat nuk lexohen ose mund të jenë dëmtuar" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Materiali burimor" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Përkthimet" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Parametrat e avancuar" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Kujdes! Mbani ju përgjegjësi nëse i ndryshoni parametrat e avancuar." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Ilustruesi i aseteve" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Klikoni për ta hapur" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Emri i aparatit:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Importoni nga reja informatike" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importoni nga reja informatike dhe bashkoni me parametrat aktualë" - }, - "cloudPush": { - "description": "tooltip", - "message": "Eksportoni në renë informatike" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Bllokoj elementin në kuadër…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Abonohem në listën e filtrave…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Lejoj përkohësisht elementet e mëdha multimediale" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Shikoj kodin burimor…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Paneli i kontrollit" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Kujdes! Nuk keni ruajtur ndryshimet" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Shpërfill" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Qëndroj" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Kthehem" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Mbyll dritaren" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Vazhdoj" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Gjithnjë" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Përkohësisht" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Mos më lajmëro për këtë faqen" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Gjendet në:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "pa parametra" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Zhbllokoj mënyrën strikte për {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin po pengon hapjen e faqes:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Për shkak të filtrit" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Faqe e bllokuar" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} ditë më parë" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} orë më parë" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} minuta më parë" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "një ditë më parë" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "një orë më parë" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "një minutë më parë" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Problem me rrjetin kompjuterik: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Më në fund, një bllokues efikas që nuk e rëndon procesorin dhe memorien." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "fikur" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Ruaj ndryshimet" - }, - "genericBytes": { - "description": "", - "message": "bajt" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopjoj në memorie" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Ç/Aktivizoni lëvizjen me rrëshqitje" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Rikthej" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Përzgjedh të gjitha" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Parashtroj" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Probleme: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Të gjitha" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Në prapaskenë" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtroni zërat në regjistër" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domeni" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filtri" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Lloji" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Pastroni regjistrin" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Skeda aktuale" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Ç/Aktivizoni strukturën DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Konteksti" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filtri" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Lista e filtrave" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Detajet" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Palët" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Konteksti bazë" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Rregulla" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Lloji" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "E paformatuar" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Listë" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabelë" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Regjistri i kërkesave" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Ndërprisni regjistrimin (e gjithë të dhënave të tjera)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Ç/Aktivizoni panelin modal" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Freskoni përmbajtjen e skedës" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "palët kryesore" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "palët e treta" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "e lejuar" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "e bllokuar" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "plot ngjarje" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "e modifikuar" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Jo" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Opsionet e filtrimit të regjistrit" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Ç/Aktivizoni filtrat e regjistrit" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Zërat në regjistër do të fshihen automatikisht kur nuk plotësojnë këto tri kushte:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Konteksti" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filtri/rregulla" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Palët" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Ora" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Shtyllat e fshehura:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Në pamjen e zgjeruar përdor {{input}} rreshta për zë" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Ruaj zërat e {{input}} minutave të fundit" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Ruaj jo më shumë se {{input}} zëra për skedë" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Ruaj jo më shumë se {{input}} faqe të reja për skedë" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Filtri statik \u003Ccode>{{filter}}\u003C/code> gjendet në:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Nuk u gjet filtri statik në asnjërën prej listave aktive" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Filtrimi statik" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} kërkesat e {{type}} {{br}}që korrespondojnë me adresën {{url}} {{br}}dhe që e kanë origjinën {{origin}},{{br}}{{importance}} ekziston një filtër përjashtues i njëjtë." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Lejoj" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "ngado" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "çdo lloji" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Bllokoj" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "edhe kur" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "përveçse kur" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "nga “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "llojit “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Konteksti:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Filtrimi sipas URL" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Lloji:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Rifilloni regjistrimin" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Bllokoj elementin…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Filtrat kozmetikë" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Kliko, Kliko me Ctrl" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Krijoj" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Filtrat e rrjetit" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Përzgjedh" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Parashikoj" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Mbyll" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "skriptet nga pala kryesore" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "palët e treta" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "kuadër" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "kuadrot nga palët e treta" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/imazhet nga palët e treta" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "skript" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "skriptet nga palët e treta" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "të gjitha" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "te kjo faqe" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Te kjo faqe janë bllokuar" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "kërkesa të bllokuara" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "që prej instalimit" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Nga fillimi janë bllokuar" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ose {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domenet që janë lidhur" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} nga {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domenet që janë lidhur" - }, - "popupImageRulePrompt": { - "description": "", - "message": "imazhet" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "skriptet e integruara" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Më pak" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Më shumë" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Filtrat kozmetikë" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Elementet e mëdha multimediale" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Dritaret modale" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Modelet e jashtme shkronjore" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "ose" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Ç/aktivizoni uBlock₀ te ky uebsajti.\n\nKlikimi+Ctrl e çaktivizon uBlock₀ vetëm te kjo faqja." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Çaktivizoni uBlock₀ te ky uebsajti.\n\nKlikimi+Ctrl e çaktivizon uBlock₀ vetëm te kjo faqja." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Aktivizoni uBlock₀ te ky uebsajti." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Hapni panelin e kontrollit" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Rregullat globale: rregullat në këtë shtyllë aplikohen për të gjitha uebsajtet." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Rregullat lokale: rregullat në këtë shtyllë aplikohen vetëm për këtë uebsajtin. \nKëto kanë përparësi mbi rregullat globale." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Regjistri i kërkesave" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Ç/Aktivizoni filtrat kozmetikë te uebsajti" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Çaktivizoni filtrat kozmetikë te uebsajti" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Aktivizoni filtrat kozmetikë te uebsajti" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Zh/Bllokoni elementet e mëdha multimediale te uebsajti" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Bllokoni elementet e mëdha multimediale te uebsajti" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Zbllokoni elementet e mëdha multimediale te uebsajti" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Zh/Bllokoni të gjitha dritaret modale te uebsajti" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Bllokoni të gjitha dritaret modale te uebsajti" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Zhbllokoni të gjitha dritaret modale te uebsajti" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Zh/Bllokoni modelet e jashtme shkronjore te uebsajti" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Bllokoni modelet e jashtme shkronjore te uebsajti" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Zhbllokoni modelet e jashtme shkronjore te uebsajti" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Çaktivizoni JavaScript-in te uebsajti" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Aktivizoni JavaScript-in te uebsajti" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Përzgjedhësi i elementeve" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Raportoni problemin me uebsajtin" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Ktheni ndryshimet." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Ruani përgjithnjë ndryshimet." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Asgjësuesi i elementeve" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Versioni" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Dobësoj mënyrën e bllokimit" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Aplikoj" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Modifikoj" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Anuloj" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Regjistroj" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Eksportoj në skedar…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Rregullat e sintaksës: \u003Ccode>burimi destinacioni lloji veprimi\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>dokumentimi i plotë\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Lista e rregullave për filtrimin dinamik." - }, - "rulesImport": { - "description": "", - "message": "Importoj nga skedari…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Rregullat e mia" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Rregullat e përhershme" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Rikthej" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Rendit:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destinacioni" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Burimi" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Lloji i rregullës" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Rregullat e përkohshme" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Vlerat standarde" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Këto vlera mund të ndryshohen sipas uebsajtit" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Parametrat e avancuar" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Funksione të përshtatshme vetëm për specialistët" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Kam njohuri të thelluara" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "parametrat e avancuar" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Paraqitja" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Aktivizoj renë informatike" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Fsheh treguesin e elementeve të bllokuara" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Përshtat ngjyrat për daltonikët" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Përdor menunë kontekstuale sipas rrethanave" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Çaktivizoj analizën e lidhjeve hipertekstuale" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Shfaq në ikonë numrin e kërkesave të bllokuara" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Kopja e fundit:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Rindërtimi i fundit:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Bllokoj raportet e CSP-së" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Çaktivizoj filtrat kozmetikë" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Bllokoj elementet multimediale më të mëdha se {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Bllokoj modelet e jashtme shkronjore" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Çaktivizoj JavaScript-in" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Parametrat" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Çaktivizoj kërkesat paraprake (për të shmangur lidhjet me kërkesat e bllokuara)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Personalizoj ngjyrën e theksuar" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Motivi" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Çaktivizoj përshkrimet e shkurtra" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Demaskoj emrat kanonikë" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Nuk lejoj WebRTC-në që të zbulojë adresat IP lokale" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Vendosni kombinimin" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Shkurtoret" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Paneli i kontrollit" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Regjistri i kërkesave" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Regjistri i kërkesave" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Hapësira e përdorur: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Abonohem" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Do e shtoni adresën në listën e personalizuar të filtrave?\n\nTitulli: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Gjej raporte të ngjashme" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Hap" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Ndihma teknike" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Censuroj" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Krijoj raport të ri" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentacioni" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Lexoni \u003Ccode>uBlock/wiki\u003C/code> që të mësoni më shumë për funksionet e uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Pyetjet dhe ndihma teknike" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Në forumin e dedikuar Reddit \u003Ccode>/r/uBlockOrigin\u003C/code> mund të bëni pyetje dhe të kërkoni çdolloj ndihme tjetër." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Problemet me filtrat/faqet me defekte" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Problemet e disa faqeve me filtrat duhen raportuar në ditarin e problemeve \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code>\u003C/span>. \u003Cu>Duhet një konto GitHub.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Kujdes:\u003C/b> uBlock Origin nuk duhet përdorur njëkohësisht me aplikacione të ngjashme bllokuese, pasi mund të keni probleme me filtrat." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Këshilla:\u003C/b> Sigurohuni që të përditësoni listat e filtrave. \u003Cspan data-url=\"logger-ui.html#_\">Regjistri\u003C/span> është instrumenti kryesor për diagnostikimin e problemeve me filtrat." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Raportimi i problemeve" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Problemet e uBlock Origin duhen raportuar në ditarin e problemeve \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>\u003C/span>. \u003Cu>Duhet një konto GitHub.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Diagnostikimi i problemeve" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Informacioni teknik i mëposhtëm u shërben personave të cilët përpiqen të zgjidhin problemin që keni." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Kujdes:\u003C/b> Informacionet me sfond privat dhe delikat censurohen automatikisht. Informacioni i censuruar mund ta vështirësojë zgjidhjen e problemit." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Etiketoj faqen si “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“E papërshtatshme për punë”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Raportoni problemet me filtrat" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verifikoni a është raportuar më parë problemi që të mos i lodhni vullnetarët e tjerë me të njëjtat gjëra." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Listat e filtrave përditësohen rregullisht. Sigurohuni që problemi qëndron edhe me listat e reja." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verifikoni a qëndron problemi nëse e freskoni sërish faqen në fjalë." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Faqja…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Zgjidhni --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shfaq reklama ose pjesë reklamash" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ka mbivendosje ose parregullsi të tjera" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "E di që përdor uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ka probleme me privatësinë" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Bllokohet kur aktivizoj uBlock Origin" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Hap skeda ose dritare të panevojshme" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Adresa e faqes:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Nuk censuroj" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Ç/Aktivizoj filtrat kozmetikë" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Ç/Aktivizoj JavaScript-in" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Kur hapet shfletuesi nuk bëhet filtrimi i duhur. Freskoni faqen për ta filtruar mirë." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Ruaj ndryshimet" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Eksportoj…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importoj dhe shtoj…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Faqet e besuara" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Kjo listë paraqet faqet e besuara të internetit në të cilat uBlock Origin duhet çaktivizuar. Një element për rresht." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/sr/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/sr/messages.json deleted file mode 100644 index 536b8fe..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/sr/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Примени промене" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Омогући моје прилагођене филтере" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Извези" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "моји-ublock-филтери_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Увези и додај" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Моји филтери" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Дозволи прилагођене филтере који захтевају поверење" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Не додавај филтере из непоузданих извора." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Примени промене" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Аутоматски ажурирај листе филтера" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Застарело." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Једна адреса по реду. Неисправне адресе ће бити тихо игнорисане." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Рекламе" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Сметње" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Обавештења о колачићима" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Прилагођени" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Уграђени" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Заштита од злонамерног софтвера, безбедност" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Вишенаменски" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Приватност" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Регионални, језички" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Друштвени виџети" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Игнориши опште естетске филтере." - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Општи естетски филтери су они естетски филтери који су намењени за примену на свим сајтовима. Омогућавањем ове опције, елиминисаће се повећана потрошња меморије и оптерећење процесора на страницама као резултат руковања општим естетским филтерима.\n\nПрепоручује се да се ова опција омогући на мање моћним уређајима." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Увези..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Последње ажурирање: {{ago}}.\nКликните да бисте ажурирали." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Списак блокираних хостова" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} искоришћено од {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "мрежних филтера: {{netFilterCount}} + естетских филтера: {{cosmeticFilterCount}} из:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Грешка на мрежи је спречила ажурирање ресурса." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Листе филтера" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Естетски филтери служе за сакривање елемената на веб страници који се сматрају визуелном сметњом и који не могу бити блокирани од стране мрежних захтева базираних на филтрирању." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Рашчлани и примени естетске филтере." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Очисти сав кеш" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Обустави мрежну активност док се не учитају све листе филтера" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Ажурирај сада" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Ажурирање..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "приказ садржаја" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "kB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Сачувај резервну копију у датотеку..." - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Сопствене листе филтера uBO-a се слободно хостују на следећим \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN-овима\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Насумично одабрани CDN се користи када листу филтера треба ажурирати." - }, - "aboutChangelog": { - "description": "", - "message": "Списак измена" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Изворни код (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Сарадници" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Спољне зависности (компатибилно са GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Листе филтера" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "О програму" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Политика приватности" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Врати на подразумевана подешавања..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Сва ваша подешавања ће бити обрисана и µBlock ће се поново покренути.\n\nВрати µBlock на првобитна подешавања?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Врати из датотеке..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Сва ваша подешавања ће бити прегажена резервном копијом података сачуваним {{time}} и uBlock₀ ће се поново покренути.\n\nПрегазити сва постојећа подешавања резервном копијом података?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Подаци се не могу прочитати или су неисправни" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Изворни код" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Преводи" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Напредна подешавања" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Упозорење! Мењате ова напредна подешавања на сопствени ризик." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Прегледач ресурса" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Кликните за учитавање" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Назив овог уређаја:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Увези из складишта у облаку" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Увези из складишта у облаку и споји са тренутним подешавањима" - }, - "cloudPush": { - "description": "tooltip", - "message": "Извези у складиште у облаку" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Блокирај елемент у оквиру..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Претплатите се на листу филтера..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Привремено дозволи велике мултимедијалне елементе" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Прикажи изворни код…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Контролна табла" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Упозорење! Имате промене које нису сачуване" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Игнориши" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Остани" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Иди назад" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Затвори овај прозор" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Настави" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Трајно" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Привремено" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Не упозоравај ме поново на овај сајт" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Пронађен у:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "без параметара" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Искључи строго блокирање за {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin је спречио учитавање следеће странице:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "због следећег филтера" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Страница је блокирана" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "пре {{value}} дана" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "пре {{value}} сата/и" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "пре {{value}} минута" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "пре један дан" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "пре један сат" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "пре један минут" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Грешка на мрежи: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Коначно, ефикасан блокатор. Ниски процесорски и меморијски захтеви." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "искључен" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Примени промене" - }, - "genericBytes": { - "description": "", - "message": "бајтови" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Копирај у оставу" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Закључај/откључај померање" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Врати" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Изабери све" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Пошаљи" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Грешака: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Све" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Иза сцене" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "филтрирај уносе евиденције" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Домен" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Филтер" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Тип" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Очисти евиденцију" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Тренутна картица" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Укључи/искључи DOM инспектор" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Контекст" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Филтер" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Листа филтера" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Детаљи" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Страна" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Контекст корена" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Правило" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Тип" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Обично" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Листа" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Табела" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Евиденција" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Паузирај евиденцвију (одбаци све долазне податке)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Укључи/искључи искачући панел" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Поновно учитавање садржаја картице" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "прве стране" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "треће стране" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "дозвољено" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "блокирано" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "важно" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "измењено" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Не" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Опције филтрирања евиденције" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Укључи/искључи филтрирање евиденције" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Уноси у евиденцији који не испуњавају сва три услова испод биће аутоматски одбачени:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Контекст" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Филтер/правило" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Страна" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Време" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Сакриј колоне:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Користи {{input}} линија по уносу у усправном проширеном режиму" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Задржи уносе из последњих {{input}} минута" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Задржи највише {{input}} уноса по картици" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Задржи највише {{input}} учитавања страница по картици" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Статички филтер \u003Ccode>{{filter}}\u003C/code> пронађен у:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Статички филтер није могуће пронаћи нити у једној тренутно омогућеној листи филтера" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Статички филтер" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} мрежни захтев {{type}} {{br}} чија УРЛ адреса одговара {{url}} {{br}} и која долази од {{origin}},{{br}} {{importance}} постоји одговарајући филтер изузетак." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Дозволи" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "било одакле" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "сваки тип" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Блокирај" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "чак иако" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "осим кад" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "од “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "тип “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Контекст:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Правило URL адресе" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Тип:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Настави евидентирање у дневнику" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Блокирај елемент..." - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Естетски филтери" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Клик, Ctrl-клик" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Креирај" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Мрежни филтери" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Изабери" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Преглед" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Изађи" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "Корисничке скрипте" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "треће стране" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "оквир" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "Оквири трећих страна" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/слике трећих страна" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "скрипта" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "Скрипте трећих страна" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "све" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "на овој страници" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Блокирано на овој страници" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "блокирани захтеви" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "од инсталације" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Блокирано од инсталације" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} или {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Повезани домени" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} од {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "повезани домени" - }, - "popupImageRulePrompt": { - "description": "", - "message": "слике" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "уметнуте скрипте" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Мање" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Више" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Естетско филтрирање" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Велики мултимедијски елементи" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Искачући прозори" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Удаљени фонтови" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "или" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Клик: онемогући/омогући µBlock₀ за овај сајт.\n\nCtrl+клик: онемогући/омогући µBlock₀ само за ову страницу." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Кликните да бисте онемогућили µBlock₀ за овај сајт.\n\nCtrl+клик да бисте онемогућили µBlock₀ само на овој страници." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Кликните да бисте омогућили µBlock₀ за овај сајт." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Отвори контролну таблу" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Општа правила: ова колона је за правила која се примењују на свим сајтовима." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Локална правила: ова колона је за правила која се примењују само на тренутном сајту.\nЛокална правила имају предност у односу на општа." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Отвори евиденцију" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Укључи/искључи естетско филтрирање за овај сајт" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Кликните да бисте онемогућили естетско филтрирање на овом сајту" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Кликните да бисте омогућили естетско филтрирање на овом сајту" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Укључи/искључи блокирање великих мултимедијалних елемената за овај сајт" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Кликните за блокирање великих мултимедијалних елемената на овом сајту" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Кликните да бисте зауставили блокирање великих мултимедијалних елемената на овом сајту" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Укључи/искључи блокирање свих искачућих прозора за овај сајт" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Кликните за блокирање свих искачућих прозора на овом сајту" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Кликните да бисте зауставили блокирање свих искачућих прозора на овом сајту" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Укључи/искључи блокирање удаљених фонтова за овај сајт" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Кликните за блокирање удаљених фонтова на овом сајту" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Кликните да бисте зауставили блокирање удаљених фонтова на овом сајту" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Кликните да онемогућите JavaScript на овом сајту" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Кликните да JavaScript не буде више онемогућен на овом сајту" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Режим избора елемената" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Пријавите проблем на овом веб сајту" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Кликните да бисте вратили промене." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Кликните да бисте промене учинили трајним." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Режим уклањања елемената" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Верзија" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Опуштени режим блокирања" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Потврди" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "моја-ublock-динамичка-правила_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Уреди" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Одбаци" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Сачувај" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Извези у датотеку..." - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Правила синтаксе: \u003Ccode>извор одредиште тип акција\u003C/code>(\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>сва документација\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Списак правила за динамичко филтрирање." - }, - "rulesImport": { - "description": "", - "message": "Увези из датотеке..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Моја правила" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Стална правила" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Врати" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Сортирај:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Одредиште" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Извор" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Тип правила" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Привремена правила" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Подразумевано понашање" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Ова подразумевана понашања могу бити поништена за појединачне веб сајтове" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Напредно" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Функције прикладне само за техничке кориснике" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Ја сам напредни корисник" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "напредна подешавања" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Изглед" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Укључи подршку за складиште у облаку" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Сакриј држаче блокираних елемената" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Мод за далтонисте" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Користи контекстни мени где је прикладно" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Онемогући проверавање хиперлинкова" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Прикажи број блокираних захтева на иконици" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Последња резервна копија:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Последње враћање:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Блокирај CSP извештаје" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Онемогући естетско филтрирање" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Блокирај мултимедијалне елементе веће од {{input}} kB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Блокирај удаљене фонтове" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Онемогући JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Подешавања" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Онемогући оптимизацију учитавања (да би се спречила свака веза блокираних мрежних захтева)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Прилагођена наглашена боја" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Тема" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Онемогући описе алатке" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Откриј канонска имена" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Спречи WebRTC да пропушта локалну IP адресу" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Укуцајте пречицу" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Пречице" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Прикажи контролну таблу" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Прикажи евиденцију" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Евиденција" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Искоришћеност складишта: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Претплати се" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Додати следећу URL адресу у вашу прилагођену листу филтера?\n\nНазив: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Пронађи сличне извештаје" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Отвори" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Подршка" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Редигуј" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Креирај нови извештај" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Документација" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "\nПрочитајте документацију на \u003Ccode>uBlock/wiki\u003C/code> да бисте сазнали све о функцијама uBlock Origin-а." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Питања и подршка" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Одговори на питања и друге врсте подршке налазе се у подредиту \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Проблеми са филтером/веб сајт не фукционише" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Пријавите проблеме са филтерима на одређеним веб сајтовима на \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code>, страници за праћење проблема\u003C/span>. \u003Cu>Неопходан је GitHub налог.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Важно:\u003C/b> Избегавајте коришћење других блокатора сличне намене заједно са uBlock Origin-ом, јер то може изазвати проблеме са филтерима на одређеним веб сајтовима." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Савет:\u003C/b> Уверите се да су ваше листе филтера ажуриране. \u003Cspan data-url=\"logger-ui.html#_\">Управљач евиденцијом\u003C/span> је примарни алат за дијагностиковање проблема у вези са филтером." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Пријава грешке" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Пријавите проблеме са самим uBlock Origin-ом на \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>, страници за праћење проблема\u003C/span>. \u003Cu>Неопходан је GitHub налог.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Информација о решавању проблема" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Испод су техничке информације које могу бити корисне када волонтери покушавају да вам помогну да решите проблем." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Важно:\u003C/b> Потенцијално приватне или осетљиве информације се подразумевано редигују. Редиговане информације могу отежати решавање проблема." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Изначите веб страницу као „NSFW“ (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Није безбедна за рад”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Пријављивање проблема са филтером" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Да не бисте оптерећивали волонтере дуплим извештајима, проверите да ли је проблем већ пријављен." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Листе филтера се ажурирају свакодневно. Уверите се да ваш проблем није већ решен у најновијим листама филтера.\n" - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Проверите да ли проблем и даље постоји након поновног учитавања проблематичне веб странице.\n" - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Веб страница..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Изаберите ставку --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Приказује рекламе или остатке реклама" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Има преклапања или друге сметње" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Открива uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Има проблеме у вези са приватношћу" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Фукционише неправилно када је uBlock Origin омогућен" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "\nОтвара нежељене картице или прозоре" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Адреса веб странице:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Поништи редиговање" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Укључи/искључи естетско филтрирање" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Укључи/искључи JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Није могуће правилно филтрирати при покретању прегледача. Поново учитајте страницу да бисте осигурали правилно филтрирање." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Примени промене" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Извези" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "моји-ublock-поуздани-сајтови_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Увези и додај" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Поуздани сајтови" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Смернице поузданих сајтова диктирају на којим веб страницама uBlock Origin треба да буде онемогућен. Један унос по реду." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/sv/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/sv/messages.json deleted file mode 100644 index f23d177..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/sv/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Verkställ ändringar" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Aktivera mina anpassade filter" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Exportera…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "mina-ublock-statiska-filter_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Importera och lägg till…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Mina filter" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Att tillåta anpassade filter kräver tillit" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Lägg inte till filter från obetrodda källor." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Verkställ ändringar" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Uppdatera filterlistor automatiskt" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Föråldrad." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "En webbadress per rad. Ogiltiga webbadresser ignoreras tyst." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Annonser" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Störande" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie-meddelanden" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Anpassade" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Inbyggda" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Skydd mot skadlig programvara, säkerhet" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Mångsidiga" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Integritet" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Regioner, språk" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Sociala widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignorera allmänna kosmetiska filter" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Allmänna kosmetiska filter är de kosmetiska filter som är avsedda att tillämpas på alla webbplatser. Att aktivera detta alternativ kommer att eliminera minnes- och processoranvändningen som läggs till på webbsidor som ett resultat av hantering av allmänna kosmetiska filter.\n\nDet rekommenderas att aktivera detta alternativ på mindre kraftfulla enheter." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Importera…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Senast uppdaterad: {{ago}}\nKlicka för att påtvinga en uppdatering." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Listor över blockerade värdar" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} använda av {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} nätverksfilter + {{cosmeticFilterCount}} kosmetiska filter från:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Ett nätverksproblem har förhindrat resursen från att uppdateras." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filterlistor" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Kosmetiska filter tjänar till att dölja element på en webbsida som bedöms vara en visuell olägenhet och som inte kan blockeras av nätverksbegärningsbaserade filtermotorer." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Tolka och tillämpa kosmetiska filter" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Rensa alla cachar" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Stäng av nätverksaktiviteten tills alla filterlistor har laddats" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Uppdatera nu" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Uppdaterar…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "visa innehåll" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Säkerhetskopiera till fil…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "min-ublock-sakerhetskopia_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO:s egna filterlistor finns fritt tillgängligt på följande \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN:er\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Ett slumpmässigt valt CDN kommer att användas när en filterlista behöver uppdateras." - }, - "aboutChangelog": { - "description": "", - "message": "Ändringslogg" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Källkod (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Bidragsgivare" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Externa beroenden (GPLv3-kompatibla):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filterlistor" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Om" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Integritetspolicy" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Återställ till standardinställningarna…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Alla dina inställningar kommer att tas bort och uBlock₀ kommer att starta om.\n\nÅterställ uBlock₀ till fabriksinställningar?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Återställ från fil…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Alla dina inställningar kommer att skrivas över med data som har säkerhetskopierats {{time}} och uBlock₀ kommer att starta om.\n\nVill du skriva över befintliga inställningar med säkerhetskopierad data?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Data kunde inte läsas eller är ogiltiga" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Källkod" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Översättningar" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Avancerade inställningar" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Varning! Ändra dessa avancerade inställningar på egen risk." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Tillgångsvisare" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Klicka för att ladda" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Enhetens namn:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Importera från molnlagring" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Importera från molnlagring och sammanfoga med aktuella inställningar" - }, - "cloudPush": { - "description": "tooltip", - "message": "Exportera till molnlagring" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Blockera element i ramar…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Prenumerera på filterlista…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Tillåt tillfälligt stora medieelement" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Visa källkoden…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Kontrollpanel" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Varning! Du har inte sparat dina ändringar" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignorera" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Stanna kvar" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Gå tillbaka" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Stäng det här fönstret" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Fortsätt" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Permanent" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Temporärt" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Varna mig inte igen om den här sidan" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Hittades i:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "utan parametrar" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Inaktivera strikt blockering av {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin har förhindrat följande sida från att läsas in:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "På grund av följande filter" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Sidan blockerad" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} dagar sedan" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} timmar sedan" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} minuter sedan" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "en dag sedan" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "en timme sedan" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "en minut sedan" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Nätverksfel: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Äntligen en effektiv blockerare. Snäll mot både processor och minne." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "av" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Verkställ ändringar" - }, - "genericBytes": { - "description": "", - "message": "byte" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Kopiera till urklipp" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Växla rullningslås" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Ångra" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Markera allt" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Skicka" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Fel: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Alla" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Tabless" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filtrera loggarens innehåll" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Domän" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filter" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Typ" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "Webbadress" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Rensa loggaren" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Aktuell flik" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Växla DOM-inspektören" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Innehåll" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filter" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filterlista" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Detaljer" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partsrelation" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Rotinnehåll" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Regel" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Typ" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "Webbadress" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Enkel" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Lista" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tabell" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Loggaren" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pausa loggaren (kassera alla inkommande data)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Växla popup-panelen" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Uppdatera flikinnehåll" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Förstapart" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Tredjepart" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "tillåten" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blockerad" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "händelserikt" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "ändrad" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Inte" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Loggarens filtreringsalternativ" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Växla loggarens filtrering" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Loggarens poster som inte uppfyller alla tre villkoren nedan kommer automatiskt att kasseras:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Innehåll" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filter/regel" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partsrelation" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Tid" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Dölj kolumner:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Använd {{input}} rader per inmatning i vertikalt expanderat läge" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Bevara poster från de {{input}} senaste minuterna" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Bevara högst {{input}} poster per flik" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Bevara högst {{input}} sidinläsningar per flik" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Det statiska filtret \u003Ccode>{{filter}}\u003C/code> hittades i:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Statiskt filter kunde inte hittas i någon av de aktuella aktiverade filterlistorna" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statiskt filter" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} nätverksförfrågningar av {{type}} {{br}}vilken webbadress matchar {{url}} {{br}}och som kommer från {{origin}},{{br}}{{importance}} det finns ett matchande undantagsfilter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Tillåt" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "från var som helst" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "alla typer" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Blockera" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "även om" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "utom när" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "från \"{{origin}}\"" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "typ \"{{type}}\"" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Innehåll:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Webbadressregel" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Typ:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Fortsätt loggaren" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Blockera element…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Kosmetiska filter" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Klick, Ctrl-klick" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Skapa" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Nätverksfilter" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Välj" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Förhandsgranska" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Avsluta" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "Förstapartskript" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "Tredjepart" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "ram" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "Tredjepartramar" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/bilder från tredjepart" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "skript" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "Tredjepartskript" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "alla" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "på denna sida" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blockerat på denna sida" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "blockerade förfrågningar" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "sedan installationen" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blockerat sedan installation" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Anslutna domäner" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} av {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "anslutna domäner" - }, - "popupImageRulePrompt": { - "description": "", - "message": "bilder" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "inline skript" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Mindre" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Mer" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Kosmetisk filtrering" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Stora medieelement" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Popup-fönster" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Fjärrtypsnitt" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "eller" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Klick: inaktivera/aktivera uBlock₀ för denna webbplats.\n\nCtrl+klick: inaktivera uBlock₀ enbart på denna sida." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Klicka för att inaktivera uBlock₀ för denna webbplats.\n\nCtrl+klicka för att inaktivera uBlock₀ enbart på denna sida." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Klicka för att aktivera uBlock₀ på denna webbplats." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Öppna kontrollpanelen" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Globala regler: den här kolumnen avser regler som gäller för alla webbplatser." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Lokala regler: den här kolumnen avser endast regler som gäller för den aktuella webbplatsen.\nLokala regler åsidosätter globala regler." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Öppna loggaren" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Växla kosmetiska filter för denna webbplats" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klicka för att inaktivera kosmetiska filter på denna webbplats" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Klicka för att aktivera kosmetisk filtrering på denna webbplats" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Växla blockering av stora medieelement för denna webbplats" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klicka för att blockera stora medieelement på denna webbplats" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Klicka för att inte längre blockera stora medieelement på denna webbplats" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Växla blockering av popup-fönster för den här webbplatsen" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klicka för att blockera alla popup-fönster på denna webbplats" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Klicka för att inte längre blockera alla popup-fönster på denna webbplats" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Växla blockeringen av fjärrtypsnitt på denna webbplats" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klicka för att blockera fjärrtypsnitt på denna webbplats" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Klicka för att inte längre blockera fjärrtypsnitt på denna webbplats" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klicka för att inaktivera JavaScript på denna webbplats" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Klicka för att aktivera JavaScript på denna webbplats" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Gå till elementväljarläge" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Rapportera ett problem på denna webbplats" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Klicka för att ångra dina ändringar." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Klicka för att göra dina ändringar permanenta." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Gå till elementzapperläge" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Version" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Lätta på blockeringsläge" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Skicka" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "mina-ublock-dynamiska-regler_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Redigera" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Förkasta" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Spara" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Exportera till fil…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Regelsyntax: \u003Ccode>källa mål typ åtgärd\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>full dokumentation\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Lista över dina dynamiska filterregler." - }, - "rulesImport": { - "description": "", - "message": "Importera från fil…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Mina regler" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Permanenta regler" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Ångra" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sortera:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Mål" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Källa" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Regeltyp" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Temporära regler" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Standardbeteende" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Dessa standardbeteenden kan åsidosättas per webbplats" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Avancerat" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Funktioner som endast är lämpliga för tekniska användare" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Jag är en avancerad användare" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "avancerade inställningar" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Utseende" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Aktivera stöd för molnlagring" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Dölj platshållare för blockerade element" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Färgblindsanpassat" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Använd innehållsmenyn där det är lämpligt" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Inaktivera hyperlänksrevidering" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Visa antalet blockerade förfrågningar på ikonen" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Senaste säkerhetskopia:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Senast återställd:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Blockera CSP-rapporter" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Inaktivera kosmetisk filtrering" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Blockera medieelement större än {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Blockera fjärrtypsnitt" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Inaktivera JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Inställningar" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Inaktivera förhämtning (för att förhindra anslutning av blockerade nätverksförfrågningar)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Anpassad accentfärg" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Inaktivera verktygstips" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Ta fram kanoniska namn" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Förhindra WebRTC från att läcka lokala IP-adresser" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Ange en genväg" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Genvägar" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Visa kontrollpanelen" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Visa loggaren" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Loggaren" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Använt utrymme: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Prenumerera" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Lägg till följande webbadress till dina anpassade filterlistor?\n\nTitel: \"{{title}}\"\nWebbadress: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Hitta liknande rapporter" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Öppna" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Support" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Bortredigerad" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Skapa ny rapport" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Dokumentation" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Läs dokumentationen på \u003Ccode>uBlock/wiki\u003C/code> för att lära dig allt om uBlock Origins funktioner." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Frågor och support" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Svar på frågor och andra typer av hjälp finns på subredditen \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filterproblem/webbplatsen fungerar inte" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Rapportera filterproblem med specifika webbplatser till problemhanteringssystemet \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code>\u003C/span>. \u003Cu>Kräver ett GitHub-konto.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Viktigt:\u003C/b> Undvik att använda andra reklamblockerare tillsammans med uBlock Origin, eftersom detta kan orsaka filterproblem på specifika webbplatser." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Se till att dina filterlistor är uppdaterade. \u003Cspan data-url=\"logger-ui.html#_\">Loggaren\u003C/span> är det primära verktyget för att diagnostisera filterrelaterade problem." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Felrapport" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Rapportera problem med själva uBlock Origin till problemhanteringssystemet \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>\u003C/span>. \u003Cu>Kräver ett GitHub-konto.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Felsökningsinformation" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Nedan finns teknisk information som kan vara användbar när volontärer försöker hjälpa dig att lösa ett problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Viktigt:\u003C/b> Potentiellt privat eller känslig information redigeras bort som standard. Bortredigerad information kan göra det svårare att lösa ett problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Märk webbsidan som \"NSFW\" (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Inte lämplig på jobbet”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Rapportera ett filterproblem" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "För att undvika att belasta volontärer med dubbletter av rapporter, kontrollera att problemet inte redan har rapporterats." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filterlistor uppdateras dagligen. Se till att ditt problem inte redan har åtgärdats i de senaste filterlistorna." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Kontrollera att problemet kvarstår efter att du har laddat om den krånglande webbsidan." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Webbsidan…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Välj en post --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Visar annonser eller rester av annonser" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Har överlägg eller andra olägenheter" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Upptäcker uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Har integritetsrelaterade problem" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Fungerar inte när uBlock Origin är aktiverad" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Öppnar oönskade flikar eller fönster" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Hemsidans adress:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Oredigerad" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Växla kosmetisk filtrering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Växla JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Det gick inte att filtrera ordentligt vid webbläsarstart. Ladda om sidan för att säkerställa korrekt filtrering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Verkställ ändringar" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Exportera…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "mina-ublock-betrodda-webbplatser_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Importera och lägg till…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Betrodda webbplatser" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Direktiven för betrodda webbplatser anger vilka webbsidor som uBlock Origin ska inaktiveras på. En post per rad." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/sw/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/sw/messages.json deleted file mode 100644 index 0e97c01..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/sw/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Tekeleza mabadiliko" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Hamisha" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "chujio-zangu-tuli-za-ublock_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Leta na ambatisha" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Vichujio vyangu" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Tekeleza mabadiliko" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Sasisha kiotomatiki orodha ya vichujio" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Zilizoisha muda." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "URL moja kila laini. URL batili zitapuuzwa kimya kimya." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Mtngzo" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Vikasirisho" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Inayokufaa" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Vijengwa ndani" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Vikoa vya programu hasidi" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "\nVya anuwai" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Faragha" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Mikoa, lugha" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Puuza vichujio vya kurembesha vya kijeneriki" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Vichujio jeneriki vya kurembesha ni vichujio vya kurembesha ambavyo vinafaa kutumika kwenye tovuti zote. Kuwezesha chaguo hii kutaondoa mzigo wa kumbukumbu na CPU unaoongezwa kwenye kurasa tovuti baada ya kuzingatia vichujio jeneriki vya kurembesha.\n\nUnapendekezwa kuwezesha chaguo hii kwenye vifaa vyenye uwezo zaidi." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Leta..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Sasisho ya mwisho: {{ago}}.\nBofya kulazimisha sasisho." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} zimetumika kati ya {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "Vichujio vya mtandao {{netFilterCount}} + vichujio vya kurembesha {{cosmeticFilterCount}} kutoka:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Tatizo la mtandao imezuia rasilimali kusasishwa." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Chuja orodha" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Vichujio vya kurembesha vinasaidia kuficha vipengele kwenye ukurasa tovuti ambavyo vinaweka kuwa vizuizi vya mwonekano, na ambavyo haviwezi zuiliwa kupitia injini ya vichujio vinavyotegemea maombi ya mtandao." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Changanua na lazimisha vichujio vya kurembesha" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Takasa kashe zote" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Simamisha shughuli za mtandao hadi orodha zote zimepakiwa" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Sasisha sasa" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Inasasisha..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "tazama yaliyomo" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Cheleza kwenye faili" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "chelezo-yangu-ya-ublock_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Orodha za vichujio za uBO hupangishwa kwenye \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN hizi\u003C/a>." - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "CDN iliyochaguliwa kwa unasibu hutumika orodha ya kichujio inapohitaji kusasishwa" - }, - "aboutChangelog": { - "description": "", - "message": "Yaliyobadilika" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Msimbo wa chanzo (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Wachangiaji" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Msimbo wa chanzo (inatangamana na GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Orodha za vichujio" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Kuhusu" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Sera ya faragha" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Weka upya hadi mipangilio chaguo-msingi..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Mipangilio yako yote itaondolewa, na uBlock₀ itaanza upya.\n\nWeka upya uBlock₀ hadi mipangilio ya mwanzo?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Rejesha kutoka faili..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Mipangilio yako yote itaandikwa upya kutumia data iliyochelezwa mnamo {{time}}, na uBlock₀ itaanza upya.\n\nAndika upya mipangilio yote kutumia chelezo ya data?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Data haisomeki au ni batili" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Msimbo chanzo" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Tafsiri" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Mipangilio pevu" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Ilani! Badilisha mipangilio hii mahiri kwa hiari yako." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ - Kitazama rasilimali" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Bofya kupakia" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Jina la kifaa hiki:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Leta kutoka hifadhi ya wingu" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Leta kutoka hifadhi ya wingu na unganisha na mipangilio ya sasa" - }, - "cloudPush": { - "description": "tooltip", - "message": "Hamisha hadi hifadhi ya wingu" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Zuia kipengee kwenye fremu..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Jisajili kwenye orodha hii…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Ruhusu kwa muda vipengele vya midia kubwa" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "View source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Dashibodi" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Ilani! Una mabadiliko ambazo hazijahifadhika." - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Puuza" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Baki" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Rudi nyuma" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Funga dirisha hii" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Proceed" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Daima" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Kwa muda" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Ilipatwa katika:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "bila parameta" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Lemaza uzuiaji kali kwa {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin imezuia ukurasa huu kupakia:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Kwa sababu ya kichujio kifuatacho" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Page blocked" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "siku {{value}} zilizopita" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "masaa {{value}} yaliyopita" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "dakika {{value}} zilizopita" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "jana" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "saa moja iliyopita" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "dakika moja iliyopita" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Tatizo la mtandao: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Hatimaye, kizuizi kinachofaa. Nyepesi kwenye CPU na kumbukumbu." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "zimwa" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Tekeleza mabadiliko" - }, - "genericBytes": { - "description": "", - "message": "baiti" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Nakili hadi ubao-nakili" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Togoa kubingiriza kuliofungwa" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Rudisha" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Chagua yote" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Wasilisha" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Zote" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Bila vichupo" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "chuja yaliyomo kwenye batli" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Kikoa" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Kichujio" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Aina" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Futa batli" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Kichupo cha sasa" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Togoa kikaguzi cha DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Muktadha" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Kichujio" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Orodha ya vichujio" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Ufafanuzi" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partyness" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Muktadha shina" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Kanuni" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Aina" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Ghafi" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Orodha" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Meza" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "wiki ya uBlock Origin: Batli" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Sitisha batli (puuza data yote inayoingia)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Togoa paneli ibukizi" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Pakia upya yaliyomo kwenye kichupo" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Mhusika wa kwanza" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Mhusika wa tatu" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "imekubaliwa" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "imezuiliwa" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "imebadilishwa" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Sio" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Machaguo ya uchujaji batli" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Togoa uchujaji batli" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Maingizo ya batli yasiyokamilisha masharti yote matatu hapo chini yatatupiliwa mbali kiotomatiki." - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "Muktadha" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Kichujio/kanuni" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partyness" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Wakati" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Ficha safuwima:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Tumia laini {{input}} kila ingisho katika mtindo ya safuwima iliyopanuliwa." - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Hifadhi maingizo za dakika {{input}} zilizopita" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Hifadhi hadi maingizo {{input}} kwenye kila kichupo" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Hifadhi hadi upakiaji-kurasa {{input}} kwenye kila kichupo" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Chujio tuli \u003Ccode>{{filter}}\u003C/code> ilipatikana kwenye:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Chujio tuli haikupatikana popote kwenye orodha za machujio zilizowezeshwa" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Chujio tuli" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} maombi ya mtanda ya {{type}} {{br}} ambayo anwani ya URL inafanana na {{url}} {{br}} ambayo asili ni {{origin}},{{br}}{{importance}} kunayo chujio kighairi inayofanana." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Ruhusu" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "kutoka popote" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "aina yoyote" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Zuia" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "hata kama" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "isipokuwa wakati" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "kutoka \"{{origin}}\"" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "aina \"{{type}}\"" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Muktadha:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Kanuni ya URL" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Aina:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Wacha kusitisha batli" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Zuia kipengele..." - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Vichujio vya kurembesha" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Bofya, Ctrl+bofya" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Unda" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Vichujio vya mtandao" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Teua" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Hakiki" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Ondoka" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "Hati za mhusika wa kwanza" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "Mhusika wa tatu" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "Fremu za mhusika wa tatu" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS ya mhusika wa tatu/picha" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "Hati za mhusika wa tatu" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "zote" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "kwenye ukurasa huu" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Yaliyozuiliwa kwenye ukurasa huu" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "Maombi yaliyozuiliwa" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "tangu usakinishaji" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Yaliyozuiliwa tangu usakinishaji" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Vikoa vilivyounganishwa" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} kati ya {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "vikoa vilivyounganishwa" - }, - "popupImageRulePrompt": { - "description": "", - "message": "picha" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "hati za mstari wa ndani" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Chache" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Zaidi" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Uchujaji wa kurembesha" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Vipengele vya midia kubwa" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Vidirisha ibukizi" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Fonti za mbali" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "au" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Bofya: lemaza/wezesha uBlock₀ kwenye tovuti hii.\n\nCtrl+bofya: lemaza uBlock₀ kwenye ukurasa huu pekee." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Bofya kulemaza uBlock₀ kwenye tovuti hii.\n\nCtrl+bofya kulemaza uBlock₀ kwenye ukurasa huu pekee." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Bofya kuwezesha uBlock₀ kwenye tovuti hii." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Fungua dashibodi" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Kanuni za kila mahali: safuwima hii ni ya kanuni zinazotekelezeka kwenye tovuti zote." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Kanuni za ndani: safuwima hii ni ya kanuni zinazotekelezeka kwenye tovuti ya sasa pekee.\nKanuni za ndani hubatilisha kanuni za kila mahali." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Fungua batli" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Togoa uchujaji wa kurembesha kwenye tovuti hii" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Bofya kulemaza uchujaji wa kurembesha kwenye tovuti hii" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Bofya kuwezesha uchujaji wa kurembesha kwenye tovuti hii" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Togoa uzuiaji wa vipengele vya midia kubwa kwenye tovuti hii" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Bofya kuzuia vipengele vya midia kubwa kwenye tovuti hii" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Bofya kusitisha kuzuia vipengele vya midia kubwa kwenye tovuti hii" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Togoa uzuiaji wa vibukizi kwenye tovuti hii" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Bofya kuzuia vibukizi vyote kwenye tovuti hii" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Bofya kusitisha kuzuia vibukizi vyote kwenye tovuti hii" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Togoa uzuiaji wa fonti za mbali kwenye tovuti hii" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Bofya kuzuia fonti za mbali kwenye tovuti hii" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Bofya kusitisha kuzuia fonti za mbali kwenye tovuti hii" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Bofya kulemaza JavaScript kwenye tovuti hii" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Bofya kusitisha kulemaza JavaScript kwenye tovuti hii" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Ingia mtindo wa kuchagua vipengele" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Ripoti shida na tovuti hii" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Bofya kurejelesha mabadiliko yako." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Bofya kufanya mabadiliko yako yadumu." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Ingia mtindo wa kufyatua vipengele" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Toleo" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Pumzisha mtindo wa kuzuia" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Kabidhi" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "chujio-zangu-badilifu-za-ublock_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Hariri" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Tupa" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Hifadhi" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Hamisha kuenda faili" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Kanuni za sintaksi: \u003Ccode>tendo la aina ya chanzo fikio\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>Kumbukumbu kamili\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Orodha ya kanuni zako badilifu za uchujaji" - }, - "rulesImport": { - "description": "", - "message": "Leta kutoka faili..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Kanuni zangu" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Kanuni za kudumu" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Rudisha" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Panga:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Fikio" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Chanzo" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Aina ya kanuni" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Kanuni za muda" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Tabia chaguo-msingi" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Tabia hizi chaguo-msingi zinaweza kubatilishwa kwenye msingi wa kila tovuti" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Mahiri" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Vipengele vinawafaa watumiaji maarufu tu." - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Mimi na mtumiaji mahiri" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "mipangilio pevu" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Mwonekano" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Wezesha auni wa hifadhi ya wingu" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Ficha vishikilia nafasi za vipengele vilivyozuiliwa" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Rahisi na upofu wa rangi" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Tumia menyu muktadha panapofaa" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Lemaza ukaguzi wa viungo-wavuti" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Onyesha idadi ya maombi yaliyozuiliwa kwenye ikoni" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Chelezo ya mwisho:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Rejesho ya mwisho:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Zuia ripoti za CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Lemaza uchujaji wa kurembesha" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Zuia vipengee vya midia vilivyo kubwa kuliko KB {{input}}" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Zua fonti za mbali" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Lemaza JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Mipangilio" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Lemaza kuleta-mapema (kuepuka uunganishaji wowote wa maombi yaliyozuiliwa)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Rangi ya lafudhi maalum" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Mandhari" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Lemaza vidokezozana" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Fichua majina kawaida" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Zuia WebRTC kuvuja anwani za IP za ndani" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Charaza njiamkato" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Njiamikato" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Onyesha dashibodi" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Onyesha batli" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ - Batli" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Hifadhi iliyotumika: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Jisajili" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: Ongeza URL ifuatayo kwenye orodha za uchujaji zinazokufaa?\n\nKicha: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Pata ripoti sawia" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Fungua" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Usaidizi" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Unda ripoti mpya" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Kumbukumbu" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Soma mwongozo \u003Ccode>kwa uBlock\u003C/code> kujua vipengele vyote vya uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Maswali na usaidizi" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Majibu ya maswali na usaidizi wote mwingine yanapatikana kwenye subreddit ya \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Shida na vichujio/tovuti imeharibika" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Ripoti shida za vichujio za tovuti maalum kwenye\u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">uBlockOrigin/uAssets\u003C/code>kifuatiliaji cha shida\u003C/span>. \u003Cu>Itahitaji akaunti ya GitHub.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Muhimu:\u003C/b> Epuka kutumia vizuizi vingine pamoja na uBlock Origin, maana shida zinaweza kutokea kwenye tovuti kadhaa." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Vidokezo:\u003C/b> Hakikisha orodha zako ni zimesasishwa. \u003Cspan data-url=\"logger-ui.html#_\">Kirekodi\u003C/span> ndicho kifaa kuu cha kutatua shida za vichujio." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Ripoti hitilafu" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Ripoti shida na uBlock Origin yenyewe kwenye\u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>kifuatiliaji cha shida\u003C/span>.\u003Cu>Itahitaji akaunti ya Github.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Maelezo ya utafutatuzi" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Ifuatayo ni taarifa ya kiteknolojia inayoweza kuwa ya manufaa wakati waliojitolea wakijaribu kukusaidia." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Muhimu:\u003C/b> Taarifa inayoweza kuwa nyeti hutolewa, kama chaguo-msingi. Taarifa iliyotolewa huenda ikanya utatuzi wa shide iwe ngumu zaidi." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Ipe tovuti lebo ya \"NSFW\" (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">\"Haifai Kazini\"\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Ripoti shida ya kichujio" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Ili usiwasumbue wasaidizi waliojitolea kwa ripoti rudufu, tafadhali hakikisha kuwa shida haijaripotiwa bado." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Tovuti husika…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Chagua ingizo --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Inaonyesha matangazo au mabakshishi yake" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ina matandazo au sumbufu zingine" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Inagundua uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Ina shida za faragha" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Huenda vibaya uBlock Origin ikiwezeshwa" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Hufungua vichupo au vidirisha visivyotakikana" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Anwani ya tovuti:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Tekeleza mabadiliko" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Hamisha" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "orodhakubalizi-yangu-ya-ublock_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Leta na ambatisha" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Orodha-ruhusu" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Orodha ya vikubaliwa inaamrisha ni kwenye kurasa zipi uBlock Origin italemazwa. Ingizo moja tu kila laini. Maelekezi batili yatapuuzwa kimyakimya na kufanywa kuwa maoni." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ta/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ta/messages.json deleted file mode 100644 index f5f9ad7..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ta/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "மாற்றங்களைச் செயல்படுத்து" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "ஏற்று" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "இறக்குமதி செய் மற்றும் இணை" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "என் வடிகட்டிகள்" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "மாற்றங்களைச் செயல்படுத்து" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "வடிகட்டி பட்டியல்களை தானாக புதுப்பி." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "காலாவதியாகிவிட்டது" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "ஒரு வரிக்கு ஒரு இணைய முகவரி. ‘!’ எனும் எழுத்தில் தொடங்கும் வரிகள் புறக்கணிக்கப்படும். தவறான முகவரிகளும் அமைதியாகப் புறக்கணிக்கப்படும்." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "விளம்பரங்கள்" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "எரிச்சல்கள்" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "தனிபயன்" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "உள்ளமைக்கப்பட்ட" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "தீப்பொருள் ஆள்களங்கள்" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "பல்நோக்கு வடிகட்டி" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "தனியுரிமை" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "மாநில பகுதிகள், மொழிகள் வாரியான" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "பொதுவான ஒப்பனை வடிகட்டிகளை புறக்கணி" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "பொதுவான ஒப்பனை வடிப்பான்கள் அனைத்து ஒப்பனை வடிப்பான்களாகும், அவை எல்லா வலைத்தளங்களிலும் பொருந்தும். இந்த விருப்பத்தை இயக்குவது பொதுவான ஒப்பனை வடிப்பான்களைக் கையாளுவதன் விளைவாக வலைப்பக்கங்களில் சேர்க்கப்பட்ட நினைவகம் மற்றும் CPU மேல்நிலை ஆகியவற்றை நீக்கும்.குறைந்த சக்திவாய்ந்த சாதனங்களில் இந்த விருப்பத்தை இயக்க பரிந்துரைக்கப்படுகிறது." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "இறக்குமதி ..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "கடைசி புதுப்பிப்பு: {{முன்பு}}.\nபுதுப்பிப்பை கட்டாயப்படுத்த கிளிக் செய்க." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "தடைசெய்யப்பட்ட வழங்கிகளின் பட்டியல்" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "மொத்தம் {{total}} இல் {{used}} பயன்படுத்தப்பட்டது" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} பிணைய வடிகட்டிகள் + {{cosmeticFilterCount}} ஒப்பனை வடிகட்டிகளிலிருந்து:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "ஒரு பிணைய பிழை வளத்தைப் புதுப்பிப்பதைத் தடுத்தது." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "வடிகட்டி பட்டியல்கள்" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "\u003Cp>இந்தத் தேர்வு \u003Ca href=\"https://adblockplus.org/en/faq_internal#elemhide\">Adblock Plus-க்கு ஏற்ற “உறுப்பு மறைக்கும்” வடிகட்டிகளைப்\u003C/a> படிப்பதையும் பயன்படுத்துவத்தையும் செயல்படுத்தும். இந்த வடிகட்டிகள் அடிப்படையில் மேலோட்டமானவை. இணையப் பக்கத்தின் தோற்றத்தில் தொந்தரவாகக் கருதப்பட்டு, ஆனால் இணையக்கோரிக்கைகளை வடிகட்டும் எஞ்சினின் மூலம் தடுக்கப்பட முடியாத பக்க-உறுப்புகளை, பார்வையிலிருந்து மட்டும் மறைக்கும்\u003C/p>\u003Cp>இந்தத் தேர்வு uBlock₀-இன் நினைவக உபயோகத்தை அதிகரிக்கும்.\u003C/p>" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "இலக்கணகூறை விவரி மற்றும் ஒப்பனை வடிகட்டிகளை செயல்படுத்து." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "தற்காலிகச் சேமிப்புகள் அனைத்தையும் அகற்று" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspend network activity until all filter lists are loaded" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "இப்போது புதுப்பிக்கவும்" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "புதுப்பிக்கிறது..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "உள்ளடக்கத்தைக் காண்க" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "கோப்பிற்கு காப்பு பிரதி எடு" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO வின் சொந்த வடிகட்டி பட்டியல்கள் பின்வருவனவற்றில் இலவசமாக வழங்கப்படுகின்றன \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "வடிகட்டி பட்டியலைப் புதுப்பிக்க வேண்டியிருக்கும் போது சீரற்ற முறையில் தேர்ந்தெடுக்கப்பட்ட CDN பயன்படுத்தப்படுகிறது" - }, - "aboutChangelog": { - "description": "", - "message": "மாற்றப்பதிவு" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "மூல நிரல் (பொது மக்கள் உரிமம் பதிப்பு 3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "பங்களிப்பாளர்கள்" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "வெளிப்புற சார்புகள் (GPLv3- இணக்கமானது):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "பட்டியல்களை வடிகட்டவும்" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "எம்மைப் பற்றி" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "தனியுரிமை கொள்கை" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "இயல்புநிலை அமைப்புகளுக்கு அகரமாக்கு..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "உங்கள் எல்லா அமைப்புகளும் அகற்றப்படும், பிறகு uBlock மீண்டும் தொடங்கும்.\n\nuBlockகை தொழிற்சாலை அமைப்புகளை மீட்டமைக்கவ?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "கோப்பிலிருந்து மீட்டெடு..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "உங்கள் எல்லா அமைப்புகளும் காப்புப் பதிவைப் {{time}} பயன்படுத்தி மேலெழுதப்படும், பிறகு uBlock மறுதொடக்கம்.\n\nகாப்புப்பட்ட தரவைப் பயன்படுத்தி உள்ள எல்லா அமைப்புகளையும் மேலெழுதவா?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "தரவை வாசிக்க முடியவில்லை அ செல்லாதது" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "மூல குறியீடு" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "மொழிபெயர்ப்புகள்" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "மேம்பட்ட அமைப்புகள்" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "எச்சரிக்கை! இந்த மேம்பட்ட அமைப்புகளை உங்கள் சொந்த ஆபத்தில் மாற்றவும்." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock -- உடைமை பார்வையாளர்" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "ஏற்ற கிளிக் செய்க" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "இந்தச் சாதனத்தின் பெயர்:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "மேகக்கணினி சேமிப்பகத்திலிருந்து இறக்கு" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "மேகக்கணினி சேமிப்பகத்திலிருந்து இறக்கியபின் நடப்பு அமைப்புகளுடன் இணை" - }, - "cloudPush": { - "description": "tooltip", - "message": "மேகக்கணினி சேமிப்பகத்திற்கு ஏற்று" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "சட்டத்தில் தொகுதி உறுப்பு ..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "வடிகட்டி பட்டியலுக்கு குழுசேர்..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "தற்காலிகமாகப் பெரிய ஒலி‍-ஒளி-படத்தொகுப்புகளின் கூறுகளை அனுமதி" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "View source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ - நிர்வாக மையம்" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "எச்சரிக்கை! உங்களிடம் சேமிக்கப்படாத மாற்றங்கள் உள்ளன" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "பொருட்படுத்தாதே" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "இருங்கள்" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "பின் செல்" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "இச்சாளரத்தை மூடு" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Proceed" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "நிரந்தரமாக" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "தற்காலிகமாக" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "இதனுள் கண்டறியப்பட்டது:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "உரலியில் அளவுருக்கள் இல்லாமல்" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "{{hostname}}-இல் கண்டிப்பான தடையைச்‌ செயலிழக்கச் செய்" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin பின்வரும் பக்கத்தை ஏற்றுவதில் இருந்து தடுத்தது:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "பின்வரும் வடிகட்டியினால்:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Page blocked" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} நாள் முன்பு" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} மணிநேரம் முன்பு" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} நிமிடங்கள் முன்பு" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "ஒரு நாள் முன்பு" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "ஒரு மணி நேரம் முன்பு" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "ஒரு நிமிடம் முன்பு" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "பிணையத்தில் பிழை: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "இறுதியாக, ஒரு திறமையான விளம்பரத் தடுப்பான். கணினியின் மையச் செயற்பகுதியின் மேலும் நினைவகத்தின் மேலும் இலகுவானது." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "முடக்கத்தில்" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "மாற்றங்களைச் செயல்படுத்து" - }, - "genericBytes": { - "description": "", - "message": "பைட்டுகள்" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "நினைவிக்கு நகலெடு" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "ஸ்க்ரோலிங் பூட்டு மாற்று" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "முன்நிலையாக்கு" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "எல்லாம் தேர்ந்தெடு" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "சமர்ப்பி" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "அனைத்தும்" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "இ.தளங்களின் பின்னால் நடப்பவை" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "பதிகை உருப்படிகளை வடிகட்டு" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "ஆள்களம்" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "வடிகட்டு" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "வகை" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "உரலி" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "லாகரை அழி" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "தற்போதைய தாவல்" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "DOM இன்ஸ்பெக்டரை நிலைமாற்று" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "சூழல்" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "வடிகட்டி" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "வடிகட்டி பட்டியல்" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "விவரங்கள்" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "கட்சித்தன்மை" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "வேர் சூழல்" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "விதி" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "வகை" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "இணைய முகவரி" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "மார்க் டவுன்" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "வெற்று" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "பட்டியல்" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "பொருளடக்கம்" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock தோற்றம் விக்கி: லாகர்" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "லாகரை இடைநிறுத்து (உள்வரும் எல்லா தரவையும் நிராகரி)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "பாப்அப் பலகையை நிலைமாற்று" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "தாவல் உள்ளடக்கத்தை மீண்டும் ஏற்றவும்" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "முதல் கட்சி" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "மூன்றாம் தரப்பு" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "அனுமதிக்கப்படுகிறது" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "தடுக்கப்பட்டது" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "மாற்றப்பட்டது" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "இல்லை" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "லாகர் வடிகட்டுதல் விருப்பங்கள்" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "லாகர் வடிகட்டலை நிலைமாற்று" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "கீழே உள்ள மூன்று நிபந்தனைகளையும் பூர்த்தி செய்யாத லாகர் உள்ளீடுகள் தானாக நிராகரிக்கப்படும்:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} சூழல்" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} வடிகட்டி/சட்டம்" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} கட்சித்தன்மை" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} நேரம்" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "நெடுவரிசைகளை மறை:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "செங்குத்தாக விரிவாக்கப்பட்ட பயன்முறையில் ஒரு நுழைவுக்கு {{input}} கோடுகளைப் பயன்படுத்தவும்" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "கடைசி {{உள்ளீடு} from நிமிடங்களிலிருந்து உள்ளீடுகளைப் பாதுகாக்கவும்" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "ஒரு தாவலுக்கு அதிகபட்சம் {{உள்ளீடு}} உள்ளீடுகளை பாதுகாக்கவும்" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "ஒரு தாவலுக்கு அதிகபட்சம் {{உள்ளீடு}} பக்க சுமைகளைப் பாதுகாக்கவும்" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "நிலையான வடிப்பான் \u003Ccode> {{வடிகட்டி}} \u003C/ குறியீடு> இதில் காணப்படுகிறது:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "தற்போது இயக்கப்பட்ட வடிகட்டி பட்டியல்களில் நிலையான வடிப்பானைக் கண்டுபிடிக்க முடியவில்லை" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "நிலையான வடிகட்டுதல்" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{origin}} தொடங்கும், {{br}}{{url}}-குப் பொருந்தும் முகவரி கொண்ட{{br}}{{type}} பிணையக் கோரிக்கைகளை {{action}},{{br}}பொருந்தும் விதிவிலக்கு வடிகட்டி {{importance}}." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "அனுமதி" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "எங்கிருந்தும்" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "எந்த வகையும்" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "முடக்கு" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "இருந்தாலும் கூட‌" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "இல்லாவிட்டால் மட்டும்" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "“{{origin}}”-இல் இருந்து" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "\"{{type}}\" வகை" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "சூழல்:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "உரலி விதி" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "வகை:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "லாகர் இடைநிறுத்தம் தவிர்" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "உறுப்பைத் தடு..." - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "ஒப்பனை வடிகட்டி" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "சொடுக்கு, Ctrl-சொடுக்கு" - }, - "pickerCreate": { - "description": "English: Create", - "message": "உருவாக்கு" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "இணைய வடிகட்டிகள்" - }, - "pickerPick": { - "description": "English: Pick", - "message": "எடு" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "முன்னோட்டம்" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "வெளியேறு" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1‍-ஆம் தரப்பு உரைகள்" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "மூன்றாம் தரப்பு" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "மூன்றாம் தரப்பு சட்டங்கள்" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "மூன்றாம் தரப்பு CSS/படங்கள்" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "மூன்றாம் தரப்பு உரைகள்" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "அனைத்தும்" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "இந்த இணையப் பக்கத்தில்" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "இப்பக்கத்தில் தடுக்கப்பட்டது" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "தடுக்கப்பட்ட கோரிக்கைகள்" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "நிறுவியது முதல்" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "நிறுவியதிலிருந்து தடுக்கப்பட்டது" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} அல்லது {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "களங்கள் இணைக்கப்பட்டுள்ளன" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "மொத்தம் {{total}} இல் {{count}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "ஆள்களங்கள் இணைக்கப்பட்டுள்ளது" - }, - "popupImageRulePrompt": { - "description": "", - "message": "படங்கள்" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "உள்வரி உரைகள்" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "குறைந்து" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "மேலும்" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "ஒப்பனை வடிகட்டுதல்" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "பெரிய ஊடக கூறுகள்" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "பாப்-அப் சாளரங்கள்" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "தொலை எழுத்துருக்கள்" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "ஜாவாஸ்கிரிப்ட்" - }, - "popupOr": { - "description": "English: or", - "message": "அல்லது" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "இந்த தளத்தில் ‍‍‍uBlock₀ ஐ முடக்கவோ/இயக்கவோ: இங்கே சுட்டு.\nCtrl+click: என்ற குறுக்குவிசையின் மூலம் uBlock₀ ஐ இந்தப் பக்கத்தில் மட்டும் முடக்கு." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "இந்த வலைத்தளத்திற்கு uBlock முடக்க, கிளிக் செய்யவும்.\n\nuBlockகை இந்த வலைத்தளத்திற்கு முடக்க Ctrl+click செய்யவும்." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "இந்த வலைத்தளத்திற்கு uBlockகை செயல்படுத்த கிளிக் செய்க." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "நிர்வாக மையத்தை திறக்க இங்கே சொடுக்கவும்" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "உலகளாவிய விதிகள்: இந்நெடுவரிசை அனைத்து தளங்களுக்கும் பொருந்தும் விதிகளுக்கானது." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "அக விதிகள்: இந்நெடுவரிசை தற்போதைய தளத்திற்கு மட்டுமே பொருந்தும் விதிகளுக்கானது.அக விதிகள் உலகளாவிய விதிகளை மீறுகின்றன." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "பிணையக் கோரிக்கைப் பதிவிற்கு செல்" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "இத்தளத்திற்கான ஒப்பனை வடிகட்டியை மாற்றவும்" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "இத்தளத்தில் ஒப்பனை வடிகட்டலை முடக்க சொடுக்குக" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "இத்தளத்தில் ஒப்பனை வடிகட்டலை இயக்க சொடுக்குக" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "இத்தளத்திற்கான பெரிய ஊடக கூறுகளைத் தடுப்பதை நிலைமாற்று" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "இத்தளத்தில் பெரிய ஊடக கூறுகளைத் தடுக்க சொடுக்குக" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "இத்தளத்தில் பெரிய ஊடக கூறுகளை இனி தடுக்காமலிருக்க சொடுக்குக" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "இத்தளத்தில் அனைத்து மேல்விரிகளையும் தடுப்பதை மாற்றவும்" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "இந்த தளத்தில் உள்ள அனைத்து பாப்அப்களையும் தடுக்க கிளிக் செய்க" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "இத்தளத்தில் உள்ள எல்லா பாப்அப்களையும் இனி தடுக்காமலிருக்க சொடுக்குக" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "இத்தளத்திற்கான தொலைநிலை எழுத்துருக்கள் தடையை மாற்றவும்" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "இத்தளத்தில் தொலை எழுத்துருக்களைத் தடுக்க சொடுக்குக" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "இத்தளத்தில் தொலை எழுத்துருக்களை இனி தடுக்காமலிருக்க சொடுக்குக" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "இத்தளத்தில் ஜாவாஸ்கிரிப்டை முடக்க சொடுக்குக" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "இத்தளத்தில் ஜாவாஸ்கிரிப்டை இனி முடக்காமலிருக்க சொடுக்குக" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "உறுப்புத் தெரிவு முறைமைக்குச் செல்லவும்" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "இத்தளத்திலொரு சிக்கலைப் புகாரளி" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "இங்கே சுட்டி உங்கள் மாற்றங்களைப் பழைய நிலைக்குத் திருப்பவும்." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "இங்கே சுட்டி உங்கள் மாற்றங்களை நிரந்தரமாக்கவும்." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "பகுதி தெரிவு முறைமைக்கு நுழை" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "பதிப்பு" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "தடுப்பு பயன்முறையை தளர்த்தவும்" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "உறுதியளி" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "தொகு" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "நிராகரி" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "சேமி" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "கோப்பினுள் ஏற்று" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "விதி தொடரியல்: \u003Ccode> மூல இலக்கு வகை செயல் \u003C/ குறியீடு> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'> முழு ஆவணங்கள் \u003C/a> )." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "உங்களுடைய மாறுநிலை வடிகட்டி விதிப் பட்டியல்கள்." - }, - "rulesImport": { - "description": "", - "message": "கோப்பிலிருந்து இறக்குமதி செய் ..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "என் விதிமுறைகள்" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "நிரந்தரமான விதிகள்" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "முன்நிலையாக்கு" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "வகைபடுத்து:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "இலக்கு" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "மூல" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "விதி வகை" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "தற்காலிக விதிகள்" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "இயல்பான நடத்தை" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "இந்த இயல்புநிலை நடத்தைகள் ஒரு தள அடிப்படையில் மீறப்படலாம்" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "உயரமைவு" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "நுட்பமான பயனர்களுக்கு மட்டுமே ஏற்ற அம்சங்கள்." - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "நான் ஒரு மேம்பட்ட பயனர் (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>வாசித்தல் தேவை\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "மேம்பட்ட அமைப்புகள்" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "தோற்றம்" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "மேகக்கணி சேமிப்பக ஆதரவு இயக்கு" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "தடுக்கப்பட்ட உறுப்புகளின் பெட்டிகளை மறை" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "நிறம்-அறியாதோருக்கு ஏதுவாக" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "தக்க இடங்களில் சூழல் பட்டியலைக் காட்டு" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "உரலியிணைப்புத் தணிக்கையை முடக்கவும்" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "தடுக்கப்பட்ட கோரிக்கைகளின் எண்ணிக்கையைப் பாவையில் காட்டவும்" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "கடைசி மறுபிரதி:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "இறுதியாக மீட்பதற்கு:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "CSP அறிக்கைகளைத் தடு" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "ஒப்பனை வடிகட்டியை தடை செய்" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Elements {உள்ளீடு}} KB ஐ விட பெரிய ஊடக உறுப்புகளைத் தடு" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "தொலை எழுத்துருக்களை தடு" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "ஜாவாஸ்கிரிப்டை முடக்கு" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "அமைப்புகள்" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "முன்கூட்டியே பெறுவதை முடக்கு (தடுக்கப்பட்ட பிணைய கோரிக்கைகளுக்கான எந்தவொரு தொடர்பையும் தடுக்க)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "தனிப்பயன் உரப்பு நிறம்" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "நிறவமைவு" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "உதவிக்குறிப்புக்களை முடக்கு" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "நியமன பெயர்களை அவிழ்த்து விடுங்கள்" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "உங்கள் தனிப்பட்ட IP முகவரியை WebRTC வெளிக்காட்டாதபடி தடுக்க" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "குறுக்குவழியைத் தட்டச்சு செய்க" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "குறுக்குவழிகள்" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "நிர்வாக மையத்தைக் காட்டுக" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "பதிவேட்டைக் காண்பி" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — பிணையக் கோரிக்கைப் பதிகை" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "பயன்படுத்தப்பட்ட சேமிப்பகத்தின் அளவு: {{value}} பைட்டுகள்" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "சந்தாதராகு" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: பின்வரும் உரலியை உங்களுடைய தனிபயன் வடிகட்டியில் சேர்க்கலாமா?\n\nதலைப்பு: \"{{title}}\"\nஉரலி: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "ஒரேமாதிரியான புகார்களைக் கண்டறி" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "திற" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "ஆதரவு" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "புதிய புகாரை உருவாக்கு" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "ஆவணமாக்கல்" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Read the documentation at \u003Ccode>uBlock/wiki\u003C/code> to learn about all of uBlock Origin's features." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "கேள்விகள் மற்றும் ஆதரவு" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter issues/website is broken" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "பிழை அறிக்கை" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Troubleshooting Information" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "வடிகட்டி சிக்கலைப் புகாரளி" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "வலைப்பக்கம்..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pick an entry --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shows ads or ad leftovers" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "தனியுரிமைசார் சிக்கல்களுள்ளன" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "uBlock Origin இயக்கப்பட்டிருந்தால் உடையும்" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "தேவையற்ற தாவல்கள் அ சாளரங்களைத் திறக்கிறது" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "வலைப்பக்கத்தின் முகவரி:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "ஒப்பனை வடிகட்டுதலை மறுநிலைமாற்று" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "மாற்றங்களைச் செயல்படுத்து" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "ஏற்று" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "இறக்குமதி செய்து சேர்" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "அனுமதிப்பட்டியல்" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "எந்தெந்தப் பக்கங்களில் uBlock₀ முடக்கப்பட வேண்டுமென்பதை அனுமதிப்பட்ட கட்டளைகள் ஆணையிடுகின்றன. வரிக்கு ஒரு இடுகை மட்டுமே. தவறான கட்டளைகள் அமைதியாகப் புறக்கணிக்கப்படும்." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/te/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/te/messages.json deleted file mode 100644 index 096a61d..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/te/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "మార్పులను భద్రపరచు" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "ఎగుమతి చేయు" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "దిగుమతిచేసి పోడిగించుము" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "నా వడపోతలు" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "అవిశ్వసనీయ మూలాల నుండి ఫిల్టర్‌లను జోడించవద్దు." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "మార్పులను అమలుపరచు" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "వడపోత జాబితాలను స్వయంచాలకంగా నవీకరించుము." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "పాతబడింది" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "ఒక్కో పంక్తిలో ఒక URL. పంక్తిలో మొదట ‘!’ ఉన్నచో ఆ పంక్తి పరిగనించబడదు. చెల్లని URLలు మౌనంగా విస్మరించబడుతాయి." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "ప్రకటనలు" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "అసౌకర్యాల పట్టిక" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "సొంత నిర్దేషణ" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "అంతర్నిర్మితం" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "మాల్వేర్ డొమైన్లు" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "బహూలార్ధక" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "గోప్యత" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "ప్రాంతాలు, భాషలు" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "కాస్మెటిక్ వడపోతలను విస్మరించు" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "\u003Cp>సాధారణ కాస్మెటిక్ ఫిల్టర్లు అన్ని సైట్లపై ఉపయోగించబడుతాయి.\u003Cp>వీటిని uBlock₀ సమర్థవంతంగా ఉపయోగించగలిగినా, కొన్ని భారీ లేదా దీర్ఘకాలికంగా వీక్షిస్తున్న పేజీలలో CPU ఇంకా RAM వాడుకను ఇవి పెంచగలవు.\u003Cp>ఈ ఎంపికను ఎంచుకోవడంవలన, సాధారణ కాస్మెటిక్ ఫిల్టర్లు కొరకు అదనపు CPU ఉపయోగాన్ని నివారిస్తుంది, పైగా uBlock₀ యొక్క RAM వాడుక తగ్గడానికి తోడ్పడుతుంది.\u003Cp>అల్పసామర్ధ్య పరికరాలలో దీన్ని ఎంచుకోవడం శ్రేయస్కరం." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "దిగుమతిచేయు..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "గత నవీకరణ: {{ago}}.\nనవీకరించుటకు క్లిక్ చెయ్యండి." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "నిరోధించబడిన చిరునామాల జాబితా" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{total}} లో వాడుతున్నది {{used}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "ఈ క్రింది మూలాల నుండి వచ్చిన {{netFilterCount}} నెట్వర్క్ వడపోతలు + {{cosmeticFilterCount}} కాస్మెటిక్ వడపోతలు:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "ఈ చిట్టా అనుసంధాన వైఫల్యం వలన నవికరించబడలేదు." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "3వ-పక్ష వడపోతలు" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "\u003Cp>ఈ ఎంపిక \u003Ca href=\"https://adblockplus.org/en/faq_internal#elemhide\">Adblock Plus-అనుకూల “అంశాల దాచిపెట్టే” ఫిల్టర్లు ని\u003C/a> పదనిరుపనచేసి అమలుపరుస్తుంది. ఈ వఫిల్టర్లు చాలావరకు కాస్మెటిక్ అయివుంటాయి, అవి నెట్వర్క్ అభ్యర్ధన నిరోదన ద్వారా నిరోధించాబడలేని అవాంఛిథ అంశాలను దాచుటకు ఉపకరిస్తాయి.\u003C/p>\u003Cp>ఈ ఎంపిక ను ఎంచుకున్నయేడల uBlock₀ యొక్క మెమరీ వాడుక పెరిగే ఆస్కారమున్నది\u003C/p>" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "పదనిరుపనచేసి కాస్మెటిక్ వడపోతలను ఉపయోగించు." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "తాత్కాలిక నిలువలను త్యజించు" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "అన్ని ఫిల్టర్ జాబితాలు లోడ్ అయ్యే వరకు నెట్‌వర్క్ కార్యాచరణను నిలిపివేయండి" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "జాబితా నవీకరించుము" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "నవీకరిస్తోంది..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "దీన్ని చూపించు" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "జీబీ" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "కేబీ" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "ఏంబీ" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "ఫైల్ లో భద్రపరచు" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO యొక్క సొంత ఫిల్టర్ జాబితాలు కింది వాటిలో ఉచితంగా హోస్ట్ చేయబడతాయి \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "ఫిల్టర్ జాబితాను అప్‌డేట్ చేయాల్సిన అవసరం వచ్చినప్పుడు యాదృచ్ఛికంగా ఎంచుకున్న CDN ఉపయోగించబడుతుంది" - }, - "aboutChangelog": { - "description": "", - "message": "మార్పుల సంచిక" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "మూలం (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "ప్రాజెక్ట్కు సహాయ పడిన వారు" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "బాహ్య ఆధారపడటం (GPLv3- అనుకూలమైనది):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "జాబితాలను ఫిల్టర్ చేయండి" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "మా గురించి" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "గోప్యతా విధానం" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "సంస్థాపన అమరికలను పునరుద్దరించు..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "ఐచ్చికాలలో మీరు చేసిన మార్పులన్నీ తొలగించనా పిమ్మట uBlock₀ పునఃప్రారంభిన్చాబాడును.\n\nమరి సంస్థాపన ఐచ్చికాలను పునరుద్ధరించాలా?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "ఫైల్ నుండి పునరుద్దరించు..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "మీరు పేర్కొన్న ఐచ్చిక్కాలన్ని {{time}}నకు తీసుకున్న నకలు డేటాతో తిరగారాయబడుతాయి, ఆ పిమ్మట uBlock₀ పునఃప్రారంభమవుతుంది.\n\nమీ ఐచ్చికాలను తిరగరాయుట మీకు సమ్మతమేనా?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "డేటాను చదవడంలో లోపం సంభవించినది(డేటా పాడైవుంది లేదా అందుబాటులో లేదు)" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "మూల కోడ్" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "అనువాదాలు" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "అధునాతన అమరికలు" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "హెచ్చరిక! ఈ అధునాతన అమరికలను జాగ్రత్తతో మార్చండి." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — వనరుల పట్టిక" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "లోడ్ చేయడానికి క్లిక్ చేయండి" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "ఈ పరికరం పేరు:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "క్లౌడ్ నుండి దిగుమతిపరచు" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "అంతర్జాలంలో భద్రపరచిన ఎంపికలను దిగుమతి చేసి ప్రస్తుత ఎంపికలకు జోడించు" - }, - "cloudPush": { - "description": "tooltip", - "message": "క్లౌడ్ లో పొందుపరచు" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "ఫ్రేమ్‌లో మూలకాన్ని బ్లాక్ చేయండి ..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "ఫిల్టర్ జాబితాకు సభ్యత్వం పొందండి ..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "భారి దృశ్య/శ్రవణ అంశాలను తాత్కాలికంగా అనుమతించు" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "View source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — నియంత్రణా వేదిక" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "హెచ్చరిక! మీరు భద్రపరచని మార్పులు ఉన్నాయి" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "వదిలేయి" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "ఉండు" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "వెనక్కి వెళ్ళు" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "విండో మూయుము" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Proceed" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "శాశ్వతంగా" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "తాత్కాలికంగా" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "ఈ వడపోత వున్న జాబితా పేరు:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "పారామితులు లేని" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "{{hostname}} తో అనుసంధానాన్ని అనుమతించాలా?" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "ఈ తరువాయి పేజిని uBlock Origin బ్రౌజరులోకి ఎక్కిన్చనివ్వలేదు:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "ఇది ఈ క్రింది వడపోతననుసారించి తీసుకోబడిన చర్య" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "పేజీ బ్లాక్ చేయబడింది" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "ఇది అంతిమంగా వుండాల్సిన నమోదు" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} రోజుల క్రితం" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} గంటల క్రితం" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} నిమిషాల క్రితం" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "ఒక రోజు క్రితం" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "ఒక గంట క్రితం" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "ఒక నిమిషం క్రితం" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "అనుసంధాన వైఫల్యం: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "మొత్తానికి RAM ఇంకా CPU పై తేలికయిన, ఒక సమర్థవంతమైన నిరోధిని." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "అచేతనం" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "మార్పులను అమలుపరచు" - }, - "genericBytes": { - "description": "", - "message": "బైట్లు" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "క్లిప్‌బోర్డ్‌కు కాపీ చేయండి" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "లాక్ చేసిన స్క్రోలింగ్‌ను టోగుల్ చేయండి" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "మార్పులను తిరస్కరించు" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Select all" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "పంపించు" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "అన్ని" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "తెర వెనుక" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "చిట్టాలోని నమోదులను జల్లెడపరచు" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "డొమైన్" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "జల్లెడ" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "రకం" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "లాగర్ క్లియర్" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "ప్రస్తుత ట్యాబ్" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "DOM ఇన్స్పెక్టర్ను టోగుల్ చేయండి" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "సందర్భం" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "ఫిల్టర్" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "ఫిల్టర్ జాబితా" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "వివరాలు" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "పార్టీనెస్" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "రూట్ సందర్భం" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "నియమం" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "రకం" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "మార్క్డౌన్" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "సాదా" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "జాబితా" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "పట్టిక" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock మూలం వికీ: లాగర్" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "లాగర్ను పాజ్ చేయండి (అన్ని ఇన్కమింగ్ డేటాను విస్మరించండి)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "పాపప్ ప్యానెల్‌ను టోగుల్ చేయండి" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "టాబ్ కంటెంట్‌ను మళ్లీ లోడ్ చేయండి" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "మొదటి పార్టీ" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "మూడవ పార్టీ" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "అనుమతించబడింది" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "నిరోధించబడినవి" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "సవరించబడింది" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "కాదు" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "లాగర్ ఫిల్టరింగ్ ఎంపికలు" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "లాగర్ ఫిల్టరింగ్‌ను టోగుల్ చేయండి" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "దిగువ మూడు షరతులను నెరవేర్చని లాగర్ ఎంట్రీలు స్వయంచాలకంగా విస్మరించబడతాయి:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} e సందర్భం" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} ఫిల్టర్ / నియమం" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}}పార్టీనెస్" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} సమయం" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "నిలువు వరుసలను దాచు:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "నిలువుగా విస్తరించిన మోడ్‌లో ప్రతి ఎంట్రీకి {{input}} పంక్తులను ఉపయోగించండి" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "చివరి {{input}} నిమిషాల నుండి ఎంట్రీలను భద్రపరచండి" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "ప్రతి ట్యాబ్‌కు గరిష్టంగా {{input}} ఎంట్రీలను భద్రపరచండి" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "ప్రతి ట్యాబ్‌కు గరిష్టంగా {{input}} పేజీ లోడ్లను భద్రపరచండి" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "నిశ్చలాత్మక ఫిల్టర్ అయిన \u003Ccode>{{filter}}\u003C/code> క్రింది వాటిలో కలదు:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "నిశ్చలాత్మక ఫిల్టర్ అయిన \u003Ccode>{{filter}}\u003C/code> ప్రస్తుతం ఉత్తేజపరిచిన ఫిల్టర్ జాబితాలలో కనుగొనబడలేదు" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "నిశ్చలాత్మక ఫిల్టరింగ్" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{origin}} నుండి మొదలయ్యి, {{br}}{{url}} తో సరిపోలిన url గల {{br}}{{type}} నెట్వర్క్ అభ్యర్ధనలను {{action}}, {{br}}అదీ వడపోతల జాబితాలో {{importance}}." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "అనుమతించు" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "ఎక్కడినుండైనా" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "ఏటువంటిదైనా" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "తిరస్కరించు" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "మినహాయింపు వున్నా" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "మినహాయింపు వుంటే" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "“{{origin}}” నుండి" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "“{{type}}” రకమైన" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "సందర్భం:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "క్రియాశీలక URL ఫిల్టరింగ్" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "రకం:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "లాగర్ను పాజ్ చేయండి" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "దీన్ని నిరోధించు" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "కాస్మెటిక్ వడపోతలు" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "క్లిక్, Ctrl+క్లిక్" - }, - "pickerCreate": { - "description": "English: Create", - "message": "సృష్టించు" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "నెట్వర్క్ అభ్యర్దన వడపోతలు" - }, - "pickerPick": { - "description": "English: Pick", - "message": "ఎంచుకోనుము" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "పరిశీలించు" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "నిశ్క్రమించు" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "సైట్ యొక్క స్క్రిప్ట్స్" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "సైట్-ఏతరుల అంశాలు" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "ఫ్రేమ్" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "సైట్-ఏతరుల ఫ్రేమ్స్" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "సైట్-ఏతరుల సిఎస్ఎస్/చిత్రాలు" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "స్క్రిప్ట్" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "సైట్-ఏతరుల స్క్రిప్ట్లు" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "అన్ని" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "ఈ వెబ్ పేజిలో" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "ఈ పేజిలో నిరోధించినవి" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "నిలువరించబడిన అభ్యర్ధనలు" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "సంస్థాపన నుండి" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "స్థాపించినప్పటి నుండి నిరోధించినవి" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} లేదా {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "అనుసందానమైన డొమైన్లు" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{total}} లో {{count}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "అనుసంధానించబడిన డొమైన్లు" - }, - "popupImageRulePrompt": { - "description": "", - "message": "చిత్రాలు" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "లోబడిన స్క్రిప్ట్లు" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "తక్కువ" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "మరిన్ని" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "నిశ్చలాత్మక వడపోత" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "పెద్ద మీడియా అంశాలు" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "పాప్-అప్ విండోలు" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "రిమోట్ ఫాంట్‌లు" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "జావాస్క్రిప్ట్" - }, - "popupOr": { - "description": "English: or", - "message": "లేదా" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "ఈ సైట్లో uBlock₀ను చేతనపరచడానికి లేదా అచేతనపరచడానికి క్లిక్ చేయండి.\n\nకేవలం ఈ పేజిలో uBlock₀ను అచేతనపరచడానికి Ctrl కీ వొత్తి పట్టుకొని క్లిక్ చేయండి." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "ఈ సైట్లో uBlock₀ను అచేతనపరచడానికి క్లిక్ చేయండి.\n\nకేవలం ఈ పేజిలో uBlock₀ను అచేతనపరచడానికి Ctrl కీ వొత్తి పట్టుకొని క్లిక్ చేయండి." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "ఈ సైట్లో uBlock₀ను చేతనపరచడానికి క్లిక్ చేయండి." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "నియంత్రణా పట్టికను తెరచుటకు క్లిక్ చేయండి" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "సామాన్య నియమాలు: ఈ నిలువరుసలో వున్న నియమాలు అన్ని సైట్లకు వర్తిస్తాయి." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "స్థానిక నియమాలు: ఈ నిలువరుసలో వున్న నియమాలు కేవలం ప్రస్తుత సైట్ కే వర్తిస్తాయి.\nసామాన్య నియమాలపై స్థానిక నియమాలు అతిక్రమిస్తాయి." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "అభ్యర్ధనల చిట్టా తెరువుము" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "ఈ వెబ్ సైట్ లో కాస్మెటిక్ వడపోతల వాడుక స్థితిని మార్చు" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "ఈ వెబ్ సైట్ లో కాస్మెటిక్ ఫిల్టరింగ్ ని అచేతనపరచుటకు క్లిక్ చేయండి" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "ఈ వెబ్ సైట్ లో కాస్మెటిక్ ఫిల్టరింగ్ ని చేతపరచుటకు క్లిక్ చేయండి" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "ఈ సైట్లో వున్న భారి దృశ్య/శ్రవణ అంశాల నిరోధనా స్థితిని మార్చు" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "ఈ సైట్లో పెద్ద పరిమాణం మీడియా అంశాలను నిరోధించుటకు క్లిక్ చేయండి" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "ఇకపై ఈ సైట్లో పెద్ద పరిమాణం మీడియా అంశాలను అనుమతించుటకు క్లిక్ చేయండి" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "ఈ వెబ్సైట్ లో అన్ని పాప్అప్స్ ని నిషేధించు/అనుమతించు" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "ఇకపై ఈ సైట్లో అన్ని పపప్లను నిరోధించుటకు క్లిక్ చేయండి" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "ఇకపై ఈ సైట్లో అన్ని పపప్లను అనుమతించుటకు క్లిక్ చేయండి" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "ఈ సైట్ లో ఖతుల వాడుకని సక్రియ లేదా నిర్వీర్యపరచు" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "ఈ సైట్లోని రిమోట్ ఫాంట్లను నిరోధించుటకు క్లిక్ చేయండి" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "ఇకపై ఈ సైట్లో రిమోట్ ఫాంట్లను అనుమతించుటకు క్లిక్ చేయండి" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "ఈ సైటులో జావాస్క్రిప్టును అచేతనం చేయయానికి నొక్కండి" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "ఈ సైట్‌లో జావాస్క్రిప్ట్‌ను ఇకపై నిలిపివేయడానికి క్లిక్ చేయండి" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "భాగాలను ఎంచుకొని తొలగించు ప్రక్ర్యియనారంభించు" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "ఈ వెబ్‌సైట్‌లో సమస్యను నివేదించండి" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "మీ మార్పులను తిరిగి పూర్వావస్థకు చేర్చుటకు క్లిక్ చేయండి." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "మీ మార్పులను శాశ్వతపరచడానికి క్లిక్ చేయండి." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "భాగాలను ఎంచుకొని తొలగించు ప్రక్ర్యియనారంభించు" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "సంస్కరణ" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "నిరోధించే మోడ్‌ను రిలాక్స్ చేయండి" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "మార్పులను భద్రపరచు" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "చక్కదిడ్డుము" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "పారవేయు" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "భద్రపరచు" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "ఫైల్కు ఎగుమతి చేయుము" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "నియమనిర్మాన పద్ధతి: \u003Ccode>మూలం గమ్యం రకం చర్య\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>పూర్తి వివరాలు\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "మీ క్రియాశీలక జల్లెడ నియమాల జాబితా." - }, - "rulesImport": { - "description": "", - "message": "ఫైల్ నుండి దిగుమతి చేయుము..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "నా నియమాలు" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "శాశ్వత నియమాలు" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "మార్పులను తిరస్కరించు" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "క్రమబద్ధీకరించు" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "గమ్యం" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "మూలం" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "రూల్ రకం" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "తాత్కాలిక నియమాలు" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "సామాన్య ప్రవర్తన" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "ఈ సామాన్య ప్రవర్తనను ఒక్కో సైట్లో ప్రత్యేకంగా మార్చుకోవోచ్చు" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "ఆధునిక" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "సాంకేతిక వినియోగదారులకు మాత్రమే సరిపోయే ఫీచర్లు" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "మీరు నిపుణత కలిగిన వినియోగాదారులైతే (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>అవసరమైన సమాచారం\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "అధునాతన అమరికలు" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "స్వరూపం" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "క్లౌడ్ లో పొందుపర్చడాన్న్ది అనుమతించు" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "నిరోధించబడిన అంశాలయోక్క స్థానసంగ్రాహకాలను దాచుము" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "వర్ణ అంధులకనుకూలమైన" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "అనువైనచోట్లలో కుడి-క్లిక్ మెనూని ఉపయోగించుము" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "చిరునామాల తానిఖిని దాటవేయు" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "చిహ్నంపై నిరొధించబడిన అభ్యర్దనల సంఖ్య చూపుము" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "గత నకలు:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "గత పునరుద్ధారణ:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "CSP నివేదికలను నిరోధించు" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "కాస్మెటిక్ వడపోతను నిర్వీర్యపరచు" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "పరిమాణంలో {{input:number}} కేబీల కన్నా పెద్దవైన అంశాలను నిరోధించు" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "బయటి ఖతులను నిరోధించు" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "జావాస్క్రిప్ట్‌ను ఆపివేయి" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "ఐచ్చికాలు" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "అంశాలను ముందుగానే తీసుకురావడాన్ని నిషేధించు (ఎవైనా అవాంఛనీయ అనుసంధానాలను నివారించడానికి)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "అనుకూల యాస రంగు" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "థీమ్" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "టూల్టిప్స్ ను అచేతనపరచు" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "కానానికల్ పేర్లను తెరవండి" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "WebRTCని మీ స్థానిక IP చిరునామాలను బహిర్గతపరచనివ్వొద్దు" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "షార్ట్కట్ టైప్ చేయండి" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "షార్ట్కట్లు" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "నియంత్రణా పట్టికను చూపు" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "నెట్వర్క్ అభ్యర్ధనల చిట్టాను చూపు" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — నెట్వర్కు అభ్యర్ధనల చిట్టా" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "ఉపయోగించిన నిల్వ: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "సభ్యత్వాన్ని పొందండి" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: ఈ URLని మీ నిర్దేశిత ఫిల్టర్ పట్టికకు జతపరచాలా?\n\nశీర్షిక: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "సారూప్య నివేదికలను కనుగొనండి" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "తెరవండి" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "సహాయం" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "కొత్త నివేదికను సృష్టించండి" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "డాక్యుమెంటేషన్" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "uBlock ఆరిజిన్ యొక్క అన్ని లక్షణాల గురించి తెలుసుకోవడానికి \u003Ccode>uBlock/wiki\u003C/code> వద్ద డాక్యుమెంటేషన్ చదవండి." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "ప్రశ్నలు మరియు మద్దతు" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter issues/website is broken" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Bug report" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Troubleshooting Information" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "వెబ్ పేజీని “NSFW”గా లేబుల్ చేయండి (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“పని కోసం సురక్షితం కాదు”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Report a filter issue" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "The web page…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pick an entry --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shows ads or ad leftovers" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has privacy-related issues" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfunctions when uBlock Origin is enabled" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "అనవసరమైన ట్యాబ్‌లు లేదా విండోలను తెరుస్తుంది" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Address of the web page:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "మార్పులను భద్రపరచు" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "ఎగుమతి" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-whitelist_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "దిగుమతిచేసి పోడిగించుము" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "నమ్మే సైట్లు" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "uBlock Origin అచేతనబడించిన హోస్టూల జాబితా, ఇది మీరు కూర్చినది,. ఒక్కో పంక్తికి ఒక్కో నమోదు. చెల్లని నమోదులు మౌనంగా విస్మరించబడుతాయి." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/th/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/th/messages.json deleted file mode 100644 index b972bcc..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/th/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Apply changes" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Export…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Import and append…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "ตัวกรองของฉัน" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Apply changes" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "อัปเดตรายการตัวกรองอัตโนมัติ" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "ล้าสมัย" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "หนึ่ง URL ต่อบรรทัด URL ที่ไม่ถูกต้องจะถูกละเว้น" - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "โฆษณา" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Annoyances" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "กำหนดเอง" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Built-in" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Malware domains" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multipurpose" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "ความเป็นส่วนตัว" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "ภูมิภาค, ภาษา" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignore generic cosmetic filters" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "นำเข้า..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "อัพเดตล่าสุด: {{ago}}" - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} used out of {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "A network error prevented the resource from being updated." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "ตัวกรองจากที่อื่น" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "ฟิลเตอร์ตกแต่งทำหน้าที่ซ่อนองค์ประกอบในหน้าเว็บซึ่งถือว่าเป็นภาพที่รบกวนสายตา และไม่สามารถบล็อกได้โดยกลไกการกรองตามคำขอของเครือข่าย" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "แยกวิเคราะห์และบังคับใช้ฟิลเตอร์ตกแต่ง" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "ล้างแคชทั้งหมด" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "ระงับกิจกรรมเครือข่ายจนกว่าจะโหลดรายการตัวกรองทั้งหมด" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "อัปเดตเดี๋ยวนี้" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "กำลังอัปเดต..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "view content" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "กิโลไบต์" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "เมกะไบต์" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Back up to file…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO's own filter lists are freely hosted on the following \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "CDN ที่สุ่มเลือกจะถูกใช้เมื่อจำเป็นต้องอัปเดตรายการตัวกรอง" - }, - "aboutChangelog": { - "description": "", - "message": "Changelog" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Source code (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "ผู้ร่วมพัฒนา" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "External dependencies (GPLv3-compatible):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filter lists" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "เกี่ยวกับ" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "นโยบายความเป็นส่วนตัว" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Reset to default settings…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Restore from file…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "The data could not be read or is invalid" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Source code" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "การแปลภาษา" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "การตั้งค่าขั้นสูง" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "คำเตือน! ปรับเปลี่ยนการตั้งค่าขั้นสูงเหล่านี้ด้วยความระมัดระวัง" - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Asset viewer" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "คลิกเพื่อโหลด" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "ชื่ออุปกรณ์นี้:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "Import from cloud storage" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Import from cloud storage and merge with current settings" - }, - "cloudPush": { - "description": "tooltip", - "message": "Export to cloud storage" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Block element in frame…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "สมัครรับรายชื่อตัวกรอง..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "อนุญาตองค์ประกอบชนิด Media ขนาดใหญ่ชั่วคราว" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "ดูต้นฉบับ" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — หน้าหลัก" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "คำเตือน! คุณมีการเปลี่ยนแปลงที่ยังไม่ได้บันทึก" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "ไม่สนใจ" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "อยู่ต่อ" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "ย้อนกลับ" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "ปิดหน้าต่างนี้" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "ดำเนินการ" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "ถาวร" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "ชั่วคราว" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "พบใน:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "without parameters" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "ปิดใช้งานการปิดกั้นสำหรับ {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin ป้องกันไม่ให้โหลดหน้าต่อไปนี้:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "เนื่องจากตัวกรองดังต่อไปนี้" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "เพจถูกบล็อค" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} วันที่แล้ว" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} ชั่วโมงที่แล้ว" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} นาทีที่แล้ว" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "เมื่อวันก่อน" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "เมื่อชั่วโมงที่แล้ว" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "เมื่อนาทีที่แล้ว" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Network error: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "มาแล้ว! โปรแกรมบล็อกโฆษณาได้อย่างมีประสิทธิภาพ โดยที่ไม่กินซีพียูหรือแรม" - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "ปิด" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Apply changes" - }, - "genericBytes": { - "description": "", - "message": "ไบต์" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Copy to clipboard" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Toggle locked scrolling" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Revert" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "เลือกทั้งหมด" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Submit" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "ทั้งหมด" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Tabless" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filter logger content" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "โดเมน" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "ตัวกรอง" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "ประเภท" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Clear logger" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "แท็บปัจจุบัน" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Toggle the DOM inspector" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Context" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "ตัวกรอง" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "รายการตัวกรอง" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "รายละเอียด" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partyness" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Root context" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "กฎ" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Type" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Plain" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "รายการ" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "ตาราง" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: The logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "หยุดการบันทึก Log (ลบทิ้งทั้งหมด)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Toggle the popup panel" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "โหลดเนื้อหาแท็บปัจจุบันใหม่" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1st-party" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "บุคคลที่ 3" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "allowed" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "blocked" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modified" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Not" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Logger filtering options" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Toggle logger filtering" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Context" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} ตัวกรอง/กฏ" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partyness" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} เวลา" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "ซ่อนคอลัมน์" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Use {{input}} lines per entry in vertically expanded mode" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Preserve entries from the last {{input}} minutes" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Preserve at most {{input}} entries per tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preserve at most {{input}} page loads per tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Static filter \u003Ccode>{{filter}}\u003C/code> found in:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Static filter could not be found in any of the currently enabled filter lists" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Static filter" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "อนุญาต" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "from anywhere" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "any type" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "บล็อก" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "ถึงแม้ว่า" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "except when" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "from “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "type “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Context:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL rule" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "ประเภท" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Unpause logger" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "บล็อคองค์ประกอบ" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "ฟิลเตอร์" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "คลิก, Ctrl-คลิก" - }, - "pickerCreate": { - "description": "English: Create", - "message": "สร้าง" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "ฟิลเตอร์เครื่อข่าย" - }, - "pickerPick": { - "description": "English: Pick", - "message": "เลือก" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "ตัวอย่าง" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "ออก" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "สคริปภายใน" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "บุคคลที่ 3" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "กรอบ" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "กรอบบุคคลที่3" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/รูปภาพ บุคคลที่ 3" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "สคริปต์" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "สคริปท์บุคคลที่3" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "ทั้งหมด" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "ในหน้านี้" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "ถูกบล็อกบนหน้านี้" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "การร้องขอถูกปฏิเสธ" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "ตั้งแต่ติดตั้ง" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "ถูกบล็อกตั้งแต่ติดตั้ง" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} or {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domains connected" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} ใน {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "โดเมนที่เชื่อมต่อ" - }, - "popupImageRulePrompt": { - "description": "", - "message": "รูปภาพ" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "สคริปท์อินไลน์" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "แสดงน้อยลง" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "เพิ่มเติม" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "ฟิลเตอร์" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "องค์ประกอบ media ขนาดใหญ่" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "หน้าต่าง Pop-up" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "ฟอนต์ที่เว็บไชต์กำหนด" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "หรือ" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Click: เปิด/ปิดการทำงานของ uBlock₀ สำหรับเว็บไซต์นี้ \nCtrl+click: ปิดการทำงานของ uBlock₀ เฉพาะหน้าเว็บนี้" - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Click to disable uBlock₀ for this site.\n\nCtrl+click to disable uBlock₀ only on this page." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "กดเพื่อเปิดใช้่งาน uBlock₀ สำหรับเว็บนี้" - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "เปิด dashboard" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "กฏทั่วเว็บ: คอลัมน์นี้มีไว้สำหรับกฏที่ใช้กับทุกเว็บไซต์" - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "กฏเว็บเดียว: คอลัมน์นี้มีไว้สําหรับกฏบนเว็บไซต์นี้เท่านั้น\nกฏเว็บเดียวจะถูกใช้งานก่อนกฏครอบคลุม" - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "เปิดบันทึกการทำงาน" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Toggle cosmetic filtering for this site" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "คลิกเพื่อปิดการใช้ฟิลเตอร์บนเว็บไซต์นี้" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Click to enable cosmetic filtering on this site" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "เปลี่ยนสถานะการบล็อกองค์ประกอบ media ขนาดใหญ่บนเว็บไชต์นี้" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "คลิกเพื่อปิดกั้นองค์ประกอบชนิด Media ที่มีขนาดใหญ่ในเว็บไซต์นี้" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "คลิกเพื่อยกเลิกการปิดกั้นองค์ประกอบชนิด Media ที่มีขนาดใหญ่ในเว็บไซต์นี้" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "เปลี่ยนสถานะการบล็อกป็อบอัพบนเว็บไชต์นี้" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "คลิกเพื่อบล็อกป๊อปอัปทั้งหมดในเว็บไซต์นี้" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "คลิกเพื่อยกเลิกการบล็อกป๊อปอัปทั้งหมดในเว็บไซต์นี้" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Toggle the blocking of remote fonts for this site" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "คลิกเพื่อบล็อกฟอนต์จากเว็บไซต์นี้" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "คลิกเพื่อยกเลิกการบล็อกป๊อปอัปทั้งหมดในเว็บไซต์นี้" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "กดเพื่อปิดการใช้งาน JavaScript บนเว็บไซต์นี้" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "กดเพื่อยกเลิกการบล็อก JavaScript บนเว็บไซต์นี้" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "เข้าสู่โหมดเลือก element" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Report an issue on this website" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "ยกเลิกการเปลี่ยนแปลง" - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "คลิกเพื่อให้ทําให้การเปลี่ยนแปลงถาวร" - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "เข้าสู่โหมดโจมตีองค์ประกอบ" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "เวอร์ชัน" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relax blocking mode" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Commit" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "แก้ไข" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "ละทิ้ง" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "บันทึก" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "ส่งออกไปยังไฟล์" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Rule syntax: \u003Ccode>source destination type action\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>full documentation\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "List of your dynamic filtering rules." - }, - "rulesImport": { - "description": "", - "message": "นำเข้าจากไฟล์" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "กฎของฉัน" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "กฏถาวร" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "คืนกลับ" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "เรียง" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "ปลายทาง" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "แหล่งที่มา" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "ประเภทกฎ" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "กฏชั่วคราว" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Default behavior" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "These default behaviors can be overridden on a per-site basis" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "ขั้นสูง" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "เป็นฟีเจอร์ที่เหมาะสำหรับผู้ใช้ที่เชี่ยวชาญเท่านั้น" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "ฉันเป็นผู้ใช้ขั้นสูง (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>โปรดอ่านเอกสารสำคัญ\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "การตั้งค่าขั้นสูง" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "รูปแบบการแสดงผล" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "เปิดการเก็บข้อมูลบน Cloud" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "ซ่อนตัวยึดตําแหน่งขององค์ประกอบที่ถูกบล็อก" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "เป็นมิตรกับคนตาบอดสี" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Make use of context menu where appropriate" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Disable hyperlink auditing" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "แสดงจำนวนคำขอเครือข่ายที่ถูกปฏิเสธบนไอคอน" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "การสำรองข้อมูลครั้งล่าสุด" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "การคืนค่าครั้งล่าสุด:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "บล็อกรายงาน CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Disable cosmetic filtering" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "ปิดกั้นองค์ประกอบชนิด Media ที่มีขนาดใหญ่กว่า {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Block remote fonts" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "ปิดการใช้งาน JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "การตั้งค่า" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "ปิดใช้งานการดึงข้อมูลล่วงหน้า (เพื่อป้องกันการเชื่อมต่อสำหรับคำขอเครือข่ายที่ถูกบล็อก)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Custom accent color" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "รูปแบบการแสดงผล" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "ปิดคำอธิบาย" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Uncloak canonical names" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "ป้องกันไม่ให้ WebRTC รั่วไหลที่อยู่ IP ภายในเครื่อง" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Type a shortcut" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Shortcuts" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Show Dashboard" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Show Logger" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — ประวัติ" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "หน่วยความจำที่ใช้: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "สมัครสมาชิก" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: เพิ่ม URL ต่อไปนี้ในรายการตัวกรองแบบกำหนดเองของคุณหรือไม่ ?\n\nชื่อ: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Find similar reports" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "เปิด" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "ช่วยเหลือ" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "สร้างรายงานใหม่" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "เอกสารอ้างอิง" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Read the documentation at \u003Ccode>uBlock/wiki\u003C/code> to learn about all of uBlock Origin's features." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Questions and support" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter issues/website is broken" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "รายงานข้อผิดพลาด" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Troubleshooting Information" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Report a filter issue" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "The web page…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- เลือกรายการ --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shows ads or ad leftovers" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has privacy-related issues" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfunctions when uBlock Origin is enabled" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Opens unwanted tabs or windows" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Address of the web page:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "ใช้การเปลี่ยนแปลง" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "ส่งออก" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-whitelist_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "นำเข้าและรวม" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "รายการยกเว้น" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "ระบุไซต์ที่เชื่อถือได้เพื่อกำหนดว่าควรปิดการใช้งาน uBlock Origin ที่หน้าเว็บใด พิมพ์หนึ่งรายการต่อบรรทัด" - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/tr/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/tr/messages.json deleted file mode 100644 index aa6c767..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/tr/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Değişiklikleri uygula" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Özel filtrelerimi etkinleştir" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Dışa aktar…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "ublock-statik-filtrelerim_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "İçe aktar ve ekle…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filtrelerim" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Güven gerektiren özel filtrelere izin ver" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Güvenilmeyen kaynaklardan filtre eklemeyin." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Değişiklikleri uygula" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Filtre listelerini kendiliğinden güncelle" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Güncel değil." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Her satırda bir URL. Geçersiz URL'ler sessizce yok sayılacaktır." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Reklamlar" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Can sıkıcı ögeler" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Çerez bildirimleri" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Özel" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Yerleşik" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Kötü amaçlı yazılım koruması, güvenlik." - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Çok-amaçlı" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Gizlilik" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Bölgeler, diller" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Sosyal medya tuşları" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Genel kozmetik filtreleri yok say" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Genel kozmetik filtreler tüm web sayfalarına uygulanacak kozmetik filtrelerdir. Bu seçeneğin etkinleştirilmesi, genel kozmetik filtrelerin işlenmesi nedeniyle web sayfalarına eklenen bellek ve işlemci yükünü ortadan kaldırır.\n\nDaha az güçlü aygıtlarda bu seçeneğin etkinleştirilmesi önerilir." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "İçe aktar…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Son güncelleme: {{ago}}.\nGüncelleştirmeye zorlamak için tıklayın." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Engellenmiş alan adlarının listesi" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{total}} taneden {{used}} adedi kullanıldı" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} ağ filtresi + {{cosmeticFilterCount}} kozmetik filtre:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Bir ağ hatası kaynağın güncellenmesini engelledi." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Filtre listeleri" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Kozmetik filtreler, bir web sayfasında görsel rahatsızlık yaratan ve ağ isteği-tabanlı filtreleme motorlarınca engellenemeyen ögelerin gizlenmesini sağlar." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Kozmetik filtreleri incele ve uygula" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Tüm önbellekleri temizle" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Ağ etkinliğini, tüm filtre listeleri yüklenene kadar askıya al" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Şimdi güncelle" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Güncelleniyor…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "içeriği görüntüle" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Dosyaya yedekle…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ublock-yedeğim_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO'nun kendi filtre listeleri ücretsiz olarak şu \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN'lerde\u003C/a> barındırılır:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Bir filtre listesinin güncellenmesi gerektiğinde rastgele seçilen bir CDN kullanılır" - }, - "aboutChangelog": { - "description": "", - "message": "Değişiklik günlüğü" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Kaynak kodu (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Katkıda bulunanlar" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Dış bağımlılıklar (GPLv3-uyumlu):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filtre listeleri" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Hakkında" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Gizlilik ilkesi" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Varsayılan ayarlara sıfırla…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Tüm ayarlarınızı silinecek, ve uBlock₀ yeniden başlayacak.\n\nuBlock₀ fabrika ayarlarına sıfırlansın mı?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Dosyadan geri yükle…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Tüm ayarlarınız {{time}} tarihinde yedeklenmiş veriler kullanarak değiştirilecek ve uBlock₀ yeniden başlayacak. \n\nYedeklenmiş verileriniz kullanılarak var olan tüm ayarlarınız değiştirilsin mi?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Veri okunamadı veya geçersiz" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Kaynak kodu" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Çeviriler" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Gelişmiş ayarlar" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Uyarı! Bu gelişmiş ayarları değiştirmenin sorumluluğu size aittir." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — Kaynak görüntüleyici" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Yüklemek için tıkla" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Bu aygıtın adı:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Bulut depolamadan içe aktar" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Bulut depolamadan içe aktar ve şu anki ayarlarla birleştir" - }, - "cloudPush": { - "description": "tooltip", - "message": "Bulut depolamaya aktar" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Çerçevedeki ögeyi engelle…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Filtre listesine abone ol…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Geçici olarak büyük medya ögelerine izin ver" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Kaynağı görüntüle…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Kontrol paneli" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Uyarı! Kaydedilmemiş değişiklikleriniz var" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Yok say" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Kal" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Geri git" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Bu pencereyi kapat" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Devam et" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Kalıcı olarak" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Geçici olarak" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Bu site için beni bir daha uyarma" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Bulunduğu liste:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "değişkensiz" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "{{hostname}} için katı engellemeyi devre dışı bırak" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin aşağıdaki sayfanın yüklenmesini engelledi:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Bu filtre nedeniyle:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Sayfa engellendi" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Bu girdi en sonda olmalıdır" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} gün önce" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} saat önce" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} dakika önce" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "bir gün önce" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "bir saat önce" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "bir dakika önce" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Ağ hatası: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Sonunda, etkili bir engelleyici. İşlemciyi ve belleği yormaz." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "kapalı" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Değişiklikleri uygula" - }, - "genericBytes": { - "description": "", - "message": "byte" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Panoya kopyala" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Kilitli kaydırmayı aç/kapat" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Geri al" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Tümünü seç" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Gönder" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Hata sayısı: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Tümü" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Sekmesiz" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "günlükçü içeriğini filtrele" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Alan adı" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Filtre" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Tür" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Günlükçüyü temizle" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Geçerli sekme" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "DOM araştırıcısını aç/kapat" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Bağlam" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Filtre" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Filtre listesi" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Ayrıntılar" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Taraf" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Kök bağlam" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Kural" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Tür" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Yalın" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Liste" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Tablo" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin viki: Günlükçü" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Günlükçüyü duraklat (tüm gelen veriyi yok say)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Açılır paneli aç/kapat" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Sekme içeriğini tekrar yükle" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "1. taraf" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "3. taraf" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "izinli" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "engelli" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "olaylı" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "düzenlendi" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Değil" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Günlükçü filtreleme seçenekleri" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Günlük filtrelemeyi aç/kapat" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Aşağıdaki üç koşulu sağlamayan günlükçü girdileri kendiliğinden yok sayılacaktır:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Bağlam" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Filtre/kural" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Taraf" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Tarih" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Sütunları gizle:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Dikey genişletilmiş modda, her girdi için {{input}} satır kullan" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Son {{input}} dakikadaki girdileri sakla" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Her sekme için en çok {{input}} girdi sakla" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Her sekme için en çok {{input}} sayfa yüklemesi sakla" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Statik filtrenin \u003Ccode>{{filter}}\u003C/code> bulunduğu listeler:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Statik filtre, şu anda etkin olan filtre listelerinde bulunamadı" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Statik filtre" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{url}} URL adresi ile eşleşen {{br}}ve kaynağı {{origin}} olan,{{br}}eşleşen bir istisna filtresi {{importance}} {{br}}{{type}} ağ isteklerini {{action}} {{br}}." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "İzin ver" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "her yerden" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "her türdeki" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Engelle" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "olsa da" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "olmasa da" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "“{{origin}}” adresi" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "“{{type}}” türündeki" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Bağlam:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL kuralı" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Tür:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Günlükçüyü devam ettir" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Ögeyi engelle…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Kozmetik filtreler" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Tıkla, Ctrl-tıkla" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Oluştur" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Ağ filtreleri" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Seç" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Ön İzleme" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Çık" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "1. taraf betikler" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "3. taraf" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "çerçeve" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "3. taraf çerçeveler" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "3. taraf CSS/resimler" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "betik" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "3. taraf betikler" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "tümü" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "bu sayfada" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Bu sayfada engellenen" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "engellenen istekler" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "kurulumdan beri" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Kurulumdan beri engellenen" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} (%{{percent}})" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Bağlanılan alan adları" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{total}} taneden {{count}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "bağlanılan adresler" - }, - "popupImageRulePrompt": { - "description": "", - "message": "resimler" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "satır içi betikleri" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Daha az" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Daha fazla" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Kozmetik filtreleme" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Büyük medya ögeleri" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Açılır pencereler" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Uzak yazı tipleri" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "ya da" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Tıklama: uBlock₀'i bu site için devre dışı bırak/etkinleştir.\n\nCtrl+tıklama: uBlock₀'i yalnızca bu sayfada devre dışı bırak." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "uBlock₀'i bu sitede devre dışı bırakmak için tıklayın.\n\nuBlock₀'i yalnızca bu sayfada devre dışı bırakmak için Ctrl+tıklayın." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "uBlock₀'i bu sitede etkinleştirmek için tıklayın." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Kontrol panelini açar" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Genel kurallar: bu sütun tüm sitelere uygulanan kurallar içindir." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Yerel kurallar: bu sütun yalnızca geçerli siteye uygulanan kurallar içindir.\nYerel kurallar genel kuralları geçersiz kılar." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Günlükçüyü açar" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Bu site için kozmetik filtrelemeyi aç/kapat" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Bu sitede, kozmetik filtrelemeyi devre dışı bırakmak için tıklayın" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Bu sitede, kozmetik filtrelemeyi etkinleştirmek için tıklayın" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Bu site için büyük medya ögelerini engellemeyi aç/kapat" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Bu sitede büyük medya ögelerini engellemek için tıklayın" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Bu sitede büyük medya ögelerini artık engellememek için tıklayın" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Bu site için açılır pencere engellemeyi aç/kapat" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Bu sitede açılır pencerelerin tümünü engellemek için tıklayın" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Bu sitede açılır pencerelerin tümünü artık engellememek için tıklayın" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Bu site için uzak yazı tiplerini engellemeyi aç/kapat" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Bu sitede uzak yazı tiplerini engellemek için tıklayın" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Bu sitede uzak yazı tiplerini artık engellememek için tıklayın" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "JavaScript'i bu sitede devre dışı bırakmak için tıklayın" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Artık bu sitede JavaScript'i devre dışı bırakmamak için tıklayın" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Öge seçme moduna gir" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Bu web sitesinde bir sorunu bildir" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Değişikliklerinizi geri almak için tıklayın." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Değişikliklerinizi kalıcı kılmak için tıklayın." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Öge silme moduna gir" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Sürüm" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Engelleme modunu gevşet" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "İşle" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "ublock-dinamik-kurallarım_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Düzenle" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "İptal et" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Kaydet" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Dosyaya aktar…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Kural sözdizimi: \u003Ccode>kaynak hedefi türü işlemi\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>bütün belgeler\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Dinamik filtreleme kurallarınızın listesi." - }, - "rulesImport": { - "description": "", - "message": "Dosyadan al…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Kurallarım" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Kalıcı kurallar" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Geri al" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sıralama:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Hedef" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Kaynak" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Kural türü" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Geçici kurallar" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Varsayılan davranış" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Bu varsayılan davranışlar site bazında geçersiz kılınabilir" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Gelişmiş" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Yalnız teknik kullanıcılara uygun ayarlar" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "İleri düzey kullanıcıyım" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "gelişmiş ayarlar" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Görünüm" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Bulut depolama desteğini etkinleştir" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Engellenmiş ögelerin yertutucularını gizle" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Renk körü dostu" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Uygun olduğunda içerik menüsünü kullan" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Köprü denetimini devre dışı bırak" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Engellenen istek sayısını simge üstünde göster" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Son yedekleme:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Son geri yükleme:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "CSP raporlarını engelle" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Kozmetik filtreleri devre dışı bırak" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "{{input}} KB'tan büyük medya ögelerini engelle" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Uzak yazı tiplerini engelle" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "JavaScript'i devre dışı bırak" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Ayarlar" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Kaynak ön getirimini devre dışı bırak (engellenmiş ağ istekleri için her bağlantıyı engellemek için)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Özel vurgu rengi" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Tema" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "İpuçlarını kapat" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Kuralsal isimleri ortaya çıkar" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "WebRTC'nin yerel IP adreslerini sızdırmasını engelle" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Bir kısayol girin" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Kısayollar" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Kontrol Panelini Göster" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Günlükçüyü Göster" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Günlükçü" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Kullanılan depolama: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Abone ol" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Bu URL, özel filtre listenize eklensin mi?\n\nBaşlık: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Benzer raporları bul" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Aç" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Destek" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Kısalt" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Yeni rapor oluştur" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Belgeler" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "uBlock Origin'in özelliklerinin tamamı hakkında bilgi edinmek için \u003Ccode>uBlock/wiki\u003C/code> adresindeki belgeri okuyun." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Sorular ve destek" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Sorulara cevaplar ve diğer türlü yardım desteği \u003Ccode>/r/uBlockOrigin\u003C/code> subreddit'inde sunulmaktadır." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filtre sorunları/web sitesi bozuk" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Belirli web siteleriyle ilgili filtre sorunlarını \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> sorun izleyicisine\u003C/span> bildirin. \u003Cu>Github hesabı gerektirir.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Önemli:\u003C/b> uBlock Origin'le birlikte, belirli web sitelerinde filtre sorunlarına neden olabileceği için, diğer benzer amaçlı engelleyicileri kullanmaktan kaçının." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>İpuçları:\u003C/b> Filtre listenizin güncelliğinden emin olun. \u003Cspan data-url=\"logger-ui.html#_\">Günlükçü\u003C/span> filtre bağlantılı sorunları tanılamada temel araçtır." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Hata raporu" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "uBlock Origin'in kendisiyle ilgili sorunları \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> sorun izleyicisine\u003C/span> bildirin. \u003Cu>Github hesabı gerektirir.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Hata Giderme Bilgisi" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Aşağıdaki, gönüllüler size bir sorunu çözmede yardım etmeye çalışırken, faydalı olabilecek teknik bilgidir." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Önemli:\u003C/b> Olası gizli ve hassas bilgiler öntanımlı olarak kısaltılır. Kısaltılmış bilgiler bir sorunu çözmeyi zorlaştırabilir." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Web sayfasını uygunsuz (“NSFW”) olarak etiketle (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Bir filtre sorunu bildirin" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Gönüllülere aynı raporlarla sıkıntı vermemek için, lütfen sorunun daha önce bildirilmediğinden emin olun." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filtre listeleri günlük olarak güncellenir. Sorununuzun en son filtre listelerinde zaten ele alınıp alınmadığından emin olun." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Sorunlu web sayfasını yeniden yükleyerek sorunun devam ettiğini doğrulayın." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Web sayfası…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Bir girdi seçin --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Reklam veya reklam artıkları gösteriyor" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Kaplamaları veya diğer sıkıntıları var" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "uBlock Origin’i algılıyor" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Gizlilikle ilgili sorunları var" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "uBlock Origin etkinken bozuluyor" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "İstenmeyen sekme veya pencereler açıyor" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Web sayfasının adresi:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Kısaltma" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Kozmetik filtrelemeyi aç/kapat" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "JavaScript'i Aç/Kapa" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Tarayıcı açılışında düzgün filtreleme yapılamadı.\nDüzgün filtreleme için sayfayı yenileyin." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Değişiklikleri uygula" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Dışa aktar…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "ublock-güvenilen-sitelerim_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "İçe aktar ve ekle" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Güvenilen siteler" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Güvenilen site yönergeleri, uBlock Origin'in devre dışı bırakılması gerektiği web sayfalarını belirler. Her satırda bir girdi." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/uk/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/uk/messages.json deleted file mode 100644 index f7a93b6..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/uk/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Застосувати зміни" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Увімкнути власні фільтри" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Експортувати" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "ublock-custom-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Імпортувати та додати" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Власні фільтри" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Дозволити власні фільтри, які потребують довіри" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Не додавати фільтри з невідомих джерел." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Застосувати зміни" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Автоматично оновити списки фільтрів." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Застарілий." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Одне посилання на рядок. Невірні посилання будуть проігноровані без попередження." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Реклама" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Надокучливості" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Повідомлення про файли cookie" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Користувацькі" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Вбудовані" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Домени шкідливих програм" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Універсальні" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Конфіденційність" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Регіони, мови" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Віджети соціальних мереж" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ігнорувати загальні косметичні фільтри" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Загальні косметичні фільтри — це ті косметичні фільтри, які призначені для застосування на всіх вебсайтах. Увімкнення цієї опції усуне навантаження на пам'ять і процесор, що додається до вебсторінок у результаті обробки загальних косметичних фільтрів.\n\nРадимо вмикати цю опцію на менш потужних пристроях." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Імпорт..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Останнє оновлення: {{ago}}\nКлацніть для примусового оновлення." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Перелік заблокованих хостів" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "використовується {{used}} з {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} мережевих фільтрів + {{cosmeticFilterCount}} косметичних фільтрів з:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Оновлення не вдалося, у зв'язку з помилкою мережі." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Списки фільтрів" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Косметичні фільтри служать для приховування елементів на вебсторінці, які вважаються візуально неприємними та не можуть бути заблоковані мережевими механізмами фільтрації на основі запитів." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Розбір та застосування фільтрів приховування елементів Adblock+." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Очистити всі кеші" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Призупинити мережеві операції доки всі списки фільтрів не завантажаться" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Оновити зараз" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Оновлюється..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "переглянути вміст" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "ГБ" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "КБ" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "МБ" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Зберегти резервну копію у файл..." - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Списки власних фільтрів uBO вільно розміщуються на таких \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "Випадково вибраний CDN застосовуватиметься, коли список фільтрів потрібно оновити" - }, - "aboutChangelog": { - "description": "", - "message": "Журнал змін" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Джерельний код (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Учасники" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Зовнішні залежності (сумісні з GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Списки фільтрів" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Про програму" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Політика конфіденційності" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Відновити початкові налаштування..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Ваші налаштування буде видалено та µBlock буде перезапущено.\n\nПовернути µBlock до початкових налаштувань?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Відновити з файлу…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Всі ваші налаштування будуть перезаписані з резервної копії від {{time}} та µBlock буде перезапущено.\n\nПерезаписати всі налаштування використовуючи резервну копію?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Дані помилкові або не можуть бути прочитані" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Вихідний код" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Переклади" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Розширені налаштування" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Увага! Змінюйте ці розширені налаштування на власний ризик." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ – Переглядач ресурсів" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Натисніть, щоб завантажити" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Назва цього пристрою:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Імпортувати із хмарного сховища" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Імпортувати з хмари та об'єднати з чинними налаштуваннями" - }, - "cloudPush": { - "description": "tooltip", - "message": "Експортувати до хмарного сховища" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Заблокувати елемент у фреймі" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Підписатися на список фільтрів..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Тимчасово дозволити великі медіа елементи" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Перегляд джерела..." - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "µBlock — Панель керування" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Увага! Є незбережені зміни" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ігнорувати" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Залишитись" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Повернутись назад" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Зачинити це вікно" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Продовжити" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Завжди" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Тимчасово" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Не нагадуйте мені про цей сайт" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Знайдено в:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "без параметрів" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Вимкнути повне блокування для {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock запобіг завантаженню наступної сторінки:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Через наступний фільтр" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Сторінка заблокована" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Цей запис має бути останнім" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} дні(в) тому" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} годин(и) тому" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} хвилин(и) тому" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "день тому" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "годину тому" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "хвилину тому" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Помилка мережі: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Ефективний блокувальник реклами таки з’явився. Не навантажує процесор та пам'ять." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "Відключений" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Застосувати зміни" - }, - "genericBytes": { - "description": "", - "message": "байтів" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Скопіювати до буферу обміну" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Перемкнути замкнуту прокрутку" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Скасувати зміни" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Вибрати все" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Надіслати" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Помилки: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Все" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "За лаштунками" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "фільтр журналу записів" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Домен" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Фільтр" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Тип" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "Адреса" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Очистити журнал" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Поточна вкладка" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Перемкнути інспектор DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Контекст" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Фільтр" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Список фільтрів" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Деталі" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Членство" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Кореневий контекст" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Правило" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Тип" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL-адреса" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Простий" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Список" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Таблиця" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: журнал" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Поставити журнал на паузу (ігнорувати всі вхідні дані)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Перемкнути панель, що спливає" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Перезавантажити вміст вкладки" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "основний" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "сторонній" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "дозволений" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "заблокований" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "насичений" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "модифікований" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Ні" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Опції фільтрування журналу" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Перемкнути фільтрування журналу" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Записи журналу, що не відповідають всім трьом нижченаведеним умовам, будуть автоматично відхилені:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} контекст" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} фільтр/правило" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} членство" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} час" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Приховати стовпці:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Використовувати {{input}} рядків на елемент у вертикальному режимі" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Зберегти записи за останні {{input}} хв" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Зберегти щонайбільше {{input}} елементів у вкладці" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Зберегти щонайбільше {{input}} завантажень сторінки у вкладці" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Статичний фільтр \u003Ccode>{{filter}}\u003C/code> знайден у:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Статичний фільтр не знайдений в жодному списку увімкнених у цей момент фільтрів" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Статичний фільтр" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} мережеві запити {{type}}, {{br}}посилання яких збігаються з {{url}} {{br}}та які {{origin}},{{br}}{{importance}} є відповідний фільтр-виняток." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Дозволити" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "мають будь-яке походження" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "будь-якого типу" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Блокувати" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "навіть якщо" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "крім випадків, коли" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "походять із „{{origin}}“" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "типу „{{type}}“" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Контекст:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL правило" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Тип:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Увімкнути журнал" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Заблокувати елемент" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Косметичні фільтри" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Клік, Ctrl-клік" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Створити" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Мережні фільтри" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Вибрати" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Попередній перегляд" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Вийти" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "Основні скрипти" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "сторонні" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "рамка" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "Сторонні фрейми" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "Сторонні CSS/зображення" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "скрипт" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "Сторонні скрипти" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "всі" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "на цій сторінці" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Заблоковано на цій сторінці" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "запитів заблоковано" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "від моменту встановлення" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Заблоковано з моменту встановлення" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} або {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Доменів під'єднано" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} з {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "доменів під’єднано" - }, - "popupImageRulePrompt": { - "description": "", - "message": "зображення" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "вбудовані сценарії" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Менше" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Більше" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Косметичне фільтрування" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Великі медіаелементи" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Спливні вікна" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Віддалені шрифти" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavasScript" - }, - "popupOr": { - "description": "English: or", - "message": "або" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Натиснення: вимикає/умикає uBlock₀ для поточного сайту.\n\nCtrl+натиснення: вимикає uBlock₀ тільки для цієї сторінки." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Натисніть для вимкнення uBlock₀ для поточного сайту.\n\nНатисніть з Ctrl для вимкнення uBlock₀ лише для цієї сторінки." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Натисніть, щоб увімкнути uBlock₀ для цього сайту." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Перейти до панелі керування" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Глобальні правила: цей стовпчик для правил, що застосовуються для всіх сайтів." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Локальні правила: цей стовпчик для правил, що застосовуються лише для цього сайту.\nЛокальні правила замінюють глобальні." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Перейти до журналу запитів" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Переключити косметичний фільтр для цього сайту" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Натисніть для вимкнення косметичних фільтрів на цьому сайті" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Натисніть для увімкнення косметичних фільтрів на цьому сайті" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Увімк/Вимк блокування великих медіа елементів на цьому сайті" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Натисніть для блокування великих медіаелементів на цьому сайті" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Натисніть для скасування блокування великих медіаелементів на цьому сайті" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Увімкнути блокування всіх виринаючих вікон цього сайту" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Натисніть, щоб заблокувати всі спливні вікна на цьому сайті" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Натисніть для скасування блокування всіх спливних вікон на цьому сайті" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Перемкнути блокування віддалених шрифтів для цього сайту" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Натисніть для блокування віддалених шрифтів на цьому сайті" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Натисніть для скасування блокування віддалених шрифтів на цьому сайті" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Натисніть, щоб повністю вимкнути JavaScript на цьому сайті" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Натисніть, щоб скасувати вимкнення JavaScript на цьому сайті" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Перейти у режим вибору елементів" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Повідомити про помилку на цьому вебсайті" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Натисніть, щоб відкинути ваші зміни." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Натисніть, щоб зробити ваші зміни постійними." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Перейти в режим блокування елементів" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Версія" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Послаблений режим блокування" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Затвердити" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Редагувати" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Відкинути" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Зберегти" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Експорт до файлу..." - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Синтаксис правил: \u003Ccode>джерело призначення тип дія\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>повна документація\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Список правил динамічного фільтрування." - }, - "rulesImport": { - "description": "", - "message": "Імпорт з файлу…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Мої правила" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Постійні правила" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Скасувати зміни" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Сортування:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Призначення" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Джерело" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Тип правила" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Тимчасові правила" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Типові налаштування" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Усталені налаштування можуть бути перевизначеними для кожного сайту окремо" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Додатково" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Функції, що потрібні лише технічним користувачам" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Я досвідчений користувач" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "розширені налаштування" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Вигляд" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Увімкнути підтримку хмарного сховища" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Ховати заповнювачі заблокованих елементів" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Підтримка дальтонізму" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Використовувати контекстне меню там, де це можливо" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Вимкнути перевірку гіперпосилань" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Показувати кількість заблокованих запитів на піктограмі" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Остання резервна копія:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Востаннє відновлено:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Блокувати CSP-звіти" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Вимкнути косметичні фільтри" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Блокувати медіа елементи розміром від {{input:number}} кБ" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Блокувати сторонні шрифти" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Вимкнути JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Налаштування" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Вимкнути передзавантаження (щоб унеможливити будь-які з’єднання для заблокованих мережевих запитів)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Акцент кольору користувача" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Тема" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Вимкнути підказки" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Показати CNAME назви" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Унеможливити витік локальної IP-адреси через WebRTC" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Уведіть комбінацію" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Комбінації клавіш" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Показати панель керування" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Показати журнал мережевих запитів" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Журнал мережевих запитів" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Використано: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Підписатись" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "µBlock: Додати це посилання до списку ваших фільтрів?\n\nНазва: \"{{title}}\"\nПосилання: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Знайти подібні звіти" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Відкрити" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Підтримка" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Редагувати" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Створити новий звіт" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Документація" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Прочитайте документацію на \u003Ccode>uBlock/вікі\u003C/code>, щоб дізнатися про всі функції uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Запитання та підтримка" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Відповіді на запитання та інші види підтримки довідки надаються на \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Проблеми з фільтрами/сайт не працює" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Повідомити про проблеми фільтра на певних вебсайтах до \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">відстежувача проблем \u003Ccode>uBlockOrigin/uAssets\u003C/code>\u003C/span>. \u003Cu>Потрібен обліковий запис GitHub.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Важливо:\u003C/b> Уникайте використання інших блокувальників аналогічного призначення разом із uBlock Origin, оскільки це може спричинити проблеми з фільтрами на певних вебсайтах." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Поради:\u003C/b> Переконайтеся, що списки фільтрів оновлено. \u003Cspan data-url=\"logger-ui.html#_\">Журнал\u003C/span> — основний засіб визначення проблем пов'язаних з фільтром." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Звіт про ваду" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Повідомити про проблеми самого uBlock Origin \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">відстежувач проблем \u003Ccode>uBlockOrigin/uBlock-issue\u003C/code>. \u003Cu>Потрібен обліковий запис GitHub.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Інформація про усунення несправностей" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Внизу наведено технічні дані, які можуть бути корисними, коли волонтери намагатимуться допомогти вам розв'язати проблему." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Важливо:\u003C/b> Потенційно приватні або конфіденційні дані типово редаговані. Редаговані дані можуть ускладнити розв'язання проблеми." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Позначити цю сторінку «NSFW» (\u003Ca href=\"https://uk.wikipedia.org/wiki/NSFW\">«Небезпечно для роботи»\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Повідомити про ваду фільтра" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Щоб не обтяжувати волонтерів повторюваними звітами, переконайтеся, що про проблему ще не повідомлялося." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Списки фільтрів оновлюються щоденно. Переконайтесь, що ваша проблема все ще не виправлена в найсвіжішому списку фільтрів" - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Переконайтесь, що проблема все ще присутня після перезавантаження проблемної сторінки" - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Вебсторінка..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Указати проблему --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "З'являється реклама або залишки оголошень" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Накладання або інші прикрощі" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Виявляє uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Пов'язані з приватністю проблеми" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Щось не працює, якщо увімкнено uBlock Origin" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Відкриває небажані вкладки або вікна" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Адреса вебсторінки:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Скасувати редагування" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Увімкнути/вимкнути косметичні фільтри" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Перемкнути JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Неможливо правильно фільтрувати під час запуску браузера.\nПерезапустіть сторінку для гарантії правильного фільтрування" - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Застосувати зміни" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Експортувати" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-whitelist_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Імпортувати та додати" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Білий список" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Ваш список адрес сайтів, для яких µBlock буде неактивним. Додайте по одному запису на рядок. Невірні адреси будуть проігноровані без попереджень та закоментовані." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ur/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ur/messages.json deleted file mode 100644 index 34d5963..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/ur/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Apply changes" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Enable my custom filters" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "برآمد کریں" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Import and append…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "میرے فلٹر" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Allow custom filters requiring trust" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Do not add filters from untrusted sources." - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Apply changes" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Auto-update filter lists" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Out of date." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "One URL per line. Invalid URLs will be silently ignored." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "اشتہارات" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Annoyances" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie notices" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "مخصوص" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Built-in" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Malware protection, security" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Multipurpose" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "رازداری" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "علاقے، زبانیں" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Social widgets" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Ignore generic cosmetic filters" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "درآمد..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Last update: {{ago}}.\nClick to force an update." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Lists of blocked hosts" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} used out of {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "A network error prevented the resource from being updated." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "فلٹر کی فہرستیں" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the network request-based filtering engines." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Parse and enforce cosmetic filters" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Purge all caches" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Suspend network activity until all filter lists are loaded" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "ابھی اپڈیٹ کریں" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "اپڈیٹ ہو رہا ہے" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "view content" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Back up to file…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO's own filter lists are freely hosted on the following \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDNs\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "A randomly picked CDN is used when a filter list needs to be updated." - }, - "aboutChangelog": { - "description": "", - "message": "Changelog" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Source code (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Contributors" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "External dependencies (GPLv3-compatible):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Filter lists" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "متعلق" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Privacy policy" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Reset to default settings…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Restore from file…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "The data could not be read or is invalid" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Source code" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Translations" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "اعلیٰ ترتیبات" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Warning! Change these advanced settings at your own risk." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — اثاثے" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Click to load" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "اس آلے کا نام:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "کلاؤڈ سٹوریج میں درآمد کریں" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "کلاؤڈ سٹوریج سے درآمد کر کے موجودہ ترتیبات کے ساتھ ضم کریں" - }, - "cloudPush": { - "description": "tooltip", - "message": "کلاؤڈ سٹوریج میں برآمد کریں" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Block element in frame…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Subscribe to filter list…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Temporarily allow large media elements" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "View source code…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — کنٹرول پینل" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "خبردار! آپ نے محفوظ نہیں کیا" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Ignore" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Stay here" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "واپس جائیں" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "اس ونڈو کو بند کریں" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Proceed" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "مستقل طور پر" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "عارضی طور پر" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Don't warn me again about this site" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Found in:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "without parameters" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Disable strict blocking for {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin has prevented the following page from loading:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Because of the following filter:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Page blocked" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "This entry must be the last one" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} دن پہلے" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} گھنٹے پہلے" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} منٹ پہلے" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "ایک دن پہلے" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "ایک گھنٹہ پہلے" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "ایک منٹ پہلے" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "نیٹورک مسئلہ: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "آخر کار، ایک مؤثر اشتہار کو روکنے والا، یہ کم cpu اور میموری لیتا ہے." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "بند" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "تبدیلیاں لاگو کریں" - }, - "genericBytes": { - "description": "", - "message": "bytes" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "کلپ بورڈ پر نقل کریں" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Toggle locked scrolling" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "کالعدم کریں" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Select all" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "جمع کرائیں" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Errors: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "تمام" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Tabless" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "filter logger content" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "ڈومین" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "فلٹر" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "نوعیت" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "پته" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Clear logger" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "موجودہ ٹیب" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Toggle the DOM inspector" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "سیاق" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "فلٹر" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "فلٹر کی فہرست" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "تفصیلات" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Partyness" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Root context" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "اصول" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "نوعیت" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "پته" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Plain" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "فہرست" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "ٹیبل" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: The logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Pause logger (discard all incoming data)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Toggle the popup panel" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Reload the tab content" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "فریق اول" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "فریق ثالث" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "اجازت والے" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "روکے ہوئے" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "modified" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "نہیں" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Logger filtering options" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Toggle logger filtering" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Context" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} فلٹر / اصول" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partyness" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} وقت" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "چھپائیں کالم:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Use {{input}} lines per entry in vertically expanded mode" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Preserve entries from the last {{input}} minutes" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Preserve at most {{input}} entries per tab" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Preserve at most {{input}} page loads per tab" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Static filter \u003Ccode>{{filter}}\u003C/code> found in:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Static filter could not be found in any of the currently enabled filter lists" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Static filter" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "اجازت دیں" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "کہیں سے بھی" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "کسی بھی نوعیت" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "روکیں" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "even if" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "except when" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "\"{{origin}}\" سے" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "نوعیت \"{{type}}\"" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "سیاق:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL rule" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "نوعیت:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Unpause logger" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "عنصر کو روکیں" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "کاسمیٹک فلٹر" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "کلک، کنٹرول + کلک" - }, - "pickerCreate": { - "description": "English: Create", - "message": "بنائیں" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "نیٹورک کے فلٹر" - }, - "pickerPick": { - "description": "English: Pick", - "message": "چُنیں" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "دیکھیں" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "بند کریں" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "فریق اول کی سکرپٹس" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "فریق ثالث" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "frame" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "فریق ثالث کے فریم" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "فریق ثالث کی Css/ تصاویر" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "script" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "فریق ثالث کی سکرپٹس" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "تمام" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "اس صفحے پر" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "اس صفحے سےختم کر دیا گیا ہے" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "درخواستیں بلاک ہیں" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "تنصیب سے لے کر اب تک" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Blocked since install" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} یا {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Domains connected" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} out of {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "domains connected" - }, - "popupImageRulePrompt": { - "description": "", - "message": "تصاویر" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "ان لائن سکرپٹس" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "کم" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "مزید" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Cosmetic filtering" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Large media elements" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Pop-up windows" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Remote fonts" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "یا" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "کلک: uBlock اس سائٹ کے لیے فعال/ غیرفعال کریں.\n\nکنٹرول + کلک: uBlock صرف اس صفحہ پر غیرفعال کریں." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "کلک کر کے uBlock اس سائٹ کے لیے غیرفعال کریں.\n\nکنٹرول + کلک: uBlock صرف اس صفحے کے لیے غیرفعال کریں." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "کلک کر کے uBlock اس سائٹ کے لیے فعال کریں." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "کنٹرول پینل کھولیں" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "گلوبل اصول: اس کالم میں وہ اصول ہیں جو تمام ویب سائٹوں پر لاگو ہوں گے." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "مقامی اصول: اس کالم میں وہ اصول ہیں جو صرف موجودہ سائٹ پر لاگو ہوں گے.\nمقامی اصول کو گلوبل اصولوں پر ترجیح دی جائے گی." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "ریکارڈ کار کھولیں" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "اس سائٹ کے لئے کاسمیٹک فلٹر کو فعال یا غیر فعال کریں" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "اس سائٹ کے لئے کاسمیٹک فلٹر کو غیر فعال کریں" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "اس سائٹ کے لئے کاسمیٹک فلٹر کو فعال کریں" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "اس سائٹ پر بڑے میڈیا والی اشیاء کو روک دیں" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "کلک کر کے اس سائٹ پر بڑے میڈیا والی اشیاء کو روک دیں" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "کلک کر کے اس سائٹ پر بڑے میڈیا والی اشیاء کی اجازت د‌یں" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "اس سائٹ پر آنے والے تمام پاپ اپ کو روکیں یا آنے دیں" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "کلِک کر کے اس سائٹ کے تمام پاپ اپ کو روک کریں" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "کلِک کر کے اس سائٹ کے تمام پاپ اپ کی اجازت دیں" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "اس سائٹ پر آنے والے تمام remote فانٹ کو روکیں یا آنے دیں" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "کلِک کر کے اس سائٹ کے تمام remote فانٹ کو روک کریں" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "کلِک کر کے اس سائٹ کے تمام remote فانٹ کی اجازت دیں" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "کلک کر کے اس سائٹ پہ جاواسِکرپٹ غیرفعال کریں" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "کلک کر کے اس سائٹ پر جاوا سکرپٹ چلنے دیں" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "عناصر چننے کا موڈ" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Report an issue on this website" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "اپنی تبدیلیوں کو کالعدم کرنے کے لیے کلک کریں." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "اپنی تبدیلیوں کو مستقل کرنے کے لیے کلک کریں." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "عناصر تباہ کرنے کا موڈ" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Version" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Relax blocking mode" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Commit" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "تدوین کریں" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "مسترد کریں" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "محفوظ کریں" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "فائل میں برآمد کریں" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Rule syntax: \u003Ccode>source destination type action\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>full documentation\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "List of your dynamic filtering rules." - }, - "rulesImport": { - "description": "", - "message": "فائل سے درآمد..." - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "میرے اصول" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "مستقل اصول" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Revert" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sort:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Destination" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Source" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Rule type" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "عارضی اصول" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Default behavior" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "These default behaviors can be overridden on a per-site basis" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Advanced" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Features suitable only for technical users" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "I am an advanced user" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "اعلیٰ ترتیبات" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Appearance" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Enable cloud storage support" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "روکے ہوئے عناصر جس جگہ پے تھے اس جگہ کو غائب کر دیں" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Color-blind friendly" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Make use of context menu where appropriate" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Disable hyperlink auditing" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "آئکن پر روکی ہوئی درخواستوں کی تعداد دکھائیں" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "آخری بیک اپ:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "آخری ریسٹور:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Block CSP reports" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Disable cosmetic filtering" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Block media elements larger than {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Block remote fonts" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "جاوا سکرپٹ بند کریں" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "ترتیبات" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Disable pre-fetching (to prevent any connection for blocked network requests)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Custom accent color" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Theme" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "مفید معلومات والے پیغامات مت دکھائیں" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Uncloak canonical names" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Prevent WebRTC from leaking local IP addresses" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Type a shortcut" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "شارٹ کٹ" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "کنٹرول پینل دکھائیں" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Show Logger" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — ریکارڈ" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Storage used: {{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Subscribe" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "Add the following URL to your custom filter lists?\n\nTitle: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Find similar reports" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Open" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Support" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Redact" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Create new report" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Documentation" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Read the documentation at \u003Ccode>uBlock/wiki\u003C/code> to learn about all of uBlock Origin's features." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Questions and support" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Answers to questions and other kinds of help support is provided on the subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Filter issues/website is broken" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "Report filter issues with specific websites to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Tips:\u003C/b> Be sure your filter lists are up to date. \u003Cspan data-url=\"logger-ui.html#_\">The logger\u003C/span> is the primary tool to diagnose filter-related issues." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Bug report" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "Report issues with uBlock Origin itself to the \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> issue tracker\u003C/span>. \u003Cu>Requires a GitHub account.\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Troubleshooting Information" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Important:\u003C/b> Potentially private or sensitive information is redacted by default. Redacted information may make it more difficult to solve a problem." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Label the web page as “NSFW” (\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“Not Safe For Work”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Report a filter issue" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Verify that the issue still exists after reloading the problematic webpage." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "The web page…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- Pick an entry --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Shows ads or ad leftovers" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has overlays or other nuisances" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Detects uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Has privacy-related issues" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Malfunctions when uBlock Origin is enabled" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Opens unwanted tabs or windows" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Address of the web page:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Unredact" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Toggle cosmetic filtering" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Toggle JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "تبدیلیاں لاگو کریں" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "برآمد کریں" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Import and append…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "اِن کی اجازت ہے" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/vi/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/vi/messages.json deleted file mode 100644 index a5a04aa..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/vi/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "Áp dụng các thay đổi" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "Bật bộ lọc tùy chỉnh của tôi" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "Xuất" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "Nhập và thêm vào" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "Bộ lọc của tôi" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "Cho phép các bộ lọc tùy chỉnh yêu cầu sự tin cậy" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "Không thêm các bộ lọc từ các nguồn không đáng tin cậy. " - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "Áp dụng các thay đổi" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "Các danh sách bộ lọc tự cập nhật." - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "Đã cũ." - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "Một URL cho mỗi dòng. URL không hợp lệ sẽ âm thầm bị bỏ qua." - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "Quảng cáo" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "Phiền toái" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Các thông báo cookie" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "Tuỳ chỉnh" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "Dựng sẵn" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "Bảo mật, bảo vệ khỏi phần mềm nguy hiểm" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "Đa chức năng" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "Riêng tư" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "Khu vực, ngôn ngữ" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "Tiện ích xã hội" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "Bỏ qua bộ lọc phần tử ẩn chung" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "Bộ lọc phần tử chung là những bộ lọc phần tử được áp dụng cho cho mọi trang web. Kích hoạt tùy chọn này sẽ giảm bớt sức nặng lên cpu và bộ nhớ do không còn phải xử lí các bộ lọc phần tử chung.\n\nTùy chọn này được khuyến nghị kích hoạt trên thiết bị cấu hình thấp." - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "Nhập..." - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "Cập nhật lần cuối: {{ago}}.\nBấm để buộc cập nhật." - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "Danh sách những máy chủ bị chặn" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "Đã dùng {{used}} trên {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "{{netFilterCount}} bộ lọc mạng + {{cosmeticFilterCount}} bộ lọc phần tử ẩn từ:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "Lỗi mạng ngăn tài nguyên được cập nhật." - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "Danh sách bộ lọc" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "Bộ lọc phần tử dùng để ẩn các yếu tố trong một trang web mà gây khó chịu cho người dùng và những yếu tố không thể chặn bằng cách dùng bộ lọc mạng." - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "Phân tích và thi hành bộ lọc phần tử ẩn." - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Dọn tất cả bộ nhớ đệm" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "Ngắt kết nối mạng cho đến khi tất cả các bộ lọc đã được tải" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "Cập nhật ngay" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "Đang cập nhật..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "xem nội dung" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "Sao lưu vào tập tin..." - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "Danh sách các bộ lọc của riêng uBO được lưu trữ miễn phí tại các \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN\u003C/a> sau:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "CDN được chọn ngẫu nhiên khi cần cập nhật danh sách bộ lọc." - }, - "aboutChangelog": { - "description": "", - "message": "Nhật ký thay đổi" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "Mã nguồn (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "Những người đóng góp" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "Các phụ thuộc bên ngoài (tương thích GPLv3):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "Danh sách bộ lọc" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "Giới thiệu" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "Chính sách bảo mật" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "Đặt lại cấu hình mặc định..." - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "Các thiết lập sẽ bị xóa và uBlock₀ sẽ khởi động lại. \n\nThiết lập uBlock₀ về cấu hình ban đầu?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "Khôi phục từ tập tin..." - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "Các thiết lập của bạn sẽ bị ghi đè bởi dữ liệu đã lưu vào lúc {{time}}, và uBlock₀ sẽ khởi động lại. \n\nGhi đè các thiết lập hiện tại bằng dữ liệu đã lưu?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "Không thể đọc dữ liệu hoặc dữ liệu không hợp lệ" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "Mã nguồn" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "Bản dịch" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "Cài đặt nâng cao" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "Cảnh báo! Bạn phải chịu trách nhiệm cho những nguy cơ khi thay đổi các cài đặt nâng cao này." - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ - Trình xem nội dung" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "Bấm để tải" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "Tên thiết bị này:" - }, - "cloudNoData": { - "description": "", - "message": "...\n..." - }, - "cloudPull": { - "description": "tooltip", - "message": "Nhập từ lưu trữ trực tuyến" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "Nhập từ bộ lưu trữ trực tuyến và ghép với các thiết lập hiện tại" - }, - "cloudPush": { - "description": "tooltip", - "message": "Xuất ra lưu trữ trực tuyến" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "Chặn phần tử trong khung ..." - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "Đăng ký danh sách bộ lọc ..." - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "Tạm thời cho phép yếu tố đa phương tiện lớn" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "Xem mã nguồn" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — Bảng điều khiển" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "Cảnh báo! Bạn có các thay đổi chưa được lưu" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "Bỏ qua" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "Ở lại" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "Trở lại" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "Đóng cửa sổ này" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "Tiếp tục" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "Vĩnh viễn" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "Tạm thời" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "Đừng cảnh báo tôi lần nữa về trang web này" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "Tìm thấy trong:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "không có thông số" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "Vô hiệu chặn nghiêm ngặt cho {{hostname}}" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBloc Origin đã chặn tải trang sau:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "Vì bộ lọc sau" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "Trang bị chặn" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "Đây là mục cuối" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} ngày trước" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} giờ trước" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} phút trước" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "một ngày trước" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "một giờ trước" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "một phút trước" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "Lỗi kết nối: {{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "Cuối cùng, đã có một công cụ chặn quảng cáo hiệu quả, tiêu tốn ít CPU và bộ nhớ." - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "tắt" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "Áp dụng các thay đổi" - }, - "genericBytes": { - "description": "", - "message": "byte" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "Sao chép vào bảng tạm" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "Đóng/mở khóa cuộn" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "Phục hồi" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "Chọn tất cả" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "Gửi" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "Lỗi: {{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "Tất cả" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "Tabless" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "lọc mục ghi nhận" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "Tên miền" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "Bộ lọc" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "Loại" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "Xoá nhật ký" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "Thẻ hiện tại" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "Chuyển đổi trình kiểm tra DOM" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "Ngữ cảnh" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "Bộ lọc" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "Danh sách bộ lọc" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "Chi tiết" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "Nguồn khác bên thứ nhất" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "Ngữ cảnh gốc" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "Quy tắc" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "Kiểu" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Đánh dấu" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "Không có định dạng" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "Danh sách" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "Bảng" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki: Các logger" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "Tạm dừng nhật ký (loại bỏ tất cả dữ liệu đang nhập vào)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "Đóng/mở hộp thoại popup" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "Tải lại nội dung thẻ" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Bên thứ nhất" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "Bên thứ ba" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "được phép" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "bị chặn" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "eventful" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "đã sửa đổi" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "Không phải" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "Lựa chọn lọc tác vụ log" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "Đóng/mở lọc tác vụ log" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "Các mục Logger mà không đáp ứng tất cả ba điều kiện dưới đây sẽ được tự động loại bỏ:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} Ngữ cảnh" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} Bộ lọc/quy tắc" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} Partyness" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} Thời gian" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "Ẩn cột:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "Sử dụng {{input}} dòng trên mỗi entry trong chế độ mở rộng theo chiều dọc" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "Bảo tồn các mục từ {{input}} phút trước" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "Giữ lại tối đa {{input}} mục trên mỗi thẻ" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "Bảo tồn nhiều nhất {{input}} trang được tải trên mỗi thẻ" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "Đã phát hiện bộ lọc tĩnh \u003Ccode>{{filter}}\u003C/code> trong:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "Không tìm thấy bộ lọc tĩnh trong bất kỳ danh sách bộ lọc hiện đang được bật" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "Bộ lọc tĩnh" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "{{action}} yêu cầu mạng của {{type}} {{br}}có địa chỉ URL phù hợp {{url}} {{br}}và từ nguồn {{origin}},{{br}}{{importance}} có một bộ lọc loại trừ phù hợp." - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "Cho phép" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "từ mọi nơi" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "mọi loại" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "Chặn" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "loại trừ nếu" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "loại trừ khi" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "từ “{{origin}}”" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "loại “{{type}}”" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "Ngữ cảnh:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "Quy tắc URL" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "Loại:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "Tiếp tục tác vụ nhật ký" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "Chặn phần tử..." - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "Bộ lọc phần tử ẩn" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "Nhấp chuột, Ctrl-nhấp chuột" - }, - "pickerCreate": { - "description": "English: Create", - "message": "Tạo" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "Các bộ lọc mạng" - }, - "pickerPick": { - "description": "English: Pick", - "message": "Chọn" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "Xem trước" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "Thoát" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "script bên thứ nhất" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "bên thứ ba" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "khung" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "khung bên thứ ba" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "CSS/hình ảnh từ bên thứ ba" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "tập lệnh" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "script bên thứ ba" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "tất cả" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "trên trang này" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Đã chặn trên trang này" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "yêu cầu đã chặn" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "từ lúc cài đặt" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Đã chặn từ khi cài đặt" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} hoặc {{percent}}%" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "Tên miền đã kết nối" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} trên tổng {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "tên miền đã kết nối" - }, - "popupImageRulePrompt": { - "description": "", - "message": "hình ảnh" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "script cùng dòng" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "Ít hơn" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "Mở rộng" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "Lọc phần tử hiển thị" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "Thành phần đa phương tiện kích thước lớn" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "Cửa sổ bật lên" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "Phông tải về" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "hoặc" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "Nhấp chuột: vô hiệu/kích hoạt uBlock₀ cho trang này.\nCtrl + nhấp chuột: chỉ vô hiệu uBlock₀ trên trang này." - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "Nhấp chuột để tắt uBlock₀ đối với toàn bộ tên miền này (site). \n\nCtrl + nhấp chuột để tắt uBlock₀ chỉ tại trang này (page)." - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "Nhấp để bật uBlock₀ trên trang này." - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "Mở bảng điều khiển" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "Quy tắc chung: cột này dành cho quy tắc áp dụng cho mọi trang." - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "Quy tắc nội bộ: cột này dành cho quy tắc chỉ áp dụng cho trang hiện tại.\nQuy tắc nội bộ sẽ thay thế quy tắc chung." - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "Mở nhật ký" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Bật/tắt bộ lọc phần tử trên trang này" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Nhấn để tắt bộ lọc phần tử ẩn trên trang này" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "Nhấn để bật bộ lọc phần tử ẩn trên trang này" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Bật tắt chặn yếu tố đa phương tiện lớn trên trang này" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Nhấp để chặn các thành phần đa phương tiện lớn trên trang này" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "Nhấp để ngừng chặn các thành phần đa phương tiện kích thước lớn trên trang này" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Bật/tắt chặn popup của trang này" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Nhấp để chặn tất cả cửa sổ bật lên trên trang này" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "Nhấn để bỏ chặn tất cả cửa sổ bật lên trên trang này" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Bật tắt chặn font từ xa trên trang này" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Nhấp để chặn phông tải về trên trang này" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "Nhấp để không chặn phông tải về trên trang này" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Nhấp để vô hiệu hóa JavaScript trên trang này" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "Nhấp để ngừng vô hiệu hóa JavaScript trên trang này" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "Chuyển sang chế độ chọn phần tử" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "Báo cáo lỗi trên trang này" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "Bấm để hoàn tác thay đổi." - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "Bấm để thay đổi vĩnh viễn." - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "Chuyển sang chế độ chặn phần tử tạm thời" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "Phiên bản" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "Nới lỏng chế độ chặn" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "Xác nhận" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "Chỉnh sửa" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "Huỷ" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "Lưu" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "Xuất ra tập tin" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "Quy tắc cú pháp: \u003Ccode>nguồn đích loại hành động\u003C/code> (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>tài liệu đầy đủ\u003C/a>)." - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "Danh sách quy tắc lọc chủ động." - }, - "rulesImport": { - "description": "", - "message": "Nhập từ tập tin…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "Quy tắc của tôi" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "Quy tắc vĩnh viễn" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "Phục hồi" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "Sắp xếp:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "Đích" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "Nguồn" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "Loại quy tắc" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "Quy tắc tạm thời" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "Hành vi mặc định" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "Những hành vi này có thể thay thế tiêu chuẩn từng trang" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "Nâng cao" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "Những tính năng dành cho người dùng nâng cao" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "Tôi là một người dùng có kinh nghiệm (\u003Ca href='https://github.com/gorhill/uBlock/wiki/Advanced-user-features'>Yêu cầu đọc qua\u003C/a>)" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "cài đặt nâng cao" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "Diện mạo" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "Kích hoạt hỗ trợ lưu trữ trực tuyến" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "Ẩn các phần giữ chỗ của những phần tử bị chặn" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "Thân thiện với người mù màu" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "Dùng menu ngữ cảnh nơi thích hợp" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "Vô hiệu giám sát siêu liên kết" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "Hiển thị số lượng yêu cầu bị chặn trên biểu tượng" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "Lần sao lưu trước:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "Lần phục hồi trước:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "Chặn các báo cáo CSP" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "Vô hiệu lọc phần tử ẩn" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "Chặn yếu tố đa phương tiện lớn hơn {{input}} KB" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "Chặn font từ xa" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "Vô hiệu hóa JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "Cài đặt" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "Vô hiệu tải trước (để chặn bất kỳ kết nối với những yêu cầu mạng đã chặn)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "Tùy chọn màu nền" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "Giao diện" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "Vô hiệu mách nước" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "Chặn tên miền theo dõi mạo danh từ bên thứ ba (CNAME Trackers)" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "Ngặn WebRTC làm lộ địa chỉ IP nội bộ" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "Nhập phím tắt" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "Phím tắt" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "Hiện bảng điều khiển" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "Hiện nhật ký" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — Nhật ký các yêu cầu" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "Bộ nhớ đã dùng: {{value}} byte" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "Đăng ký" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "uBlock₀: Thêm URL dưới đây vào bộ lọc tuỳ biến của bạn?\n\nTên: \"{{title}}\"\nURL: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "Tìm các báo cáo tương tự" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Mở" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "Hỗ trợ" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "Ẩn bớt" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "Tạo báo cáo mới" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "Tài liệu hướng dẫn" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "Đọc tài liệu tại \u003Ccode>uBlock/wiki\u003C/code> để tìm hiểu về các tính năng của uBlock Origin." - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "Hỗ trợ trả lời thắc mắc" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "Bạn có thể tìm thấy câu trả lời cho các thắc mắc của mình hoặc sự trợ giúp cho các vấn đề khác tại subreddit \u003Ccode>/r/uBlockOrigin\u003C/code>." - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "Lỗi bộ lọc/ Trang web lỗi" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cu>Cần tài khoản GitHub:\u003C/u> Báo cáo lỗi bộ lọc với tên miền cụ thể cho \u003Ccode>uBlock Origin\u003C/code> tại \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">đây\u003C/span>. " - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Chú ý:\u003Cb> Tránh sử dụng các bộ chặn có chức năng tương tự song song uBlock Origin vì có thể gây ra lỗi bộ lọc trên nhiều trang web." - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>Mẹo:\u003C/b> Hãy đảm bảo các bộ lọc của bạn được cập nhật đầy đủ. \u003Cspan data-url=\"logger-ui.html#_\">Nhật ký\u003C/span> là một công cụ hữu hiệu để chẩn đoán các lỗi bộ lọc." - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "Báo cáo lỗi" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "\u003Cu>Cần tài khoản GitHub:\u003C/u> Báo cáo lỗi bộ lọc với tên miền cụ thể cho \u003Ccode>uBlock Origin\u003C/code> tại \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">đây\u003C/span>. " - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "Thông tin chẩn đoán lỗi" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "Đây là các thông tin kỹ thuật có thể giúp ích khi khắc phục lỗi." - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>Lưu ý:\u003C/b> Mặc định, các luật và bộ lọc cá nhân được ẩn. Điều này có thể khiến việc khắc phục lỗi khó khăn hơn." - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "Đánh dấu \"NFSW\" - Not Safe For Work cho trang web. \u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">Tìm hiểu về \"Not Safe For Work\"\u003C/a>" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "Báo cáo lỗi bộ lọc cụ thể" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Để tránh tạo thêm gánh nặng cho các tình nguyện viên, hãy chắc chắn rằng chưa từng có vấn đề tương tự được báo cáo." - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "Danh sách bộ lọc được cập nhật hàng ngày. Đảm bảo vấn đề của bạn chưa được giải quyết trong danh sách bộ lọc gần đây nhất." - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "Xác nhận rằng sự cố vẫn tồn tại kể cả sau khi đã tải lại trong web có vấn đề." - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "Trang web..." - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "--Chọn một lỗi--" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "Vẫn hiện quảng cáo hoặc vùng chứa quảng cáo" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "Xuất hiện lớp phủ hoặc các phần tử phiền toái khác" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "Phát hiện uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "Có các cấn đề về quyền riêng tư" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "Trục trặc khi bật uBlock Origin" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "Xuất hiện các tab và cửa sổ ngoài mong muốn" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "Địa chỉ trang web:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "Hiện thêm" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "Bật/tắt lọc phần tử" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "Cho phép/Vô hiệu hoá JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "Không thể lọc đúng cách khi khởi chạy trình duyệt. Tải lại trang để đảm bảo lọc thích hợp." - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "Áp dụng các thay đổi" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Xuất" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-whitelist_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "Nhập và thêm vào" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "Trang tin cậy" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "Các chỉ thị trang web đáng tin cậy ra lệnh trên đó các trang web uBlock Origin sẽ bị vô hiệu hóa. Một mục nhập cho mỗi dòng. Chỉ thị không hợp lệ sẽ được âm thầm bỏ qua và nhận xét ra." - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/zh_CN/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/zh_CN/messages.json deleted file mode 100644 index 3b1ce3f..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/zh_CN/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "应用更改" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "启用自定义过滤规则" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "导出…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "导入并添加…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "自定义静态规则" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "允许需信任的自定义过滤规则" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "请勿添加未信任来源的过滤规则。" - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "应用更改" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "自动更新过滤规则" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "过久未更新。" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "一行一条网址。无效网址将被忽略。" - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "广告" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "骚扰" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie提醒" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "自定义" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "内置" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "恶意软件防护、安全" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "多用途" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "隐私" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "区域、语言" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "社交网络小部件" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "忽略通用元素过滤规则" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "通用元素过滤规则是应用到所有网站的元素过滤规则。启用此选项将消除网站因处理通用元素过滤规则而增加的内存和 CPU 占用。\n\n推荐在低性能设备上启用此选项。" - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "导入…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "上次更新:{{ago}}。\n点击此处要求更新。" - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "被屏蔽站点列表" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} / {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "当前使用了 {{netFilterCount}} 个 URL 过滤规则和 {{cosmeticFilterCount}} 个元素过滤规则:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "资源更新因网络错误受阻。" - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "规则列表" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "元素过滤规则用于隐藏网页中碍眼,且不能被基于网络请求的过滤引擎屏蔽的元素。" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "解析并应用元素过滤规则" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "清除所有缓存" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "过滤规则列表全部加载完成前暂停网络连接" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "立即更新" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "正在更新..." - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "查看内容" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "备份到文件…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO 本身提供的过滤规则列表免费托管于下列 \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN\u003C/a>:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "需要更新过滤规则列表时会随机选用一个 CDN。" - }, - "aboutChangelog": { - "description": "", - "message": "变更日志" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "源代码 (GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "贡献者" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "外部依赖(兼容 GPLv3 协议):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "过滤规则列表" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "关于" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "隐私政策" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "重置为默认设置" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "您的设置将被清除,uBlock₀ 将重新启动。\n\n确定将 uBlock₀ 重置到初始状态?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "从文件还原…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "您的所有设置将被备份于 {{time}} 的数据覆盖,并且 uBlock₀ 将重新启动。\n确定要用备份的数据覆盖全部现有设置吗?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "无法读取数据,或数据无效" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "源代码" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "翻译" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "高级设置" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "警告!更改这些高级设置可能造成问题,请自担风险。" - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — 资源查看器" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "单击以加载" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "此设备名称:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "从云端储存导入" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "从云存储导入并与当前设置合并" - }, - "cloudPush": { - "description": "tooltip", - "message": "导出到云端储存" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "屏蔽框架中的内容…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "订阅规则列表…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "临时允许较大媒体元素" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "查看源代码…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — 控制面板" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "警告!您有未保存的更改" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "忽略" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "留下" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "返回" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "关闭此窗口" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "继续加载" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "永久" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "暂时" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "不再针对此网站作出警告" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "被包含于:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "不带参数" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "不对 {{hostname}} 进行严格屏蔽" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin 阻止了下列页面加载:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "因为下列过滤规则:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "页面已被屏蔽" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "此条目必须是最后一个" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} 天前" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} 小时前" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} 分钟前" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "1 天前" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "1 小时前" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "1 分钟前" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "网络错误:{{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "一款高效的网络请求过滤工具,占用极低的内存和 CPU。" - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "关" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "应用更改" - }, - "genericBytes": { - "description": "", - "message": "字节" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "复制到剪贴板" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "是否启用同步滚动" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "还原" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "全选" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "提交" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "错误:{{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "全部" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "后台网络请求" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "筛选记录条目" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "域名" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "过滤规则" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "类型" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "URL" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "清空记录" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "当前标签页" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "是否打开 DOM 探查器" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "上下文" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "过滤规则" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "规则列表" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "详细资料" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "第一方/第三方" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "根上下文" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "规则" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "类型" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "URL" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "纯文字" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "列表" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "表格" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki:记录器" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "暂停记录(放弃所有传入数据)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "是否打开弹出式面板" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "重新加载此标签页的内容" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "第一方" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "第三方" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "已允许" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "已拦截" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "已应用规则" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "已修改" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "非" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "记录器筛选设定" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "是否启用记录器筛选" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "不符合以下任一状况的记录将会被自动清除:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} 上下文" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} 过滤规则" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} 第一方/第三方" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} 时间" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "隐藏栏位:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "垂直扩展模式下每项使用 {{input}} 行" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "最多保留 {{input}} 分钟以内的记录" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "每个分页最多保留 {{input}} 条记录" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "每个分页最多保留 {{input}} 次内容加载产生的记录" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "静态规则 \u003Ccode>{{filter}}\u003C/code> 被包含于:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "无法在当前启用的任何过滤规则列表中找到静态规则" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "静态规则" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "当 URL 匹配 {{url}},{{br}}且来源于 {{origin}} 时,{{br}}{{action}} {{type}} 的网络请求,{{br}}{{importance}} 有一个匹配的例外规则。" - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "允许" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "任何地方" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "任何类型" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "拦截" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "即使" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "除非" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "来源于 \"{{origin}}\"" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "“{{type}}”类型" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "上下文:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "URL 规则" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "类型:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "取消暂停记录" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "屏蔽元素…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "元素过滤规则" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "单击,Ctrl + 单击" - }, - "pickerCreate": { - "description": "English: Create", - "message": "创建" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "URL 过滤规则" - }, - "pickerPick": { - "description": "English: Pick", - "message": "选择" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "预览" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "放弃" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "第一方脚本" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "第三方" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "框架" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "第三方框架" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "第三方 CSS/图像" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "脚本" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "第三方脚本" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "全部" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "在此页面" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "在此页面已拦截" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "已拦截请求" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "自安装后" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "自安装后已拦截" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "已连接的域名" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} / {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "已连接域名" - }, - "popupImageRulePrompt": { - "description": "", - "message": "图片" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "内联脚本" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "更少" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "更多" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "页面元素过滤" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "大型媒体元素" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "弹出窗口" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "远程字体" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "或" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "单击:对此网站禁用/启用 uBlock₀。\n\nCtrl + 单击:仅对此页面禁用 uBlock₀。" - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "单击:对此网站禁用 uBlock₀ 。\n\nCtrl + 单击:仅在此页面上禁用 uBlock₀ 。" - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "单击:对此网站启用 uBlock₀ 。" - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "打开控制面板" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "全局规则:此列的规则作用于所有网站。" - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "本地规则:此列的规则仅作用于当前网站。\n本地规则优先于全局规则。" - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "打开记录器" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "是否对此网站应用元素过滤规则" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "单击禁用此网站上的元素过滤" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "单击启用针对此网站的元素过滤规则" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "是否屏蔽此网站上较大的媒体元素" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "单击以屏蔽此网站上较大的媒体元素" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "单击取消屏蔽此网站大型媒体元素" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "是否禁止此网站的所有弹出窗口" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "单击屏蔽此网站所有弹窗" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "单击取消屏蔽此网站所有弹窗" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "是否屏蔽此网站的第三方字体" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "单击屏蔽此网站上的远程字体" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "单击取消屏蔽此网站上的远程字体" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "单击禁用此网站的所有脚本" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "单击以取消禁用此网站的所有脚本" - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "进入元素选择器模式" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "报告此网站上的问题" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "点击以撤销更改。" - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "点击以使更改永久生效。" - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "进入临时移除元素模式" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "版本" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "放宽拦截限制" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "提交" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "编辑" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "取消" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "保存" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "导出到文件..." - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "规则语法:\u003Ccode>来源主机名称 目标主机名称 连接请求类型 操作\u003C/code>(\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>完整说明\u003C/a>)。" - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "您的动态过滤规则列表。" - }, - "rulesImport": { - "description": "", - "message": "从文件导入…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "自定义动态规则" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "永久规则" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "恢复" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "排列:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "目标" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "来源" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "规则类型" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "临时规则" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "默认行为" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "这些默认行为可被针对各网站的设置取代" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "高级" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "仅适合专家级用户的功能。" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "我是高级用户" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "高级设置" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "外观" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "启用云端储存" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "隐藏已屏蔽元素的占位符" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "适合色盲人士" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "添加“屏蔽元素”到右键菜单" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "禁用超链接审计(hyperlink auditing)" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "在图标上显示拦截请求数" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "上次备份:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "上次恢复:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "屏蔽 CSP 报告" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "禁用元素过滤规则" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "屏蔽大于 {{input}} KB 的媒体元素" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "屏蔽远程字体" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "禁用 JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "设置" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "禁止预读取(拦截对已屏蔽网络请求的任何连接)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "自定义强调色" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "主题" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "不显示悬停提示" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "将代理域名映射至真实域名" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "防止 WebRTC 泄露本地 IP 地址" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "键入快捷键" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "快捷键" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "显示控制面板" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "显示记录器" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — 记录器" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "已用存储:{{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "订阅" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "添加下列网址到您的自定义规则列表吗?\n\n标题: “{{title}}”\n网址: {{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "查找类似报告" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "打开" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "支持" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "自动删改" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "创建新报告" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "使用说明" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "请至 \u003Ccode>uBlock/wiki\u003C/code> 参阅 uBlock Origin 的所有功能以及使用说明。" - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "疑难解答" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "若想进行普通的咨询或是需要其他帮助,请至 Reddit 的 \u003Ccode>/r/uBlockOrigin\u003C/code> 板块寻求解答。" - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "过滤规则问题/网页被损坏" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "将有关特定网站的过滤规则问题反馈至 \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> 问题跟踪器\u003C/span>。\u003Cu>需要 GitHub 账号。\u003C/u>" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>重要:\u003C/b>避免同时使用类似 uBlock Origin 的过滤软件,这可能导致在特定的网站上遇到过滤规则问题。" - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>小提示:\u003C/b>确保在使用最新的过滤规则列表。\u003Cspan data-url=\"logger-ui.html#_\">日志记录器\u003C/span>是诊断过滤规则问题的首选工具。" - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "错误报告" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "将 uBlock Origin 本身的问题反馈至 \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> 问题跟踪器\u003C/span>。\u003Cu>需要 GitHub 账号。\u003C/u>" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "故障排查相关信息" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "以下生成的技术报告或有助于他人帮你解决问题。" - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>注意:\u003C/b>可能涉及隐私的内容已经过删改,需手动取消。删改部分有可能包括解决问题的关键信息。" - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "将该网页标记为 “NSFW”(\u003Ca href=\"https://wikipedia.org/wiki/Not_safe_for_work\">“工作场所不宜”\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "报告过滤规则的问题" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "请确认该问题未有其他人上报过,避免重复提交报告给维护者带来额外负担。" - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "过滤规则列表每天都会更新。请确认您的问题无法用最新的过滤规则列表解决。" - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "请验证重新加载问题页面后问题依然存在。" - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "该网页…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- 选择其中一项 --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "显示广告或广告残留" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "存在遮盖或类似问题" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "检测出 uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "存在隐私相关问题" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "启用 uBlock Origin 后出现异常" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "打开不需要的标签页或窗口" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "网址:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "取消删改" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "是否应用元素过滤规则" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "JavaScript 开关" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "无法在浏览器启动时正常过滤。请重新加载此页面以确保正常过滤。" - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "应用更改" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "导出…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "导入并添加…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "白名单" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "白名单中的规则匹配的页面不会被 uBlock Origin 过滤或阻挡。每行一条规则。" - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/zh_TW/messages.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/zh_TW/messages.json deleted file mode 100644 index cabeecc..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_locales/zh_TW/messages.json +++ /dev/null @@ -1,1306 +0,0 @@ -{ - "1pApplyChanges": { - "description": "English: Apply changes", - "message": "套用變更" - }, - "1pEnableMyFiltersLabel": { - "description": "Label for the checkbox use to enable/disable 'My filters' list", - "message": "啟用自訂過濾器" - }, - "1pExport": { - "description": "Button in the 'My filters' pane", - "message": "匯出…" - }, - "1pExportFilename": { - "description": "English: my-ublock-static-filters_{{datetime}}.txt", - "message": "my-ublock-static-filters_{{datetime}}.txt" - }, - "1pImport": { - "description": "Button in the 'My filters' pane", - "message": "匯入並加入…" - }, - "1pPageName": { - "description": "appears as tab name in dashboard", - "message": "自訂靜態過濾規則" - }, - "1pTrustMyFiltersLabel": { - "description": "Label for the checkbox use to trust the content of 'My filters' list", - "message": "允許需要信任的自訂過濾規則" - }, - "1pTrustWarning": { - "description": "Warning against copy-pasting filters from random sources", - "message": "切勿添加來歷不明的過濾規則。" - }, - "3pApplyChanges": { - "description": "English: Apply changes", - "message": "套用變更" - }, - "3pAutoUpdatePrompt1": { - "description": "A checkbox in the _3rd-party filters_ pane", - "message": "自動更新過濾規則" - }, - "3pExternalListObsolete": { - "description": "used as a tooltip for the out-of-date icon beside a list", - "message": "過久未更新。" - }, - "3pExternalListsHint": { - "description": "Short information about how to use the textarea to import external filter lists by URL", - "message": "每行一個網址。無效的網址將被忽略。" - }, - "3pGroupAds": { - "description": "Filter lists section name", - "message": "廣告" - }, - "3pGroupAnnoyances": { - "description": "Filter lists section name", - "message": "嫌惡元素" - }, - "3pGroupCookies": { - "description": "Filter lists section name", - "message": "Cookie 通知" - }, - "3pGroupCustom": { - "description": "Filter lists section name", - "message": "自訂" - }, - "3pGroupDefault": { - "description": "Filter lists section name", - "message": "內置" - }, - "3pGroupMalware": { - "description": "Filter lists section name", - "message": "惡意軟體保護及保安" - }, - "3pGroupMultipurpose": { - "description": "Filter lists section name", - "message": "多用途" - }, - "3pGroupPrivacy": { - "description": "Filter lists section name", - "message": "隱私" - }, - "3pGroupRegions": { - "description": "Filter lists section name", - "message": "地區、語言" - }, - "3pGroupSocial": { - "description": "Filter lists section name", - "message": "社交媒體小工具" - }, - "3pIgnoreGenericCosmeticFilters": { - "description": "This will cause uBO to ignore all generic cosmetic filters.", - "message": "忽略一般元素隱藏過濾規則" - }, - "3pIgnoreGenericCosmeticFiltersInfo": { - "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature.", - "message": "「通用元素隱藏過濾規則」是會套用在所有網站上的網頁元素過濾規則。啟用此選項會消除網頁處理此類規則時增加的額外記憶體與 CPU 使用量。\n\n建議在擁有較低效能的裝置上啟用此選項。" - }, - "3pImport": { - "description": "The label for the checkbox used to import external filter lists", - "message": "匯入…" - }, - "3pLastUpdate": { - "description": "used as a tooltip for the clock icon beside a list", - "message": "上次更新:{{ago}}。\n點擊此處以強制更新。" - }, - "3pListsOfBlockedHostsHeader": { - "description": "English: Lists of blocked hosts", - "message": "被阻擋網域的列表" - }, - "3pListsOfBlockedHostsPerListStats": { - "description": "Appears aside each filter list in the _3rd-party filters_ pane", - "message": "{{used}} / {{total}}" - }, - "3pListsOfBlockedHostsPrompt": { - "description": "Appears at the top of the _3rd-party filters_ pane", - "message": "目前已使用 {{netFilterCount}} 個網址過濾規則 + {{cosmeticFilterCount}} 個元素隱藏過濾規則:" - }, - "3pNetworkError": { - "description": "used as a tooltip for error icon beside a list", - "message": "因網路錯誤無法更新資源。" - }, - "3pPageName": { - "description": "appears as tab name in dashboard", - "message": "過濾規則清單" - }, - "3pParseAllABPHideFiltersInfo": { - "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature.", - "message": "「網頁元素過濾規則」用來隱藏網頁中被認為礙眼,且不能被以網路請求為基礎之過濾引擎所阻擋的元素。" - }, - "3pParseAllABPHideFiltersPrompt1": { - "description": "English: Parse and enforce Adblock+ element hiding filters.", - "message": "解析並套用元素隱藏過濾規則" - }, - "3pPurgeAll": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "清除所有快取" - }, - "3pSuspendUntilListsAreLoaded": { - "description": "A checkbox in the 'Filter lists' pane", - "message": "在所有過濾器清單載入完成前暫停網路活動" - }, - "3pUpdateNow": { - "description": "A button in the in the _3rd-party filters_ pane", - "message": "立即更新" - }, - "3pUpdating": { - "description": "used as a tooltip for the spinner icon beside a list", - "message": "更新中…" - }, - "3pViewContent": { - "description": "used as a tooltip for eye icon beside a list", - "message": "查看內容" - }, - "GB": { - "description": "short for 'gigabytes'", - "message": "GB" - }, - "KB": { - "description": "short for 'kilobytes'", - "message": "KB" - }, - "MB": { - "description": "short for 'megabytes'", - "message": "MB" - }, - "aboutBackupDataButton": { - "description": "Text for button to create a backup of all settings", - "message": "備份至檔案…" - }, - "aboutBackupFilename": { - "description": "English: my-ublock-backup_{{datetime}}.txt", - "message": "my-ublock-backup_{{datetime}}.txt" - }, - "aboutCDNs": { - "description": "Shown in the About pane", - "message": "uBO 自家的過濾規則清單由下列 \u003Ca href=\"https://wikipedia.org/wiki/Content_delivery_network\">CDN\u003C/a> 免費代管:" - }, - "aboutCDNsInfo": { - "description": "Shown in the About pane", - "message": "當過濾清單需要更新時,將隨機選擇一組 CDN 連線下載" - }, - "aboutChangelog": { - "description": "", - "message": "更新日誌" - }, - "aboutCode": { - "description": "English: Source code (GPLv3)", - "message": "源碼(GPLv3)" - }, - "aboutContributors": { - "description": "English: Contributors", - "message": "貢獻者" - }, - "aboutDependencies": { - "description": "Shown in the About pane", - "message": "外部相依套件(與 GPLv3 相容):" - }, - "aboutFilterLists": { - "description": "Link text to uBO's own filter lists repo", - "message": "過濾規則清單" - }, - "aboutPageName": { - "description": "appears as tab name in dashboard", - "message": "關於" - }, - "aboutPrivacyPolicy": { - "description": "Link to privacy policy on GitHub (English)", - "message": "隱私權條款" - }, - "aboutResetDataButton": { - "description": "English: Reset to default settings...", - "message": "重設為預設設定…" - }, - "aboutResetDataConfirm": { - "description": "Message asking user to confirm reset", - "message": "您所有的設定都將被移除,並將重新啟動 uBlock₀。\n\n您確定要將 uBlock₀ 回復為原廠設定?" - }, - "aboutRestoreDataButton": { - "description": "English: Restore from file...", - "message": "從檔案還原…" - }, - "aboutRestoreDataConfirm": { - "description": "Message asking user to confirm restore", - "message": "您所有的設定將會被 {{time}} 的備份資料覆蓋,並將重新啟動 uBlock₀。\n\n您確定要用備份資料蓋過目前的所有設定嗎?" - }, - "aboutRestoreDataError": { - "description": "Message to display when an error occurred during restore", - "message": "無法讀取資料,或資料無效" - }, - "aboutSourceCode": { - "description": "Link text to source code repo", - "message": "源碼" - }, - "aboutTranslations": { - "description": "Link text to translations repo", - "message": "翻譯" - }, - "advancedSettingsPageName": { - "description": "Title for the advanced settings page", - "message": "進階設定" - }, - "advancedSettingsWarning": { - "description": "A warning to users at the top of 'Advanced settings' page", - "message": "警告!修改進階設定時,請自負風險。" - }, - "assetViewerPageName": { - "description": "Title for the asset viewer page", - "message": "uBlock₀ — 資源檢視器" - }, - "clickToLoad": { - "description": "Message used in frame placeholders", - "message": "點擊以載入" - }, - "cloudDeviceNamePrompt": { - "description": "used as a prompt for the user to provide a custom device name", - "message": "此裝置的名稱:" - }, - "cloudNoData": { - "description": "", - "message": "…\n…" - }, - "cloudPull": { - "description": "tooltip", - "message": "從雲端儲存空間匯入" - }, - "cloudPullAndMerge": { - "description": "tooltip", - "message": "自雲端匯入,並與目前設定合併" - }, - "cloudPush": { - "description": "tooltip", - "message": "匯出至雲端儲存空間" - }, - "contextMenuBlockElementInFrame": { - "description": "An entry in the browser's contextual menu", - "message": "阻擋框架中的內容…" - }, - "contextMenuSubscribeToList": { - "description": "An entry in the browser's contextual menu", - "message": "訂閱過濾規則清單…" - }, - "contextMenuTemporarilyAllowLargeMediaElements": { - "description": "A context menu entry, present when large media elements have been blocked on the current site", - "message": "暫時允許大型媒體元素" - }, - "contextMenuViewSource": { - "description": "A context menu entry, to view the source code of the target resource", - "message": "檢視源碼…" - }, - "dashboardName": { - "description": "English: uBlock₀ — Dashboard", - "message": "uBlock₀ — 控制台" - }, - "dashboardUnsavedWarning": { - "description": "A warning in the dashboard when navigating away from unsaved changes", - "message": "警告!變更尚未儲存。" - }, - "dashboardUnsavedWarningIgnore": { - "description": "Label for button to ignore unsaved changes", - "message": "忽略" - }, - "dashboardUnsavedWarningStay": { - "description": "Label for button to prevent navigating away from unsaved changes", - "message": "留下" - }, - "docblockedBack": { - "description": "English: Go back", - "message": "返回" - }, - "docblockedClose": { - "description": "English: Close this window", - "message": "關閉此視窗" - }, - "docblockedDisable": { - "description": "Button text to navigate to the blocked page", - "message": "繼續載入" - }, - "docblockedDisablePermanent": { - "description": "English: Permanently", - "message": "永久" - }, - "docblockedDisableTemporary": { - "description": "English: Temporarily", - "message": "暫時" - }, - "docblockedDontWarn": { - "description": "Label for checkbox in document-blocked page", - "message": "不再針對此網站作出警告" - }, - "docblockedFoundIn": { - "description": "English: List of filter list names follows", - "message": "在下列清單找到:" - }, - "docblockedNoParamsPrompt": { - "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png", - "message": "不帶參數" - }, - "docblockedProceed": { - "description": "English: Disable strict blocking for {{hostname}} ...", - "message": "停止針對 {{hostname}} 的嚴格封鎖" - }, - "docblockedPrompt1": { - "description": "Used in the strict-blocking page", - "message": "uBlock Origin 已防止下列頁面載入:" - }, - "docblockedPrompt2": { - "description": "Used in the strict-blocking page", - "message": "因為下列過濾規則:" - }, - "docblockedTitle": { - "description": "Used as a title for the document-blocked page", - "message": "已封鎖頁面" - }, - "dummy": { - "description": "so we dont need to deal with comma for last entry", - "message": "此條目須為最後一個" - }, - "elapsedManyDaysAgo": { - "description": "English: {{value}} days ago", - "message": "{{value}} 天前" - }, - "elapsedManyHoursAgo": { - "description": "English: {{value}} hours ago", - "message": "{{value}} 小時前" - }, - "elapsedManyMinutesAgo": { - "description": "English: {{value}} minutes ago", - "message": "{{value}} 分鐘前" - }, - "elapsedOneDayAgo": { - "description": "English: a day ago", - "message": "1 天前" - }, - "elapsedOneHourAgo": { - "description": "English: an hour ago", - "message": "1 小時前" - }, - "elapsedOneMinuteAgo": { - "description": "English: a minute ago", - "message": "1 分鐘前" - }, - "errorCantConnectTo": { - "description": "English: Network error: {{msg}}", - "message": "網路錯誤:{{msg}}" - }, - "extName": { - "description": "extension name.", - "message": "uBlock Origin" - }, - "extShortDesc": { - "description": "this will be in the Chrome web store: must be 132 characters or less", - "message": "終於,有款僅使用少量 CPU 及記憶體的高效率阻擋器。" - }, - "fennecMenuItemBlockingOff": { - "description": "Firefox-specific: appears as 'uBlock₀ (off)'", - "message": "關閉" - }, - "genericApplyChanges": { - "description": "for generic 'Apply changes' buttons", - "message": "套用變更" - }, - "genericBytes": { - "description": "", - "message": "位元組" - }, - "genericCopyToClipboard": { - "description": "Label for buttons used to copy something to the clipboard", - "message": "複製到剪貼簿" - }, - "genericMergeViewScrollLock": { - "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane", - "message": "切換是否啟用同步捲動" - }, - "genericRevert": { - "description": "for generic 'Revert' buttons", - "message": "還原" - }, - "genericSelectAll": { - "description": "Label for buttons used to select all text in editor", - "message": "全選" - }, - "genericSubmit": { - "description": "for generic 'Submit' buttons", - "message": "送出" - }, - "linterMainReport": { - "description": "Summary of number of errors as reported by the linter ", - "message": "錯誤:{{count}}" - }, - "logAll": { - "description": "Appears in the logger's tab selector", - "message": "全部" - }, - "logBehindTheScene": { - "description": "Pretty name for behind-the-scene network requests", - "message": "背景網路連線請求" - }, - "logFilterPrompt": { - "description": "Placeholder string for logger output filtering input field", - "message": "篩選記錄條目" - }, - "logRequestsHeaderDomain": { - "description": "English: Domain", - "message": "網域" - }, - "logRequestsHeaderFilter": { - "description": "English: Filter", - "message": "過濾規則" - }, - "logRequestsHeaderType": { - "description": "English: Type", - "message": "類型" - }, - "logRequestsHeaderURL": { - "description": "English: URL", - "message": "網址" - }, - "loggerClearTip": { - "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger", - "message": "清除記錄" - }, - "loggerCurrentTab": { - "description": "Appears in the logger's tab selector", - "message": "目前分頁" - }, - "loggerDomInspectorTip": { - "description": "Tooltip for the DOM inspector button in the logger page", - "message": "切換是否啟用 DOM 檢視器" - }, - "loggerEntryDetailsContext": { - "description": "Label to identify a context field (typically a hostname)", - "message": "上下文" - }, - "loggerEntryDetailsFilter": { - "description": "Label to identify a filter field", - "message": "過濾規則" - }, - "loggerEntryDetailsFilterList": { - "description": "Label to identify a filter list field", - "message": "過濾規則清單" - }, - "loggerEntryDetailsHeader": { - "description": "Small header to identify the 'Details' pane for a specific logger entry", - "message": "詳細資料" - }, - "loggerEntryDetailsPartyness": { - "description": "Label to identify a field providing partyness information", - "message": "第一方/第三方" - }, - "loggerEntryDetailsRootContext": { - "description": "Label to identify a root context field (typically a hostname)", - "message": "根上下文" - }, - "loggerEntryDetailsRule": { - "description": "Label to identify a rule field", - "message": "規則" - }, - "loggerEntryDetailsType": { - "description": "Label to identify the type of an entry", - "message": "類型" - }, - "loggerEntryDetailsURL": { - "description": "Label to identify the URL of an entry", - "message": "網址" - }, - "loggerExportEncodeMarkdown": { - "description": "Label for radio-button to pick export text format", - "message": "Markdown" - }, - "loggerExportEncodePlain": { - "description": "Label for radio-button to pick export text format", - "message": "純文字" - }, - "loggerExportFormatList": { - "description": "Label for radio-button to pick export format", - "message": "清單" - }, - "loggerExportFormatTable": { - "description": "Label for radio-button to pick export format", - "message": "表格" - }, - "loggerInfoTip": { - "description": "Tooltip for the top-right info label in the logger page", - "message": "uBlock Origin wiki:記錄器" - }, - "loggerPauseTip": { - "description": "Tooltip for the pause button in the logger page", - "message": "暫停記錄(捨棄所有傳入資料)" - }, - "loggerPopupPanelTip": { - "description": "Tooltip for the popup panel button in the logger page", - "message": "切換是否啟用彈出式面板" - }, - "loggerReloadTip": { - "description": "Tooltip for the reload button in the logger page", - "message": "重新載入分頁內容" - }, - "loggerRowFiltererBuiltin1p": { - "description": "A keyword in the built-in row filtering expression", - "message": "第一方" - }, - "loggerRowFiltererBuiltin3p": { - "description": "A keyword in the built-in row filtering expression", - "message": "第三方" - }, - "loggerRowFiltererBuiltinAllowed": { - "description": "A keyword in the built-in row filtering expression", - "message": "已允許" - }, - "loggerRowFiltererBuiltinBlocked": { - "description": "A keyword in the built-in row filtering expression", - "message": "已封鎖" - }, - "loggerRowFiltererBuiltinEventful": { - "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)", - "message": "已套用規則" - }, - "loggerRowFiltererBuiltinModified": { - "description": "A keyword in the built-in row filtering expression", - "message": "已修改" - }, - "loggerRowFiltererBuiltinNot": { - "description": "A keyword in the built-in row filtering expression", - "message": "非" - }, - "loggerRowFiltererBuiltinTip": { - "description": "Tooltip for the button to bring up logger output filtering options", - "message": "記錄器篩選設定" - }, - "loggerRowFiltererButtonTip": { - "description": "Tooltip for the row filterer button in the logger page", - "message": "切換是否啟用記錄篩選" - }, - "loggerSettingDiscardPrompt": { - "description": "Logger setting: A sentence to describe the purpose of the settings below", - "message": "未符合以下所有條件的記錄將會被自動捨棄:" - }, - "loggerSettingHideColumnContext": { - "description": "A label for the context column", - "message": "{{input}} 上下文" - }, - "loggerSettingHideColumnFilter": { - "description": "A label for the filter or rule column", - "message": "{{input}} 過濾規則" - }, - "loggerSettingHideColumnPartyness": { - "description": "A label for the partyness column", - "message": "{{input}} 第一方/第三方" - }, - "loggerSettingHideColumnTime": { - "description": "A label for the time column", - "message": "{{input}} 時間" - }, - "loggerSettingHideColumnsPrompt": { - "description": "Logger settings: a sentence to describe the purpose of the checkboxes below", - "message": "隱藏欄位:" - }, - "loggerSettingPerEntryLineCount": { - "description": "A logger setting", - "message": "在垂直延展模式中每條記錄顯示 {{input}} 行" - }, - "loggerSettingPerEntryMaxAge": { - "description": "A logger setting", - "message": "最多保留 {{input}} 分鐘以內的記錄" - }, - "loggerSettingPerTabMaxEntries": { - "description": "A logger setting", - "message": "每個分頁最多保留 {{input}} 條記錄" - }, - "loggerSettingPerTabMaxLoads": { - "description": "A logger setting", - "message": "每個分頁最多保留 {{input}} 次重新載入該頁所產生的記錄" - }, - "loggerStaticFilteringFinderSentence1": { - "description": "Below this sentence, the filter list(s) in which the filter was found", - "message": "在下列清單中找到靜態過濾規則 \u003Ccode>{{filter}}\u003C/code>:" - }, - "loggerStaticFilteringFinderSentence2": { - "description": "Message to show when a filter cannot be found in any filter lists", - "message": "無法在任何目前已啟用的過濾規則清單中找到靜態過濾規則" - }, - "loggerStaticFilteringHeader": { - "description": "Small header to identify the static filtering section", - "message": "靜態過濾" - }, - "loggerStaticFilteringSentence": { - "description": "Used in the static filtering wizard", - "message": "當網址符合 {{url}},{{br}}並且來自 {{origin}} 時,{{br}}{{action}} {{type}} 的網路請求,{{br}}{{importance}} 已有符合的過濾例外規則。" - }, - "loggerStaticFilteringSentencePartAllow": { - "description": "Used in the static filtering wizard", - "message": "允許" - }, - "loggerStaticFilteringSentencePartAnyOrigin": { - "description": "Used in the static filtering wizard", - "message": "來自任何地方" - }, - "loggerStaticFilteringSentencePartAnyType": { - "description": "Used in the static filtering wizard", - "message": "任何類型" - }, - "loggerStaticFilteringSentencePartBlock": { - "description": "Used in the static filtering wizard", - "message": "封鎖" - }, - "loggerStaticFilteringSentencePartImportant": { - "description": "Used in the static filtering wizard", - "message": "就算" - }, - "loggerStaticFilteringSentencePartNotImportant": { - "description": "Used in the static filtering wizard", - "message": "除非" - }, - "loggerStaticFilteringSentencePartOrigin": { - "description": "Used in the static filtering wizard", - "message": "來自「{{origin}}」" - }, - "loggerStaticFilteringSentencePartType": { - "description": "Used in the static filtering wizard", - "message": "{{type}} 類型" - }, - "loggerURLFilteringContextLabel": { - "description": "Label for the context selector", - "message": "上下文:" - }, - "loggerURLFilteringHeader": { - "description": "Small header to identify the dynamic URL filtering section", - "message": "網址規則" - }, - "loggerURLFilteringTypeLabel": { - "description": "Label for the type selector", - "message": "類型:" - }, - "loggerUnpauseTip": { - "description": "Tooltip for the play button in the logger page", - "message": "取消暫停記錄" - }, - "pickerContextMenuEntry": { - "description": "An entry in the browser's contextual menu", - "message": "阻擋元素…" - }, - "pickerCosmeticFilters": { - "description": "English: Cosmetic filters", - "message": "元素隱藏過濾規則" - }, - "pickerCosmeticFiltersHint": { - "description": "English: Click, Ctrl-click", - "message": "點擊,按住 Ctrl 鍵點擊" - }, - "pickerCreate": { - "description": "English: Create", - "message": "建立" - }, - "pickerNetFilters": { - "description": "English: header for a type of filter in the element picker dialog", - "message": "網址過濾規則" - }, - "pickerPick": { - "description": "English: Pick", - "message": "選擇" - }, - "pickerPreview": { - "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page", - "message": "預覽" - }, - "pickerQuit": { - "description": "English: Quit", - "message": "放棄" - }, - "popup1pScriptRulePrompt": { - "description": "", - "message": "第一方腳本" - }, - "popup3pAnyRulePrompt": { - "description": "", - "message": "第三方" - }, - "popup3pFrameFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "框架" - }, - "popup3pFrameRulePrompt": { - "description": "", - "message": "第三方框架" - }, - "popup3pPassiveRulePrompt": { - "description": "", - "message": "第三方 CSS / 圖片" - }, - "popup3pScriptFilter": { - "description": "Appears as an option to filter out firewall rows", - "message": "指令碼" - }, - "popup3pScriptRulePrompt": { - "description": "", - "message": "第三方腳本" - }, - "popupAnyRulePrompt": { - "description": "", - "message": "全部" - }, - "popupBlockedOnThisPagePrompt": { - "description": "English: on this page", - "message": "在此頁面" - }, - "popupBlockedOnThisPage_v2": { - "description": "For the new mobile-friendly popup design", - "message": "此頁面已阻擋" - }, - "popupBlockedRequestPrompt": { - "description": "English: requests blocked", - "message": "已阻擋的連線請求" - }, - "popupBlockedSinceInstallPrompt": { - "description": "English: since install", - "message": "自安裝後" - }, - "popupBlockedSinceInstall_v2": { - "description": "For the new mobile-friendly popup design", - "message": "安裝後已阻擋" - }, - "popupBlockedStats": { - "description": "Example: 15 (13%)", - "message": "{{count}} ({{percent}}%)" - }, - "popupDomainsConnected_v2": { - "description": "For the new mobile-friendly popup design", - "message": "已連接的網域" - }, - "popupHitDomainCount": { - "description": "appears in popup", - "message": "{{count}} / {{total}}" - }, - "popupHitDomainCountPrompt": { - "description": "appears in popup", - "message": "已連結的網域" - }, - "popupImageRulePrompt": { - "description": "", - "message": "圖片" - }, - "popupInlineScriptRulePrompt": { - "description": "", - "message": "內聯腳本" - }, - "popupLessButton_v2": { - "description": "Label to be used to hide popup panel sections", - "message": "更少" - }, - "popupMoreButton_v2": { - "description": "Label to be used to show popup panel sections", - "message": "更多" - }, - "popupNoCosmeticFiltering_v2": { - "description": "Caption for the no-cosmetic-filtering per-site switch", - "message": "網頁元素過濾" - }, - "popupNoLargeMedia_v2": { - "description": "Caption for the no-large-media per-site switch", - "message": "大型媒體元素" - }, - "popupNoPopups_v2": { - "description": "Caption for the no-popups per-site switch", - "message": "彈出式視窗" - }, - "popupNoRemoteFonts_v2": { - "description": "Caption for the no-remote-fonts per-site switch", - "message": "遠端字體" - }, - "popupNoScripting_v2": { - "description": "Caption for the no-scripting per-site switch", - "message": "JavaScript" - }, - "popupOr": { - "description": "English: or", - "message": "或" - }, - "popupPowerSwitchInfo": { - "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", - "message": "點擊:在此網站 停用/啟用 uBlock₀ 。\n\nCtrl + 點擊:僅在此頁面停用 uBlock₀ 。" - }, - "popupPowerSwitchInfo1": { - "description": "Message to be read by screen readers", - "message": "點擊:在此網站停用 uBlock₀ 。\n\nCtrl + 點擊:僅在此頁面停用 uBlock₀ 。" - }, - "popupPowerSwitchInfo2": { - "description": "Message to be read by screen readers", - "message": "點擊以在此網站啟用 uBlock₀ 。" - }, - "popupTipDashboard": { - "description": "English: Click to open the dashboard", - "message": "開啟控制台" - }, - "popupTipGlobalRules": { - "description": "Tooltip when hovering the top-most cell of the global-rules column.", - "message": "全域規則:此欄位的規則會套用至所有網站。" - }, - "popupTipLocalRules": { - "description": "Tooltip when hovering the top-most cell of the local-rules column.", - "message": "區域規則:此欄位的規則僅會套用至目前網站。\n區域規則會覆蓋過全域規則。" - }, - "popupTipLog": { - "description": "Tooltip used for the logger icon in the panel", - "message": "開啟記錄器" - }, - "popupTipNoCosmeticFiltering": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "切換是否在此網站過濾網頁元素" - }, - "popupTipNoCosmeticFiltering1": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "點擊以停用此網站的網頁元素過濾" - }, - "popupTipNoCosmeticFiltering2": { - "description": "Tooltip for the no-cosmetic-filtering per-site switch", - "message": "點擊以啟用此網站的網頁元素過濾" - }, - "popupTipNoLargeMedia": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "切換是否封鎖此網站的大型媒體元素" - }, - "popupTipNoLargeMedia1": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "點擊以封鎖此網站的大型媒體元素" - }, - "popupTipNoLargeMedia2": { - "description": "Tooltip for the no-large-media per-site switch", - "message": "點擊以停止封鎖此網站的大型媒體元素" - }, - "popupTipNoPopups": { - "description": "Tooltip for the no-popups per-site switch", - "message": "切換是否阻擋此網站的所有彈出型視窗" - }, - "popupTipNoPopups1": { - "description": "Tooltip for the no-popups per-site switch", - "message": "點擊以阻擋此網站的所有彈出式視窗" - }, - "popupTipNoPopups2": { - "description": "Tooltip for the no-popups per-site switch", - "message": "點擊以停止阻擋此網站的所有彈出式視窗" - }, - "popupTipNoRemoteFonts": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "切換是否封鎖此網站的遠端字體" - }, - "popupTipNoRemoteFonts1": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "點擊以封鎖此網站的遠端字型" - }, - "popupTipNoRemoteFonts2": { - "description": "Tooltip for the no-remote-fonts per-site switch", - "message": "點擊以解除封鎖此網站的遠端字體" - }, - "popupTipNoScripting1": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "點擊以停用此網站的 JavaScript" - }, - "popupTipNoScripting2": { - "description": "Tooltip for the no-scripting per-site switch", - "message": "點擊以重新啟用此網站的 JavaScript " - }, - "popupTipPicker": { - "description": "English: Enter element picker mode", - "message": "進入元素選擇器模式" - }, - "popupTipReport": { - "description": "Tooltip used for the 'chat' icon in the panel", - "message": "回報此網站的問題" - }, - "popupTipRevertRules": { - "description": "Tooltip when hovering over the eraser in the dynamic filtering pane.", - "message": "點擊以撤銷變更。" - }, - "popupTipSaveRules": { - "description": "Tooltip when hovering over the padlock in the dynamic filtering pane.", - "message": "點擊此處讓變更永久生效。" - }, - "popupTipZapper": { - "description": "Tooltip for the element-zapper icon in the popup panel", - "message": "進入元素臨時移除模式" - }, - "popupVersion": { - "description": "Example of use: Version 1.26.4", - "message": "版本" - }, - "relaxBlockingMode": { - "description": "Label for keyboard shortcut used to relax blocking mode", - "message": "放寬封鎖量模式" - }, - "rulesCommit": { - "description": "This will persist temporary rules", - "message": "提交" - }, - "rulesDefaultFileName": { - "description": "default file name to use", - "message": "my-ublock-dynamic-rules_{{datetime}}.txt" - }, - "rulesEdit": { - "description": "Will enable manual-edit mode (textarea)", - "message": "編輯" - }, - "rulesEditDiscard": { - "description": "Will discard manually-edited content and exit manual-edit mode", - "message": "捨棄" - }, - "rulesEditSave": { - "description": "Will save manually-edited content and exit manual-edit mode", - "message": "儲存" - }, - "rulesExport": { - "description": "Button in the 'My rules' pane", - "message": "匯出至檔案…" - }, - "rulesFormatHint": { - "description": "English: dynamic rule syntax and full documentation.", - "message": "規則語法:\u003Ccode>來源主機名稱 目標主機名稱 連線請求類型 操作\u003C/code>(\u003Ca href='https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-rule-syntax'>完整說明\u003C/a>)。" - }, - "rulesHint": { - "description": "English: List of your dynamic filtering rules.", - "message": "您的動態過濾規則清單。" - }, - "rulesImport": { - "description": "", - "message": "從檔案匯入…" - }, - "rulesPageName": { - "description": "appears as tab name in dashboard", - "message": "自訂動態過濾規則" - }, - "rulesPermanentHeader": { - "description": "header", - "message": "永久規則" - }, - "rulesRevert": { - "description": "This will remove all temporary rules", - "message": "還原" - }, - "rulesSort": { - "description": "English: label for sort option.", - "message": "排序:" - }, - "rulesSortByDestination": { - "description": "English: a sort option for list of rules.", - "message": "目標" - }, - "rulesSortBySource": { - "description": "English: a sort option for list of rules.", - "message": "來源" - }, - "rulesSortByType": { - "description": "English: a sort option for list of rules.", - "message": "規則類型" - }, - "rulesTemporaryHeader": { - "description": "header", - "message": "臨時規則" - }, - "settingPerSiteSwitchGroup": { - "description": "", - "message": "預設行為" - }, - "settingPerSiteSwitchGroupSynopsis": { - "description": "", - "message": "這些預設行為可再依各網站調整" - }, - "settingsAdvanced": { - "description": "Section for controlling advanced-user settings", - "message": "進階" - }, - "settingsAdvancedSynopsis": { - "description": "Description of section controlling advanced-user settings", - "message": "僅適合技術性使用者的功能" - }, - "settingsAdvancedUserPrompt": { - "description": "Checkbox to let user access advanced, technical features", - "message": "我是進階使用者" - }, - "settingsAdvancedUserSettings": { - "description": "For the tooltip of a link which gives access to advanced settings", - "message": "進階設定" - }, - "settingsAppearance": { - "description": "Section for controlling user interface appearance", - "message": "外觀" - }, - "settingsCloudStorageEnabledPrompt": { - "description": "", - "message": "啟用雲端儲存空間的支援" - }, - "settingsCollapseBlockedPrompt": { - "description": "English: Hide placeholders of blocked elements", - "message": "隱藏已阻擋元素的佔位元素" - }, - "settingsColorBlindPrompt": { - "description": "English: Color-blind friendly", - "message": "使用對色盲友善的色彩" - }, - "settingsContextMenuPrompt": { - "description": "English: Make use of context menu where appropriate", - "message": "將 uBlock Origin 加入右鍵選單" - }, - "settingsHyperlinkAuditingDisabledPrompt": { - "description": "English: ", - "message": "停用超連結監測" - }, - "settingsIconBadgePrompt": { - "description": "English: Show the number of blocked requests on the icon", - "message": "在圖示上顯示被阻擋的連線請求的數量" - }, - "settingsLastBackupPrompt": { - "description": "English: Last backup:", - "message": "上次備份:" - }, - "settingsLastRestorePrompt": { - "description": "English: Last restore:", - "message": "上次還原:" - }, - "settingsNoCSPReportsPrompt": { - "description": "background information: https://github.com/gorhill/uBlock/issues/3150", - "message": "封鎖內容安全策略報告" - }, - "settingsNoCosmeticFilteringPrompt": { - "description": "", - "message": "停用元素隱藏過濾規則" - }, - "settingsNoLargeMediaPrompt": { - "description": "", - "message": "封鎖超過 {{input}} KB 的媒體元素" - }, - "settingsNoRemoteFontsPrompt": { - "description": "", - "message": "封鎖遠端字體" - }, - "settingsNoScriptingPrompt": { - "description": "The default state for the per-site no-scripting switch", - "message": "停用 JavaScript" - }, - "settingsPageName": { - "description": "appears as tab name in dashboard", - "message": "設定" - }, - "settingsPrefetchingDisabledPrompt": { - "description": "English: ", - "message": "停用「預先取回連結」功能(避免連接至已阻擋的網路請求)" - }, - "settingsThemeAccent0Label": { - "description": "Label for checkbox to pick an accent color", - "message": "自訂強調顏色" - }, - "settingsThemeLabel": { - "description": "Label for checkbox to enable a custom dark theme", - "message": "佈景主題" - }, - "settingsTooltipsPrompt": { - "description": "A checkbox in the Settings pane", - "message": "停用提示框" - }, - "settingsUncloakCnamePrompt": { - "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513", - "message": "揭露網域真實名稱" - }, - "settingsWebRTCIPAddressHiddenPrompt": { - "description": "English: ", - "message": "防止 WebRTC 洩漏本地 IP 位址" - }, - "shortcutCapturePlaceholder": { - "description": "Placeholder string for input field used to capture a keyboard shortcut", - "message": "鍵入快速鍵" - }, - "shortcutsPageName": { - "description": "appears as tab name in dashboard", - "message": "快速鍵" - }, - "showDashboardButton": { - "description": "Firefox/Fennec-specific: Show Dashboard", - "message": "顯示控制台" - }, - "showNetworkLogButton": { - "description": "Firefox/Fennec-specific: Show Logger", - "message": "顯示記錄器" - }, - "statsPageName": { - "description": "Title for the logger window", - "message": "uBlock₀ — 記錄器" - }, - "storageUsed": { - "description": " In Setting pane, renders as (example): Storage used: 13.2 MB", - "message": "儲存空間用量:{{value}} {{unit}}" - }, - "subscribeButton": { - "description": "For the button used to subscribe to a filter list", - "message": "訂閱" - }, - "subscriberConfirm": { - "description": "No longer used", - "message": "確定要新增下列網址至自訂過濾規則清單?\n\n標題:「{{title}}」\n網址:{{url}}" - }, - "supportFindSpecificButton": { - "description": "A clickable link in the filter issue reporter section", - "message": "尋找類似報告" - }, - "supportOpenButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "開啟" - }, - "supportPageName": { - "description": "appears as tab name in dashboard", - "message": "支援" - }, - "supportRedact": { - "description": "Text for 'Redact' button", - "message": "替換" - }, - "supportReportSpecificButton": { - "description": "Text for button which open an external webpage in Support pane", - "message": "建立新報告" - }, - "supportS1H": { - "description": "Header of 'Documentation' section in Support pane", - "message": "文件" - }, - "supportS1P1": { - "description": "First paragraph of 'Documentation' section in Support pane", - "message": "欲了解 uBlock Origin 所有的功能,請閱讀 \u003Ccode>uBlock/wiki\u003C/code> 中的文件。" - }, - "supportS2H": { - "description": "Header of 'Questions and support' section in Support pane", - "message": "問題與支援" - }, - "supportS2P1": { - "description": "First paragraph of 'Questions and support' section in Support pane", - "message": "如有問題或需要其他類型的幫助,可以在 \u003Ccode>/r/uBlockOrigin\u003C/code> subreddit 獲得協助與解答。" - }, - "supportS3H": { - "description": "Header of 'Filter issues' section in Support pane", - "message": "過濾器問題 / 網站被破壞" - }, - "supportS3P1": { - "description": "First paragraph of 'Filter issues' section in Support pane", - "message": "請到 \u003Cspan data-url=\"https://github.com/uBlockOrigin/uAssets/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uAssets\u003C/code> 議題追蹤系統\u003C/span>回報特定網站的過濾器問題。需要 GitHub 帳號。" - }, - "supportS3P2": { - "description": "Second paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>特別注意:\u003C/b>不要把其他同性質的阻擋工具跟 uBlock Origin 混用,否則可能會在特定網站造成過濾問題。" - }, - "supportS3P3": { - "description": "Third paragraph of 'Filter issues' section in Support pane", - "message": "\u003Cb>小提示:\u003C/b>請確定您的過濾器清單已經更新至最新版本。我們主要用\u003Cspan data-url=\"logger-ui.html#_\">「記錄器」\u003C/span>來分析過濾器相關問題。" - }, - "supportS4H": { - "description": "Header of 'Bug report' section in Support pane", - "message": "錯誤報告" - }, - "supportS4P1": { - "description": "First paragraph of 'Bug report' section in Support pane", - "message": "請到 \u003Cspan data-url=\"https://github.com/uBlockOrigin/uBlock-issues/issues?q=is%3Aissue\">\u003Ccode>uBlockOrigin/uBlock-issue\u003C/code> 議題追蹤系統\u003C/span>回報 uBlock Origin 本身的問題。需要 GitHub 帳號。" - }, - "supportS5H": { - "description": "Header of 'Troubleshooting Information' section in Support pane", - "message": "疑難排解資訊" - }, - "supportS5P1": { - "description": "First paragraph of 'Troubleshooting Information' section in Support pane", - "message": "以下是志願者嘗試幫您解決問題時,可能會用到的技術資訊:" - }, - "supportS5P2": { - "description": "Second paragraph of 'Troubleshooting Information' section in Support pane", - "message": "\u003Cb>特別注意:\u003C/b>預設情況下,潛在私人或敏感的資料會被略去。略去的資訊可能會讓問題更難獲解決。" - }, - "supportS6Checkbox1": { - "description": "A checkbox to use for NSFW sites", - "message": "將網頁標記為「NSFW」(\u003Ca href=\"https://zh.wikipedia.org/wiki/NSFW\">工作場所不宜\u003C/a>)" - }, - "supportS6H": { - "description": "Header of 'Report a filter issue' section in Support pane", - "message": "回報過濾規則的問題" - }, - "supportS6P1S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "為免給志願者帶來額外負擔,請先檢查問題有沒有被回報過,避免重複回報。" - }, - "supportS6P2S1": { - "description": "A paragraph in the filter issue reporter section", - "message": "過濾器清單每天更新,請確保問題尚未在最新版本中解決。" - }, - "supportS6P2S2": { - "description": "A paragraph in the filter issue reporter section", - "message": "重新載入有問題的網頁後,驗證問題是否仍然存在。" - }, - "supportS6Select1": { - "description": "Label for widget to select type of issue", - "message": "這個網頁…" - }, - "supportS6Select1Option0": { - "description": "An entry in the widget used to select the type of issue", - "message": "-- 挑選一種情況 --" - }, - "supportS6Select1Option1": { - "description": "An entry in the widget used to select the type of issue", - "message": "會顯示廣告或殘留空位" - }, - "supportS6Select1Option2": { - "description": "An entry in the widget used to select the type of issue", - "message": "含有覆蓋物或其他滋擾物" - }, - "supportS6Select1Option3": { - "description": "An entry in the widget used to select the type of issue", - "message": "偵測到 uBlock Origin" - }, - "supportS6Select1Option4": { - "description": "An entry in the widget used to select the type of issue", - "message": "有隱私權相關問題" - }, - "supportS6Select1Option5": { - "description": "An entry in the widget used to select the type of issue", - "message": "開啟 uBlock Origin 的時候運作不正常" - }, - "supportS6Select1Option6": { - "description": "An entry in the widget used to select the type of issue", - "message": "會開啟不需要的分頁或視窗" - }, - "supportS6URL": { - "description": "Label for the URL of the page", - "message": "網址:" - }, - "supportUnredact": { - "description": "Text for 'Unredact' button", - "message": "不要替換" - }, - "toggleCosmeticFiltering": { - "description": "Label for keyboard shortcut used to toggle cosmetic filtering", - "message": "切換是否啟用元素隱藏過濾規則" - }, - "toggleJavascript": { - "description": "Label for keyboard shortcut used to toggle no-scripting switch", - "message": "切換 JavaScript" - }, - "unprocessedRequestTooltip": { - "description": "A warning which will appear in the popup panel if needed", - "message": "無法在瀏覽器啟動時正確過濾頁面。請重新載入以確保過濾正常。" - }, - "whitelistApply": { - "description": "English: Apply changes", - "message": "套用變更" - }, - "whitelistExport": { - "description": "Button in the 'Trusted sites' pane", - "message": "匯出…" - }, - "whitelistExportFilename": { - "description": "The default filename to use for import/export purpose", - "message": "my-ublock-trusted-sites_{{datetime}}.txt" - }, - "whitelistImport": { - "description": "Button in the 'Trusted sites' pane", - "message": "匯入並加入…" - }, - "whitelistPageName": { - "description": "appears as tab name in dashboard", - "message": "白名單" - }, - "whitelistPrompt": { - "description": "A concise description of the 'Trusted sites' pane.", - "message": "信任名單中的規則適用的頁面不會被 uBlock Origin 過濾或阻擋。每行一個規則。" - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_metadata/verified_contents.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_metadata/verified_contents.json deleted file mode 100644 index aca502a..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/_metadata/verified_contents.json +++ /dev/null @@ -1 +0,0 @@ -[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiIxcC1maWx0ZXJzLmh0bWwiLCJyb290X2hhc2giOiJhWkJpQ1BoMmNXbUxXRDRxUTM1NnRLQzc3ME5qZ2Rybmo3cWdVWGw2U2s0In0seyJwYXRoIjoiM3AtZmlsdGVycy5odG1sIiwicm9vdF9oYXNoIjoiVDllN3pLQ2NfQU9XcGI2UDYxZXU1NXpxTWxmTHM1WEllN2s4X0hIdHEtNCJ9LHsicGF0aCI6IkxJQ0VOU0UudHh0Iiwicm9vdF9oYXNoIjoiYUlLZGxpOTZxelV1YWtmZF9qOFVkRGR3MHVfQ1FzdllFU1JYa2xRSVdTQSJ9LHsicGF0aCI6Il9sb2NhbGVzL2FyL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJNSG9jbWh5Y2xKX0wxQWVmVC1uenpyZ01nTzlQNGZYbEFtNXY3VlcxcFVFIn0seyJwYXRoIjoiX2xvY2FsZXMvYXovbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IjR4bmdscXQ5N0l4Z1B6ckpjdGE1bjN4Q0UyUDJXalZQaGxvcTBqTlB2WEkifSx7InBhdGgiOiJfbG9jYWxlcy9iZS9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiVkk1dmJkSV9ac1U2Y1dnRmFYRGJmbFRBQ0tLOGRPQ3lfdmMzcGxSNnltRSJ9LHsicGF0aCI6Il9sb2NhbGVzL2JnL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJvelh2LUZGajhxdndoOTRFaE10VUo2UXF5RU0talh3QWk2NXdfckRBUUpRIn0seyJwYXRoIjoiX2xvY2FsZXMvYm4vbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IlRzd2JoLUFuZmJUNEU5d2VlYkpEUFBrbnlBOXUwTUFGRHZIT0NHN1g0MzAifSx7InBhdGgiOiJfbG9jYWxlcy9icl9GUi9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiVC1KLTJjUGxwX2lIMkRiSWZYSG14M1ZzNm5uR3lnQ1E3TExyYTVQMDZaVSJ9LHsicGF0aCI6Il9sb2NhbGVzL2JzL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiIyUFFvQzgyV01aeFVJd2doSDhpN3VwbDZnV21fV2ZUcHN6bGdzS0N1aXZZIn0seyJwYXRoIjoiX2xvY2FsZXMvY2EvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6ImtHbjFIYXZ4eE4tZUFBaFd6QTR0OGd6NkdtTUJORHJuZ3A2QmpHUWhVWlEifSx7InBhdGgiOiJfbG9jYWxlcy9jcy9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoidDFZM3JFQXI5REUyYmJDMVJEVUYxa2ZHS29URlVrTjkzVXc2NmJZS19QVSJ9LHsicGF0aCI6Il9sb2NhbGVzL2N2L21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJPLWJKNnlhcEJQbmtHTUJiVkp6d0pUQW5kMzlxTDd1RzVPcC1mUmkxQ2lnIn0seyJwYXRoIjoiX2xvY2FsZXMvY3kvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6ImR5WmN4TUNxdzhHVFFrTExLRmNBaEJ0M2R2Q1hNWFNSSDBRWEgyTnBTRHcifSx7InBhdGgiOiJfbG9jYWxlcy9kYS9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoidi02YXAweUdESE9lSkNlLWZJNUNPbkpOeHZHY0NwLTd0NkV4UG94Wk1uOCJ9LHsicGF0aCI6Il9sb2NhbGVzL2RlL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJ4M2JTTTVpbWd2MUlrUWZqMjJyZEx4a3lpTEFWUEJKWW9HQTNpdnZSVkdBIn0seyJwYXRoIjoiX2xvY2FsZXMvZWwvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6ImVkdy1HelFiQkV2cmM1dExrcnYxbUlEcFUyWDNGSjFmZjFWWEVvYXZ6d1EifSx7InBhdGgiOiJfbG9jYWxlcy9lbi9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiTmZ3TDdjOFNXRGRSV1g4d2JuS2g5RWFRRXVFOVhLN3lNbkpqbkoySVVzSSJ9LHsicGF0aCI6Il9sb2NhbGVzL2VuX0dCL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJaTHhTQWZVa2UzWVdoWjdrZFZtLWdPZGpnRHlNd1VfcmdtRlpPNDd5ODFNIn0seyJwYXRoIjoiX2xvY2FsZXMvZW8vbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IkI1ejVJeUo0Y0MwcEJBTlJRbWw2V1RUa0xSRmZ6cmRKOGVONF8wYlRpeGcifSx7InBhdGgiOiJfbG9jYWxlcy9lcy9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiMzRJVndLOHFHRWd5LTFwU1hiakVFeUNmRUNNUHlIS1BtSjBJVC1UQVEyVSJ9LHsicGF0aCI6Il9sb2NhbGVzL2V0L21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJ4b285ODNTVjNjRTByLTlLMmk0YkRkMXYxRUg3YXZtbmRQdUpGSGRhTU5ZIn0seyJwYXRoIjoiX2xvY2FsZXMvZXUvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IlgwdTdOTWd1SGFoWkh1VnVubWZjVFl4UFdEeDNNZTZpYlZ6U1pWYzE2VFUifSx7InBhdGgiOiJfbG9jYWxlcy9mYS9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoidV9xVmVPQTFzV1dLLVQzRUlFVDVlcnlFdTZtcGhra1J4ZGg3TnBvWGZJNCJ9LHsicGF0aCI6Il9sb2NhbGVzL2ZpL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJOT0hsWVdmTS02UzhOU2JNZkw4Ui13Y2Nlem1iZ19ob0l2M3ktN2hLSHNnIn0seyJwYXRoIjoiX2xvY2FsZXMvZmlsL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJjNkUxZDRlSG5oSk14eEtXbVRRdWxYQV9CYnlzY3FNUXNJbXpOSWwwSUdzIn0seyJwYXRoIjoiX2xvY2FsZXMvZnIvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IjUzSW1URTM1SXVWOE5JMGY4d2JUNzI5X0gzYVdyVTBtMTVDelAzVDJnSFUifSx7InBhdGgiOiJfbG9jYWxlcy9meS9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiek4tbUhmMXJSMU9zUTJDY3JQSnpITDlUZXIwWWgzcWZjQVRTN3BuWWN5TSJ9LHsicGF0aCI6Il9sb2NhbGVzL2dsL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJjUkp4dm9sNjJNZW1yc3pvRUpNUHB4MWJWT2RVUlVtbFpqMmJ5QzgyWllrIn0seyJwYXRoIjoiX2xvY2FsZXMvZ3UvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6Ik54Y2pfNEJSaTJNNzlFeTZxaGJXaXFGWkh0MnJ5NVpnc1pMLUxNZ1lncE0ifSx7InBhdGgiOiJfbG9jYWxlcy9oZS9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoidG9yM3B1Qmg1ckF0NFVaUzdMTm9NVk5lSnQ5Y3M0Ym5FMW5lV3BfUmU4MCJ9LHsicGF0aCI6Il9sb2NhbGVzL2hpL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJXaEJUYzc2RkEwbzVXMV9SVlpNUGViZHBPbkt3b0pvVFVIYnJNWVRrUHBFIn0seyJwYXRoIjoiX2xvY2FsZXMvaHIvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IkZZSU1HNG9xanZrQlR6T1kyZkFjVVpsMGRuTFljQlk0NlduTWJWMjN2WlkifSx7InBhdGgiOiJfbG9jYWxlcy9odS9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiWTQ0LWFFVTBPbGFaeU1aVWZkczZDX0NVRFFEamRlMHl3TF9Ua0xtYXByVSJ9LHsicGF0aCI6Il9sb2NhbGVzL2h5L21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiIzcnVFek5HR2Y0cGJLdXdHTWVTZ1lOTDh3RDNMS3JTSXhHWjNudUVRZzJJIn0seyJwYXRoIjoiX2xvY2FsZXMvaWQvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6ImpwMlE2X0NnSUpadm9INExSNVNtd0hEZ2lqYklwMnJZYjdsQ1R1WFYzOVkifSx7InBhdGgiOiJfbG9jYWxlcy9pdC9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiSDJXVUMxLUtYajNRVEIxcVFJcFBIZ2tKa1hhZ2tQNEU3ZHZXWm9nanVHQSJ9LHsicGF0aCI6Il9sb2NhbGVzL2phL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJETmU0OElCZy1PM0Z3WEUwMUp6NlhPNlBYZ2oxWXBDc1djbHdobTRPV0VFIn0seyJwYXRoIjoiX2xvY2FsZXMva2EvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IktCMGY4RmwwYmRWdkN6WXdLUTdXd3pYR0Nlc3BxQllmRTBGaTVWbWJFWU0ifSx7InBhdGgiOiJfbG9jYWxlcy9ray9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiS2FVN2hxUG1vNzMxNUVDTzRDVHR3VzRhbUlDcGFXVG9QR3gxX2NLOHpkTSJ9LHsicGF0aCI6Il9sb2NhbGVzL2tuL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiI1bFN5ckNiRXA5U081QmpSVE91VXpOdTB4Tk5ZR2ZKWVpBM2lSLUFUOXVVIn0seyJwYXRoIjoiX2xvY2FsZXMva28vbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6Iks4LVdROTBEbFZtcWQ2SFpieV9EQ3BuOFdzXzRobEg3NW82b1lXVGRPZk0ifSx7InBhdGgiOiJfbG9jYWxlcy9sdC9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiZVUyTEVTRkpFNlZYSFFFN2xobWJCUy1fbEZBejdIc29BbUFVUGUxSjhQMCJ9LHsicGF0aCI6Il9sb2NhbGVzL2x2L21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiIwdVh3SHhOSWpSSUktb0lPYWR0WnNxekpHZEZJdnNYOXpfZ2g5Q19CTVJBIn0seyJwYXRoIjoiX2xvY2FsZXMvbWsvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IkFPdXFFUERzUkVaZ2w3Nk1GaUJ5c1JhdkZOc2JmRmRlQy1tdU80ZXQyYlkifSx7InBhdGgiOiJfbG9jYWxlcy9tbC9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoicU9nblBpMW1SbXdIcEdBTGIyVkdzWWtVaU03T2lFWWl3S0xkcGd3eENCQSJ9LHsicGF0aCI6Il9sb2NhbGVzL21yL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJkc3EtRTg5eklRRHN6RmZHQktyY3B0OHBYV1dxTFBKX3pxazM4LTZGc2VVIn0seyJwYXRoIjoiX2xvY2FsZXMvbXMvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IlkxamtuUEF5Y3Q5OVhCNHBmS3lXVGtOREE2R0NVV0R2NExwOEZHb3VNbkEifSx7InBhdGgiOiJfbG9jYWxlcy9uYi9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoicEw0ZmZCWlJzWG1QTnlEM2NKU0RMc3lWQVBXaHJtcFZEUUxFanRoRk1UQSJ9LHsicGF0aCI6Il9sb2NhbGVzL25sL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJac3V3R0NLNlNVZWVFbFdOVFZIT3F0bHFScW1VNGxUZ0x0b01tclBjRUVnIn0seyJwYXRoIjoiX2xvY2FsZXMvbm8vbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6InBMNGZmQlpSc1htUE55RDNjSlNETHN5VkFQV2hybXBWRFFMRWp0aEZNVEEifSx7InBhdGgiOiJfbG9jYWxlcy9vYy9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiS1ljUDhFenpGeEJvaUtyNEdJMy1zRThYdWE4d1lWcXJfRDhOOTBSYWtBMCJ9LHsicGF0aCI6Il9sb2NhbGVzL3BhL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJXR0NhU1J3OE92bW9rZ2NhdzR2Zy03blhUS01kbmhsSjZuLTBfSnFjbmdFIn0seyJwYXRoIjoiX2xvY2FsZXMvcGwvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IjFqTG81a0JHMVVYbXZUN1JwMy1HVjBNaGlHTG9EbFhHZW5JdnFvWFhXUFkifSx7InBhdGgiOiJfbG9jYWxlcy9wdF9CUi9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiVUZIR25kYm9LVGROV2ZWSVdhWEppeDZmUUFpT0V2cE1mVmVTQ1dWQ01TbyJ9LHsicGF0aCI6Il9sb2NhbGVzL3B0X1BUL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJmVmMxNHh3ekQ1alBHYkN2WkpNTWRXUWoyXzFVRDJYemUyMnpBOGJLN1ZjIn0seyJwYXRoIjoiX2xvY2FsZXMvcm8vbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6Im5fVmJaZHpnZ0ZyWFppTDFHSDktYUM2cV8taGF3ZEthR3VjRTNlSDk4dVkifSx7InBhdGgiOiJfbG9jYWxlcy9ydS9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiSVNkcmRmNC1JZzFIUWE2WV8wb1JTMHZPWks0MmRHY1BRVE1RaG1CY3VsUSJ9LHsicGF0aCI6Il9sb2NhbGVzL3NpL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiI5OGlWQnBmc1FoX2ZlMWNLR3RUVTdJMWZ4SE1LM1hXMnpHcXFiekpzcEVnIn0seyJwYXRoIjoiX2xvY2FsZXMvc2svbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6InZVaUFlcUxJbTZrY3Y4cXFlYmhuWEdXT2dTRHlvZDJVTGp6Qm83TWtKSWMifSx7InBhdGgiOiJfbG9jYWxlcy9zbC9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoidmNnX2d1c2tTR09pTFhvT2ZvYTA2X0JCX0g1dzNVMnNIbWRCcEFKeE92MCJ9LHsicGF0aCI6Il9sb2NhbGVzL3NvL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiIwN2FOMGczMHFxNjdEdGV1SUR2Q1QzRl9tT0Rkem0wX3hoM2tvRjk5ejNBIn0seyJwYXRoIjoiX2xvY2FsZXMvc3EvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6ImNvZWNIUkdDVDJNcG11WFJzRlJycGk4OGF6ZXJxZjRObDhvQ0wxNDIyd1EifSx7InBhdGgiOiJfbG9jYWxlcy9zci9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiX1c2cG95Y0VLVmVPTmlDU09zaWZjdXJ5dV9vRUdQeXVSTFZCM0IwRHJQbyJ9LHsicGF0aCI6Il9sb2NhbGVzL3N2L21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiIyajlPVWdLVDRmNGhkX1h1QU1RTEczS3N3YTlmUy1WNlpqZ1k0MFRnbnE4In0seyJwYXRoIjoiX2xvY2FsZXMvc3cvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6Ik9oTVhfckRRcUlsT0V0ajFrbnVZZVFUODZIUUplNnBPQ1V4Sk0tRl9RZk0ifSx7InBhdGgiOiJfbG9jYWxlcy90YS9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiSkpENnYwVUhkcFZoYXBDN2JPcmVZU01lR1paWTkzVmZSM0gtTVNfVmRjYyJ9LHsicGF0aCI6Il9sb2NhbGVzL3RlL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiIzNC1oNFRfWDlPTE4wSjRYNjFMSzF6Uk5QcFRJenVndENKd0RQRHVJWGNBIn0seyJwYXRoIjoiX2xvY2FsZXMvdGgvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6Iks4YUFMZm5Welo2MFlNa1BXZXRjak1aNmRwcXBmdURsUW4xWVdJanJSdHcifSx7InBhdGgiOiJfbG9jYWxlcy90ci9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiZVE2ZjVBT1ZzdW1rQWxXYkxkd3dFUWhTbGhXQWM5NDRPcE5LSHk5LWc0NCJ9LHsicGF0aCI6Il9sb2NhbGVzL3VrL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJkNm5vT3NkYXIwX0RkWWN3YlZyLXlDR1QtWktsZlFBaURTYWVsbEJnRERrIn0seyJwYXRoIjoiX2xvY2FsZXMvdXIvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IkdIX1hQa3lQdHRybG5HWjFtcnJISHZ6RzZGUTBYX09lbWUtcHNMc2MzQWcifSx7InBhdGgiOiJfbG9jYWxlcy92aS9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiZmVSUTZwaHE2bFFITXBSY0FFdmRyTnktVTh4RUtkRS1FNWI4QlJCMlhUUSJ9LHsicGF0aCI6Il9sb2NhbGVzL3poX0NOL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJEVGNSVE42Nl9jeEpPQUt4RjNxenNubVc4bkJhOEg1Uks2R3hmVU1uNi1nIn0seyJwYXRoIjoiX2xvY2FsZXMvemhfVFcvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6ImtKMEtCQ3hxNzluaGZMSnEySHV5aE1YVmpuVWNLb3RUZkd3aURVYXpjTWcifSx7InBhdGgiOiJhYm91dC5odG1sIiwicm9vdF9oYXNoIjoiTlg0b0duSFpNYmlXdkVaWGpnYkltdEl6dFp6d0F0cHBfSlRteW9Qem9sOCJ9LHsicGF0aCI6ImFkdmFuY2VkLXNldHRpbmdzLmh0bWwiLCJyb290X2hhc2giOiJWUDNoVnN6V0wzSzhTZ1R2TWZZLURHS2k2bk9JOHZxZ0hsZVM1NmVGQnVnIn0seyJwYXRoIjoiYXNzZXQtdmlld2VyLmh0bWwiLCJyb290X2hhc2giOiJQZVFYZW9fVTFnc3k1QzZRdjl6YlZzOWprTlg5QTNQU1pWemV3V3NiR0M0In0seyJwYXRoIjoiYXNzZXRzL2Fzc2V0cy5qc29uIiwicm9vdF9oYXNoIjoiWjczLWpRTExUcndYRTVWYVgyOVd3bU5QWEl5U2l6MUNFNFlCYlN6eWY5ayJ9LHsicGF0aCI6ImFzc2V0cy9yZXNvdXJjZXMvc2NyaXB0bGV0cy5qcyIsInJvb3RfaGFzaCI6Im1USmdxYnJoazlHV0JleDJXcnlPUnhnTTBSWlVJVi1fa1lXd1RLekxmeTQifSx7InBhdGgiOiJhc3NldHMvdGhpcmRwYXJ0aWVzL2Vhc3lsaXN0L2Vhc3lsaXN0LnR4dCIsInJvb3RfaGFzaCI6Im9EQk5PeHRTLTUyZHI1SGhLMy1rZ3l0LWZFcWtCSi1xTWpfS3JnZFNuOUEifSx7InBhdGgiOiJhc3NldHMvdGhpcmRwYXJ0aWVzL2Vhc3lsaXN0L2Vhc3lwcml2YWN5LnR4dCIsInJvb3RfaGFzaCI6Iml2V2p4WFhuQ2IzSng4NExISS1JZjluTUloZmpwazFDNktXY1RGTHMzZEkifSx7InBhdGgiOiJhc3NldHMvdGhpcmRwYXJ0aWVzL3BnbC55b3lvLm9yZy9hcy9SRUFETUUubWQiLCJyb290X2hhc2giOiJPSFRWendEZXVfQU5nS3FuZXQ5VmJwdzJtNmZqZDZIekg4MTg2VFdpR2IwIn0seyJwYXRoIjoiYXNzZXRzL3RoaXJkcGFydGllcy9wZ2wueW95by5vcmcvYXMvc2VydmVybGlzdCIsInJvb3RfaGFzaCI6IkFPbE95UmlPY0kyZXZqRlVQNV9hM0FuUE9xcUFGSmJiZTFCLW1JUlFyakkifSx7InBhdGgiOiJhc3NldHMvdGhpcmRwYXJ0aWVzL3B1YmxpY3N1ZmZpeC5vcmcvbGlzdC9lZmZlY3RpdmVfdGxkX25hbWVzLmRhdCIsInJvb3RfaGFzaCI6ImQxaXRMTHZKNm1pYm9SeTRnN2M2WjZZRFJOejZlU1pLclhkeUE3UE1DajQifSx7InBhdGgiOiJhc3NldHMvdGhpcmRwYXJ0aWVzL3VybGhhdXMtZmlsdGVyL0xJQ0VOU0UubWQiLCJyb290X2hhc2giOiJJTzU4NDZKY0swUk0wM2ZTbUdOd2thVk9mUXRfTTBIZUItN2l3VXNfLUlRIn0seyJwYXRoIjoiYXNzZXRzL3RoaXJkcGFydGllcy91cmxoYXVzLWZpbHRlci91cmxoYXVzLWZpbHRlci1vbmxpbmUudHh0Iiwicm9vdF9oYXNoIjoib2lvd0RPWi1tVUJvVzZFQzZDTjdmSWMzZjNxcUxxV2lWLXZYTG50QXJFWSJ9LHsicGF0aCI6ImFzc2V0cy91YmxvY2svYmFkbGlzdHMudHh0Iiwicm9vdF9oYXNoIjoicTJ4VzJQZHF3UlhLWE5NRU1Dc1RKLU54Q25RMlctTVpZUlNEQ3BaTXl0USJ9LHsicGF0aCI6ImFzc2V0cy91YmxvY2svYmFkd2FyZS5taW4udHh0Iiwicm9vdF9oYXNoIjoiQUdGbnVPZXY1SnBvYXdoRjV1OEZTbE5aS3pOakJBUXR2ZlAzYVVWN254WSJ9LHsicGF0aCI6ImFzc2V0cy91YmxvY2svZmlsdGVycy5taW4udHh0Iiwicm9vdF9oYXNoIjoic1UzNG8xQndKMDlhcVdxbXdNMUw5MlNidkFQdGI2SDh4Q1NMNVY5cHpDRSJ9LHsicGF0aCI6ImFzc2V0cy91YmxvY2svcHJpdmFjeS5taW4udHh0Iiwicm9vdF9oYXNoIjoibExJbkNZTk5HMmVvc1JxMWhnSFdJOVlFVmdIdENGUVlzMmRHV1Fpdm05USJ9LHsicGF0aCI6ImFzc2V0cy91YmxvY2svcXVpY2stZml4ZXMubWluLnR4dCIsInJvb3RfaGFzaCI6IlFhS2p0Ymo3VXdLS3pXaEU0aGYxZG1tUXRZX1ZSV1JEOFdhMjQwQUQzQ1kifSx7InBhdGgiOiJhc3NldHMvdWJsb2NrL3VuYnJlYWsubWluLnR4dCIsInJvb3RfaGFzaCI6IkppTHNTSnVGXzFMcjJiQkl0ZXgxWlNTU0dEalhXcVc2RXNSa3ozY3FYMFEifSx7InBhdGgiOiJiYWNrZ3JvdW5kLmh0bWwiLCJyb290X2hhc2giOiJaazR3VkFDbU10UGZaTzJlLU9TMjBxVEdBaGsxTGNyZGhlanB3eDI5U3NFIn0seyJwYXRoIjoiY2xvdWQtdWkuaHRtbCIsInJvb3RfaGFzaCI6ImtVajd6NlZpQllMamROUlFReHNlaWhFWHBpa3dVMi1UdWNvRDZJN0dQWEUifSx7InBhdGgiOiJjb2RlLXZpZXdlci5odG1sIiwicm9vdF9oYXNoIjoiZ0Q0OXVoNU84cC1MSlJDM0hjbkEtcTBOaXJmbUN2ZjJ4NnByNzB4Q2xKNCJ9LHsicGF0aCI6ImNzcy8xcC1maWx0ZXJzLmNzcyIsInJvb3RfaGFzaCI6IjBTRDVTc1NxOEZFaTVZNVBTY290bG50NmlLbUVVSnpJelBVUWN3MFpCbTgifSx7InBhdGgiOiJjc3MvM3AtZmlsdGVycy5jc3MiLCJyb290X2hhc2giOiJEVjhWc2RnaVkyQzdmOWIwUy1XLTNHdUlBbnRabTJ5NHp0VkF6N2ljLTJNIn0seyJwYXRoIjoiY3NzL2Fib3V0LmNzcyIsInJvb3RfaGFzaCI6IlZfUXRRb2ZUR05QN3pENG1JczRkWklSM2tRdTQ1OXZmRzhBVVJEQlpzMFkifSx7InBhdGgiOiJjc3MvYWR2YW5jZWQtc2V0dGluZ3MuY3NzIiwicm9vdF9oYXNoIjoiZlBLeFVtc3ZtVURJUW9lazNyN2RnTGtydF9sV1JadkJZdzlLVlhOc01hWSJ9LHsicGF0aCI6ImNzcy9hc3NldC12aWV3ZXIuY3NzIiwicm9vdF9oYXNoIjoiT3lTQlFTQzNVRHlhQUlQd3dXN210U1F4YUl6OGJQNGZrUUFVbVpYd2VLYyJ9LHsicGF0aCI6ImNzcy9jbGljazJsb2FkLmNzcyIsInJvb3RfaGFzaCI6ImRiZ2JyUnZ0VG5ORjUxYm9XTmE3X092cDdmN1BxaGdPQXdlei1oTGhjbjQifSx7InBhdGgiOiJjc3MvY2xvdWQtdWkuY3NzIiwicm9vdF9oYXNoIjoia3htVUNBNTVDbDJSUlE5Tjl1YmUwajJjMVpUWGIzZnRCS1lmSGdBRlBQYyJ9LHsicGF0aCI6ImNzcy9jb2RlLXZpZXdlci5jc3MiLCJyb290X2hhc2giOiJnaEZDeHRtVU5ZRWdwZ0JnSXdiN05PNmV5WmJ1VjV1dUZtMlJaZHdIRFNRIn0seyJwYXRoIjoiY3NzL2NvZGVtaXJyb3IuY3NzIiwicm9vdF9oYXNoIjoiSjZfdjktYy1pVEdNd1VNd2Q2UTBlUjc3VW8zb3RmcHdabEEwQlgzaFlfNCJ9LHsicGF0aCI6ImNzcy9jb21tb24uY3NzIiwicm9vdF9oYXNoIjoiRWRyUUtaaEtSXzNteVFWOTlsV2pRcjBHX0lTeWNMU0laMXlaZ3h3dmFhbyJ9LHsicGF0aCI6ImNzcy9kYXNoYm9hcmQtY29tbW9uLmNzcyIsInJvb3RfaGFzaCI6ImtydVB4dUJrRU9jNFhlS0ZJM004el9fcUpYcjdnVEVXbTdsaUwzZGhvclEifSx7InBhdGgiOiJjc3MvZGFzaGJvYXJkLmNzcyIsInJvb3RfaGFzaCI6InJMbEVrdks0ekNSYnBlODZnbDgtZ3dTV3ZfTjAyQ01wcVVKbUJGTVhIUGcifSx7InBhdGgiOiJjc3MvZGV2dG9vbHMuY3NzIiwicm9vdF9oYXNoIjoiWU84ZkNTX1Y1TzF1ZU9NUW51TFVWZm5DTE1hcmVOMHl2N1F3U1Jyc0xzcyJ9LHsicGF0aCI6ImNzcy9kb2N1bWVudC1ibG9ja2VkLmNzcyIsInJvb3RfaGFzaCI6IkQ5QVdHWC1HbFl0TjJyZUNramJqbjlHZm53WlFIX1RmMU94M1pyRXhuY0EifSx7InBhdGgiOiJjc3MvZG9tLWluc3BlY3Rvci5jc3MiLCJyb290X2hhc2giOiIxTUxjTExyMmljMFF2d1F0MERtSGc3d045eWVDLWdxdm1zVUVHQW1pSUcwIn0seyJwYXRoIjoiY3NzL2R5bmEtcnVsZXMuY3NzIiwicm9vdF9oYXNoIjoiME91UlJqM25BUElMRVREd0VEZ2M1dTdNQWQ3YklPMFFhNi1BYlVkY2RUNCJ9LHsicGF0aCI6ImNzcy9lcGlja2VyLXVpLmNzcyIsInJvb3RfaGFzaCI6InJvOG1nMTkyckhsN2tnTmtMMWpxTXlvZkUtdERTX2E5WGJGNTV4RUxaRncifSx7InBhdGgiOiJjc3MvZmEtaWNvbnMuY3NzIiwicm9vdF9oYXNoIjoieDVMNzNIQnd0X3VmYWlVM0xBc0VTcVVkMHBvaU9zSUZ1LVVMNXFUaFF4YyJ9LHsicGF0aCI6ImNzcy9mb250cy9JbnRlci9JbnRlci1SZWd1bGFyLndvZmYyIiwicm9vdF9oYXNoIjoiN2tMM29mNlZqLUhsdjlobGVCem9WYmNXbTJpaDFlS3h5UTI0bWczQzNGbyJ9LHsicGF0aCI6ImNzcy9mb250cy9JbnRlci9JbnRlci1TZW1pQm9sZC53b2ZmMiIsInJvb3RfaGFzaCI6IjdiVDd0ZWJacGlBaTQ3X25zMDdBVmNRZzRCLTJQTUt4RE9hVUtrYlNYV3MifSx7InBhdGgiOiJjc3MvZm9udHMvSW50ZXIvTElDRU5TRS50eHQiLCJyb290X2hhc2giOiIxNlFEVlVwVFVkSi1jWjd4SUN6b2xxYzFFOUhnV2ZIZ0h2ZWZXMTNsdHQ4In0seyJwYXRoIjoiY3NzL2ZvbnRzL01ldHJvcG9saXMvTWV0cm9wb2xpcy1SZWd1bGFyLndvZmYyIiwicm9vdF9oYXNoIjoiaEY5QzF1a3RzeUJ1MGx1WU1IQTNDX2o0NERuUGptVnJQdHdQRGV4QW56ZyJ9LHsicGF0aCI6ImNzcy9mb250cy9NZXRyb3BvbGlzL01ldHJvcG9saXMtU2VtaUJvbGQud29mZjIiLCJyb290X2hhc2giOiJiRm5BTWMxNkR0NEdxUGtaak54VlhxZC1OSWtyMnM0ck1nVS03SlR2Q0swIn0seyJwYXRoIjoiY3NzL2ZvbnRzL01ldHJvcG9saXMvUkVBRE1FLm1kIiwicm9vdF9oYXNoIjoiVUF2d0tlTTZWWjhqWXhxWHd0Y01GQ3ZZZlJLR1BBYW9majBhVmdLRGRSOCJ9LHsicGF0aCI6ImNzcy9mb250cy9NZXRyb3BvbGlzL1VOTElDRU5TRSIsInJvb3RfaGFzaCI6ImZoTGwzMHV1RXNzaFdCdWhWODdTRGhtR29GQ04wUTBPaWtxNXBNLVU2RncifSx7InBhdGgiOiJjc3MvbG9nZ2VyLXVpLWluc3BlY3Rvci5jc3MiLCJyb290X2hhc2giOiJTcjloek85bWVBWlRJMmFPY2tnR2FwSGxmbk1Ham9ibkpHU0EtTzRFTklrIn0seyJwYXRoIjoiY3NzL2xvZ2dlci11aS5jc3MiLCJyb290X2hhc2giOiJCV1h0OEZINWVobHVBZWIzS29NZ25YUF94dHh2bTBLM2hocnE4QkhvaXhNIn0seyJwYXRoIjoiY3NzL3BvcHVwLWZlbml4LmNzcyIsInJvb3RfaGFzaCI6ImJ2YzB5TDVfdmJQXy1VLUNObWlEdHRfVk9SWFliS05yZjdkMWFNZUpKc2cifSx7InBhdGgiOiJjc3Mvc2V0dGluZ3MuY3NzIiwicm9vdF9oYXNoIjoib2ZHM0lqZlpGTVNfWDkxWk9ha1I0QnVaS1RtQ2ZhdnhBUHFkVlZSdnZwayJ9LHsicGF0aCI6ImNzcy9zdXBwb3J0LmNzcyIsInJvb3RfaGFzaCI6IkMybG5mSm9udGRPbGlfTUtWcWFhcmxsWDVrNWJySi10OGRCQ3ctWTFDOVEifSx7InBhdGgiOiJjc3MvdGhlbWVzL2RlZmF1bHQuY3NzIiwicm9vdF9oYXNoIjoiR1NodkFRR1NydVpzblNxd1RjOEMySHRWbWRGTnlOUk9FY2RvNklCZWZMNCJ9LHsicGF0aCI6ImNzcy93aGl0ZWxpc3QuY3NzIiwicm9vdF9oYXNoIjoib3RwREc2NkJDQklNSF85cmJ0MmlhWmh2S2RoQkVuNXFFUzdRejlLT2FxRSJ9LHsicGF0aCI6ImRhc2hib2FyZC5odG1sIiwicm9vdF9oYXNoIjoiaWxhMzduaU5RRzhkYVdvLTJRR0pURGdXclFRWVk0akMyWHlzc1Y5MGE2ayJ9LHsicGF0aCI6ImRldnRvb2xzLmh0bWwiLCJyb290X2hhc2giOiJIcDNWcUlmVWtEZzMtV1VUa0d0WUx1Q3diMThFMXBIdUVsMl80X1JQY1BRIn0seyJwYXRoIjoiZG9jdW1lbnQtYmxvY2tlZC5odG1sIiwicm9vdF9oYXNoIjoiRy1CYTlwZjBCTUYzaGh2VTY1T2ZFYmRpa3RNbXhIcGdpRDZWU3JielV2WSJ9LHsicGF0aCI6ImR5bmEtcnVsZXMuaHRtbCIsInJvb3RfaGFzaCI6ImQxM2tOQm1KLWlRSTRGaTRoVmRyN21oZTlnUlQwX3hBTUUwM3l5TFBSajgifSx7InBhdGgiOiJpbWcvY2xvdWQucG5nIiwicm9vdF9oYXNoIjoicUI1SHRTRmpEdUN5NWNJOHZQQzdaUHFIQUZjUXUtdk8wU3JBOFpQMm5OUSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvUkVBRE1FIiwicm9vdF9oYXNoIjoiOVNrTnNvQUhySTBuVDBNSU1aRER3X0djakJESUotanNrT0dnNEdxZzVJYyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYWQucG5nIiwicm9vdF9oYXNoIjoiRHVfZUtTNVdXS3dOWUs4UGVxREtpaGQwckxXWWRTOC1NbEx5TnVGYTkxMCJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYWUucG5nIiwicm9vdF9oYXNoIjoiWnd2cG9udEdOWHNLMEJ4RTB2TjRQb3hkdTVqTlFYeFZWdXdaNWN3MDJzNCJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYWYucG5nIiwicm9vdF9oYXNoIjoiaWV2aUg0eVJ1WTBweWFoRkFmTENmYTBxWFJMZmpMbk95QjRBaXZEbHgyOCJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYWcucG5nIiwicm9vdF9oYXNoIjoiazRPNE9xaVA3TlNLX0RFVjBnczlxSG5lRzBVYUsxb1Z6NVNCZDhpOGV0TSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYWkucG5nIiwicm9vdF9oYXNoIjoiQ2dWZnVNeVFLcjBGZW5kU2VJTHdZd2ExWGZ0N1QzVGlUNVVyWGp4Z2RTYyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYWwucG5nIiwicm9vdF9oYXNoIjoibmJHS1ZIX0JqbXN2THFyM1o1VU94RjlDVzBKaUticzUwUXc3OV9qdUdrTSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYW0ucG5nIiwicm9vdF9oYXNoIjoiV3Y1T19RRW95Q2dDVDhjaDg1RGx2NXVYN1RlQl8yWHdQRWIwbDQ0dkVVayJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYW8ucG5nIiwicm9vdF9oYXNoIjoiYzVjSjV4TzA1VHNfem5oS2t2eFBiUW9WR2lNbHJyVXhHQnVMYjI2Zm1UcyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYXEucG5nIiwicm9vdF9oYXNoIjoiTFMzSjFSbzdNZGlCd1NCMm9mSkVqUDlhUkU1dFZzYldrZXMydlBpbzkxbyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYXIucG5nIiwicm9vdF9oYXNoIjoiWFpSZFd6M0tNSlNjTkNjZmZaQm1VZUM1b2c5MW9raWNndmx2YV9NNmJQcyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYXMucG5nIiwicm9vdF9oYXNoIjoibVNCcUluNndLU21QbGVlTjBuZ0tkbnlqRmd6Z2dHcHg5WDhCTVVNak5zMCJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYXQucG5nIiwicm9vdF9oYXNoIjoiT1ZRX2FQbGxieS1pd2NOTDdMVnVMUmo3YmFXNWJ3a3RTdjhPY2c4OGhZZyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYXUucG5nIiwicm9vdF9oYXNoIjoiNW1SUUZzSVJZT0Vrc1RpZEtfWG5pTU9uejRjd3hjbGhfZlJnX1Jxc2RrdyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYXcucG5nIiwicm9vdF9oYXNoIjoicXZfdzBET25mUTVydXVrWlZ6V0dTVF9UMEVzVVJ3b25GNHVhWTZ1UjExUSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYXgucG5nIiwicm9vdF9oYXNoIjoiYWtPcExRUkx4TjF5bXN1b1VKdWlzRk5WcjUta0lFWE9XWUpWdmNSM2EzayJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYXoucG5nIiwicm9vdF9oYXNoIjoiMWh3dFdZRFRqSWtEMTVIRWlFc09ZMXJ3bmctekdLQ09XZThURUpvel8yZyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYmEucG5nIiwicm9vdF9oYXNoIjoiMXZEVUM2TlFsd2RXM1ZNQ29hUGJ4M0xNcDJRc0F6NnpIOHU2QWU5WjVRYyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYmIucG5nIiwicm9vdF9oYXNoIjoiWUJxbnliNDZlaklBd1p5RHFOVTZiWFRWcVpPZWlkY09XS3NRa05reXptQSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYmQucG5nIiwicm9vdF9oYXNoIjoiMUR4dDBLVkE5MG5xVHJya2ZnSnZidkRXNG9oQXNVU1FrLVJiYnNCd1piSSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYmUucG5nIiwicm9vdF9oYXNoIjoic2d2a2ZXQ2hqdEViQS1HWkZOb3NTbXByODlScVdURVMwd0JrYlo5SVVZcyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYmYucG5nIiwicm9vdF9oYXNoIjoia1JXRFhMYnM0RGpBYXA4b3hJVC1BNk9kWmV3T2xjZzU3S3NkS0VCVkxJTSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYmcucG5nIiwicm9vdF9oYXNoIjoiWThuc3FSSDRqcWNBSDBXcklETnlLTXdQbnZkNHdqU2Z4cFVKbmZVSF8xOCJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYmgucG5nIiwicm9vdF9oYXNoIjoicDEteWdsajN4NTJZTkZJdlZlUm82WTRCbE5TbDhQV0d1OGlXMmg2SGdGQSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYmkucG5nIiwicm9vdF9oYXNoIjoiaC1uZEU1bVl3SXJSWkJ4ZldSek9laU1iOEVUa04tUHdhREV6eXdhbVJKTSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYmoucG5nIiwicm9vdF9oYXNoIjoiV0J5WFJzd1c5dFlsOVRIMjBKczFsbS1YUEVVZ3Z6TDJGOWhoY0diVHV1QSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYmwucG5nIiwicm9vdF9oYXNoIjoiRzYzdWU1RW9kdUVjc3g1Q1JRSmV4YU52Qjg2SktvRG9pT1JRRDNiNGpWayJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYm0ucG5nIiwicm9vdF9oYXNoIjoiM1hQSVVEdG5hb25xWjQzNW9XQmFBZjZyelc2LTVWV21JNktXREE4OVpQOCJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYm4ucG5nIiwicm9vdF9oYXNoIjoiY3NVSmZXQmNYYk9LVXdZWGhlYXRjNlF6c2tYS3pSSVNEc0pNUVQ5SGNVUSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYm8ucG5nIiwicm9vdF9oYXNoIjoiQk5IdVZtTUlLdFJYZ3R0VV9MMDhBSlZWZVNUZXdCZUMtdXJOVWtVNmg0YyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYnEucG5nIiwicm9vdF9oYXNoIjoiQktKcGpNel9GZTBNaGw1b3l2dGdnMlJUcjNEQ09VMzA4aEpDaDhmV0l4ayJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYnIucG5nIiwicm9vdF9oYXNoIjoibnNobjM2ZUFMM0ROQXJfeHdiTHlnbTdtd254SkRnZ0F3cGNtTHFoU2t6cyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYnMucG5nIiwicm9vdF9oYXNoIjoiVlE3bGI0VnJuVFhEZGtXbVA5aUR2bnBmNkktc0E5M0tKX1B5UW1VbjMxYyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYnQucG5nIiwicm9vdF9oYXNoIjoiMlF2ODBpT21MSTBDcnVaVDZpWWRicHE5bWxkaEVUSk1DeGk1TlNCRXpyMCJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYnYucG5nIiwicm9vdF9oYXNoIjoiWTQ0V0pQV0Myd01iTWlnMHJiYXlsT0lXYncwY2VjdWVSaVFQWVVGcE92TSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYncucG5nIiwicm9vdF9oYXNoIjoiQ0hpMW8yMHI2QTlOUklLSG1OTm54WGhDU1ZHMmlVZUYtT0tQclk0SG5mQSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYnkucG5nIiwicm9vdF9oYXNoIjoiMWRMMzI0c0dHcDhLWkRQbUNVVmMyU2dZbnBaamlreGhuVkZ1Y3oxX1lxZyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvYnoucG5nIiwicm9vdF9oYXNoIjoiSDVoYk82R2RJOTdMUzZNN2E3a19CejI3WDQwNm1hdjZGOXpRVjFJamk0byJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY2EucG5nIiwicm9vdF9oYXNoIjoiRjNYcHQtTUpLOHprVjRhWDByb1ZJT0pXZnBSdTYzbVRZTE41U3JRX0hkSSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY2MucG5nIiwicm9vdF9oYXNoIjoiS0JaMXR1eXQyZXF2RmxZd1dQMFFZWWtzZThlZWhjMkxzeDdxQ1dHZHVoWSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY2QucG5nIiwicm9vdF9oYXNoIjoiM2dUc1Z1Tm1YUUNqOEs1SG5iZkI3T2JORloyWE5sdnhzdFM1Q1N3RDAtMCJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY2YucG5nIiwicm9vdF9oYXNoIjoiMnQ2cUtBOGVKU3FCUWVxTmxxRERNWkdpUGRzWEtubjZrZ2Q3QkVEZDNwTSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY2cucG5nIiwicm9vdF9oYXNoIjoiWmJPbzNoTFlYekxXSGlQSjlvVHkzVWJJQ3FfYWJBUkhyS3p6OHl0eERObyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY2gucG5nIiwicm9vdF9oYXNoIjoiMV8wN0ZlX2gyMEdZNlZkOHY0WWFoekoySk1KeHRUMWhMUVpNRVJTNHNRbyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY2kucG5nIiwicm9vdF9oYXNoIjoiY01TcFQwODQ4VzNMNkluSDIxZlRpQzI4N3NSYmIwZG5NcDJ5SGNKdzltTSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY2sucG5nIiwicm9vdF9oYXNoIjoiZWszTnRzSS1zaDNYU1VmVlF3NWJ6VUJEaUJQR0ZLcWRqQkd3MFVnTkhZdyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY2wucG5nIiwicm9vdF9oYXNoIjoibE80bmR4bVVrSEwxb1lpVzlTRmdkRXgybUY0TnJSUDFoN2tOX3ZZcEE1NCJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY20ucG5nIiwicm9vdF9oYXNoIjoiN1BSM3JaYmxsRHZJc2hnVnhhRE9uUk1QTzh1dHBfZE1pRVBrd2dJWWdZZyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY24ucG5nIiwicm9vdF9oYXNoIjoiUEhRdEFuLTVUakxLQThrbWxxVmlhbEc0NGdQREdjcXdTbzBxNmlYbGxnMCJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY28ucG5nIiwicm9vdF9oYXNoIjoiTHNPMUlZUmIydk5uMHRmTDA5NHRZUFNDdDdaTEN6dE1JWmpHZ0NxMHpEdyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY3IucG5nIiwicm9vdF9oYXNoIjoiV1FVdXJ1dE5PQTQ5emxJRVNoNlA2V1B5RVJyM2E2eTVxM25KZWt4ZDNacyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY3UucG5nIiwicm9vdF9oYXNoIjoiaFNZd1o5M2xpTjRITld6UnByd1FWazFxRXgySzBTVWQ2ZmJCVU1kbDllNCJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY3YucG5nIiwicm9vdF9oYXNoIjoiX2hkOWlsdk92T1A1aDBRNkFoY3lYaEthNGpGLWpDMC1laWlRNzMtMDNMTSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY3cucG5nIiwicm9vdF9oYXNoIjoiT05JWXlyQVBsWnp1UHhDZlI5VldFMlE3LW1CVmVZc2EzakhtVFU2dUY3MCJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY3gucG5nIiwicm9vdF9oYXNoIjoiQkh4QzlkN2lGVDFRSHNjb1liNlp2b1d0bWZDZkk4SG9NTmNpbVBlYXB6dyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY3kucG5nIiwicm9vdF9oYXNoIjoidExQdjdrNnlUSl8tUDJkUUxiemF2TFRRWlIweS0tSFctN1N0dXV4QWZSVSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvY3oucG5nIiwicm9vdF9oYXNoIjoicmI5VTgwNUhNYnJjQmdieGVLWTNtTXk0cVZBR1FsMzJyWEJMWThsOUJLMCJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZGUucG5nIiwicm9vdF9oYXNoIjoiSzF3eGZiVDdOaXVXSlhYQlozTEo5V2Rkcm8wWDV4Nm9vX3U2eDJoWVVXbyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZGoucG5nIiwicm9vdF9oYXNoIjoid2RCV2p1SDlOdXBpMVJGam50eXltUmVHVFRBcmhjOTlIRVpHQjZqam93VSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZGsucG5nIiwicm9vdF9oYXNoIjoiNUFhb2k1WXhCRU1qZG85YXc4SDdfNmRJZzdXdDZ2YjRDMEczYUo2WnZsNCJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZG0ucG5nIiwicm9vdF9oYXNoIjoicU9KWGp4Qk5XNEx6QnpLZDc3V0JWS0VGcW9hVG1GbHd1S2RkcVlxbXhDTSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZG8ucG5nIiwicm9vdF9oYXNoIjoiblljYzBmSXhVRzRPbWNnd016WWVGRTFhZG9hZm1SX3NYZUVkbW00Rm0yYyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZHoucG5nIiwicm9vdF9oYXNoIjoiZ0NQbjVDbDBCZGpuZkpWeTZMbHZTNG80Tm5Dem1oQjJvWFNGcmIzWmxuSSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZWMucG5nIiwicm9vdF9oYXNoIjoiaWktbEtaSkp4VTJwR1BMUUNwWXBsSFVyaVpJTmp2dV92R2MxU2thSjBZZyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZWUucG5nIiwicm9vdF9oYXNoIjoiWDVfbmNId2hxZFBZSXUyVjRUN0xMMVJ5eXBwVkJFUUNpMXpWOFY1QmJxZyJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZWcucG5nIiwicm9vdF9oYXNoIjoiX0daZGY4Znh1V0ZXcko3REdSNm9QZTZVWU5jaDFqR1M1S0xfSlRYUDhLVSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZWgucG5nIiwicm9vdF9oYXNoIjoiWmdRZHBvS2hkMm5LblBpTFRHQnk0WHhyQVVsYWphMm9jZk01WFM4WTNUTSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZXIucG5nIiwicm9vdF9oYXNoIjoic1RPclJNbnZSd3FKeDR0M2luUXAzclhvQWJOeVFlei1WV2RwZF8taTdKMCJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZXMucG5nIiwicm9vdF9oYXNoIjoidkRPYWNmb1ozRUY1TVJSV2VtQmRNbFdFXzBEd1FQWEZaT01xT3NFMlRFMCJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZXQucG5nIiwicm9vdF9oYXNoIjoiQ0p2OElPZWlobERuYnBhYnNINGQ4T0dqeWgzdzZaUU5UN1hBZEp3WXhMayJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZmkucG5nIiwicm9vdF9oYXNoIjoiZ2FaVUtxY0haUUwzU0VYRERfVXV5cEdRd0c1UXNXcnE2RXZwNmpTemlKWSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZmoucG5nIiwicm9vdF9oYXNoIjoiZDllVVRPd1N4amVSRU1jTXQ3b0FMdDdiNUNQLTFoWTN1dVQ0czJQaXlBWSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZmsucG5nIiwicm9vdF9oYXNoIjoiSzhaQlJNWW5GSzRhOHhWTnBkWjlZZTZfdFJtelFRSjlocElTZC1fa2lqQSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZm0ucG5nIiwicm9vdF9oYXNoIjoiaUdac2pkdFQwcmEydXJGWTNWeXg4YnVyZ1JSeF9qNDBZMEcxQXNGbjhDRSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZm8ucG5nIiwicm9vdF9oYXNoIjoiLVpVd0ZKSlVyM2VnRHlXaV9ydzh4YzFiajc3VkVLbHJwdHBTZE5XUTZUWSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZnIucG5nIiwicm9vdF9oYXNoIjoiTmlCY3I2eFJIaVJ3TjkwSkFSX1p1VXpDdXcxeVFTYnpNQUdxT2ktSUY1VSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZ2EucG5nIiwicm9vdF9oYXNoIjoiQlNmX3JfYkE5UVVJM3l6R1hJWDBJNmFhRkM5TVVRSTV6bHZaQWh2X1FDRSJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZ2ItZW5nLnBuZyIsInJvb3RfaGFzaCI6Ik5yOGVXTlljalk3VGgtTHp4aDZZQ0FBbFlaTW8zRXdaZkEzRFByVG5URDQifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2diLW5pci5wbmciLCJyb290X2hhc2giOiIzTlFnbWNsa0RzTXcwM1FTVk5WcEZOMkNuVnFDbkVQSUxYWVNpTmNMenpVIn0seyJwYXRoIjoiaW1nL2ZsYWdzLW9mLXRoZS13b3JsZC9nYi1zY3QucG5nIiwicm9vdF9oYXNoIjoiNGNVUVFRUm50dkxJVnROa25wZlJfcXpJTXJla2w1eHhnNlMxNU5MVHQ1USJ9LHsicGF0aCI6ImltZy9mbGFncy1vZi10aGUtd29ybGQvZ2Itd2xzLnBuZyIsInJvb3RfaGFzaCI6InNNQm9WR3ZaMkdiRlJRM2ttUnNSbE42ZTg0bEF3UXIxeGxKdVdRYUZuUDAifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2diLnBuZyIsInJvb3RfaGFzaCI6Im5YVGpfOVkxRkFmbVhEZFZCWEZEcnpkNG5qZWNHT1NFMkNCalJvM20zSDgifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2dkLnBuZyIsInJvb3RfaGFzaCI6IkhxazhTRG9jckY3VEVtcjJ3bjRMWEhqSnl3NHdpSTNQei01N3d5Vkk3TU0ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2dlLnBuZyIsInJvb3RfaGFzaCI6IkxFN01XdTQxNm1SNFB5T3ZTRElKWUpQaWFWdEtaNkdjTEd4SllUYWFLaG8ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2dmLnBuZyIsInJvb3RfaGFzaCI6InNaUG8yaTVmVVdZdmdFYngxbXFWMGt0MExHX1RTcmNYVnNaUXFvZXZZLUkifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2dnLnBuZyIsInJvb3RfaGFzaCI6ImNWZ0ZTbDU0RC1taXhiel9pbGNRRktCM3d1M2NVRGlwQ1p5eFc4SDZxNzAifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2doLnBuZyIsInJvb3RfaGFzaCI6ImhESkVPaExteTBzU2c3NEhNY3RacURKelA5V2E2TTFqWUZsbGhDcldJRncifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2dpLnBuZyIsInJvb3RfaGFzaCI6ImNrTm1BbThWeGpWdUJVQnRTX2Fic2xad1NPSkgySVpxX1dWNy15Y3g3QTgifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2dsLnBuZyIsInJvb3RfaGFzaCI6InN4S1dyNy1mNGQwUWdheUZsMlRnY2xWbGg2a2FuYjZRQXFmbUFCbDJaQVUifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2dtLnBuZyIsInJvb3RfaGFzaCI6IlVhSG1wdXN1Y3Z6Y3FXaVNKUmdqYl9HNzhDZnlvQzBSdWRlSE80RS1vV1UifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2duLnBuZyIsInJvb3RfaGFzaCI6ImdmcW9QVWN4bElJQl91SUdySnZnOG9DdGRBZG9uYnhvNnNGZDBFcl9ESFkifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2dwLnBuZyIsInJvb3RfaGFzaCI6ImV5X0kzTE5OdHVIYjZ1UXBjUDBwcFd3cmJlQmZJZkVmdXJWS1RaRkhPV0EifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2dxLnBuZyIsInJvb3RfaGFzaCI6Ik1kTjFuajJVYndlR21KbVU0QkdGVTFjdWQwYTJYbklwamI0cVNEeW1oZXMifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2dyLnBuZyIsInJvb3RfaGFzaCI6IkxJZ3RKb2ljZzBxWEV4NDBianQyT0NjTkYwZkZFRTNORV9yMTcxVUJsUm8ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2dzLnBuZyIsInJvb3RfaGFzaCI6Inc5dVk0UlozQU00VFhYVTFuaE9RSG5wa24zMndLTGlSSFl4TmlIczdMZlUifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2d0LnBuZyIsInJvb3RfaGFzaCI6InZNOVhyWFNoTlFQcUJHbHN2Z05ycElPcVpDZXl2Nkx2di1CVVFXd1AtM0UifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2d1LnBuZyIsInJvb3RfaGFzaCI6IjVCX0lHNUI4aUNRWUVpVW1yTlZjc3diUkZHeUJFbUpvOUR0b1BTd3p2RjQifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2d3LnBuZyIsInJvb3RfaGFzaCI6IjEwN2t4SE1DUE15UWF1bl96TTI0MlFSWlZJcHBMRzhNaEcxVkJaTk1rbDgifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2d5LnBuZyIsInJvb3RfaGFzaCI6IkNyTkduSm9hMUdVVWY5aUtXclUtMDRxZmgxRjYzQ0w1dWV0MzlmY29PX1kifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2hrLnBuZyIsInJvb3RfaGFzaCI6ImtaNG5TaUNmNF9xS2pPRDJldjlPOUFaRXhMajVHT2IyZXhxYkZMX1VlSDAifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2htLnBuZyIsInJvb3RfaGFzaCI6ImtETGlpQzdRWjdDazhWWFJ3S1FLYUNYdmRpVzc1NGQxMzhZYWVZSTdJWDgifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2huLnBuZyIsInJvb3RfaGFzaCI6InphQlM5aUZPVW9FSUFBSkduZDRMdVZvOHg5YlQ0Q1NHLXJDcy1WQ2FvMTAifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2hyLnBuZyIsInJvb3RfaGFzaCI6Ikw3d3cySnZoTmxwSi1DeVZuSXNnWTVwSmlxWkxPWEttR3VWNHlSNnROcFEifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2h0LnBuZyIsInJvb3RfaGFzaCI6IlRNck5XQUxXNGNuWU9ZSmJqZWZUYUZZU0JjU21neWJVaElJeS1LOGxTWXMifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2h1LnBuZyIsInJvb3RfaGFzaCI6InJrOVdQZmVvYzRNZ21JOERPUExleG00NlZxSFNoSFlpZDBvbjNaRU5wQTAifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2lkLnBuZyIsInJvb3RfaGFzaCI6IldsS3hLZHRFM0dGbWd2eTg1V1pvTmFVeWJlc3RWNHM5SlpqRTNVN1QyR28ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2llLnBuZyIsInJvb3RfaGFzaCI6InFPUWFqeUtMelZwTzdsNUtqc09wNTdEbngxd29QMkJ3YkhjcXJnakI0UTQifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2lsLnBuZyIsInJvb3RfaGFzaCI6Ik1YWkY2UDRubkZ4aGd6WDIwUGxWNm8yTWRtM21IVlpmOExhSl9uTWRFbk0ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2ltLnBuZyIsInJvb3RfaGFzaCI6ImV4ZkhsSk8xaF9XUEZ6a2dWRVZ2WkVrYkhPUkVWQ3VDT1UycVk0MXhRdkEifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2luLnBuZyIsInJvb3RfaGFzaCI6IjZtaDlEZHRHb092bXhtYmxZUG5fZ2xJUzFpaUQxekl4ejFwM21MRXpuek0ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2lvLnBuZyIsInJvb3RfaGFzaCI6IkI0ZFVpelFoQmxjNlVKV1lLSVo4TFdBNXhIV3RtTEplZXdTRVZqeXR0QU0ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2lxLnBuZyIsInJvb3RfaGFzaCI6ImFVSWxfRE96Smlub3U4VHo4bl85bDlSWDAtelNqNkV3ZVV5WHpYRm1Gb2sifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2lyLnBuZyIsInJvb3RfaGFzaCI6IjRJUTlMRlhkTmlOZjR2UXpOVlZlU3V4bGJfYnVKQkpiUWxaUXlSNkwwYlkifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2lzLnBuZyIsInJvb3RfaGFzaCI6Ik9GMU5mWFBDamoyUW9RcXdGTjhuOVVRNHBrc0V3WXpJWWpLS2NhaFV3ckUifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2l0LnBuZyIsInJvb3RfaGFzaCI6Im5jQnF3MVpMVW5wX2FlYk9xeFJFZllsM1Y4ZHU2WXgtS0hzSTFZTXI5REEifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2plLnBuZyIsInJvb3RfaGFzaCI6IlFVTHlOcDdtZmxLSjBzMWd6TU81SnVBOWJOZnZTdXpET0RsbkVleXJxMVUifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2ptLnBuZyIsInJvb3RfaGFzaCI6Ikd4MkJWdnFSbmU5dzM4VC1aUmRSQzRySkFFMEUzVFpwdDREQ0d4a3QyRHMifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2pvLnBuZyIsInJvb3RfaGFzaCI6IkRMMWJFY0oyeENHeW5qMV9JZ0VwUW5lRnd5dHRtTjBXTHhILUw4VVgyRzAifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2pwLnBuZyIsInJvb3RfaGFzaCI6ImV1ZHQzYlc0cjY5UWJLVEc5Z1NBLUhibTN3S29IbVlEZkdXdUxtWFNFZVUifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2tlLnBuZyIsInJvb3RfaGFzaCI6Im1aTDNMYkNKd0xwbUU2QTFZdHFUbDRFb0dNenB5NmZvQjYtVkVFVVZkdUkifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2tnLnBuZyIsInJvb3RfaGFzaCI6Im9NWDZvS1hHYndMUTN3MWlnT0Nwb0JLeVE3WUVEVEpILXNyZVdOY1N4aDgifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2toLnBuZyIsInJvb3RfaGFzaCI6IjZJcU94SlJMZC1fVXprSDJSZ2xnbXdYS0ZISmkwVk1mRTJDVl9LdU8zMzAifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2tpLnBuZyIsInJvb3RfaGFzaCI6Im1qb3BZMEVGYTdQVHlrc3JBS2ViSVMtcmVUX2h1S1JieHVLRGNvOGp5TncifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2ttLnBuZyIsInJvb3RfaGFzaCI6IkU3TjYtdnd4UWJJWW11M0VQM2pYOVlBdmtpQ0xMX2tva0VPdzZrMlpOZ2sifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2tuLnBuZyIsInJvb3RfaGFzaCI6IlllcHZicE5TbFhGc0xPVGx6ZWttVDdzRjI5N1N2Y2NSZHVxRmhCZ1RDNFEifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2twLnBuZyIsInJvb3RfaGFzaCI6Ill6RWVCSkp2MzdnUlBJUGgxM05YZW9XNW9zakJEMWdEQ0VtZ3R6eTZnckUifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2tyLnBuZyIsInJvb3RfaGFzaCI6IjA5Ynl5QVVSWlB0eHBDSk14NjF0SFFBNW1sX2RnclpYc0xaSmR0Z2w4aGsifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2t3LnBuZyIsInJvb3RfaGFzaCI6IjFFdVM5LWZ5V2JHWWJLc3NkUmpaM0UxU19oUERRS2ZUelBabGszQ2hIdXcifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2t5LnBuZyIsInJvb3RfaGFzaCI6IlBqNVdLLWJRV2lNZ3owOXY5S0I0ZlotVEpiclVuN3ZTTEZIY3hLQlJiakUifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2t6LnBuZyIsInJvb3RfaGFzaCI6IklrYnNKQ1BtR3lsRU1zUk4zMWxka2FqdVM2S0daOHZVZVMtRkVsVlhfZzQifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2xhLnBuZyIsInJvb3RfaGFzaCI6Il85Si1vc1lHUU82bVEyc1lERS03cXJuOHJXNWFQbi1vWkdvUXlQc3hwVGsifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2xiLnBuZyIsInJvb3RfaGFzaCI6ImZBcjN0WmR4MkZNbVpSTGh1eVoxTnN3UVlWRHRqSjhFTVRHQ0hjaVNXMjAifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2xjLnBuZyIsInJvb3RfaGFzaCI6InZ6ZnJIYnZZNkdnOF9xOEdkeE96eDM3TUZvZndnOHowZDNwSl9GYzFDdGMifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2xpLnBuZyIsInJvb3RfaGFzaCI6IjF6MmZ2bDg3NGlxTUhLUGx3UkxGMmo5Zm44UW9WWUpMb2tQYmx4am9xNGcifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2xrLnBuZyIsInJvb3RfaGFzaCI6Im42c2NfNnhZWjJ2QkNwakRNZnM3MzdNNVNzUWtyOGFHUWJsMTVha2R6cHMifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2xyLnBuZyIsInJvb3RfaGFzaCI6IjF3dGpHblRtLWZOd3Rja05kWUxQZUZHOTFsR3h5ZG45NDdIWHAzMWR3SEEifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2xzLnBuZyIsInJvb3RfaGFzaCI6ImpCZGRFZjB1ZFF3YzJkdm80a3JJWi1rd3RLWEc1cmNhT290eHlweWFLbjQifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2x0LnBuZyIsInJvb3RfaGFzaCI6Im1vcVVhNHZvNnEtaUwzNTViMXd1emx0OU1ZZGVEUFZXUndNZV9xZVk1RFUifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2x1LnBuZyIsInJvb3RfaGFzaCI6IjNyMkQ5Qjg1TDd6TFN2bUhMWGQtVnNDRE10c05MaVNSQmY5YzVLNTI1SWsifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2x2LnBuZyIsInJvb3RfaGFzaCI6InJQOXBoVHY0Tjk3bGRISnJ3LUxacUNkTkhYam5JaWZVaEpSeFJaSTBtOFEifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL2x5LnBuZyIsInJvb3RfaGFzaCI6ImVxZnZTVWc2QU9tTTJKd0FxTnNtZ0hUMDh4MzZDWmUzMHpINVJic2xadGMifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL21hLnBuZyIsInJvb3RfaGFzaCI6IlhPazdEYy1YRnE1cl9Yd05UbHlMTlFBejB6TlhrRHVpQTA3WXdzUlRSYW8ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL21jLnBuZyIsInJvb3RfaGFzaCI6IllCNUhLaF9FenBleHhDbm1aQkhHU0ZLSTlHb1NiUXdGMHNvb2hpZWEwdzAifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL21kLnBuZyIsInJvb3RfaGFzaCI6IkhoOFVaa1lxM2dsMnZNNDRFbTJHX3hTam44ajloY3BncFhaWkNXWGFXRTAifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL21lLnBuZyIsInJvb3RfaGFzaCI6IjVJakdoS3oxTXNlOTdjeWlPQkMyeE1PVGNDTE1IS0xvUm11Q3FNNU4xRDgifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL21mLnBuZyIsInJvb3RfaGFzaCI6Ik5pQmNyNnhSSGlSd045MEpBUl9adVV6Q3V3MXlRU2J6TUFHcU9pLUlGNVUifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL21nLnBuZyIsInJvb3RfaGFzaCI6Im9jVlVYSW9WcXd0aGx0c19iNnN3LTJLUXVrTk95TUp4eFRTMXN2TjlpMHcifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL21oLnBuZyIsInJvb3RfaGFzaCI6IkQxMHo3cWtqLS1PamRxYlQ2YWd0cVNuOTRkTTdqMVVXR3Q4aXluNl8wQ28ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL21rLnBuZyIsInJvb3RfaGFzaCI6IlhreWRMMEpqZHZJSlJMRkFObjBZWXdRN0ZzaWxLZllsUjBTajB6aFVoUGMifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL21sLnBuZyIsInJvb3RfaGFzaCI6IjNuSUQ3ZjAyZFNrMlNKSlhMOHNPeWFKejR1bE1neTFXOTE5VHpYY3Qzb3MifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL21tLnBuZyIsInJvb3RfaGFzaCI6ImNwTmtrTS16dzJOYWhZZ1NQSDc4ZjlSTEdxNUZUcURPYWM5V25wUlhPelUifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL21uLnBuZyIsInJvb3RfaGFzaCI6IjBQa2lMTHhIRGRJQ0lVRktTcjcxOVdtRWVRdWFzUEhwX2k4dl9QMkZSdXMifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL21vLnBuZyIsInJvb3RfaGFzaCI6IkNHRUdoOG5uU0tfYnhhN1FWaTY2NlZib3FvYzFXUDI3dUFnelEzeGt4aFUifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL21wLnBuZyIsInJvb3RfaGFzaCI6IkhXb1hyX2RJWFhfSk1OTllBSFlmSnpYVzdyT1l3VnVBUW84T3EzSmNzelkifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL21xLnBuZyIsInJvb3RfaGFzaCI6ImEwOERaUU1HTzZET1IyZDVoSlgwVEo5V2RkMFFManl4SmlSb0FfbWV6VTgifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL21yLnBuZyIsInJvb3RfaGFzaCI6IlBpd29tUTZ5N2lBX0cwMy1qbnFJN2txSTllQlBQZ1hBS0lIbFdna2xpYncifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL21zLnBuZyIsInJvb3RfaGFzaCI6ImQxbzBINUJxOGNHUm1sYlFXTzFPcXJ1WVZiME9Qb09LaEsyM0xjSG1GN1UifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL210LnBuZyIsInJvb3RfaGFzaCI6ImF3YlFxZkZIX25LWHB4SFd4NnVFaEdwcjB3ZUNpeTUwZFRULWdTTTZnR0EifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL211LnBuZyIsInJvb3RfaGFzaCI6IjgwaHpOSEZpZjlBd0oyOGVaS3RrWkdTcGlyamx5MjczdWJ6Y19yVE9qSWsifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL212LnBuZyIsInJvb3RfaGFzaCI6ImkxSVg5M0xJZTVQaUkzYm16X0V1MDJHNThYOWRpYnBvYUJLNmREVUZNNUEifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL213LnBuZyIsInJvb3RfaGFzaCI6ImhnMUtMbGtIcnV4NG5rYlkwNnI0RzNENkFzbjBqeTd0XzZIRU1NeWtoNmMifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL214LnBuZyIsInJvb3RfaGFzaCI6InJLMXhPS2YxYUVSSmhPSDBLYjV2aVhwUy10RnZjUGxsTzh5TlpZbUlIUVUifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL215LnBuZyIsInJvb3RfaGFzaCI6IlFQanlaMndvZXdsTmlfMkFmdndiMXlic1YxX2dkN2lOaHQ5TDMxaTUzemcifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL216LnBuZyIsInJvb3RfaGFzaCI6ImpfM2JoYWp3Sy1ZMHdHanRLeWtWd3RhRFF0Z2RRMkNHeC1XczVFaElXazgifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL25hLnBuZyIsInJvb3RfaGFzaCI6IkEzcVMwRV9LcUF4UTIyeXBZblRIcGV3YVFjU285bjV3Z1Q3SGxhSlI2OWMifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL25jLnBuZyIsInJvb3RfaGFzaCI6Ik9OY3g3b2gxUEU5Xzh3MVZTYTdaX3licTctRnhTSWRfSUNJeTJCODc3MmsifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL25lLnBuZyIsInJvb3RfaGFzaCI6IkxqRkF5YjRJTkpmbEh4LTVKX0tFcUp6akd5RWZ1WWpnUkRMdk1CZTVpZ1kifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL25mLnBuZyIsInJvb3RfaGFzaCI6ImhJU1VMMzdZZ3NKdGVLbU5GSDNmRTROVEx3Znl3UkpsdnFhOTc1YTc1OGcifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL25nLnBuZyIsInJvb3RfaGFzaCI6Ik9YQ3l6WEduN0RkSVBXYllvSkd0Xy1HSmRtTHo1ckZySFI3NjMzNUtxTzQifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL25pLnBuZyIsInJvb3RfaGFzaCI6IkNZLXJ0Vm9rMWxHOXdIUU5WcXRMYUhOYWQyWGhNTThQMFFYVDUxSUZlbjAifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL25sLnBuZyIsInJvb3RfaGFzaCI6ImU4UGxYMWtnVFdHbUlRbUVseHY0TEdrWnJzU0ZBS1JYZTQ0RS1qLUZiSG8ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL25vLnBuZyIsInJvb3RfaGFzaCI6Ilk0NFdKUFdDMndNYk1pZzByYmF5bE9JV2J3MGNlY3VlUmlRUFlVRnBPdk0ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL25wLnBuZyIsInJvb3RfaGFzaCI6IktmT2NuN2I5WHRuU21VaEg1a0RKeUg0WjZQQzZHQjdUekd2VTJCam80LTgifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL25yLnBuZyIsInJvb3RfaGFzaCI6Ik9yNjBhcVdtUHNpcURQUUh2WEpETTFLX0FybkVTUHc0aGVRcVEyOWJKMW8ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL251LnBuZyIsInJvb3RfaGFzaCI6IldEdlpGMi1nQ3BNZFdCQ0FzdzlIUktwRG1xeFRaeDN3YUxubmpPTEdzRXMifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL256LnBuZyIsInJvb3RfaGFzaCI6IjhNZ1RId2J6bkhVMEsyY0hmeENiaWp2ek5USkZfT0Zma1c5d0hmUnJtY3MifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL29tLnBuZyIsInJvb3RfaGFzaCI6InRvUlFXRlcxMFRERmgzeFJiRUxqdTZTeFN5bzZkazhwLW8teGVMUDlYMVkifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3BhLnBuZyIsInJvb3RfaGFzaCI6ImZqUV8wOFZNNWZWZWN1WmxPSmlsZDFLT29Vd05wemp0LVc0TkFpcGx6RlkifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3BlLnBuZyIsInJvb3RfaGFzaCI6Ii1TcHZtb2VfeU9veGJxbWN5U2JvXzJlOEY2a3F6X0VZOEFRYnViU1AtcTAifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3BmLnBuZyIsInJvb3RfaGFzaCI6IklsMFo2cFI3LXpwS1dEMFhfNm1pMG1OOTZUYnNWZFZBN1V0ZzViZVJoYW8ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3BnLnBuZyIsInJvb3RfaGFzaCI6Ilk1V2xzYnBVaVFFelBxZWJEVEhraldZWk1KSmppSUlEVjRLQmVUekxIcm8ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3BoLnBuZyIsInJvb3RfaGFzaCI6InVpZzRnRGdsNnJ0VDVubGFGdlA2Q0pSVTV4aThaeTNDN0RqQU4yT0dsbjAifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3BrLnBuZyIsInJvb3RfaGFzaCI6IjA0Z0ZIR2JtaUdFZk9HTGJ4SkN0WlBOVnFCeWZKUVk5ZThiX0EwQUNqaFEifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3BsLnBuZyIsInJvb3RfaGFzaCI6IlJfNW9UdmlrRFBRRXM5MURPOUVFeDB6S1R2WWtrTzNlV2FLV1Eybms4MEUifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3BtLnBuZyIsInJvb3RfaGFzaCI6IjhSd1dhd0M4cWhpT1NQc3lZWFlwSEZaNXlmeFNkdmlpMGhnTXBvblpFS2sifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3BuLnBuZyIsInJvb3RfaGFzaCI6IlpGTHJ3bUFseDZodG93MmpiT2UtN0l6c1hza0RiVndpMkEzTlZrMGUtUW8ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3ByLnBuZyIsInJvb3RfaGFzaCI6IkxSLXhQVTFzeHVFaDdpNjdfcEhtN0FELWxFRUtCWGF5UGV3YlVHTFBZbVEifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3BzLnBuZyIsInJvb3RfaGFzaCI6ImVwZTlrUm1IaEdyUWpKdlM5ZFpqa0FWT2hwbHlrQ2lOUnVUYktEaHRzZHMifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3B0LnBuZyIsInJvb3RfaGFzaCI6IkhQNXJpM2lIS2xiMmVJM2xSMGU2RlJSMnNpZVotWmhRdGxadnhsTUZxTGsifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3B3LnBuZyIsInJvb3RfaGFzaCI6ImxXcUNjalFvS3hJTkRkcnZjUWdKR1NhVmJRYlhpaDJfU0h1LVFYZG1OdDAifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3B5LnBuZyIsInJvb3RfaGFzaCI6ImVxQ2F1cl9saUFvYTdZWXprV1o3RzZuaVdaNGVFcTFyWlhtMkJpX2lWaUEifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3FhLnBuZyIsInJvb3RfaGFzaCI6ImU1YVZibTlQQjh5VG1YcnZNdTFlckFicFQza1BlWTFWSm1ELVZHN2hHME0ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3JlLnBuZyIsInJvb3RfaGFzaCI6ImFOb0RoR0tEUEp3T2NLU2xsR0xwOXYxOTllWlNvX1dOaXF3MFVRNE9zRUEifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3JvLnBuZyIsInJvb3RfaGFzaCI6Im1KV29XUWFOZFVVaWNyb2o4MWZYQnE3bnZvd0NJbXRzTmZ3ZlhUWUw3Ym8ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3JzLnBuZyIsInJvb3RfaGFzaCI6IlF1OWRaRkRsRUxReFNVRmtoZDlJTnZ2MVFoWVJSb1lfTEtJc29vZm9YVTgifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3J1LnBuZyIsInJvb3RfaGFzaCI6Ii1ZelhMVHN1OTZhTnRkUjNVamdUS1FtUEwwUzRyWXF4VVo4MVZGNjhZc00ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3J3LnBuZyIsInJvb3RfaGFzaCI6ImxIUHhZN1JDVk1oMjdxT3haeUxXYllKOHRGMlZwM0pkUllwOHVwX1ZIM0EifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3NhLnBuZyIsInJvb3RfaGFzaCI6Ii01d2pLNFVuR2xiVlQ5eVF1Wmh3RVpaVWU3MlRrVzNfOGRTNkxPRk1SRk0ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3NiLnBuZyIsInJvb3RfaGFzaCI6IjVEdDc4R185YU9jMEVtbjV2TEdYenlQb0Y3T2NfckZTMHVQTkdtb1hwcTgifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3NjLnBuZyIsInJvb3RfaGFzaCI6IlE4NmtibjVQZW83MU4tRWk2cmxIVEpZTE1iV3RBZmZlSUp6RllZMFYyRUkifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3NkLnBuZyIsInJvb3RfaGFzaCI6IndabWVHTGNVZUZiU1ZHdFJxNHNySWJlcjdnaW5nUVpjNzlDNnNSaGR1enMifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3NlLnBuZyIsInJvb3RfaGFzaCI6InJGZ0VEWVpWdnRwODRoY0ZCcjhTaVJoX2E5STFmWkJ6Q05zZEYtZFVET1kifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3NnLnBuZyIsInJvb3RfaGFzaCI6ImUzakRiVFRlVURTOFc5dVlmUnNrWGFoTkxYQkpZSVRYRmNldVpVZmY5ZU0ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3NoLnBuZyIsInJvb3RfaGFzaCI6IlgwSzBFdzRFeEJ2TC1IclNMcm5qVUsxdHpZWGVVRFRNdkJXbzh1N2hFRkUifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3NpLnBuZyIsInJvb3RfaGFzaCI6IjhRZmdVMWZEekhBcG1xZmZ2bWJmR2I0YldZbk5EZk9NYUNHZDhnYkV6YU0ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3NqLnBuZyIsInJvb3RfaGFzaCI6Ilk0NFdKUFdDMndNYk1pZzByYmF5bE9JV2J3MGNlY3VlUmlRUFlVRnBPdk0ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3NrLnBuZyIsInJvb3RfaGFzaCI6ImFNODVyS0g4eGVGUkhoQmp5c3RydWszMmJOUHdIT2RLWUxZNnBDa2tBY0UifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3NsLnBuZyIsInJvb3RfaGFzaCI6IkZ5OXBJbjZaaDNaSEg3REFEUVJLNmtYRzYyR05RS1c0RnI5a3I3M2xpVEUifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3NtLnBuZyIsInJvb3RfaGFzaCI6ImhfS3VUazNxa3Y4VGNJQTc5bWNaSHFvNjdjUGFlLV9HT2p2ejZxa0ItM3MifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3NuLnBuZyIsInJvb3RfaGFzaCI6IjhLdm5JSFlnWjVKMWx0a2FuS24wYTMzQzdzRTduM1Q4V0R5VXNhdHQzaEkifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3NvLnBuZyIsInJvb3RfaGFzaCI6IkxBNkpGNy1ZMTEtSHhVcFNjVTY2T2c5eTNPU3FlQVd0bnZwNVdqOUhCU28ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3NyLnBuZyIsInJvb3RfaGFzaCI6IlNGVkZwMnprWE9SN1dXU0RVc3h1ZWpsbmh2SHhkLTJCTmZpTEJDWGZ6dUEifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3NzLnBuZyIsInJvb3RfaGFzaCI6IjZQSWdYU3FOQU1PdkZvT180QWwxSmdadTB1UUJBX1otRXBZYjJUblQxMDgifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3N0LnBuZyIsInJvb3RfaGFzaCI6IlRKSTdtb2F2bEtGNnZ0eHA3Nk05QmkwdEtGbTFzNzZzaDVEbVRFd09vSFEifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3N2LnBuZyIsInJvb3RfaGFzaCI6IjJaM1lVQjVRaGFSUy1iVmZ3QkRwdmRDUzJfR0ZGTnVJZDFNTlpGcnJZMDgifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3N4LnBuZyIsInJvb3RfaGFzaCI6Inp2WTlHYzJqOTBmTXlRbG90dFluNTVVbFV2Q2JYMWxhMDE0Z0w5RmZzdGMifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3N5LnBuZyIsInJvb3RfaGFzaCI6ImlvWHNEZ3VWcTNTZGhsRjBscjRpeWlzZXY5X1l6UU9zRnlENEdrdkthTm8ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3N6LnBuZyIsInJvb3RfaGFzaCI6IkdnYkpYeUNFXzJhMW5EOHN2TGwxdHB5dERsNk0xVGRwR0pyeW8yNnFVNEkifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3RjLnBuZyIsInJvb3RfaGFzaCI6InNMbHZWeFpTSGJVbk9UeENtZ24xSFRORmZuSHNiWExXekluaTdsS1I5eG8ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3RkLnBuZyIsInJvb3RfaGFzaCI6IkZTX2Q5dVJsTXNFUVFFTWlOZzFxY1NqMk5WZ1ZKQ2FtX0R0OGlFQ25CeTgifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3RmLnBuZyIsInJvb3RfaGFzaCI6ImdEamxvWTlkbmN0SVp1VU9MajhvcXpOVlB1YlVUTnVWLWxUUU11RWkzeHcifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3RnLnBuZyIsInJvb3RfaGFzaCI6IlZPbUllQjBJN3VfY3I1SExOZWZfcDNHb0xoUUtGeGtVNmR3U3RWSDFWa2sifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3RoLnBuZyIsInJvb3RfaGFzaCI6IkwwRXRJSmI0OGxTa3BiRlNPOVpIcVlfZlB1RFhFRnFZWHVPX0ZBekp5OXcifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3RqLnBuZyIsInJvb3RfaGFzaCI6IkY2N0hGWjh5dURKZFlXNkR0cTVKbUI5eUIxMzZqOGo4SXozdFJoSU1pSjAifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3RrLnBuZyIsInJvb3RfaGFzaCI6ImdoY1RjYndDU0Jsbm1vZ0k0blN3a1VodHE3SWpzTUxZTWJnY1hiZE1HSDAifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3RsLnBuZyIsInJvb3RfaGFzaCI6ImdQdHpWNjZzbGdTOXE0QnNRRVdET1hsN3dmTm5zSklKN0RRMm4tdFRNSXMifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3RtLnBuZyIsInJvb3RfaGFzaCI6Ii1jOHFpc2VGS2pVTWxMcFZSdmphUm9taUhxeC02QVVGYUlocmdNU2ZHNU0ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3RuLnBuZyIsInJvb3RfaGFzaCI6IkJtU05HazhvS25RYU1XY0c1Y201aVlvcHZPMkJzdWtxaDJQRTY5QmllQkUifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3RvLnBuZyIsInJvb3RfaGFzaCI6IkpHQ1h2dEZBQXQ1U25ubXNRU1AwTzVhZHFXeGFlMUFWRTNxTm9GWFdMckkifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3RyLnBuZyIsInJvb3RfaGFzaCI6Ik5NMWUtX0szc0F2U2huSGVPbnMtSW0wRXZtcGpUNHZiVDlrdFF5VE9oc0UifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3R0LnBuZyIsInJvb3RfaGFzaCI6IkF1eXBJOW43ZHVzUF90bXF6M1E2aW8xRjJ1a1JWdERsSlY0WUtIQXdwbFEifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3R2LnBuZyIsInJvb3RfaGFzaCI6IjF2dzV2NnhaSDB2YkhhYWhuMjVnQ3p5aHlVY3JZWEhVZjdyZC0wWnUyOXMifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3R3LnBuZyIsInJvb3RfaGFzaCI6IkJuSjVaYU10cWkyZWVjSGtQdTdySkYtUkN6ZV91aUlZc0U3ZFVyd3pfaGsifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3R6LnBuZyIsInJvb3RfaGFzaCI6Ilc3UjBXNkhYdFZZR1hRYW9BTG5WVjUxVHFoOWVzUjZaTlJDX2tKZk5jTkEifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3VhLnBuZyIsInJvb3RfaGFzaCI6ImRHWkJIdWp3ZTJtTkhOMVg3WkUxckE5Y3ZRTm0xN3Y0aDd6N1hKVUN1YTgifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3VnLnBuZyIsInJvb3RfaGFzaCI6IkgzVWEyeFBFcDBFOXpZdHh2UVpsaWcxWURaeWVxcUtNVUtDc09wcF9LSTgifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3VtLnBuZyIsInJvb3RfaGFzaCI6ImxQMlA2ZUZPWGZ4a0FVdTc2MFdMNGtCSC1BVThPS2JOR2dYMlRHMU94X2sifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3VzLnBuZyIsInJvb3RfaGFzaCI6ImxQMlA2ZUZPWGZ4a0FVdTc2MFdMNGtCSC1BVThPS2JOR2dYMlRHMU94X2sifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3V5LnBuZyIsInJvb3RfaGFzaCI6Ik5sclZrR0w1WkVRQ1FNTjVJWElWMExuX1lESWVDN2VXbTR6Ml9YSmZnRUEifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3V6LnBuZyIsInJvb3RfaGFzaCI6InJaaEdoWU9lNm9nWkptQllvbXk1d1R1QUJnYkVNSlV0ejNmbzN1Qmk3cm8ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3ZhLnBuZyIsInJvb3RfaGFzaCI6ImZXNEFtVFJSaHU3NmZ2bk9waXhwNzZRcG5sMHFHQW9zcWswbmJaZjJIREkifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3ZjLnBuZyIsInJvb3RfaGFzaCI6Ik5BeFBZSkZ4ejVOTXNHQTZrVGdka0hqcV84Qm13WjdvQzZXUUF0NEx0d28ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3ZlLnBuZyIsInJvb3RfaGFzaCI6IkdLbTR1REN5RVJDZ0VrQS14cWFjeWY5TUxYYnd3YzlfWW1PcFliVTJDTVkifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3ZnLnBuZyIsInJvb3RfaGFzaCI6IklWOGZ4ZHFSd29mWHRaMVljaExvRTJYYXlvQkNCa0s2RDd4dHpBNHFIQ1kifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3ZpLnBuZyIsInJvb3RfaGFzaCI6Ik5DYWhlQnR6ajVqeVJHTHBqV1czSWVrSEhOS1o0LWlYQVBraWpETkVNOXcifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3ZuLnBuZyIsInJvb3RfaGFzaCI6ImRDSEg2RnhuWFZfYTQxN1o4TmgzTVVYQThQRUFjME00Mk9CcFQ5TGdSTVkifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3Z1LnBuZyIsInJvb3RfaGFzaCI6ImFmWWVMSURNeGplQ0RjXzJxaEtEY2c0Y0lfaTlnT1IwdFJ0Rk1LSkdRdTAifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3dmLnBuZyIsInJvb3RfaGFzaCI6Imx0RUxmNHVySVFHR2IyakNVRUxIOVU3T3NXWjd0YjNxQ0RqLUM2VUpQTm8ifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3dzLnBuZyIsInJvb3RfaGFzaCI6ImptU3dWZkNCdGNrS1NkZzB5TW9zTlhhMU01Q3dRVFhvMDU0eUhjNF9XOXMifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3hrLnBuZyIsInJvb3RfaGFzaCI6IlN3azdpZEhieHhCZENvWGxzSnh1dTRVVWgxT3pLQ1Q1aWxMXzdHV2cyMGsifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3llLnBuZyIsInJvb3RfaGFzaCI6ImFlUXpfN29QenJrVHBRaWYtV0lmTVFBdHhoQkdYM2VWbUZGYmRzVHR5R3MifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3l0LnBuZyIsInJvb3RfaGFzaCI6IjRlY3dGd0otSjNVR2JrQ21ySzZVOV94RlE1S2dfaWprX19uWEpqYlNiUkUifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3phLnBuZyIsInJvb3RfaGFzaCI6ImZuYzRNVVZYZzR5LWtuaTlSaDZiTEl0SlQ2bE0zNEpyWnc3bjFranhfVEUifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3ptLnBuZyIsInJvb3RfaGFzaCI6IlFieDZ2dnF2ZUZfdWZ5WmVWeWVmRnZNMElBekZsOTZ6d2RCa3pzQy1KTncifSx7InBhdGgiOiJpbWcvZmxhZ3Mtb2YtdGhlLXdvcmxkL3p3LnBuZyIsInJvb3RfaGFzaCI6IlZVN0FCMk1rWXhQVmt4ZWdiWVI3UWxiQzZ3d2w5Q2lhM1Z5NldiQnhXczAifSx7InBhdGgiOiJpbWcvZm9udGF3ZXNvbWUvTElDRU5TRS50eHQiLCJyb290X2hhc2giOiJ0dHBKQW9BSHJrdjNrZWpZcXV1QXFpYzVPdWppMHpqZURvZWZlUTNra1ZJIn0seyJwYXRoIjoiaW1nL2ZvbnRhd2Vzb21lL2ZvbnRhd2Vzb21lLWRlZnMuc3ZnIiwicm9vdF9oYXNoIjoiSElTUGtSTGdCVmJqaU83bkF5azhZOXFEOXhfT0VDd21zMVJ1MjRoSlNwZyJ9LHsicGF0aCI6ImltZy9oZWxwMTYucG5nIiwicm9vdF9oYXNoIjoiaU9Ta1ZjZUlWREhjR09LcjVpbVI5X1BnN1NZWkNTY09JQ2tzOXh6Y2tZbyJ9LHsicGF0aCI6ImltZy9pY29uXzEyOC5wbmciLCJyb290X2hhc2giOiJ2cWtubTJFQkdTdkVlTFJOWUx3XzZ4ZWFocTBqOGlRRTlpQ19SenBQa3dvIn0seyJwYXRoIjoiaW1nL2ljb25fMTYtbG9hZGluZy5wbmciLCJyb290X2hhc2giOiJNSGdKaFptNEx0UHA2WTFiLUFqdWluWk9yY3F5ZG5xeE1aQkVNc2pQTWhVIn0seyJwYXRoIjoiaW1nL2ljb25fMTYtb2ZmLnBuZyIsInJvb3RfaGFzaCI6Iktkc0NDZXV3UnBDNS1rYjhZRy0zb0RHaXVfNktMdjQyLUdSRWVEb0tSMWMifSx7InBhdGgiOiJpbWcvaWNvbl8xNi5wbmciLCJyb290X2hhc2giOiJWNEVTbFllRmRTQjNGMUJZeWFwNWw3V1hHdDBQWlQtNGc4YXllQ0lrcG1nIn0seyJwYXRoIjoiaW1nL2ljb25fMzItbG9hZGluZy5wbmciLCJyb290X2hhc2giOiIwaFF1d0hSY3BQWUVvYkUyd192MHZlWjY2YlZfQmhKelZQQ1lQUHI3b05zIn0seyJwYXRoIjoiaW1nL2ljb25fMzItb2ZmLnBuZyIsInJvb3RfaGFzaCI6IjZpeUs4NnkzTEFkci1odmZzWHd5VzM2bC1aMW1SdEZSaE51T1o0dmpRRjQifSx7InBhdGgiOiJpbWcvaWNvbl8zMi5wbmciLCJyb290X2hhc2giOiJ5ZU9nTHh0eEZoV0FlZUp2S0FyWFphSTZRaWY1d3ppYklyeUQxbnNUaVBFIn0seyJwYXRoIjoiaW1nL2ljb25fNjQtbG9hZGluZy5wbmciLCJyb290X2hhc2giOiI4SldVQmJubWU4VndIanh6dDVSQ1ljOHNtd0kzU0JhdmNvSW5KTTJVX0trIn0seyJwYXRoIjoiaW1nL2ljb25fNjQtb2ZmLnBuZyIsInJvb3RfaGFzaCI6IktLR2NaS2tudUVpdnZQM3BPUDEyVzZTSHNkZWlHYi1rRTd4d0ZQcG1KRXcifSx7InBhdGgiOiJpbWcvaWNvbl82NC5wbmciLCJyb290X2hhc2giOiIyR2FpVTNMNGpLdFRVQnJOYzVuZ25oR29CYkdsNW5nX3pFT0VCNnJCb2pvIn0seyJwYXRoIjoiaW1nL21hdGVyaWFsLWRlc2lnbi5zdmciLCJyb290X2hhc2giOiJWU2VtNWRnVlVpMWFzdElWS2cyMWZuVG05U29kMVV0RGtZTzEzSW5LdF9VIn0seyJwYXRoIjoiaW1nL3Bob3Rvbi5zdmciLCJyb290X2hhc2giOiI1SUFjOWNCYWFwckI2elpId0V4NmdPR29UM0tZX1p6dlFvcUlOcHphRVBzIn0seyJwYXRoIjoiaW1nL3VibG9jay1kZWZzLnN2ZyIsInJvb3RfaGFzaCI6IlRzS2RQRUJSWEs1UXl6X1Y0NEpFNVBBMDBVQnRDR0FHWmlQUFNyRUpyRm8ifSx7InBhdGgiOiJpbWcvdWJsb2NrLnN2ZyIsInJvb3RfaGFzaCI6IkJjT2V2VmlCdjAzaHJTMWZCTUhiX2U2NTRUSy1ZNjF0YmpRU1V2R0tTdjAifSx7InBhdGgiOiJpcy13ZWJydGMtc3VwcG9ydGVkLmh0bWwiLCJyb290X2hhc2giOiJfcHo3N1NKZENHWTN4VFJUZk9CVUtVYnZaSjZSQlNUOERlWDlVX050aWhVIn0seyJwYXRoIjoianMvMXAtZmlsdGVycy5qcyIsInJvb3RfaGFzaCI6IjVOeW9YQmJTellFeFRSSEo5ckt0N1I0ZVFKZlg4dVRrN0VmNTlmZGFVMWcifSx7InBhdGgiOiJqcy8zcC1maWx0ZXJzLmpzIiwicm9vdF9oYXNoIjoiOHBqU0Y2cU9NUE81S3BjQ1p6aW1FOHpvMEF0WlBZMkw3ZXFDSExQSThQZyJ9LHsicGF0aCI6ImpzL2Fib3V0LmpzIiwicm9vdF9oYXNoIjoiV1FxWWtGbzBySFFvMzhHVDJuNzhjbjdfOXJsWEgzMWtLbEUydnBjbEppVSJ9LHsicGF0aCI6ImpzL2FkdmFuY2VkLXNldHRpbmdzLmpzIiwicm9vdF9oYXNoIjoidllLRURrQWQyYzB6Tmp4eE1GSVkza1AtSk1KX1FSZ1NINTVmWjUyb1VTTSJ9LHsicGF0aCI6ImpzL2Fzc2V0LXZpZXdlci5qcyIsInJvb3RfaGFzaCI6Img1SjNYTlRCZXZfU3NRcVNERmIwVzNYQmIyWDJRRlBkUVF3WDZHT3JUTVkifSx7InBhdGgiOiJqcy9hc3NldHMuanMiLCJyb290X2hhc2giOiJ1T0Y5LW9JQW5BWTFDUkdoM3FEQkx5SFZuX2NRX2FVSW1NTTFRWjZSV2FnIn0seyJwYXRoIjoianMvYmFja2dyb3VuZC5qcyIsInJvb3RfaGFzaCI6ImVqaXFzUHp2REpFYVlDcE1lR3RWbFV6eldYWVZibHZ2QkVPNWlWMlB5TDAifSx7InBhdGgiOiJqcy9iYXNlNjQtY3VzdG9tLmpzIiwicm9vdF9oYXNoIjoiNlRhWjVQVjJBVWVaRjlINXF1b09RczZuTUxEVm1iMnFzSTZ3X0lxN19ZcyJ9LHsicGF0aCI6ImpzL2JlbmNobWFya3MuanMiLCJyb290X2hhc2giOiJHZDAtcmo0VVoyNmpIcFh2UlpzMl85d0NsNi1YTEFVczdhSEhvXzJud2QwIn0seyJwYXRoIjoianMvYmlkaXRyaWUuanMiLCJyb290X2hhc2giOiJwVDJoT1lQVWZhNFpwSEdORTExbXAzbFN4NjJIOUZYN1N1ZUZ0LUxkcXpJIn0seyJwYXRoIjoianMvYnJvYWRjYXN0LmpzIiwicm9vdF9oYXNoIjoiZzd6N2xubl9pLVdPRTRrYkhSY3VUSFhhbjc2YlpEZ0VPWDhrVWZDZy1FOCJ9LHsicGF0aCI6ImpzL2NhY2hlc3RvcmFnZS5qcyIsInJvb3RfaGFzaCI6Il9fYTB2NGhnMlo0ay14WEpYSF9pWHBlQ1hGZkxHWnZ0Q2JMdHV3V01xQkEifSx7InBhdGgiOiJqcy9jbGljazJsb2FkLmpzIiwicm9vdF9oYXNoIjoiMkRXRkNOdUl1THNKcDV4RFhvSm9FdVE2STFVZlVpaVNSYjRyQnd1eDBVdyJ9LHsicGF0aCI6ImpzL2Nsb3VkLXVpLmpzIiwicm9vdF9oYXNoIjoibHZHaVgxWlVGem96TTBkcWg2NTdzNnFOb0xMWjJyRV9SelF6Z2hydWRyQSJ9LHsicGF0aCI6ImpzL2NvZGUtdmlld2VyLmpzIiwicm9vdF9oYXNoIjoiU2lsM01LODhTbHVKSFhfazkxYUF4V3l2MElQMTY5T0l5UFlhTWVia0FhQSJ9LHsicGF0aCI6ImpzL2NvZGVtaXJyb3Ivc2VhcmNoLXRocmVhZC5qcyIsInJvb3RfaGFzaCI6InBwQjhtTDFmUlZ3N1U5ODRnSTFhTXhucjNiSkMtZUlqYnBub0FzLUd0ZzAifSx7InBhdGgiOiJqcy9jb2RlbWlycm9yL3NlYXJjaC5qcyIsInJvb3RfaGFzaCI6InlCZGt4cUdVX0NoeHE1SVIyM2c5UHRlYUJLMzJpVXpaT3BwWmJlQk1JVncifSx7InBhdGgiOiJqcy9jb2RlbWlycm9yL3Viby1keW5hbWljLWZpbHRlcmluZy5qcyIsInJvb3RfaGFzaCI6Im4xQTRhVm5MT2U2YmlLbWFPYUJiTWtTRnVmSG5OVHRaMURVQlBlZml0SlEifSx7InBhdGgiOiJqcy9jb2RlbWlycm9yL3Viby1zdGF0aWMtZmlsdGVyaW5nLmpzIiwicm9vdF9oYXNoIjoiQnZMYnBXdjNuWUVsV1FqSzVUcGlzU3ZJdFBZSER2LVc4WjVVSkZ6aEJQYyJ9LHsicGF0aCI6ImpzL2NvbW1hbmRzLmpzIiwicm9vdF9oYXNoIjoiSmYzdy01cV9CdC05dzAxd1NxNjVzNnp4aGQ5eDVndXdlMVFSRy1sNGFLOCJ9LHsicGF0aCI6ImpzL2NvbnNvbGUuanMiLCJyb290X2hhc2giOiJyWkZjaUI0Y0pzY2FrYzZHMm9tSXBYYndldVdjVXBlU3ZkLWhuWE54Q2hzIn0seyJwYXRoIjoianMvY29udGVudHNjcmlwdC1leHRyYS5qcyIsInJvb3RfaGFzaCI6Im9aNVhqTVhCQmVrT1Iyd2VHRkFZQkZzYU5mbW1tSUs4djVEeW44YU5qVVEifSx7InBhdGgiOiJqcy9jb250ZW50c2NyaXB0LmpzIiwicm9vdF9oYXNoIjoiamFud3h0M1AyTU1WbWp0RlNBWmczLXVBT0EyOTBnVEFvRlJOd2xPT0dOVSJ9LHsicGF0aCI6ImpzL2NvbnRleHRtZW51LmpzIiwicm9vdF9oYXNoIjoiZlJTNkpiS3VtQWtpU1dCbGlhaUJFclFRMS1LS0ZQVTZJeHYxbS1odEoxbyJ9LHsicGF0aCI6ImpzL2Nvc21ldGljLWZpbHRlcmluZy5qcyIsInJvb3RfaGFzaCI6IlJuZzd6TzdJSlBnWE1lUFNlNWZibHBsd25qc3NzeVNteDU4NzNhelNpOEUifSx7InBhdGgiOiJqcy9kYXNoYm9hcmQtY29tbW9uLmpzIiwicm9vdF9oYXNoIjoiSjNlc3JMdWNsWlIyNjhkd1NWQmp2MUJqWkx3WEgyMDA2MTFfN184MU1yVSJ9LHsicGF0aCI6ImpzL2Rhc2hib2FyZC5qcyIsInJvb3RfaGFzaCI6Ilp6bUc3VUNTVWlwWUJ3SklCbTN1aXBTYU5yRk1NZ1oxWWttVjhFWWItcE0ifSx7InBhdGgiOiJqcy9kZXZ0b29scy5qcyIsInJvb3RfaGFzaCI6ImFKemNGU1JkN0w1Y1FJakswNTJESXN5SkxlRm5zbFlFS0NBZG5CdHB6ZHMifSx7InBhdGgiOiJqcy9kaWZmLXVwZGF0ZXIuanMiLCJyb290X2hhc2giOiI1bWtLNUdzdDhGWnpidENFZFNvUmFBVUZ1OXBrd2szajdMSThfM3czNjdBIn0seyJwYXRoIjoianMvZG9jdW1lbnQtYmxvY2tlZC5qcyIsInJvb3RfaGFzaCI6IkNDZ29hYjdydUQ4TmdEaUVIdW9wc1ctWWxjUHk3NnJVSzJqdW1XbXNOWHMifSx7InBhdGgiOiJqcy9kb20taW5zcGVjdG9yLmpzIiwicm9vdF9oYXNoIjoiS20tRzctVXRFclRYNUpmYXZiUVhST28xSXEzcUM1ZkY4UXVSSnAzbFZBSSJ9LHsicGF0aCI6ImpzL2RvbS5qcyIsInJvb3RfaGFzaCI6IktFUHNVYUkyc1JRd19mUWxXOVlCQkp3NUZXWnN4cGJkYUFaWHJHWWJiS1UifSx7InBhdGgiOiJqcy9keW5hLXJ1bGVzLmpzIiwicm9vdF9oYXNoIjoia0NwQWpUTEM0dmNSMHJuUkhFOXVldXA4Y0E5UVhnNVo0aFR2RzJETFdtVSJ9LHsicGF0aCI6ImpzL2R5bmFtaWMtbmV0LWZpbHRlcmluZy5qcyIsInJvb3RfaGFzaCI6IlNtSDFIb3JReVVMQTd4UXRUOXMxbHRSQW8tZTd0cGRPaVVZN0ZyTktUc2sifSx7InBhdGgiOiJqcy9lcGlja2VyLXVpLmpzIiwicm9vdF9oYXNoIjoiNmFldXd5RVYyQU9vV2xiUDdtWWYyeTNnbVBPSjlQdEJnMkVoYjBGd01jcyJ9LHsicGF0aCI6ImpzL2ZhLWljb25zLmpzIiwicm9vdF9oYXNoIjoiMkxmWUNvY3l0VG1ZSXRDcHJfei1Ccklvd2FvaXk5alI2YklZc2tkVGFEMCJ9LHsicGF0aCI6ImpzL2ZpbHRlcmluZy1jb250ZXh0LmpzIiwicm9vdF9oYXNoIjoiZm9tYmNpVjBNZmJSUDVOdE5uMGgySTAtcUpTQV9JUUdVTU0xZUNock8tNCJ9LHsicGF0aCI6ImpzL2ZpbHRlcmluZy1lbmdpbmVzLmpzIiwicm9vdF9oYXNoIjoiWXdneFctdE04R2RNalRDT2d2RXJiekM4dm5RRWpDUkF3SlZiNlNqYzRHMCJ9LHsicGF0aCI6ImpzL2huc3dpdGNoZXMuanMiLCJyb290X2hhc2giOiJqS0pXZVlsWkhiRk4waC1PeGY3bEJuYkZFZ09hRHRxUkhBa2xSbHUwck9zIn0seyJwYXRoIjoianMvaG50cmllLmpzIiwicm9vdF9oYXNoIjoiMU56TkVkSmNkVzJmZXBickRMQWJyTG9DLUhPSHhJV0dzakVtVnRUWExOcyJ9LHsicGF0aCI6ImpzL2h0bWwtZmlsdGVyaW5nLmpzIiwicm9vdF9oYXNoIjoiT29TblNCQVdjMDNCWTRDNVEwZW1KWjdUMVg4VGJ6NHFLVV9qR1p3MHR2QSJ9LHsicGF0aCI6ImpzL2h0dHBoZWFkZXItZmlsdGVyaW5nLmpzIiwicm9vdF9oYXNoIjoiSzBkb2RsMUM2MHRRNDd1RktYSGtjQnlOZDhrT253cm04VmkwS0sxQkVXVSJ9LHsicGF0aCI6ImpzL2kxOG4uanMiLCJyb290X2hhc2giOiJsTG9VQXc3a2ZNWG9PQ3ZFRm5jWkZLMEpydzZvTDdSZmpGX3VITHM0Tk1jIn0seyJwYXRoIjoianMvaXMtd2VicnRjLXN1cHBvcnRlZC5qcyIsInJvb3RfaGFzaCI6IldHNGVVQTdkZjBrcXpnNDFlOXYxSTdfelZJQXpuekhfU2I5SnA4anBweE0ifSx7InBhdGgiOiJqcy9sb2dnZXItdWktaW5zcGVjdG9yLmpzIiwicm9vdF9oYXNoIjoiUjMtV1ZxSUN5VWxGcFo4eU5udnNWLVlVQV8tQUxPMGQ0X3pzZVNXakV6QSJ9LHsicGF0aCI6ImpzL2xvZ2dlci11aS5qcyIsInJvb3RfaGFzaCI6IkJrMGpMMTBCaGVYazNIY1BlT1k3U0JUUnFrd3U5NzlHbzVOYkNBTndvN0EifSx7InBhdGgiOiJqcy9sb2dnZXIuanMiLCJyb290X2hhc2giOiI4WXVVT0UyZ2c1WmdoRW9oMjlseDk5UFBfSHBDMWJTUC01MEluUHE0b29nIn0seyJwYXRoIjoianMvbHo0LmpzIiwicm9vdF9oYXNoIjoiTDhONjhiWmVnNTRnWlZlZkxUM2VpUTNzQ0RYemE2RlJxOGx1dVY0YUIwWSJ9LHsicGF0aCI6ImpzL21lc3NhZ2luZy5qcyIsInJvb3RfaGFzaCI6Im1uUVRESzVWSUF2UU44VVh2TUJNaFFiU09wZmh3MG4wQ1pwUTJIcV9ZRmMifSx7InBhdGgiOiJqcy9tcnVjYWNoZS5qcyIsInJvb3RfaGFzaCI6InlFWUhtZ3NlczdhYk1OVXQ4UTJwX0pOQ0hSWXA2Qlo3bEtxUHYyQV8yZUUifSx7InBhdGgiOiJqcy9wYWdlc3RvcmUuanMiLCJyb290X2hhc2giOiJ3U2dXRXc1OS1XUXRZdWNQd3JLTDVTYXFJRU9FQjBlSTdUaDExT3ZfaUFNIn0seyJwYXRoIjoianMvcG9wdXAtZmVuaXguanMiLCJyb290X2hhc2giOiJDRUw5TUJHbDVVd0ZnWjI1UlprbGtoZG1vZllfak1VN2x5RVpodUhVZm5NIn0seyJwYXRoIjoianMvcmVkaXJlY3QtZW5naW5lLmpzIiwicm9vdF9oYXNoIjoiNjFOZndfQjhDZEtiZWZNY1VTQkk3MDJOQko5QXB2b2NucWZITmtJTzU0USJ9LHsicGF0aCI6ImpzL3JlZGlyZWN0LXJlc291cmNlcy5qcyIsInJvb3RfaGFzaCI6IjNTTEtSYkJjbG0xd2tzdmpxUGF4R0NtNVctZ3JHd29CMnhRR0J6dW5uVGcifSx7InBhdGgiOiJqcy9yZXZlcnNlbG9va3VwLXdvcmtlci5qcyIsInJvb3RfaGFzaCI6IjRiZl95ZnFJNkhoTTY2VXlpcW5DLU0yWXAyRDJmU0xhNzNOMVNhNHpUT1UifSx7InBhdGgiOiJqcy9yZXZlcnNlbG9va3VwLmpzIiwicm9vdF9oYXNoIjoiWnFoSnBPZVVDYTBMU0xWbFV6YWplNFBsNWdMWTJlTXc4TS1jdE14Ym91NCJ9LHsicGF0aCI6ImpzL3MxNGUtc2VyaWFsaXplci5qcyIsInJvb3RfaGFzaCI6IldRcHE2YnJ2QVBPc3Q4SGJtNS03QmwxaGNRTUNkRG8xNlo3aE5EZmFORDAifSx7InBhdGgiOiJqcy9zY3JpcHRsZXQtZmlsdGVyaW5nLWNvcmUuanMiLCJyb290X2hhc2giOiJuZjJhVmotMVY3TUc4UXZ1czUyRUR5ckw0V09INEJCZ0pFWWxEaVhqLUg4In0seyJwYXRoIjoianMvc2NyaXB0bGV0LWZpbHRlcmluZy5qcyIsInJvb3RfaGFzaCI6ImI1VmU0SHBfZVZseE0yMkRaUHdlbmQ1MU5GUGZET0hOeEMyd04xMkJ3WHcifSx7InBhdGgiOiJqcy9zY3JpcHRsZXRzL2Nvc21ldGljLWxvZ2dlci5qcyIsInJvb3RfaGFzaCI6IjhNejZneVF0a2JtYnpVOUJPN0FjbEVVcWR6MmdMQ1hmMnRIYVcyRS1hcTgifSx7InBhdGgiOiJqcy9zY3JpcHRsZXRzL2Nvc21ldGljLW9mZi5qcyIsInJvb3RfaGFzaCI6InpXSk9sejlSYnRSdm0yOFV4cG5kb1l2d2FzdExHU01GX2U3dHR0aHpiaGcifSx7InBhdGgiOiJqcy9zY3JpcHRsZXRzL2Nvc21ldGljLW9uLmpzIiwicm9vdF9oYXNoIjoieHg4V2haMzJkaTROT1drdDRScUlhUUJmdUE4aGtfSllDQUlnRk5wRGRDNCJ9LHsicGF0aCI6ImpzL3NjcmlwdGxldHMvY29zbWV0aWMtcmVwb3J0LmpzIiwicm9vdF9oYXNoIjoic2xJWEJHc3RrcmVFdThQUlhEZmwyMnpUQzVrZ1EtS0pheENab1gwY1J6NCJ9LHsicGF0aCI6ImpzL3NjcmlwdGxldHMvZG9tLWluc3BlY3Rvci5qcyIsInJvb3RfaGFzaCI6IkRndTQ2dHhUNFUwRmx1V3d3bDVObmRpdFZGRVREYUI2Y0EzN0lqX0FZQTgifSx7InBhdGgiOiJqcy9zY3JpcHRsZXRzL2RvbS1zdXJ2ZXktZWxlbWVudHMuanMiLCJyb290X2hhc2giOiJXOFhZSFNYUjlqSG9JcW05QTBDMl93ZmsxNGtwTldfb0hPSHY0TXIzMkVjIn0seyJwYXRoIjoianMvc2NyaXB0bGV0cy9kb20tc3VydmV5LXNjcmlwdHMuanMiLCJyb290X2hhc2giOiJ6SGRCMVVlcENOTWJ5ZzJzcHh2TjlNamNNQkZ2NndHN1AyWTZuU3pTNjZjIn0seyJwYXRoIjoianMvc2NyaXB0bGV0cy9lcGlja2VyLmpzIiwicm9vdF9oYXNoIjoiUjZMQkQ1dzVwWUJTMlhDZUdLNFF2YTdpQWhVWTRlZDl1TUxVWE9YZlFzQSJ9LHsicGF0aCI6ImpzL3NjcmlwdGxldHMvbG9hZC0zcC1jc3MuanMiLCJyb290X2hhc2giOiJrQmtEdF9fUmx2MEgwcFV2VWN6WHRLdGVlNzE2SXp5WGNlUGdVSWFzYTFjIn0seyJwYXRoIjoianMvc2NyaXB0bGV0cy9sb2FkLWxhcmdlLW1lZGlhLWFsbC5qcyIsInJvb3RfaGFzaCI6IlBHNEg1QnMyUk4wMFh6RF9Wbm83VUhwZ3BKcWJsTzU0UHdIbFlDQW1DaVEifSx7InBhdGgiOiJqcy9zY3JpcHRsZXRzL2xvYWQtbGFyZ2UtbWVkaWEtaW50ZXJhY3RpdmUuanMiLCJyb290X2hhc2giOiJGaGl0cEk2ZEdudFFHME40TndsM2loeWZtS2pvM0IzVDNLWXc5TVdZRS13In0seyJwYXRoIjoianMvc2NyaXB0bGV0cy9ub3NjcmlwdC1zcG9vZi5qcyIsInJvb3RfaGFzaCI6IkJGVE5HNjY3b2NiWlkwaWtCM0c1S1JmX3ZYNnhTSUxkaGpEUjZsenVtbDgifSx7InBhdGgiOiJqcy9zY3JpcHRsZXRzL3NjcmlwdGxldC1sb2dsZXZlbC0xLmpzIiwicm9vdF9oYXNoIjoiOEhleW5zN2pPZ1RjRFFjYU9DZVZCbmhLVjZwa3Vkd2tNR3RSQkhwSGN1YyJ9LHsicGF0aCI6ImpzL3NjcmlwdGxldHMvc2NyaXB0bGV0LWxvZ2xldmVsLTIuanMiLCJyb290X2hhc2giOiJnWmwzYkFmVDlqOTB3VElzVkRjeDdFWU1CemtraXBlYk0zanJVWE5sckljIn0seyJwYXRoIjoianMvc2NyaXB0bGV0cy9zaG91bGQtaW5qZWN0LWNvbnRlbnRzY3JpcHQuanMiLCJyb290X2hhc2giOiJROU1rMHhFNWI1aWc5NkZpZWh5WUhWak1Vc25vNkFyODZSTlVTR3RHTUVJIn0seyJwYXRoIjoianMvc2NyaXB0bGV0cy9zdWJzY3JpYmVyLmpzIiwicm9vdF9oYXNoIjoiYkxfRFpKZkd5VHNobHpwcEdCZ295UTBtZWFrNmlXdlNvUTFNNHIwY0FNbyJ9LHsicGF0aCI6ImpzL3NjcmlwdGxldHMvdXBkYXRlci5qcyIsInJvb3RfaGFzaCI6IlB3ZnExdGo3TG1oT3VlR2JZS0g4M3VGZ3MtYVY5MFR2VkxvWjYtTUFXeUUifSx7InBhdGgiOiJqcy9zZXR0aW5ncy5qcyIsInJvb3RfaGFzaCI6InQwci1UUkpJRWRqTy1NOXFUNlcyOVhlQldvN21IUDhTSHVUc3k5MkwzeEEifSx7InBhdGgiOiJqcy9zdGFydC5qcyIsInJvb3RfaGFzaCI6IkVWem54cGp0MmdoTXloRUt6RmpzajZMN0tzMGJIT0xMblVNWHd2bEZld0EifSx7InBhdGgiOiJqcy9zdGF0aWMtZG5yLWZpbHRlcmluZy5qcyIsInJvb3RfaGFzaCI6ImhncmthUVg4SjJ0Zm1sbGd2UzVDVy1EdnFaSHdLZlZPTlA0dThNZHFpZG8ifSx7InBhdGgiOiJqcy9zdGF0aWMtZXh0LWZpbHRlcmluZy1kYi5qcyIsInJvb3RfaGFzaCI6IkwxcTVwLTExbXhLa2dVTjQ3aVZfdS12RG00bDdIaFFZbG9CTThzVUpBZVkifSx7InBhdGgiOiJqcy9zdGF0aWMtZXh0LWZpbHRlcmluZy5qcyIsInJvb3RfaGFzaCI6IjVrT1UwSWZLam84b0Z5Xy1KekFBaVU2TDluVUlUVWFRY245WUJoMENUb3MifSx7InBhdGgiOiJqcy9zdGF0aWMtZmlsdGVyaW5nLWlvLmpzIiwicm9vdF9oYXNoIjoiMXc2bS0wQV9neDQzYlRUVDA5bDRzOGU2Y3I4RXVFVkdSTUJBbU03S3N0YyJ9LHsicGF0aCI6ImpzL3N0YXRpYy1maWx0ZXJpbmctcGFyc2VyLmpzIiwicm9vdF9oYXNoIjoiaEJ2R3NYZE1lWEx5SGcwVjMtSE53c085SlhMZXRxX3paQTNSeVJNMzNJdyJ9LHsicGF0aCI6ImpzL3N0YXRpYy1uZXQtZmlsdGVyaW5nLmpzIiwicm9vdF9oYXNoIjoicjY4TFNSRVZsZFpsUWppc0s0dktPQzdXOEo2QlJkWC1EdEx6eW92QkJWayJ9LHsicGF0aCI6ImpzL3N0b3JhZ2UuanMiLCJyb290X2hhc2giOiJLRFc5ZXRiVzVWLWdqUzU2aEgwYXpzVkxNckk5MEdsYk91OWxXNjAxcEU0In0seyJwYXRoIjoianMvc3VwcG9ydC5qcyIsInJvb3RfaGFzaCI6InRRTjhGd1JGZ3R2c0FjUkdpMXVneTdsOEdkVVhBRGZ2RVdOak90UFhKX28ifSx7InBhdGgiOiJqcy90YWIuanMiLCJyb290X2hhc2giOiJOMEdfV21YRkhGdmNfMF92T0RjcnoxeHRzRGFjdmFNaVhsN0Q3a1JxMWw0In0seyJwYXRoIjoianMvdGFza3MuanMiLCJyb290X2hhc2giOiI2TTU3d3hmaUdVcjVYZkYzVEg2TFNCUi0yeHFmY1BRcW0tMnZnRnVDakVvIn0seyJwYXRoIjoianMvdGV4dC1lbmNvZGUuanMiLCJyb290X2hhc2giOiJEeGc5bUNhLTNYbFNIc09aVjJ0d0pvZjNQV3pmRjQ1dEd1djVMU3dJTU0wIn0seyJwYXRoIjoianMvdGV4dC11dGlscy5qcyIsInJvb3RfaGFzaCI6ImpuUFROblpjcXpEdkkzdUYxVENhZTByRUxCcjExdi1OMXFsekdvYTZOSFUifSx7InBhdGgiOiJqcy90aGVtZS5qcyIsInJvb3RfaGFzaCI6IlVhakJzQURzSW5tNjBJOENQWnBEc29EVzlwQ3g3MVNSU0c1OG9FUmJjZTAifSx7InBhdGgiOiJqcy90cmFmZmljLmpzIiwicm9vdF9oYXNoIjoiaVNjMnZnMEo3ajdVQ2tRODNOYXBuWmxwRktlaXgtWXhDN0xLcGktbXN6QSJ9LHsicGF0aCI6ImpzL3VibG9jay5qcyIsInJvb3RfaGFzaCI6IkxuVmp6S0tzc1BsdzhoaXhwVW9YWklvQTdPWHJQOVlwS0VWZTZKTzJhSFEifSx7InBhdGgiOiJqcy91cmktdXRpbHMuanMiLCJyb290X2hhc2giOiI1TUNlcUhodl96V3I2a2lwWHA2X2FhODVaWXp6YklOV1dCeTNobDBBMnB3In0seyJwYXRoIjoianMvdXJsLW5ldC1maWx0ZXJpbmcuanMiLCJyb290X2hhc2giOiJqZk9ab2h1TTNlWlFsTk1HRHdJQlRXSnpYMVRtbjVKMTlFOGdocjNwdUJRIn0seyJwYXRoIjoianMvdXRpbHMuanMiLCJyb290X2hhc2giOiJsRWpKeGRVUFJELWdrV3lwRmtUY3pEUkhkLVhSX3d3amZ3aDNDeDd3X3NvIn0seyJwYXRoIjoianMvdmFwaS1iYWNrZ3JvdW5kLWV4dC5qcyIsInJvb3RfaGFzaCI6Ikd3ZEQzek1ieVJIT1FyQ1dpeGNFb2hMM0tpWF9zX3JsSHhHU3Y3M2ZkTTAifSx7InBhdGgiOiJqcy92YXBpLWJhY2tncm91bmQuanMiLCJyb290X2hhc2giOiJQUGd3LVpOVjh1QlVqRlFwemQ5SEgxX2dycHZJejRNdm9JUTVnQlUwWGJzIn0seyJwYXRoIjoianMvdmFwaS1jbGllbnQuanMiLCJyb290X2hhc2giOiJnQmtmOHJEUGxDZWU5VUdMOWZFU3JqQV9Jalg0a2szNXZaMzhsdER2TkFJIn0seyJwYXRoIjoianMvdmFwaS1jb21tb24uanMiLCJyb290X2hhc2giOiI2ckgtaVE3SDE0a2x4VDlTbWJDbnQ3SktXOXZNYnpHamJtZGlieE53c3JrIn0seyJwYXRoIjoianMvdmFwaS5qcyIsInJvb3RfaGFzaCI6Ik1lWmtSVzZOVTZxSnBKZ3c5STFFcjhFa3VveTRFeVAtT2c2SGJ3dWszZzgifSx7InBhdGgiOiJqcy93YXNtL1JFQURNRS5tZCIsInJvb3RfaGFzaCI6InhjdXBWT0s2NUwwVERyalBzRUZ2MXk3ZnJiQU51b3dKWk40TnI2QlFBM1EifSx7InBhdGgiOiJqcy93YXNtL2JpZGl0cmllLndhc20iLCJyb290X2hhc2giOiJpTXF0b3BnVnhPNHBsZ09uMGZVZ045SGRDdVZuZWFOb3lScHNiSVFGU1k4In0seyJwYXRoIjoianMvd2FzbS9iaWRpdHJpZS53YXQiLCJyb290X2hhc2giOiJ0MjdBTGxpSmNaS0NkY3B4OWhfZzhYSElYakhpUWpfNE1vUEhPWWxSa0ZzIn0seyJwYXRoIjoianMvd2FzbS9obnRyaWUud2FzbSIsInJvb3RfaGFzaCI6IkNpWDl2aURlQ2NPUWdyNkt0OGo2Wkthd2tJTlI3emZwR1E5WTR0NXcxNjQifSx7InBhdGgiOiJqcy93YXNtL2hudHJpZS53YXQiLCJyb290X2hhc2giOiJuamgzSVFDT2dubGg1NXNKX3F5dXdRZ1l6SVpDZnlYd1lYamVXa1VWREMwIn0seyJwYXRoIjoianMvd2ViZXh0LmpzIiwicm9vdF9oYXNoIjoiSFZEbjQyM2tSUlpwTVZpLUZWall0YVE5dHJ3NmJqM0hYUU5mYjhBNEkwWSJ9LHsicGF0aCI6ImpzL3doaXRlbGlzdC5qcyIsInJvb3RfaGFzaCI6Ik9mNGZWeTFiWk9WTl82TjVaakxNT2ZxaXNQMEEtajJuRGZFZjVlYzlfSjgifSx7InBhdGgiOiJsaWIvY29kZW1pcnJvci9MSUNFTlNFIiwicm9vdF9oYXNoIjoib19MLUtzYTBjYXFBeHpmRjBvUGRCSnZja0RwemcxN20xTkxLd0NfZFU3OCJ9LHsicGF0aCI6ImxpYi9jb2RlbWlycm9yL1JFQURNRS5tZCIsInJvb3RfaGFzaCI6IjhYWEFKMmhBTmwzbDNma1VCSXlHY3NvTzVrbktQZERYT2JzZG1BMzc5M28ifSx7InBhdGgiOiJsaWIvY29kZW1pcnJvci9hZGRvbi9jb21tZW50L2NvbW1lbnQuanMiLCJyb290X2hhc2giOiIxN1lCU19URG5Xa21ZY2RteXNjNTAzd1RKQmJFSkJnenpmNUV3V0txVFNZIn0seyJwYXRoIjoibGliL2NvZGVtaXJyb3IvYWRkb24vZGlzcGxheS9wYW5lbC5qcyIsInJvb3RfaGFzaCI6ImdDNVY5ZGlycFc1S0RZTGIxUkg4OTd6WW1TVTNsdzRiMjFzcXNYQmFDQVUifSx7InBhdGgiOiJsaWIvY29kZW1pcnJvci9hZGRvbi9lZGl0L2Nsb3NlYnJhY2tldHMuanMiLCJyb290X2hhc2giOiJjN1F5LW5INzgyalR4Wi0xSDI5T25KckhWRTBreElKVTBXbjdtR3NjWGxRIn0seyJwYXRoIjoibGliL2NvZGVtaXJyb3IvYWRkb24vZWRpdC9tYXRjaGJyYWNrZXRzLmpzIiwicm9vdF9oYXNoIjoiZlV0OHJMZU9sa3d3eVk1bVlUYWQycEhNSVdkQzZjcVZMN0h6bHVHVXBLTSJ9LHsicGF0aCI6ImxpYi9jb2RlbWlycm9yL2FkZG9uL2ZvbGQvZm9sZGNvZGUuanMiLCJyb290X2hhc2giOiJDeFp4Q1MwbzhNNVctODYxM3ZqcEZaMDNGdFZMVkc3STJjY3BBekFpd1hzIn0seyJwYXRoIjoibGliL2NvZGVtaXJyb3IvYWRkb24vZm9sZC9mb2xkZ3V0dGVyLmNzcyIsInJvb3RfaGFzaCI6IlYyNzgwMEMzY0xZTmQ5akNucDN6YV9XRmRqa2I2clViUTVFVTVPMEJyRlkifSx7InBhdGgiOiJsaWIvY29kZW1pcnJvci9hZGRvbi9mb2xkL2ZvbGRndXR0ZXIuanMiLCJyb290X2hhc2giOiJKRUhSQkFlNTNFZkdNX3V4UmZ2ZWluT054aEZyZHd6aHpMbHYwTEQ5Y3ZjIn0seyJwYXRoIjoibGliL2NvZGVtaXJyb3IvYWRkb24vaGludC9zaG93LWhpbnQuY3NzIiwicm9vdF9oYXNoIjoiOVBqSTFJd1ZYY3Y0NEUzN0tiRFZBSmRFWU5DQ0JLMy1EZG83NTdzNkw4ZyJ9LHsicGF0aCI6ImxpYi9jb2RlbWlycm9yL2FkZG9uL2hpbnQvc2hvdy1oaW50LmpzIiwicm9vdF9oYXNoIjoiZk5ndlRqandTb1prWU1nWUVuQTFDTjdZSE50cVBBREJybjBWeDVmR20xSSJ9LHsicGF0aCI6ImxpYi9jb2RlbWlycm9yL2FkZG9uL21lcmdlL21lcmdlLmNzcyIsInJvb3RfaGFzaCI6IkJaT0IwUUVTR0U3N1dwQUdmRGx2c2s0bGVwZnc4UmtONTBDazZ1dV80cU0ifSx7InBhdGgiOiJsaWIvY29kZW1pcnJvci9hZGRvbi9tZXJnZS9tZXJnZS5qcyIsInJvb3RfaGFzaCI6IjdYcEVtMHRPWG4wdWVpTm8tV3NWVlNJSDdRaGFWUlV1X3NmZFpRc0hYYW8ifSx7InBhdGgiOiJsaWIvY29kZW1pcnJvci9hZGRvbi9zY3JvbGwvYW5ub3RhdGVzY3JvbGxiYXIuanMiLCJyb290X2hhc2giOiIwWk5wRnRpQWh2ZTZDWDNqRi05d2c2UFNnOXZGRW4zNTNEU1EwUHFsX3hzIn0seyJwYXRoIjoibGliL2NvZGVtaXJyb3IvYWRkb24vc2VhcmNoL21hdGNoZXNvbnNjcm9sbGJhci5jc3MiLCJyb290X2hhc2giOiI3azM3NmJiUkYzb2UyVjh2YkpSR1ZIRmxmV1cyZm1jWlRlVWRzRzNIZGZzIn0seyJwYXRoIjoibGliL2NvZGVtaXJyb3IvYWRkb24vc2VhcmNoL3NlYXJjaGN1cnNvci5qcyIsInJvb3RfaGFzaCI6IkpEZWVob0hhV3QtYlJXN0tzN1A1WGo2ZHhrR0tOb3hPaWRMRElIX2tyVHcifSx7InBhdGgiOiJsaWIvY29kZW1pcnJvci9hZGRvbi9zZWxlY3Rpb24vYWN0aXZlLWxpbmUuanMiLCJyb290X2hhc2giOiJpb2hpU0R5N0NiREk4UlUyMnNoMlpOVGtJUWI0NElqQ0hIQ0hITDRvWnJBIn0seyJwYXRoIjoibGliL2NvZGVtaXJyb3IvbGliL2NvZGVtaXJyb3IuY3NzIiwicm9vdF9oYXNoIjoiQzZQS2J3dEl3OVRNOEpYdmozMXdfaEJDZ0toR1Jobmk1Qk12MVc2MlYyMCJ9LHsicGF0aCI6ImxpYi9jb2RlbWlycm9yL2xpYi9jb2RlbWlycm9yLmpzIiwicm9vdF9oYXNoIjoiV0lRMWR3NXFpendoc2l3UXVCRUNfSmxZVElWY1JSXy13MWlEWlVLX0ZlNCJ9LHsicGF0aCI6ImxpYi9jb2RlbWlycm9yL21vZGUvY3NzL2Nzcy5qcyIsInJvb3RfaGFzaCI6InRfRnRUN05lbEhldEY5X1RzOGpZRUhZWGh0Z1E5RUNCYk10TDVubW4xVUUifSx7InBhdGgiOiJsaWIvY29kZW1pcnJvci9tb2RlL2h0bWxtaXhlZC9odG1sbWl4ZWQuanMiLCJyb290X2hhc2giOiJ1Q3RncFFVWXlmX2ZPcGE2a3ZnV1NoM0RrTDBneEV0YzFuYkhLc3BkMXgwIn0seyJwYXRoIjoibGliL2NvZGVtaXJyb3IvbW9kZS9qYXZhc2NyaXB0L2phdmFzY3JpcHQuanMiLCJyb290X2hhc2giOiJ5ZTdBanpOVlVPaGY3aVNsVmNnY3g2UmJkZllSRlhIeWd6dGpSTFIxMGNBIn0seyJwYXRoIjoibGliL2NvZGVtaXJyb3IvbW9kZS94bWwveG1sLmpzIiwicm9vdF9oYXNoIjoiM3BCMHFRM1BMNzRGWHJRUkFxMjB6bzk5bTlmUlh5dEJVUXZ2ZU54VS1BMCJ9LHsicGF0aCI6ImxpYi9jb2RlbWlycm9yL3RoZW1lL25pZ2h0LmNzcyIsInJvb3RfaGFzaCI6IkRGM2VRWEVGbDc2OFRrSVRKRXVJaS1kLTVGSEg0NVRZbzZMcW1vaHdQdVUifSx7InBhdGgiOiJsaWIvY3NzdHJlZS9MSUNFTlNFIiwicm9vdF9oYXNoIjoidmhfYi1HdjlMSExZdk9PMGI3S0xKTjFlRkh0OUtaeUJERm1WQ2QzQXBtNCJ9LHsicGF0aCI6ImxpYi9jc3N0cmVlL2Nzcy10cmVlLmpzIiwicm9vdF9oYXNoIjoiOG84ZGFneVI0bVpWOFhsclpiTUlqRnMyV2ppbUtzRWhSUWJpSlp2WTZwSSJ9LHsicGF0aCI6ImxpYi9kaWZmL1JFQURNRS5tZCIsInJvb3RfaGFzaCI6IjlNbjBYWEFTOWdhVUhSdHd1Z3hOOE9Oa2ZKNUxHdUxLbGx2eWQ2WWc5RUEifSx7InBhdGgiOiJsaWIvZGlmZi9zd2F0aW5lbV9kaWZmLmpzIiwicm9vdF9oYXNoIjoieFgyaVFTOWJaVU83dVNLUFRhUlRuMFRqdjNsTEhhMUFvZzdpa1Q2S2FuVSJ9LHsicGF0aCI6ImxpYi9oc2x1di9MSUNFTlNFIiwicm9vdF9oYXNoIjoib29FTk1FMkhIVnZMS3pBdHdsemZnV1FWWDNrMlYtVFBXd3lYOGt6aFE5byJ9LHsicGF0aCI6ImxpYi9oc2x1di9SRUFETUUiLCJyb290X2hhc2giOiIydDhMV0poWUFQT0gxT2k3TXFQTGhxdVVvUUJoblp5YmhDcV9ad2VRdlJ3In0seyJwYXRoIjoibGliL2hzbHV2L2hzbHV2LTAuMS4wLm1pbi5qcyIsInJvb3RfaGFzaCI6ImVaTjJUVkNCbVc0X0tiWkNodzdGalUwRVRXQlhBV3E2RDUycGRGcHVJVmcifSx7InBhdGgiOiJsaWIvanMtYmVhdXRpZnkvTElDRU5TRSIsInJvb3RfaGFzaCI6IktDbHhaM1hmMnNSVVo5YzRUWTZ4dktvYTRZYVpUdTNLRDFFX3NKQTR3VFEifSx7InBhdGgiOiJsaWIvanMtYmVhdXRpZnkvUkVBRE1FIiwicm9vdF9oYXNoIjoiZkFrTDExeUZlZlZ5djY0ay1SR2U4S1JFUTY3UGNWN3lnaTlXWFBpempUUSJ9LHsicGF0aCI6ImxpYi9qcy1iZWF1dGlmeS9iZWF1dGlmaWVyLm1pbi5qcyIsInJvb3RfaGFzaCI6IjF5Y2lzQWcwSVIwN2cxWVVZUjZIY0dZdTROU29Bdlp1dHhUU1ZCVnNYd3cifSx7InBhdGgiOiJsaWIvbHo0L1JFQURNRS5tZCIsInJvb3RfaGFzaCI6Ilc5ckdROGtrT25PMkRRaE1kR1l0NUczSXM0V2E2TTZEUHNoTzNKcWlJa2cifSx7InBhdGgiOiJsaWIvbHo0L2x6NC1ibG9jay1jb2RlYy1hbnkuanMiLCJyb290X2hhc2giOiJMVXQ2THRIMVRRb19FZWN2Wm1nWEp6Wi14RjhhV0dvelFyU2R6RjFvWnBNIn0seyJwYXRoIjoibGliL2x6NC9sejQtYmxvY2stY29kZWMtanMuanMiLCJyb290X2hhc2giOiJZaHVKTXYtZ3F6WG5NZ0daMUw5aVBTcFM4bG1kdzlrZXFtWWtGbjdldmE0In0seyJwYXRoIjoibGliL2x6NC9sejQtYmxvY2stY29kZWMtd2FzbS5qcyIsInJvb3RfaGFzaCI6IlNLVzV2WTk4TnhTOXRud3pzVWU5YWstdmdYc2FzVkJGay14WnBzXzZWRHcifSx7InBhdGgiOiJsaWIvbHo0L2x6NC1ibG9jay1jb2RlYy53YXNtIiwicm9vdF9oYXNoIjoiUzlwcFI2QkpoaGhWTExwVHF6ZUFkRl9UVE1HZzJFYVc2RG9GUjl6V2lzOCJ9LHsicGF0aCI6ImxpYi9sejQvbHo0LWJsb2NrLWNvZGVjLndhdCIsInJvb3RfaGFzaCI6InJ0YnpCYjNsZXA2WjRsYlBJTEwtU1htMFU1YUczSGpQVTNyMjNSb2dHcVkifSx7InBhdGgiOiJsaWIvcHVibGljc3VmZml4bGlzdC9wdWJsaWNzdWZmaXhsaXN0LmpzIiwicm9vdF9oYXNoIjoieU85NElRRHd0Q3BoQ3YwbEUwdl92dFgzekxadHR5NU9YVUFIbWVWRVY1VSJ9LHsicGF0aCI6ImxpYi9wdWJsaWNzdWZmaXhsaXN0L3dhc20vUkVBRE1FLm1kIiwicm9vdF9oYXNoIjoibEluMkJVb1diSlU3MHh1ejV3SDlKVWZfc0VMVkQ0ckYwWkhrYU9GU0FNZyJ9LHsicGF0aCI6ImxpYi9wdWJsaWNzdWZmaXhsaXN0L3dhc20vcHVibGljc3VmZml4bGlzdC53YXNtIiwicm9vdF9oYXNoIjoiTHlqV1djX283aVQyZXNlbG0zZi1IZHVsajU2SFZmbGR3bFFZNXNyMkJDVSJ9LHsicGF0aCI6ImxpYi9wdWJsaWNzdWZmaXhsaXN0L3dhc20vcHVibGljc3VmZml4bGlzdC53YXQiLCJyb290X2hhc2giOiIwbDVqNlhhN1RQT1J5U3hwOTJETVJpYnFWMENIbmM3VXM2NFMzMy1ocU9NIn0seyJwYXRoIjoibGliL3B1bnljb2RlLmpzIiwicm9vdF9oYXNoIjoia091UzdlOGJSbGZfOTFRNjhlRTNnWW0wakZlWlFfREo5cjJoakVRd1Q3YyJ9LHsicGF0aCI6ImxpYi9yZWdleGFuYWx5emVyL0NIQU5HRVMubWQiLCJyb290X2hhc2giOiIxM2ZodkdteWhGeWt2Q00yUFpUUzIxYUlzRUExWEwyR0xVNmF2SFBDZDQ4In0seyJwYXRoIjoibGliL3JlZ2V4YW5hbHl6ZXIvUkVBRE1FLm1kIiwicm9vdF9oYXNoIjoibkhxTWEybDIxV21XX0JUYmtWVml2MU9rUGwxVE1ka09UR3VRc19IN3NjdyJ9LHsicGF0aCI6ImxpYi9yZWdleGFuYWx5emVyL3JlZ2V4LmpzIiwicm9vdF9oYXNoIjoiY2Q5UW5LZ0xOWHJ1VFNWWDZ3U2J2LUxtbFpOSGRCMUdteG5aY3p1VXVmNCJ9LHsicGF0aCI6ImxvZ2dlci11aS5odG1sIiwicm9vdF9oYXNoIjoiM0FLQ1ZBamxMdkl5MmY5cnhPVE56Uy1WOUxBZWE1NlZ6WmI0WGdWQlVBTSJ9LHsicGF0aCI6Im1hbmFnZWRfc3RvcmFnZS5qc29uIiwicm9vdF9oYXNoIjoiTWVqZjg5X1htWVo5cG9KVWFGbzY2QmRHRGJfOFZSOHJJT2RmeUVWS0lKMCJ9LHsicGF0aCI6Im1hbmlmZXN0Lmpzb24iLCJyb290X2hhc2giOiJOeXNOSjJvM05TWlliZGRveTlyUWhLTjdjUmxyaGlTb0tNdkVhTEFDcGJFIn0seyJwYXRoIjoibm8tZGFzaGJvYXJkLmh0bWwiLCJyb290X2hhc2giOiJlWnZISVMxU2hDSzBLT2tRMFNGNmJWdWVWekdhZEwwY0pwUkw0QTdaS3VjIn0seyJwYXRoIjoicG9wdXAtZmVuaXguaHRtbCIsInJvb3RfaGFzaCI6IkZBMHhUaWUwNDRFUTNJZllHc2dqN1h1T0U3WWVrVDU0enFFcFJsZ1NCNXMifSx7InBhdGgiOiJzZXR0aW5ncy5odG1sIiwicm9vdF9oYXNoIjoiU3Znal9jQWNDcjByVzZwcy1Gc3BjN29zenctMTdFV2RTclZOMVRVQm95USJ9LHsicGF0aCI6InN1cHBvcnQuaHRtbCIsInJvb3RfaGFzaCI6IjlmQm5QRERHMXFfcGhnUUJ0T3Q0TVhGOWhyMkVnZ3ZycVN3ellpY0dJTm8ifSx7InBhdGgiOiJ3ZWJfYWNjZXNzaWJsZV9yZXNvdXJjZXMvMXgxLmdpZiIsInJvb3RfaGFzaCI6InItRGNfS0tTb1Byb3ZPQ0tTTUZOUGxuSjJDeGdVcXR0U0tJdXpHeEk4bmMifSx7InBhdGgiOiJ3ZWJfYWNjZXNzaWJsZV9yZXNvdXJjZXMvMngyLnBuZyIsInJvb3RfaGFzaCI6InJmb01mZUE3dzc2ajNvQzBwRkZJZ2NpMktXVm85RHBhelZ6WG9XX18wY2sifSx7InBhdGgiOiJ3ZWJfYWNjZXNzaWJsZV9yZXNvdXJjZXMvMzJ4MzIucG5nIiwicm9vdF9oYXNoIjoiTnVFTUgzREx5Wkw1aWc1MWxRNHA4OTZiZjlJYjdOUWFQOHVqZFJ5VUk3ayJ9LHsicGF0aCI6IndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlcy8zeDIucG5nIiwicm9vdF9oYXNoIjoid18yNWxQSmx5a0UzVFZydXItX2c0UDU1dDBVSXhfQ2RKdloyZVhFeGZ1MCJ9LHsicGF0aCI6IndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlcy9SRUFETUUudHh0Iiwicm9vdF9oYXNoIjoiNmNJdnlZMUdndGRCS3hJdHVQU05EQVRYbDlZQkRGTEM2dnFTcmhnOEJVSSJ9LHsicGF0aCI6IndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlcy9hbWF6b25fYWRzLmpzIiwicm9vdF9oYXNoIjoiUVpBWUJmVjEyZEJtQ0dncG1jOVlpeExER1ByT0x0Qk9oV2Jzakw3RXhoQSJ9LHsicGF0aCI6IndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlcy9hbWF6b25fYXBzdGFnLmpzIiwicm9vdF9oYXNoIjoieno5Y1Fja0JOUDktNW1wSEdIV3g0SFk0VFhpYW80SjVrT3FaOEE3a0FqRSJ9LHsicGF0aCI6IndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlcy9hbXBwcm9qZWN0X3YwLmpzIiwicm9vdF9oYXNoIjoiUHZzY3ZQVDlLak5obDBlcEk5R2JTRy01TUpLNTNaVVJRSVRoZGJBbTJxQSJ9LHsicGF0aCI6IndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlcy9jaGFydGJlYXQuanMiLCJyb290X2hhc2giOiJYbXJkRk5vMnNoUEFrLWRfcm1JdkppVE1Qc0h0ZC04S2ZhazBwcHBpS0kwIn0seyJwYXRoIjoid2ViX2FjY2Vzc2libGVfcmVzb3VyY2VzL2NsaWNrMmxvYWQuaHRtbCIsInJvb3RfaGFzaCI6ImdVdnNHR0lNTXd5WlBKY05QOElZbDIwTGVtWm1UWUJ5Wlh6V05nZndNR0kifSx7InBhdGgiOiJ3ZWJfYWNjZXNzaWJsZV9yZXNvdXJjZXMvZG9tLWluc3BlY3Rvci5odG1sIiwicm9vdF9oYXNoIjoiRXhIOGVvUHB3WmRFWUZNNjBrY2R5T2RUT0JweUxUa18zUVpfbFlSODNPQSJ9LHsicGF0aCI6IndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlcy9kb3VibGVjbGlja19pbnN0cmVhbV9hZF9zdGF0dXMuanMiLCJyb290X2hhc2giOiI3dERjSDl0ZGwtMFlpdUZ2MWVFQ1NsdTNSSzlITkFOR3ZpRkdNQXBzVkxrIn0seyJwYXRoIjoid2ViX2FjY2Vzc2libGVfcmVzb3VyY2VzL2VtcHR5Iiwicm9vdF9oYXNoIjoiNDdERVFwajhIQlNhLV9USW1XLTVKQ2V1UWVSa201Tk1wSldaRzNoU3VGVSJ9LHsicGF0aCI6IndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlcy9lcGlja2VyLXVpLmh0bWwiLCJyb290X2hhc2giOiIwZUVhLU1OR2N3b2lFWmdISnlLZVV3WHJqbWd5dXlweDczV01qQ1ppdkF3In0seyJwYXRoIjoid2ViX2FjY2Vzc2libGVfcmVzb3VyY2VzL2ZpbmdlcnByaW50Mi5qcyIsInJvb3RfaGFzaCI6ImZiaUpJbGJOOUZyVnlsZEk0VGJnd2tHMU96akZyYXAwU2tMS0U1OEZfN00ifSx7InBhdGgiOiJ3ZWJfYWNjZXNzaWJsZV9yZXNvdXJjZXMvZmluZ2VycHJpbnQzLmpzIiwicm9vdF9oYXNoIjoiYjlWd1B5dmRoWk12R0szSm56RFljMjByOWZDYkhkNXNFcDlHRmlXZnlDYyJ9LHsicGF0aCI6IndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlcy9nb29nbGUtYW5hbHl0aWNzX2FuYWx5dGljcy5qcyIsInJvb3RfaGFzaCI6ImEwWWhob3lzV0pwZ1AtRW1PcTBrTDJjbUx2bHh2YXlzekJwUlhOQkloR1kifSx7InBhdGgiOiJ3ZWJfYWNjZXNzaWJsZV9yZXNvdXJjZXMvZ29vZ2xlLWFuYWx5dGljc19jeF9hcGkuanMiLCJyb290X2hhc2giOiJzYjI0d3d4blJMNDhhTHVsM2tuZmVpOEUwOWl5bGZDaWFyR3Q1YTl6Z1RrIn0seyJwYXRoIjoid2ViX2FjY2Vzc2libGVfcmVzb3VyY2VzL2dvb2dsZS1hbmFseXRpY3NfZ2EuanMiLCJyb290X2hhc2giOiJXMDhHQS1obnNWbWt4cGMxUGdWV1kxQjRzMzhKOW50bFFaMkdUaXdIR0ZBIn0seyJwYXRoIjoid2ViX2FjY2Vzc2libGVfcmVzb3VyY2VzL2dvb2dsZS1hbmFseXRpY3NfaW5wYWdlX2xpbmtpZC5qcyIsInJvb3RfaGFzaCI6ImdXdURabmFaZ2ZZLXZhU3UxM2x0VWUydmdmSVpsUm9hd2ZGaUlPbnliNncifSx7InBhdGgiOiJ3ZWJfYWNjZXNzaWJsZV9yZXNvdXJjZXMvZ29vZ2xlLWltYS5qcyIsInJvb3RfaGFzaCI6Ii1Ed2hQbkFlaFhwZjVNWVFlRkRpaHZEci1vU2JHdWZ6eERqT3BoWGEtRkUifSx7InBhdGgiOiJ3ZWJfYWNjZXNzaWJsZV9yZXNvdXJjZXMvZ29vZ2xlc3luZGljYXRpb25fYWRzYnlnb29nbGUuanMiLCJyb290X2hhc2giOiJ1b0hhX1pwWnladWRucEZPeTlWVVhEYlhQVlcxN0xUV21PNDhTYkFoQWNJIn0seyJwYXRoIjoid2ViX2FjY2Vzc2libGVfcmVzb3VyY2VzL2dvb2dsZXRhZ21hbmFnZXJfZ3RtLmpzIiwicm9vdF9oYXNoIjoidGdrUy1IYnQwcUtrVkUzNjJOM1c1QTBHeE9jTTl5UXJYZXVHOEltUHJ5QSJ9LHsicGF0aCI6IndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlcy9nb29nbGV0YWdzZXJ2aWNlc19ncHQuanMiLCJyb290X2hhc2giOiI5dTFhbHViZFozMzRLRWRjbk5TYklFdGRLcXBlc2M0ejlYbDZ0bUpMU3BrIn0seyJwYXRoIjoid2ViX2FjY2Vzc2libGVfcmVzb3VyY2VzL2hkLW1haW4uanMiLCJyb290X2hhc2giOiJTYUpjX0x3dnItMmoyUVVlT0E4OHBRN3ZTeGxRaDBsTnA3ZE4wRWFuWjlJIn0seyJwYXRoIjoid2ViX2FjY2Vzc2libGVfcmVzb3VyY2VzL25vYmFiLmpzIiwicm9vdF9oYXNoIjoiRzhSN0RwdGtMUHp5U1dsMzN6YTZ2YkpqOFQwTV9XU3lodXRjVElUTU1adyJ9LHsicGF0aCI6IndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlcy9ub2JhYjIuanMiLCJyb290X2hhc2giOiJQdVJfbVJGZ2lLbE9IQ2dOUE5ZaGFuVlJPcEVKbzRkdTE1Sm9sLXg4X0pZIn0seyJwYXRoIjoid2ViX2FjY2Vzc2libGVfcmVzb3VyY2VzL25vZXZhbC1zaWxlbnQuanMiLCJyb290X2hhc2giOiJ2TGNRN1g1a0tWeklfcGk0WVJsNDRJQWZfYzVsRUgwY3VjTVlNNXBXUk5ZIn0seyJwYXRoIjoid2ViX2FjY2Vzc2libGVfcmVzb3VyY2VzL25vZXZhbC5qcyIsInJvb3RfaGFzaCI6IlBOMXZkQkt2UXhjM1NHQlRORFNWbGxMYm5tRmpPOXl1UjFXdGtEbHpLOFkifSx7InBhdGgiOiJ3ZWJfYWNjZXNzaWJsZV9yZXNvdXJjZXMvbm9mYWIuanMiLCJyb290X2hhc2giOiIzWGFFRkZfLWtCZ0FkYXBObUtla1Y4dmNhM01wVy1vWHhWdnlNRE1zOEZZIn0seyJwYXRoIjoid2ViX2FjY2Vzc2libGVfcmVzb3VyY2VzL25vb3AtMC4xcy5tcDMiLCJyb290X2hhc2giOiJfSVRHbG5NWXVLM21nYi1DeXBQbVBzMWk0cWhERGhwdExoSTVEb0FYNnFnIn0seyJwYXRoIjoid2ViX2FjY2Vzc2libGVfcmVzb3VyY2VzL25vb3AtMC41cy5tcDMiLCJyb290X2hhc2giOiJkTnpxNndFR2tMOTdhUElOaWRPSkhKaWRqUXZaelRpS2h3bGlhZnZna1Y0In0seyJwYXRoIjoid2ViX2FjY2Vzc2libGVfcmVzb3VyY2VzL25vb3AtMXMubXA0Iiwicm9vdF9oYXNoIjoib243Ym9PTkxKa2lwQ29BSzZVX2U4LU9RRnRHNXZXNVVveDdlSHh6ZF90QSJ9LHsicGF0aCI6IndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlcy9ub29wLXZtYXAxLjAueG1sIiwicm9vdF9oYXNoIjoiX01RUE50aHNqM0ZHMUxMd3dTYzh4R0tDd3NJMk1EMnJ3WExmclAzNFpRZyJ9LHsicGF0aCI6IndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlcy9ub29wLmNzcyIsInJvb3RfaGFzaCI6InpNeGVpcHA2MWdpZ1R5UWxNRFJXbEwxeFVMMXpNVlVUS0VGQ3RxT2JwTGMifSx7InBhdGgiOiJ3ZWJfYWNjZXNzaWJsZV9yZXNvdXJjZXMvbm9vcC5odG1sIiwicm9vdF9oYXNoIjoienVEd0p5dXVoaGk3TnJsdXJrUUZldGV0Z3lXdndBbHVKSGR4T3hSdUd0dyJ9LHsicGF0aCI6IndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlcy9ub29wLmpzIiwicm9vdF9oYXNoIjoiVlpLX29sM25YQmp2QVJiTHVaa01FaUY0c2VfbDRIYnh4RkJKb0oyVFdpVSJ9LHsicGF0aCI6IndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlcy9ub29wLmpzb24iLCJyb290X2hhc2giOiJSQk52bzFXelo0b1JScTBXOS1oa25wVDdUOElmNTM2REVNQmc5aHlxXzRvIn0seyJwYXRoIjoid2ViX2FjY2Vzc2libGVfcmVzb3VyY2VzL25vb3AudHh0Iiwicm9vdF9oYXNoIjoiQWJwSEdjZ0xiLWtSc0pHbndGRWt0azd1enBaT0NjQlk3NC1ZQmRyS1ZHcyJ9LHsicGF0aCI6IndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlcy9vdXRicmFpbi13aWRnZXQuanMiLCJyb290X2hhc2giOiJpbjh4TlhtTFNCamFVUGZvMTNWa0ZFOFFWT2FEbWVRbXIzOFVWRWIxdDdZIn0seyJwYXRoIjoid2ViX2FjY2Vzc2libGVfcmVzb3VyY2VzL3BvcGFkcy1kdW1teS5qcyIsInJvb3RfaGFzaCI6ImZaNmtqOExiOGNhQVFHMVROYXBXZjRTV2ZwR3hEb0k3ZmlSaXpsTWZvb0UifSx7InBhdGgiOiJ3ZWJfYWNjZXNzaWJsZV9yZXNvdXJjZXMvcG9wYWRzLmpzIiwicm9vdF9oYXNoIjoiaFhBT1NJOTRMZDR1ckdaTmdTYzVuM1pRZ3laNEdJN0wzaFEtVklLZ3YxZyJ9LHsicGF0aCI6IndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlcy9wcmViaWQtYWRzLmpzIiwicm9vdF9oYXNoIjoiVHZRMGpqTF9fZnB6bXhZUGQ5QzViOFRJWWNDSno2NkVXQ2RlTUVOaGViTSJ9LHsicGF0aCI6IndlYl9hY2Nlc3NpYmxlX3Jlc291cmNlcy9zY29yZWNhcmRyZXNlYXJjaF9iZWFjb24uanMiLCJyb290X2hhc2giOiJ3WGMyQ3pjanVTU2hhUHh5N1hLUGtrX25Ma0RQd01IVC0xSTNoSnhaQ1VZIn0seyJwYXRoIjoid2hpdGVsaXN0Lmh0bWwiLCJyb290X2hhc2giOiJmWWlacWFnZkE3UzZKN2txejM3UmFFUXVQS2NJT0xub0d3Y3VWTlBDcktNIn1dLCJmb3JtYXQiOiJ0cmVlaGFzaCIsImhhc2hfYmxvY2tfc2l6ZSI6NDA5Nn1dLCJpdGVtX2lkIjoiY2pwYWxoZGxuYnBhZmlhbWVqZG5oY3BoamJrZWlhZ20iLCJpdGVtX3ZlcnNpb24iOiIxLjU5LjAiLCJwcm90b2NvbF92ZXJzaW9uIjoxfQ","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"lLMK5xlqX5MNJcVGG0y8iY2em5Pw5t1w31GmyDJPYaY_O9w6DYCACXuGrFlX3KPl9X4gyJDG6cM3DRjqODL3Ny4dK8dFW3WlRAo_yV9ZgyrI9vdVw2c4JqTB5TtrGM1iQH4mUe3hHdIiwtlJCPyzdkTOPx8ZYsBVJq-sCt6YjuA3yKy5DngBW_uyZOMev-7p7EyF2AwUCFxQl0-3z9Jp9Fr9KIOell8s1GzUr29F3bc-q_QKb5YZIudIvrPV9w7WicD4QIhkrruVOdLgmWt19WzAi59hyYY1x1jNomTTbbsouHTi0RCvuC6u3lt8FN7Uh1fkvVF604_gOSSvwiyEPA"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"GywV-kFytZZzCEEPLQToP9gH27VdP_lOcjr39uV05CskiYm58EGwWk2JGW_wc9mN821Kn81rGev8SxBQ6jIs9SySnRHdKZzlXtgNZWhpylX0Yxj6quoeIauV5EqyDvqCvvcbZM9qwdJYVTWuk5aHkiRIieDlAqUKyQJh_k6VCj0kB5GHOGHG1Obsk79JTN_SDWk5ksjqqmz7NV-oIsMqeHPDmEIL_DXnKBiFYywR12Go5hqmBmDyrOy1Rl-HtZEgiwIWjvpTzZI7n-96l-xRcsBBLY1hRrq-EkEapWXGTo9MYhZNGnEsyAC9Ck5voZuO2XWMEy8iNAvS-qNmAfRL4A"}]}}] \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/about.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/about.html deleted file mode 100644 index fc98984..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/about.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - -uBlock — About - - - - - - - - -
-
-
-
Copyright © Raymond Hill 2014-present
-
-
-
-
-
-
-
-
-
-
-
- -
- -
- - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/advanced-settings.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/advanced-settings.html deleted file mode 100644 index 22bee72..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/advanced-settings.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - -
-

info-circle -

-   -

- -
- - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/asset-viewer.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/asset-viewer.html deleted file mode 100644 index b30320f..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/asset-viewer.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - -
- - - spinner - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/assets.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/assets.json deleted file mode 100644 index 454c954..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/assets.json +++ /dev/null @@ -1,916 +0,0 @@ -{ - "assets.json": { - "content": "internal", - "updateAfter": 13, - "contentURL": [ - "https://raw.githubusercontent.com/gorhill/uBlock/master/assets/assets.json", - "assets/assets.json" - ], - "cdnURLs": [ - "https://ublockorigin.github.io/uAssetsCDN/ublock/assets.json", - "https://ublockorigin.pages.dev/ublock/assets.json", - "https://cdn.jsdelivr.net/gh/gorhill/uBlock@master/assets/assets.json", - "https://cdn.statically.io/gh/gorhill/uBlock/master/assets/assets.json" - ] - }, - "public_suffix_list.dat": { - "content": "internal", - "updateAfter": 19, - "contentURL": [ - "https://publicsuffix.org/list/public_suffix_list.dat", - "assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat" - ] - }, - "ublock-badlists": { - "content": "internal", - "updateAfter": 29, - "contentURL": [ - "https://ublockorigin.github.io/uAssets/filters/badlists.txt", - "assets/ublock/badlists.txt" - ], - "cdnURLs": [ - "https://ublockorigin.github.io/uAssetsCDN/filters/badlists.txt", - "https://ublockorigin.pages.dev/filters/badlists.txt", - "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/badlists.txt", - "https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/badlists.txt" - ] - }, - "ublock-filters": { - "content": "filters", - "group": "default", - "parent": "uBlock filters", - "title": "uBlock filters – Ads", - "tags": "ads", - "contentURL": [ - "https://ublockorigin.github.io/uAssets/filters/filters.txt", - "assets/ublock/filters.min.txt", - "assets/ublock/filters.txt" - ], - "cdnURLs": [ - "https://ublockorigin.github.io/uAssetsCDN/filters/filters.min.txt", - "https://ublockorigin.pages.dev/filters/filters.min.txt", - "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/filters.min.txt", - "https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/filters.min.txt" - ], - "supportURL": "https://github.com/uBlockOrigin/uAssets" - }, - "ublock-badware": { - "content": "filters", - "group": "default", - "parent": "uBlock filters", - "title": "uBlock filters – Badware risks", - "tags": "malware security", - "contentURL": [ - "https://ublockorigin.github.io/uAssets/filters/badware.txt", - "assets/ublock/badware.min.txt", - "assets/ublock/badware.txt" - ], - "cdnURLs": [ - "https://ublockorigin.github.io/uAssetsCDN/filters/badware.min.txt", - "https://ublockorigin.pages.dev/filters/badware.min.txt", - "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/badware.min.txt", - "https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/badware.min.txt" - ], - "supportURL": "https://github.com/uBlockOrigin/uAssets", - "instructionURL": "https://github.com/gorhill/uBlock/wiki/Badware-risks" - }, - "ublock-privacy": { - "content": "filters", - "group": "default", - "parent": "uBlock filters", - "title": "uBlock filters – Privacy", - "tags": "privacy", - "contentURL": [ - "https://ublockorigin.github.io/uAssets/filters/privacy.txt", - "assets/ublock/privacy.min.txt", - "assets/ublock/privacy.txt" - ], - "cdnURLs": [ - "https://ublockorigin.github.io/uAssetsCDN/filters/privacy.min.txt", - "https://ublockorigin.pages.dev/filters/privacy.min.txt", - "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/privacy.min.txt", - "https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/privacy.min.txt" - ], - "supportURL": "https://github.com/uBlockOrigin/uAssets" - }, - "ublock-unbreak": { - "content": "filters", - "group": "default", - "parent": "uBlock filters", - "title": "uBlock filters – Unbreak", - "contentURL": [ - "https://ublockorigin.github.io/uAssets/filters/unbreak.txt", - "assets/ublock/unbreak.min.txt", - "assets/ublock/unbreak.txt" - ], - "cdnURLs": [ - "https://ublockorigin.github.io/uAssetsCDN/filters/unbreak.min.txt", - "https://ublockorigin.pages.dev/filters/unbreak.min.txt", - "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/unbreak.min.txt", - "https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/unbreak.min.txt" - ], - "supportURL": "https://github.com/uBlockOrigin/uAssets" - }, - "ublock-quick-fixes": { - "content": "filters", - "group": "default", - "parent": "uBlock filters", - "title": "uBlock filters – Quick fixes", - "contentURL": [ - "https://ublockorigin.github.io/uAssets/filters/quick-fixes.txt", - "assets/ublock/quick-fixes.min.txt", - "assets/ublock/quick-fixes.txt" - ], - "cdnURLs": [ - "https://ublockorigin.github.io/uAssetsCDN/filters/quick-fixes.min.txt", - "https://ublockorigin.pages.dev/filters/quick-fixes.min.txt", - "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/quick-fixes.min.txt", - "https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/quick-fixes.min.txt" - ], - "supportURL": "https://github.com/uBlockOrigin/uAssets" - }, - "adguard-generic": { - "content": "filters", - "group": "ads", - "off": true, - "title": "AdGuard – Ads", - "tags": "ads", - "contentURL": "https://filters.adtidy.org/extension/ublock/filters/2_without_easylist.txt", - "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters", - "instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters" - }, - "adguard-mobile": { - "content": "filters", - "group": "ads", - "off": true, - "title": "AdGuard – Mobile Ads", - "tags": "ads mobile", - "ua": "mobile", - "contentURL": "https://filters.adtidy.org/extension/ublock/filters/11.txt", - "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters", - "instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters" - }, - "easylist": { - "content": "filters", - "group": "ads", - "title": "EasyList", - "tags": "ads", - "preferred": true, - "contentURL": [ - "https://ublockorigin.github.io/uAssets/thirdparties/easylist.txt", - "assets/thirdparties/easylist/easylist.txt" - ], - "cdnURLs": [ - "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist.txt", - "https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist.txt", - "https://ublockorigin.pages.dev/thirdparties/easylist.txt" - ], - "supportURL": "https://easylist.to/" - }, - "adguard-spyware-url": { - "content": "filters", - "group": "privacy", - "off": true, - "title": "AdGuard URL Tracking Protection", - "tags": "privacy", - "contentURL": "https://filters.adtidy.org/extension/ublock/filters/17.txt", - "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters", - "instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters" - }, - "adguard-spyware": { - "content": "filters", - "group": "privacy", - "off": true, - "title": "AdGuard Tracking Protection", - "contentURL": "https://filters.adtidy.org/extension/ublock/filters/3.txt", - "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters", - "instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters" - }, - "block-lan": { - "content": "filters", - "group": "privacy", - "off": true, - "title": "Block Outsider Intrusion into LAN", - "tags": "privacy security", - "contentURL": "https://ublockorigin.github.io/uAssets/filters/lan-block.txt", - "cdnURLs": [ - "https://ublockorigin.github.io/uAssetsCDN/filters/lan-block.txt", - "https://ublockorigin.pages.dev/filters/lan-block.txt", - "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/lan-block.txt", - "https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/lan-block.txt" - ], - "supportURL": "https://github.com/uBlockOrigin/uAssets" - }, - "easyprivacy": { - "content": "filters", - "group": "privacy", - "title": "EasyPrivacy", - "tags": "privacy", - "preferred": true, - "contentURL": [ - "https://ublockorigin.github.io/uAssets/thirdparties/easyprivacy.txt", - "assets/thirdparties/easylist/easyprivacy.txt" - ], - "cdnURLs": [ - "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easyprivacy.txt", - "https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easyprivacy.txt", - "https://ublockorigin.pages.dev/thirdparties/easyprivacy.txt" - ], - "supportURL": "https://easylist.to/" - }, - "urlhaus-1": { - "content": "filters", - "group": "malware", - "title": "Online Malicious URL Blocklist", - "contentURL": [ - "https://malware-filter.gitlab.io/urlhaus-filter/urlhaus-filter-ag-online.txt", - "assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt" - ], - "cdnURLs": [ - "https://curbengh.github.io/malware-filter/urlhaus-filter-ag-online.txt", - "https://malware-filter.gitlab.io/urlhaus-filter/urlhaus-filter-ag-online.txt", - "https://malware-filter.pages.dev/urlhaus-filter-ag-online.txt" - ], - "supportURL": "https://gitlab.com/malware-filter/urlhaus-filter#malicious-url-blocklist" - }, - "curben-phishing": { - "content": "filters", - "group": "malware", - "off": true, - "title": "Phishing URL Blocklist", - "contentURL": "https://malware-filter.gitlab.io/phishing-filter/phishing-filter.txt", - "cdnURLs": [ - "https://curbengh.github.io/phishing-filter/phishing-filter.txt", - "https://malware-filter.gitlab.io/phishing-filter/phishing-filter.txt", - "https://phishing-filter.pages.dev/phishing-filter.txt" - ], - "supportURL": "https://gitlab.com/malware-filter/phishing-filter#phishing-url-blocklist" - }, - "adguard-cookies": { - "content": "filters", - "group": "annoyances", - "group2": "cookies", - "parent": "AdGuard/uBO – Cookie Notices", - "off": true, - "title": "AdGuard – Cookie Notices", - "tags": "annoyances cookies", - "contentURL": "https://filters.adtidy.org/extension/ublock/filters/18.txt", - "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters", - "instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters" - }, - "ublock-cookies-adguard": { - "content": "filters", - "group": "annoyances", - "group2": "cookies", - "parent": "AdGuard/uBO – Cookie Notices", - "off": true, - "title": "uBlock filters – Cookie Notices", - "tags": "annoyances cookies", - "contentURL": "https://ublockorigin.github.io/uAssets/filters/annoyances-cookies.txt", - "cdnURLs": [ - "https://ublockorigin.github.io/uAssetsCDN/filters/annoyances-cookies.txt", - "https://ublockorigin.pages.dev/filters/annoyances-cookies.txt", - "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/annoyances-cookies.txt", - "https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/annoyances-cookies.txt" - ], - "supportURL": "https://github.com/uBlockOrigin/uAssets" - }, - "fanboy-cookiemonster": { - "content": "filters", - "group": "annoyances", - "group2": "cookies", - "parent": "EasyList/uBO – Cookie Notices", - "off": true, - "title": "EasyList – Cookie Notices", - "tags": "annoyances cookies", - "preferred": true, - "contentURL": [ - "https://ublockorigin.github.io/uAssets/thirdparties/easylist-cookies.txt", - "https://secure.fanboy.co.nz/fanboy-cookiemonster_ubo.txt" - ], - "cdnURLs": [ - "https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-cookies.txt", - "https://ublockorigin.pages.dev/thirdparties/easylist-cookies.txt", - "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-cookies.txt", - "https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-cookies.txt", - "https://secure.fanboy.co.nz/fanboy-cookiemonster_ubo.txt" - ], - "supportURL": "https://github.com/easylist/easylist#fanboy-lists" - }, - "ublock-cookies-easylist": { - "content": "filters", - "group": "annoyances", - "group2": "cookies", - "parent": "EasyList/uBO – Cookie Notices", - "off": true, - "title": "uBlock filters – Cookie Notices", - "tags": "annoyances cookies", - "preferred": true, - "contentURL": "https://ublockorigin.github.io/uAssets/filters/annoyances-cookies.txt", - "cdnURLs": [ - "https://ublockorigin.github.io/uAssetsCDN/filters/annoyances-cookies.txt", - "https://ublockorigin.pages.dev/filters/annoyances-cookies.txt", - "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/annoyances-cookies.txt", - "https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/annoyances-cookies.txt" - ], - "supportURL": "https://github.com/uBlockOrigin/uAssets" - }, - "adguard-social": { - "content": "filters", - "group": "annoyances", - "group2": "social", - "parent": null, - "off": true, - "title": "AdGuard – Social Widgets", - "tags": "annoyances social", - "contentURL": "https://filters.adtidy.org/extension/ublock/filters/4.txt", - "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters", - "instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters" - }, - "fanboy-social": { - "content": "filters", - "group": "annoyances", - "group2": "social", - "parent": null, - "off": true, - "title": "EasyList – Social Widgets", - "tags": "annoyances social", - "preferred": true, - "contentURL": [ - "https://ublockorigin.github.io/uAssets/thirdparties/easylist-social.txt", - "https://secure.fanboy.co.nz/fanboy-social_ubo.txt" - ], - "cdnURLs": [ - "https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-social.txt", - "https://ublockorigin.pages.dev/thirdparties/easylist-social.txt", - "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-social.txt", - "https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-social.txt", - "https://secure.fanboy.co.nz/fanboy-social_ubo.txt" - ], - "supportURL": "https://easylist.to/" - }, - "fanboy-thirdparty_social": { - "content": "filters", - "group": "annoyances", - "group2": "social", - "off": true, - "title": "Fanboy – Anti-Facebook", - "tags": "privacy", - "contentURL": "https://secure.fanboy.co.nz/fanboy-antifacebook.txt", - "supportURL": "https://github.com/ryanbr/fanboy-adblock/issues" - }, - "adguard-popup-overlays": { - "content": "filters", - "group": "annoyances", - "parent": "AdGuard – Annoyances", - "off": true, - "title": "AdGuard – Popup Overlays", - "tags": "annoyances", - "contentURL": "https://filters.adtidy.org/extension/ublock/filters/19.txt", - "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters", - "instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters" - }, - "adguard-mobile-app-banners": { - "content": "filters", - "group": "annoyances", - "parent": "AdGuard – Annoyances", - "off": true, - "title": "AdGuard – Mobile App Banners", - "tags": "annoyances mobile", - "contentURL": "https://filters.adtidy.org/extension/ublock/filters/20.txt", - "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters", - "instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters" - }, - "adguard-other-annoyances": { - "content": "filters", - "group": "annoyances", - "parent": "AdGuard – Annoyances", - "off": true, - "title": "AdGuard – Other Annoyances", - "tags": "annoyances", - "contentURL": "https://filters.adtidy.org/extension/ublock/filters/21.txt", - "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters", - "instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters" - }, - "adguard-widgets": { - "content": "filters", - "group": "annoyances", - "parent": "AdGuard – Annoyances", - "off": true, - "title": "AdGuard – Widgets", - "tags": "annoyances", - "contentURL": "https://filters.adtidy.org/extension/ublock/filters/22.txt", - "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters", - "instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters" - }, - "easylist-annoyances": { - "content": "filters", - "group": "annoyances", - "parent": "EasyList – Annoyances", - "off": true, - "title": "EasyList – Other Annoyances", - "tags": "annoyances", - "preferred": true, - "contentURL": "https://ublockorigin.github.io/uAssets/thirdparties/easylist-annoyances.txt", - "cdnURLs": [ - "https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-annoyances.txt", - "https://ublockorigin.pages.dev/thirdparties/easylist-annoyances.txt", - "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-annoyances.txt", - "https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-annoyances.txt" - ], - "supportURL": "https://github.com/easylist/easylist#fanboy-lists" - }, - "easylist-chat": { - "content": "filters", - "group": "annoyances", - "parent": "EasyList – Annoyances", - "off": true, - "title": "EasyList – Chat Widgets", - "tags": "annoyances", - "preferred": true, - "contentURL": "https://ublockorigin.github.io/uAssets/thirdparties/easylist-chat.txt", - "cdnURLs": [ - "https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-chat.txt", - "https://ublockorigin.pages.dev/thirdparties/easylist-chat.txt", - "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-chat.txt", - "https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-chat.txt" - ], - "supportURL": "https://github.com/easylist/easylist#fanboy-lists" - }, - "easylist-newsletters": { - "content": "filters", - "group": "annoyances", - "parent": "EasyList – Annoyances", - "off": true, - "title": "EasyList – Newsletter Notices", - "tags": "annoyances", - "preferred": true, - "contentURL": [ - "https://ublockorigin.github.io/uAssets/thirdparties/easylist-newsletters.txt" - ], - "cdnURLs": [ - "https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-newsletters.txt", - "https://ublockorigin.pages.dev/thirdparties/easylist-newsletters.txt", - "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-newsletters.txt", - "https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-newsletters.txt" - ], - "supportURL": "https://easylist.to/" - }, - "easylist-notifications": { - "content": "filters", - "group": "annoyances", - "parent": "EasyList – Annoyances", - "off": true, - "title": "EasyList – Notifications", - "tags": "annoyances", - "preferred": true, - "contentURL": [ - "https://ublockorigin.github.io/uAssets/thirdparties/easylist-notifications.txt" - ], - "cdnURLs": [ - "https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-notifications.txt", - "https://ublockorigin.pages.dev/thirdparties/easylist-notifications.txt", - "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-notifications.txt", - "https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-notifications.txt" - ], - "supportURL": "https://easylist.to/" - }, - "ublock-annoyances": { - "content": "filters", - "group": "annoyances", - "off": true, - "title": "uBlock filters – Annoyances", - "tags": "annoyances", - "contentURL": "https://ublockorigin.github.io/uAssets/filters/annoyances.txt", - "cdnURLs": [ - "https://ublockorigin.github.io/uAssetsCDN/filters/annoyances.min.txt", - "https://ublockorigin.pages.dev/filters/annoyances.min.txt", - "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/annoyances.min.txt", - "https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/annoyances.min.txt" - ], - "supportURL": "https://github.com/uBlockOrigin/uAssets" - }, - "dpollock-0": { - "content": "filters", - "group": "multipurpose", - "updateAfter": 13, - "off": true, - "title": "Dan Pollock’s hosts file", - "tags": "ads privacy security", - "contentURL": "https://someonewhocares.org/hosts/hosts", - "supportURL": "https://someonewhocares.org/hosts/" - }, - "plowe-0": { - "content": "filters", - "group": "multipurpose", - "updateAfter": 13, - "title": "Peter Lowe’s Ad and tracking server list", - "tags": "ads privacy security", - "preferred": true, - "contentURL": [ - "https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext", - "assets/thirdparties/pgl.yoyo.org/as/serverlist.txt", - "assets/thirdparties/pgl.yoyo.org/as/serverlist" - ], - "supportURL": "https://pgl.yoyo.org/adservers/" - }, - "ALB-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇦🇱al 🇽🇰xk: Adblock List for Albania", - "tags": "ads albania shqipja", - "lang": "sq", - "contentURL": "https://raw.githubusercontent.com/AnXh3L0/blocklist/master/albanian-easylist-addition/Albania.txt", - "supportURL": "https://github.com/AnXh3L0/blocklist" - }, - "ara-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇪🇬eg 🇸🇦sa 🇲🇦ma 🇩🇿dz: Liste AR", - "tags": "ads arabic اَلْعَرَبِيَّةُ‎", - "lang": "ar", - "contentURL": "https://easylist-downloads.adblockplus.org/Liste_AR.txt", - "supportURL": "https://forums.lanik.us/viewforum.php?f=98" - }, - "BGR-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇧🇬bg: Bulgarian Adblock list", - "tags": "ads bulgarian България macedonian Македонија", - "lang": "bg mk", - "contentURL": "https://stanev.org/abp/adblock_bg.txt", - "supportURL": "https://stanev.org/abp/" - }, - "CHN-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇨🇳cn 🇹🇼tw: AdGuard Chinese (中文)", - "tags": "ads chinese 中文", - "lang": "ug zh", - "contentURL": "https://filters.adtidy.org/extension/ublock/filters/224.txt", - "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters" - }, - "CZE-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇨🇿cz 🇸🇰sk: EasyList Czech and Slovak", - "tags": "ads czech česká slovak slovenská", - "lang": "cs sk", - "contentURL": "https://raw.githubusercontent.com/tomasko126/easylistczechandslovak/master/filters.txt", - "supportURL": "https://github.com/tomasko126/easylistczechandslovak" - }, - "DEU-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇩🇪de 🇨🇭ch 🇦🇹at: EasyList Germany", - "tags": "ads german deutschland luxembourgish lëtzebuerg romansh", - "lang": "de dsb hsb lb rm", - "contentURL": [ - "https://easylist.to/easylistgermany/easylistgermany.txt", - "https://easylist-downloads.adblockplus.org/easylistgermany.txt" - ], - "supportURL": "https://forums.lanik.us/viewforum.php?f=90" - }, - "EST-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇪🇪ee: Eesti saitidele kohandatud filter", - "tags": "ads estonian", - "lang": "et", - "contentURL": "https://adblock.ee/list.php", - "supportURL": "https://adblock.ee/" - }, - "FIN-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇫🇮fi: Adblock List for Finland", - "tags": "ads finnish", - "lang": "fi", - "contentURL": "https://raw.githubusercontent.com/finnish-easylist-addition/finnish-easylist-addition/gh-pages/Finland_adb.txt", - "supportURL": "https://github.com/finnish-easylist-addition/finnish-easylist-addition" - }, - "FRA-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇫🇷fr 🇨🇦ca: AdGuard Français", - "tags": "ads french", - "lang": "ar br ff fr lb oc son", - "contentURL": "https://filters.adtidy.org/extension/ublock/filters/16.txt", - "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters" - }, - "GRC-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇬🇷gr 🇨🇾cy: Greek AdBlock Filter", - "tags": "ads greek", - "lang": "el", - "contentURL": "https://www.void.gr/kargig/void-gr-filters.txt", - "supportURL": "https://github.com/kargig/greek-adblockplus-filter" - }, - "HRV-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇭🇷hr 🇷🇸rs: Dandelion Sprout's Serbo-Croatian filters", - "tags": "ads croatian serbian", - "lang": "hr sr", - "contentURL": "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/SerboCroatianList.txt", - "supportURL": "https://github.com/DandelionSprout/adfilt#readme" - }, - "HUN-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇭🇺hu: hufilter", - "tags": "ads hungarian", - "lang": "hu", - "contentURL": "https://cdn.jsdelivr.net/gh/hufilter/hufilter@gh-pages/hufilter-ublock.txt", - "supportURL": "https://github.com/hufilter/hufilter" - }, - "IDN-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇮🇩id 🇲🇾my: ABPindo", - "tags": "ads indonesian malay", - "lang": "id ms", - "contentURL": "https://raw.githubusercontent.com/ABPindo/indonesianadblockrules/master/subscriptions/abpindo.txt", - "supportURL": "https://github.com/ABPindo/indonesianadblockrules" - }, - "IND-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇮🇳in 🇱🇰lk 🇳🇵np: IndianList", - "tags": "ads assamese bengali gujarati hindi kannada malayalam marathi nepali punjabi sinhala tamil telugu", - "lang": "as bn gu hi kn ml mr ne pa si ta te", - "contentURL": "https://easylist-downloads.adblockplus.org/indianlist.txt", - "supportURL": "https://github.com/mediumkreation/IndianList" - }, - "IRN-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇮🇷ir: PersianBlocker", - "tags": "ads af ir persian pashto tajik tj", - "lang": "fa ps tg", - "contentURL": [ - "https://raw.githubusercontent.com/MasterKia/PersianBlocker/main/PersianBlocker.txt", - "https://cdn.statically.io/gh/MasterKia/PersianBlocker/main/PersianBlocker.txt" - ], - "cdnURLs": [ - "https://cdn.jsdelivr.net/gh/MasterKia/PersianBlocker@main/PersianBlocker.txt", - "https://cdn.statically.io/gh/MasterKia/PersianBlocker/main/PersianBlocker.txt" - ], - "supportURL": "https://github.com/MasterKia/PersianBlocker" - }, - "ISL-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇮🇸is: Icelandic ABP List", - "tags": "ads icelandic", - "lang": "is", - "contentURL": "https://raw.githubusercontent.com/brave/adblock-lists/master/custom/is.txt", - "supportURL": "https://github.com/brave/adblock-lists/issues" - }, - "ISR-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇮🇱il: EasyList Hebrew", - "tags": "ads hebrew", - "lang": "he", - "contentURL": "https://raw.githubusercontent.com/easylist/EasyListHebrew/master/EasyListHebrew.txt", - "supportURL": "https://github.com/easylist/EasyListHebrew" - }, - "ITA-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇮🇹it: EasyList Italy", - "tags": "ads italian", - "lang": "it lij", - "contentURL": "https://easylist-downloads.adblockplus.org/easylistitaly.txt", - "supportURL": "https://forums.lanik.us/viewforum.php?f=96" - }, - "JPN-1": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇯🇵jp: AdGuard Japanese", - "tags": "ads japanese 日本語", - "lang": "ja", - "contentURL": "https://filters.adtidy.org/extension/ublock/filters/7.txt", - "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters", - "instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters" - }, - "KOR-1": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇰🇷kr: List-KR", - "tags": "ads korean 한국어", - "lang": "ko", - "contentURL": "https://cdn.jsdelivr.net/gh/List-KR/List-KR@latest/filter-uBlockOrigin.txt", - "supportURL": "https://github.com/List-KR/List-KR#readme" - }, - "LTU-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇱🇹lt: EasyList Lithuania", - "tags": "ads lithuanian", - "lang": "lt", - "contentURL": "https://raw.githubusercontent.com/EasyList-Lithuania/easylist_lithuania/master/easylistlithuania.txt", - "cdnURLs": [ - "https://cdn.jsdelivr.net/gh/EasyList-Lithuania/easylist_lithuania@master/easylistlithuania.txt", - "https://cdn.statically.io/gh/EasyList-Lithuania/easylist_lithuania/master/easylistlithuania.txt" - ], - "supportURL": "https://github.com/EasyList-Lithuania/easylist_lithuania" - }, - "LVA-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇱🇻lv: Latvian List", - "tags": "ads latvian", - "lang": "lv", - "contentURL": "https://raw.githubusercontent.com/Latvian-List/adblock-latvian/master/lists/latvian-list.txt", - "supportURL": "https://github.com/Latvian-List/adblock-latvian" - }, - "MKD-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇲🇰mk: Macedonian adBlock Filters", - "tags": "ads macedonian", - "lang": "mk", - "contentURL": "https://raw.githubusercontent.com/DeepSpaceHarbor/Macedonian-adBlock-Filters/master/Filters", - "supportURL": "https://github.com/DeepSpaceHarbor/Macedonian-adBlock-Filters" - }, - "NLD-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇳🇱nl 🇧🇪be: AdGuard Dutch", - "tags": "ads afrikaans be belgië frisian dutch flemish nederlands netherlands nl sr suriname za", - "lang": "af fy nl", - "contentURL": "https://filters.adtidy.org/extension/ublock/filters/8.txt", - "cdnURLs": null, - "supportURL": "https://kb.adguard.com/en/general/adguard-ad-filters" - }, - "NOR-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇳🇴no 🇩🇰dk 🇮🇸is: Dandelion Sprouts nordiske filtre", - "tags": "ads norwegian danish icelandic", - "lang": "nb nn no da is", - "contentURL": [ - "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/NorwegianList.txt" - ], - "cdnURLs": [ - "https://cdn.jsdelivr.net/gh/DandelionSprout/adfilt@master/NorwegianList.txt", - "https://cdn.statically.io/gl/DandelionSprout/adfilt/master/NorwegianList.txt" - ], - "supportURL": "https://github.com/DandelionSprout/adfilt" - }, - "POL-0": { - "content": "filters", - "group": "regions", - "parent": "🇵🇱pl: Oficjalne Polskie Filtry", - "off": true, - "title": "🇵🇱pl: Oficjalne Polskie Filtry do uBlocka Origin", - "tags": "ads polish polski", - "lang": "szl pl", - "contentURL": "https://raw.githubusercontent.com/MajkiIT/polish-ads-filter/master/polish-adblock-filters/adblock.txt", - "supportURL": "https://github.com/MajkiIT/polish-ads-filter/issues", - "instructionURL": "https://github.com/MajkiIT/polish-ads-filter#polish-filters-for-adblock-ublock-origin--adguard" - }, - "POL-2": { - "content": "filters", - "group": "regions", - "parent": "🇵🇱pl: Oficjalne Polskie Filtry", - "off": true, - "title": "🇵🇱pl: Oficjalne polskie filtry przeciwko alertom o Adblocku", - "tags": "ads polish polski", - "lang": "szl pl", - "contentURL": "https://raw.githubusercontent.com/olegwukr/polish-privacy-filters/master/anti-adblock.txt", - "supportURL": "https://github.com/olegwukr/polish-privacy-filters/issues" - }, - "ROU-1": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇷🇴ro 🇲🇩md: Romanian Ad (ROad) Block List Light", - "tags": "ads romanian română moldavian moldovenească молдовеняскэ", - "lang": "ro", - "contentURL": [ - "https://raw.githubusercontent.com/tcptomato/ROad-Block/master/road-block-filters-light.txt" - ], - "supportURL": "https://github.com/tcptomato/ROad-Block" - }, - "RUS-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList", - "tags": "ads belarusian беларуская kazakh tatar russian русский ukrainian українська uzbek", - "lang": "be kk tt ru uk uz", - "contentURL": "https://raw.githubusercontent.com/easylist/ruadlist/master/RuAdList-uBO.txt", - "cdnURLs": [ - "https://cdn.jsdelivr.net/gh/dimisa-RUAdList/RUAdListCDN@main/lists/ruadlist.ubo.min.txt", - "https://cdn.statically.io/gh/dimisa-RUAdList/RUAdListCDN/main/lists/ruadlist.ubo.min.txt", - "https://raw.githubusercontent.com/dimisa-RUAdList/RUAdListCDN/main/lists/ruadlist.ubo.min.txt" - ], - "supportURL": "https://forums.lanik.us/viewforum.php?f=102", - "instructionURL": "https://forums.lanik.us/viewtopic.php?f=102&t=22512" - }, - "spa-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇪🇸es 🇦🇷ar 🇲🇽mx 🇨🇴co: EasyList Spanish", - "tags": "ads aragonese basque catalan spanish español galician guarani", - "lang": "an ast ca cak es eu gl gn trs quz", - "contentURL": "https://easylist-downloads.adblockplus.org/easylistspanish.txt", - "supportURL": "https://forums.lanik.us/viewforum.php?f=103" - }, - "spa-1": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇪🇸es 🇦🇷ar 🇧🇷br 🇵🇹pt: AdGuard Spanish/Portuguese", - "tags": "ads aragonese basque catalan spanish español galician guarani portuguese português", - "lang": "an ast ca cak es eu gl gn trs pt quz", - "contentURL": "https://filters.adtidy.org/extension/ublock/filters/9.txt", - "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters", - "instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters" - }, - "SVN-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇸🇮si: Slovenian List", - "tags": "ads slovenian slovenski", - "lang": "sl", - "contentURL": "https://raw.githubusercontent.com/betterwebleon/slovenian-list/master/filters.txt", - "supportURL": "https://github.com/betterwebleon/slovenian-list" - }, - "SWE-1": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇸🇪se: Frellwit's Swedish Filter", - "tags": "ads swedish svenska", - "lang": "sv", - "contentURL": "https://raw.githubusercontent.com/lassekongo83/Frellwits-filter-lists/master/Frellwits-Swedish-Filter.txt", - "cdnURLs": [ - "https://raw.githubusercontent.com/lassekongo83/Frellwits-filter-lists/swefilter/swefilter.min.txt", - "https://cdn.jsdelivr.net/gh/lassekongo83/Frellwits-filter-lists@swefilter/swefilter.min.txt" - ], - "supportURL": "https://github.com/lassekongo83/Frellwits-filter-lists" - }, - "THA-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇹🇭th: EasyList Thailand", - "tags": "ads thai ไทย", - "lang": "th", - "contentURL": "https://raw.githubusercontent.com/easylist-thailand/easylist-thailand/master/subscription/easylist-thailand.txt", - "supportURL": "https://github.com/easylist-thailand/easylist-thailand" - }, - "TUR-0": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇹🇷tr: AdGuard Turkish", - "tags": "ads turkish türkçe", - "lang": "tr", - "contentURL": "https://filters.adtidy.org/extension/ublock/filters/13.txt", - "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters", - "instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters" - }, - "VIE-1": { - "content": "filters", - "group": "regions", - "off": true, - "title": "🇻🇳vn: ABPVN List", - "tags": "ads vietnamese việt", - "lang": "vi", - "contentURL": "https://raw.githubusercontent.com/abpvn/abpvn/master/filter/abpvn_ublock.txt", - "supportURL": "https://abpvn.com/" - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/resources/scriptlets.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/resources/scriptlets.js deleted file mode 100644 index 6e9dcd6..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/resources/scriptlets.js +++ /dev/null @@ -1,4952 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock - - The scriptlets below are meant to be injected only into a - web page context. -*/ - -/* eslint no-prototype-builtins: 0 */ - -// Externally added to the private namespace in which scriptlets execute. -/* global scriptletGlobals */ - -export const builtinScriptlets = []; - -/******************************************************************************* - - Helper functions - - These are meant to be used as dependencies to injectable scriptlets. - -*******************************************************************************/ - -builtinScriptlets.push({ - name: 'safe-self.fn', - fn: safeSelf, -}); -function safeSelf() { - if ( scriptletGlobals.safeSelf ) { - return scriptletGlobals.safeSelf; - } - const self = globalThis; - const safe = { - 'Array_from': Array.from, - 'Error': self.Error, - 'Function_toStringFn': self.Function.prototype.toString, - 'Function_toString': thisArg => safe.Function_toStringFn.call(thisArg), - 'Math_floor': Math.floor, - 'Math_max': Math.max, - 'Math_min': Math.min, - 'Math_random': Math.random, - 'Object': Object, - 'Object_defineProperty': Object.defineProperty.bind(Object), - 'Object_defineProperties': Object.defineProperties.bind(Object), - 'Object_fromEntries': Object.fromEntries.bind(Object), - 'Object_getOwnPropertyDescriptor': Object.getOwnPropertyDescriptor.bind(Object), - 'RegExp': self.RegExp, - 'RegExp_test': self.RegExp.prototype.test, - 'RegExp_exec': self.RegExp.prototype.exec, - 'Request_clone': self.Request.prototype.clone, - 'String_fromCharCode': String.fromCharCode, - 'XMLHttpRequest': self.XMLHttpRequest, - 'addEventListener': self.EventTarget.prototype.addEventListener, - 'removeEventListener': self.EventTarget.prototype.removeEventListener, - 'fetch': self.fetch, - 'JSON': self.JSON, - 'JSON_parseFn': self.JSON.parse, - 'JSON_stringifyFn': self.JSON.stringify, - 'JSON_parse': (...args) => safe.JSON_parseFn.call(safe.JSON, ...args), - 'JSON_stringify': (...args) => safe.JSON_stringifyFn.call(safe.JSON, ...args), - 'log': console.log.bind(console), - // Properties - logLevel: 0, - // Methods - makeLogPrefix(...args) { - return this.sendToLogger && `[${args.join(' \u205D ')}]` || ''; - }, - uboLog(...args) { - if ( this.sendToLogger === undefined ) { return; } - if ( args === undefined || args[0] === '' ) { return; } - return this.sendToLogger('info', ...args); - - }, - uboErr(...args) { - if ( this.sendToLogger === undefined ) { return; } - if ( args === undefined || args[0] === '' ) { return; } - return this.sendToLogger('error', ...args); - }, - escapeRegexChars(s) { - return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - }, - initPattern(pattern, options = {}) { - if ( pattern === '' ) { - return { matchAll: true }; - } - const expect = (options.canNegate !== true || pattern.startsWith('!') === false); - if ( expect === false ) { - pattern = pattern.slice(1); - } - const match = /^\/(.+)\/([gimsu]*)$/.exec(pattern); - if ( match !== null ) { - return { - re: new this.RegExp( - match[1], - match[2] || options.flags - ), - expect, - }; - } - if ( options.flags !== undefined ) { - return { - re: new this.RegExp(this.escapeRegexChars(pattern), - options.flags - ), - expect, - }; - } - return { pattern, expect }; - }, - testPattern(details, haystack) { - if ( details.matchAll ) { return true; } - if ( details.re ) { - return this.RegExp_test.call(details.re, haystack) === details.expect; - } - return haystack.includes(details.pattern) === details.expect; - }, - patternToRegex(pattern, flags = undefined, verbatim = false) { - if ( pattern === '' ) { return /^/; } - const match = /^\/(.+)\/([gimsu]*)$/.exec(pattern); - if ( match === null ) { - const reStr = this.escapeRegexChars(pattern); - return new RegExp(verbatim ? `^${reStr}$` : reStr, flags); - } - try { - return new RegExp(match[1], match[2] || undefined); - } - catch(ex) { - } - return /^/; - }, - getExtraArgs(args, offset = 0) { - const entries = args.slice(offset).reduce((out, v, i, a) => { - if ( (i & 1) === 0 ) { - const rawValue = a[i+1]; - const value = /^\d+$/.test(rawValue) - ? parseInt(rawValue, 10) - : rawValue; - out.push([ a[i], value ]); - } - return out; - }, []); - return this.Object_fromEntries(entries); - }, - onIdle(fn, options) { - if ( self.requestIdleCallback ) { - return self.requestIdleCallback(fn, options); - } - return self.requestAnimationFrame(fn); - }, - }; - scriptletGlobals.safeSelf = safe; - if ( scriptletGlobals.bcSecret === undefined ) { return safe; } - // This is executed only when the logger is opened - const bc = new self.BroadcastChannel(scriptletGlobals.bcSecret); - let bcBuffer = []; - safe.logLevel = scriptletGlobals.logLevel || 1; - safe.sendToLogger = (type, ...args) => { - if ( args.length === 0 ) { return; } - const text = `[${document.location.hostname || document.location.href}]${args.join(' ')}`; - if ( bcBuffer === undefined ) { - return bc.postMessage({ what: 'messageToLogger', type, text }); - } - bcBuffer.push({ type, text }); - }; - bc.onmessage = ev => { - const msg = ev.data; - switch ( msg ) { - case 'iamready!': - if ( bcBuffer === undefined ) { break; } - bcBuffer.forEach(({ type, text }) => - bc.postMessage({ what: 'messageToLogger', type, text }) - ); - bcBuffer = undefined; - break; - case 'setScriptletLogLevelToOne': - safe.logLevel = 1; - break; - case 'setScriptletLogLevelToTwo': - safe.logLevel = 2; - break; - } - }; - bc.postMessage('areyouready?'); - return safe; -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'get-exception-token.fn', - fn: getExceptionToken, - dependencies: [ - 'safe-self.fn', - ], -}); -function getExceptionToken() { - const safe = safeSelf(); - const token = - safe.String_fromCharCode(Date.now() % 26 + 97) + - safe.Math_floor(safe.Math_random() * 982451653 + 982451653).toString(36); - const oe = self.onerror; - self.onerror = function(msg, ...args) { - if ( typeof msg === 'string' && msg.includes(token) ) { return true; } - if ( oe instanceof Function ) { - return oe.call(this, msg, ...args); - } - }.bind(); - return token; -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'should-debug.fn', - fn: shouldDebug, -}); -function shouldDebug(details) { - if ( details instanceof Object === false ) { return false; } - return scriptletGlobals.canDebug && details.debug; -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'run-at.fn', - fn: runAt, - dependencies: [ - 'safe-self.fn', - ], -}); -function runAt(fn, when) { - const intFromReadyState = state => { - const targets = { - 'loading': 1, - 'interactive': 2, 'end': 2, '2': 2, - 'complete': 3, 'idle': 3, '3': 3, - }; - const tokens = Array.isArray(state) ? state : [ state ]; - for ( const token of tokens ) { - const prop = `${token}`; - if ( targets.hasOwnProperty(prop) === false ) { continue; } - return targets[prop]; - } - return 0; - }; - const runAt = intFromReadyState(when); - if ( intFromReadyState(document.readyState) >= runAt ) { - fn(); return; - } - const onStateChange = ( ) => { - if ( intFromReadyState(document.readyState) < runAt ) { return; } - fn(); - safe.removeEventListener.apply(document, args); - }; - const safe = safeSelf(); - const args = [ 'readystatechange', onStateChange, { capture: true } ]; - safe.addEventListener.apply(document, args); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'run-at-html-element.fn', - fn: runAtHtmlElementFn, -}); -function runAtHtmlElementFn(fn) { - if ( document.documentElement ) { - fn(); - return; - } - const observer = new MutationObserver(( ) => { - observer.disconnect(); - fn(); - }); - observer.observe(document, { childList: true }); -} - -/******************************************************************************/ - -// Reference: -// https://github.com/AdguardTeam/Scriptlets/blob/master/wiki/about-scriptlets.md#prevent-xhr - -builtinScriptlets.push({ - name: 'generate-content.fn', - fn: generateContentFn, - dependencies: [ - 'safe-self.fn', - ], -}); -function generateContentFn(directive) { - const safe = safeSelf(); - const randomize = len => { - const chunks = []; - let textSize = 0; - do { - const s = safe.Math_random().toString(36).slice(2); - chunks.push(s); - textSize += s.length; - } - while ( textSize < len ); - return chunks.join(' ').slice(0, len); - }; - if ( directive === 'true' ) { - return Promise.resolve(randomize(10)); - } - if ( directive === 'emptyObj' ) { - return Promise.resolve('{}'); - } - if ( directive === 'emptyArr' ) { - return Promise.resolve('[]'); - } - if ( directive === 'emptyStr' ) { - return Promise.resolve(''); - } - if ( directive.startsWith('length:') ) { - const match = /^length:(\d+)(?:-(\d+))?$/.exec(directive); - if ( match ) { - const min = parseInt(match[1], 10); - const extent = safe.Math_max(parseInt(match[2], 10) || 0, min) - min; - const len = safe.Math_min(min + extent * safe.Math_random(), 500000); - return Promise.resolve(randomize(len | 0)); - } - } - if ( directive.startsWith('war:') && scriptletGlobals.warOrigin ) { - return new Promise(resolve => { - const warOrigin = scriptletGlobals.warOrigin; - const warName = directive.slice(4); - const fullpath = [ warOrigin, '/', warName ]; - const warSecret = scriptletGlobals.warSecret; - if ( warSecret !== undefined ) { - fullpath.push('?secret=', warSecret); - } - const warXHR = new safe.XMLHttpRequest(); - warXHR.responseType = 'text'; - warXHR.onloadend = ev => { - resolve(ev.target.responseText || ''); - }; - warXHR.open('GET', fullpath.join('')); - warXHR.send(); - }); - } - return Promise.resolve(''); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'abort-current-script-core.fn', - fn: abortCurrentScriptCore, - dependencies: [ - 'get-exception-token.fn', - 'safe-self.fn', - 'should-debug.fn', - ], -}); -// Issues to mind before changing anything: -// https://github.com/uBlockOrigin/uBlock-issues/issues/2154 -function abortCurrentScriptCore( - target = '', - needle = '', - context = '' -) { - if ( typeof target !== 'string' ) { return; } - if ( target === '' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('abort-current-script', target, needle, context); - const reNeedle = safe.patternToRegex(needle); - const reContext = safe.patternToRegex(context); - const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); - const thisScript = document.currentScript; - const chain = target.split('.'); - let owner = window; - let prop; - for (;;) { - prop = chain.shift(); - if ( chain.length === 0 ) { break; } - if ( prop in owner === false ) { break; } - owner = owner[prop]; - if ( owner instanceof Object === false ) { return; } - } - let value; - let desc = Object.getOwnPropertyDescriptor(owner, prop); - if ( - desc instanceof Object === false || - desc.get instanceof Function === false - ) { - value = owner[prop]; - desc = undefined; - } - const debug = shouldDebug(extraArgs); - const exceptionToken = getExceptionToken(); - const scriptTexts = new WeakMap(); - const getScriptText = elem => { - let text = elem.textContent; - if ( text.trim() !== '' ) { return text; } - if ( scriptTexts.has(elem) ) { return scriptTexts.get(elem); } - const [ , mime, content ] = - /^data:([^,]*),(.+)$/.exec(elem.src.trim()) || - [ '', '', '' ]; - try { - switch ( true ) { - case mime.endsWith(';base64'): - text = self.atob(content); - break; - default: - text = self.decodeURIComponent(content); - break; - } - } catch(ex) { - } - scriptTexts.set(elem, text); - return text; - }; - const validate = ( ) => { - const e = document.currentScript; - if ( e instanceof HTMLScriptElement === false ) { return; } - if ( e === thisScript ) { return; } - if ( context !== '' && reContext.test(e.src) === false ) { - // eslint-disable-next-line no-debugger - if ( debug === 'nomatch' || debug === 'all' ) { debugger; } - return; - } - if ( safe.logLevel > 1 && context !== '' ) { - safe.uboLog(logPrefix, `Matched src\n${e.src}`); - } - const scriptText = getScriptText(e); - if ( reNeedle.test(scriptText) === false ) { - // eslint-disable-next-line no-debugger - if ( debug === 'nomatch' || debug === 'all' ) { debugger; } - return; - } - if ( safe.logLevel > 1 ) { - safe.uboLog(logPrefix, `Matched text\n${scriptText}`); - } - // eslint-disable-next-line no-debugger - if ( debug === 'match' || debug === 'all' ) { debugger; } - safe.uboLog(logPrefix, 'Aborted'); - throw new ReferenceError(exceptionToken); - }; - // eslint-disable-next-line no-debugger - if ( debug === 'install' ) { debugger; } - try { - Object.defineProperty(owner, prop, { - get: function() { - validate(); - return desc instanceof Object - ? desc.get.call(owner) - : value; - }, - set: function(a) { - validate(); - if ( desc instanceof Object ) { - desc.set.call(owner, a); - } else { - value = a; - } - } - }); - } catch(ex) { - safe.uboErr(logPrefix, `Error: ${ex}`); - } -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'validate-constant.fn', - fn: validateConstantFn, - dependencies: [ - 'safe-self.fn', - ], -}); -function validateConstantFn(trusted, raw, extraArgs = {}) { - const safe = safeSelf(); - let value; - if ( raw === 'undefined' ) { - value = undefined; - } else if ( raw === 'false' ) { - value = false; - } else if ( raw === 'true' ) { - value = true; - } else if ( raw === 'null' ) { - value = null; - } else if ( raw === "''" || raw === '' ) { - value = ''; - } else if ( raw === '[]' || raw === 'emptyArr' ) { - value = []; - } else if ( raw === '{}' || raw === 'emptyObj' ) { - value = {}; - } else if ( raw === 'noopFunc' ) { - value = function(){}; - } else if ( raw === 'trueFunc' ) { - value = function(){ return true; }; - } else if ( raw === 'falseFunc' ) { - value = function(){ return false; }; - } else if ( /^-?\d+$/.test(raw) ) { - value = parseInt(raw); - if ( isNaN(raw) ) { return; } - if ( Math.abs(raw) > 0x7FFF ) { return; } - } else if ( trusted ) { - if ( raw.startsWith('{') && raw.endsWith('}') ) { - try { value = safe.JSON_parse(raw).value; } catch(ex) { return; } - } - } else { - return; - } - if ( extraArgs.as !== undefined ) { - if ( extraArgs.as === 'function' ) { - return ( ) => value; - } else if ( extraArgs.as === 'callback' ) { - return ( ) => (( ) => value); - } else if ( extraArgs.as === 'resolved' ) { - return Promise.resolve(value); - } else if ( extraArgs.as === 'rejected' ) { - return Promise.reject(value); - } - } - return value; -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'set-constant.fn', - fn: setConstantFn, - dependencies: [ - 'run-at.fn', - 'safe-self.fn', - 'validate-constant.fn', - ], -}); -function setConstantFn( - trusted = false, - chain = '', - rawValue = '' -) { - if ( chain === '' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('set-constant', chain, rawValue); - const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); - function setConstant(chain, rawValue) { - const trappedProp = (( ) => { - const pos = chain.lastIndexOf('.'); - if ( pos === -1 ) { return chain; } - return chain.slice(pos+1); - })(); - const cloakFunc = fn => { - safe.Object_defineProperty(fn, 'name', { value: trappedProp }); - return new Proxy(fn, { - defineProperty(target, prop) { - if ( prop !== 'toString' ) { - return Reflect.defineProperty(...arguments); - } - return true; - }, - deleteProperty(target, prop) { - if ( prop !== 'toString' ) { - return Reflect.deleteProperty(...arguments); - } - return true; - }, - get(target, prop) { - if ( prop === 'toString' ) { - return function() { - return `function ${trappedProp}() { [native code] }`; - }.bind(null); - } - return Reflect.get(...arguments); - }, - }); - }; - if ( trappedProp === '' ) { return; } - const thisScript = document.currentScript; - let normalValue = validateConstantFn(trusted, rawValue, extraArgs); - if ( rawValue === 'noopFunc' || rawValue === 'trueFunc' || rawValue === 'falseFunc' ) { - normalValue = cloakFunc(normalValue); - } - let aborted = false; - const mustAbort = function(v) { - if ( trusted ) { return false; } - if ( aborted ) { return true; } - aborted = - (v !== undefined && v !== null) && - (normalValue !== undefined && normalValue !== null) && - (typeof v !== typeof normalValue); - if ( aborted ) { - safe.uboLog(logPrefix, `Aborted because value set to ${v}`); - } - return aborted; - }; - // https://github.com/uBlockOrigin/uBlock-issues/issues/156 - // Support multiple trappers for the same property. - const trapProp = function(owner, prop, configurable, handler) { - if ( handler.init(configurable ? owner[prop] : normalValue) === false ) { return; } - const odesc = safe.Object_getOwnPropertyDescriptor(owner, prop); - let prevGetter, prevSetter; - if ( odesc instanceof safe.Object ) { - owner[prop] = normalValue; - if ( odesc.get instanceof Function ) { - prevGetter = odesc.get; - } - if ( odesc.set instanceof Function ) { - prevSetter = odesc.set; - } - } - try { - safe.Object_defineProperty(owner, prop, { - configurable, - get() { - if ( prevGetter !== undefined ) { - prevGetter(); - } - return handler.getter(); - }, - set(a) { - if ( prevSetter !== undefined ) { - prevSetter(a); - } - handler.setter(a); - } - }); - safe.uboLog(logPrefix, 'Trap installed'); - } catch(ex) { - safe.uboErr(logPrefix, ex); - } - }; - const trapChain = function(owner, chain) { - const pos = chain.indexOf('.'); - if ( pos === -1 ) { - trapProp(owner, chain, false, { - v: undefined, - init: function(v) { - if ( mustAbort(v) ) { return false; } - this.v = v; - return true; - }, - getter: function() { - if ( document.currentScript === thisScript ) { - return this.v; - } - safe.uboLog(logPrefix, 'Property read'); - return normalValue; - }, - setter: function(a) { - if ( mustAbort(a) === false ) { return; } - normalValue = a; - } - }); - return; - } - const prop = chain.slice(0, pos); - const v = owner[prop]; - chain = chain.slice(pos + 1); - if ( v instanceof safe.Object || typeof v === 'object' && v !== null ) { - trapChain(v, chain); - return; - } - trapProp(owner, prop, true, { - v: undefined, - init: function(v) { - this.v = v; - return true; - }, - getter: function() { - return this.v; - }, - setter: function(a) { - this.v = a; - if ( a instanceof safe.Object ) { - trapChain(a, chain); - } - } - }); - }; - trapChain(window, chain); - } - runAt(( ) => { - setConstant(chain, rawValue); - }, extraArgs.runAt); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'replace-node-text.fn', - fn: replaceNodeTextFn, - dependencies: [ - 'run-at.fn', - 'safe-self.fn', - ], -}); -function replaceNodeTextFn( - nodeName = '', - pattern = '', - replacement = '' -) { - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('replace-node-text.fn', ...Array.from(arguments)); - const reNodeName = safe.patternToRegex(nodeName, 'i', true); - const rePattern = safe.patternToRegex(pattern, 'gms'); - const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); - const reIncludes = extraArgs.includes || extraArgs.condition - ? safe.patternToRegex(extraArgs.includes || extraArgs.condition, 'ms') - : null; - const reExcludes = extraArgs.excludes - ? safe.patternToRegex(extraArgs.excludes, 'ms') - : null; - const stop = (takeRecord = true) => { - if ( takeRecord ) { - handleMutations(observer.takeRecords()); - } - observer.disconnect(); - if ( safe.logLevel > 1 ) { - safe.uboLog(logPrefix, 'Quitting'); - } - }; - let sedCount = extraArgs.sedCount || 0; - const handleNode = node => { - const before = node.textContent; - if ( reIncludes ) { - reIncludes.lastIndex = 0; - if ( safe.RegExp_test.call(reIncludes, before) === false ) { return true; } - } - if ( reExcludes ) { - reExcludes.lastIndex = 0; - if ( safe.RegExp_test.call(reExcludes, before) ) { return true; } - } - rePattern.lastIndex = 0; - if ( safe.RegExp_test.call(rePattern, before) === false ) { return true; } - rePattern.lastIndex = 0; - const after = pattern !== '' - ? before.replace(rePattern, replacement) - : replacement; - node.textContent = after; - if ( safe.logLevel > 1 ) { - safe.uboLog(logPrefix, `Text before:\n${before.trim()}`); - } - safe.uboLog(logPrefix, `Text after:\n${after.trim()}`); - return sedCount === 0 || (sedCount -= 1) !== 0; - }; - const handleMutations = mutations => { - for ( const mutation of mutations ) { - for ( const node of mutation.addedNodes ) { - if ( reNodeName.test(node.nodeName) === false ) { continue; } - if ( handleNode(node) ) { continue; } - stop(false); return; - } - } - }; - const observer = new MutationObserver(handleMutations); - observer.observe(document, { childList: true, subtree: true }); - if ( document.documentElement ) { - const treeWalker = document.createTreeWalker( - document.documentElement, - NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT - ); - let count = 0; - for (;;) { - const node = treeWalker.nextNode(); - count += 1; - if ( node === null ) { break; } - if ( reNodeName.test(node.nodeName) === false ) { continue; } - if ( node === document.currentScript ) { continue; } - if ( handleNode(node) ) { continue; } - stop(); break; - } - safe.uboLog(logPrefix, `${count} nodes present before installing mutation observer`); - } - if ( extraArgs.stay ) { return; } - runAt(( ) => { - const quitAfter = extraArgs.quitAfter || 0; - if ( quitAfter !== 0 ) { - setTimeout(( ) => { stop(); }, quitAfter); - } else { - stop(); - } - }, 'interactive'); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'object-prune.fn', - fn: objectPruneFn, - dependencies: [ - 'matches-stack-trace.fn', - 'object-find-owner.fn', - ], -}); -// When no "prune paths" argument is provided, the scriptlet is -// used for logging purpose and the "needle paths" argument is -// used to filter logging output. -// -// https://github.com/uBlockOrigin/uBlock-issues/issues/1545 -// - Add support for "remove everything if needle matches" case -function objectPruneFn( - obj, - rawPrunePaths, - rawNeedlePaths, - stackNeedleDetails = { matchAll: true }, - extraArgs = {} -) { - if ( typeof rawPrunePaths !== 'string' ) { return; } - const prunePaths = rawPrunePaths !== '' - ? rawPrunePaths.split(/ +/) - : []; - const needlePaths = prunePaths.length !== 0 && rawNeedlePaths !== '' - ? rawNeedlePaths.split(/ +/) - : []; - if ( stackNeedleDetails.matchAll !== true ) { - if ( matchesStackTrace(stackNeedleDetails, extraArgs.logstack) === false ) { - return; - } - } - if ( objectPruneFn.mustProcess === undefined ) { - objectPruneFn.mustProcess = (root, needlePaths) => { - for ( const needlePath of needlePaths ) { - if ( objectFindOwnerFn(root, needlePath) === false ) { - return false; - } - } - return true; - }; - } - if ( prunePaths.length === 0 ) { return; } - let outcome = 'nomatch'; - if ( objectPruneFn.mustProcess(obj, needlePaths) ) { - for ( const path of prunePaths ) { - if ( objectFindOwnerFn(obj, path, true) ) { - outcome = 'match'; - } - } - } - if ( outcome === 'match' ) { return obj; } -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'object-find-owner.fn', - fn: objectFindOwnerFn, -}); -function objectFindOwnerFn( - root, - path, - prune = false -) { - let owner = root; - let chain = path; - for (;;) { - if ( typeof owner !== 'object' || owner === null ) { return false; } - const pos = chain.indexOf('.'); - if ( pos === -1 ) { - if ( prune === false ) { - return owner.hasOwnProperty(chain); - } - let modified = false; - if ( chain === '*' ) { - for ( const key in owner ) { - if ( owner.hasOwnProperty(key) === false ) { continue; } - delete owner[key]; - modified = true; - } - } else if ( owner.hasOwnProperty(chain) ) { - delete owner[chain]; - modified = true; - } - return modified; - } - const prop = chain.slice(0, pos); - const next = chain.slice(pos + 1); - let found = false; - if ( prop === '[-]' && Array.isArray(owner) ) { - let i = owner.length; - while ( i-- ) { - if ( objectFindOwnerFn(owner[i], next) === false ) { continue; } - owner.splice(i, 1); - found = true; - } - return found; - } - if ( prop === '{-}' && owner instanceof Object ) { - for ( const key of Object.keys(owner) ) { - if ( objectFindOwnerFn(owner[key], next) === false ) { continue; } - delete owner[key]; - found = true; - } - return found; - } - if ( - prop === '[]' && Array.isArray(owner) || - prop === '{}' && owner instanceof Object || - prop === '*' && owner instanceof Object - ) { - for ( const key of Object.keys(owner) ) { - if (objectFindOwnerFn(owner[key], next, prune) === false ) { continue; } - found = true; - } - return found; - } - if ( owner.hasOwnProperty(prop) === false ) { return false; } - owner = owner[prop]; - chain = chain.slice(pos + 1); - } -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'get-all-cookies.fn', - fn: getAllCookiesFn, -}); -function getAllCookiesFn() { - return document.cookie.split(/\s*;\s*/).map(s => { - const pos = s.indexOf('='); - if ( pos === 0 ) { return; } - if ( pos === -1 ) { return `${s.trim()}=`; } - const key = s.slice(0, pos).trim(); - const value = s.slice(pos+1).trim(); - return { key, value }; - }).filter(s => s !== undefined); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'get-all-local-storage.fn', - fn: getAllLocalStorageFn, -}); -function getAllLocalStorageFn(which = 'localStorage') { - const storage = self[which]; - const out = []; - for ( let i = 0; i < storage.length; i++ ) { - const key = storage.key(i); - const value = storage.getItem(key); - return { key, value }; - } - return out; -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'get-cookie.fn', - fn: getCookieFn, -}); -function getCookieFn( - name = '' -) { - for ( const s of document.cookie.split(/\s*;\s*/) ) { - const pos = s.indexOf('='); - if ( pos === -1 ) { continue; } - if ( s.slice(0, pos) !== name ) { continue; } - return s.slice(pos+1).trim(); - } -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'set-cookie.fn', - fn: setCookieFn, - dependencies: [ - 'get-cookie.fn', - ], -}); -function setCookieFn( - trusted = false, - name = '', - value = '', - expires = '', - path = '', - options = {}, -) { - // https://datatracker.ietf.org/doc/html/rfc2616#section-2.2 - // https://github.com/uBlockOrigin/uBlock-issues/issues/2777 - if ( trusted === false && /[^!#$%&'*+\-.0-9A-Z[\]^_`a-z|~]/.test(name) ) { - name = encodeURIComponent(name); - } - // https://datatracker.ietf.org/doc/html/rfc6265#section-4.1.1 - // The characters [",] are given a pass from the RFC requirements because - // apparently browsers do not follow the RFC to the letter. - if ( /[^ -:<-[\]-~]/.test(value) ) { - value = encodeURIComponent(value); - } - - const cookieBefore = getCookieFn(name); - if ( cookieBefore !== undefined && options.dontOverwrite ) { return; } - if ( cookieBefore === value && options.reload ) { return; } - - const cookieParts = [ name, '=', value ]; - if ( expires !== '' ) { - cookieParts.push('; expires=', expires); - } - - if ( path === '' ) { path = '/'; } - else if ( path === 'none' ) { path = ''; } - if ( path !== '' && path !== '/' ) { return; } - if ( path === '/' ) { - cookieParts.push('; path=/'); - } - - if ( trusted ) { - if ( options.domain ) { - cookieParts.push(`; domain=${options.domain}`); - } - cookieParts.push('; Secure'); - } else if ( /^__(Host|Secure)-/.test(name) ) { - cookieParts.push('; Secure'); - } - - try { - document.cookie = cookieParts.join(''); - } catch(_) { - } - - const done = getCookieFn(name) === value; - if ( done && options.reload ) { - window.location.reload(); - } - - return done; -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'set-local-storage-item.fn', - fn: setLocalStorageItemFn, - dependencies: [ - 'safe-self.fn', - ], -}); -function setLocalStorageItemFn( - which = 'local', - trusted = false, - key = '', - value = '', -) { - if ( key === '' ) { return; } - - // For increased compatibility with AdGuard - if ( value === 'emptyArr' ) { - value = '[]'; - } else if ( value === 'emptyObj' ) { - value = '{}'; - } - - const trustedValues = [ - '', - 'undefined', 'null', - 'false', 'true', - 'on', 'off', - 'yes', 'no', - 'accept', 'reject', - 'accepted', 'rejected', - '{}', '[]', '""', - '$remove$', - ]; - - if ( trusted ) { - if ( value.includes('$now$') ) { - value = value.replaceAll('$now$', Date.now()); - } - if ( value.includes('$currentDate$') ) { - value = value.replaceAll('$currentDate$', `${Date()}`); - } - if ( value.includes('$currentISODate$') ) { - value = value.replaceAll('$currentISODate$', (new Date()).toISOString()); - } - } else { - const normalized = value.toLowerCase(); - const match = /^("?)(.+)\1$/.exec(normalized); - const unquoted = match && match[2] || normalized; - if ( trustedValues.includes(unquoted) === false ) { - if ( /^\d+$/.test(unquoted) === false ) { return; } - const n = parseInt(unquoted, 10); - if ( n > 32767 ) { return; } - } - } - - try { - const storage = self[`${which}Storage`]; - if ( value === '$remove$' ) { - const safe = safeSelf(); - const pattern = safe.patternToRegex(key, undefined, true ); - const toRemove = []; - for ( let i = 0, n = storage.length; i < n; i++ ) { - const key = storage.key(i); - if ( pattern.test(key) ) { toRemove.push(key); } - } - for ( const key of toRemove ) { - storage.removeItem(key); - } - } else { - storage.setItem(key, `${value}`); - } - } catch(ex) { - } -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'matches-stack-trace.fn', - fn: matchesStackTrace, - dependencies: [ - 'get-exception-token.fn', - 'safe-self.fn', - ], -}); -function matchesStackTrace( - needleDetails, - logLevel = '' -) { - const safe = safeSelf(); - const exceptionToken = getExceptionToken(); - const error = new safe.Error(exceptionToken); - const docURL = new URL(self.location.href); - docURL.hash = ''; - // Normalize stack trace - const reLine = /(.*?@)?(\S+)(:\d+):\d+\)?$/; - const lines = []; - for ( let line of error.stack.split(/[\n\r]+/) ) { - if ( line.includes(exceptionToken) ) { continue; } - line = line.trim(); - const match = safe.RegExp_exec.call(reLine, line); - if ( match === null ) { continue; } - let url = match[2]; - if ( url.startsWith('(') ) { url = url.slice(1); } - if ( url === docURL.href ) { - url = 'inlineScript'; - } else if ( url.startsWith('') ) { - url = 'injectedScript'; - } - let fn = match[1] !== undefined - ? match[1].slice(0, -1) - : line.slice(0, match.index).trim(); - if ( fn.startsWith('at') ) { fn = fn.slice(2).trim(); } - let rowcol = match[3]; - lines.push(' ' + `${fn} ${url}${rowcol}:1`.trim()); - } - lines[0] = `stackDepth:${lines.length-1}`; - const stack = lines.join('\t'); - const r = needleDetails.matchAll !== true && - safe.testPattern(needleDetails, stack); - if ( - logLevel === 'all' || - logLevel === 'match' && r || - logLevel === 'nomatch' && !r - ) { - safe.uboLog(stack.replace(/\t/g, '\n')); - } - return r; -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'parse-properties-to-match.fn', - fn: parsePropertiesToMatch, - dependencies: [ - 'safe-self.fn', - ], -}); -function parsePropertiesToMatch(propsToMatch, implicit = '') { - const safe = safeSelf(); - const needles = new Map(); - if ( propsToMatch === undefined || propsToMatch === '' ) { return needles; } - const options = { canNegate: true }; - for ( const needle of propsToMatch.split(/\s+/) ) { - const [ prop, pattern ] = needle.split(':'); - if ( prop === '' ) { continue; } - if ( pattern !== undefined ) { - needles.set(prop, safe.initPattern(pattern, options)); - } else if ( implicit !== '' ) { - needles.set(implicit, safe.initPattern(prop, options)); - } - } - return needles; -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'match-object-properties.fn', - fn: matchObjectProperties, - dependencies: [ - 'safe-self.fn', - ], -}); -function matchObjectProperties(propNeedles, ...objs) { - if ( matchObjectProperties.extractProperties === undefined ) { - matchObjectProperties.extractProperties = (src, des, props) => { - for ( const p of props ) { - const v = src[p]; - if ( v === undefined ) { continue; } - des[p] = src[p]; - } - }; - } - const safe = safeSelf(); - const haystack = {}; - const props = safe.Array_from(propNeedles.keys()); - for ( const obj of objs ) { - if ( obj instanceof Object === false ) { continue; } - matchObjectProperties.extractProperties(obj, haystack, props); - } - for ( const [ prop, details ] of propNeedles ) { - let value = haystack[prop]; - if ( value === undefined ) { continue; } - if ( typeof value !== 'string' ) { - try { value = safe.JSON_stringify(value); } - catch(ex) { } - if ( typeof value !== 'string' ) { continue; } - } - if ( safe.testPattern(details, value) ) { continue; } - return false; - } - return true; -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'json-prune-fetch-response.fn', - fn: jsonPruneFetchResponseFn, - dependencies: [ - 'match-object-properties.fn', - 'object-prune.fn', - 'parse-properties-to-match.fn', - 'safe-self.fn', - ], -}); -function jsonPruneFetchResponseFn( - rawPrunePaths = '', - rawNeedlePaths = '' -) { - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('json-prune-fetch-response', rawPrunePaths, rawNeedlePaths); - const extraArgs = safe.getExtraArgs(Array.from(arguments), 2); - const propNeedles = parsePropertiesToMatch(extraArgs.propsToMatch, 'url'); - const stackNeedle = safe.initPattern(extraArgs.stackToMatch || '', { canNegate: true }); - const logall = rawPrunePaths === ''; - const applyHandler = function(target, thisArg, args) { - const fetchPromise = Reflect.apply(target, thisArg, args); - let outcome = logall ? 'nomatch' : 'match'; - if ( propNeedles.size !== 0 ) { - const objs = [ args[0] instanceof Object ? args[0] : { url: args[0] } ]; - if ( objs[0] instanceof Request ) { - try { - objs[0] = safe.Request_clone.call(objs[0]); - } catch(ex) { - safe.uboErr(logPrefix, 'Error:', ex); - } - } - if ( args[1] instanceof Object ) { - objs.push(args[1]); - } - if ( matchObjectProperties(propNeedles, ...objs) === false ) { - outcome = 'nomatch'; - } - } - if ( logall === false && outcome === 'nomatch' ) { return fetchPromise; } - if ( safe.logLevel > 1 && outcome !== 'nomatch' && propNeedles.size !== 0 ) { - safe.uboLog(logPrefix, `Matched optional "propsToMatch"\n${extraArgs.propsToMatch}`); - } - return fetchPromise.then(responseBefore => { - const response = responseBefore.clone(); - return response.json().then(objBefore => { - if ( typeof objBefore !== 'object' ) { return responseBefore; } - if ( logall ) { - safe.uboLog(logPrefix, safe.JSON_stringify(objBefore, null, 2)); - return responseBefore; - } - const objAfter = objectPruneFn( - objBefore, - rawPrunePaths, - rawNeedlePaths, - stackNeedle, - extraArgs - ); - if ( typeof objAfter !== 'object' ) { return responseBefore; } - safe.uboLog(logPrefix, 'Pruned'); - const responseAfter = Response.json(objAfter, { - status: responseBefore.status, - statusText: responseBefore.statusText, - headers: responseBefore.headers, - }); - Object.defineProperties(responseAfter, { - ok: { value: responseBefore.ok }, - redirected: { value: responseBefore.redirected }, - type: { value: responseBefore.type }, - url: { value: responseBefore.url }, - }); - return responseAfter; - }).catch(reason => { - safe.uboErr(logPrefix, 'Error:', reason); - return responseBefore; - }); - }).catch(reason => { - safe.uboErr(logPrefix, 'Error:', reason); - return fetchPromise; - }); - }; - self.fetch = new Proxy(self.fetch, { - apply: applyHandler - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'replace-fetch-response.fn', - fn: replaceFetchResponseFn, - dependencies: [ - 'match-object-properties.fn', - 'parse-properties-to-match.fn', - 'safe-self.fn', - ], -}); -function replaceFetchResponseFn( - trusted = false, - pattern = '', - replacement = '', - propsToMatch = '' -) { - if ( trusted !== true ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('replace-fetch-response', pattern, replacement, propsToMatch); - if ( pattern === '*' ) { pattern = '.*'; } - const rePattern = safe.patternToRegex(pattern); - const propNeedles = parsePropertiesToMatch(propsToMatch, 'url'); - const extraArgs = safe.getExtraArgs(Array.from(arguments), 4); - const reIncludes = extraArgs.includes ? safe.patternToRegex(extraArgs.includes) : null; - self.fetch = new Proxy(self.fetch, { - apply: function(target, thisArg, args) { - const fetchPromise = Reflect.apply(target, thisArg, args); - if ( pattern === '' ) { return fetchPromise; } - let outcome = 'match'; - if ( propNeedles.size !== 0 ) { - const objs = [ args[0] instanceof Object ? args[0] : { url: args[0] } ]; - if ( objs[0] instanceof Request ) { - try { - objs[0] = safe.Request_clone.call(objs[0]); - } - catch(ex) { - safe.uboErr(logPrefix, ex); - } - } - if ( args[1] instanceof Object ) { - objs.push(args[1]); - } - if ( matchObjectProperties(propNeedles, ...objs) === false ) { - outcome = 'nomatch'; - } - } - if ( outcome === 'nomatch' ) { return fetchPromise; } - if ( safe.logLevel > 1 ) { - safe.uboLog(logPrefix, `Matched "propsToMatch"\n${propsToMatch}`); - } - return fetchPromise.then(responseBefore => { - const response = responseBefore.clone(); - return response.text().then(textBefore => { - if ( reIncludes && reIncludes.test(textBefore) === false ) { - return responseBefore; - } - const textAfter = textBefore.replace(rePattern, replacement); - const outcome = textAfter !== textBefore ? 'match' : 'nomatch'; - if ( outcome === 'nomatch' ) { return responseBefore; } - safe.uboLog(logPrefix, 'Replaced'); - const responseAfter = new Response(textAfter, { - status: responseBefore.status, - statusText: responseBefore.statusText, - headers: responseBefore.headers, - }); - Object.defineProperties(responseAfter, { - ok: { value: responseBefore.ok }, - redirected: { value: responseBefore.redirected }, - type: { value: responseBefore.type }, - url: { value: responseBefore.url }, - }); - return responseAfter; - }).catch(reason => { - safe.uboErr(logPrefix, reason); - return responseBefore; - }); - }).catch(reason => { - safe.uboErr(logPrefix, reason); - return fetchPromise; - }); - } - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'proxy-apply.fn', - fn: proxyApplyFn, - dependencies: [ - 'safe-self.fn', - ], -}); -function proxyApplyFn( - target = '', - handler = '' -) { - let context = globalThis; - let prop = target; - for (;;) { - const pos = prop.indexOf('.'); - if ( pos === -1 ) { break; } - context = context[prop.slice(0, pos)]; - if ( context instanceof Object === false ) { return; } - prop = prop.slice(pos+1); - } - const fn = context[prop]; - if ( typeof fn !== 'function' ) { return; } - if ( fn.prototype && fn.prototype.constructor === fn ) { - context[prop] = new Proxy(fn, { construct: handler }); - return (...args) => { return Reflect.construct(...args); }; - } - context[prop] = new Proxy(fn, { apply: handler }); - return (...args) => { return Reflect.apply(...args); }; -} - -/******************************************************************************* - - Injectable scriptlets - - These are meant to be used in the MAIN (webpage) execution world. - -*******************************************************************************/ - -builtinScriptlets.push({ - name: 'abort-current-script.js', - aliases: [ - 'acs.js', - 'abort-current-inline-script.js', - 'acis.js', - ], - fn: abortCurrentScript, - dependencies: [ - 'abort-current-script-core.fn', - 'run-at-html-element.fn', - ], -}); -// Issues to mind before changing anything: -// https://github.com/uBlockOrigin/uBlock-issues/issues/2154 -function abortCurrentScript(...args) { - runAtHtmlElementFn(( ) => { - abortCurrentScriptCore(...args); - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'abort-on-property-read.js', - aliases: [ - 'aopr.js', - ], - fn: abortOnPropertyRead, - dependencies: [ - 'get-exception-token.fn', - 'safe-self.fn', - ], -}); -function abortOnPropertyRead( - chain = '' -) { - if ( typeof chain !== 'string' ) { return; } - if ( chain === '' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('abort-on-property-read', chain); - const exceptionToken = getExceptionToken(); - const abort = function() { - safe.uboLog(logPrefix, 'Aborted'); - throw new ReferenceError(exceptionToken); - }; - const makeProxy = function(owner, chain) { - const pos = chain.indexOf('.'); - if ( pos === -1 ) { - const desc = Object.getOwnPropertyDescriptor(owner, chain); - if ( !desc || desc.get !== abort ) { - Object.defineProperty(owner, chain, { - get: abort, - set: function(){} - }); - } - return; - } - const prop = chain.slice(0, pos); - let v = owner[prop]; - chain = chain.slice(pos + 1); - if ( v ) { - makeProxy(v, chain); - return; - } - const desc = Object.getOwnPropertyDescriptor(owner, prop); - if ( desc && desc.set !== undefined ) { return; } - Object.defineProperty(owner, prop, { - get: function() { return v; }, - set: function(a) { - v = a; - if ( a instanceof Object ) { - makeProxy(a, chain); - } - } - }); - }; - const owner = window; - makeProxy(owner, chain); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'abort-on-property-write.js', - aliases: [ - 'aopw.js', - ], - fn: abortOnPropertyWrite, - dependencies: [ - 'get-exception-token.fn', - 'safe-self.fn', - ], -}); -function abortOnPropertyWrite( - prop = '' -) { - if ( typeof prop !== 'string' ) { return; } - if ( prop === '' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('abort-on-property-write', prop); - const exceptionToken = getExceptionToken(); - let owner = window; - for (;;) { - const pos = prop.indexOf('.'); - if ( pos === -1 ) { break; } - owner = owner[prop.slice(0, pos)]; - if ( owner instanceof Object === false ) { return; } - prop = prop.slice(pos + 1); - } - delete owner[prop]; - Object.defineProperty(owner, prop, { - set: function() { - safe.uboLog(logPrefix, 'Aborted'); - throw new ReferenceError(exceptionToken); - } - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'abort-on-stack-trace.js', - aliases: [ - 'aost.js', - ], - fn: abortOnStackTrace, - dependencies: [ - 'get-exception-token.fn', - 'matches-stack-trace.fn', - 'safe-self.fn', - ], -}); -function abortOnStackTrace( - chain = '', - needle = '' -) { - if ( typeof chain !== 'string' ) { return; } - const safe = safeSelf(); - const needleDetails = safe.initPattern(needle, { canNegate: true }); - const extraArgs = safe.getExtraArgs(Array.from(arguments), 2); - if ( needle === '' ) { extraArgs.log = 'all'; } - const makeProxy = function(owner, chain) { - const pos = chain.indexOf('.'); - if ( pos === -1 ) { - let v = owner[chain]; - Object.defineProperty(owner, chain, { - get: function() { - if ( matchesStackTrace(needleDetails, extraArgs.log) ) { - throw new ReferenceError(getExceptionToken()); - } - return v; - }, - set: function(a) { - if ( matchesStackTrace(needleDetails, extraArgs.log) ) { - throw new ReferenceError(getExceptionToken()); - } - v = a; - }, - }); - return; - } - const prop = chain.slice(0, pos); - let v = owner[prop]; - chain = chain.slice(pos + 1); - if ( v ) { - makeProxy(v, chain); - return; - } - const desc = Object.getOwnPropertyDescriptor(owner, prop); - if ( desc && desc.set !== undefined ) { return; } - Object.defineProperty(owner, prop, { - get: function() { return v; }, - set: function(a) { - v = a; - if ( a instanceof Object ) { - makeProxy(a, chain); - } - } - }); - }; - const owner = window; - makeProxy(owner, chain); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'addEventListener-defuser.js', - aliases: [ - 'aeld.js', - 'prevent-addEventListener.js', - ], - fn: addEventListenerDefuser, - dependencies: [ - 'run-at.fn', - 'safe-self.fn', - 'should-debug.fn', - ], -}); -// https://github.com/uBlockOrigin/uAssets/issues/9123#issuecomment-848255120 -function addEventListenerDefuser( - type = '', - pattern = '' -) { - const safe = safeSelf(); - const extraArgs = safe.getExtraArgs(Array.from(arguments), 2); - const logPrefix = safe.makeLogPrefix('prevent-addEventListener', type, pattern); - const reType = safe.patternToRegex(type, undefined, true); - const rePattern = safe.patternToRegex(pattern); - const debug = shouldDebug(extraArgs); - const targetSelector = extraArgs.elements || undefined; - const elementMatches = elem => { - if ( targetSelector === 'window' ) { return elem === window; } - if ( targetSelector === 'document' ) { return elem === document; } - if ( elem && elem.matches && elem.matches(targetSelector) ) { return true; } - const elems = Array.from(document.querySelectorAll(targetSelector)); - return elems.includes(elem); - }; - const elementDetails = elem => { - if ( elem instanceof Window ) { return 'window'; } - if ( elem instanceof Document ) { return 'document'; } - if ( elem instanceof Element === false ) { return '?'; } - const parts = []; - // https://github.com/uBlockOrigin/uAssets/discussions/17907#discussioncomment-9871079 - const id = String(elem.id); - if ( id !== '' ) { parts.push(`#${CSS.escape(id)}`); } - for ( let i = 0; i < elem.classList.length; i++ ) { - parts.push(`.${CSS.escape(elem.classList.item(i))}`); - } - for ( let i = 0; i < elem.attributes.length; i++ ) { - const attr = elem.attributes.item(i); - if ( attr.name === 'id' ) { continue; } - if ( attr.name === 'class' ) { continue; } - parts.push(`[${CSS.escape(attr.name)}="${attr.value}"]`); - } - return parts.join(''); - }; - const shouldPrevent = (thisArg, type, handler) => { - const matchesType = safe.RegExp_test.call(reType, type); - const matchesHandler = safe.RegExp_test.call(rePattern, handler); - const matchesEither = matchesType || matchesHandler; - const matchesBoth = matchesType && matchesHandler; - if ( debug === 1 && matchesBoth || debug === 2 && matchesEither ) { - debugger; // eslint-disable-line no-debugger - } - if ( matchesBoth && targetSelector !== undefined ) { - if ( elementMatches(thisArg) === false ) { return false; } - } - return matchesBoth; - }; - const trapEddEventListeners = ( ) => { - const eventListenerHandler = { - apply: function(target, thisArg, args) { - let t, h; - try { - t = String(args[0]); - if ( typeof args[1] === 'function' ) { - h = String(safe.Function_toString(args[1])); - } else if ( typeof args[1] === 'object' && args[1] !== null ) { - if ( typeof args[1].handleEvent === 'function' ) { - h = String(safe.Function_toString(args[1].handleEvent)); - } - } else { - h = String(args[1]); - } - } catch(ex) { - } - if ( type === '' && pattern === '' ) { - safe.uboLog(logPrefix, `Called: ${t}\n${h}\n${elementDetails(thisArg)}`); - } else if ( shouldPrevent(thisArg, t, h) ) { - return safe.uboLog(logPrefix, `Prevented: ${t}\n${h}\n${elementDetails(thisArg)}`); - } - return Reflect.apply(target, thisArg, args); - }, - get(target, prop, receiver) { - if ( prop === 'toString' ) { - return target.toString.bind(target); - } - return Reflect.get(target, prop, receiver); - }, - }; - self.EventTarget.prototype.addEventListener = new Proxy( - self.EventTarget.prototype.addEventListener, - eventListenerHandler - ); - }; - runAt(( ) => { - trapEddEventListeners(); - }, extraArgs.runAt); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'json-prune.js', - fn: jsonPrune, - dependencies: [ - 'object-prune.fn', - 'safe-self.fn', - ], -}); -function jsonPrune( - rawPrunePaths = '', - rawNeedlePaths = '', - stackNeedle = '' -) { - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('json-prune', rawPrunePaths, rawNeedlePaths, stackNeedle); - const stackNeedleDetails = safe.initPattern(stackNeedle, { canNegate: true }); - const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); - JSON.parse = new Proxy(JSON.parse, { - apply: function(target, thisArg, args) { - const objBefore = Reflect.apply(target, thisArg, args); - if ( rawPrunePaths === '' ) { - safe.uboLog(logPrefix, safe.JSON_stringify(objBefore, null, 2)); - } - const objAfter = objectPruneFn( - objBefore, - rawPrunePaths, - rawNeedlePaths, - stackNeedleDetails, - extraArgs - ); - if ( objAfter === undefined ) { return objBefore; } - safe.uboLog(logPrefix, 'Pruned'); - if ( safe.logLevel > 1 ) { - safe.uboLog(logPrefix, `After pruning:\n${safe.JSON_stringify(objAfter, null, 2)}`); - } - return objAfter; - }, - }); -} - -/******************************************************************************* - * - * json-prune-fetch-response.js - * - * Prune JSON response of fetch requests. - * - **/ - -builtinScriptlets.push({ - name: 'json-prune-fetch-response.js', - fn: jsonPruneFetchResponse, - dependencies: [ - 'json-prune-fetch-response.fn', - ], -}); -function jsonPruneFetchResponse(...args) { - jsonPruneFetchResponseFn(...args); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'json-prune-xhr-response.js', - fn: jsonPruneXhrResponse, - dependencies: [ - 'match-object-properties.fn', - 'object-prune.fn', - 'parse-properties-to-match.fn', - 'safe-self.fn', - ], -}); -function jsonPruneXhrResponse( - rawPrunePaths = '', - rawNeedlePaths = '' -) { - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('json-prune-xhr-response', rawPrunePaths, rawNeedlePaths); - const xhrInstances = new WeakMap(); - const extraArgs = safe.getExtraArgs(Array.from(arguments), 2); - const propNeedles = parsePropertiesToMatch(extraArgs.propsToMatch, 'url'); - const stackNeedle = safe.initPattern(extraArgs.stackToMatch || '', { canNegate: true }); - self.XMLHttpRequest = class extends self.XMLHttpRequest { - open(method, url, ...args) { - const xhrDetails = { method, url }; - let outcome = 'match'; - if ( propNeedles.size !== 0 ) { - if ( matchObjectProperties(propNeedles, xhrDetails) === false ) { - outcome = 'nomatch'; - } - } - if ( outcome === 'match' ) { - if ( safe.logLevel > 1 ) { - safe.uboLog(logPrefix, `Matched optional "propsToMatch", "${extraArgs.propsToMatch}"`); - } - xhrInstances.set(this, xhrDetails); - } - return super.open(method, url, ...args); - } - get response() { - const innerResponse = super.response; - const xhrDetails = xhrInstances.get(this); - if ( xhrDetails === undefined ) { - return innerResponse; - } - const responseLength = typeof innerResponse === 'string' - ? innerResponse.length - : undefined; - if ( xhrDetails.lastResponseLength !== responseLength ) { - xhrDetails.response = undefined; - xhrDetails.lastResponseLength = responseLength; - } - if ( xhrDetails.response !== undefined ) { - return xhrDetails.response; - } - let objBefore; - if ( typeof innerResponse === 'object' ) { - objBefore = innerResponse; - } else if ( typeof innerResponse === 'string' ) { - try { - objBefore = safe.JSON_parse(innerResponse); - } catch(ex) { - } - } - if ( typeof objBefore !== 'object' ) { - return (xhrDetails.response = innerResponse); - } - const objAfter = objectPruneFn( - objBefore, - rawPrunePaths, - rawNeedlePaths, - stackNeedle, - extraArgs - ); - let outerResponse; - if ( typeof objAfter === 'object' ) { - outerResponse = typeof innerResponse === 'string' - ? safe.JSON_stringify(objAfter) - : objAfter; - safe.uboLog(logPrefix, 'Pruned'); - } else { - outerResponse = innerResponse; - } - return (xhrDetails.response = outerResponse); - } - get responseText() { - const response = this.response; - return typeof response !== 'string' - ? super.responseText - : response; - } - }; -} - -/******************************************************************************/ - -// There is still code out there which uses `eval` in lieu of `JSON.parse`. - -builtinScriptlets.push({ - name: 'evaldata-prune.js', - fn: evaldataPrune, - dependencies: [ - 'object-prune.fn', - ], -}); -function evaldataPrune( - rawPrunePaths = '', - rawNeedlePaths = '' -) { - self.eval = new Proxy(self.eval, { - apply(target, thisArg, args) { - const before = Reflect.apply(target, thisArg, args); - if ( typeof before === 'object' ) { - const after = objectPruneFn(before, rawPrunePaths, rawNeedlePaths); - return after || before; - } - return before; - } - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'adjust-setInterval.js', - aliases: [ - 'nano-setInterval-booster.js', - 'nano-sib.js', - ], - fn: adjustSetInterval, - dependencies: [ - 'safe-self.fn', - ], -}); -// Imported from: -// https://github.com/NanoAdblocker/NanoFilters/blob/1f3be7211bb0809c5106996f52564bf10c4525f7/NanoFiltersSource/NanoResources.txt#L126 -// -// Speed up or down setInterval, 3 optional arguments. -// The payload matcher, a string literal or a JavaScript RegExp, defaults -// to match all. -// delayMatcher -// The delay matcher, an integer, defaults to 1000. -// Use `*` to match any delay. -// boostRatio - The delay multiplier when there is a match, 0.5 speeds up by -// 2 times and 2 slows down by 2 times, defaults to 0.05 or speed up -// 20 times. Speed up and down both cap at 50 times. -function adjustSetInterval( - needleArg = '', - delayArg = '', - boostArg = '' -) { - if ( typeof needleArg !== 'string' ) { return; } - const safe = safeSelf(); - const reNeedle = safe.patternToRegex(needleArg); - let delay = delayArg !== '*' ? parseInt(delayArg, 10) : -1; - if ( isNaN(delay) || isFinite(delay) === false ) { delay = 1000; } - let boost = parseFloat(boostArg); - boost = isNaN(boost) === false && isFinite(boost) - ? Math.min(Math.max(boost, 0.001), 50) - : 0.05; - self.setInterval = new Proxy(self.setInterval, { - apply: function(target, thisArg, args) { - const [ a, b ] = args; - if ( - (delay === -1 || b === delay) && - reNeedle.test(a.toString()) - ) { - args[1] = b * boost; - } - return target.apply(thisArg, args); - } - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'adjust-setTimeout.js', - aliases: [ - 'nano-setTimeout-booster.js', - 'nano-stb.js', - ], - fn: adjustSetTimeout, - dependencies: [ - 'safe-self.fn', - ], -}); -// Imported from: -// https://github.com/NanoAdblocker/NanoFilters/blob/1f3be7211bb0809c5106996f52564bf10c4525f7/NanoFiltersSource/NanoResources.txt#L82 -// -// Speed up or down setTimeout, 3 optional arguments. -// funcMatcher -// The payload matcher, a string literal or a JavaScript RegExp, defaults -// to match all. -// delayMatcher -// The delay matcher, an integer, defaults to 1000. -// Use `*` to match any delay. -// boostRatio - The delay multiplier when there is a match, 0.5 speeds up by -// 2 times and 2 slows down by 2 times, defaults to 0.05 or speed up -// 20 times. Speed up and down both cap at 50 times. -function adjustSetTimeout( - needleArg = '', - delayArg = '', - boostArg = '' -) { - if ( typeof needleArg !== 'string' ) { return; } - const safe = safeSelf(); - const reNeedle = safe.patternToRegex(needleArg); - let delay = delayArg !== '*' ? parseInt(delayArg, 10) : -1; - if ( isNaN(delay) || isFinite(delay) === false ) { delay = 1000; } - let boost = parseFloat(boostArg); - boost = isNaN(boost) === false && isFinite(boost) - ? Math.min(Math.max(boost, 0.001), 50) - : 0.05; - self.setTimeout = new Proxy(self.setTimeout, { - apply: function(target, thisArg, args) { - const [ a, b ] = args; - if ( - (delay === -1 || b === delay) && - reNeedle.test(a.toString()) - ) { - args[1] = b * boost; - } - return target.apply(thisArg, args); - } - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'noeval-if.js', - aliases: [ - 'prevent-eval-if.js', - ], - fn: noEvalIf, - dependencies: [ - 'safe-self.fn', - ], -}); -function noEvalIf( - needle = '' -) { - if ( typeof needle !== 'string' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('noeval-if', needle); - const reNeedle = safe.patternToRegex(needle); - window.eval = new Proxy(window.eval, { // jshint ignore: line - apply: function(target, thisArg, args) { - const a = String(args[0]); - if ( needle !== '' && reNeedle.test(a) ) { - safe.uboLog(logPrefix, 'Prevented:\n', a); - return; - } - if ( needle === '' || safe.logLevel > 1 ) { - safe.uboLog(logPrefix, 'Not prevented:\n', a); - } - return Reflect.apply(target, thisArg, args); - } - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'prevent-fetch.js', - aliases: [ - 'no-fetch-if.js', - ], - fn: noFetchIf, - dependencies: [ - 'generate-content.fn', - 'safe-self.fn', - ], -}); -function noFetchIf( - propsToMatch = '', - responseBody = '', - responseType = '' -) { - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('prevent-fetch', propsToMatch, responseBody, responseType); - const needles = []; - for ( const condition of propsToMatch.split(/\s+/) ) { - if ( condition === '' ) { continue; } - const pos = condition.indexOf(':'); - let key, value; - if ( pos !== -1 ) { - key = condition.slice(0, pos); - value = condition.slice(pos + 1); - } else { - key = 'url'; - value = condition; - } - needles.push({ key, re: safe.patternToRegex(value) }); - } - const validResponseProps = { - ok: [ false, true ], - statusText: [ '', 'Not Found' ], - type: [ 'basic', 'cors', 'default', 'error', 'opaque' ], - }; - const responseProps = { - statusText: { value: 'OK' }, - }; - if ( /^\{.*\}$/.test(responseType) ) { - try { - Object.entries(JSON.parse(responseType)).forEach(([ p, v ]) => { - if ( validResponseProps[p] === undefined ) { return; } - if ( validResponseProps[p].includes(v) === false ) { return; } - responseProps[p] = { value: v }; - }); - } - catch(ex) {} - } else if ( responseType !== '' ) { - if ( validResponseProps.type.includes(responseType) ) { - responseProps.type = { value: responseType }; - } - } - self.fetch = new Proxy(self.fetch, { - apply: function(target, thisArg, args) { - const details = args[0] instanceof self.Request - ? args[0] - : Object.assign({ url: args[0] }, args[1]); - let proceed = true; - try { - const props = new Map(); - for ( const prop in details ) { - let v = details[prop]; - if ( typeof v !== 'string' ) { - try { v = safe.JSON_stringify(v); } - catch(ex) { } - } - if ( typeof v !== 'string' ) { continue; } - props.set(prop, v); - } - if ( propsToMatch === '' && responseBody === '' ) { - const out = Array.from(props).map(a => `${a[0]}:${a[1]}`); - safe.uboLog(logPrefix, `Called: ${out.join('\n')}`); - return Reflect.apply(target, thisArg, args); - } - proceed = needles.length === 0; - for ( const { key, re } of needles ) { - if ( - props.has(key) === false || - re.test(props.get(key)) === false - ) { - proceed = true; - break; - } - } - } catch(ex) { - } - if ( proceed ) { - return Reflect.apply(target, thisArg, args); - } - return generateContentFn(responseBody).then(text => { - safe.uboLog(logPrefix, `Prevented with response "${text}"`); - const response = new Response(text, { - headers: { - 'Content-Length': text.length, - } - }); - const props = Object.assign( - { url: { value: details.url } }, - responseProps - ); - safe.Object_defineProperties(response, props); - return response; - }); - } - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'prevent-refresh.js', - aliases: [ - 'refresh-defuser.js', - ], - fn: preventRefresh, - world: 'ISOLATED', - dependencies: [ - 'run-at.fn', - 'safe-self.fn', - ], -}); -// https://www.reddit.com/r/uBlockOrigin/comments/q0frv0/while_reading_a_sports_article_i_was_redirected/hf7wo9v/ -function preventRefresh( - arg1 = '' -) { - if ( typeof arg1 !== 'string' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('prevent-refresh', arg1); - const defuse = ( ) => { - const meta = document.querySelector('meta[http-equiv="refresh" i][content]'); - if ( meta === null ) { return; } - safe.uboLog(logPrefix, `Prevented "${meta.textContent}"`); - const s = arg1 === '' - ? meta.getAttribute('content') - : arg1; - const ms = Math.max(parseFloat(s) || 0, 0) * 1000; - setTimeout(( ) => { window.stop(); }, ms); - }; - runAt(( ) => { - defuse(); - }, 'interactive'); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'remove-attr.js', - aliases: [ - 'ra.js', - ], - fn: removeAttr, - dependencies: [ - 'run-at.fn', - 'safe-self.fn', - ], -}); -function removeAttr( - rawToken = '', - rawSelector = '', - behavior = '' -) { - if ( typeof rawToken !== 'string' ) { return; } - if ( rawToken === '' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('remove-attr', rawToken, rawSelector, behavior); - const tokens = rawToken.split(/\s*\|\s*/); - const selector = tokens - .map(a => `${rawSelector}[${CSS.escape(a)}]`) - .join(','); - if ( safe.logLevel > 1 ) { - safe.uboLog(logPrefix, `Target selector:\n\t${selector}`); - } - let timer; - const rmattr = ( ) => { - timer = undefined; - try { - const nodes = document.querySelectorAll(selector); - for ( const node of nodes ) { - for ( const attr of tokens ) { - if ( node.hasAttribute(attr) === false ) { continue; } - node.removeAttribute(attr); - safe.uboLog(logPrefix, `Removed attribute '${attr}'`); - } - } - } catch(ex) { - } - }; - const mutationHandler = mutations => { - if ( timer !== undefined ) { return; } - let skip = true; - for ( let i = 0; i < mutations.length && skip; i++ ) { - const { type, addedNodes, removedNodes } = mutations[i]; - if ( type === 'attributes' ) { skip = false; } - for ( let j = 0; j < addedNodes.length && skip; j++ ) { - if ( addedNodes[j].nodeType === 1 ) { skip = false; break; } - } - for ( let j = 0; j < removedNodes.length && skip; j++ ) { - if ( removedNodes[j].nodeType === 1 ) { skip = false; break; } - } - } - if ( skip ) { return; } - timer = safe.onIdle(rmattr, { timeout: 67 }); - }; - const start = ( ) => { - rmattr(); - if ( /\bstay\b/.test(behavior) === false ) { return; } - const observer = new MutationObserver(mutationHandler); - observer.observe(document, { - attributes: true, - attributeFilter: tokens, - childList: true, - subtree: true, - }); - }; - runAt(( ) => { - start(); - }, /\bcomplete\b/.test(behavior) ? 'idle' : 'interactive'); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'remove-class.js', - aliases: [ - 'rc.js', - ], - fn: removeClass, - world: 'ISOLATED', - dependencies: [ - 'run-at.fn', - 'safe-self.fn', - ], -}); -function removeClass( - rawToken = '', - rawSelector = '', - behavior = '' -) { - if ( typeof rawToken !== 'string' ) { return; } - if ( rawToken === '' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('remove-class', rawToken, rawSelector, behavior); - const tokens = rawToken.split(/\s*\|\s*/); - const selector = tokens - .map(a => `${rawSelector}.${CSS.escape(a)}`) - .join(','); - if ( safe.logLevel > 1 ) { - safe.uboLog(logPrefix, `Target selector:\n\t${selector}`); - } - const mustStay = /\bstay\b/.test(behavior); - let timer; - const rmclass = ( ) => { - timer = undefined; - try { - const nodes = document.querySelectorAll(selector); - for ( const node of nodes ) { - node.classList.remove(...tokens); - safe.uboLog(logPrefix, 'Removed class(es)'); - } - } catch(ex) { - } - if ( mustStay ) { return; } - if ( document.readyState !== 'complete' ) { return; } - observer.disconnect(); - }; - const mutationHandler = mutations => { - if ( timer !== undefined ) { return; } - let skip = true; - for ( let i = 0; i < mutations.length && skip; i++ ) { - const { type, addedNodes, removedNodes } = mutations[i]; - if ( type === 'attributes' ) { skip = false; } - for ( let j = 0; j < addedNodes.length && skip; j++ ) { - if ( addedNodes[j].nodeType === 1 ) { skip = false; break; } - } - for ( let j = 0; j < removedNodes.length && skip; j++ ) { - if ( removedNodes[j].nodeType === 1 ) { skip = false; break; } - } - } - if ( skip ) { return; } - timer = safe.onIdle(rmclass, { timeout: 67 }); - }; - const observer = new MutationObserver(mutationHandler); - const start = ( ) => { - rmclass(); - observer.observe(document, { - attributes: true, - attributeFilter: [ 'class' ], - childList: true, - subtree: true, - }); - }; - runAt(( ) => { - start(); - }, /\bcomplete\b/.test(behavior) ? 'idle' : 'loading'); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'no-requestAnimationFrame-if.js', - aliases: [ - 'norafif.js', - 'prevent-requestAnimationFrame.js', - ], - fn: noRequestAnimationFrameIf, - dependencies: [ - 'safe-self.fn', - ], -}); -function noRequestAnimationFrameIf( - needle = '' -) { - if ( typeof needle !== 'string' ) { return; } - const safe = safeSelf(); - const needleNot = needle.charAt(0) === '!'; - if ( needleNot ) { needle = needle.slice(1); } - const log = needleNot === false && needle === '' ? console.log : undefined; - const reNeedle = safe.patternToRegex(needle); - window.requestAnimationFrame = new Proxy(window.requestAnimationFrame, { - apply: function(target, thisArg, args) { - const a = args[0] instanceof Function - ? String(safe.Function_toString(args[0])) - : String(args[0]); - let defuse = false; - if ( log !== undefined ) { - log('uBO: requestAnimationFrame("%s")', a); - } else { - defuse = reNeedle.test(a) !== needleNot; - } - if ( defuse ) { - args[0] = function(){}; - } - return target.apply(thisArg, args); - } - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'set-constant.js', - aliases: [ - 'set.js', - ], - fn: setConstant, - dependencies: [ - 'set-constant.fn' - ], -}); -function setConstant( - ...args -) { - setConstantFn(false, ...args); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'no-setInterval-if.js', - aliases: [ - 'nosiif.js', - 'prevent-setInterval.js', - 'setInterval-defuser.js', - ], - fn: noSetIntervalIf, - dependencies: [ - 'safe-self.fn', - ], -}); -function noSetIntervalIf( - needle = '', - delay = '' -) { - if ( typeof needle !== 'string' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('prevent-setInterval', needle, delay); - const needleNot = needle.charAt(0) === '!'; - if ( needleNot ) { needle = needle.slice(1); } - if ( delay === '' ) { delay = undefined; } - let delayNot = false; - if ( delay !== undefined ) { - delayNot = delay.charAt(0) === '!'; - if ( delayNot ) { delay = delay.slice(1); } - delay = parseInt(delay, 10); - } - const reNeedle = safe.patternToRegex(needle); - self.setInterval = new Proxy(self.setInterval, { - apply: function(target, thisArg, args) { - const a = args[0] instanceof Function - ? String(safe.Function_toString(args[0])) - : String(args[0]); - const b = args[1]; - if ( needle === '' && delay === undefined ) { - safe.uboLog(logPrefix, `Called:\n${a}\n${b}`); - return Reflect.apply(target, thisArg, args); - } - let defuse; - if ( needle !== '' ) { - defuse = reNeedle.test(a) !== needleNot; - } - if ( defuse !== false && delay !== undefined ) { - defuse = (b === delay || isNaN(b) && isNaN(delay) ) !== delayNot; - } - if ( defuse ) { - args[0] = function(){}; - safe.uboLog(logPrefix, `Prevented:\n${a}\n${b}`); - } - return Reflect.apply(target, thisArg, args); - }, - get(target, prop, receiver) { - if ( prop === 'toString' ) { - return target.toString.bind(target); - } - return Reflect.get(target, prop, receiver); - }, - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'no-setTimeout-if.js', - aliases: [ - 'nostif.js', - 'prevent-setTimeout.js', - 'setTimeout-defuser.js', - ], - fn: noSetTimeoutIf, - dependencies: [ - 'safe-self.fn', - ], -}); -function noSetTimeoutIf( - needle = '', - delay = '' -) { - if ( typeof needle !== 'string' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('prevent-setTimeout', needle, delay); - const needleNot = needle.charAt(0) === '!'; - if ( needleNot ) { needle = needle.slice(1); } - if ( delay === '' ) { delay = undefined; } - let delayNot = false; - if ( delay !== undefined ) { - delayNot = delay.charAt(0) === '!'; - if ( delayNot ) { delay = delay.slice(1); } - delay = parseInt(delay, 10); - } - const reNeedle = safe.patternToRegex(needle); - self.setTimeout = new Proxy(self.setTimeout, { - apply: function(target, thisArg, args) { - const a = args[0] instanceof Function - ? String(safe.Function_toString(args[0])) - : String(args[0]); - const b = args[1]; - if ( needle === '' && delay === undefined ) { - safe.uboLog(logPrefix, `Called:\n${a}\n${b}`); - return Reflect.apply(target, thisArg, args); - } - let defuse; - if ( needle !== '' ) { - defuse = reNeedle.test(a) !== needleNot; - } - if ( defuse !== false && delay !== undefined ) { - defuse = (b === delay || isNaN(b) && isNaN(delay) ) !== delayNot; - } - if ( defuse ) { - args[0] = function(){}; - safe.uboLog(logPrefix, `Prevented:\n${a}\n${b}`); - } - return Reflect.apply(target, thisArg, args); - }, - get(target, prop, receiver) { - if ( prop === 'toString' ) { - return target.toString.bind(target); - } - return Reflect.get(target, prop, receiver); - }, - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'webrtc-if.js', - fn: webrtcIf, - dependencies: [ - 'safe-self.fn', - ], -}); -function webrtcIf( - good = '' -) { - if ( typeof good !== 'string' ) { return; } - const safe = safeSelf(); - const reGood = safe.patternToRegex(good); - const rtcName = window.RTCPeerConnection - ? 'RTCPeerConnection' - : (window.webkitRTCPeerConnection ? 'webkitRTCPeerConnection' : ''); - if ( rtcName === '' ) { return; } - const log = console.log.bind(console); - const neuteredPeerConnections = new WeakSet(); - const isGoodConfig = function(instance, config) { - if ( neuteredPeerConnections.has(instance) ) { return false; } - if ( config instanceof Object === false ) { return true; } - if ( Array.isArray(config.iceServers) === false ) { return true; } - for ( const server of config.iceServers ) { - const urls = typeof server.urls === 'string' - ? [ server.urls ] - : server.urls; - if ( Array.isArray(urls) ) { - for ( const url of urls ) { - if ( reGood.test(url) ) { return true; } - } - } - if ( typeof server.username === 'string' ) { - if ( reGood.test(server.username) ) { return true; } - } - if ( typeof server.credential === 'string' ) { - if ( reGood.test(server.credential) ) { return true; } - } - } - neuteredPeerConnections.add(instance); - return false; - }; - const peerConnectionCtor = window[rtcName]; - const peerConnectionProto = peerConnectionCtor.prototype; - peerConnectionProto.createDataChannel = - new Proxy(peerConnectionProto.createDataChannel, { - apply: function(target, thisArg, args) { - if ( isGoodConfig(target, args[1]) === false ) { - log('uBO:', args[1]); - return Reflect.apply(target, thisArg, args.slice(0, 1)); - } - return Reflect.apply(target, thisArg, args); - }, - }); - window[rtcName] = - new Proxy(peerConnectionCtor, { - construct: function(target, args) { - if ( isGoodConfig(target, args[0]) === false ) { - log('uBO:', args[0]); - return Reflect.construct(target); - } - return Reflect.construct(target, args); - } - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'no-xhr-if.js', - aliases: [ - 'prevent-xhr.js', - ], - fn: noXhrIf, - dependencies: [ - 'generate-content.fn', - 'match-object-properties.fn', - 'parse-properties-to-match.fn', - 'safe-self.fn', - ], -}); -function noXhrIf( - propsToMatch = '', - directive = '' -) { - if ( typeof propsToMatch !== 'string' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('prevent-xhr', propsToMatch, directive); - const xhrInstances = new WeakMap(); - const propNeedles = parsePropertiesToMatch(propsToMatch, 'url'); - const warOrigin = scriptletGlobals.warOrigin; - const headers = { - 'date': '', - 'content-type': '', - 'content-length': '', - }; - self.XMLHttpRequest = class extends self.XMLHttpRequest { - open(method, url, ...args) { - xhrInstances.delete(this); - if ( warOrigin !== undefined && url.startsWith(warOrigin) ) { - return super.open(method, url, ...args); - } - const haystack = { method, url }; - if ( propsToMatch === '' && directive === '' ) { - safe.uboLog(logPrefix, `Called: ${safe.JSON_stringify(haystack, null, 2)}`); - return super.open(method, url, ...args); - } - if ( matchObjectProperties(propNeedles, haystack) ) { - xhrInstances.set(this, haystack); - } - haystack.headers = Object.assign({}, headers); - return super.open(method, url, ...args); - } - send(...args) { - const haystack = xhrInstances.get(this); - if ( haystack === undefined ) { - return super.send(...args); - } - haystack.headers['date'] = (new Date()).toUTCString(); - let promise = Promise.resolve({ - xhr: this, - directive, - props: { - readyState: { value: 4 }, - response: { value: '' }, - responseText: { value: '' }, - responseXML: { value: null }, - responseURL: { value: haystack.url }, - status: { value: 200 }, - statusText: { value: 'OK' }, - }, - }); - switch ( this.responseType ) { - case 'arraybuffer': - promise = promise.then(details => { - details.props.response.value = new ArrayBuffer(0); - return details; - }); - haystack.headers['content-type'] = 'application/octet-stream'; - break; - case 'blob': - promise = promise.then(details => { - details.props.response.value = new Blob([]); - return details; - }); - haystack.headers['content-type'] = 'application/octet-stream'; - break; - case 'document': { - promise = promise.then(details => { - const parser = new DOMParser(); - const doc = parser.parseFromString('', 'text/html'); - details.props.response.value = doc; - details.props.responseXML.value = doc; - return details; - }); - haystack.headers['content-type'] = 'text/html'; - break; - } - case 'json': - promise = promise.then(details => { - details.props.response.value = {}; - details.props.responseText.value = '{}'; - return details; - }); - haystack.headers['content-type'] = 'application/json'; - break; - default: - if ( directive === '' ) { break; } - promise = promise.then(details => { - return generateContentFn(details.directive).then(text => { - details.props.response.value = text; - details.props.responseText.value = text; - return details; - }); - }); - haystack.headers['content-type'] = 'text/plain'; - break; - } - promise.then(details => { - haystack.headers['content-length'] = `${details.props.response.value}`.length; - Object.defineProperties(details.xhr, details.props); - details.xhr.dispatchEvent(new Event('readystatechange')); - details.xhr.dispatchEvent(new Event('load')); - details.xhr.dispatchEvent(new Event('loadend')); - safe.uboLog(logPrefix, `Prevented with response:\n${details.xhr.response}`); - }); - } - getResponseHeader(headerName) { - const haystack = xhrInstances.get(this); - if ( haystack === undefined || this.readyState < this.HEADERS_RECEIVED ) { - return super.getResponseHeader(headerName); - } - const value = haystack.headers[headerName.toLowerCase()]; - if ( value !== undefined && value !== '' ) { return value; } - return null; - } - getAllResponseHeaders() { - const haystack = xhrInstances.get(this); - if ( haystack === undefined || this.readyState < this.HEADERS_RECEIVED ) { - return super.getAllResponseHeaders(); - } - const out = []; - for ( const [ name, value ] of Object.entries(haystack.headers) ) { - if ( !value ) { continue; } - out.push(`${name}: ${value}`); - } - if ( out.length !== 0 ) { out.push(''); } - return out.join('\r\n'); - } - }; -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'no-window-open-if.js', - aliases: [ - 'nowoif.js', - 'prevent-window-open.js', - 'window.open-defuser.js', - ], - fn: noWindowOpenIf, - dependencies: [ - 'safe-self.fn', - ], -}); -function noWindowOpenIf( - pattern = '', - delay = '', - decoy = '' -) { - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('no-window-open-if', pattern, delay, decoy); - const targetMatchResult = pattern.startsWith('!') === false; - if ( targetMatchResult === false ) { - pattern = pattern.slice(1); - } - const rePattern = safe.patternToRegex(pattern); - let autoRemoveAfter = parseInt(delay); - if ( isNaN(autoRemoveAfter) ) { - autoRemoveAfter = -1; - } - const createDecoy = function(tag, urlProp, url) { - const decoyElem = document.createElement(tag); - decoyElem[urlProp] = url; - decoyElem.style.setProperty('height','1px', 'important'); - decoyElem.style.setProperty('position','fixed', 'important'); - decoyElem.style.setProperty('top','-1px', 'important'); - decoyElem.style.setProperty('width','1px', 'important'); - document.body.appendChild(decoyElem); - setTimeout(( ) => { decoyElem.remove(); }, autoRemoveAfter * 1000); - return decoyElem; - }; - window.open = new Proxy(window.open, { - apply: function(target, thisArg, args) { - const haystack = args.join(' '); - if ( rePattern.test(haystack) !== targetMatchResult ) { - if ( safe.logLevel > 1 ) { - safe.uboLog(logPrefix, `Allowed (${args.join(', ')})`); - } - return Reflect.apply(target, thisArg, args); - } - safe.uboLog(logPrefix, `Prevented (${args.join(', ')})`); - if ( autoRemoveAfter < 0 ) { return null; } - const decoyElem = decoy === 'obj' - ? createDecoy('object', 'data', ...args) - : createDecoy('iframe', 'src', ...args); - let popup = decoyElem.contentWindow; - if ( typeof popup === 'object' && popup !== null ) { - Object.defineProperty(popup, 'closed', { value: false }); - } else { - const noopFunc = (function(){}).bind(self); - popup = new Proxy(self, { - get: function(target, prop) { - if ( prop === 'closed' ) { return false; } - const r = Reflect.get(...arguments); - if ( typeof r === 'function' ) { return noopFunc; } - return target[prop]; - }, - set: function() { - return Reflect.set(...arguments); - }, - }); - } - if ( safe.logLevel !== 0 ) { - popup = new Proxy(popup, { - get: function(target, prop) { - safe.uboLog(logPrefix, 'window.open / get', prop, '===', target[prop]); - return Reflect.get(...arguments); - }, - set: function(target, prop, value) { - safe.uboLog(logPrefix, 'window.open / set', prop, '=', value); - return Reflect.set(...arguments); - }, - }); - } - return popup; - } - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'close-window.js', - aliases: [ - 'window-close-if.js', - ], - fn: closeWindow, - world: 'ISOLATED', - dependencies: [ - 'safe-self.fn', - ], -}); -// https://github.com/uBlockOrigin/uAssets/issues/10323#issuecomment-992312847 -// https://github.com/AdguardTeam/Scriptlets/issues/158 -// https://github.com/uBlockOrigin/uBlock-issues/discussions/2270 -function closeWindow( - arg1 = '' -) { - if ( typeof arg1 !== 'string' ) { return; } - const safe = safeSelf(); - let subject = ''; - if ( /^\/.*\/$/.test(arg1) ) { - subject = window.location.href; - } else if ( arg1 !== '' ) { - subject = `${window.location.pathname}${window.location.search}`; - } - try { - const re = safe.patternToRegex(arg1); - if ( re.test(subject) ) { - window.close(); - } - } catch(ex) { - console.log(ex); - } -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'window.name-defuser.js', - fn: windowNameDefuser, -}); -// https://github.com/gorhill/uBlock/issues/1228 -function windowNameDefuser() { - if ( window === window.top ) { - window.name = ''; - } -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'overlay-buster.js', - fn: overlayBuster, -}); -// Experimental: Generic nuisance overlay buster. -// if this works well and proves to be useful, this may end up -// as a stock tool in uBO's popup panel. -function overlayBuster() { - if ( window !== window.top ) { return; } - var tstart; - var ttl = 30000; - var delay = 0; - var delayStep = 50; - var buster = function() { - var docEl = document.documentElement, - bodyEl = document.body, - vw = Math.min(docEl.clientWidth, window.innerWidth), - vh = Math.min(docEl.clientHeight, window.innerHeight), - tol = Math.min(vw, vh) * 0.05, - el = document.elementFromPoint(vw/2, vh/2), - style, rect; - for (;;) { - if ( el === null || el.parentNode === null || el === bodyEl ) { - break; - } - style = window.getComputedStyle(el); - if ( parseInt(style.zIndex, 10) >= 1000 || style.position === 'fixed' ) { - rect = el.getBoundingClientRect(); - if ( rect.left <= tol && rect.top <= tol && (vw - rect.right) <= tol && (vh - rect.bottom) < tol ) { - el.parentNode.removeChild(el); - tstart = Date.now(); - el = document.elementFromPoint(vw/2, vh/2); - bodyEl.style.setProperty('overflow', 'auto', 'important'); - docEl.style.setProperty('overflow', 'auto', 'important'); - continue; - } - } - el = el.parentNode; - } - if ( (Date.now() - tstart) < ttl ) { - delay = Math.min(delay + delayStep, 1000); - setTimeout(buster, delay); - } - }; - var domReady = function(ev) { - if ( ev ) { - document.removeEventListener(ev.type, domReady); - } - tstart = Date.now(); - setTimeout(buster, delay); - }; - if ( document.readyState === 'loading' ) { - document.addEventListener('DOMContentLoaded', domReady); - } else { - domReady(); - } -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'alert-buster.js', - fn: alertBuster, -}); -// https://github.com/uBlockOrigin/uAssets/issues/8 -function alertBuster() { - window.alert = new Proxy(window.alert, { - apply: function(a) { - console.info(a); - }, - get(target, prop, receiver) { - if ( prop === 'toString' ) { - return target.toString.bind(target); - } - return Reflect.get(target, prop, receiver); - }, - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'nowebrtc.js', - fn: noWebrtc, -}); -// Prevent web pages from using RTCPeerConnection(), and report attempts in console. -function noWebrtc() { - var rtcName = window.RTCPeerConnection ? 'RTCPeerConnection' : ( - window.webkitRTCPeerConnection ? 'webkitRTCPeerConnection' : '' - ); - if ( rtcName === '' ) { return; } - var log = console.log.bind(console); - var pc = function(cfg) { - log('Document tried to create an RTCPeerConnection: %o', cfg); - }; - const noop = function() { - }; - pc.prototype = { - close: noop, - createDataChannel: noop, - createOffer: noop, - setRemoteDescription: noop, - toString: function() { - return '[object RTCPeerConnection]'; - } - }; - var z = window[rtcName]; - window[rtcName] = pc.bind(window); - if ( z.prototype ) { - z.prototype.createDataChannel = function() { - return { - close: function() {}, - send: function() {} - }; - }.bind(null); - } -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'disable-newtab-links.js', - fn: disableNewtabLinks, -}); -// https://github.com/uBlockOrigin/uAssets/issues/913 -function disableNewtabLinks() { - document.addEventListener('click', function(ev) { - var target = ev.target; - while ( target !== null ) { - if ( target.localName === 'a' && target.hasAttribute('target') ) { - ev.stopPropagation(); - ev.preventDefault(); - break; - } - target = target.parentNode; - } - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'remove-cookie.js', - aliases: [ - 'cookie-remover.js', - ], - fn: cookieRemover, - world: 'ISOLATED', - dependencies: [ - 'safe-self.fn', - ], -}); -// https://github.com/NanoAdblocker/NanoFilters/issues/149 -function cookieRemover( - needle = '' -) { - if ( typeof needle !== 'string' ) { return; } - const safe = safeSelf(); - const reName = safe.patternToRegex(needle); - const extraArgs = safe.getExtraArgs(Array.from(arguments), 1); - const throttle = (fn, ms = 500) => { - if ( throttle.timer !== undefined ) { return; } - throttle.timer = setTimeout(( ) => { - throttle.timer = undefined; - fn(); - }, ms); - }; - const removeCookie = ( ) => { - document.cookie.split(';').forEach(cookieStr => { - const pos = cookieStr.indexOf('='); - if ( pos === -1 ) { return; } - const cookieName = cookieStr.slice(0, pos).trim(); - if ( reName.test(cookieName) === false ) { return; } - const part1 = cookieName + '='; - const part2a = '; domain=' + document.location.hostname; - const part2b = '; domain=.' + document.location.hostname; - let part2c, part2d; - const domain = document.domain; - if ( domain ) { - if ( domain !== document.location.hostname ) { - part2c = '; domain=.' + domain; - } - if ( domain.startsWith('www.') ) { - part2d = '; domain=' + domain.replace('www', ''); - } - } - const part3 = '; path=/'; - const part4 = '; Max-Age=-1000; expires=Thu, 01 Jan 1970 00:00:00 GMT'; - document.cookie = part1 + part4; - document.cookie = part1 + part2a + part4; - document.cookie = part1 + part2b + part4; - document.cookie = part1 + part3 + part4; - document.cookie = part1 + part2a + part3 + part4; - document.cookie = part1 + part2b + part3 + part4; - if ( part2c !== undefined ) { - document.cookie = part1 + part2c + part3 + part4; - } - if ( part2d !== undefined ) { - document.cookie = part1 + part2d + part3 + part4; - } - }); - }; - removeCookie(); - window.addEventListener('beforeunload', removeCookie); - if ( typeof extraArgs.when !== 'string' ) { return; } - const supportedEventTypes = [ 'scroll', 'keydown' ]; - const eventTypes = extraArgs.when.split(/\s/); - for ( const type of eventTypes ) { - if ( supportedEventTypes.includes(type) === false ) { continue; } - document.addEventListener(type, ( ) => { - throttle(removeCookie); - }, { passive: true }); - } -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'xml-prune.js', - fn: xmlPrune, - dependencies: [ - 'safe-self.fn', - ], -}); -function xmlPrune( - selector = '', - selectorCheck = '', - urlPattern = '' -) { - if ( typeof selector !== 'string' ) { return; } - if ( selector === '' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('xml-prune', selector, selectorCheck, urlPattern); - const reUrl = safe.patternToRegex(urlPattern); - const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); - const queryAll = (xmlDoc, selector) => { - const isXpath = /^xpath\(.+\)$/.test(selector); - if ( isXpath === false ) { - return Array.from(xmlDoc.querySelectorAll(selector)); - } - const xpr = xmlDoc.evaluate( - selector.slice(6, -1), - xmlDoc, - null, - XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, - null - ); - const out = []; - for ( let i = 0; i < xpr.snapshotLength; i++ ) { - const node = xpr.snapshotItem(i); - out.push(node); - } - return out; - }; - const pruneFromDoc = xmlDoc => { - try { - if ( selectorCheck !== '' && xmlDoc.querySelector(selectorCheck) === null ) { - return xmlDoc; - } - if ( extraArgs.logdoc ) { - const serializer = new XMLSerializer(); - safe.uboLog(logPrefix, `Document is\n\t${serializer.serializeToString(xmlDoc)}`); - } - const items = queryAll(xmlDoc, selector); - if ( items.length === 0 ) { return xmlDoc; } - safe.uboLog(logPrefix, `Removing ${items.length} items`); - for ( const item of items ) { - if ( item.nodeType === 1 ) { - item.remove(); - } else if ( item.nodeType === 2 ) { - item.ownerElement.removeAttribute(item.nodeName); - } - safe.uboLog(logPrefix, `${item.constructor.name}.${item.nodeName} removed`); - } - } catch(ex) { - safe.uboErr(logPrefix, `Error: ${ex}`); - } - return xmlDoc; - }; - const pruneFromText = text => { - if ( (/^\s*\s*$/.test(text)) === false ) { - return text; - } - try { - const xmlParser = new DOMParser(); - const xmlDoc = xmlParser.parseFromString(text, 'text/xml'); - pruneFromDoc(xmlDoc); - const serializer = new XMLSerializer(); - text = serializer.serializeToString(xmlDoc); - } catch(ex) { - } - return text; - }; - const urlFromArg = arg => { - if ( typeof arg === 'string' ) { return arg; } - if ( arg instanceof Request ) { return arg.url; } - return String(arg); - }; - self.fetch = new Proxy(self.fetch, { - apply: function(target, thisArg, args) { - const fetchPromise = Reflect.apply(target, thisArg, args); - if ( reUrl.test(urlFromArg(args[0])) === false ) { - return fetchPromise; - } - return fetchPromise.then(responseBefore => { - const response = responseBefore.clone(); - return response.text().then(text => { - const responseAfter = new Response(pruneFromText(text), { - status: responseBefore.status, - statusText: responseBefore.statusText, - headers: responseBefore.headers, - }); - Object.defineProperties(responseAfter, { - ok: { value: responseBefore.ok }, - redirected: { value: responseBefore.redirected }, - type: { value: responseBefore.type }, - url: { value: responseBefore.url }, - }); - return responseAfter; - }).catch(( ) => - responseBefore - ); - }); - } - }); - self.XMLHttpRequest.prototype.open = new Proxy(self.XMLHttpRequest.prototype.open, { - apply: async (target, thisArg, args) => { - if ( reUrl.test(urlFromArg(args[1])) === false ) { - return Reflect.apply(target, thisArg, args); - } - thisArg.addEventListener('readystatechange', function() { - if ( thisArg.readyState !== 4 ) { return; } - const type = thisArg.responseType; - if ( - type === 'document' || - type === '' && thisArg.responseXML instanceof XMLDocument - ) { - pruneFromDoc(thisArg.responseXML); - const serializer = new XMLSerializer(); - const textout = serializer.serializeToString(thisArg.responseXML); - Object.defineProperty(thisArg, 'responseText', { value: textout }); - return; - } - if ( - type === 'text' || - type === '' && typeof thisArg.responseText === 'string' - ) { - const textin = thisArg.responseText; - const textout = pruneFromText(textin); - if ( textout === textin ) { return; } - Object.defineProperty(thisArg, 'response', { value: textout }); - Object.defineProperty(thisArg, 'responseText', { value: textout }); - return; - } - }); - return Reflect.apply(target, thisArg, args); - } - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'm3u-prune.js', - fn: m3uPrune, - dependencies: [ - 'safe-self.fn', - ], -}); -// https://en.wikipedia.org/wiki/M3U -function m3uPrune( - m3uPattern = '', - urlPattern = '' -) { - if ( typeof m3uPattern !== 'string' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('m3u-prune', m3uPattern, urlPattern); - const toLog = []; - const regexFromArg = arg => { - if ( arg === '' ) { return /^/; } - const match = /^\/(.+)\/([gms]*)$/.exec(arg); - if ( match !== null ) { - let flags = match[2] || ''; - if ( flags.includes('m') ) { flags += 's'; } - return new RegExp(match[1], flags); - } - return new RegExp( - arg.replace(/[.+?^${}()|[\]\\]/g, '\\$&').replace(/\*+/g, '.*?') - ); - }; - const reM3u = regexFromArg(m3uPattern); - const reUrl = regexFromArg(urlPattern); - const pruneSpliceoutBlock = (lines, i) => { - if ( lines[i].startsWith('#EXT-X-CUE:TYPE="SpliceOut"') === false ) { - return false; - } - toLog.push(`\t${lines[i]}`); - lines[i] = undefined; i += 1; - if ( lines[i].startsWith('#EXT-X-ASSET:CAID') ) { - toLog.push(`\t${lines[i]}`); - lines[i] = undefined; i += 1; - } - if ( lines[i].startsWith('#EXT-X-SCTE35:') ) { - toLog.push(`\t${lines[i]}`); - lines[i] = undefined; i += 1; - } - if ( lines[i].startsWith('#EXT-X-CUE-IN') ) { - toLog.push(`\t${lines[i]}`); - lines[i] = undefined; i += 1; - } - if ( lines[i].startsWith('#EXT-X-SCTE35:') ) { - toLog.push(`\t${lines[i]}`); - lines[i] = undefined; i += 1; - } - return true; - }; - const pruneInfBlock = (lines, i) => { - if ( lines[i].startsWith('#EXTINF') === false ) { return false; } - if ( reM3u.test(lines[i+1]) === false ) { return false; } - toLog.push('Discarding', `\t${lines[i]}, \t${lines[i+1]}`); - lines[i] = lines[i+1] = undefined; i += 2; - if ( lines[i].startsWith('#EXT-X-DISCONTINUITY') ) { - toLog.push(`\t${lines[i]}`); - lines[i] = undefined; i += 1; - } - return true; - }; - const pruner = text => { - if ( (/^\s*#EXTM3U/.test(text)) === false ) { return text; } - if ( m3uPattern === '' ) { - safe.uboLog(` Content:\n${text}`); - return text; - } - if ( reM3u.multiline ) { - reM3u.lastIndex = 0; - for (;;) { - const match = reM3u.exec(text); - if ( match === null ) { break; } - let discard = match[0]; - let before = text.slice(0, match.index); - if ( - /^[\n\r]+/.test(discard) === false && - /[\n\r]+$/.test(before) === false - ) { - const startOfLine = /[^\n\r]+$/.exec(before); - if ( startOfLine !== null ) { - before = before.slice(0, startOfLine.index); - discard = startOfLine[0] + discard; - } - } - let after = text.slice(match.index + match[0].length); - if ( - /[\n\r]+$/.test(discard) === false && - /^[\n\r]+/.test(after) === false - ) { - const endOfLine = /^[^\n\r]+/.exec(after); - if ( endOfLine !== null ) { - after = after.slice(endOfLine.index); - discard += discard + endOfLine[0]; - } - } - text = before.trim() + '\n' + after.trim(); - reM3u.lastIndex = before.length + 1; - toLog.push('Discarding', ...discard.split(/\n+/).map(s => `\t${s}`)); - if ( reM3u.global === false ) { break; } - } - return text; - } - const lines = text.split(/\n\r|\n|\r/); - for ( let i = 0; i < lines.length; i++ ) { - if ( lines[i] === undefined ) { continue; } - if ( pruneSpliceoutBlock(lines, i) ) { continue; } - if ( pruneInfBlock(lines, i) ) { continue; } - } - return lines.filter(l => l !== undefined).join('\n'); - }; - const urlFromArg = arg => { - if ( typeof arg === 'string' ) { return arg; } - if ( arg instanceof Request ) { return arg.url; } - return String(arg); - }; - const realFetch = self.fetch; - self.fetch = new Proxy(self.fetch, { - apply: function(target, thisArg, args) { - if ( reUrl.test(urlFromArg(args[0])) === false ) { - return Reflect.apply(target, thisArg, args); - } - return realFetch(...args).then(realResponse => - realResponse.text().then(text => { - const response = new Response(pruner(text), { - status: realResponse.status, - statusText: realResponse.statusText, - headers: realResponse.headers, - }); - if ( toLog.length !== 0 ) { - toLog.unshift(logPrefix); - safe.uboLog(toLog.join('\n')); - } - return response; - }) - ); - } - }); - self.XMLHttpRequest.prototype.open = new Proxy(self.XMLHttpRequest.prototype.open, { - apply: async (target, thisArg, args) => { - if ( reUrl.test(urlFromArg(args[1])) === false ) { - return Reflect.apply(target, thisArg, args); - } - thisArg.addEventListener('readystatechange', function() { - if ( thisArg.readyState !== 4 ) { return; } - const type = thisArg.responseType; - if ( type !== '' && type !== 'text' ) { return; } - const textin = thisArg.responseText; - const textout = pruner(textin); - if ( textout === textin ) { return; } - Object.defineProperty(thisArg, 'response', { value: textout }); - Object.defineProperty(thisArg, 'responseText', { value: textout }); - if ( toLog.length !== 0 ) { - toLog.unshift(logPrefix); - safe.uboLog(toLog.join('\n')); - } - }); - return Reflect.apply(target, thisArg, args); - } - }); -} - -/******************************************************************************* - * - * @scriptlet href-sanitizer - * - * @description - * Set the `href` attribute to a value found in the DOM at, or below the - * targeted `a` element. - * - * ### Syntax - * - * ```text - * example.org##+js(href-sanitizer, selector [, source]) - * ``` - * - * - `selector`: required, CSS selector, specifies `a` elements for which the - * `href` attribute must be overridden. - * - `source`: optional, default to `text`, specifies from where to get the - * value which will override the `href` attribute. - * - `text`: the value will be the first valid URL found in the text - * content of the targeted `a` element. - * - `[attr]`: the value will be the attribute _attr_ of the targeted `a` - * element. - * - `?param`: the value will be the query parameter _param_ of the URL - * found in the `href` attribute of the targeted `a` element. - * - * ### Examples - * - * example.org##+js(href-sanitizer, a) - * example.org##+js(href-sanitizer, a[title], [title]) - * example.org##+js(href-sanitizer, a[href*="/away.php?to="], ?to) - * - * */ - -builtinScriptlets.push({ - name: 'href-sanitizer.js', - fn: hrefSanitizer, - world: 'ISOLATED', - dependencies: [ - 'run-at.fn', - 'safe-self.fn', - ], -}); -function hrefSanitizer( - selector = '', - source = '' -) { - if ( typeof selector !== 'string' ) { return; } - if ( selector === '' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('href-sanitizer', selector, source); - if ( source === '' ) { source = 'text'; } - const sanitizeCopycats = (href, text) => { - let elems = []; - try { - elems = document.querySelectorAll(`a[href="${href}"`); - } - catch(ex) { - } - for ( const elem of elems ) { - elem.setAttribute('href', text); - } - return elems.length; - }; - const validateURL = text => { - if ( text === '' ) { return ''; } - if ( /[\x00-\x20\x7f]/.test(text) ) { return ''; } - try { - const url = new URL(text, document.location); - return url.href; - } catch(ex) { - } - return ''; - }; - const extractParam = (href, source) => { - if ( Boolean(source) === false ) { return href; } - const recursive = source.includes('?', 1); - const end = recursive ? source.indexOf('?', 1) : source.length; - try { - const url = new URL(href, document.location); - const value = url.searchParams.get(source.slice(1, end)); - if ( value === null ) { return href } - if ( recursive ) { return extractParam(value, source.slice(end)); } - return value; - } catch(x) { - } - return href; - }; - const extractText = (elem, source) => { - if ( /^\[.*\]$/.test(source) ) { - return elem.getAttribute(source.slice(1,-1).trim()) || ''; - } - if ( source.startsWith('?') ) { - return extractParam(elem.href, source); - } - if ( source === 'text' ) { - return elem.textContent - .replace(/^[^\x21-\x7e]+/, '') // remove leading invalid characters - .replace(/[^\x21-\x7e]+$/, '') // remove trailing invalid characters - ; - } - return ''; - }; - const sanitize = ( ) => { - let elems = []; - try { - elems = document.querySelectorAll(selector); - } - catch(ex) { - return false; - } - for ( const elem of elems ) { - if ( elem.localName !== 'a' ) { continue; } - if ( elem.hasAttribute('href') === false ) { continue; } - const href = elem.getAttribute('href'); - const text = extractText(elem, source); - const hrefAfter = validateURL(text); - if ( hrefAfter === '' ) { continue; } - if ( hrefAfter === href ) { continue; } - elem.setAttribute('href', hrefAfter); - const count = sanitizeCopycats(href, hrefAfter); - safe.uboLog(logPrefix, `Sanitized ${count+1} links to\n${hrefAfter}`); - } - return true; - }; - let observer, timer; - const onDomChanged = mutations => { - if ( timer !== undefined ) { return; } - let shouldSanitize = false; - for ( const mutation of mutations ) { - if ( mutation.addedNodes.length === 0 ) { continue; } - for ( const node of mutation.addedNodes ) { - if ( node.nodeType !== 1 ) { continue; } - shouldSanitize = true; - break; - } - if ( shouldSanitize ) { break; } - } - if ( shouldSanitize === false ) { return; } - timer = safe.onIdle(( ) => { - timer = undefined; - sanitize(); - }); - }; - const start = ( ) => { - if ( sanitize() === false ) { return; } - observer = new MutationObserver(onDomChanged); - observer.observe(document.body, { - subtree: true, - childList: true, - }); - }; - runAt(( ) => { start(); }, 'interactive'); -} - -/******************************************************************************* - * - * @scriptlet call-nothrow - * - * @description - * Prevent a function call from throwing. The function will be called, however - * should it throw, the scriptlet will silently process the exception and - * returns as if no exception has occurred. - * - * ### Syntax - * - * ```text - * example.org##+js(call-nothrow, propertyChain) - * ``` - * - * - `propertyChain`: a chain of dot-separated properties which leads to the - * function to be trapped. - * - * ### Examples - * - * example.org##+js(call-nothrow, Object.defineProperty) - * - * */ - -builtinScriptlets.push({ - name: 'call-nothrow.js', - fn: callNothrow, -}); -function callNothrow( - chain = '' -) { - if ( typeof chain !== 'string' ) { return; } - if ( chain === '' ) { return; } - const parts = chain.split('.'); - let owner = window, prop; - for (;;) { - prop = parts.shift(); - if ( parts.length === 0 ) { break; } - owner = owner[prop]; - if ( owner instanceof Object === false ) { return; } - } - if ( prop === '' ) { return; } - const fn = owner[prop]; - if ( typeof fn !== 'function' ) { return; } - owner[prop] = new Proxy(fn, { - apply: function(...args) { - let r; - try { - r = Reflect.apply(...args); - } catch(ex) { - } - return r; - }, - }); -} - - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'spoof-css.js', - fn: spoofCSS, - dependencies: [ - 'safe-self.fn', - ], -}); -function spoofCSS( - selector, - ...args -) { - if ( typeof selector !== 'string' ) { return; } - if ( selector === '' ) { return; } - const toCamelCase = s => s.replace(/-[a-z]/g, s => s.charAt(1).toUpperCase()); - const propToValueMap = new Map(); - for ( let i = 0; i < args.length; i += 2 ) { - if ( typeof args[i+0] !== 'string' ) { break; } - if ( args[i+0] === '' ) { break; } - if ( typeof args[i+1] !== 'string' ) { break; } - propToValueMap.set(toCamelCase(args[i+0]), args[i+1]); - } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('spoof-css', selector, ...args); - const canDebug = scriptletGlobals.canDebug; - const shouldDebug = canDebug && propToValueMap.get('debug') || 0; - const instanceProperties = [ 'cssText', 'length', 'parentRule' ]; - const spoofStyle = (prop, real) => { - const normalProp = toCamelCase(prop); - const shouldSpoof = propToValueMap.has(normalProp); - const value = shouldSpoof ? propToValueMap.get(normalProp) : real; - if ( shouldSpoof ) { - safe.uboLog(logPrefix, `Spoofing ${prop} to ${value}`); - } - return value; - }; - const cloackFunc = (fn, thisArg, name) => { - const trap = fn.bind(thisArg); - Object.defineProperty(trap, 'name', { value: name }); - Object.defineProperty(trap, 'toString', { - value: ( ) => `function ${name}() { [native code] }` - }); - return trap; - }; - self.getComputedStyle = new Proxy(self.getComputedStyle, { - apply: function(target, thisArg, args) { - // eslint-disable-next-line no-debugger - if ( shouldDebug !== 0 ) { debugger; } - const style = Reflect.apply(target, thisArg, args); - const targetElements = new WeakSet(document.querySelectorAll(selector)); - if ( targetElements.has(args[0]) === false ) { return style; } - const proxiedStyle = new Proxy(style, { - get(target, prop, receiver) { - if ( typeof target[prop] === 'function' ) { - if ( prop === 'getPropertyValue' ) { - return cloackFunc(function getPropertyValue(prop) { - return spoofStyle(prop, target[prop]); - }, target, 'getPropertyValue'); - } - return cloackFunc(target[prop], target, prop); - } - if ( instanceProperties.includes(prop) ) { - return Reflect.get(target, prop); - } - return spoofStyle(prop, Reflect.get(target, prop, receiver)); - }, - getOwnPropertyDescriptor(target, prop) { - if ( propToValueMap.has(prop) ) { - return { - configurable: true, - enumerable: true, - value: propToValueMap.get(prop), - writable: true, - }; - } - return Reflect.getOwnPropertyDescriptor(target, prop); - }, - }); - return proxiedStyle; - }, - get(target, prop, receiver) { - if ( prop === 'toString' ) { - return target.toString.bind(target); - } - return Reflect.get(target, prop, receiver); - }, - }); - Element.prototype.getBoundingClientRect = new Proxy(Element.prototype.getBoundingClientRect, { - apply: function(target, thisArg, args) { - // eslint-disable-next-line no-debugger - if ( shouldDebug !== 0 ) { debugger; } - const rect = Reflect.apply(target, thisArg, args); - const targetElements = new WeakSet(document.querySelectorAll(selector)); - if ( targetElements.has(thisArg) === false ) { return rect; } - let { height, width } = rect; - if ( propToValueMap.has('width') ) { - width = parseFloat(propToValueMap.get('width')); - } - if ( propToValueMap.has('height') ) { - height = parseFloat(propToValueMap.get('height')); - } - return new self.DOMRect(rect.x, rect.y, width, height); - }, - get(target, prop, receiver) { - if ( prop === 'toString' ) { - return target.toString.bind(target); - } - return Reflect.get(target, prop, receiver); - }, - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'remove-node-text.js', - aliases: [ - 'rmnt.js', - ], - fn: removeNodeText, - world: 'ISOLATED', - dependencies: [ - 'replace-node-text.fn', - ], -}); -function removeNodeText( - nodeName, - includes, - ...extraArgs -) { - replaceNodeTextFn(nodeName, '', '', 'includes', includes || '', ...extraArgs); -} - -/******************************************************************************* - * - * set-cookie.js - * - * Set specified cookie to a specific value. - * - * Reference: - * https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/set-cookie.js - * - **/ - -builtinScriptlets.push({ - name: 'set-cookie.js', - fn: setCookie, - world: 'ISOLATED', - dependencies: [ - 'safe-self.fn', - 'set-cookie.fn', - ], -}); -function setCookie( - name = '', - value = '', - path = '' -) { - if ( name === '' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('set-cookie', name, value, path); - - const validValues = [ - 'accept', 'reject', - 'accepted', 'rejected', 'notaccepted', - 'allow', 'deny', - 'allowed', 'disallow', - 'enable', 'disable', - 'enabled', 'disabled', - 'ok', - 'on', 'off', - 'true', 't', 'false', 'f', - 'yes', 'y', 'no', 'n', - 'necessary', 'required', - 'approved', 'disapproved', - 'hide', 'hidden', - 'essential', 'nonessential', - 'dismiss', 'dismissed', - ]; - const normalized = value.toLowerCase(); - const match = /^("?)(.+)\1$/.exec(normalized); - const unquoted = match && match[2] || normalized; - if ( validValues.includes(unquoted) === false ) { - if ( /^\d+$/.test(unquoted) === false ) { return; } - const n = parseInt(value, 10); - if ( n > 32767 ) { return; } - } - - const done = setCookieFn( - false, - name, - value, - '', - path, - safe.getExtraArgs(Array.from(arguments), 3) - ); - - if ( done ) { - safe.uboLog(logPrefix, 'Done'); - } -} - -// For compatibility with AdGuard -builtinScriptlets.push({ - name: 'set-cookie-reload.js', - fn: setCookieReload, - world: 'ISOLATED', - dependencies: [ - 'set-cookie.js', - ], -}); -function setCookieReload(name, value, path, ...args) { - setCookie(name, value, path, 'reload', '1', ...args); -} - -/******************************************************************************* - * - * set-local-storage-item.js - * set-session-storage-item.js - * - * Set a local/session storage entry to a specific, allowed value. - * - * Reference: - * https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/set-local-storage-item.js - * https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/set-session-storage-item.js - * - **/ - -builtinScriptlets.push({ - name: 'set-local-storage-item.js', - fn: setLocalStorageItem, - world: 'ISOLATED', - dependencies: [ - 'set-local-storage-item.fn', - ], -}); -function setLocalStorageItem(key = '', value = '') { - setLocalStorageItemFn('local', false, key, value); -} - -builtinScriptlets.push({ - name: 'set-session-storage-item.js', - fn: setSessionStorageItem, - world: 'ISOLATED', - dependencies: [ - 'set-local-storage-item.fn', - ], -}); -function setSessionStorageItem(key = '', value = '') { - setLocalStorageItemFn('session', false, key, value); -} - -/******************************************************************************* - * - * @scriptlet set-attr - * - * @description - * Sets the specified attribute on the specified elements. This scriptlet runs - * once when the page loads then afterward on DOM mutations. - - * Reference: https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/set-attr.js - * - * ### Syntax - * - * ```text - * example.org##+js(set-attr, selector, attr [, value]) - * ``` - * - * - `selector`: CSS selector of DOM elements for which the attribute `attr` - * must be modified. - * - `attr`: the name of the attribute to modify - * - `value`: the value to assign to the target attribute. Possible values: - * - `''`: empty string (default) - * - `true` - * - `false` - * - positive decimal integer 0 <= value < 32768 - * - `[other]`: copy the value from attribute `other` on the same element - * */ - -builtinScriptlets.push({ - name: 'set-attr.js', - fn: setAttr, - world: 'ISOLATED', - dependencies: [ - 'run-at.fn', - 'safe-self.fn', - ], -}); -function setAttr( - selector = '', - attr = '', - value = '' -) { - if ( selector === '' ) { return; } - if ( attr === '' ) { return; } - - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('set-attr', attr, value); - const validValues = [ '', 'false', 'true' ]; - let copyFrom = ''; - - if ( validValues.includes(value.toLowerCase()) === false ) { - if ( /^\d+$/.test(value) ) { - const n = parseInt(value, 10); - if ( n >= 32768 ) { return; } - value = `${n}`; - } else if ( /^\[.+\]$/.test(value) ) { - copyFrom = value.slice(1, -1); - } else { - return; - } - } - - const extractValue = elem => { - if ( copyFrom !== '' ) { - return elem.getAttribute(copyFrom) || ''; - } - return value; - }; - - const applySetAttr = ( ) => { - const elems = []; - try { - elems.push(...document.querySelectorAll(selector)); - } - catch(ex) { - return false; - } - for ( const elem of elems ) { - const before = elem.getAttribute(attr); - const after = extractValue(elem); - if ( after === before ) { continue; } - if ( after !== '' && /^on/i.test(attr) ) { - if ( attr.toLowerCase() in elem ) { continue; } - } - elem.setAttribute(attr, after); - safe.uboLog(logPrefix, `${attr}="${after}"`); - } - return true; - }; - let observer, timer; - const onDomChanged = mutations => { - if ( timer !== undefined ) { return; } - let shouldWork = false; - for ( const mutation of mutations ) { - if ( mutation.addedNodes.length === 0 ) { continue; } - for ( const node of mutation.addedNodes ) { - if ( node.nodeType !== 1 ) { continue; } - shouldWork = true; - break; - } - if ( shouldWork ) { break; } - } - if ( shouldWork === false ) { return; } - timer = self.requestAnimationFrame(( ) => { - timer = undefined; - applySetAttr(); - }); - }; - const start = ( ) => { - if ( applySetAttr() === false ) { return; } - observer = new MutationObserver(onDomChanged); - observer.observe(document.body, { - subtree: true, - childList: true, - }); - }; - runAt(( ) => { start(); }, 'idle'); -} - -/******************************************************************************* - * - * @scriptlet prevent-canvas - * - * @description - * Prevent usage of specific or all (default) canvas APIs. - * - * ### Syntax - * - * ```text - * example.com##+js(prevent-canvas [, contextType]) - * ``` - * - * - `contextType`: A specific type of canvas API to prevent (default to all - * APIs). Can be a string or regex which will be matched against the type - * used in getContext() call. Prepend with `!` to test for no-match. - * - * ### Examples - * - * 1. Prevent `example.com` from accessing all canvas APIs - * - * ```adblock - * example.com##+js(prevent-canvas) - * ``` - * - * 2. Prevent access to any flavor of WebGL API, everywhere - * - * ```adblock - * *##+js(prevent-canvas, /webgl/) - * ``` - * - * 3. Prevent `example.com` from accessing any flavor of canvas API except `2d` - * - * ```adblock - * example.com##+js(prevent-canvas, !2d) - * ``` - * - * ### References - * - * https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext - * - * */ - -builtinScriptlets.push({ - name: 'prevent-canvas.js', - fn: preventCanvas, - dependencies: [ - 'safe-self.fn', - ], -}); -function preventCanvas( - contextType = '' -) { - const safe = safeSelf(); - const pattern = safe.initPattern(contextType, { canNegate: true }); - const proto = globalThis.HTMLCanvasElement.prototype; - proto.getContext = new Proxy(proto.getContext, { - apply(target, thisArg, args) { - if ( safe.testPattern(pattern, args[0]) ) { return null; } - return Reflect.apply(target, thisArg, args); - } - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'multiup.js', - fn: multiup, - world: 'ISOLATED', -}); -function multiup() { - const handler = ev => { - const target = ev.target; - if ( target.matches('button[link]') === false ) { return; } - const ancestor = target.closest('form'); - if ( ancestor === null ) { return; } - if ( ancestor !== target.parentElement ) { return; } - const link = (target.getAttribute('link') || '').trim(); - if ( link === '' ) { return; } - ev.preventDefault(); - ev.stopPropagation(); - document.location.href = link; - }; - document.addEventListener('click', handler, { capture: true }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'remove-cache-storage-item.js', - fn: removeCacheStorageItem, - world: 'ISOLATED', - dependencies: [ - 'safe-self.fn', - ], -}); -function removeCacheStorageItem( - cacheNamePattern = '', - requestPattern = '' -) { - if ( cacheNamePattern === '' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('remove-cache-storage-item', cacheNamePattern, requestPattern); - const cacheStorage = self.caches; - if ( cacheStorage instanceof Object === false ) { return; } - const reCache = safe.patternToRegex(cacheNamePattern, undefined, true); - const reRequest = safe.patternToRegex(requestPattern, undefined, true); - cacheStorage.keys().then(cacheNames => { - for ( const cacheName of cacheNames ) { - if ( reCache.test(cacheName) === false ) { continue; } - if ( requestPattern === '' ) { - cacheStorage.delete(cacheName).then(result => { - if ( safe.logLevel > 1 ) { - safe.uboLog(logPrefix, `Deleting ${cacheName}`); - } - if ( result !== true ) { return; } - safe.uboLog(logPrefix, `Deleted ${cacheName}: ${result}`); - }); - continue; - } - cacheStorage.open(cacheName).then(cache => { - cache.keys().then(requests => { - for ( const request of requests ) { - if ( reRequest.test(request.url) === false ) { continue; } - if ( safe.logLevel > 1 ) { - safe.uboLog(logPrefix, `Deleting ${cacheName}/${request.url}`); - } - cache.delete(request).then(result => { - if ( result !== true ) { return; } - safe.uboLog(logPrefix, `Deleted ${cacheName}/${request.url}: ${result}`); - }); - } - }); - }); - } - }); -} - - -/******************************************************************************* - * - * Scriplets below this section are only available for filter lists from - * trusted sources. They all have the property `requiresTrust` set to `true`. - * - * Trusted sources are: - * - * - uBO's own filter lists, which name starts with "uBlock filters – ", and - * maintained at: https://github.com/uBlockOrigin/uAssets - * - * - The user's own filters as seen in "My filters" pane in uBO's dashboard. - * - * The trustworthiness of filters using these privileged scriptlets are - * evaluated at filter list compiled time: when a filter using one of the - * privileged scriptlet originates from a non-trusted filter list source, it - * is discarded at compile time, specifically from within: - * - * - Source: ./src/js/scriptlet-filtering.js - * - Method: scriptletFilteringEngine.compile(), via normalizeRawFilter() - * - **/ - -/******************************************************************************* - * - * replace-node-text.js - * - * Replace text instance(s) with another text instance inside specific - * DOM nodes. By default, the scriplet stops and quits at the interactive - * stage of a document. - * - * See commit messages for usage: - * - https://github.com/gorhill/uBlock/commit/99ce027fd702 - * - https://github.com/gorhill/uBlock/commit/41876336db48 - * - **/ - -builtinScriptlets.push({ - name: 'trusted-replace-node-text.js', - requiresTrust: true, - aliases: [ - 'trusted-rpnt.js', - 'replace-node-text.js', - 'rpnt.js', - ], - fn: replaceNodeText, - world: 'ISOLATED', - dependencies: [ - 'replace-node-text.fn', - ], -}); -function replaceNodeText( - nodeName, - pattern, - replacement, - ...extraArgs -) { - replaceNodeTextFn(nodeName, pattern, replacement, ...extraArgs); -} - -/******************************************************************************* - * - * trusted-set-constant.js - * - * Set specified property to any value. This is essentially the same as - * set-constant.js, but with no restriction as to which values can be used. - * - **/ - -builtinScriptlets.push({ - name: 'trusted-set-constant.js', - requiresTrust: true, - aliases: [ - 'trusted-set.js', - ], - fn: trustedSetConstant, - dependencies: [ - 'set-constant.fn' - ], -}); -function trustedSetConstant( - ...args -) { - setConstantFn(true, ...args); -} - -/******************************************************************************* - * - * trusted-set-cookie.js - * - * Set specified cookie to an arbitrary value. - * - * Reference: - * https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/trusted-set-cookie.js#L23 - * - **/ - -builtinScriptlets.push({ - name: 'trusted-set-cookie.js', - requiresTrust: true, - fn: trustedSetCookie, - world: 'ISOLATED', - dependencies: [ - 'safe-self.fn', - 'set-cookie.fn', - ], -}); -function trustedSetCookie( - name = '', - value = '', - offsetExpiresSec = '', - path = '' -) { - if ( name === '' ) { return; } - - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('set-cookie', name, value, path); - const time = new Date(); - - if ( value.includes('$now$') ) { - value = value.replaceAll('$now$', time.getTime()); - } - if ( value.includes('$currentDate$') ) { - value = value.replaceAll('$currentDate$', time.toUTCString()); - } - if ( value.includes('$currentISODate$') ) { - value = value.replaceAll('$currentISODate$', time.toISOString()); - } - - let expires = ''; - if ( offsetExpiresSec !== '' ) { - if ( offsetExpiresSec === '1day' ) { - time.setDate(time.getDate() + 1); - } else if ( offsetExpiresSec === '1year' ) { - time.setFullYear(time.getFullYear() + 1); - } else { - if ( /^\d+$/.test(offsetExpiresSec) === false ) { return; } - time.setSeconds(time.getSeconds() + parseInt(offsetExpiresSec, 10)); - } - expires = time.toUTCString(); - } - - const done = setCookieFn( - true, - name, - value, - expires, - path, - safeSelf().getExtraArgs(Array.from(arguments), 4) - ); - - if ( done ) { - safe.uboLog(logPrefix, 'Done'); - } -} - -// For compatibility with AdGuard -builtinScriptlets.push({ - name: 'trusted-set-cookie-reload.js', - requiresTrust: true, - fn: trustedSetCookieReload, - world: 'ISOLATED', - dependencies: [ - 'trusted-set-cookie.js', - ], -}); -function trustedSetCookieReload(name, value, offsetExpiresSec, path, ...args) { - trustedSetCookie(name, value, offsetExpiresSec, path, 'reload', '1', ...args); -} - -/******************************************************************************* - * - * trusted-set-local-storage-item.js - * - * Set a local storage entry to an arbitrary value. - * - * Reference: - * https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/trusted-set-local-storage-item.js - * - **/ - -builtinScriptlets.push({ - name: 'trusted-set-local-storage-item.js', - requiresTrust: true, - fn: trustedSetLocalStorageItem, - world: 'ISOLATED', - dependencies: [ - 'set-local-storage-item.fn', - ], -}); -function trustedSetLocalStorageItem(key = '', value = '') { - setLocalStorageItemFn('local', true, key, value); -} - -builtinScriptlets.push({ - name: 'trusted-set-session-storage-item.js', - requiresTrust: true, - fn: trustedSetSessionStorageItem, - world: 'ISOLATED', - dependencies: [ - 'set-local-storage-item.fn', - ], -}); -function trustedSetSessionStorageItem(key = '', value = '') { - setLocalStorageItemFn('session', true, key, value); -} - -/******************************************************************************* - * - * trusted-replace-fetch-response.js - * - * Replaces response text content of fetch requests if all given parameters - * match. - * - * Reference: - * https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/trusted-replace-fetch-response.js - * - **/ - -builtinScriptlets.push({ - name: 'trusted-replace-fetch-response.js', - requiresTrust: true, - aliases: [ - 'trusted-rpfr.js', - ], - fn: trustedReplaceFetchResponse, - dependencies: [ - 'replace-fetch-response.fn', - ], -}); -function trustedReplaceFetchResponse(...args) { - replaceFetchResponseFn(true, ...args); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'trusted-replace-xhr-response.js', - requiresTrust: true, - fn: trustedReplaceXhrResponse, - dependencies: [ - 'match-object-properties.fn', - 'parse-properties-to-match.fn', - 'safe-self.fn', - ], -}); -function trustedReplaceXhrResponse( - pattern = '', - replacement = '', - propsToMatch = '' -) { - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('trusted-replace-xhr-response', pattern, replacement, propsToMatch); - const xhrInstances = new WeakMap(); - if ( pattern === '*' ) { pattern = '.*'; } - const rePattern = safe.patternToRegex(pattern); - const propNeedles = parsePropertiesToMatch(propsToMatch, 'url'); - const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); - const reIncludes = extraArgs.includes ? safe.patternToRegex(extraArgs.includes) : null; - self.XMLHttpRequest = class extends self.XMLHttpRequest { - open(method, url, ...args) { - const outerXhr = this; - const xhrDetails = { method, url }; - let outcome = 'match'; - if ( propNeedles.size !== 0 ) { - if ( matchObjectProperties(propNeedles, xhrDetails) === false ) { - outcome = 'nomatch'; - } - } - if ( outcome === 'match' ) { - if ( safe.logLevel > 1 ) { - safe.uboLog(logPrefix, `Matched "propsToMatch"`); - } - xhrInstances.set(outerXhr, xhrDetails); - } - return super.open(method, url, ...args); - } - get response() { - const innerResponse = super.response; - const xhrDetails = xhrInstances.get(this); - if ( xhrDetails === undefined ) { - return innerResponse; - } - const responseLength = typeof innerResponse === 'string' - ? innerResponse.length - : undefined; - if ( xhrDetails.lastResponseLength !== responseLength ) { - xhrDetails.response = undefined; - xhrDetails.lastResponseLength = responseLength; - } - if ( xhrDetails.response !== undefined ) { - return xhrDetails.response; - } - if ( typeof innerResponse !== 'string' ) { - return (xhrDetails.response = innerResponse); - } - if ( reIncludes && reIncludes.test(innerResponse) === false ) { - return (xhrDetails.response = innerResponse); - } - const textBefore = innerResponse; - const textAfter = textBefore.replace(rePattern, replacement); - if ( textAfter !== textBefore ) { - safe.uboLog(logPrefix, 'Match'); - } - return (xhrDetails.response = textAfter); - } - get responseText() { - const response = this.response; - if ( typeof response !== 'string' ) { - return super.responseText; - } - return response; - } - }; -} - -/******************************************************************************* - * - * trusted-click-element.js - * - * Reference API: - * https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/trusted-click-element.js - * - **/ - -builtinScriptlets.push({ - name: 'trusted-click-element.js', - requiresTrust: true, - fn: trustedClickElement, - world: 'ISOLATED', - dependencies: [ - 'get-all-cookies.fn', - 'get-all-local-storage.fn', - 'run-at-html-element.fn', - 'safe-self.fn', - ], -}); -function trustedClickElement( - selectors = '', - extraMatch = '', - delay = '' -) { - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('trusted-click-element', selectors, extraMatch, delay); - - if ( extraMatch !== '' ) { - const assertions = extraMatch.split(',').map(s => { - const pos1 = s.indexOf(':'); - const s1 = pos1 !== -1 ? s.slice(0, pos1) : s; - const not = s1.startsWith('!'); - const type = not ? s1.slice(1) : s1; - const s2 = pos1 !== -1 ? s.slice(pos1+1).trim() : ''; - if ( s2 === '' ) { return; } - const out = { not, type }; - const match = /^\/(.+)\/(i?)$/.exec(s2); - if ( match !== null ) { - out.re = new RegExp(match[1], match[2] || undefined); - return out; - } - const pos2 = s2.indexOf('='); - const key = pos2 !== -1 ? s2.slice(0, pos2).trim() : s2; - const value = pos2 !== -1 ? s2.slice(pos2+1).trim() : ''; - out.re = new RegExp(`^${this.escapeRegexChars(key)}=${this.escapeRegexChars(value)}`); - return out; - }).filter(details => details !== undefined); - const allCookies = assertions.some(o => o.type === 'cookie') - ? getAllCookiesFn() - : []; - const allStorageItems = assertions.some(o => o.type === 'localStorage') - ? getAllLocalStorageFn() - : []; - const hasNeedle = (haystack, needle) => { - for ( const { key, value } of haystack ) { - if ( needle.test(`${key}=${value}`) ) { return true; } - } - return false; - }; - for ( const { not, type, re } of assertions ) { - switch ( type ) { - case 'cookie': - if ( hasNeedle(allCookies, re) === not ) { return; } - break; - case 'localStorage': - if ( hasNeedle(allStorageItems, re) === not ) { return; } - break; - } - } - } - - const getShadowRoot = elem => { - // Firefox - if ( elem.openOrClosedShadowRoot ) { - return elem.openOrClosedShadowRoot; - } - // Chromium - if ( typeof chrome === 'object' ) { - if ( chrome.dom && chrome.dom.openOrClosedShadowRoot ) { - return chrome.dom.openOrClosedShadowRoot(elem); - } - } - return null; - }; - - const querySelectorEx = (selector, context = document) => { - const pos = selector.indexOf(' >>> '); - if ( pos === -1 ) { return context.querySelector(selector); } - const outside = selector.slice(0, pos).trim(); - const inside = selector.slice(pos + 5).trim(); - const elem = context.querySelector(outside); - if ( elem === null ) { return null; } - const shadowRoot = getShadowRoot(elem); - return shadowRoot && querySelectorEx(inside, shadowRoot); - }; - - const selectorList = selectors.split(/\s*,\s*/) - .filter(s => { - try { - void querySelectorEx(s); - } catch(_) { - return false; - } - return true; - }); - if ( selectorList.length === 0 ) { return; } - - const clickDelay = parseInt(delay, 10) || 1; - const t0 = Date.now(); - const tbye = t0 + 10000; - let tnext = selectorList.length !== 1 ? t0 : t0 + clickDelay; - - const terminate = ( ) => { - selectorList.length = 0; - next.stop(); - observe.stop(); - }; - - const next = notFound => { - if ( selectorList.length === 0 ) { - safe.uboLog(logPrefix, 'Completed'); - return terminate(); - } - const tnow = Date.now(); - if ( tnow >= tbye ) { - safe.uboLog(logPrefix, 'Timed out'); - return terminate(); - } - if ( notFound ) { observe(); } - const delay = Math.max(notFound ? tbye - tnow : tnext - tnow, 1); - next.timer = setTimeout(( ) => { - next.timer = undefined; - process(); - }, delay); - safe.uboLog(logPrefix, `Waiting for ${selectorList[0]}...`); - }; - next.stop = ( ) => { - if ( next.timer === undefined ) { return; } - clearTimeout(next.timer); - next.timer = undefined; - }; - - const observe = ( ) => { - if ( observe.observer !== undefined ) { return; } - observe.observer = new MutationObserver(( ) => { - if ( observe.timer !== undefined ) { return; } - observe.timer = setTimeout(( ) => { - observe.timer = undefined; - process(); - }, 20); - }); - observe.observer.observe(document, { - attributes: true, - childList: true, - subtree: true, - }); - }; - observe.stop = ( ) => { - if ( observe.timer !== undefined ) { - clearTimeout(observe.timer); - observe.timer = undefined; - } - if ( observe.observer ) { - observe.observer.disconnect(); - observe.observer = undefined; - } - }; - - const process = ( ) => { - next.stop(); - if ( Date.now() < tnext ) { return next(); } - const selector = selectorList.shift(); - if ( selector === undefined ) { return terminate(); } - const elem = querySelectorEx(selector); - if ( elem === null ) { - selectorList.unshift(selector); - return next(true); - } - safe.uboLog(logPrefix, `Clicked ${selector}`); - elem.click(); - tnext += clickDelay; - next(); - }; - - runAtHtmlElementFn(process); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'trusted-prune-inbound-object.js', - requiresTrust: true, - fn: trustedPruneInboundObject, - dependencies: [ - 'object-find-owner.fn', - 'object-prune.fn', - 'safe-self.fn', - ], -}); -function trustedPruneInboundObject( - entryPoint = '', - argPos = '', - rawPrunePaths = '', - rawNeedlePaths = '' -) { - if ( entryPoint === '' ) { return; } - let context = globalThis; - let prop = entryPoint; - for (;;) { - const pos = prop.indexOf('.'); - if ( pos === -1 ) { break; } - context = context[prop.slice(0, pos)]; - if ( context instanceof Object === false ) { return; } - prop = prop.slice(pos+1); - } - if ( typeof context[prop] !== 'function' ) { return; } - const argIndex = parseInt(argPos); - if ( isNaN(argIndex) ) { return; } - if ( argIndex < 1 ) { return; } - const safe = safeSelf(); - const extraArgs = safe.getExtraArgs(Array.from(arguments), 4); - const needlePaths = []; - if ( rawPrunePaths !== '' ) { - needlePaths.push(...rawPrunePaths.split(/ +/)); - } - if ( rawNeedlePaths !== '' ) { - needlePaths.push(...rawNeedlePaths.split(/ +/)); - } - const stackNeedle = safe.initPattern(extraArgs.stackToMatch || '', { canNegate: true }); - const mustProcess = root => { - for ( const needlePath of needlePaths ) { - if ( objectFindOwnerFn(root, needlePath) === false ) { - return false; - } - } - return true; - }; - context[prop] = new Proxy(context[prop], { - apply: function(target, thisArg, args) { - const targetArg = argIndex <= args.length - ? args[argIndex-1] - : undefined; - if ( targetArg instanceof Object && mustProcess(targetArg) ) { - let objBefore = targetArg; - if ( extraArgs.dontOverwrite ) { - try { - objBefore = safe.JSON_parse(safe.JSON_stringify(targetArg)); - } catch(_) { - objBefore = undefined; - } - } - if ( objBefore !== undefined ) { - const objAfter = objectPruneFn( - objBefore, - rawPrunePaths, - rawNeedlePaths, - stackNeedle, - extraArgs - ); - args[argIndex-1] = objAfter || objBefore; - } - } - return Reflect.apply(target, thisArg, args); - }, - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'trusted-prune-outbound-object.js', - requiresTrust: true, - fn: trustedPruneOutboundObject, - dependencies: [ - 'object-prune.fn', - 'proxy-apply.fn', - 'safe-self.fn', - ], -}); -function trustedPruneOutboundObject( - propChain = '', - rawPrunePaths = '', - rawNeedlePaths = '' -) { - if ( propChain === '' ) { return; } - const safe = safeSelf(); - const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); - const reflector = proxyApplyFn(propChain, function(...args) { - const objBefore = reflector(...args); - if ( objBefore instanceof Object === false ) { return objBefore; } - const objAfter = objectPruneFn( - objBefore, - rawPrunePaths, - rawNeedlePaths, - { matchAll: true }, - extraArgs - ); - return objAfter || objBefore; - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'trusted-replace-argument.js', - requiresTrust: true, - fn: trustedReplaceArgument, - dependencies: [ - 'proxy-apply.fn', - 'safe-self.fn', - 'validate-constant.fn', - ], -}); -function trustedReplaceArgument( - propChain = '', - argposRaw = '', - argraw = '' -) { - if ( propChain === '' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('trusted-replace-argument', propChain, argposRaw, argraw); - const argpos = parseInt(argposRaw, 10) || 0; - const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); - const normalValue = validateConstantFn(true, argraw, extraArgs); - const reCondition = extraArgs.condition - ? safe.patternToRegex(extraArgs.condition) - : /^/; - const reflector = proxyApplyFn(propChain, function(...args) { - if ( argposRaw === '' ) { - safe.uboLog(logPrefix, `Arguments:\n${args.join('\n')}`); - return reflector(...args); - } - const arglist = args[args.length-1]; - if ( Array.isArray(arglist) === false ) { return reflector(...args); } - const argBefore = arglist[argpos]; - if ( safe.RegExp_test.call(reCondition, argBefore) === false ) { - return reflector(...args); - } - arglist[argpos] = normalValue; - safe.uboLog(logPrefix, `Replaced argument:\nBefore: ${JSON.stringify(argBefore)}\nAfter: ${normalValue}`); - return reflector(...args); - }); -} - -/******************************************************************************/ - -builtinScriptlets.push({ - name: 'trusted-replace-outbound-text.js', - requiresTrust: true, - fn: trustedReplaceOutboundText, - dependencies: [ - 'proxy-apply.fn', - 'safe-self.fn', - ], -}); -function trustedReplaceOutboundText( - propChain = '', - pattern = '', - replacement = '', - ...args -) { - if ( propChain === '' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('trusted-replace-outbound-text', propChain, pattern, replacement, ...args); - const rePattern = safe.patternToRegex(pattern); - const extraArgs = safe.getExtraArgs(args); - const reCondition = safe.patternToRegex(extraArgs.condition || ''); - const reflector = proxyApplyFn(propChain, function(...args) { - const encodedTextBefore = reflector(...args); - let textBefore = encodedTextBefore; - if ( extraArgs.encoding === 'base64' ) { - try { textBefore = self.atob(encodedTextBefore); } - catch(ex) { return encodedTextBefore; } - } - if ( pattern === '' ) { - safe.uboLog(logPrefix, 'Decoded outbound text:\n', textBefore); - return encodedTextBefore; - } - reCondition.lastIndex = 0; - if ( reCondition.test(textBefore) === false ) { return encodedTextBefore; } - const textAfter = textBefore.replace(rePattern, replacement); - if ( textAfter === textBefore ) { return encodedTextBefore; } - safe.uboLog(logPrefix, 'Matched and replaced'); - if ( safe.logLevel > 1 ) { - safe.uboLog(logPrefix, 'Modified decoded outbound text:\n', textAfter); - } - let encodedTextAfter = textAfter; - if ( extraArgs.encoding === 'base64' ) { - encodedTextAfter = self.btoa(textAfter); - } - return encodedTextAfter; - }); -} - -/******************************************************************************* - * - * Reference: - * https://github.com/AdguardTeam/Scriptlets/blob/5a92d79489/wiki/about-trusted-scriptlets.md#trusted-suppress-native-method - * - * This is a first version with current limitations: - * - Does not support matching arguments which are object or array - * - Does not support `stack` parameter - * - * If `signatureStr` parameter is not declared, the scriptlet will log all calls - * to `methodPath` along with the arguments passed and will not prevent the - * trapped method. - * - * */ - -builtinScriptlets.push({ - name: 'trusted-suppress-native-method.js', - requiresTrust: true, - fn: trustedSuppressNativeMethod, - dependencies: [ - 'proxy-apply.fn', - 'safe-self.fn', - ], -}); -function trustedSuppressNativeMethod( - methodPath = '', - signature = '', - how = '', - stack = '' -) { - if ( methodPath === '' ) { return; } - if ( stack !== '' ) { return; } - const safe = safeSelf(); - const logPrefix = safe.makeLogPrefix('trusted-suppress-native-method', methodPath, signature, how); - const signatureArgs = signature.split(/\s*\|\s*/).map(v => { - if ( /^".*"$/.test(v) ) { - return { type: 'pattern', re: safe.patternToRegex(v.slice(1, -1)) }; - } - if ( v === 'false' ) { - return { type: 'exact', value: false }; - } - if ( v === 'true' ) { - return { type: 'exact', value: true }; - } - if ( v === 'null' ) { - return { type: 'exact', value: null }; - } - if ( v === 'undefined' ) { - return { type: 'exact', value: undefined }; - } - }); - const reflector = proxyApplyFn(methodPath, function(...args) { - if ( signature === '' ) { - safe.uboLog(logPrefix, `Arguments:\n${args.join('\n')}`); - return reflector(...args); - } - const arglist = args[args.length-1]; - if ( Array.isArray(arglist) === false ) { - return reflector(...args); - } - if ( arglist.length < signatureArgs.length ) { - return reflector(...args); - } - for ( let i = 0; i < signatureArgs.length; i++ ) { - const signatureArg = signatureArgs[i]; - if ( signatureArg === undefined ) { continue; } - const targetArg = arglist[i]; - if ( signatureArg.type === 'exact' ) { - if ( targetArg !== signatureArg.value ) { - return reflector(...args); - } - } - if ( signatureArg.type === 'pattern' ) { - if ( safe.RegExp_test.call(signatureArg.re, targetArg) === false ) { - return reflector(...args); - } - } - } - safe.uboLog(logPrefix, `Suppressed:\n${args.join('\n')}`); - if ( how === 'abort' ) { - throw new ReferenceError(); - } - }); -} - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/easylist/easylist.txt b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/easylist/easylist.txt deleted file mode 100644 index 0e3d3b9..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/easylist/easylist.txt +++ /dev/null @@ -1,73915 +0,0 @@ -[Adblock Plus 2.0] -! Title: EasyList -! Expires: 6 days (update frequency) -! Last modified: Mon, 29 Jul 2024 13:11:32 +0000 -! Diff-Path: %diffpath%#easylist -! Diff-Expires: 317 minutes -! *** easylist:template_header.txt *** -! -! Please report any unblocked adverts or problems -! in the forums (https://forums.lanik.us/) -! or via e-mail (easylist@protonmail.com). -! -! Homepage: https://easylist.to/ -! Licence: https://easylist.to/pages/licence.html -! GitHub issues: https://github.com/easylist/easylist/issues -! GitHub pull requests: https://github.com/easylist/easylist/pulls -! -!-----------------------General advert blocking filters-----------------------! -! *** easylist:easylist/easylist_general_block.txt *** -&pcid=*&rid= -&sadbl=1$third-party --ad-300x600- --ad-458x80. --ad-bottom- --ad-column- --ad-manager/$~stylesheet --ad-right. --ad-sidebar. --ad-unit. --ad-util. --ad.jpg.pagespeed. --adbanner. --ads-banner. --ads-bottom. --ads-manager/$domain=~wordpress.org --ads/assets/$script,domain=~web-ads.org --assets/ads.$~script --auto-ads- --banner-ad_ --banner-ads-$~script --contrib-ads.$~stylesheet --display-ads. --footerads. --housead- --page-ad. --page-peel/ --PcmModule-Taboola- --peel-ads- --popexit. --popunder. --publicidad. --right-ad. --side-ad. --sidebar-ad. --sponsor-ad. --sticky-ad- --top-ads. --web-advert- --Web-Advert. -.adriver.$~object,domain=~adriver.co -.adrotate. -.ads-lazy. -.ads-min. -.ads.controller. -.ads.css -.ads.darla. -.adsbox. -.adserver. -.advert.$domain=~advert.ae|~advert.ge|~advert.io|~advert.ly|~advert.media|~advert.org.pl -.ar/ads/ -.ashx?AdID= -.aspx?adid= -.az/adv/ -.br/ads/ -.bz/ads/ -.ca/ads/ -.cfm?ad= -.cgi?ad= -.ch/adv/ -.click/cuid/? -.click/rf/ -.clkads. -.club/js/popunder.js -.cn/sc/*?n=$script,third-party -.com/*=bT1zdXY1JnI9 -.com/4/js/$third-party -.com/a?pagetype -.com/ad/$~image,third-party,domain=~mediaplex.com|~warpwire.com|~wsj.com -.com/ads? -.com/adv/$domain=~adv.asahi.com|~advantabankcorp.com|~alltransistors.com|~archiproducts.com|~tritondigital.com -.com/api/posts?token=$third-party -.com/sc/*?n=$script,third-party -.com/script/a.js -.com/script/asset.js -.com/script/cdn.js -.com/script/compatibility.js -.com/script/document.js -.com/script/file.js$third-party -.com/script/foundation.js -.com/script/frustration.js -.com/script/image.js -.com/script/mui.js -.com/script/script.js$third-party -.com/script/utils.js$third-party -.com/script/xbox.js -.com/ss/ad/ -.com/watch.*.js?key= -.cz/adv/ -.cz/affil/ -.cz/bannery/ -.fuse-cloud.com/ -.html?clicktag= -.info/tsv -.jp/ads/$third-party,domain=~hs-exp.jp -.lazyload-ad- -.lazyload-ad. -.lol/js/pub.min.js$third-party -.lol/sw.js$third-party -.mx/ads/ -.my/ads/ -.nativeads. -.net/ad2/$~xmlhttprequest -.net/ads? -.ng/ads/ -.nu/ads/ -.org/ad/$domain=~ylilauta.org -.org/ads/ -.org/pops.js -.org/script/compatibility.js -.ph/ads/ -.php/ad/ -.php/ads/ -.php?ad= -.php?adsid= -.php?adv= -.php?clicktag= -.php?zone_id= -.php?zoneid= -.pk/ads/ -.popunder.js -.pw/ads/ -.ru/ads/ -.shop/gd/ -.top/cuid/? -.top/gd/*?md= -/?abt_opts=1& -/?fp=*&poru=$subdocument -/?view=ad -/_xa/ads? -/_xa/ads_batch? -/a-ads.$third-party -/a/?ad= -/a/display.php?$script -/ab_fl.js$script -/ablck/frolod.js -/ad--unit.htm -/ad-125. -/ad-bottom. -/ad-choices-$image -/ad-choices. -/ad-engine.js -/ad-scripts--$script -/ad-scroll.js -/ad-server.$~script -/ad-third-party? -/ad.cgi? -/ad.css?$stylesheet -/ad.html? -/ad.min. -/ad/a.aspx? -/ad/dfp/js/dfp.js -/ad/err? -/ad/getban? -/ad/image/*$image -/ad/images/*$image,domain=~studiocalling.it -/ad/img/*$image,domain=~eki-net.com|~jiji.com -/ad/imp? -/ad/load_ad? -/ad/popup. -/ad300.jpg -/ad300.js -/ad300.png -/ad?count= -/ad?pos_ -/ad?type= -/ad_728.jpg -/ad_728.js -/ad_banner/*$image,domain=~ccf.com.cn -/ad_bottom.jpg -/ad_bottom.js -/ad_break? -/ad_campaign? -/ad_code.js -/ad_common.js -/ad_counter.aspx -/ad_display.js -/ad_ga_callback.js -/ad_header.js -/ad_home.js -/ad_images/*$image,domain=~5nd.com|~dietnavi.com -/ad_img/*$image -/ad_left. -/ad_manager/*$image,script -/ad_overlay.js -/ad_pos= -/ad_position= -/ad_request.js -/ad_request.php -/ad_right. -/ad_rotator/*$image,script,domain=~spokane.exchange -/ad_server. -/ad_side. -/ad_skyscraper.gif -/ad_sticky.js -/ad_top.jpg -/ad_top.js -/ad_vert.gif -/adanalytics.js -/adaptive_components.ashx?type=ads& -/adaptvadplayer.js -/adasync.js -/adasync.min.js -/adbanners/*$image -/adbox.js -/adcall? -/adcgi? -/adchoice. -/adcommon? -/adconfig.js -/adcount.js -/adcount.php -/addons/ads. -/addyn/3.0/* -/addyn|*;adtech; -/addyn|*|adtech; -/adengine.js -/adfox/loader.js -/adfshow? -/adfurikun/*$~image -/adfx.loader.bind.js -/adhandler/*$~subdocument -/adiframe|*|adtech; -/adimage.$image,script,stylesheet -/adimages.$script -/adj.php? -/adjs.php -/adlayer.php -/adlib.min.js -/adlog.php -/admanager.css -/admanager.js -/admanager.min.js -/admanager/*$~object,domain=~admanager.line.biz|~blog.google|~sevio.com -/admgr.js -/admitad.js -/adocean.js -/ados.js -/adpartner.min.js -/adplayer.$script,domain=~adplayer.pro -/adplugin. -/adpopup.js -/adpopup.php -/adrecover.js -/adright.$domain=~adright.com -/adriver.$~script,domain=~adriver.co -/adriver_$~object -/ads-250. -/ads-300. -/ads-admin. -/ads-async. -/ads-common. -/ads-front.min.js -/ads-frontend.min.js -/ads-home.js -/ads-rectangle. -/ads-right. -/ads-templateslist. -/ads-vast-vpaid.js -/ads.bundle.js -/ads.bundle.min.js -/ads.cfm? -/ads.jplayer. -/ads.jsp -/ads.pl? -/ads/!rotator/* -/ads/300. -/ads/acctid= -/ads/banners/*$image -/ads/bottom. -/ads/cbr. -/ads/delivery. -/ads/footer. -/ads/ga-audiences? -/ads/gam_prebid-$script -/ads/get-ads-by-zones/?zones% -/ads/header. -/ads/image/*$image -/ads/images/*$image,domain=~eoffcn.com -/ads/index. -/ads/index/*$~xmlhttprequest,domain=~kuchechina.com -/ads/leaderboard-$~xmlhttprequest -/ads/leaderboard. -/ads/native.js -/ads/outbrain? -/ads/popout. -/ads/popup. -/ads/rectangle_$subdocument -/ads/revgen. -/ads/serve? -/ads/show. -/ads/slideup. -/ads/spacer. -/Ads/sponsor.$stylesheet -/ads/square-$image,domain=~spoolimports.com -/ads/square. -/ads/ta_wppas/*$third-party -/ads/targeted| -/ads/top. -/ads/video/controller.php -/ads/view.php -/ads/xtcore. -/ads1. -/ads160. -/ads3. -/ads300. -/ads4. -/ads468. -/ads468x60. -/ads728. -/ads728x90. -/ads?apid -/ads?callback -/ads?client= -/ads?id= -/ads?object_ -/ads?param= -/ads?zone= -/ads?zone_id= -/ads_300. -/ads_banners/*$image -/ads_bg. -/ads_bottom.js -/ads_controller.js -/ads_footer. -/ads_frame. -/ads_iframe. -/ads_image/*$image -/ads_images/*$image,domain=~wildlifeauctions.co.za -/adsAPI.js -/adsbanner-$image -/adsbanner. -/adsbanner/*$image -/adsbox.$~script,domain=~adsbox.com.sg -/adscontrol.js -/adscontroller.js -/adscroll.js -/adsdelivery/*$subdocument -/adserv. -/adserve/*$script -/adserver.$~stylesheet,~xmlhttprequest -/adserver1. -/adserver2. -/adserver3. -/adserver? -/adserving. -/adsforwp-front.min.css -/adsheader. -/adsimage/*$image,domain=~kamaz-service.kz|~theatreticketsdirect.co.uk -/adsimages/*$image,domain=~bdjobstoday.com -/adsimg/*$image -/adsinclude. -/adslide.js -/AdsLoad.js -/adsmanager.nsf/* -/adsmanager/*$domain=~adsmanager.facebook.com|~github.com -/AdsPlugin. -/adsrv. -/adsscript. -/adsserv. -/adsserver. -/adsservice. -/adstracking. -/adstream. -/adswrapper. -/ads~adsize~ -/adtech; -/adtext. -/adTools. -/adtrack.$domain=~adtrack.ca|~adtrack.yacast.fr -/adunit/track-view| -/adunits. -/adunits/bcid? -/adUnitsBreakpoints. -/adUnitsData. -/adutil. -/adv-banner-$image -/adv-mobile. -/adv-scroll-sidebar.js -/adv-scroll. -/adv-socialbar-scroll.js -/adv.css? -/adv/mjx.js -/adv_468. -/adv_out.js$third-party -/adv_teasers.js -/adv_vert.js -/AdvAdsV3/*$script,stylesheet -/advanced-ads-$domain=~wordpress.org -/advbanner/*$~image -/advbanners/*$~image -/advert.$~script,~xmlhttprequest,domain=~advert.ae|~advert.club|~advert.com.tr|~advert.ee|~advert.ge|~advert.io|~advert.media|~advert.org.pl|~motortrader.com.my -/advert01. -/advert2. -/advert24. -/advert3. -/advert4. -/advert5. -/advert6. -/advert8. -/advert? -/advertbanner. -/advertising/banners/*$image -/advertisingWebRenderer.min.js -/advertisment/*$~image -/adverts.$~script,domain=~0xacab.org|~adverts.ie|~adverts.org.ua|~github.com|~gitlab.com -/adverts/*$~xmlhttprequest -/advrotator.js -/advrotator_banner_largo.htm -/advtBanner. -/adx2. -/adz/js/adz. -/adzones.js -/aff-ads. -/aff/banners/*$image -/aff/images/*$image -/aff_ad?$script -/aff_banner/*$image -/aff_banners/*$image -/affad? -/affbanners/*$image -/affiliate/ad/*$image -/affiliate/ads/*$image -/affiliate/banner/*$image -/affiliate/banners/*$image -/affiliateads/*$image -/affiliates/banner$image -/afr.php? -/afx_prid/*$script -/ajaxAd? -/ajs.php? -/ajs?zoneid= -/ak-ads-ns. -/amazon-ad-link-$stylesheet -/amazon-associates-link-$~stylesheet -/amp-ad-$script -/amp-connatix-$script -/amp4ads-host-v0.js -/ane-popup-banner.js -/ane-popup.js -/annonse. -/annonser. -/api-ads. -/api.ad. -/api.ads.$domain=~ads.instacart.com|~www.ads.com -/Api/Ad. -/api/ads? -/apopwin.js -/app/manga/themes/*/ads/pop.js -/apstag.js -/apu.php? -/arcads.js -/asset/ad/*$image -/assets/ads/*$~image,domain=~outlook.live.com -/asyncjs.php -/asyncspc.php -/auto.ad. -/awaps-ad-sdk-$script -/awe2.js -/ban.php? -/ban160.php -/ban300.html -/ban300.php -/ban728.html -/ban728.php -/ban728x90. -/banman/ad.aspx -/banner-ad.$~script -/banner-ads-rotator/*$script,stylesheet -/banner-ads/*$image,domain=~1agosto.com -/banner-affiliate-$image -/banner.asp?$third-party -/banner.cgi? -/banner.php$domain=~research.hchs.hc.edu.tw -/banner/affiliate/*$image,subdocument -/banner/html/zone?zid= -/banner/sponsors. -/banner_468. -/banner_ads/*$~xmlhttprequest,domain=~clickbd.com -/bannerad. -/bannerad3.js -/bannerads. -/bannerads/*$~xmlhttprequest,domain=~coldwellbankerhomes.com -/banners.*/go/page/* -/banners.*/piclist? -/banners.cgi? -/banners/468$image -/banners/728$image -/banners/ads-$~xmlhttprequest -/banners/ads. -/banners/adv/*$~xmlhttprequest -/banners/aff. -/banners/affil/*$image -/banners/affiliate/*$image -/bottom-ads.jpg -/bottom-ads.png -/bottom_ad.jpg -/bottom_ad.png -/bottomad.png -/bottomads.js -/bsa-plugin-pro-scripteo/frontend/js/script.js -/bsa-pro-scripteo/frontend/js/script.js -/btag.min.js$third-party -/buysellads.js -/callAdserver? -/cgi-bin/ad/*$~xmlhttprequest -/cgi-bin/ads.cgi -/click/zone? -/click?adv= -/clickadu300.aspx -/cms_ads.js -/code/https-v2.js?uid= -/code/native.js?h=$script -/code/pops.js?h=$script -/code/silent.js?h=$script -/combo?darla/* -/common/ad.asp -/common/ad.js$script -/common/ads? -/common_ad.js -/concert_ads-$script -/content-ads.js -/content/ads/*$~xmlhttprequest -/couponAd.php -/cpmbanners.js -/css/ads-$stylesheet -/css/adsense. -/css/adv. -/curveball/ads/*$image -/custom_ads.js -/data-file_123.js -/deliverad/fc.js -/delivery.ads. -/delivery.php?zone= -/delivery/ag.php -/delivery/apu.php -/delivery/avw.php -/delivery/fc.php -/delivery/lg.php -/dfp.min.js$third-party -/dfp_async.js -/dfpNew.min.js -/didna_config.js -/direct.hd?n= -/discourse-adplugin-$script -/displayad? -/displayAdFrame. -/dmcads_$script -/doubleclick.aspx -/doubleclick.min -/drsup-admanager-ajax.js -/dynamicad? -/ec5bcb7487ff.js -/embed_ad.php -/ero.htm -/erobanner.js -/exitpop.js -/exitpopunder.js -/exitpopup.js -/exitsplash.php -/exoads/*$script -/exobanner. -/exoclick.$~script,domain=~exoclick.bamboohr.co.uk|~exoclick.kayako.com -/exonb/backloaderforload.php -/expads-blocked.js -/export/ltv_popup.php -/exports/tour/*$third-party -/exports/tour_20/index.php -/external/ad. -/external/ads/*$image -/external_ad? -/external_ads. -/fel456.js$script -/fgh1ijKl.js -/flashad.asp -/flashad.js -/flashad3.jpg -/flashads.$domain=~flashads.co.id -/fleshlight.$domain=~fleshlight.com|~fleshlight.zendesk.com -/fload.js -/float_ad.js -/floatads. -/floating-ad-rotator-$script,stylesheet -/floatingad.js -/floatingads.js -/flyad.js -/footer-ad.$~script -/footer_ad.js -/footer_ad.php -/footer_ads.php -/footer_ads.png -/footerad. -/footerads. -/fro_lo.js -/froloa.js -/frontend_loader.js -/ftt2/js.php -/funcript*.php?pub= -/gdpr-ad-script.js -/get/?go=1&data= -/get?go=1&data= -/getad? -/getads? -/getAdsysCode? -/GetAdvertisingLeft? -/globals_ps_afc.js -/google-adsense.js -/google_adsense-$script -/google_caf.js? -/googleAdsManager.js -/googleafc.js -/googleafs.js -/gpt.js$script,xmlhttprequest -/gpt_ads-public.js -/GunosyAdsSDKv2.js -/headerads1.php -/homepage_ads/*$domain=~swedishbeauty.com -/house-ads/*$image -/hoverad.js -/hserver/channel= -/hserver/site= -/ht.js?site_ -/image/ad/*$image -/image/ads/*$image,domain=~edatop.com -/image/affiliate/*$image -/imageads/*$image -/images/ads-$domain=~ads.com -/images2/Ads/*$image -/img/ad/*$~xmlhttprequest,domain=~weblio.jp -/img/aff/*$image -/img_ad/*$image,domain=~daily.co.jp|~ehonnavi.net -/in/show/?mid=$third-party -/include/ad/*$script -/includes/ads/*$script -/index-ad-$stylesheet -/index-ad.jpg -/index-ad.js -/index-ad.png -/index_ad/*$image -/index_ads.js -/infinity.js.aspx? -/inhouse_ads/*$image -/inlineads.aspx -/insertads.js -/internAds.css -/istripper.gif -/jquery.ad.js -/jquery.adi.js -/jquery.adx.js -/jquery.dfp.js -/jquery.openxtag.js -/jquery.php/?uid= -/js.ad/size= -/js.ng/cat= -/js.ng/channel_ -/js.ng/pagepos= -/js3caf.js -/jsad.php -/jsAds-1.4.min.js -/jsads.js -/jshexi.hj?lb= -/jspopunder.js -/jspopunder.min.js -/keyade.js -/layerad.js -/lazyad-loader.js -/lazyad-loader.min.js -/lazyload.ads? -/left_ads.js -/leftad.jpg -/leftad.js -/leftad.png -/legion-advertising-atlasastro/*$script -/li.blogtrottr.com/imp? -/link?z=$subdocument -/linkad2.jpg -/livejasmin.$domain=~livejasmin.com -/livejasmin2.jpg -/livejasminpopupunder. -/localads.aspx -/log_ad? -/logoads.jpg -/logoads.png -/mads.php? -/maven/am.js -/mbads? -/mcad.php -/media/ads/*$image -/media_ads/*$image -/mgid.html -/microad.js -/mnpw3.js -/mobile-ad. -/mobile_ad. -/mobileads. -/mod_ijoomla_adagency_zone/*$~xmlhttprequest -/mod_pagepeel_banner/*$image,script -/module-ads-html-$script -/module/ads/*$~xmlhttprequest -/modules/ad/*$~xmlhttprequest -/modules/ads/*$~xmlhttprequest -/MPUAdHelper.js -/mysimpleads/mysa_output.php -/nativead. -/nativeads-v2.js -/nativeads.js -/nativeads/script/*$script -/nativebanner/ane-native-banner.js -/nb/frot_lod.js -/neverblock/*$script -/new/floatadv.js -/ntv.json?key= -/nugg.min.js -/Nuggad? -/nwm-fcn.min.js -/nwm-pw2.min.js -/nxst-advertising/dist/htlbid-advertising.min.js -/oiopub-direct/js.php -/oncc-ad.js -/openads.js -/owa.MessageAdList. -/p8network.js -/p?zoneId= -/page-ads. -/page-links-to/dist/new-tab.js -/page-peel$~xmlhttprequest -/page/bouncy.php? -/pagead/1p-user-list/*$image -/pagead/ads? -/pagead/conversion.js -/pagead/lvz? -/pagead/osd. -/pageear.js -/pageear/*$script -/pagepeel. -/pagepeelpro.js -/partnerad. -/partnerads/js/setcookie.js -/partneradwidget. -/partnerbanner.$domain=~toltech.cn -/partners/ads/*$image -/pcad.js? -/peel.php? -/peel_ads.js -/peelads/*$script -/pfe/current/*$third-party -/phpads/adx.js -/phpadsnew/*$image,script -/phpbb_ads/*$~xmlhttprequest -/pix/ads/*$image -/pixel/puclc? -/pixel/pure$third-party -/pixel/purs? -/pixel/purst? -/pixel/sbe? -/player/ads/*$~xmlhttprequest -/plg_adbutlerads/*$script,stylesheet -/plugin/ad/*$script -/plugins/ad-invalid-click-protector/*$script -/plugins/adrotate-pro/*$script -/plugins/adrotate/*$script -/plugins/ads/*$~xmlhttprequest -/plugins/adsanity-$script,stylesheet -/plugins/advanced-ads/*$domain=~wordpress.org -/plugins/ane-banners-entre-links/*$script,stylesheet -/plugins/ane-preroll$~xmlhttprequest -/plugins/cactus-ads/*$script,stylesheet -/plugins/cpx-advert/*$script -/plugins/dx-ads/*$script -/plugins/easyazon-$script,stylesheet -/plugins/meks-easy-ads-widget/*$stylesheet -/plugins/mts-wp-in-post-ads/*$script,stylesheet -/plugins/popunderpro/*$script -/plugins/thirstyaffiliates/*$script,stylesheet -/plugins/ultimate-popunder/*$~stylesheet -/plugins/wp-moreads/*$~stylesheet -/plugins/wp125/*$~stylesheet -/pop_8_2.js -/pop_ads.js -/popin-min.js -/popu.js -/popunder.min.js -/popunder1.js -/popunder2.js -/popunder5.js -/popunder7.min.js -/popunder? -/popup-domination/*$~stylesheet -/popup2.js -/popup3.js -/popup_ad.js -/popup_ad.php -/popup_code.php -/popupads.js -/popupunder.js -/prbt/v1/ads/? -/prebid-video.js -/prehead/ads_detect.js -/prerollad. -/prerollads. -/prism_ad/*$script -/processing/impressions.asp? -/production/ad-$script -/production/ads/*$script -/promo.php?c=$third-party -/promo/ads/*$~xmlhttprequest -/promo/affiframe. -/promotools. -/proxyadcall? -/public/ad/*$image -/public/ads/*$image -/publicidad.$~object,~stylesheet -/publicidad/*$~xmlhttprequest -/publicidad_$~stylesheet -/publicidade. -/publicidade/*$~xmlhttprequest -/publicidades/*$~xmlhttprequest -/puff_ad? -/punder.php -/push/p.js? -/pustrck.js -/rad_singlepageapp.js -/radioAdEmbed. -/radioAdEmbedGPT. -/railad.jpg -/RdmAdFeed.js -/rdrr/renderer.js -/RealMedia/ads/*$~xmlhttprequest -/redirect/?spot_id= -/redirect?tid= -/reklam.$domain=~github.com|~reklam.com.tr -/reklam/*$domain=~cloudflare.com|~github.com|~reklam.com.tr -/reklama/*$domain=~github.com -/reklama1.js -/reklama2.jpg -/reklama2.png -/reklama3.jpg -/reklama3.png -/reklama4.jpg -/reklama4.png -/reklame/*$~xmlhttprequest -/ren.gif? -/report_ad.js -/resources/ads/*$~xmlhttprequest -/responsive/ad_$subdocument -/responsive_ads.js -/right_ad. -/right_ads. -/rightad.js -/rightads.js -/rotatingad. -/s.ashx?btag -/SBA-WP-13.js -/sbar.json?key= -/sc-tagmanager/*$script -/script/aclib.js -/script/antd.js -/script/app_settings.js$third-party -/script/atg.js -/script/atga.js -/script/g0D.js -/script/g0dL0vesads.js -/script/intrf.js -/script/ippg.js -/script/java.php?$xmlhttprequest -/script/jeSus.js -/script/liB1.js -/script/liB2.js -/script/naN.js -/script/native_render.js -/script/native_server.js -/script/npa2.min.js -/script/nwsu.js -/script/suv4r.js -/script/thankYou.js -/script/uBlock.js -/script/wait.php?*=$xmlhttprequest -/script/xxAG1.js -/scripts/chatur.js -/sdk/push_web/?zid= -/select_adv? -/servead/request/*$script,subdocument -/serveads.php -/servlet/view/*$script -/set_adcode? -/sft-prebid.js -/show-ad.js -/show_ad.js -/show_ad? -/showban.asp? -/showbanner.js -/side-ads-$~xmlhttprequest -/side-ads/*$~xmlhttprequest -/side_ads/*$~xmlhttprequest -/sidead. -/sidead1.js -/sideads.js -/sidebar_ad.jpg -/sidebar_ad.png -/sidebar_ads/*$~xmlhttprequest -/site=*/size=*/viewid= -/site=*/viewid=*/size= -/size=*/random=*/viewid= -/skin/ad/*$image,script -/skin/adv/*$~xmlhttprequest -/skinad. -/skyadright. -/skyscraperad. -/slide_in_ads_close.gif -/slider_ad.js -/sliderad.js -/small_ad. -/smartlinks.epl? -/soralink.js -/sp/delivery/js.php -/spacedesc= -/spc.php -/spcjs.php -/specialctrl.js -/sponsor-ad$image -/sponsor-banner.jpg -/sponsor-banner.png -/sponsor-links.html -/sponsorad.jpg -/sponsorad.png -/sponsored-links. -/sponsored_ad. -/sponsored_link. -/sponsored_text. -/sponsoredlinks. -/sponsoredlinks? -/sponsors/ads/*$image -/squaread.jpg -/squaread.js -/static.ad. -/static/js/4728ba74bc.js$~third-party -/sticky_ads.js -/stickyad.js -/stickyads.js -/style_ad.css -/suurl4.php? -/suurl5.php -/suv4.js -/suv5.js -/sync2ad.js -/taboola-footer.js -/taboola-header.js -/taboola_7.4.1.js -/taboola_header.js -/taboolaarticle.min.js -/targetingAd.js -/targetpushad.js -/theologicalpresentation.com/* -/tmbi-a9-header-$script -/tncms/ads/*$script -/tnt.ads. -/top-ad. -/top-ads. -/top_ad. -/top_ads. -/triadshow.asp -/ttj?id= -/ut.js?cb= -/utx?cb=$third-party -/v2/a/push/js/*$third-party -/v3/ads? -/valnet-header-ads. -/vast/?zid= -/velvet_stack_cmp.js -/vendors~ads. -/vghd.gif -/vghd2.gif -/video-ad-overlay. -/video-ad. -/video-ads-player. -/video-js-ads. -/video.ads. -/video_ad. -/video_ads. -/video_slider3.js -/videoad.$domain=~videoad.in -/videoad/*$script -/videoads/*$~xmlhttprequest -/videojs.ads- -/videojs.sda.js -/view/ad/*$subdocument -/view_banner.php -/viewad.asp -/viewad.php -/virtuagirlhd. -/web/ads/*$image -/web_ads/*$image -/webads.htm -/webads.jpg -/webads.js -/webads/*$image,domain=~cccc.edu|~meatingplace.com -/webadverts/ads.pl? -/weborama.js -/welcome_ad.js -/widget-advert? -/widget/ads. -/wordpress-ads-plug-in/*$script,stylesheet -/wp-ad.min. -/wp-auto-affiliate-links/*$script,stylesheet -/wp-bannerize-$script,stylesheet -/wp-bannerize.$script,stylesheet -/wp-bannerize/*$script,stylesheet -/wp-content/ads/*$~xmlhttprequest -/wp-content/mbp-banner/*$image -/wp-content/plugins/amazon-auto-links/*$script,stylesheet -/wp-content/plugins/amazon-product-in-a-post-plugin/* -/wp-content/plugins/automatic-social-locker/* -/wp-content/plugins/banner-manager/*$script -/wp-content/plugins/bhcb/lock.js -/wp-content/plugins/bookingcom-banner-creator/* -/wp-content/plugins/bookingcom-text2links/* -/wp-content/plugins/fasterim-optin/*$~xmlhttprequest -/wp-content/plugins/m-wp-popup/*$~stylesheet -/wp-content/plugins/platinumpopup/*$script,stylesheet -/wp-content/plugins/popad/*$script,stylesheet -/wp-content/plugins/the-moneytizer/*$script -/wp-content/plugins/useful-banner-manager/* -/wp-content/plugins/wp-ad-guru/*$script,stylesheet -/wp-content/plugins/wp-super-popup-pro/*$script,stylesheet -/wp-content/plugins/wp-super-popup/*$~stylesheet -/wp-content/uploads/useful_banner_manager_banners/* -/wp-popup-scheduler/*$script,stylesheet -/wp_pro_ad_system/templates/*$script,stylesheet -/wpadgu-adblock.js -/wpadgu-clicks.js -/wpadgu-frontend.js -/wpbanners_show.php -/wppas.min.css -/wppas.min.js -/wpxbz-theme.js -/www/delivery/*$script,subdocument -/xads.php -/xpopunder.js -/xpopup.js -/yhs/ads? -/zcredirect? -/~cdn/ads/* -://a.*/ad-provider.js$third-party -://a.ads. -://ad-api- -://ad1. -://adn.*/zone/$subdocument -://ads.$~image,domain=~ads.8designers.com|~ads.ac.uk|~ads.adstream.com.ro|~ads.allegro.pl|~ads.am|~ads.amazon|~ads.apple.com|~ads.atmosphere.copernicus.eu|~ads.band|~ads.bestprints.biz|~ads.bikepump.com|~ads.brave.com|~ads.buscaempresas.co|~ads.business.bell.ca|~ads.cafebazaar.ir|~ads.colombiaonline.com|~ads.comeon.com|~ads.cvut.cz|~ads.doordash.com|~ads.dosocial.ge|~ads.dosocial.me|~ads.elevateplatform.co.uk|~ads.finance|~ads.google.cn|~ads.google.com|~ads.gree.net|~ads.gurkerl.at|~ads.harvard.edu|~ads.instacart.com|~ads.jiosaavn.com|~ads.kaipoke.biz|~ads.kazakh-zerno.net|~ads.kifli.hu|~ads.knuspr.de|~ads.listonic.com|~ads.magalu.com|~ads.mercadolivre.com.br|~ads.mgid.com|~ads.microsoft.com|~ads.midwayusa.com|~ads.mobilebet.com|~ads.mojagazetka.com|~ads.msstate.edu|~ads.mst.dk|~ads.mt|~ads.nc|~ads.nipr.ac.jp|~ads.olx.pl|~ads.pinterest.com|~ads.red|~ads.rohlik.cz|~ads.route.cc|~ads.safi-gmbh.ch|~ads.scotiabank.com|~ads.selfip.com|~ads.shopee.cn|~ads.shopee.co.th|~ads.shopee.com.br|~ads.shopee.com.mx|~ads.shopee.com.my|~ads.shopee.kr|~ads.shopee.ph|~ads.shopee.pl|~ads.shopee.sg|~ads.shopee.tw|~ads.shopee.vn|~ads.smartnews.com|~ads.snapchat.com|~ads.socialtheater.com|~ads.spotify.com|~ads.studyplus.co.jp|~ads.taboola.com|~ads.tiktok.com|~ads.typepad.jp|~ads.us.tiktok.com|~ads.viksaffiliates.com|~ads.vk.com|~ads.watson.ch|~ads.x.com|~badassembly.com|~caravansforsale.co.uk|~fusac.fr|~memo2.nl|~reempresa.org|~satmetrix.com|~seriouswheels.com -://ads2. -://adv.$domain=~adv.asahi.com|~adv.bet|~adv.blue|~adv.chunichi.co.jp|~adv.cincsys.com|~adv.cryptonetlabs.it|~adv.derfunke.at|~adv.design|~adv.digimatix.ru|~adv.ec|~adv.ee|~adv.gg|~adv.hokkaido-np.co.jp|~adv.kompas.id|~adv.lack-girl.com|~adv.mcr.club|~adv.mcu.edu.tw|~adv.michaelgat.com|~adv.msk.ru|~adv.neosystem.co.uk|~adv.peronihorowicz.com.br|~adv.rest|~adv.ru|~adv.tools|~adv.trinet.ru|~adv.ua|~adv.vg|~adv.vn.ua|~adv.yomiuri.co.jp|~advancedradiology.com|~advids.co|~farapp.com|~pracuj.pl|~r7.com|~typeform.com|~welaika.com -://affiliate.$third-party -://affiliates.$third-party -://affiliates2.$third-party -://banner.$third-party -://banners.$third-party -://news-*/process.js?id=$third-party -://news-*/v2-sw.js$third-party -://oascentral. -://promo.$~media,third-party,domain=~myshopify.com|~promo.com|~shopifycloud.com|~slidely.com -://pt.*?psid=$third-party -://uads.$third-party,xmlhttprequest -=half-page-ad& -?ab=1&zoneid= -?adspot_ -?adunitid= -?advertiser_id=$domain=~ads.pinterest.com -?bannerid= -?cs=*&abt=0&red=1&sm=$third-party -?service=ad& -?usid=*&utid= -?whichAd=freestar& -?wppaszoneid= -?wpstealthadsjs= -_ad_250. -_ad_300. -_ad_728_ -_ad_background. -_ad_banner. -_ad_bottom. -_ad_box. -_ad_choices. -_ad_header. -_ad_image_ -_ad_layer_ -_ad_leaderboard. -_ad_right. -_ad_side. -_ad_sidebar_ -_ad_skyscraper. -_ad_wrapper. -_adbanner_ -_adbanners. -_adcall. -_adchoice. -_adchoices. -_adhome. -_adlabel_ -_adnetwork. -_adpartner. -_adplugin. -_adright. -_ads.cgi -_ads.cms? -_ads.php? -_ads_reporting. -_ads_updater- -_adscommon. -_adscript. -_adserve. -_adserver. -_adskin. -_adskin_ -_adtitle. -_adv_open_x/ -_advertise-$domain=~linkedin.com -_advertise. -_advertisment.$~xmlhttprequest -_affiliate_ad. -_assets/ads/ -_asyncspc. -_background_ad. -_banner_ad. -_banner_ad_ -_Banner_Ads_ -_bannerad. -_BannerAd_ -_bannerads_ -_bottom_ads. -_bottom_ads_ -_commonAD. -_footer_ad_ -_google_ads. -_gpt_ads. -_header_ad. -_header_ad_ -_headerad. -_images/ad.$image -_images/ad_ -_images/ads/ -_layerad. -_left_ad. -_panel_ads. -_partner_ad. -_popunder_ -_popupunder. -_pushads. -_rectangle_ads. -_reklama_$domain=~youtube.com -_reporting_ads. -_rightad. -_rightad_ -_sidead. -_sidebar_ad. -_sidebar_ad_ -_skinad. -_small_ad. -_square_ad. -_sticky_ad. -_StickyAd. -_text_ads. -_textads. -_top_ad. -_vertical_ad. -_web-advert. -_widget_ad. -||cacheserve.*/promodisplay/ -||cacheserve.*/promodisplay? -||online.*/promoredirect?key= -! https://github.com/easylist/easylist/issues/11123 -/ed/fol457. -! ad-ace (to avoid bait) -/plugins/ad-ace/assets/js/coupons.js -/plugins/ad-ace/assets/js/slot-slideup.js -/plugins/ad-ace/includes/shoppable-images/* -! readcomiconline.li -/Ads/bid300c.aspx -/Ads/bid728.aspx -! Amazon -/e/cm?$subdocument -/e/ir?$image,script -/in/track?data= -/senddata?site=banner -/senddata?site=inpage -! propu.sh variants -/ntfc.php? -! Clickadu servers -.com/src/ppu/ -/aas/r45d/vki/*$third-party -/bultykh/ipp24/7/*$third-party -/ceef/gdt3g0/tbt/*$third-party -/fyckld0t/ckp/fd3w4/*$third-party -/i/npage/*$script,third-party -/lv/esnk/*$script,third-party -/pn07uscr/f/tr/zavbn/*$third-party -/q/tdl/95/dnt/*$third-party -/sc4fr/rwff/f9ef/*$third-party -/script/awesome.js -/ssp/req/*/?pb=$third-party -/t/9/heis/svewg/*$third-party -! streamhub.gg/qehyheswr3i8 / uploadhub.to/842q2djqdfub -/tabu/display.js -! ezoic -/cmbdv2.js -/greenoaks.gif? -! (NSFW) exoads on donstick.com sites -/myvids/click/*$script,subdocument -/myvids/mltbn/*$script,subdocument -/myvids/mltbn2/*$script,subdocument -/myvids/rek/*$script,subdocument -! https://github.com/easylist/easylist/commit/6295313 -://rs-stripe.wsj.com/stripe/image? -! Dodgy sites -/?l=*&s=*&mprtr=$~third-party,xmlhttprequest -/push-skin/skin.min.js -/search/tsc.php? -! https://github.com/easylist/easylist/issues/5054 -/full-page-script.js$script -! bc.vc (https://github.com/NanoMeow/QuickReports/issues/198) -/earn.php?z=$popup,subdocument -! https://github.com/uBlockOrigin/uAssets/issues/2364 -/pop2.js?r= -! Ad-insertion script (see on: celebrityweightloss.com, myfirstclasslife.com, cultofmac.com) -/beardeddragon/armadillo.js -/beardeddragon/drake.js -/beardeddragon/gilamonster.js -/beardeddragon/tortoise.js -/beardeddragon/turtle.js -/detroitchicago/anaheim.js -/detroitchicago/augusta.js -/detroitchicago/boise.js -/detroitchicago/denver.js -/detroitchicago/gateway.js -/detroitchicago/houston.js -/detroitchicago/kenai.js -/detroitchicago/memphis.js -/detroitchicago/minneapolis.js -/detroitchicago/portland.js -/detroitchicago/raleigh.js -/detroitchicago/reportads.js -/detroitchicago/rochester.js -/detroitchicago/sidebarwall.js -/detroitchicago/springfield.js -/detroitchicago/stickyfix.js -/detroitchicago/tampa.js -/detroitchicago/tulsa.js -/detroitchicago/tuscon.js -/detroitchicago/vista.js -/detroitchicago/vpp.gif? -/detroitchicago/wichita.js -/edmonton.webp$script -/ezcl.webp? -/ezf-min.$script -/ezo/*$script,~third-party,domain=~yandex.by|~yandex.com|~yandex.kz|~yandex.ru|~yandex.ua -/ezoic/*$script,~third-party -/jellyfish.webp$script -/parsonsmaize/abilene.js -/parsonsmaize/chanute.js -/parsonsmaize/mulvane.js -/parsonsmaize/olathe.js -/tardisrocinante/austin.js -/tardisrocinante/vitals.js -! prebid scripts --dfp-prebid- --prebid/ -.prebid-bundle. -.prebid.$domain=~prebid.org -/_js/prbd_6.19.0.js -/ad/postbid_handler1.0.9.js -/AudienceNetworkPrebid. -/gpt-prebid.js -/pbjsandwich. -/plugins/prebidjs/*$script -/porpoiseant/*$script -/prebid-js-$script -/prebid-min-$script -/prebid-pro. -/prebid-sdk. -/prebid.$domain=~prebid.org -/prebid/*$script -/prebid1. -/prebid2. -/prebid3. -/prebid35. -/prebid4. -/prebid5. -/prebid6. -/prebid7. -/prebid8.$script -/prebid? -/prebid_$script,third-party -/prebid_v4. -/prebidAdcall. -/prebidLibrary. -/prebidlink/*$script -/pubfig.min.js -/tagman/*$domain=~abelssoft.de -_prebid.js -_prebid8. -! Invideo adverts -/stn-player. -&sadbl=1&chu= -?zoneid=*&ab=1 -! linkbucks.com script -/webservices/jsparselinks.aspx?$script -! adinsertion used on gizmodo.in lifehacker.co.in -/datomata.widget.js -! domain parking redirection -/affiliate/referral.asp?site=*&aff_id= -/bdv_rd2.dbm?enparms -/jscheck.php?enc=$xmlhttprequest -! White papers insert -/sl/assetlisting/? -! Peel script -/jquery.peelback. -! Anti-Adblock --adblocker-detection/ --detect-adblock. -/abtest_ab.js -/ad-blocking-advisor/*$script,stylesheet -/ad-blocking-alert/*$stylesheet -/adb_detector. -/adblock-detect. -/adblock-detector. -/adblock-message. -/adblock-notify-by-bweb/*$script,stylesheet -/adblock.gif? -/adblock_detect. -/adblock_detector. -/adblock_detector2. -/adblock_logger. -/adblockdetect. -/adblockdetection. -/adBlockDetector/*$script -/adblocker-leader. -/adblockkiller. -/adbuddy.$domain=~adbuddy.be|~adbuddy.beeldstudio.be -/ads-blocking-detector. -/anti-adblock/*$~stylesheet -/anti_ab. -/blockblock/blockblock.jquery.js -/BlockerBanner/*$xmlhttprequest -/Disable%2BAdblock. -/disabled_adBlock. -/jgcabd-detect-$script -/no-adblock/*$script,stylesheet -_atblockdetector/ - -! *** easylist:easylist/easylist_general_block_dimensions.txt *** --120-600. --120_600_ --120x600- --120x600. --120x600_ --160-600. --160x600- --160x600. --160x600_ --300-250. --300x250-$~xmlhttprequest --300x250_ --300x600. --460x68. --468-100. --468-60- --468-60. --468-60_ --468_60. --468x60- --468x60. --468x60/ --468x60_ --468x70. --468x80-$image --468x80. --468x80/ --468x80_ --468x90. --480x60- --480x60. --480x60/ --480x60_ --486x60. --500x100. --600x70. --600x90- --720x90- --720x90. --728-90- --728-90. --728.90. --728x90- --728x90. --728x90/ --728x90_ --729x91- --780x90- --980x60- --988x60. -.120x600. -.160x600. -.160x600_ -.300x250. -.300x250_ -.468x60- -.468x60. -.468x60/ -.468x60_ -.468x80- -.468x80. -.468x80/ -.468x80_ -.480x60- -.480x60. -.480x60/ -.480x60_ -.728x90- -.728x90/ -.728x90_ -.900x100. -/120-600- -/120-600. -/120_600. -/120_600/* -/120_600_ -/120x600- -/120x600. -/120x600/* -/120x600_ -/125x600- -/125x600_ -/130x600- -/160-600- -/160-600. -/160_600. -/160_600_ -/160x400- -/160x400_ -/160x600- -/160x600. -/160x600/* -/160x600_ -/190_900. -/300-250- -/300-250. -/300-600_ -/300_250_ -/300x150_ -/300x250- -/300x250.$image -/300x250_ -/300x250b. -/300x350. -/300x600- -/300x600_ -/300xx250. -/320x250. -/335x205_ -/336x280- -/336x280. -/336x280_ -/428x60. -/460x60. -/460x80_ -/468-20. -/468-60- -/468-60. -/468-60_ -/468_60. -/468_60_ -/468_80. -/468_80/* -/468x060. -/468x060_ -/468x150- -/468x280. -/468x280_ -/468x60- -/468x60.$~script -/468x60/* -/468x60_ -/468x70- -/468x72. -/468x72_ -/468x80- -/468x80. -/468x80_ -/470x030_ -/480x030. -/480x030_ -/480x60- -/480x60. -/480x60/* -/480x60_ -/480x70_ -/486x60_ -/496_98_ -/600-160- -/600-60. -/600-90. -/600_120_ -/600_90_ -/600x75_ -/600x90. -/60x468. -/640x100/* -/640x80- -/660x120_ -/660x60. -/700_100_ -/700_200. -/700x100. -/728-90- -/728-90. -/728-90/* -/728-90_ -/728_200. -/728_200_ -/728_90. -/728_90/* -/728_90_ -/728x90- -/728x90. -/728x90/* -/728x90_ -/750-100. -/750_150. -/750x100. -/760x120. -/760x120_ -/760x90_ -/768x90- -/768x90. -/780x90. -/800x160/* -/800x90. -/80x468_ -/960_60_ -/980x90. -/w300/h250/* -/w728/h90/* -=300x250/ -=336x280, -=468x60/ -=468x60_ -=468x80_ -=728x90/ -_120_600. -_120_600_ -_120x240. -_120x240_ -_120x500. -_120x600- -_120x600. -_120x600_ -_125x600_ -_128x600. -_140x600. -_140x600_ -_150x700_ -_160-600. -_160_600. -_160_600_ -_160x300. -_160x300_ -_160x350. -_160x400. -_160x600- -_160x600. -_160x600/ -_160x600_ -_300-250- -_300x250- -_300x250. -_300x250_ -_300x600. -_300x600_ -_320x250_ -_323x120_ -_336x120. -_350_100. -_350_100_ -_350x100. -_400-80. -_400x60. -_400x68. -_420x80. -_420x80_ -_438x50. -_438x60. -_438x60_ -_460_60. -_460x60. -_468-60. -_468-60_ -_468_60- -_468_60. -_468_60_ -_468_80. -_468_80_ -_468x060- -_468x060. -_468x060_ -_468x100. -_468x100_ -_468x118. -_468x120. -_468x60- -_468x60. -_468x60/ -_468x60_ -_468x60b. -_468x80- -_468x80. -_468x80/ -_468x80_ -_468x90. -_468x90_ -_480_60. -_480_80_ -_480x60- -_480x60. -_480x60/ -_480x60_ -_486x60. -_486x60_ -_700_100_ -_700_150_ -_700_200_ -_720_90. -_720x90. -_720x90_ -_728-90. -_728-90_ -_728_90. -_728_90_ -_728x60. -_728x90- -_728x90. -_728x90/ -_728x90_ -_750x100. -_760x100. -_768x90_ -_800x100. -_800x80_ - -! *** easylist:easylist/easylist_general_block_popup.txt *** -&adb=y&adb=y^$popup -&fp_sid=pop$popup,third-party -&popunder=$popup -&popundersPerIP=$popup -&zoneid=*&ad_$popup -&zoneid=*&direct=$popup -.co/ads/$popup -.com/ads?$popup -.fuse-cloud.com/$popup -.net/adx.php?$popup -.prtrackings.com$popup -/?placement=*&redirect$popup -/?redirect&placement=$popup -/?zoneid=*&timeout=$popup -/_xa/ads?$popup -/a/display.php?$popup -/ad.php?tag=$popup -/ad.php?zone$popup -/ad/display.php$popup -/ad/window.php?$popup -/ad_pop.php?$popup -/adclick.$popup -/adClick/*$popup -/adClick?$popup -/AdHandler.aspx?$popup -/adpreview?$popup -/ads/click?$popup -/adServe/*$popup -/adserver.$popup -/AdServer/*$popup,third-party -/adstream_sx.ads/*$popup -/adx.php?source=$popup -/aff_ad?$popup -/afu.php?$popup -/api/users?token=$popup -/click?adv=$popup -/gtm.js?$popup -/links/popad$popup -/out?zoneId=$popup -/pop-imp/*$popup -/pop.go?ctrlid=$popup -/popunder.$popup -/popunder/in/click/*$popup -/popunder_$popup -/popupads.$popup -/prod/go.html?$popup -/prod/redirect.html?lu=$popup -/redirect/?spot_id=$popup -/redirect?tid=$popup -/show?bver=$popup -/smartpop/*$popup -/tr?id=*&tk=$popup -/zcredirect?$popup -/zcvisitor/*$popup -/zp-redirect?$popup -://adn.*/zone/$popup -://ads.$popup,domain=~smartnews.com -://adv.$popup,domain=~adv.kompas.id|~adv.lack-girl.com -! Commonly used popup scripts on movie/tv streaming sites -|javascript:*setTimeout$popup -|javascript:*window.location$popup -! Used with many websites to generate multiple popups -|data:text$popup,domain=~clker.com -|dddata:text$popup -!------------------------General element hiding rules-------------------------! -! *** easylist:easylist/easylist_general_hide.txt *** -###AC_ad -###AD_160 -###AD_300 -###AD_468x60 -###AD_G -###AD_L -###AD_ROW -###AD_Top -###AD_text -###ADbox -###Ad-3-Slider -###Ad-4-Slider -###Ad-Container -###Ad-Content -###Ad-Top -###AdBanner -###AdBar -###AdBigBox -###AdBillboard -###AdBlock -###AdBottomLeader -###AdBottomRight -###AdBox2 -###AdColumn -###AdContainerTop -###AdContent -###AdContent_0_0_pnlDiv -###AdDisclaimer -###AdHeader -###AdLayer1 -###AdLayer2 -###AdMiddle -###AdPanel -###AdPopUp -###AdRectangleBanner -###AdSense1 -###AdSense2 -###AdSense3 -###AdSenseDiv -###AdServer -###AdServer_Banner_1 -###AdServer_Banner_2 -###AdServer_Banner_3 -###AdServer_Banner_4 -###AdServer_Banner_5 -###AdServer_Banner_6 -###AdServer_Banner_7 -###AdServer_Banner_8 -###AdServer_Banner_9 -###AdSkyscraper -###AdSlot_megabanner -###AdSpaceLeaderboard -###AdTop -###AdTopLeader -###AdWidgetContainer -###AdWrapperSuperCA -###AdZone1 -###AdZone2 -###Ad_BelowContent -###Ad_Block -###Ad_TopLeaderboard -###Adbanner -###Adcode -###Adlabel -###AdsBannerTop -###AdsBillboard -###AdsBottomContainer -###AdsContent -###AdsDiv -###AdsFrame -###AdsPubperform -###AdsRight -###AdsSky -###AdsTopContainer -###AdsWrap -###Ads_BA_BS -###Ads_BA_BUT -###Ads_BA_BUT2 -###Ads_BA_BUT_box -###Ads_BA_CAD -###Ads_BA_CAD2 -###Ads_BA_CAD2_Text -###Ads_BA_FLB -###Ads_BA_SKY -###Ads_TFM_BS -###Ads_google_bottom_wide -###Adsense300x250 -###AdsenseBottom -###AdsenseTop -###Adsterra -###Adv10 -###Adv11 -###Adv8 -###Adv9 -###AdvArea -###AdvBody -###AdvContainer -###AdvFooter -###AdvFrame1 -###AdvHead -###AdvHeader -###Adv_Footer -###Advert1 -###AdvertMid1 -###AdvertMid2 -###AdvertPanel -###AdvertText -###AdvertiseFrame -###Advertisement1 -###Advertisement2 -###AdvertisementDiv -###AdvertisementLeaderboard -###Advertisements -###AdvertisingDiv_0 -###Advertorial -###Advertorials -###AnchorAd -###ArticleContentAd -###Banner728x90 -###BannerAd -###BannerAds -###BannerAdvert -###BannerAdvertisement -###BigBoxAd -###BigboxAdUnit -###BodyAd -###BodyTopAds -###Body_Ad8_divAdd -###BotAd -###BottomAdContainer -###BottomRightAdWrapper -###ButtonAd -###ContentAd -###Content_CA_AD_0_BC -###Content_CA_AD_1_BC -###DFP_top_leaderboard -###FooterAd -###FooterAdBlock -###FooterAdContainer -###GoogleAd -###GoogleAd1 -###GoogleAd2 -###GoogleAd3 -###GoogleAdRight -###GoogleAdTop -###GoogleAdsense -###HP1-ad -###HP2-ad -###HeadAd -###HeaderAD -###HeaderAd -###HeaderAdBlock -###HeaderAdsBlock -###HeroAd -###HomeAd1 -###HouseAd -###IFrameAd -###IFrameAd1 -###IK-ad-area -###IK-ad-block -###IM_AD -###LargeRectangleAd -###LayoutBottomAdBox -###LayoutHomeAdBoxBottom -###LeaderboardAdvertising -###LeftAd -###LeftAd1 -###MPUAdSpace -###MPUadvertising -###MPUadvertisingDetail -###MainAd -###MainAd1 -###MainContent_ucTopRightAdvert -###MediumRectangleAD -###MidPageAds -###MiddleRightRadvertisement -###Mpu_Bottom -###Mpu_Top -###MyAdsId3 -###NR-Ads -###NavAD -###OAS2 -###OASMiddleAd -###OASRightAd -###PaneAdvertisingContainer -###PromotionAdBox -###PushDownAd -###RadAdSkyscraper -###RightAd -###RightAdBlock -###RightAdSpace -###RightAdvertisement -###SidebarAd -###SidebarAdContainer -###SitenavAdslot -###SkyAd -###SkyscraperAD -###SponsoredAd -###SponsoredAds -###SponsoredLinks -###SponsorsAds -###StickyBannerAd -###Top-ad -###Top1AdWrapper -###TopADs -###TopAd -###TopAd0 -###TopAdBox -###TopAdContainer -###TopAdDiv -###TopAdPlacement -###TopAdPos -###TopAdTable -###TopAdvert -###TopBannerAd -###TopRightRadvertisement -###VPNAdvert -###WelcomeAd -###aad-header-1 -###aad-header-2 -###aad-header-3 -###ab_adblock -###above-comments-ad -###above-fold-ad -###above-footer-ads -###above-the-fold-ad -###aboveAd -###aboveNodeAds -###above_button_ad -###aboveplayerad -###abovepostads -###acm-ad-tag-lawrence_dfp_mobile_arkadium -###ad--article--home-mobile-paramount-wrapper -###ad--article-bottom-wrapper -###ad--article-top -###ad--sidebar -###ad-0 -###ad-1 -###ad-125x125 -###ad-160 -###ad-160x600 -###ad-2 -###ad-2-160x600 -###ad-250 -###ad-250x300 -###ad-3 -###ad-3-300x250 -###ad-300 -###ad-300-250 -###ad-300-additional -###ad-300-detail -###ad-300-sidebar -###ad-300X250-2 -###ad-300a -###ad-300b -###ad-300x250 -###ad-300x250-0 -###ad-300x250-2 -###ad-300x250-b -###ad-300x250-sidebar -###ad-300x250-wrapper -###ad-300x250_mid -###ad-300x250_mobile -###ad-300x250_top -###ad-300x600_top -###ad-4 -###ad-5 -###ad-6 -###ad-7 -###ad-728 -###ad-728-90 -###ad-728x90 -###ad-8 -###ad-9 -###ad-Content_1 -###ad-Content_2 -###ad-Rectangle_1 -###ad-Rectangle_2 -###ad-Superbanner -###ad-a -###ad-ads -###ad-advertorial -###ad-affiliate -###ad-after -###ad-anchor -###ad-around-the-web -###ad-article -###ad-article-in -###ad-aside-1 -###ad-background -###ad-ban -###ad-banner-1 -###ad-banner-atf -###ad-banner-bottom -###ad-banner-btf -###ad-banner-desktop -###ad-banner-image -###ad-banner-placement -###ad-banner-top -###ad-banner-wrap -###ad-banner_atf-label -###ad-bar -###ad-base -###ad-bb-content -###ad-below-content -###ad-bg -###ad-big -###ad-bigbox -###ad-bigsize -###ad-billboard -###ad-billboard-atf -###ad-billboard-bottom -###ad-billboard01 -###ad-blade -###ad-block -###ad-block-125 -###ad-block-2 -###ad-block-aa -###ad-block-bottom -###ad-block-container -###ad-border -###ad-bottom -###ad-bottom-banner -###ad-bottom-fixed -###ad-bottom-right-container -###ad-bottom-wrapper -###ad-box -###ad-box-1 -###ad-box-2 -###ad-box-bottom -###ad-box-halfpage -###ad-box-leaderboard -###ad-box-left -###ad-box-rectangle -###ad-box-rectangle-2 -###ad-box-right -###ad-box1 -###ad-box2 -###ad-boxes -###ad-break -###ad-bs -###ad-btm -###ad-buttons -###ad-campaign -###ad-carousel -###ad-case -###ad-center -###ad-chips -###ad-circfooter -###ad-code -###ad-col -###ad-container-banner -###ad-container-fullpage -###ad-container-inner -###ad-container-leaderboard -###ad-container-mpu -###ad-container-outer -###ad-container-overlay -###ad-container-top-placeholder -###ad-container1 -###ad-contentad -###ad-desktop-bottom -###ad-desktop-takeover-home -###ad-desktop-takeover-int -###ad-desktop-top -###ad-desktop-wrap -###ad-discover -###ad-display-ad -###ad-display-ad-placeholder -###ad-div-leaderboard -###ad-drawer -###ad-ear -###ad-extra-flat -###ad-featured-right -###ad-fixed-bottom -###ad-flex-top -###ad-flyout -###ad-footer-728x90 -###ad-framework-top -###ad-front-btf -###ad-front-footer -###ad-full-width -###ad-fullbanner-btf -###ad-fullbanner-outer -###ad-fullbanner2 -###ad-fullwidth -###ad-googleAdSense -###ad-gutter-left -###ad-gutter-right -###ad-halfpage -###ad-halfpage1 -###ad-halfpage2 -###ad-head -###ad-header-1 -###ad-header-2 -###ad-header-3 -###ad-header-left -###ad-header-mad -###ad-header-mobile -###ad-header-right -###ad-holder -###ad-horizontal -###ad-horizontal-header -###ad-horizontal-top -###ad-incontent -###ad-index -###ad-inline-block -###ad-label2 -###ad-large-banner-top -###ad-large-header -###ad-lb-secondary -###ad-lead -###ad-leadboard1 -###ad-leadboard2 -###ad-leader -###ad-leader-atf -###ad-leader-container -###ad-leader-wrapper -###ad-leaderboard -###ad-leaderboard-atf -###ad-leaderboard-bottom -###ad-leaderboard-container -###ad-leaderboard-footer -###ad-leaderboard-header -###ad-leaderboard-spot -###ad-leaderboard-top -###ad-leaderboard970x90home -###ad-leaderboard970x90int -###ad-leaderboard_bottom -###ad-leadertop -###ad-lrec -###ad-m-rec-content -###ad-main -###ad-main-bottom -###ad-main-top -###ad-manager -###ad-masthead -###ad-medium -###ad-medium-lower -###ad-medium-rectangle -###ad-medrec -###ad-medrec__first -###ad-mid -###ad-mid-rect -###ad-middle -###ad-midpage -###ad-minibar -###ad-module -###ad-mpu -###ad-mrec -###ad-mrec2 -###ad-new -###ad-north -###ad-one -###ad-other -###ad-output -###ad-overlay -###ad-p3 -###ad-page-1 -###ad-pan3l -###ad-panel -###ad-pencil -###ad-performance -###ad-performanceFullbanner1 -###ad-performanceRectangle1 -###ad-placeholder -###ad-placeholder-horizontal -###ad-placeholder-vertical -###ad-placement -###ad-plate -###ad-player -###ad-popup -###ad-popup-home -###ad-popup-int -###ad-post -###ad-promo -###ad-push -###ad-pushdown -###ad-r -###ad-rec-atf -###ad-rec-btf -###ad-rec-btf-top -###ad-rect -###ad-rectangle -###ad-rectangle1 -###ad-rectangle1-outer -###ad-rectangle2 -###ad-rectangle3 -###ad-results -###ad-right -###ad-right-bar-tall -###ad-right-container -###ad-right-sidebar -###ad-right-top -###ad-right2 -###ad-right3 -###ad-rotator -###ad-row -###ad-section -###ad-separator -###ad-shop -###ad-side -###ad-side-text -###ad-sidebar -###ad-sidebar-btf -###ad-sidebar-container -###ad-sidebar-mad -###ad-sidebar-mad-wrapper -###ad-sidebar1 -###ad-sidebar2 -###ad-site-header -###ad-skin -###ad-skm-below-content -###ad-sky -###ad-skyscraper -###ad-slideshow -###ad-slideshow2 -###ad-slot -###ad-slot-1 -###ad-slot-2 -###ad-slot-3 -###ad-slot-4 -###ad-slot-5 -###ad-slot-502 -###ad-slot-lb -###ad-slot-right -###ad-slot-top -###ad-slot1 -###ad-slot2 -###ad-slot4 -###ad-slug-wrapper -###ad-small-banner -###ad-space -###ad-space-big -###ad-splash -###ad-sponsors -###ad-spot -###ad-spot-bottom -###ad-spot-one -###ad-standard -###ad-standard-wrap -###ad-stickers -###ad-sticky-footer-container -###ad-story-right -###ad-story-top -###ad-stripe -###ad-target -###ad-teaser -###ad-text -###ad-three -###ad-top -###ad-top-250 -###ad-top-300x250 -###ad-top-728 -###ad-top-banner -###ad-top-leaderboard -###ad-top-left -###ad-top-lock -###ad-top-low -###ad-top-right -###ad-top-right-container -###ad-top-text-low -###ad-top-wrap -###ad-top-wrapper -###ad-tower -###ad-two -###ad-undefined -###ad-unit-right-bottom-160-600 -###ad-unit-right-middle-300-250 -###ad-unit-top-banner -###ad-vip-article -###ad-west -###ad-wide-leaderboard -###ad-wrap -###ad-wrap2 -###ad-wrapper -###ad-wrapper-728x90 -###ad-wrapper-footer-1 -###ad-wrapper-main-1 -###ad-wrapper-sidebar-1 -###ad-wrapper-top-1 -###ad1-placeholder -###ad125x125 -###ad160 -###ad160600 -###ad160x600 -###ad250 -###ad300 -###ad300-250 -###ad300_250 -###ad336 -###ad336x280 -###ad468 -###ad468x60 -###ad480x60 -###ad6 -###ad600 -###ad728 -###ad72890 -###ad728Box -###ad728Header -###ad728Mid -###ad728Top -###ad728Wrapper -###ad728X90 -###ad728foot -###ad728h -###ad728top -###ad728x90 -###ad728x90_1 -###ad90 -###ad900 -###ad970 -###ad970x90_exp -###adATF300x250 -###adATF728x90 -###adATFLeaderboard -###adAside -###adBTF300x250 -###adBadges -###adBanner1 -###adBanner336x280 -###adBannerBottom -###adBannerHeader -###adBannerSpacer -###adBannerTable -###adBannerTop -###adBar -###adBelt -###adBillboard -###adBlock01 -###adBlockBanner -###adBlockContainer -###adBlockContent -###adBlockOverlay -###adBlocks -###adBottom -###adBox -###adBrandDev -###adBrandingStation -###adBreak -###adCarousel -###adChannel -###adChoiceFooter -###adChoices -###adChoicesIcon -###adChoicesLogo -###adCol -###adColumn -###adColumn3 -###adComponentWrapper -###adContainer -###adContainer_1 -###adContainer_2 -###adContainer_3 -###adContent -###adContentHolder -###adContext -###adDiv -###adDiv0 -###adDiv1 -###adDiv300 -###adDiv4 -###adDiv728 -###adDivContainer -###adFiller -###adFlashDiv -###adFooter -###adFot -###adFrame -###adGallery -###adGoogleText -###adHeader -###adHeaderTop -###adHeaderWrapper -###adHeading -###adHeightstory -###adHolder -###adHolder1 -###adHolder2 -###adHolder3 -###adHolder4 -###adHolder5 -###adHolder6 -###adHome -###adHomeTop -###adIframe -###adInhouse -###adIsland -###adLB -###adLabel -###adLarge -###adLayer -###adLayerTop -###adLayout -###adLeader -###adLeaderTop -###adLeaderboard -###adLeaderboard-middle -###adLeft -###adLink -###adLink1 -###adLounge -###adLrec -###adMOBILETOP -###adMPU -###adMPUHolder -###adMain -###adMarketplace -###adMed -###adMedRect -###adMediumRectangle -###adMeld -###adMessage -###adMid2 -###adMpu -###adMpuBottom -###adOuter -###adPartnerLinks -###adPlaceHolder1 -###adPlaceHolder2 -###adPlacement_1 -###adPlacement_2 -###adPlacement_3 -###adPlacement_4 -###adPlacement_7 -###adPlacement_8 -###adPlacement_9 -###adPlacer -###adPopover -###adPopup -###adPosition0 -###adPosition14 -###adPosition5 -###adPosition6 -###adPosition7 -###adPosition9 -###adPush -###adPushdown1 -###adReady -###adRight -###adRight1 -###adRight2 -###adRight3 -###adRight4 -###adRight5 -###adScraper -###adSection -###adSenseBox -###adSenseModule -###adSenseWrapper -###adSet -###adSide -###adSide1-container -###adSideButton -###adSidebar -###adSite -###adSkin -###adSkinBackdrop -###adSkinLeft -###adSkinRight -###adSky -###adSkyPosition -###adSkyscraper -###adSlider -###adSlot-dmpu -###adSlot-dontMissLarge -###adSlot-leader -###adSlot-leaderBottom -###adSlot1 -###adSlot2 -###adSlot3 -###adSlot4 -###adSlug -###adSpace -###adSpaceBottom -###adSpaceHeight -###adSpacer -###adSpecial -###adSqb -###adSquare -###adStrip -###adSuperbanner -###adTag -###adText -###adTextLink -###adTile -###adTop -###adTopContent -###adTopLREC -###adTopLarge -###adTopModule -###adTower -###adUnderArticle -###adUnit -###adWideSkyscraper -###adWrap -###adWrapper -###adWrapperSky -###ad_1 -###ad_160 -###ad_160_600 -###ad_160_600_2 -###ad_160x160 -###ad_160x600 -###ad_2 -###ad_250 -###ad_250x250 -###ad_3 -###ad_300 -###ad_300_250 -###ad_300_250_1 -###ad_300x250 -###ad_336 -###ad_4 -###ad_468_60 -###ad_468x60 -###ad_5 -###ad_728 -###ad_728_90 -###ad_728x90 -###ad_8 -###ad_9 -###ad_B1 -###ad_Banner -###ad_Bottom -###ad_LargeRec01 -###ad_Middle -###ad_Middle1 -###ad_Pushdown -###ad_R1 -###ad_Right -###ad_Top -###ad_Wrap -###ad__billboard -###ad_ad -###ad_adsense -###ad_after_header_1 -###ad_anchor -###ad_area -###ad_article1_1 -###ad_article1_2 -###ad_article2_1 -###ad_article2_2 -###ad_article3_1 -###ad_article3_2 -###ad_banner -###ad_banner_1 -###ad_banner_468x60 -###ad_banner_728x90 -###ad_banner_bot -###ad_banner_top -###ad_banners -###ad_bar -###ad_bar_rect -###ad_before_header -###ad_bg -###ad_bg_image -###ad_big -###ad_bigbox -###ad_bigbox_companion -###ad_bigrectangle -###ad_billboard -###ad_block -###ad_block_0 -###ad_block_1 -###ad_block_2 -###ad_block_mpu -###ad_bnr_atf_01 -###ad_bnr_atf_02 -###ad_bnr_atf_03 -###ad_bnr_btf_07 -###ad_bnr_btf_08 -###ad_body -###ad_bottom -###ad_box -###ad_box_top -###ad_branding -###ad_bsb -###ad_bsb_cont -###ad_btmslot -###ad_button -###ad_buttons -###ad_cell -###ad_center -###ad_choices -###ad_close -###ad_closebtn -###ad_comments -###ad_cont -###ad_cont_superbanner -###ad_container -###ad_container_0 -###ad_container_300x250 -###ad_container_side -###ad_container_sidebar -###ad_container_top -###ad_content -###ad_content_1 -###ad_content_2 -###ad_content_3 -###ad_content_fullsize -###ad_content_primary -###ad_content_right -###ad_content_top -###ad_content_wrap -###ad_contentslot_1 -###ad_contentslot_2 -###ad_creative_2 -###ad_creative_3 -###ad_creative_5 -###ad_dfp_rec1 -###ad_display_300_250 -###ad_display_728_90 -###ad_div -###ad_div_bottom -###ad_div_top -###ad_feedback -###ad_foot -###ad_footer -###ad_footer1 -###ad_footerAd -###ad_frame -###ad_frame1 -###ad_from_bottom -###ad_fullbanner -###ad_gallery -###ad_gallery_bot -###ad_global_300x250 -###ad_global_above_footer -###ad_global_header -###ad_global_header1 -###ad_global_header2 -###ad_h3 -###ad_halfpage -###ad_head -###ad_header -###ad_header_1 -###ad_header_container -###ad_holder -###ad_home -###ad_home_middle -###ad_horizontal -###ad_houseslot_a -###ad_houseslot_b -###ad_hp -###ad_img -###ad_interthread -###ad_island -###ad_island2 -###ad_label -###ad_large -###ad_large_rectangular -###ad_lateral -###ad_layer -###ad_ldb -###ad_lead1 -###ad_leader -###ad_leaderBoard -###ad_leaderboard -###ad_leaderboard_top -###ad_left -###ad_left_1 -###ad_left_2 -###ad_left_3 -###ad_left_skyscraper -###ad_left_top -###ad_leftslot -###ad_link -###ad_links -###ad_links_footer -###ad_lnk -###ad_lrec -###ad_lwr_square -###ad_main -###ad_main_leader -###ad_main_top -###ad_marginal -###ad_marker -###ad_mast -###ad_med_rect -###ad_medium -###ad_medium_rectangle -###ad_medium_rectangular -###ad_mediumrectangle -###ad_message -###ad_middle -###ad_middle_bottom -###ad_midstrip -###ad_mobile -###ad_module -###ad_mpu -###ad_mpu2 -###ad_mpu300x250 -###ad_mrec -###ad_mrec1 -###ad_mrec2 -###ad_mrec_intext -###ad_mrec_intext2 -###ad_new -###ad_news_article -###ad_newsletter -###ad_one -###ad_overlay -###ad_overlayer -###ad_panel -###ad_panorama_top -###ad_pencil -###ad_place -###ad_placeholder -###ad_player -###ad_plugs -###ad_popup_background -###ad_popup_wrapper -###ad_post -###ad_poster -###ad_primary -###ad_publicidad -###ad_rail -###ad_rec_01 -###ad_rect -###ad_rect1 -###ad_rect2 -###ad_rect3 -###ad_rect_body -###ad_rect_bottom -###ad_rect_btf_01 -###ad_rect_btf_02 -###ad_rect_btf_03 -###ad_rect_btf_04 -###ad_rect_btf_05 -###ad_rectangle -###ad_region1 -###ad_region2 -###ad_region3 -###ad_region5 -###ad_results -###ad_right -###ad_right_box -###ad_right_top -###ad_rightslot -###ad_rotator-2 -###ad_rotator-3 -###ad_row -###ad_row_home -###ad_rr_1 -###ad_sec -###ad_sec_div -###ad_secondary -###ad_short -###ad_sidebar -###ad_sidebar1 -###ad_sidebar2 -###ad_sidebar3 -###ad_sidebar_1 -###ad_sidebar_left_container -###ad_sidebar_news -###ad_sidebar_top -###ad_sidebody -###ad_site_header -###ad_sitebar -###ad_skin -###ad_slot -###ad_slot_bottom -###ad_slot_leaderboard -###ad_small -###ad_space_top -###ad_sponsored -###ad_spot_a -###ad_spot_b -###ad_spotlight -###ad_square -###ad_squares -###ad_ss -###ad_stck -###ad_sticky_wrap -###ad_strip -###ad_superbanner -###ad_table -###ad_takeover -###ad_tall -###ad_tbl -###ad_top -###ad_topBanner -###ad_topScroller -###ad_top_728x90 -###ad_top_banner -###ad_top_bar -###ad_top_holder -###ad_topbanner -###ad_topmob -###ad_topnav -###ad_topslot -###ad_two -###ad_txt -###ad_under_game -###ad_unit -###ad_unit1 -###ad_unit2 -###ad_vertical -###ad_video_abovePlayer -###ad_video_belowPlayer -###ad_video_large -###ad_video_root -###ad_wallpaper -###ad_wide -###ad_wide_box -###ad_wideboard -###ad_widget -###ad_widget_1 -###ad_window -###ad_wp -###ad_wp_base -###ad_wrap -###ad_wrapper -###ad_wrapper1 -###ad_wrapper2 -###ad_xrail_top -###ad_zone -###adaptvcompanion -###adb_bottom -###adbackground -###adbanner-container -###adbanner1 -###adbannerbox -###adbannerdiv -###adbannerleft -###adbannerright -###adbannerwidget -###adbar -###adbig -###adblade -###adblade_ad -###adblock-big -###adblock-leaderboard -###adblock-small -###adblock1 -###adblock2 -###adblock4 -###adblockbottom -###adbn -###adbnr -###adboard -###adbody -###adbottom -###adbottomleft -###adbottomright -###adbox -###adbox--hot_news_ad -###adbox--page_bottom_ad -###adbox--page_top_ad -###adbox-inarticle -###adbox-topbanner -###adbox1 -###adbox2 -###adbox_content -###adbox_right -###adbutton -###adbuttons -###adcell -###adcenter -###adcenter2 -###adcenter4 -###adchoices-icon -###adchoicesBtn -###adclear -###adclose -###adcode -###adcolContent -###adcolumn -###adcontainer -###adcontainer1 -###adcontainer2 -###adcontainer3 -###adcontainer5 -###adcontainerRight -###adcontainer_ad_content_top -###adcontent -###adcontent1 -###adcontent2 -###adcontextlinks -###addbottomleft -###addvert -###adfactor-label -###adfloat -###adfooter -###adfooter_728x90 -###adframe:not(frameset) -###adframetop -###adfreeDeskSpace -###adhalfpage -###adhead -###adheader -###adhesion -###adhesionAdSlot -###adhesionUnit -###adhide -###adholder -###adholderContainerHeader -###adhome -###adhomepage -###adjacency -###adlabel -###adlabelFooter -###adlabelfooter -###adlabelheader -###adlanding -###adlayer -###adlayerContainer -###adlayerad -###adleaderboard -###adleft -###adlinks -###adlrec -###adm-inline-article-ad-1 -###adm-inline-article-ad-2 -###admain -###admasthead -###admid -###admobilefoot -###admobilefootinside -###admobilemiddle -###admobiletop -###admobiletopinside -###admod2 -###admpubottom -###admpubottom2 -###admpufoot -###admpumiddle -###admpumiddle2 -###admputop2 -###admsg -###adnet -###adnorth -###ados1 -###ados2 -###ados3 -###ados4 -###adplace -###adplacement -###adpos-top -###adpos2 -###adposition -###adposition1 -###adposition10 -###adposition1_container -###adposition2 -###adposition3 -###adposition4 -###adpositionbottom -###adrect -###adright -###adright2 -###adrightbottom -###adrightrail -###adriver_middle -###adriver_top -###adrotator -###adrow -###adrow1 -###adrow3 -###ads-1 -###ads-125 -###ads-200 -###ads-250 -###ads-300 -###ads-300-250 -###ads-336x280 -###ads-468 -###ads-5 -###ads-728x90 -###ads-728x90-I3 -###ads-728x90-I4 -###ads-area -###ads-article-left -###ads-banner -###ads-banner-top -###ads-bar -###ads-before-content -###ads-bg -###ads-bg-mobile -###ads-billboard -###ads-block -###ads-blog -###ads-bot -###ads-bottom -###ads-col -###ads-container -###ads-container-2 -###ads-container-anchor -###ads-container-single -###ads-container-top -###ads-content -###ads-content-double -###ads-footer -###ads-footer-inner -###ads-footer-wrap -###ads-google -###ads-header -###ads-header-728 -###ads-home-468 -###ads-horizontal -###ads-inread -###ads-inside-content -###ads-leader -###ads-leaderboard -###ads-leaderboard1 -###ads-left -###ads-left-top -###ads-lrec -###ads-main -###ads-menu -###ads-middle -###ads-mpu -###ads-outer -###ads-pagetop -###ads-panel -###ads-pop -###ads-position-header-desktop -###ads-right -###ads-right-bottom -###ads-right-skyscraper -###ads-right-top -###ads-slot -###ads-space -###ads-superBanner -###ads-text -###ads-top -###ads-top-728 -###ads-top-wrap -###ads-under-rotator -###ads-vertical -###ads-vertical-wrapper -###ads-wrap -###ads-wrapper -###ads1 -###ads120 -###ads125 -###ads1_box -###ads2 -###ads2_block -###ads2_box -###ads2_container -###ads3 -###ads300 -###ads300-250 -###ads300x200 -###ads300x250 -###ads300x250_2 -###ads336x280 -###ads4 -###ads468x60 -###ads50 -###ads7 -###ads728 -###ads728bottom -###ads728top -###ads728x90 -###ads728x90_2 -###ads728x90top -###adsBar -###adsBottom -###adsContainer -###adsContent -###adsDisplay -###adsHeader -###adsHeading -###adsLREC -###adsLeft -###adsLinkFooter -###adsMobileFixed -###adsMpu -###adsPanel -###adsRight -###adsRightDiv -###adsSectionLeft -###adsSectionRight -###adsSquare -###adsTG -###adsTN -###adsTop -###adsTopLeft -###adsTopMobileFixed -###adsZone -###adsZone1 -###adsZone2 -###ads_0_container -###ads_160 -###ads_3 -###ads_300 -###ads_300x250 -###ads_4 -###ads_728 -###ads_728x90 -###ads_728x90_top -###ads_banner -###ads_banner1 -###ads_banner_header -###ads_belownav -###ads_big -###ads_block -###ads_body_1 -###ads_body_2 -###ads_body_3 -###ads_body_4 -###ads_body_5 -###ads_body_6 -###ads_bottom -###ads_box -###ads_box1 -###ads_box2 -###ads_box_bottom -###ads_box_right -###ads_box_top -###ads_button -###ads_campaign -###ads_catDiv -###ads_center -###ads_center_banner -###ads_central -###ads_combo2 -###ads_container -###ads_content -###ads_desktop_r1 -###ads_desktop_r2 -###ads_expand -###ads_footer -###ads_fullsize -###ads_h -###ads_h1 -###ads_h2 -###ads_halfsize -###ads_header -###ads_horiz -###ads_horizontal -###ads_horz -###ads_in_modal -###ads_in_video -###ads_inline_z -###ads_inner -###ads_insert_container -###ads_layout_bottom -###ads_lb -###ads_lb_frame -###ads_leaderbottom -###ads_left -###ads_left_top -###ads_line -###ads_medrect -###ads_notice -###ads_overlay -###ads_page_top -###ads_place -###ads_placeholder -###ads_player -###ads_popup -###ads_right -###ads_right_sidebar -###ads_right_top -###ads_slide_div -###ads_space -###ads_space_header -###ads_superbanner1 -###ads_superbanner2 -###ads_superior -###ads_td -###ads_text -###ads_textlinks -###ads_title -###ads_top -###ads_top2 -###ads_top_banner -###ads_top_container -###ads_top_content -###ads_top_right -###ads_top_sec -###ads_topbanner -###ads_tower1 -###ads_tower_top -###ads_vert -###ads_video -###ads_wide -###ads_wrapper -###adsbot -###adsbottom -###adsbox -###adsbox-left -###adsbox-right -###adscenter -###adscolumn -###adscontainer -###adscontent -###adsdiv -###adsection -###adsense-2 -###adsense-468x60 -###adsense-area -###adsense-bottom -###adsense-container-bottom -###adsense-header -###adsense-link -###adsense-links -###adsense-middle -###adsense-post -###adsense-right -###adsense-sidebar -###adsense-tag -###adsense-text -###adsense-top -###adsense-wrap -###adsense1 -###adsense2 -###adsense468 -###adsense6 -###adsense728 -###adsenseArea -###adsenseContainer -###adsenseHeader -###adsenseLeft -###adsenseWrap -###adsense_banner_top -###adsense_block -###adsense_bottom_ad -###adsense_box -###adsense_box2 -###adsense_center -###adsense_image -###adsense_inline -###adsense_leaderboard -###adsense_overlay -###adsense_r_side_sticky_container -###adsense_sidebar -###adsense_top -###adsenseheader -###adsensehorizontal -###adsensempu -###adsenseskyscraper -###adsensetext -###adsensetop -###adsensewide -###adserv -###adsframe_2 -###adside -###adsimage -###adsitem -###adskeeper -###adskinleft -###adskinlink -###adskinright -###adskintop -###adsky -###adskyscraper -###adskyscraper_flex -###adsleft1 -###adslider -###adslist -###adslot-below-updated -###adslot-download-abovefiles -###adslot-half-page -###adslot-homepage-middle -###adslot-infobox -###adslot-left-skyscraper -###adslot-side-mrec -###adslot-site-footer -###adslot-site-header -###adslot-sticky-headerbar -###adslot-top-rectangle -###adslot1 -###adslot2 -###adslot3 -###adslot300x250ATF -###adslot300x250BTF -###adslot4 -###adslot5 -###adslot6 -###adslot7 -###adslot_1 -###adslot_2 -###adslot_left -###adslot_rect -###adslot_top -###adsmgid -###adsmiddle -###adsonar -###adspace -###adspace-1 -###adspace-2 -###adspace-300x250 -###adspace-728 -###adspace-728x90 -###adspace-bottom -###adspace-leaderboard-top -###adspace-one -###adspace-top -###adspace300x250 -###adspaceBox -###adspaceRow -###adspace_header -###adspace_leaderboard -###adspace_top -###adspacer -###adspan -###adsplace1 -###adsplace2 -###adsplace4 -###adsplash -###adspot -###adspot-bottom -###adspot-top -###adsquare -###adsquare2 -###adsright -###adsside -###adsspace -###adstext2 -###adstrip -###adtab -###adtext -###adtop -###adtxt -###adunit -###adunit-article-bottom -###adunit_video -###adunitl -###adv-01 -###adv-300 -###adv-Bottom -###adv-BoxP -###adv-Middle -###adv-Middle1 -###adv-Middle2 -###adv-Scrollable -###adv-Top -###adv-TopLeft -###adv-banner -###adv-banner-r -###adv-box -###adv-companion-iframe -###adv-container -###adv-gpt-box-container1 -###adv-gpt-masthead-skin-container1 -###adv-halfpage -###adv-header -###adv-leaderblock -###adv-leaderboard -###adv-left -###adv-masthead -###adv-middle -###adv-middle1 -###adv-midroll -###adv-native -###adv-preroll -###adv-right -###adv-right1 -###adv-scrollable -###adv-sticky-1 -###adv-sticky-2 -###adv-text -###adv-title -###adv-top -###adv-top-skin -###adv300x250 -###adv300x250container -###adv468x90 -###adv728 -###adv728x90 -###adv768x90 -###advBoxBottom -###advCarrousel -###advHome -###advHook-Middle1 -###advRectangle -###advRectangle1 -###advSkin -###advTop -###advWrapper -###adv_300 -###adv_728 -###adv_728x90 -###adv_BoxBottom -###adv_Inread -###adv_IntropageOvl -###adv_LdbMastheadPush -###adv_Reload -###adv_Skin -###adv_bootom -###adv_border -###adv_center -###adv_config -###adv_contents -###adv_footer -###adv_holder -###adv_leaderboard -###adv_mob -###adv_mpu1 -###adv_mpu2 -###adv_network -###adv_overlay -###adv_overlay_content -###adv_r -###adv_right -###adv_skin -###adv_sky -###adv_textlink -###adv_top -###adv_wallpaper -###adv_wallpaper2 -###advads_ad_widget-18 -###advads_ad_widget-19 -###advads_ad_widget-8 -###adver -###adver-top -###adverFrame -###advert-1 -###advert-120 -###advert-2 -###advert-ahead -###advert-article -###advert-article-1 -###advert-article-2 -###advert-article-3 -###advert-banner -###advert-banner-container -###advert-banner-wrap -###advert-banner2 -###advert-block -###advert-boomer -###advert-box -###advert-column -###advert-container-top -###advert-display -###advert-fireplace -###advert-footer -###advert-footer-hidden -###advert-header -###advert-island -###advert-leaderboard -###advert-left -###advert-mpu -###advert-posterad -###advert-rectangle -###advert-right -###advert-sky -###advert-skyscaper -###advert-skyscraper -###advert-slider-top -###advert-text -###advert-top -###advert-top-banner -###advert-wrapper -###advert1 -###advert2 -###advertBanner -###advertBox -###advertBoxRight -###advertBoxSquare -###advertColumn -###advertContainer -###advertDB -###advertOverlay -###advertRight -###advertSection -###advertTop -###advertTopLarge -###advertTopSmall -###advertTower -###advertWrapper -###advert_1 -###advert_banner -###advert_belowmenu -###advert_box -###advert_container -###advert_header -###advert_leaderboard -###advert_mid -###advert_mpu -###advert_right1 -###advert_sky -###advert_top -###advertblock -###advertborder -###adverticum_r_above -###adverticum_r_above_container -###adverticum_r_side_container -###advertise -###advertise-block -###advertise-here -###advertise-sidebar -###advertise1 -###advertise2 -###advertiseBanner -###advertiseLink -###advertise_top -###advertisediv -###advertisement-300x250 -###advertisement-bottom -###advertisement-content -###advertisement-large -###advertisement-placement -###advertisement-text -###advertisement1 -###advertisement2 -###advertisement3 -###advertisement728x90 -###advertisementArea -###advertisementBox -###advertisementHorizontal -###advertisementRight -###advertisementTop -###advertisement_banner -###advertisement_belowscreenshots -###advertisement_block -###advertisement_box -###advertisement_container -###advertisement_label -###advertisement_notice -###advertisement_title -###advertisements_bottom -###advertisements_sidebar -###advertisements_top -###advertisementsarticle -###advertiser-container -###advertiserLinks -###advertisetop -###advertising-160x600 -###advertising-300x250 -###advertising-728x90 -###advertising-banner -###advertising-caption -###advertising-container -###advertising-right -###advertising-skyscraper -###advertising-top -###advertisingHrefTop -###advertisingLeftLeft -###advertisingLink -###advertisingRightColumn -###advertisingRightRight -###advertisingTop -###advertisingTopWrapper -###advertising_300 -###advertising_320 -###advertising_728 -###advertising__banner__content -###advertising_column -###advertising_container -###advertising_contentad -###advertising_div -###advertising_header -###advertising_holder -###advertising_leaderboard -###advertising_top_container -###advertising_wrapper -###advertisment-horizontal -###advertisment-text -###advertisment1 -###advertisment_content -###advertisment_panel -###advertleft -###advertorial -###advertorial-box -###advertorial-wrap -###advertorial1 -###advertorial_links -###adverts -###adverts--footer -###adverts-top-container -###adverts-top-left -###adverts-top-middle -###adverts-top-right -###adverts_base -###adverts_post_content -###adverts_right -###advertscroll -###advertsingle -###advertspace -###advertssection -###adverttop -###advframe -###advr_mobile -###advsingle -###advt -###advt_bottom -###advtbar -###advtcell -###advtext -###advtop -###advtopright -###adwallpaper -###adwidget -###adwidget-5 -###adwidget-6 -###adwidget1 -###adwidget2 -###adwrapper -###adxBigAd -###adxBigAd2 -###adxLeaderboard -###adxMiddle -###adxMiddleRight -###adxToolSponsor -###adx_ad -###adxtop2 -###adzbanner -###adzone -###adzone-middle1 -###adzone-middle2 -###adzone-right -###adzone-top -###adzone_content -###adzone_wall -###adzonebanner -###adzoneheader -###afc-container -###affiliate_2 -###affiliate_ad -###after-dfp-ad-mid1 -###after-dfp-ad-mid2 -###after-dfp-ad-mid3 -###after-dfp-ad-mid4 -###after-dfp-ad-top -###after-header-ads -###after-top-menu-ads -###after_ad -###after_bottom_ad -###after_heading_ad -###after_title_ad -###amazon-ads -###amazon_ad -###analytics_ad -###anchor-ad -###anchorAd -###aniview-ads -###aom-ad-right_side_1 -###aom-ad-right_side_2 -###aom-ad-top -###apiBackgroundAd -###article-ad -###article-ad-container -###article-ad-content -###article-ads -###article-advert -###article-aside-top-ad -###article-billboard-ad-1 -###article-bottom-ad -###article-box-ad -###article-content-ad -###article-footer-ad -###article-footer-sponsors -###article-island-ad -###article-sidebar-ad -###articleAd -###articleAdReplacement -###articleBoard-ad -###articleBottom-ads -###articleLeftAdColumn -###articleSideAd -###articleTop-ads -###article_ad -###article_ad_1 -###article_ad_3 -###article_ad_bottom -###article_ad_container -###article_ad_top -###article_ad_w -###article_adholder -###article_ads -###article_advert -###article_banner_ad -###article_body_ad1 -###article_box_ad -###articlead1 -###articlead2 -###articlead300x250r -###articleadblock -###articlefootad -###articletop_ad -###aside-ad-container -###asideAd -###aside_ad -###asideads -###asinglead -###ax-billboard -###ax-billboard-bottom -###ax-billboard-sub -###ax-billboard-top -###backad -###background-ad-cover -###background-adv -###background_ad_left -###background_ad_right -###background_ads -###backgroundadvert -###banADbanner -###banner-300x250 -###banner-468x60 -###banner-728 -###banner-728x90 -###banner-ad -###banner-ad-container -###banner-ad-large -###banner-ads -###banner-advert -###banner-lg-ad -###banner-native-ad -###banner-skyscraper -###banner300x250 -###banner468 -###banner468x60 -###banner728 -###banner728x90 -###bannerAd -###bannerAdFrame -###bannerAdTop -###bannerAdWrap -###bannerAdWrapper -###bannerAds -###bannerAdsense -###bannerAdvert -###bannerGoogle -###banner_ad_bottom -###banner_ad_footer -###banner_ad_module -###banner_ad_placeholder -###banner_ad_top -###banner_ads -###banner_adsense -###banner_adv -###banner_advertisement -###banner_adverts -###banner_content_ad -###banner_sedo -###banner_slot -###banner_spacer -###banner_topad -###banner_videoad -###banner_wrapper_top -###bannerad-bottom -###bannerad-top -###bannerad2 -###banneradrow -###bannerads -###banneradspace -###banneradvert3 -###banneradvertise -###bannerplayer-wrap -###baseboard-ad -###baseboard-ad-wrapper -###bbContentAds -###bb_ad_container -###bb_top_ad -###bbadwrap -###before-footer-ad -###below-listings-ad -###below-menu-ad-header -###below-post-ad -###below-title-ad -###belowAd -###belowContactBoxAd -###belowNodeAds -###below_content_ad_container -###belowad -###belowheaderad -###bg-custom-ad -###bgad -###big-box-ad -###bigAd -###bigAd1 -###bigAd2 -###bigAdDiv -###bigBoxAd -###bigBoxAdCont -###big_ad -###big_ad_label -###big_ads -###bigad -###bigadbox -###bigads -###bigadspace -###bigadspot -###bigboard_ad -###bigsidead -###billboard-ad -###billboard-atf -###billboard_ad -###bingadcontainer2 -###blkAds1 -###blkAds2 -###blkAds3 -###blkAds4 -###blkAds5 -###block-ad-articles -###block-adsense-0 -###block-adsense-2 -###block-adsense-banner-article-bottom -###block-adsense-banner-channel-bottom -###block-adsenseleaderboard -###block-advertisement -###block-advertorial -###block-articlebelowtextad -###block-articlefrontpagead -###block-articletopadvert -###block-dfp-top -###block-frontpageabovepartnersad -###block-frontpagead -###block-frontpagesideadvert1 -###block-google-ads -###block-googleads3 -###block-googleads3-2 -###block-openads-0 -###block-openads-1 -###block-openads-13 -###block-openads-14 -###block-openads-2 -###block-openads-3 -###block-openads-4 -###block-openads-5 -###block-sponsors -###blockAd -###blockAds -###block_ad -###block_ad2 -###block_ad_container -###block_advert -###block_advert1 -###block_advert2 -###block_advertisement -###blog-ad -###blog-advert -###blogad -###blogad-wrapper -###blogads -###bm-HeaderAd -###bn_ad -###bnr-300x250 -###bnr-468x60 -###bnr-728x90 -###bnrAd -###body-ads -###bodyAd1 -###bodyAd2 -###bodyAd3 -###bodyAd4 -###body_ad -###body_centered_ad -###bottom-ad -###bottom-ad-1 -###bottom-ad-area -###bottom-ad-banner -###bottom-ad-container -###bottom-ad-leaderboard -###bottom-ad-slot -###bottom-ad-tray -###bottom-ad-wrapper -###bottom-add -###bottom-adhesion -###bottom-adhesion-container -###bottom-ads -###bottom-ads-bar -###bottom-ads-container -###bottom-adspot -###bottom-advertising -###bottom-boxad -###bottom-not-ads -###bottom-side-ad -###bottom-sponsor-add -###bottomAd -###bottomAd300 -###bottomAdBlcok -###bottomAdContainer -###bottomAdSection -###bottomAdSense -###bottomAdSenseDiv -###bottomAdWrapper -###bottomAds -###bottomAdvBox -###bottomBannerAd -###bottomContentAd -###bottomDDAd -###bottomLeftAd -###bottomMPU -###bottomRightAd -###bottom_ad -###bottom_ad_728 -###bottom_ad_area -###bottom_ad_box -###bottom_ad_region -###bottom_ad_unit -###bottom_ad_wrapper -###bottom_adbox -###bottom_ads -###bottom_adwrapper -###bottom_banner_ad -###bottom_fixed_ad_overlay -###bottom_leader_ad -###bottom_player_adv -###bottom_sponsor_ads -###bottom_sponsored_links -###bottom_text_ad -###bottomad -###bottomad300 -###bottomad_table -###bottomadbanner -###bottomadbar -###bottomadholder -###bottomads -###bottomadsdiv -###bottomadsense -###bottomadvert -###bottomadwrapper -###bottomcontentads -###bottomleaderboardad -###bottommpuAdvert -###bottommpuSlot -###bottomsponad -###bottomsponsoredresults -###box-ad -###box-ad-section -###box-ad-sidebar -###box-content-ad -###box1ad -###box2ad -###boxAD -###boxAd -###boxAd300 -###boxAdContainer -###boxAdvert -###boxLREC -###box_ad -###box_ad_container -###box_ad_middle -###box_ads -###box_advertisement -###box_advertisment -###box_articlead -###box_text_ads -###boxad -###boxads -###bpAd -###br-ad-header -###breadcrumb_ad -###breakbarad -###bsa_add_holder_g -###bt-ad -###bt-ad-header -###btfAdNew -###btm_ad -###btm_ads -###btmad -###btnAdDP -###btnAds -###btnads -###btopads -###button-ads -###button_ad_container -###button_ads -###buy-sell-ads -###buySellAds -###buysellads -###carbon-ads-container-bg -###carbonadcontainer -###carbonads -###carbonads-container -###card-ads-top -###category-ad -###category-sponsor -###cellAd -###center-ad -###center-ad-group -###centerads -###ch-ad-outer-right -###ch-ads -###channel_ad -###channel_ads -###circ_ad -###circ_ad_holder -###circad_wrapper -###classifiedsads -###clickforad -###clientAds -###closeAdsDiv -###closeable-ad -###cloudAdTag -###col-right-ad -###colAd -###colombiaAdBox -###columnAd -###commentAdWrapper -###commentTopAd -###comment_ad_zone -###comments-ad-container -###comments-ads -###comments-standalone-mpu -###compAdvertisement -###companion-ad -###companionAd -###companionAdDiv -###companion_Ad -###companionad -###connatix -###connatix-moveable -###connatix_placeholder_desktop -###container-ad -###container_ad -###content-ad -###content-ad-side -###content-ads -###content-adver -###content-contentad -###content-header-ad -###content-left-ad -###content-right-ad -###contentAd -###contentAdSense -###contentAdTwo -###contentAds -###contentBoxad -###content_Ad -###content_ad -###content_ad_1 -###content_ad_2 -###content_ad_block -###content_ad_container -###content_ad_placeholder -###content_ads -###content_ads_top -###content_adv -###content_bottom_ad -###content_bottom_ads -###content_mpu -###contentad -###contentad-adsense-homepage-1 -###contentad-commercial-1 -###contentad-content-box-1 -###contentad-footer-tfm-1 -###contentad-lower-medium-rectangle-1 -###contentad-story-middle-1 -###contentad-superbanner-1 -###contentad-top-adsense-1 -###contentad-topbanner-1 -###contentadcontainer -###contentads -###contextad -###contextual-ads -###contextual-ads-block -###contextualad -###cornerad -###coverads -###criteoAd -###crt-adblock-a -###crt-adblock-b -###ctl00_ContentPlaceHolder1_ucAdHomeRightFO_divAdvertisement -###ctl00_ContentPlaceHolder1_ucAdHomeRight_divAdvertisement -###ctl00_adFooter -###ctl00_leaderboardAdvertContainer -###ctl00_skyscraperAdvertContainer -###ctl00_topAd -###ctl00_ucFooter_ucFooterBanner_divAdvertisement -###cubeAd -###cube_ad -###cube_ads -###customAd -###customAds -###customad -###darazAd -###ddAdZone2 -###desktop-ad-top -###desktop-sidebar-ad -###desktop_middle_ad_fixed -###desktop_top_ad_fixed -###dfp-ad-bottom-wrapper -###dfp-ad-container -###dfp-ad-floating -###dfp-ad-leaderboard -###dfp-ad-leaderboard-wrapper -###dfp-ad-medium_rectangle -###dfp-ad-mediumrect-wrapper -###dfp-ad-mpu1 -###dfp-ad-mpu2 -###dfp-ad-right1 -###dfp-ad-right1-wrapper -###dfp-ad-right2 -###dfp-ad-right2-wrapper -###dfp-ad-right3 -###dfp-ad-right4-wrapper -###dfp-ad-slot2 -###dfp-ad-slot3 -###dfp-ad-slot3-wrapper -###dfp-ad-slot4-wrapper -###dfp-ad-slot5 -###dfp-ad-slot5-wrapper -###dfp-ad-slot6 -###dfp-ad-slot6-wrapper -###dfp-ad-slot7 -###dfp-ad-slot7-wrapper -###dfp-ad-top-wrapper -###dfp-ap-2016-interstitial -###dfp-article-mpu -###dfp-atf -###dfp-atf-desktop -###dfp-banner -###dfp-banner-popup -###dfp-billboard1 -###dfp-billboard2 -###dfp-btf -###dfp-btf-desktop -###dfp-footer-desktop -###dfp-header -###dfp-header-container -###dfp-ia01 -###dfp-ia02 -###dfp-interstitial -###dfp-leaderboard -###dfp-leaderboard-desktop -###dfp-masthead -###dfp-middle -###dfp-middle1 -###dfp-mtf -###dfp-mtf-desktop -###dfp-rectangle -###dfp-rectangle1 -###dfp-ros-res-header_container -###dfp-tlb -###dfp-top-banner -###dfpAd -###dfp_ad_mpu -###dfp_ads_4 -###dfp_ads_5 -###dfp_bigbox_2 -###dfp_bigbox_recipe_top -###dfp_container -###dfp_leaderboard -###dfpad-0 -###dfpslot_tow_2-0 -###dfpslot_tow_2-1 -###dfrads-widget-3 -###dfrads-widget-6 -###dfrads-widget-7 -###dianomiNewsBlock -###dict-adv -###direct-ad -###disable-ads-container -###display-ads -###displayAd -###displayAdSet -###display_ad -###displayad_carousel -###displayad_rectangle -###div-ad-1x1 -###div-ad-bottom -###div-ad-flex -###div-ad-inread -###div-ad-leaderboard -###div-ad-r -###div-ad-r1 -###div-ad-top -###div-ad-top_banner -###div-adcenter1 -###div-adcenter2 -###div-advert -###div-contentad_1 -###div-footer-ad -###div-gpt-LDB1 -###div-gpt-MPU1 -###div-gpt-MPU2 -###div-gpt-MPU3 -###div-gpt-Skin -###div-gpt-inline-main -###div-gpt-mini-leaderboard1 -###div-gpt-mrec -###div-insticator-ad-1 -###div-insticator-ad-2 -###div-insticator-ad-3 -###div-insticator-ad-4 -###div-insticator-ad-5 -###div-insticator-ad-6 -###div-insticator-ad-9 -###div-leader-ad -###div-social-ads -###divAd -###divAdDetail -###divAdHere -###divAdHorizontal -###divAdLeft -###divAdMain -###divAdRight -###divAdWrapper -###divAds -###divAdsTop -###divAdv300x250 -###divAdvertisement -###divDoubleAd -###divFoldersAd -###divFooterAd -###divFooterAds -###divSponAds -###divSponsoredLinks -###divStoryBigAd1 -###divThreadAdBox -###divTopAd -###divTopAds -###divWrapper_Ad -###div_ad_TopRight -###div_ad_float -###div_ad_holder -###div_ad_leaderboard -###div_advt_right -###div_belowAd -###div_bottomad -###div_bottomad_container -###div_googlead -###divadfloat -###dnn_adSky -###dnn_adTop -###dnn_ad_banner -###dnn_ad_island1 -###dnn_ad_skyscraper -###dnn_sponsoredLinks -###downloadAd -###download_ad -###download_ads -###dragads -###ds-mpu -###dsStoryAd -###dsk-banner-ad-a -###dsk-banner-ad-b -###dsk-banner-ad-c -###dsk-banner-ad-d -###dsk-box-ad-c -###dsk-box-ad-d -###dsk-box-ad-f -###dsk-box-ad-g -###dv-gpt-ad-bigbox-wrap -###dynamicAdDiv -###em_ad_superbanner -###embedAD -###embedADS -###event_ads -###events-adv-side1 -###events-adv-side2 -###events-adv-side3 -###events-adv-side4 -###events-adv-side5 -###events-adv-side6 -###exoAd -###externalAd -###ezmobfooter -###featureAd -###featureAdSpace -###featureAds -###feature_ad -###featuread -###featured-ads -###featuredAds -###first-ads -###first_ad -###firstad -###fixed-ad -###fixedAd -###fixedban -###floatAd -###floatads -###floating-ad-wrapper -###floating-ads -###floating-advert -###floatingAd -###floatingAdContainer -###floatingAds -###floating_ad -###floating_ad_container -###floating_ads_bottom_textcss_container -###floorAdWrapper -###foot-ad-wrap -###foot-ad2-wrap -###footAd -###footAdArea -###footAds -###footad -###footer-ad -###footer-ad-728 -###footer-ad-block -###footer-ad-box -###footer-ad-col -###footer-ad-google -###footer-ad-large -###footer-ad-slot -###footer-ad-unit -###footer-ad-wrapper -###footer-ads -###footer-adspace -###footer-adv -###footer-advert -###footer-advert-area -###footer-advertisement -###footer-adverts -###footer-adwrapper -###footer-affl -###footer-banner-ad -###footer-leaderboard-ad -###footer-sponsored -###footer-sponsors -###footerAd -###footerAdBottom -###footerAdBox -###footerAdDiv -###footerAdWrap -###footerAdd -###footerAds -###footerAdsPlacement -###footerAdvert -###footerAdvertisement -###footerAdverts -###footerGoogleAd -###footer_AdArea -###footer_ad -###footer_ad_block -###footer_ad_container -###footer_ad_frame -###footer_ad_holder -###footer_ad_modules -###footer_adcode -###footer_add -###footer_addvertise -###footer_ads -###footer_ads_holder -###footer_adspace -###footer_adv -###footer_advertising -###footer_leaderboard_ad -###footer_text_ad -###footerad -###footerad728 -###footerads -###footeradsbox -###footeradvert -###forum-top-ad-bar -###frameAd -###frmSponsAds -###front-ad-cont -###front-page-ad -###front-page-advert -###frontPageAd -###front_advert -###front_mpu -###ft-ad -###ft-ads -###full_banner_ad -###fwAdBox -###fwdevpDiv0 -###fwdevpDiv1 -###fwdevpDiv2 -###gAds -###gStickyAd -###g_ad -###g_adsense -###gad300x250 -###gad728x90 -###gads300x250 -###gadsOverlayUnit -###gads_middle -###gallery-ad -###gallery-ad-container -###gallery-advert -###gallery-below-line-advert -###gallery-sidebar-advert -###gallery_ad -###gallery_ads -###gallery_header_ad -###galleryad1 -###gam-ad-ban1 -###game-ad -###gamead -###gameads -###gasense -###geoAd -###gg_ad -###ggl-ad -###glamads -###global-banner-ad -###globalLeftNavAd -###globalTopNavAd -###global_header_ad -###global_header_ad_area -###goad1 -###goads -###gooadtop -###google-ad -###google-ads -###google-ads-bottom -###google-ads-bottom-container -###google-ads-container -###google-ads-detailsRight -###google-ads-directoryViewRight -###google-ads-header -###google-adsense -###google-adwords -###google-afc -###google-dfp-bottom -###google-dfp-top -###google-post-ad -###google-post-adbottom -###google-top-ads -###googleAd -###googleAdArea -###googleAdBottom -###googleAdBox -###googleAdTop -###googleAds -###googleAdsense -###googleAdsenseAdverts -###googleSearchAds -###google_ad_1 -###google_ad_2 -###google_ad_3 -###google_ad_container -###google_ad_slot -###google_ads -###google_ads_1 -###google_ads_box -###google_ads_frame -###google_ads_frame1_anchor -###google_ads_frame2_anchor -###google_ads_frame3_anchor -###google_ads_frame4_anchor -###google_ads_frame5_anchor -###google_ads_frame6_anchor -###google_adsense -###google_adsense_ad -###googlead -###googlead2 -###googleadleft -###googleads -###googleads1 -###googleadsense -###googleadstop -###googlebanner -###googlesponsor -###googletextads -###gpt-ad-1 -###gpt-ad-banner -###gpt-ad-halfpage -###gpt-ad-outofpage-wp -###gpt-ad-rectangle1 -###gpt-ad-rectangle2 -###gpt-ad-side-bottom -###gpt-ad-skyscraper -###gpt-instory-ad -###gpt-leaderboard-ad -###gpt-mpu -###gpt-sticky -###grdAds -###gridAdSidebar -###grid_ad -###half-page-ad -###halfPageAd -###half_page_ad_300x600 -###halfpagead -###head-ad -###head-ad-text-wrap -###head-ad-timer -###head-ads -###head-advertisement -###headAd -###headAds -###headAdv -###head_ad -###head_ads -###head_advert -###headad -###headadvert -###header-ad -###header-ad-background -###header-ad-block -###header-ad-bottom -###header-ad-container -###header-ad-holder -###header-ad-label -###header-ad-left -###header-ad-placeholder -###header-ad-right -###header-ad-slot -###header-ad-wrap -###header-ad-wrapper -###header-ad2 -###header-ads -###header-ads-container -###header-ads-holder -###header-ads-wrapper -###header-adsense -###header-adserve -###header-adspace -###header-adv -###header-advert -###header-advert-panel -###header-advertisement -###header-advertising -###header-adverts -###header-advrt -###header-banner-728-90 -###header-banner-ad -###header-banner-ad-wrapper -###header-block-ads -###header-box-ads -###headerAd -###headerAdBackground -###headerAdContainer -###headerAdSpace -###headerAdUnit -###headerAdWrap -###headerAds -###headerAdsWrapper -###headerAdv -###headerAdvert -###headerTopAd -###header_ad -###header_ad_728 -###header_ad_728_90 -###header_ad_banner -###header_ad_block -###header_ad_container -###header_ad_leaderboard -###header_ad_units -###header_ad_widget -###header_ad_wrap -###header_adbox -###header_adcode -###header_ads -###header_ads2 -###header_adsense -###header_adv -###header_advert -###header_advertisement -###header_advertisement_top -###header_advertising -###header_adverts -###header_bottom_ad -###header_publicidad -###header_right_ad -###header_sponsors -###header_top_ad -###headerad -###headerad_large -###headeradbox -###headeradcontainer -###headerads -###headeradsbox -###headeradsense -###headeradspace -###headeradvertholder -###headeradwrap -###headergooglead -###headersponsors -###headingAd -###headline_ad -###hearst-autos-ad-wrapper -###home-ad -###home-ad-block -###home-ad-slot -###home-advert-module -###home-advertise -###home-banner-ad -###home-left-ad -###home-rectangle-ad -###home-side-ad -###home-top-ads -###homeAd -###homeAdLeft -###homeAds -###homeSideAd -###home_ad -###home_ads_vert -###home_advertising_block -###home_bottom_ad -###home_contentad -###home_mpu -###home_sidebar_ad -###home_top_right_ad -###homead -###homeheaderad -###homepage-ad -###homepage-adbar -###homepage-footer-ad -###homepage-header-ad -###homepage-sidebar-ad -###homepage-sidebar-ads -###homepage-sponsored -###homepageAd -###homepageAdsTop -###homepageFooterAd -###homepageGoogleAds -###homepage_ad -###homepage_ad_listing -###homepage_rectangle_ad -###homepage_right_ad -###homepage_right_ad_container -###homepage_top_ad -###homepage_top_ads -###homepageadvert -###hometopads -###horAd -###hor_ad -###horadslot -###horizad -###horizads728 -###horizontal-ad -###horizontal-adspace -###horizontal-banner-ad -###horizontalAd -###horizontalAdvertisement -###horizontal_ad -###horizontal_ad2 -###horizontal_ad_top -###horizontalad -###horizontalads -###hottopics-advert -###hours_ad -###houseAd -###hovered_sponsored -###hp-desk-after-header-ad -###hp-header-ad -###hp-right-ad -###hp-store-ad -###hpAdVideo -###humix-vid-ezAutoMatch -###idDivAd -###id_SearchAds -###iframe-ad -###iframeAd_2 -###iframe_ad_2 -###imPopup -###im_popupDiv -###ima_ads-2 -###ima_ads-3 -###ima_ads-4 -###imgad1 -###imu_ad_module -###in-article-ad -###in-article-mpu -###in-content-ad -###inArticleAdv -###inarticlead -###inc-ads-bigbox -###incontent-ad-2 -###incontent-ad-3 -###incontentAd1 -###incontentAd2 -###incontentAd3 -###index-ad -###index-bottom-advert -###indexSquareAd -###index_ad -###indexad -###indexad300x250l -###indexsmallads -###indiv_adsense -###infoBottomAd -###infoboxadwrapper -###inhousead -###initializeAd -###inline-ad -###inline-ad-label -###inline-advert -###inline-story-ad -###inline-story-ad2 -###inlineAd -###inlineAdCont -###inlineAdtop -###inlineAdvertisement -###inlineBottomAd -###inline_ad -###inline_ad_section -###inlinead -###inlineads -###inner-ad -###inner-ad-container -###inner-advert-row -###inner-top-ads -###innerad -###innerpage-ad -###inside-page-ad -###insideCubeAd -###instant_ad -###insticator-container -###instoryad -###int-ad -###int_ad -###interads -###intermediate-ad -###internalAdvert -###internalads -###interstitial-shade -###interstitialAd -###interstitialAdContainer -###interstitialAdUnit -###interstitial_ad -###interstitial_ad_container -###interstitial_ads -###intext_ad -###introAds -###intro_ad_1 -###invid_ad -###ipadv -###iq-AdSkin -###iqadcontainer -###iqadoverlay -###iqadtile1 -###iqadtile11 -###iqadtile14 -###iqadtile15 -###iqadtile16 -###iqadtile2 -###iqadtile3 -###iqadtile4 -###iqadtile41 -###iqadtile6 -###iqadtile8 -###iqadtile9 -###iqadtile99 -###islandAd -###islandAdPan -###islandAdPane -###islandAdPane2 -###island_ad_top -###islandad -###jobs-ad -###js-ad-billboard -###js-ad-leaderboard -###js-image-ad-mpu -###js-page-ad-top -###js-wide-ad -###js_commerceInsetModule -###jsid-ad-container-post_above_comment -###jsid-ad-container-post_below_comment -###large-ads -###large-bottom-leaderboard-ad -###large-leaderboard-ad -###large-middle-leaderboard-ad -###large-rectange-ad -###large-rectange-ad-2 -###large-skyscraper-ad -###largeAd -###largeAds -###large_rec_ad1 -###largead -###layer_ad -###layer_ad_content -###layerad -###layeradsense -###layout-header-ad-wrapper -###layout_topad -###lb-ad -###lb-sponsor-left -###lb-sponsor-right -###lbAdBar -###lbAdBarBtm -###lblAds -###lead-ads -###lead_ad -###leadad_1 -###leadad_2 -###leader-ad -###leader-board-ad -###leader-companion > a[href] -###leaderAd -###leaderAdContainer -###leaderAdContainerOuter -###leaderBoardAd -###leader_ad -###leader_board_ad -###leaderad -###leaderad_section -###leaderadvert -###leaderboard-ad -###leaderboard-advert -###leaderboard-advertisement -###leaderboard-atf -###leaderboard-bottom-ad -###leaderboard.ad -###leaderboardAd -###leaderboardAdTop -###leaderboardAds -###leaderboardAdvert -###leaderboard_728x90 -###leaderboard_Ad -###leaderboard_ad -###leaderboard_ads -###leaderboard_bottom_ad -###leaderboard_top_ad -###leaderboardad -###leatherboardad -###left-ad -###left-ad-1 -###left-ad-2 -###left-ad-col -###left-ad-iframe -###left-ad-skin -###left-bottom-ad -###left-col-ads-1 -###left-content-ad -###leftAD -###leftAdAboveSideBar -###leftAdCol -###leftAdContainer -###leftAdMessage -###leftAdSpace -###leftAd_fmt -###leftAd_rdr -###leftAds -###leftAdsSmall -###leftAdvert -###leftBanner-ad -###leftColumnAdContainer -###leftGoogleAds -###leftTopAdWrapper -###left_ad -###left_ads -###left_adsense -###left_adspace -###left_adv -###left_advertisement -###left_bg_ad -###left_block_ads -###left_float_ad -###left_global_adspace -###left_side_ads -###left_sidebar_ads -###left_top_ad -###leftad -###leftadg -###leftads -###leftcolAd -###leftcolumnad -###leftforumad -###leftrail_dynamic_ad_wrapper -###lg-banner-ad -###ligatus -###ligatus_adv -###ligatusdiv -###lightboxAd -###linkAdSingle -###linkAds -###link_ads -###linkads -###listadholder -###liste_top_ads_wrapper -###listing-ad -###live-ad -###localAds -###localpp -###locked-footer-ad-wrapper -###logoAd -###logoAd2 -###logo_ad -###long-ad -###long-ad-space -###long-bottom-ad-wrapper -###longAdSpace -###longAdWrap -###long_advert_header -###long_advertisement -###lower-ad-banner -###lower-ads -###lower-advertising -###lower-home-ads -###lowerAdvertisement -###lowerAdvertisementImg -###lower_ad -###lower_content_ad_box -###lowerads -###lowerthirdad -###lrec_ad -###lrecad -###m-banner-bannerAd -###main-ad -###main-advert -###mainAd -###mainAd1 -###mainAdUnit -###mainAdvert -###mainPageAds -###mainPlaceHolder_coreContentPlaceHolder_rightColumnAdvert_divControl -###main_AD -###main_ad -###main_ads -###main_content_ad -###main_rec_ad -###main_top_ad -###mainui-ads -###mapAdsSwiper -###mapAdvert -###marketplaceAds -###marquee-ad -###marquee_ad -###mastAd -###mastAdvert -###mastad -###masterad -###masthead_ad -###masthead_ads_container -###masthead_topad -###med-rect-ad -###med-rectangle-ad -###medRecAd -###medReqAd -###media-ad -###medium-ad -###mediumAd1 -###mediumAdContainer -###mediumAdvertisement -###mediumRectangleAd -###medrec_bottom_ad -###medrec_middle_ad -###medrec_top_ad -###medrectad -###medrectangle_banner -###menuad -###menubarad -###mgid-container -###mgid_iframe -###mid-ad-slot-1 -###mid-ad-slot-3 -###mid-ad-slot-5 -###mid-ads -###mid-table-ad -###midAD -###midRightAds -###midRightTextAds -###mid_ad -###mid_ad_div -###mid_ad_title -###mid_left_ads -###mid_mpu -###mid_roll_ad_holder -###midadspace -###midadvert -###midbarad -###midbnrad -###midcolumn_ad -###middle-ad -###middle-ad-destin -###middleAd -###middle_ad -###middle_ads -###middle_mpu -###middlead -###middleads -###middleads2 -###midpost_ad -###midrect_ad -###midstrip_ad -###mini-ad -###mobile-adhesion -###mobile-ads-ad -###mobile-footer-ad-wrapper -###mobileAdContainer -###mobile_ads_100_pc -###mobile_ads_block -###mod_ad -###mod_ad_top -###modal-ad -###module-ads-01 -###module-ads-02 -###module_ad -###module_box_ad -###monsterAd -###mpu-ad -###mpu-advert -###mpu-cont -###mpu-content -###mpu-sidebar -###mpu1_parent -###mpu2 -###mpu2_container -###mpu2_parent -###mpuAd -###mpuAdvert -###mpuContainer -###mpuDiv -###mpuInContent -###mpuSecondary -###mpuSlot -###mpuWrapper -###mpuWrapperAd -###mpuWrapperAd2 -###mpu_ad -###mpu_ad2 -###mpu_adv -###mpu_banner -###mpu_box -###mpu_container -###mpu_div -###mpu_holder -###mpu_text_ad -###mpu_top -###mpuad -###mpubox -###mpuholder -###mvp-foot-ad-wrap -###mvp-post-bot-ad -###my-ads -###narrow-ad -###narrow_ad_unit -###native-ads-placeholder -###native_ad2 -###native_ads -###nav-ad-container -###navAdBanner -###nav_ad -###nav_ad_728_mid -###navads-container -###navbar_ads -###navigation-ad -###navlinkad -###newAd -###ng-ad -###ng-ad-lbl -###ni-ad-row -###nk_ad_top -###notify_ad -###ntvads -###openx-text-ad -###openx-widget -###ovadsense -###overlay-ad-bg -###overlay_ad -###overlayad -###overlayadd -###p-Ad -###p-advert -###p-googlead -###p-googleadsense -###p2HeaderAd -###p2squaread -###page-ad-top -###page-advertising -###page-header-ad -###page-top-ad -###pageAdDiv -###pageAdds -###pageAds -###pageAdsDiv -###pageAdvert -###pageBannerAd -###pageLeftAd -###pageMiddleAdWrapper -###pageRightAd -###page__outside-advertsing -###page_ad -###page_ad_top -###page_top_ad -###pageads_top -###pagebottomAd -###pagination-advert -###panel-ad -###panelAd -###panel_ad1 -###panoAdBlock -###partner-ad -###partnerAd -###partnerMedRec -###partner_ads -###pause-ad -###pause-ads -###pauseAd -###pc-div-gpt-ad_728-3 -###pencil-ad -###pencil-ad-container -###perm_ad -###permads -###persistentAd -###personalization_ads -###pgAdWrapper -###ph_ad -###player-ads -###player-advert -###player-advertising -###player-below-advert -###player-midrollAd -###playerAd -###playerAdsRight -###player_ad -###player_ads -###player_middle_ad -###player_top_ad -###playerad -###playerads -###pop.div_pop -###pop_ad -###popadwrap -###popback-ad -###popoverAd -###popupAd -###popupBottomAd -###popup_ad_wrapper -###popupadunit -###post-ad -###post-ads -###post-bottom-ads -###post-content-ad -###post-page-ad -###post-promo-ad -###postAd -###postNavigationAd -###post_ad -###post_addsense -###post_adsense -###post_adspace -###post_advert -###postads0 -###ppcAdverts -###ppvideoadvertisement -###pr_ad -###pr_advertising -###pre-adv -###pre-footer-ad -###preAds_ad_mrec_intext -###preAds_ad_mrec_intext2 -###preminumAD -###premiumAdTop -###premium_ad -###premiumad -###premiumads -###prerollAd -###preroll_ads -###primis-container -###primis_player -###print_ads -###printads -###privateads -###promo-ad -###promoAds -###promoFloatAd -###promo_ads -###pub468x60 -###pub728x90 -###publicidad -###publicidadeLREC -###pushAd -###pushDownAd -###pushdownAd -###pushdownAdWrapper -###pushdown_ad -###pusher-ad -###pvadscontainer -###quads-ad1_widget -###quads-ad2_widget -###quads-admin-ads-js -###r89-desktop-top-ad -###radio-ad-container -###rail-ad-wrap -###rail-bottom-ad -###railAd -###rail_ad -###rail_ad1 -###rail_ad2 -###rec_spot_ad_1 -###recommendAdBox -###rect-ad -###rectAd -###rect_ad -###rectad -###rectangle-ad -###rectangleAd -###rectangleAdTeaser1 -###rectangle_ad -###redirect-ad -###redirect-ad-modal -###reference-ad -###region-node-advert -###reklam_buton -###reklam_center -###reklama -###reklama_big -###reklama_left_body -###reklama_left_up -###reklama_right_up -###related-ads -###related-news-1-bottom-ad -###related-news-1-top-ad -###related_ad -###related_ads -###related_ads_box -###removeAdsSidebar -###removeadlink -###responsive-ad -###responsive-ad-sidebar-container -###responsive_ad -###responsivead -###result-list-aside-topadsense -###resultSponLinks -###resultsAdsBottom -###resultsAdsSB -###resultsAdsTop -###rh-ad -###rh-ad-container -###rh_tower_ad -###rhc_ads -###rhs_ads -###rhs_adverts -###rhsads -###rhsadvert -###richad -###right-ad -###right-ad-block -###right-ad-col -###right-ad-iframe -###right-ad-skin -###right-ad1 -###right-ads -###right-ads-rail -###right-advert -###right-bar-ad -###right-box-ad -###right-content-ad -###right-featured-ad -###right-rail-ad-slot-content-top -###right-widget-b-ads_widget-9 -###right-widget-c-ads_widget-7 -###right-widget-d-ads_widget-36 -###right-widget-top-ads_widget-23 -###right1-ad -###right1ad -###rightAD -###rightAd -###rightAd1 -###rightAdBar -###rightAdBlock -###rightAdColumn -###rightAdContainer -###rightAdHolder -###rightAdUnit -###rightAd_rdr -###rightAds -###rightAdsDiv -###rightBlockAd -###rightBottomAd -###rightColAd -###rightColumnAds -###rightRailAds -###rightSideAd -###rightSideAdvert -###right_Ads2 -###right_ad -###right_ad_1 -###right_ad_2 -###right_ad_box -###right_ad_container -###right_ad_top -###right_ad_wrapper -###right_ads -###right_ads_box -###right_adsense -###right_advert -###right_advertisement -###right_advertising -###right_adverts -###right_bg_ad -###right_block_ads -###right_bottom_ad -###right_column_ad -###right_column_ad_container -###right_column_ads -###right_column_adverts -###right_player_ad -###right_side_ad -###right_sidebar_ads -###right_top_ad -###right_top_gad -###rightad -###rightad1 -###rightad2 -###rightadBorder -###rightadBorder1 -###rightadBorder2 -###rightadContainer -###rightadcell -###rightadg -###rightadhome -###rightads -###rightads300x250 -###rightadsarea -###rightbar-ad -###rightbar_ad -###rightcol_sponsorad -###rightgoogleads -###rightrail-ad -###rightside-ads -###rightside_ad -###rightskyad -###rm-adslot-bigsizebanner_1 -###rm-adslot-contentad_1 -###rotating_ad -###rotatingads -###row-ad -###rowAdv -###rtAdvertisement -###scroll-ad -###scroll_ad -###search-ad -###search-ads1 -###search-google-ads -###search-sponsor -###search-sponsored-links -###searchAd -###searchAds -###search_ad -###search_ads -###second_ad_div -###secondad -###section-ad -###section-ad-bottom -###section_ad -###section_advertisements -###self-ad -###sev1mposterad -###show-ad -###show-sticky-ad -###showAd -###show_ads -###showads -###showcaseAd -###side-ad -###side-ad-container -###side-ads -###side-ads-box -###side-banner-ad -###side-boxad -###sideABlock -###sideAD -###sideAd -###sideAd1 -###sideAd2 -###sideAd3 -###sideAd4 -###sideAdArea -###sideAdLarge -###sideAdSmall -###sideAdSub -###sideAds -###sideBannerAd -###sideBar-ads -###sideBarAd -###sideSponsors -###side_ad -###side_ad_module -###side_ad_wrapper -###side_ads -###side_adverts -###side_longads -###side_skyscraper_ad -###side_sponsors -###sidead -###sidead1 -###sideads -###sideads_container -###sideadscol -###sideadvert -###sideadzone -###sidebar-ad -###sidebar-ad-1 -###sidebar-ad-2 -###sidebar-ad-block -###sidebar-ad-boxes -###sidebar-ad-middle -###sidebar-ad-wrap -###sidebar-ad1 -###sidebar-ad2 -###sidebar-ad3 -###sidebar-ads -###sidebar-ads-content -###sidebar-ads-narrow -###sidebar-ads-wide -###sidebar-ads-wrapper -###sidebar-adspace -###sidebar-adv -###sidebar-advertise-text -###sidebar-advertisement -###sidebar-left-ad -###sidebar-main-ad -###sidebar-sponsors -###sidebar-top-ad -###sidebar-top-ads -###sidebarAd -###sidebarAd1 -###sidebarAd2 -###sidebarAdSense -###sidebarAdSpace -###sidebarAdUnitWidget -###sidebarAds -###sidebarAdvTop -###sidebarAdvert -###sidebarSponsors -###sidebarTextAds -###sidebarTowerAds -###sidebar_ad -###sidebar_ad_1 -###sidebar_ad_2 -###sidebar_ad_3 -###sidebar_ad_big -###sidebar_ad_container -###sidebar_ad_top -###sidebar_ad_widget -###sidebar_ad_wrapper -###sidebar_adblock -###sidebar_ads -###sidebar_box_add -###sidebar_topad -###sidebarad -###sidebarad0 -###sidebaradpane -###sidebarads -###sidebaradsense -###sidebaradverts -###sidebard-ads-wrapper -###sidebargooglead -###sidebargoogleads -###sidebarrectad -###sideline-ad -###sidepad-ad -###single-ad -###single-ad-2 -###single-adblade -###single-mpu -###singleAd -###singleAdsContainer -###singlead -###singleads -###site-ad-container -###site-ads -###site-header__ads -###site-leaderboard-ads -###site-sponsor-ad -###site-sponsors -###siteAdHeader -###site_bottom_ad_div -###site_content_ad_div -###site_top_ad -###site_wrap_ad -###sitead -###skcolAdSky -###skin-ad -###skin-ad-left-rail-container -###skin-ad-right-rail-container -###skinTopAd -###skin_adv -###skinad-left -###skinad-right -###skinningads -###sky-ad -###sky-ads -###sky-left -###sky-right -###skyAd -###skyAdContainer -###skyScraperAd -###skyScrapperAd -###skyWrapperAds -###sky_ad -###sky_advert -###skyads -###skyadwrap -###skybox-ad -###skyline_ad -###skyscrapeAd -###skyscraper-ad -###skyscraperAd -###skyscraperAdContainer -###skyscraperAdWrap -###skyscraperAds -###skyscraperWrapperAd -###skyscraper_ad -###skyscraper_advert -###skyscraperadblock -###skyscrapper-ad -###slideAd -###slide_ad -###slidead -###slideboxad -###slider-ad -###sliderAdHolder -###slider_ad -###sm-banner-ad -###smallAd -###small_ad -###small_ads -###smallad -###smallads -###smallerAd -###sp-adv-banner-top -###specialAd -###special_ads -###specialadfeatures -###specials_ads -###speed_ads -###speeds_ads -###splashy-ad-container-top -###sponBox -###spon_links -###sponlink -###sponlinks -###sponsAds -###sponsLinks -###spons_links -###sponseredlinks -###sponsor-box-widget -###sponsor-flyout -###sponsor-flyout-wrap -###sponsor-links -###sponsor-partners -###sponsor-sidebar-container -###sponsorAd -###sponsorAd1 -###sponsorAd2 -###sponsorAdDiv -###sponsorBar -###sponsorBorder -###sponsorContainer0 -###sponsorFooter -###sponsorLinkDiv -###sponsorLinks -###sponsorResults -###sponsorSpot -###sponsorTab -###sponsorText -###sponsorTextLink -###sponsor_300x250 -###sponsor_ad -###sponsor_ads -###sponsor_bar -###sponsor_bottom -###sponsor_box -###sponsor_deals -###sponsor_div -###sponsor_footer -###sponsor_header -###sponsor_link -###sponsor_no -###sponsor_posts -###sponsor_right -###sponsored-ads -###sponsored-carousel-nucleus -###sponsored-footer -###sponsored-inline -###sponsored-links -###sponsored-links-alt -###sponsored-links-container -###sponsored-listings -###sponsored-message -###sponsored-products -###sponsored-recommendations -###sponsored-resources -###sponsored-search -###sponsored-text-links -###sponsored-widget -###sponsored1 -###sponsoredAd -###sponsoredAdvertisement -###sponsoredBottom -###sponsoredBox1 -###sponsoredBox2 -###sponsoredFeaturedHoz -###sponsoredHoz -###sponsoredLinks -###sponsoredLinksBox -###sponsoredList -###sponsoredResults -###sponsoredResultsWide -###sponsoredTop -###sponsored_ads -###sponsored_container -###sponsored_content -###sponsored_head -###sponsored_label -###sponsored_link_bottom -###sponsored_links -###sponsored_native_ad -###sponsoredad -###sponsoredads -###sponsoredlinks -###sponsorfeature -###sponsorlink -###sponsors-article -###sponsors-block -###sponsors-home -###sponsorsBox -###sponsorsContainer -###sponsorship-area-wrapper -###sponsorship-box -###sporsored-results -###spotlight-ads -###spotlightAds -###spotlight_ad -###spotlightad -###sprint_ad -###sqAd -###sq_ads -###square-ad -###square-ad-box -###square-ad-space -###square-ads -###square-sponsors -###squareAd -###squareAdBottom -###squareAdSpace -###squareAdTop -###squareAdWrap -###squareAds -###squareGoogleAd -###square_ad -###squaread -###squareadevertise -###squareadvert -###squared_ad -###staticad -###stationad -###sticky-ad -###sticky-ad-bottom -###sticky-ad-container -###sticky-ad-header -###sticky-add-side-block -###sticky-ads -###sticky-ads-top -###sticky-custom-ads -###sticky-footer-ad -###sticky-footer-ads -###sticky-left-ad -###sticky-rail-ad -###stickyAd -###stickyAdBlock -###stickyBottomAd -###stickySidebarAd -###stickySkyAd -###sticky_sidebar_ads -###stickyad -###stickyads -###stickyleftad -###stickyrightad -###stopAdv -###stop_ad3 -###story-ad -###story-bottom-ad -###storyAd -###story_ad -###story_ads -###storyad2 -###stripadv -###subheaderAd -###takeover-ad -###takeover_ad -###takeoverad -###td-ad-placeholder -###tdAds -###td_adunit2 -###td_sponsorAd -###team_ad -###teaser3 -###text-ad -###text-ads -###text-intext-ads -###text-link-ads -###textAd -###textAd1 -###textAds -###textAdsTop -###text_ad -###text_ads -###text_advert -###textad -###textad3 -###textlink-advertisement -###textsponsor -###tfm_admanagerTeaser -###tile-ad -###tileAds -###tmInfiniteAd -###toaster_ad -###top-ad -###top-ad-area -###top-ad-banner -###top-ad-container -###top-ad-content -###top-ad-desktop -###top-ad-div -###top-ad-google -###top-ad-iframe -###top-ad-rect -###top-ad-slot -###top-ad-slot-0 -###top-ad-slot-1 -###top-ad-unit -###top-ad-wrapper -###top-adblock -###top-adds -###top-ads -###top-ads-1 -###top-ads-contain -###top-ads-container -###top-adspot -###top-advert -###top-advertisement -###top-advertisements -###top-advertising-content -###top-banner-ad -###top-banner-ad-browser -###top-buy-sell-ads -###top-dfp -###top-head-ad -###top-leaderboard-ad -###top-left-ad -###top-middle-add -###top-not-ads -###top-right-ad -###top-right-ad-slot -###top-skin-ad -###top-skin-ad-bg -###top-sponsor-ad -###top-story-ad -###topAD -###topAd -###topAd728x90 -###topAdArea -###topAdBanner -###topAdBar -###topAdBox -###topAdContainer -###topAdDiv -###topAdDropdown -###topAdHolder -###topAdShow -###topAdSpace -###topAdSpace_div -###topAdWrapper -###topAdcontainer -###topAds -###topAds1 -###topAds2 -###topAdsContainer -###topAdsDiv -###topAdsG -###topAdv -###topAdvBox -###topAdvert -###topBanner-ad -###topBannerAd -###topBannerAdContainer -###topBannerAdv -###topImgAd -###topLeaderboardAd -###topMPU -###topMpuContainer -###topSponsorBanner -###topSponsoredLinks -###top_AD -###top_ad -###top_ad-360 -###top_ad_area -###top_ad_banner -###top_ad_block -###top_ad_box -###top_ad_container -###top_ad_td -###top_ad_unit -###top_ad_wrapper -###top_ad_zone -###top_add -###top_ads -###top_ads_box -###top_ads_container -###top_ads_region -###top_ads_wrap -###top_adsense_cont -###top_adspace -###top_adv -###top_advert -###top_advert_box -###top_advertise -###top_advertising -###top_banner_ads -###top_container_ad -###top_google_ads -###top_mpu -###top_mpu_ad -###top_rectangle_ad -###top_right_ad -###top_row_ad -###top_span_ad -###top_sponsor_ads -###top_sponsor_text -###top_wide_ad -###topad -###topad-728x90 -###topad-block -###topad-wrap -###topad1 -###topad2 -###topad728 -###topad_holder -###topad_left -###topad_right -###topad_table -###topadbanner -###topadbanner2 -###topadbar -###topadblock -###topadcell -###topadcontainer -###topaddwide -###topadleft -###topadone -###topadplaceholder -###topadright -###topads-spacer -###topads-wrapper -###topadsblock -###topadsdiv -###topadsense -###topadspace -###topadvert -###topadwrap -###topadz -###topadzone -###topbanner_ad -###topbanner_sponsor -###topbannerad -###topbanneradtitle -###topbar-ad -###topbarAd -###topbarad -###topbarads -###topcustomad -###topheader_ads -###topleaderAd -###topleaderboardad -###topnavad -###toppannonse -###topright-ad -###toprightAdvert -###toprightad -###toprow-ad -###topsidebar-ad -###topsponad -###topsponsorads -###topsponsored -###toptextad -###tor-footer-ad -###tower1ad -###towerAdContainer -###towerad -###tpd-post-header-ad -###tpl_advertising -###transparentad -###trc_google_ad -###txtAdHeader -###upper-ads -###upperMpu -###upperRightAds -###upper_adbox -###upper_advertising -###upper_small_ad -###upperad -###vc-maincontainer-ad -###vc-maincontainer-midad -###velsof_wheel_container -###vert-ads -###vertAd2 -###vert_ad -###vert_ad_placeholder -###vertad1 -###vertical.ad -###verticalAds -###vertical_ad -###vertical_ads -###verticalads -###video-ad -###video-ad-companion-rectangle -###video-adv -###video-adv-wrapper -###video-advert -###video-embed-ads -###video-in-player-ad -###video-side-adv -###video-sponsor-links -###video-under-player-ad -###videoAd -###videoAdContainer -###videoAdvert -###videoCompanionAd -###videoOverAd -###videoOverAd300 -###videoPauseAd -###video_adv -###video_advert -###video_advert_top -###video_embed_ads -###video_hor_bot_ads -###video_overlay_ad -###videoad -###videoad-script-cnt -###videoads -###viewAd1 -###viewabilityAdContainer -###visual-ad -###vuukle-quiz-and-ad -###vuukle_ads_square2 -###wTopAd -###wallAd -###wall_advert -###wd-sponsored -###weather-ad -###weather_sponsor -###weatherad -###welcome_ad -###wg_ads -###wgtAd -###whitepaper-ad -###wide-ad -###wideAdd -###wide_ad_unit -###wide_ad_unit2 -###wide_ad_unit3 -###wide_adv -###wide_right_ad -###widget-ads-3 -###widget-ads-4 -###widget-adv-12 -###widget-box-ad-1 -###widget-box-ad-2 -###widget_Adverts -###widget_ad -###widget_advertisement -###widget_thrive_ad_default-2 -###widget_thrive_ad_default-4 -###widgetwidget_adserve -###widgetwidget_adserve2 -###wl-pencil-ad -###wow-ads -###wp-insert-ad-widget-1 -###wp-topAds -###wp_ad_marker -###wp_adbn_root -###wp_ads_gpt_widget-16 -###wp_ads_gpt_widget-17 -###wp_ads_gpt_widget-18 -###wp_ads_gpt_widget-19 -###wp_ads_gpt_widget-21 -###wp_ads_gpt_widget-4 -###wp_ads_gpt_widget-5 -###wpladbox1 -###wpladbox2 -###wrapAd -###wrapAdRight -###wrapCommentAd -###wrapper-AD_G -###wrapper-AD_L -###wrapper-AD_L2 -###wrapper-AD_L3 -###wrapper-AD_PUSH -###wrapper-AD_R -###wrapper-ad -###wrapper-ad970 -###wrapperAdsTopLeft -###wrapperAdsTopRight -###wrapperRightAds -###wrapper_ad_Top -###wrapper_sponsoredlinks -###wrapper_topad -###wtopad -###yahoo-sponsors -###yahooAdsBottom -###yahooSponsored -###yahoo_ads -###yahoo_text_ad -###yahooads -###yandex_ad -###yatadsky -###yrail_ads -###yreSponsoredLinks -###ysm_ad_iframe -###zMSplacement1 -###zMSplacement2 -###zMSplacement3 -###zMSplacement4 -###zMSplacement5 -###zMSplacement6 -###zdcFloatingBtn -###zeus_top-banner -###zone-adsense -###zsAdvertisingBanner -##.-advertsSidebar -##.ADBAR -##.ADBox -##.ADFooter -##.ADInfo -##.ADLeader -##.ADMiddle1 -##.ADPod -##.ADServer -##.ADStyle -##.ADTop -##.ADVBig -##.ADVFLEX_250 -##.ADVParallax -##.ADV_Mobile -##.AD_2 -##.AD_area -##.ADbox -##.ADmid -##.ADwidget -##.ATF_wrapper -##.Ad--Align -##.Ad--empty -##.Ad--header -##.Ad--loading -##.Ad--presenter -##.Ad--sidebar -##.Ad-Advert_Container -##.Ad-Container -##.Ad-Header -##.Ad-Inner -##.Ad-adhesive -##.Ad-hor-height -##.Ad-label -##.Ad-leaderboard -##.Ad.Leaderboard -##.Ad300 -##.Ad3Tile -##.Ad728x90 -##.AdBar -##.AdBody:not(body) -##.AdBorder -##.AdBottomPage -##.AdBox -##.AdBox160 -##.AdBox7 -##.AdBox728 -##.AdCenter -##.AdCommercial -##.AdCompactheader -##.AdContainer -##.AdContainer-Sidebar -##.AdHeader -##.AdHere -##.AdHolder -##.AdInline -##.AdInsLink -##.AdLeft1 -##.AdLeft2 -##.AdMedium -##.AdMessage -##.AdMod -##.AdModule -##.AdOneColumnContainer -##.AdOuterMostContainer -##.AdPanel -##.AdPlaceHolder -##.AdPlaceholder -##.AdPlacementContainer -##.AdProduct -##.AdRight1 -##.AdRight2 -##.AdSense -##.AdSenseLeft -##.AdSlot -##.AdSpace -##.AdSpeedWP -##.AdTagModule -##.AdTitle -##.AdTop -##.AdUnit -##.Ad_C -##.Ad_D -##.Ad_Label -##.Ad_Right -##.Ad_container -##.Ads--center -##.Ads-768x90 -##.Ads-background -##.Ads-leaderboard -##.Ads-slot -##.Ads-sticky -##.AdsBottom -##.AdsBox -##.AdsBoxBottom -##.AdsBoxSection -##.AdsBoxTop -##.AdsLayout__top-container -##.AdsRectangleWrapper -##.AdsSlot -##.Ads__wrapper -##.Ads_header -##.Adsense -##.AdsenseBox -##.Adsterra -##.Adtext -##.Adv468 -##.Advert-label -##.Advert300x250 -##.AdvertContainer -##.AdvertWrapper -##.AdvertisementAfterHeader -##.AdvertisementAfterPost -##.AdvertisementAsidePost -##.AdvertisementText -##.AdvertisementTextTag -##.AdvertisementTop -##.Advertisment -##.AdvertorialTeaser -##.AdvtSample -##.AdzerkBanner -##.AffiliateAds -##.AppFooter__BannerAd -##.Arpian-ads -##.Article-advert -##.ArticleAd -##.ArticleAdSide -##.ArticleAdWrapper -##.ArticleInlineAd -##.ArticleInnerAD -##.Article__Ad -##.BOX_Ad -##.BOX_LeadAd -##.Banner300x250 -##.Banner468X60 -##.BigBoxAd -##.BigBoxAdLabel -##.Billboard-ad -##.Billboard-ad-holder -##.Billboard_2-ad-holder -##.Billboard_3-ad-holder -##.Billboard_4-ad-holder -##.Billboard_5-ad-holder -##.BlockAd -##.BottomAd-container -##.BottomAdContainer -##.BottomAdsPartial -##.BottomAffiliate -##.BoxAd -##.BoxAdWrap -##.BoxRail-ad -##.ButtonAd -##.CommentAd -##.ConnatixAd -##.ContentAd -##.ContentAds -##.ContentBottomAd -##.ContentTextAd -##.ContentTopAd -##.DFPad -##.DisplayAd -##.FirstAd -##.FooterAd -##.FooterAdContainer -##.FooterAds -##.Footer_1-ad-holder -##.GRVAd -##.GRVMpuWrapper -##.GRVMultiVideo -##.Gallery-Content-BottomAd -##.GeminiAdItem -##.GeminiNativeAd -##.GoogleAdv -##.GoogleDfpAd -##.GoogleDfpAd-Content -##.GoogleDfpAd-Float -##.GoogleDfpAd-container -##.GoogleDfpAd-wrap -##.GoogleDfpAd-wrapper -##.GoogleDfpAdModule -##.GoogleDoubleClick-SponsorText -##.GroupAdSense -##.HeaderAd -##.HeaderAds -##.HeaderBannerAd -##.HeadingAdSpace -##.Hero-Ad -##.HomeAds -##.InArticleAd -##.IndexRightAd -##.InsertedAd -##.LastAd -##.LayoutBottomAds -##.LayoutHomeAds -##.LayoutHomeAdsAd -##.LayoutPromotionAdsNew -##.LazyLoadAd -##.LeaderAd -##.LeaderAdvertisement -##.LeaderBoardAd -##.LearderAd_Border -##.ListicleAdRow -##.MPUHolder -##.MPUad -##.MapLayout_BottomAd -##.MapLayout_BottomMobiAd -##.MarketGid_container -##.MbanAd -##.MiddleAd -##.MiddleAdContainer -##.MiddleAdvert -##.MiddleRightRadvertisement -##.NA_ad -##.NR-Ads -##.NativeAdContainerRegion -##.NavBarAd -##.Normal-add -##.OAS_wrap -##.OcelotAdModule -##.OcelotAdModule-ad -##.PPD_ADS_JS -##.Page-ad -##.PageTopAd -##.PcSideBarAd -##.PencilAd -##.PostAdvertisementBeforePost -##.PostSidebarAd -##.Post__ad -##.PrimisResponsiveStyle -##.PrintAd-Slider -##.ProductAd -##.PushdownAd -##.RectangleAd -##.Rectangle_1-ad-holder -##.Rectangle_2-ad-holder -##.Rectangle_3-ad-holder -##.RelatedAds -##.ResponsiveAd -##.RightAd -##.RightAd1 -##.RightAd2 -##.RightAdvertisement -##.RightGoogleAd -##.RightRailAd -##.RightRailAds -##.RightTowerAd -##.STR_AdBlock -##.SecondaryAd -##.SecondaryAdLink -##.Section-ad -##.SectionSponsor -##.SideAd -##.SideAdCol -##.SideAds -##.SideWidget__ad -##.Sidebar-ad -##.Sidebar-ad--300x600 -##.SidebarAd -##.SidebarAdvert -##.SidebarRightAdvertisement -##.SimpleAd -##.SkyAdContainer -##.SkyAdContent -##.SkyScraperAd -##.SovrnAd -##.Sponsor-container -##.SponsorHeader -##.SponsorIsland -##.SponsorLink -##.SponsoredAdTitle -##.SponsoredArticleAd -##.SponsoredContent -##.SponsoredContentWidget -##.SponsoredLinks -##.SponsoredLinksModule -##.SponsoredLinksPadding -##.SponsoredLinksPanel -##.SponsoredResults -##.Sponsored_link -##.SponsorshipText -##.SquareAd -##.Squareadspot -##.StandardAdLeft -##.StandardAdRight -##.Sticky-AdContainer -##.StickyAdRail__Inner -##.SummaryPage-HeaderAd -##.TextAd -##.TextAdds -##.Textads -##.ThreeAds -##.TmnAdsense -##.TopAd -##.TopAdBox -##.TopAdContainer -##.TopAdL -##.TopAdR -##.TopAds -##.TopAdsPartial -##.TopBannerAd -##.TopRightRadvertisement -##.Top_Ad -##.TrackedBannerPromo -##.TrackedSidebarPromo -##.TrafficAd -##.U210-adv-column -##.UnderAd -##.VPCarbonAds -##.VerticalAd -##.Video-Ad -##.VideoAd -##.WPBannerizeWidget -##.WP_Widget_Ad_manager -##.WideAdTile -##.WideAdsLeft -##.WidgetAdvertiser -##.WidthAd -##.WikiaTopAds -##.\[\&_\.gdprAdTransparencyCogWheelButton\]\:\!pjra-z-\[5\] -##._SummaryPageHeaderAdView -##._SummaryPageSidebarStickyAdView -##.__isboostOverContent -##._ads -##._ads-full -##._ap_adrecover_ad -##._ap_apex_ad -##._articleAdvert -##._bannerAds -##._bottom_ad_wrapper -##._ciw-betterAds -##._fullsquaread -##._has-ads -##._popIn_recommend_article_ad -##._popIn_recommend_article_ad_reserved -##._table_ad_div_wide -##.a-ad -##.a-ad--aside -##.a-ad--leaderboard -##.a-ad--skyscraper -##.a-ad--wide -##.a-d-250 -##.a-d-90 -##.a-d-container -##.a-d-holder-container -##.a-dserver -##.a-dserver_text -##.a-sponsor -##.a160x600 -##.a300x250 -##.a468x60 -##.a728x90 -##.aadsection_b1 -##.aadsection_b2 -##.aarpe-ad-wrapper -##.ab-ad_placement-article -##.abBoxAd -##.abMessage -##.abPopup -##.ablock300 -##.ablock468 -##.ablock728 -##.above-header-advert -##.aboveCommentAds -##.abovead -##.ac-banner-ad -##.ac-widget-placeholder -##.ac_adbox -##.acm-ad-container -##.acm-ad-tag-unit -##.acm_ad_zones -##.ad--300 -##.ad--300x250 -##.ad--468 -##.ad--468-60 -##.ad--728x90 -##.ad--970-750-336-300 -##.ad--970-90 -##.ad--article -##.ad--article-top -##.ad--articlemodule -##.ad--b -##.ad--banner -##.ad--banner2 -##.ad--banniere_basse -##.ad--banniere_haute -##.ad--billboard -##.ad--bottom -##.ad--bottom-label -##.ad--bottommpu -##.ad--boundries -##.ad--button -##.ad--c -##.ad--center -##.ad--centered -##.ad--container -##.ad--content -##.ad--content-ad -##.ad--dart -##.ad--desktop -##.ad--displayed -##.ad--droite_basse -##.ad--droite_haute -##.ad--droite_middle -##.ad--e -##.ad--fallback -##.ad--footer -##.ad--fullsize -##.ad--google -##.ad--halfpage -##.ad--header -##.ad--homepage-top -##.ad--in-article -##.ad--in-content -##.ad--inArticleBanner -##.ad--inline -##.ad--inner -##.ad--large -##.ad--leaderboard -##.ad--loading -##.ad--medium-rectangle -##.ad--medium_rectangle -##.ad--medium_rectangle_outstream -##.ad--mediumrectangle -##.ad--mid -##.ad--mid-content -##.ad--mobile -##.ad--mpu -##.ad--native -##.ad--nativeFlex -##.ad--no-bg -##.ad--noscroll -##.ad--object -##.ad--outstream -##.ad--overlayer -##.ad--p1 -##.ad--p2 -##.ad--p3 -##.ad--p4 -##.ad--p6 -##.ad--p7 -##.ad--placeholder -##.ad--pubperform -##.ad--pushdown -##.ad--rail -##.ad--rectangle -##.ad--rectangle1 -##.ad--rectangle2 -##.ad--right -##.ad--rightRail -##.ad--scroll -##.ad--section -##.ad--sidebar -##.ad--sky -##.ad--skyscraper -##.ad--slider -##.ad--slot -##.ad--sponsor-content -##.ad--square-rectangle -##.ad--sticky -##.ad--stripe -##.ad--stroeer -##.ad--subcontainer -##.ad--top -##.ad--top-desktop -##.ad--top-leaderboard -##.ad--top-slot -##.ad--topmobile -##.ad--topmobile2 -##.ad--topmobile3 -##.ad--wallpaper -##.ad--widget -##.ad--wrapper -##.ad-1 -##.ad-120-60 -##.ad-120x60 -##.ad-120x600 -##.ad-120x90 -##.ad-125x125 -##.ad-13 -##.ad-137 -##.ad-14 -##.ad-160 -##.ad-160-160 -##.ad-160-600 -##.ad-160x600 -##.ad-2 -##.ad-200 -##.ad-200x200 -##.ad-250 -##.ad-250x300 -##.ad-3 -##.ad-300 -##.ad-300-2 -##.ad-300-250-600 -##.ad-300-600 -##.ad-300-b -##.ad-300-block -##.ad-300-dummy -##.ad-300-flex -##.ad-300-x-250 -##.ad-300X250 -##.ad-300X250-body -##.ad-300x -##.ad-300x100 -##.ad-300x200 -##.ad-300x250 -##.ad-300x600 -##.ad-336 -##.ad-336x280 -##.ad-336x280B -##.ad-350 -##.ad-4 -##.ad-468 -##.ad-468x120 -##.ad-468x60 -##.ad-5 -##.ad-544x250 -##.ad-55 -##.ad-560 -##.ad-6 -##.ad-600 -##.ad-600-h -##.ad-635x40 -##.ad-7 -##.ad-728 -##.ad-728-90 -##.ad-728-banner -##.ad-728-x-90 -##.ad-728x90 -##.ad-728x90-1 -##.ad-728x90-top -##.ad-728x90-top0 -##.ad-728x90-wrapper -##.ad-728x90_forum -##.ad-768 -##.ad-8 -##.ad-88-60 -##.ad-88x31 -##.ad-9 -##.ad-90 -##.ad-90x600 -##.ad-970 -##.ad-970-250 -##.ad-970-90 -##.ad-Advert_Placeholder -##.ad-E -##.ad-LREC -##.ad-LREC2 -##.ad-Leaderboard -##.ad-MPU -##.ad-MediumRectangle -##.ad-PENCIL -##.ad-S -##.ad-Square -##.ad-SuperBanner -##.ad-TOPPER -##.ad-W -##.ad-a -##.ad-ab -##.ad-abc -##.ad-above-header -##.ad-accordion -##.ad-active -##.ad-adSense -##.ad-adcode -##.ad-adhesion -##.ad-adlink-bottom -##.ad-adlink-side -##.ad-adsense -##.ad-adsense-block-250 -##.ad-advertisement-horizontal -##.ad-affiliate -##.ad-after-content -##.ad-after-header -##.ad-align-none -##.ad-aligncenter -##.ad-alignment -##.ad-alsorectangle -##.ad-anchor -##.ad-aps-wide -##.ad-area -##.ad-area--pd -##.ad-area-small -##.ad-article-breaker -##.ad-article-inline -##.ad-article-teaser -##.ad-article-wrapper -##.ad-aside-pc-billboard -##.ad-atf -##.ad-atf-top -##.ad-background -##.ad-background-center -##.ad-background-container -##.ad-ban -##.ad-banner-2 -##.ad-banner-250x600 -##.ad-banner-300 -##.ad-banner-300x250 -##.ad-banner-5 -##.ad-banner-6 -##.ad-banner-728x90 -##.ad-banner-bottom-container -##.ad-banner-box -##.ad-banner-btf -##.ad-banner-container -##.ad-banner-content -##.ad-banner-full-wrapper -##.ad-banner-header -##.ad-banner-image -##.ad-banner-inlisting -##.ad-banner-leaderboard -##.ad-banner-placeholder -##.ad-banner-single -##.ad-banner-smaller -##.ad-banner-static -##.ad-banner-top -##.ad-banner-top-wrapper -##.ad-banner-wrapper -##.ad-banners -##.ad-bar -##.ad-bar-header -##.ad-bb -##.ad-before-header -##.ad-below -##.ad-below-images -##.ad-below-player -##.ad-belowarticle -##.ad-bg -##.ad-big -##.ad-big-box -##.ad-bigbanner -##.ad-bigbillboard -##.ad-bigbox -##.ad-bigbox-double-inread -##.ad-bigbox-fixed -##.ad-bigsize -##.ad-billboard -##.ad-bline -##.ad-block -##.ad-block--300 -##.ad-block--leader -##.ad-block-300 -##.ad-block-banner-container -##.ad-block-big -##.ad-block-bottom -##.ad-block-btf -##.ad-block-container -##.ad-block-header -##.ad-block-holder -##.ad-block-inside -##.ad-block-mod -##.ad-block-section -##.ad-block-square -##.ad-block-sticky-ad -##.ad-block-wide -##.ad-block-wk -##.ad-block-wrapper -##.ad-block-wrapper-dev -##.ad-blogads -##.ad-bnr -##.ad-body -##.ad-boombox -##.ad-border -##.ad-bordered -##.ad-borderless -##.ad-bot -##.ad-bottom -##.ad-bottom-container -##.ad-bottom-right-container -##.ad-bottom728x90 -##.ad-bottomLeft -##.ad-bottomleader -##.ad-bottomline -##.ad-box-2 -##.ad-box-300x250 -##.ad-box-auto -##.ad-box-caption -##.ad-box-container -##.ad-box-title -##.ad-box-up -##.ad-box-video -##.ad-box-wrapper -##.ad-box1 -##.ad-box2 -##.ad-box3 -##.ad-box:not(#ad-banner):not(:empty) -##.ad-box_h -##.ad-boxamp-wrapper -##.ad-boxbottom -##.ad-boxes -##.ad-boxsticky -##.ad-boxtop -##.ad-brdr-btm -##.ad-break -##.ad-break-item -##.ad-breaker -##.ad-breakout -##.ad-browse-rectangle -##.ad-bt -##.ad-btn -##.ad-btn-heading -##.ad-bug-300w -##.ad-burnside -##.ad-button -##.ad-buttons -##.ad-c-label -##.ad-cad -##.ad-calendar -##.ad-call-300x250 -##.ad-callout -##.ad-callout-wrapper -##.ad-caption -##.ad-card -##.ad-card-container -##.ad-carousel -##.ad-cat -##.ad-catfish -##.ad-cell -##.ad-cen -##.ad-cen2 -##.ad-cen3 -##.ad-center -##.ad-centered -##.ad-centering -##.ad-chartbeatwidget -##.ad-choices -##.ad-circ -##.ad-click -##.ad-close-button -##.ad-cls -##.ad-cls-fix -##.ad-cnt -##.ad-code -##.ad-codes -##.ad-col -##.ad-col-02 -##.ad-colour -##.ad-column -##.ad-comment -##.ad-companion -##.ad-complete -##.ad-component -##.ad-component-fullbanner2 -##.ad-component-wrapper -##.ad-contain -##.ad-contain-300x250 -##.ad-contain-top -##.ad-container--inline -##.ad-container--leaderboard -##.ad-container--masthead -##.ad-container--mrec -##.ad-container--stripe -##.ad-container--top -##.ad-container-160x600 -##.ad-container-300x250 -##.ad-container-728 -##.ad-container-728x90 -##.ad-container-adsense -##.ad-container-banner-top -##.ad-container-bot -##.ad-container-bottom -##.ad-container-box -##.ad-container-embedded -##.ad-container-header -##.ad-container-inner -##.ad-container-inthread -##.ad-container-leaderboard -##.ad-container-left -##.ad-container-m -##.ad-container-medium-rectangle -##.ad-container-middle -##.ad-container-multiple -##.ad-container-pave -##.ad-container-property -##.ad-container-responsive -##.ad-container-right -##.ad-container-side -##.ad-container-single -##.ad-container-tool -##.ad-container-top -##.ad-container-topad -##.ad-container-wrapper -##.ad-container1 -##.ad-container3x -##.ad-container__ad-slot -##.ad-container__leaderboard -##.ad-container__sticky-wrapper -##.ad-container_row -##.ad-content -##.ad-content-area -##.ad-content-rectangle -##.ad-content-slot -##.ad-content-wrapper -##.ad-context -##.ad-cover -##.ad-critical -##.ad-cta -##.ad-current -##.ad-curtain -##.ad-custom-size -##.ad-d -##.ad-decoration -##.ad-defer -##.ad-desktop -##.ad-desktop-in-content -##.ad-desktop-legacy -##.ad-desktop-native-1 -##.ad-desktop-native-2 -##.ad-desktop-only -##.ad-desktop-right -##.ad-detail -##.ad-dfp-column -##.ad-dfp-row -##.ad-disclaimer -##.ad-disclaimer-container -##.ad-disclaimer-text -##.ad-display -##.ad-displayed -##.ad-diver -##.ad-divider -##.ad-dog -##.ad-dog__cnx-container -##.ad-dog__ratio-16x9 -##.ad-dt -##.ad-dx_wrp -##.ad-e -##.ad-element -##.ad-enabled -##.ad-engage -##.ad-entity-container -##.ad-entry-wrapper -##.ad-ex -##.ad-exchange -##.ad-expand -##.ad-external -##.ad-fadein -##.ad-fadeup -##.ad-feature-content -##.ad-feature-sponsor -##.ad-feature-text -##.ad-featured-video-caption -##.ad-feedback -##.ad-fi -##.ad-field -##.ad-filler -##.ad-filmstrip -##.ad-first -##.ad-fix -##.ad-fixed -##.ad-flag -##.ad-flex -##.ad-flex-center -##.ad-float -##.ad-floating -##.ad-floor -##.ad-footer -##.ad-footer-empty -##.ad-footer-leaderboard -##.ad-format-300x250 -##.ad-format-300x600 -##.ad-forum -##.ad-frame -##.ad-frame-container -##.ad-full -##.ad-full-width -##.ad-fullbanner -##.ad-fullbanner-btf-container -##.ad-fullbannernohieght -##.ad-fullwidth -##.ad-gap-sm -##.ad-giga -##.ad-google -##.ad-google-contextual -##.ad-gpt -##.ad-gpt-breaker -##.ad-gpt-container -##.ad-gpt-main -##.ad-gpt-vertical -##.ad-graphic-large -##.ad-gray -##.ad-grey -##.ad-grid -##.ad-grid-125 -##.ad-grid-container -##.ad-group -##.ad-halfpage -##.ad-halfpage-placeholder -##.ad-hdr -##.ad-head -##.ad-header -##.ad-header-below -##.ad-header-container -##.ad-header-creative -##.ad-header-inner-wrap -##.ad-header-pencil -##.ad-header-placeholder -##.ad-header-sidebar -##.ad-header-small-square -##.ad-heading -##.ad-height-250 -##.ad-height-280 -##.ad-height-600 -##.ad-here -##.ad-hero -##.ad-hide-mobile -##.ad-hideable -##.ad-hint -##.ad-hldr-tmc -##.ad-ho -##.ad-hold -##.ad-holder -##.ad-holder-center -##.ad-holder-mob-300 -##.ad-home-bottom -##.ad-home-leaderboard-placeholder -##.ad-home-right -##.ad-homeleaderboard -##.ad-homepage -##.ad-homepage-1 -##.ad-homepage-2 -##.ad-homepage-one -##.ad-hor -##.ad-horizontal -##.ad-horizontal-large -##.ad-horizontal-top -##.ad-horizontal-top-wrapper -##.ad-house-btac -##.ad-housepromo-d-wrapper -##.ad-hoverable -##.ad-hpto -##.ad-href1 -##.ad-href2 -##.ad-iab-txt -##.ad-icon -##.ad-identifier -##.ad-iframe -##.ad-iframe-container -##.ad-in-content -##.ad-in-content-300 -##.ad-in-post -##.ad-in-read -##.ad-in-results -##.ad-inStory -##.ad-incontent -##.ad-incontent-wrap -##.ad-index-main -##.ad-indicator-horiz -##.ad-info-wrap -##.ad-inline -##.ad-inline-article -##.ad-inline-block -##.ad-inner -##.ad-inner-container -##.ad-inner-container-background -##.ad-innr -##.ad-insert -##.ad-inserter-widget -##.ad-inside -##.ad-integrated-display -##.ad-internal -##.ad-interruptor -##.ad-interstitial -##.ad-island -##.ad-item -##.ad-item-related -##.ad-label -##.ad-lable -##.ad-landscape -##.ad-large-1 -##.ad-large-game -##.ad-last -##.ad-lat -##.ad-lat2 -##.ad-layer -##.ad-lazy -##.ad-lb -##.ad-ldrbrd -##.ad-lead -##.ad-lead-bottom -##.ad-leader -##.ad-leader-board -##.ad-leader-bottom -##.ad-leader-plus-top -##.ad-leader-top -##.ad-leader-wrap -##.ad-leader-wrapper -##.ad-leaderboard -##.ad-leaderboard-base -##.ad-leaderboard-companion -##.ad-leaderboard-container -##.ad-leaderboard-flex -##.ad-leaderboard-footer -##.ad-leaderboard-header -##.ad-leaderboard-middle -##.ad-leaderboard-placeholder -##.ad-leaderboard-slot -##.ad-leaderboard-splitter -##.ad-leaderboard-top -##.ad-leaderboard-wrapper -##.ad-leaderbody -##.ad-leaderheader -##.ad-leadtop -##.ad-left-1 -##.ad-left-top -##.ad-leftrail -##.ad-lib-div -##.ad-line -##.ad-link -##.ad-link-block -##.ad-link-label -##.ad-link-left -##.ad-link-right -##.ad-links -##.ad-links-text -##.ad-list-desktop -##.ad-list-item -##.ad-loaded -##.ad-loader -##.ad-location -##.ad-location-container -##.ad-lock -##.ad-lock-content -##.ad-lowerboard -##.ad-lrec -##.ad-m-banner -##.ad-m-mrec -##.ad-m-rec -##.ad-mad -##.ad-main -##.ad-manager-ad -##.ad-manager-placeholder -##.ad-manager-wrapper -##.ad-margin -##.ad-marketplace -##.ad-marketswidget -##.ad-marquee -##.ad-masthead -##.ad-masthead-1 -##.ad-masthead-left -##.ad-mb -##.ad-med -##.ad-med-rec -##.ad-med-rect -##.ad-med-rect-tmp -##.ad-medium -##.ad-medium-container -##.ad-medium-content -##.ad-medium-rectangle -##.ad-medium-rectangle-base -##.ad-medium-two -##.ad-medium-widget -##.ad-medrect -##.ad-megaboard -##.ad-message -##.ad-messaging -##.ad-microsites -##.ad-midleader -##.ad-mobile -##.ad-mobile--sticky -##.ad-mobile-300x150 -##.ad-mobile-300x250 -##.ad-mobile-300x50 -##.ad-mobile-banner -##.ad-mobile-flex-inc -##.ad-mobile-flex-pos2 -##.ad-mobile-incontent-ad-plus -##.ad-mobile-mpu-plus-outstream-inc -##.ad-mobile-nav-ad-plus -##.ad-mod -##.ad-mod-section -##.ad-mod-section-728-90 -##.ad-module -##.ad-mount -##.ad-mpl -##.ad-mpu -##.ad-mpu-bottom -##.ad-mpu-container -##.ad-mpu-middle -##.ad-mpu-middle2 -##.ad-mpu-placeholder -##.ad-mpu-plus-top -##.ad-mpu-top -##.ad-mpu__aside -##.ad-mpufixed -##.ad-mr-article -##.ad-mrec -##.ad-mrect -##.ad-msg -##.ad-msn -##.ad-native -##.ad-native-top-sidebar -##.ad-nav-ad -##.ad-nav-ad-plus -##.ad-new -##.ad-new-box -##.ad-no-css -##.ad-no-mobile -##.ad-no-notice -##.ad-no-style -##.ad-noBorderAndMargin -##.ad-noline -##.ad-note -##.ad-notice -##.ad-notice-small -##.ad-observer -##.ad-oms -##.ad-on -##.ad-on-top -##.ad-one -##.ad-other -##.ad-outer -##.ad-outlet -##.ad-outline -##.ad-output-middle -##.ad-output-wrapper -##.ad-outside -##.ad-overlay -##.ad-packs -##.ad-padding -##.ad-page-leader -##.ad-page-medium -##.ad-page-setting -##.ad-pagehead -##.ad-panel -##.ad-panel-wrap -##.ad-panel__container -##.ad-panel__container--styled -##.ad-panel__googlead -##.ad-panorama -##.ad-parallax -##.ad-parent-class -##.ad-pb -##.ad-peg -##.ad-pencil-margin -##.ad-permalink -##.ad-personalise -##.ad-place -##.ad-place-active -##.ad-place-holder -##.ad-placeholder -##.ad-placeholder--mpu -##.ad-placeholder-leaderboard -##.ad-placeholder-wrapper -##.ad-placeholder-wrapper-dynamic -##.ad-placeholder__inner -##.ad-placement-left -##.ad-placement-right -##.ad-places -##.ad-plea -##.ad-poc -##.ad-poc-admin -##.ad-point -##.ad-popup -##.ad-popup-content -##.ad-pos -##.ad-pos-0 -##.ad-pos-1 -##.ad-pos-2 -##.ad-pos-3 -##.ad-pos-4 -##.ad-pos-5 -##.ad-pos-6 -##.ad-pos-7 -##.ad-pos-8 -##.ad-pos-middle -##.ad-pos-top -##.ad-position -##.ad-position-1 -##.ad-position-2 -##.ad-poss -##.ad-post -##.ad-post-footer -##.ad-post-top -##.ad-postText -##.ad-poster -##.ad-posterad-inlisting -##.ad-preloader-container -##.ad-preparing -##.ad-prevent-jump -##.ad-primary -##.ad-primary-desktop -##.ad-primary-sidebar -##.ad-priority -##.ad-program-list -##.ad-program-top -##.ad-promo -##.ad-pub -##.ad-push -##.ad-pushdown -##.ad-r -##.ad-rac-box -##.ad-rail -##.ad-rail-wrapper -##.ad-ratio -##.ad-rb-hover -##.ad-reader-con-item -##.ad-rect -##.ad-rect-atf-01 -##.ad-rect-top-right -##.ad-rectangle -##.ad-rectangle-1 -##.ad-rectangle-banner -##.ad-rectangle-container -##.ad-rectangle-long -##.ad-rectangle-long-sky -##.ad-rectangle-text -##.ad-rectangle-wide -##.ad-rectangle-xs -##.ad-rectangle2 -##.ad-rectanglemed -##.ad-region -##.ad-region-delay-load -##.ad-related -##.ad-relatedbottom -##.ad-render-space -##.ad-responsive -##.ad-responsive-slot -##.ad-responsive-wide -##.ad-result -##.ad-rev-content -##.ad-rh -##.ad-right -##.ad-right-header -##.ad-right1 -##.ad-right2 -##.ad-right3 -##.ad-risingstar-container -##.ad-roadblock -##.ad-root -##.ad-rotation -##.ad-rotator -##.ad-row -##.ad-row-box -##.ad-row-horizontal -##.ad-row-horizontal-top -##.ad-row-viewport -##.ad-s -##.ad-s-rendered -##.ad-sample -##.ad-script-processed -##.ad-scroll -##.ad-scrollpane -##.ad-search-grid -##.ad-secondary-desktop -##.ad-section -##.ad-section-body -##.ad-section-one -##.ad-section-three -##.ad-section__skyscraper -##.ad-sense -##.ad-sense-ad -##.ad-sep -##.ad-separator -##.ad-shifted -##.ad-show-label -##.ad-showcase -##.ad-side -##.ad-side-one -##.ad-side-top -##.ad-side-wrapper -##.ad-sidebar -##.ad-sidebar-mrec -##.ad-sidebar-skyscraper -##.ad-siderail -##.ad-signup -##.ad-single-bottom -##.ad-sitewide -##.ad-size-300x600 -##.ad-size-728x90 -##.ad-size-landscape -##.ad-size-leaderboard -##.ad-size-medium-rectangle -##.ad-size-medium-rectangle-flex -##.ad-size-mpu -##.ad-skeleton -##.ad-skin-link -##.ad-sky -##.ad-sky-left -##.ad-sky-right -##.ad-sky-wrap -##.ad-skyscr -##.ad-skyscraper -##.ad-skyscraper1 -##.ad-skyscraper2 -##.ad-skyscraper3 -##.ad-slider -##.ad-slot -##.ad-slot--container -##.ad-slot--inline -##.ad-slot--mostpop -##.ad-slot--mpu-banner-ad -##.ad-slot--rendered -##.ad-slot--right -##.ad-slot--top -##.ad-slot--top-above-nav -##.ad-slot--top-banner-ad -##.ad-slot--wrapper -##.ad-slot-1 -##.ad-slot-2 -##.ad-slot-234-60 -##.ad-slot-300-250 -##.ad-slot-728-90 -##.ad-slot-a -##.ad-slot-article -##.ad-slot-banner -##.ad-slot-bigbox -##.ad-slot-billboard -##.ad-slot-box -##.ad-slot-container -##.ad-slot-container-1 -##.ad-slot-desktop -##.ad-slot-full-width -##.ad-slot-header -##.ad-slot-horizontal -##.ad-slot-inview -##.ad-slot-placeholder -##.ad-slot-rail -##.ad-slot-replies -##.ad-slot-replies-header -##.ad-slot-responsive -##.ad-slot-sidebar -##.ad-slot-sidebar-b -##.ad-slot-tall -##.ad-slot-top -##.ad-slot-top-728 -##.ad-slot-widget -##.ad-slot-wrapper -##.ad-slotRg -##.ad-slotRgc -##.ad-slot__ad--top -##.ad-slot__content -##.ad-slot__label -##.ad-slot__oas -##.ad-slots-wrapper -##.ad-slug -##.ad-small -##.ad-small-1 -##.ad-small-2 -##.ad-smallBP -##.ad-source -##.ad-sp -##.ad-space -##.ad-space-mpu-box -##.ad-space-topbanner -##.ad-spacing -##.ad-span -##.ad-speedbump -##.ad-splash -##.ad-sponsor -##.ad-sponsor-large-container -##.ad-sponsor-text -##.ad-sponsored-feed-top -##.ad-sponsored-links -##.ad-sponsored-post -##.ad-sponsors -##.ad-spot -##.ad-spotlight -##.ad-spteaser -##.ad-sq-super -##.ad-square -##.ad-square-placeholder -##.ad-square2-container -##.ad-square300 -##.ad-squares -##.ad-stack -##.ad-standard -##.ad-statement -##.ad-static -##.ad-sticky -##.ad-sticky-banner -##.ad-sticky-bottom -##.ad-sticky-container -##.ad-sticky-slot -##.ad-sticky-wrapper -##.ad-stickyhero -##.ad-stickyhero--standard -##.ad-stickyhero-enable-mobile -##.ad-story-inject -##.ad-story-top -##.ad-strategic -##.ad-strip -##.ad-style2 -##.ad-subnav-container -##.ad-subtitle -##.ad-summary -##.ad-superbanner -##.ad-superbanner-node -##.ad-t -##.ad-t-text -##.ad-table -##.ad-tabs -##.ad-tag -##.ad-tag-square -##.ad-tag__inner -##.ad-tag__wrapper -##.ad-takeover -##.ad-takeover-homepage -##.ad-tall -##.ad-tech-widget -##.ad-temp -##.ad-text -##.ad-text-centered -##.ad-text-label -##.ad-text-link -##.ad-text-links -##.ad-textads -##.ad-textlink -##.ad-thanks -##.ad-ticker -##.ad-tile -##.ad-title -##.ad-tl1 -##.ad-top -##.ad-top-300x250 -##.ad-top-728 -##.ad-top-728x90 -##.ad-top-banner -##.ad-top-billboard -##.ad-top-billboard-init -##.ad-top-box-right -##.ad-top-container -##.ad-top-desktop -##.ad-top-featured -##.ad-top-in -##.ad-top-lboard -##.ad-top-left -##.ad-top-mobile -##.ad-top-mpu -##.ad-top-padding -##.ad-top-rectangle -##.ad-top-right-container -##.ad-top-side -##.ad-top-slot -##.ad-top-spacing -##.ad-top-wrap-inner -##.ad-top-wrapper -##.ad-topbanner -##.ad-topper -##.ad-topright -##.ad-tower -##.ad-tower-container -##.ad-towers -##.ad-transition -##.ad-trck -##.ad-two -##.ad-twos -##.ad-txt -##.ad-txt-red -##.ad-type -##.ad-type-branding -##.ad-type-cube -##.ad-type-flex-leaderboard -##.ad-unit -##.ad-unit--leaderboard -##.ad-unit-2 -##.ad-unit-300 -##.ad-unit-300-wrapper -##.ad-unit-container -##.ad-unit-horisontal -##.ad-unit-inline-center -##.ad-unit-label -##.ad-unit-mpu -##.ad-unit-panel -##.ad-unit-secondary -##.ad-unit-sponsored-bar -##.ad-unit-t -##.ad-unit-text -##.ad-unit-top -##.ad-unit-wrapper -##.ad-unit__inner -##.ad-units-single-header-wrapper -##.ad-update -##.ad-vert -##.ad-vertical -##.ad-vertical-container -##.ad-vertical-stack-ad -##.ad-view-zone -##.ad-w-300 -##.ad-w-728 -##.ad-w-970 -##.ad-warning -##.ad-warp -##.ad-watermark -##.ad-wgt -##.ad-wide -##.ad-wide-bottom -##.ad-wide-wrap -##.ad-widget -##.ad-widget-area -##.ad-widget-box -##.ad-widget-list -##.ad-widget-sizes -##.ad-widget-wrapper -##.ad-widgets -##.ad-width-300 -##.ad-width-728 -##.ad-wireframe -##.ad-wireframe-wrapper -##.ad-with-background -##.ad-with-header-wrapper -##.ad-with-notice -##.ad-wp -##.ad-wp-720 -##.ad-wppr -##.ad-wppr-container -##.ad-wrap -##.ad-wrap-leaderboard -##.ad-wrap-transparent -##.ad-wrap_wallpaper -##.ad-wrapp -##.ad-wrapper -##.ad-wrapper--ad-unit-wrap -##.ad-wrapper--articletop -##.ad-wrapper--lg -##.ad-wrapper--sidebar -##.ad-wrapper-250 -##.ad-wrapper-bg -##.ad-wrapper-left -##.ad-wrapper-mobile-atf -##.ad-wrapper-outer -##.ad-wrapper-solid -##.ad-wrapper-sticky -##.ad-wrapper-top -##.ad-wrapper-with-text -##.ad-wrapper__ad-slug -##.ad-xs-title -##.ad-zone -##.ad-zone-ajax -##.ad-zone-container -##.ad.addon -##.ad.bottomrect -##.ad.box -##.ad.brandboard -##.ad.card -##.ad.center -##.ad.contentboard -##.ad.desktop-970x250 -##.ad.element -##.ad.floater-link -##.ad.gallery -##.ad.halfpage -##.ad.inner -##.ad.item -##.ad.leaderboard -##.ad.maxiboard -##.ad.maxisky -##.ad.middlerect -##.ad.module -##.ad.monsterboard -##.ad.netboard -##.ad.post-area -##.ad.promotion -##.ad.rectangle -##.ad.rectangle_2 -##.ad.rectangle_3 -##.ad.rectangle_home_1 -##.ad.section -##.ad.sidebar-module -##.ad.size-300x250 -##.ad.skybridgeleft -##.ad.small-mpu -##.ad.small-teaser -##.ad.super -##.ad.wideboard_tablet -##.ad.widget -##.ad02 -##.ad03 -##.ad04 -##.ad08sky -##.ad1-float -##.ad1-left -##.ad1-right -##.ad10 -##.ad100 -##.ad1000 -##.ad1001 -##.ad100x100 -##.ad120 -##.ad120_600 -##.ad120x120 -##.ad120x240GrayBorder -##.ad120x60 -##.ad120x600 -##.ad125 -##.ad125x125 -##.ad125x125a -##.ad125x125b -##.ad140 -##.ad160 -##.ad160600 -##.ad160_blk -##.ad160_l -##.ad160_r -##.ad160b -##.ad160x160 -##.ad160x600 -##.ad160x600GrayBorder -##.ad160x600_1 -##.ad160x600box -##.ad170x30 -##.ad18 -##.ad180 -##.ad180x80 -##.ad185x100 -##.ad19 -##.ad1Image -##.ad1_bottom -##.ad1_latest -##.ad1_top -##.ad1b -##.ad1left -##.ad1x1 -##.ad2-float -##.ad200 -##.ad200x60 -##.ad220x50 -##.ad230 -##.ad233x224 -##.ad234 -##.ad234x60 -##.ad236x62 -##.ad240 -##.ad250 -##.ad250wrap -##.ad250x250 -##.ad250x300 -##.ad260 -##.ad260x60 -##.ad284x134 -##.ad290 -##.ad2content_box -##.ad300 -##.ad300-hp-top -##.ad3001 -##.ad300250 -##.ad300Block -##.ad300Wrapper -##.ad300X250 -##.ad300_2 -##.ad300_250 -##.ad300_bg -##.ad300_ver2 -##.ad300b -##.ad300banner -##.ad300px -##.ad300shows -##.ad300top -##.ad300w -##.ad300x100 -##.ad300x120 -##.ad300x150 -##.ad300x250 -##.ad300x250-1 -##.ad300x250-2 -##.ad300x250-inline -##.ad300x250Module -##.ad300x250Right -##.ad300x250Top -##.ad300x250_box -##.ad300x250_container -##.ad300x250a -##.ad300x250b -##.ad300x250box -##.ad300x250box2 -##.ad300x250flex -##.ad300x250s -##.ad300x250x2 -##.ad300x40 -##.ad300x50-right -##.ad300x600 -##.ad300x600cat -##.ad300x600post -##.ad300x77 -##.ad300x90 -##.ad310 -##.ad315 -##.ad320x250 -##.ad320x50 -##.ad336 -##.ad336_b -##.ad336x250 -##.ad336x280 -##.ad336x362 -##.ad343x290 -##.ad350 -##.ad350r -##.ad360 -##.ad366 -##.ad3rdParty -##.ad400 -##.ad400right -##.ad400x40 -##.ad450 -##.ad468 -##.ad468_60 -##.ad468box -##.ad468innerboxadpic -##.ad468x60 -##.ad468x60Wrap -##.ad468x60_main -##.ad470x60 -##.ad530 -##.ad540x90 -##.ad590 -##.ad590x90 -##.ad5_container -##.ad600 -##.ad612x80 -##.ad620x70 -##.ad626X35 -##.ad640x480 -##.ad644 -##.ad650x140 -##.ad652 -##.ad70 -##.ad728 -##.ad72890 -##.ad728By90 -##.ad728_90 -##.ad728_blk -##.ad728_cont -##.ad728_wrap -##.ad728b -##.ad728cont -##.ad728h -##.ad728top -##.ad728x90 -##.ad728x90-1 -##.ad728x90-2 -##.ad728x90box -##.ad728x90btf -##.ad970 -##.ad970_250 -##.adActive -##.adAlert -##.adArea -##.adAreaLC -##.adAreaNative -##.adAreaTopTitle -##.adArticleBanner -##.adArticleBody -##.adArticleSideTop300x250 -##.adBan -##.adBanner300x250 -##.adBanner728x90 -##.adBillboard -##.adBkgd -##.adBlock -##.adBlock728 -##.adBlockBottom -##.adBlockSpacer -##.adBlockSpot -##.adBorder -##.adBorders -##.adBox -##.adBox-small -##.adBox1 -##.adBox2 -##.adBox5 -##.adBox6 -##.adBox728 -##.adBox728X90 -##.adBox728X90_header -##.adBoxBody -##.adBoxBorder -##.adBoxContainer -##.adBoxContent -##.adBoxFooter -##.adBoxHeader -##.adBoxSidebar -##.adBoxSingle -##.adBoxTitle -##.adBox_1 -##.adBox_3 -##.adBtm -##.adCall -##.adCaptionText -##.adCell -##.adCenter -##.adCenterAd -##.adCentertile -##.adChoice -##.adChoiceLogo -##.adChoicesLogo -##.adChrome -##.adClose -##.adCode -##.adColumn -##.adColumnLeft -##.adColumnRight -##.adComponent -##.adCont -##.adContTop -##.adContainer1 -##.adContainerSide -##.adContent -##.adContentAd -##.adContour -##.adCopy -##.adCreative -##.adCreator -##.adCube -##.adDefRect -##.adDetails_ad336 -##.adDiv -##.adDrawer -##.adDyn -##.adElement -##.adExpanded -##.adFooterLinks -##.adFrame -##.adFrameCnt -##.adFrameContainer -##.adFrames -##.adFuel-label -##.adFull -##.adFullbanner -##.adGlobalHeader -##.adGoogle -##.adGroup -##.adHalfPage -##.adHead -##.adHeader -##.adHeaderAdbanner -##.adHeaderText -##.adHeaderblack -##.adHeading -##.adHeadline -##.adHeadlineSummary -##.adHed -##.adHeight200 -##.adHeight270 -##.adHeight280 -##.adHeight313 -##.adHeight600 -##.adHolder -##.adHolder2 -##.adHolderStory -##.adHoldert -##.adHome300x250 -##.adHomeSideTop300x250 -##.adHorisontal -##.adHorisontalNoBorder -##.adHorizontalTextAlt -##.adHplaceholder -##.adHz -##.adIDiv -##.adIframe -##.adIframeCount -##.adImg -##.adImgIM -##.adInArticle -##.adInContent -##.adInfo -##.adInitRemove -##.adInner -##.adInnerLeftBottom -##.adInsider -##.adInteractive -##.adIsland -##.adItem -##.adLabel -##.adLabelLine -##.adLabels -##.adLargeRec -##.adLargeRect -##.adLat -##.adLeader -##.adLeaderBoard_container -##.adLeaderForum -##.adLeaderboard -##.adLeaderboardAdContainer -##.adLeft -##.adLine -##.adLink -##.adLinkCnt -##.adListB -##.adLoader -##.adLocal -##.adLocation -##.adMPU -##.adMPUHome -##.adMRECHolder -##.adMarker -##.adMarkerBlock -##.adMastheadLeft -##.adMastheadRight -##.adMed -##.adMedRectBox -##.adMedRectBoxLeft -##.adMediaMiddle -##.adMediumRectangle -##.adMessage -##.adMiddle -##.adMinHeight280 -##.adMinHeight313 -##.adMiniTower -##.adMod -##.adModule -##.adModule--inner -##.adModule--outer -##.adModule-outer -##.adModule300 -##.adModuleAd -##.adMpu -##.adMpuHolder -##.adMrginBottom -##.adNarrow -##.adNoBorder -##.adNoOutline -##.adNone -##.adNote -##.adNotice -##.adNotice90 -##.adNoticeOut -##.adNotification -##.adObj -##.adOne -##.adOuterContainer -##.adOverlay -##.adPanel -##.adPanelContent -##.adPanorama -##.adPlaceholder -##.adPlacement -##.adPod -##.adPosition -##.adPremium -##.adRecommend -##.adRecommendRight -##.adRect -##.adRectangle -##.adRectangle-pos-large -##.adRectangle-pos-medium -##.adRectangle-pos-small -##.adRectangleBanner -##.adRectangleUnit -##.adRemove -##.adRenderer -##.adRendererInfinite -##.adResponsive -##.adResult -##.adResults -##.adRight -##.adRightSide -##.adRightSky -##.adRoller -##.adRotator -##.adRow -##.adRowTopWrapper -##.adSKY -##.adSection -##.adSenceImagePush -##.adSense -##.adSense-header -##.adSepDiv -##.adServer -##.adSeven -##.adSide -##.adSideBarMPU -##.adSideBarMPUTop -##.adSidebarButtons -##.adSizer -##.adSkin -##.adSky -##.adSkyscaper -##.adSkyscraper -##.adSlice -##.adSlide -##.adSlot -##.adSlot-container -##.adSlotAdition -##.adSlotCnt -##.adSlotContainer -##.adSlotHeaderContainer -##.adSlug -##.adSpBelow -##.adSpace -##.adSpace300x250 -##.adSpace950x90 -##.adSpacer -##.adSpec -##.adSplash -##.adSponsor -##.adSponsorText -##.adSponsorhipInfo -##.adSpot -##.adSpot-mrec -##.adSpot-textBox -##.adSpotBlock -##.adSpotFullWidth -##.adSpotIsland -##.adSquare -##.adStatementText -##.adStyle -##.adStyle1 -##.adSub -##.adSubColPod -##.adSummary -##.adSuperboard -##.adSupertower -##.adTD -##.adTXTnew -##.adTab -##.adTag -##.adTag-top -##.adTag-wrap -##.adTagThree -##.adTagTwo -##.adText -##.adTextDownload -##.adTextPmpt -##.adTextStreaming -##.adTextWrap -##.adTicker -##.adTile -##.adTileWrap -##.adTiler -##.adTip -##.adTitle -##.adTitleR -##.adTop -##.adTopBk -##.adTopFloat -##.adTopHome -##.adTopLB -##.adTopLeft -##.adTopRight -##.adTopWrapper -##.adTopboxright -##.adTwo -##.adTxt -##.adType2 -##.adUnderArticle -##.adUnit -##.adUnitHorz -##.adUnitVert -##.adVar -##.adVertical -##.adVideo -##.adVideo2 -##.adVl -##.adVplaceholder -##.adWarning -##.adWebBoard -##.adWideSkyscraper -##.adWideSkyscraperRight -##.adWidget -##.adWidgetBlock -##.adWithTab -##.adWizard-ad -##.adWord -##.adWords-bg -##.adWrap -##.adWrapLg -##.adWrapper -##.adWrapper1 -##.adZone -##.adZoneRight -##.ad_0 -##.ad_1 -##.ad_1000_125 -##.ad_120x60 -##.ad_120x600 -##.ad_120x90 -##.ad_125 -##.ad_130x90 -##.ad_150x150 -##.ad_160 -##.ad_160_600 -##.ad_160x600 -##.ad_188_inner -##.ad_2 -##.ad_200 -##.ad_240 -##.ad_250250 -##.ad_250x200 -##.ad_250x250 -##.ad_290_290 -##.ad_3 -##.ad_300 -##.ad_300250 -##.ad_300_250 -##.ad_300_250_1 -##.ad_300_250_2 -##.ad_300_250_wrapper -##.ad_300_600 -##.ad_300by250 -##.ad_300x100 -##.ad_300x250 -##.ad_300x250_container -##.ad_300x600 -##.ad_320x250_async -##.ad_336 -##.ad_336x280 -##.ad_350x250 -##.ad_4 -##.ad_468 -##.ad_468x60 -##.ad_5 -##.ad_600 -##.ad_640 -##.ad_640x480 -##.ad_728 -##.ad_72890 -##.ad_728Home -##.ad_728_90 -##.ad_728_90_1 -##.ad_728_90b -##.ad_728_top -##.ad_728x90 -##.ad_728x90-1 -##.ad_728x90-2 -##.ad_728x90_container -##.ad_728x90b -##.ad_90 -##.ad_970x250 -##.ad_970x250_300x250 -##.ad_970x250_container -##.ad_Bumper -##.ad_Flex -##.ad_Left -##.ad_Right -##.ad__300x250 -##.ad__300x600 -##.ad__970x250 -##.ad__align -##.ad__centered -##.ad__container -##.ad__content -##.ad__full--width -##.ad__header -##.ad__holder -##.ad__image -##.ad__in_article -##.ad__inline -##.ad__item -##.ad__label -##.ad__leaderboard -##.ad__mobi -##.ad__mobile-footer -##.ad__mpu -##.ad__placeholder -##.ad__rectangle -##.ad__section-border -##.ad__sidebar -##.ad__space -##.ad__sticky -##.ad__template -##.ad__window -##.ad__wrapper -##.ad_adv -##.ad_after_section -##.ad_amazon -##.ad_area -##.ad_area_two -##.ad_back -##.ad_background -##.ad_background_1 -##.ad_background_true -##.ad_banner -##.ad_banner2 -##.ad_banner_2 -##.ad_banner_250x250 -##.ad_banner_468 -##.ad_banner_728 -##.ad_banner_728x90_inner -##.ad_banner_border -##.ad_banner_div -##.ad_bar -##.ad_below_content -##.ad_belowfirstpost_frame -##.ad_bg -##.ad_bgskin -##.ad_big_banner -##.ad_bigbox -##.ad_billboard -##.ad_blk -##.ad_block -##.ad_block_1 -##.ad_block_2 -##.ad_block_widget -##.ad_body -##.ad_border -##.ad_botbanner -##.ad_bottom -##.ad_bottom_728 -##.ad_bottom_leaderboard -##.ad_bottom_left -##.ad_bottom_mpu -##.ad_bottom_space -##.ad_box -##.ad_box1 -##.ad_box2 -##.ad_box_2 -##.ad_box_6 -##.ad_box_9 -##.ad_box_ad -##.ad_box_div -##.ad_box_header -##.ad_box_spacer -##.ad_box_top -##.ad_break -##.ad_break2_container -##.ad_break_container -##.ad_btf -##.ad_btn -##.ad_btn-white -##.ad_btn1 -##.ad_btn2 -##.ad_by -##.ad_callout -##.ad_caption -##.ad_center -##.ad_center_bottom -##.ad_centered -##.ad_choice -##.ad_choices -##.ad_cl -##.ad_claim -##.ad_click -##.ad_cls_fix -##.ad_code -##.ad_col -##.ad_column -##.ad_column_box -##.ad_common -##.ad_con -##.ad_cont -##.ad_cont_footer -##.ad_contain -##.ad_container -##.ad_container_body -##.ad_container_bottom -##.ad_content -##.ad_content_below -##.ad_content_bottom -##.ad_content_wide -##.ad_content_wrapper -##.ad_contents -##.ad_crown -##.ad_custombanner -##.ad_d_big -##.ad_db -##.ad_default -##.ad_description -##.ad_desktop -##.ad_disclaimer -##.ad_div -##.ad_div_banner -##.ad_div_box -##.ad_div_box2 -##.ad_element -##.ad_embed -##.ad_feature -##.ad_float -##.ad_floating_box -##.ad_fluid -##.ad_footer -##.ad_footer_super_banner -##.ad_frame -##.ad_frame_around -##.ad_fullwidth -##.ad_gam -##.ad_global_header -##.ad_google -##.ad_gpt -##.ad_grein_botn -##.ad_grid -##.ad_group -##.ad_half_page -##.ad_halfpage -##.ad_hd -##.ad_head -##.ad_head_rectangle -##.ad_header -##.ad_header_top -##.ad_heading -##.ad_headline -##.ad_holder -##.ad_horizontal -##.ad_hover_href -##.ad_iframe2 -##.ad_image -##.ad_img -##.ad_imgae_150 -##.ad_in_article -##.ad_in_text -##.ad_incontent -##.ad_index02 -##.ad_indicator -##.ad_inline -##.ad_inline_wrapper -##.ad_inner -##.ad_inset -##.ad_island -##.ad_item -##.ad_label -##.ad_large -##.ad_lb -##.ad_leader -##.ad_leader_bottom -##.ad_leader_plus_top -##.ad_leaderboard -##.ad_leaderboard_atf -##.ad_leaderboard_master -##.ad_leaderboard_top -##.ad_leaderboard_wrap -##.ad_left -##.ad_left_cell -##.ad_left_column -##.ad_lft -##.ad_line2 -##.ad_link -##.ad_links -##.ad_lnks -##.ad_loc -##.ad_long -##.ad_lrec -##.ad_lrgsky -##.ad_lt -##.ad_main -##.ad_maintopad -##.ad_margin -##.ad_marker -##.ad_masthead -##.ad_med -##.ad_medium_rectangle -##.ad_medrec -##.ad_medrect -##.ad_megabanner -##.ad_message -##.ad_mid_post_body -##.ad_middle -##.ad_middle_banner -##.ad_mobile -##.ad_mod -##.ad_module -##.ad_mp -##.ad_mpu -##.ad_mpu_top -##.ad_mr -##.ad_mrec -##.ad_native -##.ad_native_xrail -##.ad_news -##.ad_no_border -##.ad_note -##.ad_notice -##.ad_oms -##.ad_on_article -##.ad_one -##.ad_one_one -##.ad_one_third -##.ad_outer -##.ad_overlays -##.ad_p360 -##.ad_pagebody -##.ad_panel -##.ad_paragraphs_desktop_container -##.ad_partner -##.ad_partners -##.ad_pause -##.ad_pic -##.ad_place -##.ad_placeholder -##.ad_placeholder_d_b -##.ad_placeholder_d_s -##.ad_placeholder_d_sticky -##.ad_placement -##.ad_plus -##.ad_position -##.ad_post -##.ad_primary -##.ad_promo -##.ad_promo1 -##.ad_promo_spacer -##.ad_push -##.ad_r -##.ad_rec -##.ad_rect -##.ad_rectangle -##.ad_rectangle_300_250 -##.ad_rectangle_medium -##.ad_rectangular -##.ad_regular1 -##.ad_regular2 -##.ad_regular3 -##.ad_reminder -##.ad_response -##.ad_rhs -##.ad_right -##.ad_rightSky -##.ad_right_300_250 -##.ad_right_cell -##.ad_right_col -##.ad_rightside -##.ad_row -##.ad_scroll -##.ad_secondary -##.ad_segment -##.ad_sense_01 -##.ad_sense_footer_container -##.ad_share_box -##.ad_side -##.ad_side_box -##.ad_side_rectangle_banner -##.ad_sidebar -##.ad_sidebar_bigbox -##.ad_sidebar_inner -##.ad_sidebar_left -##.ad_sidebar_right -##.ad_size_160x600 -##.ad_skin -##.ad_sky -##.ad_sky2 -##.ad_sky2_2 -##.ad_skyscpr -##.ad_skyscraper -##.ad_skyscrapper -##.ad_slider_out -##.ad_slot -##.ad_slot_inread -##.ad_slot_right -##.ad_slug -##.ad_small -##.ad_space -##.ad_space_300_250 -##.ad_spacer -##.ad_sponsor -##.ad_sponsor_fp -##.ad_sponsoredsection -##.ad_spot -##.ad_spot_b -##.ad_spot_c -##.ad_spotlight -##.ad_square -##.ad_square_r -##.ad_square_r_top -##.ad_square_top -##.ad_start -##.ad_static -##.ad_station -##.ad_story_island -##.ad_stream -##.ad_stream_hd -##.ad_sub -##.ad_supersize -##.ad_table -##.ad_tag -##.ad_tag_middle -##.ad_text -##.ad_text_link -##.ad_text_links -##.ad_text_vertical -##.ad_text_w -##.ad_textlink1 -##.ad_textlink_box -##.ad_thumbnail_header -##.ad_title -##.ad_title_small -##.ad_tlb -##.ad_to_list -##.ad_top -##.ad_top1 -##.ad_top_1 -##.ad_top_2 -##.ad_top_3 -##.ad_top_banner -##.ad_top_leaderboard -##.ad_top_left -##.ad_top_mpu -##.ad_top_right -##.ad_topic_content -##.ad_topmain -##.ad_topright -##.ad_topshop -##.ad_tower -##.ad_trailer_header -##.ad_trick_header -##.ad_trick_left -##.ad_ttl -##.ad_two -##.ad_two_third -##.ad_txt2 -##.ad_type_1 -##.ad_type_adsense -##.ad_type_dfp -##.ad_under -##.ad_under_royal_slider -##.ad_unit -##.ad_unit_300 -##.ad_unit_300_x_250 -##.ad_unit_600 -##.ad_unit_rail -##.ad_unit_wrapper -##.ad_unit_wrapper_main -##.ad_url -##.ad_v2 -##.ad_v3 -##.ad_vertisement -##.ad_w -##.ad_w300h450 -##.ad_w300i -##.ad_w_us_a300 -##.ad_warn -##.ad_warning -##.ad_watch_now -##.ad_watermark -##.ad_wid300 -##.ad_wide -##.ad_wide_vertical -##.ad_widget -##.ad_widget_200_100 -##.ad_widget_200_200 -##.ad_widget_image -##.ad_widget_title -##.ad_word -##.ad_wrap -##.ad_wrapper -##.ad_wrapper_300 -##.ad_wrapper_970x90 -##.ad_wrapper_box -##.ad_wrapper_false -##.ad_wrapper_fixed -##.ad_wrapper_top -##.ad_wrp -##.ad_xrail -##.ad_xrail_top -##.ad_zone -##.adace-adi-popup-wrapper -##.adace-slideup-slot-wrap -##.adace-slot -##.adace-slot-wrapper -##.adace-sponsors-box -##.adace-vignette -##.adalert-overlayer -##.adalert-toplayer -##.adamazon -##.adarea -##.adarea-long -##.adarticle -##.adb-top -##.adback -##.adban -##.adband -##.adbanner-300-250 -##.adbanner-bottom -##.adbanner1 -##.adbannerbox -##.adbannerright -##.adbannertop -##.adbase -##.adbbox -##.adbckgrnd -##.adbetween -##.adbetweenarticles -##.adbkgnd -##.adblade -##.adblade-container -##.adbladeimg -##.adblk -##.adblock-bottom -##.adblock-header -##.adblock-header1 -##.adblock-main -##.adblock-popup -##.adblock-top -##.adblock-top-left -##.adblock-wide -##.adblock300 -##.adblock300250 -##.adblock728x90 -##.adblock__banner -##.adblock_noborder -##.adblock_primary -##.adblockdiv -##.adblocks-topright -##.adboard -##.adborder -##.adborderbottom -##.adbordertop -##.adbot -##.adbot_postbit -##.adbot_showthread -##.adbottom -##.adbottomright -##.adbox-300x250 -##.adbox-468x60 -##.adbox-border-desk -##.adbox-box -##.adbox-header -##.adbox-outer -##.adbox-rectangle -##.adbox-sidebar -##.adbox-slider -##.adbox-style -##.adbox-title -##.adbox-topbanner -##.adbox-wrapper -##.adbox1 -##.adbox160 -##.adbox2 -##.adbox300 -##.adbox300x250 -##.adbox336 -##.adbox600 -##.adbox728 -##.adboxRightSide -##.adboxTopBanner -##.adboxVert -##.adbox_300x600 -##.adbox_310x400 -##.adbox_366x280 -##.adbox_468X60 -##.adbox_border -##.adbox_bottom -##.adbox_br -##.adbox_cont -##.adbox_largerect -##.adbox_left -##.adbox_top -##.adboxbg -##.adboxbot -##.adboxclass -##.adboxcm -##.adboxcontent -##.adboxcontentsum -##.adboxes -##.adboxesrow -##.adboxid -##.adboxlarge -##.adboxlong -##.adboxo -##.adboxtop -##.adbreak -##.adbrite2 -##.adbtn -##.adbtns -##.adbttm_right_300 -##.adbttm_right_label -##.adbucks -##.adbug -##.adbutler-inline-ad -##.adbutler-top-banner -##.adbutler_top_banner -##.adbutton -##.adbutton-block -##.adbuttons -##.adcard -##.adcasing -##.adcenter -##.adchange -##.adchoices -##.adchoices-link -##.adclass -##.adcode -##.adcode-widget -##.adcode2 -##.adcode300x250 -##.adcode728x90 -##.adcode_container -##.adcodetextwrap300x250 -##.adcodetop -##.adcol1 -##.adcol2 -##.adcolumn -##.adcolumn_wrapper -##.adcomment -##.adcon -##.adcont -##.adcontainer-Leaderboard -##.adcontainer-Rectangle -##.adcontainer2 -##.adcontainer300x250l -##.adcontainer300x250r -##.adcontainer_footer -##.adcopy -##.add-sidebar -##.add300 -##.add300top -##.add300x250 -##.addAdvertContainer -##.add_topbanner -##.addarea -##.addarearight -##.addbanner -##.addboxRight -##.addisclaimer -##.addiv -##.adds2 -##.adds300x250 -##.adds620x90 -##.addtitle -##.addvert -##.addwide -##.adengageadzone -##.adenquire -##.adex-ad-text -##.adfbox -##.adfeedback -##.adfeeds -##.adfix -##.adflag -##.adflexi -##.adfliction -##.adfoot -##.adfootbox -##.adfooter -##.adform__topbanner -##.adfoxly-overlay -##.adfoxly-place-delay -##.adfoxly-wrapper -##.adframe -##.adframe2 -##.adframe_banner -##.adframe_rectangle -##.adfree -##.adfront -##.adfront-head -##.adfrp -##.adfull -##.adgear -##.adgmleaderboard -##.adguru-content-html -##.adguru-modal-popup -##.adhalfhome -##.adhalfpage -##.adhalfpageright -##.adhead -##.adheader -##.adheightpromo -##.adheighttall -##.adherebox -##.adhesion-block -##.adhesion-header -##.adhesion:not(body) -##.adhesiveAdWrapper -##.adhesiveWrapper -##.adhesive_holder -##.adhi -##.adhide -##.adhint -##.adholder -##.adholder-300 -##.adholder2 -##.adholderban -##.adhoriz -##.adiframe -##.adindex -##.adindicator -##.adinfo -##.adinjwidget -##.adinner -##.adinpost -##.adinsert -##.adinsert160 -##.adinside -##.adintext -##.adintro -##.adisclaimer -##.adisland -##.adits -##.adjlink -##.adk-slot -##.adkicker -##.adkit -##.adlabel-horz -##.adlabel-vert -##.adlabel1 -##.adlabel2 -##.adlabel3 -##.adlabelleft -##.adlarge -##.adlarger -##.adlateral -##.adlayer -##.adleader -##.adleft1 -##.adleftph -##.adlgbox -##.adline -##.adlink -##.adlinkdiv -##.adlinks -##.adlinks-class -##.adlist -##.adlist1 -##.adlist2 -##.adloaded -##.adlsot -##.admain -##.adman -##.admarker -##.admaster -##.admediumred -##.admedrec -##.admeldBoxAd -##.admessage -##.admiddle -##.admiddlesidebar -##.admngr -##.admngrfr -##.admngrft -##.admods -##.admodule -##.admoduleB -##.admpu -##.admpu-small -##.admputop -##.admz -##.adnSpot -##.adname -##.adnet_area -##.adnotecenter -##.adnotice -##.adnotification -##.adnz-ad-placeholder -##.adocean -##.adocean728x90 -##.adocean_desktop_section -##.adops -##.adpacks -##.adpacks_content -##.adpadding -##.adpane -##.adparent -##.adpic -##.adplace -##.adplace_center -##.adplaceholder -##.adplaceholder-top -##.adplacement -##.adplate-background -##.adplugg-tag -##.adpod -##.adpopup -##.adpos-300-mobile -##.adpost -##.adposter_pos -##.adproxy -##.adrec -##.adrechts -##.adrect -##.adrectangle -##.adrectwrapper -##.adrevtising-buttom -##.adright -##.adright300 -##.adrightlg -##.adrightsm -##.adrighttop -##.adriverBanner -##.adroot -##.adrotate-sponsor -##.adrotate-widget -##.adrotate_top_banner -##.adrotate_widget -##.adrotate_widgets -##.adrotatediv -##.adrow -##.adrule -##.ads--bottom-spacing -##.ads--desktop -##.ads--full -##.ads--no-preload -##.ads--sidebar -##.ads--single -##.ads--square -##.ads--super -##.ads--top -##.ads-1 -##.ads-120x600 -##.ads-125 -##.ads-160x600 -##.ads-160x600-outer -##.ads-2 -##.ads-3 -##.ads-300 -##.ads-300-250 -##.ads-300-box -##.ads-300x250 -##.ads-300x250-sidebar -##.ads-300x300 -##.ads-300x600 -##.ads-300x600-wrapper-en -##.ads-320-50 -##.ads-320x250 -##.ads-336x280 -##.ads-468 -##.ads-728 -##.ads-728-90 -##.ads-728by90 -##.ads-728x90 -##.ads-980x90 -##.ads-above-comments -##.ads-ad -##.ads-advertorial -##.ads-article-right -##.ads-articlebottom -##.ads-aside -##.ads-banner -##.ads-banner-bottom -##.ads-banner-js -##.ads-banner-middle -##.ads-banner-spacing -##.ads-banner-top -##.ads-banner-top-right -##.ads-base -##.ads-beforecontent -##.ads-below-content -##.ads-below-home -##.ads-below-view-content -##.ads-between-comments -##.ads-bg -##.ads-bigbox -##.ads-bilboards -##.ads-bing-bottom -##.ads-bing-top -##.ads-block -##.ads-block-bottom-wrap -##.ads-block-link-text -##.ads-block-panel-tipo-1 -##.ads-block-rightside -##.ads-block-top -##.ads-block-top-right -##.ads-border -##.ads-bottom -##.ads-bottom-block -##.ads-bottom-center -##.ads-bottom-content -##.ads-bottom-left -##.ads-bottom-right -##.ads-box -##.ads-box-border -##.ads-box-cont -##.ads-bt -##.ads-btm -##.ads-by -##.ads-by-google -##.ads-callback -##.ads-card -##.ads-carousel -##.ads-center -##.ads-centered -##.ads-cnt -##.ads-code -##.ads-col -##.ads-cols -##.ads-cont -##.ads-content -##.ads-core-placer -##.ads-custom -##.ads-decorator -##.ads-desktop -##.ads-div -##.ads-el -##.ads-end-content -##.ads-favicon -##.ads-feed -##.ads-fieldset -##.ads-footer -##.ads-fr -##.ads-global-header -##.ads-global-top -##.ads-google -##.ads-google-bottom -##.ads-google-top -##.ads-grp -##.ads-half -##.ads-header -##.ads-header-desktop -##.ads-header-left -##.ads-header-right -##.ads-here -##.ads-hints -##.ads-holder -##.ads-home -##.ads-homepage-2 -##.ads-horizontal -##.ads-horizontal-banner -##.ads-image -##.ads-inarticle -##.ads-inline -##.ads-inner -##.ads-instance -##.ads-internal -##.ads-item -##.ads-label -##.ads-label-inverse -##.ads-large -##.ads-leaderboard -##.ads-leaderboard-border -##.ads-leaderboard-panel -##.ads-leaderbord -##.ads-left -##.ads-line -##.ads-list -##.ads-loaded -##.ads-long -##.ads-main -##.ads-margin -##.ads-marker -##.ads-medium-rect -##.ads-middle -##.ads-middle-top -##.ads-minheight -##.ads-mini -##.ads-mini-3rows -##.ads-mobile -##.ads-module -##.ads-module-alignment -##.ads-movie -##.ads-mpu -##.ads-narrow -##.ads-native-wrapper -##.ads-note -##.ads-one -##.ads-outer -##.ads-panel -##.ads-parent -##.ads-pholder -##.ads-placeholder -##.ads-placeholder-inside -##.ads-placeholder-wrapper -##.ads-placment -##.ads-post -##.ads-post-closing -##.ads-post-footer -##.ads-post-full -##.ads-posting -##.ads-profile -##.ads-rail -##.ads-rect -##.ads-rectangle -##.ads-relatedbottom -##.ads-rendering-fix -##.ads-right -##.ads-right-min -##.ads-rotate -##.ads-row -##.ads-scroller-box -##.ads-section -##.ads-side -##.ads-sidebar -##.ads-sidebar-boxad -##.ads-sidebar-widget -##.ads-sign -##.ads-single -##.ads-site -##.ads-size-small -##.ads-skin -##.ads-skin-mobile -##.ads-sky -##.ads-skyscraper -##.ads-skyscraper-container-left -##.ads-skyscraper-container-right -##.ads-skyscraper-left -##.ads-skyscraper-right -##.ads-small -##.ads-small-horizontal -##.ads-small-squares -##.ads-smartphone -##.ads-social-box -##.ads-sponsored-title -##.ads-sponsors -##.ads-square -##.ads-square-large -##.ads-square-small -##.ads-squares -##.ads-star -##.ads-stick-footer -##.ads-sticky -##.ads-story -##.ads-story-leaderboard-atf -##.ads-stripe -##.ads-styled -##.ads-superbanner -##.ads-system -##.ads-text -##.ads-title -##.ads-to-hide -##.ads-top -##.ads-top-728 -##.ads-top-center -##.ads-top-content -##.ads-top-fixed -##.ads-top-home -##.ads-top-left -##.ads-top-main -##.ads-top-right -##.ads-top-spacer -##.ads-topbar -##.ads-two -##.ads-txt -##.ads-ul -##.ads-verticle -##.ads-wall-container -##.ads-wide -##.ads-widget -##.ads-widget-content -##.ads-widget-content-wrap -##.ads-widget-link -##.ads-wrap -##.ads-wrapper -##.ads-wrapper-top -##.ads-x1 -##.ads-zone -##.ads.bottom -##.ads.box -##.ads.cell -##.ads.cta -##.ads.grid-layout -##.ads.square -##.ads.top -##.ads.widget -##.ads01 -##.ads1 -##.ads10 -##.ads11 -##.ads120 -##.ads120_600 -##.ads120_600-widget -##.ads120_80 -##.ads120x -##.ads123 -##.ads125 -##.ads125-widget -##.ads160 -##.ads160-600 -##.ads2 -##.ads250 -##.ads250-250 -##.ads2Block -##.ads3 -##.ads300 -##.ads300-200 -##.ads300-250 -##.ads300250 -##.ads300_250 -##.ads300_600-widget -##.ads300box -##.ads300x600 -##.ads336_280 -##.ads336x280 -##.ads4 -##.ads468 -##.ads468x60 -##.ads600 -##.ads720x90 -##.ads728 -##.ads728_90 -##.ads728b -##.ads728x90 -##.ads728x90-1 -##.ads970 -##.adsAdvert -##.adsArea -##.adsBanner -##.adsBannerLink -##.adsBlock -##.adsBlockContainerHorizontal -##.adsBot -##.adsBottom -##.adsBoxTop -##.adsCap -##.adsCell -##.adsColumn -##.adsConfig -##.adsCont -##.adsDef -##.adsDesktop -##.adsDetailsPage -##.adsDisclaimer -##.adsDiv -##.adsFirst -##.adsFixed -##.adsFull -##.adsHeader -##.adsHeading -##.adsHeight300x250 -##.adsHeight720x90 -##.adsHome-full -##.adsImages -##.adsInner -##.adsLabel -##.adsLibrary -##.adsLine -##.adsList -##.adsMPU -##.adsMag -##.adsMarker -##.adsMiddle -##.adsMvCarousel -##.adsNetwork -##.adsOuter -##.adsOverPrimary -##.adsPlaceHolder -##.adsPostquare -##.adsPushdown -##.adsRectangleMedium -##.adsRight -##.adsRow -##.adsSecond -##.adsSectionRL -##.adsSpacing -##.adsSticky -##.adsTag -##.adsText -##.adsTop -##.adsTopBanner -##.adsTopCont -##.adsTower2 -##.adsTowerWrap -##.adsTxt -##.adsWidget -##.adsWrap -##.ads_160 -##.ads_180 -##.ads_2 -##.ads_3 -##.ads_300 -##.ads_300_250 -##.ads_300x250 -##.ads_300x600 -##.ads_4 -##.ads_468 -##.ads_468x60 -##.ads_720x90 -##.ads_728 -##.ads_728x90 -##.ads_Header -##.ads__article__header -##.ads__aside -##.ads__container -##.ads__header -##.ads__horizontal -##.ads__hyperleaderboard--hyperleaderboard -##.ads__inline -##.ads__interstitial -##.ads__link -##.ads__listing -##.ads__mid -##.ads__middle -##.ads__midpage-fullwidth -##.ads__native -##.ads__right-rail-ad -##.ads__sidebar -##.ads__top -##.ads_ad_box -##.ads_after -##.ads_after_more -##.ads_amazon -##.ads_area -##.ads_article -##.ads_banner -##.ads_bar -##.ads_before -##.ads_between_content -##.ads_bg -##.ads_big -##.ads_bigrec -##.ads_block -##.ads_border -##.ads_box -##.ads_box_headline -##.ads_box_type1 -##.ads_center -##.ads_code -##.ads_column -##.ads_container -##.ads_container_top -##.ads_content -##.ads_css -##.ads_div -##.ads_div1 -##.ads_foot -##.ads_footer -##.ads_footerad -##.ads_full_1 -##.ads_google -##.ads_h -##.ads_h1 -##.ads_h2 -##.ads_header -##.ads_header_bottom -##.ads_holder -##.ads_home -##.ads_horizontal -##.ads_inview -##.ads_item -##.ads_label -##.ads_lb -##.ads_leader -##.ads_leaderboard -##.ads_left -##.ads_main -##.ads_main_hp -##.ads_media -##.ads_medium -##.ads_medium_rectangle -##.ads_medrect -##.ads_middle -##.ads_middle-container -##.ads_middle_container -##.ads_mobile_vert -##.ads_mpu -##.ads_outer -##.ads_outline -##.ads_place -##.ads_place_160 -##.ads_place_top -##.ads_placeholder -##.ads_player -##.ads_post -##.ads_prtext -##.ads_rectangle -##.ads_remove -##.ads_right -##.ads_rightbar_top -##.ads_side -##.ads_sideba -##.ads_sidebar -##.ads_single_center -##.ads_single_side -##.ads_single_top -##.ads_singlepost -##.ads_slice -##.ads_slot -##.ads_small -##.ads_small_rectangle -##.ads_space_long -##.ads_spacer -##.ads_square -##.ads_takeover -##.ads_text -##.ads_tit -##.ads_title -##.ads_top -##.ads_top_1 -##.ads_top_banner -##.ads_top_both -##.ads_top_middle -##.ads_top_nav -##.ads_topbanner -##.ads_topleft -##.ads_topright -##.ads_tower -##.ads_tr -##.ads_under_data -##.ads_unit -##.ads_up -##.ads_video -##.ads_wide -##.ads_widesky -##.ads_widget -##.ads_wrap -##.ads_wrap-para -##.ads_wrapper -##.adsafp -##.adsanity-alignnone -##.adsanity-group -##.adsanity-single -##.adsarea -##.adsartical -##.adsbanner1 -##.adsbanner2 -##.adsbantop -##.adsbar -##.adsbg300 -##.adsbillboard -##.adsblock -##.adsblockvert -##.adsbnr -##.adsbody -##.adsborder -##.adsboth -##.adsbottom -##.adsbottombox -##.adsbox--masthead -##.adsbox-square -##.adsbox970x90 -##.adsbox990x90 -##.adsboxBtn -##.adsbox_300x250 -##.adsboxitem -##.adsbx728x90 -##.adsbyadop -##.adsbyexoclick -##.adsbyexoclick-wrapper -##.adsbygalaksion -##.adsbygoogle-box -##.adsbygoogle-noablate -##.adsbygoogle-wrapper -##.adsbygoogle2 -##.adsbypublift -##.adsbypubmax -##.adsbytrafficjunky -##.adsbyvli -##.adsbyxa -##.adscaleTop -##.adscenter -##.adscentertext -##.adsclick -##.adscontainer -##.adscontent250 -##.adscontentcenter -##.adscontntad -##.adscreen -##.adsdelivery -##.adsdesktop -##.adsdiv -##.adsection_a2 -##.adsection_c2 -##.adsection_c3 -##.adsenbox -##.adsens -##.adsense-250 -##.adsense-300-600 -##.adsense-336 -##.adsense-336-280 -##.adsense-468 -##.adsense-728-90 -##.adsense-ad-results -##.adsense-ads -##.adsense-afterpost -##.adsense-area -##.adsense-article -##.adsense-block -##.adsense-box -##.adsense-center -##.adsense-code -##.adsense-container -##.adsense-content -##.adsense-div -##.adsense-float -##.adsense-googleAds -##.adsense-header -##.adsense-heading -##.adsense-iframe-container -##.adsense-inline -##.adsense-left -##.adsense-links -##.adsense-loading -##.adsense-module -##.adsense-overlay -##.adsense-post -##.adsense-resposivo-meio -##.adsense-right -##.adsense-slot -##.adsense-square -##.adsense-sticky-slide -##.adsense-title -##.adsense-top -##.adsense-unit -##.adsense-widget -##.adsense-wrapper -##.adsense1 -##.adsense160x600 -##.adsense250 -##.adsense3 -##.adsense300 -##.adsense300x250 -##.adsense728 -##.adsense728x90 -##.adsenseAds -##.adsenseBannerArea -##.adsenseBlock -##.adsenseContainer -##.adsenseList -##.adsenseRow -##.adsenseSky -##.adsenseWrapper -##.adsense_200 -##.adsense_336_280 -##.adsense_728x90_container -##.adsense_ad -##.adsense_block -##.adsense_bottom -##.adsense_container -##.adsense_content_300x250 -##.adsense_div_wrapper -##.adsense_inner -##.adsense_label -##.adsense_leader -##.adsense_media -##.adsense_menu -##.adsense_mpu -##.adsense_rectangle -##.adsense_results -##.adsense_right -##.adsense_sidebar -##.adsense_sidebar_top -##.adsense_single -##.adsense_top -##.adsense_top_ad -##.adsense_unit -##.adsense_wrapper -##.adsensebig -##.adsensefloat -##.adsenseformat -##.adsenseframe -##.adsenseleaderboard -##.adsensemobile -##.adsenvelope -##.adsep -##.adserve_728 -##.adserverBox -##.adserver_zone -##.adserverad -##.adserving -##.adset -##.adsfloat -##.adsfloatpanel -##.adsforums -##.adsghori -##.adsgrd -##.adsgvert -##.adsheight-250 -##.adshome -##.adshowbig -##.adshowcase -##.adshp -##.adside -##.adside-box-index -##.adside-box-single -##.adside_box -##.adsidebar -##.adsidebox -##.adsider -##.adsincs2 -##.adsinfo -##.adsingle -##.adsingle-r -##.adsingleph -##.adsitem -##.adsize728 -##.adsizer -##.adsizewrapper -##.adskeeperWrap -##.adsky -##.adsleaderboard -##.adsleaderboardbox -##.adsleff -##.adsleft -##.adsleftblock -##.adslibraryArticle -##.adslider -##.adslink -##.adslist -##.adslisting -##.adslisting2 -##.adslistingz -##.adsload -##.adsloading -##.adslogan -##.adslot -##.adslot--leaderboard -##.adslot-area -##.adslot-banner -##.adslot-billboard -##.adslot-feature -##.adslot-inline-wide -##.adslot-mpu -##.adslot-rectangle -##.adslot-widget -##.adslot970 -##.adslotMid -##.adslot_1 -##.adslot_1m -##.adslot_2 -##.adslot_2m -##.adslot_3 -##.adslot_300 -##.adslot_3d -##.adslot_3m -##.adslot_4 -##.adslot_728 -##.adslot__ad-container -##.adslot__ad-wrapper -##.adslot_blurred -##.adslot_bot_300x250 -##.adslot_collapse -##.adslot_popup -##.adslot_side1 -##.adslothead -##.adslotleft -##.adslotright -##.adslotright_1 -##.adslotright_2 -##.adslug -##.adsmaintop -##.adsmall -##.adsmaller -##.adsmalltext -##.adsmanag -##.adsmbody -##.adsmedrect -##.adsmedrectright -##.adsmessage -##.adsmobile -##.adsninja-ad-zone -##.adsninja-ad-zone-container-with-set-height -##.adsninja-rail-zone -##.adsnippet_widget -##.adsns -##.adsntl -##.adsonar-after -##.adsonofftrigger -##.adsoptimal-slot -##.adsother -##.adspace -##.adspace-300x600 -##.adspace-336x280 -##.adspace-728x90 -##.adspace-MR -##.adspace-lb -##.adspace-leaderboard -##.adspace-lr -##.adspace-mpu -##.adspace-mtb -##.adspace-top -##.adspace-widget -##.adspace1 -##.adspace180 -##.adspace2 -##.adspace728x90 -##.adspace_2 -##.adspace_bottom -##.adspace_buysell -##.adspace_right -##.adspace_rotate -##.adspace_skyscraper -##.adspace_top -##.adspacer -##.adspacer2 -##.adspan -##.adspanel -##.adspecial390 -##.adspeed -##.adsplash-160x600 -##.adsplat -##.adsponsor -##.adspop -##.adspost -##.adspot -##.adspot-desk -##.adspot-title -##.adspot1 -##.adspot200x90 -##.adspot468x60 -##.adspot728x90 -##.adspotGrey -##.adspot_468x60 -##.adspot_728x90 -##.adsprefooter -##.adspreview -##.adsrecnode -##.adsresponsive -##.adsright -##.adss -##.adss-rel -##.adssidebar2 -##.adsskyscraper -##.adsslotcustom2 -##.adsslotcustom4 -##.adssmall -##.adssquare -##.adssquare2 -##.adsterra -##.adstext -##.adstextpad -##.adstipt -##.adstitle -##.adstop -##.adstory -##.adstrip -##.adstyle -##.adsverting -##.adsvideo -##.adswallpapr -##.adswidget -##.adswiper -##.adswitch -##.adswordatas -##.adsystem_ad -##.adszone -##.adt-300x250 -##.adt-300x600 -##.adt-728x90 -##.adtab -##.adtable -##.adtag -##.adtc -##.adtech -##.adtech-ad-widget -##.adtech-banner -##.adtech-boxad -##.adtech-copy -##.adtech-video-2 -##.adtech-wrapper -##.adtechMobile -##.adtech_wrapper -##.adtester-container -##.adtext-bg -##.adtext_gray -##.adtext_horizontal -##.adtext_onwhite -##.adtext_vertical -##.adtext_white -##.adtextleft -##.adtextright -##.adthrive -##.adthrive-ad -##.adthrive-content -##.adthrive-header -##.adthrive-header-container -##.adthrive-placeholder-content -##.adthrive-placeholder-header -##.adthrive-placeholder-static-sidebar -##.adthrive-sidebar -##.adthrive-video-player -##.adthrive_custom_ad -##.adtile -##.adtips -##.adtips1 -##.adtitle -##.adtoggle -##.adtop -##.adtop-border -##.adtops -##.adtower -##.adtravel -##.adttl -##.adtxt -##.adtxtlinks -##.adult-adv -##.adun -##.adunit -##.adunit-300-250 -##.adunit-active -##.adunit-adbridg -##.adunit-container -##.adunit-container_sitebar_1 -##.adunit-googleadmanager -##.adunit-lazy -##.adunit-middle -##.adunit-parent -##.adunit-purch -##.adunit-side -##.adunit-title -##.adunit-top -##.adunit-wrap -##.adunit-wrapper -##.adunit125 -##.adunit160 -##.adunit300x250 -##.adunit468 -##.adunitContainer -##.adunit_300x250 -##.adunit_728x90 -##.adunit_content -##.adunit_footer -##.adunit_leaderboard -##.adunit_rectangle -##.adv--h600 -##.adv--square -##.adv-120x600 -##.adv-160 -##.adv-160x600 -##.adv-200-200 -##.adv-250-250 -##.adv-300 -##.adv-300-1 -##.adv-300-250 -##.adv-300-600 -##.adv-300x250 -##.adv-300x250-generic -##.adv-336-280 -##.adv-4 -##.adv-468-60 -##.adv-468x60 -##.adv-700 -##.adv-728 -##.adv-728-90 -##.adv-970 -##.adv-970-250 -##.adv-970-250-2 -##.adv-980x60 -##.adv-ad -##.adv-ads-selfstyle -##.adv-aside -##.adv-background -##.adv-banner -##.adv-bar -##.adv-block -##.adv-block-container -##.adv-border -##.adv-bottom -##.adv-box -##.adv-box-holder -##.adv-box-wrapper -##.adv-carousel -##.adv-center -##.adv-click -##.adv-cont -##.adv-cont1 -##.adv-conteiner -##.adv-dvb -##.adv-format-1 -##.adv-full-width -##.adv-google -##.adv-gpt-desktop-wrapper -##.adv-gpt-wrapper-desktop -##.adv-halfpage -##.adv-header -##.adv-holder -##.adv-in-body -##.adv-inset -##.adv-intext -##.adv-intext-label -##.adv-key -##.adv-label -##.adv-leaderboard -##.adv-leaderboard-banner -##.adv-link--left -##.adv-link--right -##.adv-mobile-wrapper -##.adv-mpu -##.adv-outer -##.adv-p -##.adv-right -##.adv-right-300 -##.adv-rotator -##.adv-script-container -##.adv-sidebar -##.adv-skin-spacer -##.adv-slot-container -##.adv-text -##.adv-top -##.adv-top-banner -##.adv-top-container -##.adv-top-page -##.adv-top-skin -##.adv-under-video -##.adv-unit -##.adv-videoad -##.adv-x61 -##.adv1 -##.adv120 -##.adv200 -##.adv250 -##.adv300 -##.adv300-250 -##.adv300-250-2 -##.adv300-70 -##.adv300left -##.adv300x100 -##.adv300x250 -##.adv300x60 -##.adv300x70 -##.adv336 -##.adv350 -##.adv460x60 -##.adv468 -##.adv468x90 -##.adv728 -##.adv728x90 -##.advBottom -##.advBottomHome -##.advBox -##.advInt -##.advLeaderboard -##.advRightBig -##.advSquare -##.advText -##.advTop -##.adv_120 -##.adv_120_600 -##.adv_120x240 -##.adv_120x600 -##.adv_160_600 -##.adv_160x600 -##.adv_250 -##.adv_250_250 -##.adv_300 -##.adv_300_300 -##.adv_300_top -##.adv_300x250 -##.adv_336_280 -##.adv_468_60 -##.adv_728_90 -##.adv_728x90 -##.adv__box -##.adv__leaderboard -##.adv__wrapper -##.adv_aff -##.adv_banner -##.adv_banner_hor -##.adv_bg -##.adv_box -##.adv_box_narrow -##.adv_here -##.adv_img -##.adv_leaderboard -##.adv_left -##.adv_link -##.adv_main_middle -##.adv_main_middle_wrapper -##.adv_main_right_down -##.adv_main_right_down_wrapper -##.adv_medium_rectangle -##.adv_message -##.adv_msg -##.adv_panel -##.adv_right -##.adv_side1 -##.adv_side2 -##.adv_sidebar -##.adv_title -##.adv_top -##.adv_txt -##.adv_under_menu -##.advads-background -##.advads-close-button -##.advads-parallax-container -##.advads-sticky -##.advads-target -##.advads-widget -##.advads_ad_widget-11 -##.advads_ad_widget-18 -##.advads_ad_widget-2 -##.advads_ad_widget-21 -##.advads_ad_widget-3 -##.advads_ad_widget-4 -##.advads_ad_widget-5 -##.advads_ad_widget-8 -##.advads_ad_widget-9 -##.advads_widget -##.advance-ads -##.advart -##.advbig -##.adver -##.adver-block -##.adver-header -##.adver-left -##.adver-text -##.adverTag -##.adverTxt -##.adver_bot -##.adver_cont_below -##.adver_home -##.advert--background -##.advert--banner-wrap -##.advert--fallback -##.advert--header -##.advert--in-sidebar -##.advert--inline -##.advert--leaderboard -##.advert--loading -##.advert--outer -##.advert--placeholder -##.advert--right-rail -##.advert--square -##.advert-100 -##.advert-120x90 -##.advert-160x600 -##.advert-300 -##.advert-300-side -##.advert-728 -##.advert-728-90 -##.advert-728x90 -##.advert-article-bottom -##.advert-autosize -##.advert-background -##.advert-banner -##.advert-banner-container -##.advert-banner-holder -##.advert-bannerad -##.advert-bar -##.advert-bg-250 -##.advert-block -##.advert-border -##.advert-bot-box -##.advert-bottom -##.advert-box -##.advert-bronze -##.advert-bronze-btm -##.advert-btm -##.advert-card -##.advert-center -##.advert-col -##.advert-col-center -##.advert-competitions -##.advert-container -##.advert-content -##.advert-content-item -##.advert-detail -##.advert-dfp -##.advert-featured -##.advert-footer -##.advert-gold -##.advert-group -##.advert-head -##.advert-header-728 -##.advert-horizontal -##.advert-image -##.advert-info -##.advert-inner -##.advert-label -##.advert-leaderboard -##.advert-leaderboard2 -##.advert-loader -##.advert-mini -##.advert-mpu -##.advert-mrec -##.advert-note -##.advert-overlay -##.advert-pane -##.advert-panel -##.advert-placeholder -##.advert-placeholder-wrapper -##.advert-preview-wrapper -##.advert-right -##.advert-row -##.advert-section -##.advert-sidebar -##.advert-silver -##.advert-sky -##.advert-skyright -##.advert-skyscraper -##.advert-slider -##.advert-spot-container -##.advert-sticky-wrapper -##.advert-stub -##.advert-text -##.advert-three -##.advert-title -##.advert-top -##.advert-top-footer -##.advert-txt -##.advert-unit -##.advert-wide -##.advert-wingbanner-left -##.advert-wingbanner-right -##.advert-wrap -##.advert-wrap1 -##.advert-wrap2 -##.advert-wrapper -##.advert-wrapper-exco -##.advert.box -##.advert.desktop -##.advert.mobile -##.advert.mpu -##.advert.skyscraper -##.advert1 -##.advert120 -##.advert1Banner -##.advert2 -##.advert300 -##.advert4 -##.advert5 -##.advert728_90 -##.advert728x90 -##.advert8 -##.advertBanner -##.advertBar -##.advertBlock -##.advertBottom -##.advertBox -##.advertCaption -##.advertColumn -##.advertCont -##.advertContainer -##.advertDownload -##.advertFullBanner -##.advertHeader -##.advertHeadline -##.advertLink -##.advertLink1 -##.advertMPU -##.advertMiddle -##.advertMpu -##.advertRight -##.advertSideBar -##.advertSign -##.advertSlider -##.advertSlot -##.advertSuperBanner -##.advertText -##.advertTitleSky -##.advertWrapper -##.advert_300x250 -##.advert_336 -##.advert_468x60 -##.advert__container -##.advert__fullbanner -##.advert__leaderboard -##.advert__mpu -##.advert__sidebar -##.advert__tagline -##.advert_area -##.advert_banner -##.advert_banners -##.advert_block -##.advert_box -##.advert_caption -##.advert_cont -##.advert_container -##.advert_div -##.advert_foot -##.advert_header -##.advert_home_300 -##.advert_img -##.advert_label -##.advert_leaderboard -##.advert_line -##.advert_list -##.advert_main -##.advert_main_bottom -##.advert_mpu -##.advert_nav -##.advert_note -##.advert_pos -##.advert_small -##.advert_span -##.advert_text -##.advert_title -##.advert_top -##.advert_txt -##.advert_wrapper -##.advertbar -##.advertbox -##.adverteaser -##.advertembed -##.adverthome -##.adverticum_container -##.adverticum_content -##.advertis -##.advertis-left -##.advertis-right -##.advertise-1 -##.advertise-2 -##.advertise-box -##.advertise-here -##.advertise-horz -##.advertise-info -##.advertise-leaderboard -##.advertise-link -##.advertise-list -##.advertise-pic -##.advertise-small -##.advertise-square -##.advertise-top -##.advertise-vert -##.advertiseContainer -##.advertiseHere -##.advertiseText -##.advertise_ads -##.advertise_box -##.advertise_brand -##.advertise_carousel -##.advertise_here -##.advertise_link -##.advertise_link_sidebar -##.advertise_links -##.advertise_sec -##.advertise_text -##.advertise_txt -##.advertise_verRight -##.advertisebtn -##.advertisedBy -##.advertisement-1 -##.advertisement-2 -##.advertisement-250 -##.advertisement-300 -##.advertisement-300x250 -##.advertisement-background -##.advertisement-banner -##.advertisement-block -##.advertisement-bottom -##.advertisement-box -##.advertisement-card -##.advertisement-cell -##.advertisement-container -##.advertisement-content -##.advertisement-copy -##.advertisement-footer -##.advertisement-google -##.advertisement-header -##.advertisement-holder -##.advertisement-image -##.advertisement-label -##.advertisement-layout -##.advertisement-leaderboard -##.advertisement-leaderboard-lg -##.advertisement-left -##.advertisement-link -##.advertisement-nav -##.advertisement-placeholder -##.advertisement-position1 -##.advertisement-right -##.advertisement-sidebar -##.advertisement-space -##.advertisement-sponsor -##.advertisement-tag -##.advertisement-text -##.advertisement-title -##.advertisement-top -##.advertisement-txt -##.advertisement-wrapper -##.advertisement.leaderboard -##.advertisement.rectangle -##.advertisement.under-article -##.advertisement1 -##.advertisement300x250 -##.advertisement468 -##.advertisementBackground -##.advertisementBanner -##.advertisementBar -##.advertisementBlock -##.advertisementBox -##.advertisementBoxBan -##.advertisementContainer -##.advertisementFull -##.advertisementHeader -##.advertisementImg -##.advertisementLabel -##.advertisementPanel -##.advertisementRotate -##.advertisementSection -##.advertisementSmall -##.advertisementText -##.advertisementTop -##.advertisement_160x600 -##.advertisement_300x250 -##.advertisement_728x90 -##.advertisement__header -##.advertisement__label -##.advertisement__leaderboard -##.advertisement__wrapper -##.advertisement_box -##.advertisement_container -##.advertisement_footer -##.advertisement_header -##.advertisement_horizontal -##.advertisement_mobile -##.advertisement_part -##.advertisement_post -##.advertisement_section_top -##.advertisement_text -##.advertisement_top -##.advertisement_wrapper -##.advertisements-link -##.advertisements-right -##.advertisements-sidebar -##.advertisements_heading -##.advertisementwrap -##.advertiser -##.advertiser-links -##.advertising--row -##.advertising--top -##.advertising-banner -##.advertising-block -##.advertising-container -##.advertising-container-top -##.advertising-content -##.advertising-disclaimer -##.advertising-fixed -##.advertising-header -##.advertising-iframe -##.advertising-inner -##.advertising-leaderboard -##.advertising-lrec -##.advertising-mediumrectangle -##.advertising-mention -##.advertising-middle -##.advertising-middle-i -##.advertising-notice -##.advertising-right -##.advertising-right-d -##.advertising-right-i -##.advertising-section -##.advertising-side -##.advertising-side-hp -##.advertising-srec -##.advertising-top -##.advertising-top-banner -##.advertising-top-box -##.advertising-top-category -##.advertising-top-desktop -##.advertising-vert -##.advertising-wrapper -##.advertising1 -##.advertising160 -##.advertising2 -##.advertising300_home -##.advertising300x250 -##.advertising728 -##.advertising728_3 -##.advertisingBanner -##.advertisingBlock -##.advertisingLabel -##.advertisingLegend -##.advertisingLrec -##.advertisingMob -##.advertisingRight -##.advertisingSlide -##.advertisingTable -##.advertisingTop -##.advertising_300x250 -##.advertising_banner -##.advertising_block -##.advertising_bottom_box -##.advertising_box_bg -##.advertising_header_1 -##.advertising_hibu_lef -##.advertising_hibu_mid -##.advertising_hibu_rig -##.advertising_horizontal_title -##.advertising_images -##.advertising_square -##.advertising_top -##.advertising_vertical_title -##.advertising_widget -##.advertising_wrapper -##.advertisingarea -##.advertisingarea-homepage -##.advertisingimage -##.advertisingimage-extended -##.advertisingimageextended -##.advertisment -##.advertisment-banner -##.advertisment-label -##.advertisment-left-panal -##.advertisment-module -##.advertisment-rth -##.advertisment-top -##.advertismentBox -##.advertismentContainer -##.advertismentContent -##.advertismentText -##.advertisment_bar -##.advertisment_caption -##.advertisment_full -##.advertisment_notice -##.advertisment_two -##.advertize -##.advertize_here -##.advertizing-banner -##.advertlabel -##.advertleft -##.advertlink -##.advertnotice -##.advertop -##.advertorial -##.advertorial-2 -##.advertorial-block -##.advertorial-image -##.advertorial-promo-box -##.advertorial-teaser -##.advertorial-wrapper -##.advertorial2 -##.advertorial_728x90 -##.advertorial_red -##.advertorialitem -##.advertorialtitle -##.advertorialview -##.advertorialwidget -##.advertouter -##.advertplay -##.adverts -##.adverts--banner -##.adverts-125 -##.adverts-inline -##.adverts2 -##.advertsLeaderboard -##.adverts_RHS -##.adverts_footer_advert -##.adverts_footer_scrolling_advert -##.adverts_header_advert -##.adverts_side_advert -##.advertspace -##.adverttext -##.adverttop -##.advfrm -##.advg468 -##.advhere -##.adviewDFPBanner -##.advimg160600 -##.advimg300250 -##.advn_zone -##.advoice -##.advr -##.advr-wrapper -##.advr_top -##.advrectangle -##.advrst -##.advslideshow -##.advspot -##.advt -##.advt-banner-3 -##.advt-block -##.advt-right -##.advt-sec -##.advt300 -##.advt720 -##.advtBlock -##.advtMsg -##.advt_160x600 -##.advt_468by60px -##.advt_indieclick -##.advt_single -##.advt_widget -##.advtbox -##.advtcell -##.advtext -##.advtimg -##.advtitle -##.advtop -##.advtop-leaderbord -##.advttopleft -##.advv_box -##.adwblue -##.adwert -##.adwhitespace -##.adwide -##.adwideskyright -##.adwidget -##.adwithspace -##.adwobs -##.adwolf-holder -##.adword-box -##.adword-structure -##.adword-text -##.adword-title -##.adword1 -##.adwordListings -##.adwords -##.adwords-container -##.adwordsHeader -##.adwords_in_content -##.adworks -##.adwrap -##.adwrap-mrec -##.adwrap-widget -##.adwrap_MPU -##.adwrapper--desktop -##.adwrapper-lrec -##.adwrapper1 -##.adwrapper948 -##.adwrappercls -##.adwrappercls1 -##.adx-300x250-container -##.adx-300x600-container -##.adx-ads -##.adx-wrapper -##.adx-wrapper-middle -##.adx_center -##.adxli -##.adz-horiz -##.adz-horiz-ext -##.adz2 -##.adz728x90 -##.adzbanner -##.adzone -##.adzone-footer -##.adzone-preview -##.adzone-sidebar -##.adzone_skyscraper -##.af-block-ad-wrapper -##.af-label-ads -##.afc-box -##.aff-big-unit -##.aff-iframe -##.afffix-custom-ad -##.affiliate-ad -##.affiliate-footer -##.affiliate-link -##.affiliate-sidebar -##.affiliate-strip -##.affiliateAdvertText -##.affiliate_ad -##.affiliate_header_ads -##.after-content-ad -##.after-intro-ad -##.after-post-ad -##.after-post-ads -##.after-story-ad-wrapper -##.after_ad -##.after_comments_ads -##.after_content_banner_advert -##.after_post_ad -##.afw_ad -##.aggads-ad -##.ahe-ad -##.ai-top-ad-outer -##.aisle-ad -##.ajax_ad -##.ajaxads -##.ajdg_bnnrwidgets -##.ajdg_grpwidgets -##.alice-adslot -##.alice-root-header-ads__ad--top -##.align.Ad -##.alignads -##.alt_ad -##.alt_ad_block -##.altad -##.am-adContainer -##.am-adslot -##.am-bazaar-ad -##.amAdvert -##.am_ads -##.amazon-auto-links -##.amazon_ad -##.amazonads -##.ampFlyAdd -##.ampforwp-sticky-custom-ad -##.anchor-ad -##.anchor-ad-wrapper -##.anchorAd -##.anchored-ad-widget -##.annonstext -##.anyad -##.anzeige_banner -##.aoa_overlay -##.ap-ad-block -##.ape-ads-container -##.apexAd -##.apiAds -##.app-ad -##.app_ad_unit -##.app_advertising_skyscraper -##.app_nexus_banners_common -##.ar-header-m-ad -##.arc-ad-wrapper -##.arcAdsBox -##.arcAdsContainer -##.arcad-block-container -##.archive-ad -##.archive-ads -##.archive-radio-ad-container -##.areaAd -##.area_ad -##.area_ad03 -##.area_ad07 -##.area_ad09 -##.area_ad2 -##.arena-ad-col -##.art-text-ad -##.artAd -##.artAdInner -##.art_ads -##.artcl_ad_dsk -##.article--ad -##.article--content-ad -##.article-ad -##.article-ad-align-left -##.article-ad-blk -##.article-ad-bottom -##.article-ad-box -##.article-ad-cont -##.article-ad-container -##.article-ad-holder -##.article-ad-horizontal -##.article-ad-left -##.article-ad-legend -##.article-ad-main -##.article-ad-placeholder -##.article-ad-placement -##.article-ad-primary -##.article-ad-row -##.article-ad-row-inner -##.article-ad-section -##.article-ads -##.article-advert -##.article-advert--text -##.article-advert-container -##.article-advert-dfp -##.article-aside-ad -##.article-aside-top-ad -##.article-content-ad -##.article-content-adwrap -##.article-first-ad -##.article-footer-ad -##.article-footer-ad-container -##.article-footer__ad -##.article-footer__ads -##.article-header-ad -##.article-header__railAd -##.article-inline-ad -##.article-mid-ad -##.article-small-ads -##.article-sponsor -##.article-sponsorship-header -##.article-top-ad -##.articleADbox -##.articleAd -##.articleAdHeader -##.articleAdTopRight -##.articleAds -##.articleAdsL -##.articleAdvert -##.articleBottom-ads -##.articleEmbeddedAdBox -##.articleFooterAd -##.articleHeaderAd -##.articleTop-ads -##.articleTopAd -##.article__ad-holder -##.article__adblock -##.article__adhesion -##.article__adv -##.article_ad -##.article_ad_1 -##.article_ad_2 -##.article_ad_text -##.article_ad_top -##.article_adbox -##.article_ads_banner -##.article_bottom-ads -##.article_bottom_ad -##.article_google-ad -##.article_google_ads -##.article_inline_ad -##.article_inner_ad -##.article_mpu -##.article_tower_ad -##.articlead -##.articleads -##.articles-ad-block -##.artnet-ads-ad -##.aside-ad -##.aside-ad-space -##.aside-ad-wrapper -##.aside-ads -##.aside-ads-top -##.asideAd -##.aside_ad -##.aside_ad_large -##.async-ad-container -##.at-header-ad -##.at-sidebar-ad -##.atf-ad -##.atfAds -##.atf_adWrapper -##.atomsAdsCellModel -##.attachment-advert_home -##.attachment-dm-advert-bronze -##.attachment-dm-advert-gold -##.attachment-dm-advert-silver -##.attachment-sidebar-ad -##.attachment-squareAd -##.avadvslot -##.avap-ads-container -##.avert--leaderboard -##.avert--sidebar -##.avert-text -##.azk-adsense -##.b-ad -##.b-ad-main -##.b-adhesion -##.b-adv -##.b-advert -##.b-advertising__down-menu -##.b-aside-ads -##.b-header-ad -##.b-right-rail--ads -##.bAdvertisement -##.b_adLastChild -##.b_ads -##.b_ads_cont -##.b_ads_r -##.b_ads_top -##.background-ad -##.background-ads -##.background-adv -##.backgroundAd -##.bam-ad-slot -##.bank-rate-ad -##.banmanad -##.banner--ad -##.banner-125 -##.banner-300 -##.banner-300-100 -##.banner-300-250 -##.banner-300x250 -##.banner-300x600 -##.banner-320-100 -##.banner-468 -##.banner-468-60 -##.banner-468x60 -##.banner-728 -##.banner-728x90 -##.banner-ad -##.banner-ad-b -##.banner-ad-below -##.banner-ad-block -##.banner-ad-bottom-fixed -##.banner-ad-container -##.banner-ad-contianer -##.banner-ad-footer -##.banner-ad-image -##.banner-ad-inner -##.banner-ad-label -##.banner-ad-large -##.banner-ad-pos -##.banner-ad-row -##.banner-ad-skeleton-box -##.banner-ad-space -##.banner-ad-wrap -##.banner-ad-wrapper -##.banner-ad2 -##.banner-ads -##.banner-ads-right -##.banner-ads-sidebar -##.banner-adsense -##.banner-adv -##.banner-advert -##.banner-advert-wrapper -##.banner-advertisement -##.banner-advertising -##.banner-adverts -##.banner-buysellads -##.banner-sponsorship -##.banner-top-ads -##.banner120x600 -##.banner160 -##.banner160x600 -##.banner200x200 -##.banner300 -##.banner300x250 -##.banner336 -##.banner336x280 -##.banner350 -##.banner468 -##.banner728 -##.banner728-ad -##.banner728-container -##.banner728x90 -##.bannerADS -##.bannerADV -##.bannerAd -##.bannerAd-module -##.bannerAd3 -##.bannerAdContainer -##.bannerAdLeaderboard -##.bannerAdRectangle -##.bannerAdSearch -##.bannerAdSidebar -##.bannerAdTower -##.bannerAdWrap -##.bannerAds -##.bannerAdvert -##.bannerAside -##.bannerGoogle -##.bannerRightAd -##.banner_160x600 -##.banner_240x400 -##.banner_250x250 -##.banner_300_250 -##.banner_300x250 -##.banner_300x600 -##.banner_468_60 -##.banner_468x60 -##.banner_728_90 -##.banner_ad-728x90 -##.banner_ad_300x250 -##.banner_ad_728x90 -##.banner_ad_container -##.banner_ad_footer -##.banner_ad_full -##.banner_ad_leaderboard -##.banner_ad_link -##.banner_ad_wrapper -##.banner_ads -##.banner_ads1 -##.banner_reklam -##.banner_reklam2 -##.banner_slot -##.bannerad -##.bannerad3 -##.banneradd -##.bannerads -##.banneradv -##.bannerandads -##.bannergroup-ads -##.bannermpu -##.banners_ad -##.bannervcms -##.bar_ad -##.base-ad-mpu -##.base-ad-slot -##.base-ad-top -##.base_ad -##.baseboard-ad -##.bb-ad -##.bb-ad-mrec -##.bbccom-advert -##.bbccom_advert -##.bcom_ad -##.before-header-ad -##.before-injected-ad -##.below-ad-border -##.below-article-ad-sidebar -##.below-nav-ad -##.belowMastheadWrapper -##.belowNavAds -##.below_game_ad -##.below_nav_ad_wrap -##.below_player_ad -##.bg-ad-gray -##.bg-ads -##.bg-ads-space -##.bg-grey-ad -##.bgAdBlue -##.bg_ad -##.bg_ads -##.bgcolor_ad -##.bgr-ad-leaderboard -##.bh-ads -##.bh_ad_container -##.bidbarrel-ad -##.big-ad -##.big-ads -##.big-advertisement -##.big-box-ad -##.big-right-ad -##.bigAd -##.bigAdContainer -##.bigAds -##.bigAdvBanner -##.bigBoxAdArea -##.bigCubeAd -##.big_ad -##.big_ad2 -##.big_ads -##.bigad -##.bigad1 -##.bigad2 -##.bigadleft -##.bigadright -##.bigads -##.bigadtxt1 -##.bigbox-ad -##.bigbox.ad -##.bigbox_ad -##.bigboxad -##.bigsponsor -##.billboard-ad -##.billboard-ad-one -##.billboard-ad-space -##.billboard-ads -##.billboard.ad -##.billboardAd -##.billboard__advert -##.billboard_ad -##.billboard_ad_wrap -##.billboard_adwrap -##.bing-ads-wrapper -##.bing-native-ad -##.bl300_ad -##.block--ad -##.block--ads -##.block--dfp -##.block--doubleclick -##.block--simpleads -##.block-ad -##.block-ad-entity -##.block-ad-header -##.block-ad-leaderboard -##.block-ad-wrapper -##.block-admanager -##.block-ads -##.block-ads-bottom -##.block-ads-home -##.block-ads-system -##.block-ads-top -##.block-ads-yahoo -##.block-ads1 -##.block-ads2 -##.block-ads3 -##.block-ads_top -##.block-adsense -##.block-adtech -##.block-adv -##.block-advert -##.block-advertisement -##.block-advertisement-banner-block -##.block-advertising -##.block-adzerk -##.block-bg-advertisement -##.block-boxes-ad -##.block-cdw-google-ads -##.block-dfp -##.block-dfp-ad -##.block-dfp-blocks -##.block-doubleclick_ads -##.block-fusion-ads -##.block-google-admanager -##.block-openads -##.block-openx -##.block-quartz-ads -##.block-reklama -##.block-simpleads -##.block-skyscraper-ad -##.block-sponsor -##.block-sponsored-links -##.block-the-dfp -##.block-wrap-ad -##.block-yt-ads -##.blockAd -##.blockAds -##.blockAdvertise -##.block__ads__ad -##.block_ad -##.block_ad1 -##.block_ad303x1000_left -##.block_ad303x1000_right -##.block_ad_middle -##.block_ad_top -##.block_ads -##.block_adslot -##.block_adv -##.block_advert -##.block_article_ad -##.blockad -##.blocked-ads -##.blog-ad -##.blog-ad-image -##.blog-ads -##.blog-advertisement -##.blogAd -##.blogAdvertisement -##.blog_ad -##.blogads -##.bmd_advert -##.bn_ads -##.bnr_ad -##.body-ad -##.body-ads -##.body-top-ads -##.bodyAd -##.body_ad -##.bodyads -##.bodyads2 -##.bordered-ad -##.botAd -##.bot_ad -##.bot_ads -##.bottom-ad -##.bottom-ad--bigbox -##.bottom-ad-banner -##.bottom-ad-box -##.bottom-ad-container -##.bottom-ad-desktop -##.bottom-ad-large -##.bottom-ad-placeholder -##.bottom-ad-wrapper -##.bottom-ad-zone -##.bottom-ad2 -##.bottom-ads -##.bottom-ads-container -##.bottom-ads-sticky -##.bottom-ads-wrapper -##.bottom-adv -##.bottom-adv-container -##.bottom-banner-ad -##.bottom-fixed-ad -##.bottom-left-ad -##.bottom-main-adsense -##.bottom-mobile-ad -##.bottom-mpu-ad -##.bottom-post-ad-space -##.bottom-post-ads -##.bottom-right-advert -##.bottom-side-advertisement -##.bottomAd -##.bottomAdBlock -##.bottomAdContainer -##.bottomAds -##.bottomAdvert -##.bottomAdvertisement -##.bottom_ad -##.bottom_ad_block -##.bottom_ad_placeholder -##.bottom_ad_responsive -##.bottom_ads -##.bottom_adsense -##.bottom_adspace -##.bottom_banner_ad -##.bottom_banner_advert_text -##.bottom_bar_ads -##.bottom_left_advert -##.bottom_right_ad -##.bottom_rightad -##.bottom_side_ad -##.bottom_sponsor -##.bottom_sticky_ad -##.bottomad -##.bottomads -##.bottomadvert -##.botton_advertisement -##.box-ad -##.box-ad-middle -##.box-ads -##.box-adsense -##.box-adsense-top -##.box-advert -##.box-advertisement -##.box-advertising -##.box-adverts -##.box-entry-ad -##.box-fixed-ads -##.box-footer-ad -##.boxAd -##.boxAdContainer -##.boxAds -##.boxAds2 -##.boxAdvertisement -##.boxSponsor -##.box_ad -##.box_ad_container -##.box_ad_content -##.box_ad_horizontal -##.box_ad_spacer -##.box_ad_wrap -##.box_ads -##.box_adv -##.box_adv_728 -##.box_advert -##.box_advertising -##.box_content_ad -##.box_content_ads -##.box_layout_ad -##.box_publicidad -##.box_sidebar-ads -##.boxad -##.boxad1 -##.boxad2 -##.boxadcont -##.boxads -##.boxadv -##.bps-ad-wrapper -##.bps-advertisement -##.bq_adleaderboard -##.bq_rightAd -##.br-ad -##.br-ad-wrapper -##.breadads -##.break-ads -##.breaker-ad -##.breakerAd -##.briefNewsAd -##.brn-ads-box -##.brn-ads-mobile-container -##.brn-ads-sticky-wrapper -##.broker-ad -##.browse-ad-container -##.browsi-ad -##.btm_ad -##.btn_ad -##.bump-ad -##.bunyad-ad -##.buttom_ad -##.buttom_ad_size -##.button-ad -##.button-ads -##.buttonAd -##.buttonAdSpot -##.buttonAds -##.button_ad -##.button_ads -##.button_advert -##.button_left_ad -##.button_right_ad -##.buttonad -##.buttonadbox -##.buttonads -##.buySellAdsContainer -##.buysellAds -##.buzzAd -##.c-Ad -##.c-Adhesion -##.c-ArticleAds -##.c-ad -##.c-ad--adStickyContainer -##.c-ad--bigbox -##.c-ad--header -##.c-ad-flex -##.c-ad-fluid -##.c-ad-placeholder -##.c-ad-size2 -##.c-ad-size3 -##.c-adDisplay -##.c-adDisplay_container -##.c-adOmnibar -##.c-adSense -##.c-adSkyBox -##.c-adbutler-ad -##.c-adbutler-ad__wrapper -##.c-adcontainer -##.c-ads -##.c-adunit -##.c-adunit--billboard -##.c-adunit--first -##.c-adunit__container -##.c-adv3__inner -##.c-advert -##.c-advert-app -##.c-advert-superbanner -##.c-advertisement -##.c-advertisement--billboard -##.c-advertisement--rectangle -##.c-advertising -##.c-advertising__banner-area -##.c-adverts -##.c-advscrollingzone -##.c-box--advert -##.c-gallery-vertical__advert -##.c-googleadslot -##.c-gpt-ad -##.c-header__ad -##.c-header__advert-container -##.c-pageArticleSingle_bottomAd -##.c-prebid -##.c-sidebar-ad-stream__ad -##.c-sitenav-adslot -##.c-sitenavPlaceholder__ad -##.c_nt_ad -##.cableads -##.cactus-ads -##.cactus-header-ads -##.caja_ad -##.california-ad -##.california-sidebar-ad -##.calloutAd -##.carbon-ad -##.carbon_ads -##.carbonad -##.carbonad-tag -##.carbonads-widget -##.card--ad -##.card--article-ad -##.card-ad -##.card-ads -##.card-article-ads -##.cardAd -##.catalog_ads -##.category-ad:not(html):not(body):not(.post) -##.category-ads:not(html):not(body):not(.post) -##.categoryMosaic-advertising -##.categoryMosaic-advertisingText -##.cazAd -##.cb-ad-banner -##.cb-ad-container -##.cbd_ad_manager -##.cbs-ad -##.cc-advert -##.center-ad -##.center-ad-long -##.center-tag-rightad -##.centerAD -##.centerAd -##.centerAds -##.center_ad -##.center_add -##.center_ads -##.center_inline_ad -##.centerad -##.centerads -##.centeradv -##.centered-ad -##.ch-ad-item -##.channel--ad -##.channel-ad -##.channel-adv -##.channel-icon--ad -##.channel-icon__ad-buffer -##.channel-sidebar-big-box-ad -##.channelBoxAds -##.channel_ad_2016 -##.chapter-bottom-ads -##.chapter-top-ads -##.chart_ads -##.chitika-ad -##.cl-ad-billboard -##.clAdPlacementAnchorWrapper -##.clever-core-ads -##.clickforceads -##.clickio-side-ad -##.client-ad -##.clsy-c-advsection -##.cms-ad -##.cn-advertising -##.cnbcHeaderAd -##.cnc-ads -##.cnx-player -##.cnx-player-wrapper -##.coinzilla-ad -##.coinzilla-ad--mobile -##.col-ad -##.col-ad-hidden -##.col-has-ad -##.col-line-ad -##.col2-ads -##.colAd -##.colBoxAdframe -##.colBoxDisplayAd -##.col_ad -##.colads -##.collapsed-ad -##.colombiaAd -##.column-ad -##.columnAd -##.columnAdvert -##.columnBoxAd -##.columnRightAdvert -##.combinationAd -##.comment-ad -##.comment-ad-wrap -##.comment-advertisement -##.comment_ad -##.comment_ad_box -##.commercialAd -##.companion-ad -##.companion-ads -##.companionAd -##.companion_ad -##.complex-ad -##.component-ar-horizontal-bar-ad -##.component-header-sticky-ad -##.components-Ad-___Ad__ad -##.con_ads -##.connatix -##.connatix-container -##.connatix-hodler -##.connatix-holder -##.connatix-main-container -##.connatix-wrapper -##.connatix-wysiwyg-container -##.consoleAd -##.cont-ad -##.container--ad -##.container--ads -##.container--ads-leaderboard-atf -##.container--advert -##.container--bannerAd -##.container-ad-600 -##.container-ad-left -##.container-adds -##.container-adrotate -##.container-ads -##.container-adwords -##.container-banner-ads -##.container-bottom-ad -##.container-first-ads -##.container-lower-ad -##.container-rectangle-ad -##.container-top-adv -##.containerAdsense -##.containerSqAd -##.container__ad -##.container__box--ads -##.container_ad -##.container_ad_v -##.container_publicidad -##.containerads -##.contains-ad -##.contains-advertisment -##.content--right-ads -##.content-ad -##.content-ad-article -##.content-ad-box -##.content-ad-container -##.content-ad-left -##.content-ad-right -##.content-ad-side -##.content-ad-widget -##.content-ad-wrapper -##.content-ads -##.content-ads-bottom -##.content-advert -##.content-advertisment -##.content-bottom-ad -##.content-bottom-mpu -##.content-cliff__ad -##.content-cliff__ad-container -##.content-contentad -##.content-footer-ad -##.content-footer-ad-block -##.content-header-ad -##.content-item-ad-top -##.content-kuss-ads -##.content-leaderboard-ad -##.content-leaderboard-ads -##.content-page-ad_wrap -##.content-result-ads -##.content-top-ad-item -##.content1-ad -##.content2-ad -##.contentAd -##.contentAd--sb1 -##.contentAdBox -##.contentAdContainer -##.contentAdFoot -##.contentAdIndex -##.contentAds -##.contentAdsCommon -##.contentAdsWrapper -##.contentAdvertisement -##.contentTopAd -##.contentTopAdSmall -##.contentTopAds -##.content__ad -##.content__ad__content -##.content_ad -##.content_ad_728 -##.content_ad_head -##.content_ad_side -##.content_ads -##.content_adsense -##.content_adsq -##.content_advert -##.content_advertising -##.content_advt -##.content_bottom_adsense -##.content_gpt_top_ads -##.content_inner_ad -##.content_left_advert -##.contentad -##.contentad-end -##.contentad-home -##.contentad-storyad-1 -##.contentad-superbanner-2 -##.contentad-top -##.contentad2 -##.contentad300x250 -##.contentad_right_col -##.contentadarticle -##.contentadfloatl -##.contentadleft -##.contentads1 -##.contentads2 -##.contentbox_ad -##.contentleftad -##.contents-ads-bottom-left -##.contest_ad -##.context-ads -##.contextualAds -##.contextual_ad_unit -##.coreAdsPlacer -##.cornerad -##.cpmstarHeadline -##.cpmstarText -##.crain-advertisement -##.criteo-ad -##.crm-adcontain -##.crumb-ad -##.cspAd -##.css--ad -##.ct-ads -##.ct-advert -##.ct-advertising-footer -##.ct-bottom-ads -##.ct_ad -##.cta-ad -##.cube-ad -##.cubeAd -##.cube_ad -##.cube_ads -##.custom-ad -##.custom-ad-area -##.custom-ad-container -##.custom-ads -##.custom-advert-banner -##.custom-sticky-ad-container -##.customAd -##.custom_ad -##.custom_ad_responsive -##.custom_ads -##.custom_ads_positions -##.custom_banner_ad -##.custom_footer_ad -##.customadvert -##.customized_ad_module -##.cwAdvert -##.cxAdvertisement -##.d1-top-ad -##.d3-c-adblock -##.d3-o-adv-block -##.da-custom-ad-box -##.dac__banner__wrapper -##.dac__mpu-card -##.daily-adlabel -##.dart-ad -##.dart-ad-content -##.dart-ad-grid -##.dart-ad-title -##.dart-advertisement -##.dart-leaderboard -##.dart-leaderboard-top -##.dartAdImage -##.dart_ad -##.dart_tag -##.dartad -##.dartadbanner -##.dartadvert -##.dartiframe -##.dc-ad -##.dc-banner -##.dc-half-banner -##.dc-widget-adv-125 -##.dcmads -##.dd-ad -##.dd-ad-container -##.deckAd -##.deckads -##.demand-supply -##.desktop-ad -##.desktop-ad-banner -##.desktop-ad-container -##.desktop-ad-inpage -##.desktop-ad-slider -##.desktop-ads -##.desktop-adunit -##.desktop-advert -##.desktop-article-top-ad -##.desktop-aside-ad-hide -##.desktop-lazy-ads -##.desktop-sidebar-ad-wrapper -##.desktop-top-ad-wrapper -##.desktop.ad -##.desktopAd -##.desktop_ad -##.desktop_mpu -##.desktop_only_ad -##.desktopads -##.detail-ad -##.detail-ads -##.detail__ad--small -##.detail_ad -##.detail_article_ad -##.detail_top_advert -##.details-advert -##.dfm-featured-bottom-flex-container -##.dfp-ad -##.dfp-ad-bigbox2-wrap -##.dfp-ad-container -##.dfp-ad-container-box -##.dfp-ad-container-wide -##.dfp-ad-full -##.dfp-ad-hideempty -##.dfp-ad-lead2-wrap -##.dfp-ad-lead3-wrap -##.dfp-ad-midbreaker-wrap -##.dfp-ad-midbreaker2-wrap -##.dfp-ad-placeholder -##.dfp-ad-rect -##.dfp-ad-region-1 -##.dfp-ad-region-2 -##.dfp-ad-tags -##.dfp-ad-top-wrapper -##.dfp-ad-unit -##.dfp-ad-widget -##.dfp-ads-ad-article-middle -##.dfp-ads-embedded -##.dfp-adspot -##.dfp-article-ad -##.dfp-banner -##.dfp-banner-slot -##.dfp-billboard-wrapper -##.dfp-block -##.dfp-bottom -##.dfp-button -##.dfp-close-ad -##.dfp-double-mpu -##.dfp-dynamic-tag -##.dfp-fixedbar -##.dfp-here-bottom -##.dfp-here-top -##.dfp-interstitial -##.dfp-leaderboard -##.dfp-leaderboard-container -##.dfp-mrec -##.dfp-panel -##.dfp-plugin-advert -##.dfp-position -##.dfp-slot -##.dfp-slot-wallpaper -##.dfp-space -##.dfp-super-leaderboard -##.dfp-tag-wrapper -##.dfp-top -##.dfp-top1 -##.dfp-top1-container -##.dfp-top_leaderboard -##.dfp-wrap -##.dfp-wrapper -##.dfpAd -##.dfpAdUnitContainer -##.dfpAds -##.dfpAdspot -##.dfpAdvert -##.dfp_ATF_wrapper -##.dfp_ad--outbrain -##.dfp_ad_block -##.dfp_ad_caption -##.dfp_ad_content_bottom -##.dfp_ad_content_top -##.dfp_ad_footer -##.dfp_ad_header -##.dfp_ad_pos -##.dfp_ad_unit -##.dfp_ads_block -##.dfp_frame -##.dfp_slot -##.dfp_strip -##.dfp_top-ad -##.dfp_txt -##.dfp_unit -##.dfp_unit--interscroller -##.dfp_unit-ad_container -##.dfpad -##.dfrads -##.dfx-ad -##.dfx-adBlock1Wrapper -##.dg-gpt-ad-container -##.dianomi-ad -##.dianomi-container -##.dianomi-embed -##.dianomiScriptContainer -##.dianomi_context -##.dikr-responsive-ads-slot -##.discourse-adplugin -##.discourse-google-dfp -##.display-ad -##.display-ad-block -##.display-adhorizontal -##.display-ads-block -##.display-advertisement -##.displayAd -##.displayAdCode -##.displayAdSlot -##.displayAdUnit -##.displayAds -##.display_ad -##.display_ads_right -##.div-gpt-ad-adhesion-leaderboard-wrap -##.div-insticator-ad -##.divAd -##.divAdright -##.divAds -##.divAdsBanner -##.divAdsLeft -##.divAdsRight -##.divReklama -##.divRepAd -##.divSponsoredBox -##.divSponsoredLinks -##.divTopADBanner -##.divTopADBannerWapper -##.divTopArticleAd -##.div_advertisement -##.divad1 -##.divad2 -##.divad3 -##.divads -##.divider-ad -##.divider-advert -##.divider-full-width-ad -##.divider_ad -##.dlSponsoredLinks -##.dm-adSlotBillboard -##.dm-adSlotNative1 -##.dm-adSlotNative2 -##.dm-adSlotNative3 -##.dm-adSlotRectangle1 -##.dm-adSlotRectangle2 -##.dm-adSlotSkyscraper -##.dm-adSlot__sticky -##.dm_ad-billboard -##.dm_ad-container -##.dm_ad-halfpage -##.dm_ad-leaderboard -##.dm_ad-link -##.dm_ad-skyscraper -##.dmpu-ad -##.dn-ad-wide -##.dotcom-ad -##.double-ad -##.double-ads -##.doubleClickAd -##.doubleclickAds -##.download-ad -##.downloadAds -##.download_ad -##.dsk-box-ad-d -##.dsq_ad -##.dt-sponsor -##.dtads-desktop -##.dtads-slot -##.dual-ads -##.dualAds -##.dyn-sidebar-ad -##.dynamic-ads -##.dynamicAdvertContainer -##.dynamicLeadAd -##.dynamic_adslot -##.dynamicad1 -##.dynamicad2 -##.e-ad -##.e-advertise -##.e3lan -##.e3lan-top -##.e3lan-widget-content -##.e3lan300-100 -##.e3lan300-250 -##.e3lan300_250-widget -##.eaa-ad -##.eads -##.easy-ads -##.easyAdsBox -##.easyAdsSinglePosition -##.ebayads -##.ebm-ad-target__outer -##.ecommerce-ad -##.ecosia-ads -##.eddy-adunit -##.editor_ad -##.eg-ad -##.eg-custom-ad -##.element--ad -##.element-ad -##.element-adplace -##.element_contentad1 -##.element_contentad2 -##.element_contentad3 -##.element_contentad4 -##.element_contentad5 -##.elementor-widget-wp-widget-advads_ad_widget -##.embAD -##.embed-ad -##.embedded-article-ad -##.embeddedAd -##.embeddedAds -##.embedded_ad_wrapper -##.empire-unit-prefill-container -##.empty-ad -##.endAHolder -##.endti-adlabel -##.entry-ad -##.entry-ads -##.entry-bottom-ad -##.entry-bottom-ads -##.entry-top-ad -##.entryAd -##.entry_ad -##.entryad -##.etn-ad-text -##.eu-advertisment1 -##.evo-ads-widget -##.evolve-ad -##.ex_pu_iframe -##.exo_wrapper -##.external-ad -##.external-add -##.ezAdsWidget -##.ezmob-footer -##.ezmob-footer-desktop -##.ezo_ad -##.ezoic-ad -##.ezoic-ad-adaptive -##.ezoic-adpicker-ad -##.ezoic-floating-bottom -##.f-ad -##.f-item-ad -##.f-item-ad-inhouse -##.fbs-ad--ntv-home-wrapper -##.fbs-ad--top-wrapper -##.fbs-ad--topx-wrapper -##.fc_clmb_ad -##.fce_ads -##.featureAd -##.feature_ad -##.featured-ad -##.featured-ads -##.featured-sponsors -##.featured-story-ad -##.featuredAdBox -##.featuredAds -##.featuredBoxAD -##.featured_ad -##.featuredadvertising -##.feed-ad -##.feed-ad-wrapper -##.fh_ad_microbuttons -##.field-59-companion-ad -##.fig-ad-content -##.first-article-ad-block -##.first-banner-ad -##.first-leaderbord-adv -##.first-leaderbord-adv-mobile -##.firstAd-container -##.first_ad -##.first_party_ad_wrapper -##.first_post_ad -##.firstad -##.firstpost_advert -##.firstpost_advert_container -##.fix_ad -##.fixadheight -##.fixadheightbottom -##.fixed-ad-aside -##.fixed-ad-bottom -##.fixed-ads -##.fixed-bottom-ad -##.fixed-sidebar-ad -##.fixedAds -##.fixedLeftAd -##.fixedRightAd -##.fixed_ad -##.fixed_adslot -##.fixed_advert_banner -##.fjs-ad-hide-empty -##.fla-ad -##.flashAd -##.flash_ad -##.flash_advert -##.flashad -##.flashadd -##.flex-ad -##.flex-posts-ads -##.flexAd -##.flexAds -##.flexContentAd -##.flexad -##.flexadvert -##.flexiad -##.flm-ad -##.floatad -##.floatads -##.floated-ad -##.floated_right_ad -##.floating-ads -##.floating-advert -##.floatingAds -##.fly-ad -##.fm-badge-ad -##.fnadvert -##.fns_td_wrap -##.fold-ads -##.follower-ad-bottom -##.following-ad -##.following-ad-container -##.foot-ad -##.foot-ads -##.foot-advertisement -##.foot_adsense -##.footad -##.footer-300-ad -##.footer-ad -##.footer-ad-full-wrapper -##.footer-ad-labeling -##.footer-ad-row -##.footer-ad-section -##.footer-ad-squares -##.footer-ad-unit -##.footer-ad-wrap -##.footer-adrow -##.footer-ads -##.footer-ads-slide -##.footer-ads-wrapper -##.footer-ads_unlocked -##.footer-adsbar -##.footer-adsense -##.footer-advert -##.footer-advert-large -##.footer-advertisement -##.footer-advertisements -##.footer-advertising -##.footer-advertising-area -##.footer-banner-ad -##.footer-banner-ads -##.footer-floating-ad -##.footer-im-ad -##.footer-leaderboard-ad -##.footer-post-ad-blk -##.footer-prebid -##.footer-text-ads -##.footerAd -##.footerAdModule -##.footerAdUnit -##.footerAdWrapper -##.footerAds -##.footerAdsWrap -##.footerAdslot -##.footerAdverts -##.footerBottomAdSec -##.footerFullAd -##.footerPageAds -##.footerTextAd -##.footer__ads--content -##.footer__advert -##.footer_ad -##.footer_ad336 -##.footer_ad_container -##.footer_ads -##.footer_adv -##.footer_advertisement -##.footer_block_ad -##.footer_bottom_ad -##.footer_bottomad -##.footer_line_ad -##.footer_text_ad -##.footer_text_adblog -##.footerad -##.footeradspace -##.footertextadbox -##.forbes-ad-container -##.forex_ad_links -##.fortune-ad-unit -##.forum-ad -##.forum-ad-2 -##.forum-teaser-ad -##.forum-topic--adsense -##.forumAd -##.forum_ad_beneath -##.four-ads -##.fp-ad-nativendo-one-third -##.fp-ad-rectangle -##.fp-ad300 -##.fp-ads -##.fp-right-ad -##.fp-right-ad-list -##.fp-right-ad-zone -##.fp_ad_text -##.fp_adv-box -##.frame_adv -##.framead -##.freestar-ad-container -##.freestar-ad-sidebar-container -##.freestar-ad-wide-container -##.freestar-incontent-ad -##.frn_adbox -##.front-ad -##.front_ad -##.frontads -##.frontendAd -##.frontone_ad -##.frontpage__article--ad -##.frontpage_ads -##.fsAdContainer -##.fs_ad -##.fs_ads -##.fsrads -##.ft-ad -##.full-ad -##.full-ad-wrapper -##.full-ads -##.full-adv -##.full-bleed-ad -##.full-bleed-ad-container -##.full-page-ad -##.full-top-ad-area -##.full-width-ad -##.full-width-ad-container -##.full-width-ads -##.fullAdBar -##.fullBleedAd -##.fullSizeAd -##.fullWidthAd -##.full_AD -##.full_ad_box -##.full_ad_row -##.full_width_ad -##.fulladblock -##.fullbanner_ad -##.fullbannerad -##.fullpage-ad -##.fullsize-ad-square -##.fullwidth-advertisement -##.fusion-ads -##.fuv_sidebar_ad_widget -##.fwAdTags -##.fw_ad -##.g-ad -##.g-ad-fix -##.g-ad-leaderboard -##.g-ad-slot -##.g-adver -##.g-advertisement-block -##.g1-ads -##.g1-advertisement -##.g2-adsense -##.g3-adsense -##.gAdMTable -##.gAdMainParent -##.gAdMobileTable -##.gAdOne -##.gAdOneMobile -##.gAdRows -##.gAdSky -##.gAdThreeDesktop -##.gAdThreeMobile -##.gAdTwo -##.gAds -##.gAds1 -##.gAdsBlock -##.gAdsContainer -##.gAdvertising -##.g_ad -##.g_adv -##.ga-ads -##.gaTeaserAds -##.gaTeaserAdsBox -##.gabfire_ad -##.gabfire_simplead_widget -##.gad-container -##.gad-right1 -##.gad-right2 -##.gad300x600 -##.gad336x280 -##.gadContainer -##.gad_container -##.gads_container -##.gadsense -##.gadsense-ad -##.gallery-ad -##.gallery-ad-container -##.gallery-ad-counter -##.gallery-ad-holder -##.gallery-ad-lazyload-placeholder -##.gallery-ad-overlay -##.gallery-adslot-top -##.gallery-injectedAd -##.gallery-sidebar-ad -##.gallery-slide-ad -##.galleryAds -##.galleryLeftAd -##.galleryRightAd -##.gallery_ad -##.gallery_ad_wrapper -##.gallery_ads_box -##.galleryad -##.galleryads -##.gam-ad -##.gam-ad-hz-bg -##.gam_ad_slot -##.game-ads -##.game-category-ads -##.gameAd -##.gameBottomAd -##.gamepage_boxad -##.games-ad-wrapper -##.gb-ad-top -##.gb_area_ads -##.general-ad -##.genericAds -##.ggl_ads_row -##.ggl_txt_ads -##.giant_pushbar_ads_l -##.glacier-ad -##.globalAd -##.gnm-ad-unit -##.gnm-ad-unit-container -##.gnm-ad-zones -##.gnm-adhesion-ad -##.gnm-banner-ad -##.gnm-bg-ad -##.go-ad -##.goAdMan -##.goads -##.googads -##.google-2ad-m -##.google-ad -##.google-ad-160-600 -##.google-ad-468-60 -##.google-ad-728-90 -##.google-ad-block -##.google-ad-container -##.google-ad-content -##.google-ad-header2 -##.google-ad-image -##.google-ad-manager -##.google-ad-placeholder -##.google-ad-sidebar -##.google-ad-space -##.google-ad-widget -##.google-ads -##.google-ads-billboard -##.google-ads-bottom -##.google-ads-container -##.google-ads-footer-01 -##.google-ads-footer-02 -##.google-ads-in_article -##.google-ads-leaderboard -##.google-ads-long -##.google-ads-responsive -##.google-ads-right -##.google-ads-sidebar -##.google-ads-widget -##.google-ads-wrapper -##.google-adsense -##.google-advert-sidebar -##.google-afc-wrapper -##.google-bottom-ads -##.google-dfp-ad-caption -##.google-dfp-ad-wrapper -##.google-right-ad -##.google-sponsored -##.google-sponsored-ads -##.google-sponsored-link -##.google-sponsored-links -##.google468 -##.googleAd -##.googleAdBox -##.googleAdContainer -##.googleAdSearch -##.googleAdSense -##.googleAdWrapper -##.googleAdd -##.googleAds -##.googleAdsContainer -##.googleAdsense -##.googleAdv -##.google_ad -##.google_ad_container -##.google_ad_label -##.google_ad_wide -##.google_add -##.google_admanager -##.google_ads -##.google_ads_content -##.google_ads_sidebar -##.google_adsense -##.google_adsense1 -##.google_adsense_footer -##.google_afc -##.google_afc_ad -##.googlead -##.googleadArea -##.googleadbottom -##.googleadcontainer -##.googleaddiv -##.googleads -##.googleads-container -##.googleads-height -##.googleadsense -##.googleadsrectangle -##.googleadv -##.googleadvertisement -##.googleadwrap -##.googleafc -##.gpAds -##.gpt-ad -##.gpt-ad-container -##.gpt-ad-sidebar-wrap -##.gpt-ad-wrapper -##.gpt-ads -##.gpt-billboard -##.gpt-breaker-container -##.gpt-container -##.gpt-leaderboard-banner -##.gpt-mpu-banner -##.gpt-sticky-sidebar -##.gpt.top-slot -##.gptSlot -##.gptSlot-outerContainer -##.gptSlot__sticky-footer -##.gptslot -##.gradientAd -##.graphic_ad -##.grev-ad -##.grey-ad -##.grey-ad-line -##.grey-ad-notice -##.greyAd -##.greyad -##.grid-ad -##.grid-ad-col__big -##.grid-advertisement -##.grid-block-ad -##.grid-item-ad -##.gridAd -##.gridAdRow -##.gridSideAd -##.grid_ad_container -##.gridad -##.gridlove-ad -##.gridstream_ad -##.ground-ads-shared -##.group-ad-leaderboard -##.group-google-ads -##.group-item-ad -##.group_ad -##.gsAd -##.gtm-ad-slot -##.guide__row--fixed-ad -##.guj-ad--placeholder -##.gujAd -##.gutterads -##.gw-ad -##.h-adholder -##.h-ads -##.h-adver -##.h-large-ad-box -##.h-top-ad -##.h11-ad-top -##.h_Ads -##.h_ad -##.half-ad -##.half-page-ad -##.half-page-ad-1 -##.half-page-ad-2 -##.halfPageAd -##.half_ad_box -##.halfpage_ad -##.halfpage_ad_1 -##.halfpage_ad_container -##.happy-inline-ad -##.has-ad -##.has-adslot -##.has-fixed-bottom-ad -##.hasAD -##.hdr-ad -##.hdr-ads -##.hdrAd -##.hdr_ad -##.head-ad -##.head-ads -##.head-banner468 -##.head-top-ads -##.headAd -##.head_ad -##.head_ad_wrapper -##.head_ads -##.head_adv -##.head_advert -##.headad -##.headadcontainer -##.header-ad -##.header-ad-area -##.header-ad-banner -##.header-ad-box -##.header-ad-container -##.header-ad-desktop -##.header-ad-frame -##.header-ad-holder -##.header-ad-region -##.header-ad-row -##.header-ad-space -##.header-ad-top -##.header-ad-widget -##.header-ad-wrap -##.header-ad-wrapper -##.header-ad-zone -##.header-adbanner -##.header-adbox -##.header-adcode -##.header-adplace -##.header-ads -##.header-ads-area -##.header-ads-container -##.header-ads-holder -##.header-ads-wrap -##.header-ads-wrapper -##.header-adsense -##.header-adslot-container -##.header-adspace -##.header-adv -##.header-advert -##.header-advert-wrapper -##.header-advertise -##.header-advertisement -##.header-advertising -##.header-and-footer--banner-ad -##.header-article-ads -##.header-banner-ad -##.header-banner-ads -##.header-banner-advertising -##.header-bannerad -##.header-bottom-adboard-area -##.header-pencil-ad -##.header-sponsor -##.header-top-ad -##.header-top_ads -##.headerAd -##.headerAd1 -##.headerAdBanner -##.headerAdContainer -##.headerAdPosition -##.headerAdSpacing -##.headerAdWrapper -##.headerAds -##.headerAds250 -##.headerAdspace -##.headerAdvert -##.headerAdvertisement -##.headerTextAd -##.headerTopAd -##.headerTopAds -##.header__ad -##.header__ads -##.header__ads-wrapper -##.header__advertisement -##.header_ad -##.header_ad1 -##.header_ad_center -##.header_ad_div -##.header_ad_space -##.header_ads -##.header_ads-container -##.header_ads_box -##.header_adspace -##.header_advert -##.header_advertisement -##.header_advertisment -##.header_leaderboard_ad -##.header_top_ad -##.headerad -##.headeradarea -##.headeradblock -##.headeradright -##.headerads -##.heading-ad-space -##.headline-adblock -##.headline-ads -##.headline_advert -##.hederAd -##.herald-ad -##.hero-ad -##.hero-ad-slot -##.hero-advert -##.heroAd -##.hidden-ad -##.hide-ad -##.hide_ad -##.hidead -##.highlightsAd -##.hm-ad -##.hmad -##.hn-ads -##.holder-ad -##.holder-ads -##.home-ad -##.home-ad-bigbox -##.home-ad-container -##.home-ad-inline -##.home-ad-links -##.home-ad-region-1 -##.home-ad-section -##.home-ads -##.home-ads-container -##.home-ads1 -##.home-adv-box -##.home-advert -##.home-body-ads -##.home-page-ad -##.home-sidebar-ad -##.home-sponsored-links -##.home-sticky-ad -##.home-top-ad -##.homeAd -##.homeAd1 -##.homeAd2 -##.homeAdBox -##.homeAdBoxA -##.homeAdSection -##.homeBoxMediumAd -##.homeCentreAd -##.homeMainAd -##.homeMediumAdGroup -##.homePageAdSquare -##.homePageAds -##.homeTopAdContainer -##.home_ad -##.home_ad_bottom -##.home_ad_large -##.home_ad_title -##.home_adblock -##.home_advert -##.home_advertisement -##.home_mrec_ad -##.homeadwrapper -##.homepage--sponsor-content -##.homepage-ad -##.homepage-ad-block -##.homepage-ad-module -##.homepage-advertisement -##.homepage-banner-ad -##.homepage-footer-ad -##.homepage-footer-ads -##.homepage-page__ff-ad-container -##.homepage-page__tag-ad-container -##.homepage-page__video-ad-container -##.homepageAd -##.homepage__native-ad -##.homepage_ads -##.homepage_block_ad -##.hor-ad -##.hor_ad -##.horiAd -##.horiz_adspace -##.horizontal-ad -##.horizontal-ad-container -##.horizontal-ad-holder -##.horizontal-ad-wrapper -##.horizontal-ad2 -##.horizontal-ads -##.horizontal-advert-container -##.horizontal-full-ad -##.horizontal.ad -##.horizontalAd -##.horizontalAdText -##.horizontalAdvert -##.horizontal_Fullad -##.horizontal_ad -##.horizontal_adblock -##.horizontal_ads -##.horizontaltextadbox -##.horizsponsoredlinks -##.hortad -##.hotad_bottom -##.hotel-ad -##.house-ad -##.house-ad-small -##.house-ad-unit -##.house-ads -##.houseAd -##.houseAd1 -##.houseAdsStyle -##.housead -##.hover_ads -##.hoverad -##.hp-ad-container -##.hp-ad-grp -##.hp-adsection -##.hp-sectionad -##.hpRightAdvt -##.hp_320-250-ad -##.hp_ad_300 -##.hp_ad_box -##.hp_ad_cont -##.hp_ad_text -##.hp_adv300x250 -##.hp_advP1 -##.hp_horizontal_ad -##.hp_textlink_ad -##.htl-ad -##.htl-ad-placeholder -##.html-advertisement -##.html5-ad-progress-list -##.hw-ad--frTop -##.hyad -##.i-amphtml-element.live-updates.render-embed -##.i-amphtml-unresolved -##.iAdserver -##.iab300x250 -##.iab728x90 -##.ib-adv -##.ico-adv -##.icon-advertise -##.iconAdChoices -##.icon_ad_choices -##.iconads -##.idgGoogleAdTag -##.ie-adtext -##.iframe-ad -##.iframe-ads -##.iframeAd -##.iframeAds -##.ima-ad-container -##.image-advertisement -##.image-viewer-ad -##.image-viewer-mpu -##.imageAd -##.imageAds -##.imagead -##.imageads -##.img-advert -##.img_ad -##.img_ads -##.imgad -##.in-article-ad -##.in-article-ad-placeholder -##.in-article-ad-wrapper -##.in-article-adx -##.in-between-ad -##.in-content-ad -##.in-content-ad-wrapper -##.in-page-ad -##.in-slider-ad -##.in-story-ads -##.in-text-ad -##.in-text__advertising -##.in-thumb-ad -##.in-thumb-video-ad -##.inPageAd -##.in_ad -##.in_article_ad -##.in_article_ad_wrapper -##.in_content_ad_container -##.in_content_advert -##.inarticlead -##.inc-ad -##.incontent-ad1 -##.incontentAd -##.incontent_ads -##.index-adv -##.index_728_ad -##.index_ad -##.index_ad_a2 -##.index_ad_a4 -##.index_ad_a5 -##.index_ad_a6 -##.index_right_ad -##.infinity-ad -##.inhousead -##.injected-ad -##.injectedAd -##.inline-ad -##.inline-ad-card -##.inline-ad-container -##.inline-ad-desktop -##.inline-ad-placeholder -##.inline-ad-text -##.inline-ad-wrap -##.inline-ad-wrapper -##.inline-adblock -##.inline-advert -##.inline-banner-ad -##.inline-display-ad -##.inline-google-ad-slot -##.inline-mpu -##.inline-story-add -##.inlineAd -##.inlineAdContainer -##.inlineAdImage -##.inlineAdInner -##.inlineAdNotice -##.inlineAdText -##.inlineAdvert -##.inlineAdvertisement -##.inlinePageAds -##.inlineSideAd -##.inline_ad -##.inline_ad_container -##.inline_ad_title -##.inline_ads -##.inlinead -##.inlinead_lazyload -##.inlineadsense -##.inlineadtitle -##.inlist-ad -##.inlistAd -##.inner-ad -##.inner-ad-disclaimer -##.inner-ad-section -##.inner-adv -##.inner-advert -##.inner-post-ad -##.innerAdWrapper -##.innerAds -##.innerContentAd -##.innerWidecontentAd -##.inner_ad -##.inner_ad_advertise -##.inner_big_ad -##.innerad -##.inpostad -##.inr_top_ads -##.ins_adwrap -##.insert-post-ads -##.insert_ad -##.insert_ad_column -##.insert_advertisement -##.insertad -##.inside_ad -##.insideads -##.inslide-ad -##.insticator-ads -##.instream_ad -##.intAdRow -##.intad -##.interAd -##.internal-ad -##.internalAd -##.internal_ad -##.interstitial-ad -##.intext-ads -##.intra-article-ad -##.intro-ad -##.ion-ad -##.ione-widget-dart-ad -##.ipc-advert -##.ipc-advert-class -##.ipsAd -##.ipsAdvertisement -##.iqadlinebottom -##.iqadmarker -##.iqadtile_wrapper -##.is-ad -##.is-carbon-ad -##.is-desktop-ads -##.is-mpu -##.is-preload-ad -##.is-script-ad -##.is-sponsored -##.is-sticky-ad -##.isAd -##.isAdPage -##.isad_box -##.ise-ad -##.island-ad -##.islandAd -##.islandAdvert -##.island_ad -##.islandad -##.item--ad -##.item-ad -##.item-ad-leaderboard -##.item-advertising -##.item-container-ad -##.itemAdvertise -##.item_ads -##.itsanad -##.j-ad -##.jLinkSponsored -##.jannah_ad -##.jg-ad-5 -##.jg-ad-970 -##.jobbioapp -##.jobs-ad-box -##.jobs-ad-marker -##.jquery-adi -##.jquery-script-ads -##.js-ad -##.js-ad-banner-container -##.js-ad-buttons -##.js-ad-container -##.js-ad-dynamic -##.js-ad-frame -##.js-ad-home -##.js-ad-loader-bottom -##.js-ad-slot -##.js-ad-static -##.js-ad-unit -##.js-ad-unit-bottom -##.js-ad-wrapper -##.js-ad_iframe -##.js-adfliction-iframe -##.js-adfliction-standard -##.js-ads -##.js-ads-carousel -##.js-advert -##.js-advert-container -##.js-adzone -##.js-anchor-ad -##.js-article-advert-injected -##.js-billboard-advert -##.js-dfp-ad -##.js-dfp-ad-bottom -##.js-dfp-ad-top -##.js-gpt-ad -##.js-gptAd -##.js-header-ad -##.js-header-ad-wrapper -##.js-lazy-ad -##.js-mapped-ad -##.js-mpu -##.js-native-ad -##.js-no-sticky-ad -##.js-overlay_ad -##.js-react-simple-ad -##.js-results-ads -##.js-right-ad-block -##.js-sidebar-ads -##.js-skyscraper-ad -##.js-slide-right-ad -##.js-slide-top-ad -##.js-sticky-ad -##.js-stream-ad -##.js-toggle-ad -##.jsAdSlot -##.jsMPUSponsor -##.js_adContainer -##.js_ad_wrapper -##.js_deferred-ad -##.js_desktop-horizontal-ad -##.js_midbanner_ad_slot -##.js_preheader-ad-container -##.js_slideshow-full-width-ad -##.js_slideshow-sidebar-ad -##.js_sticky-top-ad -##.jsx-adcontainer -##.jw-ad -##.jw-ad-block -##.jw-ad-label -##.jw-ad-media-container -##.jw-ad-visible -##.kakao_ad_area -##.keen_ad -##.kumpulads-post -##.kumpulads-side -##.kwizly-psb-ad -##.l-ad -##.l-ad-top -##.l-ads -##.l-adsense -##.l-article__ad -##.l-bottom-ads -##.l-grid--ad-card -##.l-header-advertising -##.l-section--ad -##.l1-ads-wrapper -##.label-ad -##.label_advertising_text -##.labelads -##.large-advert -##.largeAd -##.largeRectangleAd -##.largeUnitAd -##.large_ad -##.lastAdHolder -##.lastads -##.latest-ad -##.layout-ad -##.layout__right-ads -##.layout_h-ad -##.lazy-ad -##.lazy-ad-unit -##.lazy-adv -##.lazyad -##.lazyadsense -##.lazyadslot -##.lazyload-ad -##.lazyload_ad -##.lazyload_ad_article -##.lb-ad -##.lb-adhesion-unit -##.lb-advert-container -##.lb-item-ad -##.ld-ad -##.ld-ad-inner -##.ldm_ad -##.lead-ad -##.lead-ads -##.leader-ad -##.leader-ad-728 -##.leaderAd -##.leaderAdTop -##.leaderAdvert -##.leaderBoardAdWrapper -##.leaderBoardAdvert -##.leader_ad -##.leader_aol -##.leaderad -##.leaderboard-ad -##.leaderboard-ad-belt -##.leaderboard-ad-component -##.leaderboard-ad-container -##.leaderboard-ad-dummy -##.leaderboard-ad-fixed -##.leaderboard-ad-grid -##.leaderboard-ad-main -##.leaderboard-ad-module -##.leaderboard-ad-pane -##.leaderboard-ad-placeholder -##.leaderboard-ad-section -##.leaderboard-ad-unit -##.leaderboard-ad-wrapper -##.leaderboard-adblock -##.leaderboard-ads -##.leaderboard-ads-text -##.leaderboard-advert -##.leaderboard-advertisement -##.leaderboard-main-ad -##.leaderboard-top-ad -##.leaderboard-top-ad-wrapper -##.leaderboard.advert -##.leaderboard1AdWrapper -##.leaderboardAd -##.leaderboardAdWrapper -##.leaderboardFooter_ad -##.leaderboardRectAdWrapper -##.leaderboard_ad_container -##.leaderboard_ad_unit -##.leaderboard_ads -##.leaderboard_adsense -##.leaderboard_adv -##.leaderboard_banner_ad -##.leaderboardad -##.leaderboardadmiddle -##.leaderboardadtop -##.leaderboardadwrap -##.lee-track-ilad -##.left-ad -##.left-ads -##.left-advert -##.left-rail-ad -##.left-sponser-ad -##.leftAd -##.leftAdColumn -##.leftAdContainer -##.leftAds -##.leftAdsEnabled -##.leftAdsFix -##.leftAdvDiv -##.leftAdvert -##.leftCol_advert -##.leftColumnAd -##.left_300_ad -##.left_ad -##.left_ad_160 -##.left_ad_areas -##.left_ad_box -##.left_ad_container -##.left_add_block -##.left_adlink -##.left_ads -##.left_adsense -##.left_advertisement_block -##.left_col_ad -##.left_google_add -##.leftad -##.leftadd -##.leftadtag -##.leftbar_ad2 -##.leftbarads -##.leftbottomads -##.leftnavad -##.leftrighttopad -##.leftsidebar_ad -##.lefttopad1 -##.legacy-ads -##.lft_advt_container -##.lg-ads-160x90 -##.lg-ads-311x500 -##.lg-ads-635x100 -##.lg-ads-skin-container -##.ligatus -##.lightad -##.lijit-ad -##.linead -##.linkAD -##.linkAds -##.link_ad -##.linkads -##.list-ad -##.list-adbox -##.list-ads -##.list-feature-ad -##.list-footer-ad -##.listad -##.listicle-instream-ad-holder -##.listing-item-ad -##.listingAd -##.listings_ad -##.lite-page-ad -##.live-ad -##.lng-ad -##.local-ads -##.localad -##.location-ad -##.log_ads -##.logged_out_ad -##.logo-ad -##.logoAds -##.logo_AdChoices -##.logoad -##.logoutAd -##.logoutAdContainer -##.long-ads -##.longAd -##.longAdBox -##.longAds -##.long_ad -##.longform-ad -##.loop-ad -##.lower-ad -##.lower-ads -##.lowerAd -##.lowerAds -##.lower_ad -##.lr-ad -##.lr-pack-ad -##.lr_skyad -##.lrec-container -##.lst_ads -##.lyrics-inner-ad-wrap -##.m-ContentAd -##.m-ad -##.m-ad-brick -##.m-ad-region -##.m-ad-unit -##.m-ad__wrapper -##.m-adaptive-ad-component -##.m-advert -##.m-advertisement -##.m-advertisement--container -##.m-balloon-header--ad -##.m-block-ad -##.m-content-advert -##.m-content-advert-wrap -##.m-dfp-ad-text -##.m-header-ad -##.m-in-content-ad -##.m-in-content-ad-row -##.m-jac-ad -##.m-sponsored -##.m1-header-ad -##.m2n-ads-slot -##.m_ad -##.m_ad1 -##.m_ad300 -##.m_banner_ads -##.macAd -##.macad -##.mad_adcontainer -##.magAd -##.magad -##.main-ad -##.main-ad-container -##.main-ad-gallery -##.main-add-sec -##.main-ads -##.main-advert -##.main-advertising -##.main-column-ad -##.main-footer-ad -##.main-header-ad -##.main-header__ad-wrapper -##.main-right-ads -##.mainAd -##.mainAdContainer -##.mainAds -##.mainLeftAd -##.mainLinkAd -##.mainRightAd -##.main_ad -##.main_adbox -##.main_ads -##.main_adv -##.mantis-ad -##.mantisadd -##.manual-ad -##.map-ad -##.mapped-ad -##.mar-block-ad -##.mar-leaderboard--bottom -##.margin-advertisement -##.margin0-ads -##.marginalContentAdvertAddition -##.marketing-ad -##.marketplace-ad -##.marketplaceAd -##.marquee-ad -##.masonry-tile-ad -##.masonry__ad -##.master_post_advert -##.masthead-ad -##.masthead-ads -##.mastheadAds -##.masthead__ad -##.match-ad -##.mb-advert -##.mb-advert__incontent -##.mb-advert__leaderboard--large -##.mb-advert__mpu -##.mb-advert__tweeny -##.mb-block--advert-side -##.mb-list-ad -##.mc_floating_ad -##.mc_text_ads_box -##.md-advertisement -##.medRect -##.media-viewer__ads-container -##.mediaAd -##.mediaAdContainer -##.medium-rectangle-ad -##.medium-top-ad -##.mediumRectAdWrapper -##.mediumRectagleAd -##.mediumRectangleAd -##.mediumRectangleAdvert -##.medium_ad -##.mediumad -##.medrec-ad -##.medrect-ad -##.medrect-ad2 -##.medrectAd -##.medrect_ad -##.mega-ad -##.member-ads -##.menu-ad -##.menuAd -##.message_ads -##.meta-ad -##.meta_ad -##.metabet-adtile -##.mf-adsense-leaderboard -##.mf-adsense-rightrail -##.mg_box_ads -##.mgid-wrapper -##.mgid_3x2 -##.mid-ad-wrapper -##.mid-ads -##.mid-advert -##.mid-article-banner-ad -##.mid-post-ad -##.mid-section-ad -##.midAd -##.midAdv-cont -##.midAdv-cont2 -##.midAdvert -##.mid_ad -##.mid_banner_ad -##.midad -##.midarticlead -##.middle-ad -##.middle-ads -##.middle-ads728 -##.middle-footer-ad -##.middleAd -##.middleAdLeft -##.middleAdMid -##.middleAdRight -##.middleAdWrapper -##.middleAds -##.middleBannerAd -##.middle_AD -##.middle_ad -##.middle_ad_responsive -##.middle_ads -##.middlead -##.middleadouter -##.midpost-ad -##.min-height-ad -##.min_navi_ad -##.mini-ad -##.mini-ads -##.mini_ads -##.miniad -##.miniads -##.misc-ad -##.misc-ad-label -##.miscAd -##.mj-floating-ad-wrapper -##.mks_ads_widget -##.mm-ad-sponsored -##.mm-ads-adhesive-ad -##.mm-ads-gpt-adunit -##.mm-ads-leaderboard-header -##.mm-banner970-ad -##.mmads -##.mntl-gpt-adunit -##.mntl-sc-block-adslot -##.moads-top-banner -##.moads-widget -##.mob-ad-break-text -##.mob-adspace -##.mob-hero-banner-ad-wrap -##.mob_ads -##.mobads -##.mobile-ad -##.mobile-ad-container -##.mobile-ad-negative-space -##.mobile-ad-placeholder -##.mobile-ad-slider -##.mobile-ads -##.mobile-fixed-ad -##.mobile-instream-ad-holder -##.mobile-instream-ad-holder-single -##.mobileAd -##.mobileAdWrap -##.mobileAppAd -##.mobile_ad_banner -##.mobile_ad_container -##.mobile_featuredad -##.mobile_leaderboard_ad -##.mobileadbig -##.mobileadunit -##.mobilesideadverts -##.mod-ad -##.mod-adblock -##.mod-ads -##.mod-google-ads -##.mod-horizontal-ad -##.mod-sponsored-links -##.mod-vertical-ad -##.mod_ad -##.mod_ad_container -##.mod_ad_text -##.mod_ad_top -##.mod_admodule -##.mod_ads -##.mod_advert -##.mod_index_ad -##.mod_js_ad -##.mod_openads -##.mod_r_ad -##.mod_r_ad1 -##.modal-ad -##.module--ad -##.module-ad -##.module-ad-small -##.module-ads -##.module-advert -##.module-advertisement -##.module-box-ads -##.module-image-ad -##.module-rectangleads -##.module-sponsored-ads -##.module1colAds -##.moduleAd -##.moduleAdSpot -##.moduleAdvert -##.moduleAdvertContent -##.moduleBannerAd -##.module__ad-wide -##.module_ad -##.module_ad_disclaimer -##.module_box_ad -##.module_header_sponsored -##.module_home_ads -##.module_single_ads -##.modulegad -##.moduletable-adsponsor -##.moduletable-advert -##.moduletable-bannerAd6 -##.moduletable-centerad -##.moduletable-googleads -##.moduletable-rectangleads -##.moduletable_ad-right -##.moduletable_ad300x250 -##.moduletable_adtop -##.moduletable_advertisement -##.moduletable_top_ad -##.moduletableadvert -##.moduletableexclusive-ads -##.moduletablesquaread -##.moduletabletowerad -##.mom-ad -##.moneyball-ad -##.monsterad -##.mos-ad -##.mosaicAd -##.motherboard-ad -##.movable-ad -##.movv-ad -##.mp-ad -##.mpsponsor -##.mpu-ad -##.mpu-ad-con -##.mpu-ad-river -##.mpu-ad-top -##.mpu-advert -##.mpu-c -##.mpu-footer -##.mpu-fp -##.mpu-holder -##.mpu-leaderboard -##.mpu-left -##.mpu-left-bk -##.mpu-mediatv -##.mpu-right -##.mpu-title -##.mpu-top-left -##.mpu-top-left-banner -##.mpu-top-right -##.mpu-unit -##.mpu-wrap -##.mpu-wrapper -##.mpuAd -##.mpuAdArea -##.mpuAdSlot -##.mpuAdvert -##.mpuArea -##.mpuBlock -##.mpuBox -##.mpuContainer -##.mpu_Ad -##.mpu_ad -##.mpu_advert -##.mpu_container -##.mpu_holder -##.mpu_placeholder -##.mpu_side -##.mpu_wrapper -##.mpuad -##.mpuads -##.mr1_adwrap -##.mr2_adwrap -##.mr3_adwrap -##.mr4_adwrap -##.mrec-ads -##.mrec-banners -##.mrecAds -##.mrec_advert -##.mrf-adv -##.mrf-adv__wrapper -##.msg-ad -##.msgad -##.mt-ad-container -##.mt_ad -##.mt_ads -##.mtop_adfit -##.mu-ad-container -##.mv_atf_ad_holder -##.mvp-ad-label -##.mvp-feat1-list-ad -##.mvp-flex-ad -##.mvp-post-ad-wrap -##.mvp-widget-ad -##.mvp-widget-feat2-side-ad -##.mvp_ad_widget -##.mw-ad -##.my-ads -##.myAds -##.myAdsGroup -##.my__container__ad -##.n1ad-center-300 -##.narrow_ad_unit -##.narrow_ads -##.national_ad -##.nationalad -##.native-ad -##.native-ad-article -##.native-ad-container -##.native-ad-item -##.native-ad-mode -##.native-ad-slot -##.native-adv -##.native-advts -##.native-leaderboard-ad -##.native-sidebar-ad -##.native.ad -##.nativeAd -##.native_ad -##.native_ad_inline -##.native_ad_wrap -##.native_ads -##.nativead -##.nav-ad -##.nav-ad-gpt-container -##.nav-ad-plus-leader -##.nav-adWrapper -##.nav_ad -##.navbar-ad-section -##.navbar-ads -##.navbar-header-ad -##.naviad -##.ndmadkit -##.netPost_ad1 -##.netPost_ad3 -##.netads -##.netshelter-ad -##.newHeaderAd -##.new_ad1 -##.new_ad_left -##.new_ad_normal -##.new_ad_wrapper_all -##.new_ads_unit -##.newad -##.newad1 -##.news-ad -##.news-ad-square-a -##.news-ad-square-box -##.news-ads-top -##.news-item--ad -##.news_ad_box -##.news_vibrant_ads_banner -##.newsad -##.newsblock-ads -##.newsfeed_adunit -##.newspack_global_ad -##.nfy-ad -##.nfy-ad-teaser -##.nfy-ad-tile -##.nfy-ad-wrapper -##.nfy-cobo-ad -##.nfy-col-ad -##.ng-ad-banner -##.ng-ad-insert -##.nm-ad -##.nn_mobile_mpu_wrapper -##.node-ad -##.node_ad_wrapper -##.normalAds -##.normal_ads -##.normalad -##.northad -##.not-an-ad-header -##.note-advertisement -##.np-ad -##.np-ad-background -##.np-ad-border -##.np-ads-wrapper -##.np-adv-container -##.np-advert_apu -##.np-advert_apu-double -##.np-advert_info -##.np-header-ad -##.np-header-ads-area -##.np-right-ad -##.nrAds -##.nsAdRow -##.nts-ad -##.ntv-ad -##.nuffnangad -##.nuk-ad-placeholder -##.nv-ads-wrapper -##.nw-ad -##.nw-ad-label -##.nw-c-leaderboard-ad -##.nw-top-ad -##.nw_adv_square -##.nx-billboard-ad -##.nx-placeholder-ad -##.o-ad -##.o-ad-banner-top -##.o-ad-container -##.o-advert -##.o-listing__ad -##.o-site-header__advert -##.oad-ad -##.oas-ad -##.oas-container -##.oas-leaderboard-ads -##.oas_ad -##.oas_add -##.oas_advertisement -##.oasad -##.oasads -##.ob_ads_header -##.ob_container .item-container-obpd -##.ob_dual_right > .ob_ads_header ~ .odb_div -##.offads -##.oi-add-block -##.oi-header-ad -##.oio-banner-zone -##.oio-link-sidebar -##.oio-openslots -##.oio-zone-position -##.oko-adhesion -##.on_player_ads -##.oneColumnAd -##.onet-ad -##.online-ad-container -##.opd_adsticky -##.otd-ad-top -##.outer-ad-container -##.outer-ad-unit-wrapper -##.outerAdWrapper -##.outerAds -##.outer_ad_container -##.outside_ad -##.outsider-ad -##.ov-ad-slot -##.overflow-ad -##.overlay-ad -##.overlay-ad-container -##.overlay-ads -##.overlay-box-ad -##.overlay_ad -##.ox-holder -##.p-ad -##.p-ad-block -##.p-ad-dfp-banner -##.p-ad-dfp-middle-rec -##.p-ad-feature-pr -##.p-ad-outbreak -##.p-ad-rectangle -##.p-ad-thumbnail-txt -##.p-ads-billboard -##.p-ads-rec -##.p-post-ad:not(html):not(body) -##.p75_sidebar_ads -##.p_adv -##.p_topad -##.package_adBox -##.padAdvx -##.padded-ad -##.paddingBotAd -##.pads2 -##.pads_bulk_widget -##.padvertlabel -##.page-ad -##.page-ads -##.page-advert -##.page-advertisement -##.page-bottom-fixed-ads -##.page-box-ad -##.page-break-ad -##.page-content__advert -##.page-footer-ad -##.page-header-ad -##.page-header_ad -##.page-top-ads -##.pageAd -##.pageAdSkin -##.pageAdSkinUrl -##.pageAds -##.pageFooterAd -##.pageGoogleAd -##.pageGoogleAds -##.pageHeaderAd -##.pageHeaderAds -##.pageTopAd -##.page__top-ad-wrapper -##.page_ad -##.pagead -##.pagepusheradATF -##.pages__ad -##.pane-ad-pane -##.pane-ads -##.pane-sasia-ad -##.pane-site-ads -##.pane-sponsored-links -##.pane_ad_wide -##.panel-ad -##.panel-adsense -##.panel-advert -##.panel.ad -##.panel_ad -##.paneladvert -##.par-ad -##.par-adv-slot -##.parade-ad-container -##.parent-ad-desktop -##.partial-ad -##.partner-ad -##.partner-ad-module-wrapper -##.partner-ads-list -##.partnerAd -##.partner_ads -##.partnerad_container -##.partnersTextLinks -##.pauseAdPlacement -##.pb-slot-container -##.pc-ad -##.pcads_widget -##.pd-ads-mpu -##.pdpads_desktop -##.penci-ad-box -##.penci-ad-image -##.penci-ad_box -##.penci-adsense-below-slider -##.penci-google-adsense -##.penci-google-adsense-1 -##.penci-promo-link -##.penci_list_bannner_widget -##.pencil-ad -##.pencil-ad-container -##.pencil-ad-section -##.pencil_ad -##.perm_ad -##.pf_content_ad -##.pf_sky_ad -##.pf_top_ad -##.pg-ad-block -##.pg-adnotice -##.pg-adtarget -##.pgevoke-fp-bodyad2 -##.pgevoke-story-rightrail-ad1 -##.pgevoke-story-topads -##.pgevoke-topads -##.ph-ad -##.photo-ad -##.photo-ad-pad -##.photoAd -##.photoad -##.phpads_container -##.pix_adzone -##.placeholder-ad -##.placeholder-dfp -##.placeholderAd -##.plain-ad -##.plainAd -##.player-ad -##.player-ad-overlay -##.player-ads -##.player-ads2 -##.player-section__ads-banners -##.player-under-ad -##.playerAd -##.playerAdv -##.player_ad -##.player_ad2 -##.player_ad_box -##.playerad -##.playerdads -##.plugin-ad -##.plugin-ad-container -##.pm-ad -##.pm-ad-unit -##.pm-ad-zone -##.pm-ads-banner -##.pm-ads-inplayer -##.pm-banner-ad -##.pmc-adm-boomerang-pub-div -##.polar-ad -##.polaris-ad--wrapper-desktop -##.polarisMarketing -##.polaris__ad -##.polaris__below-header-ad-wrapper -##.position-ads -##.post-ad -##.post-ad-title -##.post-ad-top -##.post-ad-type -##.post-ads -##.post-ads-top -##.post-adsense-bottom -##.post-advert -##.post-advert-row -##.post-advertisement -##.post-load-ad -##.post-news-ad -##.post-sidebar-ad -##.post-sponsored -##.postAd -##.postWideAd -##.post_ad -##.post_ads -##.post_advert -##.post_detail_right_advert -##.post_sponsored -##.postad -##.postads -##.postbit-ad -##.poster_ad -##.posts-ad -##.pp-ad-container -##.pp_ad_code_adtxt -##.ppb_ads -##.ppr_priv_footer_banner_ad_billboard -##.ppr_priv_header_banner_ad -##.ppr_priv_horizon_ad -##.pr_adslot_0 -##.pr_adslot_1 -##.preheader_advert -##.premium-ad -##.premium-ads -##.premium-adv -##.premium-mpu-container -##.priad -##.priad-1 -##.primary-ad -##.primary-ad-widget -##.primary-advertisment -##.primis-player-container -##.primis-video -##.primis-wrapper -##.print-ad-wrapper -##.print-adslot -##.printAds -##.product-ad -##.product-ads -##.product-inlist-ad -##.profile-ad-container -##.profile-ads-container -##.profile__ad-wrapper -##.profile_ad_bottom -##.profile_ad_top -##.programtic-ads -##.promo-ad -##.promo-mpu -##.promoAd -##.promoAds -##.promoAdvertising -##.promo_ad -##.promo_ads -##.promo_border -##.promoad -##.promoboxAd -##.promoted_content_ad -##.promotionAdContainer -##.promotionTextAd -##.proper-ad-insert -##.proper-ad-unit -##.ps-ad -##.pt-ad--container -##.pt-ad--scroll -##.pt_ad03 -##.pt_col_ad02 -##.pub_ads -##.publication-ad -##.publicidad_horizontal -##.publicidade -##.publisher_ad -##.pubtech-adv-slot -##.puff-ad -##.puff-advertorials -##.pull-ad -##.pull_top_ad -##.pullad -##.purchad -##.push--ad -##.push-ad -##.push-adv -##.pushDownAd -##.pushdown-ad -##.pushdownAd -##.pwa-ad -##.pz-ad-box -##.quads-ad-label -##.quads-bg-ad -##.quads-location -##.queue_ad -##.queued-ad -##.quigo -##.quigo-ad -##.quigoads -##.r-ad -##.r-pause-ad-container -##.r89-outstream-video -##.r_ad -##.r_ads -##.rail-ad -##.rail-ads-1 -##.rail-article-sponsored -##.rail__ad -##.rail_ad -##.railad -##.railadspace -##.ray-floating-ads-container -##.rc-sponsored -##.rcom-freestar-ads-widget -##.re-AdTop1Container -##.ready-ad -##.rec_ad -##.recent-ad -##.recentAds -##.recent_ad_holder -##.recipeFeatureAd -##.rect-ad -##.rect-ad-1 -##.rectAd300 -##.rect_ad -##.rect_ad_module -##.rect_advert -##.rectad -##.rectadv -##.rectangle-ad -##.rectangle-ad-container -##.rectangle-embed-ad -##.rectangleAd -##.rectangleAdContainer -##.rectangle_ad -##.rectanglead -##.rectangleads -##.refreshAds -##.region-ad-bottom-leaderboard -##.region-ad-pan -##.region-ad-right -##.region-ad-top -##.region-ads -##.region-ads-content-top -##.region-banner-ad -##.region-dfp-ad-footer -##.region-dfp-ad-header -##.region-header-ad -##.region-header-ads -##.region-top-ad -##.region-top-ad-block -##.regular-ads -##.regularad -##.rekl-left -##.rekl-right -##.rekl-top -##.rekl_left -##.rekl_right -##.rekl_top -##.rekl_top_wrapper -##.reklam -##.reklam-block -##.reklam-kare -##.reklam-masthead -##.reklam2 -##.reklam728 -##.reklama -##.reklama-vert -##.reklama1 -##.reklame-wrapper -##.reklamka -##.related-ad -##.related-ads -##.relatedAds -##.related_ad -##.remnant_ad -##.remove-ads -##.remove-ads-link -##.res_ad -##.resads-adspot -##.responsive-ad -##.responsive-ad-header-container -##.responsive-ad-wrapper -##.responsive-ads -##.responsiveAdsense -##.responsive_ad_top -##.responsive_ads_468x60 -##.result-ad -##.result-sponsored -##.resultAd -##.result_ad -##.resultad -##.results-ads -##.revcontent-wrap -##.review-ad -##.reviews-display-ad -##.revive-ad -##.rh-ad -##.rhads -##.rhs-ad -##.rhs-ads-panel -##.rhs-advert-container -##.rhs-mrec-wrapper -##.rhs_ad -##.rhs_ad_title -##.rhs_ads -##.rhsad -##.rhsadvert -##.right-ad -##.right-ad-1 -##.right-ad-2 -##.right-ad-3 -##.right-ad-4 -##.right-ad-5 -##.right-ad-block -##.right-ad-container -##.right-ad-holder -##.right-ad-wrapper -##.right-ad2 -##.right-ad350px250px -##.right-ads -##.right-ads2 -##.right-adsense -##.right-adv -##.right-advert -##.right-advertisement -##.right-col-ad -##.right-column-ad -##.right-column-ads -##.right-rail-ad -##.right-rail-ad-container -##.right-rail-box-ad-container -##.right-side-ad -##.right-side-ads -##.right-sidebar-box-ad -##.right-sidebar-box-ads -##.right-sponser-ad -##.right-top-ad -##.right-video-dvertisement -##.rightAD -##.rightAd -##.rightAd1 -##.rightAd2 -##.rightAdBlock -##.rightAdBox -##.rightAdColumn -##.rightAdContainer -##.rightAds -##.rightAdsFix -##.rightAdvert -##.rightAdverts -##.rightBoxAd -##.rightBoxMidAds -##.rightColAd -##.rightColAdBox -##.rightColumnAd -##.rightColumnAdd -##.rightColumnAdsTop -##.rightColumnRectAd -##.rightHeaderAd -##.rightRailAd -##.rightRailMiddleAd -##.rightSecAds -##.rightSideBarAd -##.rightSideSponsor -##.rightTopAdWrapper -##.right_ad -##.right_ad_1 -##.right_ad_2 -##.right_ad_box -##.right_ad_box1 -##.right_ad_text -##.right_ad_top -##.right_ad_unit -##.right_ad_wrap -##.right_ads -##.right_ads_column -##.right_adsense_box_2 -##.right_adskin -##.right_adv -##.right_advert -##.right_advertise_cnt -##.right_advertisement -##.right_block_advert -##.right_box_ad -##.right_col_ad -##.right_column_ads -##.right_content_ad -##.right_image_ad -##.right_long_ad -##.right_outside_ads -##.right_side_ads -##.right_side_box_ad -##.right_sponsor_main -##.rightad -##.rightadHeightBottom -##.rightadblock -##.rightadd -##.rightads -##.rightadunit -##.rightadv -##.rightboxads -##.rightcolads -##.rightcoladvert -##.rightrail-ad-placed -##.rightsideAd -##.river-item-sponsored -##.rj-ads-wrapper -##.rm-adslot -##.rolloverad -##.roof-ad -##.root-ad-anchor -##.rotating-ad -##.rotating-ads -##.row-ad -##.row-ad-leaderboard -##.rowAd -##.rowAds -##.row_header_ads -##.rpd_ads -##.rr-ad -##.rr_ads -##.rs-ad -##.rs-advert -##.rs-advert__container -##.rs_ad_block -##.rs_ad_top -##.rt_ad -##.rwSideAd -##.rwdArticleInnerAdBlock -##.s-ad -##.s-ads -##.s_ads -##.sadvert -##.sagreklam -##.sal-adv-gpt -##.sam_ad -##.sb-ad -##.sb-ads -##.sbAd -##.sbAdUnitContainer -##.sbTopadWrapper -##.sb_ad -##.sb_ad_holder -##.sc-ad -##.scad -##.script-ad -##.scroll-ad-item-container -##.scroll-ads -##.scroll-track-ad -##.scrolling-ads -##.sda_adbox -##.sdc-advert__top-1 -##.se-ligatus -##.search-ad -##.search-advertisement -##.search-result-list-item--sidebar-ad -##.search-result-list-item--topad -##.search-results-ad -##.search-sponsor -##.search-sponsored -##.searchAd -##.searchAdTop -##.searchAds -##.searchad -##.searchads -##.secondary-ad-widget -##.secondary-advertisment -##.secondary_ad -##.section-ad -##.section-ad-unit -##.section-ad-wrapper -##.section-ad2 -##.section-ads -##.section-adtag -##.section-adv -##.section-advertisement -##.section-sponsor -##.section-widget-ad -##.section_ad -##.section_ad_left -##.section_ads -##.seoAdWrapper -##.servedAdlabel -##.serviceAd -##.sexunder_ads -##.sf_ad_box -##.sg-adblock -##.sgAd -##.sh-section-ad -##.shadvertisment -##.sheknows-infuse-ad -##.shift-ad -##.shortadvertisement -##.show-desk-ad -##.show-sticky-ad -##.showAd -##.showAdContainer -##.showads -##.showcaseAd -##.showcasead -##.shr-ads-container -##.sidbaread -##.side-ad -##.side-ad-300 -##.side-ad-blocks -##.side-ad-container -##.side-ad-inner -##.side-ad-top -##.side-ads -##.side-ads-block -##.side-ads-wide -##.side-adv-block -##.side-adv-text -##.side-advert -##.side-advertising -##.side-adverts -##.side-bar-ad -##.sideAd -##.sideAdLeft -##.sideAdWide -##.sideBarAd -##.sideBlockAd -##.sideBoxAd -##.side__ad -##.side__ad-box -##.side_ad -##.side_ad2 -##.side_ad_top -##.side_add_wrap -##.side_ads -##.side_adsense -##.side_adv -##.side_col_ad_wrap -##.sidead -##.sideadmid -##.sideads -##.sideads_l -##.sideadsbox -##.sideadtable -##.sideadvert -##.sideadverts -##.sidebar-ad -##.sidebar-ad-area -##.sidebar-ad-b -##.sidebar-ad-box -##.sidebar-ad-c -##.sidebar-ad-component -##.sidebar-ad-cont -##.sidebar-ad-container -##.sidebar-ad-div -##.sidebar-ad-label -##.sidebar-ad-rect -##.sidebar-ad-slot -##.sidebar-ad-top -##.sidebar-ad-wrapper -##.sidebar-adbox -##.sidebar-ads -##.sidebar-ads-block -##.sidebar-ads-wrap -##.sidebar-adsdiv -##.sidebar-adv-container -##.sidebar-advert -##.sidebar-advertisement -##.sidebar-advertisment -##.sidebar-adverts -##.sidebar-adverts-header -##.sidebar-banner-ad -##.sidebar-below-ad-unit -##.sidebar-big-ad -##.sidebar-big-box-ad -##.sidebar-bottom-ad -##.sidebar-box-ad -##.sidebar-box-ads -##.sidebar-content-ad -##.sidebar-header-ads -##.sidebar-skyscraper-ad -##.sidebar-sponsored -##.sidebar-sponsors -##.sidebar-square-ad -##.sidebar-sticky--ad -##.sidebar-text-ad -##.sidebar-top-ad -##.sidebar-tower-ad -##.sidebarAD -##.sidebarAd -##.sidebarAdvert -##.sidebar__ad -##.sidebar_ad -##.sidebar_ad_300 -##.sidebar_ad_300_250 -##.sidebar_ad_container -##.sidebar_ad_holder -##.sidebar_ad_leaderboard -##.sidebar_ad_module -##.sidebar_ads -##.sidebar_ads_left -##.sidebar_ads_right -##.sidebar_ads_title -##.sidebar_adsense -##.sidebar_advert -##.sidebar_advertising -##.sidebar_box_ad -##.sidebar_right_ad -##.sidebar_skyscraper_ad -##.sidebar_sponsors -##.sidebarad -##.sidebarad_bottom -##.sidebaradbox -##.sidebaradcontent -##.sidebarads -##.sidebaradsense -##.sidebarbox__advertising -##.sidebarboxad -##.sidebox-ad -##.sidebox_ad -##.sideright_ads -##.sideskyad -##.signad -##.simple-ad-placeholder -##.simple_ads_manager_widget -##.simple_adsense_widget -##.simplead-container -##.simpleads-item -##.single-ad -##.single-ad-anchor -##.single-ad-wrap -##.single-ads -##.single-ads-section -##.single-bottom-ads -##.single-mpu -##.single-post-ad -##.single-post-ads -##.single-post-bottom-ads -##.single-top-ad -##.singleAd -##.singleAdBox -##.singleAdsContainer -##.singlePostAd -##.single_ad -##.single_ad_300x250 -##.single_advert -##.single_bottom_ad -##.single_top_ad -##.singlead -##.singleads -##.singleadstopcstm2 -##.singlepageleftad -##.singlepostad -##.singlepostadsense -##.singpagead -##.sister-ads -##.site-ad-block -##.site-ads -##.site-bottom-ad-slot -##.site-head-ads -##.site-header-ad -##.site-header__ads -##.site-top-ad -##.siteWideAd -##.site_ad -##.site_ad--gray -##.site_ad--label -##.site_ads -##.site_sponsers -##.sitesponsor -##.skinAd -##.sky-ad -##.sky-ad1 -##.skyAd -##.skyAdd -##.skyAdvert -##.skyAdvert2 -##.sky_ad -##.sky_ad_top -##.skyad -##.skyscraper-ad -##.skyscraper-ad-1 -##.skyscraper-ad-container -##.skyscraper.ad -##.skyscraperAd -##.skyscraper_ad -##.skyscrapper-ads-container -##.slate-ad -##.slide-ad -##.slideAd -##.slide_ad -##.slidead -##.slider-ads -##.slider-item-ad -##.slider-right-advertisement-banner -##.sliderad -##.slideshow-ad -##.slideshow-ad-container -##.slideshow-ad-wrapper -##.slideshow-ads -##.slideshowAd -##.slideshowadvert -##.sm-ad -##.sm-admgnr-unit -##.sm-ads -##.sm-advertisement -##.sm-widget-ad-holder -##.sm_ad -##.small-ad -##.small-ad-header -##.small-ad-long -##.small-ads -##.smallAd -##.smallAdContainer -##.smallAds -##.smallAdvertisments -##.small_ad -##.small_ad_bg -##.small_ads -##.smallad -##.smalladblock -##.smallads -##.smalladscontainer -##.smallsponsorad -##.smart-ad -##.smartAd -##.smartad -##.smn-new-gpt-ad -##.snhb-ads-en -##.snippet-ad -##.snoadrotatewidgetwrap -##.speakol-widget -##.spinAdvert -##.splashy-ad-container -##.spon_link -##.sponadbox -##.sponlinkbox -##.spons-link -##.spons-wrap -##.sponsBox -##.sponsLinks -##.sponsWrap -##.sponsbox -##.sponser-link -##.sponserLink -##.sponslink -##.sponsor-ads -##.sponsor-area -##.sponsor-block -##.sponsor-bottom -##.sponsor-box -##.sponsor-btns -##.sponsor-inner -##.sponsor-left -##.sponsor-link -##.sponsor-links -##.sponsor-popup -##.sponsor-post -##.sponsor-right -##.sponsor-spot -##.sponsor-text -##.sponsor-text-container -##.sponsor-wrap -##.sponsorAd -##.sponsorArea -##.sponsorBlock -##.sponsorBottom -##.sponsorBox -##.sponsorFooter -##.sponsorFooter-container -##.sponsorLabel -##.sponsorLink -##.sponsorLinks -##.sponsorPanel -##.sponsorPost -##.sponsorPostWrap -##.sponsorStrip -##.sponsorText -##.sponsorTitle -##.sponsorTxt -##.sponsor_ad -##.sponsor_ad1 -##.sponsor_ad2 -##.sponsor_ad_area -##.sponsor_ad_section -##.sponsor_area -##.sponsor_bar -##.sponsor_block -##.sponsor_columns -##.sponsor_div -##.sponsor_footer -##.sponsor_image -##.sponsor_label -##.sponsor_line -##.sponsor_links -##.sponsor_logo -##.sponsor_placement -##.sponsor_popup -##.sponsor_post -##.sponsor_units -##.sponsorad -##.sponsoradlabel -##.sponsorads -##.sponsoradtitle -##.sponsored-ad -##.sponsored-ad-container -##.sponsored-ad-label -##.sponsored-add -##.sponsored-ads -##.sponsored-article -##.sponsored-article-item -##.sponsored-article-widget -##.sponsored-block -##.sponsored-buttons -##.sponsored-container -##.sponsored-container-bottom -##.sponsored-default -##.sponsored-display-ad -##.sponsored-header -##.sponsored-link -##.sponsored-links -##.sponsored-post -##.sponsored-post-container -##.sponsored-result -##.sponsored-results -##.sponsored-right -##.sponsored-slot -##.sponsored-tag -##.sponsored-text -##.sponsored-top -##.sponsored-widget -##.sponsoredAd -##.sponsoredAds -##.sponsoredBanners -##.sponsoredBar -##.sponsoredBottom -##.sponsoredBox -##.sponsoredContent -##.sponsoredEntry -##.sponsoredFeature -##.sponsoredInfo -##.sponsoredInner -##.sponsoredItem -##.sponsoredLabel -##.sponsoredLeft -##.sponsoredLink -##.sponsoredLinks -##.sponsoredLinks2 -##.sponsoredLinksBox -##.sponsoredListing -##.sponsoredProduct -##.sponsoredResults -##.sponsoredSearch -##.sponsoredTop -##.sponsored_ad -##.sponsored_ads -##.sponsored_bar_text -##.sponsored_box -##.sponsored_by -##.sponsored_link -##.sponsored_links -##.sponsored_links2 -##.sponsored_links_box -##.sponsored_links_container -##.sponsored_links_section -##.sponsored_post -##.sponsored_result -##.sponsored_results -##.sponsored_sidepanel -##.sponsored_ss -##.sponsored_text -##.sponsored_title -##.sponsored_well -##.sponsoredby -##.sponsoredlink -##.sponsoredlinks -##.sponsoredresults -##.sponsorheader -##.sponsoringbanner -##.sponsorlink -##.sponsorlink2 -##.sponsormsg -##.sponsors-advertisment -##.sponsors-box -##.sponsors-footer -##.sponsors-module -##.sponsors-widget -##.sponsorsBanners -##.sponsors_box_container -##.sponsors_links -##.sponsors_spacer -##.sponsorsbanner -##.sponsorsbig -##.sponsorship-banner-bottom -##.sponsorship-box -##.sponsorship-chrome -##.sponsorship-container -##.sponsorship-leaderboard -##.sponsorshipContainer -##.sponsorship_ad -##.sponsorshipbox -##.sponsorwrapper -##.sponstitle -##.sponstop -##.spot-ad -##.spotlight-ad -##.spotlightAd -##.spt-footer-ad -##.sq_ad -##.sqrd-ad-manager -##.square-ad -##.square-ad-1 -##.square-ad-container -##.square-ad-pane -##.square-ads -##.square-advt -##.square-adwrap -##.square-sidebar-ad -##.square-sponsorship -##.squareAd -##.squareAdWrap -##.squareAdd -##.squareAddtwo -##.squareAds -##.square_ad -##.squaread -##.squaread-container -##.squareadMain -##.squareads -##.squared_ad -##.squirrel_widget -##.sr-adsense -##.sr-advert -##.sraAdvert -##.srp-sidebar-ads -##.ssp-advert -##.standalonead -##.standard-ad-container -##.standard_ad_slot -##.static-ad -##.staticAd -##.static_mpu_wrap -##.staticad -##.sterra-ad -##.stick-ad-container -##.stickad -##.sticky-ad -##.sticky-ad-bottom -##.sticky-ad-container -##.sticky-ad-footer -##.sticky-ad-header -##.sticky-ad-wrapper -##.sticky-ads -##.sticky-ads-container -##.sticky-ads-content -##.sticky-adsense -##.sticky-advert-widget -##.sticky-bottom-ad -##.sticky-footer-ad -##.sticky-footer-ad-container -##.sticky-navbar-ad-container -##.sticky-rail-ad-container -##.sticky-side-ad -##.sticky-sidebar-ad -##.sticky-top-ad-wrap -##.stickyAd -##.stickyAdWrapper -##.stickyAdsGroup -##.stickyContainerMpu -##.stickyRailAd -##.sticky_ad_sidebar -##.sticky_ad_wrapper -##.sticky_ads -##.stickyad -##.stickyads -##.stickyadv -##.stky-ad-footer -##.stm-ad-player -##.stmAdHeightWidget -##.stock_ad -##.stocks-ad-tag -##.store-ads -##.story-ad -##.story-ad-container -##.story-ad-right -##.story-inline-advert -##.storyAd -##.storyAdvert -##.story__top__ad -##.story_ad_div -##.story_body_advert -##.storyad -##.storyad300 -##.storyadHolderAfterLoad -##.stpro_ads -##.str-top-ad -##.strack_bnr -##.strawberry-ads -##.strawberry-ads__pretty-container -##.stream-ad -##.streamAd -##.strip-ad -##.stripad -##.sub-ad -##.subAdBannerArea -##.subAdBannerHeader -##.subNavAd -##.subad -##.subheader_adsense -##.submenu_ad -##.subnav-ad-layout -##.subnav-ad-wrapper -##.subscribeAd -##.subscriber-ad -##.subscribox-ad -##.sudoku-ad -##.sugarad -##.suggAd -##.super-ad -##.superbanner-adcontent -##.support_ad -##.tabAd -##.tabAds -##.tab_ad -##.tab_ad_area -##.table-ad -##.tableAd1 -##.tablet-ad -##.tadm_ad_unit -##.takeover-ad -##.tallAdvert -##.tallad -##.tbboxad -##.tc-adbanner -##.tc_ad -##.tc_ad_unit -##.tcf-ad -##.td-a-ad -##.td-a-rec-id-custom_ad_1 -##.td-a-rec-id-custom_ad_2 -##.td-a-rec-id-custom_ad_3 -##.td-a-rec-id-custom_ad_4 -##.td-a-rec-id-custom_ad_5 -##.td-ad -##.td-ad-m -##.td-ad-p -##.td-ad-tp -##.td-adspot-title -##.td-sponsor-title -##.tdAdHeader -##.td_ad -##.td_footer_ads -##.td_left_widget_ad -##.td_leftads -##.td_reklama_bottom -##.td_reklama_top -##.td_spotlight_ads -##.teaser--advertorial -##.teaser-ad -##.teaser-advertisement -##.teaser-sponsor -##.teaserAd -##.teaserAdContainer -##.teaserAdHeadline -##.teaser_ad -##.templates_ad_placement -##.test-adsense -##.testAd-holder -##.text-ad-sitewide -##.text-ad-top -##.text-advertisement -##.text-panel-ad -##.text-sponsor -##.textAd3 -##.textAdBlock -##.textAdBox -##.textAds -##.textLinkAd -##.textSponsor -##.text_ad_title -##.text_ad_website -##.text_ads_2 -##.text_ads_wrapper -##.text_adv -##.textad -##.textadContainer -##.textadbox -##.textadlink -##.textadscontainer -##.textadsds -##.textadsfoot -##.textadtext -##.textlinkads -##.th-ad -##.thb_ad_before_header -##.thb_ad_header -##.theAdvert -##.theads -##.theleftad -##.themonic-ad1 -##.themonic-ad2 -##.themonic-ad3 -##.themonic-ad6 -##.third-party-ad -##.thumb-ads -##.thumb_ad -##.thumbnailad -##.thumbs-adv -##.thumbs-adv-holder -##.tile--ad -##.tile-ad -##.tile-ad-container -##.tile-advert -##.tileAdContainer -##.tileAdWrap -##.tileAds -##.tile_AdBanner -##.tile_ad -##.tile_ad_container -##.tips_advertisement -##.title-ad -##.tl-ad-container -##.tmiads -##.tmo-ad -##.tmo-ad-ezoic -##.tncls_ad -##.tncls_ad_250 -##.tncls_ad_300 -##.tnt-ads -##.tnt-ads-container -##.tnt-dmp-reactive -##.tnw-ad -##.toaster-ad -##.toolkit-ad-shell -##.top-300-ad -##.top-ad -##.top-ad-728 -##.top-ad-970x90 -##.top-ad-anchor -##.top-ad-area -##.top-ad-banner-wrapper -##.top-ad-bloc -##.top-ad-block -##.top-ad-center -##.top-ad-container -##.top-ad-content -##.top-ad-deck -##.top-ad-desktop -##.top-ad-div -##.top-ad-horizontal -##.top-ad-inside -##.top-ad-module -##.top-ad-recirc -##.top-ad-right -##.top-ad-sidebar -##.top-ad-slot -##.top-ad-space -##.top-ad-sticky -##.top-ad-unit -##.top-ad-wrap -##.top-ad-wrapper -##.top-ad-zone -##.top-ad1 -##.top-ad__sticky-wrapper -##.top-adbox -##.top-ads -##.top-ads-amp -##.top-ads-block -##.top-ads-bottom-bar -##.top-ads-container -##.top-ads-mobile -##.top-ads-wrapper -##.top-adsense -##.top-adsense-banner -##.top-adspace -##.top-adv -##.top-adv-container -##.top-adverbox -##.top-advert -##.top-advertisement -##.top-banner-468 -##.top-banner-ad -##.top-banner-ad-container -##.top-banner-ad-wrapper -##.top-banner-add -##.top-banner-ads -##.top-banner-advert -##.top-bar-ad-related -##.top-box-right-ad -##.top-content-adplace -##.top-dfp-wrapper -##.top-fixed-ad -##.top-half-page-ad -##.top-header-ad -##.top-header-ad1 -##.top-horiz-ad -##.top-horizontal-ad -##.top-item-ad -##.top-leaderboard-ad -##.top-left-ad -##.top-menu-ads -##.top-post-ad -##.top-post-ads -##.top-right-ad -##.top-side-advertisement -##.top-sidebar-ad -##.top-sidebar-adbox -##.top-site-ad -##.top-sponsored-header -##.top-story-ad -##.top-topics__ad -##.top-wide-ad-container -##.top.ad -##.top250Ad -##.top300ad -##.topAD -##.topAd -##.topAd728x90 -##.topAdBanner -##.topAdBar -##.topAdBlock -##.topAdCenter -##.topAdContainer -##.topAdIn -##.topAdLeft -##.topAdRight -##.topAdSpacer -##.topAdWrap -##.topAdWrapper -##.topAdd -##.topAds -##.topAdsWrappper -##.topAdvBox -##.topAdvert -##.topAdvertisement -##.topAdvertistemt -##.topAdverts -##.topAlertAds -##.topArtAd -##.topArticleAds -##.topBannerAd -##.topBarAd -##.topBoxAdvertisement -##.topLeaderboardAd -##.topRightAd -##.top_Ad -##.top__ad -##.top_ad -##.top_ad1 -##.top_ad_728 -##.top_ad_728_90 -##.top_ad_banner -##.top_ad_big -##.top_ad_disclaimer -##.top_ad_div -##.top_ad_holder -##.top_ad_inner -##.top_ad_label -##.top_ad_list -##.top_ad_long -##.top_ad_post -##.top_ad_responsive -##.top_ad_seperate -##.top_ad_short -##.top_ad_wrap -##.top_ad_wrapper -##.top_adbox1 -##.top_adbox2 -##.top_adh -##.top_ads -##.top_ads_container -##.top_adsense -##.top_adspace -##.top_adv -##.top_adv_content -##.top_advert -##.top_advertisement -##.top_advertising_lb -##.top_advertizing_cnt -##.top_bar_ad -##.top_big_ads -##.top_container_ad -##.top_corner_ad -##.top_head_ads -##.top_header_ad -##.top_header_ad_inner -##.top_right_ad -##.top_rightad -##.top_side_adv -##.top_sponsor -##.topad-area -##.topad-bar -##.topad-bg -##.topad1 -##.topad2 -##.topadbar -##.topadblock -##.topadbox -##.topadcont -##.topadrow -##.topads -##.topads-spacer -##.topadsbx -##.topadsection -##.topadspace -##.topadspot -##.topadtara -##.topadtxt -##.topadvert -##.topbannerAd -##.topbar-ad-parent -##.topbar-ad-unit -##.topboardads -##.topright_ad -##.topside_ad -##.topsidebarad -##.tout-ad -##.tout-ad-embed -##.tower-ad -##.tower-ad-abs -##.tower-ad-b -##.tower-ad-wrapper -##.tower-ads-container -##.towerAd -##.towerAdLeft -##.towerAds -##.tower_ad -##.tower_ad_desktop -##.tower_ad_disclaimer -##.towerad -##.tp-ad-label -##.tp_ads -##.tpd-banner-ad-container -##.tpd-banner-desktop -##.tpd-box-ad-d -##.trc-content-sponsored -##.trc-content-sponsoredUB -##.trend-card-advert -##.trend-card-advert__title -##.tsm-ad -##.tt_ads -##.ttb_adv_bg -##.tw-adv-gpt -##.txt_ads -##.txtad_area -##.txtadbox -##.txtadvertise -##.type-ad -##.u-ads -##.u-lazy-ad-wrapper -##.udn-ads -##.ue-c-ad -##.ult_vp_videoPlayerAD -##.under-header-ad -##.under-player-ad -##.under-player-ads -##.under_ads -##.underplayer__ad -##.uniAdBox -##.uniAds -##.unionAd -##.unit-ad -##.unspoken-adplace -##.upper-ad-box -##.upper-ad-space -##.upper_ad -##.upx-ad-placeholder -##.us_ad -##.uvs-ad-full-width -##.vadvert -##.variable-ad -##.variableHeightAd -##.vce-ad-below-header -##.vce-ad-container -##.vce-header-ads -##.vce_adsense_expand -##.vce_adsense_widget -##.vce_adsense_wrapper -##.vdvwad -##.vert-ad -##.vert-ads -##.vertad -##.vertical-ad -##.vertical-ads -##.vertical-adsense -##.vertical-trending-ads -##.verticalAd -##.verticalAdText -##.vertical_ad -##.vertical_ads -##.verticalad -##.vf-ad-comments -##.vf-conversation-starter__ad -##.vf-promo-gtag -##.vf3-conversations-list__promo -##.vi-sticky-ad -##.video-ad -##.video-ad-bottom -##.video-ad-container -##.video-ad-content -##.video-ads -##.video-ads-container -##.video-ads-grid -##.video-ads-wrapper -##.video-adv -##.video-advert -##.video-archive-ad -##.video-boxad -##.video-inline-ads -##.video-page__adv -##.video-right-ad -##.video-right-ads -##.video-side__adv_title -##.videoAd-wrapper -##.videoAd300 -##.videoBoxAd -##.videoOverAd300 -##.videoOverAdSmall -##.videoPauseAd -##.videoSideAds -##.video_ad -##.video_ads -##.videoad -##.videoad-base -##.videoad2 -##.videos-ad -##.videos-ad-wrap -##.view-Advertisment -##.view-ad -##.view-ads -##.view-advertisement -##.view-advertisements -##.view-advertorials -##.view-adverts -##.view-article-inner-ads -##.view-homepage-center-ads -##.view-id-Advertisment -##.view-id-ads -##.view-id-advertisement -##.view-image-ads -##.view-site-ads -##.view_ad -##.views-field-field-ad -##.visibleAd -##.vjs-ad-iframe -##.vjs-ad-overlay -##.vjs-ima3-ad-container -##.vjs-marker-ad -##.vjs-overlay.size-300x250 -##.vl-ad-item -##.vl-advertisment -##.vl-header-ads -##.vlog-ad -##.vm-ad-horizontal -##.vmag_medium_ad -##.vodl-ad__bigsizebanner -##.vpnad -##.vs-advert-300x250 -##.vsw-ads -##.vswAdContainer -##.vuukle-ad-block -##.vuukle-ads -##.vw-header__ads -##.w-ad-box -##.w-content--ad -##.wAdvert -##.w_AdExternal -##.w_ad -##.waf-ad -##.wahAd -##.wahAdRight -##.waldo-display-unit -##.waldo-placeholder -##.waldo-placeholder-bottom -##.wall-ads-control -##.wall-ads-left -##.wall-ads-right -##.wallAd -##.wall_ad -##.wallad -##.wcAd -##.wcfAdLocation -##.wd-adunit -##.wdca_ad_item -##.wdca_custom_ad -##.wdt_ads -##.weatherad -##.web_ads -##.webadvert-container -##.webpart-wrap-advert -##.website-ad-space -##.well-ad -##.werbungAd -##.wfb-ad -##.wg-ad-square -##.wh-advert -##.wh_ad -##.wh_ad_inner -##.when-show-ads -##.wide-ad -##.wide-ad-container -##.wide-ad-new-layout -##.wide-ad-outer -##.wide-ads-container -##.wide-advert -##.wide-footer-ad -##.wide-header-ad -##.wide-skyscraper-ad -##.wideAd -##.wideAdTable -##.widePageAd -##.wide_ad -##.wide_adBox_footer -##.wide_ad_unit -##.wide_ad_unit_top -##.wide_ads -##.wide_google_ads -##.wide_grey_ad_box -##.wide_sponsors -##.widead -##.wideadbox -##.widget--ad -##.widget--ajdg_bnnrwidgets -##.widget--local-ads -##.widget-300x250ad -##.widget-ad -##.widget-ad-codes -##.widget-ad-image -##.widget-ad-script -##.widget-ad-sky -##.widget-ad-zone -##.widget-ad300x250 -##.widget-adcode -##.widget-ads -##.widget-adsense -##.widget-adv -##.widget-advads-ad-widget -##.widget-advert-970 -##.widget-advertisement -##.widget-dfp -##.widget-group-Ads -##.widget-highlight-ads -##.widget-sponsor -##.widget-sponsor--container -##.widget-text-ad -##.widget1-ad -##.widget10-ad -##.widget4-ad -##.widget6-ad -##.widget7-ad -##.widgetAD -##.widgetAds -##.widgetContentIfrWrapperAd -##.widgetSponsors -##.widget_300x250_advertisement -##.widget_abn_admanager_sidestealer -##.widget_ad -##.widget_ad-widget -##.widget_ad125 -##.widget_ad300 -##.widget_ad_300 -##.widget_ad_boxes_widget -##.widget_ad_layers_ad_widget -##.widget_ad_rotator -##.widget_ad_widget -##.widget_adace_ads_widget -##.widget_admanagerwidget -##.widget_adrotate_widgets -##.widget_ads -##.widget_ads_entries -##.widget_ads_widget -##.widget_adsblock -##.widget_adsensem -##.widget_adsensewidget -##.widget_adsingle -##.widget_adswidget1-quick-adsense -##.widget_adswidget2-quick-adsense -##.widget_adswidget3-quick-adsense -##.widget_adv_location -##.widget_adv_text -##.widget_advads_ad_widget -##.widget_advert -##.widget_advert_content -##.widget_advert_widget -##.widget_advertisement -##.widget_advertisements -##.widget_advertisment -##.widget_advwidget -##.widget_alaya_ad -##.widget_arvins_ad_randomizer -##.widget_awaken_pro_medium_rectangle_ad -##.widget_better-ads -##.widget_com_ad_widget -##.widget_core_ads_desk -##.widget_cpxadvert_widgets -##.widget_customad_widget -##.widget_customadvertising -##.widget_dfp -##.widget_doubleclick_widget -##.widget_ep_rotating_ad_widget -##.widget_epcl_ads_fluid -##.widget_evolve_ad_gpt_widget -##.widget_html_snippet_ad_widget -##.widget_ima_ads -##.widget_ione-dart-ad -##.widget_ipm_sidebar_ad -##.widget_island_ad -##.widget_joblo_complex_ad -##.widget_long_ads_widget -##.widget_newspack-ads-widget -##.widget_njads_single_widget -##.widget_openxwpwidget -##.widget_plugrush_widget -##.widget_pmc-ads-widget -##.widget_quads_ads_widget -##.widget_rdc_ad_widget -##.widget_sej_sidebar_ad -##.widget_sidebar_adrotate_tedo_single_widget -##.widget_sidebaradwidget -##.widget_singlead -##.widget_sponsored_content -##.widget_supermag_ad -##.widget_supernews_ad -##.widget_text_adsense -##.widget_themoneytizer_widget -##.widget_thesun_dfp_ad_widget -##.widget_tt_ads_widget -##.widget_viral_advertisement -##.widget_wp-bannerize-widget -##.widget_wp_ads_gpt_widget -##.widget_wp_insert_ad_widget -##.widget_wpex_advertisement -##.widget_wpstealthads_widget -##.widgetads -##.width-ad-slug -##.wikia-ad -##.wio-xbanner -##.worldplus-ad -##.wp-ads-target -##.wp-block-ad-slot -##.wp-block-gamurs-ad -##.wp-block-tpd-block-tpd-ads -##.wp125ad -##.wp125ad_2 -##.wp_bannerize -##.wp_bannerize_banner_box -##.wp_bannerize_container -##.wpadcenter-ad-container -##.wpadvert -##.wpd-advertisement -##.wpex-ads-widget -##.wppaszone -##.wpvqgr-a-d-s -##.wpx-bannerize -##.wpx_bannerize -##.wpx_bannerize_banner_box -##.wrap-ad -##.wrap-ads -##.wrap_boxad -##.wrapad -##.wrapper-ad -##.wrapper-header-ad-slot -##.wrapper_ad -##.wrapper_advertisement -##.wrapperad -##.ww_ads_banner_wrapper -##.xeiro-ads -##.xmlad -##.xpot-horizontal -##.y-ads -##.y-ads-wide -##.yaAds -##.yad-sponsored -##.yahooAd -##.yahooAds -##.yahoo_ad -##.yahoo_ads -##.yahooad -##.yahooads -##.yan-sponsored -##.zeus-ad -##.zeusAdWrapper -##.zeusAd__container -##.zmgad-full-width -##.zmgad-right-rail -##.zone-advertisement -##.zoneAds -##.zox-post-ad-wrap -##.zox-post-bot-ad -##.zox-widget-side-ad -##.zox_ad_widget -##.zox_adv_widget -##AD-SLOT -##AD-TRIPLE-BOX -##DFP-AD -##[class^="adDisplay-module"] -##[class^="amp-ad-"] -##[class^="div-gpt-ad"] -##[data-ad-cls] -##[data-ad-manager-id] -##[data-ad-module] -##[data-ad-name] -##[data-ad-width] -##[data-adblockkey] -##[data-adbridg-ad-class] -##[data-adshim] -##[data-advadstrackid] -##[data-block-type="ad"] -##[data-css-class="dfp-inarticle"] -##[data-d-ad-id] -##[data-desktop-ad-id] -##[data-dynamic-ads] -##[data-ez-name] -##[data-freestar-ad][id] -##[data-id^="div-gpt-ad"] -##[data-identity="adhesive-ad"] -##[data-m-ad-id] -##[data-mobile-ad-id] -##[data-name="adaptiveConstructorAd"] -##[data-rc-widget="data-rc-widget"] -##[data-rc-widget] -##[data-revive-zoneid] > iframe -##[data-role="tile-ads-module"] -##[data-template-type="nativead"] -##[data-testid="adBanner-wrapper"] -##[data-testid="ad_testID"] -##[data-testid="prism-ad-wrapper"] -##[data-type="ad-vertical"] -##[data-wpas-zoneid] -##[href="//sexcams.plus/"] -##[href="https://jdrucker.com/gold"] > img -##[href="https://masstortfinancing.com"] img -##[href="https://ourgoldguy.com/contact/"] img -##[href="https://www.masstortfinancing.com/"] > img -##[href^="http://clicks.totemcash.com/"] -##[href^="http://mypillow.com/"] > img -##[href^="http://www.mypillow.com/"] > img -##[href^="https://ad.admitad.com/"] -##[href^="https://affiliate.fastcomet.com/"] > img -##[href^="https://antiagingbed.com/discount/"] > img -##[href^="https://ap.octopuspop.com/click/"] > img -##[href^="https://awbbjmp.com/"] -##[href^="https://charmingdatings.life/"] -##[href^="https://clicks.affstrack.com/"] > img -##[href^="https://cpa.10kfreesilver.com/"] -##[href^="https://glersakr.com/"] -##[href^="https://go.xlrdr.com"] -##[href^="https://goldcometals.com/clk.trk"] -##[href^="https://ilovemyfreedoms.com/landing-"] -##[href^="https://istlnkcl.com/"] -##[href^="https://join.girlsoutwest.com/"] -##[href^="https://join.playboyplus.com/track/"] -##[href^="https://join3.bannedsextapes.com"] -##[href^="https://mylead.global/stl/"] > img -##[href^="https://mypatriotsupply.com/"] > img -##[href^="https://mypillow.com/"] > img -##[href^="https://mystore.com/"] > img -##[href^="https://noqreport.com/"] > img -##[href^="https://optimizedelite.com/"] > img -##[href^="https://rapidgator.net/article/premium/ref/"] -##[href^="https://routewebtk.com/"] -##[href^="https://shiftnetwork.infusionsoft.com/go/"] > img -##[href^="https://track.aftrk1.com/"] -##[href^="https://track.fiverr.com/visit/"] > img -##[href^="https://turtlebids.irauctions.com/"] img -##[href^="https://v.investologic.co.uk/"] -##[href^="https://wct.link/click?"] -##[href^="https://www.avantlink.com/click.php"] img -##[href^="https://www.brighteonstore.com/products/"] img -##[href^="https://www.cloudways.com/en/?id"] -##[href^="https://www.herbanomic.com/"] > img -##[href^="https://www.hostg.xyz/"] > img -##[href^="https://www.mypatriotsupply.com/"] > img -##[href^="https://www.mypillow.com/"] > img -##[href^="https://www.profitablegatecpm.com/"] -##[href^="https://www.reimageplus.com/"] -##[href^="https://www.restoro.com/"] -##[href^="https://www.targetingpartner.com/"] -##[href^="https://zone.gotrackier.com/"] -##[href^="https://zstacklife.com/"] img -##[id^="ad-wrap-"] -##[id^="ad_sky"] -##[id^="ad_slider"] -##[id^="div-gpt-ad"] -##[id^="section-ad-banner"] -##[name^="google_ads_iframe"] -##[onclick^="location.href='https://1337x.vpnonly.site/"] -##a-ad -##a[data-href^="http://ads.trafficjunky.net/"] -##a[href*=".adsrv.eacdn.com/"] -##a[href*=".engine.adglare.net/"] -##a[href*=".foxqck.com/"] -##a[href*=".g2afse.com/"] -##a[href*="//daichoho.com/"] -##a[href*="//jjgirls.com/sex/Chaturbate"] -##a[href*="/jump/next.php?r="] -##a[href^=" https://www.friendlyduck.com/AF_"] -##a[href^="//go.eabids.com/"] -##a[href^="//s.st1net.com/splash.php"] -##a[href^="//s.zlinkd.com/"] -##a[href^="//startgaming.net/tienda/" i] -##a[href^="http://adultfriendfinder.com/go/"] -##a[href^="http://annulmentequitycereals.com/"] -##a[href^="http://avthelkp.net/"] -##a[href^="http://bongacams.com/track?"] -##a[href^="http://cam4com.go2cloud.org/aff_c?"] -##a[href^="http://coefficienttolerategravel.com/"] -##a[href^="http://com-1.pro/"] -##a[href^="http://deskfrontfreely.com/"] -##a[href^="http://dragfault.com/"] -##a[href^="http://dragnag.com/"] -##a[href^="http://eighteenderived.com/"] -##a[href^="http://eslp34af.click/"] -##a[href^="http://guestblackmail.com/"] -##a[href^="http://handgripvegetationhols.com/"] -##a[href^="http://li.blogtrottr.com/click?"] -##a[href^="http://muzzlematrix.com/"] -##a[href^="http://naggingirresponsible.com/"] -##a[href^="http://partners.etoro.com/"] -##a[href^="http://premonitioninventdisagree.com/"] -##a[href^="http://revolvemockerycopper.com/"] -##a[href^="http://stickingrepute.com/"] -##a[href^="http://tc.tradetracker.net/"] > img -##a[href^="http://trk.globwo.online/"] -##a[href^="http://troopsassistedstupidity.com/"] -##a[href^="http://www.adultdvdempire.com/?partner_id="][href*="&utm_"] -##a[href^="http://www.adultempire.com/unlimited/promo?"][href*="&partner_id="] -##a[href^="http://www.friendlyduck.com/AF_"] -##a[href^="http://www.h4trck.com/"] -##a[href^="http://www.iyalc.com/"] -##a[href^="http://www.mrskin.com/tour"] -##a[href^="https://1betandgonow.com/"] -##a[href^="https://6-partner.com/"] -##a[href^="https://81ac.xyz/"] -##a[href^="https://a-ads.com/"] -##a[href^="https://a.adtng.com/"] -##a[href^="https://a.bestcontentfood.top/"] -##a[href^="https://a.bestcontentoperation.top/"] -##a[href^="https://a.bestcontentweb.top/"] -##a[href^="https://a.candyai.love/"] -##a[href^="https://a.medfoodhome.com/"] -##a[href^="https://a.medfoodsafety.com/"] -##a[href^="https://a2.adform.net/"] -##a[href^="https://ab.advertiserurl.com/aff/"] -##a[href^="https://activate-game.com/"] -##a[href^="https://ad.doubleclick.net/"] -##a[href^="https://ad.kubiccomps.icu/"] -##a[href^="https://ad.zanox.com/ppc/"] > img -##a[href^="https://adclick.g.doubleclick.net/"] -##a[href^="https://ads.betfair.com/redirect.aspx?"] -##a[href^="https://ads.leovegas.com/"] -##a[href^="https://ads.planetwin365affiliate.com/"] -##a[href^="https://adultfriendfinder.com/go/"] -##a[href^="https://ak.hauchiwu.com/"] -##a[href^="https://ak.oalsauwy.net/"] -##a[href^="https://ak.psaltauw.net/"] -##a[href^="https://auesk.cfd/"] -##a[href^="https://ausoafab.net/"] -##a[href^="https://aweptjmp.com/"] -##a[href^="https://awptjmp.com/"] -##a[href^="https://banners.livepartners.com/"] -##a[href^="https://bc.game/"] -##a[href^="https://black77854.com/"] -##a[href^="https://bngprm.com/"] -##a[href^="https://bngpt.com/"] -##a[href^="https://bodelen.com/"] -##a[href^="https://bongacams10.com/track?"] -##a[href^="https://bongacams2.com/track?"] -##a[href^="https://bs.serving-sys.com"] -##a[href^="https://cam4com.go2cloud.org/"] -##a[href^="https://camfapr.com/landing/click/"] -##a[href^="https://cams.imagetwist.com/in/?track="] -##a[href^="https://chaturbate.com/in/?"] -##a[href^="https://chaturbate.jjgirls.com/?track="] -##a[href^="https://claring-loccelkin.com/"] -##a[href^="https://click.candyoffers.com/"] -##a[href^="https://click.dtiserv2.com/"] -##a[href^="https://click.hoolig.app/"] -##a[href^="https://click.linksynergy.com/fs-bin/"] > img -##a[href^="https://clickadilla.com/"] -##a[href^="https://clickins.slixa.com/"] -##a[href^="https://clicks.pipaffiliates.com/"] -##a[href^="https://clixtrac.com/"] -##a[href^="https://combodef.com/"] -##a[href^="https://ctjdwm.com/"] -##a[href^="https://ctosrd.com/"] -##a[href^="https://datewhisper.life/"] -##a[href^="https://datingoffers30.info/"] -##a[href^="https://disobediencecalculatormaiden.com/"] -##a[href^="https://dl-protect.net/"] -##a[href^="https://eergortu.net/"] -##a[href^="https://engine.blueistheneworanges.com/"] -##a[href^="https://engine.flixtrial.com/"] -##a[href^="https://engine.phn.doublepimp.com/"] -##a[href^="https://explore-site.com/"] -##a[href^="https://fc.lc/ref/"] -##a[href^="https://financeads.net/tc.php?"] -##a[href^="https://gamingadlt.com/?offer="] -##a[href^="https://get-link.xyz/"] -##a[href^="https://getmatchedlocally.com/"] -##a[href^="https://getvideoz.click/"] -##a[href^="https://gml-grp.com/"] -##a[href^="https://go.admjmp.com"] -##a[href^="https://go.bushheel.com/"] -##a[href^="https://go.cmtaffiliates.com/"] -##a[href^="https://go.dmzjmp.com"] -##a[href^="https://go.etoro.com/"] > img -##a[href^="https://go.goaserv.com/"] -##a[href^="https://go.grinsbest.com/"] -##a[href^="https://go.hpyjmp.com"] -##a[href^="https://go.hpyrdr.com/"] -##a[href^="https://go.markets.com/visit/?bta="] -##a[href^="https://go.mnaspm.com/"] -##a[href^="https://go.rmhfrtnd.com/"] -##a[href^="https://go.skinstrip.net"][href*="?campaignId="] -##a[href^="https://go.strpjmp.com/"] -##a[href^="https://go.tmrjmp.com"] -##a[href^="https://go.trackitalltheway.com/"] -##a[href^="https://go.xlirdr.com"] -##a[href^="https://go.xlivrdr.com"] -##a[href^="https://go.xlviiirdr.com"] -##a[href^="https://go.xlviirdr.com"] -##a[href^="https://go.xlvirdr.com"] -##a[href^="https://go.xtbaffiliates.com/"] -##a[href^="https://go.xxxiijmp.com"] -##a[href^="https://go.xxxijmp.com"] -##a[href^="https://go.xxxjmp.com"] -##a[href^="https://go.xxxvjmp.com/"] -##a[href^="https://golinks.work/"] -##a[href^="https://hot-growngames.life/"] -##a[href^="https://hotplaystime.life/"] -##a[href^="https://in.rabbtrk.com/"] -##a[href^="https://intenseaffiliates.com/redirect/"] -##a[href^="https://iqbroker.com/"][href*="?aff="] -##a[href^="https://ismlks.com/"] -##a[href^="https://italarizege.xyz/"] -##a[href^="https://itubego.com/video-downloader/?affid="] -##a[href^="https://jaxofuna.com/"] -##a[href^="https://join.dreamsexworld.com/"] -##a[href^="https://join.sexworld3d.com/track/"] -##a[href^="https://join.virtuallust3d.com/"] -##a[href^="https://join.virtualtaboo.com/track/"] -##a[href^="https://juicyads.in/"] -##a[href^="https://kiksajex.com/"] -##a[href^="https://l.hyenadata.com/"] -##a[href^="https://land.brazzersnetwork.com/landing/"] -##a[href^="https://landing.brazzersnetwork.com/"] -##a[href^="https://landing1.brazzersnetwork.com"] -##a[href^="https://lead1.pl/"] -##a[href^="https://leg.xyz/?track="] -##a[href^="https://lijavaxa.com/"] -##a[href^="https://linkboss.shop/"] -##a[href^="https://lnkxt.bannerator.com/"] -##a[href^="https://lobimax.com/"] -##a[href^="https://loboclick.com/"] -##a[href^="https://lone-pack.com/"] -##a[href^="https://losingoldfry.com/"] -##a[href^="https://m.do.co/c/"] > img -##a[href^="https://maymooth-stopic.com/"] -##a[href^="https://mediaserver.entainpartners.com/renderBanner.do?"] -##a[href^="https://mediaserver.gvcaffiliates.com/renderBanner.do?"] -##a[href^="https://mmwebhandler.aff-online.com/"] -##a[href^="https://myclick-2.com/"] -##a[href^="https://natour.naughtyamerica.com/track/"] -##a[href^="https://ndt5.net/"] -##a[href^="https://ngineet.cfd/"] -##a[href^="https://offhandpump.com/"] -##a[href^="https://pb-front.com/"] -##a[href^="https://pb-imc.com/"] -##a[href^="https://pb-track.com/"] -##a[href^="https://play1ad.shop/"] -##a[href^="https://playnano.online/offerwalls/?ref="] -##a[href^="https://porntubemate.com/"] -##a[href^="https://postback1win.com/"] -##a[href^="https://prf.hn/click/"][href*="/adref:"] > img -##a[href^="https://prf.hn/click/"][href*="/camref:"] > img -##a[href^="https://prf.hn/click/"][href*="/creativeref:"] > img -##a[href^="https://pubads.g.doubleclick.net/"] -##a[href^="https://quotationfirearmrevision.com/"] -##a[href^="https://random-affiliate.atimaze.com/"] -##a[href^="https://rixofa.com/"] -##a[href^="https://s.deltraff.com/"] -##a[href^="https://s.ma3ion.com/"] -##a[href^="https://s.optzsrv.com/"] -##a[href^="https://s.zlink3.com/"] -##a[href^="https://s.zlinkd.com/"] -##a[href^="https://safesurfingtoday.com/"][href*="?skip="] -##a[href^="https://serve.awmdelivery.com/"] -##a[href^="https://sexynearme.com/"] -##a[href^="https://slkmis.com/"] -##a[href^="https://snowdayonline.xyz/"] -##a[href^="https://softwa.cfd/"] -##a[href^="https://startgaming.net/tienda/" i] -##a[href^="https://static.fleshlight.com/images/banners/"] -##a[href^="https://streamate.com/landing/click/"] -##a[href^="https://svb-analytics.trackerrr.com/"] -##a[href^="https://syndicate.contentsserved.com/"] -##a[href^="https://syndication.dynsrvtbg.com/"] -##a[href^="https://syndication.exoclick.com/"] -##a[href^="https://syndication.optimizesrv.com/"] -##a[href^="https://t.acam.link/"] -##a[href^="https://t.adating.link/"] -##a[href^="https://t.ajrkm1.com/"] -##a[href^="https://t.ajrkm3.com/"] -##a[href^="https://t.ajump1.com/"] -##a[href^="https://t.aslnk.link/"] -##a[href^="https://t.hrtye.com/"] -##a[href^="https://tatrck.com/"] -##a[href^="https://tc.tradetracker.net/"] > img -##a[href^="https://tm-offers.gamingadult.com/"] -##a[href^="https://tour.mrskin.com/"] -##a[href^="https://track.1234sd123.com/"] -##a[href^="https://track.adform.net/"] -##a[href^="https://track.afcpatrk.com/"] -##a[href^="https://track.aftrk3.com/"] -##a[href^="https://track.totalav.com/"] -##a[href^="https://track.wg-aff.com"] -##a[href^="https://tracker.loropartners.com/"] -##a[href^="https://tracking.avapartner.com/"] -##a[href^="https://traffdaq.com/"] -##a[href^="https://trk.nfl-online-streams.club/"] -##a[href^="https://trk.softonixs.xyz/"] -##a[href^="https://trk.sportsflix4k.club/"] -##a[href^="https://turnstileunavailablesite.com/"] -##a[href^="https://twinrdsrv.com/"] -##a[href^="https://upsups.click/"] -##a[href^="https://vo2.qrlsx.com/"] -##a[href^="https://voluum.prom-xcams.com/"] -##a[href^="https://witnessjacket.com/"] -##a[href^="https://www.adskeeper.com"] -##a[href^="https://www.adultempire.com/"][href*="?partner_id="] -##a[href^="https://www.adxsrve.com/"] -##a[href^="https://www.bang.com/?aff="] -##a[href^="https://www.bet365.com/"][href*="affiliate="] -##a[href^="https://www.brazzersnetwork.com/landing/"] -##a[href^="https://www.dating-finder.com/?ai_d="] -##a[href^="https://www.dating-finder.com/signup/?ai_d="] -##a[href^="https://www.dql2clk.com/"] -##a[href^="https://www.endorico.com/Smartlink/"] -##a[href^="https://www.financeads.net/tc.php?"] -##a[href^="https://www.friendlyduck.com/AF_"] -##a[href^="https://www.geekbuying.com/dynamic-ads/"] -##a[href^="https://www.googleadservices.com/pagead/aclk?"] -##a[href^="https://www.highcpmrevenuenetwork.com/"] -##a[href^="https://www.highperformancecpmgate.com/"] -##a[href^="https://www.infowarsstore.com/"] > img -##a[href^="https://www.kingsoffetish.com/tour?partner_id="] -##a[href^="https://www.liquidfire.mobi/"] -##a[href^="https://www.mrskin.com/account/"] -##a[href^="https://www.mrskin.com/tour"] -##a[href^="https://www.mypornstarcams.com/landing/click/"] -##a[href^="https://www.nudeidols.com/cams/"] -##a[href^="https://www.nutaku.net/signup/landing/"] -##a[href^="https://www.onlineusershielder.com/"] -##a[href^="https://www.sheetmusicplus.com/"][href*="?aff_id="] -##a[href^="https://www.sugarinstant.com/?partner_id="] -##a[href^="https://www.toprevenuegate.com/"] -##a[href^="https://www8.smartadserver.com/"] -##a[href^="https://xbet-4.com/"] -##a[href^="https://zirdough.net/"] -##a[style="width:100%;height:100%;z-index:10000000000000000;position:absolute;top:0;left:0;"] -##ad-shield-ads -##ad-slot -##app-ad -##app-advertisement -##app-large-ad -##ark-top-ad -##aside[id^="adrotate_widgets-"] -##atf-ad-slot -##bottomadblock -##display-ad-component -##display-ads -##div[aria-label="Ads"] -##div[class^="Adstyled__AdWrapper-"] -##div[class^="Display_displayAd"] -##div[class^="kiwi-ad-wrapper"] -##div[class^="native-ad-"] -##div[data-ad-placeholder] -##div[data-ad-targeting] -##div[data-ad-wrapper] -##div[data-adname] -##div[data-adunit-path] -##div[data-adunit] -##div[data-adzone] -##div[data-alias="300x250 Ad 1"] -##div[data-alias="300x250 Ad 2"] -##div[data-contentexchange-widget] -##div[data-dfp-id] -##div[data-id-advertdfpconf] -##div[data-native-ad] -##div[data-native_ad] -##div[id^="ad-div-"] -##div[id^="ad-position-"] -##div[id^="ad_position_"] -##div[id^="adngin-"] -##div[id^="adrotate_widgets-"] -##div[id^="adspot-"] -##div[id^="crt-"][style] -##div[id^="dfp-ad-"] -##div[id^="div-ads-"] -##div[id^="div-gpt-"] -##div[id^="ezoic-pub-ad-"] -##div[id^="google_dfp_"] -##div[id^="gpt_ad_"] -##div[id^="lazyad-"] -##div[id^="optidigital-adslot"] -##div[id^="pa_sticky_ad_box_middle_"] -##div[id^="rc-widget-"] -##div[id^="st"][style^="z-index: 999999999;"] -##div[id^="sticky_ad_"] -##div[id^="vuukle-ad-"] -##div[id^="yandex_ad"] -##gpt-ad -##guj-ad -##hl-adsense -##img[src^="https://images.purevpnaffiliates.com"] -##ps-connatix-module -##span[data-ez-ph-id] -##span[id^="ezoic-pub-ad-placeholder-"] -##topadblock -##zeus-ad -! sellwild-loader -###sellwild-loader -! fansided. mentalfloss.com,netflixlife.com,winteriscoming.net,ipreferreading.com -##.ad_1tdq7q5 -##.style_k8mr7b-o_O-style_uhlm2 -! 247slots.org/247checkers.com/247backgammon.org/247hearts.com etc -##.aspace-300x169 -##.aspace-300x250 -! actvid.com,f2movies.to,fmovies.ink,fmovies.ps,fmoviesto.cc,himovies.to,movies2watch.tv,moviesjoy.to,soap2day.rs -###hgiks-middle -###hgiks-top -! flashscore.co.uk,soccer24.com,flashscore.it -##.boxOverContent__banner -! https://publicwww.com/websites/%22happy-under-player%22/ -##.happy-under-player -! https://github.com/easylist/easylist/pull/16654 -##.mntl-leaderboard-header -##.mntl-leaderboard-spacer -! shopee.cl,shopee.cn,shopee.co.id,shopee.co.th.. https://github.com/easylist/easylist/pull/16659 -##.shopee-search-user-brief -! Ads for parked domains https://github.com/easylist/easylist/commit/f96a71b82c -##a[href*="&maxads="] -##a[href*=".cfm?domain="][href*="&fp="] -! CitrusAd -##.CitrusBannerWrapper--enollj -##[class^="tile-picker__CitrusBannerContainer-sc-"] -##citrus-ad-wrapper -! realclear -##.RC-AD -##.RC-AD-BOX-BOTTOM -##.RC-AD-BOX-MIDDLE -##.RC-AD-BOX-TOP -##.RC-AD-TOP-BANNER -! Invideo advert: gizmodo.com,avclub.com,qz.com,lifehacker.com,theroot.com -##.js_related-stories-inset -! element specific -##ins.adsbygoogle[data-ad-client] -##ins.adsbygoogle[data-ad-slot] -! (NSFW) club-rileyreid.com,clubmiamalkova.com,lanarhoades.mypornstarblogs.com -###mgb-container > #mgb -! https://github.com/easylist/easylist/pull/11962 -###kt_player > a[target="_blank"] -###kt_player > div[style="position: absolute; inset: 0px; z-index: 170;"] -! Slashdot "Deals" (covers web/ipfs/onion) -###slashboxes > .deals-rail -##.scroll-fixable.rail-right > .deals-rail -! dailypost.co.uk/dailystar.co.uk https://github.com/easylist/easylist/issues/9657 -##.click-track.partner -! https://github.com/easylist/easylist/issues/9308 -##[href^="https://freecourseweb.com/"] > .sitefriend -! local12.com/bakersfieldnow.com/katv.com -##.index-module_adBeforeContent__UYZT -##.interstory_first_mobile -##.interstory_second_mobile -! Gannett https://github.com/easylist/easylist/issues/13015 -###gnt_atomsnc -###gpt-dynamic_native_article_4 -###gpt-high_impact -###gpt-poster -##.gnt_flp -##.gnt_rr_xpst -##.gnt_rr_xst -##.gnt_tb.gnt_tbb -##.gnt_tbr.gnt_tb -##.gnt_x -##.gnt_x__lbl -##.gnt_xmst -! (invideo advertising) -###Player_Playoncontent -###Player_Playoncontent_footer -###aniview--player -###cmg-video-player-placeholder -###jwplayer-container-div -###jwplayer_contextual_player_div -###kargo-player -###mm-player-placeholder-large-screen -###mplayer-embed -###primis-holder -###primis_intext -###vidazoo-player -##.GRVPrimisVideo -##.GRVVideo -##.ac-lre-desktop -##.ac-lre-player-ph -##.ac-lre-wrapper -##.ad-container--hot-video -##.ae-player__itv -##.ami-video-wrapper -##.ampexcoVideoPlayer -##.aniview-inline-player -##.anyClipWrapper -##.aplvideo -##.article-connatix-wrap -##.article-detail-ad -##.avp-p-wrapper -##.ck-anyclips -##.ck-anyclips-article -##.exco-container -##.ez-sidebar-wall-ad -##.ez-video-wrap -##.htl-inarticle-container -##.js-widget-distroscale -##.js-widget-send-to-news -##.jwPlayer--floatingContainer -##.legion_primiswrapper -##.mm-embed--sendtonews -##.mm-widget--sendtonews -##.nts-video-wrapper -##.oovvuu-embed-player -##.pbs__player -##.playwire-article-leaderboard-ad -##.pmc-contextual-player -##.pop-out-eplayer-container -##.popup-box-ads -##.primis-ad -##.primis-ad-wrap -##.primis-custom -##.primis-player -##.primis-player__container -##.primis-video-player -##.primis_1 -##.s2nContainer -##.send-to-news -##.van_vid_carousel -##.video--container--aniview -##.vidible-wrapper -##.wps-player-wrap -##[class^="s2nPlayer"] -! Outbrain -###around-the-web -###g-outbrain -###js-outbrain-module -###js-outbrain-relateds -###outbrain -###outbrain-id -###outbrain-section -###outbrain1 -###outbrainWidget -###outbrain_widget_0 -##.ArticleFooter-outbrain -##.ArticleOutbrainLocal -##.OUTBRAIN -##.Outbrain -##.article_OutbrainContent -##.box-outbrain -##.c2_outbrain -##.component-outbrain -##.ob-smartfeed-wrapper -##.outbrain -##.outbrain-ads -##.outbrain-bloc -##.outbrain-content -##.outbrain-group -##.outbrain-module -##.outbrain-placeholder -##.outbrain-recommended -##.outbrain-reserved-space -##.outbrain-single-bottom -##.outbrain-widget -##.outbrain-wrap -##.outbrain-wrapper -##.outbrain-wrapper-container -##.outbrain-wrapper-outer -##.outbrainWidget -##.outbrain__main -##.outbrain_container -##.outbrain_skybox -##.outbrainbox -##.sics-component__outbrain -##.sidebar-outbrain -##.voc-ob-wrapper -##.widget_outbrain -##.widget_outbrain_widget -! Taboola -###block-taboolablock -###js-Taboola-Container-0 -###moduleTaboolaRightRail -###possible_taboola -###taboola -###taboola-above-homepage-thumbnails -###taboola-below-article-thumbnails -###taboola-below-article-thumbnails-2 -###taboola-below-article-thumbnails-mg -###taboola-below-disco-board -###taboola-below-homepage-thumbnails-2 -###taboola-below-homepage-thumbnails-3 -###taboola-below-main-column -###taboola-belowarticle -###taboola-bottom -###taboola-bottom-main-column -###taboola-div -###taboola-homepage-thumbnails -###taboola-homepage-thumbnails-desktop -###taboola-horizontal-toolbar -###taboola-in-feed-thumbnails -###taboola-mid-main-column-thumbnails -###taboola-native-right-rail-thumbnails -###taboola-right-rail -###taboola-right-rail-text-right -###taboola-right-rail-thumbnails -###taboola-right-rail-thumbnails-2nd -###taboola-text-2-columns-mix -###taboola-vid-container -###taboola-widget-wrapper -###taboola_bottom -###taboola_side -###taboola_wrapper -##.divider-taboola -##.js-taboola -##.m-article-taboola -##.mc-column-Taboola -##.slottaboola -##.taboola -##.taboola-banner -##.taboola-bottom-adunit -##.taboola-container -##.taboola-frame -##.taboola-inbetweener -##.taboola-like-block -##.taboola-module -##.taboola-recommends -##.taboola-sidebar -##.taboola-sidebar-container -##.taboola-skip-wrapper -##.taboola-thumbnails-container -##.taboola-vertical -##.taboola-wrapper -##.taboolaDiv -##.taboola_module -##.taboolaloader -##.trc-first-recommendation -##.trc-spotlight-first-recommendation -##.trc_excludable -##.trc_spotlight_item -##[data-taboola-options] -! Ad widgets -##.BeOpWidget -! VPN Affiliate Banners -##a[href^="https://billing.purevpn.com/aff.php"] > img -##a[href^="https://fastestvpn.com/lifetime-special-deal?a_aid="] -##a[href^="https://get.surfshark.net/aff_c?"][href*="&aff_id="] > img -##a[href^="https://go.nordvpn.net/aff"] > img -##a[href^="https://torguard.net/aff.php"] > img -##a[href^="https://track.ultravpn.com/"] -##a[href^="https://www.get-express-vpn.com/offer/"] -##a[href^="https://www.goldenfrog.com/vyprvpn?offer_id="][href*="&aff_id="] -##a[href^="https://www.privateinternetaccess.com/"] > img -##a[href^="https://www.purevpn.com/"][href*="&utm_source=aff-"] -! areanews.com.au,armidaleexpress.com.au,avonadvocate.com.au,batemansbaypost.com.au -##.grid > .container > #aside-promotion -! revcontent -##.default_rc_theme -##.inf-onclickvideo-adbox -##.inf-onclickvideo-container -! internetradiouk.com / jamaicaradio.net / onlineradios.in etc -##.add-box-side -##.add-box-top -! https://github.com/easylist/easylist/issues/3902 -##.partner-loading-shown.partner-label -! brave browser overlay ad -##.brave-overlay -! Mgid -##div[id*="MarketGid"] -##div[id*="ScriptRoot"] -! ezoic -###ezmob_footer -! Adreclaim -##.rec-sponsored -##.rec_article_footer -##.rec_article_right -##.rec_container__right -##.rec_container_footer -##.rec_container_right -##.rec_title_footer -##[onclick*="content.ad/"] -! ampproject -##.amp-ad -##.amp-ad-container -##.amp-ad__wrapper -##.amp-ads -##.amp-ads-container -##.amp-adv-container -##.amp-adv-wrapper -##.amp-article-ad-element -##.amp-flying-carpet-text-border -##.amp-sticky-ad-custom -##.amp-sticky-ads -##.amp-unresolved -##.amp_ad_1 -##.amp_ad_header -##.amp_ad_wrapper -##.ampad -##.ct_ampad -##.spotim-amp-list-ad -##AMP-AD -##amp-ad -##amp-ad-custom -##amp-connatix-player -##amp-fx-flying-carpet -! Generic mobile element -###mobile-swipe-banner -! Sinclair Broadcast Group (ktul.com/komonews.com/kfdm.com/wjla.com/etc.) -###banner_pos1_ddb_0 -###banner_pos2_ddb_0 -###banner_pos3_ddb_0 -###banner_pos4_ddb_0 -###ddb_fluid_native_ddb_0 -###premium_ddb_0 -###rightrail_bottom_ddb_0 -###rightrail_pos1_ddb_0 -###rightrail_pos2_ddb_0 -###rightrail_pos3_ddb_0 -###rightrail_top_ddb_0 -###story_bottom_ddb_0 -###story_top_ddb_0 -##.index-module_adBeforeContent__AMXn -##.index-module_rightrailBottom__IJEl -##.index-module_rightrailTop__mag4 -##.premium_PremiumPlacement__2dEp0 -! In video div -###ultimedia_wrapper -! In advert promo -##.brandpost_inarticle -! Sedo -##.container-content__container-relatedlinks -! PubExchange -###pubexchange_below_content -##.pubexchange_module -! Outbrain -###js-outbrain-ads-module -###outbrain-wrapper -###outbrainAdWrapper -##.OUTBRAIN[data-widget-id^="FMS_REELD_"] -##.adv_outbrain -##.js-outbrain-container -##.mid-outbrain -##.ob-p.ob-dynamic-rec-container -##.ob-widget-header -##.outBrainWrapper -##.outbrain-ad-slot -##.outbrain-ad-units -##.outbrain-bg -##.outbrain-widget -##.outbrainAdHeight -##.outbrainad -##.promoted-outbrain -##.responsive-ad-outbrain -##.single__outbrain -##a[data-obtrack^="http://paid.outbrain.com/network/redir?"] -##a[data-oburl^="https://paid.outbrain.com/network/redir?"] -##a[data-redirect^="https://paid.outbrain.com/network/redir?"] -##a[data-url^="http://paid.outbrain.com/network/redir?"] + .author -##a[data-widget-outbrain-redirect^="http://paid.outbrain.com/network/redir?"] -##a[href^="https://paid.outbrain.com/network/redir?"] -##a[onmousedown^="this.href='http://paid.outbrain.com/network/redir?"][target="_blank"] -##a[onmousedown^="this.href='http://paid.outbrain.com/network/redir?"][target="_blank"] + .ob_source -##a[onmousedown^="this.href='https://paid.outbrain.com/network/redir?"][target="_blank"] -##a[onmousedown^="this.href='https://paid.outbrain.com/network/redir?"][target="_blank"] + .ob_source -##a[target="_blank"][onmousedown="this.href^='http://paid.outbrain.com/network/redir?"] -! Taboola -###block-boxes-taboola -###component-taboola-below-article-feed -###component-taboola-below-article-feed-2 -###component-taboola-below-homepage-feed -###taboola-ad -###taboola-adverts -###taboola-below -###taboola-below-article-1 -###taboola-below-article-thumbnails -###taboola-below-article-thumbnails-express -###taboola-below-article-thumbnails-v2 -###taboola-below-forum-thumbnails -###taboola-mid-article-thumbnails -###taboola-mid-article-thumbnails-ii -###taboola-mobile-article-thumbnails -###taboola-placeholder -###taboola-right-rail -###taboola-right-rail-express -###taboola_responsive_wrapper -##.article-taboola -##.grid__module-sizer_name_taboola -##.nya-slot[style] -##.taboola-above-article -##.taboola-above-article-thumbnails -##.taboola-ad -##.taboola-block -##.taboola-general -##.taboola-in-plug-wrap -##.taboola-item -##.taboola-widget -##.taboolaArticle -##.taboolaHeight -##.taboola__container -##.taboola_blk -##.taboola_body_ad -##.taboola_container -##.taboola_lhs -##.trb_taboola -##.trc_excludable -##.trc_rbox -##.trc_rbox_border_elm -##.trc_rbox_div -##.trc_related_container -##.van_taboola -##.widget_taboola -##amp-embed[type="taboola"] -##div[id^="taboola-stream-"] -! Zergnet -##.ZERGNET -##.module-zerg -##.sidebar-zergnet -##.zerg-widget -##.zerg-widgets -##.zergnet -##.zergnet-holder -##.zergnet-row -##.zergnet-unit -##.zergnet-widget -##.zergnet-widget-container -##.zergnet-widget__header -##.zergnet-widget__subtitle -##.zergnet__container -##div[id^="zergnet-widget"] - -! *** easylist:easylist/easylist_allowlist_general_hide.txt *** -dez.ro#@##ad-carousel -so-net.ne.jp#@##ad-p3 -53.com#@##ad-rotator -techymedies.com#@##ad-top -afterdawn.com,download.fi,edukas.fi#@##ad-top-banner-placeholder -ufoevidence.org#@##ad-wrapper -sdf-event.sakura.ne.jp#@##ad_1 -sdf-event.sakura.ne.jp#@##ad_2 -sdf-event.sakura.ne.jp#@##ad_3 -sdf-event.sakura.ne.jp#@##ad_4 -drc1bk94f7rq8.cloudfront.net#@##ad_link -streetinsider.com#@##ad_space -adtunes.com#@##ad_thread_first_post_content -aga-clinic-experience.jp#@##ad_top -linuxtracker.org#@##adbar -pyfunceble.readthedocs.io#@##adblock -gifmagic.com,lalovings.com#@##adcontainer -about.com#@##adcontainer1 -guloggratis.dk#@##adcontent -lifeinvader.com#@##ads-col -ads.nipr.ac.jp#@##ads-header -miuithemers.com#@##ads-left -ads.nipr.ac.jp#@##ads-menu -finvtech.com,herstage.com,scitechi.com,soulfitr.com,sportynew.com,travel13.com,usatravel.tips,watchinfilm.com#@##ads-wrapper -mafagames.com,telkomsel.com#@##adsContainer -video.tv-tokyo.co.jp,zeirishi-web.com#@##adspace -globalsecurity.org#@##adtop -ewybory.eu#@##adv-text -basinnow.com,e-jpccs.jp,oxfordlearnersdictionaries.com#@##advertise -fcbarcelona.dk#@##article_ad -catb.org#@##banner-ad -hifi-forsale.co.uk#@##centerads -wsj.com#@##footer-ads -deepgoretube.site#@##fwdevpDiv0 -developers.google.com#@##google-ads -plaza.rakuten.co.jp#@##headerAd -airplaydirect.com,zeirishi-web.com#@##header_ad -665.jp#@##leftad -si.com#@##mplayer-embed -tei-c.org#@##msad -cnn.com#@##outbrain_widget_0 -suntory.co.jp#@##page_ad -box10.com#@##prerollAd -spjai.com#@##related_ads -eva.vn#@##right_ads -665.jp,e-jpccs.jp#@##rightad -39.benesse.ne.jp,techeyesonline.com#@##side-ad -lexicanum.com#@##sidebar-ad -mars.video#@##stickyads -jansatta.com#@##taboola-below-article-1 -azclick.jp,tubefilter.com#@##topAd -soundandvision.com,stereophile.com#@##topbannerad -gamingcools.com#@#.Adsense -m.motonet.fi#@#.ProductAd -click2houston.com,clickondetroit.com,clickorlando.com,ksat.com,news4jax.com,wsls.com#@#.ac-widget-placeholder -flightview.com#@#.ad-160-600 -job.inshokuten.com#@#.ad-area -kincho.co.jp,niji-gazo.com#@#.ad-block -livesexgirlsrooms.com#@#.ad-body -ikkaku.net#@#.ad-bottom -job.inshokuten.com,sexgr.net,webbtelescope.org,websaver.ca#@#.ad-box:not(#ad-banner):not(:empty) -dbook.docomo.ne.jp,dmagazine.docomo.ne.jp#@#.ad-button -livedoorblogstyle.jp#@#.ad-center -newegg.com#@#.ad-click -backcar.fr,flat-ads.com,job.inshokuten.com#@#.ad-content -dbook.docomo.ne.jp,dmagazine.docomo.ne.jp#@#.ad-cover -xda-developers.com#@#.ad-current -wallpapers.com#@#.ad-enabled -nolotiro.org#@#.ad-hero -wallpapers.com#@#.ad-holder -transparencyreport.google.com#@#.ad-icon -flat-ads.com,lastpass.com#@#.ad-img -docomo.ne.jp#@#.ad-label -guloggratis.dk#@#.ad-links -so-net.ne.jp#@#.ad-notice -so-net.ne.jp#@#.ad-outside -nicoad.nicovideo.jp#@#.ad-point -tapahtumat.iijokiseutu.fi,tapahtumat.kaleva.fi,tapahtumat.koillissanomat.fi,tapahtumat.lapinkansa.fi,tapahtumat.pyhajokiseutu.fi,tapahtumat.raahenseutu.fi,tapahtumat.rantalakeus.fi,tapahtumat.siikajokilaakso.fi#@#.ad-popup -hulu.com#@#.ad-root -wiki.fextralife.com#@#.ad-sidebar -wegotads.co.za#@#.ad-source -isewanferry.co.jp,jreu-h.jp,junkmail.co.za,nexco-hoken.co.jp,version2.dk#@#.ad-text -job.inshokuten.com#@#.ad-title -videosalon.jp#@#.ad-widget -lifeinvader.com,marginalreport.net,spanishdict.com,studentski-servis.com#@#.ad-wrapper -xda-developers.com#@#.ad-zone -xda-developers.com#@#.ad-zone-container -wordparts.ru#@#.ad336 -leffatykki.com#@#.ad728x90 -cw.com.tw#@#.adActive -thoughtcatalog.com#@#.adChoicesLogo -dailymail.co.uk,namesecure.com#@#.adHolder -ikkaku.net#@#.adImg -hdfcbank.com#@#.adLink -seznam.cz#@#.adMiddle -aggeliestanea.gr,infotel.ca#@#.adResult -macys.com,news24.jp#@#.adText -clien.net#@#.ad_banner -interior-hirade.co.jp#@#.ad_bg -sozai-good.com#@#.ad_block -panarmenian.net#@#.ad_body -jabank-tokushima.or.jp,joins.com,jtbc.co.kr#@#.ad_bottom -ienohikari.net#@#.ad_btn -m.nettiauto.com,m.nettikaravaani.com,m.nettikone.com,m.nettimoto.com,m.nettivaraosa.com,m.nettivene.com,nettimokki.com#@#.ad_caption -classy-online.jp,thelocal.at,thelocal.ch,thelocal.de,thelocal.dk,thelocal.es,thelocal.fr,thelocal.it,thelocal.no,thelocal.se#@#.ad_container -walkingclub.org.uk#@#.ad_div -admanager.line.biz#@#.ad_frame -modelhorseblab.com#@#.ad_global_header -myhouseabroad.com,njuskalo.hr,starbuy.sk.data10.websupport.sk#@#.ad_item -muzines.co.uk#@#.ad_main -jabank-tokushima.or.jp#@#.ad_middle -huffingtonpost.co.uk#@#.ad_spot -kpanews.co.kr#@#.ad_top -genshinimpactcalculator.com#@#.adban -weatherwx.com#@#.adbutton -boots.com#@#.adcard -mediance.com#@#.adcenter -insomnia.gr,kingsinteriors.co.uk#@#.adlink -ascii.jp#@#.adrect -epawaweather.com#@#.adrow -gemini.yahoo.com#@#.ads -in.fo,moovitapp.com#@#.ads-banner -bdsmlr.com#@#.ads-container -happyend.life#@#.ads-core-placer -ads.nipr.ac.jp,burzahrane.hr#@#.ads-header -heatware.com#@#.ads-image -t3.com#@#.ads-inline -miuithemers.com#@#.ads-left -hatenacorp.jp,milf300.com#@#.ads-link -forbes.com#@#.ads-loaded -fireload.com#@#.ads-mobile -fuse-box.info#@#.ads-row -juicesky.com#@#.ads-title -pop-music.ir#@#.ads-top -mastersclub.jp#@#.ads.widget -getwallpapers.com,wallpaperaccess.com,wallpapercosmos.com,wallpaperset.com#@#.ads1 -jw.org#@#.adsBlock -cars.mitula.ae#@#.adsList -trustnet.com#@#.ads_right -search.conduit.com#@#.ads_wrapper -alluc.org#@#.adsbottombox -copart.com#@#.adscontainer -starbike.com#@#.adsense_wrapper -live365.com#@#.adshome -javbix.com#@#.adsleft -xda-developers.com#@#.adsninja-ad-zone -cutepdf-editor.com#@#.adtable -gigazine.net#@#.adtag -adamtheautomator.com,mediaite.com,packhacker.com,packinsider.com#@#.adthrive -mediaite.com,packhacker.com,packinsider.com#@#.adthrive-content -mediaite.com,packhacker.com,packinsider.com#@#.adthrive-video-player -kmsv.jp#@#.adtitle -brandexperience-group.com#@#.adv-banner -dobro.systems#@#.adv-box -dobro.systems#@#.adv-list -dobro.systems#@#.advBox -yuik.net#@#.advads-widget -bigcommerce.com#@#.advert-container -labartt.com#@#.advert-detail -jamesedition.com#@#.advert2 -rupors.com#@#.advertSlider -browsershots.org#@#.advert_list -zalora.co.id,zalora.co.th,zalora.com.hk,zalora.com.my,zalora.com.ph,zalora.com.tw,zalora.sg#@#.advertisement-block -wired.com#@#.advertisement__leaderboard -adquick.com,buyout.pro,news.com.au,zlinked.com#@#.advertiser -anobii.com#@#.advertisment -grist.org,ing.dk,version2.dk#@#.advertorial -stjornartidindi.is#@#.adverttext -videosalon.jp#@#.adwidget -staircase.pl#@#.adwords -consumerist.com#@#.after-post-ad -click2houston.com,clickondetroit.com,clickorlando.com,ksat.com,news4jax.com,wsls.com#@#.anyClipWrapper -dailymail.co.uk,thisismoney.co.uk#@#.article-advert -deluxemusic.tv#@#.article_ad -adeam.com#@#.atf-wrapper -dr.dk#@#.banner-ad-container -popporn.com#@#.block-ad -shop.asobistore.jp#@#.block-sponsor -ixbtlabs.com#@#.bottom_ad_block -9l.pl#@#.boxAds -canonsupports.com#@#.box_ads -stuff.tv#@#.c-ad -thedigestweb.com#@#.c-ad-banner -deployhappiness.com,dmitrysotnikov.wordpress.com,faravirusi.com,freedom-shift.net,lovepanky.com,markekaizen.jp,netafull.net,photopoint.com.ua,posh-samples.com#@#.category-ad:not(html):not(body) -business-hack.net,clip.m-boso.net,iine-tachikawa.net,meihong.work#@#.category-ads:not(html):not(body) -accuweather.com,deadline.com,elnuevoherald.com,heraldsun.com,olhardigital.com.br,tvinsider.com#@#.cnx-player-wrapper -studio55.fi#@#.column-ad -huffpost.com#@#.connatix-wrapper -fontspace.com,skyrimcommands.com#@#.container-ads -verizonwireless.com#@#.contentAds -disk.yandex.by,disk.yandex.com,disk.yandex.kz,disk.yandex.ru,disk.yandex.uz,freevoipdeal.com,voipstunt.com,yadi.sk#@#.content_ads -adexchanger.com,gottabemobile.com,mrmoneymustache.com,thinkcomputers.org#@#.custom-ad -roomclip.jp#@#.display-ad -anime-japan.jp#@#.display_ad -humix.com#@#.ez-video-wrap -thestudentroom.co.uk#@#.fixed_ad -songlyrics.com#@#.footer-ad -634929.jp,d-hosyo.co.jp#@#.footer_ads -guloggratis.dk#@#.gallery-ad -davidsilverspares.co.uk#@#.greyAd -forums.digitalspy.com,marketwatch.com#@#.has-ad -si.com#@#.has-fixed-bottom-ad -naver.com#@#.head_ad -infosecurity-magazine.com#@#.header-ad-row -mobiili.fi#@#.header_ad -iedrc.org#@#.home-ad -tpc.googlesyndication.com#@#.img_ad -thelincolnite.co.uk#@#.inline-ad -elektro.info.pl,mashingup.jp#@#.is-sponsored -gizmodo.jp#@#.l-ad -vukajlija.com#@#.large-advert -realgfporn.com#@#.large-right-ad -atea.com,ateadirect.com,knowyourmobile.com,nlk.org.np#@#.logo-ad -doda.jp,tubefilter.com#@#.mainAd -austurfrett.is,boards.4chan.org,boards.4channel.org#@#.middlead -thespruce.com#@#.mntl-leaderboard-spacer -sankei.com#@#.module_ad -seura.fi,www.msn.com#@#.nativead -dogva.com#@#.node-ad -france24.com#@#.o-ad-container -bloomberg.com#@#.page-ad -rottentomatoes.com#@#.page_ad -player.ex.co,theautopian.com#@#.pbs__player -gumtree.com#@#.postad -komplett.dk,komplett.no,komplett.se,komplettbedrift.no,komplettforetag.se,newegg.com#@#.product-ad -newegg.com#@#.product-ads -ebaumsworld.com#@#.promoAd -galaopublicidade.com#@#.publicidade -eneuro.org,jneurosci.org#@#.region-ad-top -offmoto.com#@#.reklama -msn.com#@#.serversidenativead -audioholics.com,classy-online.jp#@#.side-ad -ekitan.com,kissanadu.com#@#.sidebar-ad -independent.com#@#.sidebar-ads -cadlinecommunity.co.uk#@#.sidebar_advert -hebdenbridge.co.uk#@#.smallads -geekwire.com#@#.sponsor_post -toimitilat.kauppalehti.fi#@#.sponsored-article -zdnet.com#@#.sponsoredItem -kingsofchaos.com#@#.textad -k24tv.co.ke#@#.top-ad -cp24.com#@#.topAd -jabank-tokushima.or.jp#@#.top_ad -livesexgirlsrooms.com#@#.top_ads -outinthepaddock.com.au#@#.topads -codedevstuff.blogspot.com,hassiweb-programming.blogspot.com#@#.vertical-ads -ads.google.com,youtube.com#@#.video-ads -livesexgirlsrooms.com#@#.video_ad -livesexgirlsrooms.com#@#.video_ads -javynow.com#@#.videos-ad -elnuevoherald.com,sacbee.com#@#.wps-player-wrap -gumtree.com.au#@#[data-ad-name] -globsads.com#@#[href^="http://globsads.com/"] -mypillow.com#@#[href^="http://mypillow.com/"] > img -mypillow.com#@#[href^="http://www.mypillow.com/"] > img -mypatriotsupply.com#@#[href^="https://mypatriotsupply.com/"] > img -mypillow.com#@#[href^="https://mypillow.com/"] > img -mystore.com#@#[href^="https://mystore.com/"] > img -noqreport.com#@#[href^="https://noqreport.com/"] > img -sinisterdesign.net#@#[href^="https://secure.bmtmicro.com/servlets/"] -herbanomic.com#@#[href^="https://www.herbanomic.com/"] > img -techradar.com#@#[href^="https://www.hostg.xyz/aff_c"] -mypatriotsupply.com#@#[href^="https://www.mypatriotsupply.com/"] > img -mypillow.com#@#[href^="https://www.mypillow.com/"] > img -reimageplus.com#@#[href^="https://www.reimageplus.com/"] -restoro.com#@#[href^="https://www.restoro.com/"] -zstacklife.com#@#[href^="https://zstacklife.com/"] img -amazon.com,cancam.jp,faceyourmanga.com,isc2.org,liverc.com,mit.edu,muscatdaily.com,olx.pl,saitama-np.co.jp,timesofoman.com,virginaustralia.com#@#[id^="div-gpt-ad"] -revimedia.com#@#a[href*=".revimedia.com/"] -dr.dk,smartadserver.de#@#a[href*=".smartadserver.com"] -slickdeals.net#@#a[href*="adzerk.net"] -sweetdeals.com#@#a[href*="https://www.sweetdeals.com/"] img -legacy.com#@#a[href^="http://pubads.g.doubleclick.net/"] -canstar.com.au,mail.yahoo.com#@#a[href^="https://ad.doubleclick.net/"] -badoinkvr.com#@#a[href^="https://badoinkvr.com/"] -free-avx.jp#@#a[href^="https://click.dtiserv2.com/"] -xbdeals.net#@#a[href^="https://click.linksynergy.com/"] -naughtyamerica.com#@#a[href^="https://natour.naughtyamerica.com/track/"] -bookworld.no#@#a[href^="https://ndt5.net/"] -privateinternetaccess.com#@#a[href^="https://www.privateinternetaccess.com/"] -marcpapeghin.com#@#a[href^="https://www.sheetmusicplus.com/"][href*="?aff_id="] -politico.com#@#a[onmousedown^="this.href='https://paid.outbrain.com/network/redir?"][target="_blank"] -heaven-burns-red.com#@#article.ad -play.google.com#@#div[aria-label="Ads"] -news.artnet.com,powernationtv.com,worldsurfleague.com#@#div[data-ad-targeting] -cookinglight.com#@#div[data-native_ad] -googleads.g.doubleclick.net#@#div[id^="ad_position_"] -out.com#@#div[id^="dfp-ad-"] -cancam.jp,saitama-np.co.jp#@#div[id^="div-gpt-"] -xdpedia.com#@#div[id^="ezoic-pub-ad-"] -forums.overclockers.ru#@#div[id^="yandex_ad"] -!! ins.adsbygoogle -advancedrenamer.com,androidrepublic.org,anonymousemail.me,apkmirror.com,cdromance.com,demos.krajee.com,epicbundle.com,kadinlarkulubu.com,korail.pe.kr,nextbigtrade.com,phcorner.net,pixiz.com,spoilertv.com,teemo.gg,willyoupressthebutton.com#@#ins.adsbygoogle[data-ad-client] -advancedrenamer.com,androidrepublic.org,anonymousemail.me,apkmirror.com,cdromance.com,demos.krajee.com,epicbundle.com,kadinlarkulubu.com,korail.pe.kr,nextbigtrade.com,phcorner.net,pixiz.com,spoilertv.com,teemo.gg,willyoupressthebutton.com#@#ins.adsbygoogle[data-ad-slot] -!! .adslot -apkmirror.com,tuxpi.com#@#.adslot -!! .adverts -bavaria86.com,ransquawk.com,tf2r.com,trh.sk#@#.adverts -! webike domains, fix broken page -japan-webike.be,japan-webike.ca,japan-webike.ch,japan-webike.dk,japan-webike.ie,japan-webike.it,japan-webike.kr,japan-webike.nl,japan-webike.se,webike-china.cn,webike.ae,webike.co.at,webike.co.hu,webike.co.il,webike.co.uk,webike.com.ar,webike.com.bd,webike.com.gr,webike.com.kh,webike.com.mm,webike.com.ru,webike.com.tr,webike.com.ua,webike.cz,webike.de,webike.es,webike.fi,webike.fr,webike.hk,webike.id,webike.in,webike.la,webike.mt,webike.mx,webike.my,webike.net,webike.net.br,webike.net.pl,webike.ng,webike.no,webike.nz,webike.ph,webike.pk,webike.pt,webike.sg,webike.tw#@#.ad_box -japan-webike.be,japan-webike.ca,japan-webike.ch,japan-webike.dk,japan-webike.ie,japan-webike.it,japan-webike.kr,japan-webike.nl,japan-webike.se,webike-china.cn,webike.ae,webike.co.at,webike.co.hu,webike.co.il,webike.co.uk,webike.com.ar,webike.com.bd,webike.com.gr,webike.com.kh,webike.com.mm,webike.com.ru,webike.com.tr,webike.com.ua,webike.cz,webike.de,webike.es,webike.fi,webike.fr,webike.hk,webike.id,webike.in,webike.la,webike.mt,webike.mx,webike.my,webike.net,webike.net.br,webike.net.pl,webike.ng,webike.no,webike.nz,webike.ph,webike.pk,webike.pt,webike.sg,webike.tw#@#.ad_title -! Anti-Adblock -spoilertv.com#@##adsensewide -browsershots.org#@#.advert_area -!---------------------------Third-party advertisers---------------------------! -! *** easylist:easylist/easylist_adservers.txt *** -||0008d6ba2e.com^ -||0024ad98dd.com^ -||00d3ed994e.com^ -||00d84987c0.com^ -||012024jhvjhkozekl.space^ -||01220b75a7.com^ -||0127c96640.com^ -||01c70a2a06.com^ -||01counter.com^ -||01d0c91c0d.com^ -||01jud3v55z.com^ -||0265331.com^ -||02aa19117f396e9.com^ -||02ce917efd.com^ -||0342b40dd6.com^ -||03505ed0f4.com^ -||03bdb617ed.com^ -||03ed9035a0801f.com^ -||03eea1b6dd.com^ -||04-f-bmf.com^ -||041353e6dd.com^ -||04c8b396bf.com^ -||04cb2afab7.com^ -||04e0d8fb0f.com^ -||059e71004b.com^ -||05e11c9f6f.com^ -||063f828cf2.com^ -||0676el9lskux.top^ -||06a21eff24.com^ -||06e293435c.com^ -||070880.com^ -||072c4580e8.com^ -||0760571ca9.com^ -||07a1624bd7.com^ -||0819478661.com^ -||08666f3ca4.com^ -||0898hhh.com^ -||0926a687679d337e9d.com^ -||097be55da0.com^ -||09b074f4cf.com^ -||09b1fcc95e.com^ -||0a0d-d3l1vr.b-cdn.net^ -||0a8d87mlbcac.top^ -||0ac56fb52b.com^ -||0af2a962b0102942d9a7df351b20be55.com^ -||0b0db57b5f.com^ -||0b73f85f92.com^ -||0b7741a902.com^ -||0b85c2f9bb.com^ -||0cdn.xyz^ -||0cf.io^ -||0d4936c8fd.com^ -||0e157d2cfa.com^ -||0e78376a1b.com^ -||0eade9dd8d.com^ -||0eijh8996i.com^ -||0emn.com^ -||0f461325bf56c3e1b9.com^ -||0fc7ac6ea7.com^ -||0fmm.com^ -||0gw7e6s3wrao9y3q.pro^ -||0i0i0i0.com^ -||0ijvby90.skin^ -||0l1201s548b2.top^ -||0pyn37dv3m.com^ -||0redirb.com^ -||0redird.com^ -||0sntp7dnrr.com^ -||0sywjs4r1x.com^ -||0w1rqq69fi0e.com^ -||0x01n2ptpuz3.com^ -||101m3.com^ -||103092804.com^ -||1090pjopm.de^ -||10desires.com^ -||10nvejhblhha.com^ -||10q6e9ne5.de^ -||10skhbdhjfsdf100.monster^ -||10sn95to9.de^ -||11g1ip22h.de^ -||11supjav.xyz^ -||12112336.pix-cdn.org^ -||1221e236c3f8703.com^ -||123-movies.bz^ -||1239feffd9.com^ -||123camquiz.com^ -||123movies.to^ -||123w0w.com^ -||12573ddd51.com^ -||12a640bb5e.com^ -||12bf8fb111.com^ -||12ezo5v60.com^ -||130gelh8q.de^ -||13199960a1.com^ -||137kfj65k.de^ -||13b3403320.com^ -||13b696a4c1.com^ -||13p76nnir.de^ -||148dfe140d0f3d5e.com^ -||14cpoff22.de^ -||14f72e5e3d.com^ -||14fefmsjd.de^ -||14i8trbbx4.com^ -||154886c13e.com^ -||15cacaospice63nhdk.com^ -||15d113e19a.com^ -||16-merchant-s.com^ -||16iis7i2p.de^ -||16pr72tb5.de^ -||1704598c25.com^ -||17772175ab.com^ -||17co2k5a.de^ -||17do048qm.de^ -||17e792897a.com^ -||17f0ec344c.com^ -||17fffd951d.com^ -||181m2fscr.de^ -||184c4i95p.de^ -||18788fdb24.com^ -||18tlm4jee.de^ -||19273817.com^ -||19515bia.de^ -||19528681.com^ -||1a65658575.com^ -||1a714ee67c.com^ -||1a8f9rq9c.de^ -||1aqi93ml4.de^ -||1b14e0ee42d5e195c9aa1a2f5b42c710.com^ -||1b264a0ca0.com^ -||1b32caa655.com^ -||1b3tmfcbq.de^ -||1b8873d66e.com^ -||1b9cvfi0nwxqelxu.pro^ -||1be76e820d.com^ -||1betandgonow.com^ -||1bf00b950c.com^ -||1bm3n8sld.de^ -||1c447fc5b7.com^ -||1c7cf19baa.com^ -||1ccbt.com^ -||1cctcm1gq.de^ -||1ckbfk08k.de^ -||1db10dd33b.com^ -||1dtdsln1j.de^ -||1empiredirect.com^ -||1ep.co^ -||1ep2l1253.de^ -||1f1c1d50fe.com^ -||1f6bf6f5a3.com^ -||1f7eece503.com^ -||1f84e33459.com^ -||1f87527dc9.com^ -||1f98dc1262.com^ -||1fd92n6t8.de^ -||1fluxx-strean.com^ -||1freestyl3domain.com^ -||1fwjpdwguvqs.com^ -||1g46ls536.de^ -||1gbjadpsq.de^ -||1hkmr7jb0.de^ -||1i8c0f11.de^ -||1igare0jn.de^ -||1itot7tm.de^ -||1j02claf9p.pro^ -||1j771bhgi.de^ -||1jpbh5iht.de^ -||1jsskipuf8sd.com^ -||1jutu5nnx.com^ -||1kanz.cn^ -||1knhg4mmq.de^ -||1lbk62l5c.de^ -||1lj11b2ii.de^ -||1m72cfole.de^ -||1mrmsp0ki.de^ -||1nfltpsbk.de^ -||1nimo.com^ -||1nqrqa.de^ -||1ns1rosb.de^ -||1odi7j43c.de^ -||1p1eqpotato.com^ -||1p8ln1dtr.de^ -||1phads.com^ -||1pqfa71mc.de^ -||1push.io^ -||1r4g65b63.de^ -||1r8435gsqldr.com^ -||1redira.com^ -||1redirb.com^ -||1redirc.com^ -||1rx.io^ -||1rxntv.io^ -||1s1r7hr1k.de^ -||1sqfobn52.de^ -||1starwarstx1.com^ -||1talking.net^ -||1tds26q95.de^ -||1ts03.top^ -||1ts07.top^ -||1ts17.top^ -||1ts19.top^ -||1uno1xkktau4.com^ -||1web.me^ -||1winpost.com^ -||1wtwaq.xyz^ -||1xlite-503779.top^ -||1xlite-522762.top^ -||1xroom.com^ -||2020mustang.com^ -||2022welcome.com^ -||2024jphatomenesys36.top^ -||2066401308.com^ -||206ads.com^ -||20dollars2surf.com^ -||20l2ldrn2.de^ -||20trackdomain.com^ -||20tracks.com^ -||2122aaa0e5.com^ -||2137dc12f9d8.com^ -||2158novffp.com^ -||218emo1t.de^ -||21hn4b64m.de^ -||21sexturycash.com^ -||21wiz.com^ -||22081b1c58.com^ -||2295b1e0bd.com^ -||22b73ca99a.com^ -||22blqkmkg.de^ -||22ddebb169.com^ -||22gui20230801.live^ -||22lmsi1t5.de^ -||22media.world^ -||231dasda3dsd.aniyae.com^ -||234f6ce965.com^ -||24-sportnews.com^ -||240aca2365.com^ -||2435march2024.com^ -||2447march2024.com^ -||2449march2024.com^ -||244kecmb3.de^ -||2469april2024.com^ -||2471april2024.com^ -||2473april2024.com^ -||2475april2024.com^ -||2479april2024.com^ -||247dbf848b.com^ -||2481april2024.com^ -||2499may2024.com^ -||249c9885c1.com^ -||24affiliates.com^ -||24newstech.com^ -||24s1b0et1.de^ -||24x7adservice.com^ -||25073bb296.com^ -||250f0ma86.de^ -||250f851761.com^ -||254a.com^ -||258a912d15.com^ -||259luxu.xyz^ -||25obpfr.de^ -||2639iqjkl.de^ -||26485.top^ -||2685da0b4d.com^ -||268stephe5en3king.com^ -||26q4nn691.de^ -||2799f73c61.com^ -||27igqr8b.de^ -||27vckaccbto7p761.pro^ -||28e096686b.com^ -||291hkcido.de^ -||295a9f642d.com^ -||2989f3f0ff.com^ -||29apfjmg2.de^ -||29d65cebb82ef9f.com^ -||29s55bf2.de^ -||2a1b1657c6.com^ -||2a2k3aom6.de^ -||2a4722f5ee.com^ -||2a4snhmtm.de^ -||2a6d9e5059.com^ -||2aefgbf.de^ -||2b15b8e193.com^ -||2b2359b518.com^ -||2b2b3adee6.com^ -||2b9957041a.com^ -||2bd1f18377.com^ -||2bps53igop02.com^ -||2c3a97984f45.com^ -||2c4rrl8pe.de^ -||2c6bcbbb82ce911.com^ -||2cjlj3c15.de^ -||2cnjuh34jbman.com^ -||2cnjuh34jbpoint.com^ -||2cnjuh34jbstar.com^ -||2d283cecd5.com^ -||2d6g0ag5l.de^ -||2df0b2e308.com^ -||2e4b7fc71a.com^ -||2e754b57ca.com^ -||2e8dgn8n0e0l.com^ -||2ecfa1db15.com^ -||2f1969b0e8.com^ -||2f1a1a7f62.com^ -||2f2bef3deb.com^ -||2f72472ace.com^ -||2fb8or7ai.de^ -||2fgrrc9t0.de^ -||2fnptjci.de^ -||2g2kaa598.de^ -||2gg6ebbhh.de^ -||2go7v1nes8.com^ -||2h6skj2da.de^ -||2hdn.online^ -||2heaoc.com^ -||2hisnd.com^ -||2hpb1i5th.de^ -||2i30i8h6i.de^ -||2i87bpcbf.de^ -||2iiyrxk0.com^ -||2imon4qar.de^ -||2jmis11eq.de^ -||2jod3cl3j.de^ -||2k6eh90gs.de^ -||2kn40j226.de^ -||2llmonds4ehcr93nb.com^ -||2lqcd8s9.de^ -||2ltm627ho.com^ -||2lwlh385os.com^ -||2m3gdt0gc.de^ -||2m55gqleg.de^ -||2mf9kkbhab31.com^ -||2mg2ibr6b.de^ -||2mke5l187.de^ -||2mo3neop.de^ -||2nn7r6bh1.de^ -||2om93s33n.de^ -||2p1kreiqg.de^ -||2pc6q54ga.de^ -||2qj7mq3w4uxe.com^ -||2rb5hh5t6.de^ -||2re6rpip2.de^ -||2rlgdkf7s.de^ -||2rmifan7n.de^ -||2s02keqc1.com^ -||2s2enegt0.de^ -||2smarttracker.com^ -||2spdo6g9h.de^ -||2t4f7g9a.de^ -||2ta5l5rc0.de^ -||2tfg9bo2i.de^ -||2tlc698ma.de^ -||2tq7pgs0f.de^ -||2track.info^ -||2trafficcmpny.com^ -||2ts55ek00.de^ -||2ucz3ymr1.com^ -||3-mobiappu.com^ -||300daytravel.com^ -||302kslgdl.de^ -||3034f47ff3.com^ -||303ag0nc7.de^ -||303marketplace.com^ -||305421ba72.com^ -||3071caa5ff.com^ -||307i6i7do.de^ -||308d13be14.com^ -||30986g8ab.de^ -||30b9e3a7d7e2b.com^ -||30d5shnjq.de^ -||30hccor10.de^ -||30koqnlks.de^ -||30m4hpei1.de^ -||30p70ar8m.de^ -||30pk41r1i.de^ -||30se9p8a0.de^ -||30tgh64jp.de^ -||3120jpllh.de^ -||314gqd3es.de^ -||316feq0nc.de^ -||317796hmh.de^ -||318pmmtrp.de^ -||3192a7tqk.de^ -||31aceidfj.de^ -||31aqn13o6.de^ -||31bqljnla.de^ -||31cm5fq78.de^ -||31d6gphkr.de^ -||31daa5lnq.de^ -||31def61c3.de^ -||31o0jl63.de^ -||321naturelikefurfuroid.com^ -||3221dkf7m2.com^ -||329efb045e.com^ -||32c981a85a.com^ -||330e4e8090.com^ -||3338635.com^ -||341k4gu76ywe.top^ -||3467b7d02e.com^ -||34710af267.com^ -||34pavouhj7.com^ -||357dbd24e2.com^ -||35volitantplimsoles5.com^ -||360popads.com^ -||360protected.com^ -||360yield-basic.com^ -||360yield.com^ -||366226193c.com^ -||367p.com^ -||36b7ca5028.com^ -||37.44x.io^ -||38d9953876.com^ -||38dbfd540c.com^ -||38ds89f8.de^ -||39268ea911.com^ -||395b8c2123.com^ -||39e6p9p7.de^ -||39f204776a.com^ -||39irqwnzlv.com^ -||3a17d27bf9.com^ -||3a98f4e936.com^ -||3b1ac6ca25.com^ -||3bc9b1b89c.com^ -||3bfcfaa8c8.com^ -||3c96ce165a.com^ -||3cbc749ccf.com^ -||3d5affba28.com^ -||3dfcff2ec15099df0a24ad2cee74f21a.com^ -||3e6072834f.com^ -||3e72982861.com^ -||3e950d4353.com^ -||3ead4fd497.com^ -||3edcc83467.com^ -||3fa244b7eb.com^ -||3fc0ebfea0.com^ -||3fwlr7frbb.pro^ -||3g25ko2.de^ -||3gbqdci2.de^ -||3haiaz.xyz^ -||3i1cx7b9nupt.com^ -||3j8c56p9.de^ -||3lift.com^ -||3lr67y45.com^ -||3mhg.online^ -||3mhg.site^ -||3myad.com^ -||3ng6p6m0.de^ -||3qfe1gfa.de^ -||3redlightfix.com^ -||3sk7d418al8u.com^ -||3twentyfour.xyz^ -||3wr110.net^ -||3xbrh4rxsvbl.top^ -||4-interads.com^ -||40209f514e.com^ -||407433bfc441.com^ -||4087aa0dc1.com^ -||40ceexln7929.com^ -||42a5d530ec972d8994.com^ -||42ce2b0955.com^ -||42d61f012e27b36d53.com^ -||42e228ef6f.com^ -||42jdbcb.de^ -||43e1628a5f.com^ -||43ors1osh.com^ -||43sjmq3hg.com^ -||43t53c9e.de^ -||44288fa514.com^ -||442fc29954.com^ -||445d1bd01a.com^ -||44a9217f10.com^ -||44e29c19ac.com^ -||44ffd27303.com^ -||452tapgn.de^ -||453130fa9e.com^ -||46186911.vtt^ -||46243b6252.com^ -||463fca0d34.com^ -||466f89f4d1.com^ -||4690y10pvpq8.com^ -||46bd8e62a2.com^ -||46f4vjo86.com^ -||47aead8f05.com^ -||47c8d48301.com^ -||485f197673.com^ -||4901967b4b.com^ -||493b98cce8bc1a2dd.com^ -||49b6b77e56.com^ -||4a136c118e.com^ -||4a167ec12d.com^ -||4a9517991d.com^ -||4b215e3bcf.com^ -||4b41484f8e.com^ -||4b6994dfa47cee4.com^ -||4b7140e260.com^ -||4c935d6a244f.com^ -||4co7mbsb.de^ -||4d15ee32c1.com^ -||4d3278a1fa.com^ -||4d658ab856.com^ -||4d76a0f3a8.com^ -||4da1c65ac2.com^ -||4dex.io^ -||4dsbanner.net^ -||4dtrk.com^ -||4e0622e316.com^ -||4e645c7cf2.com^ -||4ec2e6f324.com^ -||4ed196b502.com^ -||4ed5560812.com^ -||4f2sm1y1ss.com^ -||4f369824ed.com^ -||4f4e1936f7.com^ -||4fb0cadcc3.com^ -||4fef80eb73.com^ -||4ffecd1ee4.com^ -||4g0b1inr.de^ -||4hfchest5kdnfnut.com^ -||4i-app-mobile.com^ -||4kggatl1p7ps.top^ -||4kmovies.online^ -||4lke.online^ -||4luckyf.com^ -||4p74i5b6.de^ -||4rabettraff.com^ -||4tnui5r06j62.com^ -||4wnet.com^ -||4wnetwork.com^ -||5-internads-7.com^ -||50382fd2f1.com^ -||506f94d3ef.com^ -||50745a9d63.com^ -||5165c0c080.com^ -||5236b66b81.com^ -||52dvzo62i.com^ -||52ee3dc5fe.com^ -||532xcxypmpnp.com^ -||536fbeeea4.com^ -||539f346355.com^ -||53c2dtzsj7t1.top^ -||53e91a4877.com^ -||544c1a86a1.com^ -||550b3ikb9j.com^ -||561e861cb4.com^ -||562i7aqkxu.com^ -||5661361104.com^ -||5661c81449.com^ -||5685dceb1b.com^ -||56bfc388bf12.com^ -||56rt2692.de^ -||5726303d87522d05.com^ -||57d38e3023.com^ -||582155316e.com^ -||58802ce8d9.com^ -||589aa99d18.com^ -||590578zugbr8.com^ -||592749d456.com^ -||598f0ce32f.com^ -||59a3e34c69.com^ -||59e5e13578.com^ -||59e6ea7248001c.com^ -||59eb44884d.com^ -||5a6c114183.com^ -||5advertise.com^ -||5b10f288ee.com^ -||5b3fbababb.com^ -||5btekl14.de^ -||5c01ad4cb7.com^ -||5c58619ab5.com^ -||5ca59a669a.com^ -||5caa478343.com^ -||5cbbdb4434.com^ -||5cf8606941.com^ -||5d8dd0486a.com^ -||5e6ef8e03b.com^ -||5eef1ed9ac.com^ -||5f6dmzflgqso.com^ -||5f6efdfc05.com^ -||5f93004b68.com^ -||5fet4fni.de^ -||5h3oyhv838.com^ -||5i68sbhin.com^ -||5icim50.de^ -||5mno3.com^ -||5nfc.net^ -||5nt1gx7o57.com^ -||5o8aj5nt.de^ -||5odjin7ipi.com^ -||5ovrmmmoubi71efvatfd.com^ -||5pi13h3q.de^ -||5pykpdq7k.com^ -||5toft8or7on8tt.com^ -||5umpz4evlgkm.com^ -||5vbs96dea.com^ -||5vpbnbkiey24.com^ -||5wuefo9haif3.com^ -||5xd3jfwl9e8v.com^ -||6-partner.com^ -||6001628d3d.com^ -||600z.com^ -||6061de8597.com^ -||6068a17eed25.com^ -||606943792a.com^ -||60739ebc42.com^ -||61-nmobads.com^ -||61598081d6.com^ -||61739011039d41a.com^ -||6179b859b8.com^ -||61zdn1c9.skin^ -||6207684432.com^ -||62b70ac32d4614b.com^ -||62ca04e27a.com^ -||63912b9175.com^ -||63r2vxacp0pr.com^ -||63voy9ciyi14.com^ -||641198810fae7.com^ -||648c44a31f.com^ -||648d969d69.com^ -||649ce954a0.com^ -||6593167243.com^ -||65bfba9ad0.com^ -||65f249bd43.com^ -||65mjvw6i1z.com^ -||65vk1fba34.com^ -||665166e5a9.com^ -||669fb3128e4b4.com^ -||67trackdomain.com^ -||68069795d1.com^ -||68109deb96.com^ -||6810f7dd2b.com^ -||6863fd0afc.com^ -||688de7b3822de.com^ -||68amt53h.de^ -||68aq8q352.com^ -||68d6b65e65.com^ -||69852b1734.com^ -||699bfcf9d9.com^ -||69b61ba7d6.com^ -||69i.club^ -||69oxt4q05.com^ -||69v.club^ -||6a34d15d38.com^ -||6af461b907c5b.com^ -||6b70b1086b.com^ -||6b856ee58e.com^ -||6bgaput9ullc.com^ -||6cadb63a7a.com^ -||6ce02869b9.com^ -||6de72955d8.com^ -||6e391732a2.com^ -||6ec7e42994.com^ -||6ef2279e3d.com^ -||6f752f73ce.com^ -||6fxtpu64lxyt.com^ -||6glece4homah8dweracea.com^ -||6hdw.site^ -||6j296m8k.de^ -||6kportot.com^ -||6l1twlw9fy.com^ -||6ped2nd3yp.com^ -||6qu5dcmyumtw.com^ -||6snjvxkawrtolv2x.pro^ -||6ujk8x9soxhm.com^ -||6v41p4bsq.com^ -||6zy9yqe1ew.com^ -||7-7-7-partner.com^ -||7-itrndsbrands.com^ -||71692fai4cc0.com^ -||71a30cae934e.com^ -||71d7511a4861068.com^ -||71dd1ff9fd.com^ -||71ec0646e6.com^ -||721ffc3ec5.com^ -||722cba612c.com^ -||7253d56acf.com^ -||72hdgb5o.de^ -||73-j-pinnable.com^ -||734b84bb92.com^ -||7378e81adf.com^ -||73a70e581b.com^ -||7411603f57.com^ -||741a18df39.com^ -||751685e7fa.com^ -||754480bd33.com^ -||76416dc840.com^ -||76a7doiet256.com^ -||76f74721ab.com^ -||771703f2e9.com^ -||7757139f7b.com^ -||775cf6f1ae.com^ -||776173f9e6.com^ -||777seo.com^ -||77ad133646.com^ -||77bd7b02a8.com^ -||7807091956.com^ -||78359c0779.com^ -||78387c2566.com^ -||7868d5c036.com^ -||788aefb4ed.com^ -||78a3dd3c86.com^ -||78bk5iji.de^ -||78e70720f2.com^ -||7944bcc817.com^ -||79b1c4498b.com^ -||79c4215c89.com^ -||79c89ec81a.com^ -||79dc3bce9d.com^ -||79k52baw2qa3.com^ -||79xmz3lmss.com^ -||7a994c3318.com^ -||7abf0af03c.com^ -||7anfpatlo8lwmb.com^ -||7app.top^ -||7b763dbdf3.com^ -||7bchhgh.de^ -||7c0616849b.com^ -||7ca78m3csgbrid7ge.com^ -||7cc70.com^ -||7d3656bee3.com^ -||7da3a14504.com^ -||7df1f04330.com^ -||7dshfewr-0ewfivjkys.xyz^ -||7ee4c0f141.com^ -||7fc0966988.com^ -||7ff83b4a34.com^ -||7fkm2r4pzi.com^ -||7fva8algp45k.com^ -||7hor9gul4s.com^ -||7hu8e1u001.com^ -||7insight.com^ -||7jrahgc.de^ -||7lyonline.com^ -||7me0ssd6.de^ -||7mediaxx-ai.com^ -||7nt9p4d4.de^ -||80055404.vtt^ -||8105bfd0ff.com^ -||81438456aa.com^ -||8170a1da9e.com^ -||82308721ac.com^ -||82448dceaaa13034.com^ -||827fa7c868b4b.com^ -||82b5cc6199.com^ -||8353e36c2a.com^ -||845d6bbf60.com^ -||847h7f51.de^ -||8499583.com^ -||84aa71fc7c.com^ -||84c08fdae0.com^ -||84cd8c4d7e.com^ -||84f101d1bb.com^ -||8509717d76.com^ -||8578eb3ec8.com^ -||864feb57ruary.com^ -||869cf3d7e4.com^ -||86aa86d2f4.com^ -||87bcb027cf.com^ -||884de19f2b.com^ -||888promos.com^ -||88d7b6aa44fb8eb.com^ -||88eq7spm.de^ -||8964c6de00.com^ -||89dfa3575e.com^ -||8a00fb3fc1.com^ -||8bb92fbed8.com^ -||8c771f7ea1.com^ -||8d1dce99ab.com^ -||8d68be1445.com^ -||8d8e6d1087.com^ -||8d96fe2f01.com^ -||8db4fde90b.com^ -||8de2448875.com^ -||8dfc9560e0.com^ -||8e6d77310c.com^ -||8ec9b7706a.com^ -||8f2b4c98e7.com^ -||8f72931b99.com^ -||8gs4unh05aq6.com^ -||8j1f0af5.de^ -||8jay04c4q7te.com^ -||8jl11zys5vh12.pro^ -||8kj1ldt1.de^ -||8n67t.com^ -||8po6fdwjsym3.com^ -||8s32e590un.com^ -||8stream-ai.com^ -||8trd.online^ -||8wtkfxiss1o2.com^ -||90935ff0ea.com^ -||90e7fd481d.com^ -||90f2a627a3.com^ -||910de7044f.com^ -||91199a.xyz^ -||9119fa4031.com^ -||9159f9a13d.com^ -||916cad6201.com^ -||91cd3khn.de^ -||91df02fe64.com^ -||92f77b89a1b2df1b539ff2772282e19b.com^ -||93c398a59e.com^ -||93savmobile-m.com^ -||943d6e0643.com^ -||94ded8b16e.com^ -||95f39c9d5f.com^ -||95p5qep4aq.com^ -||95ppq87g.de^ -||95urbehxy2dh.top^ -||96424fcd96.com^ -||9738624519.com^ -||973e017e67.com^ -||97927e3b4d.com^ -||97d73lsi.com^ -||994e4a6044.com^ -||997b409959.com^ -||9996777888.com^ -||99fe352223.com^ -||9a0569b55e.com^ -||9a52364ae8.com^ -||9a55672b0c.com^ -||9a7c81f58e.com^ -||9a857c6721.com^ -||9ads.mobi^ -||9af022123c.com^ -||9analytics.live^ -||9bbbabcb26.com^ -||9bf9309f6f.com^ -||9ca976adbb.com^ -||9cbj41a5.de^ -||9cd76b4462bb.com^ -||9content.com^ -||9d2cca15e4.com^ -||9d407e803d.com^ -||9d603009eb.com^ -||9dccbda825.com^ -||9dmnv9z0gtoh.com^ -||9e1852531b.com^ -||9eb0538646.com^ -||9eb10b7a3d04a.com^ -||9ee93ebe3a.com^ -||9efc2a7246.com^ -||9f50508b3c.com^ -||9gg23.com^ -||9japride.com^ -||9l5ss9l.de^ -||9purdfe9xg.com^ -||9r7i9bo06157.top^ -||9s4l9nik.de^ -||9t5.me^ -||9tp9jd4p.de^ -||9tumza4dp4o9.com^ -||9v58v.com^ -||9xeqynu3gt7c.com^ -||9xob25oszs.com^ -||a-94interdads.com^ -||a-ads.com^ -||a-b-c-d.xyz^ -||a-mo.net^ -||a-waiting.com^ -||a00s.net^ -||a06bbd98194c252.com^ -||a11d3c1b4d.com^ -||a11k.com^ -||a14net.com^ -||a14refresh.com^ -||a14tdsa.com^ -||a15c5009bcbe272.com^ -||a166994a16.com^ -||a1c99093b6.com^ -||a1hosting.online^ -||a2nn5eri7ce.com^ -||a2tw6yoodsag.com^ -||a31711123d.com^ -||a317654204.com^ -||a32d9f2cc6.com^ -||a32fc87d2f.com^ -||a356ff8a25.com^ -||a3595ccd38.com^ -||a3ion.com^ -||a3yqjsrczwwp.com^ -||a41bd55af8.com^ -||a44c39fc52.com^ -||a48d53647a.com^ -||a4mt150303tl.com^ -||a5b80ef67b.com^ -||a5ff528ff9.com^ -||a5g.oves.biz^ -||a5game.win^ -||a5jogo.biz^ -||a5jogo.club^ -||a6436650df.com^ -||a64x.com^ -||a69i.com^ -||a6dc99d1a8.com^ -||a700fb9c8d.com^ -||a717b6d31e.com^ -||a718917a44.com^ -||a899228ebf.com^ -||a8rm1m4msbbh.com^ -||a9ae7df45f.com^ -||aaa.vidox.net^ -||aaaaaco.com^ -||aaacdbf17d.com^ -||aaacompany.net^ -||aab-check.me^ -||aabbfwupxfbcrz.com^ -||aabproxydomaintests.top^ -||aabproxytests.top^ -||aabproxytestsdomain.top^ -||aabrsjmsgqnltc.com^ -||aabtestsproxydomain.top^ -||aac585e70c.com^ -||aactxwic.com^ -||aaeqnqqbs.com^ -||aaf26c0e6a.com^ -||aafdcq.com^ -||aagm.link^ -||aajqiygsnczvq.com^ -||aalawrjgamoeofv.com^ -||aamxzlsywu.com^ -||aapgtvaqpvl.com^ -||aarfmftslfz.com^ -||aarghclothy.com^ -||aarswtcnoz.com^ -||aaseovhxkkggtxj.com^ -||aawdlvr.com^ -||aaxads.com^ -||aayeuxotc.com^ -||ab1n.net^ -||ab3yssin4i6an.com^ -||ab4tn.com^ -||ab913aa797e78b3.com^ -||ab93t2kc.de^ -||ab97114bda.com^ -||abadit5rckb.com^ -||abamatoyer.com^ -||abange.com^ -||abaolokvmmvlv.top^ -||abaolokvmmvvm.top^ -||abarbollidate.com^ -||abashfireworks.com^ -||abasshowish.guru^ -||abateall.com^ -||abatorsgleir.com^ -||abattoirpleatsprinkle.com^ -||abayfliffus.com^ -||abazelfan.com^ -||abbayeaedile.top^ -||abberantbeefy.com^ -||abberantdiscussion.com^ -||abberantdoggie.com^ -||abbeyintervalfetched.com^ -||abbotinexperienced.com^ -||abbotpredicateemma.com^ -||abbreviateenlargement.com^ -||abbreviatepoisonousmonument.com^ -||abbronzongor.com^ -||abbtrupp.com^ -||abburmyer.com^ -||abcconducted.com^ -||abchygmsaftnrr.xyz^ -||abciwvjp.com^ -||abclefabletor.com^ -||abcogzozbk.com^ -||abcporntube.com^ -||abdicatehorrified.com^ -||abdicatesyrupwhich.com^ -||abdict.com^ -||abdlnk.com^ -||abdlnkjs.com^ -||abdomscrae.com^ -||abdsp.com^ -||abdurantom.com^ -||abedbrings.com^ -||abederemoras.top^ -||abedgobetweenbrittle.com^ -||abedwest.com^ -||abeenrwvyrew.top^ -||abeenrwvyyre.top^ -||abelekidr.com^ -||abelestheca.com^ -||abencwrmt.com^ -||abethow.com^ -||abevc.club^ -||abgeobalancer.com^ -||abgligarchan.com^ -||abh.jp^ -||abhorboring.com^ -||abhorcarious.com^ -||abiderestless.com^ -||abjectionblame.com^ -||abjectionomnipresent.com^ -||abjectionpatheticcoloured.com^ -||abjmkkowbomwa.top^ -||abkajbvozmbwa.top^ -||abkmbrf.com^ -||abkoxlikbzs.com^ -||abkynrclyom.com^ -||ablatesgascon.cam^ -||ableandworld.info^ -||ablebodiedsweatisolated.com^ -||ablecolony.com^ -||abletoprese.org^ -||ablitleoor.com^ -||ablkkukpaoc.com^ -||abluentshinny.com^ -||abluvdiscr.com^ -||ablybeastssarcastic.com^ -||ablyinviting.com^ -||abmismagiusom.com^ -||abmunnaa.com^ -||abnegationbanquet.com^ -||abnegationdenoteimprobable.com^ -||abnegationsemicirclereproduce.com^ -||abnormalgently.com^ -||abnormalmansfield.com^ -||abnormalwidth.com^ -||abnrkespuk.com^ -||aboardhotdog.com^ -||aboarea.com^ -||abochro.com^ -||abodedistributionpan.com^ -||aboenab.com^ -||abohara.com^ -||abolaed.com^ -||abolid.com^ -||abolishmentengaged.com^ -||abombu.com^ -||abominebootee.top^ -||abomisi.com^ -||abonnementpermissiveenliven.com^ -||abopeol.com^ -||aboriginalhubby.com^ -||abortingulf.top^ -||abortsrefront.top^ -||aboucaih.com^ -||aboung.com^ -||aboutpersonify.com^ -||abouttill.com^ -||aboveboardstunning.com^ -||aboveredirect.top^ -||abovethecityo.com^ -||abparasr.com^ -||abpicsrc.com^ -||abpjs23.com^ -||abqmfewisf.com^ -||abqnupogcwhi.com^ -||abrasivematch.com^ -||abrhydona.com^ -||abridebouch.com^ -||abridgeoverwhelmfireball.com^ -||abridgesynchronizepleat.com^ -||abruptcompliments.com^ -||abruptlydummy.com^ -||abruptlyretortedbat.com^ -||abruptnesscarrier.com^ -||abruptradishnotwithstanding.com^ -||abruth.com^ -||absentcleannewspapers.com^ -||absentlybiddingleopard.com^ -||absentlygratefulcamomile.com^ -||absentlymoreoverwell.com^ -||absentlyrindbulk.com^ -||abservinean.com^ -||abseydeveled.com^ -||absjcirtbhm.com^ -||abskursin.com^ -||abslroan.com^ -||absolosisa.com^ -||absolutechapelequation.com^ -||absolutelyconfession.com^ -||absolutelytowns.com^ -||absoluteroute.com^ -||absolutionexpert.com^ -||absolvecarriagenotify.com^ -||absolveparticlesanti.com^ -||absorbedscholarsvolatile.com^ -||absorbedswept.com^ -||absorbinginject.com^ -||absorbingwiden.com^ -||absorptionpersonalforesee.com^ -||absorptionsuspended.com^ -||abstaininquisitive.com^ -||absump.com^ -||absurdunite.com^ -||abtaurosa.club^ -||abtfliping.top^ -||abtrcker.com^ -||abtyroguean.com^ -||abtyroguer.com^ -||abuliasbubber.com^ -||abundantservantexact.com^ -||abundantsurroundvacation.com^ -||aburbangambang.com^ -||abusedbabysitters.com^ -||abusedthrown.com^ -||abusiveserving.com^ -||abvnypoqcgmh.com^ -||abvoltssilen.top^ -||abwattfrutex.com^ -||abwhyag.com^ -||abwlrooszor.com^ -||abyamaskor.com^ -||abyescaplock.guru^ -||abzjkaridcit.com^ -||ac35e1ff43.com^ -||acacdn.com^ -||academic-information.com^ -||academicvast.com^ -||academyblocked.com^ -||academyenrage.com^ -||acalraiz.xyz^ -||acam-2.com^ -||acaussee.net^ -||acbbpadizl.com^ -||acbc68e83c.com^ -||acbcamapztca.com^ -||accahurkaru.com^ -||accbxepcls.com^ -||accdhcxcbzck.com^ -||acce3bc0f4.com^ -||accecmtrk.com^ -||accedeethnic.com^ -||accedemotorcycle.com^ -||accedenonre.xyz^ -||accedeproductive.com^ -||acceleratedrummer.com^ -||acceleratemouse.com^ -||acceleratenovice.com^ -||accelerateswitch.com^ -||accentneglectporter.com^ -||acceptable-progress.pro^ -||acceptablearablezoological.com^ -||acceptablebleat.com^ -||access-mc.com^ -||access.vidox.net^ -||accessdatatrack.com^ -||accesshomeinsurance.co^ -||accessiblescopevisitor.com^ -||accidentalinfringementfat.com^ -||accidentallyrussian.com^ -||accids.com^ -||acclaimcraftsman.com^ -||acclaimed-travel.pro^ -||accloyberimed.com^ -||accmgr.com^ -||accoladethoroughly.com^ -||accommodatingremindauntie.com^ -||accommodationcarpetavid.com^ -||accompanycollapse.com^ -||accompanyingjean.com^ -||accomplicepeach.com^ -||accomplishedacquaintedbungalow.com^ -||accomplishmentailmentinsane.com^ -||accomplishmentstrandedcuddle.com^ -||accordancespotted.com^ -||accordaudienceeducational.com^ -||accordinglyair.com^ -||accountantpacketassail.com^ -||accountdolphinframe.com^ -||accountresponsesergeant.com^ -||accruefierceheartache.com^ -||accumulateboring.com^ -||accuracyswede.com^ -||accusationcollegeload.com^ -||accusedstone.com^ -||accusemonacan.com^ -||accuserannouncementadulthood.com^ -||accustomedinaccessible.com^ -||acdcdn.com^ -||acdcmarimo.com^ -||acdn01.vidox.net^ -||acdn923132475.com^ -||acecapprecarious.com^ -||acediscover.com^ -||acelacien.com^ -||acemdvv.com^ -||aceporntube.com^ -||acerbityjessamy.com^ -||acertb.com^ -||aceshosted.top^ -||acetalsunbait.com^ -||acfaaoaaxdqm.com^ -||acfsxqoa.com^ -||acftxqqg.com^ -||acfyamxwluprpx.com^ -||achaipheegly.com^ -||achcdn.com^ -||achecaskmeditate.com^ -||achejoos.com^ -||achelessarkaskew.com^ -||achelesscorporaltreaty.com^ -||achelessintegralsigh.com^ -||acheworry.com^ -||achievablecpmrevenue.com^ -||achievebeneficial.com^ -||achievehardboiledheap.com^ -||achilles-par.com^ -||achmic.com^ -||achnyyjlxrfkwt.xyz^ -||achpokevvh.com^ -||achuphaube.com^ -||achurt.com^ -||achycompassionate.com^ -||achyrepeatitchy.com^ -||acidicresist.pro^ -||ackcdn.net^ -||ackekryieyvkvby.com^ -||ackeysulfid.top^ -||acknowledgecalculated.com^ -||ackxsndsc.com^ -||aclickads.com^ -||aclktrkr.com^ -||acloudvideos.com^ -||acmaknoxwo.com^ -||acme.vidox.net^ -||acnwxjhfby.com^ -||acocpcvm.com^ -||acofrnsr44es3954b.com^ -||acoolreknit.com^ -||acoossz.top^ -||acorneroft.org^ -||acornexhaustpreviously.com^ -||acostaom.com^ -||acoudsoarom.com^ -||acpakrjzyamb.com^ -||acqmeaf.com^ -||acquaintanceexemptspinach.com^ -||acquaintanceinsaneinaudible.com^ -||acquaintanceunbearablecelebrated.com^ -||acquaintcollaboratefruitless.com^ -||acquaintedpostman.com^ -||acquaintplentifulemotions.com^ -||acquirethem.com^ -||acquisitionsneezeswell.com^ -||acrepantherrecite.com^ -||acrevenene.com^ -||acridtaxiworking.com^ -||acridtubsource.com^ -||acronkkky.com^ -||acrossbrittle.com^ -||acrossgigantic.com^ -||acrossheadquartersanchovy.com^ -||acrote.com^ -||acscdn.com^ -||acstzxngp.com^ -||actiflex.org^ -||actinonmouch.top^ -||actiondenepeninsula.com^ -||actionisabella.com^ -||activatejargon.com^ -||activelysmileintimate.com^ -||activemetering.com^ -||activeoffbracelet.com^ -||activepoststale.com^ -||actpbfa.com^ -||actpx.com^ -||actressdoleful.com^ -||actrkn.com^ -||actuallyfrustration.com^ -||actuallyhierarchyjudgement.com^ -||actualprocedureswaver.com^ -||actushurling.top^ -||acuityplatform.com^ -||aculturerpa.info^ -||acvnhayikyutjsn.xyz^ -||acylasecorers.top^ -||ad-adblock.com^ -||ad-addon.com^ -||ad-back.net^ -||ad-balancer.net^ -||ad-bay.com^ -||ad-cheers.com^ -||ad-delivery.net^ -||ad-flow.com^ -||ad-guardian.com^ -||ad-indicator.com^ -||ad-m.asia^ -||ad-mapps.com^ -||ad-maven.com^ -||ad-nex.com^ -||ad-recommend.com^ -||ad-score.com^ -||ad-server.co.za^ -||ad-serverparc.nl^ -||ad-srv.net^ -||ad-stir.com^ -||ad-vice.biz^ -||ad-vortex.com^ -||ad-wheel.com^ -||ad.gt^ -||ad.guru^ -||ad.linksynergy.com^ -||ad.mox.tv^ -||ad.tradertimerz.media^ -||ad120m.com^ -||ad127m.com^ -||ad1data.com^ -||ad1rtb.com^ -||ad2up.com^ -||ad2upapp.com^ -||ad4.com.cn^ -||ad999.biz^ -||adactioner.com^ -||adanad.name^ -||adaptationbodilypairs.com^ -||adaptationwrite.com^ -||adaptcunning.com^ -||adaranth.com^ -||adaround.net^ -||adarutoad.com^ -||adb7rtb.com^ -||adbidgo.com^ -||adbison-redirect.com^ -||adbit.co^ -||adblck.com^ -||adblock-360.com^ -||adblock-guru.com^ -||adblock-one-protection.com^ -||adblock-pro-download.com^ -||adblock-pro.org^ -||adblock-zen-download.com^ -||adblock-zen.com^ -||adblockanalytics.com^ -||adblocker-instant.xyz^ -||adblockers.b-cdn.net^ -||adblockervideo.com^ -||adbmi.com^ -||adbooth.com^ -||adbooth.net^ -||adbox.lv^ -||adbrite.com^ -||adbro.me^ -||adbrook.com^ -||adbuddiz.com^ -||adbuff.com^ -||adbuka.com.ng^ -||adbull.com^ -||adbureau.net^ -||adbutler-fermion.com^ -||adbutler.com^ -||adbuyer.com^ -||adbyss.com^ -||adc-teasers.com^ -||adcannyxml.com^ -||adcash.com^ -||adcastplus.net^ -||adcde.com^ -||adcdnx.com^ -||adcentrum.net^ -||adchap.com^ -||adcheap.network^ -||adchemical.com^ -||adcl1ckspr0f1t.com^ -||adclerks.com^ -||adclick.pk^ -||adclickbyte.com^ -||adclickmedia.com^ -||adclicks.io^ -||adcloud.net^ -||adcolo.com^ -||adconjure.com^ -||adcovery.com^ -||adcrax.com^ -||adcron.com^ -||adddumbestbarrow.com^ -||addelive.com^ -||addin.icu^ -||addinginstancesroadmap.com^ -||addiply.com^ -||additionalbasketdislike.com^ -||additionalcasualcabinet.com^ -||additionalmedia.com^ -||additionfeud.com^ -||additionssurvivor.com^ -||additionsyndrome.com^ -||addizhi.top^ -||addkt.com^ -||addlnk.com^ -||addoer.com^ -||addonsmash.com^ -||addotnet.com^ -||addressanythingbridge.com^ -||addresseeboldly.com^ -||addresseepaper.com^ -||addresshisselephant.com^ -||addresslegbreathless.com^ -||addresssupernaturalwitchcraft.com^ -||addroplet.com^ -||addthief.com^ -||adeditiontowri.org^ -||adenza.dev^ -||adevbom.com^ -||adevppl.com^ -||adex.media^ -||adexchangecloud.com^ -||adexchangedirect.com^ -||adexchangegate.com^ -||adexchangeguru.com^ -||adexchangemachine.com^ -||adexchangeprediction.com^ -||adexchangetracker.com^ -||adexcite.com^ -||adexmedias.com^ -||adexprt.com^ -||adexprts.com^ -||adf4fdd723.com^ -||adfahrapps.com^ -||adfeedstrk.com^ -||adfgetlink.net^ -||adfgfeojqx.com^ -||adfhilhpoquv.com^ -||adfootprints.com^ -||adforcast.com^ -||adforgeinc.com^ -||adform.net^ -||adfpoint.com^ -||adframesrc.com^ -||adfrontiers.com^ -||adfusion.com^ -||adfyre.co^ -||adg99.com^ -||adgard.net^ -||adgardener.com^ -||adgebra.co.in^ -||adglare.net^ -||adglare.org^ -||adglaze.com^ -||adgoi.com^ -||adgorithms.com^ -||adhealers.com^ -||adhiepfpixtjmv.com^ -||adhoc4.net^ -||adhub.digital^ -||adiingsinspiri.org^ -||adiquity.com^ -||aditms.me^ -||aditsafeweb.com^ -||adjectivedollaralmost.com^ -||adjectiveresign.com^ -||adjoincomprise.com^ -||adjoincultivatedrussian.com^ -||adjournfaintlegalize.com^ -||adjs.media^ -||adjustbedevilsweep.com^ -||adjusteddrug.com^ -||adjustmentconfide.com^ -||adjux.com^ -||adkaora.space^ -||adkernel.com^ -||adklimages.com^ -||adl-hunter.com^ -||adlane.info^ -||adligature.com^ -||adlogists.com^ -||adlserq.com^ -||adltserv.com^ -||admachina.com^ -||admangrauc.com^ -||admangrsw.com^ -||admanmedia.com^ -||admax.network^ -||adme-net.com^ -||admediatex.net^ -||admedit.net^ -||admedo.com^ -||admeking.com^ -||admeme.net^ -||admeridianads.com^ -||admez.com^ -||admicro.vn^ -||admidainsight.com^ -||administerjuniortragedy.com^ -||admirableoverdone.com^ -||admiralugly.com^ -||admiredclumsy.com^ -||admiredexcrete.com^ -||admissiblecontradictthrone.com^ -||admission.net^ -||admissiondemeanourusage.com^ -||admissionreceipt.com^ -||admitad-connect.com^ -||admitad.com^ -||admith.com^ -||admixer.net^ -||admjmp.com^ -||admob.com^ -||admobe.com^ -||admonishmentforcedirritating.com^ -||admothreewallent.com^ -||admpire.com^ -||adnami2.io^ -||adnetworkme.com^ -||adnetworkperformance.com^ -||adnext.fr^ -||adngin.com^ -||adnico.jp^ -||adnigma.com^ -||adnimo.com^ -||adnotebook.com^ -||adnqdnxclmml.com^ -||adnxs-simple.com^ -||adnxs.com^ -||adnxs.net^ -||adnxs1.com^ -||adocean.pl^ -||adolescentcounty.pro^ -||adolescentshirt.com^ -||adomic.com^ -||adoni-nea.com^ -||adonion.com^ -||adonweb.ru^ -||adoopaqueentering.com^ -||adop.co^ -||adoperatorx.com^ -||adopexchange.com^ -||adoptdischarged.com^ -||adoptedproducerdiscernible.com^ -||adoptioneitherrelaxing.com^ -||adoptum.net^ -||adorableold.com^ -||adorerabid.com^ -||adornenveloperecognize.com^ -||adornmadeup.com^ -||adorx.store^ -||adotic.com^ -||adotmob.com^ -||adotone.com^ -||adotube.com^ -||adovr.com^ -||adpacks.com^ -||adpartner.pro^ -||adparty.click^ -||adpass.co.uk^ -||adpatrof.com^ -||adperium.com^ -||adpicmedia.net^ -||adpinion.com^ -||adpionier.de^ -||adplushub.com^ -||adplxmd.com^ -||adpmbexo.com^ -||adpmbexoxvid.com^ -||adpmbglobal.com^ -||adpmbtf.com^ -||adpmbtj.com^ -||adpmbts.com^ -||adpod.in^ -||adpointrtb.com^ -||adpone.com^ -||adqit.com^ -||adqongwuxvav.com^ -||adquery.io^ -||adquet.com^ -||adrcdn.com^ -||adreadytractions.com^ -||adrealclick.com^ -||adrecreate.com^ -||adrenalpop.com^ -||adrenovate.com^ -||adrent.net^ -||adrevenueclone.com^ -||adrevenuerescue.com^ -||adrglife.com^ -||adrgyouguide.com^ -||adriftscramble.com^ -||adright.co^ -||adright.fs.ak-is2.net^ -||adright.xml-v4.ak-is2.net^ -||adright.xml.ak-is2.net^ -||adrkspf.com^ -||adro.pro^ -||adroitontoconstraint.com^ -||adrokt.com^ -||adrpqhttgzcjb.com^ -||adrta.com^ -||adrunnr.com^ -||ads-delivery.b-cdn.net^ -||ads-static.conde.digital^ -||ads-twitter.com^ -||ads.lemmatechnologies.com^ -||ads.rd.linksynergy.com^ -||ads1-adnow.com^ -||ads2550.bid^ -||ads2ads.net^ -||ads3-adnow.com^ -||ads4g.pl^ -||ads4trk.com^ -||ads5-adnow.com^ -||ads6-adnow.com^ -||adsafeprotected.com^ -||adsafety.net^ -||adsagony.com^ -||adsame.com^ -||adsandcomputer.com^ -||adsassure.com^ -||adsbar.online^ -||adsbeard.com^ -||adsbetnet.com^ -||adsblocker-ultra.com^ -||adsblockersentinel.info^ -||adsbtrk.com^ -||adscale.de^ -||adscampaign.net^ -||adscdn.net^ -||adschill.com^ -||adscienceltd.com^ -||adsco.re^ -||adscreendirect.com^ -||adscustsrv.com^ -||adsdk.com^ -||adsdot.ph^ -||adsemirate.com^ -||adsemo.com^ -||adsensecamp.com^ -||adsensecustomsearchads.com^ -||adser.io^ -||adserve.ph^ -||adserved.net^ -||adserverplus.com^ -||adserverpub.com^ -||adservf.com^ -||adservicemedia.dk^ -||adservon.com^ -||adservr.de^ -||adservrs.com^ -||adsessionserv.com^ -||adsexo.com^ -||adsfac.eu^ -||adsfac.net^ -||adsfac.us^ -||adsfactor.net^ -||adsfan.net^ -||adsfcdn.com^ -||adsforcomputercity.com^ -||adsforindians.com^ -||adsfundi.com^ -||adsfuse.com^ -||adshack.com^ -||adshoper.com^ -||adshopping.com^ -||adshort.space^ -||adsignals.com^ -||adsilo.pro^ -||adsimilis.com^ -||adsinimages.com^ -||adsinstant.com^ -||adskape.ru^ -||adskeeper.co.uk^ -||adskeeper.com^ -||adskpak.com^ -||adslidango.com^ -||adslingers.com^ -||adsloom.com^ -||adslot.com^ -||adsluna.com^ -||adslvr.com^ -||adsmarket.com^ -||adsnative.com^ -||adsnetworkplus.com^ -||adsoftware.top^ -||adsonar.com^ -||adsoptimal.com^ -||adsovo.com^ -||adsp.com^ -||adspdbl.com^ -||adspeed.net^ -||adspirit.de^ -||adsplay.in^ -||adspop.me^ -||adspredictiv.com^ -||adspyglass.com^ -||adsrv.me^ -||adsrv.wtf^ -||adstarget.net^ -||adstargets.com^ -||adstean.com^ -||adstico.io^ -||adstook.com^ -||adstracker.info^ -||adstreampro.com^ -||adsupply.com^ -||adsupplyssl.com^ -||adsurve.com^ -||adsvids.com^ -||adsvolum.com^ -||adsvolume.com^ -||adswam.com^ -||adswizz.com^ -||adsxtits.pro^ -||adsxyz.com^ -||adsymptotic.com^ -||adt328.com^ -||adt545.net^ -||adt567.net^ -||adt574.com^ -||adt598.com^ -||adtag.cc^ -||adtago.s3.amazonaws.com^ -||adtags.mobi^ -||adtaily.com^ -||adtaily.pl^ -||adtclickwhite.com^ -||adtelligent.com^ -||adthereis.buzz^ -||adtival.com^ -||adtlgc.com^ -||adtlvnxmht.com^ -||adtng.com^ -||adtoadd.com^ -||adtoll.com^ -||adtoma.com^ -||adtomafusion.com^ -||adtonement.com^ -||adtoox.com^ -||adtorio.com^ -||adtotal.pl^ -||adtpix.com^ -||adtpkiowp.com^ -||adtrace.online^ -||adtrace.org^ -||adtraction.com^ -||adtrgt.com^ -||adtrieval.com^ -||adtrk18.com^ -||adtrk21.com^ -||adtrue.com^ -||adtrue24.com^ -||adtscriptduck.com^ -||adtvedk.com^ -||adtzpdpi.com^ -||aduld.click^ -||adult-affiliate.link^ -||adultadvertising.net^ -||adultcamchatfree.com^ -||adultcamfree.com^ -||adultcamliveweb.com^ -||adulterygreetimpostor.com^ -||adultgameexchange.com^ -||adultiq.club^ -||adultlinkexchange.com^ -||adultmoviegroup.com^ -||adultoafiliados.com.br^ -||adultscrutchthey.com^ -||adultsense.net^ -||adultsense.org^ -||adultsjuniorfling.com^ -||adultterritory.net^ -||adupwewdsk.com^ -||adv9.net^ -||advanceencumbrancehive.com^ -||advancenopregnancy.com^ -||advancinginfinitely.com^ -||advancingprobationhealthy.com^ -||advancingrecruitingamy.com^ -||advang.com^ -||advantagedoctrinepleased.com^ -||advantageglobalmarketing.com^ -||advantagepublicly.com^ -||advantagesclotblend.com^ -||advantageshallwayasks.com^ -||advantagespire.com^ -||advard.com^ -||adventory.com^ -||adventurouscomprehendhold.com^ -||adventurouscondensedrebuff.com^ -||adverbrequire.com^ -||adverpub.com^ -||adversaldisplay.com^ -||adversalservers.com^ -||adverserve.net^ -||adversespurt.com^ -||adversesuffering.com^ -||advertbox.us^ -||adverti.io^ -||advertica-cdn.com^ -||advertica-cdn2.com^ -||advertica.ae^ -||advertica.com^ -||advertiseimmaculatecrescent.com^ -||advertiserurl.com^ -||advertiseserve.com^ -||advertiseworld.com^ -||advertiseyourgame.com^ -||advertising-cdn.com^ -||advertisingiq.com^ -||advertisingvalue.info^ -||advertjunction.com^ -||advertlane.com^ -||advertlets.com^ -||advertmarketing.com^ -||advertnetworks.com^ -||advertpay.net^ -||adverttulimited.biz^ -||advfeeds.com^ -||advgalaxy.com^ -||advinci.co^ -||adviralmedia.com^ -||advise.co^ -||advisefirmly.com^ -||adviseforty.com^ -||advisorded.com^ -||adviva.net^ -||advmaker.ru^ -||advmaker.su^ -||advmonie.com^ -||advocacyablaze.com^ -||advocacyforgiveness.com^ -||advocate420.fun^ -||advotionhot.com^ -||advotoffer.com^ -||advp1.com^ -||advp2.com^ -||advp3.com^ -||advpx.com^ -||advpy.com^ -||advpz.com^ -||advsmedia.net^ -||advtrkone.com^ -||adwalte.info^ -||adway.org^ -||adwx6vcj.com^ -||adx1.com^ -||adx1js.s3.amazonaws.com^ -||adxadserv.com^ -||adxbid.info^ -||adxchg.com^ -||adxfire.in^ -||adxfire.net^ -||adxhand.name^ -||adxion.com^ -||adxite.com^ -||adxnexus.com^ -||adxpansion.com^ -||adxpartner.com^ -||adxplay.com^ -||adxpower.com^ -||adxpremium.services^ -||adxproofcheck.com^ -||adxprtz.com^ -||adxscope.com^ -||adxsrver.com^ -||adxxx.biz^ -||adzfun.me^ -||adzhub.com^ -||adziff.com^ -||adzilla.name^ -||adzincome.in^ -||adzintext.com^ -||adzmarket.net^ -||adzmedia.com^ -||adzmob.com^ -||adzoc.com^ -||adzouk1tag.com^ -||adzpier.com^ -||adzpower.com^ -||adzs.com^ -||ae064ae81c.com^ -||ae1a1e258b8b016.com^ -||aeb92e4b9d.com^ -||aebwmemfebks.xyz^ -||aec40f9e073ba6.com^ -||aeea61a72f.com^ -||aeeg5idiuenbi7erger.com^ -||aefeeqdlnh.com^ -||aeffe3nhrua5hua.com^ -||aegagrilariats.top^ -||aegiumks.com^ -||aejslgc.com^ -||aekhfdpxcw.com^ -||aelgdju.com^ -||aembxbxmnuspyr.com^ -||aeoqmogkswsd.com^ -||aeqtjaonwrnyy.com^ -||aerariacongoni.uno^ -||aerialmistaken.com^ -||aerialsargle.top^ -||aeriedconcert.com^ -||aerjnuloxlth.com^ -||aerlwjxcrcolcpy.com^ -||aerobiabassing.com^ -||aeroplaneversion.com^ -||aesand.com^ -||aesary.com^ -||aetgjds.com^ -||aevspdhb.com^ -||af91c27a8e.com^ -||afahivar.com^ -||afahivar.coom^ -||afaiphee.xyz^ -||afcnuchxgo.com^ -||afcontent.net^ -||afcyhf.com^ -||afdads.com^ -||afdashrafi.com^ -||afdrivovoq.com^ -||afdumnnhg.com^ -||afearprevoid.com^ -||afeerdah.net^ -||aferpush.com^ -||aff-online.com^ -||aff-track.net^ -||aff.biz^ -||aff1xstavka.com^ -||affabilitydisciple.com^ -||affableindigestionstruggling.com^ -||affablewalked.com^ -||affairsmithbloke.com^ -||affairsthin.com^ -||affasi.com^ -||affbot1.com^ -||affbot3.com^ -||affcpatrk.com^ -||affectdeveloper.com^ -||affectincentiveyelp.com^ -||affectionateinterferingbarrister.com^ -||affectionatelypart.com^ -||affelseaeinera.org^ -||affelseaeineral.xyz^ -||affflow.com^ -||affichwhists.uno^ -||affilepol.top^ -||affili.st^ -||affiliate-robot.com^ -||affiliate-wg.com^ -||affiliateboutiquenetwork.com^ -||affiliatedrives.com^ -||affiliateer.com^ -||affiliatefuel.com^ -||affiliatefuture.com^ -||affiliategateways.co^ -||affiliatelounge.com^ -||affiliatemembership.com^ -||affiliatenetwork.co.za^ -||affiliates.systems^ -||affiliatesensor.com^ -||affiliatestonybet.com^ -||affiliatewindow.com^ -||affiliation-france.com^ -||affiliationworld.com^ -||affilijack.de^ -||affiliserve.com^ -||affinitad.com^ -||affinity.com^ -||affinitycycleablaze.com^ -||affirmbereave.com^ -||affiz.net^ -||affjamohw.com^ -||afflat3a1.com^ -||afflat3d2.com^ -||afflat3e1.com^ -||affluentmirth.com^ -||affluentretinueelegance.com^ -||affluentscuffle.com^ -||affluentshinymulticultural.com^ -||affmoneyy.com^ -||affordspoonsgray.com^ -||affordstrawberryoverreact.com^ -||affordswear.com^ -||affoutrck.com^ -||affpa.top^ -||affplanet.com^ -||affrayteaseherring.com^ -||affstrack.com^ -||affstreck.com^ -||afftrack.com^ -||afftrackr.com^ -||afftrk.online^ -||affyrolo.info^ -||affyrtb.com^ -||afgakzvicdfe.com^ -||afgr1.com^ -||afgr10.com^ -||afgr11.com^ -||afgr2.com^ -||afgr3.com^ -||afgr4.com^ -||afgr5.com^ -||afgr6.com^ -||afgr7.com^ -||afgr8.com^ -||afgr9.com^ -||afgtrwd1.com^ -||afgwciwbjxcsfro.com^ -||afgwsgl.com^ -||afgzipohma.com^ -||afiliapub.click^ -||afkearupl.com^ -||afkwa.com^ -||afloatroyalty.com^ -||afm01.com^ -||afmhlhqwkn.com^ -||afnyfiexpecttha.info^ -||afoaglux.com^ -||afodreet.net^ -||afootwitword.com^ -||afosseel.net^ -||afpbuzfwyjri.com^ -||afpjryqtnkctv.com^ -||afqqnxifhgsaqab.com^ -||afr4g5.de^ -||afrage.com^ -||afraidreach.com^ -||afre.guru^ -||afreetsat.com^ -||afrfmyzaka.com^ -||afrgatomkzuv.com^ -||africaewgrhdtb.com^ -||africawin.com^ -||afshanthough.pro^ -||afssdmin.com^ -||afswkdjdma.com^ -||afteed.com^ -||afterdownload.com^ -||afterdownloads.com^ -||afternoonpregnantgetting.com^ -||afternoonshipment.com^ -||afterpastimebottled.com^ -||afterwardstationquestions.com^ -||aftqhamina.com^ -||aftrangale.com^ -||aftrk1.com^ -||aftrk3.com^ -||afunyjoiynvsk.com^ -||afvwwjcplvq.com^ -||afwpc.com^ -||afxjwyg.com^ -||afywhecpi.com^ -||agabreloomr.com^ -||agacelebir.com^ -||agacqvofrszqy.com^ -||agadata.online^ -||agaenteitor.com^ -||agafurretor.com^ -||agagaure.com^ -||againboundless.com^ -||againirksomefutile.com^ -||againoutlaw.com^ -||againponderous.com^ -||againstpipepierre.com^ -||agajx.com^ -||agakoffingan.com^ -||agalarvitaran.com^ -||agamagcargoan.com^ -||agamantykeon.com^ -||agamoidroughly.life^ -||agaomastaran.com^ -||agapdqgysuipwz.com^ -||agapi-fwz.com^ -||agaswalotchan.com^ -||agatarainpro.com^ -||agauxietor.com^ -||agavanilliteom.com^ -||agazejagless.com^ -||agbituvdiolfdyp.com^ -||agbxppmdgobbsd.xyz^ -||agcdn.com^ -||ageandinone.org^ -||ageaskedfurther.com^ -||agehaeamilhfv.com^ -||agelastbypast.top^ -||agency2.ru^ -||agffrusilj.com^ -||agfgasaglasw.com^ -||agflkiombagl.com^ -||aggestose.com^ -||aggjprvqamtl.com^ -||aggravatecapeamoral.com^ -||aggregateknowledge.com^ -||aggregationcontagion.com^ -||aggressivefrequentneckquirky.com^ -||aggrologis.top^ -||aghastmardy.website^ -||aghppuhixd.com^ -||agisdayra.com^ -||agitatechampionship.com^ -||agl001.bid^ -||agl002.online^ -||agl003.com^ -||agle21xe2anfddirite.com^ -||aglocobanners.com^ -||agloogly.com^ -||agloowie.com^ -||agmtrk.com^ -||agngplsooascil.com^ -||agnoetecluster.uno^ -||agnrcrpwyyn.com^ -||agonelambes.website^ -||agooxouy.net^ -||agqovdqajj.com^ -||agraglie.net^ -||agrarianbeepsensitivity.com^ -||agrarianbrowse.com^ -||agreeable-target.pro^ -||agreeableopinion.pro^ -||agreedrunawaysalty.com^ -||agriculturalpraise.com^ -||agriculturaltacticautobiography.com^ -||agriculturealso.com^ -||agriculturepenthouse.com^ -||agrilusingest.com^ -||agtsavates.top^ -||agtwvigehvl.com^ -||agujvjrpnins.com^ -||agukalty.net^ -||agurgeed.net^ -||agweaaf.net^ -||agweaaf.org^ -||agxifqyum.xyz^ -||ahabcaca.com^ -||ahabmcdsrwlau.com^ -||ahadsply.com^ -||ahagreatlypromised.com^ -||ahaurgoo.net^ -||ahaxoenizuaon.com^ -||ahbdsply.com^ -||ahcdsply.com^ -||ahdvpuovkaz.com^ -||aheadreflectczar.com^ -||aheaptorsos.life^ -||aheave.com^ -||aheightbaaing.website^ -||ahjmiyrd.xyz^ -||ahjshyoqlo.com^ -||ahlefind.com^ -||ahngnhjdcu.com^ -||ahoxirsy.com^ -||ahporntube.com^ -||ahqpqpdjpj.com^ -||ahscdn.com^ -||ahtalcruzv.com^ -||ahuacasheely.top^ -||ahvmsyemcldyjjr.com^ -||ahwbedsd.xyz^ -||ahyghotmptj.com^ -||aibsgc.com^ -||aickakru.net^ -||aickeebsi.com^ -||aidata.io^ -||aidraiphejpb.com^ -||aidspectacle.com^ -||aiejlfb.com^ -||aifoghou.com^ -||aigaithojo.com^ -||aigneloa.com^ -||aigretenew.top^ -||aigsgwowkb.com^ -||aihoasso.net^ -||aiiirwciki.com^ -||aiixyxwx.com^ -||aikat-vim.com^ -||aikeroxqbgj.com^ -||aikraith.net^ -||aikravoapu.com^ -||ailrouno.net^ -||ailsomse.net^ -||ailteesh.net^ -||ailtumty.net^ -||aimairou.net^ -||aimatch.com^ -||aimingaye.com^ -||aimpocket.com^ -||aimsounga.net^ -||aineghoo.xyz^ -||ainhiseewhat.com^ -||ainuftou.net^ -||aipofeem.net^ -||aiqdviuyvlcplis.xyz^ -||aiqidwcfrm.com^ -||aiquqqaadd.xyz^ -||airairgu.com^ -||airartapt.site^ -||airaujoog.com^ -||airbornefrench.com^ -||airborneold.com^ -||airconditionpianoembarrassment.com^ -||aircraftairliner.com^ -||aircraftreign.com^ -||aircraftsplendid.com^ -||airdilute.com^ -||airdoamoord.com^ -||airlessquotationtroubled.com^ -||airlinerappetizingcoast.com^ -||airoupha.xyz^ -||airplaygenteel.com^ -||airpush.com^ -||airsaurd.com^ -||airsoang.net^ -||airticmonsoa.com^ -||airtightcounty.com^ -||airtightfaithful.com^ -||airyeject.com^ -||aisaipty.xyz^ -||aishaibe.com^ -||aisletransientinvasion.com^ -||aisrvyvstyq.xyz^ -||aistekso.net^ -||aistthatheha.xyz^ -||aitarsou.com^ -||aitsatho.com^ -||aivoonsa.xyz^ -||aiwebgak.com^ -||aiwhogny.com^ -||aiwlxmy.com^ -||aiwnxbbmig.com^ -||aixcdn.com^ -||aixppedb.com^ -||aiyfulba.com^ -||aj1070.online^ -||aj1090.online^ -||aj1432.online^ -||aj1559.online^ -||aj1574.online^ -||aj1616.online^ -||aj1716.online^ -||aj1907.online^ -||aj1913.online^ -||aj1985.online^ -||aj2031.online^ -||aj2218.online^ -||aj2396.online^ -||aj2397.online^ -||aj2430.online^ -||aj2495.online^ -||aj2526.bid^ -||aj2532.bid^ -||aj2550.bid^ -||aj2555.bid^ -||aj2627.bid^ -||ajaltoly.com^ -||ajar-substance.com^ -||ajarodds.com^ -||ajdbwugpyjhrm.com^ -||ajestigie.com^ -||ajfnee.com^ -||ajgzylr.com^ -||ajillionmax.com^ -||ajivikatend.digital^ -||ajiwqmnh.com^ -||ajjawcxpao.com^ -||ajjhtetv87.com^ -||ajjkmoyjlbjj.top^ -||ajjwuunaxq.com^ -||ajkzd9h.com^ -||ajlwaseodqo.com^ -||ajmpeuf.com^ -||ajozrjh.com^ -||ajrkm1.com^ -||ajtmfkposamrcrx.com^ -||ajvjpupava.com^ -||ajvkakodvgpe.com^ -||ajvnragtua.com^ -||ajxx98.online^ -||ajyrsxdvbyc.xyz^ -||ak-tracker.com^ -||akaiksots.com^ -||akchapxw.com^ -||akdbr.com^ -||akeedser.com^ -||akenacngmnj.com^ -||akgjovxbcptesco.com^ -||akgltsptchpq.com^ -||akhyanaoverhot.com^ -||akikumu.com^ -||akilifox.com^ -||akinrevenueexcited.com^ -||akjasjanwhif.com^ -||akkvmkgdvokn.com^ -||aklmjylwvkayv.top^ -||aklorswikk.com^ -||akmxts.com^ -||akqktwdk.xyz^ -||aksleaj.com^ -||aktwusgwep.com^ -||aktxwijitaqs.com^ -||akutapro.com^ -||akxwffsgijttvrc.com^ -||akychhluvbh.com^ -||akyrprsnnuk.com^ -||akzfxmgcq.com^ -||alacrityimitation.com^ -||alaeshire.com^ -||alamortairn.com^ -||alanibelen.com^ -||alardruther.top^ -||alargeredrubygsw.info^ -||alarmsubjectiveanniversary.com^ -||alas4kanmfa6a4mubte.com^ -||alaskan4kleeskai.com^ -||alasvow.com^ -||alban-mro.com^ -||albeejurare.top^ -||albeitinflame.com^ -||albeitvoiceprick.com^ -||albireo.xyz^ -||albraixentor.com^ -||albumshrugnotoriety.com^ -||albusfreely.top^ -||albyegitvem.com^ -||albynloxia.website^ -||albynoralism.com^ -||alcatza.com^ -||alchemysocial.com^ -||alchimybegins.com^ -||alcovesoftenedenthusiastic.com^ -||alcroconawa.com^ -||alddoggess.com^ -||aldosesmajeure.com^ -||aldragalgean.com^ -||alecclause.com^ -||alecmeantimehe.com^ -||alefrfobkoxbgaf.com^ -||alegnoackerg.com^ -||aleilu.com^ -||alertlogsemployer.com^ -||alertmouthplaice.com^ -||alesneogaea.com^ -||alespeonor.com^ -||aletrenhegenmi.com^ -||aleutexplait.com^ -||alexatracker.com^ -||alexicallowed.digital^ -||alexisbeaming.com^ -||alexisclou.top^ -||alfa-track.info^ -||alfa-track2.site^ -||alfasense.com^ -||alfatraffic.com^ -||alfelixstownrusis.info^ -||alfionecasave.com^ -||alfonsino.top^ -||alfpair.com^ -||alfredpoleshipwreck.com^ -||alfredvariablecavalry.com^ -||algg.site^ -||algiczonated.top^ -||algjqsuzialktg.com^ -||algolduckan.com^ -||algothitaon.com^ -||algovid.com^ -||alhypnoom.com^ -||alia-iso.com^ -||aliadvert.ru^ -||aliasesargueinsensitive.com^ -||aliasfoot.com^ -||alibisprocessessyntax.com^ -||alienateappetite.com^ -||alienateclergy.com^ -||alienaterepellent.com^ -||aliensold.com^ -||aliensplitch.com^ -||alifafdlnjeruif.com^ -||alifbouche.digital^ -||alifeupbrast.com^ -||alightbornbell.com^ -||alignmentflattery.com^ -||alimonysmuggle.com^ -||alingrethertantin.info^ -||alipromo.com^ -||alispurates.com^ -||alitems.co^ -||alitems.com^ -||alitems.site^ -||alivebald.com^ -||alivecheery.com^ -||alivedriftcommandment.com^ -||aliwjo.com^ -||aliyothvoglite.top^ -||alklinker.com^ -||alkqryamjo.com^ -||allabc.com^ -||allactualjournal.com^ -||allactualstories.com^ -||alladvertisingdomclub.club^ -||allahbumpkin.top^ -||allbzfnar.com^ -||allcommonblog.com^ -||allcommonstories.com^ -||allcoolnewz.com^ -||allcoolposts.com^ -||allegianceenableselfish.com^ -||allelicrinde.life^ -||alleliteads.com^ -||allemodels.com^ -||allenhoroscope.com^ -||allenmanoeuvre.com^ -||allenprepareattic.com^ -||allergicloaded.com^ -||alleviatepracticableaddicted.com^ -||allfb8dremsiw09oiabhboolsebt29jhe3setn.com^ -||allfreecounter.com^ -||allfreshposts.com^ -||allftbsb.com^ -||allgrjyqkemos.com^ -||allhotfeed.com^ -||allhugeblog.com^ -||allhugefeed.com^ -||allhugenews.com^ -||allhugenewz.com^ -||allhypefeed.com^ -||alliancejoyousbloat.com^ -||allicinarenig.com^ -||allloveydovey.fun^ -||allmt.com^ -||allnesskepped.com^ -||allocatelacking.com^ -||allodiafeveret.life^ -||allodsubussu.com^ -||allotnegate.com^ -||allotupwardmalicious.com^ -||allow-to-continue.com^ -||allowancepresidential.com^ -||allowbecome.com^ -||allowflannelmob.com^ -||allowingjustifypredestine.com^ -||allowsmelodramaticswindle.com^ -||alloydigital.com^ -||alloyrounded.com^ -||allpornovids.com^ -||allskillon.com^ -||allsports4free.live^ -||allsports4free.online^ -||allstat-pp.ru^ -||alltopnewz.com^ -||alltopposts.com^ -||alludedapexdepression.com^ -||alludedaridboob.com^ -||alludestussal.top^ -||allure-ng.net^ -||allureencourage.com^ -||allureoutlayterrific.com^ -||allusionfussintervention.com^ -||allwownewz.com^ -||allyes.com^ -||allyprimroseidol.com^ -||allywasnothyc.info^ -||almareepom.com^ -||almasatten.com^ -||almightyexploitjumpy.com^ -||almightypush.com^ -||almightyroomsimmaculate.com^ -||almondusual.com^ -||almonsituate.com^ -||almostcomponent.com^ -||almostspend.com^ -||almstda.tv^ -||alnuinvisayan.com^ -||alodiachowed.com^ -||alodialreciter.com^ -||aloensaidhe.com^ -||aloftloan.com^ -||alonehepatitisenough.com^ -||alonelybansela.digital^ -||alongsidelizard.com^ -||aloofformidabledistant.com^ -||alot4you.tech^ -||alota.xyz^ -||aloudhardware.com^ -||aloveyousaidthe.info^ -||alovirs.com^ -||alpenchalet.space^ -||alpha-news.org^ -||alphabetforesteracts.com^ -||alphabetlayout.com^ -||alphabird.com^ -||alphagodaddy.com^ -||alpheratzscheat.top^ -||alphonso.tv^ -||alpidoveon.com^ -||alpine-vpn.com^ -||alpjpyaskpiw.com^ -||alpurs.com^ -||alreadyballetrenting.com^ -||alreadywailed.com^ -||alreau.com^ -||alrightcorozo.com^ -||alrightlemonredress.com^ -||alrotdrfhsc.com^ -||alrzbskdwkwzm.com^ -||alsatiapolynia.com^ -||alsindustrate.info^ -||alsindustratebil.com^ -||alspearowa.com^ -||alstrome9riya10.com^ -||altaicunwired.top^ -||altairaquilae.top^ -||altarhackees.digital^ -||altarrousebrows.com^ -||altcoin.care^ -||alterassumeaggravate.com^ -||alterationappealprison.com^ -||alterhimdecorate.com^ -||alternads.info^ -||alternatespikeloudly.com^ -||alternativecpmgate.com^ -||alternativeprofitablegate.com^ -||althov.com^ -||altitude-arena.com^ -||altitudeweetonsil.com^ -||altowriestwispy.com^ -||altpubli.com^ -||altrk.net^ -||altronopubacc.com^ -||altynamoan.com^ -||aluationiamk.info^ -||alulaeegbert.top^ -||alumnussmee.top^ -||alwayspainfully.com^ -||alwhichhereal.com^ -||alwhichhereallyw.com^ -||alwingulla.com^ -||alwubrhkxgqdiw.com^ -||alxbgo.com^ -||alxhiccwizce.com^ -||alxmmoodltpa.com^ -||alxsite.com^ -||alysson.de^ -||alzlwkeavakr.top^ -||alzlwkeavlvm.top^ -||am10.ru^ -||am11.ru^ -||am15.net^ -||amaasretrims.top^ -||amads.fun^ -||amahcoaxy.top^ -||amala-wav.com^ -||amalakale.com^ -||amarceusan.com^ -||amassesvoteen.website^ -||amassweightpun.com^ -||amastytwilt.com^ -||amateurcouplewebcam.com^ -||amattepush.com^ -||amazinelistrun.pro^ -||amazinelistrun.xyz^ -||amazinglyprogramswilfrid.com^ -||amazon-adsystem.com^ -||amazon-cornerstone.com^ -||ambaab.com^ -||ambfdkucm.com^ -||ambientplatform.vn^ -||ambierechinid.com^ -||ambiguitypalm.com^ -||ambiliarcarwin.com^ -||ambitiousdivorcemummy.com^ -||ambitiousmanufacturerscaffold.com^ -||amblesaflame.top^ -||ambolicrighto.com^ -||ambra.com^ -||ambuizeler.com^ -||ambushharmlessalmost.com^ -||amcmuhu.com^ -||amdahlasinego.com^ -||amdfdpuzedih.com^ -||ameedbezique.uno^ -||amelatrina.com^ -||amenbeansrepay.com^ -||amendableirritatingprotective.com^ -||amendablepartridge.com^ -||amendablesloppypayslips.com^ -||amendsgeneralize.com^ -||amendsrecruitingperson.com^ -||amenityleisurelydays.com^ -||ameofmuki.info^ -||ameoutofthe.info^ -||ameowli.com^ -||amesgraduatel.xyz^ -||amexcadrillon.com^ -||amfennekinom.com^ -||amgardevoirtor.com^ -||amgdgt.com^ -||amhippopotastor.com^ -||amhpbhyxfgvd.com^ -||amiabledelinquent.com^ -||amiddespair.com^ -||amidoxypochard.com^ -||amimialonging.com^ -||aminizehaskard.top^ -||aminopay.net^ -||amira-efz.com^ -||amiraytiny.com^ -||amirteeg.com^ -||amjjqlit.com^ -||amjoltiktor.com^ -||amjsiksirkh.com^ -||amkbpcc.com^ -||amlumineona.com^ -||amlvbzvvnjejn.top^ -||ammankeyan.com^ -||ammannests.com^ -||ammits.com^ -||amnew.net^ -||amnoctowlan.club^ -||amnruvbmeoqp.com^ -||amntx1.net^ -||amnwpircuomd.com^ -||amoddishor.com^ -||amofqosgs.com^ -||amon1.net^ -||amonar.com^ -||amonor.com^ -||amontp.com^ -||amorouslimitsbrought.com^ -||amorphousankle.com^ -||amountdonutproxy.com^ -||amourethenwife.top^ -||amouroachoo.com^ -||amp.rd.linksynergy.com^ -||amp.services^ -||ampcr.io^ -||amplitudesheriff.com^ -||amplitudeundoubtedlycomplete.com^ -||amplitudewassnap.com^ -||ampugi334f.com^ -||ampxchange.com^ -||amqxvwmsfn.xyz^ -||amre.work^ -||amshroomishan.com^ -||amswadloonan.com^ -||amtracking01.com^ -||amtropiusr.com^ -||amuletcontext.com^ -||amunfezanttor.com^ -||amused-ground.com^ -||amusementrehearseevil.com^ -||amusementstepfatherpretence.com^ -||amusing-senior.com^ -||amuyonpastour.top^ -||amvbwleayvbyr.top^ -||amvbwleayvyra.top^ -||amvbwleayvzbm.top^ -||amvmzbmzaryya.top^ -||amwaenayzjqle.top^ -||amwaenayzjwav.top^ -||amwswkqh.com^ -||amyaxgaqvoh.com^ -||amyfixesfelicity.com^ -||amygdalbrittle.com^ -||amylenedolman.com^ -||amzargfaht.com^ -||amzbtuolwp.com^ -||amzrjyzjolvab.top^ -||amzrjyzjolvkv.top^ -||anacampaign.com^ -||anacjpmrv.com^ -||anadignity.com^ -||anaemiaalmostforests.com^ -||anaemiaperceivedverge.com^ -||anahausatd.com^ -||analitits.com^ -||analogousemmafootprints.com^ -||analogydid.com^ -||analysecrappy.com^ -||analyticbz.com^ -||analytics-active.net^ -||anamaembush.com^ -||anamestreat.top^ -||anamuel-careslie.com^ -||anansao2ay8yap09.com^ -||anapirate.com^ -||anapx.net^ -||anastasia-international.com^ -||anastasiasaffiliate.com^ -||anatomyabdicatenettle.com^ -||anatomybravely.com^ -||anattospursier.com^ -||anaxialaphonia.com^ -||anceenablesas.info^ -||ancestor3452.fun^ -||anceteventur.info^ -||anchoicstage.com^ -||ancientconspicuousuniverse.com^ -||ancientsend.com^ -||ancznewozw.com^ -||andappjaxzfo.com^ -||andhkruuiigxmkd.com^ -||andhthrewdo.com^ -||andhthrewdow.com^ -||andohs.net^ -||andomedia.com^ -||andomediagroup.com^ -||andriesshied.com^ -||android-cleaners.com^ -||androundher.info^ -||andtheircleanw.com^ -||aneartuilles.top^ -||anemenzemkwkm.top^ -||aneorwd.com^ -||anetpkxx.com^ -||anewgallondevious.com^ -||anewrelivedivide.com^ -||anewwisdomrigour.com^ -||angaraunken.top^ -||angege.com^ -||angelesdresseddecent.com^ -||angelesfoldingpatsy.com^ -||angelsaidthe.info^ -||angieagavose.click^ -||anglended.club^ -||angletolerate.com^ -||anglezinccompassionate.com^ -||anglingdacker.com^ -||angrilyinclusionminister.com^ -||angryheadlong.com^ -||anguac.com^ -||anguishedjudgment.com^ -||anguishlonesome.com^ -||anguishmotto.com^ -||anguishworst.com^ -||angularamiablequasi.com^ -||angularconstitution.com^ -||animateddiscredit.com^ -||animatedjumpydisappointing.com^ -||animaterecover.com^ -||animikii-ana.com^ -||animits.com^ -||animositybelovedresignation.com^ -||animosityknockedgorgeous.com^ -||animositysofa.com^ -||animusmisform.com^ -||aninter.net^ -||anjlkkyhpp.com^ -||anjosmryofa.com^ -||ankdoier.com^ -||ankghgcgygyfi.com^ -||ankhspreses.space^ -||ankkdgursk.com^ -||ankleproposedomicile.com^ -||anldnews.pro^ -||anlytics.co^ -||anmdr.link^ -||anmgaxrujfru.com^ -||anmiphglqn.com^ -||anmjqqtevhsqwb.com^ -||anncmq.com^ -||anncquyaxns.com^ -||annesuspense.com^ -||anniversaryblaspheme.com^ -||anniversarythingy.com^ -||annotationdiverse.com^ -||annotationmadness.com^ -||announcedseaman.com^ -||announceflealanding.com^ -||announcement317.fun^ -||announcementlane.com^ -||announceproposition.com^ -||announcinglyrics.com^ -||announcingusecourt.com^ -||annoyancejesustrivial.com^ -||annoyancepreoccupationgrowled.com^ -||annoyanceraymondexcepting.com^ -||annoynoveltyeel.com^ -||annrgyvv.xyz^ -||annuentleers.com^ -||annulmentequitycereals.com^ -||anodicvarnish.com^ -||anomalousdisembroildisembroilamy.com^ -||anomalousmelt.com^ -||anomalousporch.com^ -||anonymestupes.website^ -||anonymousads.com^ -||anonymoustrunk.com^ -||anopportunitytost.info^ -||anorexyskerry.top^ -||another-surprise.pro^ -||anotiachilli.com^ -||anpptedtah.com^ -||anqnbzyjlknbm.top^ -||anseisjulus.com^ -||anselmbowwows.com^ -||answeredthechi.org^ -||answerroad.com^ -||antagonizelabourer.com^ -||antaioselides.life^ -||antalithate.website^ -||antananarbdivu.com^ -||antarcticfiery.com^ -||antarcticoffended.com^ -||antaresarcturus.com^ -||antcfeamynt.com^ -||antcixn.com^ -||antcxk.com^ -||antecedentbees.com^ -||antennafutilecomplement.com^ -||antennaputyoke.com^ -||antennawritersimilar.com^ -||anteog.com^ -||anteroomcrap.com^ -||antetestingstooped.com^ -||anthe-vsf.com^ -||anthembroadcastingbitty.com^ -||anthonypush.com^ -||antiadblock.info^ -||antiadblocksystems.com^ -||antiagingbiocream.com^ -||antibioticborough.com^ -||antibot.me^ -||anticipatedlying.com^ -||anticipatedthirteen.com^ -||anticipateplummorbid.com^ -||anticipationit.com^ -||anticipationnonchalanceaccustomed.com^ -||antidotefoepersecution.com^ -||antidotesexualityorderly.com^ -||antidotesurvivorausterity.com^ -||antijamburet.com^ -||antipathymenudeduce.com^ -||antiquariancapricorn.com^ -||antiquitytissuepod.com^ -||antiredcessant.com^ -||antirgiocub.com^ -||antisicollyba.top^ -||antivirussprotection.com^ -||antjgr.com^ -||antlerlode.com^ -||antlerpickedassumed.com^ -||antlikebor.com^ -||antoiew.com^ -||antonysurface.com^ -||antonywingraceless.com^ -||antpeelpiston.com^ -||antyoubeliket.info^ -||antyoubeliketheap.com^ -||anunderstrobed.com^ -||anvhgwjy.com^ -||anvilfaintmaiden.com^ -||anvkmi.com^ -||anwhitepinafore.info^ -||anxiouslyconsistencytearing.com^ -||anxiouslywonderexcitement.com^ -||anxkuzvfim.com^ -||anxlzaxtifhe.com^ -||anxomeetqgvvwt.xyz^ -||anxskuoltqsdjp.com^ -||anybmfgunpu.xyz^ -||anybodyproper.com^ -||anybodysentimentcircumvent.com^ -||anydigresscanyon.com^ -||anyeaodpwonaf.com^ -||anyexists.com^ -||anyhowunplat.uno^ -||anymad.com^ -||anymind360.com^ -||anymorearmsindeed.com^ -||anymorecapability.com^ -||anymorehopper.com^ -||anymoresentencevirgin.com^ -||anyskjhi.com^ -||anysolely.com^ -||anythingamg.org^ -||anytimesand.com^ -||anyuazfpjzj.com^ -||anyvzvbmknqew.top^ -||anywaybreeches.com^ -||anywaysreives.com^ -||aoalmfwinbsstec23.com^ -||aofppecbmordq.com^ -||aofzkovajqti.com^ -||aoihaizo.xyz^ -||aonforhaving.info^ -||aonwqlpu.com^ -||aoooysewk.com^ -||aoredi.com^ -||aortismbutyric.com^ -||aoswoygld.com^ -||aowykupwwnqrg.xyz^ -||aoxtyivjpt.com^ -||ap-srv.net^ -||ap3lorf0il.com^ -||apaboqrqbpa.com^ -||apairguyot.top^ -||apalbs.com^ -||apardonslaving.com^ -||apartemployee.com^ -||apartinept.com^ -||apartsermon.com^ -||apatheticdrawerscolourful.com^ -||apatheticformingalbeit.com^ -||apbieqqb.xyz^ -||apcatcltoph.com^ -||apcpaxwfej.com^ -||apctrgkmtjku.com^ -||apeidol.com^ -||aperprovant.top^ -||apertsleeve.top^ -||aperushmo.cam^ -||apescausecrag.com^ -||apesdescriptionprojects.com^ -||apesdrooping.com^ -||apglinks.net^ -||aphagiafiking.com^ -||aphasicstoray.space^ -||aphemicstull.com^ -||aphidsapprend.top^ -||aphidsclee.com^ -||api168168.com^ -||apiculirackman.top^ -||apidata.info^ -||apiecelee.com^ -||apinagedottard.cfd^ -||apistatexperience.com^ -||aplainmpatoio.com^ -||apnpr.com^ -||apnttuttej.com^ -||apocarpdogdom.com^ -||apochaeunanime.com^ -||apocopewheeple.com^ -||apologiesbackyardbayonet.com^ -||apologiesneedleworkrising.com^ -||apologizeclosest.com^ -||apologizingrigorousmorally.com^ -||aporasal.net^ -||aporodiko.com^ -||apostlegrievepomp.com^ -||apostropheammunitioninjure.com^ -||apostrophepanediffer.com^ -||app.tippp.io^ -||app2up.info^ -||appads.com^ -||apparatusditchtulip.com^ -||apparelbrandsabotage.com^ -||apparentlyadverse.com^ -||apparentlyhandbook.com^ -||apparest.com^ -||appbetnewapp.top^ -||appbravebeaten.com^ -||appcloudactive.com^ -||appcloudvalue.com^ -||appealinformationevent.com^ -||appealingyouthfulhaphazard.com^ -||appealtime.com^ -||appearancecustomerobliterate.com^ -||appearancefingerprintabet.com^ -||appearancegravel.com^ -||appearedcrawledramp.com^ -||appearednecessarily.com^ -||appearzillionnowadays.com^ -||appeaseprovocation.com^ -||appendad.com^ -||appendixballroom.com^ -||appendixbureaucracycommand.com^ -||appendixwarmingauthors.com^ -||apphomeforbests.com^ -||applabzzeydoo.com^ -||applandforbuddies.top^ -||applandlight.com^ -||applandsforbests.com^ -||applausebind.com^ -||apple.analnoe24.com^ -||appleservenumeric.com^ -||applesometimes.com^ -||applianceplatforms.com^ -||applicationmoleculepersonal.com^ -||applicationplasticoverlap.com^ -||applicationsattaindevastated.com^ -||applicationsrapacity.com^ -||applifycontent.com^ -||applifysolutions.com^ -||applifysolutions.net^ -||appmateforbests.com^ -||appnow.sbs^ -||appoineditardwide.com^ -||appointedchildorchestra.com^ -||appollo-plus.com^ -||appraisalaffable.com^ -||apprefaculty.pro^ -||appresthinters.top^ -||approachconducted.com^ -||approachproperachieve.com^ -||appropriate-bag.pro^ -||appropriateloathefewer.com^ -||appropriatepurse.com^ -||approximatelyseats.com^ -||apps1cdn.com^ -||appsget.monster^ -||appspeed.monster^ -||appsprelandlab.com^ -||appsyoga.com^ -||apptechnewz.com^ -||apptjmp.com^ -||apptquitesouse.com^ -||appwebview.com^ -||appwoolfeatures.com^ -||appyrinceas.com^ -||appyrincene.com^ -||appzery.com^ -||appzeyland.com^ -||appzjax.com^ -||aprilineffective.com^ -||apritifyapok.top^ -||apromoweb.com^ -||apsidalmungoos.top^ -||apsmediaagency.com^ -||apsoacou.xyz^ -||apsoopho.net^ -||apt-ice.pro^ -||aptdiary.com^ -||aptimorph.com^ -||aptitudeproprietor.com^ -||aptlydoubtful.com^ -||apus.tech^ -||apuwpigjno.com^ -||apvdr.com^ -||apxlv.com^ -||apyrenealiyos.digital^ -||apytbfdzy.com^ -||apzawhajrrci.com^ -||aq7ua5ma85rddeinve.com^ -||aqaggxmhabf.com^ -||aqbusmueljfy.com^ -||aqcutwom.xyz^ -||aqdkciossswu.com^ -||aqewvatwqzoigh.com^ -||aqiefntjh.com^ -||aqjambmfgobntt.com^ -||aqjbfed.com^ -||aqkbyevrklvnw.top^ -||aqkkoalfpz.com^ -||aqnnysd.com^ -||aqppwatriodz.com^ -||aqqlwcuqtskbz.com^ -||aqrkrahkynta.com^ -||aqroxlquvshe.com^ -||aqspcbz.com^ -||aquentlytujim.com^ -||aquiliapistrix.guru^ -||aqutxohnexd.com^ -||aqwihyjpglzdr.com^ -||aqxhcplhbqc.com^ -||arabdevastatingpatty.com^ -||arabinxerarch.top^ -||arablucidlygrease.com^ -||arabyfuegian.top^ -||aracts.com^ -||aralomomolachan.com^ -||arangoyaffing.com^ -||araucangozell.com^ -||arautsod.com^ -||arbersunroof.com^ -||arbitrarypoppyblackmail.com^ -||arboredcalfret.com^ -||arbourrenewal.com^ -||arbourtalessterile.com^ -||arbustdupatta.com^ -||arbutintentie.com^ -||arbutterfreer.com^ -||arbxhkix.xyz^ -||arcaczncolur.com^ -||arcadiavehemently.com^ -||archaicchop.com^ -||archaicgrilledignorant.com^ -||archaicin.com^ -||archbishoppectoral.com^ -||archedmagnifylegislation.com^ -||archerpointy.com^ -||archiewinningsneaking.com^ -||architecturecultivated.com^ -||architectureholes.com^ -||archlycadetclutch.com^ -||arcost54ujkaphylosuvaursi.com^ -||arcticwarningtraffic.com^ -||arcualstymie.com^ -||ardentlyexposureflushed.com^ -||ardentlyoddly.com^ -||ardoursmutine.top^ -||ardruddigonan.com^ -||ardsklangr.com^ -||ardslediana.com^ -||ardspalkiator.com^ -||ardunorwest.life^ -||arduousyeast.com^ -||arduresyrians.com^ -||ardykffwpfx.xyz^ -||areahar.com^ -||areairo.com^ -||areajou.com^ -||areamindless.com^ -||arearfeased.top^ -||areasnap.com^ -||areelektrosstor.com^ -||areiccastano.com^ -||areliux.cc^ -||arenahoosgow.com^ -||arenalitteraccommodation.com^ -||areolaeuploid.com^ -||arewzvqbevrzj.top^ -||argasidstrafed.com^ -||argeanwabi.com^ -||argeredru.info^ -||argfgtjsay.com^ -||arglingpistole.com^ -||argolemr.com^ -||argolicopaque.top^ -||argostimies.top^ -||argsofyluvredra.com^ -||arguebakery.com^ -||arguerepetition.com^ -||argumentsadrenaline.com^ -||argumentsmaymadly.com^ -||arhymalojnzo.com^ -||arianatainos.com^ -||ariapawners.space^ -||aridplaincol.com^ -||ariessifts.click^ -||arihtrkoxuvlm.xyz^ -||arilsoaxie.xyz^ -||arioiandroner.top^ -||ariotgribble.com^ -||aristianewr.club^ -||arithmeticifrancorous.com^ -||arithpouted.com^ -||arkadyczsk.com^ -||arkdcz.com^ -||arkfacialdaybreak.com^ -||arkfreakyinsufficient.com^ -||arkmedboo.live^ -||arkunexpectedtrousers.com^ -||arleavannya.com^ -||arlydsdibnjrvby.com^ -||armamentsummary.com^ -||armarilltor.com^ -||armbonewarrok.life^ -||armedgroin.com^ -||armedtidying.com^ -||armetsremoved.guru^ -||armiesinvolve.com^ -||armineambeers.top^ -||arminius.io^ -||arminuntor.com^ -||armisticeexpress.com^ -||armletglene.com^ -||armourhardilytraditionally.com^ -||armoursviolino.com^ -||army.delivery^ -||armypresentlyproblem.com^ -||arnchealpa.com^ -||arnditluplfa.com^ -||arnepurxlbsjiih.xyz^ -||arnimalconeer.com^ -||arnofourgu.com^ -||arodul.com^ -||aroidsguide.com^ -||arointbarra.com^ -||arointitacism.com^ -||aromabirch.com^ -||aromamidland.com^ -||aromatic-possibility.pro^ -||arosepageant.com^ -||aroundpayslips.com^ -||aroundridicule.com^ -||arousedcricket.com^ -||arousedimitateplane.com^ -||arousestatic.com^ -||arouth.com^ -||aroyiise.xyz^ -||arqsafhutlam.com^ -||arquilavaan.com^ -||arqznlwzkkaev.top^ -||arqznlwzkkjla.top^ -||arragouts.com^ -||arrangeaffectedtables.com^ -||arrangementhang.com^ -||arrangementsinventorpublic.com^ -||arrayanthir.cfd^ -||arraysurvivalcarla.com^ -||arrearsdecember.com^ -||arrearstreatyexamples.com^ -||arriagepuly.top^ -||arrief.com^ -||arrivaltroublesome.com^ -||arrivedcanteen.com^ -||arrivedeuropean.com^ -||arrivingallowspollen.com^ -||arrlnk.com^ -||arrnaught.com^ -||arrowdevastatingconstruction.com^ -||arrowpotsdevice.com^ -||arsahahada.com^ -||arsdizarhgag.com^ -||arsfoundhert.info^ -||arshelmeton.com^ -||arsnivyr.com^ -||arsonexchangefly.com^ -||arsoniststuffed.com^ -||arswabluchan.com^ -||artcsmgx.com^ -||artditement.info^ -||artertapirus.com^ -||arterybasin.com^ -||arteryeligiblecatchy.com^ -||artfulparrotnobody.com^ -||arthyredir.com^ -||articlegarlandferment.com^ -||articlepawn.com^ -||articulatefootwearmumble.com^ -||artistictastesnly.info^ -||artistperhapscomfort.com^ -||artistspipe.top^ -||artlessdeprivationunfriendly.com^ -||artlessdevote.com^ -||artlikeratan.click^ -||artoas301endore.com^ -||artonsbewasand.com^ -||artoukfarepu.org^ -||artpever.com^ -||artreconnect.com^ -||artsygas.com^ -||aruyevdqsnd.xyz^ -||arvbjqabanaba.top^ -||arvbjqavenjba.top^ -||arvigorothan.com^ -||arvyxowwcay.com^ -||arwartortleer.com^ -||arwhismura.com^ -||arwobaton.com^ -||aryabzerznlvn.top^ -||arylidealchemy.com^ -||arzanphearse.com^ -||as5000.com^ -||asacdn.com^ -||asafesite.com^ -||asandcomemu.info^ -||asbaloney.com^ -||asbolinstartor.top^ -||asbulbasaura.com^ -||asbutiseemedli.com^ -||ascaredresue.space^ -||asccdn.com^ -||asce.xyz^ -||ascensionunfinished.com^ -||ascentflabbysketch.com^ -||ascentloinconvenience.com^ -||ascentstwats.com^ -||ascertainedcondescendinggag.com^ -||ascertainedthetongs.com^ -||ascertainintend.com^ -||ascraftan.com^ -||asdasdad.net^ -||asdf1.online^ -||asdf1.site^ -||asdkfefanvt.com^ -||asdpoi.com^ -||asdqslnqmwwkc.com^ -||asecv.xyz^ -||aseegrib.com^ -||aseethegivers.top^ -||aseluosldtabi.com^ -||asemolgaa.com^ -||asemskull.com^ -||asespeonom.com^ -||asewlfjqwlflkew.com^ -||asf4f.us^ -||asfgeaa.lat^ -||asgccummig.com^ -||asgclick.com^ -||asgclickkl.com^ -||asgclickpp.com^ -||asgildedalloverw.com^ -||asgmtalconde.com^ -||asgorebysschan.com^ -||ashamedbirchpoorly.com^ -||ashamedtriumphant.com^ -||ashameoctaviansinner.com^ -||ashcdn.com^ -||ashhgo.com^ -||ashierbowler.com^ -||ashionismscol.info^ -||ashlarinaugur.com^ -||ashopsoo.net^ -||ashoreyuripatter.com^ -||ashoupsu.com^ -||ashsexistentertaining.com^ -||ashturfchap.com^ -||asiangfsex.com^ -||asidefeetsergeant.com^ -||asinegohumped.website^ -||askdomainad.com^ -||askedappear.com^ -||askersstylish.top^ -||asklinklanger.com^ -||asklots.com^ -||askprivate.com^ -||asksquay.com^ -||aslaironer.com^ -||aslantrhabdom.com^ -||aslaprason.com^ -||asleavannychan.com^ -||aslnk.link^ -||asmetotreatwab.com^ -||asmileesidesu.info^ -||asmodeusfields.com^ -||asnincadar.com^ -||asnoibator.com^ -||asnortsalol.website^ -||asnothycan.info^ -||asnothycantyou.info^ -||aso1.net^ -||asoawhum.com^ -||asopn.com^ -||asosettoourma.info^ -||asoulrox.com^ -||asoursuls.com^ -||asozordoafie.com^ -||asparagusburstscanty.com^ -||asparagusinterruption.com^ -||asparaguspallorspoken.com^ -||asparaguspopcorn.com^ -||asperencium.com^ -||asperityhorizontally.com^ -||aspignitean.com^ -||aspireetopee.com^ -||aspirerrehedge.life^ -||asqconn.com^ -||asquintarmenic.cfd^ -||asrelatercondi.org^ -||asrety.com^ -||asricewaterho.com^ -||asrntiljustetyerec.info^ -||asrop.xyz^ -||asrowjkagg.com^ -||assailusefullyenemies.com^ -||assassinationsteal.com^ -||assaultmolecularjim.com^ -||assaysmohr.cfd^ -||assembleservers.com^ -||assentproduct.com^ -||assertedclosureseaman.com^ -||assertedelevateratio.com^ -||assertednodding.com^ -||assertnourishingconnection.com^ -||assessagra.top^ -||assetize.com^ -||assholeamarin.top^ -||assignedeliminatebonfire.com^ -||assilagfilii.top^ -||assistancelawnthesis.com^ -||assistantasks.com^ -||assistantdroppedseries.com^ -||assistedadultrib.com^ -||assisteggs.com^ -||assistspell.com^ -||assobredrouked.com^ -||associationstoopedacid.com^ -||associationwish.com^ -||assoilrehboc.top^ -||assortmentberry.com^ -||assortmentcriminal.com^ -||assortplaintiffwailing.com^ -||asstaraptora.com^ -||assuageexcel.com^ -||assuagefaithfullydesist.com^ -||assumeflippers.com^ -||assumptivepoking.com^ -||assuranceapprobationblackbird.com^ -||assurancelocusmat.com^ -||assurednesssalesmanmaud.com^ -||assuredtroublemicrowave.com^ -||assurehonesty.com^ -||assuremath.com^ -||assuretwelfth.com^ -||ast2ya4ee8wtnax.com^ -||astaicheedie.com^ -||astarboka.com^ -||astato.online^ -||astauche.xyz^ -||asteepgaits.space^ -||astehaub.net^ -||astemolgachan.com^ -||asterbiscusys.com^ -||asteriskwaspish.com^ -||asterrakionor.com^ -||astesnlyno.org^ -||astespurra.com^ -||asthepoityelth.com^ -||astivysauran.com^ -||astkyureman.com^ -||astnoivernan.com^ -||astoapsu.com^ -||astoecia.com^ -||astogepian.com^ -||astonishingpenknifeprofessionally.com^ -||astonishmentfuneral.com^ -||astra9dlya10.com^ -||astrandconifer.com^ -||astrokompas.com^ -||astronomybreathlessmisunderstand.com^ -||astronomycrawlingcol.com^ -||astronomytesting.com^ -||astscolipedeor.com^ -||astspewpaor.com^ -||astumbreonon.com^ -||asuipiirq.com^ -||asverymuc.org^ -||asverymucha.info^ -||asxeilpougog.com^ -||asxjhqaey.com^ -||asyetaprovinc.org^ -||asyledieses.com^ -||asylumclogunaccustomed.com^ -||atableofcup.com^ -||atacticserena.top^ -||atahphkpndlcdi.com^ -||atala-apw.com^ -||atamansdockize.com^ -||atampharosom.com^ -||atas.io^ -||ataxiasfaulds.shop^ -||atcelebitor.com^ -||atchshipsmoter.com^ -||atcoordinate.com^ -||atdeerlinga.com^ -||atdmaincode.com^ -||atdmt.com^ -||atdrilburr.com^ -||atedlitytlement.info^ -||atelegendinflected.com^ -||atelesmusters.website^ -||atemda.com^ -||atentherel.org^ -||aterhouse.info^ -||aterhouseoyop.com^ -||aterhouseoyop.info^ -||aterroppop.com^ -||atevaccination.com^ -||atfhtqjeflq.com^ -||atgallader.com^ -||atgenesecton.com^ -||atgthkqt.com^ -||athbzeobts.com^ -||atheismperplex.com^ -||atherthishinhe.com^ -||athitmontopon.com^ -||athivopou.com^ -||athletedurable.com^ -||athletethrong.com^ -||athlg.com^ -||athoaphu.xyz^ -||atholicncesispe.info^ -||athostouco.com^ -||athvicatfx.com^ -||athwfadifqac.com^ -||athyimemediates.info^ -||aticalfelixstownrus.info^ -||aticalmaster.org^ -||aticatea.com^ -||atinsolutions.com^ -||ationpecialukizeiaon.info^ -||atiretrously.com^ -||ativesathyas.info^ -||atjigglypuffor.com^ -||atlhjtmjrj.com^ -||atlxpstsf.com^ -||atmalinks.com^ -||atmasroofy.com^ -||atmetagrossan.com^ -||atmewtwochan.com^ -||atmnjcinews.pro^ -||atmosphericurinebra.com^ -||atmtaoda.com^ -||ato.mx^ -||atomex.net^ -||atomicarot.com^ -||atonato.de^ -||atonefreeman.top^ -||atonementfosterchild.com^ -||atonementimmersedlacerate.com^ -||atopyawned.uno^ -||atpanchama.com^ -||atpansagean.com^ -||atpawniarda.com^ -||atpfowtcbsedv.xyz^ -||atraff.com^ -||atraichuor.com^ -||atriblethetch.com^ -||atris.xyz^ -||atrkmankubf.com^ -||atrociouspsychiatricparliamentary.com^ -||atrocityfingernail.com^ -||atropaimitant.top^ -||atroposacclaim.com^ -||atsabwhkox.com^ -||atservineor.com^ -||atshcaogrlhi.com^ -||atshroomisha.com^ -||atsojqkzoqto.com^ -||attacarbo.com^ -||attachedkneel.com^ -||attacketslovern.info^ -||attaindisableneedlework.com^ -||attemptdruggedcarve.com^ -||attemptingstray.com^ -||attempttipsrye.com^ -||attendantsrescuediscrepancy.com^ -||attendedconnectionunique.com^ -||attendingtarget.com^ -||attentioniau.com^ -||attentionsoursmerchant.com^ -||attenuatenovelty.com^ -||attepigom.com^ -||attestationaudience.com^ -||attestationoats.com^ -||attestationovernightinvoluntary.com^ -||attestcribaccording.com^ -||attesthelium.com^ -||atthereandhth.com^ -||atthewon.buzz^ -||atthewonderfu.com^ -||atticshepherd.com^ -||attractioninvincibleendurance.com^ -||attractive-drawing.com^ -||attractivebuilt.com^ -||attractpicturespine.com^ -||attractscissor.com^ -||attractwarningkeel.com^ -||attrapincha.com^ -||attributedconcernedamendable.com^ -||attributedharnesssag.com^ -||attributedminded.com^ -||attributedrelease.com^ -||attritioncombustible.com^ -||attunebarberreality.com^ -||atukjpdh.xyz^ -||atvrurguhqin.com^ -||atwola.com^ -||atzekromchan.com^ -||au2m8.com^ -||auajifblipz.com^ -||auboalro.xyz^ -||auburn9819.com^ -||aucaikse.com^ -||auchoocm.com^ -||auchoons.net^ -||auciuqxoyqobj.xyz^ -||aucoudsa.net^ -||aucred.com^ -||aucubatypica.com^ -||audiblereflectionsenterprising.com^ -||audiblysecretaryburied.com^ -||audiencebellowmimic.com^ -||audiencefuel.com^ -||audienceprofiler.com^ -||audienceravagephotocopy.com^ -||audionews.fm^ -||audiosech.xyz^ -||auditioneasterhelm.com^ -||auditioningantidoteconnections.com^ -||auditioningborder.com^ -||auditioningdock.com^ -||auditioningouncesufficiently.com^ -||auditoriumclarifybladder.com^ -||auditoriumgiddiness.com^ -||auditorydetainriddle.com^ -||auditude.com^ -||audmrk.com^ -||audrault.xyz^ -||auesk.cfd^ -||aufeeque.com^ -||auficxqpyfgcd.xyz^ -||auforau.com^ -||aufr67i8sten.com^ -||auftithu.xyz^ -||augaiksu.xyz^ -||augailou.com^ -||augendsfrisky.top^ -||aughableleade.info^ -||augu3yhd485st.com^ -||augurersoilure.space^ -||august15download.com^ -||augustjadespun.com^ -||aujooxoo.com^ -||aukalerim.com^ -||aukarosizox.com^ -||aukroaze.xyz^ -||aukseseemyr.info^ -||auksizox.com^ -||auksofthecompan.info^ -||aukveygibngnjg.com^ -||aulingimpora.club^ -||aullaysledder.top^ -||auloibunch.top^ -||aulrains.com^ -||aulricol.xyz^ -||aulsidakr.com^ -||aulteeby.net^ -||aultesou.net^ -||aultseemedto.xyz^ -||aumaupoy.net^ -||aumeryyaruran.live^ -||aumsarso.com^ -||aumsookr.com^ -||aumtoost.net^ -||aunauque.net^ -||auneghus.net^ -||aungudie.com^ -||aunsagoa.xyz^ -||aunsaick.com^ -||auntlyseniors.top^ -||auobxpvjej.xyz^ -||auphirtie.com^ -||auphoalt.com^ -||aupseelo.net^ -||aupsugnee.com^ -||aupteens.com^ -||aurdoagnoak.net^ -||aurgersoagnu.net^ -||aurgoast.com^ -||auroraveil.bid^ -||aurousroseola.com^ -||aursaign.net^ -||ausoafab.net^ -||ausomsup.net^ -||auspiceguile.com^ -||auspipe.com^ -||austaihauna.com^ -||austaits.xyz^ -||austeritylegitimate.com^ -||austow.com^ -||autchoog.net^ -||auteboon.net^ -||autelamina.com^ -||authaptixoal.com^ -||authenticseasickexhausted.com^ -||authognu.com^ -||authookroop.com^ -||authoritativedollars.com^ -||authoritiesemotional.com^ -||authorizeddear.pro^ -||authorsallegationdeadlock.com^ -||authorsjustin.com^ -||auto-im.com^ -||autobiographysolution.com^ -||autochunkintriguing.com^ -||automatedtraffic.com^ -||automateyourlist.com^ -||automaticallyindecisionalarm.com^ -||automenunct.com^ -||autoperplexturban.com^ -||autopsycarrel.com^ -||autopsyfowl.com^ -||autumncamping.com^ -||auvenebu.xyz^ -||auwjmphx.com^ -||auxiliarydonor.com^ -||auxiliaryspokenrationalize.com^ -||auxml.com^ -||avads.co.uk^ -||availableforester.com^ -||availablesyrup.com^ -||availplovery.top^ -||avajwlwlwkkmb.top^ -||avajwlwlwkvma.top^ -||avalancheofnews.com^ -||avalanchers.com^ -||avatarweb.site^ -||avazu.net^ -||avazutracking.net^ -||avebedencathy.info^ -||avenaryconcent.com^ -||aveneverseeno.info^ -||avengeburglar.com^ -||avengeghosts.com^ -||avenuewalkerchange.com^ -||average-champion.pro^ -||aversionmast.com^ -||aversionwives.com^ -||aversionworkingthankful.com^ -||aveugleghettos.top^ -||avglfookdjuj.com^ -||avhcoumvt.com^ -||avhtaapxml.com^ -||aviationbe.com^ -||avichigangway.top^ -||aviculagolder.com^ -||aviddoated.com^ -||avidheroismgelatine.com^ -||aviewrodlet.com^ -||avinekernish.digital^ -||avjbjbeeraebj.top^ -||avjbjbeeramzv.top^ -||avjockjpiduc.com^ -||avkktuywj.xyz^ -||avkyu1tesnwy.com^ -||avnmjtqu.com^ -||avobeucxscwj.com^ -||avouchamazeddownload.com^ -||avouse.com^ -||avowalsannop.com^ -||avowappear.com^ -||avowdelicacydried.com^ -||avprotect.store^ -||avqhelxlb.com^ -||avrom.xyz^ -||avrqaijwdqk.xyz^ -||avrqikbubjin.com^ -||avthelkp.net^ -||avtvcuofgz.com^ -||avucugkccpavsxv.xyz^ -||avupdrojsytrnej.xyz^ -||avuthoumse.com^ -||avvelwamqkbjb.top^ -||avvelwamqkzzw.top^ -||avwgzujkit.com^ -||avwhipazsdco.com^ -||avwwphtnquacgd.com^ -||avygpim.com^ -||avzwkkmzkabyv.top^ -||avzwkkmzkayrm.top^ -||avzwkkmzkayvj.top^ -||awacspianist.top^ -||awaitbackseatprod.com^ -||awaitdetestableitem.com^ -||awaitifregularly.com^ -||awaitingutilize.com^ -||awakeclauseunskilled.com^ -||awakeexterior.com^ -||awardcynicalintimidating.com^ -||aware-living.pro^ -||awareallicin.top^ -||awarecatching.com^ -||awarenessfundraiserstump.com^ -||awarenessinstance.com^ -||awarenessunprofessionalcongruous.com^ -||awashemeers.com^ -||awasrqp.xyz^ -||awavjblaaekrb.top^ -||away-stay.com^ -||awaydefinitecreature.com^ -||awbbcre.com^ -||awbbjmp.com^ -||awbbsat.com^ -||awbrwrybywwew.top^ -||awcrpu.com^ -||awdfcuolboh.com^ -||awecr.com^ -||awecre.com^ -||awecrptjmp.com^ -||aweighmica.top^ -||aweinkbum.com^ -||awejmp.com^ -||awelsorsulte.com^ -||awembd.com^ -||awemdia.com^ -||awempt.com^ -||awemwh.com^ -||awentw.com^ -||aweproto.com^ -||aweprotostatic.com^ -||aweprt.com^ -||awepsi.com^ -||awepsljan.com^ -||awept.com^ -||awesome-blocker.com^ -||awesomeprizedrive.co^ -||awestatic.com^ -||awestc.com^ -||aweyqalylarj.top^ -||awfullypersecution.com^ -||awfulresolvedraised.com^ -||awhajdorzawd.com^ -||awistats.com^ -||awkbkkqmeewkw.top^ -||awkiktwfvhqiwb.com^ -||awkljjaaweyzm.top^ -||awkwardpurfles.com^ -||awkwardsuperstition.com^ -||awldcupu.com^ -||awledconside.xyz^ -||awlov.info^ -||awltovhc.com^ -||awmbed.com^ -||awmbriegurries.com^ -||awmdelivery.com^ -||awmocpqihh.com^ -||awmplus.com^ -||awmserve.com^ -||awnexus.com^ -||awningstoffees.top^ -||awokeconscious.com^ -||awoudsoo.xyz^ -||awpcrpu.com^ -||awprt.com^ -||awptjmp.com^ -||awptlpu.com^ -||aws-itcloud.net^ -||awsnjsduyhgpk.com^ -||awstaticdn.net^ -||awsurveys.com^ -||awswayful.space^ -||awtpguxqtf.com^ -||awtqbjylk.com^ -||awugxvrmsdalpx.com^ -||awutohkhu.com^ -||awvqfalackho.com^ -||awvracajcsu.com^ -||awvvhicirfti.com^ -||awytythbxujkz.com^ -||awzvpbg.com^ -||axalgyof.xyz^ -||axallarded.top^ -||axductile.com^ -||axeldivision.com^ -||axhpkbvibdn.com^ -||axill.com^ -||axillovely.com^ -||axiomszanjona.com^ -||axjfjdm.com^ -||axkwmsivme.com^ -||axledjuking.com^ -||axlohcsruwak.com^ -||axlpackugrra.com^ -||axonix.com^ -||axpjzhbh.com^ -||axsnuwqg.com^ -||axtlqoo.com^ -||axungetosher.top^ -||axvkdpcnadgdt.com^ -||axwmymrrctkd.com^ -||axwnmenruo.com^ -||axwofwowdram.com^ -||axwortbunko.com^ -||axwpawahnwux.com^ -||axxcqwxdcijxl.xyz^ -||axxxfam.com^ -||axxxfeee.lat^ -||axzptaji.com^ -||axzxkeawbo.com^ -||ay.delivery^ -||ay5u9w4jjc.com^ -||ayads.co^ -||ayaghlq.com^ -||ayahspollent.top^ -||ayboll.com^ -||aybvfvlyrtbskvy.com^ -||aycalfcwwgf.com^ -||aycrxa.com^ -||aydandelion.com^ -||ayelpacle.com^ -||ayga.xyz^ -||ayllnllwajjmn.top^ -||aymobi.online^ -||ayodwtwjakpk.com^ -||ayorks.com^ -||aypahalndxrxon.com^ -||ayprggvy.com^ -||ayrather.com^ -||ayudvbjbvdojt.com^ -||ayvfzwttm.com^ -||ayxuadkeh.com^ -||ayyjenjkbnrya.top^ -||ayyjenjqlrbya.top^ -||ayzylwqazoqow.top^ -||azads.com^ -||azazyjjzbelwb.top^ -||azbaclxror.com^ -||azbjjbwkewqkr.top^ -||azblnfsuhaeuc.com^ -||azbobvahfokf.com^ -||azejckiv.com^ -||azelaiclawyer.com^ -||azenka.one^ -||azeriondigital.com^ -||azgdgypodyulx.com^ -||azj57rjy.com^ -||azjmp.com^ -||azkcqs.com^ -||azkwwrerlejqv.top^ -||azkwwrerlmebb.top^ -||azlmizbvgjfe.com^ -||azmjosvecyye.com^ -||azmsmufimw.com^ -||aznapoz.info^ -||azoaltou.com^ -||azoogleads.com^ -||azorbe.com^ -||azotvby.com^ -||azpresearch.club^ -||azqhjzbuusjn.com^ -||azqqloblawabm.top^ -||azqqloborwwba.top^ -||azskk.com^ -||aztecash.com^ -||azulcw7.com^ -||azuredjaunt.top^ -||azvneyrknejew.top^ -||azwkjjkmbqavv.top^ -||azwkjjkmbqvye.top^ -||azxdkucizr.com^ -||azxhlzxmrqc.com^ -||azyyyeyeqeaav.top^ -||azyyyeyeqeazj.top^ -||b-5-shield.com^ -||b-m.xyz^ -||b014381c95cb.com^ -||b02byun5xc3s.com^ -||b0a0bb3621.com^ -||b0d2583d75.com^ -||b0oie4xjeb4ite.com^ -||b1181fb1.site^ -||b1298d230d.com^ -||b16a07996c.com^ -||b18a21ab3c9cb53.com^ -||b1bf05979e.com^ -||b1dd039f40.com^ -||b21be0a0c8.com^ -||b225.org^ -||b2261a9931.com^ -||b2d43e2764.com^ -||b2o6b39taril.com^ -||b30674b49e.com^ -||b397db8f50.com^ -||b3b526dee6.com^ -||b3kyo0de1fr0.com^ -||b3mccglf4zqz.shop^ -||b3ra6hmstrioek54er.com^ -||b3stcond1tions.com^ -||b3z29k1uxb.com^ -||b42rracj.com^ -||b44794baad.com^ -||b4dda3f4a1.com^ -||b50faca981.com^ -||b57dqedu4.com^ -||b57eb5adb4.com^ -||b58ncoa1c07f.com^ -||b5942f941d.com^ -||b5c28f9b84.com^ -||b5e75c56.com^ -||b6143975c9.com^ -||b616ca211a.com^ -||b65415fde6.com^ -||b6f16b3cd2.com^ -||b70f0a4569.com^ -||b73uszzq3g9h.com^ -||b76751e155.com^ -||b7om8bdayac6at.com^ -||b81oidrmy82w.com^ -||b88af87899.com^ -||b8ce2eba60.com^ -||b8pfulzbyj7h.com^ -||b9f4882bac.com^ -||ba46b70722.com^ -||ba488608ee.com^ -||ba83df6e74.com^ -||baannre.com^ -||baaomenaltho.com^ -||babbnrs.com^ -||babbyfriar.space^ -||babhanananym.top^ -||babinjectbother.com^ -||baboosloosh.top^ -||babssata.com^ -||babun.club^ -||babyboomboomads.com^ -||babyish-tea.com^ -||babynaz.xyz^ -||babyniceshark.com^ -||babysittingbeerthrobbing.com^ -||babysittingrainyoffend.com^ -||baccarat112.com^ -||bachelorfondleenrapture.com^ -||bachelorfranz.com^ -||bacishushaby.com^ -||backetkidlike.com^ -||backfireaccording.com^ -||backfiremountslippery.com^ -||backfirestomachreasoning.com^ -||backgroundcocoaenslave.com^ -||backla2z8han09.com^ -||backseatabundantpickpocket.com^ -||backseatmarmaladeconsiderate.com^ -||backseatrunners.com^ -||backssensorunreal.com^ -||backstagedeputy.com^ -||backupcelebritygrave.com^ -||backwardkneesencroach.com^ -||backwget99.com^ -||baconbedside.com^ -||baconytapemen.com^ -||badeldestarticulate.com^ -||badgegirdle.com^ -||badgerchance.com^ -||badgreenssucceed.com^ -||badjocks.com^ -||badrookrafta.com^ -||badsbads.com^ -||badsecs.com^ -||badsims.com^ -||badskates.com^ -||badskies.com^ -||badslopes.com^ -||badspads.com^ -||badtopwitch.work^ -||badubaho.com^ -||badujaub.xyz^ -||badword.xyz^ -||baect.com^ -||baffngyawtwc.com^ -||bagelinterest.com^ -||bagelseven.com^ -||bageltiptoe.com^ -||bagfulcoughwallow.com^ -||baggageconservationcaught.com^ -||baggalaresaid.com^ -||baghoorg.xyz^ -||bagiijdjejjcficbaag.world^ -||bagjuxtapose.com^ -||baglaubs.com^ -||bagletantle.top^ -||baglezymoses.com^ -||baglikeurging.com^ -||bagnuterosive.com^ -||baguioattalea.com^ -||bagwyncam.top^ -||bahmemohod.com^ -||bahom.cloud^ -||bahswl.com^ -||baifaphoa.com^ -||bailedgatheringmirth.com^ -||bailedperiodic.com^ -||baileybenedictionphony.com^ -||bailifftoddle.com^ -||bailoaso.xyz^ -||bailonushe.com^ -||bainushe.com^ -||baiocsomma.com^ -||baiseesh.net^ -||baisoabe.com^ -||baithoph.net^ -||baitikoam.com^ -||baitwizardrhythm.com^ -||baiweero.com^ -||baiweluy.com^ -||baiwhuga.net^ -||bakatvackzat.com^ -||bakeronerousfollowing.com^ -||bakertangiblebehaved.com^ -||bakeryunprofessional.com^ -||baksunjwoa.com^ -||bakteso.ru^ -||bakubabasilic.space^ -||bakubasugis.guru^ -||balconyparded.com^ -||balconypeer.com^ -||baldappetizingun.com^ -||baldo-toj.com^ -||baldwhizhens.com^ -||baledenseabbreviation.com^ -||baleiambwee.com^ -||baletingo.com^ -||ballarduous.com^ -||ballastaccommodaterapt.com^ -||ballateprebind.digital^ -||balldevelopedhangnail.com^ -||balldomcheders.top^ -||ballersclung.top^ -||ballinghelonin.com^ -||ballisticforgotten.com^ -||ballotsevicts.space^ -||ballroomexhibitionmid.com^ -||balmexhibited.com^ -||baloneyunraked.com^ -||balphyra.com^ -||baltchd.net^ -||balvalur.com^ -||bam-bam-slam.com^ -||bamahseines.com^ -||bambarmedia.com^ -||banalrestart.com^ -||banawgaht.com^ -||banawyhjc.com^ -||banbuyserve.com^ -||banclip.com^ -||bandageretaliateemail.com^ -||banddisordergraceless.com^ -||bande2az.com^ -||bandelcot.com^ -||bandoraclink.com^ -||bandsaislevow.com^ -||banerator.net^ -||banetabbeetroot.com^ -||bangedavenge.com^ -||bangedzipperbet.com^ -||bangingmeltcigarette.com^ -||bangrighteous.com^ -||bangtopads.com^ -||bangtyranclank.com^ -||bangute.xyz^ -||banhq.com^ -||banistersconvictedrender.com^ -||banisterslighten.com^ -||banisterspast.com^ -||bankerbargainingquickie.com^ -||bankerconcludeshare.com^ -||bankerpotatoesrustle.com^ -||bankervehemently.com^ -||bankingconcede.com^ -||bankingkind.com^ -||bankingpotent.com^ -||banneradsday.com^ -||banners5html2.com^ -||banquetunarmedgrater.com^ -||banselachoirs.life^ -||bantercubicle.com^ -||banterswalloon.com^ -||banterteeserving.com^ -||bantygoozle.top^ -||bapdvtk.com^ -||bappeewit.top^ -||baptrqyesunv.xyz^ -||bapunglue.top^ -||barbabridgeoverprotective.com^ -||barbecuedilatefinally.com^ -||barbedabout.com^ -||barbeduseless.com^ -||barbmerchant.com^ -||bardatm.ru^ -||bardicjazzed.com^ -||barecurldiscovering.com^ -||bareelaborate.com^ -||barefitaiding.com^ -||barefootedleisurelypizza.com^ -||barelydresstraitor.com^ -||barelytwinkledelegate.com^ -||baresi.xyz^ -||barfsmiaowpit.com^ -||bargainingbrotherhood.com^ -||bargainintake.com^ -||bargeagency.com^ -||bargedale.com^ -||bargedoctarch.com^ -||bargingaricin.top^ -||bariejow.top^ -||bariumsjeerers.top^ -||barkanpickee.com^ -||barkaryglaiket.uno^ -||barlessclueing.life^ -||barlo.xyz^ -||barnabaslinger.com^ -||barnaclecocoonjest.com^ -||barnaclewiped.com^ -||barnassumedaddict.com^ -||barnmonths.com^ -||baronsurrenderletter.com^ -||barrackssponge.com^ -||barren-date.pro^ -||barrenusers.com^ -||barrerasaggon.life^ -||barringjello.com^ -||barscreative1.com^ -||barteebs.xyz^ -||barterproductionsbang.com^ -||bartondelicate.com^ -||bartonpriority.com^ -||basaarf.com^ -||basanrodham.top^ -||baseauthenticity.co.in^ -||baseballrabble.com^ -||basedcloudata.com^ -||basedpliable.com^ -||basementprognosis.com^ -||basenjisilyl.com^ -||baseporno.com^ -||basepush.com^ -||basheighthnumerous.com^ -||bashfuladvancedeliberately.com^ -||bashnourish.com^ -||bashwhoopflash.com^ -||basicallyspacecraft.com^ -||basicflownetowork.co.in^ -||basictreadcontract.com^ -||basicwhenpear.com^ -||basindecisive.com^ -||basintippets.com^ -||basionstraily.top^ -||basisscarcelynaughty.com^ -||basisvoting.com^ -||baskdisk.com^ -||basketballshameless.com^ -||basketexceptionfeasible.com^ -||baskgodless.com^ -||baskpension.com^ -||basleagues.top^ -||bassarazit.top^ -||bassoonavatara.com^ -||bastardminims.com^ -||bastarduponupon.com^ -||baste-znl.com^ -||bastingestival.com^ -||bastwmrkgs.com^ -||baszlo.com^ -||batangam.digital^ -||batatasendere.top^ -||batataslavify.guru^ -||batchhermichermicsecondly.com^ -||batcrack.icu^ -||batebalmy.com^ -||bathabed.com^ -||bathbrrvwr.com^ -||bathepoliteness.com^ -||batheunits.com^ -||bathroombornsharp.com^ -||bathtubpitcher.com^ -||battepush.com^ -||batterdisagreement.com^ -||battiesnarras.com^ -||battleautomobile.com^ -||battledninos.top^ -||batwingexolete.top^ -||baubogla.com^ -||bauchleredries.com^ -||baunaurou.com^ -||bauptone.com^ -||bauptost.net^ -||bauvaikul.com^ -||bauviseph.com^ -||bauweethie.com^ -||bavxuhaxtqi.com^ -||bawickie.com^ -||bawixi.xyz^ -||bawlerhanoi.website^ -||baxascpkean.com^ -||baxotjdtesah.com^ -||baygallter.top^ -||baylnk.com^ -||bayshorline.com^ -||baywednesday.com^ -||bazaki.xyz^ -||bazamodov.ru^ -||bazao.xyz^ -||bb1ba63212.com^ -||bbangads.b-cdn.net^ -||bbannjdax.com^ -||bbcrgate.com^ -||bbd834il.de^ -||bbdobm.com^ -||bbgickdocf.xyz^ -||bbgtranst.com^ -||bbhxuqym.xyz^ -||bbiuowdofb.com^ -||bbjnttjqknnmf.com^ -||bbkaqmmknori.com^ -||bbkydnakc.com^ -||bbmlhsehxwi.com^ -||bbmrraevneawv.top^ -||bbmrraevneqaz.top^ -||bbmrraevnevnk.top^ -||bbqckhmgboal.xyz^ -||bbrdbr.com^ -||bbsgsmmqviaob.xyz^ -||bbvbyzzyrebek.top^ -||bbwcbdurxalsks.com^ -||bbwzzwremrrmr.top^ -||bbwzzwremrvkl.top^ -||bbyjgkkdihiyxy.com^ -||bbywwimafntyjbm.com^ -||bc16fd1a7f.com^ -||bc84617c73.com^ -||bcae944449.com^ -||bcaquzxajka.com^ -||bcczmm.com^ -||bcd8072b72.com^ -||bceptemujahb.com^ -||bcfaonqj.com^ -||bcffkvpjqferl.com^ -||bcfimttr.com^ -||bchkhtyns.com^ -||bckqdynigv.com^ -||bclikeqt.com^ -||bcloudhost.com^ -||bcprm.com^ -||bctagb56.xyz^ -||bcuiaw.com^ -||bcxcxixcwprccn.com^ -||bczzwakqyae.com^ -||bd51static.com^ -||bdbffuwrxmsekjp.com^ -||bdbovbmfu.xyz^ -||bddc935c97.com^ -||bdenwsfmnmhkk.com^ -||bdf7a07377.com^ -||bdfagcumunjzx.com^ -||bdhddyknhy.com^ -||bdjdhouhoipj.com^ -||bdmbazqsboxooh.com^ -||bdpxghphiwykioy.com^ -||bdqolehoomnyk.com^ -||bdreireqo.com^ -||bdyumwlf.com^ -||bdzyqohhw.com^ -||be5fb85a02.com^ -||bea988787c.com^ -||beabbqlkiekmxgp.com^ -||beachanatomyheroin.com^ -||beakerweedjazz.com^ -||beakexcursion.com^ -||beakobjectcaliber.com^ -||beamagetechies.guru^ -||beambroth.com^ -||beamedshipwreck.com^ -||beammanmoile.space^ -||beanborrowed.com^ -||bearableforever.com^ -||bearableher.com^ -||bearableusagetheft.com^ -||bearagriculture.com^ -||bearbanepant.com^ -||beardinrather.com^ -||beardyapii.com^ -||bearerdarkfiscal.com^ -||beastintruder.com^ -||beastsmalefic.uno^ -||beastssmuggleimpatiently.com^ -||beaststokersleazy.com^ -||beatifulapplabland.com^ -||beatifulllhistory.com^ -||beauartisticleaflets.com^ -||beautifulasaweath.info^ -||beautifullyinflux.com^ -||beauty1.xyz^ -||beautyspumoid.top^ -||beaverculbert.uno^ -||beavertron.com^ -||beaxewr.com^ -||beaziotclb.com^ -||bebayjoisted.com^ -||beblass.com^ -||bebloommulvel.com^ -||bebpnmskw.com^ -||bebreloomr.com^ -||becamedevelopfailure.com^ -||beccc1d245.com^ -||bechatotan.com^ -||becheckbahima.top^ -||bechemult.top^ -||beckerbauds.com^ -||becketcoffee.com^ -||beckfaster.com^ -||beckoverreactcasual.com^ -||beclippeeweep.com^ -||becomeapartner.io^ -||becomeobnoxiousturk.com^ -||becomesfusionpriority.com^ -||becomesnerveshobble.com^ -||becomesobtrusive.com^ -||becominggunpowderpalette.com^ -||becorsolaom.com^ -||becrustleom.com^ -||bectalonic.com^ -||becuboneor.com^ -||becutblipped.uno^ -||bedaslonej.com^ -||bedaslonejul.cc^ -||bedaubcrig.website^ -||bedbaatvdc.com^ -||bedevilglare.com^ -||bedmantaximan.com^ -||bedodrioer.com^ -||bedodrioon.com^ -||bedrapiona.com^ -||bedsideseller.com^ -||bedspictures.com^ -||bedvbvb.com^ -||bedwhimpershindig.com^ -||beechverandahvanilla.com^ -||beefcollections.com^ -||beefeggspin.com^ -||beefyespeciallydrunken.com^ -||beegotou.net^ -||beehivefestivesolve.com^ -||beehomemade.com^ -||beemauhu.xyz^ -||beemolgator.com^ -||beenoper.com^ -||beeperdecisivecommunication.com^ -||beeporntube.com^ -||beepoven.com^ -||beeraggravationsurfaces.com^ -||beesforestallsuffer.com^ -||beeshanoozuk.com^ -||beestraitstarvation.com^ -||beestuneglon.com^ -||beetcrenula.com^ -||beetrootshady.com^ -||beetrootsquirtexamples.com^ -||beevakum.net^ -||beevalt.com^ -||beewakiy.com^ -||befirstcdn.com^ -||beforehandeccentricinhospitable.com^ -||beforehandopt.com^ -||befrx.com^ -||befujgfah.com^ -||begantotireo.xyz^ -||begaudycacatua.com^ -||beggarlyfilmingabreast.com^ -||beggarlymeatcan.com^ -||beggingoppida.space^ -||beginfrightsuit.com^ -||beginnerfurglow.com^ -||beginnerhooligansnob.com^ -||beginninggoondirections.com^ -||beginningirresponsibility.com^ -||beginningstock.com^ -||beginoppressivegreet.com^ -||begknock.com^ -||begracetindery.com^ -||begripecheatee.guru^ -||begruzar.com^ -||beguat.com^ -||begwhistlinggem.com^ -||behalflose.com^ -||behalfpagedesolate.com^ -||behalfplead.com^ -||behavedforciblecashier.com^ -||behavelyricshighly.com^ -||behaviourquarrelsomelollipop.com^ -||beheadmuffleddetached.com^ -||beheldconformoutlaw.com^ -||behim.click^ -||behindfebruary.com^ -||beholdcontents.com^ -||beholdsalmonsituated.com^ -||behoppipan.com^ -||beigecombinedsniffing.com^ -||beigefindaccurate.com^ -||beingajoyto.info^ -||beingsjeanssent.com^ -||beitandfalloni.com^ -||bejesustrolly.guru^ -||bejirachir.com^ -||bejolteonor.com^ -||beklefkiom.com^ -||beklinkor.com^ -||belamicash.com^ -||belatedsafety.pro^ -||belavoplay.com^ -||belaya2shu1ba1.com^ -||belengougha.com^ -||belfarewesbe.info^ -||belfrycaptured.com^ -||belfrynonfiction.com^ -||belgir.com^ -||belgrekblackad.com^ -||belia-glp.com^ -||belickitungchan.com^ -||believableboy.com^ -||believedvarieties.com^ -||believemefly.com^ -||believeradar.com^ -||believersheet.com^ -||believersymphonyaunt.com^ -||belightpeonize.com^ -||beliketheappyri.info^ -||belittlepads.com^ -||bellacomparisonluke.com^ -||bellamyawardinfallible.com^ -||bellatrixmeissa.com^ -||bellmandrawbar.com^ -||bellowtabloid.com^ -||bellpressinginspector.com^ -||belombrea.com^ -||belongedenemy.com^ -||belongedshark.com^ -||belovedfrolic.com^ -||belovedset.com^ -||beloveupcreep.com^ -||beltarklate.live^ -||beltwaythrust.com^ -||beludicolor.com^ -||belwrite.com^ -||bemachopor.com^ -||bemadsonline.com^ -||bemanectricr.com^ -||bemascloche.life^ -||bembabewhore.com^ -||bemedichamchan.com^ -||bemobpath.com^ -||bemobtrcks.com^ -||bemobtrk.com^ -||bemocksmunched.com^ -||bemsongy.com^ -||bemusic.xyz^ -||benastyunkiss.digital^ -||benced.com^ -||benchsuited.com^ -||bendfrequency.com^ -||bendingrevivestriped.com^ -||bendingroyaltyteeth.com^ -||beneathallowing.com^ -||beneathgirlproceed.com^ -||benefactorstoppedfeedback.com^ -||beneficialviewedallude.com^ -||benefitsshea.com^ -||benelph.de^ -||benengagewriggle.com^ -||benevolencepair.com^ -||benevolentdifferentlymeadow.com^ -||benevolentrome.com^ -||bengaldefer.com^ -||benidorinor.com^ -||benignitydesirespring.com^ -||benignityprophet.com^ -||benignitywoofovercoat.com^ -||benonblkd.xyz^ -||benoopto.com^ -||benselgut.top^ -||benshdarat.website^ -||benumelan.com^ -||benzolescabrin.com^ -||benzolsflask.website^ -||beonixom.com^ -||bepapersurmise.space^ -||beparaspr.com^ -||bephungoagno.com^ -||bepilelaities.com^ -||bepqevudfoha.com^ -||bepunbabite.uno^ -||ber2g8e3keley.com^ -||berchchisel.com^ -||bereaveconsciousscuffle.com^ -||berendphloeum.com^ -||berenicepunch.com^ -||bergertubbie.com^ -||bergsmouflon.com^ -||berideshaptin.com^ -||berinsestoray.com^ -||berkshiretoday.xyz^ -||berlindespraque.life^ -||berlinsnevoid.com^ -||berlipurplin.com^ -||bermssuluan.com^ -||bermudaamowt.com^ -||berrieralbe.com^ -||berriescourageous.com^ -||berryheight.com^ -||berryhillfarmgwent.com^ -||berthsorry.com^ -||bertrammontleymontleyexists.com^ -||berush.com^ -||bescourpeined.top^ -||beseechaircraftorange.com^ -||beserte.pro^ -||besguses.pro^ -||beshellspitous.com^ -||besidesaffluentcurrently.com^ -||besidesparties.com^ -||besighcaman.com^ -||beskittyan.com^ -||besmeargleor.com^ -||besortkotower.website^ -||bespewrooibok.top^ -||besqspbpnucpwk.com^ -||best-offer-for-you.com^ -||best-prize.life^ -||best-protection4.me^ -||best-seat.pro^ -||best-video-app.com^ -||best-vpn-app.com^ -||best-vpn.click^ -||bestadbid.com^ -||bestadload.com^ -||bestadmax.com^ -||bestadsforyou.com^ -||bestadultaction.com^ -||bestapplandever.com^ -||bestaryua.com^ -||bestaybuzzed.website^ -||bestchainconnection.com^ -||bestclicktitle.com^ -||bestcond1tions.com^ -||bestcontentaccess.top^ -||bestcontentfacility.top^ -||bestcontentfee.top^ -||bestcontentfund.top^ -||bestcontenthost.com^ -||bestcontentjob.top^ -||bestcontentoperation.top^ -||bestcontentplan.top^ -||bestcontentprogram.top^ -||bestcontentproject.top^ -||bestcontentprovider.top^ -||bestcontentservice.top^ -||bestcontenttrade.top^ -||bestcontentuse.top^ -||bestcontentweb.top^ -||bestconvertor.club^ -||bestcpmnetwork.com^ -||bestdisplaycontent.com^ -||bestdisplayformats.com^ -||besteasyclick.com^ -||bestexp1.com^ -||bestladymeet.life^ -||bestloans.tips^ -||bestmmogame.com^ -||bestofmoneysurvey.top^ -||bestonlinecasino.club^ -||bestowgradepunch.com^ -||bestprizerhere.life^ -||bestresulttostart.com^ -||bestrevenuenetwork.com^ -||bestsafefast.com^ -||besttracksolution.com^ -||bestvenadvertising.com^ -||bestwaterhouseoyo.info^ -||bestwinterclck.name^ -||bestxxxaction.com^ -||besty-deals.com^ -||bestzba.com^ -||betads.xyz^ -||betahit.click^ -||betakeskings.top^ -||betalonflamechan.com^ -||betemolgar.com^ -||beterrakionan.com^ -||betforakiea.com^ -||betgorebysson.club^ -||bethinkparah.com^ -||betimbur.com^ -||betjoltiktor.com^ -||betklefkior.com^ -||betmasquerainchan.com^ -||betnidorinoan.net^ -||betnoctowlor.com^ -||betonpolite.com^ -||betotodilea.com^ -||betotodileon.com^ -||betrayalmakeoverinstruct.com^ -||betrayedcommissionstocking.com^ -||betrayedrecorderresidence.com^ -||betrimethinyl.top^ -||betriolua.com^ -||betshucklean.com^ -||bett2you.com^ -||bett2you.net^ -||bett2you.org^ -||better-might.pro^ -||betteradsystem.com^ -||bettercontentservice.top^ -||betterdomino.com^ -||bettermeter.com^ -||bettin2you.com^ -||bettingfingerprintgrade.com^ -||bettingpartners.com^ -||beturtwiga.com^ -||betwinner1.com^ -||betxerneastor.club^ -||betyhupte.com^ -||betzapdoson.com^ -||beunblkd.xyz^ -||beverleyagrarianbeep.com^ -||beverleyprowlpreparing.com^ -||bevuelabium.guru^ -||bewailblockade.com^ -||bewailenquiredimprovements.com^ -||bewailindigestionunhappy.com^ -||bewarecontroversy.com^ -||bewareisopointless.com^ -||bewarevampiresister.com^ -||bewathis.com^ -||bewdnkh.com^ -||bewhigwithier.com^ -||bewitchadmiringconstraint.com^ -||bewoobaton.com^ -||bewsejqcbm.com^ -||beyanmaan.com^ -||beylicbesmile.com^ -||bezettescanner.com^ -||bezoardawdles.digital^ -||bezoarschrysid.com^ -||bezuka.xyz^ -||bf-ad.net^ -||bfast.com^ -||bfbkqmoxrh.com^ -||bfda839646.com^ -||bfddexwchocnwx.com^ -||bfeflwuhyhxgw.com^ -||bfgacxuooced.com^ -||bfogxatnxkkmlc.com^ -||bfovysc.com^ -||bfrghskgq.com^ -||bfutvoehfooh.com^ -||bfwnkcfsycbd.com^ -||bfxqwgtwcyk.com^ -||bfxytxdpnk.com^ -||bg4nxu2u5t.com^ -||bgbkvawcctzqql.com^ -||bgbtqizsdziw.com^ -||bgcoll.com^ -||bgecvddelzg.com^ -||bgevhldiekl.xyz^ -||bginrbancsr.com^ -||bgjsjep.com^ -||bgmycyoylcc.com^ -||bgnjefgkuebs.com^ -||bgrgkbnqdsvxc.com^ -||bgxwlomtebrtq.com^ -||bgyeouoavr.xyz^ -||bgyutxdcetx.com^ -||bh3.net^ -||bhalukecky.com^ -||bharalhallahs.com^ -||bharsilked.com^ -||bhartianteact.com^ -||bhcont.com^ -||bhcostefja.com^ -||bhgmlryalkwx.xyz^ -||bhlom.com^ -||bhlph.com^ -||bhnhejwj.com^ -||bhnjwmega.com^ -||bhnmkauncgr.com^ -||bhohazozps.com^ -||bhozjskhzfdkh.com^ -||bhqfnuq.com^ -||bhuoeykefbnfgc.com^ -||bhupsrkrwnggcl.com^ -||bhvpdupimb.xyz^ -||bhxogodamtrcs.com^ -||biabowqi.com^ -||bialithicket.com^ -||biancasunlit.com^ -||biaseddocumentationacross.com^ -||biasedpushful.com^ -||bibasicbdrm.top^ -||bibberbummler.com^ -||bibbledendysis.top^ -||biblecollation.com^ -||biblesausage.com^ -||bibletweak.com^ -||bibtu.com^ -||bichosdamiana.com^ -||bicyclelistoffhandpaying.com^ -||bicyclelistpermanentlyenslave.com^ -||bicyclelistworst.com^ -||bid-engine.com^ -||bid.glass^ -||bidadx.com^ -||bidbadlyarsonist.com^ -||bidbeneficial.com^ -||bidbrain.app^ -||bidclickmedia.com^ -||bidder.dev^ -||bidderads.com^ -||bidderyaldose.top^ -||biddingfitful.com^ -||bidensdorsale.top^ -||bidfhimuqwij.com^ -||bidiology.com^ -||bidsangelim.space^ -||bidsxchange.com^ -||bidtheatre.com^ -||bidtimize.com^ -||bidvance.com^ -||bidverdrd.com^ -||biemedia.com^ -||bifnosblfdpslg.xyz^ -||biforinslogs.life^ -||biftoast.com^ -||bigappboi.com^ -||bigbasketshop.com^ -||bigbolz.com^ -||bigbootymania.com^ -||bigbricks.org^ -||bigbusinesstoday.xyz^ -||bigchoicegroup.com^ -||bigeagle.biz^ -||bigelowcleaning.com^ -||biggainsurvey.top^ -||biggerluck.com^ -||biggestgainsurvey.top^ -||bigheartedresentfulailment.com^ -||bigneptunesept.com^ -||bigrourg.net^ -||bigvids.online^ -||bigvids.space^ -||bihake.com^ -||bihunekus.com^ -||bihussufoob.net^ -||bijouremudas.space^ -||bijwehk.com^ -||bijxpjgtdrgk.com^ -||bike-adsbidding.org^ -||bikeno.xyz^ -||bikesformallycopper.com^ -||bikesmachineryi.com^ -||bikramclyses.top^ -||bikrurda.net^ -||bilateralgodmother.com^ -||bilgerak.com^ -||bilicaxers.com^ -||bilingualwalking.com^ -||bilkedsquit.com^ -||bilkersdtente.uno^ -||bilkersteds.com^ -||billiardsnotealertness.com^ -||billiardssequelsticky.com^ -||billionpops.com^ -||billionstarads.com^ -||billybobandirect.org^ -||billygroups.com^ -||billyhis.com^ -||billypub.com^ -||bilsyndication.com^ -||bimlocal.com^ -||bimorphtuna.top^ -||bin-layer.ru^ -||bin-tds.site^ -||binaryborrowedorganized.com^ -||binaryfailure.com^ -||binaryrecentrecentcut.com^ -||bincatracs.com^ -||bineukdwithmef.info^ -||bingoocy.com^ -||binmenkollast.com^ -||binomnet.com^ -||binomnet3.com^ -||binomtrcks.site^ -||binoticprotea.com^ -||bioces.com^ -||biographyaudition.com^ -||biologysecret.com^ -||biolw.cloud^ -||biopicfumer.space^ -||biopsyheadless.com^ -||biopsyintruder.com^ -||biosda.com^ -||bipgialxcfvad.xyz^ -||biphic.com^ -||bipidoan.com^ -||biplihopsdim.com^ -||bipmwuhisvp.com^ -||biptolyla.com^ -||bipwmskhqe.com^ -||bird-getabid.net^ -||birdeyedigenea.com^ -||birdnavy.com^ -||biroads.com^ -||birqmiowxfh.com^ -||birthday3452.fun^ -||birthdayinhale.com^ -||birtuwhaim.com^ -||biscow.com^ -||biserka.xyz^ -||bisesacnodes.com^ -||bisetsoliped.com^ -||bisleyserrano.com^ -||bisnagaunction.top^ -||bisnumnyer.com^ -||bissailre.com^ -||bissonbunging.com^ -||bissonprevoid.website^ -||bistigaleod.life^ -||biswcmtgrnk.com^ -||bit-ad.com^ -||bitbeat7.com^ -||biteburied.com^ -||bitemisuse.com^ -||biteneverthelessnan.com^ -||bitesized-commission.pro^ -||bitsspiral.com^ -||bittenlacygreater.com^ -||bitterborder.pro^ -||bitterdefeatmid.com^ -||bitterlynewspaperultrasound.com^ -||bitternessjudicious.com^ -||bitterportablerespectively.com^ -||bittygravely.com.com^ -||bittygravely.com^ -||bittyordinaldominion.com^ -||bitumenscoff.website^ -||biturl.co^ -||bitx.tv^ -||biunialpawnie.top^ -||biuskye.com^ -||bixyfyvo.com^ -||biznewsinsider.com^ -||bizographics.com^ -||bizonads-ssp.com^ -||bizrotator.com^ -||bj1110.online^ -||bj2550.com^ -||bjaarvfcgk.com^ -||bjakku.com^ -||bjaxmaydcnal.xyz^ -||bjeellnaldl.xyz^ -||bjidwriorfkim.com^ -||bjiehnopho.com^ -||bjjkuoxidr.xyz^ -||bjjnovsnejwm.com^ -||bjmilicshimxym.com^ -||bjpvbufsxjhvq.com^ -||bjqug.xyz^ -||bjrgsjxb.xyz^ -||bjwgifte.com^ -||bjwqqohwtgbbs.com^ -||bjxiangcao.com^ -||bkcwdlfgopr.com^ -||bkembwdgujzp.com^ -||bkepmwuqui.com^ -||bkhhijbvyq.com^ -||bkirfeu.com^ -||bkjhqkohal.com^ -||bkkejrveemlbk.top^ -||bkkejrveemmzv.top^ -||bkkejrvlnmbbr.top^ -||bklesfzb.com^ -||bklhnlv.com^ -||bkrmyhynjddpl.com^ -||bkujacocdop.com^ -||bkyqhavuracs.com^ -||bkyratafrni.com^ -||bkzwzyznzqabk.top^ -||bkzwzyznzqjzl.top^ -||bl0uxepb4o.com^ -||bl230126pb.com^ -||blabbasket.com^ -||blackandwhite-temporary.com^ -||blackcurrantinadequacydisgusting.com^ -||blackenseaside.com^ -||blackentrue.com^ -||blacklinetosplit.com^ -||blacklinknow.com^ -||blacklinknowss.co^ -||blackmailbrigade.com^ -||blackmailingpanic.com^ -||blackmailshoot.com^ -||blackname.biz^ -||blacknesskangaroo.com^ -||blacknesskeepplan.com^ -||blacurlik.com^ -||bladessweepunprofessional.com^ -||bladesteenycheerfully.com^ -||bladswetis.com^ -||blaghfpd.com^ -||blamads.com^ -||blamechevyannually.com^ -||blamedbuckie.fun^ -||blamersservian.digital^ -||blancheavily.uno^ -||bland-factor.pro^ -||bland-husband.com^ -||blanddish.pro^ -||blandefface.space^ -||blaneo.com^ -||blank-tune.pro^ -||blareclockwisebead.com^ -||blastadoptedlink.com^ -||blastcahs.com^ -||blastedenfoil.top^ -||blastedlurched.com^ -||blastpainterclerk.com^ -||blastsufficientlyexposed.com^ -||blastworthwhilewith.com^ -||blatewave.top^ -||blatwalm.com^ -||blaze-media.com^ -||blazesomeplacespecification.com^ -||blazonstowel.com^ -||blbazybajjevv.top^ -||blbesnuff.digital^ -||bldvxzxdpsrjla.com^ -||bleachebbfed.com^ -||bleachimpartialtrusted.com^ -||bleandworld.xyz^ -||bleandworldw.org^ -||bleatflirtengland.com^ -||bleedingofficecontagion.com^ -||blehcourt.com^ -||blemishwillingpunishment.com^ -||blendedbird.com^ -||bleokerrie.com^ -||blessgravity.com^ -||blesshunt.com^ -||blessinghookup.com^ -||blessingsome.com^ -||bletheequus.com^ -||blg-1216lb.com^ -||blicatedlitytl.info^ -||blidbqd.com^ -||blindefficiency.pro^ -||blindlyhap.top^ -||blindnessmisty.com^ -||blindnessselfemployedpremature.com^ -||blinkjork.com^ -||blinkpainmanly.com^ -||blinktowel.com^ -||blismedia.com^ -||blisscleopatra.com^ -||blissfulblackout.com^ -||blissfulclick.pro^ -||blissfuldes.com^ -||blissfulonline.com^ -||blisterpompey.com^ -||blistest.xyz^ -||bljyynzmlmnrl.top^ -||bllom.cloud^ -||blmibao.com^ -||blmwbzpma.com^ -||bloatrome.com^ -||blobjournalistunwind.com^ -||bloblohub.com^ -||blobsurnameincessant.com^ -||blockaddictioninterfere.com^ -||blockadsnot.com^ -||blockchain-ads.com^ -||blockchaintop.nl^ -||blockedadulatoryhotel.com^ -||blockingdarlingshrivel.com^ -||blockinggleamingmadeup.com^ -||blocksly.org^ -||blogger2020.com^ -||bloggerex.com^ -||blogherads.com^ -||blondeopinion.com^ -||blondhoverhesitation.com^ -||blondserve.com^ -||blondtheirs.com^ -||bloodagitatedbeing.com^ -||bloodlessarchives.com^ -||bloodmaintenancezoom.com^ -||bloodyfrighten.com^ -||blooks.info^ -||bloomsgoas.com^ -||blowflysempre.uno^ -||blowlanternradical.com^ -||blownabolishmentabbreviate.com^ -||blownsuperstitionabound.com^ -||blowssubplow.com^ -||blu5fdclr.com^ -||blubberobsessionsound.com^ -||blubberrivers.com^ -||blubberspoiled.com^ -||blubbertables.com^ -||bludwan.com^ -||blue-biddingz.org^ -||blue99703.com^ -||blueadvertise.com^ -||blueberryastronomy.com^ -||bluedawning.com^ -||bluelinknow.com^ -||blueomatic.com^ -||blueparrot.media^ -||blueswordksh.com^ -||blueygeckoid.top^ -||blueyloulu.com^ -||bluffdetermine.com^ -||bluffybluffysterility.com^ -||bluishgrunt.com^ -||blunderadventurouscompound.com^ -||blunksdaler.uno^ -||blurbigdoable.com^ -||blurbreimbursetrombone.com^ -||blurlorum.uno^ -||blushbuiltonboard.com^ -||blzjjrwbwvjav.top^ -||bmbmwiadmvx.com^ -||bmcdn1.com^ -||bmcdn2.com^ -||bmcdn3.com^ -||bmcdn4.com^ -||bmcdn5.com^ -||bmcdn6.com^ -||bmdmtsqmymthdx.com^ -||bmggqehmcvny.xyz^ -||bmgipyr.com^ -||bmjlzyjwwmwyk.top^ -||bmkz57b79pxk.com^ -||bmlcuby.com^ -||bmmauazi.com^ -||bmpgkspo.xyz^ -||bmptbyb.com^ -||bmqtvmdg.xyz^ -||bmrgliygnaf.com^ -||bmvjxiiijtebtu.com^ -||bmwrbwei.xyz^ -||bmwswvslswt.com^ -||bmycupptafr.com^ -||bmydajrkaw.com^ -||bmzmeugzar.com^ -||bmzqyzmvvvkqa.top^ -||bn5x.net^ -||bnagilu.com^ -||bncloudfl.com^ -||bnczrbrhiacp.com^ -||bnevymqyjji.com^ -||bnfoeabisp.com^ -||bngdin.com^ -||bngdyn.com^ -||bngmadjd.de^ -||bngprl.com^ -||bngprm.com^ -||bngpst.com^ -||bngpt.com^ -||bngrol.com^ -||bngtrak.com^ -||bngwlt.com^ -||bnhnkbknlfnniug.xyz^ -||bnhtml.com^ -||bnivcpronr.com^ -||bnmjjwinf292.com^ -||bnmkl.com^ -||bnmnkib.com^ -||bnmtgboouf.com^ -||bnohewjt.com^ -||bnpmtoazgw.com^ -||bnr.sys.lv^ -||bnrdom.com^ -||bnrs.it^ -||bnrsis.com^ -||bnrslks.com^ -||bnserving.com^ -||bnster.com^ -||bnxydwdgr.com^ -||bo2ffe45ss4gie.com^ -||boabeeniptu.com^ -||boacheeb.com^ -||boagloozee.com^ -||boahnoy.com^ -||boahoupi.com^ -||boakauso.com^ -||boalawoa.xyz^ -||boannre.com^ -||boannred.com^ -||boaphaps.net^ -||boaphoot.com^ -||boardmotion.xyz^ -||boarshrubforemost.com^ -||boastego.xyz^ -||boastemployer.com^ -||boastfive.com^ -||boasttrial.com^ -||boastwelfare.com^ -||boaswooned.com^ -||boatheeh.com^ -||boatjadeinconsistency.com^ -||boatoamo.com^ -||bobabillydirect.org^ -||bobboro.com^ -||bobgames-prolister.com^ -||bobqucc.com^ -||bocoyoutage.com^ -||bodaichi.xyz^ -||bodaile.com^ -||bodelen.com^ -||bodilymust.com^ -||bodilypotatoesappear.com^ -||bodilywondering.com^ -||bodyguardencouraged.com^ -||bodyignorancefrench.com^ -||bodytasted.com^ -||boenedb.com^ -||boeneds.com^ -||boeojpmxvwbgn.com^ -||boffinsoft.com^ -||boffoadsfeeds.com^ -||boffosgemeled.digital^ -||bofhlzu.com^ -||boggyamrit.com^ -||bognunub.com^ -||bogrodius.com^ -||boharaf.com^ -||boheasceile.top^ -||boheir.com^ -||bohowhepsked.com^ -||bohpvdmwjl.com^ -||boilabsent.com^ -||boiledperseverance.com^ -||boilerefforlessefforlessregistered.com^ -||boilingloathe.com^ -||boilingtruce.com^ -||boilingviewed.com^ -||boilslashtasted.com^ -||boilwiggle.com^ -||boinkcash.com^ -||boisterousemblem.com^ -||bokeden.com^ -||bokomarratel.com^ -||bolagsubsept.top^ -||boldboycott.com^ -||boldinsect.pro^ -||boldscantyfrustrating.com^ -||boledrouth.top^ -||bolivarmaltol.website^ -||bollyocean.com^ -||bolofoak.net^ -||boloptrex.com^ -||bolrookr.com^ -||bolsek.ru^ -||bolssc.com^ -||bolstersecours.digital^ -||bolteffecteddanger.com^ -||boltepse.com^ -||bonad.io^ -||bonafides.club^ -||bondagecoexist.com^ -||bondagetrack.com^ -||bondfondif.com^ -||boneporridge.com^ -||bonertraffic13.info^ -||bonertraffic14.info^ -||bonesinoffensivebook.com^ -||bonfiresaltymilk.com^ -||bongacams7.com^ -||bongaucm.xyz^ -||bongauns.xyz^ -||bonicus.com^ -||bonjonetwork.com^ -||bonnesporgy.top^ -||bonnettaking.com^ -||bonnnesfoxily.com^ -||bonomans.com^ -||bonus-app.net^ -||bonuscontract.com^ -||bonusmaniac.com^ -||bonusshatter.com^ -||bonyspecialist.pro^ -||bonzai.ad^ -||boodaisi.xyz^ -||booddianoia.top^ -||boodymauves.com^ -||boogopee.com^ -||bookadil.com^ -||bookbannershop.com^ -||bookcrazystadium.com^ -||bookedbonce.top^ -||bookeryboutre.com^ -||bookletalternative.com^ -||bookletcanvass.com^ -||bookletfreshmanbetray.com^ -||bookljlihooli.com^ -||bookmakers.click^ -||bookmenmetope.life^ -||bookmsg.com^ -||booknower.com^ -||bookpostponemoreover.com^ -||bookshelfcomplaint.com^ -||bookstaircasenaval.com^ -||bookstoreforbiddeceive.com^ -||bookstoreunfortunate.com^ -||boolevool.com^ -||boom-boom-vroom.com^ -||boomads.com^ -||boominfluxdrank.com^ -||boomouso.xyz^ -||boomwalkertraveller.com^ -||boongsmokeho.com^ -||boorgagilden.com^ -||boorsasteria.top^ -||booseed.com^ -||booshoune.com^ -||booshout.com^ -||boosiesnudd.top^ -||boost-next.co.jp^ -||boostcdn.net^ -||boostclic.com^ -||boostcpm.su^ -||booster-vax.com^ -||booster.monster^ -||boostog.net^ -||bootharchie.com^ -||bootstrap-framework.org^ -||bootstrap-js.com^ -||bootstraplugin.com^ -||bootvolleyball.com^ -||bootypleatpublisher.com^ -||boozifyprays.space^ -||bop-bop-bam.com^ -||bopexacta.com^ -||boptegre.com^ -||bordelhaylage.cfd^ -||bordelsdislink.com^ -||bordsnewsjule.com^ -||boredinitial.com^ -||boredombizarrerepent.com^ -||borehatchetcarnival.com^ -||borghgeog.com^ -||borgoonu.net^ -||borhaj.com^ -||borhod.com^ -||boridescyamid.com^ -||boringassistantincite.com^ -||boringbegglanced.com^ -||boriskink.com^ -||bornebeautify.com^ -||bornegypsy.com^ -||bornrefreshmentheater.com^ -||borofez.com^ -||boroniasunback.com^ -||bororango.com^ -||borotango.com^ -||boroup.com^ -||borrowdefeat.com^ -||borrowedtransition.com^ -||borrowingbalm.com^ -||borrowmarmotforester.com^ -||borumis.com^ -||borzjournal.ru^ -||bosda.xyz^ -||boshaulr.net^ -||bosodeterna.com^ -||bosomunidentifiedbead.com^ -||bosplyx.com^ -||bosquehaafs.top^ -||bossageagree.com^ -||bossdescendentrefer.com^ -||bossyinternal.pro^ -||bostonwall.com^ -||bostopago.com^ -||bot-checker.com^ -||bothele.com^ -||bothererune.com^ -||botherlightensideway.com^ -||bothsemicolon.com^ -||bothwest.pro^ -||botongfuff.uno^ -||botsaunirt.com^ -||bottelowse.guru^ -||bottledfriendship.com^ -||bottledinfectionearthquake.com^ -||bottleschance.com^ -||bottlescharitygrowth.com^ -||bottleselement.com^ -||bouchipeeju.com^ -||boudja.com^ -||boudutoo.net^ -||boughtjovialamnesty.com^ -||bouhaisaufy.com^ -||bouhoagy.net^ -||bouhtquecu.com^ -||boulevardpilgrim.com^ -||bounceads.net^ -||bouncebidder.com^ -||bouncingbalconysuperior.com^ -||bouncingtiger.online^ -||bouncy-collar.com^ -||bouncy-wheel.pro^ -||boundaryconcentrateobscene.com^ -||boundarygoose.com^ -||boundsinflectioncustom.com^ -||bouphaig.net^ -||bouptosaive.com^ -||bouqaiewfksqz.com^ -||bourbonlunches.com^ -||bourrepardale.com^ -||boustahe.com^ -||bouvierbang.com^ -||bouwehee.xyz^ -||bouwhaici.net^ -||bovemtou.xyz^ -||bovidsacate.com^ -||bowedcounty.com^ -||boweddemand.com^ -||bowerspollees.com^ -||bowerywill.com^ -||boweve.com^ -||bowldescended.com^ -||bowlinfiorite.com^ -||bowlingconcise.com^ -||bowlprick.com^ -||bowlpromoteintimacy.com^ -||bowlsolicitor.com^ -||bowmoolog.com^ -||boxappellation.com^ -||boxernightdilution.com^ -||boxernipplehopes.com^ -||boxerparliamenttulip.com^ -||boxiti.net^ -||boxlikepavers.com^ -||boxlivegarden.com^ -||boxofficehelping.com^ -||boxofwhisper.com^ -||boxtopgirts.top^ -||boxtreeteat.com^ -||boxvunkppus.com^ -||boycottcandle.com^ -||boyfriendtrimregistered.com^ -||boyishdefend.com^ -||boyishdetrimental.com^ -||boyishstatisticsdear.com^ -||boyughaye.com^ -||boyunakylie.com^ -||boywhowascr.info^ -||bp9l1pi60.pro^ -||bpaednxqd.com^ -||bpgeylke.xyz^ -||bpiomsgxkfphrg.com^ -||bpjgiwzzmgjp.com^ -||bpmvdlt.com^ -||bpmvkvb.com^ -||bpnauclcmo.xyz^ -||bpnygytgjt.com^ -||bponxqlit.com^ -||bpplkotkpduwob.com^ -||bptracking.com^ -||bptssoahsfoz.com^ -||bpwwsusgb.com^ -||bqadfytoqbyhdxs.xyz^ -||bqeuffmdobmpoe.xyz^ -||bqiajdqye.com^ -||bqieaijre.xyz^ -||bqjoskqwuiisbs.com^ -||bqklioghtnqs.com^ -||bqkwfioyd.xyz^ -||bqpvduxtfhwsd.com^ -||bqscznsc.com^ -||bqszmacv.com^ -||bqxhgnf.com^ -||br3azil334nutsz.com^ -||brabywig.live^ -||braceletdistraughtpoll.com^ -||bracerulcered.top^ -||bracespickedsurprise.com^ -||braceudder.com^ -||bracketcalculator.com^ -||bracketterminusalias.com^ -||brada.buzz^ -||bradleyscannertortoise.com^ -||bradleysolarconstant.com^ -||braflipperstense.com^ -||braggingbehave.com^ -||bragpsychicsophomore.com^ -||bragspiritualstay.com^ -||braiderichu.guru^ -||braidformulathick.com^ -||braidprosecution.com^ -||braidsagria.com^ -||brainient.com^ -||brainlessshut.com^ -||brainlyads.com^ -||brainsdulc.com^ -||braintb.com^ -||brakercorvet.top^ -||brakesequator.com^ -||brakestrucksupporter.com^ -||braketoothbrusheject.com^ -||brakiefissive.com^ -||bramblyrebecs.uno^ -||brancheschestnutsour.com^ -||branchesdollar.com^ -||branchr.com^ -||branchyherbs.uno^ -||brand-display.com^ -||brand.net^ -||brandads.net^ -||brandaffinity.net^ -||brandamen.com^ -||brandclik.com^ -||branddnewcode1.me^ -||brandlabs.ai^ -||brandnewapp.pro^ -||brandnewsnorted.com^ -||brandreachsys.com^ -||brandstds.com^ -||brandygobian.com^ -||branlesero.com^ -||brantafaking.top^ -||brashesjufti.life^ -||brasscurls.com^ -||brassstacker.com^ -||brasstrones.com^ -||brasthingut.com^ -||braveryinherited.com^ -||bravetense.com^ -||bravotrk.com^ -||brawlperennialcalumny.com^ -||brazenwholly.com^ -||brbupali.com^ -||brdhbgcp.com^ -||breadpro.com^ -||breadsincerely.com^ -||breadthneedle.com^ -||breakdownreprintsentimental.com^ -||breakfastinvitingdetergent.com^ -||breakfastsinew.com^ -||breakingarable.com^ -||breakingbailpronounce.com^ -||breakingfeedz.com^ -||breakingreproachsuspicions.com^ -||breakthroughfuzzy.com^ -||breakupbun.com^ -||breakupprediction.com^ -||breastfeedingdelightedtease.com^ -||breathelicense.com^ -||breathtakingdetachwarlock.com^ -||brecciastroke.top^ -||brechtembrowd.com^ -||bred4tula.com^ -||bredajangle.guru^ -||breechesbottomelf.com^ -||breechessteroidconsiderable.com^ -||breedergig.com^ -||breederpainlesslake.com^ -||breederparadisetoxic.com^ -||breedingperforming.com^ -||breedingpulverize.com^ -||breedselance.top^ -||breedtagask.com^ -||breezefraudulent.com^ -||brenn-wck.com^ -||brewailmentsubstance.com^ -||brewingjoie.com^ -||brewsuper.com^ -||breynvqbjwaz.top^ -||brfzpaffgni.com^ -||briareddollier.com^ -||briarsbarrer.guru^ -||bricksconsentedhanky.com^ -||bricts.com^ -||bridedeed.com^ -||brideshieldstaircase.com^ -||bridgetrack.com^ -||brief-tank.pro^ -||briefaccusationaccess.com^ -||briefcasebuoyduster.com^ -||briefengineer.pro^ -||brieflizard.com^ -||briefready.com^ -||briesziphius.com^ -||brightenpleasurejest.com^ -||brighteroption.com^ -||brighthunter.best^ -||brightonclick.com^ -||brightscarletclo.com^ -||brightshare.com^ -||brikinhpaxk.com^ -||brillianceherewife.com^ -||brimmallow.com^ -||brimmedbryozoa.com^ -||bringclockwise.com^ -||bringglacier.com^ -||bringsconserve.com^ -||briningkhalat.life^ -||brinkprovenanceamenity.com^ -||brioletredeyes.com^ -||briskedmiskept.com^ -||bristlemarinade.com^ -||bristlepuncture.com^ -||britaininspirationsplendid.com^ -||brithungown.com^ -||britishbeheldtask.com^ -||britishdividechess.com^ -||britishensureplease.com^ -||britishgrease.com^ -||britishinquisitive.com^ -||brittleraising.com^ -||brjyhgebqwl.com^ -||brksxofnsadkb.xyz^ -||brmwmmazmemmk.top^ -||bro.kim^ -||bro4.biz^ -||broadliquorsecretion.com^ -||broadsheetblaze.com^ -||broadsheetcounterfeitappeared.com^ -||broadsheetorsaint.com^ -||broadsheetspikesnick.com^ -||broadsimp.site^ -||broadsview.site^ -||brocardcored.com^ -||brocardgillar.com^ -||broced.co^ -||brocksjo.top^ -||brocode1s.com^ -||brocode2s.com^ -||brocode3s.com^ -||brocode4s.com^ -||brodmn.com^ -||brodownloads.site^ -||brogetcode1s.com^ -||brogetcode4s.cc^ -||broghpiquet.com^ -||broidensordini.com^ -||brokeloy.com^ -||brokennails.org^ -||brokerbabe.com^ -||brokercontinualpavement.com^ -||brokerspock.com^ -||brokerspunacquired.com^ -||brollmoocha.top^ -||bromidsluluai.com^ -||bromisescapose.com^ -||bromoilnapalms.com^ -||bromusic.site^ -||bromusic3s.site^ -||bronchichogset.com^ -||broncogainer.top^ -||bronzeinside.com^ -||broochtrade.com^ -||broodtoffeehaphazard.com^ -||brookbrutallovers.com^ -||brooknaturalists.com^ -||brookredheadpowerfully.com^ -||broomemulation.com^ -||broomsdoable.top^ -||bropu2.com^ -||broredir1s.site^ -||brothersparklingresolve.com^ -||broughtalienshear.com^ -||broughtenragesince.com^ -||broughtincompatiblewasp.com^ -||broweb.site^ -||brown-gas.com^ -||brownerchunam.com^ -||broworker4s.com^ -||broworker6s.com^ -||broworker7.com^ -||broworkers5s.com^ -||browse-boost.com^ -||browsedscaroid.com^ -||browserdownloadz.com^ -||browserinwrap.life^ -||browserr.top^ -||browsers.support^ -||browsesafe-page.info^ -||browsiprod.com^ -||browsobsolete.com^ -||brqhyzk.com^ -||brtenusjkmgyb.com^ -||brtsumthree.com^ -||brucelead.com^ -||bruceleadx.com^ -||bruceleadx1.com^ -||brucineborneo.top^ -||bruisedpaperworkmetre.com^ -||bruiseslumpy.com^ -||bruisesromancelanding.com^ -||bruitedhurrahs.com^ -||brumarmsful.com^ -||brunchcreatesenses.com^ -||brunetteattendanceawful.com^ -||bruntstabulae.com^ -||brupu.com^ -||bruscharogers.top^ -||brutalconfer.com^ -||brutebaalite.top^ -||bruteknack.com^ -||brutestayer.top^ -||brvkzwjrjznaw.top^ -||brvrrlnmnpvsqln.com^ -||brvuyvzdo.com^ -||brwahycubquqeu.xyz^ -||brwaraykbrkrv.top^ -||brwaraykbrmek.top^ -||brygella.com^ -||brynh-gru.com^ -||bryond.com^ -||bryovo.com^ -||bs50tds.com^ -||bsantycbjnf.com^ -||bsbrcdna.com^ -||bsfofnphcuj.com^ -||bsgbd77l.de^ -||bsgeneral.com^ -||bsginiha.com^ -||bshifsasgnpgqf.com^ -||bshrdr.com^ -||bsilzzc.com^ -||bsjusnip.com^ -||bsolaoecm.xyz^ -||bsshcuxgxtovjv.com^ -||bswakciowtsmnm.com^ -||bsxqnbhahvjrrry.com^ -||bsyftapbp.com^ -||bsyhicvmrg.com^ -||btagmedia.com^ -||btcnews.one^ -||btdirectnav.com^ -||btdnav.com^ -||btilxdpcco.com^ -||btkwlsfvc.com^ -||btnativedirect.com^ -||btodsjr.com^ -||btpnative.com^ -||btpnav.com^ -||btpremnav.com^ -||btprmnav.com^ -||btrihnvkprgnbh.xyz^ -||bttrack.com^ -||btvhdscr.com^ -||btxdbuaxn.com^ -||btxxxnav.com^ -||bu3le2lp4t45e6i.com^ -||buatru.xyz^ -||bubbledevotion.com^ -||bubbly-condition.pro^ -||bubonicgraters.space^ -||bubrintta.com^ -||buccanslabby.top^ -||buckersregiven.com^ -||buckeyekantars.com^ -||buckwheatchipwrinkle.com^ -||bucojjqcica.com^ -||budapebluest.com^ -||buddhicantilog.guru^ -||buddlekroner.com^ -||buddyassetstupid.com^ -||buddyguests.com^ -||budgepoachaction.com^ -||budgerbureaux.top^ -||budgetportrait.com^ -||budroups.xyz^ -||budsminepatent.com^ -||budvawshes.ru^ -||bueidvjdy.com^ -||buency.com^ -||buezsud.com^ -||buffalocommercialplantation.com^ -||buffcenturythreshold.com^ -||buffersling.com^ -||buffethypothesis.com^ -||buffetreboundfoul.com^ -||bugattest.com^ -||bugeyedfloral.com^ -||buggerygruffed.com^ -||bugleczmoidgxo.com^ -||buglesembarge.top^ -||bugraubs.com^ -||bugs2022.com^ -||bugsattended.com^ -||bugsenemies.com^ -||bugstractorbring.com^ -||buhatfjrk9dje10eme.com^ -||buhlvain.com^ -||buicks.xyz^ -||buikolered.com^ -||buildeddevoir.com^ -||buildfunctionrainy.com^ -||buildnaq91.site^ -||buildneighbouringteam.com^ -||buildsmodeling.com^ -||builthousefor.com^ -||builtinintriguingchained.com^ -||builtinproceeding.com^ -||bujerdaz.com^ -||bukash2jf8jfpw09.com^ -||bulbbounds.com^ -||bulbofficial.com^ -||bulcqmteuc.com^ -||bulgecsi.com^ -||bulginglair.com^ -||bulkaccompanying.com^ -||bulkd.co^ -||bulky-battle.com^ -||bulkyfriend.com^ -||bull00shit.com^ -||bull3t.co^ -||bullads.net^ -||bulletinwarmingtattoo.com^ -||bulletprofitads.com^ -||bulletprofitpop.com^ -||bulletproxy.ch^ -||bulletrepeatedly.com^ -||bullionglidingscuttle.com^ -||bullionyield.com^ -||bullyingmusetransaction.com^ -||bulochka.xyz^ -||bulrev.com^ -||bulserv.com^ -||bultaika.net^ -||bulyiel.com^ -||bumblecash.com^ -||bumlabhurt.live^ -||bummerentertain.com^ -||bummingasses.com^ -||bummockrewarm.com^ -||bumog.xyz^ -||bumpexchangedcadet.com^ -||bumphsquilla.com^ -||bumpthank.com^ -||bumpyremittancecarnivorous.com^ -||bunbeautifullycleverness.com^ -||bunchedvisards.life^ -||bundlerenown.com^ -||bunfreezer.com^ -||bungalowdispleasedwheeled.com^ -||bungaloweighteenbore.com^ -||bungalowlame.com^ -||bungalowsimply.com^ -||bungarovet.com^ -||bungeedubbah.com^ -||bungingimpasto.com^ -||bunintruder.com^ -||bunquaver.com^ -||bunth.net^ -||buoyant-force.pro^ -||buoyant-quote.pro^ -||buoycranberrygranulated.com^ -||buoydeparturediscontent.com^ -||bupatp.com^ -||bupbapegrtoamk.com^ -||bupbrosrn.com^ -||bupoeyfsfqgg.com^ -||buqajvxicma.com^ -||buqbxdqurj.xyz^ -||buqkrzbrucz.com^ -||buranablated.digital^ -||bureauelderlydivine.com^ -||bureautrickle.com^ -||bureauxcope.casa^ -||burgea.com^ -||burghkharwa.com^ -||burglaryeffectuallyderange.com^ -||burglaryrunner.com^ -||burgomeg.com^ -||burialdiffer.com^ -||burialsupple.com^ -||burlapretorted.com^ -||burlyenthronebye.com^ -||burntarcherydecompose.com^ -||burntclear.com^ -||bursarelives.uno^ -||burstcravecraving.com^ -||burstingdipper.com^ -||burstyvaleta.top^ -||burtonsugar.com^ -||burydwellingchristmas.com^ -||busbymelpell.com^ -||bushesawaitfeminine.com^ -||bushipalpate.com^ -||busilyenterprisingforetaste.com^ -||businessenviron.com^ -||businessessities.com^ -||businesslinenow.com^ -||businessmenmerchandise.com^ -||businessmensynonymmidwife.com^ -||buskerreshoes.website^ -||bussydetune.top^ -||bustlemiszone.com^ -||bustleravail.com^ -||bustling-substance.pro^ -||busychopdenounce.com^ -||busyexit.com^ -||busytunnel.com^ -||butalksuw9dj10.com^ -||butcherhashexistence.com^ -||butflatter.com^ -||butlak.com^ -||butlerdelegate.com^ -||butnefso.com^ -||butrathakinrol.com^ -||butterflyitem.com^ -||butterflypronounceditch.com^ -||butterflyunkindpractitioner.com^ -||buttersource.com^ -||buttonprofane.top^ -||buxbaumiaceae.sbs^ -||buyadvupfor24.com^ -||buyblotch.com^ -||buyeasy.by^ -||buylnk.com^ -||buymaxfield.com^ -||buyseoblog.com^ -||buythetool.co^ -||buzffovvq.com^ -||buzzardcraizey.com^ -||buzzdancing.com^ -||buzzingdiscrepancyheadphone.com^ -||buzzsawosi.com^ -||buzzvids-direct.com^ -||bvaklczasp.com^ -||bvaokbigs.com^ -||bvcsfcx.com^ -||bvepgbnjgdubvz.com^ -||bvlbcqcg.com^ -||bvmcdn.com^ -||bvmcdn.net^ -||bvoqzs.com^ -||bvtfutroyr.com^ -||bvudraqxpl.com^ -||bvyblnenz.com^ -||bwbmyzvjnqlwv.top^ -||bwbmyzvnjqwna.top^ -||bwceohkom.xyz^ -||bwgmymp.com^ -||bwmvzwkbqlmrz.top^ -||bwnmwhblsf.com^ -||bwpirrwsh.com^ -||bwpuoba.com^ -||bwunebnqdu.com^ -||bwvqjqmlkezjk.top^ -||bwzlmmqwrrnea.top^ -||bxacmsvmxb.com^ -||bxevkphcx.com^ -||bxikceucv.com^ -||bxmpcfzlllej.com^ -||bxpjpkldxrsss.xyz^ -||bxrfbsrlerio.com^ -||bxrqdnkb.com^ -||bxsk.site^ -||bxvirhgaq.com^ -||bxvlyrw.com^ -||bxvxfsdvgstu.com^ -||bxwmfozavo.com^ -||bxxiklwst.xyz^ -||bxxvmjrpegqy.com^ -||byaiufr.com^ -||byambipoman.com^ -||byaronan.com^ -||byauyahgcobvjkq.com^ -||bybastiodoner.com^ -||bybmahbyaidix.com^ -||bybyjrnrqqqqr.top^ -||byccvtl.com^ -||bycelebian.com^ -||bydusclopsa.com^ -||byeej.com^ -||byfoongusor.com^ -||bygliscortor.com^ -||bygsworlowe.info^ -||byhoppipan.com^ -||byildmkzjyjx.com^ -||byluvdiscor.com^ -||bymnyzbkylaaw.top^ -||bymnyzbkylvja.top^ -||bymyth.com^ -||bypasseaseboot.com^ -||bypassmaestro.com^ -||bypassprofessordemonstrate.com^ -||byrkmeibah.com^ -||bysqbtyuugub.com^ -||bytesdictatescoop.com^ -||bytesreunitedcedar.com^ -||bytogeticr.com^ -||byvammyzaljzl.top^ -||byvhtcpfoom.com^ -||byvmvfllobup.com^ -||byvngx98ssphwzkrrtsjhnbyz5zss81dxygxvlqd05.com^ -||byvpezdzmpureo.com^ -||bywntfg.com^ -||bywordmiddleagedpowder.com^ -||bywtdaelbjbhz.com^ -||byxcbixzvjclxz.com^ -||byyanmaor.com^ -||byzkrjamkqbal.top^ -||bzamusfalofn.com^ -||bzsiyxkvehty.com^ -||bzuyxqrmndod.com^ -||bzwo2lmwioxa.com^ -||bzzmlqyzjrrw.top^ -||c-4fambt.com^ -||c00f653366.com^ -||c019154d29.com^ -||c01d3ac9cb.com^ -||c0594.com^ -||c0ae703671.com^ -||c0c.xyz^ -||c0me-get-s0me.net^ -||c24c966867.com^ -||c2aef8ab51.com^ -||c43a3cd8f99413891.com^ -||c44wergiu87heghoconutdx.com^ -||c473f6ab10.com^ -||c5cdfd1601.com^ -||c67209d67f.com^ -||c67524ad03.com^ -||c67adca.com^ -||c71genemobile.com^ -||c7d263f5d8.com^ -||c7ee346412.com^ -||c7vw6cxy7.com^ -||c83cf15c4f.com^ -||c86e7c49a2.com^ -||c8f9398ccd.com^ -||c917ed5198.com^ -||c991aea613.com^ -||c9emgwai66zi.com^ -||c9l.xyz^ -||ca3m6ari9rllo.com^ -||ca4psell23a4bur.com^ -||ca548318cc.com^ -||ca72472d7aee.com^ -||cabbagesemestergeoffrey.com^ -||cabbingdandled.com^ -||cabdacollied.com^ -||cabhwq.com^ -||cableddubbeh.top^ -||cabnnr.com^ -||cabotsmuskit.com^ -||cachegorilla.com^ -||cachegorilla.net^ -||cachuadirked.top^ -||cacklesmalapi.top^ -||cackssandhog.com^ -||cackverbile.top^ -||cacvduyrybba.xyz^ -||cadbitff.com^ -||cadencesubject.com^ -||cadlsyndicate.com^ -||cadrctlnk.com^ -||cadsecs.com^ -||cadsimz.com^ -||cadskiz.com^ -||caeli-rns.com^ -||caesardamaging.com^ -||cafenehkikki.com^ -||cafeteriasobwaiter.com^ -||cafqeelk.com^ -||caftaistes.com^ -||cafvyfdqedjc.xyz^ -||cagakzcwyr.com^ -||cageinattentiveconfederate.com^ -||cagerssoohong.com^ -||cagesscan.com^ -||caglaikr.net^ -||caglonseeh.com^ -||cagolgzazof.com^ -||cagothie.net^ -||cagwalxhlfqszv.com^ -||cahvpbsikxvvm.xyz^ -||caibtwnpvta.xyz^ -||caicuptu.xyz^ -||caigluph.xyz^ -||caigobou.com^ -||caimoasy.net^ -||cainauhi.xyz^ -||cairalei.com^ -||caiteesh.net^ -||caizutoh.xyz^ -||cajanggaun.top^ -||cajanwammus.top^ -||cajdldhaci.com^ -||cajesa.uno^ -||cajggfj.com^ -||cajipdiqqjijeh.xyz^ -||cajrijrhov.com^ -||cajunecch.guru^ -||cakeprofessionally.com^ -||cakiglun.xyz^ -||cakycalais.com^ -||calamitydisc.com^ -||calamityfortuneaudio.com^ -||calashanterin.top^ -||calasterfrowne.info^ -||calcpol.com^ -||calculateproducing.com^ -||calendarpedestal.com^ -||calepinphrasal.com^ -||calibrelugger.com^ -||calichevigogne.com^ -||calicutscrubby.top^ -||caliphmalign.website^ -||calksenfire.com^ -||callalelel.info^ -||calledoccultimprovement.com^ -||callmeooumou.com^ -||callprintingdetailed.com^ -||callyourinformer.com^ -||calmlyilldollars.com^ -||calmlyvacuumwidth.com^ -||calmsbocking.com^ -||calomelsiti.com^ -||caltertangintin.com^ -||calumnylightlyspider.com^ -||calvali.com^ -||camads.net^ -||camberchimp.com^ -||cambridgeinadmissibleapathetic.com^ -||cambridgeincompetenceresearch.com^ -||cameesse.net^ -||camelcappuccino.com^ -||camiocw.com^ -||cammpaign.com^ -||camouque.net^ -||campingknown.com^ -||campjupiterjul.com^ -||camplacecash.com^ -||campootethys.com^ -||camprime.com^ -||camptrck.com^ -||campusmister.com^ -||cams.gratis^ -||camschat.net^ -||camshq.info^ -||camsitecash.com^ -||camsmotes.com^ -||camstime.life^ -||camusepipers.space^ -||camzap.com^ -||can-get-some.in^ -||can-get-some.net^ -||canadianbedevil.com^ -||canangafierier.uno^ -||canarystarkcoincidence.com^ -||canastagruff.com^ -||candiedguilty.com^ -||candiedtouch.com^ -||candleannihilationretrieval.com^ -||candledvenesia.com^ -||candyhiss.com^ -||candypeaches.com^ -||candyprotected.com^ -||candyschoolmasterbullying.com^ -||canededicationgoats.com^ -||canellecrazy.com^ -||canganzimbi.com^ -||cangatu.xyz^ -||canhamrolltop.uno^ -||canoemissioninjunction.com^ -||canoevaguely.com^ -||canonch.pro^ -||canoperation.com^ -||canopusacrux.com^ -||canopusacrux.top^ -||canramble.com^ -||cansdecyne.com^ -||canstrm.com^ -||cantedshackly.space^ -||canthaltietick.space^ -||cantilyza.website^ -||canvassblanketjar.com^ -||canzonicassons.com^ -||canzosswager.com^ -||caoqebfaqnswc.com^ -||cap-cap-pop.com^ -||capableimpregnablehazy.com^ -||capaciousdrewreligion.com^ -||caperedlevi.com^ -||capetumbledcrag.com^ -||caphaiks.com^ -||caphrizing.com^ -||capitalistblotbits.com^ -||capitalistlukewarmdot.com^ -||capletstyldia.com^ -||capndr.com^ -||capounsou.com^ -||cappaghdiamat.com^ -||cappens-dreperor.com^ -||cappleacouchy.com^ -||capricedes.com^ -||capricetheme.com^ -||capricewailinguniversity.com^ -||capricornplay.com^ -||caprizecaprizeretrievaltattoo.com^ -||capsulemelinda.top^ -||captainad.com^ -||captaintassie.com^ -||captchafine.live^ -||captchaforcaptcha.top^ -||captivatecustomergentlemen.com^ -||captivatepestilentstormy.com^ -||captivebleed.com^ -||captiveimpossibleimport.com^ -||captivityhandleicicle.com^ -||captureleaderdigestion.com^ -||capwilyunseen.com^ -||car-bidpush.net^ -||caraganaarborescenspendula.com^ -||carajareplier.guru^ -||caravancomplimentenabled.com^ -||carbonads.com^ -||carcflma.de^ -||cardboardexile.com^ -||cardiwersg.com^ -||cardloomed.com^ -||careersadorable.com^ -||careersletbacks.com^ -||careerslowblond.com^ -||carefoxhired.top^ -||carefree-ship.pro^ -||carelesstableinevitably.com^ -||caressleazy.com^ -||caresspincers.com^ -||careuropecreatures.com^ -||carfulsranquel.com^ -||cargodescent.com^ -||caribedkurukh.com^ -||caricaturechampionshipeye.com^ -||caringdefi.com^ -||cariousimpatience.com^ -||cariousinevitably.com^ -||carlingquerent.com^ -||carlosappraisal.com^ -||carlossteady.com^ -||carmeleanurous.com^ -||carnivalaudiblelemon.com^ -||carnivalradiationwage.com^ -||caroakitab.com^ -||carpenterexplorerdemolition.com^ -||carpfreshtying.com^ -||carpi3fnusbetgu5lus.com^ -||carpincur.com^ -||carrellsubdit.com^ -||carrierdestined.com^ -||carrydollarcrashed.com^ -||carryingfarmerlumber.com^ -||carrysincubi.com^ -||carsickpractice.com^ -||cartining-specute.com^ -||cartmansneest.com^ -||cartrigechances.com^ -||caruagedlr.com^ -||carvagemidweek.shop^ -||carvedcoming.top^ -||carverfashionablegorge.com^ -||carverfowlsmourning.com^ -||carverfrighten.com^ -||carvermotto.com^ -||carverstingy.com^ -||carvyre.com^ -||casalemedia.com^ -||casaqueapogamy.com^ -||cascademuscularbodyguard.com^ -||cascadewatchful.com^ -||casecomedytaint.com^ -||casefyparamos.com^ -||cash-ads.com^ -||cash-duck.com^ -||cash-program.com^ -||cash4members.com^ -||cashbattleindictment.com^ -||cashbeside.com^ -||cashewsforlife208.com^ -||cashibohs.digital^ -||cashieratrocity.com^ -||cashlayer.com^ -||cashmylinks.com^ -||cashooscrunode.com^ -||cashtrafic.com^ -||cashtrafic.info^ -||casinohacksforyou.com^ -||casionest292flaudient.com^ -||casize.com^ -||caskcountry.com^ -||caspion.com^ -||casquesnookie.top^ -||cassetteenergyincoming.com^ -||cassetteflask.com^ -||cassettelancefriday.com^ -||cassettesandwicholive.com^ -||cassiansirex.space^ -||castanydm.com^ -||casterpretic.com^ -||castingmannergrim.com^ -||castleconscienceenquired.com^ -||castpallium.com^ -||casualhappily.com^ -||casualproof.com^ -||casumoaffiliates.com^ -||catalogueinfectionbarbarian.com^ -||cataloguerepetition.com^ -||cataractdisinteresteddressing.com^ -||cataractencroach.com^ -||catastropheillusive.com^ -||catchymorselguffaw.com^ -||catcxao.com^ -||cateringblizzardburn.com^ -||catgride.com^ -||catharskeek.top^ -||cathedralforgiveness.com^ -||cathedralinthei.info^ -||catiligh.ru^ -||cationinin.com^ -||cationinina.one^ -||catmustyhypothesis.com^ -||cattailaix.com^ -||cattishfearfulbygone.com^ -||cattishhistoryexplode.com^ -||cattishinquiries.com^ -||cattleabruptlybeware.com^ -||cattledisplace.com^ -||catukhyistk.org^ -||catukhyistke.info^ -||catwalkoutled.com^ -||catwenbat.com^ -||catwrite.com^ -||catxkeopwc.com^ -||caubichofus.com^ -||caubouru.xyz^ -||caufirig.com^ -||cauldronrepellentcanvass.com^ -||caulifloweraircraft.com^ -||cauliflowervariability.com^ -||caulisnombles.top^ -||caunauptipsy.com^ -||caunaurou.com^ -||caunuscoagel.com^ -||causcs.com^ -||causeyoubusywithlife.com^ -||causingfear.com^ -||causingguard.com^ -||causoque.xyz^ -||caussr.com^ -||caustopa.net^ -||cauthaushoas.com^ -||cautionpursued.com^ -||cautiotumfie.com^ -||cautiousroof.pro^ -||cauvousy.net^ -||cauyuksehink.info^ -||cavalryconvincing.com^ -||cavalryoppression.com^ -||cavebummer.com^ -||cavecredentialdeer.com^ -||caveestate.com^ -||cavewrap.care^ -||caviarconcealed.com^ -||cavilerestops.com^ -||cawbarthe.com^ -||cawedburial.com^ -||cawlavzzap.com^ -||cawnielammy.com^ -||caxist.com^ -||caymanboreism.com^ -||cayoscerotin.guru^ -||cayrtgavy.xyz^ -||cayusesalaite.top^ -||cazibiukiyoe.com^ -||cb675f778b.com^ -||cb7f35d82c.com^ -||cba-fed-igh.com^ -||cba6182add.com^ -||cbbd18d467.com^ -||cbd2dd06ba.com^ -||cbdedibles.site^ -||cbfdzofxzgbgor.com^ -||cbfpiqq.com^ -||cbhvuivvkkrjrsg.com^ -||cbnkmisvop.com^ -||cbpslot.com^ -||cbvxguwbuq.com^ -||cbyiqsfp.com^ -||cbyqzt.xy^ -||cc-dt.com^ -||cc5dce551d.com^ -||cc72fceb4f.com^ -||cc954a8da8.com^ -||cca63f7d30.com^ -||ccaa0e51d8.com^ -||ccaahdancza.com^ -||ccdneniusruhebl.com^ -||ccdrofvofrfkqah.com^ -||ccgkudwutf.com^ -||ccgnxkvwn.com^ -||ccgtnryf.com^ -||ccgzcavzbmztk.com^ -||cchdbond.com^ -||ccjhtrymhhljk.com^ -||ccjzuavqrh.com^ -||ccmdcinut.com^ -||ccmiocw.com^ -||ccn08sth.de^ -||ccoybmnjw.com^ -||ccpckbb.com^ -||ccprrjr.com^ -||ccrkpsu.com^ -||cctuhqghljzdrv.com^ -||cczqyvuy812jdy.com^ -||cd490573c64f3f.com^ -||cd4d8554b1.com^ -||cd828.com^ -||cdceed.de^ -||cdctwm.com^ -||cddtsecure.com^ -||cdeaffjujxchf.com^ -||cdfcnngojhp.com^ -||cdhvrrlyrawrxqd.xyz^ -||cdiklrgwisnu.com^ -||cdkcaxxjyyb.xyz^ -||cdn-adtrue.com^ -||cdn-server.cc^ -||cdn-server.top^ -||cdn-service.com^ -||cdn.house^ -||cdn.optmn.cloud^ -||cdn.sdtraff.com^ -||cdn12359286.ahacdn.me^ -||cdn28786515.ahacdn.me^ -||cdn2cdn.me^ -||cdn2reference.com^ -||cdn3.hentaihaven.fun^ -||cdn3reference.com^ -||cdn44221613.ahacdn.me^ -||cdn4ads.com^ -||cdn4image.com^ -||cdn5.cartoonporn.to^ -||cdn7.network^ -||cdn7.rocks^ -||cdnads.com^ -||cdnapi.net^ -||cdnativ.com^ -||cdnativepush.com^ -||cdnaz.win^ -||cdnbit.com^ -||cdncontentstorage.com^ -||cdnfimgs.com^ -||cdnfreemalva.com^ -||cdngain.com^ -||cdngcloud.com^ -||cdnid.net^ -||cdnkimg.com^ -||cdnondemand.org^ -||cdnpc.net^ -||cdnpsh.com^ -||cdnquality.com^ -||cdnrl.com^ -||cdnspace.io^ -||cdntechone.com^ -||cdntestlp.info^ -||cdntrf.com^ -||cdnvideo3.com^ -||cdnware.com^ -||cdnware.io^ -||cdojukbtib.com^ -||cdosagebreakfast.com^ -||cdpqtuityras.com^ -||cdrvrs.com^ -||cdryuoe.com^ -||cdsbnrs.com^ -||cdtbox.rocks^ -||cdtxegwndfduk.xyz^ -||cduygiph.com^ -||cdwbjlmpyqtv.com^ -||cdwehdnnprdntse.com^ -||cdwmpt.com^ -||cdwmtt.com^ -||cdwyjuchsqvwa.xyz^ -||ce2c208e9f.com^ -||ceamtaaprhha.xyz^ -||ceasechampagneparade.com^ -||ceawvx.com^ -||cebidsbessel.com^ -||cecilsdolia.com^ -||cecqypgynertbfd.com^ -||ced843cd18.com^ -||ceebikoph.com^ -||ceekougy.net^ -||ceeleeca.com^ -||ceemoptu.xyz^ -||ceeqgwt.com^ -||ceezepegleze.xyz^ -||cefuthodob.com^ -||cegadazwdsp.com^ -||cegloockoar.com^ -||cegrithy.net^ -||ceilingbruiseslegend.com^ -||cekgsyc.com^ -||celeb-ads.com^ -||celebnewsuggestions.com^ -||celebratedrighty.com^ -||celebratethreaten.com^ -||celebrationfestive.com^ -||celebritybulk.com^ -||celebroun.top^ -||celebsreflect.com^ -||celeftrmfyq.xyz^ -||celept.com^ -||celeritascdn.com^ -||celeryisolatedproject.com^ -||cellaraudacityslack.com^ -||cellarlocus.com^ -||cellarpassion.com^ -||cellistbeats.com^ -||cellojapanelmo.info^ -||cellspsoatic.com^ -||celsiusours.com^ -||cemaaxyhrcaf.com^ -||cematuran.com^ -||cementobject.com^ -||cemeterybattleresigned.com^ -||cemeterysimilar.com^ -||cemiocw.com^ -||cenaclesuccoth.com^ -||cenceevent.club^ -||cendantofth.org^ -||ceneverdreams.com^ -||ceneverdreams.org^ -||cennter.com^ -||centalkochab.com^ -||centerattractivehimself.com^ -||centeredfailinghotline.com^ -||centeredmotorcycle.com^ -||centerresourceseducational.com^ -||centralnervous.net^ -||centredrag.com^ -||centrenicelyteaching.com^ -||centureunornly.com^ -||centurybending.com^ -||centwrite.com^ -||cepewelkin.com^ -||cer43asett2iu5m.com^ -||ceramicalienate.com^ -||cerceipremon.com^ -||cerealsrecommended.com^ -||cerealssheet.com^ -||ceremonyavengeheartache.com^ -||cerillosuncup.guru^ -||cerjmlcauynwxe.com^ -||certainlydisparagewholesome.com^ -||certaintyurnincur.com^ -||certificaterainbow.com^ -||certified-apps.com^ -||certifiedstarveeminent.com^ -||cervixskips.com^ -||ces2007.org^ -||cesebsir.xyz^ -||cesebtp.com^ -||cesiumsemboite.com^ -||cessationcorrectmist.com^ -||cessationhamster.com^ -||cessationrepulsivehumid.com^ -||cestibegster.com^ -||ceteembathe.com^ -||cetoniafulwa.website^ -||cevocoxuhu.com^ -||cexlaifqgw.com^ -||cexlwqgvstesfs.com^ -||cexucetum.com^ -||cf433af11b.com^ -||cf76b8779a.com^ -||cf97134c89.com^ -||cfcd10eebb.com^ -||cfcloudcdn.com^ -||cfd546b20a.com^ -||cfeb0910c5.com^ -||cfehkwjupbrh.com^ -||cfgr1.com^ -||cfgr5.com^ -||cfgrcr1.com^ -||cfikgqraxgznj.com^ -||cfivfadtlr.com^ -||cfpruxrajtnlpt.com^ -||cfrkiqyrtai.xyz^ -||cfrsoft.com^ -||cfusionsys.com^ -||cgbaybqywso.com^ -||cgeckmydirect.biz^ -||cgsjaulupnd.com^ -||cguospfen.com^ -||cgupialoensa.com^ -||cgyqybeqthaeb.com^ -||chachophigy.pro^ -||chachors.net^ -||chadseer.xyz^ -||chaeffulace.com^ -||chaerel.com^ -||chafesnitchenglish.com^ -||chagaquean.uno^ -||chaghets.net^ -||chagrinprivata.top^ -||chaibsoacmo.com^ -||chaifortou.net^ -||chailsun.com^ -||chainads.io^ -||chainconnectivity.com^ -||chaindedicated.com^ -||chainedfog.com^ -||chainerunca.com^ -||chainesergasia.com^ -||chaintopdom.nl^ -||chainwalladsery.com^ -||chainwalladsy.com^ -||chaiphuy.com^ -||chaiptut.xyz^ -||chaipungie.xyz^ -||chairgaubsy.com^ -||chairmansmile.com^ -||chaisefireballresearching.com^ -||chaistos.net^ -||chalaips.com^ -||chalehcere.com^ -||chalkedretrieval.com^ -||chalkedsuperherorex.com^ -||challengecircuit.com^ -||chambermaidthree.xyz^ -||chambershoist.com^ -||chambersinterdependententirely.com^ -||chambersthanweed.com^ -||chameleostudios.com^ -||chamiteame.com^ -||chammaupases.life^ -||champakimpaled.top^ -||champaup.com^ -||champedhyps.com^ -||chancellorharrowbelieving.com^ -||chancellorstocky.com^ -||chandoowitumki.guru^ -||changarreviver.com^ -||changedmuffin.com^ -||changerwauking.com^ -||changesshortly.com^ -||changinggrumblebytes.com^ -||changingof.com^ -||changoscressed.top^ -||channeldrag.com^ -||channelvids.online^ -||channelvids.space^ -||chantmaftir.uno^ -||chapcompletefire.com^ -||chapelalanine.com^ -||chapseel.com^ -||characterizecondole.com^ -||characterrealization.com^ -||characterrollback.com^ -||charbonbrooms.top^ -||charedecrus.top^ -||chargeheadlight.com^ -||chargenews.com^ -||chargeplatform.com^ -||chargerepellentsuede.com^ -||chargesimmoderatehopefully.com^ -||chargingforewordjoker.com^ -||charicymill.com^ -||charitydestinyscornful.com^ -||charitypaste.com^ -||charkasturnoff.com^ -||charleyobstructbook.com^ -||charmingblur.com^ -||charmingresumed.com^ -||charrewuzzer.com^ -||charsubsistfilth.com^ -||charterporous.com^ -||chartersettlingtense.com^ -||charterunwelcomealibi.com^ -||chassirsaud.com^ -||chassnincom.com^ -||chastehandkerchiefclassified.com^ -||chatheez.net^ -||chats2023.online^ -||chattedhelio.top -||chatterboxtardy.com^ -||chaubseet.com^ -||chauckee.net^ -||chauckoo.xyz^ -||chaudrep.net^ -||chaugroo.net^ -||chauinubbins.com^ -||chauksoam.xyz^ -||chaulsan.com^ -||chaunsoops.net^ -||chaursug.xyz^ -||chaussew.net^ -||chautcho.com^ -||chauwout.xyz^ -||chawedsonrai.top^ -||chbujyjyvshtcr.com^ -||chdkxgjtwflba.com^ -||cheap-trip.pro^ -||cheapcoveringpearl.com^ -||cheapenleaving.com^ -||cheatingagricultural.com^ -||cheatinghans.com^ -||cheatingstiffen.com^ -||chechawia.com^ -||check-iy-ver-172-3.site^ -||check-now.online^ -||check-out-this.site^ -||check-tl-ver-12-3.com^ -||check-tl-ver-12-8.top^ -||check-tl-ver-154-1.com^ -||check-tl-ver-17-8.com^ -||check-tl-ver-235-1.com^ -||check-tl-ver-294-2.com^ -||check-tl-ver-294-3.com^ -||check-tl-ver-54-1.com^ -||check-tl-ver-54-3.com^ -||check-tl-ver-85-1.com^ -||check-tl-ver-85-2.com^ -||check-tl-ver-94-1.com^ -||checkaf.com^ -||checkbookdisgusting.com^ -||checkcdn.net^ -||checkinggenerations.com^ -||checkluvesite.site^ -||checkm8.com^ -||checkoutfree.com^ -||checkup02.biz^ -||checkupbankruptfunction.com^ -||checkupforecast.com^ -||checkyofeed.com^ -||cheddaramusias.life^ -||cheebetoops.com^ -||cheecmou.com^ -||cheeghek.xyz^ -||cheekobsu.com^ -||cheekysleepyreproof.com^ -||cheelroo.net^ -||cheeltee.net^ -||cheemtoo.com^ -||cheepurs.xyz^ -||cheeradvise.com^ -||cheerful-resolution.com^ -||cheerful-thanks.pro^ -||cheerfullyassortment.com^ -||cheerfullybakery.com^ -||cheerfulwaxworks.com^ -||cheeringashtrayherb.com^ -||cheerlessbankingliked.com^ -||cheeroredraw.com^ -||cheerysavouryridge.com^ -||cheerysequelhoax.com^ -||cheesydebatablepantomime.com^ -||cheesyreinsplanets.com^ -||cheesythirtycloth.com^ -||cheetieaha.com^ -||cheewhoa.net^ -||chefattend.com^ -||chefblockedbass.com^ -||chefishoani.com^ -||cheksoam.com^ -||chelpe.com^ -||chelsady.net^ -||chemicsemsen.guru^ -||chemistryscramble.com^ -||chemitug.net^ -||chemtoaxeehy.com^ -||chengaib.net^ -||cheno3yp5odt7iume.com^ -||chepsoan.xyz^ -||chequeholding.com^ -||cheqzone.com^ -||cherrynanspecification.com^ -||chertefarcist.com^ -||chestishugli.com^ -||chetchen.net^ -||chetchoa.com^ -||chethgentman.live^ -||chettikmacrli.com^ -||chevetoelike.com^ -||chevyrailly.top^ -||cheweemtaig.com^ -||chewersobolary.com^ -||chewremittanceprovidence.com^ -||chewsrompedhemp.com^ -||chezenteric.top^ -||chezoams.com^ -||chfpgcbe.com^ -||chiantiriem.com^ -||chibaigo.com^ -||chibchasuffete.com^ -||chicks4date.com^ -||chicoamseque.net^ -||chiefegg.pro^ -||chieflyquantity.com^ -||chiglees.com^ -||chiglees.com^$popup -||chijauqybb.xyz^ -||chikaveronika.com^ -||childbirthprivaterouge.com^ -||childhoodtilt.com^ -||childishenough.com^ -||childperfunctoryhunk.com^ -||childrenplacidityconclusion.com^ -||childrenweavestun.com^ -||childtruantpaul.com^ -||chileslatrede.com^ -||chiliadv.com^ -||chilicached.com^ -||chilionturcism.website^ -||chimamanndgaocozmi.com^ -||chimbsbuckle.com^ -||chimeddawt.top^ -||chimerscoshing.com^ -||chimneylouderflank.com^ -||china-netwave.com^ -||chinagranddad.com^ -||chinaslauras.com^ -||chineegibbet.com^ -||chinoismoras.com^ -||chioneflake.com^ -||chipleader.com^ -||chipmanksmochus.com^ -||chirkacylal.com^ -||chiroouterly.com^ -||chirppronounceaccompany.com^ -||chitbillety.website^ -||chitchooms.net^ -||chitika.net^ -||chitsnooked.com^ -||chl7rysobc3ol6xla.com^ -||chlift.com^ -||chloralinkblot.com^ -||chmnscaurie.space^ -||chmsiecles.space^ -||chnmating.top^ -||cho7932105co3l2ate3covere53d.com^ -||choaboox.com^ -||choachim.com^ -||choacmax.xyz^ -||choaglee.com^ -||choaglocma.net^ -||choagrie.com^ -||choakalsimen.com^ -||choakaucmomt.com^ -||choapeek.com^ -||choatsufa.com^ -||choawour.xyz^ -||chocohjuanfhdhf.com^ -||chocolatebushbunny.com^ -||chocolatesingconservative.com^ -||choconart.com^ -||choiceencounterjackson.com^ -||choicesvendace.top^ -||chokedsmelt.com^ -||chokedstarring.com^ -||chokeweaknessheat.com^ -||chokupsupto.com^ -||cholatetapalos.com^ -||choobinoobi.com^ -||choocmailt.com^ -||choogeet.net^ -||choomsiesurvey.top^ -||choongou.com^ -||choongou.xyz^ -||chooptaun.net^ -||chooroogru.net^ -||chooseimmersed.com^ -||chooxail.com^ -||chooxaur.com^ -||choppedfraternityresume.com^ -||choppedtrimboulevard.com^ -||choppedwhisperinggirlie.com^ -||choptacache.com^ -||chordoay.xyz^ -||choreakrelos.com^ -||choreasjayhawk.top^ -||choregygables.life^ -||choreinevitable.com^ -||chortleflutina.com^ -||choruslockdownbumpy.com^ -||choseing.com^ -||chosenchampagnesuspended.com^ -||chosensoccerwriter.com^ -||choto.xyz^ -||chouchicky.com^ -||choudairtu.net^ -||chouftak.net^ -||choughigrool.com^ -||chounsee.xyz^ -||choupsee.com^ -||choutchi.net^ -||chouthep.net^ -||chozipeem.com^ -||chrantary-vocking.com^ -||chriahotcake.com^ -||chrif8kdstie.com^ -||chrisignateignatedescend.com^ -||chrisrespectivelynostrils.com^ -||christeningfathom.com^ -||christeningscholarship.com^ -||chrochr.com^ -||chroenl.com^ -||chrolae.com^ -||chrolal.com^ -||chronicads.com^ -||chroniclesugar.com^ -||chroococcoid.sbs^ -||chrothe.com^ -||chrysostrck.com^ -||chryvast.com^ -||chshcms.net^ -||chsrkred.com^ -||chtntr.com^ -||chubbymess.pro^ -||chuctmalo.xyz^ -||chugaiwe.net^ -||chugsorlando.com^ -||chuhramumper.com^ -||chulhawakened.com^ -||chullohagrode.com^ -||chultoux.com^ -||chumsaft.com^ -||chunkkalmias.com^ -||chunkstoreycurled.com^ -||chunkysorance.space^ -||chuptuwais.com^ -||churchalexis.com^ -||churchclassified.com^ -||churchkhela.site^ -||churchyardalludeaccumulate.com^ -||churci.com^ -||churnedflames.top^ -||churop.com^ -||chutneegeckoid.life^ -||chuxuwem.com^ -||chuxuwem.tv^ -||chvusgejxi.com^ -||chyjobopse.pro^ -||chylifycrisis.top^ -||chyxyrothi.com^ -||ciajnlhte.xyz^ -||ciazdymfepv.com^ -||cibouleamazer.com^ -||cicamica.xyz^ -||cickofou.com^ -||cideparenhem.com^ -||cidrulj.com^ -||ciedpso.com^ -||cifawsoqvawj.com^ -||cifflattie.com^ -||cifqfyafsolzb.com^ -||cigaretteintervals.com^ -||cigarettenotablymaker.com^ -||ciizxsdr.com^ -||ciksolre.net^ -||ciliarycetus.com^ -||cilvhypjiv.xyz^ -||cima-club.club^ -||cimeterbren.top^ -||cimm.top^ -||cimoghuk.net^ -||cincherdatable.com^ -||cinemagarbagegrain.com^ -||cinemahelicopterwall.com^ -||cineolesloth.com^ -||cinuraarrives.com^ -||cipangobesots.com^ -||cipdn.com^ -||cipledecline.buzz^ -||cippusforebye.com^ -||ciqahsejb.com^ -||circuitingratitude.com^ -||circulationnauseagrandeur.com^ -||circumstanceshurdleflatter.com^ -||circumstantialeltondirtiness.com^ -||circumstantialplatoon.com^ -||circusinjunctionarrangement.com^ -||circusmediocre.com^ -||cirsoaksat.net^ -||ciscoesfirring.guru^ -||cisfazpisju.com^ -||cisheeng.com^ -||cisiwa.site^ -||cissoidentera.top^ -||ciststoquets.space^ -||citadelpathstatue.com^ -||citatumpity.com^ -||citizenhid.com^ -||citizenshadowrequires.com^ -||cittem.com^ -||cityadspix.com^ -||citycoordinatesnorted.com^ -||citydsp.com^ -||citysite.net^ -||civadsoo.net^ -||civetformity.com^ -||civilizationfearfulsniffed.com^ -||civilizationmoodincorporate.com^ -||civilizationperspirationhoroscope.com^ -||civilizationthose.com^ -||civith.com^ -||ciwedsem.xyz^ -||ciwhacheho.pro^ -||cizzwykcug.com^ -||cj2550.com^ -||cjcbzqrwwi.com^ -||cjewz.com^ -||cjhkmsguxlxgy.com^ -||cjkaihej.com^ -||cjlph.com^ -||cjnktmhcukfdcq.xyz^ -||cjqncwfxrfrwbdd.com^ -||cjrlsw.info^ -||cjrvsw.info^ -||cjt3w2kxrv.com^ -||cjvdfw.com^ -||cjviracrrlrzpc.com^ -||cjwdvcxscvtehvv.xyz^ -||cjwvcewjfr.com^ -||cjxomyilmv.com^ -||cjyopjydlwkyu.com^ -||ckbynmeskffnn.com^ -||ckeyutgnwtsojbc.xyz^ -||ckfkigayvdb.com^ -||ckgsrzu.com^ -||ckiepxrgriwvbv.xyz^ -||ckjetuohm.com^ -||ckkpjtkqjqdnyom.xyz^ -||ckodsxyjdql.com^ -||ckofrnk.com^ -||ckrf1.com^ -||ckrrmwqh.com^ -||ckspodaotjotkn.com^ -||ckuwrlxngdrfk.com^ -||ckwvebqkbl.xyz^ -||ckynh.com^ -||ckywou.com^ -||cl0udh0st1ng.com^ -||cladlukewarmjanitor.com^ -||cladp.com^ -||cladsneezesugar.com^ -||cladupius.com^ -||claggeduniter.com^ -||claim-reward.vidox.net^ -||claimcousins.com^ -||claimcutejustly.com^ -||claimedentertainment.com^ -||claimedinvestcharitable.com^ -||claimedthwartweak.com^ -||clairekabobs.com^ -||clampalarmlightning.com^ -||clangearnest.com^ -||clankexpelledidentification.com^ -||clanklastingfur.com^ -||clapperfone.uno^ -||clarifyeloquentblackness.com^ -||clariniwoald.com^ -||clarityray.com^ -||clashencouragingwooden.com^ -||claspdressmakerburka.com^ -||claspedammu.com^ -||claspeddeceiveposter.com^ -||claspedtwelve.com^ -||claspluke.com^ -||claspsnuff.com^ -||classesfolksprofession.com^ -||classicbf.com^ -||classiccarefullycredentials.com^ -||classicguarantee.pro^ -||classickalunti.com^ -||classicsactually.com^ -||classicseight.com^ -||classisclawers.com^ -||claubercupels.com^ -||clauseantarcticlibel.com^ -||clauseemploy.com^ -||clausepredatory.com^ -||clausumbaret.uno^ -||claxoncapivi.com^ -||clayapologizingappreciate.com^ -||clayierglaiks.com^ -||clbaf.com^ -||clbjmp.com^ -||clcassd.com^ -||clcknads.pro^ -||clcknipop.com^ -||clckpbnce.com^ -||clcktrck.com^ -||clckysudks.com^ -||cldlr.com^ -||cldlyuc.com^ -||clean-browsing.com^ -||clean.gg^ -||cleanbrowser.network^ -||cleaneratwrinkle.com^ -||cleanerultra.club^ -||cleanflawlessredir.com^ -||cleaningmaturegallop.com^ -||cleanmediaads.com^ -||cleanmypc.click^ -||cleannow.click^ -||cleanplentifulnomad.com^ -||cleantrafficrotate.com^ -||clear-request.com^ -||clear-speech.pro^ -||clearac.com^ -||clearadnetwork.com^ -||clearancejoinjavelin.com^ -||clearancemadnessadvised.com^ -||clearancetastybroadsheet.com^ -||clearlymisguidedjealous.com^ -||clearonclick.com^ -||cleavebitemonks.com^ -||cleavepreoccupation.com^ -||cleaverinfatuated.com^ -||cleaversince.com^ -||cleddeexcl.com^ -||clefsgast.top^ -||cleftmeter.com^ -||clemencyexceptionpolar.com^ -||clementmeddling.com^ -||clementsing.com^ -||cleoidsoftish.com^ -||clerkrevokesmiling.com^ -||clerrrep.com^ -||cleverjump.org^ -||clevernesscolloquial.com^ -||clevernesswood.com^ -||clevernt.com^ -||cleverwebserver.com^ -||clevv.com^ -||clewmcpaex.com^ -||clfwrobtgqferh.xyz^ -||clicadu.com^ -||click-cdn.com^ -||click.scour.com^ -||click4free.info^ -||clickadin.com^ -||clickagy.com^ -||clickalinks.xyz^ -||clickallow.net^ -||clickandanalytics.com^ -||clickaslu.com^ -||clickbigo.com^ -||clickbooth.com^ -||clickboothlnk.com^ -||clickcash.com^ -||clickcdn.co^ -||clickco.net^ -||clickexperts.net^ -||clickgate.biz^ -||clickgate08.biz^ -||clickintext.com^ -||clickmi.net^ -||clickmobad.net^ -||clicknano.com^ -||clicknerd.com^ -||clickopop1000.com^ -||clickoutnetwork.care^ -||clickpapa.com^ -||clickperks.info^ -||clickprotects.com^ -||clickpupbit.com^ -||clickreverendsickness.com^ -||clicks4tc.com^ -||clicksgear.com^ -||clicksondelivery.com^ -||clicksor.net^ -||clickterra.net^ -||clickthruhost.com^ -||clickthruserver.com^ -||clicktimes.bid^ -||clicktraceclick.com^ -||clicktracklink.com^ -||clicktrixredirects.com^ -||clicktroute.com^ -||clicktrpro.com^ -||clickupto.com^ -||clickurlik.com^ -||clickwhitecode.com^ -||clickwinks.com^ -||clickwork7secure.com^ -||clickxchange.com^ -||clictrck.com^ -||clientoutcry.com^ -||cliffaffectionateowners.com^ -||climatestandpoint.com^ -||climathschuyt.top^ -||climbedcag.top^ -||climbskoso.com^ -||clinchpresent.com^ -||clinerybelfast.info^ -||clinkeasiestopponent.com^ -||clinkumfalsen.top^ -||clipperroutesevere.com^ -||cliqtag.net^ -||cliquedmuggish.top^ -||cliquesteria.net^ -||cliwxuqjbhg.xyz^ -||clixcrafts.com^ -||clixsense.com^ -||clixwells.com^ -||clkbnoqb.com^ -||clkepd.com^ -||clknrtrg.pro^ -||clkofafcbk.com^ -||clkrev.com^ -||clksite.com^ -||clkslvmiwadfsx.xyz^ -||clmbtech.com^ -||clmcom.com^ -||clnk.me^ -||cloba.xyz^ -||clobberprocurertightwad.com^ -||clockwisefamilyunofficial.com^ -||clockwiseleaderfilament.com^ -||clogcheapen.com^ -||clognukes.com^ -||clogstepfatherresource.com^ -||clogstrollcastle.com^ -||cloisonprecool.uno^ -||cloisteroutdooragitate.com^ -||clokemidriff.com^ -||clokeowt.com^ -||cloneabaff.com^ -||clonesmesopic.com^ -||clonkfanion.com^ -||clopembira.website^ -||clorec2.net^ -||closeattended.com^ -||closed-consequence.com^ -||closedpersonify.com^ -||closestaltogether.com^ -||closeupclear.top^ -||closvisarga.com^ -||clotezar.com^ -||clothcogitate.com^ -||clothepardon.com^ -||clothesexhausted.com^ -||clothesgrimily.com^ -||clothingsphere.com^ -||clothingtentativesuffix.com^ -||clotstupara.com^ -||clotthirstyshare.com^ -||cloud-stats.info^ -||cloudcnfare.com^ -||cloudconvenient.com^ -||clouddecrease.com^ -||cloudembed.net^ -||cloudflare.solutions^ -||cloudfrale.com^ -||cloudiiv.com^ -||cloudimagesa.com^ -||cloudimagesb.com^ -||cloudioo.net^ -||cloudlessjimarmpit.com^ -||cloudlessmajesty.com^ -||cloudlessverticallyrender.com^ -||cloudlogobox.com^ -||cloudpsh.top^ -||cloudtrack-camp.com^ -||cloudtraff.com^ -||cloudvideosa.com^ -||cloudypotsincluded.com^ -||clownunknownaffect.com^ -||clpeachcod.com^ -||clrstm.com^ -||cltmfstu.com^ -||clubpenguinclub.com^ -||cluethydash.com^ -||cluewesterndisreputable.com^ -||clumperrucksey.life^ -||clumsinesssinkingmarried.com^ -||clumsyflint.com^ -||clumsyshare.com^ -||cluodlfare.com^ -||clurvypxvji.com^ -||clusterdamages.top^ -||clutchlilts.com^ -||cluttercallousstopped.com^ -||cluttered-emphasis.pro^ -||cluttered-win.pro^ -||clvacjv.com^ -||clxlxmbtysabn.com^ -||clydetugger.com^ -||clyqguyadnebts.com^ -||cm-trk3.com^ -||cm-trk5.com^ -||cmacnumpcaoe.com^ -||cmadserver.de^ -||cmasisrjbgfv.xyz^ -||cmbestsrv.com^ -||cmclean.club^ -||cmdgbuddies.guru^ -||cmfads.com^ -||cmhoriu.com^ -||cmlwaup.com^ -||cmmcqcvwc.com^ -||cmpgfltxv.xyz^ -||cmpgns.net^ -||cmpsywu.com^ -||cmqjims.com^ -||cmrdr.com^ -||cms100.xyz^ -||cmtrkg.com^ -||cn-rtb.com^ -||cn846.com^ -||cnahoscfk.xyz^ -||cnbxqqemvuubaf.com^ -||cndcfvmc.com^ -||cndeccsqtmjyh.com^ -||cnfccdxhggrz.com^ -||cngcpy.com^ -||cnifypm.com^ -||cnmisflbwrnrtph.com^ -||cnnected.org^ -||cnt.my^ -||cntrafficpro.com^ -||cntrealize.com^ -||cntrktaieagnam.com^ -||cnysvtpu.com^ -||co5457chu.com^ -||co5n3nerm6arapo7ny.com^ -||coaboowie.com^ -||coacaips.com^ -||coagrohos.com^ -||coalbandmanicure.com^ -||coalitechloro.com^ -||coalitionfits.com^ -||coaphauk.net^ -||coaptjounces.guru^ -||coarooro.net^ -||coastdisinherithousewife.com^ -||coastlineahead.com^ -||coastlineaudiencemistletoe.com^ -||coastlinebravediffers.com^ -||coastlinejudgement.com^ -||coatassert.com^ -||coationbanyai.com^ -||coatsanguine.com^ -||coatslilachang.com^ -||coawheer.net^ -||coaxcomet.com^ -||coaxeswir.com^ -||coaxpaternalcubic.com^ -||coaxwrote.com^ -||cobalten.com^ -||cobnutsaverter.life^ -||cobwebhauntedallot.com^ -||cobweblockerdiana.com^ -||cobwebzincdelicacy.com^ -||cobworksurview.com^ -||cocaindeictic.com^ -||cocath.com^ -||coccalunhele.space^ -||coccinstuart.com^ -||coccusjailors.top^ -||cocklacock.com^ -||cocklystats.top^ -||cockyinaccessiblelighter.com^ -||cocleatalions.com^ -||cocoaadornment.com^ -||cocoaexpansionshrewd.com^ -||coconutfieryreferee.com^ -||coconutsoftenedput.com^ -||coconutsumptuousreseptivereseptive.com^ -||cocoonelectronicsconfined.com^ -||cocoontonight.com^ -||cocosyeta.com^ -||coctwomp.com^ -||codedexchange.com^ -||codefund.app^ -||codefund.io^ -||codeinagugal.com^ -||codemylife.info^ -||codeonclick.com^ -||coderformylife.info^ -||codesbro.com^ -||codezap.com^ -||coedmediagroup.com^ -||coefficientpayslipssuicide.com^ -||coefficienttolerategravel.com^ -||coehornliebig.com^ -||coelinepinal.website^ -||coendouspare.com^ -||coercehiation.com^ -||coevalscabbagy.com^ -||coexistsafetyghost.com^ -||coffeeliketime.com^ -||coffeemildness.com^ -||coffindress.com^ -||coffingfannies.top^ -||cofounderspecials.com^ -||cogentpatientmama.com^ -||cogenttriprepel.com^ -||cogentwarden.com^ -||cogitatenun.com^ -||cogitatetrailsplendid.com^ -||cogmuymatmehjr.com^ -||cognateparsley.com^ -||cognateprogrammeteenage.com^ -||cognitionmesmerize.com^ -||cognizancesteepleelevate.com^ -||cohabitrecipetransmitted.com^ -||cohade.uno^ -||cohawaut.com^ -||coherebehalf.com^ -||coherenceinvest.com^ -||coherencemessengerrot.com^ -||coherentinflationescort.com^ -||cohereoverdue.com^ -||coherepeasant.com^ -||cohertfause.uno^ -||coholy.com^ -||cohortgripghetto.com^ -||coiffesfluer.top^ -||coignsunrent.com^ -||coinad.media^ -||coinadster.com^ -||coinblocktyrusmiram.com^ -||coinio.cc^ -||coinverti.com^ -||cokepompositycrest.com^ -||colanbalkily.com^ -||colanderdecrepitplaster.com^ -||colarak.com^ -||colauxedochter.top^ -||cold-cold-freezing.com^ -||cold-priest.com^ -||coldflownews.com^ -||coldhardcash.com^ -||coldnessswarthyclinic.com^ -||coldvain.com^ -||colemalist.top^ -||colenhackbut.com^ -||colerajute.com^ -||colhickcommend.com^ -||coliassfeurytheme.com^ -||colintoxicate.com^ -||coliticmiff.guru^ -||collapsecheering.com^ -||collapsecuddle.com^ -||collarchefrage.com^ -||collecl.cc^ -||collectedroomfinancially.com^ -||collectingexplorergossip.com^ -||collectinggraterjealousy.com^ -||collection-day.com^ -||collectionspriestcardiac.com^ -||collectiveablygathering.com^ -||collectloopblown.com^ -||collectorcommander.com^ -||collectrum.com^ -||colleyporule.top^ -||collisionasheseliminate.com^ -||colloquialassassinslavery.com^ -||collowhypoxis.com^ -||colognenobilityfrost.com^ -||colognerelish.com^ -||colomboyees.com^ -||colonialismmarch.com^ -||colonialismpeachy.com^ -||colonistnobilityheroic.com^ -||coloniststarter.com^ -||colonwaltz.com^ -||colorfulspecialinsurance.com^ -||colorinmeasure.com^ -||colorschemeas.com^ -||colossalanswer.com^ -||colourevening.com^ -||colourinitiative.com^ -||colovepuquina.guru^ -||coltagainst.pro^ -||colum-rvb.com^ -||columngenuinedeploy.com^ -||columnistcandour.com^ -||columnisteverything.com^ -||com-wkejf32ljd23409system.net^ -||comafilingverse.com^ -||comalonger.com^ -||combatboatsplaywright.com^ -||combatdenotecasserole.com^ -||combatundressaffray.com^ -||combersshirt.shop^ -||combia-tellector.com^ -||combinationpalmwhiskers.com^ -||combinedexterior.com^ -||combineencouragingutmost.com^ -||combinestronger.com^ -||combitly.com^ -||combotag.com^ -||combustibleaccuracy.com^ -||come-get-s0me.com^ -||come-get-s0me.net^ -||comeadvertisewithus.com^ -||comedianthirteenth.com^ -||comelybeefyage.com^ -||comementran.info^ -||comemumu.info^ -||comenicurled.space^ -||comeplums.com^ -||cometadministration.com^ -||cometothepointaton.info^ -||comettypes.com^ -||comezz.xyz^ -||comfortable-preparation.pro^ -||comfortablehealheadlight.com^ -||comfortabletypicallycontingent.com^ -||comfortclick.co.uk^ -||comfortlessspotsbury.com^ -||comfreeads.com^ -||comfyunhealthy.com^ -||comicplanet.net^ -||comicsdashboardcombustible.com^ -||comicsscripttrack.com^ -||comihon.com^ -||comilar-efferiff.icu^ -||comitalmows.com^ -||commamarrock.top^ -||commandmentcolinclub.com^ -||commandsorganizationvariations.com^ -||commarevelation.com^ -||commastick.com^ -||commencesue.com^ -||commentaryinduce.com^ -||commentaryspicedeceived.com^ -||commercefrugal.com^ -||commercial-i30.com^ -||commercialvalue.org^ -||commiseratefiveinvitations.com^ -||commission-junction.com^ -||commissionkings.ag^ -||commissionlounge.com^ -||commitmentmeet.com^ -||committeedischarged.com^ -||committeeoutcome.com^ -||committeereconcilelibrarian.com^ -||commodityallengage.com^ -||commongratificationtimer.com^ -||commongrewadmonishment.com^ -||commonvivacious.com^ -||communicatequietboost.com^ -||comoxkitenge.com^ -||compactblackmailmossy.com^ -||compactyunker.com^ -||comparativeexclusion.com^ -||comparativevegetables.com^ -||compareddiagram.com^ -||comparedsilas.com^ -||compareproprietary.com^ -||compassionatebarrowpine.com^ -||compassionaterough.pro^ -||compasspenitenthollow.com^ -||compatibilityproduces.com^ -||compatiblepullcork.com^ -||compelgraduation.com^ -||compellingperch.com^ -||compensationdeviseconnote.com^ -||compensationpropulsion.com^ -||compensationstout.com^ -||competencesickcake.com^ -||competentminorvex.com^ -||compiledonatevanity.com^ -||compileformality.com^ -||compilegates.com^ -||complainfriendshipperry.com^ -||complainmissing.com^ -||complainstarlingsale.com^ -||complaintbasscounsellor.com^ -||complaintconsequencereply.com^ -||complaintsoperatorbrewing.com^ -||complementceased.com^ -||complementimpassable.com^ -||complementinstancesvarying.com^ -||complementparadeforbid.com^ -||complete-afternoon.pro^ -||completelywrath.com^ -||complex-relationship.com^ -||complicatedincite.com^ -||complicatedsuit.pro^ -||complicationpillsmathematics.com^ -||complicationsupervise.com^ -||complimentarycalibertwo.com^ -||complimentingredientnightfall.com^ -||complimentworth.com^ -||compositeclauseviscount.com^ -||compositeoverdo.com^ -||compositeprotector.com^ -||compositereconnectadmiral.com^ -||composureenfold.com^ -||comprehendpaying.com^ -||comprehensive3x.fun^ -||comprehensiveunconsciousblast.com^ -||compresshumpenvious.com^ -||compresssavvydetected.com^ -||compriseparameters.com^ -||compromiseadaptedspecialty.com^ -||compulsiveimpassablehonorable.com^ -||computeafterthoughtspeedometer.com^ -||comradeglorious.com^ -||comradeorientalfinance.com^ -||comunicazio.com^ -||comurbate.com^ -||comymandars.info^ -||conative.network^ -||concealedcredulous.com^ -||concealmentbrainpower.com^ -||conceitedarmpit.com^ -||conceitedblessblockade.com^ -||conceitedfedapple.com^ -||conceitslidpredicate.com^ -||conceivedtowards.com^ -||conceivedunpredictable.com^ -||conceiveequippedhumidity.com^ -||concentratebeauabsolute.com^ -||concentrationmajesticshoot.com^ -||concentrationminefield.com^ -||conceptarithmetic.com^ -||conceptualizefact.com^ -||concerneddisinterestedquestioning.com^ -||concernedwhichever.com^ -||concerntypisthumility.com^ -||conclusionsmushyburn.com^ -||concord.systems^ -||concoursegrope.com^ -||concoursestrickenpuppy.com^ -||concrete-cabinet.pro^ -||concreteapplauseinefficient.com^ -||concreteprotectedwiggle.com^ -||condemnrissole.com^ -||condensedconvenesaxophone.com^ -||condensedmassagefoul.com^ -||condensedspoon.com^ -||condescendingcertainly.com^ -||conditioneavesdroppingbarter.com^ -||condles-temark.com^ -||condodgy.com^ -||condofeijoa.top^ -||condolencespicturesquetracks.com^ -||condolencessumcomics.com^ -||condoleparticipationfable.com^ -||conductiveruthless.com^ -||conductmassage.com^ -||conductoraspirinmetropolitan.com^ -||conduit-banners.com^ -||conduit-services.com^ -||conetizable.com^ -||confabureas.com^ -||confdatabase.com^ -||confectioneryconnected.com^ -||confectionerycrock.com^ -||conferencelabourerstraightforward.com^ -||conferencesimply.com^ -||confergiftargue.com^ -||confessedensure.com^ -||confessioneurope.com^ -||confesssagacioussatisfy.com^ -||confessundercover.com^ -||confesswrihte.top^ -||confidence-x.com^ -||confidentexplanationillegal.com^ -||confideshrinebuff.com^ -||confidethirstyfrightful.com^ -||configurationluxuriantinclination.com^ -||confinecrisisorbit.com^ -||confinedexception.com^ -||confinehindrancethree.com^ -||confirmationefficiency.com^ -||confirmationevidence.com^ -||confirmationyoungsterpaw.com^ -||confirmexplore.com^ -||confiscateappellationreason.com^ -||conformcashier.com^ -||conformityblankshirt.com^ -||conformityproportion.com^ -||confounddistressedrectangle.com^ -||confrontationdrunk.com^ -||confrontationlift.com^ -||confrontationwanderer.com^ -||confrontbitterly.com^ -||confused-camera.com^ -||confusetellee.top^ -||confvtt.com^ -||congestionbeautycrystal.com^ -||congestit.com^ -||congostudia.com^ -||congratulationsgraveseem.com^ -||congressaffrayghosts.com^ -||congressbench.com^ -||congressvia.com^ -||congruousannualplanner.com^ -||conjeller-chikemon.com^ -||connectad.io^ -||connectedchaise.com^ -||connectignite.com^ -||connectingdoll.com^ -||connectingresort.com^ -||connectionsdivide.com^ -||connectionsoathbottles.com^ -||connectreadoasis.com^ -||connecttoday.eu^ -||connexplace.com^ -||connextra.com^ -||connotethembodyguard.com^ -||conoret.com^ -||conqueredallrightswell.com^ -||conquereddestination.com^ -||conquerleaseholderwiggle.com^ -||conquestafloat.com^ -||conquestdrawers.com^ -||conscienciaecompletude.com^ -||consciousness2.fun^ -||consciousnessmost.com^ -||consciousslice.com^ -||consecutionwrigglesinge.com^ -||consensusarticles.com^ -||consensushistorianarchery.com^ -||consensusindustryrepresentation.com^ -||consequentlydistraughtpasta.com^ -||conservationdisposable.com^ -||conservationlumber.com^ -||consessionconsessiontimber.com^ -||considerate-brief.pro^ -||consideratepronouncedcar.com^ -||consideringscallion.com^ -||consistedlovedstimulate.com^ -||consistinedibleconnections.com^ -||consistpromised.com^ -||consmo.net^ -||consoupow.com^ -||constableleapedrecruit.com^ -||constellationdelightfulfull.com^ -||constellationtrafficdenounce.com^ -||consternationbale.com^ -||consternationmysticalstuff.com^ -||constintptr.com^ -||constitutekidnapping.com^ -||constraingood.com^ -||constraintarrearsadvantages.com^ -||constructbrought.com^ -||constructionjeffben.com^ -||constructionrejection.com^ -||constructivesmoking.com^ -||constructpiece.com^ -||constructpoll.com^ -||constructpreachystopper.com^ -||consukultinge.info^ -||consukultingeca.com^ -||consultantpatientslaughter.com^ -||consultantvariabilitybandage.com^ -||consultation233.fun^ -||consultingballetshortest.com^ -||contadd.com^ -||contagiongrievedoasis.com^ -||contagionwashingreduction.com^ -||containinglayrefund.com^ -||containingwaitdivine.com^ -||containsmedievalcorrectly.com^ -||containssubordinatecologne.com^ -||containswasoccupation.com^ -||contalyze.com^ -||contaminatefollow.com^ -||contaminatespontaneousrivet.com^ -||contehos.com^ -||contekehissing.top^ -||contemplatepuddingbrain.com^ -||contemporarytechnicalrefuge.com^ -||content-ad.net^ -||content-rec.com^ -||contentabc.com^ -||contentango.com^ -||contentango.online^ -||contentcave.co.kr^ -||contentclick.co.uk^ -||contentedinterimregardless.com^ -||contentedsensationalprincipal.com^ -||contentjs.com^ -||contentmentchef.com^ -||contentmentfairnesspesky.com^ -||contentmentwalterbleat.com^ -||contentmentweek.com^ -||contentr.net^ -||contentshamper.com^ -||contextweb.com^ -||continentalaileendepict.com^ -||continentalfinishdislike.com^ -||continentcoaximprovement.com^ -||continuallycomplaints.com^ -||continuallyninetysole.com^ -||continue-installing.com^ -||continuedhostilityequipped.com^ -||continuousformula.com^ -||continuousowenspaniard.com^ -||continuousselfevidentinestimable.com^ -||contradiction2.fun^ -||contradictionclinch.com^ -||contradictshaftfixedly.com^ -||contributorfront.com^ -||contributorshaveangry.com^ -||contried.com^ -||contrivancefrontage.com^ -||controversialarableprovide.com^ -||controversydeliveredpoetry.com^ -||conumal.com^ -||convalescemeltallpurpose.com^ -||convdlink.com^ -||convenienceappearedpills.com^ -||conveniencepickedegoism.com^ -||convenientcertificate.com^ -||conventforgotten.com^ -||conventional-nurse.pro^ -||conventionalrestaurant.com^ -||convers.link^ -||conversationwaspqueer.com^ -||convertedbumperbiological.com^ -||convertedhorace.com^ -||convertmb.com^ -||convictedpavementexisting.com^ -||convincedpotionwalked.com^ -||convincedtrick.com^ -||convrse.media^ -||convsweeps.com^ -||conyak.com^ -||cooeyeddarbs.com^ -||coogauwoupto.com^ -||coogoocy.com^ -||coogumak.com^ -||coojaiku.com^ -||cookerybands.com^ -||cookeryeighth.com^ -||cookerywrinklefad.com^ -||cookieless-data.com^ -||cookinghither.com^ -||cookingsorting.com^ -||cool.sunporno.com^ -||coolappland.com^ -||coolappland1.com^ -||coolappland2.com^ -||coolappland4.com^ -||coolappland5.com^ -||coolehim.xyz^ -||coolerpassagesshed.com^ -||coolestblockade.com^ -||coolherein.com^ -||coolingstiffenlegend.com^ -||cooljony.com^ -||coollyadmissibleclack.com^ -||coolnesswagplead.com^ -||cooloffer.cfd^ -||coolpornvids.com^ -||coolserving.com^ -||coolstreamsearch.com^ -||coolthkerner.com^ -||coolungceil.top^ -||coombomniana.top^ -||coonandeg.xyz^ -||cooperativechuckledhunter.com^ -||coordinatereopen.com^ -||cooserdozens.top^ -||cooshouz.xyz^ -||coosync.com^ -||cootersorry.com^ -||cootlogix.com^ -||coovouch.com^ -||copacet.com^ -||copeaxe.com^ -||copemorethem.live^ -||copesfirmans.com^ -||copiedglittering.com^ -||copieraback.com^ -||copieranewcaller.com^ -||copiercarriage.com^ -||copterezba.com^ -||coptisphraser.top^ -||copusorpinc.guru^ -||copymannantz.com^ -||copyrightmonastery.com^ -||coqfsqikizcd.com^ -||cor8ni3shwerex.com^ -||coralsurveyed.com^ -||cordclck.cc^ -||cordinghology.info^ -||core.dimatter.ai^ -||coreevolutionadulatory.com^ -||coreexperiment.com^ -||corenotabilityhire.com^ -||coreportions.com^ -||coresepyllia.com^ -||corialthanes.life^ -||corixaraphide.top^ -||corneey.com^ -||corneredcommunicationcancel.com^ -||cornerscheckbookprivilege.com^ -||cornersindecisioncertified.com^ -||cornflowercopier.com^ -||cornflowershallow.com^ -||coronafly.ru^ -||coronationinjurynoncommittal.com^ -||coronetkittles.com^ -||corporatethankfulfinding.com^ -||corpsehappen.com^ -||corpsesrgen.top^ -||corpulentoverdoselucius.com^ -||corpulentrubber.com^ -||correctcitolas.com^ -||correctionsnailnestle.com^ -||correlationcocktailinevitably.com^ -||correspondaspect.com^ -||corroticks285affrierson.com^ -||corruptclients.com^ -||corruptsolitaryaudibly.com^ -||corsakpeize.com^ -||corvinapaella.life^ -||corymbszinzar.com^ -||cosesgabbles.top^ -||cosiequiapo.com^ -||cosignpresentlyarrangement.com^ -||cosmatitacker.top^ -||cosmeticlevy.com^ -||cosmeticsgenerosity.com^ -||cosmicpartially.com^ -||cosmismnatchez.com^ -||cosseterrits.com^ -||costaquire.com^ -||costatevamped.com^ -||costhandbookfolder.com^ -||costsimperialapparent.com^ -||coststunningconjure.com^ -||costumebodiesfires.com^ -||cosysuppressed.com^ -||cotatholt.net^ -||cotchaug.com^ -||coticoffee.com^ -||cotingavintry.website^ -||cotorosmileway.top^ -||cottoidearldom.com^ -||cottoncabbage.com^ -||cottondivorcefootprint.com^ -||cotwcpcjcrjfj.xyz^ -||coubte.com^ -||coudswamper.com^ -||couhiboa.com^ -||coulaupsoa.net^ -||couldburgeon.com^ -||couldmisspell.com^ -||couldobliterate.com^ -||coumasha.xyz^ -||counaupsi.com^ -||counciladvertising.net^ -||councilheader.com^ -||counsellinggrimlyengineer.com^ -||counsellingrouge.com^ -||countdownlogic.com^ -||countdownwildestmargarine.com^ -||countenancepeculiaritiescollected.com^ -||counteractpull.com^ -||counterfeitbear.com^ -||counterfeitnearby.com^ -||countertrck.com^ -||countessrestrainasks.com^ -||countriesnews.com^ -||countrynot.com^ -||countybananasslogan.com^ -||countypuddleillusion.com^ -||coupageoutrant.guru^ -||coupbezzant.com^ -||couplestupidity.com^ -||coupocee.xyz^ -||coupsonu.net^ -||coupteew.com^ -||couptoug.net^ -||courageimportancedirections.com^ -||courageousaway.com^ -||courierembedded.com^ -||couriree.xyz^ -||coursebonfire.com^ -||coursebrushedassume.com^ -||courteous-development.com^ -||courthousedefective.com^ -||courthouselaterfunctions.com^ -||courtroomboyfriend.com^ -||cousinglandsgreed.com^ -||cousingypsy.com^ -||cousinscostsalready.com^ -||coutherunlawed.website^ -||couthieisobath.com^ -||coutilresgat.com^ -||couwainu.xyz^ -||couwhivu.com^ -||couwooji.xyz^ -||coveredbetting.com^ -||coveredsnortedelectronics.com^ -||coveredstress.com^ -||covisithebraic.com^ -||covivado.club^ -||cow-timerbudder.org^ -||cowagesabaca.life^ -||cowerscrowers.top^ -||cowtpvi.com^ -||coxaripply.top^ -||coxiesthubble.com^ -||coxosots.xyz^ -||coxziptwo.com^ -||coysjayesh.com^ -||coyward.com^ -||cozeswracks.com^ -||cpa-optimizer.online^ -||cpa3iqcp.de^ -||cpabeyond.com^ -||cpaclicks.com^ -||cpaconvtrk.net^ -||cpalabtracking.com^ -||cpaoffers.network^ -||cpaokhfmaccu.com^ -||cpaspeed.online^ -||cpaway.com^ -||cpays.com^ -||cpbj8ddae04d.shop^ -||cpcmart.com^ -||cpcvabi.com^ -||cpddwyuyd.com^ -||cpl1.ru^ -||cplayer.pw^ -||cpm-ad.com^ -||cpm.biz^ -||cpm20.com^ -||cpmadvisors.com^ -||cpmclktrk.online^ -||cpmgatenetwork.com^ -||cpmmedia.net^ -||cpmnetworkcontent.com^ -||cpmprofitablecontent.com^ -||cpmprofitablenetwork.com^ -||cpmrevenuenetwork.com^ -||cpmrocket.com^ -||cpmspace.com^ -||cpmtree.com^ -||cpng.lol^ -||cppkmmthkpttbb.com^ -||cpqgyga.com^ -||cpsbgpeenci.com^ -||cptroux.com^ -||cpuim.com^ -||cpvads.com^ -||cpvadvertise.com^ -||cpvlabtrk.online^ -||cpx24.com^ -||cpxadroit.com^ -||cpxckfridcxst.com^ -||cpxdeliv.com^ -||cpxinteractive.com^ -||cpzafxhkt.com^ -||cpzqvkjrcymhv.com^ -||cqbmddliqbbp.com^ -||cqdalradz.com^ -||cqdaznl.com^ -||cqddhfjl.com^ -||cqdlfqgsnjyyhew.com^ -||cqfqrvghjgu.com^ -||cqhqvgwcypx.xyz^ -||cqkhdhrpo.com^ -||cqlsewa.com^ -||cqlupb.com^ -||cqmmacgxqhmk.com^ -||cqngirxstgeeg.com^ -||cqnmtmqxecqvyl.com^ -||cqpiumcjacb.com^ -||cqqmwkkkfntjr.com^ -||cqrvwq.com^ -||cqwajn.com^ -||cr-brands.net^ -||cr.adsappier.com^ -||cr00.biz^ -||cr08.biz^ -||crabdefend.com^ -||craccaanybody.com^ -||craccusduchery.com^ -||crackbroadcasting.com^ -||crackquarrelsomeslower.com^ -||cracktraumatic.com^ -||crackyunfence.com^ -||cradspbsdarltng.com^ -||craftsmancaptivity.com^ -||craftsmangraygrim.com^ -||craftsmanvolleyballhist.com^ -||crafty-math.com^ -||craharice.com^ -||crajeon.com^ -||crakbanner.com^ -||crampcrossroadbaptize.com^ -||crampincompetent.com^ -||cranebecomingwindfall.com^ -||craneykori.uno^ -||cranialjehu.com^ -||crankerunborn.com^ -||crankyderangeabound.com^ -||crashexecute.com^ -||crateralbumcarlos.com^ -||craterwhsle.com^ -||crateshoover.com^ -||craveidentificationanoitmentanoitment.com^ -||crawledlikely.com^ -||crayfishremindembroider.com^ -||crayfishshepherd.com^ -||crayonreareddreamt.com^ -||crazy-baboon.com^ -||crazyhell.com^ -||crazylead.com^ -||crbbgate.com^ -||crcgrilses.com^ -||crdefault.link^ -||crdefault1.com^ -||crdfifmrm.com^ -||creaghtain.com^ -||creamssicsite.com^ -||creaperu.com^ -||createsgummous.com^ -||creative-bars1.com^ -||creative-serving.com^ -||creativecdn.com^ -||creativedisplayformat.com^ -||creativefix.pro^ -||creativeformatsnetwork.com^ -||creativesumo.com^ -||creativetourlips.com^ -||creatorpassenger.com^ -||creaturescoinsbang.com^ -||creaturespendsfreak.com^ -||crectipumlu.com^ -||credentialsdispatchsuperstitious.com^ -||credentialsfont.com^ -||credentialstrapdoormagnet.com^ -||credibilitystakehemisphere.com^ -||credibilityyowl.com^ -||creditbitesize.com^ -||creditorapido.xyz^ -||credotrigona.com^ -||credulityicicle.com^ -||creedoverwork.com^ -||creekrecollectkey.com^ -||creeksettingbates.com^ -||creepercard.com^ -||creeperfutileforgot.com^ -||creepingbrings.com^ -||creeppant.com^ -||creepyassist.pro^ -||creepybuzzing.com^ -||crematedarkerdwight.com^ -||crengate.com^ -||crentexgate.com^ -||creojnpibos.com^ -||crepeyindited.top^ -||crepgate.com^ -||creptdeservedprofanity.com^ -||cresfpho2ntesepapillo3.com^ -||crestfallenwall.com^ -||crestislelocation.com^ -||cretgate.com^ -||creticoutdid.com^ -||crevicedepressingpumpkin.com^ -||crevnrela.com^ -||crfmbxqrf.xyz^ -||cribbewildered.com^ -||cribwarilyintentional.com^ -||cricksnatchez.com^ -||criesnonstopbake.com^ -||criesresentstrangely.com^ -||crimeevokeprodigal.com^ -||criminalalcovebeacon.com^ -||criminalmention.pro^ -||criminalweightforetaste.com^ -||crimpedmelanic.com^ -||crimsondozeprofessional.com^ -||crippledwingant.com^ -||crisistuesdayartillery.com^ -||crisp-freedom.com^ -||crispdune.com^ -||crispentirelynavy.com^ -||crisphybridforecast.com^ -||crisppennygiggle.com^ -||critariatele.pro^ -||criticaltriggerweather.com^ -||criticismheartbroken.com^ -||criticpraiser.com^ -||crittercorupay.com^ -||crjdgldmb.com^ -||crjpgate.com^ -||crjpingate.com^ -||crlkyzwra.com^ -||crm4d.com^ -||crmentjg.com^ -||crmpt.livejasmin.com^ -||crnhbkd.com^ -||crninkvhariuh.com^ -||croakconfirmedget.com^ -||croceussmitter.click^ -||crockejection.com^ -||crockerycrowdedincidentally.com^ -||crockuncomfortable.com^ -||crocopop.com^ -||cromq.xyz^ -||crookrally.com^ -||croplake.com^ -||crossroadoutlaw.com^ -||crossroadparalysisnutshell.com^ -||crossroadsubquery.com^ -||crossroadzealimpress.com^ -||crostrhombs.space^ -||crouchyearbook.com^ -||croupyjacu.life^ -||crowdgravity.com^ -||crowdnextquoted.com^ -||crownswoden.space^ -||crozzleaclydes.space^ -||crptentry.com^ -||crptgate.com^ -||crrepo.com^ -||crsspxl.com^ -||crtracklink.com^ -||crubtokopat.top^ -||crucishockled.top^ -||crudedelicacyjune.com^ -||crudelouisa.com^ -||crudemonarchychill.com^ -||crudequeenrome.com^ -||cruel-national.pro^ -||cruiserx.net^ -||cruisetitleclosed.com^ -||crumblerefunddiana.com^ -||crumbrationally.com^ -||crumbtypewriterhome.com^ -||crummerexisted.com^ -||crummygoddess.com^ -||crumplylenient.com^ -||crunchslipperyperverse.com^ -||crunchylashins.com^ -||crushedignoring.com^ -||crushingconflict.pro^ -||crusilyparonym.com^ -||cruthdivisi.life^ -||crvxhuxcel.com^ -||crxekxjpiktykjb.com^ -||crxmaotidrf.xyz^ -||crxxfgswiq.com^ -||cryingforanythi.com^ -||cryjun.com^ -||cryonickru.com^ -||cryorganichash.com^ -||cryptoatom.care^ -||cryptobeneluxbanner.care^ -||cryptomaster.care^ -||cryptomcw.com^ -||cryptonewsdom.care^ -||cryptotyc.care^ -||cschyogh.com^ -||csfabdtmrs.com^ -||csggmxrbt.com^ -||cshbyjjgdtc.com^ -||csjuq.com^ -||csoatmxpcv.xyz^ -||csoxbkscuflef.com^ -||cspchemung.guru^ -||cspdimfa.com^ -||csqgebok.com^ -||csqtsjm.com^ -||csrrxwd.com^ -||csscloudstorage.com^ -||cstoeydbhdgrlp.com^ -||csvlgqsanwry.com^ -||ctasnet.com^ -||ctationsele.info^ -||ctefeminin.com^ -||ctengine.io^ -||cteripre.com^ -||cthisismoych.com^ -||cthkgodgy.com^ -||ctiarbwaxam.com^ -||ctiascaqkn.com^ -||ctiawbxvhajg.com^ -||cticalwhichhere.info^ -||ctiotjobkfu.com^ -||ctm-media.com^ -||ctmdtrvikipjfv.xyz^ -||ctnsnet.com^ -||ctoosqtuxgaq.com^ -||ctosrd.com^ -||ctpdegbeqlejw.com^ -||ctqwlbxq.com^ -||ctrlaltdel99.com^ -||ctrtrk.com^ -||ctsdwm.com^ -||ctthatmyeduca.net^ -||ctubhxbaew.com^ -||ctvnmxl.com^ -||ctwlucwq.com^ -||ctykxlvztyy.com^ -||cubbingrebbes.com^ -||cubchillysail.com^ -||cubeslichees.com^ -||cubeuptownpert.com^ -||cubgeographygloomily.com^ -||cubicnought.com^ -||cuckooretire.com^ -||cuculf.name^ -||cucuyoalkoxy.com^ -||cuddleangkhak.com^ -||cuddlethehyena.com^ -||cudgeletc.com^ -||cudgelsupportiveobstacle.com^ -||cudwortparve.top^ -||cuefootingrosy.com^ -||cueistratting.com^ -||cuesingle.com^ -||cuevastrck.com^ -||cuferxmtvifnu.com^ -||cugeeksy.net^ -||cuhlsl.info^ -||cuifspyvuril.com^ -||cuisineenvoyadvertise.com^ -||cuisineomnipresentinfinite.com^ -||cuissenbisque.com^ -||culass.com^ -||cullemple-motline.com^ -||culmedpasses.cam^ -||cultergoy.com^ -||cultismcanty.space^ -||culturalcollectvending.com^ -||cumbersomeastonishedsolemn.com^ -||cumbersomebonus.com^ -||cumbersomesteedominous.com^ -||cumjroatzga.com^ -||cumult.com^ -||cunazarp.website^ -||cunyiesus.com^ -||cupboardbangingcaptain.com^ -||cupidirresolute.com^ -||cupidonmedia.com^ -||cupidrecession.com^ -||cupidsirised.guru^ -||cupidtriadperpetual.com^ -||cupindisputable.com^ -||cuplikenominee.com^ -||cupoabie.net^ -||cupswiss.com^ -||cupulaeveinal.top^ -||curaripeiktha.top^ -||curbimpress.com^ -||curinetuxedos.com^ -||curledbuffet.com^ -||curlingtyphon.com^ -||curlsl.info^ -||curlsomewherespider.com^ -||curlyhomes.com^ -||curnberthed.com^ -||currantsummary.com^ -||currencychillythoughtless.com^ -||currencyoffuture.com^ -||curriculture.com^ -||curryoxygencheaper.com^ -||cursecrap.com^ -||cursedspytitanic.com^ -||cursegro.com^ -||curseintegralproduced.com^ -||cursordownstairs.com^ -||cursormedicabnormal.com^ -||cursorsympathyprime.com^ -||curtisbarways.com^ -||curude.com^ -||curveyberberi.com^ -||curvierannexa.com^ -||curvyalpaca.cc^ -||curyalanyl.guru^ -||cuseccharm.com^ -||cusecwhitten.com^ -||cushawbaized.com^ -||cushawsdizens.com^ -||cushingpouncet.top^ -||cushionblarepublic.com^ -||cusilbwq.xyz -||cuslsl.info^ -||cuspedeogaean.top^ -||custodybout.com^ -||custodycraveretard.com^ -||custodycrutchfaintly.com^ -||customads.co^ -||customapi.top^ -||customarydesolate.com^ -||customsalternative.com^ -||customselliot.com^ -||cuterbond.com^ -||cuterintegrationcrock.com^ -||cutescale.online^ -||cutesyapaise.com^ -||cutlersbahaism.com^ -||cuttingdemeanoursuperintend.com^ -||cuttingstrikingtells.com^ -||cuttlefly.com^ -||cuyynol.com^ -||cuzsgqr.com^ -||cvastico.com^ -||cvcvotjyasdtil.com^ -||cvixthukvgac.com^ -||cvjfmrrgyrqnsnw.xyz^ -||cvkilmfhorl.com^ -||cvkxfsnvpjvcw.com^ -||cvmeayhfo.com^ -||cvnpbsqyiy.com^ -||cvqgnkeqme.com^ -||cvrkjnaoazazh.com^ -||cvtfyyflrrkjsam.xyz^ -||cvuduufdewm.com^ -||cvuvoljuqlkeuc.com^ -||cvyimypsjxca.com^ -||cwhrfkpniuvkn.xyz^ -||cwixbvnnndpe.xyz^ -||cwlvmsvmqqgzb.com^ -||cwobfddy.com^ -||cwqggdbsuksb.com^ -||cwqljsecvr.com^ -||cwrlnhyfheafllk.xyz^ -||cwuaxtqahvk.com^ -||cwvfikunas.com^ -||cxafxdkmusqxsa.xyz^ -||cxeiymnwjyyi.xyz^ -||cxfrmhsj.com^ -||cxgicdcfou.com^ -||cxgneqyaox.com^ -||cxgnymgd.xyz^ -||cxhhvmkwfh.com^ -||cxhqpbwmyfskzt.com^ -||cxiebfdqydf.com^ -||cxkhadk.com^ -||cxmnsbrbdmxoyd.com^ -||cxnadcribh.com^ -||cxotiggg.com^ -||cxrfoubqoxnk.com^ -||cxtkpfbvu.com^ -||cxuipktdlwtimj.com^ -||cxwqeehw.com^ -||cyacoxsgxjdylpy.com^ -||cyamidfenbank.life^ -||cyan92010.com^ -||cyathosaloesol.top^ -||cybershieldfortress.buzz^ -||cybersugardrew.com^ -||cybertronads.com^ -||cybkit.com^ -||cycledaction.com^ -||cycleworked.com^ -||cyclistforgotten.com^ -||cycndlhot.xyz^ -||cydippeespy.com^ -||cyeqeewyr.com^ -||cyesesprerich.com^ -||cygnus.com^ -||cyih0e43aty7.com^ -||cyijr.com^ -||cyilxkpkf.com^ -||cykcxgsvg.com^ -||cylindermonastery.com^ -||cylindrical-form.com^ -||cylnkee.com^ -||cylsszrrfbkgjf.com^ -||cymqhqxuchas.com^ -||cymtiadhurrie.com^ -||cyneburg-yam.com^ -||cynicochred.shop^ -||cyprecaccia.guru^ -||cypresslocum.com^ -||cypressreel.com^ -||cyprie.com^ -||cyrigh.com^ -||cyrxvpnu.com^ -||cystisolor.com^ -||cythat.com^ -||cyvjmnu.com^ -||cyyhkeknmbe.com^ -||czaraptitude.com^ -||czboox.xyz^ -||czechose.com^ -||czedgingtenges.com^ -||czfpgkujv.com^ -||czfyaemtweo.com^ -||czh5aa.xyz^ -||czvdyzt.com^ -||czwxrnv.com^ -||czyoxhxufpm.com^ -||d-agency.net^ -||d03804f2c8.com^ -||d05571f85f.com^ -||d0870e04a5.com^ -||d0efb7d9aeb478d.com^ -||d0main.ru^ -||d13babd868.com^ -||d24ak3f2b.top^ -||d26e83b697.com^ -||d28dc30335.com^ -||d29gqcij.com^ -||d2a4qm4se0se0m.cloudfront.net^ -||d2af63b326.com^ -||d2d7bba154.com^ -||d2e3e68fb3.com^ -||d2ship.com^ -||d36f31688a.com^ -||d37914770f.com^ -||d3befd5a11.com^ -||d3c.life^ -||d3c.site^ -||d3da127b69.com^ -||d44501d9f7.com^ -||d483501b04.com^ -||d4b138a7aa.com^ -||d4c7df9561.com^ -||d52a6b131d.com^ -||d56cfcfcab.com^ -||d592971f36.com^ -||d59936b940.com^ -||d6030fe5c6.com^ -||d65a1fbe58.com^ -||d6a206cf07.com^ -||d6f8c08166.com^ -||d6jfiirio372.com^ -||d71022cc68.com^ -||d72gb9oukw3j.com^ -||d78eee025b.com^ -||d7c01d241b.com^ -||d7c6491da0.com^ -||d7e13aeb98.com^ -||d871f74395.com^ -||d90be87e47.com^ -||d9fb2cc166.com^ -||d9kvn70l4ogn.com^ -||da-ads.com^ -||da066d9560.com^ -||da77842b9c.com^ -||daailynews.com^ -||dabblercissies.com^ -||dabbyfather.com^ -||daboovip.xyz^ -||daccroi.com^ -||dacmaiss.com^ -||dacmursaiz.xyz^ -||dacnmevunbtu.com^ -||dacpibaqwsa.com^ -||dacronblanchi.guru^ -||dadsats.com^ -||dadsimz.com^ -||dadslimz.com^ -||dadsoks.com^ -||dadzidmisbmja.com^ -||daedaelousscri.com^ -||daejyre.com^ -||daemonshymens.com^ -||daffaite.com^ -||daffyfleecy.top^ -||daggapartley.life^ -||daggerwantedliterally.com^ -||dahdnicllhos.com^ -||daiboit.com^ -||daicagrithi.com^ -||daichoho.com^ -||daichukoah.net^ -||daicoaky.net^ -||daikeethoo.com^ -||daikersscrim.website^ -||daikorm.com^ -||dailyalienate.com^ -||dailyc24.com^ -||dailychronicles2.xyz^ -||dailyvids.space^ -||daimfkgotytcqld.com^ -||daimioswhimper.com^ -||daintydragged.com^ -||dairebougee.com^ -||dairouzy.net^ -||dairyworkjourney.com^ -||daistii.com^ -||daiteshu.net^ -||daithithapta.net^ -||daiwheew.com^ -||daizoode.com^ -||dajkq.com^ -||dakjddjerdrct.online^ -||dalecigarexcepting.com^ -||dalecta.com^ -||daleperceptionpot.com^ -||dalethsfanout.com^ -||daliapama.com^ -||dallavel.com^ -||dallthroughthe.info^ -||daluxmurwthhk.com^ -||dalyai.com^ -||dalyio.com^ -||dalymix.com^ -||dalysb.com^ -||dalysh.com^ -||dalysv.com^ -||damagecontributionexcessive.com^ -||damaged-fix.pro^ -||damagedmissionaryadmonish.com^ -||dameadept.com^ -||damedamehoy.xyz^ -||damianafulani.com^ -||damnightmareleery.com^ -||damozelmikvahs.com^ -||dampapproach.com^ -||dampwarabi.com^ -||dana123.com^ -||danaineirrupt.top^ -||dancefordamazed.com^ -||dandelionnoddingoffended.com^ -||dandilysterna.com^ -||dandyblondewinding.com^ -||dandylowestpalsy.com^ -||danesuffocate.com^ -||dangerfiddlesticks.com^ -||dangeridiom.com^ -||dangerinsignificantinvent.com^ -||dangerouslyeragruff.com^ -||dangerouslyprudent.com^ -||dangerousratio.pro^ -||dangerswitty.com^ -||dangingspuggy.top^ -||danmounttablets.com^ -||dansanttina.com^ -||dantasg.com^ -||dantbritingd.club^ -||danzhallfes.com^ -||daphnews.com^ -||dappaa.site^ -||dappab.site^ -||dappac.site^ -||dapper.net^ -||dapperaside.pro^ -||dapperdeal.pro^ -||dapro.cloud^ -||dapsotsares.com^ -||daptault.com^ -||daqpmkraxkwnny.com^ -||darcycapacious.com^ -||daredcoil.com^ -||darghinruskin.com^ -||daringcooper.com^ -||daringsupport.com^ -||dariolunus.com^ -||darkandlight.ru^ -||darkdepthdriller.top^ -||darkercoincidentsword.com^ -||darkerillegimateillegimateshade.com^ -||darkerprimevaldiffer.com^ -||darkestfertil.com^ -||darknesschamberslobster.com^ -||darksmartproprietor.com^ -||darksumgaults.com^ -||darlingfrightenunit.com^ -||darnvigour.com^ -||darrylfuranes.top^ -||dartonim.com^ -||darvorn.com^ -||darwinpoems.com^ -||dasensiblem.org^ -||dasesiumworkhovdimi.info^ -||dasfelynsaterr.win^ -||dashbida.com^ -||dashbo15myapp.com^ -||dashboardartistauthorized.com^ -||dashedclownstubble.com^ -||dashersbatfish.guru^ -||dashgreen.online^ -||dashingdaredmeeting.com^ -||dasperdolus.com^ -||data-data-vac.com^ -||data-jsext.com^ -||data-px.services^ -||datajsext.com^ -||datakitschelm.com^ -||datatechdrift.com^ -||datatechone.com^ -||datatechonert.com^ -||date-5-c.com^ -||date2day.pro^ -||date4sex.pro^ -||dateddeed.com^ -||datemeup.top^ -||datesviewsticker.com^ -||dateszone.net^ -||datetrackservice.com^ -||datewhisper.life^ -||datexurlove.com^ -||datherap.xyz^ -||dating-banners.com^ -||dating-roo3.site^ -||dating2cloud.org^ -||dating2you.net^ -||dating2you.org^ -||dating4you.org^ -||datingcentral.top^ -||datingkoen.site^ -||datingpush.space^ -||datingsphere.top^ -||datingstyle.top^ -||datingtoday.top^ -||datingtopgirls.com^ -||datingvr.ru^ -||datisirashest.top^ -||datlelrzvge.com^ -||dattoswitches.com^ -||daubingweekday.com^ -||daughterinlawrib.com^ -||daughtersarbourbarrel.com^ -||daughterstinyprevailed.com^ -||daugloon.net^ -||daukshewing.com^ -||dauntgolfconfiscate.com^ -||dauntroof.com^ -||dauntslip.com^ -||dauptoawhi.com^ -||dausoofo.net^ -||dautegoa.xyz^ -||davctinijon.com^ -||davjdaauvlp.com^ -||daweneath.com^ -||dawirax.com^ -||dawmal.com^ -||dawndadmark.live^ -||dawnfilthscribble.com^ -||dawplm.com^ -||dawtsboosted.com^ -||daybreakarchitecture.com^ -||daysmenformat.top^ -||daysstone.com^ -||daytimeentreatyalternate.com^ -||dayznews.biz^ -||daz3rw5a5k4h.com^ -||dazeactionabet.com^ -||dazedarticulate.com^ -||dazedengage.com^ -||dazeoffhandskip.com^ -||dazhantai.com^ -||dazu57wmpm14b.cloudfront.net^ -||db20da1532.com^ -||db5f3a82ab.com^ -||db72c26349.com^ -||dbaomgnsahy.com^ -||dbbsrv.com^ -||dbclix.com^ -||dberthformttete.com^ -||dbgqgmqqc.com^ -||dbgsfyxtfyh.xyz^ -||dbhhvmoq.com^ -||dbizrrslifc.com^ -||dbnxlpbtoqec.com^ -||dbqlghadltookjo.xyz^ -||dbtbfsf.com^ -||dbvault.net^ -||dbvpikc.com^ -||dc-feed.com^ -||dc29186682.com^ -||dc3b671cce.com^ -||dc564d181f.com^ -||dcayljcvr.com^ -||dcdxpdxbp.com^ -||dcebmbsnmcs.com^ -||dcekppuv.xyz^ -||dcf438349c.com^ -||dcfnihzg81pa.com^ -||dcjaefrbn.xyz^ -||dclakbrifusivy.com^ -||dclfuniv.com^ -||dctkubltpbtt.com^ -||dcybyvmtwgnp.com^ -||dd0122893e.com^ -||dd1xbevqx.com^ -||dd9l0474.de^ -||ddagyoyucaqay.com^ -||dddashasledopyt.com^ -||ddddynf.com^ -||dddomainccc.com^ -||ddhjxakewpp.com^ -||ddjagedfbifdfejagaca.world^ -||ddkf.xyz^ -||ddpvnqtpdqid.xyz^ -||ddqfgamwnhp.com^ -||ddrsemxv.com^ -||ddtvskish.com^ -||ddylxccl.xyz^ -||deadly-variety.pro^ -||deadlyrelationship.com^ -||deadmentionsunday.com^ -||deafening-benefit.pro^ -||dealbuzznews.com^ -||dealcurrent.com^ -||dealgodsafe.live^ -||deallyighabove.info^ -||dealsfor.life^ -||dealtbroodconstitutional.com^ -||deansoorawn.com^ -||dearestimmortality.com^ -||dearfiring.com^ -||dearlyseedsad.com^ -||dearlystoop.com^ -||deatchshipsmotor.com^ -||deathssm.com^ -||debatableslippers.com^ -||debateconsentvisitation.com^ -||debatminkish.uno^ -||debauchavailable.com^ -||debauchinteract.com^ -||debaucky.com^ -||debeftib.com^ -||debism.com^ -||debitslopenoncommittal.com^ -||debonairseashore.com^ -||debrisstern.com^ -||debsis.com^ -||debtminusmaternal.com^ -||debtsbosom.com^ -||debtsevolve.com^ -||debtslooselavatory.com^ -||debutpanelquizmaster.com^ -||decademical.com^ -||decadenceestate.com^ -||decaytreacherous.com^ -||decbusi.com^ -||deceittoured.com^ -||deceivedbulbawelessaweless.com^ -||deceivedmisunderstand.com^ -||decemberaccordingly.com^ -||decencyjessiebloom.com^ -||decencysoothe.com^ -||decenthat.com^ -||decentpatent.com^ -||decentpension.com^ -||deceptionhastyejection.com^ -||decibaraglare.com^ -||decide.dev^ -||decidedlychips.com^ -||decidedlyenjoyableannihilation.com^ -||decidedlylipstick.com^ -||decidedmonsterfarrier.com^ -||decisionmark.com^ -||decisionnews.com^ -||decisivewade.com^ -||deckdistant.com^ -||deckedsi.com^ -||deckeeps.xyz^ -||decknetwork.net^ -||declarationfascinatedrace.com^ -||declarcercket.org^ -||declareave.com^ -||declaredjuvenile.com^ -||declaredtraumatic.com^ -||declarefollowersuspected.com^ -||declinebladdersbed.com^ -||declinedmaniacminister.com^ -||declinedmildlyreckon.com^ -||declinelotterymitten.com^ -||declinewretchretain.com^ -||declk.com^ -||decoctionembedded.com^ -||decodesnaevoid.life^ -||decomposedismantle.com^ -||decoraterepaired.com^ -||decorationguinea.com^ -||decorationhailstone.com^ -||decorationproducer.com^ -||decordingholo.org^ -||decossee.com^ -||decpo.xyz^ -||decreasetome.com^ -||decreertenet.website^ -||decrepitgulpedformation.com^ -||decswci.com^ -||dedfearinglestp.info^ -||dedicatedmedia.com^ -||dedicatedsummarythrone.com^ -||dedicatenecessarilydowry.com^ -||dedicationfits.com^ -||dedicationflamecork.com^ -||deductionadjacentwatchful.com^ -||deductionkeepingbabysitter.com^ -||deductionobtained.com^ -||dedukicationan.info^ -||deebcards-themier.com^ -||deecqem892bg5er.com^ -||deedeedthowel.top^ -||deedeedwinos.com^ -||deedeisasbeaut.info^ -||deedtampertease.com^ -||deefauph.com^ -||deeginews.com^ -||deehalig.net^ -||deejehicha.xyz^ -||deemcompatibility.com^ -||deemconpier.com^ -||deemfriday.com^ -||deemievache.com^ -||deemwidowdiscourage.com^ -||deepboxervivacious.com^ -||deepdelver.top^ -||deeperhundredpassion.com^ -||deepermagnes.com^ -||deephicy.net^ -||deepirresistible.com^ -||deepmetrix.com^ -||deepnewsjuly.com^ -||deeppinche.top^ -||deeprootedladyassurance.com^ -||deeprootedpasswordfurtively.com^ -||deeprootedstranded.com^ -||deethout.net^ -||deewansturacin.com^ -||deezusty.net^ -||defacebunny.com^ -||defactokudo.top^ -||defaultspurtlonely.com^ -||defeatedadmirabledivision.com^ -||defeatpercharges.com^ -||defeature.xyz^ -||defenceblake.com^ -||defencelessrancorous.com^ -||defendantlucrative.com^ -||defendsrecche.top^ -||defenselessweather.com^ -||defenseneckpresent.com^ -||defensive-bad.com^ -||deferapproximately.com^ -||deferjobfeels.com^ -||deferrenewdisciple.com^ -||defiancebelow.com^ -||defiancefaithlessleague.com^ -||deficiencyluckrapt.com^ -||deficiencypiecelark.com^ -||deficitsilverdisability.com^ -||definedbootnervous.com^ -||definedlaunching.com^ -||definedrequiredchurchyard.com^ -||definitial.com^ -||deformunkid.space^ -||defpush.com^ -||defrostjudica.com^ -||defybrick.com^ -||degenerateabackjaguar.com^ -||degeneratecontinued.com^ -||degeronium.com^ -||degg.site^ -||deghooda.net^ -||degradationrethink.com^ -||degradationtransaction.com^ -||degradeexpedient.com^ -||degreebristlesaved.com^ -||degrew.com^ -||degutu.xyz^ -||dehimalowbowohe.info^ -||dehortaval.top^ -||deitynosebleed.com^ -||dekanser.com^ -||deksoolr.net^ -||del-del-ete.com^ -||delaterfons.com^ -||delayeddisembroildisembroil.com^ -||deletedjohnny.com^ -||delicatereliancegodmother.com^ -||delicious-slip.pro^ -||delightacheless.com^ -||delightedheavy.com^ -||delightedintention.com^ -||delightedprawn.com^ -||delightful-page.pro^ -||delightspiritedtroop.com^ -||deligrassdull.com^ -||deliman.net^ -||deline-sunction.com^ -||deliquencydeliquencyeyesight.com^ -||deliquencydeliquencygangenemies.com^ -||deliriousglowing.com^ -||deliriumalbumretreat.com^ -||delivereddecisiverattle.com^ -||delivery.momentummedia.com.au^ -||delivery45.com^ -||delivery47.com^ -||delivery49.com^ -||delivery51.com^ -||deliverydom.com^ -||deliverymod.com^ -||deliverymodo.com^ -||deliverytrafficnews.com^ -||deliverytraffico.com^ -||deliverytraffnews.com^ -||deliverytriumph.com^ -||delmarviato.com^ -||delnapb.com^ -||delookiinasfier.cc^ -||deloplen.com^ -||deloton.com^ -||deltarockies.com^ -||deltoidviragin.com^ -||deltraff.com^ -||deludereflexunderwater.com^ -||deludeweb.com^ -||delulu.uno^ -||delusionaldiffuserivet.com^ -||delusionfirmly.com^ -||delusionpenal.com^ -||delutza.com^ -||deluxeconge.digital^ -||demand.supply^$script -||demandedhalfmoon.com^ -||demanding-application.pro^ -||demba.xyz^ -||demeanourgrade.com^ -||dementeddug.com^ -||dementedstalesimultaneous.com^ -||demersefiques.com^ -||demiseskill.com^ -||democracyendlesslyzoo.com^ -||democracyseriously.com^ -||democracyunworthystraight.com^ -||democraticflushedcasks.com^ -||demolishforbidhonorable.com^ -||demolishskyscrapersharp.com^ -||demonstrationbeth.com^ -||demonstrationsurgical.com^ -||demonstrationtimer.com^ -||demoteexplanation.com^ -||demountglinted.life^ -||demureanklesecond.com^ -||demurerbewary.live^ -||denarocepa.com^ -||denayphlox.top^ -||denbeigemark.com^ -||dencejvlq.com^ -||dendranthe4edm7um.com^ -||dendrito.name^ -||deneorphan.com^ -||denetsuk.com^ -||dengelmeg.com^ -||denialrefreshments.com^ -||denoughtanot.info^ -||denounceburialbrow.com^ -||denouncecomerpioneer.com^ -||densityprideincentive.com^ -||densouls.com^ -||dental-drawer.pro^ -||dentalillegally.com^ -||dentfonttechnology.com^ -||denunciationsights.com^ -||denycrayon.com^ -||deostr.com^ -||deparn.com^ -||departedsilas.com^ -||departgross.com^ -||departmentcomplimentary.com^ -||departmentscontinentalreveal.com^ -||departtrouble.com^ -||departurealtar.com^ -||dependablepumpkinlonger.com^ -||dependablestaredpollution.com^ -||dependeddebtsmutual.com^ -||dependentdetachmentblossom.com^ -||dependentwent.com^ -||dependpinch.com^ -||dephasevittate.com^ -||depictdeservedtwins.com^ -||depirsmandk5.com^ -||depitfondues.top^ -||depleteappetizinguniverse.com^ -||deploremythsound.com^ -||deployads.com^ -||deploymentblessedheir.com^ -||deporttideevenings.com^ -||depositgreetingscommotion.com^ -||depositnostrilverge.com^ -||depositpastel.com^ -||depravegypsyterrified.com^ -||depreciatelovers.com^ -||depressedchamber.com^ -||depressionfemaledane.com^ -||depriveretirement.com^ -||depsougnefta.com^ -||deptem.com^ -||deptigud.xyz^ -||depucelgalera.com^ -||deqkmzurltovbk.com^ -||deraterbelamy.com^ -||derevya2sh8ka09.com^ -||deridebleatacheless.com^ -||deridenowadays.com^ -||deridetapestry.com^ -||derisiveflare.com^ -||derisiveheartburnpasswords.com^ -||derivativelined.com^ -||deriveddeductionguess.com^ -||derivedrecordsstripes.com^ -||dermswraist.top^ -||derowalius.com^ -||derriregliss.top^ -||derrybonedry.com^ -||dersouds.com^ -||desabrator.com^ -||desalthuns.com^ -||descargarpartidosnba.com^ -||descendantdevotion.com^ -||descendedcelebrity.com^ -||descendentwringthou.com^ -||descentsafestvanity.com^ -||descrepush.com^ -||described.work^ -||descriptionheels.com^ -||descriptionhoney.com^ -||descriptionhoroscope.com^ -||descz.ovh^ -||desekansr.com^ -||desertsquiverinspiration.com^ -||desertsutilizetopless.com^ -||deserveannotationjesus.com^ -||deservedbreast.com^ -||deservesjoke.com^ -||deservessafety.com^ -||desgolurkom.com^ -||deshourty.com^ -||designatejay.com^ -||designerdeclinedfrail.com^ -||designeropened.com^ -||designingbadlyhinder.com^ -||designingpupilintermediary.com^ -||designsrivetfoolish.com^ -||desireddelayaspirin.com^ -||desiregig.com^ -||desiremolecule.com^ -||deskfrontfreely.com^ -||deslatiosan.com^ -||deslimepitier.top^ -||despairrim.com^ -||despanpouran.com^ -||despectclogwyn.com^ -||desperateambient.com^ -||desperationembassy.com^ -||despicablereporthusband.com^ -||despitethriftmartial.com^ -||desponddietist.com^ -||despotbenignitybluish.com^ -||despotfifteen.com^ -||dessertgermdimness.com^ -||dessly.ru^ -||destinationoralairliner.com^ -||destinedsponsornominate.com^ -||destinysfavored.xyz^ -||destroyedspear.com^ -||destructionhybrids.com^ -||desugeng.xyz^ -||desvibravaom.com^ -||detachedbates.com^ -||detachedknot.com^ -||detachmentoccasionedarena.com^ -||detailedshuffleshadow.com^ -||detailexcitement.com^ -||detainstockingskaleidoscope.com^ -||detectedpectoral.com^ -||detectiveestrange.com^ -||detectivesexception.com^ -||detectivespreferably.com^ -||detectmus.com^ -||detectscoset.com^ -||detectvid.com^ -||detentionquasipairs.com^ -||detentsclonks.com^ -||detergenthazardousgranddaughter.com^ -||detergentkindlyrandom.com^ -||deterioratebinheadphone.com^ -||deterioratesadly.com^ -||determineworse.com^ -||deterrentpainscodliver.com^ -||detestgaspdowny.com^ -||detinetcallant.com^ -||detour.click^ -||deturbcordies.com^ -||deupfpxwdzxs.com^ -||devastatedshorthandpleasantly.com^ -||devdelto.info^ -||deveincyanids.com^ -||developedse.info^ -||developmentbulletinglorious.com^ -||developmentgoat.com^ -||devilnonamaze.com^ -||devilwholehorse.com^ -||deviseoats.com^ -||deviseundress.com^ -||devofei.xyz^ -||devolutiondiffident.com^ -||devolutionrove.com^ -||devoteerouge.top^ -||devoterornis.com^ -||devotionhesitatemarmalade.com^ -||devotionhundredth.com^ -||devoutdoubtfulsample.com^ -||devoutgrantedserenity.com^ -||devoutprinter.com^ -||dewartilty.top^ -||dewerpicry.top^ -||dewierhagger.com^ -||dewincubiatoll.com^ -||dewreseptivereseptiveought.com^ -||dewycliffs.top^ -||dexchangeinc.com^ -||deximedia.com^ -||dexplatform.com^ -||dexpredict.com^ -||deybshwg.com^ -||deyubo.uno^ -||dfchevbeuydwq.com^ -||dfciiiafweiag.com^ -||dfd55780d6.com^ -||dfdgfruitie.xyz^ -||dfearinglestp.info^ -||dfepsqnbje.com^ -||dffa09cade.com^ -||dffhhqka.com^ -||dfgbalon.com^ -||dfionytxsva.com^ -||dfkoqeunyv.com^ -||dflewibj.com^ -||dfnetwork.link^ -||dfpstitialtag.com^ -||dfsdkkka.com^ -||dftckxqklqe.xyz^ -||dftjcofe.com^ -||dfuaqw.com^ -||dfvlaoi.com^ -||dgafgadsgkjg.top^ -||dgamapxs.com^ -||dggwqknub.com^ -||dgjyqdkxmxq.com^ -||dgkajwnbrazepe.com^ -||dgkmdia.com^ -||dglerduxehr.com^ -||dgmaustralia.com^ -||dgodkrsmuilnqk.com^ -||dgojzjdb.com^ -||dgpcdn.org^ -||dgptxzz.com^ -||dgqdcetwbq.xyz^ -||dgtklmbypacjq.com^ -||dgttkthhgjm.com^ -||dguhjlbefeuf.com^ -||dgxmvglp.com^ -||dh956.com^ -||dhadbeensoattr.info^ -||dhfkavse.com^ -||dhhuakggx.xyz^ -||dhiqatrinx.com^ -||dhkecbu.com^ -||dhkrftpc.xyz^ -||dhobisbeiges.top^ -||dhobybailli.com^ -||dhobyovaloid.com^ -||dhodskwqmwafkn.com^ -||dhoma.xyz^ -||dhoteechaute.top^ -||dhroerbsjaymyck.com^ -||dhuimjkivb.com^ -||dhyanaquintes.digital^ -||di7stero.com^ -||diabeteprecursor.com^ -||diaepoxy.guru^ -||diagramcetyl.digital^ -||diagramgeneration.com^ -||diagramtermwarrant.com^ -||dialedbollox.com^ -||dialistunfunny.top^ -||dialling-abutory.com^ -||dialoguemarvellouswound.com^ -||dialogueshipwreck.com^ -||diametersunglassesbranch.com^ -||diamondmodapk.com^ -||diamondtraff.com^ -||dianomioffers.co.uk^ -||diaperrealter.com^ -||diapirsblanker.com^ -||diapsidwigwag.top^ -||diated.com^ -||dibrachndoderm.com^ -||dibsemey.com^ -||diceunacceptable.com^ -||dicheeph.com^ -||dichoabs.net^ -||dicinging.co.in^ -||dicknearbyaircraft.com^ -||diclotrans.com^ -||dicolicbarrer.top^ -||dicouksa.com^ -||dicreativeideas.org^ -||dictatepantry.com^ -||dictationtense.com^ -||dictatormiserablealec.com^ -||dictatorsanguine.com^ -||dictionarycoefficientapparently.com^ -||dictumstortil.com^ -||dictysoph.website^ -||dicyiish.com^ -||diddylinable.top^ -||didiessyrt.com^ -||didthere.com^ -||didwuxdpojkaxxk.com^ -||diedpractitionerplug.com^ -||diedstubbornforge.com^ -||diench.com^ -||dieriresowed.guru^ -||dietarydecreewilful.com^ -||dietarygroomchar.com^ -||dietschoolvirtually.com^ -||dietteddefied.com^ -||diettttoglf.com^ -||differencedisinheritpass.com^ -||differencenaturalistfoam.com^ -||differenchi.pro^ -||differentevidence.com^ -||differentlydiscussed.com^ -||differfundamental.com^ -||differpurifymustard.com^ -||differsassassin.com^ -||differsprosperityprotector.com^ -||difficultydilapidationsodium.com^ -||difficultyearliestclerk.com^ -||difficultyefforlessefforlessthump.com^ -||difficultyhobblefrown.com^ -||diffidentniecesflourish.com^ -||diffusedpassionquaking.com^ -||difice-milton.com^ -||digadser.com^ -||digestionethicalcognomen.com^ -||digestionheartlesslid.com^ -||dighojatho.com^ -||dightedhereto.top^ -||digital2cloud.com^ -||digitaldsp.com^ -||digitalmediapp.com^ -||dignifiedclipbum.com^ -||dignityhourmulticultural.com^ -||dignityprop.com^ -||dignityunattractivefungus.com^ -||digqvvtb.com^ -||diguver.com^ -||digyniahuffle.com^ -||diingsinspiri.com^ -||dikkoplida.cam^ -||diktatsdeprint.space^ -||diktatslopseed.com^ -||dilatenine.com^ -||dilateriotcosmetic.com^ -||diligentrefrigerator.pro^ -||dilip-xko.com^ -||dillselias.top^ -||dilrouthoab.com^ -||dilruwha.net^ -||dilutegulpedshirt.com^ -||dilutemylodon.top^ -||diluterwearers.com^ -||dilutesnoopzap.com^ -||dilutionavailstoker.com^ -||dimcarnie.com^ -||dimedoncywydd.com^ -||dimeearnestness.com^ -||dimeeghoo.com^ -||dimessing-parker.com^ -||dimfarlow.com^ -||dimlmhowvkrag.xyz^ -||dimlyconfidential.com^ -||dimmestlasts.top^ -||dimnatriazin.com^ -||dimnessinvokecorridor.com^ -||dimnessslick.com^ -||dimpleclassconquer.com^ -||dimpuxoh.net^ -||dinecogitateaffections.com^ -||dinerbreathtaking.com^ -||dinerinvite.com^ -||dinerpropagandatoothbrush.com^ -||dinghologyden.org^ -||dingswonden.info^ -||diningconsonanthope.com^ -||diningjumbofocused.com^ -||diningprefixmyself.com^ -||diningroombutt.com^ -||diningsovereign.com^ -||dinnedgidjee.top^ -||dinnercreekawkward.com^ -||dinomicrummies.com^ -||dinseegny.com^ -||dionympoalike.website^ -||dioxidtoluyls.com^ -||diplic.com^ -||diplnk.com^ -||diplomatomorrow.com^ -||dippingearlier.com^ -||dippingunstable.com^ -||dipseypurism.com^ -||diptaich.com^ -||diptersowar.website^ -||dipusdream.com^ -||dipxmakuja.com^ -||diqnioryshzpge.com^ -||dirdumsthetch.com^ -||direct-specific.com^ -||directaclick.com^ -||directcpmfwr.com^ -||directcpmrev.com^ -||directdexchange.com^ -||directflowlink.com^ -||directleads.com^ -||directlycoldnesscomponent.com^ -||directlymilligramresponded.com^ -||directmahalla.top^ -||directnavbt.com^ -||directorym.com^ -||directoutside.pro^ -||directrankcl.com^ -||directresulto.org^ -||directrev.com^ -||directtaafwr.com^ -||directtrack.com^ -||directtrck.com^ -||directuklyecon.pics^ -||dirtinessboiled.com^ -||dirtrecurrentinapptitudeinapptitude.com^ -||dirty.games^ -||dirtyasmr.com^ -||disable-adverts.com^ -||disableadblock.com^ -||disabledincomprehensiblecitizens.com^ -||disabledmembership.com^ -||disabledsurpassrecollection.com^ -||disablepovertyhers.com^ -||disabr.com^ -||disadvantagenaturalistrole.com^ -||disagreeableallen.com^ -||disagreeopinionemphasize.com^ -||disappearanceinspiredscan.com^ -||disappearancetickfilth.com^ -||disappearedpuppetcovered.com^ -||disappearfatigueroyal.com^ -||disappearingassertive.com^ -||disappearingassurance.com^ -||disappearterriblewalked.com^ -||disappointedquickershack.com^ -||disappointingbeef.com^ -||disappointingcharter.com^ -||disappointingupdatependulum.com^ -||disapprovalpulpdiscourteous.com^ -||disarmbookkeeper.com^ -||disastrous-change.pro^ -||disastrousdetestablegoody.com^ -||disastrousfinal.pro^ -||disavowhers.com^ -||disbarpensy.com^ -||disbeliefenvelopemeow.com^ -||disbeliefplaysgiddiness.com^ -||disccompose.com^ -||discernibletickpang.com^ -||dischargecompound.com^ -||dischargedcomponent.com^ -||dischargeinsularbroadly.com^ -||dischargemakerfringe.com^ -||disciplecousinendorse.com^ -||disciplineagonywashing.com^ -||disciplineinspirecapricorn.com^ -||discloseapplicationtreason.com^ -||discloseprogramwednesday.com^ -||discodjxkqya.com^ -||discomantles.com^ -||discomforttruant.com^ -||disconnectedponder.com^ -||disconnectthirstyron.com^ -||discontenteddiagnosefascinating.com^ -||discospiritirresponsible.com^ -||discostcarafon.website^ -||discounts4shops.com^ -||discountstickersky.com^ -||discourteousbeaming.com^ -||discoverethelwaiter.com^ -||discoverybarricaderuse.com^ -||discoveryreedpiano.com^ -||discreditgutter.com^ -||discreetchurch.com^ -||discreetmotortribe.com^ -||discrepancyabsolution.com^ -||discussedfacultative.com^ -||discussedirrelevant.com^ -||discussedpliant.com^ -||discussingmaze.com^ -||disdainkindle.com^ -||disdainsneeze.com^ -||disean.com^ -||diseaseexternal.com^ -||diseaseplaitrye.com^ -||disembarkappendix.com^ -||disembroildisembroilassuredwitchcraft.com^ -||disfiguredirt.com^ -||disfiguredrough.pro^ -||disfigurestokerlikelihood.com^ -||disgraceannihilate.com^ -||disgracefulforeword.com^ -||disguised-dad.com^ -||disguisedgraceeveryday.com^ -||disgustassembledarctic.com^ -||disgustedawaitingcone.com^ -||disgustinghindsight.com^ -||disgustingscuffleaching.com^ -||dishcling.com^ -||disheartensunstroketeen.com^ -||dishesha.net^ -||dishevelledoughtshall.com^ -||dishoneststuff.pro^ -||dishonourfondness.com^ -||disillusionromeearlobe.com^ -||disingenuousdismissed.com^ -||disingenuousfortunately.com^ -||disingenuousmeasuredere.com^ -||disingenuoussuccessfulformal.com^ -||disinheritbottomwealthy.com^ -||disintegratenose.com^ -||disintegrateredundancyfen.com^ -||dislikequality.com^ -||disloyalmeddling.com^ -||dismalcompassionateadherence.com^ -||dismalthroat.pro^ -||dismantlepenantiterrorist.com^ -||dismaybrave.com^ -||dismaytestimony.com^ -||dismissabuse.com^ -||dismountpoint.com^ -||dismountroute.com^ -||dismountthreateningoutline.com^ -||disobediencecalculatormaiden.com^ -||disorderbenign.com^ -||disovrfc.xyz^ -||disowp.info^ -||disparityconquer.com^ -||disparitydegenerateconstrict.com^ -||dispatchfeed.com^ -||dispatchoffenderbleat.com^ -||dispbaktun.com^ -||dispelhighest.com^ -||dispensedessertbody.com^ -||dispersecottage.com^ -||disperserepeatedly.com^ -||dispersereversewanderer.com^ -||displacecanes.com^ -||displaceprivacydemocratic.com^ -||displayadspro.click^ -||displaycontentnetwork.com^ -||displaycontentprofit.com^ -||displayedfoot.com^ -||displayfly.com^ -||displayformatcontent.com^ -||displayformatrevenue.com^ -||displayinterads.com^ -||displaynetworkcontent.com^ -||displaynetworkprofit.com^ -||displayvertising.com^ -||displeaseddietstair.com^ -||displeasedwetabridge.com^ -||displeasurethank.com^ -||disploot.com^ -||dispop.com^ -||disposableearnestlywrangle.com^ -||disposalangrily.com^ -||disposalsirbloodless.com^ -||disposedbeginner.com^ -||dispositiondata.com^ -||disputeretorted.com^ -||disputetrot.com^ -||disqualifygirlcork.com^ -||disquietstumpreducing.com^ -||disreputabletravelparson.com^ -||disrespectpreceding.com^ -||disrootaffa.com^ -||dissatisfactiondoze.com^ -||dissatisfactionparliament.com^ -||dissatisfactionrespiration.com^ -||dissemblebendnormally.com^ -||disshipbikinis.com^ -||dissimilarskinner.com^ -||dissipatebackyarduncle.com^ -||dissipatecombinedcolon.com^ -||dissipatedifficulty.com^ -||dissipateetiquetteheavenly.com^ -||dissolvedessential.com^ -||dissolveretinue.com^ -||dissolvetimesuspicions.com^ -||distancefilmingamateur.com^ -||distancemedicalchristian.com^ -||distant-session.pro^ -||distantbelly.com^ -||distantsoil.com^ -||distilinborn.com^ -||distiljunctioninstallation.com^ -||distinct-bicycle.com^ -||distinguishedshrug.com^ -||distinguishtendhypothesis.com^ -||distorteddead.pro^ -||distortunfitunacceptable.com^ -||distractedavail.com^ -||distractfragment.com^ -||distractiontradingamass.com^ -||distraughtsexy.com^ -||distressamusement.com^ -||distressedsoultabloid.com^ -||distributionfray.com^ -||distributionrealmoth.com^ -||districtacrid.com^ -||districtm.ca^ -||districtm.io^ -||districtshortmetal.com^ -||distrustacidaccomplish.com^ -||distrustawhile.com^ -||distrustuldistrustulshakencavalry.com^ -||disturbancecoldlilac.com^ -||disturbanceinventoryshiver.com^ -||disturbedaccruesurfaces.com^ -||disturbingacceptabledisorganized.com^ -||disturboverwhelmdome.com^ -||distyleprankle.top^ -||dit-dit-dot.com^ -||ditasmaced.com^ -||ditchbillionrosebud.com^ -||ditchesteenish.com^ -||ditdotsol.com^ -||dittyinsects.com^ -||ditwrite.com^ -||divaduolite.com^ -||divedresign.com^ -||divergeimperfect.com^ -||diversityspaceship.com^ -||divertbywordinjustice.com^ -||divetroubledloud.com^ -||dividedbecameinquisitive.com^ -||dividedching.com^ -||dividedkidblur.com^ -||dividedscientific.com^ -||divideinch.com^ -||dividetribute.com^ -||divingshown.com^ -||divinitygasp.com^ -||divinitygoggle.com^ -||divisionprogeny.com^ -||divorcebelievable.com^ -||divorceseed.com^ -||divortrelict.top^ -||dixhqjgbatpg.com^ -||dizainejerrie.top^ -||dizdarsedgier.com^ -||dizipal223.com^ -||dizziesferri.com^ -||dizzyporno.com^ -||dizzyrebozo.website^ -||dizzyshe.pro^ -||dj-updates.com^ -||dj2550.com^ -||djadoc.com^ -||djefosbx.com^ -||djfiln.com^ -||djfuieotdlo.com^ -||djfwtdwiybiq.com^ -||djldrhxb.com^ -||djmwwdrznntss.com^ -||djmwxpsijxxo.xyz^ -||djphnuhkbjf.com^ -||djqacscl.com^ -||djqitgfjfu.com^ -||djsdmdbwlpbab.com^ -||djssdvbo.com^ -||djytaswabirm.xyz^ -||dkagiqnjsdoqli.com^ -||dkbgcxltwljdua.com^ -||dkesqebismkqec.com^ -||dkihlqwmd.com^ -||dkrbus.com^ -||dkrely.com^ -||dkrqyly.com^ -||dkrxtdnlg.com^ -||dkuekrwiwr.com^ -||dl-rms.com^ -||dlazblsihdoi.com^ -||dle-news.xyz^ -||dledthebarrowb.com^ -||dlfvgndsdfsn.com^ -||dlgoliqqxpegmyw.xyz^ -||dlhqffirehv.com^ -||dljuejfp.com^ -||dlkdfuun.com^ -||dlqfkzykxqicn.com^ -||dlqxdonofwsfes.xyz^ -||dlski.space^ -||dlwcjcbwst.com^ -||dlxodggxduh.xyz^ -||dlxohfxenojlpb.com^ -||dmabpmokxcgm.com^ -||dmayindallmypi.com^ -||dmehoamo.com^ -||dmemndrjim.com^ -||dmetherearlyinhes.info^ -||dmeukeuktyoue.info^ -||dmiredindeed.com^ -||dmiredindeed.info^ -||dmlkzmg.com^ -||dmm-video.online^ -||dmmgjsymlrfp.com^ -||dmnprx.com^ -||dmoldsusvkpa.xyz^ -||dmowvblljmkqx.com^ -||dmrdnujvzo.com^ -||dmrtx.com^ -||dmsktmld.com^ -||dmuqumodgwm.com^ -||dmvbdfblevxvx.com^ -||dmvporebntt.com^ -||dmxswwrregww.com^ -||dmzjmp.com^ -||dn9.biz^ -||dnavexch.com^ -||dnavtbt.com^ -||dncnudcrjprotiy.xyz^ -||dnemkhkbsdbl.com^ -||dnfqqucdsdb.com^ -||dnfs24.com^ -||dnjsiye.com^ -||dnnwebuxps.com^ -||dnpnemyntetpj.com^ -||dnswinq.com^ -||dntaiiifdbwno.com^ -||dnvgecz.com^ -||doaboowa.com^ -||doaipomer.com^ -||doaltariaer.com^ -||doappcloud.com^ -||doastaib.xyz^ -||doblazikena.com^ -||dochouts.net^ -||dockaround.com^ -||dockboulevardshoes.com^ -||dockdeity.com^ -||doctorenticeflashlights.com^ -||doctorhousing.com^ -||doctorpost.net^ -||doctoryoungster.com^ -||documentaryextraction.com^ -||documentaryselfless.com^ -||doddiesteaey.guru^ -||doddymetaled.space^ -||dodgefondness.com^ -||dodgyvertical.com^ -||dodouhoa.com^ -||doerscharre.com^ -||doesbitesizeadvantages.com^ -||doespinolin.cfd^ -||doflygonan.com^ -||dofrogadiera.com^ -||dog-realtimebid.org^ -||dogcollarfavourbluff.com^ -||dogconcurrencesauce.com^ -||dogdomsflensed.com^ -||doggerycantlet.website^ -||doggessmumped.com^ -||doggyunderline.com^ -||doghasta.com^ -||dogiedimepupae.com^ -||dogolurkr.com^ -||dogprocure.com^ -||dogt.xyz^ -||dogwrite.com^ -||doidbymr.com^ -||doingporteddispose.com^ -||dokaboka.com^ -||dokauzob.top^ -||dokhmacoining.com^ -||dokondigit.quest^ -||dokseptaufa.com^ -||dolatiaschan.com^ -||dolefulcaller.com^ -||dolefulitaly.com^ -||dolefulwelcoming.com^ -||dolemeasuringscratched.com^ -||dolentbahisti.com^ -||doleplasticimpending.com^ -||doleyorpinc.website^ -||dollarade.com^ -||dollargrimlytommy.com^ -||dollartopsail.top^ -||dollsdeclare.com^ -||dolohen.com^ -||doloroj.com^ -||dolphinabberantleaflet.com^ -||dolphincdn.xyz^ -||domainanalyticsapi.com^ -||domaincaptured.com^ -||domaincntrol.com^ -||domainparkingmanager.it^ -||domakuhitaor.com^ -||domankeyan.com^ -||dombnrs.com^ -||dombocostomy.website^ -||domccktop.com^ -||domdex.com^ -||domeclosureassert.com^ -||domenictests.top^ -||domesticsomebody.com^ -||domfehu.com^ -||domicileperil.com^ -||domicilereduction.com^ -||dominaepleck.top^ -||dominantcodes.com^ -||dominantroute.com^ -||dominatedisintegratemarinade.com^ -||domineeyoks.com^ -||domineshodder.top^ -||dominikpers.ru^ -||dominoeds.com^ -||domith.com^ -||domnlk.com^ -||dompeterapp.com^ -||domslc.com^ -||domyroundel.guru^ -||donatecanuck.com^ -||donateentrailskindly.com^ -||donecooler.com^ -||donecperficiam.net^ -||donemagbuy.live^ -||donescaffold.com^ -||doninjaskr.com^ -||donkstar1.online^ -||donkstar2.online^ -||donneesskilder.top^ -||donorenvy.com^ -||donttbeevils.de^ -||donyandmark.xyz^ -||doobaupu.xyz^ -||doobuphoo.com^ -||doochoor.xyz^ -||doodlelegitimatebracelet.com^ -||doodoaru.net^ -||dooloust.net^ -||doomail.org^ -||doomcelebritystarch.com^ -||doomdoleinto.com^ -||doomedafarski.com^ -||doomna.com^ -||doompuncturedearest.com^ -||doopimim.net^ -||doormanbafflemetal.com^ -||doormantdoormantbumpyinvincible.com^ -||doormantdoormantunfaithful.com^ -||doorstepexcepting.com^ -||doostauge.com^ -||doostozoa.net^ -||doozersunkept.com^ -||dopansearor.com^ -||dope.autos^ -||dopecurldizzy.com^ -||dopiesttrotter.com^ -||dopmmzn.com^ -||dopor.info^ -||doprinplupr.com^ -||doptik.ru^ -||doraikouor.com^ -||dorasuther.top^ -||dorimnews.com^ -||dorkingvoust.com^ -||dormitoryreverend.com^ -||dorothydrawing.com^ -||dortmark.net^ -||doruffleton.com^ -||doruffletr.com^ -||dosagebreakfast.com^ -||dosagedrearypursuit.com^ -||dosamurottom.com^ -||doscarredwi.org^ -||dosconsiderate.com^ -||doseadraa.com^ -||dosiswether.com^ -||dositsil.net^ -||dosliggooor.com^ -||dossestarairi.shop^ -||dossmanaventre.top^ -||dossouwe.net^ -||dotaillowan.com^ -||dotandads.com^ -||dotappendixrooms.com^ -||dotariefroggy.guru^ -||dotchaudou.com^ -||dotcom10.info^ -||dotdealingfilling.com^ -||dotedsuccula.top^ -||dotercouther.uno^ -||doteshelloed.website^ -||dotgxcnq.com^ -||dothaish.net^ -||dothepashandelthingwebrouhgtfromfrance.top^ -||dotmatrixops.com^ -||dotobjection.com^ -||dotsenhanced.com^ -||dotsrv.com^ -||dottierspeeds.website^ -||double-check.com^ -||double.net^ -||doubleadserve.com^ -||doubledeepclick.com^ -||doublemax.net^ -||doubleonclick.com^ -||doublepimp.com^ -||doublepimpssl.com^ -||doublerecall.com^ -||doubleview.online^ -||doubtcigardug.com^ -||doubtlesshealthydocument.com^ -||doubtmeasure.com^ -||doucheraisiny.com^ -||doufoacu.net^ -||dougale.com^ -||douglaug.net^ -||douhooke.net^ -||doukoula.com^ -||doumuleet.net^ -||douoblelimpup.com^ -||doupseejog.com^ -||doupsout.xyz^ -||doupteethaiz.xyz^ -||douthosh.net^ -||doveexperttactical.com^ -||dovenedouthorn.com^ -||dovictinian.com^ -||doweralrostra.com^ -||down1oads.com^ -||downladingsite.com^ -||download-adblock-zen.com^ -||download-adblock360.com^ -||download-ready.net^ -||download4.cfd^ -||downloadboutique.com^ -||downloading-addon.com^ -||downloading-extension.com^ -||downloadmobile.pro^ -||downloadwiselyfaintest.com^ -||downloadyt.com^ -||downlon.com^ -||downparanoia.com^ -||downstairsnegotiatebarren.com^ -||downtowndisapproval.com^ -||downtransmitter.com^ -||downwardstreakchar.com^ -||dowrylatest.com^ -||dowtyler.com^ -||doydplivplr.com^ -||doyngspern.com^ -||dozard.com^ -||dozeelsy.xyz^ -||dozenactually.com^ -||dozubatan.com^ -||dozzlegram-duj-i-280.site^ -||dpahlsm.com^ -||dpdcinlfynhg.xyz^ -||dpdnav.com^ -||dphpycbr.com^ -||dphunjimnkyadh.com^ -||dpmsrv.com^ -||dpnktkmxjfdd.com^ -||dprtb.com^ -||dpseympatijgpaw.com^ -||dpstack.com^ -||dptwwmktgta.com^ -||dpyaxzpudhp.com^ -||dpzgwzjledx.com^ -||dqbukuvuy.com^ -||dqdrsgankrum.org^ -||dqeaa.com^ -||dqeiooxvtbiyl.com^ -||dqfhudpnwdk.com^ -||dqgmtzo.com^ -||dqhezw.com^ -||dqhoikghxts.com^ -||dqjkzrx.com^ -||dqjlhidethq.com^ -||dqjouawswgmchn.com^ -||dqnvcjcyx.com^ -||dqnxkfbhreaas.com^ -||dqrpajecblodtqd.com^ -||dqsvzptpd.com^ -||dqtzmkwzvoidi.com^ -||dqvnpbs.com^ -||dqxbqubsknfc.com^ -||dqxifbm.com^ -||dqypqewirrf.com^ -||dqzsejvbr.com^ -||dr0.biz^ -||dr22.biz^ -||dr6.biz^ -||dr7.biz^ -||drabimprovement.com^ -||draftbeware.com^ -||draftyreview.pro^ -||dragbarinsuper.top^ -||dragdisrespectmeddling.com^ -||dragfault.com^ -||draggedgram.com^ -||draggedindicationconsiderable.com^ -||dragnag.com^ -||drainlot.com^ -||drako2sha8de09.com^ -||dralintheirbr.com^ -||dramamutual.com^ -||dramasoloist.com^ -||dramaticagreementsalt.com^ -||drankpool.com^ -||dranktonsil.com^ -||drapefabric.com^ -||drasticdrama.com^ -||dratejiggly.top^ -||dratingmaject.com^ -||drauda.com^ -||draughtpoisonous.com^ -||drawbackcaptiverusty.com^ -||drawbacksubdue.com^ -||draweesjabbers.com^ -||draweesoutkiss.com^ -||drawerenter.com^ -||drawerfontactual.com^ -||drawergypsyavalanche.com^ -||drawingsingmexican.com^ -||drawingsugarnegative.com^ -||drawingwaved.com^ -||drawingwheels.com^ -||drawnperink.com^ -||drawx.xyz^ -||drayedbonity.top^ -||draystownet.com^ -||drctcldfbfwr.com^ -||drctcldfe.com^ -||drctcldfefwr.com^ -||drctcldff.com^ -||drctcldfffwr.com^ -||dreadbreakupsomeone.com^ -||dreadfullyclarifynails.com^ -||dreadfulprofitable.com^ -||dreadluckdecidedly.com^ -||dreadshavingmammal.com^ -||dreambooknews.com^ -||dreamintim.net^ -||dreamnews.biz^ -||dreamsaukn.org^ -||dreamskilometre.com^ -||dreamsofcryingf.com^ -||dreamsoppressive.com^ -||dreamteamaffiliates.com^ -||drearlyknifes.com^ -||drearypassport.com^ -||drenchsealed.com^ -||drepanevealy.uno^ -||dressceaseadapt.com^ -||dressedfund.com^ -||dresserbirth.com^ -||dresserderange.com^ -||dresserfindparlour.com^ -||dressingdedicatedmeeting.com^ -||dressmakerdecisivesuburban.com^ -||dressmakerdisturb.com^ -||dressmakertumble.com^ -||dresul.com^ -||drewfoolery.com^ -||dreyeli.info^ -||drfaultlessplays.com^ -||drgcnsnohnf.com^ -||dribbleads.com^ -||dribletbogled.com^ -||dribturbot.com^ -||drided.com^ -||driedanswerprotestant.com^ -||driedcollisionshrub.com^ -||drific.com^ -||driftfranchise.com^ -||drillcompensate.com^ -||drinksbookcaseconsensus.com^ -||drinkscormac.website^ -||dripgleamborrowing.com^ -||driveestablishmentarmed.com^ -||drivenicysecretive.com^ -||drivercontinentcleave.com^ -||drivewayilluminatedconstitute.com^ -||drivewayperrydrought.com^ -||drivingfoot.website^ -||drivingkeas.top^ -||drizzleexperimentdysentery.com^ -||drizzlefirework.com^ -||drizzlepose.com^ -||drizzlerules.com^ -||drjgjngf.com^ -||drjkwbfqcvr.com^ -||drkglnrwqomg.com^ -||drkness.net^ -||drlhprjldsgjxa.com^ -||drlxpmqemsh.com^ -||dromoicassida.com^ -||dronedgentile.com^ -||dronediscussed.com^ -||dronelskipper.com^ -||dronetmango.com^ -||droopingfur.com^ -||droopingrage.com^ -||dropdoneraining.com^ -||droppalpateraft.com^ -||droppingforests.com^ -||droppingprofessionmarine.com^ -||dropsclank.com^ -||drownbossy.com^ -||drowrenomme.com^ -||drsmediaexchange.com^ -||drubbersestia.com^ -||drublylamboy.top^ -||druggedforearm.com^ -||druggedsilurid.com^ -||druguniverseinfected.com^ -||drummerconvention.com^ -||drummercorruptprime.com^ -||drummercrouchdelegate.com^ -||drumusherhat.com^ -||drunkardashamethicket.com^ -||drunkarddecentmeals.com^ -||drunkendecembermediocre.com^ -||drunkindigenouswaitress.com^ -||drust-gnf.com^ -||druttlelimbec.digital^ -||drvkypkfm.com^ -||dryerslegatos.com^ -||dryinfestinsight.com^ -||dryingaefauld.com^ -||drystervernile.life^ -||ds3.biz^ -||ds7hds92.de^ -||dsadghrthysdfadwr3sdffsdaghedsa2gf.xyz^ -||dsethimdownthmo.com^ -||dsfjhfhyry2hh8jo09.com^ -||dsixipuj.com^ -||dslsgbrckqshuep.com^ -||dsmrnsngvnrc.xyz^ -||dsmvkbfzp.com^ -||dsnextgen.com^ -||dsnfeddmxnsfq.com^ -||dsnkkjmxogwtpju.com^ -||dsoodbye.xyz^ -||dsp.wtf^ -||dsp5stero.com^ -||dspmega.com^ -||dspmulti.com^ -||dspultra.com^ -||dssdv.com^ -||dsstrk.com^ -||dstimaariraconians.info^ -||dsultra.com^ -||dswqtkpk.com^ -||dsxwcas.com^ -||dt3y1f1i1disy.cloudfront.net^ -||dt4ever.com^ -||dt51.net^ -||dtadnetwork.com^ -||dtbfpygjdxuxfbs.xyz^ -||dtdngmhvscvm.com^ -||dtedpypskgbdap.com^ -||dthablbrl.com^ -||dthechildren.org^ -||dtheharityhild.info^ -||dthepeoplewhoc.org^ -||dtkhbsictxpu.com^ -||dtmpub.com^ -||dtmvpkn.com^ -||dtnacqswcieufy.com^ -||dtobyiiuktxvp.com^ -||dtpeqgfaps.com^ -||dtprofit.com^ -||dtqbqmzzbeck.com^ -||dtqlltmmyb.com^ -||dtscdn.com^ -||dtscout.com^ -||dtsedge.com^ -||dtssrv.com^ -||dtsuqeneaipu.com^ -||dtsxqguwovhg.com^ -||dttaupjvj.com^ -||dtx.click^ -||dtybyfo.com^ -||dualityflaming.space^ -||dualmarket.info^ -||dualp.xyz^ -||duamilsyr.com^ -||dubdetectioniceberg.com^ -||dubggge.com^ -||dubiopintles.com^ -||dubnoughtheadquarter.com^ -||dubshub.com^ -||dubunwiseobjections.com^ -||dubvacasept.com^ -||dubzenom.com^ -||ducallydamar.com^ -||duckannihilatemulticultural.com^ -||duckedabusechuckled.com^ -||duckletnervous.uno^ -||ducksintroduce.com^ -||duckswillsmoochyou.com^ -||ductclickjl.com^ -||ductquest.com^ -||ducubchooa.com^ -||dudaixou.com^ -||dudialgator.com^ -||dudleyjoyful.com^ -||dudleynutmeg.com^ -||dudragonitean.com^ -||dudslubesviol.com^ -||duefulnuntius.com^ -||duellosheliced.com^ -||duesirresponsible.com^ -||duetads.com^ -||duf1ql28oaxcm3x6baf7wxvo6n29hrozqxbd13emc3na96i64j.xyz^ -||dufjgdjeyo.com^ -||dufrom.com^ -||duftoagn.com^ -||dugapiece.com^ -||dugentocentury.com^ -||duggreat.com^ -||duginamis.com^ -||duglompu.xyz^ -||dugothitachan.com^ -||duhafaroalub.com^ -||duili-mtp.com^ -||duimspruer.life^ -||dujcubbzog.com^ -||dukesubsequent.com^ -||dukicationan.org^ -||dukingdraon.com^ -||dukirliaon.com^ -||dukkxpf.com^ -||dulativergs.com^ -||dulcormutated.com^ -||duldxuonx.com^ -||dulillipupan.com^ -||dulladaptationcontemplate.com^ -||dullstory.pro^ -||dulojet.com^ -||dulsesglueing.com^ -||dulwajdpoqcu.com^ -||dumbacademyradiation.com^ -||dumbpop.com^ -||dummieseardrum.com^ -||dumpaudible.com^ -||dumpconfinementloaf.com^ -||dumpilydieted.click^ -||dumplingclubhousecompliments.com^ -||dumplingdirewomen.com^ -||dunderaffiliates.com^ -||dunefu.uno^ -||dunemanslaughter.com^ -||dungeonisosculptor.com^ -||dungmamma.com^ -||dunnedemicant.com^ -||dunowmymmexmd.com^ -||dupelipperan.com^ -||duplicateallycomics.com^ -||duplicateankle.com^ -||duplicatebecame.com^ -||duplicatepokeheavy.com^ -||duponytator.com^ -||durableordinarilyadministrator.com^ -||durationzodiacdetermined.com^ -||durhamoryssus.com^ -||durike.com^ -||durisk.com^ -||durith.com^ -||duroomtoa.com^ -||dursocoa.com^ -||durzihearten.com^ -||duscleouphes.com^ -||dust-0001.delorazahnow.workers.dev^ -||dustedmullion.com^ -||dusterrubberfarmer.com^ -||dustersee.com^ -||dustratebilate.com^ -||dustymural.com^ -||dustywrenchdesigned.com^ -||dusunfloraer.com^ -||dutalonflameer.com^ -||dutorterraom.com^ -||dutyabilityneed.com^ -||dutygoddess.com^ -||dutythursday.com^ -||duvuerxuiw.com^ -||duwtkigcyxh.com^ -||duwvinarma.com^ -||duxesboddagh.com^ -||duzbhonizsk.com^ -||duzmevl.com^ -||dvaminusodin.net^ -||dvbhretuebm.com^ -||dvcgzygp.com^ -||dvdpzpjoipwkmm.com^ -||dvfmdgdk.com^ -||dvigutying.top^ -||dvjkmskks.xyz^ -||dvvemmg.com^ -||dvypar.com^ -||dvzkkug.com^ -||dwelc.com^ -||dwellingmerrimentrecorder.com^ -||dwellingsensationalthere.com^ -||dwellsew.com^ -||dwetwdstom1020.com^ -||dwfupceuqm.com^ -||dwglkwpyuwbd.com^ -||dwightadjoining.com^ -||dwightbridesmaid.com^ -||dwithmefeyauknal.info^ -||dwlgdzzltdekr.com^ -||dwlmjxf.com^ -||dwuxbazvi.com^ -||dwvbfnqrbif.com^ -||dwvxmfscptajtll.com^ -||dwwpofwebdwm.com^ -||dxajhcdz.com^ -||dxbsdetipqzbp.com^ -||dxfovuqib.com^ -||dxhbdttlvchrgsh.com^ -||dxmjyxksvc.com^ -||dxotbknruf.com -||dxryshpgyeu.com^ -||dxtsqgnwn.com^ -||dxuuvxweynac.com^ -||dxvgvbaqzgeb.com^ -||dyetqkaxmlnqlqe.xyz^ -||dyhvtkijmeg.xyz^ -||dyhxduicfngnumo.xyz^ -||dyingconjunction.com^ -||dylwqfrdb.com^ -||dynamicadx.com^ -||dynamicapl.com^ -||dynamicjsconfig.com^ -||dynamitedata.com^ -||dynepectora.com^ -||dynpaa.com^ -||dynspt.com^ -||dynsrvbaa.com^ -||dynsrvdea.com^ -||dynsrvtbg.com^ -||dynsrvtyu.com^ -||dynssp.com^ -||dyoiqojlyntvy.com^ -||dyptanaza.com^ -||dysenteryappeal.com^ -||dysfunctionalrecommendation.com^ -||dytabqo.com^ -||dyuscbmabg.xyz^ -||dyygsgxhfrlo.xyz^ -||dyysxwjeyfiysrs.com^ -||dz4ad.com^ -||dzeoiizhixuyvg.com^ -||dzhjmp.com^ -||dzienkudrow.com^ -||dzigzdbqkc.com^ -||dzijggsdx.com^ -||dzjnejsffqqih.com^ -||dzjv9gbu8a.com^ -||dzkpopetrf.com^ -||dzliege.com^ -||dzoavjjfet.com^ -||dzprcdskxn.com^ -||dzsorpf.com^ -||dzubavstal.com^ -||dzuowpapvcu.com^ -||e-cougar.fr^ -||e0a79821ec.com^ -||e0e5bc8f81.com^ -||e1eacb6f88.com^ -||e2078be122.com^ -||e2bec62b64.com^ -||e2e113a506.com^ -||e2ertt.com^ -||e36e2058e8.com^ -||e437040a9a.com^ -||e46271be93.com^ -||e4nglis56hcoo5nhou6nd.com^ -||e55629740f.com^ -||e55b290040.com^ -||e59f087ae4.com^ -||e5asyhilodice.com^ -||e6400a77fa.com^ -||e67jpj6to.com^ -||e67repidwnfu7gcha.com^ -||e6wwd.top^ -||e702fa7de9d35c37.com^ -||e732bfae2a.com^ -||e8100325bc.com^ -||e822e00470.com^ -||e91c222079.com^ -||e9c1khhwn4uf.com^ -||ea6353e47e0ab3f78.com^ -||eabids.com^ -||eabithecon.xyz^ -||eablnikfbevgyi.com^ -||eabrgisajgzahx.com^ -||eac0823ca94e3c07.com^ -||eacdn.com^ -||eacfiii.com^ -||eachiv.com^ -||eachuit.uno^ -||eachunwilling.com^ -||eadaqfkkrprf.com^ -||eafb9d5abc.com^ -||eagazi.com^ -||eageoahba.com^ -||eagleapi.io^ -||eaglebout.com^ -||eaglestats.com^ -||eaglingauslaut.com^ -||eajpryc.com^ -||eakelandorders.org^ -||ealeo.com^ -||eallywasnothy.com^ -||eamqbaqzaerzb.top^ -||eamsanswer.com^ -||eanangelsa.info^ -||eanddescri.com^ -||eanlingtumfie.com^ -||eanrzzvvmjqm.top^ -||eanwhitepinafor.com^ -||eardepth-prisists.com^ -||eargentssep.one^ -||earinglestpeoples.info^ -||earlapspur.com^ -||earlapssmalm.com^ -||earlierdimrepresentative.com^ -||earlierindians.com^ -||earliesthuntingtransgress.com^ -||earlinessone.xyz^ -||earlyfortune.pro^ -||earnestadornment.com^ -||earnestnessmodifiedsealed.com^ -||earnify.com^ -||earningsgrandpa.com^ -||earningstwigrider.com^ -||earphonespulse.com^ -||earplugmolka.com^ -||earringsatisfiedsplice.com^ -||earsanagep.com^ -||earthenicings.com^ -||earthlyyowe.com^ -||earthquakehomesinsulation.com^ -||earthshaper.top^ -||easeavailandpro.info^ -||easegoes.com^ -||easeinternmaterialistic.com^ -||easelegbike.com^ -||easelgivedolly.com^ -||easerefrain.com^ -||eashasvsucoc.info^ -||easilysafety.com^ -||easkedasensibl.com^ -||eastergurgle.com^ -||eastfeukufu.info^ -||eastfeukufunde.com^ -||eastrk-dn.com^ -||eastrk-lg.com^ -||eastyewebaried.info^ -||easy-dating.org^ -||easyaccess.mobi^ -||easyad.com^ -||easyads28.mobi^ -||easyads28.pro^ -||easyfag.com^ -||easyflirt-partners.biz^ -||easygoingamaze.com^ -||easygoingasperitydisconnect.com^ -||easygoinglengthen.com^ -||easygoingparticular.pro^ -||easygoingseducingdinner.com^ -||easygoingtouchybribe.com^ -||easymrkt.com^ -||easysemblyjusti.info^ -||easyvids.online^ -||easyvids.space^ -||eatasesetitoefa.info^ -||eatasesetitoefanyo.info^ -||eatencurvature.com^ -||eatengossipyautomobile.com^ -||eaterdrewduchess.com^ -||eatssetaria.top^ -||eaudigonal.top^ -||eavailandproc.info^ -||eavesdroplimetree.com^ -||eavesofefinegoldf.info^ -||eavfrhpnqbpkdqb.com^ -||eawp2ra7.top^ -||eaxhsjrlq.com^ -||eayeewlvmeqel.top^ -||eazyleads.com^ -||eb36c9bf12.com^ -||eb5232b35d.com^ -||ebannertraffic.com^ -||ebb174824f.com^ -||ebbetsgourded.com^ -||ebcfjgnjw.com^ -||ebd.cda-hd.co^ -||ebdlthbijshfj.com^ -||ebdokvydrvqvrak.xyz^ -||ebdrxqox.com^ -||ebetoni.com^ -||ebhgnulpctws.com^ -||ebimdeibbtw.com^ -||ebkthjkvp.com^ -||eblastengine.com^ -||ebnarnf.com^ -||ebolat.xyz^ -||ebonyrecognize.com^ -||ebooks.dental^ -||ebooktheft.com^ -||ebqqiakyhsn.com^ -||ebsbqexdgb.xyz^ -||ebuzzing.com^ -||ebwvjkvd.com^ -||ebz.io^ -||ec1e2c92b3.com^ -||ec2867edc4.com^ -||ecaursedeegh.com^ -||ecchhelios.top^ -||echaruropygi.com^ -||echehalids.guru^ -||echevintrunnel.top^ -||echinusandaste.com^ -||echiovlhu.com^ -||echoachy.xyz^ -||echocultdanger.com^ -||echoeshamauls.com^ -||echopixelwave.net^ -||echskbpghlc.com^ -||eciivxqtur.com^ -||ecipientconcertain.info^ -||ecityonatallcol.info^ -||eclatssaic.guru^ -||eclebgjz.com^ -||eclkmpbn.com^ -||eclkmpsa.com^ -||ecoastandhei.org^ -||ecodemitter.website^ -||econenectedith.info^ -||economicalgobetween.com^ -||economyhave.com^ -||econsistentlyplea.com^ -||econtinuedidg.com^ -||ecortb.com^ -||ecoulsou.xyz^ -||ecpms.net^ -||ecrwqu.com^ -||ecstatic-rope.pro^ -||ecsxtrhfgvs.com^ -||ecuebovjrnn.com^ -||ecusemis.com^ -||ecypliujlkuh.com^ -||ecyxbhvnntj.com^ -||eczemagrison.uno^ -||ed028aa9c4.com^ -||eda153603c.com^ -||edaciousedaciousflaxalso.com^ -||edaciousedaciousindexesbrief.com^ -||edacityedacitycorrespondence.com^ -||edacityedacityhandicraft.com^ -||edacityedacitystrawcrook.com^ -||edalloverwiththinl.info^ -||edallthroughthe.info^ -||edassiumw.xyz^ -||edbehindforhewa.info^ -||edbritingsynt.info^ -||eddffea7e1.com^ -||eddieunamply.com^ -||eddmciqkvq.com^ -||eddmfazptxl.com^ -||edeybivah.com^ -||edgar2al2larngpoer.com^ -||edgbas.com^ -||edgevertise.com^ -||edgiercooley.guru^ -||edgychancymisuse.com^ -||edifiedpristaw.top^ -||edingrigoguter.com^ -||edioca.com^ -||edirectuklyeco.info^ -||editalcaulked.top^ -||edition25.com^ -||editionoverlookadvocate.com^ -||editneed.com^ -||editorpilotlimbs.com^ -||edjnkones.com^ -||edkgdruoreys.com^ -||edkjpwvfy.com^ -||edkwgbxgn.com^ -||edlilu.com^ -||edncewvfadqrkr.com^ -||ednewsbd.com^ -||edodtfnyfpf.com^ -||edonorprog.biz^ -||edoumeph.com^ -||edoumoosseg.com^ -||edqbparlheuj.com^ -||edrevenuedur.xyz^ -||edrubyglo.buzz^ -||edshhhfsawod.com^ -||edstevermotorie.com^ -||edsvqciwxxqd.com^ -||edthechildrenandthe.info^ -||edtheparllase.com^ -||edtotigainare.info^ -||edttfiou.com^ -||edttmar.com^ -||edu-lib.com^ -||edua29146y.com^ -||educatedcoercive.com^ -||educationalapricot.com^ -||educationalroot.com^ -||educationrailway.website^ -||educedsteeped.com^ -||edutechlearners.com^ -||edverys.buzz^ -||edvfwlacluo.com^ -||edvjvadg.com^ -||edvrfjrrxk.com^ -||edvruqmrjvlg.com^ -||edvxygh.com^ -||edwfdhkgnx.com^ -||edzuahkymbureo.com^ -||edzwmobmj.com^ -||ee625e4b1d.com^ -||ee6a35c1eeee.com^ -||eeab79bf10.com^ -||eeafcgmpk.com^ -||eeaxtnurmuxylb.com^ -||eeb54c6bc8.com^ -||eebouroo.net^ -||eebqeceysaakco.com^ -||eecd.xyz^ -||eecd179r3b.com^ -||eecewaim.xyz^ -||eecheweegru.com^ -||eechicha.com^ -||eecjolaceig.com^ -||eecjrmd.com^ -||eedsaung.net^ -||eeevxvon.com^ -||eefa308edc.com^ -||eeftooms.net^ -||eegamaub.net^ -||eegeeglou.com^ -||eeghadse.com^ -||eeghooptauy.net^ -||eeglauftoo.com^ -||eegnacou.com^ -||eegookiz.com^ -||eegroosoad.com^ -||eehuzaih.com^ -||eeinhyfb.com^ -||eejordar.net^ -||eekeeghoolsy.com^ -||eekreeng.com^ -||eeksidro.com^ -||eeksoabo.com^ -||eeleekso.com^ -||eelempee.xyz^ -||eellikeconcio.top^ -||eelroave.xyz^ -||eelxljos.com^ -||eemauroo.com^ -||eemreyrwkqwyj.top^ -||eemsoods.com^ -||eenbies.com^ -||eengange.com^ -||eengilee.xyz^ -||eensoans.com^ -||eephaush.com^ -||eephoawaum.com^ -||eepoawhe.xyz^ -||eepsoumt.com^ -||eepsukso.com^ -||eeptempy.xyz^ -||eeptoabs.com^ -||eeptushe.xyz^ -||eergithi.com^ -||eergortu.net^ -||eeriemediocre.com^ -||eeroawug.com^ -||eersutoo.net^ -||eertogro.net^ -||eeshemto.com^ -||eesidesukbeingaj.com^ -||eesihighlyrec.xyz^ -||eespekw.com^ -||eessoong.com^ -||eessoost.net^ -||eetognauy.net^ -||eetsegeb.net^ -||eetsooso.net^ -||eevaitou.xyz^ -||eewhocmi.com^ -||eeycumpmwy.com^ -||eeywmvwaqqrrl.top^ -||eeywmvwebqarl.top^ -||eeywmvwebqblq.top^ -||eeywmvwebqqrj.top^ -||eezavops.net^ -||eezegrip.net^ -||ef9i0f3oev47.com^ -||efanyorgagetni.info^ -||efdjelx.com^ -||effacedefend.com^ -||effaceecho.com^ -||effacerevealing.com^ -||effateuncrisp.com^ -||effectedscorch.com^ -||effectivecpmcontent.com^ -||effectivecpmgate.com^ -||effectivecreativeformat.com^ -||effectivecreativeformats.com^ -||effectivedisplaycontent.com^ -||effectivedisplayformat.com^ -||effectivedisplayformats.com^ -||effectivegatetocontent.com^ -||effectivemeasure.net^ -||effectiveperformanceformat.com^ -||effectiveperformancenetwork.com^ -||effectscouncilman.com^ -||effectsembower.top^ -||effectsglancefirmly.com^ -||effectslacybulb.com^ -||effectuallyaudition.com^ -||effectuallyimitation.com^ -||effectuallylazy.com^ -||effectuallyrefrigerator.com^ -||effeminatecementsold.com^ -||efficiencybate.com^ -||effixtile-inceive.com^ -||effumeaccupy.website^ -||effusedprankle.com^ -||efinauknceiwou.info^ -||efklkkkvkukf.com^ -||eforhedidnota.com^ -||efptjivneg.com^ -||efumesok.xyz^ -||efvheaepmbgicx.xyz^ -||efvpufdjd.com^ -||efwmpduvgedai.com^ -||egalitysarking.com^ -||egallsylvate.com^ -||egazedatthe.xyz^ -||egbesnfzdfg.com^ -||egcqohrksmlmu.xyz^ -||egczvoopdo.com^ -||egerssarcel.com^ -||egglessunfrees.uno^ -||eggsiswensa.com^ -||eggsreunitedpainful.com^ -||egldvmz.com^ -||eglimoumy.net^ -||egllhcnwro.com^ -||egmfjmhffbarsxd.xyz^ -||egoismundonefifth.com^ -||egotizeoxgall.com^ -||egpdbp6e.de^ -||egpovsl.com^ -||egreephu.com^ -||egretswamper.com^ -||egridstaidly.com^ -||egrogree.xyz^ -||egrousoawhie.com^ -||egrvkoqigygqk.com^ -||egxxlvyguirt.com^ -||egyifdjrbrwyj.com^ -||egykofo.com^ -||egynvnnlhywq.com^ -||egyptianintegration.com^ -||eh0ag0-rtbix.top^ -||ehadmethe.xyz^ -||ehcstrp.com^ -||eheiwhacdsnc.com^ -||ehgavvcqj.xyz^ -||ehliswxnrx.com^ -||ehoqtjfazgxzee.com^ -||ehpcqqxlde.com^ -||ehpnkugmfatoyhg.com^ -||ehpvvxyp.com^ -||ehpxmsqghx.xyz^ -||ehqdzqi.com^ -||ehrydnmdoe.com^ -||eicbgbnbvjf.com^ -||eiderswergelt.com^ -||eidosrebegin.com^ -||eiewwepb.com^ -||eighly.com^ -||eighteenderived.com^ -||eighteenprofit.com^ -||eightuntrue.com^ -||eightygermanywaterproof.com^ -||eignan.com^ -||eiimvmchepssb.xyz^ -||eiistillstayh.com^ -||eikegolehem.com^ -||eingajoytow.org^ -||eintheworldwh.com^ -||eioseklxw.com^ -||eisasbeautifula.info^ -||eiteribesshaints.com^ -||eitfromtheothe.org^ -||eitful.com^ -||eitka.com^ -||eitney.com^ -||eiwojaavyvc.com^ -||eiyjkwmredryb.com^ -||eizwbefbtxxt.com^ -||ejcet5y9ag.com^ -||ejdkqclkzq.com^ -||ejectionthoughtful.com^ -||ejeemino.net^ -||ejidalpiragua.top^ -||ejipaifaurga.com^ -||ejnrvilfilnz.com^ -||ejpzqnqwcszfsz.com^ -||ejrigxesvg.com^ -||ejsgxapv.xyz^ -||ejuiashsateam.info^ -||ejuiashsateampl.info^ -||ejvdfssdj.com^ -||ekaurord.com^ -||ekb-tv.ru^ -||ekgloczbsblg.com^ -||eklfuctjbwddgn.com^ -||ekmas.com^ -||eknrctah.com^ -||ekovfgtgcjqg.com^ -||ekpecfetvved.xyz^ -||ekrnhbmrbbvwdro.com^ -||ektobedirectuklyec.info^ -||ekwzxay.com^ -||elacapivi.com^ -||elaifmeauswvlki.xyz^ -||elasticad.net^ -||elasticdestruct.com^ -||elasticmujeres.com^ -||elasticstuffyhideous.com^ -||elaterconditing.info^ -||elatorfatback.com^ -||elbowfixes.com^ -||elbowrevolutionary.com^ -||elbowsmouldoral.com^ -||elcfdhbxyb.com^ -||eldestcasualelements.com^ -||eldestcontribution.com^ -||elearl.com^ -||eleavers.com^ -||electionmmdevote.com^ -||electnext.com^ -||electosake.com^ -||electranowel.com^ -||electric-contest.pro^ -||electricalbicyclelistnonfiction.com^ -||electricalsedate.com^ -||electricalyellincreasing.com^ -||electronicauthentic.com^ -||electronicconstruct.com^ -||electronicsmissilethreaten.com^ -||elecur.com^ -||elegiachalo.website^ -||elementalantecedent.com^ -||elementarydrypoverty.com^ -||elementcircumscriberotten.com^ -||elepocial.pro^ -||elevatedperimeter.com^ -||elewasgiwiththi.info^ -||elfcoexistbird.com^ -||elfinsande.website^ -||elfnxscnmtao.com^ -||elgotakpgo.xyz^ -||elgust.com^ -||elhdxexnra.xyz^ -||eliaoutbawl.com^ -||elicaowl.com^ -||eligiblecompetitive.com^ -||eliminatedordered.com^ -||elinvarpayola.com^ -||eliondolularhene.info^ -||eliss-vas.com^ -||elitedatingexperience.top^ -||elitedistasteful.com^ -||elitistcompensationstretched.com^ -||elitistrawirresistible.com^ -||elizabethobjectedgarlic.com^ -||elizaguarapo.com^ -||elizaloosebosom.com^ -||elizapanelairplane.com^ -||elizathings.com^ -||elkejneqbkrrl.top^ -||elkejneqbkvlq.top^ -||elkjufuj.xyz^ -||ellcurvth.com^ -||ellicecaesura.com^ -||elliotannouncing.com^ -||ellipticaldatabase.pro^ -||ellmtlvlpihr.com^ -||elltheprecise.org^ -||elmonopolicycr.info^ -||elneagog.com^ -||eloinedcanasta.com^ -||eloiseattempt.com^ -||elongatedmiddle.com^ -||elonreptiloid.com^ -||elooksjustlikea.info^ -||eloquencer.com^ -||eloquentvaluation.com^ -||elrecognisefro.com^ -||elrfqgvvljkvxg.com^ -||elrhieujvi.com^ -||elrkovhhyfkor.com^ -||elsewherebuckle.com^ -||elsewhereopticaldeer.com^ -||eltbbvcqgnkc.com^ -||eltxarqgwngybfi.com^ -||elubvhmdwtcq.com^ -||elugnoasargo.com^ -||eluviabattler.com^ -||elwcchbwtnohia.com^ -||elyvbqklmamkb.top^ -||elyvbqkmlqkqw.top^ -||emailflyfunny.com^ -||emailon.top^ -||embalmswrights.com^ -||embarkdisrupt.com^ -||embarrasschill.com^ -||embarrassmentcupcake.com^ -||embassykeg.com^ -||embeamratline.top^ -||embeddednonsilence.com^ -||embezzlementteddy.com^ -||embodimentpronounrunway.com^ -||embodygoes.com^ -||embogsoarers.com^ -||embolipokies.com^ -||embrailcamino.top^ -||embtrk.com^ -||embwmpt.com^ -||emcpsrwufnn.com^ -||emediate.dk^ -||emeecmou.com^ -||emeraldhecticteapot.com^ -||emerickveilers.space^ -||emgthropositeas.info^ -||emigrantblunder.com^ -||emigrantfirearmcaliber.com^ -||emigrantmovements.com^ -||emigrenanas.com^ -||emitlabelreproduction.com^ -||emitmagnitude.com^ -||emjpbua.com^ -||emkarto.fun^ -||emlifok.info^ -||emmapigeonlean.com^ -||emmenichudson.top^ -||emnucmhhyjjgoy.xyz^ -||emoticappfriends.com^ -||emoticfriends.com^ -||emotionalfriendship.com^ -||emotionallycosmeticshardly.com^ -||emotionallyhemisphere.com^ -||emotot.xyz^ -||empafnyfiexpectt.info^ -||empairscarp.com^ -||empdat.com^ -||empeoarmet.top^ -||emperorsmall.com^ -||empirecdn.io^ -||empireexhibited.com^ -||empirelayer.club^ -||empiremassacre.com^ -||empiremoney.com^ -||empirepolar.com^ -||emploejuiashsat.info^ -||employeelorddifferently.com^ -||employermopengland.com^ -||employindulgenceafraid.com^ -||employmentcreekgrouping.com^ -||employmentsuppressedbeautiful.com^ -||empond.com^ -||empowertranslatingalloy.com^ -||emptorrevalue.digital^ -||emqomxdwrhol.com^ -||emqrjjvalnqbm.top^ -||emqrjjveqnjab.top^ -||emqrjjveqnnav.top^ -||emqrjjveqnnjw.top^ -||emqrjjveqnznl.top^ -||emqvwujfjknkbg.com^ -||emsservice.de^ -||emukentsiwo.org^ -||emulationeveningscompel.com^ -||emumuendaku.info^ -||emxdgt.com^ -||emyfueuktureukwor.info^ -||emzlbqqnnbmzj.top^ -||enablerubbingjab.com^ -||enactdubcompetitive.com^ -||enactedshimmy.website^ -||enacttournamentcute.com^ -||enaenasiftage.com^ -||enamelcourage.com^ -||enarmuokzo.com^ -||enastamo.info^ -||enbclpbyi.com^ -||encampmentgeologydetective.com^ -||encaseauditorycolourful.com^ -||encasesmelly.com^ -||encesprincipledecl.info^ -||enchainwalker.com^ -||enchanted-stretch.pro^ -||enchroe.com^ -||encirclehumanityarea.com^ -||encirclesheriffemit.com^ -||enclearmooch.com^ -||enclosedsponge.com^ -||enclosedswoopbarnacle.com^ -||encodehelped.com^ -||encodeinflected.com^ -||encoilinwove.com^ -||encounterboastful.com^ -||encounterfidelityarable.com^ -||encouragedrealityirresponsible.com^ -||encouragedunrulyriddle.com^ -||encouragingpistolassemble.com^ -||encratysalvo.top^ -||encroachfragile.com^ -||encroachsnortvarnish.com^ -||encumberbiased.com^ -||encumberglowingcamera.com^ -||encumbranceunderlineheadmaster.com^ -||encyclopediaaimless.com^ -||encyclopediacriminalleads.com^ -||endangersquarereducing.com^ -||endinglocksassume.com^ -||endingmedication.com^ -||endingrude.com^ -||endjigsur.com^ -||endlesslyalwaysbeset.com^ -||endlessvow.com^ -||endorsecontinuefabric.com^ -||endorsementgrasshopper.com^ -||endorsementmart.com^ -||endorsementpsychicwry.com^ -||endorsesmelly.com^ -||endowmentoverhangutmost.com^ -||endream.buzz^ -||endurancetransmitted.com^ -||endurecorpulent.com^ -||enduresopens.com^ -||endymehnth.info^ -||enebyq.com^ -||enejvkctedmos.com^ -||enenles.com^ -||enenlyb.com^ -||energeticdryeyebrows.com^ -||energeticrecognisepostcard.com^ -||energypopulationpractical.com^ -||eneverals.biz^ -||eneverseen.org^ -||enframetump.com^ -||enftvgnkylijcp.xyz^ -||engagedgoat.com^ -||engagedsmuggle.com^ -||engagefurnishedfasten.com^ -||engagementdepressingseem.com^ -||engagementpolicelick.com^ -||enginedriverbathroomfaithfully.com^ -||engineseeker.com^ -||englandhogmane.com^ -||engravetexture.com^ -||enguis.com^ -||enhalosecurer.digital^ -||enhalosubsea.com^ -||enhancedweapon.com^ -||enhanceinterestinghasten.com^ -||enhancenephew.com^ -||enharaa.com^ -||enharau.com^ -||enhdgciogijq.com^ -||enherappedo.cc^ -||eniesdzgowy.com^ -||enisleslonely.com^ -||enjehdch.xyz^ -||enjoyedestrangeapplication.com^ -||enjoyedsexualpromising.com^ -||enjoyedtool.com^ -||enjrzhkf.com^ -||enkijanuary.digital^ -||enkluojvftrvr.com^ -||enkvmrkwrnzel.top^ -||enlales.com^ -||enlargementerroronerous.com^ -||enlargementwolf.com^ -||enlightencentury.com^ -||enlnks.com^ -||enmewdrafter.top^ -||enmiser.com^ -||enmitystudent.com^ -||ennedrasawali.guru^ -||enniced.com^ -||enodiarahnthedon.com^ -||enolizekibsey.uno^ -||enoneahbu.com^ -||enoneahbut.org^ -||enormous-society.pro^ -||enormouslynotary.com^ -||enormouslysubsequentlypolitics.com^ -||enormouswar.pro^ -||enoughglide.com^ -||enoughts.info^ -||enoughturtlecontrol.com^ -||enqkeynmmnazl.top^ -||enqpjgdbvf.com^ -||enquiryinsight.com^ -||enquirysavagely.com^ -||enrageeyesnoop.com^ -||enragesundular.guru^ -||enraptureshut.com^ -||enrichdressedprecursor.com^ -||enrichstudentroast.com^ -||enrichyummy.com^ -||enroundwarms.top^ -||ensetepoggies.com^ -||ensignconfinedspurt.com^ -||ensignpancreasrun.com^ -||ensinthetertaning.com^ -||ensoattractedby.info^ -||ensosignal.com^ -||ensuebusinessman.com^ -||entachbanker.top^ -||entaildollar.com^ -||entailgossipwrap.com^ -||entangledivisionbeagle.com^ -||entasesfrette.top^ -||enteredcocktruthful.com^ -||entereddebt.com^ -||enteringimposter.com^ -||enterpriseinclinedvandalism.com^ -||entertaininauguratecontest.com^ -||enticeobjecteddo.com^ -||entirelyapplicationseeing.com^ -||entirelyhonorary.com^ -||entirelysacrament.com^ -||entitledbalcony.com^ -||entitledpleattwinkle.com^ -||entjgcr.com^ -||entlyhavebeden.com^ -||entlypleasantt.info^ -||entrailsintentionsbrace.com^ -||entreatkeyrequired.com^ -||entreatyfungusgaily.com^ -||entrecard.s3.amazonaws.com^ -||entrerscab.com^ -||entterto.com^ -||entuvmcdcedli.com^ -||enueduringhere.info^ -||enuewasadirectres.info^ -||enuresdairi.com^ -||enviabledilate.com^ -||enviablesavouropinion.com^ -||envious-low.com^ -||enviouscredentialdependant.com^ -||enviousforegroundboldly.com^ -||enviousinevitable.com^ -||enviouspipe.com^ -||environmental3x.fun^ -||environmentalanalogous.com^ -||environmentalchangingnative.com^ -||environmentaltallrender.com^ -||envisageasks.com^ -||envoyauthorityregularly.com^ -||envoystormy.com^ -||envylavish.com^ -||enwerzaqqbbnb.top^ -||enwombjounced.space^ -||enx5.online^ -||enxqkbsqlh.com^ -||enyjonakhjo.com^ -||enyunle.com^ -||enyunme.com^ -||enzav.xyz^ -||enzymsucuuba.com^ -||eo62cocntx.com^ -||eoasxirquewfyn.com^ -||eobvppi.com^ -||eofripvanwin.org^ -||eofst.com^ -||eoftheappyrinc.info^ -||eogaeapolaric.com^ -||eondunpea.com^ -||eonsmedia.com^ -||eontappetito.com^ -||eopleshouldt.info^ -||eopleshouldthink.info^ -||eopogliguemvf.com^ -||eopudxnabotrlsx.com^ -||eoqctcsvskqlz.com^ -||eoredi.com^ -||eorganizatio.com^ -||eosads.com^ -||eoveukrnme.info^ -||eoweridus.com^ -||eownouncillors.info^ -||eoxaxdglxecvguh.xyz^ -||eoygypdoeumir.com^ -||eozzjuacvmpry.com^ -||ep5banners.com^ -||epacash.com^ -||epagogerepines.com^ -||epailseptox.com^ -||epdcaabh.com^ -||eperlanhelluo.com^ -||ephebedori.life^ -||ephedrasebait.digital^ -||ephpqyjqyj.com^ -||epicgameads.com^ -||epigyneleonora.digital^ -||epipialbeheira.com^ -||epitokealraun.top^ -||epjwugocpvan.xyz^ -||epmfjjabhfwgkun.com^ -||epnjbpnncucp.com^ -||epnredirect.ru^ -||epochlookout.com^ -||epocvwthrvaxos.com^ -||epodicdrazel.top^ -||epotaidhdbg.com^ -||epoxideouttop.com^ -||eppfquarvmzr.com^ -||epsauthoup.com^ -||epsuphoa.xyz^ -||eptepcaiydxlk.com^ -||eptougry.net^ -||epu.sh^ -||epushclick.com^ -||eputysolomon.com^ -||epvusxjbpodbh.com^ -||epynkklzkvnvs.com^ -||eqads.com^ -||eqcilkii.com^ -||eqdudaj.com^ -||eqhegcbxmsgwil.com^ -||eqkjmvkkmvrvw.top^ -||eqktmnuojibw.com^ -||eqmyjnymnqbqq.top^ -||eqngcxaaw.com^ -||eqpbskmjcfoj.com^ -||eqqnewnqekqzv.top^ -||eqrjuxvhvclqxw.xyz^ -||equabilityassortshrubs.com^ -||equabilityspirepretty.com^ -||equablehowker.com^ -||equanimitymortifyminds.com^ -||equatorabash.com^ -||equatorroom.com^ -||equilibriumindifferentsoak.com^ -||equipmentapes.com^ -||equiptbrotula.com^ -||equiptmullein.top^ -||equirekeither.xyz^ -||equitydefault.com^ -||eqvudqracrhalsg.com^ -||eqyarlabvqjnl.top^ -||era67hfo92w.com^ -||eradobzl.com^ -||erafterabigyellow.info^ -||eramass.com^ -||erankjkytrgh.com^ -||eraudseen.xyz^ -||eravesofefineg.info^ -||eravprvvqqc.xyz^ -||erbiscusys.info^ -||erbiscusysexbu.info^ -||ercabxkngkbnuj.com^ -||ercockremarkedo.info^ -||ercoeteasacom.com^ -||erconditingde.info^ -||erdeallyighab.com^ -||erdecisesgeorg.info^ -||ereallywasnoth.com^ -||eredthechildre.info^ -||ereerdepi.com^ -||erehzj.xyz^ -||erelongoilmen.com^ -||eremuribleak.com^ -||erenachcair.com^ -||erenchinterried.pro^ -||erereauksofthe.info^ -||eresultedinncre.info^ -||ergadx.com^ -||ergjohl.com^ -||erhtaruxxxfg.com^ -||eriawea.com^ -||eringosdye.com^ -||erkeincepts.website^ -||erlvjjyk.com^ -||erm5aranwt7hucs.com^ -||erniphiq.com^ -||ernstdirecly.guru^ -||ero-advertising.com^ -||erofherlittleboy.com^ -||erosionyonderviolate.com^ -||erosyndc.com^ -||erovation.com^ -||erratatoecap.top^ -||errbandsillumination.com^ -||erringstartdelinquent.com^ -||errolandtessa.com^ -||errorpalpatesake.com^ -||errorparasol.com^ -||errors.house^ -||errorssmoked.com^ -||erseducationinin.info^ -||ershniff.com^ -||ersislaqands.com^ -||erssqstdjnn.com^ -||erstonordersityex.info^ -||ertainoutweileds.info^ -||ertewqas.net^ -||ertewqas.org^ -||ertistsldahehu.com^ -||eru5tdmbuwxm.com^ -||erucbaillie.top^ -||eruthoxup.com^ -||ervqqtdjdxvgh.com^ -||erygdsudgkyu.com^ -||erylhxttodh.xyz^ -||eryondistain.com^ -||erysilenitmanb.com^ -||erytheadestrer.digital^ -||esaidees.com^ -||esathyasesume.info^ -||esbeginnyweakel.org^ -||esbqetmmejjtksa.xyz^ -||escalatenetwork.com^ -||escarsboughed.top^ -||escers.com^ -||escharatheins.com^ -||escthermae.com^ -||esculicturbans.com^ -||esculinconsent.top^ -||escy55gxubl6.com^ -||esdcubited.uno^ -||esescvyjtqoda.xyz^ -||eshedofiga.tech^ -||eshkol.io^ -||eshoohasteeg.com^ -||eshouloo.net^ -||esisfulylydev.com^ -||esjvrfq.com^ -||eskilhavena.info^ -||eskimi.com^ -||eslp34af.click^ -||esmyinteuk.info^ -||esnlynotquiteso.com^ -||esodnbhzdpl.com^ -||esopertyva.shop^ -||esosfultrbriolena.info^ -||esoussatsie.xyz^ -||especiallyblareparasol.com^ -||especiallyspawn.com^ -||espinotyponym.com^ -||espionagegardenerthicket.com^ -||espritpenned.top^ -||esqarqiqwulytqy.xyz^ -||esrbkneqve.com^ -||esrpkd.com^ -||essaycosigninvite.com^ -||essential-trash.com^ -||essentialblunder.com^ -||essentiallyitemoutrageous.com^ -||essentialshookmight.com^ -||essentialsicklyinane.com^ -||establishambient.com^ -||estafair.com^ -||estainuptee.com^ -||estaterenderwalking.com^ -||estatestitch.com^ -||estatestrongest.com^ -||estatscarot.com^ -||estatueofthea.info^ -||esteemtalented.com^ -||estellaeyelet.com^ -||estimatedrick.com^ -||estkewasa.com^ -||estoopsi.com^ -||estouca.com^ -||estrinuprise.guru^ -||esumedadele.info^ -||esumeformo.info^ -||eswsentatives.info^ -||et5k413t.rest^ -||etapescaisse.com^ -||etbelpoyes.xyz^ -||etbnbvlnhvr.com^ -||etcodes.com^ -||eteveredgove.info^ -||etflpbk.com^ -||ethaistoothi.com^ -||ethalojo.com^ -||etheappyrincea.info^ -||ethecityonata.com^ -||ethecountryw.org^ -||ethelbrimtoe.com^ -||ethelvampirecasket.com^ -||ethicalpastime.com^ -||ethicaltattva.com^ -||ethicbecamecarbonate.com^ -||ethicel.com^ -||ethichats.com^ -||ethikuma.link^ -||ethoamee.xyz^ -||ethophipek.com^ -||etiamangola.com^ -||etingplansfo.buzz^ -||etingplansfor.org^ -||etiquettegrapesdoleful.com^ -||etjxkvdorypmppp.com^ -||etnacsqssv.com^ -||etobepartoukfare.info^ -||etothepointato.info^ -||etougais.net^ -||etphoneme.com^ -||etretantothis.com^ -||ettilt.com^ -||etuvehackly.com^ -||etxahpe.com^ -||etyequiremu.org^ -||etymonsibycter.com^ -||etystoass.com^ -||euauosx.xyz^ -||euavokhqrxhteot.com^ -||eucing.com^ -||eucli-czt.com^ -||eucosiaepeiric.com^ -||eucriteupmast.com^ -||eudoxia-myr.com^ -||eudstudio.com^ -||eugenearsonmeanwhile.com^ -||euizhltcd6ih.com^ -||eukova.com^ -||eulal-cnr.com^ -||eulogiafilial.com^ -||eulogichebetic.top^ -||eulogyargin.top^ -||eunow4u.com^ -||eunzkvf.com^ -||euonymcalvous.com^ -||euosicjxjv.com^ -||europacash.com^ -||europe-discounts.com^ -||europefreeze.com^ -||euros4click.de^ -||eurse.com^ -||eusmadhlyjn.xyz^ -||euugbutvb.com^ -||euvtoaw.com^ -||euz.net^ -||ev-dating.com^ -||evaluateuncanny.com^ -||evaluationacutegrandpa.com^ -||evaluationfixedlygoat.com^ -||evanpcf.uno^ -||evaporateahead.com^ -||evaporatehorizontally.com^ -||evaporatepublicity.com^ -||evarjrsowtfakk.com^ -||evasiondemandedlearning.com^ -||evasionseptemberbee.com^ -||evcwihysdnptpjm.xyz^ -||evcxssxyncyh.com^ -||evdebdvwnzlyyz.com^ -||eveald.com^ -||evecticvocoder.life^ -||eveenaiftoa.com^ -||evemasoil.com^ -||evencontinuallyclaim.com^ -||eveneraw.digital^ -||evenghiougher.com^ -||eveningsfleawhatsoever.com^ -||eventbarricadewife.com^ -||eventbr.xyz^ -||eventfulknights.com^ -||eventsbands.com^ -||eventuallysmallestejection.com^ -||eventucker.com^ -||evenuewasadi.xyz^ -||ever8trk.com^ -||everalmefarketing.info^ -||everausterity.com^ -||everdreamsofc.info^ -||evergreenfan.pro^ -||evergreentroutpitiful.com^ -||everlastinghighlight.com^ -||everprobation.com^ -||everymark.xyz^ -||everyoneawokeparable.com^ -||everyoneglamorous.com^ -||everypilaus.com^ -||everywheresavourblouse.com^ -||evfisahy.xyz^ -||evfrnqvextppij.com^ -||evgywgur.com^ -||eviclick.pro^ -||evidenceguidance.com^ -||evidencestunundermine.com^ -||evidentoppositepea.com^ -||evidhjksdtgyxrh.xyz^ -||evifokcrmhdmai.com^ -||evilshortcut.com^ -||evivuwhoa.com^ -||evjroovrujr.xyz^ -||evlutvsyfegi.com^ -||evnsotpmavrwp.com^ -||evoign.com^ -||evours.com^ -||evoutouk.com^ -||evouxoup.com^ -||evqpawhucyrdhu.com^ -||evqqhgqy.com^ -||evrae.xyz^ -||evrquvhrwr.com^ -||evslvususdpf.com^ -||evtkugaoxhwegi.com^ -||evtwkkh.com^ -||evushuco.com^ -||evvykulupl.com^ -||evwmwnd.com^ -||evxiwpbzxzanlx.com^ -||evyeuytacm.com^ -||evzhzppj5kel.com^ -||ewaglongoo.com^ -||ewaighee.xyz^ -||ewallowi.buzz^ -||ewasgilded.info^ -||ewasverymuchad.info^ -||ewbmrwzmbkzv.top^ -||ewbmrwzmbvzb.top^ -||ewdxisdrc.com^ -||eweiwykaruwvbi.com^ -||ewerhodub.com^ -||ewesmedia.com^ -||ewhareey.com^ -||ewikajs.com^ -||ewoodandwaveo.com^ -||ewoutosh.com^ -||ewoverth.buzz^ -||ewpubiimput.com^ -||ewqkrfjkqz.com^ -||ewrerew29w09.com^ -||ewrgryxjaq.com^ -||ewrjjqflq.com^ -||ewrolidenratrigh.info^ -||ewruuqe5p8ca.com^ -||ewrwpqqd.xyz^ -||ewtdzpwufzsnc.com^ -||ewtgmfajrdhsyn.xyz^ -||exacdn.com^ -||exactconfigurationhasten.com^ -||exactsag.com^ -||exaggeratekindnessvocal.com^ -||exaggeratestamppost.com^ -||exaltationinsufficientintentional.com^ -||exaltbelow.com^ -||exaltflatterrequested.com^ -||exaltprizers.top^ -||examensmott.top^ -||examinationevolutionmingle.com^ -||examineroverprotectiveproof.com^ -||examinerplodbuild.com^ -||exampledumb.com^ -||examplesusagefeedback.com^ -||exampulsate.com^ -||examsupdatesupple.com^ -||exasperationdashed.com^ -||exasperationincorporate.com^ -||exasperationplotincarnate.com^ -||exbuggishbe.info^ -||excavatorglide.com^ -||exceedinglydiscovered.com^ -||excelelernody.info^ -||excelfriendsdistracting.com^ -||excellenceads.com^ -||excellent-vids.online^ -||excellentafternoon.com^ -||excellentinvolved.com^ -||excellentpics.space^ -||excellentsponsor.com^ -||excellentvids.online^ -||excellentvids.space^ -||excellingvista.com^ -||excelrepulseclaimed.com^ -||excelwrinkletwisted.com^ -||exceptinggapslightest.com^ -||exceptionalharshbeast.com^ -||exceptionweakerboring.com^ -||exceptscasease.website^ -||excessivelybeveragebeat.com^ -||excessivesinner.com^ -||excessstumbledvisited.com^ -||exchange-traffic.com^ -||exchangedbeadannually.com^ -||exchangediscreditmast.com^ -||excitead.com^ -||excitementcolossalrelax.com^ -||excitementoppressive.com^ -||excitinginstitute.com^ -||excitingstory.click^ -||excitonharpers.space^ -||exclaimrefund.com^ -||exclamationresound.com^ -||exclkplat.com^ -||excretekings.com^ -||excruciationhauledarmed.com^ -||excuseparen.com^ -||excusepuncture.com^ -||excusewalkeramusing.com^ -||excuum.com^ -||excwaaclqshxyh.com^ -||exdimkvfbku.com^ -||exdynsrv.com^ -||executecomicswhale.com^ -||executionago.com^ -||executiontoothache.com^ -||executivetumult.com^ -||exefprtna.com^ -||exemplarif.com^ -||exemplarsensor.com^ -||exemplary-range.pro^ -||exemplarychemistry.com^ -||exemptrequest.com^ -||exercisefeeling.com^ -||exertheadlight.com^ -||exertionbesiege.com^ -||exhalejuxtapose.com^ -||exhaleveteranbasketball.com^ -||exhaustfirstlytearing.com^ -||exhauststreak.com^ -||exhcloykalx.com^ -||exhibitapology.com^ -||exhibitedderivedremarkable.com^ -||exhibitedpermanentstoop.com^ -||exhibitionunattractive.com^ -||exhno.com^ -||exi8ef83z9.com^ -||exiledatomise.com^ -||existenceassociationvoice.com^ -||existenceprinterfrog.com^ -||existencethrough.com^ -||existingcraziness.com^ -||exists-mazard.icu^ -||existsvolatile.com^ -||existteapotstarter.com^ -||exitenmitynotwithstanding.com^ -||exlusepolly.com^ -||exmrwwt.com^ -||exmvpyq.com^ -||exnesstrack.com^ -||exoads.click^ -||exobafrgdf.com^ -||exoclick.com^ -||exoclsodaqs.com^ -||exodsp.com^ -||exofrwe.com^ -||exomonyf.com^ -||exoprsdds.com^ -||exorateairing.guru^ -||exosiignvye.xyz^ -||exosrv.com^ -||exotismuntrill.com^ -||expdirclk.com^ -||expectationtragicpreview.com^ -||expectedballpaul.com^ -||expectthatmyeduc.info^ -||expedientabnormaldeceased.com^ -||expelledmotivestall.com^ -||expendhattwo.com^ -||expensedebeak.com^ -||expensepurpose.com^ -||expensewardrobecivil.com^ -||expensivepillowwatches.com^ -||experienceabdomen.com^ -||experiencesunny.com^ -||experimentalconcerningsuck.com^ -||experimentalpersecute.com^ -||experimentmelting.com^ -||expertisefall.com^ -||expertnifg.com^ -||expiry-renewal.click^ -||explainpompeywistful.com^ -||expleteneeps.top^ -||explodedecompose.com^ -||explodemedicine.com^ -||exploderunway.com^ -||exploitdevoid.com^ -||exploitingenious.com^ -||exploitpeering.com^ -||exploittonlets.com^ -||explore-site.com^ -||exploreannihilationquicker.com^ -||explorecomparison.com^ -||exploredefinitely.com^ -||explorefast-1.com^ -||explorefast-2.com^ -||explosionsubdueguidance.com^ -||explosivegleameddesigner.com^ -||expmediadirect.com^ -||expocrack.com^ -||exporder-patuility.com^ -||exportfan.com^ -||exportleggy.com^ -||exportspring.com^ -||exposepresentimentunfriendly.com^ -||exposestomnoup.space^ -||exposureawelessawelessladle.com^ -||exposuremixed.com^ -||expressalike.com^ -||expressingblossomjudicious.com^ -||expressproducer.com^ -||expuge.com^ -||expulsionfluffysea.com^ -||exquisitefundlocations.com^ -||exquisiteseptember.com^ -||exrtbsrv.com^ -||extanalytics.com^ -||extend.tv^ -||extendingboundsbehave.com^ -||extendprophecycontribution.com^ -||extension-ad.com^ -||extension-install.com^ -||extensions-media.com^ -||extensionworthwhile.com^ -||extensivemusseldiscernible.com^ -||extensivenegotiation.com^ -||extentaccreditedinsensitive.com^ -||extentacquire.com^ -||extentresentment.com^ -||exterminateantique.com^ -||exterminatearch.com^ -||exterminatestreet.com^ -||exterminatesuitcasedefenceless.com^ -||externalfavlink.com^ -||extincttravelled.com^ -||extinguishadjustexceed.com^ -||extinguishtogethertoad.com^ -||extra33.com^ -||extraconventional.com^ -||extractdissolve.com^ -||extractforgiveness.com^ -||extractionatticpillowcase.com^ -||extractsupperpigs.com^ -||extralarge-proposal.pro^ -||extraneedlesshoneycomb.com^ -||extremegoggle.com^ -||extremereach.io^ -||extremeshredcharm.com^ -||extremitybagpipechallenge.com^ -||extremityzincyummy.com^ -||extrer.com^ -||exuharpxs.com^ -||exurbdaimiel.com^ -||exwotics6heomrthaoi4r.com^ -||exxaygm.com^ -||eyauknalyticafra.info^ -||eycameoutoft.info^ -||eychroi.com^ -||eyeballceorl.guru^ -||eyeballcorruption.com^ -||eyebrowfaciliate.com^ -||eyebrowsasperitygarret.com^ -||eyebrowscrambledlater.com^ -||eyebrowsneardual.com^ -||eyebrowsprocurator.com^ -||eyefuneve.com^ -||eyenider.com^ -||eyeota.net^ -||eyere.com^ -||eyereturn.com^ -||eyeshadowclayindulgence.com^ -||eyeviewads.com^ -||eyharae.com^ -||eyhcervzexp.com^ -||eyjouer.com^ -||eylepgswsnyyd.com^ -||eymaume.com^ -||eymised.com^ -||eynicit.com^ -||eyomusbsxrib.com^ -||eypeole.com^ -||eyquvllh.com^ -||eyrarbuggers.com^ -||eyrshwjvam.com^ -||eyrvfxwrogfslk.com^ -||eytheed.com^ -||eyyicbskhglf.com^ -||ezaicmee.xyz^ -||ezatrvzfe.com^ -||ezcgojaamg.com^ -||ezdgmtsaeu.com^ -||ezexfzek.com^ -||ezhefg9gbhgh10.com^ -||ezidygd.com^ -||ezjhhapcoe.com^ -||ezmob.com^ -||eznoz.xyz^ -||ezodhorrent.top^ -||ezoufdpeyqaain.com^ -||ezqbbqybwjbvm.top^ -||ezsbhlpchu.com^ -||ezulqzssxnu.com^ -||ezwnjnnkjaamw.top^ -||ezyebrbaymnb.top^ -||ezyenrwcmo.com^ -||ezzmvdyyzccx.com^ -||f0657e4fd5.com^ -||f07neg4p.de^ -||f092680893.com^ -||f0eba64ba6.com^ -||f145794b22.com^ -||f14b0e6b0b.com^ -||f19bcc893b.com^ -||f224b87a57.com^ -||f27386cec2.com^ -||f28bb1a86f.com^ -||f2c4410d2a.com^ -||f2svgmvts.com^ -||f3663618ff.com^ -||f3f202565b.com^ -||f3udfa7nfguhni.com^ -||f43f5a2390.com^ -||f4823894ba.com^ -||f48d1c06e4.com^ -||f4961f1b2e.com^ -||f59408d48d.com^ -||f5v1x3kgv5.com^ -||f773a03dcb.com^ -||f794d2f9d9.com^ -||f7e5bf5ed8.com^ -||f8260adbf8558d6.com^ -||f83d8a9867.com^ -||f84add7c62.com^ -||f853150605ccb.com^ -||f8be4be498.com^ -||f8e36bb73c.com^ -||f95nkry2nf8o.com^ -||f9d38526cd.com^ -||fa77756437.com^ -||fabriczigzagpercentage.com^ -||fabrkrup.com^ -||facebarclarty.com^ -||facersmangles.com^ -||facesnotebook.com^ -||facetclimax.com^ -||faciledegree.com^ -||facileravagebased.com^ -||faciliatefightpierre.com^ -||facilitatevoluntarily.com^ -||facilitycompetition.com^ -||facilityearlyimminent.com^ -||facilitypestilent.com^ -||fackeyess.com^ -||fackinsismal.com^ -||factoruser.com^ -||factquicker.com^ -||facyptythu.com^ -||fadbell.com^ -||fadcuhanbd.com^ -||fadegranted.com^ -||fademployedtransactions.com^ -||fadf617f13.com^ -||fadfussequipment.com^ -||fadingsulphur.com^ -||fadraiph.xyz^ -||fadrovoo.xyz^ -||fadsims.com^ -||fadsimz.com^ -||fadsipz.com^ -||fadskis.com^ -||fadskiz.com^ -||fadslimz.com^ -||fadssystems.com^ -||fadszone.com^ -||fadtetbwsmk.xyz^ -||fae46gussylvatica.com^ -||faefibdom.top^ -||faestara.com^ -||faffwut.com^ -||faffylunk.space^ -||faggapmunost.com^ -||faggrim.com^ -||fagovwnavab.com^ -||fagywalu.pro^ -||faidoud.com^ -||faihiwhe.com^ -||failedmengodless.com^ -||failingaroused.com^ -||failpendingoppose.com^ -||failurehamburgerillicit.com^ -||failuremaistry.com^ -||failureyardjoking.com^ -||faintbedub.life^ -||faintdefrost.com^ -||faintedtwistedlocate.com^ -||faintestlogic.com^ -||faintestmingleviolin.com^ -||faintjump.com^ -||faintstates.com^ -||faintsuperintend.com^ -||fairadsnetwork.com^ -||fairfaxhousemaid.com^ -||fairnesscrashedshy.com^ -||fairnessels.com^ -||fairnessmolebedtime.com^ -||fairytaleundergoneopenly.com^ -||faisaphoofa.net^ -||faised.com^ -||faithaiy.com^ -||faithfullyprotectionundo.com^ -||faithfullywringfriendship.com^ -||faithiqs.com^ -||faituzou.net^ -||faiverty-station.com^ -||faiwastauk.com^ -||fajukc.com^ -||fakeerupriser.com^ -||fakesorange.com^ -||falcatayamalka.com^ -||falkag.net^ -||falkwo.com^ -||fallalentered.com^ -||fallhadintense.com^ -||fallingseveral.com^ -||fallinsolence.com^ -||falloutbraidengaged.com^ -||falloutmariasauce.com^ -||falloutspecies.com^ -||falsarywaybung.com^ -||falsechasingdefine.com^ -||falsifybrightly.com^ -||falsifylilac.com^ -||familiarpyromaniasloping.com^ -||familyborn.com^ -||familycomplexionardently.com^ -||famobmf.com^ -||famoot.com^ -||famous-line.pro^ -||famousremainedshaft.com^ -||famularshun.com^ -||fanagentmu.pics^ -||fanciedproduced.com^ -||fanciedrealizewarning.com^ -||fancydoctrinepermanently.com^ -||fancywhim.com^ -||fandelcot.com^ -||fandmo.com^ -||fangatrocious.com^ -||fangsblotinstantly.com^ -||fangsswissmeddling.com^ -||fanklelaiser.com^ -||fannierbedumb.guru^ -||fannyindex.com^ -||fansang.xyz^ -||fantasticaubergine.com^ -||fantasticdiet.pro^ -||fantasticgap.pro^ -||fanydourer.com^ -||fanza.cc^ -||fapmeth.com^ -||fapstered.com^ -||faptdsway.ru^ -||faquirrelot.com^ -||faracoon.com^ -||faramkaqxoh.com^ -||farawayreel.com^ -||farciedfungals.top^ -||fardasub.xyz^ -||fardelbungo.com^ -||fardemanjack.com^ -||fardingsoiling.com^ -||farewell457.fun^ -||farflungwelcome.pro^ -||fargwyn.com^ -||farmagegaudful.com^ -||farmhumor.host^ -||farmmandatehaggard.com^ -||faroff-age.pro^ -||farrierbalmy.com^ -||farteniuson.com^ -||fartherpensionerassure.com^ -||fartmoda.com^ -||fasciaekatcina.com^ -||fascinateddashboard.com^ -||fashionablegangsterexplosion.com^ -||fassknolls.top^ -||fastapi.net^ -||fastcdn.info^ -||fastclick.net^ -||fastdld.com^ -||fastdlr.com^ -||fastdmr.com^ -||fastdntrk.com^ -||fastenchange.com^ -||fastennonsenseworm.com^ -||fastenpaganhelm.com^ -||faster-trk.com^ -||fastesteye.com^ -||fasthypenews.com^ -||fastincognitomode.com^ -||fastlnd.com^ -||fastnativead.com^ -||fatalboy.pro^ -||fatalityadministrator.com^ -||fatalitycharitablemoment.com^ -||fatalityplatinumthing.com^ -||fatalityreel.com^ -||fatalloved.com^ -||fatbkiwcizk.com^ -||fatchilli.media^ -||fatenoticemayhem.com^ -||fatheemt.com^ -||fathmurcurable.com^ -||fatimacapos.com^ -||fatlossremedies.com^ -||fatotdaqsb.com^ -||fatsosjogs.com^ -||fatstepn.click^ -||fatuoidmunify.com^ -||fatzuclmihih.com^ -||faudouglaitu.com^ -||faujdarunrake.top^ -||faukoocifaly.com^ -||faulterdeplume.com^ -||faultspiano.com^ -||faunaldipsas.digital^ -||fauneeptoaso.com^ -||fausothaur.com^ -||fauwhoocoa.com^ -||favaqo.xyz^ -||favorable-sample.com^ -||favorershalwar.top^ -||favorite-option.pro^ -||favoritenought.com^ -||favoritetonic.com^ -||favorskhivan.com^ -||favourablerecenthazardous.com^ -||favpqrlawfqst.com^ -||favzzmeziy.com^ -||faxqaaawyb.com^ -||fayijxrs.com^ -||fayzrtqszkcb.com^ -||fazanppq.com^ -||fazinghomelet.top^ -||fazthmut.com^ -||fb-plus.com^ -||fb99ef9239.com^ -||fbcdn2.com^ -||fbebmgbiou.com^ -||fbffdfproxwqi.com^ -||fbgdc.com^ -||fbgwruetfgbhp.com^ -||fbkzqnyyga.com^ -||fbmedia-bls.com^ -||fbmedia-ckl.com^ -||fbmedia-dhs.com^ -||fbnztqwlirf.com^ -||fbrheofkccovs.xyz^ -||fbroxaiityhkz.com^ -||fbtinlxy.com^ -||fbxyuleyktun.com^ -||fc0a58af2e.com^ -||fc29334d79.com^ -||fc7c8be451.com^ -||fc861ba414.com^ -||fccinteractive.com^ -||fcdqlnmsoi.com^ -||fcharacaena.com^ -||fciyckhlpdxou.xyz^ -||fckmedate.com^ -||fclmhohgj.com^ -||fclwqrglxgyye.com^ -||fclypuqnbykp.xyz^ -||fcpfth.xyz^ -||fcprst.xyz^ -||fcpygacbjukjdvr.com^ -||fcswhwglli.com^ -||fcudlfqupglxynu.xyz^ -||fczaifik.com^ -||fd2a9dd918.com^ -||fd2cd5c351.com^ -||fd39024d2a.com^ -||fd5orie8e.com^ -||fd7qz88ckd.com^ -||fdawdnh.com^ -||fdelphaswcealifornica.com^ -||fdheincvdbp.com^ -||fdiirjong.com^ -||fdmfbxvsthr.xyz^ -||fdovswgdj.com^ -||fdpfkdnpvpmb.com^ -||fdrgtt9edmej010.com^ -||fdubbogbean.guru^ -||fe7qygqi2p2h.com^ -||fe95a992e6afb.com^ -||feadbe5b97.com^ -||feadrope.net^ -||fealerector.top^ -||fearplausible.com^ -||feastoffortuna.com^ -||featbooksterile.com^ -||featurelink.com^ -||featuremedicine.com^ -||featureslounge.com^ -||featuresscanner.com^ -||featuresthrone.com^ -||feazingtrans.com^ -||feb6262526.com^ -||febadu.com^ -||febatigr.com^ -||febrah.com^ -||februarybogus.com^ -||februarynip.com^ -||fecerismasker.com^ -||fedapush.net^ -||fedassuagecompare.com^ -||federalcertainty.com^ -||fedlee.com^ -||fednunvckcsx.com^ -||fedqdf.quest^ -||fedrocou.net^ -||fedsit.com^ -||fedykr.com^ -||feeborewood.top^ -||feed-ads.com^ -||feed-xml.com^ -||feedbackslingnonpareil.com^ -||feededspreath.top^ -||feedfinder23.info^ -||feedgist.com^ -||feedingminder.com^ -||feedisbeliefheadmaster.com^ -||feedlottumasha.guru^ -||feedyourheadmag.com^ -||feefoamo.net^ -||feefouga.com^ -||feegoust.xyz^ -||feegozoa.com^ -||feegreep.xyz^ -||feelfereetoc.top^ -||feelingsmixed.com^ -||feelingssignedforgot.com^ -||feeloshu.com^ -||feelresolve.com^ -||feelseveryone.com^ -||feelsjet.com^ -||feeseeho.com^ -||feeshoul.xyz^ -||feetdonsub.live^ -||feethach.com^ -||feetheho.com^ -||feewoajy.net^ -||fefoasoa.xyz^ -||fegsbatak.uno^ -||feignoccasionedmound.com^ -||feignthat.com^ -||feintelbowsburglar.com^ -||feistyhelicopter.com^ -||feistyswim.com^ -||fejla.com^ -||fejvqtmgwfohb.com^ -||fejwcnbsu.com^ -||fekybctoozk.com^ -||felahinpitanga.top^ -||feliev.com^ -||feline-angle.pro^ -||felingual.com^ -||felipby.live^ -||fellerbeeline.top^ -||fellrummageunpleasant.com^ -||fellysarum.top^ -||felonauditoriumdistant.com^ -||felonlosel.com^ -||feluccahoit.com^ -||femald.com^ -||femalehasslegloss.com^ -||femalesunderpantstrapes.com^ -||femefaih.com^ -||femin.online^ -||femininetextmessageseducing.com^ -||femoafoo.com^ -||femsoahe.com^ -||femsurgo.com^ -||fenacheaverage.com^ -||fencerecollect.com^ -||fencerscoelho.com^ -||fenchylsoonish.com^ -||fenddiscourse.com^ -||feneverybodypsychological.com^ -||fenixm.com^ -||fepgdpebyr.com^ -||fepseqdkfyfjc.com^ -||feqvfgfqe.com^ -||fer2oxheou4nd.com^ -||feralopponentplum.com^ -||ferelatedmothes.com^ -||ferialcommixt.com^ -||ferict.com^ -||feript.com^ -||ferlingbelayed.com^ -||fermolo.info^ -||feroffer.com^ -||ferrycontinually.com^ -||fertilecalfawelessaweless.com^ -||fertilestared.com^ -||fertilisedforesee.com^ -||fertilisedignoringdeceive.com^ -||fertilisedsled.com^ -||fertilizerpairsuperserver.com^ -||fertilizerpokerelations.com^ -||ferukentaspect.info^ -||ferventhoaxresearch.com^ -||ferventvague.com^ -||fervorssketch.top^ -||feshekubsurvey.space^ -||feshoassan.com^ -||fessoovy.com^ -||festinsages.website^ -||festivalflabbergasteddeliquencydeliquency.com^ -||festivityratfun.com^ -||festtube.com^ -||festusthedrag.com^ -||fetchedhighlight.com^ -||fetefend.top^ -||fetidbelow.com^ -||fetidgossipleaflets.com^ -||fetinhapinhedt.com^ -||feuageepitoke.com^ -||feudalmalletconsulate.com^ -||feudalplastic.com^ -||feudistchub.uno^ -||feuilleoutwake.top^ -||feuingcrche.com^ -||feveretcostly.top^ -||fewcupboard.com^ -||fewergkit.com^ -||fewrfie.com^ -||fexyop.com^ -||fezacoox.net^ -||fezwpagrhg.com^ -||fezzanminyans.com^ -||ff00c90f6a.com^ -||ff07fda5aa.com^ -||ff4eaea9ba.com^ -||ffawwuagvom.com^ -||ffbvhlc.com^ -||ffcclqkmmlmecf.xyz^ -||ffesutnkrvy.com^ -||fffbd1538e.com^ -||ffffff0000ff.com^ -||ffffffdcdcdc.name^ -||ffqtjwwhupcg.com^ -||ffqvjpkwe.com^ -||ffrxlhuwvyldpk.com^ -||ffsewzk.com^ -||ffuzila.com^ -||ffwbzklcszdk.com^ -||ffxxdjucvk.com^ -||fgbthrsxnlo.xyz^ -||fgdxwpht.com^ -||fgfgnbmeieorr910.com^ -||fgigrmle.xyz^ -||fgijincfktbguv.xyz^ -||fgislklsqqytr.com^ -||fgisstdudch.com^ -||fgkoxeqjpal.com^ -||fgkqaatlzhgn.com^ -||fgoqnva.com^ -||fgpmxwbxnpww.xyz^ -||fgpvxxbsickfm.xyz^ -||fgrvbkquwurttn.com^ -||fgtnyfuk.xyz^ -||fgxfnkiojgs.com^ -||fh259by01r25.com^ -||fhahujwafaf.com^ -||fhajhezinl.com^ -||fhdwtku.com^ -||fhepiqajsdap.com^ -||fhgh9sd.com^ -||fhhwsvtl.com^ -||fhisladyloveh.xyz^ -||fhjvhupv.com^ -||fhlceugidb.xyz^ -||fhsmtrnsfnt.com^ -||fhsvyfoadsbo.com^ -||fhuafkxvrzgmyn.com^ -||fhujotrb.com^ -||fhuldusmtyenuf.com^ -||fhuvfdycagmkhr.com^ -||fhzgeqk.com^ -||fiatgrabbed.com^ -||fiauntnewing.digital^ -||fibaffluencebetting.com^ -||fibberpuddingstature.com^ -||fibdistrust.com^ -||fibfgfptaeci.com^ -||fibmaths.com^ -||fibodjuxbxd.xyz^ -||fibrehighness.com^ -||ficinhubcap.com^ -||fickle-brush.com^ -||fickleclinic.com^ -||ficklepilotcountless.com^ -||fictionauspice.com^ -||fictionfittinglad.com^ -||fictiongroin.com^ -||fictionmineralladder.com^ -||ficusoid.xyz^ -||fiddleweaselloom.com^ -||fidelity-media.com^ -||fidelitybarge.com^ -||fidelitybearer.com^ -||fidnkwuqmaknlwr.com^ -||fieldofbachus.com^ -||fieldparishskip.com^ -||fiendinsist.com^ -||fiendpreyencircle.com^ -||fienttestor.guru^ -||fiercefacetwidely.com^ -||fiercequips.com^ -||fieryinjure.com^ -||fierymint.com^ -||fierysolemncow.com^ -||fieslobwg.com^ -||fifteenthhardboiledbanker.com^ -||fifthjournalisminadequate.com^ -||fightingleatherconspicuous.com^ -||fightmallowfiasco.com^ -||fightsedatetyre.com^ -||figuan.com^ -||fihsgqbif.com^ -||fiigtxpejme.com^ -||fiinann.com^ -||fiinnancesur.com^ -||fiiqmjyrznkhbv.com^ -||fiisscqwokt.com^ -||fijekone.com^ -||fikedaquabib.com^ -||filasofighit.com^ -||filasseseeder.com^ -||filchmadeirahotel.com^ -||filesdots.com^ -||filese.me^ -||filetarget.com^ -||filetarget.net^ -||filhibohwowm.com^ -||filletdose.com^ -||filletnails.com^ -||fillingimpregnable.com^ -||filmesonlinegratis.com^ -||filmreorganizeford.com^ -||filterexchangecage.com^ -||filternannewspaper.com^ -||filtertopplescream.com^ -||filthybudget.com^ -||filthysignpod.com^ -||fimserve.com^ -||fin.ovh^ -||finalice.net^ -||finance-hot-news.com^ -||finance2you.org^ -||finbiznews.com^ -||fincbiqavgoe.com^ -||findanonymous.com^ -||findbetterresults.com^ -||findingattending.com^ -||findingexchange.com^ -||findnewline.com^ -||findromanticdates.com^ -||findslofty.com^ -||fine-wealth.pro^ -||finedbawrel.com^ -||finedintersection.com^ -||finednothue.com^ -||fineporno.com^ -||finesseboisterous.com^ -||finessesherry.com^ -||fingahvf.top^ -||fingernaildevastated.com^ -||fingerprevious.com^ -||fingerprintoysters.com^ -||fingertipsquintinclusion.com^ -||finishcomplicate.com^ -||finishdancingwildest.com^ -||finisheddaysflamboyant.com^ -||finishedvistaquickly.com^ -||finishingracial.com^ -||finized.co^ -||finkyepbows.com^ -||finmarkgaposis.com^ -||finnan2you.com^ -||finnan2you.net^ -||finnan2you.org^ -||finnanpunched.top^ -||finnnann.com^ -||finreporter.net^ -||finsoafo.xyz^ -||finsoogn.xyz^ -||finxxak.com^ -||fiorenetwork.com^ -||fipkcakk.com^ -||fiprst.xyz^ -||firearminvoluntary.com^ -||firearmtire.com^ -||fireboxarborer.com^ -||fireflydagomba.com^ -||firelnk.com^ -||fireplaceroundabout.com^ -||firesinfamous.com^ -||fireventcooperate.com^ -||firewoodpeerlessuphill.com^ -||fireworkraycompared.com^ -||fireworksane.com^ -||fireworksattendingsordid.com^ -||fireworksjowrote.com^ -||firkedpace.life^ -||firmhurrieddetrimental.com^ -||firmlylowest.com^ -||firmmaintenance.com^ -||firmsossa.guru^ -||firnebmike.live^ -||first-pollution.pro^ -||first-rate.com^ -||firsthandtie.com^ -||firstlightera.com^ -||firstlyfirstpompey.com^ -||firstlyliquidstereotype.com^ -||firstverifyemigrant.com^ -||firtaips.com^ -||firtorent-yult-i-274.site^ -||firumuti.xyz^ -||fishedtopple.com^ -||fishermanslush.com^ -||fishingtouching.com^ -||fishmanmurph.com^ -||fishybackgroundmarried.com^ -||fishyoverallsupplement.com^ -||fishyscalpelweight.com^ -||fishyshortdeed.com^ -||fisikcbsosqet.com^ -||fistdoggie.com^ -||fistevasionjoint.com^ -||fistofzeus.com^ -||fistsurprising.com^ -||fitcenterz.com^ -||fitchedjimmy.guru^ -||fitfuldemolitionbilliards.com^ -||fitsazx.xyz^ -||fitsjamescommunicated.com^ -||fitssheashasvs.info^ -||fitthings.info^ -||fitting-population.com^ -||fittingcentermonday.com^ -||fittitfucose.com^ -||fivcgqubtfowus.com^ -||fivelegant.com^ -||fivetrafficroads.com^ -||fivulsou.xyz^ -||fivulu.uno^ -||fiwhibse.com^ -||fiwjupsaeltx.com^ -||fixbreakthrough.com^ -||fixdynamics.info^ -||fixedencampment.com^ -||fixedgodmother.com^ -||fixedlowraid.com^ -||fixedlygrown.com^ -||fixespreoccupation.com^ -||fixpass.net^ -||fizawhwpyda.com^ -||fizzysquirtbikes.com^ -||fjdpdcdndc.com^ -||fjhfruuhmgnrt.com^ -||fjmgnfoedmsjj.xyz^ -||fjmksbwxb.com^ -||fjojdlcz.com^ -||fjwymafkgqfq.xyz^ -||fjxdafshdrnnvdw.com^ -||fjxowepqiwrdao.com^ -||fkbkun.com^ -||fkbwtoopwg.com^ -||fkcubmmpn.xyz^ -||fkcvtiqbbgedb.com^ -||fkecheotlf.com^ -||fkexeijtqstuh.xyz^ -||fkllodaa.com^ -||fkodq.com^ -||fkovjfx.com^ -||fkpklrphfw.com^ -||fkpsqdzr.com^ -||fkrdybcqxlytvs.xyz^ -||fksnk.com^ -||fkugzbngtla.com^ -||fkwkzlb.com^ -||fkxsklor.com^ -||fkyhqtfiopfit.com^ -||fkyujept.com^ -||fkzgfsddr.com^ -||fla4n6ne7r8ydcohcojnnor.com^ -||flabbyyolkinfection.com^ -||flagads.net^ -||flagmantensity.com^ -||flagros2sii8fdbrh09.com^ -||flagunforgivablewaver.com^ -||flairadscpc.com^ -||flakecontainsgrill.com^ -||flakesaridphysical.com^ -||flakeschopped.com^ -||flakesyet.com^ -||flamboyant-great.pro^ -||flamebeard.top^ -||flaminglamesuitable.com^ -||flannelbeforehand.com^ -||flannellegendary.com^ -||flapgroundless.com^ -||flapicyconquered.com^ -||flapsoonerpester.com^ -||flarby.com^ -||flarytapuyan.com^ -||flashb.id^ -||flashclicks.com^ -||flashingmeansfond.com^ -||flashingnicer.com^ -||flashingnumberpeephole.com^ -||flashlightstypewriterparquet.com^ -||flashnetic.com^ -||flashycontagiouspulverize.com^ -||flashymass.com^ -||flasklimbearlier.com^ -||flatbarberarrangements.com^ -||flatbedbowings.top^ -||flatepicbats.com^ -||flatgatherresource.com^ -||flatlyforensics.com^ -||flatteringbabble.com^ -||flatteringscanty.com^ -||flatterscandal.com^ -||flattoppugmill.uno^ -||flauchtponzite.com^ -||flaviusemulsor.com^ -||flavorylenvoi.com^ -||flavourdinerinadmissible.com^ -||flavourforgave.com^ -||flaw.cloud^ -||flawenormouslyattractive.com^ -||flawerosion.com^ -||flaweyesight.com^ -||flaxconfession.com^ -||flaxdoorbell.com^ -||flaxierfilmset.com^ -||flaxlistedleague.com^ -||flbpplqrvzopon.com^ -||flbvmgxpgnblod.com^ -||flcrcyj.com^ -||fldes6fq.de^ -||fldkakjccxhgw.com^ -||fleahat.com^ -||fleckfound.com^ -||flecur.com^ -||fleddatabaseclothing.com^ -||fleddaughter.com^ -||fleenaive.com^ -||fleeoutspoken.com^ -||fleeredkeg.com^ -||fleetingretiredsafe.com^ -||fleetsbromian.top^ -||fleeunleashangel.com^ -||flelgwe.site^ -||flenchnenes.top^ -||fleraprt.com^ -||fleshlyzombis.com^ -||fleuronsnore.com^ -||flewroundandro.info^ -||flexcheekadversity.com^ -||flexlinks.com^ -||flfegwxrctclm.com^ -||flickerbridge.com^ -||flickeringintention.pro^ -||flickerworlds.com^ -||flickyoutsail.top^ -||fliddercharm.space^ -||fliedridgin.com^ -||fligha.com^ -||flimmerscabish.com^ -||flimsymarch.pro^ -||flinchasksmain.com^ -||flinttovaria.com^ -||flipendangered.com^ -||flipool.com^ -||flippantguilt.com^ -||flirtatiousconsultyoung.com^ -||flitespashka.top^ -||flixdot.com^ -||flixtrial.com^ -||flmfcox.com^ -||flnfgdkq.com^ -||flnxcveswar.com^ -||floatingbile.com^ -||floatingdrake.com^ -||floatingfolly.com^ -||floccischlump.com^ -||flockinjim.com^ -||flogpointythirteen.com^ -||flogunethicalexceedingly.com^ -||floitcarites.com^ -||flomigo.com^ -||floodeighty.com^ -||floodingdaredsanctuary.com^ -||floodingonion.com^ -||floodtender.com^ -||flopaugustserpent.com^ -||flopexemplaratlas.com^ -||floralrichardapprentice.com^ -||floraopinionsome.com^ -||floristgathering.com^ -||flossdiversebates.com^ -||flotsanrantan.com^ -||flounderhomemade.com^ -||flounderpillowspooky.com^ -||flourishbriefing.com^ -||flourishingcollaboration.com^ -||flourishinghardwareinhibit.com^ -||flowerasunder.com^ -||flowerbooklet.com^ -||flowerdicks.com^ -||flowitchdoctrine.com^ -||flowln.com^ -||flowsearch.info^ -||flowwiththetide.xyz^ -||floyme.com^ -||flpfsqgjsarghs.com^ -||flqdbbzd.com^ -||flqwvojijhqqlq.com^ -||flrdra.com^ -||fluemantappall.guru^ -||fluencydepressing.com^ -||fluencyinhabited.com^ -||fluencythingy.com^ -||fluentlydeadlineski.com^ -||fluese.com^ -||fluffychair.pro^ -||fluffynyasquirell.com^ -||fluffytracing.com^ -||fluid-company.pro^ -||fluidallobar.com^ -||fluiddisaster.pro^ -||fluidicmarrams.com^ -||fluidintolerablespectacular.com^ -||fluingdulotic.com^ -||flukepopped.com^ -||flumesheroes.top^ -||flumesrookie.com^ -||fluqualificationlarge.com^ -||flurrdid.top^ -||flurrylimmu.com^ -||flushafterwardinteger.com^ -||flushconventional.com^ -||flushedheartedcollect.com^ -||flushgenuinelydominion.com^ -||flushoriginring.com^ -||fluxads.com^ -||fluxtowed.com^ -||flvvcqfmw.com^ -||flyerseminarmaintenance.com^ -||flyerveilconnected.com^ -||flyingadvert.com^ -||flyingperilous.com^ -||flyingsquirellsmooch.com^ -||flylikeaguy.com^ -||flymob.com^ -||flytechb.com^ -||fmapiosb.xyz^ -||fmbsknwpvxlhqim.com^ -||fmbyqmu.com^ -||fmgcdgnousrww.com^ -||fmheoodt.com^ -||fmhyysk.com^ -||fmkqhwrfvs.com^ -||fmocscbstnhbq.com^ -||fmoqabrwef.com^ -||fmorugnmnihrcv.com^ -||fmpub.net^ -||fmsads.com^ -||fmsde0dv2j54.com^ -||fmstigat.online^ -||fmuvczdhurcu.com^ -||fmv9kweoe06r.com^ -||fmwzfwzxztu.com^ -||fmxfboibrmbf.xyz^ -||fmzjinez.com^ -||fnaycb.com^ -||fnbauniukvi.com^ -||fnelqqh.com^ -||fnlojkpbe.com^ -||fnnmnupevx.com^ -||fnnvyvxiu.com^ -||fnqcbxqvodj.com^ -||fnrrm2fn1njl1.com^ -||fntphihy.com^ -||fnuimuuifssv.com^ -||fnxkntusnd.com^ -||fnxtoiwlrgevjm.com^ -||fnzuymy.com^ -||foadeeph.xyz^ -||foaglaid.xyz^ -||foagreen.xyz^ -||foakiwhazoja.com^ -||foalwoollenwolves.com^ -||foamsomethingrobots.com^ -||foapsovi.net^ -||fobeetch.net^ -||focalex.com^ -||focath.com^ -||focoidsatt.uno^ -||focumu.com^ -||focusedserversgloomy.com^ -||focusedunethicalerring.com^ -||focwcuj.com^ -||fodderripeskyscraper.com^ -||fodifhvg.com^ -||fodsoack.com^ -||foerpo.com^ -||foetusconductfold.com^ -||foflib.org^ -||foggilysyling.top^ -||foggydefy.com^ -||foggytube.com^ -||foghug.site^ -||fognvcteac.com^ -||fogsham.com^ -||fogtweybq.com^ -||foguroli.pro^ -||fogvnoq.com^ -||foheltou.com^ -||fohikrs.com^ -||fohvutgi.com^ -||fokvgxuomu.com^ -||folbwkw.com^ -||foldedabstinenceconsole.com^ -||foldedprevent.com^ -||foldercamouflage.com^ -||foldingclassified.com^ -||foldinginstallation.com^ -||foldingsuppressedhastily.com^ -||foliosedunlin.guru^ -||foliumumu.com^ -||folkscombine.com^ -||folksordinarilyindoors.com^ -||followeraggregationtraumatize.com^ -||followingexhaustedmicrowave.com^ -||followmalnutritionjeanne.com^ -||follyeffacegrieve.com^ -||fomentirrite.top^ -||fomfwrpfklckhr.com^ -||fompouta.xyz^ -||fomulex.com^ -||fondfelonybowl.com^ -||fondlescany.top^ -||fondnessbrokestreet.com^ -||fondnessverge.com^ -||fonnishcranked.com^ -||fontdeterminer.com^ -||fontenlargemonopoly.com^ -||fontsocketsleepover.com^ -||foodieblogroll.com^ -||foodowingweapon.com^ -||foogpdywvrswrxl.com^ -||foojeshoops.xyz^ -||foojimie.net^ -||foolerybonded.com^ -||foolish-devil.pro^ -||foolishcounty.pro^ -||foolishjunction.com^ -||foolishyours.com^ -||foolproofanatomy.com^ -||foomaque.net^ -||fooptoat.com^ -||footageaccomplishment.com^ -||footagegift.com^ -||footar.com^ -||footcomefully.com^ -||foothoupaufa.com^ -||footnote.com^ -||footprintsfurnish.com^ -||footprintssoda.com^ -||footprintstopic.com^ -||footprintswarming.com^ -||footstepnoneappetite.com^ -||footwearrehearsehouse.com^ -||foourwfuuq.com^ -||fopxivtbk.com^ -||for-j.com^ -||for4mobiles.com^ -||forads.pro^ -||foramendowve.com^ -||foramoongussor.com^ -||forarchenchan.com^ -||forasmum.live^ -||foraxewan.com^ -||forazelftor.com^ -||forbeautiflyr.com^ -||forbeginnerbedside.com^ -||forbidcrenels.com^ -||forbledpukras.top^ -||forcealetell.com^ -||forcedbedmagnificent.com^ -||forceddenial.com^ -||forcelessgooseberry.com^ -||forcelessgreetingbust.com^ -||forcetwice.com^ -||forciblelad.com^ -||forciblepolicyinner.com^ -||forcingclinch.com^ -||forearmdiscomfort.com^ -||forearmsickledeliberate.com^ -||forearmsunny.com^ -||forearmthrobjanuary.com^ -||forebypageant.com^ -||foreelementarydome.com^ -||foreflucertainty.com^ -||foregroundhelpingcommissioner.com^ -||foregroundmisguideddejection.com^ -||foreignassertive.com^ -||foreignerdarted.com^ -||foreignmistakecurrent.com^ -||forensicssociety.com^ -||forenteion.com^ -||foresawmartins.com^ -||foreseegigglepartially.com^ -||forestallbladdermajestic.com^ -||forestallunconscious.com^ -||forestcremate.com^ -||forestsbotherdoubted.com^ -||forestsshampoograduate.com^ -||forewordmoneychange.com^ -||forexclub.ru^ -||forfeitsubscribe.com^ -||forflygonom.com^ -||forfrogadiertor.com^ -||forgerylimit.com^ -||forgetinnumerablelag.com^ -||forgivenesscourtesy.com^ -||forgivenessdeportdearly.com^ -||forgivenessimpact.com^ -||forgivenesspeltanalyse.com^ -||forgivenesssweptsupervision.com^ -||forgivepuzzled.com^ -||forgoodplay.com^ -||forgotingolstono.com^ -||forhavingartistic.info^ -||forklacy.com^ -||forlumineoner.com^ -||forlumineontor.com^ -||formalcabinet.com^ -||formalitydetached.com^ -||formarshtompchan.com^ -||formatinfo.top^ -||formationwallet.com^ -||formatresourcefulresolved.com^ -||formedwrapped.com^ -||formerdrearybiopsy.com^ -||formerlyerotic.com^ -||formerlyhorribly.com^ -||formerlyparsleysuccess.com^ -||formidableprovidingdisguised.com^ -||formidablestems.com^ -||formingantecedent.com^ -||formsassistanceclassy.com^ -||formsmir.com^ -||formteddy.com^ -||formulacountess.com^ -||formulamuseconnected.com^ -||forooqso.tv^ -||foroorso.com^ -||forprimeapeon.com^ -||forsawka.com^ -||forseekvalouwe.com^ -||forseisemelo.top^ -||forsphealan.com^ -||forsungprosode.com^ -||forsungstoolie.com^ -||fortaillowon.com^ -||fortaiwy.xyz^ -||fortatoneterrow.com^ -||fortcratesubsequently.com^ -||fortdaukthw.hair^ -||forthdestiny.com^ -||forthdigestive.com^ -||forthemoonh.com^ -||forthnorriscombustible.com^ -||forthright-car.pro^ -||fortitudeare.com^ -||fortorterrar.com^ -||fortpavilioncamomile.com^ -||fortpush.com^ -||fortunateconvenientlyoverdone.com^ -||fortyflattenrosebud.com^ -||fortyphlosiona.com^ -||forumboiling.com^ -||forumpatronage.com^ -||forumtendency.com^ -||forunfezanttor.com^ -||forwardkonradsincerely.com^ -||forworksyconus.com^ -||forwrdnow.com^ -||foryanmachan.com^ -||forzubatr.com^ -||fosiecajeta.com^ -||fositeth.com^ -||fossagetentie.top^ -||fossensy.net^ -||fossilascension.com^ -||fossilconstantly.com^ -||fossilreservoirincorrect.com^ -||fossorsoxgate.top^ -||fostereminent.com^ -||fotoompi.com^ -||fotsaulr.net^ -||foughtcirculation.com^ -||foughtdiamond.com^ -||fougoalops.net^ -||fouharoa.com^ -||foulageyamshik.life^ -||fouleewu.net^ -||foulfurnished.com^ -||founcedaimen.top^ -||foundationhorny.com^ -||foundedoaksouthern.com^ -||fountaingreat.com^ -||foupeethaija.com^ -||fouptebu.net^ -||fourteenthcongratulate.com^ -||fourwhenstatistics.com^ -||fouthoscular.com^ -||foutyoxyaena.website^ -||fouwiphy.net^ -||fovdvoz.com^ -||foviyii.com^ -||foxmeywkh.xyz^ -||foxpush.io^ -||foxqck.com^ -||fpalarezuxj.com^ -||fpdbccngiujp.com^ -||fpgedsewst.com^ -||fphbwyonnk.com^ -||fphjeyqs.com^ -||fpiljsxrchc.com^ -||fpmleqdb.com^ -||fpnpmcdn.net^ -||fpukxcinlf.com^ -||fpwncdgqsnq.xyz^ -||fpwpvchbwckbg.com^ -||fpybtxqfywreqhb.xyz^ -||fqanulluixeis.com^ -||fqdwrgbbkmlbh.com^ -||fqeqbpacetlols.com^ -||fqewxjjgfb.com^ -||fqfjmojnjslr.com^ -||fqhsolrj.com^ -||fqirjff.com^ -||fqjelyhrbrmyvte.com^ -||fqkwn.com^ -||fqngowvebfr.xyz^ -||fqnyvwyplel.com^ -||fqohigimw.com^ -||fqpxjydyj.com^ -||fqskuzqwpgu.com^ -||fqtfwulmcdw.com^ -||fqxjrbepn.com^ -||fqybolmt.com^ -||fqyghqeeh.com^ -||fqygyfvmz.com^ -||fqzibqtjwfzp.com^ -||fractureboyishherring.com^ -||fraer.cloud^ -||fragmenteasygoingmass.com^ -||fragmentexpertisegoods.com^ -||fragrancepneumoniatinker.com^ -||frailfederaldemeanour.com^ -||framentyder.pro^ -||frameworkdeserve.com^ -||frameworkjaw.com^ -||framingmanoeuvre.com^ -||franciatirribi.com^ -||francoistsjacqu.info^ -||franecki.net^ -||franeski.net^ -||frangh.com^ -||franklyatmosphericanniversary.com^ -||franticimpenetrableflourishing.com^ -||frap.site^ -||frapsguardo.com^ -||frarybjrbnlfd.com^ -||frarychazan.com^ -||fratchyaeolist.com^ -||fraudholdingpeas.com^ -||frayed-common.pro^ -||frayvehemently.com^ -||frcpth.xyz^ -||frdjs-2.co^ -||freakisharithmetic.com^ -||freakishdaughter.com^ -||freakishextinct.com^ -||freakishmartyr.com^ -||freakperjurylanentablelanentable.com^ -||frecklessfrecklesscommercialeighth.com^ -||fredblclronvyt.com^ -||fredmoresco.com^ -||free-datings.com^ -||free-domain.net^ -||freebiesurveys.com^ -||freeconverter.io^ -||freecounter.ovh^ -||freecounterstat.ovh^ -||freedatinghookup.com^ -||freeearthy.com^ -||freeevpn.info^ -||freefrog.site^ -||freefromads.com^ -||freefromads.pro^ -||freelancebeheld.com^ -||freelancepicketpeople.com^ -||freelancerarity.com^ -||freeskreen.com^ -||freesoftwarelive.com^ -||freespsprugs.com^ -||freestar.io^ -||freetrckr.com^ -||freewayadventureexactly.com^ -||freezeanything.com^ -||freezedispense.com^ -||freezereraserelated.com^ -||freezerpiledoperational.com^ -||freezescrackly.com^ -||freezeskaikara.com^ -||freezinghogreproach.com^ -||fregtrsatnt.com^ -||freightopen.com^ -||freiodablazer.com^ -||frenchequal.pro^ -||frencheruptionshelter.com^ -||frenchhypotheticallysubquery.com^ -||frequencyadvocateadding.com^ -||frequentagentlicense.com^ -||frequentbarrenparenting.com^ -||frequentimpatient.com^ -||frequentstocking.com^ -||fresh8.co^ -||freshannouncement.com^ -||freshendueshealth.com^ -||freshenrubpan.com^ -||freshleads.pro^ -||freshpops.net^ -||fresnobench.com^ -||fretsawlekanai.com^ -||frettedmalta.top^ -||freyaacronal.com^ -||freyatragic.shop^ -||frfetchme.com^ -||frfhhcxeqkubk.xyz^ -||frhbrkjgerikm2f8mjek09.com^ -||frhjqdgtfeb.com^ -||fri4esianewheywr90itrage.com^ -||frictionliteral.com^ -||frictionterritoryvacancy.com^ -||frictiontypicalsecure.com^ -||fridayaffectionately.com^ -||fridayarched.com^ -||fridaylazy.com^ -||fridaypatnod.com^ -||fridaywake.com^ -||fridgejakepreposition.com^ -||fridgestretched.com^ -||fridw-isa.com^ -||friedretrieve.com^ -||friendshipconcerning.com^ -||friendshipmale.com^ -||friendshipposterity.com^ -||friendsoulscombination.com^ -||frigatemirid.com^ -||frighten3452.fun^ -||frightening-crack.pro^ -||frighteningship.com^ -||frightysever.org^ -||frilly-number.pro^ -||fringecompetenceranger.com^ -||fringeforkgrade.com^ -||fringesdurocs.com^ -||fripth.xyz^ -||friskbiscuit.com^ -||friskthimbleliver.com^ -||fristminyas.com^ -||fritdugs.com^ -||frittercommittee.com^ -||fritue.com^ -||frivolous-copy.pro^ -||frizingbarnful.com^ -||frizzannoyance.com^ -||frkvlntwbyayt.com^ -||frkyeaoowaurvqt.com^ -||frockswatpelt.com^ -||frocogue.store^ -||froggytablier.top^ -||frogmenislets.uno^ -||frogrugby.com^ -||frokbsuagevsy.com^ -||frolicaugmentcreeper.com^ -||frolnk.com^ -||fromjoytohappiness.com^ -||fromoffspringcaliber.com^ -||frontcognizance.com^ -||frontendcodingtips.com^ -||fronthlpr.com^ -||fronthlpric.com^ -||frookshop-winsive.com^ -||frostplacard.com^ -||frostscanty.com^ -||frosty-criticism.pro^ -||frostyonce.com^ -||frothadditions.com^ -||frothirenews.top^ -||frothsubmarine.com^ -||frottonracist.com^ -||frownfirsthand.com^ -||frowzlynecklet.top^ -||frstlead.com^ -||frtrqkeei.com^ -||frtya.com^ -||frtyd.com^ -||frtyl.com^ -||frugalitymassiveoldest.com^ -||frugalrevenge.com^ -||frugalrushcap.com^ -||fruitfullocksmith.com^ -||fruitfulthinnersuspicion.com^ -||fruitnotability.com^ -||frulednulx.com^ -||frustrationfungus.com^ -||frustrationtrek.com^ -||frwyfaxed.com^ -||frxuqdho.com^ -||frxwattywgcnsgw.xyz^ -||fryawlauk.com^ -||fsalfrwdr.com^ -||fsccafstr.com^ -||fseotgcigbrq.com^ -||fsfwetubfgd.com^ -||fsobjvtkew.com^ -||fsotrmshy.com^ -||fsrtqexvtshh.com^ -||fsseeewzz.lol^ -||fsseeewzz.quest^ -||fstsrv1.com^ -||fstsrv2.com^ -||fstsrv3.com^ -||fstsrv4.com^ -||fstsrv5.com^ -||fstsrv8.com^ -||fstsrv9.com^ -||fsxemowhrx.com^ -||fsznjdg.com^ -||ftatpfqffc.xyz^ -||ftblltrck.com^ -||ftd.agency^ -||ftdvpextzx.com^ -||ftfssuhryrcmip.com^ -||ftgygshutxlpey.com^ -||fthkmwrkqg.com^ -||fthubeakohhiia.com^ -||fthyvbyedeypqy.com^ -||ftjcfx.com^ -||ftklr.com^ -||ftltbijc.com^ -||ftmcofsmfoebui.xyz^ -||ftmhsrrk.com^ -||ftncfjwfokiqrnr.com^ -||ftnrhdekbt.com^ -||ftqygccvexbxpb.com^ -||ftslrfl.com^ -||ftte.fun^ -||ftte.xyz^ -||fttervlvoj.com^ -||fttjyji.com^ -||ftuaxqokbxow.com^ -||ftv-publicite.fr^ -||ftvszarpfvecjf.com^ -||ftwpcn.com^ -||ftxolfex.xyz^ -||fualujqbhqyn.xyz^ -||fuchsinthough.website^ -||fuckmehd.pro^ -||fuckthat.xyz^ -||fucmoadsoako.com^ -||fucoustittup.uno^ -||fucsarhyhlci.com^ -||fudginghoners.com^ -||fudukrujoa.com^ -||fuelcathine.top^ -||fuelpearls.com^ -||fugcgfilma.com^ -||fugreefy.top^ -||fuhbimbkoz.com^ -||fuidsbzqlhud.com^ -||fujigar.com^ -||fujxujid.com^ -||fulabachu.com^ -||fulbe-whs.com^ -||fulfilleddetrimentpot.com^ -||fulgidbirls.life^ -||fulgormetump.top^ -||fulhamscaboose.website^ -||fulheaddedfea.com^ -||fullseleatic.top^ -||fulltraffic.net^ -||fullvids.online^ -||fullvids.space^ -||fullycoordinatecarbonate.com^ -||fullypoignantcave.com^ -||fulmenbosser.com^ -||fulvenebocca.com^ -||fumarinpest.com^ -||fumecarbohydrate.com^ -||fumersoctoon.com^ -||fumeuprising.com^ -||fummkxa.com^ -||funcats.info^ -||functionfreaklacerate.com^ -||functionsprecision.com^ -||fundatingquest.fun^ -||fundingexceptingarraignment.com^ -||fundsbe.com^ -||fungus.online^ -||funiooboqifnku.com^ -||funjoobpolicester.info^ -||funkiaswheep.website^ -||funklicks.com^ -||funkydeplane.com^ -||funlife.info^ -||funnelgloveaffable.com^ -||funneltourdreams.com^ -||funnysack.com^ -||funnyvacant.com^ -||funoriblithe.space^ -||funsoups.com^ -||funtoday.info^ -||fuphugccgowp.com^ -||furazanacopic.life^ -||furded.com^ -||furivaedangler.digital^ -||furlsstealbilk.com^ -||furnacecubbuoyancy.com^ -||furnacemanagerstates.com^ -||furnishedrely.com^ -||furnishedsalonherring.com^ -||furnishsmackfoolish.com^ -||furnitureapplicationberth.com^ -||furoicmargot.com^ -||furorshahdon.com^ -||furryjoseph.com^ -||fursfeeblegloria.com^ -||furstraitsbrowse.com^ -||furtheradmittedsickness.com^ -||furtherbasketballoverwhelming.com^ -||furtherencouragingvocational.com^ -||furtherestimatebereave.com^ -||furtivelybleedlyrics.com^ -||fuse-cloud.com^ -||fuseamazementavow.com^ -||fuseplatform.net^ -||fusilpiglike.com^ -||fusionads.net^ -||fusionwishful.com^ -||fuskoqvoaprjr.com^ -||fusoidactuate.com^ -||fusrv.com^ -||fussy-highway.pro^ -||fussytarbet.space^ -||futileharrystephen.com^ -||futilepreposterous.com^ -||futilereposerefreshments.com^ -||futill.com^ -||future-hawk-content.co.uk^ -||futureads.io^ -||futuredistracting.com^ -||futureus.com^ -||fuvmtqiwhaffnc.com^ -||fuvthuacps.com^ -||fuwkovroemigtb.com^ -||fuwkpghpln.com^ -||fuxcmbo.com^ -||fuyytjuopkikl.com^ -||fuzakumpaks.com^ -||fuzinghummaul.com^ -||fuzzydinnerbedtime.com^ -||fuzzyincline.com^ -||fvcdduqg.com^ -||fvckeip.com^ -||fvcwqkkqmuv.com^ -||fvebixpgtxm.com^ -||fvgxfupisy.com^ -||fvohyywkbc.com^ -||fvzhenljkw.com^ -||fwabhrptdns.com^ -||fwbntw.com^ -||fwealjdmeptu.com^ -||fweokcgamoj.com^ -||fwftmuxxeh.com^ -||fwmrm.net^ -||fwnxbcogqcjj.com^ -||fwqmwyuokcyvom.xyz^ -||fwrnmmvxsfcrcqk.com^ -||fwskotewexa.xyz^ -||fwsoviw.com^ -||fwtrck.com^ -||fwukoulnhdlukik.info^ -||fwwxanjyjlu.xyz^ -||fwyhyryyqvs.com^ -||fxdepo.com^ -||fxefriuekh.com^ -||fxgoaeplst.com^ -||fxiuuaa.com^ -||fxmnba.com^ -||fxmrelevbu.com^ -||fxrbsadtui.com^ -||fxroflypm.com^ -||fxrwmhbbxfcpb.com^ -||fxwykuxh.com^ -||fyafcyawfevr.com^ -||fybkhsfntvuyat.com^ -||fyblppngxdt.com^ -||fydczmk.com^ -||fyglovilo.pro^ -||fyhgvfmryxprn.xyz^ -||fykjhzjyjvx.com^ -||fymgkjtee.com^ -||fytaopeurb.com^ -||fyvdxqufaxkli.com^ -||fzamtef.com^ -||fzfcrqlwph.com^ -||fzipipalkri.com^ -||fzszuvb.com^ -||g-statistic.com^ -||g0-g3t-msg.com^ -||g0-g3t-msg.net^ -||g0-g3t-som3.com^ -||g0-get-msg.net^ -||g0-get-s0me.net^ -||g0gr67p.de^ -||g0wow.net^ -||g2440001011.com^ -||g2546417787.com^ -||g2921554487.com^ -||g2afse.com^ -||g33ktr4ck.com^ -||g33tr4c3r.com^ -||g5fzq2l.com^ -||g5rillh2awn8.com^ -||g6raq2ms602g.top^ -||g8bb6j5pn.com^ -||g91games.com^ -||ga-ads.com^ -||gabblecongestionhelpful.com^ -||gabblewhining.com^ -||gabsailr.com^ -||gacoufti.com^ -||gadbytyhmybnir.com^ -||gadgetnews.one^ -||gadqsrxurvtd.com^ -||gadsabs.com^ -||gadsatz.com^ -||gadskis.com^ -||gadslife.com^ -||gadslimz.com^ -||gadspms.com^ -||gadspmz.com^ -||gadssystems.com^ -||gadzwhglnxhbjs.com^ -||gaeebjednl.xyz^ -||gaegwdkirfcgp.com^ -||gaelsdaniele.website^ -||gafmajosxog.com^ -||gafnkozzuk.com^ -||gagdungeon.com^ -||gaghygienetheir.com^ -||gagxsbnbu.xyz^ -||gagxyauszaght.com^ -||gahonnlsh.com^ -||gaibakur.net^ -||gaibjhicxrkng.xyz^ -||gaietyexhalerucksack.com^ -||gaijiglo.net^ -||gaimoupy.net^ -||gaiphaud.xyz^ -||gaishaisteth.com^ -||gaisteem.net^ -||gaiterunfixed.top^ -||gaitoath.com^ -||gaizoopi.net^ -||gakairohekoa.com^ -||gakvrqdquo.com^ -||galaare.com^ -||galachr.com^ -||galairo.com^ -||galajou.com^ -||galamis.com^ -||galanasorra.com^ -||galaxydiminution.com^ -||galaxypush.com^ -||galeaeevovae.com^ -||galepush.net^ -||galereseikones.com^ -||galileesubvii.digital^ -||galiowen.com^ -||galjwnhotubfg.com^ -||galleonpiotine.com^ -||galleyssleeps.top^ -||gallicize25.fun^ -||gallonranchwhining.com^ -||gallopextensive.com^ -||gallopsalmon.com^ -||gallupcommend.com^ -||galopelikeantelope.com^ -||galotop1.com^ -||galsajoo.xyz^ -||galvanize26.fun^ -||gam3ah.com^ -||gamadsnews.com^ -||gamadspro.com^ -||gambar123.com^ -||gamblingliquidate.com^ -||gameads.io^ -||gameengagedthen.com^ -||gamersad.com^ -||gamescarousel.com^ -||gamescdnfor.com^ -||gamesims.ru^ -||gamesrevenu24.com^ -||gamesrevenue.com^ -||gamesyour.com^ -||gamez4tops.com^ -||gamgladthereis.com^ -||gamglossae.com^ -||gaminesmuletta.com^ -||gaming-adult.com^ -||gamingadlt.com^ -||gamingonline.top^ -||gammabendlet.website^ -||gammamkt.com^ -||gammaplatform.com^ -||gammradiation.space^ -||gamondcaingin.guru^ -||gamonemule.top^ -||ganchedagrapha.com^ -||gandmotivat.info^ -||gandmotivatin.info^ -||gandrad.org^ -||ganehangmen.com^ -||gangedapneal.digital^ -||gangsterpracticallymist.com^ -||gangsterstillcollective.com^ -||gangueswipes.top^ -||gangueturkery.com^ -||ganismpro.com^ -||ganizationsuc.info^ -||gannetsmechant.com^ -||gannett.gcion.com^ -||ganodusskunks.top^ -||gapcask.com^ -||gapchanging.com^ -||gapgrewarea.com^ -||gappiertransfd.top^ -||gapscult.com^ -||gaptooju.net^ -||gaqscipubhi.com^ -||gaquxe8.site^ -||garagesewe.com^ -||garbagereef.com^ -||garbanzos24.fun^ -||gardenbilliontraced.com^ -||gardeningreact.com^ -||gardeningseparatedudley.com^ -||gardoult.com^ -||gardourd.com^ -||gargantuan-menu.pro^ -||garglingcorny.com^ -||gargocmy.com^ -||garibamarmose.com^ -||garlandcheese.com^ -||garlandprotectedashtray.com^ -||garlandshark.com^ -||garlicice.store^ -||garmentfootage.com^ -||garmentsdraught.com^ -||garnishpoints.com^ -||garosesia.com^ -||garotas.info^ -||garretassociate.com^ -||garretram.com^ -||garricketiam.website^ -||garrisonparttimemount.com^ -||garthitalici.top^ -||garumkachin.com^ -||gasasphrad.com^ -||gaskinneepour.com^ -||gasolinefax.com^ -||gasolinerent.com^ -||gaspedtowelpitfall.com^ -||gassingunspicy.guru^ -||gastersliddry.com^ -||gastingitea.com^ -||gatecitizenswindy.com^ -||gateimmenselyprolific.com^ -||gaterharming.top^ -||gatetocontent.com^ -||gatetodisplaycontent.com^ -||gatetotrustednetwork.com^ -||gatewaydissolvedexemplify.com^ -||gatherjames.com^ -||gatols.com^ -||gatrmbvfm.com^ -||gaucysalamo.life^ -||gaudetehoazin.com^ -||gaudfulthrum.website^ -||gaudymercy.com^ -||gaufferlarry.com^ -||gaufoosa.xyz^ -||gaugeadroitself.com^ -||gaujagluzi.xyz^ -||gaujephi.xyz^ -||gaulshiite.life^ -||gaumishhipshot.com^ -||gaumoata.com^ -||gaunchdelimes.com^ -||gauntletjanitorjail.com^ -||gauntletslacken.com^ -||gaupsaur.xyz^ -||gaushaih.xyz^ -||gaustele.xyz^ -||gautaree.com^ -||gautauzaiw.com^ -||gauvaiho.net^ -||gauwoocoasik.com^ -||gauzedecoratedcomplimentary.com^ -||gauzeglutton.com^ -||gavnogeeygaika.com^ -||gawainshirty.com^ -||gayadpros.com^ -||gayalgenipa.digital^ -||gayuxhswva.com^ -||gazati.com^ -||gazeesoter.com^ -||gazumpers27.fun^ -||gb1aff.com^ -||gbbdkrkvn.xyz^ -||gbddeyjekkixrn.com^ -||gbiyigdsgu.com^ -||gblcdn.com^ -||gbpkmltxpcsj.xyz -||gbstobpvhhosqsr.com^ -||gbullgmqfsgf.com^ -||gbvnfbrg.com^ -||gcbtbruxslwoc.xyz^ -||gcfabtyir.com^ -||gcfynlyvab.com^ -||gcjzuzldn.com^ -||gcomfbzrsa.com^ -||gctnkqjelwnwlcx.com^ -||gcyzgld.com^ -||gdasaasnt.com^ -||gdbjurnxxhnro.com^ -||gdbtlmsihonev.xyz^ -||gdbyxgjbkgv.com^ -||gdecording.info^ -||gdecordingholo.info^ -||gdjejefdqthxmy.xyz^ -||gdkixpmakvrpm.com^ -||gdktgkjfyvd.xyz^ -||gdlxtjk.com^ -||gdmconvtrck.com^ -||gdmdigital.com^ -||gdmgsecure.com^ -||gdpgwtwby.com^ -||gdwfhelbww.com^ -||geargrope.com^ -||geasefloria.com^ -||geazjxqwbr.com^ -||gebadu.com^ -||gebiqxmcc.com^ -||gecdwmkee.com^ -||geckad.com^ -||geckibou.com^ -||geckoesdeport.top^ -||gecl.xyz^ -||geechaid.xyz^ -||geedoovu.net^ -||geegleshoaph.com^ -||geeksundigne.com^ -||geerairu.net^ -||geethaihoa.com^ -||geethaiw.xyz^ -||geethoap.com^ -||geewooheene.net^ -||gegbeiaojmfgnkw.com^ -||geiozdtpssgt.com^ -||geiybze.com^ -||gejeegho.net^ -||gejusherstertithap.info^ -||gekkocondo.top^ -||gekroome.com^ -||gelatineabstainads.com^ -||gelatinelighter.com^ -||gelescu.cloud^ -||gelhp.com^ -||gelidoctans.digital^ -||gelofrebromes.top^ -||gemfowls.com^ -||gemorul.com^ -||gempeety.com^ -||gempoussee.com^ -||gen-ref.com^ -||genaumsa.net^ -||genbalar.com^ -||genepide.com^ -||generalebad.xyz^ -||generalizebusinessman.com^ -||generallyrefinelollipop.com^ -||generateplunderstrew.com^ -||generatorgenuinelyupcoming.com^ -||genericlink.com^ -||generosityfrozecosmic.com^ -||generousclickmillennium.com^ -||genesismedia.com^ -||geneticesteemreasonable.com^ -||geneticocuby.com^ -||genfpm.com^ -||geniad.net^ -||genialsleptworldwide.com^ -||genieedmp.com^ -||genieessp.com^ -||genishury.pro^ -||geniusbanners.com^ -||geniusdexchange.com^ -||geniusonclick.com^ -||geniusunkirk.space^ -||genreobrien.digital^ -||gentlecountries.com^ -||gentlementoplessrest.com^ -||gentlynudegranny.com^ -||gentsriggish.com^ -||genuinechancellor.com^ -||genuinelybruises.com^ -||genuinesuperman.com^ -||genystopiary.com^ -||geoaddicted.net^ -||geodaljoyless.com^ -||geodator.com^ -||geodesyhoptree.com^ -||geoffreyquitimpression.com^ -||geogenyveered.com^ -||geographicaltruth.com^ -||geoidalsericin.com^ -||geoidsskift.guru^ -||geoinventory.com^ -||geometryworstaugust.com^ -||geompzr.com^ -||geonicbashara.com^ -||geordiejinglet.com^ -||geotrkclknow.com^ -||geraflows.com^ -||geratedbawled.com^ -||gereacumina.com^ -||germanize24.fun^ -||germinatecascade.com^ -||germmasonportfolio.com^ -||geruksom.net^ -||gerybeeper.guru^ -||gesanbarrat.com^ -||gessoesbeavers.uno^ -||get-browseprotection.com^ -||get-gx.net^ -||get-here-click.xyz^ -||get-me-wow. -||get-partner.life^ -||getadx.com^ -||getadzuki.com^ -||getallt1.com^ -||getalltraffic.com^ -||getarrectlive.com^ -||getbestpolojpob.org^ -||getbiggainsurvey.top^ -||getbrowbeatgroup.com^ -||getcdnpix.name^ -||getconatyclub.com^ -||getgx.net^ -||getinstant.website^ -||getjad.io^ -||getmatchedlocally.com^ -||getmetheplayers.click^ -||getmygateway.com^ -||getnee.com^ -||getnewsfirst.com^ -||getnomadtblog.com^ -||getoptad360.com^ -||getoverenergy.com^ -||getpdaiddaily.com^ -||getpopunder.com^ -||getrunbestlovemy.info^ -||getrunkhomuto.info^ -||getscriptjs.com^ -||getsharedstore.com^ -||getshowads.com^ -||getsmartyapp.com^ -||getstart3d12.monster^ -||getsthis.com^ -||getsurv2you.net^ -||getsurv2you.org^ -||getsurv4you.org^ -||getter.cfd^ -||gettine.com^ -||gettingcleaveassure.com^ -||gettingtoe.com^ -||gettjohytn.com^ -||gettraffnews.com^ -||getupwoleai.com^ -||getvideoz.click^ -||getxml.org^ -||getyourbitco.in^ -||getyoursoft.ru^ -||getyourtool.co^ -||gevmrjok.com^ -||gfbpijvtoxpit.com^ -||gfhkcfdqaongo.com^ -||gfkeivwesib.com^ -||gfkhapiuxjkspbq.xyz^ -||gfmvxeeqcrhy.com^ -||gfnfzleduflvkt.com^ -||gforanythingam.com^ -||gfprtdrgcyuxc.com^ -||gfrixpclujxjnlq.com^ -||gfsdloocn.com^ -||gfstrck.com^ -||gftasruowjnsc.xyz^ -||gftkofhnz.com^ -||gfunwoakvgwo.com^ -||gfupivnzaxi.com^ -||gfwvrltf.xyz^ -||gfzbdtwtlw.com^ -||ggeaqltgasbcysu.com^ -||ggetsurv4youu.com^ -||ggftwafd.xyz^ -||gggetsurveey.com^ -||gghmyocmyl.com^ -||ggjcswb4rln4.com^ -||ggkk.xyz^ -||gglx.me^ -||ggqppaiglthoq.com^ -||ggrawwbi.xyz^ -||ggsbjzyo.com^ -||ggsfq.com^ -||ggvhbnkfc.com^ -||ggwifobvx.com^ -||ggxcoez.com^ -||ggxyyalrj.com^ -||ggzckmlts.com^ -||ggzkgfe.com^ -||ghastlyoffer.com^ -||ghastlyrejectionrest.com^ -||ghattiwongsky.com^ -||ghavjknuitkmh.com^ -||ghbktboutfibvt.com^ -||ghentmidweek.com^ -||gheraosonger.com^ -||ghethe.com^ -||ghettoschanse.com^ -||ghfnlorkormcmr.com^ -||ghilliebottles.com^ -||ghisiva.top^ -||ghjhucekiywqrk.com^ -||ghmwlirru.com^ -||ghnvfncbleiu.xyz^ -||ghostchisel.com^ -||ghostnewz.com^ -||ghosttardy.com^ -||ghrain.com^ -||ghsheukwasana.info^ -||ghtry.amateurswild.com^ -||ghyhwiscizax.com^ -||ghyjajvriaf.com^ -||ghyxmovcyj.com^ -||giantaffiliates.com^ -||giantexit.com^ -||gianwho.com^ -||giaythethaonuhcm.com^ -||gibaivoa.com^ -||gibevay.ru^ -||giblithakur.website^ -||giboxdwwevu.com^ -||gibsonorly.life^ -||gicoxxmeostnxw.xyz^ -||gidakcalgbc.com^ -||giddinessrefusal.com^ -||giddysystemrefers.com^ -||gidmikipluoju.com^ -||gidoulie.com^ -||gienunrbt.com^ -||giftedbrevityinjured.com^ -||giftedhazelsecond.com^ -||gifttopsurvey.top^ -||gigaads.xyz^ -||gigabitadex.com^ -||gigacpmserv.com^ -||gigahertz24.fun^ -||giganticlived.com^ -||giggedguddle.com^ -||giggledgingle.com^ -||giggleostentatious.com^ -||gigjjgb.com^ -||gigmantomjohn.guru^ -||gigsmanhowls.top^ -||gihehazfdm.com^ -||gijxsthpuqdwcn.com^ -||gikefa.uno^ -||gilarditus.com^ -||gilcxqgcbebbo.xyz^ -||giliakmisdaub.com^ -||gilledwebeye.life^ -||gillnetstold.com^ -||gillpwiul.com^ -||gillsapp.com^ -||gillsisabellaunarmed.com^ -||gillstaught.com^ -||gillynn.com^ -||gilrauci.net^ -||gimavpojtqa.com^ -||gimmalscutches.com^ -||gimme-promo.com^ -||gimohhfzvmpdt.com^ -||gimpsgenips.com^ -||gimwcpketr.com^ -||ginchoirblessed.com^ -||ginfohpg.com^ -||gingercompute.com^ -||ginglmiresaw.com^ -||ginkscarnal.top^ -||ginningsteri.com^ -||ginnyclairvoyantapp.com^ -||ginnycleanedfeud.com^ -||ginnymulberryincompetent.com^ -||ginnytors.top^ -||ginnyweakeland.info^ -||ginsicih.xyz^ -||gipeucn.icu^ -||gipostart-1.co^ -||gippingrefont.com^ -||gipsiesthyrsi.com^ -||gipsouglow.com^ -||gipsyhit.com^ -||gipsytrumpet.com^ -||giqaanwmqwowemt.com^ -||giraffedestitutegigantic.com^ -||girdedmays.life^ -||girdleunfamiliartraffic.com^ -||girl-51-w.com^ -||girl7y.com^ -||girlbuffalo.com^ -||girlsflirthere.life^ -||girlsglowdate.life^ -||girlstretchingsplendid.com^ -||girlwallpaper.pro^ -||girseesoa.net^ -||gishejuy.com^ -||gistblemishparking.com^ -||gitajwl.com^ -||gitoku.com^ -||gittithmartial.com^ -||giufjcfjdv.com^ -||givaphofklu.com^ -||givedressed.com^ -||giveesqtnq.com^ -||givemysoft.ru^ -||givenconserve.com^ -||givesboranes.com^ -||givide.com^ -||giving-weird.pro^ -||givingcareer.com^ -||givingsol.com^ -||giwkclu.com^ -||gixiluros.com^ -||gjfeblixctsojx.xyz^ -||gjffrtfkhf.xyz^ -||gjhksxthokyjlm.com^ -||gjigle.com^ -||gjjvjbe.com^ -||gjkame6.com^ -||gjknyqmvrluao.com^ -||gjnzqdpzda.com^ -||gjonfartyb.com^ -||gjpcwjzzc.com^ -||gjrhqyc.com^ -||gjwluizt.com^ -||gjwos.org^ -||gjzbcvatvn.com^ -||gk79a2oup.com^ -||gkbhrj49a.com^ -||gkbvnyk.com^ -||gkcltxp.com^ -||gkdafpdmiwwd.xyz^ -||gkencyarcoc.com^ -||gkewzootqju.com^ -||gkfehrdhbm.com^ -||gkkchmjdndovu.xyz^ -||gkoutpips.com^ -||gkpfuoyapoprvln.com^ -||gkpuqpewgxjso.com^ -||gkpvuyrgbbzu.com^ -||gkrtmc.com^ -||gl-cash.com^ -||gla63a4l.de^ -||glacierglorifybeetroot.com^ -||glaciergrimly.com^ -||gladiol9us10.com^ -||gladsince.com^ -||gladthereis.org^ -||glaickoxaksy.com^ -||glaijauk.xyz^ -||glaikrolsoa.com^ -||glaingoo.xyz^ -||glaivoun.net^ -||glaiwhee.net^ -||glaixich.net^ -||glakaits.net^ -||glaksads.net^ -||glamorousmixture.com^ -||glamtina.com^ -||glancedforgave.com^ -||glancingambulance.com^ -||glandinterest.com^ -||glaringregister.com^ -||glassesoftruth.com^ -||glassmilheart.com^ -||glasssmash.site^ -||glaubuph.com^ -||glaultoa.com^ -||glaurtas.com^ -||glauvoob.com^ -||glauxoaw.xyz^ -||glaxaukr.net^ -||glazegha.com^ -||glazepalette.com^ -||glbtrk.com^ -||gldrdr.com^ -||gleagainedam.info^ -||gleamcalumnygeneralize.com^ -||gleamcoupgently.com^ -||gleaminsist.com^ -||gleampendulumtucker.com^ -||glecmaim.net^ -||gledycedule.life^ -||gleebsoa.xyz^ -||gleefulcareless.com^ -||gleeglis.net^ -||gleegloo.net^ -||gleejoad.net^ -||gleemsomto.com^ -||gleemsub.com^ -||gleeneep.com^ -||gleetchisurvey.top^ -||gleetedbunged.uno^ -||gleewhor.xyz^ -||glegreel.xyz^ -||glelroum.com^ -||gleneditor.com^ -||glenmexican.com^ -||glenprejudice.com^ -||glenseized.com^ -||glersakr.com^ -||glersooy.net^ -||glerteeb.com^ -||glestoab.com^ -||glevoloo.com^ -||gleydegulled.com^ -||glibsols.net^ -||glidelamppost.com^ -||gliderpured.com^ -||gliffyfreaked.com^ -||gligheew.xyz^ -||glimpsedrastic.com^ -||glimpsemankind.com^ -||glimtaul.xyz^ -||glimtors.net^ -||glirsoss.com^ -||glisteningproject.pro^ -||glitteringinextricabledemise.com^ -||glitteringinsertsupervise.com^ -||glitteringobsessionchanges.com^ -||glitteringstress.pro^ -||glixaing.com^ -||glizauvo.net^ -||glleadflxvn.com^ -||gllgqjxog.com^ -||glo-glo-oom.com^ -||gloacmug.net^ -||gloacmug.xyz^ -||gloaftil.com^ -||gloagaus.xyz^ -||gloaghouph.com^ -||gloalrie.com^ -||gloansad.com^ -||gloaphoo.net^ -||gloavets.xyz^ -||globaladblocker.com^ -||globaladmedia.com^ -||globaladmedia.net^ -||globaladsales.com^ -||globaladv.net^ -||globalinteractive.com^ -||globaloffers.link^ -||globalsuccessclub.com^ -||globaltakeoff.net^ -||globaltraffico.com^ -||globeofnews.com^ -||globeshyso.com^ -||globwo.online^ -||globxaxqp.com^ -||glochatuji.com^ -||glochisprp.com^ -||glocmauy.xyz^ -||glodsaccate.com^ -||glogoowo.net^ -||glogopse.net^ -||glokta.info^ -||gloltaiz.xyz^ -||glomocon.xyz^ -||glomtipagrou.xyz^ -||glonsophe.com^ -||gloodain.net^ -||gloodsie.com^ -||gloogeed.xyz^ -||gloognoogrix.com^ -||gloogruk.com^ -||gloolrey.com^ -||glooltoora.net^ -||gloomfabricgravy.com^ -||gloomilybench.com^ -||gloomilychristian.com^ -||gloomilysuffocate.com^ -||gloomseb.net^ -||gloonoorsygamer.com^ -||gloonseetaih.com^ -||gloophoa.net^ -||gloorsie.com^ -||glootang.net^ -||gloovids.com^ -||gloppyveers.top^ -||gloriacheeseattacks.com^ -||glorialoft.com^ -||gloriarefreshsuspected.com^ -||glorifyfactor.com^ -||glorifyraytreasurer.com^ -||glorifytravelling.com^ -||gloriousboileldest.com^ -||gloriousmemory.pro^ -||glorsugn.net^ -||glouckeexoo.net^ -||glouftarussa.xyz^ -||gloufteglouw.com^ -||gloumsee.net^ -||gloumsie.net^ -||glounugeepse.xyz^ -||glouseer.net^ -||gloussowu.xyz^ -||gloustoa.net^ -||gloutanacard.com^ -||gloutchi.com^ -||glouxaih.net^ -||glouzokrache.com^ -||gloveroadmap.com^ -||glovesusage.com^ -||glovet.xyz^ -||glowdittay.uno^ -||glowdot.com^ -||glowedhyalins.com^ -||glowingnews.com^ -||gloxeept.com^ -||gloytrkb.com^ -||glozesmimer.top^ -||glpeaoauwevlns.com^ -||glquynodiflhw.com^ -||glsfreeads.com^ -||glssp.net^ -||gltjtkqoxhbgvlx.com^ -||glueluthern.digital^ -||gluenasal.com^ -||glugherg.net^ -||glugreez.com^ -||glukropi.com^ -||glumdrawer.com^ -||glumtitu.net^ -||glungakra.com^ -||glurdoat.com^ -||glursihi.net^ -||gluteinavarch.com^ -||glutenmuttsensuous.com^ -||gluttonstayaccomplishment.com^ -||gluttonybrand.com^ -||gluttonybuzzingtroubled.com^ -||gluttonydressed.com^ -||gluwhoas.com^ -||gluxouvauque.com^ -||gluxouvauure.com^ -||glvhvesvnp.com^ -||glwcxdq.com^ -||glxrubskce.com^ -||glxtest.site^ -||glycylsrapped.com^ -||glyphsmahajan.com^ -||gmads.net^ -||gmawlljasi.com^ -||gmbopxcfbwg.com^ -||gmcdxivnqegrnl.com^ -||gmcoanceqoymws.com^ -||gme-trking.com^ -||gmelinalegua.top^ -||gmftmeqdlbobq.com^ -||gmgllod.com^ -||gmihupgkozf.com^ -||gmijkajzor.com^ -||gmiqicw.com^ -||gmixiwowford.com^ -||gmkflsdaa.com^ -||gmknz.com^ -||gml-grp.com^ -||gmlebdifvxzzl.com^ -||gmltiiu.com^ -||gmmcerkkja.com^ -||gmnagxbisjn.com^ -||gmuinujsn.com^ -||gmuskkvfophohqn.xyz^ -||gmuuiqcfcb.com^ -||gmxvmvptfm.com^ -||gmyze.com^ -||gmzdaily.com^ -||gnashedmaypops.digital^ -||gnashesfanfare.com^ -||gnathicrugal.top^ -||gnatterjingall.com^ -||gnditiklas.com^ -||gndkcpwowxnc.com^ -||gndyowk.com^ -||gnemxcfermkpp.com^ -||gnfavfqifukyyl.com^ -||gngsrgaza.com^ -||gngtvwjo.com^ -||gnjlnvlqjmdedul.com^ -||gnjxesyfensbh.com^ -||gnkgvjxunmwc.com^ -||gnkljnfbd.com^ -||gnksplbu.com^ -||gnqtageoyy.com^ -||gnssivagwelwspe.xyz^ -||gntsrybdc.com^ -||gnuppbsxa.xyz^ -||gnvpmftcgp.com^ -||go-cpa.click^ -||go-g3t-msg.com^ -||go-g3t-push.net^ -||go-g3t-s0me.com^ -||go-g3t-s0me.net^ -||go-g3t-som3.com^ -||go-rillatrack.com^ -||go-srv.com^ -||go.syndcloud.com^ -||go2.global^ -||go2affise.com^ -||go2app.org^ -||go2jump.org^ -||go2media.org^ -||go2offer-1.com^ -||go2oh.net^ -||go2rph.com^ -||go2speed.org^ -||go6shde9nj2itle.com^ -||goaboomy.com^ -||goaciptu.net^ -||goads.pro^ -||goadx.com^ -||goaffmy.com^ -||goahoubesho.com^ -||goajuzey.com^ -||goalebim.com^ -||goaleedeary.com^ -||goalfirework.com^ -||goaloozy.xyz^ -||goalperusevicinity.com^ -||goaodaj.com^ -||goaserv.com^ -||goasrv.com^ -||goatsnulls.com^ -||goavoafu.com^ -||gobacktothefuture.biz^ -||gobanspagodas.com^ -||gobetweencomment.com^ -||gobetweengroan.com^ -||gobetweensmartlyattic.com^ -||gobicyice.com^ -||gobitta.info^ -||gobletclosed.com^ -||goblocker.xyz^ -||gobmodfoe.com^ -||gobreadthpopcorn.com^ -||gocolow.com^ -||gocomparisongarrison.com^ -||godacepic.com^ -||goddesslevityark.com^ -||godforsakensubordinatewiped.com^ -||godlessabberant.com^ -||godmotherelectricity.com^ -||godpvqnszo.com^ -||godroonrefrig.com^ -||godshiptubing.top^ -||godspeaks.net^ -||godwitescrol.com^ -||goelbotony.com^ -||goelismidryl.com^ -||goesdeedinsensitive.com^ -||goesintakehaunt.com^ -||goeticviola.com^ -||gofecuhxltcqj.xyz^ -||gofenews.com^ -||gogglebox26.fun^ -||gogglemessenger.com^ -||gogglerespite.com^ -||goghen.com^ -||gogord.com^ -||gogucbuojg.com^ -||gohere.pl^ -||gohillgo.com^ -||gohupsou.com^ -||gohznbe.com^ -||goinformer.com^ -||goingbicyclepolitically.com^ -||goingsbluffed.top^ -||goingtoothachemagician.com^ -||goksuxauks.com^ -||golbxjhofipyv.com^ -||gold-line.click^ -||gold2762.com^ -||goldcaster.xyz^ -||golden-gateway.com^ -||goldensmith.top^ -||goldfishsewbruise.com^ -||goldforeyesh.org^ -||goldm9.com^ -||golfchapah.space^ -||golfmidwife.top^ -||gollarpulsus.com^ -||golochmenacer.com^ -||goloshyacal.space^ -||golpnkgkndw.com^ -||golsaiksi.net^ -||gomain.pro^ -||gomain2.pro^ -||gomastabrat.com^ -||gombotrubu.com^ -||gomnlt.com^ -||gonairoomsoo.xyz^ -||gondwrists.life^ -||goneawaytogy.info^ -||goneryacked.top^ -||gonews2.com^ -||gonzalodaemon.top^ -||gooblesdd.com^ -||good-ads-online.com^ -||goodadvert.ru^ -||goodappforyou.com^ -||goodbusinesspark.com^ -||goodgamesmanship.com^ -||goodnesshumiliationtransform.com^ -||goodnesslocusemphasize.com^ -||goodnightbarterleech.com^ -||goodnightrunaway.com^ -||goods2you.net^ -||goodsscoop.com^ -||goodstriangle.com^ -||goodweet.xyz^ -||goodyhitherto.com^ -||googleapi.club^ -||googleseo.life^ -||googletagservices.com^ -||goohimom.net^ -||goomaphy.com^ -||gooods4you.com^ -||goosebomb.com^ -||goosimes.com^ -||goostist.com^ -||goourl.me^ -||goozabooz.com^ -||gophykopta.com^ -||goplayhere.com^ -||goqvdckzbtej.com^ -||goraccodisobey.com^ -||goraps.com^ -||gordiustouse.website^ -||goredi.com^ -||goreoid.com^ -||gorgeousirreparable.com^ -||gorgeousremoveplead.com^ -||gorgestartermembership.com^ -||gorgetmobiles.com^ -||gorgetooth.com^ -||gorilladescendbounds.com^ -||gorillasneer.com^ -||gorillatraffic.xyz^ -||gorillatrk.com^ -||gorillatrking.com^ -||goseyfpmyfhmhdd.com^ -||goshbiopsy.com^ -||gositego.live^ -||gosoftwarenow.com^ -||gospelsaneared.top^ -||gossipcase.com^ -||gossipfinestanalogy.com^ -||gossipinvest.com^ -||gossipprotectioncredentials.com^ -||gossipsize.com^ -||gossipylard.com^ -||gostoamt.com^ -||gosvroqqftetwiq.com^ -||got-to-be.com^ -||got-to-be.net^ -||goteat.xyz^ -||gotherresethat.com^ -||gotherresethat.info^ -||gotibetho.pro^ -||gotjobbs.com^ -||gotohouse1.club^ -||gotrackier.com^ -||goucejugra.com^ -||goufldsbktds.com^ -||gougersorrier.top^ -||gouheethsurvey.space^ -||goulbap287evenost.com^ -||gourgoldpieceso.com^ -||gousauhu.xyz^ -||gousouse.com^ -||goutee.top^ -||goutylumpier.top^ -||govbusi.info^ -||governessmagnituderecoil.com^ -||governessstrengthen.com^ -||governmentwithdraw.com^ -||goverua.com^ -||govyygegtgofm.xyz^ -||gowgycwrfbukst.com^ -||gownletcarny.top^ -||gownletinfamy.com^ -||gowpengagster.com^ -||gowspow.com^ -||gpcrn.com^ -||gpfaquowxnaum.xyz^ -||gpiyzwt.com^ -||gplgqqg.com^ -||gporkecpyttu.com^ -||gppsusbb.com^ -||gpsecureads.com^ -||gptkjrseu.com^ -||gpylmwtjiy.com^ -||gpynepb.com^ -||gqaecrxbj.com^ -||gqagmovxyk.com^ -||gqalqi656.com^ -||gqcmqihonrx.com^ -||gqdvbkmnkox.com^ -||gqfuf.com^ -||gqhrflhprg.com^ -||gqilaywrqy.com^ -||gqskcsljniadk.com^ -||gqtnjdflx.com^ -||gqubkbuinx.com^ -||gqusbheifyoqubu.com^ -||gr3hjjj.pics^ -||grabhastened.com^ -||graboverhead.com^ -||gracedschelly.com^ -||gracelessaffected.com^ -||graceofnoon.com^ -||gracesmallerland.com^ -||gradecastlecanadian.com^ -||gradecomposuresanctify.com^ -||graduallyassist.com^ -||gradualmadness.com^ -||graduatedgroan.com^ -||graduatedspaghettiauthorize.com^ -||graduatewonderentreaty.com^ -||grafzen.com^ -||gragaiwhebo.com^ -||gragleek.com^ -||grahamsbandbox.com^ -||graibsah.xyz^ -||grailtie.xyz^ -||grainlyricalamend.com^ -||grainshen.com^ -||grainsprogenymonarchy.com^ -||grainsslaughter.com^ -||grairsoa.com^ -||grairtoorgey.com^ -||graithos.net^ -||graitsie.com^ -||graivaik.com^ -||graixomo.net^ -||graizoah.com^ -||graizout.net^ -||grajag.com^ -||grajoazy.com^ -||gralneurooly.com^ -||gramasheludes.com^ -||grammarselfish.com^ -||gramotherwise.com^ -||granaryvernonunworthy.com^ -||granatelocknut.top^ -||grandchildpuzzled.com^ -||grandclemencydirt.com^ -||granddadfindsponderous.com^ -||granddaughterrepresentationintroduce.com^ -||grandeursway.com^ -||grandezza31.fun^ -||grandfathercancelling.com^ -||grandmotherfoetussadly.com^ -||grandnerve.pro^ -||grandocasino.com^ -||grandpagrandmotherhumility.com^ -||grandpashortestmislead.com^ -||grandsupple.com^ -||grandwatchesnaive.com^ -||granestichs.top^ -||grangilo.net^ -||grannyaudiblypriceless.com^ -||grannyblowdos.com^ -||grannysteer.com^ -||grannytelevision.com^ -||grantatomic.com^ -||grantedorphan.com^ -||grantedpigsunborn.com^ -||grantinsanemerriment.com^ -||grapefruitprecipitationfolded.com^ -||graphicskiddingdesire.com^ -||graphnitriot.com^ -||grapiercaproyl.com^ -||grappamacram.com^ -||grapsaidsee.net^ -||grapseex.com^ -||grapselu.com^ -||grartoag.xyz^ -||graspfungoes.com^ -||grasutie.net^ -||grataeraghu.digital^ -||gratchit.com^ -||graterpatent.com^ -||gratertwentieth.com^ -||gratificationdesperate.com^ -||gratificationopenlyseeds.com^ -||gratifiedfemalesfunky.com^ -||gratifiedmatrix.com^ -||gratifiedsacrificetransformation.com^ -||gratifiedshoot.com^ -||gratitudeobservestayed.com^ -||gratituderefused.com^ -||grauglak.com^ -||grauhoat.xyz^ -||graukaigh.com^ -||graungig.xyz^ -||grauroocm.com^ -||grauwaiw.com^ -||grauxouzair.com^ -||grave-orange.pro^ -||gravecheckbook.com^ -||graveshakyscoot.com^ -||graveuniversalapologies.com^ -||gravityharryexperienced.com^ -||gravyponder.com^ -||grawhoonrdr.com^ -||grayishkabard.uno^ -||graywithingrope.com^ -||greaserenderelk.com^ -||great-spring.pro^ -||greatappland.com^ -||greataseset.org^ -||greatbonushere.top^ -||greatcpm.com^ -||greatdexchange.com^ -||greatedo.com^ -||greatlifebargains2024.com^ -||greatlyclip.com^ -||greatmidship.com^ -||greatnessmuffled.com^ -||greatvpnoffers.com^ -||grecheer.com^ -||grecmaru.com^ -||greebomtie.com^ -||greececountryfurious.com^ -||greecewizards.com^ -||greedcocoatouchy.com^ -||greedrum.net^ -||greeftougivy.com^ -||greekbelievablesplit.com^ -||greekmankind.com^ -||greekomythpo.com^ -||greekroo.xyz^ -||greekunbornlouder.com^ -||greemeek.net^ -||green-red.com^ -||green-resultsbid.com^ -||green-search-engine.com^ -||green4762.com^ -||greenads.org^ -||greenfox.ink^ -||greenlinknow.com^ -||greenpaperlist.com^ -||greenplasticdua.com^ -||greenrecru.info^ -||greensfallingperceive.com^ -||greeter.me^ -||greeterracked.com^ -||greetpanda.org^ -||greewaih.xyz^ -||greewepi.net^ -||greezoob.net^ -||grefutiwhe.com^ -||gregauunaided.com^ -||grehtrsan.com^ -||greithlinener.space^ -||grelrairg.com^ -||greltoat.xyz^ -||gremsaup.net^ -||grenkolgav.com^ -||grepeiros.com^ -||greptump.com^ -||grerdoop.net^ -||greroaso.com^ -||grersomp.xyz^ -||greshipsah.com^ -||gretaith.com^ -||gretnsassn.com^ -||greworganizer.com^ -||grewquartersupporting.com^ -||greyersuppl.guru^ -||greystripe.com^ -||grfpr.com^ -||gribblefessing.com^ -||gribsastiw.com^ -||griddedwarling.top^ -||gridder.co^ -||gridrelay27.co^ -||griecemae.top^ -||grievedclaimed.com^ -||grievethereafter.com^ -||griffintardant.guru^ -||grigrees.xyz^ -||grigsreshown.top^ -||griksoud.net^ -||grillcheekunfinished.com^ -||grilledcolmars.top^ -||grimacecalumny.com^ -||grimdeplorable.com^ -||grimsecretary.com^ -||grimytax.pro^ -||grinbettyreserve.com^ -||grincircus.com^ -||griotsspeos.com^ -||gripehealth.com^ -||grippertureen.space^ -||gripping-bread.com^ -||gripspigyard.com^ -||grirault.net^ -||gristleupanaya.com^ -||gritaware.com^ -||grixaghe.xyz^ -||grkhhdxsimfif.com^ -||grkuikqvpmqnla.com^ -||grmtas.com^ -||groabopith.xyz^ -||groacoaz.com^ -||groagnoaque.com^ -||groameeb.com^ -||groapeeque.com^ -||grobido.info^ -||grocerycookerycontract.com^ -||grocerysurveyingentrails.com^ -||grocmaish.com^ -||groglezapto.pro^ -||groguzoo.net^ -||groininsightclaimed.com^ -||gronsoad.com^ -||grooksom.com^ -||groomoub.com^ -||groomtoo.com^ -||groomysirups.top^ -||groorsoa.net^ -||grooseem.net^ -||groosoum.xyz^ -||grootcho.com^ -||grooveoperate.com^ -||grooverend.com^ -||gropecemetery.com^ -||gropefore.com^ -||grortalt.xyz^ -||grossedoicks.com^ -||groudrup.xyz^ -||grouisamrehr.com^ -||groujeemoang.xyz^ -||groumaux.net^ -||groumtie.com^ -||groumtou.net^ -||groundlesscrown.com^ -||groundlesstightsitself.com^ -||grounolrou.com^ -||groupcohabitphoto.com^ -||groupian.io^ -||groupsrider.com^ -||groupyammer.top^ -||grourded.net^ -||groutsfaham.top^ -||grova.buzz^ -||grova.xyz^ -||growebads.com^ -||growingcastselling.com^ -||growledavenuejill.com^ -||growlingopportunity.com^ -||grown-inpp-code.com^ -||grownbake.pro^ -||growngame.life^ -||grownupsufferinginward.com^ -||growthbuddy.app^ -||grqjpukbyvypq.xyz^ -||grrngjxqno.com^ -||grsm.io^ -||grt02.com^ -||grtaanmdu.com^ -||grtexch.com^ -||grtyj.com^ -||grubhenriettaannihilation.com^ -||grubpremonitionultimately.com^ -||grubsnuchale.com^ -||grucmost.xyz^ -||grudgewallet.com^ -||grudreeb.com^ -||grufeegny.xyz^ -||gruffsleighrebellion.com^ -||grumbletonight.com^ -||grumpybreakingsalad.com^ -||grumpyslayerbarton.com^ -||grumrionzgu.com^ -||grunikpazp.com^ -||grunoaph.net^ -||gruntremoved.com^ -||gruponn.com^ -||grurawho.com^ -||grushoungy.com^ -||grussreenter.com^ -||gruvirxita.com^ -||gruwalom.xyz^ -||gruwrebutnar.com^ -||grwp3.com^ -||grxiqsqota.xyz^ -||grygrothapi.pro^ -||gsclvurjec.xyz^ -||gscontxt.net^ -||gseyldgnl.com^ -||gsjln04hd.com^ -||gsnb048lj.com^ -||gsnqhdo.com^ -||gsurihy.com^ -||gswinnodf.com^ -||gt5tiybvn.com^ -||gtbdhr.com^ -||gtgkbkbwpqyhvq.com^ -||gtitcah.com^ -||gtkimwuyvqfb.com^ -||gtoonfd.com^ -||gtosmdjgn.xyz^ -||gtrmshgbw.com^ -||gtsads.com^ -||gtudkfe.com^ -||gtwimkngw.com^ -||gtwoedjmjsevm.xyz^ -||gtxlouky.xyz^ -||gtxyaiihuwkdbk.com^ -||guadam.com^ -||guangzhuiyuan.com^ -||guanscleeks.com^ -||guaranteefume.com^ -||guardeddummysoothing.com^ -||guardedrook.cc^ -||guardedtabletsgates.com^ -||guardeebepaste.top^ -||guardiandigitalcomparison.co.uk^ -||guardianinvadecrept.com^ -||guardsslate.com^ -||guasarestant.com^ -||guayababemotto.top^ -||guchihyfa.pro^ -||guddledarride.com^ -||gudouzov.com^ -||guemalgist.com^ -||guerrilla-links.com^ -||guessstartlethrive.com^ -||guesswhatnews.com^ -||guestblackmail.com^ -||guesteaten.com^ -||guestsfingertipchristian.com^ -||guestssum.com^ -||guftaujug.com^ -||gugletkvarner.top^ -||guidonsfeeing.com^ -||guigebichir.website^ -||guiletoad.com^ -||guiltjadechances.com^ -||guilty-bear.com^ -||guineaacrewayfarer.com^ -||guipureenterer.top^ -||guitarfelicityraw.com^ -||gujakqludcuk.com^ -||gujojbavdoh.com^ -||gulfimply.com^ -||gullible-hope.com^ -||gullible-lawyer.pro^ -||gullibleanimated.com^ -||gulsyangtao.guru^ -||gumbolersgthb.com^ -||gumcongest.com^ -||gumlahdeprint.com^ -||gummageshrieks.top^ -||gummierhedera.life^ -||gundeckclewing.top^ -||gungpurre.com^ -||gunksjalapic.com^ -||gunreset.com^ -||gunsaidi.xyz^ -||gunwaleneedsly.com^ -||gunzblazingpromo.com^ -||gurgledgymnure.space^ -||gurimix.com^ -||gurjaraganger.com^ -||gurneysretene.top^ -||guro2.com^ -||gurynyce.com^ -||gushfaculty.com^ -||gushswarthy.com^ -||gusleelurg.top^ -||gussame.com^ -||gussbkpr.website^ -||gussiessmutchy.com^ -||gussimsosurvey.space^ -||gustdertrum.com^ -||gutazngipaf.com^ -||gutchauzaugh.com^ -||gutobtdagruw.com^ -||gutrnesak.com^ -||gutsnights.com^ -||gutterscaldlandslide.com^ -||gutteryrhachi.com^ -||guttulatruancy.com^ -||gutwn.info^ -||guvsxiex.xyz^ -||guvwolr.com^ -||guwait.com^ -||guxdjfuuhey.xyz^ -||guxedsuba.com^ -||guybaafvpv.com^ -||guywireincorp.com^ -||gvdetxlwcm.com^ -||gvfkzyq.com^ -||gvhderjd.com^ -||gvjpwiqmwmvvjsb.com^ -||gvkmifcvr.com^ -||gvkqpogjqvni.com^ -||gvkzvgm.com^ -||gvmojhugkiud.com^ -||gvpged.com^ -||gvqlswog.com^ -||gvt2.com^ -||gvwdwrtzrs.com^ -||gvzsrqp.com^ -||gwallet.com^ -||gwbgqrxlelrjsi.com^ -||gwehelqusbpdah.com^ -||gwemwyqugg.com^ -||gwfcpecnwwtgn.xyz^ -||gwggiroo.com^ -||gwhllcipky.com^ -||gwjdaazribz.com^ -||gwjfwrzoevwt.com^ -||gwogbic.com^ -||gwpcomqsyflewv.com^ -||gwrgoaunieybo.com^ -||gwtixda.com^ -||gwurinylw.com^ -||gwvjcrtucd.com^ -||gx101.com^ -||gxcqhawgc.com^ -||gxcvxdeda.com^ -||gxdzfyg.com^ -||gxfuwkgsp.com^ -||gxgu9gktreso.com^ -||gxikmksjuz.com^ -||gxmlkgraj.com^ -||gxnedqaxm.com^ -||gxordgtvjr.com^ -||gxoymwfwex.com^ -||gxpiypxnjwtclv.com^ -||gxpvnveyqowm.com^ -||gxqjvuhsk.com^ -||gxtmsmni.com^ -||gxuhoeynwghjd.com^ -||gxvaunase.com^ -||gxvpfppyktgaeo.com^ -||gxzabkagrlb.com^ -||gyeapology.top^ -||gyenhpl.com^ -||gyfumobo.com^ -||gygibjzjtq.com^ -||gyhfmvfhfgqg.com^ -||gymdeserves.com^ -||gymellionize.com^ -||gymgipsy.com^ -||gymnasiumfilmgale.com^ -||gypsiedjilt.com^ -||gypufahuyhov.xyz^ -||gyudlffoisng.com^ -||gyxkmpf.com^ -||gzcxtuxgqjrhz.com^ -||gzglmoczfzf.com^ -||gzifhovadhf.com^ -||gzigudxidz.com^ -||gzkkbuvz.com^ -||gzpphnbvqj.com^ -||gzqihxnfhq.com^ -||gzqsxbgnggnho.com^ -||gzwehmnm.com^ -||h0w-t0-watch.net^ -||h12-media.com^ -||h15maincat.com^ -||h2aek6rv0ard.com^ -||h52ek3i.de^ -||h5lwvwj.top^ -||h5r2dzdwqk.com^ -||h74v6kerf.com^ -||h8brccv4zf5h.com^ -||h98s.com^ -||habeglee.net^ -||habhudvimli.com^ -||habitualexecute.com^ -||habitualivoryashes.com^ -||hablvsmnr.com^ -||habovethecit.info^ -||habovethecity.info^ -||habovethecityon.info^ -||habutaeunroost.com^ -||hadajvqpha.com^ -||hadfrizzprofitable.com^ -||hadmiredinde.info^ -||hadsans.com^ -||hadsanz.com^ -||hadseaside.com^ -||hadsecz.com^ -||hadsimz.com^ -||hadskiz.com^ -||hadsokz.com^ -||hadtwobr.info^ -||haffnetworkmm.com^ -||hafisfunnier.guru^ -||hagboatdismast.com^ -||hagdenlupulic.top^ -||hagdispleased.com^ -||haggeisgael.com^ -||haghalra.com^ -||haglance.com^ -||hagnaudsate.com^ -||hagnutrient.com^ -||hagppxgjypqa.com^ -||hagweedtoytown.com^ -||haiariunsely.top^ -||haihaime.net^ -||haikcarlage.com^ -||haiksbogier.top^ -||hailstonenerve.com^ -||hailstoneprodigious.com^ -||hailstonescramblegardening.com^ -||hailtighterwonderfully.com^ -||haimagla.com^ -||haimimie.xyz^ -||hainoruz.com^ -||haircutmercifulbamboo.com^ -||hairdresserbayonet.com^ -||hairletbollox.shop^ -||hairoak.com^ -||hairpinoffer.com^ -||hairpintacticalartsy.com^ -||hairy-level.pro^ -||hairyapplication.com^ -||haithoaz.net^ -||haitingshospi.info^ -||hajoopteg.com^ -||haksaigho.com^ -||halachadivvers.com^ -||half-concert.pro^ -||halflyfiscal.com^ -||halfpriceozarks.com^ -||halftimeaircraftsidewalk.com^ -||halftimestarring.com^ -||halfwayscratchcoupon.com^ -||halileo.com^ -||halleyperson.pro^ -||hallucinatebotany.com^ -||hallucinatecompute.com^ -||hallucinatediploma.com^ -||hallucinatepromise.com^ -||halogennetwork.com^ -||halteddropped.com^ -||halthomosexual.com^ -||haltough.net^ -||halveimpendinggig.com^ -||hamburgerintakedrugged.com^ -||hamestoyman.website^ -||hamfatbuxeous.guru^ -||haminu.space^ -||hamletuponcontribute.com^ -||hammamfehmic.com^ -||hammereternal.com^ -||hammerhewer.top^ -||hammockpublisherillumination.com^ -||hamoumpa.xyz^ -||hampersolarwings.com^ -||hamperstirringoats.com^ -||hamsterginger.com^ -||hamulustueiron.com^ -||handbagadequate.com^ -||handbaggather.com^ -||handboyfriendomnipotent.com^ -||handcuffglare.com^ -||handfuljoggingpatent.com^ -||handfulnobodytextbook.com^ -||handfulsobcollections.com^ -||handgripvegetationhols.com^ -||handkerchiefpeeks.com^ -||handkerchiefpersonnel.com^ -||handkerchiefstapleconsole.com^ -||handlegoatsperiod.com^ -||handlesgrugrus.top^ -||handlingattic.com^ -||handlingblare.com^ -||handshakesexyconquer.com^ -||handsomebend.pro^ -||handsomepinchingconsultation.com^ -||handtub.com^ -||handwritingdigestion.com^ -||handwritingdoorbellglum.com^ -||handwritingnomad.com^ -||handy-tab.com^ -||handymanprivately.com^ -||handymansurrender.com^ -||hangdogferfel.com^ -||hangfly.net^ -||hangiesues.top^ -||hangnailamplify.com^ -||hangnailhasten.com^ -||hangoveratomeventually.com^ -||hankrivuletperjury.com^ -||hannahfireballperceive.com^ -||hanqpwl.com^ -||hansetwangy.com^ -||hantlesberith.com^ -||hapbtualkfi.com^ -||hapdkvyhchw.com^ -||haphazardbleeding.com^ -||haplic.com^ -||happenemerged.com^ -||happeningdeliverancenorth.com^ -||happeningflutter.com^ -||happeningurinepomposity.com^ -||happy-davinci-53144f.netlify.com^ -||happymuttere.org^ -||happypavilion.com^ -||haptenspopean.com^ -||hapticswasher.com^ -||harassinganticipation.com^ -||harassingindustrioushearing.com^ -||harassmentgrowl.com^ -||harayun.com^ -||hardabbuy.live^ -||hardaque.xyz^ -||hardboileddearlyaccomplish.com^ -||harderdaubpetty.com^ -||hardwaretakeoutintimidate.com^ -||hardynarrow.com^ -||hardynylon.com^ -||hareeditoriallinked.com^ -||harelipwelshes.digital^ -||haresmodus.com^ -||harhtwb.com^ -||haribdathesea.com^ -||hariblockairline.com^ -||hariheadacheasperity.com^ -||harkingskulp.digital^ -||harlequinsleepyfrog.xyz^ -||harmalpilotry.com^ -||harmfulresolution.com^ -||harmfulsong.pro^ -||harmless-sample.pro^ -||harmlessepic.com^ -||harmlesstacticalhonorable.com^ -||harmoniousfamiliar.pro^ -||harmonypix.com^ -||harmvaluesrestriction.com^ -||harnessabreastpilotage.com^ -||haronfitanheck.com^ -||harpinhaster.top^ -||harpinoperose.com^ -||harrenmedianetwork.com^ -||harretrips.digital^ -||harrydough.com^ -||harrymercurydynasty.com^ -||harsh-hello.pro^ -||harshlygiraffediscover.com^ -||harshplant.com^ -||harshtoreexpression.com^ -||hartattenuate.com^ -||hartbasketenviable.com^ -||hartlyengland.com^ -||harvardunions.com^ -||harvesttheory.com^ -||harzpzbsr.com^ -||hasdrs.com^ -||hash-hash-tag.com^ -||hashbitewarfare.com^ -||hashpreside.com^ -||hasricewaterh.info^ -||hastecoat.com^ -||hasteshearses.com^ -||hastyarmistice.com^ -||hatablepuleyn.com^ -||hatagashira.com^ -||hatapybbwxkbs.com^ -||hatbenchmajestic.com^ -||hatchetrenaissance.com^ -||hatchetsummit.com^ -||hatchord.com^ -||hatedgeographical.com^ -||hatedhazeflutter.com^ -||hatefulbane.com^ -||hatefulgirlfriend.com^ -||hats-47b.com^ -||hatsamevill.org^ -||hatteshtetel.top^ -||hatwasallo.com^ -||hatwasallokmv.info^ -||hatzhq.net^ -||hauboisphenols.com^ -||hauchiwu.com^ -||hauganes.net^ -||haughtysafety.com^ -||haukrgukep.org^ -||hauledforewordsentimental.com^ -||hauledresurrectiongosh.com^ -||haulme.info^ -||haulmyiodins.top^ -||haulstugging.com^ -||haunchbelongings.com^ -||haunigre.net^ -||haunowho.net^ -||haunteddishwatermortal.com^ -||hauntingfannyblades.com^ -||hauntingwantingoblige.com^ -||hauphoak.xyz^ -||hauphuchaum.com^ -||haupsoag.xyz^ -||hausoumu.net^ -||haustoam.com^ -||hauteinakebia.top^ -||hauthoun.xyz^ -||hautoust.com^ -||hauufhgezl.com^ -||havagedhyana.com^ -||havamedia.net^ -||haveflat.com^ -||havegrosho.com^ -||havenadverb.com^ -||havenalcoholantiquity.com^ -||havencharacteristic.com^ -||havenwrite.com^ -||haveproceeding.com^ -||haveralupbeat.website^ -||havils.com^ -||havingsreward.com^ -||haviorshydnoid.com^ -||havoccasualtypersistent.com^ -||havocsbilaan.com^ -||hawhuxee.com^ -||hawkyeye5ssnd.com^ -||hawsquallgenerate.com^ -||hawsuffer.com^ -||haxbyq.com^ -||haymishlytta.com^ -||haymowsrakily.com^ -||hayyad.com^ -||hazairgo.net^ -||hazansent.com^ -||hazelbeseech.com^ -||hazelhannahfruit.com^ -||hazelhideous.com^ -||hazelnutshighs.com^ -||hazelocomotive.com^ -||hazicu.hothomefuck.com^ -||hazoopso.net^ -||hazymarvellous.com^ -||hb-247.com^ -||hb94dnbe.de^ -||hbbvykwoiqhjpah.xyz^ -||hbcrnvtpyfegpws.com^ -||hbeipcdntijpb.com^ -||hbfqcy.com^ -||hbhood.com^ -||hbhtpuvjpqsmf.com^ -||hbkpcwdxite.com^ -||hbloveinfo.com^ -||hbmode.com^ -||hborq.com^ -||hbozuumx.com^ -||hbpcjmegtll.com^ -||hbrphusgbhpjpi.com^ -||hbxbiwgdjervee.com^ -||hbzikbe.com^ -||hcbjuiira.com^ -||hcdmhyq.com^ -||hcitgdljlrfw.com^ -||hcndrrodt.com^ -||hcnxeqjc.com^ -||hcpvkcznxj.com^ -||hcrwvno.com^ -||hcsiquau.com^ -||hcwmnryoyf.com^ -||hcxbokndbhw.com^ -||hcxhstgwtc.com^ -||hczkldokoiycq.com^ -||hd100546c.com^ -||hdacode.com^ -||hdapdyme.xyz^ -||hdat.xyz^ -||hdbcdn.com^ -||hdbcoat.com^ -||hdbcode.com^ -||hdbcome.com^ -||hdbkell.com^ -||hdbkome.com^ -||hdbtop.com^ -||hdfoweey.com^ -||hdjfeed.top^ -||hdpreview.com^ -||hdvcode.com^ -||hdwibtrw.com^ -||hdwvhgnisi.com^ -||he3mero6calli4s.com^ -||he7ll.com^ -||headachehedgeornament.com^ -||headclutterdialogue.com^ -||headerdisorientedcub.com^ -||headirtlseivi.org^ -||headlightgranulatedflee.com^ -||headlightinfinitelyhusband.com^ -||headline205.fun^ -||headline3452.fun^ -||headphonedecomposeexcess.com^ -||headphoneveryoverdose.com^ -||headquarterinsufficientmaniac.com^ -||headquarterscrackle.com^ -||headquartersexually.com^ -||headquartersimpartialsexist.com^ -||headsroutestocking.com^ -||headstonerinse.com^ -||headup.com^ -||headyblueberry.com^ -||healthfailed.com^ -||healthsmd.com^ -||heapbonestee.com^ -||heappyrinceas.info^ -||heardaccumulatebeans.com^ -||heardsoppy.com^ -||hearingdoughnut.com^ -||heartacheeasellikeness.com^ -||heartbrokenbarrellive.com^ -||heartedshapelessforbes.com^ -||hearthinfuriate.com^ -||hearthmint.com^ -||heartilyscales.com^ -||heartlessrigid.com^ -||heartperopus.top^ -||heartsawpeat.com^ -||heartynail.pro^ -||heartyten.com^ -||heaterpealarouse.com^ -||heaterrobotscompute.com^ -||heatertried.com^ -||heathertravelledpast.com^ -||heatpracticallyease.com^ -||heatprecipitation.com^ -||heavenexceed.com^ -||heavenfull.com^ -||heavengenerate.com^ -||heavenly-landscape.com^ -||heavenproxy.com^ -||heavently7s1.com^ -||heavespectaclescoefficient.com^ -||heavinessnudgemystical.com^ -||heavyconsciousnesspanties.com^ -||heavyrnews.name^ -||heavyuniversecandy.com^ -||hebiichigo.com^ -||hebraicwain.website^ -||hectorfeminine.com^ -||hectorobedient.com^ -||hecxtunmw.com^ -||hedgebedengue.website^ -||hedgehoghugsyou.com^ -||hedmisreputys.info^ -||hedwigsantos.com^ -||heebauch.com^ -||heedetiquettedope.com^ -||heedlessplanallusion.com^ -||heelsmerger.com^ -||heerosha.com^ -||heeteefu.com^ -||heethout.xyz^ -||heezylaura.com^ -||heftedbeatify.cfd^ -||heftygift.pro^ -||hegazedatthe.info^ -||hehighursoo.com^ -||hehnpryefuq.com^ -||heiressplane.com^ -||heiressscore.com^ -||heiresstolerance.com^ -||heirforslow.com^ -||heirloomreasoning.com^ -||heistedmarybud.top^ -||heixidor.com^ -||hejrspjwu.com^ -||hekowutus.com^ -||helaid.com^ -||heldciviliandeface.com^ -||heleric.com^ -||helesandoral.com^ -||helic3oniusrcharithonia.com^ -||helign.com^ -||heliumwinebluff.com^ -||hellnebsh.live^ -||hellominimshanging.com^ -||helltraffic.com^ -||helmethopeinscription.com^ -||helmetregent.com^ -||helmfireworkssauce.com^ -||helmregardiso.com^ -||helperinadmissible.com^ -||helpfulrectifychiefly.com^ -||helpingnauseous.com^ -||helplessdanpavilion.com^ -||helseeftie.net^ -||hemaglnkrvdcgxe.com^ -||hembrandsteppe.com^ -||hemhiveoccasion.com^ -||hemineedunks.com^ -||hemisphereilliterate.com^ -||hemtatch.net^ -||hemworm.com^ -||hencefusionbuiltin.com^ -||hencemakesheavy.com^ -||hencoopfiestas.life^ -||henfskbbk.xyz^ -||heniypgtlw.com^ -||henoticpipi.com^ -||henriettaproducesdecide.com^ -||hentaibiz.com^ -||hentaigold.net^ -||hentaionline.net^ -||heoidln.com^ -||heparlorne.org^ -||hepekdxt.xyz^ -||hepsaign.com^ -||heptix.net^ -||herac-stm.com^ -||heraldet.com^ -||heratheacle.com^ -||herbalbreedphase.com^ -||herbamplesolve.com^ -||herbwheelsobscure.com^ -||hercockremarke.info^ -||herdintwillelitt.com^ -||herdmenrations.com^ -||hereaftercostphilip.com^ -||hereaftertriadcreep.com^ -||herebybrotherinlawlibrarian.com^ -||hereditaryplead.com^ -||hereincigarettesdean.com^ -||heremployeesihi.info^ -||heresanothernicemess.com^ -||heresjokey.com^ -||herew-lmq.com^ -||herhomeou.xyz^ -||heritageamyconstitutional.com^ -||herlittleboywhow.info^ -||herma-tor.com^ -||hermelebromin.top^ -||hermichermicbroadcastinglifting.com^ -||hermichermicfurnished.com^ -||hernialbriefer.com^ -||heroblastgeoff.com^ -||herodiessujed.org^ -||heroiddepress.com^ -||heroinalerttactical.com^ -||herolaumbrous.website^ -||heronspire.com^ -||herringgloomilytennis.com^ -||herringlife.com^ -||herslenderw.info^ -||herynore.com^ -||hesatinaco.com^ -||hesatinacorne.org^ -||hesoorda.com^ -||hespe-bmq.com^ -||hesterinoc.info^ -||hestutche.com^ -||hetadinh.com^ -||hetaer.xyz^ -||hetahien.com^ -||hetaint.com^ -||hetapugs.com^ -||hetapus.com^ -||hetartwg.com^ -||hetaruvg.com^ -||hetaruwg.com^ -||hethis.com^ -||hetnu.com^ -||hetsclaxqke.com^ -||hetsouds.net^ -||heucoucjrwno.com^ -||heukwasanasosett.info^ -||heusysianedu.com^ -||hevc.site^ -||hevdnzqu.com^ -||hewawkward.com^ -||hewdisobedienceliveliness.com^ -||heweop.com^ -||hewhimaulols.com^ -||hewiseryoun.com^ -||hewmjifrn4gway.com^ -||hewokhn.com^ -||hewomenentail.com^ -||hewonderfulst.info^ -||hexerpabalum.com^ -||hexonesimphees.top^ -||hexovythi.pro^ -||heybarnacle.com^ -||heycompassion.com^ -||heycrktc.xyz^ -||hf5rbejvpwds.com^ -||hfeoveukrn.info^ -||hffxc.com^ -||hfggttxptxwdmb.com^ -||hfib5s-sdds-248d.xyz^ -||hfjoksuriyy.com^ -||hfjvuxuwasf.com^ -||hfk128dfs-dsfbheuoys.xyz^ -||hfnrvmkqtqyudxt.com^ -||hfnzhczqgdp.com^ -||hfpuhwqi.xyz^ -||hfufkifmeni.com^ -||hfugukhcea.com^ -||hfvqqbwverxy.xyz^ -||hfxgxzmik.com^ -||hg-bn.com^ -||hgbn.rocks^ -||hgcbvpjswabie.xyz^ -||hgcmnews.pro^ -||hgdpllko.com^ -||hghit.com^ -||hgirsxsgetv.com^ -||hgjxjis.com^ -||hgpmbfkxmrw.xyz^ -||hgsosrgldtgmyb.xyz^ -||hgub2polye.com^ -||hgubxzfpolbf.com^ -||hgx1.online^ -||hgx1.site^ -||hgx1.space^ -||hgzxmxwzgdbud.com^ -||hhbypdoecp.com^ -||hhcktiucw.xyz^ -||hhhcsywtuiif.com^ -||hhiswingsandm.info^ -||hhit.xyz^ -||hhjow.com^ -||hhklc.com^ -||hhkld.com^ -||hhmako.cloud^ -||hhoxwxfxgb.com^ -||hhrsecure.com^ -||hhtxjoa.com^ -||hhuohqramjit.com^ -||hhvbdeewfgpnb.xyz^ -||hhvivsbiip.com^ -||hhxfjgiyiheil.com^ -||hhyajwolmq.com^ -||hiadone.com^ -||hialstrfkctx.com^ -||hiasor.com^ -||hibids10.com^ -||hibitomonach.com^ -||hibssqnitlsgcm.com^ -||hiccupcotman.com^ -||hichhereallyw.info^ -||hickclamour.com^ -||hickunwilling.com^ -||hickytarp.space^ -||hicovjpufo.com^ -||hidcupcake.com^ -||hiddenbucks.com^ -||hiddenseet.com^ -||hidemembershipprofane.com^ -||hideousactivelyparked.com^ -||hidingenious.com^ -||hidist.com^ -||hiedgored.top^ -||hiemsunsweat.com^ -||hieramuriel.com^ -||hierarchymicrophonerandom.com^ -||hierarchytotal.com^ -||hievel.com^ -||hifakritsimt.com^ -||hiflkhvgvwsff.com^ -||higgiens23c5l8asfrk.com^ -||highconvertingformats.com^ -||highcpmcreativeformat.com^ -||highcpmgate.com^ -||highcpmrevenuegate.com^ -||highcpmrevenuenetwork.com^ -||highdirtysubsided.com^ -||highercldfrev.com^ -||highercldfrevb.com^ -||higherlargerdate.com^ -||highestfollowing.com^ -||highestgaugers.com^ -||higheurest.com^ -||highjackclients.com^ -||highjournalistbargain.com^ -||highlevelbite.com^ -||highlypersevereenrapture.com^ -||highlyrecomemu.info^ -||highmaidfhr.com^ -||highnets.com^ -||highperformancecpm.com^ -||highperformancecpmgate.com^ -||highperformancecpmnetwork.com^ -||highperformancedformats.com^ -||highperformancedisplaycontent.com^ -||highperformancedisplayformat.com^ -||highperformancegate.com^ -||highprofitnetwork.com^ -||highrevenuecpm.com^ -||highrevenuecpmnetrok.com^ -||highrevenuecpmnetwork.com^ -||highrevenuegate.com^ -||highrevenuenetwork.com^ -||hightech24h.com^ -||hightles.com^ -||hightopnews.com^ -||highwaycpmrevenue.com^ -||hijpdcvwb.com^ -||hikestale.com^ -||hikrfneh.xyz^ -||hikvar.ru^ -||hilariouscongestionpackage.com^ -||hilarioustasting.com^ -||hilarlymcken.info^ -||hilarlymckensec.info^ -||hilaroryssus.guru^ -||hildrenasth.info^ -||hildrenastheyc.info^ -||hilerant.site^ -||hillbackserve.com^ -||hillhousehomes.co^ -||hillsarab.com^ -||hillsidejustificationstitch.com^ -||hilltopads.com^ -||hilltopads.net^ -||hilltopgo.com^ -||hillyhaeres.website^ -||hilove.life^ -||hilsaims.net^ -||hiltingcid.com^ -||himediads.com^ -||himediadx.com^ -||himekingrow.com^ -||himgta.com^ -||himhedrankslo.xyz^ -||himosteg.xyz^ -||himpumbilic.cfd^ -||himrebelliontemperature.com^ -||himselfthoughtless.com^ -||himselves.com^ -||himunpracticalwh.info^ -||hinaprecent.info^ -||hinavvogha.com^ -||hindervoting.com^ -||hindsightchampagne.com^ -||hingamgladt.org^ -||hingamgladther.com^ -||hingfruitiesma.info^ -||hinkhimunpra.info^ -||hinkhimunpractical.com^ -||hinoidczarist.com^ -||hinowlfuhrz.com^ -||hip-97166b.com^ -||hipals.com^ -||hipersushiads.com^ -||hipintimacy.com^ -||hippusanglist.com^ -||hiprofitnetworks.com^ -||hipstertinta.space^ -||hipunaux.com^ -||hipvaeciaqqtrhy.xyz^ -||hirelinghistorian.com^ -||hiringairport.com^ -||hirurdou.net^ -||hisismoyche.com^ -||hispherefair.com^ -||hissedapostle.com^ -||hissedassessmentmistake.com^ -||hissoverout.com^ -||hissshortsadvisedly.com^ -||hisstrappedperpetual.com^ -||histhkwcyzxzu.com^ -||histi.co^ -||historicalcarawayammonia.com^ -||historicalcargo.com^ -||historicalcompetentconquered.com^ -||historicalsenseasterisk.com^ -||historicgraduallyrow.com^ -||histssenaah.top^ -||hisurnhuh.com^ -||hitbip.com^ -||hitchbuildingeccentric.com^ -||hitchimmerse.com^ -||hitchrational.com^ -||hitcpm.com^ -||hithercollow.top^ -||hithertodeform.com^ -||hitlnk.com^ -||hiug862dj0.com^ -||hixapalg.com^ -||hixwiarnrfo.com^ -||hiyaxgkemtiad.com^ -||hizanpwhexw.com^ -||hizlireklam.com^ -||hjalma.com^ -||hjfonyiuo.com^ -||hjgapllydic.com^ -||hjhbyywgzxxqzu.com^ -||hjhwjphsryi.com^ -||hjiwoazeigefn.com^ -||hjklq.com^ -||hjmjmywncskyt.com^ -||hjmnfdab.com^ -||hjprhubzqgw.com^ -||hjqdwmekhur.com^ -||hjrvsw.info^ -||hjrwwwlqcovom.com^ -||hjuswoulvp.xyz^ -||hjxajf.com^ -||hjyovlwtevwdjy.com^ -||hkeibmpspxn.com^ -||hkfgsxpnaga.xyz^ -||hkifcxblsu.com^ -||hkilops.com^ -||hkiztcykfb.com^ -||hkjjfpkghxec.xyz^ -||hkjmjxttwaxmui.com^ -||hkngacxry.com^ -||hkowhqtenjfud.com^ -||hkqtjqbfb.com^ -||hksmstpzsnlj.com^ -||hkuuopuhl.xyz^ -||hkuypnhpafbuyy.com^ -||hlbelbblmc.com^ -||hlcvjaqjckgrwb.com^ -||hlerseomcb.com^ -||hleuindnjcixxep.com^ -||hlftbsgj.com^ -||hligh.com^ -||hljmdaz.com^ -||hlmiq.com^ -||hloxhxodk.xyz^ -||hlprqavqtlkin.com^ -||hlrvfycqtlfjd.com^ -||hlserve.com^ -||hlumjujtkmgzmf.com^ -||hlunlean.com^ -||hlusfkredm.com^ -||hlyrecomemum.info^ -||hmafhczsos.com^ -||hmcjrijsmvk.com^ -||hmerapfifpf.com^ -||hmndkdan.com^ -||hmrxsxvl.com^ -||hmsykhbqvesopt.xyz^ -||hmutggsidcnhj.com^ -||hmxg5mhyx.com^ -||hmyuokltxplqwfa.com^ -||hn1l.site^ -||hnfljokqhc.com^ -||hnjkcnntdg.com^ -||hnkyxyknp.com^ -||hnrgmc.com^ -||hntkeiupbnoaeha.xyz^ -||hnudnorbpdcd.com^ -||hnxhksg.com^ -||hnyswepsc.com^ -||hoa44trk.com^ -||hoabinoo.net^ -||hoacauch.net^ -||hoagiesmowed.com^ -||hoakz.xyz^ -||hoanaijo.com^ -||hoanoola.net^ -||hoardglitterjeanne.com^ -||hoardjan.com^ -||hoardpastimegolf.com^ -||hoatebilaterdea.info^ -||hoaxcookingdemocratic.com^ -||hoaxedpassay.space^ -||hoaxresearchingathletics.com^ -||hoaxviableadherence.com^ -||hobbleobey.com^ -||hockeycomposure.com^ -||hockeyhavoc.com^ -||hockeysacredbond.com^ -||hockicmaidso.com^ -||hoctor-pharity.xyz^ -||hocusedcassan.top^ -||hocylpbff.com^ -||hoggersundue.com^ -||hoggetforfend.com^ -||hoglinsu.com^ -||hogmc.net^ -||hognaivee.com^ -||hognutturpis.top^ -||hogqmd.com^ -||hogtiescrawley.com^ -||hohamsie.net^ -||hoickedfoamer.top^ -||hoickpinyons.com^ -||hoidenzaniest.top^ -||hoiiodacdsmro.com^ -||hoisquit.buzz^ -||hokarsoud.com^ -||hokierloopy.digital^ -||holahupa.com^ -||holdenthusiastichalt.com^ -||holdhostel.space^ -||holdingholly.space^ -||holdingwager.com^ -||holdsbracketsherry.com^ -||holdsoutset.com^ -||holduporatory.com^ -||holemanwasco.com^ -||holenhw.com^ -||holgateperfect.com^ -||holict.com^ -||holidaycoconutconsciousness.com^ -||holistnunatak.com^ -||hollekeamboina.com^ -||hollowcharacter.com^ -||holmiumundried.com^ -||holptimawa.com^ -||holspostcardhat.com^ -||holyskier.com^ -||homecomingrespectedpastime.com^ -||homepig4.xyz^ -||homesickclinkdemanded.com^ -||homespotaudience.com^ -||homestairnine.com^ -||homesyowl.com^ -||homeycommemorate.com^ -||homicidalseparationmesh.com^ -||homicidelumpforensic.com^ -||homicidewoodenbladder.com^ -||homierceston.top^ -||hommmaq.com^ -||homncjrgbref.com^ -||homosexualfordtriggers.com^ -||homraigigeria.top^ -||hondoutdraw.top^ -||honestlyapparentlycoil.com^ -||honestlydeploy.com^ -||honestlyfosterchild.com^ -||honestlygipsy.com^ -||honestlystalk.com^ -||honestlyvicinityscene.com^ -||honestpeaceable.com^ -||honeycombabstinence.com^ -||honeycombastrayabound.com^ -||honeycombprefecture.com^ -||honeymoondisappointed.com^ -||honeymoonregular.com^ -||honeyreadinesscentral.com^ -||honitonchyazic.com^ -||honorablehalt.com^ -||honorbustlepersist.com^ -||honourcunninglowest.com^ -||honoursdashed.com^ -||honoursimmoderate.com^ -||hoo1luha.com^ -||hoodentangle.com^ -||hoodoesvector.top^ -||hoodoosdonsky.com^ -||hoodypledget.top^ -||hoofexcessively.com^ -||hoofsduke.com^ -||hoogajee.net^ -||hooglidi.net^ -||hoojique.xyz^ -||hookawep.net^ -||hookpurgery.top^ -||hookupfowlspredestination.com^ -||hooliganmedia.com^ -||hoomigri.com^ -||hoonaptecun.com^ -||hoood.info^ -||hoopbeingsmigraine.com^ -||hoopersnonpoet.com^ -||hoophaub.com^ -||hoophejod.com^ -||hooplejubus.uno^ -||hoopmananticus.top^ -||hooptaik.net^ -||hooterwas.com^ -||hootravinedeface.com^ -||hoovendamsite.top^ -||hoowuliz.com^ -||hopbeduhzbm.com^ -||hopdream.com^ -||hopedpluckcuisine.com^ -||hopedwishfulpercent.com^ -||hopefullyapricot.com^ -||hopefullyfloss.com^ -||hopefulstretchpertinent.com^ -||hopelessrolling.com^ -||hopesteapot.com^ -||hopghpfa.com^ -||hophcomeysw.com^ -||hopilos.com^ -||hopperimprobableclotted.com^ -||hoppermagazineprecursor.com^ -||hoppershortercultivate.com^ -||hoppersill.com^ -||hopsackmoth.com^ -||hopsigna.com^ -||hoptopboy.com^ -||horaceprestige.com^ -||horaebanca.life^ -||hordeumtooken.com^ -||horgoals.com^ -||horizontallyclenchretro.com^ -||horizontallycourtyard.com^ -||horizontallywept.com^ -||hormosdebris.com^ -||hornierxenium.com^ -||hornsobserveinquiries.com^ -||hornspageantsincere.com^ -||horny.su^ -||horribledecorated.com^ -||horriblygeneratortwinkle.com^ -||horriblysparkling.com^ -||horridbinding.com^ -||horrifieddespair.com^ -||horrifyclausum.com^ -||horse-bidforreal.org^ -||horsebackbeatingangular.com^ -||horsebackcastle.com^ -||horsilyoxydase.com^ -||hortestoz.com^ -||hortitedigress.com^ -||hoseitfromtheot.com^ -||hosenewspapersdepths.com^ -||hosentombe.top^ -||hosierygossans.com^ -||hosieryplum.com^ -||hosierypressed.com^ -||hospitabletradition.pro^ -||hospitalitydisorder.com^ -||hospitalityjunctioninset.com^ -||hospitalsky.online^ -||hostabondoc.com^ -||hostave.net^ -||hostave4.net^ -||hostingcloud.racing^ -||hostlyacus.digital^ -||hosupshunk.com^ -||hot4k.org^ -||hotdeskbabes.pro^ -||hotegotisticalturbulent.com^ -||hotgvibe.com^ -||hothoodimur.xyz^ -||hothta.com^ -||hotiapjla.com^ -||hotkabachok.com^ -||hotlinedisappointed.com^ -||hotlinemultiply.com^ -||hotnews1.me^ -||hotpics.mom^ -||hotstretchdove.com^ -||hottercensorbeaker.com^ -||hotterenvisage.com^ -||hottielunn.com^ -||hotvids.online^ -||hotvids.space^ -||hotwildadult.com^ -||hotwords.com^ -||houboajaithu.net^ -||houdodoo.net^ -||houfopsichoa.com^ -||houjoque.com^ -||houndcost.com^ -||hounddramatic.com^ -||houndtriumphalsorry.com^ -||houpeera.net^ -||hourglasssealedstraightforward.com^ -||hoursencirclepeel.com^ -||hourstreeadjoining.com^ -||housejomadkc.com^ -||housekeepergamesmeeting.com^ -||housemaiddevolution.com^ -||housemalt.com^ -||housewifecheeky.com^ -||housewifereceiving.com^ -||houthaub.xyz^ -||houtouchekan.space^ -||hoverclassicalroused.com^ -||hoverr.co^ -||hoverr.media^ -||hovide.com^ -||hovpxxqpyy.com^ -||how-t0-wtch.com^ -||howberthchirp.com^ -||howboxmab.site^ -||howdoyou.org^ -||howeasteeler.website^ -||howeloisedignify.com^ -||howeverdipping.com^ -||howfingbrakes.com^ -||howhow.cl^ -||howkpleural.top^ -||howlerorlando.top^ -||howlexhaust.com^ -||howls.cloud^ -||howoverlapsuspicious.com^ -||howploymope.com^ -||howtubray.com^ -||hozoaxan.com^ -||hpaakmsumarzy.com^ -||hpbmyojwqpewaw.com^ -||hpcfdhvwjwlt.com^ -||hpeaxbmuh.com^ -||hpepeepce.com^ -||hpilhooxcjh.com^ -||hpk42r7a.de^ -||hpmarzhnny.com^ -||hpmlrpbrwezloi.com^ -||hpmstr.com^ -||hpnbvfiixnen.com^ -||hppvkbfcuq.com^ -||hprmbmtegydcwc.com^ -||hprmnfctkj.com^ -||hpsvgbrlqa.com^ -||hptcwtmzuj.com^ -||hpuxrycfvo.com^ -||hpychofen.com^ -||hpyjmp.com^ -||hpyrdr.com^ -||hq3x.com^ -||hqduejsycx.com^ -||hqhwiwcahavywie.com^ -||hqpass.com^ -||hqpgfxt.com^ -||hqqqqwcdxvjbd.com^ -||hqscene.com^ -||hqsexpro.com^ -||hqsimfxiwyb.com^ -||hqtwyhampwu.xyz^ -||hqwa.xyz^ -||hqxghzyfvxrdpt.com^ -||hraawjaaaluqboj.com^ -||hrahdmon.com^ -||hrczhdv.com^ -||hrenbjkdas.com^ -||hrfdulynyo.xyz^ -||hrgpdiuf.com^ -||hrhufhhay.com^ -||hribmjvvmuk.com^ -||hrkplkgjs.com^ -||hrogrpee.de^ -||hrrlyfdnxlzxe.com^ -||hrscompetepickles.com^ -||hrtennaarn.com^ -||hrtvluy.com^ -||hrtyc.com^ -||hrtye.com^ -||hrxjqyxvdqidpv.com^ -||hsateamplayeranydw.info^ -||hsdaknd.com^ -||hsfewosve.xyz^ -||hskywgpickh.com^ -||hsmrabnj.com^ -||hsrvv.com^ -||hsrvz.com^ -||hssitplsoq.com^ -||hstbbmtyptovqmw.com^ -||hstpnetwork.com^ -||hsyaoyutmz.com^ -||htalizer.com^ -||htdvt.com^ -||htevoo.xyz^ -||htfgmojisulelt.com^ -||htfpcf.xyz^ -||hthinleavesofefi.info^ -||htihvgpmna.xyz^ -||htintpa.tech^ -||htjuxdkjppm.com^ -||htkcm.com^ -||htl.bid^ -||htlbid.com^ -||htlcywxrft.com^ -||htmass.com^ -||htmonster.com^ -||htnvpcs.xyz^ -||htoptracker11072023.com^ -||htoycpsxljkqrp.com^ -||htpirf.xyz^ -||htsysxlupdqe.com^ -||httpsecurity.org^ -||htucmyqwij.com^ -||htufhvsglyoy.com^ -||hturnshal.com^ -||htyrmacanbty.com^ -||htysiboswaj.com^ -||huafcpvegmm.xyz^ -||huanez.xyz^ -||huapydce.xyz^ -||hubbabu2bb8anys09.com^ -||hubbubtheol.com^ -||hubbysyndoc.com^ -||hubhc.com^ -||hubhubhub.name^ -||hublosk.com^ -||hubrisone.com^ -||hubristambacs.com^ -||hubturn.info^ -||huceeckeeje.com^ -||hucejo.uno^ -||hudrftcspuf.com^ -||hue2a.com^ -||hueadsxml.com^ -||huehinge.com^ -||hufaztjist.com^ -||hugelyantony.com^ -||hugelyimmovable.com^ -||hugenicholas.com^ -||hugfromoctopus.com^ -||hughjonah.com^ -||hugodeservedautopsy.com^ -||hugoinexperiencedsat.com^ -||hugregregy.pro^ -||hugysoral.digital^ -||huhaxvawgwa.com^ -||huigt6y.xyz^ -||hukogpanbs.com^ -||hulabipptemux.com^ -||hulledaries.top^ -||humaffableconsulate.com^ -||humandiminutionengaged.com^ -||humanjeep.com^ -||humiliatedvolumepore.com^ -||humiliatemoot.com^ -||humiliating-risk.pro^ -||hummertulwar.guru^ -||hummingexam.com^ -||humoralpurline.com^ -||humordecomposebreathtaking.com^ -||humpdecompose.com^ -||humpdubious.com^ -||humplollipopsalts.com^ -||humsoolt.net^ -||humusesphren.com^ -||hunbtupbbanyg.com^ -||hunchbackrussiancalculated.com^ -||hunchmotherhooddefine.com^ -||hunchnorthstarts.com^ -||hunchsewingproxy.com^ -||hundredpercentmargin.com^ -||hundredscultureenjoyed.com^ -||hundredshands.com^ -||hundredthmeal.com^ -||hungersavingwiring.com^ -||hungoversleepconcourse.com^ -||hungrylongingtile.com^ -||hungryproductionsmalnutrition.com^ -||hungryrise.com^ -||hunkbother.com^ -||hunter-hub.com^ -||hunterlead.com^ -||huntershoemaker.com^ -||huntingtroll.com^ -||hunyakupgive.com^ -||hupiru.uno^ -||huppahshoras.com^ -||huqbeiy.com^ -||huradisbud.com^ -||hurdlesmuchel.com^ -||hurgusou.com^ -||hurkarubypaths.com^ -||hurlaxiscame.com^ -||hurlcranky.com^ -||hurlmedia.design^ -||huronews.com^ -||hurricaneabjection.com^ -||hurriedboob.com^ -||hurriednun.com^ -||hurriedpiano.com^ -||hurtfulden.com^ -||husbandnights.com^ -||husbihasqf.com^ -||huselomboy.website^ -||husezo.uno^ -||husfly.com^ -||hushpub.com^ -||hushta.com^ -||husky-chain.pro^ -||husky-tomorrow.pro^ -||huskydesigner.pro^ -||huskypartydance.com^ -||hussartootle.website^ -||huszawnuqad.com^ -||hutajkerfvbman.com^ -||hutanz.xyz^ -||hutlockshelter.com^ -||hutoumseet.com^ -||hutremindbond.com^ -||huvohjvpaog.com^ -||huwkiycoup.com^ -||huwuftie.com^ -||huylki.com^ -||hvcrfatojmh.com^ -||hvdmwhnawvhbejv.com^ -||hvikgqco.com^ -||hvkwmvpxvjo.xyz -||hvmsmoiejaqb.com^ -||hvmuqhywjpym.com^ -||hvooyieoei.com^ -||hvpguevleand.com^ -||hwaagkmiitos.com^ -||hwbekhxxihvdoue.com^ -||hwderdk.com^ -||hwfmynim.com^ -||hwicliktt.com^ -||hwksgsofsgau.com^ -||hwmlmcbwpbkwas.com^ -||hwof.info^ -||hwosl.cloud^ -||hwpnocpctu.com^ -||hwpyfcxahv.com^ -||hwqybdkniptwm.com^ -||hwrcxpfzmfxg.com^ -||hwvvvuwpvu.com^ -||hwydfevh.com^ -||hwyjfhdjgoorb.com^ -||hxatkjygdpar.com^ -||hxaubnrfgxke.xyz^ -||hxbtqwquroke.com^ -||hxcdyx.com^ -||hxcovhhin.com^ -||hxeukcmkuswifr.com^ -||hxficbb.com^ -||hxgrdgrgjktw.xyz^ -||hxknfrtfj.xyz^ -||hxlkytqpinnqeo.com^ -||hxoewq.com^ -||hxpyrgqycgreyy.xyz^ -||hxtvrydyhi.xyz^ -||hyaenajitneys.top^ -||hyalinsbenami.top^ -||hyblub.top^ -||hycantyoubelik.com^ -||hydragrouge.com^ -||hydraulzonure.com^ -||hydrogendeadflatten.com^ -||hydrogenpicklenope.com^ -||hyelgehg.xyz^ -||hyepilfiym.com^ -||hyfvlxm.com^ -||hyibpgaa.com^ -||hyistkechaukrguke.com^ -||hymenicpirn.com^ -||hymenvapour.com^ -||hymnarypoking.com^ -||hynteroforion.com^ -||hyofteraq.com^ -||hyoicxstpfvgwz.com^ -||hype-ads.com^ -||hypemakers.net^ -||hyperbanner.net^ -||hyperlinksecure.com^ -||hyperoi.com^ -||hyperpromote.com^ -||hypertrackeraff.com^ -||hypervre.com^ -||hyphenatedion.com^ -||hyphenion.com^ -||hyphentriedpiano.com^ -||hypnotizebladdersdictate.com^ -||hypnotizedespiterelinquish.com^ -||hypnotizetransfervideotape.com^ -||hypocrisypreliminary.com^ -||hypocrisysmallestbelieving.com^ -||hypogeeinial.com^ -||hypothesisoarsoutskirts.com^ -||hypots.com^ -||hyrcanquittor.com^ -||hyrcycmtckbcpyf.xyz^ -||hyrewusha.pro^ -||hysonsregrown.top^ -||hysteriaculinaryexpect.com^ -||hystericalarraignment.com^ -||hystericalpotprecede.com^ -||hytxg2.com^ -||hz9x6ka2t5gka7wa6c0wp0shmkaw7xj5x8vaydg0aqp6gjat5x.com^ -||hzcdwgcch.com^ -||hzdfziaydqawar.com^ -||hzkachqd.com^ -||hzogncbobfb.com^ -||hzoywchsp.com^ -||hzr0dm28m17c.com^ -||hzzgnwdsha.com^ -||i-afk.com^ -||i010b048d3e4a1e4b70aba72b169e70c90971f9.xyz^ -||i4rsrcj6.top^ -||i7ece0xrg4nx.com^ -||i99i.org^ -||iadoremakingpics.com^ -||iaihdexme.com^ -||iairkldocd.com^ -||iajmewpagfvhg.com^ -||iakjiamqg.com^ -||iamadssystems.com^ -||iamsfyar.com^ -||iangakwvtjrpbew.xyz^ -||ianjgmpat.com^ -||ianjumb.com^ -||iarreowsca.com^ -||iasbetaffiliates.com^ -||iasrv.com^ -||iaufffdnocodbr.com^ -||iaxwnffhikiac.com^ -||ibatom.com^ -||ibaxdpwaceyha.xyz^ -||ibeelten.net^ -||iberiavihuela.guru^ -||iberitepremate.top^ -||ibetadvdqrn.com^ -||ibexesblithen.com^ -||ibidemkorari.com^ -||ibikini.cyou^ -||ibjdmthqkz.com^ -||ibniyqbkk.com^ -||ibonmfvcwb.xyz^ -||ibortvgbkvpmes.com^ -||ibptutlgoloqy.com^ -||ibpxnkwstvqcon.com^ -||ibqjduiipukerj.com^ -||ibrapush.com^ -||ibryte.com^ -||ibugreeza.com^ -||ibutheptesitrew.com^ -||ibxckpvttgkat.com^ -||icalnormaticalacyc.info^ -||icdirect.com^ -||icebergreptilefury.com^ -||icelessbogles.com^ -||icfjair.com^ -||ichairaivi.com^ -||ichauphy.com^ -||ichhereallyw.info^ -||ichimaip.net^ -||icicleriskfence.com^ -||iciftiwe.com^ -||icilyassertiveindoors.com^ -||icilytired.com^ -||iciynrkldrhmk.com^ -||ickyrustle.com^ -||iclickcdn.com^ -||icllmnimmmvrc.com^ -||iclnxqe.com^ -||icmlfqdb.com^ -||icmssjinq.com^ -||iconcardinal.com^ -||icotypeoxcheek.top^ -||icrxbetigcdjz.com^ -||icubeswire.co^ -||icxcrnciutiltaf.com^ -||icy-location.com^ -||icycreatmentr.info^ -||icyreprimandlined.com^ -||icyxbdxvhqswvxg.com^ -||id5-sync.com^ -||idahoanpavies.com^ -||idantglyoxim.top^ -||iddeyrdpgq.com^ -||iddjpop.com^ -||iddpop.com^ -||ideahealkeeper.com^ -||idealintruder.com^ -||idealmedia.io^ -||ideapassage.com^ -||identifiernancy.com^ -||identifierslionessproof.com^ -||identifierssadlypreferred.com^ -||identitymansfield.com^ -||identityrudimentarymessenger.com^ -||idescargarapk.com^ -||idiafix.com^ -||idiocyosmotic.life^ -||idiothungryensue.com^ -||idioticdeprint.com^ -||idioticskinner.com^ -||idioticstoop.com^ -||idiotminority.com^ -||idiotproprietary.com^ -||iditolshewn.com^ -||idjcymxwbjqxum.com^ -||idkmgzkdhanmz.com^ -||idlccpuom.com^ -||idlefulrecoded.com^ -||idlyscrike.top^ -||idohethisisathllea.com^ -||idolizeduse.pro^ -||idolsainsie.com^ -||idownloadgalore.com^ -||idrsklar.com^ -||idswinpole.casa^ -||idthecharityc.info^ -||idydlesswale.info^ -||ie3wisa4.com^ -||ie8eamus.com^ -||iebsmqevw.com^ -||ieicbkjmmqkcmgq.com^ -||ieiukkwfqhwuvwy.com^ -||ielmzzm.com^ -||iemufbuvehrjo.xyz^ -||ieo8qjp3x9jn.pro^ -||ietyofedinj89yewtburgh.com^ -||ievjrgjid.com^ -||ievjylvqfjry.com^ -||iewhonhdvryu.com^ -||iezptsoc.com^ -||iezxmddndn.com^ -||ifcpmukburktd.com^ -||ifdbdp.com^ -||ifdilptsw.com^ -||ifdividemeasuring.com^ -||ifdmuggdky.com^ -||ifdnzact.com^ -||ifefashionismscold.com^ -||ifigent.com^ -||ifjbtjf.com^ -||ifjhkbmewdny.com^ -||ifkgdxhpt.com^ -||ifknittedhurtful.com^ -||iflgybyab.com^ -||ifllwfs.com^ -||ifmjzbdyk.com^ -||ifodyafshael.com^ -||ifpartyingpile.com^ -||ifplumhggkz.com^ -||ifqirmnkrlv.com^ -||ifrjnpv.com^ -||ifsjqcqja.xyz^ -||ifsnickshriek.click^ -||ifsnickshriek.com^ -||ifulasaweatherc.info^ -||ifvxoluyhof.com^ -||ifzpvnrjp.com^ -||ig0nr8hhhb.com^ -||igainareputaon.info^ -||igaming-warp-service.io^ -||igbiraintsv.com^ -||ightdecipientconc.info^ -||ightsapph.info^ -||iginnis.site^ -||igjptqlywyvfveq.com^ -||igloohq.com^ -||iglooprin.com^ -||ignals.com^ -||ignamentswit.com^ -||ignitesvaurien.com^ -||ignitioninstaller.com^ -||ignobleordinalembargo.com^ -||ignorantmethod.pro^ -||ignorerationalize.com^ -||ignoresphlorol.com^ -||ignoringinconvenience.com^ -||igoamtaimp.com^ -||igoognou.xyz^ -||igppkehwycrr.com^ -||iguran.com^ -||igxmoaulj.com^ -||igylwxvxgsuvcs.xyz^ -||ihappymuttered.info^ -||ihauvogh.com^ -||ihavelearnat.xyz^ -||ihdcnwbcmw.com^ -||ihehgqawkybbqi.com^ -||iheuuivitgj.com^ -||ihgmsdypohtg.com^ -||ihhqwaurke.com^ -||ihnhnpz.com^ -||ihoolrun.net^ -||ihqnckvpfx.com^ -||ihtckcitkr.com^ -||ihttscqovzzb.com^ -||ihuumdkdjskud.com^ -||ihzuephjxb.com^ -||ii9g0qj9.de^ -||iibhytvj.com^ -||iicheewi.com^ -||iidohheneuda.com^ -||iifvcfwiqi.com^ -||iigmlx.com^ -||iihcjcil.com^ -||iinzwyd.com^ -||iiowokorfr.com^ -||iiqradydqohuqg.com^ -||iisabujdtg.com^ -||iistillstayherea.com^ -||iittjwvctt.com^ -||iiuvgfhqldb.xyz^ -||iiwm70qvjmee.com^ -||iiydmrr.com^ -||ijbgqlf.com^ -||ijchefkkmlrqx.xyz^ -||ijebtcgu.com^ -||ijeetsie.com^ -||ijhfqqne.com^ -||ijhilvbu.com^ -||ijhpdtiij.com^ -||ijikhxaelqmbg.com^ -||ijmrburud.com^ -||ijpbpkaq.com^ -||ijrmafzydeieuo.com^ -||ijukwkxpek.xyz^ -||ijynarif.xyz^ -||ikahnruntx.com^ -||ikaiznmpapdlv.com^ -||ikcaru.com^ -||ikcieontapp.com^ -||ikengoti.com^ -||ikevinwfc.com^ -||ikholm.com^ -||ikjzwgcg.com^ -||ikonatozee.top^ -||ikouthaupi.com^ -||ikrail.com^ -||ikrvvsliwar.com^ -||ikunselt.com^ -||ikwiwnnofgpzq.com^ -||ikwzrix.com^ -||ikxxgkpymja.com^ -||ilaterdeallyig.info^ -||ilathetchit.com^ -||ilawitrototlet.com^ -||ilbuqwjwzw.com^ -||ilcdamnqtpem.com^ -||ildbikwahwvuj.com^ -||ildilmayq.com^ -||ileacfaretta.digital^ -||ilealscathes.com^ -||ileeckut.com^ -||ileesidesu.hair^ -||iletterismyper.info^ -||ilgtauox.com^ -||ilhaqqkt.com^ -||iliahiaracana.top^ -||iliketomakingpics.com^ -||illallwoe.com^ -||illegaleaglewhistling.com^ -||illegallyshoulder.com^ -||illegalprotected.com^ -||illegibledismiss.com^ -||illfriendship.com^ -||illfvowjayo.com^ -||illicitdandily.cam^ -||illinformednative.com^ -||illishrastus.com^ -||illiterate-estate.pro^ -||illiticguiding.com^ -||illnessentirely.com^ -||illocalvetoes.com^ -||illuminatedusing.com^ -||illuminateinconveniencenutrient.com^ -||illuminatelocks.com^ -||illuminateslydeliberate.com^ -||illuminous.xyz^ -||illusiveremarkstreat.com^ -||illustcutesy.com^ -||illustrateartery.com^ -||illustriousmind.pro^ -||ilmtudcgmqxa.com^ -||ilo134ulih.com^ -||iloacmoam.com^ -||iloptrex.com^ -||ilovemakingpics.com^ -||iloxvxenlwsv.com^ -||iluabuiukgpjb.com^ -||ilubn48t.xyz^ -||iluemvh.com^ -||ilumtoux.net^ -||ilvnkzt.com^ -||ilvpbrvrpzrys.com^ -||ilxhsgd.com^ -||ilxkwlhqo.com^ -||ilyf4amifh.com^ -||ilygtgexvlvmqao.com^ -||imageadvantage.net^ -||imagerystirrer.com^ -||imagiflex.com^ -||imaginableblushsensor.com^ -||imaginaryawarehygienic.com^ -||imaginaryspooky.com^ -||imaginestandingharvest.com^ -||imagoluchuan.com^ -||imasdk.googleapis.com^ -||imathematica.org^ -||imatrk.net^ -||imblic.com^ -||imbolexabc.top^ -||imcdn.pro^ -||imcod.net^ -||imemediates.org^ -||imemediatesuper.info^ -||imerinabitypic.top^ -||imgfeedget.com^ -||imghst-de.com^ -||imgint1.com^ -||imglnkd.com^ -||imglnke.com^ -||imgot.info^ -||imgot.site^ -||imgqmng.com^ -||imgsdn.com^ -||imgsniper.com^ -||imgwebfeed.com^ -||imiclk.com^ -||imiddleagedspacious.com^ -||imidicsecular.com^ -||iminsoux.com^ -||imistaxf.com^ -||imitationname.com^ -||imith.com^ -||imitrck.net^ -||imitrk.com^ -||immaculategirdlewade.com^ -||immaculaterepair.pro^ -||immaculatestolen.com^ -||immaculatewars.com^ -||immediatebedroom.pro^ -||immediateknowledge.com^ -||immenseatrociousrested.com^ -||immenselytoken.com^ -||immersedtoddle.com^ -||immerseweariness.com^ -||immigrantbriefingcalligraphy.com^ -||immigrantpavement.com^ -||immigraterend.com^ -||immigrateskating.com^ -||immigrationcrayon.com^ -||immigrationspiralprosecution.com^ -||imminentadulthoodpresumptuous.com^ -||immoderatefranzyuri.com^ -||immoderateyielding.com^ -||immortalhostess.com^ -||immortalityfaintedobjections.com^ -||immortalityinformedmay.com^ -||immortalradiomet.com^ -||immoxdzdke.com^ -||immuneincompetentcontemporary.com^ -||imobljkhqw.com^ -||imoniummusicry.com^ -||imoughtcallmeoc.com^ -||imp2aff.com^ -||impact-betegy.com^ -||impactcutleryrecollect.com^ -||impactify.media^ -||impactradius-go.com^ -||impactradius.com^ -||impactserving.com^ -||impactslam.com^ -||impartial-steal.pro^ -||impartialnettle.com^ -||impartialpath.com^ -||impassabletitanicjunction.com^ -||impatientbowpersecution.com^ -||impatientliftdiploma.com^ -||impatientlyastonishing.com^ -||impavidcircean.com^ -||impavidmarsian.com^ -||impeccablewriter.com^ -||impededhaeing.com^ -||impelsgorcock.com^ -||impendingaggregated.com^ -||impendingboisterousastray.com^ -||impendscouxio.com^ -||impenetrableauthorslimbs.com^ -||imperativecapitaltraitor.com^ -||imperativetheirs.com^ -||imperialbattervideo.com^ -||imperialtense.com^ -||imperiicoloppe.top^ -||imperturbableappearance.pro^ -||imperturbableawesome.com^ -||imperturbableclothes.com^ -||imperturbableresponsive.com^ -||imperysavers.click^ -||impetremondial.com^ -||impishelizabethjumper.com^ -||implix.com^ -||implycollected.com^ -||impolitefreakish.com^ -||imponedbilsh.top^ -||impore.com^ -||importanceborder.com^ -||importanceexhibitedamiable.com^ -||importantcheapen.com^ -||importantlyshow.com^ -||imposecalm.com^ -||imposi.com^ -||impossibilityaboriginalblessed.com^ -||impossibilityfighter.com^ -||impossibilityutilities.com^ -||impossiblemountain.pro^ -||impossiblepeerless.com^ -||imposterlost.com^ -||impostersierraglands.com^ -||impostorconfused.com^ -||impostorhazy.com^ -||impostorjoketeaching.com^ -||impostororchestraherbal.com^ -||impregnablehunt.com^ -||impregpresaw.top^ -||impresasct.com^ -||impresseastsolo.com^ -||impressionable-challenge.pro^ -||impressivecontinuous.com^ -||impressiveporchcooler.com^ -||impressivewhoop.com^ -||imprintmake.com^ -||improperadvantages.com^ -||impropertoothrochester.com^ -||improvebeams.com^ -||improvebin.com^ -||improvebin.xyz^ -||improvedcolumnist.com^ -||improvementscakepunctual.com^ -||improvementscaptivatevenus.com^ -||improviseprofane.com^ -||impulsefelicity.com^ -||impulselikeness.com^ -||impulsiveenabled.com^ -||impunekotoite.com^ -||impureattirebaking.com^ -||imputesmere.top^ -||imrmmbnlc.com^ -||imstks.com^ -||imvjcds.com^ -||imxhirrqagtjwd.com^ -||in-appadvertising.com^ -||in-page-push.com^ -||in-page-push.net^ -||inabilityovaloccasional.com^ -||inabilitytraditional.com^ -||inabsolor.com^ -||inaccessiblefebruaryimmunity.com^ -||inaccuratetreasure.com^ -||inadequateinadmissibleoblige.com^ -||inadmissibleinsensitive.com^ -||inadmissiblesomehow.com^ -||inaltariaon.com^ -||inaneamenvote.com^ -||inanityacromia.life^ -||inanitystorken.com^ -||inappropriate2.fun^ -||inareputaonforha.com^ -||inasmedia.com^ -||inaudiblesattruthfully.com^ -||inauguratehiddennegligence.com^ -||inauknceiwouldlikuk.info^ -||inbbredraxing.com^ -||inbdmaza.com^ -||inbdorenda.com^ -||inboldoreer.com^ -||inbornbird.pro^ -||inbornsodcharms.com^ -||inbowedkittled.top^ -||inbowedtroak.top^ -||inbrowserplay.com^ -||inbudewr.com^ -||incapableenormously.com^ -||incarnategrannystem.com^ -||incarnatepicturesque.com^ -||incaveprobeer.digital^ -||incentivefray.com^ -||incessanteffectmyth.com^ -||incessantfinishdedicated.com^ -||incessantvocabularydreary.com^ -||inchestverts.guru^ -||inchexplicitwindfall.com^ -||inchrepay.com^ -||incidentbunchludicrous.com^ -||incidentenglandtattoo.com^ -||inclineexchange.com^ -||inclineflaming.com^ -||inclk.com^ -||incloak.com^ -||incloseoverprotective.com^ -||includemodal.com^ -||includeoutgoingangry.com^ -||inclusacharmed.com^ -||incomebreatherpartner.com^ -||incomejumpycurtains.com^ -||incompatible-singer.pro^ -||incompatibleconfederatepsychological.com^ -||incompleteplacingmontleymontley.com^ -||incompleteshock.pro^ -||incompletethong.com^ -||incomprehensibleacrid.com^ -||incomptstress.uno^ -||inconsistencygasdifficult.com^ -||inconveniencemimic.com^ -||incorphishor.com^ -||increaseplanneddoubtful.com^ -||increaseprincipal.com^ -||increasevoluntaryhour.com^ -||increasingdeceased.com^ -||increasinglycockroachpolicy.com^ -||indebtedatrocious.com^ -||indefinitelytonsil.com^ -||indefinitelyunlikelyplease.com^ -||indeliblehang.pro^ -||indelicatecanvas.com^ -||indelicatepokedoes.com^ -||indelphoxom.com^ -||independencelunchtime.com^ -||indexeslaughter.com^ -||indexww.com^ -||indiansgenerosity.com^ -||indicatemellowlotion.com^ -||indicesvestigetruck.com^ -||indictmentlucidityof.com^ -||indictmentparliament.com^ -||indifferencemissile.com^ -||indigenousvarious.com^ -||indigenouswhoinformed.com^ -||indigestioninadmissible.com^ -||indigestionmarried.com^ -||indignationmapprohibited.com^ -||indignationstripesseal.com^ -||indirectbronzecompany.com^ -||indirectlinkoxbow.com^ -||indiscreetjobroutine.com^ -||indiscreetless.com^ -||indispensablerespectable.com^ -||indisputablegailyatrocity.com^ -||indisputableulteriorraspberry.com^ -||indney.com^ -||indodrioor.com^ -||indooritalian.com^ -||induceresistbrotherinlaw.com^ -||indulgeperformance.com^ -||indultorutty.click^ -||industrialforemanmovements.com^ -||industriouswounded.com^ -||inedibleendless.com^ -||inedibleproductiveunbelievable.com^ -||ineffectivebrieflyarchitect.com^ -||ineffectivenaive.com^ -||ineptsaw.com^ -||ineriweism.top^ -||inertimpuredeadlock.com^ -||inestimableloiteringextortion.com^ -||inevitablestanddisplayed.com^ -||inexorablehopper.com^ -||inexpedientdatagourmet.com^ -||inexperiencedmingle.com^ -||inexplicablecarelessfairly.com^ -||ineyvugpkej.com^ -||infamousprescribe.com^ -||infantrycutting.com^ -||infantrywarden.com^ -||infaustsecond.com^ -||infectedably.com^ -||infectedrepentearl.com^ -||infeofhobbit.com^ -||inferiorkate.com^ -||inferiorlove.com^ -||infesthazardous.com^ -||infestpaddle.com^ -||infestpunishment.com^ -||infindiasernment.com^ -||infinitelyrainmultiple.com^ -||infirmaryboss.com^ -||inflameemanent.cam^ -||inflateimpediment.com^ -||inflationabstinence.com^ -||inflationbreedinghoax.com^ -||inflationmileage.com^ -||inflectionhaughtyconcluded.com^ -||inflectionquake.com^ -||infles.com^ -||inflictgive.com^ -||inflictrind.com^ -||influencedbox.com^ -||influencedfable.com^ -||influencedsmell.com^ -||influencer2020.com^ -||influencesow.com^ -||influxtabloidkid.com^ -||influxtravellingpublicly.com^ -||infodonorbranch.com^ -||infonewsz.care^ -||infopicked.com^ -||informalequipment.pro^ -||informantbartonharass.com^ -||informationpenetrateconsidering.com^ -||informcheck.net^ -||informcheck.uno^ -||informedderiderollback.com^ -||informereng.com^ -||informeresapp.com^ -||infra.systems^ -||infractructurebiopsycircumstances.com^ -||infractructurelegislation.com^ -||infrashift.com^ -||infringementpeanut.com^ -||infringementseason.com^ -||ingablorkmetion.com^ -||ingasideline.com^ -||ingeniousestateinvolving.com^ -||ingentdurn.com^ -||ingforanythinga.com^ -||ingigalitha.com^ -||ingjymcmsqloxw.com^ -||inglunewly.com^ -||ingotedbooze.com^ -||ingotheremplo.info^ -||ingramony.com^ -||ingratitudemisty.com^ -||ingredientwritten.com^ -||ingseriegentsf.info^ -||ingsinspiringt.info^ -||inhabitantquestions.com^ -||inhabitantsherry.com^ -||inhabitkosha.com^ -||inhabitsensationdeadline.com^ -||inhabitsurpassvia.com^ -||inhabityoungenter.com^ -||inhalebrinkrush.com^ -||inhaleecstatic.com^ -||inhaletroubledgentle.com^ -||inheresunlying.guru^ -||inheretherme.com^ -||inheritancepillar.com^ -||inheritedgeneralrailroad.com^ -||inheritedgravysuspected.com^ -||inheritedunstable.com^ -||inheritedwren.com^ -||inhonedgean.com^ -||inhospitablebamboograduate.com^ -||inhospitablededucefairness.com^ -||inhumanswancondo.com^ -||initiallycoffee.com^ -||initiallycompetitionunderwear.com^ -||initiallydoze.com^ -||initiateadvancedhighlyinfo-program.info^ -||initiatebuffetstump.com^ -||initiateheavilycurrentinfo-product.info^ -||injectentreat.com^ -||injectlocum.com^ -||injectreunionshorter.com^ -||injuredjazz.com^ -||injuredripplegentleman.com^ -||injurg.com^ -||injuryglidejovial.com^ -||injurytomatoesputrefy.com^ -||inkestyle.net^ -||inkfeedmausoleum.com^ -||inkingleran.com^ -||inklikesearce.com^ -||inklinkor.com^ -||inkornesto.com^ -||inkstorulus.top^ -||inkstorylikeness.com^ -||inktad.com^ -||inlacedhageen.top^ -||inlandpiereel.com^ -||inlardbroigne.top^ -||inlugiar.com^ -||inmdcwkx.com^ -||inmespritr.com^ -||inmhh.com^ -||inminuner.com^ -||innardskhats.top^ -||innbyhqtltpivpg.xyz^ -||inncreasukedrev.info^ -||inneonan.com^ -||innity.net^ -||innocencescarcelymoreover.com^ -||innocencestrungdocumentation.com^ -||innocent154.fun^ -||innovationcomet.com^ -||innovationlizard.com^ -||inntentativeflame.com^ -||innyweakela.co^ -||inoculateconsessionconsessioneuropean.com^ -||inoffensivefitnessrancid.com^ -||inoradde.com^ -||inorseph.xyz^ -||inourdreamsa.org^ -||inpage-push.com^ -||inpage-push.net^ -||inpagepush.com^ -||inpoursmorinda.website^ -||inputbarbing.life^ -||inputsrameous.life^ -||inputunstable.com^ -||inputwriter.com^ -||inquiredcriticalprosecution.com^ -||inquiriesdishonest.com^ -||inquiryblue.com^ -||inquiryclank.com^ -||inrhyhorntor.com^ -||inrqqddrnqkk.xyz^ -||inrsfubuavjii.xyz^ -||insanityquietlyviolent.com^ -||inscriptionharm.com^ -||inscriptiontinkledecrepit.com^ -||insectearly.com^ -||insectsaw.com^ -||insectsmanners.com^ -||insecurepaint.pro^ -||insecuritydisproveballoon.com^ -||insensibleconjecturefirm.com^ -||insensitivedramaaudience.com^ -||insensitiveintegertransactions.com^ -||insertfend.com^ -||insertludicrousintimidating.com^ -||inservinea.com^ -||inshelmetan.com^ -||insideconnectionsprinting.com^ -||insideofnews.com^ -||insidious-glove.pro^ -||insightexpress.com^ -||insightexpressai.com^ -||insigit.com^ -||insignificantretained.com^ -||insistauthorities.com^ -||insistballisticclone.com^ -||insistent-worker.com^ -||insistinestimable.com^ -||insitepromotion.com^ -||insnative.com^ -||insolencemanipulative.com^ -||insolentviolation.com^ -||insomniacultural.com^ -||insomniadetrimentalneutral.com^ -||insouloxymel.com^ -||inspdywgexp.com^ -||inspectcol.com^ -||inspectmergersharpen.com^ -||inspectorstrongerpill.com^ -||inspikon.com^ -||inspirationstarednope.com^ -||inspiringperiods.com^ -||inspxtrc.com^ -||insrvicigquj.com^ -||insta-cash.net^ -||instaflrt.com^ -||install-adblockers.com^ -||install-adblocking.com^ -||install-check.com^ -||install-extension.com^ -||installationconsiderableunaccustomed.com^ -||installscolumnist.com^ -||installscrayfishpenal.com^ -||installslocalweep.com^ -||instalmentshowernovice.com^ -||instancesflushedslander.com^ -||instant-adblock.xyz^ -||instantdollarz.com^ -||instantlyallergic.com^ -||instantlyharmony.com^ -||instantlyshrillblink.com^ -||instantlyurged.com^ -||instantnewzz.com^ -||instantrefused.com^ -||instantresp.com^ -||instantshingle.com^ -||instaruptilt.com^ -||insteadprincipleshearted.com^ -||instinctiveads.com^ -||instinctivecooler.com^ -||instinctivetheeexemplify.com^ -||institutehopelessbeck.com^ -||instituteplump.com^ -||instopvials.com^ -||instraffic.com^ -||instructionluxuriant.com^ -||instructionwantsflew.com^ -||instructive-glass.com^ -||instructiveengine.pro^ -||instructoralphabetoverreact.com^ -||instructorconfoundstayed.com^ -||instructorloneliness.com^ -||instructoroccurrencebag.com^ -||instructscornfulshoes.com^ -||instrumenttactics.com^ -||insultingnoisysubjects.com^ -||insultoccupyamazed.com^ -||insultresignation.com^ -||insumber.com^ -||insurewaltz.com^ -||inswebt.com^ -||intcircue.digital^ -||intechads.com^ -||integralfashionable.com^ -||integralinstalledmoody.com^ -||integralpickleatrocious.com^ -||integrationproducerbeing.com^ -||integritydeceptive.com^ -||integrityprinciplesthorough.com^ -||intellectpunch.com^ -||intellectualhide.com^ -||intellectualintellect.com^ -||intellibanners.com^ -||intelligenceadx.com^ -||intelligenceconcerning.com^ -||intelligenceretarget.com^ -||intelligentcombined.com^ -||intellipopup.com^ -||intellitxt.com^ -||intelstqkt.com^ -||intendedeasiestlost.com^ -||intendedoutput.com^ -||intendrebend.top^ -||intentanalysis.com^ -||intentbinary.com^ -||intentionalbeggar.com^ -||intentionallyathwart.com^ -||intentionsarson.com^ -||intentionscommunity.com^ -||intentionscurved.com^ -||intentionsplacingextraordinary.com^ -||inter1ads.com^ -||interads1.com^ -||interbasevideopregnant.com^ -||interbuzznews.com^ -||interclics.com^ -||interd1.com^ -||interdependentpredestine.com^ -||interdfp.com^ -||interestalonginsensitive.com^ -||interestededit.com^ -||interestingvids.space^ -||interestmoments.com^ -||interestsubsidereason.com^ -||interfacemotleyharden.com^ -||interference350.fun^ -||interfereparagraphinterrogate.com^ -||interferepenetrate.com^ -||intergient.com^ -||interimmemory.com^ -||interiorchalk.com^ -||intermediarymarkswe.com^ -||intermediatebelownomad.com^ -||intermediatelattice.com^ -||internalemotionincomprehensible.com^ -||internalpound.com^ -||internewsweb.com^ -||internodeid.com^ -||interpersonalskillse.info^ -||interposedflickhip.com^ -||interpretprogrammesmap.com^ -||interrogationpeepchat.com^ -||interruptionapartswiftly.com^ -||inters1img.com^ -||intersads.com^ -||intersd2k.com^ -||intersectionboth.com^ -||intersectiondejectedfaraway.com^ -||intersectionweigh.com^ -||interstateflannelsideway.com^ -||interstitial-07.com^ -||interstitial-08.com^ -||intervention304.fun^ -||interviewabonnement.com^ -||interviewearnestlyseized.com^ -||interviewidiomantidote.com^ -||interviewsore.com^ -||inticebolls.top^ -||intimacyextinct.com^ -||intimatestraightharrow.com^ -||intimg1k.com^ -||intimidatekerneljames.com^ -||intimidatingsinewhamper.com^ -||intnative.com^ -||intnotif.club^ -||intorterraon.com^ -||intothespirits.com^ -||intrafic22.com^ -||intriguingsuede.com^ -||intrinechymous.com^ -||intro4ads.com^ -||introphin.com^ -||intruderalreadypromising.com^ -||intrusgride.com^ -||intrustedzone.site^ -||intuitionguffaw.com^ -||intuitiontrenchproduces.com^ -||inuedidgmapla.com^ -||inulaserenegue.top^ -||inumbreonr.com^ -||inupnae.com^ -||inurneddoggish.com^ -||invadedwormmillionaire.com^ -||invaderimmenseimplication.com^ -||invaluablebuildroam.com^ -||invariablyunpredictable.com^ -||invass.com^ -||invast.site^ -||inventdebosh.com^ -||inventionallocatewall.com^ -||inventionwere.com^ -||inventorypikepockets.com^ -||inventoryproducedjustice.com^ -||invertangareb.top^ -||investcoma.com^ -||investigationsuperbprone.com^ -||investmentstar.org^ -||investorequalityfrog.com^ -||invibravaa.com^ -||invisiblepine.com^ -||invitearrange.com^ -||invitewingorphan.com^ -||involuntarypity.com^ -||involuntarysteadyartsy.com^ -||involveddone.com^ -||involvingsorrowful.com^ -||invordones.com^ -||invplpghc.com^ -||invraisemblable.com^ -||inwardinjustice.com^ -||inwrapsabina.top^ -||inwraptsekane.com^ -||ioaalobqpc.com^ -||ioadserve.com^ -||iociley.com^ -||iodideeyebath.cam^ -||iodidindued.top^ -||iodinedulylisten.com^ -||iodineshine.com^ -||ioffers.icu^ -||iogjhbnoypg.com^ -||ioiefyw.com^ -||ioiubby73b1n.com^ -||iokqtntsuwshtjh.com^ -||ionakasulba.xyz^ -||ioniamcurr.info^ -||ionigravida.com^ -||ioniserpinones.com^ -||ionisesproclei.top^ -||ionismscoldn.info^ -||ionistkhaya.website^ -||ioniumentomic.com^ -||iononetravoy.com^ -||ionscormationwind.info^ -||ionwindonpetropic.info^ -||iopiopiop.net^ -||iopiopiop.org^ -||ioredi.com^ -||iornsfyhueev.com^ -||iorwe-qmf.com^ -||iosqmookf.com^ -||iovia-pmj.com^ -||iovxhfavijyu.com^ -||ioxffew.com^ -||ipales.com^ -||ipcejez.com^ -||ipecacdecime.uno^ -||ipecacsafely.uno^ -||ipgbcmfagij.com^ -||iphaigra.xyz^ -||iphumiki.com^ -||ipjouefgjog.com^ -||ipkqfkzsmme.com^ -||ipmathematical.org^ -||ipmzpxne.com^ -||ipnkkmxo.com^ -||ipodreevess.com^ -||ipomeamiching.com^ -||ippleshiswashis.info^ -||ipredictive.com^ -||iprom.net^ -||ipromcloud.com^ -||iprpldsefjq.com^ -||ipsowrite.com^ -||ipsvptuxn.com^ -||iptautup.com^ -||ipurseeh.xyz^ -||ipzolkgn.com^ -||iqcjuetaudtj.com^ -||iqfmvj.com^ -||iqimwsctvgbvqx.xyz^ -||iqkjrwf.com^ -||iqlpkca.com^ -||iqmlcia.com^ -||iqnevmje.com^ -||iqpkee.com^ -||iqtest365.online^ -||iqxsncsregcxu.xyz^ -||iqxuuski.com^ -||iranicoloner.top^ -||irbtwjy.com^ -||ircwzvpei.com^ -||iredirect.net^ -||iresandal.info^ -||irgvfdwicqerqfy.com^ -||irhpzbrnoyf.com^ -||iridizemohegan.com^ -||irisaffectioneducate.com^ -||irishormone.com^ -||irishorridamount.com^ -||irisingjonquil.life^ -||irizin.com^ -||irkantyip.com^ -||irkerecue.com^ -||irkilgw.com^ -||irksomefiery.com^ -||irmmamksywbwt.com^ -||irmyoexrjcb.xyz^ -||ironboe.com^ -||ironcladtrouble.com^ -||irondai.com^ -||ironena.com^ -||ironicaldried.com^ -||ironicnickraspberry.com^ -||ironjou.com^ -||ironmis.com^ -||ironthro5man.com^ -||ironymisterdisk.com^ -||irousbisayan.com^ -||irousspreeuw.life^ -||irradiateher.com^ -||irradiatestartle.com^ -||irrain.com^ -||irrationalcontagiousbean.com^ -||irrationalsternstormy.com^ -||irregularstripes.com^ -||irresistiblecommotion.com^ -||irries.com^ -||irritableironymeltdown.com^ -||irritablepopcornwanderer.com^ -||irritateinformantmeddle.com^ -||irritationcrayonchord.com^ -||irritationunderage.com^ -||irsnylnjgcfytxq.com^ -||irtya.com^ -||irtyf.com^ -||irvato.com^ -||irvingreeds.com^ -||isaacsolanum.top^ -||isabellahopepancake.com^ -||isawthenews.com^ -||isbnrs.com^ -||isbnyzpunkx.com^ -||isboost.co.jp^ -||iseatheadline.com^ -||isegeowrvnxorj.com^ -||iseoiknnqckto.xyz^ -||isgost.com^ -||ishaweewouta.com^ -||ishibeesoany.com^ -||ishoapty.net^ -||ishoawew.net^ -||ishousumo.com^ -||isingtolstoy.top^ -||isiyyhghu.com^ -||isjratdcaanm.com^ -||islandgeneric.com^ -||islandracistreleased.com^ -||islerobserpent.com^ -||ismlks.com^ -||ismscoldnesfspl.info^ -||isoamidlaicism.com^ -||isobaresoffit.com^ -||isobelheartburntips.com^ -||isobelincidentally.com^ -||isogenylingel.guru^ -||isohits.com^ -||isolatedransom.com^ -||isolationoranges.com^ -||isomeremankin.top^ -||isortflorent.com^ -||isparkmedia.com^ -||issomeoneinth.info^ -||issuedindiscreetcounsel.com^ -||istlnkbn.com^ -||istoanaugrub.xyz^ -||istsldaheh.com^ -||isuqbqvxhj.com^ -||isvnwxpoqgsgyy.com^ -||iswhatappyouneed.net^ -||isymybwvzl.com^ -||isywjrtn.com^ -||itaisabirs.com^ -||italianexpecting.com^ -||italianextended.com^ -||italianforesee.com^ -||italianhackwary.com^ -||italianout.com^ -||italicssifting.top^ -||italicunsolar.top^ -||italyfeedingclimax.com^ -||itavtfut.com^ -||itblisseyer.com^ -||itcameruptr.com^ -||itchhandwritingimpetuous.com^ -||itchinglikely.com^ -||itchingselfless.com^ -||itchydesignate.com^ -||itchytidying.com^ -||itcleffaom.com^ -||itczebimbos.com^ -||itdise.info^ -||itemolgaer.com^ -||itemperrycreek.com^ -||iteneanrhina.com^ -||itespurrom.com^ -||itgiblean.com^ -||itguvmlnyhfa.com^ -||itheatmora.com^ -||itheatmoran.com^ -||ithoughtsustache.info^ -||itineraryborn.com^ -||itinerarymonarchy.com^ -||itineraryupper.com^ -||itlitleoan.com^ -||itmamoswineer.com^ -||itnijtcvjb.xyz^ -||itnuzleafan.com^ -||itpatratr.com^ -||itphanpytor.club^ -||itponytaa.com^ -||itpqdzs.com^ -||itrigra.ru^ -||itroggenrolaa.com^ -||itrustzone.site^ -||itseedotor.com^ -||itselfheater.com^ -||itselforder.com^ -||itskiddien.club^ -||itskiddoan.club^ -||itsparedhonor.com^ -||itsvfputpvsqnb.com^ -||itswabluon.com^ -||ittontrinevengre.info^ -||ittorchicer.com^ -||ittoxicroakon.club^ -||itukydteamwouk.com^ -||itundermineoperative.com^ -||itupjhlxjyxacl.com^ -||itupnjqqjbxxqt.com^ -||itvalleynews.com^ -||itvwnehwnxkdld.com^ -||itweedler.com^ -||itweepinbelltor.com^ -||itwkuouldhuke.info^ -||itwoheflewround.info^ -||ityonatallco.info^ -||itzekromom.com^ -||iuc1.online^ -||iuc1.space^ -||iudgoufuvzjf.com^ -||iunnrqcmup.com^ -||iuodgmcfaa.com^ -||iupot.com^ -||iusxjykqehwdx.com^ -||iutur-ixp.com^ -||iuvbjnzy.com^ -||iuwzdf.com^ -||ivanvillager.com^ -||ivedmanyyea.org^ -||ivesofefinegold.info^ -||ivfvfosaes.xyz^ -||ivhbtikwpr.com^ -||ivmmkvzic.com^ -||ivoryvestigeminus.com^ -||ivstracker.net^ -||ivurtdymntb.com^ -||ivvedcoh.com^ -||ivvyusvh.com^ -||ivycarryingpillar.com^ -||ivyrethink.com^ -||iwantuonly.com^ -||iwantusingle.com^ -||iwaxurhebkn.com^ -||iwdapjojrylh.xyz^ -||iwevxujxzdpb.com^ -||iwhejirurage.com^ -||iwhlzcevugtqy.com^ -||iwhngteekjixo.com^ -||iwhoosty.com^ -||iwjbybnaitog.com^ -||iwjerwaxjblelve.com^ -||iwkeoxtaoi.com^ -||iwmqbimuaibsvr.com^ -||iwoiclbfxkxgd.com^ -||iwouhoft.com^ -||iwpswvi.com^ -||iwqensejhdzfq.com^ -||iwrkhphl.xyz^ -||iwrvrbklotfp.xyz^ -||iwuh.org^ -||iwwdcglj.com^ -||iwxtbaoqgcxfdd.xyz^ -||iwyrldaeiyv.com^ -||ixafr.com^ -||ixbwwwv.com^ -||ixhbroslylgz.com^ -||ixhvdktusdklt.xyz^ -||ixihxnnkewc.com^ -||ixinst.com^ -||ixkhaxpubqf.com^ -||ixkofjcwzlz.com^ -||ixnow.xyz^ -||ixnp.com^ -||ixqthii.com^ -||ixtlesamorist.guru^ -||ixtqrdiwd.com^ -||ixwereksbeforeb.info^ -||ixwloxw.com^ -||ixxljgh.com^ -||iy8yhpmgrcpwkcvh.pro^ -||iyaixmbpaqc.com^ -||iybulnmpgpodbxc.com^ -||iydppgpcz.com^ -||iyegcbpabushtco.com^ -||iyfbodn.com^ -||iyfnz.com^ -||iyfnzgb.com^ -||iymbywma.com^ -||iyolnstplmxae.com^ -||iyqaosd.com^ -||iyyuvkd.com^ -||izanzjtuvpp.com^ -||izapteensuls.com^ -||izavugne.com^ -||izbmbmt.com^ -||izitrckr.com^ -||izjzkye.com^ -||izlunwgx.com^ -||izlutev.com^ -||izlzunewumqgg.com^ -||izprqctxde.com^ -||izrnvo.com^ -||izrvuofcrrhsm.com^ -||izzzlfrzmwtter.com^ -||j45.webringporn.com^ -||j4a73n7v5k.com^ -||j6mn99mr0m2n.com^ -||j6rudlybdy.com^ -||j8ff09dbyo.com^ -||ja2n2u30a6rgyd.com^ -||jaadms.com^ -||jaaraypdsr.xyz^ -||jaavnacsdw.com^ -||jackalvindictive.com^ -||jackao.net^ -||jacketexpedient.com^ -||jacketzerobelieved.com^ -||jackpotbeautifulsulky.com^ -||jackpotcollation.com^ -||jackpotcontribute.com^ -||jackpotpresents.com^ -||jacksonduct.com^ -||jacksonours.com^ -||jacksontyramin.com^ -||jaclottens.live^ -||jacmolta.com^ -||jacqsojijukj.xyz^ -||jacsmuvkymw.com^ -||jactantsplodgy.com^ -||jadcenter.com^ -||jadedhide.pro^ -||jadqoc.xyz^ -||jads.co^ -||jaftouja.net^ -||jafzkymimxz.com^ -||jaggedshoebruised.com^ -||jaggedthronelaxative.com^ -||jaggedunaccustomeddime.com^ -||jaggiertridii.com^ -||jagice.uno^ -||jagnoans.com^ -||jagqrhvcvoqjw.com^ -||jaifeeveely.com^ -||jaigaivi.xyz^ -||jainapse.com^ -||jainbagong.com^ -||jainecizous.xyz^ -||jaipheeph.com^ -||jajrlsaiboswdab.xyz^ -||jakescribble.com^ -||jakeycorkage.digital^ -||jakosoafdom.shop^ -||jalapamaro.com^ -||jaletemetia.com^ -||jalewaads.com^ -||jalwhftxnl.com^ -||jamchew.com^ -||jame3s67jo9yc4e.com^ -||jamminds.com^ -||jamokeuntress.com^ -||jamstech.store^ -||janapancoroun.top^ -||jandaqwe.com^ -||jangiddywashed.com^ -||jangleachy.com^ -||jangleccoya.com^ -||jangonetwork.com^ -||janitoraccrue.com^ -||janitorhalfchronicle.com^ -||janokroo.net^ -||januarydeliverywarfare.com^ -||januaryprinter.com^ -||januarysundayurgently.com^ -||janzmuarcst.com^ -||japanbros.com^ -||japw.cloud^ -||jaqgkyfupna.com^ -||jaqwtyajwp.com^ -||jargonwillinglybetrayal.com^ -||jarguvie.xyz^ -||jarldomtemplar.top^ -||jarsools.xyz^ -||jarteerteen.com^ -||jarvispopsu.com^ -||jashautchord.com^ -||jasheest.xyz^ -||jaspercrozes.com^ -||jassidpanne.com^ -||jatdticl.com^ -||jatfugios.com^ -||jatomayfair.life^ -||jatosbathkol.com^ -||jatsekse.net^ -||jattepush.com^ -||jaubaibil.com^ -||jaubeebe.net^ -||jauchube.com^ -||jauchuwa.net^ -||jaudoaty.com^ -||jaufwxqg.com^ -||jaumevie.com^ -||jaundergemmule.top^ -||jaunty-cancel.pro^ -||jauntycrystal.com^ -||jaupozup.xyz^ -||jaurouth.xyz^ -||java8.xyz^ -||javacid.fun^ -||javascriptcdnlive.com^ -||javgg.eu^ -||javmust.fun^ -||jawinfallible.com^ -||jawlookingchapter.com^ -||jawsspecific.com^ -||jaxxenpro.com^ -||jazzlowness.com^ -||jazzmoist.com^ -||jazzspeechlessarena.com^ -||jbaqavqrkoroz.top^ -||jbbyyryezqbwj.top^ -||jbirahiifj.com^ -||jbm6c54upkui.com^ -||jbnmppupawyil.com^ -||jbnznvnylnkyr.top^ -||jbnznvnylnyjl.top^ -||jbrlsr.com^ -||jbrnmlmvnakej.top^ -||jbrnmlmvnazey.top^ -||jbrnmlmweaarl.top^ -||jbrpciuloi.com^ -||jbtul.com^ -||jbtwyppdfppmgq.com^ -||jbvoejzamqokq.top^ -||jbvoejzamqzkb.top^ -||jbwiujl.com^ -||jbzmwqmqwoaez.top^ -||jbzmwqmqwojjl.top^ -||jbzmwqmqwojlw.top^ -||jbzmwqmqwokkq.top^ -||jc32arlvqpv8.com^ -||jcdudokp.com^ -||jcedzifarqa.com^ -||jchklt.com^ -||jcigoiimudrzow.com^ -||jcovfmnlolsdsaa.com^ -||jcpcfopwcae.com^ -||jcqueawk.xyz^ -||jcqvfuztbvryk.com^ -||jcrnbnw.com^ -||jcufklto.com -||jcvasagimxyzd.com^ -||jcviltucsmowx.com^ -||jczhjpollvc.com^ -||jd3j7g5z1fqs.com^ -||jdbavspkhxqw.com^ -||jdhgswknl.com^ -||jdhpfnfc.com^ -||jdjxjelhrxy.com^ -||jdkmbvbyy.com^ -||jdlmjessy.com^ -||jdnveiwl.com^ -||jdoeknc.com^ -||jdoguxtbovjngbg.com^ -||jdoqocy.com^ -||jdspvwgxbtcgkd.xyz^ -||jdt8.net^ -||jdwaegarlqjw.com^ -||jdwhlqb.com^ -||jdxisgqcg.com^ -||jdxpaoojg.com^ -||jdygobphcbh.com^ -||jdzqdcpkbh.com^ -||jealouschallenge.pro^ -||jealousyingeniouspaths.com^ -||jealousyscreamrepaired.com^ -||jeannenoises.com^ -||jeannesurvival.com^ -||jeannezenith.com^ -||jeannvalmvwza.top^ -||jeanspurrcleopatra.com^ -||jechusou.com^ -||jeckear.com^ -||jecoglegru.com^ -||jecromaha.info^ -||jeczxxq.com^ -||jedotsad.xyz^ -||jedrixurykpjl.com^ -||jeehathu.com^ -||jeejeetauz.com^ -||jeejujou.net^ -||jeekomih.com^ -||jeelmuyusa.com^ -||jeephiney.net^ -||jeerinfluencemedical.com^ -||jeerouse.xyz^ -||jeersoddisprove.com^ -||jeeryounger.com^ -||jeeryzest.com^ -||jeeteo.com^ -||jeethaju.net^ -||jeetyetmedia.com^ -||jeewhaituph.net^ -||jefweev.com^ -||jeghosso.net^ -||jehobsee.com^ -||jekesjzv.com^ -||jekzyyowqwmwl.top^ -||jekzyyowqwwrz.top^ -||jekzyyowqwwwy.top^ -||jelliescroon.click^ -||jellifygummier.top^ -||jelllearnedhungry.com^ -||jellyhelpless.com^ -||jellyhopeless.com^ -||jellyprehistoricpersevere.com^ -||jelokeryevezw.top^ -||jelqr4dqeep7.com^ -||jemonews.com^ -||jenkincraved.com^ -||jennyunfit.com^ -||jennyvisits.com^ -||jenonaw.com^ -||jenwyrjbvvlrl.top^ -||jeoawamjbbelw.top^ -||jeoawamjbblkq.top^ -||jeoawamjbrvkb.top^ -||jeopardizegovernor.com^ -||jeopardycruel.com^ -||jeopardyselfservice.com^ -||jeperdee.net^ -||jeqjawqoeraab.top^ -||jergocast.com^ -||jerimpob.net^ -||jerkarmlesspuppy.com^ -||jerkisle.com^ -||jerkytaste.com^ -||jeroud.com^ -||jerusalemcurve.com^ -||jerusalemstatedstill.com^ -||jerust.com^ -||jervinglycyls.com^ -||jesaifie.com^ -||jessamyimprovementdepression.com^ -||jestbiases.com^ -||jestinquire.com^ -||jestinvaderspeedometer.com^ -||jestthankfulcaption.com^ -||jesulf.com^ -||jesupe.com^ -||jetordinarilysouvenirs.com^ -||jetpgnebpwm.com^ -||jetsdulce.com^ -||jetseparation.com^ -||jettrucaprate.top^ -||jettrujole.com^ -||jetx.info^ -||jewelbeeperinflection.com^ -||jewelcampaign.com^ -||jewelstastesrecovery.com^ -||jewgn8une.com^ -||jewhouca.net^ -||jewlhtrutgomh.com^ -||jewscane.digital^ -||jewspa.com^ -||jezailmasking.com^ -||jf71qh5v14.com^ -||jfbrkbgvxwib.com^ -||jfcclfaiawiga.com^ -||jfdjrmyzkck.com^ -||jfdmdpefk.com^ -||jfdvjpksdqhdhjo.com^ -||jfedgbskofck.com^ -||jfixhuovpa.com^ -||jfjle4g5l.com^ -||jfjlfah.com^ -||jfjnyepxppqb.com^ -||jfjpgufkaecvs.com^ -||jfkc5pwa.world^ -||jfknowifcewd.com^ -||jfmbkffcxg.com^ -||jfnjgiq.com^ -||jfoaxwbatlic.com^ -||jfoowqditdf.com^ -||jfplldsdrafavw.com^ -||jfsocqmvvqt.com^ -||jfssblglhreubu.com^ -||jfthhbvpryrvbs.com^ -||jfvoewyifwed.com^ -||jfzernkwdqgxn.com^ -||jgbggrtrofiw.com^ -||jgdipcsviur.com^ -||jgdtnxkapkso.com^ -||jgfcgqivdpd.com^ -||jggegj-rtbix.top^ -||jggldfvx.com^ -||jghjhtz.com^ -||jgpvgjtldgocob.com^ -||jgqflgggex.com^ -||jgrjldc.com^ -||jgszymcphwcege.com^ -||jgxavkopotthxj.xyz^ -||jgydqhp.com^ -||jhevhckrxoivig.com^ -||jhfhdkhkh.site^ -||jhiekkjeyyfbj.com^ -||jhkfd.com^ -||jhrfemourkojc.com^ -||jhtiyfioidhvl.com^ -||jhulubwidas.com^ -||jhwo.info^ -||jhxqfgbj.com^ -||jibaeolia.com^ -||jickodsa.com^ -||jiclzori.com^ -||jieaxwgwnydl.com^ -||jigdigtry.com^ -||jigffltdbcdjq.com^ -||jighucme.com^ -||jignairy.com^ -||jigsawchristianlive.com^ -||jigsawthirsty.com^ -||jiiglogwdkcqwou.xyz^ -||jijhkclur.com^ -||jikbwoozvci.com^ -||jikicotho.pro^ -||jikvcrikdvng.com^ -||jikzudkkispi.com^ -||jillbuildertuck.com^ -||jimpysinters.top^ -||jimzryxbsgjs.com^ -||jingalbundles.com^ -||jingbaiteether.top^ -||jingenfirm.com^ -||jinglehalfbakedparticle.com^ -||jinguisiacal.top^ -||jinjililanius.top^ -||jinterests-1.com^ -||jiokhvnqchnt.com^ -||jipsegoasho.com^ -||jiqeni.xyz^ -||jiqiv.com^ -||jirtesee.net^ -||jissingirgoa.com^ -||jitanvlw.com^ -||jitigkvqf.com^ -||jiuswcpdwgpwetf.com^ -||jivinggrazers.com^ -||jiwire.com^ -||jizzarchives.com^ -||jizzensirrah.com^ -||jjaaybqjbnzny.top^ -||jjahvmjatfpj.com^ -||jjansomvfv.com^ -||jjcwq.site^ -||jjkwrqjklaaqa.top^ -||jjmxksqyfagljmg.com^ -||jjobuyratjc.com^ -||jjolbaew.com^ -||jjpgbisdg.xyz^ -||jjqbvqoyo.com^ -||jjqsdll.com^ -||jjrhriavdyyp.com^ -||jjrqnvrejmwna.top^ -||jjrvlrslb.com^ -||jjsocpeg.com^ -||jjthmis.com^ -||jjtnadbcbovqarv.xyz^ -||jjtsuxoln.com^ -||jjvafukltxk.com^ -||jjwmlaynwwbll.top^ -||jjwmlaynwwjlw.top^ -||jjwmlayqvweej.top^ -||jjygptw.com^ -||jk4lmrf2.de^ -||jkajyrkbvzmez.top^ -||jkajyrkjmzmkz.top^ -||jkamuaiofpapwl.com^ -||jkbewmezjawqj.top^ -||jkdzimao.com^ -||jkha742.xyz^ -||jklpy.com^ -||jkls.life^ -||jkthlsrdhni.com^ -||jkwxaryiaoof.com^ -||jkyawbabvrjl.top^ -||jkyybewqmnll.top^ -||jkzakzalzoewy.top^ -||jkzakzjwyolbl.top^ -||jkzlillsss.com^ -||jlbgyksbvdqj.com^ -||jlcvoastmbsk.com^ -||jldbnjghezv.com^ -||jlegmmdcoo.com^ -||jlfqyjbkea.com^ -||jlhchjsy.com^ -||jljejxvgnk.com^ -||jljrllijyuoinx.com^ -||jlmokzndbiafs.com^ -||jlmprtgl.com^ -||jlodgings.com^ -||jlqpttawdpkh.com^ -||jlqtmeoipnib.com^ -||jlsohnennmmygvc.com^ -||jltjgujdnyp.com^ -||jlufbcef.com^ -||jlxmuvjltnqttj.com^ -||jlyyvpvnigpi.xyz^ -||jmaomkosxfi.com^ -||jmbluyxkl.xyz^ -||jmeeersdkmoir.xyz^ -||jmghfyieixqw.com^ -||jmiqbfhoar.com^ -||jmmpzzrnmsdwsh.com^ -||jmopproojsc.xyz^ -||jmpmedia.club^ -||jmqrogtmvfo.com^ -||jmrnews.pro^ -||jmt7mbwce.com^ -||jmtbmqchgpw.xyz^ -||jmtbyiohpgugcsk.com^ -||jmvscgd.com^ -||jmxiwcjx.com^ -||jnaixbgd.com^ -||jnhjpdayvpzj.com^ -||jnlldyq.com^ -||jnnbzmyqaekzj.top^ -||jnnjthg.com^ -||jnovoksjreeyrpm.xyz^ -||jnqkvgkm.com^ -||jnrgcwf.com^ -||jnrtavp2x66u.com^ -||jnsgdaqsiqcumg.xyz^ -||jnxm2.com^ -||joachoag.xyz^ -||joaglouwulin.com^ -||joannaiodisms.com^ -||joanneehretia.com^ -||joaphoad.com^ -||joaqaylueycfqw.xyz^ -||joasoagly.com^ -||joastaca.com^ -||joastoom.xyz^ -||joastoopsu.xyz^ -||joastous.com^ -||joathaji.xyz^ -||joathath.com^ -||jobfilletfortitude.com^ -||jobleveled.top^ -||joblouder.com^ -||jobmkewrymmvb.top^ -||jobmkewrymvbw.top^ -||jobsngeilvxm.com^ -||jobsonationsing.com^ -||jobsyndicate.com^ -||jocauzee.net^ -||jocelynrace.com^ -||jocmeedran.com^ -||jodhpurrarish.digital^ -||jodl.cloud^ -||jodroacm.com^ -||joemythsomething.com^ -||joereisp.xyz^ -||jogcu.com^ -||jogdied.com^ -||joggingavenge.com^ -||jogytuuey.com^ -||johamp.com^ -||johannesburg.top^ -||join-admaven.com^ -||joinelegancetitanic.com^ -||joiningcriminal.com^ -||joiningindulgeyawn.com^ -||joiningslogan.com^ -||joiningwon.com^ -||joinpropeller.com^ -||joinsportsnow.com^ -||joint-bad.com^ -||jointmixture.pro^ -||jokcnycabhdvbwg.com^ -||jokingzealotgossipy.com^ -||jolecyclist.com^ -||jollyfloat.com^ -||jollykeg.com^ -||jollyslendersquare.com^ -||joltidiotichighest.com^ -||joltperforming.com^ -||joluw.net^ -||jomtingi.net^ -||jonaspair.com^ -||jonaswhiskeyheartbeat.com^ -||joodoush.com^ -||joodugropup.com^ -||joogivestou.com^ -||joograika.xyz^ -||jookaureate.com^ -||jookouky.net^ -||joomgartiumnyih.com^ -||joomxer.fun^ -||joopaish.com^ -||jooptibi.net^ -||joorekbelrlaz.top^ -||joorekbelyvjw.top^ -||jootizud.net^ -||joowkijejv.com^ -||joqowqyaayqmz.top^ -||jorbfstarn.com^ -||jorttiuyng.com^ -||josephineravine.com^ -||josfrvq.com^ -||josiebreathing.com^ -||josiehopeless.com^ -||josieunethical.com^ -||jotqmmf.com^ -||jotskuffieh.website^ -||jotterswirrah.com^ -||jouaboe.com^ -||joudotee.com^ -||joukaglie.com^ -||joukidles.life^ -||joupteni.xyz^ -||journeyembankmentsubjects.com^ -||jourohun.xyz^ -||jouteetu.net^ -||jouthee.com^ -||jouzoapi.com^ -||jovialwoman.com^ -||jovqyyqvvmjjj.top^ -||jowelcabbala.com^ -||jowliercollude.com^ -||jowlishdiviner.com^ -||jowvwrmccakiy.com^ -||joxaviri.com^ -||joycreatorheader.com^ -||joydirtinessremark.com^ -||joyfulassistant.pro^ -||joyfulfearsome.com^ -||joygaskin.com^ -||joyorators.website^ -||joyous-concentrate.pro^ -||joyous-north.pro^ -||joyous-sensitive.com^ -||joyous-storage.pro^ -||joyouscreedweasel.com^ -||joyousruthwest.com^ -||joyrodethrock.top^ -||jozvmvxi.com^ -||jpbfwdtejwoewas.xyz^ -||jpdqpxoenctqbl.com^ -||jpeoldex.com^ -||jpgtrk.com^ -||jpilttrvnv.com^ -||jpmldwvjqd.xyz^ -||jpsthqhvxynfdx.com^ -||jpzvrsuwdavpjw.com^ -||jqafetxoermhue.com^ -||jqcyacoxrvada.com^ -||jqdfehrixzyb.com^ -||jqgqrsvcaos.xyz^ -||jqitetsk.com^ -||jqlqmeveax.com^ -||jqluhrwlfwsgdd.com^ -||jqlumzbdtet.com^ -||jqmebwvmbzrz.top^ -||jqmebwvmbzwy.top^ -||jqmsnhyhrd.com^ -||jqrnumajtqx.com^ -||jqtnbitlqxidh.com^ -||jqtree.com^ -||jquerycdn.host^ -||jqueryoi.com^ -||jqueryserve.org^ -||jqueryserver.com^ -||jqwsldso.com^ -||jrbbavbmwmleb.top^ -||jrbbavbmwqwjl.top^ -||jrfwfwk.com^ -||jrhsjmwtrwiam.com^ -||jrilbcd.com^ -||jrilkvjehrjlri.com^ -||jriravntivf.com^ -||jrkkcssob.com^ -||jrkkmpeqtlsawgf.com^ -||jrlxrrwgcszo.com^ -||jrofvedr.xyz^ -||jrolyrlkjyeqw.top^ -||jrpkizae.com^ -||jrqmkrggfwd.xyz^ -||jrqwfdkksamx.com^ -||jrrryblqkavqa.top^ -||jrsmnddakpce.com^ -||jrtbjai.com^ -||jrtqaliyucgpaes.com^ -||jrvrkzrbkqaoz.top^ -||jrvrkzrbkqqob.top^ -||jrvrkzrbkqqqj.top^ -||jryymvudjqlraa.com^ -||jrzeiotwaq.com^ -||js-check.com^ -||js.j8jp.com^ -||js.manga1000.top^ -||js2json.com^ -||js7k.com^ -||jsadapi.com^ -||jscdn.online^ -||jscloud.org^ -||jscount.com^ -||jsdelvr.com^ -||jsefrmwji.com^ -||jseuprrsedc.com^ -||jsfeedadsget.com^ -||jsfir.cyou^ -||jsfrfeuubna.com^ -||jsftfmegwcyhsed.com^ -||jsftzha.com^ -||jsfuz.com^ -||jsgmsoapx.com^ -||jsmcrpu.com^ -||jsmcrt.com^ -||jsmentry.com^ -||jsmjmp.com^ -||jsmpsi.com^ -||jsmpus.com^ -||jsnncgz.com^ -||jsontdsexit.com^ -||jsontdsexit2.com^ -||jsretra.com^ -||jssearch.net^ -||jssiiamvbuqqkb.com^ -||jssufsqeisye.com^ -||jstclphsy.com^ -||jsukefgwjvbsue.com^ -||jswww.net^ -||jsyrynq.com^ -||jtdqxsfzi.com^ -||jtdujjsk.com^ -||jtfqyewsaflnp.com^ -||jtiqpdqofdlwam.com^ -||jtjtqar.com^ -||jtolkiamnax.com^ -||jtpgjihhix.com^ -||jtthvswmc.com^ -||jttowoxlomde.com^ -||jtwlvpux.com^ -||ju427bv7an9n.com^ -||juaqmic.com^ -||jubileeirresponsibilityforfeit.com^ -||jubnaadserve.com^ -||jubsaugn.com^ -||jubsouth.com^ -||juchartintime.space^ -||jucysh.com^ -||juddockvisages.com^ -||judgementcleftlocksmith.com^ -||judgementhavocexcitement.com^ -||judgmentpolitycheerless.com^ -||judicated.com^ -||judicialfizzysoftball.com^ -||judicialleadingquiz.com^ -||judicious-lay.pro^ -||judied.com^ -||judium.com^ -||judjetheminos.com^ -||judosllyn.com^ -||judruwough.com^ -||jufjpwpmcc.com^ -||jugerfowells.com^ -||juggleeducationfirearm.com^ -||jugnepha.xyz^ -||jugsmithecology.com^ -||juhece.uno^ -||juhlkuu.com^ -||juiceadv.com^ -||juiceadv.net^ -||juicyads.me^ -||juicycash.net^ -||juiseforced.com^ -||jujitsutuxedos.top^ -||jukseeng.net^ -||jukulree.xyz^ -||julbhzbwhcivj.com^ -||julia-liz.com^ -||jullyambery.net^ -||julolecalve.website^ -||julrdr.com^ -||julymedian2022news.com^ -||julynut.com^ -||julyouncecat.com^ -||jumbalslunched.com^ -||jumbln.com^ -||jumboaffiliates.com^ -||jumkiyhjx.xyz^ -||jummashpt.com^ -||jump-path1.com^ -||jumpedanxious.com^ -||jumperdivecourtroom.com^ -||jumperformalityexhausted.com^ -||jumperfundingjog.com^ -||jumptap.com^ -||junckafa.top^ -||jungianoxamide.space^ -||junglehikingfence.com^ -||juniorapplesconsonant.com^ -||juniorluteum.top^ -||junipe3rus4virginiana.com^ -||junivmr.com^ -||junkeach.com^ -||junkieenthusiasm.com^ -||junkieswudge.com^ -||junkmenpolt.com^ -||junkmildredsuffering.com^ -||junmediadirect.com^ -||junmediadirect1.com^ -||junotherome.com^ -||juntfemoral.com^ -||juntre.com^ -||junverwkpnl.com^ -||jupabwmocgqxeo.com^ -||juratoroutsees.uno^ -||jurced.com^ -||juricts.xyz^ -||jurorstalar.uno^ -||jursoateed.com^ -||jursp.com^ -||jurtaith.net^ -||juryinvolving.com^ -||jusbertimla4ke2.com^ -||juslsp.info^ -||juslxp.com^ -||just-news.pro^ -||justestmurph.top^ -||justey.com^ -||justgetitfaster.com^ -||justificationjay.com^ -||justifiedatrociousretinue.com^ -||justifiedcramp.com^ -||justinstubborn.com^ -||justonemorenews.com^ -||justpremium.com^ -||justrelevant.com^ -||justservingfiles.net^ -||jutprolificlax.com^ -||jutreconsiderhot.com^ -||juttiedstrath.top^ -||jutyledu.pro^ -||juvenilearmature.com^ -||juvuqsdxjfk.com^ -||juyafctq.xyz^ -||juyvatnil.com^ -||juzzclftcseca.com^ -||jvbzzmnjeznrw.top^ -||jvcjnmd.com^ -||jvjxkcsiktxgigo.com^ -||jvnvrqzvyveqj.top^ -||jvnydntynmru.com^ -||jvrawodh.com^ -||jvsffrjutsax.com^ -||jvswyxxyrrh.com^ -||jvydtutqrmdx.com^ -||jvzoupeh.com^ -||jwadylgbkatacve.com^ -||jwalf.com^ -||jwamnd.com^ -||jwia0.top^ -||jwjxjuvrnkv.com^ -||jwnmnnnzreeyw.top^ -||jwqtuyjqxvsxy.com^ -||jwt8e5vzc1.com^ -||jwuhtogg.com^ -||jwxfjlsodffj.com^ -||jwympcc.com^ -||jxhbpcdzcg.com^ -||jxhgcitcqmvv.com^ -||jxkayopaij.com^ -||jxlpafdxbnhak.com^ -||jxlxeeo.com^ -||jxofoyftjdo.xyz^ -||jxpjltwdeu.com^ -||jxvilsjyrh.com^ -||jxxnnhdgbfo.xyz^ -||jxybgyu.com^ -||jybaekajjmroq.top^ -||jybaekajjmrqw.top^ -||jydydmctzxcea.com^ -||jyfirjqojg.xyz^ -||jygcv.sbs^ -||jygotubvpyguak.com^ -||jyhxhsdgxbvcnj.com^ -||jyjhjopmq.com^ -||jyjmpatmgk.com^ -||jylgvkxgfy.com^ -||jynginedoddle.top^ -||jynp9m209p.com^ -||jyozavoyyyjbj.top^ -||jyozavoyyykby.top^ -||jyozavoyyyqll.top^ -||jyqekzewvyojy.top^ -||jyrfbtmbuqeaeo.com^ -||jysocexrxbodh.com^ -||jytbxzil.com^ -||jyuirxswk.com^ -||jywczbx.com^ -||jyxrdfxli.com^ -||jyzkut.com^ -||jzbvpyvhus.com^ -||jzbvwqezlwrzy.top^ -||jzbvwqezlwyaz.top^ -||jzeamuow.com^ -||jzeapwlruols.com^ -||jzleekzkrwjll.top^ -||jzokkejmqrbmq.top^ -||jzokkejmqrbyj.top^ -||jzokkejmqrkyw.top^ -||jzpdjbpusgcbr.com^ -||jzqbyykbrrobw.top^ -||jzqbyykbrrykz.top^ -||jzqbyykbrryll.top^ -||jzqbyykbrrzvq.top^ -||jzqgyccwefd.com^ -||jztchllgpcrwu.com^ -||jztucbb.com^ -||jzvwawvqawemb.top^ -||jzvwawvqawzmq.top^ -||jzycnlq.com^ -||k-09mobiles.com^ -||k28maingeneral.com^ -||k4umr0wuc.com^ -||k55p9ka2.de^ -||k5zoom.com^ -||k68tkg.com^ -||k8ik878i.top^ -||k9gj.site^ -||kaascypher.com^ -||kabakamarbles.top^ -||kabarnaira.com^ -||kabscarbide.com^ -||kabuut.com^ -||kadggriffshoyv.com^ -||kagnejule.xyz^ -||kagodiwij.site^ -||kagrooxa.net^ -||kagvypdkrfd.com^ -||kaicaica.com^ -||kaifiluk.com^ -||kaigaidoujin.com^ -||kailsfrot.com^ -||kaisaimy.net^ -||kaishepe.xyz^ -||kaiu-marketing.com^ -||kaizzz.xyz^ -||kakdgmn.com^ -||kalauxet.com^ -||kaleidoscopeadjacent.com^ -||kaleidoscopepincers.com^ -||kalganautographeater.com^ -||kalganpuppycensor.com^ -||kalifthorons.top^ -||kallimaacoasm.com^ -||kalmukrattail.com^ -||kalpaksaffect.top^ -||kalseech.xyz^ -||kamachilinins.com^ -||kamalafooner.space^ -||kamassmyalia.com^ -||kaminari.space^ -||kaminari.systems^ -||kamnebo.info^ -||kamost.com^ -||kangaroohiccups.com^ -||kanoodle.com^ -||kantiwl.com^ -||kaoelsng.com^ -||kaorpyqtjjld.com^ -||kappalinks.com^ -||kaqhfijxlkbfa.xyz^ -||kaqppajmofte.com^ -||karafutem.com^ -||karayarillock.cam^ -||karlhalved.com^ -||karoon.xyz^ -||karoup.com^ -||karpasbeamer.com^ -||karpatzi.com^ -||karwobeton.com^ -||kashacodeina.com^ -||kaslcuin.com^ -||kassitegamy.top^ -||kastafor.com^ -||katchouh.com^ -||katecontraction.com^ -||katecrochetvanity.com^ -||katerigordas.pro^ -||kathesygri.com^ -||katodaf.com^ -||katukaunamiss.com^ -||kaubapsy.com^ -||kaujouphosta.com^ -||kauleeci.com^ -||kauraishojy.com^ -||kaurieseluxate.com^ -||kaushooptawo.net^ -||kauvoaph.xyz^ -||kauzishy.com^ -||kavanga.ru^ -||kaxnoyxs.com^ -||kayoesfervor.com^ -||kazanbossterrifying.com^ -||kazqkjyztvv.com^ -||kbadguhvqig.xyz^ -||kbadkxocv.com^ -||kbao7755.de^ -||kbevcidiiqwa.com^ -||kbknujjtpnqq.com^ -||kbnmnl.com^ -||kbqtuwoxgvth.xyz^ -||kbugxeslbjc8.com^ -||kcaamcduwwu.com^ -||kcdn.xyz^ -||kcigvmdkwda.com^ -||kckullrxagokk.com^ -||kcllppzsvznu.com^ -||kcwtugkvnq.xyz^ -||kdfjabv.com^ -||kdkatxfkxmgmbhu.xyz^ -||kdmjvnk.com^ -||kdnutwrx.com^ -||kdokgcf.com^ -||kdosimp.com^ -||kdpnmlygyagyx.com^ -||kdsdiqjghaj.com^ -||kdwuiulga.com^ -||kdyxxkcd.com^ -||keajs.com^ -||keapgypsite.website^ -||keawmrohgxtl.com^ -||kecwhlsr.com^ -||kedasensiblem.info^ -||kedasensiblemot.com^ -||keedaipa.xyz^ -||keefeezo.net^ -||keegesta.com^ -||keegleedaphi.com^ -||keelagemantels.com^ -||keeliethalweg.top^ -||keen-slip.com^ -||keenmosquitosadly.com^ -||keepinfit.net^ -||keepingconcerned.com^ -||keepsagri.net^ -||keepsosto.com^ -||keeptaza.com^ -||keewoach.net^ -||kefeagreatase.info^ -||kegimminent.com^ -||kegnupha.com^ -||kegsandremembrance.com^ -||kehalim.com^ -||keidvetanda.com^ -||keidweneth.com^ -||keihel.com^ -||keijiepvv.com^ -||kejiksay.net^ -||kekrouwi.xyz^ -||kektds.com^ -||kekw.website^ -||kelekkraits.com^ -||kelephoodmen.com^ -||kelliontemiak.com^ -||kelopronto.com^ -||kelownajapers.top^ -||kelreesh.xyz^ -||kelticsully.guru^ -||keltomental.cfd^ -||kendosliny.com^ -||kenduktur.com^ -||kennethemergedishearten.com^ -||kenomal.com^ -||kenoscoulee.com^ -||kensecuryrentat.info^ -||kentlecosts.top^ -||kentorjose.com^ -||kepersaonwho.org^ -||keppendragoon.top^ -||keptoojals.xyz^ -||keraclya.com^ -||keramiceoan.com^ -||kergaukr.com^ -||kernelindiscreet.com^ -||kernfatling.top^ -||keroajum.xyz^ -||kerryfluence.com^ -||kertzmann.com^ -||kerumal.com^ -||kesevitamus.com^ -||kessagames.com^ -||kesseolluck.com^ -||ketaquoted.com^ -||ketgetoexukpr.info^ -||ketheappyrin.com^ -||ketiverdisof.com^ -||ketlpsmt.com^ -||ketmiehemmed.top^ -||ketodis.com^ -||ketogenopsins.uno^ -||ketoo.com^ -||kettakihome.com^ -||kettlemisplacestate.com^ -||kettlewharves.com^ -||keuktyouexpe.info^ -||kewnemhpbmzkm.com^ -||kexojito.com^ -||keyboardvaluesinvoke.com^ -||keydawnawe.com^ -||keyimaginarycomprise.com^ -||keynotefool.com^ -||keypush.net^ -||keyrolan.com^ -||keyrunmodel.com^ -||keywordblocks.com^ -||keywordsconnect.com^ -||kfareputfeab.org^ -||kfbdnyeelfxctc.com^ -||kfebxhjlco.com^ -||kffawlmqdahowhr.com^ -||kffxyakqgbprk.xyz^ -||kfhninhokutn.com^ -||kfiupggnofpqs.com^ -||kfjhd.com^ -||kfjkgfgr.com^ -||kfkclxbmdptmehv.com^ -||kfngvuu.com^ -||kfxkxyb.com^ -||kgdvs9ov3l2aasw4nuts.com^ -||kgfjrb711.com^ -||kgfrstw.com^ -||kggiqfmeafi.com^ -||kglqjacmqmns.com^ -||kgouzrranqt.com^ -||kgqipyttin.com^ -||kgroundandinte.net^ -||kgsehayyvhk.com^ -||kgua0o66bcw8.com^ -||kgwlfrdtf.com^ -||kgxpbxhigq.com^ -||kgyhxdh.com^ -||khakisminder.com^ -||khanjeeyapness.website^ -||khatexcepeded.info^ -||khayatarai.com^ -||khbvxhwwqckmo.com^ -||khdsrrwdvbgd.com^ -||khekwufgwbl.com^ -||khfpcxqwrauj.com^ -||khgacoucr.com^ -||khhkfcf.com^ -||khnwnqmwmdttsd.com^ -||khoslo.com^ -||khrrnhjuhdjvx.com^ -||khuanynodefado.com^ -||khvphqpsl.com^ -||kiaughsviner.com^ -||kibnannaewyl.com^ -||kicationandas.info^ -||kichelcozier.top^ -||kicka.xyz^ -||kickchecking.com^ -||kickoutpawky.com^ -||kiczrqo.com^ -||kidjackson.com^ -||kidnapdilemma.com^ -||kidsboilingbeech.com^ -||kidskidnaps.shop^ -||kidslinecover.com^ -||kifaunsu.com^ -||kifdngi.com^ -||kiftajojuy.xyz^ -||kihmnulxt.com^ -||kihudevo.pro^ -||kihwmtvzvi.com^ -||kiiysgjmuy.com^ -||kikibobo.top^ -||kikoucuy.net^ -||kiksajex.com^ -||kileysgreeney.com^ -||killernineteenthjoyous.com^ -||killerrubacknowledge.com^ -||killingscramblego.com^ -||killstudyingoperative.com^ -||kilometrealcoholhello.com^ -||kiltyyoginis.com^ -||kimbcxs.com^ -||kimberlite.io^ -||kimsacka.net^ -||kinbashful.com^ -||kindergarteninitiallyprotector.com^ -||kindhearted-winter.pro^ -||kindjalquale.uno^ -||kindjalvitalic.com^ -||kindleantiquarian.com^ -||kindlebaldjoe.com^ -||kindledownstairsskeleton.com^ -||kindledrummerhitch.com^ -||kindleinstance.com^ -||kindnessmarshalping.com^ -||kineckekyu.com^ -||king3rsc7ol9e3ge.com^ -||kingads.mobi^ -||kingcobmoe.top^ -||kingrecommendation.com^ -||kingsfranzper.com^ -||kingtrck1.com^ -||kingyonlendir.link^ -||kinitstar.com^ -||kinkledunendly.com^ -||kinkywhoopfilm.com^ -||kinley.com^ -||kinoneeloign.com^ -||kinootwibil.top^ -||kinripen.com^ -||kioskopts.top^ -||kipeir.com^ -||kipweootro.com^ -||kiretafly.com^ -||kirkifyapache.website^ -||kirstyslape.uno^ -||kirteexe.net^ -||kirteexe.tv^ -||kirujh.com^ -||kirverfurious.life^ -||kiss88.top^ -||kistfulmafiosi.space^ -||kistutch.net^ -||kitchencafeso.com^ -||kitgmufratw.com^ -||kitharaearmuff.top^ -||kithoasou.com^ -||kithudru.xyz^ -||kitnmedia.com^ -||kitrigthy.com^ -||kittensuccessful.com^ -||kittledtwang.top^ -||kitwkuouldhukel.xyz^ -||kitwwuowjv.com^ -||kityamurlika.com^ -||kityour.com^ -||kiweftours.com^ -||kiwsiftuvac.com^ -||kiynew.com^ -||kiyyrilqb.com^ -||kizklqqj.com^ -||kizxixktimur.com^ -||kjcafatfgwpggu.xyz^ -||kjffqbnug.com^ -||kjfhenoqfyfljo.com^ -||kjgqsrejwsthwiw.com^ -||kjgzctn.com^ -||kjisypvbsanmlem.xyz^ -||kjjbgclciiay.xyz^ -||kjjvpwvyon.com^ -||kjklisbcab.com^ -||kjlmoxpnst.com^ -||kjmfjwhlrhmmtq.com^ -||kjmrtfpiaq.com^ -||kjotkqyzxe.com^ -||kjqqtivd.com^ -||kjrlulmt.com^ -||kjrnmkfwqp.com^ -||kjsckwjvdxju.xyz^ -||kjsvvnzcto.com^ -||kjuftmdofmsrhq.com^ -||kjyouhp.com^ -||kkgggudr.com^ -||kkghcdvxdfvsq.com^ -||kkixbfuihbhhrj.com^ -||kkjjgban.com^ -||kkjrwxs.com^ -||kkjuu.xyz^ -||kkkpydfok.com^ -||kkkqdgeejtxo.com^ -||kkmacsqsbf.info^ -||kkpbisoyan.com^ -||kkqcnrk.com^ -||kktxgytr.com^ -||kkuabdkharhi.com^ -||kkualfvtaot.com^ -||kkuokpakbz.com^ -||kkusridasp.com^ -||kkuztcsx.com^ -||kkvesjzn.com^ -||kkwfvwpyswjmvi.com^ -||kkyqrxqd.com^ -||klcpcsdoaelyjeh.com^ -||klcuxykjrfto.xyz^ -||klehewasades.org^ -||klenhosnc.com^ -||klihldyjzrjouh.com^ -||klikadvertising.com^ -||kliksaya.com^ -||klipmart.com^ -||kliqz.com^ -||klisejrwgir.com^ -||klixfeed.com^ -||klkus.xyz^ -||klmrgtvjeiea.com^ -||klonedaset.org^ -||kloperd.com^ -||kloshgriffe.com^ -||kloynfsag.com^ -||klrnhhzh.com^ -||klsdee.com^ -||kluxeruntrend.top^ -||kmeqdnmgdkpn.com^ -||kmgzyug.com^ -||kmhfsrwqdu.com^ -||kmhujzustl.com^ -||kmkixuha.com^ -||kmkthnyd.com^ -||kmlvdhequlpli.com^ -||kmmtxfwntcnyd.com^ -||kmnkiuqfo.com^ -||kmodukuleqasfo.info^ -||kmrilock.com^ -||kmyaklgcik.com^ -||kmyunderthf.info^ -||knackseafood.com^ -||knaplpdmbrbi.com^ -||knappedmurshid.com^ -||knawelgrx.com^ -||kncecafvdeu.info^ -||kndaspiratioty.org^ -||kndvqgmfwrdyf.com^ -||kneadcomplicate.com^ -||kneeansweras.com^ -||kneeletromero.com^ -||kneescarbohydrate.com^ -||kneescountdownenforcement.com^ -||kneesettingflashing.com^ -||knellgurglet.top^ -||knewallpendulum.com^ -||knewfeisty.com^ -||knewsportingappreciate.com^ -||knewwholesomecharming.com^ -||knifebackfiretraveller.com^ -||knifeimmoderateshovel.com^ -||knightcharleyloudly.com^ -||knigna.com^ -||knittedcourthouse.com^ -||knittedplus.com^ -||knittingupidiotic.com^ -||knivesdrunkard.com^ -||knivesprincessbitterness.com^ -||knivessimulatorherein.com^ -||knlrfijhvch.com^ -||knobsomebodycheery.com^ -||knocia.com^ -||knockedstub.com^ -||knockoutantipathy.com^ -||knockupchiniks.com^ -||knothubby.com^ -||knottyactive.pro^ -||know-whos-spying.com^ -||know-whos-watch.com^ -||knowd.com^ -||knowfloor.com^ -||knowledconsideunden.info^ -||knowledgepretend.com^ -||knowmakeshalfmoon.com^ -||knownconsider.com^ -||knownwarn.com^ -||knowsdcollet.com^ -||knqpyaholceobc.com^ -||knubbyripens.uno^ -||knudsenunmast.top^ -||knutenegros.pro^ -||knziesxepvaina.com^ -||koabapeed.com^ -||koadoasi.net^ -||koafaimoor.net^ -||koafaupesurvey.space^ -||koahoocom.com^ -||koakoucaisho.com^ -||koalaups.com^ -||koaneeto.xyz^ -||koapsout.com^ -||koapsuha.net^ -||koathool.xyz^ -||koauanmfuamsjb.xyz^ -||kobeden.com^ -||kocairdo.net^ -||kocaisin.xyz^ -||kochov.com^ -||kockaiho.com^ -||kodagupinkoes.com^ -||kofirusy.pro^ -||kognoaka.net^ -||kogutcho.net^ -||kohempcaseins.guru^ -||koindut.com^ -||koipatolipper.com^ -||kojlgwliewan.xyz^ -||kojmrbun.com^ -||kokotrokot.com^ -||kokuoccurs.top^ -||kolanx.com^ -||kolkwi4tzicraamabilis.com^ -||kollnkjxtg.xyz^ -||kolobusbeseam.space^ -||kolqhaaxhk.com^ -||komarchlupoid.com^ -||kongabsa.xyz^ -||kongocohorts.top^ -||kongry.com^ -||konradsheriff.com^ -||kontextua.com^ -||konupucy.net^ -||kooboaphe.com^ -||koocash.com^ -||koocoofy.com^ -||koogreep.com^ -||koojaiba.net^ -||koojaith.xyz^ -||kookarek.com^ -||koophaip.net^ -||kootovouz.com^ -||koovaubi.xyz^ -||kopehngtragen.com^ -||kopeukasrsiha.com^ -||kopsooli.com^ -||koraboe.com^ -||koradu.com^ -||koranicseimas.com^ -||korarea.com^ -||korenle.com^ -||korexo.com^ -||korgala.com^ -||korgiejoinyou.com^ -||kormisl.com^ -||kornbulk1.com^ -||koronaararao.guru^ -||koronacineole.life^ -||korpeoe.com^ -||korporatefinau.org^ -||korrelate.net^ -||korunabevy.com^ -||korununkept.digital^ -||kosininia.com^ -||kostprice.com^ -||kotikinar2ko8tiki09.com^ -||kotnvzp.com^ -||kotokoaedeagi.com^ -||koublxdh.com^ -||kouceeptait.com^ -||koucerie.com^ -||kougloar.com^ -||koujaups.xyz^ -||kouptufezi.com^ -||koureptu.xyz^ -||koustouk.net^ -||koutobey.net^ -||kovhhlbbgs.com^ -||koxcsmmcealss.com^ -||koxqdviupg.xyz^ -||kpcjwjdvlh.com^ -||kpdqdbyi.com^ -||kpdwueshr.com^ -||kpebuazc.com^ -||kphnncpx.xyz^ -||kpjuilkzfi.com^ -||kpougoavtxkrew.com^ -||kqduogttdmryguw.com^ -||kqhi97lf.de^ -||kqiivrxlal.xyz^ -||kqjpipl.com^ -||kqmffmth.xyz^ -||kqpdnmkkvuu.com^ -||kqqwutgln.com^ -||kqrcijq.com^ -||kqtvdljwv.com^ -||kquptfjubrbp.xyz^ -||kquzgqf.com^ -||kqwtnuybueae.com^ -||kqzyfj.com^ -||krankenwagenmotor.com^ -||krazil.com^ -||krclyfkitjyvlls.com^ -||krcuoujleerrun.com^ -||krcykddubkrsjm.xyz^ -||kreud.com^ -||krful.com^ -||krgukepers.org^ -||krisydark.com^ -||krivo.buzz^ -||krixyncbsyhju.com^ -||krjxhvyyzp.com^ -||krkmkvxneig.com^ -||krkstrk.com^ -||kronentriduo.top^ -||kronosspell.com^ -||krqjfirm.com^ -||krqmfmh.com^ -||krqttfeq.com^ -||ksandtheirclean.org^ -||kscmqmrlrepwim.com^ -||ksdlumuhym.com^ -||ksehinkitw.hair^ -||kshzlyvbaaa.com^ -||ksnbiepnvjdi.com^ -||ksnbtmz.com^ -||ksnooastqr.xyz^ -||kssvsjfhxpzwfd.com^ -||kstjqjuaw.xyz^ -||kstvhknmhfppbf.com^ -||ksurpiwdayc.com^ -||ksvrvtehpmfbylm.com^ -||ksvtdifdlqyrv.com^ -||kswiwxupqa.com^ -||ksykbucea.com^ -||ksyompbwor.xyz^ -||kt5850pjz0.com^ -||ktbktludhhq.com^ -||ktbpasfiqmqdni.com^ -||ktcgqqoo.com^ -||ktfgfdjea.com^ -||ktfodkqypn.xyz^ -||ktkjmp.com^ -||ktkvcpqyh.xyz^ -||ktlrhudvlsu.com^ -||ktmayxvea.com^ -||ktnukmtsbfko.com^ -||ktobedirectu.xyz^ -||ktqiyjojiya.com^ -||ktrfzka.com^ -||ktrmmxocabjd.com^ -||ktxvbcbfs.xyz^ -||ku2d3a7pa8mdi.com^ -||ku42hjr2e.com^ -||kubhwrkpycngbwl.com^ -||kubicadza.xyz^ -||kubicserves.icu^ -||kuboohee.xyz^ -||kubrea.com^ -||kueezrtb.com^ -||kuesjmznhhid.com^ -||kuezfqvztt.com^ -||kughouft.net^ -||kuglouhaize.com^ -||kugoucko.com^ -||kuhxhoanlf.com^ -||kukrosti.com^ -||kulakiayme.com^ -||kultingecauyuksehi.info^ -||kultingecauyuksehinkitw.info^ -||kumparso.com^ -||kumpulblogger.com^ -||kumteerg.com^ -||kumtibsa.com^ -||kunvertads.com^ -||kupharlutetia.com^ -||kupmpypt.com^ -||kuqekpfj.com^ -||kuqgrelpiamw.com^ -||kurlipush.com^ -||kursatarak.com^ -||kusciwaqfkaw.com^ -||kusidcfbb.com^ -||kuskiteblets.top^ -||kustaucu.com^ -||kutdbbfy.xyz^ -||kuthoost.net^ -||kutjilsi.com^ -||kuvbyhnotmwm.com^ -||kuvoansub.com^ -||kuwhetsa.net^ -||kuwoucaxoad.com^ -||kuyncvkntfke.com^ -||kvaaa.com^ -||kvahvault.top^ -||kvclwfrsvi.com^ -||kvdmuxy.com^ -||kvecc.com^ -||kvemm.com^ -||kveww.com^ -||kvexx.com^ -||kvezz.com^ -||kvfdpbad.com^ -||kvjjhwkqhehkv.com^ -||kvjkkwyomjrx.com^ -||kvovs.xyz^ -||kvstithy.top^ -||kvtllnttauq.com^ -||kvumadoxpipqq.com^ -||kvxxkbmby.com^ -||kvymlsb.com^ -||kw3y5otoeuniv7e9rsi.com^ -||kwbgmufi.com^ -||kwbmkwej.com^ -||kwedzcq.com^ -||kwiydaw.com^ -||kwjjpphbsuuoe.com^ -||kwncbljexuc.com^ -||kwnmhplnqnfxh.xyz^ -||kwqelx.com^ -||kwqgprdmmwxyhb.com^ -||kwtnhdrmbx.com^ -||kwtpbkqmtbuqvz.com^ -||kwxvjrhijacw.com^ -||kxadykuwmllrn.com^ -||kxbmnofffsuivv.com^ -||kxemrjbvsrd.com^ -||kxeredrhsummac.xyz^ -||kxhbyjljkmyp.xyz^ -||kxhmyeedwkbgrh.xyz^ -||kxkqqycs.xyz^ -||kxkqxdgp.com^ -||kxnaaxml.com^ -||kxnggkh2nj.com^ -||kxowmbwprnck.com^ -||kxrfunmbktnl.com^ -||kxrglnpolgofvr.xyz^ -||kxshyo.com^ -||kxsvelr.com^ -||kxuattexg.com^ -||kxvxonkymcnm.com^ -||kxwhiogrswx.com^ -||kxyfhxbsvfhy.com^ -||kychajuza.com^ -||kygcfvtjrawv.com^ -||kygfocnbvlaa.com^ -||kygftx.xyz^ -||kyjhuflgtl.xyz^ -||kykenies.com^ -||kykfiyin.com^ -||kymirasite.pro^ -||kymllnoudhkiht.com^ -||kymnelboloman.com^ -||kyteblowzed.com^ -||kyteevl.com^ -||kytesconge.com^ -||kz2oq0xm6ie7gn5dkswlpv6mfgci8yoe3xlqp12gjotp5fdjxs5ckztb8rzn.codes^ -||kzasoaub.com^ -||kzcdgja.com^ -||kzdxpcn.com^ -||kzkmmbrrzn.com^ -||kzknjdlalls.com^ -||kzt2afc1rp52.com^ -||kzzwi.com^ -||l-iw.de^ -||l1native.com^ -||l1vec4ms.com^ -||l3g3media.com^ -||l44mobileinter.com^ -||l45fciti2kxi.com^ -||la-la-moon.com^ -||la-la-sf.com^ -||la3c05lr3o.com^ -||labadena.com^ -||labbyplop.com^ -||labeldollars.com^ -||laborrend.com^ -||labourcucumberarena.com^ -||labourerlavender.com^ -||labourermarmotgodmother.com^ -||labourmuttering.com^ -||labporno.com^ -||labsappland.com^ -||labsoacu.com^ -||laccaiccrusta.com^ -||lacecoming.com^ -||lacecompressarena.com^ -||laceratehard.com^ -||lacerateinventorwaspish.com^ -||lacertfeedlot.com^ -||lackawopsik.xyz^ -||lackeysstouty.com^ -||lacklesslacklesscringe.com^ -||lacquerpreponderantconsist.com^ -||lacquerreddeform.com^ -||lactantsurety.top^ -||ladbrokesaffiliates.com.au^ -||ladnet.co^ -||ladnova.info^ -||ladrecaidroo.com^ -||ladsabs.com^ -||ladsans.com^ -||ladsats.com^ -||ladsatz.com^ -||ladsdown.com^ -||ladsecs.com^ -||ladsecz.com^ -||ladsims.com^ -||ladsips.com^ -||ladsipz.com^ -||ladskiz.com^ -||ladsmoney.com^ -||ladsp.com^ -||ladthereisysom.com^ -||ladyrottendrudgery.com^ -||laeiwbkt.com^ -||laf1ma3eban85ana.com^ -||lafakevideo.com^ -||lafastnews.com^ -||lagabsurdityconstrain.com^ -||laggerozonid.website^ -||lagqmwyvqr.com^ -||lagrys.xyz^ -||lagt.cloud^ -||laharal.com^ -||lahemal.com^ -||laichook.net^ -||laidapproximatelylacerate.com^ -||lailoasaiho.com^ -||laimroll.ru^ -||lainaumi.com^ -||laincomprehensiblepurchaser.com^ -||lairauque.com^ -||laitushous.com^ -||laivue.com^ -||laizuwhy.com^ -||lajouly.com^ -||lakequincy.com^ -||lakfbvoskxlc.com^ -||lakmus.xyz^ -||lakvandula.com^ -||lalalkamwsz.com^ -||lalaping.com^ -||lalapush.com^ -||lalerent.site^ -||lalqyyxorytp.com^ -||lambedbarbal.website^ -||lambersoultre.website^ -||lambingsyddir.com^ -||lamburnsay.live^ -||lamdanorelin.life^ -||lame7bsqu8barters.com^ -||lamellaweevily.com^ -||lamesinging.com^ -||lamiaescowls.com^ -||lammasbananas.com^ -||lampdrewcupid.com^ -||lamplynx.com^ -||lamppostharmoniousunaware.com^ -||lampshademirror.com^ -||lanaisgoll.com^ -||lanatesourock.uno^ -||lanceforthwith.com^ -||landelcut.com^ -||landforgreatapp.com^ -||landitmounttheworld.com^ -||landmarkfootnotary.com^ -||landnewseasy.com^ -||landscapeuproar.com^ -||landwaycru.com^ -||lanentablelanentablefantasy.com^ -||laneyounger.com^ -||languetomalgia.top^ -||languewauchts.com^ -||languidintentgained.com^ -||languishnervousroe.com^ -||lanistaads.com^ -||lanksnail.com^ -||lanopoon.net^ -||lanoqhji.com^ -||lansukse.xyz^ -||lantodomirus.com^ -||lapblra5do4j7rfit7e.com^ -||lapbscpgazh.com^ -||lapowed.com^ -||lapre28rmcat2.com^ -||lapseboomacid.com^ -||lapsebreak.com^ -||lapsephototroop.com^ -||laptweakbriefly.com^ -||lapypushistyye.com^ -||laqixtkqpfax.com^ -||laqsvgmjrw.com^ -||laquearhokan.com^ -||laraliadirt.top^ -||larasub.conxxx.pro^ -||larchesrotates.com^ -||lardapplications.com^ -||lardonsmein.top^ -||lardpersecuteunskilled.com^ -||lardspropugn.com^ -||lardyirreproachabledeserve.com^ -||larentisol.com^ -||largedoubly.com^ -||largeharass.com^ -||largepeering.com^ -||laridaetrionfo.top^ -||larkyabandum.com^ -||larontale.com^ -||laronwinepot.top^ -||larrenpicture.pro^ -||larsepso.xyz^ -||larundadozily.com^ -||larvpydqmwvt.com^ -||las4srv.com^ -||lascivioushelpfulstool.com^ -||laserdandelionhelp.com^ -||laserdrivepreview.com^ -||laserharasslined.com^ -||lashinglivable.top^ -||lasosignament.com^ -||lassampy.com^ -||lastermannose.top^ -||lastlyseaweedgoose.com^ -||lasubqueries.com^ -||latchwaitress.com^ -||latelypillar.com^ -||lateralexamination.com^ -||lateranfigs.top^ -||laterincessant.com^ -||latest-news.pro^ -||latestsocial.com^ -||latheendsmoo.com^ -||lathilusted.top^ -||latinchiniks.digital^ -||latinwayy.com^ -||latkelotong.top^ -||latonaheyday.space^ -||latrinehelves.com^ -||lattermailmandumbest.com^ -||latternarcoticbullet.com^ -||laudianauchlet.com^ -||laughbuckle.com^ -||laughedaffront.com^ -||laughedrevealedpears.com^ -||laughingrecordinggossipy.com^ -||laughteroccasionallywarp.com^ -||lauglaph.net^ -||laugoust.com^ -||laugus.com^ -||lauhefoo.com^ -||lauhoosh.net^ -||laukaivi.net^ -||laulme.info^ -||launchbit.com^ -||laundrydesert.com^ -||laupelezoow.xyz^ -||laureevie.com^ -||lauriestatuestroll.com^ -||laushoar.xyz^ -||lausoudu.net^ -||laustiboo.com^ -||lauthana.net^ -||lavando2scas1hh1.com^ -||lavangataled.com^ -||lavatorydownybasket.com^ -||lavatoryhitschoolmaster.com^ -||lavenderhierarchy.com^ -||lavenderthingsmark.com^ -||lavendertyre.com^ -||lavish-brilliant.pro^ -||lavishnessoverboard.com^ -||lavtaexvpxnms.com^ -||lavufa.uno^ -||lawcmabfoqal.com^ -||lawduwdtozw.com^ -||lawingpicein.top^ -||lawishkukri.com^ -||lawsbuffet.com^ -||lawsuniversitywarning.com^ -||lawunfriendlyknives.com^ -||laxativepermissiblesensation.com^ -||laxoaksi.net^ -||laydcilck.com^ -||layer-ad.org^ -||layeravowportent.com^ -||layerloop.com^ -||layermutual.com^ -||layerpearls.com^ -||layiaaesopic.top^ -||layingracistbrainless.com^ -||laylmty.com^ -||layoutsdaydawn.top^ -||layzvgxgodnv.com^ -||lazyrelentless.com^ -||lbabpxobwjkobef.com^ -||lbbzxarfoukaf.com^ -||lbexhowxemwo.com^ -||lbfgwkxq.com^ -||lbjxsort.xyz^ -||lbkezllkewevy.top^ -||lbswotkkpry.com^ -||lbwjqrtxeeriap.com^ -||lbxcnbrczmmp.com^ -||lbxetynjwqyrw.com^ -||lby2kd27c.com^ -||lbylqeravmowq.top^ -||lbypewrshxl.com^ -||lcdtilth.uno^ -||lcfooiqhro.com^ -||lcjiusbyqfpdo.com^ -||lcloperoxeo.xyz^ -||lcmbppikwtxujc.xyz^ -||lcmevashrxfh.com^ -||lcncbusdg.com^ -||lcolumnstoodth.info^ -||lcrhtauvic.com^ -||lcswbwinvhzm.com^ -||lcvdvyqpewwhllt.com^ -||lcwnlhy.com^ -||lcwoewvvmhj.com^ -||lcwogxmmukoe.com^ -||lcxxwxo.com^ -||ldcadfuway.com^ -||ldclxgkcy.xyz^ -||ldcrfkvy.com^ -||ldedallover.info^ -||ldexhnvqcyaio.com^ -||ldfeqvkunqawgru.com^ -||ldimnveryldgitwe.xyz^ -||ldlikukemyfueuk.info^ -||ldmlnhfnly.com^ -||ldrenandthe.org^ -||ldrsvmkajnzx.com^ -||ldthinkhimun.com^ -||ldtscklwyxc.com^ -||lduhtrp.net^ -||ldwbgvhxvtnjto.com^ -||lead1.pl^ -||leadadvert.info^ -||leadbolt.net^ -||leadcola.com^ -||leadenabsolution.com^ -||leadenretain.com^ -||leadensought.com^ -||leadingindication.pro^ -||leadingservicesintimate.com^ -||leadmediapartners.com^ -||leadscorehub-view.info^ -||leadsecnow.com^ -||leadsleap.net^ -||leadzu.com^ -||leadzupc.com^ -||leadzutw.com^ -||leafletcensorrescue.com^ -||leafletluckypassive.com^ -||leafletsmakesunpleasant.com^ -||leafminefield.com^ -||leafpear.com^ -||leafy-feel.com^ -||leaguedispleasedjut.com^ -||leakervassar.top^ -||leakfestive.com^ -||leanbathroom.com^ -||leansometime.com^ -||leanunderstatement.com^ -||leanwhitepinafo.org^ -||leapretrieval.com^ -||learningcontainscaterpillar.com^ -||learningproportion.com^ -||learntinga.com^ -||leasemiracle.com^ -||leashextendposh.com^ -||leashmotto.com^ -||leashrationaldived.com^ -||leathbowling.top^ -||leatmansures.com^ -||leavelicencetoenail.com^ -||leavenstogated.cfd^ -||leaveoverwork.com^ -||leaveundo.com^ -||leavingboth.com^ -||leavingenteredoxide.com^ -||leavingsuper.com^ -||lebinaphy.com^ -||lebpeqroqqvtf.com^ -||lecapush.net^ -||lecdhuq.com^ -||lecticashaptan.com^ -||lecythleche.website^ -||ledaoutrush.com^ -||ledgingalcaid.com^ -||ledhatbet.com^ -||ledrapti.net^ -||leebisuk.xyz^ -||leechdesperatelymidterm.com^ -||leechiza.net^ -||leefosto.com^ -||leegaroo.xyz^ -||leenaitheez.com^ -||leeptoadeesh.net^ -||leesecobourg.com^ -||leesymvlvck.xyz^ -||leetaipt.net^ -||leetmedia.com^ -||leewayjazzist.com^ -||leezeemu.com^ -||leezeept.com^ -||leezoama.net^ -||leforgotteddisg.info^ -||left-world.com^ -||leftempower.com^ -||leftoverstatistics.com^ -||leftshoemakerexpecting.com^ -||legal-weight.pro^ -||legalavouch.com^ -||legalchained.com^ -||legalizedistil.com^ -||legcatastrophetransmitted.com^ -||legely.com^ -||legendadmiration.com^ -||legendaryremarkwiser.com^ -||legendbrowsprelude.com^ -||legendeducationalprojects.com^ -||legerikath.com^ -||leggraduate.com^ -||leggygagbighearted.com^ -||leggymomme.top^ -||leginsi2leopard1oviy1hf.com^ -||legitimatelubricant.com^ -||legitimatemess.pro^ -||legmcwfok.com^ -||legreeft.xyz^ -||legxrhrrb.xyz^ -||lehechapunevent.com^ -||lehephubu.com^ -||lehoacku.net^ -||lehtymns.com^ -||lehvxwciysoac.com^ -||leisurebrain.com^ -||leisurehazearcher.com^ -||leisureinhibitdepartment.com^ -||leisurelyeaglepestilent.com^ -||leisurelyparoleexcitedly.com^ -||leisurelypizzascarlet.com^ -||lelesidesukbeing.info^ -||lelrouxoay.com^ -||lemelstrikes.cfd^ -||lementwrencespri.info^ -||lemetri.info^ -||lemitsuz.net^ -||lemmaheralds.com^ -||lemmataoutsoar.com^ -||lemondependedadminister.com^ -||lemonicecold.org^ -||lemotherofhe.com^ -||lemouwee.com^ -||lempeehu.xyz^ -||lemsoodol.com^ -||lengtikto.xyz^ -||lenkmio.com^ -||lenmit.com^ -||lenopoteretol.com^ -||lentculturalstudied.com^ -||lenthyblent.com^ -||lentmatchwith.info^ -||lentoidreboast.top^ -||leonbetvouum.com^ -||leonistenstyle.com^ -||leonodikeu9sj10.com^ -||leoojlxbcvnmpbe.com^ -||leoparddisappearcrumble.com^ -||leopardenhance.com^ -||leopardfaithfulbetray.com^ -||leoyard.com^ -||lepetitdiary.com^ -||lephaush.net^ -||lepiotaplacus.top^ -||lepiotaspectry.com^ -||leptidunhaunt.com^ -||leqjnmmyqtb.com^ -||leroonge.xyz^ -||lerrdoriak.com^ -||leskdywzbfk.com^ -||lesoocma.net^ -||lessencontraceptive.com^ -||lesserdragged.com^ -||lessite.pro^ -||lessonworkman.com^ -||letaikay.net^ -||letinclusionbone.com^ -||letitnews.com^ -||letitredir.com^ -||letopreseynatc.org^ -||letqejcjo.xyz^ -||letsbegin.online^ -||letstry69.xyz^ -||letterslamp.online^ -||letterwolves.com^ -||leucan3thegm6um.com^ -||leukemianarrow.com^ -||leukemiaruns.com^ -||levajarool.com^ -||levan-rqw.com^ -||levccyvth.com^ -||levelbraid.com^ -||leveragebestow.com^ -||leveragetypicalreflections.com^ -||leverseriouslyremarks.com^ -||leveryone.info^ -||levityheartinstrument.com^ -||levityprogramming.com^ -||levityquestionshandcuff.com^ -||levyteenagercrushing.com^ -||lexemeowhere.digital^ -||lexicoggeegaw.website^ -||lfeaqcozlbki.com^ -||lfewvebxzt.com^ -||lffsnhwhxnqn.com^ -||lfkxjcrlrrar.com^ -||lflcbcb.com^ -||lfmfkklhgqsk.com^ -||lfngqrtheim.com^ -||lfnwqrghxqrqb.com^ -||lfodybaft.com^ -||lfooldjzuyfhae.com^ -||lfpmtibqwqre.com^ -||lfstmedia.com^ -||lfsuigdrtsszog.com^ -||lfufujhxmy.com^ -||lfwujowkcf.com^ -||lfxkgdvf.com^ -||lfywxgpkev.com^ -||lgcssusa.com^ -||lgepbups.xyz^ -||lgmvmfywd.com^ -||lgqffscxfqv.com^ -||lgqqhbnvfywo.com^ -||lgse.com^ -||lgtdkpfnor.com^ -||lgviqkrimvmy.xyz^ -||lgwddyouxxwd.com^ -||lhamjcpnpqb.xyz^ -||lhbrkotf.xyz^ -||lhdmihaby.xyz^ -||lhecbmq.com^ -||lheoutn.com^ -||lhgwyrecj.com^ -||lhioqxkralmy.com^ -||lhiswrkt.com^ -||lhmos.com^ -||li.blogtrottr.com^ -||li2meh6eni3tis.com^ -||liabilitygenerator.com^ -||liabilityspend.com^ -||liablematches.com^ -||liabletablesoviet.com^ -||liadm.com^ -||liaisondegreedaughters.com^ -||liambafaying.com^ -||liaoptse.net^ -||liarcram.com^ -||libcdn.xyz^ -||libedgolart.com^ -||libellousstaunch.com^ -||libelpreferred.com^ -||libelradioactive.com^ -||libeph.com^ -||liberalthrustwhilst.com^ -||libertycdn.com^ -||libertystmedia.com^ -||libgetgrocers.top^ -||librariandemocrattoss.com^ -||libraryglowingjo.com^ -||libsloppier.guru^ -||licantrum.com^ -||licenseelegance.com^ -||lichsemicha.top^ -||lickinggetting.com^ -||lickingimprovementpropulsion.com^ -||licmiwot.com^ -||liddenlywilli.org^ -||lidsaich.net^ -||lieforepawsado.com^ -||liegelygosport.com^ -||liegesyn.top^ -||lievel.com^ -||lievhbbqbapjkh.com^ -||lifeboatdetrimentlibrarian.com^ -||lifeimpressions.net^ -||lifemoodmichelle.com^ -||lifeporn.net^ -||lifesoonersoar.org^ -||lifestyleheartrobust.com^ -||lifetds.com^ -||lifetimeagriculturalproducer.com^ -||lifetimeroyaltybestial.com^ -||liffic.com^ -||lifiads.com^ -||lifict.com^ -||lifoll.com^ -||lifootsouft.com^ -||liftdna.com^ -||liftedd.net^ -||liftmenpartes.com^ -||ligatus.com^ -||lighes.com^ -||lightenintimacy.com^ -||lightfoot.top^ -||lightlybreathlesspronunciation.com^ -||lightningbarrelwretch.com^ -||lightningcast.net^ -||lightningly.co^ -||lightningobstinacy.com^ -||lightsriot.com^ -||lightssyrupdecree.com^ -||ligninenchant.com^ -||lihuwvokhonsni.com^ -||liivhntsu.com^ -||lijybcfgnjh.com^ -||likeads.com^ -||likecontrol.com^ -||likedpatpresent.com^ -||likedstring.com^ -||likedtocometot.info^ -||likelihoodrevolution.com^ -||likenedfondles.life^ -||likenesscollecting.com^ -||likenessmockery.com^ -||likenewvids.mom^ -||likenewvids.online^ -||likescenesfocused.com^ -||liktufmruav.com^ -||lilacbeaten.com^ -||lilacsloppy.com^ -||lilcybu.com^ -||lilialconcoct.top^ -||lilureem.com^ -||lilyhumility.com^ -||lilyrealitycourthouse.com^ -||lilysuffocateacademy.com^ -||lilysummoned.com^ -||limbcoastlineimpetuous.com^ -||limberkilnman.cam^ -||limbievireos.com^ -||limboduty.com^ -||limbrooms.com^ -||limeaboriginal.com^ -||limeclassycaption.com^ -||limemanprocbal.com^ -||liminechests.com^ -||limineshucks.com^ -||limitationvolleyballdejected.com^ -||limitbrillianceads.com^ -||limitedkettlemathematical.com^ -||limitesrifer.com^ -||limitlessascertain.com^ -||limitlessexterminator.com^ -||limitssimultaneous.com^ -||limoners.com^ -||limorev.com^ -||limosiwooable.com^ -||limpattemptnoose.com^ -||limpingpick.com^ -||limpomut.com^ -||limurol.com^ -||lin01.bid^ -||lindasmensagens.online^ -||linderbourgs.top^ -||lineagecineol.top^ -||linearmummy.com^ -||linearsubdued.com^ -||linedprocurator.com^ -||linendamns.top^ -||linendoubtful.com^ -||linendrink.com^ -||linensephraim.com^ -||lingamretene.com^ -||lingamschymify.com^ -||lingerdisquietcute.com^ -||lingerincle.com^ -||lingoumboylike.website^ -||lingrethertantin.com^ -||lingyknubby.com^ -||linhacitoyen.com^ -||liningdoimmigrant.com^ -||liningemigrant.com^ -||liningreduction.com^ -||link2thesafeplayer.click^ -||linkadvdirect.com^ -||linkbuddies.com^ -||linkchangesnow.com^ -||linkedassassin.com^ -||linkedprepenseprepense.com^ -||linkedrethink.com^ -||linkelevator.com^ -||linkev.com^ -||linkexchange.com^ -||linkhaitao.com^ -||linkmanglazers.com^ -||linkmepu.com^ -||linkoffers.net^ -||linkonclick.com^ -||linkredirect.biz^ -||linkreferral.com^ -||linksecurecd.com^ -||linksprf.com^ -||lintfeintshindig.com^ -||lintgallondissipate.com^ -||linygamone.top^ -||liondolularhene.info^ -||lionelimburse.com^ -||lionessmeltdown.com^ -||lionesssupercatering.com^ -||lionporcelain.com^ -||lipidicchaoush.com^ -||lipmswonv.com^ -||lipsate.com^ -||lipurialauroyl.com^ -||liqenoftcgfqw.com^ -||liqikxqpx.com^ -||liquidapprovaltar.com^ -||liquidfire.mobi^ -||liquorelectric.com^ -||liquorsref.com^ -||lirangloid.top^ -||lirateblister.com^ -||lirdooch.xyz^ -||list-ads.com^ -||listbrandnew.com^ -||listenedmusician.com^ -||listenwaxbush.shop^ -||listfulhymnals.website^ -||listlessoftenkernel.com^ -||litdeetar.live^ -||liteappmagazin.com^ -||literacyneedle.com^ -||literacysufficientlymicroscope.com^ -||literalbackseatabroad.com^ -||literalcorpulent.com^ -||literalpraisepassengers.com^ -||literalseedsamnesty.com^ -||literaryfledlitter.com^ -||literaryonboard.com^ -||literatureheartburnwilling.com^ -||literaturehogwhack.com^ -||literaturerehearsesteal.com^ -||literatureunderstatement.com^ -||literpeore.com^ -||littlecdn.com^ -||littlecutecats.com^ -||littlecutedogs.com^ -||littlecutelions.com^ -||littleearthquakeprivacy.com^ -||littleneptunenews.com^ -||littleworthjuvenile.com^ -||littlmarsnews22.com^ -||litvp.com^ -||liupoaa.com^ -||live-a-live.com^ -||livedspoonsbun.com^ -||liveleadtracking.com^ -||livelihoodpracticaloperating.com^ -||livelycontributorvariations.com^ -||livelytusk.com^ -||liverbarrelrustle.com^ -||livesexbar.com^ -||livestockfeaturenecessary.com^ -||livestormy.com^ -||livezombymil.com^ -||livid-inspector.com^ -||lividmoonsif.top^ -||lividn.com^ -||livingshedhowever.com^ -||livrfufzios.com^ -||livyersremoval.com^ -||liwnffsxdhn.com^ -||lixihyrwpgh.com^ -||lixnirokjqp.com^ -||lixsbdifa.com^ -||lixuhwuwychupbd.com^ -||lizapaisan.com^ -||lizebruisiaculi.info^ -||lizouhaiwhe.com^ -||lizzieforcepincers.com^ -||ljbwzlmzlzbkm.top^ -||ljcsrrrhvu.com^ -||ljfncdojjuorjxu.com^ -||ljlbzdqznogl.com^ -||ljldpvos.com^ -||ljntxsmdcvemlh.com^ -||ljokijpwtkwib.com^ -||ljoyjuis.com^ -||ljtodywdhx.xyz^ -||ljubleasyu.com^ -||ljyajgjvuv.com^ -||ljykyxgp.com^ -||ljzxdranhsf.com^ -||lkcoffe.com^ -||lkdazrtkame.com^ -||lkdvvxvtsq6o.com^ -||lketpgwauan.com^ -||lkeurotpmiz.com^ -||lkg6g644.de^ -||lkhfkjp.com^ -||lkhmkmhlqst.xyz^ -||lkjgdyhtdrnau.com^ -||lkjjhrwrcmvtl.com^ -||lkjoncgixi.com^ -||lkkemywlsyxsq.xyz^ -||lkkhedpqeduyukj.com^ -||lkkmnudvvx.com^ -||lklofubgk.com^ -||lkmedcjyh.xyz^ -||lkoqoxgkntjv.com^ -||lkoxbiwi.com^ -||lkpmprksau.com^ -||lkqd.net^ -||lkqpxhw.com^ -||lksbnrs.com^ -||lksoghgm.xyz^ -||lkxahvf.com^ -||lkzlambkzllaz.top^ -||llalo.click^ -||llbonxcqltulds.xyz^ -||llboqevyazylr.top^ -||lldkgppuwi.com^ -||llmeocaptainh.com^ -||llohkcllkalodrb.xyz^ -||llozybovlkekk.top^ -||llpnrfplbkoalts.com^ -||llq9q2lacr.com^ -||llqqhwfjtdtvnt.com^ -||llqrhggvwra.com^ -||llthwkoqlxwajb.com^ -||lltyfiqsdgsvnr.xyz^ -||lludd-ize.com^ -||lluwrenwsfh.xyz^ -||llvlzvrwkoaqm.top^ -||llwcfovpl.com^ -||llyighaboveth.com^ -||llykjmzqkzkbr.top^ -||llynbooming.top^ -||llyyxmav.xyz^ -||lmaghokalqji.xyz^ -||lmalyjywqlolv.top^ -||lmalyjywqlwvk.top^ -||lmdfmd.com^ -||lmmpjhvli.com^ -||lmn-pou-win.com^ -||lmnrorgeummvsqe.com^ -||lmp3.org^ -||lmqysxpwytiknqe.com^ -||lmuondxclws.com^ -||lmvkxaadihu.com^ -||lmvrjajerrbwv.top^ -||lnabew.com^ -||lnbdbdo.com^ -||lncfuqbgpnmxm.xyz^ -||lnhamforma.info^ -||lnhdlukiketg.info^ -||lnjaccwtdwdsntd.com^ -||lnjdtbpx.com^ -||lnjmaymlmnkyn.top^ -||lnk8j7.com^ -||lnkfrsgrt.xyz^ -||lnkrdr.com^ -||lnkvv.com^ -||lnlxhsjjqfjs.com^ -||lnmreidn.com^ -||lntrigulngdates.com^ -||lnvabjwmrlmzb.top^ -||lnyajvutvvirw.xyz^ -||lo8ve6ygour3pea4cee.com^ -||loadercdn.com^ -||loading-resource.com^ -||loadingscripts.com^ -||loadlatestoverlyinfo-program.info^ -||loadtime.org^ -||loaducaup.xyz^ -||loafplaceunchanged.com^ -||loafsmash.com^ -||loagoshy.net^ -||loaire.com^ -||loajawun.com^ -||loaksandtheir.info^ -||loaptaijuw.com^ -||loastees.net^ -||loathecurvedrepress.com^ -||loathederava.uno^ -||loathepimpery.com^ -||loatherelevens.top^ -||loatheskeletonethic.com^ -||loaubriqie.com^ -||loazuptaice.net^ -||lobberamylom.top^ -||lobby-x.eu^ -||lobepessary.com^ -||lobfrbrlx.com^ -||lobipedholw.space^ -||loboclick.com^ -||lobosahispa.digital^ -||lobsterbusily.com^ -||lobsterpopcorn.com^ -||lobsterredress.com^ -||lobsudsauhiw.xyz^ -||local-flirt.com^ -||local-hot-dates.com^ -||localadbuy.com^ -||localedgemedia.com^ -||locallycompare.com^ -||locallyhastefowl.com^ -||localsnaughty.com^ -||locandalorries.com^ -||locatchi.xyz^ -||locatedstructure.com^ -||locationaircondition.com^ -||lockdowncautionmentally.com^ -||locked-link.com^ -||lockerantiquityelaborate.com^ -||lockerdomecdn.com^ -||lockersatelic.cam^ -||lockerstagger.com^ -||locketarloup.com^ -||locketthose.com^ -||lockingadmitted.com^ -||lockingcooperationoverprotective.com^ -||lockingvesselbaseless.com^ -||lockperseverancebertram.com^ -||locksstruck.com^ -||locomotiveconvenientriddle.com^ -||locomotivetroutliquidate.com^ -||locooler-ageneral.com^ -||loculusgerara.digital^ -||locusflourishgarlic.com^ -||locustmartperiodic.com^ -||lodebajury.top^ -||lodgedynamitebook.com^ -||lodgesweet.com^ -||lodroe.com^ -||lofgfokgxtr.com^ -||loftknowing.com^ -||loftsbaacad.com^ -||loftychord.com^ -||loftyeliteseparate.com^ -||loganfeels.com^ -||loggyareolas.top^ -||loghutouft.net^ -||logicconfinement.com^ -||logicdate.com^ -||logicdripping.com^ -||logicorganized.com^ -||logicschort.com^ -||loginlockssignal.com^ -||loglabitrufly.top^ -||loglaupt.com^ -||logsgroupknew.com^ -||logshort.xyz^ -||logystowtencon.info^ -||loinpriestinfected.com^ -||loiteringcoaltuesday.com^ -||loivpcn.com^ -||loivpdbzx.com^ -||loketsaucy.com^ -||lokinatoer5.com^ -||lokqfjbpryua.com^ -||loktrk.com^ -||lolco.net^ -||loliumpruigo.com^ -||lologhfd.com^ -||lolsefti.com^ -||loneextreme.pro^ -||lonelytransienttrail.com^ -||lonerdrawn.com/watch.1008407049393.js -||lonerdrawn.com^ -||lonfilliongin.com^ -||long1x.xyz^ -||longeargloving.com^ -||longerbuttonamendment.com^ -||longerhorns.com^ -||longestencouragerobber.com^ -||longestsundays.com^ -||longestwaileddeadlock.com^ -||longingarsonistexemplify.com^ -||longlakeweb.com^ -||longmansuchcesu.info^ -||loniil.com^ -||lonreddone.com^ -||loobilycorvet.com^ -||looceemu.net^ -||loodauni.com^ -||loogreem.xyz^ -||loohiwez.net^ -||lookandfind.me^ -||lookinews.com^ -||lookingnull.com^ -||lookoutabjectinterfere.com^ -||lookruler.com^ -||looksblazeconfidentiality.com^ -||looksdashboardcome.com^ -||looksthrilled.com^ -||looktotheright.com^ -||lookujie.net^ -||lookwhippedoppressive.com^ -||loolausufouw.com^ -||loolowhy.com^ -||looluchu.com^ -||loomplyer.com^ -||loomscald.com^ -||loomspreadingnamely.com^ -||loooutlet.com^ -||loopanews.com^ -||loopfulescalop.top^ -||loopme.me^ -||loopr.co^ -||loorydewdrop.com^ -||looscreech.com^ -||loose-chemistry.pro^ -||looseclassroomfairfax.com^ -||loosehandcuff.com^ -||loosematuritycloudless.com^ -||loosenpuppetnone.com^ -||loosishunproud.top^ -||lootexhausted.com^ -||lootexport.com^ -||loothoko.net^ -||lootynews.com^ -||looverfamose.top^ -||lopqkwmm.xyz^ -||lopsidedmine.pro^ -||lopslascars.com^ -||loqhpdkx.com^ -||loquatbethump.top^ -||lorageiros.com^ -||loralana.com^ -||lorcgnziipstq.com^ -||lordhelpuswithssl.com^ -||lorrylips.com^ -||lorswhowishe.com^ -||lorumotwnkkkk.com^ -||lorybnfh.com^ -||losercurt.com^ -||loserwentsignify.com^ -||losespiritsdiscord.com^ -||loshaubs.com^ -||loshrhaphae.com^ -||losingfunk.com^ -||losingninth.com^ -||losingoldfry.com^ -||losingsplowter.com^ -||losingtiger.com^ -||lositz.com^ -||lossactivity.com^ -||lostdormitory.com^ -||lostinfuture.com^ -||losybsno.com^ -||lotclergyman.com^ -||lothlyunfaith.com^ -||lotionfortunate.com^ -||lotosmarkkaa.com^ -||lotreal.com^ -||lotstoleratescarf.com^ -||lotteryaffiliates.com^ -||lottingjacks.top^ -||lotusesheaper.com^ -||lotusinmillier.com^ -||lotymtcwuf.com^ -||loucegle.net^ -||louchaug.com^ -||louchees.net^ -||louderwalnut.com^ -||loudlongerfolk.com^ -||lougougauhi.xyz^ -||louisaprocedureegoism.com^ -||louisedistanthat.com^ -||loukoost.net^ -||louloapi.com^ -||loulouly.net^ -||loungetackle.com^ -||lourdoueisienne.website^ -||lousedsomal.com^ -||louseflippantsettle.com^ -||lousefodgel.com^ -||louses.net^ -||loustagu.com^ -||loustoanee.com^ -||loustran288gek.com^ -||lousyfastened.com^ -||loutishsilents.com^ -||louxoxo.com^ -||love-world.me^ -||lovedcorrectionsuffix.com^ -||lovehiccuppurple.com^ -||lovely-sing.pro^ -||lovelybingo.com^ -||lovemateforyou.com^ -||loverevenue.com^ -||loverfellow.com^ -||loversarrivaladventurer.com^ -||loverssloppy.com^ -||lovesgoner.com^ -||lovesparkle.space^ -||loveyousaid.info^ -||low-sad.com^ -||lowdodrioon.com^ -||lowercommander.com^ -||lowereasygoing.com^ -||loweredexaggeratemeasures.com^ -||loweredinflammable.com^ -||lowestportedexams.com^ -||lowgraveleron.com^ -||lowlatiasan.com^ -||lowleafeontor.com^ -||lowlifeimprovedproxy.com^ -||lowlifesalad.com^ -||lownoc.org^ -||lowpedalhumidity.com^ -||lowrance.top^ -||lowremoraidon.com^ -||lowrihouston.pro^ -||lowseelan.com^ -||lowsmoochumom.com^ -||lowsteelixor.com^ -||lowtyroguer.com^ -||lowtyruntor.com^ -||lowuybgxsekr.com^ -||loxalrauch.com^ -||loxitdat.com^ -||loxtk.com^ -||loyalracingelder.com^ -||loyeesihighlyreco.info^ -||lp-preview.net^ -||lp247p.com^ -||lpair.xyz^ -||lpaoz.xyz^ -||lpaqjnfmxftqfx.com^ -||lparket.com^ -||lpawakkabpho.com^ -||lpeqztx.com^ -||lpetooopz.com^ -||lpfmeavbcqbmy.com^ -||lpfulinotaherere.info^ -||lpmetorealiuk.info^ -||lpnljafoaklewbt.xyz^ -||lppexpgt.com^ -||lpravybegqv.com^ -||lptcfrgq.com^ -||lptiljy.com^ -||lptrak.com^ -||lptrck.com^ -||lpzhlqrrcvpnzj.com^ -||lqammdjflcecau.com^ -||lqbvjmkwemboq.top^ -||lqbzuny.com^ -||lqcaznzllnrfh.com^ -||lqcdn.com^ -||lqclick.com^ -||lqertautw.com^ -||lqjnjelmmya.com^ -||lqmrxmavv.com^ -||lqmvvsgusod.com^ -||lqpmulou.com^ -||lqsbqjuld.com^ -||lqvm.lvbeybbkovqar.top^ -||lqwswjwpmaih.com^ -||lqxuwqhh.com^ -||lr-in.com^ -||lraonxdikxi.com^ -||lrcdjqw.com^ -||lreqmoonpjka.com^ -||lrqknpk.com^ -||lrqvmaverkjzw.top^ -||lrwksobdw.com^ -||lsandothesaber.org^ -||lsckongo.website^ -||lsgktcuajpifxg.xyz^ -||lsgpxqe.com^ -||lsgwkbk.com^ -||lsjne.com^ -||lsjvqovgx.com^ -||lsnghcma.com^ -||lsqggflcsm.com^ -||lsqzxexvphk.com^ -||lstkadfnevu.com^ -||lstonorallantyne.com^ -||lsubalhqkg.com^ -||lsvblpynuezkbf.com^ -||lszydrtzsh.com^ -||ltassrv.com.s3.amazonaws.com^ -||ltassrv.com^ -||ltedinncreasuke.org^ -||ltengronsa.com^ -||lteyrcwpoh.xyz^ -||ltixtcopfdye.com^ -||ltmlsehfqikh.xyz^ -||ltmuzcp.com^ -||ltmywtp.com^ -||ltnyzlrqggx.com^ -||ltohnghngrfeg.xyz^ -||lubbardstrouds.com^ -||lubbreton.com^ -||lubowitz.biz^ -||lubrazati.com^ -||lubricantexaminer.com^ -||lucentfreer.com^ -||lucentposition.com^ -||luciditycuddle.com^ -||lucidityhormone.com^ -||lucidlymutualnauseous.com^ -||lucidmedia.com^ -||lucificsaucery.click^ -||luckiersandia.top^ -||luckilyewe.com^ -||lucklayed.info^ -||luckterrifying.com^ -||luckyads.pro^ -||luckyforbet.com^ -||luckypapa.xyz^ -||luckypushh.com^ -||luckyz.xyz^ -||lucrativeemotionallypromised.com^ -||lucrinearraign.com^ -||lucvhrdlywvnwh.com^ -||ludabmanros.com^ -||ludied.com^ -||ludxivsakalg.com^ -||lugai-jbl.com^ -||lugajxy.com^ -||luggagebuttonlocum.com^ -||luhjdiomy.com^ -||luhkbsyx.com^ -||luiingiho.com^ -||lujkkxgrbs.com^ -||lukdliketobepa.info^ -||lukeaccesspopped.com^ -||lukeexposure.com^ -||lukpush.com^ -||lulachu.com^ -||lulgpmdmbtedzl.com^ -||lullxkwwu.com^ -||lumaktoys.com^ -||lumberperpetual.com^ -||luminosoocchio.com^ -||luminousstickswar.com^ -||lumnstoodthe.info^ -||lumpilap.net^ -||lumpmainly.com^ -||lumptaxmen.com^ -||lumpy-skirt.pro^ -||lumpyactive.com^ -||lumpyouter.com^ -||lumupu.xyz^ -||lumxts.com^ -||lunatesame.top^ -||luncheonbeehive.com^ -||lunchpaybackdarcy.com^ -||lunchtimehermione.com^ -||lunchvenomous.com^ -||lunio.net^ -||lunyfallace.com^ -||lunylarynx.uno^ -||luofinality.com^ -||lupininulster.com^ -||lupvaqvfeka.com^ -||lupyjpkuykoc.com^ -||luqlgnxfkgub.com^ -||luqqlylvh.com^ -||luracancamus.com^ -||luracanestrus.com^ -||lurchesheroine.life^ -||lurcicdhevi.com^ -||lurdoocu.com^ -||lureillegimateillegimate.com^ -||lurgaimt.net^ -||lurgimte.com^ -||lurkgenerally.com^ -||luronews.com^ -||lurrynumud.com^ -||lusaisso.com^ -||luscioussensitivenesssavour.com^ -||lusciouswrittenthat.com^ -||lushcrush.com^ -||lusinlepading.com^ -||lustickmiasmic.com^ -||lutachechu.pro^ -||luuming.com^ -||luvaihoo.com^ -||luwsebstwpc.com^ -||luwt.cloud^ -||luxadv.com^ -||luxatedbulten.com^ -||luxbetaffiliates.com.au^ -||luxcdn.com^ -||luxins.net^ -||luxlnk.com^ -||luxope.com^ -||luxup.ru^ -||luxup2.ru^ -||luxupadva.com^ -||luxupcdna.com^ -||luxupcdnb.com^ -||luxupcdnc.com^ -||luxuriousannotation.com^ -||luxuriousbreastfeeding.com^ -||luxuriouscomplicatedsink.com^ -||luxuryfluencylength.com^ -||luxusbowboy.com^ -||luymtmiku.com^ -||luyten-98c.com^ -||luzulabeguile.com^ -||lv5hj.top^ -||lvaazvwmmvwev.top^ -||lvbeybbkovbaq.top^ -||lvbeybbkovqar.top^ -||lvbngvy.com^ -||lvjptld.com^ -||lvlmhyjzdan.com^ -||lvnnqdgxdlhj.com^ -||lvodomo.info^ -||lvojjayaaovry.top^ -||lvomenbxbyl.com^ -||lvpcxqcoohcviks.com^ -||lvsnmgg.com^ -||lvwdrsrerso.com^ -||lvwuuehkvitwn.com^ -||lvyowwkqealv.top^ -||lwgadm.com^ -||lwghtbqqmbxiet.com^ -||lwhyihajamafu.com^ -||lwjje.com^ -||lwjvyd.com^ -||lwlagvxxyyuha.xyz^ -||lwmheajc.com^ -||lwmmhsalfnoa.com^ -||lwojitro.top^ -||lwonclbench.com^ -||lwwdvshhbj.com^ -||lwxuo.com^ -||lx2rv.com^ -||lxkzcss.xyz^ -||lxlncklnikihc.com^ -||lxmyfbscsllxl.com^ -||lxnkuie.com^ -||lxstat.com^ -||lxvluwda.com^ -||lybgzqbuopv.com^ -||lycheenews.com^ -||lychinset.space^ -||lycopuscris.com^ -||lycoty.com^ -||lydebbqcuam.com^ -||lydiacorneredreflect.com^ -||lydiapain.com^ -||lyearsfoundhertob.com^ -||lyfoldqwyihiv.xyz^ -||lygbbkgykzcr.com^ -||lygvtmeaekuv.com^ -||lyingdownt.xyz^ -||lyingshayride.com^ -||lyjcwiwzkq.com^ -||lyjznnanaryaj.top^ -||lylufhuxqwi.com^ -||lylydevelope.com^ -||lynotquitesou.info^ -||lyoak.com^ -||lyonthrill.com^ -||lyricalattorneyexplorer.com^ -||lyricaldefy.com^ -||lyricsgrand.com^ -||lyricslocusvaried.com^ -||lyricsneighbour.com^ -||lyricspartnerindecent.com^ -||lysim-lre.com^ -||lysjpqhhzve.com^ -||lyssapebble.com^ -||lywasnothycanty.info^ -||lyzenoti.pro^ -||lzjl.com^ -||lzqkofsfbympt.com^ -||lzxdx24yib.com^ -||m-rtb.com^ -||m.xrum.info^ -||m0hcppadsnq8.com^ -||m0rsq075u.com^ -||m2.ai^ -||m2pub.com^ -||m2track.co^ -||m32.media^ -||m3cads.com^ -||m4clicks.com^ -||m73lae5cpmgrv38.com^ -||m8ppac2on0xy.com^ -||m9w6ldeg4.xyz^ -||ma2gs3wne3gfej70osium.com^ -||ma3ion.com^ -||maaivkgdulv.com^ -||maaphdiwuoetl.com^ -||mabdkggqleseuhj.com^ -||mabelasateens.com^ -||maboazolsamp.com^ -||mabolmvcuo.com^ -||mabtcaraqdho.com^ -||macacosmarline.top^ -||macan-native.com^ -||macaronibackachebeautify.com^ -||macaroniwalletmeddling.com^ -||machairbren.com^ -||macherazizzle.top^ -||machineryincuroutput.com^ -||machineryvegetable.com^ -||machodongon.com^ -||machogodynamis.com^ -||macomaenteria.top^ -||macro.adnami.io^ -||madadsmedia.com^ -||madampassenger.com^ -||madbridalmomentum.com^ -||madchemical.pro^ -||madcpms.com^ -||maddencloset.com^ -||maddenparrots.com^ -||maddenword.com^ -||madebabysittingimperturbable.com^ -||madeevacuatecrane.com^ -||madehimalowbo.info^ -||madehugeai.live^ -||madeinvasionneedy.com^ -||mademadelavish.com^ -||madesout.com^ -||madeupadoption.com^ -||madeupdependant.com^ -||madlegendlawsuit.com^ -||madlyexcavate.com^ -||madnessindians.com^ -||madratesforall.com^ -||madriyelowd.com^ -||madrogueindulge.com^ -||mads-fe.amazon.com^ -||madsabs.com^ -||madsans.com^ -||madsecs.com^ -||madsecz.com^ -||madserving.com^ -||madsims.com^ -||madsips.com^ -||madskis.com^ -||madslimz.com^ -||madsone.com^ -||madspmz.com^ -||madurird.com^ -||maebtjn.com^ -||maestroconfederate.com^ -||mafon.xyz^ -||mafrarc3e9h.com^ -||mafroad.com^ -||maftirtagetol.website^ -||mafyak.com^ -||magapab.com^ -||magazinenews1.xyz^ -||magazinesfluentlymercury.com^ -||mage98rquewz.com^ -||magetrigla.com^ -||maggotpolity.com^ -||maghoutwell.com^ -||magicalbending.com^ -||magicalfurnishcompatriot.com^ -||magicallyitalian.com^ -||magicianboundary.com^ -||magiciancleopatramagnetic.com^ -||magicianguideours.com^ -||magicianimploredrops.com^ -||magicianoptimisticbeard.com^ -||magicignoresoil.com^ -||magistratehumorousjeep.com^ -||magmasudaller.com^ -||magmbb.com^ -||magniffic-strean.com^ -||magnificent-listen.com^ -||magnificentflametemperature.com^ -||magnificentmanlyyeast.com^ -||magotschnell.uno^ -||magr.cloud^ -||magsrv.com^ -||mahaidroagra.com^ -||mahaplinths.com^ -||mahdicrofter.com^ -||mahourup.xyz^ -||mahuangperosis.cfd^ -||maibaume.com^ -||maidendeprivation.com^ -||maidsiowan.com^ -||maiglair.net^ -||maihigre.net^ -||maihikuh.com^ -||mailboxdoablebasically.com^ -||mailboxleadsphone.com^ -||mailboxmileageattendants.com^ -||mailerrobands.website^ -||mailfdf.com^ -||mailieungka.com^ -||mailmanuptown.com^ -||mailwithcash.com^ -||maimacips.com^ -||maimcatssystems.com^ -||maimeehu.com^ -||maimspeller.com^ -||main-ti-cod.com^ -||mainad-codpp.com^ -||mainadv.com^ -||mainapiary.com^ -||mainnewsfuse.com^ -||mainroll.com^ -||mainsmrtnews.pro^ -||maintainedencircle.com^ -||maintenancewinning.com^ -||maioux.xyz^ -||maipofok.net^ -||maiptica.com^ -||mairbeets.com^ -||maisoope.xyz^ -||maithigloab.net^ -||maithooh.net^ -||majasgaol.com^ -||majesticinsensitive.com^ -||majesticrepresentative.pro^ -||majesticsecondary.com^ -||majestyafterwardprudent.com^ -||majestybrightennext.com^ -||majomalonic.com^ -||major-video.click^ -||major.dvanadva.ru^ -||majordistinguishedguide.com^ -||majorhalfmoon.com^ -||majoriklink.com^ -||majoritycrackairport.com^ -||majorityevaluatewiped.com^ -||majorityfestival.com^ -||majorpusher1.com^ -||majorpushme1.com^ -||majorpushme3.com^ -||majorsmi.com^ -||majortoplink.com^ -||majorworkertop.com^ -||makeencampmentamoral.com^ -||makemehappy.mom^ -||makemyvids.com^ -||makesembezzlementconsume.com^ -||makethebusiness.com^ -||makeupenumerate.com^ -||makingbookworm.com^ -||makingdevil.com^ -||makingnude.com^ -||malastasho.pro^ -||malay.buzz^ -||maldini.xyz^ -||maleliteral.com^ -||malelocated.com^ -||malief.com^ -||malignantbriefcaseleading.com^ -||malletaskewbrittle.com^ -||malleteighteen.com^ -||mallettraumatize.com^ -||malleusvialed.com^ -||mallinitially.com^ -||malljazz.com^ -||malnutritionbedroomtruly.com^ -||malnutritionvisibilitybailiff.com^ -||malowbowohefle.info^ -||maltcontaining.com^ -||maltohoo.xyz^ -||maltunfaithfulpredominant.com^ -||mamaapparent.com^ -||mamblubamblua.com^ -||mamerscastor.top^ -||mamluksburion.com^ -||mammaclassesofficer.com^ -||mammalbuy.com^ -||mammaldealbustle.com^ -||mammalsidewaysthankful.com^ -||mammeysterrae.com^ -||mammocksambos.com^ -||mammothdumbest.com^ -||mamoth-deals.com^ -||mamotyauxesis.space^ -||mamrydoina.top^ -||mamydirect.com^ -||man2ch5836dester.com^ -||managementhans.com^ -||manageoriginalmostinfo-product.info^ -||managesborerecords.com^ -||manahegazedatth.info^ -||manboo.xyz^ -||manbycus.com^ -||manbycustom.org^ -||manconsider.com^ -||mandantnutter.top^ -||mandatorycaptaincountless.com^ -||mandrintamoyo.top^ -||manduzo.xyz^ -||manentsysh.info^ -||manesscrass.com^ -||manetgauzily.life^ -||maneuptown.com^ -||mangensaud.net^ -||mangoalmahs.com^ -||mangzoi.xyz^ -||maniasensiblecompound.com^ -||maniatoile.com^ -||maniconclavis.com^ -||manicurereprimand.com^ -||manifefashiona.info^ -||manipulativegraphic.com^ -||manlytribute.com^ -||mannerconflict.com^ -||manoeuvrestretchingpeer.com^ -||manoirshrine.com^ -||manorfunctions.com^ -||manpowersets.com^ -||manrootarbota.com^ -||mansernema.com^ -||mansfieldeffects.com^ -||manslaughterhallucinateenjoyment.com^ -||mansudee.net^ -||mantapareseat.com^ -||manualbleedingand.com^ -||manualcasketlousy.com^ -||manualdin.com^ -||manufacturerscenery.com^ -||manufacturerscornful.com^ -||manureoddly.com^ -||manurepungentfew.com^ -||manuretravelingaroma.com^ -||manzosui.xyz^ -||mapakrogngi.com^ -||mapamnni.com^ -||mapbovdpdy.com^ -||maper.info^ -||maplecurriculum.com^ -||maquiags.com^ -||marantaarmures.guru^ -||marapcana.online^ -||marazma.com^ -||marbct.xyz^ -||marbil24.co.za^ -||marbleapplicationsblushing.com^ -||marbleborrowedours.com^ -||marchedrevolution.com^ -||marcherfilippo.com^ -||marchesbragged.com^ -||marchingdishonest.com^ -||marchingpostal.com^ -||marcoscrupulousmarks.com^ -||marecreateddew.com^ -||marepuffy.com^ -||mareswimming.com^ -||margaritaimmense.com^ -||marial.pro^ -||marianneflog.com^ -||mariannestanding.com^ -||mariaretiredave.com^ -||marimedia.com^ -||marinadewomen.com^ -||marinegruffexpecting.com^ -||marineingredientinevitably.com^ -||maritaltrousersidle.com^ -||markedoneofthe.info^ -||markerleery.com^ -||marketcreatedwry.com^ -||marketgid.com^ -||marketingabsentremembered.com^ -||marketingbraid.com^ -||marketingenhanced.com^ -||marketinghinder.com^ -||marketland.me^ -||markofathenaluk.com^ -||markreptiloid.com^ -||markshospitalitymoist.com^ -||marktworks.com^ -||markxa.xyz^ -||marlpitbucku.com^ -||marormesole.com^ -||marphezis.com^ -||marreerouens.com^ -||marriervertep.digital^ -||marrowopener.com^ -||marryclamour.com^ -||marryingsakesarcastic.com^ -||marshagalea.com^ -||marshakhula.top^ -||marshwhisper.com^ -||marspearelct.com^ -||martafatass.pro^ -||martcubic.com^ -||martenconstellation.com^ -||marti-cqh.com^ -||martinvitations.com^ -||martuconfuse.com^ -||martugnem.com^ -||martyrcontrol.com^ -||martyrvindictive.com^ -||marvedesderef.info^ -||marvelbuds.com^ -||marvelhuntcountry.com^ -||marvellouspeaches.com^ -||marvellousperforming.com^ -||marvelrespectableinset.com^ -||masakeku.com^ -||masaxe.xyz^ -||masbpi.com^ -||masculineillness.com^ -||masculyanoine.top^ -||mashsuicidal.com^ -||masklink.org^ -||masonopen.com^ -||masontotally.com^ -||masqueradeentrustveneering.com^ -||masqueradeflashy.com^ -||massacreintentionalmemorize.com^ -||massacresurrogate.com^ -||massariuscdn.com^ -||massbrag.care^ -||massecephid.uno^ -||masserfusty.top^ -||massesnieces.com^ -||massivetreadsuperior.com^ -||massiveunnecessarygram.com^ -||mastercodepink.com^ -||masterfrowne.org^ -||masterpieceplainlythird.com^ -||mastexpelledsink.com^ -||mastinstungmoreal.com^ -||masturbaseinvegas.com^ -||matchaix.net^ -||matchingundertake.com^ -||matchjunkie.com^ -||matchuph.com^ -||matecatenae.com^ -||materialfirearm.com^ -||maternaltypicalattendance.com^ -||maternityiticy.com^ -||mathads.com^ -||mathematicalma.info^ -||mathneedle.com^ -||mathsdelightful.com^ -||mathssyrupword.com^ -||maticalmasterouh.info^ -||matildawu.online^ -||matiro.com^ -||matokeassyria.com^ -||matreedknifes.com^ -||matrix-news.org^ -||matswhyask.cam^ -||matterlanguidmidnight.com^ -||mattockpackall.com^ -||mattressashamed.com^ -||mattressstumpcomplement.com^ -||matzohshoey.com^ -||mauchopt.net^ -||maudau.com^ -||maugoops.xyz^ -||mauhara.com^ -||maulupoa.com^ -||mauptaub.com^ -||mautifasa.xyz^ -||mavq.net^ -||maw5r7y9s9helley.com^ -||mawhhjoastprrd.com^ -||mawlaybob.com^ -||mawmishtrior.com^ -||maxbounty.com^ -||maxconvtrk.com^ -||maxigamma.com^ -||maxim.pub^ -||maximherein.com^ -||maximtoaster.com^ -||maximumductpictorial.com^ -||maximumimmortality.com^ -||maxocdgras.com^ -||maxonclick.com^ -||maxprofitcontrol.com^ -||maxserving.com^ -||maxytrk.com^ -||maybejanuarycosmetics.com^ -||maybenowhereunstable.com^ -||mayberesemble.com^ -||maydeception.com^ -||maydoubloonsrelative.com^ -||mayhemabjure.com^ -||mayhemreconcileneutral.com^ -||mayhemsixtydeserves.com^ -||mayhemsurroundingstwins.com^ -||maylnk.com^ -||maymooth-stopic.com^ -||mayonnaiseplumbingpinprick.com^ -||mayorfifteen.com^ -||mayorfound.com^ -||mayorleap.com^ -||maypacklighthouse.com^ -||maysunown.live^ -||mayule.xyz^ -||mazefoam.com^ -||mb-npltfpro.com^ -||mb01.com^ -||mb102.com^ -||mb103.com^ -||mb104.com^ -||mb38.com^ -||mb57.com^ -||mbdfidszzlo.com^ -||mbdippex.com^ -||mbewimcotjri.com^ -||mbgufryceqkoap.com^ -||mbidadm.com^ -||mbidinp.com^ -||mbidpsh.com^ -||mbindu.com^ -||mbjrkm2.com^ -||mbledeparatea.com^ -||mblhzlqkhukry.com^ -||mbnot.com^ -||mboriviragin.com^ -||mbphiclx.com^ -||mbreviewer.com^ -||mbreviews.info^ -||mbstrk.com^ -||mbtennu.com^ -||mbtgcagioorcw.com^ -||mbuncha.com^ -||mbundabarony.top^ -||mbvfawgcsnukb.com^ -||mbvlmx.com^ -||mbvlmz.com^ -||mbvndisplay.site^ -||mbvsm.com^ -||mbxudcghfy.com^ -||mc7clurd09pla4nrtat7ion.com^ -||mcahjwf.com^ -||mcdote.com^ -||mcfstats.com^ -||mcinyaqeaeyrhf.com^ -||mcizas.com^ -||mckensecuryr.info^ -||mclude.com^ -||mcovipqaxq.com^ -||mcpdqfnvluhpwt.com^ -||mcppsh.com^ -||mcpuwpsh.com^ -||mcpuwpush.com^ -||mcqgfoc.com^ -||mcrfncrswbeka.com^ -||mctailqwjke.com^ -||mcurrentlyse.shop^ -||mcurrentlysea.info^ -||mcvwjzj.com^ -||mcxmke.com^ -||mcycity.com^ -||mczbf.com^ -||mdadx.com^ -||mdcytqwnbr.com^ -||mddsp.info^ -||mdghnrtegwuqar.com^ -||mdoirsw.com^ -||mdpycygel.com^ -||mdwmrmfsimtabb.com^ -||me4track.com^ -||me6q8.top^ -||me7x.site^ -||meadowdocumentcaprizecaprize.com^ -||meager-object.com^ -||meagplin.com^ -||mealierbani.digital^ -||mealplanningideas.com^ -||mealrake.com^ -||meandiminutionhit.com^ -||meanieichnite.com^ -||meaningfullandfallbleat.com^ -||meaningfunnyhotline.com^ -||meantimechimneygospel.com^ -||meantscarlet.com^ -||meaofscnjt.com^ -||measlyglove.pro^ -||measts.com^ -||measuredlikelihoodperfume.com^ -||measuredsanctify.com^ -||measuredshared.com^ -||measurementaz.com^ -||measuringcabinetclerk.com^ -||measuringrules.com^ -||meatytell.pro^ -||meawo.cloud^ -||mebeptxj.com^ -||mechaelpaceway.com^ -||mechanicalcardiac.com^ -||meckvpiey.com^ -||meconicoutfish.com^ -||meddleachievehat.com^ -||meddlekilled.com^ -||meddlingwager.com^ -||medfoodsafety.com^ -||medfoodspace.com^ -||medfoodtech.com^ -||medgoodfood.com^ -||media-412.com^ -||media-general.com^ -||media-sapiens.com^ -||media-servers.net^ -||media6degrees.com^ -||media970.com^ -||mediaappletree.com^ -||mediabelongkilling.com^ -||mediaclick.com^ -||mediacpm.com^ -||mediaf.media^ -||mediaforge.com^ -||mediagridwork.com^ -||medianmuftis.com^ -||mediaoaktree.com^ -||mediaonenetwork.net^ -||mediapalmtree.com^ -||mediapeartree.com^ -||mediapush1.com^ -||mediasama.com^ -||mediaserf.net^ -||mediaspineadmirable.com^ -||mediasprucetree.com^ -||mediatebrazenmanufacturer.com^ -||mediative.ca^ -||mediative.com^ -||mediatraks.com^ -||mediaver.com^ -||mediaxchange.co^ -||medical-aid.net^ -||medicalcandid.com^ -||medicalpossessionlint.com^ -||medicationlearneddensity.com^ -||medicationneglectedshared.com^ -||medicineflogaccumulate.com^ -||medimnbream.top^ -||medinewaps.com^ -||mediocrecount.com^ -||meditateenhancements.com^ -||mediuln.com^ -||mediumtunapatter.com^ -||medleyads.com^ -||medoofty.com^ -||medullapreppy.top^ -||medusasglance.com^ -||medyanetads.com^ -||meedaihaiy.com^ -||meeewms.com^ -||meekcomplaint.pro^ -||meekscooterliver.com^ -||meelaque.com^ -||meemichob.com^ -||meenetiy.com^ -||meepsaph.xyz^ -||meepwrite.com^ -||meerihoh.net^ -||meestuch.com^ -||meet4you.net^ -||meet4youu.com^ -||meet4youu.net^ -||meetic-partners.com^ -||meetingcoffeenostrils.com^ -||meetingcupule.com^ -||meetingrailroad.com^ -||meetwebclub.com^ -||meewireg.com^ -||meezauch.net^ -||mefestivalbout.com^ -||megaad.nz^ -||megabookline.com^ -||megacot.com^ -||megadeliveryn.com^ -||megae-aqn.com^ -||megapodacutest.digital^ -||megdexchange.com^ -||meghis.com^ -||megmobpoi.club^ -||megnotch.xyz^ -||meharisgrabs.com^ -||meinxovwep.com^ -||meksicie.net^ -||mekstolande.com^ -||meleguetre.com^ -||melhvsfwueuvx.com^ -||meligh.com^ -||melindacst.com^ -||melit-zoy.com^ -||mellodur.net^ -||mellonidolon.com^ -||mellsrecta.com^ -||melnhroru.com^ -||melodramaticlaughingbrandy.com^ -||melodyplans.com^ -||melongetplume.com^ -||melonransomhigh.com^ -||meltaigh.net^ -||meltedacrid.com^ -||meltembrace.com^ -||meltyoungmarijuana.com^ -||melyapons.top^ -||membersattenuatejelly.com^ -||memberscrisis.com^ -||membershipimmunitysport.com^ -||memia.xyz^ -||memorableanticruel.com^ -||memorablecutletbet.com^ -||memorableeditor.com^ -||memoriagamine.com^ -||memorizematch.com^ -||menacehabit.com^ -||menacing-awareness.pro^ -||mendationforca.info^ -||mendedrefuel.com^ -||mendress.icu^ -||mendslaughter.com^ -||meniscigox.digital^ -||menlithium.com^ -||mentalincomprehensiblealien.com^ -||mentallyissue.com^ -||mentionedpretentious.com^ -||mentionedrubbing.com^ -||mentiopportal.org^ -||mentorconform.com^ -||mentoremotionapril.com^ -||mentrandi.com^ -||mentswithde.com^ -||mentxviewsinte.info^ -||mentxviewsinterf.info^ -||menui.xyz^ -||menyiesekos.digital^ -||meo257na3rch.com^ -||meofmukindwoul.info^ -||meoneinthew.com^ -||meowpushnot.com^ -||meowthon.com^ -||merchenta.com^ -||mercifulsurveysurpass.com^ -||mercuras.com^ -||mercuryprettyapplication.com^ -||mercurysugarconsulting.com^ -||mercurywindscreencane.com^ -||merelysqueak.com^ -||mergebroadlyclenched.com^ -||mergedlava.com^ -||mergeindigenous.com^ -||mergerecoil.com^ -||mergessidi.com^ -||mergussoy.com^ -||merig.xyz^ -||meritabroadauthor.com^ -||meritedgasser.com^ -||merligopotlid.com^ -||meropeafrown.top^ -||merry-hearing.pro^ -||merryindecisionremained.com^ -||merterpazar.com^ -||merzostueru2hu8jr09.com^ -||meseyktphwwxq.com^ -||mesilswwroiu.com^ -||meslameighty.com^ -||mesmerizebeasts.com^ -||mesmerizemutinousleukemia.com^ -||mesozoabandh.com^ -||mesqwrte.net^ -||messagereceiver.com^ -||messenger-notify.digital^ -||messenger-notify.xyz^ -||messiahspoot.com^ -||messy-concentrate.com^ -||messymeter.com^ -||mestoaxo.net^ -||mestreqa.com^ -||mestupidity.com^ -||metaeatage.life^ -||metahv.xyz^ -||metalbow.com^ -||metallcorrupt.com^ -||metasterisk.com^ -||metatestruck.com^ -||metatrckpixel.com^ -||metavertising.com^ -||metavertizer.com^ -||meteorclashbailey.com^ -||meteordentproposal.com^ -||metesmaculae.com^ -||metfoetushandicraft.com^ -||methodfluyts.top^ -||methodslacca.top^ -||methoxyunpaled.com^ -||metingsaeta.com^ -||metinkuba.com^ -||metorealiukz.org^ -||metosk.com^ -||metotreatwithdify.info^ -||metrebeggary.digital^ -||metredesculic.com^ -||metrica-yandex.com^ -||metricattempt.com^ -||metrics.io^ -||metricswpsh.com^ -||metsaubs.net^ -||mettlecrating.com^ -||metwandfertile.top^ -||metzia.xyz^ -||mevarabon.com^ -||mewgzllnsp.com^ -||mewlstomolo.top^ -||mexicantransmission.com^ -||meyopuae.com^ -||meyximegrgypnv.com^ -||mf233y3dg6n.shop^ -||mfabxfb.com^ -||mfadsrvr.com^ -||mfbarfvjk.com^ -||mfbjifwyieopx.com^ -||mfceqvxjdownjm.xyz^ -||mfcewkrob.com^ -||mfhlsdd.com^ -||mfk-cpm.com^ -||mflztgubvfo.com^ -||mfofgdhtv.com^ -||mfqfgjftee.com^ -||mfthkdj.com^ -||mftracking.com^ -||mfuginehls.com^ -||mgcash.com^ -||mgdjmp.com^ -||mgdtnwnjwewlph.com^ -||mghkpg.com^ -||mgjgqztw.com^ -||mgjnmfhyis.xyz^ -||mglvfetiub.com^ -||mgrcghccvk.com^ -||mgtrgjwmwuirx.com^ -||mgxqqtrdse.com^ -||mgxxuqp.com^ -||mgyccfrshz.com^ -||mh9dskj8jg.com^ -||mhadsd.com^ -||mhboxleky.com^ -||mhbyzzp.com^ -||mhcfsjbqw.com^ -||mhdiaok.com^ -||mhdprkwje.com^ -||mheniwwacl.com^ -||mhgshawy.guru^ -||mhhr.cloud^ -||mhkvktz.com^ -||mhqjiaxpenfw.com^ -||mhrpusbstm.com^ -||mhtgdirbo.com^ -||mhvllvgrefplg.com^ -||mhwpwcj.com^ -||mi82ltk3veb7.com^ -||miaeglaring.uno^ -||miamribud.com^ -||miaouedcrevass.com^ -||miayarus.com^ -||miboundwhiffet.com^ -||micastpyridic.com^ -||micastskangli.com^ -||micechillyorchard.com^ -||micghiga2n7ahjnnsar0fbor.com^ -||michealmoyite.com^ -||micmacsortes.com^ -||microad.net^ -||microadinc.com^ -||micronsecho.com^ -||microscopeattorney.com^ -||microscopeunderpants.com^ -||microwavedisguises.com^ -||microwavemay.com^ -||midastouchrt.com^ -||middaypredicamentnephew.com^ -||middleagedlogineveryone.com^ -||middleagedreminderoperational.com^ -||midgetdeliveringsmartly.com^ -||midgetincidentally.com^ -||midistortrix.com^ -||midlandfeisty.com^ -||midmaintee.com^ -||midmornsarinda.website^ -||midnightconsessionconsession.com^ -||midnightcontemn.com^ -||midnoonfrigate.shop^ -||midootib.net^ -||midpopedge.com^ -||midstconductcanned.com^ -||midstdropped.com^ -||midstpoor.com^ -||midstrelate.com^ -||midstwillow.com^ -||midsummerinoculate.com^ -||midtermbuildsrobot.com^ -||midwifelangurs.com^ -||midwiferider.com^ -||miggslxuqlowz.com^ -||mightyhulsjdk.com^ -||mightylottrembling.com^ -||mightytshirtsnitch.com^ -||migimsas.net^ -||mignished-sility.com^ -||mignonsniper.com^ -||migopwrajhca.com^ -||migrantacknowledged.com^ -||migrantfarewellmoan.com^ -||migrantspiteconnecting.com^ -||migrationscale.com^ -||migrationscarletquick.com^ -||migric.com^ -||mikeylaude.com^ -||mikhrmpwbtrip.com^ -||mikop.xyz^ -||milasktic.com^ -||mildarmorynodding.com^ -||mildcauliflower.com^ -||mildlyrambleadroit.com^ -||mildoverridecarbonate.com^ -||mildredsnareinsolent.com^ -||mileesidesu.org^ -||milesdrone.com^ -||milestoneinvitedflutter.com^ -||milfunsource.com^ -||militiatillers.top^ -||milkejusd.website^ -||milksquadronsad.com^ -||milkygoodness.xyz^ -||milkywaynewspaper.com^ -||millennialmedia.com^ -||millerminds.com^ -||millierinlaces.com^ -||millionsafternoonboil.com^ -||millionsskinny.com^ -||milljeanne.com^ -||millsurfaces.com^ -||millustry.top^ -||milordsupbbore.com^ -||milteept.xyz^ -||miltlametta.com^ -||miluwo.com^ -||mimicbeeralb.com^ -||mimicdisperse.com^ -||mimilcnf.pro^ -||mimosaavior.top -||mimosaavior.top^ -||mimxdsqiativb.com^ -||mindamender.com^ -||mindedcarious.com^ -||minderalasselfemployed.com^ -||mindless-fruit.pro^ -||mindlessindignantlimbs.com^ -||mindlessnight.com^ -||mindlessslogan.com^ -||mindlessswim.pro^ -||mindssometimes.com^ -||minefieldripple.com^ -||minehighs.com^ -||minently.com^ -||mineralscreamrobes.com^ -||mineraltip.com^ -||mingleabstainsuccessor.com^ -||mingledcommit.com^ -||minglefrostgrasp.com^ -||mingonnigh.com^ -||miniaturechain.pro^ -||miniaturecomfortable.com^ -||miniatureoffer.pro^ -||miniglobalcitizens.com^ -||minimize363.fun^ -||minimizetommyunleash.com^ -||minimumacquitteam.com^ -||minimumonwardfertilised.com^ -||minimviolone.life^ -||ministryensuetribute.com^ -||minivetossal.top^ -||minorityspasmodiccommissioner.com^ -||minotaur107.com^ -||minsaith.xyz^ -||mintclick.xyz^ -||mintmanunmanly.com^ -||mintybug.com^ -||minutesdevise.com^ -||minutessongportly.com^ -||miracslubs.com^ -||miraculousregimentabbreviate.com^ -||miraells.top^ -||miredindeedeisas.info^ -||mirfakpersei.top^ -||mirroraddictedpat.com^ -||mirsuwoaw.com^ -||mirtacku.xyz^ -||mirthnonpar.com^ -||mirthrehearsal.com^ -||misaboi.com^ -||misacttaruma.com^ -||misaglam.com^ -||misarea.com^ -||miscalculatesuccessiverelish.com^ -||miscellaneousheartachehunter.com^ -||mischiefrealizationbraces.com^ -||mischiefwishes.com^ -||misctool.xyz^ -||miscur.com^ -||misenab.com^ -||miserable-discount.com^ -||miserablefocus.com^ -||miserdiscourteousromance.com^ -||miseryclevernessusage.com^ -||misfields.com^ -||misfortunedelirium.com^ -||misgala.com^ -||misguidedfind.com^ -||misguidedfriend.pro^ -||misguidednourishing.com^ -||mishandlemole.com^ -||mishapideal.com^ -||mishapsummonmonster.com^ -||miskoru.com^ -||mislaer.com^ -||mismaum.com^ -||mismeancohosh.com^ -||misosaloud.com^ -||missilesocalled.com^ -||missilesurvive.com^ -||missionaryhypocrisypeachy.com^ -||missioncontinuallywarp.com^ -||missiondues.com^ -||missitzantiot.com^ -||misslinkvocation.com^ -||misslk.com^ -||misspelluptown.com^ -||misspkl.com^ -||misstaycedule.com^ -||misszuo.xyz^ -||mistakeadministrationgentlemen.com^ -||mistakeenforce.com^ -||mistakeidentical.com^ -||misterbangingfancied.com^ -||misterdefrostale.com^ -||mistletoeethicleak.com^ -||mistletoeforensics.com^ -||mistrustconservation.com^ -||mistydexterityflippant.com^ -||misunderstandrough.com^ -||misuseartsy.com^ -||misusefreeze.com^ -||misuseoyster.com^ -||misuseproductions.com^ -||misyuni.com^ -||mitosisaralia.top^ -||mitowdcagos.com^ -||mittenheatdied.com^ -||miuo.cloud^ -||miveci.uno^ -||miwllmo.com^ -||mixandfun.com^ -||mixclckchat.net^ -||mixeavocat.com^ -||mixedpianist.com^ -||mixerssouagga.com^ -||mixescineols.uno^ -||mixhillvedism.com^ -||mixpo.com^ -||mizensdisney.com^ -||mjdauebjosbtcsb.xyz^ -||mjehvuwgy.com^ -||mjeltachv.com^ -||mjgvrxbu.com^ -||mjjjhfgqqpt.com^ -||mjnomtahm.com^ -||mjsytjw.com^ -||mjterajvyil.com^ -||mjudrkjajgxx.xyz^ -||mjvnpybcakx.com^ -||mjxvufetukfrav.com^ -||mjzrebrjty.com^ -||mkcurches.com^ -||mkeliihb.com^ -||mkenativji.com^ -||mkepacotck.com^ -||mkgiiijigxwwn.com^ -||mkhoj.com^ -||mkihakfuzv.com^ -||mkjsqrpmxqdf.com^ -||mkkvprwskq.com^ -||mklllwakbplp.com^ -||mkwioruxtpop.com^ -||mkxfbiwcet.com^ -||ml0z14azlflr.com^ -||ml314.com^ -||mlatrmae.net^ -||mldfckinkpyhwk.com^ -||mldxqrntd.xyz^ -||mlhdmotenu.com^ -||mlhmaoqf.xyz^ -||mljcfymfve.com^ -||mlkpbktmqrsry.com^ -||mllatydz.com^ -||mlnadvertising.com^ -||mlnsetyxcut.com^ -||mlnybwnbwzhiy.com^ -||mloxcnrt.com^ -||mlpeqwkruffs.com^ -||mlqyyucumcoxum.com^ -||mlrfltuc.com^ -||mlrrvusoiebaox.com^ -||mlsys.xyz^ -||mltunxdmrv.com^ -||mluemlmxn.com^ -||mluptwapaj.com^ -||mlvlesvw.com^ -||mlwstbdnwdfyng.com^ -||mlxanxnktseoxm.com^ -||mlzxfwvonky.com^ -||mm-cgnews.com^ -||mm-syringe.com^ -||mmadsgadget.com^ -||mmchoicehaving.com^ -||mmctsvc.com^ -||mmczmfgpq.com^ -||mmdyvkndcsiw.com^ -||mmentorapp.com^ -||mmgads.com^ -||mmismm.com^ -||mmjfnxx.com^ -||mmjjnufyaadr.com^ -||mmjoxlxv.com^ -||mmliwvbw.com^ -||mmmdn.net^ -||mmmytckae.com^ -||mmoddkdn.com^ -||mmondi.com^ -||mmotraffic.com^ -||mmphijndajxiui.com^ -||mmpxrajwrbpcylq.com^ -||mmqvujl.com^ -||mmsmpjtksdnjqw.com^ -||mmtnat.com^ -||mmutpubcaegu.com^ -||mmvideocdn.com^ -||mmxshltodupdlr.xyz^ -||mn1nm.com^ -||mn230126pb.com^ -||mnaspm.com^ -||mnaujmo.com^ -||mnbvjhg.com^ -||mncvjhg.com^ -||mndjcojpsdcr.com^ -||mndlvr.com^ -||mndsrv.com^ -||mndvjhg.com^ -||mnekumtrssln.com^ -||mneljcvkiwe.xyz^ -||mnetads.com^ -||mnevjhg.com^ -||mng-ads.com^ -||mnhjk.com^ -||mnhjkl.com^ -||mnodtbmmomqo.com^ -||mnoglcfv.com^ -||mnribbbn.xyz^ -||mntzr11.net^ -||mntzrlt.net^ -||mnvgvhksif.com^ -||mnwjxqwt.xyz^ -||mnzznvpktnqtmm.com^ -||mo3i5n46.de^ -||mo9jr8ie6sier3an.com^ -||moadworld.com^ -||moaglail.xyz^ -||moagroal.com^ -||moakaumo.com^ -||moanhaul.com^ -||moaningbeautifulnobles.com^ -||moaningtread.com^ -||moanomoa.xyz^ -||moapaglee.net^ -||moapevuwtv.com^ -||moapuwhe.com^ -||moartraffic.com^ -||moastizi.xyz^ -||moatads.com^ -||moawgsfidoqm.com^ -||moawhoumahow.com^ -||mob1ledev1ces.com^ -||mobalert.net^ -||mobdel2.com^ -||mobexpectationofficially.com^ -||mobgold.com^ -||mobibiobi.com^ -||mobicont.com^ -||mobicow.com^ -||mobidevdom.com^ -||mobiflyc.com^ -||mobiflyd.com^ -||mobiflys.com^ -||mobifobi.com^ -||mobifoth.com^ -||mobile5shop.com^ -||mobiledevel.com^ -||mobileoffers-7-j-download.com^ -||mobileoffers-ac-download.com^ -||mobileoffers-dld-download.com^ -||mobileoffers-downloadapp-a.com^ -||mobileoffers-ep-download.com^ -||mobilepreviouswicked.com^ -||mobiletracking.ru^ -||mobipromote.com^ -||mobiright.com^ -||mobisla.com^ -||mobitracker.info^ -||mobiyield.com^ -||mobmsgs.com^ -||mobnotices.com^ -||mobpartner.mobi^ -||mobpushup.com^ -||mobreach.com^ -||mobshark.net^ -||mobstitial.com^ -||mobstrks.com^ -||mobthoughaffected.com^ -||mobtrendinsanity.com^ -||mobtrks.com^ -||mobtyb.com^ -||mobytrks.com^ -||mocean.mobi^ -||mockingcard.com^ -||mockingchuckled.com^ -||mockingcolloquial.com^ -||mockingsubtlecrimpycrimpy.com^ -||mocmubse.net^ -||modelingfraudulent.com^ -||modents-diance.com^ -||modepatheticms.com^ -||moderategermmaria.com^ -||modescrips.info^ -||modificationdispatch.com^ -||modifymaintenance.com^ -||modifywilliamgravy.com^ -||modiolitorah.top^ -||modoro360.com^ -||modulecooper.com^ -||moduledescendantlos.com^ -||modulepush.com^ -||moedgapers.com^ -||moera.xyz^ -||moetconfisk.top^ -||mofettecalmed.com^ -||moggedexterne.com^ -||mogointeractive.com^ -||mogulcrambos.top^ -||mohiwhaileed.com^ -||moilizoi.com^ -||moistblank.com^ -||moistcargo.com^ -||moistenmanoc.com^ -||moistentrailed.top^ -||mojoaffiliates.com^ -||mojogike.net^ -||mokotoparch.top^ -||mokrqhjjcaeipf.xyz^ -||moksoxos.com^ -||moleconcern.com^ -||molecularhouseholdadmiral.com^ -||molemarshy.com^ -||moligh.com^ -||mollandgleam.top^ -||molseelr.xyz^ -||molttenglobins.casa^ -||molypsigry.pro^ -||momclumsycamouflage.com^ -||momecubane.com^ -||momentarilyhalt.com^ -||momentincorrect.com^ -||momentumgreenhouseexpert.com^ -||momhomicidalspa.com^ -||momhseym.com^ -||momijoy.ru^ -||mommygravelyslime.com^ -||monacharabbler.website^ -||monadplug.com^ -||monadvs.com^ -||monamudden.digital^ -||monarchoysterbureau.com^ -||monarchracistsparkle.com^ -||monarchstraightforwardfurnish.com^ -||monasterymedication.com^ -||moncoerbb.com^ -||mondaydeliciousrevulsion.com^ -||mondayscan.com^ -||monetag.com^ -||monetheulogic.com^ -||monetizer101.com^ -||moneycosmos.com^ -||moneymak3rstrack.com^ -||moneymakercdn.com^ -||moneytatorone.com^ -||monhax.com^ -||monismartlink.com^ -||monitormilletstray.com^ -||monitorpeachy.com^ -||monkeybroker.net^ -||monkeysloveyou.com^ -||monkeyunseen.com^ -||monkquestion.com^ -||monksfoodcremate.com^ -||monksmilestonewill.com^ -||monnionyusdrum.com^ -||monopolydecreaserelationship.com^ -||monsoonlassi.com^ -||monsterofnews.com^ -||monstrous-boyfriend.pro^ -||monstrousrowandays.com^ -||montafp.top^ -||montangop.top^ -||monthcurrencybeam.com^ -||monthsappear.com^ -||monthsshefacility.com^ -||montkpl.top^ -||montkyodo.top^ -||montlusa.top^ -||montnotimex.top^ -||montpdp.top^ -||montwam.top^ -||monumentcountless.com^ -||monumentsmaterialeasel.com^ -||monutroco.com^ -||monxserver.com^ -||moocaicaico.com^ -||moochbeacher.com^ -||moochescramper.com^ -||moodokay.com^ -||moodtypewriterjug.com^ -||moodunitsmusic.com^ -||mookie1.com^ -||moonads.net^ -||mooncklick.com^ -||moonheappyr.com^ -||moonicorn.network^ -||moonjahaphodal.com^ -||moonjscdn.info^ -||moonoafy.net^ -||moonovernegril.com^ -||moonrocketaffiliates.com^ -||moontuftboy.com^ -||moonveto.com^ -||moonvids.online^ -||moonvids.space^ -||mooroore.xyz^ -||mootermedia.com^ -||mootingunwist.com^ -||mootingureic.com^ -||mooxar.com^ -||mopedisods.com^ -||mopefrequent.com^ -||mopeia.xyz^ -||mopemodelingfrown.com^ -||mopesrubelle.com^ -||moplahsoleil.top^ -||moracy.com^ -||moradu.com^ -||moral-enthusiasm.pro^ -||moralitylameinviting.com^ -||morbidproblem.com^ -||morbitempus.com^ -||morclicks.com^ -||mordoops.com^ -||moregamers.com^ -||morenonfictiondiscontent.com^ -||moreoverwheelbarrow.com^ -||moretestimonyfearless.com^ -||morgdm.ru^ -||morgendervish.cfd^ -||morguebattle.com^ -||morgueflabbergasted.com^ -||morict.com^ -||morionsluigini.digital^ -||morningamidamaruhal.com^ -||morningglory101.io^ -||moronesphotos.com^ -||morrolorries.top^ -||morrowfreezer.com^ -||morsalurluch.com^ -||mortgagelunchtimedistrustuldistrustul.com^ -||mortifyfelony.com^ -||mortoncape.com^ -||mortypush.com^ -||moscowautopsyregarding.com^ -||mosqueworking.com^ -||mosquitofelicity.com^ -||mosquitosubjectsimportantly.com^ -||mosrtaek.net^ -||mossgaietyhumiliation.com^ -||mossimitosis.com^ -||mosswhinepanther.com^ -||mostauthor.com^ -||mostdeport.com^ -||mostlyparabledejected.com^ -||mostlysolecounsellor.com^ -||mostlytreasure.com^ -||motelproficientsmartly.com^ -||mothandhad.info^ -||mothandhadbe.info^ -||motherehoom.pro^ -||motherhoodlimiteddetest.com^ -||mothifta.xyz^ -||mothima.com^ -||mothwetcheater.com^ -||motionless-range.pro^ -||motionretire.com^ -||motionsablehostess.com^ -||motionsaucermentioned.com^ -||motionspots.com^ -||motiveblizzardstiffen.com^ -||motivedtheatre.cfd^ -||motivefantee.top^ -||motivessuggest.com^ -||motleyanybody.com^ -||motsardi.net^ -||mouldedgypsite.com^ -||moultedpiroot.space^ -||moulterrouses.top^ -||moumstetjk.com^ -||mounaiwu.net^ -||mountainbender.xyz^ -||mountaincaller.top^ -||mountaingaiety.com^ -||mountainwavingequability.com^ -||mountedgrasshomesick.com^ -||mountedstoppage.com^ -||mountrideroven.com^ -||mourndaledisobedience.com^ -||mournfulparties.com^ -||mourningmillsignificant.com^ -||mourningonionthing.com^ -||mournpatternremarkable.com^ -||mourntrick.com^ -||mouseespendle.top^ -||mouseforgerycondition.com^ -||mousmeetrike.com^ -||moustachepoke.com^ -||mouthaipee.xyz^ -||mouthdistance.bond^ -||mouthinvincibleexpecting.com^ -||movad.de^ -||movad.net^ -||movcpm.com^ -||movemeforward.co^ -||movementdespise.com^ -||movementgang.com^ -||movemybackup.co^ -||moverenvironmentalludicrous.com^ -||moverl.com^ -||movesickly.com^ -||moveyouforward.co^ -||moveyourbackup.co^ -||moveyourdesk.co^ -||movfull.com^ -||movie-pass.club^ -||movie-pass.live^ -||moviead55.ru^ -||moviesflix4k.info^ -||moviesflix4k.xyz^ -||moviesprofit.com^ -||moviesring.com^ -||mowcawdetour.com^ -||mowdzgbusbqug.com^ -||mowhamsterradiator.com^ -||moxuthoo.net^ -||moycheiistill.com^ -||moylfustics.com^ -||mozgvya.com^ -||mozoo.com^ -||mp-pop.barryto.one^ -||mp3bars.com^ -||mp3dance.today^ -||mp3pro.xyz^ -||mp3vizor.com^ -||mpabqjdlyfec.xyz^ -||mpafnyfiexpe.net^ -||mpanyinadi.info^ -||mpanythathav.info^ -||mpanythathaveresultet.info^ -||mpay69.com^ -||mpbohwtqqnw.com^ -||mpbpuctr.com^ -||mpcbjnku.com^ -||mpcrvcbwdouo.com^ -||mpfofpynoououe.xyz^ -||mpfqphqf.com^ -||mphhqaw.com^ -||mphkwlt.com^ -||mpk01.com^ -||mplayeranyd.info^ -||mploymehnthejuias.info^ -||mpnrs.com^ -||mpougdusr.com^ -||mppqellliovkuqi.com^ -||mpqgoircwb.com^ -||mprhrvnxppdxci.com^ -||mpsauudmnwarh.com^ -||mpsqvsylctp.com^ -||mpsuadv.ru^ -||mptentry.com^ -||mptgate.com^ -||mpuqucafrtt.com^ -||mpvvjpsdgvkpd.com^ -||mpzgnxmd.com^ -||mpzwsvueph.com^ -||mqabjtgli.xyz^ -||mqaqtwkbwcqty.xyz^ -||mqcjqjhy.com^ -||mqdeeisghdpd.xyz^ -||mqkuzy.com^ -||mqldskirbp.com^ -||mqnrrawj.com^ -||mqqxkkenfws.com^ -||mquawbxc.com^ -||mraozo.xyz^ -||mrareljqr.com^ -||mraza2dosa.com^ -||mrdzuibek.com^ -||mrflvyizjrkytj.com^ -||mrgrekeroad.com^ -||mrjb7hvcks.com^ -||mrlscr.com^ -||mrmlxqck.com^ -||mroehtuy.com^ -||mrpihtwtoprvw.com^ -||mrpsptpspesyg.com^ -||mrpztdpe.com^ -||mrqtxghhbykcjx.com^ -||mrrhmjuve.com^ -||mrstpnyxlbd.com^ -||mrtbbnr.com^ -||mrtbbnrdip.com^ -||mrtnsvr.com^ -||mrvio.com^ -||mrwdgugoie.com^ -||mryinerg.com^ -||mrykkulwenw.com^ -||mrzikj.com^ -||ms3t.club^ -||msads.net^ -||msdiouc.com^ -||msensuedcounteract.com^ -||msgose.com^ -||mshago.com^ -||msidxwkjfqbrq.com^ -||mskjtggjwix.com^ -||msnvqfjg.com^ -||msotdipkjtata.com^ -||mspnvrkthtvcpl.com^ -||mspznxahjjx.com^ -||msrehcmpeme.com^ -||msrvt.net^ -||mstlewdhec.com^ -||msyyvyle.com^ -||mt34iofvjay.com^ -||mtbbsewhceqgv.com^ -||mtburn.com^ -||mtgzlnugxej.com^ -||mthvjim.com^ -||mttjepfakwch.com^ -||mtwdmk9ic.com^ -||mtypitea.net^ -||mtytfjijgsfoy.com^ -||mtzenhigqg.com^ -||muchlivepad.com^ -||muchotrust.com^ -||mucinyak.com^ -||muckilywayback.top^ -||mucopussamkhya.com^ -||mudbankoxfords.top^ -||muddiedbubales.com^ -||muddyharold.com^ -||muddytransplantinsert.com^ -||mudwortlithog.website^ -||muendakutyfore.info^ -||mufcrkk.com^ -||mufflealiases.com^ -||muffled-apartment.com^ -||mufflercypress.com^ -||mufflerlightsgroups.com^ -||mugantlerfloral.com^ -||mugexfxue.com^ -||mugleafly.com^ -||mugpothop.com^ -||mugrikees.com^ -||mugwetsomalo.top^ -||muhlyramrod.top^ -||muipe.xyz^ -||muirpekvl.com^ -||mujilora.com^ -||mukhtarproving.com^ -||mulaukso.com^ -||mulberryay.com^ -||mulberrydoubloons.com^ -||mulberryresistoverwork.com^ -||mulberrytoss.com^ -||muleattackscrease.com^ -||mulecleared.com^ -||mulesto.com^ -||muletatyphic.com^ -||multicoloredsteak.pro^ -||multieser.info^ -||multimater.com^ -||multiplydiscourage.com^ -||multiplyinvisible.com^ -||multiwall-ads.shop^ -||multstorage.com^ -||mumblesmisrun.space^ -||mumgenericcourt.com^ -||mumintend.com^ -||mummydiverseprovided.com^ -||mumpingwomerah.top^ -||munilf.com^ -||munpracticalwh.info^ -||munsterduke.com^ -||mupufktvziob.com^ -||mupyfpimgnvqdgy.com^ -||muqoxfnwyz.com^ -||muragetunnel.com^ -||muralattentive.com^ -||murallyhuashi.casa^ -||muraubse.com^ -||murderassuredness.com^ -||muricidmartins.com^ -||muriheem.net^ -||murkybrashly.com^ -||murkymouse.online^ -||murreyequate.com^ -||muscledarcysilly.com^ -||musclehaulse.top^ -||muscleomnipresent.com^ -||musclesadmonishment.com^ -||muscleserrandrotund.com^ -||musclesprefacelie.com^ -||musclyskeely.top^ -||muscularcopiedgulp.com^ -||musedemeanouregyptian.com^ -||museummargin.com^ -||mushroomplainsbroadly.com^ -||musicalbilateral.com^ -||musicalglutton.com^ -||musicianabrasiveorganism.com^ -||musicnote.info^ -||muskatarsenal.com^ -||musmentportal.com^ -||musselchangeableskier.com^ -||musselregimentcharles.com^ -||mussybebrave.com^ -||mustardeveningobvious.com^ -||mustbehand.com^ -||mustdealingfrustration.com^ -||mutcheng.net^ -||mutecrane.com^ -||mutenessdollyheadlong.com^ -||mutinousconductdisk.com^ -||mutinydisgraceeject.com^ -||mutinygrannyhenceforward.com^ -||mutomb.com^ -||mutsjeamenism.com^ -||mutteredadis.org^ -||mutteredadisa.com^ -||muttergrew.com^ -||muttermathematical.com^ -||muttersedatetransmitted.com^ -||muttonperiltower.com^ -||mutualreviveably.com^ -||mutux.cfd^ -||muzarabeponym.website^ -||muzhikendover.top^ -||muzoohat.net^ -||muzzlematrix.com^ -||muzzlepairhysteria.com^ -||mvbvvwfkhbtfpn.xyz^ -||mvcqerddcnyfx.com^ -||mvcwfqntrnatng.com^ -||mvgzwamfvkw.com^ -||mvhiyha.com^ -||mvjlsdqd.com^ -||mvkjeglvbbfvm.xyz^ -||mvlvxzhxjci.com^ -||mvlxwnbeucyrfam.xyz^ -||mvlxxocul.xyz^ -||mvlyimxovnsw.xyz^ -||mvmzlg.xyz^ -||mvnmkbixlvb.com^ -||mvntaalwjvk.com^ -||mvnznqp.com^ -||mvubzqaowhhgii.com^ -||mvujvxc.com^ -||mvvhwabeshu.xyz^ -||mvwkysam.com^ -||mvwslulukdlux.xyz^ -||mwazhey.com^ -||mwbrnpmixxtu.com^ -||mwcxljdywq.com^ -||mwfdaciicqhyrj.com^ -||mwifcugxihhpwm.com^ -||mwikpepfiw.com^ -||mwirawdrexp.com^ -||mwjkteucypb.com^ -||mwkusgotlzu.com^ -||mwlle.com^ -||mwmqtisxndbjdr.com^ -||mwmxyurgupy.com^ -||mworkhovdimin.info^ -||mworkhovdiminat.info^ -||mwprotected.com^ -||mwquick.com^ -||mwrgi.com^ -||mwtnnfseoiernjx.xyz^ -||mwxopip.com^ -||mxgboxq.com^ -||mxgjgvoazhit.com^ -||mxipwcyo.xyz^ -||mxmezfyjgw.com^ -||mxmkhyrmup.com^ -||mxplwkgqfvln.com^ -||mxptint.net^ -||mxtads.com^ -||mxtqenvjpwj.com^ -||mxuiso.com^ -||mxzluxet.com^ -||my-hanson.com^ -||my.shymilftube.com^ -||my1elitclub.com^ -||myabsconds.com^ -||myactualblog.com^ -||myadcash.com^ -||myadsserver.com^ -||myaliamusties.top^ -||mybdrttnqbrh.com^ -||mybestdc.com^ -||mybestnewz.com^ -||mybetterck.com^ -||mybetterdl.com^ -||mybettermb.com^ -||mybmrtrg.com^ -||mycamlover.com^ -||mycasinoaccounts.com^ -||mycdn.co^ -||mycdn2.co^ -||mycelesterno.com^ -||myckdom.com^ -||myclickpush.com^ -||mycoolfeed.com^ -||mycoolnewz.com^ -||mycrdhtv.xyz^ -||mydailynewz.com^ -||myeasetrack.com^ -||myeasyvpn.com^ -||myemdwtjqkwvlmw.xyz^ -||myfastcdn.com^ -||myfcvvacftdam.com^ -||myfreshposts.com^ -||myfreshspot.com^ -||mygoodlives.com^ -||mygsyv.com^ -||mygtmn.com^ -||myhappy-news.com^ -||myhjlprux.com^ -||myhugewords.com^ -||myhypeposts.com^ -||myhypestories.com^ -||myhzndxsndppx.com^ -||myimagetracking.com^ -||myjack-potscore.life^ -||myjdhmoiiwgise.com^ -||mykiger.com^ -||mykneads24.com^ -||mykofyridhsoss.xyz^ -||mylarrhoding.top^ -||mylinkbox.com^ -||myliveforyoudreder.com^ -||mylives.xyz^ -||mylot.com^ -||mynativeads.com^ -||myniceposts.com^ -||myolnyr5bsk18.com^ -||myopybaldwin.com^ -||myperfect2give.com^ -||mypopads.com^ -||myraqcajwkeyqd.com^ -||myrtolbanzai.com^ -||myselfkneelsmoulder.com^ -||mysleepds.com^ -||mysticaldespiseelongated.com^ -||mystnock.digital^ -||mysweetteam.com^ -||myteamdev.com^ -||mythicsallies.com^ -||mythings.com^ -||mytiris.com^ -||myudkrefaiygs.com^ -||myunderthfe.info^ -||mywondertrip.com^ -||myxlyajuhsjiwsp.com^ -||myyhvsekloyvul.com^ -||mzcaiegjmuwfd.com^ -||mziso.xyz^ -||mzodalowsh.com^ -||mzol7lbm.com^ -||mzotuklkorr.com^ -||mzpbvvxv.com^ -||mzteishamp.com^ -||mztqgmr.com^ -||mzuspejtuodc.com^ -||mzxfrok.com^ -||mzzxfib.com^ -||n0299.com^ -||n0355.com^ -||n0400.com^ -||n0433.com^ -||n0gge40o.de^ -||n0v1cdn.com^ -||n1pusher.com^ -||n2major.com^ -||n49seircas7r.com^ -||n4pusher.com^ -||n6kux3ys3lhv.com^ -||n7e4t5trg0u3yegn8szj9c8xjz5wf8szcj2a5h9dzxjs50salczs8azls0zm.com^ -||n9s74npl.de^ -||naambonder.com^ -||naawurkshdhs.com^ -||nabaldeed.top^ -||nabalpal.com^ -||nabauxou.net^ -||nabbr.com^ -||nabgrocercrescent.com^ -||nabicbh.com^ -||nableemblems.com^ -||nableriptide.com^ -||nablesasmetotrea.info^ -||nachodusking.com^ -||nachusfarced.top^ -||nacontent.pro^ -||nadajotum.com^ -||nadjyiyolmxfea.com^ -||nadruphoordy.xyz^ -||nads.io^ -||naewynn.com^ -||nafaec.com^ -||naffor.com^ -||naforeshow.org^ -||nafrebnkxlmgos.com^ -||nagarh.com^ -||naggingirresponsible.com^ -||nagrainoughu.com^ -||nagrande.com^ -||nagues.com^ -||nagwrotedetain.com^ -||naiantcapling.com^ -||naicoapt.com^ -||naifason.xyz^ -||naifshinnied.top^ -||naiglipu.xyz^ -||naigristoa.com^ -||nailsandothesa.org^ -||naimoate.xyz^ -||naipatouz.com^ -||naipsouz.net^ -||nairapp.com^ -||naisepsaige.com^ -||naiskosungueal.top^ -||naive-skin.pro^ -||naivegirlie.com^ -||naivescorries.com^ -||nakamasweb.com^ -||nakedfulfilhairy.com^ -||nalhedgelnhamf.info^ -||naliw.xyz^ -||naloblwidg.com^ -||nameads.com^ -||namel.net^ -||namelessably.com^ -||namelymagnanimitycube.com^ -||namelymutiny.com^ -||namesakecapricorntotally.com^ -||namesakedisappointmentpulverize.com^ -||namesakeoscilloscopemarquis.com^ -||namjzoa.xyz^ -||namol.xyz^ -||nan0cns.com^ -||nan46ysangt28eec.com^ -||nanborderrocket.com^ -||nancontrast.com^ -||nandasmile.org^ -||nandtheathema.info^ -||nanduquelch.com^ -||nandweandthe.org^ -||naneducate.com^ -||nanesbewail.com^ -||nanfleshturtle.com^ -||nangalupeose.com^ -||nangelsaidthe.info^ -||nangkasec.com^ -||nanhermione.com^ -||nannot.com^ -||nanouwho.com^ -||nanrumandbac.com^ -||naolemkkg.com^ -||naomicasuist.top^ -||naonoupm.com^ -||naopgibzhfrz.com^ -||naoprj.com^ -||napainsi.net^ -||napallergy.com^ -||napererelysian.com^ -||napesropes.com^ -||napkinaunts.com^ -||naplesspeisage.com^ -||napony.com^ -||napoof.com^ -||narenrosrow.com^ -||narineware.com^ -||narispigweed.top^ -||narkalignevil.com^ -||narkwhelmed.digital^ -||narrateharmala.com^ -||narrucp.com^ -||narwbaqtct.xyz^ -||nastycognateladen.com^ -||nastycomfort.pro^ -||nastymankinddefective.com^ -||nastymetus.com^ -||natapea.com^ -||natare.xyz^ -||natcreativeide.info^ -||nathanaeldan.pro^ -||nationalityblizzard.com^ -||nationhandbook.com^ -||nationsencodecordial.com^ -||nationssalvation.com^ -||nativclick.com^ -||native-adserver.com^ -||nativeadmatch.com^ -||nativeadsfeed.com^ -||nativepu.sh^ -||nativeshumbug.com^ -||nativewpsh.com^ -||nativewpshep.com^ -||natorm.com^ -||natregs.com^ -||natsdk.com^ -||natseegirde.net^ -||nattepush.com^ -||natuarycomping.com^ -||naturalhealthsource.club^ -||naturalistsbumpmystic.com^ -||naturallyedaciousedacious.com^ -||naturewhatmotor.com^ -||naubatodo.com^ -||naubme.info^ -||naucaips.com^ -||naucaish.net^ -||naufistuwha.com^ -||naughtynotice.pro^ -||naulme.info^ -||naumkamebian.com^ -||naupouch.xyz^ -||naupseko.com^ -||nauseacomplimentary.com^ -||nauseousonto.com^ -||naustoch.net^ -||nauthait.com^ -||nauwheer.net^ -||navaidaosmic.top^ -||navalreasonablynearby.com^ -||navelasylumcook.com^ -||navelfletch.com^ -||naveljutmistress.com^ -||navigablepiercing.com^ -||navigateconfuseanonymous.com^ -||navigatecrudeoutlaw.com^ -||navigateiriswilliam.com^ -||navigationconcept.com^ -||navywilyoccur.com^ -||nawabsalkenes.top^ -||nawbusdf.com^ -||nawcgetfwpbff.com^ -||nawpush.com^ -||naxadrug.com^ -||naybreath.com^ -||naysaywinless.guru^ -||nazakxodbz.com^ -||nazallhtjfh.com^ -||nazyepfnko.com^ -||nbhywngpk.xyz^ -||nbinhcfnyegxxrv.com^ -||nbmramf.de^ -||nbmuesyi.com^ -||nboclympics.com^ -||nboedfpto.com^ -||nbottkauyy.com^ -||nbr9.xyz^ -||nbrsoqcwgmif.com^ -||nbstatic.com^ -||nbucvfymvkyv.com^ -||nbuztmmcv.com^ -||nbwvxfqpfonnqi.xyz^ -||ncaavvcssf.com^ -||ncejhltxobrl.com^ -||nceqpmxyhqo.com^ -||nceteventuryrem.com^ -||ncevipdjsuoln.com^ -||ncgvowqfolon.com^ -||ncoadbwagfvsdya.com^ -||ncovebrwyronpg.com^ -||ncpgxioelrp.com^ -||ncpnth.xyz^ -||ncpxhrurirscgsd.com^ -||ncubadmavfp.com^ -||ncukankingwith.info^ -||ncukgqjfaxjv.com^ -||ncwabgl.com^ -||nczxuga.com^ -||ndandinter.hair^ -||ndaspiratiotyukn.com^ -||ndccouuyotn.com^ -||ndcomemuni.com^ -||nddnvliv.com^ -||ndds0001.com^ -||ndds0002.com^ -||ndedaphon.com^ -||ndegj3peoh.com^ -||ndejhe73jslaw093.com^ -||nderpurganismpr.info^ -||nderthfeo.info^ -||ndha4sding6gf.com^ -||ndhfywacw.com^ -||nditingdecord.org^ -||ndjelsefd.com^ -||ndocfwuyhvlr.com^ -||ndpugkr.com^ -||ndqdwykc.com^ -||ndqkxjo.com^ -||ndqxdgnungzfx.com^ -||ndroip.com^ -||ndryqdqwtnn.com^ -||ndthensome.com^ -||ndtsusmqnuslkqx.com^ -||ndwouldmeu.info^ -||ndxdcbgwxwqhre.com^ -||ndzksr.xyz^ -||ndzoaaa.com^ -||neads.delivery^ -||neahbutwehavein.info^ -||neandwillha.info^ -||neapsberne.digital^ -||nearestaxe.com^ -||nearestmicrowavespends.com^ -||nearestsweaty.com^ -||nearvictorydame.com^ -||neateclipsevehemence.com^ -||neatenmikra.life^ -||neatenscarfed.com^ -||neathygienesmash.com^ -||neatsafety.com^ -||neawaytogyptsix.info^ -||nebackextol.top^ -||nebsefte.net^ -||nebulouslostpremium.com^ -||neburn.com^ -||neceme.com^ -||necessaryclassroom.pro^ -||necessaryescort.com^ -||necessaryinborn.com^ -||necessarysticks.com^ -||necheadirtlse.org^ -||nechupsu.com^ -||neckloveham.live^ -||nedamericantpas.info^ -||nedandlooked.org^ -||nedaughablelead.info^ -||nedouseso.com^ -||neebeech.com^ -||neechube.net^ -||neechuce.net^ -||needeevo.xyz^ -||needleworkemmaapostrophe.com^ -||needleworkhearingnorm.com^ -||neednguarded.space^ -||needspuffer.website^ -||needydepart.com^ -||needyscarcasserole.com^ -||neegreez.com^ -||neehoose.com^ -||neejisee.xyz^ -||neepsolufab.com^ -||neerecah.xyz^ -||neetoutoo.com^ -||neexzbibw.com^ -||neezausu.net^ -||nefdcnmvbt.com^ -||negatesupervisor.com^ -||negative-might.pro^ -||neglectblessing.com^ -||negligentpatentrefine.com^ -||negolist.com^ -||negotiationmajestic.com^ -||negxkj5ca.com^ -||negyuk.com^ -||nehree.com^ -||neigh11.xyz^ -||neighborhood268.fun^ -||neigna.com^ -||neintheworld.org^ -||neitherpennylack.com^ -||nekaujoa.net^ -||nekcakexk.com^ -||nektonsrutate.com^ -||nelhon.com^ -||nellads.com^ -||nellmeeten.com^ -||nellthirteenthoperative.com^ -||nelreerdu.net^ -||nemewagro.com^ -||nenectedithcon.info^ -||neoftheownouncillo.info^ -||neonedfilmier.com^ -||neopowerlab.com^ -||neousaunce.com^ -||nereserv.com^ -||nereu-gdr.com^ -||nerfctv.com^ -||nergyflexibilit.pics^ -||nerolsdraymen.com^ -||nervegus.com^ -||nervingbensh.com^ -||nervous-touch.pro^ -||nervousclangprobable.com^ -||nervoustolsel.com^ -||nesefurthere.info^ -||nesfspublicate.info^ -||neshigreek.com^ -||nesiotcusses.space^ -||neslaveswedge.guru^ -||nesokiahld.com^ -||nessainy.net^ -||nestedcoppras.com^ -||nestledmph.com^ -||nestledoubtlog.com^ -||netcatx.com^ -||netflopin.com^ -||nethebravero.com^ -||netherinertia.life^ -||nethosta.com^ -||netjtgcbe.xyz^ -||netpatas.com^ -||netstam.com^ -||nettlyphosis.com^ -||netund.com^ -||neumasham.space^ -||neurinacyesis.com^ -||neutralturbulentassist.com^ -||neuwiti.com^ -||nevbbl.com^ -||never2never.com^ -||neverforgettab.com^ -||neverheartache.com^ -||neverthelessamazing.com^ -||neverthelessdamagingmakes.com^ -||neverthelessdepression.com^ -||nevillepreserved.com^ -||new-incoming.email^ -||new-new-years.com^ -||new-programmatic.com^ -||new17write.com^ -||newadflow.com^ -||newadflown.com^ -||newadflows.com^ -||newadsfit.com^ -||newaprads.com^ -||newbiquge.org^ -||newbluetrue.xyz^ -||newbornleasetypes.com^ -||newbornprayerseagle.com^ -||newcomerbenchlilac.com^ -||newdhopr.com^ -||newdisplayformats.com^ -||newdomain.center^ -||newestchalk.com^ -||newhigee.net^ -||newir3ltyug79aiman.com^ -||newjulads.com^ -||newlifezen.com^ -||newlyleisure.com^ -||newlywedexperiments.com^ -||newmayads.com^ -||newoctads.com^ -||newprofitcontrol.com^ -||newrotatormarch23.bid^ -||newrtbbid.com^ -||news-back.org^ -||news-balica.com^ -||news-bigefu.com^ -||news-bizowa.com^ -||news-bobeho.com^ -||news-butoto.com^ -||news-buzz.cc^ -||news-capufu.com^ -||news-fadubi.com^ -||news-galuzo.cc^ -||news-getogo.com^ -||news-headlines.co^ -||news-host.net^ -||news-jelafa.com^ -||news-jivera.com^ -||news-losaji.com^ -||news-mefuba.cc^ -||news-nerahu.cc^ -||news-paxacu.com^ -||news-place1.xyz^ -||news-portals1.xyz^ -||news-rarore.cc^ -||news-rojaxa.com^ -||news-site1.xyz^ -||news-tamumu.cc^ -||news-universe1.xyz^ -||news-weekend1.xyz^ -||news-wew.click^ -||news-xehola.com^ -||newsaboutsugar.com^ -||newsadst.com^ -||newsatads.com^ -||newscadence.com^ -||newsfeedscroller.com^ -||newsformuse.com^ -||newsfortoday2.xyz^ -||newsforyourmood.com^ -||newsfrompluto.com^ -||newsignites.com^ -||newsinform.net^ -||newslettergermantreason.com^ -||newsletterparalyzed.com^ -||newslikemeds.com^ -||newsmaxfeednetwork.com^ -||newsnourish.com^ -||newspapermeaningless.com^ -||newstarads.com^ -||newstemptation.com^ -||newsunads.com^ -||newswhose.com^ -||newsyour.net^ -||newthbvttskt.xyz^ -||newthuads.com^ -||newtits.name^ -||newvideoapp.pro^ -||newwinner.life^ -||newzilla.name^ -||newzmaker.me^ -||nexaapptwp.top^ -||nexdunaw.xyz^ -||nextpsh.top^ -||nezygmobha.com^ -||nfctoroxi.xyz^ -||nfkd2ug8d9.com^ -||nfkq8jy5db0b.com^ -||nfojcjzhxwnh.com^ -||nfoxlyvassg.com^ -||nftfyvbfbonpe.com^ -||nfupxwsdzbqen.com^ -||nfuwpyx.com^ -||nfwivxk.com^ -||nfxlrsxwvofi.com^ -||ngdxvnkovnrv.xyz^ -||ngegas.files.im^ -||ngeoziadiyc4hi2e.com^ -||ngfruitiesmatc.info^ -||ngineet.cfd^ -||ngjgnidajyls.xyz^ -||nglestpeoplesho.com^ -||nglmedia.com^ -||ngpgjfojxyvgcp.com^ -||ngplansforourco.info^ -||ngponhtot.xyz^ -||ngrjmdqvqk.com^ -||ngsinspiringtga.info^ -||ngtktfwvyqf.com^ -||nguad.com^ -||ngujaqm.com^ -||ngukmodukule.info^ -||ngxpprnv.com^ -||nhanziohqat.com^ -||nharghiooudi.xyz^ -||nhckxyxaiwqnssh.com^ -||nheappyrincen.info^ -||nhjnkis.com^ -||nhjsuchlliioi.com^ -||nhkokkrr.com^ -||nhksyoei.com^ -||nhopaepzrh.com^ -||nhphkweyx.xyz^ -||nhspndjqoehzf.com^ -||nhuzqnpnbjm.com^ -||nianstarvards.info^ -||niauuslsoxwte.com^ -||nibvtxyofd.com^ -||nicatethebene.info^ -||nicatethebenefi.com^ -||nicboab.com^ -||nice-mw.com^ -||nicebigheartedgargle.com^ -||nicelocaldates.com^ -||nicelyinformant.com^ -||nicelyporeengine.com^ -||nicerisle.com^ -||nicesthoarfrostsooner.com^ -||nicestsame.com^ -||nicheads.com^ -||nichedlinks.com^ -||nicheevaderesidential.com^ -||nicholassemicircledomesticated.com^ -||nichools.com^ -||nichtfaeroe.top^ -||nicibelite.com^ -||nickeeha.net^ -||nickeleavesdropping.com^ -||nickelphantomability.com^ -||nicknameuntie.com^ -||nicksstevmark.com^ -||nicmaui.com^ -||nicmisa.com^ -||nicthei.com^ -||nidqvgsubt.com^ -||nidredra.net^ -||nidudihideout.com^ -||niecesexhaustsilas.com^ -||niecesregisteredhorrid.com^ -||nielledhaling.digital^ -||niepaunmaned.top^ -||nieveni.com^ -||nievetacunjer.top^ -||nifty-drive.pro^ -||nifty-transportation.com^ -||nifvikfakt.com^ -||nigerm.com^ -||niggedpacaya.com^ -||niggeusakebvkb.xyz^ -||nigglerimprove.top^ -||nightclubconceivedmanuscript.com^ -||nighter.club^ -||nightfallforestallbookkeeper.com^ -||nightfallroad.com^ -||nighthereflewovert.info^ -||nightingaletasting.com^ -||nightmarerelive.com^ -||nightsboostam.com^ -||nightspickcough.com^ -||nigmen.com^ -||nigooshe.net^ -||nigure.com^ -||nihiy.com^ -||niiriitmybvqne.com^ -||nikkiexxxads.com^ -||nilreels.com^ -||niltibse.net^ -||nimhuemark.com^ -||nimrute.com^ -||ninanceenab.com^ -||ninancukanking.info^ -||nindscity.com^ -||nindsstudio.com^ -||nineanguish.com^ -||nineteenlevy.com^ -||nineteenthdipper.com^ -||nineteenthpurple.com^ -||nineteenthsoftballmorality.com^ -||ninetyninesec.com^ -||ninetypastime.com^ -||ninetyreguli.com^ -||ningdblukzqp.com^ -||ninkorant.online^ -||ninnycoastal.com^ -||ninoglostoay.com^ -||ninsinsu.com^ -||ninsu-tmc.com^ -||ninthfad.com^ -||nipmucktwicer.com^ -||nipperathymy.life^ -||nippona7n2theum.com^ -||nippytelephone.pro^ -||niqwtevkb.xyz^ -||nirashoawe.com^ -||nisdnwiug.com^ -||nishoagn.com^ -||nitonsbanc.com^ -||nitqbanrbcv.xyz^ -||nitriotgillian.digital^ -||nitrogendetestable.com^ -||nitrousacuity.top^ -||niwluvepisj.site^ -||niwooghu.com^ -||nixinggrugru.top^ -||nizarstream.xyz^ -||nization.com^ -||nizvimq.com^ -||njejgoscqmcqn.com^ -||njfxmqvonppwq.com^ -||njjebgkvrniwmr.com^ -||njlcmkzfex.com^ -||njlgwpardzl.com^ -||njlzougyfjo.com^ -||njpaqnkhaxpwg.xyz^ -||njplpnoxgnbpid.com^ -||njsbccyenjyq.com^ -||njtkqifu.com^ -||njvacw.xyz^ -||nkbhsbteuu.com^ -||nkbobsj.com^ -||nkbpmxdubcd.com^ -||nkcsycwf.com^ -||nkewdzp.com^ -||nkfinsdg.com^ -||nkieuulsvvjrfh.com^ -||nkjhcmlf.com^ -||nkljaxdeoygatfw.xyz^ -||nkmsite.com^ -||nkotpweuxq.xyz^ -||nkredir.com^ -||nkrvqmvlyryzn.com^ -||nktbcnkdxhqniwx.com^ -||nlbdrwydovuq.xyz^ -||nlbgkaesfhf.com^ -||nlblzmn.com^ -||nld0jsg9s9p8.com^ -||nleldedallovera.info^ -||nlfqqjvyfr.com^ -||nlkli.com^ -||nlmthxjgjhg.com^ -||nlnmfkr.com^ -||nlntrk.com^ -||nlop.xyz^ -||nlwjdxsa.com^ -||nlyxqpeo.com^ -||nlzxclfg.com^ -||nmanateex.top^ -||nmcdn.us^ -||nmcpmjreuswnzs.com^ -||nmcsqihltjdnheq.com^ -||nmersju.com^ -||nmhcroxspro.com^ -||nmkhvtnypwykfh.xyz^ -||nmkli.com^ -||nmqwdmtwjleb.com^ -||nmrjnqiwocfyi.com^ -||nmsedhkcd.com^ -||nmxcadosdrcbd.com^ -||nmxqtuyyojgm.com^ -||nmybyxnjscf.com^ -||nncvwymtn.com^ -||nnetvsvxrxhkai.com^ -||nnjisvdxaoet.com^ -||nnkqkvqk.com^ -||nnncrox.com^ -||nnowa.com^ -||nnoyigqsvjud.com^ -||nntzjgzvbzz.com^ -||nnxijkdigwywla.com^ -||no2veeamggaseber.com^ -||noaderir.com^ -||noafoaji.xyz^ -||noahilum.net^ -||noaiaft.com^ -||noanawie.com^ -||noanrzfdt.com^ -||noapai.name^ -||noapsamoo.com^ -||noaptauw.com^ -||noazauro.net^ -||nobbutaaru.com^ -||nobilitybefore.com^ -||noblelevityconcrete.com^ -||noblesweb.com^ -||nobodyengagement.com^ -||nobodylightenacquaintance.com^ -||nocaudsomt.xyz^ -||noclef.com^ -||nocyjsmirnfwcb.com^ -||nodcaterercrochet.com^ -||noddinglavish.com^ -||nodouslover.com^ -||nodreewy.net^ -||noearon.click^ -||noelsdoc.cam^ -||noerwe5gianfor19e4st.com^ -||noetianidite.top^ -||nofashot.com^ -||nofidroa.xyz^ -||nogxlplmx.xyz^ -||nohezu.xyz^ -||noiselessvegetables.com^ -||noisybeforemorton.com^ -||noisyjoke.pro^ -||noisyoursarrears.com^ -||noisytariff.com^ -||noisyunidentifiedinherited.com^ -||nojhhsg.com^ -||noktaglaik.com^ -||nollolofgulmof.com^ -||nolrougn.com^ -||noltaudi.com^ -||nomadodiouscherry.com^ -||nomadsbrand.com^ -||nomadsdata.com^ -||nomadsfit.com^ -||nomeetit.net^ -||nomeuspagrus.com^ -||nominalclck.name^ -||nominalreverend.com^ -||nominateallegation.com^ -||nominatecambridgetwins.com^ -||nomorepecans.com^ -||noncepter.com^ -||nondeepunweave.top^ -||nondescriptelapse.com^ -||nondescriptlet.com^ -||nondescriptmaterial.com^ -||nondescripttuxedo.com^ -||nonecoffeehousesuspicious.com^ -||nonehalides.com^ -||nonepushed.com^ -||nonerr.com^ -||nonesgue.space^ -||nonesleepbridle.com^ -||nonestolesantes.com^ -||nonewnews.name^ -||nonfattoplike.com^ -||nonfictionrobustchastise.com^ -||nonfictiontickle.com^ -||nongamemealman.guru^ -||nonremid.com^ -||nonsensethingresult.com^ -||nonspewpa.com^ -||nonstoppartner.de^ -||noobilubi.com^ -||noodledbulky.top^ -||noodledesperately.com^ -||noodokod.xyz^ -||noojoomo.com^ -||nookwiser.com^ -||nooloqfzdta.com^ -||noolt.com^ -||noondaylingers.com^ -||noonsderider.com^ -||noonuproarincompetence.com^ -||noopking.com^ -||nooraunod.com^ -||nooroapo.com^ -||noosersturtles.com^ -||nopalryyipped.com^ -||nope.xn--mgbkt9eckr.net^ -||nope.xn--ngbcrg3b.com^ -||nope.xn--ygba1c.wtf^ -||nopolicycrea.info^ -||nopoloferewer.com^ -||noproblfr.com^ -||noptog.com^ -||norentisol.com^ -||noretia.com^ -||noritesazotes.com^ -||normalheart.pro^ -||normallydirtenterprising.com^ -||normalrepublicemulate.com^ -||normkela.com^ -||normugtog.com^ -||norrisengraveconvertible.com^ -||norrissoundinghometown.com^ -||northleaderpayback.com^ -||northmay.com^ -||northwestdiddived.com^ -||norymo.com^ -||nosebleedjumbleblissful.com^ -||nosedetriment.com^ -||nossairt.net^ -||nostocsfermery.life^ -||nostrilquarryprecursor.com^ -||nostrilsdisappearedconceited.com^ -||nostrilsunwanted.com^ -||nosuhplhkvvza.com^ -||notablechemistry.pro^ -||notablyassn.digital^ -||notaloneathome.com^ -||notchcollectormuffin.com^ -||notcotal.com^ -||notdyedfinance.com^ -||notebookbesiege.com^ -||notebookmedicine.com^ -||noted-factor.pro^ -||notepastaparliamentary.com^ -||notepositivelycomplaints.com^ -||notesbook.in^ -||notesrumba.com^ -||nothiermonicg.com^ -||nothingnightingalejuly.com^ -||nothingpetwring.com^ -||nothycantyo.com^ -||noticebroughtcloud.com^ -||noticedbibi.com^ -||notifcationpushnow.com^ -||notifer.co.in^ -||notification-list.com^ -||notificationallow.com^ -||notifications.website^ -||notiflist.com^ -||notifpushnext.net^ -||notifpushnow.com^ -||notifsendback.com^ -||notify-monad.com^ -||notify-service.com^ -||notify.rocks^ -||notify6.com^ -||notifydisparage.com^ -||notifyerr.com^ -||notifyoutspoken.com^ -||notifypicture.info^ -||notifysrv.com^ -||notifzone.com^ -||notionfoggy.com^ -||notionsshrivelcustomer.com^ -||notionstayed.com^ -||notjdyincro.com^ -||notonthebedsheets.com^ -||notorietycheerypositively.com^ -||notorietyobservation.com^ -||notorietyterrifiedwitty.com^ -||notoriouscount.com^ -||notoriousentice.com^ -||notos-yty.com^ -||notwithstandingjuicystories.com^ -||notwithstandingpeel.com^ -||noucoush.net^ -||nougacoush.com^ -||noughtefface.com^ -||noughttrustthreshold.com^ -||noukotumorn.com^ -||noumohur.com^ -||nounaswarm.com^ -||noungundated.com^ -||nounooch.com^ -||nounpasswordangles.com^ -||nounrespectively.com^ -||noupsube.xyz^ -||noureewo.com^ -||nourishinghorny.com^ -||nourishmentrespective.com^ -||nouveau-digital.com^ -||nouveaulain.com^ -||nouvhidtxryveg.com^ -||novadune.com^ -||novel-inevitable.com^ -||novelcompliance.com^ -||novelty.media^ -||noveltyensue.com^ -||novemberadventures.com^ -||novemberadventures.name^ -||novemberseatsuccession.com^ -||novembersightsoverhear.com^ -||novemberslantwilfrid.com^ -||novibet.partners^ -||novicetattooshotgun.com^ -||novidash.com^ -||novitrk1.com^ -||novitrk4.com^ -||novitrk7.com^ -||novitrk8.com^ -||novostisporta.info^ -||nowadaysgrin.com^ -||nowforfile.com^ -||nowhisho.net^ -||nowlooking.net^ -||nowspots.com^ -||nowsubmission.com^ -||nowtrk.com^ -||noxbfmatyavxl.com^ -||noxdgqcm.com^ -||noxiousinvestor.com^ -||noxiousrecklesssuspected.com^ -||noxixeffzek.com^ -||nozirelower.top^ -||nozzorli.com^ -||npaqfubekak.com^ -||npbkhsarqzp.com^ -||npcad.com^ -||npcta.xyz^ -||npdnnsgg.com^ -||npdocxjt.com^ -||npehvrjmf.com^ -||nphtakjpw.com^ -||npjhdunxxfhwgtv.com^ -||npkkpknlwaslhtp.xyz^ -||npkzqlhtecxx.com^ -||npmgfyajejhlde.com^ -||npoqyrxjmphdo.com^ -||npprvby.com^ -||npracticalwhic.buzz^ -||npracticalwhich.com^ -||nptauiw.com^ -||npugpilraku.com^ -||npulchj.com^ -||npvos.com^ -||npytbfqwamyxkdp.xyz^ -||nqccynlnmmumt.com^ -||nqcdenlfuvuoqj.com^ -||nqftyfn.com^ -||nqgdljechyyska.com^ -||nqhataamn.xyz^ -||nqisabwtfbm.com^ -||nqkdocgce.com^ -||nqmfmnmqysei.com^ -||nqn7la7.de^ -||nqoxrsrf.com^ -||nqpdhoxgtrxa.xyz^ -||nqrkzcd7ixwr.com^ -||nqslmtuswqdz.com^ -||nqtufgmgmjnwlj.com^ -||nqvlkmmti.com^ -||nrcykmnukb.com^ -||nrecitnr.com^ -||nreg.world^ -||nretholas.com^ -||nrnma.com^ -||nrqppdgnhaagjq.com^ -||nrs6ffl9w.com^ -||nrunmoldy.com^ -||nrvbadypy.com^ -||nryanocytqc.com^ -||nrztjbpish.com^ -||ns003.com^ -||nsaascp.com^ -||nsaimplemuke.info^ -||nsdsvc.com^ -||nservantasrela.info^ -||nsexfxwcvro.xyz^ -||nsfwadds.com^ -||nsgyedmpxy.com^ -||nsjczjnrravfcj.com^ -||nsjyfpo.com^ -||nskwqto.com^ -||nslokxweviwqbg.com^ -||nsmartad.com^ -||nsmpydfe.net^ -||nsoimtgmnnbvi.com^ -||nspmotion.com^ -||nspot.co^ -||nssoahlyadvb.xyz^ -||nstoodthestatu.info^ -||nsuchasricew.com^ -||nsultingcoe.net^ -||nsyywkq.com^ -||nszeybs.com^ -||ntaqujdadat.com^ -||ntcqmdif.com^ -||ntdvjlvau.com^ -||ntedbycathyhou.info^ -||ntgetjpqk.com^ -||ntjmnyzwkpb.com^ -||ntlysearchingf.info^ -||ntmastsault.info^ -||ntmastsaultet.info^ -||ntmatchwithy.info^ -||ntmemns.com^ -||ntoftheusysia.info^ -||ntoftheusysianedt.info^ -||ntoftheusysih.info^ -||ntreeom.com^ -||ntrfr.leovegas.com^ -||ntsiwoulukdli.org^ -||ntsujfrvvabs.com^ -||ntswithde.autos^ -||ntuplay.xyz^ -||nturnwpqyqup.com^ -||ntv.io^ -||ntvk1.ru^ -||ntvpevents.com^ -||ntvpever.com^ -||ntvpforever.com^ -||ntvpinp.com^ -||ntvpwpush.com^ -||ntvsw.com^ -||ntxviewsinterfu.info^ -||nuanceslimli.top^ -||nubbieraristae.com^ -||nubseech.com^ -||nuclav.com^ -||nucleo.online^ -||nuculetirl.com^ -||nudczusipbu.com^ -||nudebenzoyl.digital^ -||nudesgirlsx.com^ -||nudgedfardel.com^ -||nudgehydrogen.com^ -||nudgercoptine.life^ -||nudgeworry.com^ -||nueduringher.org^ -||nuerprwm.xyz^ -||nuevonoelmid.com^ -||nuftitoat.net^ -||nuggetschou.com^ -||nuglegdkyjlaye.com^ -||nugrudsu.xyz^ -||nugxmtkydv.com^ -||nui.media^ -||nuisancehi.com^ -||nukeluck.net^ -||nukxwyyhuinwf.com^ -||nuleedsa.net^ -||nulez.xyz^ -||null-point.com^ -||nullahsembira.top^ -||nullboatloo.com^ -||nullscateringinforms.com^ -||nullsglitter.com^ -||nulpailou.com^ -||nultoaly.net^ -||numberium.com^ -||numberscoke.com^ -||numbersinsufficientone.com^ -||numbertrck.com^ -||numbninth.com^ -||numbswing.pro^ -||numeralembody.com^ -||numeralstoast.com^ -||nunailsum.com^ -||nunciosmegasse.website^ -||nunearn.com^ -||nunhoefey.com^ -||nuniceberg.com^ -||nunnifybalize.website^ -||nupdhyzetb.com^ -||nuphizarrafw.com^ -||nupjzylhequ.com^ -||nuptoomaugou.net^ -||nuqwe.com^ -||nuraghireels.com^ -||nurcghihmec.com^ -||nurewsawan.org^ -||nurewsawaninc.info^ -||nurlscleping.com^ -||nurno.com^ -||nurobi.info^ -||nuroflem.com^ -||nursecompellingsmother.com^ -||nurserysurvivortogether.com^ -||nuseek.com^ -||nutantvirific.com^ -||nutattorneyjack.com^ -||nutchaungong.com^ -||nutgxfwechkcuf.com^ -||nutletcorvees.com^ -||nutmegshow.com^ -||nutrientassumptionclaims.com^ -||nutrientmole.com^ -||nutritionshooterinstructor.com^ -||nutritious-hang.pro^ -||nutshellcellularfibber.com^ -||nutshellwhipunderstood.com^ -||nutsmargaret.com^ -||nuxaxpluqa.com^ -||nuxdwjicbg.com^ -||nuyhvoshqnbkrg.com^ -||nuzuki.com^ -||nvaepsns.com^ -||nvane.com^ -||nvchhzg.com^ -||nvgelwnecuw.com^ -||nvjgmugfqmffbgk.xyz^ -||nvlalpfft.com^ -||nvloulsfonqpfwm.com^ -||nvougpk.com^ -||nvtvssczb.com^ -||nvudvvaecq.com^ -||nvuwqcfdux.xyz^ -||nvvmslfqowhkkv.com^ -||nvxcvyfedg.com^ -||nvzcoggh.com^ -||nwbndajssvjpuw.com^ -||nwejuljibczi.com^ -||nwemnd.com^ -||nwhuomqmuym.com^ -||nwmnd.com^ -||nwwais.com^ -||nwwrtbbit.com^ -||nxbxxnpb.com^ -||nxdcyhmwxlqc.com^ -||nxexydg.com^ -||nxikijn.com^ -||nxiqvhhm.com^ -||nxladsrj.com^ -||nxlreuwdto.com^ -||nxpdotflwcmrcfh.com^ -||nxqolxelijv.com^ -||nxszxho.com^ -||nxt-psh.com^ -||nxtck.com^ -||nxtpsh.com^ -||nxtpsh.top^ -||nxumrjvebxr.com^ -||nxupsmvol.com^ -||nxutavor.com^ -||nxwpxtaik.xyz^ -||nxwrgrymkfp.com^ -||nyadmcncserve-05y06a.com^ -||nyadra.com^ -||nycixrayvbowpue.com^ -||nyetm2mkch.com^ -||nygwcwsvnu.com^ -||nyhrgss.com^ -||nykcksdpo.com^ -||nylonnickel.com^ -||nylonnickel.xyz^ -||nynjiahyewoji.com^ -||nyorgagetnizati.info^ -||nyqpgzohhllvx.com^ -||nyrunxlffpy.com^ -||nythathavere.org^ -||nytrng.com^ -||nyutkikha.info^ -||nzfhloo.com^ -||nzgldfeqvocgb.com^ -||nzhfk.com^ -||nzimmoadxfa.com^ -||nzlebmxoebtff.com^ -||nzme-ads.co.nz^ -||nzrzgorm.com^ -||nzuebfy.com^ -||nzvlpvgqsa.com^ -||nzwxemqwpv.com^ -||o-oo.ooo^ -||o18.click^ -||o18.link^ -||o2c7dks4.de^ -||o313o.com^ -||o333o.com^ -||o3sxhw5ad.com^ -||o4nofsh6.de^ -||o4uxrk33.com^ -||o626b32etkg6.com^ -||o911o.com^ -||oacaighy.com^ -||oacfxrqghamyaq.com^ -||oachailo.net^ -||oackoubs.com^ -||oackoulimtoo.com^ -||oadrojoa.net^ -||oadsaurs.net^ -||oadsouzi.net^ -||oaftaijo.net^ -||oagleeju.xyz^ -||oagnatch.com^ -||oagnolti.net^ -||oagoalee.xyz^ -||oagoofoo.net^ -||oagreess.net^ -||oahaurti.com^ -||oahosaisaign.com^ -||oainternetservices.com^ -||oainzuo.xyz^ -||oajagroax.com^ -||oajsffmrj.xyz^ -||oakaumou.xyz^ -||oakbustrp.com^ -||oakchokerfumes.com^ -||oakenboubous.com^ -||oaklesy.com^ -||oakmostlyaccounting.com^ -||oakrirtorsy.xyz^ -||oaksafta.com^ -||oaksandtheircle.info^ -||oalitoug.com^ -||oalsauwy.net^ -||oalselry.com^ -||oamoatch.com^ -||oamtorsa.net^ -||oanimsen.net^ -||oansaifo.net^ -||oaphoace.net^ -||oaphogekr.com^ -||oaphooftaus.com^ -||oapsoulreen.net^ -||oarcompartmentexaggerate.com^ -||oardilin.com^ -||oargaung.com^ -||oarsmorsel.com^ -||oarsoocm.com^ -||oarsouss.net^ -||oarsparttimeparent.com^ -||oarssamgrandparents.com^ -||oarswithdraw.com^ -||oartoogree.com^ -||oasazedy.com^ -||oasishonestydemented.com^ -||oasqrthubiub.com^ -||oastoamox.com^ -||oataltaul.com^ -||oatbcxnhacfjnc.com^ -||oatchelt.com^ -||oatmealaspectpulp.com^ -||oatmeallump.com^ -||oatmealstickyflax.com^ -||oatscheapen.com^ -||oatsouje.net^ -||oawhaursaith.com^ -||oaxoulro.com^ -||oaxpcohp.com^ -||oaxuroaw.net^ -||oaykswyxtbn.com^ -||oaysdumjrpoq.xyz^ -||oazartie.com^ -||obadluhjxnsnfv.com^ -||obbkucbipw.com^ -||obdoboli.xyz^ -||obdtawpwyr.com^ -||obduratecommence.com^ -||obduratedroppingmagnitude.com^ -||obduratesettingbeetle.com^ -||obduratewiggle.com^ -||obeajvasfvj.xyz^ -||obediencechainednoun.com^ -||obediencepulse.com^ -||obedientapologyinefficient.com^ -||obedientrock.com^ -||obedirectukly.info^ -||obeselysass.top^ -||obeus.com^ -||obeyedortostr.cc^ -||obeyersshewn.com^ -||obeyfreelanceloan.com^ -||obeysatman.com^ -||obgdk.top^ -||obhggjchjkpb.xyz^ -||obituaryfuneral.com^ -||objectbrilliance.com^ -||objectdressed.com^ -||objectedinward.com^ -||objectionportedseaside.com^ -||objectionsdomesticatednagging.com^ -||objective-wright-961fed.netlify.com^ -||objectivepressure.com^ -||objectlesscowerfuzzy.com^ -||objectsentrust.com^ -||obkgavorztij.com^ -||obligebuffaloirresolute.com^ -||obligemadeuprough.com^ -||obliterateminingarise.com^ -||oblivionpie.com^ -||oblivionthreatjeopardy.com^ -||oblivionwatcherrebellious.com^ -||oblong-pool.pro^ -||oblongcondition.com^ -||oblongravenousgosh.com^ -||obnarium.com^ -||obnoxiouspatrolassault.com^ -||obnoxiousstackderide.com^ -||oboistbasify.com^ -||oboitlwjjvkkd.com^ -||oboletcart.com^ -||oboletcystin.website^ -||obolxietnquosyr.com^ -||obouckie.com^ -||obputpnbtdoy.com^ -||obqdwcfcvc.com^ -||obraioewm.com^ -||obrom.xyz^ -||obsanluvx.com^ -||obscenityaccordinglyrest.com^ -||obscenityimplacable.com^ -||obscenitymama.com^ -||obscurejury.com^ -||observanceafterthrew.com^ -||observationtable.com^ -||observativus.com^ -||observedbrainpowerweb.com^ -||observedlily.com^ -||observer3452.fun^ -||observer384.fun^ -||observerdispleasejune.com^ -||obsesschristening.com^ -||obsessionseparation.com^ -||obsessivepetsbean.com^ -||obsessivepossibilityminimize.com^ -||obsessthank.com^ -||obsidiancutter.top^ -||obsignphippe.com^ -||obstaclebornevastly.com^ -||obstaclemuzzlepitfall.com^ -||obstanceder.pro^ -||obstre.com^ -||obstructcrucialcommander.com^ -||obstructdogcollarblockade.com^ -||obtainedcredentials.com^ -||obtainedoraltreat.com^ -||obtrusivecrisispure.com^ -||obtrusiveflatlymoth.com^ -||obtrusiveperhaps.com^ -||obtundmassier.com^ -||obviatemuscoid.guru^ -||oc2tdxocb3ae0r.com^ -||ocasosfjpbf.com^ -||ocbyxycdl.xyz^ -||occame.com^ -||occasion219.fun^ -||occasionallyregionsadverb.com^ -||occdmioqlo.com^ -||occndvwqxhgeicg.xyz^ -||occqnaaepflqxw.com^ -||occums.com^ -||occupationcomplimentsenjoyment.com^ -||occupiedpace.com^ -||occurclaimed.com^ -||occust.com^ -||ocddolmggjc.com^ -||ocean-trk.com^ -||oceanfilmingexperience.com^ -||oceanvids.space^ -||ocfhdcmwekmjf.com^ -||ocflkcgwjem.com^ -||ocheebou.xyz^ -||ochoawhou.com^ -||ochringtensor.com^ -||ocjmbhy.com^ -||ockerfisher.top^ -||oclaserver.com^ -||oclasrv.com^ -||oclpegogoccxlw.com^ -||ocmhood.com^ -||ocmtag.com^ -||ocoaksib.com^ -||ocogmhqo.com^ -||oconner.link^ -||ocrppeqevqihdi.com^ -||octanmystes.com^ -||octavdtabacco.top^ -||octavianimmaculate.com^ -||octinerep.com^ -||octoatesamhain.com^ -||octobergypsydeny.com^ -||octobermindless.com^ -||octopidroners.com^ -||octopod.cc^ -||octopusiron.com^ -||octopuspop.com^ -||octrol.com^ -||ocumknxm.com^ -||ocuwyfarlvbq.com^ -||oczqhythihhu.com^ -||oddauthorscreative.com^ -||oddlyogeed.com^ -||oddsfana.space^ -||oddsserve.com^ -||odegumsane.com^ -||odjweddfuh.com^ -||odnaknopka.ru^ -||odnaturedfe.org^ -||odologyelicit.com^ -||odonticmetae.top^ -||odorantpilkins.top^ -||odouanmhndwipg.com^ -||odoucessu.com^ -||odourcowspeculation.com^ -||odpfujlimjuk.com^ -||odpokjcucdax.com^ -||odqicviub.com^ -||odrgacvbl.com^ -||odssyvfqrlwwj.com^ -||odylespiacle.com^ -||oeaubbhajhkaav.xyz^ -||oeavjktqqpkntgq.com^ -||oedprntsyfrl.com^ -||oefaxmob.com^ -||oeggofabhhob.com^ -||oehfvrpeleg.com^ -||oelwojattkd.xyz^ -||oeokfmroaiuwo.xyz^ -||oepnccxasww.com^ -||oestpq.com^ -||oetkwahrsdvrnn.com^ -||oeufvkymknbie.com^ -||oeuvresvexable.com^ -||of-bo.com^ -||ofashgonfcwp.com^ -||ofcamerupta.com^ -||ofchildr.buzz^ -||ofclaydolr.com^ -||ofdanpozlgha.com^ -||ofdittor.com^ -||ofdrapiona.com^ -||ofdxfsho.com^ -||ofedupub.com^ -||offalakazaman.com^ -||offchatotor.com^ -||offenddishwater.com^ -||offendedcontributorfour.com^ -||offendedtwine.com^ -||offendergrapefruitillegally.com^ -||offendselfportrait.com^ -||offenseholdrestriction.com^ -||offensivepitcherultimately.com^ -||offercookerychildhood.com^ -||offergate-apps-pubrel.com^ -||offergate-games-download1.com^ -||offergate-software6.com^ -||offerimage.com^ -||offerlink.co^ -||offernow24.com^ -||offersapp.in^ -||offersbid.com^ -||offersbid.net^ -||offershub.net^ -||offerstrackingnow.com^ -||offerwall.site^ -||offfurreton.com^ -||offhandclubhouse.com^ -||offhandpump.com^ -||offhdgatyooum.com^ -||officerdiscontentedalley.com^ -||officeroey.top^ -||officetablntry.org^ -||officialbanisters.com^ -||officiallyflabbyperch.com^ -||officialraising.com^ -||officialstovethemselves.com^ -||offloadingsite.com^ -||offmachopor.com^ -||offmantiner.com^ -||offoonguser.com^ -||offpaycrinet.life^ -||offpichuan.com^ -||offsetpushful.com^ -||offshoreapprenticeheadphone.com^ -||offshoredependant.com^ -||offshoredutchencouraging.com^ -||offshorenonfictionbriefing.com^ -||offshuppetchan.com^ -||offsigilyphor.com^ -||offwardtendry.top^ -||offxkeapbvwe.com^ -||ofglicoron.net^ -||ofgogoatan.com^ -||ofhappinyer.com^ -||ofhunch.com^ -||ofhypnoer.com^ -||ofitstefukste.org^ -||ofkvdwqimwxnm.com^ -||ofleafeona.com^ -||ofnkswddtp.xyz^ -||ofoockoo.com^ -||ofphanpytor.com^ -||ofpiplupon.com^ -||ofqopmnpia.com^ -||ofseedotom.com^ -||ofslakotha.com^ -||oftencostbegan.com^ -||oftheappyri.org^ -||oftheseveryh.org^ -||ogaewcqgj.com^ -||ogblanchi.com^ -||ogdbqljceatnjal.com^ -||ogeesuropod.digital^ -||ogeeztf.com^ -||ogercron.com^ -||ogetherefwukoul.info^ -||ogghpaoxwv.com^ -||oghqvffmnt.com^ -||ogicatius.com^ -||ogle-0740lb.com^ -||ogniicbnb.ru^ -||ognimyjm.com^ -||ognsotmhjx.com^ -||ografazu.xyz^ -||ograuwih.com^ -||ogrrmasukq.com^ -||ogtakvkpoaxt.com^ -||ogvkyxx.com^ -||ogwkwcgmnarq.com^ -||ogwmubfnjbzyo.com^ -||ogwnjcumfbgm.com^ -||ogwqkgtboxol.com^ -||ogygialuther.top^ -||ohaijoub.com^ -||ohcgwgeyfjlqlhe.com^ -||ohdjswkuaym.xyz^ -||ohfowsawvgig.com^ -||ohgmnmgrd.xyz^ -||ohhotnmcibij.com^ -||ohibal.com^ -||ohimunpracticalw.info^ -||ohjhsopp.com^ -||ohkahfwumd.com^ -||ohkdsplu.com^ -||ohkvifgino.com^ -||ohkyxnjj.com^ -||ohlattice.com^ -||ohldsplu.com^ -||ohmcasting.com^ -||ohmwrite.com^ -||ohndsplu.com^ -||ohnwmjnsvijdrgx.xyz^ -||ohqcrifmugat.com^ -||ohrdsplu.com^ -||ohrkihivhtz.com^ -||ohsatum.info^ -||ohsruxbixgzu.com^ -||ohswmojunbmo.com^ -||ohtctjiuow.com^ -||ohudkrjhxmf.com^ -||ohvcasodlbut.com^ -||ohwhdspj.com^ -||oiarske.com^ -||oiavdib.com^ -||oijorfkfwtdswv.xyz^ -||oilierelixir.com^ -||oilskinvulvar.digital^ -||oinkedbowls.com^ -||ointmentapathetic.com^ -||ointmentbarely.com^ -||ointmentfloatingsaucepan.com^ -||ointmenthind.com^ -||oisqckeiqwyg.com^ -||oivteiwwave.com^ -||oiycak.com^ -||ojafexcbndql.com^ -||ojapanelm.xyz^ -||ojbrtkrvew.com^ -||ojguesirvxwgiog.xyz^ -||ojgvteduhsko.com^ -||ojhjzzuekxq.com^ -||ojiwkroegfkbx.com^ -||ojmvywz.com^ -||ojoglir.com^ -||ojomrgmhbbpkpz.com^ -||ojoodoaptouz.com^ -||ojpem.com^ -||ojsxtysilofk.com^ -||ojtarsdukk.com^ -||ojtatygrl.xyz^ -||ojuhfoa.com^ -||ojuhjcmhemvs.com^ -||ojwapnolwa.com^ -||ojwonhtrenwi.com^ -||ojyggbl.com^ -||ojzghaawlf.com^ -||okaks.com^ -||okapiropp.top^ -||okapisail.com^ -||okayarab.com^ -||okaydisciplemeek.com^ -||okayfreemanknot.com^ -||okdecideddubious.com^ -||okdigital.me^ -||okehsominous.com^ -||okfgsbtmcnh.com^ -||okiafogless.top^ -||okienamare.com^ -||okjxihboesueh.com^ -||okkbugnixajf.com^ -||oklahi.com^ -||oklzdmdhqgxsu.com^ -||oko.net^ -||okqdjbywcnqov.com^ -||okqwvoknauoab.com^ -||okrasbj6.de^ -||oksooem.com^ -||okstqhbyoh.com^ -||okt5mpi4u570pygje5v9zy.com^ -||oktachimble.com^ -||oktpage.com^ -||okueroskynt.com^ -||okunyox.com^ -||okupvueal.com^ -||okvatbotgacv.com^ -||okvovqrfuc.com^ -||okxaplomkpca.com^ -||okxqmiagltpe.com^ -||olakoudos.xyz^ -||olatumal.com^ -||olaxcandela.top^ -||olayomad.com^ -||old-go.pro^ -||oldassist.pro^ -||olderdeserved.com^ -||oldersfeuars.top^ -||oldership.com^ -||oldeststrickenambulance.com^ -||oldfashionedcity.pro^ -||oldfashionedmadewhiskers.com^ -||oldforeyesheh.info^ -||oldgyhogola.com^ -||oldied.com^ -||oldmilram.com^ -||oldndalltheold.org^ -||oldpiecesontheth.com^ -||oldrdiedebog.xyz^ -||oldsia.xyz^ -||oleinironed.top^ -||oleoshaves.top^ -||olep.xyz^ -||olgknseruf.com^ -||olibes.com^ -||olineman.pro^ -||olitoedr.com^ -||olivedinflats.space^ -||olivednitrils.com^ -||olivefail.com^ -||olivefamine.com^ -||olkyskawui.com^ -||ollsukztoo.com^ -||olmsoneenh.info^ -||olnjitvizo.com^ -||olnkpexujhuw.com^ -||olnoklmuxo.com^ -||ololenopoteretol.info^ -||olomonautcatho.info^ -||olpaeclary.top^ -||olpfeere.com^ -||olpxupvisl.com^ -||olqkudodsrix.com^ -||oltcneutwheoioo.xyz^ -||oltptelifmal.com^ -||olularhenewrev.info^ -||olxcvfwfej.com^ -||olxtqlyefo.xyz^ -||olympicsappointment.com^ -||olzatpafwo.com^ -||olzuvgxqhozu.com^ -||omanala.com^ -||omandersingly.com^ -||omarcheopson.com^ -||omareeper.com^ -||omasatra.com^ -||omatri.info^ -||omazeiros.com^ -||ombfunkajont.com^ -||ombtkqikm.com^ -||omchanseyr.com^ -||omchimcharchan.com^ -||omciecoa37tw4.com^ -||omclacrv.com^ -||omclyzyapf.com^ -||omcrobata.com^ -||omdittoa.com^ -||omdtragteorb.com^ -||omegatrak.com^ -||omelettebella.com^ -||omelettecrippledemployee.com^ -||omenrandomoverlive.com^ -||omentadido.com^ -||omfiydlbmy.com^ -||omg2.com^ -||omgpm.com^ -||omgranbulltor.com^ -||omgrdrodobidu.com^ -||omgt3.com^ -||omgt4.com^ -||omgt5.com^ -||omguk.com^ -||omission119.fun^ -||omissionmexicanengineering.com^ -||omitbailey.com^ -||omitcalculategalactic.com^ -||omitpollenending.com^ -||omkitww.com^ -||omkxadadsh.com^ -||ommatearittock.digital^ -||ommopxpfuofm.com^ -||omnatuor.com^ -||omni-ads.com^ -||omnidokingon.com^ -||omnipotentglobalbeer.com^ -||omnipresentstream.com^ -||omniscrienttow.com^ -||omnitagjs.com^ -||omoahope.net^ -||omoonsih.net^ -||omopeemt.net^ -||omouswoma.info^ -||ompanythat.org^ -||omphantumpom.com^ -||omruihaeaf.com^ -||omshedinjaor.com^ -||omvcilk.com^ -||omvenusaurchan.com^ -||omzoroarkan.com^ -||omzylhvhwp.com^ -||on3rdjl1h0e3.shop^ -||onad.eu^ -||onads.com^ -||onaged.com^ -||onagriflocoon.com^ -||onakasulback.autos^ -||onameketathar.com^ -||onandeggsis.com^ -||onasider.top/tc -||onasider.top^ -||onatallcolumn.com^ -||onatsoas.net^ -||onaugan.com^ -||onautcatholi.xyz^ -||onboardhairy.com^ -||oncdiranwrus.com^ -||onclarck.com^ -||onclasrv.com^ -||onclckmn.com^ -||onclickads.net^ -||onclickalgo.com^ -||onclickclear.com^ -||onclickgenius.com^ -||onclickmax.com^ -||onclickmega.com^ -||onclickperformance.com^ -||onclickprediction.com^ -||onclickpredictiv.com^ -||onclickpulse.com^ -||onclickrev.com^ -||onclickserver.com^ -||onclicksuper.com^ -||onclkds.com^ -||onclklnd.com^ -||ondajqfaqolmq.xyz^ -||ondatrakrafts.com^ -||ondeerlingan.com^ -||ondewottom.com^ -||ondpjzusmncg.com^ -||ondshub.com^ -||ondybazars.guru^ -||oneadvupfordesign.com^ -||oneclck.net^ -||oneclickpic.net^ -||onedmp.com^ -||onedragon.win^ -||oneegrou.net^ -||onefoldonefoldadaptedvampire.com^ -||onefoldonefoldpitched.com^ -||onegamespicshere.com^ -||onegoropsintold.com^ -||onelivetra.com^ -||onemacusa.net^ -||onemboaran.com^ -||onemileliond.info^ -||onenectedithconsu.info^ -||onenetworkdirect.com^ -||onenetworkdirect.net^ -||onenomadtstore.com^ -||oneotheacon.cc^ -||onepstr.com^ -||oneqanatclub.com^ -||onerousgreeted.com^ -||oneselfindicaterequest.com^ -||onesocailse.com^ -||onespot.com^ -||onestoreblog.com^ -||onesuns.com^ -||onetag4you.com^ -||onetouch12.com^ -||onetouch17.info^ -||onetouch18.info^ -||onetouch19.com^ -||onetouch20.com^ -||onetouch22.com^ -||onetouch26.com^ -||onetouch4.com^ -||onetouch6.com^ -||onetouch8.info^ -||onetrackesolution.com^ -||onevenadvnow.com^ -||ongastlya.com^ -||ongoingverdictparalyzed.com^ -||ongrpdwwnvliao.xyz^ -||onibyezctus.com^ -||oninewsful.life^ -||onkafxtiqcu.com^ -||onkavst.com^ -||online-adnetwork.com^ -||onlinedeltazone.online^ -||onlinepromousa.com^ -||onlineuserprotector.com^ -||onlombreor.com^ -||onlyfansrips.com^ -||onlypleaseopposition.com^ -||onlyry.net^ -||onlyyourbiglove.com^ -||onmantineer.com^ -||onmarshtompor.com^ -||onnasvmatrma.com^ -||onnkloshwrh.xyz^ -||onnnuvtikmzy.com^ -||onogxwatipyevf.com^ -||onpluslean.com^ -||onpsrrejx.com^ -||onrbsceloko.com^ -||onscormation.info^ -||onseleauks.org^ -||onservantas.org^ -||onservantasr.info^ -||onsetknives.com^ -||onsetours.com^ -||onseviperon.com^ -||onshowit.com^ -||onshucklea.com^ -||onsolrockon.com^ -||onstunkyr.com^ -||ontariobeak.guru^ -||ontinuedidgm.com^ -||ontj.com^ -||ontodirection.com^ -||ontosocietyweary.com^ -||onverforrinho.com^ -||onvictinitor.com^ -||onwardrespirationcommandment.com^ -||onwasrv.com^ -||onwekdebd.xyz^ -||onychinferous.top^ -||onzazqarhmpi.com^ -||onznwiocrrim.com^ -||oo00.biz^ -||oobitsou.net^ -||oobsaurt.net^ -||oobuwjnlljbah.com^ -||oocsutvtggeuu.com^ -||oocxefrgn.com^ -||oodrampi.com^ -||oodsauns.net^ -||oodsoobe.com^ -||ooeciumpokable.com^ -||ooftounu.com^ -||oofycyur.com^ -||oofyjigsaw.com^ -||oogleaamentum.com^ -||ooglootch.com^ -||ooglouth.xyz^ -||oogneenu.net^ -||oogroopt.com^ -||oohaussa.com^ -||ooivkrkudanjrpk.com^ -||ooivmtvmxpqwf.com^ -||oojitsoo.net^ -||ookresit.net^ -||ookroush.com^ -||oolassouwa.com^ -||ooloptou.net^ -||oolsoudsoo.xyz^ -||ooltakreenu.xyz^ -||oomgnwdmzwnxn.com^ -||oomphcorker.top^ -||oomsijahail.com^ -||oomsoapt.net^ -||oomtexoa.com^ -||oonasuhghjmzyw.com^ -||oongouha.xyz^ -||oonsaigu.xyz^ -||oonsouque.com^ -||oopatet.com^ -||oophoame.xyz^ -||oophuvum.net^ -||oopoawee.xyz^ -||oopodmomenta.website^ -||oopukrecku.com^ -||oopursie.com^ -||oorbfdycj.com^ -||oordeevum.com^ -||ooredi.com^ -||oorsooga.com^ -||oosonechead.org^ -||oossautsid.com^ -||oosthvayk.com^ -||oostotsu.com^ -||ooswxraxqm.com^ -||ootchaig.xyz^ -||ootchoft.com^ -||oothupeelobs.com^ -||ootsoobs.net^ -||oourmarketingefifor.info^ -||oovaufty.com^ -||ooxobsaupta.com^ -||ooxookrekaun.com^ -||oozawvoizsdal.com^ -||oozewhup.xyz^ -||op00.biz^ -||op01.biz^ -||op02.biz^ -||opalmetely.com^ -||opatacarnal.top^ -||opbllqzsmfoxq.com^ -||opchikoritar.com^ -||opclauncheran.com^ -||opdavplcufic.com^ -||opdowvamjv.com^ -||opeanresultanc.com^ -||opefaq.com^ -||opencan.net^ -||openerkey.com^ -||openingdreamsspinster.com^ -||openinggloryfin.com^ -||openingmetabound.com^ -||openlysideline.com^ -||openmindedaching.com^ -||openmindter.com^ -||opensdeiseal.com^ -||openslowlypoignant.com^ -||opentecs.com^ -||openx.net^ -||openxadexchange.com^ -||openxenterprise.com^ -||openxmarket.asia^ -||operaharvestrevision.com^ -||operaserver.com^ -||operatepreciseheavilyinfo-product.info^ -||operationalcocktailtribute.com^ -||operationalsuchimperfect.com^ -||operativeperemptory.com^ -||operatorgullibleacheless.com^ -||operms.com^ -||opgolan.com^ -||ophisrebrown.top^ -||ophoacit.com^ -||ophophil.net^ -||ophophiz.xyz^ -||ophqmhser.com^ -||ophvkau.com^ -||opificelitoral.com^ -||opinionatedprovide.com^ -||opjfqakvi.xyz^ -||opkfijuifbuyynyny.com^ -||opkinglerr.com^ -||oplo.org^ -||oplpectation.xyz^ -||opmuudn.com^ -||opmxizgcacc.com^ -||oponixa.com^ -||opositeasysemblyjus.info^ -||opoxv.com^ -||oppedtoalktoherh.info^ -||oppersianor.com^ -||opponenteaster.com^ -||opportunitybrokenprint.com^ -||opportunitygrandchildrenbadge.com^ -||opportunitysearch.net^ -||opposedunconscioustherapist.com^ -||opposerpleion.top^ -||opposesmartadvertising.com^ -||oppositeemperorcollected.com^ -||oppositevarietiesdepict.com^ -||oppressionhopefully.com^ -||oppressiveconnoisseur.com^ -||oppressiveoversightnight.com^ -||oppxzerrufhe.com^ -||oprill.com^ -||opsaupsa.com^ -||opshuckleor.com^ -||opsookiz.net^ -||opsoomet.net^ -||opsoudaw.xyz^ -||opsozouphy.com^ -||optad360.io^ -||optad360.net^ -||optaivuy.net^ -||optaroag.com^ -||opteama.com^ -||optedprebend.top^ -||opter.co^ -||opthushbeginning.com^ -||opticalwornshampoo.com^ -||opticlygremio.com^ -||optidownloader.com^ -||optimagrasp.guru^ -||optimalscreen1.online^ -||optimatic.com^ -||optimizesocial.com^ -||optimizesrv.com^ -||optnx.com^ -||optraising.com^ -||optvx.com^ -||optyruntchan.com^ -||optzsrv.com^ -||opuluswanton.top^ -||opvanillishan.com^ -||opxogkbiqkti.com^ -||oqcrqirncna.xyz^ -||oqddkgixmqhovv.xyz^ -||oqeazohx.com^ -||oqelpqoyyz.com^ -||oqfgpdnwdbirpc.com^ -||oqfrudzatovc.com -||oqfvsgfj.com^ -||oqhbykhlt.com^ -||oqkedrojyy.xyz^ -||oqkucsxfrcjtho.xyz^ -||oqnabsatfn.com^ -||oqnfsivlp.com^ -||oqpahlskaqal.com^ -||oqsttfy.com^ -||oqxehynxtckgha.com^ -||orabsola.com^ -||oralmaliciousmonday.com^ -||oralsproxied.com^ -||oranegfodnd.com^ -||orangeads.fr^ -||orangeconsoleclairvoyant.com^ -||oraporn.com^ -||oratefinauknceiwo.com^ -||oratorpounds.com^ -||orbengine.com^ -||orbitcarrot.com^ -||orblikevigonia.com^ -||orbsclawand.com^ -||orbsrv.com^ -||orchardmaltregiment.com^ -||orchestraanticipation.com^ -||orchidreducedbleak.com^ -||orcinolroomthy.com^ -||orcinsjewish.com^ -||orcjagpox.com^ -||orclrul.com^ -||ordbzeokdxku.com^ -||orderedbewhore.com^ -||orderlydividepawn.com^ -||orderlyregister.pro^ -||ordgcoazsswo.com^ -||ordinaleatersouls.com^ -||ordinalexclusively.com^ -||ordinardeuton.com^ -||ordinarilycomedyunload.com^ -||ordinarilyinstead.com^ -||ordinarilyrehearsenewsletter.com^ -||ordinaryspyimpassable.com^ -||ordisposableado.com^ -||ordounireme.website^ -||ordzimwtaa.com^ -||orebuthehadsta.info^ -||orecticconchae.com^ -||oreiletfortify.top^ -||oremaneths.com^ -||oremuspolynoe.digital^ -||oreoverseer.top^ -||orest-vlv.com^ -||oretracker.top^ -||oreyeshe.info^ -||orfa1st5.de^ -||orgagetnization.org^ -||organiccopiedtranquilizer.com^ -||organize3452.fun^ -||organizecoldness.com^ -||organrydipody.com^ -||organsthud.com^ -||orgassme.com^ -||orgerm.com^ -||orgned.com^ -||orgueapropos.top^ -||orientaldumbest.com^ -||orientaljoyful.com^ -||orientalrazor.com^ -||orientjournalrevolution.com^ -||originalblow.pro^ -||originaldivide.pro^ -||originateposturecubicle.com^ -||originatepromotebetrayal.com^ -||origincrayonremained.com^ -||originjargon.com^ -||origintube.com^ -||origunix.com^ -||orisow.com^ -||orjfun.com^ -||orjohmpkq.com^ -||orlandowaggons.com^ -||orldwhoisquite.com^ -||orldwhoisquite.org^ -||orldwhoisquiteh.info^ -||orlotalers.com^ -||orlowedonhisdhilt.info^ -||ormolusapiary.com^ -||ormolustuke.top^ -||ornamentbyechose.com^ -||ornismolal.top^ -||orogenyslounge.com^ -||orpoobj.com^ -||orqaxjj.com^ -||orqrdm.com^ -||orquideassp.com^ -||orraxckivsud.com^ -||orrisesdepute.com^ -||orrmmdsdc.com^ -||orrvucstaxip.com^ -||orthitepetrous.com^ -||orthronsmatter.com^ -||ortontotlejohn.com^ -||orxbqsvibjxqvai.com^ -||osageafresh.com^ -||osangauh.net^ -||osarmapa.net^ -||osbpcosnfgo.com^ -||oscism.com^ -||osekwacuoxt.xyz^ -||osesuntent.top^ -||osfrjut.com^ -||osgqretnpoqsubt.com^ -||oshaista.xyz^ -||oshunooy.xyz^ -||osjhvtxsyiuyjv.com^ -||oskiwood.com^ -||oskxpvmnalfb.com^ -||osmanlikaraite.com^ -||osmost.com^ -||osmoticchalah.com^ -||osmousavosets.com^ -||osoirux.com^ -||osotirukurwyo.com^ -||osptjkslmy.com^ -||osqbfakufafv.com^ -||osrhdsoeqhos.com^ -||ossealatvia.com^ -||ossfloetteor.com^ -||ossgogoaton.com^ -||osshydreigonan.com^ -||ossifygenial.com^ -||osskanger.com^ -||osskugvirs.com^ -||ossmightyenar.net^ -||ossnidorinoom.com^ -||osspalkiaom.com^ -||osspwamuhn.com^ -||ossrhydonr.com^ -||ossshucklean.com^ -||ossswannaa.com^ -||ossyfirecpo.com^ -||ostazvtx.com^ -||ostensiblecompetitive.com^ -||ostensibledressmaker.com^ -||osteriawoold.space^ -||ostilllookinga.cc^ -||ostlon.com^ -||ostrichmustardalloy.com^ -||ostrichrockychaos.com^ -||osucwlavnbkaect.com^ -||oszlnxwqlc.com^ -||oszzxhqhfh.com^ -||otabciukwurojh.xyz^ -||otarbadvnmrap.com^ -||otbackstage2.online^ -||otbuzvqq8fm5.com^ -||othdgemanow.com^ -||otherofherlittl.com^ -||otherofherlittle.info^ -||otherwiseassurednessloaf.com^ -||othiijwtgcmjmj.com^ -||otiatrygetable.uno^ -||otigainareput.info^ -||otingolston.com^ -||otisephie.com^ -||otjawzdugg.com^ -||otkqhtmbvolte.com^ -||otlopudpvfq.com^ -||otnolabttmup.com^ -||otnolatrnup.com^ -||otoliteaerides.com^ -||otomacotelugu.com^ -||otorwardsoffhdgat.com^ -||otqxvqzdgl.com^ -||otrwaram.com^ -||otrzcixradze.com^ -||ottdhysral.com^ -||otterwoodlandobedient.com^ -||otvlehf.com^ -||otwqvqla.com^ -||otwzipajrxaf.com^ -||otxgjkjad.com^ -||ouaker.com^ -||oubeliketh.info^ -||oucaibie.net^ -||ouchruse.com^ -||oudistit.com^ -||oudoanoofoms.com^ -||oudseroa.com^ -||oufauthy.net^ -||oufteens.com^ -||ouftukoo.net^ -||ougnultoo.com^ -||ougrauty.com^ -||ougribot.net^ -||ouhastay.net^ -||ouhnvkjhpajeob.com^ -||oujouniw.com^ -||oukdpbystipe.com^ -||oukiacryst.com^ -||ouknowsaidthea.info^ -||ouldhukelpm.org^ -||ouleegneeje.com^ -||ouloansu.com^ -||oulragart.xyz^ -||oulrarta.net^ -||oulrukry.xyz^ -||oulsools.com^ -||oulukdliketo.shop^ -||oumainseeba.xyz^ -||oumpashy.net^ -||oumtirsu.com^ -||ounceanalogous.com^ -||oungimuk.net^ -||oungoowe.xyz^ -||ounigaugsurvey.space^ -||ounojushyxb.xyz^ -||ounsamie.xyz^ -||ounsoopt.xyz^ -||oupastah.com^ -||oupaumul.net^ -||oupe71eiun.com^ -||ouphoarg.com^ -||ouphouch.com^ -||oupushee.com^ -||oupusoma.net^ -||ouranosmoyener.com^ -||ourcommonnews.com^ -||ourcommonstories.com^ -||ourcoolposts.com^ -||ourcoolspot.com^ -||ourcoolstories.com^ -||ourdadaikri.com^ -||ourdailystories.com^ -||ourdesperate.com^ -||ourdreamsanswer.info^ -||ourebifie.com^ -||ourgumpu.xyz^ -||ourhotfeed.com^ -||ourhotstories.com^ -||ourhypewords.com^ -||ouricsexja.com^ -||ourietwyers.uno^ -||ourl.link^ -||ourmumble.com^ -||ourscience.info^ -||ourselvesoak.com^ -||ourselvessuperintendent.com^ -||oursexasperationwatchful.com^ -||ourtecads.com^ -||ourteeko.com^ -||ourtopstories.com^ -||ourtshipanditlas.info^ -||ourtshipanditlast.info^ -||ouryretyequire.info^ -||ouryretyequirem.info^ -||ouseoyopersed.info^ -||ouseswhichtot.org^ -||ousinouk.xyz^ -||ousouzay.net^ -||oussaute.net^ -||ousseghu.net^ -||oussouveem.com^ -||oustoope.com^ -||outabsola.com^ -||outaipoma.com^ -||outarcaninean.com^ -||outbalanceleverage.com^ -||outblewmorga.com^ -||outburststudying.com^ -||outbursttones.com^ -||outchops.xyz^ -||outclaydola.com^ -||outcrycaseate.com^ -||outdilateinterrupt.com^ -||outdoeslegacy.uno^ -||outelectrodean.com^ -||outflednailbin.com^ -||outfortbogwort.guru^ -||outfoxnapalms.com^ -||outglowkeysets.guru^ -||outgratingknack.com^ -||outhauzours.com^ -||outheelrelict.com^ -||outhulem.net^ -||outkisslahuli.com^ -||outlawchillpropose.com^ -||outlayomnipresentdream.com^ -||outlieazafran.com^ -||outlineappearbar.com^ -||outlinesweatraces.com^ -||outloginequity.com^ -||outlookabsorb.com^ -||outlookreservebennet.com^ -||outmatchurgent.com^ -||outnumberconnatetomato.com^ -||outnumberminded.com^ -||outnumberpickyprofessor.com^ -||outoctillerytor.com^ -||outofthecath.org^ -||outpartaims.com^ -||outplodbunty.com^ -||outpoptusseh.top^ -||outpun.com^ -||outrageous-mine.pro^ -||outrotomr.com^ -||outseeltor.com^ -||outsetnormalwaited.com^ -||outseylor.com^ -||outshowfrat.uno^ -||outsiftfictor.top^ -||outsimiseara.com^ -||outsliggooa.com^ -||outsmoke-niyaxabura.com^ -||outstanding-tie.pro^ -||outstandingspread.com^ -||outstandingsubconsciousaudience.com^ -||outstantewq.info^ -||outsudoo.net^ -||outtaskhautein.guru^ -||outtimburrtor.com^ -||outtunova.com^ -||outwhirlipedeer.com^ -||outwitridiculousresume.com^ -||outwoodeuropa.com^ -||outyanmegaom.com^ -||ouveelsa.xyz^ -||ouvrestance.com^ -||ouwhejoacie.xyz^ -||ouxourtoo.com^ -||ouyoqudevfal.com^ -||ouzavamt.com^ -||ouzeelre.net^ -||ouzosbuddh.com^ -||ouzrqrzktv.com^ -||ovaleithermansfield.com^ -||ovaosgukck.com^ -||ovardu.com^ -||ovariesutopia.com^ -||ovcenehu.com^ -||ovdimin.buzz^ -||oveechoops.xyz^ -||ovemes.com^ -||ovenbifaces.cam^ -||ovenge.com^ -||overallalreadyregistry.com^ -||overallfetchheight.com^ -||overboardbilingual.com^ -||overboardlocumout.com^ -||overcacneaan.com^ -||overcomecheck.com^ -||overcooked-construction.com^ -||overcrummythrift.com^ -||overdates.com^ -||overdonealthough.com^ -||overduerebukeloyal.com^ -||overduerole.com^ -||overestimateoption.com^ -||overestimateyearly.com^ -||overfixaphakic.top^ -||overgalladean.com^ -||overheadnell.com^ -||overheadplough.com^ -||overhearpeasantenough.com^ -||overheatusa.com^ -||overjoyedtempfig.com^ -||overjoyedwithinthin.com^ -||overkirliaan.com^ -||overlapflintsidenote.com^ -||overlapparians.com^ -||overlettolt.com^ -||overlivedub.com^ -||overlook.fun^ -||overlooked-scratch.pro^ -||overlookedtension.pro^ -||overlookrapt.com^ -||overlyindelicatehoard.com^ -||overmewer.com^ -||overnumeler.com^ -||overonixa.com^ -||overpetleersia.com^ -||overponyfollower.com^ -||overprotectiveskilled.com^ -||overratedlively.com^ -||overreactperverse.com^ -||overreactsewershaped.com^ -||overseasearchopped.com^ -||overseasinfringementsaucepan.com^ -||overseasjune.com^ -||oversightantiquarianintervention.com^ -||oversightbullet.com^ -||oversleepcommercerepeat.com^ -||overswaloton.com^ -||overswirling.sbs^ -||overthetopexad.com^ -||overtimeequation.com^ -||overtimetoy.com^ -||overtrapinchchan.net^ -||overture.com^ -||overturnotherall.com^ -||overwhelmcontractorlibraries.com^ -||overwhelmfarrier.com^ -||overwhelmhavingbulky.com^ -||overwhelmingconclusionlogin.com^ -||overwhelmingdarncalumny.com^ -||overwhelmingoblige.com^ -||overwhelmpeacock.com^ -||overzoruaon.com^ -||overzubatan.com^ -||ovethecityonatal.info^ -||ovfjiktdr.com^ -||ovgjveaokedo.xyz^ -||ovhacmobpval.com^ -||ovhkfewhyqiz.com^ -||ovibospeseta.com^ -||ovjrqycdrwqh.com^ -||ovkamwvdof.com^ -||ovoordie.xyz^ -||ovqds.com^ -||ovsdnhpigmtd.xyz^ -||ovsgalzea.com^ -||ovsiicni.com^ -||ovsrhikuma.com^ -||ovvmptgnrskmmkr.com^ -||ovvmrrufvhclxf.com^ -||ow5a.net^ -||owbroinothiermol.xyz^ -||owcdilxy.xyz^ -||owenexposure.com^ -||oweoumoughtcal.com^ -||owevel.com^ -||owewary.com^ -||owhoalagly.com^ -||owhoogryinfo.com^ -||owingsorthealthy.com^ -||owingsucceeding.com^ -||owithlerendu.com^ -||owkeyiuxindchj.com^ -||owlcongratulate.com^ -||owlerydominos.cam^ -||owlinggnomist.com^ -||owlsalqrarab.com^ -||owlunimmvn.com^ -||owndata.network^ -||ownzzohggdfb.com^ -||owoxauky.com^ -||owqrtaodb.com^ -||owrddzml.com^ -||owrkwilxbw.com^ -||owsfsoogb.com^ -||owtvhrydewc.com^ -||owwafgaqdapg.com^ -||owwczycust.com^ -||owwogmlidz.com^ -||owxanjxlxtfbjw.com^ -||ox4h1dk85.com^ -||oxado.com^ -||oxbowfog.com^ -||oxbowmentaldraught.com^ -||oxenturftrot.com^ -||oxghhbxz.com^ -||oxhdtgmlryv.com^ -||oxhfalnniu.com^ -||oxhojtapzbwa.com^ -||oxidemustard.com^ -||oxidetoward.com^ -||oxjexkubhvwn.xyz^ -||oxkgcefteo.com^ -||oxkhifobfkky.com^ -||oxkpbuv.com^ -||oxllyobna.com^ -||oxmoonlint.com^ -||oxmqzeszyo.com^ -||oxnhhswdzwam.com^ -||oxowcjxiffsj.com^ -||oxrqdkfftw.com^ -||oxthrilled.com^ -||oxtkmgvmgu.com^ -||oxtracking.com^ -||oxtsale1.com^ -||oxwtihtvdwgdaq.com^ -||oxxvikappo.com^ -||oxybe.com^ -||oxydaserucked.com^ -||oxydend2r5umarb8oreum.com^ -||oxygenblobsglass.com^ -||oxygenpermissionenviable.com^ -||oxynticarkab.com^ -||oybcobkru.xyz^ -||oyen3zmvd.com^ -||oyi9f1kbaj.com^ -||oyihoxw.com^ -||oyopersed.info^ -||oyoperseduca.com^ -||oypjpbthhxhyuvq.com^ -||oypucuqsuwabnxy.com^ -||oysterexhalereview.com^ -||oysterfoxfoe.com^ -||oytoworkwithcatuk.com^ -||oyuvcqmqjyrqd.com^ -||oywzrri.com^ -||oyxctgotabvk.com^ -||oyyihttyklfwcgy.xyz^ -||ozationsuchasric.org^ -||ozayvgkqpymt.com^ -||ozectynptd.com^ -||ozesrbglrp.com^ -||ozgqwv.xyz^ -||ozhhujt.com^ -||ozihechzlcsgs.com^ -||ozlenbl.com^ -||ozlofsviborc.com^ -||ozlwhampaofq.com^ -||oznhkuilvrsdf.com^ -||ozobsaib.com^ -||ozonemedia.com^ -||ozongees.com^ -||ozsoekwgy.com^ -||ozsturgeonafford.com^ -||ozvnumjdncpfvt.com^ -||ozwolnonnotv.com^ -||ozwwawcaxoxh.com^ -||ozzruxazcoxc.com^ -||p-analytics.life^ -||p2e9r4n9.stackpathcdn.com^ -||p59othersq.com^ -||p64gk2yhba0p.com^ -||pa5ka.com^ -||paarsvc.com^ -||pacekami.com^ -||pachakliq.top^ -||pacificprocurator.com^ -||pacificvernonoutskirts.com^ -||pacifoos.net^ -||pacijwarnfrtq.com^ -||packageeyeball.com^ -||packmenappui.top^ -||pacoaniy.net^ -||pacquetpusher.com^ -||paddlediscovery.com^ -||paddleniecehandicraft.com^ -||padfungusunless.com^ -||padma-fed.com^ -||padp5arja8dgsd9cha.com^ -||padsabs.com^ -||padsans.com^ -||padsanz.com^ -||padsats.com^ -||padsatz.com^ -||padsbrown.com^ -||padsdel.com^ -||padsdel2.com^ -||padsdelivery.com^ -||padsimz.com^ -||padskis.com^ -||padslims.com^ -||padspms.com^ -||padsreds.com^ -||padstm.com^ -||padtue.xyz^ -||padujeph.xyz^ -||paeastei.net^ -||paehceman.com^ -||paekicz.com^ -||pafiptuy.net^ -||pafteejox.com^ -||pageantbagauspice.com^ -||pageantcause.com^ -||pageantcountrysideostentatious.com^ -||pagejunky.com^ -||pagemystery.com^ -||pageswork.guru^ -||pagnehmfxah.xyz^ -||pagtvmcbfjafj.com^ -||pahbasqibpih.com^ -||pahccuafbom.com^ -||pahjkmbtnkdc.com^ -||paht.tech^ -||pahtef.tech^ -||pahtfi.tech^ -||pahtgq.tech^ -||pahthf.tech^ -||pahtky.tech^ -||pahtwt.tech^ -||pahtzh.tech^ -||paibopse.com^ -||paichaus.com^ -||paid.outbrain.com^ -||paigarohauja.com^ -||paigna.com^ -||paikoasa.tv^ -||paikoaza.net^ -||paikshueless.com^ -||painfullyconfession.com^ -||painfultransport.com^ -||painharmlesscommence.com^ -||painkillercontrivanceelk.com^ -||painlessassumedbeing.com^ -||painlightly.com^ -||painsdire.com^ -||paintednarra.top^ -||paintwandering.com^ -||paiphaseze.com^ -||paipsuto.com^ -||pairschorus.com^ -||paiwaupseto.com^ -||paiwena.xyz^ -||paiwhisep.com^ -||paiwhoki.com^ -||pajamasgnat.com^ -||pajamasguests.com^ -||palabrapiquero.website^ -||palakahone.com^ -||palama2.co^ -||palama2.com^ -||palaroleg.guru^ -||palatedaylight.com^ -||palatesovarium.digital^ -||paleexamsletters.com^ -||paleogdeedful.top^ -||paletotpankin.website^ -||paletteantler.com^ -||paletteoverjoyed.com^ -||palibs.tech^ -||paliglaiks.life^ -||pallonenuda.top^ -||palmcodliverblown.com^ -||palmfulcultivateemergency.com^ -||palmfulvisitsbalk.com^ -||palmkindnesspee.com^ -||palmmalice.com^ -||palpablefungussome.com^ -||palpablememoranduminvite.com^ -||palroudi.xyz^ -||palsybrush.com^ -||palsyowe.com^ -||paltryheadline.com^ -||paluinho.cloud^ -||palvanquish.com^ -||palycaid.life^ -||palzscurou.com^ -||pampergloriafable.com^ -||pamperseparate.com^ -||pampervacancyrate.com^ -||pamphletredhead.com^ -||pamphletthump.com^ -||pampimty.com^ -||pamtuea.xyz^ -||pamury.xyz^ -||pamwrymm.live^ -||panagiapivots.com^ -||panamakeq.info^ -||panaservers.com^ -||panattain.com^ -||pancakedusteradmirable.com^ -||panchaxcorylet.com^ -||pandanaequian.life^ -||pandasincl.top^ -||pandasloveforlife.com^ -||panduraoestrum.com^ -||panelerkingly.top^ -||pangdeserved.com^ -||pangintrigueliquidate.com^ -||pangoha.xyz^ -||pangtues.xyz^ -||panicmiserableeligible.com^ -||panisicelectre.top^ -||pannamdashee.com^ -||pannamsaluter.com^ -||pannumregnal.com^ -||panoz.xyz^ -||panpant.xyz^ -||pansymerbaby.com^ -||pantafives.com^ -||pantiesattemptslant.com^ -||pantomimecattish.com^ -||pantomimecommitmenttestify.com^ -||pantomimemistystammer.com^ -||pantrydivergegene.com^ -||pantslayerboxoffice.com^ -||pantsurplus.com^ -||pantuz.xyz^ -||panuelobriard.com^ -||panyarspan.com^ -||paoukgnssmkeys.com^ -||papaneecorche.com^ -||papawrefits.com^ -||papayacallose.top^ -||papererweerish.top^ -||paphoolred.com^ -||papilio3glauecus.com^ -||papillapunning.top^ -||papiostanner.top^ -||papismkhedahs.com^ -||papmeatidigbo.com^ -||pappeajalapa.digital^ -||papposeclingy.com^ -||pappyalfaje.com^ -||paqcpeotbx.com^ -||parableconverted.com^ -||parachuteeffectedotter.com^ -||parachutegustheory.com^ -||parachutelacquer.com^ -||parademuscleseurope.com^ -||paradiseannouncingnow.com^ -||paradisenookminutes.com^ -||paradizeconstruction.com^ -||paragraphdisappointingthinks.com^ -||paragraphopera.com^ -||parallelgds.store^ -||paralyzedepisodetiny.com^ -||paralyzedresourcesweapons.com^ -||paranoiaantiquarianstraightened.com^ -||paranoiaourselves.com^ -||paraphdeafer.top^ -||parasitegoddess.com^ -||parasitevolatile.com^ -||parasolsever.com^ -||paravaprese.com^ -||parboilkpuesi.com^ -||parcookgitano.top^ -||pardonsentencegeneral.com^ -||parecyrclame.com^ -||parentingcalculated.com^ -||parentlargevia.com^ -||parentpensionvolunteer.com^ -||parentsatellitecheque.com^ -||pargodysuria.top^ -||paripartners.ru^ -||paris-lno.com^ -||parishconfinedmule.com^ -||parishintoxicate.com^ -||parishleft.com^ -||parishseparated.com^ -||parisjeroleinpg.com^ -||paritywarninglargest.com^ -||parkcircularpearl.com^ -||parkdues.com^ -||parkdumbest.com^ -||parkedcheerful.com^ -||parkedcountdownallows.com^ -||parkingcombstrawberry.com^ -||parkingridiculous.com^ -||parkraffia.com^ -||parkurl.com^ -||parliamentarypublicationfruitful.com^ -||parliamentaryreputation.com^ -||parlorbagseconomy.com^ -||parlorstudfacilitate.com^ -||parlorsuperhero.com^ -||parlouractivityattacked.com^ -||parlourinvulnerablerighteous.com^ -||paronymtethery.com^ -||parrallforums.top^ -||parrecleftne.xyz^ -||parrotlamista.top^ -||parrotstrim.com^ -||parserskiotomy.com^ -||parsiheep.net^ -||parsimoniousinvincible.net^ -||parsleyagencyoutnumber.com^ -||parsleybunwalnut.com^ -||parsonhimaircraft.com^ -||partedexpensive.com^ -||partef.com^ -||parthanonstatue.com^ -||partial-pair.pro^ -||partiallyexploitrabbit.com^ -||partiallyguardedascension.com^ -||partiallyrunnerproductive.com^ -||partialpreachground.com^ -||participantderisive.com^ -||participateconsequences.com^ -||participatemop.com^ -||participateoppositedifferent.com^ -||participationimpediment.com^ -||particlesnuff.com^ -||particularlyarid.com^ -||partieseclipse.com^ -||partiesinches.com^ -||partion-ricism.xyz^ -||partitedene.top^ -||partlytrouble.com^ -||partnerbcgame.com^ -||partnerentry.com^ -||partnerlinks.io^ -||partpedestal.com^ -||partridgehostcrumb.com^ -||partsbury.com^ -||partsfroveil.com^ -||parttimelucidly.com^ -||parttimeobdurate.com^ -||parttimesupremeretard.com^ -||partyingdisastrouskitty.com^ -||partypartners.com^ -||parumal.com^ -||parwiderunder.com^ -||pas-rahav.com^ -||pasaltair.com^ -||pasbstbovc.com^ -||pascualpecked.top^ -||pasenhlbot.com^ -||paservices.tech^ -||pasjcutadak.com^ -||paslsa.com^ -||pasoleex.com^ -||pasoshardy.com^ -||passablecoalitionvarious.com^ -||passablejeepparliament.com^ -||passagessixtyseeing.com^ -||passelsylvius.top^ -||passeura.com^ -||passfixx.com^ -||passingpact.com^ -||passionacidderisive.com^ -||passionatephilosophical.com^ -||passiondimlyhorrified.com^ -||passionfruitads.com^ -||passtechusa.com^ -||passwordsjawsticking.com^ -||passwordslayoutvest.com^ -||passwordssaturatepebble.com^ -||pasteldevaluation.com^ -||pastfrolicpackage.com^ -||pastjauntychinese.com^ -||pastoupt.com^ -||pastureacross.com^ -||pasxfixs.com^ -||patakaendymal.top^ -||patalogs.com^ -||patapatdidymis.space^ -||patchassignmildness.com^ -||patchedcyamoid.com^ -||patefysouari.com^ -||patentdestructive.com^ -||paternalcostumefaithless.com^ -||paternalrepresentation.com^ -||paternityfourth.com^ -||patgsrv.com^ -||pathloaded.com^ -||pathosacetals.com^ -||pathsectorostentatious.com^ -||patientlyperkgarment.com^ -||patiomistake.com^ -||patmianhillock.com^ -||patoionanrumand.com^ -||patronageausterity.com^ -||patronagepolitician.com^ -||patrondescendantprecursor.com^ -||patronimproveyourselves.com^ -||patronknowing.com^ -||patroposalun.pro^ -||patsincerelyswing.com^ -||patsyendless.com^ -||pattenplouter.com^ -||patternimaginationbull.com^ -||pattyheadlong.com^ -||paubaulo.com^ -||paucityirido.space^ -||pauewr4cw2xs5q.com^ -||paughtyrostrum.com^ -||paugrozefou.net^ -||paularrears.com^ -||paulastroid.com^ -||paulcorrectfluid.com^ -||paulusacor.uno^ -||paunaupa.com^ -||paushoow.net^ -||paussidsipage.com^ -||pausteegohoa.net^ -||pauwhajo.xyz^ -||pavfazbwiap.com^ -||paviestrewel.top^ -||pavymoieter.com^ -||pawbothcompany.com^ -||pawderstream.com^ -||pawheatyous.com^ -||pawhybkpqgqw.com^ -||pawkilycurvous.com^ -||pawmaudwaterfront.com^ -||pawschancesponsor.com^ -||pawscreationsurely.com^ -||paxmedia.net^ -||paxsfiss.com^ -||paxxfiss.com^ -||paxyued.com^ -||pay-click.ru^ -||payae8moon9.com^ -||paybackmodified.com^ -||paybackvocal.com^ -||payfertilisedtint.com^ -||paygmlaudwl.com^ -||paymentsweb.org^ -||paymistrustflake.com^ -||payoffdisastrous.com^ -||payoffdonatecookery.com^ -||payslipselderly.com^ -||paysqueak.com^ -||pazashevy.com^ -||pazzfun.com^ -||pbacijttzozq.com^ -||pbamjgga.com^ -||pbbqzqi.com^ -||pbcde.com^ -||pbcohtm.com^ -||pbdo.net^ -||pbfnyvl.com^ -||pbgormggma.com^ -||pbhjohrx.xyz^ -||pbhrwhehnyibit.com^ -||pbkdf.com^ -||pblcpush.com^ -||pblinq.com^ -||pblmppbnu.com^ -||pbmt.cloud^ -||pbnjzwjsy.com^ -||pboddnqjobuf.com^ -||pbqqzibusu.com^ -||pbquhwsx.xyz^ -||pbsawkue.com^ -||pbterra.com^ -||pbwlanlzmzeip.com^ -||pbxai.com^ -||pbxopblttvorhd.com^ -||pbyvehcz.com^ -||pc-ads.com^ -||pc180101.com^ -||pc1ads.com^ -||pc20160301.com^ -||pc2121.com^ -||pc2ads.com^ -||pc2ads.ru^ -||pc5ads.com^ -||pccasia.xyz^ -||pccjtxsao.com^ -||pcdgninekvch.com^ -||pcfchubby.top^ -||pcglvhrln.com^ -||pchcwqsfaqpw.com^ -||pcheahrdnfktvhs.xyz^ -||pcirurrkeazm.com^ -||pclk.name^ -||pcmaddwoxex.com^ -||pcmclks.com^ -||pcpqqnlvw.xyz^ -||pcruwbk.com^ -||pctlwm.com^ -||pctsrv.com^ -||pctv.xyz^ -||pcvlpotybnd.com^ -||pcyprkoqednl.xyz^ -||pd-news.com^ -||pdbqyzi.com^ -||pdcnxobcv.com^ -||pdfsearchhq.com^ -||pdfurqok.com^ -||pdgmhnlayjm.com^ -||pdiyluhfttb.xyz^ -||pdjmarxsne.com^ -||pdjurmfxvebbaoq.xyz^ -||pdn-1.com^ -||pdn-2.com^ -||pdn-3.com^ -||pdn-5.com^ -||pdnyxyqoihia.xyz^ -||pdqdovmsynelej.com^ -||pdridjiviq.com^ -||pdrqubl.com^ -||pdsybkhsdjvog.xyz^ -||pdsyibwlxd.xyz^ -||pdvacde.com^ -||pdygfdtghcyh.com^ -||peacebanana.com^ -||peacefulactivity.com^ -||peacefullyclenchnoun.com^ -||peacefullyundergroundsubsided.com^ -||peachesevaporateearlap.com^ -||peachessummoned.com^ -||peachrecess.com^ -||peachsquat.com^ -||peachybeautifulplenitude.com^ -||peachytopless.com^ -||peachywaspish.com^ -||peacinggreyed.com^ -||peacockshudder.com^ -||peacto.com^ -||peaiholism.click^ -||peakchewing.com^ -||peakclick.com^ -||peakluckily.com^ -||peakpushedancestor.com^ -||pealia.com^ -||peanutsfuscin.com^ -||pearledbolo.life^ -||pearlhereby.com^ -||pearlrip.com^ -||pearlsdevotionnative.com^ -||pearsissuedboob.com^ -||peasbishopgive.com^ -||peaveynee.top^ -||pebadu.com^ -||pebansokes.uno^ -||pebbleoutgoing.com^ -||pecdfzy.com^ -||pecialukizeias.info^ -||pecifyspacing.com^ -||pecism.com^ -||peckbattledrop.com^ -||peckrespectfully.com^ -||pectasefrisker.com^ -||pectsofcukorporatef.info^ -||peculiaritiessevermaestro.com^ -||peculiarityrevengeinternet.com^ -||peculiarpug.com^ -||pedestalturner.com^ -||pedlujvcfd.com^ -||peechohovaz.xyz^ -||peecoubo.net^ -||peeingmunster.top^ -||peekaure.xyz^ -||peekipaiw.com^ -||peelaipu.xyz^ -||peelecoroner.top^ -||peemee.com^ -||peepholelandreed.com^ -||peer39.net^ -||peeredfoggy.com^ -||peeredgerman.com^ -||peeredstates.com^ -||peeredwalkingcloud.com^ -||peeringgrandflashing.com^ -||peeringinvasion.com^ -||peesopit.net^ -||peesteso.xyz^ -||peethach.com^ -||peethobo.com^ -||peevishaboriginalzinc.com^ -||peevishchasingstir.com^ -||peevishchosen.com^ -||peevishforceless.com^ -||pegablackjal.com^ -||pegasuson.com^ -||peggyhypoid.com^ -||pegirs.com^ -||pegloang.com^ -||peirs5tbakchios.com^ -||peisantcorneas.com^ -||pejzeexukxo.com^ -||pekcbuz.com^ -||pekroace.net^ -||pelagictanjib.com^ -||pelamydlours.com^ -||pelargiunmelt.top^ -||pelfsgarote.com^ -||peliastitters.com^ -||pelletslimosa.com^ -||pelliancalmato.com^ -||pelorusgravest.top^ -||pemsrv.com^ -||penaltyoutmatch.com^ -||penapne.xyz^ -||pendulumwhack.com^ -||pengobyzant.com^ -||penguest.xyz^ -||penguindeliberate.com^ -||penholderlossfrontage.com^ -||penitentarduous.com^ -||penitentiaryoverdosetumble.com^ -||penitentpeepinsulation.com^ -||penkhkqkbyt.com^ -||penniedtache.com^ -||pennilesscomingall.com^ -||pennilesspictorial.com^ -||pennilessrobber.com^ -||pennilesstestangrily.com^ -||pennillratti.com^ -||pennyotcstock.com^ -||penrake.com^ -||penromanceadmittance.com^ -||pensionboarding.com^ -||pensionerbegins.com^ -||pensionerbrightencountess.com^ -||pensiveblindlytwin.com^ -||pentalime.com^ -||pentodetaffy.top^ -||penuchefirms.com^ -||peohara.com^ -||peopleshouldthin.com^ -||peoric.com^ -||pepapigg.xyz^ -||pepepush.net^ -||peppaping.xyz^ -||pepperbufferacid.com^ -||peppermintinstructdumbest.com^ -||pepperthusadventure.com^ -||pepperysergeantrisky.com^ -||peppinaegina.com^ -||peppincalmy.top^ -||peppy2lon1g1stalk.com^ -||pepserump.life^ -||pepyyzqqgciv.com^ -||perceivedagrarian.com^ -||perceivedundesirable.com^ -||percentageartistic.com^ -||percentagethinkstasting.com^ -||perceptionatomicmicrowave.com^ -||perceptiongrandparents.com^ -||percidaffects.com^ -||percussivecloakfortunes.com^ -||percussiverefrigeratorunderstandable.com^ -||percynaturalist.com^ -||perechsupors.com^ -||pereliaastroid.com^ -||perennialsecondly.com^ -||perfb.com^ -||perfdrive.com^ -||perfectflowing.com^ -||perfectionministerfeasible.com^ -||perfectlywent.com^ -||perfectmarket.com^ -||perfectplanned.com^ -||performance-check.b-cdn.net^ -||performanceadexchange.com^ -||performanceonclick.com^ -||performancetrustednetwork.com^ -||performanteads.com^ -||performassumptionbonfire.com^ -||performedlifestyleburial.com^ -||performingdistastefulsevere.com^ -||performinggushorseman.com^ -||performingwhosegride.com^ -||performit.club^ -||performtechnique.com^ -||perfumeantecedent.com^ -||perfunctoryfrugal.com^ -||perhapsdrivewayvat.com^ -||perhiptid.com^ -||perhui.com^ -||perics.com^ -||perigshfnon.com^ -||perilousalonetrout.com^ -||perimeterridesnatch.com^ -||periodicjotrickle.com^ -||periodicmassageate.com^ -||periodicpole.com^ -||periodicprodigal.com^ -||periodpennavigation.com^ -||periodscirculation.com^ -||periodspoppyrefuge.com^ -||perjurycelsiussenses.com^ -||perksthawers.com^ -||perksyringefiring.com^ -||permanentadvertisebytes.com^ -||permanentlymission.com^ -||permanentlyvulture.com^ -||permissdevours.space^ -||permissionarriveinsert.com^ -||permissionfence.com^ -||permissivegrimlychore.com^ -||permitwarmer.com^ -||pernodkelder.top^ -||perperarenail.com^ -||perpetrateabsolute.com^ -||perpetratejewels.com^ -||perpetratoralienglory.com^ -||perryflealowest.com^ -||perryvolleyball.com^ -||persecutenosypajamas.com^ -||persecutionmachinery.com^ -||perseducatiuca.com^ -||perseverancekaleidoscopefinance.com^ -||perseverancewash.com^ -||perseverehang.com^ -||persevereindirect.com^ -||perseverevoice.com^ -||persicrejolt.com^ -||persistarcticthese.com^ -||persistbrittle.com^ -||persistsaid.com^ -||persona3.tech^ -||personalityhamlet.com^ -||personalityleftoverwhiskers.com^ -||personalityvillainlots.com^ -||personifyallege.com^ -||personthirtycoldness.com^ -||perspectiveunderstandingslammed.com^ -||perspectivevaluation.com^ -||perspirationauntpickup.com^ -||perspirationfraction.com^ -||persuadepointed.com^ -||persuasivepenitentiary.com^ -||pertawee.net^ -||pertersacstyli.com^ -||pertfinds.com^ -||pertinentadvancedpotter.com^ -||pertlouv.com^ -||perttogahoot.com^ -||pertyvaluationia.monster^ -||perusebulging.com^ -||peruseinvitation.com^ -||perversecozy.com^ -||perverseunsuccessful.com^ -||pervertmine.com^ -||pervertscarreceipt.com^ -||pervialinagile.com^ -||peshkarties.top^ -||peskyclarifysuitcases.com^ -||peskycrash.com^ -||peskylock.com^ -||peskyresistamaze.com^ -||pesoaniz.com^ -||pessimisticconductiveworrying.com^ -||pessimisticextra.com^ -||pestequitch.com^ -||pesterclinkaltogether.com^ -||pesterdisarm.com^ -||pesteroverwork.com^ -||pesterunusual.com^ -||pestilenttidefilth.org^ -||petalycnida.com^ -||petasmaeryops.com^ -||petasmaupbore.website^ -||petasusawber.com^ -||petchesa.net^ -||petchoub.com^ -||petendereruk.com^ -||petideadeference.com^ -||petrelbeheira.website^ -||petrifacius.com^ -||petristoker.website^ -||petrolbuck.com^ -||petrousrandle.com^ -||petsavoury.com^ -||pettedcres.com^ -||pettishprecopy.com^ -||pettledsupper.space^ -||petyntrx.com^ -||peuhlcamaile.space^ -||peuyktnnxqnu.com^ -||pewageconcile.com^ -||pexkmaebfy.xyz^ -||pexoenne.site^ -||pexuvais.net^ -||pezuhdhzrmb.com^ -||pf34zdjoeycr.com^ -||pfactgmb.xyz^ -||pfdclqlitxypve.com^ -||pfddniedc.com^ -||pfeite.com^ -||pfewuzbtkr.com^ -||pfiuyt.com^ -||pfjfrxayglyouj.com^ -||pflmikjx.com^ -||pflvyqvpiwdnl.com^ -||pfmmzmdba.com^ -||pfompiorkla.com^ -||pfulhwxjeoi.com^ -||pfyscjwxjcqdsqc.com^ -||pgaictlq.xyz^ -||pgbmjuhwiej.xyz^ -||pgezbuz.com^ -||pgiudyuixnxh.com^ -||pgiyadmvk.com^ -||pgjlctmswgnwf.com^ -||pglcyeawb.com^ -||pglxiyiylgjpy.com^ -||pgmcdn.com^ -||pgmediaserve.com^ -||pgmfuffwfl.com^ -||pgmpsqoq.xyz^ -||pgonews.pro^ -||pgorttohwo.info^ -||pgpartner.com^ -||pgssjxz.com^ -||pgssl.com^ -||pgtabxxmb.com^ -||pgvjhejpnnir.com^ -||pgwcrtobrdjx.com^ -||pgwlzodsll.com^ -||phaarnsvqzlr.com^ -||phabycebe.com^ -||phaeismcurtal.top^ -||phaglalt.com^ -||phaibimoa.xyz^ -||phaighoosie.com^ -||phaignux.xyz^ -||phaikroo.net^ -||phaiksul.net^ -||phaimseksa.com^ -||phaipaun.net^ -||phaiseen.com^ -||phaisoaz.com^ -||phaitaghy.com^ -||phalingy.net^ -||phallicbedsore.com^ -||phamsacm.net^ -||phanoaftapt.com^ -||phantomattestationzillion.com^ -||phantomtheft.com^ -||phapsarsox.xyz^ -||pharmcash.com^ -||phasecrance.com^ -||phaseranarch.com^ -||phaseunleden.top^ -||phastoag.com^ -||phauckoo.xyz^ -||phaucmoa.net^ -||phaudree.com^ -||phauftee.xyz^ -||phauraur.com^ -||phaurtuh.net^ -||phause.com^ -||phautchiwaiw.net^ -||pheasantarmpitswallow.com^ -||pheasantdestinydisrespect.com^ -||phee1oci.com^ -||pheeghie.net^ -||pheegoab.click^ -||pheepudo.net^ -||pheerdoudeem.com^ -||pheersie.com^ -||pheftoud.com^ -||phempoabsoun.com^ -||pheneobdure.digital^ -||pheniter.com^ -||phenomenonwhilstsleek.com^ -||phenotypebest.com^ -||phepofte.net^ -||pheptoam.com^ -||pheselta.net^ -||phesheet.net^ -||phetsaikrugi.com^ -||phewhouhopse.com^ -||phftcml.com^ -||phglobk.com^ -||phhovaafvjhdku.com^ -||phhxlhdjw.xyz^ -||phialedamende.com^ -||phicmune.net^ -||phidianbesmut.com^ -||phiduvuka.pro^ -||philadelphiadip.com^ -||philosophicalurgegreece.com^ -||philosophydictation.com^ -||phirgese.com^ -||phirozeon.com^ -||phkucgq.com^ -||phkwimm.com^ -||phkyhiohh.com^ -||phlomisthuluth.digital^ -||phloxsub73ulata.com^ -||phmqqbm.com^ -||phoackoangu.com^ -||phoalard.net^ -||phoamsoa.xyz^ -||phoaphoxsurvey.space^ -||phoaptee.net^ -||phoaraut.com^ -||phoawevie.com^ -||phoawhap.net^ -||phokruhefeki.com^ -||phokukse.com^ -||pholrock.net^ -||phomoach.net^ -||phoneboothsabledomesticated.com^ -||phoneraisedconstituent.com^ -||phoobsoalrie.com^ -||phoobsoo.net^ -||phooghoo.com^ -||phoognol.com^ -||phoojeex.xyz^ -||phookroamte.xyz^ -||phooreew.net^ -||phoossax.net^ -||phoosuss.net^ -||phortaub.com^ -||phosphatepossible.com^ -||photofuturecrappy.com^ -||photographcrushingsouvenirs.com^ -||photographerinopportune.com^ -||photographingreliant.com^ -||photographingstirinput.com^ -||photographyprovincelivestock.com^ -||phoulade.xyz^ -||phoumpait.com^ -||phourdee.com^ -||phoutchounse.com^ -||phouvemp.net^ -||phpkxtwuibv.com^ -||phraa-lby.com^ -||phrasespokesmansurmise.com^ -||phraseybeulah.com^ -||phrygiakodak.top^ -||phsism.com^ -||phts.io^ -||phubsorg.xyz^ -||phudreez.com^ -||phujaudsoft.xyz^ -||phukienthoitranggiare.com^ -||phulaque.com^ -||phultems.net^ -||phultids.com^ -||phumpauk.com^ -||phupours.com^ -||phuzeeksub.com^ -||phvhnxebmrzf.com^ -||phyllinvoluta.com^ -||phymasfacks.com^ -||physical-flow-i-255.site^ -||physicalblueberry.com^ -||physicaldetermine.com^ -||physicallyshillingattentions.com^ -||physicalnecessitymonth.com^ -||physiquefourth.com^ -||phytasedemerge.digital^ -||phywifupta.com^ -||piafxnwmbx.com^ -||piaigyyigyghjmi.xyz^ -||pianistcampingroom.com^ -||pianoassort.com^ -||piarecdn.com^ -||piaroankenyte.store^ -||picadmedia.com^ -||picath.com^ -||picbucks.com^ -||piccid.com^ -||piccoloerucin.com^ -||pickaflick.co^ -||pickedincome.com^ -||pickedlawhandshake.com^ -||picketsubmission.com^ -||picklecandourbug.com^ -||picklesdumb.com^ -||picklespealwanderer.com^ -||pickupnationalityinexhaustible.com^ -||pickuppestsyndrome.com^ -||pickvideolink.com^ -||picsofdream.space^ -||picsti.com^ -||pictela.net^ -||pictorialtraverse.com^ -||picturecorrespond.com^ -||pieceresponsepamphlet.com^ -||piecreatefragment.com^ -||pienbitore.com^ -||pieproficientcurve.com^ -||piercedlugs.com^ -||piercepavilion.com^ -||pierchestnut.com^ -||piercing-employment.pro^ -||pierisrapgae.com^ -||pierlinks.com^ -||pierrapturerudder.com^ -||pietondoozy.uno^ -||pietyharmoniousablebodied.com^ -||pigcomprisegruff.com^ -||pigistles.com^ -||pigletinerm.com^ -||pigletsmunsee.top^ -||pigmewpiete.com^ -||pigmydocent.com^ -||pignuwoa.com^ -||pigrewartos.com^ -||pigroldgdednc.com^ -||pigsflintconfidentiality.com^ -||pigtre.com^ -||pihmvhv.com^ -||pihu.xxxpornhd.pro^ -||pihzhhn.com^ -||pikedhelloed.com^ -||pikrumsi.net^ -||pilaffskoniga.com^ -||pilaryhurrah.com^ -||piledannouncing.com^ -||piledchinpitiful.com^ -||pilgrimarduouscorruption.com^ -||pilgrimgrass.com^ -||pillerycetin.website^ -||pilliondridder.life^ -||pillsofecho.com^ -||pillthingy.com^ -||pilltransgress.com^ -||piloteegazy.com^ -||piloteraser.com^ -||pilotnourishmentlifetime.com^ -||pilpulbagmen.com^ -||pilsarde.net^ -||piltockcurt.top^ -||pimenttoryfy.top^ -||pimpleinterference.com^ -||pimtauns.com^ -||pinaffectionatelyaborigines.com^ -||pinballpublishernetwork.com^ -||pincersnap.com^ -||pinchbarren.com^ -||pinchingoverridemargin.com^ -||pincruqtjcu.com^ -||pineappleconsideringpreference.com^ -||pinefluencydiffuse.com^ -||pinetq.com^ -||ping-traffic.info^ -||pinionscdf.com^ -||pinitolshouldn.com^ -||pinkleo.pro^ -||pinkpig2le8tt09.com^ -||pinlockasellus.top^ -||pinoffence.com^ -||pinprickmerry.com^ -||pinprickverificationdecember.com^ -||pinprickwinconfirm.com^ -||pintlecylix.top^ -||pintoutcryplays.com^ -||pinttalewag.com^ -||pinwalerompers.com^ -||pioneercomparatively.com^ -||pioneerhardshipfarewell.com^ -||pioneersuspectedjury.com^ -||pioneerusual.com^ -||pionwaney.com^ -||piouscheers.com^ -||piouspoemgoodnight.com^ -||pip-pip-pop.com^ -||pipaffiliates.com^ -||pipeaota.com^ -||pipeofferear.com^ -||pipeoverwhelm.com^ -||pipeschannels.com^ -||pipetskeloid.com^ -||pipetsungross.com^ -||pipprfvhpykpvk.com^ -||pipsol.net^ -||piqueendogen.com^ -||piquperkin.com^ -||piratedivide.com^ -||pirniemagi.com^ -||pirnirok.top^ -||pirouque.com^ -||pirtecho.net^ -||pisanguttate.com^ -||pisism.com^ -||piskaday.com^ -||pistolstumbled.com^ -||pistolterrificsuspend.com^ -||pitarahlordy.top^ -||pitasevpk.com^ -||pitcharduous.com^ -||pitchedfurs.com^ -||pitchedgenuinevillain.com^ -||pitchedvalleyspageant.com^ -||pitcherprobable.com^ -||piteevoo.com^ -||pithgregor.com^ -||pitomievectors.com^ -||pitonlocmna.com^ -||pitshopsat.com^ -||pitteddilemma.top^ -||pittinekunai.com^ -||pitycultural.com^ -||pityneedsdads.com^ -||pitypericu.com^ -||pitysuffix.com^ -||piuyt.com^ -||pivotrunner.com^ -||piwfhzzby.com^ -||piwhbfgyj.com^ -||piwxzsuewln.com^ -||pixazza.com^ -||pixel-eu.jggegj-rtbix.top^ -||pixel-eu.s0q260-rtbix.top^ -||pixelhere.com^ -||pixelplay.pro^ -||pixelspivot.com^ -||pixfuture.net^ -||pixinform.com^ -||pixxur.com^ -||piybineqejjswp.com^ -||piz7ohhujogi.com^ -||pizzasocalled.com^ -||pjagilteei.com^ -||pjhbyaaadlw.com^ -||pjivapiumeb.com^ -||pjjpp.com^ -||pjlufuwtxv.com^ -||pjnwmbz.com^ -||pjoaeeajjxsc.com^ -||pjoibbc.com^ -||pjoqkmks.com^ -||pjqchcfwtw.com^ -||pjslwort.com^ -||pjvartonsbewand.info^ -||pjvunkjgh.com^ -||pjwshrlhyjyhqu.xyz^ -||pjyvgdpvjp.com^ -||pjzgggywd.com^ -||pk910324e.com^ -||pkebenfb.com^ -||pkhhyool.com^ -||pkhntvfvkho.com^ -||pkjekjmzfiuvi.com^ -||pkjouzfyf.com^ -||pkpibupbbuvbgwh.xyz^ -||pkudawbkcl.com^ -||pkxseoxojrg.com^ -||pkyhdpdzidm.com^ -||pl94b46522zo.shop^ -||placardcapitalistcalculate.com^ -||placingcompany.com^ -||placingfinally.com^ -||placingharassment.com^ -||placingsolemnlyinexpedient.com^ -||placingtraditionalhobble.com^ -||placodegnawers.guru^ -||plaguealacritytwitter.com^ -||plaicealwayspanther.com^ -||plaicecaught.com^ -||plainanyways.top^ -||plainphilosophy.pro^ -||plainscashmereperceive.com^ -||plainsnudge.com^ -||plaintiveaccount.pro^ -||plaintorch.com^ -||plaitseeds.com^ -||plaitvaccination.com^ -||plandappsb.com^ -||plane-pusherbidder.org^ -||planet-vids.online^ -||planet7links.com^ -||planetarium-planet.com^ -||planetconstituent.com^ -||planetgrimace.com^ -||planetvids.online^ -||planetvids.space^ -||plankbritish.com^ -||planktab.com^ -||planmybackup.co^ -||plannedcardiac.com^ -||plannersavour.com^ -||planningbullyingquoted.com^ -||planningunavoidablenull.com^ -||planningwebviolently.com^ -||plannto.com^ -||planscul.com^ -||plantapizzazz.com^ -||plantationthrillednoncommittal.com^ -||plantcontradictionexpansion.com^ -||plantsrancorous.com^ -||plantswindscreen.com^ -||planxtyroaring.com^ -||planyourbackup.co^ -||plaqt.com^ -||plasmidsnark.website^ -||plastercreatedexpansion.com^ -||plasticskilledlogs.com^ -||plastleislike.com^ -||platelosingshameless.com^ -||platenssitient.com^ -||platesnervous.com^ -||platesworked.com^ -||platform-hetcash.com^ -||platformallowingcame.com^ -||platformsbrotherhoodreticence.com^ -||platformsrat.com^ -||platformsrespected.com^ -||platinumbother.com^ -||platitudecontinental.com^ -||platitudefivesnack.com^ -||platitudewildest.com^ -||platitudezeal.com^ -||play5play1.com^ -||playairplanerighty.com^ -||playbook88a2.com^ -||playboykangaroo.com^ -||playboykinky.com^ -||playboywere.com^ -||playdraught.com^ -||playeranyd.org^ -||playeranydwo.info^ -||playerseo.club^ -||playerstrivefascinated.com^ -||playertraffic.com^ -||playgroundordinarilymess.com^ -||playingoutfitprofile.com^ -||playmmogames.com^ -||playoverlyspeedyinfo-product.info^ -||playrdkf.com^ -||playspeculationnumerals.com^ -||playstream.media^ -||playstretch.host^ -||playukinternet.com^ -||playvideoclub.com^ -||playvideodirect.com^ -||playwrightgrant.com^ -||playwrightsovietcommentary.com^ -||pleadsbox.com^ -||pleasantlyknives.com^ -||pleasantpaltryconnections.com^ -||pleasedexample.com^ -||pleasedprocessed.com^ -||pleasenudgemillions.com^ -||pleasetrack.com^ -||pleasingrest.pro^ -||pleasureflatteringmoonlight.com^ -||pledgeexceptionalinsure.com^ -||pledgeincludingsteer.com^ -||pledgetolerate.com^ -||pledgezoology.com^ -||plemil.info^ -||plenitudeagency.com^ -||plenitudedevoidlag.com^ -||plenitudesellerministry.com^ -||plenomedia.com^ -||plentifulexposed.com^ -||plentifulqueen.com^ -||plentifulslander.com^ -||plentifulwilling.com^ -||plex4rtb.com^ -||plexop.net^ -||plexureturp.com^ -||plhhisqiem.com^ -||plianteditdisembark.com^ -||pliantleft.com^ -||pliblc.com^ -||plierifykvyc.com^ -||plinksplanet.com^ -||plirkep.com^ -||plkoxaypcmzkus.com^ -||pllah.com^ -||plmhezvbcjcywo.com^ -||plmwsl.com^ -||plntxgh.com^ -||plocap.com^ -||plodpicture.com^ -||plodrat.com^ -||ploimajoined.top^ -||plorexdry.com^ -||plosaztduojwbe.com^ -||plotafb.com^ -||plotchwrive.com^ -||ploteight.com^ -||plotlibyodler.top^ -||ploughbrushed.com^ -||ploygunline.com^ -||ployingcurship.com^ -||plpuybpodusgb.xyz^ -||plqbxvnjxq92.com^ -||plrjs.org^ -||plrst.com^ -||plsrcmp.com^ -||pltamaxr.com^ -||pluckfigburst.com^ -||pluckyhit.com^ -||pluckymausoleum.com^ -||plufdsa.com^ -||plufdsb.com^ -||pluffcalaba.top^ -||pluffdoodah.com^ -||plugerr.com^ -||plugs.co^ -||plumagebenevolenttv.com^ -||plumberwolves.com^ -||plumbfullybeehive.com^ -||plumbsplash.com^ -||plumpcontrol.pro^ -||plumpdianafraud.com^ -||plumpdisobeyastronomy.com^ -||plumpgrabbedseventy.com^ -||plumposterity.com^ -||plumsbusiness.com^ -||plumsscientific.com^ -||plumssponsor.com^ -||plundertentative.com^ -||plungecarbon.com^ -||plungedcandourbleach.com^ -||pluralpeachy.com^ -||plusungratefulinstruction.com^ -||plutothejewel.com^ -||plvhsycor.com^ -||plvwyoed.com^ -||plxserve.com^ -||plyfoni.ru^ -||pmaosrgeieft.com^ -||pmc1201.com^ -||pmdnditvte.com^ -||pmegulnunf.com^ -||pmetorealiukze.xyz^ -||pmeuehivfps.com^ -||pmieprlpq.com^ -||pmimdcjx.com^ -||pmmojatx.com^ -||pmpubs.com^ -||pmsrvr.com^ -||pmtkhcr.com^ -||pmxyzqm.com^ -||pmzbrfpijoa.com^ -||pmzer.com^ -||pncloudfl.com^ -||pncvaoh.com^ -||pnd.gs^ -||pneumoniaelderlysceptical.com^ -||pnlsgvlgujav.com^ -||pnlwbcxphfhgqp.com^ -||pnperf.com^ -||pnsqsv.com^ -||pnufzbzzomt.com^ -||pnuhondppw.com^ -||pnvypcuqqyu.com^ -||pnxtsauba.com^ -||poacauceecoz.com^ -||poacawhe.net^ -||poachfelonry.top^ -||poachfirewoodboast.com^ -||poanouwy.net^ -||poaptapuwhu.com^ -||poaptoug.net^ -||poapustu.net^ -||poasotha.com^ -||poastoaz.com^ -||poavoabe.net^ -||pobliba.info^ -||pocketenvironmental.com^ -||pocketjaguar.com^ -||pocli.click^ -||poclorcobxo.com^ -||pocrd.cc^ -||pocrowpush.com^ -||podefr.net^ -||podgilyfattens.com^ -||podlersabir.com^ -||podosupsurge.com^ -||podsolnu9hi10.com^ -||podtiabulb.top^ -||podtiachining.space^ -||poemblotrating.com^ -||poemherbal.com^ -||poemsbedevil.com^ -||poemswrestlingstrategy.com^ -||poetrydeteriorate.com^ -||poflix.com^ -||poghaurs.com^ -||pognamta.net^ -||pogothere.xyz^ -||pohlbe.com^ -||pohsoneche.info^ -||poi3d.space^ -||poignantsensitivenessforming.com^ -||poilloiter.top^ -||poinct.com^ -||poined.com^ -||pointed-deal.pro^ -||pointeddifference.com^ -||pointedmana.info^ -||pointinginexperiencedbodyguard.com^ -||pointlesseventuallydesignate.com^ -||pointlessmorselgemini.com^ -||pointroll.com^ -||pointyenrapturetheological.com^ -||poiseacacialaw.com^ -||poisebullan.com^ -||poiseplato.com^ -||poisism.com^ -||poisonencouragement.com^ -||poisonousamazing.com^ -||pokaroad.net^ -||pokerarrangewandering.com^ -||pokerobjet.com^ -||poketraff.com^ -||pokiespedule.guru^ -||pokingtrainswriter.com^ -||pokomopunkin.top^ -||pokreess.com^ -||polacrereacts.top^ -||polanders.com^ -||polarbearyulia.com^ -||polarcdn-terrax.com^ -||polaritypresentimentasterisk.com^ -||polarlootstairwell.com^ -||polarmobile.com^ -||policeair.com^ -||policecaravanallure.com^ -||policemanspectrum.com^ -||policesportsman.com^ -||policityseriod.info^ -||policydilapidationhypothetically.com^ -||poliesgoral.com^ -||polishsimilarlybutcher.com^ -||politemischievous.com^ -||politesewer.com^ -||politicallyautograph.com^ -||politicallypotentgentle.com^ -||politicalname.com^ -||politicianbusplate.com^ -||politiciancuckoo.com^ -||polityimpetussensible.com^ -||pollingpephonourable.com^ -||pollpublicly.com^ -||pollstover.guru^ -||pollutefurryapproximate.com^ -||polluxnetwork.com^ -||poloptrex.com^ -||poloud.com^ -||polpepsn.com^ -||polredsy.com^ -||poltarimus.com^ -||polyad.net^ -||polydarth.com^ -||polygraphpretenceraw.com^ -||polyh-nce.com^ -||pomegranateheroin.com^ -||pomeroyhagdown.com^ -||pompadawe.com^ -||pompeywantinggetaway.com^ -||pompomsshock.com^ -||pompousdescended.com^ -||pompouslemonadetwitter.com^ -||pompoussqueal.com^ -||pompreflected.com^ -||pomptame.com^ -||pon-prairie.com^ -||ponchosmzee.top^ -||ponchowafesargb.com^ -||ponderousmuffled.com^ -||ponderriding.com^ -||pondinternet.com^ -||pondov.cfd^ -||poneycurnies.com^ -||pongidsrunback.com^ -||ponierpeewees.digital^ -||ponk.pro^ -||ponosenvy.top^ -||pontistcaseum.com^ -||pontonsdoeth.top^ -||ponyresentment.com^ -||ponysuggested.com^ -||pooboqxoh.xyz^ -||poodledopas.cam^ -||pookaipssurvey.space^ -||poolgmsd.com^ -||pooloccurrence.com^ -||pooptoom.net^ -||poorlyorchidrepute.com^ -||poorlystepmotherresolute.com^ -||poorlytanrubbing.com^ -||poorstress.pro^ -||poosoahe.com^ -||poostith.net^ -||poozifahek.com^ -||pop.dojo.cc^ -||pop5sjhspear.com^ -||popadon.com^ -||popads.media^ -||popads.net^ -||popadscdn.net^ -||popbounty.com^ -||popbutler.com^ -||popcash.net^ -||popcpm.com^ -||poperblocker.com^ -||pophandler.net^ -||popland.info^ -||poplarcolonistgreatest.com^ -||popmansion.com^ -||popmarker.com^ -||popmonetizer.com^ -||popmonetizer.net^ -||popmyads.com^ -||popnc.com^ -||poppycancer.com^ -||poppysol.com^ -||poprtb.com^ -||popruexo.com^ -||popsads.com^ -||popsads.net^ -||popsdietary.com^ -||popsoffer.com^ -||popsreputation.com^ -||poptm.com^ -||poptoll.com^ -||popularcldfa.co^ -||popularinnumerable.com^ -||popularitydecoctioncalled.com^ -||popularlucrous.com^ -||popularmedia.net^ -||popularpillcolumns.com^ -||populationencouragingunsuccessful.com^ -||populationgrapes.com^ -||populationrind.com^ -||populis.com^ -||populisengage.com^ -||popult.com^ -||popunder.bid^ -||popunder.ru^ -||popunderstar.com^ -||popunderz.com^ -||popupblocker-download.com^ -||popupblockernow.com^ -||popupchat-live.com^ -||popupgoldblocker.net^ -||popupsblocker.org^ -||popuptraffic.com^ -||popuzothe.com^ -||popwin.net^ -||popxperts.com^ -||popxyz.com^ -||porailbond.com^ -||poratweb.com^ -||porcatenonform.com^ -||porcelainfurtherties.com^ -||porcelainprivatelybrush.com^ -||porcelainviolationshe.com^ -||poredii.com^ -||porkinconceivable.com^ -||pornhyip.com^ -||pornoegg.com^ -||pornoheat.com^ -||pornoio.com^ -||pornomixfree.com^ -||pornvideos.casa^ -||porojo.net^ -||porrimaquintes.shop^ -||portalisimmo.com^ -||portalregionstip.com^ -||portasslutrine.click^ -||portcigarettesstudent.com^ -||portfoliocradle.com^ -||portfoliojumpy.com^ -||portkingric.net^ -||portlychurchyard.com^ -||portlywhereveralfred.com^ -||portoteamo.com^ -||portsspat.com^ -||portugueseletting.com^ -||portuguesetoil.com^ -||posaul.com^ -||posawaj.com^ -||poseconsumeelliot.com^ -||posf.xyz^ -||posfhnalwxdcaxb.com^ -||poshhateful.com^ -||poshsenseless.com^ -||poshsplitdr.com^ -||poshyouthfulton.com^ -||positionavailreproach.com^ -||positioner.info^ -||positivedistantstale.com^ -||positivejudge.com^ -||positivelyoverall.com^ -||positivewillingsubqueries.com^ -||posjnewbgjg.com^ -||possessdisconnectfetch.com^ -||possessdolejest.com^ -||possessedbrute.com^ -||possessionaddictedflight.com^ -||possessionregimentunborn.com^ -||possessionsolemn.com^ -||possibilityformal.com^ -||possibilityrespectivelyenglish.com^ -||possiblepencil.com^ -||post-redirecting.com^ -||postalfranticallyfriendship.com^ -||postalusersneatly.com^ -||postback.info^ -||postback1win.com^ -||postcardhazard.com^ -||postlnk.com^ -||postrelease.com^ -||postthieve.com^ -||postureunlikeagile.com^ -||potablefilled.top^ -||potailservoed.com^ -||potawe.com^ -||potchampalea.website^ -||potclumsy.com^ -||potentialapplicationgrate.com^ -||potentiallyinnocent.com^ -||potheenoillet.com^ -||pothutepu.com^ -||potionnowhere.com^ -||potionutilize.com^ -||potlegcodeins.com^ -||potlscwdblshh.com^ -||potnormal.com^ -||potnormandy.com^ -||potoospincher.com^ -||potsaglu.net^ -||potshumiliationremnant.com^ -||potsiuds.com^ -||potskolu.net^ -||potslascivious.com^ -||pottercaprizecaprizearena.com^ -||potterdullmanpower.com^ -||potterystabilityassassination.com^ -||potwm.com^ -||pouam.xyz^ -||pouanz.xyz^ -||pouchadjoinmama.com^ -||pouchaffection.com^ -||pouchclockwise.com^ -||poudrinnamaste.com^ -||poufaini.com^ -||poufsgausses.top^ -||poumouja.xyz^ -||pounceintention.com^ -||poundabbreviation.com^ -||poundplanprecarious.com^ -||pounti.com^ -||pourdear.com^ -||pouredbatting.website^ -||pouredshortseconomic.com^ -||pourorator.com^ -||pourpressedcling.com^ -||poushoza.net^ -||poutdecimal.com^ -||poutrevenueeyeball.com^ -||povlnlq.com^ -||povoarge.com^ -||powchro.com^ -||powdermealfilth.com^ -||powenin.com^ -||powerad.ai^ -||poweradblocker.com^ -||powerain.biz^ -||powerfulfreelance.com^ -||powerpushsell.site^ -||powerpushtrafic.space^ -||powerswinkshoplifting.com^ -||powerusefullyjinx.com^ -||poweyus.com^ -||powferads.com^ -||powjoui.com^ -||powrpvuruejv.com^ -||poxaharap.com^ -||poxcgxylozny.com^ -||poxykhakis.com^ -||poxypicine.com^ -||poxyrevise.com^ -||poyqmngbxwsvnav.xyz^ -||poyusww.com^ -||pp2ppsch1hount1hf.com^ -||pp98trk.com^ -||ppaiyfox.xyz^ -||ppbihtwyapucgkg.xyz^ -||ppcgqjehtuik.xyz^ -||ppcjxidves.xyz^ -||ppclinking.com^ -||ppcnt.pro^ -||ppctraffic.co^ -||ppdiatk.com^ -||ppedtoalktoherha.info^ -||ppgjebhcyu.com^ -||pphiresandala.info^ -||ppixufsalgm.com^ -||ppizmuablx.com^ -||ppjdfki.com^ -||ppjqgbz.com^ -||pplgwic.com^ -||ppmzcafertd.com^ -||ppoommhizazn.com^ -||ppovysmcycmwvv.com^ -||pppbr.com^ -||ppqy.fun^ -||ppqyrngjwdq.com^ -||pprq7.com^ -||pprvllibaogtsj.com^ -||ppvmhhpxuomjwo.xyz^ -||pqaz.xyz^ -||pqgtywjj.com^ -||pqhoscjupq.com^ -||pqsymknliiwzlr.com^ -||pqulqqpmx.com^ -||practicalbar.pro^ -||practicalframingfiddle.com^ -||practicallyfire.com^ -||practicallysacrificestock.com^ -||practicallyutmost.com^ -||practicallyvision.com^ -||practice3452.fun^ -||practiceddrummerballast.com^ -||practicedeaf.com^ -||practicedearest.com^ -||practicemateorgans.com^ -||practicepeter.com^ -||practiseseafood.com^ -||practthreat.club^ -||praght.tech^ -||prahfoleruna.com^ -||pramenterpriseamy.com^ -||pranklecaque.com^ -||prascfaf.com^ -||praterswhally.com^ -||prawnrespiratorgrim.com^ -||prawnsimply.com^ -||prawntimetableinflux.com^ -||prayercertificatecompletion.com^ -||prayersobsoletededuce.com^ -||prayfortnight.com^ -||prbpqlpqko.com^ -||prdmjzogryvhhz.com^ -||prdredir.com^ -||prdyilhhwqh.com^ -||pre4sentre8dhf.com^ -||preacherscarecautiously.com^ -||preampribbony.com^ -||prearmscachet.uno^ -||prearmskabiki.com^ -||precariousgrumpy.com^ -||precedechampion.com^ -||precedelaxative.com^ -||precedenowadaysbarbecue.com^ -||precedentadministrator.com^ -||precedentbasepicky.com^ -||precedingdippingtune.com^ -||precequiv.com^ -||precious-type.pro^ -||preciousbearer.com^ -||preciousdoctor.pro^ -||preciousentangledjustified.com^ -||preciouswornspectacle.com^ -||precipitationepisodevanished.com^ -||precipitationglittering.com^ -||precipitationsloganhazard.com^ -||precipitationsquall.com^ -||preciselysolitaryallegation.com^ -||precisethrobbingsentinel.com^ -||precisionclick.com^ -||precisionnight.com^ -||precislooed.com^ -||precmd.com^ -||precursorinclinationbruised.com^ -||predatoryfilament.com^ -||predatorymould.com^ -||predatoryrucksack.com^ -||predestineprohibitionmassive.com^ -||predicamentdisconnect.com^ -||predicateblizzard.com^ -||predictablelipswailed.com^ -||predictad.com^ -||predictfurioushindrance.com^ -||predictiondexchange.com^ -||predictiondisplay.com^ -||predictionds.com^ -||predictivadnetwork.com^ -||predictivadvertising.com^ -||predictivdisplay.com^ -||predominanttamper.com^ -||prefaceanything.com^ -||prefecturecagesgraphic.com^ -||prefecturesolelysadness.com^ -||preferablyducks.com^ -||preferencedrank.com^ -||preferenceforfeit.com^ -||preferredsaltshift.com^ -||prefershapely.com^ -||preferunhair.com^ -||prefleks.com^ -||pregainpotgut.top^ -||pregamepluteal.com^ -||pregnancyreproducepalace.com^ -||pregnancyslayidentifier.com^ -||prehealpaster.guru^ -||prehem.com^ -||prejudiceinsure.com^ -||prelandcleanerlp.com^ -||prelandtest01.com^ -||prelandtest02.com^ -||preliminaryinclusioninvitation.com^ -||preloanflubs.com^ -||prematurebowelcompared.com^ -||prematuregrumpyunhappy.com^ -||prematuresam.com^ -||premium-members.com^ -||premium4kflix.club^ -||premium4kflix.top^ -||premium4kflix.website^ -||premiumads.net^ -||premiumredir.ru^ -||premiumvertising.com^ -||premonitioneuropeanstems.com^ -||premonitioninventdisagree.com^ -||preoccupation3x.fun^ -||preoccupycommittee.com^ -||preoccupycorrecttalented.com^ -||preonesetro.com^ -||preparationcampaignfoul.com^ -||preparationtrialholding.com^ -||preparedfile.com^ -||preparemethod.com^ -||preparingacrossreply.com^ -||preparingbodiesfamiliar.com^ -||preponderanttemple.com^ -||prepositioncamouflage.com^ -||prepositioncontributorwring.com^ -||prepositiondiscourteous.com^ -||prepositionrumour.com^ -||preposterousstation.com^ -||preppiesteamer.com^ -||prerogativedifference.com^ -||prerogativeproblems.com^ -||prerogativeslob.com^ -||presentationathletefoundation.com^ -||presentationbishop.com^ -||presentimentcongruousactively.com^ -||presentimentguestmetaphor.com^ -||presentlypacifyforests.com^ -||preserveadapt.com^ -||preservealso.com^ -||presidecookeddictum.com^ -||presidentialcheaper.com^ -||presidentialprism.com^ -||presidentialtumble.com^ -||presideproreassure.com^ -||prespurmaness.com^ -||pressedbackfireseason.com^ -||pressingequation.com^ -||pressize.com^ -||pressyour.com^ -||prestadsng.com^ -||prestigefunction.com^ -||prestlyamylan.com^ -||prestoris.com^ -||presumablyconfound.com^ -||presumptuousfunnelinsight.com^ -||presumptuouslavish.com^ -||pretencepeppermint.com^ -||pretendresentfulamid.com^ -||pretendturk.com^ -||pretextunfinished.com^ -||pretrackings.com^ -||pretty-size.pro^ -||pretty-sluts-nearby.com^ -||prettypasttime.com^ -||prettypermission.pro^ -||prettytypicalimpatience.com^ -||prevailedbutton.com^ -||prevailinsolence.com^ -||prevalentpotsrice.com^ -||prevalentprincess.com^ -||preventionhoot.com^ -||prevostslakier.top^ -||prevuesthurl.com^ -||preyersbowe.top^ -||prfctmney.com^ -||prftonnes.com^ -||prfwhite.com^ -||prhbdkmdtobn.com^ -||prhdvhx.com^ -||priceyaspect.pro^ -||pricklyachetongs.com^ -||pridenovicescammer.com^ -||priestboundsay.com^ -||priestsuccession.com^ -||priestsuede.click^ -||priestsuede.com^ -||primalredfish.com^ -||primaryads.com^ -||primaryderidemileage.com^ -||primarystoppedballot.com^ -||prime-vpnet.com^ -||primedirect.net^ -||primerclicks.com^ -||primevalstork.com^ -||primitiveposterappeal.com^ -||primomopicnics.top^ -||primroselegitimate.com^ -||princefruitlessfencing.com^ -||princesinistervirus.com^ -||princessallotgather.com^ -||princessdazzlepeacefully.com^ -||princessmodern.com^ -||principaldingdecadence.com^ -||principlede.info^ -||principledecliner.info^ -||principlessilas.com^ -||pringed.space^ -||printaugment.com^ -||printergarretskirt.com^ -||printerswear.com^ -||printgrownuphail.com^ -||printsmull.com^ -||priorityblockinghopped.com^ -||priselapse.com^ -||prisonfirmlyswallow.com^ -||prisonrecollectionecstasy.com^ -||pristine-dark.pro^ -||pritchgobble.life^ -||pritesol.com^ -||priustellen.com^ -||privacycounter.com^ -||privacynicerresumed.com^ -||privacysearching.com^ -||privateappealingsymphony.com^ -||privatedqualizebrui.info^ -||privateleaflet.com^ -||privatelookhack.com^ -||privatelydevotionrewind.com^ -||privilegedvitaminimpassable.com^ -||privilegeinjurefidelity.com^ -||privilegest.com^ -||prizegrantedrevision.com^ -||prizel.com^ -||prizes-topwin.life^ -||prksism.com^ -||prmtracking3.com^ -||prmtracks.com^ -||pro-advert.de^ -||pro-market.net^ -||pro-pro-go.com^ -||pro-suprport-act.com^ -||pro-web.net^ -||pro119marketing.com^ -||proadscdn.com^ -||probablebeeper.com^ -||probabletellsunexpected.com^ -||probablyimmatureresentment.com^ -||probablyrespectivelyadhere.com^ -||probangavatara.top^ -||probationpresented.com^ -||probationtoll.com^ -||probersnobles.com^ -||probessanggau.com^ -||probestrike.com^ -||probitystuck.com^ -||probtn.com^ -||procedureible.biz^ -||procedurepurposeassurance.com^ -||proceduresjeer.com^ -||proceedingdream.com^ -||proceedingmusic.com^ -||processedagrarian.com^ -||processingcomprehension.com^ -||processionhardly.com^ -||processpardon.com^ -||proclamationgumadvocate.com^ -||proclean.club^ -||procneterming.top^ -||procristhimber.cfd^ -||procuratorpresumecoal.com^ -||procuratorthoroughlycompere.com^ -||procuredsheet.com^ -||prod.untd.com^ -||prodaddkarl.com^ -||prodigiousarticulateruffian.com^ -||prodmp.ru^ -||prodresell.com^ -||producebreed.com^ -||producedendorsecamp.com^ -||produceduniversitydire.com^ -||producerdoughnut.com^ -||producerplot.com^ -||producesdiminishhardworking.com^ -||producingdisciplecampus.com^ -||productanychaste.com^ -||producthub.info^ -||proeroclips.pro^ -||proettegwine.top^ -||proetusbramble.com^ -||professdeteriorate.com^ -||professionalbusinesstoday.xyz^ -||professionallygravitationbackwards.com^ -||professionallyjazzotter.com^ -||professionallytear.com^ -||professionallywealthy.com^ -||professionalsly.com^ -||professionalswebcheck.com^ -||professmeeting.com^ -||professorrevealingoctopus.com^ -||professtrespass.com^ -||proffering.xyz -||proffering.xyz^ -||profi-para.com^ -||proficientfly.com^ -||profilebecomingtrain.com^ -||profilecrave.com^ -||profileimpunity.com^ -||profileoffencewithdraw.com^ -||profilingerror.online^ -||profitablecpmgate.com^ -||profitablecpmnetwork.com^ -||profitablecreativeformat.com^ -||profitabledisplaycontent.com^ -||profitabledisplayformat.com^ -||profitabledisplaynetwork.com^ -||profitablegate.com^ -||profitablegatecpm.com^ -||profitablegatetocontent.com^ -||profitableheavilylord.com^ -||profitabletrustednetwork.com^ -||profitcustomersnuff.com^ -||profitpeelers.com^ -||profitredirect.com^ -||profitsence.com^ -||profitstefukhatex.info^ -||profoundbagpipeexaggerate.com^ -||profoundflourishing.com^ -||profoundtwist.com^ -||proftrafficcounter.com^ -||profuse-it.pro^ -||progenyoverhear.com^ -||progenyproduced.com^ -||programinsightplastic.com^ -||programmeframeworkpractically.com^ -||programwrest.com^ -||progressproceeding.com^ -||prohibitedhalfway.com^ -||projectagora.net^ -||projectagora.tech^ -||projectagoralibs.com^ -||projectagoraservices.com^ -||projectagoratech.com^ -||projectscupcakeinternational.com^ -||projectwonderful.com^ -||projetmildful.com^ -||prolatecyclus.com^ -||prolificdoerconcur.com^ -||prologuetwinsmolecule.com^ -||prolongdoadaptation.com^ -||promiseyuri.com^ -||promissmatax.top^ -||promisspacay.space^ -||promo-bc.com^ -||promobenef.com^ -||promotionnecessity.com^ -||promptofficemillionaire.com^ -||promptsgod.com^ -||promsaviour.com^ -||pronedynastyimpertinence.com^ -||pronouncedgetawayetiquette.com^ -||pronounconsternationspotlight.com^ -||pronunciationlegacy.com^ -||pronunciationspecimens.com^ -||proofnaive.com^ -||propbigo.com^ -||propcollaterallastly.com^ -||propelascella.top^ -||propeller-tracking.com^ -||propellerads.com^ -||propellerads.tech^ -||propellerclick.com^ -||propellerpops.com^ -||propeltuition.com^ -||properlycrumple.com^ -||properlyleash.com^ -||properlypreparingitself.com^ -||propersuitcase.com^ -||propertyofnews.com^ -||propgoservice.com^ -||proponylisten.com^ -||proposeado.com^ -||proposedfelonoxide.com^ -||proposedpartly.com^ -||propositiondisinterested.com^ -||propositionfadedplague.com^ -||proprietorgrit.com^ -||propu.sh^ -||propulsionreproduceresult.com^ -||propulsionstatute.com^ -||propulsionswarm.com^ -||propvideo.net^ -||proreancostaea.com^ -||prorentisol.com^ -||proscholarshub.com^ -||proscontaining.com^ -||prose-nou.com^ -||prosecutorcassettedying.com^ -||prosecutorcommaeligible.com^ -||prosecutorkettle.com^ -||prosedisavow.com^ -||proselyaltars.com^ -||proseoverlook.com^ -||prositzapas.com^ -||prosocrawm.com^ -||prospercognomenoptional.com^ -||prosperent.com^ -||prosperitysemiimpediment.com^ -||prosperousdreary.com^ -||prosperousprobe.com^ -||prosperousunnecessarymanipulate.com^ -||prosthong.com^ -||prosumsit.com^ -||protagcdn.com^ -||protally.net^ -||protawe.com^ -||protectedfolkssomebody.com^ -||protectorincorporatehush.com^ -||protectorparsleybrisk.com^ -||protectorworstquake.com^ -||protectyourdevices.com^ -||proteinairn.top^ -||protestgrove.com^ -||protoawe.com^ -||protocolburlap.com^ -||protocolgroupgroups.com^ -||prototypehungryinsist.com^ -||prototypewailrubber.com^ -||protrckit.com^ -||proudlysurly.com^ -||prouoxsacqi.com^ -||proveattractionplays.com^ -||provedonefoldonefoldhastily.com^ -||provenshoutmidst.com^ -||proverbadmiraluphill.com^ -||proverbbeaming.com^ -||proverbcarpersuasive.com^ -||proverbmariannemirth.com^ -||proverbnoncommittalvault.com^ -||proverbrecent.com^ -||providedovernight.com^ -||provider-direct.com^ -||providingcrechepartnership.com^ -||provingavidity.com^ -||provisionpointingpincers.com^ -||provlimbus.com^ -||provocativeprivate.com^ -||provokeobnoxious.com^ -||prowesscourtsouth.com^ -||prowesshearing.com^ -||prowesstense.com^ -||prowlenthusiasticcongest.com^ -||proximic.com^ -||proximitywars.com^ -||prplad.com^ -||prplads.com^ -||prpops.com^ -||prqbdfmzjs.com^ -||prre.ru^ -||prtord.com^ -||prtrackings.com^ -||prtydqs.com^ -||prudentfailingcomplicate.com^ -||pruderyrotche.com^ -||prulruyaoq.com^ -||prunesderelicttug.com^ -||prunestownpostman.com^ -||prutosom.com^ -||pruwwox.com^ -||prvc.io^ -||prwave.info^ -||prxeceafdxdlc.xyz^ -||prxy.online^ -||pryrhoohs.site^ -||psaighid.com^ -||psaiglursurvey.space^ -||psaimpagnuhu.net^ -||psairees.net^ -||psairtoo.com^ -||psaiwaxaib.net^ -||psaizeemit.com^ -||psaksegh.xyz^ -||psalmexceptional.com^ -||psalmichogcote.guru^ -||psalrausoa.com^ -||psaltard.net^ -||psaltauw.net^ -||psapsiph.net^ -||psarecommendas.com^ -||psaudous.com^ -||psaugourtauy.com^ -||psaukaux.net^ -||psaukroatch.com^ -||psaurdoofy.com^ -||psaurteepo.com^ -||psausuck.net^ -||psauwush.net^ -||psclicks.com^ -||psdn.xyz^ -||psedregn.net^ -||pseeckotees.com^ -||pseeghud.com^ -||pseegroah.com^ -||pseekree.com^ -||pseeltaimpu.net^ -||pseemsee.com^ -||pseensooh.com^ -||pseepsie.com^ -||pseepsoo.com^ -||pseerdab.com^ -||pseergoa.net^ -||psefteeque.com^ -||pseidpmubwu.com^ -||psemotion.top^ -||psensuds.net^ -||psergete.com^ -||psfdi.com^ -||psfgobbet.com^ -||pshb.me^ -||pshmetrk.com^ -||pshtop.com^ -||pshtrk.com^ -||psichoafouts.xyz^ -||psiftaugads.com^ -||psikoofack.com^ -||psiksais.com^ -||psirdain.com^ -||psirsoor.com^ -||psistaghuz.com^ -||psistaugli.com^ -||psitchoo.xyz^ -||psithich.com^ -||psixoahi.xyz^ -||psma02.com^ -||psoackaw.net^ -||psoaftob.xyz^ -||psoageph.com^ -||psoansumt.net^ -||psoanufi.com^ -||psoasusteech.net^ -||psockapa.net^ -||psognaih.xyz^ -||psojeeng.com^ -||psomtenga.net^ -||psoofaltoo.com^ -||psoogaix.net^ -||psoompou.xyz^ -||psoopirdifty.xyz^ -||psoopoakihou.com^ -||psoorgou.com^ -||psoorsen.com^ -||psootchu.net^ -||psothoms.com^ -||psotudev.com^ -||psougnoa.net^ -||psougrie.com^ -||psoumoalt.com^ -||psounsoo.xyz^ -||psouphoz.com^ -||psouthee.xyz^ -||psouzoub.com^ -||psozoult.net^ -||pssy.xyz^ -||pstmqnplyzqahq.com^ -||pstnmhftix.xyz^ -||pstreetma.com^ -||psuaqpz.com^ -||psuftoum.com^ -||psugkfqmys.com^ -||psumainy.xyz^ -||psungaum.com^ -||psuphuns.net^ -||psurdoak.com^ -||psurigrabi.com^ -||psurouptoa.com^ -||psvgnczo.com^ -||pswagjx.com^ -||psychiczygaena.top^ -||psycholjicaque.com^ -||psychologicalpaperworkimplant.com^ -||psychologycircumvent.com^ -||psychologydistinguishnest.com^ -||psychologywoman.com^ -||pt-xb.xyz^ -||pta.wcm.pl^ -||ptadrony.xyz^ -||ptaicoamt.com^ -||ptaicoul.xyz^ -||ptaimpeerte.com^ -||ptaissud.com^ -||ptaixout.net^ -||ptalribs.xyz^ -||ptamselrou.com^ -||ptanguth.com^ -||ptapjmp.com^ -||ptatexiwhe.com^ -||ptaughar.com^ -||ptaujoot.net^ -||ptaulratch.com^ -||ptaumoadsovu.com^ -||ptaunsoova.com^ -||ptaupsom.com^ -||ptautsortoa.com^ -||ptauxofi.net^ -||ptawe.com^ -||ptawehex.net^ -||ptawhood.net^ -||ptbrdg.com^ -||ptcdwm.com^ -||ptdinxchgxu.com^ -||ptecmooz.net^ -||ptecmuny.com^ -||ptedreer.com^ -||ptedroab.xyz^ -||pteegostie.com^ -||pteeptamparg.xyz^ -||pteevaih.xyz^ -||pteftagu.com^ -||pteghoglapir.com^ -||ptekuwiny.pro^ -||pterealcorylus.website^ -||ptersudisurvey.top^ -||ptetchie.net^ -||ptewarin.net^ -||ptewauta.net^ -||ptexognouh.xyz^ -||ptffvpjhhb.com^ -||pthdepsftn.com^ -||pthzqqvrjyou.com^ -||pticmootoat.com^ -||ptidfrvqxpucy.com^ -||ptidsezi.com^ -||ptinouth.com^ -||ptipsixo.com^ -||ptipsout.net^ -||ptirgaux.com^ -||ptirtika.com^ -||ptistyvymi.com^ -||ptlwm.com^ -||ptlwmstc.com^ -||ptmnd.com^ -||ptmzr.com^ -||ptoafauz.net^ -||ptoafteewhu.com^ -||ptoagnin.xyz^ -||ptoahaistais.com^ -||ptoajait.net^ -||ptoakooph.net^ -||ptoaltie.com^ -||ptoangir.com^ -||ptoapouk.com^ -||ptobsagn.com^ -||ptochair.xyz^ -||ptoftaupsift.com^ -||ptoksoaksi.com^ -||ptompeer.net^ -||ptonauls.net^ -||ptongouh.net^ -||ptonsofteed.com^ -||ptoockex.xyz^ -||ptoogroo.net^ -||ptookaih.net^ -||ptookoar.net^ -||ptoomtoum.com^ -||ptooshos.net^ -||ptotchie.xyz^ -||ptoubeeh.net^ -||ptouckop.xyz^ -||ptoumsid.net^ -||ptoushoa.com^ -||ptoutsexe.com^ -||ptowouse.xyz^ -||ptp22.com^ -||ptp24.com^ -||ptpoeyc.com^ -||ptsixwereksbef.info^ -||ptstnews.pro^ -||pttsite.com^ -||ptudoalistoy.net^ -||ptufihie.net^ -||ptugnins.net^ -||ptugnoaw.net^ -||ptulsauts.com^ -||ptumtaip.com^ -||ptuphotookr.com^ -||ptupoobs.com^ -||ptutchiz.com^ -||ptvfranfbdaq.xyz^ -||ptwmemd.com^ -||ptwmjmp.com^ -||ptyalinbrattie.com^ -||ptyomtzjpdlcf.com^ -||pu5hk1n2020.com^ -||pub.network^ -||pubacca5mc.com^ -||pubadx.one^ -||pubaka5.com^ -||pubceremony.com^ -||pubdisturbance.com^ -||pubertysung.digital^ -||pubeshogback.uno^ -||pubfruitlesswording.com^ -||pubfuture-ad.com^ -||pubfutureads.com^ -||pubgalaxy.com^ -||pubguru.net^ -||pubhotmax.com^ -||pubianmending.space^ -||pubimageboard.com^ -||publicityparrots.com^ -||publiclyemployeronerous.com^ -||publiclyphasecategory.com^ -||publicsparedpen.com^ -||publicunloadbags.com^ -||publisherads.click^ -||publishercounting.com^ -||publisherperformancewatery.com^ -||publisherride.com^ -||publited.com^ -||publpush.com^ -||pubmaner5.com^ -||pubmatic.com^ -||pubmine.com^ -||pubnation.com^ -||pubovore.com^ -||pubpowerplatform.io^ -||pubtm.com^ -||pubtrky.com^ -||puczuxqijadg.com^ -||puddingdefeated.com^ -||puddleincidentally.com^ -||pudencygletty.com^ -||pudrardu.net^ -||pueber.com^ -||puerty.com^ -||puffexies.com^ -||puffingtiffs.com^ -||pugdisguise.com^ -||pugehjjxdr.xyz^ -||pugmilldurgan.com^ -||pugmillmuspike.life^ -||pugmilltoluid.com^ -||pugsgivehugs.com^ -||puhtml.com^ -||puitaexb.com^ -||pujuco.uno^ -||pukumongols.com^ -||pulayanyet.com^ -||puldhukelpmet.com^ -||pulkroching.top^ -||pullovereugenemistletoe.com^ -||pulparketonic.top^ -||pulpdeeplydrank.com^ -||pulpix.com^ -||pulpreferred.com^ -||pulpyads.com^ -||pulpybizarre.com^ -||pulseadnetwork.com^ -||pulsemgr.com^ -||pulseonclick.com^ -||pulserviral.com^ -||pulvinioreodon.com^ -||pulxpljpsqri.com^ -||pumdfferpkin5hs454r43eeds.com^ -||pumjkngivq.com^ -||pumpbead.com^ -||pumpmulticultural.com^ -||punctualflopsubquery.com^ -||punctuationceiling.com^ -||pungentsmartlyhoarse.com^ -||punishgrantedvirus.com^ -||punkahskayles.com^ -||punkfigured.com^ -||punkhonouredrole.com^ -||punoocke.com^ -||punosy.best^ -||punosy.com^ -||punpzyvwao.com^ -||punystudio.pro^ -||punyvamos.com^ -||puoxpytcblqrti.xyz^ -||pupilexpressionscent.com^ -||pupilorgansmad.com^ -||puppyderisiverear.com^ -||puppytestament.com^ -||pupspu.com^ -||pupur.net^ -||pupur.pro^ -||puqobfkghmyb.com^ -||puranasebriose.top^ -||puraquealtered.shop^ -||purchaserdisgustingwrestle.com^ -||purchaserteddy.com^ -||purchasertormentscoundrel.com^ -||purgescholars.com^ -||purgoaho.xyz^ -||purifybaptism.guru^ -||purinesboldo.com^ -||purinscauter.top^ -||purlieudinette.uno^ -||purpleads.io^ -||purpleflag.net^ -||purplepatch.online^ -||purplewinds.xyz^ -||purposelyharp.com^ -||purposelynextbinary.com^ -||purposeolivebathtub.com^ -||purposeparking.com^ -||pursedistraught.com^ -||purseneighbourlyseal.com^ -||pursilyantoeci.top^ -||pursuedfailurehibernate.com^ -||pursuesananite.com^ -||pursuingconjunction.com^ -||pursuingnamesaketub.com^ -||pursuitbelieved.com^ -||pursuitcharlesbaker.com^ -||pursuiterelydia.com^ -||pursuitgrasp.com^ -||pursuitperceptionforest.com^ -||purtymells.top^ -||puserving.com^ -||push-news.click^ -||push-news.org^ -||push-notifications.top^ -||push-sdk.com^ -||push-sdk.net^ -||push-subservice.com^ -||push.house^ -||push1000.com^ -||push1001.com^ -||push2check.com^ -||pushads.biz^ -||pushads.io^ -||pushaffiliate.net^ -||pushagim.com^ -||pushails.com^ -||pushalk.com^ -||pushame.com^ -||pushamir.com^ -||pushance.com^ -||pushanert.com^ -||pushanishe.com^ -||pushanya.net^ -||pusharest.com^ -||pushatomic.com^ -||pushazam.com^ -||pushazer.com^ -||pushbaddy.com^ -||pushbasic.com^ -||pushbizapi.com^ -||pushcampaign.club^ -||pushcentric.com^ -||pushckick.click^ -||pushclk.com^ -||pushdelone.com^ -||pushdom.co^ -||pushdrop.club^ -||pushdusk.com^ -||pushebrod.com^ -||pusheddrain.com^ -||pushedgraceful.com^ -||pushedwaistcoat.com^ -||pushedwebnews.com^ -||pushego.com^ -||pusheify.com^ -||pushell.info^ -||pushelp.pro^ -||pusherism.com^ -||pusheshourly.com^ -||pushflow.net^ -||pushflow.org^ -||pushgaga.com^ -||pushimer.com^ -||pushimg.com^ -||pushingwatchfulturf.com^ -||pushinpage.com^ -||pushkav.com^ -||pushking.net^ -||pushlapush.com^ -||pushlaram.com^ -||pushlarr.com^ -||pushlat.com^ -||pushlemm.com^ -||pushlinck.com^ -||pushlnk.com^ -||pushlommy.com^ -||pushlum.com^ -||pushmashine.com^ -||pushmaster-in.xyz^ -||pushmejs.com^ -||pushmenews.com^ -||pushmine.com^ -||pushmobilenews.com^ -||pushmono.com^ -||pushnami.com^ -||pushnative.com^ -||pushnest.com^ -||pushnevis.com^ -||pushnews.org^ -||pushnice.com^ -||pushno.com^ -||pushnotice.xyz^ -||pushochenk.com^ -||pushokey.com^ -||pushomir.com^ -||pushorg.com^ -||pushort.com^ -||pushosub.com^ -||pushosubk.com^ -||pushpong.net^ -||pushprofit.net^ -||pushpropeller.com^ -||pushpush.net^ -||pushqwer.com^ -||pushrase.com^ -||pushsansoa.com^ -||pushsar.com^ -||pushserve.xyz^ -||pushsight.com^ -||pushtorm.net^ -||pushtutuzla.top^ -||pushub.net^ -||pushup.wtf^ -||pushwelcome.com^ -||pushwhy.com^ -||pushynations.com^ -||pushzolo.com^ -||pusishegre.com^ -||pussesmoile.com^ -||pussl3.com^ -||pussl48.com^ -||pusvfedhsxwj.com^ -||putainalen.com^ -||putbid.net^ -||putchumt.com^ -||putfeablean.org^ -||putfeableand.info^ -||putrefyeither.com^ -||putrefyvarioushumorous.com^ -||putrescentheadstoneyoungest.com^ -||putrid-experience.pro^ -||putridchart.pro^ -||putrr16.com^ -||putrr18.com^ -||putrr7.com^ -||putwandering.com^ -||puwpush.com^ -||puyjjq.com^ -||puysis.com^ -||puzzio.xyz^ -||puzzlementangrily.com^ -||puzzlepursued.com^ -||puzzoa.xyz^ -||pvawydmmj.com^ -||pvbgzjwyncthhl.com^ -||pvclouds.com^ -||pvdblrthktmtlc.com^ -||pvdrtiy.com^ -||pvjiqmryv.com^ -||pvlcbsynxsabti.com^ -||pvnaegtrtju.com^ -||pvqzggfkuxum.com^ -||pvsxzlb.com^ -||pvtqllwgu.com^ -||pvtypsgueyqey.com^ -||pvxvazbehd.com^ -||pwdhstaih.com^ -||pwdxawuedjjj.com^ -||pweabzcatoh.com^ -||pwmctl.com^ -||pwrgrowthapi.com^ -||pwwqkppwqkezqer.site^ -||pwxerujvl.com^ -||pwxmwmoyuobgku.com^ -||pwxtock.com^ -||px3792.com^ -||pxdghffadlhpbw.com^ -||pxfindone.com^ -||pxltrck.com^ -||pxnmkmqxmqe.com^ -||pxsscerwyeiucg.com^ -||pxsunbsd.com^ -||pxtrkr.com^ -||pxx23jkd.com^ -||pxyrmsodhctqifm.com^ -||pxyympkyvqc.com^ -||pycvlnu.com^ -||pygopodwrytailbaskett.sbs^ -||pyhdvvimr.com^ -||pyknrhm5c.com^ -||pympbhxyhnd.xyz^ -||pyract.com^ -||pyrexikon.com^ -||pyrict.com^ -||pyrincelewasgild.info^ -||pyrroylceriums.com^ -||pysfhgdpi.com^ -||pyxdajs.com^ -||pyxiscablese.com^ -||pyzwxkb.com^ -||pzawclkyxuno.com^ -||pzeazgmwem.com^ -||pzgbqbk.com^ -||pzoynkxexnx.com^ -||pzqfmhy.com^ -||pzwdtz.com^ -||q1-tdsge.com^ -||q1mediahydraplatform.com^ -||q2i8kd5n.de^ -||q6idnawboy7g.com^ -||q88z1s3.com^ -||q8ntfhfngm.com^ -||q99i1qi6.de^ -||qa24ljic4i.com^ -||qads.io^ -||qadserve.com^ -||qadservice.com^ -||qaebaywbvqqez.top^ -||qagkyeqxv.xyz^ -||qajgarohwobh.com^ -||qajwizsifaj.com^ -||qakmlfdseuzfkz.com^ -||qakzfubfozaj.com^ -||qalscihrolwu.com^ -||qaltulohrol.com^ -||qarewien.com^ -||qasforsalesrep.info^ -||qatsbesagne.com^ -||qatttuluhog.com^ -||qawbaxcpeku.com^ -||qawzwkvlebqaz.top^ -||qawzwkvlebzaw.top^ -||qaydqvuzmu.com^ -||qaylocbaxunnav.com^ -||qbjqpopv.com^ -||qbkvksakslhgek.com^ -||qbkzvophvva.com^ -||qblcyqgn.com^ -||qbnyeqylvynzy.top^ -||qbomomlavkksh.xyz^ -||qbpchpcuglu.com^ -||qbsfnbdqinnay.com^ -||qbsvafnpgfwpca.com^ -||qcbfiytngupv.com^ -||qceedrcwar.com^ -||qceyyxauc.xyz^ -||qcfkvespkj.com^ -||qchfbnjagbdst.com^ -||qciefclnx.com^ -||qcigbljyenh.com^ -||qckeumrwft.xyz^ -||qclgcdtv.com^ -||qcmjdptyikwf.xyz^ -||qcotzalsettiv.com^ -||qcsjmidihe.com^ -||qctzwkrczwjw.com^ -||qcujwenokqvkqfr.com^ -||qcvbtrtlmjdhvxe.xyz^ -||qcxhwrm.com^ -||qczukeud.com^ -||qdibvllqu.com^ -||qdlbdpsctalt.com^ -||qdlesuneeqoglp.com^ -||qdlyqbpzfkl.com^ -||qdmil.com^ -||qdogpcfgejgc.com^ -||qdotzfy.com^ -||qdprapwflpvxpyl.com^ -||qdvducltjswp.com^ -||qe0ckm024b.com^ -||qebpwkxjz.com^ -||qebuoxn.com^ -||qedeczzdt.com^ -||qehjsjdubamsrt.com^ -||qehwgbwjmjvq.xyz^ -||qeildfuznofnlq.com^ -||qekbmjyzwemvb.top^ -||qekbmjyzwewvj.top^ -||qekgygdkyewbzv.com^ -||qel-qel-fie.com^ -||qelqlunebz.com^ -||qelvaykwazlmz.top^ -||qemyetwxfcwhtyy.com^ -||qeraogxzvplqvq.com^ -||qerkbejqwzvvo.top^ -||qerkbejqwzvyw.top^ -||qewylqmaqezzj.top^ -||qezehqcicx.com^ -||qfdn3gyfbs.com^ -||qfgkixvmwgaf.com^ -||qfgtepw.com^ -||qfhatlntjtpyit.com^ -||qfisatztut.com^ -||qfjherc.com^ -||qfoodskfubk.com^ -||qfwjgivatds.com^ -||qgerr.com^ -||qgevavwyafjf.com^ -||qgexkmi.com^ -||qgisjfmwhhsmfe.com^ -||qgsgnqhqgjw.com^ -||qgsjtgvjz.com^ -||qgxbluhsgad.com^ -||qhdwjjhvgqa.com^ -||qhiqlwcwguv.com^ -||qhlegkjlnmg.com^ -||qhnwj.com^ -||qhskskb.com^ -||qhsqrtva.com^ -||qhstvmfehhk.com^ -||qhttxwlecujjfc.com^ -||qhuguzodbd.com^ -||qhwyoat.com^ -||qhxukowjgl.com^ -||qianaecrus.top^ -||qibkkioqqw.com^ -||qickazzmoaxv.com^ -||qifxwiruhrr.com^ -||qimwsxukxwnhba.xyz^ -||qinvaris.com^ -||qiossrwine.xyz^ -||qipawjyjcukenb.com^ -||qiqdpeovkobj.com^ -||qiqgvcrnhwc.com^ -||qirkgwfpspt.com^ -||qituduwios.com^ -||qiuaiea.com^ -||qiuobuixthzcc.com^ -||qivaiw.com^ -||qiviutsdextran.com^ -||qivolcgcemi.com^ -||qizjkwx9klim.com^ -||qjdlivr.com^ -||qjmlmaffrqj.com^ -||qjpotvwljgw.xyz^ -||qjrhacxxk.xyz^ -||qjsknpxwlesvou.com^ -||qjukphe.com^ -||qjvtofw.com^ -||qjyoanpkf.com^ -||qjyvvxjmqirvbl.com^ -||qkalpmwsvfwqqy.com^ -||qkdhstfyx.com^ -||qkepevhlton.xyz^ -||qkfwiylmib.com^ -||qkhvongctffugm.com^ -||qkjjuhs.com^ -||qkodjvdsm.com^ -||qkqlqjjobvkr.top^ -||qksrv.cc^ -||qksrv.net^ -||qksrv1.com^ -||qksz.net^ -||qkyliljavzci.com^ -||qlfqkjluvz.com^ -||qlmwgibhbhar.com^ -||qlnccjattetsoq.com^ -||qlnkt.com^ -||qlrpbdhwebzpf.com^ -||qlrxmuvghs.com^ -||qlspx.com^ -||qlyunjqcyvx.xyz^ -||qmaacxajsovk.com^ -||qmaobrsasck.com^ -||qmbpmdeq.xyz^ -||qmhffrogjeca.com^ -||qmqnnovstcdblm.com^ -||qmrelvezolarj.top^ -||qmrelvezoljaz.top^ -||qmrelvezookoo.top^ -||qmsnsxqfcrh.com^ -||qmtqzsczx.com^ -||qmzakpdewlelv.com^ -||qn-5.com^ -||qnartpbxjaxep.com^ -||qnbiiygyrox.com^ -||qnhvvrpkus.com^ -||qnjyeyc.com^ -||qnkqurpyntrs.xyz^ -||qnp16tstw.com^ -||qnqzbfgg.com^ -||qnrscbotmsj.com^ -||qnsr.com^ -||qnucoorpe.com^ -||qoaaa.com^ -||qobarmbghaiv.xyz^ -||qodyldusxloinpn.com^ -||qogearh.com^ -||qogilljcxwvrhj.com^ -||qokesjxpbds.com^ -||qokira.uno^ -||qomffnmxgwcon.com^ -||qooanabj.com^ -||qootvuedh.com^ -||qoppwwjxjrmhdt.com^ -||qopzmao.com^ -||qoqv.com^ -||qoqxnuxneo.xyz^ -||qoredi.com^ -||qorlxle.com^ -||qovwrntfxpilyt.com^ -||qowncyf.com^ -||qowqnnhf.com^ -||qoytmrsfvu.com^ -||qozveo.com^ -||qpemoqauwc.com^ -||qpixxezhwwoc.com^ -||qpkdnupzke.com^ -||qppq166n.de^ -||qpqemyfscj.com^ -||qprthjab.com^ -||qpvbsekwtwsoe.com^ -||qqdxtmllptdlz.com^ -||qqfelxqmhoc.com^ -||qqgfubewassi.com^ -||qqguvmf.com^ -||qqkzjpupluv.com^ -||qqlnvwjtjhve.com^ -||qqmhh.com^ -||qqohtssdp.com^ -||qqoomtwod.com^ -||qqqqbdma.com^ -||qqqwes.com^ -||qqurzfi.com^ -||qquubyoknj.com^ -||qqyaarvtrw.xyz^ -||qr-captcha.com^ -||qrawitobfm.com^ -||qrbaeaoflil.com^ -||qrdnpjxic.com^ -||qrealqeorqyar.top^ -||qrkwvoomrbjoj.top^ -||qrlsx.com^ -||qroagwadndwy.com^ -||qrpenodnn.com^ -||qrprobopassor.com^ -||qrrqysjnwctp.xyz^ -||qrtrsucg.com^ -||qrwkkcyih.xyz^ -||qrwoaylvmbeyz.top^ -||qrzjmjrrqqrew.top^ -||qrzlaatf.xyz^ -||qsapdkjasxp.com^ -||qsbeclwuayvaekd.com^ -||qservz.com^ -||qsghdoiywu.com^ -||qsgsnyvmoetur.com^ -||qsiuiwnh.com^ -||qsjrovphsiybxc.com^ -||qslkthj.com^ -||qsmsmahlrhop.com^ -||qsorirgzqw.com^ -||qsoxiekkfjl.com^ -||qsthtbjljqfuo.com^ -||qsxptjxruxrttu.xyz^ -||qtbb6.com^ -||qtdopwuau.xyz^ -||qtejflbrrtesvk.com^ -||qtuopsqmunzo.com^ -||qtuxulczymu.com^ -||qtuzpoopwv.com^ -||quacktypist.com^ -||quaewit.com^ -||quagfa.com^ -||quailnude.com^ -||quaint-escape.pro^ -||quaintmembershipprobably.com^ -||qualificationsomehow.com^ -||qualifiedhead.pro^ -||qualifycleaveinduced.com^ -||qualifyundeniable.com^ -||qualitiesstopsallegiance.com^ -||qualitiesyoung.com^ -||qualitydestructionhouse.com^ -||qualityremaining.com^ -||qualitysquashwin.com^ -||quallyrimers.com^ -||quanta-wave.com^ -||quantoz.xyz^ -||quanzai.xyz^ -||quarantinedisappearhive.com^ -||quarrelrelative.com^ -||quartaherbist.com^ -||quarterbackanimateappointed.com^ -||quarterbacknervous.com^ -||quasiblamelesshazy.com^ -||quasimanagespreparation.com^ -||quaternnerka.com^ -||quatrefeuillepolonaise.xyz^ -||quatxio.xyz^ -||quavercivil.com^ -||quaverlonersloppy.com^ -||quayolderinstance.com^ -||queasydashed.top^ -||quedo.buzz^ -||queergatewayeasier.com^ -||queersodadults.com^ -||queersynonymlunatic.com^ -||queerygenets.com^ -||queiajowan.com^ -||quellaplentyresolute.com^ -||quellbustle.com^ -||quellunskilfulimmersed.com^ -||quellyawncoke.com^ -||quenchskirmishcohere.com^ -||quensillo.com^ -||queresspurdie.com^ -||querlfurcal.com^ -||querulous-type.com^ -||queryaccidentallysake.com^ -||queryhookczar.com^ -||querylead.com^ -||querysteer.com^ -||quesid.com^ -||questioningsanctifypuberty.com^ -||questioningtosscontradiction.com^ -||questionsconnected.com^ -||questormyxo.com^ -||queuequalificationtreasure.com^ -||queuescotman.com^ -||quiaresp.com^ -||quiazo.xyz^ -||quibbleremints.top^ -||quickads.net^ -||quickcontrolpc.com^ -||quickieboilingplayground.com^ -||quickielatepolitician.com^ -||quicklisti.com^ -||quicklymuseum.com^ -||quickorange.com^ -||quicksitting.com^ -||quickwest.pro^ -||quidclueless.com^ -||quietannouncementdove.com^ -||quietlybananasmarvel.com^ -||quiltscaudata.com^ -||quitelyhabitat.com^ -||quitenolakatan.com^ -||quitepoet.com^ -||quitesousefulhe.info^ -||quittalmacaque.top^ -||quiveringgland.com^ -||quiveringriddance.com^ -||quizmastersnag.com^ -||quizmastersnappy.com^ -||quizna.xyz^ -||quizsupportedchapel.com^ -||qumagee.com^ -||qummafsivff.com^ -||qumnpavuvw.com^ -||quokkacheeks.com^ -||quoo.eu^ -||quotationcovetoustractor.com^ -||quotationindolent.com^ -||quoteprocesses.com^ -||quotes.com^ -||quqcasuxuytehkw.com^ -||qusfmaxgfa.xyz^ -||qutejo.xyz^ -||qutzljcrj.com^ -||quxegtegmvlfln.com^ -||quxsiraqxla.com^ -||quxtpanaxd.com^ -||quxuejhcaz.com^ -||quxwpwcwmmx.xyz^ -||qvikar.com^ -||qvjpjsglmvhcbv.xyz^ -||qvjqbtbt.com^ -||qvlczhitbsqpl.com^ -||qvol.tv^ -||qvtcigr.com^ -||qwa3ldhn9u0t.com^ -||qwaapgxfahce.com^ -||qwbaiftlbfbnt.com^ -||qwerfdx.com^ -||qwertytracks.com^ -||qwhyldakamv.com^ -||qwiarjayuffn.xyz^ -||qwkmiot.com^ -||qwlbvlyaklrkw.top^ -||qwmdnlzitsys.com^ -||qwoyfys.com^ -||qwrwawwmblwbb.top^ -||qwrwawwmblybj.top^ -||qwtag.com^ -||qwvqbeqwbrabj.top^ -||qwvvoaykybbo.top^ -||qwvvoaykyrbj.top^ -||qwyonzatjoq.com^ -||qwyoxrmhep.com^ -||qwyvmjvqlrbov.top^ -||qwzfsjdyecefdn.com^ -||qxdownload.com^ -||qxeidsj.com^ -||qxgbgixnzcoen.com^ -||qxhspimg.com^ -||qxiabfmmtjhyv.com^ -||qxjlqqknkzr.com^ -||qxjohabnsheyt.com^ -||qxlwpaxlwg.com^ -||qxpwiqydg.com^ -||qxqtycvrm.com^ -||qxrbu.com^ -||qxuelcdfvgecwpb.com^ -||qxyam.com^ -||qxycdoexyj.com^ -||qybloikdmd.com^ -||qybriakrlcyow.com^ -||qydgdko.com^ -||qydrwhhk.xyz^ -||qyenlspei.com^ -||qykvrcqk.com^ -||qykxyax.com^ -||qylgfuikc.com^ -||qylmbemvllllr.top^ -||qylmbemvlloov.top^ -||qylmbemvllzrb.top^ -||qylrihck.xyz^ -||qymdcuco.com^ -||qynmfgnu.xyz^ -||qynqvkkmbzvkk.top^ -||qyvklvjejrmkz.top^ -||qyvklvjejrmwo.top^ -||qywjvlaoyrzqw.top^ -||qz496amxfh87mst.com^ -||qzcjehp.com^ -||qzdmvwewzxzzze.com^ -||qzesmjv.com^ -||qzkjkiexmsyv.com^ -||qzsgudj.com^ -||qzybrmzevrlr.top^ -||qzyllgqficyd.com^ -||qzzzzzzzzzqq.com^ -||r-q-e.com^ -||r-tb.com^ -||r023m83skv5v.com^ -||r3oodleaw5au4ssir.com^ -||r5apiliopolyxenes.com^ -||r66net.com^ -||r66net.net^ -||r932o.com^ -||raadth.com^ -||rabbinsfoldage.top^ -||rabbitsfreedom.com^ -||rabbitsshortwaggoner.com^ -||rabbitsverification.com^ -||rabblefang.com^ -||rabblelobbyfry.com^ -||rabblespidersrenaissance.com^ -||rabidamoral.com^ -||rabidjim.com^ -||rablic.com^ -||racecadettyran.com^ -||racepaddlesomewhere.com^ -||racesundermine.com^ -||racewhisperingsnow.com^ -||racingorchestra.com^ -||racismremoveveteran.com^ -||racktidyingunderground.com^ -||racticalwhich.com^ -||ractors291wicklay.com^ -||racunn.com^ -||radarconsultation.com^ -||radarwitch.com^ -||radeant.com^ -||radiancethedevice.com^ -||radiantextension.com^ -||radicalovertime.com^ -||radicalverdictreview.com^ -||radied.com^ -||radiodogcollaroctober.com^ -||radiusfellowship.com^ -||radiusmarketing.com^ -||radiusthorny.com^ -||radshedmisrepu.info^ -||raekq.online^ -||raeoaxqxhvtxe.xyz^ -||raepkiknkyxuuc.com^ -||raffleinsanity.com^ -||rag3ca7t5amubr8eedffin.com^ -||ragapa.com^ -||rageagainstthesoap.com^ -||ragerystenchy.com^ -||ragged-weakness.pro^ -||raggledordures.com^ -||ragita.uno^ -||raglanyakking.com^ -||raglassofrum.cc^ -||ragnarhorst.com^ -||ragsbxhchr.xyz^ -||ragwviw.com^ -||raheglin.xyz^ -||rahmagtgingleaga.info^ -||rahxfus.com^ -||raigauho.com^ -||raijoolu.xyz^ -||railingconveniencesabattoir.com^ -||railinghighbachelor.com^ -||raillimp.com^ -||railroadfatherenlargement.com^ -||railroadlineal.com^ -||railroadmanytwitch.com^ -||railwayboringnasal.com^ -||rainchangedquaver.com^ -||raincoatbowedstubborn.com^ -||raincoatnonstopsquall.com^ -||rainerspooked.live^ -||rainmealslow.live^ -||rainwealth.com^ -||rainyautumnnews.com^ -||rainyfreshen.com^ -||raiseallocation.com^ -||raiserefreshmentgoods.com^ -||raisingsupportive.com^ -||raisinmanagelivestock.com^ -||raivoufe.xyz^ -||rajabets.xyz^ -||rajmobbism.com^ -||rakamu.com^ -||rakhen.com^ -||rakiblinger.com^ -||rakkuntwex.com^ -||rallantynethebra.com^ -||rallydisprove.com^ -||rallyexpirehide.com^ -||ralphscrupulouscard.com^ -||ramblecursormaths.com^ -||rambobf.com^ -||rameejour.com^ -||rammagepatagia.com^ -||rammersdarvon.com^ -||rammishruinous.com^ -||rampirepubis.uno^ -||rampmention.com^ -||ramrodsmorals.top^ -||ramusiauk.digital^ -||ramusiproxied.com^ -||ranabreast.com^ -||ranchsatin.com^ -||rancorousjustin.com^ -||rancorousnoncommittalsomewhat.com^ -||randiul.com^ -||randomadsrv.com^ -||randomamongst.com^ -||randomassertiveacacia.com^ -||randomdnslab.com^ -||randomignitiondentist.com^ -||raneeptaid.net^ -||rangbellowreflex.com^ -||rangercessation.com^ -||rangformer.com^ -||ranggallop.com^ -||ranhealthy.com^ -||rankinegaumish.com^ -||rankonefoldonefold.com^ -||rankpeers.com^ -||rankstarvation.com^ -||ranksubquery.com^ -||ranmistaken.com^ -||ranselpugmark.com^ -||ransomsection.com^ -||ransomwidelyproducing.com^ -||ranythingamgladt.com^ -||raogjkrgjtrml.xyz^ -||raosmeac.net^ -||rapaneaphoma.com^ -||rapanearozzer.cfd^ -||rapemineral.com^ -||rapepush.net^ -||raphanyleman.top^ -||raphanysteers.com^ -||raphidewakener.com^ -||rapidhits.net^ -||rapidhunchback.com^ -||rapidlybeaver.com^ -||rapidlypierredictum.com^ -||rapidshookdecide.com^ -||rapingdistil.com^ -||rapolok.com^ -||rappjsps.com^ -||raptapee.com^ -||raptingy.net^ -||raptorserrano.com^ -||raptorspheres.top^ -||raptorssplurge.com^ -||rapttransaction.com^ -||rapturemeddle.com^ -||rar-vpn.com^ -||rareghoa.net^ -||rarestkhatin.top^ -||rasalasgobangs.top^ -||rascalbygone.com^ -||rashbarnabas.com^ -||rashlyblowfly.com^ -||rashtiprimomo.com^ -||raspberryamusingbroker.com^ -||raspedexsculp.com^ -||ratcovertlicence.com^ -||ratebilaterdea.com^ -||rategruntcomely.com^ -||ratesatrociousplans.com^ -||ratificationcockywithout.com^ -||ratimsub.net^ -||rationalan.pro^ -||rationalizedalton.com^ -||ratioregarding.com^ -||ratiosincl.com^ -||rattoninsects.top^ -||rauceesh.com^ -||raudoufoay.com^ -||raugovicoma.com^ -||raupothrepe.com^ -||raupsica.net^ -||rausfml.com^ -||rausougo.net^ -||rauvoaty.net^ -||rauwoukauku.com^ -||ravalads.com^ -||ravalamin.com^ -||ravaquinal.com^ -||ravaynore.com^ -||ravedesignerobey.com^ -||ravekeptarose.com^ -||ravenchewrainbow.com^ -||ravenousdrawers.com^ -||ravenpearls.com^ -||raverduhat.top^ -||ravethung.com^ -||ravineagencyirritating.com^ -||ravingsquilted.top^ -||ravqaroffn.com^ -||raw-co.com^ -||rawasy.com^ -||rawoarsy.com^ -||raylnk.com^ -||raymondcarryingordered.com^ -||rayshopsshabby.com^ -||razdvabm.com^ -||razeupmount.digital^ -||razzlebuyer.com^ -||rbcfecxs.com^ -||rbcxttd.com^ -||rbgrckaysvrp.com^ -||rblgfyvwse.com^ -||rblrekay.com^ -||rbltedbpjshxb.com^ -||rbnt.org^ -||rbqcg6g.de^ -||rbqlbolklrvmk.top^ -||rbrightscarletcl.info^ -||rbrvifibj.com^ -||rbtfit.com^ -||rbthre.work^ -||rbtwo.bid^ -||rbuirpyptplp.com^ -||rbweljjemzkza.top^ -||rbxycnnesqsjc.com^ -||rbzqarqlyzamj.top^ -||rcaobxvagv.com^ -||rcaqaogrcjukkg.com^ -||rcblkkhfvrxyn.com^ -||rceqdysdjfhy.com^ -||rcerrohatfad.com^ -||rcesigojtwh.com^ -||rcf3occ8.de^ -||rcpadatlgn.com^ -||rcvlink.com^ -||rcvlinks.com^ -||rcvsmbawwqodqt.com^ -||rcwuzudjcsjmr.com^ -||rczmdeuahn.com^ -||rd-cdnp.name^ -||rdairclewestoratesa.info^ -||rddywd.com^ -||rdgdjmgll.com^ -||rdghnhu.com^ -||rdjbhghljkrca.com^ -||rdpyjpljfqfwah.xyz^ -||rdrceting.com^ -||rdrctgoweb.com^ -||rdrhmxyitc.com^ -||rdrm1.click^ -||rdrm2.click^ -||rdroot.com^ -||rdrsec.com^ -||rdrtrk.com^ -||rdsb2.club^ -||rdsncyndhj.com^ -||rdtk.io^ -||rdtrck2.com^ -||rdwdbrswjvbz.com^ -||rdwmct.com^ -||rdxfdpmmco.com^ -||rdximaudovydtk.com^ -||rdxmjgp.com^ -||re-captha-version-3-243.buzz^ -||re-captha-version-3-263.buzz^ -||re-captha-version-3-29.top^ -||re-captha-version-3-33.top^ -||re-experiment.sbs^ -||reabitheconti.com^ -||reachmode.com^ -||reachpane.com^ -||readinessplacingchoice.com^ -||readinghailstone.com^ -||readiong.net^ -||readly-renterval.icu^ -||readserv.com^ -||readserver.net^ -||readspokesman.com^ -||readyblossomsuccesses.com^ -||reagend.com^ -||reager30.com^ -||reajyu.net^ -||real-consequence.pro^ -||realescowbell.com^ -||realevalbs.com^ -||realisecheerfuljockey.com^ -||realiseequanimityliteracy.com^ -||realityamorphous.com^ -||realiukzem.org^ -||realizationhunchback.com^ -||realizesensitivenessflashlight.com^ -||reallifeforyouandme.com^ -||reallyindependencehated.com^ -||reallywelfarestun.com^ -||reallyworkplacesnitch.com^ -||realmatch.com^ -||realmdescribe.com^ -||realnewslongdays.pro^ -||realpopbid.com^ -||realsh.xyz^ -||realsrv.com^ -||realsrvcdn.com^ -||realtime-bid.com^ -||realvids.online^ -||realvids.space^ -||realvu.net^ -||realxavounow.com^ -||reamageplutus.com^ -||reamsanswere.org^ -||reaoryhuluios.com^ -||reapinject.com^ -||rearcomrade.com^ -||rearedexpensive.com^ -||reariikosin.com^ -||reariimime.com^ -||rearjapanese.com^ -||rearmhoulet.uno^ -||rearomenlion.com^ -||reaseinprofitstefu.info^ -||reasonablelandmark.com^ -||reasoncharmsin.com^ -||reasoningarcherassuage.com^ -||reassurehintholding.com^ -||reate.info^ -||reated-pounteria.com^ -||reautecryable.life^ -||rebagsabeing.top^ -||rebaterremass.com^ -||rebathebuxom.top^ -||rebelfarewe.org^ -||rebelhaggard.com^ -||rebelliousdesertaffront.com^ -||rebillsegomism.com^ -||rebindskayoes.com^ -||rebrew-foofteen.com^ -||rebsouvaih.com^ -||rebursteaseful.com^ -||rebuxoos.xyz^ -||recalledmesnarl.com^ -||recalledriddle.com^ -||recanesjurel.com^ -||recastdeclare.com^ -||recastnavy.com^ -||recedewell.com^ -||receivedachest.com^ -||receiverunfaithfulsmelt.com^ -||recentlydelegate.com^ -||recentlyremainingbrevity.com^ -||recentlywishes.com^ -||recentrecentboomsettlement.com^ -||recentteem.com^ -||receptionnausea.com^ -||recessgrimp.space^ -||recessionhumiliate.com^ -||recesslikeness.com^ -||recesslotdisappointed.com^ -||recessqh.life^ -||recesssignary.com^ -||rechannelapi.com^ -||rechanque.com^ -||recholta.net^ -||recipeominouscrest.com^ -||recipientmuseumdismissed.com^ -||reciprocaldowntownabout.com^ -||reciprocalvillager.com^ -||recitalscallop.com^ -||reciteassemble.com^ -||recitedocumentaryhaunch.com^ -||reciteimplacablepotato.com^ -||recklessaffluent.com^ -||recklessliver.com^ -||recklessmarine.com^ -||reclaairyygz.com^ -||reclaimantennajolt.com^ -||reclaimhorridaltitude.com^ -||reclearsaulge.com^ -||reclod.com^ -||recloseclouty.com^ -||recognisepeaceful.com^ -||recognisetorchfreeway.com^ -||recollectionchicken.com^ -||recombssuu.com^ -||recomendedsite.com^ -||recommendedforyou.xyz^ -||recommendedseizedbewildered.com^ -||recommendessencerole.com^ -||recompensechevyconnoisseur.com^ -||recompensecombinedlooks.com^ -||reconcilewaste.com^ -||reconciliationmallwed.com^ -||reconhodder.top^ -||reconnectconsistbegins.com^ -||reconnectjealousyunited.com^ -||reconsiderenmity.com^ -||reconstructalliance.com^ -||reconstructcomparison.com^ -||reconstructshutdown.com^ -||record.guts.com^ -||record.rizk.com^ -||recordedthereby.com^ -||recordercrush.com^ -||recordervesttasting.com^ -||recordingadventurouswildest.com^ -||recordingfilessuperintend.com^ -||recordingperky.com^ -||recordingshipping.com^ -||recordstunradioactive.com^ -||recoupsamakebe.com^ -||recovernosebleed.com^ -||recoverystrait.com^ -||recrihertrettons.com^ -||recruitburp.com^ -||recruitresidebitterness.com^ -||rectangular-hook.pro^ -||rectificationchurchill.com^ -||rectresultofthepla.info^ -||recurseagin.com^ -||recurvegowland.top^ -||recyclinganewupdated.com^ -||recyclinganticipated.com^ -||recyclingbees.com^ -||recyclingproverbintroduce.com^ -||red-getresult.com^ -||red-track.xyz^ -||redadisappoi.info^ -||redads.biz^ -||redaffil.com^ -||redansediles.com^ -||redbaygazel.com^ -||redbillecphory.com^ -||reddenjerusalem.com^ -||reddenlightly.com^ -||redderspsiloi.guru^ -||reddsdainful.com^ -||redealstonage.com^ -||redetaailsh.info^ -||redheadpublicityjug.com^ -||redi.teengirl-pics.com^ -||redic.net^ -||redic2.net^ -||redic3.com^ -||redic4.com^ -||redic5.xyz^ -||redic6.site^ -||redij.online^ -||redirect-path1.com^ -||redirectflowsite.com^ -||redirecting7.eu^ -||redirectingat.com^ -||redirection.one^ -||redirectlinker.com^ -||redistedi.com^ -||redlele.com^ -||rednegationswoop.com^ -||rednewly.com^ -||redonetype.com^ -||redoutcomecomfort.com^ -||redri.net^ -||redrotou.net^ -||redtopcliquy.com^ -||reducebakers.com^ -||reducediscord.com^ -||reducinglousynauseous.com^ -||redwingmagazine.com^ -||reecegrita.com^ -||reechegraih.com^ -||reedbritingsynt.info^ -||reedpraised.com^ -||reedsbullyingpastel.com^ -||reedsinterfering.com^ -||reedsonceoxbow.com^ -||reedthatm.biz^ -||reefcolloquialseptember.com^ -||reefingcolures.com^ -||reeledou.com^ -||reelnk.com^ -||reemoume.com^ -||reenakun.com^ -||reenginee.club^ -||reephaus.com^ -||reepteen.com^ -||reeqqkewerzrj.top^ -||reerfdfgourgoldpie.com^ -||reeshiebotfly.top^ -||reesounoay.com^ -||reesterzeniths.guru^ -||reevoopt.com^ -||refban.com^ -||refbanners.com^ -||refbanners.website^ -||refdomain3.xyz^ -||refdzhz.com^ -||refeelparolee.top^ -||refereenutty.com^ -||referencepronounce.com^ -||referredencouragedlearned.com^ -||referredholesmankind.com^ -||refershaunting.com^ -||referwhimperceasless.com^ -||refia.xyz^ -||refilednisi.com^ -||refilmsbones.top^ -||refineminx.top^ -||refinerfiery.com^ -||reflectingscoopcourse.com^ -||reflectionseldomnorth.com^ -||reflectionsidewalk.com^ -||reflexcolin.com^ -||reflushneuma.com^ -||refnippod.com^ -||refoortowatch.com^ -||refpa.top^ -||refpa4293501.top^ -||refpabuyoj.top^ -||refpaikgai.top^ -||refpaiozdg.top^ -||refpaiwqkk.top^ -||refpamjeql.top^ -||refpanglbvyd.top^ -||refpasrasw.world^ -||refpaxfbvjlw.top^ -||refractfunkia.com^ -||refraingene.com^ -||refraintupaiid.com^ -||refreshingtold.com^ -||refreshmentprivilegedaspen.com^ -||refreshmentswilfulswollen.com^ -||refreshmentwaltzimmoderate.com^ -||refrigeratecommit.com^ -||refrigeratemaimbrunette.com^ -||refrigeratespinsterreins.com^ -||refugedcuber.com^ -||refugeintermediate.com^ -||refugepoplars.top^ -||refulgebesague.com^ -||refulgecomsat.com^ -||refundlikeness.com^ -||refundsreisner.life^ -||refuseddissolveduniversity.com^ -||refusedfellow.com^ -||refusemovie.com^ -||refuserates.com^ -||refutationtiptoe.com^ -||regadsacademy.com^ -||regadspro.com^ -||regadsworld.com^ -||regainthong.com^ -||regardedcontentdigest.com^ -||regardingpectoralcollapse.com^ -||regardlydiaoddly.com^ -||regardsperformedgreens.com^ -||regardsshorternote.com^ -||regaveskeo.com^ -||regionads.ru^ -||regionaladversarylight.com^ -||regionalanglemoon.com^ -||regionalaplentysome.com^ -||regionalyesterdayreign.com^ -||regioncolonel.com^ -||regioninaudibleafforded.com^ -||registercherryheadquarter.com^ -||reglazetentie.com^ -||reglowsupbar.com^ -||regnicmow.xyz^ -||regnumyelp.digital^ -||regott.com^ -||regretfactor.com^ -||regretfulfaultsabound.com^ -||regrettablemorallycommitment.com^ -||regrettabletoken.com^ -||regretuneasy.com^ -||regrupontihe.com^ -||reguid.com^ -||regularinstructgorilla.com^ -||regulationprivilegescan.top^ -||regulushamal.top^ -||rehanggepoun.space^ -||rehealfilao.com^ -||rehearsepouredhysteria.com^ -||rehvbghwe.cc^ -||rei9jc56oyqux0rcpcquqmm7jc5freirpsquqkope3n3axrjacg8ipolxvbm.codes^ -||reicegiraffa.com^ -||reichelcormier.bid^ -||reignprofessionally.com^ -||reindaks.com^ -||reinstandpointdumbest.com^ -||reisoctene.com^ -||reissue2871.xyz^ -||reitbokgona.com^ -||reivereme.com^ -||rejco2.store^ -||rejco3.site^ -||rejdfa.com^ -||rejectionbackache.com^ -||rejectionfundetc.com^ -||rejoinedproof.com^ -||rejoinedshake.com^ -||rejowhourox.com^ -||rejslaq.com^ -||rekfubzli.com^ -||rekipion.com^ -||reklamko.pro^ -||reklamz.com^ -||reknowfirbolg.com^ -||relappro.com^ -||relatelocateapology.com^ -||relationsquiver.com^ -||relativeballoons.com^ -||relativefraudulentprop.com^ -||relativelyweptcurls.com^ -||relativewheneverhoe.com^ -||relatumrorid.com^ -||relaxespawner.space^ -||relaxtime24.biz^ -||relaycommodity.com^ -||releasedrespiration.com^ -||releasedverge.com^ -||relestar.com^ -||relevanti.com^ -||reliableceaseswat.com^ -||reliablemiraculouscaleb.com^ -||reliablemore.com^ -||reliableorientdelirium.com^ -||reliablepollensuite.com^ -||reliantstacklaugh.com^ -||relicsheer.com^ -||reliefindividual.com^ -||reliefjawflank.com^ -||relievedgeoff.com^ -||religiousmischievousskyscraper.com^ -||relineskenlore.com^ -||relinquishbragcarpenter.com^ -||relinquishcooperatedrove.com^ -||relishcoincidencehandbag.com^ -||relishpreservation.com^ -||relistinfo.com^ -||relivesternar.com^ -||relkconka.com^ -||reloadsusa.com^ -||reluctancefleck.com^ -||reluctanceghastlysquid.com^ -||reluctanceleatheroptional.com^ -||reluctantconfuse.com^ -||reluctantlycopper.com^ -||reluctantlyjackpot.com^ -||reluctantlysolve.com^ -||reluctantturpentine.com^ -||relumedbiaxial.com^ -||reluraun.com^ -||remaincall.com^ -||remaininghurtful.com^ -||remainnovicei.com^ -||remainsuggested.com^ -||remarkable-assistant.pro^ -||remarkableflashseptember.com^ -||remarkablehorizontallywaiter.com^ -||remarkedoneof.info^ -||remarkinspector.com^ -||remarksnicermasterpiece.com^ -||remaysky.com^ -||remedyabruptness.com^ -||remembercompetitioninexplicable.com^ -||rememberdeterminedmerger.com^ -||remembermaterialistic.com^ -||remfcekactfad.com^ -||remindleftoverpod.com^ -||reminews.com^ -||remintrex.com^ -||remipedembosk.com^ -||remissigloos.top^ -||remnas.com^ -||remoifications.info^ -||remorseful-illegal.pro^ -||remorsefulindependence.com^ -||remotelymanhoodongoing.com^ -||remotelyoccasionallyfacing.com^ -||remouldpruta.top^ -||removedispel.com^ -||remploymehnt.info^ -||renadomsey.com^ -||renailgourmet.space^ -||renaissancewednesday.com^ -||renamedhourstub.com^ -||renamedineffective.com^ -||rencontreadultere.club^ -||rencontresparis2015.com^ -||rendchewed.com^ -||renderedwowbrainless.com^ -||rendflying.com^ -||rendfy.com^ -||rendimportinaugurate.com^ -||rendreamingonnight.info^ -||renewdateromance.life^ -||renewedinexorablepermit.com^ -||renewmodificationflashing.com^ -||renewpacificdistrict.com^ -||renomeeguze.com^ -||renovatefairfaxmope.com^ -||renownsimultaneouslyunresolved.com^ -||rentalrebuild.com^ -||rentherifiskin.com^ -||rentingimmoderatereflecting.com^ -||reoiebco.com^ -||reoilspinors.top^ -||reopensnews.com^ -||reople.co.kr^ -||reoreexpresi.com^ -||reorganizeglaze.com^ -||repaycucumbersbutler.com^ -||repayrotten.com^ -||repeatedlyitsbrash.com^ -||repeatedlyshepherd.com^ -||repeatloin.com^ -||repeatresolve.com^ -||repelcultivate.com^ -||repellentamorousrefutation.com^ -||repellentbaptism.com^ -||repellentremainingsly.com^ -||repentant-plant.pro^ -||repentantsympathy.com^ -||repentconsiderwoollen.com^ -||repercussionspoonsbuiltin.com^ -||repetitioustaint.com^ -||rephaseeg.com^ -||replacementdispleased.com^ -||replacestuntissue.com^ -||replicafixedly.com^ -||replif.com^ -||replptlp.com^ -||replynasal.com^ -||reporo.net^ -||report1.biz^ -||reportbulletindaybreak.com^ -||reporthenveri.com^ -||reposefearful.com^ -||reposegranulatedcontinually.com^ -||reposemarshknot.com^ -||reprak.com^ -||reprenebritical.org^ -||representrollerpurposely.com^ -||reprimandheel.com^ -||reprimandhick.com^ -||reprintforensicjesus.com^ -||reprintvariousecho.com^ -||reproachfeistypassing.com^ -||reproachscatteredborrowing.com^ -||reproductiontape.com^ -||reprovems.com^ -||repsrowedpay.com^ -||reptfe.com^ -||reptileineffectivebackup.com^ -||reptileseller.com^ -||republicusefulclothe.com^ -||repulsefinish.com^ -||repulsehandbagperspective.com^ -||repulsiveclearingtherefore.com^ -||reputationsheriffkenneth.com^ -||reqdfit.com^ -||requestburglaracheless.com^ -||requestsrearrange.com^ -||requestvillagedeplorable.com^ -||requinabby.guru^ -||requiredswanchastise.com^ -||requirespig.com^ -||requirestwine.com^ -||requisiteconjure.com^ -||requotehocker.com^ -||reqyfuijl.com^ -||rereddit.com^ -||reroplittrewheck.pro^ -||rerosefarts.com^ -||rerpartmentm.info^ -||reryn2ce.com^ -||reryn3ce.com^ -||rerynjia.com^ -||rerynjie.com^ -||rerynjua.com^ -||resailsgyse.com^ -||resalag.com^ -||resaypyche.top^ -||rescuephrase.com^ -||researchingcompromiseuncertain.com^ -||researchingintentbilliards.com^ -||resemblanceilluminatedcigarettes.com^ -||resentfulelsewherethoroughfare.com^ -||reservesagacious.com^ -||resesmyinteukr.info^ -||resetamobil.com^ -||resetenhancementsillegal.com^ -||resetoccultkeeper.com^ -||resetselected.com^ -||resharekobolds.top^ -||reshuntyanan.com^ -||residelikingminister.com^ -||residenceseeingstanding.com^ -||residentialforestssights.com^ -||residentialinspur.com^ -||residentshove.com^ -||residetransactionsuperiority.com^ -||resignationcustomerflaw.com^ -||resignedcamelplumbing.com^ -||resignedsauna.com^ -||resilesfuriant.guru^ -||resinherjecling.com^ -||resinyanthdia.com^ -||resionsfrester.com^ -||resistanceouter.com^ -||resistcorrectly.com^ -||resistpajamas.com^ -||resistsarcasm.com^ -||resistshy.com^ -||resktdahcyqgu.xyz^ -||resniks.pro^ -||resnikscdn.pro^ -||resnubdreich.com^ -||resoilaldea.digital^ -||resolutethumb.com^ -||resolutionmilestone.com^ -||resolvedalarmmelodramatic.com^ -||resolvedswordlinked.com^ -||reson8.com^ -||resonance.pk^ -||resourcebumper.com^ -||resourcechasing.com^ -||resourcefulauthorizeelevate.com^ -||resourcefulpower.com^ -||resourceisabellareligious.com^ -||resourcesnotorietydr.com^ -||resourcesswallow.com^ -||respectablecharacteristicrider.com^ -||respectableinjurefortunate.com^ -||respectfullyarena.com^ -||respectfulofficiallydoorway.com^ -||respectfulpleaabsolve.com^ -||respectivewalrus.com^ -||respectlodgingfoil.com^ -||respectseizure.com^ -||respirationbruteremotely.com^ -||respireyowl.digital^ -||respondedkinkysofa.com^ -||respondunexpectedalimony.com^ -||responservbzh.icu^ -||responserver.com^ -||responsible-proposal.pro^ -||responsibleprohibition.com^ -||responsidejo.xyz^ -||responsiveproportion.com^ -||responsiverender.com^ -||restadrenaline.com^ -||restauranthedwig.com^ -||restedfeatures.com^ -||restedsoonerfountain.com^ -||restemkonfyt.top^ -||restights.pro^ -||restlessconsequence.com^ -||restlessfreelance.com^ -||restlessidea.com^ -||restlesssunshine.com^ -||restorationpencil.com^ -||restorehealingflee.com^ -||restoreinfilm.com^ -||restoretwenty.com^ -||restrainwhenceintern.com^ -||restrictguttense.com^ -||restrictioncheekgarlic.com^ -||restroomcalf.com^ -||resultlinks.com^ -||resultsz.com^ -||resumeconcurrence.com^ -||retagro.com^ -||retaineraerialcommonly.com^ -||retaliatepoint.com^ -||retardpreparationsalways.com^ -||retarearabica.life^ -||retarget2core.com^ -||retargetcore.com^ -||retargeter.com^ -||retaxenteron.top^ -||retenuepelopid.com^ -||reth45dq.de^ -||retherdoresper.info^ -||rethinkwrinkle.com^ -||reticencecarefully.com^ -||retillbicycle.top^ -||retinaebiaxal.guru^ -||retintsmillion.com^ -||retinueabash.com^ -||retinuedisposablerecuperate.com^ -||retinuegigoh.com^ -||retiredfermentgenuine.com^ -||retiringspamformed.com^ -||retoldcocama.com^ -||retono42.us^ -||retortedattendnovel.com^ -||retoxo.com^ -||retreatregular.com^ -||retrievalterminalcourse.com^ -||retrievebuoyancy.com^ -||retryngs.com^ -||rettornrhema.com^ -||retuckisobars.com^ -||returnautomaticallyrock.com^ -||returt.com^ -||retvjdkolpdals.com^ -||reunitedglossybewildered.com^ -||rev-stripe.com^ -||rev2pub.com^ -||rev4rtb.com^ -||revampcdn.com^ -||revcontent.com^ -||revdepo.com^ -||revelationneighbourly.com^ -||revelationschemes.com^ -||revengeremarksrank.com^ -||revenue.com^ -||revenuebosom.com^ -||revenueclamp.com^ -||revenuecpmnetwork.com^ -||revenuehits.com^ -||revenuemantra.com^ -||revenuenetwork.com^ -||revenuenetworkcpm.com^ -||revenuestripe.com^ -||revenuevids.com^ -||reverbstuffing.com^ -||reversiondisplay.com^ -||revertterm.com^ -||revetothummin.website^ -||revfusion.net^ -||reviewunjust.com^ -||revimedia.com^ -||revisionplatoonhusband.com^ -||revivestar.com^ -||revlt.be^ -||revmob.com^ -||revoirdyingly.digital^ -||revokejoin.com^ -||revolutionpersuasive.com^ -||revolvemockerycopper.com^ -||revolveoppress.com^ -||revopush.com^ -||revresponse.com^ -||revrtb.com^ -||revrtb.net^ -||revsci.net^ -||revsolder.com^ -||revstripe.com^ -||revulsiondeportvague.com^ -||revupads.com^ -||rewardingindependentvisit.shop^ -||rewardrush.life^ -||rewardsaffiliates.com^ -||rewashwudu.com^ -||rewetgreeter.top^ -||rewindgills.com^ -||rewindgranulatedspatter.com^ -||rewinedropshop.info^ -||rewordsbrogh.life^ -||rewriteadoption.com^ -||rewriteworse.com^ -||rewwlzjmj.com^ -||rexadvert.xyz^ -||rexbucks.com^ -||rexendynamos.guru^ -||rexneedleinterfere.com^ -||rexsrv.com^ -||reyehathick.info^ -||reykijnoac.com^ -||reymvmqvkrooj.top^ -||reymvmqvkryoa.top^ -||reypelis.tv^ -||reyswrloef.xyz^ -||reyungojas.com^ -||rfaatlrdr.com^ -||rfeablduda.com^ -||rfhddwa.com^ -||rficarolnak.com^ -||rfihub.com^ -||rfihub.net^ -||rfimzurarqk.com^ -||rfity.com^ -||rfixitrwa.com^ -||rfmjcnramsw.com^ -||rftodidsrel.com^ -||rftslb.com^ -||rfxxjpuh.com^ -||rfzawaydywe.com^ -||rfzlfsedzesgp.com^ -||rgauwvaznptsx.com^ -||rgbnqmz.com^ -||rgbvgxfcp.xyz^ -||rgbvncnqzlvwr.com^ -||rgcxmzrmcvbxem.com^ -||rgddist.com^ -||rgentssep.xyz^ -||rgeredrubygs.info^ -||rgjlpgkzagf.com^ -||rglxzqlqcp.com^ -||rgpqgasbmqere.com^ -||rgqhamkhnoex.xyz^ -||rgqllsbt.com^ -||rgrd.xyz^ -||rgsiuevpupqz.com^ -||rgsnktxhe.com^ -||rgtcqif.com^ -||rgtqgsgwkopgnf.com^ -||rguxbwbj.xyz^ -||rgvqcsxqge.com^ -||rhagitetawery.top^ -||rhdhdmxeqx.com^ -||rhendam.com^ -||rheneapfg.com^ -||rhesusvitrite.com^ -||rhinioncappers.com^ -||rhinocerosobtrusive.com^ -||rhjcnfypo.com^ -||rhjqirhsue.com^ -||rhkaljxsxlxn.xyz^ -||rhoecusteased.life^ -||rhombicsomeday.com^ -||rhombosdupe.top^ -||rhouseoyopers.info^ -||rhpjzjqhgz.com^ -||rhsorga.com^ -||rhtysfkaqle.com^ -||rhubarbmasterpiece.com^ -||rhubarbraise.com^ -||rhubarbsuccessesshaft.com^ -||rhudsplm.com^ -||rhufmdelxa.com^ -||rhungs.com^ -||rhvdsplm.com^ -||rhvsujcakbmdpkh.com^ -||rhwvpab.com^ -||rhxdsplm.com^ -||rhymerhaysel.guru^ -||rhymeryamebas.top^ -||rhythmmassacre.com^ -||rhythmxchange.com^ -||rhytic.com^ -||ribbondoorbell.com^ -||ribqpiocnzc.com^ -||ribrimmano.com^ -||ribsaiji.com^ -||ribsegment.com^ -||ribumpin.com^ -||ribunews.com^ -||ric-ric-rum.com^ -||ricalsbuildfordg.info^ -||ricead.com^ -||ricettadellanonna.com^ -||ricewaterhou.xyz^ -||richerprudes.top^ -||richersitfast.life^ -||richestplacid.com^ -||richinfo.co^ -||richtwist.com^ -||richwebmedia.com^ -||rickerrotal.com^ -||ricted.com^ -||riddleloud.com^ -||ridfunnyassuredness.com^ -||ridgescrapstadium.com^ -||ridiculousatta.xyz^ -||ridiculousegoismaspirin.com^ -||ridingdisguisessuffix.com^ -||ridleward.info^ -||ridseechiph.com^ -||ridwmorfitu.com^ -||rieversfidate.com^ -||riffsablaze.uno^ -||riflesurfing.xyz^ -||riftharp.com^ -||riftskinah.digital^ -||rigelbetelgeuse.top^ -||rigembassyleaving.com^ -||rightcomparativelyincomparable.com^ -||righteousfainted.com^ -||righteoussleekpet.com^ -||rightfuldisintegrate.com^ -||rightfulheadstone.com^ -||rightfullybulldog.com^ -||rightfullyrosyvalve.com^ -||rightlydunggive.com^ -||rightlytendertrack.com^ -||rightsapphiresand.info^ -||rightycolonialism.com^ -||rightyhugelywatch.com^ -||rightypulverizetea.com^ -||rigill.com^ -||rigourbackward.com^ -||rigourpreludefelon.com^ -||rigryvusfyu.xyz^ -||riiciuy.com^ -||rileclothingtweak.com^ -||rileimply.com^ -||rilelogicbuy.com^ -||riletechnicality.com^ -||riluaneth.com^ -||rimediapush.com^ -||rimefatling.com^ -||rimersarcler.life^ -||rimeseized.com^ -||rimfranklyscaffold.com^ -||riminghoggoofy.com^ -||rimoseantdom.com^ -||rimwigckagz.com^ -||rinceaskedase.com^ -||rincipledecli.info^ -||rinddelusional.com^ -||ringashewasfl.info^ -||ringermuggish.com^ -||ringexpressbeach.com^ -||ringingneo.com^ -||ringsempty.com^ -||ringtonepartner.com^ -||rinsederangeordered.com^ -||rinsermouton.space^ -||rinsouxy.com^ -||riotousgrit.com^ -||riotousunspeakablestreet.com^ -||riowrite.com^ -||ripeautobiography.com^ -||ripencompatiblefreezing.com^ -||ripenstreet.com^ -||riperfienwa.com^ -||riponztulc.com^ -||ripplead.com^ -||ripplecauliflowercock.com^ -||rippleretardfellowship.com^ -||ripturkidbu.com^ -||riroursaph.com^ -||risausso.com^ -||riscati.com^ -||risebeigehelium.com^ -||riskelaborate.com^ -||riskhector.com^ -||riskymuzzlebiopsy.com^ -||risode.com^ -||rivalpout.com^ -||rivalthratch.com^ -||rivatedqualizebruisi.info^ -||riverhit.com^ -||riverhita.com^ -||riverpush.com^ -||riversingratitudestifle.com^ -||rivetrearrange.com^ -||rivmuvlnu.com^ -||rivne.space^ -||riweeboo.com^ -||rixaka.com^ -||rjaddfbzxzu.com^ -||rjeruqs.com^ -||rjhiomohthqr.com^ -||rjkezyfcpxffc.com^ -||rjokawzjqrezk.top^ -||rjvfxxrsepwch.xyz^ -||rjw4obbw.com^ -||rjwhuxgjjm.com^ -||rjykqcrnz.com^ -||rkajleihgyidsu.com^ -||rkalbwupipuow.xyz^ -||rkapghq.com^ -||rkatamonju.info^ -||rkfodhkxmf.com^ -||rkgwzfwjgk.com^ -||rkifguxul.com^ -||rknwwtg.com^ -||rkomf.com^ -||rkskillsombineukd.com^ -||rkvyhuyab.com^ -||rkwithcatuk.org^ -||rkymfevzeq.com^ -||rkyynuthufhutew.xyz^ -||rlcdn.com^ -||rldfgcehgh.com^ -||rldwideorgani.org^ -||rldwideorganizat.org^ -||rletcloaksandth.com^ -||rlfqwlstxhq.xyz^ -||rliksgcixgf.com^ -||rlittleboywhowas.com^ -||rliwkyil.com^ -||rljybcormiv.com^ -||rlornextthefirean.com^ -||rlrekuaonqt.com^ -||rlsspiuyx.com^ -||rlvvakyuipqbl.com^ -||rlwiupbqn.com^ -||rlxw.info^ -||rmagugarmk.com^ -||rmaiksacouuo.xyz^ -||rmanentsyshru.com^ -||rmaticalacycurated.info^ -||rmbmsqtryo.com^ -||rmervvazoakba.top^ -||rmervvazoakky.top^ -||rmervvazoazzv.top^ -||rmgfulosqmlcly.com^ -||rmgserving.com^ -||rmhfrtnd.com^ -||rmhptjwikttv.com^ -||rmixfgusqoc.com^ -||rmndme.com^ -||rmrtgsheui.com^ -||rmshqa.com^ -||rmuuspy.com^ -||rmvvawqobqvaq.top^ -||rmvvawqobqvmv.top^ -||rmwzbomjvmlej.top^ -||rmxads.com^ -||rnanlxfa.com^ -||rndambipoma.com^ -||rndchandelureon.com^ -||rndhaunteran.com^ -||rndmusharnar.com^ -||rndnoibattor.com^ -||rndskittytor.com^ -||rnfwyvgoxu.com^ -||rnhsrsn.com^ -||rnldustal.com^ -||rnmd.net^ -||rnmentsecon.xyz^ -||rnoddenkn.asia^ -||rnotraff.com^ -||rnqjfeuwrvd.com^ -||rnrycry.com^ -||rnv.life^ -||rnwbrm.com^ -||roabmyrevngqqk.com^ -||roachoavi.com^ -||roadformedomission.com^ -||roadmappenal.com^ -||roadoati.xyz^ -||roamapheejub.com^ -||roambedroom.com^ -||roamparadeexpel.com^ -||roarasha.com^ -||roarcontrivanceuseful.com^ -||roastoup.com^ -||roataisa.net^ -||robazi.xyz^ -||robberyinscription.com^ -||robberysordid.com^ -||robbindoer.digital^ -||roberehearsal.com^ -||robertavivific.top^ -||robescampus.com^ -||robflea.com^ -||robindefensivedancing.com^ -||robotadserver.com^ -||roboticourali.com^ -||robotrenamed.com^ -||robsbogsrouse.com^ -||robspabah.com^ -||robssukey.com^ -||robunderstanding.com^ -||rocco-fvo.com^ -||rochesterbreedpersuade.com^ -||rockersbaalize.com^ -||rocketme.top^ -||rocketplaintiff.com^ -||rocketyield.com^ -||rockfellertest.com^ -||rockierfought.top^ -||rockingfolders.com^ -||rockmostbet.com^ -||rockpicky.com^ -||rockyou.net^ -||rocobo.uno^ -||rocoloagrotis.fun^ -||rodecommercial.com^ -||rodejessie.com^ -||rodirgix.com^ -||rodisons.site^ -||rodplayed.com^ -||rodrergi.com^ -||rodroord.net^ -||rodunwelcome.com^ -||roduster.com^ -||rodwoodporched.com^ -||roebuckwagged.com^ -||roelikewimpler.com^ -||roemoss.com^ -||rof77skt5zo0.com^ -||rofant.com^ -||rog4.com^ -||rogbhbxvqe.com^ -||roguehideevening.com^ -||rogueschedule.com^ -||rohvyftxssn.com^ -||roiapp.net^ -||roikingdom.com^ -||roilsnadirink.com^ -||roinduk.com^ -||rokafeg.com^ -||rokreeza.com^ -||rokymedia.com^ -||roledale.com^ -||rollads.live^ -||rollbackhear.com^ -||rollbackpop.com^ -||rollbaralit.com^ -||rollerdisrespect.com^ -||rollerstrayprawn.com^ -||rollingkiddisgrace.com^ -||rollingwolvesforthcoming.com^ -||rollobscurewoke.com^ -||rollserver.xyz^ -||rolltrafficroll.com^ -||rolpenszimocca.com^ -||rolsoupouh.xyz^ -||rolzqwm.com^ -||romance-net.com^ -||romancemind.com^ -||romancepotsexists.com^ -||romaninformcompensate.com^ -||romanlicdate.com^ -||romansatma.com^ -||romanticmanufacture.com^ -||romanticwait.com^ -||romanunhedge.com^ -||romashk9arfk10.com^ -||romauntmirker.com^ -||romepoptahul.com^ -||romivapsi.com^ -||rompishvariola.com^ -||ronionbiretta.space^ -||roobetaffiliates.com^ -||roofprison.com^ -||rooglomitaiy.com^ -||roohoozy.net^ -||rookiewhiskey.com^ -||rookinews.com^ -||rookretired.com^ -||rooksreused.website^ -||roolgage.com^ -||roomersgluts.com^ -||roommateskinner.com^ -||roompowerfulprophet.com^ -||roomrentpast.com^ -||rooptawu.net^ -||rooptuph.xyz^ -||rootcaptawed.com^ -||rootzaffiliates.com^ -||roovs.xyz^ -||ropablegaliot.top^ -||ropeanresu.com^ -||ropebrains.com^ -||ropedm.com^ -||ropedsawwort.com^ -||ropemoon.com^ -||ropesunfamiliar.com^ -||ropwilv.com^ -||roqiwno.com^ -||rordukinarilyhuke.info^ -||roredi.com^ -||roriba.uno^ -||rorserdy.com^ -||rose2919.com^ -||rosebrandy.com^ -||rosebudemphasizelesson.com^ -||rosebudspurarmies.com^ -||rosemessengeryuri.com^ -||rosilysavages.com^ -||rosolicdalapon.com^ -||rosterphyllin.guru^ -||rosttraborago.com^ -||rosyfeeling.pro^ -||rosyruffian.com^ -||rotabol.com^ -||rotarb.bid^ -||rotarysporid.life^ -||rotate1t.com^ -||rotate4all.com^ -||rotateme.ru^ -||rotateportion.com^ -||rotchspiv.com^ -||rothermophony.com^ -||rotondagud.com^ -||rotondelibya.com^ -||rotumal.com^ -||rotundfetch.com^ -||roucoutaivers.com^ -||roudoduor.com^ -||rouduranter.com^ -||rougepromisedtenderly.com^ -||rough-requirement.pro^ -||rougharmless.com^ -||roughindoor.com^ -||roughseaside.com^ -||rouhavenever.com^ -||rouhaveneverse.info^ -||rouinfernapean.com^ -||roujonoa.net^ -||roukoopo.net^ -||roulediana.com^ -||rouloawhu.com^ -||roumachopa.com^ -||roumakie.com^ -||rouncepreyful.com^ -||round-highlight.pro^ -||rounddescribe.com^ -||roundflow.net^ -||roundlytrabal.cfd^ -||roundpush.com^ -||roundspaniardindefinitely.com^ -||rounsh.com^ -||rouonixon.com^ -||roupedaldea.com^ -||rousedaudacity.com^ -||roushath.xyz^ -||routeit.one^ -||routeme.one^ -||routemob.com^ -||routemomentarilydiscovering.com^ -||routerhydrula.com^ -||routes.name^ -||routeserve.info^ -||routierbefit.space^ -||routinecloudycrocodile.com^ -||routingcalyces.top^ -||rouvoute.net^ -||rouwhapt.com^ -||rovion.com^ -||rovno.xyz^ -||rowdyrope.pro^ -||rowingzipper.com^ -||rowlnk.com^ -||rowplates.com^ -||rowthsti.com^ -||roxasnxjruxnd.com^ -||roxby.org^ -||roxieguitars.com^ -||roxot-panel.com^ -||roxyaffiliates.com^ -||royalcactus.com^ -||royallycuprene.com^ -||royvdkxga.com^ -||rozamimo9za10.com^ -||rpawarcnm.com^ -||rpfytkt.com^ -||rpjbtni186w9.shop^ -||rpllrsbmhahj.com^ -||rpmwhoop.com^ -||rppumxa.com^ -||rprapjc.com^ -||rprinc6etodn9kunjiv.com^ -||rpsoybm.com^ -||rptdbyvychrfap.com^ -||rptmoczqsf.com^ -||rpts.org^ -||rpzbfftekjdz.com^ -||rqakljxbs.com^ -||rqazepammrl.com^ -||rqbugumvsprr.com^ -||rqctubqtcbgeug.com^ -||rqdcusltmryapg.com^ -||rqejawwqzawev.top^ -||rqfedjzveel.com^ -||rqhere.com^ -||rqnomljdot.xyz^ -||rqnvci.com^ -||rqtrk.eu^ -||rqwel.com^ -||rqwyrdwlaygwxkw.com^ -||rreauksofthecom.xyz^ -||rrhscsdlwufu.xyz^ -||rriodxsmyjk.com^ -||rrjnjnioxfbqaj.com^ -||rrmlejvyqebk.top^ -||rrnhilainbjii.com^ -||rrobbybvvbybj.top^ -||rrolqae.com^ -||rronsep.com^ -||rrqpajlyvtpqst.com^ -||rrqwarwbbwvyw.top^ -||rruvbtb.com^ -||rrvwvcgnsu.xyz^ -||rrwmyijgm.com^ -||rs-stripe.com^ -||rsalcau.com^ -||rsalcch.com^ -||rsalesrepresw.info^ -||rsaltsjt.com^ -||rscilx49h.com^ -||rsdoxzmhrjovcz.com^ -||rsfmzirxwg.com^ -||rsgouhlbhfl.com^ -||rsldfvt.com^ -||rsnjmocfenkewq.com^ -||rsthwwqhxef.xyz^ -||rswhowishedto.info^ -||rsxocgqnu.com^ -||rszimg.com^ -||rtb-media.me^ -||rtb.com.ru^ -||rtb1bid.com^ -||rtbadshubmy.com^ -||rtbadsmenetwork.com^ -||rtbadsmya.com^ -||rtbadsmylive.com^ -||rtbbnr.com^ -||rtbbnrdip.com^ -||rtbbpowaq.com^ -||rtbdnav.com^ -||rtbfit.com^ -||rtbfradhome.com^ -||rtbfradnow.com^ -||rtbget.com^ -||rtbinternet.com^ -||rtbix.com^ -||rtbix.xyz^ -||rtblmh.com^ -||rtbnowads.com^ -||rtbpop.com^ -||rtbpopd.com^ -||rtbrenab.com^ -||rtbrennab.com^ -||rtbstream.com^ -||rtbsuperhub.com^ -||rtbsystem.com^ -||rtbsystem.org^ -||rtbterra.com^ -||rtbtracking.com^ -||rtbtraffic.com^ -||rtbtrail.com^ -||rtbuqtue.com^ -||rtbwnvpdimr.com^ -||rtbxnmhub.com^ -||rtbxnmlive.com^ -||rtclx.com^ -||rtdqhjiqf.com^ -||rtfmakw.com^ -||rthmhocfdb.com^ -||rtk.io^ -||rtmark.net^ -||rtmladcenter.com^ -||rtmladnew.com^ -||rtncskottpfwb.com^ -||rtnews.pro^ -||rtoadlavcam.com^ -||rtorvhhdru.xyz^ -||rtoukfareputfe.info^ -||rtphit.com^ -||rtpnt.xyz^ -||rtqdgro.com^ -||rtrgt.com^ -||rtrgt2.com^ -||rtrhit.com^ -||rtty.in^ -||rtuew.xyz^ -||rtwdzxstpanmn.com^ -||rtxbdugpeumpmye.xyz^ -||rtxfeed.com^ -||rtxjvbqpr.com^ -||rtxrtb.com^ -||rtyfdsaaan.com^ -||rtylsixqrhqmou.com^ -||rtyufo.com^ -||rtyznd.com^ -||rtzblzfgzqw.com^ -||rtzbpsy.com^ -||ru6sapasgs8tror.com^ -||ruamupr.com^ -||rubatowooer.digital^ -||rubberdescendantfootprints.com^ -||rubbingwomb.com^ -||rubbishher.com^ -||rubestdealfinder.com^ -||rubiconproject.com^ -||rubyblu.com^ -||rubyforcedprovidence.com^ -||rubymillsnpro.com^ -||ruckingefs.com^ -||ruddy-option.pro^ -||ruddyred.pro^ -||rudemembership.pro^ -||rudimentarydelay.com^ -||ruefulauthorizedguarded.com^ -||ruefultest.com^ -||ruefuluphill.com^ -||rufadses.net^ -||rufflycouncil.com^ -||ruftodru.net^ -||rufwnrguipfep.com^ -||rugcrucial.com^ -||rugiomyh2vmr.com^ -||ruglhiahxam.com^ -||ruineddefectivecurb.com^ -||ruinedpenal.com^ -||ruinedpersonnel.com^ -||ruinedtolerance.com^ -||ruinjan.com^ -||ruinnorthern.com^ -||rukanw.com^ -||rukoval.com^ -||rulahglsnzsx.com^ -||rulovar.com^ -||rumimorigu.com^ -||rummagemason.com^ -||rummentaltheme.com^ -||rummilycavils.com^ -||rummletornese.com^ -||rummyaffiliates.com^ -||run-syndicate.com^ -||runadtag.com^ -||runative-syndicate.com^ -||runative.com^ -||runawayaccomplishment.com^ -||runawaycrayfishcosmetics.com^ -||runazmakqja.com^ -||runbornto.com^ -||runetki.co^ -||rungdefendantfluent.com^ -||rungoverjoyed.com^ -||runicforgecrafter.com^ -||runitechaute.top^ -||runmixed.com^ -||runnethfumier.top^ -||runningangular.com^ -||runningdestructioncleanliness.com^ -||runnyestablishment.pro^ -||runsclothingpig.com^ -||runtedforcut.com^ -||runtnc.net^ -||runwaff.com^ -||ruozukk.xyz^ -||ruptionverst.space^ -||rural-patience.com^ -||rural-report.pro^ -||rurber.com^ -||rurbie.com^ -||rurdauth.net^ -||rusenov.com^ -||rushoothulso.xyz^ -||rushpeeredlocate.com^ -||rushpushy.com^ -||russellseemslept.com^ -||russiangalacticcharming.com^ -||russianwithincheerleader.com^ -||russif.com^ -||rusticaula.com^ -||rusticsnoop.com^ -||rusticswollenbelonged.com^ -||rustlesimulator.com^ -||rustydeceasedwe.com^ -||rustypassportbarbecue.com^ -||rustyretails.com^ -||rustysauna.com^ -||rustytableclearance.com^ -||rustyurishoes.com^ -||ruswutjacko.guru^ -||rutatmosphericdetriment.com^ -||rutebuxe.xyz^ -||rutfadsziog.com^ -||ruthibsaik.com^ -||ruthlessawfully.com^ -||ruthproudlyquest.com^ -||ruthrequire.com^ -||ruthwoof.com^ -||rutpunishsnitch.com^ -||ruutjhlmv.com^ -||ruuwkftrtegqj.com^ -||ruwertur.com^ -||ruwfempxgwry.xyz^ -||ruwookri.xyz^ -||ruxgqemwywx.com^ -||ruykjvdtutselj.com^ -||ruzxzebrupa.com^ -||rvddfchkj.xyz^ -||rvetreyu.net^ -||rvibgboy.com^ -||rvioyjme.com^ -||rvltckxibcmlt.com^ -||rvmessages.top^ -||rvrpushserv.com^ -||rvrpushsrv.com^ -||rvshjxsbohimgb.com^ -||rvuoghivbylqlr.com^ -||rvwtwtidj.xyz^ -||rvxqnjsczubld.com^ -||rwated.com^ -||rweltlwphtkbd.com^ -||rwhgpxvoqfvv.com^ -||rwixkibchujwgh.com^ -||rwjqdbimphvg.com^ -||rwqovmoqmwrwq.top^ -||rwtdptjkhi.com^ -||rwtrack.xyz^ -||rwuannaxztux.com^ -||rwusvej.com^ -||rwwmbymwbzbea.top^ -||rwwoqcjefc.com^ -||rwxgorjgvcfirtx.com^ -||rwzzeivpakyxql.com^ -||rxeosevsso.com^ -||rxglvcowb.com^ -||rxgvwht.com^ -||rxtazhr.com^ -||rxtgbihqbs99.com^ -||rxthdr.com^ -||rxvej.com^ -||ryanfrqxjl.com^ -||ryauzo.xyz^ -||ryazabti.com^ -||rydpsqdsaja.com^ -||rydresa.info^ -||ryeffwlcleer.com^ -||ryeprior.com^ -||rykwyoaeaamhykw.com^ -||ryminos.com^ -||rypqxxsx.com^ -||ryqlbqdj.com^ -||ryremovement.com^ -||rysheatlengthanl.xyz^ -||rysjkulq.xyz^ -||ryvjgiyoxomii.com^ -||ryyyyjfrawo.com^ -||rzaxroziwozq.com^ -||rzkphskfifmo.com^ -||rzneekilff.com^ -||rzwhlgvzny.com^ -||rzyosrlajku.com^ -||rzzlhfx.com^ -||rzzqhhoim.com^ -||s-adzone.com^ -||s0cool.net^ -||s0q260-rtbix.top^ -||s19mediabq.com^ -||s1cta.com^ -||s1m4nohq.de^ -||s1t2uuenhsfs.com^ -||s20dh7e9dh.com^ -||s24hc8xzag.com^ -||s2blosh.com^ -||s2d6.com^ -||s2sterra.com^ -||s3g6.com^ -||s5ikadi.fun^ -||s7feh.top^ -||s83ovp6qyhco.com^ -||s99i.org^ -||sa.entireweb.com^ -||sa2m4buc5us.com^ -||sabercuacro.org^ -||sabergood.com^ -||sabianic.com^ -||sabotageharass.com^ -||sabotedrecedes.com^ -||sabredbegulf.top^ -||sabrinacaulked.com^ -||sackbarngroups.com^ -||sackeelroy.net^ -||sackerskips.com^ -||sacquebenzine.com^ -||sacredperpetratorbasketball.com^ -||sacrificeaffliction.com^ -||sacsshela.com^ -||sadbasindinner.com^ -||saddlecooperation.com^ -||sadjklq.com^ -||sadrettinnow.com^ -||sadsecs.com^ -||sadsoulo.net^ -||safarlysins.com^ -||safe-connection21.com^ -||safeart.pro^ -||safeattributeexcept.com^ -||safebrowsdv.com^ -||safeclatter.com^ -||safeconspiracy.com^ -||safeglimmerlongitude.com^ -||safeguardoperating.com^ -||safelinkconverter.com^ -||safelistextreme.com^ -||safelyaffirminexperienced.com^ -||safelyawake.com^ -||safenick.com^ -||safeporno.com^ -||safereboundmiracle.com^ -||safestcontentgate.com^ -||safestgatetocontent.com^ -||safestsniffingconfessed.com^ -||safesync.com^ -||safetytds.com^ -||safewarns.com^ -||saffiantaily.com^ -||saffianxenian.com^ -||safprotection.com^ -||safsdvc.com^ -||sagaciouslikedfireextinguisher.com^ -||sagaciouspredicatemajesty.com^ -||sagbutsbhotia.com^ -||sagearmamentthump.com^ -||sagedeportflorist.com^ -||saggrowledetc.com^ -||sagrew.com^ -||sagumnlx.com^ -||sahandkeightg.xyz^ -||saheckas.xyz^ -||sahiwaldisform.top^ -||saiceezu.xyz^ -||saikeela.net^ -||sailcovertend.com^ -||sailif.com^ -||sailingmineral.com^ -||sailorandmoist.com^ -||sailorlanceslap.com^ -||sailundu.xyz^ -||sainingnuggar.guru^ -||saintselfish.com^ -||saipeevit.net^ -||saipsoan.net^ -||saiwecee.com^ -||saiwhoal.xyz^ -||saiwhute.com^ -||sajewhee.xyz^ -||saktismberakes.space^ -||sakuftaurgo.com^ -||sakura-traffic.com^ -||salalromansh.com^ -||salamus1.lol^ -||salemcowbyre.com^ -||salepsthiever.digital^ -||sales1sales.com^ -||salesoonerfurnace.com^ -||salestingoner.org^ -||salicylurdee.com^ -||salivamenupremise.com^ -||salivanmobster.com^ -||salivasboucle.top^ -||salivatreatment.com^ -||salleeairings.life^ -||sallespaid.com^ -||salletspluvian.com^ -||sallyfundamental.com^ -||sallyoxenstops.com^ -||salmiacforked.top^ -||salolthins.top^ -||salshissed.com^ -||saltateblit.com^ -||saltcardiacprotective.com^ -||saltconfectionery.com^ -||salterstickie.com^ -||saltpairwoo.live^ -||saltsarchlyseem.com^ -||saltsupbrining.com^ -||salutationcheerlessdemote.com^ -||salutationpersecutewindows.com^ -||salvagefloat.com^ -||salvingrolls.com^ -||samage-bility.icu^ -||samealliedgunfire.com^ -||samepeqmz.com^ -||samghasps.com^ -||samhitareviser.com^ -||samogonmarvy.com^ -||sampalsyneatly.com^ -||samplecomfy.com^ -||samplehavingnonstop.com^ -||samplerenamed.com^ -||samplerpouch.com^ -||sampoang.xyz^ -||samsungads.com^ -||samvaulter.com^ -||samvinva.info^ -||sanableschuss.top^ -||sancontr.com^ -||sanctifylensimperfect.com^ -||sanctioncurtain.com^ -||sanctiontaste.com^ -||sanctuarylivestockcousins.com^ -||sanctuaryparticularly.com^ -||sandelf.com^ -||sandflyligules.com^ -||sandmakingsilver.info^ -||sandsonair.com^ -||sandtheircle.com^ -||sandwich3452.fun^ -||sandwichdeliveringswine.com^ -||sandyrecordingmeet.com^ -||sandysuspicions.com^ -||sanedfalsely.com^ -||sanfordcessor.space^ -||sangeiunzen.com^ -||sanggilregard.com^ -||sangogne.com^ -||sanitarysustain.com^ -||sanjay44.xyz^ -||sankaudacityrefine.com^ -||sankjerusalemflabbergasted.com^ -||sanseemp.com^ -||sanseislydite.com^ -||sansuni.xyz^ -||santonpardal.com^ -||santosattestation.com^ -||santoscologne.com^ -||santosfeltmanager.com^ -||santosmiddle.com^ -||santtacklingallaso.com^ -||sapfailedfelon.com^ -||sapfollower.com^ -||saplvvogahhc.xyz^ -||saptiledispatch.com^ -||saptorge.com^ -||saracsoxcpa.com^ -||sarcasmidentifiers.com^ -||sarcasticdismalconstrue.com^ -||sarcinedewlike.com^ -||sarcodrix.com^ -||sardaursaz.com^ -||sardineforgiven.com^ -||sardoindkm.top^ -||sargosvalgus.com^ -||sarinfalun.com^ -||sarinjowel.com^ -||sarrowgrivois.com^ -||sartolutus.com^ -||saryprocedentw.info^ -||sasinsetuid.com^ -||sasujooceerg.com^ -||saszar.com^ -||satelliteexaminer.com^ -||satientclypeus.com^ -||satinelicheny.com^ -||satireunhealthy.com^ -||satirevegetableshaw.com^ -||satisfaction399.fun^ -||satisfactionretirechatterbox.com^ -||satisfactorilyfigured.com^ -||satisfied-tour.pro^ -||satoripedary.com^ -||sattiewitter.top^ -||saturatecats.com^ -||saturatedrake.com^ -||saturdaygrownupneglect.com^ -||saturdaymarryspill.com^ -||saub27i3os.com^ -||saucebuttons.com^ -||sauceheirloom.com^ -||saugerarcate.top^ -||saulaupe.net^ -||saulttrailwaysi.info^ -||saumeechoa.com^ -||saunaentered.com^ -||saunamilitarymental.com^ -||saunasupposedly.com^ -||saunerema.net^ -||saupouni.xyz^ -||sauptoacoa.com^ -||sauptowhy.com^ -||saurajembe.top^ -||sauriaparpen.com^ -||sausagegirlieheartburn.com^ -||savableee.com^ -||savagelylizard.com^ -||savaurdy.net^ -||savefromad.net^ -||saveourspace.co^ -||savingshyleg.com^ -||savingsupervisorsalvage.com^ -||savinist.com^ -||saviourketonic.com^ -||savlzvstif.com^ -||savorydult.com^ -||savourethicalmercury.com^ -||savourmarinercomplex.com^ -||savouryadolescent.com^ -||savtvkdny.xyz^ -||savvcsj.com^ -||sawalinitwits.com^ -||sawanincreasein.info^ -||saweathercock.info^ -||sawfishdiapsid.com^ -||sawfluenttwine.com^ -||saworbpox.com^ -||sawpokw.com^ -||sawsdaggly.com^ -||saxophonefrontier.com^ -||saycaptain.com^ -||sayelo.xyz^ -||sayingconvicted.com^ -||sayingdentalinternal.com^ -||saylnk.com^ -||saystclowned.top^ -||sazute.uno^ -||sb-stat1.com^ -||sb4you1.com^ -||sb89347.com^ -||sbfsdvc.com^ -||sbhight.com^ -||sbonjqsxicqfo.xyz^ -||sbqptosht.com^ -||sbrakepads.com^ -||sbscribeme.com^ -||sbscrma.com^ -||sbseunl.com^ -||sbteafd.com^ -||sbvtrht.com^ -||sbxitxnmfxzyf.com^ -||sbxsdvwfabvx.com^ -||scaakxxobpp.com^ -||scabbienne.com^ -||scabtauter.uno^ -||scadsstar.com^ -||scadstech.com^ -||scaffoldconcentration.com^ -||scaffoldoppresshaphazard.com^ -||scaffoldsense.com^ -||scalenerequin.com^ -||scaleniwillowy.top^ -||scalesapologyprefix.com^ -||scalesfilamentmow.com^ -||scaleshustleprice.com^ -||scalesmothforget.com^ -||scalesreductionkilometre.com^ -||scalfkermes.com^ -||scalledzamia.com^ -||scallionfib.com^ -||scallionterrace.com^ -||scalliontrend.com^ -||scalpelvengeance.com^ -||scalpmarmotproclaim.com^ -||scalpworlds.com^ -||scamblefeedman.com^ -||scammereating.com^ -||scammersupreme.com^ -||scamperprepn.com^ -||scancemontes.com^ -||scandiaogamic.com^ -||scannersouth.com^ -||scanshrugged.com^ -||scantlyvedette.com^ -||scantsditt.top^ -||scantyjanitor.com^ -||scantyuncertainwilfrid.com^ -||scanunderstiff.com^ -||scanwasted.com^ -||scarabresearch.com^ -||scarcelyfebruarydice.com^ -||scarcelypat.com^ -||scarcemontleymontley.com^ -||scarcerpokomoo.com^ -||scardeviceduly.com^ -||scarecrowenhancements.com^ -||scared-respond.pro^ -||scaredcollector.com^ -||scaredplayful.com^ -||scaredpreparation.pro^ -||scarfcreed.com^ -||scaringposterknot.com^ -||scarletcashwi5.com^ -||scarnvesuvin.com^ -||scarofnght.com^ -||scarpeweevily.top^ -||scarwan.com^ -||scarymarine.com^ -||scashwl.com^ -||scatterdisagreeabledealer.com^ -||scavelbuntine.life^ -||scbvydod.xyz^ -||sccpnd.xyz^ -||scenbe.com^ -||scenerynatives.com^ -||scenescrockery.com^ -||scenespathreconciliation.com^ -||scenistgracy.life^ -||scentbracehardship.com^ -||scentedindication.com^ -||scentservers.com^ -||scepticalchurch.com^ -||scfsdvc.com^ -||schemeabsolutejanuary.com^ -||schizypdq.com^ -||schjmp.com^ -||scholarkeyboarddoom.com^ -||scholarsgrewsage.com^ -||scholarsquadronanoitmentanoitment.com^ -||schoolboyblinkclove.com^ -||schoolboyfingernail.com^ -||schoolmasterconveyedladies.com^ -||schoolnotwithstandingconfinement.com^ -||schoolunmoved.com^ -||schoonnonform.com^ -||schqydstxtsi.com^ -||sciadopi5tysverticil1lata.com^ -||sciencepoints.com^ -||scientific-doubt.com^ -||scientificdimly.com^ -||scientificsinner.com^ -||scientistgrowl.com^ -||scillathemons.com^ -||scipnd.xyz^ -||scisselfungus.com^ -||scissorsaccordancedreamt.com^ -||scissorsstitchdegrade.com^ -||scissorwailed.com^ -||scjhnjvlyd.com^ -||scl6gc5l.site^ -||sclerasliflod.top^ -||sclimbwidower.top^ -||sclrnnp.com^ -||scnd-tr.com^ -||scobbypseudo.guru^ -||scoggerashrams.com^ -||sconceszeugite.com^ -||sconvtrk.com^ -||scoopauthority.com^ -||scoopmaria.com^ -||scootcomely.com^ -||scootermonkmortify.com^ -||scopefile.com^ -||score-feed.com^ -||scoreasleepbother.com^ -||scoredconnect.com^ -||scoreheadingbabysitting.com^ -||scorklegucki.com^ -||scornfulabsorbploy.com^ -||scornphiladelphiacarla.com^ -||scotianosed290noelind.com^ -||scotsmaut.top^ -||scousepneuma.com^ -||scowmantubba.cfd^ -||scowpoppanasals.com^ -||scptp1.com^ -||scptpx.com^ -||scpxth.xyz^ -||scrambleocean.com^ -||scrapebust.com^ -||scrapembarkarms.com^ -||scratchconsonant.com^ -||scrawmthirds.com^ -||scrawny-pipe.com^ -||scrawnyarticle.pro^ -||scrazeunwaged.com^ -||screechadulthood.com^ -||screechcompany.com^ -||screechdonationshowed.com^ -||screenov.site^ -||scribalfiasco.com^ -||scribblemidday.com^ -||scriptcdn.net^ -||scriptvealpatronage.com^ -||scrollisolation.com^ -||scrollye.com^ -||scrtbhmtmplg.xyz^ -||scrubheiress.com^ -||scruboutdoorsoffensive.com^ -||scruis.com^ -||sctxdmdf.com^ -||scubaenterdane.com^ -||scuddedsisals.com^ -||scuddydecrial.digital^ -||scufflebarefootedstrew.com^ -||scullerropeman.digital^ -||sculptorpound.com^ -||sculpturelooking.com^ -||scutesneatest.com^ -||scwawseh.com^ -||scxurii.com^ -||scyecacked.top^ -||scythealready.com^ -||scythesandwiches.com^ -||sda.seesaa.jp^ -||sda.seksohub.com^ -||sdasasyydd.com^ -||sdbrrrr.lat^ -||sdbvveonb1.com^ -||sddan.com^ -||sdeiqmltglx.com^ -||sdfsdvc.com^ -||sdg.desihamster.pro^ -||sdg.fwtrck.com^ -||sdhfbvd.com^ -||sdhiltewasvery.info^ -||sdhltncfqbu.com^ -||sdjqhxmg.com^ -||sdkfjxjertertry.com^ -||sdkl.info^ -||sdmfyqkghzedvx.com^ -||sdwbmqqluxiu.com^ -||sdxtxvq.com^ -||seaboblit.com^ -||seafoodclickwaited.com^ -||seafooddiscouragelavishness.com^ -||seafoodoutpipe.digital^ -||seafoodrunnersablative.com^ -||sealeryshilpit.com^ -||sealerysuppler.com^ -||sealinstalment.com^ -||sealkiebannets.top^ -||sealthatleak.com^ -||seamankidding.com^ -||seamanphaseoverhear.com^ -||seamantiffy.top^ -||seamsuddenbanish.com^ -||seanfoisons.top^ -||seaofads.com^ -||seapolo.com^ -||search-converter.com^ -||search4sports.com^ -||searchcoveragepoliteness.com^ -||searchdatestoday.com^ -||searchenhancements.com^ -||searchgear.pro^ -||searchmulty.com^ -||searchrespectivelypotency.com^ -||searchsecurer.com^ -||seashorelikelihoodreasonably.com^ -||seashoremessy.com^ -||seashorepigeonsbanish.com^ -||seasickbittenprestigious.com^ -||seasslinger.guru^ -||seatedparanoiaenslave.com^ -||seatsrehearseinitial.com^ -||seaweedswanboats.com^ -||seayipsex.com^ -||sebateastrier.com^ -||sebeewho.xyz^ -||sebkhapaction.com^ -||secclhkiuj.com^ -||secezo.uno^ -||secludealcoholoverwhelm.com^ -||secludechurch.com^ -||secondaryabjure.com^ -||secondcommander.com^ -||secondlytorch.com^ -||secondlyundone.com^ -||secondquaver.com^ -||secondunderminecalm.com^ -||secprf.com^ -||secretionforbearace.com^ -||secretiongrin.com^ -||sectarynylghai.com^ -||secthatlead.com^ -||sectsenior.com^ -||secure.securitetotale.fr^ -||secureaddisplay.com^ -||secureclickers.com^ -||securecloud-dt.com^ -||securecloud-smart.com^ -||secureclouddt-cd.com^ -||secureconv-dl.com^ -||securedcdn.com^ -||securedvisit.com^ -||securegate.xyz^ -||securegate9.com^ -||securegfm.com^ -||secureleadsforever.com^ -||secureleadsrn.com^ -||securely-send.com^ -||securemoney.ru^ -||securenetguardian.top^ -||securescoundrel.com^ -||securesmrt-dt.com^ -||securesurf.biz^ -||sedarimundated.top^ -||sedatecompulsiveout.com^ -||sedatenerves.com^ -||sedatingnews.com^ -||sedodna.com^ -||seducingtemporarily.com^ -||seeablywitness.com^ -||seebait.com^ -||seebecknighed.guru^ -||seedconsistedcheerful.com^ -||seedlingneurotic.com^ -||seedlingpenknifecambridge.com^ -||seedoupo.com^ -||seegamezpicks.info^ -||seegraufah.com^ -||seehaucu.net^ -||seekmymatch.com^ -||seekoflol.com^ -||seemingverticallyheartbreak.com^ -||seemoraldisobey.com^ -||seemreflexdisable.com^ -||seemyresume.org^ -||seeptoag.net^ -||seethisinaction.com^ -||seetron.net^ -||seewhatmyou.com^ -||sefsdvc.com^ -||sefulheadde.info^ -||segmentcoax.com^ -||segrbdscumdk.com^ -||segrea.com^ -||segreencolumn.com^ -||seibertspart.com^ -||seisorreem.com^ -||seisorspinkies.space^ -||seitypascola.com^ -||seizecrashsophia.com^ -||seizedlusciousextended.com^ -||seizedpenholdercranny.com^ -||seizefortunesdefiant.com^ -||seizeshoot.com^ -||seizuretraumatize.com^ -||sekindo.com^ -||sel-sel-fie.com^ -||seldomsevereforgetful.com^ -||selectdisgraceful.com^ -||selectdissert.guru^ -||selectedhoarfrost.com^ -||selectedunrealsatire.com^ -||selectioncarnivalrig.com^ -||selectr.net^ -||selectthrow.com^ -||selecttopoff.com^ -||selfassuredcriticism.pro^ -||selfemployedbalconycane.com^ -||selfemployedreservoir.com^ -||selfevidentvisual.com^ -||selfishfactor.com^ -||selfportraitpardonwishes.com^ -||selfpua.com^ -||selfpuc.com^ -||selfswayjay.com^ -||sellbleatregistry.com^ -||sellerignateignate.com^ -||sellingmombookstore.com^ -||sellingtandays.com^ -||sellisteatin.com^ -||selornews.com^ -||selunemtr.online^ -||selwrite.com^ -||semblanceafford.com^ -||semblanceindulgebellamy.com^ -||semicircledata.com^ -||semicolondeterminationfaded.com^ -||semicolonrichsieve.com^ -||semicolonsmall.com^ -||semidapt.com^ -||semiinfest.com^ -||seminarcrackingconclude.com^ -||seminarentirely.com^ -||semqraso.net^ -||semsicou.net^ -||semwtaanx.xyz^ -||senagegrasper.com^ -||senatescouttax.com^ -||sendmepush.com^ -||senecaanoles.com^ -||seniorstemsdisability.com^ -||sennaalopeke.top^ -||senonsiatinus.com^ -||sensationnominatereflect.com^ -||sensefifth.com^ -||sensifyfugged.com^ -||sensiledivider.top^ -||sensitivenessvalleyparasol.com^ -||sensorpluck.com^ -||sensualsheilas.com^ -||sensualtestresume.com^ -||sentativesathya.info^ -||sentbarn.com^ -||sentdysfunctional.com^ -||sentencefigurederide.com^ -||sentenceinformedveil.com^ -||sentientfog.com^ -||sentimentalclient.pro^ -||sentimentsvarious.com^ -||sentinelp.com^ -||seo-overview.com^ -||separashparyro.info^ -||separatecolonist.com^ -||separatelyweeping.com^ -||separatepattern.pro^ -||separationalphabet.com^ -||separationharmgreatest.com^ -||separationheadlight.com^ -||separationreverttap.com^ -||sepianshap.com^ -||sepstough.com^ -||septemberautomobile.com^ -||septfd2em64eber.com^ -||septierpotrack.com^ -||sepulttrocha.com^ -||sequelswosbird.com^ -||sequencestairwellseller.com^ -||seraglisneak.top^ -||serch26.biz^ -||serconmp.com^ -||serdaive.com^ -||sereanstanza.com^ -||serfdivia.com^ -||sergeantmediocre.com^ -||sergeantunhealthy.com^ -||sergerbearing.top^ -||serialembezzlementlouisa.com^ -||serialwarning.com^ -||serifgorry.top^ -||serinuswelling.com^ -||seriouslygesture.com^ -||seriy2sviter11o9.com^ -||sermonbakery.com^ -||sermonoccupied.com^ -||serpentineillegal.pro^ -||serpentreplica.com^ -||serraeepoist.com^ -||serumlisp.com^ -||serv-selectmedia.com^ -||serv01001.xyz^ -||serv1for.pro^ -||servantheadingferal.com^ -||servboost.tech^ -||serve-rtb.com^ -||serve-servee.com^ -||servedbyadbutler.com^ -||servedbysmart.com^ -||serveforthwithtill.com^ -||servehub.info^ -||servenobid.com^ -||server4ads.com^ -||serverbid.com^ -||servereplacementcycle.com^ -||serverfritterdisability.com^ -||serversmatrixaggregation.com^ -||serversoursmiling.com^ -||serverssignshigher.com^ -||servetag.com^ -||servetean.site^ -||servetraff.com^ -||servg1.net^ -||servh.net^ -||servicegetbook.net^ -||servicesrc.org^ -||servicetechtracker.com^ -||serving-sys.com^ -||servingcdn.net^ -||servinghandy.com^ -||servingserved.com^ -||servingsurroundworldwide.com^ -||servtraff97.com^ -||servw.bid^ -||sesameebookspeedy.com^ -||sesamefiddlesticks.com^ -||sessfetchio.com^ -||sessionamateur.com^ -||seteamsobtantion.com^ -||sethiteblindly.guru^ -||setidlgzwc.com^ -||setitoefanyor.org^ -||setopsdata.com^ -||setsdowntown.com^ -||settledchagrinpass.com^ -||settlepineapple.com^ -||settrogens.com^ -||setupdeliveredteapot.com^ -||setupslum.com^ -||seullocogimmous.com^ -||sev4ifmxa.com^ -||seveelumus.com^ -||sevendaystart.com^ -||sevenedgesteve.com^ -||sevenerraticpulse.com^ -||sevenpronounced.com^ -||seventybrush.com^ -||severaljack.com^ -||severalmefa.org^ -||severelyexemplar.com^ -||severelywrittenapex.com^ -||sevierxx.com^ -||sevokop.com^ -||sewersneaky.com^ -||sewerysinglet.com^ -||sewingunrulyshriek.com^ -||sewmcqkulwxmrx.com^ -||sewmerecontaining.com^ -||sewussoo.xyz^ -||sex-and-flirt.com^ -||sex-chat.me^ -||sexbuggishbecome.info^ -||sexclic.com^ -||sexdatingsite.pro^ -||sexfg.com^ -||sexmoney.com^ -||sexpieasure.com^ -||sextf.com^ -||sextubeweb.com^ -||sexuallyminus.com^ -||sexualpitfall.com^ -||sexy-sluts.org^ -||sexyadsrun.com^ -||sexyepc.com^ -||seynatcreative.com^ -||sf-ads.io^ -||sfafabztidi.com^ -||sfaxnqia.com^ -||sfcfssgbrhnsb.com^ -||sffsdvc.com^ -||sfixretarum.com^ -||sfnfpddbql.com^ -||sforourcompa.org^ -||sfrujefjswrn.xyz^ -||sftapi.com^ -||sfuoasztfxr.com^ -||sfxjgafgs.com^ -||sgad.site^ -||sgeujrpxuqyzqd.com^ -||sgfdfikdguqdkv.com^ -||sgfsdvc.com^ -||sgftrrs.com^ -||sgihava.com^ -||sgnetwork.co^ -||sgnvuowhv.com^ -||sgpuijidjc.com^ -||sgrawwa.com^ -||sgunqfpjtxfndtt.com^ -||sgvdqykfjuk.com^ -||sgwsqcyhxkb.com^ -||sgzhg.pornlovo.co^ -||sh0w-me-h0w.net^ -||sh0w-me-how.com^ -||shabaiks.com^ -||shabsaco.net^ -||shackapple.com^ -||shackdialectsense.com^ -||shadeapologies.com^ -||shaderadioactivepoisonous.com^ -||shadesentimentssquint.com^ -||shadesincreasingcontents.com^ -||shady-addition.com^ -||shadybenefitpassed.com^ -||shadyobscene.com^ -||shadytourdisgusted.com^ -||shaeian.xyz^ -||shaftheadstonetopmost.com^ -||shaggyaleswede.com^ -||shahebso.com^ -||shahr-kyd.com^ -||shahsseemers.com^ -||shaickox.com^ -||shaidolt.com^ -||shaihucmesa.com^ -||shailreeb.com^ -||shaimsaijels.com^ -||shaimsoo.net^ -||shaingempee.com^ -||shainsie.com^ -||shairdrabitic.top^ -||shaisole.com^ -||shaitchergu.net^ -||shakamech.com^ -||shakre.com^ -||shakydeploylofty.com^ -||shakywinningcarnival.com^ -||shallarchbishop.com^ -||shallotuncord.com^ -||shallowtwist.pro^ -||shalomitll.top^ -||shalse.com^ -||shameful-leader.com^ -||shameless-sentence.pro^ -||shamelesscry.pro^ -||shamelessgoodwill.com^ -||shamelessnullneutrality.com^ -||shamelesspersonality.pro^ -||shamepracticegloomily.com^ -||shammesbyssin.top^ -||shamosmatic.com^ -||shanaurg.net^ -||shankarsackage.top^ -||shanorin.com^ -||shapedhomicidalalbert.com^ -||shapelcounset.xyz^ -||shapezayin.com^ -||share-server.com^ -||sharecash.org^ -||sharedmarriage.com^ -||sharegods.com^ -||shareitpp.com^ -||shareresults.com^ -||sharesceral.uno^ -||shareusads.com^ -||shareweeknews.com^ -||sharieta.com^ -||sharion.xyz^ -||sharkbleed.com^ -||sharkflowing.com^ -||sharpofferlinks.com^ -||sharpphysicallyupcoming.com^ -||sharpwavedreinforce.com^ -||shartems.com^ -||shasogna.com^ -||shatoawussoo.com^ -||shatterconceal.com^ -||shaufoal.com^ -||shaugacakro.net^ -||shauhacm.net^ -||shauksug.com^ -||shauladubhe.top^ -||shaulauhuck.com^ -||shaumpem.com^ -||shaumtol.com^ -||shaursar.net^ -||shauxeel.com^ -||shavecleanupsedate.com^ -||shavetulip.com^ -||shavopsi.xyz^ -||shawashygy.com^ -||shawljeans.com^ -||shazauds.net^ -||shdegtbokshipns.xyz^ -||she-want-fuck.com^ -||shealapish.com^ -||sheardirectly.com^ -||shearobserve.com^ -||sheedsoh.com^ -||sheefursoz.com^ -||sheegiwo.com^ -||sheemaus.net^ -||sheenaup.net^ -||sheeptie.xyz^ -||sheerdaulpusher.com^ -||sheerliteracyquestioning.com^ -||sheeroop.com^ -||sheertep.net^ -||sheethoneymoon.com^ -||sheetvibe.com^ -||sheewoamsaun.com^ -||shegheet.com^ -||shehikj.com^ -||shelfoka.com^ -||shellypartile.com^ -||sheltermilligrammillions.com^ -||shemalesofhentai.com^ -||shenouth.com^ -||shenzo.xyz^ -||shepeekr.net^ -||shepherdalmightyretaliate.com^ -||shepsubsitha.com^ -||sherryfaithfulhiring.com^ -||sheschemetraitor.com^ -||shesseet.com^ -||shexawhy.net^ -||shfewojrmxpy.xyz^ -||shfsdvc.com^ -||shhbrjs.com^ -||shhchack.digital^ -||shhxyebbvy.com^ -||shiaflsteaw.com^ -||shidn.com^ -||shieldbarbecueconcession.com^ -||shieldof5adam.com^ -||shieldspecificationedible.com^ -||shiepvfjd.xyz^ -||shiftclang.com^ -||shifthare.com^ -||shiftwholly.com^ -||shijoorg.xyz^ -||shikmousy.com^ -||shikroux.net^ -||shimmering-novel.pro^ -||shimmering-strike.pro^ -||shimmeringconcert.com^ -||shinasi.info^ -||shindyhygienic.com^ -||shindystubble.com^ -||shinebliss.com^ -||shineinternalindolent.com^ -||shinep.xyz^ -||shinglelatitude.com^ -||shinyspiesyou.com^ -||shippingswimsuitflog.com^ -||shipseaimpish.com^ -||shipsmotorw.xyz^ -||shirtclumsy.com^ -||shitcustody.com^ -||shitucka.net^ -||shivateicher.com^ -||shiverdepartmentclinging.com^ -||shiverrenting.com^ -||shmoesunbow.top^ -||shoabibs.xyz^ -||shoabsie.xyz^ -||shoadseelry.com^ -||shoageep.com^ -||shoagooy.net^ -||shoaltor.com^ -||shockadviceinsult.com^ -||shocked-failure.com^ -||shockedfoxed.top^ -||shocking-design.pro^ -||shocking-profile.pro^ -||shockingrobes.com^ -||shockingstrategynovelty.com^ -||shodaisy.com^ -||shoeingneurone.com^ -||shoessaucepaninvoke.com^ -||shokala.com^ -||sholke.com^ -||shomsouw.xyz^ -||shonetimegenetic.com^ -||shonetransmittedfaces.com^ -||shonevegetable.com^ -||shonooch.xyz^ -||shoojouh.xyz^ -||shookssuluan.com^ -||shoonlobbing.top^ -||shoop4.com^ -||shoopsee.net^ -||shoopusahealth.com^ -||shoordaird.com^ -||shooshengu.com^ -||shootbayonet.com^ -||shooterconsultationcart.com^ -||shootereosins.com^ -||shootingsuspicionsinborn.com^ -||shootoax.com^ -||shootsax.xyz^ -||shopboxshopping.com^ -||shopfulaments.com^ -||shopliftingrung.com^ -||shopmonthtravel.com^ -||shoppinglifestyle.biz^ -||shopuniteclosing.com^ -||shorantonto.com^ -||shoreaencowl.top^ -||shoresmmrnews.com^ -||shorlmodish.top^ -||shortagefollows.com^ -||shortagesymptom.com^ -||shortcuteffort.com^ -||shorteh.com^ -||shortesthandshakeemerged.com^ -||shortesthotel.com^ -||shortfailshared.com^ -||shorthandsixpencemap.com^ -||shortlyrecyclerelinquish.com^ -||shortssibilantcrept.com^ -||shostobs.net^ -||shotdynastyimpetuous.com^ -||shouback.com^ -||shoubsee.net^ -||shouldmeditate.com^ -||shouldscornful.com^ -||shoutgeological.com^ -||shouthisoult.com^ -||shoutimmortalfluctuate.com^ -||shoututtersir.com^ -||shovedhannah.com^ -||shovedrailwaynurse.com^ -||show-me-how.net^ -||show-review.com^ -||showcasethat.com^ -||showdominosite.top^ -||showdoyoukno.info^ -||showedinburgh.com^ -||showedprovisional.com^ -||showerymartial.com^ -||showkhussak.com^ -||showmebars.com^ -||showndistort.com^ -||shprkdnogwqx.com^ -||shrapimplume.top^ -||shredassortmentmood.com^ -||shredhundredth.com^ -||shredparsleydefend.com^ -||shredvealdone.com^ -||shriekdestitute.com^ -||shrillbighearted.com^ -||shrillcherriesinstant.com^ -||shrillinstance.pro^ -||shrillwife.pro^ -||shrillyfinland.com^ -||shrimpexclusive.com^ -||shrimpgenerator.com^ -||shrinebroom.com^ -||shrinersstor.com^ -||shriteringle.digital^ -||shrivelhorizonentrust.com^ -||shriverrevery.com^ -||shrojxouelny.xyz^ -||shroudsacidite.com^ -||shrovyrebuke.com^ -||shrubjessamy.com^ -||shrubsbelieve.com^ -||shrubsnaturalintense.com^ -||shrugartisticelder.com^ -||shruggedhighwaydetached.com^ -||shrweea.lat^ -||shticksconturb.com^ -||shticksyahuna.com^ -||shubadubadlskjfkf.com^ -||shudderconnecting.com^ -||shudderloverparties.com^ -||shughaxiw.com^ -||shuglaursech.com^ -||shugnais.net^ -||shugraithou.com^ -||shukriya90.com^ -||shulugoo.net^ -||shumsooz.net^ -||shunparagraphdim.com^ -||shunsbedelve.top^ -||shurfhlba.com^ -||shusacem.net^ -||shutdownpious.com^ -||shutesaroph.com^ -||shuthootch.com^ -||shuttersurveyednaive.com^ -||shuttleprivileged.com^ -||shutunga.com^ -||shvnfhf.com^ -||shweflix.com^ -||shwomettleye.com^ -||shydastidu.com^ -||si1ef.com^ -||sibcjyml.com^ -||siberiabecrush.com^ -||sibgycqzgj.com^ -||siblastid.top^ -||sibylsported.com^ -||siccanesculin.top^ -||sicklybates.com^ -||sicknessfestivity.com^ -||sickoaji.com^ -||sicleclarets.com^ -||sicouthautso.net^ -||sidanarchy.net^ -||sidebyx.com^ -||sidebyz.com^ -||sidegeographycondole.com^ -||sidelinebodypun.com^ -||sidenoteinvolvingcranky.com^ -||sidenotestarts.com^ -||sidesukbeing.org^ -||sidewalkcrazinesscleaning.com^ -||sidewayfrosty.com^ -||sidewaysuccession.com^ -||sierradissolved.com^ -||sierrasectormacaroni.com^ -||sieveallegeministry.com^ -||sievynaw.space^ -||sifenews.com^ -||sifnyiolzcs.com^ -||siftdivorced.com^ -||sifuglie.com^ -||sigheemibod.xyz^ -||sighstab.com^ -||sightercanidae.com^ -||sightsskinnyintensive.com^ -||sightyiambs.com^ -||sigilsspeiss.com^ -||signalassure.com^ -||signalsparfum.uno^ -||signalspotsharshly.com^ -||signalsuedejolly.com^ -||signatureoutskirts.com^ -||significantnuisance.com^ -||significantoperativeclearance.com^ -||signingdebauchunpack.com^ -||signingrechaos.top^ -||signingtherebyjeopardize.com^ -||sihokpfbv.com^ -||siiwptfum.xyz^ -||sikaza.com^ -||sikimischultz.website^ -||silebu.xyz^ -||silenceblindness.com^ -||silentinevitable.com^ -||silklanguish.com^ -||silkstuck.com^ -||silkyslyness.life^ -||silkytitle.com^ -||sillagoalgae.website^ -||silldisappoint.com^ -||sillinessglamorousservices.com^ -||sillinessinterfere.com^ -||sillinessmarshal.com^ -||sillinessowner.com^ -||sillinesssomemended.com^ -||sillyflowermachine.com^ -||silsautsacmo.com^ -||silver-pen.pro^ -||silveraddition.pro^ -||simarsbisect.top^ -||similarlength.pro^ -||similarlyrelicrecovery.com^ -||similarmarriage.com^ -||simiousfinfish.uno^ -||simkindisyoke.space^ -||simpan.online^ -||simple-isl.com^ -||simplebrutedigestive.com^ -||simplemidday.com^ -||simplewebanalysis.com^ -||simpliftsbefore.xyz^ -||simplistic-king.pro^ -||simplisticwhole.pro^ -||simplymiraculousurn.com^ -||simplyscepticaltoad.com^ -||simpunok.com^ -||simuld.com^ -||sinatraworthy.uno^ -||sincalled.com^ -||sincenturypro.org^ -||sincerelyseverelyminimum.com^ -||sindatontherrom.com^ -||sinewsicklywatery.com^ -||sing-tracker.com^ -||singelstodate.com^ -||singercordial.com^ -||singerrespectfuljerk.com^ -||singershortestmodule.com^ -||singfrthemmnt.com^ -||singledsnugged.space^ -||singlesgetmatched.com^ -||singlesternlyshabby.com^ -||singletpharo.top^ -||singstout.com^ -||singulardisplace.com^ -||singularheroic.com^ -||sinisterbatchoddly.com^ -||sinisterdrops.com^ -||sinkagepandit.com^ -||sinkboxphantic.com^ -||sinkdescriptivepops.com^ -||sinkfaster.com^ -||sinkingspicydemure.com^ -||sinkingswap.com^ -||sinlovewiththemo.info^ -||sinmufar.com^ -||sinnerobtrusive.com^ -||sinnerscramp.top^ -||sinproductors.org^ -||sinsigabetaken.top^ -||sinsoftoaco.net^ -||sinwebads.com^ -||sipibowartern.com^ -||sippansy.com^ -||sirdushi.xyz^ -||siredgynics.com^ -||siredonlacs.com^ -||sirepisode.com^ -||siresouthernpastime.com^ -||siressdrawly.com^ -||sireundermineoperative.com^ -||sirianlucet.digital^ -||sirloinspicous.com^ -||sirmianow.top^ -||sirossvanish.uno^ -||sisewepod.com^ -||sismoycheii.cc^ -||sissum.com^ -||sistercashmerebless.com^ -||sisterexpendabsolve.com^ -||sisterlockup.com^ -||siszzonelzzcy.com^ -||sitabsorb.com^ -||sitamedal2.online^ -||sitamedal3.online^ -||sitamedal4.online^ -||siteforyou1d.com^ -||sitegoto.com^ -||sitemnk.com^ -||siteoid.com^ -||sitesdesbloqueados.com^ -||sitewithg.com^ -||sitiopteryla.top^ -||sittingtransformation.com^ -||situatedconventionalveto.com^ -||situationfondlehindsight.com^ -||situationhostilitymemorable.com^ -||situbathool.com^ -||siumssoftish.com^ -||sivaiteupfeed.com^ -||siversbesomer.space^ -||sixassertive.com^ -||sixcombatberries.com^ -||sixft-apart.com^ -||sixingmudland.top^ -||siyaukq.com^ -||sizqaxmiqa.com^ -||sjczzdfvd.com^ -||sjevdjqhdmlelo.com^ -||sjjaewodpexdcyf.com^ -||sjkekxjkca.com^ -||sjkzeivw.com^ -||sjmbwxnqz.com^ -||sjolcdkqwiybh.xyz^ -||sjsabb.com^ -||sjtactic.com^ -||sjtbhdeakgsgr.com^ -||sjteyeztnf.com^ -||skated.co^ -||skatestooped.com^ -||skatingbelonged.com^ -||skatingpenitence.com^ -||skatingperformanceproblems.com^ -||skatistlollard.com^ -||skawwebless.com^ -||skdzxqc.com^ -||skeetads.com^ -||skeletondeceiveprise.com^ -||skeletonemail.com^ -||skeletonlimitation.com^ -||skellbimah.top^ -||skelpedwiney.website^ -||skenaiaefaldy.com^ -||skenedomains.digital^ -||sketbhang.guru^ -||sketchdroughtregional.com^ -||sketchflutter.com^ -||sketchinferiorunits.com^ -||sketchyrecycleimpose.com^ -||sketchystairwell.com^ -||skfudf763-dsfew95-90fjksj.xyz^ -||skiddyteapots.com^ -||skidgleambrand.com^ -||skierastonishedforensics.com^ -||skierscarletconsensus.com^ -||skiguggn.com^ -||skiingclefts.life^ -||skiingsettling.com^ -||skiingwights.com^ -||skilfuljealousygeoffrey.com^ -||skilfulrussian.com^ -||skilleadservices.com^ -||skilledskillemergency.com^ -||skilledtables.com^ -||skilleservices.com^ -||skilletperonei.com^ -||skillpropulsion.com^ -||skilyake.net^ -||skimgrieved.uno^ -||skimmemorandum.com^ -||skimwhiskersmakeup.com^ -||skinkerjeez.com^ -||skinnedunsame.com^ -||skinnynovembertackle.com^ -||skinssailing.com^ -||skiofficerdemote.com^ -||skipdearbeautify.com^ -||skipdissatisfactionengland.com^ -||skipperx.net^ -||skirmishbabencircle.com^ -||skirretporail.digital^ -||skirtimprobable.com^ -||skittyan.com^ -||skivesdaggles.com^ -||skivingepileny.top^ -||skjwebmr.com^ -||sklsnpqr.com^ -||skohssc.cfd^ -||skolvortex.com^ -||skuligpzifan.com^ -||skulkspreppie.com^ -||skulldesperatelytransfer.com^ -||skullhalfway.com^ -||skumcobpink.com^ -||skwfupp.com^ -||skygtbwownln.xyz^ -||skymobi.agency^ -||skyscraperearnings.com^ -||skyscraperreport.com^ -||skytraf.xyz^ -||skywaverocs.space^ -||slabreasonablyportions.com^ -||slabshookwasted.com^ -||slahpxqb6wto.com^ -||slakiervolost.com^ -||slamscreechmilestone.com^ -||slamvolcano.com^ -||slanderconstantlyhew.com^ -||slandernetgymnasium.com^ -||slanderpe.com^ -||slaneo.com^ -||slangback.com^ -||slangborrowedsquash.com^ -||slanginsolentthus.com^ -||slangscornful.com^ -||slankleeways.com^ -||slantdecline.com^ -||slapclergymoth.com^ -||slapexcitedly.com^ -||slaqandsan.xyz^ -||slaresolidi.com^ -||slartsighter.com^ -||slartwomans.com^ -||slashcynical.com^ -||slashstar.net^ -||slatnea.com^ -||slatternorito.top^ -||slaughterscholaroblique.com^ -||slaverylavatoryecho.com^ -||slavesubmarinebribery.com^ -||slavil.com^ -||slayeyeshadow.com^ -||slcsfrji.xyz^ -||sleazysoundbegins.com^ -||sledimitationsegment.com^ -||sledsplenism.com^ -||sleekemblemenclose.com^ -||sleekextremeadmiring.com^ -||sleepytoadfrosty.com^ -||sleeveturbulent.com^ -||slendercosts.com^ -||slenderglowingcontrary.com^ -||sleptbereave.com^ -||sleptornament.com^ -||slfsmf.com^ -||slfznewdii.com^ -||slggskljoczt.com^ -||slicedpickles.com^ -||slickgrapes.com^ -||slidbecauseemerald.com^ -||sliddeceived.com^ -||slidderpicoid.com^ -||slideaspen.com^ -||slidecaffeinecrown.com^ -||slideff.com^ -||slidekidsstair.com^ -||slietap.com^ -||slightcareconditions.com^ -||slightlyeaglepenny.com^ -||slimelump.com^ -||slimentrepreneur.com^ -||slimfiftywoo.com^ -||slimlyeneas.com^ -||slimytree.com^ -||slinkyfoliot.com^ -||slippersappointed.com^ -||slippersphoto.com^ -||slipperspinchingsyntax.com^ -||slippery-bed.pro^ -||slipperydeliverance.com^ -||slipperyel.com^ -||slivmux.com^ -||sljvpjtavn.com^ -||slobgrandmadryer.com^ -||sloeri.com^ -||slopeac.com^ -||slopingunrein.com^ -||sloppyegotistical.com^ -||sloto.live^ -||slotspreadingbrandy.com^ -||slowclick.top^ -||slowdn.net^ -||slowinghardboiled.com^ -||slowingvile.com^ -||slowlythrobtreasurer.com^ -||slowundergroundattentive.com^ -||slowww.xyz^ -||sloydcostive.top^ -||sloydpev.com^ -||slpmcfdljsntwp.com^ -||sltracl.com^ -||sltraffic.com^ -||sltvhyjthx.com^ -||slubbermunch.com^ -||sluccju.com^ -||sluiceagrarianvigorous.com^ -||sluicehamate.com^ -||slumberloandefine.com^ -||slumdombigot.top^ -||slumid.com^ -||slumpyclueing.com^ -||slurpsbeets.com^ -||slushdevastating.com^ -||slushimplementedsystems.com^ -||sluxaaiabw.com^ -||slvlrcalpodewn.com^ -||slwkrruv.com^ -||slychicks.com^ -||slyzoologicalpending.com^ -||smaato.net^ -||smachnakittchen.com^ -||smadex.com^ -||smalh.com^ -||small-headed.sbs^ -||smallanybody.pro^ -||smallerconceivesixty.com^ -||smallerfords.com^ -||smallestbiological.com^ -||smallestgirlfriend.com^ -||smallestspoutmuffled.com^ -||smallestunrealilliterate.com^ -||smallfunnybears.com^ -||smallstrengthen.com^ -||smalltiberbridge.com^ -||smart-wp.com^ -||smartadserver.com^ -||smartapplifly.com^ -||smartappsfly.com^ -||smartdating.top^ -||smartlnk.com^ -||smartlphost.com^ -||smartlymaybe.com^ -||smartlysquare.com^ -||smartpicrotation.com^ -||smarttds.org^ -||smarttopchain.nl^ -||smartytech.io^ -||smashedpractice.com^ -||smasheswamefou.com^ -||smashnewtab.com^ -||smathe.com^ -||smatr.icu^ -||smawwgsdayrgijp.com^ -||smctmxdeoz.com^ -||smearincur.com^ -||smeartoassessment.com^ -||smellysect.com^ -||smeltvomitinclined.com^ -||smenqskfmpfxnb.bid^ -||smentbrads.info^ -||smervyfenks.com^ -||smewwuwppjbebd.com^ -||smheoqlye.com^ -||smhmayvtwii.xyz^ -||smibhwlmwiseq.com^ -||smigdxy.com^ -||smigro.info^ -||smileoffennec.com^ -||smilesalesmanhorrified.com^ -||smiletkandol.com^ -||smilewanted.com^ -||smitealter.com^ -||smithamenamel.com^ -||smithumbewreck.com^ -||smitingpredusk.top^ -||smitry.com^ -||smittenkick.top^ -||smjulynews.com^ -||smjxarmaflpmxj.com^ -||smkezc.com^ -||smlypotr.net^ -||smnkaoqyys.com^ -||smnwwohzccfwcu.com^ -||smoggydamage.com^ -||smoggylong.pro^ -||smokebookcase.com^ -||smokecreaseunpack.com^ -||smokedbluish.com^ -||smokedcards.com^ -||smokedhewvalid.com^ -||smokeorganizervideo.com^ -||smokerythrow.com^ -||smokingspecialize.com^ -||smoothenglishassent.com^ -||smoothlytalking.com^ -||smothercontinuingsnore.com^ -||smotherpaperwork.com^ -||smoulderantler.com^ -||smoulderdivedelegate.com^ -||smoulderhangnail.com^ -||smrt-content.com^ -||smrtgs.com^ -||smrtlnk.net^ -||smrtlnk18tds.com^ -||smsapiens.com^ -||smuggledistance.com^ -||smuggleturnstile.com^ -||smugismanaxon.com^ -||smugmuseumframe.com^ -||smugturner.com^ -||smuxmalamw.com^ -||smwsrifbmybiyv.com^ -||smyfbkk.com^ -||snadsfit.com^ -||snagbaudhulas.com^ -||snaglighter.com^ -||snakeselective.com^ -||snakilyglebae.com^ -||snammar-jumntal.com^ -||snapfooted.com^ -||snapmoonlightfrog.com^ -||snappedanticipation.com^ -||snappedelusive.com^ -||snappedtesting.com^ -||snarewholly.com^ -||snarlaptly.com^ -||sneaknonstopattribute.com^ -||snebbubbled.com^ -||sneernodaccommodating.com^ -||sneestykneel.com^ -||sneezeboring.com^ -||sneezeinterview.com^ -||snhtvtp.com^ -||snidethereto.com^ -||sniejankmqq.com^ -||sniffleawag.top^ -||snipersex.com^ -||snipishdements.com^ -||snippystowstool.com^ -||snippyteevee.com^ -||snitchgutsdainty.com^ -||snitchtidying.com^ -||snitchyweenty.top^ -||snjlhmb.com^ -||snlpclc.com^ -||snnysied.xyz^ -||snobdilemma.com^ -||snobdomobeyeo.com^ -||snoddetrude.uno^ -||snoolszingano.com^ -||snoopundesirable.com^ -||snoopytown.pro^ -||snoreempire.com^ -||snorefamiliarsiege.com^ -||snortedbingo.com^ -||snortedgradually.com^ -||snortedhearth.com^ -||snortsfunge.space^ -||snoutcaffeinecrowded.com^ -||snoutinsolence.com^ -||snowdayonline.xyz^ -||snowdonuncia.com^ -||snowiersociete.uno^ -||snowmanpenetrateditto.com^ -||snowmiracles.com^ -||snrcmgqe.com^ -||snrtbgm.com^ -||snsv.ru^ -||sntjim.com^ -||snuaphwdaij.com^ -||snuffdemisedilemma.com^ -||snugglethesheep.com^ -||snurpsermon.space^ -||snwqvjgrjjl.com^ -||so1cool.com^ -||so333o.com^ -||soaheeme.net^ -||soakappequipment.com^ -||soakcompassplatoon.com^ -||soalonie.com^ -||soaperdeils.com^ -||soapingbourgs.top^ -||soawousa.xyz^ -||sobakapi2sa8la09.com^ -||sobakenchmaphk.com^ -||sobbingservingcolony.com^ -||sobesed.com^ -||sobnineteen.com^ -||socalledscanty.com^ -||soccercadencefridge.com^ -||soccerflog.com^ -||soccerjoyousfine.com^ -||soccerprolificforum.com^ -||soccertakeover.com^ -||socde.com^ -||socdm.com^ -||social-discovery.io^ -||social1listnews.com^ -||socialbars-web1.com^ -||sociallytight.com^ -||socialschanche.com^ -||socialvone.com^ -||societyhavocbath.com^ -||societypromisedanyhow.com^ -||sociocast.com^ -||sociomantic.com^ -||socketbuild.com^ -||sockmildinherit.com^ -||socksupgradeproposed.com^ -||sockwardrobe.com^ -||sockzoomtoothbrush.com^ -||sodainquired.com^ -||sodallay.com^ -||sodamash.com^ -||sodaprostitutetar.com^ -||sodiumcupboard.com^ -||sodiumrampcubic.com^ -||sodringermushy.com^ -||sodytykcbgpkw.com^ -||soeverbabi.com^ -||sofcryingfo.xyz^ -||sofcryingforanyt.com^ -||sofcukorporat.info^ -||sofinpushpile.com^ -||soft-com.biz^ -||softboxik1.ru^ -||softendevastated.com^ -||softenedimmortalityprocedure.com^ -||softonicads.com^ -||softpopads.com^ -||softspace.mobi^ -||softsystem.pro^ -||softwa.cfd^ -||softwares2015.com^ -||sogadetin.com^ -||sogetchoco.top^ -||sohkikdnfhzgad.com^ -||soholfit.com^ -||soilenthusiasmshindig.com^ -||soilgnaw.com^ -||soilthesaurus.com^ -||soilysnog.uno^ -||sojourncreed.life^ -||sokitosa.com^ -||soksicme.com^ -||solanrelict.com^ -||solapoka.com^ -||solaranalytics.org^ -||solarmosa.com^ -||soldergeological.com^ -||soldierreproduceadmiration.com^ -||soldiershocking.com^ -||solemik.com^ -||solemncringle.com^ -||solemnvine.com^ -||solestudious.com^ -||solethreat.com^ -||solfafrate.top^ -||soliads.io^ -||soliads.net^ -||solicitorlaptopfooting.com^ -||solicitorquite.com^ -||solicitorviewer.com^ -||solidlyrotches.guru^ -||solipedcoercer.com^ -||solispartner.com^ -||solitudearbitrary.com^ -||solitudeelection.com^ -||sollyaporger.top^ -||solocpm.com^ -||solodar.ru^ -||soloisthaulchoir.com^ -||soltaixa.com^ -||solvusserosal.com^ -||sombes.com^ -||somedaytrip.com^ -||somehowlighter.com^ -||somehowluxuriousreader.com^ -||someonein.org^ -||someonetop.com^ -||someplacepepper.com^ -||somethingalbumexasperation.com^ -||somethingmanufactureinvalid.com^ -||somethingprecursorfairfax.com^ -||sometimesmonstrouscombined.com^ -||somewhatwideslimy.com^ -||somvprqshxr.com^ -||son-in-lawmorbid.com^ -||sonalrecomefu.info^ -||sonalrecomefuk.info^ -||songbagoozes.com^ -||songcorrespondence.com^ -||songtopbrand.com^ -||soninlawalmighty.com^ -||soninlawcontinuallyplatoon.com^ -||soninlawfaceconfide.com^ -||sonlgagba.com^ -||sonnerie.net^ -||sonnetkeltics.com^ -||sonnyadvertise.com^ -||sonsbrunette.com^ -||sonumal.com^ -||soocaips.com^ -||soodihee.net^ -||soodupsep.xyz^ -||soogandrooped.cam^ -||soonlint.com^ -||soonpersuasiveagony.com^ -||soonstrongestquoted.com^ -||soopsulo.xyz^ -||sooreejy.xyz^ -||soosooka.com^ -||sootconform.com^ -||sootlongermacaroni.com^ -||sootpluglousy.com^ -||sootproclaim.com^ -||soowugoo.xyz^ -||sopalk.com^ -||sophiaredyed.com^ -||sophisticatedemergencydryer.com^ -||sophomoreadmissible.com^ -||sophomoreclassicoriginally.com^ -||sophomoremollymatching.com^ -||sophomoreprimarilyprey.com^ -||sophomorewilliam.com^ -||sorbentfalsum.com^ -||sorboseyatvyag.top^ -||sordeexa.net^ -||sordorcourtin.com^ -||sorelyafric.com^ -||soremetropolitan.com^ -||soritespary.com^ -||sorningdaroo.top^ -||sorrowconstellation.com^ -||sorrowfulchemical.com^ -||sorrowfulclinging.com^ -||sorrowfulcredit.pro^ -||sorrowfulmaybe.pro^ -||sorrowfulsuggestion.pro^ -||sorrowgeneric.com^ -||sorrycarboncolorful.com^ -||sorryconstructiontrustworthy.com^ -||sorryfearknockout.com^ -||sorryparlor.com^ -||sortiesbabhan.com^ -||sosettoourmarke.info^ -||soshoord.com^ -||soshvenal.top^ -||sosigninggrudge.com^ -||sotbttcqqztxq.com^ -||sotchart.net^ -||sotchoum.com^ -||sotetahe.pro^ -||sothiacalain.com^ -||soughtflaredeeper.com^ -||souglaur.xyz^ -||soulslaidmale.com^ -||soulterberne.top^ -||soumehoo.net^ -||sounct.com^ -||soundelktemper.com^ -||soundingdisastereldest.com^ -||soundingthunder.com^ -||soupevents.com^ -||soupoleums.com^ -||soupteep.xyz^ -||soupteewhish.com^ -||souptightswarfare.com^ -||soupy-user.com^ -||souraivo.xyz^ -||sourcebloodless.com^ -||sourcecodeif.com^ -||sourceconvey.com^ -||sourishpuler.com^ -||sourne.com^ -||southmailboxdeduct.com^ -||southolaitha.com^ -||southsturdy.com^ -||souvamoo.net^ -||souvenirresponse.com^ -||souvenirsconsist.com^ -||souvenirsdisgust.com^ -||souvenirsflex.com^ -||sovereigngoesintended.com^ -||sovereignidentificationconfirmed.com^ -||sovietransom.com^ -||sovism.com^ -||sowfairytale.com^ -||sowp.cloud^ -||soyjlnfatgxpfd.com^ -||soysapslad.com^ -||soytdpb.com^ -||sozzlypeavies.com^ -||spacelala.com^ -||spaceshipads.com^ -||spaceshipgenuine.com^ -||spacetraff.com^ -||spacetraveldin.com^ -||spaciouslanentablelanentablepigs.com^ -||spaciousnavigablehenceforward.com^ -||spadeandloft.com^ -||spaderonium.com^ -||spadsync.com^ -||spaghettiraisinalter.com^ -||spankalternate.com^ -||spankdrearystroll.com^ -||spannercopyright.com^ -||spanworker.com^ -||spapresentation.com^ -||sparidssimps.life^ -||sparkle-industries-i-205.site^ -||sparkleagings.com^ -||sparklesnoop.com^ -||sparklespaghetti.com^ -||sparkrainstorm.host^ -||sparkstudios.com^ -||sparrersavvies.top^ -||sparrowfencingnumerous.com^ -||sparsgroff.com^ -||spasmodictripscontemplate.com^ -||spathesalloxan.com^ -||spatikona.com^ -||spatteramazeredundancy.com^ -||spatterjointposition.com^ -||spattermerge.com^ -||spavietchats.com^ -||spawngrant.com^ -||spbjmpeg.com^ -||spdate.com^ -||speakeugene.com^ -||speakexecution.com^ -||speakinchreprimand.com^ -||speakinghostile.com^ -||speakingimmediately.com^ -||speakshandicapyourself.com^ -||speakspurink.com^ -||speakwaymen.top^ -||speani.com^ -||special-offers.online^ -||special-promotions.online^ -||specialcraftbox.com^ -||specialisthuge.com^ -||specialistinsensitive.com^ -||specialistrequirement.com^ -||specialistrocky.com^ -||specialityharmoniousgypsy.com^ -||specialitypassagesfamous.com^ -||speciallysang.com^ -||specialrecastwept.com^ -||specialsaucer.com^ -||specialtaskevents.com^ -||specialtymet.com^ -||specialtysanitaryinaccessible.com^ -||specialworse.com^ -||speciesbricksjubilee.com^ -||speciespresident.com^ -||specific-safe.pro^ -||specificallythesisballot.com^ -||specificationtoasterconsultant.com^ -||specificclick.net^ -||specificmedia.com^ -||specificunfortunatelyultimately.com^ -||specifiedbloballowance.com^ -||specifiedinspector.com^ -||specimenparents.com^ -||specimensgrimly.com^ -||spectaclescirculation.com^ -||spectacular-leadership.pro^ -||spectaculareatablehandled.com^ -||spectacularlovely.com^ -||spectato.com^ -||specut.com^ -||spediumege.com^ -||speeb.com^ -||speechfountaindigestion.com^ -||speechlessexpandinglaser.com^ -||speechlessreservedthrust.com^ -||speedilyabsolvefraudulent.com^ -||speedilycartrigeglove.com^ -||speedilyeuropeanshake.com^ -||speedingbroadcastingportent.com^ -||speedsupermarketdonut.com^ -||speedybethurgently.com^ -||speedysection.pro^ -||speermoving.com^ -||spelledbullets.top^ -||spellingboothcourthouse.com^ -||spellingorganicbile.com^ -||spellingunacceptable.com^ -||speltzpataca.guru^ -||spendslaughing.com^ -||spened.com^ -||spentbennet.com^ -||spentdrugfrontier.com^ -||spentindicate.com^ -||spentjerseydelve.com^ -||sperans-beactor.com^ -||spermsbummer.com^ -||spewsserved.website^ -||spheralfreres.com^ -||spheredkapas.com^ -||sphqiccngad.com^ -||spicaladapto.info^ -||spicateazteca.top^ -||spicedisobey.com^ -||spiceethnic.com^ -||spicy-combination.pro^ -||spicy-effect.com^ -||spicybustard.com^ -||spicygirlshere.life^ -||spiderspresident.com^ -||spidersprimary.com^ -||spikearsonembroider.com^ -||spikethat.xyz^ -||spikscabrin.com^ -||spillbough.com^ -||spilldemolitionarrangement.com^ -||spinbiased.com^ -||spinbox.net^ -||spinbox1.com^ -||spindlyrebegin.top^ -||spinna.online^ -||spinna.shop^ -||spinna.site^ -||spinna.store^ -||spinna.xyz^ -||spinraised.com^ -||spiraeadurums.com^ -||spiralextratread.com^ -||spiralsad.com^ -||spiralstab.com^ -||spiraltrot.com^ -||spiredilution.com^ -||spireprideleaf.com^ -||spiritscustompreferably.com^ -||spiritualinstalled.com^ -||spirketgoofily.com^ -||spirogoumi.top^ -||spirteddvaita.com^ -||spirtlekurt.digital^ -||spitefulif.pro^ -||spitretired.com^ -||spittenant.com^ -||spklmis.com^ -||splashfloating.com^ -||splashforgodm.com^ -||splashsjewels.com^ -||splendidatmospheric.com^ -||splendidfeel.pro^ -||spleniafallows.com^ -||splief.com^ -||splintmuses.com^ -||splittingpick.com^ -||spo-play.live^ -||spoiledpresence.com^ -||spoilmagicstandard.com^ -||spokesperson254.fun^ -||spondeetougher.guru^ -||spondylfide.com^ -||spongecell.com^ -||spongemilitarydesigner.com^ -||spongymitsvah.top^ -||sponsoranimosity.com^ -||sponsorlustrestories.com^ -||sponsormob.com^ -||sponsorpay.com^ -||spontaneousleave.com^ -||spontonelatery.com^ -||spooksschedar.com^ -||spooksuspicions.com^ -||spoonpenitenceadventurous.com^ -||spoonsleopard.com^ -||spoonsubqueries.com^ -||sporedshock.com^ -||sporontbrushes.com^ -||sport205.club^ -||sportevents.news^ -||sportradarserving.com^ -||sports-live-streams.club^ -||sports-streams-online.best^ -||sports-streams-online.com^ -||sportsmanmeaning.com^ -||sportstreams.xyz^ -||sportsyndicator.com^ -||sportzflix.xyz^ -||spotbeepgreenhouse.com^ -||spotdimesulky.com^ -||spotlessabridge.com^ -||spotofspawn.com^ -||spotrails.com^ -||spotscenered.info^ -||spotsfusula.com^ -||spotssurprise.com^ -||spotted-estate.pro^ -||spottedgrandfather.com^ -||spottt.com^ -||spotunworthycoercive.com^ -||spotxcdn.com^ -||spotxchange.com^ -||spoutable.com^ -||spoutcarbine.digital^ -||spoutitchyyummy.com^ -||spouttheory.com^ -||sppolexrumj.com^ -||sprangsugar.com^ -||spratstatters.com^ -||spreebogbean.com^ -||spreespoiled.com^ -||spriedfines.com^ -||sprigsrecon.com^ -||springraptureimprove.com^ -||sprinlof.com^ -||spritfrees.com^ -||sprkl.io^ -||sproose.com^ -||spruecutworm.com^ -||sprungencase.com^ -||sptrkr.com^ -||spuezain.com^ -||spumingoxheart.top^ -||spumousredefy.digital^ -||spuncomplaintsapartment.com^ -||spunkyuntiled.com^ -||spuokstucdk.com^ -||spurproteinopaque.com^ -||spurtconfigurationfungus.com^ -||spurttucky.website^ -||spxhu.com^ -||spylees.com^ -||spymislead.com^ -||sqctkocts.com^ -||sqgofqnyamo.com^ -||sqhyjfbckqrxd.xyz^ -||sqjyxoqdckusm.com^ -||sqkrnqdb.com^ -||sqlekbxp.xyz^ -||sqlick.com^ -||sqmhxxhpcmwwdn.com^ -||sqqqabg.com^ -||sqqqytzxjywx.com^ -||sqrtcris.top^ -||squadapologiesscalp.com^ -||squareforensicbones.com^ -||squashperiodicmen.com^ -||squatcowarrangement.com^ -||squeaknicheentangled.com^ -||squeakyheart.pro^ -||squealaviationrepeatedly.com^ -||squealschagga.click^ -||squeezemicrowave.com^ -||squeezesharedman.com^ -||squeteeindazin.top^ -||squintopposed.com^ -||squintyouvrage.com^ -||squirrelformatapologise.com^ -||squirrelhissedintake.com^ -||squirtsuitablereverse.com^ -||sr7pv7n5x.com^ -||srabwfqwjoc.com^ -||sragegedand.org^ -||srasylzu.com^ -||srcsmrtgs.com^ -||srefrukaxxa.com^ -||srgev.com^ -||srigbxxv.com^ -||srnpochi.com^ -||srodicham.com^ -||srodneyjvtef.com^ -||srqfutavhy.com^ -||srrmpfstbh.com^ -||srshqnrmqs.com^ -||srsotqdgln.com^ -||srtlyye.com^ -||srtrak.com^ -||srumifuroqkuoi.com^ -||sruzefwboxu.com^ -||srv224.com^ -||srvpcn.com^ -||srvtrck.com^ -||srwfwllymprt.com^ -||srxy.xyz^ -||srzirmlql.com^ -||srzzohlms.com^ -||ss0uu1lpirig.com^ -||ssdipdkjqblgog.com^ -||ssedonthep.info^ -||ssindserving.com^ -||sskzlabs.com^ -||ssl-services.com^ -||ssl2anyone5.com^ -||sslenuh.com^ -||ssllink.net^ -||sslph.com^ -||ssmprmp.com^ -||ssooss.site^ -||ssqyuvavse.com^ -||ssuijiuyv.com^ -||ssurvey2you.com^ -||st-rdirect.com^ -||st1net.com^ -||stabconsiderationjournalist.com^ -||stabfrizz.com^ -||stabilitydos.com^ -||stabilityincarnateillegally.com^ -||stabilityvatinventory.com^ -||stabledkindler.com^ -||stablefulfil.com^ -||stacckain.com^ -||stackadapt.com^ -||stackattacka.com^ -||stackmultiple.com^ -||stackprotectnational.com^ -||staerlcmplks.xyz^ -||staffdollar.com^ -||stagepopkek.com^ -||stageseshoals.com^ -||staggeredplan.com^ -||staggeredquelldressed.com^ -||staggeredravehospitality.com^ -||stagingjobshq.com^ -||stagroam.net^ -||staifong.net^ -||stainblocking.com^ -||stainclout.com^ -||stained-a.pro^ -||stainvinegar.com^ -||staircaseminoritybeeper.com^ -||stairtuy.com^ -||stairwellobliterateburglar.com^ -||staitchu.com^ -||staiwhaup.com^ -||staixemo.com^ -||staixooh.com^ -||stalerestaurant.com^ -||stallionsmile.com^ -||stallsmalnutrition.com^ -||stammerail.com^ -||stammerdescriptionpoetry.com^ -||stampsmindlessscrap.com^ -||standgruff.com^ -||standpointdriveway.com^ -||standpointunfriendly.com^ -||stankyrich.com^ -||stansoam.com^ -||staplecups.com^ -||stapledsaur.top^ -||star-advertising.com^ -||star-clicks.com^ -||starchportraypub.com^ -||starchy-foundation.pro^ -||starchytoxifer.top^ -||stardatis.com^ -||stargamesaffiliate.com^ -||starkhousing.com^ -||starklesalta.com^ -||starkslaveconvenience.com^ -||starlingposterity.com^ -||starlingpronouninsight.com^ -||starmobmedia.com^ -||starry-galaxy.com^ -||starsaug.com^ -||starssp.top^ -||starswalker.site^ -||starszoom.re^ -||start-xyz.com^ -||startappexchange.com^ -||startd0wnload22x.com^ -||starterblackened.com^ -||startfinishthis.com^ -||startlemanipulativedamaging.com^ -||startmode.biz^ -||startpagea.com^ -||startperfectsolutions.com^ -||startservicefounds.com^ -||startsprepenseprepensevessel.com^ -||starvalue-4.online^ -||starvardsee.xyz^ -||starvationdefence.com^ -||starvegingerwaist.com^ -||starvybryan.com^ -||stascdnuuar.com^ -||stassaxouwa.com^ -||stat-rock.com^ -||statalvortex.com^ -||statcamp.net^ -||statedfertileconference.com^ -||statedthoughtslave.com^ -||statefertilitycount.com^ -||statementsheep.com^ -||statementsnellattenuate.com^ -||statesbenediction.com^ -||statesmanchosen.com^ -||statesmanimpetuousforemost.com^ -||statesmanmajesticcarefully.com^ -||statesmanridiculousplatitude.com^ -||statesmansubstance.com^ -||statestockingsconfession.com^ -||statewilliamrate.com^ -||static-srv.com^ -||stationspire.com^ -||statistic-data.com^ -||statisticresearch.com^ -||statisticscensordilate.com^ -||statisticseither.com^ -||statorkumyk.com^ -||statossy.com^ -||stats-best.site^ -||statsforads.com^ -||statsmobi.com^ -||staturecolonialismtransition.com^ -||staubsuthil.com^ -||staukponier.com^ -||staumersleep.com^ -||staunchchivied.top^ -||staunchgenetwitch.com^ -||staunidrooji.com^ -||staureez.net^ -||stawhoph.com^ -||staydolly.com^ -||staygg.com^ -||stayhereabit.com^ -||stayingcrushedrelaxing.com^ -||stayjigsawobserved.com^ -||stbeautifuleedeha.info^ -||stbshzm.com^ -||stbvip.net^ -||stbvwfmbzabtyi.com^ -||stdirection.com^ -||ste23allas5ri6va.com^ -||steadilyearnfailure.com^ -||steadilyparental.com^ -||steadydonut.com^ -||steadypriority.com^ -||steakdeteriorate.com^ -||steakeffort.com^ -||stealcurtainsdeeprooted.com^ -||stealingdyingprank.com^ -||stealinggin.com^ -||stealingprovisions.com^ -||stealneitherfirearm.com^ -||stealthlockers.com^ -||steamdespicable.com^ -||steamjaws.com^ -||stedrits.xyz^ -||stedsous.xyz^ -||steefaulrouy.xyz^ -||steegnow.com^ -||steel-bedroom.pro^ -||steeplederivedinattentive.com^ -||steeplesaturday.com^ -||steeplyrantize.top^ -||steepto.com^ -||steeringsunshine.com^ -||steessay.com^ -||steetchouwu.com^ -||steevout.xyz^ -||steghaiwhy.com^ -||steinfqwe6782beck.com^ -||stekraucmauk.com^ -||stelaiatokal.top^ -||stelsarg.net^ -||steltilr.xyz^ -||stemboastfulrattle.com^ -||stemonauppoint.top^ -||stemredeem.com^ -||stemsshutdown.com^ -||stenadewy.pro^ -||stenchyouthful.com^ -||stengskelped.com^ -||step-step-go.com^ -||stepchateautolerance.com^ -||stepkeydo.com^ -||stepmotherincomingpluck.com^ -||steppedengender.com^ -||steppedlashkar.com^ -||steppequotationinspiring.com^ -||stereomagiciannoun.com^ -||stereosuspension.com^ -||stereotypeluminous.com^ -||stereotyperobe.com^ -||stereotyperust.com^ -||sterfrownedan.info^ -||sterileaccentbite.com^ -||sterilityvending.com^ -||sterncock.com^ -||sternlythese.com^ -||steropestreaks.com^ -||sterouhavene.org^ -||steshacm.xyz^ -||stethaug.xyz^ -||stethuth.xyz^ -||steveirene.com^ -||steveoriginate.com^ -||stevoodsefta.com^ -||stewomelettegrand.com^ -||stewsmall.com^ -||stgcdn.com^ -||stgowan.com^ -||sthenicrefunds.com^ -||stherewerealo.org^ -||sthgqhb.com^ -||sthoutte.com^ -||stialt.com^ -||sticalsdebaticalfe.info^ -||stichoseroded.com^ -||stickboiled.com^ -||stickerchapelsailing.com^ -||stickertable.com^ -||stickervillain.com^ -||stickingbeef.com^ -||stickingrepute.com^ -||stickstelevisionoverdone.com^ -||stickyadstv.com^ -||stickygrandeur.com^ -||stickyhustle.com^ -||stickywhereaboutsspoons.com^ -||stiffengobetween.com^ -||stiffenshave.com^ -||stifleadventureempire.com^ -||stiflepowerless.com^ -||stiflerivers.com^ -||stiftood.xyz^ -||stigala.com^ -||stigat.com^ -||stigmaicomfy.com^ -||stigmuuua.xyz^ -||stijzytavb.com^ -||stiksaud.com^ -||stilaed.com^ -||stilaikr.com^ -||stilbmolted.com^ -||stillchemistcivilian.com^ -||stillfolder.com^ -||stimaariraco.info^ -||stimtavy.net^ -||stimulateartificial.com^ -||stimulatemosque.com^ -||stimulatinggrocery.pro^ -||stingeantonia.com^ -||stinglackingrent.com^ -||stingystoopedsuccession.com^ -||stingywear.pro^ -||stinicf.com^ -||stinicl.com^ -||stinkcomedian.com^ -||stinkwrestle.com^ -||stinkyloadeddoctor.com^ -||stinkyrepetition.com^ -||stipulenibber.com^ -||stirdevelopingefficiency.com^ -||stirringdebrisirriplaceableirriplaceable.com^ -||stirringdecoctiononly.com^ -||stismiqlqj.com^ -||stitchalmond.com^ -||stited.com^ -||stitor.com^ -||stixeepou.com^ -||stjizydpukd.com^ -||stkgbjliym.com^ -||stlpyypg.com^ -||stluserehtem.com^ -||stoachaigog.com^ -||stoaphalti.com^ -||stoapoothu.com^ -||stoashou.net^ -||stoawugluce.net^ -||stockingsight.com^ -||stocksinvulnerablemonday.com^ -||stoddowqxeplt.com^ -||stokoaks.net^ -||stolenforensicssausage.com^ -||stollenliane.top^ -||stonkphymata.com^ -||stonkstime.com^ -||stoobsugree.net^ -||stoobsut.com^ -||stookoth.com^ -||stooliroori.com^ -||stoolree.com^ -||stoomawy.net^ -||stoomoogn.com^ -||stoondresides.shop^ -||stoopedcompatibility.com^ -||stoopeddemandsquint.com^ -||stoopedsignbookkeeper.com^ -||stoophou.com^ -||stoopjam.com^ -||stoopsellers.com^ -||stoopsystemsshoot.com^ -||stoorgel.com^ -||stoorgouxy.com^ -||stoorsoy.com^ -||stootsee.xyz^ -||stootsou.net^ -||stopaggregation.com^ -||stopapaumari.com^ -||stopformal.com^ -||stopgapdentoid.top^ -||stoppageeverydayseeing.com^ -||stopperlovingplough.com^ -||stopscondole.com^ -||stopundoer.com^ -||storage-ad.com^ -||storagecelebrationchampion.com^ -||storagelassitudeblend.com^ -||storagewitnessotherwise.com^ -||storefloozie.com^ -||storepoundsillegal.com^ -||storeyplayfulinnocence.com^ -||storiesfaultszap.com^ -||stormydisconnectedcarsick.com^ -||storners.com^ -||storyblizzard.com^ -||storyquail.com^ -||storyrelatively.com^ -||stossfussily.com^ -||stotinggunne.uno^ -||stotoowu.net^ -||stougluh.net^ -||stouksom.xyz^ -||stouphou.net^ -||stoursas.xyz^ -||stoustiz.net^ -||stoutfoggyprotrude.com^ -||stovearmpitagreeable.com^ -||stovecharacterize.com^ -||stoveword.com^ -||stowamends.com^ -||stowjupnkwlic.com^ -||stpd.cloud^ -||stpeopleshouldthi.com^ -||stpmgo.com^ -||stpmneaywgib.com^ -||straight-equipment.com^ -||straight-shift.pro^ -||straight-storage.pro^ -||straightenedsleepyanalysis.com^ -||strainemergency.com^ -||straitchangeless.com^ -||straitmeasures.com^ -||straitsdeprive.com^ -||straletmitvoth.com^ -||stranddecidedlydemeanour.com^ -||strandedpeel.com^ -||strandedprobable.com^ -||strangelyfaintestgreenhouse.com^ -||strangersrecantcoral.com^ -||strangineer.info^ -||strangledisposalfox.com^ -||stratebilater.com^ -||strategicfollowingfeminine.com^ -||stratosbody.com^ -||stravesibship.top^ -||strawdeparture.com^ -||strawguineaequanimity.com^ -||straymaternitycommence.com^ -||streakappealmeasured.com^ -||streakattempt.com^ -||stream-all.com^ -||streameventzone.com^ -||streaming-illimite5.com^ -||streaming-illimite6.com^ -||streampsh.top^ -||streamsearchclub.com^ -||streamtoclick.com^ -||streamvideobox.com^ -||streamyourvid.com^ -||streenoutrove.life^ -||streetabackvegetable.com^ -||streetcoddiffident.com^ -||streetgrieveddishonour.com^ -||streetmilligram.com^ -||streetmonumentemulate.com^ -||streetuptowind.com^ -||streetupwind.com^ -||streitmackled.com^ -||stremanp.com^ -||strengk.xyz^ -||strenuousfudge.com^ -||strenuoustarget.com^ -||stressfulproperlyrestrain.com^ -||stressfulsplash.com^ -||stressfulsurroundingcomeback.com^ -||stretchedbarbarian.com^ -||stretchedcreepy.com^ -||stretchedgluttony.com^ -||stretchingwicked.com^ -||strettechoco.com^ -||strewdirtinessnestle.com^ -||strewjaunty.com^ -||strewtwitchlivelihood.com^ -||strichefurls.top^ -||strickenenergetic.com^ -||strickenfiercenote.com^ -||strictrebukeexasperate.com^ -||stridentbedroom.pro^ -||strideovertakelargest.com^ -||strikinghystericalglove.com^ -||stringssymptomfishing.com^ -||stringthumbprowl.com^ -||stripedcover.pro^ -||stripedonerous.com^ -||striperaised.com^ -||striperewind.com^ -||striperoused.com^ -||stripesrussula.top^ -||stripfitting.com^ -||stripherselfscuba.com^ -||strivefoetus.com^ -||strjuylfrjyk.site^ -||strobesfalsity.digital^ -||strodeewesmug.com^ -||strodefat.com^ -||strodemorallyhump.com^ -||strollfondnesssurround.com^ -||strongestconvenient.com^ -||strongesthaste.com^ -||strongesthissblackout.com^ -||stroyerunfiery.uno^ -||strtgic.com^ -||structurecolossal.com^ -||structurepageantphotograph.com^ -||strugglecookingtechnically.com^ -||strugglingclamour.com^ -||strungcourthouse.com^ -||strungglancedrunning.com^ -||strwaoz.xyz^ -||stt6.cfd^ -||stthykerewasn.com^ -||stubbleupbriningbackground.com^ -||stubborndreadcounterfeit.com^ -||stubbornembroiderytrifling.com^ -||stuchoug.com^ -||stucktimeoutvexed.com^ -||studads.com^ -||studdepartmentwith.com^ -||studiedabbey.com^ -||studiorejoinedtrinity.com^ -||studious-beer.com^ -||studiouspassword.com^ -||studsaughy.net^ -||stuffedprofessional.com^ -||stuffedstudy.com^ -||stuffinglimefuzzy.com^ -||stuffintolerableillicit.com^ -||stuffserve.com^ -||stugsoda.com^ -||stulleratteal.top^ -||stullsstud.com^ -||stumbledmetropolitanpad.com^ -||stumbleirritable.com^ -||stumercackles.com^ -||stummedperca.top^ -||stunkcott.com^ -||stunning-lift.com^ -||stunninglover.com^ -||stunningruin.com^ -||stunsbarbola.website^ -||stunthedge.com^ -||stupendousconcept.pro^ -||stupiditydecision.com^ -||stupidityficklecapability.com^ -||stupidityitaly.com^ -||stupidityscream.com^ -||stupidspaceshipfestivity.com^ -||stvbiopr.net^ -||stvkr.com^ -||stvsmdhfplfrcy.xyz^ -||stvwell.online^ -||stydrumgmaringpo.info^ -||styingjareed.guru^ -||styletrackstable.com^ -||stylewhiskerscreepy.com^ -||stylish-airport.com^ -||styrianauf.com^ -||stzhnfcxx.com^ -||suaedaormer.top^ -||sualgvoi.com^ -||sub.empressleak.biz^ -||sub.xxx-porn-tube.com^ -||sub2.avgle.com^ -||subbandapodan.top^ -||subdatejutties.com^ -||subdo.torrentlocura.com^ -||subduealec.com^ -||subdued-illegal.pro^ -||subduedgrainchip.com^ -||subduegrape.com^ -||subgitrelais.com^ -||subheroalgores.com^ -||subjectamazement.com^ -||subjectedburglar.com^ -||subjectscooter.com^ -||subjectslisted.com^ -||submarinefortressacceptable.com^ -||submarinestooped.com^ -||submissionbrackettreacherous.com^ -||submissionheartyprior.com^ -||submissionspurtgleamed.com^ -||submissivejuice.com^ -||subner.com^ -||subnodeoaring.digital^ -||suborecho.com^ -||subquerieshenceforwardtruthfully.com^ -||subqueryrewinddiscontented.com^ -||subscribereffectuallyversions.com^ -||subsectivexe.xyz^ -||subsequentmean.com^ -||subserecajones.com^ -||subsideagainstforbes.com^ -||subsidedimpatienceadjective.com^ -||subsidedplenitudetide.com^ -||subsidehurtful.com^ -||subsistgrew.com^ -||subsistpartyagenda.com^ -||substantialequilibrium.com^ -||substantialhound.com^ -||subtractillfeminine.com^ -||subtractrefused.com^ -||suburbincriminatesubdue.com^ -||subwaygirlieweasel.com^ -||subwayporcelainrunning.com^ -||succeedappointedsteve.com^ -||succeedingpeacefully.com^ -||succeedprosperity.com^ -||succeedscene.com^ -||success-news.net^ -||successcuff.com^ -||successfulpatience.com^ -||successionfireextinguisher.com^ -||successionflimsy.com^ -||successorpredicate.com^ -||successorwindscreeninstruct.com^ -||succisasubset.top^ -||suchasricew.info^ -||suchbasementdarn.com^ -||suchcesusar.org^ -||suchroused.com^ -||suckae.xyz^ -||suckfaintlybooking.com^ -||sucocesisfulylyde.info^ -||sucter.com^ -||suctionautomobile.com^ -||suddslife.com^ -||sudroockols.xyz^ -||sudserspial.click^ -||sudsguidon.com^ -||sudvclh.com^ -||suescollum.com^ -||suesuspiciousin.com^ -||sufferinguniversalbitter.com^ -||suffertreasureapproval.com^ -||sufficedetentionhols.com^ -||sufficientknight.com^ -||suffixconceivevegetarian.com^ -||suffixinstitution.com^ -||suffixreleasedvenison.com^ -||sufikollast.top^ -||sugardistanttrunk.com^ -||sugary-ratio.pro^ -||sugaryambition.pro^ -||sugarynotice.pro^ -||suggest-recipes.com^ -||suggestedasstrategic.com^ -||suggestiongettingmaggot.com^ -||suggestnotegotistical.com^ -||sugogawmg.xyz^ -||sugpgeaunpet.com^ -||suhelux.com^ -||suicidechapterspartnership.com^ -||suirtan.com^ -||suitbelongingoccasion.com^ -||suitedeteriorate.com^ -||suitedtack.com^ -||suitesdyed.space^ -||suiteshowedlottery.com^ -||suitetattoo.com^ -||suitscodworm.com^ -||sujcmsgdcyt.com^ -||sukcheatppwa.com^ -||sukedrevenued.org^ -||sukoqgdpej.com^ -||sukultingecauy.info^ -||sulcusmantels.com^ -||sulelysr.com^ -||sulkvulnerableexpecting.com^ -||sullageprofre.com^ -||sullencarverdoes.com^ -||sullentrump.com^ -||sulrejclbehh.com^ -||sulseerg.com^ -||sultansamidone.top^ -||sultodre.net^ -||sultrycartonedward.com^ -||sultrymercury.com^ -||sumbreta.com^ -||sumids.com^ -||summaryjustlybouquet.com^ -||summaryvalued.com^ -||summer-notifications.com^ -||summerboycottrot.com^ -||summercovert.com^ -||summertracethou.com^ -||summingricracs.uno^ -||summitdangle.com^ -||summitmanner.com^ -||summonedessencetrap.com^ -||sumnrydp.com^ -||sunbowskraal.com^ -||sundayceremonytitanic.com^ -||sundayscrewinsulting.com^ -||sunflowerbright106.io^ -||sunflowercoastlineprobe.com^ -||sunflowergermcaptivate.com^ -||sunflowerinformed.com^ -||sungarnonsane.com^ -||sunglassesmentallyproficient.com^ -||sunkencurledexpanded.com^ -||sunkenhexapla.top^ -||sunkwarriors.com^ -||sunlightirrationalhearty.com^ -||sunmediaads.com^ -||sunnycategoryopening.com^ -||sunnyscanner.com^ -||sunnyseries.com^ -||sunnysubject.com^ -||sunrisesharply.com^ -||sunsekrious.com^ -||sunsetbassan.uno^ -||sunspotpitchy.website^ -||sunstrokeload.com^ -||sunwardamoraic.com^ -||suozmtcc.com^ -||supapush.net^ -||superadbid.com^ -||superbcallempty.com^ -||superfastcdn.com^ -||superfasti.co^ -||superficialropes.com^ -||superfluousexecutivefinch.com^ -||superfolder.net^ -||superherogoing.com^ -||superherosnout.com^ -||superherosoundsshelves.com^ -||superioramassoutbreak.com^ -||superiorickyfreshen.com^ -||superiorityfriction.com^ -||superiorityroundinhale.com^ -||superiorsufferorb.com^ -||supermarketrestaurant.com^ -||superqualitylink.com^ -||supersedeforbes.com^ -||supersedeowetraumatic.com^ -||superservercellarchin.com^ -||superserverwarrior.com^ -||superstitiousamber.com^ -||superstitiouscoherencemadame.com^ -||superstriker.net^ -||supervisebradleyrapidly.com^ -||supervisionlanguidpersonnel.com^ -||supervisionprohibit.com^ -||supervisofosevera.com^ -||superxxxfree.com^ -||supgedcowxkmzr.com^ -||suphelper.com^ -||suppermalignant.com^ -||supperopeningturnstile.com^ -||supplejog.com^ -||supplementary2.fun^ -||suppliedhopelesspredestination.com^ -||suppliesscore.com^ -||supportedbushesimpenetrable.com^ -||supporterinsulation.com^ -||supportingbasic.com^ -||supportive-promise.com^ -||supposedbrand.com^ -||supposereduction.com^ -||supposerevenue.com^ -||suppressedanalogyrain.com^ -||suppressedbottlesenjoyable.com -||supremeden.com^ -||supremeoutcome.com^ -||supremepresumptuous.com^ -||supremewatcheslogical.com^ -||supremoadblocko.com^ -||suptraf.com^ -||suptrkdisplay.com^ -||suptur.online^ -||surahsbimas.com^ -||surclebodily.uno^ -||surcloyalveloz.life^ -||surcloyspecify.com^ -||surecheapermoisture.com^ -||surechequerigorous.com^ -||surechieflyrepulse.com^ -||surelyyap.com^ -||surewashedalphabet.com^ -||surfacesaroselozenge.com^ -||surfacescompassionblemish.com^ -||surfacesmulti.com^ -||surfedlattins.com^ -||surfeitdrabble.com^ -||surfingmister.com^ -||surfmdia.com^ -||surfwestlaw.com^ -||surge.systems^ -||surgicalhanging.com^ -||surgicaljunctiontriumph.com^ -||surgicallonely.com^ -||surhaihaydn.com^ -||suricatchino.space^ -||surlydancerbalanced.com^ -||surmitmegbote.top^ -||surmountpeel.com^ -||surnamesubqueryaloft.com^ -||surnapereborn.com^ -||surnayruffle.top^ -||surpassconstraintsrenewal.com^ -||surpriseenterprisingfin.com^ -||surprisingarsonistcooperate.com^ -||surprisinglycouncil.com^ -||surrenderdownload.com^ -||surrogatelithe.com^ -||surrounddiscord.com^ -||surroundingsliftingstubborn.com^ -||surroundingspuncture.com^ -||surtaxraphes.top^ -||surv2you.com^ -||surv2you.net^ -||surv2you.org^ -||survey-daily-prizes.com^ -||survey2you.co^ -||survey2you.com^ -||survey2you.net^ -||survey2you.org^ -||survey4you.co^ -||surveyedmadame.com^ -||surveyonline.top^ -||surviseacmic.com^ -||survivalcheersgem.com^ -||survrhostngs.xyz^ -||susanbabysitter.com^ -||susceptiblefantasyjunction.com^ -||susheeze.xyz^ -||suspectedadvisor.com^ -||suspendedjetthus.com^ -||suspensionreconnectpig.com^ -||suspensionstorykeel.com^ -||suspicionsmutter.com^ -||suspicionsrespectivelycobbler.com^ -||suspicionssmartstumbled.com^ -||suspirenicolo.guru^ -||sustainsuspenseorchestra.com^ -||sutiletoroid.com^ -||sutraf.com^ -||suwotsoukry.com^ -||suwytid.com^ -||suxoxmnwolun.com^ -||suxwpibumof.com^ -||suzanne.pro^ -||suzbcnh.com^ -||svanh-xqh.com^ -||svaohpdxn.xyz^ -||svarajwens.com^ -||sviakavgwjg.xyz^ -||sviter2s1olenyami1.com^ -||svkmxwssih.com^ -||svntrk.com^ -||svnutntmq.com^ -||svptpcjefg.com^ -||svrkdkopdsdj.com^ -||svtlgjmqyzmwz.com^ -||svwhhiiyihcwh.com^ -||svyksa.info^ -||swaggydestroy.com^ -||swagtraffcom.com^ -||swailcoigns.com^ -||swailsbondman.com^ -||swalessidi.com^ -||swallowaccidentdrip.com^ -||swallowhairdressercollect.com^ -||swallowpunctual.com^ -||swamgreed.com^ -||swampexpulsionegypt.com^ -||swan-swan-goose.com^ -||swanbxca.com^ -||swansinksnow.com^ -||swapsprediet.top^ -||swarfsfitters.com^ -||swarmpush.com^ -||swarthsfulk.com^ -||swarthyamong.com^ -||swarthymacula.com^ -||swatad.com^ -||swaycomplymishandle.com^ -||swayersnoance.com^ -||swayersrecure.digital^ -||sweake.com^ -||swearanalogous.com^ -||sweatditch.com^ -||sweaterreduce.com^ -||sweaterwarmly.com^ -||sweatsfeckful.com^ -||sweatyailpassion.com^ -||sweatyequityhelicopter.com^ -||sweatytraining.pro^ -||swebatcnoircv.xyz^ -||sweepadstoday.click^ -||sweepawejasper.com^ -||sweepfrequencydissolved.com^ -||sweepia.com^ -||sweet-discount.pro^ -||sweet-marriage.pro^ -||sweetheartshippinglikeness.com^ -||sweetmoonmonth.com^ -||sweetromance.life^ -||swellingconsultation.com^ -||swelllagoon.com^ -||swelltomatoesguess.com^ -||swelltouching.com^ -||swelteringcrazy.pro^ -||swensaidohet.com^ -||swepfa.com^ -||sweptbroadarchly.com^ -||sweptgrimace.com^ -||swesomepop.com^ -||swevengrise.com^ -||swhgrsjg.com^ -||swiftlylatterdilate.com^ -||swigdomable.com^ -||swigethinyl.top^ -||swiggermahwa.com^ -||swiggrazer.life^ -||swimmerallege.com^ -||swimmerperfectly.com^ -||swimmingusersabout.com^ -||swimsuitrustle.com^ -||swimsunleisure.com^ -||swindlehumorfossil.com^ -||swindlelaceratetorch.com^ -||swinegraveyardlegendary.com^ -||swinehalurgy.com^ -||swingebudded.com^ -||swingelinseys.com^ -||swingtoeswinds.com^ -||swinity.com^ -||swishedbigha.digital^ -||swisstoothpastelipstick.com^ -||swivinglydite.com^ -||swlkdqlcx.com^ -||swoezdra.com^ -||swollencompletely.com^ -||swonqjzbc.com^ -||swoopanomalousgardener.com^ -||swoopkennethsly.com^ -||swordanatomy.com^ -||swordbloatgranny.com^ -||swordcirculation.com^ -||swordeast.com^ -||swordrelievedictum.com^ -||swpnyrxgobtryu.com^ -||swuretecali.com^ -||swvhwyaavewko.com^ -||swwpush.com^ -||swzgvmlvt.com^ -||swzydgm.com^ -||sxbbqlnulcmyhr.com^ -||sxhivhz.com^ -||sxipth.xyz^ -||sxirpkuxm.com^ -||sxlflt.com^ -||sxlvklm.com^ -||sxtpkrrvdvm.com^ -||sxujfrzjmnb.com^ -||sxwflxsontjwdb.com^ -||sya9yncn3q.com^ -||sybobuicks.com^ -||sybostuff.com^ -||syctwaerbln.com^ -||sydneygfpink.com^ -||syenergyflexibil.com^ -||syeniteexodoi.com^ -||syetmpdktjeor.com^ -||syinga.com^ -||syiwgwsqwngrdw.xyz^ -||sykfmgu.com^ -||sykojkqjygahl.com^ -||syllableliking.com^ -||syllabusimperfect.com^ -||syllabuspillowcasebake.com^ -||sylphschanged.life^ -||syltfvcaa.com^ -||sylxisys.com^ -||symbolscathy.digital^ -||symbolsovereigndepot.com^ -||symbolultrasound.com^ -||symiwxemwgxtpj.com^ -||symmorybewept.com^ -||symoqecnefjj.com^ -||sympatheticclue.com^ -||sympatheticfling.com^ -||sympathizecopierautobiography.com^ -||sympathizededicated.com^ -||sympathizeplumscircumstance.com^ -||sympathybindinglioness.com^ -||symptomprominentfirewood.com^ -||synchronizedoll.com^ -||synchronizerobot.com^ -||syndapop.com^ -||syndromeentered.com^ -||syndromegarlic.com^ -||synonymcuttermischievous.com^ -||synonymfeminine.com^ -||synsads.com^ -||syntaxaboriginalsaxophone.com^ -||syntaxtruckspoons.com^ -||synthesissocietysplitting.com^ -||synthesisvariables.com^ -||syofklngqqlw.com^ -||syringaburan.digital^ -||syringeitch.com^ -||syringewhile.com^ -||syrsple2se8nyu09.com^ -||syseinpoundaym.info^ -||syshrugglefor.info^ -||sysoutvariola.com^ -||system-notify.app^ -||systeme-business.online^ -||systemengagedwisely.com^ -||systemhostess.com^ -||systemleadb.com^ -||systemsivory.com^ -||sytqxychwk.xyz^ -||syvmnimluk.com^ -||sywarcjmy.xyz^ -||syxcwxur.com^ -||syyycc.com^ -||syyzbelmw.com^ -||syzijqaufe.com^ -||syzwiooheckxb.com^ -||szbnnqyqn.com^ -||szgaikk.com^ -||szhcyxtszb.com^ -||szkubfni.com^ -||szkzvqs.com^ -||szlipubod.com^ -||szokwgcjxdt.com^ -||szpabffpr.com^ -||szpjpzi.com^ -||szqxvo.com^ -||szzhwaaxhnnrx.com^ -||t.uc.cn^ -||t0gju20fq34i.com^ -||t0gkj99krb24.com^ -||t2lgo.com^ -||t58genestuff.com^ -||t5lxz7dtq4iz.com^ -||t7cp4fldl.com^ -||ta3nfsordd.com^ -||taaqhr6axacd2um.com^ -||taaqxpyicjlgv.com^ -||tabbingtremors.life^ -||tabekeegnoo.com^ -||tabfloor.com^ -||tabici.com^ -||tabidmelene.com^ -||tablasmaximed.website^ -||tabledownstairsprovocative.com^ -||tableinactionflint.com^ -||tablepeppery.com^ -||tablesgrace.com^ -||tableshooliganbait.com^ -||tabletbragcreak.com^ -||tabletsregrind.com^ -||tabloidbadger.com^ -||tabloidquantitycosts.com^ -||tabloidsuggest.com^ -||tabloidwept.com^ -||taborsfields.top^ -||tabulaeokas.com^ -||tacklerloin.com^ -||tackleyoung.com^ -||tacopush.ru^ -||tacticmuseumbed.com^ -||tacticpoignantsteeple.com^ -||tacticsadamant.com^ -||tacticschangebabysitting.com^ -||tacticsjoan.com^ -||tadadamads.com^ -||tadamads.com^ -||tadsbelver.com^ -||taembed.com^ -||taetsiatomia.com^ -||taexnaexgg.com^ -||tagalodrome.com^ -||tagassulatests.top^ -||taghaugh.com^ -||tagloognain.xyz^ -||tagmai.xyz^ -||tagoutlookignoring.com^ -||tagroors.com^ -||tagun.xyz^ -||taheenturfdom.com^ -||tahqcecads.com^ -||tahwox.com^ -||taibaveeshie.net^ -||taicheetee.com^ -||taicoobu.com^ -||taidainy.net^ -||taigasdoeskin.guru^ -||taigrooh.net^ -||tailalwaysunauthorized.com^ -||tailorendorsementtranslation.com^ -||tailorfunctionknuckle.com^ -||taintvistacredulous.com^ -||taipeivermeil.top^ -||taisteptife.com^ -||taiwhups.net^ -||taizigly.net^ -||take-grandincome.life^ -||take-prize-now.com^ -||takeallsoft.ru^ -||takecareproduct.com^ -||takelnk.com^ -||takemybackup.co^ -||takemydesk.co^ -||takemyorder.co^ -||takeoutregularlyclack.com^ -||takeoverrings.com^ -||takessutures.top^ -||takestruggle.com^ -||takeyouforward.co^ -||takingbelievingbun.com^ -||takingpot.com^ -||takiparkrb.site^ -||takychasing.com^ -||talckyslodder.top^ -||talcoidsakis.com^ -||taleinformed.com^ -||talentinfatuatedrebuild.com^ -||talentorganism.com^ -||talentslimeequally.com^ -||talesapricot.com^ -||taliagebauxite.com^ -||talitolstared.website^ -||talkingwinquarry.com^ -||talkstewmisjudge.com^ -||tallfriend.pro^ -||tallwhilstinventory.com^ -||tallyhofaggot.top^ -||tallysaturatesnare.com^ -||talouktaboutrice.info^ -||talsauve.com^ -||talsindustrateb.info^ -||tamedilks.com^ -||tamesurf.com^ -||tameti.com^ -||taminystopgap.com^ -||tamperdepreciate.com^ -||tamperlaugh.com^ -||tampinbecker.com^ -||tampoewretch.top^ -||tampvhio.com^ -||tanceteventu.com^ -||tancommunicated.com^ -||tandavaecorche.top^ -||tangerinetogetherparity.com^ -||tanglesoonercooperate.com^ -||tangpuax.xyz^ -||tanhelpfulcuddle.com^ -||tanivanprevented.com^ -||tankiuz.xyz^ -||tanksfright.com^ -||tantisnits.top^ -||taovgsy.com^ -||taoyinbiacid.com^ -||taozgpkjzpdtgr.com^ -||tapallpurposepantomime.com^ -||tapchibitcoin.care^ -||tapdb.net^ -||tapeabruptlypajamas.com^ -||tapestrygenus.com^ -||tapestrymob.com^ -||tapetalvolva.top^ -||tapewherever.com^ -||tapheetsat.com^ -||tapingauthenticemulation.com^ -||tapingfoulgos.com^ -||tapinghouseworkusual.com^ -||tapiocaindowed.space^ -||tapioni.com^ -||tapixesa.pro^ -||tapjoyads.com^ -||tapproveofchild.info^ -||taproximo.com^ -||taprtopcldfa.co^ -||taprtopcldfard.co^ -||taprtopcldfb.co^ -||tarandunlame.life^ -||taraponrigodon.guru^ -||tarblezetas.top^ -||tarebearpaw.top^ -||tarieoctant.top^ -||tarinstinctivewee.com^ -||taroads.com^ -||tarotaffirm.com^ -||tarresdiptych.top^ -||tarriesthetine.digital^ -||tarrilyathenee.com^ -||tarsiusbaconic.com^ -||tartanaanvils.com^ -||tartarsharped.com^ -||tartator.com^ -||tartingfirming.space^ -||tarvegaudery.top^ -||taryardtugged.com^ -||tasesetitoefany.info^ -||taskariose.com^ -||tastedflower.com^ -||tastednavigation.com^ -||tasterscaltha.com^ -||tastesnlynotqui.info^ -||tastesscalp.com^ -||tastierxyphoid.com^ -||tasvagaggox.com^ -||tat3ayogh6.com^ -||tatersbilobed.com^ -||tattepush.com^ -||tattoocommit.com^ -||tauaddy.com^ -||taughtwandamazingly.com^ -||tauphaub.net^ -||taurse.com^ -||tausaakcntiwp.com^ -||tauspenup.top^ -||tauvoojo.net^ -||tawniessmoot.com^ -||taxaixkpruxj.com^ -||taxedborley.com^ -||taxiconsiderable.com^ -||taximenmugwort.com^ -||taxismaned.top^ -||taxissung.com^ -||taxissunroom.com^ -||taxitesgyal.top^ -||taxiwayunmoral.com^ -||taxodiu2m2dis7tichum.com^ -||taxpillsqueal.com^ -||taxwaxgrego.com^ -||tazagdv.com^ -||tberjonk.com^ -||tbgmckdemnv.com^ -||tbiwkjomju.com^ -||tbmwkwbdcryfhb.xyz^ -||tbpot.com^ -||tbppfktchj.com^ -||tbradshedm.org^ -||tbsjkaorxwuchyb.com^ -||tbtqjbgrelc.xyz^ -||tbudpgepadxfoch.com^ -||tbudz.co.in^ -||tburmyor.com^ -||tbxnhnorzujvs.com^ -||tcaochocskid.com^ -||tcaukthwaalsoex.info^ -||tcawigurdy.top^ -||tcdyjyrj.com^ -||tcgjpib.com^ -||tchinaprecenta.info^ -||tcontametrop.info^ -||tcowmrj.com^ -||tcpcharms.com^ -||tcpnth.xyz^ -||tcppu.com^ -||tcprd.xyz^ -||tcwcs.com^ -||tcwhycdinjtgar.xyz^ -||tczzzlwpss.com^ -||td553.com^ -||td563.com^ -||td583.com^ -||td5xffxsx4.com^ -||tdditqosnpeo.com^ -||tdfkidmyynbqu.com^ -||tdgtkqtluuhjcfw.com^ -||tdmrfw.com^ -||tdqhlowkhxeohe.com^ -||tdspa.top^ -||teachingcosmetic.com^ -||teachingopt.com^ -||teachingrespectfully.com^ -||teachingwere.com^ -||teachleaseholderpractitioner.com^ -||teachmewind.com^ -||teads.tv^ -||teadwightshaft.com^ -||teaismonless.com^ -||tealsgenevan.com^ -||teamagonan.com^ -||teambetaffiliates.com^ -||teamshilarious.com^ -||teamsmarched.com^ -||teamsoutspoken.com^ -||teamsperilous.com^ -||teapotripencorridor.com^ -||teapotsobbing.com^ -||teaqrznepjv.com^ -||tearingsinnerprinciples.com^ -||tearnumeral.com^ -||tearsincompetentuntidy.com^ -||teasimilarman.com^ -||teaspoondaffodilcould.com^ -||teatycacicus.com^ -||teayeoutm.com^ -||teazledbyes.com^ -||teazledsudsman.top^ -||tebeveck.xyz^ -||tecaavdsy.com^ -||tecaitouque.net^ -||techclicks.net^ -||techiteration.com^ -||technicalityindependencesting.com^ -||techniciancocoon.com^ -||technicianforestallproper.com^ -||technoratimedia.com^ -||technoshadows.com^ -||techreviewtech.com^ -||tecominchisel.com^ -||tecuil.com^ -||teddedskeich.com^ -||teddersbeys.com^ -||teddynineteenthpreoccupation.com^ -||tedious-weight.pro -||tediousdetective.com^ -||tediousgorgefirst.com^ -||tediouswavingwhiskey.com^ -||tedtaxi.com^ -||tedtug.com^ -||tedxffemqblmk.xyz^ -||teedleeparchy.top^ -||teedoping.com^ -||teefousoju.com^ -||teefuthe.com^ -||teeglimu.com^ -||teelconch.com^ -||teemcapablespinal.com^ -||teemingweekend.com^ -||teemooge.net^ -||teenagerapostrophe.com^ -||teensexgfs.com^ -||teentitsass.com^ -||teenybarnacle.com^ -||teepoomo.xyz^ -||teethbatchevy.com^ -||teetusee.xyz^ -||teeveetakahe.space^ -||tefaighecmoa.com^ -||tefuse.com^ -||tegleebs.com^ -||tegronews.com^ -||teiankythes.top^ -||teicdn.com^ -||teiidsfortune.com^ -||teinlbw.com^ -||teknologia.co^ -||teksishe.net^ -||tel-tel-fie.com^ -||telechargementdirect.net^ -||telegramconform.com^ -||telegramsit.com^ -||telegramspun.com^ -||telegraphunreal.com^ -||telescopepigs.com^ -||telescopesemiprominent.com^ -||televeniesuc.pro^ -||televisionjitter.com^ -||telferstarsi.top^ -||telllwrite.com^ -||tellseagerly.com^ -||tellsringeye.com^ -||tellyowingrichest.com^ -||tellysetback.com^ -||telwrite.com^ -||temachaumble.top^ -||temksrtd.net^ -||tempbugs.com^ -||tempeorek.org^ -||temperacaimans.com^ -||temperaturecoalitionbook.com^ -||temperaturemarvelcounter.com^ -||tempergleefulvariability.com^ -||temperickysmelly.com^ -||temperrunnersdale.com^ -||templa.xyz^ -||templeoffendponder.com^ -||temporalirrelevant.com^ -||temporarilylavenderenforce.com^ -||temporarilyruinconsistent.com^ -||temporarilysearchingcomputer.com^ -||temporarilyunemployed.com^ -||temporarytv.com^ -||tempyodatos.com^ -||tend-new.com^ -||tendencysanction.com^ -||tenderlywomblink.com^ -||tendernessknockout.com^ -||tendrestases.top^ -||tenhousewife.com^ -||tenmtajhepsnt.com^ -||tensagesic.com^ -||tenseapprobation.com^ -||tensorsbancos.com^ -||tentativenegotiate.com^ -||tentativeroofearlap.com^ -||tenthgiven.com^ -||tenthsfrumpy.com^ -||tentioniaukmla.info^ -||tentmess.com^ -||tentubu.xyz^ -||tentyboma.top^ -||teogagsmm.com^ -||teojnbkldbyddi.com^ -||terabigyellowmotha.info^ -||teracent.net^ -||teracreative.com^ -||teraiwaxing.uno^ -||terbit2.com^ -||tercelangary.com^ -||tercetsjuza.space^ -||tercinegalumph.top^ -||terciogouge.com^ -||teredoknoit.com^ -||terelinkman.info^ -||termerspatrice.com^ -||terminalcomrade.com^ -||terminusbedsexchanged.com^ -||termslimemonks.com^ -||termswhopitched.com^ -||terra8nb.com^ -||terraceevident.com^ -||terracehypnotize.com^ -||terraclicks.com^ -||terrapsps.com^ -||terrapush.com^ -||terrasdsdstd.com^ -||terrible-angle.pro^ -||terribledeliberate.com^ -||terrificlukewarm.com^ -||terrifyingcovert.com^ -||terrifyingdeveloperreschedule.com^ -||tertracks.site^ -||tessratans.com^ -||testamenttakeoutkill.com^ -||testda.homes^ -||testifyconvent.com^ -||testisurbian.top^ -||testsite34.com^ -||tethsrump.com^ -||tetrdracausa.com^ -||tetrylscullion.com^ -||tettrro.info^ -||teughsavour.top^ -||tevdrduqq.com^ -||tevermotoriesmyst.info^ -||texacosimkin.com^ -||textbookmudbutterfly.com^ -||textilewhine.com^ -||textspannerreptile.com^ -||texturedetrimentit.com^ -||textureeffacepleat.com^ -||tfaln.com^ -||tfauwtzipxob.com^ -||tfb7jc.de^ -||tffkroute.com^ -||tfgdybgb.com^ -||tfiph.com^ -||tfla.xyz^ -||tfmgqdj.com^ -||tfmkdrcjpcdf.xyz^ -||tfosrv.com^ -||tfovmbclzpekgb.com^ -||tfqrqdpgarskxv.com^ -||tfsqxdc.com^ -||tfsxszw.com^ -||tgandmotivat.com^ -||tgboghbslgrkg.com^ -||tgdyrtkjmbgimg.com^ -||tgfqtwlwts.com^ -||tgolived.com^ -||tgsscmaxfi.com^ -||tgvlrlof.com^ -||thagrals.net^ -||thagroum.net^ -||thaickoo.net^ -||thaifteg.com^ -||thaiheq.com^ -||thaimoul.net^ -||thairoob.com^ -||thaistiboa.com^ -||thaitchy.net^ -||thaitingsho.info^ -||thaiwhou.com^ -||thakscholae.com^ -||thale-ete.com^ -||thalto.com^ -||thangetsoam.com^ -||thaninncoos.com^ -||thanksgivingdelights.com^ -||thanksgivingdelights.name^ -||thanksthat.com^ -||thanmounted.com^ -||thanosofcos5.com^ -||thanot.com^ -||thanstruggling.com^ -||tharbadir.com^ -||thatbeefysit.com^ -||thatmonkeybites3.com^ -||thatshab.website^ -||thaucmozsurvey.space^ -||thaudray.com^ -||thauftoa.net^ -||thaujauk.net^ -||thaust.com^ -||thautselr.com^ -||thautsie.net^ -||thauwhoxaulr.com^ -||thaveksi.net^ -||thawbootsamplitude.com^ -||thawheek.com^ -||thawpublicationplunged.com^ -||thayed.com^ -||theactualnewz.com^ -||theactualstories.com^ -||theadgateway.com^ -||theapple.site^ -||thearoids.com^ -||theathematica.info^ -||theatresintotales.com^ -||thebestgame2020.com^ -||thecalokas.com^ -||thecarconnections.com^ -||thechleads.pro^ -||thechronicles2.xyz^ -||theckouz.com^ -||thecoinworsttrack.com^ -||thecoolposts.com^ -||thecoreadv.com^ -||thecred.info^ -||thedentadsi24.com^ -||theehouho.xyz^ -||theekedgleamed.com^ -||theeksen.com^ -||theelrou.net^ -||theenfu.com^ -||theepsie.com^ -||theetholri.xyz^ -||theextensionexpert.com^ -||thefacux.com^ -||thefastpush.com^ -||thefenceanddeckguys.com^ -||thefreshposts.com^ -||theglossonline.com^ -||thegoodcaster.com^ -||theharityhild.buzz^ -||thehotposts.com^ -||thehypenewz.com^ -||theihafe.com^ -||theirbellsound.co^ -||theirbellstudio.co^ -||theirpervasivegrid.com^ -||theirsstrongest.com^ -||thekromp.com^ -||theloungenet.com^ -||thelrubawag.com^ -||thematicalaste.info^ -||thematicalastero.info^ -||thembriskjumbo.com^ -||themeillogical.com^ -||themeulterior.com^ -||themingmidland.top^ -||themselphenyls.com^ -||themselvesafloatmirth.com^ -||themselvesbike.com^ -||themselvestypewriter.com^ -||thenceafeard.com^ -||thenceextremeeyewitness.com^ -||thencemutinyhamburger.com^ -||thenceshapedrugged.com^ -||thenewstreams.com^ -||thenicenewz.com^ -||theod-omq.com^ -||theod-qsr.com^ -||theologicalpresentation.com^ -||theologizerg.xyz^ -||theoltoozle.com^ -||theonecdn.com^ -||theonesstoodtheirground.com^ -||theonlins.com^ -||theoriamungey.com^ -||theoryexempt.com^ -||theorysuspendlargest.com^ -||theoverheat.com^ -||thepeom.com^ -||theplayadvisor.com^ -||thepopads.com^ -||theprizesenses.life^ -||thepsimp.net^ -||therapistcrateyield.com^ -||therapistpopulationcommentary.com^ -||therapistpresumegooseberry.com^ -||thereafterreturnriotous.com^ -||therebycapablerising.com^ -||theredictatortreble.com^ -||therefinaldecided.com^ -||therefoortowa.com^ -||thereforedolemeasurement.com^ -||thereforeprecipitation.com^ -||thereforetreadvoluntarily.com^ -||therelimitless.com^ -||thereshotowner.com^ -||thereuponprevented.com^ -||thereuponscare.com^ -||thermometerdoll.com^ -||thermometerinconceivablewild.com^ -||thermometertally.com^ -||thescads.com^ -||thesekid.pro^ -||theshafou.com^ -||thesisadornpathetic.com^ -||thesisfluctuateunkind.com^ -||thesisreducedo.com^ -||thestatueoftheap.info^ -||thetaweblink.com^ -||thetchaixoo.com^ -||thethateronjus.com^ -||thetoptrust.com^ -||thetrendytales.com^ -||thetreuntalle.com^ -||theusualsuspects.biz^ -||theusualsuspectz.biz^ -||theweblocker.net^ -||thewhizmarketing.com^ -||thewiercopse.website^ -||thewowfeed.com^ -||thewulsair.com^ -||thewymulto.life^ -||theyattenuate.com^ -||theyeiedmadeh.info^ -||theyenglory.guru^ -||theythourbonusgain.life^ -||theyunm.com^ -||thgebtibfyry.com^ -||thibwejrqrmjstt.com^ -||thicackfyr.com^ -||thickcharityinextricable.com^ -||thickshortwage.com^ -||thickstatements.com^ -||thiefbeseech.com^ -||thievesanction.com^ -||thighargu.com^ -||thighleopard.com^ -||thighpoker.com^ -||thikraik.net^ -||thikreept.com^ -||thilsaig.xyz^ -||thin-hold.pro^ -||thingrealtape.com^ -||thingsdetermine.com^ -||thingsshrill.com^ -||thingstorrent.com^ -||thinkappetitefeud.com^ -||thinkingpresentimenteducational.com^ -||thinkingwindfallhandkerchief.com^ -||thinksuggest.org^ -||thinnertrout.com^ -||thinnerwishingeccentric.com^ -||thinperspectivetales.com^ -||thinrabbitsrape.com^ -||thinssence.top^ -||thirab.com^ -||thiraq.com^ -||third-tracking.com^ -||thirdreasoncomplex.com^ -||thirteenthadjectivecleaning.com^ -||thirteenvolunteerpit.com^ -||thirtycabook.com^ -||thirtyeducate.com^ -||thirtyfellowpresumptuous.com^ -||thiscdn.com^ -||thiscombinationdecorated.com^ -||thisiswaldo.com^ -||thisisyourprize.site^ -||thislaboratory.com^ -||thivelunliken.com^ -||thnqemehtyfe.com^ -||thoalugoodi.com^ -||thoartuw.com^ -||thofandew.com^ -||thofteert.com^ -||tholor.com^ -||thomasbarlowpro.com^ -||thompoot.com^ -||thongaspredo.com^ -||thonggrassdependant.com^ -||thongrooklikelihood.com^ -||thongsalhagi.com^ -||thongtechnicality.com^ -||thongwarily.com^ -||thoohizoogli.xyz^ -||thoorest.com^ -||thoorgins.com^ -||thoorteeboo.xyz^ -||thootsoumsoa.com^ -||thoralephebea.top^ -||thornfloatingbazaar.com^ -||thornrancorouspeerless.com^ -||thornyinitial.pro^ -||thoroughfarefeudalfaster.com^ -||thoroughlyhoraceclip.com^ -||thoroughlynightsteak.com^ -||thoroughlypantry.com^ -||thoroughlyshave.com^ -||thorperepresentation.com^ -||thorpeseriouslybabysitting.com^ -||thoseads.com^ -||thosecalamar.top^ -||thosecandy.com^ -||thosemungo.life^ -||thoudroa.net^ -||thoughtfulcontroversy.com^ -||thoughtfullyaskedscallop.com^ -||thoughtgraphicshoarfrost.com^ -||thoughtleadr.com^ -||thoughtlessindeedopposition.com^ -||thoupsuk.net^ -||thoupsurtafo.com^ -||thouptos.net^ -||thousandfixedlyyawn.com^ -||thousandinvoluntary.com^ -||thousicefall.top^ -||thoved.com^ -||thqgxvs.com^ -||threatdetect.org^ -||threatenedfallenrueful.com^ -||threateningeleven.com^ -||threatotherwise.com^ -||threeinters.com^ -||threeinvincible.com^ -||threerfdfgourgold.com^ -||thresholdunusual.com^ -||threwtestimonygrieve.com^ -||thrilledrentbull.com^ -||thrilledroundaboutreconstruct.com^ -||thrillignoringexalt.com^ -||thrillingpairsreside.com^ -||thrivebubble.com^ -||thrivenrewired.life^ -||throatchanged.com^ -||throatpoll.com^ -||throbscalpelaffirm.com^ -||throgetfd.com^ -||thronestartle.com^ -||throngsarseno.com^ -||thronosgeneura.com^ -||throughdazzlesponge.com^ -||throughdfp.com^ -||throwinterrogatetwitch.com^ -||throwsceases.com^ -||thrtle.com^ -||thrustlumpypulse.com^ -||thterras.com^ -||thtpxwnqfx.com^ -||thuah.com^ -||thuant.com^ -||thubanoa.com^ -||thuliagum.com^ -||thulrlidos.com^ -||thumeezy.xyz^ -||thump-night-stand.com^ -||thumpdrownthreat.com^ -||thumpssleys.com^ -||thunderdepthsforger.top^ -||thunderhead.com^ -||thunderous-request.pro^ -||thuphedsaup.com^ -||thupsirsifte.xyz^ -||thurnflfant.com^ -||thursailso.com^ -||thursdaydurabledisco.com^ -||thursdaymolecule.com^ -||thursdayoceanexasperation.com^ -||thursdaypearaccustomed.com^ -||thursdaysalesmanbarrier.com^ -||thusdrink.com^ -||thusenteringhypocrisy.com^ -||thusqhlt.com^ -||thuthoock.net^ -||thwartyoungly.com^ -||thycantyoubelike.com^ -||thymomamunify.top^ -||thyobscure.com^ -||thyouglasuntilj.info^ -||thyroidaketon.com^ -||ti583.com^ -||tiaoap.xyz^ -||tiaraedmessing.uno^ -||tiarasorthose.website^ -||tibacta.com^ -||tibcpowpiaqv.com^ -||tibertannoy.com^ -||tibykzo.com^ -||tic-tic-bam.com^ -||tic-tic-toc.com^ -||ticaframeofm.xyz^ -||ticalfelixstownru.info^ -||tichoake.xyz^ -||ticielongsuched.com^ -||tick-tock.net^ -||tickconventionaldegradation.com^ -||ticketnegligence.com^ -||ticketpantomimevirus.com^ -||ticketsrubbingroundabout.com^ -||ticketswinning.com^ -||ticklefell.com^ -||tickleinclosetried.com^ -||tickleorganizer.com^ -||tickmatureparties.com^ -||ticrite.com^ -||tictacfrison.com^ -||tictastesnlynot.com^ -||tidaltv.com^ -||tidalwavetrx.com^ -||tideairtight.com^ -||tidedfinned.top^ -||tidenoiseless.com^ -||tidint.pro^ -||tidual.com^ -||tidy-mark.com^ -||tidyinglionesscoffee.com^ -||tidyingpreludeatonement.com^ -||tidyinteraction.pro^ -||tidyllama.com^ -||tiemerry.com^ -||tierbignews.com^ -||tiesmmflv.com^ -||tigainareputaon.info^ -||tigerpush.net^ -||tightendescendantcuddle.com^ -||tighterinfluenced.com^ -||tighternativestraditional.com^ -||tignuget.net^ -||tigraiosar.space^ -||tigrisbewray.life^ -||tihursoa.net^ -||tiijdxto.com^ -||tikrailrou.com^ -||tiksgayowqln.com^ -||tiktakz.xyz^ -||tilesmuzarab.com^ -||tilpahaidance.space^ -||tiltgardenheadlight.com^ -||tilttrk.com^ -||tiltwin.com^ -||timcityinfirmary.com^ -||time4news.net^ -||timecrom.com^ -||timedvichy.com^ -||timeforagreement.com^ -||timelymongol.com^ -||timeone.pro^ -||timesresidential.com^ -||timesroadmapwed.com^ -||timetableitemvariables.com^ -||timetablewearmatrix.com^ -||timetoagree.com^ -||timidtraumaticterminate.com^ -||timingbitternessgreasy.com^ -||timmerintice.com^ -||timoggownduj.com^ -||timot-cvk.info^ -||timsef.com^ -||timtamti.net^ -||tinbuadserv.com^ -||tingeedy.xyz^ -||tingexcelelernodyden.info^ -||tingleswhisker.top^ -||tinkermockingmonitor.com^ -||tinkerwidth.com^ -||tinkhvy.uno^ -||tinkleswearfranz.com^ -||tinkletemporalbuy.com^ -||tinmanernst.com^ -||tinpotkyrios.life^ -||tinsus.com^ -||tintedparticular.com^ -||tintersloggish.com^ -||tintprestigecrumble.com^ -||tiny-atmosphere.com^ -||tionakasulbac.net^ -||tionforeathyoug.info^ -||tiotyuknsyen.org^ -||tipcatscarola.com^ -||tipchambers.com^ -||tipcupids.com^ -||tipforcefulmeow.com^ -||tiplesstharms.top^ -||tipphotographermeans.com^ -||tiprd.xyz^ -||tipsembankment.com^ -||tipslyrev.com^ -||tiptoecentral.com^ -||tiptoesstbd.com^ -||tipupgradejack.com^ -||tiqjubxy.com^ -||tiqkfjgafckf.com^ -||tirebrevity.com^ -||tirecolloquialinterest.com^ -||tireconfessed.com^ -||tiredomlovered.com^ -||tiresomemuggyeagerly.com^ -||tiresomereluctantlydistinctly.com^ -||tiringinadmissiblehighlight.com^ -||tirosagalite.com^ -||titanads1.com^ -||titanads2.com^ -||titanads3.com^ -||titanads4.com^ -||titanads5.com^ -||titanicimmunehomesick.com^ -||titanictooler.top^ -||titaniumveinshaper.com^ -||titlerwilhelm.com^ -||tittyptinoid.com^ -||titulionlap.top^ -||tiuweaser.top^ -||tivapheegnoa.com^ -||tivatingotherem.info^ -||tivvsaunec.com^ -||tiwbgqddmz.com^ -||tiwhaiph.net^ -||tiwouboa.com^ -||tixir.xyz^ -||tiypa.com^ -||tizadumbed.com^ -||tjaard11.xyz^ -||tjavravj.com^ -||tjgpeswdkrym.com^ -||tjibxzqxtl.com^ -||tjnkrrygmgp.com^ -||tjnvqptv.com^ -||tjsicyijerce.com^ -||tjtmjjigtdoah.com^ -||tjuhdrm.com^ -||tjxfkmlhubh.com^ -||tjxjpqa.com^ -||tkaqlvqjnn.com^ -||tkauru.xyz^ -||tkbo.com^ -||tkhwslqsmjwingf.com^ -||tkickhhylnvm.com^ -||tkidcigitrte.com^ -||tkifahjutoj.com^ -||tkqjiukbtjboub.com^ -||tkyzzjfpiqj.com^ -||tl2go.com^ -||tleboywhowa.com^ -||tllfouwvkqza.com^ -||tlolaxalxdk.com^ -||tlootas.org^ -||tlprbzoi.com^ -||tlrkcj17.de^ -||tltfufoegaeupev.com^ -||tluicnvqxbjdt.com^ -||tlvkywwnuvgtq.com^ -||tlybabet.com^ -||tlznblypsyyr.com^ -||tm5kpprikka.com^ -||tmb5trk.com^ -||tmematapyramid.space^ -||tmenfhave.info^ -||tmesesunfound.top^ -||tmftsdjyahbhi.com^ -||tmh4pshu0f3n.com^ -||tmjhdyghjm.com^ -||tmjididaqbom.com^ -||tmnbocewmddu.com^ -||tmnsstf.com^ -||tmrjaghtledm.com^ -||tmrjmp.com^ -||tmulppw.com^ -||tmyzer.com^ -||tmztcfp.com^ -||tnbedvhussaxz.com^ -||tncomg.com^ -||tncred.com^ -||tnctufo.com^ -||tneca.com^ -||tnhaebl.com^ -||tniupjzpmb.com^ -||tnjsbbt.com^ -||tnnpozuqdhes.com^ -||tnpads.xyz^ -||tnqsnxsdt.com^ -||tnsmufijcnulqtl.com^ -||tnudztz.com^ -||tnwlpbxyto.com^ -||toabaise.net^ -||toabuck.xyz^ -||toadcampaignruinous.com^ -||toaglegi.com^ -||toajephu.com^ -||toapodazoay.com^ -||toastcomprehensiveimperturbable.com^ -||toastspinner.com^ -||toawaups.net^ -||toawhulo.com^ -||tobaccocentgames.com^ -||tobaitsie.com^ -||tobaltoyon.com^ -||toboads.com^ -||toccatamotific.com^ -||todaysbestsellers.com^ -||toddernovas.digital^ -||toddlecausebeeper.com^ -||toddlespecialnegotiate.com^ -||toddydelayer.com^ -||toeapesob.com^ -||toenaildemand.com^ -||toenailmutenessalbert.com^ -||toenailplaywright.com^ -||toenailtrishaw.com^ -||toffeeallergythrill.com^ -||toffeebigot.com^ -||toffeecollationsdogcollar.com^ -||toffiesoxgall.com^ -||toftheca.buzz^ -||togataurnfuls.com^ -||togenron.com^ -||togetherballroom.com^ -||togetherinvitation.com^ -||toglooman.com^ -||togranbulla.com^ -||togtholism.com^ -||toiletallowingrepair.com^ -||toiletpaper.life^ -||toiletunlikely.com^ -||toisingdubbah.top^ -||toisingthecia.top^ -||tokenads.com^ -||tokenvolatilebreaker.com^ -||tokofyttes.com^ -||tokyokumbuk.com^ -||toldclassifiedhardware.com^ -||tollcondolences.com^ -||tollyeric.com^ -||tolrock.com^ -||tolstoyclavers.top^ -||toltooth.net^ -||tolverhyple.info^ -||tolyafbnjt9dedjj10.com^ -||tomatoescampusslumber.com^ -||tomatoesstripemeaningless.com^ -||tomatohackblobs.com^ -||tomatoqqamber.click^ -||tomawilea.com^ -||tombclients.com^ -||tomekas.com^ -||tomeleafs.com^ -||tomepermissible.com^ -||tomladvert.com^ -||tomornpinjane.com^ -||tomorroweducated.com^ -||tomorrowtardythe.com^ -||tomponzag.top^ -||tonapplaudfreak.com^ -||toncooperateapologise.com^ -||tondikeglasses.com^ -||toneadds.com^ -||toneernestport.com^ -||toneincludes.com^ -||tonemedia.com^ -||tonesnorrisbytes.com^ -||tongabanky.com^ -||tongsgodforsaken.com^ -||tongsscenesrestless.com^ -||tonguedvulturn.com^ -||tonicdivedfounded.com^ -||tonicneighbouring.com^ -||toninjaska.com^ -||tonksoftie.top^ -||tonqvqwtvksh.com^ -||tonsilyearling.com^ -||tontrinevengre.com^ -||toojaipi.net^ -||toolspaflinch.com^ -||toolsyjejune.com^ -||toolughitilagu.com^ -||toomeepi.xyz^ -||toonoost.net^ -||toopsoug.net^ -||toorphanage.com^ -||tooshecu.com^ -||toothacheformer.com^ -||toothbrushconceitedsemi.com^ -||toothbrushlimbperformance.com^ -||toothcauldron.com^ -||toothoverdone.com^ -||toothpasteginnysorrow.com^ -||toothstrike.com^ -||toothtranquilizerdeliverance.com^ -||toothyexpirer.com^ -||toovoala.net^ -||top-offers1.com^ -||top-performance.best^ -||top-performance.club^ -||top-performance.top^ -||top-performance.work^ -||topadbid.com^ -||topadsservices.com^ -||topadvdomdesign.com^ -||topatincompany.com^ -||topbestscoreapp.com^ -||topbetfast.com^ -||topblockchainsolutions.nl^ -||topcastshoran.space^ -||topcreativeformat.com^ -||topdisplaycontent.com^ -||topdisplayformat.com^ -||topdisplaynetwork.com^ -||topduppy.info^ -||topflownews.com^ -||topfultroggin.click^ -||tophaw.com^ -||topiccorruption.com^ -||toplesscrimps.com^ -||toplinkz.ru^ -||topmostolddoor.com^ -||topmoststramp.com^ -||topmusicalcomedy.com^ -||topnews-24.com^ -||topnewsfeeds.net^ -||topnewsgo.com^ -||topperformance.xyz^ -||topprofitablecpm.com^ -||topprofitablegate.com^ -||topqualitylink.com^ -||toprevenuecpmnetwork.com^ -||toprevenuegate.com^ -||toprevenuenetwork.com^ -||topsecurity2024.com^ -||topsrcs.com^ -||topsummerapps.net^ -||topswp.com^ -||toptoys.store^ -||toptrendyinc.com^ -||toquetbircher.com^ -||torajaimbrium.top^ -||torattatachan.com^ -||torcheszocalo.top^ -||torchtrifling.com^ -||toreddorize.com^ -||torioluor.com^ -||toromclick.com^ -||tororango.com^ -||torpsol.com^ -||torrango.com^ -||torrent-protection.com^ -||torrentsafeguard.com^ -||torrentsuperintend.com^ -||torselinly.com^ -||toselfless.com^ -||tosfeed.com^ -||toshlypilate.com^ -||toskmisway.com^ -||tosolroa.xyz^ -||tosspowers.com^ -||tosssix.com^ -||tosuicunea.com^ -||totalab.online^ -||totalab.xyz^ -||totalactualnewz.com^ -||totaladblock.com^ -||totalcoolblog.com^ -||totalfreshwords.com^ -||totallyplaiceaxis.com^ -||totalnicefeed.com^ -||totalnicenewz.com^ -||totalnicestories.com^ -||totalsatisfactorily.com^ -||totalwowblog.com^ -||totalwownews.com^ -||totemcash.com^ -||totentacruelor.com^ -||totientyakshi.website^ -||totlnkbn.com^ -||totlnkcl.com^ -||totogetica.com^ -||totoro2011.xyz^ -||totoromeeds.life^ -||touaz.xyz^ -||touched35one.pro^ -||touchtamilic.com^ -||touchyeccentric.com^ -||touficpaloma.com^ -||toughdrizzleleftover.com^ -||tougherrancor.website^ -||toughtoxacid.com^ -||toupsonie.com^ -||touptaisu.com^ -||touptaiw.xyz^ -||touracopilaf.com^ -||touracostephe.com^ -||tourismpatron.com^ -||tournamentdouble.com^ -||tournamentfosterchild.com^ -||tournamentsevenhung.com^ -||touroumu.com^ -||toutedwaeness.guru^ -||touzia.xyz^ -||tovanillitechan.com^ -||tovespiquener.com^ -||towageurson.top^ -||towardcorporal.com^ -||towardsflourextremely.com^ -||towardsmainlandpermissible.com^ -||towardsturtle.com^ -||towardwhere.com^ -||towcoaah.com^ -||towerdesire.com^ -||towersalighthybrids.com^ -||towerslady.com^ -||townrusisedprivat.info^ -||townstainpolitician.com^ -||toxaminbowtell.com^ -||toxemiaslier.com^ -||toxicfluency.com^ -||toxonetwigger.com^ -||toxtren.com^ -||toyarableits.com^ -||toyjofkkcdyr.com^ -||toykifojsyufdba.xyz^ -||toymancartop.top^ -||toymenbenes.uno^ -||toysrestrictcue.com^ -||tozoruaon.com^ -||tozqvor.com^ -||tozuoi.xyz^ -||tp1jcgl644jk.com^ -||tpbsxcsa.com^ -||tpcenzbgtybq.com^ -||tpciqzm.com^ -||tpcrfdnq.com^ -||tpcserve.com^ -||tpdads.com^ -||tpdethnol.com^ -||tpjageoaehyir.com^ -||tpmedia-reactads.com^ -||tpmr.com^ -||tpn134.com^ -||tpopularcldfa.co^ -||tpopularcldfb.co^ -||tposkglvqookv.xyz^ -||tpvrqkr.com^ -||tpwtjya.com^ -||tpydhykibbz.com^ -||tpyfixoqbo.com^ -||tpzzdrxnp.com^ -||tqgrrfssodfo.com^ -||tqkbdxfzmbjp.com^ -||tqlkg.com^ -||tqlvkfgnrsd.com^ -||tqrjlqt.com^ -||tqsrtyqpoeyp.com^ -||tquvbfl.com^ -||tqwxtglpr.com^ -||tqxwilx.com^ -||tr-boost.com^ -||tr-bouncer.com^ -||tr-monday.xyz^ -||tr-rollers.xyz^ -||tr-usual.xyz^ -||tr563.com^ -||tracepath.cc^ -||tracereceiving.com^ -||tracevictory.com^ -||track-victoriadates.com^ -||track.afrsportsbetting.com^ -||track.totalav.com^ -||track4ref.com^ -||trackad.cz^ -||trackad2.com^ -||trackapi.net^ -||tracker-2.com^ -||tracker-sav.space^ -||tracker-tds.info -||tracker-tds.info^ -||tracker19875.space^ -||tracker2.space^ -||trackerrr.com^ -||trackeverything.co^ -||trackingmembers.com^ -||trackingrouter.com^ -||trackingshub.com^ -||trackingtraffo.com^ -||trackmedclick.com^ -||trackmundo.com^ -||trackpshgoto.win^ -||trackpush.com^ -||trackr1.co.in^ -||trackr5.co.in^ -||trackr6.co.in^ -||tracks20.com^ -||tracksfaster.com^ -||trackspeeder.com^ -||trackstracker.com^ -||tracksystem.online^ -||tracktds.com^ -||tracktds.live^ -||tracktilldeath.club^ -||tracktraf.com^ -||trackvbmobs.click^ -||trackvol.com^ -||trackvoluum.com^ -||trackwilltrk.com^ -||trackytrack02.com^ -||tracot.com^ -||tractorfoolproofstandard.com^ -||tractusoutsum.com^ -||tradbypass.com^ -||trade46-q.com^ -||tradeadexchange.com^ -||trading21s.com^ -||tradingken.com^ -||tradingpancreasdevice.com^ -||traditionallyobjectlessblinked.com^ -||traditionallyrecipepiteous.com^ -||traff01traff02.site^ -||traffdaq.com^ -||traffic.adexprtz.com^ -||traffic.club^ -||traffic.name^ -||trafficad-biz.com^ -||trafficbass.com^ -||trafficborder.com^ -||trafficbottomgrains.com^ -||trafficdecisions.com^ -||trafficdok.com^ -||trafficfactory.biz^ -||traffichunt.com^ -||trafficircles.com^ -||trafficjunky.net^ -||trafficlide.com^ -||trafficmediaareus.com^ -||trafficmoon.com^ -||trafficmoose.com^ -||trafficportsrv.com^ -||trafficshop.com^ -||traffictraders.com^ -||traffmgnt.com^ -||traffmgnt.name^ -||traffoxx.uk^ -||trafget.com^ -||trafogon.com^ -||trafsupr.com^ -||trafyield.com^ -||tragedyhaemorrhagemama.com^ -||tragency-clesburg.icu^ -||tragicbeyond.com^ -||tragicleftago.com^ -||traglencium.com^ -||traileroutlinerefreshments.com^ -||trainedhomecoming.com^ -||trainedpiano.com^ -||trainsrolldrunken.com^ -||traintravelingplacard.com^ -||traiss.com^ -||trakaff.net^ -||traktrafficflow.com^ -||tramplayeranyd.info^ -||trampphotographer.com^ -||trampplantacre.com^ -||trandgid.com^ -||trandlife.info^ -||tranquilizerproposedattribute.com^ -||transactionsbeatenapplication.com^ -||transactionsparasite.com^ -||transcriptcompassionacute.com^ -||transcriptjeanne.com^ -||transcriptobligegenerations.com^ -||transferloitering.com^ -||transferzenad.com^ -||transformationdecline.com^ -||transformignorant.com^ -||transgressmeeting.com^ -||transgressreasonedinburgh.com^ -||transientblobexaltation.com^ -||transitionfrenchdowny.com^ -||translatingimport.com^ -||translationbuddy.com^ -||transmitterincarnatebastard.com^ -||transportationdealer.com^ -||transportationdelight.com^ -||trapexpansionmoss.com^ -||trappedpetty.com^ -||trapskating.com^ -||trarie.com^ -||trashdisguisedextension.com^ -||trashipama.com^ -||tratbc.com^ -||traumatizedenied.com^ -||traumavirus.com^ -||traung.com^ -||traveladvertising.com^ -||traveldurationbrings.com^ -||travelingbeggarlyregions.com^ -||travelingfreshman.com^ -||travelingshake.com^ -||travelledelkremittance.com^ -||travelledpropagandaconveniences.com^ -||travellerkalgan.com^ -||travelscream.com^ -||traveltop.org^ -||traversefloral.com^ -||travescorylus.com^ -||travidia.com^ -||trawahdh2hd8nbvy09.com^ -||trawibosxlc.com^ -||trawlselymus.top^ -||traydungeongloss.com^ -||traymute.com^ -||trayzillion.com^ -||trazgki.com^ -||trblocked.com^ -||trc85.com^ -||trccmpnlnk.com^ -||trck.wargaming.net^ -||trckswrm.com^ -||trdnewsnow.net^ -||trdwvyjj.xyz^ -||treacherouscarefully.com^ -||treadhospitality.com^ -||treasonemphasis.com^ -||treasureantennadonkey.com^ -||treasured-dad.pro^ -||treasureralludednook.com^ -||treasureravenvulgar.com^ -||treathuffily.com^ -||treatmentaeroplane.com^ -||treatyaccuserevil.com^ -||treatyintegrationornament.com^ -||trebghoru.com^ -||trebleheady.com^ -||treblescholarfestival.com^ -||trebleuniversity.com^ -||trecurlik.com^ -||trecut.com^ -||treegreeny.org^ -||treehusbanddistraction.com^ -||treenghsas.com^ -||treepullmerriment.com^ -||trehtnoas.com^ -||treitrehagdin.top^ -||treitrejewfish.com^ -||treklizard.com^ -||trekstereo.com^ -||trellian.com^ -||trembleday.com^ -||tremendouspresentation.pro^ -||tremorhub.com^ -||trendmouthsable.com^ -||trenhsasolc.com^ -||trenhsmp.com^ -||trenpyle.com^ -||tretmumbel.com^ -||trewnhiok.com^ -||treycircle.com^ -||treyyejhcwyhn.com^ -||trftopp.biz^ -||tri.media^ -||triadmedianetwork.com^ -||trialdepictprimarily.com^ -||trialsreticence.com^ -||trianglecollector.com^ -||tribalfusion.com^ -||tribespiraldresser.com^ -||tributesexually.com^ -||tricemortal.com^ -||tricklesmartdiscourage.com^ -||trickvealwagon.com^ -||trickynationalityturn.com^ -||triedstrickenpickpocket.com^ -||trienestooth.com^ -||triersbed.top^ -||triflecardslouse.com^ -||trigami.com^ -||triggersathlete.com^ -||triglyheiled.website^ -||trigscocos.com^ -||trikerboughs.com^ -||trim-goal.com^ -||trimpagkygg.com^ -||trimpur.com^ -||trimregular.com^ -||trinitydiverge.com^ -||trionalpistler.com^ -||tripledeliveryinstance.com^ -||triplescrubjenny.com^ -||tripphloems.com^ -||tripsstyle.com^ -||tripsthorpelemonade.com^ -||tristeacream.uno^ -||triumphantplace.com^ -||triviasplinty.com^ -||trizonemellite.com^ -||trjxehoxjcbxvuc.xyz^ -||trk-aspernatur.com^ -||trk-consulatu.com^ -||trk-epicurei.com^ -||trk-imps.com^ -||trk-vod.com^ -||trk.nfl-online-streams.live^ -||trk023.com^ -||trk3000.com^ -||trk4.com^ -||trk72.com^ -||trkad.network^ -||trkerupper.com^ -||trkinator.com^ -||trkings.com^ -||trkingthebest.net^ -||trkk4.com^ -||trklnks.com^ -||trklvs.com^ -||trkn1.com^ -||trknext.com^ -||trknk.com^ -||trkr.technology^ -||trkrdel.com^ -||trkrspace.com^ -||trks.us^ -||trksmorestreacking.com^ -||trktcmdqko.com^ -||trktnc.com^ -||trkunited.com^ -||trlxcf05.com^ -||trmit.com^ -||trmnsite.com^ -||trmobc.com^ -||troduc.com^ -||trokemar.com^ -||trolleydemocratic.com^ -||trolleydryerfunds.com^ -||trolleytool.com^ -||trollsvide.com^ -||trombocrack.com^ -||tronads.io^ -||tronmachi.com^ -||troolyhonks.com^ -||troopsassistedstupidity.com^ -||troopseruptionfootage.com^ -||troopslinecut.website^ -||tropaiariskful.top^ -||tropbikewall.art^ -||tropylskins.com^ -||trotconceivedtheological.com^ -||trothko.com^ -||trotolhonor.com^ -||troublebarbara.com^ -||troubledcontradiction.com^ -||troubleextremityascertained.com^ -||troublesomeleerycarry.com^ -||troutgorgets.com^ -||troutrequires.com^ -||trowingpaba.website^ -||trpohkfedwway.xyz^ -||trpool.org^ -||trpop.xyz^ -||trqwuvidegayhr.com^ -||trrmmxjst.com^ -||trsbmiw.com^ -||trskwvl.com^ -||trtjigpsscmv9epe10.com^ -||trtxdtigvap.com^ -||truanet.com^ -||truantslaughterbrew.com^ -||truantsnarestrand.com^ -||truazka.xyz^ -||truceforensicswaterfall.com^ -||trucemallow.website^ -||trulydevotionceramic.com^ -||trulyunderestimatediscard.com^ -||trumppuffy.com^ -||trumpsurgery.com^ -||trumpthisaccepted.com^ -||truoqtqjyxes.com^ -||trust.zone^ -||trustaffs.com^ -||trustbummler.com^ -||trustedachievementcontented.com^ -||trustedcpmrevenue.com^ -||trustedgatetocontent.com^ -||trustedpeach.com^ -||trustedstream.life^ -||trustedzone.info^ -||trustflayer1.online^ -||trustlearningclearly.com^ -||trustmaxonline.com^ -||trustworthyturnstileboyfriend.com^ -||trusty-research.com^ -||trustyable.com^ -||trustyfine.com^ -||trustzonevpn.info^ -||truthfulanomaly.com^ -||truthfulplanninggrasp.com^ -||truthhascudgel.com^ -||truthordarenewsmagazine.com^ -||truthvexedben.com^ -||tryingacquaintance.com^ -||trymynewspirit.com^ -||trymysadoroh.site^ -||trynhassd.com^ -||trythe-letsketos.com^ -||ts134lnki1zd5.pro^ -||tsapphires.buzz^ -||tsapphiresand.info^ -||tsaristcanapes.com^ -||tsarkinds.com^ -||tsbntfjyijlx.com^ -||tsccqvlqjpchjcl.com^ -||tseywo.com^ -||tsfpvcpdpofbc.com^ -||tsiwoulukdli.xyz^ -||tsiwqtng8huauw30n.com^ -||tslomhfys.com^ -||tsml.fun^ -||tsmqbyd.com^ -||tspops.com^ -||tsqabdrgxourg.com^ -||tsrpcf.xyz^ -||tsrpif.xyz^ -||tsrrbok.com^ -||tssandycateup.com^ -||tstats-13fkh44r.com^ -||tswtwufqx.com^ -||tswyxkasqago.com^ -||tsyfnhd.com^ -||tsyndicate.com^ -||tszuhznuteoxkx.com^ -||ttbm.com^ -||ttdmrvck.com^ -||ttgmjfgldgv9ed10.com^ -||tthathehadstop.info^ -||ttlmqhbbkd.com^ -||ttlphmgvnjuilta.com^ -||ttney.com^ -||ttnrd.com^ -||ttoc8ok.com^ -||ttsbtdgdo.com^ -||ttwmed.com^ -||ttzmedia.com^ -||tubbeckfresher.life^ -||tubberlo.com^ -||tubbyconversation.pro^ -||tubeadvisor.com^ -||tubecoast.com^ -||tubecorp.com^ -||tubecup.net^ -||tubeelite.com^ -||tubeformula.com^ -||tubehole.com^ -||tubemov.com^ -||tubencyclopaediaswine.com^ -||tubenest.com^ -||tubepure.com^ -||tuberay.com^ -||tuberise.com^ -||tubestrap.com^ -||tubeultra.com^ -||tubewalk.com^ -||tubqwqvsfusjqq.com^ -||tubroaffs.org^ -||tubsougn.com^ -||tubulesstodger.top^ -||tucess.com^ -||tuckedtucked.com^ -||tuckerheiau.com^ -||tucktunnelsnowman.com^ -||tuddicijloxb.com^ -||tuesdayfetidlit.com^ -||tuffoonincaged.com^ -||tufteraureous.digital^ -||tuglikevertigo.com^ -||tuhwjkesxo.com^ -||tuitionpancake.com^ -||tujofclqgazqa.com^ -||tujourda.net^ -||tukeelsy.com^ -||tukulordimera.com^ -||tulasitoughie.com^ -||tuleceti.com^ -||tulipmagazinesempire.com^ -||tulipsameedge.com^ -||tumbaklack.com^ -||tumblebit.com^ -||tumblebit.org^ -||tumblehisswitty.com^ -||tumbleobjectswedding.com^ -||tumbleroutlook.com^ -||tumfiegoblins.life^ -||tumordied.com^ -||tumri.net^ -||tumultmarten.com^ -||tumultuserscheek.com^ -||tunatastesentertained.com^ -||tundrapinjane.com^ -||tunedecided.com^ -||tuneshave.com^ -||tunisiarivel.top^ -||tunnelbuilder.top^ -||tupwiwm.com^ -||tuqgtpirrtuu.com^ -||tuqizi.uno^ -||tuquesrefuser.website^ -||tur-tur-key.com^ -||turbanconstituent.com^ -||turbanmadman.com^ -||turbansembiid.space^ -||turbansour.com^ -||turboadv.com^ -||turbocap.net^ -||turbolit.biz^ -||turbostats.xyz^ -||turbulent-bedroom.pro^ -||turbulentfeatherhorror.com^ -||turbulentimpuresoul.com^ -||turdauch.xyz^ -||turdinexylenyl.guru^ -||turdsarnatta.com^ -||turdwwakrh.com^ -||tureukworektob.info^ -||turfedtaboret.com^ -||turfinggneiss.com^ -||turganic.com^ -||turgelrouph.com^ -||turkeybegan.com^ -||turkhawkswig.com^ -||turkslideupward.com^ -||turktransparent.com^ -||turmoilmeddle.com^ -||turmoilragcrutch.com^ -||turncdn.com^ -||turnhub.net^ -||turnminimizeinterference.com^ -||turnreview.com^ -||turnstileunavailablesite.com^ -||turpentinecomics.com^ -||tururu.info^ -||turvykingly.com^ -||tuscanyaskant.com^ -||tuskhautein.com^ -||tusno.com^ -||tussisinjelly.com^ -||tutorlylaggard.top^ -||tutphiarcox.com^ -||tutsterblanche.com^ -||tutvp.com^ -||tuudrwnbglqqvm.com^ -||tuvlqcjff.com^ -||tuvwryunm.xyz^ -||tuwaqtjcood.com^ -||tuwopnajwv.com^ -||tuxbpnne.com^ -||tuxycml.com^ -||tuxzlhrwejszu.com^ -||tv1s4d6klh4n.com^ -||tvbsfmswrjap.com^ -||tvdbspojay.com^ -||tvgxhvredn.xyz^ -||tvkaimh.com^ -||tvlaavcxdxlqan.com^ -||tvprocessing.com^ -||tvqqrycnutpp.com^ -||tvvon.coreforger.top^ -||tvxrpdfgitlbsb.xyz^ -||twangruble.top^ -||twaonhcjwoaouj.com^ -||twazzyoidwlfe.com^ -||twddsnvl.com^ -||tweakarrangement.com^ -||twelfthcomprehendgrape.com^ -||twelfthdistasteful.com^ -||twelvemissionjury.com^ -||twelvethighpostal.com^ -||twentiesinquiry.com^ -||twentiethparticipation.com^ -||twentyatonementflowing.com^ -||twentyaviation.com^ -||twentycustomimprovement.com^ -||twentydisappearance.com^ -||twentydruggeddumb.com^ -||twentyexaggerate.com^ -||twentyqueen.com^ -||twerwew.org^ -||twigdose.com^ -||twigstandardexcursion.com^ -||twigwisp.com^ -||twilightsentiments.com^ -||twilightsuburbmill.com^ -||twinadsrv.com^ -||twinfill.com^ -||twinkle-fun.net^ -||twinklecourseinvade.com^ -||twinnercarrat.digital^ -||twinpinenetwork.com^ -||twinrdack.com^ -||twinrdengine.com^ -||twinrdsrv.com^ -||twinrdsyn.com^ -||twinrdsyte.com^ -||twinrtb.com^ -||twinseller.com^ -||twinsoflave.com^ -||twinsrv.com^ -||twirlninthgullible.com^ -||twistads.com^ -||twistconcept.com^ -||twistcrevice.com^ -||twistedhorriblybrainless.com^ -||twisthello.com^ -||twithdifyferukentas.info^ -||twittad.com^ -||twkcbfwam.com^ -||twnrydt.com^ -||twohrxbrns.com^ -||twovqti.com^ -||twpasol.com^ -||twrencesprin.info^ -||twsylxp.com^ -||twtad.com^ -||twtdkzg.com^ -||twvybupqup.xyz^ -||twwxjqsk.com^ -||twztdhdgjtg.com^ -||txcmjo.com^ -||txeefgcutifv.info^ -||txgeszx.com^ -||txhrnluuyt.com^ -||txjhmbn.com^ -||txnhmdvka.com^ -||txouliypi.com^ -||txpwtidvgvt.com^ -||txrhpjddhbal.com^ -||txtcompert.com^ -||txtsetzdcxnrc.com^ -||txumirk.com^ -||txwhfmxlmu.com^ -||txzaazmdhtw.com^ -||txzdbxtyhebo.com^ -||tyblecnuft.com^ -||tychismfeasts.com^ -||tychon.bid^ -||tyhjukinimoqfgv.com^ -||tyhlwigp.com^ -||tyhwheveeshngi.xyz^ -||tyingentered.com^ -||tylcpcikj.com^ -||tylfgkf.com^ -||tylocintriones.com^ -||tylosischewer.com^ -||tynessubpart.com^ -||tyningtufa.top^ -||tynt.com^ -||typablecyclide.com^ -||typerealisepredict.com^ -||typescoordinate.com^ -||typesluggage.com^ -||typicalappleashy.com^ -||typicallyapplause.com^ -||typicalsecuritydevice.com^ -||typiccor.com^ -||typiconrices.com^ -||typojesuit.com^ -||typsxumcsjw.com^ -||tyqptghilt.com^ -||tyract.com^ -||tyranbrashore.com^ -||tyranpension.com^ -||tyrds.com^ -||tyresleep.com^ -||tyrotation.com^ -||tyserving.com^ -||tystnnnrluv.com^ -||tytlementwre.info^ -||tytyeastfeukufun.info^ -||tywdchppfgds.xyz^ -||tzaho.com^ -||tzaqkp.com^ -||tzaristdiploma.com^ -||tzegilo.com^ -||tzgcwfvrf.com^ -||tzgygfy.com^ -||tzngtmzpvysh.com^ -||tzrlfzwyicvj.com^ -||tzuhumrwypw.com^ -||tzvojcc.com^ -||tzvpn.site^ -||tzvroyuhmkvlsa.com^ -||tzyjotwoocku.com^ -||u-50-rbdm.com^ -||u0054.com^ -||u0064.com^ -||u1trkqf.com^ -||u21drwj6mp.com^ -||u29qnuav3i6p.com^ -||u595sebqih.com^ -||u9axpzf50.com^ -||uaaftpsy.com^ -||uabpuwz.com^ -||uads.cc^ -||uads.digital^ -||uads.guru^ -||uads.info^ -||uads.pw^ -||uads.space^ -||uads.store^ -||uahpycewbx.com^ -||uamoctchgmkya.com^ -||uanbpywrumpuj.com^ -||uaputgtwlhkmtr.com^ -||uavbgdw.com^ -||uawvmni.com^ -||uazwqqlt.com^ -||ubadzufyfjcd.com^ -||ubbfpm.com^ -||ubdiysvv.com^ -||ubdjdtraxe.com^ -||ubeestis.net^ -||uberouspolitei.com^ -||ubiirddtnmja.com^ -||ubilinkbin.com^ -||ubish.com^ -||uboungera.com^ -||ubsgssex.com^ -||ubsjyqfek.com^ -||ubthyoitrr.com^ -||ubzjpnrr.com^ -||ubzsvgyo.com^ -||ucationinin.info^ -||ucationininancee.info -||ucazgetyk.com^ -||ucbedayxxqpyuo.xyz^ -||ucconn.live^ -||ucdbepelfi.com^ -||ucgnawffqess.xyz^ -||ucgxnstr.com^ -||ucheephu.com^ -||uchxtxel.com^ -||uckbcroqkb.com^ -||uclrlydjewxcl.xyz^ -||ucocesisfulyly.info^ -||ucqbhkrzsqpqmg.com^ -||ucteqibnblrjhpb.com^ -||ucurjydbxbz.com^ -||udairgawob.net^ -||udalmancozen.com^ -||udarem.com^ -||udbaa.com^ -||udderexplosion.com^ -||udegepq.com^ -||udetqwj.com^ -||udfwwbkxremv.xyz^ -||udgpjfdzxrvecn.com^ -||udinugoo.com^ -||udksgsuvcpm.com^ -||udlqdkqdfymq.com^ -||udmserve.net^ -||udookrou.com^ -||udraokrou.com^ -||udtropary.top^ -||uduhytyllobm.com^ -||udzpel.com^ -||uecppuciocadi.com^ -||uedvxswwfub.com^ -||uejntsxdffp.com^ -||uejqwhabj.xyz^ -||uel-uel-fie.com^ -||uelllwrite.com^ -||uepkcdjgp.com^ -||ueuodgnrhb.com^ -||uewztebe.com^ -||ufaexpert.com^ -||ufbnqsfbpkmindy.com^ -||ufeevhhnjilfeo.com^ -||ufgkypfhervr.com^ -||ufiledsit.com^ -||ufinkln.com^ -||ufoomals.net^ -||ufpcdn.com^ -||ufpfbjcwdqumph.com^ -||ufphkyw.com^ -||ufqxgccf.com^ -||ufzanvc.com^ -||ufzqrmflbnlze.com^ -||ugahutoa.com^ -||ugailidsay.xyz^ -||ugalia.com^ -||ugawnotrjj.xyz^ -||ugdffrszmrapj.com^ -||ugeewhee.xyz^ -||ughzfjx.com^ -||uglimontana.digital^ -||ugloopie.com^ -||ugloozie.xyz^ -||uglylearnt.com^ -||ugopkl.com^ -||ugrarvy.com^ -||ugricmoist.com^ -||ugripaid.com^ -||ugroocuw.net^ -||ugroogree.com^ -||uguforvfud.com^ -||ugujwhwwyh.com^ -||ugyeon.com^ -||ugyplysh.com^ -||uhclatdxsbidyk.com^ -||uhdokoq5ocmk.com^ -||uhedsplo.com^ -||uhegarberetrof.com^ -||uhfdsplo.com^ -||uhhgaodcxckgvqs.xyz^ -||uhodsplo.com^ -||uhpdsplo.com^ -||uhrmzgp.com^ -||uhsmmaq4l2n5.com^ -||ui02.com^ -||uidhealth.com^ -||uidhome.com^ -||uidsync.net^ -||uilzwzx.com^ -||uimserv.net^ -||uingroundhe.com^ -||uioubveq.com^ -||uirinareceded.com^ -||ujautifuleed.xyz^ -||ujidhusjvmbfv.com^ -||ujooshog.com^ -||ujscdn.com^ -||ujtgtmj.com^ -||ujurupa.com^ -||ujznabh.com^ -||uk08i.top^ -||ukaugesh.com^ -||ukayhvbyrk.com^ -||ukbcjxvaejpfdxx.com^ -||ukcomparends.pro^ -||ukdliketobepa.monster^ -||ukdtzkc.com^ -||ukentaspe.xyz^ -||ukentsiwoulukdlik.info^ -||ukfareputfea.xyz^ -||ukidiayddbshfl.com^ -||ukizeiasninan.info^ -||uklgakwqy.com^ -||ukloxmchcdnn.com^ -||uklvnfxvjgc.com^ -||ukmlastityty.info^ -||ukndaspiratioty.info^ -||uknsyenergyfle.info^ -||ukpdjsailq.com^ -||ukrkskillsombine.info^ -||ukskxmh.com^ -||uksqotykpmjtdgw.com^ -||uktureukworekt.info^ -||ukzoweq.com^ -||ul8seok7w5al.com^ -||ulaiwhiw.xyz^ -||ulathana.com^ -||ulcerextent.com^ -||uldmakefeagr.info^ -||uleptupt.xyz^ -||ulesxbo.com^ -||ulexiteoutspit.com^ -||ulfqakqfng.xyz^ -||ulftutvlodv.com^ -||ulmmmvjfbbmk.com^ -||ulmoyc.com^ -||ulmujev.com^ -||ulnaswotter.top^ -||ulngjwvbhyyfkum.com^ -||ulnhlnsw.com^ -||uloaludu.xyz^ -||ulourgaz.net^ -||ulried.com^ -||ulseugnrmnrww.com^ -||ulsmcdn.com^ -||ulteriorprank.com^ -||ulteriorthemselves.com^ -||ultetrailways.info^ -||ultimatefatiguehistorical.com^ -||ultimaterequirement.com^ -||ultimatumloftyharvest.com^ -||ultimatumrelaxconvince.com^ -||ultrabetas.com^ -||ultracdn.top^ -||ultraclassmate.com^ -||ulukaris.com^ -||ululubugles.website^ -||ulvpdxabzuoy.com^ -||umbersurf.top^ -||umbretalen.com^ -||umdgene.com^ -||umebella.com^ -||umekana.ru^ -||umentrandings.xyz^ -||umescomymanda.info^ -||umexalim.com^ -||umhlnkbj.xyz^ -||umiackscursors.com^ -||umoughtcallm.com^ -||umoxomv.icu^ -||umpedshumal.com^ -||umplmoht.com^ -||umplohzn.com^ -||umqiapzsc.com^ -||umqqfyqkjlxrh.xyz^ -||umtudo.com^ -||umuotov.com^ -||umvibwqrumfqk.com^ -||umwmwxpivtwkyo.xyz^ -||unacceptableclevercapable.com^ -||unacceptableironicaldrone.com^ -||unacceptableperfection.com^ -||unaccustomedchessoldest.com^ -||unaces.com^ -||unactedrobbers.com^ -||unafeed.com^ -||unairedcushite.com^ -||unanac.com^ -||unanimousbrashtrauma.com^ -||unaptsullens.com^ -||unarbokor.com^ -||unaswpzo.com^ -||unattractivehastypendulum.com^ -||unauthorizedblur.com^ -||unauthorizedsufficientlysensitivity.com^ -||unavailableprocessionamazingly.com^ -||unawar.com^ -||unawaredisk.com^ -||unawarehistory.pro^ -||unawarelinkedlaid.com^ -||unazumarillan.com^ -||unbalterce.com^ -||unbearablepulverizeinevitably.com^ -||unbearzonites.com^ -||unbeedrillom.com^ -||unbelievableheartbreak.com^ -||unbelievableinnumerable.com^ -||unblentnitric.com^ -||unblock2303.xyz^ -||unblock2304.xyz^ -||unbloodied.sbs^ -||unboltsseugh.guru^ -||unbraidbrot.uno^ -||unbunearyan.com^ -||unbungrappee.com^ -||unburstballist.com^ -||unbuttonfootprintssoftened.com^ -||uncalmfencer.top^ -||uncannyuneaths.com^ -||uncastnork.com^ -||uncertainimprovementsspelling.com^ -||unciat.com^ -||unclealcine.com^ -||uncleffaan.com^ -||unclehem.com^ -||unclesnewspaper.com^ -||uncletroublescircumference.com^ -||unclogslenis.top^ -||uncomfortableremote.com^ -||uncoverarching.com^ -||uncoverherbal.com^ -||uncoylyreprint.com^ -||uncrampflans.top^ -||uncrobator.com^ -||uncroptbhutia.com^ -||uncrownarmenic.com^ -||uncslucanid.space^ -||undams.com^ -||undeenardoo.com^ -||under2given.com^ -||underaccredited.com^ -||underagebeneath.com^ -||undercambridgeconfusion.com^ -||underclick.ru^ -||undercovercinnamonluxury.com^ -||undercoverdwell.com^ -||undercoverwaterfront.com^ -||underdog.media^ -||undergoneentitled.com^ -||undergosermon.com^ -||undergroundbrows.com^ -||underminesprout.com^ -||underpantscostsdirection.com^ -||underpantsdefencelesslearn.com^ -||underpantshomesimaginary.com^ -||underpantsprickcontinue.com^ -||understandableglassfinalize.com^ -||understandassure.com^ -||understandcomplainawestruck.com^ -||understandextremityshipping.com^ -||understandingspacecraftbachelor.com^ -||understandingspurt.com^ -||understandintimidate.com^ -||understandskinny.com^ -||understatedworking.com^ -||understatementimmoderate.com^ -||understoodadjoiningarab.com^ -||understoodadmiredapprove.com^ -||understoodeconomicgenetic.com^ -||understoodreceivermisunderstand.com^ -||undertakingaisle.com^ -||undertakinghomeyegg.com^ -||underwarming.com^ -||underwaterbirch.com^ -||underwearsourorb.com^ -||underwilliameliza.com^ -||undesirableslim.com^ -||undiesthumb.com^ -||undigneseltzer.top^ -||undooptimisticsuction.com^ -||undoubtedlyavowplanets.com^ -||undressirreg.guru^ -||undressregionaladdiction.com^ -||undubirprourass.com^ -||uneatenhopbush.com^ -||unegalalbian.uno^ -||uneign.com^ -||unelekidan.com^ -||unelgyemom.com^ -||unemploymentinstinctiverite.com^ -||unemploymentnumeric.com^ -||unendlyyodeled.top^ -||unequalbrotherhermit.com^ -||unequaltravelresearch.com^ -||unevenobjective.com^ -||unevenregime.com^ -||unfairpromritual.com^ -||unfaithfulgoddess.com^ -||unfaithfulmakeryearly.com^ -||unfeeddizoic.com^ -||unfieryneutral.com^ -||unfina.com^ -||unfinisheddolphin.com^ -||unfolded-economics.com^ -||unforgivableado.com^ -||unforgivablefrozen.com^ -||unfortunatelydestroyedfuse.com^ -||unfortunatelyprayers.com^ -||unfriendlysalivasummoned.com^ -||ungatedsynch.com^ -||ungillhenbane.com^ -||ungirthranee.com^ -||ungloomnisnas.com^ -||ungothoritator.com^ -||ungoutylensmen.website^ -||ungroudonchan.com^ -||ungulapetful.com^ -||unhaftcharing.com^ -||unhappidustee.com^ -||unhappyswitch.com^ -||unhatedprotei.com^ -||unhealthybravelyemployee.com^ -||unhedgekuchen.top^ -||unhorseaa.com^ -||unhrjzn.com^ -||unicast.com^ -||unicatethebe.org^ -||unicornpride123.com^ -||unifiedreiced.com^ -||unifini.de^ -||uniformyeah.com^ -||uninkedsamucu.guru^ -||uninvitednobody.com^ -||unionscircumstances.com^ -||unitersgrazie.com^ -||unitethecows.com^ -||unitsympathetic.com^ -||universalappend.com^ -||universalbooklet.com^ -||universaldatedimpress.com^ -||universalflaskshrimp.com^ -||universalsrc.com^ -||universityeminenceloosen.com^ -||universityofinternetscience.com^ -||universitypermanentlyhusk.com^ -||unjointbobbed.com^ -||unkeptspahees.com^ -||unkinpigsty.com^ -||unknownhormonesafeguard.com^ -||unlawedimaret.top^ -||unleftbawly.uno^ -||unlesscooler.com^ -||unlika.com^ -||unlikelymoscow.com^ -||unlinedcap.pro^ -||unloathscalena.com^ -||unlockecstasyapparatus.com^ -||unlockmaddenhooray.com^ -||unlocky.org^ -||unlocky.xyz^ -||unloetiosal.com^ -||unluciddesmids.top^ -||unluckydead.pro^ -||unluckyflagtopmost.com^ -||unluxioer.com^ -||unmarcharthra.com^ -||unmasksxyloma.uno^ -||unmergeullaged.com^ -||unmetswipy.com^ -||unmightboxen.com^ -||unmisdreavusom.com^ -||unnamesline.com^ -||unnaturalstring.com^ -||unnecessarydispleasedleak.com^ -||unnish.com^ -||unoblotto.net^ -||unofficialwanderingreplica.com^ -||unornlysire.com^ -||unpackjanuary.com^ -||unpacktexture.com^ -||unpackthousandmineral.com^ -||unpaledbooker.top^ -||unpanchamon.com^ -||unpaundlagot.com^ -||unphionetor.com^ -||unpinsfucoids.com^ -||unplainodalman.com^ -||unpleasantconcrete.com^ -||unpleasanthandbag.com^ -||unpred.com^ -||unpredictablehateagent.com^ -||unprofessionalremnantthence.com^ -||unqrppiyb.com^ -||unrealversionholder.com^ -||unreasonabletwenties.com^ -||unrebelasterin.com^ -||unregisteredgrasppistol.com^ -||unreshiramor.com^ -||unresolveddrama.com^ -||unresolvedsketchpaws.com^ -||unrestbad.com^ -||unrestlosttestify.com^ -||unriq.com^ -||unrotomon.com^ -||unrulymedia.com^ -||unrulymorning.pro^ -||unrulytroll.com^ -||unrulyvoice.com^ -||unsaltyalemmal.com^ -||unsealsweller.top^ -||unseenrazorcaptain.com^ -||unseenreport.com^ -||unseenshingle.com^ -||unsettledfederalrefreshing.com^ -||unsettledfencing.com^ -||unshapemeshed.top^ -||unshinykerite.com^ -||unsigilyphor.com^ -||unskilfulwalkerpolitician.com^ -||unskilledexamples.com^ -||unslimtugger.top^ -||unsoggynek.life^ -||unspeakablefreezing.com^ -||unspeakablepurebeings.com^ -||unstantleran.com^ -||unsteadybreakfast.pro^ -||unsternrelease.com^ -||unstilldemeore.com^ -||unstoutgolfs.com^ -||unsuccessfultesttubepeerless.com^ -||unsurlysiouan.com^ -||untackreviler.com^ -||untastymondos.digital^ -||untelljettons.com^ -||untidybrink.com^ -||untidyseparatelyintroduce.com^ -||untiedecide.com^ -||untilfamilythrone.com^ -||untilpatientlyappears.com^ -||untimburra.com^ -||untineanunder.com^ -||untineforward.com^ -||untrendenam.com^ -||untriedcause.pro^ -||untrk.xyz^ -||untrol.com^ -||untropiuson.com^ -||untroy.com^ -||untruesubsidedclasped.com^ -||unumbonum.com^ -||unusualbrainlessshotgun.com^ -||unusuallynonfictionconsumption.com^ -||unusuallyswam.com^ -||unusualwarmingloner.com^ -||unvextcentavo.com^ -||unvrlozno.com^ -||unwartortlean.com^ -||unwelcomegardenerinterpretation.com^ -||unwice.com^ -||unwillingsnick.com^ -||unwindflophousework.com^ -||unwindirenebank.com^ -||unwitting-phrase.pro^ -||unwodgtll.com^ -||unwontcajun.top^ -||unwonttawpi.top^ -||unwoobater.com^ -||unworldfoxwood.top^ -||unylgxxmrsbb.com^ -||unynwld.com^ -||unzipauscult.com^ -||uod2quk646.com^ -||uoeeiqgiib.xyz^ -||uoflkjdc.com^ -||uohdvgscgckkpt.xyz^ -||uohxijnkd.com^ -||uoktyggqexq.com^ -||uommwhqyefutlp.com^ -||uomsogicgi.com^ -||uorhlwm.com^ -||uorwogwlbwtk.xyz^ -||uosyhthogsaavr.com^ -||uosyiozyu.com^ -||uotksykpmkcd.com^ -||up4u.me^ -||upaicpa.com^ -||uparceuson.com^ -||upbrininghandy.com^ -||upbriningleverforecast.com^ -||upbuoyearfuls.com^ -||upchokedehort.top^ -||upcomingmonkeydolphin.com^ -||upcurlsreid.website^ -||updaight.com^ -||update-it-now.com^ -||updateadvancedgreatlytheproduct.vip^ -||updatecompletelyfreetheproduct.vip^ -||updateenow.com^ -||updatefluency.com^ -||updateguck.com^ -||updaterecomended.pro^ -||updatesunshinepane.com^ -||updiveufos.com^ -||upeatunzone.com^ -||uperizeunoiled.com^ -||upflamebendell.uno^ -||upgalethalers.guru^ -||upglideantijam.com^ -||upgliscorom.com^ -||upgulpinon.com^ -||uphelmscowed.com^ -||uphewoab.net^ -||uphillgrandmaanger.com^ -||uphilo.com^ -||uphorter.com^ -||uphoveduke.com^ -||uphoveeh.xyz^ -||upinu.xyz^ -||upkoffingr.com^ -||uplandstoat.digital^ -||upleaptlistel.top^ -||upliftsearch.com^ -||uplinecliency.com^ -||uplucarioon.com^ -||upmoveatoms.com^ -||uponelectabuzzor.club^ -||uponge.com^ -||uponhariyamar.com^ -||uponminunan.com^ -||uponpidgeottotor.com^ -||uponsurskita.com^ -||upontogeticr.com^ -||uppardjets.com^ -||uppereugene.com^ -||uppons.com^ -||uppsyduckan.com^ -||upqeudhzf.com^ -||upregisteelon.com^ -||uprightanalysisphotographing.com^ -||uprightsaunagather.com^ -||uprightthrough.com^ -||uprimp.com^ -||uprisingrecalledpeppermint.com^ -||uprivaladserver.net^ -||uproarglossy.com^ -||upsaibou.net^ -||upsajeve.com^ -||upsamurottr.com^ -||upseelee.xyz^ -||upseepsi.xyz^ -||upsendsoxid.com^ -||upsettingfirstobserved.com^ -||upshroomishtor.com^ -||upsidesheminee.com^ -||upskittyan.com^ -||upspewsafener.com^ -||upspinarakor.com^ -||upstandhurls.website^ -||upstandingmoscow.com^ -||upsups.click^ -||upswingmethyl.com^ -||uptafashib.com^ -||uptearfancily.top^ -||uptechnologys.com^ -||uptightfirm.com^ -||uptightimmigrant.com^ -||uptightyear.com^ -||uptimecdn.com^ -||uptodateexpansionenvisage.com^ -||uptodatefinishconferenceroom.com^ -||uptownrecycle.com^ -||uptraceforlore.com^ -||uptuwhum.net^ -||upupoidoutjazz.website^ -||upush.co^ -||upwaftssoland.digital^ -||upwardbodies.com^ -||upwardsbenefitmale.com^ -||upwardsdecreasecommitment.com^ -||upwardunderground.com^ -||upwxneakm.com^ -||upzekroman.com^ -||uqdoeag.com^ -||uqduhelyxsov.com^ -||uqmmfpr.com^ -||uqnoghmubhon.com^ -||uqotbpmidyewkmb.com^ -||uqpvrqplyqm.com^ -||urambled.com^ -||uranianredrove.com^ -||uranicargine.top^ -||uranismunshore.com^ -||urbanjazzsecretion.com^ -||urboja.com^ -||urbund.com^ -||urechar.com^ -||urediumshirker.website^ -||urgedhearted.com^ -||urgedsuitcase.com^ -||urgefranchise.com^ -||urgentlyfeerobots.com^ -||urgentprotections.com^ -||urgertiddly.top^ -||urimnugocfr.com^ -||urimtats.com^ -||urinebladdernovember.com^ -||urinehere.com^ -||uringherenurew.info^ -||urldelivery.com^ -||urlgone.com^ -||urlhausa.com^ -||urllistparding.info^ -||urmavite.com^ -||urmilan.info^ -||urnigarted.com^ -||urnkcqzu.com^ -||uroceletassard.digital^ -||urotoxykerch.com^ -||urpctsrjilp.com^ -||urptcerftud.com^ -||urquqtbswaqta.com^ -||urqxesau.com^ -||urryjgwqjo.com^ -||ursonewry.com^ -||urthdtcg.com^ -||urtirepor.com^ -||uruftio.com^ -||uruswan.com^ -||urvgwij.com^ -||us4post.com^ -||usageultra.com^ -||usailtuwhe.com^ -||usainoad.net^ -||usbanners.com^ -||usbrowserspeed.com^ -||usciwhhghsc.com^ -||useaptrecoil.com^ -||usearch.site^ -||used-particular.com^ -||usefulcontentsites.com^ -||usefulcourage.com^ -||usehol.com^ -||uselnk.com^ -||usenet.world^ -||usenetpassport.com^ -||usersmorrow.com^ -||usertag.online^ -||usetalentedpunk.com^ -||usheeptuthoa.com^ -||usheredbruting.top^ -||ushnjobwcvpebcj.xyz^ -||ushoofop.com^ -||ushzfap.com^ -||usinesmycete.xyz^ -||usingantecedent.com^ -||usingswhoring.com^ -||usiphdtubj.com^ -||usisedprivatedqu.com^ -||usjbwvtqwv.com^ -||uslphoctxrpwry.com^ -||usninicsooey.com^ -||usounoul.com^ -||usquegessoes.com^ -||ussckwroweoyv.com^ -||ussord.com^ -||ussxglczwrscla.com^ -||ust-ad.com^ -||ustetyerecentlyh.info^ -||ustithoo.net^ -||ustive.com^ -||ustomoun.xyz^ -||usuads.com^ -||usuallyaltered.com^ -||usuaryyappish.com^ -||usurerspoind.life^ -||usurertramped.guru^ -||usurperbose.top^ -||usurv.com^ -||uswardwot.com^ -||usylkoifiwa.com^ -||ut13r.online^ -||ut13r.site^ -||ut13r.space^ -||utarget.co.uk^ -||utarget.pro^ -||utarget.ru^ -||utecsfi.com^ -||uterinecordis.top^ -||uthorner.info^ -||uthounie.com^ -||utilitymerle.top^ -||utilitypresent.com^ -||utilitytied.com^ -||utilized-memory.pro^ -||utilizedshoe.com^ -||utilizeimplore.com^ -||utilizepersonalityillegible.com^ -||utillib.xyz^ -||utjzyutegq.com^ -||utl-1.com^ -||utlicyweaabdbj.xyz^ -||utm-campaign.com^ -||utmostsecond.com^ -||utndln.com^ -||utokapa.com^ -||utotnokkbqp.com^ -||utoumine.net^ -||utrinterrommo.com^ -||utrius.com^ -||utrumchippie.top^ -||utterdevice.com^ -||utterlyfunding.com^ -||utterlysever.com^ -||utubepwhml.com^ -||utwyyrjdwgmynu.com^ -||utygdjcs.xyz^ -||utzwgittihhvn.com^ -||uuboos.com^ -||uucfeebvz.com^ -||uudproxxc.com^ -||uudzfbzthj.com^ -||uueuxygn.com^ -||uuhptejwmvn.com^ -||uuidksinc.net^ -||uujtmrxf.xyz^ -||uuudqhialb.com^ -||uuzlytbpmmhfm.com^ -||uvbyty.com^ -||uveaopqrttvukl.com^ -||uviajpcewsv.com^ -||uvihslkx.com^ -||uvipbmrzlram.com^ -||uvlqgtgqdfl.com^ -||uvoovoachee.com^ -||uvrdhasvzal.com^ -||uvtuiks.com^ -||uvwelvnydoy.com^ -||uvwtmppnbqgzha.com^ -||uvxclrl.com^ -||uvzomxvbpbgo.com^ -||uvzsmwfxa.com^ -||uwadpksbkzp.com^ -||uwavoptig.com^ -||uwaxoyfklhm.com^ -||uwayemfogibbgh.xyz^ -||uweqsrwoey.com^ -||uwfcqtdb.xyz^ -||uwgmguwpzkeudh.com^ -||uwjhzeb.com^ -||uwkidcbbp.com^ -||uwlzsfo.com^ -||uwmlmhcjmjvuqy.xyz^ -||uwoaptee.com^ -||uwougheels.net^ -||uwrzjgtnur.com^ -||uwzxukualwdkx.com^ -||uxicgxqq.com^ -||uxjpyfzorpkcg.com^ -||uxpascal.com^ -||uxwnqppdma.com^ -||uxxsiyokw.com^ -||uyceypgygwywfp.com^ -||uyeaoofppwrhz.com^ -||uyjmbaiogdtkgwt.com^ -||uyjxzvu.com^ -||uypsmaxzejvpqx.com^ -||uzbsvqupnjfsnx.com^ -||uzbxnfwcvhwnz.com^ -||uzibhigtekn.com^ -||uzoutche.xyz^ -||uzqtbthkrqq.com^ -||uzrwqrezkx.com^ -||uzzidxlvnq.com^ -||v00ske77693f.com^ -||v100homemade.com^ -||v124mers.com^ -||v2cigs.com^ -||v4yleins27hv.com^ -||v6rxv5coo5.com^ -||v96-surf.com^ -||vaatmetu.net^ -||vabybjbhgqfcld.com^ -||vacaneedasap.com^ -||vacant-writer.com^ -||vacationambulancekin.com^ -||vacationinvolve.com^ -||vacationmonday.com^ -||vacationsoot.com^ -||vaccinationinvalidphosphate.com^ -||vaccinationwear.com^ -||vaccineconvictedseafood.com^ -||vacuomedogeys.com^ -||vacwrite.com^ -||vadokfkulzr.com^ -||vaebard.com^ -||vaehxkhbhguaq.xyz^ -||vafumjvrvjcup.com^ -||vagancytwerp.top^ -||vagilunger.com^ -||vagkcwvqpty.com^ -||vagueleader.pro^ -||vaguelybarelyrecycle.com^ -||vahoupomp.com^ -||vaifopooface.com^ -||vaiglunoz.com^ -||vaigowoa.com^ -||vaikdxjegts.com^ -||vaikijie.net^ -||vaikrywlbmca.com^ -||vailedapetaly.com^ -||vainfulkmole.com^ -||vaipsona.com^ -||vaipsouw.com^ -||vaisheph.xyz^ -||vaithodo.com^ -||vaitotoo.net^ -||vajofu.uno^ -||vak345.com^ -||vaknveb.com^ -||valack.com^ -||valemedia.net^ -||valencytecoma.top^ -||valepoking.com^ -||valesweetheartconditions.com^ -||valetedmasaris.website^ -||valetsword.com^ -||valiantjosie.com^ -||valiantmanioca.com^ -||valid-dad.com^ -||validinstruct.com^ -||valiumbessel.com^ -||vallarymedlars.com^ -||valleymuchunnecessary.com^ -||valleysinstruct.com^ -||valleysrelyfiend.com^ -||valonghost.xyz^ -||valornutricional.cc^ -||valpeiros.com^ -||valsesoffhand.website^ -||valuablecompositemagnanimity.com^ -||valuableenquiry.com^ -||valuad.cloud^ -||valuationbothertoo.com^ -||valuebreeches.com^ -||valueclick.cc^ -||valueclick.com^ -||valueclick.net^ -||valueclickmedia.com^ -||valuedalludejoy.com^ -||valuedpulverizelegitimate.com^ -||valuepastscowl.com^ -||valuerfadjavelin.com^ -||valuermainly.com^ -||valuerstray.com^ -||valuesgloryprovocation.com^ -||valueslinear.com^ -||valuethemarkets.info^ -||valvalnumbest.com^ -||valvyre.com^ -||vamjfssdvjit.com^ -||vampedcortine.com^ -||vampersyacal.com^ -||vamsoupowoa.com^ -||vandalismblackboard.com^ -||vandalismundermineshock.com^ -||vanderebony.pro^ -||vanderlisten.pro^ -||vanflooding.com^ -||vanhonker.com^ -||vaniacozzolino.com^ -||vanillacoolestresumed.com^ -||vanirplex.com^ -||vanirstub.com^ -||vanishedentrails.com^ -||vanishedpatriot.com^ -||vanishedunreal.com^ -||vanityassassinationsobbing.com^ -||vapedia.com^ -||vapourfertile.com^ -||vapoursumptuousgutter.com^ -||vapourwarlockconveniences.com^ -||vaptoangix.com^ -||varasbrijkt.com^ -||varechphugoid.com^ -||variabilityproducing.com^ -||variableexternal.com^ -||variablespestvex.com^ -||variablevisualforty.com^ -||variationaspenjaunty.com^ -||variationsreviewmocking.com^ -||varicalpraiser.com^ -||variedpretenceclasped.com^ -||variedslimecloset.com^ -||variedsubduedplaice.com^ -||varietiesassuage.com^ -||varietiesplea.com^ -||varietyofdisplayformats.com^ -||variff.com^ -||variousanyplaceauthorized.com^ -||variouscreativeformats.com^ -||variousformatscontent.com^ -||variouspheasantjerk.com^ -||varnishmixed.com^ -||varnishmosquitolocust.com^ -||varorlowjo.com^ -||varshacundy.com^ -||vartoken.com^ -||varycares.com^ -||varyingcanteenartillery.com^ -||varyinginvention.com^ -||varyingsnarl.com^ -||vasebehaved.com^ -||vasgenerete.com^ -||vasgenerete.site^ -||vasicxcq.com^ -||vasits.com^ -||vassspot.com^ -||vasstycom.com^ -||vasteeds.net^ -||vastroll.ru^ -||vastserved.com^ -||vastsneezevirtually.com^ -||vatanclick.ir^ -||vatcalf.com^ -||vatcertaininject.com^ -||vatname.info^ -||vatois.com^ -||vattingpliable.top^ -||vaugaiva.net^ -||vaugroar.com^ -||vaultmultiple.com^ -||vaultwrite.com^ -||vaumourechu.net^ -||vauptaih.com^ -||vauthaud.net^ -||vavcashpop.com^ -||vavhhpkmfc.com^ -||vavuwetus.com^ -||vawauoggraokog.com^ -||vawsmoocah.com^ -||vax-boost.com^ -||vax-now.com^ -||vaxoovos.net^ -||vazypteke.pro^ -||vbhuivr.com^ -||vbijjrg.com^ -||vbiofbwey.com^ -||vbmfeuvrtnxafy.com^ -||vbqbtfkon.com^ -||vbrbgki.com^ -||vbrusdiifpfd.com^ -||vbtrax.com^ -||vbzsjkrnsqewy.com^ -||vcbydvfouqqyls.com^ -||vcdc.com^ -||vcdpuyl.com^ -||vcgdfvbvfxq.com^ -||vcmedia.com^ -||vcngehm.com^ -||vcommission.com^ -||vcsesvwajeup.com^ -||vcvacpaenqepvm.com^ -||vcvnsyewnv.com^ -||vcxipynawv.com^ -||vcxzp.com^ -||vczypss.com^ -||vdbaa.com^ -||vddf0.club^ -||vdenwwytxmw.com^ -||vdlvry.com^ -||vdmiruryll.xyz^ -||vdopia.com^ -||vdoubt.com^ -||ve6k5.top^ -||vebadu.com^ -||vebv8me7q.com^ -||vecohgmpl.info^ -||vectisamerica.com^ -||vectisruntier.top^ -||vectorsfangs.com^ -||veecheew.xyz^ -||veeloomo.net^ -||veenodax.digital^ -||veepteero.com^ -||veeqlly.com^ -||veewhaiw.com^ -||veezljzrkjjyj.top^ -||vefxjjkrhf.com^ -||veganswingbow.com^ -||vegashizoku.digital^ -||vegetablesparrotplus.com^ -||vegetationadmirable.com^ -||vegetationartcocoa.com^ -||vegetationplywoodfiction.com^ -||vegyttokhldqd.com^ -||vehiclehenriettaassociation.com^ -||vehmickharaj.website^ -||vehosw.com^ -||veildiscotacky.com^ -||veilsuccessfully.com^ -||veincartrigeforceful.com^ -||veineryclauber.top^ -||veinletunapart.com^ -||veipcwjeupr.com^ -||vekroata.net^ -||vekseptaufin.com^ -||veldtwalk.com^ -||velikacontact.top^ -||vellutemisused.top^ -||velocecdn.com^ -||velocitycdn.com^ -||velocitypaperwork.com^ -||velopedsever.com^ -||velopedseveralmef.info^ -||velvetneutralunnatural.com^ -||vemflutuartambem.com^ -||vempozah.net^ -||vendigamus.com^ -||vendimob.pl^ -||vendorsfacture.com^ -||veneeringextremely.com^ -||veneeringperfect.com^ -||venetrigni.com^ -||venfioletadas.com^ -||vengeancehurriedly.com^ -||vengeancerepulseclassified.com^ -||vengeancewaterproof.com^ -||vengeful-egg.com^ -||veninslata.com^ -||venisonabreastdamn.com^ -||venisonreservationbarefooted.com^ -||venkrana.com^ -||venomoussolidhow.com^ -||venomousteenage.com^ -||venomouswhimarid.com^ -||ventagecauking.top^ -||ventilatorcorrupt.com^ -||ventrequmus.com^ -||ventualkentineda.info^ -||venturead.com^ -||ventureclamourtotally.com^ -||venturepeasant.com^ -||venueitemmagic.com^ -||venuewasadi.org^ -||venulaeriggite.com^ -||veoxphl.com^ -||vephowcpyvncm.com^ -||veralmefarketi.info^ -||verandahcrease.com^ -||verbcardinal.com^ -||verdreamsofcryin.com^ -||vereforhedidno.info^ -||veresultedinncre.org^ -||vergi-gwc.com^ -||vergu.xyz^ -||verifiablevolume.com^ -||veritaswhang.com^ -||veritiesgarlejobade.com^ -||vernementsec.info^ -||verneukorgia.com^ -||verninchange.com^ -||vernondesigninghelmet.com^ -||vernonspurtrash.com^ -||veronalhaf.com^ -||verooperofthewo.com^ -||verrippleshi.info^ -||versaqueasy.uno^ -||versatileadvancement.com^ -||verse-content.com^ -||versedarkenedhusky.com^ -||versionlatticecheek.com^ -||versionsfordisplay.com^ -||versionslent.com^ -||verticallydeserve.com^ -||verticallyrational.com^ -||verwh.com^ -||verygoodminigames.com^ -||veryn1ce.com^ -||verysilenit.com^ -||vespymedia.com^ -||vessoupy.com^ -||vessubysvspr.com^ -||vestigeboxesreed.com^ -||vestigeencumber.com^ -||vestparticle.com^ -||vesuvinaqueity.top^ -||vetcheslegumen.com^ -||vethojoa.net^ -||vetoembrace.com^ -||vetrainingukm.info^ -||vetuststeek.com^ -||veuuulalu.xyz^ -||vevatom.com^ -||vevqlgmmkgu.com^ -||vexacion.com^ -||vexationworship.com^ -||vexedkindergarten.com^ -||vexevutus.com^ -||vexolinu.com^ -||vezizey.xyz^ -||vfeeopywioabi.xyz^ -||vfghc.com^ -||vfghd.com^ -||vfgte.com^ -||vfgtg.com^ -||vfhkljw5f6ss.com^ -||vfjydbpywqwe.xyz^ -||vfl81ea28aztw7y3.pro^ -||vflouksffoxmlnk.xyz^ -||vfthr.com^ -||vfvdsati.com^ -||vfvvhywsdons.com^ -||vfzqtgr.com^ -||vg4u8rvq65t6.com^ -||vgfeuwrewzzmc.com^ -||vgmnpjnrpj.com^ -||vgsjapnjykapgq.com^ -||vgw35hwr4w6x.com^ -||vhdbohe.com^ -||vheoggjiqaz.com^ -||vhihvqsuarpp.com^ -||vhneajupavrb.com^ -||vhrtgvzcmrfoo.com^ -||vhsugcbelruygy.com^ -||vhvmiinx.com^ -||vi-serve.com^ -||viabagona.com^ -||viableconferfitting.com^ -||viablegiant.com^ -||viacavalryhepatitis.com^ -||viaeatsdhpt.com^ -||viaexploudtor.com^ -||viamariller.com^ -||vianadserver.com^ -||vianoivernom.com^ -||viapawniarda.com^ -||viaphioner.com^ -||viapizza.online^ -||viatechonline.com^ -||viatepigan.com^ -||vibrantvale.com^ -||vibrateapologiesshout.com^ -||vic-m.co^ -||vicanerly.top^ -||vicious-instruction.pro^ -||viciousdepartment.com^ -||viciousdiplomaroller.com^ -||viciousphenomenon.com^ -||victimcondescendingcable.com^ -||victory-vids.online^ -||victorytunatulip.com^ -||victoryvids.space^ -||vid.me^ -||vidalak.com^ -||vidcpm.com^ -||video-adblocker.com^ -||video-serve.com^ -||videoaccess.xyz^ -||videobaba.xyz^ -||videocampaign.co^ -||videocdnshop.com^ -||videolute.biz^ -||videoplaza.tv^ -||videosprofitnetwork.com^ -||videosworks.com^ -||videovard.sx^ -||vidghjlgkuyfk.site^ -||vids-branch.online^ -||vids-fun.online^ -||vidsbig.online^ -||vidsbig.space^ -||vidsbranch.online^ -||vidsbranch.space^ -||vidschannel.online^ -||vidschannel.space^ -||vidsforyou.mom^ -||vidsforyou.online^ -||vidsfull.online^ -||vidsfull.space^ -||vidshouse.online^ -||vidsmoon.online^ -||vidsmoon.space^ -||vidsocean.online^ -||vidsocean.space^ -||vidsplanet.online^ -||vidsplanet.space^ -||vidsreal.online^ -||vidsreal.space^ -||view-flix.com^ -||viewablemedia.net^ -||viewagendaanna.com^ -||viewclc.com^ -||viewedmockingcarsick.com^ -||viewerebook.com^ -||viewlnk.com^ -||viewpointscissorsfolks.com^ -||viewscout.com^ -||viewsoz.com^ -||viewyentreat.guru^ -||vighooss.net^ -||vigorouslyflamboyant.com^ -||vigorouslyrutmonsieur.com^ -||vigourmotorcyclepriority.com^ -||vigsole.com^ -||vihub.ru^ -||viiahdlc.com^ -||viiaoqke.com^ -||viiapps.com^ -||viiavjpe.com^ -||viibest.com^ -||viibill.com^ -||viicqujz.com^ -||viicylmb.com^ -||viidan.com^ -||viiddai.com^ -||viidirectory.com^ -||viidsyej.com^ -||viienetik.com^ -||viifixi.com^ -||viifogyp.com^ -||viiguqam.com^ -||viihloln.com^ -||viihot.com^ -||viihouse.com^ -||viiiaypg.com^ -||viiigle.com^ -||viiinfo.com^ -||viiioktg.com^ -||viiith.com^ -||viiithia.com^ -||viiithical.com^ -||viiithie.com^ -||viiithin.com^ -||viiithinks.com^ -||viiithio.com^ -||viiiyskm.com^ -||viijah.com^ -||viijan.com^ -||viikttcq.com^ -||viimaster.com^ -||viimfua.com^ -||viimgupp.com^ -||viimksyi.com^ -||viimobile.com^ -||viimsa.com^ -||viimsical.com^ -||viimurakhi.com^ -||viinsdap.com^ -||viinset.com^ -||viioxx.com^ -||viiphciz.com^ -||viipilo.com^ -||viipour.com^ -||viippugm.com^ -||viipurakan.com^ -||viipurakhi.com^ -||viipurakit.com^ -||viipuram.com^ -||viipurambe.com^ -||viipurant.com^ -||viipurin.com^ -||viipuris.com^ -||viipurises.com^ -||viipurit.com^ -||viiqqou.com^ -||viiqxpnb.com^ -||viireviews.com^ -||viirift.com^ -||viirkagt.com^ -||viirsons.com^ -||viiruc.com^ -||viisemblin.com^ -||viispan.com^ -||viistroy.com^ -||viitgb.com^ -||viitqvjx.com^ -||viitsical.com^ -||viiturn.com^ -||viival.com^ -||viivedun.com^ -||viivideo.com^ -||viiwriz.com^ -||viiyblva.com^ -||viizuusa.com^ -||vijcwykceav.com^ -||vijeli.uno^ -||vikaez.xyz^ -||vikrak.com^ -||vilddungari.top^ -||vilelaaccable.com^ -||vilereasoning.com^ -||vilerebuffcontact.com^ -||viliaff.com^ -||vilinswell.com^ -||villageeatable.com^ -||villagepalmful.com^ -||villagerprolific.com^ -||villagerreporter.com^ -||villcortege.top^ -||vilpujzmyhu.com^ -||vimpatace.digital^ -||vincentagrafes.top^ -||vindexmesode.com^ -||vindicosuite.com^ -||vinegardaring.com^ -||vingartistictaste.com^ -||vinosedermol.com^ -||vintageperk.com^ -||vintagerespectful.com^ -||violatedroppompey.com^ -||violationphysics.click^ -||violationphysics.com^ -||violationspoonconfront.com^ -||violencegloss.com^ -||violentelitistbakery.com^ -||violentinduce.com^ -||violentlybredbusy.com^ -||violentlyradiussuffix.com^ -||violet-strip.pro^ -||violetlovelines.com^ -||violinboot.com^ -||violindealtcynical.com^ -||violinmode.com^ -||vionito.com^ -||vioytuituunmsr.com^ -||vip-datings.life^ -||vip-vip-vup.com^ -||vipads.live^ -||vipcaptcha.live^ -||vipcpms.com^ -||viperiduropygi.top^ -||viperishly.com^ -||vipicmou.net^ -||viqxdidnwcaa.com^ -||viqyrcsnuaqxvyg.com^ -||viral481.com^ -||viral782.com^ -||viralcpm.com^ -||viralmediatech.com^ -||viralnewsobserver.com^ -||viralnewssystems.com^ -||virgecallate.digital^ -||virgindisguisearguments.com^ -||virginityneutralsouls.com^ -||virginitystudentsperson.com^ -||virginyoungestrust.com^ -||virtuallythanksgivinganchovy.com^ -||virtuereins.com^ -||virtuousescape.pro^ -||virusscanner.to^ -||visaexasperation.com^ -||visargadimmit.com^ -||visariomedia.com^ -||visaspecialtyfluid.com^ -||viscountquality.com^ -||visfirst.com^ -||vishalboo.guru^ -||visiads.com^ -||visibilitycrochetreflected.com^ -||visibleevil.com^ -||visiblegains.com^ -||visiblejoseph.com^ -||visiblemeasures.com^ -||visionchillystatus.com^ -||visitationdependwrath.com^ -||visithaunting.com^ -||visitingheedlessexamine.com^ -||visitingpurrplight.com^ -||visitorcardinal.com^ -||visitormarcoliver.com^ -||visitpipe.com^ -||visitplaywrightlyrical.com^ -||visitstats.com^ -||visitstrack.com^ -||visitsviolatedifficult.com^ -||visitswigspittle.com^ -||visitweb.com^ -||visivefluxing.com^ -||visoadroursu.com^ -||vistashomonid.com^ -||vistoolr.net^ -||vitaminalcove.com^ -||vitiumcranker.com^ -||vitiumkerel.top^ -||vitor304apt.com^ -||vitrealmandola.com^ -||vivaciousbudget.pro^ -||viviendoefelizz.online^ -||vivuple.xyz^ -||viwjsp.info^ -||viwvamotrnu.com^ -||vizacasa.xyz^ -||vizoalygrenn.com^ -||vizofnwufqme.com^ -||vizpwsh.com^ -||vjcpvfessh.xyz^ -||vjdciu.com^ -||vjgqzvmgd.com^ -||vjsohgd.com^ -||vjtskjg.com^ -||vjzlgtnaov.com^ -||vkarrc.com^ -||vkeagmfz.com^ -||vkezpstgtjxym.com^ -||vkfvrsgj.com^ -||vkgtrack.com^ -||vkkotuek.xyz^ -||vklljvzzeylj.top^ -||vknrfwwxhxaxupqp.pro^ -||vksegjhestouij.com^ -||vksphze.com^ -||vkusbtnxubme.com^ -||vkwzbjifb.com^ -||vlbbyi.com^ -||vlbyzgj.com^ -||vlcjpeailboxbw.com^ -||vlfpznssnvbdt.com^ -||vlitag.com^ -||vlkkwxncamnq.com^ -||vlkxsrhi.com^ -||vllsour.com^ -||vlnk.me^ -||vlry5l4j5gbn.com^ -||vltjnmkps.xyz^ -||vlvbyqgjqj.com^ -||vmbcdprc.com^ -||vmbgoblxpl.com^ -||vmbuxmdscncv.com^ -||vmimbrygee.com^ -||vmkdfdjsnujy.xyz^ -||vmkoqak.com^ -||vmmcdn.com^ -||vmqmmjaiaqaopq.com^ -||vmring.cc^ -||vmuid.com^ -||vmvajwc.com^ -||vmxqgmefynoep.xyz^ -||vnbyclsboyoya.com^ -||vndcrknbh.xyz^ -||vneffwecka.com^ -||vnihhkgayhj.com^ -||vnrherdsxr.com^ -||vntsm.com^ -||vntsm.io^ -||vnvbqpqjgsy.com^ -||vnvqoihbwgjqpa.com^ -||vnwrlhgvczf.com^ -||voadeezu.net^ -||voapozol.com^ -||voataigru.com^ -||voawbugcy.com^ -||vocablyheir.top^ -||vocalconferencesinister.com^ -||vocalickopjes.com^ -||vocalreverencepester.com^ -||vocath.com^ -||vocationalenquired.com^ -||voderbhungi.com^ -||vodjnqarncm.com^ -||vodlpsf.com^ -||vodobyve.pro^ -||vohqpgsdn.xyz^ -||voicearrogancesideway.com^ -||voicebeddingtaint.com^ -||voicedstart.com^ -||voicegiddiness.com^ -||voicepainlessdonut.com^ -||voicepeaches.com^ -||voicerdefeats.com^ -||voidmodificationdough.com^ -||vokaunget.xyz^ -||vokjslngw.xyz^ -||volatintptr.com^ -||volcanoexhibitmeaning.com^ -||volcanostricken.com^ -||voldarinis.com^ -||voleryclat.com^ -||volform.online^ -||volleyballachiever.site^ -||volna2babla1dh1.com^ -||volumedpageboy.com^ -||volumesundue.com^ -||voluminoussoup.pro^ -||volumntime.com^ -||voluntarilydale.com^ -||voluntarilylease.com^ -||voluntarilystink.com^ -||volunteerbrash.com^ -||voluumtracker.com^ -||voluumtrk.com^ -||voluumtrk3.com^ -||volyze.com^ -||vomitelse.com^ -||vomitlifeboatparliamentary.com^ -||vonciejsx.com^ -||vonkol.com^ -||vooculok.com^ -||vooodkabelochkaa.com^ -||voopaicheba.com^ -||voopsoog.xyz^ -||vooruvou.com^ -||vooshagy.net^ -||vooshozo.com^ -||vootapoago.com^ -||voowiche.com^ -||voqqdmezdbbr.com^ -||voredi.com^ -||vorhanddoob.top^ -||vorougna.com^ -||vossulekuk.com^ -||voteclassicscocktail.com^ -||votinginvolvingeyesight.com^ -||vouchafagle.com^ -||vouchanalysistonight.com^ -||voufasoadoot.net^ -||vougaipte.net^ -||vougreph.net^ -||vounesto.com^ -||vowcertainly.com^ -||vowelparttimegraceless.com^ -||voxar.xyz^ -||voxfind.com^ -||voxjvytmisj.com^ -||voxmrcdgzuwb.com^ -||voyageconcise.com^ -||voyageschoolanymore.com^ -||voyagessansei.com^ -||vpbpb.com^ -||vpfudjdi.com^ -||vpico.com^ -||vpipi.com^ -||vpixrlkggv.com^ -||vplgggd.com^ -||vpn-defend.com^ -||vpn-offers.com^ -||vpn-offers.info^ -||vpnlist.to^ -||vpop2.com^ -||vpotyflfox.com^ -||vprtrfc.com^ -||vprwamqmdd.xyz^ -||vptbn.com^ -||vptzqnjwguap.com^ -||vpumfeghiall.com^ -||vpwhhtpwhmd.com^ -||vpwyehsh.com^ -||vqagwoaetsahu.com^ -||vqcjmtorgexlxpg.xyz^ -||vqcuzypju.com^ -||vqfustjnvph.com^ -||vqglaz.com^ -||vqjvnjxbgnz.com^ -||vqonjcnsl.com^ -||vqrqnylppo.com^ -||vrasxjrsl.com^ -||vrbmhngqjh.com^ -||vrcjleonnurifjy.xyz^ -||vrhgfvztgmcl.com^ -||vrhorus.com^ -||vriddhiejidal.com^ -||vrime.xyz^ -||vroaafoi.com^ -||vrplynsfcr.xyz^ -||vrquqhnikhcnixn.com^ -||vrsyd.uno^ -||vrtzads.com^ -||vs3.com^ -||vscfbcovhctu.com^ -||vsgfjfsmcewnuhx.com^ -||vsgyfixkbow.com^ -||vshzouj.com^ -||vskfeduxg.xyz^ -||vsnpfmoxb.xyz^ -||vstqvcbljb.com^ -||vstserv.com^ -||vstvstsa.com^ -||vstvstsaq.com^ -||vsucocesisful.com^ -||vt894axs16.com^ -||vtabnalp.net^ -||vtbrcixnca.com^ -||vtdtdkaty.com^ -||vtetishcijmi.com^ -||vtftijvus.xyz^ -||vtiipxfdtnkaau.com^ -||vtrodqjicfys.com^ -||vttbtsamsbbcpgy.com^ -||vtveyowwjvz.com^ -||vtvkkbasfm.com^ -||vtxluebammbfs.com^ -||vubihowhe.com^ -||vudaiksaidy.com^ -||vudkgwfk.xyz^ -||vudoutch.com^ -||vuftouks.com^ -||vufzuld.com^ -||vugnoolr.com^ -||vugnubier.com^ -||vuieoqhenxeaiv.com^ -||vuiluaz.xyz^ -||vujriahqyleveh.com^ -||vukpwyvge.com^ -||vulgarmilletappear.com^ -||vulnerablebreakerstrong.com^ -||vulnerableordered.com^ -||vulnjcmqu.com^ -||vungqwclop.xyz^ -||vuolobnhqb.com^ -||vuphoubs.com^ -||vupoupay.com^ -||vuqufo.uno^ -||vursoofte.net^ -||vuruzy.xyz^ -||vusrabieg.com^ -||vuvacu.xyz^ -||vuvcroguwtuk.com^ -||vuvochgw.xyz^ -||vuvoti.uno^ -||vuvoti.xyz^ -||vuwmxjusucnh.com^ -||vuyngptxhjtmdn.com^ -||vuzxgvjt.com^ -||vv8h9vyjgnst.com^ -||vvehvch.com^ -||vvfrdcuxrergrjy.com^ -||vvgpkowlun.com^ -||vvickycira.com^ -||vvobtrjtinsd.com^ -||vvpabthqlyvdfk.com^ -||vvpojbsibm.xyz^ -||vvrbjtjxmlgcd.xyz^ -||vvsesfeunlu.com^ -||vvtadblk.online^ -||vvvljeqasz.com^ -||vvwbjuaerbgmrjm.com^ -||vvwkfxidtw.com^ -||vvyqxxgxlnptc.com^ -||vvzzphefzcdfr.com^ -||vwchbsoukeq.xyz^ -||vwciywmidwvel.com^ -||vwcqjnqy.com^ -||vwdtyjygxap.com^ -||vwedfijcm.xyz^ -||vwegihahkos.com^ -||vwhnfwdbf.com^ -||vwinagptucpa.com^ -||vwl7kia4fzz6.com^ -||vwqohlgfneusxy.com^ -||vwswilfrveqzw.com^ -||vwtqjotm.com^ -||vwwzygltq.com^ -||vxfpsgwhm.com^ -||vxkvekeelfpymy.com^ -||vxlpuja.com^ -||vxnbklwrctqbn.xyz^ -||vxoncbelghuic.com^ -||vxorjza.com^ -||vxrydraquqcwb.com^ -||vxsscpctuiq.com^ -||vxxizaan.com^ -||vyazmi.com^ -||vydfijoiw.com^ -||vyebzzbovvzvl.top^ -||vyfrxuytzn.com^ -||vypywufmbsp.com^ -||vyqpumohlvdsd.xyz^ -||vyxoeu.xyz^ -||vz.7vid.net^ -||vzhzlraxtwgyn.com^ -||vzigttqgqx.com^ -||vzksnszthuq.com^ -||vzoarcomvorz.com^ -||vztlivv.com^ -||vzufzah.com^ -||vzzramqlfb.com^ -||w3exit.com^ -||w3needman3w.com^ -||w3plywbd72pf.com^ -||w4.com^ -||w55c.net^ -||w65mymobile.com^ -||w76mddb.com^ -||w99megeneral.com^ -||wabejoyrode.life^ -||wabhrkynybk.com^ -||wachipho.net^ -||wackeerd.com^ -||wacoloather.top^ -||wadauthy.net^ -||waeiftfylzo.com^ -||waescyne.com^ -||waeshana.com^ -||wafflesgenuine.com^ -||wafflesquaking.com^ -||wafmedia6.com^ -||waframedia5.com^ -||wagaloo.co.in^ -||wagecolorful.com^ -||wagepulsate.com^ -||wagerjoint.com^ -||wagerprocuratorantiterrorist.com^ -||wagershare.com^ -||wagersinging.com^ -||waggonerchildrensurly.com^ -||waggonerfoulpillow.com^ -||wagnal.com^ -||wagroyalcrap.com^ -||wagtelly.com^ -||wahile.com^ -||wahoha.com^ -||waigriwa.xyz^ -||wailedfrosty.com^ -||waioowcadhw.xyz^ -||waisheph.com^ -||waistcoataskeddone.com^ -||waistdeafgeorgiana.com^ -||wait4hour.info^ -||waitdeathinquiries.com^ -||waiterregistrydelusional.com^ -||waitheja.net^ -||waiting.biz^ -||waiwodemanila.com^ -||wakelardassistance.com^ -||wakemessyantenna.com^ -||wakenssponged.com^ -||wakoreacetous.com^ -||walkedcreak.com^ -||walkerbayonet.com^ -||walkernewspapers.com^ -||walkerscitola.top^ -||walkinggruff.com^ -||walkingtutor.com^ -||walknotice.com^ -||wallacehoneycombdry.com^ -||wallacelaurie.com^ -||walletbrutallyredhead.com^ -||wallowwholi.info^ -||wallowwholikedto.info^ -||wallpapersfacts.com^ -||wallstrads.com^ -||walrea.com^ -||waltergasp.com^ -||waltzprescriptionplate.com^ -||wamarapayor.com^ -||wamnetwork.com^ -||wanderingchimneypainting.com^ -||wanesorates.digital^ -||wangfenxi.com^ -||wangimoqgdi.com^ -||wanintrudeabbey.com^ -||wanlyavower.com^ -||wannessdebus.com^ -||wannestfooled.com^ -||wanodtbfif.com^ -||wansafeguard.com^ -||wansultoud.com^ -||want-s0me-push.net^ -||want-some-push.net^ -||wantedjeff.com^ -||wantingernestbreakfast.com^ -||wantingunmovedhandled.com^ -||wantopticalfreelance.com^ -||wantsindulgencehum.com^ -||wapbaze.com^ -||wappingcalques.com^ -||waptrick.com^ -||waqool.com^ -||warblyjuggler.top^ -||wardhunterwaggoner.com^ -||wardrobecontingent.com^ -||warehousecanneddental.com^ -||warehousestoragesparkling.com^ -||warfarerewrite.com^ -||wargumtu.net^ -||wariestbudgers.com^ -||warilyaggregation.com^ -||warilycommercialconstitutional.com^ -||warilydigestionauction.com^ -||warilytumblercheckbook.com^ -||warindifferent.com^ -||wariod.com^ -||warlike-context.com^ -||warliketruck.com^ -||warlockstallioniso.com^ -||warm-course.pro^ -||warmanmamelon.com^ -||warmerdisembark.com^ -||warmsanabia.guru^ -||warmthsmasseur.com^ -||warnmessage.com^ -||warpassistrefrain.com^ -||warrantpiece.com^ -||warsabnormality.com/pixel/pure -||warsabnormality.com^ -||warscoltmarvellous.com^ -||warswhitawe.com^ -||wartletkenn.com^ -||wartletsewar.guru^ -||warumbistdusoarm.space^ -||warworkunson.top^ -||wary-pressure.pro^ -||washdaycalmly.com^ -||washedgrimlyhill.com^ -||washergnome.com^ -||washincozing.space^ -||washinexhaustible.com^ -||washingbustlewhack.com^ -||washingoccasionally.com^ -||washokanap.com^ -||washpottelly.website^ -||wasortg.com^ -||wasp-182b.com^ -||waspdiana.com^ -||waspfestivalchampionship.com^ -||waspilysagene.com^ -||waspishamendbulb.com^ -||waspishoverhear.com^ -||wasqimet.net^ -||wastecaleb.com^ -||wastedclassmatemay.com^ -||wastedinvaluable.com^ -||wastefulenthusiasm.pro^ -||wastefuljellyyonder.com^ -||wastefulpack.pro^ -||watch-now.club^ -||watchcpm.com^ -||watcheraddictedpatronize.com^ -||watcherdisastrous.com^ -||watcherworkingbrand.com^ -||watchespounceinvolving.com^ -||watchesthereupon.com^ -||watchestwenties.com^ -||watchexcellent.pics^ -||watchexcellentpics.online^ -||watchexcellentvids.online^ -||watchgelads.com^ -||watchingthat.com^ -||watchingthat.net^ -||watchlivesports4k.club^ -||watchmanyachtmatch.com^ -||watchmarinerflint.com^ -||watchmytopapp.top^ -||watchnewvids.online^ -||watchthistop.net^ -||watekade.xyz^ -||waterfallblessregards.com^ -||waterfallchequeomnipotent.com^ -||waterlinesheet.org^ -||waterypower.pro^ -||wateryzapsandwich.com^ -||watwait.com^ -||wauchguardee.com^ -||waudeesestew.com^ -||waufooke.com^ -||waughtsquint.com^ -||waugique.net^ -||wauloumu.net^ -||waunsgraphs.website^ -||wauroufu.net^ -||waust.at^ -||wauthaik.net^ -||wauwitew.net^ -||waveclks.com^ -||wavedfrailentice.com^ -||wavedprincipal.com^ -||waveelectbarn.com^ -||wavermerchandiseweird.com^ -||wavimurcavaqd.com^ -||wavingteenagecandle.com^ -||wavysnarlfollow.com^ -||wawhairt.net^ -||waxbushengore.com^ -||waxingcesti.com^ -||waxworksprotectivesuffice.com^ -||waybillbulged.com^ -||wayfgwbipgiz.com^ -||waymarkgentiin.com^ -||waymentriddel.com^ -||wazaki.xyz^ -||wazctigribhy.com^ -||wazduzrhiki.com^ -||wazensee.net^ -||waztahsmal.com^ -||wazzeyzloayz.top^ -||wazzeyzlozyj.top^ -||wbdds.com^ -||wbdqwpu.com^ -||wbekwxsup.com^ -||wbfhivtydh.com^ -||wbgwuftclaya.com^ -||wbidder.online^ -||wbidder2.com^ -||wbidder3.com^ -||wbidder311072023.com^ -||wbidr.com^ -||wbilvnmool.com^ -||wbjjkdofo.xyz^ -||wboptim.online^ -||wboux.com^ -||wbowoheflewroun.info^ -||wbsads.com^ -||wbtsaeadmo.com^ -||wbuurzutrhmlsz.com^ -||wbvjhlaljp.com^ -||wbzfybvl.com^ -||wcaahlqr.xyz^ -||wcadfvvwbbw.xyz^ -||wcadlvruvrq.xyz^ -||wcbxugtfk.com^ -||wcctteslcmulgmu.com^ -||wcdifwzlqxhx.com^ -||wcdxpxugsrk.xyz^ -||wcgcddncqveiqia.xyz^ -||wchctzzkzkhx.com^ -||wcjiaclw.com^ -||wcltbpbnlf.com^ -||wcmcs.net^ -||wcnhhqqueu.com^ -||wcnndaazbwmane.com^ -||wcpltnaoivwob.xyz^ -||wcqtgwsxur.xyz^ -||wct.link^ -||wcuolmojkzir.com^ -||wcvyyacmnoamt.com^ -||wcxegvp.com^ -||wczpllwwwjoi.com^ -||wdavrzv.com^ -||wddlydaxtmm.com^ -||wdevxtmasfdswx.com^ -||wdohhlagnjzi.com^ -||wdownthreerfdfg.com^ -||wdpqgagmulazv.com^ -||wdpylyw.com^ -||wdt9iaspfv3o.com^ -||wduqxbvhpwd.xyz^ -||wdvlqbo.com^ -||weakcompromise.com^ -||wealthextend.com^ -||wealthsgraphis.com^ -||wealthyamomal.com^ -||wealthyonsethelpless.com^ -||weanersporta.com^ -||weanyergravely.com^ -||weaponsnondescriptperceive.com^ -||weaponvelocitypredator.com^ -||weaptqsmbshwd.xyz^ -||wearbald.care^ -||wearevaporatewhip.com^ -||wearinggenear.com^ -||wearishalgins.com^ -||wearisomeexertiontales.com^ -||wearydisturbing.com^ -||wearyregister.com^ -||wearyvolcano.com^ -||weaselabsolute.com^ -||weaselbubblehue.com^ -||weaselmicroscope.com^ -||weatheralcovehunk.com^ -||weathercockr.com^ -||weatherpeanutnegligence.com^ -||weatherplllatform.com^ -||weatherpopularitypassage.com^ -||weatherstumphrs.com^ -||weavelurkwiden.com^ -||weaveradrenaline.com^ -||weaverdispensepause.com^ -||weayrvvkvvalk.top^ -||web-guardian.xyz^ -||web-hosts.io^ -||web-security.cloud^ -||web0.eu^ -||webads.co.nz^ -||webads.media^ -||webadserver.net^ -||webair.com^ -||webassembly.stream^ -||webatam.com^ -||webbymendole.com^ -||webcampromo.com^ -||webcampromotions.com^ -||webclickengine.com^ -||webclickmanager.com^ -||webcontentassessor.com^ -||webdatatrace.com^ -||webestablishedsunflower.com^ -||webmedrtb.com^ -||webpinp.com^ -||webpushcloud.info^ -||webquizspot.com^ -||webregadvertising.com^ -||webseeds.com^ -||websitepromoserver.com^ -||webstats1.com^ -||webteaser.ru^ -||webteensyusa.com^ -||webtradehub.com^ -||wecjdqpinrpaugf.com^ -||wecontemptceasless.com^ -||wecouldle.com^ -||wedflossbecause.com^ -||wedgedgeoduck.com^ -||wedgierbirsit.com^ -||wednesdaygranddadlecture.com^ -||wednesdaynaked.com^ -||wednesdaywestern.com^ -||wedonhisdhiltew.info^ -||wee-intention.com^ -||weebipoo.com^ -||weedazou.net^ -||weedfowlsgram.com^ -||weednewspro.com^ -||weehauptoupt.com^ -||week1time.com^ -||weekendchinholds.com^ -||weeklideals.com^ -||weemofee.com^ -||weepingheartache.com^ -||weepingpretext.com^ -||weeprobbery.com^ -||weestuch.com^ -||weethery.com^ -||weewhunoamo.xyz^ -||weewowshrinky.com^ -||wefoonsaidoo.com^ -||weftsgeogeny.com^ -||wegastroky.com^ -||wegeeraitsou.xyz^ -||wegetpaid.net^ -||wegotmedia.com^ -||wehaveinourd.org^ -||wehrma.com^ -||weighertutania.com^ -||weighinened.com^ -||weird-lab.pro^ -||wel-wel-fie.com^ -||welchdecrier.com^ -||welcomeargument.com^ -||welcomememory.pro^ -||welcomeneat.pro^ -||welcometerrific.com^ -||welcomingcasklive.com^ -||welcomingvigour.com^ -||welfarefit.com^ -||wellexpressionrumble.com^ -||wellhello.com^ -||wellinformed-song.com^ -||welllwrite.com^ -||wellmadeabroad.pro^ -||wellmov.com^ -||wellnesszap.com^ -||wellpdy.com^ -||welltodoresource.com^ -||weltercampe.com^ -||welved.com^ -||wemfpbtd.xyz^ -||wemoustacherook.com^ -||wempooboa.com^ -||wendelstein-1b.com^ -||wenher.com^ -||wennishbubbles.com^ -||weoigpwcg.com^ -||weownthetraffic.com^ -||wepainsoaken.com^ -||weredthechild.info^ -||wereksbeforebut.info^ -||weremoiety.com^ -||wererxrzmp.com^ -||werped.com^ -||werxebpnl.com^ -||weshsofoij.xyz^ -||wesicuros.com^ -||wesmallproclaim.com^ -||wesmuqjisx.com^ -||westernhungryadditions.com^ -||westernwhetherowen.com^ -||westeselva.com^ -||westreflection.com^ -||westslendersolitary.com^ -||westspulse.com^ -||wet-maybe.pro^ -||wetlinepursuing.com^ -||wetpeachcash.com^ -||wetryprogress.com^ -||wetsireoverload.com^ -||wetzal.com^ -||wevrwqjlylmaj.top^ -||wevrwqjlylqwm.top^ -||wewearegogogo.com^ -||wewloromyvvav.top^ -||wexfhjpmvhnakq.com^ -||weyojqrgzn.com^ -||wezmklgd.com^ -||wezvveogk.com^ -||wf66l5ylwq.com^ -||wfblnkej.com^ -||wfcs.lol^ -||wfdlrirntafl.com^ -||wffbdim.com^ -||wffgqahhhohdfkp.com^ -||wfnetwork.com^ -||wfnpay.com^ -||wfodwkk.com^ -||wfredir.net^ -||wfthumty.pm^ -||wfubtuatsa.com^ -||wfuossjholw.com^ -||wfutphkrendhr.com^ -||wfuwlkgm.com^ -||wg-aff.com^ -||wgbwlgzthobp.com^ -||wgchrrammzv.com^ -||wggqzhmnz.com^ -||wghzbgmjpyig.com^ -||wgkggub.com^ -||wgxpirautgxpap.com^ -||wgxzslfagpbcqd.com^ -||wgyoaqtjfb.com^ -||whaacgqzyaz.com^ -||whackresolved.com^ -||whackygribane.life^ -||whadupsi.net^ -||whagrogiva.com^ -||whagrolt.com^ -||whaidree.com^ -||whaijoorgoo.com^ -||whairtoa.com^ -||whaishub.net^ -||whaivoole.com^ -||whaiweel.com^ -||whaixoads.xyz^ -||whakoxauvoat.xyz^ -||whaleads.com^ -||whaleapartmenthumor.com^ -||whalems.com^ -||whalepeacockwailing.com^ -||whalepp.com^ -||whamauft.com^ -||whamiwiwu.pro^ -||whampamp.com^ -||whamuthygle.com^ -||whandpolista.com^ -||wharployn.com^ -||whartfidalgo.life^ -||whateyesight.com^ -||whatijunnstherew.com^ -||whatisnewappforyou.top^ -||whatisuptodaynow.com^ -||whatnotbenjoin.top^ -||whatolra.net^ -||whatsfopped.top^ -||whatsoeverlittle.com^ -||whaudsur.net^ -||whauglorga.com^ -||whaulids.com^ -||whaunsockou.xyz^ -||whaurgoopou.com^ -||whautsis.com^ -||whauvebul.com^ -||whazugho.com^ -||wheceelt.net^ -||whechypheshu.com^ -||wheebsadree.com^ -||wheedran.com^ -||wheeksir.net^ -||wheel-of-fortune-prod.com^ -||wheelbarrowbenignity.com^ -||wheeldenunciation.com^ -||wheeledabbotafterward.com^ -||wheeledmoundangrily.com^ -||wheelsbullyingindolent.com^ -||wheelscomfortlessrecruiting.com^ -||wheelstweakautopsy.com^ -||wheensairga.com^ -||wheeptit.net^ -||wheeshoo.net^ -||wheetlemetreza.com^ -||whehongu.com^ -||whempine.xyz^ -||whencecrappylook.com^ -||whenceformationruby.com^ -||whencewaxworks.com^ -||whenevererupt.com^ -||whengebsoth.com^ -||whenolri.com^ -||where.com^ -||whereaboutsgolancould.com^ -||wherebyinstantly.com^ -||whereres.com^ -||whereuponcomicsraft.com^ -||wherevertogo.com^ -||wherretafley.top^ -||wherunee.com^ -||whestail.com^ -||whethobs.xyz^ -||whetin.com^ -||wheweeze.net^ -||whewerveriest.top^ -||whiboubs.com^ -||whiceega.com^ -||whichcandiedhandgrip.com^ -||whickazoxy.top^ -||whickgiunta.com^ -||whifflehumeral.guru^ -||whileinferioryourself.com^ -||whilroacix.com^ -||whimpercategory.com^ -||whimsicalcoat.com^ -||whineshellcat.space^ -||whineyancilia.top^ -||whiningbewildered.com^ -||whiningconfessed.com^ -||whipgos.com^ -||whippedfreezerbegun.com^ -||whiprayoutkill.com^ -||whirkenhevi.digital^ -||whirlclick.com^ -||whirltoes.com^ -||whirlwindconsistencyinoffensive.com^ -||whirlwindofnews.com^ -||whiskersbiographypropulsion.com^ -||whiskersbonnetcamping.com^ -||whiskerssituationdisturb.com^ -||whiskerssunflowertumbler.com^ -||whiskersthird.com^ -||whisperofisaak.com^ -||whisperpostage.com^ -||whisteeb.xyz^ -||whistledittyshrink.com^ -||whistledprocessedsplit.com^ -||whistlelloyd.com^ -||whistlingbeau.com^ -||whistlingmoderate.com^ -||whistlingvowel.com^ -||whiteaccompanypreach.com^ -||whitenoisenews.com^ -||whitepark9.com^ -||whizduly.com^ -||whizzerknucks.com^ -||whizzerlollard.top^ -||whizzerrapiner.com^ -||whkyiuufzjt.com^ -||whoachoh.com^ -||whoajeex.xyz^ -||whoaksoo.com^ -||whoapsoo.com^ -||whoartairg.com^ -||whoavaud.net^ -||whoawhoug.com^ -||whodouth.net^ -||whofiguredso.org^ -||whoftits.xyz^ -||whokrour.net^ -||wholeactualjournal.com^ -||wholeactualnewz.com^ -||wholecommonposts.com^ -||wholecoolposts.com^ -||wholecoolstories.com^ -||wholedailyfeed.com^ -||wholeelision.com^ -||wholefreshposts.com^ -||wholehugestories.com^ -||wholehugewords.com^ -||wholenicenews.com^ -||wholesomelethal.com^ -||wholewowblog.com^ -||whollychapters.com^ -||whollyneedy.com^ -||whompedcuorin.com^ -||whomspreadbeep.com^ -||whoodraujiwu.com^ -||whoodseb.com^ -||whoognoz.com^ -||whookrair.xyz^ -||whookroo.com^ -||whoomseezesh.com^ -||whoostoo.net^ -||whootapt.com^ -||whootascots.com^ -||whootkhankah.com^ -||whoppercreaky.com^ -||whopping-sea.com^ -||whopstriglot.com^ -||whoptoorsaub.com^ -||whorlysenior.top^ -||whotchie.net^ -||whotrundledthe.com^ -||whoulikaihe.net^ -||whoumtefie.com^ -||whoumtip.xyz^ -||whounoag.xyz^ -||whounsou.com^ -||whourgie.com^ -||whouroazu.net^ -||whoursie.com^ -||whoururt.xyz^ -||whouseem.com^ -||whoustoa.net^ -||whoutchi.net^ -||whoutsog.net^ -||whowhipi.net^ -||whqxqwy.com^ -||whsledorking.com^ -||whuckaip.xyz^ -||whugeestauva.com^ -||whugesto.net^ -||whuhough.xyz^ -||whujoagh.net^ -||whukroal.net^ -||whulsaux.com^ -||whupsoza.xyz^ -||whuptaiz.net^ -||whustemu.com^ -||whutchey.com^ -||whuweehy.xyz^ -||whychymithy.com^ -||whyl-laz-i-264.site^ -||whyocafenet.space^ -||wibtntmvox.com^ -||wichauru.xyz^ -||wichtstoppit.space^ -||wickedhumankindbarrel.com^ -||wickedoutrage.com^ -||wickedunpen.top^ -||wicketfumage.com^ -||widaimty.com^ -||wideaplentyinsurance.com^ -||wideeyed-painting.com^ -||wideeyedlady.pro^ -||widelt.com^ -||widenerasbolan.com^ -||widerdaydream.com^ -||widespreadgabblewear.com^ -||widezealconstant.com^ -||widgetbucks.com^ -||widgetly.com^ -||widore.com^ -||widow5blackfr.com^ -||widthovercomerecentrecent.com^ -||wiediceberg.uno^ -||wiela-kig.com^ -||wifegraduallyclank.com^ -||wifescamara.click^ -||wifeskneels.com^ -||wifeverticallywoodland.com^ -||wigetmedia.com^ -||wigfulchiack.com^ -||wiggledeteriorate.com^ -||wigglestoriesapt.com^ -||wigglychick.top^ -||wiglessernes.com^ -||wignuxidry.net^ -||wigsynthesis.com^ -||wikbdhq.com^ -||wikeqa.uno^ -||wilcooxcheek.com^ -||wild-plant.pro^ -||wildedbarley.com^ -||wildestduplicate.com^ -||wildestelf.com^ -||wildhookups.com^ -||wildlifeeventlean.com^ -||wildlifefallinfluenced.com^ -||wildlifesolemnlyrecords.com^ -||wildmatch.com^ -||wildxxxparties.com^ -||wilfridjargonby.com^ -||wilfulknives.com^ -||wilfulsatisfaction.com^ -||williamfaxarts.com^ -||williamporterlilac.com^ -||williednb.com^ -||willinglypromoteceremony.com^ -||willingnessaggravationfits.com^ -||willingnesslookheap.com^ -||willtissuetank.com^ -||wilslide.com^ -||wimpeelt.com^ -||wimplesbooklet.com^ -||wimpthirtyarrears.com^ -||win-bidding.com^ -||win-myprize.top^ -||winbestprizess.info^ -||winbuyer.com^ -||windindelicateexclusive.com^ -||windingnegotiation.com^ -||windingravesupper.com^ -||windofaeolus.com^ -||windowdemiselowlife.com^ -||windowsaura.com^ -||windowsdaggerminiaturization.com^ -||windowsgushfurnished.com^ -||windowsuseful.com^ -||windsplay.com^ -||windymissphantom.com^ -||winecolonistbaptize.com^ -||wineinstaller.com^ -||winewiden.com^ -||winfulelle.top^ -||wingads.com^ -||wingerssetiger.com^ -||wingingtuzzle.space^ -||wingleeer.space^ -||wingoodprize.life^ -||wingselastic.com^ -||wingstoesassemble.com^ -||winkexpandingsleigh.com^ -||winneradsmedia.com^ -||winnersolutions.net^ -||winningorphan.com^ -||winpbn.com^ -||winr.online^ -||winsimpleprizes.life^ -||winslinks.com^ -||winternewsnow.name^ -||winterolivia.com^ -||wintjaywolf.org^ -||wipedhypocrite.com^ -||wipeilluminationlocomotive.com^ -||wipepeepcyclist.com^ -||wipeunauthorized.com^ -||wiphpiqsuheta.com^ -||wipowaxe.com^ -||wirelessdeficiencyenemies.com^ -||wirelessinvariable.com^ -||wiremembership.com^ -||wirenth.com^ -||wiringcollectorguffaw.com^ -||wiringsensitivecontents.com^ -||wirratailage.com^ -||wirrttnlmumsak.xyz^ -||wirsilsa.net^ -||wirwastine.digital^ -||wisfriendshad.info^ -||wishesantennarightfully.com^ -||wishesobtrusivefastest.com^ -||wishfulauthorities.com^ -||wishfulthingtreble.com^ -||wishjolty.com^ -||wishjus.com^ -||wishoblivionfinished.com^ -||wishoutergrown.com^ -||wister.biz^ -||wistfulassign.com^ -||wistfulcomet.com^ -||witalfieldt.com^ -||withblaockbr.org^ -||withcarsickhatred.com^ -||withcrepteast.com^ -||withdedukication.com^ -||withdrawcosmicabundant.com^ -||withdrawdose.com^ -||withdrawwantssheep.com^ -||withdrewparliamentwatery.com^ -||withdromnit.pro^ -||withearamajo.info^ -||withenvisagehurt.com^ -||withersserdabs.guru^ -||withholdrise.com^ -||withholdstandstill.com^ -||withinresentful.com^ -||withinsdraco.com^ -||withnimskither.com^ -||withoutcontrol.com^ -||withyouryretye.info^ -||witlayvet.com^ -||witnessedcompany.com^ -||witnessedworkerplaid.com^ -||witnessjacket.com^ -||witnessremovalsoccer.com^ -||witnesssimilarindoors.com^ -||wittilyfrogleg.com^ -||witwormfurzes.com^ -||wivesstandpoint.com^ -||wivoqi.uno^ -||wivtuhoftat.com^ -||wizardscharityvisa.com^ -||wizardunstablecommissioner.com^ -||wizenejector.top^ -||wizkrdxivl.com^ -||wizssgf.com^ -||wjgcygwgrvooio.com^ -||wjkhieahcmao.com^ -||wjljwqbmmjjmw.top^ -||wjljwqbmmjlmm.top^ -||wjudihl.com^ -||wjvyorreejezm.top^ -||wjvyorreejkzw.top^ -||wjxtbwffpykdmo.com^ -||wjzrzwyrrbwyz.top^ -||wka4jursurf6.com^ -||wkktnbxxum.xyz^ -||wkmorvzqjmwav.top^ -||wkmorvzqjmyrw.top^ -||wknaczrxjrj.com^ -||wkoeoaavammkr.top^ -||wkoeoaavammqv.top^ -||wkoeoaavamqek.top^ -||wkoocuweg.com^ -||wkpewkejefefhm.com^ -||wkpfgjbmd.com^ -||wkqcnkstso.com^ -||wkqqdchbbz.com^ -||wkwqljwykojvm.top^ -||wkwqljwykollz.top^ -||wkwqljwykomlv.top^ -||wl-cornholio.com^ -||wlafx4trk.com^ -||wlawpzx.com^ -||wldepmzuwqvmyq.com^ -||wleallwllbkok.top^ -||wlen1bty92.pro^ -||wlhzbbvtofot.com^ -||wlimrvsnusyawk.com^ -||wlmitgzbht.com^ -||wlrkcefll.com^ -||wlvkzwqjlyzvr.top^ -||wlwbjjphtza.com^ -||wlyfiii.com^ -||wlzzwzekkrrzw.top^ -||wma.io^ -||wmadmht.com^ -||wmaoviagmphst.com^ -||wmaoxrk.com^ -||wmbbsat.com^ -||wmcdpt.com^ -||wmdymnqzhbo.com^ -||wmdzefk.com^ -||wmeqobozarqyj.top^ -||wmgtr.com^ -||wmhwptmsvx.com^ -||wmiahgohlf.com^ -||wmkyrbx.com^ -||wmlbjana.com^ -||wmlfyerssqlipx.com^ -||wmnnjfe.com^ -||wmober.com^ -||wmpset.com^ -||wmptcd.com^ -||wmptctl.com^ -||wmpted.com^ -||wmpuem.com^ -||wmtaeem.com^ -||wmtmhbuiumwl.com^ -||wmudsraxwj.xyz^ -||wmwwmbjkmalz.top^ -||wmwwmbjkmavr.top^ -||wmwwmbjkmrlv.top^ -||wmxthwflju.xyz^ -||wmzlbovyjrwvw.top^ -||wnedandlooked.info^ -||wnjjhksaue.com^ -||wnjtssmha.com^ -||wnp.com^ -||wnrusisedprivatedq.info^ -||wnrvrwabnxa.com^ -||wnt-s0me-push.net^ -||wnt-some-psh.net^ -||wnt-some-push.com^ -||wnt-some-push.net^ -||wnthglylkflcc.com^ -||wnulffwyetlek.com^ -||wnvdgegsjoqoe.xyz^ -||woafoame.net^ -||woagroopsek.com^ -||woaneezy.com^ -||woaniphud.com^ -||woapheer.com^ -||woathail.net^ -||woathaiz.net^ -||woawhouzie.com^ -||wobblyiroha.com^ -||wocfhqqt.com^ -||wochuadaribah.com^ -||wocwibkfutrj.com^ -||woefifty.com^ -||woejh.com^ -||woespoke.com^ -||woetcwdynnltfnh.com^ -||wogglehydrae.com^ -||wohpaqjb.com^ -||wokaptoa.com^ -||wokenoptionalcohabit.com^ -||wokm8isd4zit.com^ -||wolaufie.com^ -||wolffiareecho.com^ -||wolqundera.com^ -||wolsretet.net^ -||wolve.pro^ -||womadsmart.com^ -||womanedlithite.guru^ -||womangathering.com^ -||womanpiaffed.top^ -||wombalayah.com^ -||womenvocationanxious.com^ -||womerasecocide.com^ -||woncherish.com^ -||wonconsists.com^ -||woncorvee.com^ -||wondefulapplend.com^ -||wonderanticipateclear.com^ -||wonderfulstatu.info^ -||wonderhsjnsd.com^ -||wonderingmassage.com^ -||wonderlandads.com^ -||wonfigfig.com^ -||wongahmalta.com^ -||wongaunitage.uno^ -||wonnauseouswheel.com^ -||wonsegax.net^ -||wooballast.com^ -||woodbeesdainty.com^ -||wooden-comfort.com^ -||woodenguardsheartburn.com^ -||woodhenmils.com^ -||woodlandsmonthlyelated.com^ -||woodlandsveteran.com^ -||woodtipvpnrh.com^ -||woodygloatneigh.com^ -||woodymotherhood.com^ -||woofoafi.xyz^ -||woogoust.com^ -||woolasib.net^ -||woolenabled.com^ -||woolensulking.com^ -||woollenthawewe.com^ -||woollouder.com^ -||woolsawaq.com^ -||woopeekip.com^ -||woopteem.net^ -||wootmedia.net^ -||woovoree.net^ -||woozilyfifed.top^ -||woozypp.top^ -||wopsedoaltuwipp.com^ -||wopsedoaltuwn.com^ -||wopsedoaltuwo.com^ -||wopsedoaltuwp.com^ -||woqycyda.com^ -||wordbodily.com^ -||wordingget.com^ -||wordpersonify.com^ -||wordsnought.com^ -||wordyhall.pro^ -||wordyjoke.pro^ -||woredi.com^ -||woreensurelee.com^ -||worehumbug.com^ -||worersie.com^ -||worimu.uno^ -||worimu.xyz^ -||workback.net^ -||workeddecay.com^ -||workedworlds.com^ -||workerdisadvantageunrest.com^ -||workerprogrammestenderly.com^ -||workervanewalk.com^ -||workmanceremony.com^ -||workplacenotchperpetual.com^ -||worldactualstories.com^ -||worldbestposts.com^ -||worldbusiness.life^ -||worldcommonwords.com^ -||worldcoolfeed.com^ -||worldfreshblog.com^ -||worldfreshjournal.com^ -||worldglobalssp.xyz^ -||worldlyyouth.com^ -||worldofviralnews.com^ -||worldpraisedcloud.com^ -||worldsportlife.com^ -||worldtimes2.xyz^ -||worldtraffic.trade^ -||worldwhoisq.org^ -||worldwidemailer.com^ -||worldwideor.info^ -||worlowedonhi.info^ -||wormdehydratedaeroplane.com^ -||wornie.com^ -||wornshoppingenvironment.com^ -||worryingonto.com^ -||worsesziara.com^ -||worshipstubborn.com^ -||worst-zone.pro^ -||worstgoodnightrumble.com^ -||worstideatum.com^ -||worstnumidae.com^ -||worthconesquadron.com^ -||worthless-living.pro^ -||worthlessanxiety.pro^ -||worthlesspattern.com^ -||worthlessstrings.com^ -||worthspontaneous.com^ -||worthwhileawe.com^ -||worthylighteravert.com^ -||wotihxqbdrbmk.xyz^ -||woudaufe.net^ -||woujaupi.xyz^ -||woujoami.com^ -||woukrkskillsom.info^ -||woulddecade.com^ -||wouldlikukemyf.info^ -||wouldmakefea.org^ -||wouldmakefeag.info^ -||wouldmakefeagre.info^ -||wouldtalkbust.com^ -||wouled.com^ -||woulin.com^ -||woulst.com^ -||wounderfullife.xyz^ -||wountr.com^ -||woushucaug.com^ -||wouthula.xyz^ -||wouvista.com^ -||wovazaix.com^ -||wovensur.com^ -||woviftjhpkn.com^ -||wow-click.click^ -||wowcalmnessdumb.com^ -||wowebahugoo.com^ -||wowhaujy.com^ -||wowkydktwnyfuo.com^ -||wowlnk.com^ -||wowrapidly.com^ -||wowreality.info^ -||wowshortvideos.com^ -||woxfiybiepgltf.com^ -||woymebsi.com^ -||wozwmffiwpy.com^ -||wp3advesting.com^ -||wpadmngr.com^ -||wparcunnv.xyz^ -||wpbeyqjfg.com^ -||wpcgyoyq.com^ -||wpcjyxwdsu.xyz^ -||wpihekqpm.xyz^ -||wpinfnyp.com^ -||wpjhenqutmdzd.com^ -||wpncdn.com^ -||wpnetwork.eu^ -||wpnjs.com^ -||wpnrtnmrewunrtok.xyz^ -||wpnsrv.com^ -||wpooxqs.com^ -||wpowiqkgykf.com^ -||wpshsdk.com^ -||wpsmcns.com^ -||wpu.sh^ -||wpunativesh.com^ -||wpush.org^ -||wpushorg.com^ -||wqasioxvqnj.com^ -||wqjzajr.com^ -||wqlnfrxnp.xyz^ -||wqltsxjqfhlxty.com^ -||wqorxfp.com^ -||wqyjkupqj.com^ -||wqzjfsmudvpct.com^ -||wqzqoobqpubx.com^ -||wqzyxxrrep.com^ -||wrangleprickly.com^ -||wrapdime.com^ -||wrappeddimensionimpression.com^ -||wrappedhalfwayfunction.com^ -||wrappedproduct.com^ -||wrapperbarbet.com^ -||wrathful-alternative.com^ -||wrathyblesmol.com^ -||wrbdqlrn.com^ -||wrdnaunq.com^ -||wreaksyolkier.com^ -||wreathabble.com^ -||wreckingplain.com^ -||wreckonturr.info^ -||wrenchfavourablespear.com^ -||wrenko.com^ -||wrensacrificepossibly.com^ -||wrenterritory.com^ -||wrestcut.com^ -||wrestlingembroider.com^ -||wretched-confusion.com^ -||wretchedbomb.com^ -||wretcheddrunkard.com^ -||wretchmilitantasia.com^ -||wrevenuewasadi.info^ -||wrgjbsjxb.xyz^ -||wriedwite.uno^ -||wringdecorate.com^ -||wrinkleirritateoverrated.com^ -||wristtrunkpublication.com^ -||wristyagr.digital^ -||writeestatal.space^ -||writhehawm.com^ -||writhenwends.com^ -||writhing-library.pro^ -||writingwhine.com^ -||writshackman.com^ -||writtenanonymousgum.com^ -||wrjcedwpsybttkh.com^ -||wrkl.xyz^ -||wronol.com^ -||wrontonshatbona.com^ -||wrotad.com^ -||wroteeasel.com^ -||wrothycreep.top^ -||wrqtcoxjw.com^ -||wrrwkovcqn.com^ -||wruaqpkuwa.com^ -||wrufer.com^ -||wrycomparednutshell.com^ -||wryfruw.com^ -||wrylength.pro^ -||wrypassenger.com^ -||wsafeguardpush.com^ -||wsaidthemathe.info^ -||wsejsoqdmdzcvr.com^ -||wseojloda.com^ -||wsgmcgtbvky.com^ -||wsjlbbqemr23.com^ -||wsjpcev.com^ -||wsmobltyhs.com^ -||wsokomw.com^ -||wspsbhvnjk.com^ -||wstyruafypihv.xyz^ -||wt20trk.com^ -||wt2noay3fgjn.com^ -||wtcmjppejjb.com^ -||wtcysmm.com^ -||wtfgep.xyz^ -||wtg-ads.com^ -||wthbjrj.com^ -||wtkfxoqolprv.com^ -||wtmhwnv.com^ -||wtpizrezmr.com^ -||wtpsicowsqb.xyz^ -||wtrep.xyz^ -||wtuuilhbfvsiqbo.com^ -||wtynalolraz.com^ -||wuchaurteed.com^ -||wuckaity.com^ -||wudaoutsjuxbd.com^ -||wudr.net^ -||wuefmls.com^ -||wuftoars.net^ -||wuidtethhkcko.com^ -||wujyeflb.com^ -||wukbgater.buzz^ -||wukoopicee.com^ -||wukoulnhdlu.info^ -||wuksaiho.net^ -||wuksosta.com^ -||wuluju.uno^ -||wumpakuw.net^ -||wumteecoodsu.com^ -||wumufama.com^ -||wunteetoco.com^ -||wuqconn.com^ -||wurqaz.com^ -||wurwhydimo.com^ -||wussucko.com^ -||wutcifjtapa.com^ -||wutseelo.xyz^ -||wutsumazxq.com^ -||wuujae.com^ -||wuuwpqmuqg.com^ -||wuwutnnyedlhvr.com^ -||wuzbhjpvsf.com^ -||wveeir.com^ -||wvfhosisdsl.xyz^ -||wvhba6470p.com^ -||wvjzbijwbsegqq.com^ -||wvkppzspqsy.com^ -||wvpfumotgpsfy.com^ -||wvrgnlvzqmi.com^ -||wvtynme.com^ -||wvuvpahnbmnxt.com^ -||wvvkxni.com^ -||wvwxjfjjytaf.com^ -||wvxcdtuhcagistb.xyz^ -||ww2.imgadult.com^ -||ww2.imgtaxi.com^ -||ww2.imgwallet.com^ -||wwaeljajwvywm.top^ -||wwahuxzipoc.com^ -||wwarvlorobzw.top^ -||wwbeqrhjwnijdk.com^ -||wwemleypftdook.com^ -||wwfx.xyz^ -||wwhnjrg.com^ -||wwicnmksxd.com^ -||wwija.com^ -||wwkedpbh4lwdmq16okwhiteiim9nwpds2.com^ -||wwlaoryovljbv.top^ -||wwlaoryovljjr.top^ -||wwllfxt.com^ -||wwow.xyz^ -||wwoww.xyz^ -||wwowww.xyz^ -||wwpon365.ru^ -||wwpush22.com^ -||wwqssmg.com^ -||wwunnmshmv.xyz^ -||wwvqxqmcvfxwqq.com^ -||www6.hentai-zone.com^ -||www8.upload-pics.com^ -||wwwadcntr.com^ -||wwwowww.xyz^ -||wwwpromoter.com^ -||wwwsfmlrcskr.com^ -||wwwwndings.click^ -||wwwwzeraqvlqk.top^ -||wwwwzeraqvmkw.top^ -||wwwwzeraqvmqj.top^ -||wwxdmhfwagmwo.com^ -||wwxnbsvwultw.com^ -||wxaqazawxhjiz.com^ -||wxcqdnf.com^ -||wxhiojortldjyegtkx.bid^ -||wxltarsyoffmm.com^ -||wxmccgdodvsqibm.com^ -||wxmicgwfzqekj.com^ -||wxmxbvuwj.com^ -||wxoywtyuj.com^ -||wxseedslpi.com^ -||wxvfhgdeis.com^ -||wyeczfx.com^ -||wyeszcj.com^ -||wyfsddsucblzu.com^ -||wyglyvaso.com^ -||wyhifdpatl.com^ -||wyjkqvtgwmjqb.xyz^ -||wylizttrjbbbif.com^ -||wylmzwkywjrzr.top^ -||wymcgmxefvqvej.com^ -||wymtqcllysgej.com^ -||wymymep.com^ -||wynather.com^ -||wynnsbrot.com^ -||wynvalur.com^ -||wyresgkvhfdiz.com^ -||wyrtqdvhuiyhml.com^ -||wysasys.com^ -||wyscmkd.com^ -||wytxjmow.com^ -||wzcznlufq.com^ -||wzdzht7am5.com^ -||wzk5ndpc3x05.com^ -||wzlbhfldl.com^ -||wzmidfgwyxfrd.com^ -||wzncuhcpbijx.com^ -||wzojibovpm.com^ -||wzrqeos.com^ -||wzwtdbvzio.com^ -||wzxty168.com^ -||x011bt.com^ -||x2tsa.com^ -||x4pollyxxpush.com^ -||x7r3mk6ldr.com^ -||x95general.com^ -||xaajawwskkcnfuc.com^ -||xad.com^ -||xadcentral.com^ -||xads.one^ -||xadsmart.com^ -||xageyai.com^ -||xajqhrrrnxmy.com^ -||xalienstreamx.com^ -||xambxhihx.com^ -||xameleonads.com^ -||xammcokaho.com^ -||xanawet.com^ -||xannevugjv.com^ -||xapads.com^ -||xaqavvmtkcgtg.xyz^ -||xargijqtgysdvgj.com^ -||xatesfrgkifde.com^ -||xawlop.com^ -||xaxciisqwvk.com^ -||xaxoro.com^ -||xaxrtiahkft.com^ -||xayiqcwbmmhwf.com^ -||xazwlyh.com^ -||xbc8fsvo5w75wwx8.pro^ -||xbcnvj2mdk1dn1.com^ -||xbcrohmposa.com^ -||xbetobprp.com^ -||xblonthyc.com^ -||xbmczkujzsfkcq.com^ -||xbtjupfy.xyz^ -||xbwiykqxeiqb.com^ -||xbxmdlosph.xyz^ -||xcec.ru^ -||xcejarignt.com^ -||xcelltech.com^ -||xcelsiusadserver.com^ -||xcgbpsyob.com^ -||xciajfjrufu.com^ -||xclicks.net^ -||xcowuheclvwryh.com^ -||xcqyvahohs.com^ -||xcrnyxwlbvq.com^ -||xcsjbge.com^ -||xcwxfcav.com^ -||xcxbqohm.xyz^ -||xder1.fun^ -||xder1.online^ -||xdezxlbnpo.com^ -||xdfrdcuiug.com^ -||xdgelyt.com^ -||xdhqtgpkywjl.com^ -||xdirectx.com^ -||xdisplay.site^ -||xdiwbc.com^ -||xdmanage.com^ -||xdmicjkveqlgllp.com^ -||xdohrleybrd.com^ -||xdownloadright.com^ -||xduvqslud.com^ -||xdvorqmcxpyvy.com^ -||xdycqcoefditwj.com^ -||xdypuudfxmecd.com^ -||xebadu.com^ -||xefefetgxnh.com^ -||xegluwate.com^ -||xegmsox.com^ -||xeijckcsg.com^ -||xel-xel-fie.com^ -||xelllwrite.com^ -||xemiro.uno^ -||xenar.xyz^ -||xenopusbink.com^ -||xenosmussal.com^ -||xenylclio.com^ -||xeoprwhhiuig.xyz^ -||xetlugupyug.com^ -||xevbjycybvb.xyz^ -||xfahjal.com^ -||xfbdmmcydxt.com^ -||xfcpdigfsx.xyz^ -||xfdmihlzrmks.com^ -||xfguylptuqw.com^ -||xfileload.com^ -||xfipcmwcqrglvn.com^ -||xforhehvu.com^ -||xftrtljc.xyz^ -||xfujihakbk.com^ -||xfvvygrv.com^ -||xfwblpomxc.com^ -||xfxssqakis.com^ -||xfyqlex.com^ -||xfzbrfmffnpqd.com^ -||xgbmjmgrxfvf.com^ -||xgdljiasdo.xyz^ -||xgeuzcfrkeb.com^ -||xghxpvl.com^ -||xgmtlmrweyasy.com^ -||xgraph.net^ -||xgrqvhbml.com^ -||xgtfptm.com^ -||xgwhrvnxvhqgi.com^ -||xhapsebkdargwd.com^ -||xhfitpvxqog.com^ -||xhfvljklvq.com^ -||xhhaakxn.xyz^ -||xhlphpvgytyq.com^ -||xhmnbvn.com^ -||xhnedvpcml.com^ -||xhpzrfj.com^ -||xhr0.xyz^ -||xhrrrdsxtby.com^ -||xhvaqgs.com^ -||xhwwcif.com^ -||xhydgjisnfrtqsh.com^ -||xhzz3moj1dsd.com^ -||xiaomengxiong.com^ -||xibilitukydteam.info^ -||xigfqlwsbbtx.com^ -||xigrtoai.com^ -||xiifrwasfouifb.com^ -||xijgedjgg5f55.com^ -||xilbalar.com^ -||xiloncopmat.com^ -||ximybkpxwu.com^ -||xineday.com^ -||xipaaqgnrehpdns.com^ -||xipehexose.com^ -||xipteq.com^ -||xipwdvkessqguv.com^ -||xiqougw.com^ -||xiryrnrz.com^ -||xissidearm.com^ -||xitesa.uno^ -||xitwpifbihsxpj.com^ -||xivmviuynlt.com^ -||xjakcitm.com^ -||xjfbhxp.com^ -||xjincmbrulchml.xyz^ -||xjjjqlkjlrhqyh.com^ -||xjkhaow.com^ -||xjktawqrcaw.com^ -||xjoyvqpuwzut.com^ -||xjrwxfdphc.com^ -||xjsx.lol^ -||xjupijxdt.xyz^ -||xjwcnvnqdm.com^ -||xkaovzjasjw.com^ -||xkbgqducppuan.xyz^ -||xkbydybnle.com^ -||xkdgblptpicgiu.xyz^ -||xkdxygywfm.com^ -||xkejsns.com^ -||xkesalwueyz.com^ -||xkfogxtamlnn.com^ -||xkfvvyjurlil.com^ -||xkjnvehk.com^ -||xknpkgomp.com^ -||xkowcsl.com^ -||xkpbcd.com^ -||xkqggicpn.com^ -||xksdqikwbwat.com^ -||xksqb.com^ -||xktxemf.com^ -||xkueeqyzz.com^ -||xkwwnle.com^ -||xkyphardw.com^ -||xlarixmmdvr.xyz^ -||xlcceiswfsntpp.xyz^ -||xlckxtyqntt.xyz^ -||xlfrhhp.com^ -||xlgatxqovuvz.com^ -||xlifcbyihnhvmcy.xyz^ -||xliirdr.com^ -||xlirdr.com^ -||xlivesex.com^ -||xlivrdr.com^ -||xlmygeuxtv.com^ -||xlrdr.com^ -||xlrm-tech.com^ -||xlviiirdr.com^ -||xlviirdr.com^ -||xlvirdr.com^ -||xlwnzkyj.com^ -||xlyhpurmfnlall.com^ -||xmas-xmas-wow.com^ -||xmaswrite.com^ -||xmediaserve.com^ -||xmegaxvideox.com^ -||xmegaxvideoxxx.com^ -||xmetfyanqcz.com^ -||xmfhcmyznalbfi.com^ -||xmhgwmdjhul.com^ -||xml-api.online^ -||xml-clickurl.com^ -||xmladserver.com^ -||xmlapiclickredirect.com^ -||xmlapiclickredirect10102022.com^ -||xmlgrab.com^ -||xmlking.com^ -||xmllover.com^ -||xmlppcbuzz.com^ -||xmlrtb.com^ -||xmlwiz.com^ -||xmlwizard.com^ -||xmqmuitc.com^ -||xmrgdwixpkzi.com^ -||xms.lol^ -||xmsflzmygw.com^ -||xmverqdrjodohf.com^ -||xnedglnnwrexss.com^ -||xnkjlnyefuohbgn.xyz^ -||xnrowzw.com^ -||xnszbmnxuzfvr.com^ -||xntrmky.com^ -||xnumzelehhhnnc.com^ -||xnvdigrbb.com^ -||xnycbcauuk.com^ -||xnysqiur.com^ -||xo28pclotovi.com^ -||xoalt.com^ -||xobr219pa.com^ -||xoemvfgjhpwea.com^ -||xohnodzbfjjqje.com^ -||xoimmmhfha.com^ -||xojepxhvvan.com^ -||xolen.xyz^ -||xonyxdpnelhzi.com^ -||xotgpql.com^ -||xovdrxkog.xyz^ -||xowvmktath.com^ -||xpaavmvkc.xyz^ -||xpevhinqadlokh.com^ -||xpidgvrjakkdx.com^ -||xpinfyxinma.com^ -||xpjjlgzqs.com^ -||xpkftctvei.com^ -||xpollo.com^ -||xporn.in^ -||xppedxgjxcajuae.xyz^ -||xpsavuyxtfnqphw.com^ -||xpsgglvsqfxsrl.com^ -||xqdfnqfgixjwpdb.xyz^ -||xqfwhxbfxhpjko.com^ -||xqhifbjhixb.com^ -||xqmvzmt.com^ -||xqwcryh.com^ -||xqzwtvjkjj.com^ -||xragnfrjhiqep.xyz^ -||xrjponvwqlwthq.com^ -||xrkxapomphh.com^ -||xrpikxtnmvcm.com^ -||xrujynhcxtbsgp.com^ -||xruolsogwsi.com^ -||xsjc4smhbyjf.com^ -||xskctff.com^ -||xsknvlmjvrdqo.com^ -||xsqfyvsc.com^ -||xsqwhlldud.com^ -||xsrs.com^ -||xstreamsoftwar3x.com^ -||xsvcouvr.xyz^ -||xswhbitplhase.com^ -||xszcdn.com^ -||xszpuvwr7.com^ -||xtarwjgv.com^ -||xtdioaawlam.com^ -||xtijeyyeqwjegz.com^ -||xtnlfgpnml.com^ -||xtrackme.com^ -||xtraserp.com^ -||xtrddxxjyo.com^ -||xtremeserve.xyz^ -||xttaff.com^ -||xtvhkbqmhqu.xyz^ -||xtvrgxbiteit.xyz^ -||xtxlijkjtlln.xyz^ -||xtygfksar.xyz^ -||xtyzlkphfzjir.com^ -||xu5ctufltn.com^ -||xuakak.com^ -||xucashntaghy.com^ -||xuclkzjh.com^ -||xucmzszyyzqe.com^ -||xueserverhost.com^ -||xuffojr.com^ -||xuircnbbidmu.com^ -||xujhdtynpgctncq.com^ -||xukevxdf.com^ -||xukpresesmr.info^ -||xuosvih.com^ -||xuqarnasvru.com^ -||xuudtwhlkrbah.com^ -||xuwkbiovxsjnjy.com^ -||xuzeez.com^ -||xvbvpizetpts.com^ -||xvbwvle.com^ -||xvfyubhqjp.xyz^ -||xvhgtyvpaav.xyz^ -||xvideos00.sbs^ -||xvika.com^ -||xviperonec.com^ -||xvjrveks.com^ -||xvkjohyr.com^ -||xvolakoahxafi.com^ -||xvpqmcgf.com^ -||xvqmcqcdv.com^ -||xvuslink.com^ -||xvvclhrrpgiln.com^ -||xvvsnnciengskyx.xyz^ -||xvwqdrwiyi.com^ -||xwagtyhujov.com^ -||xwcfvvnegv.com^ -||xwcumrmfkdkbv.com^ -||xwdplfo.com^ -||xwlidjauhdxzx.com^ -||xwlketvkzf.com^ -||xwnqmrdi.com^ -||xwqea.com^ -||xwqvytuiko.com^ -||xwtqfbsz.com^ -||xwugjjomnhuuxq.com^ -||xwxqdfmlsgir.com^ -||xxbeyqowtdjgqr.com^ -||xxccdshj.com^ -||xxcpsqquegwmi.com^ -||xxdjxbvafjlw.com^ -||xxe2.com^ -||xxgqsbfwbmtqa.com^ -||xxifineer.com^ -||xxjcedclosxcaox.com^ -||xxlargepop.com^ -||xxltr.com^ -||xxodleylnfhyi.com^ -||xxofygygumf.com^ -||xxopairckrdhcx.com^ -||xxpghuf.com^ -||xxwflybvwbario.com^ -||xxxbannerswap.com^ -||xxxex.com^ -||xxxiijmp.com^ -||xxxijmp.com^ -||xxxivjmp.com^ -||xxxjmp.com^ -||xxxmyself.com^ -||xxxnewvideos.com^ -||xxxoh.com^ -||xxxrevpushclcdu.com^ -||xxxviijmp.com^ -||xxxvijmp.com^ -||xxxvjmp.com^ -||xxxwebtraffic.com^ -||xyardnle.com^ -||xyaueuufd.com^ -||xycstlfoagh.xyz^ -||xydbpbnmo.com^ -||xyhuoi.com^ -||xylenylyetapa.uno^ -||xylomavivat.com^ -||xynkxvrvusoh.com^ -||xyooepktyy.xyz^ -||xyrkotsqhaf.com^ -||xysgfqnara.xyz^ -||xyvjkdec.com^ -||xyz0k4gfs.xyz^ -||xyztracking.net^ -||xzewvqi.com^ -||xzezapozghp.com^ -||xznqolfzwdwini.com^ -||xzouahcxo.com^ -||xzvdfjp.com^ -||xzxomkrfn.com^ -||xzzpagn.com^ -||y1jxiqds7v.com^ -||y41my.com^ -||y8z5nv0slz06vj2k5vh6akv7dj2c8aj62zhj2v7zj8vp0zq7fj2gf4mv6zsb.me^ -||y95qx8y98.com^ -||yackedtahua.top^ -||yacurlik.com^ -||yaefddu.com^ -||yaeigtmhvsibf.com^ -||yafabu.uno^ -||yaffedtwindle.com^ -||yafmqibivbuu.com^ -||yaggergiher.top^ -||yahuu.org^ -||yaiehgpawwu.com^ -||yaighnnuvvj.com^ -||yaiser.com^ -||yajnagrapple.top^ -||yakcphctjbzwnv.com^ -||yakvssigg.xyz^ -||yallarec.com^ -||yamalkacausata.top^ -||yamanaisleepry.com^ -||yangtaotaming.com^ -||yankbecoming.com^ -||yaowsivumw.com^ -||yapclench.com^ -||yapdiscuss.com^ -||yapforestsfairfax.com^ -||yaphjovuoyng.com^ -||yappedperlid.com^ -||yaprifxbrcrx.com^ -||yaprin.com^ -||yapunderstandsounding.com^ -||yardr.net^ -||yarerspeeder.com^ -||yarlbolides.com^ -||yarlnk.com^ -||yarndispost.com^ -||yarnergulix.website^ -||yarnsperwick.top^ -||yarthtumulus.com^ -||yashi.com^ -||yatab.net^ -||yaupersjejunum.top^ -||yausbprxfft.xyz^ -||yavli.com^ -||yawcoynag.com^ -||yawledabobra.com^ -||yawsbvoby.com^ -||yaxgszv.com^ -||yaysalvor.com^ -||yazftdbwgmwj.com^ -||yazuda.xyz^ -||ybaazpg.com^ -||ybcqozfk.com^ -||ybmebpsmpwueo.com^ -||ybriifs.com^ -||ybs2ffs7v.com^ -||ybtkzjm.com^ -||ybuduzpe.com^ -||ybujfcuqya.com^ -||ybutoakqkct.com^ -||ybwcvhcnulrgbvy.com^ -||ybxkfivvpmofh.com^ -||ybyrudhdnrxcbe.com^ -||yccsfbfjglyw.com^ -||ycctxwachqke.com^ -||yceml.net^ -||ycnmwykrbv.com^ -||ycywhmyiixjafa.com^ -||yczrgigyspm.com^ -||ydbbbegf.xyz^ -||ydbmeagwyakdfl.com^ -||ydenknowled.com^ -||ydevelelasticals.info^ -||ydfavbj.com^ -||ydhfbnskdl.com^ -||ydiqejlbkdbxgu.com^ -||ydonkuan.com^ -||ydpzhsgvorknjh.com^ -||ydqkorympskhbc.com^ -||ydqmuofeandhh.com^ -||ydsousagxm.com^ -||ydvdjjtakso.xyz^ -||ydwrkwwqytj.xyz^ -||ydygdsnss.com^ -||ydyuagpbdcavvxy.com^ -||ydyympasqrx.com^ -||ye185hcamw.com^ -||yeabble.com^ -||yealnk.com^ -||yearbookhobblespinal.com^ -||yearca.com^ -||yearlingexert.com^ -||yearnstocking.com^ -||yearnwillowconsumption.com^ -||yedbehindforh.info^ -||yeesihighlyre.info^ -||yefzjingxudwib.com^ -||yeggscuvette.com^ -||yeioreo.net^ -||yellow-resultsbidder.com^ -||yellow-resultsbidder.org^ -||yellowacorn.net^ -||yellowblue.io^ -||yellowish-yesterday.pro^ -||yellsurpass.com^ -||yemvwifoqvv.com^ -||yenderagria.life^ -||yernbiconic.com^ -||yes-messenger.com^ -||yesmessenger.com^ -||yespetor.com^ -||yessoripener.com^ -||yeswplearning.info^ -||yeteso.uno^ -||yeticbtgfpbgpfd.xyz^ -||yetshape.com^ -||yetterslave.com^ -||yevudi.uno^ -||yexyejgdcbax.com^ -||yfbnlrprmjj.com^ -||yfefdlv.com^ -||yfeyotlpohzkpr.com^ -||yfgrxkz.com^ -||yfkflfa.com^ -||yfrrsktkzfp.com^ -||yftpnol.com^ -||yfykzbhaiuzbht.com^ -||ygeqiky.com^ -||ygkwjd.xyz^ -||ygvqughn.com^ -||ygzkedoxwhqlzp.com^ -||yhazrfacxd.com^ -||yhbcii.com^ -||yhhrtgltcfta.com^ -||yhjhjwy.com^ -||yhkeqboz.com^ -||yhmhbnzz.com^ -||yholvajpu.com^ -||yhomrdh.com^ -||yhrjmamaxni.com^ -||yhrvpvbcfbuj.com^ -||yhwysogyho.com^ -||yibivacaji.com^ -||yicixvmgmhpvbcl.xyz^ -||yidbyhersle.xyz^ -||yidxqbmfkbp.com^ -||yiejvik.com^ -||yieldads.com^ -||yieldbuild.com^ -||yieldinginvincible.com^ -||yieldlab.net^ -||yieldlove-ad-serving.net^ -||yieldmanager.net^ -||yieldoptimizer.com^ -||yieldpartners.com^ -||yieldrealistic.com^ -||yieldscale.com^ -||yieldselect.com^ -||yieldtraffic.com^ -||yieldx.com^ -||yifmgpzeih.com^ -||yifsntub.xyz^ -||yigtbvnmbal.com^ -||yijaovuvbndx.xyz^ -||yikbsxtzrnc.com^ -||yilwsirb.com^ -||yim3eyv5.top^ -||yinadeditiontowriti.info^ -||yingforthemoo.info^ -||yinhana.com^ -||yinteukrestina.xyz^ -||yinthesprin.xyz^ -||yiqetu.uno^ -||yiqvgsqx.com^ -||yistkechauk.org^ -||yjdigtr.com^ -||yjnqeeocqrs.com^ -||yjrchhgs.com^ -||yjrlciff.com^ -||yjuxkncvy.com^ -||yjvuthpuwrdmdt.xyz^ -||yjxhxctqq.com^ -||ykakassg.com^ -||ykdwyf.com^ -||ykgkxcount.com^ -||ykmvnhue.com^ -||ykopnlrbb.com^ -||ykpebdshcqefqm.com^ -||ykqalsm.com^ -||ykraeij.com^ -||ykrwopdxkw.com^ -||ykxscghselpj.com^ -||ylcfryssbjkxmu.com^ -||yldbt.com^ -||yldmgrimg.net^ -||ylgewqoohskzmx.com^ -||ylhhrjy.com^ -||ylih6ftygq7.com^ -||yllanorin.com^ -||yllaris.com^ -||yllojksimt.com^ -||ylrtrhuxzjjc.com^ -||ylx-1.com^ -||ylx-2.com^ -||ylx-3.com^ -||ylx-4.com^ -||ylzkfpzqffqon.com^ -||ym-a.cc^ -||ym8p.net^ -||ymansxfmdjhvqly.xyz^ -||ymeqladpycz.com^ -||ymhpcaxfnvl.com^ -||ymuitydkdoy.com^ -||ymwdeaiut.com^ -||ymwehrducswbeu.com^ -||ymzmcquz.com^ -||ynaapihbulbky.com^ -||yncvbqh.com^ -||yndmorvwdfuk.com^ -||yneaimn.com^ -||ynfhnbjsl.xyz^ -||ynfsiosdt.com^ -||ynhmwyt.com^ -||ynisramnmcm.com^ -||ynkjwogined.com^ -||ynklendr.online^ -||ynonymlxtqisyka.xyz^ -||ynqagvbvptbh.xyz^ -||ynrije.com^ -||ynrnfedbmuuemhs.xyz^ -||ynuvqtlcmao.com^ -||ynuyvhkxpqqnr.com^ -||ynwshavwuhl.com^ -||yoads.net^ -||yoc-adserver.com^ -||yockpratty.com^ -||yocksniacins.com^ -||yogacomplyfuel.com^ -||yogadignified.com^ -||yogaprimarilyformation.com^ -||yogar2ti8nf09.com^ -||yohavemix.live^ -||yoibbka.com^ -||yojanaarabic.life^ -||yokeeroud.com^ -||yolkhandledwheels.com^ -||yomeno.xyz^ -||yonabrar.com^ -||yonazurilla.com^ -||yonelectrikeer.com^ -||yonfoongusor.com^ -||yonhelioliskor.com^ -||yoniskurt.digital^ -||yonsandileer.com^ -||yoomanies.com^ -||yooncsdaxrxosu.com^ -||yopard.com^ -||yophaeadizesave.com^ -||yoplnog.com^ -||yoptaejrj2kkf8nj09.com^ -||yoqklgtgpdyqh.com^ -||yoredi.com^ -||yoshatia.com^ -||yosiboosi.com^ -||yosity.com^ -||yottacash.com^ -||youdguide.com^ -||yougotacheck.com^ -||youlamedia.com^ -||youlouk.com^ -||youngestclaims.com^ -||youngestdisturbance.com^ -||youngesthumorshaving.com^ -||youngestmildness.com^ -||youngstersaucertuition.com^ -||your-great-chance.com^ -||your-instant-chance.com^ -||your-local-dream.com^ -||your-notice.com^ -||youractualblog.com^ -||youractualwords.com^ -||youradexchange.com^ -||yourbestappever.top^ -||yourbestdateever.com^ -||yourbestlandever.com^ -||yourbestperfectdates.life^ -||yourcommonfeed.com^ -||yourcoolfeed.com^ -||yourfreshjournal.com^ -||yourfreshposts.com^ -||yourhotfeed.com^ -||yourjsdelivery.com^ -||yourkadspunew.com^ -||yourniceposts.com^ -||yourprivacy.icu^ -||yourquickads.com^ -||yourselpeaky.top^ -||yourtopnews.com^ -||yourtubetvs.site^ -||youruntie.com^ -||yourwebbars.com^ -||yourwownews.com^ -||yourwownewz.com^ -||yousefforts.com^ -||youservit.com^ -||youthfulcontest.pro^ -||youtube.local^ -||youtubecenter.net^ -||yowlvernon.com^ -||yowpalt.top^ -||yoxepo.uno^ -||yoyadsdom.com^ -||ypdfpvwxwxkkga.com^ -||ypgpjvfv.xyz^ -||yphdrphx.xyz^ -||ypkljvp.com^ -||ypmohjxp.com^ -||yptjqrlbawn.xyz^ -||yqblutkjhx.com^ -||yqeuu.com^ -||yqgmvxufpkr.com^ -||yqiavtoy.com^ -||yqiyazkddb.com^ -||yqmxfz.com^ -||yqpalfulpst.com^ -||yqragd.com^ -||yqxhslsqaqkbd.com^ -||yqxrjthpbolqq.com^ -||yr9n47004g.com^ -||yrcedupgqe.com^ -||yrcpsfqoyi.com^ -||yrhdmalrfr.com^ -||yrincelewasgiw.info^ -||yrinpvfw.com^ -||yrlkeazcacxwaj.com^ -||yrqxygxnpg.com^ -||yrvzqabfxe.com^ -||yscfsmxrtcifye.com^ -||yscntxil.com^ -||ysemblyjusting.info^ -||ysesials.net^ -||yshhfig.com^ -||ysnxszyrxdzp.com^ -||yspecjbjmcub.com^ -||ysxuehcerecoge.com^ -||yszhtlsfvvf.com^ -||ytbzqtrog.com^ -||yterxv.com^ -||ytfotjfrttgyal.com^ -||ytgngedq.xyz^ -||ytgzz.com^ -||ythjhk.com^ -||ytihp.com^ -||ytimewornan.org^ -||ytimm.com^ -||ytlhsmwu.com^ -||ytndjaefvan.xyz^ -||ytnkdhmtdubhk.com^ -||ytoworkwi.org^ -||ytqnzvqfsr.com^ -||ytsa.net^ -||yttompthree.com^ -||ytuooivmv.xyz^ -||ytvigqwx.com^ -||ytxmseqnehwstg.xyz^ -||ytzihf.com^ -||yu0123456.com^ -||yuckelwilkin.top^ -||yudawbxk.com^ -||yuduoljvxsilvq.com^ -||yufbewrjjguc.com^ -||yuhliqltbtv.com^ -||yuhqeim.com^ -||yuhuads.com^ -||yukkedrodmen.top^ -||yukonearshot.com^ -||yukpxxp.com^ -||yukreserve.top^ -||yulunanews.name^ -||yumenetworks.com^ -||yumkelis.com^ -||yummiescinders.top^ -||yummiesfootle.space^ -||yumomis.com^ -||yunenly.com^ -||yunmaue.com^ -||yunshipei.com^ -||yupfiles.net^ -||yuppads.com^ -||yuppyads.com^ -||yuprggtdvdalo.com^ -||yuqyihkyk.com^ -||yuriembark.com^ -||yurokrelax.com^ -||yvkbftdi.com^ -||yvlvbcumfhsdeu.com^ -||yvmads.com^ -||yvoria.com^ -||yvseutagqrjd.com^ -||yvzgazds6d.com^ -||ywgpkjg.com^ -||ywhowascryin.com^ -||ywopyohpihnkppc.xyz^ -||ywronwasthetron.com^ -||ywrvpmapjcg.xyz^ -||ywsxqrcfrtsnfa.com^ -||ywvhxymyk.com^ -||ywvjyxp.com^ -||ywyeetvrjx.xyz^ -||yx-ads6.com^ -||yxajqsrsij.com^ -||yxeqahmgyxqdid.com^ -||yxgacdl.com^ -||yxguqmcemyjiwb.com^ -||yxjnzydc.com^ -||yxkfaskdaybakf.com^ -||yxmaeeqvl.com^ -||yy9s51b2u05z.com^ -||yycdihdvx.xyz^ -||yydqrwvy.com^ -||yydtbpms8tf4.com^ -||yydwkkxhjb.com^ -||yyiodwdjfw.com^ -||yyjngvuaqrdgghs.com^ -||yyjvimo.com^ -||yykkhmcfvpk.com^ -||yynwgrdr.com^ -||yypcalcnqk.com^ -||yyselrqpyu.com^ -||yzerabwdkpaee.com^ -||yzfjlvqa.com^ -||yzlfobyscos.com^ -||yzyvfrfran.com^ -||z0il3m3u2o.pro^ -||z1sz88obrtb5.shop^ -||z54a.xyz^ -||z5x.net^ -||z7yru.com^ -||zabanit.xyz^ -||zacatevouchee.top^ -||zachunsears.com^ -||zacleporis.com^ -||zadauque.net^ -||zaemi.xyz^ -||zaffarnimbed.com^ -||zagtertda.com^ -||zagvee.com^ -||zaheki.uno^ -||zaicasoawoul.com^ -||zaigaphy.net^ -||zaihxti.com^ -||zaikasoatie.xyz^ -||zailoanoy.com^ -||zaimads.com^ -||zaistaug.net^ -||zajukrib.net^ -||zaltaumi.net^ -||zambianmarlena.com^ -||zamioculcas2.org^ -||zanellapolyp.com^ -||zangocash.com^ -||zanoogha.com^ -||zantpvrsmninvx.com^ -||zaparena.com^ -||zaphakesleigh.com^ -||zapprecisionadmire.com^ -||zapunited.com^ -||zaqxwnwwtx.com^ -||zarame.uno^ -||zaribastunty.com^ -||zarpop.com^ -||zationservantas.info^ -||zationsuchasr.com^ -||zatloudredr.com^ -||zatnoh.com^ -||zaucharo.xyz^ -||zaudograum.xyz^ -||zaudouwa.xyz^ -||zaudowhiy.xyz^ -||zauglomo.net^ -||zauglust.net^ -||zaumaico.com^ -||zaurakfaulted.com^ -||zauthuvy.com^ -||zautouchiste.com^ -||zaxonoax.com^ -||zayac2volk11.com^ -||zazerygu.pro^ -||zbdcrnfheyfu.com^ -||zbfemgimtyejpm.com^ -||zbfxzpawfeoo.com^ -||zbmdbhhtgry.com^ -||zbnfhsk.com^ -||zbvhwaakws.com^ -||zcaadfl.com^ -||zcehasaldo.com^ -||zcekqwlqktzrfq.com^ -||zchdbiper.com^ -||zchtpzu.com^ -||zcode12.me^ -||zcode7.me^ -||zcoptry.com^ -||zcsbgzasy.com^ -||zcsnjbjlwn.com^ -||zcswet.com^ -||zcvtqdyvnhnjp.com^ -||zdajdudqfq.com^ -||zdhq.xyz^ -||zdljbrwosbymft.com^ -||zdqgsoqsmppd.com^ -||zdxcuchr.com^ -||zeads.com^ -||zealfulhaired.life^ -||zealouscompassionatecranny.com^ -||zealousstraitcommit.com^ -||zealsalts.com^ -||zealshyalite.com^ -||zebeaa.click^ -||zebjlmmejbybz.top^ -||zebjlmmejbzlb.top^ -||zebrinanoteman.top^ -||zedoaryrejects.com^ -||zedxknzlwyofh.com^ -||zeebaith.xyz^ -||zeebestmarketing.com^ -||zeeca4u.com^ -||zeechoog.net^ -||zeechumy.com^ -||zeekaihu.net^ -||zeepartners.com^ -||zeephouh.com^ -||zeepteestaub.com^ -||zeeshech.net^ -||zeeshith.net^ -||zeewhaih.com^ -||zefusgk.com^ -||zegrumse.net^ -||zekeeksaita.com^ -||zekkdxt.com^ -||zel-zel-fie.com^ -||zelatorpukka.com^ -||zelllwrite.com^ -||zelqytckpgzwag.com^ -||zelrasty.net^ -||zelsaips.com^ -||zemstvahorn.top^ -||zemteksu.xyz^ -||zemydreamsa.info^ -||zemydreamsauk.com^ -||zemywwm.com^ -||zenam.xyz^ -||zenaot.xyz^ -||zendiclayaway.website^ -||zendonetwise.com^ -||zendplace.pro^ -||zengoongoanu.com^ -||zenkreka.com^ -||zenoviaexchange.com^ -||zenoviagroup.com^ -||zenujoub.com^ -||zepazupi.com^ -||zephyronearc.com^ -||zeptootsouz.com^ -||zer1ads.com^ -||zerads.com^ -||zercenius.com^ -||zerg.pro^ -||zerodecisive.com^ -||zeroingchaus.top^ -||zerzvqroeveae.top^ -||zetaagnates.com^ -||zetadeo.com^ -||zetamm.com^ -||zetchopa.xyz^ -||zetutsooz.net^ -||zeusadx.com^ -||zevwkbzwkbawz.top^ -||zevwkbzwkbqzw.top^ -||zewkj.com^ -||zewoagoo.com^ -||zeyappland.com^ -||zeydoo.com^ -||zeypreland.com^ -||zfeaubp.com^ -||zferral.com^ -||zfgyvoarqreba.com^ -||zfhuzyw.com^ -||zfmxscs.com^ -||zfobfybira.com^ -||zfwlnfalxxmwzb.com^ -||zfwnbsdawitk.com^ -||zfxtodsxtmw.com^ -||zgazgluy.com^ -||zgcnxihiklai.com^ -||zgeitmvt.com^ -||zglceszp.com^ -||zgslicbleg.com^ -||zgsqnyb.com^ -||zgtkxwqgebintr.com^ -||zgwrkfowi.com^ -||zgxxvdlxc.com^ -||zhaner.xyz^ -||zhedvge.com^ -||zhej78i1an8w6ceu.com^ -||zhfvwkkftg.com^ -||zhhxxnfuxn.com^ -||zhmzsjvkii.com^ -||zhould.com^ -||zhqmctfwip.com^ -||zhuwjujpub.com^ -||zhyivocrjeplby.com^ -||zhzclbysg.com^ -||zi8ivy4b0c7l.com^ -||zibaweva.com^ -||ziblo.cloud^ -||zidgrrfgb.com^ -||zidoudsa.net^ -||zigighol.xyz^ -||zigukaiss.com^ -||zigzaggodmotheragain.com^ -||zigzagrowy.com^ -||zihafmktyn.com^ -||zihditozlogf.com^ -||zihogchfaan.com^ -||zijaipse.com^ -||zikpwr.com^ -||zikraist.net^ -||zikroarg.com^ -||zilchesmoated.com^ -||zillaleegte.com^ -||zim-zim-zam.com^ -||zimg.jp^ -||zimpolo.com^ -||zincdatawipe.com^ -||zincypalmy.top^ -||zinipx.xyz^ -||zinovu.com^ -||zipakrar.com^ -||zipheeda.xyz^ -||ziphoumt.net^ -||zipinaccurateoffering.com^ -||zipradarindifferent.com^ -||zirdough.net^ -||zirdrax.com^ -||zirkiterocklay.com^ -||zisboombah.net^ -||zitaptugo.com^ -||zitchaug.xyz^ -||zitchuhoove.com^ -||zitscassias.top^ -||zivtux.com^ -||ziwane.uno^ -||ziziasonable.top^ -||ziziatramel.uno^ -||zizoxozoox.com^ -||zizulw.org^ -||zjbzzmnnkbjzy.top^ -||zjhebfwr.com^ -||zjlbugpawe.com^ -||zjo0tjqpm1.com^ -||zjpwrpo.com^ -||zjupukgjuez.com^ -||zjyeblzkajwba.top^ -||zkahobbcfkyz.com^ -||zkcvb.com^ -||zkczzltlhp6y.com^ -||zkqegdgj.com^ -||zktsygv.com^ -||zkulupt.com^ -||zkxggrwzswhpgn.com^ -||zlacraft.com^ -||zlbvewof.com^ -||zlebdfhnampju.com^ -||zlink2.com^ -||zlink6.com^ -||zlinkc.com^ -||zlinkd.com^ -||zlinkm.com^ -||zljwhbuagdvl.com^ -||zlknhbwwlu.com^ -||zlkpfhyrjd.com^ -||zlx.com.br^ -||zm232.com^ -||zmdesf.cn^ -||zmhbgjifpz.com^ -||zmhwaiapbtfq.com^ -||zmikrctxf.com^ -||zmjagawa.com^ -||zmonei.com^ -||zmwbrza.com^ -||znaptag.com^ -||zncbitr.com^ -||zncsdysorwms.com^ -||znpynwhcqvkudk.com^ -||znqip.net^ -||znvlfef.com^ -||zoachoar.net^ -||zoachops.com^ -||zoadoash.net^ -||zoagfst.com^ -||zoagouwie.com^ -||zoagreejouph.com^ -||zoagremo.net^ -||zoaheeth.com^ -||zoaptaup.com^ -||zoawhoal.com^ -||zoawufoy.net^ -||zodiacranbehalf.com^ -||zoeaegyral.com^ -||zoeaethenar.com^ -||zofitsou.com^ -||zog.link^ -||zogoluggers.com^ -||zogrepsili.com^ -||zoilistfrowzly.com^ -||zoiqrudc.com^ -||zoizfaodz.com^ -||zokaukree.net^ -||zokbywpncgqrq.com^ -||zonealta.com^ -||zontgohjw.com^ -||zonupiza.com^ -||zonureflakier.uno^ -||zoocheeh.net^ -||zoogripi.com^ -||zoojepsainy.com^ -||zoologicalviolatechoke.com^ -||zoologyhuntingblanket.com^ -||zoopsame.com^ -||zoovagoo.com^ -||zoozishooh.com^ -||zorango.com^ -||zouard.com^ -||zouemtjzuae.com^ -||zougreek.com^ -||zoukooso.com^ -||zouloafi.net^ -||zoutubephaid.com^ -||zoutufoostou.com^ -||zouzougri.net^ -||zovidree.com^ -||zoxkljeicxi.com^ -||zoykzjaqaajrj.top^ -||zozolilla.com^ -||zpbpenn.com^ -||zpcfnzjq.com^ -||zpdnisvzedgbw.com^ -||zpgetworker11.com^ -||zphgadwnjro.com^ -||zpreland.com^ -||zprelandappslab.com^ -||zprelanding.com^ -||zprelandings.com^ -||zpvsuniqkhj.com^ -||zqdprrzjpcf.com^ -||zqfbsrldaeawna.com^ -||zqfcndk.com^ -||zqksqsjupnb.com^ -||zqmblmebyeloq.top^ -||zqmmtbwqymhrru.com^ -||zqpztal.com^ -||zquent.com^ -||zqwe.ru^ -||zrijfnmfiiaik.com^ -||zrszxrummjaci.com^ -||zrtfsoz.com^ -||zrvnhlwypqpwjw.com^ -||zrwpporp.com^ -||zsanjnpl.com^ -||zscwdu.com^ -||zsfbumz.com^ -||zsfjpbnxyyx.com^ -||zsgpdafjd.com^ -||zshyudl.com^ -||zskuvehuihkusp.com^ -||zsrqmgvb.com^ -||zsxeymv.com^ -||ztbtbbizb.com^ -||ztcbmnkqxqx.com^ -||zteollhhyaqez.com^ -||ztfzizpkjrmhbc.com^ -||ztnibpbkl.com^ -||ztrack.online^ -||zttgwpb.com^ -||ztumuvofzbfe.com^ -||ztunhuhteas.com^ -||ztxhxby.com^ -||ztyqrwinqpvque.com^ -||zubajuroo.com^ -||zubivu.com^ -||zubojcnubadk.com^ -||zucks.net^ -||zucqcozmv.com^ -||zudjdiy.com^ -||zufoloodylize.com^ -||zufqmmwavdec.com^ -||zufubulsee.com^ -||zugeme.uno^ -||zughoocm.com^ -||zugnogne.com^ -||zugo.com^ -||zuhempih.com^ -||zukary.com^ -||zukore.com^ -||zukxd6fkxqn.com^ -||zulindeerosion.top^ -||zuluizeskater.com^ -||zumfzaamdxaw.com^ -||zumid.xyz^ -||zumorhshij.com^ -||zumrieth.com^ -||zunicai.com^ -||zunnynd.com^ -||zunsavurdo.com^ -||zunsoach.com^ -||zuoltlhh.com^ -||zupee.cim^ -||zuphaims.com^ -||zupoqzadxlt.com^ -||zuqito.uno^ -||zussrbh.com^ -||zutcqppwm.com^ -||zuzodoad.com^ -||zvbldrth.com^ -||zvbqvqbabllrj.top^ -||zvbqvqbabllzq.top^ -||zvert.xyz^ -||zvetokr2hr8pcng09.com^ -||zvhednrza.com^ -||zvhprab.com^ -||zvjkhrdp.com^ -||zvkytbjimbhk.com^ -||zvrvwpcqweiwhm.com^ -||zvvajeokyboae.top^ -||zvwhrc.com^ -||zvzmzrarkvzzw.top^ -||zwaar.net^ -||zwbjpkurb.com^ -||zwnhufcwhaw.com^ -||zwnoeqzsuz.com^ -||zwovvjlbawao.top^ -||zwqzxh.com^ -||zwsxsqp.com^ -||zwtssi.com^ -||zwuqvpi.com^ -||zwwlaasbezg.com^ -||zwyhucpmoov.com^ -||zxcdn.com^ -||zxcxrpvmuh.com^ -||zxdcxwpxheu.com^ -||zxkuuuyrdzhu.com^ -||zxmojgj.com^ -||zxpqwwt.com^ -||zxr9gpxf7j.com^ -||zxrfzxb.com^ -||zxwhkosabux.com^ -||zxxgoikbqyiu.com^ -||zy16eoat1w.com^ -||zyaaobgwnhts.com^ -||zybbiez.com^ -||zybrdr.com^ -||zycaphede.com^ -||zyf03k.xyz^ -||zyiis.net^ -||zyijzosrnzfru.com^ -||zylytavo.com^ -||zymessuppl.top^ -||zymjzwyyjklb.top^ -||zypenetwork.com^ -||zypwvyruq.com^ -||zypy2h6rgfux.com^ -||zyqweovbaaz.com^ -||zyuzdmxel.com^ -||zzaqqwecd.lat^ -||zzhyebbt.com^ -||zzkwsosixkdu.com^ -||zzqolojyqkamj.top^ -||zztsxepxumxoyw.com^ -||zzzjvqzkmqjlo.top^ -||zzzjvqzkmqjyb.top^ -! Anti-drainer eth phishing -||729drainer.com^ -||89563servers.top^ -||961dzmubbg.su^ -||99bithcoins.com^ -||acala-bridge.com^ -||ads-management.su^ -||airdrop-alarm.net^ -||airdrop-manager.ru^ -||airdrop-manager.su^ -||altenlayer.com^ -||antenta.site^ -||api.hi-hi.vip^ -||apisjwer.com^ -||apiszapp.com^ -||appdevweb.com^ -||araceastr.top^ -||asdfasdasd9987.co^ -||bnb-announce.online^ -||brdecolar.com^ -||bukwnlpk4k.ru^ -||car-cra.sh^ -||cdnjs-bnn.com^ -||cdnjs-gst.com^ -||cdnjs-mht.com^ -||cdnweb3.pages.dev^ -||celestia.guru^ -||chaingptweb3.org^ -||chainlist.sh^ -||chainupdate.us^ -||checkercheck.su^ -||checkersecuritycheckernft-ethereum2.su^ -||checknft.su^ -||chopflexhit.online^ -||ciphercapital.tech^ -||cliplamppostillegally.com^ -||compound-swap.com^ -||cpsbgpeenci.com^ -||creatrin.site^ -||cthulhu.cash^ -||data-drop.su^ -||dd5889a9b4e234dbb210787.com^ -||ddfskjdfh.site^ -||deappzap.com^ -||discord-verification.com^ -||diseusy.top^ -||doubleadsclick.com^ -||downzoner.xyz^ -||drop-manage3-web3.su^ -||drop-manager.su^ -||drop-manager5.su^ -||drop9-ether.su^ -||dropnft.su^ -||duuuyqiwqc.xyz^ -||eastyewebaried.info^ -||ether2-ethereum.su^ -||ether3securityethereum-checker.su^ -||ethersjs.com^ -||findrpc.sh^ -||glomtipagrou.xyz^ -||gousy11.top^ -||icwurxd9zaa47e.su^ -||ii3qy2.su^ -||ipjsonapi.com^ -||iq7grexsvo.ru^ -||iq7grexsvo.su^ -||jfzn9fnvjr.ru^ -||js-api.net^ -||jscdnweb.pages.dev^ -||kapitalberg.com^ -||kbumnvc.com^ -||kxsvelr.com^ -||locatchi.xyz^ -||metamask.blog^ -||metasteal.xyz^ -||modulejsreques.com^ -||mokotoparch.top^ -||moralis-node.dev^ -||nesolam.com^ -||next-done.website^ -||nft-cryptosecurity.ru^ -||nft-cryptosecurity.su^ -||nftfastapi.com^ -||nfts-opensea.web.app^ -||nfts3etherweb3nft.su^ -||nginxxx.xyz^ -||nighthereflewovert.info^ -||nodeclaim.com^ -||nonusy.top^ -||obosnovano.su^ -||oeubqjx.com^ -||ojoglir.com^ -||openweatherapi.com^ -||papeilist.pics^ -||pipiska221net.shop^ -||psaukroatch.com^ -||q49q7g0n7gra.su^ -||r202cop.xyz^ -||satanishka.fun^ -||shegheet.com^ -||snapshot.sh^ -||stapplebecaps.top^ -||sugaringsofia2.com^ -||tayvano.dev^ -||titanex.pro^ -||to7cc27p.su^ -||tokenbroker.sh^ -||umpirectx.top^ -||uniswaps.website^ -||varnqeoan.com^ -||verifyconnection.org^ -||vkwzbjifb.com^ -||w14s58toxo.su^ -||wallet-connect.ru^ -||web3-analytic.ru^ -||web3-analytic.su^ -||web3-api-v10.ru^ -||web3-api-v10.su^ -||web3-api-v2.cc^ -||web3-api.click^ -||web3-api.in^ -||web3-api.ru^ -||web3-api.su^ -||whaleman.ru^ -||world-claim.org^ -||ygeosqsomusu.xyz^ -||yimkju.com^ -||zhu-ni-hao-yun.sh^ -||zxcbaby.ru^ -! $document blocks -||1winpost.com^$document -||20trackdomain.com^$document -||2ltm627ho.com^$document -||367p.com^$document -||5wzgtq8dpk.com^$document -||65spy7rgcu.com^$document -||67trackdomain.com^$document -||ablecolony.com^$document -||accecmtrk.com^$document -||acoudsoarom.com^$document -||ad-adblock.com^$document -||ad-addon.com^$document -||adblock-360.com^$document -||adblocker-instant.xyz^$document -||adclickbyte.com^$document -||adfgetlink.net^$document -||aditms.me^$document -||adlogists.com^$document -||admachina.com^$document -||admedit.net^$document -||admobe.com^$document -||adoni-nea.com^$document -||adorx.store^$document -||adpointrtb.com^$document -||adqit.com^$document -||ads4trk.com^$document -||adscdn.net^$document -||adservice.google.$document -||adskeeper.co.uk^$document -||adspredictiv.com^$document -||adstreampro.com^$document -||adtelligent.com^$document -||adtraction.com^$document -||adtrk21.com^$document -||adverttulimited.biz^$document -||adxproofcheck.com^$document -||aferpush.com^$document -||affflow.com^$document -||affiliatestonybet.com^$document -||affpa.top^$document -||affstreck.com^$document -||afodreet.net^$document -||afre.guru^$document -||aistekso.net^$document -||alfa-track.info^$document -||alfa-track2.site^$document -||algg.site^$document -||allsportsflix.$document -||alpine-vpn.com^$document -||anacampaign.com^$document -||aneorwd.com^$document -||antaresarcturus.com^$document -||antcixn.com^$document -||antjgr.com^$document -||applifysolutions.net^$document -||appspeed.monster^$document -||ardsklangr.com^$document -||artditement.info^$document -||arwobaton.com^$document -||asqualmag.com^$document -||asstaraptora.com^$document -||aucoudsa.net^$document -||awecrptjmp.com^$document -||awesomeprizedrive.co^$document -||ayga.xyz^$document -||baldo-toj.com^$document -||baseauthenticity.co.in^$document -||basicflownetowork.co.in^$document -||bayshorline.com^$document -||behim.click^$document -||bellatrixmeissa.com^$document -||beltarklate.live^$document -||benselgut.top^$document -||bestchainconnection.com^$document -||bestprizerhere.life^$document -||bestunfollow.com^$document -||bet365.com/*?affiliate=$document -||bhlom.com^$document -||bincatracs.com^$document -||binomtrcks.site^$document -||blehcourt.com^$document -||blockadsnot.com^$document -||boardmotion.xyz^$document -||bobgames-prolister.com^$document -||boledrouth.top^$document -||boxiti.net^$document -||brenn-wck.com^$document -||brutebaalite.top^$document -||bumlabhurt.live^$document -||bunth.net^$document -||bxsk.site^$document -||canopusacrux.com^$document -||caulisnombles.top^$document -||cddtsecure.com^$document -||chainconnectivity.com^$document -||chambermaidthree.xyz^$document -||chattedhelio.top^$document -||chaunsoops.net^$document -||check-tl-ver-12-3.com^$document -||check-tl-ver-54-1.com^$document -||check-tl-ver-54-3.com^$document -||checkcdn.net^$document -||checkluvesite.site^$document -||chetchoa.com^$document -||childishenough.com^$document -||choudairtu.net^$document -||chylifycrisis.top^$document -||cleanmypc.click^$document -||clixwells.com^$document -||closeupclear.top^$document -||cloudvideosa.com^$document -||cn-rtb.com^$document -||cntrealize.com^$document -||continue-installing.com^$document -||coolserving.com^$document -||coosync.com^$document -||coticoffee.com^$document -||countertrck.com^$document -||ctosrd.com^$document -||cybkit.com^$document -||datatechdrift.com^$document -||dc-feed.com^$document -||ddkf.xyz^$document -||dealgodsafe.live^$document -||debaucky.com^$document -||degg.site^$document -||degradationtransaction.com^$document -||dfuaqw.com^$document -||di7stero.com^$document -||dianomi.com^$document -||dipusdream.com^$document -||directdexchange.com^$document -||disable-adverts.com^$document -||displayadspro.click^$document -||displayvertising.com^$document -||domainparkingmanager.it^$document -||donkstar1.online^$document -||donkstar2.online^$document -||doostozoa.net^$document -||download-adblock360.com^$document -||downloading-addon.com^$document -||downloading-extension.com^$document -||downlon.com^$document -||dreamteamaffiliates.com^$document -||drsmediaexchange.com^$document -||dsp5stero.com^$document -||earlinessone.xyz^$document -||eetognauy.net^$document -||eh0ag0-rtbix.top^$document -||emotot.xyz^$document -||emperilchilies.top^$document -||errolandtessa.com^$document -||eventfulknights.com^$document -||excellingvista.com^$document -||exclkplat.com^$document -||expdirclk.com^$document -||expleteneeps.top^$document -||exploitpeering.com^$document -||extension-ad.com^$document -||extension-install.com^$document -||externalfavlink.com^$document -||farciedfungals.top^$document -||fastdntrk.com^$document -||felingual.com^$document -||femsoahe.com^$document -||flyingadvert.com^$document -||foerpo.com^$document -||forooqso.tv^$document -||freetrckr.com^$document -||freshpops.net^$document -||fstsrv9.com^$document -||fuse-cloud.com^$document -||galaxypush.com^$document -||gamdom.com/?utm_source=$document -||gb1aff.com^$document -||get-gx.net^$document -||getmetheplayers.click^$document -||getnomadtblog.com^$document -||getsthis.com^$document -||gkrtmc.com^$document -||glaultoa.com^$document -||glsfreeads.com^$document -||go-cpa.click^$document -||go-srv.com^$document -||go2affise.com^$document -||go2offer-1.com^$document -||goads.pro^$document -||grfpr.com^$document -||gtbdhr.com^$document -||guardedrook.cc^$document -||heavently7s1.com^$document -||heptix.net^$document -||herma-tor.com^$document -||hetapus.com^$document -||heweop.com^$document -||hfr67jhqrw8.com^$document -||highcpmgate.com^$document -||hilarioustasting.com^$document -||hnrgmc.com^$document -||hoglinsu.com^$document -||holdhostel.space^$document -||hospitalsky.online^$document -||hubrisone.com^$document -||icubeswire.co^$document -||ifsnickshriek.click^$document -||iginnis.site^$document -||ignals.com^$document -||improvebin.xyz^$document -||inbrowserplay.com^$document -||ingablorkmetion.com^$document -||install-adblockers.com^$document -||install-adblocking.com^$document -||install-extension.com^$document -||instant-adblock.xyz^$document -||internodeid.com^$document -||intothespirits.com^$document -||jaclottens.live^$document -||jeroud.com^$document -||jggegj-rtbix.top^$document -||jlodgings.com^$document -||js-check.com^$document -||junmediadirect1.com^$document -||kagodiwij.site^$document -||kiss88.top^$document -||koafaimoor.net^$document -||ku42hjr2e.com^$document -||lamplynx.com^$document -||leoyard.com^$document -||link2thesafeplayer.click^$document -||linksprf.com^$document -||litdeetar.live^$document -||lmdfmd.com^$document -||loadtime.org^$document -||loazuptaice.net^$document -||locooler-ageneral.com^$document -||lookup-domain.com^$document -||lxkzcss.xyz^$document -||lylufhuxqwi.com^$document -||madehimalowbo.info^$document -||magazinenews1.xyz^$document -||maquiags.com^$document -||maxconvtrk.com^$document -||mazefoam.com^$document -||mbjrkm2.com^$document -||mbreviewer.com^$document -||mbreviews.info^$document -||mbvlmz.com^$document -||mcfstats.com^$document -||mcpuwpush.com^$document -||mddsp.info^$document -||me4track.com^$document -||meetwebclub.com^$document -||messenger-notify.xyz^$document -||mgid.com^$document -||mimosaavior.top^$document -||mirfakpersei.top^$document -||mnaspm.com^$document -||mndlvr.com^$document -||moadworld.com^$document -||mobiletracking.ru^$document -||moralitylameinviting.com^$document -||mouthdistance.bond^$document -||myjack-potscore.life^$document -||mylot.com^$document -||mytiris.com^$document -||nan0cns.com^$document -||naubatodo.com^$document -||nauwheer.net^$document -||news-jivera.com^$document -||nexaapptwp.top^$document -||nindsstudio.com^$document -||niwluvepisj.site^$document -||noncepter.com^$document -||noolt.com^$document -||noopking.com^$document -||notoriouscount.com^$document -||novibet.partners^$document -||nowforfile.com^$document -||nuftitoat.net^$document -||numbertrck.com^$document -||nutchaungong.com^$document -||nxtpsh.com^$document -||nylonnickel.xyz^$document -||offergate-software6.com^$document -||offernow24.com^$document -||offwardtendry.top^$document -||omgt3.com^$document -||omguk.com^$document -||onclickperformance.com^$document -||oneadvupfordesign.com^$document -||oneegrou.net^$document -||onmantineer.com^$document -||ophoacit.com^$document -||optimalscreen1.online^$document -||optnx.com^$document -||ornismolal.top^$document -||ossfloetteor.com^$document -||otbackstage2.online^$document -||ovardu.com^$document -||paehceman.com^$document -||paid.outbrain.com^$document -||pamwrymm.live^$document -||panelerkingly.top^$document -||pargodysuria.top^$document -||paulastroid.com^$document -||pemsrv.com^$document -||perfectflowing.com^$document -||pertlouv.com^$document -||pheniter.com^$document -||phrygiakodak.top^$document -||phumpauk.com^$document -||pisism.com^$document -||plane-pusherbidder.org^$document -||playmmogames.com^$document -||pleadsbox.com^$document -||plinksplanet.com^$document -||plorexdry.com^$document -||plumpcontrol.pro^$document -||poozifahek.com^$document -||popcash.net^$document -||poperblocker.com^$document -||popmyads.com^$document -||popupblockernow.com^$document -||popupsblocker.org^$document -||powerpushtrafic.space^$document -||ppqy.fun^$document -||preparedfile.com^$document -||pretrackings.com^$document -||prfwhite.com^$document -||priestsuede.click^$document -||proffering.xyz^$document -||profitablegatecpm.com^$document -||propellerclick.com^$document -||proscholarshub.com^$document -||proteinairn.top^$document -||prwave.info^$document -||pshtop.com^$document -||psockapa.net^$document -||pubtrky.com^$document -||pupspu.com^$document -||push-news.click^$document -||pushaffiliate.net^$document -||pushking.net^$document -||qjrhacxxk.xyz^$document -||racunn.com^$document -||raekq.online^$document -||rainmealslow.live^$document -||rbtfit.com^$document -||rdrm2.click^$document -||re-experiment.sbs^$document -||realtime-bid.com^$document -||realxavounow.com^$document -||redaffil.com^$document -||redirectflowsite.com^$document -||redirectingat.com^$document -||rexsrv.com^$document -||riflesurfing.xyz^$document -||riftharp.com^$document -||rigelbetelgeuse.top^$document -||rndskittytor.com^$document -||roastoup.com^$document -||rockingfolders.com^$document -||rollads.live^$document -||roobetaffiliates.com^$document -||roundflow.net^$document -||roundpush.com^$document -||routes.name^$document -||rovno.xyz^$document -||rtbadshubmy.com^$document -||rtbadsmya.com^$document -||rtbbpowaq.com^$document -||rtbix.xyz^$document -||runicforgecrafter.com^$document -||s0q260-rtbix.top^$document -||s3g6.com^$document -||sahiwaldisform.top^$document -||savinist.com^$document -||score-feed.com^$document -||sessfetchio.com^$document -||sgad.site^$document -||shauladubhe.top^$document -||shoppinglifestyle.biz^$document -||shulugoo.net^$document -||singelstodate.com^$document -||sitamedal2.online^$document -||sitamedal4.online^$document -||skated.co^$document -||sloto.live^$document -||smallestgirlfriend.com^$document -||smartlphost.com^$document -||snadsfit.com^$document -||solemik.com^$document -||sourcecodeif.com^$document -||sprinlof.com^$document -||srvpcn.com^$document -||stake.com/*&clickId=$document -||streameventzone.com^$document -||stt6.cfd^$document -||stvwell.online^$document -||suptraf.com^$document -||sxlflt.com^$document -||tacopush.ru^$document -||takemybackup.co^$document -||tbao684tryo.com^$document -||tertracks.site^$document -||theirbellsound.co^$document -||theirbellstudio.co^$document -||thematicalastero.info^$document -||theod-qsr.com^$document -||theonesstoodtheirground.com^$document -||thoroughlypantry.com^$document -||thubanoa.com^$document -||tidyllama.com^$document -||titaniumveinshaper.com^$document -||toiletpaper.life^$document -||tolstoyclavers.top^$document -||toltooth.net^$document -||toopsoug.net^$document -||topduppy.info^$document -||topnewsgo.com^$document -||toptoys.store^$document -||torajaimbrium.top^$document -||totalab.xyz^$document -||totaladblock.com^$document -||touched35one.pro^$document -||track.afrsportsbetting.com^$document -||tracker-2.com^$document -||tracker-sav.space^$document -||tracker-tds.info^$document -||tracking.injoyalot.com^$document -||trackingtraffo.com^$document -||trackmedclick.com^$document -||trackr1.co.in^$document -||tracktds.live^$document -||traffoxx.uk^$document -||trckswrm.com^$document -||trk72.com^$document -||trkingthebest.net^$document -||trknext.com^$document -||trksmorestreacking.com^$document -||trpool.org^$document -||tsyndicate.com^$document -||tubecup.net^$document -||twigwisp.com^$document -||unbloodied.sbs^$document -||uncastnork.com^$document -||uncletroublescircumference.com^$document -||uncoverarching.com^$document -||unendlyyodeled.top^$document -||unitsympathetic.com^$document -||unlocky.org^$document -||unlocky.xyz^$document -||unpaledbooker.top^$document -||uphorter.com^$document -||utm-campaign.com^$document -||vasstycom.com^$document -||vetoembrace.com^$document -||vezizey.xyz^$document -||vfgte.com^$document -||viiiyskm.com^$document -||viippugm.com^$document -||viirkagt.com^$document -||viistroy.com^$document -||viitqvjx.com^$document -||violationphysics.click^$document -||virusscanner.to^$document -||vizoalygrenn.com^$document -||volleyballachiever.site^$document -||vpn-offers.org^$document -||vriddhipardee.top^$document -||wbidder.online^$document -||wbidder3.com^$document -||webmedrtb.com^$document -||wewearegogogo.com^$document -||whaurgoopou.com^$document -||wheceelt.net^$document -||wifescamara.click^$document -||win-myprize.top^$document -||wingoodprize.life^$document -||winsimpleprizes.life^$document -||womadsmart.com^$document -||wovensur.com^$document -||wuujae.com^$document -||x2tsa.com^$document -||xadsmart.com^$document -||xdownloadright.com^$document -||xlivrdr.com^$document -||xml-clickurl.com^$document -||xstalkx.ru^$document -||xszpuvwr7.com^$document -||yellow-resultsbidder.com^$document -||yohavemix.live^$document -||youradexchange.com^$document -! Third-party -||123date.me^$third-party -||152media.com^$third-party -||2beon.co.kr^$third-party -||2htg.com^$third-party -||2leep.com^$third-party -||2mdn.net^$~media,third-party -||33across.com^$third-party -||360ads.com^$third-party -||360installer.com^$third-party -||365sbaffiliates.com^$third-party -||4affiliate.net^$third-party -||4cinsights.com^$third-party -||4dsply.com^$third-party -||7search.com^$third-party -||888media.net^$third-party -||9desires.xyz^$third-party -||a-static.com^$third-party -||a.raasnet.com^$third-party -||a2dfp.net^$third-party -||a2zapk.com^$script,subdocument,third-party,xmlhttprequest -||a433.com^$third-party -||a4g.com^$third-party -||aaddcount.com^$third-party -||aanetwork.vn^$third-party -||abnad.net^$third-party -||aboutads.quantcast.com^$third-party -||accio.ai^$third-party -||acloudimages.com^$third-party -||acronym.com^$third-party -||actiondesk.com^$third-party -||activedancer.com^$third-party -||ad-adapex.io^$third-party -||ad-mixr.com^$third-party -||ad-tech.ru^$third-party -||ad.plus^$third-party -||ad.style^$third-party -||ad20.net^$third-party -||ad2adnetwork.biz^$third-party -||ad2bitcoin.com^$third-party -||ad4989.co.kr^$third-party -||ad4game.com^$third-party -||ad6media.fr^$third-party -||adacado.com^$third-party -||adaction.se^$third-party -||adacts.com^$third-party -||adadvisor.net^$third-party -||adagora.com^$third-party -||adalliance.io^$third-party -||adalso.com^$third-party -||adamatic.co^$third-party -||adaos-ads.net^$third-party -||adapd.com^$third-party -||adapex.io^$third-party -||adatrix.com^$third-party -||adbard.net^$third-party -||adbasket.net^$third-party -||adbetclickin.pink^$third-party -||adbetnet.com^$third-party -||adbit.biz^$third-party -||adcalm.com^$third-party -||adcell.com^$third-party -||adclickafrica.com^$third-party -||adcolony.com^$third-party -||adconity.com^$third-party -||adconscious.com^$third-party -||addoor.net^$third-party -||addroid.com^$third-party -||addvantagetechnology.com^$third-party -||addynamix.com^$third-party -||addynamo.net^$third-party -||adecn.com^$third-party -||adedy.com^$third-party -||adelement.com^$third-party -||ademails.com^$third-party -||adenc.co.kr^$third-party -||adengage.com^$third-party -||adentifi.com^$third-party -||adespresso.com^$third-party -||adexc.net^$third-party -||adf01.net^$third-party -||adfinity.pro^$third-party -||adfinix.com^$third-party -||adforgames.com^$third-party -||adfrika.com^$third-party -||adgage.es^$third-party -||adgatemedia.com^$third-party -||adgear.com^$third-party -||adgebra.in^$third-party -||adgitize.com^$third-party -||adgrid.io^$third-party -||adgroups.com^$third-party -||adgrx.com^$third-party -||adhash.com^$third-party -||adhaven.com^$third-party -||adhese.be^$third-party -||adhese.com^$third-party -||adhese.net^$third-party -||adhigh.net^$third-party -||adhitzads.com^$third-party -||adhostingsolutions.com^$third-party -||adhouse.pro^$third-party -||adhunt.net^$third-party -||adicate.com^$third-party -||adikteev.com^$third-party -||adimise.com^$third-party -||adimpact.com^$third-party -||adinc.co.kr^$third-party -||adinc.kr^$third-party -||adinch.com^$third-party -||adincon.com^$third-party -||adindigo.com^$third-party -||adingo.jp^$third-party -||adinplay.com^$third-party -||adinplay.workers.dev^$third-party -||adintend.com^$third-party -||adinterax.com^$third-party -||adinvigorate.com^$third-party -||adip.ly^$third-party -||adipolo.com^$third-party -||adipolosolutions.com^$third-party -||adiqglobal.com^$third-party -||adireland.com^$third-party -||adireto.com^$third-party -||adisfy.com^$third-party -||adisn.com^$third-party -||adit-media.com^$third-party -||adition.com^$third-party -||aditize.com^$third-party -||adjal.com^$third-party -||adjector.com^$third-party -||adjesty.com^$third-party -||adjug.com^$third-party -||adjuggler.com^$third-party -||adjuggler.net^$third-party -||adjungle.com^$third-party -||adjust.com^$script,third-party -||adk2.co^$third-party -||adk2.com^$third-party -||adk2x.com^$third-party -||adkengage.com^$third-party -||adklip.com^$third-party -||adknock.com^$third-party -||adknowledge.com^$third-party -||adkonekt.com^$third-party -||adkova.com^$third-party -||adlatch.com^$third-party -||adlayer.net^$third-party -||adlegend.com^$third-party -||adlightning.com^$third-party -||adline.com^$third-party -||adlink.net^$third-party -||adlive.io^$third-party -||adloaded.com^$third-party -||adlook.me^$third-party -||adloop.co^$third-party -||adlooxtracking.com^$third-party -||adlpartner.com^$third-party -||adlux.com^$third-party -||adm-vids.info^$third-party -||adm.shinobi.jp^$third-party -||adman.gr^$third-party -||admaru.com^$third-party -||admatic.com.tr^$third-party -||admaxim.com^$third-party -||admedia.com^$third-party -||admedit.net^$third-party -||admedo.com^$third-party -||admetricspro.com^$third-party -||admost.com^$third-party -||admulti.com^$third-party -||adnami.io^$third-party -||adnet.biz^$third-party -||adnet.com^$third-party -||adnet.de^$third-party -||adnet.lt^$third-party -||adnet.ru^$third-party -||adnimation.com^$third-party -||adnitro.pro^$third-party -||adnium.com^$third-party -||adnmore.co.kr^$third-party -||adnow.com^$third-party -||adnuntius.com^$third-party -||adomik.com^$third-party -||adonnews.com^$third-party -||adoperator.com^$third-party -||adoptim.com^$third-party -||adorika.com^$third-party -||adorion.net^$third-party -||adosia.com^$third-party -||adoto.net^$third-party -||adparlor.com^$third-party -||adpay.com^$third-party -||adpays.net^$third-party -||adpeepshosted.com^$third-party -||adperfect.com^$third-party -||adplugg.com^$third-party -||adpnut.com^$third-party -||adport.io^$third-party -||adpredictive.com^$third-party -||adpushup.com^$third-party -||adquire.com^$third-party -||adqva.com^$third-party -||adreactor.com^$third-party -||adrecord.com^$third-party -||adrecover.com^$third-party -||adrelayer.com^$third-party -||adresellers.com^$third-party -||adrevolver.com^$third-party -||adrise.de^$third-party -||adro.co^$third-party -||adrocket.com^$third-party -||adroll.com^$third-party -||adrsp.net^$third-party -||ads-pixiv.net^$third-party -||ads.cc^$third-party -||ads01.com^$third-party -||adsbookie.com^$third-party -||adscendmedia.com^$third-party -||adscout.io^$third-party -||adscpm.net^$third-party -||adserve.com^$third-party -||adservingfactory.com^$third-party -||adservme.com^$third-party -||adsexse.com^$third-party -||adsfast.com^$third-party -||adsforallmedia.com^$third-party -||adshot.de^$third-party -||adshuffle.com^$third-party -||adsiduous.com^$third-party -||adsight.nl^$third-party -||adslivecorp.com^$third-party -||adsmart.hk^$third-party -||adsninja.ca^$third-party -||adsniper.ru^$third-party -||adsolutely.com^$third-party -||adsparc.net^$third-party -||adspeed.com^$third-party -||adspruce.com^$third-party -||adsquirrel.ai^$third-party -||adsreference.com^$third-party -||adsring.com^$third-party -||adsrv4k.com^$third-party -||adsrvmedia.com^$third-party -||adsrvmedia.net^$third-party -||adstargeting.com^$third-party -||adstatic.com^$third-party -||adstean.com^$third-party -||adsterra.com^$third-party -||adstock.pro^$third-party -||adstoo.com^$third-party -||adstudio.cloud^$third-party -||adstuna.com^$third-party -||adsummos.net^$third-party -||adsupermarket.com^$third-party -||adsvert.com^$third-party -||adsync.tech^$third-party -||adtarget.com.tr^$third-party -||adtdp.com^$third-party -||adtear.com^$third-party -||adtech.de^$third-party -||adtechium.com^$third-party -||adtechjp.com^$third-party -||adtechus.com^$third-party -||adtegrity.net^$third-party -||adtelligent.com^$third-party -||adteractive.com^$third-party -||adthrive.com^$third-party -||adtival.network^$third-party -||adtrix.com^$third-party -||adultadworld.com^$third-party -||adultimate.net^$third-party -||adup-tech.com^$third-party -||adurr.com^$third-party -||adv-adserver.com^$third-party -||advanseads.com^$third-party -||advarkads.com^$third-party -||advcash.com^$third-party -||adventori.com^$third-party -||adventurefeeds.com^$third-party -||adversal.com^$third-party -||advertarium.com.ua^$third-party -||adverticum.net^$third-party -||advertise.com^$third-party -||advertisespace.com^$third-party -||advertising365.com^$third-party -||advertnative.com^$third-party -||advertone.ru^$third-party -||advertserve.com^$third-party -||advertur.ru^$third-party -||advg.jp^$third-party -||adviad.com^$third-party -||advideum.com^$third-party -||advinci.net^$third-party -||advmd.com^$third-party -||advmedia.io^$third-party -||advmedialtd.com^$third-party -||advnetwork.net^$third-party -||advombat.ru^$third-party -||advon.net^$third-party -||advpoints.com^$third-party -||advsnx.net^$third-party -||adwebone.com^$third-party -||adwebster.com^$third-party -||adworkmedia.com^$third-party -||adworkmedia.net^$third-party -||adworldmedia.com^$third-party -||adworldmedia.net^$third-party -||adx.io^$third-party -||adx.ws^$third-party -||adxoo.com^$third-party -||adxpose.com^$third-party -||adxpremium.com^$third-party -||adxpub.com^$third-party -||adyoulike.com^$third-party -||adysis.com^$third-party -||adzbazar.com^$third-party -||adzerk.net^$third-party -||adzouk.com^$third-party -||adzs.nl^$third-party -||adzyou.com^$third-party -||affbuzzads.com^$third-party -||affec.tv^$third-party -||affifix.com^$third-party -||affiliate-b.com^$third-party -||affiliateedge.com^$third-party -||affiliategroove.com^$third-party -||affilimatejs.com^$third-party -||affilist.com^$third-party -||afishamedia.net^$third-party -||afp.ai^$third-party -||afrikad.com^$third-party -||afront.io^$third-party -||afy11.net^$third-party -||afyads.com^$third-party -||ahvclick.com^$third-party -||aim4media.com^$third-party -||ainsyndication.com^$third-party -||airfind.com^$third-party -||akavita.com^$third-party -||aklamator.com^$third-party -||alienhub.xyz^$third-party -||alimama.com^$third-party -||allmediadesk.com^$third-party -||alloha.tv^$third-party -||alpha-affiliates.com^$third-party -||alright.network^$third-party -||amateur.cash^$third-party -||amobee.com^$third-party -||andbeyond.media^$third-party -||anicli.click^$third-party -||aniview.com^$third-party -||anrdoezrs.net/image- -||anrdoezrs.net/placeholder- -||anyclip-media.com^$third-party -||anymedia.lv^$third-party -||anyxp.com^$third-party -||aorms.com^$third-party -||aorpum.com^$third-party -||apex-ad.com^$third-party -||apexcdn.com^$third-party -||aphookkensidah.pro^$third-party -||apmebf.com^$third-party -||applixir.com^$third-party -||appnext.com^$third-party -||apprupt.com^$third-party -||apptap.com^$third-party -||apxtarget.com^$third-party -||apycomm.com^$third-party -||apyoth.com^$third-party -||aqua-adserver.com^$third-party -||aralego.com^$third-party -||arcadebannerexchange.org^$third-party -||arcadechain.com^$third-party -||armanet.co^$third-party -||artsai.com^$third-party -||assemblyexchange.com^$third-party -||assoc-amazon.ca^$third-party -||assoc-amazon.co.uk^$third-party -||assoc-amazon.com^$third-party -||assoc-amazon.de^$third-party -||assoc-amazon.es^$third-party -||assoc-amazon.fr^$third-party -||assoc-amazon.it^$third-party -||asterpix.com^$third-party -||auctionnudge.com^$third-party -||audience.io^$third-party -||audience2media.com^$third-party -||audiencerun.com^$third-party -||autoads.asia^$third-party -||automatad.com^$third-party -||awsmer.com^$third-party -||axiaffiliates.com^$third-party -||azadify.com^$third-party -||backbeatmedia.com^$third-party -||backlinks.com^$third-party -||ban-host.ru^$third-party -||bannerbank.ru^$third-party -||bannerbit.com^$third-party -||bannerboo.com^$third-party -||bannerbridge.net^$third-party -||bannerconnect.com^$third-party -||bannerconnect.net^$third-party -||bannerdealer.com^$third-party -||bannerflow.com^$third-party -||bannerflux.com^$third-party -||bannerignition.co.za^$third-party -||bannerrage.com^$third-party -||bannersmall.com^$third-party -||bannersmania.com^$third-party -||bannersnack.com^$third-party,domain=~bannersnack.dev -||bannersnack.net^$third-party,domain=~bannersnack.dev -||bannerweb.com^$third-party -||bannieres-a-gogo.com^$third-party -||baronsoffers.com^$third-party -||bbelements.com^$third-party -||bbuni.com^$third-party -||beabsolom.com^$third-party -||beaconads.com^$third-party -||beaverads.com^$third-party -||bebi.com^$third-party -||beead.co.uk^$third-party -||beead.net^$third-party -||begun.ru^$third-party -||behave.com^$third-party -||belointeractive.com^$third-party -||benfly.net^$third-party -||beringmedia.com^$third-party -||bestcasinopartner.com^$third-party -||bestcontentcompany.top^$third-party -||bestcontentfood.top^$third-party -||bestcontentsoftware.top^$third-party -||bestforexpartners.com^$third-party -||besthitsnow.com^$third-party -||bestodds.com^$third-party -||bestofferdirect.com^$third-party -||bestonlinecoupons.com^$third-party -||bet3000partners.com^$third-party -||bet365affiliates.com^$third-party -||betoga.com^$third-party -||betpartners.it^$third-party -||betrad.com^$third-party -||bettercollective.rocks^$third-party -||bidfilter.com^$third-party -||bidgear.com^$third-party -||bidscape.it^$third-party -||bidvertiser.com^$third-party -||bidvol.com^$third-party -||biggboss16.de^$third-party -||bigpipes.co^$third-party -||bigpulpit.com^$third-party -||bigspyglass.com^$third-party -||bildirim.eu^$third-party -||bimbim.com^$third-party -||bin-layer.de^$third-party -||binlayer.com^$third-party -||binlayer.de^$third-party -||biskerando.com^$third-party -||bitcoadz.io^$third-party -||bitcoinadvertisers.com^$third-party -||bitcoset.com^$third-party -||bitonclick.com^$third-party -||bitraffic.com^$third-party -||bitspush.io^$third-party -||bittads.com^$third-party -||bizx.info^$third-party -||bizzclick.com^$third-party -||bliink.io^$third-party -||blogads.com^$third-party -||blogclans.com^$third-party -||bluetoad.com^$third-party -||blzz.xyz^$third-party -||bmfads.com^$third-party -||bodis.com^$third-party -||bogads.com^$third-party -||boo-box.com^$third-party -||bookbudd.com^$third-party -||boostable.com^$third-party -||boostads.net^$third-party -||braun634.com^$third-party -||brealtime.com^$third-party -||bricks-co.com^$third-party -||broadstreetads.com^$third-party -||browsekeeper.com^$third-party -||btrll.com^$third-party -||btserve.com^$third-party -||bucketsofbanners.com^$third-party -||budurl.com^$third-party -||buildtrafficx.com^$third-party -||buleor.com^$third-party -||bumq.com^$third-party -||bunny-net.com^$third-party -||burjam.com^$third-party -||burstnet.com^$third-party -||businesscare.com^$third-party -||businessclick.com^$third-party -||buxept.com^$third-party -||buxflow.com^$third-party -||buxp.org^$third-party -||buycheaphost.net^$third-party -||buyflood.com^$third-party -||buyorselltnhomes.com^$third-party -||buysellads.com^$third-party -||buysellads.net^$third-party -||buyt.in^$third-party -||buzzadexchange.com^$third-party -||buzzadnetwork.com^$third-party -||buzzcity.net^$third-party -||buzzonclick.com^$third-party -||buzzoola.com^$third-party -||buzzparadise.com^$third-party -||bwinpartypartners.com^$third-party -||byspot.com^$third-party -||c-on-text.com^$third-party -||camghosts.com^$third-party -||camonster.com^$third-party -||campaignlook.com^$third-party -||capacitygrid.com^$third-party -||caroda.io^$third-party -||casino-zilla.com^$third-party -||cazamba.com^$third-party -||cb-content.com^$third-party -||cdnreference.com^$third-party -||charltonmedia.com^$third-party -||chitika.com^$third-party -||chpadblock.com^$~image -||cibleclick.com^$third-party -||cinarra.com^$third-party -||citrusad.com^$third-party -||city-ads.de^$third-party -||ck-cdn.com^$third-party -||clash-media.com^$third-party -||cleafs.com^$third-party -||clean-1-clean.club^$third-party -||cleverads.vn^$third-party -||clickable.com^$third-party -||clickad.pl^$third-party -||clickadilla.com^$third-party -||clickadu.com^$third-party -||clickbet88.com^$third-party -||clickcertain.com^$third-party -||clickdaly.com^$third-party -||clickfilter.co^$third-party -||clickfuse.com^$third-party -||clickinc.com^$third-party -||clickintext.net^$third-party -||clickmagick.com^$third-party -||clickmon.co.kr^$third-party -||clickoutcare.io^$third-party -||clickpoint.com^$third-party -||clicksor.com^$third-party -||clicktripz.com^$third-party -||clixco.in^$third-party -||clixtrac.com^$third-party -||clkmg.com^$third-party -||cluep.com^$third-party -||codegown.care^$third-party -||cogocast.net^$third-party -||coguan.com^$third-party -||coinads.io^$third-party -||coinmedia.co^$third-party -||cointraffic.io^$third-party -||coinzilla.io^$third-party -||commissionfactory.com.au^$third-party -||commissionmonster.com^$third-party -||comscore.com^$third-party -||connexity.net^$third-party -||consumable.com^$third-party -||contaxe.com^$third-party -||content-cooperation.com^$third-party -||contentiq.com^$third-party -||contenture.com^$third-party -||contextads.live^$third-party -||contextuads.com^$third-party -||cookpad-ads.com^$third-party -||coolerads.com^$third-party -||coull.com^$third-party -||cpaclickz.com^$third-party -||cpagrip.com^$third-party -||cpalead.com^$third-party -||cpalock.com^$third-party -||cpfclassifieds.com^$third-party -||cpm.media^$third-party -||cpmleader.com^$third-party -||crakmedia.com^$third-party -||crazyrocket.io^$third-party -||crispads.com^$third-party -||croea.com^$third-party -||cryptoad.space^$third-party -||cryptoads.space^$third-party -||cryptocoinsad.com^$third-party -||cryptoecom.care^$third-party -||cryptotrials.care^$third-party -||ctrhub.com^$third-party -||ctrmanager.com^$third-party -||ctxtfl.com^$third-party -||cuelinks.com^$third-party -||currentlyobsessed.me^$third-party -||cybmas.com^$third-party -||czilladx.com^$third-party -||dable.io^$third-party -||dailystuffall.com^$third-party -||datawrkz.com^$third-party -||dating-service.net^$third-party -||datinggold.com^$third-party -||dblks.net^$third-party -||dedicatednetworks.com^$third-party -||deepintent.com^$third-party -||deplayer.net^$third-party -||desipearl.com^$third-party -||dev2pub.com^$third-party -||developermedia.com^$third-party -||dgmaxinteractive.com^$third-party -||dianomi.com^$third-party -||digiadzone.com^$third-party -||digipathmedia.com^$third-party -||digitaladvertisingalliance.org^$third-party -||digitalaudience.io^$third-party -||digitalkites.com^$third-party -||digitalpush.org^$third-party -||digitalthrottle.com^$third-party -||disqusads.com^$third-party -||dl-protect.net^$third-party -||dochase.com^$third-party -||domainadvertising.com^$third-party -||dotomi.com^$third-party -||doubleclick.com^ -||doubleclick.net^ -||doubleverify.com^$third-party -||dpbolvw.net/image- -||dpbolvw.net/placeholder- -||dreamaquarium.com^$third-party -||dropkickmedia.com^$third-party -||dstillery.com^$third-party -||dt00.net^$third-party -||dt07.net^$third-party -||dualeotruyen.net^$third-party -||dumedia.ru^$third-party -||dynad.net^$third-party -||dynamicoxygen.com^$third-party -||e-generator.com^$third-party -||e-planning.net^$third-party -||e-viral.com^$third-party -||eadsrv.com^$third-party -||easy-ads.com^$third-party -||easyhits4u.com^$third-party -||easyinline.com^$third-party -||ebayclassifiedsgroup.com^$third-party -||ebayobjects.com.au^$third-party -||eboundservices.com^$third-party -||eclick.vn^$third-party -||ednplus.com^$third-party -||egadvertising.com^$third-party -||egamingonline.com^$third-party -||egamiplatform.tv^$third-party -||eksiup.com^$third-party -||ematicsolutions.com^$third-party -||emediate.se^$third-party -||erling.online^$third-party -||eroterest.net^$third-party -||eskimi.com^$third-party -||essayads.com^$third-party -||essaycoupons.com^$third-party -||et-code.ru^$third-party -||etargetnet.com^$third-party -||ethereumads.com^$third-party -||ethicalads.io^$third-party -||etology.com^$third-party -||evolvemediallc.com^$third-party -||evolvenation.com^$third-party -||exactdrive.com^$third-party -||exchange4media.com^$third-party -||exitbee.com^$third-party -||exitexplosion.com^$third-party -||exmarketplace.com^$third-party -||exponential.com^$third-party -||eyewonder.com^$third-party -||fapcat.com^$third-party -||faspox.com^$third-party -||fast-redirecting.com^$third-party -||fast2earn.com^$third-party -||feature.fm^$third-party -||fireflyengagement.com^$third-party -||fireworkadservices.com^$third-party -||fireworkadservices1.com^$third-party -||firstimpression.io^$third-party -||fisari.com^$third-party -||fixionmedia.com^$third-party -||flashtalking.com^$third-party,domain=~toggo.de -||flower-ads.com^$third-party -||flyersquare.com^$third-party -||flymyads.com^$third-party -||foremedia.net^$third-party -||forex-affiliate.com^$third-party -||forexprostools.com^$third-party -||free3dgame.xyz^$third-party -||freedomadnetwork.com^$third-party -||freerotator.com^$third-party -||friendlyduck.com^$third-party -||fruitkings.com^$third-party -||gainmoneyfast.com^$third-party -||gambling-affiliation.com^$third-party -||game-clicks.com^$third-party -||gayadnetwork.com^$third-party -||geozo.com^$third-party -||germaniavid.com^$third-party -||girls.xyz^$third-party -||goadserver.com^$third-party -||gourmetads.com^$third-party -||gplinks.in^$third-party -||grabo.bg^$third-party -||graciamediaweb.com^$third-party -||grafpedia.com^$third-party -||grapeshot.co.uk^$third-party -||greedseed.world^$third-party -||gripdownload.co^$third-party -||groovinads.com^$third-party -||growadvertising.com^$third-party -||grv.media^$third-party -||grvmedia.com^$third-party -||guitaralliance.com^$third-party -||gumgum.com^$third-party -||gururevenue.com^$third-party -||havetohave.com^$third-party -||headbidder.net^$third-party -||headerbidding.ai^$third-party -||headerlift.com^$third-party -||healthtrader.com^$third-party -||horse-racing-affiliate-program.co.uk^$third-party -||hot-mob.com^$third-party -||hotelscombined.com.au^$third-party -||hprofits.com^$third-party -||httpool.com^$third-party -||hypelab.com^$third-party -||hyros.com^$third-party -||ibannerexchange.com^$third-party -||ibillboard.com^$third-party -||icorp.ro^$third-party -||idevaffiliate.com^$third-party -||idreammedia.com^$third-party -||imediaaudiences.com^$third-party -||imho.ru^$third-party -||imonomy.com^$third-party -||impact-ad.jp^$third-party -||impactify.io^$third-party -||impresionesweb.com^$third-party -||improvedigital.com^$third-party -||increaserev.com^$third-party -||indianbannerexchange.com^$third-party -||indianlinkexchange.com^$third-party -||indieclick.com^$third-party -||indofad.com^$third-party -||indoleads.com^$third-party -||industrybrains.com^$third-party -||inetinteractive.com^$third-party -||infectiousmedia.com^$third-party -||infinite-ads.com^$third-party -||infinityads.com^$third-party -||influads.com^$third-party -||infolinks.com^$third-party -||innity.com^$third-party -||innovid.com^$third-party -||insideall.com^$third-party -||inskinad.com^$third-party -||inskinmedia.com^$~stylesheet,third-party -||instantbannercreator.com^$third-party -||insticator.com^$third-party -||instreamvideo.ru^$third-party -||insurads.com^$third-party -||integr8.digital^$third-party -||intenthq.com^$third-party -||intentiq.com^$third-party -||intentmedia.net^$third-party -||interactiveads.ai^$third-party -||interadv.net^$third-party -||interclick.com^$third-party -||interesting.cc^$third-party -||intergi.com^$third-party -||interpolls.com^$third-party -||interworksmedia.co.kr^$third-party -||intextad.net^$third-party -||intextdirect.com^$third-party -||intextual.net^$third-party -||intgr.net^$third-party -||intimlife.net^$third-party -||intopicmedia.com^$third-party -||intravert.co^$third-party -||inuvo.com^$third-party -||inuxu.co.in^$third-party -||investnewsbrazil.com^$third-party -||inviziads.com^$third-party -||involve.asia^$third-party -||ip-adress.com^$third-party -||ipromote.com^$third-party -||jango.com^$third-party -||javbuzz.com^$third-party -||jewishcontentnetwork.com^$third-party -||jivox.com^$third-party -||jobbio.com^$third-party -||jubna.com^$third-party -||juicyads.com^$script,third-party -||kaprila.com^$third-party -||kargo.com^$third-party -||kiosked.com^$third-party -||klakus.com^$third-party -||komoona.com^$third-party -||kovla.com^$third-party -||kurzycz.care^$third-party -||laim.tv^$third-party -||lanistaconcepts.com^$third-party -||lcwfab1.com^$third-party -||lcwfab2.com^$third-party -||lcwfab3.com^$third-party -||lcwfabt1.com^$third-party -||lcwfabt2.com^$third-party -||lcwfabt3.com^$third-party -||lhkmedia.in^$third-party -||lijit.com^$third-party -||linkexchangers.net^$third-party -||linkgrand.com^$third-party -||links2revenue.com^$third-party -||linkslot.ru^$third-party -||linksmart.com^$third-party -||linkstorm.net^$third-party -||linkwash.de^$third-party -||linkworth.com^$third-party -||linkybank.com^$third-party -||liqwid.net^$third-party -||listingcafe.com^$third-party -||liveadexchanger.com^$third-party -||liveadoptimizer.com^$third-party -||liveburst.com^$third-party -||liverail.com^$~object,third-party -||livesmarter.com^$third-party -||liveuniversenetwork.com^$third-party -||localsearch24.co.uk^$third-party -||lockerdome.com^$third-party -||logo-net.co.uk^$third-party -||looksmart.com^$third-party -||loopaautomate.com^$third-party -||love-banner.com^$third-party -||lustre.ai^$script,third-party -||magetic.com^$third-party -||magnetisemedia.com^$third-party -||mahimeta.com^$third-party -||mail-spinner.com^$third-party -||mangoads.net^$third-party -||mantisadnetwork.com^$third-party -||marfeel.com^$third-party -||markethealth.com^$third-party -||marketleverage.com^$third-party -||marsads.com^$third-party -||mcontigo.com^$third-party -||media.net^$third-party -||mediaad.org^$third-party -||mediacpm.pl^$third-party -||mediaffiliation.com^$third-party -||mediaforce.com^$third-party -||mediafuse.com^$third-party -||mediatarget.com^$third-party -||mediatradecraft.com^$third-party -||mediavine.com^$third-party -||meendocash.com^$third-party -||meloads.com^$third-party -||metaffiliation.com^$third-party,domain=~netaffiliation.com -||mgid.com^$third-party -||microad.jp^$third-party -||midas-network.com^$third-party -||millionsview.com^$third-party -||mindlytix.com^$third-party -||mixadvert.com^$third-party -||mixi.media^$third-party -||mobday.com^$third-party -||mobile-10.com^$third-party -||multiview.com^$third-party -||myaffiliates.com^$third-party -||n2s.co.kr^$third-party -||nanigans.com^$third-party -||nativeads.com^$third-party -||nativemedia.rs^$third-party -||nativeroll.tv^$third-party -||nativery.com^$third-party -||nativespot.com^$third-party -||neobux.com^$third-party -||neodatagroup.com^$third-party -||neoebiz.co.kr^$third-party -||neoffic.com^$third-party -||neon.today^$third-party -||netaffiliation.com^$~script,third-party -||netavenir.com^$third-party -||netinsight.co.kr^$third-party -||netizen.co^$third-party -||netliker.com^$third-party -||netloader.cc^$third-party -||netpub.media^$third-party -||netseer.com^$third-party -||netshelter.net^$third-party -||netsolads.com^$third-party -||networkad.net^$third-party -||networkmanag.com^$third-party -||networkplay.in^$third-party -||networld.hk^$third-party -||neudesicmediagroup.com^$third-party -||newdosug.eu^$third-party -||newormedia.com^$third-party -||newsadsppush.com^$third-party -||newsarmor.com^$third-party -||newsnet.in.ua^$third-party -||newstogram.com^$third-party -||newtention.net^$third-party -||newtueads.com^$third-party -||newwedads.com^$third-party -||nexac.com^$third-party -||nexage.com^$third-party -||nexeps.com^$third-party -||nextclick.pl^$third-party -||nextmillennium.io^$third-party -||nextmillmedia.com^$third-party -||nextoptim.com^$third-party -||nitmus.com^$third-party -||nitropay.com^$third-party -||njih.net^$third-party -||notsy.io^$third-party -||nsstatic.com^$third-party -||nsstatic.net^$third-party -||nster.net^$third-party -||ntent.com^$third-party -||numbers.md^$third-party -||objects.tremormedia.com^$~object,third-party -||oboxads.com^$third-party -||oceanwebcraft.com^$third-party -||ocelot.studio^$third-party -||oclus.com^$third-party -||odysseus-nua.com^$third-party -||ofeetles.pro^$third-party -||offerforge.com^$third-party -||offerforge.net^$third-party -||offerserve.com^$third-party -||offersquared.com^$third-party -||og-affiliate.com^$third-party -||okanjo.com^$third-party -||oneadz.com^$third-party -||onetag-sys.com^$third-party -||onlyalad.net^$third-party -||onsafelink.com^$script,third-party -||onscroll.com^$third-party -||onvertise.com^$third-party -||oogala.com^$third-party -||oopt.fr^$third-party -||oos4l.com^$third-party -||openbook.net^$third-party -||opt-intelligence.com^$third-party -||optiads.org^$third-party -||optinmonster.com^$third-party -||oriel.io^$third-party -||osiaffiliate.com^$third-party -||ospreymedialp.com^$third-party -||othersonline.com^$third-party -||otm-r.com^$third-party -||ownlocal.com^$third-party -||p-advg.com^$third-party -||p-digital-server.com^$third-party -||padsblue.com^$third-party -||pagefair.net^$third-party -||pagesinxt.com^$third-party -||paidonresults.net^$third-party -||paidsearchexperts.com^$third-party -||pakbanners.com^$third-party -||pantherads.com^$third-party -||papayads.net^$third-party -||paperclipservice.com^$third-party -||paperg.com^$third-party -||paradocs.ru^$third-party -||pariatonet.com^$third-party -||parkingcrew.net^$third-party -||parsec.media^$third-party -||partner-ads.com^$third-party -||partner.googleadservices.com^$third-party -||partner.video.syndication.msn.com^$~object,third-party -||partnerearning.com^$third-party -||partnermax.de^$third-party -||partnerstack.com^$third-party -||partycasino.com^$third-party -||partypoker.com^$third-party -||passendo.com^$third-party -||passive-earner.com^$third-party -||paydemic.com^$third-party -||paydotcom.com^$third-party -||payperpost.com^$third-party -||pebblemedia.be^$third-party -||peer39.com^$third-party -||pelisnetwork.com^$third-party -||penuma.com^$third-party -||pepperjamnetwork.com^$third-party -||perkcanada.com^$third-party -||persevered.com^$third-party -||pgammedia.com^$third-party -||placeiq.com^$third-party -||playamopartners.com^$third-party -||playmatic.video^$third-party -||playtem.com^$third-party -||pointclicktrack.com^$third-party -||points2shop.com^$third-party -||polyvalent.co.in^$third-party -||popmajor.com^$third-party -||poponclick.com^$third-party -||popundertotal.com^$third-party -||popunderzone.com^$third-party -||popupdomination.com^$third-party -||postaffiliatepro.com^$third-party -||powerlinks.com^$third-party -||ppcwebspy.com^$third-party -||prebid.org^$third-party -||prebidwrapper.com^$third-party -||prezna.com^$third-party -||prf.hn^$third-party -||primis-amp.tech^$third-party -||profitsfly.com^$third-party -||promo-reklama.ru^$third-party -||proper.io^$third-party -||pubdirecte.com^$third-party -||pubfuture.com^$third-party -||pubgears.com^$third-party -||pubgenius.io^$third-party -||pubguru.com^$third-party -||publicidad.net^$third-party -||publicityclerks.com^$third-party -||publift.com^$third-party -||publir.com^$third-party -||pubwise.io^$third-party -||puffnetwork.com^$third-party -||putlockertv.com^$third-party -||q1media.com^$third-party -||qashbits.com^$third-party -||quanta.la^$third-party -||quantumads.com^$third-party -||quantumdex.io^$third-party -||questus.com^$third-party -||qwertize.com^$third-party -||r2b2.cz^$third-party -||r2b2.io^$third-party -||rapt.com^$third-party -||reachjunction.com^$third-party -||reactx.com^$third-party -||readpeak.com^$third-party -||realbig.media^$third-party -||realclick.co.kr^$third-party -||realhumandeals.com^$third-party -||realssp.co.kr^$third-party -||rediads.com^$third-party -||redintelligence.net^$third-party -||redventures.io^$script,subdocument,third-party,xmlhttprequest -||republer.com^$third-party -||revenueflex.com^$third-party -||revive-adserver.net^$third-party -||reyden-x.com^$third-party -||rhombusads.com^$third-party -||richads.com^$third-party -||richaudience.com^$third-party -||roirocket.com^$third-party -||rollercoin.com^$third-party -||rotaban.ru^$third-party -||rtbhouse.com^$third-party -||sabavision.com^$third-party -||salvador24.com^$third-party -||sap-traffic.com^$third-party -||sape.ru^$third-party -||sba.about.co.kr^$third-party -||sbaffiliates.com^$third-party -||sbcpower.com^$third-party -||scanscout.com^$third-party -||scarlet-clicks.info^$third-party -||sceno.ru^$third-party -||scootloor.com^$third-party -||scrap.me^$third-party -||sedoparking.com^$third-party -||seedtag.com^$third-party -||selectad.com^$third-party -||sellhealth.com^$third-party -||selsin.net^$third-party -||sendwebpush.com^$third-party -||sensible-ads.com^$third-party -||servecontent.net^$third-party -||servedby-buysellads.com^$third-party,domain=~buysellads.com -||servemeads.com^$third-party -||sgbm.info^$third-party -||sharemedia.rs^$third-party -||sharethrough.com^$third-party -||shoofle.tv^$third-party -||shoogloonetwork.com^$third-party -||shopalyst.com^$third-party -||showcasead.com^$third-party -||showyoursite.com^$third-party -||shrinkearn.com^$third-party -||shrtfly.com^$third-party -||simpio.com^$third-party -||simpletraffic.co^$third-party -||simplyhired.com^$third-party -||sinogamepeck.com^$third-party -||sitemaji.com^$third-party -||sitesense-oo.com^$third-party -||sitethree.com^$third-party -||skinected.com^$third-party -||skyactivate.com^$third-party -||skymedia.co.uk^$third-party -||skyscrpr.com^$third-party -||slfpu.com^$third-party -||slikslik.com^$third-party -||slimspots.com^$third-party -||slimtrade.com^$third-party -||slopeaota.com^$third-party -||smac-ad.com^$third-party -||smac-ssp.com^$third-party -||smaclick.com^$third-party -||smartad.ee^$third-party -||smartadtags.com^$third-party -||smartadv.ru^$third-party -||smartasset.com^$third-party -||smartclip.net^$third-party,domain=~toggo.de -||smartico.one^$third-party -||smartredirect.de^$third-party -||smarttargetting.net^$third-party -||smartyads.com^$third-party -||smashpops.com^$third-party -||smilered.com^$third-party -||smileycentral.com^$third-party -||smljmp.com^$third-party -||smowtion.com^$third-party -||smpgfx.com^$third-party -||snack-media.com^$third-party -||snap.com^$third-party,domain=~forbusiness.snapchat.com -||sndkorea.co.kr^$third-party -||sni.ps^$third-party -||snigelweb.com^$third-party -||snowads.net^$third-party -||so-excited.com^$third-party -||soalouve.com^$third-party -||soazooge.com^$third-party -||sochr.com^$third-party -||socialbirth.com^$third-party -||socialelective.com^$third-party -||sociallypublish.com^$third-party -||socialmedia.com^$third-party -||socialreach.com^$third-party -||socialspark.com^$third-party -||soicos.com^$third-party -||sonobi.com^$third-party -||sotuktraffic.com^$third-party -||sovrn.com^$third-party -||sparteo.com^$third-party -||speakol.com^$third-party -||splinky.com^$third-party -||splut.com^$third-party -||spolecznosci.net^$third-party -||sponsoredtweets.com^$third-party -||spotx.tv^$third-party -||springify.io^$third-party -||springserve.com^$~media,third-party -||sprintrade.com^$third-party -||sprout-ad.com^$third-party -||spyoff.com^$third-party -||starlayer.com^$third-party -||starti.pl^$third-party -||statsperformdev.com^$third-party -||stocker.bonnint.net^$third-party -||stratos.blue^$third-party -||streamdefence.com^$third-party -||strikead.com^$third-party -||strossle.com^$third-party -||struq.com^$third-party -||styleui.ru^$third-party -||subendorse.com^$third-party -||sublimemedia.net^$third-party -||submitexpress.co.uk^$third-party -||suite6ixty6ix.com^$third-party -||suitesmart.com^$third-party -||sulvo.co^$third-party -||sumarketing.co.uk^$third-party -||sunmedia.net^$third-party -||superadexchange.com^$third-party -||superonclick.com^$third-party -||supersonicads.com^$third-party -||supletcedintand.pro^$third-party -||supplyframe.com^$third-party -||supuv2.com^$third-party -||surf-bar-traffic.com^$third-party -||surfe.pro^$third-party -||surgeprice.com^$third-party -||svlu.net^$third-party -||swbdds.com^$third-party -||swelen.com^$third-party -||switchadhub.com^$third-party -||swoop.com^$third-party -||swpsvc.com^$third-party -||synkd.life^$third-party -||tacoda.net^$third-party -||tacrater.com^$third-party -||tacticalrepublic.com^$third-party -||tafmaster.com^$third-party -||tagbucket.cc^$third-party -||tagdeliver.com^$third-party -||tagdelivery.com^$third-party -||taggify.net^$third-party -||tagjunction.com^$third-party -||tailsweep.com^$third-party -||takeads.com^$third-party -||talaropa.com^$third-party -||tangozebra.com^$third-party -||tankeuro.com^$third-party -||tanx.com^$third-party -||tapinfluence.com^$third-party -||tapnative.com^$third-party -||tardangro.com^$third-party -||targetnet.com^$third-party -||targetpoint.com^$third-party -||targetspot.com^$third-party -||tbaffiliate.com^$third-party -||tdmd.us^$third-party -||teasernet.com^$third-party -||terratraf.com^$third-party -||testfilter.com^$third-party -||testnet.nl^$third-party -||text-link-ads.com^$third-party -||tgtmedia.com^$third-party -||themoneytizer.com^$third-party -||tkqlhce.com/image- -||tkqlhce.com/placeholder- -||tlvmedia.com^$third-party -||tmtrck.com^$third-party -||tollfreeforwarding.com^$third-party -||tonefuse.com^$third-party -||topadvert.ru^$third-party -||toroadvertising.com^$third-party -||trackuity.com^$third-party -||tradedoubler.com^$third-party -||tradeexpert.net^$third-party -||tradplusad.com^$third-party -||traffboost.net^$third-party -||traffer.net^$third-party -||traffic-media.co.uk^$third-party -||traffic-supremacy.com^$third-party -||traffic2bitcoin.com^$third-party -||trafficadbar.com^$third-party -||trafficforce.com^$third-party -||traffichaus.com^$third-party -||trafficjunky.com^$third-party -||trafficsan.com^$third-party -||trafficswarm.com^$third-party -||trafficwave.net^$third-party -||trafficzap.com^$third-party -||trafmag.com^$third-party -||trigr.co^$third-party -||triplelift.com^$third-party -||trker.com^$third-party -||trustx.org^$third-party -||trytada.com^$third-party -||tubeadvertising.eu^$third-party -||twads.gg^$third-party -||tyroo.com^$third-party -||ubercpm.com^$third-party -||ultrapartners.com^$third-party -||unblockia.com^$third-party -||undertone.com^$third-party -||unibots.in^$third-party -||unibotscdn.com^$third-party -||urlcash.net^$third-party -||usemax.de^$third-party -||usenetjunction.com^$third-party -||usepanda.com^$third-party -||utherverse.com^$third-party -||validclick.com^$third-party -||valuead.com^$third-party -||valuecommerce.com^$third-party -||vdo.ai^$third-party -||velti.com^$third-party -||vendexo.com^$third-party -||veoxa.com^$third-party -||verified-extensions.com^$third-party -||vertismedia.co.uk^$third-party -||viads.com^$third-party -||viads.net^$third-party -||vibrantmedia.com^$third-party -||videoo.tv^$third-party -||videoroll.net^$third-party -||vidoomy.com^$third-party -||vidverto.io^$third-party -||viewtraff.com^$third-party -||vlyby.com^$third-party -||vmonetize.com^$third-party -||vupulse.com^$third-party -||w00tmedia.net^$third-party -||web3ads.net^$third-party -||webads.nl^$third-party -||webgains.com^$third-party -||weborama.fr^$third-party -||webshark.pl^$third-party -||webtrafic.ru^$third-party -||webwap.org^$third-party -||whatstheword.co^$third-party -||whizzco.com^$third-party -||wlmarketing.com^$third-party -||wmmediacorp.com^$third-party -||wordego.com^$third-party -||worthathousandwords.com^$third-party -||wwads.cn^$third-party -||xmlmonetize.com^$third-party -||xmtrading.com^$third-party -||xtendmedia.com^$third-party -||yeloads.com^$third-party -||yieldkit.com^$third-party -||yieldlove.com^$third-party -||yieldmo.com^$third-party -||yllix.com^$third-party -||yourfirstfunnelchallenge.com^$third-party -||zanox-affiliate.de/ppv/$third-party -||zanox.com/ppv/$third-party -||zap.buzz^$third-party -||zedo.com^$third-party -||zemanta.com^$third-party -||zeropark.com^$third-party -||ziffdavis.com^$third-party -||zwaar.org^$third-party -! Chinese google (https://github.com/easylist/easylist/issues/15643) -||2mdn-cn.net^ -||admob-cn.com^ -||doubleclick-cn.net^ -||googleads-cn.com^ -||googleadservices-cn.com^ -||googleadsserving.cn^ -||googlevads-cn.com^ -! ad-shield https://github.com/List-KR/List-KR/pull/892 -||00701059.xyz^$document,popup -||02777e.site^$document,popup -||03180d2d.live^$document,popup -||0395d1.xyz^$document,popup -||05751c.site^$document,popup -||072551.xyz^$document,popup -||076f66b2.live^$document,popup -||07c225f3.online^$document,popup -||07e197.site^$document,popup -||08f8f073.xyz^$document,popup -||09bd5a69.xyz^$document,popup -||0ae00c7c.xyz^$document,popup -||0c0b6e3f.xyz^$document,popup -||0d785fd7.xyz^$document,popup -||1116c5.xyz^$document,popup -||11c7a3.xyz^$document,popup -||1350c3.xyz^$document,popup -||156fd4.xyz^$document,popup -||164de830.live^$document,popup -||1a1fb6.xyz^$document,popup -||1c52e1e2.live^$document,popup -||1dd6e9ba.xyz^$document,popup -||1f6a725b.xyz^$document,popup -||20519a.xyz^$document,popup -||22d2d4d9-0c15-4a3a-9562-384f2c100146.xyz^$document,popup -||22dd31.xyz^$document,popup -||24052107.live^$document,popup -||258104d2.live^$document,popup -||285b0b37.xyz^$document,popup -||28d287b9.xyz^$document,popup -||28d591da.xyz^$document,popup -||295c.site^$document,popup -||2aeabdd4-3280-4f03-bc92-1890494f28be.xyz^$document,popup -||2d8bc293.xyz^$document,popup -||3a2e.site^$document,popup -||3a55f02d.xyz^$document,popup -||3ffa255f.xyz^$document,popup -||420db600.xyz^$document,popup -||45496fee.xyz^$document,popup -||466c4d0f.xyz^$document,popup -||485728.xyz^$document,popup -||48a16802.site^$document,popup -||48d8e4d6.xyz^$document,popup -||4a0e.xyz^$document,popup -||4aae8f.site^$document,popup -||4e04f7.xyz^$document,popup -||4e55.xyz^$document,popup -||4e68.xyz^$document,popup -||4fb60fd0.xyz^$document,popup -||54eeeadb.xyz^$document,popup -||55cc9d.xyz^$document,popup -||58e0.site^$document,popup -||5ab2f817.xyz^$document,popup -||5afc476a.xyz^$document,popup -||5cc3ac02.xyz^$document,popup -||5ceea3.xyz^$document,popup -||5fd6bc.xyz^$document,popup -||605efe.xyz^$document,popup -||634369.xyz^$document,popup -||6471e7f7.xyz^$document,popup -||656f1ba3.xyz^$document,popup -||657475b7-0095-478d-90d4-96ce440604f9.online^$document,popup -||68646f.xyz^$document,popup -||691f42ad.xyz^$document,popup -||6a6672.xyz^$document,popup -||70b927c8.live^$document,popup -||7608d5.xyz^$document,popup -||7841ffda.xyz^$document,popup -||7ca989e1.xyz^$document,popup -||7e60f1f9.xyz^$document,popup -||7e809ed7-e553-4e29-acb1-4e3c0e986562.site^$document,popup -||7fc8.site^$document,popup -||814272c4.xyz^$document,popup -||8acc5c.site^$document,popup -||8b71e197.xyz^$document,popup -||8bf6c3e9-3f4f-40db-89b3-58248f943ce3.online^$document,popup -||8eef59a5.live^$document,popup -||97496b9d.xyz^$document,popup -||977878.xyz^$document,popup -||97b448.xyz^$document,popup -||9814b49f.xyz^$document,popup -||9bc639da.xyz^$document,popup -||a49ebd.xyz^$document,popup -||a5d2d040.xyz^$document,popup -||a67d12.xyz^$document,popup -||a8b68645.xyz^$document,popup -||acf705ad.xyz^$document,popup -||af6937a2.live^$document,popup -||b0eb63.xyz^$document,popup -||b0f2f18e.xyz^$document,popup -||b211.xyz^$document,popup -||b2bf222e.xyz^$document,popup -||b51475b8.xyz^$document,popup -||b59c.xyz^$document,popup -||b714b1e8-4b7d-4ce9-a248-48fd5472aa0b.online^$document,popup -||b82978.xyz^$document,popup -||b903c2.xyz^$document,popup -||b9f25b.site^$document,popup -||bc0ca74b.live^$document,popup -||bc98ad.xyz^$document,popup -||bcbe.site^$document,popup -||bd5a57.xyz^$document,popup -||c31133f7.xyz^$document,popup -||c76d1a1b.live^$document,popup -||ca3d.site^$document,popup -||ca9246.xyz^$document,popup -||caa2c4.xyz^$document,popup -||cd57296e.xyz^$document,popup -||ce357c.xyz^$document,popup -||cf959857.live^$document,popup -||cfb98a.xyz^$document,popup -||content-loader.com^$document,popup -||css-load.com^$document,popup -||d23d450d.xyz^$document,popup -||d477275c.xyz^$document,popup -||d84bc26d.site^$document,popup -||d8b0a5.xyz^$document,popup -||d980ed.xyz^$document,popup -||da28c69e.xyz^$document,popup -||dd2270.xyz^$document,popup -||de214f.xyz^$document,popup -||e076.xyz^$document,popup -||e1577bbd-2a7e-4bee-b2fe-12a6406689e5.xyz^$document,popup -||e1ce13d5.xyz^$document,popup -||e75d10b9.live^$document,popup -||ec44.site^$document,popup -||f090.site^$document,popup -||f2f8.xyz^$document,popup -||f33d11b5.xyz^$document,popup -||f417a726.xyz^$document,popup -||f4c9a0fb.xyz^$document,popup -||f6176563.site^$document,popup -||f6b458fd.xyz^$document,popup -||f700fa18.live^$document,popup -||f816e81d.xyz^$document,popup -||f8a070.xyz^$document,popup -||f97ae142.online^$document,popup -||fadeb9a7-2417-4a51-8d99-0421a5622cbe.xyz^$document,popup -||fbfec2.xyz^$document,popup -||fe30a5b4.xyz^$document,popup -||html-load.cc^$document,popup -||html-load.com^$document,popup -||img-load.com^$document,popup -! Samsung/LG/Philips smart-TV ad domains -||ad.lgappstv.com^ -||ad.nettvservices.com^ -||ads.samsung.com^ -||lgad.cjpowercast.com.edgesuite.net^ -||lgsmartad.com^ -||samsungacr.com^ -! anime47.com / nettruyen.com -/(https?:\/\/)\w{30,}\.me\/\w{30,}\./$script,third-party -! IP addresses -/(https?:\/\/)104\.154\..{100,}/ -/(https?:\/\/)104\.197\..{100,}/ -/(https?:\/\/)104\.198\..{100,}/ -/(https?:\/\/)130\.211\..{100,}/ -/(https?:\/\/)142\.91\.159\..{100,}/ -/(https?:\/\/)213\.32\.115\..{100,}/ -/(https?:\/\/)216\.21\..{100,}/ -/(https?:\/\/)217\.182\.11\..{100,}/ -/(https?:\/\/)51\.195\.31\..{100,}/ -||141.98.82.232^ -||142.91.159. -||158.247.208. -||162.252.214.4^ -||167.99.31.227^ -||172.255.103.118^ -||172.255.6.135^ -||172.255.6.137^ -||172.255.6.139^ -||172.255.6.140^ -||172.255.6.150^ -||172.255.6.152^ -||172.255.6.199^ -||172.255.6.217^ -||172.255.6.228^ -||172.255.6.248^ -||172.255.6.252^ -||172.255.6.254^ -||172.255.6.2^ -||172.255.6.59^ -||188.42.84.110^ -||188.42.84.137^ -||188.42.84.159^ -||188.42.84.160^ -||188.42.84.162^ -||188.42.84.21^ -||188.42.84.23^ -||203.195.121.0^ -||203.195.121.103^ -||203.195.121.119^ -||203.195.121.11^ -||203.195.121.134^ -||203.195.121.184^ -||203.195.121.195^ -||203.195.121.1^ -||203.195.121.209^ -||203.195.121.217^ -||203.195.121.219^ -||203.195.121.224^ -||203.195.121.229^ -||203.195.121.24^ -||203.195.121.28^ -||203.195.121.29^ -||203.195.121.34^ -||203.195.121.36^ -||203.195.121.40^ -||203.195.121.46^ -||203.195.121.70^ -||203.195.121.72^ -||203.195.121.73^ -||203.195.121.74^ -||23.109.150.208^ -||23.109.150.253^ -||23.109.170.212^ -||23.109.170.228^ -||23.109.248.125^ -||23.109.248.129^ -||23.109.248.130^ -||23.109.248.135^ -||23.109.248.139^ -||23.109.248.149^ -||23.109.248.14^ -||23.109.248.174^ -||23.109.248.183^ -||23.109.248.20^ -||23.109.248.229^ -||23.109.248.247^ -||23.109.248.29^ -||23.109.82. -||23.109.87. -||23.109.87.123^ -||23.195.91.195^ -||34.102.137.201^ -||35.227.234.222^ -||35.232.188.118^ -||37.1.209.213^ -||51.77.227.100^ -||51.77.227.101^ -||51.77.227.102^ -||51.77.227.103^ -||51.77.227.96^ -||51.77.227.97^ -||51.77.227.98^ -||51.77.227.99^ -||51.89.187.136^ -||51.89.187.137^ -||51.89.187.138^ -||51.89.187.139^ -||51.89.187.140^ -||51.89.187.141^ -||51.89.187.142^ -||51.89.187.143^ -||88.42.84.136^ -! Altice / Optimum / CableVision injects ads -! https://github.com/ryanbr/fanboy-adblock/issues/816 -||167.206.10.148^ -! TrustPid/Utiq -||utiq-aws.net^ -||utiq.24auto.de^ -||utiq.24hamburg.de^ -||utiq.24rhein.de^ -||utiq.buzzfeed.de^ -||utiq.come-on.de^ -||utiq.einfach-tasty.de^ -||utiq.fnp.de^ -||utiq.fr.de^ -||utiq.hna.de^ -||utiq.ingame.de^ -||utiq.kreiszeitung.de^ -||utiq.merkur.de^ -||utiq.mopo.de^ -||utiq.op-online.de^ -||utiq.soester-anzeiger.de^ -||utiq.tz.de^ -||utiq.wa.de^ - -! *** easylist:easylist/easylist_adservers_popup.txt *** -||0265331.com^$popup -||07c225f3.online^$popup -||0a8d87mlbcac.top^$popup -||0byv9mgbn0.com^$popup -||0redirb.com^$popup -||0rv1wtduj.com^$popup -||11x11.com^$popup -||123-movies.bz^$popup -||123vidz.com^$popup -||172.255.103.171^$popup -||19turanosephantasia.com^$popup -||1betandgonow.com^$popup -||1firstofall1.com^$popup -||1jutu5nnx.com^$popup -||1o1camshow.com^$popup -||1phads.com^$popup -||1redirb.com^$popup -||1redirc.com^$popup -||1ts17.top^$popup -||1winpost.com^$popup -||1wtwaq.xyz^$popup -||1x001.com^$popup -||1xlite-503779.top^$popup -||1xlite-522762.top^$popup -||21find.com^$popup -||22bettracking.online^$popup -||22media.world^$popup -||23.109.82.222^$popup -||24-sportnews.com^$popup -||24affiliates.com^$popup -||24click.top^$popup -||24x7report.com^$popup -||26485.top^$popup -||2annalea.com^$popup -||2aus34sie6po5m.com^$popup -||2ltm627ho.com^$popup -||2qj7mq3w4uxe.com^$popup -||2smarttracker.com^$popup -||2track.info^$popup -||2vid.top^$popup -||331hwh.com^$popup -||360adshost.net^$popup -||367p.com^$popup -||3wr110.xyz^$popup -||3xbrh4rxsvbl.top^$popup -||4b6994dfa47cee4.com^$popup -||4dcdc.com^$popup -||4dsply.com^$popup -||567bets10.com^$popup -||5dimes.com^$popup -||5mno3.com^$popup -||5vbs96dea.com^$popup -||6-partner.com^$popup -||6198399e4910e66-ovc.com^$popup -||7anfpatlo8lwmb.com^$popup -||7app.top^$popup -||7ca78m3csgbrid7ge.com^$popup -||888media.net^$popup -||888promos.com^$popup -||8stream-ai.com^$popup -||8wtkfxiss1o2.com^$popup -||900bets10.com^$popup -||95urbehxy2dh.top^$popup -||9gg23.com^$popup -||9l3s3fnhl.com^$popup -||9t5.me^$popup -||a-ads.com^$popup -||a-waiting.com^$popup -||a23-trk.xyz^$popup -||a64x.com^$popup -||aagm.link^$popup -||abadit5rckb.com^$popup -||abateall.com^$popup -||abiderestless.com^$popup -||ablecolony.com^$popup -||ablogica.com^$popup -||abmismagiusom.com^$popup -||aboveredirect.top^$popup -||absoluteroute.com^$popup -||absump.com^$popup -||abtrcker.com^$popup -||abundantsurroundvacation.com^$popup -||acacdn.com^$popup -||acam-2.com^$popup -||accecmtrk.com^$popup -||accesshomeinsurance.co^$popup -||accompanycollapse.com^$popup -||acdcdn.com^$popup -||achcdn.com^$popup -||achievebeneficial.com^$popup -||aclktrkr.com^$popup -||acoudsoarom.com^$popup -||acrossheadquartersanchovy.com^$popup -||actio.systems^$popup -||actiondesk.com^$popup,third-party -||activate-game.com^$popup -||aculturerpa.info^$popup -||ad-adblock.com^$popup -||ad-addon.com^$popup -||ad-free.info^$popup -||ad-guardian.com^$popup -||ad-maven.com^$popup -||ad.soicos.com^$popup -||ad4game.com^$popup -||ad6media.fr^$popup,third-party -||adbetclickin.pink^$popup -||adbison-redirect.com^$popup -||adblock-360.com^$popup -||adblock-guru.com^$popup -||adblock-one-protection.com^$popup -||adblock-pro-download.com^$popup -||adblock-zen-download.com^$popup -||adblock-zen.com^$popup -||adblocker-instant.xyz^$popup -||adblocker-sentinel.net^$popup -||adblockerapp.com^$popup -||adblockerapp.net^$popup -||adblockersentinel.com^$popup -||adblockstream.com^$popup -||adblockstrtape.link^$popup -||adblockstrtech.link^$popup -||adboost.it^$popup -||adbooth.com^$popup -||adca.st^$popup -||adcash.com^$popup -||adcdnx.com^$popup -||adcell.com^$popup -||adclickbyte.com^$popup -||addotnet.com^$popup -||adentifi.com^$popup -||adexc.net^$popup,third-party -||adexchangecloud.com^$popup -||adexchangegate.com^$popup -||adexchangeguru.com^$popup -||adexchangemachine.com^$popup -||adexchangeprediction.com^$popup -||adexchangetracker.com^$popup -||adexmedias.com^$popup -||adexprtz.com^$popup -||adfclick1.com^$popup -||adfgetlink.net^$popup -||adform.net^$popup -||adfpoint.com^$popup -||adfreewatch.info^$popup -||adglare.net^$popup -||adhealers.com^$popup -||adhoc2.net^$popup -||aditsafeweb.com^$popup -||adjoincomprise.com^$popup -||adjuggler.net^$popup -||adk2.co^$popup -||adk2.com^$popup -||adk2x.com^$popup -||adlogists.com^$popup -||adlserq.com^$popup -||adltserv.com^$popup -||adlure.net^$popup -||admachina.com^$popup -||admediatex.net^$popup -||admedit.net^$popup -||admeerkat.com^$popup -||admeridianads.com^$popup -||admitad.com^$popup -||admjmp.com^$popup -||admobe.com^$popup -||admothreewallent.com$popup -||adnanny.com^$popup,third-party -||adnetworkperformance.com^$popup -||adnium.com^$popup,third-party -||adnotebook.com^$popup -||adnxs-simple.com^$popup -||adonweb.ru^$popup -||adop.co^$popup -||adplxmd.com^$popup -||adpointrtb.com^$popup -||adpool.bet^$popup -||adport.io^$popup -||adreactor.com^$popup -||adrealclick.com^$popup -||adrglife.com^$popup -||adrgyouguide.com^$popup -||adright.co^$popup -||adro.pro^$popup -||adrunnr.com^$popup -||ads.sexier.com^$popup -||ads4trk.com^$popup -||adsandcomputer.com^$popup -||adsb4trk.com^$popup -||adsblocker-ultra.com^$popup -||adsblockersentinel.info^$popup -||adsbreak.com^$popup -||adsbtrk.com^$popup -||adscdn.net^$popup -||adsco.re^$popup -||adserverplus.com^$popup -||adserving.unibet.com^$popup -||adsforcomputercity.com^$popup -||adshostnet.com^$popup -||adskeeper.co.uk^$popup -||adskeeper.com^$popup -||adskpak.com^$popup -||adsmarket.com^$popup -||adsplex.com^$popup -||adspredictiv.com^$popup -||adspyglass.com^$popup -||adsrv4k.com^$popup -||adstean.com^$popup -||adstracker.info^$popup -||adstreampro.com^$popup -||adsupply.com^$popup -||adsupplyads.com^$popup -||adsupplyads.net^$popup -||adsurve.com^$popup -||adsvlad.info^$popup -||adtelligent.com^$popup -||adtng.com^$popup -||adtrace.org^$popup -||adtraction.com^$popup -||aduld.click^$popup -||adult-affiliate.link^$popup -||adult.xyz^$popup -||adverdirect.com^$popup -||advertiserurl.com^$popup -||advertizmenttoyou.com^$popup -||advertserve.com^$popup -||adverttulimited.biz^$popup -||advmedialtd.com^$popup -||advmonie.com^$popup -||advnet.xyz^$popup -||advotionhot.com^$popup -||advsmedia.net^$popup -||adx-t.com^$popup -||adx.io^$popup,third-party -||adxite.com^$popup -||adxpansion.com^$popup -||adxpartner.com^$popup -||adxprtz.com^$popup -||adzblockersentinel.net^$popup -||adzerk.net^$popup -||adzshield.info^$popup -||aeeg5idiuenbi7erger.com^$popup -||afcpatrk.com^$popup -||aferpush.com^$popup -||aff-handler.com^$popup -||aff-track.net^$popup -||affabilitydisciple.com^$popup -||affbuzzads.com^$popup -||affcpatrk.com^$popup -||affectionatelypart.com^$popup -||affelseaeinera.org^$popup -||affflow.com^$popup -||affili.st^$popup -||affiliate-wg.com^$popup -||affiliateboutiquenetwork.com^$popup -||affiliatedrives.com^$popup -||affiliatestonybet.com^$popup -||affilirise.com^$popup -||affinity.net^$popup -||afflat3d2.com^$popup -||afflat3e1.com^$popup -||affluentshinymulticultural.com^$popup -||affmoneyy.com^$popup -||affpa.top^$popup -||affstreck.com^$popup -||afodreet.net^$popup -||afre.guru^$popup -||afront.io^$popup -||aftrk1.com^$popup -||aftrk3.com^$popup -||agabreloomr.com^$popup -||agacelebir.com^$popup -||agalarvitaran.com^$popup -||agapi-fwz.com^$popup -||aggrologis.top^$popup -||agl001.bid^$popup -||agweaaf.net^$popup -||agweaaf.org^$popup -||ahadsply.com^$popup -||ahbdsply.com^$popup -||ahscdn.com^$popup -||aigaithojo.com^$popup -||aigeno.com^$popup -||ailrouno.net^$popup -||aitsatho.com^$popup -||aj1574.online^$popup -||ajkrls.com^$popup -||ajkzd9h.com^$popup -||ajump2.com^$popup -||akmxts.com^$popup -||akumeha.onelink.me^$popup -||akutapro.com^$popup -||alargeredrubygsw.info^$popup -||alarmsubjectiveanniversary.com^$popup -||alcovesoftenedenthusiastic.com^$popup -||alfa-track.info^$popup -||algg.site^$popup -||algocashmaster.com^$popup -||alightbornbell.com^$popup -||alitems.co^$popup -||alitems.site^$popup -||alklinker.com^$popup -||alladvertisingdomclub.club^$popup -||alleviatepracticableaddicted.com^$popup -||allhypefeed.com^$popup -||allloveydovey.fun^$popup -||allow-to-continue.com^$popup -||allreqdusa.com^$popup -||allsportsflix.best^$popup -||allsportsflix.top^$popup -||allsporttv.com^$popup -||almightyexploitjumpy.com^$popup -||almstda.tv^$popup -||alpha-news.org^$popup -||alpheratzscheat.top^$popup -||alpine-vpn.com^$popup -||alpinedrct.com^$popup -||alreadyballetrenting.com^$popup -||altairaquilae.top^$popup -||alternads.info^$popup -||alternativecpmgate.com^$popup -||alxbgo.com^$popup -||alxsite.com^$popup -||am10.ru^$popup -||am15.net^$popup -||amatrck.com^$popup -||ambiliarcarwin.com^$popup -||ambuizeler.com^$popup -||ambushharmlessalmost.com^$popup -||amelatrina.com^$popup -||amendsrecruitingperson.com^$popup -||amesgraduatel.xyz^$popup -||amira-efz.com^$popup -||ammankeyan.com^$popup -||ammannests.com^$popup -||amourethenwife.top^$popup -||amplayeranydwou.info^$popup -||amprestrys.co.in^$popup -||amwoukrkskillso.com^$popup -||anacampaign.com^$popup -||analyticbz.com^$popup -||anamuel-careslie.com^$popup -||ancientsend.com^$popup -||andcomemunicateth.info^$popup -||angege.com^$popup -||animemeat.com^$popup -||ankdoier.com^$popup -||anmdr.link^$popup -||annual-gamers-choice.com^$popup -||annulmentequitycereals.com^$popup -||anopportunitytost.info^$popup -||answered-questions.com^$popup -||antaresarcturus.com^$popup -||antcixn.com^$popup -||anteog.com^$popup -||antivirusgaming.com^$popup -||antivirussprotection.com^$popup -||antjgr.com^$popup -||anymoresentencevirgin.com^$popup -||apiecelee.com^$popup -||aplainmpatoio.com^$popup -||apologizingrigorousmorally.com^$popup -||aporasal.net^$popup -||appcloudcore.com^$popup -||appcloudgroup.com^$popup -||appcloudvalue.com^$popup -||applifycontent.com^$popup -||applifysolutions.com^$popup -||applifysolutions.net^$popup -||appoineditardwide.com^$popup -||apprefaculty.pro^$popup -||appsget.monster^$popup -||appspeed.monster^$popup -||apptjmp.com^$popup -||appzery.com^$popup -||aquete.com^$popup -||arcost54ujkaphylosuvaursi.com^$popup -||ardoqxdinqucirei.info^$popup -||ardsklangr.com^$popup -||ardslediana.com^$popup -||ariapawners.space^$popup -||arielpri2nce8ss09.com^$popup -||arkdcz.com^$popup -||armedtidying.com^$popup -||arminius.io^$popup -||armourhardilytraditionally.com^$popup -||aroidsguide.com^$popup -||arrangementhang.com^$popup -||arrlnk.com^$popup -||artfulmilesfake.com^$popup -||articlepawn.com^$popup -||artpever.com^$popup -||arwobaton.com^$popup -||asce.xyz^$popup -||ascertainedthetongs.com^$popup -||asdasdad.net^$popup -||asgclickpp.com^$popup -||asgorebysschan.com^$popup -||ashoupsu.com^$popup -||asidefeetsergeant.com^$popup -||aslaironer.com^$popup -||aslaprason.com^$popup -||aslnk.link^$popup -||aso1.net^$popup -||asqconn.com^$popup -||asqualmag.com^$popup -||astarboka.com^$popup -||astesnlyno.org^$popup -||astonishing-go.com^$popup -||astrokompas.com^$popup -||atala-apw.com^$popup -||atas.io^$popup -||atcelebitor.com^$popup -||atentherel.org^$popup -||athletedurable.com^$popup -||atinsolutions.com^$popup -||atiretrously.com^$popup -||ativesathyas.info^$popup -||atmtaoda.com^$popup -||atomicarot.com^$popup -||attachedkneel.com^$popup -||attractbestbonuses.life^$popup -||atzekromchan.com^$popup -||aucoudsa.net^$popup -||audiblereflectionsenterprising.com^$popup -||audienceravagephotocopy.com^$popup -||audrte.com^$popup -||auesk.cfd^$popup -||auforau.com^$popup -||augailou.com^$popup -||augu3yhd485st.com^$popup -||augurersoilure.space^$popup -||august15download.com^$popup -||aungudie.com^$popup -||ausoafab.net^$popup -||authognu.com^$popup -||authorsallegationdeadlock.com^$popup -||autoperplexturban.com^$popup -||avenuewalkerchange.com^$popup -||avocams.com^$popup -||avprotect.store^$popup -||avthelkp.net^$popup -||awasrqp.xyz^$popup -||awecrptjmp.com^$popup -||awejmp.com^$popup -||awempire.com^$popup -||awesome-blocker.com^$popup -||awptjmp.com^$popup -||awsclic.com^$popup -||azqq.online^$popup -||b0oie4xjeb4ite.com^$popup -||b225.org^$popup -||b3z29k1uxb.com^$popup -||b7om8bdayac6at.com^$popup -||baboosloosh.top^$popup -||backseatrunners.com^$popup -||backwget99.com^$popup -||baect.com^$popup -||baifaphoa.com^$popup -||baiweluy.com^$popup -||bakjaqa.net^$popup -||baldo-toj.com^$popup -||balldollars.com^$popup -||ballersclung.top^$popup -||banquetunarmedgrater.com^$popup -||barrenusers.com^$popup -||baseauthenticity.co.in^$popup -||bassarazit.top^$popup -||batheunits.com^$popup -||baypops.com^$popup -||bayshorline.com^$popup -||bbccn.org^$popup -||bbcrgate.com^$popup -||bbrdbr.com^$popup -||bbuni.com^$popup -||becomeapartner.io^$popup -||becoquin.com^$popup -||becorsolaom.com^$popup -||befirstcdn.com^$popup -||beforeignunlig.com^$popup -||befrx.com^$popup -||behavedforciblecashier.com^$popup -||behim.click^$popup -||bejirachir.com^$popup -||beklefkiom.com^$popup -||belavoplay.com^$popup -||believemefly.com^$popup -||bellatrixmeissa.com^$popup -||belovedset.com^$popup -||belwrite.com^$popup -||bemachopor.com^$popup -||bemadsonline.com^$popup -||bemobpath.com^$popup -||bemobtrcks.com^$popup -||bemobtrk.com^$popup -||bend-me-over.com^$popup -||benoopto.com^$popup -||benselgut.top^$popup -||benumelan.com^$popup -||beonixom.com^$popup -||beparaspr.com^$popup -||berkshiretoday.xyz^$popup -||berlindespraque.life^$popup -||bespewrooibok.top^$popup -||best-offer-for-you.com^$popup -||best-vpn-app.com^$popup -||best-vpn.click^$popup -||best2017games.com^$popup -||best2019-games-web1.com^$popup -||best4fuck.com^$popup -||bestadsforyou.com^$popup -||bestbonusprize.life^$popup -||bestchainconnection.com^$popup -||bestclevercaptcha.top^$popup -||bestclicktitle.com^$popup -||bestcontentaccess.top^$popup -||bestconvertor.club^$popup -||bestgames-2022.com^$popup -||bestgirls4fuck.com^$popup -||bestmoviesflix.xyz^$popup -||bestonlinecasino.club^$popup -||bestplaceforall.com^$popup -||bestprizerhere.life^$popup -||bestproducttesters.com^$popup -||bestrevenuenetwork.com^$popup -||betfairpk.com^$popup -||betforakiea.com^$popup -||betoga.com^$popup -||betotodilea.com^$popup -||betshucklean.com^$popup -||betteradsystem.com^$popup -||betterdomino.com^$popup -||bettraff.com^$popup -||bewailblockade.com^$popup -||bewathis.com^$popup -||beyourxfriend.com^$popup -||bhlom.com^$popup -||bid-engine.com^$popup -||bidverdrd.com^$popup -||bidverdrs.com^$popup -||bidvertiser.com^$popup -||bigbasketshop.com^$popup -||bigeagle.biz^$popup -||bigelowcleaning.com^$popup -||bike-adsbidding.org^$popup -||bilqi-omv.com^$popup -||bimbim.com^$popup -||binaryborrowedorganized.com^$popup -||binaryoptionsgame.com^$popup -||bincatracs.com^$popup -||bingohall.ag^$popup -||binomnet.com^$popup -||binomnet3.com^$popup -||binomtrcks.site^$popup -||biphic.com^$popup -||biserka.xyz^$popup -||bit-system.org^$popup -||bitadexchange.com^$popup -||bitsspiral.com^$popup -||bitterstrawberry.com^$popup -||biturl.co^$popup -||bitzv.com^$popup -||blabblablabla.com^$popup -||blackandwhite-temporary.com^$popup -||blacklinknow.com^$popup -||blacklinknowss.co^$popup -||blacknesskeepplan.com^$popup -||blancoshrimp.com^$popup -||blaugasemoting.com^$popup -||bleandworldw.org^$popup -||blehcourt.com^$popup -||blockadsnot.com^$popup -||blockchaintop.nl^$popup -||blogoman-24.com^$popup -||blubberspoiled.com^$popup -||blueistheneworanges.com^$popup -||bluelinknow.com^$popup -||blueparrot.media^$popup -||blushmossy.com^$popup -||blzz.xyz^$popup -||bmtmicro.com^$popup -||bngpt.com^$popup -||bngtrak.com^$popup -||boastwelfare.com^$popup -||bobabillydirect.org^$popup -||bobgames-prolister.com^$popup -||bodelen.com^$popup -||bodrumshuttle.net^$popup -||boheasceile.top^$popup -||boloptrex.com^$popup -||bonafides.club^$popup -||bongacams.com^$popup,third-party -||bongacams10.com^$popup -||bonus-app.net^$popup -||bonzuna.com^$popup -||bookmakers.click^$popup -||booster-vax.com^$popup -||bot-checker.com^$popup -||bouhoagy.net^$popup -||bounceads.net^$popup -||bouncingtiger.online^$popup -||boustahe.com^$popup -||boxernightdilution.com^$popup -||boxlivegarden.com^$popup -||boyishdefend.com^$popup -||brabywig.live^$popup -||brackcava.website^$popup -||bracketterminusalias.com^$popup -||branchesdollar.com^$popup -||brandreachsys.com^$popup -||bravo-dog.com^$popup -||breadthneedle.com^$popup -||breechesbottomelf.com^$popup -||brenn-wck.com^$popup -||brieflizard.com^$popup -||brightadnetwork.com^$popup -||bringmesports.com^$popup -||briningkhalat.life^$popup -||britishinquisitive.com^$popup -||brllllantsdates.com^$popup -||bro4.biz^$popup -||broforyou.me^$popup -||brokennails.org^$popup -||browse-boost.com^$popup -||browsekeeper.com^$popup -||brucelead.com^$popup -||brutalconfer.com^$popup -||brutebaalite.top^$popup -||btpnav.com^$popup -||buikolered.com^$popup -||bullads.net^$popup -||bulochka.xyz^$popup -||bumpkinclon.shop^$popup -||bumpyremittancecarnivorous.com^$popup -||bungalowsimply.com^$popup -||bunintruder.com^$popup -||bunth.net^$popup -||buqkrzbrucz.com^$popup -||buranablated.digital^$popup -||bursa33.xyz^$popup -||bursultry-exprights.com^$popup -||busterry.com^$popup -||butterfly-bidbid.net^$popup -||buxbaumiaceae.sbs^$popup -||buy404s.com^$popup -||buyadvupfor24.com^$popup -||buyeasy.by^$popup -||buythetool.co^$popup -||buzzadnetwork.com^$popup -||buzzonclick.com^$popup -||bvmbnr.xyz^$popup -||bwredir.com^$popup -||bxsk.site^$popup -||byvngx98ssphwzkrrtsjhnbyz5zss81dxygxvlqd05.com^$popup -||byvue.com^$popup -||c0me-get-s0me.net^$popup -||c0nect.com^$popup -||c43a3cd8f99413891.com^$popup -||cadlsyndicate.com^$popup -||caeli-rns.com^$popup -||cagothie.net^$popup -||calltome.net^$popup -||callyourinformer.com^$popup -||calvali.com^$popup -||camptrck.com^$popup -||cams.com/go/$popup -||camscaps.net^$popup -||candyoffers.com^$popup -||candyprotected.com^$popup -||canopusacrux.com^$popup -||capableimpregnablehazy.com^$popup -||captivatepestilentstormy.com^$popup -||careerjournalonline.com^$popup -||caresspincers.com^$popup -||casefyparamos.com^$popup -||casino.betsson.com^$popup -||casiyouaffiliates.com^$popup -||casumoaffiliates.com^$popup -||catchtheclick.com^$popup -||catsnbootsncats2020.com^$popup -||catukhyistke.info^$popup -||caulisnombles.top^$popup -||cauthaushoas.com^$popup -||cautionpursued.com^$popup -||cavecoat.top^$popup -||cbdedibles.site^$popup -||cbdzone.online^$popup -||cddtsecure.com^$popup -||cdn4ads.com^$popup -||cdnativepush.com^$popup -||cdnondemand.org^$popup -||cdnquality.com^$popup -||cdntechone.com^$popup -||cdrvrs.com^$popup -||celeb-trends-gossip.com^$popup -||celeritascdn.com^$popup -||certainlydisparagewholesome.com^$popup -||certaintyurnincur.com^$popup -||cgeckmydirect.biz^$popup -||chaeffulace.com^$popup -||chaifortou.net^$popup -||chaintopdom.nl^$popup -||charedecrus.top^$popup -||charmingblur.com^$popup -||chaunsoops.net^$popup -||cheap-jewelry-online.com^$popup -||check-out-this.site^$popup -||check-this-match.com^$popup -||check-tl-ver-12-3.com^$popup -||check-tl-ver-294-3.com^$popup -||checkcdn.net^$popup -||checkluvesite.site^$popup -||cheerfullybakery.com^$popup -||chetchoa.com^$popup -||chicks4date.com^$popup -||chiglees.com^$popup -||chikaveronika.com^$popup -||childishenough.com^$popup -||chiltemeles.life^$popup -||chirtooxsurvey.top^$popup -||chl7rysobc3ol6xla.com^$popup -||choiceencounterjackson.com^$popup -||chooxaur.com^$popup -||choseing.com^$popup -||choto.xyz^$popup -||choudairtu.net^$popup -||chouthep.net^$popup -||chpadblock.com^$popup -||chrantary-vocking.com^$popup -||chrisrespectivelynostrils.com^$popup -||chrysostrck.com^$popup -||chultoux.com^$popup -||chylifycrisis.top^$popup -||cigaretteintervals.com^$popup -||cimeterbren.top^$popup -||cipledecline.buzz^$popup -||circumstantialeltondirtiness.com^$popup -||civadsoo.net^$popup -||civilizationthose.com^$popup -||ciwhacheho.pro^$popup -||cjewz.com^$popup -||ckre.net^$popup -||clbanners16.com^$popup -||clbjmp.com^$popup -||clckpbnce.com^$popup -||clcktrck.com^$popup -||cld5r.com^$popup -||clean-1-clean.club^$popup -||clean-blocker.com^$popup -||clean-browsing.com^$popup -||cleanmypc.click^$popup -||cleantrafficrotate.com^$popup -||cleavepreoccupation.com^$popup -||cleftmeter.com^$popup -||clentrk.com^$popup -||clerkrevokesmiling.com^$popup -||click-cdn.com^$popup -||clickalinks.xyz^$popup -||clickbank.net/*offer_id=$popup -||clickdaly.com^$popup -||clickfilter.co^$popup -||clickfuse.com^$popup -||clickmetertracking.com^$popup -||clickmobad.net^$popup -||clickppcbuzz.com^$popup -||clickprotects.com^$popup -||clickpupbit.com^$popup -||clickredirection.com^$popup -||clicks4tc.com^$popup -||clicksgear.com^$popup -||clicksondelivery.com^$popup -||clicksor.com^$popup -||clicksor.net^$popup -||clicktripz.com^$popup -||clicktrixredirects.com^$popup -||clicktroute.com^$popup -||clickwork7secure.com^$popup -||clictrck.com^$popup -||cliffaffectionateowners.com^$popup -||clixcrafts.com^$popup -||clkads.com^$popup -||clkcln.com^$popup -||clkfeed.com^$popup -||clkmon.com^$popup -||clkpback3.com^$popup -||clkrev.com^$popup -||clobberprocurertightwad.com^$popup -||clodsplit.com^$popup -||cloisonprecool.uno^$popup -||clorec2.net^$popup -||closeupclear.top^$popup -||cloudlessjimarmpit.com^$popup -||cloudpsh.top^$popup -||cloudtrack-camp.com^$popup -||cloudtraff.com^$popup -||cloudvideosa.com^$popup -||clumsyshare.com^$popup -||cm-trk2.com^$popup -||cmllk2.info^$popup -||cmpgns.net^$popup -||cms100.xyz^$popup -||cmtrkg.com^$popup -||cn-rtb.com^$popup -||cn846.com^$popup -||cngcpy.com^$popup -||co5457chu.com^$popup -||code4us.com^$popup -||codedexchange.com^$popup -||codeonclick.com^$popup -||coefficienttolerategravel.com^$popup -||coffee2play.com^$popup -||cogentpatientmama.com^$popup -||cogenttriprepel.com^$popup -||cognitionmesmerize.com^$popup -||cokepompositycrest.com^$popup -||coldflownews.com^$popup -||colmcweb.com^$popup -||colonistnobilityheroic.com^$popup -||colossalanswer.com^$popup -||com-wkejf32ljd23409system.net^$popup -||combineencouragingutmost.com^$popup -||come-get-s0me.com^$popup -||come-get-s0me.net^$popup -||comemumu.info^$popup -||commodityallengage.com^$popup -||compassionaterough.pro^$popup -||complementimpassable.com^$popup -||conceitslidpredicate.com^$popup -||concentrationmajesticshoot.com^$popup -||concord.systems^$popup -||condles-temark.com^$popup -||condolencessumcomics.com^$popup -||conetizable.com^$popup -||connexity.net^$popup -||conqueredallrightswell.com^$popup -||consmo.net^$popup -||constellationdelightfulfull.com^$popup -||constructbrought.com^$popup -||constructpreachystopper.com^$popup -||content-loader.com^$popup -||contentabc.com^$popup,third-party -||continue-installing.com^$popup -||contradictionclinch.com^$popup -||convenientcertificate.com^$popup -||convertmb.com^$popup -||coochhastier.top^$popup -||coogauwoupto.com^$popup -||cooljony.com^$popup -||cooloffer.cfd^$popup -||coolserving.com^$popup -||cooperativechuckledhunter.com^$popup -||copemorethem.live^$popup -||cophypserous.com^$popup -||copperyungka.top^$popup -||cor8ni3shwerex.com^$popup -||cordinghology.info^$popup -||correlationcocktailinevitably.com^$popup -||correry.com^$popup -||coticoffee.com^$popup -||countertrck.com^$popup -||countvouchers.com^$popup -||countypuddleillusion.com^$popup -||cpalabtracking.com^$popup -||cpaoffers.network^$popup -||cpasbien.cloud^$popup -||cpayard.com^$popup -||cpm20.com^$popup -||cpmclktrk.online^$popup -||cpmterra.com^$popup -||cpvadvertise.com^$popup -||cpvlabtrk.online^$popup -||cpxdeliv.com^$popup -||cr-brands.net^$popup -||craftsmanvolleyballhist.com^$popup -||crazyad.net^$popup -||crbbgate.com^$popup -||crbck.link^$popup -||crdefault.link^$popup -||crdefault1.com^$popup -||cretgate.com^$popup -||crevicedepressingpumpkin.com^$popup -||crisp-freedom.com^$popup -||crjpgate.com^$popup -||crjpingate.com^$popup -||crjugate.com^$popup -||crockuncomfortable.com^$popup -||crt.livejasmin.com^$popup -||cryorganichash.com^$popup -||crystal-blocker.com^$popup -||css-load.com^$popup -||ctosrd.com^$popup -||cuddlethehyena.com^$popup -||cudgeletc.com^$popup -||cuevastrck.com^$popup -||cullemple-motline.com^$popup -||curbimpress.com^$popup -||curbneighbourbeefy.com^$popup -||curvyalpaca.cc^$popup -||cvastico.com^$popup -||cwn0drtrk.com^$popup -||cyan92010.com^$popup -||cyber-guard.me^$popup -||cyberlink.pro^$popup -||cybkit.com^$popup -||cypressreel.com^$popup -||czh5aa.xyz^$popup -||d0p21g2fep.com^$popup -||dadsats.com^$popup -||dagnar.com^$popup -||daichoho.com^$popup -||dailyc24.com^$popup -||dailychronicles2.xyz^$popup -||daizoode.com^$popup -||dakjddjerdrct.online^$popup -||dalyio.com^$popup -||dalymix.com^$popup -||dalysb.com^$popup -||dalysh.com^$popup -||dalysv.com^$popup -||daredcoil.com^$popup -||dark-reader.com^$popup -||darksincenightclub.com^$popup -||darsell.life^$popup -||dasfelynsaterr.win^$popup -||data-px.services^$popup -||datatechdrift.com^$popup -||datatechone.com^$popup -||date-4-fuck.com^$popup -||datedate.today^$popup -||dateguys.online^$popup -||datelinkage.top^$popup -||datewhisper.life^$popup -||datherap.xyz^$popup -||datingkoen.site^$popup -||datingstyle.top^$popup -||datingtoday.top^$popup -||datingtorrid.top^$popup -||daughterinlawrib.com^$popup -||dawirax.com^$popup -||dblueclaockbro.info^$popup -||dc-feed.com^$popup -||dddomainccc.com^$popup -||debaucky.com^$popup -||decencyjessiebloom.com^$popup -||deckedsi.com^$popup -||declareave.com^$popup -||decorationproducer.com^$popup -||dedating.online^$popup -||dedispot.com^$popup -||deebcards-themier.com^$popup -||deeperhundredpassion.com^$popup -||deephicy.net^$popup -||defas.site^$popup -||defendsrecche.top^$popup -||defenseneckpresent.com^$popup -||deghooda.net^$popup -||deleterasks.digital^$popup -||deline-sunction.com^$popup -||deliverydom.com^$popup -||deloplen.com^$popup -||deloton.com^$popup -||dendrito.name^$popup -||denza.pro^$popup -||depirsmandk5.com^$popup -||derevya2sh8ka09.com^$popup -||desertsutilizetopless.com^$popup -||designsrivetfoolish.com^$popup -||deskfrontfreely.com^$popup -||desperationembassy.com^$popup -||detentionquasipairs.com^$popup -||detinrubbing.com^$popup -||devilnonamaze.com^$popup -||dexpredict.com^$popup -||deyubo.uno^$popup -||dfvlaoi.com^$popup -||di7stero.com^$popup -||dicinging.co.in^$popup -||dictatepantry.com^$popup -||diffusedpassionquaking.com^$popup -||difice-milton.com^$popup -||digitaldsp.com^$popup -||dilruwha.net^$popup -||dinerbreathtaking.com^$popup -||dingingmaat.top^$popup -||dipusdream.com^$popup -||directcpmfwr.com^$popup -||directcpmrev.com^$popup -||directdexchange.com^$popup -||directrev.com^$popup -||directtrck.com^$popup -||directuklyecon.pics^$popup -||disappearingassurance.com^$popup -||disillusionromeearlobe.com^$popup -||disingenuousfortunately.com^$popup -||dispatchfeed.com^$popup -||displayvertising.com^$popup -||dissipatebackyarduncle.com^$popup -||distantnews.com^$popup -||distressedsoultabloid.com^$popup -||divergeimperfect.com^$popup -||divertbywordinjustice.com^$popup -||divorceseed.com^$popup -||djfiln.com^$popup -||dl-protect.net^$popup -||dlmate15.online^$popup -||dlstngulshedates.net^$popup -||dmeukeuktyoue.info^$popup -||dmiredindeed.com^$popup -||dmzjmp.com^$popup -||dnckawxatc.com^$popup -||doaipomer.com^$popup -||doct-umb.org^$popup -||doctorpost.net^$popup -||doddymetaled.space^$popup -||dog-realtimebid.org^$popup -||dolatiaschan.com^$popup -||dolohen.com^$popup -||dompeterapp.com^$popup -||donecperficiam.net^$popup -||donemagbuy.live^$popup -||donkstar1.online^$popup -||donkstar2.online^$popup -||dooloust.net^$popup -||doormanbafflemetal.com^$popup -||doostozoa.net^$popup -||dopaleads.com^$popup -||dopansearor.com^$popup -||dope.autos^$popup -||dormitoryreverend.com^$popup -||doruffleton.com^$popup -||doruffletr.com^$popup -||doscarredwi.org^$popup -||dosliggooor.com^$popup -||dotchaudou.com^$popup -||doubleadserve.com^$popup -||doubleclick.net^$popup -||doublepimp.com^$popup -||douglasjamestraining.com^$popup -||down-paradise.com^$popup -||down1oads.com^$popup -||download-adblock-zen.com^$popup -||download-adblock360.com^$popup -||download-file.org^$popup -||download-performance.com^$popup -||download-ready.net^$popup -||downloadboutique.com^$popup -||downloading-extension.com^$popup -||downloadoffice2010.org^$popup -||downloadthesefile.com^$popup -||downlon.com^$popup -||dowtyler.com^$popup -||dradvice.in^$popup -||dragfault.com^$popup -||dragnag.com^$popup -||drawerenter.com^$popup -||drawingsingmexican.com^$popup -||drctcldfe.com^$popup -||drctcldfefwr.com^$popup -||drctcldff.com^$popup -||drctcldfffwr.com^$popup -||dreamteamaffiliates.com^$popup -||drearypassport.com^$popup -||dressingdedicatedmeeting.com^$popup -||dribbleads.com^$popup -||drinkscormac.website^$popup -||droppalpateraft.com^$popup -||drsmediaexchange.com^$popup -||dsp.wtf^$popup -||dsp5stero.com^$popup -||dspultra.com^$popup -||dsstrk.com^$popup -||dstimaariraconians.info^$popup -||dsxwcas.com^$popup -||dtssrv.com^$popup -||dtx.click^$popup -||dubzenom.com^$popup -||ducubchooa.com^$popup -||dugothitachan.com^$popup -||dukirliaon.com^$popup -||dulativergs.com^$popup -||dustratebilate.com^$popup -||dwightadjoining.com^$popup -||dynsrvdea.com^$popup -||dynsrvtbg.com^$popup -||dynsrvwer.com^$popup -||dyptanaza.com^$popup -||dzhjmp.com^$popup -||dzienkudrow.com^$popup -||e335udnv6drg78b7.com^$popup -||e702fa7de9d35c37.com^$popup -||eabids.com^$popup -||eacdn.com^$popup -||ealeo.com^$popup -||eanddescri.com^$popup -||eaoueopa.com^$popup -||earandmarketing.com^$popup -||earlinessone.xyz^$popup -||easelgivedolly.com^$popup -||eastfeukufu.info^$popup -||eastfeukufunde.com^$popup -||eastrk-dn.com^$popup -||easyads28.mobi^$popup -||easyfrag.org^$popup -||easykits.org^$popup -||easymrkt.com^$popup -||eatasesetitoefa.info^$popup -||eavesofefinegoldf.info^$popup -||eclkmpsa.com^$popup -||econsistentlyplea.com^$popup -||ecrwqu.com^$popup -||ecusemis.com^$popup -||edalloverwiththinl.info^$popup -||edchargina.pro^$popup -||editneed.com^$popup -||edttmar.com^$popup -||eedsaung.net^$popup -||eegeeglou.com^$popup -||eehuzaih.com^$popup -||eergortu.net^$popup -||eessoong.com^$popup -||eetognauy.net^$popup -||effaceecho.com^$popup -||effectivecpmcontent.com^$popup -||effectiveperformancenetwork.com^$popup -||egazedatthe.xyz^$popup -||egmyz.com^$popup -||egretswamper.com^$popup -||eh0ag0-rtbix.top^$popup -||eighteenderived.com^$popup -||eiteribesshaints.com^$popup -||ejuiashsateampl.info^$popup -||elephant-ads.com^$popup -||elizathings.com^$popup -||elltheprecise.org^$popup -||elsewherebuckle.com^$popup -||elvermowed.uno^$popup -||embodimentpronounrunway.com^$popup -||emeraldhecticteapot.com^$popup -||emonito.xyz^$popup -||emotionallyhemisphere.com^$popup -||emotot.xyz^$popup -||emperilchilies.top^$popup -||employmentsuppressedbeautiful.com^$popup -||emumuendaku.info^$popup -||encroachsnortvarnish.com^$popup -||endymehnth.info^$popup -||eneverals.biz^$popup -||engagementdepressingseem.com^$popup -||enlightencentury.com^$popup -||enloweb.com^$popup -||enoneahbu.com^$popup -||enoneahbut.org^$popup -||entainpartners.com^$popup,third-party -||entjgcr.com^$popup -||entlyhaveb.autos^$popup -||entry-system.xyz^$popup -||entterto.com^$popup -||eofst.com^$popup -||eonsmedia.com^$popup -||eontappetito.com^$popup -||eoveukrnme.info^$popup -||epicgameads.com^$popup -||eptougry.net^$popup -||equilibriumindifferentsoak.com^$popup -||era67hfo92w.com^$popup -||erconditingde.info^$popup -||erdecisesgeorg.info^$popup -||ereallywasnoth.com^$popup -||errumoso.xyz^$popup -||ertewqas.net^$popup -||ertewqas.org^$popup -||eshkol.io^$popup -||eshkol.one^$popup -||eskimi.com^$popup -||eslp34af.click^$popup -||estimatedrick.com^$popup -||esumedadele.info^$popup -||ethicalpastime.com^$popup -||ettilt.com^$popup -||eucli-czt.com^$popup -||eudstudio.com^$popup -||eulal-cnr.com^$popup -||evaporateahead.com^$popup -||evasionseptemberbee.com^$popup -||eventfulknights.com^$popup -||eventsbands.com^$popup -||eventucker.com^$popup -||ever8trk.com^$popup -||ewesmedia.com^$popup -||ewhareey.com^$popup -||ewoodandwaveo.com^$popup -||exaltationinsufficientintentional.com^$popup -||exbuggishbe.info^$popup -||excellingvista.com^$popup -||exclkplat.com^$popup -||excretekings.com^$popup -||exdynsrv.com^$popup -||exemptrequest.com^$popup -||exhaustfirstlytearing.com^$popup -||exhauststreak.com^$popup -||existenceassociationvoice.com^$popup -||exnesstrack.com^$popup -||exoads.click^$popup -||exoclick.com^$popup -||exosrv.com^$popup -||expdirclk.com^$popup -||experimentalconcerningsuck.com^$popup -||explorads.com^$popup,third-party -||explore-site.com^$popup -||explorefast-1.com^$popup -||explorefast-2.com^$popup -||expmediadirect.com^$popup -||exporder-patuility.com^$popup -||exrtbsrv.com^$popup -||extension-ad.com^$popup -||extension-install.com^$popup -||extensions-media.com^$popup -||extensionworthwhile.com^$popup -||extentaccreditedinsensitive.com^$popup -||externalfavlink.com^$popup -||extractdissolve.com^$popup -||extractionatticpillowcase.com^$popup -||exxaygm.com^$popup -||eyauknalyticafra.info^$popup -||ezadblocker.com^$popup -||ezcgojaamg.com^$popup -||ezdownloadpro.info^$popup -||ezhefg9gbhgh10.com^$popup -||ezmob.com^$popup -||ezyenrwcmo.com^$popup -||f5v1x3kgv5.com^$popup -||facilitatevoluntarily.com^$popup -||fackeyess.com^$popup -||fadssystems.com^$popup -||fadszone.com^$popup -||failingaroused.com^$popup -||faiverty-station.com^$popup -||familyborn.com^$popup -||fapmeth.com^$popup -||fapping.club^$popup -||farawayreel.com^$popup -||fardasub.xyz^$popup -||farmhumor.host^$popup -||fast-redirecting.com^$popup -||fastdlr.com^$popup -||fastdntrk.com^$popup -||fastincognitomode.com^$popup -||fastlnd.com^$popup -||fatstepn.click^$popup -||fbmedia-bls.com^$popup -||fbmedia-ckl.com^$popup -||fdelphaswcealifornica.com^$popup -||feastoffortuna.com^$popup -||feed-xml.com^$popup -||feedfinder23.info^$popup -||feedyourheadmag.com^$popup -||feelsoftgood.info^$popup -||feignthat.com^$popup -||felingual.com^$popup -||felipby.live^$popup -||femvxitrquzretxzdq.info^$popup -||fenacheaverage.com^$popup -||fer2oxheou4nd.com^$popup -||ferelatedmothes.com^$popup -||feuageepitoke.com^$popup -||fewrfie.com^$popup -||fhserve.com^$popup -||fifteenthhardboiledbanker.com^$popup -||fiinnancesur.com^$popup -||filestube.com^$popup,third-party -||fillingimpregnable.com^$popup -||finalice.net^$popup -||finance-hot-news.com^$popup -||findanonymous.com^$popup -||findbetterresults.com^$popup -||findpartner.life^$popup -||findslofty.com^$popup -||finreporter.net^$popup -||firnebmike.live^$popup -||firstclass-download.com^$popup -||fitcenterz.com^$popup -||fitsazx.xyz^$popup -||fittingcentermonday.com^$popup -||fittingcentermondaysunday.com^$popup -||fivb-downloads.org^$popup -||fivetrafficroads.com^$popup -||fixespreoccupation.com^$popup -||fla4n6ne7r8ydcohcojnnor.com^$popup -||flairadscpc.com^$popup -||flamebeard.top^$popup -||flashymass.com^$popup -||flelgwe.site^$popup -||flimmerscabish.com^$popup -||flingforyou.com^$popup -||floatingbile.com^$popup -||flowerdicks.com^$popup -||floweryduck.cc^$popup -||flowln.com^$popup -||flrdra.com^$popup -||flushedheartedcollect.com^$popup -||flyingadvert.com^$popup -||focuusing.com^$popup -||fodsoack.com^$popup -||foldingclassified.com^$popup -||fontdeterminer.com^$popup -||for-j.com^$popup -||forarchenchan.com^$popup -||forasmum.live^$popup -||forazelftor.com^$popup -||forcealetell.com^$popup -||forcingclinch.com^$popup -||forflygonom.com^$popup -||forgotingolstono.com^$popup -||forooqso.tv^$popup -||forthdigestive.com^$popup -||fortyphlosiona.com^$popup -||forzubatr.com^$popup -||fostereminent.com^$popup -||foulfurnished.com^$popup -||fourwhenstatistics.com^$popup -||foxqck.com^$popup -||fpctraffic3.com^$popup -||fpgedsewst.com^$popup -||fpukxcinlf.com^$popup -||fralstamp-genglyric.icu^$popup -||fraudholdingpeas.com^$popup -||free3dgame.xyz^$popup -||freeevpn.info^$popup -||freegamefinder.com^$popup -||freehookupaffair.com^$popup -||freeprize.org^$popup -||freetrckr.com^$popup -||freshleads.pro^$popup -||freshpops.net^$popup -||frestlinker.com^$popup -||frettedmalta.top^$popup -||frictiontypicalsecure.com^$popup -||friendlyduck.com^$popup -||friendshipconcerning.com^$popup -||fronthlpr.com^$popup -||fronthlpric.com^$popup -||frouzyboronia.top^$popup -||frtya.com^$popup -||frtyb.com^$popup -||frtye.com^$popup -||fstsrv.com^$popup -||fstsrv2.com^$popup -||fstsrv5.com^$popup -||fstsrv6.com^$popup -||fstsrv8.com^$popup -||fstsrv9.com^$popup -||ftte.xyz^$popup -||fudukrujoa.com^$popup -||fugcgfilma.com^$popup -||functionsprecision.com^$popup -||fundsbe.com^$popup -||funmatrix.net^$popup -||furnacemanagerstates.com^$popup -||furstraitsbrowse.com^$popup -||fuse-cloud.com^$popup -||fusttds.xyz^$popup -||fuzzyincline.com^$popup -||fwbntw.com^$popup -||fyglovilo.pro^$popup -||g0wow.net^$popup -||g2afse.com^$popup -||g33ktr4ck.com^$popup -||gadlt.nl^$popup -||gadslife.com^$popup -||gadssystems.com^$popup -||galaxypush.com^$popup -||gallonranchwhining.com^$popup -||galotop1.com^$popup -||gamdom.com/?utm_source=$popup -||gameengagedthen.com^$popup -||gaming-adult.com^$popup -||gamingonline.top^$popup -||gammamkt.com^$popup -||gandmotivat.info^$popup -||gandmotivatin.info^$popup -||ganja.com^$popup,third-party -||garmentsdraught.com^$popup -||gb1aff.com^$popup -||gdecordingholo.info^$popup -||gdmconvtrck.com^$popup -||geegleshoaph.com^$popup -||generalebad.xyz^$popup -||genialsleptworldwide.com^$popup -||geniusdexchange.com^$popup -||genuinelybruises.com^$popup -||geotrkclknow.com^$popup -||get-browseprotection.com^$popup -||get-gx.net^$popup -||get-link.xyz^$popup -||get-me-wow.in^$popup -||getalinkandshare.com^$popup -||getalltraffic.com^$popup -||getarrectlive.com^$popup -||getgx.net^$popup -||getmatchedlocally.com^$popup -||getmyads.com^$popup -||getnomadtblog.com^$popup -||getonlineuserprotection.com^$popup -||getoverenergy.com^$popup -||getrunbestlovemy.info^$popup -||getrunkhomuto.info^$popup -||getshowads.com^$popup -||getsmartyapp.com^$popup -||getsthis.com^$popup -||getsurferprotector.com^$popup -||getthisappnow.com^$popup -||gettingtoe.com^$popup -||gettopple.com^$popup -||getvideoz.click^$popup -||getyourtool.co^$popup -||gfdfhdh5t5453.com^$popup -||gfstrck.com^$popup -||gggtrenks.com^$popup -||ghostnewz.com^$popup -||giftedbrevityinjured.com^$popup -||gillstaught.com^$popup -||girlstaste.life^$popup -||gkrtmc.com^$popup -||gladsince.com^$popup -||glassmilheart.com^$popup -||glasssmash.site^$popup -||glauvoob.com^$popup -||gleagainedam.info^$popup -||gleeglis.net^$popup -||gleeneep.com^$popup -||glersakr.com^$popup -||glersooy.net^$popup -||glimpsemankind.com^$popup -||glixaing.com^$popup -||glizauvo.net^$popup -||globaladblocker.com^$popup -||globaladblocker.net^$popup -||globeofnews.com^$popup -||globwo.online^$popup -||gloogruk.com^$popup -||glorifyfactor.com^$popup -||glovesusage.com^$popup -||glowingnews.com^$popup -||gloytrkb.com^$popup -||glsfreeads.com^$popup -||glugherg.net^$popup -||gluxouvauure.com^$popup -||gml-grp.com^$popup -||gmxvmvptfm.com^$popup -||go-cpa.click^$popup -||go-srv.com^$popup -||go-to-website.com^$popup -||go2affise.com^$popup -||go2linkfast.com^$popup -||go2offer-1.com^$popup -||go2oh.net^$popup -||go2rph.com^$popup -||goads.pro^$popup -||goaffmy.com^$popup -||goaserv.com^$popup -||goblocker.xyz^$popup -||gobreadthpopcorn.com^$popup -||godacepic.com^$popup -||godpvqnszo.com^$popup -||gogglerespite.com^$popup -||gold2762.com^$popup -||golochmenacer.com^$popup -||gomo.cc^$popup -||goodvpnoffers.com^$popup -||goosebomb.com^$popup -||gophykopta.com^$popup -||gorillatrk.com^$popup -||gositego.live^$popup -||gosoftwarenow.com^$popup -||got-to-be.com^$popup -||gotibetho.pro^$popup -||gotjobbs.com^$popup -||goto1x.me^$popup -||gotohouse1.club^$popup -||gotoplaymillion.com^$popup -||gotrackier.com^$popup -||governessmagnituderecoil.com^$popup -||grabclix.com^$popup -||graduatewonderentreaty.com^$popup -||granddaughterrepresentationintroduce.com^$popup -||grandmotherfoetussadly.com^$popup -||grapseex.com^$popup -||gratifiedmatrix.com^$popup -||grauglak.com^$popup -||greatbonushere.top^$popup -||greatdexchange.com^$popup -||greatlifebargains2024.com^$popup -||greatvpnoffers.com^$popup -||grecmaru.com^$popup -||green-resultsbid.com^$popup -||green-search-engine.com^$popup -||greenlinknow.com^$popup -||greenplasticdua.com^$popup -||greenrecru.info^$popup -||greewepi.net^$popup -||grefutiwhe.com^$popup -||grewquartersupporting.com^$popup -||greygrid.net^$popup -||groininsightclaimed.com^$popup -||gronsoad.com^$popup -||groupyammer.top^$popup -||grown-zero-breeze-belong.xyz^$popup -||grtya.com^$popup -||grtyj.com^$popup -||grunoaph.net^$popup -||gruntremoved.com^$popup -||grupif.com^$popup -||grygrothapi.pro^$popup -||gsecurecontent.com^$popup -||gsniper2.com^$popup -||gtbdhr.com^$popup -||guardedrook.cc^$popup -||guerrilla-links.com^$popup -||guesswhatnews.com^$popup -||guestblackmail.com^$popup -||guldenstypps.top^$popup -||gunreset.com^$popup -||guro2.com^$popup -||gussiemarkup.life^$popup -||gvcaffiliates.com^$popup -||h0w-t0-watch.net^$popup -||h74v6kerf.com^$popup -||habovethecit.info^$popup -||habovethecityon.info^$popup -||hadesleta.com^$popup -||hairdresserbayonet.com^$popup -||hallucinatediploma.com^$popup -||hallucinatepromise.com^$popup -||hamestoyman.website^$popup -||hammerhewer.top^$popup -||handbaggather.com^$popup -||handgripvegetationhols.com^$popup -||handwritingnomad.com^$popup -||hangnailamplify.com^$popup -||harassmentgrowl.com^$popup -||harlequinsleepyfrog.xyz^$popup -||harmonypix.com^$popup -||harshlygiraffediscover.com^$popup -||hatsamevill.org^$popup -||hatwasallokmv.info^$popup -||hauchiwu.com^$popup -||haveflat.com^$popup -||havegrosho.com^$popup -||hazoopso.net^$popup -||hbloveinfo.com^$popup -||hdcommunity.online^$popup -||headirtlseivi.org^$popup -||headlightgranulatedflee.com^$popup -||heappyrinceas.info^$popup -||heavenfull.com^$popup -||heavenly-landscape.com^$popup -||heedenglish.com^$popup -||heglosuty.com^$popup -||hehighursoo.com^$popup -||hentaifap.land^$popup -||heptix.net^$popup -||heratheacle.com^$popup -||hereditaryplead.com^$popup -||heremployeesihi.info^$popup -||heresanothernicemess.com^$popup -||herew-lmq.com^$popup -||hermichermicfurnished.com^$popup -||hermitmeaninglessconsequences.com^$popup -||hesoorda.com^$popup -||hespe-bmq.com^$popup -||hetadinh.com^$popup -||hetaint.com^$popup -||hetapus.com^$popup -||hetartwg.com^$popup -||hetarust.com^$popup -||hetaruvg.com^$popup -||hetaruwg.com^$popup -||hewmjifrn4gway.com^$popup -||hexovythi.pro^$popup -||hh-btr.com^$popup -||hhbypdoecp.com^$popup -||hhiswingsandm.info^$popup -||hhourtrk2.com^$popup -||hibids10.com^$popup -||hicpm10.com^$popup -||hiend.xyz^$popup -||higgiens23c5l8asfrk.com^$popup -||highcpmgate.com^$popup -||highcpmrevenuenetwork.com^$popup -||highercldfrev.com^$popup -||higheurest.com^$popup -||highmaidfhr.com^$popup -||highperformancecpm.com^$popup -||highperformancecpmgate.com^$popup -||highperformancecpmnetwork.com^$popup -||highperformancedformats.com^$popup -||highperformancegate.com^$popup -||highrevenuecpmnetwork.com^$popup -||highrevenuegate.com^$popup -||highwaycpmrevenue.com^$popup -||hillhousehomes.co^$popup -||hilltopads.com^$popup -||hilltopads.net^$popup -||hilove.life^$popup -||hiltonbett.com^$popup -||himhedrankslo.xyz^$popup -||himunpractical.com^$popup -||hinaprecent.info^$popup -||hinkhimunpractical.com^$popup -||hintonjour.com^$popup -||hipersushiads.com^$popup -||hissoverout.com^$popup -||hisurnhuh.com^$popup -||hitcpm.com^$popup -||hitopadxdz.xyz^$popup -||hixvo.click^$popup -||hnrgmc.com^$popup -||hoa44trk.com^$popup -||hoaxbasesalad.com^$popup -||hoctor-pharity.xyz^$popup -||hoglinsu.com^$popup -||hognaivee.com^$popup -||hogqmd.com^$popup -||holahupa.com^$popup -||holdsoutset.com^$popup -||homicidalseparationmesh.com^$popup -||honestlyvicinityscene.com^$popup -||hoofexcessively.com^$popup -||hooliganapps.com^$popup -||hooligapps.com^$popup -||hoopbeingsmigraine.com^$popup -||hopelessrolling.com^$popup -||hopghpfa.com^$popup -||horriblysparkling.com^$popup -||horrifieddespair.com^$popup -||hot-growngames.life^$popup -||hotchatdate.com^$popup -||hotchatdirect.com^$popup -||hotplaystime.life^$popup -||hottest-girls-online.com^$popup -||hotwildadult.com^$popup -||howboxmaa.site^$popup -||howboxmab.site^$popup -||howsliferightnow.com^$popup -||howtolosebellyfat.shop^$popup -||hpyjmp.com^$popup -||hqhjjha.net.$popup -||hqhjjha.net^$popup -||hqhjjha.org^$popup -||hqtrk.com^$popup -||hrahdmon.com^$popup -||hrtye.com^$popup -||hrtyh.com^$popup -||hsrvv.com^$popup -||hsrvz.com^$popup -||hstpnetwork.com^$popup -||html-load.com^$popup -||htmonster.com^$popup -||htoptracker11072023.com^$popup -||hubturn.info^$popup -||hue2a.com^$popup -||hue3a.com^$popup -||hueads.com^$popup -||hugregregy.pro^$popup -||huluads.info^$popup -||humandiminutionengaged.com^$popup -||humiliatedvolumepore.com^$popup -||hundredpercentmargin.com^$popup -||hundredscultureenjoyed.com^$popup -||hungryrise.com^$popup -||hurlaxiscame.com^$popup -||hurlmedia.design^$popup -||husezo.uno^$popup -||huskydesigner.pro^$popup -||hxmanga.com^$popup -||hyenadata.com^$popup -||i62e2b4mfy.com^$popup -||iageandinone.com^$popup -||iamadssystems.com^$popup -||ichimaip.net^$popup -||icilytired.com^$popup -||icubeswire.co^$popup -||identifierssadlypreferred.com^$popup -||idescargarapk.com^$popup -||idohethisisathllea.com^$popup -||ifdividemeasuring.com^$popup -||ifdnzact.com^$popup -||ifigent.com^$popup -||ifsnickshriek.click^$popup -||ifsnickshriek.com^$popup -||ignals.com^$popup -||igubet.link^$popup -||ihavelearnat.xyz^$popup -||ikengoti.com^$popup -||ilaterdeallyig.info^$popup -||illegaleaglewhistling.com^$popup -||illuminateinconveniencenutrient.com^$popup -||illuminatelocks.com^$popup -||illusiveremarkstreat.com^$popup -||imaxcash.com^$popup -||imghst-de.com^$popup -||imitrk13.com^$popup -||immigrateskating.com^$popup -||immigrationspiralprosecution.com^$popup -||impactserving.com^$popup -||imperialbattervideo.com^$popup -||imponedbilsh.top^$popup -||impresseastsolo.com^$popup -||impressiveporchcooler.com^$popup -||improvebin.xyz^$popup -||inabsolor.com^$popup -||inaltariaon.com^$popup -||inanityacromia.life^$popup -||inasmedia.com^$popup -||inbrowserplay.com^$popup -||inclk.com^$popup -||incloseoverprotective.com^$popup -||incomprehensibleacrid.com^$popup -||inexperiencedmingle.com^$popup -||infirmaryboss.com^$popup -||inflectionquake.com^$popup -||infodonorbranch.com^$popup -||infopicked.com^$popup -||informcheck.uno^$popup -||infra.systems^$popup -||infuseawee.guru^$popup -||ingablorkmetion.com^$popup -||inhabityoungenter.com^$popup -||initiateheavilycurrentinfo-product.info^$popup -||inlacom.com^$popup -||innardskhats.top^$popup -||inncreasukedrev.info^$popup -||innovid.com^$popup,third-party -||inoradde.com^$popup -||inpagepush.com^$popup -||insectearly.com^$popup -||inshelmetan.com^$popup -||insideofnews.com^$popup -||insigit.com^$popup -||inspiringperiods.com^$popup -||insta-cash.net^$popup -||install-adblocking.com^$popup -||install-check.com^$popup -||instancesflushedslander.com^$popup -||instant-adblock.xyz^$popup -||instantlyshrillblink.com^$popup -||instantpaydaynetwork.com^$popup -||insteadprincipleshearted.com^$popup -||instructoralphabetoverreact.com^$popup -||intab.fun^$popup -||integrityprinciplesthorough.com^$popup -||intentionallyathwart.com^$popup -||intentionscurved.com^$popup -||interclics.com^$popup -||interesteddeterminedeurope.com^$popup -||internewsweb.com^$popup -||internodeid.com^$popup -||interpersonalskillse.info^$popup -||intimidatekerneljames.com^$popup -||intorterraon.com^$popup -||inuedidgmapla.com^$popup -||inumbreonr.com^$popup -||invaderannihilationperky.com^$popup -||investcoma.com^$popup -||investigationsuperbprone.com^$popup -||investing-globe.com^$popup -||inyoketuber.com^$popup -||iociley.com^$popup -||ioffers.icu^$popup -||iogjhbnoypg.com^$popup -||iopiopiop.net^$popup -||iopiopiop.org^$popup -||irkantyip.com^$popup -||ironicnickraspberry.com^$popup -||ironweaver.top^$popup -||irtya.com^$popup -||isawthenews.com^$popup -||iseatheadline.com^$popup -||ismlks.com^$popup -||isohuntx.com/vpn/$popup -||issomeoneinth.info^$popup -||istlnkcl.com^$popup -||itespurrom.com^$popup -||itgiblean.com^$popup -||itnuzleafan.com^$popup -||itponytaa.com^$popup -||itrustzone.site^$popup -||itskiddien.club^$popup -||ittontrinevengre.info^$popup -||ittorchicer.com^$popup -||iutur-ixp.com^$popup -||ivauvoor.net^$popup -||ivpnoffers.com^$popup -||iwanttodeliver.com^$popup -||iwantusingle.com^$popup -||iyfnz.com^$popup -||iyfnzgb.com^$popup -||ja2n2u30a6rgyd.com^$popup -||jaavnacsdw.com^$popup -||jacksonduct.com^$popup -||jaclottens.live^$popup -||jads.co^$popup -||jamchew.com^$popup -||jamminds.com^$popup -||jamstech.store^$popup -||jashautchord.com^$popup -||java8.xyz^$popup -||jawlookingchapter.com^$popup -||jawsspecific.com^$popup -||jaxxenpro.com^$popup -||jeekomih.com^$popup -||jehealis.com^$popup -||jennyunfit.com^$popup -||jennyvisits.com^$popup -||jerboasjourney.com^$popup -||jerimpob.net^$popup -||jerkarmlesspuppy.com^$popup -||jeroud.com^$popup -||jetordinarilysouvenirs.com^$popup -||jewelbeeperinflection.com^$popup -||jfjle4g5l.com^$popup -||jfkc5pwa.world^$popup -||jggegj-rtbix.top^$popup -||jillbuildertuck.com^$popup -||jjcwq.site^$popup -||jlodgings.com^$popup -||jobsonationsing.com^$popup -||jocauzee.net^$popup -||join-admaven.com^$popup -||joinpropeller.com^$popup -||jokingzealotgossipy.com^$popup -||joltidiotichighest.com^$popup -||jomtingi.net^$popup -||josieunethical.com^$popup -||journeyembankmentsubjects.com^$popup -||jpgtrk.com^$popup -||jqtree.com^$popup -||jrpkizae.com^$popup -||jsmentry.com^$popup -||jsmptjmp.com^$popup -||jubsaugn.com^$popup -||juiceadv.com^$popup -||juicyads.com^$popup -||jujaufur.net^$popup -||jukseeng.net^$popup -||julia-liz.com^$popup -||jump-path1.com^$popup -||jump2.top^$popup -||junbi-tracker.com^$popup -||junmediadirect1.com^$popup -||jusbertimla4ke2.com^$popup -||justdating.online^$popup -||justonemorenews.com^$popup -||jutprolificlax.com^$popup -||jutyledu.pro^$popup -||jwalf.com^$popup -||k4umr0wuc.com^$popup -||k8ik878i.top^$popup -||kaigaidoujin.com^$popup -||kakbik.info^$popup -||kamalafooner.space^$popup -||kanoodle.com^$popup -||kappalinks.com^$popup -||karafutem.com^$popup -||karoon.xyz^$popup -||katebugs.com^$popup -||katecrochetvanity.com^$popup -||kaya303.lol^$popup -||keefeezo.net^$popup -||keewoach.net^$popup -||kektds.com^$popup -||kelpysalukis.top^$popup -||kenomal.com^$popup -||kernfatling.top^$popup -||kerumal.com^$popup -||kesimon.com^$popup -||ketheappyrin.com^$popup -||ketingefifortcaukt.info^$popup -||kettakihome.com^$popup -||kgfjrb711.com^$popup -||kgorilla.net^$popup -||kgroundandinte.net^$popup -||kiksajex.com^$popup -||kindredplc.com^$popup -||king3rsc7ol9e3ge.com^$popup -||kingtrck1.com^$popup -||kinitstar.com^$popup -||kinripen.com^$popup -||kirteexe.tv^$popup -||kirujh.com^$popup -||kitchiepreppie.com^$popup -||kityamurlika.com^$popup -||kiwi-offers.com^$popup -||kkjuu.xyz^$popup -||kmisln.com^$popup -||kmyunderthf.info^$popup -||knockoutantipathy.com^$popup -||kocairdo.net^$popup -||kogutcho.net^$popup -||kolkwi4tzicraamabilis.com^$popup -||koogreep.com^$popup -||korexo.com^$popup -||kornbulk1.com^$popup -||koronacineole.life^$popup -||kotikinar2ko8tiki09.com^$popup -||krjxhvyyzp.com^$popup -||ku2d3a7pa8mdi.com^$popup -||ku42hjr2e.com^$popup -||kultingecauyuksehinkitw.info^$popup -||kuno-gae.com^$popup -||kunvertads.com^$popup -||kxnggkh2nj.com^$popup -||l4meet.com^$popup -||lacquerreddeform.com^$popup -||ladiesforyou.net^$popup -||ladrecaidroo.com^$popup -||ladyphapty.com^$popup -||lalofilters.website^$popup -||lamplynx.com^$popup -||lanesusanne.com^$popup -||lanksnail.com^$popup -||laraliadirt.top^$popup -||laserdandelionhelp.com^$popup -||lassampy.com^$popup -||last0nef1le.com^$popup -||lasubqueries.com^$popup -||lataniaembosks.com^$popup -||latheendsmoo.com^$popup -||laughingrecordinggossipy.com^$popup -||lavatorydownybasket.com^$popup -||lavender64369.com^$popup -||lawful-screw.com^$popup -||layerpearls.com^$popup -||lby2kd27c.com^$popup -||leadensought.com^$popup -||leadingservicesintimate.com^$popup -||leadsecnow.com^$popup -||leapretrieval.com^$popup -||leforgotteddisg.info^$popup -||leftoverstatistics.com^$popup -||legendadmiration.com^$popup -||lementwrencespri.info^$popup -||lenkmio.com^$popup -||leonbetvouum.com^$popup -||leoyard.com^$popup -||lepetitdiary.com^$popup -||lephaush.net^$popup -||lesoocma.net^$popup -||letitnews.com^$popup -||letitredir.com^$popup -||letsbegin.online^$popup -||letshareus.com^$popup -||letzonke.com^$popup -||levan-rqw.com^$popup -||leveragetypicalreflections.com^$popup -||liaoptse.net^$popup -||libertystmedia.com^$popup -||lickinggetting.com^$popup -||lickingimprovementpropulsion.com^$popup -||lidsaich.net^$popup -||lifeporn.net^$popup -||lifetimeroyaltybestial.com^$popup -||ligatus.com^$popup -||lighthousemissingdisavow.com^$popup -||lightssyrupdecree.com^$popup -||likedatings.life^$popup -||lilinstall11x.com^$popup -||liliy9aydje10.com^$popup -||limitationvolleyballdejected.com^$popup -||limoners.com^$popup -||liningemigrant.com^$popup -||linkadvdirect.com^$popup -||linkboss.shop^$popup -||linkchangesnow.com^$popup -||linkmepu.com^$popup -||linknotification.com^$popup -||linkonclick.com^$popup -||linkredirect.biz^$popup -||linksprf.com^$popup -||linkwarkop4d.com^$popup -||lipsate.com^$popup -||liquidapprovaltar.com^$popup -||liquidfire.mobi^$popup -||liteappmagazin.com^$popup -||liveadexchanger.com^$popup -||livechatflirt.com^$popup -||liveleadtracking.com^$popup -||livepromotools.com^$popup -||liversely.net^$popup -||livestormy.com^$popup -||livezombymil.com^$popup -||lizebruisiaculi.info^$popup -||ljbwzlmzlzbkm.top^$popup -||lkcoffe.com^$popup -||lkstrck2.com^$popup -||llalo.click^$popup -||llpgpro.com^$popup -||lmalyjywqlolv.top^$popup -||lmn-pou-win.com^$popup -||lmp3.org^$popup -||lnk8j7.com^$popup -||lnkgt.com^$popup -||lnkvv.com^$popup -||lntrigulngdates.com^$popup -||loagoshy.net^$popup -||loaksandtheir.info^$popup -||loazuptaice.net^$popup -||lobimax.com^$popup -||localelover.com^$popup -||locomotiveconvenientriddle.com^$popup -||locooler-ageneral.com^$popup -||lody24.com^$popup -||logicdate.com^$popup -||logicschort.com^$popup -||lone-pack.com^$popup -||loodauni.com^$popup -||looew.club^$popup -||lookandfind.me^$popup -||looksdashboardcome.com^$popup -||looksmart.com^$popup -||lootynews.com^$popup -||lorswhowishe.com^$popup -||losingoldfry.com^$popup -||lostdormitory.com^$popup -||lottingjacks.top^$popup -||lottoleads.com^$popup -||louisedistanthat.com^$popup -||loverevenue.com^$popup -||lovesparkle.space^$popup -||lowrihouston.pro^$popup -||lowseedotr.com^$popup -||lowseelan.com^$popup -||lowtyroguer.com^$popup -||lowtyruntor.com^$popup -||loyeesihighlyreco.info^$popup -||lp247p.com^$popup -||lplimjxiyx.com^$popup -||lptrak.com^$popup -||ltingecauyuksehi.com^$popup -||ltmywtp.com^$popup -||luckiersandia.top^$popup -||luckyads.pro^$popup -||luckyforbet.com^$popup -||lurdoocu.com^$popup -||lurgaimt.net^$popup -||lusinlepading.com^$popup -||luvaihoo.com^$popup -||luxetalks.com^$popup -||lvztx.com^$popup -||lwonclbench.com^$popup -||lxkzcss.xyz^$popup -||lycheenews.com^$popup -||lyconery-readset.com^$popup -||lylydevelope.com^$popup -||lywasnothycanty.info^$popup -||m73lae5cpmgrv38.com^$popup -||m9w6ldeg4.xyz^$popup -||ma3ion.com^$popup -||macan-native.com^$popup -||mafroad.com^$popup -||magicads.nl^$popup -||magmafurnace.top^$popup -||mailerrobands.website^$popup -||majorityevaluatewiped.com^$popup -||makingdevil.com^$popup -||mallettraumatize.com^$popup -||mallur.net^$popup -||maltunfaithfulpredominant.com^$popup -||mamaapparent.com^$popup -||mambkooocango.com^$popup -||mammaldealbustle.com^$popup -||mamoth-deals.com^$popup -||manageoriginalmostinfo-product.info^$popup -||manbycus.com^$popup -||manconsider.com^$popup -||mandantnutter.top^$popup -||manga18sx.com^$popup -||manicurereprimand.com^$popup -||mannehill.com^$popup -||maomaotang.com^$popup -||maper.info^$popup -||maquiags.com^$popup -||marepuffy.com^$popup -||marlierfritt.com^$popup -||marti-cqh.com^$popup -||marvelhuntcountry.com^$popup -||masklink.org^$popup -||massacreintentionalmemorize.com^$popup -||matchjunkie.com^$popup -||matildawu.online^$popup -||mauptaub.com^$popup -||maw5r7y9s9helley.com^$popup -||maxigamma.com^$popup -||maxytrk.com^$popup -||maybejanuarycosmetics.com^$popup -||maymooth-stopic.com^$popup -||maysunown.live^$popup -||mb-npltfpro.com^$popup -||mb01.com^$popup -||mb102.com^$popup -||mb103.com^$popup -||mb104.com^$popup -||mb223.com^$popup -||mb38.com^$popup -||mb57.com^$popup -||mbjrkm2.com^$popup -||mbreviews.info^$popup -||mbstrk.com^$popup -||mbvlmz.com^$popup -||mbvsm.com^$popup -||mcfstats.com^$popup -||mcpuwpush.com^$popup -||mcurrentlysea.info^$popup -||mddsp.info^$popup -||me4track.com^$popup -||meadowaerial.com^$popup -||media-412.com^$popup -||media-servers.net^$popup -||media-serving.com^$popup -||mediamansix.com^$popup -||mediasama.com^$popup -||mediaserf.net^$popup -||mediaxchange.co^$popup -||medicationneglectedshared.com^$popup -||medusaecaptan.com^$popup -||meenetiy.com^$popup -||meetradar.com^$popup -||meetsexygirls.org^$popup -||meetwebclub.com^$popup -||megacot.com^$popup -||megaffiliates.com^$popup -||megdexchange.com^$popup -||memecoins.club^$popup -||memunicate.com^$popup -||mendress.icu^$popup -||menepe.com^$popup -||meofmukindwoul.info^$popup -||merterpazar.com^$popup -||mesqwrte.net^$popup -||messagereceiver.com^$popup -||messenger-notify.digital^$popup -||messenger-notify.xyz^$popup -||meteorclashbailey.com^$popup -||metrica-yandex.com^$popup -||metwandfertile.top^$popup -||mevarabon.com^$popup -||mghkpg.com^$popup -||mgid.com^$popup -||midgetincidentally.com^$popup -||migimsas.net^$popup -||migrantspiteconnecting.com^$popup -||milffinder.live^$popup -||milksquadronsad.com^$popup -||millustry.top^$popup -||mimosaavior.top -||mimosaavior.top^$popup -||mindedcarious.com^$popup -||miniaturecomfortable.com^$popup -||miniglobalcitizens.com^$popup -||mirfakpersei.top^$popup -||mirsuwoaw.com^$popup -||misarea.com^$popup -||mishapideal.com^$popup -||misspkl.com^$popup -||mistakeidentical.com^$popup -||mityneedn.com^$popup -||mk-ads.com^$popup -||mkaff.com^$popup -||mkjsqrpmxqdf.com^$popup -||mlatrmae.net^$popup -||mmpcqstnkcelx.com^$popup -||mnaspm.com^$popup -||mndsrv.com^$popup -||moartraffic.com^$popup -||mob1ledev1ces.com^$popup -||mobileraffles.com^$popup -||mobiletracking.ru^$popup -||mobipromote.com^$popup -||mobmsgs.com^$popup -||mobreach.com^$popup -||mobsuitem.com^$popup -||modescrips.info^$popup -||modificationdispatch.com^$popup -||moilizoi.com^$popup -||moksoxos.com^$popup -||moleconcern.com^$popup -||molypsigry.pro^$popup -||monadvs.com^$popup -||moncoerbb.com^$popup -||monetag.com^$popup -||moneysavinglifehacks.pro^$popup -||monsterofnews.com^$popup -||monutroco.com^$popup -||moodokay.com^$popup -||moonrocketaffiliates.com^$popup -||moralitylameinviting.com^$popup -||morclicks.com^$popup -||mordoops.com^$popup -||more1.biz^$popup -||mosrtaek.net^$popup -||motherhoodlimiteddetest.com^$popup -||motivessuggest.com^$popup -||mountaincaller.top^$popup -||mourny-clostheme.com^$popup -||moustachepoke.com^$popup -||mouthdistance.bond^$popup -||movemeforward.co^$popup -||moveyourbackup.co^$popup -||movfull.com^$popup -||moviemediahub.com^$popup -||moviesflix4k.club^$popup -||moviesflix4k.xyz^$popup -||movingfwd.co^$popup -||mplayeranyd.info^$popup -||mrdzuibek.com^$popup -||mscoldness.com^$popup -||mtwdmk9ic.com^$popup -||mtypitea.net^$popup -||mudfishatabals.com^$popup -||mudflised.com^$popup -||mufflealiases.com^$popup -||mufflerlightsgroups.com^$popup -||mugrikees.com^$popup -||muheodeidsoan.info^$popup -||muletatyphic.com^$popup -||musclyskeely.top^$popup -||mutinousconductdisk.com^$popup -||mutux.cfd^$popup -||muvflix.com^$popup -||muzzlematrix.com^$popup -||mvmbs.com^$popup -||mwoukrkskills.xyz^$popup -||my-promo7.com^$popup -||myadcash.com^$popup -||myadsserver.com^$popup -||myaffpartners.com^$popup -||mybestdc.com^$popup -||mybetterck.com^$popup -||mybetterdl.com^$popup -||mybettermb.com^$popup -||mychecklist4u.com^$popup -||myckdom.com^$popup -||mydailynewz.com^$popup -||myeasetrack.com^$popup -||myemailtracking.com^$popup -||myhugewords.com^$popup -||myhypestories.com^$popup -||myjollyrudder.com^$popup -||mylot.com^$popup -||mynetworkprotector.com^$popup -||myperfect2give.com^$popup -||myreqdcompany.com^$popup -||mysagagame.com^$popup -||mywebsavior.com^$popup -||mywondertrip.com^$popup -||n5rthy.com^$popup -||nabauxou.net^$popup -||nachusfarced.top^$popup -||naggingirresponsible.com^$popup -||naleapprength.xyz^$popup -||namesakeoscilloscopemarquis.com^$popup -||nan0cns.com^$popup -||nancontrast.com^$popup -||nannyamplify.com^$popup -||nanoadexchange.com^$popup -||nanouwho.com^$popup -||nanrumandbac.com^$popup -||naoprj.com^$popup -||nasssmedia.com^$popup -||natallcolumnsto.info^$popup -||nathanaeldan.pro^$popup -||native-track.com^$popup -||natregs.com^$popup -||naveljutmistress.com^$popup -||naxadrug.com^$popup -||nebulouslostpremium.com^$popup -||neptuntrack.com^$popup -||nereu-gdr.com^$popup -||nessainy.net^$popup -||netcpms.com^$popup -||netpatas.com^$popup -||netund.com^$popup -||network.nutaku.net^$popup -||never2never.com^$popup -||neverheartache.com^$popup -||newbluetrue.xyz^$popup -||newbornleasetypes.com^$popup -||newjulads.com^$popup -||newrtbbid.com^$popup -||news-host.net^$popup -||news-place1.xyz^$popup -||news-portals1.xyz^$popup -||news-site1.xyz^$popup -||news-universe1.xyz^$popup -||news-weekend1.xyz^$popup -||newscadence.com^$popup -||newsfortoday2.xyz^$popup -||newsforyourmood.com^$popup -||newsfrompluto.com^$popup -||newsignites.com^$popup -||newslikemeds.com^$popup -||newspopperio.com^$popup -||newstarads.com^$popup -||newstemptation.com^$popup -||newsyour.net^$popup -||newtab-media.com^$popup -||nextoptim.com^$popup -||nextyourcontent.com^$popup -||ngeoziadiyc4hi2e.com^$popup -||ngfruitiesmatc.info^$popup -||ngineet.cfd^$popup -||ngsinspiringtga.info^$popup -||nicatethebene.info^$popup -||nicelyinformant.com^$popup -||nicesthoarfrostsooner.com^$popup -||nicsorts-accarade.com^$popup -||nimrute.com^$popup -||nindscity.com^$popup -||nindsstudio.com^$popup -||ninetyninesec.com^$popup -||niwluvepisj.site^$popup -||noerwe5gianfor19e4st.com^$popup -||nomadsbrand.com^$popup -||nomadsdata.com^$popup -||nomadsfit.com^$popup -||nominalclck.name^$popup -||nominalreverend.com^$popup -||nominatecambridgetwins.com^$popup -||noncepter.com^$popup -||nonecoffeehousesuspicious.com^$popup -||nonremid.com^$popup -||nonspewpa.com^$popup -||noolt.com^$popup -||nopolicycrea.info^$popup -||nossairt.net^$popup -||nothingnightingalejuly.com^$popup -||notifications-update.com^$popup -||notifpushnext.net^$popup -||notifpushnow.com^$popup -||notifsendback.com^$popup -||notiftravel.com^$popup -||nougacoush.com^$popup -||noughttrustthreshold.com^$popup -||november-sin.com^$popup -||novibet.partners^$popup -||novitrk7.com^$popup -||novitrk8.com^$popup -||npcad.com^$popup -||nreg.world^$popup -||ns003.com^$popup -||nsmpydfe.net^$popup -||nstoodthestatu.info^$popup -||nsultingcoe.net^$popup -||nsw2u.com^$popup -||ntoftheusysia.info^$popup -||ntoftheusysianedt.info^$popup -||ntsiwoulukdli.org^$popup -||ntvpforever.com^$popup -||nudgercoptine.life^$popup -||nudgeworry.com^$popup -||nukeluck.net^$popup -||numbertrck.com^$popup -||nurewsawaninc.info^$popup -||nutaku.net/signup/$popup -||nutchaungong.com^$popup -||nxtpsh.com^$popup -||nyadra.com^$popup -||nylonnickel.xyz^ -||nylonnickel.xyz^$popup -||nymphdate.com^$popup -||o18.click^$popup -||o333o.com^$popup -||oackoubs.com^$popup -||oagnolti.net^$popup -||oalsauwy.net^$popup -||oaphoace.net^$popup -||oataltaul.com^$popup -||obduratecommence.com^$popup -||obituaryfuneral.com^$popup -||objectionsdomesticatednagging.com^$popup -||oblongravenousgosh.com^$popup -||oblongseller.com^$popup -||obnarium.com^$popup -||oboletcystin.website^$popup -||obsidiancutter.top^$popup -||obtrusiveperhaps.com^$popup -||oclaserver.com^$popup -||ocloud.monster^$popup -||ocmhood.com^$popup -||ocoaksib.com^$popup -||oefanyorgagetn.info^$popup -||ofeetles.pro^$popup -||offaces-butional.com^$popup -||offergate-apps-pubrel.com^$popup -||offergate-games-download1.com^$popup -||offernow24.com^$popup -||offernzshop.online^$popup -||offershub.net^$popup -||offerstrack.net^$popup -||offersuperhub.com^$popup -||offhandpump.com^$popup -||officetablntry.org^$popup -||officialbanisters.com^$popup -||offshuppetchan.com^$popup -||offwardtendry.top^$popup -||ofglicoron.net^$popup -||ofphanpytor.com^$popup -||ofseedotom.com^$popup -||oftheseveryh.org^$popup -||oghqvffmnt.com^$popup -||ogniicbnb.ru^$popup -||ogtrk.net^$popup -||ohrdsplu.com^$popup -||ointmentfloatingsaucepan.com^$popup -||okayfreemanknot.com^$popup -||okueroskynt.com^$popup -||ologeysurincon.com^$popup -||omciecoa37tw4.com^$popup -||omgpm.com^$popup -||omgt3.com^$popup -||omgt4.com^$popup -||omgt5.com^$popup -||omklefkior.com^$popup -||omoahope.net^$popup -||onad.eu^$popup -||onatallcolumn.com^$popup -||onclasrv.com^$popup -||onclickads.net^$popup -||onclickalgo.com^$popup -||onclickclear.com^$popup -||onclickgenius.com^$popup -||onclickmax.com^$popup -||onclickmega.com^$popup -||onclickperformance.com^$popup -||onclickprediction.com^$popup -||onclicksuper.com^$popup -||onclicktop.com^$popup -||ondshub.com^$popup -||one-name-studio.com^$popup -||oneadvupfordesign.com^$popup -||oneclickpic.net^$popup -||oneegrou.net^$popup -||onenomadtstore.com^$popup -||oneqanatclub.com^$popup -||onesuns.com^$popup -||onetouch12.com^$popup -||onetouch19.com^$popup -||onetouch20.com^$popup -||onetouch22.com^$popup -||onetouch26.com^$popup -||onevenadvllc.com^$popup -||onevenadvnow.com^$popup -||ongoingverdictparalyzed.com^$popup -||onhitads.net^$popup -||online-deal.click^$popup -||onlinecashmethod.com^$popup -||onlinedeltazone.online^$popup -||onlinefinanceworld.com^$popup -||onlinepuonline.com^$popup -||onlineshopping.website^$popup -||onlineuserprotector.com^$popup -||onmantineer.com^$popup -||onmarshtompor.com^$popup -||onstunkyr.com^$popup -||onsukultingecauy.com^$popup -||ontreck.cyou^$popup -||oodrampi.com^$popup -||oopatet.com^$popup -||oopsiksaicki.com^$popup -||oosonechead.org^$popup -||openadserving.com^$popup -||openerkey.com^$popup -||openmindter.com^$popup -||operarymishear.store^$popup -||ophisrebrown.top^$popup -||ophoacit.com^$popup -||opoxv.com^$popup -||opparasecton.com^$popup -||opportunitysearch.net^$popup -||opptmzpops.com^$popup -||opskln.com^$popup -||optimalscreen1.online^$popup -||optimizesrv.com^$popup -||optnx.com^$popup -||optyruntchan.com^$popup -||optzsrv.com^$popup -||opus-whisky.com^$popup -||oranegfodnd.com^$popup -||orchestraanticipation.com^$popup -||orgassme.com^$popup -||orlowedonhisdhilt.info^$popup -||ormolustuke.top^$popup -||orthitepetrous.com^$popup -||ortontotlejohn.com^$popup -||osarmapa.net^$popup -||osiextantly.com^$popup -||osmosewatch.top^$popup -||ossfloetteor.com^$popup -||ossmightyenar.net^$popup -||ostlon.com^$popup -||otherofherlittle.info^$popup -||otingolston.com^$popup -||otisephie.com^$popup -||otnolabttmup.com^$popup -||otnolatrnup.com^$popup -||oulsools.com^$popup -||oungimuk.net^$popup -||ourcommonnews.com^$popup -||ourcommonstories.com^$popup -||ourcoolposts.com^$popup -||ourdailystories.com^$popup -||ourhotfeed.com^$popup -||ouryretyequirem.info^$popup -||outaipoma.com^$popup -||outdoeslegacy.uno^$popup -||outgoingfan.pro^$popup -||outgratingknack.com^$popup -||outhulem.net^$popup -||outlineappearbar.com^$popup -||outlookabsorb.com^$popup -||outoctillerytor.com^$popup -||outofthecath.org^$popup -||ovardu.com^$popup -||ovdimin.buzz^$popup -||overallfetchheight.com^$popup -||ovogofteonafterw.info^$popup -||ow5a.net^$popup -||owingsorthealthy.com^$popup -||owrkwilxbw.com^$popup -||oxbbzxqfnv.com^$popup -||oxtsale1.com^$popup -||oxydend2r5umarb8oreum.com^$popup -||oyi9f1kbaj.com^$popup -||ozongees.com^$popup -||pa5ka.com^$popup -||padp5arja8dgsd9cha.com^$popup -||padsdel.com^$popup -||paeastei.net^$popup -||paehceman.com^$popup -||paikoasa.tv^$popup -||palama2.co^$popup -||palmmalice.com^$popup -||palpablefungussome.com^$popup -||palundrus.com^$popup -||pamwrymm.live^$popup -||panelerkingly.top^$popup -||panicmiserableeligible.com^$popup -||pantrydivergegene.com^$popup -||parachuteeffectedotter.com^$popup -||paradiseannouncingnow.com^$popup -||parallelgds.store^$popup -||parentingcalculated.com^$popup -||parentlargevia.com^$popup -||pargodysuria.top^$popup -||paripartners.ru^$popup -||parisjeroleinpg.com^$popup -||parkcircularpearl.com^$popup -||parkingridiculous.com^$popup -||participateconsequences.com^$popup -||partsbury.com^$popup -||passeura.com^$popup -||passfixx.com^$popup -||pasxfixs.com^$popup -||patoionanrumand.com^$popup -||patrondescendantprecursor.com^$popup -||patronimproveyourselves.com^$popup -||paularrears.com^$popup -||paulastroid.com^$popup -||paxsfiss.com^$popup -||paxxfiss.com^$popup -||paymentsweb.org^$popup -||payvclick.com^$popup -||pclk.name^$popup -||pctsrv.com^$popup -||peachybeautifulplenitude.com^$popup -||peacockshudder.com^$popup -||pearledbolo.life^$popup -||pearsissuedboob.com^$popup -||pecialukizeias.info^$popup -||pecklyna.click^$popup -||peepholelandreed.com^$popup -||peeredgerman.com^$popup -||peethach.com^$popup -||peezette-intial.com^$popup -||pegirs.com^$popup -||pegloang.com^$popup -||pejzeexukxo.com^$popup -||pelis-123.org^$popup -||pemsrv.com^$popup -||penholderlossfrontage.com^$popup -||peopleloves.me^$popup -||perceivedundesirable.com^$popup -||pereliaastroid.com^$popup -||perfectflowing.com^$popup -||perfecttoolmedia.com^$popup -||performancetrustednetwork.com^$popup -||periodpennavigation.com^$popup -||periodscirculation.com^$popup -||perispro.com^$popup -||perryvolleyball.com^$popup -||pertersacstyli.com^$popup -||pertfinds.com^$popup -||pertlouv.com^$popup -||pesime.xyz^$popup -||peskyclarifysuitcases.com^$popup -||petendereruk.com^$popup -||pexu.com^$popup -||pgmediaserve.com^$popup -||phamsacm.net^$popup -||phaurtuh.net^$popup -||pheniter.com^$popup -||phenotypebest.com^$popup -||phoognol.com^$popup -||phosphatepossible.com^$popup -||phu1aefue.com^$popup -||phumpauk.com^$popup -||pickaflick.co^$popup -||pierisrapgae.com^$popup -||pigletsmunsee.top^$popup -||pipaffiliates.com^$popup -||pipsol.net^$popup -||pisism.com^$popup -||pistolsizehoe.com^$popup -||pitchedfurs.com^$popup -||pitchedvalleyspageant.com^$popup -||pitysuffix.com^$popup -||piwhecyfo.pro^$popup -||pixellitomedia.com^$popup -||pixelspivot.com^$popup -||pk910324e.com^$popup -||placardcapitalistcalculate.com^$popup -||plainmarshyaltered.com^$popup -||plane-pusherbidder.org^$popup -||planetarium-planet.com^$popup -||planmybackup.co^$popup -||planningunavoidablenull.com^$popup -||planyourbackup.co^$popup -||platitudezeal.com^$popup -||play1ad.shop^$popup -||playamopartners.com^$popup -||playbook88a2.com^$popup -||playeranyd.org^$popup -||playerstrivefascinated.com^$popup -||playerswhisper.com^$popup -||playstretch.host^$popup -||playvideoclub.com^$popup -||pleadsbox.com^$popup -||pleasetrack.com^$popup -||plexop.net^$popup -||plinksplanet.com^$popup -||plirkep.com^$popup -||plorexdry.com^$popup -||plsrcmp.com^$popup -||pluckfigburst.com^$popup -||plumpcontrol.pro^$popup -||pnperf.com^$popup -||pocofh.com^$popup -||podefr.net^$popup -||poilloiter.top^$popup -||pointclicktrack.com^$popup -||pointroll.com^$popup -||poisism.com^$popup -||politesewer.com^$popup -||politicianbusplate.com^$popup -||pollstover.guru^$popup -||pollutefurryapproximate.com^$popup -||polyh-nce.com^$popup -||pompreflected.com^$popup -||pon-prairie.com^$popup -||ponchowafesargb.com^$popup -||ponk.pro^$popup -||popads.net^$popup -||popblockergold.info^$popup -||popcash.net^$popup -||popcornvod.com^$popup -||poperblocker.com^$popup -||popmyads.com^$popup -||poponclick.com^$popup -||popped.biz^$popup -||populationrind.com^$popup -||popunder.bid^$popup -||popunderjs.com^$popup -||popupblockergold.com^$popup -||popupblockernow.com^$popup -||popupsblocker.org^$popup -||popwin.net^$popup -||porlandzor.com^$popup -||pornhb.me^$popup -||portletburrer.top^$popup -||poshsplitdr.com^$popup -||positivelyoverall.com^$popup -||possessionaddictedflight.com^$popup -||post-redirecting.com^$popup -||postaffiliatepro.com^$popup,third-party -||postback1win.com^$popup -||postlnk.com^$popup -||potawe.com^$popup -||potpourrichordataoscilloscope.com^$popup -||potsaglu.net^$popup -||potskolu.net^$popup -||pp98trk.com^$popup -||ppcnt.co^$popup -||ppcnt.eu^$popup -||ppcnt.us^$popup -||practicallyfire.com^$popup -||practicepeter.com^$popup -||prawnsimply.com^$popup -||prdredir.com^$popup -||precedechampion.com^$popup -||precedentadministrator.com^$popup -||precedentbasepicky.com^$popup -||preciousbearer.com^$popup -||precursorinclinationbruised.com^$popup -||predicamentdisconnect.com^$popup -||predictiondexchange.com^$popup -||predictiondisplay.com^$popup -||predictionds.com^$popup -||predictivadnetwork.com^$popup -||predictivadvertising.com^$popup -||predictivdisplay.com^$popup -||predirect.net^$popup -||premium-members.com^$popup -||premium4kflix.top^$popup -||premium4kflix.website^$popup -||premiumaffi.com^$popup -||premonitioninventdisagree.com^$popup -||preoccupycommittee.com^$popup -||preparedfile.com^$popup -||press-here-to-continue.com^$popup -||pressingequation.com^$popup -||pressyour.com^$popup -||pretrackings.com^$popup -||prevailinsolence.com^$popup -||prevalentprincess.com^$popup -||prfwhite.com^$popup -||prime-vpnet.com^$popup -||primerclicks.com^$popup -||princesinistervirus.com^$popup -||privacysafeguard.net^$popup -||privatedqualizebrui.info^$popup -||privilegest.com^$popup -||prizes-topwin.life^$popup -||prizetopsurvey.top^$popup -||prjcq.com^$popup -||prmtracking.com^$popup -||probationtoll.com^$popup -||proceduresjeer.com^$popup -||professionalswebcheck.com^$popup -||proffering.xyz$popup -||proffering.xyz^$popup -||profi-para.com^$popup -||profitablecpmgate.com^$popup -||profitablegate.com^$popup -||profitablegatecpm.com^$popup -||profitablegatetocontent.com^$popup -||profitabletrustednetwork.com^$popup -||promisspacay.space^$popup -||promo-bc.com^$popup -||pronovosty.org^$popup -||pronunciationspecimens.com^$popup -||propadsviews.com^$popup -||propbn.com^$popup -||propellerads.com^$popup -||propellerclick.com^$popup -||propellerpops.com^$popup -||propertyofnews.com^$popup -||proseoverlook.com^$popup -||protect-your-privacy.net^$popup -||prototypewailrubber.com^$popup -||protrckit.com^$popup -||provenshoutmidst.com^$popup -||provocativeprivate.com^$popup -||prpops.com^$popup -||prtord.com^$popup -||prtrackings.com^$popup -||prwave.info^$popup -||psaiceex.net^$popup -||psaltauw.net^$popup -||psaugourtauy.com^$popup -||psefteeque.com^$popup -||psma02.com^$popup -||psockapa.net^$popup -||psotudev.com^$popup -||pssy.xyz^$popup -||psychologycircumvent.com^$popup -||psychologydistinguishnest.com^$popup -||ptaupsom.com^$popup -||ptistyvymi.com^$popup -||ptoakrok.net^$popup -||ptongouh.net^$popup -||ptsixwereksbef.info^$popup -||ptudoalistoy.net^$popup -||ptwmjmp.com^$popup -||ptyalinbrattie.com^$popup -||pubdirecte.com^$popup -||publisherads.click^$popup -||publited.com^$popup -||pubtrky.com^$popup -||puffieralveloz.guru^$popup -||puldhukelpmet.com^$popup -||pulinkme.com^$popup -||pulseonclick.com^$popup -||punkfigured.com^$popup -||punsong.com^$popup -||pupilorgansmad.com^$popup -||puppytestament.com^$popup -||pupspu.com^$popup -||pupur.net^$popup -||pupur.pro^$popup -||pureadexchange.com^$popup -||purebrowseraddonedge.com^$popup -||purpleads.io^$popup -||purplewinds.xyz^$popup -||push-news.click^$popup -||pushclk.com^$popup -||pushking.net^$popup -||pushmobilenews.com^$popup -||pushub.net^$popup -||pushwelcome.com^$popup -||pussl3.com^$popup -||pussl48.com^$popup -||putchumt.com^$popup -||putfeablean.org^$popup -||putrefyeither.com^$popup -||puwpush.com^$popup -||pvclouds.com^$popup -||pxx23jkd.com^$popup -||pyq6n.com^$popup -||q8ntfhfngm.com^$popup -||qads.io^$popup -||qelllwrite.com^$popup -||qertewrt.com^$popup -||qjrhacxxk.xyz^$popup -||qksrv.cc^$popup -||qksrv1.com^$popup -||qr-captcha.com^$popup -||qrlsx.com^$popup -||qrprobopassor.com^$popup -||qualitydating.top^$popup -||quarrelaimless.com^$popup -||quinoanitrile.top^$popup -||quizsupportedchapel.com^$popup -||quoo.eu^$popup -||qxdownload.com^$popup -||qyvklvjejrmwo.top^$popup -||qz496amxfh87mst.com^$popup -||r-tb.com^$popup -||r3adyt0download.com^$popup -||r3f.technology^$popup -||radicalovertime.com^$popup -||rafkxx.com^$popup -||raijoolu.xyz^$popup -||railroadfatherenlargement.com^$popup -||rallantynethebra.com^$popup -||ranabreast.com^$popup -||rankpeers.com^$popup -||raosmeac.net^$popup -||rapidhits.net^$popup -||rapolok.com^$popup -||rashbarnabas.com^$popup -||razdvabm.com^$popup -||rbtfit.com^$popup -||rbxtrk.com^$popup -||rdrm1.click^$popup -||rdrsec.com^$popup -||rdsa2012.com^$popup -||rdsrv.com^$popup -||rdtk.io^$popup -||readserv.com^$popup -||readyblossomsuccesses.com^$popup -||realethay.com^$popup -||realfinanceblogcenter.com^$popup -||realsh.xyz^$popup -||realsrv.com^$popup -||realtime-bid.com^$popup -||realxavounow.com^$popup -||reaseinprofitstefu.info^$popup -||reated-pounteria.com^$popup -||rebagsabeing.top^$popup -||rebrew-foofteen.com^$popup -||recedewell.com^$popup -||rechanque.com^$popup -||reciteimplacablepotato.com^$popup -||reclod.com^$popup -||recodetime.com^$popup -||recommendedseizedbewildered.com^$popup -||recompensecombinedlooks.com^$popup -||record.commissionkings.ag^$popup -||record.rizk.com^$popup -||recyclinganewupdated.com^$popup -||recyclingbees.com^$popup -||red-direct-n.com^$popup -||redaffil.com^$popup -||redic.net^$popup -||redic2.net^$popup -||redic4.com^$popup -||redic5.xyz^$popup -||redic6.site^$popup -||redij.online^$popup -||redirect-ads.com^$popup -||redirect-path1.com^$popup -||redirectflowsite.com^$popup -||redirecting7.eu^$popup -||redirectingat.com^$popup -||redirectlinker.com^$popup -||redirectvoluum.com^$popup -||rednewly.com^$popup -||redrotou.net^$popup -||redwingmagazine.com^$popup -||refdomain.info^$popup -||referredscarletinward.com^$popup -||refpa.top^$popup -||refpa4293501.top^$popup -||refpabuyoj.top^$popup -||refpaikgai.top^$popup -||refpasrasw.world^$popup -||refpaxfbvjlw.top^$popup -||refundsreisner.life^$popup -||refutationtiptoe.com^$popup -||regardedsaid.com^$popup -||regulushamal.top^$popup -||rehvbghwe.cc^$popup -||rejco3.site^$popup -||rekipion.com^$popup -||reliablemore.com^$popup -||relievedgeoff.com^$popup -||reloadsusa.com^$popup -||remarkablehorizontallywaiter.com^$popup -||remaysky.com^$popup -||remembergirl.com^$popup -||reminews.com^$popup -||remoifications.info^$popup -||remouldpruta.top^$popup -||renownsimultaneouslyunresolved.com^$popup -||rentalrebuild.com^$popup -||rentingimmoderatereflecting.com^$popup -||repayrotten.com^$popup -||repentbits.com^$popup -||replacestuntissue.com^$popup -||reprintvariousecho.com^$popup -||reproductiontape.com^$popup -||reqdfit.com^$popup -||reroplittrewheck.pro^$popup -||resetenhancementsillegal.com^$popup -||residelikingminister.com^$popup -||residenceseeingstanding.com^$popup -||residentialinspur.com^$popup -||resistshy.com^$popup -||responsiverender.com^$popup -||resterent.com^$popup -||restorationbowelsunflower.com^$popup -||restorationpencil.com^$popup -||resuelveacc.es^$popup -||retortedstray.com^$popup -||revenuenetwork.com^$popup -||reviewedreads.com^$popup -||revimedia.com^$popup -||revolvemockerycopper.com^$popup -||rewardrush.life^$popup -||rewardtk.com^$popup -||rewqpqa.net^$popup -||rexsrv.com^$popup -||rhudsplm.com^$popup -||rhvdsplm.com^$popup -||rhxdsplm.com^$popup -||riddleloud.com^$popup -||riflesurfing.xyz^$popup -||riftharp.com^$popup -||rigelbetelgeuse.top^$popup -||rightypulverizetea.com^$popup -||ringexpressbeach.com^$popup -||ringsempty.com^$popup -||rinsermouton.space^$popup -||riotousunspeakablestreet.com^$popup -||riowrite.com^$popup -||riscati.com^$popup -||riverhit.com^$popup -||rkatamonju.info^$popup -||rkskillsombineukd.com^$popup -||rmaticalacm.info^$popup -||rndhaunteran.com^$popup -||rndmusharnar.com^$popup -||rndskittytor.com^$popup -||roaddataay.live^$popup -||roadmappenal.com^$popup -||roastoup.com^$popup -||robflea.com^$popup -||rocketmedia24.com^$popup,third-party -||rockstorageplace.com^$popup -||rog4.com^$popup -||rollads.live^$popup -||romanlicdate.com^$popup -||romivapsi.com^$popup -||rootzaffiliates.com^$popup -||ropedm.com^$popup -||rose2919.com^$popup -||rosyruffian.com^$popup -||rotumal.com^$popup -||roudoduor.com^$popup -||roulettebotplus.com^$popup -||rounddescribe.com^$popup -||roundflow.net^$popup -||routes.name^$popup -||routgveriprt.com^$popup -||roverinvolv.bid^$popup -||rovno.xyz^$popup -||royalcactus.com^$popup -||rozamimo9za10.com^$popup -||rsaltsjt.com^$popup -||rscilx49h.com^$popup -||rsppartners.com^$popup -||rtbadshubmy.com^$popup -||rtbbpowaq.com^$popup -||rtbix.xyz^$popup -||rtbsuperhub.com^$popup -||rtbxnmhub.com^$popup -||rtclx.com^$popup -||rtmark.net^$popup -||rtmladcenter.com^$popup -||rtmladnew.com^$popup -||rtyznd.com^$popup -||rubylife.go2cloud.org^$popup -||rudderwebmy.com^$popup -||rufflycouncil.com^$popup -||rulefloor.com^$popup -||rummagemason.com^$popup -||runesmith.top^$popup -||runicmaster.top^$popup -||runslin.com^$popup -||runtnc.net^$popup -||russellseemslept.com^$popup -||rusticsnoop.com^$popup -||ruthproudlyquestion.top^$popup -||rvetreyu.net^$popup -||rvrpushserv.com^$popup -||s0cool.net^$popup -||s0q260-rtbix.top^$popup -||s20dh7e9dh.com^$popup -||s3g6.com^$popup -||sabotageharass.com^$popup -||safe-connection21.com^$popup -||safestgatetocontent.com^$popup -||sagedeportflorist.com^$popup -||saktismberakes.space^$popup -||saltpairwoo.live^$popup -||samage-bility.icu^$popup -||sandmakingsilver.info^$popup -||sandyrecordingmeet.com^$popup -||sarcodrix.com^$popup -||sardineforgiven.com^$popup -||sasontnwc.net^$popup -||saulttrailwaysi.info^$popup -||saveourspace.co^$popup -||savinist.com^$popup -||savouryadolescent.com^$popup -||saycasksabnegation.com^$popup -||scadstech.com^$popup -||scenbe.com^$popup -||schemeabsolutejanuary.com^$popup -||score-feed.com^$popup -||scoredconnect.com^$popup -||screenov.site^$popup -||sealthatleak.com^$popup -||search4y.com^$popup -||searchenhancements.com^$popup -||searchheader.xyz^$popup -||searchmulty.com^$popup -||searchsecurer.com^$popup -||seashorelikelihoodreasonably.com^$popup -||seatsrehearseinitial.com^$popup -||secthatlead.com^$popup -||secureclickers.com^$popup -||securecloud-smart.com^$popup -||securecloud-sml.com^$popup -||secureclouddt-cd.com^$popup -||securedcdn.com^$popup -||securedsmcd.com^$popup -||securegate9.com^$popup -||securegfm.com^$popup -||secureintl.com^$popup -||secureleadsrn.com^$popup -||securesmrt-dt.com^$popup -||sedatecompulsiveout.com^$popup -||sedatenerves.com^$popup -||sedodna.com^$popup -||seethisinaction.com^$popup -||selfemployedbalconycane.com^$popup -||sellingtandays.com^$popup -||semilikeman.com^$popup -||semqraso.net^$popup -||senonsiatinus.com^$popup -||senzapudore.it^$popup,third-party -||seo-overview.com^$popup -||separatecolonist.com^$popup -||separationharmgreatest.com^$popup -||sereanstanza.com^$popup -||serialwarning.com^$popup -||serumlisp.com^$popup -||serve-rtb.com^$popup -||serve-servee.com^$popup -||serveforthwithtill.com^$popup -||servehub.info^$popup -||serverfritterdisability.com^$popup -||serversmatrixaggregation.com^$popup -||servetean.site^$popup -||servicetechtracker.com^$popup -||serving-sys.com^$popup -||seteamsobtantion.com^$popup -||seullocogimmous.com^$popup -||sex-and-flirt.com^$popup -||sexfamilysim.net^$popup -||sexpieasure.com^$popup -||sexyepc.com^$popup -||shadesentimentssquint.com^$popup -||shadyobscene.com^$popup -||shaggyaleswede.com^$popup -||shaggyselectmast.com^$popup -||shainsie.com^$popup -||shaisole.com^$popup -||shamtick.com^$popup -||shapelcounset.xyz^$popup -||sharpofferlinks.com^$popup -||shaugacakro.net^$popup -||shauladubhe.top^$popup -||shbzek.com^$popup -||she-want-fuck.com^$popup -||sheegiwo.com^$popup -||sherouscolvered.com^$popup -||sheschemetraitor.com^$popup -||shestugele.pro^$popup -||shinebliss.com^$popup -||shoopusahealth.com^$popup -||shopeasy.by^$popup -||shortfailshared.com^$popup -||shortpixel.ai^$popup -||shortssibilantcrept.com^$popup -||shoubsee.net^$popup -||show-me-how.net^$popup -||showcasead.com^$popup -||showcasethat.com^$popup -||shrillwife.pro^$popup -||shudderconnecting.com^$popup -||sicknessfestivity.com^$popup -||sidebyx.com^$popup -||sidebyz.com^$popup -||sifuglie.com^$popup -||significantoperativeclearance.com^$popup -||sillinessinterfere.com^$popup -||simple-isl.com^$popup -||sindatontherrom.com^$popup -||sing-tracker.com^$popup -||singelstodate.com^$popup -||singlesexdates.com^$popup -||singlewomenmeet.com^$popup -||siriusprocyon.top^$popup -||sisterexpendabsolve.com^$popup -||siteforyou1d.com^$popup -||sitpactrip.live^$popup -||sixft-apart.com^$popup -||skiptheadz.net^$popup -||skohssc.cfd^$popup -||skouns.club^$popup -||skymobi.agency^$popup -||slakyroeneng.top^$popup -||slashstar.net^$popup -||sledimitationsegment.com^$popup -||slidbecauseemerald.com^$popup -||slidecaffeinecrown.com^$popup -||slideff.com^$popup -||slikslik.com^$popup -||slimfiftywoo.com^$popup -||slimspots.com^$popup -||slipperydeliverance.com^$popup -||sloto.live^$popup -||slownansuch.info^$popup -||slowww.xyz^$popup -||sltracl.com^$popup -||smallestgirlfriend.com^$popup -||smallfunnybears.com^$popup -||smart-url.net^$popup -||smart-wp.com^$popup -||smartadtags.com^$popup -||smartapplifly.com^$popup -||smartappsfly.com^$popup -||smartcj.com^$popup -||smartlphost.com^$popup -||smartmnews.pro^$popup -||smarttds.org^$popup -||smarttopchain.nl^$popup -||smentbrads.info^$popup -||smlypotr.net^$popup -||smothercontinuingsnore.com^$popup -||smoulderhangnail.com^$popup -||smrt-content.com^$popup -||smrtgs.com^$popup -||smrtsecure-eml.com^$popup -||snackyscuffy.top^$popup -||snadsfit.com^$popup -||snammar-jumntal.com^$popup -||snapcheat16s.com^$popup -||snappedimpressive.com^$popup -||snoreempire.com^$popup -||snoresslighty.uno^$popup -||snowads.net^$popup,third-party -||snowdayonline.xyz^$popup -||snugglethesheep.com^$popup -||sobakenchmaphk.com^$popup -||soccertakeover.com^$popup -||sofinpushpile.com^$popup -||softonixs.xyz^$popup -||softwa.cfd^$popup -||soilgnaw.com^$popup -||soksicme.com^$popup -||solaranalytics.org^$popup -||soldierreproduceadmiration.com^$popup -||solemik.com^$popup -||solemnvine.com^$popup -||soliads.net^$popup -||solispartner.com^$popup -||someonein.org^$popup -||soninlawfaceconfide.com^$popup -||sonioubemeal.com^$popup -||soocaips.com^$popup -||sorrowfulclinging.com^$popup -||sorrycarboncolorful.com^$popup -||sorryparlor.com^$popup -||sotchoum.com^$popup -||soundelktemper.com^$popup -||sourcecodeif.com^$popup -||sousefulhead.com^$popup -||souvenirsflex.com^$popup -||spacetraff.com^$popup -||spankdrearystroll.com^$popup -||sparkstudios.com^$popup -||sparta-tracking.xyz^$popup -||spatterjointposition.com^$popup -||spdate.com^$popup -||speakspurink.com^$popup -||special-offers.online^$popup -||special-promotions.online^$popup -||special-trending-news.com^$popup -||specialisthuge.com^$popup -||specialityharmoniousgypsy.com^$popup -||specialtymet.com^$popup -||speednetwork14.com^$popup -||speedsupermarketdonut.com^$popup -||spellingunacceptable.com^$popup -||spendcrazy.net^$popup -||sperans-beactor.com^$popup -||spicygirlshere.life^$popup -||spirtlekurt.digital^$popup -||spklmis.com^$popup -||spo-play.live^$popup -||spongemilitarydesigner.com^$popup -||sport-play.live^$popup -||sportfocal.com^$popup -||sports-streams-online.best^$popup -||sports-tab.com^$popup -||spotofspawn.com^$popup -||spotscenered.info^$popup -||sprinlof.com^$popup -||sptrkr.com^$popup -||sr7pv7n5x.com^$popup -||srtrak.com^$popup -||srv2trking.com^$popup -||srvpcn.com^$popup -||srvpub.com^$popup -||ssdwellsgrpo.info^$popup -||ssllink.net^$popup -||st-rdirect.com^$popup -||st1net.com^$popup -||staaqwe.com^$popup -||stacckain.com^$popup -||stageryawreak.top^$popup -||stammerail.com^$popup -||stannelberated.top^$popup -||starmobmedia.com^$popup -||starry-galaxy.com^$popup -||start-xyz.com^$popup -||startd0wnload22x.com^$popup -||statestockingsconfession.com^$popup -||statistic-data.com^$popup -||statsmobi.com^$popup -||stawhoph.com^$popup -||stemboastfulrattle.com^$popup -||stenadewy.pro^$popup -||sthoutte.com^$popup -||stickervillain.com^$popup -||stickingrepute.com^$popup -||stigmuuua.xyz^$popup -||stimaariraco.info^$popup -||stinglackingrent.com^$popup -||stoagergu.com^$popup -||stoaltoa.top^$popup -||stoopedsignbookkeeper.com^$popup -||stoorgel.com^$popup -||stop-adblocker.info^$popup -||stopadblocker.com^$popup -||stopadzblock.net^$popup -||stopblockads.com^$popup -||storader.com^$popup -||stormydisconnectedcarsick.com^$popup -||stovecharacterize.com^$popup -||strainemergency.com^$popup -||straitchangeless.com^$popup -||stream-all.com^$popup -||streamsearchclub.com^$popup -||streamyourvid.com^$popup -||strenuoustarget.com^$popup -||strettechoco.com^$popup -||strewdirtinessnestle.com^$popup -||strtgic.com^$popup -||strungcourthouse.com^$popup -||stt6.cfd^$popup -||studiocustomers.com^$popup -||stumbleirritable.com^$popup -||stunserver.net^$popup -||stvbiopr.net^$popup -||stvkr.com^$popup -||stvwell.online^$popup -||subscriptioneccentric.com^$popup -||subsidehurtful.com^$popup -||succisasubset.top^$popup -||suddslife.com^$popup -||suggest-recipes.com^$popup -||sulkvulnerableexpecting.com^$popup -||sulseerg.com^$popup -||sumbreta.com^$popup -||summaryvalued.com^$popup -||summercovert.com^$popup -||summitmanner.com^$popup -||sunflowerbright106.io^$popup -||sunglassesmentallyproficient.com^$popup -||sunnyseries.com^$popup -||superadexchange.com^$popup -||superfastcdn.com^$popup -||superfasti.co^$popup -||supermanpunchchanges.com^$popup -||supersedeforbes.com^$popup -||suppliedhopelesspredestination.com^$popup -||supremeadblocker.com^$popup -||supremeoutcome.com^$popup -||supremepresumptuous.com^$popup -||supremoadblocko.com^$popup -||suptraf.com^$popup -||suptrkdisplay.com^$popup -||surelyconvinced.com^$popup -||surfacesaroselozenge.com^$popup -||surge.systems^$popup -||surrogatelithe.com^$popup -||surroundingsliftingstubborn.com^$popup -||surveyonline.top^$popup -||surveyspaid.com^$popup -||suspicionsmutter.com^$popup -||swagtraffcom.com^$popup -||swaycomplymishandle.com^$popup -||sweaty-garage.pro^$popup -||sweepfrequencydissolved.com^$popup -||swinity.com^$popup -||sxlflt.com^$popup -||sympatheticfling.com^$popup -||syncedvision.com^$popup -||syringeitch.com^$popup -||syrsple2se8nyu09.com^$popup -||systeme-business.online^$popup -||systemleadb.com^$popup -||szqxvo.com^$popup -||t2lgo.com^$popup -||tabfloor.com^$popup -||tabledownstairsprovocative.com^$popup -||taborsfields.top^$popup -||tacopush.ru^$popup -||tadsbelver.com^$popup -||taembed.com^$popup -||taghaugh.com^$popup -||tagsd.com^$popup -||takecareproduct.com^$popup -||takelnk.com^$popup -||takemyorder.co^$popup -||takeyouforward.co^$popup -||talentorganism.com^$popup -||tallysaturatesnare.com^$popup -||tapdb.net^$popup -||tapewherever.com^$popup -||tapinvited.com^$popup -||taprtopcldfa.co^$popup -||taprtopcldfard.co^$popup -||taprtopcldfb.co^$popup -||tarebearpaw.top^$popup -||taroads.com^$popup -||tauphaub.net^$popup -||tausoota.xyz^$popup -||tcare.today^$popup -||tchinaprecenta.info^$popup -||tczzzlwpss.com^$popup -||td563.com^$popup -||tdspa.top^$popup -||teamsoutspoken.com^$popup -||tearsincompetentuntidy.com^$popup -||tecaitouque.net^$popup -||techiteration.com^$popup -||techreviewtech.com^$popup -||teddynineteenthpreoccupation.com^$popup -||tegleebs.com^$popup -||teiidsfortune.com^$popup -||teksishe.net^$popup -||telegramsit.com^$popup -||telyn610zoanthropy.com^$popup -||temksrtd.net^$popup -||temperrunnersdale.com^$popup -||tencableplug.com^$popup -||tendencysanction.com^$popup -||tenthgiven.com^$popup -||terbit2.com^$popup -||terraclicks.com^$popup -||terralink.xyz^$popup -||tfaln.com^$popup -||tffkroute.com^$popup -||tfiph.com^$popup -||tgars.com^$popup -||thairoob.com^$popup -||thanosofcos5.com^$popup -||thaoheakolons.info^$popup -||thaudray.com^$popup -||the-binary-trader.biz^$popup -||thearoids.com^$popup -||thebestgame2020.com^$popup -||thebigadsstore.com^$popup -||thecarconnections.com^$popup -||thechleads.pro^$popup -||thechronicles2.xyz^$popup -||thecloudvantnow.com^$popup -||theepsie.com^$popup -||theerrortool.com^$popup -||theextensionexpert.com^$popup -||thefacux.com^$popup -||theirbellsound.co^$popup -||theirbellstudio.co^$popup -||thencemutinyhamburger.com^$popup -||theonesstoodtheirground.com^$popup -||theoverheat.com^$popup -||therelimitless.com^$popup -||thereuponscare.com^$popup -||thesafersearch.com^$popup -||thescads.com^$popup -||thetaweblink.com^$popup -||thetoptrust.com^$popup -||theusualsuspects.biz^$popup -||theythourbonusgain.life^$popup -||thinkaction.com^$popup -||thirawogla.com^$popup -||thirdreasoncomplex.com^$popup -||thirteenthadjectivecleaning.com^$popup -||thirtyeducate.com^$popup -||thisisyourprize.site^$popup -||thnqemehtyfe.com^$popup -||thofteert.com^$popup -||thoroughlypantry.com^$popup -||thosecalamar.top^$popup -||threatotherwise.com^$popup -||thunderdepthsforger.top^$popup -||thunderous-request.pro^$popup -||ticalfelixstownru.info^$popup -||tidalwavetrx.com^$popup -||tidyingpreludeatonement.com^$popup -||tidyllama.com^$popup -||tignuget.net^$popup -||tigrisbewray.life^$popup -||tilttrk.com^$popup -||tiltwin.com^$popup -||timeoutwinning.com^$popup -||timetablewearmatrix.com^$popup -||timot-cvk.info^$popup -||tinsus.com^$popup -||tintedparticular.com^$popup -||tipcatscarola.com^$popup -||tiprd.xyz^$popup -||titaniumveinshaper.com^$popup -||titlerwilhelm.com^$popup -||tjoomo.com^$popup -||tl2go.com^$popup -||tmb5trk.com^$popup -||tmtrck.com^$popup -||tmxhub.com^$popup -||tncred.com^$popup -||tnctrx.com^$popup -||tnkexchange.com^$popup -||tolrock.com^$popup -||toltooth.net^$popup -||tomatoqqamber.click^$popup -||tombmeaning.com^$popup -||tomladvert.com^$popup -||tomorroweducated.com^$popup -||tonefuse.com^$popup -||tooaastandhei.info^$popup -||toopsoug.net^$popup -||toothcauldron.com^$popup -||top-offers1.com^$popup -||top-performance.best^$popup -||top-performance.club^$popup -||top-performance.top^$popup -||topadvdomdesign.com^$popup -||topatincompany.com^$popup -||topblockchainsolutions.nl^$popup -||topclickguru.com^$popup -||topdealad.com^$popup -||topduppy.info^$popup -||topfdeals.com^$popup -||topflownews.com^$popup -||toprevenuegate.com^$popup -||topscan-mca.click^$popup -||toptrendyinc.com^$popup -||toroadvertisingmedia.com^$popup -||torpsol.com^$popup -||torrent-protection.com^$popup -||torrentsafeguard.com^$popup -||tosssix.com^$popup -||totadblock.com^$popup -||totalab.online^$popup -||totalab.xyz^$popup -||totalactualnewz.com^$popup -||totaladblock.com^$popup -||totaladperformance.com^$popup -||totalnicefeed.com^$popup -||totalnicenewz.com^$popup -||totalwownews.com^$popup -||totlnkcl.com^$popup -||tougherrancor.website^$popup -||touroumu.com^$popup -||towardsturtle.com^$popup -||toxtren.com^$popup -||tozoruaon.com^$popup -||tpmr.com^$popup -||tpopularcldfa.co^$popup -||tpopularcldfb.co^$popup -||tr-boost.com^$popup -||tr-bouncer.com^$popup -||tr-monday.xyz^$popup -||tr-rollers.xyz^$popup -||tr-usual.com^$popup -||tracereceiving.com^$popup -||track-campaing.club^$popup -||track-safe.com^$popup -||track-victoriadates.com^$popup -||track.totalav.com^$popup -||track.wargaming-aff.com^$popup -||track4ref.com^$popup -||tracker-2.com^$popup -||tracker-sav.space^$popup -||tracker-tds.info^$popup -||tracker19875.space^$popup -||tracker2.space^$popup -||trackerrr.com^$popup -||trackerx.ru^$popup -||trackeverything.co^$popup -||trackingrouter.com^$popup -||trackingshub.com^$popup -||trackingtraffo.com^$popup -||trackmundo.com^$popup -||trackpshgoto.win^$popup -||tracks20.com^$popup -||tracksfaster.com^$popup -||trackstracker.com^$popup -||tracksystem.online^$popup -||tracktds.com^$popup -||tracktds.live^$popup -||tracktilldeath.club^$popup -||tracktraf.com^$popup -||trackwilltrk.com^$popup -||trackytrack02.com^$popup -||tracot.com^$popup -||tradeadexchange.com^$popup -||traffic-c.com^$popup -||traffic.name^$popup -||trafficbass.com^$popup -||trafficborder.com^$popup -||trafficdecisions.com^$popup -||trafficdok.com^$popup -||trafficforce.com^$popup -||traffichaus.com^$popup -||trafficholder.com^$popup -||traffichunt.com^$popup -||trafficinvest.com^$popup -||trafficlide.com^$popup -||trafficmagnates.com^$popup -||trafficmediaareus.com^$popup -||trafficmoon.com^$popup -||trafficmoose.com^$popup -||trafforsrv.com^$popup -||traffrout.com^$popup -||trafyield.com^$popup -||tragicbeyond.com^$popup -||trakaff.net^$popup -||traktrafficflow.com^$popup -||trandlife.info^$popup -||transgressmeeting.com^$popup -||transmitterincarnatebastard.com^$popup -||trapexpansionmoss.com^$popup -||trck.wargaming.net^$popup -||trcklks.com^$popup -||trckswrm.com^$popup -||trcyrn.com^$popup -||treasureravenvulgar.com^$popup -||trellian.com^$popup -||trftopp.biz^$popup -||triangular-fire.pro^$popup -||tributesexually.com^$popup -||trilema.com^$popup -||triumphantfreelance.com^$popup -||triumphantplace.com^$popup -||trk-access.com^$popup -||trk-vod.com^$popup -||trk3000.com^$popup -||trk301.com^$popup -||trkbng.com^$popup -||trkings.com^$popup -||trkingthebest.net^$popup -||trklnks.com^$popup -||trknext.com^$popup -||trknk.com^$popup -||trksmorestreacking.com^$popup -||trlxcf05.com^$popup -||trmobc.com^$popup -||troopsassistedstupidity.com^$popup -||tropbikewall.art^$popup -||troublesomeleerycarry.com^$popup -||trpool.org^$popup -||trpop.xyz^$popup -||trust.zone^$popup -||trustedcpmrevenue.com^$popup -||trustedgatetocontent.com^$popup -||trustedpeach.com^$popup -||trustedstream.life^$popup -||trustedzone.info^$popup -||trustflayer1.online^$popup -||trustyable.com^$popup -||trustzonevpn.info^$popup -||truthtraff.com^$popup -||truthwassadl.org^$popup -||trw12.com^$popup -||trythe-letsketos.com^$popup -||tseywo.com^$popup -||tsml.fun^$popup -||tsyndicate.com^$popup -||ttoc8ok.com^$popup -||tubeadvertising.eu^$popup -||tubecup.net^$popup -||tubroaffs.org^$popup -||tuffoonincaged.com^$popup -||tuitionpancake.com^$popup -||tundrafolder.com^$popup -||tuneshave.com^$popup -||turganic.com^$popup -||turnhub.net^$popup -||turnstileunavailablesite.com^$popup -||tutvp.com^$popup -||tvas-b.pw^$popup -||tweakostensibleinstaller.com^$popup -||twentiethparticipation.com^$popup -||twerwew.org^$popup -||twigstandardexcursion.com^$popup -||twigwisp.com^$popup -||twinfill.com^$popup -||twinkle-fun.net^$popup -||twinklecourseinvade.com^$popup -||twinrdengine.com^$popup -||twinrdsrv.com^$popup -||twinrdsyn.com^$popup -||twinrdsyte.com^$popup -||txzaazmdhtw.com^$popup -||tychon.bid^$popup -||typerealisepredict.com^$popup -||typicalsecuritydevice.com^$popup -||tyranbrashore.com^$popup -||tyrotation.com^$popup -||tyserving.com^$popup -||tzaqkp.com^$popup -||tzvpn.site^$popup -||u1pmt.com^$popup -||ubilinkbin.com^$popup -||ucconn.live^$popup -||ucheephu.com^$popup -||udncoeln.com^$popup -||uel-uel-fie.com^$popup -||ufinkln.com^$popup -||ufpcdn.com^$popup -||ugeewhee.xyz^$popup -||ugroocuw.net^$popup -||uhpdsplo.com^$popup -||uidhealth.com^$popup -||uidhome.com^$popup -||uitopadxdy.com^$popup -||ukeesait.top^$popup -||ukoffzeh.com^$popup -||ukworlowedonh.com^$popup -||ultimate-captcha.com^$popup -||ultracdn.top^$popup -||ultrapartners.com^$popup -||ultravpnoffers.com^$popup -||umoxomv.icu^$popup -||unawar.com^$popup -||unbalterce.com^$popup -||unbeedrillom.com^$popup -||unblockedapi.com^$popup -||uncastnork.com^$popup -||unclesnewspaper.com^$popup -||undergosermon.com^$popup -||understoodreceivermisunderstand.com^$popup -||undertakingaisle.com^$popup -||underwearsourorb.com^$popup -||unfaithfulmakeryearly.com^$popup -||unicornpride123.com^$popup -||unmistdistune.guru^$popup -||unpaledbooker.top^$popup -||unrealversionholder.com^$popup -||unreshiramor.com^$popup -||unseenrazorcaptain.com^$popup -||unskilfulwalkerpolitician.com^$popup -||unspeakablepurebeings.com^$popup -||untimburra.com^$popup -||unusualbrainlessshotgun.com^$popup -||unwonttawpi.top^$popup -||unwoobater.com^$popup -||upcomingmonkeydolphin.com^$popup -||upcurlsreid.website^$popup -||updatecompletelyfreetheproduct.vip^$popup -||updateenow.com^$popup -||updatephone.club^$popup -||upgliscorom.com^$popup -||uphewoab.net^$popup -||uphillgrandmaanger.com^$popup -||uphorter.com^$popup -||upleaptlistel.top^$popup -||uponelectabuzzor.club^$popup -||uproarglossy.com^$popup -||uptimecdn.com^$popup -||uptopopunder.com^$popup -||urtyert.com^$popup -||urvgwij.com^$popup -||uselnk.com^$popup -||usenetnl.download^$popup -||utarget.ru^$popup -||uthorner.info^$popup -||utilitypresent.com^$popup -||utlservice.com^$popup -||utm-campaign.com^$popup -||utndln.com^$popup -||utopicmobile.com^$popup -||utrinterrommo.com^$popup -||uuksehinkitwkuo.com^$popup -||v6rxv5coo5.com^$popup -||vaatmetu.net^$popup -||vaithodo.com^$popup -||vaitotoo.net^$popup -||valuationbothertoo.com^$popup -||variabilityproducing.com^$popup -||variationaspenjaunty.com^$popup -||vasstycom.com^$popup -||vasteeds.net^$popup -||vax-now.com^$popup -||vcdc.com^$popup -||vcommission.com^$popup -||vebv8me7q.com^$popup -||veepteero.com^$popup -||veilsuccessfully.com^$popup -||vekseptaufin.com^$popup -||velocitycdn.com^$popup -||vengeful-egg.com^$popup -||venturead.com^$popup -||venuewasadi.org^$popup -||verandahcrease.com^$popup -||verblife-2.co^$popup -||vergi-gwc.com^$popup -||verooperofthewo.com^$popup -||versedarkenedhusky.com^$popup -||versionlatticecheek.com^$popup -||vertoz.com^$popup -||vespymedia.com^$popup -||vetoembrace.com^$popup -||vezizey.xyz^$popup -||vfghc.com^$popup -||vfgtb.com^$popup -||vfgte.com^$popup -||vfgtg.com^$popup -||viapawniarda.com^$popup -||viatechonline.com^$popup -||viatepigan.com^$popup -||victoryslam.com^$popup -||video-adblocker.pro^$popup -||videoadblocker.pro^$popup -||videoadblockerpro.com^$popup -||videocampaign.co^$popup -||viewlnk.com^$popup -||viiapps.com^$popup -||viiavjpe.com^$popup -||viibill.com^$popup -||viicasu.com^$popup -||viidan.com^$popup -||viidirectory.com^$popup -||viidsyej.com^$popup -||viienetik.com^$popup -||viiithia.com^$popup -||viiithie.com^$popup -||viiithinks.com^$popup -||viiiyskm.com^$popup -||viikttcq.com^$popup -||viimobile.com^$popup -||viimsa.com^$popup -||viinsdap.com^$popup -||viinset.com^$popup -||viipurakit.com^$popup -||viipurambe.com^$popup -||viipurin.com^$popup -||viipuris.com^$popup -||viiqqou.com^$popup -||viirkagt.com^$popup -||viirsons.com^$popup -||viisemblin.com^$popup -||viispan.com^$popup -||viistroy.com^$popup -||viiturn.com^$popup -||viizuusa.com^$popup -||violationphysics.click^$popup -||vionito.com^$popup -||vipcpms.com^$popup -||viralcpm.com^$popup -||virginyoungestrust.com^$popup -||visaspecialtyfluid.com^$popup -||visit-website.com^$popup -||visitplaywrightlyrical.com^$popup -||visitstats.com^$popup -||visors-airminal.com^$popup -||vkcdnservice.com^$popup -||vkgtrack.com^$popup -||vodobyve.pro^$popup -||vokut.com^$popup -||volform.online^$popup -||volleyballachiever.site^$popup -||volumntime.com^$popup -||voluumtrk.com^$popup -||voluumtrk3.com^$popup -||vooshagy.net^$popup -||vorhanddoob.top^$popup -||vowpairmax.live^$popup -||voxfind.com^$popup -||vpn-offers.org^$popup -||vpnlist.to^$popup -||vpnoffers.cc^$popup -||vpnoffers.net^$popup -||vprtrfc.com^$popup -||vriddhipardee.top^$popup -||vs3.com^$popup -||vsucocesisful.com^$popup -||vtabnalp.net^$popup -||wackeerd.com^$popup -||wadmargincling.com^$popup -||waframedia5.com^$popup -||wahoha.com^$popup -||waisheph.com^$popup -||walknotice.com^$popup -||walter-larence.com^$popup -||wantatop.com^$popup -||wargaming-aff.com^$popup -||warilyaggregation.com^$popup -||warilycommercialconstitutional.com^$popup -||warkop4dx.com^$popup -||washinexhaustible.com^$popup -||waspishamendbulb.com^$popup -||wasqimet.net^$popup -||wastedinvaluable.com^$popup -||wasverymuch.info^$popup -||watch-now.club^$popup -||watchadsfree.com^$popup -||watchadzfree.com^$popup -||watchcpm.com^$popup -||watchesthereupon.com^$popup -||watchfreeofads.com^$popup -||watchlivesports4k.club^$popup -||watchvideoplayer.com^$popup -||waufooke.com^$popup -||wbidder.online^$popup -||wbidder2.com^$popup -||wbidder3.com^$popup -||wbilvnmool.com^$popup -||wboux.com^$popup -||wbsadsdel.com^$popup -||wbsadsdel2.com^$popup -||wcitianka.com^$popup -||wct.link^$popup -||wdt9iaspfv3o.com^$popup -||we-are-anon.com^$popup -||weaveradrenaline.com^$popup -||weaverdispensepause.com^$popup -||web-adblocker.com^$popup -||web-guardian.xyz^$popup -||webatam.com^$popup -||webgains.com^$popup -||webmedrtb.com^$popup -||webpuppweb.com^$popup -||websearchers.net^$popup -||webteensyusa.com^$popup -||webtrackerplus.com^$popup -||wecouldle.com^$popup -||welcomeneat.pro^$popup -||welfarefit.com^$popup -||weliketofuckstrangers.com^$popup -||wellhello.com^$popup -||wellnesszap.com^$popup -||welltodoresource.com^$popup -||wendelstein-1b.com^$popup -||wewearegogogo.com^$popup -||wfredir.net^$popup -||wg-aff.com^$popup -||wgpartner.com^$popup -||whairtoa.com^$popup -||whampamp.com^$popup -||whatisuptodaynow.com^$popup -||whaurgoopou.com^$popup -||wheceelt.net^$popup -||wheebsadree.com^$popup -||wheeshoo.net^$popup -||wherevertogo.com^$popup -||whipgos.com^$popup -||whirlwindofnews.com^$popup -||whiskerssituationdisturb.com^$popup -||whistledprocessedsplit.com^$popup -||whistlingbeau.com^$popup -||whitenoisenews.com^$popup -||whitepark9.com^$popup -||whodouth.net^$popup -||wholedailyjournal.com^$popup -||wholefreshposts.com^$popup -||wholewowblog.com^$popup -||whookroo.com^$popup -||whoursie.com^$popup -||whowhipi.net^$popup -||whugesto.net^$popup -||whulsaux.com^$popup -||whyocafenet.space^$popup -||wichtstoppit.space^$popup -||widow5blackfr.com^$popup -||wifescamara.click^$popup -||wigetmedia.com^$popup -||wigsynthesis.com^$popup -||wildestelf.com^$popup -||win-myprize.top^$popup -||winbigdrip.life^$popup -||windychinese.com^$popup -||winfreeprize.online^$popup -||wingoodprize.life^$popup -||winnersofvouchers.com^$popup -||winsimpleprizes.life^$popup -||wiringcollectorguffaw.com^$popup -||wiringsensitivecontents.com^$popup -||wishfulla.com^$popup -||wistfulassign.com^$popup -||witalfieldt.com^$popup -||withblaockbr.org^$popup -||withdrawcosmicabundant.com^$popup -||withholdstandstill.com^$popup -||withmefeyauknaly.com^$popup -||witnessjacket.com^$popup -||wizardscharityvisa.com^$popup -||wlafx4trk.com^$popup -||wnt-s0me-push.net^$popup -||woafoame.net^$popup -||woffxxx.com^$popup -||wokewhoki.pro^$popup -||wolsretet.net^$popup -||wonder.xhamster.com^$popup -||wonderfulstatu.info^$popup -||wonderlandads.com^$popup -||woodbeesdainty.com^$popup -||woovoree.net^$popup -||workback.net^$popup -||workervanewalk.com^$popup -||worldfreshblog.com^$popup -||worldtimes2.xyz^$popup -||worthyrid.com^$popup -||woukrkskillsom.info^$popup -||wovensur.com^$popup -||wowshortvideos.com^$popup -||writeestatal.space^$popup -||wrypassenger.com^$popup -||wuqconn.com^$popup -||wuujae.com^$popup -||wwija.com^$popup -||wwow.xyz^$popup -||wwowww.xyz^$popup -||wwwpromoter.com^$popup -||wwydakja.net^$popup -||wxhiojortldjyegtkx.bid^$popup -||wymymep.com^$popup -||x2tsa.com^$popup -||xadsmart.com^$popup -||xaxoro.com^$popup -||xbidflare.com^$popup -||xclicks.net^$popup -||xijgedjgg5f55.com^$popup -||xkarma.net^$popup -||xliirdr.com^$popup -||xlirdr.com^$popup -||xlivrdr.com^$popup -||xlviiirdr.com^$popup -||xlviirdr.com^$popup -||xml-api.online^$popup -||xml-clickurl.com^$popup -||xmlapiclickredirect.com^$popup -||xmlrtb.com^$popup -||xobr219pa.com^$popup -||xstownrusisedp.info^$popup -||xszpuvwr7.com^$popup -||xtendmedia.com^$popup -||xxxnewvideos.com^$popup -||xxxvjmp.com^$popup -||y1jxiqds7v.com^$popup -||yahuu.org^$popup -||yapclench.com^$popup -||yapdiscuss.com^$popup -||yavli.com^$popup -||ybb-network.com^$popup -||ybbserver.com^$popup -||yearbookhobblespinal.com^$popup -||yeesihighlyre.info^$popup -||yeesshh.com^$popup -||yeioreo.net^$popup -||yellow-resultsbidder.com^$popup -||yellow-resultsbidder.org^$popup -||yellowbahama.com^$popup -||yestilokano.top^$popup -||ygamey.com^$popup -||yhbcii.com^$popup -||yieldtraffic.com^$popup -||ylih6ftygq7.com^$popup -||ym-a.cc^$popup -||yodbox.com^$popup -||yogacomplyfuel.com^$popup -||yogadignified.com^$popup -||yohavemix.live^$popup -||yok.la^$popup,third-party -||yolage.uno^$popup -||yolkhandledwheels.com^$popup -||yonmasqueraina.com^$popup -||yonsandileer.com^$popup -||yophaeadizesave.com^$popup -||your-sugar-girls.com^$popup -||youradexchange.com^$popup -||yourcommonfeed.com^$popup -||yourcoolfeed.com^$popup -||yourfreshjournal.com^$popup -||yourfreshposts.com^$popup -||yourperfectdating.life^$popup -||yourprivacy.icu^$popup -||yourtopwords.com^$popup -||ysesials.net^$popup -||ytgzz.com^$popup -||yukclick.me^$popup -||yummiescinders.top^$popup -||yy8fgl2bdv.com^$popup -||z5x.net^$popup -||z7yru.com^$popup -||zaglushkaaa.com^$popup -||zajukrib.net^$popup -||zcode12.me^$popup -||zebeaa.click^$popup -||zedo.com^$popup -||zeechoog.net^$popup -||zeechumy.com^$popup -||zeepartners.com^$popup -||zenaps.com^$popup -||zendplace.pro^$popup -||zengoongoanu.com^$popup -||zeroredirect1.com^$popup -||zetaframes.com^$popup -||zidapi.xyz^$popup -||zikroarg.com^$popup -||zirdough.net^$popup -||ziziatramel.uno^$popup -||zlink1.com^$popup -||zlink2.com^$popup -||zlink6.com^$popup -||zlink8.com^$popup -||zlink9.com^$popup -||zlinkb.com^$popup -||zlinkm.com^$popup -||zlinkv.com^$popup -||znqip.net^$popup -||znqip.org^$popup -||zog.link^$popup -||zokaukree.net^$popup -||zonupiza.com^$popup -||zoogripi.com^$popup -||zougreek.com^$popup -||zryydi.com^$popup -||zscwdu.com^$popup -||zugnogne.com^$popup -||zunsoach.com^$popup -||zuphaims.com^$popup -||zwqzxh.com^$popup -||zwtssi.com^$popup -||zybrdr.com^$popup -! url.rw popups -||url.rw/*&a=$popup -||url.rw/*&mid=$popup -! IP addresses -||130.211.$popup,third-party,domain=~in-addr.arpa -||142.91.$popup,third-party,domain=~in-addr.arpa -||142.91.159.$popup -||142.91.159.107^$popup -||142.91.159.127^$popup -||142.91.159.136^$popup -||142.91.159.139^$popup -||142.91.159.146^$popup -||142.91.159.147^$popup -||142.91.159.164^$popup -||142.91.159.169^$popup -||142.91.159.179^$popup -||142.91.159.220^$popup -||142.91.159.223^$popup -||142.91.159.244^$popup -||143.244.184.39^$popup -||146.59.223.83^$popup -||158.247.208.$popup -||158.247.208.115^$popup -||172.255.6.$popup,third-party,domain=~in-addr.arpa -||172.255.6.135^$popup -||172.255.6.137^$popup -||172.255.6.139^$popup -||172.255.6.150^$popup -||172.255.6.152^$popup -||172.255.6.199^$popup -||172.255.6.217^$popup -||172.255.6.228^$popup -||172.255.6.248^$popup -||172.255.6.254^$popup -||172.255.6.2^$popup -||172.255.6.59^$popup -||176.31.68.242^$popup -||185.147.34.126^$popup -||188.42.84.110^$popup -||188.42.84.159^$popup -||188.42.84.160^$popup -||188.42.84.162^$popup -||188.42.84.199^$popup -||188.42.84.21^$popup -||188.42.84.23^$popup -||203.195.121.$popup -||203.195.121.0^$popup -||203.195.121.103^$popup -||203.195.121.119^$popup -||203.195.121.134^$popup -||203.195.121.184^$popup -||203.195.121.195^$popup -||203.195.121.209^$popup -||203.195.121.217^$popup -||203.195.121.219^$popup -||203.195.121.224^$popup -||203.195.121.229^$popup -||203.195.121.24^$popup -||203.195.121.28^$popup -||203.195.121.29^$popup -||203.195.121.34^$popup -||203.195.121.36^$popup -||203.195.121.40^$popup -||203.195.121.70^$popup -||203.195.121.72^$popup -||203.195.121.73^$popup -||203.195.121.74^$popup -||216.21.13.$popup,domain=~in-addr.arpa -||23.109.150.101^$popup -||23.109.150.208^$popup -||23.109.170.228^$popup -||23.109.248.$popup -||23.109.248.129^$popup -||23.109.248.130^$popup -||23.109.248.135^$popup -||23.109.248.139^$popup -||23.109.248.149^$popup -||23.109.248.14^$popup -||23.109.248.174^$popup -||23.109.248.183^$popup -||23.109.248.247^$popup -||23.109.248.29^$popup -||23.109.82.$popup -||23.109.82.104^$popup -||23.109.82.119^$popup -||23.109.82.173^$popup -||23.109.82.44^$popup -||23.109.82.74^$popup -||23.109.87.$popup -||23.109.87.101^$popup -||23.109.87.118^$popup -||23.109.87.123^$popup -||23.109.87.127^$popup -||23.109.87.139^$popup -||23.109.87.14^$popup -||23.109.87.15^$popup -||23.109.87.182^$popup -||23.109.87.192^$popup -||23.109.87.213^$popup -||23.109.87.217^$popup -||23.109.87.42^$popup -||23.109.87.47^$popup -||23.109.87.71^$popup -||23.109.87.74^$popup -||34.102.137.201^$popup -||35.227.234.222^$popup -||35.232.188.118^$popup -||5.45.79.15^$popup -||51.178.195.171^$popup -||51.195.115.102^$popup -||51.89.115.13^$popup -||88.42.84.136^$popup -! IP Regex (commonly used, hax'd IP addresses) -/^https?:\/\/(35|104)\.(\d){1,3}\.(\d){1,3}\.(\d){1,3}\//$popup,third-party -! http://146.59.211.227/tsc/Zx0bagrCjuxP -/^https?:\/\/146\.59\.211\.(\d){1,3}.*/$popup,third-party - -! *** easylist:easylist_adult/adult_adservers.txt *** -||18naked.com^$third-party -||4link.it^$third-party -||777-partner.com^$third-party -||777-partner.net^$third-party -||777-partners.com^$third-party -||777-partners.net^$third-party -||777partner.com^$script,third-party -||777partner.net^$third-party -||777partners.com^$third-party -||acmexxx.com^$third-party -||adcell.de^$third-party -||adextrem.com^$third-party -||ads-adv.top^$third-party -||adsarcade.com^$third-party -||adsession.com^$third-party -||adsgangsta.com^$third-party -||adshnk.com^$third-party -||adsturn.com^$third-party -||adult3dcomics.com^$third-party -||adultforce.com^$third-party -||adultsense.com^$third-party -||aemediatraffic.com^$third-party -||affiliaxe.com^$third-party -||affiligay.net^$third-party -||aipmedia.com^$third-party -||all-about-tech.com^$third-party -||allosponsor.com^$third-party -||amateurhub.cam^$third-party -||asiafriendfinder.com^$third-party -||avfay.com^$third-party -||awempire.com^$third-party -||bcash4you.com^$third-party -||beachlinkz.com^$third-party -||betweendigital.com^$third-party -||black6adv.com^$third-party -||blackpics.net^$third-party -||blossoms.com^$third-party -||bookofsex.com^$third-party -||brothersincash.com^$third-party -||bumskontakte.ch^$third-party -||caltat.com^$third-party -||cam-lolita.net^$third-party -||cam4flat.com^$third-party -||camcrush.com^$third-party -||camdough.com^$third-party -||camduty.com^$third-party -||cameraprive.com^$third-party -||campartner.com^$third-party -||camsense.com^$third-party -||camsoda1.com^$third-party -||cashthat.com^$third-party -||cbmiocw.com^$third-party -||chatinator.com^$third-party -||citysex.com^$third-party -||clickaine.com^$third-party -||clipxn.com^$third-party -||cross-system.com^$script,third-party -||cwchmb.com^ -||cybernetentertainment.com^$third-party -||daiporno.com^$third-party -||datefunclub.com^$third-party -||datetraders.com^$third-party -||datexchanges.net^$third-party -||datingadnetwork.com^$third-party -||datingamateurs.com^$third-party -||datingcensored.com^$third-party -||datingidol.com^$third-party -||debitcrebit669.com^$third-party -||deecash.com^$third-party -||demanier.com^$third-party -||dematom.com^$third-party -||digiad.co^$third-party -||digitaldesire.com^$third-party -||digreality.com^$third-party -||directadvert.ru^$third-party -||directchat.tv^$third-party -||direction-x.com^$third-party -||donstick.com^$third-party -||dphunters.com^$third-party -||dtiserv2.com^$third-party -||easyflirt.com^$third-party -||eroadvertising.com^$third-party -||erotikdating.com^$third-party -||escortso.com^$third-party -||euro4ads.de^$third-party -||exchangecash.de^$third-party -||exclusivepussy.com^$third-party -||exoticads.com^$third-party -||faceporn.com^$third-party -||facetz.net^$third-party -||fapality.com^$third-party -||farrivederev.pro^$third-party -||felixflow.com^$third-party -||festaporno.com^$third-party -||filexan.com^$third-party -||findandtry.com^$third-party -||flashadtools.com^$third-party -||fleshcash.com^$third-party -||fleshlightgirls.com^$third-party -||flirt4e.com^$third-party -||flirt4free.com^$third-party -||flirtingsms.com^$third-party -||fncash.com^$third-party -||fncnet1.com^$third-party -||freakads.com^$third-party -||freeadultcomix.com^$third-party -||freewebfonts.org^$third-party -||frestacero.com^$third-party -||frivol-ads.com^$third-party -||frtyh.com^$third-party -||frutrun.com^$third-party -||fuckbook.cm^$third-party -||fuckbookdating.com^$third-party -||fuckedbyme.com^$third-party -||fuckermedia.com^$third-party -||fuckyoucash.com^$third-party -||fuelbuck.com^$third-party -||g--o.info^$third-party -||ganardineroreal.com^$third-party -||gayxperience.com^$third-party -||geofamily.ru^$third-party -||getiton.com^$third-party -||ggwcash.com^$third-party -||golderotica.com^$third-party -||hentai369.com^$third-party -||hookupbucks.com^$third-party -||hornymatches.com^$third-party -||hornyspots.com^$third-party -||hostave2.net^$third-party -||hotsocials.com^$third-party -||hubtraffic.com^$third-party -||icebns.com^$third-party -||icetraffic.com^$third-party -||idolbucks.com^$third-party -||ifrwam.com^$third-party -||iheartbucks.com^$third-party -||ilovecheating.com^$third-party -||imediacrew.club^$third-party -||imglnka.com^$third-party -||imglnkb.com^$third-party -||imglnkc.com^$third-party -||imlive.com^$script,third-party,domain=~imnude.com -||impressionmonster.com^$third-party -||in3x.net^$third-party -||inheart.ru^$third-party -||intelensafrete.stream^$third-party -||internebula.net^$third-party -||intrapromotion.com^$third-party -||iridiumsergeiprogenitor.info^$third-party -||itmcash.com^$third-party -||itrxx.com^$third-party -||itslive.com^$third-party -||itspsmup.com^$third-party -||itsup.com^$third-party -||itw.me^$third-party -||iwanttodeliver.com^$third-party -||ixspublic.com^$third-party -||jav-7mmtv.top^ -||javbucks.com^$third-party -||joyourself.com^$third-party -||kadam.ru^$third-party -||kaplay.com^$third-party -||kcolbda.com^$third-party -||kinkadservercdn.com^ -||kugo.cc^$third-party -||leche69.com^$third-party -||lickbylick.com^$third-party -||lifepromo.biz^$third-party -||livecam.com^$third-party -||livejasmin.tv^$third-party -||liveprivates.com^$third-party -||livepromotools.com^$third-party -||livestatisc.com^$third-party -||livexxx.me^$third-party -||loading-delivery1.com^$third-party -||lostun.com^$third-party -||lovecam.com.br^$third-party -||lovercash.com^$third-party -||lsawards.com^$third-party -||lucidcommerce.com^$third-party -||luvcash.com^$third-party -||lwxjg.com^$third-party -||madbanner.com^$third-party -||mallcom.com^$third-party -||marisappear.pro^$third-party -||markswebcams.com^$third-party -||masterbate.pro^$third-party -||masterwanker.com^$third-party -||matrimoniale3x.ro^$third-party -||matrix-cash.com^$third-party -||maxiadv.com^$third-party -||mc-nudes.com^$third-party -||mcprofits.com^$third-party -||meccahoo.com^$third-party -||media-click.ru^$third-party -||mediad2.jp^$third-party -||mediumpimpin.com^$third-party -||meineserver.com^$third-party -||meta4-group.com^$third-party -||methodcash.com^$third-party -||meubonus.com^$third-party -||mileporn.com^$third-party -||mmaaxx.com^$third-party -||mmoframes.com^$third-party -||mncvjhg.com^$third-party -||mobalives.com^$third-party -||mobilerevenu.com^$third-party -||mobtop.ru^$third-party -||modelsgonebad.com^$third-party -||morehitserver.com^$third-party -||mp-https.info^$third-party -||mpmcash.com^$third-party -||mrporngeek.com^$third-party -||mrskincash.com^$third-party -||mtoor.com^$third-party -||mtree.com^$third-party -||mxpopad.com^$third-party -||myadultimpressions.com^$third-party -||myprecisionads.com^$third-party -||mywebclick.net^$third-party -||naiadexports.com^$third-party -||nastydollars.com^$third-party -||nativexxx.com^$third-party -||newads.bangbros.com^$third-party -||newagerevenue.com^$third-party -||newnudecash.com^$third-party -||nexxxt.biz^$third-party -||ngbn.net^$third-party -||ningme.ru^$third-party -||njmaq.com^$third-party -||notify.support^$third-party -||nscash.com^$third-party -||nudedworld.com^$third-party -||nummobile.com^$third-party -||oconner.biz^$third-party -||offaces-butional.com^$third-party -||ohmygosh.info^ -||omynews.net^$third-party -||onhercam.com^$third-party -||onlineporno.fun^$third-party -||ordermc.com^$third-party -||otaserve.net^$third-party -||otherprofit.com^$third-party -||outster.com^$third-party -||oxcluster.com^$third-party -||ozelmedikal.com^$third-party -||paid-to-promote.net^$third-party -||parkingpremium.com^$third-party -||partnercash.com^$third-party -||partnercash.de^$third-party -||pc20160522.com^$third-party -||pecash.com^$third-party -||pennynetwork.com^$third-party -||pepipo.com^$third-party -||philstraffic.com^$third-party -||pictureturn.com^$third-party -||pkeeper3.ru^$third-party -||plantaosexy.com^$third-party -||plugrush.com^$third-party -||pnads.com^$third-party -||pnperf.com^$third-party -||poonproscash.com^$third-party -||popander.com^$third-party -||popupclick.ru^$third-party -||porkolt.com^$third-party -||porn300.com^$third-party -||porn369.net^$third-party -||porn88.net^$third-party -||porn99.net^$third-party -||pornattitude.com^$third-party -||pornconversions.com^$third-party -||porndroids.com^$third-party -||pornearn.com^$third-party -||pornglee.com^$third-party -||porngray.com^$third-party -||pornkings.com^$third-party -||pornleep.com^$third-party -||porntrack.com^$third-party -||porntry.com^$third-party -||pourmajeurs.com^$third-party -||ppc-direct.com^$third-party -||premiumhdv.com^$third-party -||presatisfy.com^$third-party -||privacyprotector.com^$third-party -||private4.com^$third-party -||privateseiten.net^$third-party -||privatewebseiten.com^$third-party -||prmobiles.com^$third-party -||program3.com^$third-party -||promo4partners.com^$third-party -||promocionesweb.com^$third-party -||promokrot.com^$third-party -||promotools.biz^$third-party -||promowebstar.com^$third-party -||propbn.com^$third-party -||protect-x.com^$third-party -||protizer.ru^$third-party -||prscripts.com^$third-party -||prtawe.com^$third-party -||psma01.com^$third-party -||psma03.com^$third-party -||ptclassic.com^$third-party -||ptrfc.com^$third-party -||ptwebcams.com^$third-party -||pussy-pics.net^$third-party -||pussyeatingclub.com^$third-party -||putanapartners.com^$third-party -||quantumws.net^$third-party -||qwerty24.net^$third-party -||rack-media.com^$third-party -||ragazzeinvendita.com^$third-party -||rareru.ru^$third-party -||rdiul.com^$third-party -||realitycash.com^$third-party -||realitytraffic.com^$third-party -||red-bees.com^$third-party -||redlightcenter.com^$third-party -||redpineapplemedia.com^$third-party -||reliablebanners.com^$third-party -||rivcash.com^$third-party -||royal-cash.com^$third-party -||rubanners.com^$third-party -||rukplaza.com^$third-party -||runetki.com^$third-party -||russianlovematch.com^$third-party -||safelinktracker.com^$third-party -||sancdn.net^$third-party -||sascentral.com^$third-party -||sbs-ad.com^$third-party -||searchpeack.com^$third-party -||secretbehindporn.com^$third-party -||seeawhale.com^$third-party -||seekbang.com^$third-party -||sehiba.com^$third-party -||seitentipp.com^$third-party -||sexad.net^$third-party -||sexdatecash.com^$third-party -||sexiba.com^$third-party -||sexlist.com^$third-party -||sexopages.com^$third-party -||sexplaycam.com^$third-party -||sexsearch.com^$third-party -||sextadate.net^$third-party -||sextracker.com^$third-party -||sexufly.com^$third-party -||sexuhot.com^$third-party -||sexvertise.com^$third-party -||sexy-ch.com^$third-party -||showmeyouradsnow.com^$third-party -||siccash.com^$third-party -||sixsigmatraffic.com^$third-party -||smartbn.ru^$third-party -||smartclick.net^$third-party -||smopy.com^$third-party -||sms-xxx.com^$third-party -||snapcheat.app^$third-party -||socialsexnetwork.net^$third-party -||solutionsadultes.com^$third-party -||souvlatraffic.com^$third-party -||spacash.com^$third-party -||spankmasters.com^$third-party -||spunkycash.com^$third-party -||startede.com^$third-party -||startwebpromo.com^$third-party -||staticxz.com^$third-party -||statserv.net^$third-party -||steamtraffic.com^$third-party -||streamateaccess.com^$third-party -||stripsaver.com^$third-party -||sunnysmedia.com^$third-party -||supuv3.com^$third-party -||sv2.biz^$third-party -||sweetmedia.org^$third-party -||sweetstudents.com^$third-party -||tantoporno.com^$third-party -||targetingnow.com^$third-party -||teasernet.ru^$third-party -||teaservizio.com^$third-party -||test1productions.com^$third-party -||the-adult-company.com^$third-party -||thepayporn.com^$third-party -||thesocialsexnetwork.com^$third-party -||tingrinter.com^$third-party -||tizernet.com^$third-party -||tm-core.net^$third-party -||tmserver-1.com^$third-party -||tmserver-2.net^$third-party -||tophosting101.com^$third-party -||topsexcams.club^$third-party -||tossoffads.com^$third-party -||traffbiz.ru^$third-party -||traffic-gate.com^$third-party -||traffic.ru^$third-party -||trafficholder.com^$third-party -||trafficlearn.com^$third-party -||trafficmagnates.com^$third-party -||trafficman.io^$third-party -||trafficpimps.com^$third-party -||trafficstars.com^$third-party -||traffictraffickers.com^$third-party -||trafficundercontrol.com^$third-party -||trfpump.com^$third-party -||trickyseduction.com^$third-party -||trunblock.com^$third-party -||trw12.com^$third-party -||try9.com^$third-party -||ttlmodels.com^$third-party -||tube.ac^$third-party -||tubeadnetwork.com^$third-party -||tubeadv.com^$third-party -||tubecorporate.com^$third-party -||tubepush.eu^$third-party -||tubesweet.com^$third-party -||twistyscash.com^$third-party -||uxernab.com^$third-party -||ver-pelis.net^$third-party -||verticalaffiliation.com^$third-party -||vfgta.com^$third-party -||vghd.com^$third-party -||vid123.net^$third-party -||video-people.com^$third-party -||vidsrev.com^$third-party -||viensvoircesite.com^$third-party -||virtuagirlhd.com^$third-party -||vivaclix.com^$third-party -||vividcash.com^$third-party -||vlexokrako.com^$third-party -||vlogexpert.com^$third-party -||vod-cash.com^$third-party -||vogozae.ru^$third-party -||voyeurhit.com^$third-party -||vrstage.com^$third-party -||vsexshop.ru^$third-party -||w4vecl1cks.com^$third-party -||wamcash.com^$third-party -||wantatop.com^$third-party -||watchmygf.to^$third-party -||wct.click^$third-party -||wifelovers.com^$third-party -||worldsbestcams.com^$third-party -||xgogi.com^$third-party -||xhamstercams.com^$third-party -||xlovecam.com^$third-party -||xogogowebcams.com^$third-party -||xxxblackbook.com^$third-party -||xxxmatch.com^$third-party -||yourdatelink.com^$third-party -||yurivideo.com^$third-party - -! *** easylist:easylist_adult/adult_adservers_popup.txt *** -||1lzz.com^$popup -||1ts11.top^$popup -||3questionsgetthegirl.com^$popup -||9content.com^$popup -||adextrem.com^$popup -||adultadworld.com^$popup -||banners.cams.com^$popup -||bestdatinghere.life^$popup -||c4tracking01.com^$popup -||cam4tracking.com^$popup -||checkmy.cam^$popup -||chokertraffic.com^$popup -||ckrf1.com^$popup -||connexionsafe.com^$popup -||cooch.tv^$popup,third-party -||cpng.lol.^$popup -||cpng.lol^$popup -||crdefault2.com^$popup -||crentexgate.com^$popup -||crlcw.link^$popup -||crptentry.com^$popup -||crptgate.com^$popup -||date-for-more.com^$popup -||datingshall.life^$popup -||datoporn.com^$popup -||desklks.com^$popup -||dirty-messenger.com^$popup -||dirty-tinder.com^$popup -||dumbpop.com^$popup -||ekod.info^$popup -||ero-advertising.com^$popup -||eroge.com^$popup -||ertya.com^$popup -||ezofferz.com^$popup -||flagads.net^$popup -||flndmyiove.net^$popup -||fpctraffic2.com^$popup -||freecamsexposed.com^$popup -||freewebcams.com^$popup,third-party -||friendfinder.com^$popup -||frtyi.com^$popup -||funkydaters.com^$popup -||gambol.link^$popup -||gayfinder.life^$popup -||get-partner.life^$popup -||girls.xyz^$popup -||global-trk.com^$popup -||go-route.com^$popup -||goaffmy.com^$popup -||grtyv.com^$popup -||hizlireklam.com^$popup -||hkl4h1trk.com^$popup -||hornymatches.com^$popup,third-party -||hotplay-games.life^$popup -||hottesvideosapps.com^$popup -||hpyrdr.com^$popup -||hrtya.com^$popup -||indianfriendfinder.com^$popup -||irtye.com^$popup -||isanalyze.com^$popup -||jav-7mmtv.top^$popup -||jizzy.org^$popup -||jsmjmp.com^$popup -||juicyads.com^$popup -||kaizentraffic.com^$popup -||libedgolart.com^$popup -||lncredlbiedate.com^$popup -||misspkl.com^$popup -||moradu.com^$popup -||mptentry.com^$popup -||needlive.com^$popup -||njmaq.com^$popup -||notimoti.com^$popup -||nyetm2mkch.com^$popup -||passtechusa.com^$popup -||pd-news.com^$popup -||pinkberrytube.com^$popup -||playgirl.com^$popup -||plinx.net^$popup,third-party -||poweredbyliquidfire.mobi^$popup -||prodtraff.com^$popup -||quadrinhoseroticos.net^$popup -||rdvinfidele.club^$popup -||reporo.net^$popup -||restions-planted.com^$popup -||reviewdollars.com^$popup -||sascentral.com^$popup -||setravieso.com^$popup -||sexad.net^$popup -||sexemulator.com^$popup -||sexflirtbook.com^$popup -||sexintheuk.com^$popup -||sexmotors.com^$popup,third-party -||sexpennyauctions.com^$popup -||slut2fuck.net^$popup -||snapcheat.app^$popup -||socialsex.biz^$popup -||socialsex.com^$popup -||targetingnow.com^$popup -||trackvoluum.com^$popup -||traffic.club^$popup -||trafficbroker.com^$popup -||trafficstars.com^$popup -||traffictraffickers.com^$popup -||trkbc.com^$popup -||trkinator.com^$popup -||viensvoircesite.com^$popup -||vlexokrako.com^$popup -||watchmygf.com^$popup -||xdtraffic.com^$popup -||xmatch.com^$popup -||xpeeps.com^$popup,third-party -||xvika.com^$popup -||xxlargepop.com^$popup -||xxxjmp.com^$popup -||xxxmatch.com^$popup -||zononi.com^$popup -!-----------------------------Third-party adverts-----------------------------! -! *** easylist:easylist/easylist_thirdparty.txt *** -||000webhost.com/images/banners/ -||1048358656.rsc.cdn77.org^ -||1059265748.rsc.cdn77.org^ -||1080872514.rsc.cdn77.org^ -||1085549509.rsc.cdn77.org^ -||1089006802.rsc.cdn77.org^ -||1093958623.rsc.cdn77.org^ -||10945-2.s.cdn15.com^ -||10945-5.s.cdn15.com^ -||1138873808.rsc.cdn77.org^ -||1139724980.rsc.cdn77.org^ -||1147112108.rsc.cdn77.org^ -||1156219164.rsc.cdn77.org^ -||1175980934.rsc.cdn77.org^ -||1187531871.rsc.cdn77.org^ -||1199403312.rsc.cdn77.org^ -||1200932035.rsc.cdn77.org^ -||1201741305.rsc.cdn77.org^ -||1204491360.rsc.cdn77.org^ -||1273167513.rsc.cdn77.org^ -||1278977604.rsc.cdn77.org^ -||1288151678.rsc.cdn77.org^ -||1299757727.rsc.cdn77.org^ -||1312907885.rsc.cdn77.org^ -||1324827002.rsc.cdn77.org^ -||1325492758.rsc.cdn77.org^ -||1329677162.rsc.cdn77.org^ -||1365498388.rsc.cdn77.org^ -||1396762586.rsc.cdn77.org^ -||1406240621.rsc.cdn77.org^ -||1417571542.rsc.cdn77.org^ -||1437953666.rsc.cdn77.org^ -||1441085683.rsc.cdn77.org^ -||1448063843.rsc.cdn77.org^ -||1473763790.rsc.cdn77.org^ -||1482434718.rsc.cdn77.org^ -||1492697327.rsc.cdn77.org^ -||1498195232.rsc.cdn77.org^ -||1529462937.rsc.cdn77.org^ -||1538548069.rsc.cdn77.org^ -||1541233801.rsc.cdn77.org^ -||1543481067.rsc.cdn77.org^ -||1548164934.rsc.cdn77.org^ -||1564285319.rsc.cdn77.org^ -||1574705750.rsc.cdn77.org^ -||1593553817.rsc.cdn77.org^ -||1630422306.rsc.cdn77.org^ -||1675450967.rsc.cdn77.org^ -||1723614251.rsc.cdn77.org^ -||1736253261.rsc.cdn77.org^ -||1756119262.rsc.cdn77.org -||1759123620.rsc.cdn77.org^ -||1770542895.rsc.cdn77.org^ -||1810793056.rsc.cdn77.org^ -||1834071374.rsc.cdn77.org^ -||1896709103.rsc.cdn77.org^ -||1933201447.rsc.cdn77.org^ -||1946365241.rsc.cdn77.org^ -||1954342903.rsc.cdn77.org^ -||1957648849.rsc.cdn77.org^ -||1969301294.rsc.cdn77.org^ -||1979087343.rsc.cdn77.org^ -||1998469069.rsc.cdn77.org^ -||1wnurc.com^ -||26216.stunserver.net/a8.js -||360playvid.com^$third-party -||360playvid.info^$third-party -||a-delivery.rmbl.ws^ -||a.ucoz.net^ -||ad-blocking24.net^ -||ad-serve.b-cdn.net^ -||ad.22betpartners.com^ -||ad.about.co.kr^ -||ad.bitmedia.io^ -||ad.edugram.com^ -||ad.kubiccomps.icu^ -||ad.mail.ru/static/admanhtml/ -||ad.mail.ru^$~image,domain=~mail.ru|~sportmail.ru -||ad.moe.video^ -||ad.netmedia.hu^ -||ad.reklamport.com^ -||ad.tpmn.co.kr^ -||ad.video-mech.ru^ -||ad.wsod.com^ -||ad01.tmgrup.com.tr^ -||adaptv.advertising.com^ -||adcheck.about.co.kr^ -||adfoc.us^$script,third-party -||adinplay-venatus.workers.dev^ -||adncdnend.azureedge.net^ -||ads-api.production.nebula-drupal.stuff.co.nz^ -||ads-yallo-production.imgix.net^ -||ads.betfair.com^ -||ads.kelkoo.com^ -||ads.linkedin.com^ -||ads.saymedia.com^ -||ads.servebom.com^ -||ads.sportradar.com^ -||ads.travelaudience.com^ -||ads.viralize.tv^ -||ads.yahoo.com^$~image -||ads2.hsoub.com^ -||adsales.snidigital.com^ -||adsdk.microsoft.com^ -||adserver-2084671375.us-east-1.elb.amazonaws.com^ -||adserving.unibet.com^ -||adsinteractive-794b.kxcdn.com^ -||adtechvideo.s3.amazonaws.com^ -||advast.sibnet.ru^ -||adx-exchange.toast.com^ -||adx.opera.com^ -||aff.bstatic.com^ -||affiliate.heureka.cz^ -||affiliate.juno.co.uk^ -||affiliate.mediatemple.net^ -||affiliatepluginintegration.cj.com^ -||afternic.com/v1/aftermarket/landers/ -||ah.pricegrabber.com^ -||akamaized.net/mr/popunder.js -||alarmsportsnetwork.com^$third-party -||allorigins.win/raw?url=https%3A%2F%2Fpastebin.com%2Fraw%2F$xmlhttprequest -||allprivatekeys.com/static/banners/$third-party -||allsportsflix. -||alt63.chimeratool.com^ -||amazonaws.com/campaigns-ad/ -||amazonaws.com/mailcache.appinthestore.com/ -||an.yandex.ru^$domain=~e.mail.ru -||analytics.analytics-egain.com^ -||answers.sg/embed/ -||any.gs/visitScript/ -||api-player.globalsun.io/api/publishers/player/content?category_id=*&adserver_id=$xmlhttprequest -||api.140proof.com^ -||api.bitp.it^ -||api.localadswidget.com^ -||app.clickfunnels.com^$~stylesheet -||apps.media-lab.ai^ -||aspencore.com/syndication/v3/partnered-content/ -||assets.sheetmusicplus.com^$third-party -||audioad.zenomedia.com^ -||autodealer.co.za/inc/widget/ -||autotrader.ca/result/AutosAvailableListings.aspx? -||autotrader.co.za/partners/ -||award.sitekeuring.net^ -||awin1.com/cawshow.php$third-party -||awin1.com/cshow.php$third-party -||axm.am/am.ads.js -||azureedge.net/adtags/ -||b.marfeelcache.com/statics/marfeel/gardac-sync.js -||bankrate.com/jsfeeds/ -||banners.livepartners.com^ -||bc.coupons.com^ -||bc.vc/js/link-converter.js -||beauties-of-ukraine.com/export.js -||bescore.com/libs/e.js -||bet365.com/favicon.ico$third-party -||betclever.com/wp-admin/admin-ajax.php?action=coupons_widget_iframe&id=$third-party -||bharatmatrimony.com/matrimoney/matrimoneybanners/ -||bidder.criteo.com^ -||bidder.newspassid.com^ -||bidorbuy.co.za/jsp/tradesearch/TradeFeedPreview.jsp? -||bids.concert.io^ -||bigrock.in/affiliate/ -||bit.ly^$image,domain=tooxclusive.com -||bit.ly^$script,domain=dailyuploads.net|freeshot.live -||bitbond.com/affiliate-program/ -||bl.wavecdn.de^ -||blacklistednews.com/contentrotator/ -||blogatus.com/images/banner/$third-party -||bluehost-cdn.com/media/partner/images/ -||bluehost.com/track/ -||bluehost.com/web-hosting/domaincheckapi/?affiliate= -||bluepromocode.com/images/widgets/ -||bookingdragon.com^$subdocument,third-party -||br.coe777.com^ -||bs-adserver.b-cdn.net^ -||btguard.com/images/ -||btr.domywife.com^ -||bunkr.si/lazyhungrilyheadlicks.js -||bunkrr.su/lazyhungrilyheadlicks.js -||c.bannerflow.net^ -||c.bigcomics.win^ -||c2shb.pubgw.yahoo.com^ -||caffeine.tv/embed/$third-party -||campaigns.williamhill.com^ -||capital.com/widgets/$third-party -||careerwebsite.com/distrib_pages/jobs.cfm? -||carfax.com/img_myap/ -||cas.*.criteo.com^ -||cdn.ad.page^ -||cdn.ads.tapzin.com^ -||cdn.b2.ai^$third-party -||cdn.neighbourly.co.nz/widget/$subdocument -||cdn.vaughnsoft.net/abvs/ -||cdn.wt-api.top^ -||cdn22904910.ahacdn.me^ -||cdn4.life/media/ -||cdnpub.info^$subdocument,third-party,domain=~iqbroker.co|~iqbroker.com|~iqoption.co.th|~iqoption.com|~tr-iqoption.com -||cdnservices.net/megatag.js -||cex.io/img/b/ -||cex.io/informer/ -||chandrabinduad.com^$third-party -||chicoryapp.com^$third-party -||cl-997764a8.gcdn.co^ -||clarity.abacast.com^ -||click.alibaba.com^$subdocument,third-party -||click.aliexpress.com^$subdocument,third-party -||clickfunnels.com/assets/cfpop.js -||clickiocdn.com/hbadx/ -||clicknplay.to/api/spots/ -||cloud.setupad.com^ -||cloudbet.com/ad/ -||cloudfront.net/*.min.css$script,third-party -||cloudfront.net/css/*.min.js$script,third-party -||cloudfront.net/images/*-min.js$script,third-party -||cloudfront.net/js/script_tag/new/sca_affiliate_ -||coinmama.com/assets/img/banners/ -||commercial.daznservices.com^ -||contentexchange.me/widget/$third-party -||couponcp-a.akamaihd.net^ -||cpkshop.com/campaign/$third-party -||cpm.amateurcommunity.de^ -||cpmstar.com/cached/ -||cpmstar.com/view.aspx -||creatives.inmotionhosting.com^ -||crunchyroll.com/awidget/ -||cse.google.com/cse_v2/ads$subdocument -||cts.tradepub.com^ -||customer.heartinternet.co.uk^$third-party -||cuteonly.com/banners.php -||cxad.cxense.com^ -||d3mmnnn9s2dcmq.cloudfront.net/shim/embed.js -||dashboard.iproyal.com/img/b/ -||datacluster.club^ -||datafeedfile.com/widget/readywidget/ -||dawanda.com/widget/ -||ddownload.com/images/promo/$third-party -||dealextreme.com/affiliate_upload/ -||desperateseller.co.uk/affiliates/ -||digitaloceanspaces.com/woohoo/ -||disqus.com/ads-iframe/ -||disqus.com/listPromoted? -||dtrk.slimcdn.com^ -||dunhilltraveldeals.com^$third-party -||dx.com/affiliate/ -||e-tailwebstores.com/accounts/default1/banners/ -||earn-bitcoins.net/banner_ -||ecufiles.com/advertising/ -||elliottwave.com/fw/regular_leaderboard.js -||engine.eroge.com^ -||entainpartners.com/renderbanner.do? -||epnt.ebay.com^ -||escape.insites.eu^ -||espncdn.shop/nwm-dbh.min3.js -||etrader.kalahari.com^ -||etrader.kalahari.net^ -||extensoft.com/artisteer/banners/ -||facebook.com/audiencenetwork/$third-party -||familytreedna.com/img/affiliates/ -||fancybar.net/ac/fancybar.js?zoneid -||fapturbo.com/testoid/ -||fc.lc/CustomTheme/img/ref$third-party -||feedads.feedblitz.com^ -||fembedta.com/pub? -||fileboom.me/images/i/$third-party -||filterforge.com/images/banners/ -||financeads.net/tb.php$third-party -||findcouponspromos.com^$third-party -||flocdn.com/*/ads-coordinator/ -||flowplayer.com/releases/ads/ -||fp27ee.wac.systemcdn.net^ -||free-btc.org/banner/$third-party -||free.ovl.me^ -||freshbooks.com/images/banners/ -||futuresite.register.com/us? -||g.ezoic.net/ezosuigenerisc.js -||gadgets360.com/pricee/assets/affiliate/ -||gamer-network.net/plugins/dfp/ -||gamesports.net/monkey_ -||gamezop.com/creatives/$image,third-party -||gamezop.com^$subdocument,third-party -||gamingjobsonline.com/images/banner/ -||geobanner.friendfinder.com^$third-party -||get.cryptobrowser.site^ -||get.davincisgold.com^ -||get.paradise8.com^ -||get.thisisvegas.com^ -||gfxa.sheetmusicplus.com^ -||gg.caixin.com^ -||giftandgamecentral.com^ -||glam.com/app/ -||glam.com/gad/ -||go.affiliatesleague.com^ -||go.bloxplay.com^ -||go.ezodn.com^ -||go.onelink.me^$image,script -||goldmoney.com/~/media/Images/Banners/ -||google.com/adsense/domains/caf.js -||google.com/adsense/search/ads.js -||google.com/adsense/search/async-ads.js -||google.com/afs/ads? -||google.com/pagead/1p-user-list/ -||google.com/pagead/conversion_async.js -||google.com/pagead/drt/ -||google.com/pagead/landing? -||googleadapis.l.google.com^$third-party -||googleads.github.io^ -||googlesyndication.com/pagead/ -||googlesyndication.com/safeframe/ -||gopjn.com/b/ -||gopjn.com/i/ -||graph.org/file/$third-party -||groupon.com/javascripts/common/affiliate_widget/ -||grscty.com/images/banner/ -||gsniper.com/images/ -||hb.yahoo.net^ -||hbid.ams3.cdn.digitaloceanspaces.com^ -||heimalesssinpad.com/overroll/ -||hide-my-ip.com/promo/ -||highepcoffer.com/images/banners/ -||hitleap.com/assets/banner -||hostmonster.com/src/js/$third-party -||hostslick.com^$domain=fileditch.com -||hotlink.cc/promo/ -||hotwire-widget.dailywire.com^$third-party -||html-load.cc/script/$script -||httpslink.com/EdgeOfTheFire -||htvapps.com/ad_fallback/ -||huffpost.com/embed/connatix/$subdocument -||humix.com/video.js -||hvdt8.chimeratool.com^ -||ibvpn.com/img/banners/ -||ifoneunlock.com/*_banner_ -||imsynthesis.pro/banners/$third-party -||in.com/common/script_catch.js -||inbound-step.heavenmedia.com^$third-party -||incrementxplay.com/api/adserver/ -||indeed.fr/ads/ -||infibeam.com/affiliate/ -||inrdeals.com^$third-party -||instant-gaming.com/affgames/ -||ivisa.com/widgets/*utm_medium=affiliate$subdocument,third-party -||jam.hearstapps.com/js/renderer.js -||jinx.com/content/banner/ -||jobs.sciencecareers.org^$subdocument,third-party -||jobtarget.com/distrib_pages/ -||join.megaphonetv.com^$third-party -||js.bigcomics.win^ -||js.manga1001.win^ -||js.mangakl.su^ -||js.mangalove.top^ -||js.mangaraw.bid^ -||js.phoenixmanga.com^ -||js.surecart.com/v1/affiliates? -||jsdelivr.net/gh/InteractiveAdvertisingBureau/ -||jsdelivr.net/npm/prebid- -||jvzoo.com/assets/widget/ -||jwpcdn.com/player/*/googima.js -||jwpcdn.com/player/plugins/bidding/ -||jwpcdn.com/player/plugins/googima/ -||k8s-adserver-adserver-4b35ec6a1d-815734624.us-east-1.elb.amazonaws.com^ -||karma.mdpcdn.com^ -||keep2share.cc/images/i/$third-party -||kontera.com/javascript/lib/KonaLibInline.js -||lawdepot.com/affiliate/$third-party -||leadfamly.com/campaign/sdk/popup.min.js -||leads.media-tools.realestate.com.au/conversions.js -||legitonlinejobs.com/images/$third-party -||lesmeilleurs-jeux.net/images/ban/ -||lessemf.com/images/banner- -||libcdnjs.com/js/script.js -||libs.outbrain.com/video/$third-party -||link.link.ru^ -||linkconnector.com/tr.php -||linkconnector.com/traffic_record.php -||linkshrink.net^$script,third-party -||linkspy.cc/js/fullPageScript.min.js -||linkx.ix.tc^ -||lottoelite.com/banners/ -||ltkcdn.net/ltkrev.js -||magictag.digislots.in^ -||marketing.888.com^ -||marketools.plus500.com/feeds/ -||marketools.plus500.com/Widgets/ -||mbid.marfeelrev.com^ -||mcc.godaddy.com/park/ -||media.netrefer.com^ -||mediaplex.com/ad/ -||memesng.com/ads -||mktg.evvnt.com^$third-party -||mmin.io/embed/ -||mmosale.com/baner_images/ -||mmwebhandler.888.com^ -||monetize-static.viralize.tv^ -||moviedollars.com/dynamic_ads/ -||mps.nbcuni.com/fetch/ext/ -||mydirtyhobby.com^$third-party,domain=~my-dirty-hobby.com|~mydirtyhobby.de -||myfinance.com^$subdocument,third-party -||namecheap.com/graphics/linkus/ -||netnaija.com/s/$script -||neural.myth.dev^ -||news.smi2.ru^$third-party -||newsiqra.com^$subdocument,third-party -||nitroflare.com/img/banners/ -||noagentfees.com^$subdocument,domain=independent.com.mt -||oilofasia.com/images/banners/ -||onlinepromogift.com^ -||onnetwork.tv/widget/ -||ooproxy.azurewebsites.net^$xmlhttprequest,domain=imasdk.googleapis.com -||orangebuddies.nl/image/banners/ -||outbrainimg.com/transform/$media,third-party -||owebsearch.com^$third-party -||p.jwpcdn.com/player/plugins/vast/ -||p.smartertravel.com^ -||pacontainer.s3.amazonaws.com^ -||pagead2.googlesyndication.com^ -||pages.etoro.com/widgets/$third-party -||paicdn.privateapi.click^ -||parking.godaddy.com^$third-party -||partner-app.softwareselect.com^ -||partner.e-conomic.com^ -||partner.vecteezy.com^ -||partners.betus.com^ -||partners.dogtime.com^ -||partners.etoro.com^$third-party -||partners.hostgator.com^ -||partners.rochen.com^ -||payza.com/images/banners/ -||pb.s3wfg.com^ -||perfectmoney.com/img/banners/ -||phonephotographytricks.com/images/banners/ -||pics.firstload.de^ -||pips.taboola.com^ -||pjatr.com^$image,script -||pjtra.com^$image,script -||play-asia.com^$image,subdocument,third-party -||player.globalsun.io/player/videojs-contrib-ads$script,third-party -||plchldr.co^$third-party -||plista.com/async_lib.js? -||plista.com/tiny/$third-party -||plus.net/images/referrals/ -||pngmart.com/files/10/Download-Now-Button-PNG-Free-Download.png -||pntra.com^$image,script -||pntrac.com^$image,script -||pntrs.com^$image,script -||popmog.com^ -||pr.costaction.com^$third-party -||press-start.com/affgames/ -||privateinternetaccess.com^$script,third-party,xmlhttprequest -||privatejetfinder.com/skins/partners/$third-party -||probid.ai^$third-party -||promos.fling.com^ -||promote.pair.com/88x31.pl -||protected-redirect.click^ -||proto2ad.durasite.net^ -||proxy6.net/static/img/b/ -||proxysolutions.net/affiliates/ -||pubfeed.linkby.com^ -||public.porn.fr^$third-party -||publish0x.com^$image,script,third-party -||purevpn.com/affiliates/ -||pushtoast-a.akamaihd.net^ -||qsearch-a.akamaihd.net^ -||racebets.com/media.php? -||random-affiliate.atimaze.com^ -||rapidgator.net/images/pics/510_468%D1%8560_1.gif -||readme.ru/informer/ -||recipefy.net/rssfeed.php -||redirect-ads.com^$~subdocument,third-party -||redtram.com^$script,third-party -||refershareus.xyz/ads? -||refinery89.com/performance/ -||reiclub.com/templates/interviews/exit_popup/ -||remax-malta.com/widget_new/$third-party -||rentalcars.com/partners/ -||resellerratings.com/popup/include/popup.js -||rotabanner.kulichki.net^ -||rotator.tradetracker.net^ -||rubylife.go2cloud.org^ -||s1.wp.com^$subdocument,third-party -||saambaa.com^$third-party -||safarinow.com/affiliate-zone/ -||safelinku.com/js/web-script.js -||sailthru.com^*/horizon.js -||sascdn.com/config.js -||sascdn.com/diff/$image,script -||sascdn.com/tag/ -||saveit.us/img/$third-party -||sbhc.portalhc.com^ -||sbitany.com^*/affiliate/$third-party -||screen13.com/publishers/ -||sdk.apester.com/*.adsbygoogle.min.js -||sdk.apester.com/*.Monetization.min.js -||search-carousel-widget.snc-prod.aws.cinch.co.uk^ -||secure.money.com^$third-party -||service.smscoin.com/js/sendpic.js -||services.zam.com^ -||shareasale.com/image/$third-party -||shink.in/js/script.js -||shopmyshelf.us^$third-party -||shorte.st/link-converter.min.js -||signup.asurion.com^$subdocument -||siteground.com/img/affiliate/ -||siteground.com/img/banners/ -||siteground.com/static/affiliate/$third-party -||skimresources.com^$script,subdocument,third-party -||slysoft.com/img/banner/ -||smartads.statsperform.com^ -||smartdestinations.com/ai/ -||snacklink.co/js/web-script.js -||snacktools.net/bannersnack/$domain=~bannersnack.dev -||socialmonkee.com/images/ -||sorcerers.net/includes/butler/ -||squirrels.getsquirrel.co^ -||srv.dynamicyield.com^ -||srv.tunefindforfans.com^ -||srx.com.sg/srx/media/ -||ssl-images-amazon.com/images/*/DAsf- -||ssl-images-amazon.com/images/*/MAsf- -||static.ifruplink.net/static_src/mc-banner/ -||static.prd.datawars.io/static/promo/ -||static.sunmedia.tv/integrations/ -||static.tradetracker.net^$third-party -||staticmisc.blob.core.windows.net^$domain=onecompiler.com -||stay22.com/api/sponsors/ -||storage.googleapis.com/adtags/ -||storage.googleapis.com/ba_utils/stab.js -||streambeast.io/aclib.js -||stunserver.net/frun.js -||sunflowerbright104.io/sdk.js -||sunflowerbright109.io/sdk.js -||supply.upjers.com^ -||surdotly.com/js/Surly.min.js -||surveymonkey.com/jspop.aspx? -||sweeva.com/images/banner250.gif -||syndicate.payloadz.com^ -||t.co^$subdocument,domain=kshow123.tv -||taboola.com/vpaid/ -||tag.regieci.com^ -||tags.profitsence.com^ -||takefile.link/promo/$third-party -||targeting.vdo.ai^ -||tcadserver.rain-digital.ca^ -||tech426.com/pub/ -||textlinks.com/images/banners/ -||thefreesite.com/nov99bannov.gif -||themespixel.net/banners/ -||thscore.fun/mn/ -||ti.tradetracker.net^ -||tillertag-a.akamaihd.net^ -||toplist.raidrush.ws^$third-party -||torrindex.net/images/ads/ -||torrindex.net/images/epv/ -||torrindex.net/static/tinysort.min.js -||totalmedia2.ynet.co.il/new_gpt/ -||townnews.com/tucson.com/content/tncms/live/libraries/flex/components/ads_dfp/ -||tra.scds.pmdstatic.net/advertising-core/ -||track.10bet.com^ -||track.effiliation.com^$image,script -||traffer.biz/img/banners/ -||travel.mediaalpha.com/js/serve.js -||trendads.reactivebetting.com^ -||trstx.org/overroll/ -||truex.com/js/client.js -||trvl-px.com/trvl-px/ -||turb.cc/fd1/img/promo/ -||typicalstudent.org^$third-party -||ummn.nu^$subdocument -||universal.wgplayer.com^ -||uploaded.net/img/public/$third-party -||utility.rogersmedia.com/wrapper.js -||vhanime.com/js/bnanime.js -||viadata.store^$third-party -||vice-publishers-cdn.vice.com^ -||vidcrunch.com/integrations/$script,third-party -||video-ads.a2z.com^ -||videosvc.ezoic.com^ -||vidoomy.com/api/adserver/ -||vidsrc.pro/uwu-js/binged.in -||viralize.tv/t-bid-opportunity/ -||virool.com/widgets/ -||vpnrice.com/a/p.js -||vrixon.com/adsdk/ -||vultr.com/media/banner -||vuukle.com/ads/ -||vv.7vid.net^ -||web-hosting.net.my/banner/ -||web.adblade.com^ -||webapps.leasing.com^ -||webseed.com/WP/ -||weby.aaas.org^ -||whatismyipaddress.cyou/assets/images/ip-banner.png -||wheelify.cartzy.com^ -||widget.engageya.com/engageya_loader.js -||widget.golfscape.com^ -||widget.searchschoolsnetwork.com^ -||widget.sellwild.com^ -||widget.shopstyle.com^ -||widgets.business.com^ -||widgets.lendingtree.com^ -||widgets.monito.com^$third-party -||widgets.oddschecker.com^ -||widgets.outbrain.com^*/widget.js -||widgets.progrids.com^ -||widgets.tree.com^ -||winonexd.b-cdn.net^ -||wistia.com/assets/external/googleAds.js -||wixlabs-adsense-v3.uc.r.appspot.com^ -||wowtcgloot.com/share/?d=$third-party -||wp.com/assets.sheetmusicplus.com/banner/ -||wp.com/assets.sheetmusicplus.com/smp/ -||wp.com/bugsfighter.com/wp-content/uploads/2016/07/adguard-banner.png -||wpb.wgplayer.com^ -||wpengine.com/wp-json/api/advanced_placement/api-in-article-ad/ -||wpzoom.com/images/aff/ -||ws.amazon.*/widgets/$third-party -||wsimg.com/parking-lander/ -||yahoo.com/bidRequest -||yastatic.net/pcode/adfox/header-bidding.js -||yield-op-idsync.live.streamtheworld.com^ -||yimg.com/dy/ads/native.js -||yimg.com/dy/ads/readmo.js -||z3x-team.com/wp-content/*-banner- -||zergnet.com/zerg.js -||ziffstatic.com/pg/ -||ziffstatic.com/zmg/pogoadk.js -||zv.7vid.net^ -! CNAME -! https://d3ward.github.io/toolz/src/adblock.html -||ad.intl.xiaomi.com^ -||ad.samsungadhub.com^ -||ad.xiaomi.com^ -||samsungadhub.com^$third-party -! amazonaws (ad-fix) -/^https?:\/\/s3\.*.*\.amazonaws\.com\/[a-f0-9]{45,}\/[a-f,0-9]{8,10}$/$script,third-party,xmlhttprequest,domain=~amazon.com -||s3.amazonaws.com^*/f10ac63cd7 -||s3.amazonaws.com^*/secure.js -! charlotteobserver.com (audio advert) -||tsbluebox.com^$third-party -! cloudfront hosted -||d10ce3z4vbhcdd.cloudfront.net^ -||d10lumateci472.cloudfront.net^ -||d10lv7w3g0jvk9.cloudfront.net^ -||d10nkw6w2k1o10.cloudfront.net^ -||d10wfab8zt419p.cloudfront.net^ -||d10zmv6hrj5cx1.cloudfront.net^ -||d114isgihvajcp.cloudfront.net^ -||d1180od816jent.cloudfront.net^ -||d11enq2rymy0yl.cloudfront.net^ -||d11hjbdxxtogg5.cloudfront.net^ -||d11p7gi4d9x2s0.cloudfront.net^ -||d11qytb9x1vnrm.cloudfront.net^ -||d11tybz5ul8vel.cloudfront.net^ -||d11zevc9a5598r.cloudfront.net^ -||d126kahie2ogx0.cloudfront.net^ -||d127s3e8wcl3q6.cloudfront.net^ -||d12czbu0tltgqq.cloudfront.net^ -||d12dky1jzngacn.cloudfront.net^ -||d12t7h1bsbq1cs.cloudfront.net^ -||d12tu1kocp8e8u.cloudfront.net^ -||d12ylqdkzgcup5.cloudfront.net^ -||d13gni3sfor862.cloudfront.net^ -||d13j11nqjt0s84.cloudfront.net^ -||d13k7prax1yi04.cloudfront.net^ -||d13pxqgp3ixdbh.cloudfront.net^ -||d13vul5n9pqibl.cloudfront.net^ -||d140sbu1b1m3h0.cloudfront.net^ -||d141wsrw9m4as6.cloudfront.net^ -||d142i1hxvwe38g.cloudfront.net^ -||d145ghnzqbsasr.cloudfront.net^ -||d14821r0t3377v.cloudfront.net^ -||d14l1tkufmtp1z.cloudfront.net^ -||d14zhsq5aop7ap.cloudfront.net^ -||d154nw1c88j0q6.cloudfront.net^ -||d15bcy38hlba76.cloudfront.net^ -||d15gt9gwxw5wu0.cloudfront.net^ -||d15jg7068qz6nm.cloudfront.net^ -||d15kdpgjg3unno.cloudfront.net^ -||d15kuuu3jqrln7.cloudfront.net^ -||d15mt77nzagpnx.cloudfront.net^ -||d162nnmwf9bggr.cloudfront.net^ -||d16saj1xvba76n.cloudfront.net^ -||d16sobzswqonxq.cloudfront.net^ -||d175dtblugd1dn.cloudfront.net^ -||d17757b88bjr2y.cloudfront.net^ -||d17c5vf4t6okfg.cloudfront.net^ -||d183xvcith22ty.cloudfront.net^ -||d1856n6bep9gel.cloudfront.net^ -||d188elxamt3utn.cloudfront.net^ -||d188m5xxcpvuue.cloudfront.net^ -||d18b5y9gp0lr93.cloudfront.net^ -||d18e74vjvmvza1.cloudfront.net^ -||d18g6t7whf8ejf.cloudfront.net^ -||d18hqfm1ev805k.cloudfront.net^ -||d18kg2zy9x3t96.cloudfront.net^ -||d18mealirgdbbz.cloudfront.net^ -||d18myvrsrzjrd7.cloudfront.net^ -||d18ql5xgy7gz3p.cloudfront.net^ -||d18t35yyry2k49.cloudfront.net^ -||d192g7g8iuw79c.cloudfront.net^ -||d192r5l88wrng7.cloudfront.net^ -||d199kwgcer5a6q.cloudfront.net^ -||d19bpqj0yivlb3.cloudfront.net^ -||d19gkl2iaav80x.cloudfront.net^ -||d19y03yc9s7c1c.cloudfront.net^ -||d1a3jb5hjny5s4.cloudfront.net^ -||d1aa9f6zukqylf.cloudfront.net^ -||d1ac2du043ydir.cloudfront.net^ -||d1aezk8tun0dhm.cloudfront.net^ -||d1aiciyg0qwvvr.cloudfront.net^ -||d1ap9gbbf77h85.cloudfront.net^ -||d1appgm50chwbg.cloudfront.net^ -||d1aqvw7cn4ydzo.cloudfront.net^ -||d1aukpqf83rqhe.cloudfront.net^ -||d1ayv3a7nyno3a.cloudfront.net^ -||d1az618or4kzj8.cloudfront.net^ -||d1aznprfp4xena.cloudfront.net^ -||d1azpphj80lavy.cloudfront.net^ -||d1b240xv9h0q8y.cloudfront.net^ -||d1b499kr4qnas6.cloudfront.net^ -||d1b7aq9bn3uykv.cloudfront.net^ -||d1b9b1cxai2c03.cloudfront.net^ -||d1bad9ankyq5eg.cloudfront.net^ -||d1bci271z7i5pg.cloudfront.net^ -||d1betjlqogdr97.cloudfront.net^ -||d1bf1sb7ks8ojo.cloudfront.net^ -||d1bi6hxlc51jjw.cloudfront.net^ -||d1bioqbsunwnrb.cloudfront.net^ -||d1bkis4ydqgspg.cloudfront.net^ -||d1bxkgbbc428vi.cloudfront.net^ -||d1cg2aopojxanm.cloudfront.net^ -||d1clmik8la8v65.cloudfront.net^ -||d1crfzlys5jsn1.cloudfront.net^ -||d1crt12zco2cvf.cloudfront.net^ -||d1csp7vj6qqoa6.cloudfront.net^ -||d1d7hwtv2l91pm.cloudfront.net^ -||d1dh1gvx7p0imm.cloudfront.net^ -||d1diqetif5itzx.cloudfront.net^ -||d1djrodi2reo2w.cloudfront.net^ -||d1e28xq8vu3baf.cloudfront.net^ -||d1e3vw6pz2ty1m.cloudfront.net^ -||d1e9rtdi67kart.cloudfront.net^ -||d1ebha2k07asm5.cloudfront.net^ -||d1eeht7p8f5lpk.cloudfront.net^ -||d1eknpz7w55flg.cloudfront.net^ -||d1err2upj040z.cloudfront.net^ -||d1esebcdm6wx7j.cloudfront.net^ -||d1ev4o49j4zqc3.cloudfront.net^ -||d1ev866ubw90c6.cloudfront.net^ -||d1eyw3m16hfg9c.cloudfront.net^ -||d1ezlc9vy4yc7g.cloudfront.net^ -||d1f05vr3sjsuy7.cloudfront.net^ -||d1f52ha44xvggk.cloudfront.net^ -||d1f5r3d462eit5.cloudfront.net^ -||d1f7vr2umogk27.cloudfront.net^ -||d1f9tkqiyb5a97.cloudfront.net^ -||d1fs2ef81chg3.cloudfront.net^ -||d1g2nud28z4vph.cloudfront.net^ -||d1g4493j0tcwvt.cloudfront.net^ -||d1g4xgvlcsj49g.cloudfront.net^ -||d1g8forfjnu2jh.cloudfront.net^ -||d1ha41wacubcnb.cloudfront.net^ -||d1hgdmbgioknig.cloudfront.net^ -||d1hnmxbg6rp2o6.cloudfront.net^ -||d1hogxc58mhzo9.cloudfront.net^ -||d1i11ea1m0er9t.cloudfront.net^ -||d1i3h541wbnrfi.cloudfront.net^ -||d1i76h1c9mme1m.cloudfront.net^ -||d1igvjcl1gjs62.cloudfront.net^ -||d1ilwohzbe4ao6.cloudfront.net^ -||d1izuvv2qy7hel.cloudfront.net^ -||d1j1m9awq6n3x3.cloudfront.net^ -||d1j2jv7bvcsxqg.cloudfront.net^ -||d1j47wsepxe9u2.cloudfront.net^ -||d1j6limf657foe.cloudfront.net^ -||d1j818d3wapogd.cloudfront.net^ -||d1j9qsxe04m2ki.cloudfront.net^ -||d1jcj9gy98l90g.cloudfront.net^ -||d1jnvfp2m6fzvq.cloudfront.net^ -||d1juimniehopp3.cloudfront.net^ -||d1jwpd11ofhd5g.cloudfront.net^ -||d1k8mqc61fowi.cloudfront.net^ -||d1ks8roequxbwa.cloudfront.net^ -||d1ktmtailsv07c.cloudfront.net^ -||d1kttpj1t6674w.cloudfront.net^ -||d1kwkwcfmhtljq.cloudfront.net^ -||d1kx6hl0p7bemr.cloudfront.net^ -||d1kzm6rtbvkdln.cloudfront.net^ -||d1l906mtvq85kd.cloudfront.net^ -||d1lihuem8ojqxz.cloudfront.net^ -||d1lky2ntb9ztpd.cloudfront.net^ -||d1lnjzqqshwcwg.cloudfront.net^ -||d1lo4oi08ke2ex.cloudfront.net^ -||d1lxhc4jvstzrp.cloudfront.net^ -||d1mar6i7bkj1lr.cloudfront.net^ -||d1mbgf0ge24riu.cloudfront.net^ -||d1mbihpm2gncx7.cloudfront.net^ -||d1mcwmzol446xa.cloudfront.net^ -||d1my7gmbyaxdyn.cloudfront.net^ -||d1n1ppeppre6d4.cloudfront.net^ -||d1n3aexzs37q4s.cloudfront.net^ -||d1n3tk65esqc4k.cloudfront.net^ -||d1n5jb3yqcxwp.cloudfront.net^ -||d1n6jx7iu0qib6.cloudfront.net^ -||d1ndpste0fy3id.cloudfront.net^ -||d1nkvehlw5hmj4.cloudfront.net^ -||d1nmxiiewlx627.cloudfront.net^ -||d1nnhbi4g0kj5.cloudfront.net^ -||d1now6cui1se29.cloudfront.net^ -||d1nssfq3xl2t6b.cloudfront.net^ -||d1nubxdgom3wqt.cloudfront.net^ -||d1nv2vx70p2ijo.cloudfront.net^ -||d1nx2jii03b4ju.cloudfront.net^ -||d1o1guzowlqlts.cloudfront.net^ -||d1of5w8unlzqtg.cloudfront.net^ -||d1okyw2ay5msiy.cloudfront.net^ -||d1ol7fsyj96wwo.cloudfront.net^ -||d1on4urq8lvsb1.cloudfront.net^ -||d1or04kku1mxl9.cloudfront.net^ -||d1oykxszdrgjgl.cloudfront.net^ -||d1p0vowokmovqz.cloudfront.net^ -||d1p3zboe6tz3yy.cloudfront.net^ -||d1p7gp5w97u7t7.cloudfront.net^ -||d1pdf4c3hchi80.cloudfront.net^ -||d1pn3cn3ri604k.cloudfront.net^ -||d1pvpz0cs1cjk8.cloudfront.net^ -||d1q0x5umuwwxy2.cloudfront.net^ -||d1q4x2p7t0gq14.cloudfront.net^ -||d1qc76gneygidm.cloudfront.net^ -||d1qggq1at2gusn.cloudfront.net^ -||d1qk9ujrmkucbl.cloudfront.net^ -||d1qow5kxfhwlu8.cloudfront.net^ -||d1r3ddyrqrmcjv.cloudfront.net^ -||d1r90st78epsag.cloudfront.net^ -||d1r9f6frybgiqo.cloudfront.net^ -||d1rguclfwp7nc8.cloudfront.net^ -||d1rkd1d0jv6skn.cloudfront.net^ -||d1rkf0bq85yx06.cloudfront.net^ -||d1rp4yowwe587e.cloudfront.net^ -||d1rsh847opos9y.cloudfront.net^ -||d1s4mby8domwt9.cloudfront.net^ -||d1sboz88tkttfp.cloudfront.net^ -||d1sfclevshpbro.cloudfront.net^ -||d1sjz3r2x2vk2u.cloudfront.net^ -||d1sowp9ayjro6j.cloudfront.net^ -||d1spc7iz1ls2b1.cloudfront.net^ -||d1sqvt36mg3t1b.cloudfront.net^ -||d1sytkg9v37f5q.cloudfront.net^ -||d1t38ngzzazukx.cloudfront.net^ -||d1t671k72j9pxc.cloudfront.net^ -||d1t8it0ywk3xu.cloudfront.net^ -||d1tizxwina1bjc.cloudfront.net^ -||d1tt3ye7u0e0ql.cloudfront.net^ -||d1tttug1538qv1.cloudfront.net^ -||d1twn22x8kvw17.cloudfront.net^ -||d1u1byonn4po0b.cloudfront.net^ -||d1u5ibtsigyagv.cloudfront.net^ -||d1uae3ok0byyqw.cloudfront.net^ -||d1uc64ype5braa.cloudfront.net^ -||d1ue5xz1lnqk0d.cloudfront.net^ -||d1ugiptma3cglb.cloudfront.net^ -||d1ukp4rdr0i4nl.cloudfront.net^ -||d1upt0rqzff34l.cloudfront.net^ -||d1ux93ber9vlwt.cloudfront.net^ -||d1uzjiv6zzdlbc.cloudfront.net^ -||d1voskqidohxxs.cloudfront.net^ -||d1vqm5k0hezeau.cloudfront.net^ -||d1w24oanovvxvg.cloudfront.net^ -||d1w5452x8p71hs.cloudfront.net^ -||d1wbjksx0xxdn3.cloudfront.net^ -||d1wc0ojltqk24g.cloudfront.net^ -||d1wd81rzdci3ru.cloudfront.net^ -||d1wi563t0137vz.cloudfront.net^ -||d1wjz6mrey9f5v.cloudfront.net^ -||d1wv5x2u0qrvjw.cloudfront.net^ -||d1xdxiqs8w12la.cloudfront.net^ -||d1xivydscggob7.cloudfront.net^ -||d1xkyo9j4r7vnn.cloudfront.net^ -||d1xo0f2fdn5no0.cloudfront.net^ -||d1xw8yqtkk9ae5.cloudfront.net^ -||d1y3xnqdd6pdbo.cloudfront.net^ -||d1yaf4htak1xfg.cloudfront.net^ -||d1ybdlg8aoufn.cloudfront.net^ -||d1yeqwgi8897el.cloudfront.net^ -||d1ytalcrl612d7.cloudfront.net^ -||d1yyhdmsmo3k5p.cloudfront.net^ -||d1z1vj4sd251u9.cloudfront.net^ -||d1z2jf7jlzjs58.cloudfront.net^ -||d1z58p17sqvg6o.cloudfront.net^ -||d1zjpzpoh45wtm.cloudfront.net^ -||d1zjr9cc2zx7cg.cloudfront.net^ -||d1zrs4deyai5xm.cloudfront.net^ -||d1zw85ny9dtn37.cloudfront.net^ -||d1zw8evbrw553l.cloudfront.net^ -||d1zy4z3rd7svgh.cloudfront.net^ -||d1zzcae3f37dfx.cloudfront.net^ -||d200108c6x0w2v.cloudfront.net^ -||d204slsrhoah2f.cloudfront.net^ -||d205jrj5h1616x.cloudfront.net^ -||d20903hof2l33q.cloudfront.net^ -||d20kfqepj430zj.cloudfront.net^ -||d20nuqz94uw3np.cloudfront.net^ -||d20tam5f2v19bf.cloudfront.net^ -||d213cc9tw38vai.cloudfront.net^ -||d219kvfj8xp5vh.cloudfront.net^ -||d21f25e9uvddd7.cloudfront.net^ -||d21m5j4ptsok5u.cloudfront.net^ -||d21rpkgy8pahcu.cloudfront.net^ -||d21rudljp9n1rr.cloudfront.net^ -||d223xrf0cqrzzz.cloudfront.net^ -||d227cncaprzd7y.cloudfront.net^ -||d227n6rw2vv5cw.cloudfront.net^ -||d22ffr6srkd9zx.cloudfront.net^ -||d22lbkjf2jpzr9.cloudfront.net^ -||d22lo5bcpq2fif.cloudfront.net^ -||d22rmxeq48r37j.cloudfront.net^ -||d22sfab2t5o9bq.cloudfront.net^ -||d22xmn10vbouk4.cloudfront.net^ -||d22z575k8abudv.cloudfront.net^ -||d236v5t33fsfwk.cloudfront.net^ -||d23a1izvegnhq4.cloudfront.net^ -||d23d7sc86jmil5.cloudfront.net^ -||d23guct4biwna6.cloudfront.net^ -||d23pdhuxarn9w2.cloudfront.net^ -||d23spca806c5fu.cloudfront.net^ -||d23xhr62nxa8qo.cloudfront.net^ -||d24502rd02eo9t.cloudfront.net^ -||d2483bverkkvsp.cloudfront.net^ -||d24g87zbxr4yiz.cloudfront.net^ -||d24iusj27nm1rd.cloudfront.net^ -||d25dfknw9ghxs6.cloudfront.net^ -||d25xkbr68qqtcn.cloudfront.net^ -||d261u4g5nqprix.cloudfront.net^ -||d264dxqvolp03e.cloudfront.net^ -||d26adrx9c3n0mq.cloudfront.net^ -||d26e5rmb2qzuo3.cloudfront.net^ -||d26p9ecwyy9zqv.cloudfront.net^ -||d26yfyk0ym2k1u.cloudfront.net^ -||d27genukseznht.cloudfront.net^ -||d27gtglsu4f4y2.cloudfront.net^ -||d27pxpvfn42pgj.cloudfront.net^ -||d27qffx6rqb3qm.cloudfront.net^ -||d27tzcmp091qxd.cloudfront.net^ -||d27x9po2cfinm5.cloudfront.net^ -||d28exbmwuav7xa.cloudfront.net^ -||d28quk6sxoh2w5.cloudfront.net^ -||d28s7kbgrs6h2f.cloudfront.net^ -||d28u86vqawvw52.cloudfront.net^ -||d28uhswspmvrhb.cloudfront.net^ -||d28xpw6kh69p7p.cloudfront.net^ -||d2906506rwyvg2.cloudfront.net^ -||d29bsjuqfmjd63.cloudfront.net^ -||d29dbajta0the9.cloudfront.net^ -||d29dzo8owxlzou.cloudfront.net^ -||d29i6o40xcgdai.cloudfront.net^ -||d29mxewlidfjg1.cloudfront.net^ -||d2a80scaiwzqau.cloudfront.net^ -||d2b4jmuffp1l21.cloudfront.net^ -||d2bbq3twedfo2f.cloudfront.net^ -||d2bkkt3kqfmyo0.cloudfront.net^ -||d2bvfdz3bljcfk.cloudfront.net^ -||d2bxxk33t58v29.cloudfront.net^ -||d2byenqwec055q.cloudfront.net^ -||d2c4ylitp1qu24.cloudfront.net^ -||d2c8v52ll5s99u.cloudfront.net^ -||d2camyomzxmxme.cloudfront.net^ -||d2cgumzzqhgmdu.cloudfront.net^ -||d2cmh8xu3ncrj2.cloudfront.net^ -||d2cq71i60vld65.cloudfront.net^ -||d2d8qsxiai9qwj.cloudfront.net^ -||d2db10c4rkv9vb.cloudfront.net^ -||d2dkurdav21mkk.cloudfront.net^ -||d2dyjetg3tc2wn.cloudfront.net^ -||d2e30rravz97d4.cloudfront.net^ -||d2e5x3k1s6dpd4.cloudfront.net^ -||d2e7rsjh22yn3g.cloudfront.net^ -||d2edfzx4ay42og.cloudfront.net^ -||d2ei3pn5qbemvt.cloudfront.net^ -||d2eklqgy1klqeu.cloudfront.net^ -||d2ele6m9umnaue.cloudfront.net^ -||d2elslrg1qbcem.cloudfront.net^ -||d2enprlhqqv4jf.cloudfront.net^ -||d2er1uyk6qcknh.cloudfront.net^ -||d2ers4gi7coxau.cloudfront.net^ -||d2eyuq8th0eqll.cloudfront.net^ -||d2f0ixlrgtk7ff.cloudfront.net^ -||d2f0uviei09pxb.cloudfront.net^ -||d2fbkzyicji7c4.cloudfront.net^ -||d2fbvay81k4ji3.cloudfront.net^ -||d2fhrdu08h12cc.cloudfront.net^ -||d2fmtc7u4dp7b2.cloudfront.net^ -||d2focgxak1cn74.cloudfront.net^ -||d2foi16y3n0s3e.cloudfront.net^ -||d2fsfacjuqds81.cloudfront.net^ -||d2g6dhcga4weul.cloudfront.net^ -||d2g8ksx1za632p.cloudfront.net^ -||d2g9nmtuil60cb.cloudfront.net^ -||d2ga0x5nt7ml6e.cloudfront.net^ -||d2gc6r1h15ux9j.cloudfront.net^ -||d2ghscazvn398x.cloudfront.net^ -||d2glav2919q4cw.cloudfront.net^ -||d2h2t5pll64zl8.cloudfront.net^ -||d2h7xgu48ne6by.cloudfront.net^ -||d2h85i07ehs6ej.cloudfront.net^ -||d2ho1n52p59mwv.cloudfront.net^ -||d2hvwfg7vv4mhf.cloudfront.net^ -||d2i4wzwe8j1np9.cloudfront.net^ -||d2i55s0cnk529c.cloudfront.net^ -||d2it3a9l98tmsr.cloudfront.net^ -||d2izcn32j62dtp.cloudfront.net^ -||d2j042cj1421wi.cloudfront.net^ -||d2j71mqxljhlck.cloudfront.net^ -||d2jgbcah46jjed.cloudfront.net^ -||d2jgp81mjwggyr.cloudfront.net^ -||d2jp0uspx797vc.cloudfront.net^ -||d2jp87c2eoduan.cloudfront.net^ -||d2jtzjb71xckmj.cloudfront.net^ -||d2juccxzu13rax.cloudfront.net^ -||d2jw88zdm5mi8i.cloudfront.net^ -||d2k487jakgs1mb.cloudfront.net^ -||d2k7b1tjy36ro0.cloudfront.net^ -||d2k7gvkt8o1fo8.cloudfront.net^ -||d2kadvyeq051an.cloudfront.net^ -||d2kd9y1bp4zc6.cloudfront.net^ -||d2khpmub947xov.cloudfront.net^ -||d2kk0o3fr7ed01.cloudfront.net^ -||d2klx87bgzngce.cloudfront.net^ -||d2km1jjvhgh7xw.cloudfront.net^ -||d2kpucccxrl97x.cloudfront.net^ -||d2ksh1ccat0a7e.cloudfront.net^ -||d2l3f1n039mza.cloudfront.net^ -||d2lahoz916es9g.cloudfront.net^ -||d2lg0swrp15nsj.cloudfront.net^ -||d2lmzq02n8ij7j.cloudfront.net^ -||d2lp70uu6oz7vk.cloudfront.net^ -||d2ltukojvgbso5.cloudfront.net^ -||d2lxammzjarx1n.cloudfront.net^ -||d2m785nxw66jui.cloudfront.net^ -||d2mic0r0bo3i6z.cloudfront.net^ -||d2mqdhonc9glku.cloudfront.net^ -||d2muzdhs7lpmo0.cloudfront.net^ -||d2mw3lu2jj5laf.cloudfront.net^ -||d2n2qdkjbbe2l7.cloudfront.net^ -||d2n726m6x5iwwx.cloudfront.net^ -||d2na2p72vtqyok.cloudfront.net^ -||d2nin2iqst0txp.cloudfront.net^ -||d2nlytvx51ywh9.cloudfront.net^ -||d2nz8k4xyoudsx.cloudfront.net^ -||d2o03z2xnyxlz5.cloudfront.net^ -||d2o51l6pktevii.cloudfront.net^ -||d2ob4whwpjvvpa.cloudfront.net^ -||d2ohmkyg5w2c18.cloudfront.net^ -||d2ojfulajn60p5.cloudfront.net^ -||d2oouw5449k1qr.cloudfront.net^ -||d2osk0po1oybwz.cloudfront.net^ -||d2ov8ip31qpxly.cloudfront.net^ -||d2ovgc4ipdt6us.cloudfront.net^ -||d2oxs0429n9gfd.cloudfront.net^ -||d2oy22m6xey08r.cloudfront.net^ -||d2p3vqj5z5rdwv.cloudfront.net^ -||d2pdbggfzjbhzh.cloudfront.net^ -||d2pnacriyf41qm.cloudfront.net^ -||d2psma0az3acui.cloudfront.net^ -||d2pspvbdjxwkpo.cloudfront.net^ -||d2pxbld8wrqyrk.cloudfront.net^ -||d2q52i8yx3j68p.cloudfront.net^ -||d2q7jbv4xtaizs.cloudfront.net^ -||d2q9y3krdwohfj.cloudfront.net^ -||d2qf34ln5axea0.cloudfront.net^ -||d2qfd8ejsuejas.cloudfront.net^ -||d2qhg50jab93jy.cloudfront.net^ -||d2qn0djb6oujlt.cloudfront.net^ -||d2qnx6y010m4rt.cloudfront.net^ -||d2qqc8ssywi4j6.cloudfront.net^ -||d2qz7ofajpstv5.cloudfront.net^ -||d2r2yqcp8sshc6.cloudfront.net^ -||d2r3rw91i5z1w9.cloudfront.net^ -||d2rd7z2m36o6ty.cloudfront.net^ -||d2rsvcm1r8uvmf.cloudfront.net^ -||d2rx475ezvxy0h.cloudfront.net^ -||d2s31asn9gp5vl.cloudfront.net^ -||d2s9nyc35a225l.cloudfront.net^ -||d2sbzwmcg5amr3.cloudfront.net^ -||d2sffavqvyl9dp.cloudfront.net^ -||d2sj2q93t0dtyb.cloudfront.net^ -||d2sn24mi2gn24v.cloudfront.net^ -||d2sp5g360gsxjh.cloudfront.net^ -||d2sucq8qh4zqzj.cloudfront.net^ -||d2t47qpr8mdhkz.cloudfront.net^ -||d2t72ftdissnrr.cloudfront.net^ -||d2t7a3zbo166a9.cloudfront.net^ -||d2taktuuo4oqx.cloudfront.net^ -||d2tkdzior84vck.cloudfront.net^ -||d2tvgfsghnrkwb.cloudfront.net^ -||d2u2lv2h6u18yc.cloudfront.net^ -||d2u4fn5ca4m3v6.cloudfront.net^ -||d2u6dc21frjf6h.cloudfront.net^ -||d2uaktjl22qvg4.cloudfront.net^ -||d2uap9jskdzp2.cloudfront.net^ -||d2udkjdo48yngu.cloudfront.net^ -||d2uepos3ef6db0.cloudfront.net^ -||d2uhnetoehh304.cloudfront.net^ -||d2uy8iq3fi50kh.cloudfront.net^ -||d2uyi99y1mkn17.cloudfront.net^ -||d2v02itv0y9u9t.cloudfront.net^ -||d2v4wf9my00msd.cloudfront.net^ -||d2va1d0hpla18n.cloudfront.net^ -||d2vmavw0uawm2t.cloudfront.net^ -||d2vorijeeka2cf.cloudfront.net^ -||d2vvyk8pqw001z.cloudfront.net^ -||d2vwl2vhlatm2f.cloudfront.net^ -||d2vwsmst56j4zq.cloudfront.net^ -||d2w92zbcg4cwxr.cloudfront.net^ -||d2werg7o2mztut.cloudfront.net^ -||d2wexw25ezayh1.cloudfront.net^ -||d2wpx0eqgykz4q.cloudfront.net^ -||d2x0u7rtw4p89p.cloudfront.net^ -||d2x19ia47o8gwm.cloudfront.net^ -||d2xng9e6gymuzr.cloudfront.net^ -||d2y8ttytgze7qt.cloudfront.net^ -||d2yeczd6cyyd0z.cloudfront.net^ -||d2ykons4g8jre6.cloudfront.net^ -||d2ywv53s25fi6c.cloudfront.net^ -||d2z51a9spn09cw.cloudfront.net^ -||d2zbpgxs57sg1k.cloudfront.net^ -||d2zcblk8m9mzq5.cloudfront.net^ -||d2zf5gu5e5mp87.cloudfront.net^ -||d2zh7okxrw0ix.cloudfront.net^ -||d2zi8ra5rb7m89.cloudfront.net^ -||d2zv5rkii46miq.cloudfront.net^ -||d2zzazjvlpgmgi.cloudfront.net^ -||d301cxwfymy227.cloudfront.net^ -||d30sxnvlkawtwa.cloudfront.net^ -||d30tme16wdjle5.cloudfront.net^ -||d30ts2zph80iw7.cloudfront.net^ -||d30yd3ryh0wmud.cloudfront.net^ -||d313lzv9559yp9.cloudfront.net^ -||d31m6w8i2nx65e.cloudfront.net^ -||d31mxuhvwrofft.cloudfront.net^ -||d31o2k8hutiibd.cloudfront.net^ -||d31ph8fftb4r3x.cloudfront.net^ -||d31rse9wo0bxcx.cloudfront.net^ -||d31s5xi4eq6l6p.cloudfront.net^ -||d31vxm9ubutrmw.cloudfront.net^ -||d31y1abh02y2oj.cloudfront.net^ -||d325d2mtoblkfq.cloudfront.net^ -||d32bug9eb0g0bh.cloudfront.net^ -||d32d89surjhks4.cloudfront.net^ -||d32h65j3m1jqfb.cloudfront.net^ -||d32hwlnfiv2gyn.cloudfront.net^ -||d32t6p7tldxil2.cloudfront.net^ -||d333p98mzatwjz.cloudfront.net^ -||d33fc9uy0cnxl9.cloudfront.net^ -||d33gmheck9s2xl.cloudfront.net^ -||d33otidwg56k90.cloudfront.net^ -||d33vskbmxds8k1.cloudfront.net^ -||d347nuc6bd1dvs.cloudfront.net^ -||d34cixo0lr52lw.cloudfront.net^ -||d34gjfm75zhp78.cloudfront.net^ -||d34opff713c3gh.cloudfront.net^ -||d34qb8suadcc4g.cloudfront.net^ -||d34rdvn2ky3gnm.cloudfront.net^ -||d34zwq0l4x27a6.cloudfront.net^ -||d3584kspbipfh3.cloudfront.net/cm/ -||d359wjs9dpy12d.cloudfront.net^ -||d35fnytsc51gnr.cloudfront.net^ -||d35kbxc0t24sp8.cloudfront.net^ -||d35ve945gykp9v.cloudfront.net^ -||d362plazjjo29c.cloudfront.net^ -||d36gnquzy6rtyp.cloudfront.net^ -||d36hsrzhv8pket.cloudfront.net^ -||d36s9tmu0jh8rd.cloudfront.net^ -||d36un5ytqxjgkq.cloudfront.net^ -||d36zfztxfflmqo.cloudfront.net^ -||d370hf5nfmhbjy.cloudfront.net^ -||d379fkejtn2clk.cloudfront.net^ -||d37abonb6ucrhx.cloudfront.net^ -||d37ax1qs52h69r.cloudfront.net^ -||d37byya7cvg7qr.cloudfront.net^ -||d37pempw0ijqri.cloudfront.net^ -||d37sevptuztre3.cloudfront.net^ -||d37tb4r0t9g99j.cloudfront.net^ -||d38190um0l9h9v.cloudfront.net^ -||d38b9p5p6tfonb.cloudfront.net^ -||d38goz54x5g9rw.cloudfront.net^ -||d38itq6vdv6gr9.cloudfront.net^ -||d38psrni17bvxu.cloudfront.net^ -||d38rrxgee6j9l3.cloudfront.net^ -||d396osuty6rfec.cloudfront.net^ -||d399jvos5it4fl.cloudfront.net^ -||d39hdzmeufnl50.cloudfront.net^ -||d39xdhxlbi0rlm.cloudfront.net^ -||d39xxywi4dmut5.cloudfront.net^ -||d3a49eam5ump99.cloudfront.net^ -||d3a781y1fb2dm6.cloudfront.net^ -||d3aajkp07o1e4y.cloudfront.net^ -||d3ahinqqx1dy5v.cloudfront.net^ -||d3aiy6aqoa3ykz.cloudfront.net^ -||d3akmxskpi6zai.cloudfront.net^ -||d3asksgk2foh5m.cloudfront.net^ -||d3b2hhehkqd158.cloudfront.net^ -||d3b4u8mwtkp9dd.cloudfront.net^ -||d3bbyfw7v2aifi.cloudfront.net^ -||d3beefy8kd1pr7.cloudfront.net^ -||d3bfricg2zhkdf.cloudfront.net^ -||d3c3uihon9kmp.cloudfront.net^ -||d3c8j8snkzfr1n.cloudfront.net^ -||d3cesrg5igdcgt.cloudfront.net^ -||d3cl0ipbob7kki.cloudfront.net^ -||d3cod80thn7qnd.cloudfront.net^ -||d3cpib6kv2rja7.cloudfront.net^ -||d3cynajatn2qbc.cloudfront.net^ -||d3d0wndor0l4xe.cloudfront.net^ -||d3d54j7si4woql.cloudfront.net^ -||d3d9gb3ic8fsgg.cloudfront.net^ -||d3d9pt4go32tk8.cloudfront.net^ -||d3dq1nh1l1pzqy.cloudfront.net^ -||d3ec0pbimicc4r.cloudfront.net^ -||d3efeah7vk80fy.cloudfront.net^ -||d3ej838ds58re9.cloudfront.net^ -||d3ejxyz09ctey7.cloudfront.net^ -||d3ep3jwb1mgn3k.cloudfront.net^ -||d3eub2e21dc6h0.cloudfront.net^ -||d3evio1yid77jr.cloudfront.net^ -||d3eyi07eikbx0y.cloudfront.net^ -||d3f1m03rbb66gy.cloudfront.net^ -||d3f1wcxz2rdrik.cloudfront.net^ -||d3f4nuq5dskrej.cloudfront.net^ -||d3ff60r8himt67.cloudfront.net^ -||d3fkv551xkjrmm.cloudfront.net^ -||d3flai6f7brtcx.cloudfront.net^ -||d3frqqoat98cng.cloudfront.net^ -||d3g4s1p0bmuj5f.cloudfront.net^ -||d3g5ovfngjw9bw.cloudfront.net^ -||d3hfiiy55cbi5t.cloudfront.net^ -||d3hib26r77jdus.cloudfront.net^ -||d3hitamb7drqut.cloudfront.net^ -||d3hj4iyx6t1waz.cloudfront.net^ -||d3hs51abvkuanv.cloudfront.net^ -||d3hv9xfqzxy46o.cloudfront.net^ -||d3hyjqptbt9dpx.cloudfront.net^ -||d3hyoy1d16gfg0.cloudfront.net^ -||d3i28n8laz9lyd.cloudfront.net^ -||d3icekm41k795y.cloudfront.net^ -||d3ikgzh4osba2b.cloudfront.net^ -||d3imksvhtbujlm.cloudfront.net^ -||d3ithbwcmjcxl7.cloudfront.net^ -||d3j3yrurxcqogk.cloudfront.net^ -||d3j7esvm4tntxq.cloudfront.net^ -||d3j9574la231rm.cloudfront.net^ -||d3jdulus8lb392.cloudfront.net^ -||d3jdzopz39efs7.cloudfront.net^ -||d3jzhqnvnvdy34.cloudfront.net^ -||d3k2wzdv9kuerp.cloudfront.net^ -||d3kblkhdtjv0tf.cloudfront.net^ -||d3kd7yqlh5wy6d.cloudfront.net^ -||d3klfyy4pvmpzb.cloudfront.net^ -||d3kpkrgd3aj4o7.cloudfront.net^ -||d3l320urli0p1u.cloudfront.net^ -||d3lcz8vpax4lo2.cloudfront.net^ -||d3lk5upv0ixky2.cloudfront.net^ -||d3lliyjbt3afgo.cloudfront.net^ -||d3ln1qrnwms3rd.cloudfront.net^ -||d3lvr7yuk4uaui.cloudfront.net^ -||d3lw2k94jnkvbs.cloudfront.net^ -||d3m4hp4bp4w996.cloudfront.net^ -||d3m8nzcefuqu7h.cloudfront.net^ -||d3m9ng807i447x.cloudfront.net^ -||d3mr7y154d2qg5.cloudfront.net^ -||d3mshiiq22wqhz.cloudfront.net^ -||d3mzokty951c5w.cloudfront.net^ -||d3n3a4vl82t80h.cloudfront.net^ -||d3n4krap0yfivk.cloudfront.net^ -||d3n7ct9nohphbs.cloudfront.net^ -||d3n9c6iuvomkjk.cloudfront.net^ -||d3nel6rcmq5lzw.cloudfront.net^ -||d3ngt858zasqwf.cloudfront.net^ -||d3numuoibysgi8.cloudfront.net^ -||d3nvrqlo8rj1kw.cloudfront.net^ -||d3o9njeb29ydop.cloudfront.net^ -||d3ohee25hhsn8j.cloudfront.net^ -||d3op2vgjk53ps1.cloudfront.net^ -||d3otiqb4j0158.cloudfront.net^ -||d3ou4areduq72f.cloudfront.net^ -||d3oy68whu51rnt.cloudfront.net^ -||d3p8w7to4066sy.cloudfront.net^ -||d3pe8wzpurrzss.cloudfront.net^ -||d3phzb7fk3uhin.cloudfront.net^ -||d3plnp2f9sfye5.cloudfront.net^ -||d3pvcolmug0tz6.cloudfront.net^ -||d3q33rbmdkxzj.cloudfront.net^ -||d3qeaw5w9eu3lm.cloudfront.net^ -||d3qgd3yzs41yp.cloudfront.net^ -||d3qilfrpqzfrg4.cloudfront.net^ -||d3qinhqny4thfo.cloudfront.net^ -||d3qttli028txpv.cloudfront.net^ -||d3qu0b872n4q3x.cloudfront.net^ -||d3qxd84135kurx.cloudfront.net^ -||d3qygewatvuv28.cloudfront.net^ -||d3rb9wasp2y8gw.cloudfront.net^ -||d3rjndf2qggsna.cloudfront.net^ -||d3rkkddryl936d.cloudfront.net^ -||d3rlh0lneatqqc.cloudfront.net^ -||d3rr3d0n31t48m.cloudfront.net^ -||d3rxqouo2bn71j.cloudfront.net^ -||d3s40ry602uhj1.cloudfront.net^ -||d3sdg6egu48sqx.cloudfront.net^ -||d3skqyr7uryv9z.cloudfront.net^ -||d3sof4x9nlmbgy.cloudfront.net^ -||d3t16rotvvsanj.cloudfront.net^ -||d3t3bxixsojwre.cloudfront.net^ -||d3t3lxfqz2g5hs.cloudfront.net^ -||d3t3z4teexdk2r.cloudfront.net^ -||d3t5ngjixpjdho.cloudfront.net^ -||d3t87ooo0697p8.cloudfront.net^ -||d3tfeohk35h2ye.cloudfront.net^ -||d3tfz9q9zlwk84.cloudfront.net^ -||d3tjml0i5ek35w.cloudfront.net^ -||d3tnmn8yxiwfkj.cloudfront.net^ -||d3tozt7si7bmf7.cloudfront.net^ -||d3tu4h3aa52h5s.cloudfront.net^ -||d3u43fn5cywbyv.cloudfront.net^ -||d3u598arehftfk.cloudfront.net^ -||d3ubdcv1nz4dub.cloudfront.net^ -||d3ud741uvs727m.cloudfront.net^ -||d3ugwbjwrb0qbd.cloudfront.net^ -||d3uqm14ppr8tkw.cloudfront.net^ -||d3uvwdhukmp6v9.cloudfront.net^ -||d3v3bqdndm4erx.cloudfront.net^ -||d3vnm1492fpnm2.cloudfront.net^ -||d3vp85u5z4wlqf.cloudfront.net^ -||d3vpf6i51y286p.cloudfront.net^ -||d3vsc1wu2k3z85.cloudfront.net^ -||d3vw4uehoh23hx.cloudfront.net^ -||d3x0jb14w6nqz.cloudfront.net^ -||d3zd5ejbi4l9w.cloudfront.net^ -||d415l8qlhk6u6.cloudfront.net^ -||d4bt5tknhzghh.cloudfront.net^ -||d4eqyxjqusvjj.cloudfront.net^ -||d4ngwggzm3w7j.cloudfront.net^ -||d5d3sg85gu7o6.cloudfront.net^ -||d5onopbfw009h.cloudfront.net^ -||d5wxfe8ietrpg.cloudfront.net^ -||d63a3au5lqmtu.cloudfront.net^ -||d6cto2pyf2ks.cloudfront.net^ -||d6deij4k3ikap.cloudfront.net^ -||d6l5p6w9iib9r.cloudfront.net^ -||d6sav80kktzcx.cloudfront.net^ -||d6wzv57amlrv3.cloudfront.net^ -||d7016uqa4s0lw.cloudfront.net^ -||d7dza8s7j2am6.cloudfront.net^ -||d7gse3go4026a.cloudfront.net^ -||d7jpk19dne0nn.cloudfront.net^ -||d7oskmhnq7sot.cloudfront.net^ -||d7po8h5dek3wm.cloudfront.net^ -||d7tst6bnt99p2.cloudfront.net^ -||d85wutc1n854v.cloudfront.net^$domain=~wrapbootstrap.com -||d8a69dni6x2i5.cloudfront.net^ -||d8bsqfpnw46ux.cloudfront.net^ -||d8cxnvx3e75nn.cloudfront.net^ -||d8dcj5iif1uz.cloudfront.net^ -||d8xy39jrbjbcq.cloudfront.net^ -||d91i6bsb0ef59.cloudfront.net^ -||d9b5gfwt6p05u.cloudfront.net^ -||d9c5dterekrjd.cloudfront.net^ -||d9leupuz17y6i.cloudfront.net^ -||d9qjkk0othy76.cloudfront.net^ -||d9yk47of1efyy.cloudfront.net^ -||da26k71rxh0kb.cloudfront.net^ -||da327va27j0hh.cloudfront.net^ -||da3uf5ucdz00u.cloudfront.net^ -||da5h676k6d22w.cloudfront.net^ -||dagd0kz7sipfl.cloudfront.net^ -||dal9hkyfi0m0n.cloudfront.net^ -||day13vh1xl0gh.cloudfront.net^ -||db033pq6bj64g.cloudfront.net^ -||db4zl9wffwnmb.cloudfront.net^ -||dba9ytko5p72r.cloudfront.net^ -||dbcdqp72lzmvj.cloudfront.net^ -||dbfv8ylr8ykfg.cloudfront.net^ -||dbujksp6lhljo.cloudfront.net^ -||dbw7j2q14is6l.cloudfront.net^ -||dby7kx9z9yzse.cloudfront.net^ -||dc08i221b0n8a.cloudfront.net^ -||dc5k8fg5ioc8s.cloudfront.net^ -||dcai7bdiz5toz.cloudfront.net^ -||dcbbwymp1bhlf.cloudfront.net^ -||dczhbhtz52fpi.cloudfront.net^ -||ddlh1467paih3.cloudfront.net^ -||ddmuiijrdvv0s.cloudfront.net^ -||ddrvjrfwnij7n.cloudfront.net^ -||ddvbjehruuj5y.cloudfront.net^ -||ddvfoj5yrl2oi.cloudfront.net^ -||ddzswov1e84sp.cloudfront.net^ -||de2nsnw1i3egd.cloudfront.net^ -||desgao1zt7irn.cloudfront.net^ -||dew9ckzjyt2gn.cloudfront.net^ -||df80k0z3fi8zg.cloudfront.net^ -||dfh48z16zqvm6.cloudfront.net^ -||dfidhqoaunepq.cloudfront.net^ -||dfiqvf0syzl54.cloudfront.net^ -||dfqcp2awt0947.cloudfront.net^ -||dfwbfr2blhmr5.cloudfront.net^ -||dg0hrtzcus4q4.cloudfront.net^ -||dg6gu9iqplusg.cloudfront.net^ -||dgw7ae5vrovs7.cloudfront.net^ -||dgyrizngtcfck.cloudfront.net^ -||dh6dm31izb875.cloudfront.net^ -||dhcmni6m2kkyw.cloudfront.net^ -||dhrhzii89gpwo.cloudfront.net^ -||di028lywwye7s.cloudfront.net^ -||dihutyaiafuhr.cloudfront.net^ -||dilvyi2h98h1q.cloudfront.net^ -||dita6jhhqwoiz.cloudfront.net^ -||divekcl7q9fxi.cloudfront.net^ -||diz4z73aymwyp.cloudfront.net^ -||djm080u34wfc5.cloudfront.net^ -||djnaivalj34ub.cloudfront.net^ -||djr4k68f8n55o.cloudfront.net^ -||djv99sxoqpv11.cloudfront.net^ -||djvby0s5wa7p7.cloudfront.net^ -||djz9es32qen64.cloudfront.net^ -||dk4w74mt6naf3.cloudfront.net^ -||dk57sacpbi4by.cloudfront.net^ -||dkgp834o9n8xl.cloudfront.net^ -||dkm6b5q0h53z4.cloudfront.net^ -||dkre4lyk6a9bt.cloudfront.net^ -||dktr03lf4tq7h.cloudfront.net^ -||dkus30wj6f84p.cloudfront.net^ -||dkvtbjavjme96.cloudfront.net^ -||dkyp75kj7ldlr.cloudfront.net^ -||dl37p9e5e1vn0.cloudfront.net^ -||dl5ft52dtazxd.cloudfront.net^ -||dlem1deojpcg7.cloudfront.net^ -||dlh8c15zw7vfn.cloudfront.net^ -||dlmr7hpb2buud.cloudfront.net^ -||dlne6myudrxi1.cloudfront.net^ -||dlooqrhebkjoh.cloudfront.net^ -||dlrioxg1637dk.cloudfront.net^ -||dltqxz76sim1s.cloudfront.net^ -||dltvkwr7nbdlj.cloudfront.net^ -||dlvds9i67c60j.cloudfront.net^ -||dlxk2dj1h3e83.cloudfront.net^ -||dm0acvguygm9h.cloudfront.net^ -||dm0ly9ibqkdxn.cloudfront.net^ -||dm0t14ck8pg86.cloudfront.net^ -||dm62uysn32ppt.cloudfront.net^ -||dm7gsepi27zsx.cloudfront.net^ -||dm7ii62qkhy9z.cloudfront.net^ -||dmeq7blex6x1u.cloudfront.net^ -||dmg0877nfcvqj.cloudfront.net^ -||dmkdtkad2jyb9.cloudfront.net^ -||dmmzkfd82wayn.cloudfront.net^ -||dmz3nd5oywtsw.cloudfront.net^ -||dn0qt3r0xannq.cloudfront.net^ -||dn3uy6cx65ujf.cloudfront.net^ -||dn6rwwtxa647p.cloudfront.net^ -||dn9uzzhcwc0ya.cloudfront.net^ -||dne6rbzy5csnc.cloudfront.net^ -||dnf06i4y06g13.cloudfront.net^ -||dnhfi5nn2dt67.cloudfront.net^ -||dnks065sb0ww6.cloudfront.net^ -||dnre5xkn2r25r.cloudfront.net^ -||do6256x8ae75.cloudfront.net^ -||do69ll745l27z.cloudfront.net^ -||doc830ytc7pyp.cloudfront.net^ -||dodk8rb03jif9.cloudfront.net^ -||dof9zd9l290mz.cloudfront.net^ -||dog89nqcp3al4.cloudfront.net^ -||dojx47ab4dyxi.cloudfront.net^ -||doo9gpa5xdov2.cloudfront.net^ -||dp45nhyltt487.cloudfront.net^ -||dp94m8xzwqsjk.cloudfront.net^ -||dpd9yiocsyy6p.cloudfront.net^ -||dpirwgljl6cjp.cloudfront.net^ -||dpjlvaveq1byu.cloudfront.net^ -||dpsq2uzakdgqz.cloudfront.net^ -||dpuz3hexyabm1.cloudfront.net^ -||dq3yxnlzwhcys.cloudfront.net^ -||dqv45r33u0ltv.cloudfront.net^ -||dr3k6qonw2kee.cloudfront.net^ -||dr6su5ow3i7eo.cloudfront.net^ -||dr8pk6ovub897.cloudfront.net^ -||drbccw04ifva6.cloudfront.net^ -||drda5yf9kgz5p.cloudfront.net^ -||drf8e429z5jzt.cloudfront.net^ -||drulilqe8wg66.cloudfront.net^ -||ds02gfqy6io6i.cloudfront.net^ -||ds88pc0kw6cvc.cloudfront.net^ -||dsb6jelx4yhln.cloudfront.net^ -||dscex7u1h4a9a.cloudfront.net^ -||dsghhbqey6ytg.cloudfront.net^ -||dsh7ky7308k4b.cloudfront.net^ -||dsnymrk0k4p3v.cloudfront.net^ -||dsuyzexj3sqn9.cloudfront.net^ -||dtakdb1z5gq7e.cloudfront.net^ -||dtmm9h2satghl.cloudfront.net^ -||dtq9oy2ckjhxu.cloudfront.net^ -||dtu2kitmpserg.cloudfront.net^ -||dtv5loup63fac.cloudfront.net^ -||dtv5ske218f44.cloudfront.net^ -||dtyry4ejybx0.cloudfront.net^ -||du01z5hhojprz.cloudfront.net^ -||du0pud0sdlmzf.cloudfront.net^ -||du2uh7rq0r0d3.cloudfront.net^ -||due5a6x777z0x.cloudfront.net^ -||dufai4b1ap33z.cloudfront.net^ -||dupcczkfziyd3.cloudfront.net^ -||duqamtr9ifv5t.cloudfront.net^ -||duz64ud8y8urc.cloudfront.net^ -||dv663fc06d35i.cloudfront.net^ -||dv7t7qyvgyrt5.cloudfront.net^ -||dvc8653ec6uyk.cloudfront.net^ -||dvl8xapgpqgc1.cloudfront.net^ -||dvmdwmnyj3u4h.cloudfront.net^ -||dw55pg05c2rl5.cloudfront.net^ -||dw7vmlojkx16k.cloudfront.net^ -||dw85st0ijc8if.cloudfront.net^ -||dw9uc6c6b8nwx.cloudfront.net^ -||dwd11wtouhmea.cloudfront.net^ -||dwebwj8qthne8.cloudfront.net^ -||dwene4pgj0r33.cloudfront.net^ -||dwnm2295blvjq.cloudfront.net^ -||dwr3zytn850g.cloudfront.net^ -||dxgo95ahe73e8.cloudfront.net^ -||dxh2ivs16758.cloudfront.net^ -||dxj6cq8hj162l.cloudfront.net^ -||dxk5g04fo96r4.cloudfront.net^ -||dxkkb5tytkivf.cloudfront.net^ -||dxprljqoay4rt.cloudfront.net^ -||dxz454z33ibrc.cloudfront.net^ -||dy5t1b0a29j1v.cloudfront.net^ -||dybxezbel1g44.cloudfront.net^ -||dyh1wzegu1j6z.cloudfront.net^ -||dyj8pbcnat4xv.cloudfront.net^ -||dykwdhfiuha6l.cloudfront.net^ -||dyodrs1kxvg6o.cloudfront.net^ -||dyrfxuvraq0fk.cloudfront.net^ -||dyv1bugovvq1g.cloudfront.net^ -||dz6uw9vrm7nx6.cloudfront.net^ -||dzbkl37t8az8q.cloudfront.net^ -||dzdgfp673c1p0.cloudfront.net^ -||dzr4v2ld8fze2.cloudfront.net^ -||dzu5p9pd5q24b.cloudfront.net^ -||dzupi9b81okew.cloudfront.net^ -||dzv1ekshu2vbs.cloudfront.net^ -||dzxr711a4yw31.cloudfront.net^ -! Google Hosted scripts -||googleapis.com/qmftp/$script -! Anti-Adblock -||anti-adblock.herokuapp.com^ - -! *** easylist:easylist/easylist_thirdparty_popup.txt *** -||1wdacn.xyz^$popup -||1wnurc.com^$popup -||1x001.com^$popup -||6angebot.ch^$popup,third-party -||ad.22betpartners.com^$popup -||adblockerapp.info^$popup -||adblockultra.com^$popup -||adcleanerpage.com^$popup -||adfreevision.com^$popup -||adobe.com/td_redirect.html$popup -||adrotator.se^$popup -||ads.planetwin365affiliate.com^$popup,third-party -||adserving.unibet.com^$popup -||affiliates.fantasticbet.com^$popup -||amazing-dating.com^$popup -||americascardroom.eu/ads/$popup,third-party -||anymoviesearch.com^$popup -||avatrade.io/ads/$popup -||avengeradblocker.com^$popup -||awin1.com/cread.php?s=$popup -||babesroulette.com^$popup -||banners.livepartners.com^$popup -||best-global-apps.com^$popup -||bestanimegame.com^$popup -||bestsurferprotector.com^$popup,third-party -||bet365.com^*affiliate=$popup -||bets.to^$popup -||bettingpremier.com/direct/$popup -||betzone2000.com^$popup -||blockadstop.info^$popup -||boom-bb.com^$popup -||brazzers.com/click/$popup -||broker-qx.pro^$popup -||browsekeeper.com^$popup -||canyoublockit.com^$popup,third-party -||cdn.optmd.com^$popup -||chaturbate.com/affiliates/$popup -||cityscapestab.com^$popup -||cococococ.com^$popup -||consali.com^$popup -||cute-cursor.com^$popup -||cyberprivacy.pro^$popup -||dafabet.odds.am^$popup -||daily-guard.net^$popup -||datacluster.club^$popup -||dianomi.com^$popup -||download-adblock360.com^$popup -||downloadoperagx.com/ef/$popup -||eatcells.com/land/$popup -||error-alerts.com^$popup -||esports1x.com^$popup -||evanetwork.com^$popup -||exnesstrack.net^$popup -||fastclick.net^$popup -||fewrandomfacts.com^$popup -||firstload.com^$popup -||firstload.de^$popup -||fleshlight.com/?link=$popup -||freegamezone.net^$popup -||fwmrm.net^$popup -||get-express-vpn.online^$popup -||get-express-vpns.com^$popup -||getflowads.net^$popup -||ggbet-online.net^$popup -||ggbetapk.com^$popup,third-party -||ggbetery.net^$popup -||ggbetpromo.com^$popup -||giftandgamecentral.com^$popup -||global-adblocker.com^$popup -||go.aff.estrelabetpartners.com^$popup -||go.camterest.com^$popup -||go.thunder.partners^$popup -||google.com/favicon.ico$popup -||greenadblocker.com^$popup -||hotdivines.com^$popup -||how-become-model.com^$popup -||insideoftech.com^$popup,third-party -||iqbroker.com/land/$popup -||iqbroker.com/lp/*?aff=$popup -||iqoption.com/land/$popup -||iyfsearch.com^$popup -||kingadblock.com^$popup -||l.erodatalabs.com^$popup -||laborates.com^$popup -||lbank.com/partner_seo/$popup -||linkbux.com/track?$popup -||loadx.me^$popup -||lpquizzhubon.com^$popup -||luckyforbet.com^$popup -||mackeeperaffiliates.com^$popup -||meetonliine.com^$popup -||mmentorapp.com^$popup -||my-promo7.com^$popup -||mycryptotraffic.com^$popup -||mymusichistory4u.com^$popup -||ntrfr.leovegas.com^$popup -||nutaku.net/images/lp/$popup -||ourcoolstories.com^$popup -||paid.outbrain.com^$popup -||partners.livesportnet.com^$popup -||performrecentintenselyinfo-program.info^$popup -||poperblocker.com^$popup -||popgoldblocker.info^$popup -||premium-news-for.me^$popup -||profitsurvey365.live^$popup -||promo.20bet.partners^$popup -||promo.pixelsee.app^$popup -||protected-redirect.click^$popup -||quantumadblocker.com^$popup -||record.affiliatelounge.com^$popup -||redir.tradedoubler.com/projectr/$popup -||securitypatch.life^$popup -||serve.prestigecasino.com^$popup -||serve.williamhillcasino.com^$popup -||skiptheadz.com^$popup -||skiptheadz.info^$popup -||skipvideoads.com^$popup -||smartblocker.org^$popup -||somebestgamesus.com^$popup -||spanpromo-link.com^$popup -||stake.com/*&clickId=$popup -||streamblocked.com^$popup -||teenfinder.com/landing/$popup,third-party -||theonlineuserprotection.com/download-guard/$popup -||theonlineuserprotector.com/download-guard/$popup -||theyellownewtab.com^$popup -||topgurudeals.com^$popup -||track.afrsportsbetting.com^$popup -||track.kinetiksoft.com^$popup -||track.livesportnet.com^$popup -||tracker.loropartners.com^$popup -||trak.today-trip.com^$popup -||ublockpop.com^$popup -||ultimate-ad-eraser.com^$popup -||unibet.co.uk/*affiliate$popup -||verdecasino-offers.com^$popup -||vid-adblocker.com^$popup -||vulkan-bt.com^$popup -||vulkanbet.me^$popup -||werbestandard.de/out2/$popup -||whataboutnews.com^$popup -||windadblocker.com^$popup -||xn--2zyr5r.biz^$popup -||xxxhd.cc/ads/$popup -||yield.app^*utm_source=$popup - -! *** easylist:easylist_adult/adult_thirdparty.txt *** -||18onlygirls.tv/wp-content/banners/ -||1vps.space/ads/ -||3xtraffic.com/ads/ -||3xtraffic.com/common/000/cads/ -||4fcams.com/in/?track=$subdocument,third-party -||4tube.com/iframe/$third-party -||69games.xxx/ajax/skr? -||a.fimoa.xyz^ -||a.lakmus.xyz^ -||a.xvidxxx.com^ -||a1tb.com/300x250$subdocument -||adult.xyz^$script,third-party -||adultfriendfinder.com/go/$third-party -||adultfriendfinder.com/piclist? -||adultfriendfinder.com^*/affiliate/$third-party -||aff-jp.dxlive.com^ -||affiliate.dtiserv.com^ -||affiliates.cupidplc.com^ -||affiliates.thrixxx.com^ -||ag.palmtube.net^ -||allanalpass.com/visitScript/ -||amarotic.com/Banner/$third-party -||amateur.tv/cacheableAjax/$subdocument -||amateur.tv/freecam/$third-party -||amateurporn.net^$third-party -||anacams.com/cdn/top. -||asg.aphex.me^ -||asg.bhabhiporn.pro^ -||asg.irontube.net^ -||asg.prettytube.net^ -||asianbutterflies.com/potd/ -||asktiava.com/promotion/ -||assinclusive.com/cyonix.html -||assinclusive.com/linkstxt2.html -||atlasfiles.com^*/sp3_ep.js$third-party -||avatraffic.com/b/ -||awempt.com/embed/ -||awestat.com^*/banner/ -||babes-mansion.s3.amazonaws.com^ -||bangdom.com^$third-party -||banner.themediaplanets.com^ -||banners.adultfriendfinder.com^ -||banners.alt.com^ -||banners.amigos.com^ -||banners.fastcupid.com^ -||banners.fuckbookhookups.com^ -||banners.nostringsattached.com^ -||banners.outpersonals.com^ -||banners.passion.com^ -||banners.payserve.com^ -||banners.videosecrets.com^ -||bannershotlink.perfectgonzo.com^ -||bans.bride.ru^ -||bbb.dagobert33.xyz^ -||bit.ly^$domain=boyfriendtv.com -||blacksonblondes.com/banners/ -||bongacams.com/promo.php -||bongacash.com/tools/promo.php -||br.fling.com^ -||brazzers.com/ads/ -||broim.xyz^ -||bullz-eye.com/blog_ads/ -||bullz-eye.com/images/ads/ -||bup.seksohub.com^ -||bursa.conxxx.pro^ -||byxxxporn.com/300x250.html -||c3s.bionestraff.pro^ -||cam-content.com/banner/$third-party -||cams.com/go/$third-party -||cams.enjoy.be^ -||camsaim.com/in/ -||camsoda.com/promos/ -||cash.femjoy.com^ -||cdn3.hentaihand.com^ -||cdn5.hentaihaven.fun^ -||chaturbate.com/affiliates/ -||chaturbate.com/creative/ -||chaturbate.com/in/ -||cldup.com^$domain=androidadult.com -||cmix.org/teasers/ -||creamgoodies.com/potd/ -||creative.141live.com^ -||creative.favy.cam^ -||creative.imagetwistcams.com^$subdocument -||creative.kbnmnl.com^ -||creative.myasian.live/widgets/ -||creative.myavlive.com^ -||creative.ohmycams.com^ -||creative.strip.chat^ -||creative.stripchat.com^ -||creative.stripchat.global^ -||creative.strpjmp.com^ -||creative.tklivechat.com^ -||creative.usasexcams.com^ -||crumpet.xxxpornhd.pro^ -||dagobert33.xyz^ -||ddfcash.com^$third-party -||deliver.ptgncdn.com^ -||dnk2wr2ch6zxa.cloudfront.net^ -||dontblock.jaaavjavs1.buzz^ -||dontblock.jav1jav2.buzz^ -||dq06u9lt5akr2.cloudfront.net^ -||elitepaysites.com/ae-banners/ -||endorico.com/js/pu_zononi.js -||endorico.com/Smartlink/ -||ero-labs.com/adIframe/ -||eroan.xyz/wp-comment/?form=$subdocument -||erokuni.xyz/wp-comment/?form=$subdocument -||f5w.prettytube.net^ -||fansign.streamray.com^ -||faphouse.com/widget/ -||faphouse.com^$subdocument,third-party -||faptrex.com/fire/popup.js -||faxifa.xyz^ -||fbooksluts.com^$third-party -||feeds.videosz.com^ -||fleshlight.com/images/banners/ -||fpcplugs.com/do.cgi?widget= -||free.srcdn.xyz^ -||freesexcam365.com/in/ -||funniestpins.com/istripper-black-small.jpg$third-party -||games-direct.skynetworkcdn.com^$subdocument,third-party -||gammae.com/famedollars/$third-party -||geobanner.adultfriendfinder.com^ -||geobanner.alt.com^ -||geobanner.blacksexmatch.com^$third-party -||geobanner.fuckbookhookups.com^$third-party -||geobanner.hornywife.com^ -||geobanner.sexfinder.com^$third-party -||gettubetv.com^$third-party -||gfrevenge.com/vbanners/ -||girlsfuck-tube.com/js/aobj.js -||go.clicknplay.to^ -||go.telorku.xyz/hls/iklan.js -||go2cdn.org/brand/$third-party -||hardbritlads.com/banner/ -||hardcoreluv.com/hmt.gif -||hcjs.nv7s.com/dewijzyo/ -||hdpornphotos.com/images/728x180_ -||hdpornphotos.com/images/banner_ -||hentaiboner.com/wp-content/uploads/2022/07/hentai-boner-gif.gif -||hentaikey.com/images/banners/ -||hime-books.xyz/wp-comment/?form=$subdocument -||hodun.ru/files/promo/ -||homoactive.tv/banner/ -||hostave3.net/hvw/banners/ -||hosted.x-art.com/potd$third-party -||hostedmovieupdates.aebn.net^$domain=datingpornstar.com -||hosting24.com/images/banners/$third-party -||hotcaracum.com/banner/ -||hotkinkyjo.xxx/resseler/banners/ -||hotmovies.com/custom_videos.php? -||iframe.adultfriendfinder.com^$third-party -||ifriends.net^$subdocument,third-party -||ihookup.com/configcreatives/ -||images.elenasmodels.com/Upload/$third-party -||imctransfer.com^*/promo/ -||istripper.com^$third-party,domain=~istripper.eu -||javguru.gggsss.site^ -||jeewoo.xctd.me^ -||kau.li/yad.js -||kenny-glenn.net^*/longbanner_$third-party -||lacyx.com/images/banners/ -||ladyboygoo.com/lbg/banners/ -||lb-69.com/pics/ -||lifeselector.com/iframetool/$third-party -||livejasmin.com^$third-party,domain=~awempire.com -||livesexasian.com^$subdocument,third-party -||loveme.com^$third-party -||lovense.com/UploadFiles/Temp/$third-party -||makumva.all-usanomination.com^ -||media.eurolive.com^$third-party -||media.mykodial.com^$third-party -||mediacandy.ai^$third-party -||metartmoney.com^$third-party -||mrskin.com/affiliateframe/ -||mrvids.com/network/ -||my-dirty-hobby.com/?sub=$third-party -||mycams.com/freechat.php? -||mykocam.com/js/feeds.js -||mysexjourney.com/revenue/ -||n.clips4sale.com^$third-party -||naked.com/promos/ -||nakedswordcashcontent.com/videobanners/ -||naughtycdn.com/public/iframes/ -||netlify.app/tags/ninja_$subdocument -||nnteens.com/ad$subdocument -||nubiles.net/webmasters/promo/ -||nude.hu/html/$third-party -||openadultdirectory.com/banner- -||otcash.com/images/ -||paperstreetcash.com/banners/$third-party -||partner.loveplanet.ru^ -||parts.akibablog.net^$subdocument -||partwithner.com/partners/ -||pcash.imlive.com^ -||pimpandhost.com/site/trending-banners -||pinklabel.com/live-banners? -||pinkvisualgames.com/?revid= -||pirogad.tophosting101.com^ -||placeholder.com/300x250? -||placeholder.com/728x90? -||placeholder.com/900x250? -||pod.xpress.com^ -||pokazuwka.com/popu/ -||popteen.pro/300x250.php -||porndeals.com^$subdocument,third-party -||porngamespass.com/iframes/ -||prettyincash.com/premade/ -||prettytube.net^$third-party -||privatamateure.com/promotion/ -||private.com/banner/ -||promo.blackdatehookup.com^ -||promo.cams.com^ -||promos.camsoda.com^ -||promos.gpniches.com^ -||promos.meetlocals.com^ -||ptcdn.mbicash.nl^ -||pub.nakedreel.com^ -||pussycash.com/content/banners/ -||pussysaga.com/gb/ -||q.broes.xyz^ -||q.ikre.xyz^ -||q.leru.xyz^ -||q.tubetruck.com^ -||r18.com/track/ -||rabbitporno.com/friends/ -||rabbitporno.com/iframes/ -||realitykings.com/vbanners/ -||redhotpie.com.au^$domain=couplesinternational.com -||rhinoslist.com/sideb/get_laid-300.gif -||rss.dtiserv.com^ -||ruscams.com/promo/ -||s3t3d2y8.afcdn.net^ -||saboom.com.pccdn.com^*/banner/ -||sakuralive.com/dynamicbanner/ -||scoreland.com/banner/ -||sexei.net^$subdocument,xmlhttprequest -||sexgangsters.com/sg-banners/ -||sexhay69.top/ads/ -||sexmature.fun/myvids/ -||sextubepromo.com/ubr/ -||sexy.fling.com^$third-party -||sexycams.com/exports/$third-party -||share-image.com/borky/ -||shemalenova.com/smn/banners/ -||sieglinde22.xyz^ -||simonscans.com/banner/ -||skeeping.com/live/$subdocument,third-party -||skyprivate.com^*/external/$third-party -||sleepgalleries.com/recips/$third-party -||smartmovies.net/promo_$third-party -||smpop.icfcdn.com^$third-party -||smyw.org/smyw_anima_1.gif -||snrcash.com/profilerotator/$third-party -||st.ipornia.com^$third-party -||static.twincdn.com/special/license.packed -||static.twincdn.com/special/script.packed -||steeelm.online^$third-party -||streamen.com/exports/$third-party -||stripchat.com/api/external/ -||stripchat.com^*/widget/$third-party -||swurve.com/affiliates/ -||t.c-c.one/b/ -||t.c-c.one/z/ -||target.vivid.com^$third-party -||tbib.org/gaming/ -||teamskeetimages.com/st/banners/$third-party -||teenspirithentai.com^$third-party -||theporndude.com/graphics/tpd-$third-party -||thescript.javfinder.xyz^ -||tlavideo.com/affiliates/$third-party -||tm-banners.gamingadult.com^ -||tm-offers.gamingadult.com^ -||tongabonga.com/nudegirls -||tool.acces-vod.com^ -||tools.bongacams.com^$third-party -||track.xtrasize.nl^$third-party -||turbolovervidz.com/fling/ -||undress.app/ad_banners/ -||uploadgig.com/static_/$third-party -||upsellit.com/custom/$third-party -||uselessjunk.com^$domain=yoloselfie.com -||vfreecams.com^$third-party -||vidz.com/promo_banner/$third-party -||vigrax.pl/banner/ -||virtualhottie2.com/cash/tools/banners/ -||visit-x.net/promo/$third-party -||vodconcepts.com^*/banners/ -||vs4.com/req.php?z= -||vtbe.to/vtu_$script -||vy1.click/wp-comment/?form=$subdocument -||webcams.com/js/im_popup.php? -||webcams.com/misc/iframes_new/ -||widget.faphouse.com^$third-party -||widgets.comcontent.net^ -||widgets.guppy.live^$third-party -||wiztube.xyz/banner/ -||wp-script.com/img/banners/ -||xcabin.net/b/$third-party -||xlgirls.com/banner/$third-party -||xtrasize.pl/banner/ -||xxx.sdtraff.com^ -||y.sphinxtube.com^ -||you75.youpornsexvideos.com^ - -! *** easylist:easylist_adult/adult_thirdparty_popup.txt *** -||ad.pornimg.xyz^$popup -||adultfriendfinder.com/banners/$popup,third-party -||adultfriendfinder.com/go/$popup,third-party -||benaughty.com^$popup -||bongacams8.com/track?$popup -||brazzerssurvey.com^$popup -||cam4.com/?$popup -||cam4.com^*&utm_source=$popup -||camonster.com/landing/$popup,third-party -||clicks.istripper.com/ref.php?$popup,third-party -||crmt.livejasmin.com^$popup -||crpdt.livejasmin.com^$popup -||crpop.livejasmin.com^$popup -||crprt.livejasmin.com^$popup -||fantasti.cc/ajax/gw.php?$popup -||fapcandy.com^$popup,third-party -||flirthits.com/landing/$popup -||go.xhamsterlive.com^$popup -||hentaiheroes.com/landing/$popup,third-party -||icgirls.com^$popup -||imlive.com/wmaster.ashx?$popup,third-party -||info-milfme.com/landing/$popup -||ipornia.com/scj/cgi/out.php?scheme_id=$popup,third-party -||jasmin.com^$popup,third-party -||join.whitegfs.com^$popup -||landing1.brazzersnetwork.com^$popup -||letstryanal.com/track/$popup,third-party -||livecams.com^$popup -||livehotty.com/landing/$popup,third-party -||livejasmin.com^$popup,third-party -||loveaholics.com^$popup -||mrskin.com/?_$popup -||naughtydate.com^$popup -||offersuperhub.com/landing/$popup,third-party -||porngames.adult^*=$popup,third-party -||pornoh.info^$popup -||prelanding3.cuntempire.com/?utm_$popup -||tgp1.brazzersnetwork.com^$popup -||tm-offers.gamingadult.com^$popup -||together2night.com^$popup -||tour.mrskin.com^$popup,third-party -||zillastream.com/api/$popup -!----------------------Specific advert blocking filters-----------------------! -! *** easylist:easylist/easylist_specific_block.txt *** -/assets/bn/movie.jpg$image,domain=vidstream.pro -/resolver/api/resolve/v3/config/?$xmlhttprequest,domain=msn.com -asgg.php$domain=ghostbin.me|paste.fo -||0xtracker.com/assets/advertising/ -||123.manga1001.top^ -||123animehub.cc/final -||1337x.*/images/x28.jpg -||1337x.*/images/x2x8.jpg -||1337x.vpnonly.site^ -||2merkato.com/images/banners/ -||2oceansvibe.com/?custom=takeover -||4f.to/spns/ -||abcnews.com/assets/js/adCallOverride.js -||aboutmyarea.co.uk/images/imgstore/ -||absoluteanime.com/!bin/skin3/ads/ -||ad.animehub.ac^ -||ad.doubleclick.net/ddm/clk/$domain=ad.doubleclick.net -||ad.imp.joins.com^ -||ad.khan.co.kr^ -||ad.kimcartoon.si^ -||ad.kissanime.co^ -||ad.kissanime.com.ru^ -||ad.kissanime.org.ru^ -||ad.kissanime.sx^ -||ad.kissasian.com.ru^ -||ad.kissasian.es^ -||ad.kisscartoon.nz^ -||ad.kisscartoon.sh^ -||ad.kisstvshow.ru^ -||ad.norfolkbroads.com^ -||adblock-tester.com/banners/ -||adrama.to/bbb.php -||ads-api.stuff.co.nz^ -||ads.audio.thisisdax.com^ -||adsbb.depositfiles.com^ -||adultswim.com/ad/ -||adw.heraldm.com^ -||afloat.ie/images/banners/ -||afr.com/assets/europa. -||aiimgvlog.fun/ad$subdocument -||allkeyshop.com/blog/wp-content/uploads/allkeyshop_background_ -||allmonitors24.com/ads- -||amazon.com/aan/$subdocument -||amazonaws.com/cdn.mobverify.com -||amazonaws.com/jsstore/$domain=babylonbee.com -||amazonaws.com^$domain=downloadpirate.com|hexupload.net|krunkercentral.com|rexdlbox.com|uploadhaven.com -||amcdn.co.za/scripts/javascript/dfp.js -||americanlookout.com//// -||americanlookout.com/29-wE/ -||andhrawishesh.com/images/banners/hergamut_ads/ -||androidauth.wpengine.com/wp-json/api/advanced_placement/api-$domain=androidauthority.com -||animeland.tv/zenny/ -||animesuge.to/E/aircraftmighty.com/ -||anisearch.com/amazon -||aontent.powzers.lol^ -||api.mumuglobal.com^ -||apkmody.io/ads -||arbiscan.io/images/gen/*_StylusBlitz_Arbiscan_Ad.png -||armyrecognition.com/images/stories/customer/ -||artdaily.cc/banners/ -||asgg.ghostbin.me^ -||assets.presearch.com/backgrounds/ -||atoplay.com/js/rtads.js -||atptour.com^*/sponsors/ -||audiotag.info/images/banner_ -||aurn.com/wp-content/banners/ -||aveherald.com/images/banners/ -||azlyrics.com/local/anew.js -||b.cdnst.net/javascript/amazon.js$script,domain=speedtest.net -||b.w3techs.com^ -||backgrounds.wetransfer.net$image -||backgrounds.wetransfer.net/*.mp4$media -||bahamaslocal.com/img/banners/ -||bbci.co.uk/plugins/dfpAdsHTML/ -||beap.gemini.yahoo.com^ -||beforeitsnews.com/img/banner_ -||benjamingroff.com/uploads/images/ads/ -||bernama.com/storage/banner/ -||bestblackhatforum.com/images/my_compas/ -||bestlittlesites.com/plugins/advertising/getad/ -||bettingads.365scores.com^ -||bibleatlas.org/botmenu -||bibleh.com/b2.htm -||biblehub.com/botmenu -||biblemenus.com/adframe -||bioinformatics.org/images/ack_banners/ -||bit.com.au/scripts/js_$script -||bitchute.com/static/ad2.html -||bitcotasks.com/je.php -||bitcotasks.com/yo.php -||bizjournals.com/static/dist/js/gpt.min.js -||blbclassic.org/assets/images/*banners/ -||blsnet.com/plugins/advertising/getad/ -||blue.ktla.com^ -||bontent.powzers.lol^ -||bookforum.com/api/ads/ -||booking.com/flexiproduct.html?product=banner$domain=happywayfarer.com -||bordeaux.futurecdn.net^ -||borneobulletin.com.bn/wp-content/banners/ -||boxing-social.com^*/takeover/ -||brighteon.tv/Assets/ARF/ -||brudirect.com/images/banners/ -||bscscan.com/images/gen/*.gif -||bugsfighter.com/wp-content/uploads/2020/07/malwarebytes-banner.jpg -||bullchat.com/sponsor/ -||bunnycdn.ru/assets/_bnx/$domain=fmovies.to -||c21media.net/wp-content/plugins/sam-images/ -||cafonline.com/image/upload/*/sponsors/ -||calguns.net/images/ad -||calmclinic.com/srv/ -||caranddriver.com/inventory/ -||cdn.http.anno.channel4.com/m/1/$media,domain=uktvplay.co.uk -||cdn.manga9.co^ -||cdn.shopify.com^*/assets/spreadrwidget.js$domain=jolinne.com -||cdn77.org^$domain=pricebefore.com -||cdnads.geeksforgeeks.org^ -||cdnpk.net/sponsor/$domain=freepik.com -||cdnpure.com/static/js/ads- -||celebjihad.com/celeb-jihad/pu_ -||celebstoner.com/assets/components/bdlistings/uploads/ -||celebstoner.com/assets/images/img/sidebar/$image -||centent.stemplay.cc^ -||chasingcars.com.au/ads/ -||clarity.amperwave.net/gateway/getmediavast.php$xmlhttprequest -||clarksvilleonline.com/cols/ -||cloudfront.net/ads/$domain=wdwmagic.com -||cloudfront.net/j/wsj-prod.js$domain=wsj.com -||cloudfront.net/transcode/storyTeller/$media,domain=amazon.ae|amazon.ca|amazon.cn|amazon.co.jp|amazon.co.uk|amazon.com|amazon.com.au|amazon.com.br|amazon.com.mx|amazon.com.tr|amazon.de|amazon.eg|amazon.es|amazon.fr|amazon.in|amazon.it|amazon.nl|amazon.pl|amazon.sa|amazon.se|amazon.sg -||cloudfront.net^$domain=rexdlbox.com|titantv.com -||cloudfront.net^*/sponsors/$domain=pbs.org -||coincheck.com/images/affiliates/ -||coingolive.com/assets/img/partners/ -||coins4days.com/*_ext_iframe/ -||content.powzerz.lol^ -||coolcast2.com/z- -||coolors.co/ajax/get-ads -||corvetteblogger.com/images/banners/ -||covertarget.com^*_*.php -||creatives.livejasmin.com^ -||cricbuzz.com/api/adverts/ -||cricketireland.ie//images/sponsors/ -||cript.to/dlm.png -||cript.to/z- -||crn.com.au/scripts/js_$script -||crunchy-tango.dotabuff.com^ -||cybernews.com/images/tools/*/banner/ -||cyberscoop.com/advertising/ -||d1lxz4vuik53pc.cloudfront.net^$domain=amazon.ae|amazon.ca|amazon.cn|amazon.co.jp|amazon.co.uk|amazon.com|amazon.com.au|amazon.com.br|amazon.com.mx|amazon.com.tr|amazon.de|amazon.eg|amazon.es|amazon.fr|amazon.in|amazon.it|amazon.nl|amazon.pl|amazon.sa|amazon.se|amazon.sg -||daily-sun.com/assets/images/banner/ -||dailymail.co.uk^*/linkListItem-$domain=thisismoney.co.uk -||dailymirror.lk/youmaylike -||dailynews.lk/wp-content/uploads/2024/02/D-E -||data.angel.digital/images/b/$image -||deltabravo.net/admax/ -||designtaxi.com/js/dt-seo.js -||designtaxi.com/small-dt.php$subdocument -||detectiveconanworld.com/images/support-us-brave.png -||developer.mozilla.org/pong/ -||deviantart.com/_nsfgfb/ -||devopscon.io/session-qualification/$subdocument -||dianomi.com/brochures.epl? -||dianomi.com/click.epl -||dictionary.com/adscripts/ -||digitalmediaworld.tv/images/banners/ -||diglloyd.com/js2/pub-wide2-ck.js -||dirproxy.com/helper-js -||dj1symwmxvldi.cloudfront.net/r/$image,domain=coderwall.com -||dmtgvn.com/wrapper/js/manager.js$domain=rt.com -||dmxleo.dailymotion.com^ -||dnslytics.com/images/ads/ -||domaintyper.com/Images/dotsitehead.png -||dominicantoday.com/wp-content/themes/dominicantoday/banners/ -||dontent.powzers.lol^ -||dontent.powzerz.lol^ -||download.megaup.net/download -||draftkings.bbgi.com^$subdocument -||dramanice.ws/z-6769166 -||drive.com.au/ads/ -||dsp.aparat.com^ -||duplichecker.com/csds/ -||dyncdn.me/static/20/js/expla -||e.cdngeek.com^ -||easymp3mix.com/js/re-ads-zone.js -||ebay.com/scl/js/ScandalLoader.js -||ebayrtm.com/rtm?RtmCmd*&enc= -||ebayrtm.com/rtm?RtmIt -||ebaystatic.com^*/ScandalJS- -||eccie.net/provider_ads/ -||ed2k.2x4u.de/mfc/ -||edge.ads.twitch.tv^ -||eentent.streampiay.me^ -||eevblog.com/images/comm/$image -||elil.cc/pdev/ -||elil.cc/reqe.js -||emoneyspace.com/b.php -||engagesrvr.filefactory.com^ -||engine.fxempire.com^ -||engine.laweekly.com^ -||eontent.powzerz.lol^ -||eteknix.com/wp-content/uploads/*skin -||etherscan.io/images/gen/cons_gt_ -||etxt.biz/data/rotations/ -||etxt.biz/images/b/ -||eurochannel.com/images/banners/ -||europeangaming.eu/portal/wp-admin/admin-ajax.php?action=acc_get_banners -||everythingrf.com/wsFEGlobal.asmx/GetWallpaper -||exchangerates.org.uk/images/200x200_currency.gif -||excnn.com/templates/anime/sexybookmark/js/popup.js -||expatexchange.com/banner/ -||expats.cz/images/amedia/ -||facebook.com/network_ads_common -||familylawweek.co.uk/bin_1/ -||fastapi.tiangolo.com/img/sponsors/$image -||fauceit.com/Roulette-(728x90).jpg -||fentent.stre4mplay.one^ -||fentent.streampiay.fun^ -||fentent.streampiay.me^ -||file-upload.site/page.js -||filehippo.com/best-recommended-apps^ -||filehippo.com/revamp.js -||filemoon.*/js/baf.js -||filemoon.*/js/dola.js -||filemoon.*/js/skrrt.js -||filerio.in/banners/ -||files.im/images/bbnr/ -||filext.com/tools/fileviewerplus_b1/ -||filmibeat.com/images/betindia.jpg -||finish.addurl.biz/webroot/ads/adsterra/ -||finviz.com/gfx/banner_ -||fishki.net/code? -||fiveyardlab.com/z- -||flippback.com/tag/js/flipptag.js$domain=idsnews.com -||focus4ca.com/z- -||fontent.powzers.lol^ -||fontent.powzerz.lol^ -||footballtradedirectory.com/images/pictures/banner/ -||forabodiesonly.com/mopar/sidebarbanners/ -||fordforums.com.au/logos/ -||forum.miata.net/sp/ -||free-webhosts.com/images/a/ -||freebookspot.club/vernambanner.gif -||freedownloadmanager.org/js/achecker.js -||freeworldgroup.com/banner -||freighter-prod01.narvar.com^$image -||funeraltimes.com/databaseimages/adv_ -||funeraltimes.com/images/Banner-ad -||funnyjunk.com/site/js/extra/pre -||futbollatam.com/ads.js -||fwcdn3.com^$domain=eonline.com -||fwpub1.com^$domain=ndtv.com|ndtv.in -||gamblingnewsmagazine.com/wp-content/uploads/*/ocg-ad- -||gamecopyworld.com/*.php? -||gamecopyworld.com/ddd/ -||gamecopyworld.com/js/pp.js -||gamecopyworld.eu/ddd/ -||gamecopyworld.eu/js/pp.js -||gameflare.com/promo/ -||gamer.mmohuts.com^ -||ganjing.world/v1/cdkapi/ -||ganjingworld.com/pbjsDisplay.js -||ganjingworld.com/v1s/adsserver/ -||generalblue.com/js/pages/shared/lazyads.min.js -||gentent.stre4mplay.one^ -||gentent.streampiay.fun^ -||getconnected.southwestwifi.com/ads_video.xml -||gocdkeys.com/images/background -||gogoanime.me/zenny/ -||gontent.powzers.lol^ -||googlesyndication.com^$domain=blogto.com|youtube.com -||govevents.com/display-file/ -||gpt.mail.yahoo.net/sandbox$subdocument,domain=mail.yahoo.com -||graphicdesignforums.co.uk/banners/ -||greatandhra.com/images/landing/ -||grow.gab.com/galahad/ -||hamodia.co.uk/images/worldfirst-currencyconversion.jpg -||healthcentral.com/common/ads/generateads.js -||hearstapps.com/moapt/moapt-hdm.latest.js -||hentent.stre4mplay.one^ -||hentent.streampiay.fun^ -||hideip.me/src/img/rekl/ -||hltv.org/partnerimage/$image -||hltv.org/staticimg/*?ixlib= -||holyfamilyradio.org/banners/ -||homeschoolmath.net/a/ -||hontent.powzers.lol^ -||hontent.powzerz.lol^ -||horizonsunlimited.com/alogos/ -||hortidaily.com/b/ -||hostsearch.com/creative/ -||hotstar.com^*/midroll? -||hotstar.com^*/preroll? -||howtogeek.com/emv2/ -||hubcloud.day/video/bn/ -||i-tech.com.au/media/wysiwyg/banner/ -||iamcdn.net/players/custom-banner.js -||iamcdn.net/players/playhydraxs.min.js$domain=player-cdn.com -||ianimes.cc/z- -||ibb.co^$domain=ghostbin.me -||ice.hockey/images/sponsoren/ -||iceinspace.com.au/iisads/ -||iconfinder.com/static/js/istock.js -||idlebrain.com/images4/footer- -||idlebrain.com/images5/main- -||idlebrain.com/images5/sky- -||idrive.com/include/images/idrive-120240.png -||ientent.stre4mplay.one^ -||ientent.streampiay.fun^ -||ih1.fileforums.com^ -||ii.apl305.me/js/pop.js -||illicium.web.money^$subdocument -||illicium.wmtransfer.com^$subdocument -||imagetwist.com/b9ng.js -||imdb.com/_json/getads/ -||imgadult.com/ea2/ -||imgdrive.net/a78bc9401d16.js -||imgdrive.net/anex/ -||imgdrive.net/ea/ -||imgtaxi.com/ea/ -||imgtaxi.com/ttb02673583fb.js -||imgur.com^$domain=ghostbin.me|up-load.io -||imgwallet.com/ea/ -||imp.accesstra.de^ -||imp.pixiv.net^ -||indiadesire.com/bbd/ -||indiansinkuwait.com/Campaign/ -||indiatimes.com/ads_ -||indiatimes.com/itads_ -||indiatimes.com/lgads_ -||indiatimes.com/manageads/ -||indiatimes.com/toiads_ -||infobetting.com/bookmaker/ -||instagram.com/api/v1/injected_story_units/ -||intersc.igaming-service.io^$domain=hltv.org -||investing.com/jp.php -||iontent.powzerz.lol^ -||ip-secrets.com/img/nv -||islandecho.co.uk/uploads/*/vipupgradebackground.jpg$image -||isohunt.app/a/b.js -||italiangenealogy.com/images/banners/ -||itweb.co.za/static/misc/toolbox/ -||itweb.co.za^*/sponsors -||j8jp.com/fhfjfj.js -||jamanetwork.com/AMA/AdTag -||japfg-trending-content.uc.r.appspot.com^ -||jentent.streampiay.fun^ -||jobsora.com/img/banner/ -||jordantimes.com/accu/ -||jpg.church/quicknoisilyheadbites.js -||js.cmoa.pro^ -||js.mangajp.top^ -||js.syosetu.top^ -||jsdelivr.net/gh/$domain=chrome-stats.com|edge-stats.com|firefox-stats.com -||kaas.am/hhapia/ -||kendrickcoleman.com/images/banners/ -||kentent.stre4mplay.one^ -||kentent.streampiay.fun^ -||kickassanimes.info/a_im/ -||kissanime.com.ru/api/pop*.php -||kissanimes.net/30$subdocument -||kissasians.org/banners/ -||kisscartoon.sh/api/pop.php -||kissmanga.org/rmad.php -||kitco.com/jscripts/popunders/ -||kitsune-rush.overbuff.com^ -||kitz.co.uk/files/jump2/ -||kompass.com/getAdvertisements -||kontent.powzerz.lol^ -||koreatimes.co.kr/ad/ -||kta.etherscan.com^ -||kuwaittimes.com/uploads/ads/ -||lagacetanewspaper.com/wp-content/uploads/banners/ -||lapresse.ca/webparts/ads/ -||lasentinel.net/static/img/promos/ -||latestlaws.com/frontend/ads/ -||learn-cpp.org/static/img/banners/cfk/$image -||lespagesjaunesafrique.com/bandeaux/ -||letour.fr/img/dyn/partners/ -||lifehack.org/Tm73FWA1STxF.js -||linkedin.com/tscp-serving/ -||linkhub.icu/vendors/h.js -||linkshare.pro/img/btc.gif -||linuxtracker.org/images/dw.png -||livescore.az/images/banners -||lontent.powzerz.lol^ -||lordchannel.com/adcash/ -||lowfuelmotorsport.com/assets/img/partners/$image -||ltn.hitomi.la/zncVMEzbV/ -||lw.musictarget.com^ -||lycos.com/catman/ -||machineseeker.com/data/ofni/ -||mafvertizing.crazygames.com^ -||mail-ads.google.com^ -||mail.aol.com/d/gemini_api/?adCount= -||manga1000.top/hjshds.js -||manga1001.top/gdh/dd.js -||manga18fx.com/js/main-v001.js -||mangahub.io/iframe/ -||manhwascan.net/my2023/my2023 -||manytoon.com/script/$script -||marineterms.com/images/banners/ -||marketscreener.com/content_openx.php -||mas.martech.yahoo.com^$domain=mail.yahoo.com -||masternodes.online/baseimages/ -||maxgames.com/img/sponsor_ -||mbauniverse.com/sites/default/files/shree.png -||media.tickertape.in/websdk/*/ad.js -||mediatrias.com/assets/js/vypopme.js -||mediaupdate.co.za/banner/ -||megashare.website/js/safe.ob.min.js -||mictests.com/myshowroom/view.php$subdocument -||mobilesyrup.com/RgPSN0siEWzj.js -||monkeygamesworld.com/images/banners/ -||montent.powzers.lol^ -||moonjscdn.info/player8/JWui.js -||moviehaxx.pro/js/bootstrap-native.min.js -||moviehaxx.pro/js/xeditable.min.js -||mp3fiber.com/*ml.jpg -||mpgh.net/idsx2/ -||mrskin.com^$script,third-party,domain=~mrskincdn.com -||musicstreetjournal.com/banner/ -||mutaz.pro/img/ba/ -||myabandonware.com/media/img/gog/ -||myanimelist.net/c/i/images/event/ -||mybrowseraddon.com/ads/core.js -||myeongbeauty.com/ads/ -||myflixer.is/ajax/banner^ -||myflixer.is/ajax/banners^ -||myunique.info/wp-includes/js/pop.js -||myvidster.com/js/myv_ad_camp2.php -||n.gemini.yahoo.com^ -||nameproscdn.com/images/backers/ -||nativetimes.com/images/banners/ -||naturalnews.com/wp-content/themes/naturalnews-child/$script -||navyrecognition.com/images/stories/customer/ -||nemosa.co.za/images/mad_ad.png -||newkerala.com/banners/amazon -||news.itsfoss.com/assets/images/pikapods.jpg -||newsnow.co.uk/pharos.js -||nexvelar.b-cdn.net/videoplayback_.mp4 -||nontent.powzers.lol^ -||northsidesun.com/init-2.min.js -||norwaypost.no/images/banners/ -||notebrains.com^$image,domain=businessworld.in -||nrl.com/siteassets/sponsorship/ -||nrl.com^*/sponsors/ -||nu2.nu/gfx/sponsor/ -||nyaa.land/static/p2.jpg -||nzherald.co.nz/pf/resources/dist/scripts/global-ad-script.js -||observerbd.com/ad/ -||odrama.net/images/clicktoplay.jpg -||ohmygore.com/ef_pub -||oklink.com/api/explorer/v2/index/text-advertisement? -||onlineshopping.co.za/expop/ -||oontent.powzers.lol^ -||opencart.com/application/view/image/banner/ -||openstack.org/api/public/v1/sponsored-projects? -||optics.org/banners/ -||outbrain.com^$domain=bgr.com|buzzfeed.com|dto.to|investing.com|mamasuncut.com|mangatoto.com|tvline.com -||outlookads.live.com^ -||outputter.io/uploads/$subdocument -||ownedcore.com/forums/ocpbanners/ -||pafvertizing.crazygames.com^ -||pahaplayers.click/ch/adcashdirect.php -||pandora.com/api/v1/ad/ -||paste.fo/*jpeg$image -||pasteheaven.com/assets/images/banners/ -||pastemagazine.com/common/js/ads- -||pastemytxt.com/download_ad.jpg -||pcmag.com/js/alpine/$domain=speedtest.net -||pcwdld.com/SGNg95BS08r9.js -||petrolplaza.net/AdServer/ -||phonearena.com/js/ops/taina.js -||phuketwan.com/img/b/ -||picrew.me/vol/ads/ -||pimpandhost.com/mikakoki/ -||pinkmonkey.com/includes/right-ad-columns.html -||pixlr.com/dad/ -||pixlr.com/fad/ -||plainenglish.io/assets/sponsors/ -||planetlotus.org/images/partners/ -||player.twitch.tv^$domain=go.theconomy.me -||plutonium.cointelegraph.com^ -||poedb.tw/image/torchlight/ -||pons.com/assets/javascripts/modules-min/ad-utilities_ -||pons.com/assets/javascripts/modules-min/idm-ads_ -||pontent.powzers.lol^ -||ports.co.za/banners/ -||positivehealth.com/img/original/BannerAvatar/ -||positivehealth.com/img/original/TopicbannerAvatar/ -||povvldeo.lol/js/fpu3/ -||prebid-server.newsbreak.com^ -||presearch.com/affiliates|$xmlhttprequest -||presearch.com/coupons|$xmlhttprequest -||presearch.com/tiles^ -||pressablecdn.com/wp-content/uploads/Site-Skin_update.gif$domain=bikebiz.com -||prewarcar.com/*-banners/ -||prod-sponsoredads.mkt.zappos.com^ -||products.gobankingrates.com^ -||publicdomaintorrents.info/grabs/hdsale.png -||publicdomaintorrents.info/rentme.gif -||publicdomaintorrents.info/srsbanner.gif -||pubsrv.devhints.io^ -||pururin.to/assets/js/pop.js -||puzzle-slant.com/images/ad/ -||pwinsider.com/advertisement/ -||qontent.powzers.lol^ -||qrz.com/ads/ -||quora.com/ads/ -||radioreference.com/i/p4/tp/smPortalBanner.gif -||raenonx.cc/api/scripts -||rafvertizing.crazygames.com^ -||rd.com/wp-content/plugins/pup-ad-stack/ -||realitytvworld.com/includes/loadsticky.html -||realpython.net/tag.js -||receive-sms-online.info/img/banner_ -||red-shell.speedrun.com^ -||republicmonitor.com/images/lundy-placeholder.jpeg -||rev.frankspeech.com^ -||revolver.news/wp-content/banners/ -||rswebsols.com/wp-content/uploads/rsws-banners/ -||s.radioreference.com/sm/$image -||s.yimg.com/zh/mrr/$image,domain=mail.yahoo.com -||saabsunited.com/wp-content/uploads/*banner -||sat-universe.com/wos2.png -||sat-universe.com/wos3.gif -||save-editor.com/b/in/ad/ -||sbfull.com/assets/jquery/jquery-3.2.min.js? -||sbfull.com/js/mainpc.js -||sciencefocus.com/pricecomparison/$subdocument -||scoot.co.uk/delivery.php -||scrolller.com/scrolller/affiliates/ -||search.brave.com/api/ads/ -||search.brave.com/serp/v1/static/serp-js/paid/ -||search.brave.com/serp/v1/static/serp-js/shopping/ -||searchenginereports.net/theAdGMC/$image -||sedo.cachefly.net^$domain=~sedoparking.com -||segmentnext.com/LhfdY3JSwVQ8.js -||sermonaudio.com/images/sponsors/ -||sgtreport.com/wp-content/uploads/*Banner -||sharecast.ws/cum.js -||sharecast.ws/fufu.js -||short-wave.info/html/adsense- -||siberiantimes.com/upload/banners/ -||sicilianelmondo.com/banner/ -||slickdeals.net/ad-stats/ -||smallseotools.com/webimages/a12/$image -||smn-news.com/images/banners/ -||socket.streamable.com^ -||softcab.com/google.php? -||sonichits.com/tf.php -||sontent.powzers.lol^ -||sorcerers.net/images/aff/ -||soundcloud.com/audio-ads? -||southfloridagaynews.com/images/banners/ -||spike-plant.valorbuff.com^ -||sponsors.vuejs.org^ -||sportlemon24.com/img/301.jpg -||sportshub.to/player-source/images/banners/ -||spotify.com/ads/ -||spox.com/daznpic/ -||spys.one/fpe.png -||srilankamirror.com/images/banners/ -||srware.net/iron/assets/img/av/ -||startpage.com/sp/adsense/ -||startpage.com/sp/cdn/*/TotalAdBlockAdultWidget.js -||startpage.com/sp/Tgz1k/adsense/ -||static.fastpic.org^$subdocument -||static.getmodsapk.com/cloudflare/ads-images/ -||staticflickr.com/ap/build/javascripts/prbd-$script,domain=flickr.com -||steamanalyst.com/steeem/delivery/ -||storage.googleapis.com/cdn.newsfirst.lk/advertisements/$domain=newsfirst.lk -||store-api.mumuglobal.com^ -||strcloud.club/mainstream -||streamoupload.*/api/spots/$script -||streams.tv/js/slidingbanner.js -||streamsport.pro/hd/popup.php -||strtpe.link/ppmain.js -||stuff.co.nz/static/adnostic/ -||stuff.co.nz/static/stuff-adfliction/ -||sundayobserver.lk/sites/default/files/pictures/COVID19-Flash-1_0.gif -||surfmusic.de/anz -||survivalblog.com/marketplace/ -||survivalservers.com^$subdocument,domain=adfoc.us -||swncdn.com/ads/$domain=christianity.com -||sync.amperwave.net/api/get/magnite/auid=$xmlhttprequest -||szm.com/reklama -||t.police1.com^ -||taadd.com/files/js/site_skin.js -||taboola.com^$domain=independent.co.uk|outlook.live.com|technobuffalo.com -||tampermonkey.net/s.js -||tashanmp3.com/api/pops/ -||techgeek365.com/advertisements/ -||techonthenet.com/javascript/pb.js -||techporn.ph/wp-content/uploads/Ad- -||techsparx.com/imgz/udemy/ -||tempr.email/public/responsive/gfx/awrapper/ -||tennis.com/assets/js/libraries/render-adv.js -||terabox.app/api/ad/ -||terabox.com/api/ad/ -||thanks.viewfr.com/webroot/ads/adsterra/ -||thedailysheeple.com/images/banners/ -||thedailysheeple.com/wp-content/plugins/tds-ads-plugin/assets/js/campaign.js -||thefinancialexpress.com.bd/images/rocket-250-250.png -||theindependentbd.com/assets/images/banner/ -||thephuketnews.com/photo/banner/ -||theplatform.kiwi/ads/ -||theseoultimes.com/ST/banner/ -||thespike.gg/images/bc-game/ -||thisgengaming.com/Scripts/widget2.aspx -||timesnownews.com/dfpamzn.js -||tontent.powzers.lol^ -||torrent911.ws/z- -||torrenteditor.com/img/graphical-network-monitor.gif -||torrentfreak.com/wp-content/banners/ -||totalcsgo.com/site-takeover/$image -||tpc.googlesyndication.com^ -||tr.7vid.net^ -||tracking.police1.com^ -||traditionalmusic.co.uk/images/banners/ -||trahkino.cc/static/js/li.js -||triangletribune.com/cache/sql/fba/ -||truck1.eu/_BANNERS_/ -||trucknetuk.com/phpBB2old/sponsors/ -||trumparea.com/_adz/ -||tubeoffline.com/itbimg/ -||tubeoffline.com/js/hot.min.js -||tubeoffline.com/vpn.php -||tubeoffline.com/vpn2.php -||tubeoffline.com/vpnimg/ -||turbobit.net/pus/ -||twt-assets.washtimes.com^$script,domain=washingtontimes.com -||ubuntugeek.com/images/ubuntu1.png -||uefa.com/imgml/uefacom/sponsors/ -||uhdmovies.eu/axwinpop.js -||uhdmovies.foo/onewinpop.js -||ukcampsite.co.uk/banners/ -||unmoor.com/config.json -||uploadcloud.pro/altad/ -||userscript.zone/s.js -||usrfiles.com^$domain=dannydutch.com|melophobemusic.com -||util-*.simply-hentai.com^ -||utilitydive.com/static/js/prestitial.js -||uxmatters.com/images/sponsors/ -||v3cars.com/load-ads.php -||vastz.b-cdn.net/hsr/HSR*.mp4 -||videogameschronicle.com/ads/ -||vidstream.pro/AB/pioneersuspectedjury.com/ -||vidzstore.com/popembed.php -||vobium.com/images/banners/ -||voodc.com/avurc -||vtube.to/api/spots/ -||wafvertizing.crazygames.com^ -||wall.vgr.com^ -||web-oao.ssp.yahoo.com/admax/ -||webcamtests.com/MyShowroom/view.php? -||webstick.blog/images/images-ads/ -||welovemanga.one/uploads/bannerv.gif -||widenetworks.net^$domain=flysat.com -||wikihow.com/x/zscsucgm? -||windows.net/banners/$domain=hortidaily.com -||winxclub.com^*/dfp.js? -||wonkychickens.org/data/statics/s2g/$domain=torrentgalaxy.to -||worldofmods.com/wompush-init.js -||wqah.com/images/banners/ -||wsj.com/asset/ace/ace.min.js -||www.google.*/adsense/search/ads.js -||x.castanet.net^ -||x.com/*/videoads/ -||xboxone-hq.com/images/banners/ -||xing.com/xas/ -||xingcdn.com/crate/ad- -||xingcdn.com/xas/ -||xinhuanet.com/s? -||y3o.tv/nevarro/video-ads/$domain=yallo.tv -||yahoo.com/m/gemini_api/ -||yahoo.com/pdarla/ -||yahoo.com/sdarla/ -||yellowpages.com.lb/uploaded/banners/ -||yimg.com/rq/darla/$domain=yahoo.com -||ynet.co.il/gpt/ -||youtube.com/pagead/ -||ytconvert.me/pop.js -||ytmp3.cc/js/inner.js -||ytmp3.plus/ba -||zillastream.com/api/spots/ -||zmescience.com/1u8t4y8jk6rm.js -||zmovies.cc/bc1ea2a4e4.php -/^https?:\/\/.*\.(club|bid|biz|xyz|site|pro|info|online|icu|monster|buzz|website|biz|re|casa|top|one|space|network|live|systems|ml|world|life|co)\/.*/$~image,~media,~subdocument,third-party,domain=1cloudfile.com|adblockstreamtape.art|adblockstreamtape.site|bowfile.com|clipconverter.cc|cricplay2.xyz|desiupload.co|dood.la|dood.pm|dood.so|dood.to|dood.watch|dood.ws|dopebox.to|downloadpirate.com|drivebuzz.icu|embedstream.me|eplayvid.net|fmovies.ps|fmovies.to|gdriveplayer.us|gospeljingle.com|hexupload.net|hurawatch.at|kissanimes.net|krunkercentral.com|movies2watch.tv|myflixer.pw|myflixer.today|myflixertv.to|powvideo.net|proxyer.org|scloud.online|sflix.to|skidrowcodex.net|streamtape.com|theproxy.ws|vidbam.org|vidembed.cc|vidembed.io|videobin.co|vidlii.com|vidoo.org|vipbox.lc -/^https?:\/\/[0-9a-z]{5,}\.com\/.*/$script,third-party,xmlhttprequest,domain=123movies.tw|1cloudfile.com|745mingiestblissfully.com|9xupload.asia|adblockeronstape.me|adblockeronstreamtape.me|adblockeronstrtape.xyz|adblockplustape.xyz|adblockstreamtape.art|adblockstreamtape.fr|adblockstreamtape.site|adblocktape.online|adblocktape.store|adblocktape.wiki|anonymz.com|antiadtape.com|audaciousdefaulthouse.com|bowfile.com|clickndownload.click|clicknupload.to|cloudvideo.tv|cr7sports.us|cuervotv.me|d000d.com|daddylivehd.sx|dailyuploads.net|databasegdriveplayer.xyz|deltabit.co|dlhd.sx|dood.la|dood.li|dood.pm|dood.re|dood.sh|dood.so|dood.to|dood.watch|dood.wf|dood.ws|dood.yt|doods.pro|dooood.com|dramacool.sr|drivebuzz.icu|ds2play.com|embedplayer.site|embedsb.com|embedsito.com|embedstream.me|engvideo.net|enjoy4k.xyz|eplayvid.net|evoload.io|fembed-hd.com|filemoon.sx|files.im|filmy4wap.ink|flexy.stream|fmovies.ps|gamovideo.com|gaybeeg.info|gdriveplayer.pro|gettapeads.com|givemenbastreams.com|gogoanimes.org|gogohd.net|goload.io|gomo.to|greaseball6eventual20.com|hdtoday.ru|hexload.com|hexupload.net|hurawatch.at|imgtraffic.com|kesini.in|kickassanime.mx|kickasstorrents.to|linkhub.icu|lookmyimg.com|mangareader.cc|mangareader.to|mangovideo.pw|maxsport.one|membed.net|meomeo.pw|mirrorace.org|mixdroop.co|mixdrop.ag|mixdrop.bz|mixdrop.click|mixdrop.club|mixdrop.ms|mixdrop.nu|mixdrop.ps|mixdrop.si|mixdrop.sx|mixdrop.to|mixdrops.xyz|mixdrp.co|movies2watch.tv|mp4upload.com|nelion.me|noblocktape.com|nsw2u.org|olympicstreams.co|onlinevideoconverter.com|ovagames.com|pahaplayers.click|papahd.club|pcgamestorrents.com|pouvideo.cc|proxyer.org|putlocker-website.com|reputationsheriffkennethsand.com|rintor.space|rojadirecta1.site|scloud.online|send.cm|sflix.to|shavetape.cash|skidrowcodex.net|smallencode.me|soccerstreamslive.co|sportshighlights.club|stapadblockuser.art|stapadblockuser.click|stapadblockuser.info|stapadblockuser.xyz|stape.fun|stapewithadblock.beauty|stapewithadblock.monster|stapewithadblock.xyz|strcloud.in|streamadblocker.cc|streamadblocker.com|streamadblocker.store|streamadblocker.xyz|streamingsite.net|streamlare.com|streamnoads.com|streamta.pe|streamta.site|streamtape.cc|streamtape.com|streamtape.to|streamtape.xyz|streamtapeadblock.art|streamtapeadblockuser.art|streamtapeadblockuser.homes|streamtapeadblockuser.monster|streamtapeadblockuser.xyz|strikeout.ws|strtape.cloud|strtape.tech|strtapeadblock.club|strtapeadblocker.xyz|strtapewithadblock.art|strtapewithadblock.xyz|supervideo.tv|tapeadsenjoyer.com|tapeantiads.com|tapeblocker.com|tapenoads.com|tapewithadblock.com|tapewithadblock.org|thepiratebay0.org|thepiratebay10.xyz|theproxy.ws|thevideome.com|toxitabellaeatrebates306.com|un-block-voe.net|upbam.org|upload-4ever.com|upload.do|uproxy.to|upstream.to|uqload.co|uqload.io|userscloud.com|v-o-e-unblock.com|vidbam.org|vido.lol|vidshar.org|vidsrc.me|vidsrc.stream|vipleague.im|vipleague.st|voe-unblock.net|voe.bar|voe.sx|vudeo.io|vudeo.net|vumoo.to|yesmovies.mn|youtube4kdownloader.com -/^https?:\/\/[0-9a-z]{8,}\.xyz\/.*/$third-party,xmlhttprequest,domain=1link.club|2embed.to|apiyoutube.cc|bestmp3converter.com|clicknupload.red|clicknupload.to|daddyhd.com|dood.wf|lulustream.com|mp4upload.com|poscitech.com|sportcast.life|streamhub.to|streamvid.net|tvshows88.live|uploadbank.com|uqload.io|worldstreams.click -/\/[0-9a-f]{32}\/invoke\.js/$script,third-party -/^https?:\/\/www\..*.com\/[a-z]{1,}\.js$/$script,third-party,domain=deltabit.co|nzbstars.com|papahd.club|vostfree.online -! url.rw popups -||url.rw/*&a= -||url.rw/*&mid= -! Fixes -@@||freeplayervideo.com^$subdocument -@@||gogoplay5.com^$subdocument -@@||gomoplayer.com^$subdocument -@@||lshstream.xyz/hls/$xmlhttprequest -@@||msubload.com/sub/$xmlhttprequest -/^https?:\/\/.*(com|net|top|xyz)\/(bundle|warning|style|bootstrap|brand|reset|jquery-ui|styles|error|logo|index|favicon|star|header)\.(png|css)\?[A-Za-z0-9]{30,}.*/$third-party -/^https?:\/\/[0-9a-z]{5,}\.(digital|website|life|guru|uno|cfd)\/[a-z0-9]{6,}\//$script,third-party,xmlhttprequest,domain=~127.0.0.1|~bitrix24.life|~ccc.ac|~jacksonchen666.com|~lemmy.world|~localhost|~scribble.ninja|~scribble.website|~traineast.co.uk -/^https?:\/\/cdn\.[0-9a-z]{3,6}\.xyz\/[a-z0-9]{8,}\.js$/$script,third-party -! Buff sites -||frameperfect.speedrun.com^ -||junkrat-tire.overbuff.com^ -! prebid specific -||breitbart.com/t/assets/js/prebid -||bustle.com^*/prebid- -||jwplatform.com/libraries/tdeymorh.js -||purexbox.com/javascript/gn/prebid- -||wsj.net/pb/pb.js -! firework -||fireworkapi1.com^$domain=boldsky.com -! In-page video advertising. -||anyclip.com^$third-party,domain=~click2houston.com|~clickondetroit.com|~clickorlando.com|~dictionary.com|~heute.at|~ksat.com|~news4jax.com|~therealdeal.com|~video.timeout.com|~wsls.com -||api.dailymotion.com^$domain=philstarlife.com -||api.fw.tv^ -||avantisvideo.com^$third-party -||blockchain.info/explorer-gateway/advertisements -||brid.tv^$script,domain=67hailhail.com|deepdaledigest.com|forevergeek.com|geordiebootboys.com|hammers.news|hitc.com|molineux.news|nottinghamforest.news|rangersnews.uk|realitytitbit.com|spin.com|tbrfootball.com|thechelseachronicle.com|thefocus.news|thepinknews.com|washingtonexaminer.com -||caffeine.tv/embed.js -||cdn.ex.co^$third-party -||cdn.thejournal.ie/media/hpto/$image -||channelexco.com/player/$third-party -||connatix.com^$third-party,domain=~accuweather.com|~deadline.com|~elnuevoherald.com|~heraldsun.com|~huffpost.com|~lmaoden.tv|~loot.tv|~miamiherald.com|~olhardigital.com.br|~sacbee.com -||delivery.vidible.tv/jsonp/ -||dywolfer.de^ -||elements.video^$domain=fangoria.com -||embed.comicbook.com^$subdocument -||embed.ex.co^$third-party -||embed.sendtonews.com^$third-party -||floridasportsman.com/video_iframev9.aspx -||fqtag.com^$third-party -||fwcdn1.com/js/fwn.js -||fwcdn1.com/js/storyblock.js -||g.ibtimes.sg/sys/js/minified-video.js -||geo.dailymotion.com/libs/player/$script,domain=mb.com.ph|philstarlife.com -||go.trvdp.com^$domain=~canaltech.com.br|~ig.com.br|~noataque.com.br|~oantagonista.com.br -||gpv.ex.co^$third-party -||innovid.com/media/encoded/*.mp4$rewrite=abp-resource:blank-mp4,domain=ktla.com -||interestingengineering.com/partial/connatix_desktop.html -||jwpcdn.com^$script,domain=bgr.com|decider.com|dexerto.com -||jwplayer.com^$domain=americansongwriter.com|dexerto.com|ginx.tv|imfdb.org|infoworld.com|kiplinger.com|soulbounce.com|spokesman-recorder.com|tennis.com|thestreet.com|tomshardware.com|variety.com|whathifi.com -||live.primis.tech^$third-party -||minute.ly^$third-party -||minutemedia-prebid.com^$third-party -||minutemediaservices.com^$third-party -||play.springboardplatform.com^ -||playbuzz.com/embed/$script,third-party -||playbuzz.com/player/$script,third-party -||player.avplayer.com^$third-party -||player.ex.co^$third-party -||player.sendtonews.com^$third-party -||players.brightcove.net^$script,domain=gizmodo.com.au|kotaku.com.au|lifehacker.com.au|pedestrian.tv -||playoncenter.com^$third-party -||playwire.com/bolt/js/$script,third-party -||poptok.com^$third-party -||rumble.com^$domain=tiphero.com -||sonar.viously.com^$domain=~aufeminin.com|~marmiton.org|~melty.fr|~nextplz.fr -||sportrecs.com/redirect/embed/ -||startpage.com/sp/PsVHP/ -||tldw.me^$third-party -||ultimedia.com/js/common/smart.js$script,third-party -||vidazoo.com/basev/$script,third-party -||video-streaming.ezoic.com^ -||vidora.com^$third-party -||viewdeos.com^$script,third-party -||voqally.com/hub/app/ -||vplayer.newseveryday.com^ -||www-idm.com/wp-content/uploads/2022/02/bitcoin.png -||zype.com^$third-party,domain=bossip.com|hiphopwired.com|madamenoire.com -! streamplay -||centent.streamp1ay. -||cintent.streanplay. -! Test (Webkit Mobile/Desktop for Youtube) -@@||youtube.com/get_video_info?$xmlhttprequest,domain=music.youtube.com|tv.youtube.com -||m.youtube.com/get_midroll_$domain=youtube.com -! temp disabled, affecting some extensions/browsers -||www.youtube.com/get_midroll_$domain=youtube.com -||youtube.com/get_video_info?*adunit$~third-party -! bit.ly -/^https?:\/\/.*bit(ly)?\.(com|ly)\//$domain=1337x.to|cryptobriefing.com|eztv.io|eztv.tf|eztv.yt|fmovies.taxi|fmovies.world|limetorrents.info|megaup.net|mrunlock.kim|newser.com|sendit.cloud|tapelovesads.org|torlock.com|uiz.io|userscloud.com|vev.red|vidbull.tv|vidup.io|yourbittorrent2.com -! Torrent/Pirate sites /sw.js -/^https?:\/\/.*\/.*(sw[0-9a-z._-]{1,6}|\.notify\.).*/$script,domain=1337x.to|cashurl.in|clickndownload.click|clicknupload.click|cloudvideo.tv|downloadpirate.com|fmovies.taxi|fmovies.world|hurawatch.at|igg-games.com|indishare.org|linksly.co|megaup.net|mixdrop.ag|mp3-convert.org|nutritioninsight.com|ouo.press|pcgamestorrents.com|pcgamestorrents.org|powvideo.net|powvldeo.cc|primewire.sc|proxyer.org|sendit.cloud|sendspace.com|shrinke.me|shrinkhere.xyz|solarmovie.to|theproxy.ws|uiz.io|up-load.io|upload.ac|uploadever.com|uploadrar.com|uploadrive.com|uplovd.com|upstream.to|userscloud.com|vidbull.tv|vidoza.co|vidoza.net|vidup.io|vumoo.life|xtits.com|yourbittorrent2.com|ziperto.com -/^https?:\/\/.*\/sw\.js\?[a-zA-Z0-9%]{50,}/$script,~third-party -! sw.js -/sw.js$script,domain=filechan.org|hotfile.io|lolabits.se|megaupload.nz|openload.cc|rapidshare.nu|share-online.is -! https://ww1.123watchmovies.co/episode/euphoria-season-2-episode-6/ -! vidoza.net -$image,script,subdocument,third-party,xmlhttprequest,domain=vidoza.co|vidoza.net -@@$generichide,domain=vidoza.co|vidoza.net -@@||ajax.googleapis.com/ajax/libs/$script,domain=vidoza.co|vidoza.net -@@||cdn.vidoza.co/js/$script,domain=vidoza.co|vidoza.net -@@||cdnjs.cloudflare.com/ajax/libs/$script,domain=vidoza.co|vidoza.net -! megaup.net -$image,script,subdocument,third-party,xmlhttprequest,domain=megaup.net -@@||challenges.cloudflare.com^$domain=download.megaup.net -! govid.co -$script,third-party,xmlhttprequest,domain=govid.co -@@||ajax.googleapis.com/ajax/libs/$script,domain=govid.co -! canyoublockit.com -@@||akamaiedge.net^$domain=canyoublockit.com -@@||cloudflare.com^$script,stylesheet,domain=canyoublockit.com -@@||fluidplayer.com^$script,stylesheet,domain=canyoublockit.com -@@||googleapis.com^$script,stylesheet,domain=canyoublockit.com -@@||hwcdn.net^$domain=canyoublockit.com -|http://$image,script,stylesheet,subdocument,third-party,xmlhttprequest,domain=canyoublockit.com -|https://$image,script,stylesheet,subdocument,third-party,xmlhttprequest,domain=canyoublockit.com -! up-4ever.com -$script,stylesheet,third-party,xmlhttprequest,domain=up-4ever.net -@@||ajax.googleapis.com^$script,domain=up-4ever.net -@@||connect.facebook.net^$script,domain=up-4ever.net -@@||fonts.googleapis.com^$stylesheet,domain=up-4ever.net -@@||maxcdn.bootstrapcdn.com^$stylesheet,domain=up-4ever.net -@@||up4ever.download^$domain=up-4ever.net -! hitomi.la/rule34hentai.net -$script,third-party,domain=hitomi.la|rule34hentai.net -@@||ajax.googleapis.com^$script,domain=rule34hentai.net -@@||cloudflare.com^$script,domain=rule34hentai.net -! urlcash.net -|http://$script,xmlhttprequest,domain=urlcash.net -|https://$script,xmlhttprequest,domain=urlcash.net -! gelbooru.com -@@||gelbooru.com^$generichide -||gelbooru.com*/license.$script -||gelbooru.com*/tryt.$script -||gelbooru.com/halloween/ -! bc.vc -|http://$script,third-party,xmlhttprequest,domain=bc.vc -|https://$script,third-party,xmlhttprequest,domain=bc.vc -! damimage.com, imagedecode.com, imageteam.org -$media,domain=damimage.com|imagedecode.com|imageteam.org -|http://$image,script,third-party,xmlhttprequest,domain=damimage.com|imagedecode.com|imageteam.org -|https://$image,script,third-party,xmlhttprequest,domain=damimage.com|imagedecode.com|imageteam.org -! abcvideo.cc -$script,third-party,xmlhttprequest,domain=abcvideo.cc -! ouo -$script,third-party,xmlhttprequest,domain=ouo.io|ouo.press -||ouo.io/js/*.js? -||ouo.io/js/pop. -||ouo.press/js/pop. -! Imgbox -$script,third-party,domain=imgbox.com -@@||ajax.googleapis.com^$script,domain=imgbox.com -! TPB -$image,script,stylesheet,subdocument,third-party,xmlhttprequest,domain=pirateproxy.live|thehiddenbay.com|thepiratebay.org|thepiratebay10.org -$webrtc,websocket,xmlhttprequest,domain=pirateproxy.live|thehiddenbay.com|thepiratebay.org|thepiratebay10.org -@@||apibay.org^$script,xmlhttprequest,domain=thepiratebay.org -@@||jsdelivr.net^$script,domain=thepiratebay.org -@@||thepiratebay.*/static/js/details.js$domain=pirateproxy.live|thehiddenbay.com|thepiratebay.org -@@||thepiratebay.*/static/js/prototype.js$domain=pirateproxy.live|thehiddenbay.com|thepiratebay.org -@@||thepiratebay.*/static/js/scriptaculous.js$domain=thepiratebay.org -@@||thepiratebay.org/*.php$csp,~third-party -@@||thepiratebay.org/static/main.js$script,~third-party -@@||torrindex.net/images/*.gif$domain=thepiratebay.org -@@||torrindex.net/images/*.jpg$domain=thepiratebay.org -@@||torrindex.net^$script,stylesheet,domain=thepiratebay.org -||thepirate-bay3.org/banner_ -||thepiratebay.$script,domain=pirateproxy.live|thehiddenbay.com|thepiratebay.org -||thepiratebay.*/static/$subdocument -||thepiratebay10.org/static/js/UYaf3EPOVwZS3PP.js -! Yavli.com -||aupetitparieur.com// -||beforeitsnews.com// -||bigleaguepolitics.com// -||canadafreepress.com/// -||concomber.com// -||conservativefiringline.com// -||mamieastuce.com// -||meilleurpronostic.fr// -||patriotnationpress.com// -||populistpress.com// -||reviveusa.com// -||thegatewaypundit.com// -||thelibertydaily.com// -||toptenz.net// -||westword.com// -! Yavli.com (regex) -/^https?:\/\/(.+?\.)?ipatriot\.com[\/]{1,}.*[a-zA-Z0-9]{9,}\/[a-zA-Z0-9]{6,}\/.*/$image,domain=ipatriot.com -/^https?:\/\/(.+?\.)?letocard\.fr[\/]{1,}.*[a-zA-Z0-9]{3,7}\/[a-zA-Z0-9]{6,}\/.*/$image,domain=letocard.fr -/^https?:\/\/(.+?\.)?letocard\.fr\/[a-zA-Z0-9]{3,7}\/[a-zA-Z0-9]{6,}\/.*/$image,domain=letocard.fr -/^https?:\/\/(.+?\.)?lovezin\.fr[\/]{1,}.*[a-zA-Z0-9]{7,9}\/[a-zA-Z0-9]{10,}\/.*/$image,domain=lovezin.fr -/^https?:\/\/(.+?\.)?naturalblaze\.com\/wp-content\/uploads\/.*[a-zA-Z0-9]{14,}\.*/$image,domain=naturalblaze.com -/^https?:\/\/(.+?\.)?newser\.com[\/]{1,}.*[a-zA-Z0-9]{3,7}\/[a-zA-Z0-9]{6,}\/.*/$image,domain=newser.com -/^https?:\/\/(.+?\.)?rightwingnews\.com[\/]{1,9}.*[a-zA-Z0-9]{8,}\/[a-zA-Z0-9]{6,}\/.*/$image,domain=rightwingnews.com -/^https?:\/\/(.+?\.)?topminceur\.fr\/[a-zA-Z0-9]{6,}\/[a-zA-Z0-9]{3,}\/.*/$image,domain=topminceur.fr -/^https?:\/\/(.+?\.)?vitamiiin\.com\/[\/][\/a-zA-Z0-9]{3,}\/[a-zA-Z0-9]{6,}\/.*/$image,domain=vitamiiin.com -/^https?:\/\/(.+?\.)?writerscafe\.org[\/]{1,}.*[a-zA-Z0-9]{3,7}\/[a-zA-Z0-9]{6,}\/.*/$image,domain=writerscafe.org -/^https?:\/\/.*\.(com|net|org|fr)\/[A-Za-z0-9]{1,}\/[A-Za-z0-9]{1,}\/[A-Za-z0-9]{2,}\/.*/$image,domain=allthingsvegas.com|aupetitparieur.com|beforeitsnews.com|bigleaguepolitics.com|canadafreepress.com|concomber.com|conservativefiringline.com|dailylol.com|ipatriot.com|mamieastuce.com|meilleurpronostic.fr|miaminewtimes.com|naturalblaze.com|patriotnationpress.com|populistpress.com|thegatewaypundit.com|thelibertydaily.com|toptenz.net|vitamiiin.com|westword.com|wltreport.com|writerscafe.org -! webrtc-ads -$webrtc,domain=ack.net|allthetests.com|azvideo.net|champion.gg|clicknupload.link|colourlovers.com|csgolounge.com|dispatch.com|fastplay.to|go4up.com|janjua.pw|janjua.tv|jpost.com|megaup.net|netdna-storage.com|ouo.io|ouo.press|sourceforge.net|spanishdict.com|telegram.com|torlock2.com|uptobox.com|uptobox.eu|uptobox.fr|uptobox.link|vidtodo.com|yts.gs|yts.mx -! websocket-ads -$websocket,domain=4archive.org|allthetests.com|boards2go.com|colourlovers.com|fastpic.ru|fileone.tv|filmlinks4u.is|imagefap.com|keepvid.com|megaup.net|olympicstreams.me|pocketnow.com|pornhub.com|pornhubthbh7ap3u.onion|powvideo.net|roadracerunner.com|shorte.st|tribune.com.pk|tune.pk|vcpost.com|vidmax.com|vidoza.net|vidtodo.com -! IP address -! CSP filters -$csp=script-src 'self' '*' 'unsafe-inline',domain=pirateproxy.live|thehiddenbay.com|downloadpirate.com|thepiratebay10.org|ukpass.co|linksmore.site -$csp=worker-src 'none',domain=torlock.com|alltube.pl|alltube.tv|centrum-dramy.pl|coinfaucet.eu|crictime.com|crictime.is|doodcdn.com|estream.to|gomo.to|hdvid.fun|hdvid.tv|hitomi.la|kinox.to|lewd.ninja|assia1.tv|nflbite.com|pirateproxy.live|plytv.me|potomy.ru|powvideo.cc|powvideo.net|putlocker.to|reactor.cc|rojadirecta.direct|sickrage.ca|streamtape.com|thehiddenbay.com|thepiratebay.org|thepiratebay10.org|tpb.party|uptomega.me|ustream.to|vidoza.co|vidoza.net|wearesaudis.net|yazilir.com -! ||1337x.to^$csp=script-src 'self' 'unsafe-inline' 'unsafe-eval' data: challenges.cloudflare.com -||bodysize.org^$csp=child-src * -||convertfiles.com^$csp=script-src 'self' '*' 'unsafe-inline' -||gelbooru.com^$csp=script-src 'self' '*' 'unsafe-inline' *.gstatic.com *.google.com *.googleapis.com *.bootstrapcdn.com -||moviewatcher.is^$csp=script-src 'self' '*' 'unsafe-inline' -||pirateiro.com^$csp=script-src 'self' 'unsafe-inline' https://hcaptcha.com *.hcaptcha.com -! CSP Yavli -||activistpost.com^$csp=script-src *.leadpages.net *.gstatic.com *.google.com *.googleapis.com *.playwire.com *.facebook.com *.bootstrapcdn.com -! kinox -$csp=script-src 'self' 'unsafe-inline' 'unsafe-eval' data: *.cloudflare.com *.google.com *.addthis.com *.addthisedge.com *.facebook.net *.twitter.com *.jquery.com *.x.com,domain=kinox.lat|kinos.to|kinox.am|kinox.bz|kinox.click|kinox.cloud|kinox.club|kinox.digital|kinox.direct|kinox.express|kinox.fun|kinox.fyi|kinox.gratis|kinox.io|kinox.lol|kinox.me|kinox.mobi|kinox.pub|kinox.sh|kinox.sx|kinox.to|kinox.tube|kinox.tv|kinox.wtf|kinoz.to,~third-party -! Specific filters necessary for sites allowlisted with $genericblock filter option -! jetzt.de -@@||jetzt.de^$generichide -! dood.pm -/^https?:\/\/www\.[0-9a-z]{8,}\.com\/[0-9a-z]{1,4}\.js$/$script,third-party,domain=dood.la|dood.pm|dood.sh|dood.so|dood.to|dood.watch|dood.ws - -! *** easylist:easylist/easylist_specific_block_popup.txt *** -$popup,third-party,domain=1337x.buzz|720pstream.tv|adblockeronstape.me|adblockeronstreamtape.me|adblockeronstrtape.xyz|adblockplustape.com|adblockplustape.xyz|adblockstreamtape.art|adblockstreamtape.fr|adblockstreamtape.site|adblocktape.online|adblocktape.store|adblocktape.wiki|animepl.xyz|animeworld.biz|aniwave.to|antiadtape.com|assia4.com|atrocidades18.net|bflix.ru|cloudemb.com|cloudvideo.tv|d000d.com|databasegdriveplayer.xyz|dembed1.com|diampokusy.com|dir-proxy.net|dirproxy.info|dood.la|dood.li|dood.pm|dood.re|dood.sh|dood.so|dood.to|dood.watch|dood.wf|dood.ws|dood.yt|doods.pro|dooood.com|ds2play.com|embedsito.com|fembed-hd.com|file-upload.com|filemoon.sx|freeplayervideo.com|geoip.redirect-ads.com|gettapeads.com|gogoanime.lol|gogoanime.nl|haes.tech|highstream.tv|hubfiles.ws|hydrax.xyz|katfile.com|kissanime.lol|kokostream.net|livetv498.me|loader.to|luluvdo.com|luxubu.review|mangovideo.pw|mixdroop.co|mixdrop.ag|mixdrop.bz|mixdrop.click|mixdrop.club|mixdrop.ms|mixdrop.nu|mixdrop.ps|mixdrop.si|mixdrop.sx|mixdrop.to|mixdrops.xyz|mixdrp.co|mixdrp.to|monstream.org|noblocktape.com|okru.link|oneproxy.org|piracyproxy.biz|piraproxy.info|pixroute.com|playtube.ws|pomvideo.cc|pouvideo.cc|projectfreetv2.com|proxyer.org|raes.tech|sbfast.com|sbplay2.com|sbplay2.xyz|sbthe.com|scloud.online|shavetape.cash|slmaxed.com|ssbstream.net|stapadblockuser.info|stapadblockuser.xyz|stape.fun|stape.me|stapewithadblock.beauty|stapewithadblock.monster|stapewithadblock.xyz|strcloud.in|streamadblocker.cc|streamadblocker.com|streamadblocker.store|streamadblocker.xyz|streamhide.to|streamingcommunity.life|streamlare.com|streamnoads.com|streamta.pe|streamtape.cc|streamtape.com|streamtape.to|streamtape.xyz|streamtapeadblock.art|streamtapeadblockuser.art|streamtapeadblockuser.homes|streamtapeadblockuser.monster|streamtapeadblockuser.xyz|streamtapse.com|streamz.ws|strtape.cloud|strtapeadblocker.xyz|strtapewithadblock.art|strtapewithadblock.xyz|strtpe.link|supervideo.tv|suzihaza.com|tapeadsenjoyer.com|tapeantiads.com|tapeblocker.com|tapelovesads.org|tapenoads.com|tapewithadblock.com|tapewithadblock.org|theproxy.ws|trafficdepot.xyz|tubeload.co|un-block-voe.net|uploadfiles.pw|uproxy.co|upstream.to|upvid.biz|uqload.com|userload.co|vanfem.com|vgfplay.com|vidcloud9.com|videovard.to|vidlox.me|vidsrc.to|viewsb.com|vivo.sx|voe-unblock.com|voe-unblock.net|voe.sx|voeunblock1.com|voeunblock2.com|voiranime.com|watchsb.com|welovemanga.one|wiztube.xyz|wootly.ch|y2mate.is|youtubedownloader.sh|ytmp3.cc|ytmp3.sh -/&*^$popup,domain=piracyproxy.app|piraproxy.info|unblocked.club|unblockedstreaming.net -/?ref=$popup,domain=hltv.org -/hkz*^$popup,domain=piracyproxy.app|piraproxy.info|unblocked.club|unblockedstreaming.net -||123moviesfree.world/hd-episode/$popup -||amazon-adsystem.com^$popup,domain=twitch.tv -||animesuge.to/?$popup -||aontent.powzers.lol^$popup -||b.link^$popup,domain=hltv.org -||binance.com^$popup,domain=live7v.com|usagoals.sx -||bit.ly^$popup,domain=dexerto.com|eteknix.com|gdriveplayer.us|kitguru.com|ouo.io|ouo.press|sh.st -||bitcoins-update.blogspot.com^$popup,domain=lineageos18.com -||bitskins.com^$popup,domain=hltv.org -||cdnqq.net/out.php$popup -||centent.stemplay.cc^$popup -||csgfst.com^$popup,domain=hltv.org -||csgofast.cash^$popup,domain=hltv.org -||csgofastx.com/?clickid=$popup,domain=hltv.org -||dontent.powzerz.lol^$popup -||eentent.streampiay.me^$popup -||eontent.powzerz.lol^$popup -||facebook.com/ads/ig_redirect/$popup,domain=instagram.com -||fentent.stre4mplay.one^$popup -||fentent.streampiay.fun^$popup -||fentent.streampiay.me^$popup -||flashtalking.com^$popup,domain=twitch.tv -||flaticon.com/edge/banner/$popup -||flixhq.ru/?$popup -||fontent.powzerz.lol^$popup -||gentent.stre4mplay.one^$popup -||gentent.streampiay.fun^$popup -||gg.bet^$popup,domain=cq-esports.com -||hentent.streampiay.fun^$popup -||hltv.org^*=|$popup,domain=hltv.org -||hqq.tv/out.php?$popup -||hurawatch.ru/?$popup -||ientent.stre4mplay.one^$popup -||ientent.streampiay.fun^$popup -||iontent.powzerz.lol^$popup -||jentent.streampiay.fun^$popup -||jpg.church/*.php?cat$popup -||kentent.stre4mplay.one^$popup -||kentent.streampiay.fun^$popup -||kissanimeonline.com/driectlink$popup -||kontent.powzerz.lol^$popup -||link.advancedsystemrepairpro.com^$popup -||listentoyt.com/button/$popup -||listentoyt.com/vidbutton/$popup -||mercurybest.com^$popup,domain=hltv.org -||montent.powzers.lol^$popup -||mp3-convert.org/p$popup -||nontent.powzers.lol^$popup -||notube.cc/p/$popup -||notube.fi/p/$popup -||notube.im/p/$popup -||notube.io/p/$popup -||notube.net/p/$popup -||oontent.powzers.lol^$popup -||pinoymovies.es/links/$popup -||player.tabooporns.com^$popup -||pontent.powzers.lol^$popup -||qontent.pouvideo.cc^$popup -||rentalcars.com/?affiliateCode=$popup,domain=seatguru.com -||rontent.powzers.lol^$popup -||routeumber.com^$popup,domain=hltv.org -||rx.link^$popup,domain=uploadgig.com -||sendspace.com/defaults/sendspace-pop.html$popup -||skycheats.com^$popup,domain=elitepvpers.com -||t.co^$popup,domain=hltv.org -||tontent.powzers.lol^$popup -||topeuropix.site/svop4/$popup -||vpnfortorrents.*?$popup -||vtube.to/api/click/$popup -||waaw.to/out.php$popup -||yout.pw/button/$popup -||yout.pw/vidbutton/$popup -||ytmp4converter.com/wp-content/uploads$popup -||ytsyifys.com/go.$popup -! Ad shield -$popup,domain=07c225f3.online|content-loader.com|css-load.com|html-load.cc|html-load.com|img-load.com -! about:blank popups -|about:blank#$popup,domain=22pixx.xyz|adblockstrtape.link|animepahe.com|aniwave.to|bitporno.com|cdnqq.net|clipconverter.cc|dailyuploads.net|dood.la|dood.so|dood.to|dood.video|dood.watch|dood.ws|doodcdn.com|embed.embedz.click|flashx.net|fmovies.to|gospeljingle.com|hqq.tv|imagetwist.com|kissanime-ru.ws|mixdrop.bz|mixdrop.sx|mp4upload.com|onlystream.tv|playtube.ws|popads.net|powvideo.net|powvldeo.cc|putlocker.style|run-syndicate.com|sdmoviespoint.online|soap2day.tf|spcdn.cc|strcloud.link|streamani.net|streamsb.net|streamtape.cc|streamtape.com|streamtape.site|strtape.cloud|strtape.tech|strtapeadblock.club|strtapeadblock.me|strtpe.link|supervideo.cc|tapecontent.net|turboimagehost.com|upstream.to|uptostream.com|uptostream.eu|uptostream.fr|uptostream.link|userload.co|vev.red|vevo.io|vidcloud.co|videobin.co|videowood.tv|vidoza.net|voe.sx|vortez.net|vshare.eu|vumoo.to|waaw.to|watchserieshd.tv -! Domain popups -/^https?:\/\/.*\.(club|xyz|top|casa)\//$popup,domain=123movies2022.org|aniwave.to|databasegdriveplayer.co|dood.la|dood.so|dood.to|dood.video|dood.watch|dood.ws|doodcdn.com|fmovies.to|fmovies.world|fplayer.info|gogoanimes.to|gogoplay1.com|masahub.net|redirect-ads.com|strtpe.link|voe-unblock.com|wawacity.work -! html/image popups -/^https?:\/\/.*\.(jpg|jpeg|gif|png|svg|ico|js|txt|css|srt|vtt|webp)/$popup,domain=0123movie.ru|123-movies.ninja|123movies-official.site|123movies.net|123movies2022.org|123moviesfree4u.com|123movieshub.tc|123series.ru|19turanosephantasia.com|1movieshd.com|2umovies.pro|4anime.gg|4hdmovie.com|4stream.gg|5movies.fm|720pstream.tv|745mingiestblissfully.com|9xmovies.homes|adblockstrtape.link|animefreak.vip|animekisa.cc|animepahe.com|animesonline.cz|animesultra.com|aniwave.to|asianembed.io|audaciousdefaulthouse.com|bato.to|batotoo.com|batotwo.com|bflix.ru|bflix.to|bigclatterhomesguideservice.com|bormanga.online|buffstreams.tv|bunnycdn.ru|clicknupload.to|cloudvideo.tv|cmovies.vc|dailyuploads.net|databasegdriveplayer.co|divicast.com|dood.la|dood.pm|dood.sh|dood.so|dood.to|dood.video|dood.watch|dood.ws|dood.yt|doodcdn.com|dopebox.to|dramacool.pk|eplayvid.com|eplayvid.net|eplsite.uk|europixhd.net|exey.io|extreme-down.plus|files.im|filmestorrents.net|filmyzilla.beauty|filmyzilla.directory|filmyzilla.makeup|flashx.net|flixhq.ru|fmovies.app|fmovies.ps|fmovies.pub|fmovies.to|fmovies.world|fplayer.info|fraudclatterflyingcar.com|gayforfans.com|gdtot.nl|go-stream.site|gogoanime.run|gogoanimes.to|gomovies.pics|gospeljingle.com|greaseball6eventual20.com|hds-streaming-hd.com|hexupload.net|hindilinks4u.cam|hindilinks4u.nl|housecardsummerbutton.com|hulkstreams.com|hurawatch.at|hurawatch.it|jackstream.net|jackstreams.com|jujutsukaisen-manga.online|jujutsukaisenonline.net|kaiju-no8.com|kaisen-jujutsu.com|kimetsuscans.online|kimoitv.com|kiss-anime.org|kissanime-ru.ws|kissanime2.org|kissasians.org|leveling-solo.org|lookmoviess.com|magusbridemanga.com|manhuascan.com|manhuascan.me|mcubd.host|meomeo.pw|mixdrop.sx|mkvcage.site|mkvhub.tech|mlbstream.me|mlsbd.shop|mlwbd.host|movierulz.cam|movies2watch.ru|movies2watch.tv|movies7.to|moviesrulz.net|moviesverse.mobi|mp4upload.com|myflixer.it|myflixer.pw|myflixer.ru|myflixer.today|myflixertv.to|nbastream.nu|nflstream.io|ngomik.net|nkiri.com|nswgame.com|olympicstreams.me|paidnaija.com|playemulator.online|primewire.today|prmovies.bz|prmovies.org|putlocker-website.com|putlocker.digital|putlocker.vc|putlocker68.com|putlockers.fm|racaty.io|racaty.net|realfinanceblogcenter.com|record-ragnarok.com|redirect-ads.com|reputationsheriffkennethsand.com|sdmoviespoint.online|series9.la|sflix.to|shadowrangers.live|skidrow-games.com|skidrowcodex.net|soap2day.md|soap2day.video|soap2dayto.org|sockshare.ac|sockshare1.com|solarmovies.movie|speedvideo.net|sportsbay.watch|ssoap2day.to|steampiay.cc|stemplay.cc|streamani.net|streamsb.net|streamsport.icu|streamta.pe|streamtape.cc|streamtape.com|streamtape.net|streamz.ws|strikeout.cc|strikeout.nu|strtape.cloud|strtape.site|strtape.tech|strtapeadblock.me|strtpe.link|tapecontent.net|telerium.net|tinycat-voe-fashion.com|toxitabellaeatrebates306.com|turkish123.com|un-block-voe.net|upbam.org|uploadmaza.com|upornia.com|uprot.net|upstream.to|uptodatefinishconferenceroom.com|upvid.co|v-o-e-unblock.com|vidbam.org|vidembed.cc|vidnext.net|vido.fun|vidsrc.me|vipbox.lc|vipleague.im|vipleague.st|vipleague.tv|viprow.me|viprow.nu|vipstand.se|voe-un-block.com|voe-unblock.com|voe.bar|voe.sx|voeun-block.net|voeunbl0ck.com|voeunblck.com|voeunblk.com|voeunblock3.com|vumoo.to|vumoo.vip|watchseries.ninja|watchserieshd.tv|watchseriess.net|watchseriesstream.com|wawacity.work|xmovies8.fun|xn--tream2watch-i9d.com|yesmovies.id|yesmovies.mn|ymovies.to|yomovies.cam|yomovies.nl|yomovies.pl|yomovies.pm|youflix.site|youtube4kdownloader.com|yseries.tv|ytanime.tv|yts-subs.com|yts.movie - -! *** easylist:easylist_adult/adult_specific_block.txt *** -://*.justthegays.com/$script,~third-party -||037jav.com/wp-content/uploads/2021/04/*.gif -||18porn.sex/ptr18.js -||18teensex.tv/player/html.php$subdocument -||2watchmygf.com/spot/ -||3movs.com/2ff/ -||3movs.xxx/2ff/ -||3naked.com/nb/ -||3prn.com/even/ok.js -||429men.com/zdoink/ -||4tube.com/assets/abpe- -||4tube.com/assets/adf- -||4tube.com/assets/adn- -||4tube.com/assets/padb- -||4tube.com/nyordo.js -||4wank.com/bump/ -||4wank.net/bump/ -||8boobs.com/flr.js -||8muses.com/banner/ -||absoluporn.com/code/script/ -||ad.pornutopia.org^ -||ad69.com/analytics/ -||adf.uhn.cx^ -||adrotic.girlonthenet.com^ -||adult-sex-games.com/images/adult-games/ -||adult-sex-games.com/images/promo/ -||adultasianporn.com/puty3s/ -||adultfilmdatabase.com/graphics/porndude.png -||affiliates.goodvibes.com^ -||akiba-online.com/data/siropu/ -||alaska.xhamster.com^ -||alaska.xhamster.desi^ -||alaska.xhamster2.com^ -||alaska.xhamster3.com^ -||alrincon.com/nbk/ -||amateur.tv/misc/mYcLBNp7fx.js -||analdin.xxx/player/html.php?aid= -||analsexstars.com/og/ -||anybunny.tv/js/main.ex.js -||anyporn.com/aa/ -||anysex.com/*/js| -||anysex.com/*/script| -||anysex.com^$subdocument,~third-party -||asg.faperoni.com^ -||atube.xxx/static/js/abb.js -||aucdn.net^$media,domain=clgt.one -||avn.com/server/ -||b1.tubexo.tv^$subdocument -||b8ms7gkwq7g.crocotube.com^ -||babepedia.com/iStripper/ -||babepedia.com/iStripper2023/ -||babesandstars.com/img/banners/ -||babeshows.co.uk^*banner -||babesinporn.com^*/istripper/ -||babesmachine.com/images/babesmachine.com/friendimages/ -||badjojo.com/d5 -||banners.cams.com^ -||between-legs.com/banners2/ -||between-legs.com^*/banners/ -||bigcock.one/worker.js -||bigdick.tube/tpnxa/ -||bigtitsgallery.net/qbztdpxulhkoicd.php -||bigtitslust.com/lap70/ -||bionestraff.pro/300x250.php -||bodsforthemods.com/srennab/ -||bootyheroes.com//static/assets/img/banners/ -||boyfriend.show/widgets/Spot -||boyfriendtv.com/bftv/b/ -||boyfriendtv.com/bftv/www/js/*.min.js?url= -||boysfood.com/d5.html -||bravoteens.com/ta/ -||bravotube.net/cc/ -||bravotube.net/js/clickback.js -||brick.xhamster.com^ -||brick.xhamster.desi^ -||brick.xhamster2.com^ -||brick.xhamster3.com^ -||bunnylust.com/sponsors/ -||buondua.com/templatesygfo76jp36enw15_/ -||cam-video.xxx/js/popup.min.js -||cambay.tv/contents/other/player/ -||camcaps.ac/33a9020b46.php -||camcaps.io/024569284e.php -||camcaps.to/400514f2db.php -||camclips.cc/api/$image,script -||camclips.cc/ymGsBPvLBH -||camhub.cc/static/js/bgscript.js -||cams.imagetwist.com/in/?track=$subdocument -||cams.imgtaxi.com^ -||camvideos.tv/tpd.png -||camvideos.tv^$subdocument -||cdn3x.com/xxxdan/js/xxxdan.vast. -||celeb.gate.cc/assets/bilder/bann -||cfgr3.com/videos/*.mp4$rewrite=abp-resource:blank-mp4,domain=hitbdsm.com -||cherrynudes.com/t33638ba5008.js -||chikiporn.com/sqkqzwrecy/ -||clicknplay.to/q3gSxw5.js -||cloud.hentai-moon.com/contents/hdd337st/$media -||cover.ydgal.com/axfile/ -||creative.live.bestjavporn.com^ -||creative.live.javhdporn.net^ -||creative.live.javmix.tv^ -||creative.live.missav.com^ -||creative.live.tktube.com^ -||creative.live7mm.tv^ -||creative.thefaplive.com^ -||creatives.cliphunter.com^ -||creatives.pichunter.com^ -||cumlouder.com/nnubb.js -||cuntlick.net/banner/ -||cutegurlz.com/promos-royal-slider/aff/ -||dads-banging-teens.com/polished- -||daftporn.com/nb_ -||dailyporn.club/at/code.php -||dailyporn.club/nba/ -||darknessporn.com/prrls/ -||dcraddock.uk/frame/ -||dcraddock.uk/images/b/ -||deepxtube.com/zips/ -||definebabe.com/sponsor_ -||delivery.porn.com^ -||depvailon.com/sponsored.html -||dirtyvideo.fun/js/script_ -||dixyporn.com/include/ -||dl.4kporn.xxx^ -||dl.crazyporn.xxx^ -||dl.hoes.tube^ -||dl.love4porn.com^ -||dofap.com/banners/ -||doseofporn.com/img/jerk.gif -||doseofporn.com/t63fd79f7055.js -||dpfantasy.org/k2s.gif -||dporn.com/edraovnjqohv/ -||dporn.com/tpnxa/ -||dragonthumbs.com/adcode.js -||drivevideo.xyz/advert/ -||drtuber.com/footer_ -||dyn.empflix.com^ -||dyn.tnaflix.com^ -||ea-tube.com/i2/ -||easypic.com/js/easypicads.js -||easyporn.xxx/tmp/ -||empflix.com/mew.php -||enporn.org/system/theme/AnyPorn/js/popcode.min.js -||entensity.net/crap/ -||enter.javhd.com/track/ -||eporner.com/dot/ -||eporner.com/event.php -||eporner.com^$subdocument,~third-party -||erowall.com/126.js -||erowall.com/tf558550ef6e.js -||escortdirectory.com//images/ -||exgirl.net/wp-content/themes/retrotube/assets/img/banners/ -||exoav.com/nb/ -||extremescatporn.com/static/images/banners/ -||fakings.com/tools/get_banner.php -||familyporner.com/prerolls/ -||fapclub.sex/js/hr.js -||fapnado.com/api/ -||fapnado.com/bump -||fappenist.com/fojytyzzkm.php -||faptor.com/api/ -||faptor.com/bump/ -||fastfuckgames.com/aff.htm -||fetishshrine.com/js/customscript.js -||files.wordpress.com^$domain=hentaigasm.com -||flw.camcaps.ac^ -||fmgroupdist.com/mafanikio/$image,domain=bdsmtest.org -||footztube.com/b_ -||footztube.com/f_ -||for-iwara-tools.tyamahori.com/ninjaFillter/ -||freehqsex.com/ads/ -||freelivesex.tv/imgs/ad/ -||freeones.com/build/freeones/adWidget.$script -||freeones.com/static-assets/istripper/ -||freepornxxx.mobi/popcode.min.js -||freepublicporn.com/prerolls/ -||freeteen.sex/ab/ -||freeuseporn.com/tceb29242cf7.js -||frprn.com/even/ok.js -||ftopx.com/345.php -||ftopx.com/isttf558550ef6e.js -||ftopx.com/tf558550ef6e.js -||fuwn782kk.alphaporno.com^ -||galleries-pornstar.com/thumb_top/ -||gamcore.com/ajax/abc? -||gay.bingo/agent.php -||gay4porn.com/ai/ -||gayforfans.com^*.php|$script -||gaygo.tv/gtv/frms/ -||gaystream.pw/juicy.js -||gaystream.pw/pemsrv.js -||gaystream.pw/pushtop.js -||gelbooru.com/extras/ -||girlsofdesire.org/blr3.php -||girlsofdesire.org/flr2.js -||girlsofdesire.org/flr6.js -||go.celebjihad.live^ -||go.pornav.net^ -||go.stripchat.beeg.com^ -||go.strpjmp.com^ -||haberprofil.biz/assets/*/vast.js -||haes.tech/js/script_ -||hanime.xxx/wp-content/cache/wpfc-minified/fggil735/fa9yi.js -||hd21.*/templates/base_master/js/jquery.shows2.min.js -||hdporn24.org/vcrtlrvw/ -||hdpornfree.xxx/rek/ -||hdpornmax.com/tmp/ -||hdtube.porn/fork/ -||hdtube.porn/rods/ -||hellporno.com/_a_xb/ -||hellporno.com^$subdocument,~third-party -||hentai2w.com/ark2023/ -||hentaibooty.com/uploads/banners/ -||hentaicdn.com/cdn/v2.assets/js/exc -||hentaidude.xxx/wp-content/plugins/script-manager/ -||hentaifox.com/js/ajs.js -||hentaifox.com/js/slider.js -||hentaihere.com/arkNVB/ -||hentaini.com/img/ads/ -||hentairules.net/gal/new-gallery-dump-small.gif -||hentaiworld.tv/banners-script.js -||herexxxtube.com/tmp/ -||hitomi.la/ebJqXsy/ -||hitprn.com/c_ -||hitslut.b-cdn.net/*.gif -||hoes.tube/ai/ -||home-xxx-videos.com/snowy- -||homemade.xxx/player/html.php?aid= -||homeprivatevids.com/js/580eka426.js -||hornygamer.com/includes/gamefile/sw3d_hornygamer.gif -||hornygamer.com/play_horny_games/ -||hornyjourney.com/fr.js -||hot-sex-tube.com/sp.js -||hotgirlclub.com/assets/vendors/ -||hotgirlsdream.com/tf40bbdd1767.js -||hotmovs.com/fzzgbzhfm/ -||hotmovs.com/suhum/ -||hottystop.com/f9de7147b187.js -||hottystop.com/t33638ba5008.js -||hqbang.com/api/ -||hqporn.su/myvids/ -||hqpornstream.com/pub/ -||hypnohub.net/assets/hub.js -||iceporn.com/player_right_ntv_ -||idealnudes.com/tf40bbdd1767.js -||imagepost.com/stuff/ -||imagetwist.com/img/1001505_banner.png -||imageweb.ws/whaledate.gif -||imageweb.ws^$domain=tongabonga.com -||imgbox.com/images/tpd.png -||imgderviches.work/exclusive/bayou_ -||imgdrive.net/xb02673583fb.js -||imgtaxi.com/frame.php -||imhentai.xxx/js/slider.js -||inporn.com/8kl7mzfgy6 -||internationalsexguide.nl/banners/ -||internationalsexguide.nl/forum/clientscript/PopUnderISG.js -||interracial-girls.com/chaturbate/ -||interracial-girls.com/i/$image -||intporn.com/js/siropu/ -||intporn.com/lj.js -||inxxx.com/api/get-spot/ -||ipornxxx.net/banners/ -||jav-bukkake.net/images/download-bukkake.jpg -||javenglish.net/tcads.js -||javfor.tv/av/js/aapp.js -||javgg.me/wp-content/plugins/1shortlink/js/shorten.js -||javguru.top/126_126.js -||javhub.net/av/js/aapp.js -||javhub.net/av/js/cpp.js -||javhub.net/ps/UJXTsc.js -||javideo.net/js/popup -||javlibrary.com/js/bnr_ -||javpornclub.com/images/banners/takefile72890.gif -||javslon.com/clacunder.js -||javxnxx.pro/pscript.js -||jennylist.xyz/t63fd79f7055.js -||jizzberry.com/65 -||joysporn.sex/js/kj.js -||justthegays.com/agent.php -||justthegays.com/api/spots/ -||justthegays.com/api/users/ -||k2s.tv/cu.js -||kbjfree.com/assets/scripts/popad.js -||kindgirls.com/banners2/ -||kompoz2.com/js/take.max.js -||koushoku.org/proxy? -||kurakura21.space/js/baf.js -||lesbianstate.com/ai/ -||letsporn.com/sda/ -||livesexgirlsrooms.com/ads/ -||livesexgirlsrooms.com/js/popunder.js -||lolhentai.net/tceb29242cf7.js -||lustypuppy.com/includes/popunder.js -||madmen2.alastonsuomi.com^ -||manga18fx.com/tkmo2023/ -||manhwa18.cc/main2023/ -||mansurfer.com/flash_promo/ -||manysex.com/ha10y0dcss -||manysex.tube/soc/roll.js -||marawaresearch.com/js/wosevu.js -||marine.xhamster.com^ -||marine.xhamster.desi^ -||marine.xhamster2.com^ -||marine.xhamster3.com^ -||mature-chicks.com/floral-truth-c224/ -||matureworld.ws/images/banners/ -||megatube.xxx/atrm/ -||milffox.com/ai/ -||milfnut.net/assets/jquery/$script -||milfz.club/qpvtishridusvt.php -||milkmanbook.com/dat/promo/ -||momvids.com/player/html.php?aid= -||mopoga.com/img/aff_ -||mylistcrawler.com/wp-content/plugins/elfsight-popup-cc/ -||mylust.com/092- -||mylust.com/assets/script.js -||mysexgames.com/pix/best-sex-games/ -||mysexgames.com/plop.js -||myvideos.club/api/ -||n.hnntube.com^ -||naughtyblog.org/wp-content/images/k2s/ -||nigged.com/tools/get_banner.php -||nozomi.la/nozomi4.js -||nsfwalbum.com/efds435m432.js -||nudepatch.net/dynbak.min.js -||nudepatch.net/edaea0fd3b2c.j -||oi.429men.com^ -||oj.fapnado.xxx^ -||oldies.name/oldn/ -||orgyxxxhub.com/js/965eka57.js -||orgyxxxhub.com/js/arjlk.js -||otomi-games.com/wp-content/uploads/*-Ad-728- -||pantyhosepornstars.com/foon/pryf003.js -||phonerotica.com/resources/img/banners/ -||picshick.com/b9ng.js -||pimpandhost.com^$subdocument -||pisshamster.com/prerolls/ -||player.javboys.cam/js/script_ -||pleasuregirl.net/bload -||plibcdn.com/templates/base_master/js/jquery.shows2.min.js -||plx.porndig.com^ -||porn-star.com/buttons/ -||pornalin.com/skd -||porndoe.com/banner/ -||porndoe.com/wp-contents/channel? -||pornerbros.com/lolaso/ -||pornforrelax.com/kiadtgyzi/ -||porngals4.com/img/b/ -||porngames.tv/images/skyscrapers/ -||porngames.tv/js/banner.js -||porngames.tv/js/banner2.js -||porngo.tube/tdkfiololwb/ -||pornhat.com/banner/ -||pornicom.com/jsb/ -||pornid.name/ffg/ -||pornid.name/polstr/ -||pornid.xxx/azone/ -||pornid.xxx/pid/ -||pornj.com/wimtvggp/ -||pornjam.com/assets/js/renderer. -||pornktube.tv/js/kt.js -||pornmastery.com/*/img/banners/ -||pornmix.org/cs/ -||porno666.com/code/script/ -||pornorips.com/4e6d8469754a.js -||pornorips.com/9fe1a47dbd42.js -||pornpapa.com/extension/ -||pornpics.com/api/banner/ -||pornpics.de/api/banner/ -||pornpoppy.com/jss/external_pop.js -||pornrabbit.com^$subdocument -||pornsex.rocks/league.aspx -||pornstargold.com/9f3e5bbb8645.js -||pornstargold.com/af8b32fc37c0.js -||pornstargold.com/e7e5ed47e8b4.js -||pornstargold.com/tf2b6c6c9a44/ -||pornv.xxx/static/js/abb.js -||pornve.com/img/300x250g.gif -||pornve.sexyadsrun.com^ -||pornxbox.com/cs/ -||pornxp.com/2.js -||pornxp.com/sp/ -||pornxp.net/spnbf.js -||pornyhd.com/hillpop.php -||port7.xhamster.com^ -||port7.xhamster.desi^ -||port7.xhamster2.com^ -||port7.xhamster3.com^ -||potionnowhere.com^$popup -||pregchan.com/.static/pages/dlsite.html -||projectjav.com/scripts/projectjav_newpu.js -||ps0z.com/300x250b -||punishworld.com/prerolls/ -||puporn.com/xahnqhalt/ -||pussycatxx.com/tab49fb22988.js -||pussyspace.com/fub -||qovua60gue.tubewolf.com^ -||rambo.xhamster.com^ -||rat.xxx/sofa/ -||rat.xxx/wwp2/ -||realgfporn.com/js/bbbasdffdddf.php -||redtube.com^$subdocument,~third-party -||redtube.fm/advertisment.htm -||redtube.fm/lcgldrbboxj.php -||rest.sexypornvideo.net^ -||rintor.space/t2632cd43215.js -||rockpoint.xhaccess.com^ -||rockpoint.xhamster.com^ -||rockpoint.xhamster.desi^ -||rockpoint.xhamster2.com^ -||rockpoint.xhamster3.com^ -||rockpoint.xhamster42.desi^ -||rst.pornyhd.com^ -||rtb-1.jizzberry.com^ -||rtb-1.mylust.com^ -||rtb-1.xcafe.com^ -||rtb-3.xgroovy.com^ -||ruedux.com/code/script/ -||rule34.xxx/images/r34_doll.png -||rule34hentai.net^$subdocument,~third-party -||rusdosug.com/Fotos/Banners/ -||scatxxxporn.com/static/images/banners/ -||schoolasiagirls.net/ban/ -||sdhentai.com/marketing/ -||see.xxx/pccznwlnrs/ -||sex-techniques-and-positions.com/banners -||sex3.com/ee/s/s/im.php -||sex3.com/ee/s/s/js/ssu -||sex3.com/ee/s/s/su -||sexcelebrity.net/contents/restfiles/player/ -||sextubebox.com/js/239eka836.js -||sextubebox.com/js/580eka426.js -||sextvx.com/*/ads/web/ -||sexvid.pro/knxx/ -||sexvid.pro/rrt/ -||sexvid.xxx/ghjk/ -||simply-hentai.com/prod/ -||sleazyneasy.com/contents/images-banners/ -||sleazyneasy.com/jsb/ -||slview.psne.jp^ -||smutgamer.com/ta2b8ed9c305.js -||smutty.com/n.js -||sonorousporn.com/nb/ -||starwank.com/api/ -||stream-69.com/code/script/ -||striptube.net/images/ -||striptube.net/te9e85dc6853.js -||sunporno.com/api/spots/ -||sunporno.com/blb.php -||sunporno.com/sunstatic/frms/ -||support.streamjav.top^ -||taoxh.life/*/vast? -||taxidrivermovie.com^$~third-party,xmlhttprequest -||tbib.org/tbib. -||teenporno.xxx/ab/ -||thegay.porn/gdtatrco/ -||thehun.net/banners/ -||thenipslip.com/b6c0cc29df5a.js -||thisvid.com/enblk/ -||tits-guru.com/js/istripper4.js -||titsbox.com/nb/ -||tnaflix.com/azUhsbtsuzm? -||tnaflix.com/js/mew.js? -||topescort.com/static/bn/ -||tranny.one/bdb.php -||trannygem.com/ai -||tryboobs.com/bfr/ -||tsmodelstube.com/fun/$image,~third-party -||tsunup.com/js/ads.js -||tubator.com/lookout/ex_rendr3.js -||tube.hentaistream.com/wp-includes/js/pop4.js -||tubeon.*/templates/base_master/js/jquery.shows2.min.js -||tuberel.com/looppy/ -||tubev.sex/td24f164e52654fc593c6952240be1dc210935fe/ -||tubxporn.xxx/js/xp.js -||txxx.com/api/input.php? -||upcdn.site/huoUTQ9.js -||upornia.com/yxpffpuqtjc/ -||urgayporn.com/bn/ -||uviu.com/_xd/ -||valuedpulverizelegitimate.com^$popup -||videosection.com/adv-agent.php -||vietpub.com/banner/ -||vikiporn.com/contents/images-banners/ -||vikiporn.com/js/customscript.js -||vipergirls.to/clientscript/popcode_ -||vipergirls.to/clientscript/poptrigger_ -||viptube.com/player_right_ntv_ -||vivatube.*/templates/base_master/js/jquery.shows2.min.js -||vndevtop.com/lvcsm/abck-banners/ -||voyeurhit.com/ffpqvfaczp/ -||vuwjv7sjvg7.zedporn.com^ -||warashi-asian-pornstars.fr/wapdb-img/ep/ -||watch-my-gf.com/list/ -||watchmygf.mobi/best.js -||watchmygf.tv/js/v.js -||wcareviews.com/bh/ -||wcareviews.com/bv/ -||wetpussygames.com/t78d42b806a3.js -||winporn.*/templates/base_master/js/jquery.shows2.min.js -||wwwxxx.uno/pop-code.js -||wwwxxx.uno/taco-code.js -||x-hd.video/vcrtlrvw/ -||x0r.urlgalleries.net^ -||x1hub.com/alexia_anders_jm.gif -||xanimu.com/prerolls/ -||xbooru.com/script/application.js -||xcity.org/tc2ca02c24c5.js -||xgirls.agency/pg/c/ -||xgroovy.com/65 -||xgroovy.com/static/js/script.js -||xhaccess.com^*/vast? -||xhamster.com*/vast? -||xhamster.desi*/vast? -||xhamster2.com*/vast? -||xhamster3.com*/vast? -||xhamster42.desi*/vast? -||xhand.com/player/html.php?aid= -||xhcdn.com/site/*/ntvb.gif -||xis.vipergirls.to^ -||xjav.tube/ps/Hij2yp.js -||xmilf.com/0eckuwtxfr/ -||xnxxporn.video/nb39.12/ -||xozilla.com/player/html.php$subdocument -||xpics.me/everyone. -||xrares.com/xopind.js -||xvideos.com/zoneload/ -||xvideos.es/zoneload/ -||xvideos.name/istripper.jpg -||xxxbox.me/vcrtlrvw -||xxxdessert.com/34l329_fe.js -||xxxfetish24.com/helper/tos.js -||xxxgirlspics.com/load.js -||xxxshake.com/assets/f_load.js -||xxxshake.com/static/js/script.js -||xxxvogue.net/_ad -||xxxxsx.com/sw.js -||yeptube.*/templates/base_master/js/jquery.shows2.min.js -||yespornpleasexxx.com/wp-content/litespeed/js/ -||yotta.scrolller.com^ -||youjizz.com/KWIKY*.mp4$rewrite=abp-resource:blank-mp4,domain=youjizz.com -||youporn.com^$script,subdocument,domain=youporn.com|youporngay.com -||yourlust.com*/serve -||yourlust.com/assets/script.js -||yourlust.com/js/scripts.js -||yporn.tv/grqoqoswxd.php -||zazzybabes.com/istr/t2eff4d92a2d.js -||zbporn.com/ttt/ -||zzup.com/ad.php -! Exoclick scripts -/^https?:\/\/.*\/[a-z]{4,}\/[a-z]{4,}\.js/$script,~third-party,domain=bdsmx.tube|bigdick.tube|desiporn.tube|hclips.com|hdzog.com|hdzog.tube|hotmovs.com|inporn.com|porn555.com|shemalez.com|tubepornclassic.com|txxx.com|upornia.com|vjav.com|vxxx.com|youteenporn.net -! third-party servers -/^https?:\/\/.*\.(club|news|live|online|store|tech|guru|cloud|bid|xyz|site|pro|info|online|icu|monster|buzz|fun|website|photos|re|casa|top|today|space|network|live|work|systems|ml|world|life)\/.*/$domain=1vag.com|4tube.com|asianpornmovies.com|getsex.xxx|glam0ur.com|hclips.com|hdzog.com|homemadevids.org|hotmovs.com|justthegays.com|milfzr.com|porn555.com|pornforrelax.com|pornj.com|pornl.com|puporn.com|see.xxx|shemalez.com|sss.xxx|streanplay.cc|thegay.com|thegay.porn|tits-guru.com|tubepornclassic.com|tuberel.com|txxx.com|txxx.tube|upornia.com|vjav.com|voyeurhit.com|xozilla.com -! (/sw.js) -/^https?:\/\/.*\/.*sw[0-9._].*/$script,xmlhttprequest,domain=1vag.com|4tube.com|adult-channels.com|analdin.com|biguz.net|bogrodius.com|chikiporn.com|fantasti.cc|fuqer.com|fux.com|hclips.com|heavy-r.com|hog.tv|megapornx.com|milfzr.com|mypornhere.com|porn555.com|pornchimp.com|pornerbros.com|pornj.com|pornl.com|pornototale.com|porntube.com|sexu.com|sss.xxx|thisav.com|titkino.net|tubepornclassic.com|tuberel.com|tubev.sex|txxx.com|vidmo.org|vpornvideos.com|xozilla.com|youporn.lc|youpornhub.it|yourdailypornstars.com -/^https?:\/\/.*\/[a-z0-9A-Z_]{2,15}\.(php|jx|jsx|1ph|jsf|jz|jsm|j$)/$script,subdocument,domain=3movs.com|4kporn.xxx|4tube.com|alotporn.com|alphaporno.com|alrincon.com|amateur8.com|anyporn.com|badjojo.com|bdsmstreak.com|bestfreetube.xxx|bigtitslust.com|bravotube.net|cockmeter.com|crazyporn.xxx|daftporn.com|ebony8.com|erome.com|exoav.com|fantasti.cc|fapality.com|fapnado.com|fetishshrine.com|freeporn8.com|gfsvideos.com|gotporn.com|hdporn24.org|hdpornmax.com|hdtube.porn|hellporno.com|hentai2w.com|hottorrent.org|hqsextube.xxx|hqtube.xxx|iceporn.com|imgderviches.work|imx.to|its.porn|katestube.com|lesbian8.com|love4porn.com|lustypuppy.com|manga18fx.com|manhwa18.cc|maturetubehere.com|megatube.xxx|milffox.com|momxxxfun.com|openloadporn.co|orsm.net|pervclips.com|porn-plus.com|porndr.com|pornicom.com|pornid.xxx|pornotrack.net|pornrabbit.com|pornwatchers.com|pornwhite.com|pussy.org|redhdtube.xxx|rule34.art|rule34pornvids.com|runporn.com|sexvid.porn|sexvid.pro|sexvid.xxx|sexytorrents.info|shameless.com|sleazyneasy.com|sortporn.com|stepmom.one|stileproject.com|str8ongay.com|tnaflix.com|urgayporn.com|vikiporn.com|wankoz.com|xbabe.com|xcafe.com|xhqxmovies.com|xxx-torrent.net|xxxdessert.com|xxxextreme.org|xxxonxxx.com|yourlust.com|youx.xxx|zbporn.com|zbporn.tv -! eporner -/^https?:\/\/.*\.eporner\.com\/[0-9a-f]{10,}\/$/$script,domain=eporner.com -! thegay.com -@@||thegay.com/assets//jwplayer-*/jwplayer.core.controls.html5.js|$domain=thegay.com -@@||thegay.com/assets//jwplayer-*/jwplayer.core.controls.js|$domain=thegay.com -@@||thegay.com/assets//jwplayer-*/jwplayer.js|$domain=thegay.com -@@||thegay.com/assets//jwplayer-*/provider.hlsjs.js|$domain=thegay.com -@@||thegay.com/assets/jwplayer-*/jwplayer.core.controls.html5.js|$domain=thegay.com -@@||thegay.com/assets/jwplayer-*/jwplayer.core.controls.js|$domain=thegay.com -@@||thegay.com/assets/jwplayer-*/jwplayer.js|$domain=thegay.com -@@||thegay.com/assets/jwplayer-*/provider.hlsjs.js|$domain=thegay.com -@@||thegay.com/upd/*/assets/preview*.js|$domain=thegay.com -@@||thegay.com/upd/*/static/js/*.js|$domain=thegay.com -||thegay.com^$script,domain=thegay.com -! websocket ads -$websocket,domain=pornhub.com|redtube.com|redtube.com.br|tube8.com|tube8.es|tube8.fr|xtube.com|youporn.com|youporngay.com -! csp -||thegay.com^$csp=default-src 'self' *.ahcdn.com fonts.gstatic.com fonts.googleapis.com https://thegay.com https://tn.thegay.com 'unsafe-inline' 'unsafe-eval' data: blob: - -! *** easylist:easylist_adult/adult_specific_block_popup.txt *** -.com./$popup,domain=pornhub.com -|http*://*?$popup,third-party,domain=forums.socialmediagirls.com|pornhub.com|redtube.com|tube8.com|youporn.com|youporngay.com -||boyfriendtv.com/out/bg-$popup -||clicknplay.to/api/$popup -||icepbns.com^$popup,domain=iceporn.com -||livejasmin.com/pu/$popup -||missav.com/pop?$popup -||nhentai.net/api/_/popunder?$popup -||porndude.link/porndudepass$popup,domain=theporndude.com -||t.ly^$popup,domain=veev.to -||videowood.tv/pop?$popup -||xtapes.to/out.php$popup -||xteen.name/xtn/$popup -! about:blank popups -/about:blank.*/$popup,domain=bitporno.com|iceporn.com|katestube.com|videowood.tv|xtapes.to -$popup,third-party,domain=hentai2read.com|porn-tube-club.com -!------------------------Specific element hiding rules------------------------! -! *** easylist:easylist/easylist_specific_hide.txt *** -magnet.so###AD -advfn.com###APS_300_X_600 -advfn.com###APS_BILLBOARD -seafoodsource.com###Ad1-300x250 -seafoodsource.com###Ad2-300x250 -seafoodsource.com###Ad3-300x250 -boredbro.com###AdBox728 -webcarstory.com###Ads -search.avast.com###AsbAdContainer -ranker.com###BLOG_AD_SLOT_1 -weegy.com###BannerDiv -80.lv###Big_Image_Banner -citynews.ca###Bigbox_300x250 -calculatorsoup.com###Bottom -coincheckup.com###CCx5StickyBottom -chicagoprowrestling.com###Chicagoprowrestling_com_Top -gayemagazine.com###Containera2sdv > div > div > div[id^="comp-"] -webmd.com###ContentPane40 -new-kissanime.me###CvBNILUxis -dailydot.com###DD_Desktop_HP_Content1 -dailydot.com###DD_Desktop_HP_Content2 -dailydot.com###DD_Desktop_HP_Content3 -tweaktown.com###DesktopTop -newser.com###DivStoryAdContainer -stripes.com###FeatureAd -esports.gg,howlongagogo.com,neatorama.com###FreeStarVideoAdContainer -esports.gg###FreeStarVideoAdContainer_VCT -ranker.com###GRID_AD_SLOT_1 -titantv.com###GridPlayer -appatic.com,gamescensor.com###HTML2 -fanlesstech.com###HTML2 > .widget-content -messitv.net###HTML23 -fanlesstech.com###HTML3 -fanlesstech.com###HTML4 > .widget-content -fanlesstech.com###HTML5 > .widget-content -gamescensor.com###HTML6 -fanlesstech.com###HTML6 > .widget-content -breitbart.com###HavDW -semiconductor-today.com###Header-Standard-Middle-Evatec -sitelike.org###HeaderAdsenseCLSFix -kstp.com###Header_1 -stockinvest.us###IC_d_300x250_1 -stockinvest.us###IC_d_728x90_1 -messitv.net###Image5 -80.lv###Image_Banner_Mid1 -80.lv###Image_Banner_Mid3 -newstarget.com###Index06 > .Widget -newstarget.com###Index07 > .Widget -engadget.com###LB-MULTI_ATF -fortune.com###Leaderboard0 -naturalnews.com###MastheadRowB -stripes.com###MidPageAd -medicalnewstoday.com###MyFiAd -medicalnewstoday.com###MyFiAd0 -neatorama.com###Neatorama_300x250_300x600_160x600_ATF -neatorama.com###Neatorama_300x250_300x600_160x600_BTF -neatorama.com###Neatorama_300x250_336x280_320x50_Incontent_1 -mainichi.jp###PC-english-rec1 -kohls.com###PDP_monetization_HL -kohls.com###PMP_monetization_HL -physicsandmathstutor.com###PMT_PDF_Top -physicsandmathstutor.com###PMT_Top -snwa.com###PolicyNotice -audioz.download###PromoHead -newstarget.com###PromoTopFeatured -sciencealert.com###Purch_D_R_0_1 -edn.com###SideBarWrap -soapcalc.net###SidebarLeft -daringfireball.net###SidebarMartini -soapcalc.net###SidebarRight -imcdb.org###SiteLifeSupport -puzzle-aquarium.com,puzzle-minesweeper.com,puzzle-nonograms.com,puzzle-skyscrapers.com###Skyscraper -roblox.com###Skyscraper-Abp-Left -roblox.com###Skyscraper-Abp-Right -thecourier.com###TCFO_Middle2_300x250 -thecourier.com###TCFO_Middle_300x250 -today.az###TODAY_Slot_Top_1000x120 -today.az###TODAY_Slot_Vertical_01_240x400 -gearspace.com###Takeover -road.cc###Top-Billboard -the-scientist.com###Torpedo -utne.com###URTK_Bottom_728x90 -utne.com###URTK_Middle_300x250 -utne.com###URTK_Right_300x600 -scrabble-solver.com###Upper -breakingnews.ie###\30 _pweumum7 -turbobit.net###__bgd_link -news-daily.com,outlookindia.com,stripes.com###_snup-rtdx-ldgr1 -ytmp3.cc###a-320-50 -egotastic.com###a46c6331 -egotasticsports.com###a83042c4 -krunker.io###aHolder -tokder.org###aaaa -imagebam.com###aad-header-1 -imagebam.com###aad-header-2 -imagebam.com###aad-header-3 -kshow123.tv###ab-sider-bar -travelpulse.com###ab_container -uinterview.com###above-content -slideshare.net###above-recs-desktop-ad-sm -jezebel.com,pastemagazine.com###above_logo -peacemakeronline.com###above_top_banner -breitbart.com###accontainer -usatoday.com###acm-ad-tag-lawrence_dfp_desktop_arkadium -usatoday.com###acm-ad-tag-lawrence_dfp_desktop_arkadium_after_share -nextdoor.com,sptfy.be###ad -touchdownwire.usatoday.com###ad--home-well-wrapper -lasvegassun.com###ad-colB- -getmodsapk.com###ad-container -retrostic.com,sickchirpse.com,thetimes.co.uk###ad-header -livescore.com###ad-holder-gad-news-article-item -healthbenefitstimes.com###ad-image-below -thetimes.co.uk###ad-intravelarticle-inline -dvdsreleasedates.com###ad-movie -dappradar.com###ad-nft-top -thedailymash.co.uk,thepoke.co.uk,thetab.com###ad-sidebar-1 -thedailymash.co.uk,thepoke.co.uk,thetab.com###ad-sidebar-2 -thedailymash.co.uk,thepoke.co.uk,thetab.com###ad-sidebar-3 -thedailymash.co.uk,thepoke.co.uk,thetab.com###ad-sidebar-4 -stackabuse.com###ad-snigel-1 -stackabuse.com###ad-snigel-2 -stackabuse.com###ad-snigel-3 -stackabuse.com###ad-snigel-4 -wordplays.com###ad-sticky -agegeek.com,boards.net,freeforums.net,investing.com,mtaeta.info,notbanksyforum.com,pimpandhost.com,proboards.com,realgearonline.com,repairalmostanything.com,timeanddate.com,wordhippo.com,wordreference.com###ad1 -agegeek.com,investing.com,pimpandhost.com###ad2 -exchangerates.org.uk,investing.com###ad3 -comicbookmovie.com###adATFLeaderboard -chortle.co.uk,coloring.ws,dltk-holidays.com,dltk-kids.com,kidzone.ws,pcsteps.com,primeraescuela.com###adBanner -mdpi.com###adBannerContent -moomoo.io###adCard -globimmo.net###adConH -spanishdict.com###adMiddle2-container -sainsburysmagazine.co.uk###adSlot-featuredInBlue -sherdog.com###adViAi -myevreview.com###ad_aside_1 -cheatcodes.com###ad_atf_970 -musescore.com###ad_cs_12219747_300_250 -musescore.com###ad_cs_12219747_728_90 -all-nettools.com,britsabroad.com,filesharingtalk.com,kiwibiker.co.nz,printroot.com###ad_global_below_navbar -myevreview.com###ad_main_bottom -myevreview.com###ad_main_middle -free-icon-rainbow.com###ad_responsive -coinarbitragebot.com###adathm -offidocs.com###adbottomoffidocs -canadianlisted.com###adcsacl -4qrcode.com###addContainer -odditycentral.com###add_160x600 -lifenews.com###adds -seowebstat.com###adhead-block -freepik.com###adobe-pagination-mkt-copy -onworks.net###adonworksbot -favouriteus.uk###adop_bfd -tutorialspoint.com###adp_top_ads -globimmo.net###adplus-anchor -192-168-1-1-ip.co,receivesms.co###adresp -dict.cc###adrig -audioreview.com,carlow-nationalist.ie,cellmapper.net,craigclassifiedads.com,dekhobd.com,duckduckgo.com,duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion,emb.apl305.me,g.doubleclick.net,ip-address.org,irannewsdaily.com,kildare-nationalist.ie,laois-nationalist.ie,lorempixel.com,photographyreview.com,quiz4fun.com,roscommonherald.ie,waterford-news.ie###ads -birdsandblooms.com,familyhandyman.com,rd.com,tasteofhome.com,thehealthy.com###ads-container-single -funkypotato.com###ads_header_games -funkypotato.com###ads_header_home_970px -lingojam.com###adsense-area-label -ip-address.org###adsleft -byjus.com###adtech-related-links-container -byjus.com###adtech-top-banner-container -dict.leo.org###adv-drectangle1 -leo.org###adv-wbanner -radioonline.fm###advertise_center -steamcardexchange.net###advertisement -lifenews.com###advertisement-top -allthetests.com,bom.gov.au,cadenaazul.com,lapoderosa.com###advertising -offidocs.com###adxx -thebugle.co.za###adz -apkonline.net###adzz -hindustantimes.com###affiliate-shop-now -purplepainforums.com,snow-forecast.com###affiliates -exportfromnigeria.info###affs -slickdeals.net###afscontainer -osdn.net###after-download-ad -scmp.com###after-page-layout-container -prepostseo.com###after_button_ad_desktop -plagiarismchecker.co###afterbox -agar.io###agar-io_300x250 -1000logos.net###ai_widget-4 -alchetron.com###alchetronFreeStarVideoAdContainer -djchuang.com###amazon3 -wtechnews.com###aniBox -ancient-origins.net###ao-article-outbrain -ancient-origins.net###ao-sidebar-outbrain -filmibeat.com###are-slot-rightrail -mybanktracker.com###article-content > .lazyloaded -thesun.co.uk###article-footer div[id*="-ads-"] -timesofmalta.com###article-sponsored -forbes.com###article-stream-1 -brisbanetimes.com.au,smh.com.au,theage.com.au,watoday.com.au###articlePartnerStories -thehindu.com###articledivrec -fool.com###articles-incontent2 -fool.com###articles-top -findmysoft.com###as_336 -flyordie.com###asf -stakingrewards.com###asset-calculator-banner -domaintoipconverter.com###associates-1 -tvtropes.org###asteri-sidebar -downforeveryoneorjustme.com###asurion -assamtribune.com###async_body_tags -addictivetips.com###at_popup_modal -timesnownews.com###atf103388570 -cityandstateny.com###atlas-module -dlraw.co,dlraw.to,manga-zip.info###avfap -teamfortress.tv###aw -gulte.com###awt_landing -filext.com###b1c -filext.com###b2c -filext.com###b3c -filext.com###b4c -filext.com###ba1c -encycarpedia.com###baa -unknowncheats.me###bab -gayvegas.com###background -presearch.com###background-cover -soccerbase.com###ball_splash_holder -gamepressure.com###baner-outer -allmyfaves.com,allthetests.com,dailynews.lk,dealsonwheels.co.nz,eth-converter.com,farmtrader.co.nz,freealts.pw,goosegame.io,greatbritishchefs.com,moviesfoundonline.com,mp3-convert.org,pajiba.com,sundayobserver.lk,techconnect.com,vstreamhub.com###banner -euroweeklynews.com###banner-970 -interest.co.nz###banner-ad-wrapper -bbcamerica.com,ifc.com,sundancetv.com,wetv.com###banner-bottom -hypergames.top,op.gg,thecarconnection.com###banner-container -battlefordsnow.com,cfjctoday.com,chatnewstoday.ca,ckpgtoday.ca,everythinggp.com,huskiefan.ca,larongenow.com,meadowlakenow.com,nanaimonewsnow.com,northeastnow.com,panow.com,rdnewsnow.com,sasknow.com,vernonmatters.ca###banner-header -sourceforge.net###banner-sterling -israelnationalnews.com###banner-sticky -bbcamerica.com,ifc.com,onlinesearches.com,sundancetv.com,wetv.com###banner-top -4teachers.org###banner-wrapper -gamesfree.com###banner300 -edn.com,planetanalog.com###bannerWrap -webtoolhub.com###banner_719_105 -today.az###banner_750x90 -asmag.com###banner_C -asmag.com###banner_C2 -nitrome.com###banner_ad -nitrome.com###banner_box -nitrome.com###banner_description -freshnewgames.com###banner_header -baltic-course.com###banner_master_top -autoplius.lt###banner_right -nitrome.com###banner_shadow -cdn.ampproject.org,linguee.com,thesuburban.com###banner_top -workawesome.com###banner_wrap -belgie.fm,danmark.fm,deutschland.fm,espana.fm,italia.fm,nederland.fm###bannerbg -baltic-course.com###bannerbottom -komikcast.site###bannerhomefooter -baltic-course.com###bannerleft -phuketwan.com###bannersTop -baltic-course.com,webfail.com###bannertop -h-online.com###bannerzone -uinterview.com###below-content -al.com,cleveland.com,gulflive.com,lehighvalleylive.com,masslive.com,mlive.com,newyorkupstate.com,nj.com,oregonlive.com,pennlive.com,silive.com,syracuse.com###below-toprail -post-gazette.com###benn-poll-iframe-container -safetydetectives.com###best_deals_widget -dcnewsnow.com,ktla.com###bestreviews-widget -slideshare.net###between-recs-ad-1-container -slideshare.net###between-recs-ad-2-container -usnews.com###bfad-slot -gameophobias.com,hindimearticles.net,solution-hub.com###bfix2 -shellshock.io###big-house-ad -bentoneveningnews.com,dailyregister.com,dailyrepublicannews.com###billBoardATF -versus.com###bill_bottom -cricketnetwork.co.uk,f1network.net,pop.inquirer.net,rugbynetwork.net,thefootballnetwork.net###billboard -canberratimes.com.au,examiner.com.au,theland.com.au,whoscored.com###billboard-container -thegazette.com###billboard-wrap -inquirer.net###billboard_article -gumtree.com###bing-text-ad-1 -gumtree.com###bing-text-ad-2 -gumtree.com###bing-text-ad-3 -chilltracking.com###blink -afro.com###block-10 -hawaiisbesttravel.com###block-103 -raspberrytips.com###block-11 -theneworleanstribune.com###block-15 -dodi-repacks.site###block-17 -appleworld.today###block-26 -raspians.com###block-29 -raspians.com###block-31 -upfivedown.com###block-4 -club386.com###block-43 -club386.com###block-47 -club386.com###block-49 -game-news24.com###block-50 -club386.com###block-51 -ericpetersautos.com,upfivedown.com###block-6 -systutorials.com###block-7 -upfivedown.com###block-8 -oann.com###block-95 -leopathu.com###block-accuwebhostingcontenttop -leopathu.com###block-accuwebhostingsidebartop -slideme.org###block-block-31 -ancient-origins.net###block-block-49 -spine-health.com###block-dfptagbottomanchorads1 -infoplease.com###block-ipabovethefold -infoplease.com###block-ipbtfad -infoplease.com###block-ipleaderboardad -infoplease.com###block-ipmiddlewaread -leopathu.com###block-listscleaningbanner -romania-insider.com###block-nodepagebelowfromourpartners -romania-insider.com###block-nodepagebelowlatespress -romania-insider.com###block-nodepagebelowtrendingcontent -encyclopedia.com###block-trustme-rightcolumntopad -enca.com###block-views-block-sponsored-block-1 -mbauniverse.com###block-views-home-page-banner-block -smbc-comics.com###boardleader -forum.wordreference.com###botSupp -coinarbitragebot.com###botfix -pymnts.com###bottom-ad -cheese.com,investorplace.com###bottom-banner -000webhost.com###bottom-banner-with-counter-holder-desktop -eweek.com###bottom-footer-fixed-slot -audioreview.com###bottom-leaderboard -reverso.net###bottom-mega-rca-box -crn.com###bottom-ribbon -nytimes.com,nytimesn7cgmftshazwhfgzm37qxb44r64ytbb2dj3x62d2lljsciiyd.onion###bottom-wrapper -streetinsider.com###bottom_ad_fixed -funkypotato.com###bottom_banner_wrapper -bleedingcool.com,heatmap.news,jamaicaobserver.com###bottom_leaderboard -bleedingcool.com###bottom_medium_rectangle -numista.com###bottom_pub_container -atomic-robo.com###bottomspace -flashscore.com,livescore.in###box-over-content-a -planetminecraft.com###box_300btf -planetminecraft.com###box_pmc_300btf -comicbookrealm.com###brad -bicycleretailer.com###brain-leader-slot -brobible.com###bro-leaderboard -dailydot.com###browsi-topunit -techpp.com###brxe-ninhwq -techpp.com###brxe-wtwlmm -downforeveryoneorjustme.com###bsa -icon-icons.com###bsa-placeholder-search -befonts.com###bsa-zone_1706688539968-4_123456 -puzzle-aquarium.com,puzzle-minesweeper.com,puzzle-nonograms.com,puzzle-skyscrapers.com###btIn -w3newspapers.com###btmadd -battlefordsnow.com,cfjctoday.com,everythinggp.com,huskiefan.ca,larongenow.com,meadowlakenow.com,nanaimonewsnow.com,northeastnow.com,panow.com,rdnewsnow.com,sasknow.com,vernonmatters.ca###bumper-cars -northcountrypublicradio.org###business -music-news.com###buy-tickets -digminecraft.com###c1069c34 -channel4.com###c4ad-Top -comicsands.com###c7da91bc-8e44-492f-b7fd-c382c0e55bda -allrecipes.com###cal-app -bitdegree.org###campaign-modal -chordify.net###campaign_banner -academictorrents.com###carbon -downforeveryoneorjustme.com###carbonDiv -coinlisting.info###carousel-example-generic -csdb.dk###casdivhor -csdb.dk###casdivver -cbn.com###cbn_leaderboard_atf -cloudwards.net,guitaradvise.com###cbox -linuxinsider.com###cboxOverlay -curseforge.com###cdm-zone-03 -inquirer.net###cdn-life-mrec -godbolt.org###ces -romsmania.games###click-widget-banner -animetrilogy.com,xcalibrscans.com###close-teaser -oneindia.com###closePopupDiv -slashdot.org###cloud -globalconstructionreview.com###cm-jobs-block-inner -whocallsme.com###cnt_1 -whocallsme.com###cnt_2 -whocallsme.com###cnt_btm -linuxinsider.com###colorbox -smbc-comics.com###comicright > div[style] -mirror.co.uk,themirror.com###comments-standalone-mpu -kotaku.com,qz.com###commerce-inset-wrapper -blackbeltmag.com###comp-loxyxvrt -seatguru.com###comparePrices -cpuid.com###console_log -miniwebtool.com###contain300-1 -miniwebtool.com###contain300-2 -gearspace.com###container__DesktopFDAdBanner -gearspace.com###container__DesktopForumdisplayHalfway -coinhub.wiki###container_coinhub_sidead -scanboat.com###content > .margin-tb-25 -allnewspipeline.com###content > [href] -outputter.io###content > section.html -fextralife.com###content-add-a -blastingnews.com###content-banner-dx1-p1 -classicreload.com###content-top -kbb.com###contentFor_kbbAdsSimplifiedNativeAd -lineageos18.com###contentLocker -indy100.com###content_1 -indy100.com###content_2 -indy100.com###content_3 -indy100.com###content_4 -indy100.com###content_5 -indy100.com###content_6 -indy100.com###content_7 -notebookcheck.net###contenta -alt-codes.net###copyModal .modal-body -wsj.com###coupon-links -lordz.io###crossPromotion -croxyproxy.rocks###croxyExtraZapper -pcwdld.com###ct-popup -forbes.com###cta-builder -asmag.com###ctl00_en_footer1_bannerPopUP1_panel_claudebro -digit.in###cubewrapid -wolfstream.tv###customAnnouncement -timesofindia.indiatimes.com###custom_ad_wrapper_0 -miloserdov.org,playstore.pw,reneweconomy.com.au,wpneon.com###custom_html-10 -miloserdov.org,playstore.pw###custom_html-11 -thethaiger.com###custom_html-12 -theregister.co.nz###custom_html-13 -cdromance.com,colombiareports.com,miloserdov.org,mostlyblogging.com###custom_html-14 -mostlyblogging.com,sonyalpharumors.com###custom_html-15 -eetimes.eu,miloserdov.org###custom_html-16 -budgetbytes.com,ets2.lt,miloserdov.org###custom_html-2 -blissfuldomestication.com###custom_html-22 -sonyalpharumors.com###custom_html-25 -mostlyblogging.com,sarkarideals.com,tvarticles.me###custom_html-3 -godisageek.com###custom_html-4 -mangaread.org###custom_html-48 -comicsheatingup.net###custom_html-5 -colombiareports.com,filmschoolrejects.com,hongkongfp.com,phoneia.com,sarkarideals.com,weatherboy.com###custom_html-6 -medievalists.net###custom_html-7 -theteche.com###custom_html-8 -laineygossip.com###date-banner -helpwithwindows.com###desc -fastfoodnutrition.org###desk_leader_ad -deccanherald.com###desktop-ad -republicworld.com###desktop-livetv-728-90 -infotel.ca###desktopBannerBottom -infotel.ca###desktopBannerFooter -infotel.ca###desktopBannerTop -eldersweather.com.au###desktop_new_forecast_top_wxh -homestuck.com###desktop_skyscraper -pikalytics.com###dex-list-0 -scoop.co.nz###dfp-shadow -flyordie.com###dgad -datagenetics.com###dgsidebar -tmo.report###directad -realclearpolitics.com###distro_right_rail -tribunnews.com###div-Inside-MediumRectangle -designtaxi.com###div-center-wrapper -allafrica.com###div-clickio-ad-superleaderboard-a -scoop.co.nz###div-gpt-ad-1493962836337-6 -scoop.co.nz###div-gpt-ad-1510201739461-4 -herfamily.ie,sportsjoe.ie###div-gpt-top_page -abovethelaw.com###div-id-for-middle-300x250 -abovethelaw.com###div-id-for-top-300x250 -pch.com###div-pch-gpt-placement-bottom -pch.com###div-pch-gpt-placement-multiple -pch.com###div-pch-gpt-placement-top -newser.com###divImageAd -newser.com###divMobileHeaderAd -abbotsfordgasprices.com,albertagasprices.com,barriegasprices.com,bcgasprices.com,calgarygasprices.com,edmontongasprices.com,gasbuddy.com,halifaxgasprices.com,hamiltongasprices.com,kwgasprices.com,londongasprices.com,manitobagasprices.com,montrealgasprices.com,newbrunswickgasprices.com,newfoundlandgasprices.com,novascotiagasprices.com,nwtgasprices.com,ontariogasprices.com,ottawagasprices.com,peigasprices.com,quebeccitygasprices.com,quebecgasprices.com,reginagasprices.com,saskatoongasprices.com,saskgasprices.com,torontogasprices.com,vancouvergasprices.com,victoriagasprices.com,winnipeggasprices.com###divSky -newser.com###divStoryBigAd1 -newser.com###divWhizzcoRightRail -hometheaterreview.com###div_block-382-13 -hindustantimes.com###divshopnowRight -rednationonline.ca###dnn_BannerPane -unite-db.com###ds_lb1 -unite-db.com###ds_lb2 -thedailystar.net###dsspHS -permanentstyle.com###dttop -jigzone.com###dz -sashares.co.za###elementor-popup-modal-89385 -asmag.com###en_footer1_bannerPopUP1_panel_claudebro -energyforecastonline.co.za###endorsers -geekwire.com###engineering-centers-sidebar -wral.com###exco -jigzone.com###fH -csstats.gg###faceit-banner -cspdailynews.com,restaurantbusinessonline.com###faded -enjoy4fun.com###fake-ads-dom -openloading.com###fakeplayer -asianjournal.com###fancybox-overlay -asianjournal.com###fancybox-wrap -thedrinknation.com###fcBanner -247checkers.com###feature-ad-holder -perezhilton.com###feature-spot -forbes.com###featured-partners -fandom.com###featured-video__player-container -djxmaza.in,jytechs.in,miuiflash.com,thecubexguide.com###featuredimage -getyarn.io###filtered-bottom -investing.com###findABroker -healthshots.com###fitnessTools -healthshots.com###fitnessToolsAdBot -thisismoney.co.uk###fiveDealsWidget -point2homes.com,propertyshark.com###fixedban -cnx-software.com###fixeddbar -topsporter.net###fl-ai-widget-placement -vscode.one###flamelab-convo-widget -nanoreview.net###float-sb-right -animetrilogy.com###floatcenter -editpad.org###floorad-wrapper -clintonherald.com,ottumwacourier.com,thetimestribune.com###floorboard_block -streams.tv###flowerInGarden -12tomatoes.com###footboard -mybib.com###footer > div -fanlesstech.com###footer-1 -metasrc.com###footer-content -bundesliga.com###footer-partnerlogo -warcraftpets.com###footer-top -ksstradio.com###footer-widgets -fixya.com###footerBanner -techrounder.com###footerFixBanner -atptour.com###footerPartners -phpbb.com###footer_banner_leaderboard -forums.anandtech.com,forums.pcgamer.com,forums.tomsguide.com,forums.tomshardware.com###footer_leaderboard -feedicons.com###footerboard -wanderlustcrew.com###fpub-popup -blenderartists.org,stonetoss.com###friends -peacemakeronline.com###front_mid_right > center -mangaku.vip###ftads -tarladalal.com###ftr_adspace -imgbox.com###full-page-redirect -datareportal.com###fuse-sticky -scienceabc.com###fusenative -clocktab.com###fv_left-side -chromecastappstips.com###fwdevpDiv0 -fxstreet.com###fxs-sposorBroker-topBanner -colourlovers.com###ga-above-footer -colourlovers.com###ga-below-header -9bis.net###gad -gaiaonline.com###gaiaonline_leaderboard_atf -cheatcodes.com###game_details_ad -geekwire.com###geekwork -investing.com###generalOverlay -thecountersignal.com###geo-header-ad-1 -getvideobot.com###getvideobot_com_300x250_responsive -getvideobot.com###getvideobot_com_980x250_billboard_responsive -thingstodovalencia.com###getyourguide-widget -dotesports.com,progameguides.com###gg-masthead -glowstery.com###ghostery-highlights -freegames.org###gla -wordcounter.net###glya -gearlive.com,mediamass.net###google -propertyshark.com###google-ads-directoryViewRight -healthbenefitstimes.com###google-adv-top -photojpl.com###google01 -mediamass.net###google3 -windows2universe.org###google_mockup -desmoinesregister.com###gpt-dynamic_native_article_4 -desmoinesregister.com###gpt-high_impact -malaysiakini.com###gpt-layout-top-container -desmoinesregister.com###gpt-poster -justdial.com###gptAds2 -justdial.com###gptAdsDiv -spellcheck.net###grmrl_one -nintendoworldreport.com###hAd -streamingrant.com###hb-strip -cadenaazul.com,lapoderosa.com###hcAdd -castanet.net###hdad -inventorspot.com,mothering.com,wordfind.com###header -fxempire.com###header-ads-block -khelnow.com###header-adwords-section -aeroexpo.online,agriexpo.online,directindustry.com,droidgamers.com,fonearena.com,frontlinesoffreedom.com,stakingrewards.com,winemag.com###header-banner -dominicantoday.com###header-banners -bestvpnserver.com,techitout.co.za###header-content -govevents.com###header-display -looperman.com,sailingmagazine.net###header-top -nisnews.nl###header-wrap -newser.com###headerAdSection -realestate.com.au###headerLeaderBoardSlot -forums.anandtech.com,forums.androidcentral.com,forums.pcgamer.com,forums.space.com,forums.tomsguide.com,forums.tomshardware.com,forums.whathifi.com,redflagdeals.com###header_leaderboard -digitalpoint.com###header_middle -coolors.co###header_nav + a -writerscafe.org###header_pay -conjugacao-de-verbos.com,conjugacion.es,die-konjugation.de,the-conjugation.com###header_pub -deckstats.net###header_right_big -metasrc.com###header_wrapper -hwhills.com,nikktech.com,revizoronline.com,smallscreenscoop.com###headerbanner -sat24.com###headercontent-onder -hometheaterreview.com###headerhorizontalad -nnn.ng###hfgad1 -nnn.ng###hfgad2 -kimcartoon.li###hideAds -thegazette.com###high-impact -stackoverflow.com###hireme -techmeme.com###hiring -heatmap.news###hmn_sponsored_post -gunbroker.com###home-ad-a-wrapper -dailysocial.id###home-ads -transfermarkt.com###home-rectangle-spotlight -shobiddak.com###homeShobiddakAds -sslshopper.com###home_quick_search_buttons > div -downloadsafer.com###homebannerbottom -hometheaterreview.com###homepagehorizontalad -nutritioninsight.com,packaginginsights.com###horizontalblk -skylinewebcams.com###hostedby -ukutabs.com###howtoreadbutton -whatismyip.com###hp-ad-banner-top -webmd.com###hp-ad-container -laredoute.be,laredoute.ch,laredoute.co.uk,laredoute.com,laredoute.de,laredoute.es,laredoute.fr,laredoute.gr,laredoute.it,laredoute.nl,laredoute.pt,laredoute.ru###hp-sponsored-banner -blog.hubspot.com###hs_cos_wrapper_blog_post_sticky_cta -nettiauto.com,nettikaravaani.com,nettikone.com,nettimarkkina.com,nettimokki.com,nettimoto.com,nettivene.com,nettivuokraus.com###huge_banner -ytmp3.nu###i -robbreport.com###icon-sprite -maxsports.site,newsturbovid.com###id-custom_banner -dailysabah.com###id_d_300x250 -rakuten.com###id_parent_rrPlacementTop -gaiaonline.com###iframeDisplay -fc-lc.xyz,tophostingapp.com###iframe_id -igeeksblog.com###ig_header -unitconversion.org###ileft -4f.to,furbooru.org###imagespns -linksly.co###imgAddDirectLink -blackbeltmag.com###img_comp-loxyxvrt -mydorpie.com###imgbcont -crn.com###imu1forarticles -scoop.co.nz###in-cont -thefastmode.com###inarticlemodule -metabattle.com###inca1 -metabattle.com###inca2 -droidinformer.org###inf_bnr_1 -droidinformer.org###inf_bnr_2 -droidinformer.org###inf_bnr_3 -datamation.com,esecurityplanet.com,eweek.com,serverwatch.com,webopedia.com###inline-top -howstuffworks.com###inline-video-wrap -koimoi.com###inline_ad -krnb.com###inner-footer -workhouses.org.uk###inner-top-ad -timesofmalta.com###inscroll-banner -imagebam.com###inter > [src] -booklife.com,yabeat.org###interstitial -lcpdfr.com###ipsLayout_mainArea > .uBlockBrokeOurSiteIpsAreaBackground -osbot.org###ipsLayout_mainArea > div > div -uk420.com###ipsLayout_sidebar > div[align="center"] -osbot.org###ips_footer > div > div -unitconversion.org###iright -allnewspipeline.com###isg_add -newshub.co.nz###island-unit-2 -icon-icons.com###istockphoto-placeholder -fakeupdate.net###itemz -apkonline.net###ja-container-prev-0 -cnn.com###js-outbrain-rightrail-ads-module -9gag.com###jsid-ad-container-page_adhesion -dhakatribune.com###jw-popup -food52.com###jw_iframe -variety.com###jwplayer_xH3PjHXT_plsZnDJi_div -jigzone.com###jz -ceoexpress.com###kalamazooDiv -msguides.com###kknbnpcv -kohls.com###kmnsponsoredbrand-sponsored_top-anchor -kvraudio.com###kvr300600 -freeads.co.uk###l_sk1 -peacemakeronline.com###latest_news > center -elfaro.net###layout-ad-header -screengeek.net###layoutContainer -friv.com###lba -friv.com###lbaTop -irishnews.com###lbtop -piraproxy.info,unblockedstreaming.net###lbxUR99472 -123unblock.bar###lbxVPN666 -dailydooh.com###leaddiv -kontraband.com,motherproof.com,sansabanews.com###leader -techrepublic.com###leader-bottom -techrepublic.com###leader-plus-top -ugstandard.com###leader-wrap -techgeek365.com###leader-wrapper -whdh.com,wsvn.com###leader_1 -12tomatoes.com,allwomenstalk.com,bloomberg.com,datpiff.com,koreaboo.com,logotv.com,newcartestdrive.com,news.sky.com,news.tvguide.co.uk,onthesnow.ca,onthesnow.co.nz,onthesnow.co.uk,onthesnow.com,penny-arcade.com,publishersweekly.com,skysports.com,thedrinknation.com,theserverside.com###leaderboard -open.spotify.com###leaderboard-ad-element -thebaltimorebanner.com###leaderboard-ad-v2 -vocm.com###leaderboard-area -bbc.com###leaderboard-aside-content -abbynews.com,biv.com,kelownacapnews.com,lakelandtoday.ca,orilliamatters.com,reddeeradvocate.com,sootoday.com,theprogress.com,time.com,timescolonist.com,vancouverisawesome.com,vicnews.com###leaderboard-container -farooqkperogi.com###leaderboard-content -variety.com###leaderboard-no-padding -alternet.org###leaderboard-placeholder -foodnetwork.com###leaderboard-wrap -washingtonpost.com###leaderboard-wrapper -drdobbs.com###leaderboard1 -babycenter.com,fixya.com###leaderboardContainer -macrotrends.net###leaderboardTag -games2jolly.com###leaderboard_area -games2jolly.com###leaderboard_area_home -planetminecraft.com###leaderboard_atf -canadianbusiness.com,macleans.ca,vidio.com,yardbarker.com###leaderboard_container -spoonuniversity.com###leaderboard_fixed -sportsnet.ca###leaderboard_master -belgie.fm,danmark.fm,deutschland.fm,espana.fm,italia.fm,nederland.fm###leaderboardbg -eel.surf7.net.my###left -news9live.com###left_before_story -assamtribune.com###left_level_before_tags -nitrome.com###left_skyscraper_container -nitrome.com###left_skyscraper_shadow -kitco.com###left_square -liverpoolfc.com###lfc_ads_article_pos_one -liverpoolfc.com###lfc_ads_home_pos_one -closerweekly.com,intouchweekly.com,lifeandstylemag.com###listProductWidgetData -lightnovelcave.com###lnvidcontainer -wormate.io###loa831pibur0w4gv -hilltimes.com###locked-sponsored-stories-inline -lordz.io###lordz-io_300x250 -lordz.io###lordz-io_300x250_2 -lordz.io###lordz-io_728x90 -rxresource.org###lowerdrugsAd -lowes.com###lws_hp_recommendations_belowimage_1 -hackerbot.net###madiv -hackerbot.net###madiv2 -hackerbot.net###madiv3 -animehub.ac###main-content > center -proprivacy.com###main-popup -w3big.com,w3schools.com###mainLeaderboard -express.co.uk###mantis-recommender-placeholder -planefinder.net###map-ad-container -themeforest.net###market-banner -citynews.ca###master-leaderboard -defenseworld.net###mb-bar -koreaherald.com###mbpAd022303 -active.com###med_rec_bottom -active.com###med_rec_top -wakingtimes.com,ymcinema.com###media_image-2 -airfactsjournal.com###media_image-3 -palestinechronicle.com###media_image-4 -mostlyblogging.com###media_image-5 -chess.com###medium-rectangle-atf-ad -moomoo.io###menuContainer > .menuCard -voiranime.com###mg_vd -webpronews.com###mid-art-ad -forward.com###middle-of-page -peacemakeronline.com###middle_banner_section -bleedingcool.com###middle_medium_rectangle -jezebel.com,pastemagazine.com###middle_rectangle -thefastmode.com###middlebanneropenet -cyberdaily.au###mm-azk560023-zone -mmorpg.com###mmorpg_desktop_list_1 -mmorpg.com###mmorpg_desktop_list_3 -si.com###mmvid -appleinsider.com###mobile-article-anchor -pocketgamer.com###mobile-background -tvtropes.org###mobile_1 -tvtropes.org###mobile_2 -permanentstyle.com###mobtop -coinarbitragebot.com###modal1 -cellmapper.net###modal_av_details -mytuner-radio.com###move-ad -moviemistakes.com###moviemistakes_300x600_300x250_160x600_sidebar_2 -consobaby.co.uk,gumtree.com,pcgamingwiki.com,thefootballnetwork.net###mpu -news.sky.com,skysports.com###mpu-1 -bbc.com###mpu-side-aside-content -standard.co.uk###mpu_bottom_sb_2_parent -spin.ph###mrec3 -nitrome.com###mu_2_container -nitrome.com###mu_3_container -wrestlingnews.co###mvp-head-top -atlantatribune.com,barrettsportsmedia.com,footballleagueworld.co.uk,ioncinema.com,marijuanamoment.net,ripplecoinnews.com,srilankamirror.com,tribune.net.ph###mvp-leader-wrap -europeangaming.eu###mvp-leader-wrap > a[href^="https://www.softswiss.com/"] -twinfinite.net###mvp-main-content-wrap -hotklix.com###mvp-main-nav-top > .mvp-main-box -dailyboulder.com###mvp-post-bot-ad -barrettsportsmedia.com###mvp-wallpaper -polygonscan.com###my-banner-ad -mangareader.cc###myModal -fileproinfo.com###myNav -mediaupdate.co.za###mycarousel -coveteur.com###native_1 -coveteur.com###native_2 -thejournal.ie###nativeads-sponsorbar-touch-redesign -planetizen.com###navbar-top -gearspace.com###navbar_notice_730 -needpix.com###needpix_com_top_banner -my.juno.com###newsCarousel -livelaw.in###news_on_exit -farminguk.com###newsadvert -canberratimes.com.au,theland.com.au###newswell-leaderboard-container -nextshark.com###nextshark_com_leaderboard_top -searchfiles.de###nextuse -nanoreview.net###nfloat-sb-right -seroundtable.com###ninja_box -unite.pvpoke.com###nitro-unite-sidebar-left -unite.pvpoke.com###nitro-unite-sidebar-right -pcgamebenchmark.com,pcgamesn.com,pockettactics.com,thedigitalfix.com,wargamer.com###nn_astro_wrapper -steamidfinder.com,trueachievements.com,truesteamachievements.com,truetrophies.com###nn_bfa_wrapper -techraptor.net,unite-db.com###nn_lb1 -techraptor.net,unite-db.com###nn_lb2 -techraptor.net###nn_lb3 -techraptor.net###nn_lb4 -nintendoeverything.com###nn_mobile_mpu4_temp -gamertweak.com,nintendoeverything.com###nn_mpu1 -gamertweak.com,nintendoeverything.com###nn_mpu2 -nintendoeverything.com###nn_mpu3 -nintendoeverything.com###nn_mpu4 -techraptor.net,tftactics.gg###nn_player -steamidfinder.com###nn_player_wrapper -asura.gg,nacm.xyz###noktaplayercontainer -boxingstreams.cc,crackstreams.gg,cricketstreams.cc,footybite.cc,formula1stream.cc,mlbshow.com,nbabite.com###nordd -forums.somethingawful.com###notregistered -ekathimerini.com###nx-stick-help -allaboutcookies.org###offer-review-widget-container -freeaddresscheck.com,freecallerlookup.com,freecarrierlookup.com,freeemailvalidator.com,freegenderlookup.com,freeiplookup.com,freephonevalidator.com###offers -streetdirectory.com###offers_splash_screen -gizbot.com###oi-custom-camp -comicbook.com###omni-skybox-plus-top -kohls.com###open-drawer -livestreamfails.com###oranum_livefeed_container_0 -ckk.ai###orquidea-slideup -powvideo.net,streamplay.to,uxstyle.com###overlay -megacloud.tv###overlay-center -mzzcloud.life,rabbitstream.net###overlay-container -mp4upload.com###overlayads -drivevideo.xyz###overlays -animetrilogy.com,animexin.vip###overplay -vure.cx###page-inner > div > div > a[href^="https://www.vure.cx/shorten-link.php/"] -vure.cx###page-inner > div > div > div > a[href^="https://www.vure.cx/shorten-link.php/"] -cyclenews.com###pamnew -aninews.in,devdiscourse.com,footballorgin.com,gadgets360.com,justthenews.com,ndtv.com,oneindia.com,wionews.com,zeebiz.com###parentDiv0 -mg.co.za###partner-content -hwbot.org###partner-tiles -cnn.com###partner-zone -fastseduction.com,independent.co.uk###partners -kingsleague.pro###partnersGrid -arrivealive.co.za###partners_container -binaries4all.com###payserver -forums.golfwrx.com###pb-slot-top -demap.info###pcad -shine.cn###pdfModal -investopedia.com###performance-marketing_1-0 -premierguitar.com###pg_leaderboard -radiocaroline.co.uk###photographsforeverDiv -accuradio.com###pl_leaderboard -giantfreakinrobot.com###playwire-homepage-takeover-leaderboard -issuu.com###playwire-video -files.im###plyrrr -pikalytics.com###pokedex-top-ad -politico.com###pol-01-wrap -standard.co.uk###polar-sidebar-sponsored -standard.co.uk###polarArticleWrapper -pons.com###pons-ad-footer -pons.com###pons-ad-leaderboard__container -epicload.com###popconlkr -safetydetectives.com###popup -bankinfosecurity.com###popup-interstitial-full-page -chaseyoursport.com###popup1 -quickmeme.com###post[style="display: block;min-height: 290px; padding:0px;"] -ultrabookreview.com###postadsside -ultrabookreview.com###postzzif -the-scientist.com###preHeader -playok.com###pread -adlice.com###preview-div -talkbass.com###primary-products -slashfilm.com###primis-container -walgreens.com###prod-sponsored -sslshopper.com###promo-outer -thestreamable.com###promo-signup-bottom-sheet -dailymail.co.uk###promo-unit -proxyium.com###proxyscrape_ad -frequence-radio.com###pub_listing_top -elevationmap.net###publift_home_billboard -fxsforexsrbijaforum.com###pun-announcement -onmsft.com###pwDeskSkyBtf1 -d4builds.gg###pwParentContainer -thefastmode.com###quick_survey -sporcle.com###quiz-right-rail-unit-2 -techmeme.com###qwdbfwh -comicbookrealm.com###rad -rawstory.com###rawstory_front_2_container -reverso.net###rca -businessgreen.com###rdm-below-header -slideserve.com###readl -scoop.co.nz###rect -dict.cc###recthome -dict.cc###recthomebot -ip-tracker.org###rekl -tapatalk.com###relatedblogbar -plurk.com###resp_banner_ads -10minutemail.net,eel.surf7.net.my,javatpoint.com###right -msguides.com###right-bottom-camp -comicbookrealm.com###right-rail > .module -purewow.com###right-rail-ad -gogetaroomie.com###right-space -online-translator.com###rightAdvBlock -openspeedtest.com###rightArea -medicaldialogues.in###right_level_8 -numista.com###right_pub -collegedunia.com###right_side_barslot_1 -collegedunia.com###right_side_barslot_2 -yardbarker.com###right_top_sticky -forums.space.com,forums.tomshardware.com###rightcol_bottom -forums.anandtech.com,forums.androidcentral.com,forums.pcgamer.com,forums.space.com,forums.tomsguide.com,forums.tomshardware.com,forums.whathifi.com###rightcol_top -road.cc###roadcc_Footer-Billboard -box-core.net,mma-core.com###rrec -anisearch.com###rrightX -protocol.com###sHome_0_0_3_0_0_5_1_0_2 -glennbeck.com###sPost_0_0_5_0_0_9_0_1_2_0 -glennbeck.com###sPost_Default_Layout_0_0_6_0_0_9_0_1_2_0 -advocate.com###sPost_Layout_Default_0_0_19_0_0_2_1_0_0 -out.com###sPost_Layout_Default_0_0_21_0_0_1_1_1_2 -spectrum.ieee.org###sSS_Default_Post_0_0_20_0_0_1_4_2 -flatpanelshd.com###sb-site > .hidden-xs.container -centurylink.net,wowway.net###sc_home_header_banner -wowway.net###sc_home_news_banner -wowway.net###sc_home_recommended_banner -wowway.net###sc_read_header_banner -my.juno.com###scienceTile -coinarbitragebot.com###screener -pao.gr###section--sponsors -racingamerica.com###section-15922 -hometheaterreview.com###section-20297-191992 -hometheaterreview.com###section-246-102074 -neoseeker.com###section-pagetop -searchenginejournal.com###sej-pop-wrapper_v3 -analyticsinsight.net,moviedokan.lol,shortorial.com###sgpb-popup-dialog-main-div-wrapper -v3rmillion.net###sharingPlace -fedex.com###shop-runner-banner-link -search.brave.com###shopping -shareinvestor.com###sic_superBannerAdTop -filedropper.com,lifenews.com###sidebar -whatsondisneyplus.com###sidebar > .widget_text.amy-widget -tellymix.co.uk###sidebar > div[style] -globalwaterintel.com###sidebar-banner -spiceworks.com###sidebar-bottom-ad -ftvlive.com###sidebar-one-wrapper -carmag.co.za###sidebar-primary -saharareporters.com###sidebar-top -interest.co.nz,metasrc.com###sidebar-wrapper -koimoi.com###sidebar1 -scotsman.com###sidebarMPU1 -scotsman.com###sidebarMPU2 -ubergizmo.com###sidebar_card_spon -trucknetuk.com###sidebarright -disqus.com###siderail-sticky-ads-module -4runnerforum.com,acuraforums.com,blazerforum.com,buickforum.com,cadillacforum.com,camaroforums.com,cbrforum.com,chryslerforum.com,civicforums.com,corvetteforums.com,fordforum.com,germanautoforums.com,hondaaccordforum.com,hondacivicforum.com,hondaforum.com,hummerforums.com,isuzuforums.com,kawasakiforums.com,landroverforums.com,lexusforum.com,mazdaforum.com,mercuryforum.com,minicooperforums.com,mitsubishiforum.com,montecarloforum.com,mustangboards.com,nissanforum.com,oldsmobileforum.com,pontiactalk.com,saabforums.com,saturnforum.com,truckforums.com,volkswagenforum.com,volvoforums.com###sidetilewidth -gephardtdaily.com###simple-sticky-footer-container -995thewolf.com,newcountry963.com###simpleimage-3 -hot933hits.com###simpleimage-5 -yourharlow.com###single_rhs_ad_col -inoreader.com###sinner_container -pocketgamer.com###site-background -webkinznewz.ganzworld.com###site-description -dead-frog.com###site_top -2oceansvibe.com,pocketgamer.biz###skin -breakingdefense.com###skin-clickthrough -ebar.com###skin-left -ebar.com###skin-right -namemc.com###skin_wrapper -pinkvilla.com###skinnerAdClosebtn -dafont.com###sky -dailymail.co.uk,thisismoney.co.uk###sky-left-container -dailymail.co.uk###sky-right -dailymail.co.uk,thisismoney.co.uk###sky-right-container -skylinewebcams.com###skylinewebcams-ads2 -dailydooh.com###skysbar -holiday-weather.com,omniglot.com,w3schools.com,zerochan.net###skyscraper -nitrome.com###skyscraper_box -nitrome.com###skyscraper_shadow -scrabble-solver.com###skywideupper -surfline.com###sl-header-ad -slashdot.org###slashdot_deals -gunsamerica.com###slidebox -compleatgolfer.com,sacricketmag.com###slidein -accuradio.com###slot2Wrapper -orteil.dashnet.org###smallSupport -point2homes.com###smartAsset -apkmoddone.com###sn-Notif -givemesport.com###sn_gg_ad_wrapper -forums.bluemoon-mcfc.co.uk###snack_dmpu -forums.bluemoon-mcfc.co.uk,gpfans.com###snack_ldb -forums.bluemoon-mcfc.co.uk,gpfans.com###snack_mpu -forums.bluemoon-mcfc.co.uk###snack_sky -ghacks.net###snhb-snhb_ghacks_bottom-0 -who-called.co.uk###snigel_ads-mobile -thedriven.io###solarchoice_banner_1 -wcny.org###soliloquy-12716 -toumpano.net###sp-feature -hilltimes.com###sp-mini-box -toumpano.net###sp-right -vuejs.org###special-sponsor -coingape.com###spinbtn -fastseduction.com###splash -streetdirectory.com###splash_screen_overlay -downloads.codefi.re###spo -downloads.codefi.re###spo2 -firmwarefile.com###spon -slitaz.org###sponsor -meteocentrale.ch###sponsor-info -nordstrom.com###sponsored-carousel-sponsored-carousel -newsfirst.lk###sponsored-content-1 -cnn.com###sponsored-outbrain-1 -hiphopkit.com###sponsored-sidebar -homedepot.com###sponsored-standard-banner-nucleus -techmeme.com###sponsorposts -fastseduction.com,geekwire.com,landreport.com,vuejs.org,whenitdrops.com###sponsors -colourlovers.com###sponsors-links -ourworldofenergy.com###sponsors_container -rent.ie###sresult_banner -tokder.org###ssss -bizarrepedia.com###stack > .ln-thr -torrentgalaxy.to###startad -geekwire.com###startup-resources-sidebar -newcartestdrive.com###static-asset-placeholder-2 -newcartestdrive.com###static-asset-placeholder-3 -tvtropes.org###stick-cont -dvdsreleasedates.com###sticky -guelphmercury.com###sticky-ad-1 -thestar.com###sticky-ad-2 -rudrascans.com###sticky-ad-head -ktbs.com###sticky-anchor -datamation.com,esecurityplanet.com,eweek.com,serverwatch.com,webopedia.com###sticky-bottom -stakingrewards.com###sticky-footer -independent.co.uk,standard.co.uk###stickyFooterRoot -afr.com###stickyLeaderboard -bostonglobe.com###sticky_container.width_full -eurogamer.net,rockpapershotgun.com,vg247.com###sticky_leaderboard -lethbridgeherald.com###stickybox -medicinehatnews.com###stickyleaderboard -timesnownews.com,zoomtventertainment.com###stky -sun-sentinel.com###stnWrapperDiv -westernjournal.com###stnvideo -rawstory.com###story-top-ad -healthshots.com###storyBlockOne -suffolknewsherald.com###story_one_by_one_group -krunker.io###streamContainer -web-capture.net###stw_ad -arenaev.com,gsmarena.com###subHeader -macrotrends.net###subLeaderboardTag -ebaumsworld.com###subheader_atf_wrapper -streams.tv###sunGarden -eenewseurope.com###superBanner -dashnet.org###support -vk.com,vk.ru###system_msg -etherscan.io,polygonscan.com###t8xt5pt6kr-0-1 -gumtree.com###tBanner -comicbookrealm.com###tad -cyclingtips.com,mirror.co.uk###takeover -romsgames.net###td-top-leaderboard -based-politics.com###tdi_107 -linuxtoday.com###tdi_46 -cornish-times.co.uk###teads -asurascans.com,ozulscansen.com,realmscans.com,void-scans.com,yugenmangas.net###teaser3 -the-star.co.ke###teasers -eetimes.com###techpaperSliderContainer -tecmint.com###tecmint_incontent -tecmint.com###tecmint_leaderboard_article_top -worldtribune.com###text-101 -geeky-gadgets.com###text-105335641 -godisageek.com,thisiscolossal.com,vgleaks.com###text-11 -hpcwire.com###text-115 -cathnews.co.nz,cryptoreporter.info,net-load.com,vgleaks.com,wakingtimes.com###text-12 -radiosurvivor.com,thewashingtonstandard.com,vgleaks.com###text-13 -ericpetersautos.com###text-133 -vgleaks.com###text-14 -geeksforgeeks.org,vgleaks.com###text-15 -geeksforgeeks.org,thesurvivalistblog.net,vgleaks.com###text-16 -cleantechnica.com###text-165 -weekender.com.sg###text-17 -5movierulz.band,populist.press###text-2 -freecourseweb.com###text-20 -net-load.com###text-25 -2smsupernetwork.com,cryptoreporter.info,net-load.com###text-26 -cryptoreporter.info###text-27 -2smsupernetwork.com###text-28 -2smsupernetwork.com,westseattleblog.com###text-3 -needsomefun.net###text-36 -wrestlingnews.co###text-38 -conversanttraveller.com###text-39 -postnewsgroup.com,thewashingtonstandard.com,tvarticles.me###text-4 -conversanttraveller.com###text-40 -conversanttraveller.com,needsomefun.net###text-41 -bigblueball.com###text-416290631 -needsomefun.net###text-42 -premiumtimesng.com###text-429 -kollelbudget.com###text-43 -premiumtimesng.com###text-440 -foodsforbetterhealth.com###text-46 -eevblog.com###text-49 -computips.org,techlife.com,technipages.com,tennews.in###text-5 -2smsupernetwork.com###text-50 -2smsupernetwork.com,snowbrains.com,theconservativetreehouse.com,times.co.zm,treesofblue.com###text-6 -yugatech.com###text-69 -treesofblue.com###text-7 -kollelbudget.com###text-70 -kollelbudget.com###text-78 -playco-opgame.com,sadeempc.com,thewashingtonstandard.com,westseattleblog.com###text-8 -kollelbudget.com###text-82 -kollelbudget.com###text-83 -bestvpnserver.com,thewashingtonstandard.com###text-9 -nanoreview.net###the-app > .mb -bestfriendsclub.ca###theme-bottom-section > .section-content -bestfriendsclub.ca###theme-top-section > .section-content -indy100.com###thirdparty01 -standard.co.uk###thirdparty_03_parent -siasat.com###tie-block_3274 -box-core.net,mma-core.com###tlbrd -technewsworld.com###tnavad -bramptonguardian.com###tncms-region-global-container-bottom -accuweather.com,phonescoop.com###top -crn.com###top-ad-fragment-container -zap-map.com###top-advert-content -bookriot.com###top-alt-content -coingecko.com###top-announcement-header -cheese.com,fantasypros.com,foodlovers.co.nz,foodnetwork.ca,investorplace.com,kurocore.com,skift.com,thedailywtf.com,theportugalnews.com###top-banner -globalwaterintel.com###top-banner-image -independent.co.uk,the-independent.com###top-banner-wrapper -missingremote.com###top-bar -returnyoutubedislike.com###top-donors -breakingdefense.com###top-header -openspeedtest.com###top-lb -capetownmagazine.com###top-leader-wrapper -austinchronicle.com,carmag.co.za,shawlocal.com,thegazette.com,vodacomsoccer.com###top-leaderboard -gogetaroomie.com###top-space -progameguides.com###top-sticky-sidebar-container -gamepur.com###top-sticky-sidebar-wrapper -sporcle.com###top-unit -nytimes.com,nytimesn7cgmftshazwhfgzm37qxb44r64ytbb2dj3x62d2lljsciiyd.onion###top-wrapper -investing.com###topBroker -digitalartsonline.co.uk###topLeaderContainer -mautofied.com###topLeaderboard -krunker.io###topLeftAdHolder -krunker.io###topRightAdHolder -forum.wordreference.com###topSupp -walterfootball.com###top_S -yourharlow.com###top_ad_row -utne.com###top_advertisement -chicagotribune.com###top_article_fluid_wrapper -indy100.com,tarladalal.com###top_banner -caribpress.com###top_banner_container -cfoc.org###top_custom_banner -chicagotribune.com###top_fluid_wrapper -bleedingcool.com,jamaicaobserver.com,pastemagazine.com###top_leaderboard -bleedingcool.com###top_medium_rectangle -jezebel.com,pastemagazine.com###top_rectangle -imdb.com###top_rhs -bleedingcool.com###top_spacer -bookriot.com###top_takeover -w3newspapers.com###topads -tf2-servers.com###topadspot -absolutelyrics.com,cdrlabs.com,eonline.com,exiledonline.com,findtheword.info,realitywanted.com,revizoronline.com,snapfiles.com###topbanner -radiome.ar,radiome.at,radiome.bo,radiome.ch,radiome.cl,radiome.com.do,radiome.com.ec,radiome.com.gr,radiome.com.ni,radiome.com.pa,radiome.com.py,radiome.com.sv,radiome.com.ua,radiome.com.uy,radiome.cz,radiome.de,radiome.fr,radiome.gt,radiome.hn,radiome.ht,radiome.lu,radiome.ml,radiome.org,radiome.pe,radiome.si,radiome.sk,radiome.sn,radyome.com###topbanner-container -deccanherald.com###topbar > .hide-desktop + div -armenpress.am###topbnnr -coinlean.com###topcontainer -worldtimebuddy.com###toprek -semiconductor-today.com###topsection -macmillandictionary.com,macmillanthesaurus.com,oxfordlearnersdictionaries.com###topslot_container -atomic-robo.com###topspace -charlieintel.com###topunit -jigsawplanet.com###tsi-9c55f80e-3 -pcworld.com,techhive.com###tso -trumparea.com###udmvid -planetminecraft.com###ultra_wide -semiconductor-today.com###undermenu -dailytrust.com,thequint.com###unitDivWrapper-0 -upworthy.com###upworthyFreeStarVideoAdContainer -my.juno.com###usWorldTile -videocardz.com###vc-intermid-desktop-ad -sammobile.com###venatus-hybrid-banner -afkgaming.com###venatus-takeover -nutritioninsight.com###verticlblks -mykhel.com,oneindia.com###verticleLinks -ghgossip.com###vi-sticky-ad -investing.com###video -sportskeeda.com###video-player-container-- -forums.tomsguide.com###video_ad -gumtree.com.au###view-item-page__leaderboard-wrapper -playstationtrophies.org,xboxachievements.com###vnt-lb-a -counselheal.com,mobilenapps.com###vplayer_large -browserleaks.com###vpn_text -1337x.to###vpnvpn2 -w2g.tv###w2g-square-ad -igberetvnews.com,mediaweek.com.au,nextnewssource.com###wallpaper -eeweb.com###wallpaper_image -realclearhistory.com###warning_empty_div -opensubtitles.org###watch_online -xxxporn.tube###watch_sidevide -xxxporn.tube###watch_undervideo -worldcrunch.com###wc_leaderboard -topfiveforex.com###wcfloatDiv -the-express.com###web-strip-banner -webfail.com###wf-d-300x250-sb1 -walterfootball.com###wf_brow_box -sportscardforum.com###wgo_affiliates -itnews.com.au###whitepapers-container -tribunnews.com###wideskyscraper -shawlocal.com###widget-html-box-ownlocal -watnopaarpunjabinews.com###widget_sp_image-2 -conversanttraveller.com###widget_sp_image-28 -watnopaarpunjabinews.com###widget_sp_image-3 -conversanttraveller.com###widget_sp_image-4 -ultrabookreview.com###widgetad2-top -etherealgames.com###widgets-wrap-after-content -etherealgames.com###widgets-wrap-before-content -gaynewzealand.com###wn-insurance-quote-editor -rediff.com###world_right1 -rediff.com###world_right2 -rediff.com###world_top -worldrecipes.eu###worldrecipeseu_970x90_desktop_sticky_no_closeplaceholder -forward.com###wp_piano_top_wrapper -todayheadline.co,wavepublication.com###wpgtr_stickyads_textcss_container -eteknix.com###wrapper > header -cranestodaymagazine.com,hoistmagazine.com,ttjonline.com,tunnelsonline.info###wrapper_banners -xdaforums.com###xdaforums_leaderboard_atf -xdaforums.com###xdaforums_leaderboard_btf -xdaforums.com###xdaforums_right_1 -xdaforums.com###xdaforums_right_2 -blasternation.com###xobda -yardbarker.com###yb_recirc -transfermarkt.com###zLHXgnIj -croxyproxy.rocks###zapperSquare -beyondgames.biz,ecoustics.com###zox-lead-bot -cleantechnica.com###zox-top-head-wrap -marketscreener.com###zppFooter -marketscreener.com###zppMiddle2 -marketscreener.com###zppRight2 -ultrabookreview.com###zzifhome -ultrabookreview.com###zzifhome2 -arydigital.tv###zzright -talkingpointsmemo.com##.--span\:12.AdSlot -bigissue.com##.-ad -gamejolt.com##.-ad-widget -olympics.com##.-adv -porndoe.com##.-h-banner-svg-desktop -nhl.com##.-leaderboard -nhl.com##.-mrec -hellomagazine.com,hola.com##.-variation-bannerinferior -hellomagazine.com,hola.com##.-variation-megabanner -hellomagazine.com##.-variation-robainferior -hellomagazine.com##.-variation-robapaginas -yelp.com##.ABP -gamesadshopper.com##.AD -advfn.com##.APS_TOP_BANNER_468_X_60_container -timesofindia.indiatimes.com##.ATF_mobile_ads -timesofindia.indiatimes.com##.ATF_wrapper -buzzfeed.com,darkreading.com,gamedeveloper.com,imgur.io,iotworldtoday.com,sevendaysvt.com,tasty.co,tucsonweekly.com##.Ad -deseret.com##.Ad-space -jagranjosh.com##.Ad720x90 -thingiverse.com##.AdBanner__adBanner--GpB5d -surfline.com##.AdBlock_modal__QwIcG -jagranjosh.com##.AdCont -topgear.com##.AdContainer-sc-cy9ye3-4 -tvnz.co.nz##.AdOnPause -racingamerica.com##.AdPlacement -manabadi.co.in##.AdSW -petfinder.com##.AdUnitParagraph-module--adunitContainer--2b7a6 -therealdeal.com##.AdUnit_adUnitCenter__FKOWE -barrons.com##.AdWrapper-sc-9rx3gf-0 -complex.com##.AdWrapper__AdPlaceholderContainer-sc-15idjh1-0 -earth.com##.AdZone_adZone__2w4TC -thescore.com##.Ad__container--MeQWT -interestingengineering.com##.Ad_adContainer__XNCwI -charlieintel.com,dexerto.com##.Ad_ad__SqDQA -interestingengineering.com##.Ad_ad__hm0Ut -therealdeal.com##.Ad_rootHomepage__mSzqh -newspointapp.com##.Ad_wrapper -greatandhra.com##.AdinHedare -jagranjosh.com##.Ads -coingape.com##.AdsMid -sportsnet.ca##.Ads_card-wrapper__KyXLu -iogames.onl##.Adv -yandex.com##.AdvOffers -airportinfo.live,audiokarma.org,audizine.com##.AdvallyTag -tennesseestar.com,themichiganstar.com,theminnesotasun.com,theohiostar.com##.AdvancedText -iogames.onl##.Advc -tvnz.co.nz##.Advert -suffolknews.co.uk##.Advertisement -thesouthafrican.com##.Advertisement__AdsContainer-sc-4s7fst-0 -phoenixnewtimes.com##.AirBillboard -dallasobserver.com,houstonpress.com##.AirBillboardInlineContentresponsive -browardpalmbeach.com,dallasobserver.com,miaminewtimes.com,phoenixnewtimes.com,westword.com##.AirLeaderboardMediumRectanglesComboInlineContent -browardpalmbeach.com,dallasobserver.com,miaminewtimes.com,phoenixnewtimes.com,westword.com##.AirMediumRectangleComboInlineContent -technicalarp.com##.Arpian-ads -rankedboost.com##.Article-A-Align -cruisecritic.com,cruisecritic.com.au##.ArticleItem_scrollTextContainer__GrBC_ -whatcar.com##.ArticleTemplate_masthead__oY950 -indiatimes.com##.BIG_ADS_JS -naturalnews.com##.BNVSYDQLCTIG -photonics.com##.BOX_CarouselAd -imgur.com##.BannerAd-cont -freebitz.xyz##.BannerContainer -freebitz.xyz##.BannerContainerScrapper -freebitz.xyz##.BannerMain -dashfight.com##.BannerPlayware_block__up1Ra -coffeeordie.com##.BannerPromo-desktop -video-to-mp3-converter.com##.BannerReAds_horizontal-area__5JNuE -bloomberg.com##.BaseAd_baseAd-dXBqvbLRJy0- -cnbc.com##.BoxRail-styles-makeit-ad--lyuQB -latestdeals.co.uk##.BrD5q -80.lv##.BrandingPromo_skeleton -petfinder.com##.CardGrid-module--breakOut--a18cf -timesofindia.indiatimes.com##.CeUoi -thedailybeast.com##.CheatSheetList__placeholder -thedailybeast.com##.Cheat__top-ad -tutiempo.net##.ContBannerTop -dappradar.com##.Container--bottomBanners -songmeanings.com##.Container_ATFR_300 -songmeanings.com##.Container_ATF_970 -swarajyamag.com##.CrIrA -ulta.com##.CriteoProductRail -calcalistech.com##.Ctech_general_banner -lithub.com##.Custom_Ads -inverness-courier.co.uk,johnogroat-journal.co.uk##.DMPU -naturalnews.com##.DVFNRYKUTQEP -nationalworld.com##.Dailymotion__Inner-sc-gmjr3r-1 -realityblurb.com##.Desktop-Sticky -tweaktown.com##.DesktopRightBA -thekitchn.com##.DesktopStickyFooter -yandex.com##.DirectFeature -games.washingtonpost.com##.DisplayAd__container___lyvUfeBN -additivemanufacturing.media,compositesworld.com,ptonline.com##.DisplayBar -thedailybeast.com##.Footer__coupons-wrapper -askapache.com##.GAD -modrinth.com##.GBBNWLJVGRHFLYVGSZKSSKNTHFYXHMBD -google.co.uk##.GBTLFYRDM0 -google.com##.GC3LC41DERB + div[style="position: relative; height: 170px;"] -google.com##.GGQPGYLCD5 -google.com##.GGQPGYLCMCB -google.com##.GISRH3UDHB -goodmenproject.com##.GMP_728_top -meduza.io##.GeneralMaterial-module-aside -cargurus.com##.Gi1Z6i -coin360.com##.GuYYbg -seattletimes.com##.H0FqVZjh86HAsl61ps5e -naturalnews.com##.HALFBYEISCRJ -metservice.com##.Header -planningportal.co.uk##.HeaderAdArea__HeaderAdContainer-sc-1lqw6d0-0 -games.washingtonpost.com##.HomeCategory__ads___aFdrmx_3 -mope.io##.Home__home-ad-wrapper -semiconductor-today.com##.Horiba-banner -artsy.net##.IITnS -sporcle.com##.IMGgi -streamingsites.com##.IPdetectCard -80.lv##.ImagePromo_default -yandex.com##.ImagesViewer-SidebarAdv -inverness-courier.co.uk##.LLKGTX -nyctourism.com##.Layout_mobileStickyAdContainer__fCbCq -kentonline.co.uk##.LeaderBack -fivebooks.com##.Leaderboard-container -nationalgeographic.com##.LinkedImage -inverness-courier.co.uk,johnogroat-journal.co.uk,stamfordmercury.co.uk##.MPU -abergavennychronicle.com,tenby-today.co.uk##.MPUstyled__MPUWrapper-sc-1cdmm4p-0 -wayfair.com##.MediaNativePlacement-wrapper-link -engadget.com##.Mih\(90px\) -medievalists.net##.Mnet_TopLeft_970x250 -metservice.com##.Mrec-min-height -boardgameoracle.com##.MuiContainer-root > .jss232 -tvtv.us##.MuiPaper-root.jss12 -ahaan.co.uk##.MuiSnackbar-anchorOriginBottomCenter -news18.com##.NAT_add -mangasect.com,manhuaplus.com##.OUTBRAIN -chronicle.com##.OneColumnContainer -newscientist.com##.Outbrain -outlook.advantis.ai##.Outlook_discoverItem__RORc6 -kentonline.co.uk##.PSDRGC -govtech.com##.Page-billboard -afar.com##.Page-header-hat -apnews.com##.Page-header-leaderboardAd -quora.com##.PageContentsLayout___StyledBox-d2uxks-0 > .q-box > .q-sticky > .qu-pb--medium -ask.com##.PartialKelkooResults -hulu.com##.PauseAdCreative-wrap -thekitchn.com##.Post__inPostVideoAdDesktop -stocktwits.com##.Primis_container__KwtjV -tech.hindustantimes.com##.ProductAffilateWrapper -yandex.com##.ProductGallery -atlasobscura.com##.ProgrammaticMembershipCallout--taboola-member-article-container -plainenglish.io##.PromoContainer_container__sZ3ls -citybeat.com,clevescene.com,cltampa.com##.PromoTopBar -sciencealert.com##.Purch_Y_C_0_1-container -engadget.com##.Py\(30px\).Bgc\(engadgetGhostWhite\) -tumblr.com##.Qrht9 -tvzoneuk.com##.R38Z80 -barrons.com##.RenderBlock__AdWrapper-sc-1vrmc5r-0 -whatcar.com##.ReviewHero_mastheadStyle__Bv8X0 -charismanews.com##.RightBnrWrap -geometrydash.io##.RowAdv -clutchpoints.com##.RzKEf -dictionary.com,thesaurus.com##.SZjJlj7dd7R6mDTODwIT -gq.com##.SavingsUnitedCouponsWrapper-gPnqA-d -lbcgroup.tv##.ScriptDiv -staples.com##.SearchRootUX2__bannerAndSkuContainer -coingape.com##.Sidemads -simkl.com##.SimklTVDetailEpisodeLinksItemHref -thedailybeast.com##.Sizer -coingape.com##.SponserdBtn -goodreads.com##.SponsoredProductAdContainer -streetsblog.org##.Sponsorship_articleBannerWrapper__wV_1S -thetimes.com##.Sticky-AdContainer -apartmenttherapy.com,cubbyathome.com,thekitchn.com##.StickyFooter -slideshare.net##.StickyVerticalInterstitialAd_root__f7Qki -coin360.com##.Sticky_Promo -slant.co##.SummaryPage-LustreEmbed -westword.com##.SurveyLinkSlideModal -newser.com##.TaboolaP1P2 -engadget.com##.Td\(n\).Bdbc\(engadgetGutter\).Py\(40px\) -dictionary.com##.TeixwVbjB8cchva8bDlg -imgur.com##.Top300x600 -cnbc.com##.TopBanner-container -abergavennychronicle.com,tenby-today.co.uk##.TopBannerstyled__Wrapper-sc-x2ypns-0 -topgear.com##.TopContainer-sc-cy9ye3-1 -ndtv.com##.TpGnAd_ad-wr -dappradar.com##.Tracker__StyledSmartLink-sc-u8v3nu-0 -meduza.io##.UnderTheSun-module-banner -poebuilds.net##.W_tBwY -britannicaenglish.com##.WordFromSponsor_content_enToar -this.org##.Wrap-leaderboard -tumblr.com##.XJ7bf -tumblr.com##.Yc2Sp -desmoinesregister.com##.ZJBvMP__ZJBvMP -getpocket.com##.\'syndication-ad\' -olympics.com##.\-partners -androidauthority.com##._--_-___0b -androidauthority.com##._--_-___Yb -freepik.com##._1286nb18b -freepik.com##._1286nb1rx -swarajyamag.com##._1eNH8 -gadgetsnow.com##._1edxh -gadgetsnow.com##._1pjMr -afkgaming.com##._2-COY -brisbanetimes.com.au,smh.com.au,theage.com.au,watoday.com.au##._2gSkZ -jeffdornik.com##._2kEVY -gadgetsnow.com##._2slKI -coderwall.com##._300x250 -brisbanetimes.com.au,smh.com.au,theage.com.au,watoday.com.au##._34z61 -timesnownews.com##._3n1p -thequint.com##._4xQrn -outlook.live.com##._BAY1XlyQSIe6kyKPlYP -gadgets360.com##.__wdgt_rhs_kpc -gadgets360.com##._ad -timeout.com##._ad_1elek_1 -sitepoint.com##._ap_apex_ad-container -vscode.one##._flamelab-ad -tampafp.com##._ning_outer -filerox.com##._ozxowqadvert -coingraph.us,filext.com##.a -startpage.com##.a-bg -rumble.com##.a-break -abcya.com##.a-leader -baptistnews.com,chimpreports.com,collive.com,defence-industry.eu,islandecho.co.uk,locklab.com,mallorcasunshineradio.com,runwaygirlnetwork.com,southsideweekly.com,spaceref.com,talkradioeurope.com,theshoesnobblog.com##.a-single -abcya.com##.a-skyscraper -krebsonsecurity.com##.a-statement -tellymix.co.uk##.a-text -androidtrends.com,backthetruckup.com,bingehulu.com,buffalorising.com,streamsgeek.com,techcentral.co.za,techrushi.com,trendstorys.com,vedantbhoomi.com##.a-wrap -breitbart.com##.a-wrapper -getpocket.com##.a1cawpek -chordify.net##.a1p2y5ib -informer.com##.a2 -wmtips.com##.a3f17 -getpocket.com##.a47c4wn -crypto.news##.a49292cf69626 -thechinaproject.com##.a4d -westword.com##.a65vezphb1 -breitbart.com##.a8d -localtiger.com##.a9gy_lt -scoredle.com##.aHeader -fastweb.com##.a_cls_s -fastfoodnutrition.org##.a_leader -premierguitar.com##.a_promo -fastfoodnutrition.org##.a_rect -informer.com##.aa-728 -informer.com##.aa0 -absoluteanime.com##.aa_leaderboard -romsmania.games##.aawp -ncomputers.org,servertest.online##.ab -freedownloadmanager.org##.ab1 -freedownloadmanager.org##.ab320 -slickdeals.net,whitecoatinvestor.com##.abc -britannica.com,merriam-webster.com##.abl -imgbb.com##.abnr -rankedboost.com##.above-article-section -oilcity.news##.above-footer-widgets -hollywoodreporter.com##.above-header-ad -creativeuncut.com##.abox-s_i -creativeuncut.com##.abox-s_i2 -roblox.com##.abp -manualslib.com##.abp_adv_s-title -pocketgamer.com##.abs -albertsons.com##.abs-carousel-proxy > [aria-label="Promo or Ad Banner"] -tfn.scot##.absolute-leaderboard -tfn.scot##.absolute-mid-page-unit -breitbart.com##.acadnotice -gamesystemrequirements.com##.act_eng -sneakernews.com##.active-footer-ad -christianpost.com##.acw -11alive.com,12news.com,12newsnow.com,13newsnow.com,13wmaz.com,5newsonline.com,9news.com,abc10.com,abovethelaw.com,adelaidenow.com.au,adtmag.com,aero-news.net,airportia.com,americanprofile.com,appleinsider.com,arstechnica.com,as.com,asianwiki.com,askmen.com,associationsnow.com,autoevolution.com,autoguide.com,automation.com,autotrader.com.au,bab.la,barchart.com,bdnews24.com,beinsports.com,bgr.in,biometricupdate.com,boats.com,bobvila.com,booksourcemagazine.com,bostonglobe.com,bradleybraves.com,businessdailyafrica.com,businessinsider.com,businesstech.co.za,businessworld.in,c21media.net,carcomplaints.com,cbc.ca,cbs19.tv,celebdigs.com,celebified.com,ch-aviation.com,chargedevs.com,chemistryworld.com,cnn.com,cnnphilippines.com,colourlovers.com,couriermail.com.au,cracked.com,createtv.com,crn.com,crossmap.com,crosswalk.com,cyberscoop.com,dailycaller.com,dailylobo.com,dailyparent.com,dailytarheel.com,dcist.com,dealnews.com,deccanherald.com,defenseone.com,defensescoop.com,discordbotlist.com,downdetector.co.nz,downdetector.co.uk,downdetector.co.za,downdetector.com,downdetector.in,downdetector.sg,dpreview.com,dynamicwallpaper.club,earlygame.com,edmontonjournal.com,elpais.com,emoji.gg,eurosport.com,excellence-mag.com,familydoctor.org,fanpop.com,femalefirst.co.uk,filehippo.com,filerox.com,finance.yahoo.com,firstcoastnews.com,flightglobal.com,fox6now.com,foxbusiness.com,foxnews.com,funeraltimes.com,fxnowcanada.ca,gamesadshopper.com,gayvegas.com,geelongadvertiser.com.au,gmanetwork.com,go.com,godtube.com,golfweather.com,gtplanet.net,heraldnet.com,heraldsun.com.au,hodinkee.com,homebeautiful.com.au,hoodline.com,inc-aus.com,indiatvnews.com,infobyip.com,inhabitat.com,insider.com,interfax.com.ua,joc.com,jscompress.com,kagstv.com,kare11.com,kcentv.com,kens5.com,kgw.com,khou.com,kiiitv.com,king5.com,koreabang.com,kpopstarz.com,krem.com,ksdk.com,ktvb.com,kvue.com,lagom.nl,leaderpost.com,letsgodigital.org,lifezette.com,lonestarlive.com,looktothestars.org,m.famousfix.com,mangarockteam.com,marketwatch.com,maxpreps.com,mcpmag.com,minecraftmods.com,modernretail.co,monkeytype.com,motherjones.com,mprnews.org,mybroadband.co.za,myfox8.com,myfoxzone.com,mygaming.co.za,myrecipes.com,namibtimes.net,nejm.org,neowin.net,newbeauty.com,news.com.au,news.sky.com,newscentermaine.com,newsday.com,newstatesman.com,nymag.com,nytimes.com,nytimesn7cgmftshazwhfgzm37qxb44r64ytbb2dj3x62d2lljsciiyd.onion,nzherald.co.nz,patch.com,patheos.com,pcgamesn.com,petfinder.com,picmix.com,planelogger.com,playsnake.org,playtictactoe.org,pokertube.com,politico.com,politico.eu,powernationtv.com,proremodeler.com,quackit.com,ratemds.com,ratemyprofessors.com,redmondmag.com,refinery29.com,revolver.news,roadsideamerica.com,salisburypost.com,scholarlykitchen.sspnet.org,seattletimes.com,segmentnext.com,silive.com,simpledesktops.com,slickdeals.net,slippedisc.com,sltrib.com,smartcompany.com.au,smsfi.com,softpedia.com,soranews24.com,spot.im,spryliving.com,statenews.com,statscrop.com,straight.com,streetinsider.com,stv.tv,sundayworld.com,the-decoder.com,thecut.com,thedigitalfix.com,thedp.com,theeastafrican.co.ke,thefader.com,thefirearmblog.com,thegrocer.co.uk,themercury.com.au,theringreport.com,thestarphoenix.com,thv11.com,time.com,timeshighereducation.com,tntsports.co.uk,today.com,toonado.com,townhall.com,tracker.gg,tribalfootball.com,triblive.com,tripadvisor.at,tripadvisor.be,tripadvisor.ca,tripadvisor.ch,tripadvisor.cl,tripadvisor.cn,tripadvisor.co,tripadvisor.co.id,tripadvisor.co.il,tripadvisor.co.kr,tripadvisor.co.nz,tripadvisor.co.uk,tripadvisor.co.za,tripadvisor.com,tripadvisor.com.ar,tripadvisor.com.au,tripadvisor.com.br,tripadvisor.com.eg,tripadvisor.com.gr,tripadvisor.com.hk,tripadvisor.com.mx,tripadvisor.com.my,tripadvisor.com.pe,tripadvisor.com.ph,tripadvisor.com.sg,tripadvisor.com.tr,tripadvisor.com.tw,tripadvisor.com.ve,tripadvisor.com.vn,tripadvisor.de,tripadvisor.dk,tripadvisor.es,tripadvisor.fr,tripadvisor.ie,tripadvisor.in,tripadvisor.it,tripadvisor.jp,tripadvisor.nl,tripadvisor.pt,tripadvisor.ru,tripadvisor.se,tweaktown.com,ultimatespecs.com,uptodown.com,usmagazine.com,usnews.com,vancouversun.com,vogue.in,vulture.com,wamu.org,washingtonexaminer.com,washingtontimes.com,watzatsong.com,wbir.com,wcnc.com,weatheronline.co.uk,webestools.com,webmd.com,weeklytimesnow.com.au,wfaa.com,wfmynews2.com,wgnt.com,wgntv.com,wgrz.com,whas11.com,windsorstar.com,winnipegfreepress.com,wkyc.com,wltx.com,wnep.com,worthplaying.com,wqad.com,wral.com,wrif.com,wtsp.com,wusa9.com,wwltv.com,wzzm13.com,x17online.com,xatakaon.com,yorkpress.co.uk##.ad -comicbookmovie.com##.ad > .blur-up -independent.ie##.ad--articlerectangle -hifi-classic.net##.ad--google_adsense > .ad--google_adsense -hifi-classic.net##.ad--google_adsense_bottom -hollywoodlife.com##.ad--horizontal -paryatanbazar.com##.ad--space -allbusiness.com##.ad--tag -ip-address.org##.ad-1-728 -ip-tracker.org##.ad-1-drzac -ip-address.org##.ad-2-336 -gamepressure.com##.ad-2020-rec-alt-mob -ip-address.org##.ad-3-728 -archdaily.com##.ad-300-250 -ip-address.org##.ad-5-300 -geotastic.net##.ad-970x250 -birdwatchingdaily.com##.ad-advertisement-vertical -buzzfeed.com##.ad-awareness -britannica.com,courthousenews.com,diabetesjournals.org,imgmak.com,infobel.com,kuioo.com,linkedin.com,pilot007.org,radiotimes.com,soundguys.com,topperlearning.com##.ad-banner -radiopaedia.org##.ad-banner-desktop-row -home-designing.com,inc.com,trustpilot.com##.ad-block -fangoria.com##.ad-block--300x250 -sciencenews.org##.ad-block-leaderboard__freestar___Ologr -fangoria.com##.ad-block__container -cryptodaily.co.uk##.ad-bottom-spacing -save.ca##.ad-box -mv-voice.com##.ad-break -imsa.com##.ad-close-container -npr.org##.ad-config -12news.com,9news.com,9to5google.com,9to5mac.com,aad.org,advfn.com,all3dp.com,allaboutcookies.org,allnovel.net,amny.com,athleticbusiness.com,audiokarma.org,beeradvocate.com,beliefnet.com,bizjournals.com,biznews.com,bolavip.com,businessinsider.com,cbs8.com,cc.com,ccjdigital.com,dailytrust.com,delish.com,driven.co.nz,ecr.co.za,electrek.co,engineeringnews.co.za,equipmentworld.com,etcanada.com,fastcompany.com,footyheadlines.com,fox10phoenix.com,fox13news.com,fox26houston.com,fox29.com,fox2detroit.com,fox32chicago.com,fox35orlando.com,fox4news.com,fox5atlanta.com,fox5dc.com,fox5ny.com,fox7austin.com,fox9.com,foxbusiness.com,foxla.com,foxnews.com,funkidslive.com,gfinityesports.com,globalspec.com,gmanetwork.com,grammarbook.com,hbr.org,highdefdigest.com,howstuffworks.com,huffpost.com,insidehook.com,insider.com,intouchweekly.com,khou.com,koat.com,ktvu.com,lifeandstylemag.com,longislandpress.com,macstories.net,mail.com,mangakakalot.app,memuplay.com,metro.us,metrophiladelphia.com,minecraftforum.net,miningweekly.com,mixed-news.com,mobilesyrup.com,modernhealthcare.com,msnbc.com,my9nj.com,namemc.com,nbcnews.com,newrepublic.com,nzherald.co.nz,oneesports.gg,opb.org,outkick.com,papermag.com,physiology.org,pixiv.net,punchng.com,qns.com,realsport101.com,reason.com,refinery29.com,roadandtrack.com,scroll.in,seattletimes.com,songkick.com,sportskeeda.com,thebaltimorebanner.com,thelocal.at,thelocal.ch,thelocal.de,thelocal.dk,thelocal.es,thelocal.fr,thelocal.it,thelocal.no,thelocal.se,themarketherald.ca,thenationonlineng.net,thenewstack.io,tmz.com,toofab.com,uploadvr.com,usmagazine.com,vanguardngr.com,wildtangent.com,wogx.com,worldsoccertalk.com,wral.com##.ad-container -newthinking.com##.ad-container-mpu -wheelofnames.com##.ad-declaration -sciencealert.com##.ad-desktop\:block -cnn.com##.ad-feedback__modal -simracingsetup.com##.ad-fixed-bottom -pixiv.net##.ad-frame-container -mobilesyrup.com##.ad-goes-here -symbl.cc##.ad-incontent-rectangle -andscape.com##.ad-incontent-wrapper -dailyuptea.com##.ad-info -downloads.digitaltrends.com##.ad-kargo -kenyans.co.ke##.ad-kenyans -kenyans.co.ke##.ad-kenyans-wrapper -apksum.com##.ad-left -radiopaedia.org##.ad-link-grey -citynews.ca##.ad-load -mariopartylegacy.com##.ad-long -olympics.com##.ad-margin-big -pixiv.net##.ad-mobile-anchor -pedestrian.tv##.ad-no-mobile -constructionenquirer.com##.ad-page-takeover -mirror.co.uk,themirror.com##.ad-placeholder -bbcgoodfood.com,olivemagazine.com,radiotimes.com##.ad-placement-inline--2 -comedy.com##.ad-placement-wrapper -atlasobscura.com##.ad-site-top-full-width -nationalreview.com##.ad-skeleton -accesswdun.com##.ad-slider-block -imresizer.com##.ad-slot-1-fixed-ad -imresizer.com##.ad-slot-2-fixed-ad -imresizer.com##.ad-slot-3-fixed-ad -cnn.com##.ad-slot-dynamic -cnn.com##.ad-slot-header__wrapper -barandbench.com##.ad-slot-row-m__ad-Wrapper__cusCS -cointelegraph.com##.ad-slot_NjPAE -oann.com##.ad-slot__ad-label -cnn.com##.ad-slot__ad-wrapper -freepressjournal.in##.ad-slots -usnews.com##.ad-spacer__AdSpacer-sc-nwg9sv-0 -techinformed.com##.ad-text-styles -companiesmarketcap.com##.ad-tr -forbes.com##.ad-unit -ndtvprofit.com##.ad-with-placeholder-m__place-holder-wrapper__--JIw -bqprime.com##.ad-with-placeholder-m__place-holder-wrapper__1_rkH -trueachievements.com##.ad-wrap -smithsonianmag.com,tasty.co##.ad-wrapper -gamingdeputy.com##.ad-wrapper-parent-video -allscrabblewords.com,famously-dead.com,famouslyarrested.com,famouslyscandalous.com,gamesadshopper.com,iamgujarat.com,lolcounter.com,mpog100.com,newszop.com,samayam.com,timesofindia.com,vijaykarnataka.com##.ad1 -allscrabblewords.com,famously-dead.com,famouslyarrested.com,famouslyscandalous.com,mpog100.com##.ad2 -allscrabblewords.com,mpog100.com##.ad3 -india.com##.ad5 -cricketcountry.com##.ad90mob300 -chron.com,greenwichtime.com,houstonchronicle.com,mysanantonio.com,seattlepi.com,sfchronicle.com,sfgate.com,thetelegraph.com,timesunion.com##.adBanner -medibang.com##.adBlock__pc -emojiphrasebook.com##.adBottom -bigislandnow.com##.adBreak -kijiji.ca##.adChoices-804693302 -economist.com##.adComponent_advert__kPVUI -m.economictimes.com,someecards.com,trailspace.com,wabetainfo.com##.adContainer -etymonline.com##.adContainer--6CVz1 -graziadaily.co.uk##.adContainer--inline -hellomagazine.com##.adContainerClass_acvudum -anews.com.tr##.adControl -carsdirect.com##.adFooterWrapper -bramptonguardian.com,guelphmercury.com,insideottawavalley.com,niagarafallsreview.ca,niagarathisweek.com,thepeterboroughexaminer.com,therecord.com,thespec.com,thestar.com,wellandtribune.ca##.adLabelWrapper -bramptonguardian.com,insideottawavalley.com,niagarafallsreview.ca,thepeterboroughexaminer.com,therecord.com,thestar.com,wellandtribune.ca##.adLabelWrapperManual -coloradotimesrecorder.com##.adSidebar -bramptonguardian.com##.adSlot___3IQ8M -drive.com.au##.adSpacing_drive-ad-spacing__HdaBg -thestockmarketwatch.com##.adSpotPad -healthnfitness.net##.adTrack -sofascore.com##.adUnitBox -dailyo.in##.adWrapp -romper.com##.adWrapper -barrons.com##.adWrapperTopLead -m.thewire.in##.ad_20 -indy100.com##.ad_300x250 -digiday.com##.ad_960 -food.com##.ad__ad -disqus.com##.ad__adh-wrapper -nationalpost.com,vancouversun.com##.ad__inner -politico.eu##.ad__mobile -dailykos.com##.ad__placeholder -asianjournal.com##.ad_before_title -kyivpost.com##.ad_between_paragraphs -cheatcodes.com##.ad_btf_728 -ntvkenya.co.ke##.ad_flex -auto-data.net##.ad_incar -dailykos.com##.ad_leaderboard__container -advocate.com,out.com##.ad_leaderboard_wrap -bigislandnow.com##.ad_mobileleaderboard -housing.com##.ad_pushup_paragraph -housing.com##.ad_pushup_subtitle -base64decode.org##.ad_right_bottom -dailykos.com##.ad_right_rail -base64decode.org##.ad_right_top -upi.com##.ad_slot_inread -kitco.com##.ad_space_730 -advocate.com##.ad_tag -outlookindia.com##.ad_unit_728x90 -geoguessr.com##.ad_wrapper__3DZ7k -webextension.org##.adb -queerty.com##.adb-box-large -queerty.com##.adb-top-lb -tellymix.co.uk##.adb_top -wordfind.com##.adbl -dataversity.net,ippmedia.com,sakshi.com,songlyrics.com,yallamotor.com##.adblock -bookriot.com##.adblock-content -darkreader.org##.adblock-pro -carcomplaints.com,entrepreneur.com,interglot.com,pricespy.co.nz,shared.com,sourcedigit.com,telegraphindia.com##.adbox -moviechat.org##.adc -boards.4channel.org##.adc-resp -boards.4channel.org##.adc-resp-bg -ar15.com##.adcol -ancient.eu,fanatix.com,gamertweak.com,gematsu.com,videogamemods.com,worldhistory.org##.adcontainer -sumanasa.com##.adcontent -thegatewaypundit.com##.adcovery -thegatewaypundit.com##.adcovery-home-01 -thegatewaypundit.com##.adcovery-postbelow-01 -online-image-editor.com,thehindu.com,watcher.guru##.add -mid-day.com##.add-300x250 -mid-day.com##.add-970x250 -securityaffairs.com##.add-banner -buzz.ie,irishpost.com,theweekendsun.co.nz##.add-block -cricketcountry.com##.add-box -morningstar.in##.add-container -indianexpress.com##.add-first -watcher.guru##.add-header -ians.in##.add-inner -businessesview.com.au,holidayview.com.au,realestateview.com.au,ruralview.com.au##.add-item -zeenews.india.com##.add-placeholder -ndtv.com##.add-section -moneycontrol.com##.add-spot -media4growth.com##.add-text -brandingmag.com##.add-wrap -ndtv.com##.add-wrp -newindian.in##.add160x600 -newindian.in##.add160x600-right -muslimobserver.com##.add2 -projectorcentral.com##.addDiv2 -projectorcentral.com##.addDiv3 -ndtv.com##.add__txt -ndtv.com##.add__wrp -harpersbazaar.in##.add_box -ndtv.com##.add_dxt-non -longevity.technology,news18.com##.add_section -harpersbazaar.in##.add_wrapper -longevity.technology##.addvertisment -nesabamedia.com##.adfullwrap -fastcompany.com##.adhesive-banner -aish.com##.adholder-sidebar -auto-data.net##.adin -watchcartoononline.bz##.adkiss -boards.4channel.org##.adl -animalfactguide.com,msn.com,portlandmonthlymag.com,romsgames.net,sportsmediawatch.com##.adlabel -gemoo.com##.adlet_mobile -prokerala.com##.adm-unit -goldderby.com##.adma -brickset.com##.admin.buy -web-dev-qa-db-fra.com##.adn-ar -freepik.com##.adobe-coupon-container -freepik.com##.adobe-detail -freepik.com##.adobe-grid-design -flightglobal.com,thriftyfun.com##.adp -lol.ps##.adpage -vice.com##.adph -1sale.com,1v1.lol,7billionworld.com,9jaflaver.com,achieveronline.co.za,bestcrazygames.com,canstar.com.au,canstarblue.co.nz,cheapies.nz,climatechangenews.com,cryptonomist.ch,currencyrate.today,downloadtorrentfile.com,economictimes.com,energyforecastonline.co.za,esports.com,eventcinemas.co.nz,ezgif.com,flashx.tv,gamesadshopper.com,geo.tv,govtrack.us,gramfeed.com,hentaikun.com,hockeyfeed.com,i24news.tv,icons8.com,idiva.com,indiatimes.com,inspirock.com,investing.com,islamchannel.tv,m.economictimes.com,mangasect.com,marinetraffic.com,mb.com.ph,mega4upload.com,mehrnews.com,meta-calculator.com,mini-ielts.com,miningprospectus.co.za,motogp.com,mugshots.com,nbc.na,news.nom.co,nsfwyoutube.com,onlinerekenmachine.com,ozbargain.com.au,piliapp.com,readcomicsonline.ru,recipes.net,russia-insider.com,russian-faith.com,savevideo.me,sgcarmart.com,sherdog.com,straitstimes.com,teamblind.com,tehrantimes.com,tellerreport.com,thenews.com.pk,thestar.com.my,viamichelin.com,viamichelin.ie,vijesti.me,y8.com,yummy.ph##.ads -moneycontrol.com##.ads-320-50 -business-standard.com##.ads-align -dallasinnovates.com##.ads-article-body -digg.com##.ads-aside-rectangle -nationthailand.com##.ads-billboard -dnaindia.com,wionews.com##.ads-box-300x250 -wionews.com##.ads-box-300x300 -dnaindia.com,wionews.com##.ads-box-970x90 -dnaindia.com,wionews.com##.ads-box-d90-m300 -gosunoob.com,indianexpress.com,matrixcalc.org,phys.org,roblox.com,spotify.com,wccftech.com##.ads-container -thetruthaboutcars.com##.ads-fluid-wrap -spambox.xyz##.ads-four -fintech.tv##.ads-img -freeconvert.com##.ads-in-page -nationthailand.com##.ads-inarticle-2 -readcomicsonline.ru##.ads-large -kiz10.com##.ads-medium -theasianparent.com##.ads-open-placeholder -bangkokpost.com##.ads-related -business-standard.com##.ads-scripts -gameshub.com##.ads-slot -lowfuelmotorsport.com##.ads-stats -wallpapers.com##.ads-unit-fts -ndtv.com##.ads-wrp -bestcrazygames.com##.ads160600 -auto.hindustantimes.com##.adsHeight300x600 -tech.hindustantimes.com##.adsHeight720x90 -auto.hindustantimes.com##.adsHeight970x250 -dailyo.in##.adsWrp -radaris.com##.ads_160_600 -games2jolly.com##.ads_310_610_sidebar_new -kbb.com##.ads__container -kbb.com##.ads__container-kbbLockedAd -metro.co.uk##.ads__index__adWrapper--cz7QL -vccircle.com##.ads_ads__qsWIu -collegedunia.com##.ads_body_ad_code_container -mediapost.com##.ads_inline_640 -glanceoflife.com##.ads_margin -allevents.in##.ads_place_right -skyve.io##.ads_space -101soundboards.com##.ads_top_container_publift -adlice.com,informer.com,waqi.info##.adsbygoogle -harvardmagazine.com##.adsbygoogle-block -aitextpromptgenerator.com##.adsbyus_wrapper -gayvegas.com,looktothestars.org,nintandbox.net,plurk.com,rockpasta.com,thebarentsobserver.com,tolonews.com,webtor.io##.adsense -radaris.com##.adsense-responsive-bottom -temporary-phone-number.com##.adsense-top-728 -101soundboards.com##.adsense_matched_content -awesomeopensource.com##.adsense_uas -bolnews.com##.adsheading -nepallivetoday.com##.adsimage -search.b1.org##.adslabel -ev-database.org##.adslot_detail1 -ev-database.org##.adslot_detail2 -cdrab.com,offerinfo.net##.adslr -bolnews.com##.adspadding -downzen.com##.adt -makemytrip.com##.adtech-desktop -miamitodaynews.com##.adtext -mp1st.com##.adthrive -wdwmagic.com##.adthrive-homepage-header -wdwmagic.com##.adthrive-homepage-in_content_1 -quadraphonicquad.com##.adthrive-placeholder-header -quadraphonicquad.com##.adthrive-placeholder-static-sidebar -pinchofyum.com##.adthrive_header_ad -wdwmagic.com##.adunit-header -cooking.nytimes.com##.adunit_ad-unit__IhpkS -ip-address.org##.aduns -ip-address.org##.aduns2 -ip-address.org##.aduns6 -ansamed.info,baltic-course.com,futbol24.com,gatewaynews.co.za,gsmarena.com,gulfnews.com,idealista.com,jetphotos.com,karger.com,mangaku.vip,maritimejobs.com,newagebd.net,prohaircut.com,railcolornews.com,titter.com,zbani.com##.adv -blastingnews.com##.adv-box-content -healthleadersmedia.com##.adv-con -junauza.com##.adv-hd -48hills.org,audiobacon.net,bhamnow.com,clevercreations.org,cnaw2news.com,coinedition.com,coinquora.com,creativecow.net,elements.visualcapitalist.com,forexcracked.com,iconeye.com,kdnuggets.com,laprensalatina.com,londonnewsonline.co.uk,manageditmag.co.uk,mondoweiss.net,ottverse.com,overclock3d.net,smallarmsreview.com,sportsspectrum.com,sundayworld.co.za,tampabayparenting.com,theaudiophileman.com##.adv-link -sneakernews.com##.adv-parent -chaseyoursport.com##.adv-slot -greencarreports.com,motorauthority.com##.adv-spacer -worldarchitecture.org##.adv1WA1440 -futbol24.com##.adv2 -worldarchitecture.org##.adv2WA1440 -coinalpha.app##.advBannerDiv -yesasia.com##.advHr -hurriyetdailynews.com##.advMasthead -imagetotext.info##.adv_text -operawire.com##.advads-post_ads -barkinganddagenhampost.co.uk,becclesandbungayjournal.co.uk,blogto.com,burymercury.co.uk,cambstimes.co.uk,cardealermagazine.co.uk,crimemagazine.com,dailyedge.ie,datalounge.com,derehamtimes.co.uk,dermnetnz.org,dissmercury.co.uk,dunmowbroadcast.co.uk,eadt.co.uk,eastlondonadvertiser.co.uk,economist.com,edp24.co.uk,elystandard.co.uk,etf.com,eveningnews24.co.uk,exmouthjournal.co.uk,fakenhamtimes.co.uk,football.co.uk,gearspace.com,gematsu.com,greatyarmouthmercury.co.uk,hackneygazette.co.uk,hamhigh.co.uk,hertsad.co.uk,huntspost.co.uk,icaew.com,ilfordrecorder.co.uk,iol.co.za,ipswichstar.co.uk,islingtongazette.co.uk,lgr.co.uk,lowestoftjournal.co.uk,maltapark.com,midweekherald.co.uk,morningstar.co.uk,newhamrecorder.co.uk,newstalkzb.co.nz,northnorfolknews.co.uk,northsomersettimes.co.uk,pinkun.com,proxcskiing.com,romfordrecorder.co.uk,royston-crow.co.uk,saffronwaldenreporter.co.uk,sidmouthherald.co.uk,stowmarketmercury.co.uk,stylecraze.com,sudburymercury.co.uk,tbivision.com,the42.ie,thecomet.net,thedrum.com,thejournal.ie,tineye.com,trucksplanet.com,videogameschronicle.com,wattonandswaffhamtimes.co.uk,whtimes.co.uk,wisbechstandard.co.uk,wtatennis.com,wymondhamandattleboroughmercury.co.uk##.advert -saucemagazine.com##.advert-elem -saucemagazine.com##.advert-elem-1 -gozofinder.com##.advert-iframe -farminguk.com##.advert-word -who-called.co.uk##.advertLeftBig -empireonline.com,graziadaily.co.uk##.advertWrapper_billboard__npTvz -m.thewire.in##.advert_text1 -momjunction.com,stylecraze.com##.advertinside -freeaddresscheck.com,freecallerlookup.com,freecarrierlookup.com,freeemailvalidator.com,freegenderlookup.com,freeiplookup.com,freephonevalidator.com,kpopping.com,zimbabwesituation.com##.advertise -gpfans.com##.advertise-panel -cointelegraph.com##.advertise-with-us-link_O9rIX -salon.com##.advertise_text -aan.com,aarp.org,additudemag.com,animax-asia.com,apkforpc.com,audioxpress.com,axn-asia.com,bravotv.com,citiblog.co.uk,cnbctv18.com,cnn59.com,controleng.com,downzen.com,dw.com,dwturkce.com,escapeatx.com,foodsforbetterhealth.com,gemtvasia.com,hcn.org,huffingtonpost.co.uk,huffpost.com,inqld.com.au,inspiredminds.de,investmentnews.com,jewishworldreview.com,legion.org,lifezette.com,livestly.com,magtheweekly.com,moneyland.ch,offshore-energy.biz,onetvasia.com,oxygen.com,pch.com,philosophynow.org,prospectmagazine.co.uk,readamericanfootball.com,readarsenal.com,readastonvilla.com,readbasketball.com,readbetting.com,readbournemouth.com,readboxing.com,readbrighton.com,readbundesliga.com,readburnley.com,readcars.co,readceltic.com,readchampionship.com,readchelsea.com,readcricket.com,readcrystalpalace.com,readeverton.com,readeverything.co,readfashion.co,readfilm.co,readfood.co,readfootball.co,readgaming.co,readgolf.com,readhorseracing.com,readhuddersfield.com,readhull.com,readinternationalfootball.com,readlaliga.com,readleicester.com,readliverpoolfc.com,readmancity.com,readmanutd.com,readmiddlesbrough.com,readmma.com,readmotorsport.com,readmusic.co,readnewcastle.com,readnorwich.com,readnottinghamforest.com,readolympics.com,readpl.com,readrangers.com,readrugbyunion.com,readseriea.com,readshowbiz.co,readsouthampton.com,readsport.co,readstoke.com,readsunderland.com,readswansea.com,readtech.co,readtennis.co,readtottenham.com,readtv.co,readussoccer.com,readwatford.com,readwestbrom.com,readwestham.com,readwsl.com,reason.com,redvoicemedia.com,revolver.news,rogerebert.com,smithsonianmag.com,streamingmedia.com,the-scientist.com,thecatholicthing.org,therighthairstyles.com,topsmerch.com,weatherwatch.co.nz,wheels.ca,whichcar.com.au,woot.com,worldofbitco.in##.advertisement -topsmerch.com##.advertisement--6 -topsmerch.com##.advertisement-2-box -devdiscourse.com##.advertisement-area -business-standard.com##.advertisement-bg -atlasobscura.com##.advertisement-disclaimer -radiocity.in##.advertisement-horizontal-small -trumparea.com##.advertisement-list -atlasobscura.com##.advertisement-shadow -mid-day.com,radiocity.in##.advertisement-text -comedy.com##.advertisement-video-slot -structurae.net##.advertisements -scmp.com##.advertisers -afrsmartinvestor.com.au,afternoondc.in,allmovie.com,allmusic.com,bolnews.com,brw.com.au,gq.co.za,imageupscaler.com,mja.com.au,ocregister.com,online-convert.com,orangecounty.com,petrolplaza.com,pornicom.com,premier.org.uk,premierchristianity.com,premierchristianradio.com,premiergospel.org.uk,radio.com,sidereel.com,spine-health.com,yourdictionary.com##.advertising -theloadout.com##.advertising_slot_video_player -gadgets360.com##.advertisment -satdl.com##.advertizement -hurriyetdailynews.com##.advertorial-square-type-1 -148apps.com##.advnote -swisscows.com##.advrts--text -bearingarms.com,hotair.com,pjmedia.com,redstate.com,townhall.com,twitchy.com##.advs -allevents.in##.advt-text -groovyhistory.com,lifebuzz.com,toocool2betrue.com,videogameschronicle.com##.adwrapper -animesuge.to,aniwave.to##.adx -mail.google.com##.aeF > .nH > .nH[role="main"] > .aKB -revolver.news##.af-slim-promo -promocodie.com##.afc-container -real-fix.com##.afc_popup -fandom.com##.aff-unit__wrapper -f1i.com##.affiche -hindustantimes.com##.affilaite-widget -linuxize.com##.affiliate -romsgames.net##.affiliate-container -thebeet.com##.affiliate-disclaimer -usatoday.com##.affiliate-widget-wrapper -topsmerch.com##.affix-placeholder -jambase.com##.affixed-sidebar-adzzz -trovit.ae,trovit.be,trovit.ca,trovit.ch,trovit.cl,trovit.co.cr,trovit.co.id,trovit.co.in,trovit.co.ke,trovit.co.nz,trovit.co.uk,trovit.co.ve,trovit.co.za,trovit.com,trovit.com.br,trovit.com.co,trovit.com.ec,trovit.com.hk,trovit.com.kw,trovit.com.mx,trovit.com.pa,trovit.com.pe,trovit.com.pk,trovit.com.qa,trovit.com.sg,trovit.com.tr,trovit.com.tw,trovit.com.uy,trovit.com.vn,trovit.cz,trovit.dk,trovit.es,trovit.fr,trovit.hu,trovit.ie,trovit.it,trovit.jp,trovit.lu,trovit.ma,trovit.my,trovit.ng,trovit.nl,trovit.no,trovit.ph,trovit.pl,trovit.pt,trovit.ro,trovit.se,trovitargentina.com.ar##.afs-container-skeleton -promocodie.com##.afs-wrapper -domainnamewire.com##.after-header -insidemydream.com##.afxshop -venea.net##.ag_banner -venea.net##.ag_line -nexusmods.com##.agroup -picnob.com,piokok.com,pixwox.com##.ah-box -stripes.com##.ahm-rotd -techpp.com##.ai-attributes -thegatewaypundit.com##.ai-dynamic -radiomixer.net##.ai-placement -uploadvr.com##.ai-sticky-widget -androidpolice.com,constructionreviewonline.com,cryptobriefing.com,dereeze.com,tyretradenews.co.uk##.ai-track -getdroidtips.com,journeybytes.com,thebeaverton.com,thisisanfield.com,unfinishedman.com,windowsreport.com##.ai-viewport-1 -9to5linux.com,anoopcnair.com,apkmirror.com,askpython.com,beckernews.com,bizpacreview.com,boxingnews24.com,browserhow.com,constructionreviewonline.com,crankers.com,hard-drive.net,journeybytes.com,maxblizz.com,net-load.com,planetanalog.com,roadaheadonline.co.za,theamericantribune.com,windowslatest.com,yugatech.com##.ai_widget -petitchef.com,station-drivers.com,tennistemple.com##.akcelo-wrapper -allkpop.com##.akp2_wrap -yts.mx##.aksdj483csd -lingohut.com##.al-board -lyricsmode.com##.al-c-banner -wikihow.com##.al_method -altfi.com##.alert -accessnow.org##.alert-banner -apkmb.com##.alert-noty-download -rapidsave.com##.alert.col-md-offset-2 -peoplematters.in##.alertBar -majorgeeks.com##.alford > tbody > tr -shortlist.com##.align-xl-content-between -livejournal.com##.allbanners -silverprice.org##.alt-content -antimusic.com##.am-center -music-news.com,thebeet.com##.amazon -orschlurch.net##.amazon-wrapper -indiatimes.com##.amazonProductSidebar -tech.hindustantimes.com##.amazonWidget -americafirstreport.com##.ameri-before-content -closerweekly.com,intouchweekly.com,lifeandstylemag.com,usmagazine.com##.ami-video-placeholder -faroutmagazine.co.uk##.amp-next-page-separator -cyberciti.biz##.amp-wp-4ed0dd1 -thepostemail.com##.amp-wp-b194b9a -letras.com##.an-pub -adspecials.us,ajanlatok.hu,akcniletak.cz,catalogosofertas.cl,catalogosofertas.com.ar,catalogosofertas.com.br,catalogosofertas.com.co,catalogosofertas.com.ec,catalogosofertas.com.mx,catalogosofertas.com.pe,catalogueoffers.co.uk,catalogueoffers.com.au,flugblattangebote.at,flyerdeals.ca,folderz.nl,folhetospromocionais.com,folletosofertas.es,gazetki.pl,kundeavisogtilbud.no,ofertelecatalog.ro,offertevolantini.it,promocatalogues.fr,promotiez.be,promotions.ae,prospektangebote.de,reklambladerbjudanden.se,tilbudsaviseronline.dk##.anchor-wrapper -streetdirectory.com##.anchor_bottom -rok.guide##.ancr-sticky -rok.guide##.ancr-top-spacer -eprinkside.com##.annons -phonearena.com##.announcements -yts.mx##.aoiwjs -motor1.com##.ap -chargedretail.co.uk,foodstuffsa.co.za,thinkcomputers.org##.apPluginContainer -insideevs.com,motor1.com##.apb -thetoyinsider.com##.apb-adblock -eurogamer.net##.apester_block -pd3.gg##.app-ad-placeholder -d4builds.gg##.app__ad__leaderboard -classicfm.com##.apple_music -happymod.com##.appx -icon-icons.com##.apu -icon-icons.com##.apu-mixed-packs -chron.com,ctinsider.com,ctpost.com,middletownpress.com,mysanantonio.com,seattlepi.com,sfgate.com##.ar16-9 -ajc.com,bostonglobe.com,daytondailynews.com,journal-news.com,springfieldnewssun.com##.arc_ad -adn.com,businessoffashion.com,irishtimes.com##.arcad-feature -bloomberglinea.com##.arcad-feature-custom -1news.co.nz,actionnewsjax.com,boston25news.com,easy93.com,fox23.com,hits973.com,kiro7.com,wftv.com,whio.com,wpxi.com,wsbradio.com,wsbtv.com,wsoctv.com##.arcad_feature -theepochtimes.com##.arcanum-widget -necn.com##.archive-ad__full-width -whatculture.com##.area-x__large -arstechnica.com##.ars-component-buy-box -thehindu.com##.artShrEnd -ggrecon.com##.artSideBgBox -ggrecon.com##.artSideBgBoxBig -ggrecon.com##.artSideWrapBoxSticky -scmp.com##.article--sponsor -thelocal.at,thelocal.ch,thelocal.de,thelocal.es,thelocal.fr,thelocal.it,thelocal.no##.article--sponsored -thehindu.com##.article-ad -worldsoccertalk.com##.article-banner-desktop -wishesh.com##.article-body-banner -manilatimes.net##.article-body-content > .fixed-gray-color -crn.com##.article-cards-ad -coindesk.com##.article-com-wrapper -kmbc.com,wlky.com##.article-content--body-wrapper-side-floater -lrt.lt##.article-content__inline-block -firstforwomen.com##.article-content__sponsored_tout_ad___1iSJm -eonline.com##.article-detail__right-rail--topad -eonline.com##.article-detail__segment-ad -christianpost.com##.article-divider -purewow.com##.article-in-content-ad -squaremile.com##.article-leaderboard-wrapper -scoop.co.nz##.article-left-box -slashdot.org##.article-nel-12935 -spectator.com.au##.article-promo -iai.tv##.article-sidebar-adimage -phillyvoice.com##.article-sponsor-sticky -thelocal.com,thelocal.dk,thelocal.se##.article-sponsored -people.com##.articleContainer__rail -audizine.com##.articleIMG -accessonline.com##.article__content__desktop_banner -seafoodsource.com##.article__in-article-ad -financemagnates.com##.article__mpu-banner -empireonline.com##.article_adContainer--filled__vtAYe -graziadaily.co.uk##.article_adContainer__qr_Hd -pianu.com##.article_add -empireonline.com##.article_billboard__X_edx -ubergizmo.com##.article_card_promoted -indiatimes.com##.article_first_ad -wikiwand.com##.article_footerStickyAd__wvdui -news18.com##.article_mad -wikiwand.com##.article_sectionAd__rMyBc -lasvegassun.com##.articletoolset -news.artnet.com##.artnet-ads-ad -arcadespot.com##.as-incontent -arcadespot.com##.as-label -arcadespot.com##.as-unit -theinertia.com##.asc-ad -asianjournal.com##.asian-widget -designboom.com##.aside-adv-box -pickmypostcode.com##.aside-right.aside -goal.com##.aside_ad-rail__cawG6 -decrypt.co##.aspect-video -postandcourier.com,theadvocate.com##.asset-breakout-ads -macleans.ca##.assmbly-ad-block -releasestv.com##.ast-above-header-wrap -animalcrossingworld.com##.at-sidebar-1 -guidingtech.com##.at1 -guidingtech.com##.at2 -fedex.com##.atTile1 -timesnownews.com,zoomtventertainment.com##.atfAdContainer -atptour.com##.atp_ad -atptour.com##.atp_partners -miragenews.com##.attachment-wt450_250 -audiobacon.net##.audio-widget.et_pb_widget -darko.audio##.audio_widget -mbl.is##.augl -thepopverse.com##.autoad -iai.tv##.auw--container -theblueoceansgroup.com##.av-label -hostingreviews24.com##.av_pop_modals_1 -tutsplus.com##.avert -airfactsjournal.com##.avia_image -kisscenter.net,kissorg.net##.avm -whatsondisneyplus.com##.awac-wrapper -tempr.email##.awrapper -siasat.com##.awt_ad_code -gulte.com##.awt_side_sticky -auctionzip.com##.az-header-ads-container -conservativefiringline.com##.az6l2zz4 -coin360.com##.azJOX6 -coingraph.us,hosty.uprwssp.org##.b -bnnbloomberg.ca##.b-ads-custom -dailyvoice.com##.b-banner -ownedcore.com##.b-below-so-content -informer.com##.b-content-btm > table[style="margin-left: -5px"] -hypestat.com##.b-error -beaumontenterprise.com,chron.com,ctinsider.com,ctpost.com,expressnews.com,houstonchronicle.com,lmtonline.com,middletownpress.com,mrt.com,mysanantonio.com,newstimes.com,nhregister.com,registercitizen.com,seattlepi.com,sfchronicle.com,sfgate.com,stamfordadvocate.com,thehour.com,timesunion.com##.b-gray300.bt -beaumontenterprise.com,chron.com,ctinsider.com,ctpost.com,expressnews.com,houstonchronicle.com,lmtonline.com,middletownpress.com,mrt.com,mysanantonio.com,newstimes.com,nhregister.com,registercitizen.com,seattlepi.com,sfchronicle.com,sfgate.com,stamfordadvocate.com,thehour.com,timesunion.com##.b-gray300.bt.bb -beaumontenterprise.com,chron.com,ctinsider.com,ctpost.com,expressnews.com,houstonchronicle.com,lmtonline.com,middletownpress.com,mrt.com,mysanantonio.com,newstimes.com,nhregister.com,registercitizen.com,seattlepi.com,sfchronicle.com,sfgate.com,stamfordadvocate.com,thehour.com,timesunion.com##.b-gray300.md\:bt -beaumontenterprise.com,chron.com,ctinsider.com,ctpost.com,expressnews.com,houstonchronicle.com,lmtonline.com,middletownpress.com,mrt.com,mysanantonio.com,newstimes.com,nhregister.com,registercitizen.com,seattlepi.com,sfchronicle.com,sfgate.com,stamfordadvocate.com,thehour.com,timesunion.com##.b-gray300.md\:bt.md\:bb -china.ahk.de##.b-header__banner -dnserrorassist.att.net,searchguide.level3.com##.b-links -ownedcore.com##.b-postbit-w -kyivpost.com##.b-title -cyberdaily.au,investordaily.com.au,mortgagebusiness.com.au##.b-topLeaderboard -bizcommunity.com##.b-topbanner -ssyoutube.com##.b-widget-left -maritimeprofessional.com##.b300x250 -coin360.com##.b5BiRm -crypto.news,nft.news##.b6470de94dc -iol.co.za##.bDEZXQ -independent.co.uk##.bXYFQI.dAHemH -copilot.microsoft.com##.b_ad -vidcloud9.me##.backdrop -kitguru.net,mcvuk.com,technologyx.com,thessdreview.com##.background-cover -ign.com##.background-image.content-block -allkeyshop.com,cdkeyit.it,cdkeynl.nl,cdkeypt.pt,clavecd.es,goclecd.fr,keyforsteam.de##.background-link-left -allkeyshop.com,cdkeyit.it,cdkeynl.nl,cdkeypt.pt,clavecd.es,goclecd.fr,keyforsteam.de##.background-link-right -gayexpress.co.nz##.backstretch -izismile.com##.ban_top -saabplanet.com##.baner -rhumbarlv.com##.banlink -1001games.com,3addedminutes.com,alistapart.com,anguscountyworld.co.uk,arcadebomb.com,armageddonexpo.com,banburyguardian.co.uk,bedfordtoday.co.uk,biggleswadetoday.co.uk,bikechatforums.com,birminghamworld.uk,blackpoolgazette.co.uk,bristolworld.com,bsc.news,btcmanager.com,bucksherald.co.uk,burnleyexpress.net,buxtonadvertiser.co.uk,ca-flyers.com,caixinglobal.com,caribvision.tv,chad.co.uk,cmo.com.au,coryarcangel.com,csstats.gg,daventryexpress.co.uk,derbyshiretimes.co.uk,derbyworld.co.uk,derryjournal.com,dewsburyreporter.co.uk,dominicantoday.com,doncasterfreepress.co.uk,elyricsworld.com,euobserver.com,eurochannel.com,exalink.fun,falkirkherald.co.uk,farminglife.com,fifetoday.co.uk,filmmakermagazine.com,flvtomp3.cc,footballtradedirectory.com,forexpeacearmy.com,funpic.hu,gartic.io,garticphone.com,glasgowworld.com,gr8.cc,gsprating.com,halifaxcourier.co.uk,harboroughmail.co.uk,harrogateadvertiser.co.uk,hartlepoolmail.co.uk,hemeltoday.co.uk,hortidaily.com,hucknalldispatch.co.uk,hyipexplorer.com,ibtimes.co.in,ibtimes.co.uk,imedicalapps.com,insidefutbol.com,ipwatchdog.com,irishpost.com,israelnationalnews.com,japantimes.co.jp,jpost.com,kissasians.org,koreaherald.com,lancasterguardian.co.uk,laserpointerforums.com,leightonbuzzardonline.co.uk,lep.co.uk,lincolnshireworld.com,liverpoolworld.uk,livescore.in,londonworld.com,lutontoday.co.uk,manchesterworld.uk,marinelink.com,meltontimes.co.uk,mercopress.com,miltonkeynes.co.uk,mmorpg.com,mob.org,nationalworld.com,newcastleworld.com,newryreporter.com,news.am,news.net,newsletter.co.uk,northamptonchron.co.uk,northantstelegraph.co.uk,northernirelandworld.com,northumberlandgazette.co.uk,nottinghamworld.com,oncyprus.com,onlineconvertfree.com,peterboroughtoday.co.uk,pharmatimes.com,portsmouth.co.uk,powerboat.world,pulsesports.co.ke,pulsesports.ng,pulsesports.ug,reversephonesearch.com.au,roblox.com,rotherhamadvertiser.co.uk,scientificamerican.com,scotsman.com,shieldsgazette.com,smartcarfinder.com,speedcafe.com,sputniknews.com,starradionortheast.co.uk,stornowaygazette.co.uk,subscene.com,sumodb.com,sunderlandecho.com,surreyworld.co.uk,sussexexpress.co.uk,sweeting.org,swzz.xyz,tass.com,thefanhub.com,thefringepodcast.com,thehun.com,thescarboroughnews.co.uk,thesouthernreporter.co.uk,thestar.co.uk,timeslive.co.za,tmi.me,totallysnookered.com,townhall.com,toyworldmag.co.uk,unblockstreaming.com,vibilagare.se,vloot.io,wakefieldexpress.co.uk,walesworld.com,warwickshireworld.com,weatheronline.co.uk,weekly-ads.us,wigantoday.net,worksopguardian.co.uk,worldtimeserver.com,xbiz.com,ynetnews.com,yorkshireeveningpost.co.uk,yorkshirepost.co.uk##.banner -papermag.com##.banner--ad__placeholder -dayspedia.com##.banner--aside -onlineradiobox.com##.banner--header -oilprice.com##.banner--inPage -puzzlegarage.com##.banner--inside -dayspedia.com##.banner--main -onlineradiobox.com##.banner--vertical -online-convert.com##.banner-ad-size -headlineintime.com##.banner-add -freepik.com##.banner-adobe -dailysocial.id##.banner-ads -schoolguide.co.za##.banner-bar -schoolguide.co.za##.banner-bar-bot -pretoria.co.za##.banner-bg -dailycoffeenews.com##.banner-box -theshovel.com.au##.banner-col -countdown.co.nz,jns.org,nscreenmedia.com,whoscored.com##.banner-container -soccerway.com##.banner-content -insidebitcoins.com##.banner-cta-wrapper -weatherin.org##.banner-desktop-full-width -jpost.com##.banner-h-270 -jpost.com##.banner-h-880 -news12.com##.banner-homePageSidebar-area -411mania.com##.banner-homebottom-all -security.org##.banner-img-container -wireshark.org##.banner-img-downloads -balkangreenenergynews.com##.banner-l -amoledo.com##.banner-link -news12.com##.banner-middleboard-area -weatherin.org##.banner-mobile -bsc.news,web3wire.news##.banner-one -timesofisrael.com##.banner-placeholder -tweakreviews.com##.banner-placement__article -balkangreenenergynews.com##.banner-premium -bikepacking.com##.banner-sidebar -livescores.biz##.banner-slot-filled -vedantu.com##.banner-text -historydaily.org,israelnationalnews.com,news12.com,pwinsider.com,spaceref.com,usahealthcareguide.com##.banner-top -wpneon.com##.banner-week -news.net##.banner-wr -admonsters.com##.banner-wrap -primewire.link##.banner-wrapper -depositfiles.com,dfiles.eu##.banner1 -gsprating.com##.banner2 -coinalpha.app##.bannerAdv -britsabroad.com##.bannerBox -arras.io##.bannerHolder -securenetsystems.net##.bannerPrerollArea -mumbrella.com.au##.bannerSide -thejc.com##.banner__ -thejc.com##.banner__article -financemagnates.com##.banner__outer-wrapper -forexlive.com,tass.com##.banner__wrapper -asmag.com##.banner_ab -hannity.com,inspiredot.net##.banner_ad -snopes.com##.banner_ad_between_sections -asmag.com##.banner_box -news.am##.banner_click -dosgamesarchive.com##.banner_container -barnstormers.com##.banner_holder -camfuze.com##.banner_inner -livecharts.co.uk##.banner_long -barnstormers.com##.banner_mid -weatheronline.co.uk##.banner_oben -barnstormers.com##.banner_rh -hwcooling.net,nationaljeweler.com,radioyacht.com##.banner_wrapper -wdwmagic.com##.bannerad_300px -mamul.am##.bannerb -gamertweak.com##.bannerdiv -flatpanelshd.com##.bannerdiv_twopage -arcadebomb.com##.bannerext -2merkato.com,2mfm.org,aps.dz,armyrecognition.com,cbn.co.za,dailynews.co.tz,digitalmediaworld.tv,eprop.co.za,finchannel.com,forums.limesurvey.org,i-programmer.info,killerdirectory.com,pamplinmedia.com,radiolumiere.org,rapidtvnews.com,southfloridagaynews.com,thepatriot.co.bw,usedcarnews.com##.bannergroup -saigoneer.com##.bannergroup-main -convertingcolors.com##.bannerhead_desktop -asianmirror.lk,catholicregister.org,crown.co.za,marengo-uniontimes.com,nikktech.com##.banneritem -mir.az##.bannerreklam -domainnamewire.com,i24news.tv,marinetechnologynews.com,maritimepropulsion.com,mumbrella.com.au,mutaz.pro,paste.fo,paste.pm,pasteheaven.com,petapixel.com,radiopaedia.org,rapidtvnews.com,telesurtv.net,travelpulse.com##.banners -theportugalnews.com##.banners-250 -rt.com##.banners__border -unixmen.com##.banners_home -m.economictimes.com##.bannerwrapper -barrons.com##.barrons-body-ad-placement -marketscreener.com##.bas -teamfortress.tv##.bau -propublica.org##.bb-ad -doge-faucet.com##.bbb -britannica.com##.bc-article-inline-dialogue -dissentmagazine.org##.bc_random_banner -h-online.com##.bcadv -digminecraft.com##.bccace1b -fakenamegenerator.com##.bcsw -boldsky.com##.bd-header-ad -userbenchmark.com##.be-lb-page-top-banner -chowhound.com,glam.com,moneydigest.com,outdoorguide.com,svg.com,thelist.com,wrestlinginc.com##.before-ad -renonr.com##.below-header-widgets -theinertia.com##.below-post-ad -lonestarlive.com##.below-toprail -gobankingrates.com##.bestbanks-slidein -aiscore.com##.bet365 -nationalworld.com##.bfQGof -mindbodygreen.com##.bftiFX -theepochtimes.com##.bg-\[\#f8f8f8\] -hotnewhiphop.com##.bg-ad-bg-color -bgr.com##.bg-black -whatismyisp.com##.bg-blue-50 -republicworld.com##.bg-f0f0f0 -amgreatness.com##.bg-gray-200.mx-auto -kongregate.com##.bg-gray-800.mx-4.p-1 -chron.com,greenwichtime.com,houstonchronicle.com,mysanantonio.com,seattlepi.com,sfchronicle.com,sfgate.com,thetelegraph.com,timesunion.com##.bg-gray100.mb32 -wccftech.com##.bg-horizontal -wccftech.com##.bg-horizontal-2 -imagetotext.info##.bg-light.mt-2.text-center -charlieintel.com,dexerto.com##.bg-neutral-grey-4.items-center -charlieintel.com,dexerto.com##.bg-neutral-grey.justify-center -businessinsider.in##.bg-slate-100 -wccftech.com##.bg-square -wccftech.com##.bg-square-mobile -wccftech.com##.bg-square-mobile-without-bg -ewn.co.za##.bg-surface-03.text-content-secondary.space-y-\[0\.1875rem\].p-spacing-s.flex.flex-col.w-max.mx-auto -wccftech.com##.bg-vertical -copyprogramming.com##.bg-yellow-400 -overclock3d.net##.bglink -bhamnow.com##.bhamn-adlabel -bhamnow.com##.bhamn-story -investmentweek.co.uk##.bhide-768 -blackhatworld.com##.bhw-advertise-link -blackhatworld.com##.bhw-banners -viva.co.nz##.big-banner -ipolitics.ca,qpbriefing.com##.big-box -cbc.ca##.bigBoxContainer -newzit.com##.big_WcxYT -gamemodding.com##.big_banner -hellenicshippingnews.com##.bigbanner -advocate.com##.bigbox_top_ad-wrap -scienceabc.com##.bigincontentad -snokido.com##.bigsquare -9gag.com,blackpoolgazette.co.uk,bundesliga.com,farminglife.com,hotstar.com,ipolitics.ca,lep.co.uk,northamptonchron.co.uk,qpbriefing.com,scotsman.com,shieldsgazette.com,talksport.com,the-sun.com,thescottishsun.co.uk,thestar.co.uk,thesun.co.uk,thesun.ie##.billboard -nypost.com,pagesix.com##.billboard-overlay -electronicproducts.com##.billboard-wrap -weatherpro.com##.billboard-wrapper -motorcycle.com,thetruthaboutcars.com,upgradedhome.com##.billboardSize -dev.to##.billboard[data-type-of="external"] -techspot.com##.billboard_placeholder_min -netweather.tv##.billheight -bundesliga.com##.bl-broadcaster -softonic.com##.black-friday-ads -ehftv.com##.blackPlayer -nowsci.com##.black_overlay -tvmaze.com##.blad -fastpic.ru##.bleft -kottke.org##.bling-title -wearedore.com##.bloc-pub -rpgsite.net##.block -soundonsound.com##.block---managed -worldviewweekend.com##.block--advertisement -analyticsinsight.net##.block-10 -club386.com##.block-25 -club386.com##.block-30 -club386.com##.block-39 -megagames.com##.block-4 -club386.com##.block-41 -crash.net##.block-ad-manager -thebaltimorebanner.com##.block-ad-zone -autocar.co.uk##.block-autocar-ads-lazyloaded-mpu2 -autocar.co.uk##.block-autocar-ads-mpu-flexible1 -autocar.co.uk##.block-autocar-ads-mpu-flexible2 -autocar.co.uk##.block-autocar-ads-mpu1 -thescore1260.com##.block-content > a[href*="sweetdealscumulus.com"] -indysmix.com,wzpl.com##.block-content > a[href^="https://sweetjack.com/local"] -webbikeworld.com##.block-da -whosdatedwho.com##.block-global-adDFP_HomeFooter -mondoweiss.net##.block-head-c -newsweek.com##.block-ibtmedia-dfp -endocrineweb.com,practicalpainmanagement.com##.block-oas -kaotic.com##.block-toplist -9to5linux.com##.block-widget -worldtimebuddy.com##.block2 -macmusic.org##.block440Adv -betaseries.com##.blockPartner -soccerway.com##.block_ad -informer.com##.block_ad1 -myrealgames.com##.block_adv_mix_top2 -gametracker.com##.blocknewnopad -simkl.com##.blockplacecente -wowhead.com##.blocks -mail.com##.blocks-3 -wowway.net##.blocks_container-size_containerSize -plainenglish.io##.blog-banner-container -failory.com##.blog-column-ad -oxygen.com,syfy.com##.blog-post-section__zergnet -blogto.com##.blogto-sticky-banner -manhwaindo.id##.blox -bescore.com##.bn -firstpost.com##.bn-add -savefree.in,surattimes.com##.bn-content -nilechronicles.com##.bn-lg-sidebar -snow-forecast.com,weather-forecast.com##.bn-placeholder -roll20.net##.bna -gearspace.com##.bnb--inline -gearspace.com##.bnb-container -bnonews.com##.bnone-widget -evertiq.com,mediamanager.co.za##.bnr -thecompleteuniversityguide.co.uk##.bnr_out -armenpress.am##.bnrcontainer -apkmody.io##.body-fixed-footer -saharareporters.com##.body-inject -boingboing.net##.boing-amp-triple13-amp-1 -boingboing.net##.boing-homepage-after-first-article-in-list -boingboing.net##.boing-leaderboard-below-menu -boingboing.net##.boing-primis-video-in-article-content -btcmanager.com##.boo_3oo_6oo -cmo.com.au##.boombox -tomsguide.com##.bordeaux-anchored-container -tomsguide.com##.bordeaux-slot -everydayrussianlanguage.com##.border -washingtonpost.com##.border-box.dn-hp-sm-to-mx -washingtonpost.com##.border-box.dn-hp-xs -thedailymash.co.uk##.border-brand -standardmedia.co.ke##.border-thick-branding -myanimelist.net##.border_top -appleinsider.com##.bottom -blockchair.com##.bottom--buttons-container -downforeveryoneorjustme.com,health.clevelandclinic.org##.bottom-0.fixed -indiatimes.com##.bottom-ad-height -reverso.net##.bottom-horizontal -photographyreview.com##.bottom-leaderboard -dappradar.com##.bottom-networks -codeproject.com##.bottom-promo -huffpost.com##.bottom-right-sticky-container -crn.com##.bottom-section -cnbctv18.com##.bottom-sticky -gamingdeputy.com##.bottom-sticky-offset -coincodex.com##.bottom4 -auto.hindustantimes.com##.bottomSticky -softicons.com##.bottom_125_block -softicons.com##.bottom_600_250_block -imgtaxi.com##.bottom_abs -collive.com##.bottom_leaderboard -allmonitors24.com,streamable.com##.bottombanner -arcadebomb.com##.bottombox -timesofindia.com##.bottomnative -canonsupports.com##.box -filmbooster.com,ghacks.net##.box-banner -mybroadband.co.za##.box-sponsored -kiz10.com##.box-topads-x2 -fctables.com##.box-width > .hidden-xs -wahm.com##.box2 -flashscore.co.za##.boxOverContent--a -tribunnews.com##.box__reserved -flipline.com##.box_grey -flipline.com##.box_grey_bl -flipline.com##.box_grey_br -flipline.com##.box_grey_tl -flipline.com##.box_grey_tr -functions-online.com##.box_wide -kiz10.com##.boxadsmedium -bolavip.com,worldsoccertalk.com##.boxbanner_container -retailgazette.co.uk##.boxzilla-overlay -retailgazette.co.uk##.boxzilla-popup-advert -wbur.org##.bp--native -wbur.org##.bp--outer -wbur.org##.bp--rec -wbur.org##.bp--responsive -wbur.org##.bp-label -slickdeals.net##.bp-p-adBlock -businessplus.ie##.bp_billboard_single -petkeen.com##.br-10 -bing.com##.br-poleoffcarousel -eightieskids.com,inherentlyfunny.com##.break -breakingbelizenews.com##.break-target -breakingbelizenews.com##.break-widget -broadsheet.com.au##.breakout-section-inverse -brobible.com##.bro_caffeine_wrap -brobible.com##.bro_vidazoo_wrap -moco360.media##.broadstreet-story-ad-text -vaughn.live##.browsePageAbvs300x600 -techpp.com##.brxe-shortcode -christianpost.com##.bs-article-cell -moco360.media##.bs_zones -sslshopper.com##.bsaStickyLeaderboard -arydigital.tv,barakbulletin.com##.bsac -doge-faucet.com##.bspot -businesstoday.in##.btPlyer -autoblog.com##.btf-native -cricwaves.com##.btm728 -snaptik.app##.btn-download-hd[data-ad="true"] -files.im##.btn-success -sbenny.com##.btnDownload5 -pollunit.com##.btn[href$="?feature=ads"] -youloveit.com##.btop -lifestyleasia.com##.btt-top-add-section -business-standard.com##.budgetWrapper -bulinews.com##.bulinews-ad -frankspeech.com##.bunny-banner -businessmirror.com.ph##.busin-after-content -businessmirror.com.ph##.busin-before-content -business2community.com##.busin-coinzilla-after-content -business2community.com##.busin-news-placement-2nd-paragraph -switchboard.com##.business_premium_results -imac-torrents.com##.button -thisismoney.co.uk##.button-style > [href] -abbaspc.net##.buttonPress-116 -overclock.net##.buy-now -coinalpha.app##.buyTokenExchangeDiv -bobvila.com##.bv-unit-wrapper -wgnsradio.com##.bw-special-image -wgnsradio.com##.bw-special-image-wrapper -scalemates.com##.bwx.hrspb -forbes.com.au##.bz-viewability-container -insurancejournal.com##.bzn -coingraph.us,hosty.uprwssp.org##.c -globalnews.ca,stuff.tv##.c-ad -stuff.tv##.c-ad--mpu-bottom -stuff.tv##.c-ad--mpu-top -theglobeandmail.com##.c-ad-sticky -globalnews.ca##.c-adChoices -zdnet.com##.c-adDisplay_container_incontent-all-top -legit.ng,tuko.co.ke##.c-adv -legit.ng##.c-adv--video-placeholder -cnet.com##.c-asurionBottomBanner -cnet.com##.c-asurionInteractiveBanner -cnet.com##.c-asurionInteractiveBanner_wrapper -newstalkzb.co.nz##.c-background -elnacional.cat##.c-banner -truck1.eu##.c-banners -euronews.com##.c-card-sponsor -thehustle.co##.c-layout--trends -download.cnet.com##.c-pageFrontDoor_adWrapper -download.cnet.com##.c-pageProductDetail-sidebarAd -download.cnet.com##.c-pageProductDetail_productAlternativeAd -cnet.com##.c-pageReviewContent_ad -smashingmagazine.com##.c-promo-box -smashingmagazine.com##.c-promotion-box -webtoon.xyz##.c-sidebar -umassathletics.com##.c-sticky-leaderboard -globalnews.ca##.c-stickyRail -backpacker.com,betamtb.com,betternutrition.com,cleaneatingmag.com,climbing.com,gymclimber.com,outsideonline.com,oxygenmag.com,pelotonmagazine.com,rockandice.com,skimag.com,trailrunnermag.com,triathlete.com,vegetariantimes.com,velonews.com,womensrunning.com,yogajournal.com##.c-thinbanner -mangarockteam.com,nitroscans.com##.c-top-second-sidebar -freecomiconline.me,lordmanga.com,mangahentai.me,manytoon.com,readfreecomics.com##.c-top-sidebar -softarchive.is##.c-un-link -stuff.tv##.c-video-ad__container -convertingcolors.com##.c30 -canada411.ca##.c411TopBanner -techonthenet.com##.c79ee2c9 -sussexexpress.co.uk##.cIffkq -filepuma.com##.cRight_footer -fmforums.com##.cWidgetContainer -digg.com,money.com##.ca-pcu-inline -digg.com##.ca-widget-wrapper -engadget.com##.caas-da -thecable.ng##.cableads_mid -encycarpedia.com##.cac -strategie-bourse.com##.cadre_encadre_pub -cafonline.com##.caf-o-sponsors-nav -clutchpoints.com##.cafemedia-clutchpoints-header -challonge.com##.cake-unit -calculat.io##.calc67-container -skylinewebcams.com##.cam-vert -thedalesreport.com##.cap-container -dllme.com##.captchabox > div -coolors.co##.carbon-cad -icons8.com##.carbon-card-ad__loader -speakerdeck.com##.carbon-container -buzzfeed.com##.card--article-ad -u.today##.card--something-md -nrl.com##.card-content__sponsor -devdiscourse.com##.carousel -eetimes.com##.carousel-ad-wrapper -faroutmagazine.co.uk,hitc.com##.carpet-border -chemistwarehouse.com.au##.category-product-mrec -afro.com,ghacks.net,hyperallergic.com##.category-sponsored -renonr.com##.category-sponsored-content -notebooks.com##.cb-block -thegoodchoice.ca,wandering-bird.com##.cb-box -guru99.com##.cb-box__wrapper-center_modal -carbuzz.com##.cb-video-ad-block -supercheats.com##.cboth_sm -cricbuzz.com##.cbz-leaderboard-banner -waptrick.one##.cent_list -digit.in##.center-add -seeklogo.com##.centerAdsWp -siberiantimes.com##.centerBannerRight -giveawayoftheday.com##.center_ab -whattomine.com##.centered-image-short -spiceworks.com##.centerthe1 -digminecraft.com##.cf47a252 -tlgrm.eu##.channel-card--promoted -thefastmode.com##.channel_long -thefastmode.com##.channel_small -crn.com##.chartbeat-wrapper -cheknews.ca##.chek-advertisement-placeholder -sevenforums.com,tenforums.com##.chill -hannaford.com##.citrus_ad_banner -apps.jeurissen.co##.cja-landing__content > .cja-sqrimage -gunsamerica.com##.cl_ga -businessinsider.in##.clmb_eoa -kissanime.com.ru##.close_ad_button -news18.com##.closestickybtn -cdromance.com##.cls -computerweekly.com,techtarget.com,theserverside.com##.cls-hlb-wrapper-desktop -lcpdfr.com##.clsReductionBlockHeight -lcpdfr.com##.clsReductionLeaderboardHeight -mayoclinic.org##.cmp-advertisement__wrapper -boldsky.com,gizbot.com,nativeplanet.com##.cmscontent-article1 -boldsky.com,gizbot.com,nativeplanet.com##.cmscontent-article2 -boldsky.com,drivespark.com,filmibeat.com,gizbot.com,goodreturns.in,nativeplanet.com,oneindia.com##.cmscontent-left-article -boldsky.com,drivespark.com,filmibeat.com,gizbot.com,goodreturns.in,nativeplanet.com,oneindia.com##.cmscontent-right1 -careerindia.com##.cmscontent-top -thisismoney.co.uk##.cnr5 -letras.com##.cnt-space-top -groceries.asda.com##.co-product-dynamic -asda.com##.co-product-list[data-module-type="HookLogic"] -map.riftkit.net##.coachify_wrapper -100percentfedup.com,180gadgets.com,247media.com.ng,academicful.com,addapinch.com,aiarticlespinner.co,allaboutfpl.com,alltechnerd.com,americanmilitarynews.com,americansongwriter.com,androidsage.com,animatedtimes.com,anoopcnair.com,askpython.com,asurascans.com,australiangeographic.com.au,autodaily.com.au,bigleaguepolitics.com,bipartisanreport.com,bohemian.com,borncity.com,boxingnews24.com,browserhow.com,charlieintel.com,chillinghistory.com,chromeunboxed.com,circuitbasics.com,coincodecap.com,conservativebrief.com,corrosionhour.com,crimereads.com,cryptobriefing.com,cryptointelligence.co.uk,cryptopotato.com,cryptoreporter.info,cryptoslate.com,dafontfree.io,dailynewshungary.com,dcenquirer.com,dexdotexe.com,dorohedoro.online,epicdope.com,eurweb.com,exeo.app,fandomwire.com,firstsportz.com,flickeringmyth.com,flyingmag.com,freefontsfamily.net,freemagazines.top,gadgetinsiders.com,gameinfinitus.com,gamertweak.com,gatewaynews.co.za,geekdashboard.com,getdroidtips.com,goodyfeed.com,greekreporter.com,hard-drive.net,hollywoodinsider.com,hollywoodunlocked.com,indianhealthyrecipes.com,inspiredtaste.net,iotwreport.com,jojolandsmanga.com,journeybytes.com,journeyjunket.com,jujustukaisen.com,libertyunlocked.com,linuxfordevices.com,lithub.com,meaningfulspaces.com,medicotopics.com,medievalists.net,mpost.io,mycariboonow.com,mymodernmet.com,mymotherlode.com,nationalfile.com,notalwaysright.com,nsw2u.com,nxbrew.com,organicfacts.net,patriotfetch.com,politizoom.com,premiumtimesng.com,protrumpnews.com,pureinfotech.com,redrightvideos.com,reneweconomy.com.au,reptilesmagazine.com,respawnfirst.com,rezence.com,roadaheadonline.co.za,rok.guide,saabplanet.com,sciencenotes.org,sdnews.com,simscommunity.info,small-screen.co.uk,storypick.com,streamingbetter.com,superwatchman.com,talkandroid.com,talkers.com,tech-latest.com,techpp.com,techrounder.com,techviral.net,theblueoceansgroup.com,thecinemaholic.com,thecricketlounge.com,thedriven.io,thegamehaus.com,thegatewaypundit.com,thegeekpage.com,thelibertydaily.com,thenipslip.com,thepeoplesvoice.tv,thewincentral.com,trendingpolitics.com,trendingpoliticsnews.com,twistedvoxel.com,videogamer.com,walletinvestor.com,washingtonblade.com,waves4you.com,wbiw.com,welovetrump.com,wepc.com,win.gg,wisden.com,wnd.com,zerohanger.com##.code-block -storytohear.com,thefamilybreeze.com,thetravelbreeze.com,theworldreads.com,womensmethod.com##.code-block > center p -cookingwithdog.com,streamtelly.com##.code-block-1 -patriotnewsfeed.com##.code-block-4 -scienceabc.com##.code-block-5 -mydramalist.com##.col-lg-4 > .clear -upi.com##.col-md-12 > table -roseindia.net##.col-md-4 -disqus.com##.col-promoted -lapa.ninja##.col-sm-1 -collegedunia.com##.college-sidebar .course-finder-banner -gadgetsnow.com,iamgujarat.com,indiatimes.com,samayam.com,vijaykarnataka.com##.colombia -businessinsider.in##.colombia-rhs-wdgt -i24news.tv##.column-ads -atalayar.com##.column-content > .megabanner -rateyourmusic.com##.column_filler -2pass.co.uk##.column_right -arcadebomb.com##.colunit1 -bollywoodlife.com##.combinedslots -googlesightseeing.com##.comm-square -slickdeals.net##.commentsAd -businessinsider.com,insider.com##.commerce-coupons-module -goal.com,thisislondon.co.uk##.commercial -telegraph.co.uk##.commercial-unit -bitdegree.org##.comparison-suggestion -audacy.com##.component--google-ad-manager -linguisticsociety.org##.component-3 -goal.com##.component-ad -hunker.com,livestrong.com##.component-article-section-jwplayer-wrapper -binnews.com,iheart.com,jessekellyshow.com,steveharveyfm.com##.component-pushdown -binnews.com,iheart.com,jessekellyshow.com,steveharveyfm.com##.component-recommendation -cointelegraph.com##.componentAdbutler_uF1zH -kqed.org##.components-Ad-__Ad__ad -dailymail.co.uk,thisismoney.co.uk##.connatix-wrapper -realsport101.com##.connatixPS -dpreview.com##.connatixWrapper -rateyourmusic.com##.connatix_video -washingtontimes.com##.connatixcontainer -beincrypto.com##.cont-wrapper -whatismyip.net##.container > .panel[id] -redditsave.com##.container > center -flaticon.com##.container > section[data-term].soul-a.soul-p-nsba -marketwatch.com##.container--sponsored -mangakakalot.com##.container-chapter-reader > div -snazzymaps.com##.container-gas -font-generator.com##.container-home-int > .text-center -thejournal-news.net##.container.lightblue -coinhub.wiki##.container_coinhub_footerad -coinhub.wiki##.container_coinhub_topwidgetad -jokersupdates.com##.container_contentrightspan -rawstory.com##.container_proper-ad-unit -worldscreen.com##.contains-sticky-video -pastebin.com##.content > [style^="padding-bottom:"] -amateurphotographer.com##.content-ad -receive-sms.cc##.content-adsense -floridasportsman.com##.content-banner-section -crmbuyer.com,ectnews.com,technewsworld.com##.content-block-slinks -journeyjunket.com##.content-container-after-post -computerweekly.com##.content-continues -gostream.site##.content-kuss -cookist.com##.content-leaderboard -pwinsider.com##.content-left -pwinsider.com##.content-right -flv2mp3.by##.content-right-bar -crmbuyer.com,ectnews.com,technewsworld.com##.content-tab-slinks -searchenginejournal.com##.content-unit -highsnobiety.com##.contentAdWrap -ancient-origins.net##.content_add_block -wikiwand.com##.content_headerAd__USjzd -nationalmemo.com##.content_nm_placeholder -insta-stories-viewer.com##.context -usedcarnews.com##.continut -metar-taf.com##.controls-right -live-tennis.eu##.copyright -imdb.com##.cornerstone_slot -physicsworld.com##.corporate-partners -corrosionhour.com##.corro-widget -pcworld.com##.coupons -wolfstream.tv##.cover2 -creativecow.net##.cowtracks-interstitial -creativecow.net##.cowtracks-sidebar-with-cache-busting -creativecow.net##.cowtracks-target -coinpaprika.com##.cp-table__row--ad-row -cpomagazine.com##.cpoma-adlabel -cpomagazine.com##.cpoma-main-header -cpomagazine.com##.cpoma-target -chronline.com##.cq-creative -theweather.net##.creatividad -mma-core.com##.crec -meijer.com##.criteo-banner -currys.co.uk##.criteoproducts-section -irishtimes.com##.cs-teaser -staradvertiser.com##.csMon -c-span.org##.cspan-ad-still-prebid-wrapper -c-span.org##.cspan-ad-still-wrapper -healthline.com##.css-12efcmn -nytimes.com,nytimesn7cgmftshazwhfgzm37qxb44r64ytbb2dj3x62d2lljsciiyd.onion##.css-142l3g4 -pgatour.com##.css-18v0in8 -greatist.com,healthline.com,medicalnewstoday.com,psychcentral.com##.css-1cg0byz -crazygames.com##.css-1h6nq0a -pgatour.com##.css-1t41kwh -infowars.com##.css-1upmbem -infowars.com##.css-1vj1npn -gamingbible.com##.css-1z9hhh -greatist.com,healthline.com,medicalnewstoday.com,psychcentral.com##.css-20w1gi -delish.com##.css-3oqygl -nytimes.com,nytimesn7cgmftshazwhfgzm37qxb44r64ytbb2dj3x62d2lljsciiyd.onion##.css-bs95eu -nytimes.com,nytimesn7cgmftshazwhfgzm37qxb44r64ytbb2dj3x62d2lljsciiyd.onion##.css-oeful5 -sbs.com.au##.css-p21i0d -cruisecritic.co.uk,cruisecritic.com,cruisecritic.com.au##.css-v0ecl7 -comparitech.com##.ct089 -unmineablesbest.com##.ct_ipd728x90 -comparitech.com##.ct_popup_modal -amateurphotographer.com,cryptoslate.com,techspot.com##.cta -dailydot.com##.cta-article-wrapper -w3docs.com##.cta-bookduck -simracingsetup.com##.cta-box -thelines.com##.cta-content -finbold.com##.cta-etoro -thelines.com##.cta-row -filerio.in##.ctl25 -timesofindia.indiatimes.com##.ctn-workaround-div -seattlepi.com##.ctpl-fullbanner -genius.com##.cujBpY -pcgamesn.com##.curated-spotlight -speedrun.com##.curse -pokebattler.com##.curse-ad -dexscreener.com##.custom-1hol5du -dexscreener.com##.custom-97cj9d -slidehunter.com##.custom-ad-text -fastestvpns.com##.custom-banner -dexscreener.com##.custom-hmb3rb -addictivetips.com,coinweek.com,news365.co.za,simscommunity.info##.custom-html-widget -patriotnewsfeed.com##.custom-html-widget [href] > [src] -thestudentroom.co.uk##.custom-jucdap -thehackernews.com##.custom-link -breakingnews.ie##.custom-mpu-container -ehitavada.com##.custom-popup -dexscreener.com##.custom-torcf3 -fandomwire.com##.customad -total-croatia-news.com##.custombanner -the-sun.com,thescottishsun.co.uk,thesun.co.uk,thesun.ie##.customiser-v2-layout-1-billboard -the-sun.com,thescottishsun.co.uk,thesun.co.uk,thesun.ie##.customiser-v2-layout-three-native-ad-container -f150lightningforum.com##.customizedBox -coincarp.com##.customspon -citywire.com##.cw-top-advert -futurecurrencyforecast.com##.cwc-tor-widget -marketwatch.com##.cxense-loading -usmagazine.com##.cy-storyblock -bleepingcomputer.com##.cz-toa-wrapp -coingraph.us,hosty.uprwssp.org##.d -blockchair.com##.d-block -mangamiso.net##.d-flex-row -fastpic.ru,freesteam.io##.d-lg-block -calendar-canada.ca,osgamers.com##.d-md-block -thestreamable.com##.d-md-flex -publish0x.com##.d-md-none.text-center -arbiscan.io##.d-none.text-center.pl-lg-4.pl-xll-5 -cutyt.com,onlineocr.net,publish0x.com##.d-xl-block -artsy.net##.dDusYa -yourstory.com##.dJEWSq -fxempire.com##.dKBfBG -cryptorank.io##.dPbBGP -standard.co.uk##.dXaqls -vogue.com.au##.dYmYok -timesofindia.indiatimes.com##.d_jsH.mPws3 -counter.dev,lindaikejisblog.com##.da -engadget.com##.da-container -smartprix.com##.dadow-box -lifewire.com##.daily-deal -dailycaller.com##.dailycaller_adhesion -4chan.org,boards.4channel.org##.danbo-slot -cnbctv18.com##.davos-top-ad -sportshub.stream##.db783ekndd812sdz-ads -foobar2000.org##.db_link -wuxiaworld.site##.dcads -driverscloud.com##.dcpub -theguardian.com##.dcr-1aq0rzi -dailydriven.ro##.dd-dda -fxempire.com##.ddAwpw -datedatego.com##.ddg -datedatego.com##.ddg0 -darkreader.org##.ddgr -sgcarmart##.dealer_banner -slashdot.org##.deals-wrapper -defiantamerica.com##.defia-widget -nettv4u.com##.desk_only -newindian.in##.deskad -cardealermagazine.co.uk##.desktop -livesoccertv.com##.desktop-ad-container -vitalmtb.com##.desktop-header-ad -rok.guide##.desktop-promo-banner -tiermaker.com##.desktop-sticky -buzzfeed.com,buzzfeednews.com##.desktop-sticky-ad_desktopStickyAdWrapper__a_tyF -hanime.tv##.desktop.htvad -randomarchive.com##.desktop[style="text-align:center"] -australiangolfdigest.com.au##.desktop_header -inquirer.net##.desktop_smdc-FT-survey -cyclingstage.com##.desktopad -coingape.com##.desktopds -ancient-origins.net##.desktops -flashscore.co.za,flashscore.com,livescore.in,soccer24.com##.detailLeaderboard -floridapolitics.com##.dfad -coingape.com##.dfd -avclub.com,gadgetsnow.com,jezebel.com,nationaljeweler.com,pastemagazine.com,splinter.com,theonion.com##.dfp -gazette.com,thehindu.com##.dfp-ad -vox.com##.dfp-ad--connatix -investing.com##.dfp-native -investing.com##.dfpVideo -yts.mx##.dfskieurjkc23a -dailyfx.com##.dfx-article__sidebar -dollargeneral.com##.dgsponsoredcarousel -politicspa.com##.dialog-type-lightbox -kiplinger.com##.dianomi_gallery_wrapper -kmplayer.com##.dim-layer -coingape.com##.diplay-m-ad -temporary-phone-number.com##.direct-chat-messages > div[style="margin:15px 0;"] -disk.yandex.com,disk.yandex.ru##.direct-public__sticky-box -notes.io##.directMessageBanner -premiumtimesng.com##.directcampaign -happywayfarer.com##.disclosure -oneindia.com##.discounts-head -audiokarma.org##.discussionListItem > center -apkcombo.com##.diseanmevrtt -airmail.news,govevents.com,protipster.com##.display -flightconnections.com##.display-box -flightconnections.com##.display-box-2 -legacy.com##.displayOverlay1 -designtaxi.com##.displayboard -theodysseyonline.com##.distroscale_p2 -theodysseyonline.com##.distroscale_side -nottinghampost.com##.div-gpt-ad-vip-slot-wrapper -readcomiconline.li##.divCloseBut -jpost.com##.divConnatix -tigerdroppings.com##.divHLeaderFull -newser.com##.divNColAdRepeating -sailingmagazine.net##.divclickingdivwidget -ebaumsworld.com,greedyfinance.com##.divider -thelist.com##.divider-heading-container -karachicorner.com##.divimg -fruitnet.com##.dk-ad-250 -meteologix.com##.dkpw -meteologix.com,weather.us##.dkpw-billboard-margin -dongknows.com##.dkt-amz-deals -dongknows.com##.dkt-banner-ads -wallpaperbetter.com##.dld_ad -globalgovernancenews.com##.dlopiqu -crash.net##.dmpu -crash.net##.dmpu-container -nationalworld.com,scotsman.com##.dmpu-item -vice.com##.docked-slot-renderer -thehackernews.com##.dog_two -quora.com##.dom_annotate_ad_image_ad -quora.com##.dom_annotate_ad_promoted_answer -quora.com##.dom_annotate_ad_text_ad -domaingang.com##.domai-target -thenationonlineng.net##.dorvekp-post-bottom -gearlive.com##.double -capitalfm.com,radiox.co.uk,smoothradio.com##.download -zeroupload.com##.download-page > a[rel="noopener"] > img -thepiratebay3.to##.download_buutoon -thesun.co.uk##.dpa-slot -distractify.com,greenmatters.com,inquisitr.com,okmagazine.com,qthemusic.com,radaronline.com##.dpbdIG -dola.com##.ds-brand -dola.com##.ds-display-ad -cryptonews.com##.dslot -kickasstorrents.to##.dssdffds -digitaltrends.com,themanual.com##.dt-primis -digitaltrends.com##.dtads-location -digitaltrends.com##.dtcc-affiliate -yts.mx##.durs-bordered -bloomberg.com##.dvz-v0-ad -daniweb.com##.dw-inject-bsa -ubereats.com##.dw.ec -coinpaprika.com##.dynamic-ad -dailydot.com##.dynamic-block -nomadlist.com##.dynamic-fill -coingraph.us##.e -dailyvoice.com##.e-freestar-video-container -dailyvoice.com##.e-nativo-container -hosty.uprwssp.org##.e10 -op.gg##.e17e77tq6 -op.gg##.e17e77tq8 -nytimes.com,nytimesn7cgmftshazwhfgzm37qxb44r64ytbb2dj3x62d2lljsciiyd.onion##.e1xxpj0j1.css-4vtjtj -techonthenet.com##.e388ecbd -arabtimesonline.com,independent.co.ug,nigerianobservernews.com,songslover.vip,udaipurkiran.com##.e3lan -presskitaquat.com##.e3lan-top -tiresandparts.net##.e3lanat-layout-rotator -techonthenet.com##.e72e4713 -fxempire.com##.eLQRRm -artsy.net##.ePrLqP -euractiv.com##.ea-gat-slot-wrapper -coin360.com##.earnMenuButton-link -expats.cz##.eas -itwire.com,nativenewsonline.net##.eb-init -ablogtowatch.com##.ebay-placement -gfinityesports.com##.ecommerceUnit -newagebd.net##.editorialMid -editpad.org##.edsec -theepochtimes.com##.eet-ad -clutchpoints.com##.ehgtMe.sc-ed3f1eaf-1 -filmibeat.com##.ele-ad -sashares.co.za##.elementor-48612 -cryptopolitan.com##.elementor-element-094410a -hilltimes.com##.elementor-element-5818a09 -analyticsindiamag.com##.elementor-element-8e2d1f0 -waamradio.com##.elementor-element-f389212 -granitegrok.com##.elementor-image > [data-wpel-link="external"] -optimyz.com,ringsidenews.com##.elementor-shortcode -canyoublockit.com##.elementor-widget-container > center > p -vedantbhoomi.com##.elementor-widget-smartmag-codes -radiotimes.com##.elementor-widget-wp-widget-section_full_width_advert -worldscreen.com##.embdad -phys.org##.embed-responsive-trendmd -autostraddle.com##.end-of-article-ads -endtimeheadlines.org##.endti-widget -floridianpress.com##.enhanced-text-widget -cathstan.org##.enticement-link -upfivedown.com##.entry > hr.wp-block-separator + .has-text-align-center -malwarefox.com##.entry-content > .gb-container -kupondo.com##.entry-content > .row -huffingtonpost.co.uk,huffpost.com##.entry__right-rail-width-placeholder -euronews.com##.enw-MPU -essentiallysports.com##.es-ad-space-container -marcadores247.com##.es_top_banner -esports.net##.esports-ad -alevelgeography.com,shtfplan.com,yournews.com##.et_pb_code_inner -navajotimes.com##.etad -mothership.sg##.events -appleinsider.com##.exclusive-wrap -mashable.com##.exco -nypost.com##.exco-video__container -metric-conversions.org##.exists -proprivacy.com##.exit-popup.modal-background -streamingmedia.com##.expand -thejakartapost.com##.expandable-bottom-sticky -appuals.com##.expu-protipeop -appuals.com##.expu-protipmiddle_2 -thepostemail.com##.external -pixabay.com##.external-media -dexerto.com##.external\:bg-custom-ad-background -yourbittorrent.com##.extneed -navajotimes.com##.extra-hp-skyscraper -mangamiso.net##.extraHeight -textcompare.org##.ez-sidebar-wall -futuregaming.io##.ez-video-wrap -cgpress.org##.ezlazyloaded.header-wrapper -chorus.fm##.f-soc -formula1.com##.f1-dfp-banner-wrapper -audiophilereview.com##.f7e65-midcontent -audiophilereview.com##.f7e65-sidebar-ad-widget -globimmo.net##.fAdW -dictionary.com,thesaurus.com##.fHACXxic9xvQeSNITiwH -datenna.com##.fPHZZA -btcmanager.com##.f_man_728 -freeads.co.uk##.fa_box_m -tvtropes.org##.fad -slideshare.net##.fallback-ad-container -tokyvideo.com##.fan--related-videos.fan -channelnewsasia.com##.fast-ads-wrapper -imgur.com##.fast-grid-ad -thepointsguy.com##.favorite-cards -futbin.com##.fb-ad-placement -triangletribune.com##.fba_links -newspointapp.com##.fbgooogle-wrapper -forbes.com##.fbs-ad--mobile-medianet-wrapper -forbes.com##.fbs-ad--ntv-deskchannel-wrapper -forbes.com##.fbs-ad--ntv-home-wrapper -whatismyipaddress.com##.fbx-player-wrapper -businessinsider.in##.fc_clmb_ad_mrec -filmdaily.co##.fd-article-sidebar-ad -filmdaily.co##.fd-article-top-banner -filmdaily.co##.fd-home-sidebar-inline-rect -foodbeast.com##.fdbst-ad-placement -citybeat.com,metrotimes.com,riverfronttimes.com##.fdn-gpt-inline-content -cltampa.com,orlandoweekly.com,sacurrent.com##.fdn-interstitial-slideshow-block -browardpalmbeach.com,dallasobserver.com,miaminewtimes.com,phoenixnewtimes.com,westword.com##.fdn-site-header-ad-block -citybeat.com,metrotimes.com##.fdn-teaser-row-gpt-ad -citybeat.com,riverfronttimes.com##.fdn-teaser-row-teaser -w3techs.com##.feat -convertcase.net##.feature -costco.com##.feature-carousel-container[data-rm-format-beacon] -softarchive.is##.feature-usnt -mumbrella.com.au##.featureBanner -eagle1065.com##.featureRotator -news24.com##.featured-category -hltv.org##.featured-matches-top-matches-container -apexcharts.com,ar12gaming.com##.featured-sponsor -eetimes.com##.featured-techpaper-box -thenationonlineng.net##.featured__advert__desktop_res -motor1.com##.featured__apb -tvfanatic.com##.feed_holder -forum.lowyat.net##.feedgrabbr_widget -whosdatedwho.com##.ff-adblock -newser.com##.fiavur2 -filecrypt.cc##.filItheadbIockgueue3 -filecrypt.cc,filecrypt.co##.filItheadbIockqueue3 -telugupeople.com##.fineprint -proprofs.com##.firstadd -thestranger.com##.fish-butter -fiskerati.com##.fiskerati-target -khaleejtimes.com##.fix-billboard-nf -khaleejtimes.com##.fix-mpu-nf -vice.com##.fixed-slot -dorset.live,liverpoolecho.co.uk##.fixed-slots -manhuascan.io##.fixed-top -theblock.co##.fixedUnit -cgdirector.com##.fixed_ad_container_420 -2conv.com##.fixed_banner -timesofindia.indiatimes.com##.fixed_elements_on_page -fixya.com##.fixya_primis_container -whatismyipaddress.com##.fl-module-wipa-concerns -whatismyipaddress.com##.fl-photo -omniglot.com##.flex-container -decrypt.co##.flex.flex-none.relative -libhunt.com##.flex.mt-5.boxed -ice.hockey##.flex_container_werbung -recipes.timesofindia.com##.flipkartbanner -klmanga.net,shareae.com##.float-ck -comedy.com##.floater-prebid -chaseyoursport.com##.floating-adv -click2houston.com,clickondetroit.com,clickorlando.com,ksat.com,local10.com,news4jax.com##.floatingWrapper -thehindu.com##.flooting-ad -golinuxcloud.com##.flying-carpet -momjunction.com,stylecraze.com##.flying-carpet-wrapper -advocate.com,emergencyemail.org,out.com##.footer -allthatsinteresting.com,scientificamerican.com##.footer-banner -wst.tv##.footer-logos -supercars.com##.footer-promo -filma24.ch##.footer-reklama -wtatennis.com##.footer-sponsors -skidrowcodexreloaded.com##.footer-sticky -searchcommander.com##.footer-widget -gelbooru.com##.footerAd2 -businessnow.mt,igamingcapital.mt,maltaceos.mt,whoswho.mt##.footer__second -pbs.org##.footer__sub -satbeams.com##.footer_banner -techopedia.com##.footer_inner_ads -realmadrid.com##.footer_rm_sponsors_container -tiresandparts.net##.footer_top_banner -ocado.com##.fops-item--advert -morrisons.com##.fops-item--featured -nintendolife.com,purexbox.com,pushsquare.com##.for-desktop -purexbox.com,pushsquare.com##.for-mobile.below-article -flatpanelshd.com##.forsideboks2 -permies.com##.forum-top-banner -newsroom.co.nz##.foundingpartners -freepresskashmir.news##.fpkdonate -theiphoneappreview.com##.frame -mathgames.com##.frame-container -ranobes.top##.free-support-top -freedomfirstnetwork.com##.freed-1 -looperman.com##.freestar -esports.gg##.freestar-esports_between_articles -esports.gg##.freestar-esports_leaderboard_atf -upworthy.com##.freestar-in-content -moviemistakes.com##.freestarad -sciencenews.org##.from-nature-index__wrapper___2E2Z9 -cryptocompare.com##.front-page-info-wrapper -slickdeals.net##.frontpageGrid__bannerAd -fxempire.com##.frzZuq -tripstodiscover.com##.fs-dynamic -tripstodiscover.com##.fs-dynamic__label -j-14.com##.fs-gallery__leaderboard -alphr.com##.fs-pushdown-sticky -newser.com##.fs-sticky-footer -bossip.com##.fsb-desktop -bossip.com##.fsb-toggle -ghacks.net##.ftd-item -newser.com##.fu4elsh1yd -livability.com##.full-width-off-white -theblock.co##.fullWidthDisplay -greatandhra.com##.full_width_home.border-topbottom -whatismybrowser.com##.fun-info-footer -whatismybrowser.com##.fun-inner -artscanvas.org##.funders -ferrarichat.com##.funzone -savemyexams.co.uk##.fuse-desktop-h-250 -savemyexams.co.uk##.fuse-h-90 -stylecraze.com##.fx-flying-carpet -fxstreet.com##.fxs_leaderboard -aframnews.com,afro.com,aurn.com,aviacionline.com,blackvoicenews.com,borneobulletin.com.bn,businessday.ng,businessofapps.com,chicagodefender.com,chimpreports.com,coinweek.com,collive.com,coralspringstalk.com,dailynews.co.zw,dailysport.co.uk,dallasvoice.com,defence-industry.eu,dieworkwear.com,draxe.com,gatewaynews.co.za,gayexpress.co.nz,gematsu.com,hamodia.com,islandecho.co.uk,jacksonvillefreepress.com,marshallradio.net,mediaplaynews.com,moviemaker.com,newpittsburghcourier.com,nondoc.com,postnewsgroup.com,richmondshiretoday.co.uk,sammobile.com,savannahtribune.com,spaceref.com,swling.com,talkers.com,talkradioeurope.com,thegolfnewsnet.com,utdmercury.com,waamradio.com,womensagenda.com.au##.g -marionmugshots.com##.g-1 -marionmugshots.com##.g-3 -coinweek.com##.g-389 -dailyjournalonline.com##.g-dyn -nytimes.com,nytimesn7cgmftshazwhfgzm37qxb44r64ytbb2dj3x62d2lljsciiyd.onion##.g-paid -domainnamewire.com,goodthingsguy.com##.g-single -yellowise.com##.g-widget-block -titantv.com##.gAd -theweathernetwork.com##.gGthWi -issuu.com##.gMUVke -bowenislandundercurrent.com,coastreporter.net,delta-optimist.com,richmond-news.com,squamishchief.com,tricitynews.com##.ga-ext -getgreenshot.org##.ga-ldrbrd -getgreenshot.org##.ga-skscrpr -elevenforum.com,html-code-generator.com##.gads -eonline.com##.gallery-rail-sticky-container -vicnews.com##.gam -drive.com.au##.gam-ad -thechainsaw.com##.gam-ad-container -locksmithledger.com##.gam-slot-builder -komikindo.tv##.gambar_pemanis -cdromance.com##.game-container[style="grid-column: span 2;"] -geoguessr.com##.game-layout__in-game-ad -chess.com##.game-over-ad-component -pokernews.com##.gameCards -monstertruckgames.org##.gamecatbox -yourstory.com##.gap-\[10px\] -home-assistant-guide.com##.gb-container-429fcb03 -home-assistant-guide.com##.gb-container-5698cb9d -home-assistant-guide.com##.gb-container-bbc771af -kitchenknifeforums.com,quadraphonicquad.com##.gb-sponsored-wrapper -gocomics.com##.gc-deck--is-ad -1001games.com##.gc-halfpage -1001games.com##.gc-leaderboard -1001games.com##.gc-medium-rectangle -gocomics.com##.gc-top-advertising -letsdopuzzles.com##.gda-home-box -kansascity.com,rotowire.com##.gdcg-oplist -just-food.com##.gdm-company-profile-unit__container -naval-technology.com##.gdm-recommended-reports -gearpatrol.com##.gearpatrol-ad -geekflare.com##.geekflare-core-resources -autoblog.com##.gemini-native -thefederalist.com##.general-callout -investing.com##.generalOverlay -perfectdailygrind.com##.gengpdg -perfectdailygrind.com##.gengpdg-col -perfectdailygrind.com##.gengpdg-single -romaniajournal.ro##.geoc-container -geo-fs.com##.geofs-adbanner -thingstodovalencia.com##.get-your-guide -flickr.com##.getty-search-view -flickr.com##.getty-widget-view -marketsfarm.com##.gfm-ad-network-ad -hltv.org##.gg-firstcol-box -ganjingworld.com##.ggAdZone_gg-banner-ad_zone__wK3kF -cometbird.com##.gg_250x250 -cornish-times.co.uk,farnhamherald.com,iomtoday.co.im##.ggzoWi -ghacks.net##.ghacks-ad -ghacks.net##.ghacks_ad_code -cnx-software.com##.ghelpme -mql5.com##.giyamx4tr -goodmenproject.com##.gmp-instream-wrap -militaryleak.com##.gmr-floatbanner -givemesport.com##.gms-ad -givemesport.com##.gms-billboard-container -givemesport.com##.gms-sidebar-ad -guides.gamepressure.com##.go20-pl-guide-right-baner-fix -coinmarketcap.com##.goXFFk -dallasinnovates.com,thecoastnews.com,watchesbysjx.com##.gofollow -golf.com##.golf-ad -golinuxcloud.com##.golin-content -golinuxcloud.com##.golin-video-content -africanadvice.com,pspad.com,sudantribune.com##.google -apkmirror.com##.google-ad-leaderboard -secretchicago.com##.google-ad-manager-ads-header -videocardz.com##.google-sidebar -manabadi.co.in##.googleAdsdiv -smsfi.com##.google_ad_home_page_100percent -mediamass.net##.googleresponsive -css3generator.com##.gotta-pay-the-bills -spiceworks.com##.gp-standard-header -perfectdailygrind.com##.gpdgeng -di.fm##.gpt-slot -kijiji.ca##.gqNGFh -beforeitsnews.com##.gquuuu5a -searchenginereports.net##.grammarly-overall -balls.ie##.gray-ad-title -greatandhra.com##.great_andhra_logo_panel > div.center-align -greatandhra.com##.great_andhra_logo_panel_top_box -greatandhra.com##.great_andhra_main_041022_ -greatandhra.com##.great_andhra_main_add_rotator_new2 -greatandhra.com##.great_andhra_main_local_rotator1 -mma-core.com##.grec -greekcitytimes.com##.greek-adlabel -greekcitytimes.com##.greek-after-content -curioustic.com##.grey -rabble.ca##.grey-cta-block -topminecraftservers.org##.grey-section -sltrib.com##.grid-ad-container-2 -teleboy.ch##.grid-col-content-leaderboard -newsnow.co.uk##.grid-column__container -groovypost.com##.groov-adlabel -leetcode.com##.group\/ads -gulftoday.ae##.gt-ad-center -gulf-times.com##.gt-horizontal-ad -gulf-times.com##.gt-square-desktop-ad -gulf-times.com##.gt-vertical-ad -animenewsnetwork.com##.gutter -distractify.com,inquisitr.com,okmagazine.com,qthemusic.com,radaronline.com##.gwofgg -thetimes.co.uk##.gyLkkj -worldpopulationreview.com##.h-64 -tvcancelrenew.com##.h-72 -posemaniacs.com##.h-\[250px\] -emojipedia.org##.h-\[282px\] -businessinsider.in##.h-\[300px\] -emojipedia.org##.h-\[312px\] -supercarblondie.com##.h-\[660px\] -thenewdaily.com.au##.h-home-ad-height-stop -buzzly.art##.h-min.overflow-hidden -target.com##.h-position-fixed-bottom -copyprogramming.com##.h-screen -lyricsmode.com##.h113 -tetris.com##.hAxContainer -news12.com##.hCauqx -opoyi.com##.hLYYlN -marketscreener.com##.hPubRight2 -clutchpoints.com##.hYrQwu -gifcompressor.com,heic2jpg.com,imagecompressor.com,jpg2png.com,mylocation.org,png2jpg.com,webptojpeg.com,wordtojpeg.com##.ha -anime-planet.com##.halo -cyclonis.com##.has-banner -whistleout.com.au##.has-hover -defence-industry.eu##.has-small-font-size.has-text-align-center -tomsguide.com##.hawk-main-editorialised -techradar.com##.hawk-main-editorialized -tomsguide.com##.hawk-master-widget-hawk-main-wrapper -windowscentral.com##.hawk-master-widget-hawk-wrapper -techradar.com##.hawk-merchant-link-widget-container -girlswithmuscle.com##.hb-static-banner-div -screenbinge.com##.hb-strip -girlswithmuscle.com##.hb-video-ad -cryptodaily.co.uk##.hbs-ad -trendhunter.com##.hcamp -webtoolhub.com##.hdShade > div -highdefdigest.com##.hdd-square-ad -biztechmagazine.com##.hdr-btm -analyticsinsight.net##.head-banner -plos.org##.head-top -hindustantimes.com##.headBanner -realmadrid.com##.head_sponsors -lewrockwell.com##.header [data-ad-loc] -ahajournals.org##.header--advertisment__container -additudemag.com,organicfacts.net##.header-ad -boldsky.com##.header-ad-block -olympics.com,scmp.com##.header-ad-slot -stuff.co.nz,thepost.co.nz,thepress.co.nz,waikatotimes.co.nz##.header-ads-block -worldpress.org##.header-b -adswikia.com,freemalaysiatoday.com,landandfarm.com,pointblanknews.com,radiotoday.com.au,runt-of-the-web.com,rxresource.org,techworldgeek.com,warisboring.com##.header-banner -gamingdeputy.com##.header-banner-desktop -revolt.tv##.header-banner-wrapper -mercurynews.com,nssmag.com##.header-banners -amazonadviser.com,apptrigger.com,fansided.com,hiddenremote.com,lastnighton.com,lawlessrepublic.com,mlsmultiplex.com,netflixlife.com,playingfor90.com,stormininnorman.com,winteriscoming.net##.header-billboard -lyricsmode.com##.header-block -worldpress.org##.header-bnr -kveller.com##.header-bottom -counterpunch.org##.header-center -thetoyinsider.com##.header-drop-zone -autental.com##.header-grid-items -allmovie.com,realestate.com.au,theoldie.co.uk##.header-leaderboard -realestate.com.au##.header-leaderboard-portal -sdxcentral.com##.header-lemur -nationalheraldindia.com##.header-m__ad-top__36Hpg -thenewspaper.gr##.header-promo -times.co.zm##.header-pub -newtimes.co.rw##.header-top -kollywoodtoday.net##.header-top-right -knowyourmeme.com##.header-unit-wrapper -maketecheasier.com##.header-widget -hd-trailers.net##.header-win -gelbooru.com##.headerAd -dailytrust.com##.header__advert -gautengnewspaper.co.za##.header__banner -thehits.co.nz##.header__main -gifcompressor.com,heic2jpg.com,jpg2png.com,png2jpg.com,webptojpeg.com,wordtojpeg.com##.header__right -m.thewire.in##.header_adcode -manofmany.com##.header_banner_wrap -koreaherald.com##.header_bnn -techopedia.com##.header_inner_ads -steroid.com##.header_right -everythingrf.com##.headerblock -semiconductor-today.com##.headermiddle -collegedunia.com##.headerslot -darkreader.org##.heading -phonearena.com##.heading-deal -autoplius.lt##.headtop -onlinevideoconverter.pro##.helper-widget -lincolnshireworld.com,nationalworld.com##.helper__AdContainer-sc-12ggaoi-0 -farminglife.com,newcastleworld.com##.helper__DesktopAdContainer-sc-12ggaoi-1 -igorslab.de##.herald-sidebar -provideocoalition.com##.hero-promotions -newsnow.co.uk##.hero-wrapper -azuremagazine.com##.hero__metadata-left-rail -freeads.co.uk##.hero_banner1 -hwcooling.net##.heureka-affiliate-category -filecrypt.cc,filecrypt.co##.hghspd -filecrypt.cc,filecrypt.co##.hghspd + * -daijiworld.com##.hidden-xs > [href] -miragenews.com##.hide-in-mob -moneycontrol.com,windowsreport.com##.hide-mobile -business-standard.com,johncodeos.com##.hide-on-mobile -simpasian.net##.hideme -coindesk.com##.high-impact-ad -majorgeeks.com##.highlight.content > center > font -duckduckgo.com,duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion##.highlight_sponsored -westword.com##.hil28zhf1wyd -48hills.org##.hills-adlabel -highwayradio.com##.hiway-widget -hola.com##.hm-sticky-sidebar -ndtv.com##.hmpage_rhs -seattlepi.com##.hnpad-Flex1 -seattlepi.com##.hnpad-Inline -cryptorank.io##.hofjwZ -bizarrepedia.com##.holder -radiocaroline.co.uk,wishesh.com##.home-banner -manutd.com##.home-content-panel__sponsor -pcgamingwiki.com##.home-gamesplanet-promo -freespoke.com##.home-page-message -merriam-webster.com##.home-redesign-ad -israelnationalnews.com##.home-subsections-banner -christianpost.com##.home-videoplayer -freepressjournal.in##.homeMobileMiddleAdContainer -newagebd.net##.homeSlideRightSecTwo -jagranjosh.com##.homeSlider -pbs.org##.home__logo-pond -bonginoreport.com##.homepage-ad-2 -smallbusiness.co.uk##.homepage-banner-container -invezz.com##.homepage-beneath-hero -interest.co.nz##.homepage-billboard -gumtree.com.au##.homepage-gallery__mrec-placeholder -globalrph.com##.homepage-middle-ad -designspiration.com##.homepageBanner -artandeducation.net##.homepage__banner -swimswam.com##.homepage_block_ads -radiocity.in##.horiozontal-add -flv2mp3.by,flvto.biz,flvto.com.mx##.horizontal-area -getmyuni.com##.horizontalRectangle -nofilmschool.com##.horizontal_ad -aarp.org##.hot-deals -makemytrip.com##.hotDeals -dailyrecord.co.uk##.hotjobs -comparitech.com##.how_test -darkreader.org##.hr -cryptorank.io##.hspOLW -adweek.com##.htl-ad-wrapper -barstoolsports.com##.htl-ad__container -nameberry.com##.htlad-InContent_Flex -nameberry.com##.htlad-Leaderboard_Flex -avclub.com,splinter.com##.htlad-above_logo -avclub.com,splinter.com##.htlad-bottom_rectangle -destructoid.com##.htlad-destructoidcom_leaderboard_atf -avclub.com,splinter.com##.htlad-middle_rectangle -avclub.com##.htlad-sidebar_rectangle -avclub.com,splinter.com##.htlad-top_rectangle -wtop.com##.hubb-at-rad-header -huddle.today##.huddle-big-box-placement -techspree.net##.hustle-popup -cryptoslate.com##.hypelab-container -myabandonware.com##.i528 -animenewsnetwork.com##.iab -atptour.com##.iab-wrapper -iai.tv##.iai-article--footer-image -infobetting.com##.ibBanner -timesofindia.indiatimes.com##.icNFc -ice.hockey##.ice_ner -ice.hockey##.ice_werbung -darkreader.org##.icons8 -indianexpress.com##.ie-banner-wrapper -indianexpress.com##.ie-int-campign-ad -fifetoday.co.uk##.iehxDO -guides.gamepressure.com##.if-no-baner -techmeme.com##.ifsp -coingape.com##.image-ads -instacart.com##.image-banner-a-9l2sjs -instacart.com##.image-banner-a-ak0wn -flicksmore.com##.image_auto -frdl.to##.img-fluid -marketwatch.com##.imonaid_context -lifesitenews.com##.important-info -exchangerates.org.uk##.imt4 -reuters.com##.in-article-desktop-connatix-player -carscoops.com##.in-asd-content -thecanary.co##.in-content-ad -outlookindia.com##.in-house-banner1 -businessinsider.com,insider.com##.in-post-sticky -faithpot.com##.inarticle-ad -crash.net##.inarticle-wrapper -knowyourmeme.com##.incontent-leaderboard-unit-wrapper -motherjones.com##.incontent-promo -truckinginfo.com##.incontent02Ad -scienceabc.com##.incontentad -brudirect.com##.index-banner -lgbtqnation.com##.index-bottom-ad -katv.com##.index-module_adAfterContent__1cww -theinertia.com##.inertia-ad-300x250 -theinertia.com##.inertia-ad-300x270 -theinertia.com##.inertia-ad-300x600 -theinertia.com##.inertia-ad-label -theinertia.com##.inertia-ad-top -inews.co.uk##.inews__advert -inews.co.uk##.inews__mpu -motorcycle.com##.infeed-ads -sevenforums.com##.infeed1 -heatmap.news,theweek.com##.infinite-container -mylocation.org##.info a[href^="https://go.expressvpn.com/c/"] -stocksnap.io##.info-col -bab.la##.info-panel -gameworldobserver.com##.information-block -gameworldobserver.com##.information-blocks -careerindia.com,oneindia.com##.inhouse-content -asheville.com##.injected-ads -bestlifeonline.com,eatthis.com##.inline -manitobacooperator.ca##.inline--2 -pexels.com##.inline-ads -forbes.com##.inline-article-ed-placeholder -cochranenow.com,discoverhumboldt.com,portageonline.com,swiftcurrentonline.com##.inline-billboard -dexerto.com##.inline-block -freebeacon.com##.inline-campaign-wrapper -stocksnap.io##.inline-carbon -parkers.co.uk##.inline-leaderboard-ad-wrapper -sportsrec.com##.inline-parent-container -forbes.com##.inline__zephr -pcgamesn.com,pockettactics.com##.inlinerail -nzbindex.com##.inner -technologynetworks.com##.inner_content_olp_on_site_landing_page -inquirer.com##.inno-ad -inquirer.com##.inno-ad__ad -donegaldaily.com##.inpage_banner -nintendolife.com,purexbox.com,pushsquare.com,timeextension.com##.insert -nintendolife.com,purexbox.com,pushsquare.com,timeextension.com##.insert-label -lithub.com##.insert-post-ads -canarymedia.com##.inset-x-0 -tvarticles.me##.inside -udaipurkiran.com##.inside-right-sidebar .widget_text -allmusic.com##.insticator_ct -darkreader.org##.instinctools -flixboss.com##.instream-dynamic -lol.ps##.instream-video-ad -arstechnica.com##.instream-wrap -capitalfm.com##.instream_item -coincarp.com##.interact-mobileBox -monochrome-watches.com##.interscroll -mrctv.org,newsbusters.org##.intranet-mid-size -allnurses.com##.ipsAreaBackground -1tamilmv.click##.ipsCarousel -uk420.com##.ipsLayout_container > div[align="center"] -allnurses.com,dcfcfans.uk##.ipsSpacer_both -1tamilblasters.com##.ipsWidget_inner.ipsPad.ipsType_richText > p > a -freeiptvplayer.net##.iptv_ads -houstoniamag.com##.is-cream -alibaba.com##.is-creative -mydramalist.com##.is-desktop -athlonsports.com,bringmethenews.com,meidastouch.com,si.com##.is-exco-player -estnn.com##.isDesktop -speedcheck.org##.isg-container -icon-icons.com##.istock-container -iconfinder.com##.istockphoto-placeholder -albertsonsmarket.com,marketstreetunited.com,unitedsupermarkets.com##.item-citrus -nintendolife.com,purexbox.com,pushsquare.com##.item-insert -explorecams.com##.item-row -cryptocompare.com##.item-special -alaskahighwaynews.ca,bowenislandundercurrent.com,burnabynow.com,coastreporter.net,delta-optimist.com,moosejawtoday.com,newwestrecord.ca,nsnews.com,piquenewsmagazine.com,princegeorgecitizen.com,prpeak.com,richmond-news.com,squamishchief.com,tricitynews.com##.item-sponsored -newegg.com##.item-sponsored-box -pocketgamer.com##.item-unit -presearch.com##.items-center.bg-transparent -businesstoday.in##.itgdAdsPlaceholder -slidehunter.com##.itm-ads -itweb.co.za##.itw-ad -india.com##.iwplhdbanner-wrap -kijiji.ca##.jOwRwk -ticketmaster.com##.jTNWic -ticketmaster.com##.jUIMbR -avclub.com,deadspin.com,gizmodo.com,jalopnik.com,kotaku.com,theonion.com,theroot.com,thetakeout.com##.japmJB -jambase.com##.jb-homev3-sense-sidebar-wrap -psypost.org##.jeg_midbar -sabcnews.com##.jeg_topbar -romania-insider.com##.job-item -dot.la##.job-wrapper -cityam.com,techspot.com##.jobbioapp -marketingweek.com##.jobs-lists -johncodeos.com##.johnc-widget -marinelink.com,maritimejobs.com,maritimepropulsion.com,yachtingjournal.com##.jq-banner -demonslayermanga.com,readjujutsukaisen.com,readneverland.com##.js-a-container -ultimate-guitar.com##.js-ab-regular -buzzfeed.com##.js-bfa-impression -live94today.com##.js-demo-avd -musescore.com##.js-musescore-hb-728--wrapper -beermoneyforum.com##.js-notices -formula1.com##.js-promo-item -investing.com##.js-promotional -nicelocal.com##.js-results-slot -theguardian.com##.js-top-banner -chewy.com##.js-tracked-ad-product -iobroker.net##.jss125 -paycalculator.com.au##.jss336 -calorieking.com##.jss356 -iobroker.net,iobroker.pro##.jss43 -paycalculator.com.au##.jss546 -garticphone.com##.jsx-2397783008 -autolist.com##.jsx-2866408628 -garticphone.com##.jsx-3256658636 -essentiallysports.com##.jsx-4249843366 -conservativefiringline.com##.jtpp53 -theartnewspaper.com##.justify-center.flex.w-full -aiscore.com##.justify-center.w100 -fastcompany.com##.jw-floating-dismissible -anandtech.com##.jw-reset -issuu.com##.jzWDOE -mamieastuce.com##.k39oyi -qz.com##.k3mqd -hltv.org##.kN5UQvcU -ticketmaster##.kOwduY -easypet.com##.kadence-conversion-inner -plagiarismchecker.co##.kaka -hellogiggles.com##.karma_unit -koreaboo.com##.kba-container -kimcartoon.li##.kcAds1 -standard.co.uk##.kcdphh -tekno.kompas.com##.kcm -kdnuggets.com##.kdnug-med-rectangle-ros -goldprice.org##.kenbi -physicsworld.com##.key-suppliers -trustedreviews.com##.keystone-deal -trustedreviews.com##.keystone-single-widget -gamertweak.com##.kfzyntmcd-caption -overkill.wtf##.kg-blockquote-alt -linuxhandbook.com##.kg-bookmark-card -thelibertydaily.com,toptenz.net,vitamiiin.com##.kgbwvoqfwag -koreaherald.com##.kh_ad -koreaherald.com##.khadv1 -khmertimeskh.com##.khmer-content_28 -ytfreedownloader.com##.kl-before-header -kiryuu.id##.kln -wantedinafrica.com##.kn-widget-banner -kvraudio.com##.kvrblockdynamic -legit.ng,tuko.co.ke##.l-adv-branding__top -iphonelife.com##.l-header -globalnews.ca##.l-headerAd -wwe.com##.l-hybrid-col-frame_rail-wrap -vox.com##.l66a0c1k -vox.com##.l66a0c1n -vox.com##.l66a0c1p -keybr.com##.l6Z8JM3mch -letssingit.com##.lai_all_special -letssingit.com##.lai_desktop_header -letssingit.com##.lai_desktop_inline -purewow.com##.lander-interstital-ad -wzstats.gg##.landscape-ad-container -3dprint.com##.lap-block-items -ptonline.com##.large-horizontal-banner -weatherpro.com##.large-leaderboard -dispatchtribunal.com,thelincolnianonline.com##.large-show -fantasygames.nascar.com##.larger-banner-wrapper -golfworkoutprogram.com##.lasso-container -axios.com##.latestStoriesAd -laweekly.com##.law_center_ad -apkpac.com##.layout-beyond-ads -crn.com##.layout-right > .ad-wrapper -flava.co.nz,hauraki.co.nz,mixonline.co.nz,thehits.co.nz,zmonline.com##.layout__background -racingtv.com##.layout__promotion -mytempsms.com##.layui-col-md12 -flotrack.org##.lazy-leaderboard-container -iol.co.za##.lbMtEm -trueachievements.com,truesteamachievements.com,truetrophies.com##.lb_holder -issuu.com##.lbiKNr -leetcode.com##.lc-ads__241X -coincodex.com##.ldb-1top -coincodex.com##.ldb-top -soaphub.com##.ldm_ad -lethbridgenewsnow.com##.lead-in -versus.com##.lead_top -sgcarmart.com##.leadbadv -bleachernation.com##.leadboard -thepcguild.com##.leader -autoplius.lt##.leader-board-wrapper -etonline.com##.leader-inc -mediaweek.com.au##.leader-wrap-out -blaauwberg.net##.leaderBoardContainer -coin360.com##.leader_wrapper -coveteur.com##.leaderboar_promo -agcanada.com,allmusic.com,allrecipes.com,allthatsinteresting.com,autoaction.com.au,autos.ca,ballstatedaily.com,bdonline.co.uk,boardgamegeek.com,bravewords.com,broadcastnow.co.uk,cantbeunseen.com,cattime.com,chairmanlol.com,chemistryworld.com,citynews.ca,comingsoon.net,coolmathgames.com,crn.com.au,diyfail.com,dogtime.com,drugtargetreview.com,edmunds.com,europeanpharmaceuticalreview.com,explainthisimage.com,foodandwine.com,foodista.com,freshbusinessthinking.com,funnyexam.com,funnytipjars.com,gamesindustry.biz,gmanetwork.com,iamdisappoint.com,imedicalapps.com,itnews.asia,itnews.com.au,japanisweird.com,jta.org,legion.org,lifezette.com,liveoutdoors.com,macleans.ca,milesplit.com,monocle.com,morefailat11.com,moviemistakes.com,nbl.com.au,newsonjapan.com,nfcw.com,objectiface.com,passedoutphotos.com,playstationlifestyle.net,precisionvaccinations.com,retail-week.com,rollcall.com,roulettereactions.com,searchenginesuggestions.com,shinyshiny.tv,shitbrix.com,sparesomelol.com,spoiledphotos.com,spokesman.com,sportsnet.ca,sportsvite.com,stopdroplol.com,straitstimes.com,suffolknews.co.uk,supersport.com,tattoofailure.com,thedriven.io,thefashionspot.com,thestar.com.my,titantv.com,tutorialrepublic.com,uproxx.com,where.ca,yoimaletyoufinish.com##.leaderboard -kijiji.ca##.leaderboard-1322657443 -edarabia.com##.leaderboard-728 -abcnews.go.com,edarabia.com##.leaderboard-970 -roblox.com##.leaderboard-abp -gothamist.com##.leaderboard-ad-backdrop -chess.com##.leaderboard-atf-ad-wrapper -howstuffworks.com##.leaderboard-banner -poe.ninja##.leaderboard-bottom -chess.com##.leaderboard-btf-ad-wrapper -mxdwn.com##.leaderboard-bucket -apnews.com,arabiaweather.com,atlasobscura.com,forum.audiogon.com,gamesindustry.biz,golfdigest.com,news957.com##.leaderboard-container -huffingtonpost.co.uk,huffpost.com##.leaderboard-flex-placeholder -huffingtonpost.co.uk,huffpost.com##.leaderboard-flex-placeholder-desktop -bluesnews.com##.leaderboard-gutter -jobrapido.com##.leaderboard-header-wrapper -manitobacooperator.ca##.leaderboard-height -medpagetoday.com##.leaderboard-region -businessinsider.in##.leaderboard-scrollable-btf-cont -businessinsider.in##.leaderboard-scrollable-cont -consequence.net##.leaderboard-sticky -poe.ninja##.leaderboard-top -cbssports.com,nowthisnews.com,popsugar.com,scout.com,seeker.com,thedodo.com,thrillist.com##.leaderboard-wrap -weatherpro.com,wordfinder.yourdictionary.com##.leaderboard-wrapper -6abc.com,abc11.com,abc13.com,abc30.com,abc7.com,abc7chicago.com,abc7news.com,abc7ny.com##.leaderboard2 -save.ca##.leaderboardMainWrapper -cargurus.co.uk##.leaderboardWrapper -t3.com##.leaderboard__container -revolt.tv##.leaderboard_ad -lookbook.nu##.leaderboard_container -rottentomatoes.com##.leaderboard_wrapper -gpfans.com##.leaderboardbg -ubergizmo.com##.leaderboardcontainer -dailyegyptian.com,northernstar.info,theorion.com,theprospectordaily.com##.leaderboardwrap -dnsleak.com##.leak__submit -ecaytrade.com##.leatherboard -homehound.com.au##.left-banner -republicbroadcasting.org##.left-sidebar-padder > #text-8 -gogetaroomie.com##.left-space -10minutemail.net##.leftXL -livemint.com##.leftblockAd -thehansindia.com##.level-after-1-2 -gizmodo.com##.lg\:min-h-\[300px\] -mumsnet.com##.lg\:w-billboard -dailyo.in##.lhsAdvertisement300 -latestly.com##.lhs_adv_970x90_div -gadgets360.com##.lhs_top_banner -nationthailand.com##.light-box-ads -iheartradio.ca##.lightbox-wrapper -rebelnews.com##.lighter-gray-bg -lilo.org##.lilo-ad-result -getbukkit.org##.limit -linuxize.com##.linaff -architecturesideas.com##.linkpub_right_img -babynamegenie.com,forless.com,worldtimeserver.com##.links -weatherpro.com##.list-city-ad -apkmirror.com##.listWidget > .promotedAppListing -nationalmemo.com##.listicle--ad-tag -spiceworks.com##.listing-ads -gosearchresults.com##.listing-right -privateproperty.co.za##.listingResultPremiumCampaign -researchgate.net##.lite-page__above -reviewparking.com##.litespeed-loaded -ottverse.com##.livevideostack-ad -dayspring.com##.loading-mask -reverso.net##.locd-rca -siberiantimes.com##.logoBanner -shacknews.com##.lola-affirmation -rpgsite.net##.long-block-footer -topservers.com##.long_wrap -netwerk24.com##.love2meet -tigerdroppings.com##.lowLead -bikeroar.com##.lower-panel -greatbritishlife.co.uk##.lp_track_vertical2 -foodandwine.com##.lrs__wrapper -lowes.com##.lws_pdp_recommendations_southdeep -lowes.com##.lws_pdp_recommendations_sponsored -thestreet.com##.m-balloon-header -politifact.com##.m-billboard -aol.com##.m-gam__container -aol.com##.m-healthgrades -thestreet.com##.m-in-content-ad-row -techraptor.net##.m-lg-70 -scamrate.com##.m-t-0 -scamrate.com##.m-t-3 -tech.hindustantimes.com##.m-to-add -thestreet.com##.m-video-unit -thegatewaypundit.com##.m0z4dhxja2 -motor1.com##.m1_largeMPU -poebuilds.net##.m6lHKI -bigleaguepolitics.com##.m77g3atigrcd -net-load.com##.m7s-81.m7s -hindustantimes.com##.m_headBanner -morningagclips.com##.mac-ad-group -macdailynews.com##.macdailynews-after-article-ad-holder -antimusic.com##.mad -imyfone.com##.magicmic-banner-2024 -methodshop.com##.mai-aec -wccftech.com##.main-background-wrap -mathgames.com##.main-banner-adContainer -sporcle.com##.main-content-unit-wrapper -numuki.com##.main-header-responsive-wrapper -ggrecon.com##.mainVenatusBannerContainer -nordot.app##.main__ad -gzeromedia.com##.main__post-sponsored -livescores.biz##.make-a-bet_wrap -get.pixelexperience.org##.mantine-arewlw -whatsgabycooking.com##.manual-adthrive-sidebar -linkvertise.com##.margin-bottom-class-20 -color-hex.com##.margin10 -fandom.com##.marketplace -pushsquare.com,songlyrics.com##.masthead -eetimes.eu,korinthostv.gr,powerelectronicsnews.com##.masthead-banner -augustman.com##.masthead-container -cloudwards.net##.max-medium -spin.com##.max-w-\[970px\] -mayoclinic.org##.mayoad -racgp.org.au##.mb-1.small -wccftech.com##.mb-11 -coinlean.com##.mb-3 -gamedev.net##.mb-3.align-items-center.justify-content-start -urbandictionary.com##.mb-4.justify-center -themoscowtimes.com##.mb-4.py-3 -techbone.net##.mb-5.bg-light -yardbarker.com##.mb_promo_responsive_right -firstpost.com##.mblad -mastercomfig.com##.md-typeset[style^="background:"] -ctinsider.com##.md\:block.y100 -thenewdaily.com.au##.md\:h-\[250px\] -bmj.com##.md\:min-h-\[250px\] -medibang.com##.mdbnAdBlock -online-translator.com##.mddlAdvBlock -livejournal.com##.mdspost-aside__item--banner -thestar.com.my##.med-rec -gamezone.com##.med-rect-ph -ghanaweb.com##.med_rec_lg_min -ipwatchdog.com##.meda--sidebar-ad -picuki.me##.media-wrap-h12 -webmd.com##.medianet-ctr -stealthoptional.com##.mediavine_blockAds -gfinityesports.com##.mediavine_sidebar-atf_wrapper -allmusic.com##.medium-rectangle -chess.com##.medium-rectangle-ad-slot -chess.com##.medium-rectangle-btf-ad-wrapper -weatherpro.com##.medium-rectangle-wrapper-2 -ebaumsworld.com##.mediumRect -ubergizmo.com##.mediumbox_container -allnurses.com##.medrec -techrepublic.com##.medusa-list -compoundsemiconductor.net##.mega-bar -theweather.com,theweather.net,yourweather.co.uk##.megabanner -mentalmars.com##.menta-target -2ip.me##.menu_banner -gadgetsnow.com##.mercwapper -audiokarma.org##.message > center b -eawaz.com##.metaslider -theweather.com,theweather.net,yourweather.co.uk##.meteored-ads -metro.co.uk##.metro-discounts -metro.co.uk##.metro-ow-modules -moviefone.com##.mf-incontent -desmoinesregister.com##.mfFsRn__mfFsRn -moneycontrol.com##.mf_radarad -analyticsinsight.net##.mfp-bg -wethegeek.com##.mfp-content -analyticsinsight.net##.mfp-ready -timesofindia.indiatimes.com##.mgid_second_mrec_parent -cryptoreporter.info,palestinechronicle.com##.mh-header-widget-2 -citizen.digital##.mid-article-ad -investing.com##.midHeader -newsday.com##.midPg -battlefordsnow.com,cfjctoday.com,chatnewstoday.ca,everythinggp.com,huskiefan.ca,larongenow.com,meadowlakenow.com,nanaimonewsnow.com,northeastnow.com,panow.com,rdnewsnow.com,sasknow.com,vernonmatters.ca##.midcontent -manofmany.com,scanwith.com##.middle-banner -tradetrucks.com.au##.middle-banner-list -hltv.org##.middle-container -ibtimes.co.uk##.middle-leaderboard -spectator.com.au##.middle-promo -coincodex.com##.middle4 -heatmap.news##.middle_leaderboard -fruitnet.com##.midpageAdvert -extremetech.com##.min-h-24 -copyprogramming.com,imagecolorpicker.com##.min-h-250 -gizmodo.com##.min-h-\[1000px\] -gizmodo.com##.min-h-\[250px\] -radiome.ar,radiome.at,radiome.bo,radiome.ch,radiome.cl,radiome.com.do,radiome.com.ec,radiome.com.gr,radiome.com.ni,radiome.com.pa,radiome.com.py,radiome.com.sv,radiome.com.ua,radiome.com.uy,radiome.cz,radiome.de,radiome.fr,radiome.gt,radiome.hn,radiome.ht,radiome.lu,radiome.ml,radiome.org,radiome.pe,radiome.si,radiome.sk,radiome.sn,radyome.com##.min-h-\[250px\].mx-auto.w-full.hidden.my-1.lg\:flex.center-children -uwufufu.com##.min-h-\[253px\] -instavideosave.net##.min-h-\[280px\] -uwufufu.com##.min-h-\[300px\] -gizmodo.com##.min-h-\[350px\] -insiderintelligence.com##.min-h-top-banner -stripes.com##.min-h90 -mumsnet.com##.min-w-\[300px\] -theland.com.au##.min-w-mrec -moviemeter.com##.minheight250 -kitco.com##.mining-banner-container -ar15.com##.minis -247sports.com##.minutely-wrapper -revolutionsoccer.net##.mls-o-adv-container -mmegi.bw##.mmegi-web-banner -inhabitat.com##.mn-wrapper -beaumontenterprise.com,chron.com,ctinsider.com,ctpost.com,expressnews.com,houstonchronicle.com,lmtonline.com,middletownpress.com,mrt.com,mysanantonio.com,newstimes.com,nhregister.com,registercitizen.com,seattlepi.com,sfchronicle.com,sfgate.com,stamfordadvocate.com,thehour.com,timesunion.com##.mnh90px -allrecipes.com##.mntl-jwplayer-broad -procyclingstats.com##.mob-ad -comicbook.com##.mobile -putlockers.do##.mobile-btn -birdwatchingdaily.com##.mobile-incontent-ad-label -businessplus.ie##.mobile-mpu-widget -forbes.com##.mobile-sticky-ed-placeholder -pcmacstore.com##.mobileHide -serverstoplist.com##.mobile_ad -tipranks.com##.mobile_displaynone.flexccc -thedailybeast.com##.mobiledoc-sizer -criminaljusticedegreehub.com##.mobius-container -etxt.biz##.mod-cabinet__sidebar-adv -etxt.biz##.mod-cabinet__sidebar-info -notateslaapp.com##.mod-sponsors -snowmagazine.com##.mod_banners -lakeconews.com##.mod_ijoomlazone -civilsdaily.com##.modal -breakingenergy.com,epicload.com,shine.cn##.modal-backdrop -livelaw.in##.modal_wrapper_frame -autoevolution.com##.modeladmid -duckduckgo.com##.module--carousel-products -duckduckgo.com##.module--carousel-toursactivities -finextra.com##.module--sponsor -webmd.com##.module-f-hs -webmd.com##.module-top-picks -fxsforexsrbijaforum.com##.module_ahlaejaba -dfir.training##.moduleid-307 -dfir.training##.moduleid-347 -dfir.training##.moduleid-358 -beckershospitalreview.com##.moduletable > .becker_doubleclick -dailymail.co.uk##.mol-fe-vouchercodes-redesign -manofmany.com##.mom-ads__inner -tiresandparts.net##.mom-e3lan -monsoonjournal.com##.mom-e3lanat-wrap -manofmany.com##.mom-gpt__inner -manofmany.com##.mom-gpt__wrapper -mondoweiss.net##.mondo-ads-widget -consumerreports.org##.monetate_selectorHTML_48e69fae -forbes.com##.monito-widget-wrapper -joindota.com##.monkey-container -flickr.com##.moola-search-div.main -hindustantimes.com##.moreFrom -apptrigger.com,fansided.com,lastnighton.com,mlsmultiplex.com,netflixlife.com,playingfor90.com,winteriscoming.net##.mosaic-banner -radioyacht.com##.mpc-carousel__wrapper -98fm.com,airqualitynews.com,audioreview.com,barrheadnews.com,bobfm.co.uk,bordertelegraph.com,cultofandroid.com,dcsuk.info,directory.im,directory247.co.uk,dplay.com,dumbartonreporter.co.uk,dunfermlinepress.com,durhamtimes.co.uk,eastlothiancourier.com,econsultancy.com,entertainmentdaily.co.uk,eurogamer.net,findanyfilm.com,forzaitalianfootball.com,gamesindustry.biz,her.ie,herfamily.ie,joe.co.uk,joe.ie,kentonline.co.uk,metoffice.gov.uk,musicradio.com,newburyandthatchamchronicle.co.uk,newscientist.com,physicsworld.com,readamericanfootball.com,readarsenal.com,readastonvilla.com,readbasketball.com,readbetting.com,readbournemouth.com,readboxing.com,readbrighton.com,readbundesliga.com,readburnley.com,readcars.co,readceltic.com,readchampionship.com,readchelsea.com,readcricket.com,readcrystalpalace.com,readeverton.com,readeverything.co,readfashion.co,readfilm.co,readfood.co,readfootball.co,readgaming.co,readgolf.com,readhorseracing.com,readhuddersfield.com,readhull.com,readingchronicle.co.uk,readinternationalfootball.com,readlaliga.com,readleicester.com,readliverpoolfc.com,readmancity.com,readmanutd.com,readmiddlesbrough.com,readmma.com,readmotorsport.com,readmusic.co,readnewcastle.com,readnorwich.com,readnottinghamforest.com,readolympics.com,readpl.com,readrangers.com,readrugbyunion.com,readseriea.com,readshowbiz.co,readsouthampton.com,readsport.co,readstoke.com,readsunderland.com,readswansea.com,readtech.co,readtennis.co,readtottenham.com,readtv.co,readussoccer.com,readwatford.com,readwestbrom.com,readwestham.com,readwsl.com,realradioxs.co.uk,redhillandreigatelife.co.uk,rochdaleonline.co.uk,rte.ie,sloughobserver.co.uk,smartertravel.com,southwestfarmer.co.uk,spin1038.com,spinsouthwest.com,sportsjoe.ie,sportsmole.co.uk,strathallantimes.co.uk,sundaypost.com,tcmuk.tv,thevillager.co.uk,thisisfutbol.com,toffeeweb.com,uktv.co.uk,videocelts.com,warringtonguardian.co.uk,wiltshirebusinessonline.co.uk,windsorobserver.co.uk##.mpu -news.sky.com##.mpu-1 -edarabia.com##.mpu-300 -physicsworld.com##.mpu-300x250 -arabiaweather.com##.mpu-card -dailymail.co.uk##.mpu_puff_wrapper -mapquest.com##.mq-bizLocs-container -mapquest.co.uk,mapquest.com##.mqBizLocsContainer -10play.com.au,geo.tv,jozifm.co.za,nwherald.com,runt-of-the-web.com,thewest.com.au,topgear.com.ph##.mrec -auto.economictimes.indiatimes.com##.mrec-ads-slot -gmanetwork.com##.mrect -motorsport.com##.ms-ap -autosport.com##.ms-apb -motorsport.com##.ms-apb-dmpu -autosport.com,motorsport.com##.ms-hapb -autosport.com##.ms-side-items--with-banner -codeproject.com##.msg-300x250 -cryptoticker.io##.mso-cls-wrapper -kickassanimes.io##.mt-6.rs -marinetraffic.com##.mt-desktop-mode -thedrive.com##.mtc-header__desktop__article-prefill-container -thedrive.com##.mtc-prefill-container-injected -fieldandstream.com,outdoorlife.com,popsci.com,taskandpurpose.com,thedrive.com##.mtc-unit-prefill-container -forbes.com##.multi-featured-products -myinstants.com##.multiaspect-banner-ad -spy.com##.multiple-products -zerolives.com##.munder-fn5udnsn -cutecoloringpagesforkids.com##.mv-trellis-feed-unit -cannabishealthnews.co.uk##.mvp-side-widget img -marijuanamoment.net##.mvp-widget-ad -malwaretips.com##.mwt_ads -invezz.com,reviewparking.com##.mx-auto -smallseotools.com##.mx-auto.d-block -visortmo.com##.mx-auto.thumbnail.book -theawesomer.com##.mxyptext -standardmedia.co.ke##.my-2 -radio.at,radio.de,radio.dk,radio.es,radio.fr,radio.it,radio.net,radio.pl,radio.pt,radio.se##.my-\[5px\].mx-auto.w-full.hidden.md\:flex.md\:min-h-\[90px\].lg\:min-h-\[250px\].items-center.justify-center -cnet.com,healthline.com##.myFinance-ad-unit -greatist.com,psychcentral.com##.myFinance-widget -tastesbetterfromscratch.com##.mysticky-welcomebar-fixed -troypoint.com##.mysticky-welcomebar-fixed-wrap -koreaherald.com##.mythiell-mid-container -exportfromnigeria.info##.mytopads -mypunepulse.com##.n2-padding -hoteldesigns.net##.n2-ss-slider -naturalblaze.com##.n553lfzn75 -mail.google.com##.nH.PS -cryptobriefing.com##.na-item.item -nanoreview.net##.nad_only_desktop -nextdoor.com##.nas-container -imsa.com,nascar.com##.nascar-ad-container -zerohedge.com##.native -old.reddit.com##.native-ad-container -allthatsinteresting.com##.native-box -blockchair.com##.native-sentence -phillyvoice.com##.native-sponsor -tekno.kompas.com##.native-wrap -ranker.com##.nativeAdSlot_nativeAdContainer__NzSO_ -seura.fi##.nativead:not(.list) -vice.com##.nav-bar__article-spacer -majorgeeks.com##.navigation-light -notebookcheck.net##.nbc-right-float -vocm.com##.nccBigBox -aceshowbiz.com,cmr24.net##.ne-banner-layout1 -meilleurpronostic.fr##.ne4u07a96r5c3 -danpatrick.com##.needsclick -newegg.com##.negspa-brands -nevadamagazine.com##.nevad-article-tall -chaseyoursport.com##.new-adv -play.typeracer.com##.newNorthWidget -pcgamesn.com##.new_affiliate_embed -firstpost.com##.newadd -farminguk.com##.news-advert-button-click -hurriyetdailynews.com##.news-detail-adv -myflixer.to##.news-iframe -dailysocial.id##.news__detail-ads-subs -firstpost.com##.newtopadd -moddb.com##.nextmediaboxtop -nhl.com##.nhl-c-editorial-list__mrec -nhl.com##.nhl-l-section-bg__adv -hulkshare.com##.nhsBotBan -afterdawn.com##.ni_box -bizasialive.com##.nipl-sticky-footer-banner -bizasialive.com##.nipl-top-sony-banr -bizasialive.com##.nipl_add_banners_inner -tumblr.com##.njwip -quipmag.com##.nlg-sidebar-inner > .widget_text -newsmax.com##.nmsponsorlink -newsmax.com##.nmsponsorlink + [class] -pcgamesn.com##.nn_mobile_mpu2_wrapper -pcgamesn.com##.nn_mobile_mpu_wrapper -trueachievements.com,truesteamachievements.com,truetrophies.com##.nn_player_w -publishedreporter.com##.no-bg-box-model -ferrarichat.com##.node_sponsor -greyhound-data.com##.non-sticky-publift -startpage.com##.nord-vpn-promo -unogs.com##.nordvpnAd -miniwebtool.com##.normalvideo -chipchick.com##.noskim.ntv-moap -4dayweek.io##.notadvert-tile-wrapper -thisiscolossal.com##.notblocked -cookingforengineers.com##.nothing -moodiedavittreport.com##.notice -mlsbd.shop##.notice-board -cityam.com##.notice-header -businessgreen.com,computing.co.uk##.notice-slot-full-below-header -torrends.to##.notice-top -all3dp.com##.notification -mondoweiss.net##.notrack -bleepingcomputer.com##.noty_bar -pcgamebenchmark.com##.nova_wrapper -panda-novel.com,pandasnovel.com##.novel-ins2 -nextpit.com##.np-top-deals -designtaxi.com##.nt -nowtoronto.com##.nt-ad-wrapper -designtaxi.com##.nt-displayboard -newtimes.co.rw##.nt-horizontal-ad -newtimes.co.rw##.nt-vertical-ad -english.nv.ua##.nts-video-wrapper -forbes.com##.ntv-loading -marineelectronics.com,marinetechnologynews.com##.nwm-banner -kueez.com,trendexposed.com,wackojacko.com##.nya-slot -nypost.com##.nyp-s2n-wrapper -decider.com##.nyp-video-player -golfdigest.com##.o-ArticleRecirc -drivencarguide.co.nz##.o-adunit -lawandcrime.com,mediaite.com##.o-promo-unit -afkgaming.com##.o-yqC -comicbook.com##.oas -sentres.com##.oax_ad_leaderboard -comiko.net##.ob-widget-items-container -tennis.com##.oc-c-article__adv -officedepot.com##.od-search-piq-banner-ads__lower-leaderboard -gizmodo.com##.od-wrapper -worldsoccertalk.com##.odds-slider-widget -flashscore.co.za##.oddsPlacement -kijiji.ca##.ofGHb -guelphmercury.com##.offcanvas-inner > .tncms-region -softexia.com##.offer -oneindia.com##.oi-add-block -oneindia.com##.oi-recom-art-wrap -oneindia.com##.oi-spons-ad -boldsky.com,drivespark.com,gizbot.com,goodreturns.in,mykhel.com,nativeplanet.com,oneindia.com##.oi-wrapper1 -boldsky.com,drivespark.com,gizbot.com,goodreturns.in,mykhel.com,nativeplanet.com,oneindia.com##.oiad -gizbot.com##.oiadv -hamodia.com##.oiomainlisting -thehackernews.com##.okfix -forums.somethingawful.com##.oma_pal -etonline.com##.omni-skybox-plus-stick-placeholder -oneindia.com##.one-ad -magnoliastatelive.com##.one_by_one_group -techspot.com##.onejob -gameworldobserver.com##.only_link_area -decrypt.co##.opacity-75 -lowtoxlife.com##.openpay-footer -huffpost.com##.openweb-container -politicalsignal.com##.os9x6hrd9qngz -indianexpress.com##.osv-ad-class -thedigitalfix.com##.ot-widget-banner -otakuusamagazine.com##.otaku_big_ad -dictionary.com,thesaurus.com##.otd-item__bottom -mma-core.com##.outVidAd -egmnow.com##.outbrain-wrapper -businesstoday.in##.outer-add-section -salon.com##.outer_ad_container -aminoapps.com##.overflow-scroll-sidebar > div -shtfplan.com##.overlay-container -sports.ndtv.com##.overlay__side-nav -operawire.com##.ow-archive-ad -golfweather.com##.ox300x250 -afkgaming.com##.ozw5N -breakingnews.ie##.p-2.bg-gray-100 -beermoneyforum.com##.p-body-sidebar -startpage.com##.pa-bg -startpage.com##.pa-bg-carousel -phonearena.com##.pa-sticky-container -getpocket.com##.paarv6m -islamicfinder.org##.pad-xs.box.columns.large-12 -republicworld.com##.pad3010.txtcenter -topsmerch.com##.padding-50px -topsmerch.com##.padding-top-20px.br-t -republicworld.com##.padtop10.padright10.padleft10.minheight90 -republicworld.com##.padtop20.txtcenter.minheight90 -realtytoday.com##.page-bottom -scmp.com##.page-container__left-native-ad-container -bitdegree.org##.page-coupon-landing -iheartradio.ca##.page-footer -carsales.com.au,technobuffalo.com##.page-header -realtytoday.com##.page-middle -boxing-social.com##.page-takeover -seeklogo.com##.pageAdsWp -krcrtv.com,ktxs.com,wcti12.com,wcyb.com##.pageHeaderRow1 -military.com##.page__top -rateyourmusic.com##.page_creative_frame -trustedreviews.com##.page_header_container -nzcity.co.nz##.page_skyscraper -mynorthwest.com##.pagebreak -canadianlisted.com##.pageclwideadv -gadgets360.com##.pagepusheradATF -calculatorsoup.com##.pages -topic.com##.pages-Article-adContainer -livejournal.com##.pagewide-wrapper -departures.com##.paid-banner -timesofindia.indiatimes.com##.paisa-wrapper -axn-asia.com,onetvasia.com##.pane-dart-dart-tag-300x250-rectangle -insidehighered.com##.pane-dfp -thebarentsobserver.com##.pane-title -comedycentral.com.au##.pane-vimn-coda-gpt-panes -wunderground.com##.pane-wu-fullscreenweather-ad-box-atf -khmertimeskh.com##.panel-grid-cell -panarmenian.net##.panner_2 -battlefordsnow.com,cfjctoday.com,chatnewstoday.ca,ckpgtoday.ca,everythinggp.com,everythinglifestyle.ca,farmnewsnow.com,fraservalleytoday.ca,huskiefan.ca,larongenow.com,meadowlakenow.com,nanaimonewsnow.com,northeastnow.com,panow.com,rdnewsnow.com,rocketfan.ca,royalsfan.ca,sasknow.com,vernonmatters.ca##.parallax-breakout -pons.com##.parallax-container -squaremile.com##.parallax-wrapper -hltv.org##.parimatch-firstcol-box -myfigurecollection.net,prolificnotion.co.uk##.partner -hbr.org##.partner-center -mail.com##.partner-container -globalwaterintel.com,mavin.io##.partner-content -globalwaterintel.com##.partner-content-carousel -nrl.com##.partner-groups -dzone.com##.partner-resources-block -nationtalk.ca##.partner-slides -artasiapacific.com##.partner_container -motachashma.com,ordertracker.com##.partnerbanner -bundesliga.com##.partnerbar -freshnewgames.com##.partnercontent_box -investopedia.com##.partnerlinks -2oceansvibe.com,speedcafe.com,travelweekly.com##.partners -letsgodigital.org,letsgomobile.org##.partners-bar -cbn.com##.partners-block -practicalecommerce.com##.partners-sidebar -advocate.com##.partners__container -arrivealive.co.za##.partnersheading -liveuamap.com##.passby -writerscafe.org##.pay -nhentai.com##.pb-0.w-100[style] -newkerala.com##.pb-2 .text-mute -dermatologytimes.com##.pb-24 -ahajournals.org,royalsocietypublishing.org,tandfonline.com##.pb-ad -wweek.com##.pb-f-phanzu-phanzu-ad-code -cattime.com,dogtime.com,liveoutdoors.com,playstationlifestyle.net,thefashionspot.com##.pb-in-article-content -playbuzz.com##.pb-site-player -washingtonpost.com##.pb-sm.pt-sm.b -publicbooks.org##.pb_ads_widget -allthatsinteresting.com##.pbh_inline -recipesandcooker.com##.pbl -caixinglobal.com##.pc-ad-left01 -serverstoplist.com##.pcOnly -thefintechtimes.com##.penci-widget-sidebar -dailynews.lk##.penci_topblock -bestbuy.ca##.pencilAd_EE9DV -thegatewaypundit.com,westernjournal.com,wnd.com##.persistent-footer -apkmb.com##.personalizadas -post-gazette.com##.pg-mobile-adhesionbanner -post-gazette.com##.pgevoke-flexbanner-innerwrapper -post-gazette.com##.pgevoke-superpromo-innerwrapper -online.pubhtml5.com##.ph5---banner---container -timesofindia.com##.phShimmer -drivespark.com,gizbot.com##.photos-add -drivespark.com##.photos-left-ad -washingtontimes.com##.piano-in-article-reco -washingtontimes.com##.piano-right-rail-reco -reelviews.net##.picHolder -locklab.com##.picwrap -yopmail.com,yopmail.fr,yopmail.net##.pindexhautctn -carsized.com##.pl_header_ad -redgifs.com##.placard-wrapper -gismeteo.com,meteofor.com,nofilmschool.com##.placeholder -bucksco.today##.placeholder-block -theoldie.co.uk##.placeholder-wrapper -sundayworld.co.za##.placeholderPlug -pcgamebenchmark.com,soccerway.com,streetcheck.co.uk##.placement -pch.com##.placement-content -diglloyd.com,windinmyface.com##.placementInline -diglloyd.com,windinmyface.com##.placementTL -diglloyd.com,windinmyface.com##.placementTR -hagerty.com##.placements -plagiarismtoday.com##.plagi-widget -trakt.tv##.playwire -advfn.com##.plus500 -thepinknews.com##.pn-ad-container -freewebarcade.com##.pnum -radiotoday.co.uk##.pnvqryahwk-container -thespec.com,wellandtribune.ca##.polarAds -bramptonguardian.com,guelphmercury.com,insideottawavalley.com,thestar.com##.polarBlock -autoexpress.co.uk##.polaris__below-header-ad-wrapper -autoexpress.co.uk,carbuyer.co.uk,evo.co.uk##.polaris__partnership-block -bigissue.com##.polaris__simple-grid--full -compoundsemiconductor.net##.popular__section-newsx -wethegeek.com##.popup-dialog -welovemanga.one##.popup-wrap -battlefordsnow.com,cfjctoday.com,everythinggp.com,huskiefan.ca,larongenow.com,lethbridgenewsnow.com,meadowlakenow.com,nanaimonewsnow.com,northeastnow.com,panow.com,rdnewsnow.com,sasknow.com,vernonmatters.ca##.pos-top -buffstreams.sx##.position-absolute -charlieintel.com##.position-sticky -wtop.com##.post--sponsored -engadget.com##.post-article-ad -kiplinger.com##.post-gallery-item-ad -hackread.com##.post-review-li -hellocare.com.au##.post-wrapper__portrait-ads -newagebd.net##.postPageRightInTop -newagebd.net##.postPageRightInTopIn -thetrek.co##.post__in-content-ad -fastcompany.com##.post__promotion -bleedingcool.com##.post_content_spacer -ultrabookreview.com##.postzzif3 -redketchup.io##.potato_sticky -redketchup.io##.potato_viewer -apartmenttherapy.com,cubbyathome.com,thekitchn.com##.pov_recirc__ad -power987.co.za##.power-leader-board-center -thetowner.com##.powered -thecoinrise.com##.pp_ad_block -theportugalnews.com##.ppp-banner -theportugalnews.com##.ppp-inner-banner -oneesports.gg##.pr-sm-4 -hindustantimes.com##.pramotedWidget -birdsandblooms.com,familyhandyman.com,rd.com,tasteofhome.com,thehealthy.com##.pre-article-ad -foxbusiness.com##.pre-content -breakingdefense.com##.pre-footer-menu -sassymamahk.com##.pre_header_widget -vivo.sx##.preload -anfieldwatch.co.uk##.prem-gifts -premiumtimesng.com##.premi-texem-campaign -banjohangout.org,fiddlehangout.com,flatpickerhangout.com,mandohangout.com,resohangout.com##.premiere-sponsors -sulekha.com##.premium-banner-advertisement -pixabay.com##.present-g-item -flobzoo.com##.preview2bannerspot -manutd.com##.primary-header-sponsors -tech.hindustantimes.com##.primeDay -advfn.com##.primis-container -astrology.com##.primis-video-module-horoscope -dicebreaker.com,rockpapershotgun.com##.primis_wrapper -bostonagentmagazine.com##.prm1_w -setlist.fm##.prmtnMbanner -setlist.fm##.prmtnTop -computerweekly.com##.pro-downloads-home -kompass.com##.prodListBanner -ecosia.org##.product-ads-carousel -skinstore.com##.productSponsoredAdsWrapper -letsgodigital.org##.product__wrapper -pbs.org##.production-and-funding -nymag.com##.products-package -nymag.com##.products-package_single -kohls.com##.products_grid.sponsored-product -filehippo.com##.program-actions-header__promo -filehippo.com##.program-description__slot -as.com,gokunming.com##.prom -delicious.com.au,taste.com.au##.prom-header -babynamegenie.com,comparitech.com,ecaytrade.com,nbcbayarea.com,nwherald.com,overclock3d.net,planetsourcecode.com,sciagaj.org,themuslimvibe.com,totalxbox.com,varsity.com,w3techs.com,wgxa.tv##.promo -setapp.com,thesaturdaypaper.com.au##.promo-banner -winscp.net##.promo-block -forums.minecraftforge.net,nextdoor.com,staradvertiser.com,uploadvr.com##.promo-container -texasmonthly.com##.promo-in-body -federalnewsnetwork.com,texasmonthly.com##.promo-inline -spin.com##.promo-lead -coveteur.com##.promo-placeholder -ecaytrade.com##.promo-processed -texasmonthly.com##.promo-topper -lawandcrime.com,themarysue.com##.promo-unit -texasmonthly.com##.promo__vertical -uxmatters.com##.promo_block -reviversoft.com##.promo_dr -macworld.com##.promo_wrap -core77.com##.promo_zone -fool.com##.promobox-container -thedailydigest.com##.promocion_celda -canstar.com.au,designspiration.com,investors.com,propertyguru.com.sg,search.installmac.com##.promoted -twitter.com,x.com##.promoted-account -andoveradvertiser.co.uk,asianimage.co.uk,autoexchange.co.uk,banburycake.co.uk,barryanddistrictnews.co.uk,basildonstandard.co.uk,basingstokegazette.co.uk,bicesteradvertiser.net,borehamwoodtimes.co.uk,bournemouthecho.co.uk,braintreeandwithamtimes.co.uk,brentwoodlive.co.uk,bridgwatermercury.co.uk,bridportnews.co.uk,bromsgroveadvertiser.co.uk,bucksfreepress.co.uk,burnhamandhighbridgeweeklynews.co.uk,burytimes.co.uk,campaignseries.co.uk,chardandilminsternews.co.uk,chelmsfordweeklynews.co.uk,chesterlestreetadvertiser.co.uk,chorleycitizen.co.uk,clactonandfrintongazette.co.uk,cotswoldjournal.co.uk,cravenherald.co.uk,creweguardian.co.uk,dailyecho.co.uk,darlingtonandstocktontimes.co.uk,dorsetecho.co.uk,droitwichadvertiser.co.uk,dudleynews.co.uk,ealingtimes.co.uk,echo-news.co.uk,enfieldindependent.co.uk,eppingforestguardian.co.uk,eveshamjournal.co.uk,falmouthpacket.co.uk,freepressseries.co.uk,gazette-news.co.uk,gazetteherald.co.uk,gazetteseries.co.uk,guardian-series.co.uk,halesowennews.co.uk,halsteadgazette.co.uk,hampshirechronicle.co.uk,harrowtimes.co.uk,harwichandmanningtreestandard.co.uk,heraldseries.co.uk,herefordtimes.com,hillingdontimes.co.uk,ilkleygazette.co.uk,keighleynews.co.uk,kidderminstershuttle.co.uk,knutsfordguardian.co.uk,lancashiretelegraph.co.uk,ledburyreporter.co.uk,leighjournal.co.uk,ludlowadvertiser.co.uk,maldonandburnhamstandard.co.uk,malverngazette.co.uk,messengernewspapers.co.uk,milfordmercury.co.uk,newsshopper.co.uk,northwichguardian.co.uk,oxfordmail.co.uk,penarthtimes.co.uk,prestwichandwhitefieldguide.co.uk,redditchadvertiser.co.uk,redhillandreigatelife.co.uk,richmondandtwickenhamtimes.co.uk,romseyadvertiser.co.uk,runcornandwidnesworld.co.uk,salisburyjournal.co.uk,somersetcountygazette.co.uk,southendstandard.co.uk,southwalesargus.co.uk,southwalesguardian.co.uk,southwestfarmer.co.uk,stalbansreview.co.uk,sthelensstar.co.uk,stourbridgenews.co.uk,surreycomet.co.uk,suttonguardian.co.uk,swindonadvertiser.co.uk,tewkesburyadmag.co.uk,theargus.co.uk,theboltonnews.co.uk,thenational.scot,thenorthernecho.co.uk,thescottishfarmer.co.uk,thetelegraphandargus.co.uk,thetottenhamindependent.co.uk,thewestmorlandgazette.co.uk,thisisthewestcountry.co.uk,thurrockgazette.co.uk,times-series.co.uk,wandsworthguardian.co.uk,warringtonguardian.co.uk,watfordobserver.co.uk,westerntelegraph.co.uk,wharfedaleobserver.co.uk,wiltsglosstandard.co.uk,wiltshiretimes.co.uk,wimbledonguardian.co.uk,wirralglobe.co.uk,witneygazette.co.uk,worcesternews.co.uk,yeovilexpress.co.uk,yorkpress.co.uk,yourlocalguardian.co.uk##.promoted-block -azoai.com,azobuild.com,azocleantech.com,azolifesciences.com,azom.com,azomining.com,azonano.com,azooptics.com,azoquantum.com,azorobotics.com,azosensors.com##.promoted-item -imdb.com##.promoted-provider -coinalpha.app##.promoted_content -reddit.com,reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad.onion##.promotedlink:not([style^="height: 1px;"]) -racingtv.com,twitter.com,wral.com,x.com##.promotion -eetimes.eu##.promotion-block-wrapper -actionnetwork.com##.promotion-table -throwawaymail.com##.promotion_row -bostonreview.net##.promotop -insauga.com##.proper-content-dynamic -highspeedinternet.com##.provider-ads -football365.com,planetf1.com,planetrugby.com##.ps-block-a -kathmandupost.com##.pt-0 -gsmarena.com##.pt-10 -gonintendo.com##.pt-5 -getyarn.io##.pt3p > div -seattlepi.com##.pt40 -1980-games.com,coleka.com,flash-mp3-player.net,gameslol.net,theportugalnews.com,tolonews.com##.pub -starsinsider.com##.pub-container -yabiladi.com##.pub2 -gameslol.net##.pubGside -gameslol.net,yabiladi.com##.pub_header -devhints.io##.pubbox -as.com,desdelinux.net,tutiempo.net,ubunlog.com##.publi -surinenglish.com##.publiTop -catholic.net##.publicidad -eitb.eus##.publicidad_cabecera -eitb.eus##.publicidad_robapaginas -online-stopwatch.com##.publift-div -online-stopwatch.com##.publift-unfixed -101soundboards.com##.publift_in_content_1 -101soundboards.com##.publift_in_content_2 -dailymail.co.uk##.puff_pastel -speedtest.net##.pure-u-custom-ad-rectangle -speedtest.net##.pure-u-custom-wifi-recommendation -appleinsider.com##.push -2conv.com##.push-offer -happymod.com##.pvpbar_ad -onmsft.com##.pw-gtr-box -bleedingcool.com##.pw-in-article -pricecharting.com##.pw-leaderboard -giantfreakinrobot.com##.pw-leaderboard-atf-container -giantfreakinrobot.com##.pw-leaderboard-btf-container -giantfreakinrobot.com##.pw-med-rect-atf-container -giantfreakinrobot.com##.pw-med-rect-btf-container -news18.com##.pwa_add -breakingnews.ie,canberratimes.com.au,theland.com.au##.py-2.bg-gray-100 -fastcompany.com##.py-8 -pymnts.com##.pymnt_ads -euronews.com##.qa-dfpLeaderBoard -thegatewaypundit.com##.qh1aqgd -revolution935.com##.qt-sponsor -coingape.com,dailyboulder.com,townflex.com##.quads-location -surfline.com##.quiver-google-dfp -allthatsinteresting.com##.r-11rk87y -letour.fr##.r-rentraps -tgstat.com##.r1-aors -tripadvisor.com##.rSJod -joins.com,kmplayer.com##.r_banner -check-host.net##.ra-elative -linuxtopia.org##.raCloseButton -time.is##.rad -wahm.com##.rad-links -w3newspapers.com##.rads -theparisreview.org##.rail-ad -bookriot.com##.random-content-pro-wrapper -dappradar.com##.rankings-ad-row -rappler.com##.rappler-ad-container -benzinga.com##.raptive-ad-placement -wdwmagic.com##.raptive-custom-sidebar1 -atlantablackstar.com,finurah.com##.raptive-ddm-header -epicdope.com##.raptive-placeholder-header -gobankingrates.com##.rate-table-header -mydorpie.com##.rbancont -forebet.com##.rbannerDiv -reverso.net##.rcacontent -bookriot.com##.rcp-wrapper -just-dice.com##.realcontent -shareus.io##.recent-purchased -bettycrocker.com##.recipeAd -nypost.com,pagesix.com##.recirc -goodmorningamerica.com##.recirculation-module -videocelebs.net##.recl -nzherald.co.nz##.recommended-articles > .recommended-articles__heading -streamtvinsider.com##.recommended-content -slashgear.com##.recommended-heading -forestriverforums.com##.recommended-stories -last.fm##.recs-feed-item--ad -anisearch.com##.rect_sidebar -zerohedge.com##.rectangle -zerohedge.com##.rectangle-large -knowyourmeme.com##.rectangle-unit-wrapper -redferret.net##.redfads -arras.io##.referral -al-monitor.com##.region--after-content -middleeasteye.net##.region-before-navigation -steveharveyfm.com##.region-recommendation-right -mrctv.org##.region-sidebar -futbol24.com##.rek -wcostream.com##.reklam_pve -cyclingnews.com##.related-articles-wrap -engadget.com##.related-content-lazyload -idropnews.com##.related-posts -timesofindia.indiatimes.com##.relatedVideoWrapper -esports.gg##.relative.esports-inarticle -astrozop.com##.relative.z-5 -miragenews.com##.rem-i-s -4shared.com##.remove-rekl -boldsky.com##.removeStyleAd -runningmagazine.ca##.repeater-bottom-leaderboard -bbjtoday.com##.replacement -m.tribunnews.com##.reserved-topmedium -holiday-weather.com##.resp-leaderboard -box-core.net,mma-core.com##.resp_ban -arras.io##.respawn-banner -guru99.com##.responsive-guru99-mobile1 -thetimes.com##.responsive__InlineAdWrapper-sc-4v1r4q-14 -duckduckgo.com,duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion##.result--ad > .result__body -jetphotos.com##.result--adv -myminifactory.com##.result-adv -word.tips##.result-top-ad -word.tips##.result-words-ad -word.tips##.result-words-ad-new -classifiedads.com##.resultmarg -inchcalculator.com##.results-ad-container-outer -infobel.com##.results-bottom-banner-container -infobel.com##.results-middle-banner-container -infobel.com##.results-top-banner-container -curseforge.com##.rev-container -realmscans.to##.rev-src -utahgunexchange.com##.rev_slider_wrapper -latimes.com,sandiegouniontribune.com##.revcontent -al.com,cleveland.com,lehighvalleylive.com,masslive.com,mlive.com,newyorkupstate.com,oregonlive.com,pennlive.com,silive.com,syracuse.com##.revenue-display -grammar.yourdictionary.com##.revenue-placeholder -therailwayhub.co.uk##.revive -planetizen.com##.revive-sitewide-banner-2__wrapper -planetizen.com##.revive-sitewide-banner__wrapper -hindustantimes.com##.rgtAdSection -timesofindia.indiatimes.com##.rgt_ad -newindian.in##.rhs-ad2 -indianexpress.com##.rhs-banner-carousel -cnbctv18.com##.rhs-home-second-ad -firstpost.com##.rhs-tp-ad -dailyo.in##.rhsAdvertisement300 -livemint.com##.rhsWidgetNotAdFree -moneycontrol.com##.rhs_banner_300x34_widget -siteslike.com##.rif -terminal.hackernoon.com##.right -cnbctv18.com##.right-ad-amp -mathgames.com##.right-ad-override -news.net##.right-banner-wr > .right -africanews.com##.right-legend -essentialenglish.review##.right-panel -jta.org##.right-rail-container -businessinsider.com##.right-rail-min-height-250 -medpagetoday.com##.right-rail-panel -supplychainbrain.com##.right-rail-sponsors -jpost.com##.right-side-banner -businesstoday.in##.right-side-tabola -livemint.com##.rightAdNew -slickdeals.net##.rightRailBannerSection -babycenter.com##.rightRailSegment -boomlive.in##.right_ad_4 -gamemodding.com##.right_banner -softicons.com##.right_ga -thehansindia.com##.right_level_7 -footballdb.com##.rightcol_ad -smartasset.com##.riklam-container -ip.sb##.rivencloud_ads -rocket-league.com##.rlg-footer-ads-container -rocket-league.com##.rlg-trading-ad -rocket-league.com##.rlg-trading-spacer -costco.com##.rm-grid-product -chemistwarehouse.com.au##.rm__campaign-product__slider-item -windowsreport.com##.rmdcb -indiatimes.com##.rmfp -rebelnews.com##.rn-article-ad -rebelnews.com##.rn-sidebar-ad -realitytea.com##.roadblock -surinenglish.com##.roba -cults3d.com##.robots-nocontent -boxrox.com##.rolling-mrt -beforeitsnews.com##.rotating_text_link -superhumanradio.net##.rotating_zone -atalayar.com##.rotulo-publi -flightconnections.com##.route-display-box -nme.com##.row-mobile-billboard -healthnfitness.net##.row-section-game-widget -elnacional.cat##.row-top-banner -steamanalyst.com##.row.tpbcontainer -bikechatforums.com##.row2[style="padding: 5px;"] -onlineocr.net##.row[style*="text-align:right"] -jdpower.com##.rrail__ad-wrap -wikihow.com##.rrdoublewrap -kickassanime.mx,kickassanimes.io##.rs -freewebarcade.com##.rsads -gamertweak.com##.rsgvqezdh-container -box-core.net,mma-core.com##.rsky -rswebsols.com##.rsws_banner_sidebar -nextofwindows.com##.rtsidebar-cm -freewebarcade.com##.rxads -freewebarcade.com##.rxse -bleepingcomputer.com##.s-ou-wrap -hope1032.com.au##.s-supported-by -japantoday.com##.s10r -nodejs.libhunt.com##.saashub-ad -steamladder.com##.salad -salife.com.au##.salife-slot -sherbrookerecord.com##.sam-pro-container -softonic.com##.sam-slot -f95zone.to##.samAlignCenter -audi-sport.net,beermoneyforum.com,clubsearay.com,forums.sailinganarchy.com,geekdoing.com,skitalk.com,sportfishingbc.com,studentdoctor.net##.samBannerUnit -forums.bluemoon-mcfc.co.uk,racedepartment.com,resetera.com,satelliteguys.us##.samCodeUnit -beermoneyforum.com##.samTextUnit -anime-sharing.com,forums.bluemoon-mcfc.co.uk##.samUnitWrapper -netweather.tv##.samsad-Leaderboard2 -teamfortress.tv##.sau -point2homes.com##.saved-search-banner-list -thebudgetsavvybride.com##.savvy-target -pcgamesn.com##.saw-wrap -tvtropes.org##.sb-fad-unit -animehub.ac##.sb-subs -sabcsport.com##.sbac_header_top_ad -pcwdld.com##.sbcontent -mindbodygreen.com##.sc-10p0iao-0 -kotaku.com##.sc-6zn1bq-0 -news.bitcoin.com##.sc-cpornS -distractify.com,inquisitr.com,qthemusic.com,radaronline.com##.sc-fTZrbU -scotsman.com##.sc-igwadP -sankakucomplex.com##.scad -soyacincau.com##.scadslot-widget -bangordailynews.com##.scaip -newindianexpress.com##.scc -radiotimes.com##.schedule__row-list-item-advert -fantasyalarm.com##.scoreboard -hentaihaven.icu,hentaihaven.xxx,hentaistream.tv,nhentai.io##.script_manager_video_master -eatsmarter.com##.scroll-creatives -readmng.com##.scroll_target_top -lethbridgenewsnow.com##.scroller -cyclinguptodate.com,tennisuptodate.com##.sda -userscript.zone##.searcad -dryicons.com##.search-related__sponsored -tempest.com##.search-result-item--ad -minecraftservers.org##.second-banner -businesstoday.in##.secondAdPosition -finextra.com##.section--minitextad -finextra.com##.section--mpu -wbur.org##.section--takeover -sowetanlive.co.za##.section-article-sponsored -nzherald.co.nz##.section-iframe -lawinsider.com##.section-inline-partner-ad -tvarticles.me##.section-post-about -pipeflare.io##.section-promo-banner -thesun.co.uk##.section-sponsorship-wrapper-article -thesun.co.uk##.section-sponsorship-wrapper-section -seattlepride.org##.section_sponsorship -brandsoftheworld.com##.seedling -searchenginejournal.com##.sej-hello-bar -searchenginejournal.com##.sej-ttt-link -timesofisrael.com##.sellwild-label -hypestat.com##.sem_banner -spotifydown.com##.semi-transparent -jambase.com##.sense-300x250 -jambase.com##.sense-970x250 -jambase.com##.sense-headin -shareus.io##.seperator-tag -searchencrypt.com##.serp__top-ads -minecraftforum.net##.server-forum-after-comment-ad -save-editor.com##.set_wrapper -sportbusiness.com##.sf-taxonomy-body__advert-container -pressdemocrat.com##.sfb2024-section__ad -analyticsinsight.net,moviedokan.lol,shortorial.com##.sgpb-popup-overlay -stockhouse.com##.sh-ad -soaphub.com##.sh-sh_belowpost -soaphub.com##.sh-sh_inpost_1 -soaphub.com##.sh-sh_inpost_2 -soaphub.com##.sh-sh_inpost_3 -soaphub.com##.sh-sh_inpost_4 -soaphub.com##.sh-sh_postlist_2_home -themeforest.net##.shared-global_footer-cross_sell_component__root -romzie.com##.shcntr -bestbuy.com##.shop-dedicated-sponsored-carousel -bestbuy.com##.shop-pushdown-ad -stokesentinel.co.uk##.shop-window[data-impr-tracking="true"] -intouchweekly.com,lifeandstylemag.com##.shop-with-us__container -instacart.com##.shoppable-list-a-las2t7 -hypebeast.com##.shopping-break-container -indiatoday.in##.shopping__widget -citychicdecor.com##.shopthepost-widget -mirror.co.uk##.shopwindow-adslot -mirror.co.uk##.shopwindow-advertorial -chess.com##.short-sidebar-ad-component -axios.com##.shortFormNativeAd -fool.com##.show-ad-label -siliconrepublic.com##.show-for-medium-up -thepointsguy.com##.showBb -winx-club-hentai.com##.shr34 -mbauniverse.com##.shriresume-logo -seeklogo.com##.shutterBannerWp -tineye.com##.shutterstock-similar-images -scriptinghelpers.org##.shvertise-skyscraper -cartoq.com##.side-a -chaseyoursport.com##.side-adv-block-blog-open -news.am,nexter.org,viva.co.nz##.side-banner -setapp.com##.side-scrolling__banner -idropnews.com##.side-title-wrap -vpnmentor.com##.side-top-vendors-wrap -pr0gramm.com##.side-wide-skyscraper -seeklogo.com##.sideAdsWp -israelnationalnews.com##.sideInf -freeseotoolbox.net##.sideXd -thefastmode.com##.side_ads -uquiz.com##.side_bar -panarmenian.net##.side_panner -tutorialrepublic.com##.sidebar -collegedunia.com##.sidebar .course-finder-banner -coincodex.com##.sidebar-1skyscraper -ganjapreneur.com##.sidebar-ad-block -oann.com##.sidebar-ad-slot__ad-label -jayisgames.com##.sidebar-ad-top -motorcycle.com##.sidebar-ad-unit -computing.co.uk##.sidebar-block -dailycoffeenews.com##.sidebar-box -nfcw.com##.sidebar-display -thehustle.co##.sidebar-feed-trends -gameflare.com##.sidebar-game -lawandcrime.com,mediaite.com##.sidebar-hook -freshbusinessthinking.com##.sidebar-mpu -spearswms.com##.sidebar-mpu-1 -middleeasteye.net##.sidebar-photo-extend -comedy.com##.sidebar-prebid -domainnamewire.com,repeatreplay.com##.sidebar-primary -libhunt.com##.sidebar-promo-boxed -davidwalsh.name##.sidebar-sda-large -coincodex.com##.sidebar-skyscraper -ldjam.com##.sidebar-sponsor -abovethelaw.com##.sidebar-sponsored -azoai.com,azobuild.com,azocleantech.com,azolifesciences.com,azom.com,azomining.com,azonano.com,azooptics.com,azoquantum.com,azorobotics.com,azosensors.com##.sidebar-sponsored-content -hypebeast.com##.sidebar-spotlights -proprivacy.com##.sidebar-top-vpn -indianapublicmedia.org##.sidebar-upper-underwritings -bigleaguepolitics.com##.sidebar-widget -mobilesyrup.com##.sidebarSponsoredAd -zap-map.com##.sidebar__advert -wordcounter.icu##.sidebar__display -pbs.org##.sidebar__logo-pond -hepper.com##.sidebar__placement -breakingdefense.com,medcitynews.com##.sidebar__top-sticky -snopes.com##.sidebar_ad -pcgamesn.com##.sidebar_affiliate_disclaimer -bxr.com##.sidebar_promo -bleedingcool.com##.sidebar_spacer -alternet.org##.sidebar_sticky_container -macrumors.com##.sidebarblock -macrumors.com##.sidebarblock2 -linuxize.com##.sideblock -dbknews.com##.sidekick-wrap -kit.co##.sidekit-banner -linuxtopia.org##.sidelinks > .sidelinks -atlasobscura.com##.siderail-bottom-affix-placeholder -thespike.gg##.siderail_ad_right -classicalradio.com,jazzradio.com,radiotunes.com,rockradio.com,zenradio.com##.sidewall-ad-component -sifted.eu##.sifted_advert_block -wncv.com##.simple-image -nanoreview.net##.sinad_only_desktop -nanoreview.net##.sinad_only_mobile -metalsucks.net##.single-300-insert -lgbtqnation.com##.single-bottom-ad -9to5mac.com##.single-custom-post-ad -kolompc.com##.single-post-content > center -abovethelaw.com##.single-post__sponsored-post--desktop -policyoptions.irpp.org##.single__ad -deshdoaba.com##.site-branding -archaeology.org##.site-header__iykyk -emulatorgames.net##.site-label -jdpower.com##.site-top-ad -dailycoffeenews.com##.site-top-ad-desktop -emulatorgames.net##.site-unit-lg -macys.com##.siteMonetization -warcraftpets.com##.sitelogo > div -garagejournal.com##.size-full.attachment-full -newsnext.live##.size-large -garagejournal.com##.size-medium -canadianbusiness.com,torontolife.com##.sjm-dfp-wrapper -charismanews.com##.skinTrackClicks -pinkvilla.com##.skinnerAd -hltv.org##.skinport -entrepreneur.com##.sky -edarabia.com##.sky-600 -govexec.com##.skybox-item-sponsored -cbssports.com##.skybox-top-wrapper -cheese.com,datpiff.com,gtainside.com##.skyscraper -plos.org##.skyscraper-container -lowfuelmotorsport.com,newsnow.co.uk##.skyscraper-left -lowfuelmotorsport.com##.skyscraper-right -singaporeexpats.com##.skyscrapers -everythingrf.com,futbol24.com##.skyscrapper -myfoodbook.com.au##.slick--optionset--mfb-banners -as.com##.slider-producto -inbox.com##.slinks -airdriecityview.com,alaskahighwaynews.ca,albertaprimetimes.com,bowenislandundercurrent.com,burnabynow.com,coastreporter.net,cochraneeagle.ca,delta-optimist.com,fitzhugh.ca,moosejawtoday.com,mountainviewtoday.ca,newwestrecord.ca,nsnews.com,piquenewsmagazine.com,princegeorgecitizen.com,prpeak.com,richmond-news.com,rmoutlook.com,sasktoday.ca,squamishchief.com,stalbertgazette.com,thealbertan.com,theorca.ca,townandcountrytoday.com,tricitynews.com,vancouverisawesome.com,westerninvestor.com,westernwheel.ca##.slot -nicelocal.com##.slot-service-2 -nicelocal.com##.slot-service-top -iheartradio.ca##.slot-topNavigation -independent.ie##.slot1 -independent.ie##.slot4 -boxofficemojo.com,imdb.com##.slot_wrapper -drivereasy.com##.sls_pop -sltrib.com##.sltrib_medrec_sidebar_atf -skinnyms.com##.sm-above-header -dermatologytimes.com##.sm\:w-\[728px\] -bikeexif.com##.small -dutchnews.nl##.small-add-block -numuki.com##.small-banner-responsive-wrapper -startup.ch##.smallbanner -food.com##.smart-aside-inner -food.com##.smart-rail-inner -watchinamerica.com##.smartmag-widget-codes -pressdemocrat.com##.smiPlugin_rail_ad_widget -secretchicago.com##.smn-new-gpt-ad -rugby365.com##.snack-container -small-screen.co.uk##.snackStickyParent -dailyevergreen.com##.sno-hac-desktop-1 -khmertimeskh.com##.so-widget-sow-image -u.today##.something -u.today##.something--fixed -u.today##.something--wide -songfacts.com##.songfacts-song-inline-ads -greatandhra.com##.sortable-item_top_add123 -khmertimeskh.com##.sow-slider-image -freeonlineapps.net##.sp -academickids.com##.spacer150px -quora.com##.spacing_log_question_page_ad -infoq.com##.spns -informer.com##.spnsd -sundayworld.co.za##.spnsorhome -mydramalist.com##.spnsr -worldtimezone.com##.spon-menu -andrewlock.net,centos.org,domainincite.com,europages.co.uk,gamingcloud.com,ijr.com,kpbs.org,manutd.com,phillyvoice.com,phish.report,speedcafe.com,thefederalistpapers.org,thegatewaypundit.com,ufile.io,westernjournal.com,wnd.com##.sponsor -cssbattle.dev##.sponsor-container -dallasinnovates.com##.sponsor-footer -jquery.com##.sponsor-line -newsroom.co.nz##.sponsor-logos2 -fimfiction.net##.sponsor-reminder -compellingtruth.org##.sponsor-sidebar -cricketireland.ie##.sponsor-strip -arizonasports.com,ktar.com##.sponsorBy -cryptolovers.me##.sponsorContent -blbclassic.org##.sponsorZone -2b2t.online,caixinglobal.com,chicagobusiness.com,chronicle.co.zw,dailymaverick.co.za,dailytarheel.com,duckduckgo.com,duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion,dunyanews.tv,fifplay.com,freebmd.org.uk,hbr.org,herald.co.zw,lawandcrime.com,libhunt.com,motherjones.com,naval-technology.com,reviewjournal.com,saashub.com,samedicalspecialists.co.za,sportsbusinessjournal.com,statnews.com,stocksnap.io,thedp.com,timeslive.co.za##.sponsored -newegg.com##.sponsored-brands -cheknews.ca##.sponsored-by -washingtontimes.com##.sponsored-heading -itweb.co.za##.sponsored-highlights -breakingdefense.com##.sponsored-inline -freesvg.org##.sponsored-main-detail -justwatch.com##.sponsored-recommendation -crn.com##.sponsored-resources -search.brave.com##.sponsored-unit_wrapper -coingecko.com##.sponsored-v2 -investing.com##.sponsoredArticle -tech.hindustantimes.com##.sponsoredBox -coinmarketcap.com##.sponsoredMark -lookfantastic.com##.sponsoredProductsList -circleid.com##.sponsoredTopicCard -hannaford.com##.sponsored_product -meijer.com##.sponsoredproducts -ar15.com,armageddonexpo.com,audiforums.com,f1gamesetup.com,ferrarichat.com,hotrodhotline.com,jaguarforums.com,pypi.org,smashingmagazine.com,thebugle.co.za,waamradio.com,wbal.com,webtorrent.io##.sponsors -vuejs.org##.sponsors-aside-text -salixos.org##.sponsors-container -libhunt.com##.sponsors-list-content -petri.com##.sponsorsInline -newswiretoday.com,przoom.com##.sponsortd -alexandriagazette.com,arlingtonconnection.com,burkeconnection.com,centre-view.com,coincost.net,connection-sports.com,fairfaxconnection.com,fairfaxstationconnection.com,greatfallsconnection.com,herndonconnection.com,mcleanconnection.com,mountvernongazette.com,phonearena.com,potomacalmanac.com,reston-connection.com,springfieldconnection.com,viennaconnection.com##.spot -phonearena.com##.spot-sticky-container -freepik.com##.spr-adblock -freepik.com##.spr-plc -gemoo.com##.sprtadv -bizarrepedia.com##.spsnrd -collive.com##.spu-bg -collive.com##.spu-box -motorauthority.com##.sq-block -reneweconomy.com.au##.sq_get_quotes -ftvlive.com##.sqs-block-image-link -nutritioninsight.com,packaginginsights.com##.squarblk -autoaction.com.au,snokido.com##.square -flvto.biz,flvto.com.mx##.square-area -getmyuni.com##.squareDiv -cathstan.org##.squat -ebay.co.uk,ebay.com,ebay.com.au##.srp-1p__link -mlsbd.shop##.srzads -theblueoceansgroup.com##.ss-on-media-container -searchenginejournal.com##.sss2_sllo_o3 -aupetitparieur.com##.st85ip42z1v3x -cnn.com##.stack__ads -barrons.com##.standard__AdWrapper-sc-14sjre0-6 -geoguessr.com##.start__display-ad -coingape.com##.stcikyright -bostonglobe.com##.stick_1200--tablet -ar15.com##.stickers -kathmandupost.com##.sticky--bottom -healthing.ca##.sticky-ad-spacer-desktop -religionnews.com##.sticky-ad-white-space -rugbyonslaught.com##.sticky-add -thenationonlineng.net##.sticky-advert -gr8.cc,psycatgames.com##.sticky-banner -note.nkmk.me##.sticky-block -pastpapers.co##.sticky-bottom -golfmagic.com,kbb.com,thisismoney.co.uk##.sticky-container -goterriers.com##.sticky-footer -walletinvestor.com##.sticky-footer-content -babylonbee.com##.sticky-footer-image -kmzu.com##.sticky-footer-promo-container -business2community.com##.sticky-header -sciencing.com,sportsnet.ca##.sticky-leaderboard-container -fastcompany.com##.sticky-outer-wrapper -niagarathisweek.com##.sticky-parent -foxweather.com##.sticky-pre-content -foxnews.com##.sticky-pre-header -foxnews.com##.sticky-pre-header-inner -theportugalnews.com##.sticky-pub -almanac.com##.sticky-right-sidebar -thechinaproject.com##.sticky-spacer -oilcity.news##.sticky-sponsors-large -jpost.com##.sticky-top-banner -litecoin-faucet.com##.sticky-top1 -theblock.co,thekitchn.com##.stickyFooter -everythingrf.com##.stickyRHSAds -cnet.com##.stickySkyboxSpacing -fastfoodnutrition.org##.sticky_footer -pcgamesn.com##.sticky_rail600 -minecraftlist.org##.stickywrapper -romzie.com##.stksht -seattletimes.com##.stn-player -dailyherald.com##.stnContainer -stationx.net##.stnx-cta-embed -groceries.asda.com##.sto_format -dailycoffeenews.com##.story-ad-horizontal -dailykos.com##.story-banner-ad-placeholder -bqprime.com##.story-base-template-m__vuukle-ad__g1YBt -nzherald.co.nz##.story-card--sponsored--headline -nzherald.co.nz##.story-card--sponsored-text-below -stadiumtalk.com##.story-section-inStory-inline -interest.co.nz##.story-tag-wrapper -healthshots.com##.storyBlockOne -livemint.com##.storyPage_storyblockAd__r4wwE -businesstoday.in##.stoybday-ad -24fm.ps,datingscammer.info,kayifamily.net,news365.co.za,xboxera.com##.stream-item -siasat.com##.stream-item-below-post-content -twitter.com,x.com##.stream-item-group-start[label="promoted"] -coinpedia.org,siasat.com##.stream-item-inline-post -conservativebrief.com##.stream-item-mag -hardwaretimes.com##.stream-item-size -how2electronics.com##.stream-item-top -todayuknews.com##.stream-item-top-wrapper -siasat.com##.stream-item-widget -news365.co.za##.stream-item-widget-content -coinpedia.org##.stream-title -open3dlab.com##.stream[style="align-items:center; justify-content:center;"] -stellar.ie##.stuck -news.stv.tv##.stv-article-gam-slot -dbltap.com##.style_7z5va1-o_O-style_48hmcm-o_O-style_1ts1q2h -inyourarea.co.uk##.style_advertisementMark_1Jki4 -inyourarea.co.uk##.style_cardWrapper_ycKf8 -amazonadviser.com,apptrigger.com,arrowheadaddict.com,bamsmackpow.com,fansided.com,gamesided.com,gojoebruin.com,hiddenremote.com,lastnighton.com,mlsmultiplex.com,netflixlife.com,playingfor90.com,stormininnorman.com,winteriscoming.net##.style_k8mr7b-o_O-style_1ts1q2h -nationalheraldindia.com##.styles-m__dfp__3T0-C -streamingsites.com##.styles_adverticementBlock__FINvH -streamingsites.com##.styles_backdrop__8uFQ4 -egamersworld.com##.styles_bb__hb10X -producthunt.com##.styles_item__hNPI1 -egamersworld.com##.styles_sidebar__m6yLy -troypoint.com##.su-box -cfoc.org##.su-button-style-glass -buzzfeed.com##.subbuzz-bfp--connatix_video -proprivacy.com##.summary-footer-cta -monocle.com##.super-leaderboard -atalayar.com,express.co.uk,the-express.com##.superbanner -f1gamesetup.com##.supp-footer-banner -f1gamesetup.com##.supp-header-banner -f1gamesetup.com##.supp-sense-desk-large -f1gamesetup.com##.supp-sense-sidebar-box-large -f1gamesetup.com##.supp-sidebar-box -japantimes.co.jp##.supplements-binder -ocado.com##.supplierBanner -cdromance.com##.support-us -fstoppers.com##.supportImg -indiedb.com,moddb.com##.supporter -hyiptop.net##.supporthome -techreen.com##.svc_next_content -survivopedia.com##.svp_campaign_main -timesofmalta.com##.sw-Top -saltwire.com##.sw-banner -swimswam.com##.swimswam-acf -khmertimeskh.com##.swiper-container-horizontal -outlook.advantis.ai##.swiper-initialized.swiper -khmertimeskh.com##.swiper-wrapper -top100token.com##.swiper_div.right-pad -presearch.com##.sx-top-bar-products -html-online.com##.szekcio4 -dagens.com,dagens.dk##.t-1 > .con-0 > .r-1 > .row > .c-0 > .generic-widget[class*=" i-"] > .g-0 -dagens.com,dagens.de,dagens.dk##.t-1 > .con-0 > .r-2 .row > .c-1 > .generic-widget[class*=" i-"] > .g-0 -royalroad.com##.t-center-2 -interestingengineering.com##.t-h-\[130px\] -interestingengineering.com##.t-h-\[176px\] -interestingengineering.com##.t-h-\[280px\] -patriotnationpress.com##.t2ampmgy -sbenny.com##.t3-masthead -emoneyspace.com##.t_a_c -theanalyst.com##.ta-ad -ucompares.com##.tablepress-id-46 -posemaniacs.com##.tabletL\:w-\[728px\] -moco360.media,protocol.com##.tag-sponsored -spectrum.ieee.org##.tag-type-whitepaper -ghanaweb.com,thefastmode.com##.takeover -thefastmode.com##.takeover_message -seattletimes.com##.tall-rect -igg-games.com##.taxonomy-description -zenger.news##.tb_e2rr695 -bookriot.com##.tbr-promo -tennis.com##.tc-video-player-iframe -ghpage.com##.td-a-ad -antiguanewsroom.com,aptoslife.com,aviacionline.com,betootaadvocate.com,bohemian.com,carnewschina.com,constructionreviewonline.com,corvetteblogger.com,cyberparse.co.uk,darkhorizons.com,eastbayexpress.com,eindhovennews.com,ericpetersautos.com,fenuxe.com,gameplayinside.com,gamezone.com,ghpage.com,gilroydispatch.com,gizmochina.com,goodtimes.sc,goonhammer.com,greekreporter.com,greenfieldnews.com,healdsburgtribune.com,indianapolisrecorder.com,industryhit.com,jewishpress.com,kenyan-post.com,kingcityrustler.com,lankanewsweb.net,maltabusinessweekly.com,metrosiliconvalley.com,morganhilltimes.com,musictech.net,mycariboonow.com,nasilemaktech.com,newsnext.live,newstalkflorida.com,nme.com,pacificsun.com,pajaronian.com,pakobserver.net,pipanews.com,pressbanner.com,radioink.com,runnerstribe.com,salinasvalleytribune.com,sanbenito.com,scrolla.africa,sonorannews.com,tamilwishesh.com,telugubullet.com,theindependent.co.zw,unlockboot.com,wrestling-online.com,zycrypto.com##.td-a-rec -zycrypto.com##.td-a-rec-id-content_bottom -zycrypto.com##.td-a-rec-id-custom_ad_2 -thediplomat.com##.td-ad-container--labeled -unlockboot.com##.td-ads-home -techgenyz.com##.td-adspot-title -bizasialive.com##.td-all-devices -americanindependent.com##.td-banner-bg -brila.net,cgmagonline.com,cycling.today,gayexpress.co.nz,theyeshivaworld.com##.td-banner-wrap-full -boxthislap.org,ticgn.com,wtf1.co.uk##.td-footer-wrapper -techyv.com##.td-header-header -healthyceleb.com##.td-header-header-full -androidcommunity.com,techworm.net##.td-header-rec-wrap -5pillarsuk.com,babeltechreviews.com,cybersecuritynews.com,sonorannews.com,techviral.net,thestonedsociety.com,weekendspecial.co.za##.td-header-sp-recs -runnerstribe.com##.td-post-content a[href^="https://tarkine.com/"] -antiguanewsroom.com,gadgetstouse.com##.td-ss-main-sidebar -techgenyz.com##.td_block_single_image -capsulenz.com,dexdotexe.com,ssbcrack.com,thecoinrise.com##.td_spot_img_all -arynews.tv##.tdi_103 -techgenyz.com##.tdi_114 -pakobserver.net##.tdi_121 -pakobserver.net##.tdi_124 -carnewschina.com##.tdi_162 -greekreporter.com##.tdi_18 -techgenyz.com##.tdi_185 -based-politics.com##.tdi_30 -teslaoracle.com##.tdi_48 -coinedition.com##.tdi_59 -ghpage.com##.tdi_63 -coinedition.com##.tdi_95 -coinedition.com##.tdm-inline-image-wrap -lankanewsweb.net##.tdm_block_inline_image -hltv.org##.team-player-profile-below-trophies-placement -who.is##.teaser-bar -liverpoolecho.co.uk,manchestereveningnews.co.uk##.teaser[data-tmdatatrack-source="SHOP_WINDOW"] -semiconductor-today.com##.teaserexternal.teaser -techopedia.com##.techo-adlabel -technology.org##.techorg-banner -sporcle.com##.temp-unit -macrumors.com##.tertiary -speedof.me##.test-ad-container -ericpetersautos.com##.text-109 -stupiddope.com##.text-6 -hackread.com##.text-61 -vuejs.org##.text-ad -how2shout.com##.text-ads -y2down.cc##.text-center > a[href="https://loader.to/loader.apk"] -skylinewebcams.com##.text-center.cam-light -charlieintel.com,dexerto.com##.text-center.italic -ascii-code.com##.text-center.mb-3 -upi.com##.text-center.mt-5 -thegradcafe.com##.text-center.py-3 -whatismyisp.com##.text-gray-100 -businessonhome.com##.text-info -mastercomfig.com##.text-start[style^="background:"] -geeksforgeeks.org##.textBasedMannualAds_2 -putlockers.do##.textb -sciencedaily.com##.textrule -evilbeetgossip.com,kyis.com,thesportsanimal.com,wild1049hd.com,wky930am.com##.textwidget -tftcentral.co.uk##.tftce-adlabel -thejakartapost.com##.the-brief -vaughn.live##.theMvnAbvsLowerThird -steelersdepot.com##.theiaStickySidebar -serverhunter.com##.this-html-will-keep-changing-these-ads-dont-hurt-you-advertisement -gearspace.com##.thread__sidebar-ad-container -geeksforgeeks.org##.three90RightBarBanner -aardvark.co.nz##.tinyprint -blendernation.com##.title -cryptocompare.com##.title-hero -thejakartapost.com##.tjp-ads -thejakartapost.com##.tjp-placeholder-ads -kastown.com##.tkyrwhgued -onlinecourse24.com##.tl-topromote -themighty.com##.tm-ads -trademe.co.nz##.tm-display-ad__wrapper -nybooks.com##.toast-cta -spy.com##.todays-top-deals-widget -last.fm##.tonefuze -euobserver.com,medicinehatnews.com##.top -charlieintel.com,dexerto.com##.top-0.justify-center -mashable.com##.top-0.sticky > div -charlieintel.com,dexerto.com##.top-10 -cartoq.com##.top-a -freedomleaf.com##.top-ab -cartoq.com##.top-ad-blank-div -forbes.com##.top-ad-container -artistdirect.com##.top-add -firstpost.com##.top-addd -n4g.com,techspy.com##.top-ads-container-outer -jamieoliver.com##.top-avocado -advfn.com##.top-ban-wrapper -addictivetips.com,automotive-fleet.com,businessfleet.com,cfl.ca,fleetfinancials.com,forbesindia.com,government-fleet.com,howsecureismypassword.net,ncaa.com,pcwdld.com,rigzone.com,schoolbusfleet.com,wltreport.com##.top-banner -smartasset.com##.top-banner-ctr -gptoday.net##.top-banner-leaderboard -numuki.com##.top-banner-responsive-wrapper -gamewatcher.com##.top-banners-wrapper -papermag.com##.top-billboard__below-title-ad -livescores.biz##.top-bk -blockchair.com##.top-buttons-wrap -freedesignresources.net##.top-cat-ads -procyclingstats.com##.top-cont -foodrenegade.com##.top-cta -forbes.com##.top-ed-placeholder -forexlive.com##.top-forex-brokers__wrapper -theguardian.com##.top-fronts-banner-ad-container -debka.com##.top-full-width-sidebar -reverso.net##.top-horizontal -india.com##.top-horizontal-banner -spectrum.ieee.org##.top-leader-container -thedailystar.net##.top-leaderboard -sportingnews.com##.top-mpu-container -webmd.com##.top-picks -speedtest.net##.top-placeholder -financemagnates.com,forexlive.com##.top-side-unit -horoscope.com##.top-slot -cryptoslate.com##.top-sticky -playbuzz.com##.top-stickyplayer-container -news18.com##.topAdd -ganjingworld.com##.topAdsSection_wrapper__cgH4h -timesofindia.indiatimes.com##.topBand_adwrapper -ada.org,globes.co.il,techcentral.ie,texteditor.co,versus.com##.topBanner -pcworld.com##.topDeals -tech.hindustantimes.com##.topGadgetsAppend -tutorviacomputer.com##.topMargin15 -click2houston.com,clickondetroit.com,clickorlando.com,ksat.com,local10.com,news4jax.com##.topWrapper -giveawayoftheday.com,informer.com##.top_ab -theepochtimes.com##.top_ad -asmag.com,tiresandparts.net##.top_banner -joebucsfan.com##.top_banner_cont -archaeology.org##.top_black -searchenginejournal.com##.top_lead -justjared.com,justjaredjr.com##.top_rail_shell -fark.com##.top_right_container -allnigerianrecipes.com,antimusic.com,roadtests.com##.topad -cycleexif.com,thespoken.cc##.topban -eurointegration.com.ua##.topban_r -axisbank.com##.topbandBg_New -algemeiner.com,allmonitors24.com,streamable.com##.topbanner -drugs.com##.topbanner-wrap -videogamemods.com##.topbanners -papermag.com##.topbarplaceholder -belfastlive.co.uk,birminghammail.co.uk,bristolpost.co.uk,cambridge-news.co.uk,cheshire-live.co.uk,chroniclelive.co.uk,cornwalllive.com,coventrytelegraph.net,dailypost.co.uk,derbytelegraph.co.uk,devonlive.com,dublinlive.ie,edinburghlive.co.uk,examinerlive.co.uk,getsurrey.co.uk,glasgowlive.co.uk,gloucestershirelive.co.uk,hertfordshiremercury.co.uk,kentlive.news,leeds-live.co.uk,leicestermercury.co.uk,lincolnshirelive.co.uk,manchestereveningnews.co.uk,mylondon.news,nottinghampost.com,somersetlive.co.uk,stokesentinel.co.uk,walesonline.co.uk##.topbox-cls-placeholder -blabber.buzz##.topfeed -cambridge.org,ldoceonline.com##.topslot-container -collinsdictionary.com##.topslot_container -startpage.com##.total-adblock-desktop -moviemistakes.com##.tower -towleroad.com##.towletarget -utahgunexchange.com##.tp-revslider-mainul -steamanalyst.com##.tpbcontainerr -techreen.com##.tr-block-header-ad -techreen.com##.tr-block-label -torbay.gov.uk##.track -futurism.com##.tracking-wider -adsoftheworld.com,futurism.com##.tracking-widest -bincodes.com##.transferwise -sun-sentinel.com##.trb_sf_hl -coinmarketcap.com##.trending-sponsored -livemint.com##.trendingSimilarHeight -iflscience.com##.trendmd-container -naturalblaze.com##.trfkye8nxr -thumbsnap.com##.ts-blurb-wrap -thesimsresource.com##.tsr-ad -yidio.com##.tt -telegraphindia.com##.ttdadbox310 -venturebeat.com##.tude-cw-wrap -tutorialink.com##.tutorialink-ad1 -tutorialink.com##.tutorialink-ad2 -tutorialink.com##.tutorialink-ad3 -tutorialink.com##.tutorialink-ad4 -roseindia.net##.tutorialsstaticdata -tvtropes.org##.tvtropes-ad-unit -drivencarguide.co.nz##.tw-bg-gray-200 -todayonline.com##.tw-flex-shrink-2 -drivencarguide.co.nz##.tw-min-h-\[18\.75rem\] -karnalguide.com##.two_third > .push20 -tripadvisor.at,tripadvisor.be,tripadvisor.ca,tripadvisor.ch,tripadvisor.cl,tripadvisor.cn,tripadvisor.co,tripadvisor.co.id,tripadvisor.co.il,tripadvisor.co.kr,tripadvisor.co.nz,tripadvisor.co.uk,tripadvisor.co.za,tripadvisor.com,tripadvisor.com.ar,tripadvisor.com.au,tripadvisor.com.br,tripadvisor.com.eg,tripadvisor.com.gr,tripadvisor.com.hk,tripadvisor.com.mx,tripadvisor.com.my,tripadvisor.com.pe,tripadvisor.com.ph,tripadvisor.com.sg,tripadvisor.com.tr,tripadvisor.com.tw,tripadvisor.com.ve,tripadvisor.com.vn,tripadvisor.de,tripadvisor.dk,tripadvisor.es,tripadvisor.fr,tripadvisor.ie,tripadvisor.in,tripadvisor.it,tripadvisor.jp,tripadvisor.nl,tripadvisor.pt,tripadvisor.ru,tripadvisor.se##.txxUo -theroar.com.au##.u-d-block -patriotnationpress.com##.u8s470ovl -tumblr.com##.uOyjG -ubergizmo.com##.ubergizmo-dfp-ad -unlockboot.com##.ubhome-banner -darko.audio##.ubm_widget -unlockboot.com##.ubtopheadads -barrons.com,wsj.com##.uds-ad-container -golflink.com,grammar.yourdictionary.com,yourdictionary.com##.ui-advertisement -m.rugbynetwork.net##.ui-footer-fixed -businessday.ng##.uiazojl -nullpress.net##.uinyk-link -zpaste.net##.uk-animation-shake -telegraphindia.com##.uk-background-muted -doodrive.com##.uk-margin > [href] > img -igg-games.com##.uk-panel.widget-text -softarchive.is##.un-link -collegedunia.com##.unacedemy-wrapper -uncanceled.news##.uncan-content_11 -pixhost.to##.under-image -hidefninja.com##.underads -inquinte.ca##.unit-block -bobvila.com##.unit-header-container -sciencedaily.com##.unit1 -sciencedaily.com##.unit2 -gpucheck.com##.unitBox -pravda.com.ua##.unit_side_banner -thegamerstation.com##.universal-js-insert -thegradcafe.com##.upcoming-events -pcgamingwiki.com##.upcoming-releases.home-card:first-child -filepuma.com##.update_software -letterboxd.com##.upgrade-kicker -upworthy.com##.upworthy_infinite_scroll_ad -upworthy.com##.upworthy_infinte_scroll_outer_wrap -uproxx.com##.upx-ad-unit -vervetimes.com##.uyj-before-header -vitalmtb.com##.v-ad-slot -surinenglish.com##.v-adv -militarywatchmagazine.com##.v-size--x-small.theme--light -tetris.com##.vAxContainer-L -tetris.com##.vAxContainer-R -zillow.com##.vPTHT -osuskins.net##.vad-container -lasvegassun.com##.varWrapper -tech.co##.vc_col-sm-4 -salaamedia.com##.vc_custom_1527667859885 -salaamedia.com##.vc_custom_1527841947209 -businessday.ng##.vc_custom_1627979893469 -progamerage.com##.vc_separator -battlefordsnow.com,cfjctoday.com,everythinggp.com,filmdaily.co,huskiefan.ca,larongenow.com,meadowlakenow.com,nanaimonewsnow.com,northeastnow.com,panow.com,rdnewsnow.com,sasknow.com,vernonmatters.ca##.vc_single_image-wrapper -itmunch.com##.vc_slide -ktm2day.com##.vc_wp_text -ggrecon.com##.venatus-block -mobafire.com##.venatus-responsive-ad -theloadout.com##.venatus_ad -fox10phoenix.com,fox13news.com,fox26houston.com,fox29.com,fox2detroit.com,fox32chicago.com,fox35orlando.com,fox4news.com,fox5atlanta.com,fox5dc.com,fox5ny.com,fox6now.com,fox7austin.com,fox9.com,foxbusiness.com,foxla.com,foxnews.com,ktvu.com,q13fox.com,wogx.com##.vendor-unit -cryptonews.net##.vert-public -mmegi.bw##.vertical-banner -radiocity.in##.vertical-big-add -radiocity.in##.vertical-small-add -hashrate.no##.verticalAdContainer -packaginginsights.com##.verticlblk -forbes.com##.vestpocket -mirror.co.uk##.vf3-conversations-list__promo -videogameschronicle.com##.vgc-productsblock -bestlifeonline.com,eatthis.com,hellogiggles.com##.vi-video-wrapper -express.co.uk##.viafoura-standalone-mpu -vice.com##.vice-ad__container -victoriabuzz.com##.victo-billboard-desktop -sportskeeda.com##.vidazoo-player-container -justthenews.com##.video--vdo-ai -songkick.com##.video-ad-wrapper -forexlive.com##.video-banner__wrapper -cyclinguptodate.com##.video-container -floridasportsman.com##.video-detail-player -gbnews.com##.video-inbody -emptycharacter.com##.video-js -forbes.com,nasdaq.com##.video-placeholder -flicksmore.com##.video_banner -guru99.com##.videocontentmobile -justthenews.com##.view--breaking-news-sponsored -teachit.co.uk##.view-advertising-display -koreabiomed.com##.view-aside -costco.com##.view-criteo-carousel -vigilantcitizen.com##.vigil-leaderboard-article -vigilantcitizen.com##.vigil-leaderboard-home -variety.com##.vip-banner -kijiji.ca##.vipAdsList-3883764342 -pokernews.com##.virgutis -coincheckup.com##.visible-xs > .ng-isolate-scope -visualcapitalist.com##.visua-target -roosterteeth.com##.vjs-marker -koreaboo.com##.vm-ads-dynamic -belloflostsouls.net,ginx.tv,op.gg,theloadout.com##.vm-placement -c19-worldnews.com##.vmagazine-medium-rectangle-ad -gosunoob.com##.vntsvideocontainer -darkreader.org##.vpnwelt -valueresearchonline.com##.vr-adv-container -trueachievements.com##.vr-auction -hentaihaven.xxx##.vrav_a_pc -fastpic.ru##.vright -vaughn.live##.vs_v9_LTabvsLowerThirdWrapper -vaughn.live##.vs_v9_LTabvsLower_beta -vsbattles.com##.vsb_ad -vsbattles.com##.vsb_sticky -notateslaapp.com##.vtwjhpktrbfmw -wral.com##.vw3Klj -horoscopes.astro-seek.com##.vyska-sense -androidpolice.com##.w-pencil-banner -wsj.com##.w27771 -userscript.zone##.w300 -swimcompetitive.com##.waldo-display-unit -wetransfer.com##.wallpaper -goodfon.com##.wallpapers__banner240 -dailymail.co.uk,thisismoney.co.uk##.watermark -watson.ch##.watson-ad -wbal.com##.wbal-banner -technclub.com##.wbyqkx-container -wccftech.com##.wccf_video_tag -searchencrypt.com##.web-result.unloaded.sr -northernvirginiamag.com##.website-header__ad--leaderboard -probuilds.net##.welcome-bnr -taskcoach.org##.well -gearlive.com##.wellvert -pcguide.com##.wepc-takeover-sides -pcguide.com##.wepc-takeover-top -cpu-monkey.com,cpu-panda.com,gpu-monkey.com##.werb -best-faucets.com,transfermarkt.co.uk,transfermarkt.com##.werbung -transfermarkt.co.uk##.werbung-skyscraper -transfermarkt.co.uk,transfermarkt.com##.werbung-skyscraper-container -tametimes.co.za##.white-background -gadgethacks.com,reality.news,wonderhowto.com##.whtaph -pch.com##.wide_banner -japantoday.com##.widget--animated -headforpoints.com##.widget--aside.widget -japantoday.com##.widget--jobs -fijisun.com.fj##.widget-1 -fijisun.com.fj##.widget-3 -kyivpost.com##.widget-300-250 -vodacomsoccer.com##.widget-ad-block -bollywoodhungama.com##.widget-advert -boernestar.com##.widget-advert_placement -wikikeep.com##.widget-area -superdeluxeedition.com##.widget-bg-image__deal-alert -cinemaexpress.com##.widget-container-133 -thebeet.com##.widget-promotion -screencrush.com##.widget-widget_third_party_content -adexchanger.com##.widget_ai_ad_widget -gsmserver.com##.widget_banner-container_three-horizontal -discussingfilm.net,goonhammer.com,joemygod.com,shtfplan.com,thestrongtraveller.com,usmagazine.com##.widget_block -wplift.com##.widget_bsa -techweekmag.com##.widget_codewidget -4sysops.com,9to5linux.com,backthetruckup.com,catcountry941.com,cnx-software.com,corrosionhour.com,corvetteblogger.com,dailyveracity.com,dcrainmaker.com,discover.is,fastestvpns.com,gamingonphone.com,girgitnews.com,gizmochina.com,guides.wp-bullet.com,iwatchsouthparks.com,macsources.com,mediachomp.com,metalsucks.net,mmoculture.com,nasaspaceflight.com,openloading.com,patriotfetch.com,planetofreviews.com,precinctreporter.com,prepperwebsite.com,sashares.co.za,scienceabc.com,scienceandliteracy.org,spokesman-recorder.com,survivopedia.com,techdows.com,techiecorner.com,techjuice.pk,theblueoceansgroup.com,thecinemaholic.com,tooxclusive.com,torrentfreak.com,trackalerts.com,trendingpoliticsnews.com,wabetainfo.com##.widget_custom_html -domaingang.com##.widget_execphp -bestlifeonline.com,hellogiggles.com##.widget_gm_karmaadunit_widget -inlandvalleynews.com##.widget_goodlayers-1-1-banner-widget -faroutmagazine.co.uk##.widget_grv_mpu_widget -theiphoneappreview.com##.widget_links -247media.com.ng,appleworld.today,athleticsillustrated.com,businessaccountingbasics.co.uk,circuitbasics.com,closerweekly.com,coincodecap.com,cozyberries.com,crickhabari.com,dbknews.com,deshdoaba.com,foreverconscious.com,glitched.online,globalgovernancenews.com,granitegrok.com,intouchweekly.com,jharkhandmirror.net,kashmirreader.com,kkfm.com,levittownnow.com,lifeandstylemag.com,londonnewsonline.co.uk,marqueesportsnetwork.com,mensjournal.com,nikonrumors.com,ognsc.com,patriotfetch.com,pctechmag.com,prajwaldesai.com,pstribune.com,raspians.com,robinhoodnews.com,rok.guide,rsbnetwork.com,showbiz411.com,spokesman-recorder.com,sportsspectrum.com,stacyknows.com,thecatholictravelguide.com,theoverclocker.com,thethaiger.com,ubuntu101.co.za,wakingtimes.com,washingtonmonthly.com,webscrypto.com,wgow.com,wgowam.com,wlevradio.com##.widget_media_image -cracked-games.org##.widget_metaslider_widget -nypost.com##.widget_nypost_dfp_ad_widget -nypost.com##.widget_nypost_vivid_concerts_widget -newsbtc.com##.widget_premium_partners -twistedsifter.com##.widget_sifter_ad_bigbox_widget -985kissfm.net,bxr.com,catcountry951.com,nashfm1065.com,power923.com,wncv.com,wskz.com##.widget_simpleimage -mypunepulse.com,optimyz.com##.widget_smartslider3 -permanentstyle.com##.widget_sow-advertisements -acprimetime.com,androidpctv.com,brigantinenow.com,downbeachbuzz.com,thecatholictravelguide.com##.widget_sp_image -screenbinge.com,streamingrant.com##.widget_sp_image-image-link -gamertweak.com##.widget_srlzycxh -captainaltcoin.com,dailyboulder.com,freedesignresources.net,lostintechnology.com,ripplecoinnews.com,utahgunexchange.com,webkinznewz.ganzworld.com##.widget_text -nypost.com##.widget_text.no-mobile.box -tutorialink.com##.widget_ti_add_widget -carpeludum.com##.widget_widget_catchevolution_adwidget -techpout.com##.widget_xyz_insert_php_widget -ign.com##.wiki-bobble -wethegeek.com##.win -dailywire.com##.wisepops-block-image -gg.deals##.with-banner -windowsloop.com##.wl-prakatana -dictionary.com##.wotd-widget__ad -warontherocks.com##.wotr_top_lbjspot -guitaradvise.com##.wp-block-affiliate-plugin-lasso -thechainsaw.com##.wp-block-create-block-pedestrian-gam-ad-block -gamepur.com##.wp-block-dotesports-affiliate-button -dotesports.com,primagames.com##.wp-block-gamurs-ad -gearpatrol.com##.wp-block-gearpatrol-ad-slot -gamingskool.com##.wp-block-group-is-layout-constrained -cryptofeeds.news,defence-industry.eu,gamenguides.com,houstonherald.com,millennial-grind.com,survivopedia.com,teslaoracle.com##.wp-block-image -lowcarbtips.org##.wp-block-image.size-full -livability.com##.wp-block-jci-ad-area-two -bangordailynews.com,michigandaily.com##.wp-block-newspack-blocks-wp-block-newspack-ads-blocks-ad-unit -pedestrian.tv##.wp-block-ped-theme-blocks-pedestrian-recent-jobs -hyperallergic.com,repeatreplay.com,steamdeckhq.com##.wp-block-spacer -thewrap.com##.wp-block-the-wrap-ad -c19-worldnews.com##.wp-caption -strangesounds.org##.wp-image-281312 -hack-sat.com##.wp-image-31131 -rvguide.com##.wp-image-3611 -kiryuu.id##.wp-image-465340 -thecricketlounge.com##.wp-image-88221 -weisradio.com##.wp-image-931153 -appuals.com##.wp-timed-p-content -bevmalta.org,chromoscience.com,conandaily.com,hawaiireporter.com,michaelsavage.com##.wpa -techyv.com##.wpb_raw_code -premiumtimesng.com##.wpb_raw_code > .wpb_wrapper -ukutabs.com##.wpb_raw_html -nationalfile.com##.wpb_wrapper > p -coralspringstalk.com##.wpbdp-listings-widget-list -tejanonation.net##.wpcnt -americanfreepress.net,sashares.co.za##.wppopups-whole -theregister.com##.wptl -warezload.net##.wrapper > center > center > [href] -memeburn.com,ventureburn.com##.wrapper--grey -hotnewhiphop.com##.wrapper-Desktop_Header -cspdailynews.com,restaurantbusinessonline.com##.wrapper-au-popup -paultan.org##.wrapper-footer -tftactics.gg##.wrapper-lb1 -webtoolhub.com##.wth_zad_text -forums.ventoy.net##.wwads-cn -waterfordwhispersnews.com##.wwn-ad-unit -geekflare.com##.x-article-818cc9d4 -beaumontenterprise.com,chron.com,ctpost.com,expressnews.com,greenwichtime.com,houstonchronicle.com,lmtonline.com,manisteenews.com,michigansthumb.com,middletownpress.com.ourmidland.com,mrt.com,myjournalcourier.com,myplainview.com,mysanantonio.com,nhregister.com,registercitizen.com,sfchronicle.com,sfgate.com,stamfordadvocate.com,theintelligencer.com##.x100.bg-gray100 -beforeitsnews.com##.x1x2prx2lbnm -aupetitparieur.com##.x7zry3pb -mcpmag.com##.xContent -theseotools.net##.xd_top_box -livejournal.com##.xhtml_banner -dallasnews.com##.xl_right-rail -naturalblaze.com##.xtfaoba0u1 -seattlepi.com##.y100.package -mamieastuce.com##.y288crhb -coin360.com##.y49o7q -titantv.com##.yRDh6z2_d0DkfsT3 -247mirror.com,365economist.com,bridewired.com,dailybee.com,drgraduate.com,historictalk.com,mvpmode.com,parentmood.com,theecofeed.com,thefunpost.com,visualchase.com,wackojaco.com##.ya-slot -pravda.ru##.yaRtbBlock -yardbarker.com##.yb-card-ad -yardbarker.com##.yb-card-out -gamereactor.asia,gamereactor.cn,gamereactor.cz,gamereactor.de,gamereactor.dk,gamereactor.es,gamereactor.eu,gamereactor.fi,gamereactor.fr,gamereactor.it,gamereactor.jp,gamereactor.kr,gamereactor.nl,gamereactor.no,gamereactor.pl,gamereactor.pt,gamereactor.se##.yks300 -desmoinesregister.com##.ymHyVK__ymHyVK -shockwave.com##.ympb_target_banner -saltwire.com##.youtube_article_ad -yellowpages.co.za##.yp-object-ad-modal -readneverland.com##.z-0 -buzzly.art##.z-10.w-max -howstuffworks.com##.z-999 -culturemap.com##.z-ad -tekdeeps.com##.zAzfDBzdxq3 -ign.com,mashable.com,pcmag.com##.zad -windows101tricks.com##.zanui-container -antimusic.com##.zerg -bellinghamherald.com,bnd.com,bradenton.com,centredaily.com,charlotteobserver.com,elnuevoherald.com,fresnobee.com,heraldonline.com,heraldsun.com,idahostatesman.com,islandpacket.com,kansas.com,kansascity.com,kentucky.com,ledger-enquirer.com,macon.com,mcclatchydc.com,mercedsunstar.com,miamiherald.com,modbee.com,myrtlebeachonline.com,newsobserver.com,sacbee.com,sanluisobispo.com,star-telegram.com,sunherald.com,thenewstribune.com,theolympian.com,thestate.com,tri-cityherald.com##.zone -bellinghamherald.com##.zone-el -cnn.com##.zone__ads -marketscreener.com##.zppAds -haxnode.net##[action^="//href.li/?"] -news12.com##[alignitems="normal"][justifycontent][direction="row"][gap="0"] -cloutgist.com,codesnse.com##[alt="AD DESCRIPTION"] -hubcloud.day##[alt="New-Banner"] -exchangerates.org.uk##[alt="banner"] -gab.com##[aria-label*="Sponsored:"] -thepointsguy.com##[aria-label="Advertisement"] -wsj.com##[aria-label="Sponsored Offers"] -blackbeltmag.com##[aria-label="Wix Monetize with AdSense"] -giantfood.com,giantfoodstores.com,martinsfoods.com##[aria-label^="Sponsored"] -economictimes.indiatimes.com##[class*="-ad-"] -thehansindia.com##[class*="-ad-"]:not(#inside_post_content_ad_1_before) -collegedunia.com##[class*="-ad-slot"] -petco.com##[class*="SponsoredText"] -fotmob.com##[class*="TopBannerWrapper"] -jagranjosh.com##[class*="_AdColl_"] -jagranjosh.com##[class*="_BodyAd_"] -top.gg##[class*="__AdContainer-"] -everydaykoala.com,playjunkie.com##[class*="__adspot-title-container"] -everydaykoala.com,playjunkie.com##[class*="__adv-block"] -bitcoinist.com,captainaltcoin.com,cryptonews.com,cryptonewsz.com,cryptopotato.com,insidebitcoins.com,news.bitcoin.com,newsbtc.com,philnews.ph,watcher.guru##[class*="clickout-"] -manabadi.co.in##[class*="dsc-banner"] -fullmatch.info##[class*="wp-image"] -douglas.at,douglas.be,douglas.ch,douglas.cz,douglas.de,douglas.es,douglas.hr,douglas.hu,douglas.it,douglas.lt,douglas.lv,douglas.nl,douglas.pl,douglas.pt,douglas.ro,douglas.si,douglas.sk,nocibe.fr##[class="cms-criteo"] -bloomberg.com##[class^="FullWidthAd_"] -genius.com##[class^="InnerSectionAd__"] -genius.com##[class^="InreadContainer__"] -uploader.link##[class^="ads"] -weather.us##[class^="dkpw"] -dallasnews.com##[class^="dmnc_features-ads-"] -romhustler.org##[class^="leaderboard_ad"] -filmibeat.com##[class^="oiad"] -reuters.com##[class^="primary-video__container_"] -nofilmschool.com##[class^="rblad-nfs_content"] -thetimes.co.uk##[class^="responsive__InlineAdWrapper-"] -cmswire.com##[class^="styles_ad-block"] -cmswire.com##[class^="styles_article__text-ad"] -cmswire.com##[class^="styles_article__top-ad-wrapper"] -hancinema.net##[class^="wmls_"] -torlock.com##[class^="wrn"] -mydramalist.com##[class^="zrsx_"] -newspointapp.com##[ctn-style] -flatpanelshd.com##[data-aa-adunit] -dribbble.com##[data-ad-data*="ad_link"] -petco.com##[data-ad-source] -androidauthority.com##[data-ad-type] -gamelevate.com##[data-adpath] -builtbybit.com##[data-advertisement-id] -timesofindia.indiatimes.com##[data-aff-type] -czechtheworld.com##[data-affiliate] -thesun.co.uk##[data-aspc="newBILL"] -walmart.ca##[data-automation="flipkartDisplayAds"] -jobstreet.com.sg##[data-automation="homepage-banner-ads"] -jobstreet.com.sg##[data-automation="homepage-marketing-banner-ads"] -newshub.co.nz##[data-belt-widget] -groupon.com##[data-bhc$="sponsored_carousel"] -costco.com##[data-bi-placement="Criteo_Home_Espot"] -costco.ca##[data-bi-placement="Criteo_Product_Display_Page_Espot"] -chron.com,seattlepi.com,sfchronicle.com,timesunion.com##[data-block-type="ad"] -theblaze.com##[data-category="SPONSORED"] -autotrader.com##[data-cmp="alphaShowcase"] -gab.com##[data-comment="gab-ad-comment"] -sephora.com##[data-comp*="RMNCarousel"] -sephora.com##[data-comp*="RmnBanner"] -bloomberg.com##[data-component="in-body-ad"] -lookfantastic.com##[data-component="sponsoredProductsCriteo"] -vox.com##[data-concert="leaderboard_top_tablet_desktop"] -curbed.com##[data-concert="prelude"] -timesofindia.indiatimes.com##[data-contentprimestatus] -coingecko.com##[data-controller="button-ads"] -axios.com##[data-cy="injected-promo"] -hedgefollow.com##[data-dee_type^="large_banner"] -greatist.com,healthline.com,medicalnewstoday.com,psychcentral.com##[data-empty] -badgerandblade.com,ginx.tv##[data-ez-ph-id] -news.sky.com##[data-format="leaderboard"] -cumbriacrack.com,euromaidanpress.com##[data-hbwrap] -dannydutch.com,tvzoneuk.com##[data-hook="HtmlComponent"] -blackbeltmag.com##[data-hook="bgLayers"] -clevelandclinic.org##[data-identity*="billboard-ad"] -clevelandclinic.org##[data-identity="leaderboard-ad"] -motortrend.com##[data-ids="AdContainer"] -igraal.com##[data-ig-ga-cat="Ad"] -jeffdornik.com##[data-image-info] -phoneia.com##[data-index] -duckduckgo.com,duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion##[data-layout="ad"] -lightnovelcave.com,lightnovelpub.com##[data-mobid] -independent.co.uk##[data-mpu1] -goal.com##[data-name="ad-leaderboard"] -polygon.com##[data-native-ad-id^="container"] -helpnetsecurity.com##[data-origin][style] -greenbaycrimereports.com##[data-original-width="820"] -jeffdornik.com##[data-pin-url] -extremetech.com##[data-pogo="sidebar"] -gumtree.com##[data-q="section-middle"] > div[style^="display:grid;margin"] -washingtonpost.com##[data-qa="article-body-ad"] -washingtonpost.com##[data-qa="right-rail-ad"] -ginx.tv##[data-ref] -euroweeklynews.com##[data-revive-zoneid] -chemistwarehouse.com.au##[data-rm-beacon-state] -disqus.com##[data-role="ad-content"] -news.sky.com##[data-role="ad-label"] -olympics.com##[data-row-type="custom-row-adv"] -washingtonpost.com##[data-sc-c="adslot"] -timesofindia.indiatimes.com##[data-scrollga="spotlight_banner_widget"] -trakt.tv##[data-snigel-id] -amp.theguardian.com##[data-sort-time="1"] -vrbo.com##[data-stid="meso-ad"] -etherscan.io##[data-t8xt5pt6kr-seq="0"] -si.com##[data-target="ad"] -coingecko.com##[data-target="ads.banner"] -the-express.com##[data-tb-non-consent] -woot.com##[data-test-ui^="advertisementLeaderboard"] -target.com##[data-test="featuredProducts"] -zillow.com##[data-test="search-list-first-ad"] -target.com##[data-test="sponsored-text"] -reuters.com##[data-testid="CnxPlayer"] -reuters.com##[data-testid="ResponsiveAdSlot"] -nytimes.com,nytimesn7cgmftshazwhfgzm37qxb44r64ytbb2dj3x62d2lljsciiyd.onion##[data-testid="StandardAd"] -coles.com.au##[data-testid="ad"] -kijiji.ca##[data-testid="adsense-container"] -gozofinder.com##[data-testid="advert"] -coles.com.au##[data-testid="banner-container-desktop"] -petco.com##[data-testid="citrus-widget"] -argos.co.uk##[data-testid="citrus_products-carousel"] -theweathernetwork.com##[data-testid="content-feed-ad-slot"] -greatist.com,healthline.com,medicalnewstoday.com,psychcentral.com##[data-testid="driver"] -washingtonpost.com##[data-testid="fixed-bottom-ad"] -sbs.com.au##[data-testid="hbs-widget-skeleton"] -greatist.com,healthline.com,medicalnewstoday.com,psychcentral.com##[data-testid="header-leaderboard"] -forbes.com##[data-testid="locked-top-ad-container"] -imdb.com##[data-testid="media-sheet__attr-banner"] -you.com##[data-testid="microsoft-ads"] -washingtonpost.com##[data-testid="outbrain"] -washingtonpost.com##[data-testid="placeholder-box"] -theweathernetwork.com##[data-testid="pre-ad-text"] -abcnews.go.com##[data-testid="prism-static-embed"] -abcnews.go.com##[data-testid="prism-sticky-ad"] -zillow.com##[data-testid="right-rail-ad"] -greatist.com,healthline.com,medicalnewstoday.com,psychcentral.com##[data-testid="sponsored-bar"] -manomano.co.uk,manomano.de,manomano.es,manomano.fr,manomano.it##[data-testid="spr-brd-banner"] -game8.co##[data-track-nier-keyword="footer_overlay_ads"] -money.com##[data-trk-company="rocket-mortgage-review"] -goal.com##[data-type="AdComponent"] -3addedminutes.com,anguscountyworld.co.uk,banburyguardian.co.uk,bedfordtoday.co.uk,biggleswadetoday.co.uk,blackpoolgazette.co.uk,bucksherald.co.uk,burnleyexpress.net,buxtonadvertiser.co.uk,chad.co.uk,daventryexpress.co.uk,derbyshiretimes.co.uk,derbyworld.co.uk,derryjournal.com,dewsburyreporter.co.uk,doncasterfreepress.co.uk,falkirkherald.co.uk,fifetoday.co.uk,glasgowworld.com,halifaxcourier.co.uk,harboroughmail.co.uk,harrogateadvertiser.co.uk,hartlepoolmail.co.uk,hemeltoday.co.uk,hucknalldispatch.co.uk,lancasterguardian.co.uk,leightonbuzzardonline.co.uk,lep.co.uk,lincolnshireworld.com,liverpoolworld.uk,londonworld.com,lutontoday.co.uk,manchesterworld.uk,meltontimes.co.uk,miltonkeynes.co.uk,newcastleworld.com,newryreporter.com,newsletter.co.uk,northamptonchron.co.uk,northantstelegraph.co.uk,northernirelandworld.com,northumberlandgazette.co.uk,nottinghamworld.com,peterboroughtoday.co.uk,portsmouth.co.uk,rotherhamadvertiser.co.uk,scotsman.com,shieldsgazette.com,stornowaygazette.co.uk,sunderlandecho.com,surreyworld.co.uk,thescarboroughnews.co.uk,thesouthernreporter.co.uk,thestar.co.uk,totallysnookered.com,wakefieldexpress.co.uk,walesworld.com,warwickshireworld.com,wigantoday.net,worksopguardian.co.uk,yorkshireeveningpost.co.uk,yorkshirepost.co.uk##[data-type="AdRowBillboard"] -search.brave.com,thesportsrush.com##[data-type="ad"] -dictionary.com##[data-type="ad-horizontal-module"] -gadgetsnow.com##[data-type="mtf"] -forum.ragezone.com##[data-widget-key="widget_partners"] -petco.com##[data-widget-type="citrus-ad"] -petco.com##[data-widget-type="citrus-banner"] -petco.com##[data-widget-type^="rmn-"] -theautopian.com##[data-widget_type="html.default"] -namepros.com##[data-xf-init][data-tag] -cnn.com##[data-zone-label="Paid Partner Content"] -faroutmagazine.co.uk,hitc.com##[dock="#primis-dock-slot"] -browardpalmbeach.com,citybeat.com,leoweekly.com,metrotimes.com##[gpt-slot-config-id] -citybeat.com,leoweekly.com,metrotimes.com,riverfronttimes.com##[gpt-slot-div-id] -dailynews.lk,fxempire.com,german-way.com,issuu.com,londonnewsonline.co.uk,power987.co.za,qsaltlake.com,tfetimes.com##[height="250"] -ciiradio.com,hapskorea.com,issuu.com,thetruthwins.com##[height="300"] -namepros.com,pointblanknews.com,sharktankblog.com##[height="60"] -cryptofeeds.news,fxempire.com,issuu.com,power987.co.za##[height="600"] -bankbazaar.com##[height="80"] -1001tracklists.com,airplaydirect.com,bankbazaar.com,cultofcalcio.com,dailynews.lk,economicconfidential.com,issuu.com,newzimbabwe.com,opednews.com,roadtester.com.au,runechat.com,tfetimes.com,therainbowtimesmass.com##[height="90"] -tokopedia.com##[href$="src=topads"] -photopea.com##[href*=".ivank.net"] -nzbstars.com,upload.ee##[href*=".php"] -complaintsingapore.com##[href*="/adv.php"] -utahgunexchange.com##[href*="/click.track"] -libtorrent.org,mailgen.biz,speedcheck.org,torrentfreak.com,tubeoffline.com##[href*="://go.nordvpn.net/"] -gamecopyworld.com,gamecopyworld.eu##[href*="@"] -steroid.com##[href*="anabolics.com"] -9jaflaver.com,alaskapublic.org,allkeyshop.com,analyticsinsight.net,ancient-origins.net,animeidhentai.com,arabtimesonline.com,asura.gg,biblestudytools.com,bitcoinworld.co.in,christianity.com,cnx-software.com,coingolive.com,csstats.gg,digitallydownloaded.net,digitbin.com,domaingang.com,downturk.net,fresherslive.com,gizmochina.com,glitched.online,glodls.to,guidedhacking.com,hackernoon.com,hubcloud.day,indishare.org,kaas.am,katfile.com,khmertimeskh.com,litecoin-faucet.com,mbauniverse.com,mediaite.com,mgnetu.com,myreadingmanga.info,newsfirst.lk,nexter.org,owaahh.com,parkablogs.com,pastemytxt.com,premiumtimesng.com,railcolornews.com,resultuniraj.co.in,retail.org.nz,ripplesnigeria.com,rtvonline.com,ryuugames.com,sashares.co.za,sofascore.com,thinknews.com.ng,timesuganda.com,totemtattoo.com,trancentral.tv,vumafm.co.za,yugatech.com,zmescience.com##[href*="bit.ly/"] -beforeitsnews.com,in5d.com,mytruthnews.com,thetruedefender.com##[href*="hop.clickbank.net"] -linuxlookup.com##[href="/advertising"] -audiobookbay.is##[href="/ddeaatr"] -mywaifulist.moe##[href="/nord"] -whatsmyreferer.com##[href="http://fakereferer.com"] -whatsmyreferer.com##[href="http://fakethereferer.com"] -warezload.net##[href="http://muzikk.org/"] -toumpano.net##[href="http://roz-tilefona.xbomb.net/"] -warfarehistorynetwork.com##[href="http://www.bktravel.com/"] -daijiworld.com##[href="http://www.expertclasses.org/"] -gametracker.com##[href="http://www.gameservers.com"] -allnewspipeline.com##[href="http://www.sqmetals.com/"] -bitcoiner.tv##[href="https://bitcoiner.tv/buy-btc.php"] -cracked.io##[href="https://cutt.ly/U7s7Wu8"] -spys.one##[href="https://fineproxy.org/ru/"] -freedomfirstnetwork.com##[href="https://freedomfirstcoffee.com"] -summit.news##[href="https://infowarsstore.com/"] -americafirstreport.com##[href="https://jdrucker.com/ira"] -hightimes.com##[href="https://leafwell.com"] -conservativeplaybook.com##[href="https://ourgoldguy.com/contact/"] -davidwalsh.name##[href="https://requestmetrics.com/"] -unknowncheats.me##[href="https://securecheats.com/"] -slaynews.com##[href="https://slaynews.com/ads/"] -cracked.io##[href="https://sweet-accounts.com"] -complaintsingapore.com##[href="https://thechillipadi.com/"] -photorumors.com##[href="https://topazlabs.com/ref/70/"] -bleepingcomputer.com##[href="https://try.flare.io/bleeping-computer/"] -walletinvestor.com##[href="https://walletinvestor.com/u/gnrATE"] -nettv4u.com##[href="https://www.badshahcric.net/"] -duplichecker.com##[href="https://www.duplichecker.com/gcl"] -barrettsportsmedia.com##[href="https://www.jimcutler.com"] -10minutemail.com##[href="https://www.remove-metadata.com"] -jagoroniya.com##[href="https://www.virtuanic.com/"] -wplocker.com##[href^="//namecheap.pxf.io/"] -unogs.com##[href^="/ad/"] -ar15.com##[href^="/forums/transfers.html"] -notbanksyforum.com,pooletown.co.uk,tossinggames.com,urbanartassociation.com##[href^="http://redirect.viglink.com"] -eevblog.com##[href^="http://s.click.aliexpress.com/"] -learn-cpp.org##[href^="http://www.spoj.com/"] -windows-noob.com##[href^="https://adaptiva.com/"] -open.spotify.com##[href^="https://adclick.g.doubleclick.net/"] -topfiveforex.com##[href^="https://affiliate.iqoption.com/"] -brighteon.com##[href^="https://ams.brighteon.com/"] -orschlurch.net,photorumors.com##[href^="https://amzn.to/"] -fmovies24.to##[href^="https://anix.to/"] -cloutgist.com,codesnse.com##[href^="https://app.adjust.com/"] -aitextpromptgenerator.com##[href^="https://app.getsitepop.com/"] -wiki.gg##[href^="https://app.wiki.gg/showcase/"] -topfiveforex.com##[href^="https://betfury.io/"] -seganerds.com##[href^="https://betway.com/"] -greatandhra.com,kitploit.com,moviedokan.lol##[href^="https://bit.ly/"] img -coingolive.com##[href^="https://bitpreco.com/"] -analyticsindiamag.com##[href^="https://business.louisville.edu/"] -50gameslike.com,highdemandskills.com,yumyumnews.com##[href^="https://click.linksynergy.com/"] -learn-cpp.org##[href^="https://codingforkids.io"] -wccftech.com##[href^="https://cutt.ly/"] -yourstory.com##[href^="https://form.jotform.com/"] -ahaan.co.uk,emailnator.com,myip.is,scrolller.com,whereto.stream##[href^="https://go.nordvpn.net/"] -everybithelps.io##[href^="https://hi.switchy.io/"] -imagetwist.com##[href^="https://imagetwist.com/pxt/"] -topfiveforex.com##[href^="https://iqoption.com/"] -romsfun.org##[href^="https://kovcifra.click/"] -theburningplatform.com##[href^="https://libertasbella.com/collections/"] -topfiveforex.com##[href^="https://luckyfish.io/"] -crypto-news-flash.com##[href^="https://mollars.com/"] -abovetopsecret.com,thelibertydaily.com##[href^="https://mypatriotsupply.com/"] -topfiveforex.com##[href^="https://olymptrade.com/"] -topfiveforex.com##[href^="https://omibet.io/"] -windows-noob.com##[href^="https://patchmypc.com/"] -unknowncheats.me##[href^="https://proxy-seller.com/"] -cryptonews.com##[href^="https://rapi.cryptonews.com/"] -tcbscans.com##[href^="https://readcbr.com/"] -rebelnews.com##[href^="https://rebelne.ws/"] -rlsbb.cc##[href^="https://rlsbb.cc/link.php"] -rlsbb.ru##[href^="https://rlsbb.ru/link.php"] -everybithelps.io##[href^="https://shop.ledger.com/"] -all-free-download.com##[href^="https://shutterstock.7eer.net/c/"] img -yts.mx##[href^="https://stARtgAMinG.net/"] -terraria.wiki.gg##[href^="https://store.steampowered.com/app/"] -brighteon.com##[href^="https://support.brighteon.com/"] -beforeitsnews.com,highshortinterest.com##[href^="https://tinyurl.com/"] -tripsonabbeyroad.com##[href^="https://tp.media/"] -minidl.org##[href^="https://uploadgig.com/premium/index/"] -cracked.io##[href^="https://vshield.com/"] -thespoken.cc##[href^="https://www.amazon.com/"] -mailshub.in##[href^="https://www.amazon.in/"] -workhouses.org.uk##[href^="https://www.awin1.com"] -businessonhome.com##[href^="https://www.binance.com/en/register?ref="] -bleepingcomputer.com##[href^="https://www.bleepingcomputer.com/go/"] -health.news,naturalnews.com,newstarget.com##[href^="https://www.brighteon.tv"] -work.ink##[href^="https://www.buff.game/buff-download/"] -seganerds.com##[href^="https://www.canadacasino.ca/"] -seganerds.com##[href^="https://www.casinonic.com/"] -onecompiler.com##[href^="https://www.datawars.io"] -ratemycourses.io##[href^="https://www.essaypal.ai"] -rebelnews.com##[href^="https://www.eventbrite.com/"] -seganerds.com##[href^="https://www.ewinracing.com/"] -gamecopyworld.com,gamecopyworld.eu##[href^="https://www.kinguin.net/"] -defenseworld.net##[href^="https://www.marketbeat.com/scripts/redirect.aspx"] -perezhilton.com##[href^="https://www.mytrue10.com/"] -weberblog.net##[href^="https://www.neox-networks.com/"] -newstarget.com##[href^="https://www.newstarget.com/ARF/"] -how2electronics.com##[href^="https://www.nextpcb.com/"] -ownedcore.com##[href^="https://www.ownedcore.com/forums/cb.php"] -how2electronics.com##[href^="https://www.pcbway.com/"] -news.itsfoss.com##[href^="https://www.pikapods.com/"] -bikeroar.com##[href^="https://www.roaradventures.com/"] -searchcommander.com##[href^="https://www.searchcommander.com/rec/"] -shroomery.org##[href^="https://www.shroomery.org/ads/"] -censored.news,newstarget.com##[href^="https://www.survivalnutrition.com"] -swimcompetitive.com##[href^="https://www.swimoutlet.com/"] -protrumpnews.com##[href^="https://www.twc.health/"] -ultimate-guitar.com##[href^="https://www.ultimate-guitar.com/send?ug_from=redirect"] -upload.ee##[href^="https://www.upload.ee/click.php"] -gametracker.com##[href^="https://www.vultr.com/"] -wakingtimes.com##[href^="https://www.wendymyersdetox.com/"] -musicbusinessworldwide.com##[href^="https://wynstarks.lnk.to/"] -cars.com##[id$="-sponsored"] -homedepot.com##[id*="sponsored"] -producebluebook.com##[id^="BBS"] -ldoceonline.com##[id^="ad_contentslot"] -bestbuy.ca,bestbuy.com##[id^="atwb-ninja-carousel"] -beforeitsnews.com##[id^="banners_"] -pluggedingolf.com##[id^="black-studio-tinymce-"] -shipt.com##[id^="cms-ad_banner"] -hola.com##[id^="div-hola-slot-"] -designtaxi.com##[id^="dt-small-"] -skyblock.bz##[id^="flips-"] -eatthis.com##[id^="gm_karmaadunit_widget"] -designtaxi.com##[id^="in-news-link-"] -komando.com##[id^="leaderboardAdDiv"] -comicbook.com,popculture.com##[id^="native-plus-"] -dailydooh.com##[id^="rectdiv"] -daily-choices.com##[id^="sticky_"] -wuxiaworld.site##[id^="wuxia-"] -grabcad.com##[ng-if="model.asense"] -buzzheavier.com##[onclick="downloadAd()"] -survivopedia.com##[onclick="recordClick("] -filecrypt.cc,filecrypt.co##[onclick^="var lj"] -transfermarkt.co.uk##[referrerpolicy] -appleinsider.com,dappradar.com,euroweeklynews.com,sitepoint.com,tld-list.com##[rel*="sponsored"] -warecracks.com,websiteoutlook.com##[rel="nofollow"] -metro.co.uk##[rel="sponsored"] -myanimelist.net##[src*="/c/img/images/event/"] -audioz.download##[src*="/promo/"] -transfermarkt.com##[src*="https://www.transfermarkt.com/image/"] -wallpaperaccess.com##[src="/continue.png"] -audiobookbay.is##[src="/images/d-t.gif"] -audiobookbay.is##[src="/images/dire.gif"] -brmangas.com##[src="https://manjiroinflu.com/streams.php"] -webcamtests.com##[src^="/MyShowroom/view.php?medium="] -linuxtopia.org##[src^="/includes/index.php/?img="] -academictorrents.com##[src^="/pic/sponsors/"] -exportfromnigeria.info##[src^="http://storage.proboards.com/"] -exportfromnigeria.info##[src^="http://storage2.proboards.com/"] -infotel.ca##[src^="https://infotel.ca/absolutebm/"] -exportfromnigeria.info##[src^="https://storage.proboards.com/"] -exportfromnigeria.info##[src^="https://storage2.proboards.com/"] -buzzly.art##[src^="https://submissions.buzzly.art/CANDY/"] -manhwabtt.com,tennismajors.com##[style$="min-height: 250px;"] -livejournal.com##[style$="width: 300px;"] -circleid.com##[style*="300px;"] -circleid.com##[style*="995px;"] -coolors.co##[style*="position:absolute;top:20px;"] -4anime.gg,apkmody.io,bollyflix.nexus,bravoporn.com,dramacool.sr,gogoanime.co.in,gogoanime.run,harimanga.com,hdmovie2.rest,himovies.to,hurawatch.cc,instamod.co,leercapitulo.com,linksly.co,mangadna.com,manhwadesu.bio,messitv.net,miraculous.to,movies-watch.com.pk,moviesmod.zip,nkiri.com,prmovies.dog,putlockers.li,sflix.se,sockshare.ac,ssoap2day.to,sukidesuost.info,tamilyogi.bike,uwatchfre.cam,waploaded.com,watchomovies.net,y-2mate.com,yomovies.team,ytmp3.cc,yts-subs.com##[style*="width: 100% !important;"] -shotcut.org##[style="background-color: #fff; padding: 6px; text-align: center"] -realitytvworld.com##[style="background-color: white; background: white"] -guides.wp-bullet.com##[style="height: 288px;"] -forum.lowyat.net##[style="height:120px;padding:10px 0;"] -imagecolorpicker.com##[style="height:250px"] -forum.lowyat.net##[style="height:250px;padding:5px 0 5px 0;"] -tenforums.com##[style="height:280px;"] -kingmodapk.net##[style="height:300px"] -geekzone.co.nz##[style="height:90px"] -cycleexif.com,thespoken.cc##[style="margin-bottom: 25px;"] -kc.linksgen.com,kimcartoon.li,kisscartoon.se##[style="margin: 0px auto; text-align: center; overflow: hidden; width: 610px;"] -realitytvworld.com##[style="margin: 5px 0px 5px; display: inline-block; text-align: center; height: 250;"] -gpfans.com##[style="margin:10px auto 10px auto; text-align:center; width:100%; overflow:hidden; min-height: 250px;"] -scamrate.com##[style="max-width: 728px;"] -timesnownews.com##[style="min-height: 181px;"] -namemc.com##[style="min-height: 238px"] -africam.com##[style="min-height: 250px;"] -waifu2x.net##[style="min-height: 270px; margin: 1em"] -phys.org##[style="min-height: 601px;"] -africam.com,open3dlab.com##[style="min-height: 90px;"] -calendar-uk.co.uk,theartnewspaper.com,wahm.com##[style="min-height:250px;"] -edgegamers.com##[style="padding-bottom:10px;height:90px;"] -dvdsreleasedates.com##[style="padding:15px 0 15px 0;width:728px;height:90px;text-align:center;"] -analyticsinsight.net##[style="text-align: center;"] -kreationnext.com##[style="text-align:center"] -forum.nasaspaceflight.com##[style="text-align:center; margin-bottom:30px;"] -deviantart.com##[style="width: 308px; height: 316px;"] -waifu2x.net##[style="width: 90%;height:120px"] -law360.com##[style="width:100%;display:flex;justify-content:center;background-color:rgb(247, 247, 247);flex-direction:column;"] -newagebd.net##[style^="float:left; width:320px;"] -fandomwire.com##[style^="min-height: 320px"] -decrypt.co##[style^="min-width: 728px;"] -perchance.org##[style^="position: fixed;"] -meaww.com##[style^="text-align: center;"] -zenger.news##[style^="text-align:center;min-height:"] -filmdaily.co,gelbooru.com,integral-calculator.com,passiveaggressivenotes.com,twcenter.net##[style^="width: 728px;"] -alphacoders.com##[style^="width:980px; height:280px;"] -gametracker.com##[style^="width:980px; height:48px"] -mrchecker.net##[target="_blank"] -myfitnesspal.com##[title*="Ad"] -balls.ie##[type="doubleclick"] -kiryuu.id##[width="1280"] -fansshare.com##[width="300"] -americanfreepress.net,analyticsindiamag.com,namepros.com,readneverland.com##[width="600"] -drwealth.com##[width="640"] -americaoutloud.com,analyticsindiamag.com,artificialintelligence-news.com,autoaction.com.au,cryptoreporter.info,dafont.com,forexmt4indicators.com,gamblingnewsmagazine.com,irishcatholic.com,tntribune.com,tryorthokeys.com##[width="728"] -elitepvpers.com##[width="729"] -elitepvpers.com##[width="966"] -presearch.com##[x-data*="kwrdAdFirst"] -mobiforge.com##a > img[alt="Ad"] -eztv.tf,eztv.yt##a > img[alt="Anonymous Download"] -cript.to##a.btn[target="_blank"][href^="https://cript.to/"] -infowars.com##a.css-1yw960t -darkreader.org##a.logo-link[target="_blank"] -marinelink.com##a.sponsored -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##a[ajaxify*="&eid="] + a[href^="https://l.facebook.com/l.php?u="] -newstalkflorida.com##a[alt="Ad"] -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##a[aria-label="Advertiser link"] -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##a[aria-label="Advertiser"] -alibaba.com##a[campaignid][target="_blank"] -bernama.com##a[class^="banner_photo_"] -probuilds.net##a[class^="dl-blitz-"] -trakt.tv##a[class^="hu-ck-s-t-er-"][target="_blank"] -wayfair.com##a[data-enzyme-id="WssBannerContainer"] -androidauthority.com##a[data-sel="dealbar-link"] -iconfinder.com##a[data-tracking^="iStock"] -sashares.co.za##a[data-wpel-link="external"] -pinterest.at,pinterest.ca,pinterest.ch,pinterest.co.uk,pinterest.com,pinterest.com.au,pinterest.com.mx,pinterest.de,pinterest.es,pinterest.fr,pinterest.it,pinterest.pt##a[href*="&epik="] -imgpile.com,linuxjournal.com,threatpost.com##a[href*="&utm_campaign="] -hitbullseye.com##a[href*="&utm_medium="] -walmart.ca##a[href*=".criteo.com/"] -chicagoprowrestling.com##a[href*="//thecmf.com/"] > img -chicagoprowrestling.com##a[href*="//www.aliciashouse.org/"] > img -breakingbelizenews.com,cardealermagazine.co.uk,headfonics.com,igorslab.de,landline.media,mikesmoneytalks.ca,sundayworld.co.za,theroanokestar.com,visualcapitalist.com##a[href*="/linkout/"] -movie-censorship.com##a[href*="/out.php?"] -imagetwist.com##a[href*="/par/"] -civilserviceindia.com##a[href*="/red.php?bu="] -amsterdamnews.com,sundayworld.co.za,universityaffairs.ca##a[href*="/sponsored-content/"] -biznews.com,burnabynow.com,businessdailyafrica.com,coastreporter.net,financialexpress.com,irishtimes.com,komonews.com,newwestrecord.ca,nsnews.com,prpeak.com,richmond-news.com,spokesman.com##a[href*="/sponsored/"] -isaidubb.net,orutamil.com##a[href*="/ucdownloader.php?"] -isaidubb.net,orutamil.com##a[href*="/ucmini.php?"] -distrowatch.com##a[href*="3cx.com"] -97rock.com,wedg.com##a[href*="716jobfair.com"] -cript.to##a[href*="8stream-ai.com"] -uploadrar.com##a[href*="?"][target="_blank"] -filefleck.com,sadeempc.com,upload4earn.org,usersdrive.com##a[href*="javascript:"] -twitter.com,x.com##a[href*="src=promoted_trend_click"] -twitter.com,x.com##a[href*="src=promoted_trend_click"] + div -coolors.co##a[href*="srv.Buysellads.com"] -unitconversion.org##a[href="../noads.html"] -osradar.com##a[href="http://insiderapps.com/"] -dailyuploads.net##a[href="https://aptoze.com/"] -tpb.party##a[href="https://mysurferprotector.com/"] -igg-games.com,pcgamestorrents.com##a[href][aria-label=""], [width="300"][height^="25"], [width="660"][height^="8"], [width="660"][height^="7"] -techporn.ph##a[href][target*="blank"] -rarbgaccess.org,rarbgmirror.com,rarbgmirror.org,rarbgproxy.com,rarbgproxy.org,rarbgunblock.com,rarbgunblocked.org##a[href][target="_blank"] > button -tractorbynet.com##a[href][target="_blank"] > img[class^="attachment-large"] -codapedia.com##a[href^="/ad-click.cfm"] -bestoftelegram.com##a[href^="/ads/banner_ads?"] -graphic.com.gh##a[href^="/adverts/"] -audiobookbay.is##a[href^="/dl-14-days-trial"] -kickasstorrents.to##a[href^="/download/"] -kinox.lat##a[href^="/engine/player.php"] -torrentgalaxy.to##a[href^="/hx?"] -limetorrents.lol##a[href^="/leet/"] -tehrantimes.com##a[href^="/redirect/ads/"] -xbox-hq.com##a[href^="banners.php?"] -iamdisappoint.com,shitbrix.com,tattoofailure.com##a[href^="http://goo.gl/"] -notbanksyforum.com##a[href^="http://l-13.org/"] -wjbc.com##a[href^="http://sweetdeals.com/bloomington/deals"] -notbanksyforum.com##a[href^="http://www.ebay.co.uk/usr/heartresearchuk_shop/"] -speedsolving.com##a[href^="http://www.kewbz.co.uk"] > img -1280wnam.com##a[href^="http://www.milwaukeezoo.org/visit/animals/"] -2x4u.de##a[href^="http://www.myfreecams.com/?baf="] -rpg.net##a[href^="http://www.rpg.net/ads/"] -warm98.com##a[href^="http://www.salvationarmycincinnati.org"] -tundraheadquarters.com##a[href^="http://www.tkqlhce.com/"] -shareae.com##a[href^="https://aejuice.com/"] -lilymanga.com##a[href^="https://amzn.to/"] -downloadhub.ltd##a[href^="https://bestbuyrdp.com/"] -detectiveconanworld.com##a[href^="https://brave.com/"] -broadwayworld.com##a[href^="https://cloud.broadwayworld.com/rec/ticketclick.cfm"] -cript.to##a[href^="https://cript.to/goto/"] -cript.to##a[href^="https://cript.to/link/"][href*="?token="] -sythe.org##a[href^="https://discord.gg/dmwatch"] -moddroid.co##a[href^="https://doodoo.love/"] -pluggedingolf.com##a[href^="https://edisonwedges.com/"] -files.im##a[href^="https://galaxyroms.net/?scr="] -odin-valhallarising.com,tarislandglobal.com##a[href^="https://get.surfshark.net/"] -warm98.com##a[href^="https://giving.cincinnatichildrens.org/donate"] -disasterscans.com##a[href^="https://go.onelink.me/"] -forkast.news##a[href^="https://h5.whalefin.com/landing2/"] -fileditch.com##a[href^="https://hostslick.com/"] -douploads.net##a[href^="https://href.li/?"] -embed.listcorp.com##a[href^="https://j.moomoo.com/"] -disasterscans.com##a[href^="https://martialscanssoulland.onelink.me/"] -metager.org##a[href^="https://metager.org"][href*="/partner/r?"] -dailyuploads.net##a[href^="https://ninjapcsoft.com/"] -emalm.com##a[href^="https://offer.alibaba.com/"] -101thefox.net,957thevibe.com##a[href^="https://parisicoffee.com/"] -blix.gg##a[href^="https://partnerbcgame.com/"] -nyaa.land##a[href^="https://privateiptvaccess.com"] -metager.org##a[href^="https://r.search.yahoo.com/"] -nosubjectlosangeles.com,richardvigilantebooks.com##a[href^="https://rebrand.ly/"] -disasterscans.com##a[href^="https://recall-email.onelink.me/"] -narkive.com##a[href^="https://rfnm.io/?"] -inquirer.net##a[href^="https://ruby.inquirer.net/"] -emalm.com,linkdecode.com,up-4ever.net##a[href^="https://s.click.aliexpress.com/"] -997wpro.com##a[href^="https://seascapeinc.com/"] -listland.com##a[href^="https://shareasale.com/r.cfm?"] -wbnq.com,wbwn.com,wjbc.com##a[href^="https://stjude.org/radio/"] -glory985.com##a[href^="https://sweetbidsflo.irauctions.com/listing/0"] -veev.to##a[href^="https://t.ly/"] -accesswdun.com##a[href^="https://tinyurl.com"] > img -mastercomfig.com##a[href^="https://tradeit.gg/"] -scrolller.com##a[href^="https://trk.scrolller.com/"] -primewire.link##a[href^="https://url.rw/"] -vnkb.com##a[href^="https://vnkb.com/e/"] -1280wnam.com##a[href^="https://wistatefair.com/fair/tickets/"] -ancient-origins.net,anisearch.com,catholicculture.org,deadspin.com,electrek.co,jalopnik.com,kotaku.com,lewrockwell.com,ssbcrack.com,thetakeout.com##a[href^="https://www.amazon."][href*="tag="] -pooletown.co.uk##a[href^="https://www.easyfundraising.org.uk"] -wjbc.com##a[href^="https://www.farmweeknow.com/rfd_radio/"] -magic1069.com##a[href^="https://www.fetchahouse.com/"] -coachhuey.com##a[href^="https://www.hudl.com"] -elamigos-games.net##a[href^="https://www.instant-gaming.com/"][href*="?igr="] -domaintyper.com,thecatholictravelguide.com##a[href^="https://www.kqzyfj.com/"] -wgrr.com##a[href^="https://www.mccabelumber.com/"] -wbnq.com,wbwn.com,wjbc.com##a[href^="https://www.menards.com/main/home.html"] -jox2fm.com,joxfm.com##a[href^="https://www.milb.com/"] -thelibertydaily.com##a[href^="https://www.mypillow.com"] -who.is##a[href^="https://www.name.com/redirect/"] -kollelbudget.com##a[href^="https://www.oorahauction.org/"][target="_blank"] > img -minecraft-schematics.com##a[href^="https://www.pingperfect.com/aff.php?"] -sythe.org##a[href^="https://www.runestake.com/r/"] -foxcincinnati.com##a[href^="https://www.safeauto.com"] -sportscardforum.com##a[href^="https://www.sportscardforum.com/rbs_banner.php?"] -thecatholictravelguide.com##a[href^="https://www.squaremouth.com/"] -adfoc.us##a[href^="https://www.survivalservers.com/"] -itsfoss.com##a[href^="https://www.warp.dev"] -yugatech.com##a[href^="https://yugatech.ph/"] -kitguru.net##a[id^="href-ad-"] -himovies.to,home-barista.com,rarpc.co,washingtontimes.com##a[onclick] -amishamerica.com##a[rel="nofollow"] > img -gab.com##a[rel="noopener"][target="_blank"][href^="https://grow.gab.com/go/"] -nslookup.io,unsplash.com##a[rel^="sponsored"] -opensubtitles.org##a[target="_blank"][href^="https://www.amazon.com/gp/search"] -abysscdn.com,hqq.ac,hqq.to,hqq.tv,linris.xyz,megaplay.cc,meucdn.vip,netuplayer.top,ntvid.online,oceanplay.xyz,plushd.bio,waaw.to,watchonlinehd123.sbs,wiztube.xyz##a[title="Free money easy"] -kroger.com##a[title^="Advertisement:"] -unmatched.gg##app-advertising -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##article[data-ft*="\"ei\":\""] -linkedin.com##article[data-is-sponsored] -xing.com##article[data-qa="disco-updates-video-ad"] -xing.com##article[data-qa="disco-updates-website-ad"] -greatist.com##aside -4runnerforum.com,acuraforums.com,blazerforum.com,buickforum.com,cadillacforum.com,camaroforums.com,cbrforum.com,chryslerforum.com,civicforums.com,corvetteforums.com,fordforum.com,germanautoforums.com,hondaaccordforum.com,hondacivicforum.com,hondaforum.com,hummerforums.com,isuzuforums.com,kawasakiforums.com,landroverforums.com,lexusforum.com,mazdaforum.com,mercuryforum.com,minicooperforums.com,mitsubishiforum.com,montecarloforum.com,mustangboards.com,nissanforum.com,oldsmobileforum.com,pontiactalk.com,saabforums.com,saturnforum.com,truckforums.com,volkswagenforum.com,volvoforums.com##aside > center -everydayrussianlanguage.com##aside img[src^="/wp-content/themes/edr/img/"] -winaero.com##aside.sidebar > section:not([id^="custom_html-"]).widget_custom_html -vezod.com##av-adv-slot -buffstreams.sx##button[data-openuri*=".allsportsflix."] -filecrypt.cc,filecrypt.co##button[onclick*="://bullads.net/"] -psycom.net##center > .vh-quiz-qborder -dustinabbott.net,turbobits.cc,turbobits.net##center > a > img -mangas-raw.com##center > div[style] -sailingmagazine.net##center > font -greekreporter.com##center > p > [href] -pricehistoryapp.com##center[class^="min-h-"] -builtbybit.com##center[style="margin-top: 20px"] -weatherbug.com##display-ad-widget -readonepiece.com##div > b -coffeeordie.com##div.HtmlModule > [href] -web.telegram.org##div.bubbles > div.scrollable > div.bubbles-inner > div.is-sponsored -sbs.com.au##div.css-1wbfa8 -steamgifts.com##div.dont_block_me -sitepoint.com##div.inline-content -easypet.com##div.kt-inside-inner-col > div.wp-block-kadence-rowlayout -baking-forums.com,windows10forums.com##div.message--post.message -thehackernews.com##div.rocking -tld-list.com##div.row > .text-center > .ib -forward.com##div.sticky-container:first-child -newegg.com##div.swiper-slide[data-sponsored-catalyst] -investing.com##div.text-\[\#5b616e\] -inverse.com##div.zz -presearch.com##div[\:class*="AdClass"] -boxing-social.com##div[ad-slot] -liverpoolway.co.uk##div[align="center"] > a[href] -informer.com##div[align="center"][style="margin:10px"] -yandex.com##div[aria-label="Ad"] -azuremagazine.com##div[class$="azoa"] -wsj.com##div[class*="WSJTheme--adWrapper"] -pcgamer.com,techcrunch.com,tomsguide.com,tomshardware.com##div[class*="ad-unit"] -issuu.com##div[class*="adPlacement"] -issuu.com##div[class*="adSkyscraper"] -aajtakcampus.in##div[class*="ads_ads_container__"] -dallasnews.com##div[class*="features-ads"] -gamingbible.com,ladbible.com,unilad.co.uk,unilad.com##div[class*="margin-Advert"] -thefiscaltimes.com##div[class*="pane-dfp-"] -emojipedia.org##div[class="flex flex-col items-center md:order-1"] -walmart.com##div[class="mv3 ml3 mv4-xl mh0-xl"][data-testid="sp-item"] -tripadvisor.com##div[class="ui_container dSjaD _S"] -timesofindia.com##div[class^="ATF_container_"] -arkadium.com##div[class^="Ad-adContainer"] -dailymotion.com##div[class^="AdBanner"] -breastcancer.org,emojipedia.org##div[class^="AdContainer"] -3addedminutes.com,anguscountyworld.co.uk,banburyguardian.co.uk,bedfordtoday.co.uk,biggleswadetoday.co.uk,blackpoolgazette.co.uk,bucksherald.co.uk,burnleyexpress.net,buxtonadvertiser.co.uk,chad.co.uk,daventryexpress.co.uk,derbyshiretimes.co.uk,derbyworld.co.uk,derryjournal.com,dewsburyreporter.co.uk,doncasterfreepress.co.uk,falkirkherald.co.uk,fifetoday.co.uk,glasgowworld.com,halifaxcourier.co.uk,harboroughmail.co.uk,harrogateadvertiser.co.uk,hartlepoolmail.co.uk,hemeltoday.co.uk,hucknalldispatch.co.uk,lancasterguardian.co.uk,leightonbuzzardonline.co.uk,lep.co.uk,lincolnshireworld.com,liverpoolworld.uk,londonworld.com,lutontoday.co.uk,manchesterworld.uk,meltontimes.co.uk,miltonkeynes.co.uk,newcastleworld.com,newryreporter.com,newsletter.co.uk,northamptonchron.co.uk,northantstelegraph.co.uk,northernirelandworld.com,northumberlandgazette.co.uk,nottinghamworld.com,peterboroughtoday.co.uk,portsmouth.co.uk,rotherhamadvertiser.co.uk,scotsman.com,shieldsgazette.com,stornowaygazette.co.uk,sunderlandecho.com,surreyworld.co.uk,thescarboroughnews.co.uk,thesouthernreporter.co.uk,thestar.co.uk,totallysnookered.com,wakefieldexpress.co.uk,walesworld.com,warwickshireworld.com,wigantoday.net,worksopguardian.co.uk,yorkshireeveningpost.co.uk,yorkshirepost.co.uk##div[class^="AdLoadingText"] -usnews.com##div[class^="Ad__Container-"] -zerohedge.com##div[class^="AdvertisingSlot_"] -sportinglife.com##div[class^="Article__FlashTalkingWrapper-"] -barrons.com##div[class^="BarronsTheme--adWrapper"] -someecards.com##div[class^="BaseAdSlot_adContainer_"] -theglobeandmail.com##div[class^="BaseAd_"] -cnbc.com##div[class^="BoxRail-Styles-"] -yallo.tv##div[class^="BrandingBackgroundstyled__Wrapper-"] -donedeal.ie##div[class^="DFP__StyledAdSlot-"] -genius.com##div[class^="DfpAd__Container-"] -dailymotion.com##div[class^="DisplayAd"] -games.dailymail.co.uk,nba.com##div[class^="DisplayAd_"] -alternativeto.net##div[class^="GamAds_"] -games.dailymail.co.uk##div[class^="GameTemplate__displayAdTop_"] -benzinga.com##div[class^="GoogleAdBlock_"] -allradio.net##div[class^="GoogleAdsenseContainer_"] -livescore.com##div[class^="HeaderAdsHolder_"] -games.dailymail.co.uk##div[class^="HomeCategory__adWrapper_"] -games.dailymail.co.uk##div[class^="HomeTemplate__afterCategoryAd_"] -sportinglife.com##div[class^="Layout__TopAdvertWrapper-"] -genius.com##div[class^="LeaderboardOrMarquee__"] -appsample.com##div[class^="MapLayout_Bottom"] -dailymotion.com##div[class^="NewWatchingDiscovery__adSection"] -dsearch.com##div[class^="PreAd_"] -reuters.com##div[class^="RightRail-sticky-container"] -games.dailymail.co.uk##div[class^="RightRail__displayAdRight_"] -genius.com##div[class^="SidebarAd_"] -3addedminutes.com,anguscountyworld.co.uk,banburyguardian.co.uk,bedfordtoday.co.uk,biggleswadetoday.co.uk,blackpoolgazette.co.uk,bucksherald.co.uk,burnleyexpress.net,buxtonadvertiser.co.uk,chad.co.uk,daventryexpress.co.uk,derbyshiretimes.co.uk,derbyworld.co.uk,derryjournal.com,dewsburyreporter.co.uk,doncasterfreepress.co.uk,falkirkherald.co.uk,fifetoday.co.uk,glasgowworld.com,halifaxcourier.co.uk,harboroughmail.co.uk,harrogateadvertiser.co.uk,hartlepoolmail.co.uk,hemeltoday.co.uk,hucknalldispatch.co.uk,lancasterguardian.co.uk,leightonbuzzardonline.co.uk,lep.co.uk,lincolnshireworld.com,liverpoolworld.uk,londonworld.com,lutontoday.co.uk,manchesterworld.uk,meltontimes.co.uk,miltonkeynes.co.uk,newcastleworld.com,newryreporter.com,newsletter.co.uk,northamptonchron.co.uk,northantstelegraph.co.uk,northernirelandworld.com,northumberlandgazette.co.uk,nottinghamworld.com,peterboroughtoday.co.uk,portsmouth.co.uk,rotherhamadvertiser.co.uk,scotsman.com,shieldsgazette.com,stornowaygazette.co.uk,sunderlandecho.com,surreyworld.co.uk,thescarboroughnews.co.uk,thesouthernreporter.co.uk,thestar.co.uk,totallysnookered.com,wakefieldexpress.co.uk,walesworld.com,warwickshireworld.com,wigantoday.net,worksopguardian.co.uk,yorkshireeveningpost.co.uk,yorkshirepost.co.uk##div[class^="SidebarAds_"] -chloeting.com##div[class^="StickyFooterAds__Wrapper"] -newyorker.com##div[class^="StickyHeroAdWrapper-"] -scotsman.com##div[class^="TopBanner"] -cnbc.com##div[class^="TopBanner-"] -dailymotion.com##div[class^="VideoInfo__videoInfoAdContainer"] -timeout.com##div[class^="_inlineAdWrapper_"] -timeout.com##div[class^="_sponsoredContainer_"] -crictracker.com##div[class^="ad-block-"] -sfchronicle.com##div[class^="ad-module-"] -fodors.com,thehulltruth.com##div[class^="ad-placeholder"] -cointelegraph.com##div[class^="ad-slot_"] -reuters.com##div[class^="ad-slot__"] -gamingdeputy.com##div[class^="ad-wrapper-"] -goodrx.com##div[class^="adContainer"] -statsroyale.com##div[class^="adUnit_"] -goodrx.com##div[class^="adWrapper-"] -90min.com,investing.com,newsday.com##div[class^="ad_"] -constative.com##div[class^="ad_placeholder_"] -ehitavada.com##div[class^="ad_space_"] -greatandhra.com##div[class^="add"] -ndtv.com##div[class^="add_"] -india.com,ntdeals.net,psdeals.net,xbdeals.net##div[class^="ads-"] -dnaindia.com##div[class^="ads-box"] -unilad.com##div[class^="advert-placeholder_"] -365scores.com##div[class^="all-scores-container_ad_placeholder_"] -247solitaire.com,247spades.com##div[class^="aspace-"] -stakingrewards.com##div[class^="assetFilters_desktop-banner_"] -releasestv.com##div[class^="astra-advanced-hook-"] -onlineradiobox.com##div[class^="banner-"] -technical.city##div[class^="banner_"] -365scores.com##div[class^="bookmakers-review-widget_"] -historycollection.com##div[class^="cis_add_block"] -filehorse.com##div[class^="dx-"][class$="-1"] -365scores.com##div[class^="games-predictions-widget_container_"] -astro.com##div[class^="goad"] -groovypost.com##div[class^="groov-adsense-"] -imagetopdf.com,pdfkit.com,pdftoimage.com,topdf.com,webpconverter.com##div[class^="ha"] -technologyreview.com##div[class^="headerTemplate__leaderboardRow-"] -3addedminutes.com,anguscountyworld.co.uk,banburyguardian.co.uk,bedfordtoday.co.uk,biggleswadetoday.co.uk,blackpoolgazette.co.uk,bucksherald.co.uk,burnleyexpress.net,buxtonadvertiser.co.uk,chad.co.uk,daventryexpress.co.uk,derbyshiretimes.co.uk,derbyworld.co.uk,derryjournal.com,dewsburyreporter.co.uk,doncasterfreepress.co.uk,falkirkherald.co.uk,fifetoday.co.uk,glasgowworld.com,halifaxcourier.co.uk,harboroughmail.co.uk,harrogateadvertiser.co.uk,hartlepoolmail.co.uk,hemeltoday.co.uk,hucknalldispatch.co.uk,lancasterguardian.co.uk,leightonbuzzardonline.co.uk,lep.co.uk,lincolnshireworld.com,liverpoolworld.uk,londonworld.com,lutontoday.co.uk,manchesterworld.uk,meltontimes.co.uk,miltonkeynes.co.uk,newcastleworld.com,newryreporter.com,newsletter.co.uk,northamptonchron.co.uk,northantstelegraph.co.uk,northernirelandworld.com,northumberlandgazette.co.uk,nottinghamworld.com,peterboroughtoday.co.uk,portsmouth.co.uk,rotherhamadvertiser.co.uk,scotsman.com,shieldsgazette.com,stornowaygazette.co.uk,sunderlandecho.com,surreyworld.co.uk,thescarboroughnews.co.uk,thesouthernreporter.co.uk,thestar.co.uk,totallysnookered.com,wakefieldexpress.co.uk,walesworld.com,warwickshireworld.com,wigantoday.net,worksopguardian.co.uk,yorkshireeveningpost.co.uk,yorkshirepost.co.uk##div[class^="helper__AdContainer"] -localjewishnews.com##div[class^="local-feed-banner-ads"] -bloomberg.com##div[class^="media-ui-BaseAd"] -bloomberg.com##div[class^="media-ui-FullWidthAd"] -goal.com##div[class^="open-web-ad_"] -odishatv.in##div[class^="otv-"] -nltimes.nl##div[class^="r89-"] -nationalmemo.com,spectrum.ieee.org,theodysseyonline.com##div[class^="rblad-"] -windowsreport.com##div[class^="refmedprd"] -windowsreport.com##div[class^="refmedprod"] -staples.com##div[class^="sku-configurator__banner"] -mydramalist.com##div[class^="spnsr"] -kijiji.ca##div[class^="sponsored-"] -target.com##div[class^="styles__PubAd"] -semafor.com##div[class^="styles_ad"] -unmineablesbest.com##div[class^="uk-visible@"] -gamingdeputy.com##div[class^="vb-"] -whatsondisneyplus.com##div[class^="whats-"] -podchaser.com##div[data-aa-adunit] -unsplash.com##div[data-ad="true"] -tennews.in##div[data-adid] -3addedminutes.com,anguscountyworld.co.uk,banburyguardian.co.uk,bedfordtoday.co.uk,biggleswadetoday.co.uk,blackpoolgazette.co.uk,bucksherald.co.uk,burnleyexpress.net,buxtonadvertiser.co.uk,chad.co.uk,daventryexpress.co.uk,derbyshiretimes.co.uk,derbyworld.co.uk,derryjournal.com,dewsburyreporter.co.uk,doncasterfreepress.co.uk,falkirkherald.co.uk,fifetoday.co.uk,glasgowworld.com,halifaxcourier.co.uk,harboroughmail.co.uk,harrogateadvertiser.co.uk,hartlepoolmail.co.uk,hemeltoday.co.uk,hucknalldispatch.co.uk,lancasterguardian.co.uk,leightonbuzzardonline.co.uk,lep.co.uk,lincolnshireworld.com,liverpoolworld.uk,londonworld.com,lutontoday.co.uk,manchesterworld.uk,meltontimes.co.uk,miltonkeynes.co.uk,newcastleworld.com,newryreporter.com,newsletter.co.uk,northamptonchron.co.uk,northantstelegraph.co.uk,northernirelandworld.com,northumberlandgazette.co.uk,nottinghamworld.com,peterboroughtoday.co.uk,portsmouth.co.uk,rotherhamadvertiser.co.uk,scotsman.com,shieldsgazette.com,stornowaygazette.co.uk,sunderlandecho.com,surreyworld.co.uk,thescarboroughnews.co.uk,thesouthernreporter.co.uk,thestar.co.uk,totallysnookered.com,wakefieldexpress.co.uk,walesworld.com,warwickshireworld.com,wigantoday.net,worksopguardian.co.uk,yorkshireeveningpost.co.uk,yorkshirepost.co.uk##div[data-ads-params] -999thehawk.com##div[data-alias="Sweetjack"] -walmart.ca##div[data-automation^="HookLogicCarouses"] -bestbuy.ca##div[data-automation^="criteo-sponsored-products-carousel-"] -reddit.com##div[data-before-content="advertisement"] -artforum.com##div[data-component="ad-unit-gallery"] -theverge.com##div[data-concert] -bedbathandbeyond.com##div[data-cta="plpSponsoredProductClick"] -gamingbible.com,unilad.com##div[data-cypress^="sticky-header"] -analyticsindiamag.com##div[data-elementor-type="header"] > section.elementor-section-boxed -wayfair.com##div[data-enzyme-id="WssBannerContainer"] -thestudentroom.co.uk##div[data-freestar-ad] -my.clevelandclinic.org##div[data-identity*="board-ad"] -yandex.com##div[data-name="adWrapper"] -uefa.com##div[data-name="sponsors-slot"] -thebay.com##div[data-piq-toggle="true"] -opentable.ae,opentable.ca,opentable.co.th,opentable.co.uk,opentable.com,opentable.com.au,opentable.com.mx,opentable.de,opentable.es,opentable.hk,opentable.ie,opentable.it,opentable.jp,opentable.nl,opentable.sg##div[data-promoted="true"] -scmp.com##div[data-qa="AdSlot-Container"] -scmp.com##div[data-qa="AppBar-AdSlotContainer"] -scmp.com##div[data-qa="ArticleHeaderAdSlot-Placeholder"] -scmp.com##div[data-qa="AuthorPage-HeaderAdSlotContainer"] -scmp.com##div[data-qa="GenericArticle-MobileContentHeaderAdSlot"] -scmp.com##div[data-qa="GenericArticle-TopPicksAdSlot"] -scmp.com##div[data-qa="InlineAdSlot-Container"] -xing.com##div[data-qa="jobs-inline-ad"] -xing.com##div[data-qa="jobs-recommendation-ad"] -basschat.co.uk,momondo.at,momondo.be,momondo.ca,momondo.ch,momondo.cl,momondo.co.nz,momondo.co.uk,momondo.co.za,momondo.com,momondo.com.ar,momondo.com.au,momondo.com.br,momondo.com.co,momondo.com.pe,momondo.com.tr,momondo.cz,momondo.de,momondo.dk,momondo.ee,momondo.es,momondo.fi,momondo.fr,momondo.hk,momondo.ie,momondo.in,momondo.it,momondo.mx,momondo.nl,momondo.no,momondo.pl,momondo.pt,momondo.ro,momondo.se,momondo.tw,momondo.ua##div[data-resultid$="-sponsored"] -linustechtips.com##div[data-role="sidebarAd"] -aliexpress.com,aliexpress.us##div[data-spm="seoads"] -ecosia.org##div[data-test-id="mainline-result-ad"] -ecosia.org##div[data-test-id="mainline-result-productAds"] -debenhams.com##div[data-test-id^="sponsored-product-card"] -investing.com##div[data-test="ad-slot-visible"] -symbaloo.com##div[data-test="homepageBanner"] -alternativeto.net##div[data-testid="adsense-wrapper"] -hotstar.com##div[data-testid="bbtype-video"] -manomano.co.uk,manomano.de,manomano.es,manomano.fr,manomano.it##div[data-testid="boosted-product-recommendations"] -twitter.com,x.com##div[data-testid="cellInnerDiv"] > div > div[class] > div[class][data-testid="placementTracking"] -qwant.com##div[data-testid="heroTiles"] -qwant.com##div[data-testid="homeTrendsContainer"] a[href^="https://api.qwant.com/v3/r/?u="] -qwant.com##div[data-testid="pam.container"] -qwant.com##div[data-testid="productAdsMicrosoft.container"] -sitepoint.com##div[data-unit-code] -spin.com##div[id*="-promo-lead-"] -spin.com##div[id*="-promo-mrec-"] -chrome-stats.com##div[id*="billboard_responsive"] -thenewspaper.gr##div[id*="thene-"] -diskingdom.com##div[id="diski-"] -namu.wiki##div[id][class]:empty -thewire.in##div[id^="ATD_"] -geeksforgeeks.org##div[id^="GFG_AD_"] -kisshentai.net,onworks.net##div[id^="ad"] -songlyrics.com##div[id^="ad-absolute-160"] -nationalrail.co.uk##div[id^="ad-advert-"] -belloflostsouls.net##div[id^="ad-container-"] -timeout.com##div[id^="ad-promo-"] -timeout.com##div[id^="ad-side-"] -nowgoal8.com##div[id^="ad_"] -javacodegeeks.com##div[id^="adngin-"] -agoda.com##div[id^="ads-"] -pixiv.net##div[id^="adsdk-"] -antiguanewsroom.com##div[id^="antig-"] -slidesgo.com##div[id^="article_ads"] -business-standard.com##div[id^="between_article_content_"] -digg.com,iplogger.org,wallhere.com,wikitechy.com##div[id^="bsa-zone_"] -business2community.com##div[id^="busin-"] -competenetwork.com##div[id^="compe-"] -elfaro.net##div[id^="content-ad-body"] -titantv.com##div[id^="ctl00_TTLB"] -timesofindia.com##div[id^="custom_ad_"] -cyprus-mail.com##div[id^="cypru-"] -football-tribe.com##div[id^="da-article-"] -rediff.com##div[id^="div_ad_"] -memedroid.com##div[id^="freestar-ad-"] -cinesprint.com##div[id^="googleads_"] -gamepix.com##div[id^="gpx-banner"] -maltadaily.mt##div[id^="malta-"] -mediabiasfactcheck.com##div[id^="media-"] -gamebyte.com,irishnews.com##div[id^="mpu"] -pretoriafm.co.za##div[id^="preto-"] -progamerage.com##div[id^="proga-"] -howtogeek.com##div[id^="purch_"] -realtalk933.com##div[id^="realt-"] -sbstatesman.com##div[id^="sbsta-"] -smallnetbuilder.com##div[id^="snb-"] -filehorse.com##div[id^="td-"] -birrapedia.com##div[id^="textoDivPublicidad_"] -searchenginereports.net##div[id^="theBdsy_"] -theroanoketribune.org##div[id^="thero-"] -yovizag.com##div[id^="v-yovizag-"] -weraveyou.com##div[id^="werav-"] -mommypoppins.com##div[id^="wrapper-div-gpt-ad-"] -wallpaperflare.com##div[itemtype$="WPAdBlock"] -nashfm100.com##div[onclick*="https://deucepub.com/"] -forums.pcsx2.net##div[onclick^="MyAdvertisements."] -ezgif.com##div[style$="min-height:90px;display:block"] -kuncomic.com##div[style*="height: 2"][style*="text-align: center"] -news18.com##div[style*="min-height"][style*="background"] -news18.com##div[style*="min-height"][style*="justify-content:center;"] -news18.com##div[style*="min-height: 250px"] -footballtransfers.com##div[style*="min-height: 250px;"] -news18.com##div[style*="min-height: 527px"] -news18.com##div[style*="min-height:250px"] -news18.com##div[style*="min-height:527px"] -gsmarena.com##div[style*="padding-bottom: 24px;"] -newsbreak.com##div[style*="position:relative;width:100%;height:0;padding-bottom:"] -news18.com,readcomiconline.li##div[style*="width: 300px"] -datacenterdynamics.com,fansshare.com,hairboutique.com,iconarchive.com,imagetwist.com,memecenter.com,neoseeker.com,news18.com,paultan.org,thejournal-news.net,unexplained-mysteries.com,windsorite.ca,xtra.com.my##div[style*="width:300px"] -clover.fm##div[style*="width:975px; height:90px;"] -filesharingtalk.com##div[style="background-color: white; border-width: 2px; border-style: dashed; border-color: white;"] -askdifference.com##div[style="color: #aaa"] -aceshowbiz.com##div[style="display:inline-block;min-height:300px"] -kimcartoon.li##div[style="font-size: 0; position: relative; text-align: center; margin: 10px auto; width: 300px; height: 250px; overflow: hidden;"] -pixiv.net##div[style="font-size: 0px;"] a[target="premium_noads"] -beta.riftkit.net##div[style="height: 300px; width: 400px;"] -paraphraser.io##div[style="height:128px;overflow: hidden !important;"] -wikibrief.org##div[style="height:302px;width:auto;text-align:center;"] -comics.org##div[style="height:90px"] -productreview.com.au##div[style="line-height:0"] -streamingsites.com##div[style="margin-bottom: 10px; display: flex;"] -upjoke.com##div[style="margin-bottom:0.5rem; min-height:250px;"] -gsmarena.com##div[style="margin-left: -10px; margin-top: 30px; height: 145px;"] -editpad.org##div[style="min-height: 300px;min-width: 300px"] -wikiwand.com##div[style="min-height: 325px; max-width: 600px;"] -gamereactor.asia,gamereactor.cn,gamereactor.cz,gamereactor.de,gamereactor.dk,gamereactor.es,gamereactor.eu,gamereactor.fi,gamereactor.fr,gamereactor.it,gamereactor.jp,gamereactor.kr,gamereactor.nl,gamereactor.no,gamereactor.pl,gamereactor.pt,gamereactor.se##div[style="min-height: 600px; margin-bottom: 20px;"] -disneydining.com##div[style="min-height:125px;"] -askdifference.com##div[style="min-height:280px;"] -newser.com##div[style="min-height:398px;"] -flotrack.org##div[style="min-width: 300px; min-height: 250px;"] -nicelocal.com##div[style="min-width: 300px; min-height: 600px;"] -editpad.org##div[style="min-width: 300px;min-height: 300px"] -nicelocal.com##div[style="min-width: 728px; min-height: 90px;"] -technical.city##div[style="padding-bottom: 20px"] > div[style="min-height: 250px"] -bitcoin-otc.com##div[style="padding-left: 10px; padding-bottom: 10px; text-align: center; font-family: Helvetica;"] -9gag.com##div[style="position: relative; z-index: 3; width: 640px; min-height: 202px; margin: 0px auto;"] -navajotimes.com##div[style="text-align: center; margin-top: -35px;"] -wikibrief.org##div[style="text-align:center;height:302px;width:auto;"] -m.koreatimes.co.kr##div[style="width: 300px; height:250px; overflow: hidden; margin: 0 auto;"] -constative.com##div[style]:not([class]) -whatmobile.com.pk##div[style^="background-color:#EBEBEB;"] -fctables.com##div[style^="background:#e3e3e3;position:fixed"] -footybite.cc##div[style^="border: 2px solid "] -pastebin.com##div[style^="color: #999; font-size: 12px; text-align: center;"] -realpython.com##div[style^="display:block;position:relative;"] -newser.com##div[style^="display:inline-block;width:728px;"] -elitepvpers.com##div[style^="font-size:11px;"] -add0n.com,crazygames.com##div[style^="height: 90px;"] -apkdone.com,crazygames.com,english-hindi.net,livesoccertv.com,malaysiakini.com,sporticos.com##div[style^="height:250px"] -titantv.com##div[style^="height:265px;"] -altchar.com##div[style^="height:280px;"] -malaysiakini.com##div[style^="height:600px"] -whatmobile.com.pk##div[style^="height:610px"] -point2homes.com,propertyshark.com##div[style^="margin-bottom: 10px;"] -unionpedia.org##div[style^="margin-top: 15px; min-width: 300px"] -gizbot.com,goodreturns.in,inc.com##div[style^="min-height: 250px"] -point2homes.com,propertyshark.com##div[style^="min-height: 360px;"] -add0n.com##div[style^="min-height:90px"] -decrypt.co,metabattle.com##div[style^="min-width: 300px;"] -gtaforums.com##div[style^="text-align: center; margin: 0px 0px 10px;"] -appleinsider.com##div[style^="text-align:center;border-radius:0;"] -jwire.com.au##div[style^="width:468px;"] -imgbabes.com##div[style^="width:604px;"] -interglot.com,sodapdf.com,stopmalvertising.com##div[style^="width:728px;"] -worldstar.com,worldstarhiphop.com##div[style^="width:972px;height:250px;"] -tvtv.us##div[style^="z-index: 1100; position: fixed;"] -ebay.com##div[title="ADVERTISEMENT"] -presearch.com##div[x-show*="_ad_click"] -adblock-tester.com##embed[width="240"] -teslaoracle.com##figure.aligncenter -groupon.com##figure[data-clickurl^="https://api.groupon.com/sponsored/"] -imgburn.com##font[face="Arial"][size="1"] -realitytvworld.com##font[size="1"][color="gray"] -dailydot.com##footer -mirrored.to##form[action^="//filesdl.cloud/"] -law.com,topcultured.com##h3 -kazwire.com##h3.tracking-widest -drive.com.au##hr -carls-sims-4-guide.com##hr.post_separator + .windowbg -nordstrom.com##iframe[data-revjet-options] -yourbittorrent.com##iframe[src] -realgearonline.com##iframe[src^="http://www.adpeepshosted.com/"] -bollyflix.nexus,dramacool.sr##iframe[style*="z-index: 2147483646"] -4anime.gg,apkmody.io,bollyflix.nexus,bravoporn.com,dramacool.sr,gogoanime.co.in,gogoanime.run,harimanga.com,hdmovie2.rest,himovies.to,hurawatch.cc,instamod.co,leercapitulo.com,linksly.co,mangadna.com,manhwadesu.bio,messitv.net,miraculous.to,movies-watch.com.pk,moviesmod.zip,nkiri.com,prmovies.dog,putlockers.li,sflix.se,sockshare.ac,ssoap2day.to,sukidesuost.info,tamilyogi.bike,uwatchfre.cam,waploaded.com,watchomovies.net,y-2mate.com,yomovies.team,ytmp3.cc,yts-subs.com##iframe[style*="z-index: 2147483647"] -dexdotexe.com##iframe[title="Top Games"] -jagranjosh.com##iframe[title^="YouTube"] -pixiv.net##iframe[width="300"][height="250"] -premiumtimesng.com##img[alt$=" Ad"] -bailagentnetwork.com##img[alt*="Affiliate_BailAgentNetwork"] -windycitymediagroup.com,windycitytimes.com##img[alt*="Sponsor"] -hiphopkit.com##img[alt="Zappy"] -therainbowtimesmass.com##img[alt="banner ad"] -framed.wtf##img[alt="prime gaming banner"] -pasty.info##img[aria-label="Aliexpress partner network affiliate Link"] -pasty.info##img[aria-label="Ebay partner network affiliate Link"] -inkbotdesign.com,kuramanime.lol##img[decoding="async"] -cloutgist.com,codesnse.com##img[fetchpriority] -nepallivetoday.com,wjr.com##img[height="100"] -prawfsblawg.blogs.com,thomhartmann.com##img[height="200"] -1001tracklists.com,newyorkyimby.com##img[height="280"] -windycitymediagroup.com,windycitytimes.com##img[name="Sponsor"] -callofwar.com,supremacy1914.com##img[referrerpolicy] -nsfwyoutube.com##img[src*="data"] -bcmagazine.net##img[style^="width:300px;"] -abpclub.co.uk##img[width="118"] -howtogermany.com##img[width="120"] -1001tracklists.com,lyngsat-logo.com,lyngsat-maps.com,lyngsat-stream.com,lyngsat.com,webhostingtalk.com##img[width="160"] -fashionpulis.com,techiecorner.com##img[width="250"] -airplaydirect.com,americaoutloud.com,bigeye.ug,completesports.com,cryptomining-blog.com,cryptoreporter.info,dotsauce.com,espnrichmond.com,flsentinel.com,forexmt4indicators.com,freedomhacker.net,gamblingnewsmagazine.com,gameplayinside.com,goodcarbadcar.net,kenyabuzz.com,kiwiblog.co.nz,mauitime.com,mkvcage.com,movin100.com,mycolumbuspower.com,naijaloaded.com.ng,newzimbabwe.com,onislandtimes.com,ouo.press,portlandphoenix.me,punchng.com,reviewparking.com,robhasawebsite.com,sacobserver.com,sdvoice.info,seguintoday.com,themediaonline.co.za,theolivepress.es,therep.co.za,thewillnigeria.com,tntribune.com,up-4ever.net,waamradio.com,wantedinafrica.com,wantedinrome.com,wschronicle.com##img[width="300"] -oann.com##img[width="300"][height="250"] -boxthislap.org,unknowncheats.me##img[width="300px"] -independent.co.ug##img[width="320"] -hltv.org##img[width="320"][height="560"] -londonnewsonline.co.uk##img[width="360"] -gamblingnewsmagazine.com##img[width="365"] -flashx.cc,flashx.co,forum.gsmhosting.com,themediaonline.co.za,topprepperwebsites.com##img[width="468"] -godradio1.com,runnerstribe.com##img[width="728"] -boxthislap.org##img[width="728px"] -ccmmagazine.com##img[width="970"][height="150"] -umod.org##ins[data-revive-id] -bitzite.com,unmineablesbest.com##ins[style^="display:inline-block;width:300px;height:250px;"] -everythingrf.com,natureworldnews.com##label -tellows-au.com,tellows-tr.com,tellows.at,tellows.be,tellows.co,tellows.co.nz,tellows.co.uk,tellows.co.za,tellows.com,tellows.com.br,tellows.cz,tellows.de,tellows.es,tellows.fr,tellows.hu,tellows.in,tellows.it,tellows.jp,tellows.mx,tellows.net,tellows.nl,tellows.org,tellows.pl,tellows.pt,tellows.ru,tellows.se,tellows.tw##li > .comment-body[style*="min-height: 250px;"] -cgpress.org##li > div[id^="cgpre-"] -bestbuy.com##li.embedded-sponsored-listing -cultbeauty.co.uk,dermstore.com,skinstore.com##li.sponsoredProductsList -laredoute.be,laredoute.ch,laredoute.co.uk,laredoute.com,laredoute.de,laredoute.es,laredoute.fr,laredoute.gr,laredoute.it,laredoute.nl,laredoute.pt,laredoute.ru##li[class*="sponsored-"] -linkedin.com##li[data-is-sponsored="true"] -duckduckgo.com,duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion##li[data-layout="products"] -duckduckgo.com##li[data-layout="products_middle"] -opentable.ae,opentable.ca,opentable.co.th,opentable.co.uk,opentable.com,opentable.com.au,opentable.com.mx,opentable.de,opentable.es,opentable.hk,opentable.ie,opentable.it,opentable.jp,opentable.nl,opentable.sg##li[data-promoted="true"] -xing.com##li[data-qa="notifications-ad"] -instacart.com##li[data-testid="compact-item-list-header"] -flaticon.com##li[id^="bn-icon-list"] -linkvertise.com##lv-redirect-static-ad -escorenews.com##noindex -adblock-tester.com##object[width="240"] -americanfreepress.net##p > [href] > img -ft.com##pg-slot -mashable.com##section.mt-4 > div -bbc.com##section[data-e2e="advertisement"] -reddit.com,reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad.onion##shreddit-comments-page-ad -tempostorm.com##side-banners -smartprix.com##sm-dap -nativeplanet.com##span[class^="oiad-txt"] -thewire.in##span[style*="background: rgb(232, 233, 237); text-align: center;"] -windowsbbs.com##span[style*="width: 338px; height: 282px;"] -fxempire.com##span[style="user-select:none"] -americanfreepress.net##strong > span > a -torlock.com##table.hidden-xs -realitytvworld.com##table[border="0"][align="left"] -thebbqforum.com##table[border="0"][width] -thebbqforum.com##table[border="1"][width] -roadtester.com.au##table[cellpadding="9"][border="0"] -wifinetnews.com##table[height="260"] -softpanorama.org##table[height="620"] -afrol.com##table[height="70"] -automobile-catalog.com,car.com,silentera.com##table[height="90"] -automobile-catalog.com,itnewsonline.com##table[width="300"] -learninginfo.org##table[width="346"] -jeepforum.com##table[width="468"] -worldtimezone.com##table[width="472"] -pcstats.com##table[width="866"] -schlockmercenary.com##td[colspan="3"] -geekzone.co.nz##td[colspan="3"].forumRow[style="border-right:solid 1px #fff;"] -eve-search.com##td[height="90"] -titantv.com##td[id^="menutablelogocell"] -itnewsonline.com##td[width="120"] -greyhound-data.com##td[width="160"] -lyngsat.com##td[width="728"][height="90"] -eurometeo.com##td[width="738"] -radiosurvivor.com##text-18 -telescopius.com##tlc-ad-banner -trademe.co.nz##tm-display-ad -rarbgaccess.org,rarbgmirror.com,rarbgmirror.org,rarbgproxy.com,rarbgproxy.org,rarbgunblock.com,rarbgunblocked.org##tr > td + td[style*="height:"] -titantv.com##tr.gridRow > td > [id] > div:first-child -livetv.sx##tr[height] ~ tr > td[colspan][height][bgcolor="#000000"] -morningagclips.com##ul.logo-nav -greyhound-data.com##ul.ppts -greatandhra.com##ul.sortable-list > div -backgrounds.wetransfer.net##we-wallpaper -! top-level domain wildcard -laredoute.*###hp-sponsored-banner -! :has() -puzzle-aquarium.com,puzzle-battleships.com,puzzle-binairo.com,puzzle-bridges.com,puzzle-chess.com,puzzle-dominosa.com,puzzle-futoshiki.com,puzzle-galaxies.com,puzzle-heyawake.com,puzzle-hitori.com,puzzle-jigsaw-sudoku.com,puzzle-kakurasu.com,puzzle-kakuro.com,puzzle-killer-sudoku.com,puzzle-light-up.com,puzzle-lits.com,puzzle-loop.com,puzzle-masyu.com,puzzle-minesweeper.com,puzzle-nonograms.com,puzzle-norinori.com,puzzle-nurikabe.com,puzzle-pipes.com,puzzle-shakashaka.com,puzzle-shikaku.com,puzzle-shingoki.com,puzzle-skyscrapers.com,puzzle-slant.com,puzzle-star-battle.com,puzzle-stitches.com,puzzle-sudoku.com,puzzle-tapa.com,puzzle-tents.com,puzzle-thermometers.com,puzzle-words.com###Skyscraper:has(> #bannerSide) -windowscentral.com###article-body > .hawk-nest[data-widget-id]:has(a[class^="hawk-affiliate-link-"][class$="-button"]) -puzzle-aquarium.com,puzzle-battleships.com,puzzle-binairo.com,puzzle-bridges.com,puzzle-chess.com,puzzle-dominosa.com,puzzle-futoshiki.com,puzzle-galaxies.com,puzzle-heyawake.com,puzzle-hitori.com,puzzle-jigsaw-sudoku.com,puzzle-kakurasu.com,puzzle-kakuro.com,puzzle-killer-sudoku.com,puzzle-light-up.com,puzzle-lits.com,puzzle-loop.com,puzzle-masyu.com,puzzle-minesweeper.com,puzzle-nonograms.com,puzzle-norinori.com,puzzle-nurikabe.com,puzzle-pipes.com,puzzle-shakashaka.com,puzzle-shikaku.com,puzzle-shingoki.com,puzzle-skyscrapers.com,puzzle-slant.com,puzzle-star-battle.com,puzzle-stitches.com,puzzle-sudoku.com,puzzle-tapa.com,puzzle-tents.com,puzzle-thermometers.com,puzzle-words.com###btIn:has(> #bannerTop) -winaero.com###content p:has(~ ins.adsbygoogle) -radio.at,radio.de,radio.dk,radio.es,radio.fr,radio.it,radio.net,radio.pl,radio.pt,radio.se###headerTopBar ~ div > div:has(div#RAD_D_station_top) -gtaforums.com###ipsLayout_mainArea div:has(> #pwDeskLbAtf) -aleteia.org###root > div[class]:has(> .adslot) -bbc.com###sticky-mpu:has(.dotcom-ad-inner) -kroger.com##.AutoGrid-cell:has(.ProductCard-tags > div > span[data-qa="featured-product-tag"]) -nationalgeographic.com##.FrameBackgroundFull--grey:has(.ad-wrapper) -luxa.org##.MuiContainer-root:has(> ins.adsbygoogle) -manomano.co.uk,manomano.de,manomano.es,manomano.fr,manomano.it##.Ssfiu-:has([data-testid="popoverTriggersponsoredLabel"]) -outlook.live.com##.VdboX[tabindex="0"]:has(img[src="https://res.cdn.office.net/assets/ads/adbarmetrochoice.svg"]) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##._6y8t:has(a[href="/ads/about/?entry_product=ad_preferences"]) -haveibeenpwned.com##.actionsBar:has(.why1Password) -barandbench.com##.ad-wrapper-module__adContainer__iD4aI -slickdeals.net##.announcementBar:has(.sponsorContent) -nation.africa##.article-collection-teaser:has(.sponsored-label) -thesun.co.uk##.article-sidebar .widget-sticky:has([class*="ad_widget"]) -forexlive.com##.article-slot__wrapper:has(.article-header__sponsored) -time.com##.article-small-sidebar > .sticky-container:has(div[id^="ad-"]) -blitz.gg##.aside-content-column:has(.display-ad) -olympics.com##.b2p-list__item:has(> .adv-fluid) -atlanticsuperstore.ca,fortinos.ca,maxi.ca,newfoundlandgrocerystores.ca,nofrills.ca,provigo.ca,realcanadiansuperstore.ca,valumart.ca,yourindependentgrocer.ca,zehrs.ca##.block-wrapper:has(.element-header__sponsoredLabel) -loblaws.ca##.block-wrapper:has([data-track-product-component="carousel||rmp_sponsored"]) -haveibeenpwned.com##.bodyGradient > :has(.why1Password) -chosun.com##.box--bg-grey-20:has(.dfpAd) -radioreference.com##.box.gradient:has(a[href*="&Click="]) -gpro.net##.boxy:has(#blockblockA) -slickdeals.net##.bp-p-filterGrid_item:has(.bp-c-label--promoted) -homedepot.com##.browse-search__pod:has([id^="plp_pod_sponsored"]) -doordash.com##.carousel-virtual-wrapper:has([href*="collection_type=sponsored_brand"]) -doordash.com##.ccdtLs:has([data-testid="sponsored:Sponsored"]) -asda.com##.cms-modules:has([data-module*="Sponsored Products"]) -asda.com##.co-item:has(.co-item__sponsored-label) -theautopian.com##.code-block:has(.htlad-InContent) -templateshub.net##.col-lg-4.col-md-6:has(> div.singel-course) -autotrader.com##.col-xs-12.col-sm-4:has([data-cmp="inventorySpotlightListing"]) -costco.com##.col-xs-12:has([data-bi-placement^="Criteo_Product_Display"]) -infinitestart.com##.cs-sidebar__inner > .widget:has(> ins.adsbygoogle) -wsj.com##.css-c54t2t:has(> .adWrapper) -wsj.com##.css-c54t2t:has(> .adWrapper) + hr -alphacoders.com##.css-grid-content:has(> .in-thumb-ad-css-grid) -dollargeneral.com##.dg-product-card:has(.dg-product-card__sponsored[style="display: block;"]) -limetorrents.lol##.downloadareabig:has([title^="An‌on‌ymous Download"]) -tripsonabbeyroad.com##.e-con-inner:has(tp-cascoon) -protrumpnews.com##.enhanced-text-widget:has(span.pre-announcement) -upfivedown.com##.entry > hr.wp-block-separator:has(+ .has-text-align-center) -morrisons.com##.featured-items:has(.js-productCarouselFops) -pigglywigglystores.com##.fp-item:has(.fp-tag-ad) -slickdeals.net##.frontpageGrid__feedItem:has(.dealCardBadge--promoted) -tumblr.com##.ge_yK:has(.hM19_) -bestbuy.com##.generic-morpher:has(.spns-label) -fortune.com##.homepage:has(> div[id^="InStream"]) -manomano.co.uk,manomano.de,manomano.es,manomano.fr,manomano.it##.hrHZYT:has([data-testid="popoverTriggersponsoredLabel"]) -1tamilmv.tax##.ipsWidget:has([href*="RajbetImage"]) -qwant.com##.is-sidebar:has(a[data-testid="advertiserAdsLink"]) -yovizag.com##.jeg_column:has(> .jeg_wrapper > .jeg_ad) -motortrend.com##.justify-center:has(.nativo-news) -chewy.com##.kib-carousel-item:has(.kib-product-sponsor) -content.dictionary.com##.lp-code:has(> [class$="Ad"]) -euronews.com##.m-object:has(.m-object__spons-quote) -acmemarkets.com,andronicos.com,carrsqc.com,haggen.com,jewelosco.com,kingsfoodmarkets.com,pavilions.com,shaws.com,starmarket.com,tomthumb.com,vons.com##.master-product-carousel:has([data-carousel-api*="search/sponsored-carousel"]) -acmemarkets.com,albertsons.com,andronicos.com,carrsqc.com,haggen.com,jewelosco.com,kingsfoodmarkets.com,pavilions.com,randalls.com,safeway.com,shaws.com,starmarket.com,tomthumb.com,vons.com##.master-product-carousel:has([data-carousel-driven="sponsored-products"]) -motortrend.com##.mb-6:has([data-ad="true"]) -officedepot.com##.od-col:has(.od-product-card-region-colors-sponsored) -pollunit.com##.owl-carousel:has(.carousel-ad) -hannaford.com##.plp_thumb_wrap:has([data-citrusadimpressionid]) -niagarathisweek.com##.polarBlock:has(.polarAds) -404media.co##.post__content > p:has(a[href^="https://srv.buysellads.com/"]) -myntra.com##.product-base:has(.product-waterMark) -douglas.at,douglas.be,douglas.ch,douglas.cz,douglas.de,douglas.es,douglas.hr,douglas.hu,douglas.it,douglas.nl,douglas.pl,douglas.pt,douglas.ro,douglas.si,douglas.sk##.product-grid-column:has(.product-tile__sponsored) -woolworths.com.au##.product-grid-v2--tile:has(.sponsored-text) -meijer.com##.product-grid__product:has(.product-tile__sponsored) -chaussures.fr,eapavi.lv,ecipele.hr,ecipo.hu,eobuv.cz,eobuv.sk,eobuwie.com.pl,epantofi.ro,epapoutsia.gr,escarpe.it,eschuhe.at,eschuhe.ch,eschuhe.de,eskor.se,evzuttya.com.ua,obuvki.bg,zapatos.es##.product-item:has(.sponsored-label) -maxi.ca##.product-tile-group__list__item:has([data-track-products-array*="sponsored"]) -ksl.com##.queue:has(.sponsored) -olx.com.pk##.react-swipeable-view-container:has([href*="http://onelink.to"]) -laravel-news.com##.relative:has([wire\:key="article-ad-card"]) -metager.org##.result:has(a[href^="https://metager.org"][href*="/partner/r?"]) -metager.org##.result:has(a[href^="https://r.search.yahoo.com/"]) -qwant.com##.result__ext > div:has([data-testid="adResult"]) -petco.com##.rmn-container:has([class*="SponsoredText"]) -ebay.com##.s-item:has(a[href*="&amdata="]) -yandex.com##.search-list-view__advert-offer-banner -playpilot.com##.search-preview .side:has(> .provider) -tempest.com##.search-result-item:has(.search-result-item__title--ad) -yandex.com##.search-snippet-view:has(span.search-advert-badge__advert) -troyhunt.com##.sidebar-featured:has(a[href^="https://pluralsight.pxf.io/"]) -bing.com##.slide:has(.rtb_ad_caritem_mvtr) -fastcompany.com##.sticky:has(.ad-container) -rustlabs.com##.sub-info-block:has(#banner) -scamwarners.com##.subheader:has(> ins.adsbygoogle) -thesun.co.uk##.sun-grid-container:has([class*="ad_widget"]) -nex-software.com##.toolinfo:has(a[href$="/reimage"]) -twitter.com,x.com##.tweet:has(.promo) -wowcher.co.uk##.two-by-two-deal:has(a[href*="src=sponsored_search_"]) -forums.socialmediagirls.com##.uix_nodeList > div[class="block"]:has([href^="/link-forums/"]) -darkreader.org##.up:has(.ddg-logo-link) -darkreader.org##.up:has(.h-logo-link) -duckduckgo.com##.vertical-section-divider:has(span.badge--ad-wrap) -neonheightsservers.com##.well:has(ins.adsbygoogle) -9to5linux.com##.widget:has([href$=".php"]) -bestbuy.ca##.x-productListItem:has([data-automation="sponsoredProductLabel"]) -freshdirect.com##[class*="ProductsGrid_grid_item"]:has([data-testid="marketing tag"]) -livejournal.com##[class*="categories"] + div[class]:has(> [class*="-commercial"]) -momondo.com##[class*="mod-pres-default"]:has(div[class*="ad-badge"]) -petco.com##[class*="rmn-banner"]:has([class*="SponsoredText"]) -popularmechanics.com##[class] > :has(> #article-marketplace-horizontal) -popularmechanics.com##[class] > :has(> #gpt-ad-vertical-bottom) -avclub.com,gizmodo.com,jalopnik.com,kotaku.com,theonion.com,theroot.com##[class] > div:has(> [is="bulbs-dfp"]) -fortune.com##[class]:has(> #Leaderboard0) -petco.com##[class^="citrus-carousel-"]:has([class^="carousel__Sponsored"]) -svgrepo.com##[class^="style_native"]:has([href*="buysellads.com"]) -tesco.com##[class^="styled__StyledLIProductItem"]:has([class^="styled__StyledOffers"]) -argos.co.uk##[class^="styles__LazyHydrateCard"]:has([class*="ProductCardstyles__FlyoutBadge"]) -cargurus.com##[data-cg-ft="car-blade-link"]:has([data-cg-ft="srp-listing-blade-sponsored"]) -wayfair.com##[data-hb-id="Card"]:has([data-node-id^="ListingCardSponsored"]) -avxhm.se##[data-localize]:has(a[href^="https://canv.ai/"]) -giantfood.com,giantfoodstores.com,martinsfoods.com##[data-product-id]:has(.flag_label--sponsored) -petco.com##[data-testid="product-buy-box"]:has([class*="SponsoredText"]) -kayak.com##[role="button"]:has([class*="ad-marking"]) -kayak.com##[role="tab"]:has([class*="sponsored"]) -aliexpress.com,aliexpress.us##a[class^="manhattan--container--"][class*="main--card--"]:has(span[style="background-color:rgba(0,0,0,0.20);position:absolute;top:8px;color:#fff;padding:2px 5px;background:rgba(0,0,0,0.20);border-radius:4px;right:8px"]) -aliexpress.com,aliexpress.us##a[class^="manhattan--container--"][class*="main--card--"]:has(span[style="background: rgba(0, 0, 0, 0.2); position: absolute; top: 8px; color: rgb(255, 255, 255); padding: 2px 5px; border-radius: 4px; right: 8px;"]) -manomano.co.uk,manomano.de,manomano.es,manomano.fr,manomano.it##a[href^="/"][href*="?product_id="]:has(.ur6iYv) -yandex.com##a[href^="https://yandex.ru/an/count/"] -independent.co.uk,standard.co.uk##article > div[class^="sc-"]:has(> div[class^="sc-"] > div[data-ad-unit-path]) -digg.com##article.fp-vertical-story:has(a[href="/channel/digg-pick"]) -digg.com##article.fp-vertical-story:has(a[href="/channel/promotion"]) -9gag.com##article:has(.promoted) -mg.co.za##article:has(.sponsored-single) -tympanus.net##article:has(header:has(.ct-sponsored)) -foxnews.com##article[class|="article story"]:has(.sponsored-by) -twitter.com,x.com##article[data-testid="tweet"]:has(path[d$="10H8.996V8h7v7z"]) -thetimes.com##article[id="article-main"] > div:has(#ad-header) -winaero.com##aside > .widget_text:has(.adsbygoogle) -psychcentral.com##aside:has([data-empty]) -vidplay.lol##body > div > div[class][style]:has(> div > div > a[target="_blank"]) -wolt.com##button:has(> div > div > div > span:has-text(Sponsored)) -countdown.co.nz##cdx-card:has(product-badge-list) -creepypasta.com##center:has(+ #ad-container-1) -hashrate.no##center:has(.sevioads) -skyscanner.com,skyscanner.net##div > a:has(div[class^="DefaultBanner_sponsorshipRow"]) -manomano.co.uk,manomano.de,manomano.es,manomano.fr,manomano.it##div > div:has([data-testid="banner-spr-label"]) -inverse.com##div > p + div:has(amp-ad) -bailagentnetwork.com##div.box-bottom:has(a[rel="noopener nofollow"]) -outlook.live.com##div.customScrollBar > div > div[id][class]:has(img[src$="/images/ads-olk-icon.png"]) -flightradar24.com##div.items-center.justify-center:has(> div#pb-slot-fr24-airplane:empty) -costco.ca##div.product:has(.criteo-sponsored) -thebay.com##div.product:has(div.citrus-sponsored) -meijer.com##div.slick-slide:has(.product-tile__sponsored) -healthyrex.com##div.textwidget:has(a[rel="nofollow sponsored"]) -bestbuy.ca##div.x-productListItem:has([class^="sponsoredProduct"]) -timesnownews.com,zoomtventertainment.com##div:has(> .bggrayAd) -newsfirst.lk##div:has(> [class*="hide_ad"]) -doordash.com##div:has(> a[data-anchor-id="SponsoredStoreCard"]) -skyscanner.com,skyscanner.net##div:has(> a[data-testid="inline-brand-banner"]) -wolt.com##div:has(> div > div > div > div > div > p:has-text(Sponsored)) -outlook.live.com##div:has(> div > div.fbAdLink) -tripadvisor.com##div:has(> div > div[class="ui_column ovNFo is-3"]) -tripadvisor.com##div:has(> div[class="ui_columns is-multiline "]) -heb.com##div:has(> div[id^="hrm-banner-shotgun"]) -androidauthority.com##div:not([class]) > div[class^="_--_-___"]:has(> div[data-ad-type="leaderboard_atf"]) -webtools.fineaty.com##div[class*=" hidden-"]:has(.adsbygoogle) -aliexpress.com,aliexpress.us##div[class*="search-item-card-wrapper-"]:has(span[class^="multi--ad-"]) -qwant.com##div[class="_2NDle"]:has(div[data-testid="advertiserAdsDisplayUrl"]) -walmart.com##div[class="mb1 ph1 pa0-xl bb b--near-white w-25"]:has(div[data-ad-component-type="wpa-tile"]) -radio.at,radio.de,radio.dk,radio.es,radio.fr,radio.it,radio.net,radio.pl,radio.pt,radio.se##div[class] > div[class]:has(> div[class] > div[id^="RAD_D_"]) -scribd.com##div[class]:has(> [data-e2e="dismissible-ad-header-scribd_adhesion"]) -dearbornmarket.com,fairwaymarket.com,gourmetgarage.com,priceritemarketplace.com,shoprite.com,thefreshgrocer.com##div[class^="ColListing"]:has(div[data-testid^="Sponsored"]) -skyscanner.com##div[class^="ItineraryInlinePlusWrapper_"]:has(button[class^="SponsoredInfoButton_"]) -wish.com##div[class^="ProductGrid__FeedTileWidthWrapper-"]:has(div[class^="DesignSpec__TextSpecWrapper-"][color="#6B828F"]:not([data-testid])) -wish.com##div[class^="ProductTray__ProductStripItem-"]:has(div[class^="DesignSpec__TextSpecWrapper-"][color="#6B828F"][data-testid] + div[class^="DesignSpec__TextSpecWrapper-"][color="#6B828F"]) -virginradio.co.uk##div[class^="css-"]:has(> .ad-outline) -flickr.com##div[class^="main view"]:has(a[href$="&ref=sponsored"]) -cargurus.com##div[data-cg-ft="car-blade"]:has(div[data-cg-ft="sponsored-listing-badge"]) -rakuten.com##div[data-productid]:has(div.productList_sponsoredAds_RUS) -pinterest.at,pinterest.ca,pinterest.ch,pinterest.co.uk,pinterest.com,pinterest.com.au,pinterest.com.mx,pinterest.de,pinterest.es,pinterest.fr,pinterest.it,pinterest.pt##div[data-test-id="pin"]:has(div[title^="Promoted"]) -priceline.com##div[data-testid="HTL_NEW_LISTING_CARD_RESP"]:has(a[aria-label*=" Promoted"]) -twiiter.com,x.com##div[data-testid="UserCell"]:has(path[d$="10H8.996V8h7v7z"]) -twiiter.com,x.com##div[data-testid="eventHero"]:has(path[d$="10H8.996V8h7v7z"]) -twiiter.com,x.com##div[data-testid="placementTracking"]:has(div[data-testid$="-impression-pixel"]) -booking.com##div[data-testid="property-card"]:has(div[data-testid="new-ad-design-badge"]) -twiiter.com,x.com##div[data-testid="trend"]:has(path[d$="10H8.996V8h7v7z"]) -truthsocial.com##div[item="[object Object]"]:has(path[d="M17 7l-10 10"]) -truthsocial.com##div[item="[object Object]"]:has(path[d="M9.83333 1.83398H16.5M16.5 1.83398V8.50065M16.5 1.83398L9.83333 8.50065L6.5 5.16732L1.5 10.1673"]) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##div[style="max-width: 390px; min-width: 190px;"]:has(a[href^="/ads/"]) -thisday.app##div[style="min-height: 340px;"]:has(div.ad) -nicelocal.com##div[style="min-height: 600px;"]:has(iframe[id^="google_ads_"]) -nicelocal.com##div[style="min-height: 90px;"]:has(iframe[id^="google_ads_"]) -tartaria-faucet.net##div[style^="display"]:has([src^="https://multiwall-ads.shop/"]) -90min.com##figure:has(> div > #mm-player-placeholder-large-screen) -nex-software.com##h4:has(a[href$="/reimage"]) -walmart.com##li.items-center:has(div[data-ad-component-type="wpa-tile"]) -walgreens.com##li.owned-brands:has(figure.sponsored) -macys.com##li.productThumbnailItem:has(.sponsored-items-label) -kohls.com##li.products_grid:has(p.piq-sponsored) -streeteasy.com##li.searchCardList--listItem:has(.jsSponsoredListingCard) -autotrader.co.uk##li:has(section[data-testid="trader-seller-listing"] > span[data-testid="FEATURED_LISTING"]) -autotrader.co.uk##li:has(section[data-testid="trader-seller-listing"] > span[data-testid="PROMOTED_LISTING"]) -bbc.com##li[class*="-ListItem"]:has(div.dotcom-ad) -yandex.com##li[class*="_card"]:has(a[href^="https://yabs.yandex.ru/count/"]) -yandex.com##li[class*="_card"]:has(a[href^="https://yandex.com/search/_crpd/"]) -dictionary.com,thesaurus.com##main div[class]:has(> [data-type="ad-vertical"]) -rome2rio.com#?#div[aria-labelledby="schedules-header"] > div > div:-abp-contains(Ad) -windowsreport.com##section.hide-mbl:has(a[href^="https://out.reflectormedia.com/"]) -hwbusters.com##section.widget:has(> div[data-hwbus-trackbid]) -thehansindia.com##section:has(> .to-be-async-loaded-ad) -thehansindia.com##section:has(> [class*="level_ad"]) -deadspin.com##section:has(a[href^="https://theinventory.com"]) -tripadvisor.at,tripadvisor.be,tripadvisor.ca,tripadvisor.ch,tripadvisor.cl,tripadvisor.cn,tripadvisor.co,tripadvisor.co.id,tripadvisor.co.il,tripadvisor.co.kr,tripadvisor.co.nz,tripadvisor.co.uk,tripadvisor.co.za,tripadvisor.com,tripadvisor.com.ar,tripadvisor.com.au,tripadvisor.com.br,tripadvisor.com.eg,tripadvisor.com.gr,tripadvisor.com.hk,tripadvisor.com.mx,tripadvisor.com.my,tripadvisor.com.pe,tripadvisor.com.ph,tripadvisor.com.sg,tripadvisor.com.tr,tripadvisor.com.tw,tripadvisor.com.ve,tripadvisor.com.vn,tripadvisor.de,tripadvisor.dk,tripadvisor.es,tripadvisor.fr,tripadvisor.ie,tripadvisor.in,tripadvisor.it,tripadvisor.jp,tripadvisor.nl,tripadvisor.pt,tripadvisor.ru,tripadvisor.se##section[data-automation$="_AdPlaceholder"]:has(.txxUo) -homedepot.com##section[id^="browse-search-pods-"] > div.browse-search__pod:has(div.product-sponsored) -titantv.com##tr:has(> td[align="center"][valign="middle"][colspan="2"][class="gC"]) -opensubtitles.org##tr[style]:has([src*="php"]) -oneindia.com##ul > li:has(> div[class^="adg_"]) -yandex.*##.ProductGallery -yandex.*##.mini-suggest__item[data-suggest-counter*="/yandex.ru/clck/safeclick/"] -yandex.*##.search-list-view__advert-offer-banner -yandex.*##.search-snippet-view:has(span.search-advert-badge__advert) -yandex.*##a[href^="https://yandex.ru/an/count/"] -yandex.*##li[class*="_card"]:has(a[href^="https://yabs.yandex.ru/count/"]) -yandex.*##li[class*="_card"]:has(a[href^="https://yandex.com/search/_crpd/"]) -! curseforge/modrinth -modrinth.com##.normal-page__content [href*="bisecthosting.com/"] > img -modrinth.com##.normal-page__content [href^="https://billing.ember.host/"] > img -modrinth.com##.normal-page__content [href^="https://billing.kinetichosting.net/"] > img -modrinth.com##.normal-page__content [href^="https://meloncube.net/"] > img -modrinth.com##.normal-page__content [href^="https://nodecraft.com/"] > img -modrinth.com##.normal-page__content [href^="https://scalacube.com/"] > img -modrinth.com##.normal-page__content [href^="https://shockbyte.com/"][href*="/partner/"] > img -curseforge.com##.project-description [href^="/linkout?remoteUrl="][href*="billing.ember.host"] > img -curseforge.com##.project-description [href^="/linkout?remoteUrl="][href*="billing.kinetichosting.net"] > img -curseforge.com##.project-description [href^="/linkout?remoteUrl="][href*="bisecthosting.com"] > img -curseforge.com##.project-description [href^="/linkout?remoteUrl="][href*="meloncube.net"] > img -curseforge.com##.project-description [href^="/linkout?remoteUrl="][href*="nodecraft.com"] > img -curseforge.com##.project-description [href^="/linkout?remoteUrl="][href*="scalacube.com"] > img -curseforge.com##.project-description [href^="/linkout?remoteUrl="][href*="shockbyte.com"] > img -! taboola -nme.com###taboola-below-article -oneindia.com###taboola-mid-article-thumbnails -the-independent.com###taboola-mid-article-thumbnails-ii -independent.co.uk,the-independent.com###taboola-mid-article-thumbnails-iii -lifeandstylemag.com###taboola-right-rail-thumbnails -ndtv.com##.TpGnAd_ad-cn -hindustantimes.com##.ht_taboola -financialexpress.com##.ie-network-taboola -6abc.com,abcnews.go.com##.taboola -gizmodo.com,kotaku.com,theonion.com,theroot.com##.taboola-container -firstpost.com##.taboola-div -ndtv.com##[class^="ads_"] -ndtv.com##div:has(> [id^="adslot"]) -weather.com##div[id*="Taboola-sidebar"] -weather.com##div[id^="Taboola-main-"] -drivespark.com,express.co.uk,goodreturns.in##div[id^="taboola-"] -mail.aol.com##li:has(a[data-test-id="pencil-ad-messageList"]) -linkvertise.com##lv-taboola-ctr-ad-dummy -filmibeat.com,gizbot.com,oneindia.com##ul > li:has(> div[id^="taboola-mid-home-stream"]) -! firework -ndtv.com,ndtv.in##[class^="firework"] -ndtv.com,ndtv.in##[id^="firework"] -! Abusive Adcompanies -a-ads.com,ad-maven.com,adcash.com,admitad.com,adskeeper.co.uk,adskeeper.com,adspyglass.com,adstracker.info,adsupply.com,adsupplyads.com,adsupplyads.net,chpadblock.com,exoclick.com,hilltopads.com,join-admaven.com,joinpropeller.com,juicyads.com,luckyads.pro,monetag.com,myadcash.com,popads.net,propellerads.com,purpleads.io,trafficshop.com,yavli.com##HTML -! Eurosport/TNTSports -##.ad-fallback -##.ad.reform-top -##.reform-top-container -! Amazon -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg###nav-swmslot -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg###sc-rec-bottom -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg###sc-rec-right -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg###similarities_feature_div:has(span.sponsored_label_tap_space) -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg###sponsoredProducts2_feature_div -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg###sponsoredProducts_feature_div -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg###typ-recommendations-stripe-1 -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg###typ-recommendations-stripe-2 -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##.amzn-safe-frame-container -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##.dp-widget-card-deck:has([data-ad-placement-metadata]) -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##.s-result-item:has([data-ad-feedback]) -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##.s-result-item:has(div.puis-sponsored-label-text) -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##.s-result-list > .a-section:has(.sbv-ad-content-container) -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##.sbv-video-single-product -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##[cel_widget_id*="-creative-desktop_loom-desktop-"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div.s-inner-result-item > div.sg-col-inner:has(a.puis-sponsored-label-text) -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[cel_widget_id*="Deals3Ads"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[cel_widget_id*="_ad-placements-"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[cel_widget_id*="desktop-dp-"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[cel_widget_id="sp-orderdetails-desktop-carousel_desktop-yo-orderdetails_0"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[cel_widget_id="sp-orderdetails-mobile-list_mobile-yo-orderdetails_0"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[cel_widget_id="sp-pop-mobile-carousel_mobile-yo-postdelivery_0"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[cel_widget_id="sp-rhf-desktop-carousel_desktop-rhf_0"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[cel_widget_id="sp-shiptrack-desktop-carousel_desktop-yo-shiptrack_0"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[cel_widget_id="sp-shiptrack-mobile-list_mobile-yo-shiptrack_0"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[cel_widget_id="sp-typ-mobile-carousel_mobile-typ-carousels_2"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[cel_widget_id="sp_phone_detail_thematic"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[cel_widget_id="typ-ads"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[cel_widget_id^="LEFT-SAFE_FRAME-"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[cel_widget_id^="MAIN-FEATURED_ASINS_LIST-"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[cel_widget_id^="adplacements:"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[cel_widget_id^="multi-brand-"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[cel_widget_id^="sp-desktop-carousel_handsfree-browse"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[class*="SponsoredProducts"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[class*="_dpNoOverflow_"][data-idt] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[data-a-carousel-options*="\\\"isSponsoredProduct\\\":\\\"true\\\""] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[data-ad-id] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[data-cel-widget="sp-rhf-desktop-carousel_desktop-rhf_1"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[data-cel-widget="sp-shiptrack-desktop-carousel_desktop-yo-shiptrack_0"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[data-cel-widget^="multi-brand-video-mobile_DPSims_"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[data-cel-widget^="multi-card-creative-desktop_loom-desktop-top-slot_"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[data-csa-c-painter="sp-cart-mobile-carousel-cards"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[data-csa-c-slot-id^="loom-mobile-brand-footer-slot_hsa-id-"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[data-csa-c-slot-id^="loom-mobile-top-slot_hsa-id-"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##div[id^="sp_detail"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##span[cel_widget_id^="MAIN-FEATURED_ASINS_LIST-"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##span[cel_widget_id^="MAIN-loom-desktop-brand-footer-slot_hsa-id-CARDS-"] -amazon.ae,amazon.ca,amazon.cn,amazon.co.jp,amazon.co.uk,amazon.com,amazon.com.au,amazon.com.be,amazon.com.br,amazon.com.mx,amazon.com.tr,amazon.de,amazon.eg,amazon.es,amazon.fr,amazon.in,amazon.it,amazon.nl,amazon.pl,amazon.sa,amazon.se,amazon.sg##span[cel_widget_id^="MAIN-loom-desktop-top-slot_hsa-id-CARDS-"] -modivo.at,modivo.bg,modivo.cz,modivo.de,modivo.ee,modivo.fr,modivo.gr,modivo.hr,modivo.hu,modivo.it,modivo.lt,modivo.lv,modivo.pl,modivo.ro,modivo.si,modivo.sk,modivo.ua##.display-container -modivo.at,modivo.bg,modivo.cz,modivo.de,modivo.ee,modivo.fr,modivo.gr,modivo.hr,modivo.hu,modivo.it,modivo.lt,modivo.lv,modivo.pl,modivo.ro,modivo.si,modivo.sk,modivo.ua##.promoted-slider-wrapper -chaussures.fr,eapavi.lv,ecipele.hr,ecipo.hu,eobuv.cz,eobuv.sk,eobuwie.com.pl,epantofi.ro,epapoutsia.gr,escarpe.it,eschuhe.at,eschuhe.ch,eschuhe.de,eskor.se,evzuttya.com.ua,obuvki.bg,zapatos.es##.sponsored-slider-wrapper -! Expedia -cheaptickets.com,ebookers.com,expedia.at,expedia.be,expedia.ca,expedia.ch,expedia.co.id,expedia.co.in,expedia.co.jp,expedia.co.kr,expedia.co.nz,expedia.co.th,expedia.co.uk,expedia.com,expedia.com.ar,expedia.com.au,expedia.com.br,expedia.com.hk,expedia.com.my,expedia.com.ph,expedia.com.sg,expedia.com.tw,expedia.com.vn,expedia.de,expedia.dk,expedia.es,expedia.fi,expedia.fr,expedia.ie,expedia.it,expedia.mx,expedia.net,expedia.nl,expedia.no,expedia.se,hoteis.com,hoteles.com,hotels.com,orbitz.com,travelocity.ca,travelocity.com,wotif.com##.uitk-card:has(.uitk-badge-sponsored) -cheaptickets.com,ebookers.com,expedia.at,expedia.be,expedia.ca,expedia.ch,expedia.co.id,expedia.co.in,expedia.co.jp,expedia.co.kr,expedia.co.nz,expedia.co.th,expedia.co.uk,expedia.com,expedia.com.ar,expedia.com.au,expedia.com.br,expedia.com.hk,expedia.com.my,expedia.com.ph,expedia.com.sg,expedia.com.tw,expedia.com.vn,expedia.de,expedia.dk,expedia.es,expedia.fi,expedia.fr,expedia.ie,expedia.it,expedia.mx,expedia.net,expedia.nl,expedia.no,expedia.se,hoteis.com,hoteles.com,hotels.com,orbitz.com,travelocity.ca,travelocity.com,wotif.com##[data-stid="meso-similar-properties-carousel"] -cheaptickets.com,ebookers.com,expedia.at,expedia.be,expedia.ca,expedia.ch,expedia.co.id,expedia.co.in,expedia.co.jp,expedia.co.kr,expedia.co.nz,expedia.co.th,expedia.co.uk,expedia.com,expedia.com.ar,expedia.com.au,expedia.com.br,expedia.com.hk,expedia.com.my,expedia.com.ph,expedia.com.sg,expedia.com.tw,expedia.com.vn,expedia.de,expedia.dk,expedia.es,expedia.fi,expedia.fr,expedia.ie,expedia.it,expedia.mx,expedia.net,expedia.nl,expedia.no,expedia.se,hoteis.com,hoteles.com,hotels.com,orbitz.com,travelocity.ca,travelocity.com,wotif.com##div.not_clustered[id^="uitk-eg-maps-container-"] -cheaptickets.com,ebookers.com,expedia.at,expedia.be,expedia.ca,expedia.ch,expedia.co.id,expedia.co.in,expedia.co.jp,expedia.co.kr,expedia.co.nz,expedia.co.th,expedia.co.uk,expedia.com,expedia.com.ar,expedia.com.au,expedia.com.br,expedia.com.hk,expedia.com.my,expedia.com.ph,expedia.com.sg,expedia.com.tw,expedia.com.vn,expedia.de,expedia.dk,expedia.es,expedia.fi,expedia.fr,expedia.ie,expedia.it,expedia.mx,expedia.net,expedia.nl,expedia.no,expedia.se,hoteis.com,hoteles.com,hotels.com,orbitz.com,travelocity.ca,travelocity.com,wotif.com##div[class="uitk-spacing uitk-spacing-margin-blockstart-three"]:has(a[href*="&trackingData"]) -cheaptickets.com,ebookers.com,expedia.at,expedia.be,expedia.ca,expedia.ch,expedia.co.id,expedia.co.in,expedia.co.jp,expedia.co.kr,expedia.co.nz,expedia.co.th,expedia.co.uk,expedia.com,expedia.com.ar,expedia.com.au,expedia.com.br,expedia.com.hk,expedia.com.my,expedia.com.ph,expedia.com.sg,expedia.com.tw,expedia.com.vn,expedia.de,expedia.dk,expedia.es,expedia.fi,expedia.fr,expedia.ie,expedia.it,expedia.mx,expedia.net,expedia.nl,expedia.no,expedia.se,hoteis.com,hoteles.com,hotels.com,orbitz.com,travelocity.ca,travelocity.com,wotif.com##div[class="uitk-spacing uitk-spacing-margin-blockstart-three"]:has(a[href^="https://adclick.g.doubleclick.net/pcs/click?"]) -! Skyscanner -skyscanner.ae,skyscanner.at,skyscanner.ca,skyscanner.ch,skyscanner.co.id,skyscanner.co.il,skyscanner.co.in,skyscanner.co.kr,skyscanner.co.nz,skyscanner.co.th,skyscanner.co.za,skyscanner.com,skyscanner.com.au,skyscanner.com.br,skyscanner.com.eg,skyscanner.com.hk,skyscanner.com.mx,skyscanner.com.my,skyscanner.com.ph,skyscanner.com.sa,skyscanner.com.sg,skyscanner.com.tr,skyscanner.com.tw,skyscanner.com.ua,skyscanner.com.vn,skyscanner.cz,skyscanner.de,skyscanner.dk,skyscanner.es,skyscanner.fi,skyscanner.fr,skyscanner.gg,skyscanner.hu,skyscanner.ie,skyscanner.it,skyscanner.jp,skyscanner.net,skyscanner.nl,skyscanner.no,skyscanner.pk,skyscanner.pl,skyscanner.pt,skyscanner.qa,skyscanner.ro,skyscanner.se,tianxun.com##div[aria-label="Sponsored"] -skyscanner.ae,skyscanner.at,skyscanner.ca,skyscanner.ch,skyscanner.co.id,skyscanner.co.il,skyscanner.co.in,skyscanner.co.kr,skyscanner.co.nz,skyscanner.co.th,skyscanner.co.za,skyscanner.com,skyscanner.com.au,skyscanner.com.br,skyscanner.com.eg,skyscanner.com.hk,skyscanner.com.mx,skyscanner.com.my,skyscanner.com.ph,skyscanner.com.sa,skyscanner.com.sg,skyscanner.com.tr,skyscanner.com.tw,skyscanner.com.ua,skyscanner.com.vn,skyscanner.cz,skyscanner.de,skyscanner.dk,skyscanner.es,skyscanner.fi,skyscanner.fr,skyscanner.gg,skyscanner.hu,skyscanner.ie,skyscanner.it,skyscanner.jp,skyscanner.net,skyscanner.nl,skyscanner.no,skyscanner.pk,skyscanner.pl,skyscanner.pt,skyscanner.qa,skyscanner.ro,skyscanner.se,tianxun.com##div[class^="ItineraryInlinePlusWrapper_container"] -! ad insertition https://chromewebstore.google.com/detail/idgpnmonknjnojddfkpgkljpfnnfcklj -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws###google-s-ad -! invideo advertising -gunsandammo.com###VideoPlayerDivIframe -usnews.com###ac-lre-player-ph -ew.com###article__primary-video-jw_1-0 -wral.com###exco -ispreview.co.uk###footer-slot-3 -ginx.tv###ginx-floatingvod-containerspacer -gunsandammo.com###inline-player -pubs.rsc.org###journal-info > .text--centered -forums.whathifi.com###jwplayer-container-div -ispreview.co.uk###mobile-takeover-slot-8 -express.co.uk###ovp-primis -bossip.com,hiphopwired.com,madamenoire.com###player-wrapper -bar-planb.com,hakibavuong.com###player_dev -flightradar24.com###primisAdContainer -realclearpolitics.com###realclear_jwplayer_container -ispreview.co.uk###sidebar-slot-5 -uproxx.com###upx-mm-player-wrap -newseveryday.com###vplayer_large -indy100.com##.addressed_cls -telegraph.co.uk##.article-betting-unit-container -sciencetimes.com##.article-videoplayer -people.com##.article__broad-video -washingtonexaminer.com##.bridtv -gizmodo.com.au,kotaku.com.au,lifehacker.com.au,pedestrian.tv##.brightcove-video-container -cnet.com,zdnet.com##.c-avStickyVideo -stuff.tv##.c-squirrel-embed -mb.com.ph##.code-block -techwalla.com##.component-article-section-jwplayer-wrapper -livestrong.com##.component-article-section-votd -familystylefood.com##.email-highlight -comicbook.com##.embedVideoContainer -taskandpurpose.com##.empire-unit-prefill-container -europeanpharmaceuticalreview.com##.europ-fixed-footer -ibtimes.sg##.featured_video -dailymail.co.uk##.footballco-container -redboing.com##.fw-ad -foxsports.com##.fwAdContainer -thestar.co.uk##.gOoqzH -electricianforum.co.uk##.gb-sponsored -arboristsite.com##.gb-sponsored-wrapper -givemesport.com##.gms-videos-container -bringmethenews.com,mensjournal.com,thestreet.com##.is-fallback-player -anandtech.com##.jwplayer -gamesradar.com,livescience.com,tomshardware.com,whathifi.com##.jwplayer__widthsetter -space.com##.jwplayer__wrapper -southernliving.com##.karma-sticky-rail -gearjunkie.com##.ldm_ad -ispreview.co.uk##.midarticle-slot-10 -insideevs.com##.minutely_video_wrap -respawnfirst.com##.mv-ad-box -bestrecipes.com.au,delicious.com.au,taste.com.au##.news-video -picrew.me##.play-Imagemaker_Footer -sciencetimes.com##.player -bossip.com##.player-wrapper-inner -swimswam.com##.polls-461 -avclub.com,deadspin.com,gizmodo.com,jalopnik.com,kotaku.com,theonion.com,theroot.com,thetakeout.com##.related-stories-inset-video -kidspot.com.au##.secondary-video -playbuzz.com##.stickyplayer-container -gamesradar.com,tomsguide.com,tomshardware.com,whathifi.com##.vid-present -petapixel.com##.video-aspect-wrapper -gearjunkie.com##.video-jwplayer -bolavip.com##.video-player-placeholder -benzinga.com##.video-player-wrapper -thepinknews.com##.video-player__container -consequence.net##.video_container -bigthink.com##.wrapper-connatixElements -bigthink.com##.wrapper-connatixPlayspace -worldsoccertalk.com##[id*="primis_"] -offidocs.com##[id^="ja-container-prev"] -hollywoodreporter.com##[id^="jwplayer"] -wlevradio.com##a[href^="https://omny.fm/shows/just-start-the-conversation"] -firstforwomen.com##div[class^="article-content__www_ex_co_video_player_"] -! dark pattern adverts -burnerapp.com##.exit__overlay -booking.com##.js_sr_persuation_msg -booking.com##.sr-motivate-messages -! Google https://forums.lanik.us/viewtopic.php?f=62&t=45153 -##.section-subheader > .section-hotel-prices-header -! yahoo -yahoo.com###Horizon-ad -yahoo.com###Lead-0-Ad-Proxy -yahoo.com###adsStream -yahoo.com###defaultLREC -finance.yahoo.com###mrt-node-Lead-0-Ad -sports.yahoo.com###mrt-node-Lead-1-Ad -sports.yahoo.com###mrt-node-Primary-0-Ad -sports.yahoo.com###mrt-node-Secondary-0-Ad -yahoo.com###sda-Horizon -yahoo.com###sda-Horizon-viewer -yahoo.com###sda-LDRB -yahoo.com###sda-LDRB-iframe -yahoo.com###sda-LDRB2 -yahoo.com###sda-LREC -yahoo.com###sda-LREC-iframe -yahoo.com###sda-LREC2 -yahoo.com###sda-LREC2-iframe -yahoo.com###sda-LREC3 -yahoo.com###sda-LREC3-iframe -yahoo.com###sda-LREC4 -yahoo.com###sda-MAST -yahoo.com###sda-MON -yahoo.com###sda-WFPAD -yahoo.com###sda-WFPAD-1 -yahoo.com###sda-WFPAD-iframe -yahoo.com###sda-wrapper-COMMENTSLDRB -mail.yahoo.com###slot_LREC -yahoo.com###viewer-LDRB -yahoo.com###viewer-LREC2 -yahoo.com###viewer-LREC2-iframe -yahoo.com##.Feedback -finance.yahoo.com##.ad-lrec3 -yahoo.com##.ads -yahoo.com##.caas-da -yahoo.com##.darla -yahoo.com##.darla-container -yahoo.com##.darla-lrec-ad -yahoo.com##.darla_ad -yahoo.com##.ds_promo_ymobile -yahoo.com##.gemini-ad -yahoo.com##.gemini-ad-feedback -yahoo.com##.item-beacon -yahoo.com##.ntk-ad-item -sports.yahoo.com##.post-article-ad -finance.yahoo.com##.sdaContainer -yahoo.com##.searchCenterBottomAds -yahoo.com##.searchCenterTopAds -search.yahoo.com##.searchRightBottomAds -search.yahoo.com##.searchRightTopAds -yahoo.com##.sys_shopleguide -yahoo.com##.viewer-sda-container -yahoo.com##[data-content="Advertisement"] -mail.yahoo.com##[data-test-id="gam-iframe"] -mail.yahoo.com##[data-test-id^="pencil-ad"] -yahoo.com##[data-wf-beacons] -finance.yahoo.com##[id^="defaultLREC"] -mail.yahoo.com##[rel="noreferrer"][data-test-id][href^="https://beap.gemini.yahoo.com/mbclk?"] -yahoo.com##a[data-test-id="large-image-ad"] -mail.yahoo.com##article[aria-labelledby*="-pencil-ad-"] -yahoo.com##div[class*="ads-"] -yahoo.com##div[class*="gemini-ad"] -yahoo.com##div[data-beacon] > div[class*="streamBoxShadow"] -yahoo.com##div[id*="ComboAd"] -yahoo.com##div[id^="COMMENTSLDRB"] -yahoo.com##div[id^="LeadAd-"] -yahoo.com##div[id^="darla-ad"] -yahoo.com##div[id^="gemini-item-"] -yahoo.com##div[style*="/ads/"] -yahoo.com##li[data-test-locator="stream-related-ad-item"] -! youtube -youtube.com###masthead-ad -youtube.com###player-ads -youtube.com###shorts-inner-container > .ytd-shorts:has(> .ytd-reel-video-renderer > ytd-ad-slot-renderer) -youtube.com##.YtdShortsSuggestedActionStaticHostContainer -youtube.com##.ytd-merch-shelf-renderer -www.youtube.com##.ytp-featured-product -youtube.com##.ytp-suggested-action > button.ytp-suggested-action-badge -m.youtube.com##lazy-list > ad-slot-renderer -youtube.com##ytd-ad-slot-renderer -youtube.com##ytd-rich-item-renderer:has(> #content > ytd-ad-slot-renderer) -youtube.com##ytd-search-pyv-renderer -m.youtube.com##ytm-companion-slot[data-content-type] > ytm-companion-ad-renderer -m.youtube.com##ytm-rich-item-renderer > ad-slot-renderer -! Site Specific filters (used with $generichide) -thefreedictionary.com###Content_CA_AD_0_BC -thefreedictionary.com###Content_CA_AD_1_BC -instapundit.com###adspace_top > .widget-ad__content -sonichits.com###bottom_ad -sonichits.com###divStickyRight -spanishdict.com###removeAdsSidebar -sonichits.com###right-ad -ldoceonline.com###rightslot2-container -sonichits.com###top-ad-outer -sonichits.com###top-top-ad -plagiarismchecker.co###topbox -spanishdict.com##.ad--1zZdAdPU -tweaktown.com##.adcon -geekzone.co.nz##.adsbygoogle -apkmirror.com##.ains-apkm_outbrain_ad -tweaktown.com##.center-tag-rightad -rawstory.com##.connatix-hodler -apkmirror.com##.ezo_ad -patents.justia.com##.jcard[style="min-height:280px; margin-bottom: 10px;"] -duckduckgo.com,duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion##.js-results-ads -duckduckgo.com,duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion##.js-sidebar-ads > .nrn-react-div -boatsonline.com.au,yachthub.com##.js-sticky -history.com##.m-balloon-header--ad -history.com##.m-in-content-ad -history.com##.m-in-content-ad-row -spiegel.de##.ob-dynamic-rec-container.ob-p -impartialreporter.com,polygon.com##.ob-smartfeed-wrapper -duckduckgo.com,duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion##.results--ads -mail.google.com##a[href^="http://li.blogtrottr.com/click?"] -geekzone.co.nz##div.cornered.box > center -apkmirror.com##div[id^="adtester-container-"] -yandex.com##div[id^="yandex_ad"] -! Google -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws###tads[aria-label] -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws###tadsb[aria-label] -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##.OcdnDb -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##.OcdnDb + .fp2VUc -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##.commercial-unit-desktop-rhs:not(.mnr-c) -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##.commercial-unit-mobile-top > div[data-pla="1"] -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##.cu-container -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##.ltJjte -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##.uEierd -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##a[href^="/aclk?sa="][href*="&adurl=&placesheetAdFix=1"] -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##a[href^="/aclk?sa="][href*="&adurl=&placesheetAdFix=1"] + button -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##a[href^="https://www.googleadservices.com/pagead/aclk?"] -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##body#yDmH0d [data-is-promoted="true"] -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##c-wiz[jsrenderer="YTTf6c"] > .bhapoc.oJeWuf[jsname="bN97Pc"][data-ved] -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##div.FWfoJ > div[jsname="Nf35pd"] > div[class="R09YGb ilovz"] -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##div.sh-sr__shop-result-group[data-hveid]:has(g-scrolling-carousel) -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##div[data-ads-title="1"] -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##div[data-attrid="kc:/local:promotions"] -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##div[data-crl="true"][data-id^="CarouselPLA-"] -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##div[data-is-ad="1"] -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##div[data-is-promoted-hotel-ad="true"] -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##div[data-section-type="ads"] -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##div[jsdata*="CarouselPLA-"][data-id^="CarouselPLA-"] -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##div[jsdata*="SinglePLA-"][data-id^="SinglePLA-"] -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##html[itemtype="http://schema.org/SearchResultsPage"] #cnt div[class$="sh-sr__bau"] -google.ac,google.ad,google.ae,google.al,google.am,google.as,google.at,google.az,google.ba,google.be,google.bf,google.bg,google.bi,google.bj,google.bs,google.bt,google.by,google.ca,google.cat,google.cd,google.cf,google.cg,google.ch,google.ci,google.cl,google.cm,google.co.ao,google.co.bw,google.co.ck,google.co.cr,google.co.id,google.co.il,google.co.in,google.co.jp,google.co.ke,google.co.kr,google.co.ls,google.co.ma,google.co.mz,google.co.nz,google.co.th,google.co.tz,google.co.ug,google.co.uk,google.co.uz,google.co.ve,google.co.vi,google.co.za,google.co.zm,google.co.zw,google.com,google.com.af,google.com.ag,google.com.ai,google.com.ar,google.com.au,google.com.bd,google.com.bh,google.com.bn,google.com.bo,google.com.br,google.com.by,google.com.bz,google.com.co,google.com.cu,google.com.cy,google.com.do,google.com.ec,google.com.eg,google.com.et,google.com.fj,google.com.gh,google.com.gi,google.com.gt,google.com.hk,google.com.jm,google.com.jo,google.com.kh,google.com.kw,google.com.lb,google.com.ly,google.com.mm,google.com.mt,google.com.mx,google.com.my,google.com.na,google.com.ng,google.com.ni,google.com.np,google.com.om,google.com.pa,google.com.pe,google.com.pg,google.com.ph,google.com.pk,google.com.pr,google.com.py,google.com.qa,google.com.ru,google.com.sa,google.com.sb,google.com.sg,google.com.sl,google.com.sv,google.com.tj,google.com.tn,google.com.tr,google.com.tw,google.com.ua,google.com.uy,google.com.vc,google.com.ve,google.com.vn,google.cv,google.cz,google.de,google.dj,google.dk,google.dm,google.dz,google.ee,google.es,google.fi,google.fm,google.fr,google.ga,google.ge,google.gg,google.gl,google.gm,google.gp,google.gr,google.gy,google.hk,google.hn,google.hr,google.ht,google.hu,google.ie,google.im,google.iq,google.is,google.it,google.it.ao,google.je,google.jo,google.jp,google.kg,google.ki,google.kz,google.la,google.li,google.lk,google.lt,google.lu,google.lv,google.md,google.me,google.mg,google.mk,google.ml,google.mn,google.ms,google.mu,google.mv,google.mw,google.ne,google.ne.jp,google.ng,google.nl,google.no,google.nr,google.nu,google.pl,google.pn,google.ps,google.pt,google.ro,google.rs,google.ru,google.rw,google.sc,google.se,google.sh,google.si,google.sk,google.sm,google.sn,google.so,google.sr,google.st,google.td,google.tg,google.tl,google.tm,google.tn,google.to,google.tt,google.us,google.vg,google.vu,google.ws##html[itemtype="http://schema.org/SearchResultsPage"] #cnt div[class$="sh-sr__tau"][style] -! Filter for testpages.adblockplus.org -testpages.adblockplus.org###abptest -! MSN -msn.com###displayAdCard -msn.com###div[id^="mrr-topad-"] -msn.com###partners -msn.com###promotions -msn.com##.ad-banner-wrapper -msn.com##.articlePage_bannerAd_wrapper-DS-EntryPoint1-1 -msn.com##.articlePage_eoabNativeAd_new-DS-EntryPoint1-1 -msn.com##.bannerAdContainer-DS-EntryPoint1-1 -msn.com##.consumption-page-banner-wrapper -msn.com##.drrTopAdWrapper -msn.com##.eocb-ads -msn.com##.galleryPage_eoabContent_new-DS-EntryPoint1-1 -msn.com##.galleryPage_eoabNativeAd_new-DS-EntryPoint1-1 -msn.com##.intra-article-ad-full -msn.com##.intra-article-ad-half -msn.com##.modernRightRail_stickyTopBannerAd-DS-EntryPoint1-1 -msn.com##.modernRightRail_topAd_container_2col_newRR-DS-EntryPoint1-1 -msn.com##.outeradcontainer -msn.com##.qohvco-DS-EntryPoint1-1 -msn.com##.river-background -msn.com##.views-right-rail-top-display -msn.com##.views-right-rail-top-display-ad -msn.com##.windowsBannerAdContainer-DS-EntryPoint1-1 -msn.com##[class^="articlePage_eoabContent"] -msn.com##[data-m*="Infopane_CMSBasicCardstore_article"] -msn.com##a[aria-label="AliExpress"] -msn.com##a[aria-label="Amazon Assistant"] -msn.com##a[aria-label="Amazon"] -msn.com##a[aria-label="Bol.com"] -msn.com##a[aria-label="Booking.com"] -msn.com##a[aria-label="Ricardo"] -msn.com##a[aria-label="Today's Deals"] -msn.com##a[aria-label="eBay"] -msn.com##a[href*=".booking.com/"] -msn.com##a[href*="/aff_m?offer_id="] -msn.com##a[href*="?sub_aff_id="] -msn.com##a[href="https://aka.ms/QVC"] -msn.com##a[href^="https://amzn.to/"] -msn.com##a[href^="https://clk.tradedoubler.com/click?"] -msn.com##a[href^="https://clkde.tradedoubler.com/click?"] -msn.com##a[href^="https://disneyplus.bn5x.net/"] -msn.com##a[href^="https://prf.hn/click/camref:"] -msn.com##a[href^="https://ww55.affinity.net/"] -msn.com##a[href^="https://www.awin1.com/cread.php"] -msn.com##above-river-block -msn.com##cs-native-ad-card -msn.com##cs-native-ad-card-24 -msn.com##cs-native-ad-card-no-hover -msn.com##div[class^="articlePage_topBannerAdContainer_"] -msn.com##div[class^="galleryPage_bannerAd"] -msn.com##div[id^="nativeAd"] -msn.com##div[id^="watch-feed-native-ad-"] -msn.com##li[data-m*="NativeAdItem"] > a > * -msn.com##li[data-provider="gemini"] -msn.com##li[data-provider="outbrain"] -msn.com##msft-article-card[class=""] -msn.com##msft-content-card[data-t*="NativeAd"] -msn.com##msft-content-card[href^="https://api.taboola.com/"] -msn.com##msft-content-card[id^="contentcard_nativead-"] -msn.com##msn-info-pane-panel[id^="tab_panel_nativead-"] -msn.com##partner-upsell-card -! Bing -bing.com###bepfo.popup[style^="visibility: visible"] -bing.com##.ad_sc -bing.com##.b_ad -bing.com##.b_adBottom -bing.com##.b_adLastChild -bing.com##.b_adPATitleBlock -bing.com##.b_spa_adblock -bing.com##.mapsTextAds -bing.com##.mma_il -bing.com##.pa_sb -bing.com##.productAd -bing.com##.text-ads-container -bing.com##[id$="adsMvCarousel"] -bing.com##a[href*="/aclick?ld="] -bing.com##div[aria-label$="ProductAds"] -bing.com##div[class="ins_exp tds"] -bing.com##div[class="ins_exp vsp"] -bing.com##li[data-idx]:has(#mm-ebad) -! kayak -checkfelix.com,kayak.ae,kayak.bo,kayak.ch,kayak.cl,kayak.co.cr,kayak.co.id,kayak.co.in,kayak.co.jp,kayak.co.kr,kayak.co.th,kayak.co.uk,kayak.co.ve,kayak.com,kayak.com.ar,kayak.com.au,kayak.com.br,kayak.com.co,kayak.com.do,kayak.com.ec,kayak.com.gt,kayak.com.hk,kayak.com.hn,kayak.com.mx,kayak.com.my,kayak.com.ni,kayak.com.pa,kayak.com.pe,kayak.com.ph,kayak.com.pr,kayak.com.py,kayak.com.sv,kayak.com.tr,kayak.com.uy,kayak.de,kayak.dk,kayak.es,kayak.fr,kayak.ie,kayak.it,kayak.nl,kayak.no,kayak.pl,kayak.pt,kayak.sa,kayak.se,kayak.sg,swoodoo.com##.IZSg-mod-banner -checkfelix.com,kayak.ae,kayak.bo,kayak.ch,kayak.cl,kayak.co.cr,kayak.co.id,kayak.co.in,kayak.co.jp,kayak.co.kr,kayak.co.th,kayak.co.uk,kayak.co.ve,kayak.com,kayak.com.ar,kayak.com.au,kayak.com.br,kayak.com.co,kayak.com.do,kayak.com.ec,kayak.com.gt,kayak.com.hk,kayak.com.hn,kayak.com.mx,kayak.com.my,kayak.com.ni,kayak.com.pa,kayak.com.pe,kayak.com.ph,kayak.com.pr,kayak.com.py,kayak.com.sv,kayak.com.tr,kayak.com.uy,kayak.de,kayak.dk,kayak.es,kayak.fr,kayak.ie,kayak.it,kayak.nl,kayak.no,kayak.pl,kayak.pt,kayak.sa,kayak.se,kayak.sg,swoodoo.com##.ev1_-results-list > div > div > div > div.G-5c[role="tab"][tabindex="0"] > .yuAt-pres-rounded -checkfelix.com,kayak.ae,kayak.bo,kayak.ch,kayak.cl,kayak.co.cr,kayak.co.id,kayak.co.in,kayak.co.jp,kayak.co.kr,kayak.co.th,kayak.co.uk,kayak.co.ve,kayak.com,kayak.com.ar,kayak.com.au,kayak.com.br,kayak.com.co,kayak.com.do,kayak.com.ec,kayak.com.gt,kayak.com.hk,kayak.com.hn,kayak.com.mx,kayak.com.my,kayak.com.ni,kayak.com.pa,kayak.com.pe,kayak.com.ph,kayak.com.pr,kayak.com.py,kayak.com.sv,kayak.com.tr,kayak.com.uy,kayak.de,kayak.dk,kayak.es,kayak.fr,kayak.ie,kayak.it,kayak.nl,kayak.no,kayak.pl,kayak.pt,kayak.sa,kayak.se,kayak.sg,swoodoo.com##.ev1_-results-list > div > div > div > div[data-resultid$="-sponsored"] -checkfelix.com,kayak.ae,kayak.bo,kayak.ch,kayak.cl,kayak.co.cr,kayak.co.id,kayak.co.in,kayak.co.jp,kayak.co.kr,kayak.co.th,kayak.co.uk,kayak.co.ve,kayak.com,kayak.com.ar,kayak.com.au,kayak.com.br,kayak.com.co,kayak.com.do,kayak.com.ec,kayak.com.gt,kayak.com.hk,kayak.com.hn,kayak.com.mx,kayak.com.my,kayak.com.ni,kayak.com.pa,kayak.com.pe,kayak.com.ph,kayak.com.pr,kayak.com.py,kayak.com.sv,kayak.com.tr,kayak.com.uy,kayak.de,kayak.dk,kayak.es,kayak.fr,kayak.ie,kayak.it,kayak.nl,kayak.no,kayak.pl,kayak.pt,kayak.sa,kayak.se,kayak.sg,swoodoo.com##.nqHv-pres-three:has(div.nqHv-logo-ad-wrapper) -checkfelix.com,kayak.ae,kayak.bo,kayak.ch,kayak.cl,kayak.co.cr,kayak.co.id,kayak.co.in,kayak.co.jp,kayak.co.kr,kayak.co.th,kayak.co.uk,kayak.co.ve,kayak.com,kayak.com.ar,kayak.com.au,kayak.com.br,kayak.com.co,kayak.com.do,kayak.com.ec,kayak.com.gt,kayak.com.hk,kayak.com.hn,kayak.com.mx,kayak.com.my,kayak.com.ni,kayak.com.pa,kayak.com.pe,kayak.com.ph,kayak.com.pr,kayak.com.py,kayak.com.sv,kayak.com.tr,kayak.com.uy,kayak.de,kayak.dk,kayak.es,kayak.fr,kayak.ie,kayak.it,kayak.nl,kayak.no,kayak.pl,kayak.pt,kayak.sa,kayak.se,kayak.sg,swoodoo.com##.resultsList > div > div > div > div.G-5c[role="tab"][tabindex="0"] > .yuAt-pres-rounded -checkfelix.com,kayak.ae,kayak.bo,kayak.ch,kayak.cl,kayak.co.cr,kayak.co.id,kayak.co.in,kayak.co.jp,kayak.co.kr,kayak.co.th,kayak.co.uk,kayak.co.ve,kayak.com,kayak.com.ar,kayak.com.au,kayak.com.br,kayak.com.co,kayak.com.do,kayak.com.ec,kayak.com.gt,kayak.com.hk,kayak.com.hn,kayak.com.mx,kayak.com.my,kayak.com.ni,kayak.com.pa,kayak.com.pe,kayak.com.ph,kayak.com.pr,kayak.com.py,kayak.com.sv,kayak.com.tr,kayak.com.uy,kayak.de,kayak.dk,kayak.es,kayak.fr,kayak.ie,kayak.it,kayak.nl,kayak.no,kayak.pl,kayak.pt,kayak.sa,kayak.se,kayak.sg,swoodoo.com##.resultsList > div > div > div > div[data-resultid$="-sponsored"] -checkfelix.com,kayak.ae,kayak.bo,kayak.ch,kayak.cl,kayak.co.cr,kayak.co.id,kayak.co.in,kayak.co.jp,kayak.co.kr,kayak.co.th,kayak.co.uk,kayak.co.ve,kayak.com,kayak.com.ar,kayak.com.au,kayak.com.br,kayak.com.co,kayak.com.do,kayak.com.ec,kayak.com.gt,kayak.com.hk,kayak.com.hn,kayak.com.mx,kayak.com.my,kayak.com.ni,kayak.com.pa,kayak.com.pe,kayak.com.ph,kayak.com.pr,kayak.com.py,kayak.com.sv,kayak.com.tr,kayak.com.uy,kayak.de,kayak.dk,kayak.es,kayak.fr,kayak.ie,kayak.it,kayak.nl,kayak.no,kayak.pl,kayak.pt,kayak.sa,kayak.se,kayak.sg,swoodoo.com##.yPOz-adInner -checkfelix.com,kayak.ae,kayak.bo,kayak.ch,kayak.cl,kayak.co.cr,kayak.co.id,kayak.co.in,kayak.co.jp,kayak.co.kr,kayak.co.th,kayak.co.uk,kayak.co.ve,kayak.com,kayak.com.ar,kayak.com.au,kayak.com.br,kayak.com.co,kayak.com.do,kayak.com.ec,kayak.com.gt,kayak.com.hk,kayak.com.hn,kayak.com.mx,kayak.com.my,kayak.com.ni,kayak.com.pa,kayak.com.pe,kayak.com.ph,kayak.com.pr,kayak.com.py,kayak.com.sv,kayak.com.tr,kayak.com.uy,kayak.de,kayak.dk,kayak.es,kayak.fr,kayak.ie,kayak.it,kayak.nl,kayak.no,kayak.pl,kayak.pt,kayak.sa,kayak.se,kayak.sg,swoodoo.com##div.Dp1L[role=tab] -checkfelix.com,kayak.ae,kayak.bo,kayak.ch,kayak.cl,kayak.co.cr,kayak.co.id,kayak.co.in,kayak.co.jp,kayak.co.kr,kayak.co.th,kayak.co.uk,kayak.co.ve,kayak.com,kayak.com.ar,kayak.com.au,kayak.com.br,kayak.com.co,kayak.com.do,kayak.com.ec,kayak.com.gt,kayak.com.hk,kayak.com.hn,kayak.com.mx,kayak.com.my,kayak.com.ni,kayak.com.pa,kayak.com.pe,kayak.com.ph,kayak.com.pr,kayak.com.py,kayak.com.sv,kayak.com.tr,kayak.com.uy,kayak.de,kayak.dk,kayak.es,kayak.fr,kayak.ie,kayak.it,kayak.nl,kayak.no,kayak.pl,kayak.pt,kayak.sa,kayak.se,kayak.sg,swoodoo.com##div.PzK0-pres-default -checkfelix.com,kayak.ae,kayak.bo,kayak.ch,kayak.cl,kayak.co.cr,kayak.co.id,kayak.co.in,kayak.co.jp,kayak.co.kr,kayak.co.th,kayak.co.uk,kayak.co.ve,kayak.com,kayak.com.ar,kayak.com.au,kayak.com.br,kayak.com.co,kayak.com.do,kayak.com.ec,kayak.com.gt,kayak.com.hk,kayak.com.hn,kayak.com.mx,kayak.com.my,kayak.com.ni,kayak.com.pa,kayak.com.pe,kayak.com.ph,kayak.com.pr,kayak.com.py,kayak.com.sv,kayak.com.tr,kayak.com.uy,kayak.de,kayak.dk,kayak.es,kayak.fr,kayak.ie,kayak.it,kayak.nl,kayak.no,kayak.pl,kayak.pt,kayak.sa,kayak.se,kayak.sg,swoodoo.com##div.YTRJ[role="button"][tabindex="0"] > .yuAt-pres-rounded -checkfelix.com,kayak.ae,kayak.bo,kayak.ch,kayak.cl,kayak.co.cr,kayak.co.id,kayak.co.in,kayak.co.jp,kayak.co.kr,kayak.co.th,kayak.co.uk,kayak.co.ve,kayak.com,kayak.com.ar,kayak.com.au,kayak.com.br,kayak.com.co,kayak.com.do,kayak.com.ec,kayak.com.gt,kayak.com.hk,kayak.com.hn,kayak.com.mx,kayak.com.my,kayak.com.ni,kayak.com.pa,kayak.com.pe,kayak.com.ph,kayak.com.pr,kayak.com.py,kayak.com.sv,kayak.com.tr,kayak.com.uy,kayak.de,kayak.dk,kayak.es,kayak.fr,kayak.ie,kayak.it,kayak.nl,kayak.no,kayak.pl,kayak.pt,kayak.sa,kayak.se,kayak.sg,swoodoo.com##div[class$="-adInner"] -checkfelix.com,kayak.ae,kayak.bo,kayak.ch,kayak.cl,kayak.co.cr,kayak.co.id,kayak.co.in,kayak.co.jp,kayak.co.kr,kayak.co.th,kayak.co.uk,kayak.co.ve,kayak.com,kayak.com.ar,kayak.com.au,kayak.com.br,kayak.com.co,kayak.com.do,kayak.com.ec,kayak.com.gt,kayak.com.hk,kayak.com.hn,kayak.com.mx,kayak.com.my,kayak.com.ni,kayak.com.pa,kayak.com.pe,kayak.com.ph,kayak.com.pr,kayak.com.py,kayak.com.sv,kayak.com.tr,kayak.com.uy,kayak.de,kayak.dk,kayak.es,kayak.fr,kayak.ie,kayak.it,kayak.nl,kayak.no,kayak.pl,kayak.pt,kayak.sa,kayak.se,kayak.sg,swoodoo.com##div[data-resultid]:has(a.IZSg-adlink) - -! *** easylist:easylist/easylist_specific_hide_abp.txt *** -nordstrom.com#?#ul[style^="padding: 0px; position: relative;"] > li[class]:-abp-contains(Sponsored) -loblaws.ca#?#[data-testid="product-grid"]>div:-abp-contains(Sponsored) -semafor.com#?#.suppress-rss:-abp-has(:-abp-contains(Supported by)) -realcanadiansuperstore.ca#?#.chakra-linkbox:-abp-contains(Sponsored) -shipt.com#?#li[class]:-abp-contains(Sponsored) -argos.co.uk#?#[data-test^="component-slider-slide-"]:-abp-contains(SPONSORED) -atlanticsuperstore.ca,fortinos.ca,maxi.ca,newfoundlandgrocerystores.ca,nofrills.ca,provigo.ca,realcanadiansuperstore.ca,valumart.ca,yourindependentgrocer.ca,zehrs.ca#?#[data-testid="card"]:-abp-contains(sponsored) -kijiji.ca#?#[data-testid^="listing-card-list-item-"]:-abp-contains(TOP AD) -atlanticsuperstore.ca,fortinos.ca,loblaws.ca,maxi.ca,newfoundlandgrocerystores.ca,nofrills.ca,provigo.ca,realcanadiansuperstore.ca,valumart.ca,yourindependentgrocer.ca,zehrs.ca#?#.product-tile-group__list__item:-abp-contains(Sponsored) -coles.com.au#?#.coles-targeting-UnitContainer:has(ul.product__top_messaging) -ulta.com#?#li.ProductListingResults__productCard:has(.ProductCard__badge:-abp-contains(Sponsored)) -leadership.ng#?#.jeg_postblock:-abp-contains(SPONSORED) -acmemarkets.com,albertsons.com,andronicos.com,carrsqc.com,haggen.com,jewelosco.com,kingsfoodmarkets.com,pavilions.com,randalls.com,safeway.com,shaws.com,starmarket.com,tomthumb.com,vons.com#?#.product-card-col:-abp-contains(Sponsored) -agoda.com#?#.PropertyCardItem:-abp-has(div:-abp-contains(Promoted)) -alibaba.com#?#.J-offer-wrapper:-abp-contains(Top sponsor listing) -aliexpress.com#?##card-list > .search-item-card-wrapper-gallery:-abp-has(a.search-card-item[href*="&aem_p4p_detail="] div[class*="cards--image--"] > div[class*="multi--ax--"]:-abp-contains(/^(?:AD|An[uú]ncio|광고|広告)$/)):-abp-has(+ .search-item-card-wrapper-gallery a.search-card-item:not([href*="&aem_p4p_detail="])) -app.daily.dev#?#article:-abp-contains(Promoted) -atlanticsuperstore.ca,fortinos.ca,loblaws.ca,maxi.ca,newfoundlandgrocerystores.ca,nofrills.ca,provigo.ca,realcanadiansuperstore.ca,valumart.ca,yourindependentgrocer.ca,zehrs.ca#?#.product-tile-group__list__item:-abp-contains(Sponsored) -backpack.tf,backpacktf.com#?#.panel:-abp-contains(createAd) -belloflostsouls.net#?#span.text-secondary:-abp-contains(Advertisement) -scamwarners.com#?#center:-abp-contains(Advertisement) -beaumontenterprise.com,ctpost.com,houstonchronicle.com,greenwichtime.com,theintelligencer.com,theintelligencer.com,lmtonline.com,myjournalcourier.com,michigansthumb.com,middletownpress.com.ourmidland.com,nhregister.com,mrt.com,sfchronicle.com,stamfordadvocate.com,manisteenews.com,expressnews.com,registercitizen.com,myplainview.com,manisteenews.com#?#.b-gray300:-abp-contains(Advertisement) -infographicjournal.com#?#.et_pb_widget:-abp-contains(Partners) -infographicjournal.com#?#.et_pb_module:-abp-contains(Partners) -infographicjournal.com#?#.et_pb_module:-abp-contains(Partners) + .et_pb_module -telugupeople.com#?#table:-abp-has(> tbody > tr > td > a:-abp-contains(Advertisements)) -yelp.at,yelp.be,yelp.ca,yelp.ch,yelp.cl,yelp.co.jp,yelp.co.nz,yelp.co.uk,yelp.com,yelp.com.ar,yelp.com.au,yelp.com.br,yelp.com.hk,yelp.com.mx,yelp.com.ph,yelp.com.sg,yelp.com.tr,yelp.cz,yelp.de,yelp.dk,yelp.es,yelp.fi,yelp.fr,yelp.ie,yelp.it,yelp.my,yelp.nl,yelp.no,yelp.pl,yelp.pt,yelp.se#?#main[class^="searchResultsContainer"] li h2:-abp-contains(Sponsored) -bleepingcomputer.com#?#.post_wrap:-abp-contains(AdBot) -bolnews.com#?#[style*="center"]:-abp-contains(Ad) -booking.com#?#div[data-testid="property-card"]:-abp-has(span:-abp-contains(Promoted)) -yourstory.com#?#[width]:-abp-contains(ADVERTISEMENT) -boots.com#?#.oct-listers-hits__item:-abp-contains(Sponsored) -deccanherald.com#?#div:-abp-has(> div > .ad-background) -deccanherald.com#?#div[style^="min-height"]:-abp-has(> div > div[id*="-ad-separator"]) -china.ahk.de#?#.b-main__section:-abp-has(h2.homepage-headline:-abp-contains(Advertisement)) -producthunt.com#?#.text-12:-abp-contains(Promoted) -cleantechnica.com#?#.zox-side-widget:-abp-contains(/^Advertis/) -mapchart.net#?#.row:-abp-contains(Advertisement) -coinlisting.info#?#.panel:-abp-has(h3:-abp-contains(Sponsored Ad)) -coolors.co#?#a:-abp-has(div:last-child:-abp-contains(Hide)) -quora.com#?#.q-sticky:-abp-contains(Advertisement) -corvetteblogger.com#?#aside.td_block_template_1.widget.widget_text:-abp-has(> h4.block-title > span:-abp-contains(Visit Our Sponsors)) -cruisecritic.co.uk,cruisecritic.com#?#div[role="group"]:-abp-contains(Sponsored) -deccanherald.com#?#div#container-text:-abp-contains(ADVERTISEMENT) -deccanherald.com#?#span.container-text:-abp-contains(ADVERTISEMENT) -decrypt.co#?#span:-abp-contains(AD) -digg.com#?#article.relative:-abp-has(div:-abp-contains(SPONSORED)) -digg.com#?#article.relative:-abp-has(div:-abp-contains(SPONSORED)) -eztv.tf,eztv.yt,123unblock.bar#?#tbody:-abp-contains(WARNING! Use a) -filehippo.com#?#article.card-article:-abp-has(span.card-article__author:-abp-contains(Sponsored Content)) -freshdirect.com#?#.swiper-slide:-abp-contains(Sponsored) -gamersnexus.net#?#.moduleContent:-abp-contains(Advertisement) -hannaford.com#?#.header-2:-abp-contains(Sponsored Suggestions) -heb.com#?#div[class^="sc-"]:-abp-has(> div[data-qe-id="productCard"]:-abp-contains(Promoted)) -instagram.com#?#div[style="max-height: inherit; max-width: inherit; display: none !important;"]:-abp-has(span:-abp-contains(Paid partnership with )) -instagram.com#?#div[style="max-height: inherit; max-width: inherit; display: none !important;"]:-abp-has(span:-abp-contains(Paid partnership)) -instagram.com#?#div[style="max-height: inherit; max-width: inherit;"]:-abp-has(span:-abp-contains(Paid partnership with )) -linkedin.com#?#.msg-overlay-list-bubble__conversations-list:-abp-contains(Sponsored) -linkedin.com#?#div.feed-shared-update-v2:-abp-has(span.update-components-actor__sub-description--tla:-abp-contains(/Anzeige|Sponsored|Promoted|Dipromosikan|Propagováno|Promoveret|Gesponsert|Promocionado|促銷內容|Post sponsorisé|프로모션|Post sponsorizzato|广告|プロモーション|Treść promowana|Patrocinado|Promovat|Продвигается|Marknadsfört|Nai-promote|ได้รับการโปรโมท|Öne çıkarılan içerik|Gepromoot|الترويج/)) -linkedin.com#?#div.feed-shared-update-v2:-abp-has(span.update-components-actor__description:-abp-contains(/Anzeige|Sponsored|Promoted|Dipromosikan|Propagováno|Promoveret|Gesponsert|Promocionado|促銷內容|Post sponsorisé|프로모션|Post sponsorizzato|广告|プロモーション|Treść promowana|Patrocinado|Promovat|Продвигается|Marknadsfört|Nai-promote|ได้รับการโปรโมท|Öne çıkarılan içerik|Gepromoot|الترويج/)) -linkedin.com#?#div.feed-shared-update-v2:-abp-has(span.update-components-actor__sub-description:-abp-contains(/Anzeige|Sponsored|Promoted|Dipromosikan|Propagováno|Promoveret|Gesponsert|Promocionado|促銷內容|Post sponsorisé|프로모션|Post sponsorizzato|广告|プロモーション|Treść promowana|Patrocinado|Promovat|Продвигается|Marknadsfört|Nai-promote|ได้รับการโปรโมท|Öne çıkarılan içerik|Gepromoot|الترويج/)) -loblaws.ca,provigo.ca,valumart.ca,yourindependentgrocer.ca,zehrs.ca#?#.chakra-container:-abp-contains(Featured Items) -lovenovels.net#?#center:-abp-contains(Advertisement) -modivo.it,modivo.pl,modivo.ro,modivo.cz,modivo.hu,modivo.bg,modivo.gr,modivo.de#?#.banner:-abp-contains(/Sponsorizzato|Sponsorowane|Sponsorizat|Sponzorováno|Szponzorált|Спонсорирани|Sponsored|Gesponsert/) -modivo.it,modivo.pl,modivo.ro,modivo.cz,modivo.hu,modivo.bg,modivo.gr,modivo.de#?#.product:-abp-contains(/Sponsorizzato|Sponsorowane|Sponsorizat|Sponzorováno|Szponzorált|Спонсорирани|Sponsored|Gesponsert/) -noelleeming.co.nz#?#div.product-tile:-abp-has(span:-abp-contains(Sponsored)) -noon.com#?#span[class*="productContaine"]:-abp-has(div:-abp-contains(Sponsored)) -nordstrom.com#?#article:has(.Yw5es:-abp-contains(Sponsored)) -petco.com#?#[class^="CitrusCatapult-styled__LeftContent"]:-abp-has(div:-abp-contains(Sponsored)) -petco.com#?#[class^="HorizontalWidget"]:-abp-has(div:-abp-contains(Sponsored)) -petco.com#?#li:-abp-contains(Sponsored) -bitchute.com#?#.row.justify-center:-abp-contains(Advertisement) -rawstory.com#?#.body-description > div:-abp-contains(ADVERTISEMENT) -regex101.com#?#div > header + div > div + div:-abp-contains(Sponsors) -sainsburys.co.uk#?#.pt-grid-item:-abp-has([data-test-id="citrus-label"]:-abp-contains(Sponsored)) -search.yahoo.com#?#div.mb-28:-abp-has(span:-abp-contains(Ads)) -seattleweekly.com#?#.marketplace-row:-abp-contains(Sponsored) -sephora.com#?#div[class^="css-"]:-abp-has(>a:-abp-has(span:-abp-contains(Sponsored))) -shipt.com#?#li[class$="eBAnBw"]:-abp-contains(Sponsored) -techonthenet.com#?#div[class] > p:-abp-contains(Advertisements) -dictionary.com,thesaurus.com#?#[class] > p:-abp-contains(Advertisement) -thesaurus.com#@#.SZjJlj7dd7R6mDTODwIT -shipt.com#?#div.swiper-slide:-abp-contains(Sponsored) -sprouts.com#?#li.product-wrapper:-abp-has(span:-abp-contains(Sponsored)) -target.com#?#.ProductRecsLink-sc-4mw94v-0:-abp-has(p:-abp-contains(sponsored)) -target.com#?#div[data-test="@web/ProductCard/ProductCardVariantAisle"]:-abp-contains(Sponsored) -target.com#?#div[data-test="@web/site-top-of-funnel/ProductCardWrapper"]:-abp-contains(sponsored) -tossinggames.com#?#tbody:-abp-contains(Please visit our below advertisers) -trends.gab.com#?#li.list-group-item:-abp-contains(Sponsored content) -tripadvisor.com#?#.cAWGu:-abp-has(a:-abp-contains(Similar Sponsored Properties)) -tripadvisor.com#?#.tkvEM:-abp-contains(Sponsored) -twitter.com,x.com#?#h2[role="heading"]:-abp-contains(/Promoted|Gesponsert|Promocionado|Sponsorisé|Sponsorizzato|Promowane|Promovido|Реклама|Uitgelicht|Sponsorlu|Promotert|Promoveret|Sponsrad|Mainostettu|Sponzorováno|Promovat|Ajánlott|Προωθημένο|Dipromosikan|Được quảng bá|推廣|推广|推薦|推荐|プロモーション|프로모션|ประชาสมพนธ|परचरत|বজঞপত|تشہیر شدہ|مروج|تبلیغی|מקודם/) -vofomovies.info#?#a13:-abp-contains( Ad) -walmart.ca,walmart.com#?#div > div[io-id]:-abp-contains(Sponsored) -wayfair.com,wayfair.co.uk#?#div[data-hb-id="Grid.Item"]:-abp-has(div.FeaturedProductFlag:-abp-contains(Sponsored)) -! top-level domain wildcard -walmart.*#?#div > div[io-id]:-abp-contains(Sponsored) -wayfair.*#?#div[data-hb-id="Grid.Item"]:-abp-has(div.FeaturedProductFlag:-abp-contains(Sponsored)) - -! *** easylist:easylist_adult/adult_specific_hide.txt *** -virtuagirlgirls.com###DynamicBackgroundWrapper -porndr.com###PD-Under-player -deviants.com###_iframe_content -swfchan.com###aaaa -xnxx.com,xvideos.com###ad-footer -javgg.net###adlink -tnaflix.com###ads-under-video_ -h-flash.com###ads_2 -badassbitch.pics###adv -flyingjizz.com###adv_inplayer -xpaja.net###advertisement -milffox.com###advertising -instantfap.com###af -pervclips.com###after-adv -str8ongay.com###alfa_promo_parent -sunporno.com###atop -literotica.com###b-top -massfans.cc,massrips.cc###banner -pornchimp.com###banner-container -massfans.cc,massrips.cc###banner2 -massfans.cc,massrips.cc###banner4 -filtercams.com###bannerFC -cuntest.net###banners -fakings.com,nigged.com###banners_footer -pornstargold.com###basePopping -lewdspot.com,mopoga.com###belowGameAdContainerPause -cockdude.com###beside-video-ver2 -sexyandfunny.com###best-friends -pussyspace.com###bhcr -euroxxx.net###block-15 -hentaiprn.com###block-27 -jav-jp.com###block-29 -toppixxx.com###bottom -xxxdan.com,xxxdan3.com###bottom-line -hentaiasmr.moe###bottom-tab -cockdude.com###box-txtovka-con -eporner.com###btasd -sexu.site###closeplay -anysex.com###content > .main > .content_right -imagebam.com###cs-link -hentaiprn.com###custom_html-19 -celebritymovieblog.com,interracial-girls.com###custom_html-2 -watchjavonline.com###custom_html-3 -zhentube.com###custom_html-38 -dpfantasy.org,hotcelebshome.com###custom_html-4 -hentai7.top###custom_html-6 -pictoa.com###d-zone-1 -eporner.com###deskadmiddle -cdnm4m.nl###directAds -hentai-cosplays.com,hentai-img.com###display_image_detail > span -javguard.xyz###dl > a[target="_blank"][id] -thehun.net###dyk_right -escortbook.com###ebsponAxDS -youjizz.com###englishPr -porntrex.com###exclusive-link -namethatporn.com###fab_blacko -dailyporn.club###fixedban -212.32.226.234###floatcenter -anysex.com###fluid_theatre > .center -pussy.org###footZones -youjizz.com###footer -69gfs.com###footer .thumbs -sunporno.com###footer_a -mopoga.com###fpGMcontainer -girlsofdesire.org###gal_669 -perfectgirls.net###hat_message -yourlust.com###headC -nangaspace.com###header -aan.xxx###header-banner -youtubelike.com###header-top -manga-miz.vy1.click###header_banner -pornpics.network###hidden -javhd.today###ics -porngameshub.com###im-container -guyswithiphones.com###imglist > .noshadow -maturesladies.com###inVideoInner -aniporn.com###in_v -hotmovs.com###in_va -youngamateursporn.com###inplayer_block -freebunker.com,imgcarry.com,pornbus.org###introOverlayBg -hentaiprn.com###l_340 -postyourpuss.com###leaderboard -escortbook.com###links -xfantasy.su###listing-ba -livecamrips.com###live-cam -redtube.com###live_models_row_wrap -bootyoftheday.co###lj -maturetubehere.com###lotal -4tube.com###main-jessy-grid -anysex.com,jizzberry.com###main_video_fluid_html_on_pause -peekvids.com###mediaPlayerBanner -pornvalleymedia.net###media_image-81 -pornvalleymedia.net###media_image-82 -pornvalleymedia.net###media_image-83 -pornvalleymedia.net###media_image-84 -pornvalleymedia.net###media_image-86 -pornvalleymedia.net###media_image-87 -pornvalleymedia.net###media_image-88 -pornvalleymedia.net###media_image-90 -vpornvideos.com###mn-container -gifsfor.com###mob_banner -fetishshrine.com###mobile-under-player -whentai.com###modalegames -eporner.com###movieplayer-box-adv -7mmtv.tv###mvspan_2_s_k_i_p -cockdude.com###native-boxes-2-ver2 -amateur8.com,maturetubehere.com###nopp -flashx.tv,xrares.com###nuevoa -scrolller.com###object_container -youjizz.com###onPausePrOverlay -hentaimama.io,underhentai.net,watchhentai.net###overlay -porn300.com,porndroids.com###overlay-video -22pixx.xyz,imagevenue.com###overlayBg -hentaiff.com###overplay -video.laxd.com###owDmcIsUc -nudevista.at,nudevista.com###paysite -redtube.com,redtube.com.br,redtube.net,youporngay.com###pb_block -pornhub-com.appspot.com,pornhub.com,pornhub.net,youporn.com###pb_template -youporngay.com###pbs_block -ggjav.com,ggjav.tv###pc_instant -imagearn.com###picBanner -pornx.to###player-api-over -7mmtv.tv###player-container -hentai2w.com,iporntoo.com,tsmodelstube.com,xhentai.tv###playerOverlay -ebony8.com,lesbian8.com,maturetubehere.com###player_add -redtube.com###popsByTrafficJunky -javtrailers.com###popunderLinkkkk -pornstargold.com###popup -jav321.com###popup-container -sextvx.com###porntube_hor_bottom_ads -thejavmost.com###poster -katestube.com###pre-block -javtitan.com,thejavmost.com,tojav.net###preroll -alotav.com,javbraze.com,javdoe.fun,javdoe.sh,javhat.tv,javhd.today,javseen.tv,javtape.site###previewBox -youporngay.com###producer -xvideos.name###publicidad-video -celebjihad.com###pud -bootyoftheday.co###random-div-wrapper -cockdude.com###related-boxes-footer-ver2 -pornhub.com###relatedVideosCenter > li[class^="related"] -freebdsmxxx.org###right -lewdspot.com###rightSidebarAdContainerPause -youjizz.com###rightVideoPrs -sexuhot.com###right_div_1 -sexuhot.com###right_div_2 -badjojo.com###rightcol -onlyporn.tube,porntop.com###s-suggesters -homemade.xxx###scrollhere -sexyandfunny.com###sexy-links -spankbang.com###shorts-frame -javtiful.com###showerm -3movs.com###side_col_video_view -fc2covid.com###sidebar > .widget_block -vndevtop.com###sidebar_right -pornhub.com###singleFeedSection > .emptyBlockSpace -adult-sex-games.com,postyourpuss.com###skyscraper -adultgamesworld.com###slideApple -hentaifox.com###slider -javfor.tv###smac12403o0 -xbooru.com,xxxymovies.com###smb -instawank.com###snackbar -hd-easyporn.com###special_column -megatube.xxx###sponsor-widget -flingtube.com###sponsoredBy -w3avenue.com###sponsorsbox -pornfap.tv###spot-player -hd21.com,winporn.com###spot_video_livecams -hd21.com,winporn.com###spot_video_underplayer_livecams -xnxxporn.video###spotholder -maxjizztube.com,yteenporn.com###spotxt -gotgayporn.com###ss_bar -oldies.name###stop_ad2 -pascol.sbs###teaser3 -trannyvideosxxx.com###text-2 -yaoimangaonline.com###text-28 -hentaimama.io###text-3 -hentaimama.io,leaktape.com###text-5 -theboobsblog.com###text-74 -hentai-sharing.net###text-9 -theboobsblog.com###text-94 -69gfs.com,allureamateurs.net,sexmummy.com,worldgatas.com###topbar -ohentai.org###topdetailad -motherless.com###topsites -pussycatxx.com,zhentube.com###tracking-url -creampietubeporn.com,fullxxxtube.com,xxxxsextube.com###ubr -hd-easyporn.com###udwysI3c7p -usasexguide.nl###uiISGAdFooter -aniporn.com###und_ban -pervclips.com###under-video -wetpussygames.com###under728 -fakings.com###undervideo -kisscos.net###v-overlay -homemoviestube.com###v_right -xvideos.com###video-right -xvideos.com###video-sponsor-links -drtuber.com###video_list_banner -dofap.com###video_overlay_banner -hentaiplay.net###video_overlays -redtube.com###video_right_col > .clearfix -thisav.com###vjs-banner-container -gosexpod.com###xtw -porndroids.com##.CDjtesb7pU__video-units -bellesa.co##.Display__RatioOuter-hkc90m-0 -beeg.com##.GreyFox -topinsearch.com##.TelkiTeasersBlock -hentaivideo.tube##.UVPAnnotationJavascriptNormal -xtube.com##.ZBTBTTr93ez9.ktZk9knDKFfB -porndoe.com##.\-f-banners -xhamster.com##._029ef-containerBottomSpot -xhamster.com##._80e65-containerBottomSpot -xhamster.com##._80e65-containerPauseSpot -tubepornclassic.com##.___it0h1l3u2se2lo -pichunter.com##.__autofooterwidth -redgifs.com##._advertWrapper_f9sfb_1 -txxx.com##._ccw-wrapper -ukadultzone.com##.a--d-slot -sunporno.com##.a-block -pornsos.com##.a-box -7mm001.com,7mmtv.sx##.a-d-block -porngem.com,uiporn.com##.a-d-v -bravoteens.com##.a352 -china-tubex.site,de-sexy-tube.ru##.aBlock -namethatporn.com##.a_br_b -upornia.com##.aa_label -namethatporn.com##.aaaabr -pimpandhost.com##.aaablock_yes -pimpandhost.com##.ablock_yes -pornx.to##.above-single-player -cambb.xxx,chaturbate.com,dlgal.com,playboy.com,rampant.tv,sex.com,signbucks.com,tallermaintenancar.com,tehvids.com,thehentaiworld.com,thehun.net,tiktits.com,uflash.tv,xcafe.com##.ad -x13x.space##.ad-banner -coomer.party,coomer.su,kemono.party,kemono.su,pics-x.com,pinflix.com,sdhentai.com,urlgalleries.net##.ad-container -xnxx.com##.ad-footer -gay.bingo##.ad-w -xtube.com##.adContainer -boyfriendtv.com##.adblock -iporntoo.com##.adbox-inner -ftopx.com##.add-block -sex3.com##.add-box -playvids.com##.add_href_jsclick -4kporn.xxx,babesandstars.com,cam-video.xxx,crazyporn.xxx,cumlouder.com,gosexy.mobi,hoes.tube,hog.tv,javcl.com,javseen.tv,love4porn.com,marawaresearch.com,mobilepornmovies.com,mypornstarbook.net,pichunter.com,thisav.com##.ads -pornx.to##.ads-above-single-player -video.laxd.com##.ads-container -cumlouder.com##.ads__block -porn87.com##.ads_desktop -tube8.com,tube8.es,tube8.fr##.adsbytrafficjunky -pornpics.com,pornpics.de##.adss-rel -androidadult.com##.adswait -crazyporn.xxx##.adswarning -hipsternudes.com##.adultfriendfinder-block -anyporn.com,cartoon-sex.tv,oncam.me,pervertslut.com,theyarehuge.com,tiktits.com,webanddesigners.com##.adv -uiporn.com##.adv-in-video -sex3.com##.adv-leftside -roleplayers.co##.adv-wrap -gay.bingo##.adv-wrapper -freebdsmxxx.org##.adv315 -perfectgirls.net##.adv_block -alohatube.com,reddflix.com##.advbox -alohatube.com##.advboxemb -ftopx.com,gayboystube.com,hungangels.com##.advert -cumlouder.com,flyingjizz.com,gotporn.com,japan-whores.com,porntube.com##.advertisement -katestube.com,sleazyneasy.com,vikiporn.com,wankoz.com##.advertising -javcab.com##.advt-spot -adultfilmindex.com##.aebn -porngals4.com##.afb0 -porngals4.com##.afb1 -porngals4.com##.afb2 -hentai2w.com##.aff-col -hentai2w.com##.aff-content-col -porngals4.com##.affl -cockdude.com##.after-boxes-ver2 -hentaidude.xxx##.ai_widget -hentai2read.com##.alert-danger -dvdgayonline.com##.aligncenter -lewdzone.com##.alnk -punishworld.com##.alrt-ver2 -freeadultcomix.com##.anuncios -hotmovs.com##.app-banners -hotmovs.tube##.app-banners__wrapper -fuqer.com##.area -sextb.net##.asg-overlay -hobby.porn##.asg-vast-overlay -porndictator.com,submityourflicks.com##.aside > div -str8ongay.com##.aside-itempage-col -ad69.com##.aside-section -sexvid.pro##.aside_thumbs -hd21.com##.aside_video -fapnfuck.com,onlyppv.com,xmateur.com##.asside-link -veev.to##.avb-active -avn.com##.avn-article-tower -mrskin.com##.az -fapeza.com##.azz_div -gayporno.fm##.b-content__aside-head -onlydudes.tv##.b-footer-place -onlydudes.tv##.b-side-col -japan-whores.com##.b-sidebar -rat.xxx##.b-spot -me-gay.com##.b-uvb-spot -buondua.com##.b1a05af5ade94f4004a7f9ca27d9eeffb -buondua.com##.b2b4677020d78f744449757a8d9e94f28 -pornburst.xxx##.b44nn3rss -buondua.com##.b489c672a2974fbd73005051bdd17551f -dofap.com##.b_videobot -justpicsplease.com,xfantasy.su##.ba -dominationworld.com,femdomzzz.com##.ban-tezf -pornburst.xxx##.bann3rss -18teensex.tv,3movs.xxx,amamilf.com,amateurelders.com,analpornpix.com,babesmachine.com,chaturbate.com,fboomporn.com,freepornpicss.com,gramateurs.com,grannarium.com,happysex.ch,hiddenhomemade.com,imagezog.com,its.porn,kawaiihentai.com,legalporn4k.com,lyama.net,maturator.com,milffox.com,oldgf.com,oldies.name,paradisehill.cc,player3x.xyz,playporngames.com,playsexgames.xxx,playvids.com,porngames.com,private.com,submittedgf.com,teenextrem.com,video.laxd.com,vidxnet.com,vikiporn.com,vjav.com,wankerson.com,watchhentaivideo.com,waybig.com,xanalsex.com,xbabe.com,xcum.com,xgrannypics.com,xnudepics.com,xpornophotos.com,xpornopics.com,xpornpix.com,xpussypics.com,xwifepics.com,xxxpornpix.com,youcanfaptothis.com,yourdailygirls.com,youx.xxx##.banner -highporn.net##.banner-a -javfor.tv##.banner-c -ero-anime.website##.banner-container -cumlouder.com##.banner-frame -grannymommy.com##.banner-on-player -freeones.com##.banner-placeholder -javynow.com##.banner-player -babesandstars.com##.banner-right -javfor.tv##.banner-top-b -ok.xxx,pornhat.com##.banner-wrap-desk -perfectgirls.net##.banner-wrapper -tnaflix.com##.bannerBlock -watchhentaivideo.com##.bannerBottom -pornshare.biz##.banner_1 -pornshare.biz##.banner_2 -pornshare.biz##.banner_3 -4pig.com##.banner_page_right -yourlust.com##.banner_right_bottoms -camporn.to,camseek.tv,camstreams.tv,eurogirlsescort.com,sexu.com##.banners -xxxvogue.net##.banners-container -bubbaporn.com,kalporn.com,koloporno.com,pornodingue.com,pornodoido.com,pornozot.com,serviporno.com,voglioporno.com##.banners-footer -paradisehill.cc##.banners3 -paradisehill.cc##.banners4 -ratemymelons.com##.bannus -fapello.com##.barbie_desktop -fapello.com##.barbie_mobile -yourdarkdesires.com##.battery -fap18.net,fuck55.net,tube.ac,tube.bz##.bb_desktop -mofosex.net##.bb_show_5 -hotcelebshome.com##.bcpsttl_name_listing -ok.xxx,pornhat.com##.before-player -porndoe.com##.below-video -cockdude.com##.beside-video-ver2 -wapbold.com,wapbold.net##.bhor-box -hqporner.com##.black_friday -babestare.com##.block -alphaporno.com,tubewolf.com##.block-banner -urgayporn.com##.block-banvert -xxbrits.com##.block-offer -3prn.com##.block-video-aside -escortnews.eu,topescort.com##.blogBanners -blogvporn.com##.blue-btns -xtube.com##.bm6LRcdKEZAE -smutty.com##.bms_slider_div -ok.porn,pornhat.com##.bn -ok.xxx##.bn-title -xbabe.com##.bnnrs-aside -alphaporno.com,crocotube.com,hellporno.com,tubewolf.com,xbabe.com,xcum.com##.bnnrs-player -pornogratisdiario.com,xcafe.com##.bnr -porngames.games##.bnr-side -ok.porn,ok.xxx,oldmaturemilf.com,pornhat.com,pornyoungtube.tv##.bns-bl -sexsbarrel.com,zingyporntube.com##.bns-place-ob -xnxxvideoporn.com##.bot_bns -jagaporn.com##.botad -teenhost.net##.bottom-ban -pornoreino.com##.bottom-bang -hentaigamer.org##.bottom-banner-home -alphaporno.com,katestube.com,sleazyneasy.com,vikiporn.com##.bottom-banners -elephanttube.world##.bottom-block -dailyporn.club,risextube.com##.bottom-blocks -katestube.com##.bottom-items -pornwhite.com,teenpornvideo.xxx##.bottom-spots -youtubelike.com##.bottom-thumbs -youtubelike.com##.bottom-top -xhamster.com##.bottom-widget-section -rexxx.com##.bottom_banners -porn-plus.com##.bottom_player_a -dixyporn.com##.bottom_spot -sexvid.xxx##.bottom_spots -javlibrary.com##.bottombanner2 -hd-easyporn.com##.box -zbporn.com##.box-f -bravotube.net##.box-left -sexvid.xxx##.box_site -barscaffolding.co.uk,capitalregionusa.xyz,dcraddock.uk,eegirls.com,javbebe.com,javxxoo.com,pornofilmes.com,pornstory.net,sexclips.pro,theboyboy.com,xxx-picture.com##.boxzilla-container -barscaffolding.co.uk,capitalregionusa.xyz,dcraddock.uk,eegirls.com,javbebe.com,javxxoo.com,pornofilmes.com,pornstory.net,sexclips.pro,theboyboy.com,xxx-picture.com##.boxzilla-overlay -hentaianimedownloads.com##.bp_detail -bravotube.net,spanishporn.com.es##.brazzers -xozilla.com##.brazzers-link -kompoz2.com,pornvideos4k.com##.brs-block -teensforfree.net##.bst1 -aniporn.com##.btn-close -realgfporn.com##.btn-info -xcum.com##.btn-ponsor -cinemapee.com##.button -video.laxd.com##.c-ad-103 -redporn.porn##.c-random -tiktits.com##.callback-bt -pornpics.vip,xxxporn.pics##.cam -xnxxvideos.rest##.camitems -winporn.com##.cams -theyarehuge.com##.cams-button -sleazyneasy.com##.cams-videos -tnapics.com##.cams_small -peekvids.com##.card-deck-promotion -sxyprn.com##.cbd -stepmom.one##.cblidovr -stepmom.one##.cblrghts -porntry.com##.center-spot -fakings.com##.centrado -thefappeningblog.com##.cl-exl -bigtitsgallery.net##.classifiedAd -teenanal.co##.clickable-overlay -xhamster.com##.clipstore-bottom -sunporno.com##.close-invid -fap-nation.com,fyptt.to,gamegill.com,japaneseasmr.com##.code-block -tube8.com,tube8.es,tube8.fr##.col-3-lg.col-4-md.col-4 -playvids.com##.col-lg-6.col-xl-4 -taxidrivermovie.com##.col-pfootban -whoreshub.com##.col-second -totsantcugat.info##.col-sm-6 > [href="http://totsantcugat.info/wp-content/video.php"] -hentaiworld.tv##.comments-banners -perfectgirls.net##.container + div + .additional-block-bg -fetishshrine.com,pornwhite.com##.container-aside -fetishshrine.com##.container-side -pornfap.tv##.conteiner_info -senzuri.tube##.content > div > .hv-block-transparent -sleazyneasy.com,wankoz.com##.content-aside -watchmygf.me##.content-footer -xxxdessert.com##.content-gallery_banner -sexyandfunny.com##.content-source -iwara.tv##.contentBlock__content -youporngay.com##.contentPartner -sexu.site##.content__top -xcafe.com##.content_source -gottanut.com##.coverUpVid-Dskt -forced-tube.net,hqasianporn.org##.coverup -shemale777.com##.covid19 -4tube.com##.cpp -bootyheroes.com##.cross-promo-bnr -3movs.com,fapality.com##.cs -mylust.com##.cs-bnr -rat.xxx,zbporn.tv##.cs-holder -zbporn.com##.cs-link-holder -hdtube.porn,pornid.xxx,rat.xxx##.cs-under-player -watchmygf.mobi##.cs_info -watchmygf.me##.cs_text_link -crocotube.com##.ct-video-ntvs -h2porn.com##.cube-thumbs-holder -worldsex.com##.currently-blokje-block-inner -alloldpics.com,sexygirlspics.com##.custom-spot -worldsex.com##.dazone -faptor.com##.dblock -anysex.com##.desc.type2 -rule34.xxx##.desktop -theyarehuge.com##.desktop-spot -inxxx.com,theyarehuge.com##.desktopspot -cartoonpornvideos.com##.detail-side-banner -hentaicity.com##.detail-side-bnr -xxxporn.pics##.download -sexvid.porn,sexvid.pro,sexvid.xxx##.download_link -drtuber.com##.drt-sponsor-block -drtuber.com,iceporn.com,nuvid.com,proporn.com,viptube.com,winporn.com##.drt-spot-box -pornsex.rocks##.dump -januflix.expert##.e3lan -youporngay.com##.e8-column -pornx.to##.elementor-element-e8dcf4f -porngifs2u.com##.elementor-widget-posts + .elementor-widget-heading -rare-videos.net##.embed-container -vxxx.com##.emrihiilcrehehmmll -tsumino.com##.erogames_container -pornstargold.com##.et_bloom_popup -upornia.com,upornia.tube##.eveeecsvsecwvscceee -eromanga-show.com,hentai-one.com,hentaipaw.com##.external -lewdzone.com##.f8rpo -escortnews.eu,topescort.com##.fBanners -porngem.com##.featured-b -sss.xxx##.fel-item -tuberel.com##.fel-list -javfor.tv##.fel-playclose -hotmovs.com,thegay.com##.fiioed -homemoviestube.com##.film-item:not(#showpop) -sexyandfunny.com##.firstblock -ah-me.com,gaygo.tv##.flirt-block -asiangaysex.net,gaysex.tv##.float-ck -risextube.com##.floating -hentaiworld.tv##.floating-banner -xgroovy.com##.fluid-b -yourlust.com##.fluid_html_on_pause -xgroovy.com##.fluid_next_video_left -xgroovy.com##.fluid_next_video_right -stileproject.com##.fluid_nonLinear_bottom -cbhours.com##.foo2er-section -porn.com##.foot-zn -pornburst.xxx##.foot33r-iframe -hclips.com,thegay.com,tporn.xxx,tubepornclassic.com##.footer-banners -hentaiworld.tv##.footer-banners-iframe -xcafe.com##.footer-block -pornfaia.com##.footer-bnrz -youporn.com,youporngay.com##.footer-element-container -pornburst.xxx##.footer-iframe -4tube.com##.footer-la-jesi -4kporn.xxx,alotporn.com,amateurporn.co,camstreams.tv,crazyporn.xxx,danude.com,fpo.xxx,hoes.tube,scatxxxporn.com,xasiat.com##.footer-margin -cliniqueregain.com##.footer-promo -cbhours.com##.footer-section -pornhd.com##.footer-zone -homo.xxx##.footer.spot -badjojo.com##.footera -mansurfer.com##.footerbanner -cambay.tv,videocelebs.net##.fp-brand -xpics.me##.frequently -onlyporn.tube##.ft -jizzbunker.com,jizzbunker2.com##.ftrzx1 -teenpornvideo.fun##.full-ave -kompoz2.com,pornvideos4k.com,roleplayers.co##.full-bns-block -iceporn.com##.furtherance -xpics.me##.future -hdtube.porn##.g-col-banners -teenextrem.com,teenhost.net##.g-link -youx.xxx##.gallery-link -xxxonxxx.com,youtubelike.com##.gallery-thumbs -porngamesverse.com##.game-aaa -tubator.com##.ggg_container -cliniqueregain.com,tallermaintenancar.com##.girl -sexybabegirls.com##.girlsgirls -bravoteens.com,bravotube.net##.good_list_wrap -kbjfree.com##.h-\[250px\] -amateur-vids.eu,leaktape.com,mature.community,milf.community,milf.plus##.happy-footer -hdporn92.com,koreanstreamer.xyz,leaktape.com##.happy-header -cheemsporn.com,milfnut.com,nudeof.com,sexseeimage.com,yporn.tv##.happy-inside-player -jav2free.com,penissexy.com,sexseeimage.com,theboyboy.com##.happy-player-beside -jav2free.com,penissexy.com,sexseeimage.com,theboyboy.com##.happy-player-under -jav2free.com,penissexy.com,sexseeimage.com,theboyboy.com##.happy-section -deepfake-porn.com,x-picture.com##.happy-sidebar -amateur-vids.eu,camgirl-video.com,mature.community,milf.community,milf.plus##.happy-under-player -redtube.com##.hd -zbporn.com##.head-spot -anysex.com##.headA -xgroovy.com##.headP -myhentaigallery.com##.header-image -megatube.xxx##.header-panel-1 -cutegurlz.com##.header-widget -videosection.com##.header__nav-item--adv-link -mansurfer.com##.headerbanner -txxx.com##.herrmhlmolu -txxx.com##.hgggchjcxja -porn300.com,porndroids.com##.hidden-under-920 -worldsex.com##.hide-on-mobile -hqporner.com##.hide_ad_marker -hentairules.net##.hide_on_mobile -javgg.net##.home_iframead > a[target="_blank"] > img -orgasm.com##.horizontal-banner-module -underhentai.net##.hp-float-skb -eporner.com##.hptab -pantiespics.net##.hth -videosection.com##.iframe-adv -gayforfans.com##.iframe-container -recordbate.com##.image-box -gotporn.com##.image-group-vertical -top16.net##.img_wrap -trannygem.com##.in_player_video -vivud.com##.in_stream_banner -sexu.site##.info -cocoimage.com##.inner_right -javhhh.com##.inplayer -vivud.com##.inplayer_banners -anyporn.com,bravoporn.com,bravoteens.com,bravotube.net##.inplb -anyporn.com,bravotube.net##.inplb3x2 -cockdude.com##.inside-list-boxes-ver2 -playvids.com,pornflip.com##.invideoBlock -amateur8.com##.is-av -internationalsexguide.nl,usasexguide.nl##.isg_background_border_banner -internationalsexguide.nl,usasexguide.nl##.isg_banner -e-hentai.org##.itd[colspan="4"] -amateurporn.me,eachporn.com##.item[style] -drtuber.com##.item_spots -twidouga.net##.item_w360 -fetishshrine.com,pornwhite.com,sleazyneasy.com##.items-holder -vxxx.com##.itrrciecmeh -escortdirectory.com##.ixs-govazd-item -alastonsuomi.com##.jb -babesandstars.com,pornhubpremium.com##.join -javvr.net##.jplayerbutton -japan-whores.com##.js-advConsole -sexlikereal.com##.js-m-goto -pornpapa.com##.js-mob-popup -eurogirlsescort.com##.js-stt-click > picture -freeones.com##.js-track-event -ts-tube.net##.js-uvb-spot -porndig.com##.js_footer_partner_container_wrapper -hnntube.com##.jumbotron -xxxymovies.com##.kt_imgrc -4tube.com##.la-jessy-frame -hqpornstream.com##.lds-hourglass -thehun.net##.leaderboard -aniporn.com##.left > section -xxxpicss.com,xxxpicz.com##.left-banners -babepedia.com##.left_side > .sidebar_block > a -xxxporntalk.com##.leftsidenav -missav.ai,missav.com,missav.ws,missav123.com,missav789.com,myav.com##.lg\:block -missav.ai,missav.com,missav.ws,missav123.com,missav789.com,myav.com##.lg\:hidden -xxxvogue.net##.link-adv -escortnews.eu,topescort.com##.link-buttons-container -fapnfuck.com##.link-offer -totsantcugat.info##.live > a[href="http://totsantcugat.info/wp-content/video.php"] -spankbang.com##.live-rotate -alloldpics.com,sexygirlspics.com##.live-spot -spankbang.com##.livecam-rotate -proporn.com,vivatube.com##.livecams -loverslab.com##.ll_adblock -vxxx.com##.lmetceehehmmll -javhd.run##.loading-ad -peekvids.com##.mediaPlayerSponsored -efukt.com##.media_below_container -lesbianbliss.com,mywebcamsluts.com,transhero.com##.media_spot -ryuugames.com##.menu-item > a[href^="https://l.erodatalabs.com/s/"] -camcam.cc##.menu-item-5880 -empflix.com,tnaflix.com##.mewBlock -sopornmovies.com##.mexu-bns-bl -avn.com##.mfc -online-xxxmovies.com##.middle-spots -lic.me##.miniplayer -tryindianporn.com##.mle -hentaicore.org##.mob-lock -rat.xxx##.mob-nat-spot -gaymovievids.com,verygayboys.com##.mobile-random -tube-bunny.com##.mobile-vision -yourdarkdesires.com##.moment -txxx.com##.mpululuoopp -xnxxvideos.rest##.mult -javfor.tv,javhub.net##.my-2.container -4kporn.xxx,crazyporn.xxx##.myadswarning -jagaporn.com##.nativad -yourlust.com##.native-aside -pornhd.com##.native-banner-wrapper -cockdude.com##.native-boxes-2-ver2 -cockdude.com##.native-boxes-ver2 -pornwhite.com,sleazyneasy.com##.native-holder -ggjav.com##.native_ads -anysex.com##.native_middle -fapality.com##.nativeaside -fapeza.com##.navbar-item-sky -miohentai.com##.new-ntv -escortnews.eu,topescort.com##.newbottom-fbanners -xmissy.nl##.noclick-small-bnr -pornhd.com##.ntv-code-container -negozioxporn.com##.ntv1 -fapality.com##.ntw-a -rule34.xxx##.nutaku-mobile -boundhub.com##.o3pt -bdsmx.tube##.oImef0 -lustgalore.com##.opac_bg -pornchimp.com,pornxbox.com,teenmastube.com,watchmygf.mobi##.opt -bbporntube.pro##.opve-bns-bl -bbporntube.pro##.opve-right-player-col -jav2free.com,penissexy.com,sexseeimage.com,theboyboy.com##.order-1 -hentaistream.com##.othercontent -eboblack.com,teenxy.com##.out_lnk -beemtube.com##.overspot -javtiful.com##.p-0[style="margin-top: 0.45rem !important"] -zbporn.com##.p-ig -hot.co.uk,hot.com##.p-search__action-results.badge-absolute.text-div-wrap.top -empflix.com##.pInterstitialx -hobby.porn##.pad -xxxdan3.com##.partner-site -hclips.com,hotmovs.tube##.partners-wrap -xfantazy.com##.partwidg1 -fapnado.xxx##.pause-ad-pullup -empflix.com##.pause-overlay -porn87.com##.pc_instant -ebony8.com,maturetubehere.com##.pignr -bigtitslust.com,sortporn.com##.pignr.item -boundhub.com##.pla4ce -camvideos.tv,exoav.com,jizzoncam.com,rare-videos.net##.place -3movs.com##.player + .aside -alotporn.com##.player + center -xhamster.com##.player-add-overlay -katestube.com##.player-aside -vivud.com,zmovs.com##.player-aside-banners -sexu.site##.player-block__line -ok.xxx,pornhat.com,xxxonxxx.com##.player-bn -sexvid.xxx##.player-cs -videosection.com##.player-detail__banners -7mmtv.sx##.player-overlay -cliniqueregain.com##.player-promo -sexu.site##.player-related -blogbugs.org,tallermaintenancar.com,zuzandra.com##.player-right -gay.bingo##.player-section__ad-b -3movs.com##.player-side -sexvid.porn,sexvid.pro,sexvid.xxx##.player-sponsor -xvideos.com,xvideos.es##.player-video.xv-cams-block -porn18videos.com##.playerRight -gay.bingo##.player__inline -sexu.com##.player__side -pervclips.com##.player_adv -xnxxvideoporn.com##.player_bn -txxx.com##.polumlluluoopp -porntrex.com##.pop-fade -fapnado.com,young-sexy.com##.popup -pornicom.com##.pre-ad -porntube.com##.pre-footer -sleazyneasy.com##.pre-spots -xnxxvideos.rest##.prefixat-player-promo-col -recordbate.com##.preload -japan-whores.com##.premium-thumb -cam4.com##.presentation -pornjam.com##.productora -perfectgirls.net,xnostars.com##.promo -nablog.org##.promo-archive-all -xhamster.com##.promo-message -nablog.org##.promo-single-3-2sidebars -perfectgirls.net##.promo__item -viptube.com##.promotion -3dtube.xxx,milf.dk,nakedtube.com,pornmaki.com##.promotionbox -telegram-porn.com##.proxy-adv__container -tnaflix.com##.pspBanner -spankbang.com##.ptgncdn_holder -pornjam.com##.publ11s-b0ttom -watchmygf.me##.publicity -freemovies.tv##.publis-bottom -pornjam.com##.r11ght-pl4yer-169 -pornjam.com##.r1ght-pl4yer-43 -tokyonightstyle.com##.random-banner -gaymovievids.com,me-gay.com,ts-tube.net,verygayboys.com##.random-td -tnaflix.com##.rbsd -pornhub.com##.realsex -vxxx.com##.recltiecrrllt -xnxxvideos.rest##.refr -svscomics.com##.regi -nuvid.com##.rel_right -cockdude.com##.related-boxes-footer-ver2 -bestjavporn.com,javhdporn.net##.related-native-banner -cumlouder.com##.related-sites -sexhd.pics##.relativebottom -pervclips.com,vikiporn.com##.remove-spots -cam4.com##.removeAds -cumlouder.com##.resumecard -porndroids.com,pornjam.com##.resumecard__banner -bdsmx.tube,hotmovs.com,javdoe.fun,javdoe.sh,javtape.site,onlyporn.tube,porntop.com##.right -infospiral.com##.right-content -pornoreino.com##.right-side -definebabe.com##.right-sidebar -empflix.com##.rightBarBannersx -gottanut.com##.rightContent-videoPage -analsexstars.com,porn.com,pussy.org##.rmedia -jav321.com##.row > .col-md-12 > h2 -jav321.com##.row > .col-md-12 > ul -erofus.com##.row-content > .col-lg-2[style^="height"] -elephanttube.world,pornid.xxx##.rsidebar-spots-holder -jizzbunker.com,jizzbunker2.com,xxxdan.com,xxxdan3.com##.rzx1 -forum.lewdweb.net,forums.socialmediagirls.com##.samCodeUnit -porngals4.com##.sb250 -7mm001.com,7mm003.cc,7mmtv.sx##.set_height_250 -sextb.net,sextb.xyz##.sextb_300 -gay-streaming.com,gayvideo.me##.sgpb-popup-dialog-main-div-wrapper -gay-streaming.com,gayvideo.me##.sgpb-popup-overlay -paradisehill.cc##.shapka -h2porn.com##.side-spot -sankakucomplex.com##.side300xmlc -video.laxd.com##.side_banner -familyporn.tv,mywebcamsluts.com,transhero.com##.side_spot -queermenow.net##.sidebar > #text-2 -flyingjizz.com##.sidebar-banner -pornid.name##.sidebar-holder -vidxnet.com##.sidebar_banner -waybig.com##.sidebar_zing -taxidrivermovie.com##.sidebarban1 -xxxporntalk.com##.sidenav -myslavegirl.org##.signature -milffox.com##.signup -gayck.com##.simple-adv-spot -supjav.com##.simpleToast -hersexdebut.com##.single-bnr -porngfy.com##.single-sponsored -babestare.com##.single-zone -sexvid.xxx##.site_holder -porn-monkey.com##.size-300x250 -simply-hentai.com##.skyscraper -porngames.tv##.skyscraper_inner -pornhub.com##.sniperModeEngaged -thelittleslush.com##.snppopup -boycall.com##.source_info -amateurfapper.com,iceporn.tv,pornmonde.com##.sources -hd-easyporn.com##.spc_height_80 -gotporn.com##.spnsrd -hotgirlclub.com##.spnsrd-block-aside-250 -18porn.sex,amateur8.com,anyporn.com,area51.porn,bigtitslust.com,cambay.tv,eachporn.com,fapster.xxx,fpo.xxx,freeporn8.com,hentai-moon.com,its.porn,izlesimdiporno.com,pervertslut.com,porngem.com,pornmeka.com,porntop.com,sexpornimages.com,sexvid.xxx,sortporn.com,tktube.com,uiporn.com,xhamster.com##.sponsor -teenpornvideo.fun##.sponsor-link-desk -teenpornvideo.fun##.sponsor-link-mob -pornpics.com,pornpics.de##.sponsor-type-4 -nakedpornpics.com##.sponsor-wrapper -4kporn.xxx,hoes.tube,love4porn.com##.sponsorbig -fux.com,pornerbros.com,porntube.com,tubedupe.com##.sponsored -hoes.tube##.sponsorsmall -3movs.com,3movs.xxx,bravotube.net,camvideos.tv,cluset.com,deviants.com,dixyporn.com,fapnfuck.com,hello.porn,javcab.com,katestube.com,pornicom.com,sleazyneasy.com,videocelebs.net,vikiporn.com,vjav.com##.spot -pornicom.com##.spot-after -faptube.xyz,hqpornstream.com,magicaltube.com##.spot-block -3movs.com##.spot-header -katestube.com##.spot-holder -tsmodelstube.com##.spot-regular -fuqer.com##.spot-thumbs > .right -homo.xxx##.spot.column -drtuber.com##.spot_button_m -3movs.com##.spot_large -pornmeka.com##.spot_wrapper -drtuber.com,thisvid.com,vivatube.com,xxbrits.com##.spots -elephanttube.world##.spots-bottom -rat.xxx##.spots-title -sexvid.xxx##.spots_field -sexvid.xxx##.spots_thumbs -analsexstars.com##.sppc -teenasspussy.com##.sqs -pornstarchive.com##.squarebanner -pornpics.com,pornpics.de##.stamp-bn-1 -lewdninja.com##.stargate -cumlouder.com##.sticky-banner -xxx18.uno##.sticky-elem -xxxbule.com##.style75 -teenmushi.org##.su-box -definebabe.com##.subheader -pornsex.rocks##.subsequent -tporn.xxx##.sug-bnrs -hclips.com##.suggestions -pornmd.com##.suggestions-box -txxx.com##.sugggestion -telegram-porn.com##.summary-adv-telNews-link -simply-hentai.com##.superbanner -holymanga.net##.svl_ads_right -tnapics.com##.sy_top_wide -exhibporno.com##.syn -boundhub.com##.t2op -boundhub.com##.tab7le -18porn.sex,18teensex.tv,429men.com,4kporn.xxx,4wank.com,alotporn.com,amateurporn.co,amateurporn.me,bigtitslust.com,camwhores.tv,danude.com,daporn.com,fapnow.xxx,fpo.xxx,freeporn8.com,fuqer.com,gayck.com,hentai-moon.com,heroero.com,hoes.tube,intporn.com,japaneseporn.xxx,jav.gl,javwind.com,jizzberry.com,mrdeepfakes.com,multi.xxx,onlyhentaistuff.com,pornchimp.com,porndr.com,pornmix.org,rare-videos.net,sortporn.com,tabootube.xxx,watchmygf.xxx,xcavy.com,xgroovy.com,xmateur.com,xxxshake.com##.table -sxyprn.com##.tbd -amateurvoyeurforum.com##.tborder[width="99%"][cellpadding="6"] -fap-nation.org##.td-a-rec -camwhores.tv##.tdn -pronpic.org##.teaser -onlytik.com##.temporary-real-extra-block -avn.com##.text-center.mb-10 -javfor.tv##.text-md-center -cockdude.com##.textovka -wichspornos.com##.tf-sp -porn87.com##.three_ads -chikiporn.com,pornq.com##.thumb--adv -pocomu.com,xnxx.com,xvideos.com##.thumb-ad -pornpictureshq.com##.thumb__iframe -toppixxx.com##.thumbad -cliniqueregain.com,tallermaintenancar.com##.thumbs -smutty.com##.tig_following_tags2 -drtuber.com##.title-sponsored -4wank.com,cambay.tv,daporn.com,fpo.xxx,hentai-moon.com,pornmix.org,scatxxxporn.com,xmateur.com##.top -pornfaia.com##.top-banner-single -sexvid.xxx##.top-cube -vikiporn.com##.top-list > .content-aside -japan-whores.com##.top-r-all -motherless.com##.top-referers -porngem.com,uiporn.com##.top-sponsor -rat.xxx,zbporn.tv##.top-spot -escortnews.eu,topescort.com##.topBanners -10movs.com##.top_banner -ok.xxx,perfectgirls.xxx##.top_spot -camwhores.tv##.topad -m.mylust.com##.topb-100 -m.mylust.com##.topb-250 -itsatechworld.com##.topd -babesmachine.com##.topline -babesmachine.com##.tradepic -babesandstars.com##.traders -gayporno.fm##.traffic -proporn.com##.trailerspots -sexjav.tv##.twocolumns > aside -sexhd.pics##.tx -boysfood.com##.txt-a-onpage -pornid.xxx##.under-player-holder -hdtube.porn##.under-player-link -sexvid.xxx##.under_player_link -thegay.com##.underplayer__info > div:not([class]) -videojav.com##.underplayer_banner -tryindianporn.com##.uvk -hentaiprn.com##.v-overlay -javtiful.com##.v3sb-box -see.xxx,tuberel.com##.vda-item -indianpornvideos.com##.vdo-unit -xnxxporn.video##.vertbars -milfporn8.com,ymlporn7.net##.vid-ave-pl -ymlporn7.net##.vid-ave-th -pornone.com##.video-add -ad69.com,risextube.com##.video-aside -watchmygf.tv##.video-aside-spot -sexseeimage.com##.video-block-happy -pornfaia.com##.video-bnrz -x-hd.video##.video-brs -comicsxxxgratis.com,video.javdock.com##.video-container -pornhoarder.tv##.video-detail-bspace -boyfriendtv.com##.video-extra-wrapper -megatube.xxx##.video-filter-1 -theyarehuge.com##.video-holder > .box -porn00.org##.video-holder > .headline -bdsmx.tube##.video-info > section -videosection.com##.video-item--a -videosection.com##.video-item--adv -pornzog.com##.video-ntv -ooxxx.com##.video-ntv-wrapper -pornhdtube.tv,recordbate.com##.video-overlay -hotmovs.tube##.video-page > .block_label > div -thegay.com##.video-page__content > .right -xhtab2.com##.video-page__layout-ad -senzuri.tube##.video-page__watchfull-special -pornhd.com##.video-player-overlay -peachurbate.com##.video-right-banner -hotmovs.tube##.video-right-top -porntry.com,videojav.com##.video-side__spots -thegay.com##.video-slider-container -kisscos.net##.video-sponsor -senzuri.tube##.video-tube-friends -xhamster.com##.video-view-ads -china-tubex.site##.videoAd -javynow.com##.videos-ad__ad -porntop.com##.videos-slider--promo -porndoe.com##.videos-tsq -zbporn.tv##.view-aside -zbporn.com,zbporn.tv##.view-aside-block -tube-bunny.com##.visions -yourlust.com##.visit_cs -eporner.com##.vjs-inplayer-container -upornia.tube##.voiscscttnn -japan-whores.com##.vp-info -porndoe.com##.vpb-holder -porndoe.com##.vpr-section -kbjfree.com##.w-\[728px\] -reddxxx.com##.w-screen.backdrop-blur-md -3prn.com##.w-spots -pornone.com##.warp -upornia.com,upornia.tube##.wcccswvsyvk -trannygem.com##.we_are_sorry -porntube.com##.webcam-shelve -spankingtube.com##.well3 -imagearn.com##.wide_banner -bustyporn.com##.widget-friends -rpclip.com##.widget-item-wrap -interviews.adultdvdtalk.com##.widget_adt_performer_buy_links_widget -hentaiprn.com,whipp3d.com##.widget_block -arcjav.com,hotcelebshome.com,jav.guru,javcrave.com,pussycatxx.com##.widget_custom_html -gifsauce.com##.widget_live -totsantcugat.info##.widget_meta.widget.col-sm-3 -hentaiblue.com,pornifyme.com##.widget_text -xhamster.com##.wio-p -xhamster.com##.wio-pcam-thumb -xhamster.com##.wio-psp-b -xhamster.com,xhamster2.com##.wio-xbanner -xhamster2.com##.wio-xspa -xhamster.com##.wixx-ebanner -xhamster.com##.wixx-ecam-thumb -xhamster.com##.wixx-ecams-widget -teenager365.com##.wps-player__happy-inside-btn-close -pornrabbit.com##.wrap-spots -bdsmx.tube##.wrapper > section -porn300.com##.wrapper__related-sites -upornia.com,upornia.tube##.wssvkvkyyee -xhamster.com##.xplayer-b -xhamster18.desi##.xplayer-banner -megaxh.com##.xplayer-banner-bottom -xhamster.com##.xplayer-hover-menu -theyarehuge.com##.yellow -xhamster.com##.yfd-fdcam-thumb -xhamster.com##.yfd-fdcams-widget -xhamster.com##.yfd-fdclipstore-bottom -xhamster.com##.yfd-fdsp-b -xhamster.com##.yld-mdcam-thumb -xhamster.com##.yld-mdsp-b -xhamster.com##.ytd-jcam-thumb -xhamster.com##.ytd-jcams-widget -xhamster.com##.ytd-jsp-a -xhamster.com##.yxd-jcam-thumb -xhamster.com##.yxd-jcams-widget -xhamster.com##.yxd-jdbanner -xhamster.com##.yxd-jdcam-thumb -xhamster.com##.yxd-jdcams-widget -xhamster.com##.yxd-jdplayer -xhamster.com##.yxd-jdsp-b -xhamster.com##.yxd-jdsp-l-tab -xhamster.com##.yxd-jsp-a -faponic.com##.zkido_div -pussy.org##.zone -momxxxfun.com##.zone-2 -pinflix.com,pornhd.com##.zone-area -hentai2read.com##.zonePlaceholder -fapnado.xxx##.zpot-horizontal -faptor.com##.zpot-horizontal-img -fapnado.xxx##.zpot-vertical -jizzbunker2.com,xxxdan.com,xxxdan3.com##.zx1p -tnaflix.com##.zzMeBploz -porn300.com,pornodiamant.xxx##[class^="abcnn_"] -beeg.porn##[class^="bb_show_"] -setdartwatches.com##[class^="boxzilla-"] -hotleaks.tv,javrank.com##[class^="koukoku"] -whoreshub.com##[class^="pop-"] -cumlouder.com##[class^="sm"] -xhamster.com,xhamster.one,xhamster2.com##[class^="xplayer-banner"] -fapnado.com##[class^="xpot"] -porn.com##[data-adch] -tube8.com##[data-spot-id] -tube8.com##[data-spot] -sxyprn.com##[href*="/re/"] -pornhub.com,redtube.com,tube8.com,tube8.es,tube8.fr,xvideos.com,youjizz.com,youporn.com,youporngay.com##[href*="base64"] -pornhub.com,redtube.com,tube8.com,tube8.es,tube8.fr,xvideos.com,youjizz.com,youporn.com,youporngay.com##[href*="data:"] -doseofporn.com,jennylist.xyz##[href="/goto/desire"] -jav.gallery##[href="https://jjgirls.com/sex/GoChaturbate"] -hardcoreluv.com,imageweb.ws,pezporn.com,wildpictures.net##[href="https://nudegirlsoncam.com/"] -perverttube.com##[href="https://usasexcams.com/"] -coomer.su,kemono.su##[href^="//a.adtng.com/get/"] -brazz-girls.com##[href^="/Site/Brazzers/"] -footztube.com##[href^="/tp/out"] -boobieblog.com##[href^="http://join.playboyplus.com/track/"] -thotstars.com##[href^="http://thotmeet.site/"] -androidadult.com,homemoviestube.com##[href^="https://aoflix.com/Home"] -hentai2read.com##[href^="https://camonster.com"] -akiba-online.com##[href^="https://filejoker.net/invite"] -sweethentai.com##[href^="https://gadlt.nl/"] -usasexguide.nl##[href^="https://instable-easher.com/"] -adultcomixxx.com##[href^="https://join.hentaisex3d.com/"] -ryuugames.com,yaoimangaonline.com##[href^="https://l.erodatalabs.com/s/"] > img -clubsarajay.com##[href^="https://landing.milfed.com/"] -javgg.net##[href^="https://onlyfans.com/action/trial/"] -sankakucomplex.com##[href^="https://s.zlink3.com/d.php"] -freebdsmxxx.org##[href^="https://t.me/joinchat/"] -totsantcugat.info##[href^="https://totsantcugat.info/wp-content/"] -porngames.club##[href^="https://www.familyporngames.games/"] -porngames.club##[href^="https://www.porngames.club/friends/out.php"] -koreanstreamer.xyz##[href^="https://www.saltycams.com"] -alotporn.com,amateurporn.me##[id^="list_videos_"] > [class="item"] -youjizz.com,youporngay.com##[img][src*="blob:"] -tophentai.biz##[src*="hentaileads/"] -hentaigasm.com##[src^="https://add2home.files.wordpress.com/"] -analpornpix.com##[src^="https://analpornpix.com/t/153"] -tubedupe.com##[src^="https://tubedupe.com/player/html.php?aid="] -hentai-gamer.com##[src^="https://www.hentai-gamer.com/pics/"] -pornhub.com##[srcset*="bloB:"] -pornhub.com,redtube.com,tube8.com,tube8.es,tube8.fr,youjizz.com,youporn.com,youporngay.com##[style*="base64"] -pornhub.com,redtube.com,tube8.com,tube8.es,tube8.fr,youjizz.com,youporn.com,youporngay.com##[style*="blob:"]:not(video) -xozilla.com##[style="height: 220px !important; overflow: hidden;"] -missav.ai,missav.com,missav.ws,missav123.com,missav789.com,myav.com##[x-show$="video_details'"] > div > .list-disc -pornone.com##a[class^="listing"] -porn.com##a[href*="&ref="] -asspoint.com,babepedia.com,babesandstars.com,blackhaloadultreviews.com,dbnaked.com,freeones.com,gfycatporn.com,javfor.me,mansurfer.com,newpornstarblogs.com,ok.porn,porn-star.com,porn.com,porndoe.com,pornhubpremium.com,pornstarchive.com,rogreviews.com,sexyandfunny.com,shemaletubevideos.com,spankbang.com,str8upgayporn.com,the-new-lagoon.com,tube8.com,wcareviews.com,xxxonxxx.com,youporn.com##a[href*=".com/track/"] -badjojo.com,boysfood.com,definebabe.com,efukt.com,fantasti.cc,girlsofdesire.org,imagepix.org,javfor.me,pornxs.com,shemaletubevideos.com,therealpornwikileaks.com##a[href*=".php"] -blackhaloadultreviews.com,boyfriendtv.com,hentaigasm.com,javjunkies.com,masahub.net,missav.ai,missav.com,missav.ws,missav123.com,missav789.com,myav.com,phun.org,porn-w.org##a[href*="//bit.ly/"] -celeb.gate.cc##a[href*="//goo.gl/"] -taxidrivermovie.com##a[href*="/category/"] -nude.hu##a[href*="/click/"] -hdzog.com,xcafe.com##a[href*="/cs/"] -agedbeauty.net,data18.com,imgdrive.net,pornpics.com,pornpics.de,vipergirls.to##a[href*="/go/"] -pornlib.com##a[href*="/linkout/"] -mansurfer.com##a[href*="/out/"] -avgle.com##a[href*="/redirect"] -4tube.com,fux.com,pornerbros.com,porntube.com##a[href*="/redirect-channel/"] -youpornzz.com##a[href*="/videoads.php?"] -pornhub.com,pornhubpremium.com,pstargif.com,spankbang.com,sxyprn.com,tube8.com,tube8vip.com,xozilla.com,xxxymovies.com##a[href*="?ats="] -adultdvdempire.com##a[href*="?partner_id="][href*="&utm_"] -taxidrivermovie.com##a[href*="mrskin.com/"] -adultfilmdatabase.com,animeidhentai.com,babeforums.org,bos.so,camvideos.tv,camwhores.tv,cutscenes.net,devporn.net,f95zone.to,fritchy.com,gifsauce.com,hentai2read.com,hotpornfile.org,hpjav.com,imagebam.com,imgbox.com,imgtaxi.com,motherless.com,muchohentai.com,myporn.club,oncam.me,pandamovies.pw,planetsuzy.org,porntrex.com,pussyspace.com,sendvid.com,sexgalaxy.net,sextvx.com,sexuria.com,thefappeningblog.com,vintage-erotica-forum.com,vipergirls.to,waxtube.com,xfantazy.com,yeapornpls.com##a[href*="theporndude.com"] -tsmodelstube.com##a[href="https://tsmodelstube.com/a/tangels"] -bravotube.net##a[href^="/cs/"] -sexhd.pics##a[href^="/direct/"] -analpornpix.com##a[href^="/go/"] -drtuber.com##a[href^="/partner/"] -pornhub.com,spankbang.com##a[href^="http://ads.trafficjunky.net/"] -teenmushi.org##a[href^="http://keep2share.cc/code/"] -babesandstars.com##a[href^="http://rabbits.webcam/"] -adultgifworld.com,babeshows.co.uk,boobieblog.com,fapnado.com,iseekgirls.com,the-new-lagoon.com##a[href^="http://refer.ccbill.com/cgi-bin/clicks.cgi?"] -hentai-imperia.org##a[href^="http://www.adult-empire.com/rs.php?"] -xcritic.com##a[href^="http://www.adultdvdempire.com/"][href*="?partner_id="] -hentairules.net##a[href^="http://www.gallery-dump.com"] -f95zone.to,pornhub.com,pornhubpremium.com,redtube.com##a[href^="https://ads.trafficjunky.net/"] -hentai2read.com##a[href^="https://arf.moe/"] -imgsen.com##a[href^="https://besthotgayporn.com/"] -imx.to##a[href^="https://camonster.com/"] -f95zone.to##a[href^="https://candy.ai/"] -hog.tv##a[href^="https://clickaine.com"] -spankbang.com##a[href^="https://deliver.ptgncdn.com/"] -xhaccess.com,xhamster.com,xhamster.desi,xhamster2.com,xhamster3.com,xhamster42.desi##a[href^="https://flirtify.com/"] -hitbdsm.com##a[href^="https://go.rabbitsreviews.com/"] -instantfap.com##a[href^="https://go.redgifcams.com/"] -sexhd.pics##a[href^="https://go.stripchat.com/"] -imgsen.com##a[href^="https://hardcoreincest.net/"] -adultgamesworld.com##a[href^="https://joystick.tv/t/?t="] -yaoimangaonline.com##a[href^="https://l.hyenadata.com/"] -trannygem.com##a[href^="https://landing.transangelsnetwork.com/"] -datingpornstar.com##a[href^="https://mylinks.fan/"] -babepedia.com##a[href^="https://porndoe.com/"] -oncam.me##a[href^="https://pornwhitelist.com/"] -oncam.me##a[href^="https://publishers.clickadilla.com/signup"] -fans-here.com##a[href^="https://satoshidisk.com/"] -forums.socialmediagirls.com##a[href^="https://secure.chewynet.com/"] -smutr.com##a[href^="https://smutr.com/?action=trace"] -pornlizer.com##a[href^="https://tezfiles.com/store/"] -allaboutcd.com##a[href^="https://thebreastformstore.com/"] -thotimg.xyz##a[href^="https://thotsimp.com/"] -oncam.me##a[href^="https://torguard.net/aff.php"] -muchohentai.com##a[href^="https://trynectar.ai/"] -forums.socialmediagirls.com##a[href^="https://viralporn.com/"][href*="?utm_"] -oncam.me##a[href^="https://www.clickadu.com/?rfd="] -f95zone.to##a[href^="https://www.deepswap.ai"] -myreadingmanga.info##a[href^="https://www.dlsite.com/"] -namethatpornad.com,vxxx.com##a[href^="https://www.g2fame.com/"] -myreadingmanga.info,yaoimangaonline.com##a[href^="https://www.gaming-adult.com/"] -gotporn.com##a[href^="https://www.gotporn.com/click.php?id="] -spankbang.com##a[href^="https://www.iyalc.com/"] -imagebam.com,vipergirls.to##a[href^="https://www.mrporngeek.com/"] -pimpandhost.com##a[href^="https://www.myfreecams.com/"][href*="&track="] -couplesinternational.com##a[href^="https://www.redhotpie.com"] -pornhub.com##a[href^="https://www.uviu.com"] -barelist.com,spankingtube.com##a[onclick] -h-flash.com##a[style^="width: 320px; height: 250px"] -povaddict.com##a[title^="FREE "] -aniporn.com,bdsmx.tube##article > section -girlonthenet.com##aside[data-adrotic] -xpassd.co##aside[id^="tn_ads_widget-"] -mysexgames.com##body > div[style*="z-index:"] -xxbrits.com##button[class^="click-fun"] -boobieblog.com,imgadult.com,lolhentai.net,picdollar.com,porngames.com,thenipslip.com,wetpussygames.com,xvideos.name##canvas -redtube.com##div > iframe -motherless.com##div > table[style][border] -publicflashing.me##div.hentry -xxxdl.net##div.in_thumb.thumb -underhentai.net##div[class*="afi-"] -redtube.com##div[class*="display: block; height:"] -twiman.net##div[class*="my-"][class*="px\]"] -xhaccess.com,xhamster.com,xhamster.desi,xhamster2.com,xhamster3.com,xhamster42.desi##div[class*="promoMessageBanner-"] -camsoda.com##div[class^="AdsRight-"] -ovacovid.com##div[class^="Banner-"] -hentaicovid.com##div[class^="banner-"] -xporno.tv##div[class^="block_ads_"] -hpjav.top##div[class^="happy-"] -hentaimama.io##div[class^="in-between-ad"] -pornwhite.com,sleazyneasy.com##div[data-banner] -theyarehuge.com##div[data-nosnippet] -hentai2read.com##div[data-type="leaderboard-top"] -hentaistream.com##div[id^="adx_ad-"] -darknessporn.com,familyporner.com,freepublicporn.com,pisshamster.com,punishworld.com,xanimu.com##div[id^="after-boxes"] -darknessporn.com,familyporner.com,freepublicporn.com,pisshamster.com,punishworld.com,xanimu.com##div[id^="beside-video"] -pornsitetest.com##div[id^="eroti-"] -darknessporn.com,familyporner.com,freepublicporn.com,pisshamster.com,punishworld.com,xanimu.com##div[id^="native-boxes"] -darknessporn.com,familyporner.com,freepublicporn.com,pisshamster.com,punishworld.com,xanimu.com##div[id^="related-boxes-footer"] -pornstarbyface.com##div[id^="sponcored-content-"] -lewdgamer.com##div[id^="spot-"] -hentaiff.com##div[id^="teaser"] -thefetishistas.com##div[id^="thefe-"] -eromanga-show.com,hentai-one.com,hentaipaw.com##div[id^="ts_ad_"] -pornhub.com,youporngay.com##div[onclick*="bp1.com"] -hentaistream.com##div[style$="width:100%;height:768px;overflow:hidden;visibility:hidden;"] -hentai.com##div[style="cursor: pointer;"] -xozilla.xxx##div[style="height: 250px !important; overflow: hidden;"] -porncore.net##div[style="margin:10px auto;height:200px;width:800px;"] -simpcity.su##div[style="text-align:center;margin-bottom:20px;"] -abxxx.com,aniporn.com,missav.ai,missav.com,missav.ws,missav123.com,missav789.com,myav.com##div[style="width: 300px; height: 250px;"] -sexbot.com##div[style="width:300px;height:20px;text-align:center;padding-top:30px;"] -pornpics.network##div[style^="height: 250px;"] -gay0day.com##div[style^="height:250px;"] -ooxxx.com##div[style^="width: 728px; height: 90px;"] -thehentai.net##div[style^="width:300px; height:250px;"] -javtorrent.me##div[style^="width:728px; height: 90px;"] -rateherpussy.com##font[size="1"][face="Verdana"] -javgg.net##iframe.lazyloaded.na -smutty.com##iframe[scrolling="no"] -xcafe.com##iframe[src] -watchteencam.com##iframe[src^="http://watchteencam.com/images/"] -komikindo.info,manga18fx.com,manhwa18.cc,motherless.com##iframe[style] -3movs.com,ggjav.com,tnaflix.com##iframe[width="300"] -avgle.com##img[src*=".php"] -pornhub.com,tube8.com,tube8.es,tube8.fr,xvideos.com,youjizz.com,youporngay.com##img[src*="blob:" i]:not(video) -4tube.com##img[src][style][width] -pornhub.com##img[srcset] -mature.community,milf.community,milf.plus,pornhub.com,sports.sexy##img[width="300"] -sexmummy.com##img[width="468"] -mrjav.net##li[id^="video-interlacing"] -pictoa.com##nav li[style="position: relative;"] -boundhub.com##noindex -pornhd.com##phd-floating-ad -koreanstreamer.xyz##section.korea-widget -porngifs2u.com##section[class*="elementor-hidden-"] -redtube.com##svg -mysexgames.com##table[height="630"] -mysexgames.com##table[height="640"] -motherless.com##table[style*="max-width:"] -exoav.com##td > a[href] -xxxcomics.org##video -tube8.es,tube8.fr,youporngay.com##video[autoplay] -porndoe.com,redtube.com##video[autoplay][src*="blob:" i] -porndoe.com,redtube.com##video[autoplay][src*="data:" i] -! :has() -porn-w.org##.align-items-center.list-row:has(.col:empty) -picsporn.net##.box:has(> .dip-exms) -porngames.com##.contentbox:has(a[href="javascript:void(0);"]) -porngames.com##.contentbox:has(iframe[src^="//"]) -kimochi.info##.gridlove-posts > .layout-simple:has(.gridlove-archive-ad) -javgg.net##.home_iframead:has(> iframe) -tokyomotion.com##.is-gapless > .has-text-centered:has(> div > .adv) -4kporn.xxx,crazyporn.xxx,hoes.tube,love4porn.com##.item:has(> [class*="ads"]) -darknessporn.com,familyporner.com,freepublicporn.com,pisshamster.com,punishworld.com,xanimu.com##.no-gutters > .col-6:has(> #special-block) -kbjfree.com##.relative.w-full:has(> .video-card[target="_blank"]) -pornhub.com##.sectionWrapper:has(> #bottomVideos > .wrapVideoBlock) -hentaicomics.pro##.single-portfolio:has(.xxx-banner) -xasiat.com##.top:has(> [data-zoneid]) -scrolller.com##.vertical-view__column > .vertical-view__item:has(> div[style$="overflow: hidden;"]) -porndoe.com##.video-item:has(a.video-item-link[ng-native-click]) -jav4tv.com##aside:has(.ads_300_250) -youporn.com##aside:has(a.ad-remove) -pornhub.com##div[class="video-wrapper"] > .clear.hd:has(.adsbytrafficjunky) -rule34.paheal.net##section[id$="main"] > .blockbody:has(> div[align="center"] > ins) -!! Advanced element hiding rules -4wank.com#?#.video-holder > center > :-abp-contains(/^Advertisement$/) -crocotube.com#?#.ct-related-videos-title:-abp-contains(Advertisement) -crocotube.com#?#.ct-related-videos-title:-abp-contains(You may also like) -hdpornpics.net#?#.money:-abp-has(.century:-abp-contains(ADS)) -hotmovs.com#?#.block_label--last:-abp-contains(Advertisement) -okxxx1.com#?#.bn-title:-abp-contains(Advertising) -porn-w.org#?#.row:-abp-contains(Promotion Bot) -pornhub.com#?#:-abp-properties(height: 300px; width: 315px;) -pornhub.com,youporn.com#?#:-abp-properties(float: right; margin-top: 30px; width: 50%;) -reddxxx.com#?#.items-center:-abp-contains(/^ad$/) -reddxxx.com#?#[role="gridcell"]:-abp-contains(/^AD$/) -redtube.com,tube8.com,tube8.es,tube8.fr,xvideos.com,youjizz.com,youporn.com,youporngay.com#?#:-abp-properties(*data:image*) -redtube.com,tube8.com,tube8.es,tube8.fr,xvideos.com,youjizz.com,youporn.com,youporngay.com#?#:-abp-properties(base64) -redtube.com,tube8.com,tube8.es,tube8.fr,xvideos.com,youjizz.com,youporn.com,youporngay.com#?#:-abp-properties(data:) -redtube.com,tube8.com,tube8.es,tube8.fr,xvideos.com,youjizz.com,youporn.com,youporngay.com#?#:-abp-properties(image/) -!-----------------------Allowlists to fix broken sites------------------------! -! *** easylist:easylist/easylist_allowlist.txt *** -@@||2mdn.net/instream/html5/ima3.js$script,domain=earthtv.com|techrepublic.com|zdnet.com -@@||4cdn.org/adv/$image,xmlhttprequest,domain=4channel.org -@@||4channel.org/adv/$image,xmlhttprequest,domain=4channel.org -@@||abcnews.com/assets/js/prebid.min.js$~third-party -@@||abcnews.com/assets/player/$script,~third-party -@@||accuweather.com/bundles/prebid.$script -@@||ad.linksynergy.com^$image,domain=extrarebates.com -@@||adap.tv/redir/javascript/vpaid.js -@@||addicted.es^*/ad728-$image,~third-party -@@||adjust.com/adjust-latest.min.js$domain=anchor.fm -@@||adm.fwmrm.net^*/TremorAdRenderer.$object,domain=go.com -@@||adm.fwmrm.net^*/videoadrenderer.$object,domain=cnbc.com|go.com|nbc.com|nbcnews.com -@@||adnxs.com/ast/ast.js$domain=zone.msn.com -@@||ads.adthrive.com/api/$domain=adamtheautomator.com|mediaite.com|packhacker.com|packinsider.com -@@||ads.adthrive.com/builds/core/*/js/adthrive.min.js$domain=adamtheautomator.com|mediaite.com|packhacker.com|packinsider.com -@@||ads.adthrive.com/builds/core/*/prebid.min.js$domain=mediaite.com -@@||ads.adthrive.com/sites/$script,domain=adamtheautomator.com|mediaite.com|packhacker.com|packinsider.com -@@||ads.freewheel.tv/|$media,domain=cnbc.com|fxnetworks.com|my.xfinity.com|nbc.com|nbcsports.com -@@||ads.kbmax.com^$domain=adspipe.com -@@||ads.pubmatic.com/adserver/js/$script,domain=zeebiz.com -@@||ads.pubmatic.com/AdServer/js/pwtSync/$script,subdocument,domain=dnaindia.com|independent.co.uk|wionews.com -@@||ads.roblox.com/v1/sponsored-pages$xmlhttprequest,domain=roblox.com -@@||ads.rogersmedia.com^$subdocument,domain=cbc.ca -@@||ads.rubiconproject.com/prebid/$script,domain=drudgereport.com|everydayhealth.com -@@||ads3.xumo.com^$domain=2vnews.com|redbox.com -@@||adsafeprotected.com/iasPET.$script,domain=independent.co.uk|reuters.com -@@||adsafeprotected.com/vans-adapter-google-ima.js$script,domain=gamingbible.co.uk|ladbible.com|reuters.com -@@||adsales.snidigital.com/*/ads-config.min.js$script -@@||adserver.skiresort-service.com/www/delivery/spcjs.php?$script,domain=skiresort.de|skiresort.fr|skiresort.info|skiresort.it|skiresort.nl -@@||adswizz.com/adswizz/js/SynchroClient*.js$script,third-party,domain=jjazz.net -@@||adswizz.com/sca_newenco/$xmlhttprequest,domain=triplem.com.au -@@||airplaydirect.com/openx/www/images/$image -@@||almayadeen.net/Content/VideoJS/js/videoPlayer/VideoAds.js$script,~third-party -@@||amazon-adsystem.com/aax2/apstag.js$domain=accuweather.com|barstoolsports.com|blastingnews.com|cnn.com|familyhandyman.com|foxbusiness.com|gamingbible.co.uk|history.com|independent.co.uk|inquirer.com|keloland.com|radio.com|rd.com|si.com|sportbible.com|tasteofhome.com|thehealthy.com|time.com|wboy.com|wellgames.com|wkrn.com|wlns.com|wvnstv.com -@@||amazon-adsystem.com/widgets/q?$image,third-party -@@||amazonaws.com/prod.iqdcontroller.iqdigital/cdn_iqdspiegel/live/iqadcontroller.js.gz$domain=spiegel.de -@@||aniview.com/api/$script,domain=gamingbible.co.uk|ladbible.com -@@||aone-soft.com/style/images/ad2.jpg -@@||api.adinplay.com/libs/aiptag/$script -@@||api.adnetmedia.lt/api/$~third-party -@@||apis.kostprice.com/fapi/$script,domain=gadgets.ndtv.com -@@||apmebf.com/ad/$domain=betfair.com -@@||app.clickfunnels.com/assets/lander.js$script,domain=propanefitness.com -@@||app.hubspot.com/api/ads/$~third-party -@@||app.veggly.net/plugins/cordova-plugin-admobpro/www/AdMob.js$script,~third-party -@@||apv-launcher.minute.ly/api/$script -@@||archive.org/BookReader/$image,~third-party,xmlhttprequest -@@||archive.org/services/$image,~third-party,xmlhttprequest -@@||assets.ctfassets.net^$media,domain=ads.spotify.com -@@||assets.strossle.com^*/strossle-widget-sdk.js$script,domain=kaaoszine.fi -@@||at.adtech.redventures.io/lib/api/$xmlhttprequest,domain=gamespot.com|giantbomb.com|metacritic.com -@@||at.adtech.redventures.io/lib/dist/$script,domain=gamespot.com|giantbomb.com|metacritic.com -@@||atlas.playpilot.com/api/v1/ads/browse/$xmlhttprequest,domain=playpilot.com -@@||autotrader.co.uk^*/advert$~third-party -@@||avclub.com^*/adManager.$script,~third-party -@@||bankofamerica.com^*?adx=$~third-party,xmlhttprequest -@@||banmancounselling.com/wp-content/themes/banman/ -@@||banner.yt^$image,domain=socialblade.com -@@||bannersnack.com/banners/$document,subdocument,domain=adventcards.co.uk|charitychristmascards.org|christmascardpacks.co.uk|kingsmead.com|kingsmeadcards.co.uk|nativitycards.co.uk|printedchristmascards.co.uk -@@||basinnow.com/admin/upload/settings/advertise-img.jpg -@@||basinnow.com/upload/settings/advertise-img.jpg -@@||bauersecure.com/dist/js/prebid/$domain=carmagazine.co.uk -@@||bbc.co.uk^*/adverts.js -@@||bbc.gscontxt.net^$script,domain=bbc.com -@@||betterads.org/hubfs/$image,~third-party -@@||bigfishaudio.com/banners/$image,~third-party -@@||bikeportland.org/wp-content/plugins/advanced-ads/public/assets/js/advanced.min.js$script,~third-party -@@||bitcoinbazis.hu/advertise-with-us/$~third-party -@@||blueconic.net/capitolbroadcasting.js$script,domain=wral.com -@@||boatwizard.com/ads_prebid.min.js$script,domain=boats.com -@@||bordeaux.futurecdn.net/bordeaux.js$script,domain=gamesradar.com|tomsguide.com -@@||borneobulletin.com.bn/wp-content/banners/bblogo.jpg$~third-party -@@||brave.com/static-assets/$image,~third-party -@@||britannica.com/mendel-resources/3-52/js/libs/prebid4.$script,~third-party -@@||capitolbroadcasting.blueconic.net^$image,script,xmlhttprequest,domain=wral.com -@@||carandclassic.co.uk/images/free_advert/$image,~third-party -@@||cbsi.com/dist/optanon.js$script,domain=cbsnews.com|zdnet.com -@@||cc.zorores.com/ad/*.vtt$domain=rapid-cloud.co -@@||cdn.adsninja.ca^$domain=xda-developers.com -@@||cdn.advertserve.com^$domain=hutchgo.com|hutchgo.com.cn|hutchgo.com.hk|hutchgo.com.sg|hutchgo.com.tw -@@||cdn.bidder.dev/clients/$script,domain=forces.net -@@||cdn.ex.co^$domain=theautopian.com -@@||cdn.wgchrrammzv.com/prod/ajc/loader.min.js$domain=journal-news.com -@@||chycor.co.uk/cms/advert_search_thumb.php$image,domain=chycor.co.uk -@@||clients.plex.tv/api/v2/ads/$~third-party -@@||cloudfront.net/js/common/invoke.js -@@||commons.wikimedia.org/w/api.php?$~third-party,xmlhttprequest -@@||connatix.com*/connatix.player.$script,domain=ebaumsworld.com|funker530.com|tvinsider.com|washingtonexaminer.com -@@||content.pouet.net/avatars/adx.gif$image,~third-party -@@||crackle.com/vendor/AdManager.js$script,~third-party -@@||cvs.com/webcontent/images/weeklyad/adcontent/$~third-party -@@||dcdirtylaundry.com/cdn-cgi/challenge-platform/$~third-party -@@||delivery-cdn-cf.adswizz.com/adswizz/js/SynchroClient*.js$script,domain=tunein.com -@@||discretemath.org/ads/ -@@||discretemath.org^$image,stylesheet -@@||disqus.com/embed/comments/$subdocument -@@||docs.woopt.com/wgact/$image,~third-party,xmlhttprequest -@@||dodo.ac/np/images/$image,domain=nookipedia.com -@@||doodcdn.co^$domain=dood.la|dood.pm|dood.to|dood.ws -@@||doubleclick.net/ddm/$image,domain=aetv.com|fyi.tv|history.com|mylifetime.com -@@||edmodo.com/ads$~third-party,xmlhttprequest -@@||einthusan.tv/prebid.js$script,~third-party -@@||embed.ex.co^$xmlhttprequest,domain=espncricinfo.com -@@||entitlements.jwplayer.com^$xmlhttprequest,domain=iheart.com -@@||experienceleague.adobe.com^$~third-party -@@||explainxkcd.com/wiki/images/$image,~third-party -@@||ezodn.com/tardisrocinante/lazy_load.js$script,domain=origami-resource-center.com -@@||ezoic.net/detroitchicago/cmb.js$script,domain=gerweck.net -@@||f-droid.org/assets/Ads_$~third-party -@@||facebook.com/ads/profile/$~third-party,xmlhttprequest -@@||faculty.uml.edu/klevasseur/ads/ -@@||faculty.uml.edu^$image,stylesheet -@@||fdyn.pubwise.io^$script,domain=urbanglasgow.co.uk -@@||files.slack.com^$image,~third-party -@@||flying-lines.com/banners/$image,~third-party -@@||forum.miuiturkiye.net/konu/reklam.$~third-party,xmlhttprequest -@@||forums.opera.com/api/topic/$~third-party,xmlhttprequest -@@||franklymedia.com/*/300x150_WBNQ_TEXT.png$image,domain=wbnq.com -@@||fuseplatform.net^*/fuse.js$script,domain=broadsheet.com.au|friendcafe.jp -@@||g.doubleclick.net/gampad/ads$xmlhttprequest,domain=bloomberg.com|chromatographyonline.com|formularywatch.com|journaldequebec.com|managedhealthcareexecutive.com|medicaleconomics.com|physicianspractice.com -@@||g.doubleclick.net/gampad/ads*%20Web%20Player$domain=imasdk.googleapis.com -@@||g.doubleclick.net/gampad/ads?*&prev_scp=kw%3Diqdspiegel%2Cdigtransform%2Ciqadtile4%2$xmlhttprequest,domain=spiegel.de -@@||g.doubleclick.net/gampad/ads?*.crunchyroll.com$xmlhttprequest,domain=imasdk.googleapis.com -@@||g.doubleclick.net/gampad/ads?*RakutenShowtime$xmlhttprequest,domain=imasdk.googleapis.com -@@||g.doubleclick.net/gampad/ads?env=$xmlhttprequest,domain=wunderground.com -@@||g.doubleclick.net/gampad/live/ads?*tver.$xmlhttprequest,domain=imasdk.googleapis.com -@@||g.doubleclick.net/pagead/ads$subdocument,domain=sudokugame.org -@@||g.doubleclick.net/pagead/ads?*&description_url=https%3A%2F%2Fgames.wkb.jp$xmlhttprequest,domain=imasdk.googleapis.com -@@||g2crowd.com/uploads/product/image/$image,domain=g2.com -@@||gbf.wiki/images/$image,~third-party -@@||gitlab.com/api/v4/projects/$~third-party -@@||givingassistant.org/Advertisers/$~third-party -@@||global-uploads.webflow.com/*_dimensions-$image,domain=dimensions.com -@@||gn-web-assets.api.bbc.com/bbcdotcom/assets/$script,domain=bbc.co.uk -@@||go.ezodn.com/tardisrocinante/lazy_load.js?$script,domain=raiderramble.com -@@||go.xlirdr.com/api/models/vast$xmlhttprequest -@@||gocomics.com/assets/ad-dependencies-$script,~third-party -@@||google.com/images/integrations/$image,~third-party -@@||googleadservices.com/pagead/conversion_async.js$script,domain=zubizu.com -@@||googleoptimize.com/optimize.js$script,domain=wallapop.com -@@||gpt-worldwide.com/js/gpt.js$~third-party -@@||grapeshot.co.uk/main/channels.cgi$script,domain=telegraph.co.uk -@@||gstatic.com/ads/external/images/$image,domain=support.google.com -@@||gumtree.co.za/my/ads.html$~third-party -@@||hotstar.com/vs/getad.php$domain=hotstar.com -@@||hp.com/in/*/ads/$script,stylesheet,~third-party -@@||htlbid.com^*/htlbid.js$domain=hodinkee.com -@@||hutchgo.advertserve.com^$domain=hutchgo.com|hutchgo.com.cn|hutchgo.com.hk|hutchgo.com.sg|hutchgo.com.tw -@@||hw-ads.datpiff.com/news/$image,domain=datpiff.com -@@||image.shutterstock.com^$image,domain=icons8.com -@@||improvedigital.com/pbw/headerlift.min.js$domain=games.co.uk|kizi.com|zigiz.com -@@||infotel.ca/images/ads/$image,~third-party -@@||infoworld.com/www/js/ads/gpt_includes.js$~third-party -@@||instagram.com/api/v1/ads/$~third-party,xmlhttprequest -@@||ipinfo.io/static/images/use-cases/adtech.jpg$image,~third-party -@@||island.lk/userfiles/image/danweem/island.gif -@@||itv.com/itv/hserver/*/site=itv/$xmlhttprequest -@@||itv.com/itv/tserver/$~third-party -@@||jokerly.com/Okidak/adSelectorDirect.htm?id=$document,subdocument -@@||jokerly.com/Okidak/vastChecker.htm$document,subdocument -@@||jsdelivr.net^*/videojs.ads.css$domain=irctc.co.in -@@||jwpcdn.com/player/plugins/googima/$script,domain=iheart.com|video.vice.com -@@||kotaku.com/x-kinja-static/assets/new-client/adManager.$~third-party -@@||lastpass.com/ads.php$subdocument,domain=chrome-extension-scheme -@@||lastpass.com/images/ads/$image,~third-party -@@||letocard.fr/wp-content/uploads/$image,~third-party -@@||linkbucks.com/tmpl/$image,stylesheet -@@||live.primis.tech^$script,domain=eurogamer.net|klaq.com|loudwire.com|screencrush.com|vg247.com|xxlmag.com -@@||live.primis.tech^$xmlhttprequest,domain=xxlmag.com -@@||live.streamtheworld.com/partnerIds$domain=iheart.com|player.amperwave.net -@@||lokopromo.com^*/adsimages/$~third-party -@@||looker.com/api/internal/$~third-party -@@||luminalearning.com/affiliate-content/$image,~third-party -@@||makeuseof.com/public/build/images/bg-advert-with-us.$~third-party -@@||manageengine.com/images/logo/$image,~third-party -@@||manageengine.com/products/ad-manager/$~third-party -@@||martinfowler.com/articles/asyncJS.css$stylesheet,~third-party -@@||media.kijiji.ca/api/$image,~third-party -@@||mediaalpha.com/js/serve.js$domain=goseek.com -@@||micro.rubiconproject.com/prebid/dynamic/$script,xmlhttprequest,domain=gamingbible.co.uk|ladbible.com|sportbible.com -@@||moatads.com^$script,domain=imsa.com|nascar.com -@@||motortrader.com.my/advert/$image,~third-party -@@||mtouch.facebook.com/ads/api/preview/$domain=business.facebook.com -@@||nascar.com/wp-content/themes/ndms-2023/assets/js/inc/ads/prebid8.$~third-party -@@||newscgp.com/prod/prebid/nyp/pb.js$domain=nypost.com -@@||nextcloud.com/remote.php/$~third-party,xmlhttprequest -@@||nflcdn.com/static/site/$script,domain=nfl.com -@@||npr.org/sponsorship/targeting/$~third-party,xmlhttprequest -@@||ntv.io/serve/load.js$domain=mcclatchydc.com -@@||optimatic.com/iframe.html$subdocument,domain=pch.com -@@||optimatic.com/redux/optiplayer-$domain=pch.com -@@||optimatic.com/shell.js$domain=pch.com -@@||optout.networkadvertising.org^$document -@@||p.d.1emn.com^$script,domain=hotair.com -@@||pandora.com/images/public/devicead/$image -@@||patreonusercontent.com/*.gif?token-$image,domain=patreon.com -@@||payload.cargocollective.com^$image,~third-party -@@||pbs.twimg.com/ad_img/$image,xmlhttprequest -@@||pepperjamnetwork.com/banners/$image,domain=extrarebates.com -@@||photofunia.com/effects/$image,~third-party -@@||pjtra.com/b/$image,domain=extrarebates.com -@@||player.aniview.com/script/$script,domain=odysee.com|pogo.com -@@||player.avplayer.com^$script,domain=explosm.net|gamingbible.co.uk|justthenews.com|ladbible.com -@@||player.ex.co/player/$script,domain=theautopian.com -@@||player.odycdn.com/api/$xmlhttprequest,domain=odysee.com -@@||playwire.com/bolt/js/zeus/embed.js$script,third-party -@@||pngimg.com/distr/$image,~third-party -@@||pntrac.com/b/$image,domain=extrarebates.com -@@||pntrs.com/b/$image,domain=extrarebates.com -@@||portal.autotrader.co.uk/advert/$~third-party -@@||prebid.adnxs.com^$xmlhttprequest,domain=go.cnn.com -@@||preromanbritain.com/maxymiser/$~third-party -@@||promo.com/embed/$subdocument,third-party -@@||promo.zendesk.com^$xmlhttprequest,domain=promo.com -@@||pub.doubleverify.com/dvtag/$script,domain=time.com -@@||pub.pixels.ai/wrap-independent-no-prebid-lib.js$script,domain=independent.co.uk -@@||radiotimes.com/static/advertising/$script,~third-party -@@||raw.githubusercontent.com^$domain=viewscreen.githubusercontent.com -@@||redventures.io/lib/dist/prod/bidbarrel-$script,domain=cnet.com|techrepublic.com|zdnet.com -@@||renewcanceltv.com/porpoiseant/banger.js$script,~third-party -@@||rubiconproject.com/prebid/dynamic/$script,domain=ask.com|journaldequebec.com -@@||runescape.wiki^$image,~third-party -@@||s.ntv.io/serve/load.js$domain=titantv.com -@@||salfordonline.com/wp-content/plugins/wp_pro_ad_system/$script -@@||schwab.com/scripts/appdynamic/adrum-ext.$script,~third-party -@@||scrippsdigital.com/cms/videojs/$stylesheet,domain=scrippsdigital.com -@@||sdltutorials.com/Data/Ads/AppStateBanner.jpg$~third-party -@@||securenetsystems.net/v5/scripts/ -@@||shaka-player-demo.appspot.com/lib/ads/ad_manager.js$script,~third-party -@@||showcase.codethislab.com/banners/$image,~third-party -@@||shreemaruticourier.com/banners/$~third-party -@@||signin.verizon.com^*/affiliate/$subdocument,xmlhttprequest -@@||somewheresouth.net/banner/banner.php$image -@@||sportsnet.ca/wp-content/plugins/bwp-minify/$domain=sportsnet.ca -@@||standard.co.uk/js/third-party/prebid8.$~third-party -@@||startrek.website/pictrs/image/$xmlhttprequest -@@||stat-rock.com/player/$domain=4shared.com|adplayer.pro -@@||static.doubleclick.net/instream/ad_status.js$script,domain=ignboards.com -@@||static.vrv.co^$media,domain=crunchyroll.com -@@||summitracing.com/global/images/bannerads/ -@@||sundaysportclassifieds.com/ads/$image,~third-party -@@||survey.g.doubleclick.net^$script,domain=sporcle.com -@@||synchrobox.adswizz.com/register2.php$script,domain=player.amperwave.net|tunein.com -@@||tcbk.com/application/files/4316/7521/1922/Q1-23-CD-Promo-Banner-Ad.png^$~third-party -@@||thdstatic.com/experiences/local-ad/$domain=homedepot.com -@@||thepiratebay.org/cdn-cgi/challenge-platform/$~third-party -@@||thetvdb.com/banners/$image,domain=tvtime.com -@@||thisiswaldo.com/static/js/$script,domain=bestiefy.com -@@||townhall.com/resources/dist/js/prebid-pjmedia.js$script,domain=pjmedia.com -@@||tractorshed.com/photoads/upload/$~third-party -@@||tradingview.com/adx/$subdocument,domain=adx.ae -@@||trustprofile.com/banners/$image -@@||ukbride.co.uk/css/*/adverts.css -@@||unpkg.com^$script,domain=vidsrc.stream -@@||upload.wikimedia.org/wikipedia/$image,media -@@||v.fwmrm.net/?$xmlhttprequest -@@||v.fwmrm.net/ad/g/*Nelonen$script -@@||v.fwmrm.net/ad/g/1$domain=uktv.co.uk|vevo.com -@@||v.fwmrm.net/ad/g/1?*mtv_desktop$xmlhttprequest -@@||v.fwmrm.net/ad/g/1?csid=vcbs_cbsnews_desktop_$xmlhttprequest -@@||v.fwmrm.net/ad/p/1?$domain=cc.com|channel5.com|cmt.com|eonline.com|foodnetwork.com|nbcnews.com|ncaa.com|player.theplatform.com|simpsonsworld.com|today.com -@@||v.fwmrm.net/crossdomain.xml$xmlhttprequest -@@||vms-players.minutemediaservices.com^$script,domain=si.com -@@||vms-videos.minutemediaservices.com^$xmlhttprequest,domain=si.com -@@||warpwire.com/AD/ -@@||warpwire.net/AD/ -@@||web-ads.pulse.weatherbug.net/api/ads/targeting/$domain=weatherbug.com -@@||webbtelescope.org/files/live/sites/webb/$image,~third-party -@@||widgets.jobbio.com^*/display.min.js$domain=interestingengineering.com -@@||worldgravity.com^$script,domain=hotstar.com -@@||wrestlinginc.com/wp-content/themes/unified/js/prebid.js$~third-party -@@||www.google.*/search?$domain=google.ae|google.at|google.be|google.bg|google.by|google.ca|google.ch|google.cl|google.co.id|google.co.il|google.co.in|google.co.jp|google.co.ke|google.co.kr|google.co.nz|google.co.th|google.co.uk|google.co.ve|google.co.za|google.com|google.com.ar|google.com.au|google.com.br|google.com.co|google.com.ec|google.com.eg|google.com.hk|google.com.mx|google.com.my|google.com.pe|google.com.ph|google.com.pk|google.com.py|google.com.sa|google.com.sg|google.com.tr|google.com.tw|google.com.ua|google.com.uy|google.com.vn|google.cz|google.de|google.dk|google.dz|google.ee|google.es|google.fi|google.fr|google.gr|google.hr|google.hu|google.ie|google.it|google.lt|google.lv|google.nl|google.no|google.pl|google.pt|google.ro|google.rs|google.ru|google.se|google.sk -@@||www.google.com/ads/preferences/$image,script,subdocument -@@||yaytrade.com^*/chunks/pages/advert/$~third-party -@@||yieldlove.com/v2/yieldlove.js$script,domain=whatismyip.com -@@||yimg.com/rq/darla/*/g-r-min.js$domain=yahoo.com -@@||z.moatads.com^$script,domain=standard.co.uk -@@||zeebiz.com/ads/$image,~third-party -@@||zohopublic.com^*/ADManager_$subdocument,xmlhttprequest,domain=manageengine.com|zohopublic.com -! Webcompat fixes (Avoid any potential filters being applied to non-ad domains) -@@||challenges.cloudflare.com/turnstile/$script -@@||gmail.com^$generichide -@@||google.com/recaptcha/$csp,subdocument -@@||google.com/recaptcha/api.js -@@||google.com/recaptcha/enterprise.js -@@||google.com/recaptcha/enterprise/ -@@||gstatic.com/recaptcha/ -@@||hcaptcha.com/captcha/$script,subdocument -@@||hcaptcha.com^*/api.js -@@||recaptcha.net/recaptcha/$script -@@||search.brave.com/search$xmlhttprequest -@@||ui.ads.microsoft.com^$~third-party -! Webcompat Generichide fixes (Avoid any potential filters being applied to non-ad domains) -@@://10.0.0.$generichide -@@://10.1.1.$generichide -@@://127.0.0.1$generichide -@@://192.168.$generichide -@@://localhost:$generichide -@@||accounts.google.com^$generichide -@@||ads.microsoft.com^$generichide -@@||apple.com^$generichide -@@||bitbucket.org^$generichide -@@||browserbench.org^$generichide -@@||builder.io^$generichide -@@||calendar.google.com^$generichide -@@||cbs.com^$generichide -@@||cdpn.io^$generichide -@@||cloud.google.com^$generichide -@@||codepen.io^$generichide -@@||codesandbox.io^$generichide -@@||contacts.google.com^$generichide -@@||curiositystream.com^$generichide -@@||deezer.com^$generichide -@@||discord.com^$generichide -@@||disneyplus.com^$generichide -@@||docs.google.com^$generichide -@@||drive.google.com^$generichide -@@||dropbox.com^$generichide -@@||facebook.com^$generichide -@@||fastmail.com^$generichide -@@||figma.com^$generichide -@@||gemini.google.com^$generichide -@@||github.com^$generichide -@@||github.io^$generichide -@@||gitlab.com^$generichide -@@||icloud.com^$generichide -@@||instagram.com^$generichide -@@||instapundit.com^$generichide -@@||instawp.xyz^$generichide -@@||jsfiddle.net^$generichide -@@||mail.google.com^$generichide -@@||material.angular.io^$generichide -@@||material.io^$generichide -@@||max.com^$generichide -@@||meet.google.com^$generichide -@@||mui.com^$generichide -@@||music.amazon.$generichide -@@||music.youtube.com^$generichide -@@||myaccount.google.com^$generichide -@@||nebula.tv^$generichide -@@||netflix.com^$generichide -@@||notion.so^$generichide -@@||oisd.nl^$generichide -@@||onedrive.live.com^$generichide -@@||open.spotify.com^$generichide -@@||openai.com^$generichide -@@||pandora.com^$generichide -@@||paramountplus.com^$generichide -@@||peacocktv.com^$generichide -@@||photos.google.com^$generichide -@@||pinterest.com^$generichide -@@||pinterest.de^$generichide -@@||pinterest.es^$generichide -@@||pinterest.fr^$generichide -@@||pinterest.it^$generichide -@@||pinterest.jp^$generichide -@@||pinterest.ph^$generichide -@@||proton.me^$generichide -@@||publicwww.com^$generichide -@@||qobuz.com^$generichide -@@||reddit.com^$generichide -@@||slack.com^$generichide -@@||sourcegraph.com^$generichide -@@||stackblitz.com^$generichide -@@||teams.live.com^$generichide -@@||teams.microsoft.com^$generichide -@@||tidal.com^$generichide -@@||tiktok.com^$generichide -@@||tv.youtube.com^$generichide -@@||twitch.tv^$generichide -@@||web.basemark.com^$generichide -@@||web.telegram.org^$generichide -@@||whatsapp.com^$generichide -@@||wikibooks.org^$generichide -@@||wikidata.org^$generichide -@@||wikinews.org^$generichide -@@||wikipedia.org^$generichide -@@||wikiquote.org^$generichide -@@||wikiversity.org^$generichide -@@||wiktionary.org^$generichide -@@||www.youtube.com^$generichide -@@||x.com^$generichide -! wordpress.org https://wordpress.org/plugins/woocommerce-google-adwords-conversion-tracking-tag/ -@@||ps.w.org^$image,domain=wordpress.org -@@||s.w.org/wp-content/$stylesheet,domain=wordpress.org -@@||wordpress.org/plugins/$domain=wordpress.org -@@||wordpress.org/stats/plugin/$domain=wordpress.org -! Fingerprint checks -@@||fingerprintjs.com^$generichide -@@||schemeflood.com^$generichide -! uBO-CNAME (Specific allowlists) -@@||akinator.mobi.cdn.ezoic.net^$domain=akinator.mobi -@@||banner.customer.kyruus.com^$domain=doctors.bannerhealth.com -@@||hwcdn.net^$script,domain=mp4upload.com -! ezfunnels.com (https://forums.lanik.us/viewtopic.php?f=64&t=44355) -@@||ezsoftwarestorage.com^$image,media,domain=ezfunnels.com -! Memo2 -@@||ads.memo2.nl/banners/$subdocument -! allow vk.com to confirm age. -! https://forums.lanik.us/viewtopic.php?p=131491#p131491 -@@||oauth.vk.com/authorize? -! Downdetector Consent -@@||googletagservices.com/tag/js/gpt.js$domain=allestoringen.be|allestoringen.nl|downdetector.ae|downdetector.ca|downdetector.cl|downdetector.co.nz|downdetector.co.uk|downdetector.co.za|downdetector.com|downdetector.com.ar|downdetector.com.au|downdetector.com.br|downdetector.com.co|downdetector.cz|downdetector.dk|downdetector.ec|downdetector.es|downdetector.fi|downdetector.fr|downdetector.gr|downdetector.hk|downdetector.hr|downdetector.hu|downdetector.id|downdetector.ie|downdetector.in|downdetector.it|downdetector.jp|downdetector.mx|downdetector.my|downdetector.no|downdetector.pe|downdetector.ph|downdetector.pk|downdetector.pl|downdetector.pt|downdetector.ro|downdetector.ru|downdetector.se|downdetector.sg|downdetector.sk|downdetector.tw|downdetector.web.tr|xn--allestrungen-9ib.at|xn--allestrungen-9ib.ch|xn--allestrungen-9ib.de -! Generichide -@@||adblockplus.org^$generichide -@@||aetv.com^$generichide -@@||apkmirror.com^$generichide -@@||brighteon.com^$generichide -@@||cwtv.com^$generichide -@@||destinationamerica.com^$generichide -@@||geekzone.co.nz^$generichide -@@||history.com^$generichide -@@||megaup.net^$generichide -@@||sciencechannel.com^$generichide -@@||smallseotools.com^$generichide -@@||sonichits.com^$generichide -@@||soranews24.com^$generichide -@@||spiegel.de^$generichide -@@||thefreedictionary.com^$generichide -@@||tlc.com^$generichide -@@||yibada.com^$generichide -! Search engine generichide (allowing searching of ad items) -@@||bing.com/search?$generichide -@@||duckduckgo.com/?q=$generichide -@@||www.google.*/search?$generichide -@@||yandex.com/search/?$generichide -! Anti-Adblock (Applicable to Adult, file hosting, streaming/torrent sites) -@@/wp-content/plugins/blockalyzer-adblock-counter/*$image,script,~third-party,domain=~gaytube.com|~pornhub.com|~pornhubthbh7ap3u.onion|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com -@@||adtng.com/get/$subdocument,domain=hanime.tv -@@||artnet.com^$generichide -@@||az.hp.transer.com/content/dam/isetan_mitsukoshi/advertise/$~third-party -@@||az.hpcn.transer-cn.com/content/dam/isetan_mitsukoshi/advertise/$~third-party -@@||cdnqq.net/ad/api/popunder.js$script -@@||centro.co.il^$generichide -@@||coinmarketcap.com/static/addetect/$script,~third-party -@@||dlh.net^$script,subdocument,domain=dlh.net -@@||exponential.com^*/tags.js$domain=yellowbridge.com -@@||games.pch.com^$generichide -@@||maxstream.video^$generichide -@@||receiveasms.com^$generichide -@@||sc2casts.com^$generichide -@@||spanishdict.com^$generichide -@@||stream4free.live^$generichide -@@||up-load.io^$generichide -@@||userload.co/adpopup.js$script -@@||waaw.to/adv/ads/popunder.js$script -@@||yandexcdn.com/ad/api/popunder.js$script -@@||yellowbridge.com^$generichide -@@||yimg.com/dy/ads/native.js$script,domain=animedao.to -! Gladly.io New Tab extension (https://tab.gladly.io/) -! Don't install Gladly extension if you don't like ads. -@@||tab.gladly.io/newtab/|$document,subdocument -!! imasdk.googleapis.com/js/sdkloader/ima3.js -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$domain=247sports.com|api.screen9.com|autokult.pl|bbc.com|blastingnews.com|bloomberg.co.jp|bloomberg.com|bsfuji.tv|cbc.ca|cbsnews.com|cbssports.com|chicagotribune.com|clickorlando.com|cnet.com|crunchyroll.com|delish.com|distro.tv|doubtnut.com|einthusan.tv|embed.comicbook.com|etonline.com|farfeshplus.com|filmweb.pl|game.pointmall.rakuten.net|gamebox.gesoten.com|gamepix.com|games.usatoday.com|gbnews.com|geo.dailymotion.com|givemesport.com|goodmorningamerica.com|goodstream.uno|gospodari.com|howstuffworks.com|humix.com|ignboards.com|iheart.com|insideedition.com|irctc.co.in|klix.ba|ktla.com|lemino.docomo.ne.jp|locipo.jp|maharashtratimes.com|metacritic.com|minigame.aeriagames.jp|missoulian.com|myspace.com|nettavisen.no|paralympic.org|paramountplus.com|player.abacast.net|player.amperwave.net|player.earthtv.com|player.performgroup.com|plex.tv|pointmall.rakuten.co.jp|popculture.com|realmadrid.com|rte.ie|rumble.com|s.yimg.jp|scrippsdigital.com|sonyliv.com|southpark.lat|southparkstudios.com|sportsbull.jp|sportsport.ba|success-games.net|synk-casualgames.com|tbs.co.jp|tdn.com|truvid.com|tubitv.com|tunein.com|tv-asahi.co.jp|tv.rakuten.co.jp|tver.jp|tvp.pl|univtec.com|video.tv-tokyo.co.jp|vlive.tv|watch.nba.com|wbal.com|weather.com|webdunia.com|wellgames.com|worldsurfleague.com|wowbiz.ro|wsj.com|wtk.pl|zdnet.com|zeebiz.com -!! https://adssettings.google.com/anonymous?hl=en -@@||googleads.g.doubleclick.net/ads/preferences/$domain=googleads.g.doubleclick.net -!! imasdk.googleapis.com/js/sdkloader/ima3_dai.js -@@||imasdk.googleapis.com/js/sdkloader/ima3_dai.js$domain=247sports.com|4029tv.com|bet.com|bloomberg.co.jp|bloomberg.com|cbc.ca|cbssports.com|cc.com|embed.comicbook.com|gbnews.com|history.com|kcci.com|kcra.com|ketv.com|kmbc.com|koat.com|koco.com|ksbw.com|mynbc5.com|paramountplus.com|s.yimg.jp|sbs.com.au|tv.rakuten.co.jp|vk.sportsbull.jp|wapt.com|wbaltv.com|wcvb.com|wdsu.com|wesh.com|wgal.com|wisn.com|wjcl.com|wlky.com|wlwt.com|wmtw.com|wmur.com|worldsurfleague.com|wpbf.com|wtae.com|wvtm13.com|wxii12.com|wyff4.com -!! pubads.g.doubleclick.net/ondemand/hls/ -@@||pubads.g.doubleclick.net/ondemand/hls/$domain=history.com -!! ||imasdk.googleapis.com/js/core/bridge -@@||imasdk.googleapis.com/js/core/bridge*.html$subdocument -!! ||imasdk.googleapis.com/pal/sdkloader/pal.js -@@||imasdk.googleapis.com/pal/sdkloader/pal.js$domain=tunein.com -!! imasdk.googleapis.com/js/sdkloader/ima3_debug.js -@@||imasdk.googleapis.com/js/sdkloader/ima3_debug.js$domain=abcnews.go.com|brightcove.net|cbsnews.com|insideedition.com|pch.com -!! https://github.com/uBlockOrigin/uAssets/issues/18541 -!! cbssports.com|newson.us|worldsurfleague.com -@@||pubads.g.doubleclick.net/ssai/ -!! -@@||pagead2.googlesyndication.com/tag/js/gpt.js$script,domain=wunderground.com -!! g.doubleclick.net/tag/js/gpt.js -@@||g.doubleclick.net/tag/js/gpt.js$script,xmlhttprequest,domain=accuweather.com|adamtheautomator.com|bestiefy.com|blastingnews.com|bloomberg.com|chromatographyonline.com|devclass.com|digitaltrends.com|edy.rakuten.co.jp|epaper.timesgroup.com|filmweb.pl|formularywatch.com|games.coolgames.com|gearpatrol.com|journaldequebec.com|managedhealthcareexecutive.com|mediaite.com|medicaleconomics.com|nycgo.com|olx.pl|physicianspractice.com|repretel.com|spiegel.de|standard.co.uk|telsu.fi|theta.tv|weather.com -!! googletagservices.com/tag/js/gpt.js -@@||googletagservices.com/tag/js/gpt.js$domain=chegg.com|chelseafc.com|epaper.timesgroup.com|farfeshplus.com|k2radio.com|koel.com|kowb1290.com|nationalreview.com|nationalworld.com|nbcsports.com|scotsman.com|tv-asahi.co.jp|uefa.com|vimeo.com|vlive.tv|voici.fr|windalert.com -!! g.doubleclick.net/gpt/pubads_impl_ -@@||g.doubleclick.net/gpt/pubads_impl_$domain=accuweather.com|blastingnews.com|bloomberg.com|chelseafc.com|chromatographyonline.com|digitaltrends.com|downdetector.com|edy.rakuten.co.jp|epaper.timesgroup.com|formularywatch.com|game.anymanager.io|games.coolgames.com|managedhealthcareexecutive.com|mediaite.com|medicaleconomics.com|nationalreview.com|nationalworld.com|nbcsports.com|nycgo.com|physicianspractice.com|scotsman.com|telsu.fi|voici.fr|weather.com -!! g.doubleclick.net/pagead/managed/js/gpt/ -@@||g.doubleclick.net/pagead/managed/js/gpt/$script,domain=adamtheautomator.com|allestoringen.be|allestoringen.nl|aussieoutages.com|canadianoutages.com|downdetector.ae|downdetector.ca|downdetector.co.nz|downdetector.co.uk|downdetector.co.za|downdetector.com|downdetector.com.ar|downdetector.com.br|downdetector.dk|downdetector.es|downdetector.fi|downdetector.fr|downdetector.hk|downdetector.ie|downdetector.in|downdetector.it|downdetector.jp|downdetector.mx|downdetector.no|downdetector.pl|downdetector.pt|downdetector.ru|downdetector.se|downdetector.sg|downdetector.tw|downdetector.web.tr|filmweb.pl|ictnews.org|journaldequebec.com|mediaite.com|spiegel.de|thestar.co.uk|xn--allestrungen-9ib.at|xn--allestrungen-9ib.ch|xn--allestrungen-9ib.de|yorkshirepost.co.uk -!! pagead2.googlesyndication.com/pagead/js/adsbygoogle.js -@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$domain=battlecats-db.com|cpu-world.com|game.anymanager.io|games.wkb.jp|html5.gamedistribution.com|knowfacts.info|lacoste.com|megagames.com|megaleech.us|newson.us|real-sports.jp|slideplayer.com|sudokugame.org|tampermonkey.net|teemo.gg|thefreedictionary.com -!! pagead2.googlesyndication.com/pagead/managed/js/*/show_ads_impl_ -@@||pagead2.googlesyndication.com/pagead/managed/js/*/show_ads_impl_$script,domain=battlecats-db.com|game.anymanager.io|games.wkb.jp|sudokugame.org -!! pagead2.googlesyndication.com/pagead/managed/js/adsense/*/slotcar_library_ -@@||pagead2.googlesyndication.com/pagead/managed/js/adsense/*/slotcar_library_$script,domain=game.anymanager.io|sudokugame.org -!! -@@||pagead2.googlesyndication.com/pagead/managed/js/gpt/*/pubads_impl.js?$script,domain=wunderground.com -!! g.doubleclick.net/pagead/ppub_config -@@||g.doubleclick.net/pagead/ppub_config$domain=bloomberg.com|independent.co.uk|repretel.com|telsu.fi|weather.com -! Non-English -@@/banner/ad/*$image,domain=achaloto.com -@@||about.smartnews.com/ja/wp-content/assets/img/advertisers/ad_$~third-party -@@||ad-api-v01.uliza.jp^$script,xmlhttprequest,domain=golfnetwork.co.jp|tv-asahi.co.jp -@@||ad.atown.jp/adserver/$domain=ad.atown.jp -@@||ad.smartmediarep.com/NetInsight/video/smr$domain=programs.sbs.co.kr -@@||adfurikun.jp/adfurikun/images/$~third-party -@@||ads-i.org/images/ads3.jpg$~third-party -@@||ads-twitter.com/uwt.js$domain=factory.pixiv.net -@@||adtraction.com^$image,domain=ebjudande.se -@@||aiasahi.jp/ads/$image,domain=japan.techrepublic.com|japan.zdnet.com -@@||amebame.com/pub/ads/$image,domain=abema.tv|ameba.jp|ameblo.jp -@@||api.friends.ponta.jp/api/$~third-party -@@||arukikata.com/images_ad/$image,~third-party -@@||asahi.com/ads/$image,~third-party -@@||ascii.jp/img/ad/$image,~third-party -@@||assoc-amazon.com/widgets/cm?$subdocument,domain=atcoder.jp -@@||astatic.ccmbg.com^*/prebid$script,domain=linternaute.com -@@||banki.ru/bitrix/*/advertising.block/$stylesheet -@@||bihoku-minpou.co.jp/img/ad_top.jpg$~third-party -@@||bloominc.jp/adtool/$~third-party -@@||book.com.tw/image/getImage?$domain=books.com.tw -@@||c.ad6media.fr/l.js$domain=scan-manga.com -@@||candidate.hr-manager.net/Advertisement/PreviewAdvertisement.aspx$subdocument,~third-party -@@||catchapp.net/ad/img/$~third-party -@@||cdn.jsdelivr.net/npm/*/videojs-contrib-ads.min.js$domain=24ur.com -@@||cinema.pia.co.jp/img/ad/$image,~third-party -@@||clj.valuecommerce.com/*/vcushion.min.js -@@||cloudflare.com^*/videojs-contrib-ads.js$domain=wtk.pl -@@||copilog2.jp/*/webroot/ad_img/$domain=ikkaku.net -@@||core.windows.net^*/annonser/$image,domain=kmauto.no -@@||discordapp.com/banners/$image -@@||doda.jp/brand/ad/img/icon_play.png -@@||doda.jp/cmn_web/img/brand/ad/ad_text_ -@@||doda.jp/cmn_web/img/brand/ad/ad_top_3.mp4 -@@||econcal.forexprostools.com^$domain=bloomberg.com -@@||forexprostools.com^$subdocument,domain=fx-rashinban.com -@@||freeride.se/img/admarket/$~third-party -@@||friends.ponta.jp/app/assets/images/$~third-party -@@||g.doubleclick.net/gampad/ads?$domain=edy.rakuten.co.jp|tv-tokyo.co.jp|voici.fr -@@||gakushuin.ac.jp/ad/common/$~third-party -@@||ganma.jp/view/magazine/viewer/pages/advertisement/googleAdSense.html|$~third-party,xmlhttprequest -@@||getjad.io/library/$script,domain=allocine.fr -@@||go.ezodn.com/beardeddragon/basilisk.js$domain=humix.com -@@||google.com/adsense/search/ads.js$domain=news.biglobe.ne.jp -@@||googleadservices.com/pagead/conversion.js$domain=ncsoft.jp -@@||gunosy.co.jp/img/ad/$image,~third-party -@@||h1g.jp/img/ad/ad_heigu.html$~third-party -@@||hinagiku-u.ed.jp/wp54/wp-content/themes/hinagiku/images/$image,~third-party -@@||ias.global.rakuten.com/adv/$script,domain=rakuten.co.jp -@@||iejima.org/ad-banner/$image,~third-party -@@||ienohikari.net/ad/common/$~third-party -@@||ienohikari.net/ad/img/$~third-party -@@||img.rakudaclub.com/adv/$~third-party -@@||infotop.jp/html/ad/$image,~third-party -@@||jmedj.co.jp/files/$image,~third-party -@@||jobs.bg/front_job_search.php$~third-party -@@||js.assemblyexchange.com/videojs-skip-$domain=worldstar.com -@@||js.assemblyexchange.com/wana.$domain=worldstar.com -@@||kanalfrederikshavn.dk^*/jquery.openx.js? -@@||kincho.co.jp/cm/img/bnr_ad_$image,~third-party -@@||ladsp.com/script-sf/$script,domain=str.toyokeizai.net -@@||live.lequipe.fr/thirdparty/prebid.js$~third-party -@@||lostpod.space/static/streaming-playlists/$domain=videos.john-livingston.fr -@@||mail.bg/mail/index/getads/$xmlhttprequest -@@||microapp.bytedance.com/docs/page-data/$~third-party -@@||minigame.aeriagames.jp/*/ae-tpgs-$~third-party -@@||minigame.aeriagames.jp/css/videoad.css -@@||minyu-net.com/parts/ad/banner/$image,~third-party -@@||mistore.jp/content/dam/isetan_mitsukoshi/advertise/$~third-party -@@||mjhobbymassan.se/r/annonser/$image,~third-party -@@||musictrack.jp/a/ad/banner_member.jpg -@@||mysmth.net/nForum/*/ADAgent_$~third-party -@@||netmile.co.jp/ad/images/$image -@@||nintendo.co.jp/ring/*/adv$~third-party -@@||nizista.com/api/v1/adbanner$~third-party -@@||oishi-kenko.com/kenko/assets/v2/ads/$~third-party -@@||point.rakuten.co.jp/img/crossuse/top_ad/$~third-party -@@||politiken.dk/static/$script -@@||popin.cc/popin_discovery/recommend?$~third-party -@@||przegladpiaseczynski.pl/wp-content/plugins/wppas/$~third-party -@@||r10s.jp/share/themes/ds/js/show_ads_randomly.js$domain=travel.rakuten.co.jp -@@||rakuten-bank.co.jp/rb/ams/img/ad/$~third-party -@@||s.yimg.jp/images/listing/tool/yads/yads-timeline-ex.js$domain=yahoo.co.jp -@@||s0.2mdn.net/ads/studio/Enabler.js$domain=yuukinohana.co.jp -@@||sanyonews.jp/files/image/ad/okachoku.jpg$~third-party -@@||search.spotxchange.com/vmap/*&content_page_url=www.bsfuji.tv$xmlhttprequest,domain=imasdk.googleapis.com -@@||shikoku-np.co.jp/img/ad/$~third-party -@@||site-banner.hange.jp/adshow?$domain=animallabo.hange.jp -@@||smartadserver.com/genericpost$domain=filmweb.pl -@@||so-net.ne.jp/access/hikari/minico/ad/images/$~third-party -@@||stats.g.doubleclick.net/dc.js$script,domain=chintaistyle.jp|gyutoro.com -@@||suntory.co.jp/beer/kinmugi/css2020/ad.css? -@@||suntory.co.jp/beer/kinmugi/img/ad/$image,~third-party -@@||tdn.da-services.ch/libs/prebid8.$script,domain=20min.ch -@@||tenki.jp/storage/static-images/top-ad/ -@@||tpc.googlesyndication.com/archive/$image,subdocument,xmlhttprequest,domain=adstransparency.google.com -@@||tpc.googlesyndication.com/archive/sadbundle/$image,domain=tpc.googlesyndication.com -@@||tpc.googlesyndication.com/pagead/js/$domain=googleads.g.doubleclick.net -@@||tra.scds.pmdstatic.net/advertising-core/$domain=voici.fr -@@||trj.valuecommerce.com/vcushion.js -@@||uze-ads.com/ads/$~third-party -@@||valuecommerce.com^$image,domain=pointtown.com -@@||videosvc.ezoic.com/play?videoID=$domain=humix.com -@@||yads.c.yimg.jp/js/yads-async.js$domain=kobe-np.co.jp|yahoo.co.jp -@@||youchien.net/ad/*/ad/img/$~third-party -@@||youchien.net/css/ad_side.css$~third-party -@@||yuru-mbti.com/static/css/adsense.css$~third-party -! Allowlists to fix broken pages of advertisers -! Google -@@||ads.google.com^$domain=ads.google.com|analytics.google.com -@@||cloud.google.com^$~third-party -@@||developers.google.com^$domain=developers.google.com -@@||support.google.com^$domain=support.google.com -! Healthy Advertising (Spanish) -@@||healthyadvertising.es^$~third-party -! Yahoo -@@||gemini.yahoo.com/advertiser/$domain=gemini.yahoo.com -@@||yimg.com/av/gemini-ui/*/advertiser/$domain=gemini.yahoo.com - -! *** easylist:easylist/easylist_allowlist_dimensions.txt *** -@@||anitasrecipes.com/Content/Images/Recipes/$image,~third-party -@@||arnhemland-safaris.com/images/made/$image,~third-party -@@||banner-hiroba.com/wp-content/uploads/$image,~third-party -@@||cloud.mail.ru^$image,~third-party -@@||crystalmark.info/wp-content/uploads/*-300x250.$image,~third-party -@@||crystalmark.info/wp-content/uploads/sites/$image,~third-party -@@||government-and-constitution.org/images/presidential-seal-300-250.gif$image,~third-party -@@||hiveworkscomics.com/frontboxes/300x250_$image,~third-party -@@||leerolymp.com/_nuxt/300-250.$script,~third-party -@@||leffatykki.com/media/banners/tykkibanneri-728x90.png$image,~third-party -@@||nc-myus.com/images/pub/www/uploads/merchant-logos/$image,~third-party -@@||nihasi.ru/upload/resize_cache/*/300_250_$image,~third-party -@@||przegladpiaseczynski.pl/wp-content/uploads/*-300x250-$image,~third-party -@@||radiosun.fi/wp-content/uploads/*300x250$image,~third-party -@@||redditinc.com/assets/images/site/*_300x250.$image,~third-party -@@||taipit-mebel.ru/upload/resize_cache/$image,~third-party -@@||wavepc.pl/wp-content/*-500x100.png$image,~third-party -@@||yimg.jp/images/news-web/all/images/jsonld_image_300x250.png$domain=news.yahoo.co.jp - -! *** easylist:easylist/easylist_allowlist_popup.txt *** -@@^utm_source=aff^$popup,domain=gamble.co.uk|gokkeninonlinecasino.nl|top5casinosites.co.uk -@@|data:text^$popup,domain=box.com|clker.com|labcorp.com -@@||accounts.google.com^$popup -@@||ad.doubleclick.net/clk*&destinationURL=$popup -@@||ad.doubleclick.net/ddm/$popup,domain=billiger.de|creditcard.com.au|debitcards.com.au|finder.com|finder.com.au|findershopping.com.au|guide-epargne.be|legacy.com|mail.yahoo.com|nytimes.com|spaargids.be|whatphone.com.au -@@||ad.doubleclick.net/ddm/clk/*http$popup -@@||ad.doubleclick.net/ddm/trackclk/*http$popup -@@||ads.doordash.com^$popup -@@||ads.elevateplatform.co.uk^$popup -@@||ads.emarketer.com/redirect.spark?$popup,domain=emarketer.com -@@||ads.finance^$popup -@@||ads.google.com^$popup -@@||ads.kazakh-zerno.net^$popup -@@||ads.listonic.com^$popup -@@||ads.microsoft.com^$popup -@@||ads.midwayusa.com^$popup -@@||ads.pinterest.com^$popup -@@||ads.shopee.*/$popup -@@||ads.snapchat.com^$popup -@@||ads.spotify.com^$popup -@@||ads.taboola.com^$popup -@@||ads.tiktok.com^$popup -@@||ads.twitter.com^$popup -@@||ads.vk.com^$popup -@@||ads.x.com^$popup -@@||adv.asahi.com^$popup -@@||adv.gg^$popup -@@||adv.welaika.com^$popup -@@||biz.yelp.com/ads?$popup -@@||dashboard.mgid.com^$popup -@@||doubleclick.net/clk;$popup,domain=3g.co.uk|4g.co.uk|hotukdeals.com|jobamatic.com|play.google.com|santander.co.uk|techrepublic.com -@@||g.doubleclick.net/aclk?$popup,domain=bodas.com.mx|bodas.net|casamentos.com.br|casamentos.pt|casamiento.com.uy|casamientos.com.ar|mariages.net|matrimonio.com|matrimonio.com.co|matrimonio.com.pe|matrimonios.cl|pianobuyer.com|weddingspot.co.uk|zillow.com -@@||hutchgo.advertserve.com^$popup,domain=hutchgo.com|hutchgo.com.cn|hutchgo.com.hk|hutchgo.com.sg|hutchgo.com.tw -@@||serving-sys.com/Serving/adServer.bs?$popup,domain=spaargids.be -@@||vk.com/ads?$popup,domain=vk.com -@@||www.google.*/search?q=*&oq=*&aqs=chrome.*&sourceid=chrome&$popup,third-party -@@||www.ticketmaster.$popup,domain=adclick.g.doubleclick.net - -! *** easylist:easylist_adult/adult_allowlist.txt *** -@@/api/models?$domain=tik.porn -@@/api/v2/models-online?$domain=tik.porn -@@||exosrv.com/video-slider.js$domain=xfreehd.com -@@||gaynetwork.co.uk/Images/ads/bg/$image,~third-party -@@||spankbang.com^*/prebid-ads.js$domain=spankbang.com -! Anti-Adblock -@@||gaybeeg.info^$generichide -@@||milfzr.com^$generichide -@@||pornbraze.com^$generichide -@@||rule34hentai.net^$generichide -@@||urlgalleries.net^$generichide -@@||xfreehd.com^$generichide - -! *** easylist:easylist_adult/adult_allowlist_popup.txt *** diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/easylist/easyprivacy.txt b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/easylist/easyprivacy.txt deleted file mode 100644 index 563fb08..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/easylist/easyprivacy.txt +++ /dev/null @@ -1,53096 +0,0 @@ -[Adblock Plus 1.1] -! Title: EasyPrivacy -! Expires: 6 days (update frequency) -! Last modified: Mon, 29 Jul 2024 03:58:27 +0000 -! Diff-Path: %diffpath%#easyprivacy -! Diff-Expires: 317 minutes -! *** easylist:template_header.txt *** -! -! Please report any unblocked adverts or problems -! in the forums (https://forums.lanik.us/) -! or via e-mail (easylist@protonmail.com). -! -! Homepage: https://easylist.to/ -! Licence: https://easylist.to/pages/licence.html -! GitHub issues: https://github.com/easylist/easylist/issues -! GitHub pull requests: https://github.com/easylist/easylist/pulls -! -!-----------------General tracking systems-----------------! -! *** easylist:easyprivacy/easyprivacy_general.txt *** -&action=js_stats& -&ev=PageView& -&event=view& -&EventType=DataDealImpression& -&EventType=Impression& -&hitType=pageview& -&http_referer=$script,xmlhttprequest,domain=~biletomat.pl|~facebook.com|~jobscore.com -&refer=http$script -&t=pageview& --adobe-analytics/ --adobeDatalayer_bridge.js --click-tracker. --didomi.js --geoIP.js --inview-tracker. --scroll-tracker.js --track-inview. --tracking-pixel. --universal-analytics/ -.beacon.min.js -.com/_.gif? -.com/clk? -.com/count? -.com/counter? -.com/dc.gif? -.com/g.gif? -.com/log/? -.com/stats.aspx? -.com/track?v= -.content_tracking.js -.de/l.gif? -.eloqua.js -.EventTracking. -.gatracking.js -.gif?Log= -.jp/pv? -.jp/static/js/track.js -.js?id=GTM- -.net/l.gif? -.no/app/aas/a -.php?action=browse& -.php?action_name= -.php?logRefer= -.php?logType= -.php?notrack= -.php?p=stats& -.php?ping= -.php?stats= -.php?tracking= -.sharecounter.$third-party -.skimlinks.js -.stats?action= -.svc/?tracking_id= -.v4.analytics. -/.webscale/rum? -/.well-known/shopify/monorail -/0.gif? -/0c.gif? -/0pixel.php? -/1.gif? -/1pixel.php -/1px.gif? -/1px.php? -/1x1.gif? -/1x1.png? -/2.gif? -/24h-analytics. -/2x2.gif?$image -/3.gif? -/500b-bench.jpg? -/?dm=*&blogid=$script -/?essb_counter_ -/?livehit= -/?log=experiment& -/?log=performance- -/?record&key= -/?sentry_key= -/?sentry_version= -/?swift-performance-tracking -/_/api/v2/analytics/? -/_/lite/performance/* -/__imp_apg__/* -/__rmn.gif? -/__ssobj/core.js -/__ssobj/rum? -/__ssobj/sync?$image -/__sttm.gif? -/__ub.gif? -/__utm.gif -/__utm.js -/__wsm.gif -/_blazor/*$ping -/_ga?send& -/_ga?sponsor_pixel= -/_gz/counter.php? -/_hcms/perf -/_i?type=event& -/_lib/ga.js -/_owa.gif? -/_sess/script.js -/_stat/log/* -/_stat/log_ -/_tracking/* -/_vercel/insights/script.js -/_vercel/speed-insights/script.js -/_visitcount? -/a.gif? -/a/performance_timing/* -/a8c-analytics.js -/aap/stats -/abc.gif? -/acc/acctag.js -/access.php?referrer= -/accessanalyzer/tracker? -/AccessCounter/index.cgi? -/accesstracking/* -/acclog.cgi? -/acecounter/* -/acecounter_ -/acounter.php? -/action/analytics -/activity.gif? -/AD/PageHits. -/adb1.gif? -/add_page_view? -/addEvent?action= -/addLinker.js -/addLinkerEvents-ga.js -/addLinkerEvents-std.js -/addLinkerEvents.js -/addlog/? -/addpageview/* -/adds/counter.js -/adf-tm-base-min.js -/adlogger.php -/adlogger_tracker.php -/adm_tracking.js -/adobe-analytics-$domain=~business.adobe.com -/adobe-analytics.js -/adobe-analytics2.js -/adobe-prd/* -/adobe.visitor- -/adobe/app-measurement. -/adobe/AppMeasurement- -/adobe/logging/* -/adobe/target/* -/adobe/VideoHeartbeat. -/adobe/visitor- -/adobe/VisitorAPI- -/adobeanalytics.js -/adobeAnalytics/* -/adobeanalyticsandtargetoverwrites.min. -/adsct? -/adstat.js -/adstats.php -/adstrack.js -/adtracking.asmx -/adtrk/tr.gif -/advstats.js -/aff_i?offer_id= -/aff_land?referrer -/affiliate-tracker.js -/affiliate:link_visit? -/affiliatetracking.js -/aftrack.asp -/aggbug.aspx? -/ahoy/events -/ahoy/visits -/AIT_Analytics.js -/ajax-hits-counter/increment-hits/index.php -/ajax-link-tracker.js -/ajax-track-page-view/* -/ajax/analytics/* -/ajax/log? -/ajax/stat/* -/ajax_video_counter.php? -/ajaxlog? -/akam/*/pixel_ -/akam/10/* -/akam/11/* -/akam/13/* -/alog.min.js -/amazon_linker.min.js -/amp-access/cta/* -/amp-access/cta? -/amp-access/ping? -/amp-access/set/* -/amp-access/set? -/amp-analytics- -/amp-analytics/* -/amp-call-tracking- -/amp-skimlinks- -/amp-story-auto-analytics- -/amp-tealium? -/amp.gif? -/amp/?rid= -/amp/analytics -/amp/log.json -/amp/pingback? -/amp_pingback/* -/analyse.js -/analysis-logger/* -/analysisTag.js -/analytic/pageview -/analytics-amplitude- -/analytics-async-loader.js -/analytics-client-identification/* -/analytics-collector -/analytics-data-collector.js -/analytics-data-collector.min.js -/analytics-dotcom/* -/analytics-efukt. -/analytics-event-adapter.bundle.min.js -/analytics-event-adapter.js -/analytics-event.js -/analytics-events- -/analytics-facade. -/analytics-gjc-min.js -/analytics-helper.js -/analytics-hit? -/analytics-ingestion/* -/analytics-ingress- -/analytics-js/* -/analytics-library.js -/analytics-minimal-v4.js -/analytics-minimal.js -/analytics-ping.js -/analytics-prod.js -/analytics-reporter/* -/analytics-sdk. -/analytics-secure.js -/analytics-tracker/* -/analytics-tracking.js -/analytics.*/event? -/analytics.*/ping/? -/analytics.*/track -/analytics.analytics/analytics.min.js -/analytics.bundled.js -/analytics.config.js -/analytics.do -/analytics.gif? -/analytics.html? -/analytics.js/v1/* -/analytics.plausible.js -/analytics.prod.$domain=~fifteen.eu -/analytics.sitecatalyst.js -/analytics.v1.js -/analytics/?event= -/analytics/abtest/* -/analytics/adtags? -/analytics/amp/* -/analytics/analytics.js -/analytics/analytics.min.js -/analytics/beacons/* -/analytics/call-tracking.js -/analytics/capture/* -/analytics/click? -/analytics/collect? -/analytics/comscore.js -/analytics/dist/analytics.min.js -/analytics/embed/* -/analytics/event$domain=~app.diagrams.net -/analytics/ga.js -/analytics/google.js -/analytics/layer -/analytics/metric/* -/analytics/pagestats -/analytics/pageview -/analytics/searches? -/analytics/track_event/* -/analytics/tracker.js -/analytics/trackers? -/analytics/visit.jsp -/analytics/visit.php -/analytics/visit? -/analytics?http_referer -/analytics?token= -/analytics_events.js -/analytics_js/client.js -/analytics_prod.js -/analytics_tag.js -/analytics_tracker.js -/analytics_v2.js -/analytics_wbc.min.js -/analytics_www.js -/AnalyticsDataLayer.min. -/AnalyticsEvent.js -/analyticsFooter.js -/analyticsjs.js -/analyticsscript.ashx -/analyticstrack.js -/analyticstracking.js -/anametrix/cas.js -/anclytic-ajax.html -/anclytic.htm -/angular-tag.js -/anonymous_user_guid.gif? -/api-analytics. -/api-insights/log? -/api/0/stats -/api/adplogger/* -/api/async.php?t=user&m=pagehits& -/api/cmp_tracker| -/api/drpStats -/api/event-rfkj/* -/api/ipv4check? -/api/log-visit -/api/metrics/collect -/api/pageactivity -/api/pageview? -/api/pagevisits -/api/ping?$~xmlhttprequest -/api/pixel? -/api/reqAnalytic/* -/api/stat? -/api/track?guid -/api/trk? -/api/v1/activity|$xmlhttprequest -/api/v1/firehose?_ -/api/v1/metrics -/api/v1/stat? -/api/v1/streamtelemetry -/api/v2/collector -/api/v2/jsonlogger -/api/v3/getPageVisits -/api/v3/trackSegmentEvent -/api/video/stats/*$xmlhttprequest -/api_adlog.php? -/api_ip_info.php -/apilog? -/apmrum.min.js -/app-measurement? -/appdynamics/adrum- -/appGoogleTagManager- -/appinsightor.min.js -/AppMeasurement.js -/AppMeasurement.min.js -/AppMeasurement2.js -/AppMeasurement_Module_ActivityMap.min.js -/AppMeasurementCustom.min.js -/aptrk.js -/ard.png? -/aria-web-telemetry- -/art/stats/* -/article/count? -/Article/ViewCount/* -/article_counter.php? -/article_hit.php? -/articleOmnitureTracking.js -/ASPixel.js -/assets-cdonAnalytics.js -/assets/beacons.js -/assets/performance_timing- -/assets/smarttag-$script -/astrack.js -/astracker.js -/astracker/ast.php -/at-composer.js -/at.gif? -/atapixel.js -/atatus.js -/atrk.gif? -/atrk.js -/audience-extraction.js -/audience.gif? -/audience.min.js -/audienceScience.js -/autotrack.carbon.js -/autotrack.custom.js -/autotrack.custom.min.js -/autotrack.js -/autotrack.min.js -/AutoTracker.js -/awin?awc=$image -/awp.log -/awpx_click.js -/awpys.log -/awstats.js -/awstats_misc_tracker -/azion-pulse.js -/aztracker.js -/b.banners.impress. -/b.gif? -/b/s/beacon -/b/ss/*&aqe= -/b/ss/*&events= -/b/ss/*&ndh= -/b/ss/*/JS- -/b/ss?AQB= -/b/stats? -/ba_tracking.js -/baiduStatistics.js -/banalytics.js -/base/es5/bundle.js -/base/es6/bundle.js -/batch.gif? -/batch/action/_: -/baynote.js -/bb-analytics-inline.min.js -/bc/clk? -/bcn.gif? -/bcsensor.js -/bdg.gif? -/beacon.cgi? -/beacon.gif? -/beacon.js -/beacon.min.js -/beacon/affiliates -/beacon/collector/* -/beacon/error? -/beacon/event/* -/beacon/event? -/beacon/init? -/beacon/media? -/beacon/metrics -/beacon/page? -/beacon/perf -/beacon/receive -/beacon/stats -/beacon/timing? -/beacon/track/* -/beacon/user-data -/beacon/v1/batch? -/beacon?cust= -/beacons?data= -/behavior/web/pv? -/benchmarketingsmarttag/get? -/better-analytics/js/loader.php -/bf.gif?ac= -/bi/doop/*$ping -/bineos.min.js -/bing-bat.js -/bingimpression? -/bitrix/spread.php? -/bizo.js -/bk-coretag.js -/BKVTrack.js -/blaize/datalayer -/blank.gif?*% -/blank.gif?*& -/blogcounter.js -/bloomreach.js -/bluekai.js -/bluekai.min.js -/bom/analytics/* -/boomerang-latest.js -/boomerang-latest.min.js -/boomerang.js -/boomerang/beacon -/boomr.js -/boost-sd-analytic.js -/boost_stats.php -/bootstrap/metrics.js -/botd.gif? -/bower_components/fp/fp.js -/bpsma.js -/branchMetrics.js -/brandAnalytics.js -/brightedge.js -/brightspot/analytics/* -/brightTag-min.js -/browserinfo?f.sid= -/bsp-analytics.min. -/bstat.js -/btrack.php? -/bugcounter.php? -/bundle-analytics.js -/bundle.tracking.js -/bundle/analytics. -/bunsen/events/* -/busting/facebook-tracking/* -/busting/google-tracking/* -/bv-analytics.js -/byside_webcare.js -/c.gif? -/c.wrating.com/* -/c2_count.js -/c?siteID=$image,script -/c_track.php? -/cache/analytics.js -/cache_warmer/track/* -/cached-scripts/analytics.js -/caixinlog.js -/call.tracker.js -/callbacks/stats? -/capture_client.js -/CaptureStat.asmx -/cdn-cgi/beacon/* -/cdn-cgi/ping?$image -/cdn-cgi/rum? -/cdn-cgi/zaraz/* -/cdn_cookie_service.html -/cedexis.js -/cedexis.radar.js -/census/RecordHit -/certifica-js14.js -/certifica.js -/cfformprotect/js/cffp.js -/cgi-bin/cnt/* -/cgi-bin/count.cgi? -/cgi-bin/count.pl? -/cgi-bin/count/* -/cgi-bin/count1.cgi? -/cgi-bin/CP/* -/cgi-bin/ctasp-server.cgi? -/cgi-bin/ctn? -/cgi-bin/hits/* -/cgi-bin/ivw-ssl/* -/cgi-bin/ivw/* -/cgi-bin/lcpnp/* -/cgi-bin/online/uos.cgi? -/cgi-bin/refsd? -/cgi-bin/te/in.cgi? -/cgi-bin/user_online/uos.cgi? -/cgi-bin/useronline/* -/cgi-sys/count.cgi?df= -/cgi/bin/trk.js -/cgi/count? -/cgi/stats.pl? -/cgi/trk.js -/chartbeat.js -/chartbeat.min.js -/chcounter/counter.php -/check.php?referrer= -/chicken.gif?*= -/cklink.gif? -/cklog.js -/clear.gif? -/click/impression? -/click?track= -/click_metrics-jquery.js -/click_stats.js -/click_track.js -/click_tracking.js -/clickcount.asp -/clickcount.js -/clickcount.php -/clickctrl.js -/clickdimensions-2.js -/clickheat.js -/clicklog.js -/clicklog4pc.js -/clickm.js -/clickpathmedia.js -/clickscript.js -/clickstats.php -/clickstream.aspx? -/clickstream.js -/clickstream/visit? -/clicktag.js -/ClickTail.js -/clicktale.js -/ClickTrack.js -/clicktrack.min.js -/clicktrack? -/clicktracker.js -/clicktracker.php -/clicktracking.js -/clicky.js -/client-metrics/?target -/client_pathlog.asp? -/clientele/reports/* -/clientlib-analytics-core. -/clientstat? -/cls/check.php?$image -/cls_report? -/cmanalytics.min.js -/cms.gif? -/cms/stats/* -/cmslog.dll? -/cn-track? -/cnstats.js -/cnstats/cntg.php -/cnt-combined.php? -/cnt.aspx? -/cnt.cgi? -/cnt.js -/cnt/cnt.php? -/cnt/start.php? -/cnt_js.php? -/cnvtr.js -/cocoon-master/lib/analytics/access. -/codesters-analytics. -/CofinaHits.js -/cohesion-latest.min.js -/coinhive.min.js -/coinimp-cache/* -/collect.gif? -/collect.php?tid= -/collect/?dp= -/collect/kasupport -/collect/kf? -/collect/pageview? -/collect/pv? -/collect/sdk?$domain=~iugu.com -/collect/stats? -/collect/view? -/collect/view_count? -/collect?appName -/collect?callback= -/collect?d= -/collect?data= -/collect?eid= -/collect?event= -/collect?iid= -/collect?k= -/collect?r= -/collect?tid= -/collect?type= -/collect?v= -/collect_data.php? -/collect_stat.js -/collector/hit? -/collector/pageview -/collector/v1/event -/collector?report= -/collectsysteminfo? -/com.snowplowanalytics.snowplow/* -/com_joomlawatch/img.php -/common/analytics.js -/common/ga.js -/common/tracker.js -/complianz/v1/track$xmlhttprequest -/comscore-min.js -/comscore? -/comscore_beacon/* -/comscore_pageview -/confiant.js -/configuration-stat.js -/contentiq.js -/conversion_async.js -/convertro.js -/cookie.gif? -/cookie_ga.js -/cookieAnalytics.js -/cookieId.htm -/cookies/render? -/coopcommerce-pixel.js -/coradiant.js -/core-tracking.js -/coretracking.php? -/count.cfm? -/count.do? -/count.exe? -/count.fcg? -/count.fcgi? -/count.fgi? -/count.gif? -/count.php? -/count.png? -/count/count.cgi? -/count?pid= -/count_js.php -/counter-js.php -/Counter.ashx? -/counter.asp? -/counter.aspx? -/counter.cgi? -/counter.js.php -/counter.php?width= -/counter.pl? -/counter/acnt.php? -/counter/collect? -/counter/stat.php -/counter/views/* -/counter1.gif? -/counter2.gif? -/counter5.min.js -/counter?action= -/counter?id= -/counter_1.php -/counter_2.php? -/counter_3.php -/counter_access.php -/countertab.js -/countinj.cgi? -/countly.js -/countly.min.js -/countpixel.asp -/countstat.php? -/countus.php -/create-lead.js -/CreateAnalytics.js -/CreateCookieSSO_ -/criteo.$domain=~criteo.blotout.io|~criteo.github.io|~criteo.investorroom.com -/criteoRTA.js -/crypta.js -/csi?v=*&action= -/csi?v=2&s= -/csi?v=3&s= -/csp_204? -/csp_log? -/cta-loaded.js -/ctr_tracking.php? -/custom-analytics.js -/CustomTrackingScript.js -/cv/conversion.js -/cv_pixel.js -/cwTRACK.js -/cx-tracking.js -/cx_tracking.js -/cxense-candy.js -/cxense-entitlement.js -/cxense/cx.js -/cxf-tracking@ -/d.gif? -/data_collect.js -/datacollectionapi-client/index.js -/dataunlocker-prod.js -/dataunlocker.js -/datawrapper.gif? -/dcjs/prod/* -/dcs.gif? -/dcs_tag.js -/default/pAnalytics -/detm-container-ftr.js -/detm-container-hdr.js -/DG/DEFAULT/rest/* -/dg_measurement_protocol.js -/dh-analytics-prod/* -/diffuser.js -/digital-data-enrichment.min.js -/discourse-fingerprint_ -/disp_cnt.php -/dispatch.fcgi? -/divolte.js -/dl-web-pixel.js -/dla_tracker.js -/dlpageping? -/dm.gif? -/dmp/pixel.js -/dmu2panalytics/ajax_call.php? -/doctracking.js -/dolWebAnalytics.js -/dom-event-tracker.min.js -/domcount.nsf/WebCounter? -/dot.asp? -/dot.gif? -/dow_analytics.js -/dpistat/updater.php -/drwebstat.js -/dspixel.js -/dtm_cm.js -/dtrack.js -/duel-analytics.js -/dwanalytics- -/dwanalytics.js -/dynamic.ziftsolutions.com/* -/DynamicAnalytics.js -/dynamicyield/* -/dynaTraceMonitor? -/e.gif? -/e_stat?g_id= -/eatms.js -/ebonetag.js -/ecanalytics.js -/ecap.min.js -/ecblank.gif? -/ecg-js-ga-tracking/index. -/ecom/status.jsp? -/edAnalyticsWrapper.js -/edata.js -/edmonds.js -/efxanalytics.js -/egcs/v2/collect -/elastic-apm-rum.umd.min.js -/eloqua.js -/elqcfg.js -/elqcfg.min.js -/elqfcs.js -/elqidg.js -/elqimg.js -/elqscr.js -/elt.gif? -/eluminate? -/email/track/*$image -/email/tracking? -/email_opened_tracking_pixel? -/EmailOpenTrackLog.aspx?$image -/EmbedAsyncLogger.js -/emos2.js -/emstrack.js -/emtj_tracker.js -/emtj_tracker.min.js -/endpoint/stats.php? -/EndpointTracker/allendpoints? -/Engagement/TrackEventAsync -/ent_counter? -/entry_stats? -/err/js/?url= -/error/js/log? -/estat.js -/estatistica.js -/eta/events? -/eta/guid? -/eumcollector/beacons/* -/eva-analytics.min.js -/event-log? -/event-tracking.js -/event-tracking/*$domain=~github.com -/event.cgi? -/event.gif? -/event.php?campaign= -/event/pageview? -/event/track? -/event/tracking -/event/trigger? -/event/visit? -/event?event_id= -/event?eventType= -/event?s=$ping -/event_log/* -/event_logger -/event_logging/* -/eventLog.ajax -/eventlog.js -/eventLogServlet? -/eventproxy/track -/events-collector. -/events-tracker/* -/events.gif? -/events/analytics/* -/events/capture? -/events/counter? -/Events/Impression? -/events/page-viewed -/events/pixelEvent -/events/track/* -/events/tracking -/events/view-form-open -/events/view? -/events?data= -/events?rpId= -/eventsBeacon? -/eventtracker.js -/eventtracking- -/eventtracking. -/eventtracking/* -/evercookie.js -/evercookie/swfobject-2.2.min.js -/evergage.js -/evergage.min.js -/evt.gif? -/exactag.js -/exittracker.js -/expcount/additional.php -/extendedanalytics.js -/external-tracking.min.js -/ezais/analytics? -/ezytrack.js -/f.gif? -/facebook/pixel.js -/facebook_fbevents.js -/facebook_pixel_3_1_2.js -/facebookpixel.js -/facebookproductad/views/js/pixel. -/faciliti-tag.min.js -/fairfax_tracking.js -/fb-pixel-dsgvo/* -/fb-pixel-tracking.js -/fb-tracking.js -/fb_pixel_page_view -/fbanalytics.js -/fbcounter/counter.cgi -/fbevents.js -/fbevents.min.js -/fbpix-events- -/fbpixel.js -/fe_logger? -/figanalytics-short-ttl.js -/fingerprint.js -/fingerprint.min.js -/fingerprint2.js -/fingerprint2.min.js -/fingerprint3.js -/fingerprint3.min.js -/firebase-performance-compat.js -/firebase-performance-standalone.js -/firestats/js/fs.js.php -/firm_tracking.js -/fkounter/counter.js -/fkounter5/counter.js -/flipptag.js -/flowplayer.drive-analytics.min.js -/flushimpressions? -/flv_tracking. -/flying-analytics/* -/footer-tracking.js -/footerpixel.gif? -/foresee-trigger.js -/fp-3.3.6.min.js -/fp/check.js -/fp/clear.png -/fp/clear1.png -/fp/clear2.png -/fp/clear3.png -/fp/es.js -/fp/HP?session_id -/fp/ls_fp. -/fp/tags.js -/fp/top_fp. -/fp2.compressed.js -/fp2.min.js$domain=~spweb.auction.co.kr|~spweb.gmarket.co.kr -/fp3.min.js -/fp_204? -/fpc/cookie_js.php -/fpcookie? -/fpcount.exe -/fprnt.min.js -/fps/check.php -/fptrk.min.js -/fpv2.js -/freecgi/count.cgi? -/friendbuy.min.js -/frontend-gtag.js -/frontend-gtag.min.js -/frontend-metrics^ -/frontend-sentry- -/fsrscripts/triggerParams.js -/fusion/lucid/data/* -/g_track.php? -/ga-events.js -/ga-links.js -/ga-lite.js -/ga-lite.min.js -/ga-local.js -/ga-multidomain.js -/ga-script.js -/ga-scroll-events.js -/ga-se-async.js -/ga-targets.js -/ga-track-code.js -/ga-track-external.js -/ga-track.js -/ga-track.min.js -/ga-tracker.js -/ga-tracking- -/ga-tracking.js -/ga-tracking.min.js -/ga.gif? -/ga.js?grid -/ga.jsp?$image -/ga.php?$image -/ga/yap.js -/ga1.js -/ga2.js -/ga_anonym.js -/ga_cookie_track -/ga_event_tracking.js -/ga_events.js -/ga_footer.js -/ga_header.js -/ga_helper.js -/ga_keyword2.js -/ga_loader.js -/ga_local.js -/ga_no_cookie.php -/ga_setup.js -/ga_social.js -/ga_tracker.js -/ga_tracking.js -/ga_tracklinks.js -/gaaddons- -/gaaddons.js -/gaaddons_univ.js -/gaAnalytics.js -/gaclicktracking-universal.js -/gaclicktracking.js -/gaCustom.js -/gaEvents.js -/gaEventTracking.js -/gaFunction? -/gainit.js -/gajs/analytics.js -/ganalytics.js -/gapro.js -/gascript.js -/gasocialtracking.js -/gaStatistics.js -/gatag.js -/gatag_v2.js -/gaTags.js -/gatc.js -/gatrack.js -/gatrack.min.js -/gaTracker.js -/gatracking.js -/gb-tracker-client-3.min.js -/gc?refurl= -/gcount.pl? -/gd_tracker_events.js -/gemius.3.15.js -/gemius.js -/gen204/* -/gen204? -/geo.php? -/geoAnalysis.js -/geocc.js -/geocompteur.php -/geoip/detect? -/geoip? -/geoip_cc -/geoLocationData/v1/* -/geov2.js -/get_geoip? -/get_site_data?requestUUID= -/getbglog.js -/getclicky.js -/getintent.js -/getlog.gif -/getstats.js.php -/gigyaGAIntegration.js -/gingeranalytics.min.js -/GlanceCobrowseLoader_ -/GlancePresenceVisitor_ -/global-analytics.js -/global/analytics/* -/global/ga.js -/global/tracker.js -/global_analytics.js -/global_analytics/s_code.js -/global_tracking.js -/goAnalytics.js -/google-nielsen-analytics.js -/google/analytics.js -/google_analitycs.js -/google_analytics3_v2.js -/google_analytics4.js -/google_tag.data_layer.js -/google_tag.script.js -/google_tag/* -/google_tracker.js -/googleana.js -/googleAnal.js -/GoogleAnalystics.js -/GoogleAnalyticActionLib.js -/googleAnalytics1.js -/googleAnalytics4.js -/GoogleAnalytics?utmac= -/googleAnalyticsDataLayer.v1.0.min.js -/GoogleAnalyticsEvents.js -/GoogleAnalyticsModule.min.js -/GoogleAnalyticsPlus/distilled.FirstTouch.js -/googleAnalyticsTracking.js -/googleEventTracking.js -/googletag.js -/googletagmanageranalytics.js -/googletrack.js -/googleTracker.js -/googleTracking.js -/grumi-ip.js -/gs-analytics-init.js -/gs-analytics.js -/gs.gif? -/gtag.js -/gtag.min.js -/GTag/general_tracker.js -/gtag/js? -/gtagv4.js -/gtm-data-layer-$script -/gtm-listeners.js -/gtm-suite.js -/gtm.js -/gtm.min.js -/gtm/gtm- -/gtmTracking.js -/gv-analytics/riveted.js -/h.gif? -/hc/activity -/header-pixels.min.js -/HeatmapSessionRecording/configs.php -/HeatmapSessionRecording/tracker.min.js -/hg?hc=&hb=*&vjs= -/hgct?hc=&hb=*&vjs= -/hints.netflame.cc/* -/histats.js -/hit-counter. -/Hit.ashx? -/hit.asp? -/Hit.aspx? -/hit.c? -/hit.php? -/hit.t? -/hit.xiti? -/hit/?r= -/hit/tracker -/hit2.php -/hit?aff_id=$xmlhttprequest -/hit?time= -/hit_count? -/hit_counter -/hit_img.cfm? -/hitbox.js -/hitCount.js -/hitCount.php -/hitcount/* -/hitcount? -/HitCounter. -/HitCounter/* -/hitlog.php? -/Hits/collect/* -/hits/logger? -/hitslink.js -/hittrack.cgi? -/HitTracker/* -/HitTracking. -/hitv4.php -/hlog.asp -/hmapxy.js -/hnpprivacy-min.js -/hockeystack.min.js -/homeCounter.php -/honeybadger.js -/honeybadger.min.js -/host-analyticsjs-local/cache/local-ga.js -/hs_track.js -/hsc/trk/* -/htdocs/js/admiral/init.js -/hubspot-ga-tracking.js -/i.gif? -/i.php?i= -/i.png?id= -/i2a.js -/i2yesCounter.js -/i?e=pv&url= -/i?siteid= -/i?stm= -/ia-sentry.min.js -/ib_pvcounter.php -/ibeat.min.js -/icf-analytics.js -/id?d_visid_ -/if/services/tdg?hs= -/IIQUniversalID.min.js -/image.ng/* -/iMAWebCookie.js -/img?eid= -/imgcount.cgi? -/imgcount.php? -/imgevent? -/imp.gif? -/imp.php? -/imp2.js? -/imp?imgid= -/imp_check.php -/imp_cnt.gif? -/imp_img.php? -/impr.gif? -/impresion/zona/* -/impress.php? -/impression.ashx -/impression.gif? -/impression.js? -/impression.php? -/impression.pl? -/impression.track? -/impression/inline? -/impression/track? -/impressions? -/ImpressionsEvent.js -/in.getclicky.com/* -/in.gif?url= -/in.php?referer= -/inboundAnalytics.min.js -/include/js/ga-set.js -/increment_page_counter.jsp -/index.track? -/indextools.js -/inline-pixel.js -/inpl.measure.jssc -/insales_counter.js? -/InsightTrk/guuidSkeleton.do? -/InsightTrk/tracker.do? -/insitemetrics/uRMJ/ujutilv2sll.js -/instantpage.js -/instart.js -/intake/v2/rum.js -/interaction/beacon -/intercept/intercept.js -/IOL.Analytics.Tracking.min.js -/IPbeacon.min.js -/ipdvdc.min.js -/ips-invite.iperceptions.com/* -/iterable/track/views/* -/itgdtracksdk.js -/itmdp_code.js -/ivw/SP/*$image,script -/j.gif? -/jgs_portal_log_bildschirm.php? -/joomla-visites.php -/jquery-gatracker.js -/jquery.analytics.js -/jquery.audiencetarget.js -/jquery.browser-fingerprint- -/jquery.gatracker.js -/jquery.google-analytics.js -/jquery.iframetracker- -/jquery.trackstar.js -/js-sdk-event.min.js -/js/_analytics.js -/js/analitics.js -/js/count.js. -/js/counter.js? -/js/dart.js -/js/hbx.js -/js/logger? -/js/quantcast- -/js_ibeat_ext.cms -/js_log_error.js -/js_logger.php -/js_tracker.js -/js_tracker.min.js -/js_tracking? -/jscounter.js -/jscounter.php -/jscripts/analytics.js -/jserrLog? -/jslogger.php?ref= -/json/stats? -/json/tracking/* -/json?mbox= -/json?referer= -/jsonp_geoip? -/jsstat.cgi? -/jstats.php -/jump/?jl= -/jump/clk1.php -/kaiseki/script.php -/kaiseki/track.php? -/kaizentrack/resources/scripts/script.js -/kameleoon-iframe.html -/kameleoon.js -/kameleoon.min.js -/kameleoon/script.js -/keen-tracker.min.js -/keen-tracking- -/keen-tracking.js -/keen-tracking.min.js -/keen.min.js -/KenticoActivityLogger/Logger.js -/keypress.js$script -/keywee.js -/kissmetrics.js -/klaviyo_analytics.js -/koko-analytics-collect.php -/koko-analytics-pro/assets/dist/js/script.js -/koko-analytics/assets/dist/js/*script.js -/kontera.js -/krux-sass-helper.js -/krux.js -/LandingPageHitLog.aspx? -/lasso-ga.js -/lead-tracking.min.js -/leadgen/ga.js -/leadtag.js -/leage.google.tracker.js -/lhnhelpouttab-current.min.js -/li.lms-analytics/insight.min.js -/lib/analytics.js -/library/svy/broker.js -/libs/tracker.js -/liferay-analytics-api.js -/liferay-analytics-processor.js -/lightspeed_tracker.js -/link_track.js -/linkinformer.js -/linkpulse.js -/linktrack.js -/linktracker.js -/linktracking.js -/livecounter.php?wid= -/livestats.js -/livezilla/server.php?request=track& -/ljcounter/?d= -/load_analytics.php -/loader/counter.js -/localga.js -/locotrack.js -/log-nt/* -/log-reporter.js -/log-view.js -/log.aspx? -/log.cfm? -/log.gif? -/log.jsp? -/log.php?*http -/log.php?id -/log.php?referrer= -/log/?pixel= -/log/analytics -/log/browser/event -/log/client/messages -/log/collect/* -/log/counter? -/log/debug? -/log/error? -/log/event? -/log/exposed? -/log/impression/* -/log/init? -/log/jserr.php -/log/log-event- -/log/log.php? -/log/logs? -/log/metrics? -/log/page-view -/log/pageview -/log/report/* -/log/sentry/* -/log/server? -/log/track/* -/log/views/* -/log/web? -/log2.php? -/log204? -/Log?act=$image -/log?action= -/log?count= -/log?data= -/log?documentUrl= -/Log?entry= -/log?event= -/log?format= -/log?id= -/log?kc= -/log?method= -/log?ref= -/log?sLog= -/log?tag= -/log?track_ -/log?uuid= -/log_agent.php -/log_amp_item_set? -/log_beacon.js -/log_e.php?id= -/log_h.jsp -/log_stats.php? -/log_view.php -/LogAction? -/logactions.gif? -/logaholictracker.php -/logAjaxErr_h.jsp -/LogAmpHit? -/loganalyticsevent? -/logclick.js -/logcollect.js -/logcount.php? -/logcounter.aspx -/logdata/et/ua -/logEvent? -/logExecutionStats? -/logger.ashx? -/logger.dll/* -/logger/?referer= -/logging/ClientEvent -/logging/log.do -/logging/logjs -/logging/pageView -/logging/pixel? -/logging/React-UHP? -/logging/v1/log| -/LoggingAgent? -/loggingService.js -/loggly.tracker- -/loggly.tracker. -/LogImpression? -/logImpressions? -/logjs.php -/LogPage.aspx? -/LogPageRequest? -/logPerf? -/logpv.aspx? -/LogRecorder.php -/logreferrer.php? -/logs/report_js_error -/logstat.js -/logstats.php -/logview.js -/logview?referrer= -/logview_new.js -/logviewedpage? -/ls.gif? -/lunametrics- -/m.gif? -/madAnalytics.js -/magento-storefront-event-collector@ -/magento/page-visit? -/magento2.js -/magpie.js -/marfeelanalytics.js -/marketing-analytics.js -/martypixel? -/matomo-tracking.js -/matomo.js$domain=~github.com -/matomo.php -/matomo/*$domain=~github.com|~hub.docker.com|~matomo.org|~wordpress.org -/mcookie.aspx -/mcount.cgi? -/measure/pixel/* -/measure/visit/* -/medialaanUniversalTracker.js -/mediametrie.js -/mediateGA.js -/megacounter.php -/mendelstats.js -/metatraffic/track.asp? -/metric/?mid= -/metric/?wid= -/metrica/sp.js -/metricool.js -/metrics-backend/* -/metrics/bambuser.min.js -/metrics/event? -/metrics/ga.js -/metrics/init? -/metrics/metrics$domain=~docs.datadoghq.com|~github.com|~source.dot.net|~spatineo.com -/metrics/onload -/metrics/ping? -/metrics/rum -/metrics/statsd/* -/metrics/survey/* -/metrics/track/* -/metrics/v1/frontend/* -/metrics/vanity/? -/metrika/tag.js -/mi/insite/* -/microsoft.cognitiveservices.speech.sdk.bundle.js -/min/gtm/* -/minescripts.js -/mint/?js -/mint/?record -/mintstats/?js -/mistat-data/onetrack/onetrack.js -/mixpanel-init.js -/mixpanel.$domain=~mixpanel.com -/mlb-ml-analytics.min.js -/mlopen_track.html -/mmclient.js -/mmcore.js -/mms.*/pv? -/mms/get_loaders? -/mn-collector.php -/mnppixellibrary.min.js -/mnt/imp? -/moat/yield.js -/moksa.js -/monetate.js -/mongoose.fp.js -/monitor/v1/log -/monitor?rtype= -/monitor_analytic.js -/monitus.js -/monsido.js -/mormont.js -/mpel/mpel.js -/mpixel.js -/mpulse.js -/mpulse.min.js -/ms-widgets/tracking-cookies/* -/ms.analytics-web-3.min.js -/mtc.js -/mtiFontTrackingCode.js -/mtracking.gif? -/mtvi_reporting.js -/mwTag.js -/mystats2.px? -/myTracking.js -/naLogImpressions^ -/natero_analytics.min.js -/nativendo.js -/navbar-analytics.js -/naytev.min.js -/ncj-pixel.js -/neilson.js -/neoworx_tracker.php -/netmining.js -/netresults.js -/neustar.beacon.js -/new-client/trackers. -/new-relic.js -/new-relic.min.js -/newlog.php? -/newrelic-browser.js -/newrelic-browser.min.js -/newrelic.js -/newrelic.min.js -/nielsen.htm -/nielsen.js -/NitroCookies.js -/njs.gif? -/nlogger.js -/nLoggerJB_ -/nlRUM.js -/nm/itracking? -/NNAnalyticsWPSites.js -/no-impression.gif? -/np?log= -/npm/perfops-rom -/nr-spa-1216.min.js -/ntpagetag.gif -/ntpagetag.js -/ntrack.asp? -/null.gif? -/o.gif? -/o_code.js -/o_tealium.js -/oa-tracking? -/oas_analytics.js -/obPixelFrame/* -/observations/capture? -/obtp.js -/ocount.php -/ocounter.php -/odoscope.js -/om.gif? -/omni-tracking.min.js -/omniture/uuid.js -/omniture? -/omniture_tracking.js -/omniunih.js -/one-plugin-analytics-comscore/* -/onedot.php? -/onestat.js -/onetag/* -/onl/track.php? -/onlinecount.php -/oo/*/l.js -/oo/*/lsync.js -/oo/cl*.js?rd= -/opdc.js -/ope-adalliance.js -/open/log/* -/openpixel.gif? -/openpixel.js -/opentag- -/opentag/* -/opinionlab.js -/optiextension.dll?$script -/optimizelyjs/* -/ot_e404.gif? -/OtAutoBlock.js -/ouibounce.min.js -/outbrain.js -/outbrainAd. -/outLoging.js -/outLoging2.js -/owa.Analytics.m.js -/owa.tracker-combined-min.js -/oxAnalytics.js -/p.gif? -/page-addviews? -/page-analytics.js -/page-events/trackclick/* -/page-view.gif? -/page/load? -/page/page_view -/page/unload? -/page_analytics.js -/page_counter.js -/page_perf_log? -/PageCount.php? -/pageCounter.adp? -/pagedot.gif? -/PageHit.ashx -/pagelogger/connector.php? -/pagestat? -/pagestats.ashx -/PageStats.asp -/PageStats.js -/pagetag.gif? -/pageTag? -/PageTrack.js -/pagetrack.php? -/PageTracker.js -/PageTracker? -/pageTracking.js -/pageview.ashx -/pageview.js -/pageview; -/pageview?client= -/pageview?key= -/pageview?pageId= -/pageview?pageviewId -/pageview?t= -/pageview?user_guid= -/pageviews.gif? -/pageviews.php?type= -/pageviews?token= -/parsely.js -/particles/analytics.js -/partner-analytics/* -/partner/transparent_pixel-$image -/partnermetrics.js -/pbasitetracker.min.js -/pcount.asp -/pdp.gif? -/peach-collector.min.js -/pepperjam.js -/perf-beacon- -/perf-vitals. -/perf-vitals_ -/perfmatters/js/analytics.js -/perfmetrics.js -/performance-metrics.js -/performance.fcgi? -/performance/metrics -/performanceMetrics? -/perimeterx/px. -/permutiveIdGenerator.js -/ph-tracking-1.2.js -/phenomtrack.min.js -/PhoenixGoogleAnalytics.min.js -/php-stats.js -/php-stats.php? -/php-stats.phpjs.php? -/php-stats.recjs.php? -/phpmyvisites.js -/piano-analytics.js -/piNctTracking.js -/ping.gif? -/ping/?url= -/ping/pageload? -/ping/show? -/ping?h= -/ping?referrer= -/ping?rid= -/ping?spacedesc -/ping?utm_ -/ping_g.jsp? -/ping_hotclick.js -/pingAudience? -/pingd? -/pinger.cgi? -/pingServerAction? -/pinterest-pixels.js -/piwik-$domain=~github.com|~matomo.org|~piwik.org|~piwik.pro|~piwikpro.de -/piwik.$image,script,domain=~matomo.org|~piwik.org|~piwik.pro|~piwikpro.de -/piwik/*$domain=~github.com|~matomo.org|~piwik.org|~piwik.pro -/piwik1. -/piwik2. -/piwikapi.js -/piwikTracker.js -/pix-ddc-fp.min.js -/pix.fcg? -/pix.gif? -/pixall.min.js -/pixel-caffeine/build/frontend.js -/pixel-manager.js? -/pixel-tracker.js -/pixel-tracking. -/pixel.*/track/* -/pixel.cgi? -/pixel.fingerprint. -/pixel.gif? -/pixel.track -/pixel/email/*$image -/pixel/nvrwe? -/pixel/sbs? -/pixel/view? -/pixel/visit? -/pixel2.gif? -/pixel?tag= -/pixel_identifier.js -/pixel_iframe.php -/pixel_tracking.js -/pixel_tracking? -/pixel_V2.js -/pixelcounter.$domain=~pixelcounter.co.uk|~pixelcounter.com|~pixelcounter.dev|~pixelcounter.org|~pixelcounters.co.uk|~pixelcounters.uk -/pixeljs/* -/pixelNew.js -/pixelpropagate.js -/pixels.jsp? -/pixels/track? -/pixeltag.js -/pixeltrack.php -/pixeltrack.pl -/pixeltracker.bundle.js -/pixeltracker.js -/PixelTracking.js -/pixeltracking/sdk-worker.js -/pixelyoursite/dist/scripts/public.js -/pixy.gif? -/planetstat.php -/plausible.js$domain=~plausible.io -/plausible.outbound-links.js$domain=~plausible.io -/player-test-impression? -/player/stats.php? -/plog?id -/plow.lite.js -/plugins/catman/* -/plugins/civic-science/js/pixel.js -/plugins/duracelltomi-google-tag-manager/* -/plugins/exactmetrics- -/plugins/nimiq/*$script -/plugins/nsmg-tracking/* -/plugins/pageviews-counter/* -/plugins/pup-comscore/* -/plugins/stat-dfp/* -/plugins/status.gif? -/plugins/userinfo.gif? -/plugins/vdz-google-analytics/* -/plugins/visitors-traffic- -/plugins/wordfence/visitor.php? -/plugins/wp-vgwort/* -/pmc-cxense.js -/pointeur.gif? -/pomegranate.js -/pongAudienceLS? -/postcounter.php? -/postlog? -/postview.gif? -/pp/micro.tag.min.js -/pphlogger.js -/pphlogger.php -/ppms.js -/pr.php? -/prebid.pro.js -/preparecookies?callback=$domain=~mirapodo.de|~mytoys.de|~yomonda.de -/prepixel? -/presslabs.js$script,~third-party -/prime-email-metrics/*$image -/printpixel.js -/printtracker.js -/prnx_track.js -/probance_tracker-min.js -/probance_tracker.js -/prod/ncg/ncg.js -/prod/ping? -/production/analytics.min.js -/promo/impression? -/propagate_cookie.php -/pt.gif? -/pt?type=pv& -/ptrack.js -/pub/as?_ri_=$image -/pub/imp? -/pubble.stats.min.js -/pubcid.min.js -/public/analytics.js -/public/statsd -/public/visit/record -/public/visitor.json? -/public/visitor/create? -/publisher:getClientId?key= -/publishertag.js -/pubstats.$domain=~pubstats.dev -/pubtag.js -/pulsario.js -/push-analytics.js -/pushlog.min.js -/pushlog.php -/pv.gif? -/pv/?aid= -/pv2.gif? -/pv?place= -/pv?token= -/pv_count.php -/pv_web.gif -/pvcount.js -/pvcount.php -/pvcounter.cgi -/pvcounter.js -/PvCountUp.action -/pvevents.gif? -/pvlog.js -/pvmax.js -/pvnoju.js -/px.gif? -/px.js?ch=$script -/px/*/blank.gif? -/px/client/main.min.js -/px?t= -/px_trans.gif -/pxf.gif? -/pxl.cgi? -/pxl.gif? -/pxl.png? -/pxlctl.gif -/pxrc.php -/pxre.php -/pxtrack.js -/qapcore.js -/qlitics.js -/qtracker-v3-min.js -/quant.js -/quantcast.js -/Quantcast/cmp_v2.js -/QuotaService.RecordEvent? -/r.gif? -/r.rnc? -/r/collect? -/radar/trace? -/RadioAnalytics.js -/rainbow/master-js -/RcAnalyticsEvents.js -/rcAnalyticsLib.js -/readReceipt/notify/?img=$image -/readthedocs-analytics.js -/realtimeapi/impression? -/realytics-1.2.min.js -/realytics.js -/recommendtrack? -/record-impressions? -/record-stats? -/record.do? -/RecordAnalytic? -/RecordClick.js -/RecordHit? -/referadd? -/referer/visitor/* -/referral-tracking.js -/referral-tracking.min.js -/referral_tracking.js -/referrer.js -/referrer.php?*http -/referrer_invisible.js -/referrer_tracking.js -/reftracker.js -/renderTimingPixel. -/report_visit.php -/reporting/metrics -/ResonateAnalytics.min.js -/resource?zones= -/rest/analytics/* -/resxclsa.js -/resxclsx.js -/retarget_pixel.php -/retargeting-pixels.php -/revinit.js -/rgea.min.js -/risk_fp_log? -/riveted.min.js -/rivraddon.js -/rkrt_tracker-viajs.php -/rm-gtm-google-analytics-for-wordpress/js/gtm-player.js -/rm.gif? -/rmntracking.js -/rnb/events -/rntracking.js -/roi_tracker.js -/roi_tracker.min.js -/roiengine.js -/roitrack.cgi -/roitrack.js -/roitrack.php -/roitracker2.js -/rollbar.js -/rollbar.min.js -/rook.tracking.min.js -/rot_in.php -/roverclk/* -/roverimp/* -/roversync/? -/rpc.gif?ac= -/rpc/log/* -/rpc/log? -/rpc/preccount? -/rpFingerprint? -/rr/t?step= -/rrweb-record-pack.js -/rrweb-record.min.js -/rt_tag.js -/rt_tag.ofs.js -/rt_track.js -/rt_track_event.js -/rtac/gif? -/rtd.js -/rtkbeacon.gif? -/rtoaster.js -/rtracker.min.js -/rtracker/ofs.rtt.js -/rudder-analytics.js -/rudder-analytics.min.js -/rum-collector/* -/rum-telemetry/* -/rum-track? -/rum.gif? -/rum.min.js -/rum/events -/run/perf -/ruxitagentjs_ -/rwtag.gif? -/rwtag.js -/s-pcjs.php -/s.gif? -/s/vestigo/measure -/s_code_global_context.js -/s_trans.gif? -/sa.gif? -/safelinkconverter.js -/salog.js -/SAPOWebAnalytics/* -/satismeter.js -/scmetrics.*/b/ss/* -/screencount?vcid= -/scribd_events? -/script.pageview-props.js -/script.tagged-events.outbound-links.js -/script.tagged-events.pageview-props.js -/script/pixel.js -/scriptAnalytics.js -/scripts.kissmetrics.com/* -/scripts/clickjs.php -/scripts/hbx.js -/scripts/statistics/* -/scripts/track_visit.php? -/scripts/xiti/* -/scroll-analytics- -/scroll-track.js -/scroll-tracker.js -/SdaAnalytics.js -/sdc.js -/sdc1.js -/sdc2.js -/sdctag1.js -/sdctag2.js -/sdcTrackingCode.js -/sdk/impressions -/search-cookie.aspx?$image -/securetracker.js -/seed.gif? -/segment/api/* -/segment/js/* -/segmentify.js -/segmentio.js -/sendLogs?cid -/sensor.modern.ncl.min.js -/sensor/statistic? -/sensorsdata- -/sensorsdata.$domain=~sensorsdata.cn -/sentry-browser.min.js -/sentry-logger.js -/sentry/bundle.min.js -/seo.taCo.min.js -/seo/pageStat/* -/seostats.php -/seotracking-v3.js -/server.php?request=track&output= -/server/detect.php? -/service/track? -/services/pixel.html? -/servlet/Cookie? -/session-tracker/tracking- -/session/preparecookies?$domain=~mirapodo.de|~mytoys.de|~yomonda.de -/session/referer -/session/update-beacon -/sessioncam.js -/sessioncam.min.$script -/sessioncam.recorder.js -/SessionHit.aspx? -/set-cookie.gif? -/set_cookie.php? -/set_optimizely_cookie.js -/set_tracking.js -/sfCounter/* -/sfdc/networktracking.js -/sgtracker.js -/shared/sentry/* -/sherlock.gif? -/shinystat.cgi -/shopify-boomerang- -/shopify-event.gif? -/shopify/track.js -/shopify_stats.js -/shopifycloud/shopify/assets/shop_events_listener-$script -/showcounter.js -/showcounter.php -/showhits.php? -/shreddit/perfMetrics -/silveregg/js/cookie_lib.js -/simple_reach.js -/simtracker.min.js -/site_statistics.js -/site_stats.js -/site_stats/* -/site_tracking.js -/sitecatalist.js -/sitecatalyst.js -/sitecatalyst/tracking. -/sitecrm.js -/sitecrm2.js -/SiteSearchAnalytics.js -/sitestat.js -/sitestats.gif? -/sitetrek.js -/skype-analytics.js -/sluurpy_track.js -/smart-pixel.min.js -/smartpixel-1.js -/smartpixel.$domain=~smartpixel.com|~smartpixel.tv -/smartTag.bundle.js -/smarttag/smarttag- -/smetrics.*/b/ss/* -/smetrics.*/id? -/smg_tracking/js/onthe.io.js -/smmch-mine.js -/smmch-own.js -/snowman.gif?p= -/snowplow-tracker.tatest.js -/snowplow.js -/snowplow/*$script -/snowplow_$script -/social_tracking.js -/socialTracking.js -/socialtracking.min.js -/softclick.js -/solarcode.js -/somni.js -/somtag/loader/* -/somtag/logs/* -/sophus.js -/sophus3/logging.js -/sophus3_logging.js -/sp-2.0.0.min.js -/sp_analytics.js -/sp_tracker.js -/spacer.gif? -/splunk-logging-v2.js -/spresso.sdk.tracking.web.js -/spymonitor.js -/sr.gif? -/sranalytics.js -/srp.gif? -/ssl-intgr-net/* -/SSOCore/update? -/sst8.js -/sstat_plugin.js -/standalone-analytics- -/stat-adobe-analytics.js -/stat-dfp.js -/stat.gif? -/stat.htm?$domain=~192.168.0.1|~192.168.1.1 -/stat.js? -/stat/count -/stat/event/* -/stat/event? -/stat/fe? -/stat/rt/js? -/stat2.aspx? -/stat2.js -/stat?event= -/stat?sid= -/stat?SiteID= -/stat?track= -/stat_js.asp? -/stat_page.php -/stat_vue.php? -/stataffs/track.php? -/statblog/pws.php? -/StatCms/ViewCount? -/statcollector. -/statcollector/* -/statcount. -/statcounter-$~image -/statcounter.asp -/statcounter.js -/statcountex/count.asp? -/statistic/pixel? -/statistics.js?$third-party -/statistics/pixel/* -/statistics/visit?id= -/StatRecorder.asp? -/stats-collect -/stats-js.cgi? -/stats-listener.js -/stats-tracking.js -/stats.*/event -/stats.*/hits/* -/stats.*/tracker. -/stats.asp?id -/stats.cgi$image -/stats.gif? -/stats.php?*http -/stats.wp.com/* -/stats/?ref= -/stats/?rt= -/stats/api/collect -/stats/api/event -/stats/article? -/stats/bezoek_count.php -/stats/collect/* -/stats/collect? -/stats/collector.js -/stats/event.js? -/stats/events$xmlhttprequest -/stats/footer.js -/stats/ga.js -/stats/impression -/stats/log.pl -/stats/Logger? -/stats/lookup? -/stats/mark? -/stats/page-view -/stats/page_view_ -/stats/pageview -/stats/ping? -/stats/pv.php? -/stats/record.php? -/stats/record/* -/stats/search-log -/stats/transp.bmp -/stats/v2/visit? -/stats/visitors -/stats/welcome.php? -/stats?aid= -/stats?blog_ -/stats?callback= -/stats?ev= -/stats?event= -/stats?object -/stats?referer= -/stats?style$~xmlhttprequest -/stats_img.png? -/stats_js.asp -/stats_tracker.js -/statsadvance.js -/statscollector.min.gz.js -/StatsCollector/* -/statscounter/* -/statscript.js -/statsd_proxy -/StatSNA.js -/StatsPage.php -/StatsPixel? -/StatsService.RecordStats? -/statstracker. -/statstracker/* -/statstracker? -/statsupdater.aspx -/statsVisitesAnnonces? -/stattag.js -/stattracker- -/status/impression? -/storeAdvImpression.jsp -/storefront.google-analytics-4.min.js -/stp.gif? -/stracking.js -/sTrackStats.js -/strak.php?t= -/stream/log.html? -/streamsense.min.js -/strpixel.png? -/stt/track.js -/stwc-counter/code.js -/stwc/code.js -/submission/pageview -/supercookie.asp -/supercookie.js -/svs.gif? -/sw/analytics.js -/swa_t.gif? -/swatag.js -/swell-ct-ad-data -/swell-ct-pv^ -/swlapi/stats| -/symplr-analytics- -/sync.gif?partner_ -/sync?visitor_id= -/synd.aspx -/szm_mclient.js -/t.gif? -/t/event.js? -/t/event? -/t?referer= -/t?tcid= -/taboola-header.js -/taboola.js -/taboola/loader.js -/taboolaHead.js -/taevents-c.js -/tag/tag.jsp? -/tag?tags= -/taganalyticscnil.js -/tagAnalyticscnil.php -/tagCNIL.js -/tagcommander/prd/* -/tagmanager/event? -/tagmanager/pptm.js -/tags.js?org_id= -/tailtarget.js -/talpa-analytics-pro/* -/tatari-shopify/tracker-snippet-latest.min.js -/tc_analytics.js -/tc_analytics.min.js -/tc_imp.gif? -/tccl.min.js -/tck/gif/* -/teal-comscore- -/teal-gcianalytics- -/TeaLeaf.js -/tealeaf.min.js -/TeaLeafCfg.js -/TealeafSDK.js -/TealeafSDKConfig.js -/tealeaftarget? -/tealium-external/utag.js -/tealium-utag-set.js -/tealiumAnalytics.js -/tealiumTagsData.js -/tenant.min.js -/thermostat.js -/thixel.js -/tiara/tracker/* -/ticimax/analytics.js -/tide_stat.js -/tilda-stat-1.0.min.js -/timingcg.min.js -/tjp_beacon.js -/tjx-tracking-data.js -/tking/ajax_track_stats? -/tncms/tracking.js -/token?referer= -/tongji.js -/toplytics.js -/TouchClarity.js -/touchclarity/logging.js -/tr.gif? -/tr/lp/intg.js -/tr/pageview/* -/trace-Update.php? -/trace/link/*$image -/trace/mail/*$image -/trace/record? -/trace?sessionid= -/traces.php? -/track-event.js -/track-focus.min.js -/track-imp? -/track-internal-links.js -/track-pixel. -/track-the-click-public.js -/track-visit? -/track.ashx?*=http -/track.gif?data= -/track.png? -/track.srv. -/track.v2.js -/track/?*&event= -/track/?data= -/track/aggregate? -/track/batch? -/Track/Capture.aspx? -/track/client-event/* -/track/client-events -/track/cm? -/track/component/* -/track/event/* -/track/hit.gif -/track/identity? -/track/imp? -/track/impression/* -/track/impression? -/track/pageview? -/track/pageviews/* -/track/pixel.php -/track/pixel/* -/track/site/* -/track/statistic/* -/track/svbaff01/* -/track/visitors/? -/track/visits/? -/track?*&event= -/track?_event= -/track?cb= -/track?data= -/track?event= -/track?event_id= -/track?eventKey= -/track?events= -/track?name= -/track?page_view -/track?pid= -/track?referer= -/track?referrer= -/track_click? -/track_event. -/track_framework_metrics? -/track_general_stat.php -/track_js/? -/track_page_view? -/track_pageview? -/track_pixel? -/track_proxy? -/track_stat? -/track_video.php?id= -/track_visit.js -/track_visit? -/track_visitor? -/trackBatchEvents? -/TrackClick. -/trackClickEvent.js -/trackconversion? -/tracker.ga. -/tracker.gif? -/tracker/?key= -/tracker/event? -/tracker/imp? -/tracker_async.js -/trackerPageAnalytics.js -/trackEvent.js -/trackga.js -/trackga.min.js -/tracking-analytics-events.js -/tracking-cookie.js -/tracking-events.js -/tracking-links.js -/tracking.asmx/AddTrack? -/tracking.jsp?sid= -/tracking/airdog -/tracking/common.html -/tracking/cookies? -/tracking/digitaldata.js -/tracking/events/* -/tracking/events? -/tracking/freewheel/* -/tracking/impression -/tracking/ipify -/tracking/jitney/* -/tracking/log.php? -/tracking/log? -/tracking/networktrackingservlet -/tracking/open? -/tracking/referrer? -/tracking/thirdpartytag.js -/tracking/trackpageview -/tracking/universalJSRequest.php -/tracking/user_sync_widget? -/tracking/views/* -/tracking202/static/landing.php -/Tracking?id= -/tracking?referrer -/Tracking?t= -/tracking?vs= -/tracking_id_ -/tracking_pixel -/tracking_unitary/* -/trackingCode- -/trackingCode.js -/trackingcookies. -/trackingDTM.js -/trackingEventsBlocks/* -/trackingFooter.js -/trackingGA.js -/TrackingHandler.js -/trackingheader.js -/trackingImpression/* -/trackingp.gif -/trackingpixel.php -/TrackingPixel/* -/trackingTools. -/trackingVtm.js -/trackIt.js -/trackit.php? -/trackit.pl? -/trackjs.$domain=~trackjs.com -/tracklib.min.js -/trackmerchant.js -/trackmvisit? -/trackopen.cgi? -/trackPage.js? -/trackpagecover? -/trackpageview.js -/trackpageview.php -/trackPageView/* -/TrackPageview? -/trackpixel? -/trackpush.min.js -/trackpxl? -/TrackShopAnalytics.aspx? -/trackstats? -/trackTimings.gif? -/trackui.min.js -/TrackView/*$xmlhttprequest -/TrackViews/* -/trackVisit/* -/trackvisit? -/TrackVisitors/* -/TrackWebPage? -/trade/in.php?*&ref= -/traffic-source-cookie.min.js -/traffic/status.gif? -/traffic_record.php? -/TrafficCookie.js -/traffictrade/* -/trafic.js -/trans_pixel.asp -/transparent1x1.gif -/transparent1x1.png -/transparent_pixel.gif -/transparent_pixel.png -/transpix.gif -/travel-pixel-js/* -/trbo.js -/trck/eclick/* -/trck/etms/* -/trckUtil.min.js -/trendmd.min.js -/trigger-visit-event -/triggertag.js -/trk.*/impression/* -/trk.*/open?$image -/trk.gif? -/trk.php? -/trk/api/* -/trk2.*/open?$image -/trk?t=$image -/trkga.js -/trovit-analytics.js -/truehits.php? -/tw-track.js -/twiga.js -/tynt.js -/u.gif? -/ucount.php? -/uds/stats? -/uecomscore_cmp_event_mundo.js -/uem-ep.js -/uisprime/track -/umami.js -/umg-analytics.min.js -/umg-analytics/umgaal.min.js -/umt.gif? -/unbxdAnalytics.js -/UniqueUserVisit? -/updatestats.js -/urchin.gif? -/urchin.html? -/urchin.js -/user-context?referrer= -/userdata_n? -/userfingerprinttoken/*$xmlhttprequest -/userfly.js -/users/track? -/UserTraceCookie? -/usertrack.aspx? -/usertracking.js -/utag.loader.js -/utag.sync.js -/utag_data.js -/utm-tracking.js -/utm.gif? -/utm_cookie.js -/utm_cookie.min.js -/utrack.js? -/utrack? -/utracker.js -/uutils.fcg? -/v.gif? -/v1/adn/visit| -/v1/pixel.js -/v1/pixel? -/v1/stats/track -/v1/tracker.js -/v1/viewport_events -/v2/pv-data? -/v4/analytics/*$~xmlhttprequest -/v4/metrics -/v60.js -/valnet-header. -/valnetinccom-adapter.js -/vanillaanalytics/js/vendors/js.cookie.js -/vastlog.txt? -/vecapture.js -/vendor/analytics.js -/vendor/analytics/* -/vendor/cedexis/* -/vestigo/v1/measure -/vglnk.js -/video-ga.js -/video.counters. -/video/tracking.js -/video_count.php? -/videoanalytic/* -/videojs-analytics.js -/videojs.ga.js -/videojs.ga.min.js -/videojs.ga.videocloud.js -/videotracking.js -/vidtrack.js -/view-tracking/*$image -/view.gif? -/view_stats.js.php -/ViewCounter/* -/viewerimpressions? -/views_tracking/* -/viewtracking.aspx? -/viewTracking.min.js -/visistat.js -/visit-tag? -/visit-tracker.js -/visit.gif? -/visit/log.js? -/visit/record.gif? -/visit/record? -/visit_log.js -/visitcounter.do -/visitcounter.js -/visitinfo.js -/VisitLog.asmx -/visitor-params.js -/Visitor.aspx? -/visitor.gif?ts= -/visitor.js?key= -/visitor.min.js -/visitor_id.jsp -/visitor_info.js -/visitor_info? -/VisitorAPI.js -/visitorCookie.js -/visitorcountry.svc/* -/VisitorIdentification.js -/visitors/screencount? -/visitortrack? -/visitortracker.pl? -/visits/pixel? -/visits?aff_ -/VisitSite.js -/VisitTracking? -/visscore.tag.min.js -/vissense.js -/visualrevenue.js -/vjslog? -/vli-platform/adb-analytics@ -/vs-track.js -/vs.gif? -/vsl/imp? -/vstat.php -/vtrack.aspx -/vtrack.php? -/vtrack?vid= -/vwFiles/analytics/* -/w.gif? -/wa.gif? -/wa_tracker.js -/wcount.php? -/web-analytics.js -/web-api/log/* -/web-data-ingress? -/web-pixel-shopify-app-pixel@ -/web-pixel-shopify-custom-pixel@ -/web-vitals. -/web/push? -/web_analytics/* -/web_answertip.js -/Web_JS_Stats.js -/web_traffic_capture.js -/WebAnalytics.$domain=~webanalytics.italia.it -/webAnalytics/* -/webcounter/* -/webdig.js -/webdig_test.js -/weblog.js? -/weblog.php? -/webmnr.min.js -/webmonitor/collect/badjs.json -/webmr.js -/webstat.js -/WebStat2.asmx -/webstatistics.php? -/webstats.js -/webstats.php -/webstats/track.php? -/webstats_counter/* -/webtag.js -/webtrack.js -/webtracker.dll -/webtracking/*$~document,~subdocument,domain=~wwwapps.ups.com -/webtraffic.js -/webtraxs.js -/webtrekk_mediaTracking.min.js -/webtrends.js -/webtrends.min.js -/webxmr.js -/wf-beacon- -/whisper?event= -/white_pixel.gif? -/wildfire/i/CIMP.gif? -/wix-engage-visitors- -/wlexpert_tracker.js -/wmxtracker.js -/woocommerce-google-adwords-conversion-tracking-tag/* -/woopra.js -/wp-coin-hive-util.js -/wp-coin-hive.js -/wp-content/plugins/confection/bridge.php -/wp-content/plugins/pageviews/pageviews.min.js -/wp-content/plugins/woocommerce-google-analytics-integration/* -/wp-content/plugins/wp-click-track/js/ajax.js -/wp-content/plugins/wp-clickmap/clickmap.js -/wp-content/tracker.js -/wp-js/analytics.js -/wp-json/iawp/* -/wp-monero-miner-class.js -/wp-monero-miner-util.min.js -/wp-monero-miner.js -/wp-monero-miner.min.js -/wp-sentry-browser.min.js -/wp-slimstat.js -/wp-slimstat.min.js -/wp-statistics-tracker.min.js -/wp-statistics/assets/js/tracker.js -/wp-statistics/v2/hit? -/wp-stats-manager/js/wsm_new.js -/wp-useronline/useronline.js -/wp_stat.php? -/wpengine-analytics/js/main.js -/wps-visitor-counter/styles/js/custom.js -/wpstatistics/v1/hit? -/wrapper/metrics/v1/custom-metrics? -/WRb.js -/wreport.js -/writelog.js -/wstat.pl -/wstats.php? -/wt_capi.js -/wtbase.js -/wtd.gif? -/wtid.js -/wtinit.js -/wtrack?event= -/wwwcount.cgi? -/wxhawkeye.js -/wysistat.js -/x.gif? -/x_track.php? -/xgemius.js -/xiti.js -/xml/pv.xml? -/xn_track.min.js -/xstat.aspx? -/xtclick.js -/xtclicks.js -/xtcore.js -/xtroi.js -/yad_sortab_cetlog.js -/yandex-metrica-watch/* -/yandex-metrika.js -/yastat.js -/ye-gatracker.js -/yell-analytics-app.js -/yell-analytics-min.js -/yell-analytics.js -/yna_stat.js -/youtubeVideoAnalytic.js -/ystat.js -/yt-track-streamer -/z.gif? -/zaius-min.js -/zaius.js -/zanox.js -/zaraz/s.js -/zdcc.min.js -/zhugeio.js -/ztracker.js -://a869. -://analytics-cdn. -://analytics.*/collect -://analytics.*/event -://analytics.*/hits/ -://analytics.*/impression -://analytics.*/page_entry -://analytics.*/pageview/ -://backstory.ebay. -://beacon.*/track -://blue.*/script.js -://client.rum. -://cmpworker. -://collect.*/pageview -://collector.*/event -://elqtrk. -://fathom.$domain=~fathom.fm|~fathom.info|~fathom.io|~fathom.org|~fathom.video|~fathom.world|~fathomdelivers.com|~fathomseo.com|~usesfathom.com -://gtrack.*/dye -://insights-collector. -://internal-matomo. -://lightning.*/launch/ -://matomo.$domain=~matomo.org -://mint.*/?js -://piwik.$domain=~matomo.org|~piwik.pro -://segment-api. -://segment-cdn. -://track.*/collect -://track.*/dye -://track.*/visitor/ -://tracker.*/pageview -://tracking.*/beacon/ -://tracking.*/event -?[AQB]&ndh=1&t= -?act=counter& -?action=event& -?action=impression& -?action=log_promo_impression -?action=saveViewStat& -?action=statsjs& -?action=track_visitor& -?action=tracking_script -?event=impressions& -?event=log& -?event=pageview& -?event=performance& -?event=performancelogger: -?local_ga_js= -?log=stats- -?log_performance_metrics -?logType=impression& -?logType=trackEvent& -?pageviews=$third-party -?statify_referrer= -?type=page&event= -?type=pageview& -_beacon? -_c.gif?c= -_chartbeat.js -_event_tracking? -_imp?Log= -_logHuman= -_nedstat.js -_rpc/log? -_social_tracking.js -_stat.php?referer= -_stat_counter.php? -_trackWebtrekkEvents. -_view_pixel&$image -_webanalytics. -_WebVitalsReporter_ -! Facebook pixels -! /ajax/bnzai?_ -/ajax/bz?_ -! https://imgsen.com/mdaywmhb6u6d/photo-1551582045-6ec9c11d8697.jpg.html -.com/vtrack -! parked domains -/ls.php?t= -/track.php?domain= -/track.php?toggle= -! Amazon -/ajax/counter?ctr= -/batch/1/OE/* -/insights/reportEvent/* -/loi/imp? -/remote-weblab-triggers/* -/uedata? -/unagi.amazon. -/usage/Clickstream? -/usage/ReportEvent? -! hellofresh / greenchef / everyplate -/otlp/traces -! Pinterest -/_/_/logClientError/* -/_/trace/trace/* -! real time web analytics -/rrweb-script.js -/rrweb.js -/rrweb.min.js -! DNS checks -/DNSCheck.js -/DNSChecker.js -! hawkeye -/hawk.js -/hawkeye.js -/hawklinks.js -! cloudflare tracking -/cdn-cgi/apps/body/*$script,~third-party -/cdn-cgi/apps/head/*$script,~third-party -! Notifcation scripts -/blink-sw.js -/PushexSDK.js -/pushly-sdk.min.js -! Admiral -/admiral.js -/js/admiral- -! eventbrite tracking -/search/log_requests/* -! Consent/GDPR tracking -/cmp/messaging.js -/cmp3.js -/slot_cmp.js -/sourcepoint.js -! Eulerian -&pagegroup=*&url=$script -/ajax/eulerian/* -/eulerian.js -! google tracking -/client_204?$image,other,ping,script -/csi_204?$image,other,ping,script -/gen_204?$image,other,ping,script -/generate_204?$image -||adservice.google. -||google.*/url?$ping -||google.com/gen_204? -||googleapis.com^*/gen_204? -||gstatic.com/gen_204? -! Adblock tracking -/ab_track.js -/adb.policy.js -/adblockLogger/* -/sk-logabpstatus.php -/wp-admin/admin-ajax.php?action=adblockvisitor$~third-party -/ws_client?zone=gen$websocket -/wutime-adblocktracker/* - -! *** easylist:easyprivacy/easyprivacy_general_emailtrackers.txt *** -%2Fevent.gif%3F -%2Fo.gif& -%2Fopen.aspx%3F -&mi_ecmp= --track-email-open? -.acemlna.com/lt.php?$image -.acemlna.com/Prod/link-tracker?$image -.acemlnb.com/Prod/link-tracker?$image -.alcmpn.com/ -.app.returnpath.net/ -.aveda.com/t/$image -.awstrack.me/$image -.backblaze.com/e2t/$image -.backcountry.com/o/$image -.bahn.de/op/$image -.benchurl.com/c/o?$image -.bhphotovideo.com/mo/ -.birdsend.net/o/$image -.bluekai.com/*?e_id_ -.bmetrack.com/c/$image -.cmail19.com/t/$image -.cmail19.com/ti/$image -.cmail20.com/t/$image -.ct.sendgrid.net/$image -.delivery-status.com/open? -.demdex.net/event? -.doctolib.de/tr/op/$image -.doubleclick.net/$image -.duolingo.com/open/ -.efeedbacktrk.com/$third-party -.elaine-asp.de/action/view/$image -.email.*/tr/op/$image -.emlfiles4.com/cmpimg/t/$image -.emltrk.com/ -.epicgames.com/O/ -.eventim.de/op/$image -.everestengagement.com/$image -.eviq.org.au/CMSModules/$image -.exponea.com/*/open$image -.facebook.com/tr/$image -.facebook.com/tr?$image -.flipboard.com/usage? -.getblueshift.com/q/ -.getsendmail.com/p/$image -.gif?stat=open -.goodwell18.com/track/ -.google-analytics.com/ -.hootsuite.com/trk? -.informz.net/z/$image -.innologica.com/t/ -.intercom-mail.com/q/ -.intercom-mail.com/via/$image -.inxmail-commerce.com/tracking/$image -.inxserver.com/transparent.gif -.keap-link003.com/$image -.keap-link004.com/$image -.keap-link005.com/$image -.keap-link006.com/$image -.keap-link007.com/$image -.keap-link008.com/$image -.keap-link009.com/$image -.keap-link010.com/$image -.keap-link011.com/$image -.keap-link012.com/$image -.keap-link013.com/$image -.keap-link014.com/$image -.keap-link015.com/$image -.keap-link016.com/$image -.kijiji.ca/r/ -.klclick.com/$image -.list-manage.com/track/ -.mail.odysee.com/o/$image -.mailbutler.io/tracking/ -.mailgun.patreon.com/o/$image -.mailing.*/oo/$image -.maillist-manage.com/click/$image -.maillist-manage.com/clicks/$image -.members.babbel.com/mo/ -.mgmailer.binance.com/o/$image -.microsoft.com/m/v2/d?$image -.mightyape.co.nz/mo? -.mjt.lu/oo/$image -.mkt2684.com/eos/ -.mkt51.net/eos/ -.mozilla.org/eos/$image -.na1.hs-sales-engage.com/$image -.ne16.com/do/ -.netcologne.de/-open2/$image -.oculus.com/collect/ -.online.costco.com/t?$image -.pstmrk.it/open^ -.publish0x.com/t/ -.quora.com/qemail/mark_read? -.redsift.com/e/o/$image -.revolut.com/q/$image -.secureserver.net/bbimage.aspx? -.sendcloud.net/track/ -.sendemail.gate.io/o/$image -.sendibm1.com/*.gif? -.sendibm1.com/mk/ -.sendibt2.com/tr/op/$image -.simplicitycrm.com/rd/ -.smartrmail.co/o/$image -.smtp.net/o/$image -.southwest.com/r/$image -.sparkpostmail.com/q/$image -.sparkpostmail2.com/q/$image -.spmailtechnol.com/q/$image -.spmailtechnolo.com/q/$image -.spreadshirt.net/mo/$image -.starbucks.com/a/ -.substack.com/o/$image -.substackcdn.com/open?$image -.theatlantic.com/email.gif? -.titus.de/oo/$image -.tradewhy.cn//openemail/$image -.travis-ci.com/r/$image -.tripadvisor.com/MptUrl?$image -.tripadvisor.com/q/$image -.umusic-online.com^*/o.gif -.useinsider.com/pixel?$image -.warehousefashion.com/warehouse/e/$image -.webex.com/q/ -.wix.com/_api/ping/ -.zalando.com/images/probe.png -.zippingcare.com/beacon/$image -/1x1_usermatch.gif? -/ap.lijit.com/* -/atlas-trk.prd.msg.ss-inf.net/*$image -/beacon.krxd.net/* -/beaconimages.netflix.net/*$image -/c.vialoops.com/*$image -/click.*/q/*$image -/click.em.nike.com/*$image -/click.email.$image -/click.instahyre.com/*$image -/click.php?c= -/clicks.*/q/*$image -/clicks.email.$image -/cmail2.com/t/* -/coherentpath.link/o/*$image -/condor.slgnt.eu/optiext/optiextension.dll?$image -/cp.gap.com/o/*$image -/e.customeriomail.com/e/o/*$image -/email-pixel? -/email.t.*/o/*$image -/email/open/?pd=$image -/email/open? -/email_open_log_ -/emimp/*$image -/engage.indeed.com/*$image -/eo?_t=$image -/etrack01.com/*$image -/eventing.coursera.org/img/* -/exmo.email/open.html -/gate.amnesty-international.*/open.php? -/global-cdm.net:443/sap/public/cuan/*/pixel.gif -/go.news.fly.io/e/o/*$image -/gp/r.html?$image -/gridinbound.blob.core. -/i?aid=*&se_ac=open&$image -/impression?mkevt= -/inbox.*/imp?$image -/is-tracking-pixel- -/klicks.nebenan.de/q/*$image -/link-tracker?*&l=open& -/link.coindesk.com/img/* -/link.divenewsletter.com/img/*$image -/link.e-mail.*/mo/*$image -/link.email.usmagazine.com/img/*$image -/link.morningbrew.com/img/*.gif -/link.news.*/mo/*$image -/link.oneplus.com/mo$image -/link.pbtech.co.nz/mo/*$image -/link.theatlantic.com/img/* -/link.thrillist.com/img/*$image -/links1.strava.com/*$image -/lzdmailer.letter.open? -/m-email/t.png? -/mail-stat.airdroid.com/*$image -/mail-tracking/*$image -/mail.sparksport.co.nz/forms/read/* -/mail.sparksport.co.nz/mail/read/* -/mailings/opened/*$image -/MailIsRead?$image -/maillist.*/t/*$image -/maling.roidusat.com/t/*$image -/media.sailthru.com/5ik/1k4/9/*.gif -/newsletter/log/*$image -/newsletter/read?s=$image -/newslink.reuters.com/img/*$image -/newtrackingscript. -/notifications.google.com/g/img/*$image -/notifications.googleapis.com/email/t/* -/notifications/beacon/* -/open.aspx? -/open.html?$image -/open/?ot=$image -/open?token=$image -/opens.jscrambler.com/*$image -/p/rp/*?mi_u=*=&sap_id=$image -/p1x1.gif -/page.bsigroup.com/* -/pixel-prod. -/pixel.mathtag.com/* -/pixel?cid= -/post.pinterest.com/q/*$image -/pqt.email/o/*$image -/prod-puc-all/*/open^$image -/px/track? -/redir.inxmail-commerce.com/r/*$image -/rover.ebay.com/roveropen/* -/sendmail.backerupdate.com/t/* -/shoutout.wix.com/*$image -/sli.*/imp?$image -/sptracking. -/ss/o/*.gif -/t.ifly.southwest.com/*$image -/t.paypal.com/*$image -/t.yesware.com/t/*$image -/T/OFC4/*$image -/track.interestingfacts.com/?xol= -/track.octanemail.in/sapi/*$image -/track/open.php? -/track/open/*$image -/track/open? -/tracking.fanbridge.com/* -/tracking.srv2.de/op/*$image -/tracking/email.php -/trcksp. -/wf/open?upn=$image -/wizrocketmail.net/r?$image -/znsrc.com/c/*$image -://2ip.*/member_photo/$third-party -://email.*/e/o/ -://email.*/o/$image -://parcel-api.delivery-status.*/open/$image -://t.order.*/r/?id=$image -_ad_impression. -_adobe_analytics.js -_track_pixel.gif? -img.promio-connect.com$image -omni.soundestlink.com$image -!-----------------Third-party tracking domains-----------------! -! *** easylist:easyprivacy/easyprivacy_trackingservers_general.txt *** -||00px.net^ -||1bliq.io^ -||1cros.net^ -||2cnt.net^ -||2l6ddsmnm.de^ -||2smt6mfgo.de^ -||31daa5lnq.de^ -||34.215.155.61^ -||3gl.net^ -||4251.tech^ -||44.228.85.26^ -||46rtpw.ru^ -||a1webstrategy.com^ -||a8723.com^ -||aaxwall.com^ -||acsbapp.com^ -||act-server-prod.7swnm9dm8q.eu-west-1.elasticbeanstalk.com^ -||adcontroll.com^ -||admaxium.com^ -||adnext.co^ -||adrtx.net^ -||adscore.com^ -||adspsp.com^ -||adstk.io^ -||adultium.com^ -||aggle.net^ -||agkn.com^ -||agma-analytics.de^ -||allvideometrika.com^ -||alpha1trk.com^ -||altopd.com^ -||analys.live^ -||analysis.fi^ -||analyt.ir^ -||anonstat.pw^ -||apeagle.io^ -||apenterprise.io^ -||apharponloun.com^ -||apxl.io^ -||as3.io^ -||australiarevival.com^ -||avads.net^ -||awmonitor.com^ -||b3mxnuvcer.com^ -||bfmio.com^ -||bidgx.com^ -||bidswitch.net^ -||bkrtx.com^ -||bluekai.com^ -||blueoyster.click^ -||bonne-terre-data-layer.com^ -||boomtrain.com^ -||bounceexchange.com^ -||bouncex.net^ -||bqstreamer.com^ -||bringmethehats.com^ -||briskeagle.io^ -||briskpelican.io^ -||broadstreet.ai^ -||brsrvr.com^ -||brwsrfrm.com^ -||btloader.com^ -||bx-cloud.com^ -||bydst.com^ -||cadsuta.net^ -||cafirebreather.com^ -||catsunrunjam.com^ -||cbdatatracker.com^ -||cdnhst.xyz^ -||cdnwidget.com^ -||ciqtracking.com^ -||cityrobotflower.com^ -||ck123.io^ -||ckies.net^ -||clarity.ms^ -||clearbitscripts.com^ -||click360.io^ -||cliquelead.com^ -||cloudwp.io^ -||clrt.ai^ -||cnna.io^ -||cntxtfl.com^ -||confiant-integrations.net^ -||convead.io^ -||convertlink.com^ -||cpx.to^ -||crwdcntrl.net^ -||cvlb.dev^ -||cxense.com^ -||cybba.solutions^ -||czx5eyk0exbhwp43ya.biz^ -||da29e6b8-f018-490f-b25f-39a887fc95e7.xyz^ -||dadalytics.it^ -||dataofpages.com^ -||demdex.net^ -||digi-ping.com^ -||directavenue.tech^ -||dispatchunique.com^ -||dispatchvegasplus.com^ -||dkotrack.com^ -||dlxpix.net^ -||dm-event.net^ -||dmepyodjotcuks.com^ -||dmpxs.com^ -||doublestat.info^ -||dspx.tv^ -||dttrk.com^ -||dwin1.com^ -||dwin2.com^ -||e1e.io^ -||eagle-insight.com^ -||ecn-ldr.de^ -||ed-sys.net^ -||efreecode.com^ -||egoi.site^ -||emailsnow.info^ -||enterombacerick.com^ -||enthusiastgaming.net^ -||envato.market^ -||epsilondelta.co^ -||eqy.link^ -||etop.ro^ -||eu-1-id5-sync.com^ -||everesttech.net^ -||ew3.io^ -||experianmatch.info^ -||ezodn.com^ -||ezstat.ru^ -||f27tltnd.de^ -||fairdatacenter.de^ -||fastemu.co^ -||fastfinch.co^ -||fastgull.io^ -||fasttiger.io^ -||ffbbbdc6d3c353211fe2ba39c9f744cd.com^ -||ffe390afd658c19dcbf707e0597b846d.de^ -||fn-pz.com^ -||fourtimessmelly.com^ -||fpapi.io^ -||fpcdn.io^ -||fptls.com^ -||fptls2.com^ -||fptls3.com^ -||funnelserv.systems^ -||fzlnk.com^ -||g10300385420.co^ -||g11686975765.co^ -||g1188506010.co^ -||g11885060100.co^ -||g12083144435.co^ -||g12281228770.co^ -||g1584674682.co^ -||g1782759015.co^ -||g1782759016.co^ -||g1980843350.co^ -||g2575096355.co^ -||g792337340.co^ -||g792337342.co^ -||g792337343.co^ -||g8715710740.co^ -||g8913795075.co^ -||g9111879410.co^ -||g9508048080.co^ -||g9706132415.co^ -||g990421675.co^ -||g990421676.co^ -||gbqofs.com^ -||gcprivacy.com^ -||geoedge.be^ -||geotargetly-api-*.com^ -||getdeviceinf.com^ -||glamipixel.com^ -||glimr.io^ -||glookup.info^ -||go-mpulse.net^ -||godiciardstia.com^ -||googleoptimize.com^ -||googletagmanager.com^ -||gw-dv.vip^ -||hbiq.net^ -||hdmtools.com^ -||herbgreencolumn.com^ -||hirsung.de^ -||hs-analytics.net^ -||hsadspixel.net^ -||hsleadflows.net^ -||htplayground.com^ -||i218435.net^ -||ia-dmp.com^ -||iconmediapixel.com^ -||iconnode.com^ -||id-ward.com^ -||id5-sync.com^ -||idx.lat^ -||ilius.net^ -||impactcdn.com^ -||impactradius-event.com^ -||imrworldwide.com^ -||imzahrwl.xyz^ -||ineed2s.ro^ -||innerskinresearch.com^ -||insigit.com^ -||instantfox.co^ -||intellimizeio.com^ -||irs01.com^ -||jams.wiki^ -||jazzyzest.cfd^ -||jcpclick.com^ -||jubbie.de^ -||k5a.io^ -||krxd.net^ -||kspotson.de^ -||ldgnrtn.com^ -||ldnlyap.com^ -||leadhit.io^ -||lemonpi.io^ -||liveyield.com^ -||lltrck.com^ -||lmepbq.com^ -||log.dance^ -||logicanalytics.io^ -||logtail.com^ -||loopcybersec.com^ -||lordofthesuperfrogs.com^ -||lsdm.co^ -||lyfnh.io^ -||maggieeatstheangel.com^ -||mapixl.com^ -||markadver.com^ -||matheranalytics.com^ -||mathilde-ads.com^ -||maxepv.com^ -||mb-tracking.com^ -||mbmgivexdvpajr.com^ -||mcangelus.com^ -||mdhv.io^ -||mdstats.info^ -||mediamathrdrt.com^ -||mgln.ai^ -||michiganrobotflower.com^ -||mirabelanalytics.com^ -||mircheigeshoa.com^ -||mitour.de^ -||mitself.net^ -||ml-sys.xyz^ -||mm-api.agency^ -||mobildev.in^ -||monicaatron.com^ -||monu.delivery^ -||mors22.com^ -||mrpdata.net^ -||mt48.net^ -||mxpnl.com^ -||mysingleromance.com^ -||native-track.com^ -||niblewren.co^ -||nigelmidnightrappers.com^ -||nimblebird.co^ -||nimbleswan.io^ -||nmgassets.com^ -||nmgplatform.com^ -||noeyeon.click^ -||noeyeon.com^ -||notifpush.com^ -||ns1p.net^ -||nxakpj4ac8gkd53.info^ -||o1ych4jb.com^ -||omappapi.com^ -||omtrdc.net^ -||openfpcdn.io^ -||oppuz.com^ -||opti-digital.com^ -||opticksprotection.com^ -||optistats.ovh^ -||ostrichesica.com^ -||p2r14.com^ -||p7cloud.net^ -||pageid.info^ -||peiq.services^ -||permutive.app^ -||pippio.com^ -||pix.pub^ -||pixel-tracker.com^ -||pixmg.com^ -||pixrealm.com^ -||pjstat.com^ -||plausiblecdn.co^ -||powerrobotflower.com^ -||prfct.co^ -||procroanalytics.com^ -||progmxs.com^ -||pushvisit.xyz^ -||pzapi-ij.com^ -||pzapi-kg.com^ -||pzimff.com^ -||q0losid.com^ -||q20jqurls0y7gk8.info^ -||quantserve.com^ -||quickkoala.io^ -||quickpcfixer.click^ -||r42tag.com^ -||raac33.net^ -||rapidpanda.io^ -||rapidzebra.io^ -||realtimely.io^ -||reportic.app^ -||rezync.com^ -||rfpx1.com^ -||rkdms.com^ -||robotflowermobile.com^ -||rtactivate.com^ -||rum-ingress-coralogix.com^ -||rumt-sg.com^ -||s-onetag.com^ -||sbgsodufuosmmvsdf.info^ -||sc-static.net^ -||screen13.com^$image -||script.ac^ -||seadform.net^ -||selphiu.com^ -||seoab.io^ -||sf-insights.io^ -||sgstats.com^ -||site24x7rum.eu^ -||sitecounter.site^ -||sitedataprocessing.com^ -||sjpf.io^ -||snptrk.com^ -||soapfighters.com^ -||solutionshindsight.net^ -||speedyfox.io^ -||speedyrhino.co^ -||spinnaker-js.com^ -||srmdata-eur.com^ -||ssevt.com^ -||stack-sonar.com^ -||stat.ovh^ -||statisticplatform.com^ -||statisticsplatform.com^ -||stats.rip^ -||sturton-lation.com^ -||summerhamster.com^ -||superpointlesshamsters.com^ -||sy57d8wi.com^ -||t13.io^ -||takingbackjuly.com^ -||targetemsecure.blob.core.windows.net^ -||tatpek.com^ -||techpump.com^ -||tepatonol.com^ -||test.vast^ -||testingmetriksbre.ru^ -||thatmonkeybites3.com^ -||the-ozone-project.com^ -||thefontzone.com^ -||tkrconnector.com^ -||tncid.app^ -||track-selectmedia.com^ -||trackclicks.info^ -||tracking24.net^ -||transmapp.com^ -||triplestat.online^ -||trk-maiorum.com^ -||trkapi.impact.com^ -||trkbc.com^ -||trkn.us^ -||tru.am^ -||truffle.bid^ -||trx-hub.com^$image -||tryzens-analytics.com^ -||turboeagle.co^ -||turbolion.io^ -||tvpixel.com^ -||tw.cx^ -||ugdturner.com^ -||uidapi.com^ -||uqd.io^ -||ustat.info^ -||venture-365-inspired.com^ -||venusrevival.com^ -||veozn3f.com^ -||vfghe.com^ -||vfgte.com^ -||videocdnmetrika.com^ -||videoplayerhub.com^ -||vkanalytics.net^ -||vmzqqmlpwwmazjnio.com^ -||vpdcp.com^ -||vstats.me^ -||wct-2.com^ -||whale3.io^ -||widgetbe.com^ -||wknd.ai^ -||wlct-one.de^ -||wlct-two.de^ -||wlt-alice.de^ -||wlt-jupiter.de^ -||wmgroup.us^ -||woodpeckerlog.com^ -||xanalytics.vip^ -||yardianalytics.com^ -||yndhi.com^ -||yottlyscript.com^ -||youborafds01.com^ -||youboranqs01.com^ -||zdbb.net^ -||zenaps.com^ -||zippyfrog.co^ -||zjptg.com^ -||zononi.com^ -||zqtk.net^ -||ztsrv.com^ - -! *** easylist:easyprivacy/easyprivacy_trackingservers_thirdparty.txt *** -||0emm.com^$third-party -||103bees.com^$third-party -||105app.com^$third-party -||11nux.com^$third-party -||123count.com^$third-party -||123stat.com^$third-party -||15gifts.com^$third-party -||1freecounter.com^$third-party -||1pel.com^$third-party -||200summit.com^$third-party -||204st.us^$third-party -||206solutions.com^$third-party -||247-inc.com^$third-party -||247ilabs.com^$third-party -||24counter.com^$third-party -||24log.com^$third-party -||2o7.net^$third-party -||360i.com^$third-party -||360tag.com^$third-party -||360tag.net^$third-party -||3dlivestats.com^$third-party -||3dstats.com^$third-party -||40nuggets.com^$third-party -||4oney.com^$third-party -||55labs.com^$third-party -||6sc.co^$third-party -||720-trail.co.uk^$third-party -||77tracking.com^$third-party -||7bpeople.com^$third-party -||7eer.net^$third-party -||8020solutions.net^$third-party -||99counters.com^$third-party -||99stats.com^$third-party -||9nl.eu^$third-party -||a-cast.jp^$third-party -||a-counters.com^$third-party -||a-pagerank.net^$third-party -||a013.com^$third-party -||a4b-tracking.com^$third-party -||a8.net^$third-party -||a8ww.net^$third-party -||aaddzz.com^$third-party -||aamsitecertifier.com^$third-party -||aaxdetect.com^$third-party -||abcstats.com^$third-party -||ablsrv.com^$third-party -||ablyft.com^$third-party -||abmr.net^$third-party -||absolstats.co.za^$third-party -||abtrcking.com^$third-party -||abtshield.com^$third-party -||acc-hd.de^$third-party -||accdab.net^$third-party -||access-analyze.org^$third-party -||accessintel.com^$third-party -||acecounter.com^$third-party -||acetrk.com^$third-party -||acexedge.com^$third-party -||acint.net^$third-party -||acq.io^$third-party -||acsbap.com^$third-party -||acstat.com^$third-party -||active-trk7.com^$third-party -||activeconversion.com^$third-party -||activemeter.com^$third-party -||activeprospects.com^$third-party -||actnx.com^$third-party -||acxiom-online.com^$third-party -||acxiomapac.com^$third-party -||ad-srv-track.com^$third-party -||adabra.com^$third-party -||adalyser.com^$third-party -||adara.com^$third-party -||adblade.com^$third-party -||adblockrelief.com^$third-party -||addfreestats.com^$third-party -||addwish.com^$third-party -||adelixir.com^$third-party -||adfox.ru^$third-party -||adgreed.com^$third-party -||adheart.de^$third-party -||adhslx.com^$third-party -||adinsight.co.kr^$third-party -||adinsight.com^$third-party -||adinte.jp^$third-party -||adku.co^$third-party -||adku.com^$third-party -||admantx.com^$third-party -||admaster.com.cn^$third-party -||admetric.io^$third-party -||adobedtm.com^$third-party,domain=~adobe.com|~costco.com -||adoberesources.net^$third-party,domain=~adobe.com -||adobetag.com^$third-party -||adobetarget.com^$third-party -||adoftheyear.com^$third-party -||adoric-om.com^$third-party -||adpaths.com^$third-party -||adpies.com^$third-party -||adregain.com^$third-party -||adregain.ru^$third-party -||adrizer.com^$third-party -||adrta.com^$third-party -||adsensedetective.com^$third-party -||adsmatcher.com^$third-party -||adsrvr.org^$third-party -||adtarget.me^$third-party -||adtector.com^$third-party -||adtelligence.de^$third-party -||adultblogtoplist.com^$third-party -||adunity.com^$third-party -||advalo.com^$third-party -||advanced-web-analytics.com^$third-party -||advangelists.com^$third-party -||advconversion.com^$third-party -||advertising.com^$third-party -||advoncommerce.com^$third-party -||adways.com^$third-party -||adwerx.com^$third-party -||adwstats.com^$third-party -||adxadtracker.com^$third-party -||adxcel-ec2.com^$third-party -||adyapper.com^$third-party -||aff-handler.com^$third-party -||affex.org^$third-party -||affilae.com^$third-party -||affiliateedge.eu^$third-party -||affiliatly.com^$third-party -||affilimate.com^$third-party -||affilimate.io^$third-party -||affilired.com^$third-party -||affinesystems.com^$third-party -||affinitymatrix.com^$third-party -||affistats.com^$third-party -||afftrack.pro^$third-party -||afsanalytics.com^$third-party -||afterclick.co^$third-party -||agentanalytics.com^$third-party -||agentinteractive.com^$third-party -||agilecrm.com^$third-party -||agilesrv.com^$third-party -||agilone.com^$third-party -||agrvt.com^$third-party -||aimediagroup.com^$third-party -||air2s.com^$third-party -||airbrake.io^$third-party -||airlogak.com^$third-party -||airpr.com^$third-party -||airserve.net^$third-party -||aivalabs.com^$third-party -||akanoo.com^$third-party -||akstat.com^$third-party -||akstat.io^$third-party -||albacross.com^$third-party -||alcmpn.com^$third-party -||alenty.com^$third-party -||alltracked.com^$third-party -||alocdn.com^$third-party -||alpixtrack.com^$third-party -||altabold1.com^$third-party -||altastat.com^$third-party -||alvenda.com^$third-party -||alzexa.com^$third-party -||amadesa.com^$third-party -||amavalet.com^$third-party -||amazingcounters.com^$third-party -||ambercrow.com^$third-party -||amikay.com^$third-party -||amnet.tw^$third-party -||amp.vg^$third-party -||amplitude.com^$third-party -||amung.us^$third-party -||analitycs.net^$third-party -||analoganalytics.com^$third-party -||analytically.net^$third-party -||analytics-debugger.com^$third-party -||analytics-helper.com^$third-party -||analytics.vg^$third-party -||analyticson.com^$third-party -||analyticswizard.com^$third-party -||analyzee.io^$third-party -||analyzz.com^$third-party -||anametrix.com^$third-party -||anametrix.net^$third-party -||angelfishstats.com^$third-party -||angorch-cdr7.com^$third-party -||anonymised.io^$third-party -||anrdoezrs.net^$third-party -||answerbook.com^$third-party -||answerscloud.com^$third-party -||anti-cheat.info^$third-party -||antiblock.info^$third-party -||anura.io^$third-party -||anytrack.io^$third-party -||apexstats.com^$third-party -||apextag.com^$third-party -||apextwo.com^$third-party -||api64.com^$third-party -||apicit.net^$third-party -||apollofind.com^$third-party -||apolloprogram.io^$third-party -||appboycdn.com^$third-party -||appcast.io^$third-party -||appdynamics.com^$third-party -||appn.center^$third-party -||aprtn.com^$third-party -||aprtx.com^$third-party -||apsis1.com^$third-party -||apsislead.com^$third-party -||aptrinsic.com^$third-party -||aqtracker.com^$third-party -||aralego.net^$third-party -||arc.io^$third-party -||arcadeweb.com^$third-party -||ardalio.com^$third-party -||arena-quantum.co.uk^$third-party -||arkayne.com^$third-party -||arlime.com^$third-party -||arpxs.com^$third-party -||arrivalist.com^$third-party -||arrowpushengine.com^$third-party -||arsdev.net^$third-party -||artefact.is^$third-party -||artfut.com^$third-party -||ascend.ai^$third-party -||assoctrac.com^$third-party -||asteriresearch.com^$third-party -||astro-way.com^$third-party -||at-o.net^$third-party -||atatus.com^$third-party -||athenainstitute.biz^$third-party -||atp.io^$third-party -||atsptp.com^$third-party -||attracta.com^$third-party -||attributionapp.com^$third-party -||audience.systems^$third-party -||audienceiq.com^$third-party -||audienceplay.com^$third-party -||audiencerate.com^$third-party -||audiens.com^$third-party -||audrte.com^$third-party -||aufp.io^$third-party -||authorinsights.com^$third-party -||auto-ping.com^$third-party -||autoaffiliatenetwork.com^$third-party -||autoaudience.com^$third-party -||autoid.com^$third-party -||autoline-top.com^$third-party -||automizely-analytics.com^$third-party -||avantlink.com^$third-party -||avapartner.com^$third-party -||avazudsp.net^$third-party -||avenseo.com^$third-party -||avmws.com^$third-party -||awasete.com^$third-party -||awesomelytics.com^$third-party -||awfonts.com^$script,third-party -||awin1.com^$third-party -||awstats.cloud^$third-party -||awstrack.me^$third-party -||axf8.net^$third-party -||azera-s014.com^$third-party -||azointel.com^$third-party -||b0e8.com^$third-party -||b1img.com^$third-party -||b1js.com^$third-party -||b2c.com^$third-party -||babator.com^$third-party -||baikalize.com^$third-party -||bam-x.com^$third-party -||baptisttop1000.com^$third-party -||baremetrics.com^$third-party -||barilliance.net^$third-party -||basicstat.com^$third-party -||basilic.io^$third-party -||baynote.net^$third-party -||baztrack.com^$third-party -||bbthat.com^$script,third-party -||bdash-cloud.com^$third-party -||beacon.kmi-us.com^$third-party -||beaconstreetservices.com^$third-party -||beampulse.com^$third-party -||beanstalkdata.com^$third-party -||beanstock.com^$third-party -||beemray.com^$third-party -||beemrdwn.com^$third-party -||beencounter.com^$third-party -||behavioralengine.com^$third-party -||belstat.be^$third-party -||belstat.com^$third-party -||belstat.de^$third-party -||belstat.fr^$third-party -||belstat.nl^$third-party -||benchtag2.co^$third-party -||bentonow.com^$third-party -||berg-6-82.com^$third-party -||best-top.de^$third-party -||bestcontactform.com^$~image,third-party -||betarget.com^$third-party -||bettermeter.com^$third-party -||beusable.net^$third-party -||bfoleyinteractive.com^$third-party -||bgpng.me^$third-party -||bidphysics.com^$third-party -||bidr.io^$third-party -||bidsimulator.com^$third-party -||bigbrain.me^$third-party -||bigcattracks.com^$third-party -||bigmir.net^$third-party -||bignutty.xyz^$third-party -||bigreal.org^$third-party -||bigtracker.com^$third-party -||bionicclick.com^$third-party -||bizible.com^$third-party -||bizo.com^$third-party -||bizspring.net^$third-party -||bjcathay.com^$third-party -||bkvtrack.com^$third-party -||blaick.com^$third-party -||blisspointmedia.com^$third-party -||blockdetector.org^$third-party -||blockmetrics.com^$third-party -||blog-stat.com^$third-party -||blogmeetsbrand.com^$third-party -||blogpatrol.com^$third-party -||blogrankers.com^$third-party -||blogreaderproject.com^$third-party -||blogsontop.com^$third-party -||bluecava.com^$third-party -||blueconic.net^$third-party -||bluecore.com^$third-party -||blueknow.com^$third-party -||blvdstatus.com^$third-party -||bm23.com^$third-party -||bmlmedia.com^$third-party -||bmmetrix.com^$third-party -||bnqt.com^$third-party -||bntech.io^$third-party -||boomerang.com.au^$third-party -||botman.ninja^$third-party -||botsvisit.com^$third-party -||bouncepilot.com^$third-party -||bouncex.com^$third-party -||bp01.net^$third-party -||bpmonline.com^$third-party -||brandlock.io^$third-party -||brat-online.ro^$third-party -||brcdn.com^$third-party -||bridgevine.com^$third-party -||brightfunnel.com^$third-party -||brilig.com^$third-party -||brilliantcollector.com^$third-party -||britepool.com^$third-party -||bronto.com^$third-party -||browser-intake-datadoghq.eu^$third-party -||browser-statistik.de^$third-party -||browser-update.org^$third-party -||bstn-14-ma.com^$third-party -||btbuckets.com^$third-party -||btncdn.com^$third-party -||bttn.io^$third-party -||btttag.com^$third-party -||bubblestat.com^$third-party -||bugherd.com^$third-party -||bugsnag.com^$third-party -||bunchbox.co^$third-party -||burpee.xyz^$third-party -||burstbeacon.com^$third-party -||burt.io^$third-party -||buzzdeck.com^$third-party -||bytemgdd.com^$third-party -||c-o-u-n-t.com^$third-party -||c.hit.ua^$third-party -||c1exchange.com^$third-party -||c212.net^$third-party -||c3metrics.com^$third-party -||c3tag.com^$third-party -||c4tracking01.com^$third-party -||cactusglobal.io^$third-party -||cactusmedia.com^$third-party -||cadreon.com^$third-party -||call-tracking.co.uk^$third-party -||callisto.fm^$third-party -||callmeasurement.com^$third-party -||callrail.com^$third-party -||callreports.com^$third-party -||calltouch.ru^$third-party -||calltrackingmetrics.com^$third-party -||calltracks.com^$third-party -||campaigncog.com^$third-party -||campaignmonitor.com^$third-party -||canddi.com^$third-party -||canlytics.com^$third-party -||canopylabs.com^$third-party -||captify.co.uk^$third-party -||captivate.ai^$third-party -||capturehighered.net^$third-party -||capturemedia.network^$third-party -||capturly.com^$third-party -||carambo.la^$third-party -||caramel.press^$third-party -||cartstack.com^$third-party -||cashburners.com^$third-party -||cashcount.com^$third-party -||cbtrk.net^$third-party -||cccpmo.com^$third-party -||ccgateway.net^$third-party -||ccscserver.com^$third-party -||cdn-net.com^$third-party -||cdnlibjs.com^$third-party -||cdnmaster.com^$third-party -||cdnopw.com^$third-party -||cedexis.com^$third-party -||celebros-analytics.com^$third-party -||celebrus.com^$third-party -||center.io^$third-party -||cetrk.com^$third-party -||cftrack.com^$third-party -||chartaca.com^$third-party -||chartbeat.com^$third-party -||chartbeat.net^$third-party -||checkreferrer.io^$third-party -||checkstat.nl^$third-party -||christiantop1000.com^$third-party -||christmalicious.com^$third-party -||chtbl.com^$script,third-party,xmlhttprequest -||cintnetworks.com^$third-party -||cityadstrack.com^$third-party -||cityspark.com^$third-party -||claritytag.com^$third-party -||clarium.io^$third-party -||clarivoy.com^$third-party -||clearbit.com^$third-party -||clearbitjs.com^$third-party -||clevi.com^$third-party -||click-url.com^$third-party -||click4assistance.co.uk^$third-party -||clickable.net^$third-party -||clickaider.com^$third-party -||clickalyzer.com^$third-party -||clickbrainiacs.com^$third-party -||clickcease.com^$third-party -||clickclick.net^$third-party -||clickdensity.com^$third-party -||clickening.com^$third-party -||clickferret.com^$third-party -||clickguard.com^$third-party -||clickguardian.co.uk^$third-party -||clickmanage.com^$third-party -||clickmeter.com^$third-party -||clickonometrics.pl^$third-party -||clickpathmedia.com^$third-party -||clickprotector.com^$third-party -||clickreport.com^$third-party -||clicksagent.com^$third-party -||clicksen.se^$third-party -||clickshift.com^$third-party -||clicktale.net^$third-party -||clicktracks.com^$third-party -||clickx.io^$third-party -||clickzs.com^$third-party -||clickzzs.nl^$third-party -||clientgear.com^$third-party -||clipcentric.com^$third-party -||clixcount.com^$third-party -||clixgalore.com^$third-party -||clixpy.com^$third-party -||cloud-exploration.com^$third-party -||cloud-iq.com.au^$third-party -||cloud-iq.com^$third-party -||cloudiq.com^$third-party -||cloudtracer101.com^$third-party -||cmcore.com^$third-party -||cmmeglobal.com^$third-party -||cmptch.com^$third-party -||cnt1.net^$third-party -||cnwebperformance.biz^$third-party -||cnxweb.com^$third-party -||cnzz.com^$third-party -||cobaltgroup.com^$third-party -||codata.ru^$third-party -||cogmatch.net^$third-party -||cognativex.com^$third-party -||cognitivematch.com^$third-party -||cognitivlabs.com^$third-party -||cohesionapps.com^$third-party -||coll2onf.com^$third-party -||collarity.com^$third-party -||collecting.click^$third-party -||collserve.com^$third-party -||colossusssp.com^$third-party -||commander1.com^$third-party -||company-target.com^$third-party -||compteur.cc^$third-party -||compteur.fr^$third-party -||conductrics.com^$third-party -||conductrics.net^$third-party -||conduze.com^$third-party -||config.parsely.com^$third-party -||confirmational.com^$third-party -||connectif.cloud^$third-party -||contactmonkey.com^$third-party -||content-square.net^$third-party -||contentinsights.com^$third-party -||contentspread.net^$third-party -||contentsquare.net^$third-party -||continue.com^$third-party -||convergetrack.com^$third-party -||conversionfly.com^$third-party -||conversionlogic.net^$third-party -||conversionly.com^$third-party -||conversionruler.com^$third-party -||convertagain.net^$third-party -||convertcart.com^$third-party -||convertexperiments.com^$third-party -||convertglobal.com^$third-party -||convertro.com^$third-party -||cooladata.com^$third-party -||copperegg.com^$third-party -||coralogix.com^$third-party -||core-cen-54.com^$third-party -||coremetrics.com^$third-party -||coremotives.com^$third-party -||cost1action.com^$third-party -||count.ly^$third-party -||countby.com^$third-party -||counter.dev^$third-party -||counter.gd^$third-party -||counter.top.kg^$third-party -||counterbot.com^$third-party -||countercentral.com^$third-party -||countergeo.com^$third-party -||counterland.com^$third-party -||counters4u.com^$third-party -||countersforlife.com^$third-party -||countertracker.com^$third-party -||counting4free.com^$third-party -||countomat.com^$third-party -||countz.com^$third-party -||cpcmanager.com^$third-party -||cpmstar.com^$third-party -||cqcounter.com^$third-party -||craftkeys.com^$third-party -||craktraffic.com^$third-party -||crashlytics.com^$third-party -||crazyclickstats.com^$third-party -||crazyegg.com^$third-party -||criteo.com^$third-party -||criteo.net^$third-party -||crmmetrixwris.com^$third-party -||crosspixel.net^$third-party -||crosswalkmail.com^$third-party -||crowdscience.com^$third-party -||crtx.info^$third-party -||csdata1.com^$third-party -||cuberoot.co^$third-party -||curalate.com^$third-party -||customer.io^$third-party -||customerconversio.com^$third-party -||customerlabs.co^$third-party -||cux.io^$third-party -||cvtr.io^$third-party -||cya2.net^$third-party -||cyberanalytics.nl^$third-party -||d-1.co^$third-party -||d41.co^$third-party -||dacounter.com^$third-party -||dapxl.com^$third-party -||dashboard.io^$third-party -||data-dynamic.net^$third-party -||databrain.com^$third-party -||databreakers.com^$third-party -||datacaciques.com^$third-party -||datacoral.com^$third-party -||datacoral.io^$third-party -||datacygnal.io^$third-party -||datadoghq-browser-agent.com^$third-party -||datadoghq.eu^$third-party -||datadsk.com^$third-party -||datafeedfile.com^$third-party -||datafront.co^$third-party -||datam.com^$third-party -||datamilk.app^$third-party -||datamind.ru^$third-party -||dataperforma.com^$third-party -||dataroid.com^$third-party -||datasteam.io^$third-party -||dataunlocker.com^$third-party -||dataxpand.com^$third-party -||datazoom.io^$third-party -||datvantage.com^$third-party -||db-ip.com^$third-party -||dc-storm.com^$third-party -||dcmn.com^$third-party -||ddm.io^$third-party -||deadlinefunnel.com^$third-party -||debugbear.com^$third-party -||decdna.net^$third-party -||decibelinsight.net^$third-party -||decideinteractive.com^$third-party -||deep-content.io^$third-party -||deep.bi^$third-party -||deepattention.com^$third-party -||deepchannel.com^$third-party -||defacto-analytics.net^$third-party -||dejavu.mlapps.com^$third-party -||demandbase.com^$third-party -||demandscience.com^$third-party -||departapp.com^$third-party -||deqwas.net^$third-party -||devatics.com^$third-party -||devatics.io^$third-party -||device9.com^$third-party -||di-capt.com^$third-party -||dialogtech.com^$third-party -||did-it.com^$third-party -||didit.com^$third-party -||didna.io^$third-party -||diffusion-tracker.com^$third-party -||digianalytics.fr^$third-party -||digitaloptout.com^$third-party -||digitaltarget.ru^$third-party -||digitru.st^$third-party -||dignow.org^$third-party -||dimestore.com^$third-party -||dimml.io^$third-party -||discover-path.com^$third-party -||discovertrail.net^$third-party -||displaymarketplace.com^$third-party -||distiltag.com^$third-party -||distralytics.com^$third-party -||dmanalytics1.com^$third-party -||dmclick.cn^$third-party -||dmpcounter.com^$third-party -||dmpprof.com^$third-party -||dmtracker.com^$third-party -||dmxleo.com^$third-party -||dnsdelegation.io^$third-party -||doceree.com^$third-party -||doclix.com^$third-party -||dojomojo.com^$third-party -||dojomojo.ninja^$third-party -||domdog.io^$third-party -||dominocounter.net^$third-party -||domodomain.com^$third-party -||donreach.com^$third-party -||dotaki.com^$third-party -||dpbolvw.net^$third-party -||dps-reach.com^$third-party -||driv-analytics.com^$third-party -||dsail-tech.com^$third-party -||dsmmadvantage.com^$third-party -||dsmstats.com^$third-party -||dsparking.com^$third-party -||dsply.com^$third-party -||dtc-v6t.com^$third-party -||dti-ranker.com^$third-party -||dtxngr.com^$third-party -||durationmedia.net^$third-party -||dvnfo.com^$third-party -||dynatrace-managed.com^$third-party -||dynatrace.com^$third-party,domain=~dynatracelabs.com -||dyntrk.com^$third-party -||e-contenta.com^$third-party -||e-goi.com^$third-party,domain=~e-goi.com.br|~e-goi.pt -||e-pagerank.net^$third-party -||e-referrer.com^$third-party -||e-webtrack.net^$third-party -||eacla.com^$third-party -||easy-hit-counter.com^$third-party -||easy-hit-counters.com^$third-party -||easycounter.com^$third-party -||easyhitcounters.com^$third-party -||easyresearch.se^$third-party -||ebtrk1.com^$third-party -||ec-track.com^$third-party -||ecommstats.com^$third-party -||ecustomeropinions.com^$third-party -||edgeadx.net^$third-party -||edigitalsurvey.com^$third-party -||eggplant.cloud^$third-party -||ekmpinpoint.co.uk^$third-party -||ekmpinpoint.com^$third-party -||ela-3-tnk.com^$third-party -||elastx.net^$third-party -||elitics.com^$third-party -||eloqua.com^$~stylesheet,third-party -||eluxer.net^$third-party -||email-match.com^$third-party -||embeddedanalytics.com^$third-party -||emediatrack.com^$third-party -||emjcd.com^$third-party -||emltrk.com^$third-party -||enecto.com^$third-party -||engageclick.com^$third-party -||engagemaster.com^$third-party -||engagetosell.com^$third-party -||engagio.com^$third-party -||engine212.com^$third-party -||engine64.com^$third-party -||enhencer.com^$third-party -||enquisite.com^$third-party -||ensighten.com^$third-party -||entravision.com^$third-party -||eolcdn.com^$third-party -||ep4p.com^$third-party -||eperfectdata.com^$third-party -||epilot.com^$third-party -||epitrack.com^$third-party -||eproof.com^$third-party -||eps-analyzer.de^$third-party -||ereportz.com^$third-party -||escalated.io^$third-party -||esearchvision.com^$third-party -||esm1.net^$third-party -||esomniture.com^$third-party -||esputnik.com^$third-party -||estara.com^$third-party -||estat.com^$third-party -||estrack.net^$third-party -||etahub.com^$third-party -||ethn.io^$third-party -||ethnio.com^$third-party -||ethyca.com^$third-party -||etp-prod.com^$third-party -||etracker.com^$third-party -||etrigue.com^$third-party -||etyper.com^$third-party -||eu-survey.com^$third-party -||eulerian.net^$third-party -||euleriancdn.net^$third-party -||eum-appdynamics.com^$third-party -||europagerank.com^$third-party -||europuls.eu^$third-party -||europuls.net^$third-party -||eval.privateapi.click^$third-party -||everestjs.net^$third-party -||evergage.com^$third-party -||evisitanalyst.com^$third-party -||evorra.net^$third-party -||evyy.net^$third-party -||ewebanalytics.com^$third-party -||exactag.com^$third-party -||excited.me^$third-party -||exclusiveclicks.com^$third-party -||exelator.com^$third-party -||exitmonitor.com^$third-party -||exorigos.com^$third-party -||experianmarketingservices.digital^$third-party -||explore-123.com^$third-party -||exposebox.com^$third-party -||extole.com^$third-party -||extrawatch.com^$third-party -||extreme-dm.com^$third-party -||extreme-ip-lookup.com^$third-party -||eyein.com^$third-party -||ezec.co.uk^$third-party -||ezytrack.com^$third-party -||f92j5.com^$third-party -||fabricww.com^$third-party -||faktor.io^$third-party -||fandommetrics.com^$third-party -||fanplayr.com^$third-party -||fast-thinking.co.uk^$third-party -||fastanalytic.com^$third-party -||fastly-analytics.com^$third-party -||fastly-insights.com^$third-party -||fathomseo.com^$third-party -||fcs.ovh^$third-party -||feathr.co^$third-party -||feedcat.net^$third-party -||feedjit.com^$third-party -||feedperfect.com^$third-party -||figpii.com^$third-party -||fiksu.com^$third-party -||filitrac.com^$third-party -||finalid.com^$third-party -||finalyticsdata.com^$third-party -||find-ip-address.org^$third-party -||fireworkanalytics.com^$third-party -||firstpromoter.com^$third-party -||fitanalytics.com^$third-party -||flagcounter.com^$third-party -||flaghit.com^$third-party -||flash-counter.com^$third-party -||flashb.id^$third-party -||flcounter.com^$third-party -||flexlinkspro.com^$third-party -||flixfacts.co.uk^$third-party -||flixsyndication.net^$third-party -||flockrocket.io^$third-party -||flocktory.com^$third-party -||fluencymedia.com^$third-party -||fluidsurveys.com^$third-party -||flurry.com^$third-party -||flx1.com^$third-party -||flxpxl.com^$third-party -||flyingpt.com^$third-party -||fmhy.net^$third-party -||fndrsp.net^$third-party -||followercounter.com^$third-party -||footprintdns.com^$third-party -||footprintlive.com^$third-party -||force24.co.uk^$third-party -||forensics1000.com^$third-party -||foreseeresults.com^$third-party -||forkcdn.com^$third-party -||formalyzer.com^$third-party -||formisimo.com^$third-party -||forter.com^$third-party -||fouanalytics.com^$third-party -||foundry42.com^$third-party -||fout.jp^$third-party -||fpctraffic2.com^$third-party -||fpjs.io^$third-party -||fprnt.com^$third-party -||fqsecure.com^$third-party -||fraud0.com^$third-party -||fraudjs.io^$third-party -||free-counter.co.uk^$third-party -||free-counter.com^$third-party -||free-counters.co.uk^$third-party -||free-hit-counters.net^$third-party -||free-website-statistics.com^$third-party -||freebloghitcounter.com^$third-party -||freecountercode.com^$third-party -||freecounterstat.com^$third-party -||freegeoip.app^$third-party -||freegeoip.net^$third-party -||freehitscounter.org^$third-party -||freelogs.com^$third-party -||freesitemapgenerator.com^$third-party -||freestats.com^$third-party -||freetrafficsystem.com^$third-party -||freeusersonline.com^$third-party -||freevisitorcounters.com^$third-party -||freeweblogger.com^$third-party -||freshcounter.com^$third-party -||freshmarketer.com^$third-party -||freshplum.com^$third-party -||freshrelevance.com^$third-party -||friendbuy.com^$third-party -||frodx.com^$third-party -||froomle.com^$third-party -||fruitflan.com^$third-party -||fsd2.digital^$third-party -||fstats.xyz^$third-party -||fstrk.net^$third-party -||ftbpro.com^$third-party -||ftz.io^$third-party -||fueldeck.com^$third-party -||fuelx.com^$third-party -||fugetech.com^$third-party -||fullcircleinsights.com^$third-party -||fullstory.com^$third-party -||funneld.com^$third-party -||funnelytics.io^$third-party -||funstage.com^$third-party -||fusestats.com^$third-party -||fuziontech.net^$third-party -||fwpixel.com^$third-party -||fyreball.com^$third-party -||ga-analytics.com^$third-party -||gaconnector.com^$third-party -||gameanalytics.com^$third-party -||gammachug.com^$third-party -||gatorleads.co.uk^$third-party -||gaug.es^$third-party -||gbotvisit.com^$third-party -||gc.zgo.at^$third-party -||geistm.com^$third-party -||gemius.pl^$third-party -||genieesspv.jp^$third-party -||geniuslinkcdn.com^$third-party -||geo-targetly.com^$third-party -||geobytes.com^$third-party -||geoip-db.com^$third-party -||geoiplookup.io^$third-party -||geolid.com^$third-party -||geolocation-db.com^$third-party -||geoplugin.net^$third-party -||georiot.com^$third-party -||geotargetly-1a441.appspot.com^$third-party -||geotargetly.co^$third-party -||getaawp.com^$third-party -||getambassador.com^$third-party -||getbackstory.com^$third-party -||getblue.io^$third-party -||getblueshift.com^$third-party -||getclicky.com^$third-party -||getconversion.net^$third-party -||getdrip.com^$third-party -||getfreebl.com^$third-party -||getinsights.io^$third-party -||getlasso.co^$third-party -||getrockerbox.com^$third-party -||getsentry.com^$third-party,domain=~sentry.dev|~sentry.io -||getsmartcontent.com^$third-party -||getsmartlook.com^$third-party -||getstat.net^$third-party -||getstatistics.se^$third-party -||getstats.org^$third-party -||getviously.com^$third-party -||gez.io^$third-party -||giddyuptrk.com^$third-party -||gigcount.com^$third-party -||gim.co.il^$third-party -||glancecdn.net^$third-party,domain=~glance.net -||glassboxcdn.com^$third-party -||glassboxdigital.io^$third-party -||glbtracker.com^$third-party -||globalsiteanalytics.com^$third-party -||globalwebindex.net^$third-party -||globase.com^$third-party -||globel.co.uk^$third-party -||globetrackr.com^$third-party -||gnpge.com^$third-party -||goadservices.com^$third-party -||goatcounter.com^$third-party -||godhat.com^$third-party -||goingup.com^$third-party -||goldstats.com^$third-party -||goneviral.com^$third-party -||goodcounter.org^$third-party -||goodmeasure.io^$third-party -||google-analytics.com^$third-party -||googleadservices.com^$third-party -||googlerank.info^$third-party -||gooo.al^$third-party -||gopjn.com^$third-party -||gostats.com^$third-party -||gostats.org^$third-party -||gotrk.net^$third-party -||govmetric.com^$third-party -||granify.com^$third-party -||grapheffect.com^$third-party -||gravity4.com^$third-party -||grmtech.net^$third-party -||group-ib.ru^$third-party -||growthrx.in^$third-party -||gsecondscreen.com^$third-party -||gsght.com^$third-party -||gsimedia.net^$third-party -||gsspat.jp^$third-party -||gssprt.jp^$third-party -||gtcslt-di2.com^$third-party -||gtopstats.com^$third-party -||guanoo.net^$third-party -||gvisit.com^$third-party -||gwmtracking.com^$third-party -||hadronid.net^$third-party -||halldata.com^$third-party -||haloscan.com^$third-party -||havasedge.com^$third-party -||haveamint.com^$third-party -||hbwrapper.com^$third-party -||heapanalytics.com^$third-party -||heatmap.com^$third-party -||heatmap.it^$third-party -||hellosherpa.com^$third-party -||hentaicounter.com^$third-party -||hexagon-analytics.com^$third-party -||heylink.com^$third-party -||heystaks.com^$third-party -||hiconversion.com^$third-party -||hif.to^$third-party -||higherengine.com^$third-party -||highlight.io^$third-party -||highlight.run^$third-party -||highmetrics.com^$third-party -||hira-meki.jp^$third-party -||histats.com^$third-party -||hit-360.com^$third-party -||hit-counter.info^$third-party -||hit-parade.com^$third-party -||hit2map.com^$third-party -||hitbox.com^$third-party -||hitcounterstats.com^$third-party -||hitmatic.com^$third-party -||hits2u.com^$third-party -||hitslink.com^$third-party -||hitslog.com^$third-party -||hitsniffer.com^$third-party -||hitsprocessor.com^$third-party -||hitstatus.com^$third-party -||hitsteps.com^$third-party -||hittail.com^$third-party -||hittracker.com^$third-party -||hitwake.com^$third-party -||hitwebcounter.com^$third-party -||hmstats.com^$third-party -||hockeystack.com^$third-party -||holdonstranger.com^$third-party -||horzrb.com^$third-party -||hospitality-optimizer.com^$third-party -||host-tracker.com^$third-party -||hostip.info^$third-party -||hotjar.com^$third-party -||hotjar.io^$third-party -||hotlog.ru^$third-party -||hscta.net^$third-party -||hubvisor.io^$third-party -||hum.works^$third-party -||humanclick.com^$third-party -||humanpresence.app^$third-party -||hunt-leads.com^$third-party -||hurra.com^$third-party -||hwpub.com^$third-party -||hxtrack.com^$third-party -||hybrid.ai^$third-party -||hyfntrak.com^$third-party -||hyperactivate.com^$third-party -||hypercounter.com^$third-party -||hyperdx.io^$third-party -||hypestat.com^$third-party -||iaudienc.com^$third-party -||ib-ibi.com^$third-party -||ibeat-analytics.com^$third-party -||ibpxl.com^$third-party -||ibpxl.net^$third-party -||ic-live.com^$third-party -||icanhazip.com^$third-party -||iclive.com^$third-party -||icstats.nl^$third-party -||iculture.report^$third-party -||id-visitors.com^$third-party -||ideoclick.com^$third-party -||idio.co^$third-party -||idtargeting.com^$third-party -||iesnare.com^$third-party -||ifactz.com^$third-party -||ifvox.com^$third-party -||igaming.biz^$third-party -||iljmp.com^$third-party -||illumenix.com^$third-party -||ilogbox.com^$third-party -||imhd.io^$third-party -||immanalytics.com^$third-party -||impression.link^$third-party -||imrtrack.com^$third-party -||imtwjwoasak.com^$third-party -||inboxtag.com^$third-party -||incentivesnetwork.net^$third-party -||index.ru^$third-party -||indexstats.com^$third-party -||indextools.com^$third-party -||indicative.com^$third-party -||indicia.com^$third-party -||individuad.net^$third-party -||ineedhits.com^$third-party -||inferclick.com^$third-party -||infinigraph.com^$third-party -||infinity-tracking.com^$third-party -||infinity-tracking.net^$third-party -||inflectionpointmedia.com^$third-party -||influid.co^$third-party -||infopro-insight.com^$third-party -||infoprodata.com^$third-party -||informz.net^$third-party -||ingage.tech^$third-party -||ingest-lr.com^$third-party -||inimbus.com.au^$third-party -||innertrends.com^$third-party -||innovateads.com^$third-party -||inphonic.com^$third-party -||inpwrd.com^$third-party -||inside-graph.com^$third-party -||insightera.com^$third-party -||insightgrit.com^$third-party -||insitemetrics.com^$third-party -||inspectlet.com^$third-party -||instadia.net^$third-party -||instana.io^$third-party -||instant.page^$third-party -||instapage.com^$third-party,domain=~pagedemo.co -||instapagemetrics.com^$third-party -||instore.biz^$third-party -||intake-lr.com^$third-party -||intelli-direct.com^$third-party -||intelligencefocus.com^$third-party -||intellimize.co^$third-party -||interact-analytics.com^$third-party -||interceptum.com^$third-party -||intermundomedia.com^$third-party -||interstateanalytics.com^$third-party -||intervigil.com^$third-party -||investingchannel.com^$third-party -||invitemedia.com^$third-party -||invitereferrals.com^$third-party -||invoc.us^$third-party -||invoca.net^$third-party -||invoca.solutions^$third-party -||io1g.net^$third-party -||iocnt.net^$third-party -||iotechnologies.com^$third-party -||iovation.com^$third-party -||ip-label.net^$third-party -||ip-tracker.org^$third-party -||ip2c.org^$third-party -||ip2location.com^$third-party -||ip2map.com^$third-party -||ip2phrase.com^$third-party -||ipaddresslabs.com^$third-party -||ipapi.co^$third-party -||ipcatch.com^$third-party -||iper2.com^$third-party -||iperceptions.com^$third-party -||ipfind.com^$third-party -||ipfingerprint.com^$third-party -||ipgeolocation.io^$third-party -||ipgp.net^$third-party -||ipinfo.info^$third-party -||ipinfodb.com^$third-party -||ipinyou.com.cn^$third-party -||iplist.cc^$third-party -||iplocationtools.com^$third-party -||iplogger.org^$third-party,domain=~iplogger.com -||ipmeta.io^$third-party -||ipnoid.com^$third-party -||ipro.com^$third-party -||iproanalytics.com^$third-party -||iprotrk.com^$third-party -||iptrack.io^$third-party -||ipv6monitoring.eu^$third-party -||iqdata.ai^$third-party -||iqfp1.com^$third-party -||iqm.com^$third-party -||ironbeast.io^$third-party -||ist-track.com^$third-party -||istrack.com^$third-party -||ithinkthereforeiam.net^$third-party -||itrac.it^$third-party -||itracker360.com^$third-party -||itrackerpro.com^$third-party -||itracmediav4.com^$third-party -||ivcbrasil.org.br^$third-party -||ivwbox.de^$third-party -||iwebtrack.com^$third-party -||ixiaa.com^$third-party -||izatcloud.net^$third-party -||izea.com^$third-party -||izearanks.com^$third-party -||izooto.com^$third-party -||jirafe.com^$third-party -||jixie.io^$third-party -||journera.com^$third-party -||journity.com^$third-party -||js-delivr.com^$third-party -||jstracker.com^$third-party -||jumplead.com^$third-party -||justuno.com^$third-party -||jwmstats.com^$third-party -||k-analytix.com^$third-party -||kameleoon.com^$third-party -||kameleoon.eu^$third-party -||kaminari.click^$third-party -||kampyle.com^$third-party -||kantartns.lt^$third-party -||kaxsdc.com^$third-party -||keen.io^$third-party,domain=~keen.github.io|~keen.io -||keyade.com^$third-party -||keymetric.net^$third-party -||keytiles.com^$third-party -||keywee.co^$third-party -||keywordmax.com^$third-party -||keywordstrategy.org^$third-party -||kickfire.com^$third-party -||kieden.com^$third-party -||killerwebstats.com^$third-party -||kilometrix.de^$third-party -||kissmetrics.com^$third-party -||kissmetrics.io^$third-party -||kitbit.net^$third-party -||kitcode.net^$third-party -||kiwihk.net^$third-party -||klert.com^$third-party -||klldabck.com^$third-party -||km-sea.net^$third-party -||kmtx.io^$third-party -||knorex.com^$third-party -||knotch-cdn.com^$third-party -||knowledgevine.net^$third-party -||koddi.com^$third-party -||koji-analytics.com^$third-party -||kokos.click^$third-party -||komtrack.com^$third-party -||kopsil.com^$third-party -||ksyrium0014.com^$third-party -||l2.io^$third-party -||landingpg.com^$third-party -||lasagneandands.com^$third-party -||lead-123.com^$third-party -||leadberry.com^$third-party -||leadbi.com^$third-party -||leadboxer.com^$third-party -||leadchampion.com^$third-party -||leaddyno.com^$third-party -||leadelephant.com^$third-party -||leadfeeder.com^$third-party -||leadforce1.com^$third-party -||leadforensics.com^$third-party -||leadid.com^$third-party -||leadin.com^$third-party -||leadinfo.net^$third-party -||leadintel.io^$third-party -||leadintelligence.co.uk^$third-party -||leadlab.click^$third-party -||leadlife.com^$third-party -||leadmanagerfx.com^$third-party -||leadsius.com^$third-party -||leadsleap.com^$third-party -||leadsmonitor.io^$third-party -||leadspace.com^$third-party -||leadsrx.com^$third-party -||leafmedia.io^$third-party -||leanplum.com^$third-party -||legolas-media.com^$third-party -||lemnisk.co^$third-party -||letterboxtrail.com^$third-party -||levexis.com^$third-party -||lexity.com^$third-party -||lfeeder.com^$third-party -||lfov.net^$third-party -||linezing.com^$third-party -||linkconnector.com^$third-party -||linkifier.com^$third-party -||linkpulse.com^$third-party -||linksnappy.com^$third-party -||linksynergy.com^$third-party -||linkxchanger.com^$third-party -||listenlayer.com^$third-party -||litix.io^$third-party -||livesegmentservice.com^$third-party -||livesession.io^$third-party -||livestat.com^$third-party -||livetrafficfeed.com^$third-party -||llanalytics.com^$third-party -||lloogg.com^$third-party -||lngtd.com^$third-party -||localytics.com^$third-party -||lockview.cn^$third-party -||locotrack.net^$third-party -||logaholic.com^$third-party -||logbor.com^$third-party -||logcounter.com^$third-party -||logdy.com^$third-party -||logentries.com^$third-party -||loggly.com^$third-party -||logicsfort.com^$third-party -||loginfra.com^$third-party -||logmatic.io^$third-party -||lognormal.net^$third-party -||logrocket.com^$third-party -||logrocket.io^$third-party -||logz.io^$third-party -||lookery.com^$third-party -||loomi-prod.xyz^$third-party -||loopa.net.au^$third-party -||loopfuse.net^$third-party -||lopley.com^$third-party -||losstrack.com^$third-party -||lp4.io^$third-party -||lporirxe.com^$third-party -||lr-in-prod.com^$third-party -||lr-in.com^$third-party -||lr-ingest.com^$third-party -||lr-ingest.io^$third-party -||lr-intake.com^$third-party -||lsfinteractive.com^$third-party -||lucidel.com^$third-party -||luckyorange.com^$third-party -||luckyorange.net^$third-party -||lumatag.co.uk^$third-party -||luminate.com^$third-party -||lxtrack.com^$third-party -||lyngro.com^$third-party -||lypn.com^$third-party -||lypn.net^$third-party -||lytics.io^$third-party -||lytiks.com^$third-party -||m-pathy.com^$third-party -||m-t.io^$third-party -||m0mentum.net^$third-party -||m365log.com^$third-party -||m6r.eu^$third-party -||mabipa.com^$third-party -||madkudu.com^$third-party -||magicpixel.io^$third-party -||magiq.com^$third-party -||magnetmail1.net^$third-party -||magnify360.com^$third-party -||mailstat.us^$third-party -||maploco.com^$third-party -||mapmyuser.com^$third-party -||marinsm.com^$third-party -||marketingcloudfx.com^$third-party -||marketizator.com^$third-party -||marketperf.com^$third-party -||marketshot.com^$third-party -||marketshot.fr^$third-party -||maropost.com^$third-party -||marvelmetrix.com^$third-party -||masterstats.com^$third-party -||masterworks.digital^$third-party -||mathtag.com^$third-party -||matomo.cloud^$third-party -||matterlytics.com^$third-party -||maxtracker.net^$third-party -||maxymiser.com^$third-party -||maxymiser.net^$third-party -||mb4a.com^$third-party -||mbotvisit.com^$third-party -||mbsy.co^$third-party -||mbww.com^$third-party -||measure.ly^$third-party -||measured.com^$third-party -||measuremap.com^$third-party -||measurementapi.com^$third-party -||media01.eu^$third-party -||mediaarmor.com^$third-party -||mediaforgews.com^$third-party -||mediagauge.com^$third-party -||mediaglacier.com^$third-party -||mediago.io^$third-party -||mediametrics.ru^$third-party -||mediaplex.com^$third-party -||mediarithmics.com^$third-party -||mediaweaver.jp^$third-party -||mediego.com^$third-party -||mega-stats.com^$third-party -||memecounter.com^$third-party -||memo.co^$third-party -||mercadoclics.com^$third-party -||mercent.com^$third-party -||merchant-center-analytics.goog^$third-party -||metarouter.io^$third-party -||meteorsolutions.com^$third-party -||metricode.com^$third-party -||metricool.com^$third-party -||metrics0.com^$third-party -||metricsdirect.com^$third-party -||metricswave.com^$third-party -||mezzobit.com^$third-party -||miadates.com^$third-party -||mialbj6.com^$third-party -||micpn.com^$script,third-party -||microanalytics.io^$third-party -||midas-i.com^$third-party -||mieru-ca.com^$third-party -||minewhat.com^$third-party -||minkatu.com^$third-party -||mirabelsmarketingmanager.com^$third-party -||mixi.mn^$third-party -||mixpanel.com^$third-party -||mkt3261.com^$third-party -||mkt51.net^$third-party -||mkt6333.com^$third-party -||mkt941.com^$third-party -||mktoresp.com^$third-party -||ml-attr.com^$third-party -||mlclick.com^$third-party -||mlno6.com^$third-party -||mm7.net^$third-party -||mmccint.com^$third-party -||mno.link^$third-party -||mobalyzer.net^$third-party -||mobee.xyz^$third-party -||mochibot.com^$third-party -||mockingfish.com^$third-party -||momently.com^$third-party -||mon-pagerank.com^$third-party -||monetate.net^$third-party -||mongoosemetrics.com^$third-party -||monitis.com^$third-party -||monitus.net^$third-party -||monsido.com^$third-party -||monstat.com^$third-party -||mooseway.com^$third-party -||mopinion.com^$third-party -||motrixi.com^$third-party -||mouse3k.com^$third-party -||mouseflow.com^$third-party -||mousestats.com^$third-party -||mousetrace.com^$third-party -||movable-ink-397.com^$third-party -||movable-ink-6710.com^$third-party -||mparticle.com^$third-party -||mpianalytics.com^$third-party -||mpio.io^$third-party -||mplxtms.com^$third-party -||mpstat.us^$third-party -||msecure108.com^$third-party -||msgapp.com^$third-party -||msgfocus.com^$third-party -||msgtag.com^$third-party -||mstrlytcs.com^$third-party -||mtracking.com^$third-party -||murdoog.com^$third-party -||musthird.com^$third-party -||mutinycdn.com^$third-party -||mutinyhq.io^$third-party -||mvilivestats.com^$third-party -||mvtracker.com^$third-party -||mxcdn.net^$third-party -||myaffiliateprogram.com^$third-party -||mybloglog.com^$third-party -||myfastcounter.com^$third-party -||myfidevs.io^$third-party -||mynewcounter.com^$third-party -||mynsystems.com^$third-party -||myntelligence.com^$third-party -||myomnistar.com^$third-party -||mypagerank.net^$third-party -||myroitracking.com^$third-party -||myseostats.com^$third-party -||mysitetraffic.net^$third-party -||mysocialpixel.com^$third-party -||mytictac.com^$third-party -||mytrack.pro^$third-party -||myusersonline.com^$third-party -||myvisitorcounter.com^$third-party -||mywebstats.com.au^$third-party -||mywebstats.org^$third-party -||n-analytics.io^$third-party -||n74s9.com^$third-party -||naayna.com^$third-party -||naj.sk^$third-party -||nalook.com^$third-party -||natero.com^$third-party -||native.ai^$third-party -||natpal.com^$third-party -||naturaltracking.com^$third-party -||navdmp.com^$third-party -||navigator.io^$third-party -||navilytics.com^$third-party -||naytev.com^$third-party -||ncaudienceexchange.com^$third-party -||ndg.io^$third-party -||neatstats.com^$third-party -||nedstatbasic.net^$third-party -||nejmqianyan.cn^$third-party -||nelioabtesting.com^$third-party -||nero.live^$third-party -||net-filter.com^$third-party -||netaffiliation.com^$script,third-party -||netapplications.com^$third-party -||netbiscuits.net^$third-party -||netclickstats.com^$third-party -||netcore.co.in^$third-party -||netcoresmartech.com^$third-party -||netflame.cc^$third-party -||netgraviton.net^$third-party -||netmining.com^$third-party -||netmng.com^$third-party -||netratings.com^$third-party -||netrefer.com^$third-party -||newrelic.com^$third-party -||newrrb.bid^$third-party -||nextstat.com^$third-party -||nexx360.io^$third-party -||ngmco.net^$third-party -||nicequest.com^$third-party -||niftymaps.com^$third-party -||nik.io^$third-party -||ninjacat.io^$third-party -||nmrodam.com^$third-party -||noibu.com^$third-party -||noowho.com^$third-party -||nordicresearch.com^$third-party -||northstartravelmedia.com^$third-party -||notifyvisitors.com^$third-party -||nowinteract.com^$third-party -||npario-inc.net^$third-party -||nprove.com^$third-party -||nr-data.net^$third-party -||nr7.us^$third-party -||nrich.ai^$third-party -||nstracking.com^$third-party -||nuggad.net^$third-party -||nullitics.com^$third-party -||nuloox.com^$third-party -||numerino.cz^$third-party -||nyltx.com^$third-party -||nytlog.com^$third-party -||o-s.io^$third-party -||observerapp.com^$third-party -||octavius.rocks^$third-party -||octomarket.com^$third-party -||odoscope.com^$third-party -||offermatica.com^$third-party -||offerstrategy.com^$third-party -||ogt.jp^$third-party -||ohayoo.io^$third-party -||ohmystats.com^$third-party -||ojrq.net^$third-party -||okt.to^$third-party -||oktopost.com^$third-party -||ometria.com^$third-party -||omguk.com^$third-party -||omkt.co^$third-party -||omniconvert.com^$third-party -||onaudience.com^$third-party -||ondu.ru^$third-party -||onefeed.co.uk^$third-party -||onelink.me^$image,script,third-party -||onestat.com^$third-party -||oniad.com^$third-party -||online-metrix.net^$third-party -||onlinepbx.ru^$third-party -||onthe.io^$third-party -||opbandit.com^$third-party -||openclick.com^$third-party -||openhit.com^$third-party -||openlog.in^$third-party -||openstat.net^$third-party -||opentracker.net^$third-party -||openvenue.com^$third-party -||oproi.com^$third-party -||opstag.com^$third-party -||optify.net^$third-party -||optimix.asia^$third-party -||optimost.com^$third-party -||optimove.net^$third-party -||optorb.com^$third-party -||optoutadvertising.com^$third-party -||oracleinfinity.io^$third-party -||oranges88.com^$third-party -||orcapia.com^$third-party -||oribi.io^$third-party -||ositracker.com^$third-party -||otoshiana.com^$third-party -||ournet-analytics.com^$third-party -||outbid.io^$third-party -||outbrainimg.com^$third-party -||overstat.com^$third-party -||overtracking.com^$third-party -||owltrack.com^$third-party -||ownpage.fr^$third-party -||ox-bio.com^$third-party -||oxidy.com^$third-party -||p-td.com^$third-party -||p.raasnet.com^$third-party -||p0.raasnet.com^$third-party -||pa-oa.com^$third-party -||pabidding.io^$third-party -||pagefair.com^$third-party -||pages05.net^$third-party -||pagesense.io^$third-party -||parametre.online^$third-party -||parklogic.com^$third-party -||parrable.com^$third-party -||particularaudience.com^$third-party -||pass-1234.com^$third-party -||pbbl.co^$third-party -||pbgrd.com^$third-party -||pbstck.com^$third-party -||pcspeedup.com^$third-party -||pdbu.net^$third-party -||pdmntn.com^$third-party -||pdst.fm^$script,third-party -||peerius.com^$third-party -||pendo.io^$third-party -||percentmobile.com^$third-party -||perf-serving.com^$third-party -||perfalytics.com^$third-party -||perfectaudience.com^$third-party -||perfiliate.com^$third-party -||perfops.io^$third-party -||performanceanalyser.net^$third-party -||performancerevenues.com^$third-party -||performtracking.com^$third-party -||perimeterx.net^$third-party -||perion.com^$third-party -||perljs.com^$third-party -||permutive.com^$third-party -||personyze.com^$third-party -||petametrics.com^$image,third-party -||pghub.io^$third-party -||pgs.io^$third-party,domain=~publicgood.com -||phonalytics.com^$third-party -||phone-analytics.com^$third-party -||photorank.me^$third-party -||pi-stats.com^$third-party -||ping-fast.com^$third-party -||pingdom.net^$third-party -||pingil.com^$third-party -||pingmeter.com^$third-party -||pingomatic.com^$third-party -||pingometer.com^$third-party -||pinpoll.com^$third-party -||piratepx.com^$third-party -||pirsch.io^$third-party -||piwik.pro^$third-party,domain=~clearcode.cc|~clearcode.pl|~piwikpro.de -||pixel.ad^$third-party -||pixel.watch^$third-party -||pixeleze.com^$third-party -||pixelinteractivemedia.com^$third-party -||pixelpop.co^$third-party -||pixelrevenue.com^$third-party -||pixeltracker.co^$third-party -||pixeltracker.im^$third-party -||pixfuture.com^$third-party -||pjatr.com^$third-party -||pjtra.com^$third-party -||placemypixel.com^$third-party -||platformpanda.com^$third-party -||plausible-analytics.xyz^$third-party -||plausible.avris.it^$third-party -||plausible.io^$third-party -||plavxml.com^$third-party -||plecki.com^$third-party -||pleisty.com^$third-party -||plerdy.com^$third-party -||plexop.com^$third-party -||plugin.ws^$third-party -||pm0.net^$third-party -||pm14.com^$third-party -||pnstat.com^$third-party -||pntra.com^$third-party -||pntrac.com^$third-party -||pntrs.com^$third-party -||podcorn.com^$third-party -||poeticmetric.com^$third-party -||pointillist.com^$third-party -||pointmediatracker.com^$third-party -||pointomatic.com^$third-party -||polaranalytics.com^$third-party -||polarbyte.com^$third-party -||polarcdn-pentos.com^$third-party -||pop6serve.com^$third-party -||popsample.com^$third-party -||popt.in^$third-party,domain=~poptin.com -||populr.me^$third-party -||popupmaker.com^$third-party -||porngraph.com^$third-party -||portfold.com^$third-party -||posst.co^$third-party -||pranmcpkx.com^$third-party -||prchecker.info^$third-party -||prebidmanager.com^$third-party -||precisioncounter.com^$third-party -||predicta.net^$third-party -||predictiveresponse.net^$third-party -||premiumimpression.com^$third-party -||presage.io^$third-party -||prf.hn^$third-party -||privymktg.com^$third-party -||prnx.net^$third-party -||proclivitysystems.com^$third-party -||profitmetrics.io^$third-party -||programmatictrader.com^$third-party -||projectsunblock.com^$third-party -||promotionengine.com^$third-party -||proofpoint.com^$third-party -||proofpositivemedia.com^$third-party -||propermessage.io^$third-party -||provenpixel.com^$third-party -||provify.io^$third-party -||prprocess.com^$third-party -||prtracker.com^$third-party -||pstats.com^$third-party -||pt-trx.com^$third-party -||ptengine.cn^$third-party -||ptengine.com^$third-party -||ptengine.jp^$third-party -||ptmind.com^$third-party -||pto-slb-09.com^$third-party -||ptrk-wn.com^$third-party -||ptztvpremium.com^$third-party -||pubdream.com^$third-party -||pubexchange.com^$third-party -||publicgood.com^$third-party -||publicidees.com^$third-party -||publishflow.com^$third-party -||publytics.net^$third-party -||pubperf.com^$third-party -||pubplus.com^$third-party -||pubstack.io^$third-party -||pulleymarketing.com^$third-party -||pulseinsights.com^$third-party -||pulselog.com^$third-party -||pulsemaps.com^$third-party -||purevideo.com^$third-party -||pushauction.com^$third-party -||pushspring.com^$third-party -||pvd.to^$third-party -||pxaction.com^$third-party -||pxf.io^$image,script,third-party -||pxi.pub^$third-party -||pymx5.com^$third-party -||pzz.events^$third-party -||q-counter.com^$third-party -||q-stats.nl^$third-party -||qbaka.net^$third-party -||qbop.com^$third-party -||qflm.net^$third-party -||qlitics.com^$third-party -||qoijertneio.com^$third-party -||qortex.ai^$third-party -||qsstats.com^$third-party -||quadran.eu^$third-party -||qualaroo.com^$third-party -||quantcount.com^$third-party -||quantummetric.com^$third-party -||quartic.pl^$third-party -||qubitproducts.com^$third-party -||questionpro.com^$third-party,domain=~questionpro.com.au|~questionpro.eu -||questradeaffiliates.com^$third-party -||quillion.com^$third-party -||quintelligence.com^$third-party -||quitsnap-blue.com^$third-party -||qzlog.com^$third-party -||r7ls.net^$third-party -||radarstats.com^$third-party -||radiateb2b.com^$third-party -||rampanel.com^$third-party -||rampmetrics.com^$third-party -||rankingpartner.com^$third-party -||rankinteractive.com^$third-party -||rapidcounter.com^$third-party -||rapidstats.net^$third-party -||rapidtrk.net^$third-party -||rating.in^$third-party -||ravelin.click^$third-party -||rdcdn.com^$third-party -||reachforce.com^$third-party -||reachlocalservices.com^$third-party -||reactful.com^$third-party -||readertracking.com^$third-party -||readnotify.com^$third-party -||realcounter.eu^$third-party -||realcounters.com^$third-party -||reallyfreegeoip.org^$third-party -||realtimewebstats.com^$third-party -||realtimewebstats.net^$third-party -||realtracker.com^$third-party -||realytics.io^$third-party -||realzeit.io^$third-party -||recapture.io^$third-party -||recognified.net^$third-party -||recosenselabs.com^$third-party -||recoset.com^$third-party -||recruitics.com^$third-party -||redcounter.net^$third-party -||redfastlabs.com^$third-party -||redistats.com^$third-party -||redstatcounter.com^$third-party -||reedbusiness.net^$third-party -||referer.org^$third-party -||referforex.com^$third-party -||referralrock.com^$third-party -||refersion.com^$third-party -||reinvigorate.net^$third-party -||relead.com^$third-party -||relevant-digital.com^$third-party -||reliablecounter.com^$third-party -||relmaxtop.com^$third-party -||remailtarget.com^$third-party -||remarketstats.com^$third-party -||remind.me^$third-party -||renderbetter.net^$third-party -||repixel.co^$third-party -||report-uri.com^$third-party -||report-uri.io^$third-party -||requestmetrics.com^$third-party -||res-x.com^$third-party -||research-tool.com^$third-party -||researchintel.com^$third-party -||researchnow.co.uk^$third-party,domain=~dynata.com -||researchnow.com^$third-party -||resetdigital.co^$third-party -||responsetap.com^$third-party -||resulticks.com^$third-party -||retargetapp.com^$third-party -||retargetly.com^$third-party -||retargettracker.com^$third-party -||retentionscience.com^$third-party -||rettica.com^$third-party -||returnpath.net^$third-party -||revenuepilot.com^$third-party -||revenuescience.com^$third-party -||revenuewire.net^$third-party -||revhunter.tech^$third-party -||revlifter.io^$third-party -||revoffers.com^$third-party -||revolvermaps.com^$third-party -||rewardtv.com^$third-party -||reztrack.com^$third-party -||rfr-69.com^$third-party -||rhinoseo.com^$third-party -||riastats.com^$third-party -||richard-group.com^$third-party -||richmetrics.com^$third-party -||rightmoveanalytics.co.uk^$third-party -||riskid.security^$third-party -||rivrai.com^$third-party -||rktch.com^$third-party -||rktu.com^$third-party -||rlets.com^$third-party -||rmtag.com^$third-party -||rnengage.com^$third-party -||rng-snp-003.com^$third-party -||rnlabs.com^$third-party -||rockincontent.net^$third-party -||roeye.com^$third-party -||roeyecdn.com^$third-party -||roi-pro.com^$third-party -||roi-rocket.net^$third-party -||roirevolution.com^$third-party -||roiservice.com^$third-party -||roispy.com^$third-party -||rollbar.com^$third-party -||roosterfirework.com^$third-party -||rrimpl.com^$third-party -||rs0.co.uk^$third-party -||rs6.net^$image,script,third-party -||rtb123.com^$third-party -||rtbiq.com^$third-party -||rtox.net^$third-party -||rtrk.co.nz^$third-party -||rtrk.com^$third-party -||ru4.com^$third-party -||rudderlabs.com^$third-party -||rumanalytics.com^$third-party -||rumpelstiltskinhead.com^$third-party -||rztrkr.com^$third-party -||s3s-main.net^$third-party -||safe-click.net^$third-party -||safeanalytics.net^$third-party -||safevisit.online^$third-party -||sageanalyst.net^$third-party -||sailthru.com^$third-party -||salecycle.com^$third-party -||salesviewer.com^$third-party -||salesviewer.org^$third-party -||san-spr-01.net^$third-party -||sapha.com^$third-party -||sardine.ai^$third-party -||sas15k01.com^$third-party -||say.ac^$third-party -||sayutracking.co.uk^$third-party -||sbbanalytics.com^$third-party -||scaledb.com^$third-party -||scarf.sh^$third-party -||sciencerevenue.com^$third-party -||scorecardresearch.com^$third-party -||scoutanalytics.net^$third-party -||scrippscontroller.com^$third-party -||scripts21.com^$third-party -||scriptshead.com^$third-party -||sdk.birdeatsbug.com^$third-party -||sea-nov-1.com^$third-party -||sealmetrics.com^$third-party -||searchenginegenie.com^$third-party -||searchfeed.com^$third-party -||searchignite.com^$third-party -||searchplow.com^$third-party -||secureanalytic.com^$third-party -||securepaths.com^$third-party -||securitytrfx.com^$third-party -||sedotracker.com^$third-party -||seehits.com^$third-party -||seeip.org^$third-party -||seevolution.com^$third-party -||segment.com^$third-party -||segment.io^$third-party -||segmenthub.com^$third-party -||segmentify.com^$third-party -||segmetrics.io^$third-party -||selaris.com^$third-party -||selectmedia.asia^$third-party -||sellpoint.net^$third-party -||sellpoints.com^$third-party -||sellsy.com^$third-party,domain=~sellsy.fr -||semanticverses.com^$third-party -||semasio.net^$third-party -||sematext.com^$third-party -||sendtraffic.com^$third-party -||sensorsdata.cn^$third-party -||sentinelbi.com^$third-party -||sentry-cdn.com^$third-party,domain=~sentry.dev|~sentry.io -||sentry-cdn.top^$third-party -||sentry.io^$third-party -||seomonitor.ro^$third-party -||seomoz.org^$third-party -||seon.io^$third-party -||seondnsresolve.com^$third-party -||seoparts.net^$third-party -||serious-partners.com^$third-party -||serv-ac.com^$third-party -||servebom.com^$third-party -||serveipqs.com^$third-party -||servestats.com^$third-party -||servustats.com^$third-party -||sessioncam.com^$third-party -||sessionstack.com^$third-party -||sexcounter.com^$third-party -||sexystat.com^$third-party -||sf14g.com^$third-party -||shareasale-analytics.com^$third-party -||shareasale.com^$third-party -||sharpspring.com^$third-party -||shinystat.com^$third-party -||shippinginsights.com^$third-party -||shoelace.com^$third-party -||shoplytics.com^$third-party -||shoptimally.com^$third-party -||showheroes.com^$third-party -||sift.com^$third-party -||siftscience.com^$third-party -||signalfx.com^$third-party -||signifyd.com^$third-party -||signup-way.com^$third-party -||silverpop.com^$third-party -||silverpush.co^$third-party -||simonsignal.com^$third-party -||simpleanalytics.com^$third-party,domain=~simpleanalyticscdn.com -||simpleanalytics.io^$third-party -||simpleanalyticsbadge.com^$third-party -||simpleanalyticscdn.com^$third-party -||simpleanalyticsexternal.com^$third-party -||simplehitcounter.com^$third-party -||simplereach.com^$third-party -||simpli.fi^$third-party -||simplycast.us^$third-party -||simplymeasured.com^$third-party -||singlefeed.com^$third-party -||sirdata.eu^$third-party -||sirdata.io^$third-party -||site24x7rum.com^$third-party -||siteapps.com^$third-party -||sitebro.com^$third-party -||sitebro.net^$third-party -||sitecompass.com^$third-party -||siteimprove.com^$third-party -||siteimproveanalytics.com^$third-party -||siteimproveanalytics.io^$third-party -||sitelabweb.com^$third-party -||sitemeter.com^$third-party -||siteplug.com^$third-party -||sitereport.org^$third-party -||sitescout.com^$third-party -||siteswithcontent.com^$third-party -||sitetag.us^$third-party -||sitetagger.co.uk^$third-party -||sitetracker.com^$third-party -||skyglue.com^$third-party -||sl-ct5.com^$third-party -||slingpic.com^$third-party -||smallseotools.com^$third-party -||smart-digital-solutions.com^$third-party -||smart-dmp.com^$third-party -||smart-ip.net^$third-party -||smart-pixl.com^$third-party -||smartclip-services.com^$third-party -||smartctr.com^$third-party -||smarterhq.io^$third-party -||smarterremarketer.net^$third-party -||smartico.ai^$third-party -||smartlook.com^$third-party -||smartocto.com^$third-party -||smartology.co^$third-party -||smartracker.net^$third-party -||smartzonessva.com^$third-party -||smct.co^$third-party -||smileyhost.net^$third-party -||smrk.io^$third-party -||smtrk.net^$third-party -||snapdeal.biz^$third-party -||sni-dat.com^$third-party -||sniperlog.ru^$third-party -||sniphub.com^$third-party -||snitcher.com^$third-party -||snoobi.com^$third-party -||snowsignal.com^$third-party -||snplow.net^$third-party -||social-sb.com^$third-party -||socialprofitmachine.com^$third-party -||socialtrack.co^$third-party -||sociaplus.com^$third-party -||socketviking.net^$third-party -||socsi.in^$third-party -||sodoit.com^$third-party -||soflopxl.com^$third-party -||softonic-analytics.net^$third-party -||sojern.com^$third-party -||soko.ai^$third-party -||sokrati.com^$third-party -||sol-data.com^$third-party -||solosegment.com^$third-party -||sometrics.com^$third-party -||sophi.io^$third-party -||sophus3.com^$third-party -||soska.us^$third-party -||spamanalyst.com^$third-party -||spectate.com^$third-party -||speed-trap.com^$third-party -||speedcurve.com^$third-party -||speedhq.net^$third-party -||speetals.com^$third-party -||splash-screen.net^$third-party -||splitbee.io^$third-party -||splittag.com^$third-party -||splyt.com^$third-party -||sponsored.com^$third-party -||spring.de^$third-party -||springmetrics.com^$third-party -||sptag.com^$third-party -||sptag1.com^$third-party -||spylog.com^$third-party -||spylog.ru^$third-party -||spywords.com^$third-party -||squeezely.tech^$third-party -||squidanalytics.com^$third-party -||srmdata-us.com^$third-party -||srmdata.com^$third-party -||srpx.net^$third-party -||ssm.codes^$third-party -||star-cntr-5.com^$third-party -||stat-track.com^$third-party -||stat.re^$third-party -||stat.social^$third-party -||stat24.com^$third-party -||statcounter.com^$third-party -||statcounterfree.com^$third-party -||stated.io^$third-party -||stathat.com^$third-party -||stathound.com^$third-party -||staticiv.com^$third-party -||statisfy.net^$third-party -||statistiche-web.com^$third-party -||statowl.com^$third-party -||statpipe.ru^$third-party -||stats2.com^$third-party -||stats21.com^$third-party -||stats4all.com^$third-party -||stats4u.net^$third-party -||stats4you.com^$third-party -||statsbox.nl^$third-party -||statsig.com^$third-party -||statsigapi.net^$third-party -||statsinsight.com^$third-party -||statsit.com^$third-party -||statsmachine.com^$third-party -||statsrely.com^$third-party -||statssheet.com^$third-party -||statswebtown.com^$third-party -||statsy.net^$third-party -||stattooz.com^$third-party -||stattrax.com^$third-party -||statun.com^$third-party -||statuncore.com^$third-party -||steelhousemedia.com^$third-party -||stellaservice.com^$third-party -||sterlingwoods.com^$third-party -||stippleit.com^$third-party -||stormcontainertag.com^$third-party -||stormiq.com^$third-party -||storygize.net^$third-party -||streamsend.com^$third-party -||streem.com.au^$third-party -||streetmetrics.io^$third-party -||stripedcollar.net^$third-party -||stroeerdigitalmedia.de^$third-party -||strossle.it^$third-party -||strs.jp^$third-party -||studiostack.com^$third-party -||sub2tech.com^$third-party -||submitnet.net^$third-party -||successfultogether.co.uk^$third-party -||sugodeku.com^$third-party -||sumatra.ai^$third-party -||sumo.com^$third-party -||sumologic.com^$third-party,domain=~sumologic.net -||sumome.com^$third-party -||sundaysky.com^$third-party -||supercounters.com^$third-party -||superspeedapp.com^$third-party -||superstats.com^$third-party -||surfcounters.com^$third-party -||surveyscout.com^$third-party -||surveywriter.com^$third-party -||survicate.com^$third-party -||sweetgum.io^$third-party -||swetrix.org^$third-party -||swiss-counter.com^$third-party -||synergy-e.com^$third-party -||synerise.com^$third-party -||synthasite.net^$third-party -||sysomos.com^$third-party -||t-analytics.com^$third-party -||tadpull.com^$third-party -||tag4arm.com^$third-party -||tagcommander.com^$third-party -||tagdatax.com^$third-party -||tagmngrs.com^$third-party -||tagsrvcs.com^$third-party -||tagstaticx.com^$third-party -||tagtray.com/api^$third-party -||tamgrt.com^$third-party -||tapad.app^$third-party -||tapad.com^$third-party -||tapfiliate.com^$third-party -||taplytics.com^$third-party -||taps.io^$third-party -||tapstream.com^$third-party -||targetfuel.com^$third-party -||taskanalytics.com^$third-party -||tcactivity.net^$third-party -||tcimg.com^$third-party -||tctm.co^$third-party -||td573.com^$third-party -||tdstats.com^$third-party -||tealiumiq.com^$third-party -||techlab-cdn.com^$third-party -||telize.com^$third-party -||teljari.is^$third-party -||tellapart.com^$third-party -||tend.io^$third-party -||tentaculos.net^$third-party -||terabytemedia.com^$third-party -||tercept.com^$third-party -||testin.cn^$third-party -||tetoolbox.com^$third-party -||tgdaudience.com^$third-party -||tglyr.co^$third-party -||tgtag.io^$third-party -||thank-you.io^$third-party -||theadex.com^$third-party -||theagency.com^$third-party -||theardent.group^$third-party -||thebestlinks.com^$third-party -||thecounter.com^$third-party -||thermstats.com^$third-party -||thesearchagency.net^$third-party -||thinktot.com^$third-party -||thoughtmetric.io^$third-party -||tinb.net^$third-party -||tinycounter.com^$third-party -||tiser.com.au^$third-party -||tkqlhce.com^$third-party -||tl813.com^$third-party -||tmvtp.com^$third-party -||tnctrx.com^$third-party -||tns-counter.ru^$third-party -||tns-cs.net^$third-party -||top100bloggers.com^$third-party -||top100webshops.com^$third-party -||top10sportsites.com^$third-party -||topblogarea.com^$third-party -||topblogging.com^$third-party -||topdepo.com^$third-party -||toplist.cz^$third-party -||toplist.eu^$third-party -||topmalaysia.com^$third-party -||topofblogs.com^$third-party -||topstat.cn^$third-party -||torbit.com^$third-party -||touchclarity.com^$third-party -||tp88trk.com^$third-party -||trace-2000.com^$third-party -||trace.events^$third-party -||tracead.com^$third-party -||traceless.me^$third-party -||tracemyip.org^$third-party -||traceworks.com^$third-party -||track-re01.com^$third-party -||track-server-100.com^$third-party -||track-web.net^$third-party -||trackalyzer.com^$third-party -||trackcb.com^$third-party -||trackcmp.net^$third-party -||trackconsole.com^$third-party -||trackeame.com^$third-party -||trackedlink.net^$third-party -||trackedweb.net^$third-party -||trackertest.org^$third-party -||tracking202.com^$third-party -||trackingca.com^$third-party -||trackinglabs.com^$third-party -||trackingpro.pro^$third-party -||trackkas.com^$third-party -||trackmethod.com^$third-party -||trackmytarget.com^$third-party -||trackmyweb.net^$third-party -||trackonomics.net^$third-party -||trackset.com^$third-party -||trackword.biz^$third-party -||trackyourstats.com^$third-party -||tradelab.fr^$third-party -||tradescape.biz^$third-party -||trafex.net^$third-party -||trafficby.net^$third-party -||trafficengine.net^$third-party -||trafficfacts.com^$third-party -||trafficfuel.com^$third-party -||trafficguard.ai^$third-party -||trafficjoint.com^$third-party -||trafficregenerator.com^$third-party -||trafficroots.com^$third-party -||trafic.ro^$third-party -||trail-web.com^$third-party -||trailheadapp.com^$third-party -||trakken.de^$third-party -||transactionale.com^$third-party -||traq.li^$third-party -||travelrobotflower.com^$third-party -||traversedlp.com^$third-party -||trbas.com^$third-party -||treasuredata.com^$third-party -||trendcounter.com^$third-party -||trendemon.com^$third-party -||trialfire.com^$third-party -||tribl.io^$third-party -||triggeredmessaging.com^$third-party -||triggertag.gorillanation.com^$third-party -||triggit.com^$third-party -||trilogyed.com^$third-party -||triptease.io^$third-party -||triptease.net^$third-party -||trkjmp.com^$third-party -||trmads.eu^$third-party -||trstplse.com^$third-party -||trtl.ws^$third-party -||truconversion.com^$third-party -||truehits.in.th^$third-party -||truehits1.gits.net.th^$third-party -||truffle.one^$third-party -||truoptik.com^$third-party -||trysera.com^$third-party -||tscounter.com^$third-party -||tsk4.com^$third-party -||tsk5.com^$third-party -||tubemogul.com^$third-party -||tuinfra.com^$third-party -||tunnl.com^$third-party -||turn.com^$third-party -||tvsquared.com^$third-party -||twcount.com^$third-party -||tyxo.com^$third-party -||u-on.eu^$third-party -||u5e.com^$third-party -||uadx.com^$third-party -||ub-analytics.com^$third-party -||ubertags.com^$third-party -||ubertracking.info^$third-party -||uciservice.com^$third-party -||udkcrj.com^$third-party -||umami.is^$third-party -||umbel.com^$third-party -||uniqodo.com^$third-party -||united-infos.net^$third-party -||upapi.net^$third-party -||uplift-platform.com^$third-party -||upscore.com^$third-party -||upsellit.com^$third-party -||upstats.ru^$third-party -||uptain.de^$third-party -||uptracs.com^$third-party -||uptrendsdata.com^$third-party -||uralweb.ru^$third-party -||urlbrief.com^$third-party -||usabilitytools.com^$third-party -||usabilla.com^$third-party -||useinsider.com^$third-party -||useitbetter.com^$third-party -||useproof.com^$third-party -||user-api.com^$third-party -||user-clicks.com^$third-party -||user-red.com^$third-party -||usercycle.com^$third-party -||userlook.com^$third-party -||usermaven.com^$third-party -||userneeds.dk^$third-party -||userreplay.net^$third-party -||userreport.com^$third-party -||users-api.com^$third-party -||userzoom.com^$third-party -||usesfathom.com^$third-party -||usuarios-online.com^$third-party -||v12group.com^$third-party -||v3cdn.net^$third-party -||va-endpoint.com^$third-party -||valuedopinions.co.uk^$third-party -||vbanalytics.com^$third-party -||vbt.io^$third-party -||vdna-assets.com^$third-party -||veduy.com^$third-party -||veille-referencement.com^$third-party -||veinteractive.com^$third-party -||velaro.com^$third-party -||vendri.io^$third-party -||ventivmedia.com^$third-party -||vercel-analytics.com^$third-party -||vercel-insights.com^$third-party -||vertical-leap.co.uk^$third-party -||vertical-leap.net^$third-party -||verticalscope.com^$third-party -||verticalsearchworks.com^$third-party -||vertster.com^$third-party -||video.oms.eu^$third-party -||videoamp.com^$third-party -||videos.oms.eu^$third-party -||videostat.com^$third-party -||vilynx.com^$third-party -||vinlens.com^$third-party -||vinub.com^$third-party -||viralninjas.com^$third-party -||virgul.com^$third-party -||virool.com^$third-party -||virtualnet.co.uk^$third-party -||visibility-stats.com^$third-party -||visibli.com^$third-party -||visionarycompany52.com^$third-party -||visioncriticalpanels.com^$third-party -||visionsage.com^$third-party -||visistat.com^$third-party -||visitor-analytics.io^$third-party -||visitor-analytics.net^$third-party -||visitor-track.com^$third-party -||visitorglobe.com^$third-party -||visitorjs.com^$third-party -||visitorpath.com^$third-party -||visitorprofiler.com^$third-party -||visitorqueue.com^$third-party -||visitortracklog.com^$third-party -||visitorville.com^$third-party -||visitstreamer.com^$third-party -||visualdna.com^$third-party -||visualrevenue.com^$third-party -||visx.net^$third-party -||vivocha.com^$third-party -||vizisense.net^$third-party -||vizury.com^$third-party -||vmm-satellite1.com^$third-party -||vmmpxl.com^$third-party -||voicefive.com^$third-party -||volantix.com^$third-party -||volument.com^$third-party -||votistics.com^$third-party -||vprza.com^$third-party -||vtracker.net^$third-party -||w3counter.com^$third-party -||walmeric.com^$third-party -||waplog.net^$third-party -||waudit.cz^$third-party -||wbdx.fr^$third-party -||wbtrk.net^$third-party -||wc4.net^$image,third-party -||wdfl.co^$third-party -||wdsvc.net^$third-party -||we-stats.com^$third-party -||web-boosting.net^$third-party -||web-counter.net^$third-party -||web-stat.com^$third-party -||web-stat.fr^$third-party -||web-stat.net^$third-party -||webanalytic.info^$third-party -||webclicktracker.com^$third-party -||webcounter.co.za^$third-party -||webcounter.ws^$third-party -||webengage.co^$third-party -||webengage.com^$third-party -||webeyez.com^$third-party -||webflowmetrics.com^$third-party -||webforensics.co.uk^$third-party -||webglstats.com^$third-party -||webiqonline.com^$third-party -||webleads-tracker.com^$third-party -||webmasterplan.com^$third-party -||weborama.com^$third-party -||weborama.design^$third-party -||website-hit-counters.com^$third-party -||websiteceo.com^$third-party -||websiteperform.com^$third-party -||websitewelcome.com^$third-party -||webspectator.com^$third-party -||webstat.com^$third-party -||webstat.fr^$third-party -||webstat.net^$third-party -||webstat.se^$third-party -||webstats.com^$third-party -||webstats4u.com^$third-party -||webtrackingservices.com^$third-party -||webtraffic.se^$third-party -||webtrafficagents.com^$third-party -||webtrafficsource.com^$third-party -||webtraffiq.com^$third-party -||webtraxs.com^$third-party -||webtrekk-asia.net^$third-party -||webtrends-optimize.com^$third-party -||webtrends.com^$third-party -||webtrendslive.com^$third-party -||webtuna.com^$third-party -||wecantrack.com^$third-party -||wgsas.com^$third-party -||whale.camera^$third-party -||wheredoyoucomefrom.ovh^$third-party -||whitepixel.com^$third-party -||whoaremyfriends.com^$third-party -||whoaremyfriends.net^$third-party -||whoisonline.net^$third-party -||whoisvisiting.com^$third-party -||whosclickingwho.com^$third-party -||wickedreports.com^$third-party -||wideangle.co^$third-party -||widerplanet.com^$third-party -||wikia-beacon.com^$third-party -||wiredminds.de^$third-party -||wirewuss.com^$third-party -||wisetrack.net^$third-party -||withcabin.com^$third-party -||withcubed.com^$third-party -||wizaly.com^$third-party -||wmcdp.io^$third-party -||womtp.com^$third-party -||woopra-ns.com^$third-party -||woopra.com^$third-party -||wootric.com^$third-party -||worldflagcounter.com^$third-party -||worldlogger.com^$third-party -||wowanalytics.co.uk^$third-party -||wpdstat.com^$third-party -||wpfc.ml^$third-party -||wrating.com^$third-party -||wt-eu02.net^$third-party -||wt-safetag.com^$third-party -||wts.one^$third-party -||wts2.one^$third-party -||wtstats.com^$third-party -||wundercounter.com^$third-party -||wunderloop.net^$third-party -||www-google-analytics.l.google.com^$third-party -||www-path.com^$third-party -||wywy.com^$third-party -||wzrk.co^$third-party -||wzrkt.com^$third-party -||x-stat.de^$third-party -||xapkgame.com^$third-party -||xdisctracking.pw^$third-party -||xg4ken.com^$third-party -||xiti.com^$third-party -||xlisting.jp^$third-party -||xstats.net^$third-party -||xtremline.com^$third-party -||xxxcounter.com^$third-party -||xyztraffic.com^$third-party -||y-track.com^$third-party -||yamanoha.com^$third-party -||yaudience.com^$third-party -||ybotvisit.com^$third-party -||yellowbrix.com^$third-party -||yext-pixel.com^$third-party -||yextevents.com^$third-party -||ygsm.com^$third-party -||yieldbot.com^$third-party -||yieldify.com^$third-party -||yieldlift.com^$third-party -||yieldsoftware.com^$third-party -||yjtag.jp^$third-party -||yldr.io^$third-party -||ymetrica1.com^$third-party -||your-analytics.org^$third-party -||youramigo.com^$third-party -||youvisit.com^$third-party -||yu987.com^$third-party -||ywxi.net^$third-party,domain=~trustedsite.com -||z444o.com^$third-party -||zanox-affiliate.de^$third-party -||zanox.com^$third-party -||zarget.com^$third-party -||zdtag.com^$third-party -||zedwhyex.com^$third-party -||zeerat.com^$third-party -||zeotap.com^$third-party -||zesep.com^$third-party -||zeustechnology.com^$third-party -||zoomanalytics.co^$third-party -||zoomino.com^$third-party -||zoosnet.net^$third-party -||zoossoft.net^$third-party -||zprk.io^$third-party -||zuzab.com^$third-party -||zx-adnet.com^$third-party - -! *** easylist:easyprivacy/easyprivacy_trackingservers_mining.txt *** -.1.1.1.l80.js^$third-party -.n.2.1.js^$third-party -.n.2.1.l50.js^$third-party -.n.2.1.l60.js^$third-party -/cdn-cgi/pe/bag2?r[]=*eth-pocket.de -||109.123.233.251^ -||185.193.38.148^ -||35.194.26.233^ -||35.239.57.233^ -||45.32.105.134^ -||77.162.125.199^ -||a-calc.de^$third-party -||abc.pema.cl^ -||acbp0020171456.page.tl^ -||adless.io^ -||adminer.com^ -||altpool.pro^$third-party -||analytics.blue^ -||andlache.com^ -||authedwebmine.cz^$third-party,domain=~webmine.cz -||averoconnector.com^$third-party -||axoncoho.tk^$third-party -||bablace.com^ -||baiduccdn1.com^ -||becanium.com^ -||bewaslac.com^ -||biberukalap.com^ -||bitclub.network^ -||bitclubnetwork.com^ -||bitcoin-cashcard.com^ -||bmcm.pw^ -||bmnr.pw^ -||bmst.pw^ -||bmwebm.org^ -||brominer.com^$third-party -||browsermine.com^$third-party -||candid.zone^ -||cashbeet.com^ -||chmproxy.bid^ -||clgserv.pro^ -||cloud-miner.eu^ -||cloudflareinsights.com^$third-party -||cnhv.co^$third-party -||coin-have.com^$third-party -||coinerra.com^$third-party -||coinhiveproxy.com^$third-party -||coinimp.com$third-party -||coinimp.net$third-party -||coinminerz.com^$third-party -||coinminingonline.com^$third-party -||coinnebula.com^$third-party -||coinpot.co^$third-party -||coinwebmining.com^$third-party -||coinzillatag.com^$third-party -||cookiescript.info^$third-party -||crypto-coins.com^$third-party -||crypto-coins.info^$third-party -||crypto-loot.com^$third-party -||crypto-pool.fr^$third-party -||crypto-webminer.com^$third-party -||cryptobara.com^$third-party -||cryptonoter.com^$third-party -||de-nis-ner-mi-5.info^ -||devphp.org.ua^$third-party -||directprimal.com^$third-party -||dontbeevils.de^$third-party -||duckdns.org^$third-party,websocket -||easyhash.de^$third-party -||easyhash.io^$third-party -||eth-pocket.com^$third-party -||ethereum-cashcard.com^$third-party -||ethereum-pocket.com^$third-party -||ethtrader.de^$third-party -||eucsoft.com^$third-party -||f1tbit.com^ -||filmoljupci.com^ -||flare-analytics.com^$third-party -||formulawire.com^$third-party -||freecontent.date -||freecontent.stream -||g1thub.com^ -||gay-hotvideo.net^ -||goldoffer.online^$third-party -||gulf.moneroocean.stream^ -||gus.host^$third-party -||hashcoin.co^$third-party -||hashing.win^$third-party -||hashnest.com^$third-party -||hashvault.pro^$third-party -||hashzone.io^$third-party -||hemnes.win^$third-party -||hostcontent.live^$third-party -||hostingcloud.party -||igg.biz^$third-party -||igrid.org^ -||investhash.com^$third-party -||ipinfo.io^$third-party -||jscdndel.com^$third-party -||jscoinminer.com^ -||jsecoin.com^$third-party -||kinoprofi.org^$third-party -||laferia.cr^$third-party -||laserveradedomaina.com^$third-party -||lightminer.co^$third-party -||lmiutil.com^$third-party -||machieved.com^$third-party -||mepirtedic.com^$third-party -||mi-de-ner-nis3.info^ -||mine.nahnoji.cz^ -||minerad.com^ -||minero-proxy-*.sh^$third-party -||minero.cc^$third-party -||minescripts.info^$third-party -||minexmr.com^$third-party -||mininghub.club^$third-party -||mmpool.org^$third-party -||mollnia.com^$third-party -||monerise.com^$third-party -||monerominer.rocks^$third-party -||moneroocean.stream^$third-party -||mutinyhq.com^$third-party -||nabaza.com^$third-party -||nametraff.com^$third-party -||nerohut.com^$third-party -||nfwebminer.com^$third-party -||nimiq.com^$third-party -||nimiqpool.com^$third-party -||nimpool.io^$third-party -||notmining.org^$third-party -||omine.org^$third-party -||openguid.org^$third-party -||p2poolmining.com^$third-party -||pampopholf.com^ -||papoto.com^$third-party -||party-vqgdyvoycc.now.sh^$third-party -||pertholin.com^$third-party -||pool.nimiq.watch^$third-party -||pr0gram.org^$third-party -||rand.com.ru^ -||reauthenticator.com^ -||rocks.io^$third-party -||s7ven.com^$third-party -||serie-vostfr.com^$third-party -||serv1swork.com^ -||silimbompom.com^$third-party -||smartoffer.site^$third-party -||sourcecode.pro^$third-party -||spacepools.org^$third-party -||srcip.com^$third-party -||statdynamic.com^ -||static-sb.com^$third-party -||stonecalcom.com^$third-party -||str1kee.com^ -||supportxmr.com^$third-party -||sushipool.com^$third-party -||swiftmining.win^$third-party -||tercabilis.info^ -||thewhizproducts.com^$third-party -||thewise.com^$third-party -||tmmp.io^$third-party -||traffic.tc-clicks.com^$third-party -||trustiseverything.de^$third-party -||trustisimportant.fun^ -||tulip18.com^$third-party -||turnsocial.com^$third-party -||usa.cc^$third-party -||vkcdnservice.com^$third-party -||wasm.stream -||webmine.cz^$third-party -||webminepool.com^$third-party -||webminerpool.com^$third-party -||webmining.co^$third-party -||webxmr.com^$third-party -||wtm.monitoringservice.co^$third-party -||wtmtrack.com^$third-party -||xmrpool.net^$third-party -||zlx.com.br^$third-party - -! *** easylist:easyprivacy/easyprivacy_trackingservers_admiral.txt *** -||2znp09oa.com^ -||4jnzhl0d0.com^ -||5mcwl.pw^ -||6ldu6qa.com^ -||82o9v830.com^ -||abackafterthought.com^ -||abackchain.com^ -||abacksoda.com^ -||abandonedaction.com^ -||abilityscale.com^ -||aboardamusement.com^ -||aboardfork.com^ -||aboardkettle.com^ -||aboardlevel.com^ -||aboriginalboats.com^ -||abovechat.com^ -||abruptroad.com^ -||absentairport.com^ -||absentstream.com^ -||absorbingband.com^ -||absorbingcorn.com^ -||absorbingprison.com^ -||abstractedamount.com^ -||abstractedauthority.com^ -||absurdapple.com^ -||absurdwater.com^ -||abundantcoin.com^ -||acceptableauthority.com^ -||accurateanimal.com^ -||accuratecoal.com^ -||achieverknee.com^ -||acidicgrip.com^ -||acidicstraw.com^ -||acidpigs.com^ -||acousticsapparel.com^ -||acquireattention.com^ -||acridangle.com^ -||acridtwist.com^ -||actoramusement.com^ -||actuallysheep.com^ -||actuallysnake.com^ -||actuallything.com^ -||adamantsnail.com^ -||addictedattention.com^ -||additionant.com^ -||admiral.pub^ -||adorableanger.com^ -||adorableattention.com^ -||adventurousamount.com^ -||advertisementafterthought.com^ -||afraidlanguage.com^ -||aftermathbrother.com^ -||agilebreeze.com^ -||agreeablearch.com^ -||agreeablestew.com^ -||agreeabletouch.com^ -||aheadday.com^ -||aheadgrow.com^ -||aheadmachine.com^ -||ajaralarm.com^ -||ak0gsh40.com^ -||alertafterthought.com^ -||alertarithmetic.com^ -||aliasanvil.com^ -||alikeaddition.com^ -||alikearm.com^ -||aliveachiever.com^ -||alleyskin.com^ -||alleythecat.com^ -||allowmailbox.com^ -||alluringbucket.com^ -||aloofmetal.com^ -||aloofvest.com^ -||alpineactor.com^ -||amazingairplane.com^ -||ambientdusk.com^ -||ambientlagoon.com^ -||ambiguousafternoon.com^ -||ambiguousalarm.com^ -||ambiguousanger.com^ -||ambiguousdinosaurs.com^ -||ambiguousincome.com^ -||ambiguousquilt.com^ -||ambitiousagreement.com^ -||ambitiousanimal.com^ -||ambrosialsummit.com^ -||amethystzenith.com^ -||amuckafternoon.com^ -||amusedbucket.com^ -||amusementmorning.com^ -||amusinggirls.com^ -||analogwonder.com^ -||analyzecorona.com^ -||ancientact.com^ -||annoyedairport.com^ -||annoyedfifth.com^ -||annoyingacoustics.com^ -||annoyingclover.com^ -||anxiousapples.com^ -||apparatuslip.com^ -||aquaticalarm.com^ -||aquaticanswer.com^ -||aquaticowl.com^ -||ar1nvz5.com^ -||archswimming.com^ -||arcticamber.com^ -||argyresthia.com^ -||ariseboundary.com^ -||arithmeticadjustment.com^ -||arizonapuzzle.com^ -||aromamirror.com^ -||arrivegrowth.com^ -||artthevoid.com^ -||aspiringapples.com^ -||aspiringattempt.com^ -||aspiringtoy.com^ -||astonishingair.com^ -||astonishingfood.com^ -||astralhustle.com^ -||astrallullaby.com^ -||attendchase.com^ -||attractionbanana.com^ -||attractiveafternoon.com^ -||attractivecap.com^ -||audioarctic.com^ -||auntants.com^ -||auspiciousyard.com^ -||automaticflock.com^ -||automaticside.com^ -||automaticturkey.com^ -||availablerest.com^ -||avalonalbum.com^ -||averageactivity.com^ -||averageamusement.com^ -||awakebird.com^ -||awarealley.com^ -||awzbijw.com^ -||axiomaticalley.com^ -||axiomaticanger.com^ -||azuremystique.com^ -||backupcat.com^ -||badgeboat.com^ -||badgerabbit.com^ -||badgevolcano.com^ -||bagbeam.com^ -||baitbaseball.com^ -||balancemailbox.com^ -||balloonbelieve.com^ -||balloonbit.com^ -||balloontexture.com^ -||ballsbanana.com^ -||bananabarrel.com^ -||bandborder.com^ -||barbarousbase.com^ -||barbarousnerve.com^ -||baseballbone.com^ -||basilfish.com^ -||basketballbelieve.com^ -||baskettexture.com^ -||batbuilding.com^ -||battlebalance.com^ -||battlehope.com^ -||bawdybalance.com^ -||bawdybeast.com^ -||bawdypets.com^ -||beadbears.com^ -||beamincrease.com^ -||beamvolcano.com^ -||beancontrol.com^ -||bearmoonlodge.com^ -||beastbeef.com^ -||beautifulhobbies.com^ -||bedsberry.com^ -||beetleend.com^ -||beginnerpancake.com^ -||begintrain.com^ -||beneficialbeef.com^ -||benthose.com^ -||berserkhydrant.com^ -||bespokesandals.com^ -||bestboundary.com^ -||bewilderedbattle.com^ -||bewilderedblade.com^ -||bhcumsc.com^ -||bikepaws.com^ -||bikesboard.com^ -||billowybead.com^ -||billowybelief.com^ -||binspiredtees.com^ -||birthdaybelief.com^ -||bitterbear.com^ -||blackbrake.com^ -||bleachbubble.com^ -||bleachscarecrow.com^ -||bleedlight.com^ -||blesspizzas.com^ -||blissfulcrescendo.com^ -||blissfullagoon.com^ -||blotburn.com^ -||blueeyedblow.com^ -||blushingbeast.com^ -||blushingboundary.com^ -||blushingbread.com^ -||blushingwar.com^ -||boatsvest.com^ -||boilingbeetle.com^ -||boilingcredit.com^ -||boilingumbrella.com^ -||boneregret.com^ -||boostbehavior.com^ -||boredborder.com^ -||boredcrown.com^ -||boringberry.com^ -||boringcoat.com^ -||bouncyfront.com^ -||bouncyproperty.com^ -||boundarybusiness.com^ -||boundlessargument.com^ -||boundlessbrake.com^ -||boundlessveil.com^ -||brainybasin.com^ -||brainynut.com^ -||branchborder.com^ -||brandsfive.com^ -||brandybison.com^ -||brashbead.com^ -||bravebone.com^ -||breadbalance.com^ -||breakableinsurance.com^ -||breakerror.com^ -||breakfastboat.com^ -||breezygrove.com^ -||brianwould.com^ -||briefbears.com^ -||briefstem.com^ -||brighttoe.com^ -||briskstorm.com^ -||broadborder.com^ -||broadboundary.com^ -||broadcastbed.com^ -||broaddoor.com^ -||brothersbucket.com^ -||brotherslocket.com^ -||bruisebaseball.com^ -||brunchforher.com^ -||bubblebedroom.com^ -||bucketbean.com^ -||buildingknife.com^ -||bulbbait.com^ -||bumpydevelopment.com^ -||bunchance.com^ -||burgerbrush.com^ -||burgersalt.com^ -||burlywhistle.com^ -||burnbubble.com^ -||burstblade.com^ -||bushesbag.com^ -||businessbells.com^ -||bustlinganimal.com^ -||bustlingbath.com^ -||bustlingbook.com^ -||butterbulb.com^ -||butterburst.com^ -||buttonladybug.com^ -||cabledemand.com^ -||cakesdrum.com^ -||calculatingcircle.com^ -||calculatingtoothbrush.com^ -||calculatorcamera.com^ -||calculatorstatement.com^ -||calendarrate.com^ -||callousbrake.com^ -||calmcactus.com^ -||calmcough.com^ -||calypsocapsule.com^ -||cannonchange.com^ -||cannonjudo.com^ -||capablecows.com^ -||capablecup.com^ -||capriciouscorn.com^ -||capsquirrel.com^ -||captivatingcanyon.com^ -||captivatingillusion.com^ -||captivatingpanorama.com^ -||captivatingperformance.com^ -||carefuldolls.com^ -||carelesshat.com^ -||caringcast.com^ -||caringzinc.com^ -||carloforward.com^ -||carpentercolor.com^ -||carpentercomparison.com^ -||carriagecan.com^ -||carscannon.com^ -||cartkitten.com^ -||carvecakes.com^ -||castcream.com^ -||catalogcake.com^ -||catalogdiscovery.com^ -||catschickens.com^ -||cattlecommittee.com^ -||causecherry.com^ -||cautiouscamera.com^ -||cautiouscherries.com^ -||cautiouscrate.com^ -||cautiouscredit.com^ -||cavecurtain.com^ -||cdnral.com^ -||ceciliavenus.com^ -||celestialeuphony.com^ -||celestialspectra.com^ -||chaireggnog.com^ -||chairscrack.com^ -||chairsdonkey.com^ -||chalkoil.com^ -||changeablecats.com^ -||channelcamp.com^ -||chargecracker.com^ -||charmingplate.com^ -||charscroll.com^ -||cheerfulrange.com^ -||cheerycraze.com^ -||chemicalcoach.com^ -||cherriescare.com^ -||chessbranch.com^ -||chesscherry.com^ -||chesscolor.com^ -||chesscrowd.com^ -||chewcoat.com^ -||chickensstation.com^ -||childlikecook.com^ -||childlikecrowd.com^ -||childlikeexample.com^ -||childlikeform.com^ -||chilledliquid.com^ -||chingovernment.com^ -||chinsnakes.com^ -||chipperisle.com^ -||chivalrouscord.com^ -||chubbycreature.com^ -||chunkycactus.com^ -||cicdserver.com^ -||cinemabonus.com^ -||circlelevel.com^ -||clamcelery.com^ -||clammychicken.com^ -||clammytree.com^ -||clarifyverse.com^ -||cleanhaircut.com^ -||clearcabbage.com^ -||cloisteredcord.com^ -||cloisteredcurve.com^ -||cloisteredhydrant.com^ -||closedcows.com^ -||closefriction.com^ -||cloudhustles.com^ -||cloudjumbo.com^ -||cloudsdestruction.com^ -||clovercabbage.com^ -||clumsycar.com^ -||clumsyrock.com^ -||coachquartz.com^ -||coatfood.com^ -||cobaltoverture.com^ -||coffeesidehustle.com^ -||coldbalance.com^ -||coldcreatives.com^ -||colorfulafterthought.com^ -||colossalchance.com^ -||colossalclouds.com^ -||colossalcoat.com^ -||colossalcry.com^ -||combativecar.com^ -||combativedetail.com^ -||combbit.com^ -||combcattle.com^ -||combclover.com^ -||combcompetition.com^ -||cometquote.com^ -||comfortablecheese.com^ -||comfygoodness.com^ -||commonalmanac.com^ -||commonswing.com^ -||companyparcel.com^ -||comparereaction.com^ -||competitionbeetle.com^ -||compiledoctor.com^ -||completecabbage.com^ -||complextoad.com^ -||conceptualizereading.com^ -||concernedchange.com^ -||concernedchickens.com^ -||concernedcondition.com^ -||condemnedcomb.com^ -||conditionchange.com^ -||conditioncrush.com^ -||confesschairs.com^ -||configchain.com^ -||confusedcart.com^ -||connectashelf.com^ -||consciouschairs.com^ -||consciouscheese.com^ -||consciousdirt.com^ -||considermice.com^ -||consistpotato.com^ -||consumerzero.com^ -||controlcola.com^ -||controlhall.com^ -||controlswim.com^ -||convertbatch.com^ -||cooingcoal.com^ -||coordinatedbedroom.com^ -||coordinatedcoat.com^ -||coordinatedcub.com^ -||copperchickens.com^ -||copycarpenter.com^ -||copyrightaccesscontrols.com^ -||copytitle.com^ -||coralreverie.com^ -||cordcopper.com^ -||corgibeachday.com^ -||correctchaos.com^ -||cosmicsculptor.com^ -||cosmosjackson.com^ -||courageousbaby.com^ -||coverapparatus.com^ -||coverlayer.com^ -||cowscrayon.com^ -||cozydusk.com^ -||cozyhillside.com^ -||cozytryst.com^ -||crabbychin.com^ -||crackedsafe.com^ -||crafthenry.com^ -||crashchance.com^ -||cratecamera.com^ -||craterbox.com^ -||crawlclocks.com^ -||crayoncompetition.com^ -||creatorcherry.com^ -||creatorpassenger.com^ -||creaturecabbage.com^ -||creditcreature.com^ -||crimsonmeadow.com^ -||critictruck.com^ -||crookedcreature.com^ -||crowdedmass.com^ -||cruisetourist.com^ -||cryptvalue.com^ -||crystalboulevard.com^ -||crystalstatus.com^ -||cubchannel.com^ -||cubepins.com^ -||cuddlycake.com^ -||cuddlylunchroom.com^ -||culturedcamera.com^ -||culturedcrayon.com^ -||culturedfeather.com^ -||cumbersomecake.com^ -||cumbersomecar.com^ -||cumbersomecarpenter.com^ -||cumbersomecloud.com^ -||curiouschalk.com^ -||curioussuccess.com^ -||curlycannon.com^ -||currentcollar.com^ -||curtaincows.com^ -||curvedhoney.com^ -||curvedsquirrel.com^ -||curvycord.com^ -||curvycry.com^ -||cushiondrum.com^ -||cushionpig.com^ -||cutcurrent.com^ -||cutecalculator.com^ -||cutechin.com^ -||cutecushion.com^ -||cutepopcorn.com^ -||cuteturkey.com^ -||cyclopsdial.com^ -||dailydivision.com^ -||damagedadvice.com^ -||damageddistance.com^ -||damagedroll.com^ -||damdoor.com^ -||dampdock.com^ -||dancemistake.com^ -||dandydune.com^ -||dandyglow.com^ -||dangerouswinter.com^ -||dapperdiscussion.com^ -||dapperfloor.com^ -||dashingdirt.com^ -||dashingdrop.com^ -||dashingsweater.com^ -||datastoried.com^ -||daughterstone.com^ -||daymodern.com^ -||dazzlingbook.com^ -||deadpangate.com^ -||deafeningdock.com^ -||deafeningdowntown.com^ -||debonairdust.com^ -||debonairseashore.com^ -||debonairtree.com^ -||debonairway.com^ -||debugentity.com^ -||decidedrum.com^ -||decisivebase.com^ -||decisivedrawer.com^ -||decisiveducks.com^ -||decoroustitle.com^ -||decoycreation.com^ -||deerbeginner.com^ -||defeatedbadge.com^ -||defectivedress.com^ -||defensevest.com^ -||defiantrice.com^ -||degreechariot.com^ -||delegatediscussion.com^ -||delicatecascade.com^ -||delicateducks.com^ -||deliciousducks.com^ -||delightfulhour.com^ -||deltafault.com^ -||deluxecrate.com^ -||dependenttrip.com^ -||desertedbreath.com^ -||desertedrat.com^ -||desirebucket.com^ -||desiredirt.com^ -||deskdecision.com^ -||detailedglue.com^ -||detailedgovernment.com^ -||detailedkitten.com^ -||detectdinner.com^ -||detectdiscovery.com^ -||detourgame.com^ -||deviceseal.com^ -||deviceworkshop.com^ -||devilishdinner.com^ -||dewdroplagoon.com^ -||differentcoat.com^ -||difficultfog.com^ -||digestiondrawer.com^ -||dinnerquartz.com^ -||diplomahawaii.com^ -||direfuldesk.com^ -||disagreeabledrop.com^ -||discreetfield.com^ -||discreetquarter.com^ -||dispensablestranger.com^ -||distancefinger.com^ -||distributionneck.com^ -||distributionpocket.com^ -||distributiontomatoes.com^ -||disturbedquiet.com^ -||divehope.com^ -||divergentoffer.com^ -||dk4ywix.com^ -||dockdigestion.com^ -||docksalmon.com^ -||dogcollarfavourbluff.com^ -||dogsonclouds.com^ -||dogsshoes.com^ -||dollardelta.com^ -||dolldetail.com^ -||donkeyleaf.com^ -||doorbrazil.com^ -||doubledefend.com^ -||doubtdrawer.com^ -||doubtfulrainstorm.com^ -||downtowndirection.com^ -||dq95d35.com^ -||drabsize.com^ -||draconiancurve.com^ -||dragzebra.com^ -||drainpaste.com^ -||dramaticcondition.com^ -||dramaticdirection.com^ -||drawermice.com^ -||drawservant.com^ -||dreamycanyon.com^ -||dressexpansion.com^ -||driftpizza.com^ -||dripappliance.com^ -||driverequest.com^ -||drivingdirt.com^ -||drollwharf.com^ -||drydrum.com^ -||dustydime.com^ -||dustyhammer.com^ -||dustyrabbits.com^ -||dustywave.com^ -||dysfunctionalcellar.com^ -||eagereden.com^ -||eagerflame.com^ -||eagerknight.com^ -||earthquakeend.com^ -||earthquakescarf.com^ -||earthycopy.com^ -||earthyfarm.com^ -||eatablesquare.com^ -||echochief.com^ -||echoinghaven.com^ -||economicpizzas.com^ -||effervescentcoral.com^ -||effervescentvista.com^ -||efficaciouscactus.com^ -||effulgentnook.com^ -||effulgenttempest.com^ -||ejyymghi.com^ -||elasticchange.com^ -||elderlybean.com^ -||elderlyinsect.com^ -||elderlyscissors.com^ -||elderlytown.com^ -||elegantboulevard.com^ -||elephantqueue.com^ -||elusivebreeze.com^ -||elusivecascade.com^ -||elysiantraverse.com^ -||embellishedmeadow.com^ -||embermosaic.com^ -||emberwhisper.com^ -||eminentbubble.com^ -||eminentend.com^ -||emptyescort.com^ -||enchantedjudge.com^ -||enchantedskyline.com^ -||enchantingdiscovery.com^ -||enchantingenchantment.com^ -||enchantingmystique.com^ -||enchantingtundra.com^ -||enchantingvalley.com^ -||encourageidea.com^ -||encourageshock.com^ -||encouragingleaf.com^ -||encouragingthread.com^ -||encouragingvase.com^ -||encouragingwilderness.com^ -||endlesstrust.com^ -||endurablebulb.com^ -||endurableshop.com^ -||energeticexample.com^ -||energeticladybug.com^ -||engineergrape.com^ -||engineertrick.com^ -||enigmaticblossom.com^ -||enigmaticcanyon.com^ -||enigmaticvoyage.com^ -||enormousearth.com^ -||enormousfoot.com^ -||enterdrama.com^ -||entertainingeyes.com^ -||entertainskin.com^ -||enthusiasticdad.com^ -||enthusiasticring.com^ -||enthusiastictemper.com^ -||enviousshape.com^ -||enviousthread.com^ -||equablekettle.com^ -||erraticreaction.com^ -||etherealbamboo.com^ -||ethereallagoon.com^ -||etherealpinnacle.com^ -||etherealquasar.com^ -||etherealripple.com^ -||evanescentedge.com^ -||evasivejar.com^ -||eventexistence.com^ -||exampleshake.com^ -||excitingtub.com^ -||exclusivebrass.com^ -||executeknowledge.com^ -||exhibitsneeze.com^ -||expansioneggnog.com^ -||experienceeggs.com^ -||exquisiteartisanship.com^ -||extractobservation.com^ -||extralocker.com^ -||extramonies.com^ -||exuberantedge.com^ -||exuberanteyes.com^ -||exuberantsoda.com^ -||exultantdrop.com^ -||facilitatebreakfast.com^ -||facilitategrandfather.com^ -||fadechildren.com^ -||fadedprofit.com^ -||fadedsnow.com^ -||fadewaves.com^ -||faintflag.com^ -||fairfeeling.com^ -||fairiesbranch.com^ -||fairytaleflame.com^ -||fallaciousfifth.com^ -||falsefeet.com^ -||falseframe.com^ -||familiarrod.com^ -||famousquarter.com^ -||fancyactivity.com^ -||fancydune.com^ -||fancygrove.com^ -||fangfeeling.com^ -||fantasticsmash.com^ -||fantastictone.com^ -||farethief.com^ -||farmergoldfish.com^ -||farshake.com^ -||farsnails.com^ -||fascinatedfeather.com^ -||fastenfather.com^ -||fasterfineart.com^ -||fasterjson.com^ -||fatcoil.com^ -||faucetfoot.com^ -||faultycanvas.com^ -||faultyfowl.com^ -||fearfowl.com^ -||fearfulfear.com^ -||fearfulfish.com^ -||fearfulmint.com^ -||fearlessfaucet.com^ -||fearlesstramp.com^ -||featherstage.com^ -||feebleshock.com^ -||feeblestamp.com^ -||feignedfaucet.com^ -||fernwaycloud.com^ -||fertilefeeling.com^ -||fewjuice.com^ -||fewkittens.com^ -||fifthborder.com^ -||finalizeforce.com^ -||financefear.com^ -||finestpiece.com^ -||finitecube.com^ -||firecatfilms.com^ -||fireworkcamp.com^ -||firstendpoint.com^ -||firstfrogs.com^ -||firsttexture.com^ -||fitmessage.com^ -||fivesidedsquare.com^ -||fixedfold.com^ -||flakyfeast.com^ -||flameuncle.com^ -||flimsycircle.com^ -||flimsythought.com^ -||flippedfunnel.com^ -||floodprincipal.com^ -||flourishingcollaboration.com^ -||flourishingendeavor.com^ -||flourishinginnovation.com^ -||flourishingpartnership.com^ -||flowersornament.com^ -||flowerstreatment.com^ -||flowerycreature.com^ -||floweryfact.com^ -||floweryflavor.com^ -||floweryoperation.com^ -||flutteringfireman.com^ -||foambench.com^ -||foamyfood.com^ -||followborder.com^ -||forecasttiger.com^ -||foregoingfowl.com^ -||foretellfifth.com^ -||forevergears.com^ -||forgetfulflowers.com^ -||forgetfulsnail.com^ -||fortunatemark.com^ -||fourarithmetic.com^ -||fourfork.com^ -||fractalcoast.com^ -||frailflock.com^ -||frailfruit.com^ -||frailoffer.com^ -||framebanana.com^ -||franticcarpenter.com^ -||franticroof.com^ -||frantictrail.com^ -||frazzleart.com^ -||freakyglass.com^ -||freezingbuilding.com^ -||frequentflesh.com^ -||fretfulfurniture.com^ -||friendlycrayon.com^ -||friendlyfold.com^ -||friendwool.com^ -||frightenedpotato.com^ -||frogator.com^ -||frogtray.com^ -||fronttoad.com^ -||frugalfiestas.com^ -||fujiladder.com^ -||fumblingform.com^ -||fumblingselection.com^ -||functionalcrown.com^ -||functionalfeather.com^ -||funnyairplane.com^ -||funoverbored.com^ -||funoverflow.com^ -||furnstudio.com^ -||furryfork.com^ -||furryhorses.com^ -||futuristicapparatus.com^ -||futuristicfairies.com^ -||futuristicfifth.com^ -||futuristicfold.com^ -||futuristicframe.com^ -||fuzzyaudio.com^ -||fuzzybasketball.com^ -||fuzzyerror.com^ -||fuzzyflavor.com^ -||fuzzyweather.com^ -||fvl1f.pw^ -||gammamaximum.com^ -||gardenovens.com^ -||gaudyairplane.com^ -||gaudybeginner.com^ -||geekactive.com^ -||generalprose.com^ -||generateoffice.com^ -||gentlemoonlight.com^ -||giantsvessel.com^ -||giddycoat.com^ -||giftedglue.com^ -||giftedthumb.com^ -||giraffepiano.com^ -||gitcrumbs.com^ -||givevacation.com^ -||gladglen.com^ -||gladysway.com^ -||glamhawk.com^ -||gleamingcow.com^ -||gleaminghaven.com^ -||gleamingtrade.com^ -||glisteningguide.com^ -||glisteningsign.com^ -||glitteringbrook.com^ -||gloriousbeef.com^ -||glossysense.com^ -||glowingmeadow.com^ -||gluedpixel.com^ -||godlygeese.com^ -||goldfishgrowth.com^ -||gondolagnome.com^ -||goodbark.com^ -||gorgeousedge.com^ -||gorgeousground.com^ -||gracefulmilk.com^ -||gracefulsock.com^ -||grainmass.com^ -||grandfatherguitar.com^ -||grandiosefire.com^ -||grandioseguide.com^ -||grandmotherunit.com^ -||grapeopinion.com^ -||gravitygive.com^ -||gravitykick.com^ -||grayoranges.com^ -||grayreceipt.com^ -||greasegarden.com^ -||greasemotion.com^ -||greasysquare.com^ -||greetzebra.com^ -||greyinstrument.com^ -||gripcorn.com^ -||groovyornament.com^ -||grouchybrothers.com^ -||grouchypush.com^ -||grumpydime.com^ -||grumpydrawer.com^ -||guaranteelamp.com^ -||guardeddirection.com^ -||guardedschool.com^ -||guessdetail.com^ -||guidecent.com^ -||guildalpha.com^ -||guiltlessbasketball.com^ -||guitargrandmother.com^ -||gulliblegrip.com^ -||gullibleguitar.com^ -||gustocooking.com^ -||gustygrandmother.com^ -||h78xb.pw^ -||habitualhumor.com^ -||halcyoncanyon.com^ -||halcyonsculpture.com^ -||hallowedinvention.com^ -||haltingbadge.com^ -||haltingdivision.com^ -||haltinggold.com^ -||hammerhearing.com^ -||handleteeth.com^ -||handnorth.com^ -||handsomehose.com^ -||handsomeindustry.com^ -||handsomelyhealth.com^ -||handsomelythumb.com^ -||handsomeyam.com^ -||handyfield.com^ -||handyfireman.com^ -||handyincrease.com^ -||haplesshydrant.com^ -||haplessland.com^ -||happenhistory.com^ -||happysponge.com^ -||harborcaption.com^ -||harborcub.com^ -||hardtofindmilk.com^ -||harmonicbamboo.com^ -||harmonywing.com^ -||hatefulrequest.com^ -||hauntlist.com^ -||headydegree.com^ -||headyhook.com^ -||healflowers.com^ -||hearinglizards.com^ -||heartbreakingmind.com^ -||hearthorn.com^ -||heavydetail.com^ -||heavyplayground.com^ -||helpcollar.com^ -||helpflame.com^ -||hesitanttoothpaste.com^ -||hfc195b.com^ -||highfalutinbox.com^ -||highfalutinhoney.com^ -||highfalutinroom.com^ -||hilariouszinc.com^ -||historicalbeam.com^ -||historicalrequest.com^ -||hocgeese.com^ -||hollowafterthought.com^ -||homelycrown.com^ -||honeybulb.com^ -||honeygoldfish.com^ -||honeywhipped.com^ -||honorablehall.com^ -||honorablehydrant.com^ -||honorableland.com^ -||hoplaugh.com^ -||hosenews.com^ -||hospitablehall.com^ -||hospitablehat.com^ -||howdyinbox.com^ -||humdrumhat.com^ -||humdrumhobbies.com^ -||humdrumtouch.com^ -||hurtgrape.com^ -||hurtteeth.com^ -||hypnoticwound.com^ -||hystericalcloth.com^ -||hystericalfinger.com^ -||hystericalhelp.com^ -||i9w8p.pw^ -||icebergindigo.com^ -||idolscene.com^ -||idyllicjazz.com^ -||illfatedsnail.com^ -||illinvention.com^ -||illustriousoatmeal.com^ -||immensehoney.com^ -||imminentshake.com^ -||imperfectinstrument.com^ -||importantmeat.com^ -||importedincrease.com^ -||importedinsect.com^ -||importedplay.com^ -||importedpolice.com^ -||importlocate.com^ -||impossibleexpansion.com^ -||impossibleglue.com^ -||impossiblemove.com^ -||impulsehands.com^ -||impulsejewel.com^ -||impulselumber.com^ -||incomehippo.com^ -||incompetentjoke.com^ -||inconclusiveaction.com^ -||infamousstream.com^ -||informengine.com^ -||innatecomb.com^ -||innocentinvention.com^ -||innocentlamp.com^ -||innocentwax.com^ -||inputicicle.com^ -||inquisitiveice.com^ -||inquisitiveinvention.com^ -||instrumentinsect.com^ -||instrumentsponge.com^ -||intelligentscissors.com^ -||intentlens.com^ -||interestdust.com^ -||interestingpot.com^ -||interestsmoke.com^ -||internalcondition.com^ -||internalsink.com^ -||inventionpassenger.com^ -||investigatepin.com^ -||invitesugar.com^ -||iotapool.com^ -||irritatingfog.com^ -||itemslice.com^ -||ivykiosk.com^ -||j93557g.com^ -||jadedjoke.com^ -||jadeitite.com^ -||jaderooster.com^ -||jailbulb.com^ -||jamexistence.com^ -||jimny.pro^ -||joblessdrum.com^ -||jollylens.com^ -||joyfulkeen.com^ -||joyoussurprise.com^ -||jubilantcanyon.com^ -||jubilantglimmer.com^ -||justicejudo.com^ -||k54nw.pw^ -||kaputquill.com^ -||keenquill.com^ -||kindhush.com^ -||kitesquirrel.com^ -||kittyaction.com^ -||knitstamp.com^ -||knotkettle.com^ -||knottysticks.com^ -||knottyswing.com^ -||laboredlight.com^ -||laboredlocket.com^ -||lackadaisicalkite.com^ -||lagoonolivia.com^ -||lameletters.com^ -||lamplow.com^ -||languagelake.com^ -||largebrass.com^ -||lasttaco.com^ -||laughablecopper.com^ -||laughablelizards.com^ -||laughcloth.com^ -||laughdrum.com^ -||leapfaucet.com^ -||leaplunchroom.com^ -||learnedmarket.com^ -||leftliquid.com^ -||legalleg.com^ -||lemonpackage.com^ -||lemonsandjoy.com^ -||lettucecopper.com^ -||lettucelimit.com^ -||levelbehavior.com^ -||liftedknowledge.com^ -||lightcushion.com^ -||lightenafterthought.com^ -||literatelight.com^ -||livelumber.com^ -||livelylaugh.com^ -||livelyreward.com^ -||livingsleet.com^ -||lizardslaugh.com^ -||loadsurprise.com^ -||lonelyflavor.com^ -||longinglettuce.com^ -||longingtrees.com^ -||looseloaf.com^ -||lopsidedleather.com^ -||lorenzourban.com^ -||losslace.com^ -||loudlunch.com^ -||lovelydrum.com^ -||loveseashore.com^ -||lowlocket.com^ -||lp3tdqle.com^ -||ludicrousarch.com^ -||lumberamount.com^ -||lumberrule.com^ -||luminoussculptor.com^ -||lumpygnome.com^ -||lumpylumber.com^ -||lunchroomlock.com^ -||lustroushaven.com^ -||lyricshook.com^ -||maddeningpowder.com^ -||madebyintent.com^ -||magicaljoin.com^ -||magnetairport.com^ -||magnificentmeasure.com^ -||magnificentmist.com^ -||mailboxmeeting.com^ -||majesticmountainrange.com^ -||makeshiftmine.com^ -||maliciousmusic.com^ -||managedpush.com^ -||maniacalappliance.com^ -||mantrafox.com^ -||marblediscussion.com^ -||markahouse.com^ -||markedcrayon.com^ -||markedmeasure.com^ -||markedpail.com^ -||marketspiders.com^ -||marriedbelief.com^ -||marriedmailbox.com^ -||massivebasket.com^ -||massivemark.com^ -||matchjoke.com^ -||materialisticfan.com^ -||materialisticmark.com^ -||materialisticmoon.com^ -||materialmilk.com^ -||materialmoon.com^ -||materialparcel.com^ -||materialplayground.com^ -||meadowlullaby.com^ -||measlymiddle.com^ -||measurecaption.com^ -||meatydime.com^ -||meddleplant.com^ -||mediatescarf.com^ -||mediumshort.com^ -||mellowhush.com^ -||mellowmailbox.com^ -||melodicminute.com^ -||melodiouscomposition.com^ -||meltmilk.com^ -||memopilot.com^ -||memorizeline.com^ -||memorizematch.com^ -||memorizeneck.com^ -||memorycobweb.com^ -||mentorsticks.com^ -||meremark.com^ -||merequartz.com^ -||merryopal.com^ -||messagenovice.com^ -||messyoranges.com^ -||metroaverage.com^ -||mightyspiders.com^ -||militaryverse.com^ -||mimosamajor.com^ -||mindfulgem.com^ -||mindlessmark.com^ -||minormeeting.com^ -||minusmental.com^ -||minuteburst.com^ -||minuterhythm.com^ -||miscreantmine.com^ -||miscreantmoon.com^ -||mistyhorizon.com^ -||mittencattle.com^ -||mixedreading.com^ -||modifyeyes.com^ -||modularmental.com^ -||moldyicicle.com^ -||monacobeatles.com^ -||moorshoes.com^ -||motionflowers.com^ -||motionlessbag.com^ -||motionlessbelief.com^ -||motionlessmeeting.com^ -||mountainouspear.com^ -||movemeal.com^ -||mowfruit.com^ -||muddledaftermath.com^ -||muddledmemory.com^ -||mundanenail.com^ -||mundanepollution.com^ -||murkymeeting.com^ -||muteknife.com^ -||mutemailbox.com^ -||muterange.com^ -||mysteriousmonth.com^ -||naivestatement.com^ -||nappyattack.com^ -||nappyneck.com^ -||neatshade.com^ -||nebulacrescent.com^ -||nebulajubilee.com^ -||nebulousamusement.com^ -||nebulousripple.com^ -||necessarywax.com^ -||needlessnorth.com^ -||needyneedle.com^ -||negotiatetime.com^ -||neighborlywatch.com^ -||nervoussummer.com^ -||niftygraphs.com^ -||niftyhospital.com^ -||niftyjelly.com^ -||nightwound.com^ -||nocturnalloom.com^ -||nocturnalmystique.com^ -||noiselessplough.com^ -||nonchalantnerve.com^ -||nondescriptcrowd.com^ -||nondescriptnote.com^ -||nondescriptsmile.com^ -||nondescriptstocking.com^ -||nostalgicknot.com^ -||nostalgicneed.com^ -||nothingmethod.com^ -||nothingunit.com^ -||notifyglass.com^ -||nudgeduck.com^ -||nulldiscussion.com^ -||nullnorth.com^ -||numberlessring.com^ -||numerousnest.com^ -||nutritiousbean.com^ -||nuttyorganization.com^ -||oafishchance.com^ -||oafishobservation.com^ -||obscenesidewalk.com^ -||observantice.com^ -||oldfashionedoffer.com^ -||omgthink.com^ -||omniscientfeeling.com^ -||omniscientspark.com^ -||onlywoofs.com^ -||opalquill.com^ -||operationchicken.com^ -||operationnail.com^ -||opinionsurprise.com^ -||oppositeoperation.com^ -||optimallimit.com^ -||opulentsylvan.com^ -||orangeoperation.com^ -||organizationdogs.com^ -||orientedargument.com^ -||orionember.com^ -||ourblogthing.com^ -||outgoinggiraffe.com^ -||outsidevibe.com^ -||outstandingsnails.com^ -||ovalweek.com^ -||overconfidentfood.com^ -||overratedchalk.com^ -||owlsr.us^ -||oxygenfuse.com^ -||paddleangle.com^ -||pailcrime.com^ -||pailpatch.com^ -||painstakingpickle.com^ -||paintpear.com^ -||paintplantation.com^ -||paleleaf.com^ -||pamelarandom.com^ -||panickycurtain.com^ -||panickypancake.com^ -||panoramicbutter.com^ -||panoramicplane.com^ -||paradoxfactor.com^ -||parallelbulb.com^ -||parcelcreature.com^ -||parchedangle.com^ -||parchedsofa.com^ -||pardonpopular.com^ -||parentpicture.com^ -||parsimoniouspolice.com^ -||partplanes.com^ -||passengerpage.com^ -||passivepolo.com^ -||pastcabbage.com^ -||pastepot.com^ -||pastoralcorn.com^ -||pastoralroad.com^ -||pawsnug.com^ -||peacefullimit.com^ -||pedromister.com^ -||pedropanther.com^ -||pegasusplate.com^ -||penspade.com^ -||perceivequarter.com^ -||periodicpocket.com^ -||perkyjade.com^ -||perpetualpail.com^ -||persuadesock.com^ -||persuadesupport.com^ -||petiteumbrella.com^ -||philippinch.com^ -||photographpan.com^ -||physicalbikes.com^ -||piespower.com^ -||pietexture.com^ -||pigspie.com^ -||pinpointpotato.com^ -||piquantpigs.com^ -||piquantprice.com^ -||piquantstove.com^ -||piquantvortex.com^ -||pixeledhub.com^ -||pizzasnut.com^ -||placeframe.com^ -||placidactivity.com^ -||placidperson.com^ -||plainplayground.com^ -||plainrequest.com^ -||planebasin.com^ -||planesorder.com^ -||plantdigestion.com^ -||plantpotato.com^ -||plantrelation.com^ -||platescarecrow.com^ -||plausiblecable.com^ -||pleasantpump.com^ -||plotparent.com^ -||plotrabbit.com^ -||pluckypocket.com^ -||pocketfaucet.com^ -||podiumpresto.com^ -||poeticpackage.com^ -||pointdigestion.com^ -||pointlesshour.com^ -||pointlesspocket.com^ -||pointlessprofit.com^ -||pointlessrifle.com^ -||poisedpig.com^ -||polarismagnet.com^ -||polishedfolly.com^ -||politegoldfish.com^ -||politeplanes.com^ -||politicalflip.com^ -||politicalporter.com^ -||popcornfood.com^ -||popplantation.com^ -||possessivebucket.com^ -||possibleboats.com^ -||possiblepencil.com^ -||potatoinvention.com^ -||powderjourney.com^ -||powderprofit.com^ -||powerfulblends.com^ -||powerfulcopper.com^ -||preciouseffect.com^ -||preciousyoke.com^ -||predictplate.com^ -||prefixpatriot.com^ -||prepareplanes.com^ -||presetrabbits.com^ -||previousplayground.com^ -||previouspotato.com^ -||priceypies.com^ -||pricklydebt.com^ -||pricklyjourney.com^ -||pricklypies.com^ -||pricklyplastic.com^ -||pricklypollution.com^ -||printerplasma.com^ -||probablepartner.com^ -||processplantation.com^ -||producecopy.com^ -||producepickle.com^ -||productivepear.com^ -||productsurfer.com^ -||profitrumour.com^ -||profusesupport.com^ -||promiseair.com^ -||promopassage.com^ -||proofconvert.com^ -||propertypotato.com^ -||protestcopy.com^ -||proudprose.com^ -||psychedelicarithmetic.com^ -||psychedelicchess.com^ -||pubfs.com^ -||pubimgs.com^ -||publicsofa.com^ -||puffyloss.com^ -||puffypaste.com^ -||puffypull.com^ -||puffypurpose.com^ -||pulsatingmeadow.com^ -||pumpedpancake.com^ -||pumpedpurpose.com^ -||punyplant.com^ -||puppytooth.com^ -||purchasesuggestion.com^ -||purposepipe.com^ -||pushypipe.com^ -||puzzlingproperty.com^ -||q20jqurls0y7gk8.info^ -||quacksquirrel.com^ -||quaintborder.com^ -||quaintcan.com^ -||quaintlake.com^ -||quantumlagoon.com^ -||quantumshine.com^ -||quarterbean.com^ -||queenskart.com^ -||questionableobservation.com^ -||quicksandear.com^ -||quietknowledge.com^ -||quillkick.com^ -||quirkybliss.com^ -||quirkysugar.com^ -||quixoticnebula.com^ -||quizzicalpartner.com^ -||quizzicalzephyr.com^ -||rabbitbreath.com^ -||rabbitrifle.com^ -||radiantcanopy.com^ -||radiateprose.com^ -||railwayrainstorm.com^ -||railwayreason.com^ -||raintwig.com^ -||rainydirt.com^ -||rainyhand.com^ -||rainyrule.com^ -||rainystretch.com^ -||rainyzinc.com^ -||rambunctiousflock.com^ -||rambunctiousvoyage.com^ -||rangecake.com^ -||rangeplayground.com^ -||rapidkittens.com^ -||raresummer.com^ -||raspyteam.com^ -||reactjspdf.com^ -||readgoldfish.com^ -||readingguilt.com^ -||readymoon.com^ -||readysnails.com^ -||realizedoor.com^ -||realizerecess.com^ -||realizevacation.com^ -||rebelclover.com^ -||rebelhen.com^ -||rebelsubway.com^ -||rebelswing.com^ -||receiptcent.com^ -||receptivebranch.com^ -||receptiveink.com^ -||receptivereaction.com^ -||recessrain.com^ -||recommenddoor.com^ -||reconditeprison.com^ -||reconditerake.com^ -||reconditerespect.com^ -||recordbutter.com^ -||referdriving.com^ -||reflectivereward.com^ -||reflectivestatement.com^ -||refundradar.com^ -||regularplants.com^ -||regulatesleet.com^ -||rehabilitatereason.com^ -||rejectfairies.com^ -||relationrest.com^ -||reloadphoto.com^ -||rememberdiscussion.com^ -||rentinfinity.com^ -||repeatsweater.com^ -||replaceroute.com^ -||representativebat.com^ -||representativeray.com^ -||resolutekey.com^ -||resonantbrush.com^ -||resonantrock.com^ -||respectrain.com^ -||resplendentecho.com^ -||restrainstorm.com^ -||restructureinvention.com^ -||retrievemint.com^ -||rhetoricalactivity.com^ -||rhetoricalloss.com^ -||rhetoricalveil.com^ -||rhymezebra.com^ -||rhythmmoney.com^ -||rhythmrule.com^ -||richreceipt.com^ -||richstring.com^ -||righteouscrayon.com^ -||rightfulfall.com^ -||rigidrobin.com^ -||rigidveil.com^ -||rigorlab.com^ -||ringplant.com^ -||ringplayground.com^ -||ringsrecord.com^ -||ritzykey.com^ -||ritzyrepresentative.com^ -||ritzyveil.com^ -||robustbelieve.com^ -||rockpebbles.com^ -||rodeopolice.com^ -||rollconnection.com^ -||roofrelation.com^ -||roomyreading.com^ -||roseincome.com^ -||rottenray.com^ -||roughroll.com^ -||ruddycast.com^ -||ruddywash.com^ -||ruralrobin.com^ -||rusticprice.com^ -||ruthlessdegree.com^ -||ruthlessmilk.com^ -||ruthlessrobin.com^ -||sableloss.com^ -||sablesmile.com^ -||sablesong.com^ -||sadloaf.com^ -||saffronrefuge.com^ -||sagargift.com^ -||sailsuit.com^ -||saltsacademy.com^ -||samesticks.com^ -||samestretch.com^ -||samplesamba.com^ -||satisfycork.com^ -||satisfyingshirt.com^ -||satisfyingshow.com^ -||satisfyingspark.com^ -||savoryorange.com^ -||savorystructure.com^ -||saysidewalk.com^ -||scarcecard.com^ -||scarceshock.com^ -||scarcesign.com^ -||scarcestructure.com^ -||scarcesurprise.com^ -||scarecrowslip.com^ -||scarecrowslope.com^ -||scaredcomfort.com^ -||scaredsidewalk.com^ -||scaredsnake.com^ -||scaredsnakes.com^ -||scaredsong.com^ -||scaredstomach.com^ -||scaredstory.com^ -||scaredswing.com^ -||scarefowl.com^ -||scarfsmash.com^ -||scarfthought.com^ -||scatteredheat.com^ -||scatteredquiver.com^ -||scatteredstream.com^ -||scenicapparel.com^ -||scientificshirt.com^ -||scientificsneeze.com^ -||scintillatingscissors.com^ -||scintillatingsilver.com^ -||scintillatingspace.com^ -||scissorsstatement.com^ -||scrapesleep.com^ -||scratchsofa.com^ -||screechingfurniture.com^ -||screechingslip.com^ -||screechingstocking.com^ -||screechingstove.com^ -||scribbleson.com^ -||scribblestring.com^ -||scrollservice.com^ -||scrubswim.com^ -||seashoresociety.com^ -||seatsmoke.com^ -||secondhandfall.com^ -||secretivecub.com^ -||secretivesheep.com^ -||secretivestick.com^ -||secretspiders.com^ -||secretturtle.com^ -||sedatebun.com^ -||seedscissors.com^ -||seemlysuggestion.com^ -||selectionship.com^ -||selectivesummer.com^ -||selfishsea.com^ -||selfishsnake.com^ -||sendingspire.com^ -||sensorsmile.com^ -||sentinelp.com^ -||separateshow.com^ -||separatesilver.com^ -||separatesort.com^ -||seraphichorizon.com^ -||serendipityecho.com^ -||serenecascade.com^ -||serenesurf.com^ -||serioussuit.com^ -||serpentshampoo.com^ -||settleshoes.com^ -||shadeship.com^ -||shaggytank.com^ -||shakegoldfish.com^ -||shakesuggestion.com^ -||shakyseat.com^ -||shakysurprise.com^ -||shakytaste.com^ -||shallowblade.com^ -||shallowsmile.com^ -||shamerain.com^ -||shapecomb.com^ -||sharkskids.com^ -||sharppatch.com^ -||sheltercellar.com^ -||shesubscriptions.com^ -||shinesavage.com^ -||shinestuart.com^ -||shinypond.com^ -||shirtsidewalk.com^ -||shiveringspot.com^ -||shiverscissors.com^ -||shockinggrass.com^ -||shockingship.com^ -||shopbreakfast.com^ -||showsteel.com^ -||showstranger.com^ -||shrillspoon.com^ -||shutseashore.com^ -||shydinosaurs.com^ -||shyseed.com^ -||sickflock.com^ -||sicksmash.com^ -||signaturepod.com^ -||silentcredit.com^ -||silentwrench.com^ -||siliconslow.com^ -||silkysquirrel.com^ -||sillyscrew.com^ -||simplesidewalk.com^ -||simplisticstem.com^ -||simulateswing.com^ -||sincerebuffalo.com^ -||sinceresubstance.com^ -||singroot.com^ -||sinkbooks.com^ -||sixauthority.com^ -||sixscissors.com^ -||sizesidewalk.com^ -||skillfuldrop.com^ -||skillfulsock.com^ -||skisofa.com^ -||slaysweater.com^ -||sleepcartoon.com^ -||slimopinion.com^ -||slimyscarf.com^ -||slimyseashore.com^ -||slinksuggestion.com^ -||slipperysack.com^ -||slopesoap.com^ -||sloppycalculator.com^ -||sloppyearthquake.com^ -||smallbeginner.com^ -||smallershops.com^ -||smashquartz.com^ -||smashshoe.com^ -||smashsurprise.com^ -||smilewound.com^ -||smilingcattle.com^ -||smilingshake.com^ -||smilingswim.com^ -||smilingwaves.com^ -||smoggysnakes.com^ -||smoggysongs.com^ -||smoggystation.com^ -||snacktoken.com^ -||snailsengine.com^ -||snakemineral.com^ -||snakeslang.com^ -||snakesshop.com^ -||snakesstone.com^ -||sneakwind.com^ -||sneakystew.com^ -||snoresmile.com^ -||snowmentor.com^ -||soaprange.com^ -||soapsmoke.com^ -||soggysponge.com^ -||soggyzoo.com^ -||solarislabyrinth.com^ -||somberattack.com^ -||somberscarecrow.com^ -||sombersea.com^ -||sombersquirrel.com^ -||sombersticks.com^ -||somberstructure.com^ -||sombersurprise.com^ -||songssmoke.com^ -||songsterritory.com^ -||sootheside.com^ -||soothingglade.com^ -||sophisticatedstory.com^ -||sophisticatedstove.com^ -||sordidsmile.com^ -||sordidstation.com^ -||soresidewalk.com^ -||soresneeze.com^ -||sorethunder.com^ -||soretrain.com^ -||sortsail.com^ -||sortstructure.com^ -||sortsummer.com^ -||soundstocking.com^ -||sowlettuce.com^ -||spadelocket.com^ -||sparkgoal.com^ -||sparklesleet.com^ -||sparklingnumber.com^ -||sparklingshelf.com^ -||specialscissors.com^ -||specialsnake.com^ -||specialstatement.com^ -||spectacularstamp.com^ -||spellmist.com^ -||spellsalsa.com^ -||spendpest.com^ -||spidersboats.com^ -||spiffymachine.com^ -||spirebaboon.com^ -||spookyexchange.com^ -||spookyskate.com^ -||spookysleet.com^ -||spookyslope.com^ -||spookystitch.com^ -||spoonsilk.com^ -||spotlessstamp.com^ -||spotstring.com^ -||spottednoise.com^ -||spottedsmile.com^ -||spottedsnow.com^ -||springaftermath.com^ -||springolive.com^ -||springsister.com^ -||springsnails.com^ -||sproutingbag.com^ -||sprydelta.com^ -||spuriousair.com^ -||spuriousbase.com^ -||spurioussquirrel.com^ -||spurioussteam.com^ -||spuriousstranger.com^ -||spysubstance.com^ -||squalidscrew.com^ -||squashfriction.com^ -||squeakzinc.com^ -||squealingturn.com^ -||squeamishspot.com^ -||squirrelhands.com^ -||stakingbasket.com^ -||stakingscrew.com^ -||stakingshock.com^ -||stakingslope.com^ -||stakingsmile.com^ -||staleseat.com^ -||staleshow.com^ -||stalesummer.com^ -||stampknot.com^ -||standingnest.com^ -||standingsack.com^ -||standtrouble.com^ -||starkscale.com^ -||startingcars.com^ -||stat.pet^ -||statementsweater.com^ -||statuesquebrush.com^ -||stayaction.com^ -||steadfastseat.com^ -||steadfastsound.com^ -||steadfastsystem.com^ -||steadycopper.com^ -||stealsteel.com^ -||steepscale.com^ -||steepsister.com^ -||steepsquirrel.com^ -||stepcattle.com^ -||stepplane.com^ -||stepwisevideo.com^ -||stereoproxy.com^ -||stereotypedclub.com^ -||stereotypedsugar.com^ -||stewspiders.com^ -||stickssheep.com^ -||stickysheet.com^ -||stiffgame.com^ -||stiffstem.com^ -||stimulatingsneeze.com^ -||stingsquirrel.com^ -||stingycrush.com^ -||stingyshoe.com^ -||stingyspoon.com^ -||stockingsleet.com^ -||stockingsneeze.com^ -||stomachscience.com^ -||stonechin.com^ -||stopstomach.com^ -||storescissors.com^ -||storeslope.com^ -||storesurprise.com^ -||stormyachiever.com^ -||stormyfold.com^ -||stoveseashore.com^ -||straightnest.com^ -||strangeclocks.com^ -||strangersponge.com^ -||strangesink.com^ -||streetsort.com^ -||stretchsister.com^ -||stretchsneeze.com^ -||stretchsquirrel.com^ -||stringsmile.com^ -||stripedbat.com^ -||stripedburst.com^ -||strivesidewalk.com^ -||strivesquirrel.com^ -||strokesystem.com^ -||structurerod.com^ -||stupendousselection.com^ -||stupendoussleet.com^ -||stupendoussnow.com^ -||stupidscene.com^ -||stupidsnake.com^ -||sturdysnail.com^ -||subletyoke.com^ -||subsequentsand.com^ -||subsequentstew.com^ -||subsequentswim.com^ -||substantialcarpenter.com^ -||substantialgrade.com^ -||substantialstraw.com^ -||successfulscent.com^ -||suddensidewalk.com^ -||suddensnake.com^ -||suddensoda.com^ -||suddenstructure.com^ -||sugarcurtain.com^ -||sugarfriction.com^ -||suggestionbridge.com^ -||sulkybutter.com^ -||sulkycook.com^ -||summerobject.com^ -||sunshinegates.com^ -||superchichair.com^ -||superficialeyes.com^ -||superficialspring.com^ -||superficialsquare.com^ -||supervisegoldfish.com^ -||superviseshoes.com^ -||supportwaves.com^ -||suspectmark.com^ -||suspendseed.com^ -||swankysquare.com^ -||sweepsheep.com^ -||sweetslope.com^ -||swellstocking.com^ -||swelteringsleep.com^ -||swelteringsmile.com^ -||swimslope.com^ -||swingslip.com^ -||swordgoose.com^ -||syllablesight.com^ -||symbolizebeast.com^ -||synonymousrule.com^ -||synonymoussticks.com^ -||synthesizespoon.com^ -||systemizecoat.com^ -||tackytrains.com^ -||talentedsteel.com^ -||talltouch.com^ -||tangibleteam.com^ -||tangyamount.com^ -||tangycover.com^ -||tarttendency.com^ -||tastefulsongs.com^ -||tastelesstoes.com^ -||tastelesstrees.com^ -||tastelesstrucks.com^ -||tastesnake.com^ -||tawdryson.com^ -||tdzvm.pw^ -||tearfulglass.com^ -||techconverter.com^ -||tediousbear.com^ -||tediousticket.com^ -||tedioustooth.com^ -||teenytinycellar.com^ -||teenytinyshirt.com^ -||teenytinytongue.com^ -||teenyvolcano.com^ -||teethfan.com^ -||telephoneapparatus.com^ -||tempertrick.com^ -||tempttalk.com^ -||temptteam.com^ -||tendersugar.com^ -||tendertest.com^ -||terriblethumb.com^ -||terrificgoose.com^ -||terrifictooth.com^ -||testadmiral.com^ -||testedtouch.com^ -||texturetrick.com^ -||therapeuticcars.com^ -||thickticket.com^ -||thicktrucks.com^ -||thingsafterthought.com^ -||thingstaste.com^ -||thinkablefloor.com^ -||thinkablerice.com^ -||thinkabletrick.com^ -||thinkitten.com^ -||thinkitwice.com^ -||thirdrespect.com^ -||thirstylettuce.com^ -||thirstyswing.com^ -||thirstytwig.com^ -||thomastorch.com^ -||thoughtlessknot.com^ -||threechurch.com^ -||threetruck.com^ -||thrivecover.com^ -||throattrees.com^ -||thunderingrose.com^ -||thunderingtendency.com^ -||ticketaunt.com^ -||ticklesign.com^ -||tidymitten.com^ -||tightpowder.com^ -||timeterritory.com^ -||timetwig.com^ -||tinyswans.com^ -||tinytendency.com^ -||tiredthroat.com^ -||tiresomethunder.com^ -||toecircle.com^ -||toedrawer.com^ -||toolcapital.com^ -||toomanyalts.com^ -||toothbrushnote.com^ -||toothpasterabbits.com^ -||topichawaii.com^ -||torpidtongue.com^ -||torpidtoothpaste.com^ -||trackcaddie.com^ -||tradetooth.com^ -||trafficviews.com^ -||tranquilamulet.com^ -||tranquilarchipelago.com^ -||tranquilcanyon.com^ -||tranquilplume.com^ -||tranquilside.com^ -||tranquilveranda.com^ -||trappush.com^ -||traytouch.com^ -||treadbun.com^ -||tremendousearthquake.com^ -||tremendousplastic.com^ -||tremendoustime.com^ -||tritebadge.com^ -||tritethunder.com^ -||tritetongue.com^ -||troubleshade.com^ -||truckstomatoes.com^ -||truculentrate.com^ -||tumbleicicle.com^ -||tuneupcoffee.com^ -||twistloss.com^ -||twistsweater.com^ -||typicalairplane.com^ -||typicalteeth.com^ -||tzwaw.pw^ -||ubiquitousyard.com^ -||ultraoranges.com^ -||ultravalid.com^ -||unablehope.com^ -||unaccountablecreator.com^ -||unaccountablepie.com^ -||unarmedindustry.com^ -||unbecominghall.com^ -||unbecominglamp.com^ -||uncoveredexpert.com^ -||understoodocean.com^ -||unequalbrake.com^ -||unequaltrail.com^ -||unifyaddition.com^ -||uninterestedquarter.com^ -||unknowncontrol.com^ -||unknowncrate.com^ -||unknowntray.com^ -||untidyquestion.com^ -||untidyrice.com^ -||unusedstone.com^ -||unusualtitle.com^ -||unwieldyhealth.com^ -||unwieldyimpulse.com^ -||unwieldyplastic.com^ -||unwrittenspot.com^ -||uppitytime.com^ -||usedexample.com^ -||uselesslumber.com^ -||uttermosthobbies.com^ -||validmemo.com^ -||vanfireworks.com^ -||vanishmemory.com^ -||velvetnova.com^ -||velvetquasar.com^ -||vengefulgrass.com^ -||venomousvessel.com^ -||venusgloria.com^ -||verdantanswer.com^ -||verdantlabyrinth.com^ -||verdantsculpture.com^ -||verifyvegetable.com^ -||verseballs.com^ -||vibranthaven.com^ -||vibrantsundown.com^ -||vibrantvale.com^ -||victoriousrequest.com^ -||violetreading.com^ -||virgoplato.com^ -||virtualvincent.com^ -||vivaciousveil.com^ -||voicelessvein.com^ -||voicevegetable.com^ -||voidgoo.com^ -||volatileprofit.com^ -||volatilerainstorm.com^ -||volatilevessel.com^ -||voraciousgrip.com^ -||voyagepotato.com^ -||vq1qi.pw^ -||waggishpig.com^ -||waitingnumber.com^ -||wakefulcook.com^ -||wantingwindow.com^ -||warmafterthought.com^ -||warmquiver.com^ -||warnwing.com^ -||waryfog.com^ -||washbanana.com^ -||wateryvan.com^ -||waterywave.com^ -||waterywrist.com^ -||wearbasin.com^ -||wearywater.com^ -||websitesdude.com^ -||wellgroomedapparel.com^ -||wellgroomedbat.com^ -||wellgroomedhydrant.com^ -||wellmadefrog.com^ -||westpalmweb.com^ -||whimsicalgrove.com^ -||whineattempt.com^ -||whirlwealth.com^ -||whiskyqueue.com^ -||whisperingbadge.com^ -||whisperingcascade.com^ -||whisperingcrib.com^ -||whisperingsummit.com^ -||whispermeeting.com^ -||wigglygeese.com^ -||wigglyindustry.com^ -||wildcommittee.com^ -||wildernesscamera.com^ -||wirecomic.com^ -||wiredforcoffee.com^ -||wirypaste.com^ -||wistfulflight.com^ -||wittypopcorn.com^ -||womanear.com^ -||workableachiever.com^ -||workoperation.com^ -||worldlever.com^ -||worriednumber.com^ -||worriedwine.com^ -||wrapstretch.com^ -||wreckvolcano.com^ -||writewealth.com^ -||wrongpotato.com^ -||wrongwound.com^ -||wryfinger.com^ -||wtaccesscontrol.com^ -||xovq5nemr.com^ -||yamstamp.com^ -||yieldingwoman.com^ -||youngmarble.com^ -||youthfulnoise.com^ -||zbwp6ghm.com^ -||zealousfield.com^ -||zephyrcatalyst.com^ -||zephyrlabyrinth.com^ -||zestycrime.com^ -||zestyhorizon.com^ -||zestywire.com^ -||zipperxray.com^ -||zippywind.com^ -||zlp6s.pw^ -||zonewedgeshaft.com^ - -! *** easylist:easyprivacy/easyprivacy_trackingservers_notifications.txt *** -||accengage.net^$third-party -||actirinius.com^$third-party -||aimtell.com^$third-party -||alertme.news^$third-party -||amazonaws.com/cdn.aimtell.com/ -||aswpsdkeu.com^$third-party -||aswpsdkus.com^ -||bildirt.com^$third-party -||bosspush.com^$third-party -||browserpusher.com^$third-party -||cdn-sitegainer.com^$third-party -||cleverpush.com^$third-party -||copush.com^$third-party -||cracataum.com^$third-party -||danorenius.com^$third-party -||dengage.com^$third-party -||edrone.me^$third-party -||feedify.net^$third-party -||feraciumus.com^$third-party -||fernomius.com^$third-party -||fkondate.com^$third-party -||foxpush.com^$third-party -||foxpush.net^$third-party -||getback.ch^$third-party -||getnotix.co^$third-party -||getpush.net^$third-party -||getpushmonkey.com^$third-party -||gravitec.net^$third-party -||heroesdom.com^$third-party -||hrbpark.bid^$third-party -||jeeng.com^$third-party -||kattepush.com^$third-party -||letreach.com^$third-party -||lifterpopup.com^$third-party -||master-push.com^$third-party -||master-push.net^$third-party -||misrepush.com^$third-party -||moengage.com^$third-party -||mypush.online^$third-party -||najva.com^$third-party -||nativesubscribe.pro^$third-party -||netmera-web.com^$third-party -||notifadz.com^$third-party -||notify.solutions^$third-party -||notiks.io^$third-party -||notiksio.com^$third-party -||notix.io^$third-party -||on-push.com^$third-party -||onepush.app^$third-party -||outfunnel.com^$third-party -||pn.vg^$third-party -||provesrc.com^$third-party -||psh.one^$third-party -||push-ad.com^$third-party -||push-free.com^$third-party -||push-house.net^$third-party -||push.delivery^$third-party -||push7.jp^$third-party -||pushalert.co^$third-party -||pushbird.com^$third-party -||pushbullet.com^$third-party -||pushengage.com^$third-party -||pushible.com^$third-party -||pushify.com^$third-party -||pushmaster-cdn.xyz^ -||pushowl.com^$third-party -||pushprofit.ru^$third-party -||pushpushgo.com^$third-party -||pushwize.com^$third-party -||pushwoosh.com^$third-party -||reprocautious.com^$third-party -||sbi-push.com^$third-party -||sendpulse.com^$third-party -||shroughtened.com^$third-party -||snd.tc^$third-party -||subscribers.com^$third-party -||truenat.bid^$third-party -||truepush.com^$third-party -||unative.com^$third-party -||urbanairship.com^ -||viapush.com^$third-party -||webpu.sh^$third-party -||webpushr.com^$third-party -||webpushs.com^$third-party -||whiteclick.biz^$third-party -||wonderpush.com^$third-party -||wwclickserv.club^$third-party -||xtremepush.com^$third-party - -! *** easylist:easyprivacy/easyprivacy_trackingservers.txt *** -||google-analytics-cn.com^ -||googleoptimize-cn.com^ -||googletagmanager-cn.com^ -! IP tracking -||0.0.0.1^ -! Bright Data https://github.com/AdguardTeam/AdGuardSDNSFilter/issues/1580 -||brdtest.com^ -||brdtnet.com^ -||brightdata.com^$third-party -||brightdata.de^$third-party -||luminati.io^ -||perr.l-agent.me^ -||perr.l-err.biz^ -! Block ping -$ping,third-party -! https://www.opensubtitles.org/ -$third-party,xmlhttprequest,domain=opensubtitles.org -! Oracle -||addthis.com^$third-party -||addthiscdn.com^$domain=~addthis.com -||addthisedge.com^$third-party -! revprotect -||pphwrevr.com^$third-party -||protectcrev.com^$third-party -||protectsubrev.com^$third-party -||revcatch.com^$third-party -||revprotect.com^$third-party -! Marketo email tracking domains https://github.com/easylist/easylist/issues/6475 -||mkto-*.com^$third-party -! Fingerprinting -||breaktime.com.tw^$third-party -||brightedge.com^$third-party -||citrusad.net^$third-party -||clickguardian.app^$third-party -||clickyab.com^$third-party -||fpjscdn.net^ -||guoshipartners.com^$third-party -||klangoo.com^$third-party -||p30rank.ir^$third-party -||ppcprotect.com^$third-party -||push4site.com^$third-party -||ravelin.net^$third-party -||simility.com^$third-party -||spideraf.com^$third-party -!-----------------International third-party tracking domains-----------------! -! *** easylist:easyprivacy/easyprivacy_trackingservers_international.txt *** -||123-counter.de^$third-party -||193.197.158.209^$third-party,domain=~statistik.lubw.baden-wuerttemberg.de.ip -||212.95.32.75^$third-party,domain=~ipcounter.de.ip -||24log.de^$third-party -||3ng6p6m0.de^$third-party -||4stats.de^$third-party -||active-tracking.de^$third-party -||adc-serv.net^$third-party -||adclear.net^$third-party -||adcrowd.com^$third-party -||admeira.ch^$third-party -||adquality.ch^$third-party -||adtraxx.de^$third-party -||adtriba.com^$third-party -||amunx.de^$third-party -||analytics.rechtslupe.org^ -||andyhoppe.com^$third-party -||anormal-tracker.de^$third-party -||area51.to^$third-party -||asadcdn.com^$third-party -||atsfi.de^$third-party -||audiencemanager.de^$third-party -||audienzz.ch^$third-party -||avencio.de^$third-party -||backlink-test.de^$third-party -||backlinkdino.de^$third-party -||bekannt-im-web.de^$third-party -||belboon.de^$third-party -||beliebtestewebseite.de^$third-party -||besucherstats.de^$third-party -||besucherzaehler-counter.de^$third-party -||besucherzaehler-homepage.de^$third-party -||besucherzaehler-zugriffszaehler.de^$third-party -||besucherzaehler.org^$third-party -||besucherzahlen.com^$third-party -||betarget.de^$third-party -||bf-tools.net^$third-party -||blacktri.com^$third-party -||blog-o-rama.de^$third-party -||blog-webkatalog.de^$third-party -||blogcounter.com^$third-party -||blogcounter.de^$third-party -||bloggeramt.de^$third-party -||bloggerei.de^$third-party -||blogtraffic.de^$third-party -||bluecounter.de^$third-party -||bonitrust.de^$third-party -||bonuscounter.de^$third-party -||businessclick.ch^$third-party -||checkeffect.at^$third-party -||clickmap.ch^$third-party -||content-garden.com^$third-party -||contiamo.com^$third-party -||count24.de^$third-party -||countar.de^$third-party -||counter-go.de^$third-party -||counter-gratis.com^$third-party -||counter-kostenlos.info^$third-party -||counter-kostenlos.net^$third-party -||counter-treff.de^$third-party -||counter-zaehler.de^$third-party -||counter.de^$third-party -||counter27.ch^$third-party -||countercity.net^$third-party -||counterlevel.de^$third-party -||counteronline.de^$third-party -||counterseite.de^$third-party -||counterserver.de^$third-party -||counterstation.de^$third-party -||counterstatistik.de^$third-party -||counthis.com^$third-party -||counti.de^$third-party -||countino.de^$third-party -||countit.ch^$third-party -||countnow.de^$third-party -||counto.de^$third-party -||countok.de^$third-party -||countyou.de^$third-party -||cptrack.de^$third-party -||cya1t.net^$third-party -||dcmn.io^$third-party -||df-srv.de^$third-party -||die-rankliste.com^$third-party -||digidip.net^$third-party -||directcounter.de^$third-party -||divolution.com^$third-party -||dl8.me^$third-party -||dreamcounter.de^$third-party -||durchsichtig.xyz^ -||eanalyzer.de^$third-party -||easytracking.de^$third-party -||econda-monitor.de^$third-party -||edococounter.de^$third-party -||edtp.de^$third-party -||emetriq.de^$third-party -||etracker.de^$third-party -||etrust.eu^$third-party -||euro-pr.eu^$third-party -||eurocounter.com^$third-party -||exapxl.de^$third-party -||faibl.org^$third-party -||fast-counter.net^$third-party -||fastcounter.de^$third-party -||fixcounter.com^$third-party -||free-counters.net^$third-party -||freihit.de^$third-party -||fremaks.net^$third-party -||fun-hits.com^$third-party -||gacela.eu^$third-party -||generaltracking.de^$third-party -||gezaehlt.de^$third-party -||gft2.de^$third-party -||giga-abs.de^$third-party -||gostats.de^$third-party -||gratis-besucherzaehler.de^$third-party -||gratis-counter-gratis.de^$third-party -||greatviews.de^$third-party -||grfz.de^$third-party -||haymarketstat.de^$third-party -||healte.de^$third-party -||hitmaster.de^$third-party -||hot-count.com^$third-party -||hstrck.com^$third-party -||htm1.ch^$third-party -||hung.ch^$third-party -||iivt.com^$third-party -||imcht.net^$third-party -||ingenioustech.biz^$third-party -||intelliad.de^$third-party -||interaktiv-net.de^$third-party -||interhits.de^$third-party -||ioam.de^$third-party -||ipcount.net^$third-party -||iyi.net^$third-party -||kctag.net^$third-party -||keytrack.de^$third-party -||kostenlose-counter.com^$third-party -||kupona.de^$third-party -||lddt.de^$third-party -||leserservice-tracking.de^$third-party -||link-empfehlen24.de^$third-party -||listrakbi.com^$third-party -||lokalleads-cci.com^$third-party -||losecounter.de^$third-party -||lumitos.com^$third-party -||mairdumont.com^$third-party -||marketing-page.de^$third-party -||matelso.de^$third-party -||mateti.net^$third-party -||md-nx.com^$third-party -||meetrics.net^$third-party -||mengis-linden.org^$third-party -||metalyzer.com^$third-party -||microcounter.de^$third-party -||mindtake.com^$third-party -||motorpresse-statistik.de^$third-party -||mps-gba.de^$third-party -||mr-rank.de^$third-party -||multicounter.de^$third-party -||my-ranking.de^$third-party -||my-stats.info^$third-party -||netcounter.de^$third-party -||netdebit-counter.de^$third-party -||netupdater.info^$third-party -||netzaehler.de^$third-party -||netzstat.ch^$third-party -||observare.de^$third-party -||odoscope.cloud^$third-party -||oewabox.at^$third-party -||offer-go.com^$third-party -||oghub.io^$third-party -||optimierung-der-website.de^$third-party -||ourstats.de^$third-party -||page-hit.de^$third-party -||pagerank-linkverzeichnis.de^$third-party -||pagerank-online.eu^$third-party -||pagerank-suchmaschine.de^$third-party -||pc-agency24.de^$third-party -||pimpmypr.de^$third-party -||plexworks.de^$third-party -||powercount.com^$third-party -||ppro.de^$third-party -||pr-chart.com^$third-party -||pr-linktausch.de^$third-party -||pr-sunshine.de^$third-party -||prnetwork.de^$third-party -||productsup.com^$third-party -||prudsys-rde.de^$third-party -||ptadsrv.de^$third-party -||rank4all.eu^$third-party -||rankchamp.de^$third-party -||ranking-charts.de^$third-party -||ranking-counter.de^$third-party -||ranking-hits.de^$third-party -||ranking-links.de^$third-party -||redretarget.com^$third-party -||refinedads.com^$third-party -||reshin.de^$third-party -||retailads.net^$third-party -||rightstats.com^$third-party -||royalcount.de^$third-party -||scriptil.com^$third-party -||scw.systems^$third-party -||sedotracker.de^$third-party -||seitwert.de^$third-party -||selfcampaign.com^$third-party -||semtracker.de^$third-party -||sensic.net^$third-party -||sitealyse.de^$third-party -||sitebro.de^$third-party -||slogantrend.de^$third-party -||smarketer.de^$third-party -||space-link.de^$third-party -||spacehits.net^$third-party -||speedcount.de^$third-party -||speedcounter.net^$third-party -||speedtracker.de^$third-party -||spelar.org^$third-party -||spider-mich.com^$third-party -||sponsorcounter.de^$third-party -||spring-tns.net^$third-party -||static-fra.de^*/targeting.js -||static-fra.de^*/tracking.js -||statistik-gallup.net^$third-party -||stats.de^$third-party -||stats4free.de^$third-party -||stetic.com^$third-party -||sunios.de^$third-party -||t4ft.de^$third-party -||tda.io^$third-party -||technical-service.net^$third-party -||tedo-stats.de^$third-party -||tisoomi-services.com^$third-party -||toplist100.org^$third-party -||topstat.com^$third-party -||tracdelight.com^$third-party -||tracdelight.io^$third-party -||trackboxx.info^$third-party -||trafficmaxx.de^$third-party -||trbo.com^$third-party -||trendcounter.de^$third-party -||trkme.net^$third-party -||txt.eu^$third-party -||undom.net^$third-party -||uniconsent.com^$third-party -||up-rank.com^$third-party -||urstats.de^$third-party -||usage.seibert-media.io^$third-party -||usemaxserver.de^$third-party -||viewar.org^$third-party -||vinsight.de^$third-party -||visitor-stats.de^$third-party -||vtracy.de^$third-party -||wcfbc.net^$third-party -||webhits.de^$third-party -||weblist.de^$third-party -||webprospector.de^$third-party -||webtrekk-us.net^$third-party -||webtrekk.de^$third-party -||webtrekk.net^$third-party -||webttracking.de^$third-party -||wecount4u.com^$third-party -||welt-der-links.de^$third-party -||wipe.de^$~script,third-party -||wp-worthy.de^$third-party -||xcounter.ch^$third-party -||xhit.com^$third-party -||xplosion.de^$third-party -||yoochoose.net^$third-party -! French -||123compteur.com^$third-party -||24log.fr^$third-party -||7x4.fr^$third-party -||7x5.fr^$third-party -||abcompteur.com^$third-party -||admo.tv^$third-party -||adsixmedia.fr^$third-party -||adthletic.com^$third-party -||affilizr.com^$third-party -||air360tracker.net^$third-party -||alkemics.com^$third-party -||allo-media.net^$third-party -||analytics-cdiscount.com^$third-party -||antvoice.com^$third-party -||atraxio.com^$third-party -||audiencesquare.com^$third-party -||carts.guru^$third-party -||casualstat.com^$third-party -||coll1onf.com^$third-party -||compteur-fr.com^$third-party -||compteur-gratuit.org^$third-party -||compteur-visite.com^$third-party -||compteur.org^$third-party -||count.fr^$third-party -||countus.fr^$third-party -||cshield.io^$third-party -||d-bi.fr^$third-party -||datado.me^$third-party -||datadome.co^$third-party -||do09.net^$third-party -||early-birds.io^$third-party -||edt02.net^$third-party -||emailretargeting.com^$third-party -||et-gv.fr^$third-party -||ezakus.net^$third-party -||facil-iti.com^$third-party -||ferank.fr^$third-party -||first-id.fr^$third-party -||fogl1onf.com^$third-party -||galaxiemedia.fr^$third-party -||geocompteur.com^$third-party -||geovisite.ovh^$third-party -||hunkal.com^$third-party -||ivitrack.com^$third-party -||kdata.fr^$third-party -||leadium.com^$third-party -||libstat.com^$third-party -||livestats.fr^$third-party -||mastertag.effiliation.com^$third-party -||mb-srv.com^$third-party -||megavisites.com^$third-party -||mgtmod01.com^$third-party -||mmtro.com^$third-party -||netquattro.com/stats/ -||netvigie.com^$third-party -||non.li^$third-party -||phywi.org^$third-party -||pingclock.net^$third-party -||reseau-pub.com^$third-party -||rossel.tech^$third-party -||semiocast.com^$third-party -||shopimind.com^$third-party -||sk1n.fr^$third-party -||sk8t.fr^$third-party -||stats.fr^$third-party -||sync.tv^$third-party -||tget.me^$third-party -||tinyclues.com^$third-party -||titag.com^$third-party -||toc.io^$third-party -||tracking.wlscripts.net^ -||uzerly.net^$third-party -||vpn-access.site^$third-party -||webcompteur.com^$third-party -||winitout.com^$third-party -||wysistat.com^$third-party -||x-traceur.com^$third-party -! Armenian -||circle.am^$third-party -! Azerbaijani -||mobtop.az^$third-party -! Belarusian -||call-tracking.by^$third-party -! Bulgarian -||trafit.com^$third-party -||tyxo.bg^$third-party -! Chinese -||180.76.2.18^$third-party,domain=~baidu.ip -||365dmp.com^$third-party -||50bang.org^$third-party -||acs86.com^$third-party -||ad7.com^$third-party -||adop.cc^$third-party -||adskom.com^$third-party -||adxvip.com^$third-party -||affclkr.com^$third-party -||appier.net^$third-party -||baifendian.com^$third-party -||blog104.com^$third-party -||blogtw.net^$third-party -||cctvgb.com.cn^$third-party -||cdnmaster.cn^$third-party -||clicki.cn^$third-party -||cnzz.net^$third-party -||cr-nielsen.com^$third-party -||ctags.cn^$third-party -||datayi.cn^$third-party -||eland-tech.com^$third-party -||emarbox.com^$third-party -||fraudmetrix.cn^$third-party -||ggxt.net^$third-party -||giocdn.com^$third-party -||gm99.com^$third-party -||gostats.cn^$third-party -||gridsum.com^$third-party -||gridsumdissector.com^$third-party -||growingio.com^$third-party -||gtags.net^$third-party -||he2d.com^$third-party -||hotrank.com.tw^$third-party -||hubpd.com^$third-party -||ipinyou.com^$third-party -||jiankongbao.com^$third-party -||jpush.cn^$third-party -||lndata.com^$third-party -||mediav.com^$third-party -||miaozhen.com^$third-party -||mmstat.com^$third-party -||oadz.com^$third-party -||p0y.cn^$third-party -||phpstat.com^$third-party -||pixanalytics.com^$third-party -||pp8.com^$third-party -||prjslxhtx003.top^$third-party -||pvmax.net^$third-party -||qchannel03.cn^$third-party -||qhupdate.com^$third-party -||reachmax.cn^$third-party -||sagetrc.com^$third-party -||scupio.com^$third-party -||sdqoi2d.com^$third-party -||sjv.io^$third-party -||ta.sbird.xyz^$third-party -||tagmanager.cn^$third-party -||tenmax.io^$third-party -||threatbook.cn^$third-party -||tomonline-inc.com^$third-party -||top-bloggers.com^$third-party -||topsem.com^$third-party -||tovery.net^$third-party -||turtlemobile.com.tw^$third-party -||twcouponcenter.com^$third-party -||vamaker.com^$third-party -||vdoing.com^$third-party -||vm5apis.com^$third-party -||webdissector.com^$third-party -||xtgreat.com^$third-party -||yigao.com^$third-party -||youle55.com^$third-party -||zampda.net^$third-party -||ztcadx.com^$third-party -! Croatian -||dotmetrics.net^$third-party -||xclaimwords.net^$third-party -! Czech -||affilbox.cz^$third-party -||analights.com^$third-party -||itop.cz^$third-party -||lookit.cz^$third-party -||monkeytracker.cz^$third-party -||navrcholu.cz^$third-party -||netagent.cz^$third-party -||performax.cz^$third-party -||pocitadlo.cz^$third-party -||programmatic.cz^$third-party -||semnicneposilejte.cz^$third-party -||smartselling.cz^$third-party -! Danish -||agillic.eu^$third-party -||andersenit.dk^$third-party -||chart.dk^$third-party -||digitaladvisor.dk^$third-party -||euroads.dk^$third-party -||gixmo.dk^$third-party -||hitcount.dk^$third-party -||infocollect.dk^$third-party -||livecounter.dk^$third-party -||livewebstats.dk^$third-party -||ncom.dk^$third-party -||netminers.dk^$third-party -||netstats.dk^$third-party -||parameter.dk^$third-party -||peakcounter.dk^$third-party -||telemetric.dk^$third-party -||tns-gallup.dk^$third-party -||zipstat.dk^$third-party -! Dutch -||active24stats.nl^$third-party -||istats.nl^$third-party -||mtrack.nl^$third-party -||mystats.nl^$third-party -||onlinesucces.nl^$third-party -||stealth.nl^$third-party -||svtrd.com^$third-party -||synovite-scripts.com^$third-party -||traffic4u.nl^$third-party -! Estonian -||counter.ok.ee^$third-party -! Finnish -||kavijaseuranta.fi^$third-party -||leiki.com^$third-party -||m-brain.fi^$third-party -||netmonitor.fi^$third-party -||tracking*.euroads.fi^$third-party -||vihtori-analytics.fi^$third-party -! Georgian -||tbcconnect.ge^$third-party -! Greek -||appocalypsis.com^$third-party -||linkwi.se^$third-party -! Hebrew -||enter-system.com^$third-party -||erate.co.il^$third-party -||fortvision.com^$third-party -||lead.im^$third-party -! Hungarian -||gpr.hu^$third-party -||hirmatrix.hu^$third-party -||mystat.hu^$third-party -||p24.hu^$third-party -! Icelandic -||modernus.is^$third-party -! Indonesian -||analytic.rocks^$third-party -||props.id^$third-party -! Italian -||0stats.com^$third-party -||24log.it^$third-party -||accessi.it^$third-party -||buzzoole.com^$third-party -||contatoreaccessi.com^$third-party -||cpmktg.com^$third-party -||ctusolution.com^$third-party -||cuntador.com^$third-party -||digital-metric.com^$third-party -||distribeo.com^$third-party -||freecounter.it^$third-party -||freestat.ws^$third-party -||freestats.biz^$third-party -||freestats.net^$third-party -||freestats.org^$third-party -||freestats.tv^$third-party -||freestats.ws^$third-party -||geocontatore.com^$third-party -||gm-it.consulting^$third-party -||hiperstat.com^$third-party -||hitcountersonline.com^$third-party -||imetrix.it^$third-party -||ipfrom.com^$third-party -||italianadirectory.com^$third-party -||keyxel.com^$third-party -||laserstat.com^$third-party -||mwstats.net^$third-party -||mystat.it^$third-party -||ninestats.com^$third-party -||ntlab.org^$third-party -||pagerankfree.com^$third-party -||shinystat.it^$third-party -||sibautomation.com^$third-party -||spearad.video^$third-party -||specialstat.com^$third-party -||sphostserver.com^$third-party -||statistiche-free.com^$third-party -||statistiche.it^$third-party -||statistichegratis.net^$third-party -||statsforever.com^$third-party -||superstat.info^$third-party -||tetigi.com^$third-party -||thestat.net^$third-party -||trackset.it^$third-party -||trick17.it^$third-party -||vivistats.com^$third-party -||webads.eu^$third-party -||webmeter.ws^$third-party -||webmobile.ws^$third-party -||websanalytic.com^$third-party -||whoseesyou.com^$third-party -||wstatslive.com^$third-party -! Japanese -||accaii.com^$third-party -||accesstrade.net^$third-party -||ad-fam.com^$third-party -||ad-track.jp^$third-party -||ad2iction.com^$third-party -||adapf.com^$third-party -||adgainersolutions.com^$third-party -||adgocoo.com^$third-party -||admatrix.jp^$third-party -||adpon.jp^$third-party -||adrange.net^$third-party -||af-z.jp^$third-party -||afi-b.com^$third-party -||aid-ad.jp^$third-party -||amoad.com^$third-party -||analyticsip.net^$third-party -||ar-x.site^$third-party -||aspservice.jp^$third-party -||bigmining.com^$third-party -||blogranking.net^$third-party -||canem-auris.com^$third-party -||caprofitx.com^$third-party -||catsys.jp^$third-party -||cetlog.jp^$third-party -||cheqzone.com^$third-party -||cosmi.io^$third-party -||d-markets.net^$third-party -||d2-apps.net^$third-party -||d2c.ne.jp^$third-party -||dbfocus.jp^$third-party -||deteql.net^$third-party -||dmtag.jp^$third-party -||docodoco.jp^$third-party -||docomo-analytics.com^$third-party -||e-click.jp^$third-party -||e-kaiseki.com^$third-party -||ebis.ne.jp^$third-party -||ec-concier.com^$third-party -||ec-optimizer.com^$third-party -||eco-tag.jp^$third-party -||eltex.co.jp^$third-party -||enhance.co.jp^$third-party -||f-counter.jp^$third-party -||f-counter.net^$third-party -||fpad.jp^$third-party -||fspark-ap.com^$third-party -||fw-ad.jp^$third-party -||gacraft.jp^$third-party -||geniee.jp^$third-party -||genieessp.jp^$third-party -||gmodmp.jp^$third-party -||gmossp-sp.jp^$third-party -||gsspcln.jp^$third-party -||gyro-n.com^$third-party -||h-cast.jp^$third-party -||hitgraph.jp^$third-party -||i-mobile.co.jp^$third-party -||i2ad.jp^$third-party -||i2i.jp^$third-party -||iid-network.jp^$third-party -||im-apps.net^$third-party -||interactive-circle.jp^$third-party -||iogous.com^$third-party -||kaizenplatform.net^$third-party -||letro.jp^$third-party -||logly.co.jp^$third-party -||macromill.com^$third-party -||medipartner.jp^$third-party -||mobadme.jp^$third-party -||mobylog.jp^$third-party -||moshimo.com^$third-party -||omiki.com^$third-party -||owldata.com^$third-party -||pagoda56.com^$third-party -||pdmp.jp^$third-party -||performancefirst.jp^$third-party -||polymorphicads.jp^$third-party -||quant.jp^$third-party -||r-ad.ne.jp^$script,third-party -||rays-counter.com^$third-party -||rentracks.jp^$third-party -||research-artisan.com^$third-party -||rtoaster.jp^$third-party -||segs.jp^$third-party -||sibulla.com^$third-party -||smart-counter.net^$third-party -||smartnews-ads.com^$third-party -||speee-ad.jp^$third-party -||talpa-analytics.com^$third-party -||taxel.jp^$third-party -||team-rec.jp^$third-party -||tgknt.com^$third-party -||thench.net^$third-party -||thesmilingpencils.com^$third-party -||trackfeed.com^$third-party -||uncn.jp^$third-party -||wonder-ma.com^$third-party -||zerostats.com^$third-party -||ziyu.net^$third-party -! Korean -||acrosspf.com^$third-party -||adpick.co.kr^$third-party -||adtive.com^$third-party -||aicontents.net^$third-party -||contentsfeed.com^$third-party -||dawin.tv^$third-party -||logger.co.kr^$third-party -||oevery.com^$third-party -||rainbownine.net^$third-party -||smlog.co.kr^$third-party -||tenping.kr^$third-party -! Latvian -||cms.lv^$third-party -||mcloudglobal.com^$third-party -||on-line.lv^$third-party -||ppdb.pl^$third-party -||puls.lv^$third-party -||reitingi.lv^$third-party -||statistika.lv^$third-party -||top.lv^$third-party -||topsite.lv^$third-party -||webstatistika.lv^$third-party -||wos.lv^$third-party -! Lithuanian -||dcdn.lt/g.js -||easy.lv^$third-party -||maxtraffic.com^$third-party -||mxapis.com^$third-party -||stats.lt^$third-party -||visits.lt^$third-party -||www.hey.lt^$third-party -! Norwegian -||de17a.com^$third-party -||trafikkfondet.no^$third-party -||webstat.no^$third-party -||xtractor.no^$third-party -! Persian -||amarfa.ir^$third-party -||persianstat.com^$third-party -||persianstat.ir^$third-party -||tinystat.ir^$third-party -||yektanet.com^$third-party -! Polish -||adschoom.com^$third-party -||adstat.4u.pl^$third-party -||caanalytics.com^$third-party -||clickmatic.pl^$third-party -||conversion.pl^$third-party -||conversionlabs.net.pl^$third-party -||dmdi.pl^$third-party -||goprediction.com^$third-party -||gostats.pl^$third-party -||hub.com.pl^$third-party -||i22lo.com^$third-party -||inistrack.net^$third-party -||legenhit.com^$third-party -||naanalle.pl^ -||ngacm.com^$third-party -||ngastatic.com^$third-party -||nokaut.link^$third-party -||nsaudience.pl^$third-party -||refericon.pl^$third-party -||rejestr.org^$third-party -||sare25.com^$third-party -||stat.4u.pl^$third-party -||stat.pl^$third-party -||trafficscanner.pl^$third-party -||way2traffic.com^$third-party -! Portuguese -||ad5track.com^$third-party -||bob-recs.com^$third-party -||btg360.com.br^$third-party -||clearsale.com.br^$third-party -||dataroyal.com.br^$third-party -||dataunion.com.br^$third-party -||denakop.com^$third-party -||engageya.com^$third-party -||enviou.com.br^$third-party -||fulllab.com.br^$third-party -||hariken.co^$third-party -||lomadee.com^$third-party -||marktest.pt^$third-party -||percycle.com^$third-party -||pmweb.com.br^$third-party -||retargeter.com.br^$third-party -||sambaads.com^$third-party -||shoptarget.com.br^$third-party -||solucx.com.br^$third-party -||tailtarget.com^$third-party -||trugaze.io^$third-party -||voxus.com.br^$third-party -||widgets.solutions^$third-party -! Romanian -||2222.ro^$third-party -||2parale.ro^$third-party -||2performant.com^$third-party -||aghtag.tech^$third-party -||agorahtag.tech^$third-party -||attr-2p.com^$third-party -||best-top.ro^$third-party -||gtop.ro^$third-party -||hit100.ro^$third-party -||pahtag.tech^$third-party -||profitshare.ro^$third-party -||retargeting.biz^$third-party -||statistics.ro^$third-party -||top-ro.ro^$third-party -||wtstats.ro^$third-party -||zontera.com^$third-party -! Russian -||109.169.66.161^$third-party,domain=~adult-site.ip -||1dmp.io^$third-party -||24log.ru^$third-party -||24smi.info^$third-party -||24smi.net^$third-party -||a-counter.kiev.ua^$third-party -||admile.ru^$third-party -||adsmediator.com^$third-party -||adx.com.ru^$third-party -||airlogs.ru^$third-party -||announcement.ru^$third-party -||apkonline.ru^$third-party -||audsp.com^$third-party -||avsplow.com^$third-party -||ban.su^$third-party -||bid.run^$third-party -||bidderrtb.com^$third-party -||botdetector.ru^$third-party -||botscanner.com^$third-party -||bumlam.com^$third-party -||checkru.net^$third-party -||cityua.net^$third-party -||clubcollector.com^$third-party -||cnstats.ru^$third-party -||comagic.ru^$third-party -||cpaevent.ru^$third-party -||cszz.ru^$third-party -||culturaltracking.ru^$third-party -||detmir-stats.ru^$third-party -||dircont3.com^$third-party -||directcrm.ru^$third-party -||e-kuzbass.ru^$third-party -||exe.bid^$third-party -||faststart.ru^$third-party -||gdeslon.ru^$third-party -||get4click.ru^$third-party -||giraff.io^$third-party -||gnezdo.ru^$third-party -||gostats.ru^$third-party -||hitmir.ru^$third-party -||hsdn.org^$third-party -||idntfy.ru^$third-party -||imrk.net^$third-party -||infostroy.nnov.ru^$third-party -||infox.sg^$third-party -||inrd.ru^$third-party -||instreamatic.com^$third-party -||interakt.ru^$third-party -||intergid.ru^$third-party -||iryazan.ru^$third-party -||kmindex.ru^$third-party -||leadhit.ru^$third-party -||leadslabpixels.net^$third-party -||lentainform.com^$third-party -||logua.com^$third-party -||logxp.ru^$third-party -||logz.ru^$third-party -||lookmy.info^$third-party -||lugansk-info.ru^$third-party -||madnet.ru^$third-party -||mediaplan.ru^$third-party -||mediatoday.ru^$third-party -||metrika-informer.com^$third-party -||mobtop.com^$third-party -||mokuz.ru^$third-party -||more-data.ru^$third-party -||musiccounter.ru^$third-party -||mystat-in.net^$third-party -||mytopf.com^$third-party -||netlog.ru^$third-party -||opentracking.ru^$third-party -||otclick-adv.ru^$third-party -||pladform.ru^$third-party -||pmbox.biz^$third-party -||proext.com^$third-party -||quick-counter.net^$third-party -||relap.io^$third-party -||retag.xyz^$third-party -||rnet.plus^$third-party -||roistat.com^$third-party -||ru.net^$third-party -||rutarget.ru^$third-party -||sarov.ws^$third-party -||sas.com^$third-party -||sbermarketing.ru^$third-party -||semantiqo.com^$third-party -||sensor.org.ua^$third-party -||seo-master.net^$third-party -||site-submit.com.ua^$third-party -||stat.media^$third-party -||stat24.ru^$third-party -||targetix.net^$third-party -||tbex.ru^$third-party -||tds.io^$third-party -||teletarget.ru^$third-party -||theactivetag.com^$third-party -||tnative.ru^$third-party -||tophitbit.com^$third-party -||toptracker.ru^$third-party -||ttrace.ru^$third-party -||uarating.com^$third-party -||ulclick.ru^$third-party -||upravel.com^$third-party -||uptolike.com^$third-party,domain=~uptolike.ru -||utraff.com^$third-party -||uzrating.com^$third-party -||variti.net^$third-party -||vidigital.ru^$third-party -||vira.ru^$third-party -||volgograd-info.ru^$third-party -||vologda-info.ru^$third-party -||warlog.ru^$third-party -||web-visor.com^$third-party -||webest.info^$third-party -||webtalking.ru^$third-party -||webturn.ru^$third-party -||webvisor.com^$third-party -||webvisor.ru^$third-party -||wwgate.ru^$third-party -||zero.kz^$third-party -! Serbian -! Slovak -||algopine.com^$third-party -||idot.cz^$third-party -||pocitadlo.sk^$third-party -||toplist.sk^$third-party -! Spanish -||24log.es^$third-party -||agency360.io^$third-party -||botize.com^$third-party -||ccrtvi.com^$third-party -||certifica.com^$third-party -||contadordevisitas.es^$third-party -||contadorgratis.com^$third-party -||contadorgratis.es^$third-party -||contadorvisitasgratis.com^$third-party -||contadorweb.com^$third-party -||delidatax.net^$third-party -||easysol.net^$third-party -||eresmas.net^$third-party -||estadisticasgratis.com^$third-party -||flags.es^$third-party -||indigitall.com^$third-party -||intrastats.com^$third-party -||mabaya.com^$third-party -||micodigo.com^$third-party -||propelbon.com^$third-party -||protecmedia.com^$third-party -||socy.es^$third-party -! Swedish -||adsettings.com^$third-party -||adten.eu^$third-party -||adtr.io^$third-party -||bonnieradnetwork.se^$third-party -||brandmetrics.com^$third-party -||citypaketet.se^$third-party -||dep-x.com^$third-party -||lwadm.com^$third-party -||myvisitors.se^$third-party -||prospecteye.com^$third-party -||publish-int.se^$third-party -||research-int.se^$third-party -||sifomedia.se^$third-party -||suntcontent.se^$third-party -||tidningsnatet.se^$third-party -||tns-sifo.se^$third-party -||webserviceaward.com^$third-party -||yieldbird.com^$third-party -! Thai -||d-stats.com^$third-party -||tracker.stats.in.th^$third-party -||truehits.net^$third-party -||truehits3.gits.net.th^$third-party -! Turkish -||brainsland.com^$third-party -||elmasistatistik.com.tr^$third-party -||onlinewebstat.com^$third-party -||realist.gen.tr^$third-party -||sayyac.com^$third-party -||sayyac.net^$third-party -||sitetistik.com^$third-party -||sortext.com^$third-party -||tagon.co^$third-party -||visilabs.net^$third-party -||webservis.gen.tr^$third-party -||webtemsilcisi.com^$third-party -||zirve100.com^$third-party -! Ukranian -||holder.com.ua^$third-party -||mediatraffic.com.ua^$third-party -||mycounter.com.ua^$third-party -||mycounter.ua^$third-party -||zmctrack.net^$third-party -||znctrack.net^$third-party -! Vietnamese -||adtimaserver.vn^$third-party -||amcdn.vn^$third-party -||ants.vn^$third-party -||contineljs.com^$third-party -||gostats.vn^$third-party -!-----------------Third-party tracking services-----------------! -! *** easylist:easyprivacy/easyprivacy_thirdparty.txt *** --client-tracking.goodgamestudios.com/ --wrapper-analytics-prod.cloudfunctions.net/ -||1.1.1.1/cdn-cgi/trace -||100widgets.com^$third-party -||105app.com/report/? -||1558334541.rsc.cdn77.org^ -||1worldsync.com/log? -||216.18.176.4/logger/ -||360buyimg.com/jdf/1.0.0/unit/log/ -||3j0pw4ed7uac-a.akamaihd.net^ -||3p-geo.yahoo.com^ -||3p-udc.yahoo.com^ -||4e4356b68404a5138d2d-33393516977f9ca8dc54af2141da2a28.ssl.cf1.rackcdn.com/sa7d76sa/ -||4taps.me/analytics/ -||51network.com^$third-party -||99widgets.com/counters/ -||9w2zed1szg.execute-api.us-east-1.amazonaws.com^ -||a.getflowbox.com^ -||a.hcaptcha.com^ -||a.mobify.com^ -||a.opumo.net^ -||a.vturb.net^ -||a2z.com/sping? -||aan.amazon.com^$third-party -||accesswire.com/img.ashx -||activengage.com/overwatch/ -||activity-flow.vtex.com^ -||activity.wisepops.com^ -||ad-shield.io^$third-party -||ad.aloodo.com^ -||ad.mail.ru/*.gif?rnd=$third-party -||adbr.io/log? -||addtoany.com/menu/transparent.gif -||ade.googlesyndication.com^ -||adfox.yandex.ru^ -||adimo.co/api/tracking/ -||adlog.com.com^ -||adnz.co/dmp/publisher.js -||adnz.co/header.js -||adobedc.net/collector/ -||ads-trk.vidible.tv^ -||adsolutions.com^$third-party -||adv-analytics-collector.videograph.ai^ -||adyen.com/checkoutshopper/images/analytics.png? -||adyen.com/checkoutshopper/v2/analytics/log? -||affiliate-api.raptive.com^ -||affiliates.minglematch.com^ -||affirm.com/api/v2/cookie_sent -||affirm.com/api/v2/session/touch_track -||afterpay.com^*/v1/event -||akamaihd.net/p1lakjen.gif -||akamaized.net/cookie_check/ -||akatracking.esearchvision.com^ -||aktion.esprit-club.com^$image -||alex.leonard.ie/misc-images/transparent.png -||alexa.com/minisiteinfo/$third-party -||alexa.com/traffic/ -||alexandria.marfeelcdn.com^ -||algolia.io/1/events? -||algolia.io/1/isalive -||alibaba.com/ts? -||alipay.com/service/clear.png? -||aliyun.com/actionlog/ -||allanalpass.com/track/ -||alpharank.io/api/pixel/ -||amazonaws.com/analytics. -||amazonaws.com/appmonitors/ -||amazonaws.com/avsmetrics/ -||amazonaws.com/beacon^ -||amazonaws.com/cdn.barilliance.com/ -||amazonaws.com/iglu.acme.com.dev.clixtream/tracker.js -||amazonaws.com/j.kissinsights.com/ -||amazonaws.com/js/reach.js -||amazonaws.com/jsstore/*/ge.js -||amazonaws.com/ki.js/ -||amazonaws.com/lp/js/tag.js? -||amazonaws.com/new.cetrk.com/ -||amazonaws.com/prod/entities -||amazonaws.com/prod/main?ref=$image,third-party -||amazonaws.com/prod/nobot -||amazonaws.com/prod/report-only -||amazonaws.com/production_beacon -||amazonaws.com/searchdiscovery-satellite-production/ -||amazonaws.com/storejs/a/JKRHRQG/ge.js -||amazonaws.com/v1/apps/*/events -||amazonaws.com/webengage-files/ -||amazonaws.com^*/prod_analytics -||amazonpay.com/customerInsight? -||amp-error-reporting.appspot.com^ -||amplify.outbrain.com^$third-party -||amplifypixel.outbrain.com^ -||ampproject.org/preconnect.gif -||ams-pageview-public.s3.amazonaws.com^ -||analyse.bcovery.com^ -||analytic.rollout.io^ -||analytic.xingcloud.com^$third-party -||analyticcdn.globalmailer.com^ -||analytics-1.cavai.com^ -||analytics-api.klickly.com^ -||analytics-cf.bigcrunch.com^ -||analytics-cms.whitebeard.me^ -||analytics-consent-manager-v2-prod.azureedge.net^ -||analytics-prd.aws.wehaa.net^ -||analytics-production.hapyak.com^ -||analytics-scripts.cablelabs.com^ -||analytics-sg.tiktok.com^ -||analytics-static.ugc.bazaarvoice.com^ -||analytics.30m.com^ -||analytics.adobe.io^ -||analytics.agoda.com^ -||analytics.aimtell.com^ -||analytics.algolia.com^ -||analytics.amakings.com^ -||analytics.apnewsregistry.com^ -||analytics.audioeye.com^ -||analytics.avanser.com.au^ -||analytics.aweber.com^ -||analytics.bestreviews.com^ -||analytics.bitrix.info^ -||analytics.carambo.la^ -||analytics.carbaselive.com^ -||analytics.chegg.com^ -||analytics.cincopa.com^ -||analytics.clic2buy.com^ -||analytics.cloud.coveo.com^ -||analytics.cmn.com^ -||analytics.codigo.se^ -||analytics.contentexchange.me^ -||analytics.convertlanguage.com^ -||analytics.data.visenze.com^ -||analytics.dev.htmedia.in^ -||analytics.dev.springboardvideo.com^ -||analytics.developer.riotgames.com^ -||analytics.digitalpfizer.com^ -||analytics.disney.go.com^ -||analytics.disneyinternational.com^ -||analytics.dvidshub.net^ -||analytics.edgekey.net^ -||analytics.eggoffer.com^ -||analytics.erepublic.com^ -||analytics.fabricators.ltd^$third-party -||analytics.facebook.com^$third-party -||analytics.favcy.com^ -||analytics.firespring.com^ -||analytics.foresee.com^ -||analytics.formstack.com^ -||analytics.genial.ly^ -||analytics.google.com^$third-party -||analytics.gooogol.com^ -||analytics.groupe-seb.com^ -||analytics.growthphysics.com^ -||analytics.gvim.mobi^ -||analytics.iraiser.eu^ -||analytics.jazel.net^ -||analytics.jst.ai^ -||analytics.kaltura.com^ -||analytics.kapost.com^ -||analytics.klickly.com^ -||analytics.kongregate.io^ -||analytics.lemoolah.com^ -||analytics.live.com^ -||analytics.livestream.com^ -||analytics.logsss.com^ -||analytics.lunaweb.cloud^ -||analytics.m7g.twitch.tv^ -||analytics.maikel.pro^ -||analytics.mailmunch.co^ -||analytics.matchbin.com^ -||analytics.midwesternmac.com^ -||analytics.mlstatic.com^ -||analytics.myfidevs.io^ -||analytics.myfinance.com^ -||analytics.newscred.com^ -||analytics.onlyonlinemarketing.com^ -||analytics.optilead.co.uk^ -||analytics.orenshmu.com^ -||analytics.ostr.io^ -||analytics.paddle.com^ -||analytics.pagefly.io^ -||analytics.pangle-ads.com^ -||analytics.piksel.com^ -||analytics.pinterest.com^$third-party -||analytics.pixels.ai^ -||analytics.pointdrive.linkedin.com^ -||analytics.pop2watch.com^ -||analytics.prezly.com^ -||analytics.qualityunit.com^ -||analytics.radiatemedia.com^ -||analytics.recruitics.com^ -||analytics.reyrey.net^ -||analytics.rogersmedia.com^ -||analytics.salesanalytics.io^ -||analytics.shareaholic.com^ -||analytics.shorte.st^ -||analytics.shorthand.com^ -||analytics.sitewit.com^ -||analytics.sleeknote.com^ -||analytics.snidigital.com^ -||analytics.springboardvideo.com^ -||analytics.stg.springboardvideo.com^ -||analytics.strangeloopnetworks.com^ -||analytics.superstructure.ai^ -||analytics.supplyframe.com^ -||analytics.test.cheggnet.com^ -||analytics.themarketiq.com^ -||analytics.threedeepmarketing.com^ -||analytics.tiktok.com^ -||analytics.tout.com^ -||analytics.unibuddy.co^ -||analytics.unilogcorp.com^ -||analytics.vanillaforums.com^ -||analytics.vdo.ai^ -||analytics.vendemore.com^ -||analytics.vixcloud.co^ -||analytics.webgains.io^ -||analytics.webpushr.com^ -||analytics.websolute.it^ -||analytics.wildtangent.com^ -||analytics.witglobal.net^ -||analytics.yahoo.com^ -||analytics.yext-static.com^ -||analytics.ynap.biz^ -||analytics.yola.net^ -||analytics.yolacdn.net^ -||analytics.ziftsolutions.com^ -||analytics1.vdo.ai^ -||analyticsehnwe.servicebus.windows.net^ -||analyticssec.overwolf.com^ -||ancestrycdn.com/tao/at/ -||anyclip.com/getuids? -||anyclip.com/v1/lre-events? -||ao-freegeoip.herokuapp.com^ -||aol.com/ping? -||aolcdn.com/js/mg2.js -||aolcdn.com/omniunih_int.js -||ape-tagit.timeinc.net^ -||apester.com/event^ -||api-analytics-prd.pelcro.com^ -||api-iam.intercom.io/messenger/web/metrics -||api-location-prd.pelcro.com^$domain=newsweek.com -||api-v3.findify.io/v3/feedback -||api.autopilothq.com^ -||api.bit.ly/*/clicks?$third-party -||api.blink.net/a/ -||api.collarity.com/cws/*http -||api.country.is^$third-party -||api.iris.tv/update -||api.wipmania.com^ -||apibaza.com/pixel/ -||apm-engine.meteor.com^$third-party,xmlhttprequest -||app.adjust.com^$third-party -||app.carnow.com/dealers/track_visitor -||app.link/_r?$script,third-party -||app.opmnstr.com/v2/geolocate/ -||app.posthog.com/e/?compression= -||app.posthog.com/e/?ip= -||app.posthog.com/static/array.js -||app.posthog.com/static/recorder-v2.js -||app.yesware.com/t/$third-party -||appinthestore.com/click/ -||apple.com/hvr/mw/v1/spile -||apple.com/mw/v1/reportAnalytics -||apple.www.letv.com^ -||applets.ebxcdn.com^ -||applicationinsights.azure.com^$third-party,domain=~azure.net -||appliedsemantics.com/images/x.gif -||applovin.com/shopify/*/pixel -||appmifile.com/webfile/globalweb/stat/ -||appsolutions.com/hitme?$third-party -||appspot.com/analytics/ -||appspot.com/api/track/ -||appspot.com/display? -||appspot.com/event? -||appspot.com/events.js -||appspot.com/stats? -||appspot.com/take? -||appspot.com/track-analytics-event -||arc.pub/clavis/training/events -||arclk.net/trax? -||arcpublishing.com/beacon -||argos.citruserve.com^ -||ariane.abtasty.com^ -||arkoselabs.com/metrics/ -||asayer.io/tracker.js -||assets.moneymade.io/js/fp.min.js -||assets.yumpu.com/release/*/tracking.js -||assistant.watson.appdomain.cloud/analytics/ -||asterpix.com/tagcloudview/ -||at.cbsi.com^*/event? -||atcdn.co.uk/frostbite/ -||atgsvcs.com/js/atgsvcs.js -||ati-host.net/event? -||atom-data.io/session/latest/track.html?$third-party -||attn.tv/tag/ -||attn.tv^*/dtag.js -||attributiontrackingga.googlecode.com^ -||auctiva.com/Default.aspx?query -||audience.newscgp.com^ -||audienceinsights.net^$third-party -||audioeye.com/ae.js -||audioeye.com/frame/cookieStorage.html -||audit.303br.net^ -||audit.median.hu^ -||auriro.net/views.cfm? -||aurora-d3.herokuapp.com^ -||auryc.com/v1/event -||autoline-top.com/counter.php? -||automate-prod.s3.amazonaws.com^$~script -||avo.app^*/track -||awaps.yandex.net^ -||awe.sm/conversions/ -||aweber.com/form/displays.htm?$image -||awesome.section.io^ -||awsapprunner.com/api/frontend/client/metrics -||awswaf.com^*/report -||awswaf.com^*/telemetry -||ax.babe.today^ -||axislogger.appspot.com^ -||az.nzn.io^ -||az693360.vo.msecnd.net^ -||azureedge.net/javascripts/Tracking. -||azureedge.net/track -||azureedge.net^*/fnix.js -||azurewebsites.net/api/views? -||azurewebsites.net/TrackView/ -||azurewebsites.net^*/telemetry.js -||b.bedop.com^ -||b5media.com/bbpixel.php -||b7tp47v2nb3x-a.akamaihd.net^ -||b8cdn.com/assets/v1/analytics- -||backend.verbolia.com/content/js/velw.min.js -||bacon.section.io^ -||baidu.com/pixel? -||baidu.com/push.js -||bamgrid.com/dust$domain=~disneyplus.com -||bamgrid.com/telemetry -||baqend.com/v1/rum/ -||barium.cheezdev.com^ -||basis.net/assets/up.js -||bat.bing.com^ -||bat.bing.net^ -||baxter.olx.org^ -||bazaarvoice.com/sid.gif -||bb.itwc.ca/js/cube.js -||bc.geocities. -||bc.marfeelcache.com^ -||bc0a.com/api/ -||bc0a.com/autopilot/ -||bc0a.com/be_ixf_js_sdk.js -||bc0a.com/marvel.js -||bdg.com/event? -||beacon-v2.helpscout.net^ -||beacon.adelphic.com^ -||beacon.affil.walmart.com^ -||beacon.aimtell.com^ -||beacon.cdnma.com^ -||beacon.errorception.com^ -||beacon.flow.io^ -||beacon.klm.com^ -||beacon.riskified.com^ -||beacon.s.llnwi.net^ -||beacon.searchspring.io^ -||beacon.securestudies.com^ -||beacon.sftoaa.com^ -||beacon.sojern.com^ -||beacon.statful.com^ -||beacon.tingyun.com^ -||beacon.vertebrae-axis.com^ -||beacon.viewlift.com^ -||beacon2.indieclick.com^ -||beacons.mediamelon.com^ -||beam.mjhlifesciences.com^ -||beamanalytics.b-cdn.net^ -||bee.tc.easebar.com^ -||behavior.tongdun.net^ -||bento.agoda.com^ -||bet365.de/Members/*&affiliate=$subdocument,third-party -||betano.de^*?btag=$subdocument,third-party -||bhphotovideo.com/imp/ -||bi.heyloyalty.com^ -||bi.medscape.com^ -||birdsend.co/assets/static/js/pixel/ -||birdsend.email/pixel -||birdsend.net/pixel -||bit.ly/stats? -||bitrix.info/ba.js -||bizseasky.com/dc/ -||bizseasky.com/mon -||bizseasky.com/tracker/ -||blend.com/event/ -||blink.net/e/ -||blip.bizrate.com^$script -||blogblog.com/tracker/ -||bmrg.reflected.net^ -||bobparsons.com/image.aspx? -||bolt.com/v1/log? -||bonfire.spklw.com^ -||booking.com/pxpixel.html -||botdetection.hbrsd.com^ -||bpath.com/count.dll? -||branch.io^$third-party -||brandcdn.com/pixel/ -||bravenet.com/counter/ -||braze.eu/api/v3/data/ -||browser-intake-datadoghq.com^ -||browser.covatic.io^ -||browser.events.data.microsoft.com^$ping -||browser.pipe.aria.microsoft.com^ -||bs.yandex.ru^ -||bucklemail.com/a/$image -||burstcloud.co/jwe? -||bytedance.com/pixel/ -||byteoversea.com/captcha/report -||byteoversea.com/monitor_browser/ -||bzpics.com/jslib/st.js? -||c-date.com/pixel/ -||c.amazinglybrilliant.com.au^ -||c.bazo.io^ -||c.imedia.cz^ -||c.live.com^ -||c.mgid.com^ -||c.wen.ru^ -||c.ypcdn.com^*&ptid -||c.ypcdn.com^*?ptid -||c3metrics.medifast1.com^ -||cache2.delvenetworks.com^ -||cahf4eed.mooo.com^ -||californiatimes.com/privacy/$image -||calltrack.co^ -||calltrk.com/companies/ -||calvera-telemetry.polaris.me^ -||camel.headfarming.com^ -||canada.com/js/analytics/ -||capture-api.ap3prod.com^ -||capture.condenastdigital.com^ -||capture.trackjs.com^$third-party -||carambo.la/analytics/ -||carambo.la/logging/ -||cardinalcommerce.com/prod/log -||caspionlog.appspot.com^ -||castify-trk.playitviral.com^ -||cbsaavideo.com/measurements/ -||cbsivideo.com/measurements/ -||cc.swiftype.com^ -||ccexperimentsstatic.oracleoutsourcing.com^ -||cdn-channels-pixel.ex.co^ -||cdn-ds.com/analytics/ -||cdn.clkmc.com/cmc.js -||cdn.one.store/xdomain_cookie.html -||cdn.sourcesync.io/open-pixel/source-pixel.js -||cdn.statically.io/gh/opcdn/analytics/main/script.js -||cdn.usefathom.com^ -||cdnjs.work/metrics.js -||cdnma.com/apps/capture.js -||cdnplanet.com/static/rum/rum.js -||ceros.com/a?data -||cf.overblog.com^ -||cfmediaview.com/API/MV_Visit.ashx -||cgicounter.oneandone.co.uk^ -||cgicounter.puretec.de^ -||chanalytics.merchantadvantage.com^ -||channelexco.com/events -||chargebee.com/api/internal/track_info_error -||check.ddos-guard.net^$third-party -||checkout.com/logger/ -||checkout.com/logging -||cimage.adobe.com^ -||circonus.com/hit? -||citygridmedia.com/tracker/ -||citysearch.com/tracker/ -||cityzen.io/Pixel/ -||civicscience.com/jot? -||ck.connatix.com^ -||cleantalk.org/pixel/ -||clearspring.com/at/ -||clearspring.com/t/ -||clerk.io/static/clerk.js -||clevertap-prod.com^$third-party -||click.appinthestore.com^ -||click360v2-ingest.azurewebsites.net^ -||clickdimensions.com/ts.js -||clickiocdn.com/clickiotag_log/ -||clickiocdn.com/consent/log/ -||clickiocdn.com/utr/ -||clicks.dealer.com^ -||clicks.tyuwq.com^ -||clickthru.lefbc.com^$third-party -||clicktime.symantec.com^$script,third-party -||clicktracker.iscan.nl^ -||client-analytics.braintreegateway.com^ -||client-logger.beta.salemove.com^ -||client-logger.salemove.com^ -||client.tahono.com^$third-party -||clinch.co/a_js/client_pixels/ -||clipsyndicate.com/cs_api/cliplog? -||clixtell.com/track.js -||cloudapp.net/l/ -||clouderrorreporting.googleapis.com^ -||cloudflare-quic.com/cdn-cgi/trace -||cloudflare.com/cdn-cgi/trace$third-party,domain=~isbgpsafeyet.com|~wyndhamdestinations.com -||cloudfront-labs.amazonaws.com^ -||cloudfront.net*/keywee.min.js -||cloudfront.net*/sp.js| -||cloudfront.net*/tracker.js -||cloudfront.net*/trk.js -||cloudfront.net/?a= -||cloudfront.net/abw.js -||cloudfront.net/analytics.js -||cloudfront.net/analytics_$script -||cloudfront.net/analyticsengine/ -||cloudfront.net/autotracker -||cloudfront.net/beaver.js -||cloudfront.net/bti/ -||cloudfront.net/clipkit_assets/beacon- -||cloudfront.net/code/keen-2.1.0-min.js -||cloudfront.net/dough/*/recipe.js -||cloudfront.net/esf.js -||cloudfront.net/i?v= -||cloudfront.net/js/ca.js -||cloudfront.net/js/reach.js -||cloudfront.net/khp.js -||cloudfront.net/log.js? -||cloudfront.net/lp.js -||cloudfront.net/performable/ -||cloudfront.net/powr.js -||cloudfront.net/pt1x1.gif -||cloudfront.net/rc.js? -||cloudfront.net/rum/bacon.min.js -||cloudfront.net/scripts/cookies.js -||cloudfront.net/sentinel.js -||cloudfront.net/sitegainer_ -||cloudfront.net/sso.js -||cloudfront.net/t.gif -||cloudfront.net/track.html -||cloudfront.net/track? -||cloudfront.net/trackb.html -||cloudfront.net/uba.js -||cloudfront.net/websites/sb.js -||cloudfront.net/zephyr.js -||cloudfront.net^*.bmp? -||cloudfunctions.net/commonBonnierDataLayer -||cloudfunctions.net/export-customizer-data-metrics -||cloudfunctions.net/function-record-stream-metric? -||cloudfunctions.net/ingest? -||cloudfunctions.net/sendwebpush-analytics -||cloudfunctions.net/vanalytics -||cloudmetrics.xenforo.com^ -||cltgtstor001.blob.core.windows.net^ -||clustrmaps.com/counter/$third-party -||cmail19.com/t/$image,third-party -||cmmeglobal.com/evt? -||cmmeglobal.com^*/page-view? -||cnetcontent.com/log? -||cnevids.com/metrics/ -||cnnx.io^*/tracker.js -||cnnx.io^*/tracking.js -||cnnx.link/roi/ -||cnpapers.com/scripts/library/ -||cnstrc.com/behavior? -||cnt.3dmy.net^ -||cnt.mastorage.net^ -||cnzz.com/stat. -||cod.bitrec.com^ -||coefficy.com/ip/ -||coherentpath.com/tracker/ -||collect-ap2.attraqt.io^ -||collect-eu.attraqt.io^ -||collect.alphastream.io^ -||collect.analyse.lnearn.com^ -||collect.bannercrowd.net^ -||collect.cloudsponge.com^ -||collect.igodigital.com^ -||collect.iteam-dress.com^ -||collect.rebelmouse.io^ -||collect.rewardstyle.com^ -||collect.usefathom.com^ -||collect.verify.lnearn.com^ -||collection.e-satisfaction.com^ -||collector-api.99designs.com^ -||collector-api.frspecifics.com^ -||collector-soompi.viki.io^ -||collector.api.video^ -||collector.appconsent.io^ -||collector.automote.co.nz^ -||collector.clareity.net^ -||collector.contentexchange.me^$third-party -||collector.dmp.cnna.io^ -||collector.getyourguide.com^ -||collector.mazeberry.com^ -||collector.sspinc.io^ -||collector5.zipy.ai^ -||collectorsvc.apac.vesta.io^ -||comeon.com/tracking.php -||comic-rocket.com/metrics.js -||commerce.adobe.io/recs/ -||commerce.bing.com^ -||comms.thewhiskyexchange.com^$image -||communicatorcorp.com^*/conversiontracking.js -||compendiumblog.com/sp.js -||competitoor.com/analytics/ -||concert.io/lookup/ -||conde.io/beacon -||condenastdigital.com/content?$third-party -||confiant-integrations.global.ssl.fastly.net^ -||config-security.com/event -||confirmit.com/wix/inline.aspx? -||connatix.com/rtb/ -||connatix.com/tr/ -||connect.bolt.com/v1/log -||connect.facebook.net/signals/$third-party -||connect.facebook.net^*/fbds.js$third-party -||connect.facebook.net^*/pcm.js$third-party -||connect.idocdn.com^ -||connext-cdn.azureedge.net^ -||consensu.org/?log= -||consensu.org/geoip -||consentmanager.net/delivery/info/$third-party -||console.uxlens.com^ -||constellation.networknmedia.com/cdn-cgi/trace -||contactatonce.com/GetAgentStatusImage.aspx? -||contactatonce.com/VisitorContext.aspx? -||container.pepperjam.com^$third-party -||content.cpcache.com^*/js/ga.js -||contentdriver.com/api/impression -||contently.com/xdomain/ -||contentpass.net/stats?$third-party -||contents-tracking.beop.io^ -||control.cityofcairns.com^$third-party -||conversions.genieventures.co.uk^ -||convertflow.co^*/visitors/ -||convertkit.com^*/visit -||cookie-guard-erdee.ey.r.appspot.com^ -||cookies.livepartners.com^ -||cookiex.ngd.yahoo.com^ -||copyrightcontent.org/e/ -||core-apps.b-cdn.net^ -||count-server.sharethis.com^ -||count.asnetworks.de^ -||count.carrierzone.com^ -||count.me.uk^ -||count.paycounter.com^ -||count.xxxssk.com^ -||counter.bloke.com^ -||counter.cam-content.com^ -||counter.hyipexplorer.com^ -||counter.jdi5.com^ -||counter.live4members.com^ -||counter.maases.com^ -||counter.packa2.cz^ -||counter.powr.io^ -||counter.powweb.com^ -||counter.rambler.ru^ -||counter.scribblelive.com^ -||counter.snackly.co^ -||counter.tldw.me^ -||counter.top.ge^ -||counter.yadro.ru^ -||counters.freewebs.com^ -||coveo.com/coveo.analytics.js/ -||covery.ai/fp/$third-party -||covet.pics/beacons -||cp.official-coupons.com^ -||cp.official-deals.co.uk^ -||cqloud.com/measurements/ -||crall.io/beacon/ -||creator.zmags.com^ -||credible.com/api/logs-fe -||crm-vwg.com/tracker/ -||crowdskout.com/analytics.js -||crowdskout.com/skout.js -||crowdskout.com^*/page-view -||crowdtwist.com/trck/$script -||crta.and.co.uk^ -||crta.dailymail.co.uk^ -||csi.gstatic.com^ -||csp-collector.appspot.com^ -||csp-reporting.cloudflare.com^ -||csp.secureserver.net^ -||csr.onet.pl^ -||ct.capterra.com^ -||ct.corpusapp.com^ -||ct.eid.co.nz^$third-party -||ct.itbusinessedge.com^$third-party -||ct.needlive.com^ -||ct.pinterest.com^ -||ct.thegear-box.com^$third-party -||cts.businesswire.com^$third-party -||cts.vresp.com^$third-party -||curated.fieldtest.cc^ -||custom.search.yahoo.co.jp/images/window/*.gif -||customerlobby.com/ctrack- -||customfingerprints.bablosoft.com^ -||cws.conviva.com^ -||d.rcmd.jp^$image -||d.shareaholic.com^ -||dadi.technology^$third-party -||dash.getsitecontrol.com^ -||dashboard.nowdialogue.com/api/events/ -||data.circulate.com^ -||data.digitalks.az^ -||data.eetech.com^ -||data.gosquared.com^ -||data.minute.ly^ -||data.nexxt.com^ -||data.queryly.com^ -||data.tm-awx.com/smile-web-v2/ -||data.tm-awx.com/smile-web.min.js -||data.wiris.cloud/telemetry/ -||data.woosmap.com^ -||data2.gosquared.com^ -||datadog-service.mvfglobal.com^ -||datasign.co/js/opn.js -||daxab.com/logger/ -||dcinfos-cache.abtasty.com^ -||dditscdn.com/*fingerprints -||dditscdn.com/?a= -||dditscdn.com/log/ -||dealer.com^*/tracker/ -||dealer.com^*/tracking/ -||dealerfire.com/analytics/ -||delivra.com/tracking/$third-party -||dell.com/TAG/tag.aspx?$third-party -||delvenetworks.com/player/plugins/analytics/ -||demandmedia.com/wm.js -||demandmedia.s3.amazonaws.com^$third-party -||dep.hmgroup.com^ -||deprecated-custom-domains.b-cdn.net^$third-party -||desipearl.com/tracker/ -||detect.ergebnis-dienst.de^ -||dfanalytics.dealerfire.com^ -||dgcollector.evidon.com^ -||diagnose.igstatic.com^ -||dig.ultimedia.com^ -||digimedia.com/pageviews.php? -||digitalgov.gov/Universal-Federated-Analytics-Min.js -||digitaloceanspaces.com/pixel/ -||direct-collect.dy-api.com^ -||direct-collect.dy-api.eu^ -||direct-events-collector.spot.im^ -||directnews.co.uk/feedtrack/ -||discovery.com^*/events -||disqus.com/api/ping -||disqus.com/event.js?$script -||disqus.com/stats.html -||disquscdn.com/next/embed/alfalfalfa. -||distillery.wistia.com^ -||dl.episerver.net^ -||dmcdn.net/behavior/ -||dmdentertainment.com^*/video_debug.gif? -||dnnapi.com/analytics/ -||domodomain.com^*/ddsense.aspx? -||doppiocdn.com/healthcheck -||doppiocdn.org/healthcheck -||doppler-beacon.cbsivideo.com^ -||doppler-client-events.cbsivideo.com^ -||doppler-reporting.cbsivideo.com^ -||dotaudiences.com^$third-party -||dreamhost.com/*.cgi?$image,third-party -||drift.com/impressions/ -||drift.com/targeting/evaluate_with_log -||drift.com/track -||dugout.co/das2.js -||dw.com.com^$script -||dx.mountain.com^ -||dynamic.ziftsolutions.com^ -||dynamicyield.com/batch? -||dynamicyield.com/clog -||dynamicyield.com/dpx? -||dynamicyield.com/imp? -||dynamicyield.com/uia? -||dynamicyield.com/var? -||e-activist.com^*/broadcast.record.message.open.do? -||e-merchant.com/^*/edr.js$third-party -||e.channelexco.com^ -||e.ebidtech.com/cv/ -||e.htplayground.com^ -||ea.youmaker.com^ -||early-birds.fr/tracker/ -||ebayadservices.com/marketingtracking/ -||ebayrtm.com/rtm?RtmCmd&a=img&$image -||ebaystatic.com^*/pulsar.js -||ebaystatic.com^*/rover_$script -||ebaystatic.com^*/tracking_RaptorheaderJS.js -||ec.walkme.com^ -||ecomm.events^ -||ecommstats.s3.amazonaws.com^ -||ecustomeropinions.com/survey/nojs.php? -||ecustomeropinions.com^*/i.php? -||edge-hls.doppiocdn.com/ping -||edge-hls.doppiocdn.live/ping -||edge-hls.doppiocdn.org/ping -||edge.adobedc.net^ -||edge.bredg.com^$third-party -||edgesuite.net^*/googleanalyt -||edkt.io^*/edgekit.min.js -||edrone.me/trace? -||edw.edmunds.com/edw/edw1x1.gif -||eel.transistor.fm^ -||egmontpublishing.dk/tracking/ -||ele26126.jscrambler.com^ -||elpais.com/t.gif -||els-cdn.com^*/analytics.js -||emarketeer.com/tracker/ -||embedly.com/widgets/xcomm.html$third-party -||emihosting.com^*/tracking/ -||endorsal.io/check/ -||ensighten.com/error/e.php? -||epimg.net/js/gdt/ -||epl.paypal-communication.com^$script -||epromote.co.za/track/ -||eq.userneeds.com^ -||equalweb.com/statistics.taf -||era.easyvoyage.com^ -||errors.snackly.co^ -||et.educationdynamics.com^ -||etahub.com^*/track?site_id -||etl.springbot.com^ -||etoro.com/tradesmonitor/ -||eu-mobile.events.data.microsoft.com^ -||ev.moneymade.io^ -||ev.stellarlabs.ai^ -||event-api.contactatonce.com^ -||event-api.rdstation.com.br^ -||event-listener.air.tv^ -||event-logger.tagboard.com^ -||event-service.letslinc.com^ -||event-stream.spot.im^ -||event.api.drift.com^ -||event.instiengage.com^ -||event.syndigo.cloud^ -||event.webcollage.net^ -||eventapi.libring.com^ -||eventful.com/apps/generic/$image,third-party -||eventgateway.soundcloud.com^ -||eventlog.chatlead.com^ -||eventlog.inspsearchapi.com^ -||events.air.tv^ -||events.api.secureserver.net^ -||events.attentivemobile.com^ -||events.audiate.me^ -||events.brightline.tv^ -||events.btw.so^ -||events.demoup.com^ -||events.devcycle.com^ -||events.elev.io^ -||events.flagship.io^ -||events.jotform.com^ -||events.launchdarkly.com^$third-party -||events.mapbox.com^ -||events.matterport.com^ -||events.medio.com^ -||events.missena.io^ -||events.ocdn.eu^ -||events.paramount.tech^ -||events.realgravity.com^ -||events.release.narrativ.com^$subdocument,xmlhttprequest -||events.shareably.net^ -||events.splash-screen.net^ -||events.split.io^ -||events.storifyme.com^ -||events.tubecup.org^ -||events.ubembed.com^ -||events.whisk.com^ -||events.yourcx.io^ -||eventsproxy.gargantuan.futureplc.com^ -||eveonline.com/redir.asp$third-party -||evergage.com/beacon/ -||everyaction.com/v1/Track/ -||evidon.com/pub/ -||eviesays.com/js/analytics/ -||evri.com/analytics/ -||evt.24.com^ -||evt.collarity.com^$image -||evt.houzz.com^ -||ex.co/content/monetization/legacy-pixels/ -||exacttarget.com^$~subdocument,third-party -||excite.ie/?click_in= -||exitintel.com/log/$third-party -||expedia.com/static/default/default/scripts/siteAnalytics.js -||expedia.com/vaclog/ -||experience.contextly.com^ -||extole.io/core.js -||extole.io^*/core.js -||ezoic.net/ezqlog? -||f-log-at.grammarly.io^ -||f-log-test.grammarly.io^ -||f.email.bjs.com^*/1x2.gif -||facebook.com*/impression.php -||facebook.com/adnw_request? -||facebook.com/ai.php? -||facebook.com/brandlift.php -||facebook.com/common/cavalry_endpoint.php? -||facebook.com/method/links.getstats? -||facebook.com/platform/cavalry_endpoint.php? -||facebook.com/platform/scribe_endpoint.php/ -||facebook.com/tr/ -||facebook.com/tr? -||facebook.com/w/$third-party -||facebook.com/xti.php? -||factors.ai/sdk/event/ -||fairfax.com.au/js/track/ -||faphouse.com/api/collector/ -||fast.fonts.net/jsapi/core/mt.js -||fast.wistia.net/assets/external/googleAds.js -||fastcdn.co/js/sptw. -||fbot.me/error -||fbot.me/events/ -||fcmatch.google.com^ -||fcmatch.youtube.com^ -||feed.informer.com/fdstats -||feedblitz.com/imp?$third-party -||feedblitz.com^*.gif?$third-party -||feedify.net/thirdparty/json/track/ -||filament-stats.herokuapp.com^ -||files.envoke.com^*_nvk_tracking.js -||filesonic.com/referral/$third-party -||fingerprinter-production.herokuapp.com^ -||firebaselogging-pa.googleapis.com^ -||firecrux.com/track/$xmlhttprequest -||fitanalytics.com/metrics/ -||fkrkkmxsqeb5bj9r.s3.amazonaws.com^ -||flashstats.libsyn.com^ -||flex.msn.com/mstag/ -||flipp.com/beacons -||flix360.com/beat? -||flixcar.com/*/tracking/ -||flixcar.com/gvid -||flixcdn.com^*/track.js -||flixgvid.flix360.io^ -||flixster.com^*/analytics. -||flocktory.com^*/tracks/ -||flux-cdn.com/plugin/common/analytics/ -||flux.com/geo.html? -||fmnetwork.nl/tracking/ -||fog.pixual.co^ -||followistic.com/widget/stat/ -||footballmedia.com/tracking/ -||forethought.ai/workflow/tracking-event -||forms.aweber.com^*/displays.htm?id= -||formstack.com/forms/analytics.php -||formstack.com/forms/js/*/analytics_ -||fotomoto.com/analytics/ -||foureyes.io/fe-init.js -||fourmtagservices.appspot.com^ -||fp-cdn.azureedge.net^ -||freecurrencyrates.com/statgif. -||freedom.com^*/analytic/ -||freedom.com^*/analytics/ -||freehostedscripts.net^*.php?site=*&s=*&h=$third-party -||fresh.inlinkz.com^$third-party -||frog.editorx.com^ -||frontend-logger.flippback.com/api/logging -||fs-client-logger.herokuapp.com^ -||ftimg.net/js/log.js? -||ftm.fluencyinc.co^ -||fudge.ai/metrics? -||future-fie-assets.co.uk^ -||future-price.co.uk^ -||futurecdn.net/bordeaux.js$xmlhttprequest -||futurecdn.net^*/abp.js -||futurehybrid.tech^$third-party -||futureplc.com/push_metrics/ -||fw.tv/embed/impressions -||g.msn.com^ -||g2insights-cdn.azureedge.net^ -||ga-beacon.appspot.com^ -||ga.webdigi.co.uk^ -||gaijin.net/tag? -||gamedistribution.com/event? -||gamedock.io/gamemonkey-web-tracker/ -||gamegecko.com/gametrack? -||gannettdigital.com/capture_logger/ -||ganon.yahoo.com^ -||gatehousemedia.com/wickedlocal/ip.js -||gateway.dev/log -||gateway.foresee.com^ -||gcion.com/gcion.ashx? -||gecko.space/count.js -||geckofoot.com/gfcounterimg.aspx? -||geckofoot.com/gfvisitormap.aspx? -||gem.com/api/o/$image,third-party -||gemius.mgr.consensu.org^ -||genesis.malwarebytes.com^ -||geni.us/snippet.js -||geni.us/snippet.min.js -||geo.ertya.com^ -||geo.gexo.com/geo.js$third-party -||geo.gorillanation.com^ -||geo.mezr.com^ -||geo.ngtv.io^ -||geo.query.yahoo.com^$~xmlhttprequest,domain=~mail.yahoo.com -||geo.thehindu.com^ -||geobar.ziffdavisinternational.com^ -||geoip.apps.avada.io^ -||geoip.instiengage.com^ -||geoip.nekudo.com^ -||geolocation.outreach.com^ -||geoservice.curse.com^ -||getelevar.com/shops/*/events.js -||getglue.com^*/count? -||getkudos.me/a?$image -||getmetrical.com/storagesync -||getpos.de/ext/ -||getrockerbox.com/pixel? -||gi-client-tracking.goodgamestudios.com^ -||gigya.com^*/cimp.gif? -||giosg.com^*/public/trace/ -||glam.com/cece/agof/ -||glam.com/ctagsimgcmd.act? -||glam.com/jsadimp.gif? -||glam.com^*/log.act? -||gleam.io/seen? -||gleam.io^$script,third-party -||global.localizecdn.com/api/lib/*.gif? -||global.ssl.fastly.net/native/ -||globalservices.conde.digital/p77xzrbz9z.js -||gml-grp.com^*&affid=$subdocument,third-party -||go.activengage.com^ -||go.com/capmon/GetDE/? -||go.techtarget.com^$image,xmlhttprequest -||go.toutapp.com^$third-party -||goadv.com^*/track.js -||goaffpro.com/track -||goaww.com/stats.php -||godaddy.com/js/gdwebbeacon.js -||gomoxie.solutions^*/events -||google.com/analytics/$third-party -||google.com/gsi/log? -||googleapis.com/aam.js -||googleapis.com/gadasource/gada.js -||googleapis.com/ivc.js -||googlecode.com^*/tracker.js -||googleusercontent.com/tracker/ -||gotdns.com/track/blank.aspx? -||gotmojo.com/track/ -||gowatchit.com/analytics.js -||gowatchit.com^*/tracking/ -||grabnetworks.com/beacons/ -||grabnetworks.com/ping? -||grafana.net/collect/ -||graphcomment.com/api/thread/*/stats -||green-griffin-860.appspot.com^ -||gsp1.baidu.com^ -||gstatic.com/gadf/ga_dyn.js -||gstatic.com/retail/v2_event.js -||gstatic.com/wcm/impl- -||gstatic.com/wcm/loader.js -||gtmfsstatic.getgoogletagmanager.com^ -||gtrk.s3.amazonaws.com^ -||gu-pix.appspot.com^$third-party -||gubagoo.com/modules/tracking/ -||gubagoo.io/c/$image -||h2porn.com/new-hit/? -||hadrianpaywall.com/views -||happen.spkt.io^ -||hasbro.com/includes/js/metrics/ -||haymarket.com/injector/deliver/ -||hb.vhsrv.com^ -||hcmanager.swifteq.com/hc_events/ -||hdnux.com/HNP/stats/page_view? -||hearstmags.com^*/hdm-lib_hearstuser_proxy.html$third-party -||hearstnp.com/log? -||heg-cp.com/upm/$third-party -||hello.myfonts.net/count/ -||hello.staticstuff.net^ -||hellobar.com/ping? -||helloextend.com/tracking -||helloretail.com/serve/collect/ -||heraldandtimeslabs.com/sugar.js -||heroku.com/?callback=getip$third-party -||heyday.io/idx/ -||heyflow.co/pixel/ -||hi.hellobar.com^ -||hicloud.com/download/web/dtm.js -||highway.cablecar.sph.com.sg^ -||highwebmedia.com/CACHE/js/output.92c98302d256.js -||hit.mybestpro.com^ -||hits.dealer.com^ -||hits.getelevar.com^ -||hits.informer.com^ -||hktracker.hankookilbo.com^ -||hm.baidu.com^$third-party -||hocalwire.com/tracking- -||homedepot-static.com/data-collection/ -||homestore.com/srv/ -||honeycomb.io/1/events/ -||hop.clickbank.net^$script -||hornymatches.com^*/visit.php? -||hpr.outbrain.com^ -||hqq.tv/js/counters.js -||hrzn-nxt.com/pxl? -||hsforms.com/embed/v3/counters.gif -||hspbotdetection.azurewebsites.net^ -||hub.reacti.co/index.js -||hubspot.com/analytics/ -||hubspot.com/cs/loader-v2.js -||hubspot.com/tracking/ -||hubspot.com/usage-logging/ -||hushforms.com/visitorid? -||hydro-ma-proxy.akamaized.net^ -||hypercomments.com/widget/*/analytics.html -||i.compendium.com^ -||i.posthog.com^ -||i.s-microsoft.com/wedcs/ms.js -||i.viafoura.co^ -||iabusprivacy.pmc.com^ -||iadvize.com/collector/ -||ibmcloud.com/collector/ -||icbdr.com/images/pixel.gif -||icu.getstorybox.com^ -||id.google.*/verify/ -||id.verticalhealth.net/script.js?partnerid= -||iddu1vvb7sk8-a.akamaihd.net^ -||identification.hotmart.com^ -||iheart.com/events -||ihi.flowplayer.com^ -||imageshack.us^*/thpix.gif -||imgfarm.com/images/nocache/tr/*.gif?$image -||imgfarm.com/images/trk/myexcitetr.gif? -||imgfarm.com^*/mw.gif?$third-party -||imp.constantcontact.com^$third-party -||imp.pvnsolutions.com^ -||impdesk.com/smartpix/ -||impel.io/releases/analytics/ -||impress.vcita.com^ -||impression.clickinc.com^ -||impressionmedia.cz/statistics/ -||inbound-analytics.pixlee.co^ -||incapdns.net/monitor.js -||incomaker.com//tracking/ -||ind.sh/view.php?$third-party -||indoleads.com/api/pixel-content/ -||inetstatic.com/tracking/ -||infinityid.condenastdigital.com^ -||infogr.am/logger.php? -||informer.yandex.ru^ -||infosniper.net/locate-ip-on-map.php -||infusionsoft.com^*/getTrackingCode? -||ingest.make.rvapps.io^ -||inmobi.com/?log -||inmoment.com.au/intercept/$third-party -||inmoment.com/intercept/$third-party -||inmoment.com/websurvey/$third-party -||innogamescdn.com/media/js/metrics- -||inphonic.com/tracking/ -||inq.com^*/onEvent?_ -||ins.connatix.com^ -||insiderdata360online.com/service/platform.js -||insight.mintel.com^$third-party -||insight.rapid7.com^$third-party -||insights.algolia.io^ -||insights.sitesearch360.com^ -||insitez.blob.core.windows.net^ -||instagram.com/logging/ -||instagram.com/logging_client_events -||installiq.com/Pixels/ -||intake-analytics.wikimedia.org^ -||intelligems.io/track -||intelligencefocus.com^*/sensor.js -||intelligencefocus.com^*/websensor.aspx? -||intensedebate.com/remotevisit.php? -||intensedebate.com/widgets/blogstats/ -||intercomcdn.com/intercom*.js$domain=unblocked.la -||internetfuel.com/tracking/ -||intuitwebsites.com/tracking/ -||invite.leanlab.co^ -||invitejs.trustpilot.com^ -||io.narrative.io/?$third-party -||ip.lovely-app.com^ -||ip.momentummedia.com.au^ -||ippen.space/idat -||ipstatp.com/growth/fe_sdk/reportsdk/$third-party -||ipstatp.com/static_magic/pgc/tech/collect/$third-party -||iq.sixaxisllc.com^ -||iqzone.com^$third-party -||iraiser.eu/analytics.js -||isacglobal.com/sa.js -||isitelab.io/ite_sitecomV1ANA.min.js -||iterable.com/analytics.js -||iturl.in/analytics? -||iubenda.com/write? -||iyisayfa.net/inc.php? -||jailbaitchan.com/tp/ -||jangomail.com^*?UID$third-party -||jas.indeednps.com^ -||javascriptcounter.appspot.com^ -||jennifersoft.com^$third-party -||jill.fc.yahoo.com^ -||jly24aw29n5m-a.akamaihd.net^ -||jobvite.com/analytics.js -||jotform.io/getReferrer/$third-party -||jscache.com/static/page_moniker/ -||jsdelivr.net/gh/sensitiveio/sbtracker@master/ -||jsdelivr.net/npm/navigator.sendbeacon -||jsdelivr.net^*/fp.min.js -||jsrdn.com/s/1.js -||jst.ai/vck.js -||jtracking-gate.lulusoft.com^ -||k.keyade.com^ -||k.streamrail.com^ -||k8s-tracking-tracking-6c17add7fc-253503024.eu-central-1.elb.amazonaws.com^ -||kalstats.kaltura.com^ -||kbb.com/partner/$third-party -||kelkoogroup.net/st? -||key4web.com^*/set_cookie_by_referer/ -||kinesis.*.amazonaws.com^$third-party,domain=~amazon.com -||kiwari.com^*/impressions.asp? -||kiwi.mdldb.net^ -||kiwisizing.com/api/log -||kk-resources.com/ks.js -||klarnaservices.com/v1/osm-client-script/ -||klarnaservices.com^$image,third-party -||klaviyo.com/onsite/js/sentry. -||klaviyo.com/onsite/track-analytics? -||klickly.com/track -||kmib.co.kr/ref/ -||kochava.com/track/$third-party -||kununu.com^*/tracking/ -||kxcdn.com/actor/$third-party -||kxcdn.com/assets/js/script.js -||kxcdn.com/prj/ -||kxcdn.com/track.js -||l-host.net/etn/omnilog? -||l.fairblocker.com^$third-party -||l.ooyala.com^ -||l.player.ooyala.com^ -||l.sharethis.com^ -||l.typesquare.com^ -||lambda-url.us-east-1.on.aws/chug/event -||laurel.macrovision.com^ -||laurel.rovicorp.com^ -||lciapi.ninthdecimal.com^ -||lcs.naver.com^ -||leadliaison.com/tracking_engine/ -||leadpages.net/leadboxes/current/embed.js -||leadpages.net^*/tracking.js -||leadtracking.plumvoice.com^ -||leadvision.dotmailer.co.uk^$third-party -||lederer.nl/incl/stats.js.php? -||legacy.com/globalscripts/tracking/ -||legacy.com^*/unicaclicktracking.js? -||letv.com/cloud_pl/ -||letv.com/env/ -||levelaccess.net/analytics/ -||lhinsights.com/collect? -||libcdnjs.com/api/event -||libs.platform.californiatimes.com/meteringjs/ -||licdn.com/*.gif?rnd= -||licensing.bitmovin.com/impression -||lift.acquia.com^ -||lightboxcdn.com/static/identity.html -||limbik.com/static/tracking-script.js -||lingows.appspot.com/page_data/? -||link.cosmopolitan.com^$image -||link.indiegogo.com/img/ -||link.informer.com^ -||link.messaging.usnews.com^$image -||link.myjewishpage.com^$image -||link.realself.com^$image -||linkbucks.com/visitScript/ -||linkdeli.com/widget.js -||linkedin.com/countserv/count/$third-party -||links.voyeurweb.com^ -||linkwithin.com/pixel.png -||list-manage.com/track/ -||list.fightforthefuture.org/mpss/o/*/o.gif -||listen.audiohook.com/*/pixel.png -||listrak.com/api/Activity/click -||listrak.com/api/Activity/impression -||listrakbi.com/activity/ -||listrakbi.com/api/ActivityEvents/ -||lit.connatix.com^ -||literally-analytics.appspot.com^ -||live-partner.com/tags? -||live-tv.top/js/k.min.js -||live.mrf.io/statics/marfeel/gardac-sync.js -||live2support.com^*/js_lstrk. -||livechatinc.com^*/control.cgi? -||livecounter.theyosh.nl^ -||livefyre.com/libs/tracker/ -||livefyre.com/tracking/ -||livefyre.com^*/tracker.js -||livefyre.com^*/tracking/ -||livehelpnow.net/lhn/handler/$image -||livelyvideo.tv/lb/logger -||liverail.com/?metric= -||liverail.com/track/? -||livestats.kaltura.com^ -||livestory.io/*/collect -||llama.fi/script.js -||lma.npaw.com^ -||loader-cdn.azureedge.net^ -||loader.zeroform.com^ -||location3.com/analytics/ -||log-*.previewnetworks.com^ -||log-pq.shopfully.cloud^ -||log.aimtell.com^ -||log.cookieyes.com^ -||log.dpa.com^ -||log.go.com^ -||log.mediacategory.com^ -||log.nordot.jp^ -||log.olark.com^ -||log.outbrain.com^ -||log.pinterest.com^ -||log.reformal.ru^ -||log.seekda.com^ -||logger.snackly.co^ -||logging.carambo.la^ -||logging.je-apps.com^ -||logging.pw.adn.cloud^ -||loggingapi.spingo.com^ -||loglady.skypicker.com^ -||logs-api.shoprunner.com^ -||logs.animaapp.com^ -||logs.datadoghq.com^$third-party -||logs.mezmo.com^ -||logs.spilgames.com^ -||logs.thebloggernetwork.com^ -||longtailvideo.com^*/yourlytics- -||loomia.com^*/setcookie.html -||lps.qantas.com^ -||lsimg.net^*/vs.js -||ltwebstatic.com/she_dist/libs/devices/fpv2. -||ltwebstatic.com^*/libs/sensors/ -||lucid.mjhassoc.com^ -||luminate.com/track/ -||lycos.com/hb.js -||m.clear.link/cpr/external/track -||m.stripe.com^$third-party,domain=~stripe.network -||ma.logsss.com^ -||magento-recs-sdk.adobe.net^ -||magnify.net/decor/track/ -||mail-app.com/pvtracker/ -||mail.ru/dstat? -||mail.ru/grstat? -||mail.ru/k? -||mandrillapp.com/track/ -||maptrackpro.com/track/ -||marketcat.co/pixel/ -||marketingautomation.services/client/ss.js -||marketingautomation.services/koi -||marketo.com/gw1/ -||marketo.com/rtp-api/ -||marsflag.com/mf2file/site/ext/tr.js -||martech.condenastdigital.com^ -||mas.nth.ch^ -||mashery.com/analytics/ -||materiel.net/r/$image -||maven.io/api/userEvent/ -||mavencoalition.io/collect -||maxmind.com/app/$third-party -||maxmind.com/geoip/$third-party -||maxmind.com/js/country.js -||maxmind.com/js/device.js$third-party -||maxmind.com^*/geoip.js -||maxmind.com^*/geoip2.js -||mbsvr.net/js/tracker/ -||mc.webvisor.com^ -||mc.webvisor.org^ -||mc.yandex.com^ -||mc.yandex.ru^ -||mcdp-*.outbrain.com^ -||mcssl.com^*/track.ashx? -||mdxprod.io/analytics.js -||measure.refinery89.com^ -||media-imdb.com/twilight/? -||media-lab.ai/ana-sentry.js -||media-platform.com/common/js/lib/cxense/ -||mediabong.com/t/ -||mediabong.net/t/ -||mediadelivery.net/.metrics/ -||mediadelivery.net/rum.js -||mediaite.com^*/track/ -||mediametrics.mpsa.com^ -||mediaplex.com^*?mpt= -||meebo.com/cim/sandbox.php? -||merklesearch.com/merkle_track.js -||metabroadcast.com^*/log? -||metaffiliation.com^*^mclic= -||metering.pagesuite.com^$third-party -||metrics-api.librato.com^ -||metrics-logger.spot.im^ -||metrics.api.drift.com^ -||metrics.beyondwords.io^ -||metrics.brightcove.com^ -||metrics.ctvdigital.net^ -||metrics.doppiocdn.com^ -||metrics.doppiocdn.org^ -||metrics.doppiostreams.com^ -||metrics.futureplc.engineering^ -||metrics.gs-chat.com^ -||metrics.kmsmep.com^ -||metrics.mdstrm.com^ -||metrics.onshape.com^ -||metrics.pico.tools^ -||metrics.scribblelive.com^ -||metrics.userguiding.com^ -||metrix.emagister.com^ -||mgmlcdn.com/stats/ -||minutemediacdn.com/campaign-manager-client/ -||mircheigeshoa.com/prod/smi/fp.min.js -||mixpanel.com/track? -||mj-snowplow-static-js.s3.amazonaws.com^ -||mkcms.com/stats.js -||ml.com/enterprisetagging/ -||mlweb.dmlab.hu^ -||mmcdn.com/events/ -||mmi.bemobile.ua^ -||mochiads.com/clk/ -||moco.yukata.dev/get/$image,third-party -||modules.ooyala.com^*/analytics- -||mon.domdog.io^ -||monitor-api.blackcrow.ai^ -||monitor-frontend-collector.a.bybit-aws.com^ -||monitor.azure.com^ -||monitoring.iraiser.eu^ -||monorail-edge.shopifysvc.com^ -||mormont.gamer-network.net^ -||movementventures.com/_uid.gif -||mowplayer.com/media/statistics/ -||mozilla.org/page/*/open.gif$third-party -||mql5.com/st? -||mql5.com/tr? -||mrf.io/statics/marfeel-sdk.js -||mrf.io/statics/marfeel/chunks/metrics- -||ms-trackingapi.phenompeople.com^ -||msadsscale.azureedge.net^ -||msecnd.net/jscripts/HA-$script -||msecnd.net/next/$script -||msecnd.net/script/raptor- -||msecnd.net/scripts/a/ai. -||msecnd.net/scripts/b/ai. -||msecnd.net/scripts/jsll- -||mshcdn.com/assets/metrics- -||mssdk.tiktokw.us/web/report? -||mtvnservices.com/aria/projectX/ -||mtvnservices.com/aria/uuid.html -||mtvnservices.com/measurements/ -||mtvnservices.com/metrics/ -||munchkin.marketo.net^ -||murdoog.com^*/Pixel/$image -||museter.com/track.php? -||musvc2.net/e/c? -||mv.treehousei.com^ -||mxmfb.com/rsps/img/ -||myblueday.com^*/count.asp? -||myfinance.com/widget/ -||myfreecams.com/mfc2/lib/o-mfccore.js -||mymarketing.co.il/Include/tracker.js -||myprivacy.dpgmedia.net/audits -||myscoop-tracking.googlecode.com^$third-party -||mysdcc.sdccd.edu^*/.log/ -||mysociety.org/track/ -||mzbcdn.net/mngr/mtm.js -||nastydollars.com/trk/ -||native-ads-events-api.c4s-rd.services^ -||naver.net/wcslog.js -||navlink.com/__utmala.js -||nbcudigitaladops.com/hosted/housepix.gif -||nbcudigitaladops.com/hosted/util/geo_data.js -||ncdn22.xyz/cdn-cgi/trace -||needle.com/pageload? -||needle.com/pageupdate? -||neocounter.neoworx-blog-tools.net^ -||neon-lab.com/neonbctracker.js -||net-tracker.notolytix.com^$third-party -||netbiscuits.net^*/analytics/ -||netclick.io/pixel/ -||netdna-ssl.com/tracker/ -||netlify-rum.netlify.app^ -||netne.net/stats/ -||netscape.com/c.cgi? -||neulion.vo.llnwd.net^*/track.js -||news.banggood.com/mo/$image,third-party -||newsanalytics.com.au^$third-party -||newscgp.com/cs/sync/ -||newsletters.nationalgeographic.com^$image,third-party -||newton.pm/events/track_bulk -||nexstardigital.net/segment.js -||nfcube.com/assets/img/pixel.gif -||ngpvan.com/v1/Track/ -||nice264.com/data?$third-party -||nile.works/api/save-perf? -||nile.works/TargetingWebAPP/ -||ninja.onap.io^ -||nitrous-analytics.s3.amazonaws.com^ -||noflake-aggregator-http.narvar.com^ -||nojscontainer.pepperjam.com^$third-party -||nol.yahoo.com^ -||notyf.com/pixel/ -||nova.dice.net^ -||nr.static.mmcdn.com^ -||ns-cdn.com^*/ns_vmtag.js -||ns.rvmkitt.com^ -||nude.hu/html/track.js -||nvidia.partners/telemetry/ -||o.aolcdn.com/js/mg1.js -||observer.ip-label.net^ -||ocmail1.in/rtw/$image -||oct8ne.com/Visitor/ -||octaneai.com^*/utrk -||octopart-analytics.com^$third-party -||oda.markitondemand.com^ -||odysee.com/api/v1/metric/ -||odysee.com/log/ -||ohnorobot.com/verify.pl? -||olytics.omeda.com^ -||ondigitalocean.app/insight-analytics.js -||one.store/v1/analytics/ -||onecount.net/onecount/oc_track/ -||onescreen.net/os/static/pixels/ -||onesignal.com/api/v*/apps/ -||onesignal.com/api/v1/sync/ -||onesignal.com/sdks/OneSignalSDKStyles -||onesignal.com/sdks/OneSignalSDKWorker -||onesignal.com/webPushAnalytics -||onespot-tracking.herokuapp.com^ -||onet.pl/eclk/ -||onet.pl^*/tags? -||onetrust.com^$ping -||onsugar.com/static/ck.php? -||ontraport.com/track.php -||ontraport.com/tracking.js -||oo-syringe.com/prod/moat.js -||ooyala.com/3rdparty/comscore_ -||ooyala.com/authorized?analytics -||ooyala.com/sas/analytics? -||ooyala.com/verify? -||ooyala.com^*/report?log -||openxcdn.net^$third-party -||opinary.com/v1/events -||optimeeze.appspot.com^ -||optmn.cloud/hb/ -||ora.tv/j/ora_evttracking.js -||orb.ee/collect -||ordergroove.com/log/offer? -||organiccdn.io/assets/sdk/monitor.unit-sdk.js -||organicfruitapps.com/analytics/ -||orts.wixawin.com^$third-party -||osano.com/js/?action_name= -||outbrain.com/nanoWidget/externals/cookie/ -||outbrain.com/widgetOBUserSync/ -||outbrain.com^$third-party -||outbrain.com^*/widgetStatistics.js -||p.cquotient.com^ -||p.metrilo.com^ -||p.placed.com^ -||p.skimresources.com^ -||p.typekit.net^ -||p.yotpo.com^ -||p0.com/1x1 -||paddle.com^*/analytics.js -||page-events-ustats.udemy.com^ -||pagecloud.com/event -||pagefly.io/pagefly/core/analytics.js -||pages-stats.rbl.ms^ -||pagesense-collect.zoho.com^ -||pagesocket.glam.com^ -||pageturnpro.com/tracker.aspx? -||pair.com/itero/tracker_ftc/ -||panorama.wixapps.net^ -||pap.qualityunit.com^$third-party -||parallax.askmediagroup.com^ -||parkwhiz.com/events/ -||parsely.com/keys/$script,third-party -||partners.etoro.com^$script -||patreon.com/api/tracking -||payments-amazon.com^*/analytics.js -||payments.amazon.com/cs/uedata -||paypal.com/ptrk/ -||paypal.com/webapps/mch/cmd/? -||paypal.com/xoplatform/logger/api/logger -||paypal.com^*/pixel.gif$third-party -||paypalobjects.com^*/pixel.gif -||pbjs-stream.bydata.com^ -||pc161021.com/scripts/noui/eventlogger.js -||pc161021.com/scripts/noui/StatProvider.js -||pcrl.co/js/jstracker.min.js -||pega.com/logserver -||pegasus.unifygroup.com^ -||penton.com/analytics/ -||perf-events.cloud.unity3d.com^ -||perf.hsforms.com^ -||perfops.net/rom3/ -||performgroup.com/metrics/ -||perr.h-cdn.com^ -||perso.aws.arc.pub^ -||pets.channeladvisor.com^ -||photobox.com/event -||photobox.com/logs -||phrasetech.com/api/collect -||pi.ispot.tv^ -||piano.io/api/v3/customform/log/impression -||piano.io/tracker/ -||pico.tools/metrics/ -||ping-admin.ru^$third-party -||ping.dozuki.com^ -||ping.fastsimon.com^ -||ping.instantsearchplus.com^ -||pings.conviva.com^ -||pings.vidpulse.com^ -||pipe-collect.ebu.io^ -||pipedream.wistia.com^ -||pix.hyj.mobi^ -||pix.revjet.com^ -||pix.speedbit.com^$third-party -||pix.spot.im^ -||pixel-a.basis.net^ -||pixel.ampry.com^ -||pixel.anyclip.com^ -||pixel.archipro.co.nz^ -||pixel.blivenyc.com^ -||pixel.byspotify.com^ -||pixel.condenastdigital.com^ -||pixel.driveniq.com^ -||pixel.fohr.co^ -||pixel.inforsea.com^ -||pixel.lilystyle.ai^ -||pixel.locker2.com^ -||pixel.mintigo.com^ -||pixel.mtrcs.samba.tv^ -||pixel.newscred.com^ -||pixel.redgifs.com^ -||pixel.roymorgan.com^ -||pixel.s3xified.com^ -||pixel.safe-installation.com^ -||pixel.solvemedia.com^ -||pixel.sprinklr.com^ -||pixel.videohub.tv^ -||pixel.wp.com^ -||pixel.yabidos.com^ -||pixel.yola.com^ -||pixels.afcdn.com^ -||pixlee.com/assets/fp.js -||pixlee.com/assets/keen- -||pixlee.com/assets/pixlee_events.js -||pl.connatix.com^ -||pla.fwdcdn.com^ -||platform.iteratehq.com^ -||plausible.io/js/p.js -||plausible.io/js/plausible. -||plausible.server.hakai.app^ -||plausibleio.workers.dev^$third-party -||play.adtonos.com^ -||play.ht/views/ -||player-metrics.instaread.co^ -||player.ooyala.com/errors/report? -||playtomic.com/Tracker/ -||plista.com/activity -||pm.boostintegrated.com^ -||poool.fr/api/v3/access/event -||popup-static.unisender.com^ -||porpoise.azettl.net^ -||postageapp.com/receipt/$third-party -||poweredbyeden.com/widget/tracker/ -||ppx.com/tracking/ -||pr-bh.ybp.yahoo.com^ -||pr.blogflux.com^ -||prd-collector-anon.ex.co^ -||prd-collector-platform.ex.co^ -||presspage.com/statistics/ -||prf.vagnt.com^ -||pricespider.com/impression/ -||primedia.co.za/analytics/ -||primer.typekit.net^$xmlhttprequest -||prism.app-us1.com^$script,third-party -||prismaconnect.fr/prd/ping -||privacy-center.org^*/events -||privacy.outdoorsg.com^ -||processor.asccommunications.com^ -||prod.benchmarkemail.com/tracker.bundle.js -||prod.ew.srp.navigacloud.com^ -||prod.fennec.atp.fox^ -||propps.com/v1/referrer/ -||providesupport.com/cmd/$image -||proxy.dzeio.com^ -||proxycheck.io/v2/ -||pswec.com/px/$third-party -||pt.crossmediaservices.com^ -||pt.ispot.tv^ -||ptracker.nurturehq.com^ -||ptsc.shoplocal.com^ -||pub.pixels.ai/metrics-lib.js -||pub.sheknows.com^ -||pubimgs.net/main.gif? -||public.cobrowse.oraclecloud.com/rely/storage/ -||public.fbot.me/track/ -||publicbroadcasting.net/analytics/ -||purevideo.com^*/pvshim.gif? -||pushly.com/pushly-event-tracker -||pushpro.io/api/logging/ -||pussy.org^*.cgi?pid= -||pussy.org^*/track.php -||px-cdn.net/b/ -||px-cdn.net^*/collector -||px-cloud.net/b/s -||px.marchex.io^ -||px.mountain.com^ -||px.owneriq.net^ -||px.spiceworks.com^ -||pxchk.net/b/s -||pylon.micstatic.com^ -||qcloud.com/report.go? -||qq.com/collect? -||qq.com/dataimport/ -||qq.com/heatmap/ -||qq.com/ping.js? -||qq.com/stats? -||quadpay.com/analytics/ -||qualifioapp.com/egw/events -||qualtrics.com/jfe/$script,third-party -||qualtrics.com/sie/$script,third-party -||qualtrics.com/WRSiteInterceptEngine/?Q_Impress=$third-party -||qualtrics.com^*/metrics -||quantcast.com/?log -||quantcast.mgr.consensu.org/?log -||qubitanalytics.appspot.com^ -||query.petametrics.com^ -||quisma.com/tracking/ -||quora.com/_/ad/ -||quora.com/qevents.js -||qzzr.com/_uid.gif -||r.mail.ru^$script -||r.skimresources.com^ -||r.stripe.com^$script,xmlhttprequest -||rackcdn.com/gate.js -||rackcdn.com/stf.js -||radiotime.com/Report.ashx? -||radiotime.com/reports/ -||rakanto.com/cx_collector/ -||ramp.purch.com^ -||rampjs-cdn.system1.com^ -||raygun.io/events? -||rbl.ms/res/users/tracking/ -||reach-id.orbit.tm-awx.com^ -||readcube.com/assets/track_ -||realm.hearst3pcc.com^ -||rebelmouse.com/pharos/ -||recart.com/tracking/ -||receive.wmcdp.io^ -||recipefy.net/analytics.js -||recs-api.conde.digital^ -||recs.richrelevance.com/rrserver/api/engage/trackExperienceEvent? -||recs.shareaholic.com^ -||recurly.com/js/v1/events -||redditsave.com/api/event -||redditstatic.com/ads/pixel.js -||redfast.com/ping/ -||reevoo.com/track_url/ -||refer.wordpress.com^ -||referrer.disqus.com^ -||reflow.tv/pixels/ -||rejoiner.com/tracker/ -||relaymedia.com/ping?$third-party -||removeads.workers.dev^ -||replit.app/tap/ -||replyat.com/gadgetpagecounter.asp? -||reporting-api.gannettinnovation.com^ -||reporting.cdndex.io^ -||reporting.singlefeed.com^ -||reports-api.sqreen.io^ -||reports.hibu.com^ -||reports.sdiapi.com^ -||res.rbl.ms^ -||rest.wildstar-online.com^ -||retargeting.newsmanapp.com^ -||reverbnation.com/widgets/trk/ -||rfksrv.com/rfk/$third-party -||rfksrv.com/rfkj/$image -||richrelevance.com/rrserver/tracking? -||rltd.io/tags/ -||roadster.com/roadster_dealer_analytics -||rodale.com/ga/ -||route.com/collect -||routeapp.io/route-analytics/ -||rs.sinajs.cn^ -||rt.flix360.com^ -||rtc.hibuwebsites.com/feature/metrics -||rtc.multiscreensite.com^ -||rtxpx-a.akamaihd.net^ -||rum.azion.com^ -||rum.azioncdn.net^ -||rum.corewebvitals.io^ -||rum.ingress.layer0.co^ -||rum.layer0.co^ -||rum.perfops.net^ -||rum.uptime.com^ -||rumstat.cdnvideo.ru^ -||run.app/data.log -||run.app/metrics/ -||rw.marchex.io^ -||s-microsoft.com/mscc/$~stylesheet -||s.autopilotapp.com^ -||s.beop.io^ -||s.logsss.com^ -||s.pinimg.com/ct/core.js -||s.srvsynd.com^ -||sa.scorpion.co^ -||saasexch.com/bapi/fe/usd/report/ -||safe-iplay.com/logger -||sail-horizon.com/horizon/$third-party -||sailthru.com/Sailthru_spacer_1x1.gif -||sajari.com/js/sj.js$third-party -||salescs.com/liveagent/scripts/track.js -||salesforce.com/sfga.js -||salesloft.com/sl.js -||salsify-ecdn.com/sdk/ -||sascdn.com/mh_audience/ -||sawpf.com/1.0.js$third-party -||saymedia.com/latest/tetrapak.js -||scatec.io/collect -||schemaapp.com/pagecount -||schibsted.com/autoTracker -||sciencex.com/api/location/ -||scout.salesloft.com/r?tid= -||scout.us2.salesloft.com^$image -||scribd.com/api/v1/events -||scribol.com/traffix/widget_tracker/ -||script-api.kinja.com/script? -||scripts.psyma.com^ -||scripts.swifteq.com/hc_events.js -||sd-tagging.azurefd.net^ -||sdiapi.com/reporter/ -||sdk.51.la^$third-party -||sdrive.skoda-auto.com^ -||sdtagging.azureedge.net^ -||searchcompletion.com/BannerHandler.ashx -||secure-stats.pingdom.com^ -||secure.ifbyphone.com^$third-party -||secure.merchantadvantage.com^ -||secureprovide1.com/*=tracking$image -||secureserver.net/t/ -||seg.sharethis.com^ -||segments.adap.tv^$third-party -||sendtonews.com/stn_trk.gif? -||sentry.arc.io^ -||sermoncloud.com/logger/ -||service.trustpid.com^ -||session.timecommerce.net^ -||sexhd.pics/x/x.js -||sezzle.com/v1/event/log -||sfstatic.net/build/js/basicMetricsTracking. -||sftrack.searchforce.net^ -||sgali-mcs.byteoversea.com^ -||share-online.biz/affiliate/$third-party -||shareaholic.com/analytics_ -||shareaholic.com/partners.js -||shared.65twenty.com^ -||shareholder.com/track/ -||shareit.com/affiliate.html$third-party -||sharethis.com/increment_clicks? -||sharethis.com/pageviews? -||shopify-gtm-suite.getelevar.com/getelevar/*/dl-web-pixel-lax-custom.js -||shopify.com/shopifycloud/consent-tracking-api/ -||shopify.com/shopifycloud/web-pixels-manager/ -||shoplocal.com/it.ashx? -||shopnetic.com^$third-party -||shorthand.com/analytics/ -||showstopped.com/owa/log.php -||showstopped.com/owa/modules/base/dist/owa.tracker.js -||shrtfly.vip/js/tag.js -||sinajs.cn/open/analytics/ -||sitebooster.com/sb/wix/p?$third-party -||sitefinity.com/collect/ -||sitescdn.net/ytag/ytag.min.js -||skeepers.io/data/collect -||skypack.dev/@amplitude/ -||skysa.com/tracker/ -||slackb.com^ -||slgnt.us/track -||sli-spark.com/b.png$third-party -||slidedeck.com^$image,third-party -||smart-data-systems.com^ -||smartertravel.com/ext/pixel/ -||smarthint.co/Scripts/i/SmartHintTrack.Full.min.js -||smarthint.co/track/ -||smrt.as^ -||snapkit.com/v1/sdk/metrics/ -||snaps.vidiemi.com^$third-party -||snowplow.swm.digital^ -||snowplowjs.darwin.cx^ -||soccer.ru/counter/ -||socialannex.com/c-sale-track/$script -||solutions.invocacdn.com^ -||soundestlink.com/rest/forms/v2/track/ -||soundestlink.com/REST/forms/v2/track/view? -||sourceforge.net/tracker/$~xmlhttprequest -||sp-wukong-tracker.b-cdn.net^ -||sp.tinymce.com^ -||spa-tracker.spapi.io^ -||sparklit.com/counter/ -||speedtest.dailymotion.com/latencies.js -||speedtrap.shopdirect.com^ -||spindl.link/events -||spiral.world/events/ -||splunkcloud.com/services/collector/ -||spot.im/v1.0.0/conversation/realtime/read -||spotpass.com/api/log -||spread.ly^*/statistics.php -||spresso.com/pim/public/events -||squarecdn.com/square-marketplace-js/chunk-analytics-vendors.js -||squarecdn.com/square-marketplace-js/chunk-analytics.js -||squarespace.com/universal/scripts-compressed/performance-$script,third-party -||srvmath.com^*/analytics.js -||ssa.stepstone.com^ -||ssc.shopstyle.com/collective.min.js -||ssl-images-amazon.com/images/I/31YXrY93hfL.js$domain=imdb.com -||ssr.streamrail.net^ -||st.cdnco.us^ -||st.linkfire.com^ -||staging-pt.ispot.tv^ -||starman.fathomdns.com^ -||stas.outbrain.com^ -||stat.absolutist.com^ -||stat.boredomtherapy.com^ -||stat.glaze.ai^ -||stat.mixi.media^ -||stat.moevideo.net^ -||stat.mydaddy.cc^ -||stat.segitek.hu^ -||stat.u.sb^ -||stat.web-regie.com^ -||statdb.pressflex.com^ -||static-tracking.klaviyo.com^ -||static.fengkongcloud.com^ -||static.parsely.com^$third-party -||staticmoly.me/metric.php -||statistics.tattermedia.com^ -||statistics.wibiya.com^ -||statm.the-adult-company.com^ -||stats-bq.stylight.net^ -||stats-dev.brid.tv^ -||stats-messages.gifs.com^ -||stats-newyork1.bloxcms.com^ -||stats.big-boards.com^ -||stats.bitgravity.com^ -||stats.bluebillywig.com^ -||stats.bradmax.com^ -||stats.callnowbutton.com^ -||stats.cmcigroup.com^ -||stats.curds.io^ -||stats.datahjaelp.net^ -||stats.edicy.com^ -||stats.esecured.net^ -||stats.externulls.com^$domain=beeg.com -||stats.flixhq.live^ -||stats.fomo.com^ -||stats.gifs.com^ -||stats.heyoya.com^ -||stats.inergizedigitalmedia.com^ -||stats.itweb.co.za^ -||stats.kaltura.com^ -||stats.ksearchnet.com^ -||stats.live-video.net^$domain=kick.com -||stats.lotlinx.com^ -||stats.mituyu.com^ -||stats.mpthemes.net^ -||stats.nebula.fi^ -||stats.netbopdev.co.uk^ -||stats.netdriven.com^ -||stats.olark.com^ -||stats.ozwebsites.biz^ -||stats.phoenix-widget.com^ -||stats.polldaddy.com^ -||stats.prebytes.com^ -||stats.pusher.com^ -||stats.sa-as.com^ -||stats.sawlive.tv^ -||stats.screenresolution.org^ -||stats.shopify.com^ -||stats.smartclip.net^ -||stats.topofblogs.com^ -||stats.uscreen.io^ -||stats.varrando.com^ -||stats.viddler.com^ -||stats.webs.com^ -||stats.webstarts.com^$third-party -||stats.wp.com^ -||stats.wpmucdn.com^ -||stats.zotabox.com^ -||statsadv.dadapro.com^$third-party -||statsapi.screen9.com^ -||statscollector-1.agora.io^ -||statscollector.sd-rtn.com^ -||statt-collect.herokuapp.com^ -||stg-data-collector.playbuzz.com^ -||stileproject.com/vhtk/ -||storage.googleapis.com/afs-prod/tags -||storage.googleapis.com/nchq-dj-nid/prod/sp_v1.js -||storage.googleapis.com/snowplow-cto-office-tracker-bucket/ -||storage.googleapis.com/tm-frend-graffiti/ -||storage.syncmedia.io/libs/sm_capture_ -||streamads.com/view? -||streamoptim.com/log.js -||streamoptim.com/log/report? -||streams.cablecar.sph.com.sg^ -||streamtheworld.com/imp? -||stripe.com/?event= -||sts.eccmp.com^ -||stylitics.com/api/engagements -||su.pr/hosted_js$third-party -||sulia.com/papi/sulia_partner.js/$third-party -||sunlightmetrics.b-cdn.net^ -||sunset.com/tia/ -||survey.interquest.com^ -||surveymonkey.com/resp/api/metrics -||surveywall-api.survata.com^$third-party -||svc.dynamics.com/f/m/$third-party -||svc.dynamics.com/t/w$third-party -||svibeacon.onezapp.com^ -||swarm.video/track/ -||swiftypecdn.com/cc.js$third-party -||swiftypecdn.com/te.js$third-party -||sync.adap.tv^ -||sync.outbrain.com^$third-party -||synergizeonline.net/trackpoint/ -||system-beta.b-cdn.net^ -||syteapi.com/et? -||t.360playvid.info^ -||t.91syun.com^ -||t.a3cloud.net^ -||t.adx.opera.com^ -||t.arcade.show^ -||t.auditedmedia.org.au^ -||t.beop.io^ -||t.bimvid.com^ -||t.brand-server.com^ -||t.buyist.app^ -||t.c4tw.net^ -||t.castle.io^ -||t.cfjump.com^ -||t.channeladvisor.com^ -||t.clic2buy.com^ -||t.cometlytrack.com^ -||t.dgm-au.com^$third-party -||t.enuygun.com^ -||t.fullres.net^ -||t.ghostboard.io^ -||t.id.net/log -||t.irtyc.com^ -||t.jobsyn.org^ -||t.mail.sony-europe.com/r/? -||t.menepe.com^ -||t.metrilo.com^ -||t.playwayfinder.com^ -||t.pointandplace.com^ -||t.powerreviews.com^$third-party -||t.pswec.com^ -||t.raptorsmartadvisor.com^ -||t.rentcafe.com^ -||t.screeb.app^ -||t.sharethis.com^ -||t.signalayer.com^ -||t.skimresources.com^ -||t.smile.eu^ -||t.spbx.app^ -||t.splicky.com^ -||t.spot.im^ -||t2.t2b.click^ -||taboola.com^$third-party -||taboolasyndication.com^$third-party -||tag-manager.playbuzz.com^ -||tag.aticdn.net^ -||tag.atom.gamedistribution.com^ -||tag.aumago.com^ -||tag.brandcdn.com^ -||tag.digops.sincro.io^ -||tag.elevaate.io^ -||tag.flagship.io^ -||tag.imagino.com^ -||tag.lexer.io^ -||tag.mtrcs.samba.tv^ -||tag.myplay.com^ -||tag.rightmessage.com^ -||tag.rmp.rakuten.com^ -||tag.statshop.fr^ -||tagger.opecloud.com^ -||taggstar.com^*/taggstar.min.js -||tags.catapultx.com^ -||tags.dxmdp.com^ -||tags.fullcontact.com^ -||tags.master-perf-tools.com^ -||tags.refinery89.com^ -||tagtracking.vibescm.com^ -||target.mixi.media^ -||tarteaucitron.io/log/ -||tatadigital.com/analytics-engine/ -||technolutions.net/ping? -||technorati.com/technoratimedia-pixel.js -||techtarget.com^*/GetCookiesWithCallback? -||techweb.com/beacon/ -||telemetrics.klaviyo.com^ -||telemetry.goodlifefitness.com^ -||telemetry.phenixrts.com^ -||telemetry.reembed.com^ -||telemetry.smartframe.io^ -||telemetry.soundcloud.com^ -||telemetry.tableausoftware.com^ -||telemetry.vtex.com^ -||terabox.com/api/analytics? -||terabox.fun/api/analytics -||terabox.fun/api/getsyscfg?*web_share_ads_adsterra_config -||test.takedwn.ws^ -||th.bing.com/th/*&riu=$image,third-party -||the-group.net/aether/ -||themesltd.com/online-users-counter/$third-party -||theoplayer.com/t? -||threadloom.com/ga/ -||threedy.ai/api/event/ -||thron.com/shared/plugins/tracking/ -||tickaroo.com/api/collect/ -||tiktokv.com/web/report? -||tildacdn.com/pixel.png -||timejs.game.163.com^ -||tinybird.co/v0/events? -||tinypass.com/checkout/offer/trackShow -||tinypass.com^*/track? -||tinyurl.com/pixel.gif/ -||tk.pathmonk.com^ -||tkx.mp.lura.live/rest/v2/server_time -||tl.tradetracker.net^ -||tm-awx.com/pageview -||tm.tradetracker.net^ -||tm.vendemore.com^ -||tmp.argusplatform.com/js/wid.tracker.js -||tms.fmm.io^ -||tmtarget.com/tracking/ -||to.getnitropack.com^ -||toast.com/log -||toast.com/sendid? -||top-fwz1.mail.ru^ -||topix.net/t6track/ -||totallylayouts.com/tumblr/visitor-counter/counter.js -||touchcommerce.com/tagserver/logging/ -||tourradar.com/def/partner?$third-party -||tout.com/tracker.js -||tpx.tesseradigital.com^ -||tr-op.datatrics.com^ -||tr.cloud-media.fr^ -||tr.datatrics.com^ -||tr.marsflag.com^ -||tr.outbrain.com^ -||tr.snapchat.com^ -||tr.vitals.co^ -||tr.webantenna.info^ -||tra.scds.pmdstatic.net/sourcepoint/ -||traccoon.intellectsoft.net^ -||trace.swaven.com^ -||track-dark-bz.b-cdn.net^ -||track.360playvid.info^ -||track.91app.io^ -||track.99acres.com^ -||track.atgstores.com^$third-party -||track.bannedcelebs.com^ -||track.btdmp.com^ -||track.coherentpath.com^ -||track.contently.com^ -||track.cordial.io^ -||track.dark.bz^ -||track.digitalriver.com^ -||track.emerse.com^ -||track.hubspot.com^ -||track.hydro.online^ -||track.juno.com^ -||track.kinetiksoft.com^ -||track.mailerlite.com^ -||track.mituo.cn^ -||track.mp4.center^ -||track.mycliplister.com^ -||track.nopaperforms.com^ -||track.pricespider.com^ -||track.qoof.com^ -||track.realtimeboard.com^ -||track.searchignite.com^ -||track.searchiq.co^ -||track.shop2market.com^ -||track.sitetag.us^ -||track.social.com^ -||track.strife.com^ -||track.td3x.com^ -||track.uc.cn^ -||track.untd.com^ -||track.uppromote.com^ -||track.us.org^ -||track.venatusmedia.com^ -||track.vscash.com^ -||track.yfret.com^ -||track.yieldsoftware.com^ -||trackdesk.com/tracking.js -||tracker-dot-optimeeze.appspot.com^ -||tracker-v4.gamedock.io^ -||tracker.affirm.com^ -||tracker.arc.io^ -||tracker.beezup.com^ -||tracker.cdnbye.com^ -||tracker.downdetector.com^ -||tracker.financialcontent.com^ -||tracker.gamedock.io^ -||tracker.gamemonkey.org^ -||tracker.gleanview.com^ -||tracker.hdtvcloud.com^ -||tracker.icerocket.com^ -||tracker.idocdn.com^ -||tracker.jkstremum.xyz^ -||tracker.keywordintent.com^ -||tracker.marinsoftware.com^ -||tracker.mrpfd.com^ -||tracker.myth.dev^ -||tracker.myyschool.xyz^ -||tracker.netklix.com^$script -||tracker.nitropay.com^ -||tracker.nocodelytics.com^ -||tracker.novage.com.ua^ -||tracker.openwebtorrent.com^ -||tracker.services.vaix.ai^ -||tracker.smartframe.io^ -||tracker.softcube.com^ -||tracker.ssl0d.com^ -||tracker.timesgroup.com^ -||tracker.tubecj.com^ -||tracker.twenga. -||tracker.unbxdapi.com^ -||tracker.wigzopush.com^ -||tracker.wpserveur.net^ -||tracker.xgen.dev^ -||trackerapi.truste.com^ -||trackicollect.ibase.fr^$third-party -||tracking-api-4lasu2nlcq-ew.a.run.app^ -||tracking-api.hotmart.com^ -||tracking-api.mangopulse.net^ -||tracking-na.hawksearch.com^ -||tracking.adalyser.com^ -||tracking.ads.global-fashion-group.com^ -||tracking.aegpresents.com^ -||tracking.americaneagle.com^ -||tracking.audio.thisisdax.com^ -||tracking.b-cdn.net^ -||tracking.bababam.com^ -||tracking.brandmentions.com^ -||tracking.buygoods.com^ -||tracking.cerdmann.com^ -||tracking.chilipiper.com^ -||tracking.dealeranalytics.com^ -||tracking.diginetica.net^ -||tracking.drsfostersmith.com^$third-party -||tracking.drum.io^ -||tracking.dsmmadvantage.com^ -||tracking.edvisors.com^$third-party -||tracking.fanbridge.com^ -||tracking.feedperfect.com^ -||tracking.g2crowd.com^ -||tracking.godatafeed.com^ -||tracking.graphly.io^ -||tracking.hivecloud.net^ -||tracking.hyros.com^ -||tracking.intentsify.io^ -||tracking.interweave.com^$third-party -||tracking.jotform.com^ -||tracking.keywee.co^ -||tracking.leadlander.com^ -||tracking.lengow.com^ -||tracking.listhub.net^ -||tracking.livingsocial.com^ -||tracking.magnetmail.net^ -||tracking.markethero.io^ -||tracking.musixmatch.com^ -||tracking.olx-st.com^ -||tracking.pacharge.com^ -||tracking.plattformad.com^$third-party -||tracking.plinga.de^ -||tracking.practicefusion.com^$third-party -||tracking.prepr.io^ -||tracking.quisma.com^ -||tracking.rapidape.com^ -||tracking.scenepass.com^ -||tracking.searchmarketing.com^ -||tracking.sembox.it^$third-party -||tracking.server.bytecon.com^ -||tracking.sexcash.com^ -||tracking.sezzle.com^ -||tracking.sharplink.us^ -||tracking.skyword.com^$third-party -||tracking.sokrati.com^ -||tracking.synthasite.net^ -||tracking.target2sell.com^ -||tracking.thehut.net^ -||tracking.waterfrontmedia.com^ -||tracking.wisepops.com^ -||tracking1.brandmentions.com^ -||tracking2.channeladvisor.com^ -||trackingapi.trendemon.com/api/events/pageview? -||trackjs.com/agent/$script,third-party -||trackjs.com/releases/current/tracker.js -||trackjs.com/usage.gif? -||trackla.stackla.com^ -||tracksmart.se^$third-party -||tradablebits.com/pixels/ -||traffic.acwebconnecting.com^ -||traffic.prod.cobaltgroup.com^ -||traffic.shareaholic.com^ -||trafficfuelpixel.s3-us-west-2.amazonaws.com^ -||trafficmanager.net/uet/tracking_script? -||trakksocial.googlecode.com^$third-party -||trap.skype.com^ -||traq.li/tracker/ -||travix.com/log -||traxex.gannettdigital.com^ -||tree-nation.com/js/track.js -||trends.newsmaxwidget.com^ -||trib.al^$image,third-party -||trickyrock.com/redirect.aspx?pid=*&bid=$subdocument,third-party -||triggers.wfxtriggers.com^ -||trinitymedia.ai/api/collect? -||triplewhale-pixel.web.app^ -||tritondigital.com/ondemand/impression? -||trk.clinch.co^ -||trk.playitviral.com^ -||trk.storyly.io^ -||trk.techtarget.com^ -||trk2-wtb.swaven.com^ -||trustarc.com/cap? -||trustarc.com/log? -||trustcommander.net/iab-tcfapi/ -||trustedform.com/trustedform.js?provide_referrer -||trustmary.io/agg-event -||trustpilot.com/stats/ -||trx-cdn.zip.co^ -||trx.zip.co^ -||try.abtasty.com^ -||ts.tradetracker.net^ -||turnto.com/event -||tvpage.com/tvpa.min.js -||tvpage.com^*/__tvpa.gif? -||typeform.com/*/insights/events^ -||uadblocker.com/pixel1.php?$third-party -||uc.cn/collect? -||ucounter.ucoz.net^ -||ucoz.net/stat/ -||uhit.eu/id/$third-party -||uid.mediacorp.sg^ -||uim.tifbs.net^ -||unibet.de/stan/campaign.do?*&affiliateId=$subdocument,third-party -||unifyintent.com/analytics/ -||units.knotch.it^ -||unpkg.com/web-vitals? -||uptime.com/static/rum/$third-party -||uriports.com/reports/$third-party -||urldefense.com^$image,third-party -||us-central1-markuphero.cloudfunctions.net^ -||usaoptimizedby.increasingly.co^ -||user.userguiding.com^ -||usercentrics.eu/session/$image -||userexperience.thehut.net^ -||usersegment.wpdigital.net^ -||usersonline.org/ping.php? -||userway.org/api/seo-widget/ -||userway.org/api/v1/stats -||usizy.com/external/pageview -||utils.global-e.com/set? -||utt.pm/utm/ -||v.shopify.com^ -||va.tawk.to/log -||validate.onecount.net^$image -||vanilladev.com/analytics. -||vast.com/vimpressions.js$third-party -||vcita.com/tr_ -||vdo.ai/core/logger.php? -||vdo.ai/core/scantrad-net/ -||vdrn.redplum.com^ -||vee24.com/c/PageBehaviour? -||veeseo.com/tracking/ -||ventunotech.com/beacon/ -||venturify.at/pixel/ -||vercel-vitals.axiom.co^ -||vidazoo.com/aggregate? -||vidazoo.com/event/ -||video-ad-stats.googlesyndication.com^ -||video-analytics-api.cloudinary.com^ -||video-cdn.net/event? -||video.google.com/api/stats/ -||videoevents.outbrain.com^ -||videoly.co^*/event/ -||videopress.com/plugins/stats/ -||vidible.tv/trk/ -||vidstream.pro/log/ -||vidstream.pro/ping/ -||viglink.com/api/ping$third-party -||vimeocdn.com/add/player-stats? -||vimeocdn.com/ga/ -||viralize.tv/track/ -||virgingames.com/tracker/ -||virginmedia.com^*/analytics/ -||virtueworldwide.com/ga-test/ -||virtuoussoftware.com/tracker/ -||visa.com/logging/logEvent$third-party -||visual.ly/track.php? -||visualstudio.com/_da.gif? -||visualwebsiteoptimizer.com/dyn -||visualwebsiteoptimizer.com/ee.gif? -||visualwebsiteoptimizer.com/gv.gif? -||visualwebsiteoptimizer.com/j.php -||visualwebsiteoptimizer.com/server-side/track-user? -||vivociti.com/images/$third-party -||vizury.com/analyze/ -||vk.com/rtrg? -||vk.com/videostats.php -||vmixcore.com/vmixcore/playlog? -||vmweb.net/identity.min.js -||vo.msecnd.net/api/beYableJSv2.js -||vooxe.com/analytics.js -||vortex.data.microsoft.com^ -||voxmedia.com/beacon-min.js -||vs4.com/impr.php? -||vst.sibnet.ru^ -||vstat.borderlessbd.com^ -||vuukle.com/bq-publish? -||vuukle.com/getGeo -||vvhp.net/read/view.gif -||vwdealerdigital.com/cdn/sd.js -||w3track.com/newtrk/$third-party -||w4o7aea80ss3-a.akamaihd.net^ -||wallkit.net^*/user/event -||wantlive.com/pixel/ -||warnermedia.com/api/v1/events? -||watchtower.graindata.com^ -||wco.crownpeak.com^ -||weather.ca/counter.gif? -||web-tracker.smsbump.com^ -||web1.51.la^ -||webcare.byside.com^ -||webedia.fr/js/gs.js -||webeyo.com/ipinfo -||webgames.io/imp/ -||websdk.appsflyer.com^ -||webservices.websitepros.com^ -||webstats.thaindian.com^ -||websuccess-data.com/tracker.js -||webtrack.chd01.com^ -||webtrack.savoysystems.co.uk^$third-party -||webtracker.apicasystem.com^ -||webvoo.com/wt/Track.aspx -||webvoo.com^*/logtodb. -||webworx24.co.uk/123trace.php -||webzel.com/counter/ -||weglot.com/pageviews? -||wetpaint.com^*/track? -||whooshkaa.com/identify -||whooshkaa.com/listen/track -||whoson.com/poll.gif -||whoson.com/w.js -||whosread.com/counter/ -||widgeo.net/compteur.php? -||widgeo.net/geocompteur/ -||widgeo.net/hitparade.php -||widgeo.net/tracking.php? -||widget-pixels.outbrain.com^ -||widget.educationdynamics.com^ -||widgetbox.com/syndication/track/ -||widgethost.com/pax/counter.js? -||widgets.outbrain.com/widgetMonitor/ -||widgets.sprinklecontent.com/v2/sprinkle.js -||widgetserver.com/metrics/ -||widgetserver.com/t/ -||widgetserver.com^*/image.gif? -||win.staticstuff.net^ -||witbee.com^*/collect -||wl-pixel.index.digital^ -||wn.com/count.js -||wogaa.sg/scripts/wogaa.js -||wondershare.es/jslibs/track.js -||wordmonetize.com^$third-party -||wordpress.com/geo/ -||workers.dev/api/event -||workers.dev/js/script.js -||worldssl.net/reporting.js -||worldztool.com^*/dotraceuser.php -||wp-engage.org/api/v5/post/activity/log/ -||wp.com/i/mu.gif$image -||wp.com/wp-content/js/bilmur.min.js -||wren.condenastdigital.com^ -||ws.audioeye.com^ -||ws.sharethis.com^$script -||wsmcdn.audioeye.com^ -||wspisp.net/logger.php -||wstats.slashed.cloud^ -||wt.viagogo.net^ -||wtbevents.pricespider.com^ -||wtr-digital-analytics.ew.r.appspot.com^ -||x.babe.today^ -||x.disq.us^ -||x.weather.com^ -||xp2023-pix.s3.amazonaws.com^ -||yahoo.co.jp/js/s_retargeting.js -||yahoo.com/sync/casale/ -||yandex.*/data?referrer= -||yandex.ru/click/ -||yandex.ru/cycounter? -||yarpp.org/pixels/ -||yext.com/plpixel? -||yimg.com/aaq/vzm/$script,domain=news.yahoo.com -||yimg.com/cx/vzm/cs.js -||yimg.com/ss/vops.js -||yimg.com/wi/ytc.js -||yoast-schema-graph.com^$third-party -||yottaa.com/rapid.min.js -||yottaa.net/log-jh -||zapcdn.space/zapret.js -||zendesk.com/frontendevents/$xmlhttprequest -||zengenti.com/tags/ -||ziffdavisb2b.com^*/tracker.js -||zineone.com^*/event -||zip.co/analytics -||zoominfo.com/pixel/ -||zooplus.io/static/js/tracking-min.js -||zynga.com/track/ -! https://d3ward.github.io/toolz/adblock.html -||adsdk.yandex.ru^ -||analytics-api.samsunghealthcn.com^ -||analytics.mobile.yandex.net^ -||analytics.samsungknox.com^ -||app.chat.xiaomi.net^$third-party -||appmetrica.yandex.com^$third-party -||click.oneplus.cn^ -||cloudfront.net/test.png -||data.hicloud.com^$third-party -||extmaps-api.yandex.net^ -||logbak.hicloud.com^ -||logservice.hicloud.com^ -||logservice1.hicloud.com^ -||metrics-dra.dt.hicloud.com^ -||metrics.icloud.com^ -||metrics.mzstatic.com^ -||open.oneplus.net^$third-party -||supportmetrics.apple.com^ -||tracking.miui.com^ -||trk.pinterest.com^$third-party -||yandexadexchange.net^ -! cloudfront -||d10lpsik1i8c69.cloudfront.net^ -||d11bdev7tcn7wh.cloudfront.net^ -||d15kdaxu5c0hfw.cloudfront.net^ -||d169bbxks24g2u.cloudfront.net^ -||d16fk4ms6rqz1v.cloudfront.net^ -||d1733r3id7jrw5.cloudfront.net^ -||d18p8z0ptb8qab.cloudfront.net^ -||d191y0yd6d0jy4.cloudfront.net^ -||d196fri2z18sm.cloudfront.net^ -||d1cr9zxt7u0sgu.cloudfront.net^ -||d1f0tbk1v3e25u.cloudfront.net^ -||d1f1eryiqyjs0r.cloudfront.net^*/track. -||d1gp8joe0evc8s.cloudfront.net^ -||d1hyarjnwqrenh.cloudfront.net^ -||d1k8sb4xbepqao.cloudfront.net^ -||d1m6l9dfulcyw7.cloudfront.net^ -||d1n00d49gkbray.cloudfront.net^ -||d1qnmu4nrib73p.cloudfront.net^ -||d1qpxk1wfeh8v1.cloudfront.net^ -||d1r27qvpjiaqj3.cloudfront.net^ -||d1r2sy6oc0ariq.cloudfront.net^ -||d1r55yzuc1b1bw.cloudfront.net^ -||d1rgnfh960lz2b.cloudfront.net^ -||d1ros97qkrwjf5.cloudfront.net^ -||d1snv67wdds0p2.cloudfront.net/tracker/ -||d1t9uctetvi0tu.cloudfront.net^ -||d1tbj6eaenapdy.cloudfront.net^ -||d1vg5xiq7qffdj.cloudfront.net^ -||d1wix2gc2cgqis.cloudfront.net^ -||d1xfq2052q7thw.cloudfront.net^ -||d1z3r0i09bwium.cloudfront.net^ -||d1z9vm58yath60.cloudfront.net^ -||d20kffh39acpue.cloudfront.net^ -||d21o24qxwf7uku.cloudfront.net^ -||d21y75miwcfqoq.cloudfront.net^ -||d22v2nmahyeg2a.cloudfront.net^ -||d23p9gffjvre9v.cloudfront.net^ -||d241ujsiy3yht0.cloudfront.net -||d24cze5sab2jwg.cloudfront.net^ -||d24rtvkqjwgutp.cloudfront.net^ -||d28g9g3vb08y70.cloudfront.net^ -||d2cpw6kwpff7n5.cloudfront.net^ -||d2ezz24t9nm0vu.cloudfront.net^ -||d2fj3s7h83rb61.cloudfront.net -||d2fuc4clr7gvcn.cloudfront.net/track.js -||d2gbtcuv3w9qyv.cloudfront.net^ -||d2ibu2ug0mt5qp.cloudfront.net^ -||d2j1fszo1axgmp.cloudfront.net^ -||d2j74sjmqqyf26.cloudfront.net^ -||d2kdl5wcwrtj90.cloudfront.net^ -||d2lxqodqbpy7c2.cloudfront.net^ -||d2nq0f8d9ofdwv.cloudfront.net/track.js -||d2nxi61n77zqpl.cloudfront.net^ -||d2o67tzzxkqap2.cloudfront.net^ -||d2oh4tlt9mrke9.cloudfront.net^ -||d2pt12ct4kmq21.cloudfront.net^ -||d2r1yp2w7bby2u.cloudfront.net^ -||d2rnkf2kqy5m6h.cloudfront.net^ -||d2t77mnxyo7adj.cloudfront.net^ -||d2tgfbvjf3q6hn.cloudfront.net^ -||d2wa5sea6guof0.cloudfront.net^ -||d2wu036mkcz52n.cloudfront.net^ -||d2wy8f7a9ursnm.cloudfront.net^ -||d2z0bn1jv8xwtk.cloudfront.net^ -||d2zue0pgsssbc6.cloudfront.net^ -||d31bfnnwekbny6.cloudfront.net/customers/ -||d31y97ze264gaa.cloudfront.net^ -||d34ko97cxuv4p7.cloudfront.net^ -||d34r8q7sht0t9k.cloudfront.net^ -||d35u1vg1q28b3w.cloudfront.net^ -||d36u3psykfwy91.cloudfront.net^ -||d39ion77s0ucuz.cloudfront.net^ -||d39yds8oe4n4jq.cloudfront.net^ -||d3bj8nkfly20uo.cloudfront.net^ -||d3bo67muzbfgtl.cloudfront.net^ -||d3cgm8py10hi0z.cloudfront.net^ -||d3cxv97fi8q177.cloudfront.net^ -||d3gi6isrskhoq.cloudfront.net^ -||d3hb14vkzrxvla.cloudfront.net/health-check -||d3iouejux1os58.cloudfront.net^ -||d3j1weegxvu8ns.cloudfront.net^ -||d3kyk5bao1crtw.cloudfront.net^ -||d3l3lkinz3f56t.cloudfront.net^ -||d3lqotgbn3npr.cloudfront.net^ -||d3m6sept6cnil5.cloudfront.net^ -||d3mapax0c3izpi.cloudfront.net/lib/ajax/events.js -||d3mskfhorhi2fb.cloudfront.net^ -||d3n6i6eorggdxk.cloudfront.net^ -||d3nn82uaxijpm6.cloudfront.net/8f96b1247cf4359f8fec.js -||d3or5d0jdz94or.cloudfront.net^ -||d3pi0tys5sdysl.cloudfront.net^ -||d3plfjw9uod7ab.cloudfront.net^ -||d3qxef4rp70elm.cloudfront.net/m.js -||d3qztsm17pgxue.cloudfront.net^ -||d3r7h55ola878c.cloudfront.net^ -||d3s7ggfq1s6jlj.cloudfront.net^ -||d3sbxpiag177w8.cloudfront.net^ -||d3tglifpd8whs6.cloudfront.net^ -||d3uvwl4wtkgzo1.cloudfront.net^ -||d3vebqdofhigrn.cloudfront.net^ -||d4ax0r5detcsu.cloudfront.net^ -||d761erxl2qywg.cloudfront.net^ -||d81mfvml8p5ml.cloudfront.net^ -||danv01ao0kdr2.cloudfront.net^ -||daq0d0aotgq0f.cloudfront.net^ -||dc8na2hxrj29i.cloudfront.net^ -||dc8xl0ndzn2cb.cloudfront.net^ -||dcv4p460uqa46.cloudfront.net^ -||dd6zx4ibq538k.cloudfront.net^ -||dggaenaawxe8z.cloudfront.net^ -||dh0c1bz67fuho.cloudfront.net^ -||di2xwvxz1jrvu.cloudfront.net^ -||dkupaw9ae63a8.cloudfront.net^ -||dl1d2m8ri9v3j.cloudfront.net^ -||dljnjom9md7c.cloudfront.net/02/zara.js -||dn34cbtcv9mef.cloudfront.net^ -||dniyppubkuut7.cloudfront.net^ -||dnn506yrbagrg.cloudfront.net^ -||dnxlgencstz4.cloudfront.net^ -||dqif5bl25s0bf.cloudfront.net^ -||drlimmode9ddd.cloudfront.net^ -||dsbahmgppc0j4.cloudfront.net^ -||dtxtngytz5im1.cloudfront.net^ -||dtym7iokkjlif.cloudfront.net/dough/ -||du4rq1xqh3i1k.cloudfront.net^ -||duu8lzqdm8tsz.cloudfront.net^ -||dy2xcjk8s1dbz.cloudfront.net^ -||dzgwautxzdtn9.cloudfront.net^ -! Goatcounter CNAMES https://github.com/AdguardTeam/cname-trackers/issues/99 -||anal.sataniskwijt.be^ -||analytics.code.dccouncil.gov^ -||count.vidsrc.pro^ -||goat.hepicgamerz.com^ -||goat.nhimmeo.cf^ -||goat.skeetstats.xyz^ -||goat.tailspace.net^ -||st.mapleranks.com^ -||stats.afrocave.com^ -||stats.boringproxy.io^ -||stats.how.wtf^ -! optimizely.com -||optimizely.com/client_storage/ -||optimizely.com/log -||optimizely.com/public/ -! firebase -||firebase.googleapis.com^$domain=terabox.fun -||firebaseinstallations.googleapis.com^$domain=terabox.fun -! https://gist.github.com/tinogomes/c425aa2a56d289f16a1f4fcb8a65ea65 -! Domains linking to 127.0.0.1 -!||cefgo.com^ -!||domaincontrol.com^ -!||fbi.com^ -!||lacolhost.com^ -!||lndo.site^$third-party -!||local.computer^ -!||local.qinlili.bid^ -!||local.sisteminha.com^ -!||localho.st^ -!!||localhost.direct^ -!||localtest.me^ -!||lvh.me^ -!||netfinity.hostedrmm.com^ -!||nip.io^$third-party -!||ssh.town^ -!||supercalifragilisticexpialidocious.co.uk^ -!||xip.io^ -!||yoogle.com^ -! Ad-Shield -! https://github.com/uBlockOrigin/uAssets/issues/9717 -/^https:\/\/cdn\.jsdelivr\.net\/npm\/[-a-z_]{4,22}@latest\/dist\/script\.min\.js$/$script,third-party -! wix -||frog.wix.com/da-client? -||frog.wix.com/fed? -||frog.wix.com/hls2? -||frog.wix.com/p? -||frog.wix.com/pre? -||frog.wix.com^$image,ping,xmlhttprequest -! Fingerprinting -||ascpqnj-oam.global.ssl.fastly.net^ -||cloudfront.net/js/grin-sdk.js -||dingxiang-inc.com/ctu-group/constid-js/index.js -||fyrsbckgi-c.global.ssl.fastly.net^ -||ipqualityscore.com/api/$third-party -||mhxk.com^*/main/entry.common.$script -||mjca-yijws.global.ssl.fastly.net^ -||nofraud.com/js/device.js -||nofraud.com^*/customer_code.js -||poll-maker.com^*/scpolls.js -||rc.vtex.com.br^ -||realperson.de/system/third-party/rpfp/rpfp.min.js -||ref.dealerinspire.com^ -||resu.io/scripts/resclient.min.js -||socital.com^*/socital.js -||talkingdata.com^*/sdk_release.js -||targeting.voxus.tv^ -||trwl1.com/ascripts/gcrt.js -||vtex.com.br/rc/rc.js -! akamai -||akamai.com/crs/lgsitewise.js -||akamai.net/*.babylon.com/trans_box/ -||akamai.net/chartbeat. -||akamai.net^*/a.visualrevenue.com/ -||akamai.net^*/sitetracking/ -||akamaihd.net/*.gif?e= -||akamaihd.net/bping.php? -||akamaihd.net/javascripts/browserfp. -||akamaihd.net/log? -||akamaihd.net/push.gif? -||akamaihd.net^*.gif?d= -||akamaized.net/?u= -||akamaized.net/js3/tracker.js -||aksb-a.akamaihd.net^ -||ds-aksb-a.akamaihd.net^ -||e77lmzbqou0n-a.akamaihd.net^ -||ninja.akamaized.net^ -||pnekru6pxrum-a.akamaihd.net^ -||pxlgnpgecom-a.akamaihd.net^ -! fastly -||7q1z79gxsi.global.ssl.fastly.net^ -||clarium.global.ssl.fastly.net^ -||dfapvmql-q.global.ssl.fastly.net^ -||fastly.net/i? -||fastly.net/sp.js -||vwonwkaqvq-a.global.ssl.fastly.net^ -! CPU abuse -! https://publicwww.com/websites/%22cloudfront.net%2Fscript.js%22/ -||cloudfront.net./script.js -||cloudfront.net/script.js -! Seals, Websecurity, Protection etc. Unnecessary third-party scripts -||antillephone.com^$third-party -||beyondsecurity.com^$third-party -||geotrust.com^$third-party -||guarantee-cdn.com^$third-party -||howsmyssl.com^$third-party -||js.trendmd.com^$script,subdocument,third-party -||legitscript.com/seals/ -||medals.bizrate.com^$third-party -||nsg.symantec.com^$third-party -||popup.laybuy.com^$subdocument,third-party -||privacy-policy.truste.com^$third-party -||scanalert.com/meter/ -||scanverify.com^$third-party -||seal.digicert.com^$third-party -||seal.globalsign.com^$third-party -||seal.godaddy.com^$third-party -||seal.networksolutions.com^$third-party -||seal.qualys.com^$third-party -||sealserver.trustwave.com^$third-party -||secure.trust-guard.com^$third-party -||securitymetrics.com^$third-party -||shield.sitelock.com^$third-party -||shopperapproved.com^$third-party -||siteintercept.allegiancetech.com^ -||smart-widget-assets.ekomiapps.de^$third-party -||trust-provider.com^*/trustlogo.js$third-party -||trusted-web-seal.cybertrust.ne.jp^ -||trustev.com/trustev.min.js$third-party -||verify.authorize.net^$third-party -||verify.safesigned.com^$third-party -||websecurity.norton.com^$third-party -||webutation.net/js/load_badge.js -||widgets.trustedshops.com^$third-party -! Suspect trackers (from privacy badger) -||jsrdn.com/s/cs.js -! Rewrite to internal resources filters for Adblock Plus -||d1z2jf7jlzjs58.cloudfront.net^$rewrite=abp-resource:blank-js,domain=voici.fr -!-----------------International third-party tracking services-----------------! -! *** easylist:easyprivacy/easyprivacy_thirdparty_international.txt *** -/rdir.baur.de/g.html?uid=$image -||78.46.19.203^$third-party,domain=~sprueche-zitate.net.ip -||ablida.net^$third-party -||adc-srv.net/retargeting.php -||adm24.de/hp_counter/$third-party -||advantage.digitalsunray.com^ -||aftonbladet.se/trafikfonden/ -||agitos.de/content/track? -||analytics.agenedia.com^ -||analytics.audionow.de^ -||analytics.cnd-motionmedia.de^$third-party -||analytics.gameforge.de^ -||analytics.idfnet.net^ -||analytics.loop-cloud.de^$third-party -||analytics.media-proweb.de^ -||analytics.praetor.im^$third-party -||andyhoppe.com/count/ -||api.fanmatics.com/event -||api.nexx.cloud/*/session/ -||api.tv.de/*/tracking/ -||artemis-cdn.ocdn.eu^ -||audimark.de/tracking/ -||ba-content.de/cds/log/ -||bcs-computersysteme.com/cgi-local/hiddencounter/ -||beagle.prod.tda.link^ -||blacktri-a.akamaihd.net^ -||cdn.c-i.as^$script,third-party -||cgicounter.onlinehome.de^ -||clipkit.de/metrics? -||cloudfront.net/customers/24868.min.js -||com.econa.com^ -||counter.1i.kz^ -||counter.blogoscoop.net^ -||counter.webmart.de^ -||ctr-iwb.nmg.de^ -||ctr-opc.nmg.de^ -||ctr.nmg.de^$third-party -||d.adlpo.com^ -||d.nativendo.de^ -||d.omsnative.de^ -||data.econa.com^ -||data.kameleoon.io^ -||datacomm.ch^*/count.cgi? -||datahub-srgssr.ch/tracking/ -||djuf7jb483wz1.cloudfront.net/p/l.jpg -||et.twyn.com^ -||events.onet.pl^ -||export.newscube.de^$~subdocument -||fc.webmasterpro.de^$third-party -||fd.bawag.at^ -||filmaster.tv^*/flm.tracker.min.js -||freshclip.tv/tracking/ -||frontlineshop.com/ev/co/frontline?*&uid= -||gameforge.de/init.gif? -||geo.mtvnn.com^ -||geo.xcel.io^ -||giga.de/vw/$image,third-party -||global-media.de^*/track/ai.img -||goldsilbershop.de/go.cgi? -||hbx.df-srv.de^ -||hittracker.org/count.php -||hittracker.org/counter.php -||house27.ch/counter/ -||hyteck.de/count.js -||hyvyd.com/count$image,domain=mobile.de -||info.elba.at^$third-party -||insene.de/tag/$third-party -||iqcontentplatform.de/tracking/ -||koe-vip.com/statistik/ -||live.cxo.name^ -||liveviewer.ez.no^ -||log.worldsoft-cms.info^ -||lr-port.de/tracker/ -||mapandroute.de/log.xhr? -||marktjagd.de/proxy/trackings/ -||mastertag.kpcustomer.de^ -||mastertag.q-sis.de^ -||mehrwertdienstekompetenz.de/cp/$third-party -||met.vgwort.de^ -||mindwerk.net/zaehlpixel.php? -||mlm.de/counter/ -||mlm.de/pagerank-ranking/ -||newelements.de/tracker/ -||nexx.cloud/play/beacon. -||nexxtv-events.servicebus.windows.net^ -||ntmb.de/count.html? -||oe-static.de^*/wws.js -||omniture.eaeurope.eu^ -||omsnative.de/tracking/ -||onlex.de/_counter.php -||onlinepresse.info/counter.php? -||onlyfree.de^*/counterservice/ -||orbidder.otto.de^ -||ottogroup.media/ogm.nitro. -||owen.prolitteris.ch^ -||pixel.poptok.com^ -||plausible.ams.to^ -||plista.com/getuid? -||plista.com/iframeShowItem.php -||prod-mhaa.mhtr.be/public/tr/tracker.min.js -||px.staticfiles.at^ -||quiz.stroeermediabrands.de/pub/$image -||retrack.q-divisioncdn.de^ -||retresco.de^*/stats/$third-party -||script.idgentertainment.de/gt.js -||serverkompetenz.net/cpx.php? -||sheego.de/ar/$third-party -||sim-technik.de/dvs.gif? -||sim-technik.de^*&uniqueTrackId= -||skoom.de/gratis-counter/ -||somquery.sqrt-5041.de/tv/tracking-event -||sp.data.funkedigital.de^ -||spark.cloud.funkedigital.de/agnes.js -||spox.com/pub/js/track.js -||ss4w.de/counter.php? -||stat.clichehosting.de^ -||statistics.klicktel.de^ -||statistik.motorpresse.de^$third-party -||statistik.simaja.de^ -||stats.blogoscoop.net^ -||stats.clickforknowledge.com^ -||stats.digital-natives.de^ -||stats.frankfurterneuepresse.de^ -||stats.united-domains.de^ -||stats.urban-media.com^ -||stats2.algo.at^$third-party -||stilanzeigen.net/track/ -||stroeerdp.de^*_gtm.js -||strongvpn.com/aff/ -||suedtirol.live/slc.js -||t.etraveli.com^ -||t.nativendo.de^ -||t.quisma.com^ -||tagm.tchibo.de^ -||tms.danzz.ch^ -||top50-solar.de/solarcount/ -||track2.cliplister.com^ -||track2.dulingo.com^ -||track2.mycliplister.com^ -||tracker.euroweb.net^ -||tracker.winload.de^ -||tracking-live.kr3m.com^ -||tracking.base.de^ -||tracking.emsmobile.de^ -||tracking.gameforge.de^ -||tracking.hannoversche.de^ -||tracking.mindshare.de^ -||tracking.rtl.de^ -||tracking.s24.com^ -||tracking.srv2.de^ -||tracking.webtradecenter.com^ -||trck.bdi-services.de^ -||trck.spoteffects.net^ -||trecker.aklamio.com^ -||uni-duesseldorf.de/cgi-bin/nph-count? -||uni-leipzig.de^*/stats/ -||united-infos.net/event? -||veeseo.com^*/url.gif? -||veeseo.com^*/view/$image -||vertical-n.de/scripts/*/immer_oben.js -||verticalnetwork.de/scripts/*/immer_oben.js -||vtrtl.de^ -||webcounter.goweb.de^ -||wieistmeineip.de/ip-address/$third-party -||wo-cloud.com^$ping -||wranalytics.wildrocket.io^ -||x.bloggurat.net^ -||xnewsletter.de/count/counter.php? -||zs.dhl.de^ -! Arabic -||shofonline.org/javashofnet/ti.js -! French -||01net.com/track/ -||abs.proxistore.com^ -||affiliation.planethoster.info^$third-party -||analytics.freespee.com^ -||analytics.valiuz.com^ -||at.360.audion.fm^ -||blogoutils.com/online-$third-party -||bnpparibas.fr/JavascriptInsert.js -||btstats.devtribu.fr^ -||c.woopic.com/tools/pdb.min.js -||caast.tv/v1/record.gif? -||calcul-pagerank.fr/client/$third-party -||canalplus-bo.net/web/*/tracker/? -||capping.sirius.press^ -||cdn-files.prsmedia.fr^*/xiti/ -||ced-ns.sascdn.com/diff/js/smart.js -||cloudfront.net^$script,domain=gentside.com -||collect-v6.51.la^ -||compteur.websiteout.net^ -||da-kolkoz.com/da-top/track/ -||devtribu.fr/t.php? -||dsj4qf77pyncykf2dki6isfcuy0orwhc.lambda-url.eu-west-1.on.aws^ -||e-pagerank.fr/bouton.gif?$third-party -||e.viously.com^ -||early-birds.fr/events/ -||easydmp.net/collect_ -||easydmp.net/etag. -||easydmp.net/get_delivery_data. -||email-reflex.com^$third-party -||events.newsroom.bi^ -||events.sk.ht^ -||free.fr/services/compteur_page.php? -||houston.advgo.net^ -||humanoid.fr/register-impression? -||i-services.net^*/compteur.php? -||img-static.com/CERISE.gif? -||ip7prksb2muxvmmh25t6rxl2te0tfulc.lambda-url.eu-west-1.on.aws^ -||jvc.gg^*/traffic.js -||leguide.com/js/lgtrk-*.js -||linguee.fr/white_pixel.gif -||m6web.fr/statsd/ -||marktplaats.net/identity/mid.js -||neteventsmedia.be/hit.cfm? -||netreviews.eu/index.php?action=act_access&$third-party -||nws.naltis.com^ -||offer.slgnt.eu^ -||optinproject.com/rt/visit/ -||osd.oxygem.it^ -||p.a2d.io/plx.js -||pagesjaunes.fr/stat/ -||piximedia.com^$third-party -||qiota.com/api/event -||rs.smc.tf^ -||scriptsgratuits.com/sg/stats/ -||service-webmaster.fr/cpt-visites/$third-party -||socialrank.fr/client/$third-party -||static-od.com/setup/$third-party -||stats-dc1.frz.io^ -||stats-factory.digitregroup.io^ -||stats.ipmgroup.be^ -||stats.macg.io^ -||stats.tipser.com^ -||t.360.audion.fm^ -||t.ofsys.com^ -||tag.agrvt.com^ -||tag.goldenbees.fr^ -||tag.leadplace.fr^ -||tim.nextinpact.com^ -||track.byzon.swelen.net^$third-party -||track.kyoads.com^ -||track.laredoute.fr^$image -||track.myli.io^ -||tracker-dot-dfty-optimeeze-leroymerlinfr.appspot.com^ -||tracking.ecookie.fr^ -||tracking.kdata.fr^ -||tracking.lqm.io^ -||tracking.netvigie.com^ -||tracking.voxeus.com^ -||trjs.mediafin.be/loader/trmfn-loader.js -||trk.a-dsp.com^ -||trk.adbutter.net^ -||tsphone.biz/pixelvoleur.jpg? -||veoxa.com/get_trackingcode. -||vidazoo.com/report/? -||viously.com^*/mt? -||visitping.rossel.be^ -||webreseau.com/impression.asp? -||webtutoriaux.com/services/compteur-visiteurs/index.php?$third-party -||wifeo.com/compteurs/$third-party -||woopic.com/Magic/o_vr.js -||wrapper.lemde.fr^$third-party -||ws3.smartp.com^ -||zebestof.com^$third-party -! Belarusian -||minsk-in.net/counter.php? -! Croatian -||aff*.kolektiva.net^ -! Chinese --logging.nextmedia.com^ -||120.132.57.41/pjk/pag/ys.php -||163.com/sn.gif? -||3.cn/cesu/r? -||360.cn/mapping_service? -||4gtv.tv/js/ga_ -||adv-sv-stat.focus.cn^ -||aixifan.com/acsdk/log.min.js? -||alicdn.com/tkapi/click.js -||alimama.cn/inf.js -||alipay.com/common/um/lsa.swf -||analytics.meituan.net^ -||atanx.alicdn.com^ -||atom-log.3.cn^ -||baidu.com/cpro/ui/c.js -||baidu.com/cpro/ui/f.js -||baidu.com/h.js? -||baidu.com/hm.gif? -||baidu.com/js/m.js -||baidu.com/js/o.js -||baidu.com/x.js? -||beacon.sina.com.cn^ -||beaconcdn.qq.com^ -||bokecc.com/flash/playlog? -||bokecc.com/flash/timerecorder? -||busuanzi.ibruce.info^$third-party -||bzclk.baidu.com^ -||c.holmesmind.com^ -||cbsi.com.cn/js/dw.js -||cdnmaster.com/sitemaster/sm360.js -||chuzushijian.cn/c.php -||click.bokecc.com^ -||click.taobao.com^$script -||cms.grandcloud.cn^$third-party -||cnzz.com/c.php? -||collector2c.zhihuishu.com^ -||counter.pixplug.in^$third-party -||cpro.baidustatic.com^$script,domain=sohu.com -||cri.cn/js/a1.js -||csdn.net^*/counter.js -||d17m68fovwmgxj.cloudfront.net^ -||da.netease.com^ -||datacollector-dra.dt.hicloud.com^ -||dcbpm.suning.cn^ -||dup.baidustatic.com^ -||eclick.baidu.com^ -||epro.sogou.com^ -||etwun.com:8080/counter.php? -||event.tagtoo.co^ -||experiments.sparanoid.net^ -||fourier.taobao.com^ -||g.yccdn.com^ -||gias.jd.com/js/td.js -||haostat.qihoo.com^ -||hudong.com/flux.js -||hyrankhit.meldingcloud.com^ -||ia.51.la^ -||ifengimg.com/sta_collection.*.js -||imp.ad-plus.cn^ -||imp.go.sohu.com^ -||imp.optaim.com^ -||iqiyi.com/pixel? -||itc.cn/pv/ -||ixigua.com/at/log/ -||js.letvcdn.com/js/*/stats/ -||js.static.m1905.cn/pingd.js -||log-api.cli.im^ -||log.hiiir.com^ -||log.qvb.qcloud.com^ -||log.tagtic.cn^ -||mcs.zijieapi.com^ -||mon.zijieapi.com^ -||msg.71.am^ -||netease.com/track/ -||netease.com/web/performance? -||nos.netease.com/udc-web/*.log.js -||p.aty.sohu.com^ -||p.tencentmind.com^ -||pos.baidu.com^ -||pr.nss.netease.com^ -||pstatp.com^*/raven.js -||pstatp.com^*/ttstatistics. -||pv.hd.sohu.com^ -||pv.kuaizhan.com^ -||pv.sohu.com^ -||px.effirst.com^ -||qbox.me/vds.js -||qidian.qq.com/report/ -||qq.com/speed -||r.sax.sina.com.cn^ -||report.meituan.com^ -||s.cdin.me/i.php -||sitemaji.com/nownews.php? -||sobeycloud.com/Services/Stat. -||sohu.com/pvpb.gif? -||sohu.com/stat/ -||ssac.suning.com^ -||stargame.com/g.js -||stat.ws.126.net^ -||stats.hanmaker.com^ -||sugs.m.sm.cn^ -||t.hypers.com.cn^ -||t.rainide.com^ -||tagtoo.co/js/unitrack.js -||taobao.com/tracker. -||tce.alicdn.com^ -||tieszhu.com/e.html -||tns.simba.taobao.com^ -||tongjiniao.com^$third-party -||tr.n2.hk^ -||track.storm.mg^ -||track.tomwx.net^ -||track.unidata.ai^ -||tracker-00.qvb.qcloud.com^ -||tracking.cat898.com^ -||tracklog.58.com^ -||trail.71baomu.com^ -||videostats.kakao.com^ -||w3t.cn^*/fx.js -||web-trace.ksapisrv.com^ -||webstat.qiumibao.com^ -||webtrack.pospal.cn^ -||wlog.kuaishou.com^ -||yigouw.com/c.js -! Croatian -||tracking.vid4u.org^ -! Czech -||a.centrum.cz^ -||bisko.mall.tv^ -||c.seznam.cz^ -||counter.cnw.cz^ -||h.imedia.cz^ -||h.seznam.cz/hit/ -||h.seznam.cz/js/dot-small.js -||hit.skrz.cz^ -||i.imedia.cz^ -||log.cpex.cz^ -||log.idnes.cz^ -||mer.stdout.cz^ -||pixel.biano.cz^ -||pixel.cpex.cz^ -||r2b2.cz/events.php? -||ssp.seznam.cz^ -||stat.cncenter.cz^ -||stat.kununu.cz^$third-party -||t.leady.com^ -||t.leady.cz^ -||track.leady.cz^ -! Danish -||bbl.k.dk/tracking/ -||blogtoppen.dk^*/bt_tracker.js -||counter.nope.dk^$third-party -||log.ecgh.dk^ -||newbie.dk/topref.php? -||newbie.dk^*/counter.php? -||sslproxy.dk^*/analytics.js -||statistics.jfmedier.dk^ -||trckr.nordiskemedier.dk^ -||wee.dk/modules/$third-party -! Dutch -||adcalls.nl^$third-party -||adult-trade.nl/lo/track.php -||analytics.belgacom.be^ -||apm.tnet.nl^ -||bbvms.com/zone/js/zonestats.js -||bol.com/click/ -||botndm.nl^*/init.min.js -||cloudfunctions.net/webtraffic$domain=eurocampings.nl -||contentreveal.net/event/events.js -||ct.beslist.nl^ -||dmtgo.upc.biz^ -||go.planetnine.com^ -||hottraffic.nl^$third-party -||marktplaats.net/cnt/ -||mediahuis.be/cxense/ -||mhtr.be/public/tr/tracker.min.js -||navigator-analytics.tweakwise.com^ -||npo.nl/divolte/tt/web-event?$domain=zapp.nl -||pijper.io/visits/ -||pxr.nl/v1/stats/ -||rmgdapfnccsharpprd.azurewebsites.net^ -||sp.dpgmedia.net^ -||stat.24liveplus.com^ -||statistics.rbi-nl.com^ -||tags.hilabel.nl^ -||tr.mediafin.be^ -||trkr.shoppingminds.net^ -||ugent.be/js/log.js -! Estonian -! Finnish -||almamedia.fi^*/scroll-monitor.min.js -||dnt-userreport.com^ -||er.sanoma-sndp.fi/stats/ -||er.sanoma-sndp.fi/v2/stats/ -||nelonenmedia.fi/logger/ -||tags.op-palvelut.fi^ -||vine.eu/track/ -! Georgian -||analytics.palitra.ge^ -||links.boom.ge^ -! Greek -||glami.gr/js/compiled/pt.js -||kwikmotion.com^*/videojs-kwikstat.min.js -||stats-real-clients.zentech.gr^ -! Hebrew -||walla.co.il/stats/ -! Hungarian -||gpr.hu/pr.pr? -||heartbeat.pmd.444.hu^ -||pixel.barion.com^ -||rum.marquardmedia.hu^ -||videostat-new.index.hu^ -||videostat.index.hu^ -! Icelandic -! Indian -||indiatimes.com/pixel? -||tvid.in/log/ -! Indonesian -||mediaquark.com/tracker.js -||oval.id/tracker/ -||parsley.detik.com^ -! Italian -||alice.it/cnt/ -||analytics.competitoor.com^ -||analytics.eikondigital.it^ -||analytics.gtechgroup.it^ -||analytics00.meride.tv^ -||analytics2-3-meride-tv.akamaized.net^ -||analytics2-meride-tv.akamaized.net^ -||api.rivpoint.com/*/event/ -||aruba.it/servlet/counterserver? -||audit.shaa.it^ -||bemail.it^*/analytics.js -||blasterzone.it/analytics/ -||click.kataweb.it^ -||cnt.iol.it^ -||digiland.it/count.cgi? -||diritalia.com^*/seosensor.js -||dmpcdn.el-mundo.net^ -||dmpmetrics.rcsmetrics.it^ -||eage.it/count2.php? -||eventsink.api.redbee.live^ -||evnt.iol.it^ -||fb_servpub-a.akamaihd.net^ -||galada.it/omnitag/ -||gazzettaobjects.it^*/tracking/ -||glomera.com/stats -||gmdigital.it/vtrack-staging.js -||heatmaps.lcisoft.it^ -||heymatic.com^$third-party -||httdev.it/e/c? -||iltrovatore.it/vp.htm -||iol.it^*/clickserver.js -||iolam.it/service/trk -||iolam.it/trk -||italiaonline.it/script/ga. -||italiaonline.it/script/iol-body.js -||limone.iltrovatore.it^ -||livestats.matrix.it^ -||log.edidomus.it^ -||logger.kataweb.it^ -||mibatech.com/track/ -||mrwebmaster.it/work/stats.php? -||nanopress.it/lab.js -||nanostats.nanopress.it^ -||net-parade.it/tracker/ -||plausible.citynews.ovh^ -||plug.it/tracks/ -||plug.it^*/iol_evnt. -||plug.it^*/iol_evnt_ -||plug.it^*/track_ -||plug.it^*/tracking_ -||rcsobjects.it/rcs_tracking-service/v1/distro/HTML/trservice.shtml -||rd.alice.it^ -||redbee.serverside.ai^$image -||sem.triboomedia.it^ -||sembox.it/js/sembox-tracking.js -||stat.acca.it^ -||stat.valica.it^ -||stats.itsol.it^ -||stats.rcsobjects.it^ -||stats2.*.fdnames.com^ -||tag.triboomedia.it^ -||tourmake.it^*/stat/ -||tourmake.it^*/stats? -||tr.bt.matrixspa.it^ -||track.cedsdigital.it^ -||track.eadv.it^ -||track.veedio.it^ -||track.youniversalmedia.com^ -||tracker.bestshopping.com^ -||tracker.iltrovatore.it^ -||tracker.thinkermail.com^ -||tracking.trovaprezzi.it^ -||tracks.arubamediamarketing.it^ -||triboomedia.it^*/Bootstrap.js -||videomatictv.com/imps/ -||vppst.iltrovatore.it^ -||webbificio.com/add.asp? -||webbificio.com/wm.asp? -||websolutions.it/statistiche/ -||wmtools.it/wmtcounter.php? -||wopweb.net/services/counters/ -! Japanese -||199.116.177.156^$domain=~fc2.jp.ip -||a.flux.jp/analytics.collect.v1.CollectService/Collect -||a.o2u.jp^ -||ac.prism-world.jp.net^ -||ad.daum.net^ -||affiliate.rakuten.co.jp^$script,third-party -||analytics-beacon.p.uliza.jp^ -||analytics.contents.by-fw.jp^ -||analytics.liveact.cri-mw.jp^ -||analytics.livesense.marketing^ -||analytics.mbga.jp^ -||analytics.partcommunity.com^ -||analyzer51.fc2.com^ -||api.all-internet.jp^$third-party -||api.popin.cc/conversion2.js -||asumi.shinobi.jp^ -||b.karte.io^ -||b.sli-spark.com^ -||b0.yahoo.co.jp^ -||bance.jp/bnctag.js -||bidder.mediams.mb.softbank.jp^ -||blogroll.livedoor.net/img/blank.gif? -||blozoo.info/js/ranktool/ -||blozoo.info/js/reversetool/ -||bridge-ashiato.appspot.com/beacon/ -||bs.nakanohito.jp^ -||buzzurl.jp/api/counter/ -||bvr.ast.snva.jp^ -||bvr.snva.jp^ -||c-rings.net^$script,third-party -||cdn.ad-platform.jmty.jp^ -||clipkit.co/clipkit_assets/beacon- -||cloudfunctions.net/trackEvent -||cnobi.jp^*/js/imp. -||codemarketing.cloud/rest/ -||cookie.sync.usonar.jp^ -||counter2.blog.livedoor.com^ -||crossees.com^ -||cs.nakanohito.jp^ -||cv-tracker.stanby.com^ -||delivery.satr.jp/event/ -||docomo.ne.jp/scripts/retargeting/retargeting.js -||e-nls.com/disp_cnt.php -||estore.jp/beacon/ -||ev.tpocdm.com^ -||flux-cdn.com/client/ukiuki/flux_wikiwiki_AS_TM_AT.min.js -||future-shop.jp/rview.gif? -||hatmiso.net^$third-party -||ip2c.landscape.co.jp^ -||ipcheck.blogsys.jp^ -||jal.co.jp/common_rn/img/rtam.gif -||jal.co.jp/common_rn/js/rtam.js -||kccsrecommend.site/torimochi_log/ -||kitchen.juicer.cc^ -||l-tike.com/akam/$script -||lcs.comico.jp^$image -||line-scdn.net^*/line_tag/ -||line.me/tag.gif$image -||livedoor.com/counter/ -||log.codemarketing.cloud^ -||log.f-tra.com^ -||log.gs3.goo.ne.jp^ -||log.popin.cc^ -||log000.goo.ne.jp^ -||logger.torimochi-ad.net^ -||macromill.com/imp/ -||mail-count.matsui.co.jp^ -||metrics.streaks.jp^ -||mofa.go.jp^*/count.cgi? -||monipla.com/launch.js -||moshimo.com^*/impression? -||ocn-tag.sienca.jp/api/v1/event/pv -||omt.shinobi.jp^ -||otoshiana.com/ufo/ -||panda.kasika.io^ -||pia.jp/akam/$script -||pia.jp/images/pt.gif$image -||ping.paidy.com^ -||popin.cc/iframe/piuid.html -||popin.cc/js/pixel.js -||popin.cc/PopinService/Logs/ -||popin.cc/retarget/ -||popin.cc/test/popin_img_m.js -||popin.cc/test/popin_send_cookie_set_fail.js -||quant.jp/track/ -||rakuten-static.com/com/rat/ -||rasin.tech/heatmap- -||rasin.tech/scroll-logs/ -||rcm.shinobi.jp^ -||rd.rakuten.co.jp^$script -||re-volver.net/visitor/ -||reports-tsi.tangerine.io^ -||reproio.com^$third-party -||resultspage.com/js/sli-spark.js -||rlog.popin.cc^ -||rtg-adroute.focas.jp^ -||s.dc-tag.jp^ -||s.yimg.jp/images/listing/tool/cv/ytag.js -||sales-crowd.jp/js/sc-web-access-analysis.js -||sankei-digital.co.jp/log? -||sankei.co.jp/js/privacy/sando.js -||script-sh.d2cdm.jp^ -||seesaa.jp/ot_square.pl? -||shinobi.jp/track? -||shinobi.jp/zen? -||sitest.jp/tracking/ -||smaero.jp/js/access.js -||smart-bdash.com/receptions/action/impression -||smart-bdash.com/tracking-script/ -||snva.jp/api/bcon/basic? -||snva.jp/javascripts/reco/ -||sp-trk.com^$third-party -||speee-ad.akamaized.net^ -||spnx.jp/spnx-logger.js -||stats.streamhub.io^ -||stlog.d.dmkt-sp.jp^ -||stlog.dmarket.docomo.ne.jp^ -||storage.googleapis.com/rasin/*/hm.js -||sweet-candy.jp/c.php?$third-party -||sync.shinobi.jp^ -||sysmon.kakaku.com^ -||t.adlpo.com^ -||t.felmat.net^$third-party -||t.seesaa.net^ -||tag.cribnotes.jp^ -||targeting.focas.jp^ -||tm.msgs.jp^ -||tr.c-tag.net^ -||tr.slvrbullet.com^ -||track.list-finder.jp^ -||track.span-smt.jp^ -||track.thebase.in^ -||tracker-rec.smart-bdash.com^ -||tracker.520call.me^ -||tracker.durasite.net^ -||tracker.shanon-services.com^ -||tracker.smartseminar.jp^ -||trk.fensi.plus^ -||uh.nakanohito.jp^ -||ukw.jp/taglog/ -||userdive.com^$third-party -||webbc.fivecdm.com^ -||webtracker.jp^$third-party -||x9.shinobi.jp^ -||yahoo.co.jp/js/retargeting.js -! Korean -||acelogger.heraldcorp.com^ -||applog.ssgdfs.com^ -||assets.datarize.ai^ -||cafe24.com/cfa.js -||cafe24.com/weblog.js -||cm-exchange.toast.com^ -||dadispapi.gmarket.co.kr^ -||dtr-onsite-feed.datarize.ai^ -||event.hackle.io^ -||log.adplex.co.kr^ -||log.cizion.com^ -||log.mofa.go.kr^ -||log.pipeline.datarize.io^ -||log.targetpush.co.kr^ -||logger.bzu.kr^ -||logs-partners.coupang.com^ -||megadata.co.kr^ -||montelena.auction.co.kr^ -||mtag.mman.kr^ -||naver.com/mcollector/ -||ngc1.nsm-corp.com^ -||performanceplay.co.kr^ -||realtime-profiling.datarize.ai^ -||recobell.io/rest/logs? -||saluton.cizion.com^ -||sas.nsm-corp.com^ -||skplanet.com/pixel? -||skplanet.com/pixelb? -||t1.daumcdn.net/*/static/kp.js -||teralog.techhub.co.kr^ -||tracker.adbinead.com^ -||tracker.digitalcamp.co.kr^ -||tracking.adweb.co.kr^$third-party -||utsgw.auction.co.kr^ -! Latvian -||counter.hackers.lv^ -||pmo.ee/stats/ -||salidzini.lv^*/logo_button.gif?$third-party -! Lithuanian -! Norwegian -||cis.schibsted.com^ -||collect.adplogger.no^ -||ish.tumedia.no^ -||log.medietall.no^ -! Persian -||1abzar.ir/abzar/tools/stat/ -||analytics.aasaam.com^ -||webgozar.com/c.aspx*&t=counter -||webgozar.ir/c.aspx*&t=counter -! Polish -||analytics.ceneo.pl^ -||analytics.greensender.pl^$third-party -||ar1.aza.io^ -||ave-caesar-mas.modivo.io^ -||cafenews.pl/mpl/static/static.js? -||cmp.dreamlab.pl^ -||dsg.interia.pl^ -||hit.interia.pl^ -||liczniki.org/hit.php -||pixel.homebook.pl^ -||pixel6.wp.pl^ -||ppstatic.pl^*/track.js -||px.wp.pl^ -||scontent.services.tvn.pl^ -||snrbox.com/tck/ -||stats.asp24.pl^ -||stats.media.onet.pl^ -||stats.ulixes.pl^ -||statystyki.panelek.com^ -||tp.convertiser.com^ -||tracking.novem.pl^ -||trc.gpcdn.pl^ -||youlead.pl/st?browserid -! Portuguese -||7gra.us/path-tracker-js/ -||ad-tracker-api.luizalabs.com^ -||ads-collector.luizalabs.com^ -||analytics-coletor-site.ojc.com.br^ -||analytics-stamp.confi.com.vc^ -||analytics.spun.com.br^ -||b2w.io/event/ -||biggylabs.com.br/track-api/v2/track/site? -||collect.chaordicsystems.com^ -||events.chaordicsystems.com^ -||feature-flag-edge.live.clickbus.net^ -||hitserver.ibope.com.br^ -||jsuol.com/rm/clicklogger_ -||linximpulse.net/impulse/ -||lurker.olx.com.br^ -||melhorplano.net/scripts/tracker/ -||nctrk.abmail.com.br^ -||netdeal.com.br/open/event/ -||neurotrack.neurolake.io^ -||sat.soluall.net^ -||segmentor.snowfox-ai.com^ -||statig.com.br/pub/setCookie.js? -||statistic.audima.co^ -||stats.gridmidia.com.br^ -||tags.cmp.tail.digital^ -||terra.com.br/metrics/ -||track.noddus.com^ -||track.zapimoveis.com.br^ -||tracker.tolvnow.com^ -||trrsf.com.br/metrics/ -||visit-prod-us.occa.ocs.oraclecloud.com^ -||webstats.sapo.pt^ -||xl.pt/api/stats.ashx? -! Romanian -||7w.ro/js/trk.js -||enginey.altex.ro/events/ -||onnetwork.tv/cnt/ -||pixel.biano.ro^ -||profiling.avandor.com^ -||top.skyzone.ro^ -||views.cancan.ro^ -||vlogs.deja.media^ -! Russian -|http://a.pr-cy.ru^$third-party -|https://a.pr-cy.ru^$third-party -||1l-hit.mail.ru^ -||ad.mail.ru^$image,~third-party -||agates.ru/counters/ -||all-top.ru/cgi-bin/topcount.cgi? -||anycent.com/analytics/ -||api.vp.rambler.ru/events/ -||awaps.yandex.ru^ -||banstat.nadavi.net^ -||bigday.ru/counter.php? -||bitrix.info/bx_stat -||browser-updater.yandex.net^ -||c.bigmir.net^ -||cdn-rum.ngenix.net^ -||client-analytics.mts.ru^ -||cnstats.cdev.eu^ -||cnt.logoslovo.ru^ -||cnt.nov.ru^ -||cnt.rambler.ru^ -||cnt.rate.ru^ -||count.yandeg.ru^ -||counter.insales.ru^ -||counter.megaindex.ru^ -||counter.photopulse.ru^ -||counter.pr-cy.ru^ -||counter.reddigital.ru^ -||counter.smotrim.ru^ -||crm-analytics.imweb.ru^ -||csp.yandex.net^ -||d.wi-fi.ru^ -||dbex-tracker-v2.driveback.ru^ -||dp.ru/counter.gif? -||dxb.to/logger/ -||error.videonow.ru^ -||events.auth.gid.ru^ -||g4p.redtram.com^ -||ga-tracker-dot-detmir-bonus.appspot.com^ -||gainings.biz/counter.php? -||gde.ru/isapi/tracker.dll? -||hubrus.com^$third-party -||ifolder.ru/stat/? -||imgsmail.ru/gstat? -||inforotor.net/rotor/ -||ip.up66.ru^ -||izhevskinfo.ru/count/ -||k50.ru/tracker/ -||karelia.info/counter/ -||kraken.rambler.ru^ -||kvartirant.ru/counter.php? -||likemore-go.imgsmail.ru^$image -||linestudio.ru/counter/ -||logs.viavideo.digital^ -||mail.ru/cm.gif? -||mango-office.ru/calltracking/ -||mango-office.ru/track/ -||mediaplus.fm/cntr.php? -||metka.ru/counter/ -||metrics.aviasales.ru^ -||mymetal.ru/counter/ -||myrealty.su/counter/ -||niknok.ru/count.asp? -||open.ua/stat/ -||penza-online.ru^*/userstats.pl? -||pinnacle.com/ru/?btag= -||piper.amocrm.ru^ -||prime.rambler.ru^$~script -||programmatica.com^$third-party -||promworld.ru^*/counter.php? -||properm.ru/top/counter_new.php? -||r.mail.ru^$image -||rambler.ru/counter.js -||redtram.com/px/ -||retailrocket.ru/content/javascript/tracking.js -||s.agava.ru^ -||s.holm.ru/stat/ -||scnt.rambler.ru^ -||scounter.rambler.ru^ -||sepyra.com^$third-party -||sishik.ru/counter.php? -||sov.stream^$third-party -||sp.aviasales.com^ -||sp.aviasales.ru^ -||st.hbrd.io^ -||stainlesssteel.ru/counter.php? -||stat.eagleplatform.com^ -||stat.rum.cdnvideo.ru^ -||stat.sputnik.ru^ -||stat.tvigle.ru^ -||statistics.fppressa.ru^ -||stats-*.p2pnow.ru^ -||stats.tazeros.com^ -||stats2.videonow.ru^ -||subscribe.ru/1.gif/$image -||t1.trex.media^ -||tags.soloway.ru^ -||target.mirtesen.ru^ -||target.smi2.net^ -||target.smi2.ru^ -||tbe.tom.ru^ -||telemetry.jivosite.com^ -||tms-st.cdn.ngenix.net^ -||tms.dmp.wi-fi.ru^ -||top.elec.ru^ -||tracker.comagic.ru^ -||tracking.gpm-rtv.ru^ -||tracking.retailrocket.net^ -||traktor.ru^*/counter.php? -||uc.xddi.ru^ -||ulogin.ru/js/stats.js -||umnico.com/tracker/ -||upstats.yadro.ru^ -||uptolike.com/widgets/*/imp? -||visitor-microservice.ext.p-a.im^ -||visor.sberbank.ru^ -||webtrack.biz^$third-party -||wl-analytics.tsp.li^ -||xn--e1aaipcdgnfsn.su^*/counter.php -||yandeg.ru/count/ -||yandex.net/expjs/latest/exp.js -||yandex.ru/metrika/ -||zahodi-ka.ru/ic/index_cnt.fcgi? -||zahodi-ka.ru^*/schet.cgi? -! Serbian -||contentexchange.me/static/tracker.js -||hits.tf.rs^ -||moa.mediaoutcast.com^ -||w4m.rs/tracker.js -! Slovak -||engerio.sk/api/v1/listener/ -||stat.ringier.sk^ -||tipsport.sk/c/1x1.php? -! Slovene -! Spanish -||1to1.bbva.com^ -||ab.blogs.es^ -||advgo.net/hits/ -||advgo.net/mushroom/ -||analitica.webrpp.com^ -||analytics.lasegunda.ecn.cl^ -||analytics.mercadolibre.com^ -||analytics.neoogilvy.uy^ -||bpt.webedia-group.com^ -||citiservi.es/adstrack? -||collector-videoplayer.5centscdn.net^ -||contador.biobiochile.cl^ -||contadores.miarroba.com^ -||contadores.miarroba.es^ -||count.sibbo.net^ -||creatives.sunmedia.tv^ -||ctx.citiservi.es^ -||datanoticias.prisasd.com^ -||digitalproserver.com/mango-web-metrics/ -||enetres.net/StatisticsV1/ -||epimg.net/js/vr/vrs. -||g-stats.openhost.es^ -||madrid.report.botm.transparentedge.io^ -||mat.socy.es^ -||mdstrm.com/js/lib/streammetrics.js -||mtm.qdqmedia.com -||pub.servidoresge.com^ -||recogerconsentimiento.com/consent/ -||rt.cdnmedia.tv^ -||s3wfg.com/js/vortexloader.js -||smarte.rs/log -||sp.vtex.com^ -||stats.administrarweb.es^ -||stats.miarroba.info^ -||stats.qdq.com^ -||stats.sec.telefonica.com^ -||tag.shopping-feed.com^ -||track.sunmedia.tv^ -||track.tappx.com^ -||tracker.thinkindot.com^ -||tracking.smartmeapp.com^ -||trsbf.com/static/fbs.min.js -||webpixel.smartmeapp.com^ -! Swedish -||aftonbladet.se/blogportal/view/statistics?$third-party -||collector.schibsted.io^ -||eniro.com/pixel/ -||evt-api.ntm.eu^ -||impression-tracker-service-5eimuebuhq-lz.a.run.app^ -||pji.nu/libs/pjpixel/ -||vizzit.se^$third-party -! Tajik -||pixel.smartmedia.tj^ -! Thai -||sal.isanook.com^ -||stat.matichon.co.th^ -! Turkish -||analitik.bik.gov.tr^ -||analytics.kkb.com.tr^ -||c.keltis.com^ -||collector.wawlabs.com^ -||hulyagedikci.com/vhit.php? -||iyzipay.com/buyer-protection/assets/js/analytics.js -||izinal.com/log -||sayac.kapital.com.tr^ -||statistics.daktilo.com^ -||stats.vidyome.com^ -||tracking.venturify.at^ -||traffic.wdc.center^ -! Ukranian -||informers.sinoptik.ua^ -||mgz.com.ua/counter.php? -||top.zp.ua/counter/ -||tracker.prom.ua^ -||webvitals.luxnet.ua^ -! Vietnamese -||accesstrade.vn/js/trackingtag/ -||analytics.yomedia.vn^ -||f-emc.ngsp.gov.vn^ -||fpt.shop/fa_tracking.js -||px.dmp.zaloapp.com^ -||st-a.cdp.asia^ -||tracking.aita.gov.vn^ -||tracking3.vnncdn.net^ -||za.zalo.me^ -||za.zdn.vn^ -||zalo.me/v3/w/_zaf.gif -!-----------------Individual tracking systems-----------------! -! *** easylist:easyprivacy/easyprivacy_specific.txt *** -||1024tera.com/api/analytics? -||123rf.com/apicore-index/traffic_log -||342251b-beta.perplexity.ai/api/$xmlhttprequest -||40svintageporn.com/hit -||4hds.com/js/camstats.js -||4kporn.xxx/static/analytics/ -||4shared.com/js/d1VisitsCounter.4min.js -||9gag.com/event/ -||9gag.com/track/ -||a-reporting.nytimes.com^ -||a.electerious.com^ -||a.tellonym.me^ -||a10.nationalreview.com^ -||aa.avvo.com^ -||aawsat.com/pageview/ -||aax-eu-dub.amazon.com^$script -||aax-us-iad.amazon.com^$script -||ab-machine.forbes.com^ -||ab.fanatical.com^ -||abcnews.com/assets/dtci/js/abcnews_visitorId.js -||abcnews.com/assets/dtci/js/at.js -||abebooks.com/timer.gif? -||about.me/track? -||abysscdn.com/cdn-cgi/trace -||academia.edu/record_hit -||acast.com/api/stats -||accor.com/g/collect? -||accuterm.com/data/stat.js -||acronymfinder.com/~/tr.ashx -||actionviewphotography.com/api/stats? -||activate.latimes.com/pc/caltimes/?pulse2001= -||active.com/ig.track.js -||activity.fiverr.com^ -||adalytics.io/api/view -||adblockeronstape.me/stat/ -||adblockeronstreamtape.me/stat/ -||adblockeronstreamtape.xyz/stat/ -||adblockeronstrtape.xyz/stat/ -||adblockplustape.xyz/stat/ -||adblockstreamtape.art/stat/ -||adblockstreamtape.fr/stat/ -||adblockstreamtape.site/stat/ -||adblocktape.online/stat/ -||adblocktape.store/stat/ -||adblocktape.wiki/stat/ -||adc-js.nine.com.au^ -||adguard.com/-/event/ -||adl.bankofthewest.com^ -||adobe.io/system/log -||adobe.io/web/v1/metrics -||adtech-events.bookmyshow.com^ -||adv.drtuber.com^ -||advancedmp3players.co.uk/themes/basic/js/analytics.js -||adweek.com/wp-content/plugins/adw-parsley/ -||aegis.trovo.live^ -||aerlingus.com/ahktqsewxjhguuxe.js -||agoda.net/v2/track -||aim.cloudflare.com/__log -||airtable.com/internal/ -||airtel.in/analytics/pixel? -||aiv-delivery.net/Events/ -||aiv-delivery.net/v1/ReportEvent -||akamaihd.net/paay6hyr.gif? -||alb.reddit.com^ -||alicdn.com/AWSC/et/ -||aliexpress.com/ts? -||alipay.com/web/bi.do?ref= -||aljazeera.com/thirdparty/nr.js -||allaboutberlin.com/whoisthere.js -||allevents.in/actracker/ -||alljapanesepass.com/ascripts/gcu.js -||alljapanesepass.com/rstat -||als-svc.nytimes.com^ -||altruja.de/js/micro/integration-ga.js -||alwayslucky.com/platform/webvitals -||amazon.com/1/aiv-web-player/1/OE^ -||amazon.com/1/events/$domain=~aws.amazon.com -||amazon.com/empty.gif?$image -||americanexpress.com/beacon -||amethyst.zappos.com^ -||amiunique.org/analytics.js -||amnesty.org/collect/ -||amplitude.chess.com^ -||ampltd.medal.tv^ -||ampltd.top.gg^ -||ampltd2.medal.tv^ -||anal.doubledouble.top^ -||analytics-api.dvdfab. -||analytics-batch.blitz.gg^ -||analytics-proxy.springboard.com^ -||analytics-server.arras.cx^ -||analytics-tracking.meetup.com^ -||analytics-wcms.joins.net^ -||analytics-zone-1.api.leadfamly.com^ -||analytics.3c5.com^ -||analytics.academy.com^ -||analytics.adfreetime.com^ -||analytics.archive.org^ -||analytics.brave.com^ -||analytics.chase.com^ -||analytics.cookiefirst.dev^ -||analytics.crazygames.com^ -||analytics.designspiration.com^ -||analytics.eip.telegraph.co.uk^ -||analytics.faceitanalytics.com^ -||analytics.footballdb.com^ -||analytics.freemake.com^ -||analytics.gamesdrive.net^ -||analytics.getshogun.com^ -||analytics.global.sky.com^ -||analytics.hashnode.com^ -||analytics.inquisitr.com^ -||analytics.kaggle.io^ -||analytics.kooapp.com^ -||analytics.makeitmeme.com^ -||analytics.maxroll.gg^ -||analytics.ml.homedepot.ca^ -||analytics.mouthshut.com^ -||analytics.nike.com^ -||analytics.ovh.com^ -||analytics.oyorooms.com^ -||analytics.pgncs.notion.so^ -||analytics.plex.tv^ -||analytics.productreview.com.au^ -||analytics.qogita.com^ -||analytics.realestate.com.au^ -||analytics.send.cm^ -||analytics.silktide.com^ -||analytics.slashdotmedia.com^ -||analytics.synchrony.com^ -||analytics.ticketmaster. -||analytics.tradedoubler.com^ -||analytics.vedantu.com^ -||analytics.wavebox.io^ -||analytics.yugen.to^ -||analyticsapi.qogita.com^ -||ancestry.com/core.js -||androidfilehost.com/libs/otf/stats.otf.php? -||anon-stats.eff.org^ -||antiadtape.com/stat/ -||apartments.com/clientvisit/al.gif? -||apester.com/cookie/bundle.js -||api-hotmart-tracking-manager.hotmart.com^ -||api-js.mixpanel.com^ -||api-router.kaspersky-labs.com/logger2/metrics/ -||api.audio.com/analytics/event -||api.channel.io/*/events -||api.ffm.to/sl/e/$image -||api.narrativ.com/favicon.ico -||api.privacyguides.net^ -||api.streamelements.com/science/ -||api.takealot.com^$ping -||api.vk.com/method/statEvents. -||app-bnkr.b-cdn.net/js/lv.js -||app.box.com/app-api/split-proxy/api/metrics -||app.box.com/gen204 -||appanalysis.banggood.com^ -||apple-mapkit.com/mw/v1/reportAnalytics -||argtesa.com/cdn-cgi/trace -||armedangels.com/javascript/script.js -||arttrk.com/pixel/ -||as.coinbase.com/metrics -||atrack.allposters.com^ -||ats.alot.com^ -||audacy.com/data-events/ -||aurum.tirto.id^ -||auth.services.adobe.com/signin/v1/audit -||autotrader.com/pixall/ -||avitop.com/aviation/hitlist.asp -||b629.electronicdesign.com^ -||ba-bamail.com/handlers/stats.ashx -||backcountry.com/api/log -||backend.academy.cs.cmu.edu/api/v0/event/ -||baidu.com/static/h.gif -||baidu.com^*/mwb2.gif? -||baidu.com^*/wb.gif? -||banggood.com/collectBanner? -||banggood.com/collectException -||bangkokpost.com/hits/ -||barnes.send.cm^ -||barrons.com/cookies/pixel.gif -||bat.maydream.com^ -||bats.video.yahoo.com^ -||bcbits.com/bundle/bundle/1/analytics-$domain=bandcamp.com -||bcbits.com/bundle/bundle/1/impl-$domain=bandcamp.com -||beacon.dropbox.com^ -||beacon.samsclub.com^ -||beacon.shazam.com^ -||beacon.shutterfly.com^ -||beacon.walmart.com^ -||beacon.wikia-services.com^ -||bearblog.dev/hit/ -||beforeitsnews.com/core/ajax/counter/count.php^ -||behance.net/log -||behance.net/v2/logs -||bestbuy.com/~assets/bby/_js/ext/optmzly/ -||bestpornsites.tv/i/js/extra/metrics.js -||bfp.capitalone.com^ -||bgro41vnmb.execute-api.us-east-2.amazonaws.com/production$domain=masterworks.com -||bhphotovideo.com/aperture/shared/js/dataLayer.js -||bi.banggood.com^ -||bigw.com.au/api/event/ -||bigw.com.au/events/ -||bing.com/fd/ls/GLinkPing.aspx? -||bing.com/geolocation/write? -||bing.com/mouselog -||bing.com/notifications/render? -||bing.com/rewardsapp/reportActivity? -||binocule21c.merriam-webster.com^ -||biomedcentral.com/track/ -||blitz-analytics-batch-server.blitz.gg^ -||blockworks.co/_vercel/insights/ -||blue.nbc4i.com^ -||bmoharris.com/www/assets/analytics/loader.js -||bonprix.*/ajax/landmarks/ -||bonprix.*/ajax/marketing-parameters/ -||booking.com/c360/v1/track -||booking.com/collector/ -||booking.com/logo? -||booking.com/navigation_times -||booking.com/sendlayoutevents -||boomerang.dell.com^ -||box.com/index.php?rm=box_gen204_batch_record -||brightside.me/metric-collector -||browsealoud.com/plus/scripts/$script -||builder.io/api/v1/track -||buondua.com/hit/ -||butterfly-api.masterworks.com/v1/ -||butterly.com/node_modules/detect.js/detect.min.js -||buzzfeed.com/destination-sync.html -||bwbx.io/s3/javelin/public/hub/js/abba/$script,domain=bloomberg.co.jp|bloomberg.com -||byteoversea.com/monitor_web/ -||c.arstechnica.com^ -||c.fingerprint.com^ -||c.gq.com^ -||c.newyorker.com^ -||c.paypal.com^$image,script -||c.thredup.com^ -||c.vanityfair.com^ -||c.vogue.com^ -||c.wired.com^ -||c.wort-suche.com^ -||c.xbox.com^ -||c.ypcdn.com^$domain=yellowpages.com -||cambash.com/api/events -||cambash.com/api/metrics -||camgirls.casa/p.php -||campsaver.com/nelmio-js-logger/ -||canstockphoto.com/server.php?rqst=track -||capital.com^$ping -||capitalone.com/collector/ -||cargurus.com/cars/cganalyticspageview.action -||cargurus.com/tr/ -||carsandbids.com/a/p -||cbc.ca/g/stats/ -||cc.cc/visit_log_ajax/visit_log_save_ajax.php? -||cdn.jsdelivr.net/npm/@adshield/ -||centerblog.net/stats.js -||ch3ngl0rd.com/hit/ -||change.org/api-proxy/-/bandit/pull -||change.org/api-proxy/-/et -||change.org/api-proxy/-/event_tracker -||channel.io/front/v*/channels/*/events -||chatfuel.com/cf-analytics/ -||chatroll.com/t.gif -||chewy.com/api/event/ -||chickadvisor.com/js/detect.min.js -||cidrap.umn.edu/core/modules/statistics -||cisco.com/c/dam/cdc/j/at.js -||cl.canva.com^ -||clanker-events.squarespace.com^ -||clarice.streema.com^ -||classdojo.com/logs/ -||classistatic.com^*/js/lib/prebid-7.5.0.min.js$script,domain=kijiji.ca -||click.aliexpress.com^$image -||click.nudevista.com^ -||client-log.box.com^ -||client-metrics.chess.com^ -||cloudflare.com/_cf/analytics.js -||cloudfront.net/tracker-latest.min.js -||cloudfront.net/vis_opt.js -||cloudfront.net/vis_opt_no_jquery.js -||clp-mms.cloudpro.co.uk^ -||cm-mms.coachmag.co.uk^ -||cm.nordvpn.com^ -||cmp.vg.no^*/metrics/ -||cnt.hd21.com^ -||cnt.iceporn.com^ -||cnt.viptube.com^ -||cnt.vivatube.com^ -||cnt.xhamster.com^ -||codecademy.com/analytics/ -||coincheckup.com/report_events/ -||cointelegraph.com/pixel? -||collect.air1.com^ -||collect.alipay.com^ -||collect.asics.com^ -||collect.banggood.com^ -||collect.hollisterco.com^ -||collect.klove.com^ -||collect.reagroupdata.com.au^ -||collect.stepstone.co.uk^ -||collect.thunder-io.com^ -||collector-px0py5pczn.octopart.com^ -||collector.cint.com^ -||collector.fiverr.com^ -||collector.github.com^ -||collector.githubapp.com^ -||collector.megaxh.com^ -||collector.pi.spectrum.net^ -||collector.quillbot.com^ -||collector.taoxh.life^ -||collector.xhaccess.com^ -||collector.xhamster.com^ -||collector.xhamster.desi^ -||collector.xhamster2.com^ -||collector.xhamster3.com^ -||collider.com/strpixel.png -||colvk.viki.io^ -||confiant.msn.com^ -||configurator.ecom-mobile-samsung.com/api/logger -||connatix.com/scripts/$~third-party -||connatix.com/us/google/ -||connecteam.com/bi/api/ReportHit/ -||consent.ghostery.com/v1.js -||consent.trustarc.com/bannermsg? -||consent.trustarc.com/noticemsg? -||console-telemetry.oci.oraclecloud.com^ -||consumer.org.nz/session/ping/ -||containers.appdomain.cloud/api/send-log$domain=ibm.com -||copilot-telemetry.githubusercontent.com^ -||count.darkreader.app^ -||count.rin.ru^ -||counter.darkreader.app^ -||coursehero.com/v1/data-tracking -||coursera.org/eventing -||cpb.esprit.*/91405.js -||cpt.itv.com^ -||crayfish.thingelstad.com^ -||creately.com/static/js/creately-analytics- -||crta.metro.co.uk^ -||crumbs.robinhood.com^ -||crunchyroll.com/tracker? -||cryo.socialblade.com^ -||cstats.sankakucomplex.com^ -||cultofmac.com/djrxqhzkbsgf.js -||cvs.com/tnadstlinj.js -||cwt.citywire.info^ -||d.skk.moe^ -||d401.dollartree.com^ -||d712.theinformation.com^ -||dabu.askmediagroup.com^ -||dailymail.co.uk/geo/ -||dailymail.co.uk/rta2/ -||dailymotion.com/logger/ -||darkreader.org/data/top-backers.json -||darkreader.org/elements/backers- -||data.allstate.com^ -||data.guide.photobucket.com^ -||data.torry.io^ -||data.webullfintech.com/event/ -||data.younow.com^ -||datadoghq.com/assets/dd-browser-logs-rum.js -||datadome.maisonsdumonde.com^ -||datadome.patreon.com^ -||datayze.com/callback/record_visit? -||datum.jsdelivr.com^ -||dbhsejcg-meetup-com.cdnjs.network^ -||dc.banggood.com^ -||dcf.espn.com/privacy/ -||dd.auspost.com.au^ -||dd.nytimes.com^ -||ddome-tag.blablacar.com^ -||dealnews.com/lw/ul.php -||deepl.com/web/statistics -||deepnote.com/api/track -||deezer.com/ajax/gw-light.php?method=triton.pixelTracking& -||deliver.ptgncdn.com^ -||deliveroo.com^*/events -||deliveryrank.com/drapp070eb2deb1932e2101e6.js -||delta.com/datacollect -||deovr.com/api_logs/ -||desmos.com/analytics/js/ -||dev.to/fallback_activity_recorder -||developer.mozilla.org/submit/ -||developers.miro.com/pageview -||df.infra.shopee. -||df.infra.sz.shopee. -||dhl.com/g8Dj6P8TAg/ -||dhresource.com/dhs/fob/js/common/track/$domain=dhgate.com -||digg.com/library/tracker.js -||digital.flytedesk.com/js/head.js -||discover-metrics.cloud.seek.com.au^ -||discover.com/QaiuqHH6L7OpQ2dSZzdDRhs6/ -||discoveryplus.com/events/ -||dls-account.di.atlas.samsung.com^ -||dmtgvn.com/wrapper/js/common-engine.js$domain=rt.com -||docs.github.com/events -||dollartree.com/ccstoreui/*/analytics/ -||domainit.com/scripts/track.js -||dominos.co.uk/qRgAwS/ -||dot.nonolive.com^ -||dotesports.com/sp.js -||dp.shoprunner.com^ -||dribbble.com/client_app/events -||dribbble.com/client_app/screenshot_boost_ad_events -||dribbble.com/client_app/search_results -||dribbble.com/shots/log_views -||drop.com/impressionsBeacon -||drop.com/statBeacon -||dropbox.com/2/client_metrics -||dropbox.com/2/pap_event_logging -||dropbox.com/alternate_ -||dropbox.com/csp_log? -||dropbox.com/jse -||dropbox.com/log/ -||dropbox.com/log_js_sw_data -||dropbox.com/pithos/ux_analytics -||dropbox.com/prompt/log_impression? -||dropbox.com/unity_connection_log -||drudgereport.com/204.png -||drugs.com/api/logger/ -||drugs.com/img/pixel.gif -||dtag.breadfinancial.com^ -||dtksoft.com/ajax/log^ -||dubz.co/analytics/ -||dubz.live/analytics/ -||duckduckgo.com/t/ -||dumpster.cam4.com^ -||e.quizlet.com^ -||e.used.ca/event -||e.zg-api.com/event$domain=zillow.com -||e2ma.net/track/ -||ea.epochbase.com^ -||ebay.com/delstats/ -||ebay.com^*/customer_image_service? -||ebaystatic.com^*tracking/configuration.js -||ec.thredup.com^ -||edge.staging.fullstory.com^ -||edisound.com/api/p/stats -||eec.crunchyroll.com^ -||effect.habr.com^ -||eharmony.ca/fd/ -||eharmony.co.uk/bd/ -||eighten-bloc-party.thebrowser.company/script.js -||ejlytics.editorji.com^ -||el.quizlet.com^ -||eldorado.gg/liberate_script_data_ -||elitesingles.com/cs/tp.png? -||embed.reddit.com/svc/shreddit -||embedme.top/embed/extra -||engagefront.meteomedia.com^ -||engagefront.theweathernetwork.com^ -||engagement.feedly.com^ -||engine.traceparts.com^ -||engineering.com/scripts/$script,domain=eng-tips.com -||eproof.drudgereport.com^ -||equirodi.*/addstat.php -||ericdraken.com/a/$script -||error-collector.ted.com^ -||error.fc2.com/blog/$image -||error.fc2.com/blog3/$script -||errorreports.couponcabin.com^ -||espy.boehs.org^ -||et.nytimes.com^ -||et.tidal.com^ -||etsy.com/bcn/beacon -||etui.fs.ml.com^ -||etx.indiatimes.com^ -||euclid.kuula.co^ -||eurogamer-uk.eurogamer.net^ -||event-api.reverb.com^ -||event-collector.moviesanywhere.com^ -||event-router.olympics.com^ -||event.platform.tunein.com^ -||eventlog.jackpot.de^ -||events-ingestion.services.gorgias.com^ -||events-prod.autolist.com^ -||events-tracker.deliveroo.net^ -||events.api.godaddy.com^ -||events.clips4sale.com^ -||events.framer.com^ -||events.mercadolibre.com^ -||events.practo.com^ -||events.prd.api.max.com^ -||events.privy.com^ -||events.reddit.com^ -||events.redditmedia.com^ -||events.santander.co.uk^ -||events.squarespace.com^ -||events.turbosquid.com^ -||events2.www.edenfantasys.com^ -||evs.icy-lake.kickstarter.com^ -||evs.sgmt.loom.com^$script -||excess.duolingo.com/batch -||expedia.*/cl/ -||experiences.wyng.com/api/*/event-api/events -||exporntoons.net/api/stats? -||expressvpn.com/__px.gif? -||exr-mms.expertreviews.co.uk^ -||extendoffice.com/analytics.js -||f.cdngeek.com^$domain=edugeek.net -||f362.nola.com^ -||facebook.com/a/bz? -||facebook.com/ajax/*/log.php -||facebook.com/ajax/*logging. -||facebook.com/ajax/mtouch_perf_page_load_timings/ -||facebook.com/ajax/qm/ -||facebook.com/sem_mpixel/ -||facebook.com/sw/log/init/ -||fanatics.com/api/track -||fancentro.com/lapi/statisticWriter/ -||fancentro.com/trck- -||fansedge.com/api/track -||fansshare.com/t.gif -||faphouse.com/collector/ -||farfetch.net/v1/marketing/trackings -||faro-collector-prod-*.grafana.net^ -||fastmail.com/api/event/ -||fathom.app.silverbeak.com^ -||fathom.tdvm.net^ -||fbo-statistics-collector-tc.is.flippingbook.com^ -||fc2.com/ana/analyzer.php -||fc2.com/ana/processor.php? -||fc2.com/counter_img.php? -||fdt.kraken.com^ -||feedly.com/mxpnl/ -||femetrics.grammarly.io^ -||figma.com/api/figment-proxy/ -||filext.com/pageview^ -||findmatches.com/bts.js -||findmatches.com/t/tr/lp/intg.js? -||findmatches.com/tri?tid= -||fingerprint.com/events/ -||fingerprintjs.com/visitors/ -||firebaselogging.googleapis.com^ -||fishki.net/counter/ -||fiverr.com/api/v1/activities -||flipboard.com/api/v2/reporting -||flipboard.com/usage? -||flipkart.com/api/3/data/collector/ -||flirt4free.com/pixel/ -||flya.me/eventtrack -||foodcouture.net/public_html/ra/script.php -||formula1.com/api/track -||fortune.com/comscore-json/ -||foursquare.com/v2/private/logactions -||foxsports.com.au/akam/ -||fp.measure.office.com^ -||fpa-cdn.adweek.com^ -||fpa-cdn.arstechnica.com^ -||fpc.fingerprint.com^ -||fpt.microsoft.com^ -||freedownloadmanager.org/ajax/th_hit.php -||freedownloadmanager.org/ajax/th_view.php -||freepik.*/download.gif? -||freepik.com/_ga? -||freeplayervideo.com/cdn-cgi/trace -||freeprivacypolicy.com/track/ -||fresnel-events.vimeocdn.com^ -||ft.com/ingest? -||fullscreen.nz/v1/tracking/$domain=threenow.co.nz -||fusevideo.io/api/event -||g.ign.com^ -||g.mashable.com^ -||g.newtimes.com^ -||g.pcmag.com^ -||ga.nsimg.net^ -||gadgets360.com/analytics.js -||gaiaonline.com/internal/mkt_t.php? -||gak.webtoons.com^ -||gamedistribution.com/collect? -||gamejolt.com/tick/ -||gamivo.com/tcllc? -||gc.newsweek.com/front/js/counter.js -||gct.americanexpress.com^ -||gemoo-resource.com/js/analytics.js -||generalblue.com/js/pages/shared/analytics.min.js -||generic-function-log-data-7il2midpaa-nn.a.run.app^$domain=telus.com -||geo.brobible.com^ -||geo.nbcsports.com^ -||geo.yahoo.com^ -||geoip.boredpanda.com^ -||geoip.hmageo.com^ -||geoip.ifunny.co^ -||geolocation.forbes.com^ -||getadblock.com/js/log.js -||getpocket.com/t/ -||getpocket.com/web-client-api/braze -||getpocket.com/web-utilities/public/static/te.js -||gettapeads.com/stat/ -||gettyimages.*/pulse$ping -||gg.vevor.com^ -||ghacks.net/statics/px.gif -||gianteagle.com/webevents/ -||girlsofdesire.org/images/girlsofdesire.org/analytics.js -||github.com/_private/browser/stats -||github.dev/diagnostic? -||glassdoor.*/geb/events/ -||glassmoni.researchgate.net^ -||global.canon/00cmn/js/*/analytics- -||global.ssl.fastly.net^$domain=allmodern.com|argos.co.uk|basspro.com|birchlane.com|courier-journal.com|courierpress.com|desertsun.com|detroitnews.com|eddiebauer.com|freep.com|glassesusa.com|greenbaypressgazette.com|harborfreight.com|indystar.com|jsonline.com|kurtgeiger.com|legacy.com|lenovo.com|lohud.com|lowes.com|naplesnews.com|news-journalonline.com|northjersey.com|perigold.com|quickship.com|quikshiptoner.com|radiotimes.com|sainsburys.co.uk|sanuk.com|sheboyganpress.com|tallahassee.com|theadvertiser.com|thisweek.com|ugg.com|usatoday.com|wayfair.co.uk|wayfair.com|wwe.com -||globes.co.il/shared/s.ashx? -||gmetrics.getbeamer.com^ -||gnar.grammarly.com^ -||gnavi.co.jp/analysis/ -||go.fap18.net/ftt2/js.php -||go.pardot.com^ -||go.theregister.com^$image -||gobankingrates.com/fp/ -||gofundme.com/track -||gog-statics.com/js/frontpagelogintracking-$script,domain=gog.com -||gog-statics.com/js/loginTracking-$script,domain=gog.com -||goodfon.com/stat/ -||goodreads.com/logging -||goodreads.com/metrics_logging_batched -||goodreads.com/report_metric -||goodreads.com/track/ -||google.com/ads/measurement/ -||google.com/dssw.js -||google.com/images/phd/px.gif -||google.com/log? -||gotie.tunein.com^ -||grabify.link/api/js -||grgnsht.nzxt.com^ -||groove.so/unlocker.js -||groupon.com/analytic/ -||groupondata.com/tracky -||gsght.com/twizards.js -||gso.amocrm.com/humans/ -||gtm.wise.com^ -||gtreus.aliexpress.com^ -||gumtree.com.au/tracking/ -||gurgle.pcmag.com^ -||gurgle.spiceworks.com^ -||h031.familydollar.com^ -||hacksplaining.com/track -||hankookilbo.com/service/kt/trk.js$script,domain=koreatimes.co.kr -||harryrosen.com/analytics/ -||health-metrics-api.setapp.com^ -||healthline.com/api/metrics -||heap.drop.com^ -||hellopeter.com/api/consumer-tracking/ -||hilton.com/zJbufaUX/ -||hindustantimes.com/res/images/one-pixel.png -||hlogger.heraldcorp.com^ -||hltv.org/scripts/hltv-tracking.js -||hn-ping*.hashnode.com^ -||homedepot.ca/mr/thd-ca-prod.js -||hoo.be/api/hoobe/analytics -||hotels.com/api/bucketing/v1/evaluateExperimentsAndLog -||hotels.com/cl/data/omgpixel.json? -||hotpads.com/node/api/comscore -||hotstar.com/v1/identify -||hotstar.com/v1/track -||houzz.com/hsc/aetrk/ -||houzz.com/j/ajax/client-error-light? -||houzz.com/js/log? -||hqq.ac/cdn-cgi/trace -||hqq.to/cdn-cgi/trace -||hqq.tv/cdn-cgi/trace -||html5games.com/event/ -||htrace.wetvinfo.com^ -||huggingface.co/js/script.js -||hulkshare.com/ajax/tracker.php -||hulu.com/metricsconfig -||hypebeast.com/firebase-messaging-sw.js -||i.pokernews.com^ -||i.rayconglobal.com/nb-collector -||iam-rum-intake.datadoghq.com^ -||ibm.com/analytics/build/bluemix-analytics.min.js -||ibtimes.com/front/js/counter.js -||icgp.ie/overview/js/tracker.php -||idiva.com/analytics_ -||iedc.fitbit.com^ -||iguazu.doordash.com^ -||ih.newegg.com^ -||iheart.com/api/v3/playback/reporting -||ihg.com/logging/ -||imagefap.com/images/yes.gif? -||imagetwistcams.com/pixel/ -||imdb.com/api/_ajax/metrics/ -||imf.org/Assets/IMF/js/SocialScript.js -||imgur.com/albumview.gif? -||imgur.com/imageview.gif? -||impressions.svc.abillion.com^ -||improve.tempest.com^ -||indeed.com/cmp/_rpc/dwell-log? -||indeed.com/cmp/_rpc/flog -||indeed.com/cmp/_rpc/logentry -||indeed.com/m/rpc/frontendlogging -||indeed.com/rpc/$~xmlhttprequest -||indeed.com/rpc/pageload/perf -||indiatimes.com/personalisation/logdata/ -||indiatimes.com/savelogs? -||indmetric.rediff.com^ -||inews.co.uk/rta2/ -||info.com/pingback -||infoq.com/metrics/ -||informer.com/ajax/article_log.php -||ingest.make.rvohealth.com^ -||ingress.linktr.ee^ -||inq.com/tagserver/logging/logline -||insideevs.com/analytics.js -||instagram.com/ajax/bz -||instructables.com/counter -||intent.cmo.com.au^ -||intent.goodgearguide.com.au^ -||intent.macworld.co.uk^ -||intent.pcworld.idg.com.au^ -||intent.techadvisor.com^ -||internal-analytics.odoo.com^ -||internetslang.com/jass/ -||intg.snapchat.com^ -||intuitvisitorid.api.intuit.com^ -||invisionapp.com/analytics-api/ -||iono.fm/tracking? -||ip.cliphunter.com^ -||irs.gov/h4z97Hz8jMrNO/ -||isc-tracking.eventim.com^ -||isharemetric.rediff.com^ -||ivx.lacompagnie.com^ -||j927.statnews.com^ -||jansatta.com/api/capture/ua -||jav4tv.com/player/analytics -||javhd.com/ascripts/gcu.js -||javhd.com/rstat -||jetbluevacations.com/apis/v2-analytics/ -||jfapiprod.optimonk.com^ -||jiji.co.ke/tag_event -||jockey.com/event/ -||jockey.com/scripts/omt-base.js -||julius.ai/monitoring -||jumbo.zomato.com^ -||juno.com/start/javascript.do?message= -||justanswer.com/jatag/ -||justdial.com/jd-trkr -||k.p-n.io/event-stream -||kaggle.com/api/i/diagnostics.MetricsService -||kansascity.com/nyb-zsooli/ -||kayak.*/vestigo/measure -||kbb.com/pixall/ -||kck.st/web/track -||kgoma.com/v1/stat/ -||khanacademy.org/api/internal/_analytics/ -||kinesis.us-east-1.analytics.edmentum.com^ -||kkam.com/rest/high/api/cogitoergosum^ -||klm.us/CWZUvc/ -||kloth.net/images/pixel.gif -||knewz.com/api/event -||kohls.com/mtFndb/ -||kohls.com/test_rum_nv? -||komoot.*/api/t/event -||kompass.com/logAdvertisements -||kroger.com/clickstream/ -||kudoslabs.gg/track/ -||l.usaa.com/e/v1/ -||lastminute.com/ose/processEvent -||lastminute.com/ose/tracking/ -||lastminute.com/s/hdp/hotel-details/api/logs -||lastminute.com/s/hdp/hotel-details/api/metrics -||lastpass.com/lpapi/content/pixels -||lastpass.com/m.php/proxy_tracker -||lego.com/api/dl-event-ingest -||lendingtree.com/analytics/ -||lendingtree.com/pixel/ -||letsdoeit.com/tracking/ -||lexology.com/pd.js -||libhunt.com/api/ahoy/event -||librato-collector.genius.com^ -||lightstep.medium.systems^*/reports -||link.kogan.com^ -||link2.strawberrynet.com^$image -||linkedin.com/collect/ -||linkedin.com/li/track$xmlhttprequest -||linkedin.com/litms/utag/ -||linkedin.com/platform-telemetry/ -||linkedin.com/sensorCollect/ -||links.strava.com^$image -||linktr.ee/events -||linris.xyz/cdn-cgi/trace -||lists.ccmbg.com^ -||littlebigsnake.com/event? -||livehdcams.com/api/events -||livehdcams.com/api/metrics -||livejournal.com/ljcounter/ -||livejournal.com/log? -||liveperson.net/hc/*/?visitor= -||lms.roblox.com^ -||lnkd.in/li/track -||load.tm.all3dp.com/rqlevydw.js -||log-gateway.zoom.us^ -||log.china.cn^ -||log.genyt.net^ -||log.hypebeast.com^ -||log.klook.com^ -||log.quora.com^ -||log.snapdeal.com^ -||log.v.ssp.yahoo.com^ -||log.webnovel.com^ -||logger.nerdwallet.com^ -||logger007.cam4.com^ -||logging.api.intuit.com^ -||loglady.kiwi.com^ -||logs.hotstar.com^ -||logs.naukri.com^ -||logs.netflix.com^ -||logx.optimizely.com^ -||lolwot.com/B5xaqzSGvMTM.js -||lookawoman.com/t/ -||loom.com/insights-api/graphql -||loom.com/metrics/graphql -||lowes.com/gauge/ -||lyft.com/api/track -||lyngsat.com/system/loadclick.js -||m.facebook.com/ajax/weblite_load_logging/ -||m.facebook.com/ajax/weblite_resources_timing_logging/ -||ma.redhat.com^ -||macys.com/tag_path/ -||mail.proton.me/api/data/v1/stats -||mail.yahoo.com/f/track/ -||mangadex.org/api/event -||mangadex.org/p.js -||manomano.*/api/v1/sp-tracking/ -||manua.ls/g/collect? -||manua.ls/gtag -||mapcarta.com/logs -||mapquest.com/logger -||marketing.alibaba.com^ -||marketing.dropbox.com^ -||massivecams.com/api/events -||massivecams.com/api/metrics -||mat6tube.com/api/stats? -||mcc-tags.cisco.com^ -||mcs-ie.tiktokw.eu^ -||mcs-va.tiktokv.com^ -||mcs.tiktokv.us^ -||mcs.tiktokw.us^ -||mcs.us.tiktokv.com^ -||medal.tv^$ping -||medium.com/_/batch -||meduza.io/stat/ -||megaplay.cc/cdn-cgi/trace -||megatron.igraal.com^ -||mensjournal.com/.bootscripts/analytics.min.js -||mentimeter.com/performance-metrics -||mercedes-benz.com/datadog- -||merriam-webster.com/lapi/v1/mwol-search/stats/lookup -||messari.io/js/wutangtrack.js -||messenger.com/ajax/bnzai? -||metacrawler.com/pingback -||metrics.audius.co^ -||metrics.bangbros.com^ -||metrics.camsoda.com^ -||metrics.freemake.com^ -||metrics.hackerrank.com^ -||metrics.onewegg.com^ -||metrics.roblox.com^ -||metrics.spkt.io^ -||metrics.syf.com^ -||metrics.ted.com^ -||metricsishare.rediff.com^ -||metro.co.uk/base/rta/ -||metro.co.uk/cvx/client/sync/fpc? -||metroweekly.com/tools/blog_add_visitor/ -||meucdn.vip/cdn-cgi/trace -||mewe.com/ubk4jrxn.js -||mi.academy.com/p/js/1.js -||mi.dickssportinggoods.com/p/js/1.js -||mi.grubhub.com^ -||miao.baidu.com^ -||midas.chase.com^ -||mixpanel-proxy.ted.com^ -||mixproxy.epoch.cloud^$domain=theepochtimes.com -||mktcs.cloudapps.cisco.com^ -||mo8it.com/count.js -||modanisa.com/al/j/analytics.js -||mollusk.apis.ign.com/metrics/ -||mon.us.tiktokv.com^ -||moneycontrol.com/news/services/get_comscore_pageview/ -||monitor.channel4.com^ -||motorsport.com/stat/ -||mov.t-mobile.com/p/js/1.js -||movetv.com/sa-events -||mp.theepochtimes.com^ -||mparticle.weather.com/identity/ -||mps.nbcuni.com/request/page/json/params/*&adunits=$xmlhttprequest -||mr.homedepot.ca^ -||msg-intl.qy.net^$image -||msn.com/collect/ -||msn.com/OneCollector/ -||mstm.motorsport.com^ -||myanimelist.net/static/logging.html -||mybbc-analytics.files.bbci.co.uk/reverb-client-js/smarttag- -||mylocal.co.uk/api/trpc/analytics. -||myspace.com/beacon/ -||n26-trusted.n26.com^ -||na.groupondata.com^ -||naiz.eus/visits -||namethatporn.com/assets/imgs/1x1.gif -||narkive.com/ajax/TelemV2? -||nasi.etherscan.com^ -||nature.com/platform/track/ -||naukrigulf.com/ni/nibms/bms_display.php -||navan.com/api/analytics -||nbarizona.com/metrics/ -||nbc.com/webevents/ -||nbcnews.com/_next/static/chunks/ads.$script,domain=msnbc.com|nbcnews.com -||ncbi.nlm.nih.gov/core/pinger -||neatorama.com/story/view/ -||neeva.com/logql/log -||neighbourly.co.nz/event-tracking -||neowin.net/ws/$websocket -||net.haier.com^ -||netflix.com/ichnaea/log -||netflix.com/msl/playapi/cadmium/logblob/ -||netu.ac/cdn-cgi/trace -||netuplayer.top/cdn-cgi/trace -||netusia.xyz/cdn-cgi/trace -||newegg.com/amber3/tracking -||newegg.com/gfplib.js -||news.google.com/_/v -||newscom.com/js/v2/ga.js -||newser.com/utility.aspx? -||newsmax.com/js/analytics.js -||newzit.com/setABframe.html -||nextdoor.*/ajax/ping_ndas/ -||nextdoor.com/events/ -||nflshop.com/api/track -||nid.thetimes.com/prod/sp/nid_sp.js -||nike.com/assets/measure/data-capture/ -||nimbusweb.me/gtlytics.js -||no9pldds1lmn3.soundcloud.com^ -||noblocktape.com/stat/ -||noodle.backmarket.io^ -||noodlemagazine.com/api/stats? -||nordace.com/track.js -||nordstrom.com/api/cake/ -||nordstrom.com/api/cupcake/ -||norton.com/service/norton/head? -||notion.so/api/v*/teV1 -||novanthealth.org/v1/tagular/beam -||novelcool.com/files/js/yh_tj.js -||ntvid.online/cdn-cgi/trace -||nyt.com/ads/tpc-check.html$domain=nytimes.com -||nytimes.com/v1/purr-cache -||nzpages.co.nz/modules/common/track.js -||observe.metarouter.io^ -||odysee.com/reports/ -||ohm-dot-hackster-io.appspot.com^ -||ok88okg.infinityscans.net^ -||oklink.com/jsstat/ -||okx.com/jsstat/sb? -||online-umwandeln.de/analytics.js -||ontraport.com/opt_assets/static/js/logging.js -||opendesktop.org/l/fp -||ophan.theguardian.com^ -||oppo.com/api/country -||optimizely.com/js/geo.js -||optimizely.techtarget.com^ -||oracle.com/visitorinfo/ -||oracleimg.com/us/assets/metrics/ora_docs.js -||outbound.io/v2/identify -||outbound.io/v2/track -||overstock.com/analytics/ -||overstock.com/dlp? -||ovyerus.com/js/script.js -||p.ctpost.com/article? -||p.hentaiforce.net^ -||p.lucida.to^ -||p.minds.com^ -||p.sfx.ms/is/invis.gif -||pac.thescottishsun.co.uk^ -||pac.thesun.co.uk^ -||pappagallu.onefootball.com^ -||pardot.com/pd.js -||paypal.com/credit-presentment/log -||paypal.com/platform/tealeaftarget -||pcgamesn.com/cdn-cgi/trace -||pcmag.com/js/ga.js -||pcmag.com/js/z0WVjCBSEeGLoxIxOQVEwQ.min.js -||pcp.coupert.com^ -||pendo.scopus.com/data/ptm.gif -||perf.mouser.com^ -||performance-logger.minted.com^ -||perr.hola.org^ -||petametrics.com^$domain=meidastouch.com -||pf.newegg.com^ -||pftk.temu.com^ -||ph.thenextweb.com^ -||phonearena.com/_track.php -||pikbest.com/?m=Stats& -||ping.hashnode.com^ -||ping.hungama.com^ -||pingback.giphy.com^ -||pingback.issuu.com^ -||pingo.staticmoly.me^ -||pinkvilla.com/comscore_response.php -||pixel.archive. -||pixel.archivecaslytosk.onion^ -||pixel.archiveiya74codqgiixo33q62qlrqtkgmcitqx5u2oeqnmn5bpcbiyd.onion^ -||pixel.convertize.io^ -||pixel.facebook.com^ -||pixel.honestjohn.co.uk^ -||pixel.ionos.com^ -||pixel.nine.com.au^ -||pixel.tuko.co.ke^ -||pixelzirkus.gameforge.com^ -||pixiedust.buzzfeed.com^ -||pks-analytics.raenonx.cc^ -||pl.letsblock.it^ -||plausible.bots.gg^ -||plausible.dragonfru.it^ -||plausible.omgapi.org^ -||plausible.safing.io^ -||plausible.tubemagic.com^ -||play.google.com/log -||player-cdn.com/cdn-cgi/trace -||player-telemetry.vimeo.com^ -||playvideohd.com/cdn-cgi/trace -||plenty.vidio.com^ -||plushd.bio/cdn-cgi/trace -||pm.dailykos.com^ -||pm.geniusmonkey.com^ -||pog.com^$ping -||poki.com/observer/ -||politico.com/resource/assets/js.min/video-tracking. -||poptropica.com/brain/track.php? -||pornbox.com/event/ -||pornbox.com/stats/ -||pornhublive.com/api/events -||pornhublive.com/api/metrics -||porzo.com/js/analytics -||prairiedog.hashnode.com^ -||pravda.com.ua/counter/ -||prescouter.com/pd.js -||priceline.com/pws/v1/ace/impression/ -||priceline.com/svcs/mkt/tag/ -||princetonreview.com/logging/ -||prisma.io/gastats.js -||priv.gc.ca/m/m.js -||privacy-api.9gag.com^ -||privacyfriendly.netlify.app^ -||privacypolicies.com/track/ -||prod-events.nykaa.com^ -||progressive.com/Log/ -||proporn.com/ajax/log/ -||pulpulyy.club/cdn-cgi/trace -||pulsar.ebay.com^ -||pulse.delta.com^ -||pumpkin.abine.com^ -||pushsquare.com/blank.gif -||px.srvcs.tumblr.com^ -||pxl.indeed.com^ -||qc.arstechnica.com^ -||qc.gq.com^ -||qc.newyorker.com^ -||qc.vanityfair.com^ -||qc.vogue.com^ -||qc.wired.com^ -||qm.redbull.com^ -||quibids.com/marketing/pixels/ -||quickmeme.com/tracker/ -||qwant.com/action/ -||qwant.com/impression/ -||qwant.com/maps/events -||qwant.com/v2/api/ux/surveys? -||qwerpdf.com/trk23/ -||r.3hentai.net^ -||r.apkpure.net^ -||r.bbci.co.uk^ -||raenonx.cc/api/analytics -||raenonx.cc/api/usage -||raindrop.io/pb/api/event -||rakuten.com/rmsgjs/soj2.js -||ranker.com/api/px -||ranker.com/api/tr? -||ranker.com/api/tracking/comscore -||rankhit.china.com^ -||ras.yahoo.com^ -||rbc.ua/enghits/ -||react-admin-telemetry.marmelab.com^ -||realitytvworld.com/images/pixel.gif -||rec.banggood.com^ -||reddit.com/static/pixel.png$image -||reddit.com/timings/ -||redditmedia.com/gtm/jail? -||redditstatic.com/accountmanager/sentry. -||redditstatic.com/shreddit/sentry- -||redfin.com/rift? -||redgifs.com/v2/metrics/ -||reelgood.com/v3.0/checkip -||reichelt.com/setsid.php? -||relay.fiverr.com^ -||reports.tunein.com^ -||researchgate.net/track/ -||reverbnation.com/api/user/app_events -||rfk.biglots.com^ -||rfk.dsw.com/api/init/1/init.js -||rgshows.me/js/logger.js -||rgshows.me/js/statistics.js -||ring.staticmoly.me^ -||risextube.com/t/ -||roblox.com/_/_/1px.gif -||roblox.com/report -||roblox.com/www/e.png? -||rome.api.flipkart.com/api/1/fdp -||rps-p2.rockpapershotgun.com^ -||rps-uk.rockpapershotgun.com^ -||rs.mail.ru^ -||rss-loader.com/track/ -||rstat.rockmostbet.com^ -||rt.newswire.ca^ -||rt.prnewswire.com^ -||rt.rakuten.co.jp^$~xmlhttprequest -||rta.dailymail.co.uk^ -||rta2.inews.co.uk^ -||rta2.metro.co.uk^ -||rta2.newzit.com^ -||rtds.progressive.com^ -||rum.api.intuit.com^ -||rum.condenastdigital.com^ -||rum.kobo.com^ -||rumble.com/l/ -||run.app/events$domain=imgur.com|worldstar.com|worldstarhiphop.com -||rv.modanisa.com^$script -||rvo-cohesion.healthline.com^ -||s.gofile.io^ -||s.infogram.com^ -||s.wayfair.com^ -||sa.uswitch.com^ -||saa.insideedition.com^ -||samsung.com/us/web/internal/logger -||sapphire-api.target.com^ -||sciencechannel.com/events/ -||scloud.online/stat/ -||scoot.co.uk/ajax/log_ -||search.anonymous.ads.brave.com^ -||search.aol.com/beacon/ -||search.brave.com/api/feedback$~third-party -||search.brave.com/serp/v1/static/serp-js/telemetry/ -||search.ch/audit/ -||searchenginejournal.com/xcs0MhRsfxHG.js -||searchiq.co/api/tr? -||secure.checkout.visa.com/logging/ -||seekingalpha.com/mone_event -||servo-report.dvdfab. -||sexu.com/api/events -||sexu.com/api/ttrack -||sexybabepics.net/re/?ping -||sf-syn.com/conversion_outbound_tracker$subdocument,domain=sourceforge.net -||sharesies.com/v1/identify -||sharesies.com/v1/track -||shavetape.cash/stat/ -||shazam.com/services/metrics/ -||shobiddak.com/logging/ -||shopifysvc.com/v1/metrics -||shopmetric.rediff.com^ -||siberiantimes.com/counter/ -||sid.nordstrom.com^ -||silvergames.com/div/g.php? -||simplelogin.io/p/api/event -||sjc.cloud.optable.co^ -||skyscanner.*/slipstream/view -||slack-edge.com/bv1-10/slack_beacon. -||slack.com/beacon/ -||slack.com/clog/track/ -||slant.co/js/track.min.js -||slashdot.org/country.js -||slashdot.org/images/js.gif -||slickdeals.net/ajax/stats/ -||slideshare.net/frontend_tracking/ -||slipstream.skyscanner.net^ -||smallpdf.com/build/track-js.js -||smartlink-api.amuse.io/api/analytics/ -||smassets.net/assets/anonweb/anonweb-click- -||smetrics.couponcabin.com^ -||smetrics.ralphlauren.com^ -||smutty.com/ajax/trcking/ -||snapchat.com/web/metrics -||sofire.terabox.app^ -||solvusoft.com^*/scripts/visitor.js -||soundcloud.com^$ping -||source.chromium.org/v1/logging -||sourcesync.io/analytics -||sp.cargurus.co.uk^ -||sp.ecosia.org^ -||sp.welcometothejungle.com^ -||spanishdict.com/page-view-metadata -||spectrum.gettyimages.com^ -||speed.cloudflare.com/__log -||sportsmansguide.com/scripts/vendor/at_ -||spotifycdn.com/cdn/js/retargeting-pixels. -||spt.ahram.org.eg^ -||squarespace.com/api/1/performance/ -||squirrel.malaynahocker.com^ -||srchoffer.com/tracking/ -||srtb.msn.com^ -||srv.plesk.com^ -||ss.photospecialist.co.uk^ -||sstats.adobe.com^ -||st.sawlive.tv^ -||stackoverflow.com/_/client-timings -||stackshare.io/analytics. -||stan.xing.com^ -||stapadblockuser.art/stat/ -||stapadblockuser.click/stat/ -||stapadblockuser.info/stat/ -||stapadblockuser.xyz/stat/ -||stape.fun/stat/ -||stapewithadblock.beauty/stat/ -||stapewithadblock.monster/stat/ -||stapewithadblock.xyz/stat/ -||starfiles.co/analytics.php -||startpage.com/sp/$ping -||startpage.com/sp/dplpxs? -||startpage.com/sp/jst -||starzplay.com/resources/js/analytics.js -||stat.pubhtml5.com^ -||stat.tildacdn.com^ -||stat.turb.pw^ -||stat.vulkanvegas.com^ -||statista.com/data/ptm.gif -||statistics.streamdav.com^ -||stats-jobstreet-sg-en-prod.supercharge-srp.co^$domain=jobstreet.com.sg -||stats.aerotime.aero^ -||stats.calcalist.co.il^ -||stats.codeur.com^ -||stats.davidickedelivery.com^ -||stats.gateio.ch^ -||stats.habr.com^ -||stats.ibtimes.co.in^ -||stats.ibtimes.sg^ -||stats.justpaste.it^ -||stats.mempool.space^ -||stats.newsweek.com^ -||stats.pstream.net^ -||stats.qwant.com^ -||stats.sandberg.world^ -||stats.searchftps.net^ -||stats.suenicholls.com^ -||stats.synedat.io^ -||stats.trimbles.ie^ -||stats.vk-portal.net^ -||stats.wordpress.com^ -||stats.wwitv.com^ -||stats2.mytuner.mobi^ -||statsegg.cdngeek.com^ -||stayz.com.au/cl/data/omgpixel.json -||strcdn.org/cdn-cgi/trace -||strcloud.in/stat/ -||streamadblocker.cc/stat/ -||streamadblocker.com/stat/ -||streamadblocker.store/stat/ -||streamadblocker.xyz/stat/ -||streamate.com/api/metrics -||streamed.su/api/preload -||streamelements.com/z/i.js -||streamlabs.com/web/data/ping -||streamnoads.com/stat/ -||streamstats.prd.dlive.tv^ -||streamta.pe/stat/ -||streamta.site/stat/ -||streamtape.cc/stat/ -||streamtape.com/stat/ -||streamtape.to/stat/ -||streamtape.xyz/stat/ -||streamtapeadblock.art/stat/ -||streamtapeadblockuser.art/stat/ -||streamtapeadblockuser.homes/stat/ -||streamtapeadblockuser.monster/stat/ -||streamtapeadblockuser.xyz/stat/ -||stripchat.com/pixel/ -||stripe.com/tracking/ -||strtape.cloud/stat/ -||strtapeadblock.club/stat/ -||strtapeadblocker.xyz/stat/ -||strtapewithadblock.art/stat/ -||strtapewithadblock.xyz/stat/ -||strtpe.link/stat/ -||stubhub.com/a/icph -||stytch.com/sdk/v1/events -||suaurl.com/adblock/js/smarttag.js -||support.github.com/_event -||support.github.com/_stats -||support.github.com/session/event -||support.github.com/session/user -||svc.eu01.miro.com/api/stream/ -||svc.us01.miro.com/api/stream/ -||swarm.video/stats/ -||szrpr.raen.com^ -||t.9gag.com^ -||t.airasia.com^ -||t.allmodern.com^ -||t.appsflyer.com^ -||t.av.st^ -||t.birchlane.com^ -||t.dailymail.co.uk^ -||t.deepnote.com^ -||t.freelancer.com^ -||t.imgur.com^ -||t.indeed.com^ -||t.ionos.com^ -||t.iwara.tv^ -||t.jossandmain.com^ -||t.kck.st^ -||t.nypost.com^ -||t.pagesix.com^ -||t.paypal.com^$image -||t.perigold.com^ -||t.poki.io^ -||t.regionsjob.com^ -||t.wayfair.ca^ -||t.wayfair.co.uk^ -||t.wayfair.com^ -||t.y8.com^ -||t.zulily.com^ -||t2.hulu.com^ -||t810.ctpost.com^ -||tagger.ope.scmp.com^ -||tagging.steelseries.com^ -||tags.air1.com^ -||tags.aljazeera.com^ -||tags.johnlewis.com^ -||tags.klove.com^ -||tags.news.com.au^$script -||tags.stepstone.com^ -||tahoe.com/imp -||taiwanplus.com/api/video/startVideo -||tao.barstoolsports.com^ -||tapeadsenjoyer.com/stat/ -||tapeantiads.com/stat/ -||tapeblocker.com/stat/ -||tapelovesads.org/stat/ -||tapenoads.com/stat/ -||tapewithadblock.com/stat/ -||tapewithadblock.org/stat/ -||taplytics-umami.grubhub.com^ -||target-us.samsung.com^ -||target.com/consumers/v1/ingest/web/eventstream? -||target.com/consumers/v1/ttms/events? -||target.com/rum_analytics/ -||target.com/telemetry_data/ -||target.nationwide.com^ -||target.nejm.org^ -||targeting.washpost.nile.works^ -||tarnkappe.info/matjC.js -||tc.geniusmonkey.com^ -||tccd.douglas. -||td.airdroid.com^ -||ted.dailymail.co.uk^ -||telegraph.prd.api.max.com^ -||telem.sre.gopuff.com^ -||telemetry.adobe.io^ -||telemetry.algolia.com^ -||telemetry.api.playstation.com^ -||telemetry.firez.one^ -||telemetry.stytch.com^ -||telemetry.tradingview.com^ -||tellerreport.com/react/pixel -||terabox.app/api/analytics? -||terabox.app/issue/terabox/ts_ad/ -||terabox.com/abdr? -||termsfeed.com/track/ -||test.torrentfreak.com^ -||tgt.maep.ibm.com^ -||theblock.co/api/analytics -||theconversation.com/javascripts/lib/content_tracker_hook.js -||thedailybeast.com/static/js/thirdparty. -||thefreedictionary.com/_/tr.ashx? -||thehackernews.com/zscripts/ -||theladders.com/api/user-tracking/ -||thesun.co.uk/assets/client/analyticsListeners~ -||thesun.co.uk/assets/client/newrelicExperimentTracking~ -||thesun.ie/track? -||thetimes.co.uk/track? -||thewindowsclub.com/wp-content/themes/genesis/lib/js/skip-links.min.js -||thisiswhyimbroke.com/api/user/gift-guide-thumbnail-homepage/tracking -||thisiswhyimbroke.com/api/user/tracking -||thriftbooks.com/scripts/sp.js -||thtk.temu.com^ -||tiendeo.*/_statsapi/ -||tif.ionos.com^ -||tiktok.com/captcha/report -||tiktok.com/ttwid/check/ -||tiktok.com/v1/list -||tiktok.com/web/report? -||tiktok.com/whale/ -||tiktokv.com/monitor_browser/ -||tiktokv.us/monitor_browser/ -||tilanalytics.timesinternet.in^ -||time.is/img/nod.png -||tms.delta.com/privacy/$image -||tms.eharmony.ca^ -||tms.hft.everyplate.com^ -||tms.hft.factor75.com^ -||tms.hft.greenchef.com^ -||tms.hft.hellofresh.com^ -||tnaflix.com/stats.php -||toms.com/*/FacebookCAPI-Event -||toms.com/*/PinterestCAPI-Event -||tongji-res.meizu.com^ -||top.gg/api/auctions/i -||top.wn.com^ -||totalcsgo.com/ctrack/ -||totaljobs.com/analytics/ -||totaljobs.com/chatbot/webhook/analytics -||totaljobs.com/chatbot/webhook/logger -||touch.myntra.com^ -||toyota.com/analytics/ -||tpcs.payu.in/pixelwithcookie.gif$domain=hindustantimes.com -||tr.clickstay.com^ -||tr.www.cloudflare.com^ -||tracemyip.org/vlg/ -||traceparts.com/logs -||track-visit.monday.com^ -||track.americansongwriter.com^ -||track.bestpornsites.tv^ -||track.dictionary.com^ -||track.eurogirlsescort.com^ -||track.kueez.com^ -||track.mrgugu.com^ -||track.netzero.net^ -||track.sodapdf.com^ -||track.thesaurus.com^ -||track.ttsave.app^ -||track.ultimate-guitar.com^ -||tracker.affiliate.iqbroker.com^ -||tracker.nbcuas.com^ -||tracker.ranker.com^ -||tracker.shopclues.com^ -||tracking.bloomberg.com^ -||tracking.carsales.com.au^ -||tracking.christianpost.com^ -||tracking.digitalocean.com^ -||tracking.engineering.cloud.seek.com.au^ -||tracking.game8.co^ -||tracking.hsn.com^ -||tracking.rocketleague.com^ -||tracking.shopstyle.co.uk^ -||tracking.shopstyle.com^ -||tracking.unrealengine.com^ -||trackr.vivenu.com^ -||tradingview.com/ping -||trck.coomeet.com^ -||trcksplt.miro.com^ -||treatment.grammarly.com^ -||tredir.go.com^ -||trends.privacywall.org^ -||tripadvisor.*/BALinkImpressionTracking/ -||tripadvisor.*/CookiePingback? -||tripadvisor.*/GARecord^ -||tripadvisor.*/MetricsAjax -||tripadvisor.*/wm/record -||tripcdn.com/bee/collect$domain=trip.com -||trivago.com/tracking/ -||trk.decido.io^ -||trk.tirto.id^ -||trumba.com/et.aspx? -||trx3.famousfix.com^ -||ts.delfi.lt^ -||tubepornstars.com/js/analytics -||tubi.io/datascience/logging? -||tubitv.com/oz/performance/ -||tumblr.com/pop/js/modern/sentry- -||tumblr.com/services/bblog -||tunein.com/api/v1/log/ -||tyler-brown.com/api/stats? -||typepad.com/t/stats? -||ua.indianexpress.com^ -||uber.com/_events -||uber.com/_track -||uber.com/careers/apply/_log -||ubereats.com/_errors -||ubereats.com/_events -||ubereats.com/_track -||ubt.tracking.shopee. -||ubuyanalytics.ubuy.com^ -||ucoz.com/stat/ -||ucweb.com/collect/ -||udemy.com/api-2.0/ecl -||ukdevilz.com/api/stats? -||ulogin.ru/stats.html -||ultimate-guitar.com/components/ab/event? -||ultimedia.com/deliver/statistiques/ -||um.contentstudio.io^ -||umami.wakarimasen.moe^ -||unity3d.com/v1/events -||unsplash.com/nmetrics -||untappd.com/profile/impression? -||upi.com/story/stat/ -||uprinting.com/muffins/UPTracker- -||ups.com/img/icp.gif -||upstract.com/tokei/ -||upwork.com/shasta/suit -||upwork.com/upi/jslogger -||urs.metacritic.com^ -||useblackbox.io/telemetry -||user-metrics.onthemarket.com^ -||usmetric.rediff.com^ -||usnews.com/static/esi/usn-geo.json -||uviu.com/activity/ -||v.adblockultimate.net^ -||v.ctrl.blog^ -||vagrantup.com/api/auth/_log -||vanityfair.com/user-context?referrer -||vf.startpage.com^ -||video.mobile.yahoo.com/log|$xmlhttprequest -||views.arabnews.com^ -||views.asurascans.com^ -||vimeo.com/ablincoln/ -||vimeocdn.com/js_opt/logging_combined.min.js -||visualstudio.com/v2/track -||vizcloud.co/ping/ -||vk.com/al_video.php?act=ads_stat -||vk.com/al_video.php?act=inc_view_counter -||vk.com/al_video.php?act=live_heartbeat -||vk.com/al_video.php?act=track_player_events -||vk.com/al_video.php?act=watch_stat -||vk.com/js/lib/px.js -||vortex.hulu.com^ -||vrbo.com/edap/elo/v1/event/beacon -||vrbo.com/serp/api/metrics -||vsco.co/api/cantor/track -||w3-reporting.reddit.com^ -||w6.chabad.org^ -||wa.childrensplace.com^ -||wa.gmx.co.uk^ -||wa.gymboree.com^ -||wa.pjplace.com^ -||wa.sugarandjade.com^ -||waaw.ac/cdn-cgi/trace -||waaw.to/cdn-cgi/trace -||waaw1.tv/cdn-cgi/trace -||waitrose.com/gDaVC7/ -||wal.wolfram.com^ -||walmart.ca/api/bsp/logger -||walmart.ca/api/home-page/logger -||walmart.ca/api/landing-page/beacon-logger -||walmartimages.com/dfw/4ff9c6c9-d9a0/$domain=walmart.com -||wapn1.flosports.tv^ -||wattpad.com/js/tracker/app. -||wc.yahoodns.net^$image -||wccftech.com/cnt7vfDVvWa3.js -||web.snapchat.com/web-analytics-v2/web/events -||web.whatsapp.com/wam -||webd-assets.cdn4dd.com/s.js$domain=doordash.com -||weblog.flyasiana.com^ -||webmd.com/static/v/c? -||weedmaps.com/pixel? -||wellsfargo.com/as/jsLog -||wellsfargo.com/dti_apg/ -||wellsfargo.com/jenny/ -||wellsfargo.com/tracking/ -||wfinterface.com/tracking/$domain=wellsfargo.com -||wh.ipaddress.com^ -||whattomine.com/stats -||wheregoes.com/api/event -||whistleout.com.au/track -||wikihow.com/x/collect? -||wikimonde.com/matom.js -||wikipedia.org/beacon/ -||windy.com/sedlina/ga/ -||wipo.int/wipo-analytics/ -||wish.com/api/analytics/ -||wiztube.xyz/cdn-cgi/trace -||wnyc.org/analytics/ -||wolfram.com/common/javascript/analytics.js -||wolfram.com/common/javascript/wal/ -||wondershare.com/trk -||worldremit.com/web-cms/api/metric -||wsj.com/cookies/pixel.gif -||wstats.e-wok.tv^ -||www.ebay.*/gh/dfpsvc? -||x.com/1.1/attribution -||x.com/1.1/jot -||x.com/9/measurement/ -||x.com/i/api/1.1/jot -||x.com/i/csp_report -||x.com/i/jot -||x.com^*/log.json -||xero.com/api/events/ -||xfinity.com/event/ -||xhamster.com/api/$ping -||xhamsterlive.com/pixel/ -||xhcdn.com/js/*.track.min.js -||xing.com/logjam/ -||xnxx.com/picserror/ -||xp-qa.apple.com/report/2/xp_amp_web_error_log -||xp-qa.apple.com/report/2/xp_amp_web_perf_log -||xvideos.com/picserror/ -||xxf.mobi/hit -||ya.ru/clck/ -||yahoo.com/_td_api/beacon/ -||yahoo.com/beacon/ -||yahoo.com/beacon? -||yahoo.com/pageview? -||yahoo.net/pixel.gif -||yandex.*/clck/$~ping -||yandex.*/count/ -||yandex.com/clck/ -||yandex.eu/clck/ -||yandex.ru/clck/ -||yandexcdn.com/cdn-cgi/trace -||yelp.*/sit_rep -||yelp.com/ad_acknowledgment -||yelp.com/ad_syndication_user_tracking -||yelp.com/spice? -||yimg.com/aaq/wf/wf-darla- -||you.com/api/recordEvent -||youjizzlive.com/api/metrics -||youmaker.com/g/test -||yourupload.com/jwe? -||youtube-nocookie.com/api/stats/atr? -||youtube-nocookie.com/api/stats/delayplay? -||youtube-nocookie.com/api/stats/qoe? -||youtube-nocookie.com/ptracking? -||youtube-nocookie.com/robots.txt? -||youtube-nocookie.com/youtubei/v1/log_event? -||youtube.com/api/stats/ads? -||youtube.com/api/stats/delayplay? -||youtube.com/api/stats/qoe? -||youtube.com/get_video? -||youtube.com/pcs/activeview? -||youtube.com/ptracking? -||youtube.com/set_awesome? -||youtube.com/youtubei/v1/log_event? -||youtube.googleapis.com/youtubei/v1/log_event? -||youtubekids.com/api/stats/ads? -||youtubekids.com/api/stats/qoe? -||youtubekids.com/ptracking? -||youtubekids.com/youtubei/v1/log_event? -||z.cdp-dev.cnn.com^ -||z737.thestar.com^ -||za.qeeq.com^ -||zappos.com/err.cgi? -||zappos.com/karakoram/js/main. -||zenimpact.io/dist/zen_init.min.js -||zerohedge.com/statistics-ajax? -||zillowstatic.com/contact-pixel/$image,domain=zillow.com -||zion-telemetry-nonprod.api.cnn.io^ -||zion-telemetry.api.cnn.io^ -||zoosk.com/cs/tp.png? -! OpenTable -://track.opentable. -! Vinted -://www.vinted.*/relay/events -! akamaihd.net -||akamaihd.net^$image,domain=globalnews.ca|nycgo.com|stcatharinesstandard.ca -! Non-legit domains -||edge-client^$script,domain=barrons.com -! Plausible selfhosted -||jeremiahlee.com/fanboynz.js -! confection.io -||hubspot.com/collected-forms/$xmlhttprequest,domain=confection.io -||s3.amazonaws.com/downloads.mailchimp.com/$script,domain=confection.io -||substation.confection.io^ -! Adobe -||lightning.ncaa.com/launch/$script -! onesignal.com -||onesignal.com^$domain=androidauthority.com|iphoneincanada.ca|rockpapershotgun.com|senpa.io|shineads.org -! Bing -||bing.com/fd/ls/l?IG= -||bing.com/fd/ls/lsp.aspx -||bing.com^*/glinkping.aspx$ping,xmlhttprequest -||bing.com^*/GLinkPingPost.aspx$ping,xmlhttprequest -! Site specific elements (due to EP) -###cxense-recs-in-article -##.embed-responsive-trendmd -! Aliexpress -||aliyuncs.com/r.png -||gj.mmstat.com^ -||oneid.mmstat.com^ -! Port scanning Fingerprinting Trackers (Privacy and CPU abuse) -! https://nullsweep.com/why-is-this-website-port-scanning-me/ -/^https?:\/\/fdts\.ebay-kleinanzeigen\.de\/[a-z0-9]{13,18}\.js\?/$script,domain=kleinanzeigen.de -/^https?:\/\/pov\.spectrum\.net\/[a-zA-Z0-9]{14,}\.js/$script,domain=spectrum.net -/^https?:\/\/tjmaxx\.tjx\.com\/libraries\/[a-z0-9]{20,}/$script,xmlhttprequest,domain=tjx.com -/^https?:\/\/tmx\.(td|tdbank)\.com\/[a-z0-9]{14,18}\.js.*/$script,domain=mbna.ca|td.com|tdbank.com -/^https?:\/\/www\.ebay-kleinanzeigen\.de\/[a-z0-9]{8}\-[0-9a-f]{4}\-/$script,domain=kleinanzeigen.de -/^https?:\/\/www\.kroger\.com\/content\/{20,}/$script,xmlhttprequest,domain=kroger.com -||127.0.0.1^$third-party,domain=53.com|ameriprise.com|beachbody.com|chick-fil-a.com|citi.com|ebay.at|ebay.be|ebay.ca|ebay.ch|ebay.cn|ebay.co.uk|ebay.com|ebay.com.au|ebay.com.hk|ebay.com.my|ebay.com.sg|ebay.de|ebay.es|ebay.fr|ebay.ie|ebay.it|ebay.nl|ebay.ph|ebay.pl|equifax.ca|equifax.com|globo.com|gumtree.com|kleinanzeigen.de|lendup.com|mbna.ca|rusneb.ru|sciencedirect.com|sky.com|spectrum.net|td.com|tiaa.org|vedacheck.com|wepay.com|whatleaks.com -||cfa.fidelity.com^ -||citi.com^*/fp.js -||citibank.com.ph/JSO/js/fp.js -||citibank.com.ph/tmx/js/ -||citibank.com.sg/jso/js/fp.js -||citibank.com.sg/tmx/ -||clear.wallapop.com^ -||content22.bmo.com^ -||content22.citi.eu^$script -||content22.citibank.com.au^ -||content22.citibank.com.sg^$script -||content22.citibankonline.com^ -||content22.online.citi.com^ -||customer.homedepot.com^$script -||drfdisvc.walmart.com^ -||ebay.com/nkfytkqtoxtljvzbxhr.js$script,domain=ebay.com -||ebaystatic.com/rs/v/10341xh50yz21mhhydueu4m5wad.js -||ebaystatic.com/rs/v/dxtuvtkk2q3hpkc1xveeo13iaek.js -||ebaystatic.com/rs/v/klminxoj1uyzvo0p0qu4nhpg0qo.js -||ebaystatic.com/rs/v/s0hteylevy4bpkd12dvkd4yi5ms.js -||event.evtm.53.com^ -||idstatus.sky.com^ -||imgs.signifyd.com^ -||mfasa.chase.com/auth/js/jpmc_bb_check.js -||olacontent.schwab.com^$script -||qfp.intuit.com^ -||rba-screen.healthsafe-id.com^ -||rsx.afterpay.com^ -||src.ebay-us.com/*=usllpic$script,domain=ebay.com -||svc2.sc.com^ -||tm-eps.neutrino.nu^ -||tmetrix.my.chick-fil-a.com^ -||tmx.bestbuy.com^ -||tmx.td.com^ -||u47.pnc.com^ -||w-profiling.cibc.com^$script -||w-profiling.simplii.com^ -! Fingerprint -||bankofamerica.com/cookie-id.js -||bup.bankofamerica.com^ -||cdn1.skrill.com^ -||d276.ourmidland.com^ -||d810.mysanantonio.com^ -||dii.bankaust.com.au^ -||eventbus.intuit.com^ -||f775.thehour.com^ -||h353.ncadvertiser.com^ -||h559.stamfordadvocate.com^ -||halifax-online.co.uk/scripts/16c9d93d/ -||j198.registercitizen.com^ -||l936.expressnews.com^ -||o398.trumbulltimes.com^ -||pf.intuit.com^ -||q777.sfchronicle.com^ -||rail.bankofamerica.com^$script,~third-party,xmlhttprequest -||sofa.bankofamerica.com^ -||t570.wiltonbulletin.com^ -||tilt.bankofamerica.com^ -||u652.myplainview.com^ -||u927.sfgate.com^ -||w740.newstimes.com^ -||y738.nhregister.com^ -||y820.darientimes.com^ -||y900.greenwichtime.com^ -||z211.yourconroenews.com^ -||z492.ctinsider.com^ -||z680.beaumontenterprise.com^ -||zion.qbo.intuit.com^ -! Consent/GDPR tracking -! https://github.com/easylist/easylist/blob/08ad3ed93e8ddbc32b8860340f25e8ddf4074741/easyprivacy/easyprivacy_specific.txt#L2813 -://a02342. -||cb-mms.carbuyer.co.uk^ -||cmp.courrierinternational.com^ -||cmp.finn.no^ -||cmp.huffingtonpost.fr^ -||cmp.lavie.fr^ -||cmp.lemonde.fr^ -||cmp.lepoint.fr^ -||cmp.netzwelt.de^ -||cmp.nouvelobs.com^ -||cmp.tech426.com^ -||cmp.tek.no^ -||cmp.telerama.fr^ -||d.sourcepoint.capitalfm.com^ -||fuse.forbes.com^ -||h-bid.com^$third-party -||sourcepoint-mms.aetv.com^ -||sourcepoint-mms.history.com^ -||sourcepoint-mms.mylifetime.com^ -||trustarc.mgr.consensu.org/get? -||vg247-p2.vg247.com^ -||vg247-uk.vg247.com^ -! McClatchy sites (bellinghamherald.com,bnd.com,bradenton.com,centredaily.com etc) -! https://github.com/easylist/easylist/blob/4ec8049213fd2ede4682f1760764ae79cda7cc55/easyprivacy/easyprivacy_specific.txt#L1067 -/misites/* -/yozons-lib/* -! CSP Mining -$csp=child-src 'none'; frame-src 'self' *; worker-src 'none',domain=fileone.tv|theappguruz.com -$csp=child-src 'none'; frame-src *; worker-src 'none',domain=thepiratebay.org|vidoza.net - -! *** easylist:easyprivacy/easyprivacy_specific_perimeterx.txt *** -||alaskaair.com/AlXMT4Ma/init.js -||anthropologie.com/XgWM9nuH/init.js -||apartmenttherapy.com/jAYekY18/init.js -||arcteryx.com/943r4Fb8/init.js -||asda.com/px/PX1UGLZTko/init.js -||ashleyfurniture.com/ouqLB4fq/init.js -||auctionzip.com/eKtvxkQ2/init.js -||b.px-cdn.net/api/v1/PXrf8vapwA/ -||bathandbodyworks.com/lsXlyYa5/init.js -||beaumontenterprise.com/413gkwMT/init.js -||belk.com/0iiey9LM/init.js -||bhphotovideo.com/3D8mkYG1/init.js -||bloomberg.com/8FCGYgk4/init.js -||bm.paypal.com/spd3TxHV/init.js -||booking.com/87sduif98q3rijax -||booktopia.com.au/Ns7aBMIv/init.js -||brownsshoes.com/IZ/2tcS0qiG/init.js -||build.com/2Ztkihy4/init.js -||calm.com/api/12Xk43jk/init.js -||calvinklein.us/n8ANl15k/init.js -||carbon38.com/A44kxi5a/init.js -||careermatch.com/oGckki0e/init.js -||carolsdaughter.com/IZ/uaPO0cuk/init.js -||carters.com/0F3091f3/init.js -||chron.com/413gkwMT/init.js -||couchsurfing.com/bEcn7fQX/init.js -||crunchbase.com/rw7M6iAV/init.js -||ctinsider.com/413gkwMT/init.js -||ctpost.com/413gkwMT/init.js -||discount.hk-hotel.com/QUkd4lO9/init.js -||drupal.org/VnPBBfwe/init.js -||expressnews.com/413gkwMT/init.js -||fiverr.com/px/client/PXK3bezZfO/main.min.js -||flixcart.com/px/gNtTli3A/init.js -||flooranddecor.com/v1HqbVho/init.js -||foodora.fi/lJuB4eTB/init.js -||foodora.se/lJuB4eTB/init.js -||foodpanda.bg/lJuB4eTB/init.js -||foodpanda.co.th/lJuB4eTB/init.js -||foodpanda.com.bd/lJuB4eTB/init.js -||foodpanda.com.kh/lJuB4eTB/init.js -||foodpanda.com.mm/lJuB4eTB/init.js -||foodpanda.com.tw/lJuB4eTB/init.js -||foodpanda.hk/lJuB4eTB/init.js -||foodpanda.la/lJuB4eTB/init.js -||foodpanda.my/lJuB4eTB/init.js -||foodpanda.ph/lJuB4eTB/init.js -||foodpanda.pk/lJuB4eTB/init.js -||foodpanda.ro/lJuB4eTB/init.js -||foodpanda.sg/lJuB4eTB/init.js -||freepeople.com/tN88Q85M/init.js -||hotpads.com/xOR1K5b6/init.js -||houstonchronicle.com/413gkwMT/init.js -||iherb.com/VtidNbtC/init.js -||internships.com/oGckki0e/init.js -||jimmyjohns.com/Abo2Yc8X/init.js -||joann.com/qXTWmr91/init.js -||kerastase-usa.com/IZ/PXXiuO7QTJ/init.js -||kget.com/CvbtpUrj/init.js -||kickstarter.com/Uy3R669N/init.js -||kiehls.com/IZ/PXG8ATFja1/init.js -||kiva.org/r3pNVz1F/init.js -||ktla.com/CvbtpUrj/init.js -||lancome-usa.com/IZ/PXq99AlOxk/init.js -||lmtonline.com/413gkwMT/init.js -||madlan.co.il/o4wPDYYd/init.js -||middletownpress.com/413gkwMT/init.js -||mrt.com/413gkwMT/init.js -||mysanantonio.com/413gkwMT/init.js -||ncadvertiser.com/413gkwMT/init.js -||newsnationnow.com/yZuPxxW0/init.js -||newstimes.com/413gkwMT/init.js -||nhregister.com/413gkwMT/init.js -||nyxcosmetics.com/IZ/PXLZNv2dn4/init.js -||octopart.com/kdRQnL15/init.js -||oshkosh.com/0F3091f3/init.js -||priceline.com/9aTjSd0n/init.js -||ralphlauren.com^*/init.js -||realtor.com/rdc_user_check/init.js -||registercitizen.com/413gkwMT/init.js -||sams.com.mx/px/PX87wpO5aK/init.js -||samsclub.com/px/PXsLC3j22K/init.js -||seattlepi.com/413gkwMT/init.js -||seekingalpha.com/xgCxM9By/init.js -||sensor.grubhub.com/O97ybH4J/init.js -||sfchronicle.com/413gkwMT/init.js -||sfgate.com/413gkwMT/init.js -||shiekh.com/iJ55yhVs/init.js -||shoebacca.com/YaRJwC0q/init.js -||simon.com/46SCNLxs/init.js -||skechers.com/dL6GOSf9/init.js -||skiphop.com/0F3091f3/init.js -||skyscanner.*/rf8vapwA/init.js -||snipesusa.com/6XNN2xkk/init.js -||spirit.com/kp4CLSb5/init.js -||ssense.com/58Asv359/init.js -||stamfordadvocate.com/413gkwMT/init.js -||stockx.com/16uD0kOF/init.js -||streeteasy.com/cZdhF737/init.js -||studeersnel.nl/27m703Hm/init.js -||studocu.com/27m703Hm/init.js -||sweetwater.com/p2TBVNJZ/init.js -||thehill.com/6zcfGH4h/init.js -||thehour.com/413gkwMT/init.js -||thekitchn.com/jAYekY18/init.js -||therealreal.com/ev56mY37/init.js -||timesunion.com/413gkwMT/init.js -||tumi.com/4i06uv8M/init.js -||walmart.ca/px/PXnp9B16Cq/init.js -||walmart.com/px/PXu6b0qd2S/init.js -||walmartcanada.ca/px/PXcfrcFEfA/init.js -||walmartcareerswithamission.com/px/PXcfrcFEfA/init.js -||walmartethics.com/px/PXcfrcFEfA/init.js -||walmartpetrx.com/1Ct9c6G3/init.js -||walmartrealty.com/px/PXcfrcFEfA/init.js -||wfla.com/CvbtpUrj/init.js -||wgno.com/CvbtpUrj/init.js -||whois.com/js/gtmDataLayer.js -||wine-searcher.com/K6S8okp3/init.js -||worthpoint.com/lIUjcOwl/init.js -||www.digikey.*/lO2Z493J/init.js -||www.mouser.*/4UAZUiaI/init.js -||zazzle.ca/botdefender/init.js -||zazzle.ca/svc/px -||zazzle.co.nz/botdefender/init.js -||zazzle.co.nz/svc/px -||zazzle.co.uk/botdefender/init.js -||zazzle.co.uk/svc/px -||zazzle.com.au/botdefender/init.js -||zazzle.com.au/svc/px -||zazzle.com/botdefender/init.js -||zazzle.com/svc/px -||zazzle.de/botdefender/init.js -||zazzle.de/svc/px -||zazzle.es/botdefender/init.js -||zazzle.es/svc/px -||zazzle.fr/botdefender/init.js -||zazzle.fr/svc/px -||zillow.com/HYx10rg3/init.js -||zoominfo.com/osx7m0dx/init.js -!-----------------Extension specific systems-----------------! -! *** easylist:easyprivacy/easyprivacy_specific_uBO.txt *** -!#if ext_ublock - -! https://github.com/AdguardTeam/AdguardFilters/issues/180750 -||pcoptimizedsettings.com/wp-content/plugins/koko-analytics/$script,redirect=noop.js,important -||pcoptimizedsettings.com/wp-content/uploads/breeze/google/gtag.js$script,redirect=noop.js,important -! GPC -weather.com,ubereats.com##+js(set, Navigator.prototype.globalPrivacyControl, false) -weather.com,ubereats.com##+js(set, navigator.globalPrivacyControl, false) -! chartbeat.js redirect -||static.chartbeat.com/js/chartbeat_mab.js$script,redirect=chartbeat.js -||static.chartbeat.com/js/chartbeat.js$script,redirect=chartbeat.js -! Admiral popups -247sports.com,androidpolice.com,bringmethenews.com,mensjournal.com,arstechnica.com,audizine.com,blackenterprise.com,boston.com,britannica.com,cattime.com,cbr.com,cheatsheet.com,collider.com,comingsoon.net,cwtv.com,dogtime.com,esportstales.com,forums.hfboards.com,freep.com,fresnobee.com,gamerant.com,gbatemp.net,golfdigest.com,grabify.link,hancinema.net,hemmings.com,howtogeek.com,ijr.com,informazionefiscale.it,inquirer.net,insider-gaming.com,knowyourmeme.com,magesypro.pro,makeuseof.com,money.it,motorbiscuit.com,movieweb.com,nationalreview.com,nbcnews.com,neopets.com,nofilmschool.com,nypost.com,omg.blog,order-order.com,playstationlifestyle.net,pwinsider.com,savvytime.com,screenrant.com,siliconera.com,simpleflying.com,sporcle.com,stealthoptional.com,techlicious.com,technicpack.net,thedraftnetwork.com,thefashionspot.com,thegamer.com,thenerdstash.com,titantv.com,topspeed.com,twinfinite.net,videogamer.com,wnd.com,worldpopulationreview.com,wral.com,wrestlezone.com,wrestlinginc.com,xda-developers.com##+js(acs, document.createElement, admiral) -thegatewaypundit.com##+js(acs, document.createElement, googletag) -gbatemp.net##+js(set, admiral, noopFunc) -androidpolice.com,billboard.com,brobible.com,cbr.com,cbsnews.com,collider.com,destructoid.com,dualshockers.com,gamerant.com,givemesport.com,lehighvalleylive.com,lonestarlive.com,mensjournal.com,nypost.com,qtoptens.com,screenrant.com,si.com,thegamer.com,thenerdstash.com,thestreet.com,simpleflying.com,stealthoptional.com,variety.com##+js(abort-on-property-read, googletag) -abc17news.com,adoredbyalex.com,agrodigital.com,al.com,aliontherunblog.com,allaboutthetea.com,allmovie.com,allmusic.com,allthingsthrifty.com,amessagewithabottle.com,androidpolice.com,antyradio.pl,artforum.com,artnews.com,awkward.com,awkwardmom.com,bailiwickexpress.com,barnsleychronicle.com,becomingpeculiar.com,bethcakes.com,blogher.com,bluegraygal.com,briefeguru.de,carmagazine.co.uk,cattime.com,cbr.com,cbssports.com,chaptercheats.com,cleveland.com,collider.com,comingsoon.net,commercialobserver.com,competentedigitale.ro,crafty.house,dailyvoice.com,decider.com,didyouknowfacts.com,dogtime.com,dualshockers.com,dustyoldthing.com,faithhub.net,femestella.com,footwearnews.com,freeconvert.com,frogsandsnailsandpuppydogtail.com,fsm-media.com,funtasticlife.com,fwmadebycarli.com,gamerant.com,gfinityesports.com,givemesport.com,gulflive.com,helloflo.com,homeglowdesign.com,honeygirlsworld.com,hotcars.com,howtogeek.com,insider-gaming.com,insurancejournal.com,jasminemaria.com,kion546.com,lehighvalleylive.com,lettyskitchen.com,lifeinleggings.com,liveandletsfly.com,lizzieinlace.com,localnews8.com,lonestarlive.com,madeeveryday.com,maidenhead-advertiser.co.uk,makeuseof.com,mardomreport.net,masslive.com,melangery.com,milestomemories.com,mlive.com,modernmom.com,momtastic.com,mostlymorgan.com,motherwellmag.com,movieweb.com,muddybootsanddiamonds.com,musicfeeds.com.au,nationalreview.com,nj.com,nordot.app,nothingbutnewcastle.com,nsjonline.com,nypost.com,oakvillenews.org,observer.com,oregonlive.com,pagesix.com,pennlive.com,pinkonthecheek.com,predic.ro,puckermom.com,qtoptens.com,realgm.com,robbreport.com,royalmailchat.co.uk,samchui.com,sandrarose.com,screenrant.com,sheknows.com,sherdog.com,sidereel.com,silive.com,simpleflying.com,sloughexpress.co.uk,spacenews.com,sportsgamblingpodcast.com,spotofteadesigns.com,stacysrandomthoughts.com,ssnewstelegram.com,superherohype.com,syracuse.com,tablelifeblog.com,thebeautysection.com,thecelticblog.com,thecurvyfashionista.com,thefashionspot.com,thegamer.com,thegamescabin.com,thenerdyme.com,thenonconsumeradvocate.com,theprudentgarden.com,thethings.com,timesnews.net,topspeed.com,toyotaklub.org.pl,travelingformiles.com,tutsnode.org,tvline.com##+js(rmnt, script, '"v4ac1eiZr0"') -baeldung.com,cheatsheet.com,pwinsider.com##+js(rmnt, script, admiral) -usatoday.com##+js(set, gnt.x.adm, '') -! anikore.jp -anikore.jp##html[class^="loading"]:style(visibility: visible !important;) -! fedex.com -fedex.com##+js(set-local-storage-item, fdx_enable_new_detail_page, true) -! mweb.jp -mwed.jp##+js(acs, document.createElement, keen-tracking) -! nicovideo.jp -nicovideo.jp##+js(no-fetch-if, stella) -nicovideo.jp##+js(no-xhr-if, stella) -!#if cap_html_filtering -abema.tv##^script:has-text(NREUM) -!#else -abema.tv##+js(rmnt, script, NREUM) -!#endif -://coomer.su^$xhr,method=patch|post -://kemono.su^$xhr,method=patch|post -@@/^https:\/\/coomer\.su\/api\/v1\/(?:fansly|onlyfans)\/user\/[-.0-9A-Z_a-z]+\/post\/[-0-9A-Za-z]+(?:\/flag)?$/$xhr,1p,match-case,method=post -@@/^https:\/\/coomer\.su\/api\/v1\/favorites\/creator\/(?:fansly|onlyfans)\/[-.0-9A-Z_a-z]+$/$xhr,1p,match-case,method=post -@@/^https:\/\/coomer\.su\/api\/v1\/favorites\/post\/(?:fansly|onlyfans)\/[-.0-9A-Z_a-z]+\/\d+$/$xhr,1p,match-case,method=post -@@/^https:\/\/kemono\.su\/api\/v1\/(?:afdian|boosty|discord|dlsite|fan(?:box|tia)|gumroad|onlyfans|patreon|subscribestar)\/user\/[-.0-9A-Z_a-z]+\/post\/[-0-9A-Za-z]+(?:\/flag)?$/$xhr,1p,match-case,method=post -@@/^https:\/\/kemono\.su\/api\/v1\/favorites\/creator\/(?:afdian|boosty|discord|dlsite|fan(?:box|tia)|gumroad|onlyfans|patreon|subscribestar)\/[-.0-9A-Z_a-z]+$/$xhr,1p,match-case,method=post -@@/^https:\/\/kemono\.su\/api\/v1\/favorites\/post\/(?:afdian|boosty|discord|dlsite|fan(?:box|tia)|gumroad|onlyfans|patreon|subscribestar)\/[-.0-9A-Z_a-z]+\/[0-9A-Za-z]+$/$xhr,1p,match-case,method=post -@@||coomer.su/.well-known/ddos-guard/mark/| -@@||kemono.su/.well-known/ddos-guard/mark/| -! phileweb.com -||clarity.ms/tag/$script,domain=phileweb.com,important -phileweb.com##+js(set-attr, span[class] img.lazyload[width], src, [data-src]) -! e-begin.jp -e-begin.jp##.inviewSection:not(.is-show):style(transform: translateY(0) !important; opacity: 1 !important;) - -! EOF -!#endif -!-----------------Individual cname tracking systems-----------------! -! *** easylist:easyprivacy/easyprivacy_specific_cname_dataunlocker.txt *** -||0d8is908gby1.www.terraform.com.ar^ -||11b6n4ty2x3.taxliencode.com^ -||13js1lbtbj3.sparkloop.app^ -||16i6nuuc2ej.koelewijn.nl^ -||1a715b8q5m3j.www.logology.co^ -||1amehwchx31.bloxdhop.io^ -||1baq2nvd6n7.www.keevowallet.com^ -||1bpmtrvkqkj.pettoonies.com^ -||1bw7etm93lf.www.woodbrass.com^ -||1eusy6.boxoffice.adventuretix.com^ -||1hb4jkt1u2d.probemas.com^ -||1j2n061x3td.www.digi.no^ -||1k5vz1ejbcx.staging.probemas.com^ -||1kpv4njzilv.community.intersystems.com^ -||1vyt1eguj27.ommasign.com^ -||21fhq0t574p.talentkit.io^ -||21udflra4wd.app-dev.cainthus.com^ -||25ix8gm8ien.sandbox.panprices.com^ -||2829i2p88jx.www.csaladinet.hu^ -||2922qj5tf2n.swyftx.com.au^ -||2aa6f9qgrh9.acc.evservice.nl^ -||2e718yf5jypb.test.digitalsurge.io^ -||2rid9fii9chx.www.atlaslane.com^ -||2yqcaqbfnv.nextgen.shareablee.com^ -||3l0zszdzjhpw.www.comicleaks.com^ -||3wn3w3skxpym.round.t3.gg^ -||48z7wyjdsywu.www.revistaferramental.com.br^ -||4jaehnfqizyx.controlconceptsusa.com^ -||5jgwflo4y935b8udrp.www.pmn-nerez.cz^ -||5mc92su06suu.www.abhijith.page^ -||6nwp0r33a71m.app.dev.cardahealth.com^ -||6ynyejkv0j1s.app.tapmyback.com^ -||704g8xh7qfzx.www.intercity.technology^ -||76zvoxo5yx0l.www.eldorado.gg^ -||771fnypadw0j.pt.themoneytizer.com^ -||78rkcgj4i8c6.www.cefirates.com^ -||7hdl8dlfjm4g.www.cybernetman.com^ -||7mvmjg.www.emanualonline.com^ -||8e0905osvgw5.taleez.com^ -||8ehhtsv9bo7i.monkeylearn.com^ -||8ue4rp6yxyis.www.tapmyback.com^ -||8vwxqg.tapin.gg^ -||9b5gjkrnw71r.it.themoneytizer.com^ -||9kkjfywjz50v.www.eventus.io^ -||9l3cr6dvk2kb.adaptive.marketing^ -||9uim1pc4ej4n.ru.themoneytizer.com^ -||9ywl0cwf7e37m5yi.tapin.gg^ -||ac9kpxbans1l.staging.unstoppabledomains.com^ -||am3s622gcd6m.tt.live^ -||av6fm8zw2cvz.furucombo.app^ -||b1tow9h4erpw.anur.polymerdev.com^ -||b20p6lt350nt.app.polymersearch.com^ -||b536mpmxoqxa.www.themoneytizer.com^ -||b5j6itccyluq.nofluffjobs.com^ -||cqsecshf4rd9.www.tracktheta.com^ -||cqz6fn6aox.aporia.com^ -||cy98g9wuwn0n.angularjs.poc.glenigan.com^ -||dsoxjxin5jji.controlconceptsusa.com^ -||dwdlpqm6d4ra.test1.emanualonline.com^ -||e5obq1v261.www.lurkit.com^ -||f02b61sgc617.es.themoneytizer.com^ -||fkupm8697t19.eyevolution.de^ -||fq9vy0muyqi3.www.madrigalmaps.com^ -||fyznhp8inq9x.jaywilsonwebsolutions.com^ -||gl5g98t0vfjb.panprices.com^ -||gvmomuqjv1.swyftx.com^ -||hht8m6w8mnug.quine.sh^ -||ilkk97e98lvg.www.sidsplumbing.ie^ -||ivrnfvlcgubm.www.cefirates.com^ -||iwl2d7pa4yx1.www.logology.co^ -||ixa9ill0f7bg.grundbuch.zentraler-antragsservice.com^ -||jii3gnhro.www.emanualonline.com^ -||jiktq0fr9hv6.meleton.ru^ -||kn81kivjwwc7.www.logology.co^ -||li3k4d70ig52.resourceya.com^ -||lj5s1u8ct5vz.app.chatpay.dev^ -||lofo3l15c674.platform.replai.io^ -||lv6od3a4sz12.www.logology.co^ -||m4zoxtrcea1k.controlconceptsusa.com^ -||m6c4t9vmqarj.www.cefirates.com^ -||mh9qqwotr890.koelewijn.nl^ -||mteme7li1d6r.vertexmarketingagency.com^ -||n367tqpdxce0.quine.sh^ -||n4kb43cl2bsw.creatordrop.com^ -||nqyuel589fq5.esgrounding.com^ -||ns3w1qrlbk4s.tip.etip-staging.etip.io^ -||o3gxzoewxl1x.cp.zomro.com^ -||os270ojwwxtg.gameflow.tv^ -||otx23nu6rzon.prep.toppers.com^ -||p7h1silo3f.app.cainthus.com^ -||q4l5gz6lqog6.www.eventus.io^ -||qnlbs2m0uoto.www.videoath.com^ -||qqeuq1cmoooq.accuretawealth.com^ -||qri2r94eeajr.innovationcast.com^ -||qt5jl7r111h7.allesvoormijnvakantie.nl^ -||rbat6ac0zzjd.www.terraform.com.ar^ -||rgb9uinh2dej9ri.jacobzhang.de^ -||ros3d4dbs3px.salud-masculina.info^ -||s2whyufxmzam.chatpay.com.br^ -||soahu1wnmt6l.www.replai.io^ -||sr59t7wbx5.claricelin.com^ -||swaljol72dgv.controlconceptsusa.com^ -||sxwxswg8z1xe.www.arnowebtv.com^ -||t7baxp1xmw00.boxoffice.adventuretix.com^ -||ti3av8k3ikwm.resume.gerardbosch.xyz^ -||tnincvf1d1jl.de.themoneytizer.com^ -||tutbc1.www.tapmyback.com^ -||tzgurwizule3.app.cardahealth.com^ -||u0crsrah75fy.camberlion.com^ -||uhd5nn09mgml.fort-shop.kiev.ua^ -||umylynsr9b.quira.sh^ -||ut19suycy9vt.nowyformat.nofluffjobs.com^ -||vyz3nn85ed0e.controlconceptsusa.com^ -||vzal21mooz.hyperwrite.ai^ -||w38ju82bano4.cv.gerardbosch.xyz^ -||wayyaj8t094u.www.kodalia.com^ -||wiar9wff0ma9.ping.t3.gg^ -||xlvvy4msxr.coolinastore.com^ -||y4e04gql5o1b.www.nookgaming.com^ -||yrjpgjv35y9x.salud-masculina.info^ -||ysrrzgku6tar.us.themoneytizer.com^ -||z3617cz9ep.fitness.tappbrothers.com^ -||zkmhhr1fr79z.dictionary.basabali.org^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_a8net.txt *** -||1909a8.satofull.jp^ -||a8-22.hana-yume.net^ -||a8-affiliate.kase3535.com^ -||a8-cv.lean-body.jp^ -||a8-hoiku.mama-9jin.com^ -||a8-itp.qoo10.jp^ -||a8-kouten.kouten.work^ -||a8-mamacareer.mama-9jin.com^ -||a8-wpxblog.secure.wpx.ne.jp^ -||a8-wpxshin.secure.wpx.ne.jp^ -||a8-xshop.secure.xserver.ne.jp^ -||a8.01cloud.jp^ -||a8.123.rheos.jp^ -||a8.2ndstreet.jp^ -||a8.abemashopping.jp^ -||a8.ablenet.jp^ -||a8.aga-hakata.com^ -||a8.ahcswiss.com^ -||a8.air-snet.com^ -||a8.aliceandolivia.jp^ -||a8.ama-mail.jp^ -||a8.amairo-sky.com^ -||a8.andethic.com^ -||a8.anipos.com^ -||a8.arrrt-shop.com^ -||a8.asdf.co.jp^ -||a8.au-hikarinet.com^ -||a8.avalon-works.com^ -||a8.b-cafe.net^ -||a8.bambi-craft.com^ -||a8.bandel.jp^ -||a8.banninkun.com^ -||a8.beerowle.com^ -||a8.benro.jp^ -||a8.big-hikari.com^ -||a8.biglobe.openplat.jp^ -||a8.biz.ne.jp^ -||a8.biziphone.com^ -||a8.bobby-jp.com^ -||a8.boco.co.jp^ -||a8.bon-quish.jp^ -||a8.bousui-pro.com^ -||a8.brandcosme.com^ -||a8.brandkaimasu.com^ -||a8.bridal-hills.com^ -||a8.buddyup.shop^ -||a8.buvlabo.com^ -||a8.calmia-clinic.com^ -||a8.careecen-shukatsu-agent.com^ -||a8.career.rexit.co.jp^ -||a8.careerpark.jp^ -||a8.casie.jp^ -||a8.cbd-cosme.jp^ -||a8.cbd-oil.jp^ -||a8.cbiz.io^ -||a8.centarc.com^ -||a8.chat-lady.jp^ -||a8.chiyo-moni.com^ -||a8.choomia.com^ -||a8.chuo-estate.net^ -||a8.clarah.jp^ -||a8.classicalelf.shop^ -||a8.clubgets.com^ -||a8.cocomeister.jp^ -||a8.coloria.jp^ -||a8.copyki-pr.com^ -||a8.cotta.jp^ -||a8.creativevillage.ne.jp^ -||a8.croaster-select.com^ -||a8.cucua.fun^ -||a8.cyclemarket.jp^ -||a8.cypris-online.jp^ -||a8.daredemomobile.com^ -||a8.de-limmo.jp^ -||a8.degicashop.com^ -||a8.denki-koji.work^ -||a8.denki-tatsujin.com^ -||a8.denwa-hikari.com^ -||a8.denwa-kaisen.jp^ -||a8.denwa-kanyuken.com^ -||a8.diakaimasu.jp^ -||a8.direia-to.net^ -||a8.doctorstretch.com^ -||a8.dolcibolle.com^ -||a8.drinco.jp^ -||a8.dstation.jp^ -||a8.dymtech.jp^ -||a8.earth-shiho.com^ -||a8.earthwater-cayenne.com^ -||a8.efax.co.jp^ -||a8.elife.clinic^ -||a8.emeao.jp^ -||a8.emestore.me^ -||a8.engineer-shukatu.jp^ -||a8.eonet.jp^ -||a8.eonet.ne.jp^ -||a8.epauler.co.jp^ -||a8.epo.info^ -||a8.erasutamo.onlinestaff.jp^ -||a8.everest.ac^ -||a8.evertrust-inc.com^ -||a8.exam-katekyo.com^ -||a8.exetime.jp^ -||a8.exwimax.jp^ -||a8.final-seo.jp^ -||a8.fishing-v.jp^ -||a8.fit-theme.com^ -||a8.foods.petokoto.com^ -||a8.form.run^ -||a8.fots.jp^ -||a8.fpo.bz^ -||a8.fracora.com^ -||a8.freeconsultant.btcagent.jp^ -||a8.freeengineer.btcagent.jp^ -||a8.ftcbeauty.com^ -||a8.fujiorganics.com^ -||a8.fxism.jp^ -||a8.gaizyu-taiji.com^ -||a8.geo-online.co.jp^ -||a8.global-mobility-service.com^ -||a8.gme.co.jp^ -||a8.golfland.co.jp^ -||a8.goodappeal.site^ -||a8.gtm.co.jp^ -||a8.guardian-mp.aerial-p.com^ -||a8.h-daiya.co.jp^ -||a8.hagent.jp^ -||a8.hakata-hisamatsu.net^ -||a8.hana-mail.jp^ -||a8.happy-card.jp^ -||a8.haptic.co.jp^ -||a8.healthyolive.com^ -||a8.heart-denpo.com^ -||a8.hemptouch.co.jp^ -||a8.hikari-flets.jp^ -||a8.hikari-n.jp^ -||a8.hikari-softbank.jp^ -||a8.hikarix.net^ -||a8.hitohana.tokyo^ -||a8.hitoma-tuhan.com^ -||a8.hoken-connect.com^ -||a8.hokengarden.com^ -||a8.hokkaido-nb.jp^ -||a8.i-netservice.net^ -||a8.i-staff.jp^ -||a8.idiy.biz^ -||a8.ihinnoseiriyasan.com^ -||a8.iisakafuji.online^ -||a8.ikkatsu.jp^ -||a8.industrial-branch.com^ -||a8.infinitussub.com^ -||a8.ippin-do.com^ -||a8.jiiawater.com^ -||a8.joygirl.jp^ -||a8.joylab.jp^ -||a8.joyvack.com^ -||a8.jp.peacebird.com^ -||a8.kajitaku.com^ -||a8.kami2323.com^ -||a8.kanbei.jp^ -||a8.kateikyoushi.kuraveil.jp^ -||a8.kddi-hikari.com^ -||a8.kekkon.kuraveil.jp^ -||a8.kimonomachi.co.jp^ -||a8.kinkaimasu.jp^ -||a8.kinkennet.jp^ -||a8.kinnikushokudo-ec.jp^ -||a8.kireisalone.style^ -||a8.kireiyu.com^ -||a8.kissmusic.net^ -||a8.kizuna-link.jp^ -||a8.kland.shop^ -||a8.knew.jp^ -||a8.kojyo-worker.com^ -||a8.kotei-denwa.com^ -||a8.kougu-kaitoriyasan.com^ -||a8.kujo-service.com^ -||a8.l-co-shop.jp^ -||a8.labiotte.jp^ -||a8.lacitashop.com^ -||a8.lalala-clean.com^ -||a8.lantelno.jp^ -||a8.lat-international.com^ -||a8.lavie-official.jp^ -||a8.learning.agaroot.jp^ -||a8.lens-labo.com^ -||a8.lens-ocean.com^ -||a8.liver-rhythm.jp^ -||a8.looom.jp^ -||a8.looop-denki.com^ -||a8.lwa-coating.com^ -||a8.lyprimo.jp^ -||a8.machino-housecleaning.com^ -||a8.maf.mentor-capital.jp^ -||a8.makeshop.jp^ -||a8.mamacosme.co.jp^ -||a8.mamaworks.jp^ -||a8.manara.jp^ -||a8.medireanetshopoi.com^ -||a8.migxl.com^ -||a8.minion-wifi.com^ -||a8.mira-feel.com^ -||a8.miror.jp^ -||a8.mishii-list.com^ -||a8.misshajp.com^ -||a8.mm-digitalsales.academy^ -||a8.mochu.jp^ -||a8.mogurun.com^ -||a8.moku.info^ -||a8.mosh.jp^ -||a8.musbell.co.jp^ -||a8.n-pri.jp^ -||a8.nachurabo.com^ -||a8.nanafu.tokyo^ -||a8.narikiri.me^ -||a8.nengahonpo.com^ -||a8.nengajyo.co.jp^ -||a8.neur.jp^ -||a8.next-hikari.jp^ -||a8.nezumi-guard.com^ -||a8.nezumi-kanzentaiji.com^ -||a8.nosh.jp^ -||a8.novicetokyo.com^ -||a8.o-tayori.com^ -||a8.obihiro-butaichi.jp^ -||a8.ocnk.net^ -||a8.okamotogroup.com^ -||a8.olightstore.jp^ -||a8.onamae.com^ -||a8.onecoinenglish.com^ -||a8.ones-ones.jp^ -||a8.otoku-line.jp^ -||a8.otonayaki.com^ -||a8.outline-gym.com^ -||a8.papapa.baby^ -||a8.parcys.com^ -||a8.pcnext.shop^ -||a8.pcwrap.com^ -||a8.petfood.mtflat.co.jp^ -||a8.pla-cole.wedding^ -||a8.pocket-m.jp^ -||a8.polyglots.net^ -||a8.princess-jp.com^ -||a8.print-netsquare.com^ -||a8.projectee.online^ -||a8.rank-quest.jp^ -||a8.recmount-plus.com^ -||a8.remobiz.jp^ -||a8.renkindo.com^ -||a8.ricafrosh.com^ -||a8.ringbell.co.jp^ -||a8.rinshosiken.com^ -||a8.route-roller.info^ -||a8.runway-harmonia.co.jp^ -||a8.ryugaku.kuraveil.jp^ -||a8.sakemuseum.com^ -||a8.sakuramobile.jp^ -||a8.sakuratravel.jp^ -||a8.sara-uv.com^ -||a8.schecon.com^ -||a8.seifu-ac.jp^ -||a8.seminarshelf.com^ -||a8.sennendo.jp^ -||a8.sharefull.com^ -||a8.shikaketegami.com^ -||a8.shikigaku.jp^ -||a8.shinnihonjisyo.co.jp^ -||a8.shitsukekun.com^ -||a8.shizq.store^ -||a8.shokubun.net^ -||a8.shop.basefood.co.jp^ -||a8.shop.km-link.jp^ -||a8.shop.nicosuma.com^ -||a8.shop.tsukijiwadatsumi.com^ -||a8.shopserve.jp^ -||a8.shukatsu-note.com^ -||a8.sibody.tw^ -||a8.skr-labo.jp^ -||a8.smart-onepage.com^ -||a8.smp.shanon.co.jp^ -||a8.snapmaker.jp^ -||a8.soelu.com^ -||a8.softbank-hikari.jp^ -||a8.sommelier.gift^ -||a8.sp-hoken.net^ -||a8.speever.jp^ -||a8.ssl.aispr.jp^ -||a8.st.oddspark.com^ -||a8.store.aceservice.jp^ -||a8.store.goo.ne.jp^ -||a8.strapya.com^ -||a8.sui-so.com^ -||a8.suma-sapo.net^ -||a8.sumai-planet.com^ -||a8.sumilena.co.jp^ -||a8.tabechoku.com^ -||a8.tailorenglish.jp^ -||a8.tapp-co.jp^ -||a8.taylormadegolf.jp^ -||a8.tcha-tcha-japan.com^ -||a8.tea-lab.co.jp^ -||a8.tecgate.jp^ -||a8.tech-base.net^ -||a8.techis.jp^ -||a8.tecpartners.jp^ -||a8.teddyworks.co.jp^ -||a8.the-session.jp^ -||a8.themoonmilk.jp^ -||a8.thermostand.jp^ -||a8.thg.co.jp^ -||a8.tideisturning.com^ -||a8.tokihana.net^ -||a8.tokyo-hills-clinic.com^ -||a8.tone.ne.jp^ -||a8.toraiz.jp^ -||a8.tour-sys.com^ -||a8.tour.jtrip.co.jp^ -||a8.track.entry.dokoyorimo.com^ -||a8.triple-m.jp^ -||a8.tscubic.com^ -||a8.uchi-iwai.net^ -||a8.uchideno-kozuchi.com^ -||a8.uluwatutiger.com^ -||a8.unicoffee.tech^ -||a8.uridoki.net^ -||a8.uzuz-college.jp^ -||a8.vector-park.jp^ -||a8.vinew.jp^ -||a8.virus-gekitai.com^ -||a8.volstar.jp^ -||a8.vtuber.sexy^ -||a8.watero.pet^ -||a8.web-hikari.net^ -||a8.webdeki.com^ -||a8.webist-cri.com^ -||a8.wemotion.co.jp^ -||a8.wifi-fami.com^ -||a8.wifi-tokyo-rentalshop.com^ -||a8.wifi.erasutamo.onlinestaff.jp^ -||a8.willcloud.jp^ -||a8.williesenglish.jp^ -||a8.wizrecruitment.012grp.co.jp^ -||a8.woodlife.jp^ -||a8.worldikids.com^ -||a8.ws.job.career-tasu.jp^ -||a8.www.keurig.jp^ -||a8.www.melonbooks.co.jp^ -||a8.www.nicosuma.com^ -||a8.www.retrospect.co.jp^ -||a8.www.seesaa.co.jp^ -||a8.www.smart-factor.co.jp^ -||a8.xn--google-873exa8m6161dbbyb.net^ -||a8.xn--y8jd4aybzqd.jp^ -||a8.yakumatch.com^ -||a8.yanoman.com^ -||a8.yayoi-kk.co.jp^ -||a8.yellmall.jp^ -||a8.yumejin.jp^ -||a8.yuzen-official.com^ -||a8.zen-camps.com^ -||a8.zeroku.jp^ -||a8.zipan.jp^ -||a8.zzz-land.com^ -||a802.xn--38jf6c4pa86a1dv833cexrb.com^ -||a803.xn--38jf6c4pa86a1dv833cexrb.com^ -||a8affiliate.liftup-turban.net^ -||a8aspconv.itx-home-router.com^ -||a8aspconv.nn-com.co.jp^ -||a8aspconv.ns-air.net^ -||a8aspconv.ns-softbank-hikari.com^ -||a8aspconv.xn--auso-net-h53gmnzi.com^ -||a8aspconv.xn--bgm-os4bt98xxicx4fqs5c8e8agvq.com^ -||a8aspconv.xn--biglobe-kc9k.com^ -||a8aspconv.xn--ipv6-yn4cxgwe959zqrkp58g.com^ -||a8aspconv.xn--ocn-ws1e.jp^ -||a8atcomsme.mellife.jp^ -||a8clic.alcosystem.co.jp^ -||a8click.daini2.co.jp^ -||a8click.you-up.com^ -||a8click.young-mobile.net^ -||a8clk.011330.jp^ -||a8clk.1osechi.com^ -||a8clk.292957.jp^ -||a8clk.9factor.com^ -||a8clk.account.matsui.co.jp^ -||a8clk.adeliv.treasure-f.com^ -||a8clk.adventkk.co.jp^ -||a8clk.afi1.emanon-sharesalon.com^ -||a8clk.aipo.com^ -||a8clk.alljewelry.jp^ -||a8clk.ambientlounge.co.jp^ -||a8clk.amelia.ne.jp^ -||a8clk.ancar.jp^ -||a8clk.ands-tech.com^ -||a8clk.angeliebe.co.jp^ -||a8clk.aoki-style.com^ -||a8clk.ap.livede55.com^ -||a8clk.app.offerbox.jp^ -||a8clk.apply-shop.menu.inc^ -||a8clk.asahi-net.or.jp^ -||a8clk.ashitarunrun.com^ -||a8clk.asp.jcity.co.jp^ -||a8clk.assecli.com^ -||a8clk.ato-barai.com^ -||a8clk.audiobook.jp^ -||a8clk.autoc-one.jp^ -||a8clk.bang.co.jp^ -||a8clk.beauteq.jp^ -||a8clk.bikeman.jp^ -||a8clk.biken-mall.com^ -||a8clk.biomarche.jp^ -||a8clk.birai-cm.com^ -||a8clk.biz-communication.jp^ -||a8clk.bizworkers.jp^ -||a8clk.booking.jetfi.jp^ -||a8clk.bresmile.jp^ -||a8clk.bungeisha.co.jp^ -||a8clk.buy-master.com^ -||a8clk.buyking.club^ -||a8clk.camerakaitori.jp^ -||a8clk.campaigns.speed-kaitori.jp^ -||a8clk.car-mo.jp^ -||a8clk.carbattery110.com^ -||a8clk.career.prismy.jp^ -||a8clk.carenessapp.lifekarte.com^ -||a8clk.cart.amahada.com^ -||a8clk.cart.co-heart.com^ -||a8clk.cart.dr-vegefru.com^ -||a8clk.cart.ordersupli.com^ -||a8clk.cart.raku-uru.jp^ -||a8clk.cd.ecostorecom.jp^ -||a8clk.cev.macchialabel.com^ -||a8clk.chance.com^ -||a8clk.chapup.jp^ -||a8clk.chat-wifi.site^ -||a8clk.checkout.leafee.me^ -||a8clk.chibakan-yachiyo.net^ -||a8clk.chuko-truck.com^ -||a8clk.cleaneo.jp^ -||a8clk.cocorotherapy.com^ -||a8clk.colone.cc^ -||a8clk.coreda.jp^ -||a8clk.cp.favorina.com^ -||a8clk.cp.formalklein.com^ -||a8clk.crefus.com^ -||a8clk.crowdworks.jp^ -||a8clk.cs.machi-ene.jp^ -||a8clk.cv.dreamsv.jp^ -||a8clk.cv.geechs-job.com^ -||a8clk.cv.hanaravi.jp^ -||a8clk.cv.kenkouichiba.com^ -||a8clk.cv.kihada.jp^ -||a8clk.cv.mensfashion.cc^ -||a8clk.cv.onedenki.jp^ -||a8clk.cv.only-story.jp^ -||a8clk.cv.shop.resalon.co.jp^ -||a8clk.cv.syukatsu-kaigi.jp^ -||a8clk.cv.t-fic.co.jp^ -||a8clk.cv.warau.jp^ -||a8clk.cv.yanuk.jp^ -||a8clk.d.toyo-case.co.jp^ -||a8clk.dfashion.docomo.ne.jp^ -||a8clk.digicafe.jp^ -||a8clk.doda.jp^ -||a8clk.dospara.co.jp^ -||a8clk.dr-10.com^ -||a8clk.dr-40.com^ -||a8clk.dr-8.com^ -||a8clk.driver-island.com^ -||a8clk.e-ninniku.jp^ -||a8clk.ec.halmek.co.jp^ -||a8clk.ec.oreno.co.jp^ -||a8clk.ectool.jp^ -||a8clk.englead.jp^ -||a8clk.es.akyrise.jp^ -||a8clk.ex-wifi.jp^ -||a8clk.excellence-aoyama.com^ -||a8clk.famm.us^ -||a8clk.fastsim.jp^ -||a8clk.fc-mado.com^ -||a8clk.fido-co.com^ -||a8clk.firadis.net^ -||a8clk.for-customer.com^ -||a8clk.form.coached.jp^ -||a8clk.formal.cariru.jp^ -||a8clk.formasp.jp^ -||a8clk.francfranc.com^ -||a8clk.fromcocoro.com^ -||a8clk.fujisan.co.jp^ -||a8clk.fuku-chan.jp^ -||a8clk.funds.jp^ -||a8clk.geo-arekore.jp^ -||a8clk.global-crown.com^ -||a8clk.globalbase.jp^ -||a8clk.golf-kace.com^ -||a8clk.grandg.com^ -||a8clk.grirose.jp^ -||a8clk.gurutas.jp^ -||a8clk.guruyaku.jp^ -||a8clk.hags-ec.com^ -||a8clk.hikakaku.com^ -||a8clk.hikarinobe.com^ -||a8clk.hoiku.fine.me^ -||a8clk.hoken-minaoshi-lab.jp^ -||a8clk.hokennews.jp^ -||a8clk.hom.adebtt.info^ -||a8clk.hotman-onlineshop.com^ -||a8clk.hozon.sp-site.jp^ -||a8clk.hurugicom.jp^ -||a8clk.ias.il24.net^ -||a8clk.inakakon.jp^ -||a8clk.info2.sunbridge.com^ -||a8clk.jaf.or.jp^ -||a8clk.janiking.jp^ -||a8clk.jlp-shop.jp^ -||a8clk.jobspring.jp^ -||a8clk.joggo.me^ -||a8clk.joppy.jp^ -||a8clk.just-buy.jp^ -||a8clk.justfitoffice.com^ -||a8clk.justy-consul.com^ -||a8clk.ka-shimo.com^ -||a8clk.kaitori-beerecords.jp^ -||a8clk.kaitori-janiyard.jp^ -||a8clk.kaitori-retrog.jp^ -||a8clk.kaitori-toretoku.jp^ -||a8clk.kaitori-yamatokukimono.jp^ -||a8clk.kaitori.kind.co.jp^ -||a8clk.kaitoriyasan.group^ -||a8clk.kake-barai.com^ -||a8clk.kanagawa-zero.com^ -||a8clk.kenkoukazoku.co.jp^ -||a8clk.kihada.jp^ -||a8clk.komochikon.jp^ -||a8clk.kyoto-health.co.jp^ -||a8clk.kyoyu-mochibun.com^ -||a8clk.label-seal-print.com^ -||a8clk.lasana.co.jp^ -||a8clk.laundry-out.jp^ -||a8clk.lens-1.jp^ -||a8clk.libinc.jp^ -||a8clk.life.bang.co.jp^ -||a8clk.lolipop.jp^ -||a8clk.loungemembers.com^ -||a8clk.low-ya.com^ -||a8clk.lp.yuyu-kenko.co.jp^ -||a8clk.ma-platform.com^ -||a8clk.macchialabel.com^ -||a8clk.macpaw.com^ -||a8clk.manabiz.jp^ -||a8clk.manage.conoha.jp^ -||a8clk.mapple-tour.com^ -||a8clk.marche.onward.co.jp^ -||a8clk.mat.duskin-hozumi.co.jp^ -||a8clk.meister-coating.com^ -||a8clk.mens-mr.jp^ -||a8clk.mens-rinx.jp^ -||a8clk.merry.duskin-hozumi.co.jp^ -||a8clk.miidas.jp^ -||a8clk.minnadeooyasan.com^ -||a8clk.mirrorball-recurit.emanon-sharesalon.com^ -||a8clk.mobile-norikae.com^ -||a8clk.mop.duskin-hozumi.co.jp^ -||a8clk.moriichi-net.co.jp^ -||a8clk.mouse-jp.co.jp^ -||a8clk.moving.a-tm.co.jp^ -||a8clk.mutukistyle.com^ -||a8clk.muumuu-domain.com^ -||a8clk.mynavi-creator.jp^ -||a8clk.mynavi-job20s.jp^ -||a8clk.mypage.awesome-wash.com^ -||a8clk.nandemo-kimono.com^ -||a8clk.nenga-kazoku.com^ -||a8clk.nenga.fumiiro.jp^ -||a8clk.netowl.jp^ -||a8clk.nikkoudou-kottou.com^ -||a8clk.nissen.co.jp^ -||a8clk.nobirun.jp^ -||a8clk.nta.co.jp^ -||a8clk.nyandaful.jp^ -||a8clk.okamoto-homelife.com^ -||a8clk.okawa-god.jp^ -||a8clk.okuta.com^ -||a8clk.olulu-online.jp^ -||a8clk.onemile.jp^ -||a8clk.only-story.jp^ -||a8clk.order-box.net^ -||a8clk.order.banana-wifi.com^ -||a8clk.order.lpio.jp^ -||a8clk.orders.bon-book.jp^ -||a8clk.osoujihonpo.com^ -||a8clk.owners-age.com^ -||a8clk.p-bandai.jp^ -||a8clk.pages.supporterz.jp^ -||a8clk.patpat.com^ -||a8clk.petelect.jp^ -||a8clk.petitjob.jp^ -||a8clk.photorevo.info^ -||a8clk.plusone.space^ -||a8clk.point-island.com^ -||a8clk.point-land.net^ -||a8clk.point-museum.com^ -||a8clk.point-stadium.com^ -||a8clk.psd.jp^ -||a8clk.purekon.jp^ -||a8clk.qracian365.com^ -||a8clk.radianne.jp^ -||a8clk.rarejob.com^ -||a8clk.rdlp.jp^ -||a8clk.recycle-net.jp^ -||a8clk.rei-book.com^ -||a8clk.rental.geo-online.co.jp^ -||a8clk.reserve.retty.me^ -||a8clk.resortbaito-dive.com^ -||a8clk.rf28.com^ -||a8clk.risou.com^ -||a8clk.satei-meijin.com^ -||a8clk.secure.freee.co.jp^ -||a8clk.secure.jetboy.jp^ -||a8clk.segatoys.com^ -||a8clk.service.ridera-inc.com^ -||a8clk.shadoten.com^ -||a8clk.shareboss.net^ -||a8clk.shikaku-square.com^ -||a8clk.shinnihon-seminar.com^ -||a8clk.shoes.regal.co.jp^ -||a8clk.shokutakubin.com^ -||a8clk.shop.echigofuton.jp^ -||a8clk.shop.kitamura.jp^ -||a8clk.shop.saraya.com^ -||a8clk.shop.shareme.jp^ -||a8clk.shop.sunsorit.co.jp^ -||a8clk.shop.tanita.co.jp^ -||a8clk.sikatoru.com^ -||a8clk.siro.duskin-hozumi.co.jp^ -||a8clk.sirtuinbooster.net^ -||a8clk.sixcore.ne.jp^ -||a8clk.skima.jp^ -||a8clk.skynet-c.jp^ -||a8clk.skyoffice.info^ -||a8clk.sma-ene.jp^ -||a8clk.smart-keiri.com^ -||a8clk.smile-zemi.jp^ -||a8clk.sohbi-company.com^ -||a8clk.solideajapan.com^ -||a8clk.speedcoaching.co.jp^ -||a8clk.staff.mynavi.jp^ -||a8clk.star-mall.net^ -||a8clk.starwifi.jp^ -||a8clk.store.kadokawa.co.jp^ -||a8clk.store.mago-ch.com^ -||a8clk.stylestore.jp^ -||a8clk.suguchoku.jp^ -||a8clk.sumafuri.jp^ -||a8clk.support-hoiku.com^ -||a8clk.supreme-noi.jp^ -||a8clk.sure-i.co.jp^ -||a8clk.t-fic.co.jp^ -||a8clk.taisho-beauty.jp^ -||a8clk.takken-job.com^ -||a8clk.takuhai.daichi-m.co.jp^ -||a8clk.tamiyashop.jp^ -||a8clk.tanp.jp^ -||a8clk.tastytable-food.com^ -||a8clk.teacon.jp^ -||a8clk.titivate.jp^ -||a8clk.toretoku.jp^ -||a8clk.tsuchiya-kaban.jp^ -||a8clk.tsunorice.com^ -||a8clk.uchinotoypoo.jp^ -||a8clk.unihertz.com^ -||a8clk.unionspo.com^ -||a8clk.ur-s.me^ -||a8clk.uzu.team^ -||a8clk.videocash.tv^ -||a8clk.voice-inc.co.jp^ -||a8clk.waq-online.com^ -||a8clk.web-camp.io^ -||a8clk.wedding.294p.com^ -||a8clk.weleda.jp^ -||a8clk.wi-ho.net^ -||a8clk.works.sagooo.com^ -||a8clk.world-family.co.jp^ -||a8clk.wpx.ne.jp^ -||a8clk.www.access-jp.jp^ -||a8clk.www.autoway.jp^ -||a8clk.www.big-m-one.com^ -||a8clk.www.cledepeau-beaute.com^ -||a8clk.www.clip-studio.com^ -||a8clk.www.daiohs.com^ -||a8clk.www.doicoffee.com^ -||a8clk.www.duskin-chiyoda.com^ -||a8clk.www.duskin-hozumi.co.jp^ -||a8clk.www.duskin-hozumi.jp^ -||a8clk.www.e87.com^ -||a8clk.www.fitnessshop.jp^ -||a8clk.www.flierinc.com^ -||a8clk.www.gaihekitosou-partners.jp^ -||a8clk.www.green-dog.com^ -||a8clk.www.italki.com^ -||a8clk.www.jaf.or.jp^ -||a8clk.www.just-size.net^ -||a8clk.www.ka-nabell.com^ -||a8clk.www.khaki.jp^ -||a8clk.www.netage.ne.jp^ -||a8clk.www.nortonstore.jp^ -||a8clk.www.oms.energy-itsol.com^ -||a8clk.www.rebo-success.co.jp^ -||a8clk.www.solar-partners.jp^ -||a8clk.www.solarmonitorlp.energy-itsol.com^ -||a8clk.www.uz.team^ -||a8clk.www.workport.co.jp^ -||a8clk.www.xebiocard.co.jp^ -||a8clk.www.zwei.com^ -||a8clk.xn--t8jx01hmvbgye566gd1f.com^ -||a8clk.xserver.ne.jp^ -||a8clk.y-station.net^ -||a8clk.ykd.co.jp^ -||a8clk.yourmystar.jp^ -||a8clk.yu-en.com^ -||a8clk.yubisashi.com^ -||a8clk.yumeyakata.com^ -||a8clk.ziaco.eco-life.tokyo^ -||a8clk.zigen-shop.com^ -||a8clk1.zkai.co.jp^ -||a8clkapply.mycredit.nexuscard.co.jp^ -||a8clkcv.lognavi.com^ -||a8clkcv.tcb-beauty.net^ -||a8cllk.arahataen.com^ -||a8cname.cloudwifi-nc.com^ -||a8cname.nj-e.jp^ -||a8cnv.rmsbeauty.jp^ -||a8cv.012grp.co.jp^ -||a8cv.03plus.net^ -||a8cv.1-class.jp^ -||a8cv.1sbc.com^ -||a8cv.464981.com^ -||a8cv.489pro.com^ -||a8cv.550909.com^ -||a8cv.a-resort.jp^ -||a8cv.a-ru-ku.co.jp^ -||a8cv.a-satei.com^ -||a8cv.accelfacter.co.jp^ -||a8cv.access-jp.jp^ -||a8cv.aff.life-110.com^ -||a8cv.aiambeauty.jp^ -||a8cv.akapon.kanritools.com^ -||a8cv.akihabara-x.jp^ -||a8cv.akippa.com^ -||a8cv.al-on.com^ -||a8cv.all-plan.co.jp^ -||a8cv.all24.jp^ -||a8cv.alvo.co.jp^ -||a8cv.amiami.jp^ -||a8cv.anapnet.com^ -||a8cv.androsophybaby.com^ -||a8cv.ans-ec.shop^ -||a8cv.aplod.jp^ -||a8cv.aquasilver.co.jp^ -||a8cv.araiba.net^ -||a8cv.atami-box.com^ -||a8cv.atgp.jp^ -||a8cv.auhikari-bykddi.com^ -||a8cv.b-concept.tokyo^ -||a8cv.b-noix.jp^ -||a8cv.babybjorn.jp^ -||a8cv.bag-repair.pro^ -||a8cv.baku-art.jp^ -||a8cv.balanslab.jp^ -||a8cv.bb-internet-qsyu.net^ -||a8cv.bbt757.com^ -||a8cv.be-slim-spbikyou.com^ -||a8cv.beaming.jp^ -||a8cv.bellcosme.com^ -||a8cv.bellevie-inc.co.jp^ -||a8cv.bettysbeauty.jp^ -||a8cv.beyondvape.jp^ -||a8cv.biken-mall.jp^ -||a8cv.biz-maps.com^ -||a8cv.bizcircle.jp^ -||a8cv.bizcomfort.jp^ -||a8cv.bloomonline.jp^ -||a8cv.bonaventura.shop^ -||a8cv.borderfree-official.com^ -||a8cv.brandeuse.jp^ -||a8cv.brandnet.info^ -||a8cv.bresmile.jp^ -||a8cv.bright-app.com^ -||a8cv.broadbandservice.jp^ -||a8cv.bugsfarm.jp^ -||a8cv.bulk.co.jp^ -||a8cv.busbookmark.jp^ -||a8cv.c-hikari.biz^ -||a8cv.ca-rent.jp^ -||a8cv.cacom.jp^ -||a8cv.calotore.com^ -||a8cv.career.medpeer.jp^ -||a8cv.careerpark-agent.jp^ -||a8cv.carryonmall.com^ -||a8cv.cart.bi-su.jp^ -||a8cv.cart3.toku-talk.com^ -||a8cv.cast-er.com^ -||a8cv.celav.net^ -||a8cv.celbest.urr.jp^ -||a8cv.cellbic.net^ -||a8cv.chefbox.jp^ -||a8cv.chillaxy.jp^ -||a8cv.chuoms.com^ -||a8cv.cinemage.shop^ -||a8cv.clickjob.jp^ -||a8cv.cloud-wi-fi.jp^ -||a8cv.cloudthome.com^ -||a8cv.coco-gourmet.com^ -||a8cv.codexcode.jp^ -||a8cv.codmon.com^ -||a8cv.contents-sales.net^ -||a8cv.control.cloudphotobook.com^ -||a8cv.coopnet.or.jp^ -||a8cv.cosmeonline.com^ -||a8cv.cosmo-water.net^ -||a8cv.cosmosfoods.jp^ -||a8cv.covermark.co.jp^ -||a8cv.cozuchi.com^ -||a8cv.cpi.ad.jp^ -||a8cv.cprime-japan.com^ -||a8cv.crecari.com^ -||a8cv.crefus.jp^ -||a8cv.crowdcredit.jp^ -||a8cv.crowdlinks.jp^ -||a8cv.cv2308001.tanomelu.com^ -||a8cv.daini-agent.jp^ -||a8cv.daisenham.com^ -||a8cv.danipita.com^ -||a8cv.danjiki-net.jp^ -||a8cv.dazzyclinic.jp^ -||a8cv.deiba.jp^ -||a8cv.delis.co.jp^ -||a8cv.designlearn.co.jp^ -||a8cv.direct-teleshop.jp^ -||a8cv.direct.shark.co.jp^ -||a8cv.diyfactory.jp^ -||a8cv.doctor-agent.com^ -||a8cv.doctoryotsu.com^ -||a8cv.dokoyorimo.com^ -||a8cv.dokugaku-dx.com^ -||a8cv.downjacket.pro^ -||a8cv.dream-licence.jp^ -||a8cv.dreambeer.jp^ -||a8cv.dreamchance.net^ -||a8cv.drsoie.com^ -||a8cv.dsc-nightstore.com^ -||a8cv.dshu.jp^ -||a8cv.duo.jp^ -||a8cv.e-3shop.com^ -||a8cv.e-3x.jp^ -||a8cv.e-d-v-j.co.jp^ -||a8cv.e-earphone.jp^ -||a8cv.e-stretch-diet.com^ -||a8cv.eakindo.com^ -||a8cv.ec.oliveunion.com^ -||a8cv.eco-ring.com^ -||a8cv.ecodepa.jp^ -||a8cv.eeo.today^ -||a8cv.egmkt.co.jp^ -||a8cv.eikajapan.com^ -||a8cv.emma-sleep-japan.com^ -||a8cv.encounter2017.jp^ -||a8cv.english-bootcamp.com^ -||a8cv.english-cc.com^ -||a8cv.english-village.net^ -||a8cv.entre-salon.com^ -||a8cv.entry.renet.jp^ -||a8cv.est-online.com^ -||a8cv.euria.store^ -||a8cv.exrg-premium.shop^ -||a8cv.eys-musicschool.com^ -||a8cv.f.012grp.co.jp^ -||a8cv.factoringzero.jp^ -||a8cv.fafa-shop.com^ -||a8cv.favorric.com^ -||a8cv.fc-japan.biz^ -||a8cv.fc-osoujikakumei.jp^ -||a8cv.first-spoon.com^ -||a8cv.fitness-terrace.com^ -||a8cv.focusneo.net^ -||a8cv.folio-sec.com^ -||a8cv.folli.jp^ -||a8cv.follome.motaras.co.jp^ -||a8cv.foresight.jp^ -||a8cv.forza-gran.com^ -||a8cv.fots.jp^ -||a8cv.fp-life.design^ -||a8cv.frecious.jp^ -||a8cv.free-max.com^ -||a8cv.freeks-japan.com^ -||a8cv.freelance-start.com^ -||a8cv.fujiplus.jp^ -||a8cv.fukuoka-factoring.net^ -||a8cv.fundrop.jp^ -||a8cv.futurefinder.net^ -||a8cv.fxtrade.co.jp^ -||a8cv.gaiasign.co.jp^ -||a8cv.gaikokujin-support.com^ -||a8cv.gaikouexterior-partners.jp^ -||a8cv.gakuen.omobic.com^ -||a8cv.gb-chat.com^ -||a8cv.gbset.jp^ -||a8cv.genesis-nipt.com^ -||a8cv.gigabaito.com^ -||a8cv.gimuiko.com^ -||a8cv.global-dive.jp^ -||a8cv.global-link-seminar.com^ -||a8cv.glocalnet.jp^ -||a8cv.glow-clinic.com^ -||a8cv.goodlucknail.com^ -||a8cv.goods-station.jp^ -||a8cv.goqoo.me^ -||a8cv.grace-grace.info^ -||a8cv.grassbeaute.jp^ -||a8cv.greed-island.ne.jp^ -||a8cv.haka.craht.jp^ -||a8cv.hal-tanteisya.com^ -||a8cv.hanamaro.jp^ -||a8cv.handmade-ch.jp^ -||a8cv.happy-bears.com^ -||a8cv.harasawa.co.jp^ -||a8cv.hardwarewallet-japan.com^ -||a8cv.hariocorp.co.jp^ -||a8cv.hello-people.jp^ -||a8cv.heybit.io^ -||a8cv.hi-tailor.jp^ -||a8cv.hikari-mega.com^ -||a8cv.hoken-laundry.com^ -||a8cv.holo-bell.com^ -||a8cv.homepage296.com^ -||a8cv.honeys-onlineshop.com^ -||a8cv.hoppin-garage.com^ -||a8cv.hor.jp^ -||a8cv.hotyoga-loive.com^ -||a8cv.houjin-keitai.com^ -||a8cv.housingbazar.jp^ -||a8cv.humming-water.com^ -||a8cv.hyperknife.info^ -||a8cv.i-office1.net^ -||a8cv.ias.il24.net^ -||a8cv.icoi.style^ -||a8cv.ieagent.jp^ -||a8cv.iekoma.com^ -||a8cv.iikyujin.net^ -||a8cv.ikapula.com^ -||a8cv.info.atgp.jp^ -||a8cv.inkan-takumi.com^ -||a8cv.interlink.or.jp^ -||a8cv.investment.mogecheck.jp^ -||a8cv.ioo-sofa.net^ -||a8cv.irodas.com^ -||a8cv.ishibashi.co.jp^ -||a8cv.ishibestcareer.com^ -||a8cv.ishizawa-lab.co.jp^ -||a8cv.isslim.jp^ -||a8cv.isuzu-rinji.com^ -||a8cv.itscoco.shop^ -||a8cv.iwamizu.com^ -||a8cv.iy-net.jp^ -||a8cv.japaden.jp^ -||a8cv.jbl-link.com^ -||a8cv.jcom.co.jp^ -||a8cv.jeansmate.co.jp^ -||a8cv.jemmy.co.jp^ -||a8cv.join-tech.jp^ -||a8cv.jokyonext.jp^ -||a8cv.joy-karaokerental.com^ -||a8cv.jp-shop.kiwabi.com^ -||a8cv.jp.metrocityworld.com^ -||a8cv.jp.redodopower.com^ -||a8cv.k-ikiiki.jp^ -||a8cv.kabu-online.jp^ -||a8cv.kagoya.jp^ -||a8cv.kaimonocart.com^ -||a8cv.kaimonoform.com^ -||a8cv.kaiteki.gr.jp^ -||a8cv.kaitori-okoku.jp^ -||a8cv.kaitorisatei.info^ -||a8cv.kajier.jp^ -||a8cv.kamurogi.net^ -||a8cv.karitoke.jp^ -||a8cv.kidsmoneyschool.net^ -||a8cv.kikubari-bento.com^ -||a8cv.king-makura.com^ -||a8cv.kk-orange.jp^ -||a8cv.kkmatsusho.jp^ -||a8cv.kn-waterserver.com^ -||a8cv.kobe38.com^ -||a8cv.kosodatemoney.com^ -||a8cv.kuih.jp^ -||a8cv.kurashi-bears.com^ -||a8cv.kusmitea.jp^ -||a8cv.kuzefuku-arcade.jp^ -||a8cv.kxn.co.jp^ -||a8cv.kyotokimono-rental.com^ -||a8cv.l-meal.com^ -||a8cv.laclulu.com^ -||a8cv.lalavie.jp^ -||a8cv.lancers.jp^ -||a8cv.laviepre.co.jp^ -||a8cv.lc-jewel.jp^ -||a8cv.lear-caree.com^ -||a8cv.leasonable.com^ -||a8cv.lens-1.jp^ -||a8cv.leoandlea.com^ -||a8cv.lianest.co.jp^ -||a8cv.lp.nalevi.mynavi.jp^ -||a8cv.lp.x-house.co.jp^ -||a8cv.lyprinol.jp^ -||a8cv.machi-ene.jp^ -||a8cv.machicon.jp^ -||a8cv.macloud.jp^ -||a8cv.madoguchi.com^ -||a8cv.maenomery.jp^ -||a8cv.magniflexk.com^ -||a8cv.mamarket.co.jp^ -||a8cv.mansiontech.com^ -||a8cv.marumochiya.net^ -||a8cv.mashumaro-bra.com^ -||a8cv.mbb-inc.com^ -||a8cv.mcc-lazer-hr.com^ -||a8cv.meetsmore.com^ -||a8cv.memberpay.jp^ -||a8cv.members.race.sanspo.com^ -||a8cv.menina-joue.jp^ -||a8cv.mentors-lwc.com^ -||a8cv.mi-vision.co.jp^ -||a8cv.minana-jp.com^ -||a8cv.minnano-eikaiwa.com^ -||a8cv.mitaina.tokyo^ -||a8cv.mobabiji.jp^ -||a8cv.modern-deco.jp^ -||a8cv.modescape.com^ -||a8cv.mogecheck.jp^ -||a8cv.mokumokumarket.com^ -||a8cv.momiji-tantei.com^ -||a8cv.mova-creator-school.com^ -||a8cv.ms-toushiguide.jp^ -||a8cv.mura.ne.jp^ -||a8cv.my-arrow.co.jp^ -||a8cv.nagatani-shop.com^ -||a8cv.naire-seisakusho.jp^ -||a8cv.naradenryoku.co.jp^ -||a8cv.natulahonpo.com^ -||a8cv.naturaltech.jp^ -||a8cv.naturebreath-store.com^ -||a8cv.naturecan-fitness.jp^ -||a8cv.nd-clinic.net^ -||a8cv.netvisionacademy.com^ -||a8cv.next1-one.jp^ -||a8cv.nichirei.co.jp^ -||a8cv.nifty.com^ -||a8cv.nigaoe.graphics.vc^ -||a8cv.nijiun.com^ -||a8cv.nikugatodoke.com^ -||a8cv.nippon-olive.co.jp^ -||a8cv.nipt-clinic.jp^ -||a8cv.nittei-group-alliance.com^ -||a8cv.o-juku.com^ -||a8cv.o-ken.com^ -||a8cv.oceanprincess.jp^ -||a8cv.ococorozashi.com^ -||a8cv.off-site.jp^ -||a8cv.ogaland.com^ -||a8cv.oisix.com^ -||a8cv.omakase-cyber-mimamori.net^ -||a8cv.omni7.jp^ -||a8cv.omobic.com^ -||a8cv.one-netbook.jp^ -||a8cv.online-mega.com^ -||a8cv.online.aivil.jp^ -||a8cv.online.bell-road.com^ -||a8cv.online.d-school.co^ -||a8cv.online.thekiss.co.jp^ -||a8cv.onlinestore.xmobile.ne.jp^ -||a8cv.onlinezemi.com^ -||a8cv.open-cage.com^ -||a8cv.orbis.co.jp^ -||a8cv.orochoku.shop^ -||a8cv.otakudathough.com^ -||a8cv.otoriyose.site^ -||a8cv.p-antiaging.com^ -||a8cv.paidy.com^ -||a8cv.palms-gym.com^ -||a8cv.perrot.co^ -||a8cv.pf.classicmusic.tokyo^ -||a8cv.phonim.com^ -||a8cv.photojoy.jp^ -||a8cv.physiqueframe.com^ -||a8cv.picksitter.com^ -||a8cv.pigeon-fw.com^ -||a8cv.pilates-k.jp^ -||a8cv.pocket-sommelier.com^ -||a8cv.postcoffee.co^ -||a8cv.pre-sana.com^ -||a8cv.premium.aidemy.net^ -||a8cv.presence.jp^ -||a8cv.print-gakufu.com^ -||a8cv.pro.omobic.com^ -||a8cv.quattrocart.com^ -||a8cv.quick-management.jp^ -||a8cv.r-maid.com^ -||a8cv.radi-cool.shop^ -||a8cv.rakumizu.jp^ -||a8cv.rawfood-lohas.com^ -||a8cv.rehome-navi.com^ -||a8cv.renoveru.jp^ -||a8cv.repairman.jp^ -||a8cv.repitte.jp^ -||a8cv.reservation.matching-photo.com^ -||a8cv.reserve.victoria.tokyo.jp^ -||a8cv.risu-japan.com^ -||a8cv.rita-style.co.jp^ -||a8cv.rmkrmk.com^ -||a8cv.rohto.co.jp^ -||a8cv.runteq.jp^ -||a8cv.ryomon.jp^ -||a8cv.s-darts.com^ -||a8cv.sabusuta.jp^ -||a8cv.safetycart.jp^ -||a8cv.saitoma.com^ -||a8cv.sakura-forest.com^ -||a8cv.sanix.jp^ -||a8cv.sankyo-fs.jp^ -||a8cv.saraschool.net^ -||a8cv.scheeme.com^ -||a8cv.se-navi.jp^ -||a8cv.second-hand.jp^ -||a8cv.secure.sakura.ad.jp^ -||a8cv.seikatsu-kojo.jp^ -||a8cv.select-type.com^ -||a8cv.selkalabo.com^ -||a8cv.sell.miraias.co.jp^ -||a8cv.setagayarecords.co^ -||a8cv.shadoten.com^ -||a8cv.sharing-tech.co.jp^ -||a8cv.sharing-tech.jp^ -||a8cv.shibarinashi-wifi.jp^ -||a8cv.shibuya-scramble-figure.com^ -||a8cv.shimomoto-cl.co.jp^ -||a8cv.shokubun.ec-design.co.jp^ -||a8cv.shokunosoyokaze.com^ -||a8cv.shop.matsuo1956.jp^ -||a8cv.shop.mintme.jp^ -||a8cv.shop.pixela.jp^ -||a8cv.shop.solve-grp.com^ -||a8cv.sibody.co.jp^ -||a8cv.signalift.com^ -||a8cv.sirusi.jp^ -||a8cv.sl-creations.store^ -||a8cv.slp.partners-re.co.jp^ -||a8cv.smart-shikaku.com^ -||a8cv.smoola.jp^ -||a8cv.snkrdunk.com^ -||a8cv.softbankhikari-collabo.net^ -||a8cv.somresta.jp^ -||a8cv.soundfun.co.jp^ -||a8cv.soyafarm.com^ -||a8cv.spalab-chintai.uk-corp.co.jp^ -||a8cv.spot-pj.com^ -||a8cv.staff-manzoku.co.jp^ -||a8cv.staffagent.co.jp^ -||a8cv.starpeg-music.com^ -||a8cv.store.alpen-group.jp^ -||a8cv.store.ion-e-air.jp^ -||a8cv.store.saneibd.com^ -||a8cv.store.tavenal.com^ -||a8cv.store.tiger-corporation.com^ -||a8cv.store.wiredbeans.jp^ -||a8cv.store.yslabo.net^ -||a8cv.story365.co.jp^ -||a8cv.str.classicmusic.tokyo^ -||a8cv.studycompass.io^ -||a8cv.studycompass.net^ -||a8cv.studygear.evidus.com^ -||a8cv.success-idea.com^ -||a8cv.sumai-surfin.com^ -||a8cv.sunmillion-ikiiki.jp^ -||a8cv.suzaku.or.jp^ -||a8cv.suzette-shop.jp^ -||a8cv.t-bang.jp^ -||a8cv.t-gaia.co.jp^ -||a8cv.taclinic.jp^ -||a8cv.taisyokudaiko.jp^ -||a8cv.tamago-repeat.com^ -||a8cv.taxi-qjin.com^ -||a8cv.techkidsschool.jp^ -||a8cv.tenishokunext.jp^ -||a8cv.tenkuryo.jp^ -||a8cv.tenshinocart.com^ -||a8cv.tmix.jp^ -||a8cv.tokei-syuri.jp^ -||a8cv.toko-navi.com^ -||a8cv.tokutoku-battery.com^ -||a8cv.tokyo-dive.com^ -||a8cv.tokyo-indoorgolf.com^ -||a8cv.tokyogas.bocco.me^ -||a8cv.tomodachi-my.com^ -||a8cv.tomorrow-bright.jp^ -||a8cv.tonyuclub.com^ -||a8cv.toushi-up.com^ -||a8cv.toybox-mnr.com^ -||a8cv.toysub.net^ -||a8cv.treasure-f.com^ -||a8cv.ulp-kyoto.jp^ -||a8cv.unias.jp^ -||a8cv.unico-fan.co.jp^ -||a8cv.untenmenkyo-yi.com^ -||a8cv.urocca.jp^ -||a8cv.usedfun.jp^ -||a8cv.veggie-toreru.jp^ -||a8cv.vieon.co.jp^ -||a8cv.w2solution.co.jp^ -||a8cv.wakan.shop^ -||a8cv.wake.fun^ -||a8cv.waterenergy.co.jp^ -||a8cv.waterserver.co.jp^ -||a8cv.web-planners.net^ -||a8cv.wedding.mynavi.jp^ -||a8cv.wellcrew.net^ -||a8cv.whynot.jp^ -||a8cv.will-agaclinic.com^ -||a8cv.will-gocon.net^ -||a8cv.willfu.jp^ -||a8cv.winkle.online^ -||a8cv.womanmoney.net^ -||a8cv.wordman.jp^ -||a8cv.worker.sukimaworks.app^ -||a8cv.workman.jp^ -||a8cv.worx.jp^ -||a8cv.www.bedstyle.jp^ -||a8cv.www.bigability.co.jp^ -||a8cv.www.bitlock.jp^ -||a8cv.www.chara-ani.com^ -||a8cv.www.club-sincerite.co.jp^ -||a8cv.www.covearth.co.jp^ -||a8cv.www.iropuri.com^ -||a8cv.www.mogecheck.jp^ -||a8cv.www.monologue.watch^ -||a8cv.www.pascaljp.com^ -||a8cv.www.sofastyle.jp^ -||a8cv.www2.sundai.ac.jp^ -||a8cv.xn--1lqs71d2law9k8zbv08f.tokyo^ -||a8cv.xn--eckl3qmbc6976d2udy3ah35b.com^ -||a8cv.xn--hckxam3skb2412b1hxe.com^ -||a8cv.xn--hdks151yx96c.com^ -||a8cv.y-osohshiki.com^ -||a8cv.ya-man.com^ -||a8cv.yakuzaishi.yakumatch.com^ -||a8cv.yakuzaishibestcareer.com^ -||a8cv.yamasa-suppon.com^ -||a8cv.yamato-gp.net^ -||a8cv.yamatokouso.com^ -||a8cv.ygm-clinic.or.jp^ -||a8cv.yobybo-japan.com^ -||a8cv.yohodo.net^ -||a8cv.yokoyamakaban.com^ -||a8cv.yoriso.com^ -||a8cv.you-shoku.net^ -||a8cv.yui.gift^ -||a8cv.yuyu-tei.jp^ -||a8cv.zacc.jp^ -||a8cv.zeroen-denki.com^ -||a8cv.zerorenovation.com^ -||a8cv.zoner.com^ -||a8cv2.vapelog.jp^ -||a8cventry.uqwimax.jp^ -||a8cvhoiku.kidsmate.jp^ -||a8cvtrack.sincere-garden.jp^ -||a8cvtrack.tokai.jp^ -||a8dev.hikarinet-s.com^ -||a8dns.webcircle.co.jp^ -||a8hokuro.ike-sunshine.co.jp^ -||a8itp.bitoka-japan.com^ -||a8itp.skinx-japan.com^ -||a8kotsujiko.ike-sunshine.co.jp^ -||a8live-vote.eventos.work^ -||a8lp-tebiki.e-sogi.com^ -||a8lpclk.club-marriage.jp^ -||a8n.radishbo-ya.co.jp^ -||a8net.augustberg.jp^ -||a8net.beyond-gym.com^ -||a8net.gset.co.jp^ -||a8net.hassyadai.com^ -||a8net.kitamura-print.com^ -||a8net.pg-learning.net^ -||a8net.sourcenext.com^ -||a8netcv.crebiq.com^ -||a8nikibi.ike-sunshine.co.jp^ -||a8onlineshop.trendmicro.co.jp^ -||a8redirect.cart.ec-sites.jp^ -||a8shop.nihon-trim.co.jp^ -||a8sup.chapup.jp^ -||a8tag.emprorm.com^ -||a8tag.suplinx.com^ -||a8tatoo.ike-sunshine.co.jp^ -||a8track.aidmybank.com^ -||a8track.bizdigi.jp^ -||a8track.speakbuddy-personalcoaching.com^ -||a8track.www.pontely.com^ -||a8trck.aisatsujo.com^ -||a8trck.aisatsujo.jp^ -||a8trck.helloactivity.com^ -||a8trck.j-sen.jp^ -||a8trck.sibody.co.jp^ -||a8trck.tolot.com^ -||a8trck.worldone.to^ -||a8trck.ws.formzu.net^ -||a8trk.www.std-lab.jp^ -||a8wakiga.ike-sunshine.co.jp^ -||a8wristcut.ike-sunshine.co.jp^ -||a8x.piece-kaitori.jp^ -||ac.livelty.com^ -||acv.auhikari-norikae.com^ -||acv.aun-air-wifi.com^ -||acv.aun-company.com^ -||acv.aun-n-hikari.com^ -||acv.aun-softbank-hikari.com^ -||acv.biglobe-hikari.net^ -||acv.cmf-hikari.net^ -||acv.crea-lp.com^ -||acv.fletsntt.com^ -||acv.hikariocn.com^ -||acv.hikarisoftbank.com^ -||acv.internet-moushikomi.net^ -||acv.kyushu-internet.com^ -||acv.mc-doctor.net^ -||acv.mc-nurse.net^ -||acv.mc-pharma.net^ -||acv.me-hikari.net^ -||acv.next-air-wifi.com^ -||acv.next-internet.info^ -||acv.nft-hikari.net^ -||acv.pikarahikari.net^ -||acv.softbank-hikaricollabo.com^ -||acv.xn--dckf5a1e821s9i7b.com^ -||acv.xn--lck7b0fy49k9y1b.com^ -||ad-a8.www.zeiri4.com^ -||ad.belleeau.jp^ -||ad.e-dpe.jp^ -||ad.houkei-shinjuku.com^ -||ad.ichiban-boshi.com^ -||ad.ichiru.net^ -||ad.jibunde-esute.com^ -||ad.kirara-support.jp^ -||ad.magokoro-care-shoku.com^ -||ad.rejichoice.jp^ -||ad.shinjuku-mens-chuoh.com^ -||ada8-2.ampleur.jp^ -||ada8.ampleur.jp^ -||ads.dandelionchocolate.jp^ -||af.gmobile.biz^ -||af.shozankan-shop.com^ -||afcv.champ-shop.com^ -||afep.pivn.shop^ -||affa8.hikkoshi-master.com^ -||afficv.lettuce.co.jp^ -||affiliate.couleur-labo.com^ -||affiliate.dietician-family.jp^ -||affiliate.htb-energy.co.jp^ -||affiliate.k-uno.co.jp^ -||affiliate.kgcshop.jp^ -||affiliate.ouchi.coop^ -||affiliate.petitwedding.com^ -||affiliate.taihoshop.jp^ -||affiliate.tripact.jp^ -||afi.biyou.web-marketing.ai^ -||afi.iino.life^ -||afi.school.web-marketing.ai^ -||afi.sougou.web-marketing.ai^ -||afi.ssl.gmobb.jp^ -||ahachi.dietnavi.com^ -||ahachi.dreamdenki.jp^ -||ai.kaishabaikyaku.com^ -||analytics.villagehouse.jp^ -||approach.wise1-golf.com^ -||asp.glasspp119.jp^ -||asp.hachipp119.com^ -||asp.taishokunext.com^ -||aspa8.ozmall.co.jp^ -||car-a8.tabirai.net^ -||click.techtree.jp^ -||clk.entry.surala.jp^ -||clk.glam-print.com^ -||clk.ingage.jp^ -||clk.liberty-e.com^ -||clk.wagon-hire.com^ -||clkcv.biglobehikari-kaisen.com^ -||clkcv.livede55.com^ -||contact.kdg-yobi.com^ -||cosme.caseepo.jp^ -||cp.cp.twendee.jp^ -||cv-match.sharebase.jp^ -||cv.2jikaikun.com^ -||cv.a-cial.com^ -||cv.a-hikkoshi.com^ -||cv.ag.cybersecurity-jp.com^ -||cv.agent-sana.com^ -||cv.atelier-shark.com^ -||cv.b2b.subscription-store.com^ -||cv.bc-force.com^ -||cv.belta-shop.jp^ -||cv.betrading.jp^ -||cv.bikoshaen.com^ -||cv.bloomeelife.com^ -||cv.cante-gym.com^ -||cv.cart.naturath.jp^ -||cv.colleize.com^ -||cv.cp-c21.com^ -||cv.denkichoice.jp^ -||cv.drive-hikari.net^ -||cv.e-tukline.jp^ -||cv.fire-bird.jp^ -||cv.gas-choice.net^ -||cv.h-docomo.com^ -||cv.hanna-saku.jp^ -||cv.hikari.organic^ -||cv.hikkoshizamurai.jp^ -||cv.hoikushi-bosyu.com^ -||cv.homepage-seisaku.jp^ -||cv.ignis.coach^ -||cv.it-kyujin.jp^ -||cv.japan-curtain.jp^ -||cv.jidoumail.com^ -||cv.joggo.jp^ -||cv.just-size.net^ -||cv.kuvings.jp^ -||cv.liability.jp^ -||cv.masteraxis.com^ -||cv.meo.tryhatch.co.jp^ -||cv.michiuru.jp^ -||cv.moena-eatstyle.net^ -||cv.my-lancul.com^ -||cv.nell.life^ -||cv.oiz-care.jp^ -||cv.online.ysroad.co.jp^ -||cv.optimo-slb.com^ -||cv.quocard.jp^ -||cv.rakuten-hikari.net^ -||cv.re-shop.jp^ -||cv.ryoutuki-kyujin.com^ -||cv.shiryoku1.com^ -||cv.stella-s.com^ -||cv.subscription-store.com^ -||cv.sumaho-hoken.jp^ -||cv.taskar.online^ -||cv.tenjin.cc^ -||cv.theatreacademy.info^ -||cv.tokyowork.jp^ -||cv.ui-chiho.clinic^ -||cv.virtualoffice-resonance.jp^ -||cv.web-sana.com^ -||cv.willbefit.jp^ -||cv.wp-avenue.com^ -||cv.www.jobcareer.jp^ -||cv.www.risetokyo.jp^ -||cv.www.rokuzan.net^ -||cv.xn--bcktcvdzde3c.biz^ -||cv.xn--zbs202g.com^ -||cv.zephylrin-x.net^ -||cv1.start-eo.jp^ -||cv1.stefany.co.jp^ -||dwuzxuvwlq.winticket.jp^ -||electricity2.tokyu-ps.jp^ -||ems-a8net-tracking.easy-myshop.jp^ -||herpes2.pa-ruit.jp^ -||investment.lianest.co.jp^ -||itp.yaku-job.com^ -||ja-jp-a8.etudehouse.com^ -||kaden.netoff.co.jp^ -||kikoe.aisei.co.jp^ -||kobetu.grand1corp.com^ -||listing-a8-itp.hello-storage.com^ -||lp.kumamoto4510.com^ -||mvc.shopjapan.co.jp^ -||nccaf.ncc-mens.com^ -||ntt-fletscv.ntt-flets.com^ -||onenet.gakujutsu.com^ -||p004.raffi-hair.com^ -||p005.raffi-hair.com^ -||pages2.rizap.jp^ -||pr.yokohama-chokin.com^ -||rsv.dankore.jp^ -||rsv.pairorder.jp^ -||salto.freeto.jp^ -||sekaopi.nocre.jp^ -||sfcv.chinavi-shop.jp^ -||shop.anu-cosme.com^ -||shopping.cellpure.co.jp^ -||smn.dankore.jp^ -||sokutei.car2828.jp^ -||st-a8.tscubic.com^ -||storea8tracking.alc.co.jp^ -||sub.booksdream-mypage.com^ -||sub.ecd.bookoffonline.co.jp^ -||sub.turningpoint.work^ -||summary.bookoffonline.co.jp^ -||sync-a8.cocolocala.jp^ -||tag.minimaid.co.jp^ -||test.shigoto-web.com^ -||test.zeus-wifi.jp^ -||testa8wifi.dokoyorimo.com^ -||thanks.hubspaces.jp^ -||thanks.olivesitter.com^ -||thanks.tsubaki-musicschool.com^ -||track-v4.ipadpresence.com^ -||track.craudia.com^ -||track.kiafudousan.com^ -||track.xmarketech.com^ -||tracking.196189.com^ -||tracking.lead-plus.jp^ -||traka8.crypto-mall.org^ -||trck-a8.j-depo.com^ -||trck.aeon.co.jp^ -||trck.atnenga.com^ -||trck.flexnet.co.jp^ -||trck.frutafrutashop.com^ -||trck.kenkiya.com^ -||trck.naco-do.com^ -||trck.nuwlnuwl.com^ -||trck.propo.co.jp^ -||trck.repesta.com^ -||trck.rework-s.com^ -||trck.stefany.co.jp^ -||trck02.magaseek.com^ -||trcka8.orobianco-jp.com^ -||trcka8net.bestlens.jp^ -||trcka8net.glens.jp^ -||trcka8net.irobot-jp.com^ -||trcka8net.lenszero.com^ -||trcka8net.qieto.net^ -||web.collaboration-access.com^ -||web.hikari-ocn.com^ -||web.hikari-softbank.com^ -||web.life-cw.com^ -||webtest.lpio.jp^ -||www.a8clk.amelia.ne.jp^ -||www.a8clk.kanagawa-zero.com^ -||yoiku-sub.yoiku.support^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_plausible.txt *** -||a-api.skz.dev^ -||a.aawp.de^ -||a.iiro.dev^ -||a.linkz.ai^ -||also.greatsecuritydebate.net^ -||an.xavierrosee.com^ -||analytics.adam.page^ -||analytics.andrewsmith.com.au^ -||analytics.arunraghavan.net^ -||analytics.basistheory.com^ -||analytics.betterplaces.nl^ -||analytics.certifriedit.com^ -||analytics.chattarize.de^ -||analytics.churchthemes.com^ -||analytics.codeforscience.org^ -||analytics.codeskulptor.org^ -||analytics.eikko.ai^ -||analytics.ericafischerphotography.com^ -||analytics.gamedatacrunch.com^ -||analytics.geekyminds.net^ -||analytics.hambleden-capital.com^ -||analytics.hiome.com^ -||analytics.kerns.co^ -||analytics.lifestyledemocracy.com^ -||analytics.littlekingdesigns.com^ -||analytics.lunge.de^ -||analytics.mambaui.com^ -||analytics.mc500.info^ -||analytics.multithread.studio^ -||analytics.mycater.fr^ -||analytics.naturequant.com^ -||analytics.qualityquestions.co^ -||analytics.ramiyer.io^ -||analytics.ramiyer.me^ -||analytics.recamov.com^ -||analytics.sideprojectsoftware.com^ -||analytics.sixfigureswine.com^ -||analytics.teamcovenant.com^ -||analytics.top10-charts.com^ -||analytics.trust.page^ -||analytics.uxmetrics.com^ -||analytics.valheimgamer.com^ -||analytics.vanilla-project.guide^ -||analytics.wayland.app^ -||analytics.whostheboss.co.uk^ -||analytics.whotargets.me^ -||analytics.winter.ink^ -||analytics.xiloc.net^ -||analytics.zevvle.com^ -||antitracking.owncast.online^ -||api.digitalpiloten.org^ -||api.elliehuxtable.com^ -||api.fuck.education^ -||api.ryanyao.design^ -||apis.4bn.xyz^ -||app-stats.supernotes.app^ -||artistchristinacarmel.ericksonbuilt.com^ -||assets.garron.blog^ -||assets.garron.me^ -||assets.mikeroulston.com^ -||assets.modeathletics.com^ -||assets.modehypertext.com^ -||aux.lansator.ro^ -||badwolf.open-election-compass.com^ -||besucher.nona.de^ -||bob.gitclear.com^ -||btstats.benakt.com^ -||cats.d20.rs^ -||cdn.arcstudiopro.com^ -||channelwatcher.panda.tech^ -||cheese.guac.live^ -||churro.noteapps.info^ -||count.gothaer-digital.de^ -||counter.cropvid.com^ -||counter.proxycrawl.com^ -||counter.subtitlebee.com^ -||counter.websitevoice.com^ -||cp.phiilu.com^ -||datum.appfleet.com^ -||ds.webprojectslab.com^ -||eliteclng.ericksonbuilt.com^ -||events.mikescerealshack.co^ -||explore.bytelab.uk^ -||external.techopian.com^ -||extramilefloorcare.ericksonbuilt.com^ -||f8phvntohv.tpetry.me^ -||galop.leferacheval-saintcloud.com^ -||hej.henriksommerfeld.se^ -||hi.koalendar.com^ -||hi.streetworkoutlist.com^ -||hola.xebel.co^ -||hstats.askmiso.com^ -||hurricane.tinybird.co^ -||info.bestbudgetapps.com^ -||informatics.filamentcolors.xyz^ -||insights.affilimate.com^ -||jinx.skullctf.com^ -||joy.ochronus.online^ -||kaladyaudiology.ericksonbuilt.com^ -||kingsandqueens.splowser.com^ -||l.lilyzhou.com^ -||l2k30jsa.theochu.com^ -||lkj23jlkajsa.realestate.help^ -||log.rhythmtowers.com^ -||loggychops.paulsmith.site^ -||logs.theccaa.com^ -||lytics.findairpods.com^ -||marsupial.roleup.com^ -||meter.bref.sh^ -||metric.methoddev.com^ -||metrics.creit.tech^ -||metrics.earrieta.dev^ -||metrics.recunia.de^ -||momotaro.craigmod.com^ -||momotaro.walkkumano.com^ -||munnin.hicsuntdra.co^ -||noushe.zevvle.com^ -||numbers.monthlyphotos.com^ -||nums.upscale.app^ -||p.classroombookings.com^ -||p.ejs.dev^ -||p.fairspot.host^ -||p.ianmjones.com^ -||p.iforge.app^ -||p.logbox.io^ -||p.marqueplace.com^ -||p.meilentrio.de^ -||p.ryanhalliday.com^ -||p.versacommerce.de^ -||p.victoria.dev^ -||p.viennaandbailey.co.nz^ -||p.wren.co^ -||p.www.viertaxa.com^ -||pa-stats.encore.dev^ -||pa.opqr.co^ -||pa.travelwhiz.app^ -||peards.zevvle.com^ -||pine.clk.click^ -||pine.nervecentral.com^ -||ping.naturadapt.com^ -||ping.resoluteoil.com^ -||pl.1feed.app^ -||pl.astro-akatemia.fi^ -||pl.astro.fi^ -||pl.carbon-tab.ethan.link^ -||pl.codetheweb.blog^ -||pl.ethan.link^ -||pl.fashmoms.com^ -||pl.getfamealy.com^ -||pl.hackathon-makers.com^ -||pl.hitthefrontpage.com^ -||pl.kanbanmail.app^ -||pl.kis-nagy.art^ -||pl.maya-astro.fi^ -||pl.mynorthstarapp.com^ -||pl.terraintinker.com^ -||pl.venusafe.com^ -||pl.volunteeringhb.org.nz^ -||pl.weinshops.online^ -||pla.wigglepixel.nl^ -||plan.devbyexample.com^ -||plans.fundtherebuild.com^ -||plas.imfeld.dev^ -||plau.artemsyzonenko.com^ -||plau.caisy.io^ -||plau.devitjobs.nl^ -||plau.devitjobs.uk^ -||plau.devitjobs.us^ -||plau.devjob.ro^ -||plau.germantechjobs.de^ -||plau.swissdevjobs.ch^ -||plauplauplau.app.budg.co^ -||plauplauplau.budg.co^ -||plaus.outpost.pub^ -||plaus.pentserv.com^ -||plausdj2ajskljzx0ikwkiasible.ethics.info^ -||plausibel.ablis.net^ -||plausible-stats.tangodelta.media^ -||plausible.adreform.com^ -||plausible.alexandar.me^ -||plausible.alpaga.io^ -||plausible.app.kdojang.com^ -||plausible.app.tlschedule.com^ -||plausible.bablab.com^ -||plausible.bacanalia.net^ -||plausible.baychi.org^ -||plausible.beanti.me^ -||plausible.benscarblog.com^ -||plausible.bostad.shop^ -||plausible.buildfirst.tech^ -||plausible.campwire.com^ -||plausible.canpoi.com^ -||plausible.conveyal.com^ -||plausible.corbettbarr.com^ -||plausible.countingindia.com^ -||plausible.dailytics.com^ -||plausible.deploymentfromscratch.com^ -||plausible.dev.logicboard.com^ -||plausible.dingran.me^ -||plausible.doctave.com^ -||plausible.ejs.dev^ -||plausible.eurostocks.nl^ -||plausible.exploreandcreate.com^ -||plausible.external.sine.foundation^ -||plausible.f1laps.com^ -||plausible.factly.in^ -||plausible.flowcv.io^ -||plausible.getlean.digital^ -||plausible.giveatip.io^ -||plausible.goldanger.de^ -||plausible.golfbreaks.com^ -||plausible.gryka.net^ -||plausible.gymglish.com^ -||plausible.haltakov.net^ -||plausible.help.exploreandcreate.com^ -||plausible.holderbaum-academy.de^ -||plausible.hopecanebay.com^ -||plausible.ionicelements.dev^ -||plausible.jeroenvandenboorn.nl^ -||plausible.joinself.com^ -||plausible.k6sbw.net^ -||plausible.kabaret.no^ -||plausible.kdojang.com^ -||plausible.kundenportal.io^ -||plausible.lesbianromantic.com^ -||plausible.logicboard.com^ -||plausible.mattpruitt.com^ -||plausible.mcj.co^ -||plausible.myvirtualsuper.com^ -||plausible.nickmazuk.com^ -||plausible.nmyvsn.net^ -||plausible.nuqu.org^ -||plausible.promlens.com^ -||plausible.prufit.co^ -||plausible.pumpkint.com^ -||plausible.quantumcomputingexplained.com^ -||plausible.quo.wtf^ -||plausible.rachel.systems^ -||plausible.reabra.com.br^ -||plausible.redchamp.net^ -||plausible.regex.help^ -||plausible.retune.de^ -||plausible.sbw.org^ -||plausible.shadygrovepca.org^ -||plausible.simplelogin.io^ -||plausible.srijn.net^ -||plausible.starlegacyfoundation.org^ -||plausible.strzibny.name^ -||plausible.sysloun.cz^ -||plausible.tac.dappstar.io^ -||plausible.tasteslikeme.ca^ -||plausible.tlschedule.com^ -||plausible.treelightsoftware.com^ -||plausible.urbanekuensteruhr.de^ -||plausible.veszelovszki.com^ -||plausible.visitu.com^ -||plausible.viteshot.com^ -||plausible.west.io^ -||plausible.x.baychi.org^ -||plausible.yalepaprika.com^ -||plausible.zest.dev^ -||plausible.zorin.com^ -||pls.ambue.com^ -||pls.fcrpg.net^ -||pls.skycastle.dev^ -||plsbl-staging.edison.se^ -||plsbl.edison.se^ -||prism.drivingkyoto.com^ -||prism.feurer-network.ch^ -||prism.netherlandlines.com^ -||prism.pablonouvelle.com^ -||prism.raumgleiter.com^ -||prism.singapouring.com^ -||prism.tramclockmunich.com^ -||pstat.akathists.com^ -||pstat.goodremotejobs.com^ -||pstats.cloudpal.app^ -||reddwarf.till-sanders.de^ -||reporting.autographapp.me^ -||retention.ankidecks.com^ -||s.allbootdisks.com^ -||s.cameratico.com^ -||s.crackedthecode.co^ -||s.cuoresportivo.no^ -||s.cybercompass.io^ -||s.ergotherapieblog.de^ -||s.fission.codes^ -||s.fraservotes.com^ -||s.freelanceratecalculator.com^ -||s.glimesh.tv^ -||s.innoq.com^ -||s.inspectelement.co^ -||s.leolabs.org^ -||s.mannes.tech^ -||s.maxrozen.com^ -||s.nerdfulmind.com^ -||s.repguard.uk^ -||s.saucisson-rebellion.fr^ -||s.sporks.space^ -||s.stgeorgeafc.com.au^ -||s.testingreactjs.com^ -||s.useeffectbyexample.com^ -||s.vucko.co^ -||sa.flux.community^ -||sats.mailbrew.com^ -||see.wasteorshare.com^ -||server.japanbyrivercruise.com^ -||server.olliehorn.com^ -||site-stats.supernotes.app^ -||sp.ballsdigroup.com^ -||sp.gameomatic.fr^ -||sp.jrklein.com^ -||sp.soniccares.com^ -||sp.spaceomatic.fr^ -||sp.wvoil.com^ -||st.anastasija.lt^ -||st.picshuffle.com^ -||st.preciousamber.com^ -||st.tulastudio.se^ -||starman.floorcleanse.co.uk^ -||stat.bill.harding.blog^ -||stat.landingpro.pl^ -||stat.recklesslove.co.za^ -||stat.umsu.de^ -||static.osalta.eu^ -||statistic.jac-systeme.de^ -||statistics.heatbeat.de^ -||statistik.apartments-tirolerhaus.at^ -||statman.sesong.info^ -||stats.69grad.de^ -||stats.acadevor.com^ -||stats.achtsame-yonimassage.de^ -||stats.activityvault.io^ -||stats.adlperformance.es^ -||stats.aixbrain.de^ -||stats.albert-kropp-gmbh.de^ -||stats.alibhai.co^ -||stats.alleaktien.de^ -||stats.alocreativa.com^ -||stats.am.ai^ -||stats.amaeya.media^ -||stats.amiibo.life^ -||stats.andrewlevinson.me^ -||stats.appcessible.org^ -||stats.arquido.com^ -||stats.artisansfiables.fr^ -||stats.artistchristinacarmel.com^ -||stats.asmodee.net^ -||stats.astrr.ru^ -||stats.asymptotic.io^ -||stats.auto-dombrowski.de^ -||stats.autofarm.network^ -||stats.bananatimer.com^ -||stats.bcdtravel.com^ -||stats.beanr.coffee^ -||stats.beatricew.com^ -||stats.beausimensen.com^ -||stats.belic.si^ -||stats.benui.ca^ -||stats.bernardobordadagua.com^ -||stats.bertwagner.com^ -||stats.bestservers.co^ -||stats.bholmes.dev^ -||stats.bikeschool.co.za^ -||stats.bimbase.nl^ -||stats.bitpost.app^ -||stats.blackbird-automotive.com^ -||stats.blackblog.cz^ -||stats.blockleviton.com^ -||stats.blog.catholicluv.com^ -||stats.blog.codingmilitia.com^ -||stats.blog.merckx.fr^ -||stats.blog.sean-wright.com^ -||stats.blog.sublimesecurity.com^ -||stats.bloke.blog^ -||stats.bmxdevils.be^ -||stats.book-rec.com^ -||stats.booncon.com^ -||stats.boscabeatha.ie^ -||stats.bostonedtech.org^ -||stats.breathly.app^ -||stats.brennholzauktion.com^ -||stats.briskoda.net^ -||stats.broddin.be^ -||stats.brumtechtapas.co.uk^ -||stats.buddiy.net^ -||stats.bungeefit.co.uk^ -||stats.burocratin.com^ -||stats.byma.com.br^ -||stats.byterocket.dev^ -||stats.cable.tech^ -||stats.callum.fyi^ -||stats.carrot2.org^ -||stats.carrotsearch.com^ -||stats.caseydunham.com^ -||stats.cassidyjames.com^ -||stats.catholicluv.com^ -||stats.centralswindonnorth-pc.gov.uk^ -||stats.cfcasts.com^ -||stats.chadly.net^ -||stats.changelog.com^ -||stats.chomp.haus^ -||stats.chronoslabs.net^ -||stats.cinqsecondes.fr^ -||stats.citizenos.com^ -||stats.clavisaurea.xyz^ -||stats.cleverdiabetic.com^ -||stats.cloud-backup-for-podio.com^ -||stats.coachinghive.com^ -||stats.code-it-studio.de^ -||stats.codinginfinity.me^ -||stats.codis.io^ -||stats.coditia.com^ -||stats.cohere.so^ -||stats.coldbox.org^ -||stats.connect.pm^ -||stats.convaise.com^ -||stats.corona-navi.de^ -||stats.covid.vitordino.com^ -||stats.craftybase.com^ -||stats.creativinn.com^ -||stats.crema.fi^ -||stats.cremashop.eu^ -||stats.cremashop.se^ -||stats.crewebo.de^ -||stats.crypdit.com^ -||stats.cryptmail.io^ -||stats.curbnumberpro.com^ -||stats.curtiscummings.me^ -||stats.dailyposter.com^ -||stats.danestevens.dev^ -||stats.danielwolf.photography^ -||stats.danner-landschaftsbau.at^ -||stats.dashbit.co^ -||stats.davidlms.com^ -||stats.davydepauw.be^ -||stats.dawn.md^ -||stats.declanbyrd.co.uk^ -||stats.deja-lu.de^ -||stats.depends-on-the-definition.com^ -||stats.develop.wwdcscholars.com^ -||stats.devenet.eu^ -||stats.devenet.info^ -||stats.devetkomentara.net^ -||stats.devrain.io^ -||stats.devskills.co^ -||stats.dexie.me^ -||stats.dflydev.com^ -||stats.diarmuidsexton.com^ -||stats.digiexpert.store^ -||stats.dillen.dev^ -||stats.divyanshu013.dev^ -||stats.dmail.co.nz^ -||stats.dmarcdigests.com^ -||stats.doana-r.com^ -||stats.doors.live^ -||stats.dotnetos.org^ -||stats.dotplan.io^ -||stats.doublejones.com^ -||stats.dreher-dreher.eu^ -||stats.drsaavedra.mx^ -||stats.dt-esthetique.ch^ -||stats.duetcode.io^ -||stats.earlygame.com^ -||stats.editorhawes.com^ -||stats.eedistudio.ie^ -||stats.eightyfourrooms.com^ -||stats.einsvieracht.de^ -||stats.ekomenyong.com^ -||stats.elementary.io^ -||stats.eliteclng.com^ -||stats.elixir-lang.org^ -||stats.elysenewland.com^ -||stats.emailrep.io^ -||stats.emk.at^ -||stats.emmah.net^ -||stats.emmas.site^ -||stats.engel-apotheke.de^ -||stats.engeldirekt.de^ -||stats.equium.io^ -||stats.erikinthekitchen.com^ -||stats.erlef.org^ -||stats.evenchilada.com^ -||stats.executebig.org^ -||stats.extramilefloorcare.com^ -||stats.eyehelp.co^ -||stats.fabiofranchino.com^ -||stats.faluninfo.at^ -||stats.faluninfo.ba^ -||stats.faluninfo.mk^ -||stats.faluninfo.rs^ -||stats.faluninfo.si^ -||stats.fastbackward.app^ -||stats.felipesere.com^ -||stats.femtobill.com^ -||stats.ferienwohnung-dombrowski.com^ -||stats.finalrabiesgeneration.org^ -||stats.findvax.us^ -||stats.flightsphere.com^ -||stats.florianfritz.net^ -||stats.flowphantom.com^ -||stats.frantic.im^ -||stats.frenlo.com^ -||stats.fs4c.org^ -||stats.fundimmo.com^ -||stats.fungus.computer^ -||stats.galeb.org^ -||stats.galleriacortona.com^ -||stats.geobox.app^ -||stats.gesund-vital-lebensfreude.com^ -||stats.getdoks.org^ -||stats.gethyas.com^ -||stats.getpickaxe.com^ -||stats.ghinda.com^ -||stats.glassmountains.co.uk^ -||stats.glyphs.fyi^ -||stats.gnalt.de^ -||stats.goldsguide.com^ -||stats.gounified.com^ -||stats.graphql-api.com^ -||stats.gras-system.org^ -||stats.gravitaswins.com^ -||stats.greatlakesdesign.co^ -||stats.groupconsent.eu^ -||stats.gslc.utah.edu^ -||stats.gtnetworks.com^ -||stats.guersanguillaume.com^ -||stats.guidingwallet.app^ -||stats.gynsprechstunde.de^ -||stats.hackershare.dev^ -||stats.halcyon.hr^ -||stats.hammertime.me^ -||stats.hauke.me^ -||stats.headhunted.com.au^ -||stats.henkverlinde.com^ -||stats.homepage-2021.askmiso-dev.com^ -||stats.homestow.com^ -||stats.hpz-scharnhausen.de^ -||stats.htmlcsstoimage.com^ -||stats.htp.org^ -||stats.hugoreeves.com^ -||stats.huysmanbouw.be^ -||stats.iamzero.dev^ -||stats.ibuildings.net^ -||stats.igassmann.me^ -||stats.igor4stir.com^ -||stats.in-tuition.net^ -||stats.incoming.co^ -||stats.increasinglyfunctional.com^ -||stats.indyhall.org^ -||stats.infoboard.de^ -||stats.innoq.com^ -||stats.instabudget.app^ -||stats.interactjs.io^ -||stats.interruptor.pt^ -||stats.intheloop.dev^ -||stats.intothebox.org^ -||stats.invoice.orballo.dev^ -||stats.ipadhire.co.nz^ -||stats.isabelsommerfeld.com^ -||stats.iscc-system.org^ -||stats.isthispoisonivy.website^ -||stats.ivs.rocks^ -||stats.jackwhiting.co.uk^ -||stats.jamesevers.co.uk^ -||stats.jamesilesantiques.com^ -||stats.jamhouse.app^ -||stats.jansix.at^ -||stats.jasonludden.dev^ -||stats.jdheyburn.co.uk^ -||stats.jerickson.net^ -||stats.jhsheridan.com^ -||stats.jjude.com^ -||stats.joaopedro.dev^ -||stats.jsbible.com^ -||stats.jtrees.io^ -||stats.jun-etan.com^ -||stats.justinwilliams.ca^ -||stats.kaladyaudiology.com^ -||stats.katharinascheitz.com^ -||stats.keirwhitaker.com^ -||stats.kendix.org^ -||stats.kensho.com^ -||stats.kettlebellbundle.com^ -||stats.kfcsint-lenaartsjeugd.be^ -||stats.klj-consult.com^ -||stats.knowkit.cloud^ -||stats.kod.ru^ -||stats.koehrer.de^ -||stats.koerner-logopaedie.de^ -||stats.kongressen.com^ -||stats.krauss.io^ -||stats.kryptoslogic.com^ -||stats.ks-labs.de^ -||stats.kyushoku2050.org^ -||stats.labibli.com^ -||stats.laptopsin.space^ -||stats.lastfm.matthiasloibl.com^ -||stats.latehours.net^ -||stats.lauracpa.ca^ -||stats.laxallstars.com^ -||stats.leaguestats.gg^ -||stats.leahcollection.com^ -||stats.learnlinux.tv^ -||stats.leavetrackapp.com^ -||stats.lefthoek.com^ -||stats.legendofnom.com^ -||stats.leoloso.com^ -||stats.lica.at^ -||stats.lik.fr^ -||stats.limitlessnetworks.eu^ -||stats.lippeshirts.de^ -||stats.literacysomerset.org^ -||stats.literaturkreis.online^ -||stats.lmdsp.com^ -||stats.localmetravel.com^ -||stats.lord.io^ -||stats.lstfnd.de^ -||stats.ltdhunt.com^ -||stats.luieremmer.net^ -||stats.lussoveloce.com^ -||stats.lyricall.cz^ -||stats.macosicons.com^ -||stats.madethis.gallery^ -||stats.maferland.com^ -||stats.magarantie5ans.fr^ -||stats.makerr.market^ -||stats.makingknown.xyz^ -||stats.maklerupdate.de^ -||stats.malte-bartels.de^ -||stats.martinbetz.eu^ -||stats.martyntaylor.com^ -||stats.mashword.com^ -||stats.mastermeup.com^ -||stats.masterybits.com^ -||stats.matthiasloibl.com^ -||stats.maximaconsulting.xyz^ -||stats.meetnfly.com^ -||stats.mein-futterlexikon.org^ -||stats.memberdrive.org^ -||stats.meno.science^ -||stats.mesenvies.fr^ -||stats.michaeloliver.dev^ -||stats.micv.works^ -||stats.missionrabies.com^ -||stats.moco-comics.com^ -||stats.mostlycoding.com.au^ -||stats.motion-effect.com^ -||stats.motorcyclepartsireland.ie^ -||stats.mrtnvh.com^ -||stats.multiplelenses.com^ -||stats.multiply.cloud^ -||stats.musicuniverse.education^ -||stats.myherocard.com^ -||stats.napaconnect.ca^ -||stats.navedislam.com^ -||stats.nddmed.com^ -||stats.nerdbusiness.com^ -||stats.newslit.co^ -||stats.nexagon.dk^ -||stats.nodewood.com^ -||stats.nonprofit.foundation^ -||stats.nothingbutnylon.com^ -||stats.nullsecure.com^ -||stats.nytecomics.com^ -||stats.obiit.co^ -||stats.obokat.se^ -||stats.odysseeseine.org^ -||stats.officefoosball.com^ -||stats.oldtinroof.com^ -||stats.oliveoil.pro^ -||stats.onepagelove.com^ -||stats.orbitalhealth.co^ -||stats.ordinarypuzzles.com^ -||stats.ortussolutions.com^ -||stats.osiemsiedem.com^ -||stats.otsohavanto.net^ -||stats.outpostdemo.com^ -||stats.ownpath.xyz^ -||stats.owre.se^ -||stats.p42.ai^ -||stats.parqet.com^ -||stats.parrot.dev^ -||stats.passwordyeti.com^ -||stats.pasteapp.io^ -||stats.pastorwagner.com^ -||stats.patout.dev^ -||stats.patriot.win^ -||stats.paulronge.se^ -||stats.paysagistes.pro^ -||stats.pebkac.io^ -||stats.pendleratlas.de^ -||stats.perpetual.pizza^ -||stats.petanode.com^ -||stats.petr.codes^ -||stats.phili.pe^ -||stats.philjava.com^ -||stats.photographer.com.au^ -||stats.pinoymusicstation.com^ -||stats.piplette.co^ -||stats.pitstone.co.uk^ -||stats.plainsending.com^ -||stats.planxti.com^ -||stats.poesieundgenuss.com^ -||stats.pointflottant.com^ -||stats.polekatfitness.com^ -||stats.poochplaces.dog^ -||stats.portalmonitor.io^ -||stats.postcollectors.com^ -||stats.poweringpastcoal.org^ -||stats.preeventualist.org^ -||stats.pri.org^ -||stats.pricewell.io^ -||stats.principedepaz.gt^ -||stats.print.work^ -||stats.processserver101.com^ -||stats.procumeni.cz^ -||stats.prodtype.com^ -||stats.profilehunt.net^ -||stats.profitablesignpricing.com^ -||stats.projectcongress.com^ -||stats.psychotherapieravensburg.de^ -||stats.pubfind.io^ -||stats.qovery.com^ -||stats.quicksilvercre.com^ -||stats.radicaldata.org^ -||stats.radicalweb.design^ -||stats.rasulkireev.com^ -||stats.reactician.com^ -||stats.readng.co^ -||stats.redlabelsports.com^ -||stats.redpandabooks.com^ -||stats.referralhero.com^ -||stats.rehaag-immobilien.de^ -||stats.reisemobil.pro^ -||stats.remotebear.io^ -||stats.reprage.com^ -||stats.respkt.de^ -||stats.reto.tv^ -||stats.revitfamily.app^ -||stats.rideinpeace.ie^ -||stats.rightourhistoryhawaii.com^ -||stats.robotika.ax^ -||stats.rocketvalidator.com^ -||stats.roderickduenas.com^ -||stats.ruhrfestspiele.de^ -||stats.rymawby.com^ -||stats.s-zt.at^ -||stats.sakurasky.com^ -||stats.sapnininkas.com^ -||stats.sascha-theobald.de^ -||stats.savoirplus-risquermoins.net^ -||stats.sax.net^ -||stats.scailable.net^ -||stats.scalesql.com^ -||stats.scottbartell.com^ -||stats.screenagers.com^ -||stats.screenwavemedia.com^ -||stats.seanbailey.dev^ -||stats.sebastiandombrowski.de^ -||stats.sebastiangale.ca^ -||stats.selectam.io^ -||stats.sendngnt.com^ -||stats.servicedesignjobs.com^ -||stats.seva.rocks^ -||stats.sexplore.app^ -||stats.shareup.app^ -||stats.shepherd.com^ -||stats.shh.io^ -||stats.shiftx.com^ -||stats.simplinetworks.com^ -||stats.sirdata.com^ -||stats.sixseven.at^ -||stats.ski.com^ -||stats.slicedthread.com^ -||stats.socialeurope.eu^ -||stats.soundbite.so^ -||stats.southswindon-pc.gov.uk^ -||stats.sparkloop.app^ -||stats.spreadtheworld.net^ -||stats.sprune.com^ -||stats.sqlteam.com^ -||stats.stack11.io^ -||stats.stackingthebricks.com^ -||stats.stacks.org^ -||stats.staging.hex.pm^ -||stats.steuer-soldaten.de^ -||stats.strawberry.rocks^ -||stats.studypages.com^ -||stats.sublimesecurity.com^ -||stats.suniboy.com^ -||stats.suominaikidoacademy.com^ -||stats.sushibyte.io^ -||stats.svemir.co^ -||stats.symbiofest.cz^ -||stats.tarasyarema.com^ -||stats.tax-venture.de^ -||stats.teamdetails.com^ -||stats.tedserbinski.com^ -||stats.teenranch.com^ -||stats.tekin.co.uk^ -||stats.terre-compagne.fr^ -||stats.textprotocol.org^ -||stats.theiere-tasse.com^ -||stats.thelandofar.be^ -||stats.thenewradiance.com^ -||stats.thingsthatkeepmeupatnight.dev^ -||stats.thomasbandt.com^ -||stats.thomasvitale.com^ -||stats.tijdschrift.zenleven.nl^ -||stats.time2unfold.com^ -||stats.timkhoury.com^ -||stats.timmo.immo^ -||stats.tinkerer.tools^ -||stats.tl8.io^ -||stats.tms-development.com^ -||stats.tms-development.de^ -||stats.tms-institut.de^ -||stats.tnc.sc^ -||stats.toiletmap.org.uk^ -||stats.training.fit^ -||stats.travelfodder.com^ -||stats.trenntoi.de^ -||stats.tresor.one^ -||stats.trigo.at^ -||stats.trussed.dev^ -||stats.tubecalculator.co.uk^ -||stats.twhl.xyz^ -||stats.ubiwiz.com^ -||stats.unka.space^ -||stats.unusualtourist.com^ -||stats.urbanfinn.com^ -||stats.urlaubsverwaltung.cloud^ -||stats.useeffect.dev^ -||stats.uxtools.co^ -||stats.v4.agirpourlenvironnement.org^ -||stats.vanityprojects.com^ -||stats.vdsnow.ru^ -||stats.vican.me^ -||stats.visions.ch^ -||stats.voltimum.com^ -||stats.wachstum.at^ -||stats.walkiees.co.uk^ -||stats.websnap.app^ -||stats.wecodeni.com^ -||stats.wellbeyond.com^ -||stats.westswindon-pc.gov.uk^ -||stats.whenpigsflybbq.com^ -||stats.whereisit5pmrightnow.com^ -||stats.wordvested.org^ -||stats.world.hey.com^ -||stats.wvs.org.uk^ -||stats.wvsindia.org^ -||stats.wwdcscholars.com^ -||stats.www.agirpourlenvironnement.org^ -||stats.wymanmobilenotary.com^ -||stats.xactcode.com^ -||stats.xn--antnio-dxa.pt^ -||stats.zimri.net^ -||statystyki.ekspertyzy-szkolenia.pl^ -||sts.authramp.com^ -||sts.eliasjarzombek.com^ -||sts.papyrs.com^ -||sts.tour-europe.org^ -||stts.sgab-srfp.ch^ -||stts.swisshranalytics.ch^ -||t.lastcast.fm^ -||tics.cortex.gg^ -||tics.seeker.gg^ -||tics.techdirt.com^ -||tipstats.onepagelove.com^ -||tock.weg.plus^ -||track.slickinbox.com^ -||traffic.hostedstatus.page^ -||traffic.taktikal.is^ -||triton.companyegg.com^ -||varys.asongofzandc.xyz^ -||views.emikajewelry.com^ -||views.ericcapella.com^ -||views.sikerlogistics.com^ -||views.sikerproducts.com^ -||views.wioks.com^ -||visitorcenter.ioafw.com^ -||visitorcenter.srwild.com^ -||visitors.gigianddavid.com^ -||vitals.cgddrd.me^ -||we-love-privacy.humane.club^ -||webstats.bijenpatel.com^ -||yolo.philipbjorge.com^ -||zahlen.olereissmann.de^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_tracedock.txt *** -||2tty.overstappen.nl^ -||api.bunzlaucastle.com^ -||app1.maatwerkonline.nl^ -||bc.semwerkt.nl^ -||box.bossdata.be^ -||cms.hardloopaanbiedingen.nl^ -||ee.impactextend.dk^ -||erp.qwic.nl^ -||host11.traffic-builders.com^ -||o2.ikontwerpflyers.nl^ -||s1.carnext.com^ -||s4.parkeren-amsterdam.com^ -||s4.parkeren-haarlem.nl^ -||s4.parkeren-utrecht.nl^ -||tdep.bunzlonline.nl^ -||tdep.growwwdigital.com^ -||tdep.sdim.nl^ -||tdep.suncamp.be^ -||tdep.suncamp.de^ -||tdep.suncamp.nl^ -||tdep.suncamp.pl^ -||tdep.teamnijhuis.com^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_at-internet.txt *** -||71efe2183b8663ad5bf9d7a9320aeb48.leboncoin.fr^ -||a.20minutes.fr^ -||a.hellowork.com^ -||a.pourquoidocteur.fr^ -||a1.api.bbc.co.uk^ -||a1.api.bbc.com^ -||abncx.amv.fr^ -||ama.planet-wissen.de^ -||ama.quarks.de^ -||ama.wdr.de^ -||ama.wdrmaus.de^ -||ana.tv5unis.ca^ -||arrietty.nrj.fr^ -||at-cddc.actu-juridique.fr^ -||at.badische-zeitung.de^ -||atconnect.npo.nl^ -||ati-a1.946d001b783803c1.xhst.bbci.co.uk^ -||ati.sazka.cz^ -||aud.banque-france.fr^ -||avocado.laprovence.com^ -||avp.labanquepostale.fr^ -||blava.viessmann.sk^ -||brickworks.viessmann.sg^ -||buf.lemonde.fr^ -||c0012.brsimg.com^ -||checkpointcharlie.heizung.de^ -||chihiro.nostalgie.fr^ -||col.casa.it^ -||col.idealista.com^ -||col.idealista.it^ -||col.idealista.pt^ -||col.rentalia.com^ -||collect.meilleurtaux.com^ -||conimicutlighthouse.viessmann-us.com^ -||content.kleinezeitung.at^ -||crocetta.viessmann.it^ -||culture.intermedes.com^ -||d.deloitte.fr^ -||d.m-net.de^ -||d.santemagazine.fr^ -||d.uni-medias.com^ -||da.freo.nl^ -||da.maif.fr^ -||da.rabobank.nl^ -||dfr.deloitte.com^ -||dimensions.mappy.com^ -||donjigrad.viessmann.rs^ -||drau.viessmann.si^ -||epwa.europarl.europa.eu^ -||fabryczna.viessmann.pl^ -||faucons.viessmann.fr^ -||hal.courrierinternational.com^ -||hd.pe.fr^ -||hmg.handelsblatt.com^ -||hmg.wiwo.de^ -||hrbitov.viessmann.cz^ -||image.ard.de^ -||image.mdr.de^ -||images.kika.de^ -||insights.biallo.de^ -||insights.sport1.de^ -||johannes.voith.com^ -||kallerupstone.viessmann.dk^ -||kiki.rireetchansons.fr^ -||kistacity.viessmann.se^ -||lem.nouvelobs.com^ -||mediniku.viessmann.lt^ -||mefo1.zdf.de^ -||mkt.usz.ch^ -||montpalatin.handicap.fr^ -||pear.ca-eko-globetrotter.fr^ -||ponyo.cheriefm.fr^ -||protys.protys.fr^ -||res.elle.fr^ -||res.femina.fr^ -||res.franc-tireur.fr^ -||res.marianne.net^ -||res.programme-television.org^ -||res.public.fr^ -||ressources.annoncesbateau.com^ -||ressources.argusassurance.com^ -||ressources.caradisiac.com^ -||ressources.centraleauto.com^ -||ressources.lacentrale.fr^ -||ressources.lagazette.com^ -||ressources.lemoniteur.com^ -||ressources.lsa.fr^ -||ressources.mavoiturecash.fr^ -||ressources.promoneuve.fr^ -||ressources.usine-digitale.com^ -||ressources.usine-nouvelle.com^ -||rsc.lepoint.fr^ -||salzwerk.viessmann.de^ -||selvi.viessmann.com.tr^ -||severn.viessmann.co.uk^ -||sheeta.nrj-play.fr^ -||st1.lg.avendrealouer.fr^ -||steinbackhaus.viessmann.com^ -||steinernehaus.viessmann.at^ -||steinsala.viessmann.lu^ -||strawberry.basf.com^ -||tm.urssaf.fr^ -||torropinto.viessmann.es^ -||tse.telerama.fr^ -||uusimaa.viessmann.fi^ -||waati.quechoisir.org^ -||wareneingang.edeka.de^ -||wasserkraftwerkkessel.viessmann.ch^ -||waterlooberlin.viessmann.ca^ -||woodstock.viessmann.com.au^ -||wvvw.france24.com^ -||wvvw.francemediasmonde.com^ -||wvvw.infomigrants.net^ -||wvvw.mc-doualiya.com^ -||wvvw.rfi.fr^ -||y1.arte.tv^ -||zagrabiti.viessmann.hr^ -||zaventemdijleland.viessmann.be^ -||zelten.fritz-berger.de^ -||zug.sbb.ch^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_adobe.txt *** -||000scripps.hb.omtrdc.net^ -||0tfsd2rwwu3xjstb.edge41.testandtarget.omniture.com^ -||1ps6e7sort397gy9.edge46.testandtarget.omniture.com^ -||20.edge46.testandtarget.omniture.com^ -||a.1800gotjunk.com^ -||a.acxiom.com^ -||a.addskills.se^ -||a.alzcombocare.com^ -||a.amw.com^ -||a.bigtennetwork.com^ -||a.dev-ajo.caixabank.com^ -||a.ehc.com^ -||a.ekero.se^ -||a.fchp.org^ -||a.fox.com^ -||a.foxsports.com^ -||a.foxsportsarizona.com^ -||a.foxsportscarolinas.com^ -||a.foxsportsdetroit.com^ -||a.foxsportsflorida.com^ -||a.foxsportshouston.com^ -||a.foxsportskansascity.com^ -||a.foxsportslocal.com^ -||a.foxsportsmidwest.com^ -||a.foxsportsnorth.com^ -||a.foxsportsohio.com^ -||a.foxsportssandiego.com^ -||a.foxsportssouth.com^ -||a.foxsportssouthwest.com^ -||a.foxsportstennessee.com^ -||a.foxsportswest.com^ -||a.foxsportswisconsin.com^ -||a.fxnetworks.com^ -||a.hjart-lungfonden.se^ -||a.ipoque.com^ -||a.koodomobile.com^ -||a.lls.org^ -||a.loi.nl^ -||a.medtronic.com^ -||a.mercuriurval.com^ -||a.micorp.com^ -||a.munters.cn^ -||a.munters.co.uk^ -||a.munters.com.au^ -||a.munters.com.mx^ -||a.munters.com^ -||a.munters.es^ -||a.munters.fi^ -||a.munters.it^ -||a.munters.jp^ -||a.munters.nl^ -||a.munters.se^ -||a.munters.us^ -||a.pork.org^ -||a.publicmobile.ca^ -||a.redbrickhealth.com^ -||a.replaytheseries.com^ -||a.rohde-schwarz.com.cn^ -||a.rohde-schwarz.com^ -||a.sami.se^ -||a.simonandschuster.com^ -||a.sj.se^ -||a.smetrics.sovereign.com^ -||a.sodra.com^ -||a.spv.se^ -||a.svenskfast.se^ -||a.tactics.com^ -||a.telus.com^ -||a.transportgruppen.se^ -||a.trivita.com^ -||a.wheelabratorgroup.com^ -||aa-aem.hamamatsu.com^ -||aa-metrics.aircard.jp^ -||aa-metrics.airpayment.jp^ -||aa-metrics.airregi.jp^ -||aa-metrics.airreserve.net^ -||aa-metrics.airrsv.net^ -||aa-metrics.airwait.jp^ -||aa-metrics.arg.x.recruit.co.jp^ -||aa-metrics.beauty.hotpepper.jp^ -||aa-metrics.bookingtable.jp^ -||aa-metrics.golf-jalan.net^ -||aa-metrics.handy.airregi.jp^ -||aa-metrics.handy.arg.x.recruit.co.jp^ -||aa-metrics.hokench.com^ -||aa-metrics.hotpepper-gourmet.com^ -||aa-metrics.hotpepper.jp^ -||aa-metrics.jalan.net^ -||aa-metrics.minterior.jp^ -||aa-metrics.ponparemall.com^ -||aa-metrics.r-cash.jp^ -||aa-metrics.recruit-card.jp^ -||aa-metrics.restaurant-board.com^ -||aa-metrics.s-lms.net^ -||aa-metrics.salonboard.com^ -||aa-metrics.tabroom.jp^ -||aa-metrics.trip-ai.jp^ -||aa.analog.com^ -||aa.athome.com^ -||aa.bathandbodyworks.com^ -||aa.cbs.com^ -||aa.cbsi.com^ -||aa.cbsnews.com^ -||aa.cbssports.com^ -||aa.cnet.com^ -||aa.comicbook.com^ -||aa.db-finanzberatung.de^ -||aa.deutsche-bank.de^ -||aa.dyson.at^ -||aa.dyson.be^ -||aa.dyson.ch^ -||aa.dyson.co.uk^ -||aa.dyson.com^ -||aa.dyson.de^ -||aa.dyson.dk^ -||aa.dyson.es^ -||aa.dyson.fr^ -||aa.dyson.ie^ -||aa.dyson.it^ -||aa.dyson.nl^ -||aa.dyson.pt^ -||aa.dyson.se^ -||aa.dysoncanada.ca^ -||aa.fyrst.de^ -||aa.gamespot.com^ -||aa.giantbomb.com^ -||aa.irvinecompanyapartments.com^ -||aa.irvinecompanyoffice.com^ -||aa.kyoceradocumentsolutions.com^ -||aa.last.fm^ -||aa.maxblue.de^ -||aa.mclaren.com^ -||aa.metacritic.com^ -||aa.neom.com^ -||aa.norisbank.de^ -||aa.pacificdentalservices.com^ -||aa.paramountplus.com^ -||aa.popculture.com^ -||aa.poptv.com^ -||aa.postbank.de^ -||aa.reebok.com^ -||aa.reebok.nl^ -||aa.sparebank1.no^ -||aa.tallink.com^ -||aa.tescomobile.com^ -||aa.thedoctorstv.com^ -||aa.tv.com^ -||aa.tvguide.com^ -||aa.wowma.jp^ -||aa.zdnet.com^ -||aaat.2ndstreet.jp^ -||aadata.april-international.com^ -||aainfo.anz.co.nz^ -||aametrics.aktia.fi^ -||aamt.msnbc.com^ -||aamt.nbcnews.com^ -||aamt.newsapp.telemundo.com^ -||aamt.today.com^ -||aanalytics.adelaide.edu.au^ -||aans.athome.com^ -||aas.bellemaison.jp^ -||aas.ismet.kz^ -||aas.mclaren.com^ -||aas.neom.com^ -||aas.visitsaudi.com^ -||abmeldung.information.o2.de^ -||abmeldung.information.whatsappsim.de^ -||abt.bauhaus.es^ -||abt.bauhaus.info^ -||abt.nike.com^ -||abt.nl.bauhaus^ -||academics.academicsuperstore.com^ -||acc.info.lumxpert.signify.com^ -||acc.marketing.adobedxcusteng.com^ -||access.hikaritv.net^ -||acemetrics.aaa.com^ -||acs.woolworths.com.au^ -||activity.newlook.com^ -||adb-analytics.live-now.com^ -||adb-secured.kijk.nl^ -||adb.kijk.nl^ -||adb.superrtl.de^ -||adb.toggoeltern.de^ -||adbedgeexp.aircanada.com^ -||adbmetrics.abc.es^ -||adbmetrics.blogasturias.com^ -||adbmetrics.canarias7.es^ -||adbmetrics.caravantur.eus^ -||adbmetrics.degustacastillayleon.es^ -||adbmetrics.diariosur.es^ -||adbmetrics.diariovasco.com^ -||adbmetrics.elcomercio.es^ -||adbmetrics.eldiariomontanes.es^ -||adbmetrics.elnortedecastilla.es^ -||adbmetrics.hoy.es^ -||adbmetrics.hyundai.com^ -||adbmetrics.ideal.es^ -||adbmetrics.koreanair.com^ -||adbmetrics.larioja.com^ -||adbmetrics.lasprovincias.es^ -||adbmetrics.laverdad.es^ -||adbmetrics.lomejordelvinoderioja.com^ -||adbmetrics.masterelcorreo.com^ -||adbmetrics.miperiodicodigital.com^ -||adbmetrics.vehiculosdeocasion.eus^ -||adbmetrics.vocento.com^ -||adbmetrics.welife.es^ -||adbmetrics.womennow.es^ -||adbmetrics.xn--futuroenespaol-1nb.es^ -||adbsmetrics.ep.hmc.co.kr^ -||adbsmetrics.everland.com^ -||adbsmetrics.genesis.com^ -||adbsmetrics.hanwha.com^ -||adbsmetrics.hyundai.com^ -||adbsmetrics.kia.com^ -||adbsmetrics.koreanair.com^ -||adbsmetrics.kt.com^ -||adbsmetrics.lgcaremall.com^ -||adbsmetrics.lotterentacar.net^ -||adbsmetrics.thewhoo.com^ -||adobe-analytics-dc.belastingdienst.nl^ -||adobe-analytics.vionicshoes.com^ -||adobe-dev-landingpageprefix.descubre.interbank.pe^ -||adobe-ep.cms.gov^ -||adobe-ep.cuidadodesalud.gov^ -||adobe-ep.healthcare.gov^ -||adobe-ep.insurekidsnow.gov^ -||adobe-ep.medicaid.gov^ -||adobe-ep.medicare.gov^ -||adobe-nonsecure.cjone.com^ -||adobe-secure.cjone.com^ -||adobe.aeonbank.co.jp^ -||adobe.autoscout24.at^ -||adobe.autoscout24.be^ -||adobe.autoscout24.bg^ -||adobe.autoscout24.com.tr^ -||adobe.autoscout24.com.ua^ -||adobe.autoscout24.com^ -||adobe.autoscout24.cz^ -||adobe.autoscout24.de^ -||adobe.autoscout24.es^ -||adobe.autoscout24.eu^ -||adobe.autoscout24.fr^ -||adobe.autoscout24.hr^ -||adobe.autoscout24.it^ -||adobe.autoscout24.lu^ -||adobe.autoscout24.nl^ -||adobe.autoscout24.pl^ -||adobe.autoscout24.ro^ -||adobe.autoscout24.ru^ -||adobe.autoscout24.se^ -||adobe.bupaglobal.com^ -||adobe.dynamic.ca^ -||adobe.falabella.com.ar^ -||adobe.falabella.com.co^ -||adobe.falabella.com.pe^ -||adobe.falabella.com^ -||adobe.filmstruck.com^ -||adobe.pmi.org^ -||adobe.sodimac.cl^ -||adobe.sukoonglobalhealth.com^ -||adobe.toridoll.com^ -||adobe.truckscout24.com^ -||adobe.wacoal.jp^ -||adobeanalytic.aerotek.com^ -||adobeanalytic.allegisglobalsolutions.com^ -||adobeanalytic.astoncarter.com^ -||adobeanalytic.teksystems.com^ -||adobeanalytics-http.hds.com^ -||adobeanalytics-https.hds.com^ -||adobeanalytics-secure.girlscouts.org^ -||adobeanalytics.actalentservices.com^ -||adobeanalytics.aerotek.com^ -||adobeanalytics.allegis-partners.com^ -||adobeanalytics.allegisglobalsolutions.com^ -||adobeanalytics.allegisgroup.com^ -||adobeanalytics.astoncarter.com^ -||adobeanalytics.bws.com.au^ -||adobeanalytics.danmurphys.com.au^ -||adobeanalytics.easi.com^ -||adobeanalytics.geico.com^ -||adobeanalytics.gettinghired.com^ -||adobeanalytics.medline.com^ -||adobeanalytics.mlaglobal.com^ -||adobeanalytics.populusgroup.com^ -||adobeanalytics.serveone.co.kr^ -||adobeanalytics.teksystems.com^ -||adobeanalytics.vice.com^ -||adobeedge.morganstanley.com^ -||adobeedge.my.gov.au^ -||adobemarketing.bodendirect.at^ -||adobemetrics.yellohvillage.co.uk^ -||adobemetrics.yellohvillage.com^ -||adobemetrics.yellohvillage.de^ -||adobemetrics.yellohvillage.es^ -||adobemetrics.yellohvillage.fr^ -||adobemetrics.yellohvillage.it^ -||adobemetrics.yellohvillage.nl^ -||adobes.marugame-seimen.com^ -||adobes.pmi.org^ -||adobetarget.yellohvillage.fr^ -||adtarget.barcainnovationhub.com^ -||adtarget.fcbarcelona.cat^ -||adtarget.fcbarcelona.co.it^ -||adtarget.fcbarcelona.com^ -||adtarget.fcbarcelona.es^ -||adtarget.fcbarcelona.fr^ -||adtarget.fcbarcelona.jp^ -||adtarget.fcbarcelona.net^ -||adtd.douglas.at^ -||adtd.douglas.be^ -||adtd.douglas.ch^ -||adtd.douglas.cz^ -||adtd.douglas.de^ -||adtd.douglas.hr^ -||adtd.douglas.hu^ -||adtd.douglas.it^ -||adtd.douglas.nl^ -||adtd.douglas.pl^ -||adtd.douglas.pt^ -||adtd.douglas.ro^ -||adtd.douglas.si^ -||adtd.douglas.sk^ -||adtd.niche-beauty.com^ -||adtd.parfumdreams.at^ -||adtd.parfumdreams.be^ -||adtd.parfumdreams.ch^ -||adtd.parfumdreams.co.uk^ -||adtd.parfumdreams.cz^ -||adtd.parfumdreams.de^ -||adtd.parfumdreams.dk^ -||adtd.parfumdreams.es^ -||adtd.parfumdreams.fi^ -||adtd.parfumdreams.fr^ -||adtd.parfumdreams.ie^ -||adtd.parfumdreams.it^ -||adtd.parfumdreams.nl^ -||adtd.parfumdreams.pl^ -||adtd.parfumdreams.pt^ -||adtd.parfumdreams.se^ -||aec-target.base.be^ -||aec-target.telenet.be^ -||aecid.santanderbank.com^ -||aep-target.credit-suisse.com^ -||aepxlg.adobe.com^ -||ainu.intel.cn^ -||ainu.intel.co.jp^ -||ainu.intel.co.kr^ -||ainu.intel.co.uk^ -||ainu.intel.com.au^ -||ainu.intel.com.br^ -||ainu.intel.com.tw^ -||ainu.intel.com^ -||ainu.intel.de^ -||ainu.intel.es^ -||ainu.intel.fr^ -||ainu.intel.in^ -||ainu.intel.it^ -||ainu.intel.la^ -||ainu.intel.pl^ -||ajo-lp-salesvelocity.adobedemo.com^ -||ajo-zensar.adobesandbox.com^ -||ajo1gdc.ajo1gdc.adobevlab.com^ -||al-smetrics.vizio.com^ -||ametrics.finn.no^ -||ametrics.lumen.com^ -||ametrics.mheducation.com^ -||ametrics.web.dnbbank.no^ -||an.avast.com^ -||an.avast.ru^ -||an.constantcontact.com^ -||an.milb.com^ -||an.mlb.com^ -||an.sny.tv^ -||an.theblaze.com^ -||an.yesnetwork.com^ -||analytic.alabama.aaa.com^ -||analytic.americanfunds.com^ -||analytic.buoyweather.com^ -||analytic.calif.aaa.com^ -||analytic.capitalgroup.com^ -||analytic.cibc.com^ -||analytic.fishtrack.com^ -||analytic.hawaii.aaa.com^ -||analytic.hotelclub.com^ -||analytic.newmexico.aaa.com^ -||analytic.northernnewengland.aaa.com^ -||analytic.simplyhealth.co.uk^ -||analytic.texas.aaa.com^ -||analytic.tidewater.aaa.com^ -||analytic.underarmour.com^ -||analytics-lgs.corebridgefinancial.com^ -||analytics-nssl.bradyid.com^ -||analytics-secure.dollargeneral.com^ -||analytics-ssl.allconnect.com^ -||analytics-ssl.bradyid.com^ -||analytics-ssl.seton.co.uk^ -||analytics.1800contacts.com^ -||analytics.adultswim.co.uk^ -||analytics.airindia.com^ -||analytics.airtron.com^ -||analytics.alrajhibank.com.sa^ -||analytics.americanfunds.com^ -||analytics.amig.com^ -||analytics.argeton.com^ -||analytics.asml.com^ -||analytics.autozone.com^ -||analytics.avis.de^ -||analytics.awhr.com^ -||analytics.bgr.com^ -||analytics.bigfishgames.com^ -||analytics.bleacherreport.com^ -||analytics.boing.es^ -||analytics.boomerangtv.co.uk^ -||analytics.box.com^ -||analytics.boxlunch.com^ -||analytics.brickaward.com^ -||analytics.canaltnt.es^ -||analytics.capitalgroup.com^ -||analytics.cartoonnetwork.co.uk^ -||analytics.cartoonnetwork.com.au^ -||analytics.cartoonnetwork.jp^ -||analytics.cartoonnetworkasia.com^ -||analytics.cartoonnetworkindia.com^ -||analytics.cartoonnetworkmena.com^ -||analytics.cdf.cl^ -||analytics.ceu.com^ -||analytics.changiairport.com^ -||analytics.chilevision.cl^ -||analytics.chvnoticias.cl^ -||analytics.cibc.com^ -||analytics.cibcrewards.com^ -||analytics.cirroenergy.com^ -||analytics.cnfanart.com^ -||analytics.cnnchile.com^ -||analytics.combatefreestyle.com^ -||analytics.conad.it^ -||analytics.concorsicartoonito.it^ -||analytics.corusent.com^ -||analytics.cyrillus.be^ -||analytics.cyrillus.ch^ -||analytics.cyrillus.com^ -||analytics.cyrillus.de^ -||analytics.cyrillus.fr^ -||analytics.data.lloydsbankinggroup.com^ -||analytics.directenergy.ca^ -||analytics.directenergy.com^ -||analytics.discountpowertx.com^ -||analytics.disneyplus.com^ -||analytics.egernsund.com^ -||analytics.egernsund.de^ -||analytics.esporteinterativo.com.br^ -||analytics.evo.co.uk^ -||analytics.firstbankcardcenter.com^ -||analytics.firstbankcardplcc.com^ -||analytics.firstnational.com^ -||analytics.fishtrack.com^ -||analytics.floridatravellife.com^ -||analytics.fnbfremont.com^ -||analytics.fnni.com^ -||analytics.futuro360.com^ -||analytics.geastore.com^ -||analytics.geoutletstore.com^ -||analytics.gestore.com^ -||analytics.gewaterheater.com^ -||analytics.greenmountain.com^ -||analytics.greenmountainenergy.com^ -||analytics.hardrock.com^ -||analytics.haworth.com^ -||analytics.hazeldenbettyford.org^ -||analytics.hiexpress.com^ -||analytics.hlntv.com^ -||analytics.holidayinn.com^ -||analytics.hollywoodlife.com^ -||analytics.homebank.ro^ -||analytics.homes.com^ -||analytics.hottopic.com^ -||analytics.id.amazongames.com^ -||analytics.ihg.com^ -||analytics.ishopchangi.com^ -||analytics.jjkellerconsulting.com^ -||analytics.jjkellerdatasense.com^ -||analytics.jjkellersafety.com^ -||analytics.johnson.ca^ -||analytics.joincambridge.com^ -||analytics.kellerencompass.com^ -||analytics.kellerpermits.com^ -||analytics.kellyservices.com^ -||analytics.lendio.com^ -||analytics.lexisnexisrisk.com^ -||analytics.makro.be^ -||analytics.makro.pt^ -||analytics.martinandosa.com^ -||analytics.massivwerthaus.at^ -||analytics.metro-cc.ru^ -||analytics.metro.be^ -||analytics.metro.co.in^ -||analytics.metro.de^ -||analytics.metro.fr^ -||analytics.metro.pk^ -||analytics.metro.ua^ -||analytics.midas-antilles.fr^ -||analytics.midas.be^ -||analytics.midas.ci^ -||analytics.midas.es^ -||analytics.midas.fr^ -||analytics.midas.it^ -||analytics.midas.pt^ -||analytics.midas.re^ -||analytics.midas.sn^ -||analytics.midas.tc^ -||analytics.mondotv.jp^ -||analytics.myapstore.com^ -||analytics.mystream.com^ -||analytics.national-lottery.co.uk^ -||analytics.navyfederal.org^ -||analytics.ncaa.com^ -||analytics.nordea.com^ -||analytics.nordea.dk^ -||analytics.nordea.fi^ -||analytics.nordea.no^ -||analytics.nordea.se^ -||analytics.nrg.com^ -||analytics.nrgprotects.com^ -||analytics.onlinehomeretail.co.uk^ -||analytics.pgatour.com^ -||analytics.phn.com^ -||analytics.picknrg.com^ -||analytics.pipelife-bewaesserung.at^ -||analytics.pipelife.at^ -||analytics.pipelife.bg^ -||analytics.pipelife.com.tr^ -||analytics.pipelife.com^ -||analytics.pipelife.cz^ -||analytics.pipelife.de^ -||analytics.pipelife.ee^ -||analytics.pipelife.hr^ -||analytics.pipelife.hu^ -||analytics.pipelife.ie^ -||analytics.pipelife.lt^ -||analytics.pipelife.lv^ -||analytics.pipelife.nl^ -||analytics.pipelife.no^ -||analytics.pipelife.pl^ -||analytics.pipelife.ro^ -||analytics.pipelife.rs^ -||analytics.pipelife.se^ -||analytics.pipelife.si^ -||analytics.plumbworld.co.uk^ -||analytics.pnc.com^ -||analytics.qualcomm.com^ -||analytics.ratioform.ch^ -||analytics.reliant.com^ -||analytics.runpath.com^ -||analytics.seagate.com^ -||analytics.shopncaasports.com^ -||analytics.simplii.com^ -||analytics.simplyhealth.co.uk^ -||analytics.sixt.be^ -||analytics.sixt.cn^ -||analytics.sixt.com^ -||analytics.sixt.de^ -||analytics.sixt.es^ -||analytics.sixt.fr^ -||analytics.sixt.jobs^ -||analytics.sixt.jp^ -||analytics.sixt.nl^ -||analytics.sixtcarsales.de^ -||analytics.sixtmiddleeast.com^ -||analytics.skinit.com^ -||analytics.smart.mercedes-benz.com^ -||analytics.soluforce.com^ -||analytics.sona-mira.co.jp^ -||analytics.southpointcasino.com^ -||analytics.spark.co.nz^ -||analytics.superstation.com^ -||analytics.surfline.com^ -||analytics.sydney.edu.au^ -||analytics.tabichan.jp^ -||analytics.tbs.com^ -||analytics.tcm.com^ -||analytics.techem.com^ -||analytics.techem.de^ -||analytics.thehartford.com^ -||analytics.theinstitutes.org^ -||analytics.tnt-tv.com^ -||analytics.tnt-tv.de^ -||analytics.tnt-tv.pl^ -||analytics.tnt-tv.ro^ -||analytics.tnt.africa^ -||analytics.tntdram.com^ -||analytics.tntdrama.com^ -||analytics.tntdramma.com^ -||analytics.tntsports.cl^ -||analytics.tntsports.com.ar^ -||analytics.tntsports.com.br^ -||analytics.tntsports.com^ -||analytics.tondach.pl^ -||analytics.toyotaforklift.com^ -||analytics.truckingauthority.com^ -||analytics.trutv.com^ -||analytics.turnertv.com^ -||analytics.ubs.com^ -||analytics.uhhospitals.org^ -||analytics.underarmour.com^ -||analytics.unive.nl^ -||analytics.verizon.com^ -||analytics.verizonwireless.com^ -||analytics.virginaustralia.com^ -||analytics.virginmobileusa.com^ -||analytics.visible.com^ -||analytics.warnertv.fr^ -||analytics.weldonowen.com^ -||analytics.wellington.com^ -||analytics.wienerberger-building-solutions.com^ -||analytics.wienerberger.al^ -||analytics.wienerberger.at^ -||analytics.wienerberger.ba^ -||analytics.wienerberger.be^ -||analytics.wienerberger.bg^ -||analytics.wienerberger.co.uk^ -||analytics.wienerberger.com^ -||analytics.wienerberger.cz^ -||analytics.wienerberger.de^ -||analytics.wienerberger.ee^ -||analytics.wienerberger.fi^ -||analytics.wienerberger.fr^ -||analytics.wienerberger.hr^ -||analytics.wienerberger.hu^ -||analytics.wienerberger.in^ -||analytics.wienerberger.it^ -||analytics.wienerberger.lt^ -||analytics.wienerberger.mk^ -||analytics.wienerberger.nl^ -||analytics.wienerberger.no^ -||analytics.wienerberger.pl^ -||analytics.wienerberger.ro^ -||analytics.wienerberger.rs^ -||analytics.wienerberger.se^ -||analytics.wienerberger.si^ -||analytics.wienerberger.sk^ -||analytics.xoomenergy.com^ -||analytics.zagg.com^ -||analytics1.dillards.com^ -||analyticsbusiness.ing.ro^ -||analyticsnarc.ro.ing.net^ -||analyticsnossl.forcepoint.com^ -||analyticsresults.bildungsforum.datev.de^ -||analyticsresults.datev-karriereblog.de^ -||analyticsresults.datev-magazin.de^ -||analyticsresults.datev-mymarketing.de^ -||analyticsresults.datev.com^ -||analyticsresults.datev.de^ -||analyticsresults.dev.datev.de^ -||analyticsresults.trialog-magazin.de^ -||analyticsssl.forcepoint.com^ -||anl.footlocker.com^ -||anmet.originenergy.com.au^ -||ans.avast.com^ -||ans.avast.ru^ -||ans.milb.com^ -||ans.mlb.com^ -||ans.worldbaseballclassic.com^ -||ans.yesnetwork.com^ -||as.autobild.de^ -||as.axelspringer.com^ -||as.bild.de^ -||as.businessinsider.de^ -||as.bz-berlin.de^ -||as.computerbild.de^ -||as.fitbook.de^ -||as.metal-hammer.de^ -||as.musikexpress.de^ -||as.myhomebook.de^ -||as.petbook.de^ -||as.rollingstone.de^ -||as.stylebook.de^ -||as.techbook.de^ -||as.travelbook.de^ -||as.welt.de^ -||as.wieistmeineip.de^ -||asc.e-conolight.com^ -||asc.solidworks.com^ -||asd.bauhaus.at^ -||asd.bauhaus.es^ -||asd.bauhaus.hr^ -||asd.bauhaus.info^ -||asd.bauhaus.lu^ -||asd.nl.bauhaus^ -||assets2.aainsurance.co.nz^ -||assets2.aami.com.au^ -||assets2.apia.com.au^ -||assets2.bingle.com.au^ -||assets2.cilinsurance.com.au^ -||assets2.gio.com.au^ -||assets2.shannons.com.au^ -||assets2.suncorp.com.au^ -||assets2.suncorpbank.com.au^ -||assets2.terrischeer.com.au^ -||assets2.vanz.vero.co.nz^ -||assets2.vero.co.nz^ -||assinatura.marketingbmg.bancobmg.com.br^ -||at-cdn.swisscom.ch^ -||at-ecomm.levi.com^ -||at.db-finanzberatung.de^ -||at.deutsche-bank.de^ -||at.maxblue.de^ -||at.mclaren.com^ -||at.neom.com^ -||at.norisbank.de^ -||at.postbank.de^ -||at.swisscom.ch^ -||at.vodafone.de^ -||atarget.adelaide.edu.au^ -||atarget.csu.edu.au^ -||atarget.firstrepublic.com^ -||atarget.harley-davidson.com^ -||atgt.grafana.com^ -||atsmetrics.adobe.com^ -||audience.standardchartered.com.tw^ -||awap.equifax.com^ -||axp.8newsnow.com^ -||axp.abc27.com^ -||axp.abc4.com^ -||axp.bigcountryhomepage.com^ -||axp.binghamtonhomepage.com^ -||axp.borderreport.com^ -||axp.brproud.com^ -||axp.cbs17.com^ -||axp.cbs42.com^ -||axp.cbs4indy.com^ -||axp.cenlanow.com^ -||axp.centralillinoisproud.com^ -||axp.cnyhomepage.com^ -||axp.conchovalleyhomepage.com^ -||axp.counton2.com^ -||axp.cw33.com^ -||axp.cw39.com^ -||axp.cw7az.com^ -||axp.dcnewsnow.com^ -||axp.everythinglubbock.com^ -||axp.fourstateshomepage.com^ -||axp.fox16.com^ -||axp.fox21news.com^ -||axp.fox2now.com^ -||axp.fox40.com^ -||axp.fox44news.com^ -||axp.fox4kc.com^ -||axp.fox56news.com^ -||axp.fox59.com^ -||axp.fox5sandiego.com^ -||axp.fox8.com^ -||axp.informnny.com^ -||axp.kark.com^ -||axp.kdvr.com^ -||axp.keloland.com^ -||axp.ketk.com^ -||axp.kfor.com^ -||axp.kget.com^ -||axp.khon2.com^ -||axp.klfy.com^ -||axp.koin.com^ -||axp.kron4.com^ -||axp.krqe.com^ -||axp.ksn.com^ -||axp.ksnt.com^ -||axp.ktalnews.com^ -||axp.ktla.com^ -||axp.ktsm.com^ -||axp.kxan.com^ -||axp.kxnet.com^ -||axp.localsyr.com^ -||axp.myarklamiss.com^ -||axp.mychamplainvalley.com^ -||axp.myfox8.com^ -||axp.myhighplains.com^ -||axp.mypanhandle.com^ -||axp.mystateline.com^ -||axp.mysterywire.com^ -||axp.mytwintiers.com^ -||axp.mywabashvalley.com^ -||axp.nbc4i.com^ -||axp.news10.com^ -||axp.newsnationnow.com^ -||axp.nwahomepage.com^ -||axp.ourquadcities.com^ -||axp.ozarksfirst.com^ -||axp.pahomepage.com^ -||axp.phl17.com^ -||axp.pix11.com^ -||axp.qcnews.com^ -||axp.rochesterfirst.com^ -||axp.siouxlandproud.com^ -||axp.snntv.com^ -||axp.texomashomepage.com^ -||axp.thehill.com^ -||axp.tristatehomepage.com^ -||axp.upmatters.com^ -||axp.valleycentral.com^ -||axp.wane.com^ -||axp.wate.com^ -||axp.wavy.com^ -||axp.wboy.com^ -||axp.wbtw.com^ -||axp.wcia.com^ -||axp.wdhn.com^ -||axp.wdtn.com^ -||axp.wearegreenbay.com^ -||axp.westernslopenow.com^ -||axp.wfla.com^ -||axp.wfxrtv.com^ -||axp.wgno.com^ -||axp.wgnradio.com^ -||axp.wgntv.com^ -||axp.whnt.com^ -||axp.who13.com^ -||axp.wiproud.com^ -||axp.wivb.com^ -||axp.wjbf.com^ -||axp.wjhl.com^ -||axp.wjtv.com^ -||axp.wkbn.com^ -||axp.wkrg.com^ -||axp.wkrn.com^ -||axp.wlns.com^ -||axp.wnct.com^ -||axp.woodtv.com^ -||axp.wowktv.com^ -||axp.wpri.com^ -||axp.wrbl.com^ -||axp.wreg.com^ -||axp.wric.com^ -||axp.wsav.com^ -||axp.wspa.com^ -||axp.wtaj.com^ -||axp.wtnh.com^ -||axp.wtrf.com^ -||axp.wvnstv.com^ -||axp.wwlp.com^ -||axp.wytv.com^ -||axp.yourbasin.com^ -||axp.yourbigsky.com^ -||axp.yourcentralvalley.com^ -||axp.yourerie.com^ -||b.aecf.org^ -||b.allsecur.nl^ -||b.escardio.org^ -||b.fox.com^ -||b.foxsports.com^ -||b.freshpair.com^ -||b.fxnetworks.com^ -||b.koodomobile.com^ -||b.law.com^ -||b.m.mynewplace.com^ -||b.medtronic.com^ -||b.mibank.com^ -||b.miretirement.com^ -||b.mitrust.com^ -||b.miwebflex.com^ -||b.mynewplace.com^ -||b.parade.com^ -||b.publicmobile.ca^ -||b.redbrickhealth.com^ -||b.rohde-schwarz.com^ -||b.rwjf.org^ -||b.simonandschuster.com^ -||b.simyo.de^ -||b.snow.com^ -||b.socialdemokraterna.se^ -||b.telus.com^ -||b2binsider.adobe.com^ -||bank.svb.com^ -||bcomniture.focus.de^ -||beer2s.millerbrewing.com^ -||bismetrics.experian.com^ -||biz1.kddi.com^ -||blau-subdomain.b.information.blau.de^ -||bluelp.2ask.blue.com.hk^ -||brands.lookfantastic.com^ -||bsna.galeria-kaufhof.de^ -||bsna.inno.be^ -||c.mibank.com^ -||c.musicradio.com^ -||c.snow.com^ -||candy.sees.com^ -||catalogs.printplace.com^ -||caterpillarsigns.coversandall.ca^ -||caterpillarsigns.coversandall.co.uk^ -||caterpillarsigns.coversandall.com.au^ -||caterpillarsigns.coversandall.com^ -||caterpillarsigns.coversandall.eu^ -||ccpd.jet2.com^ -||ccpd.jet2holidays.com^ -||cctrkom.creditcards.com^ -||cdp.cifinancial.com^ -||cesario.bt.no^ -||cgwebmetrics.capgroup.com^ -||charms.pugster.com^ -||christian.lifeway.com^ -||christians.lifeway.com^ -||ci.intuit.ca^ -||ci.intuit.co.uk^ -||ci.intuit.com^ -||ci.quickbooks.com^ -||clerks.doccheck.com^ -||clnmetrics.cisco.com^ -||cmon.congress.gov^ -||cname-aa.022022.net^ -||cname-aa.engineersguide.jp^ -||cname-aa.hatarakunavi.net^ -||cname-aa.staffservice-engineering.jp^ -||cname-aa.staffservice-medical.jp^ -||cname-aa.staffservice.co.jp^ -||code.randomhouse.com^ -||collect.allianz-technology.ch^ -||collect.allianz.ch^ -||collect.cap.ch^ -||collect.elvia.ch^ -||collect.helsana-preprod.ch^ -||collect.helsana.ch^ -||collect.vans.com.cn^ -||collect2.allianz.ch^ -||collection.saga.co.uk^ -||collector.betway.be^ -||collector.betway.com^ -||collector.hippodromeonline.com^ -||connectstats.mckesson.com^ -||consent.clientemais.paodeacucar.com^ -||consent.online.paodeacucar.com^ -||contoso-my.sharepoint.com^ -||cookies-adobe.kbc.be^ -||cp.deltadentalwa.com^ -||cs.analytics.lego.com^ -||csmetrics.wilton.com^ -||csvt002.harrisbank.com^ -||csvt005.heretakethewheel.com^ -||csvt009.bmoharris.com^ -||csvti.intuit.ca^ -||csvtq.intuit.co.uk^ -||csvtr.bmo.com^ -||csvtr02.bmocorpmc.com^ -||csvtr05.mosaikbusiness.com^ -||csvtr07.bmoinvestorline.com^ -||csvtr09.bmonesbittburns.com^ -||csvtr10.bmocm.com^ -||csvtr13.bmodelawaretrust.com^ -||csvtt.bmolife.com^ -||csvtu.bmolending.com^ -||cups.republicoftea.com^ -||data-ssl.pnet.co.za^ -||data-ssl.stepstone.at^ -||data-ssl.stepstone.be^ -||data-ssl.stepstone.de^ -||data-ssl.stepstone.fr^ -||data-ssl.stepstone.nl^ -||data-ssl.stepstone.pl^ -||data.2ask.blue.com.hk^ -||data.a.news.aida.de^ -||data.abc.es^ -||data.accenturemkt.adobesandbox.com^ -||data.accentureplcmkt.adobesandbox.com^ -||data.accionista.caixabank.com^ -||data.account.assurancewireless.com^ -||data.account.metrobyt-mobile.com^ -||data.accounts.t-mobile.com^ -||data.accountsamericas.coca-cola.com^ -||data.accountsapac.coca-cola.com^ -||data.accountsemea.coca-cola.com^ -||data.accountslatam.coca-cola.com^ -||data.admin-updates.airmiles.ca^ -||data.aem-sites-internal.adobe.com^ -||data.ajo-demosystem4.adobedemosystem.com^ -||data.ajo2emea.adobevlab.com^ -||data.ajodev.cbussuper.com.au^ -||data.ajopharmabeta.riteaid.com^ -||data.ajostg.cfs.com.au^ -||data.ajostg.colonialfirststate.com.au^ -||data.ajotest.cbussuper.com.au^ -||data.alert.servicenow.com^ -||data.americas.coca-cola.com^ -||data.apac.coca-cola.com^ -||data.articles.ringcentral.com^ -||data.asp.coca-cola.com^ -||data.au-email.princess.com^ -||data.au-guest.princess.com^ -||data.autocasion.com^ -||data.automaticas.realmadrid.com^ -||data.avid.com^ -||data.b.information.blau.de^ -||data.b2bmail.adobe.com^ -||data.bioplanet.be^ -||data.bless.blesscollectionhotels.com^ -||data.boletin.super99.com^ -||data.business.nordea.dk^ -||data.business.nordea.fi^ -||data.business.nordea.no^ -||data.business.nordea.se^ -||data.campagneinformative.inail.it^ -||data.campaign.cfs.com.au^ -||data.campaigns.cbussuper.com.au^ -||data.campaigns.cineplex.com^ -||data.campaigns.colonialfirststate.com.au^ -||data.campaigns.mediasuper.com.au^ -||data.campaigns.therecroom.com^ -||data.canon.club-news.com.hk^ -||data.cart.metrobyt-mobile.com^ -||data.carts.t-mobile.com^ -||data.chelseafc.com^ -||data.client-comms.nedbank.co.za^ -||data.cliente.clubeextra.com.br^ -||data.clientemais.paodeacucar.com^ -||data.clientes.caixabankpc.com^ -||data.clientes.palladiumhotelgroup.com^ -||data.club.costacoffee.in^ -||data.club.costacoffee.pl^ -||data.collectandgo.be^ -||data.collishop.be^ -||data.colruyt.be^ -||data.colruytgroup.com^ -||data.comms.coca-cola.com^ -||data.comms.hestapartners.com.au^ -||data.comms.pokerstars.com^ -||data.comms.pokerstars.fr^ -||data.communicatie.nn.nl^ -||data.communication.guard.me^ -||data.communications.cbussuper.com.au^ -||data.communications.manulife.ca^ -||data.comunicaciones.bancoentrerios.net^ -||data.comunicaciones.bancosanjuan.net^ -||data.comunicaciones.bancosantacruz.net^ -||data.comunicaciones.bancosantafe.net^ -||data.comunicaciones.ficohsa.hn^ -||data.comunicaciones.jetstereo.com^ -||data.comunicaciones.motomundohn.com^ -||data.comunicaciones.solvenza.hn^ -||data.comunicaciones.ultramotorhn.com^ -||data.comunitat.3cat.cat^ -||data.connect.riolasvegas.com^ -||data.connect.riteaid.com^ -||data.connectingthreads.com^ -||data.craftsamericana.com^ -||data.crm-edm.thsrc.com.tw^ -||data.crm.lizearle.com^ -||data.crm.soapandglory.com^ -||data.cs.officedepot.com^ -||data.csdev.officedepot.com^ -||data.customer-success-apac.adobe.com^ -||data.customer.amp.com.au^ -||data.customermail.bioplanet.be^ -||data.customermail.collectandgo.be^ -||data.customermail.colruyt.be^ -||data.customermail.mijnextra.be^ -||data.customermail.mijnxtra.be^ -||data.customermail.sparcolruytgroup.be^ -||data.customermail.syst.colruytgroup.com^ -||data.customermail.test.colruytgroup.com^ -||data.cx.hrhibiza.com^ -||data.cx.palladiumhotelgroup.com^ -||data.cx.theushuaiaexperience.com^ -||data.cxbevents.caixabank.com^ -||data.dats24.be^ -||data.deinfeedback.alditalk-kundenbetreuung.de^ -||data.descubre.interbank.pe^ -||data.dev-ajo.caixabank.com^ -||data.dev-notifications.future.smart.com^ -||data.devbmg.bancobmg.com.br^ -||data.devmail.northeast.aaa.com^ -||data.digital.costco.ca^ -||data.digital.costco.com^ -||data.discover.ringcentral.com^ -||data.dm.casio.com^ -||data.dm.casio.info^ -||data.dow.com^ -||data.dreambaby.be^ -||data.dreamland.be^ -||data.e.adobe.com^ -||data.e.lotteryoffice.com.au^ -||data.e.ringcentral.com^ -||data.e.visionmondiale.ca^ -||data.e.worldvision.ca^ -||data.ear.nespresso.com^ -||data.eat.nespresso.com^ -||data.eau.nespresso.com^ -||data.ebe.nespresso.com^ -||data.ebr.nespresso.com^ -||data.eca.nespresso.com^ -||data.ech.nespresso.com^ -||data.ecl.nespresso.com^ -||data.eco.nespresso.com^ -||data.ecz.nespresso.com^ -||data.ede.nespresso.com^ -||data.edge-cert.emailtechops.net^ -||data.edk.nespresso.com^ -||data.edm.chowtaifook.com^ -||data.education.aware.com.au^ -||data.ees.nespresso.com^ -||data.efr.nespresso.com^ -||data.egr.nespresso.com^ -||data.ehk.nespresso.com^ -||data.ehu.nespresso.com^ -||data.eit.nespresso.com^ -||data.ejp.nespresso.com^ -||data.ekr.nespresso.com^ -||data.elu.nespresso.com^ -||data.em.assurancewireless.com^ -||data.em.macys.com^ -||data.em.officedepot.com^ -||data.em.ringcentral.com^ -||data.em.t-mobile.com^ -||data.em.viking.com^ -||data.em.vikingcruises.com^ -||data.em2.cloudflare.com^ -||data.email-discovery.cjm.adobe.com^ -||data.email-disney.cjm.adobe.com^ -||data.email-kpn.cjm.adobe.com^ -||data.email-lightroom.cjm.adobe.com^ -||data.email-merkle.cjm.adobe.com^ -||data.email-mobiledx.cjm.adobe.com^ -||data.email-signify.cjm.adobe.com^ -||data.email-tsb.cjm.adobe.com^ -||data.email.aida.de^ -||data.email.belgiantrain.be^ -||data.email.gamma.be^ -||data.email.gamma.nl^ -||data.email.gobrightline.com^ -||data.email.hostplus.com.au^ -||data.email.islandsbanki.is^ -||data.email.jet2.com^ -||data.email.jet2holidays.com^ -||data.email.karwei.nl^ -||data.email.key.com^ -||data.email.metrobyt-mobile.com^ -||data.email.podcast.adobe.com^ -||data.email.princess.com^ -||data.email.q8.it^ -||data.email.realmadrid.com^ -||data.email.telmore.dk^ -||data.email.verizon.com^ -||data.email.virginatlantic.com^ -||data.email.yourmessage.aviva.co.uk^ -||data.email.yousee.dk^ -||data.emaillpb.adobe.com^ -||data.emails.aucklandairport.co.nz^ -||data.emails.caixabank.com^ -||data.emails.makro.es^ -||data.emails.makro.nl^ -||data.emails.metro.it^ -||data.emails.metro.ro^ -||data.emails.ringcentral.com^ -||data.emails.vidacaixa.es^ -||data.emailservice.vattenfall.nl^ -||data.emdev.officedepot.com^ -||data.emea.coca-cola.com^ -||data.eml.wegmans.com^ -||data.employercomms.aware.com.au^ -||data.emx.nespresso.com^ -||data.emy.nespresso.com^ -||data.enl.nespresso.com^ -||data.eno.nespresso.com^ -||data.enz.nespresso.com^ -||data.epl.nespresso.com^ -||data.epost.sbanken.no^ -||data.epost.snn.no^ -||data.epsilon.adobesandbox.com^ -||data.ept.nespresso.com^ -||data.erfahrung.o2.de^ -||data.ero.nespresso.com^ -||data.ese.nespresso.com^ -||data.esg.nespresso.com^ -||data.esk.nespresso.com^ -||data.eth.nespresso.com^ -||data.etr.nespresso.com^ -||data.etw.nespresso.com^ -||data.euk.nespresso.com^ -||data.europe.coca-cola.com^ -||data.events.cbussuper.com.au^ -||data.events.pokerstars.dk^ -||data.fans.alexalbon.com^ -||data.fans.realmadrid.com^ -||data.fans.williamsf1.com^ -||data.fundacion.realmadrid.org^ -||data.gc.qantas.com.au^ -||data.giftcards.dev.cjmadobe.com^ -||data.go.bartelldrugs.com^ -||data.grandpalladium.palladiumhotelgroup.com^ -||data.guest.princess.com^ -||data.hardrock.palladiumhotelgroup.com^ -||data.hello.consumercellular.com^ -||data.hk-email.princess.com^ -||data.hk-guest.princess.com^ -||data.hoteles.palladiumhotelgroup.com^ -||data.i.lotteryoffice.com.au^ -||data.i.mysticlake.com^ -||data.ibmnorthamerica.adobesandbox.com^ -||data.info.avianca.com^ -||data.info.aware.com.au^ -||data.info.consumercellular.com^ -||data.info.credit-suisse.com^ -||data.info.ficohsa.com.gt^ -||data.info.ficohsa.com.pa^ -||data.info.gobrightline.com^ -||data.info.jetstereo.com^ -||data.info.lumxpert.signify.com^ -||data.info.metro.fr^ -||data.info.motomundohn.com^ -||data.info.nordea.dk^ -||data.info.nordea.fi^ -||data.info.nordea.no^ -||data.info.nordea.se^ -||data.info.qb.intuit.com^ -||data.info.smart.com^ -||data.info.solvenza.hn^ -||data.info.ultramotorhn.com^ -||data.info.viking.com^ -||data.infobmg.bancobmg.com.br^ -||data.information.ayyildiz.de^ -||data.information.fonic.de^ -||data.information.o2.de^ -||data.information.telefonica.de^ -||data.information.whatsappsim.de^ -||data.inst.socios.realmadrid.com^ -||data.inswa.coca-cola.com^ -||data.investing.questrade.com^ -||data.jp-email.princess.com^ -||data.jp-guest.princess.com^ -||data.keybank.dev.cjmadobe.com^ -||data.latinamerica.coca-cola.com^ -||data.lavozdigital.es^ -||data.lifesize.com^ -||data.loyalty.timhortons.ca^ -||data.lp.eurobet.it^ -||data.m.metro-tr.com^ -||data.m.mysticlake.com^ -||data.m.philadelphiaeagles.com^ -||data.ma1.techvaladobe.com^ -||data.madridista-free.realmadrid.com^ -||data.madridista-premium.realmadrid.com^ -||data.magmail.northeast.aaa.com^ -||data.mail.callme.dk^ -||data.mail.metro.de^ -||data.mail.nn.nl^ -||data.mail.telia.dk^ -||data.mailing.kpn.com^ -||data.mailing.mcafee.com^ -||data.mailing.repsol.com^ -||data.mailtest.lexmei.online^ -||data.markadsmal.islandsbanki.is^ -||data.marketing-madridista-junior.realmadrid.com^ -||data.marketing-offers.airmiles.ca^ -||data.marketing.aeptest.a.intuit.com^ -||data.marketing.bancobmg.com.br^ -||data.marketing.boradetop.com.br^ -||data.marketing.doitbest.com^ -||data.marketing.ecg.magento.com^ -||data.marketing.giftcards.com^ -||data.marketing.onemarketinguxp.com^ -||data.marketing.perficientdemo.com^ -||data.marketing.smart.com^ -||data.marketing.stark.dk^ -||data.marketing.super99.com^ -||data.marketing.williamsf1.com^ -||data.marketingbmg.bancobmg.com.br^ -||data.member.aware.com.au^ -||data.member.unitedhealthcare.com^ -||data.membership.chowtaifook.com^ -||data.message.aircanada.com^ -||data.mkt.qb.intuit.com^ -||data.mktg.nfl.com^ -||data.mmail.northeast.aaa.com^ -||data.msg.wegmans.com^ -||data.msgs.westpac.com.au^ -||data.myhealth.riteaid.com^ -||data.nedbanktest.dev.cjmadobe.com^ -||data.news.airmiles.ca^ -||data.news.blesscollectionhotels.com^ -||data.news.eurobet.it^ -||data.news.lumxpert.signify.com^ -||data.news.palladiumhotelgroup.com^ -||data.news.paypal.com^ -||data.news.riyadhair.com^ -||data.news.wizconnected.com^ -||data.newsletter.avianca.com^ -||data.newsletter.italia.it^ -||data.newsletter.seasmiles.com^ -||data.noreply.timhortons.ca^ -||data.noreply.timsfinancial.ca^ -||data.northeast.aaa.com^ -||data.notice.assurancewireless.com^ -||data.notice.metrobyt-mobile.com^ -||data.notice.t-mobile.com^ -||data.notificaciones.ficohsa.com^ -||data.notification.giftcards.com^ -||data.notification.servicenow.com^ -||data.notifications.mylighting.signify.com^ -||data.notifications.portal.cooperlighting.com^ -||data.notifications.portal.signify.com^ -||data.notifications.riolasvegas.com^ -||data.okay.be^ -||data.online.clubeextra.com.br^ -||data.online.paodeacucar.com^ -||data.onlyyou.palladiumhotelgroup.com^ -||data.orders.costco.com^ -||data.outbound.luxair.lu^ -||data.page.worldvision.ca^ -||data.partner-offers.airmiles.ca^ -||data.partner-updates.airmiles.ca^ -||data.pharmacyservices.riteaid.com^ -||data.phg.palladiumhotelgroup.com^ -||data.pisos.com^ -||data.pnet.co.za^ -||data.prewards.palladiumhotelgroup.com^ -||data.promo.timhortons.ca^ -||data.promo.timhortons.com^ -||data.promos.timsfinancial.ca^ -||data.promotions.riolasvegas.com^ -||data.publicis-sapient-global-aep.publicissapient.com^ -||data.purchase.riteaid.com^ -||data.qaegift.giftcards.com^ -||data.qamailing.mcafee.com^ -||data.qamarketing.giftcards.com^ -||data.resources.ringcentral.com^ -||data.rewards.riteaid.com^ -||data.rmsocio.realmadrid.com^ -||data.securemetrics-apple.com^ -||data.service.aware.com.au^ -||data.service.cfs.com.au^ -||data.service.colonialfirststate.com.au^ -||data.service.manulife.ca^ -||data.service.miumiu.com^ -||data.service.paypal.com^ -||data.service.prada.com^ -||data.service.wizconnected.com^ -||data.services.telia.dk^ -||data.servicing.key.com^ -||data.sg-email.princess.com^ -||data.sg-guest.princess.com^ -||data.shop.williamsf1.com^ -||data.sm.princess.com^ -||data.smartinfo.future.smart.com^ -||data.smartmkt.future.smart.com^ -||data.smspromo.consumercellular.com^ -||data.socio.realmadrid.net^ -||data.stage-mail.fpl.com^ -||data.stage-message.aircanada.com^ -||data.stage-notifications.future.smart.com^ -||data.stageegift.giftcards.com^ -||data.stagemailing.mcafee.com^ -||data.stagemarketing.giftcards.com^ -||data.stageno.reply.fpl.com^ -||data.stepstone.be^ -||data.stepstone.de^ -||data.stepstone.nl^ -||data.surveys.aware.com.au^ -||data.t.epost.dnb.no^ -||data.t.worldvision.ca^ -||data.tc.jetstar.com^ -||data.thepointsguy.com^ -||data.tmail.northeast.aaa.com^ -||data.transaction.giftcards.com^ -||data.transactional.williamsf1.com^ -||data.trn.qb.intuit.com^ -||data.trx.costco.ca^ -||data.trx.costco.com^ -||data.tw-email.princess.com^ -||data.tw-guest.princess.com^ -||data.txn.puntoscolombia.com^ -||data.uk-email.princess.com^ -||data.uk-guest.princess.com^ -||data.umfrage.aetkasmart.de^ -||data.umfrage.ayyildiz.de^ -||data.umfrage.blau.de^ -||data.umfrage.nettokom.de^ -||data.umfrage.whatsappsim.de^ -||data.vinsolutions.com^ -||data.voyager.dev.cjmadobe.com^ -||data.web.doitbest.com^ -||data.welcome.realmadrid.com^ -||data.wunderman-email.cjm.adobe.com^ -||data.yashir.5555555.co.il^ -||data.yashir.9mil.co.il^ -||data.your.hesta.com.au^ -||data.your.hestaformercy.com.au^ -||data0.bell.ca^ -||data0.sympatico.ca^ -||data0.virginmobile.ca^ -||data1.bell.ca^ -||data1.sparkasse.at^ -||data1.virginmobile.ca^ -||data1.virginplus.ca^ -||datas.connectingthreads.com^ -||datas.knitpicks.com^ -||dc.audi.com^ -||dc.kfz-steuercheck.de^ -||dc.luzygas.ahorraconrepsol.com^ -||dc.madridistas.com^ -||dc.realmadrid.com^ -||dc.realmadridnext.com^ -||dc.reiseversicherung.de^ -||dc.repsol.com^ -||dc.repsol.es^ -||dc.stenaline.co.uk^ -||dc.stenaline.com^ -||dc.stenaline.cz^ -||dc.stenaline.de^ -||dc.stenaline.dk^ -||dc.stenaline.ee^ -||dc.stenaline.es^ -||dc.stenaline.fi^ -||dc.stenaline.fr^ -||dc.stenaline.ie^ -||dc.stenaline.it^ -||dc.stenaline.lt^ -||dc.stenaline.lv^ -||dc.stenaline.nl^ -||dc.stenaline.no^ -||dc.stenaline.pl^ -||dc.stenaline.ru^ -||dc.stenaline.se^ -||dc.stenalinetravel.com^ -||dc.tuenergia.repsol.com^ -||dc.waylet.es^ -||dc2.credit-suisse.com^ -||dcs.audi.com^ -||dcs.esprit.at^ -||dcs.esprit.au^ -||dcs.esprit.be^ -||dcs.esprit.co.uk^ -||dcs.esprit.com^ -||dcs.esprit.cz^ -||dcs.esprit.de^ -||dcs.esprit.dk^ -||dcs.esprit.es^ -||dcs.esprit.eu^ -||dcs.esprit.fi^ -||dcs.esprit.fr^ -||dcs.esprit.hk^ -||dcs.esprit.kr^ -||dcs.esprit.nl^ -||dcs.esprit.ph^ -||dcs.esprit.se^ -||dcs.esprit.sg^ -||dcs.esprit.tw^ -||dcs.esprit.us^ -||dcs.espritshop.ch^ -||dcs.espritshop.it^ -||dcs.espritshop.pl^ -||dcs.plussizetech.com^ -||dcs.reiseversicherung.de^ -||delivery.lululemon.com^ -||demo.emaillpb.adobe.com^ -||desuscripcion.phg.palladiumhotelgroup.com^ -||dev.email-signify.cjm.adobe.com^ -||di2.zooplus.es^ -||digistat.westjet.com^ -||digistats.westjet.com^ -||dii1.bitiba.be^ -||dii1.bitiba.cz^ -||dii1.bitiba.de^ -||dii1.bitiba.dk^ -||dii1.bitiba.fi^ -||dii1.bitiba.fr^ -||dii1.bitiba.it^ -||dii1.bitiba.pl^ -||dii1.zoochic-eu.ru^ -||dii1.zoohit.cz^ -||dii1.zoohit.si^ -||dii1.zoohit.sk^ -||dii1.zooplus.at^ -||dii1.zooplus.be^ -||dii1.zooplus.bg^ -||dii1.zooplus.ch^ -||dii1.zooplus.co.uk^ -||dii1.zooplus.com^ -||dii1.zooplus.de^ -||dii1.zooplus.dk^ -||dii1.zooplus.fi^ -||dii1.zooplus.fr^ -||dii1.zooplus.gr^ -||dii1.zooplus.hr^ -||dii1.zooplus.hu^ -||dii1.zooplus.ie^ -||dii1.zooplus.it^ -||dii1.zooplus.nl^ -||dii1.zooplus.no^ -||dii1.zooplus.pl^ -||dii1.zooplus.pt^ -||dii1.zooplus.ro^ -||dii1.zooplus.se^ -||dii2.bitiba.be^ -||dii2.bitiba.ch^ -||dii2.bitiba.co.uk^ -||dii2.bitiba.cz^ -||dii2.bitiba.de^ -||dii2.bitiba.dk^ -||dii2.bitiba.es^ -||dii2.bitiba.fi^ -||dii2.bitiba.fr^ -||dii2.bitiba.it^ -||dii2.bitiba.nl^ -||dii2.bitiba.pl^ -||dii2.bitiba.se^ -||dii2.shpd.ext.zooplus.io^ -||dii2.shpp.ext.zooplus.io^ -||dii2.zoobee.de^ -||dii2.zoochic-eu.ru^ -||dii2.zoohit.cz^ -||dii2.zoohit.si^ -||dii2.zoohit.sk^ -||dii2.zooplus.at^ -||dii2.zooplus.be^ -||dii2.zooplus.bg^ -||dii2.zooplus.ch^ -||dii2.zooplus.co.uk^ -||dii2.zooplus.com^ -||dii2.zooplus.de^ -||dii2.zooplus.dk^ -||dii2.zooplus.es^ -||dii2.zooplus.fi^ -||dii2.zooplus.fr^ -||dii2.zooplus.gr^ -||dii2.zooplus.hr^ -||dii2.zooplus.hu^ -||dii2.zooplus.ie^ -||dii2.zooplus.it^ -||dii2.zooplus.nl^ -||dii2.zooplus.no^ -||dii2.zooplus.pl^ -||dii2.zooplus.pt^ -||dii2.zooplus.ro^ -||dii2.zooplus.se^ -||dii3.bitiba.be^ -||dii3.bitiba.ch^ -||dii3.bitiba.co.uk^ -||dii3.bitiba.cz^ -||dii3.bitiba.de^ -||dii3.bitiba.dk^ -||dii3.bitiba.es^ -||dii3.bitiba.fi^ -||dii3.bitiba.fr^ -||dii3.bitiba.it^ -||dii3.bitiba.nl^ -||dii3.bitiba.pl^ -||dii3.bitiba.se^ -||dii3.zoochic-eu.ru^ -||dii3.zoohit.cz^ -||dii3.zoohit.si^ -||dii3.zoohit.sk^ -||dii3.zooplus.at^ -||dii3.zooplus.be^ -||dii3.zooplus.bg^ -||dii3.zooplus.ch^ -||dii3.zooplus.co.uk^ -||dii3.zooplus.com^ -||dii3.zooplus.de^ -||dii3.zooplus.dk^ -||dii3.zooplus.es^ -||dii3.zooplus.fi^ -||dii3.zooplus.fr^ -||dii3.zooplus.gr^ -||dii3.zooplus.hr^ -||dii3.zooplus.hu^ -||dii3.zooplus.ie^ -||dii3.zooplus.it^ -||dii3.zooplus.nl^ -||dii3.zooplus.no^ -||dii3.zooplus.pl^ -||dii3.zooplus.pt^ -||dii3.zooplus.ro^ -||dii3.zooplus.se^ -||dii4.bitiba.be^ -||dii4.bitiba.ch^ -||dii4.bitiba.co.uk^ -||dii4.bitiba.cz^ -||dii4.bitiba.de^ -||dii4.bitiba.dk^ -||dii4.bitiba.es^ -||dii4.bitiba.fi^ -||dii4.bitiba.fr^ -||dii4.bitiba.it^ -||dii4.bitiba.nl^ -||dii4.bitiba.pl^ -||dii4.bitiba.se^ -||dii4.zoochic-eu.ru^ -||dii4.zoohit.cz^ -||dii4.zoohit.si^ -||dii4.zoohit.sk^ -||dii4.zooplus.at^ -||dii4.zooplus.be^ -||dii4.zooplus.bg^ -||dii4.zooplus.ch^ -||dii4.zooplus.co.uk^ -||dii4.zooplus.com^ -||dii4.zooplus.de^ -||dii4.zooplus.dk^ -||dii4.zooplus.es^ -||dii4.zooplus.fi^ -||dii4.zooplus.fr^ -||dii4.zooplus.gr^ -||dii4.zooplus.hr^ -||dii4.zooplus.hu^ -||dii4.zooplus.ie^ -||dii4.zooplus.it^ -||dii4.zooplus.nl^ -||dii4.zooplus.no^ -||dii4.zooplus.pl^ -||dii4.zooplus.pt^ -||dii4.zooplus.ro^ -||dii4.zooplus.se^ -||dm-target.fishersci.com^ -||dm-target.thermofisher.com^ -||dplp1.ibmnorthamerica.adobesandbox.com^ -||dtmssl.bobcat.com^ -||dxaop.bcbsla.com^ -||dxop.bcbsla.com^ -||ecn-analytics-nssl.emc.com^ -||ecn-analytics.emc.com^ -||ecu.hagerty.com^ -||edge.afco.com^ -||edge.bell.ca^ -||edge.bigbrothercanada.ca^ -||edge.bridgetrusttitle.com^ -||edge.cafo.com^ -||edge.foodnetwork.ca^ -||edge.globaltv.com^ -||edge.grandbridge.com^ -||edge.hgtv.ca^ -||edge.historiatv.ca^ -||edge.history.ca^ -||edge.mcgriff.com^ -||edge.regionalacceptance.com^ -||edge.seriesplus.com^ -||edge.sheffieldfinancial.com^ -||edge.stacktv.ca^ -||edge.sterlingcapital.com^ -||edge.teletoonplus.ca^ -||edge.treehousetv.com^ -||edge.truist.com^ -||edge.truistmomentum.com^ -||edge.truistsecurities.com^ -||edge.wnetwork.com^ -||edgedc.falabella.com^ -||electronics.sony-latin.com^ -||em.em.officedepot.com^ -||emetrics.bose.ca^ -||emetrics.bose.com^ -||erutinmos.snagajob.com^ -||experience.acs.org.au^ -||experience.amp.co.nz^ -||experience.asb.co.nz^ -||experience.deceuninck.be^ -||experience.fbbrands.com^ -||experiences.cibc.com^ -||experiences.simplii.com^ -||fipsta.ravensberger-matratzen.de^ -||fipsta.urbanara.at^ -||fipsta.urbanara.co.uk^ -||fipsta.worldfitness.de^ -||firstparty.alloyio.com^ -||flashplayerfeedback.adobe.com^ -||forbes.realclearpolitics.com^ -||form.e.silverfernfarms.com^ -||fpc.changehealthcare.com^ -||fpc.firemountaingems.com^ -||fpcs.firemountaingems.com^ -||fpida.amphi.jp^ -||fpida.bodybook.jp^ -||fpida.cw-x.jp^ -||fpida.lingenoel.co.jp^ -||fpida.successwalk.jp^ -||fpida.une-nana-cool.com^ -||fpida.w-wing.jp^ -||fpida.wacoal.co.jp^ -||fpida.wacoalholdings.jp^ -||fpida.yue-japan.com^ -||fpssl-monitor-dal.omniture.com^ -||furnishings.bellacor.com^ -||gms.greatschools.org^ -||go2.ringcentral.com^ -||gw-analytics.panasonic.com^ -||hits.guardian.co.uk^ -||home.usg.com^ -||hqmetrics.sony.com^ -||hub.firestonecompleteautocare.com^ -||hubmetric.samsclub.com^ -||hubmetrics.samsclub.com^ -||i.americanblinds.com^ -||i.blinds.ca^ -||i.paypal.com^ -||icas.ikea.com^ -||icas.ikea.net^ -||ig.ig.com^ -||ig.igmarkets.com^ -||ig.nadex.com^ -||ik8uf01fm7neloo9.edge41.testandtarget.omniture.com^ -||img.biospace.com^ -||img.bwin.be^ -||img.bwin.com.mx^ -||img.bwin.com^ -||img.bwin.es^ -||img.bwin.it^ -||img.gamebookers.com^ -||img.healthecareers.com^ -||img.interhome.ch^ -||img.interhome.com^ -||img.interhome.se^ -||img.simply.bwin.com^ -||img.yemeksepeti.com^ -||incs.get-go.com^ -||incs.marketdistrict.com^ -||info.afl.com.au^ -||info.americas.coca-cola.com^ -||info.apac.coca-cola.com^ -||info.comms.coca-cola.com^ -||info.emea.coca-cola.com^ -||info.inswa.coca-cola.com^ -||info.latinamerica.coca-cola.com^ -||info.m.seek.co.nz^ -||info.m.seek.com.au^ -||info.penrithpanthers.com.au^ -||info.seaeagles.com.au^ -||info.seek.com^ -||info.sensis.com.au^ -||info.telstra.com.au^ -||info.telstra.com^ -||info.truelocal.com.au^ -||info.weststigers.com.au^ -||info.whitepages.com.au^ -||informatie.communicatie.nn.nl^ -||informatie.mail.nn.nl^ -||infos.anz-originator.com.au^ -||infos.anz.com.au^ -||infos.anz.com^ -||infos.anzmortgagesolutions.com.au^ -||infos.anzsmartchoice.com.au^ -||infos.b2dreamlab.com^ -||infos.belong.com.au^ -||infos.telstra.com.au^ -||infos.telstra.com^ -||infos.vodafone.com.au^ -||infos.whereis.com^ -||infos.whitepages.com.au^ -||infos.yellow.com.au^ -||insights.academy.com^ -||insights.bodogaffiliate.com^ -||insights.morrismohawk.ca^ -||insights.zinio.com^ -||iqmetrics.11freunde.de^ -||iqmetrics.ariva.de^ -||iqmetrics.btc-echo.de^ -||iqmetrics.cicero.de^ -||iqmetrics.del-2.org^ -||iqmetrics.dus.com^ -||iqmetrics.faz.net^ -||iqmetrics.forschung-und-wissen.de^ -||iqmetrics.freitag.de^ -||iqmetrics.hamburg-airport.de^ -||iqmetrics.handelsblatt.com^ -||iqmetrics.manager-magazin.de^ -||iqmetrics.marktundmittelstand.de^ -||iqmetrics.monopol-magazin.de^ -||iqmetrics.scinexx.de^ -||iqmetrics.spektrum.de^ -||iqmetrics.spiegel.de^ -||iqmetrics.sueddeutsche.de^ -||iqmetrics.tagesspiegel.de^ -||iqmetrics.wissen.de^ -||iqmetrics.wissenschaft.de^ -||iqmetrics.wiwo.de^ -||iqmetrics.zeit.de^ -||jinair.nsc.jinair.com^ -||jinair.sc.jinair.com^ -||journeys.journeyed.com^ -||jpaatr.astellas.jp^ -||jptgtr.astellas.jp^ -||kohlermetrics.kohler.com^ -||kohlermetricssecure.kohler.com^ -||l.dev-ajo.caixabank.com^ -||l.dm.casio.info^ -||l.training-page.worldvision.ca^ -||landing.lp.eurobet.it^ -||landing.madridista-free.realmadrid.com^ -||landingpage.emaillpb.adobe.com^ -||lewis.gct.com^ -||live.comunicaciones.jetstereo.com^ -||lp.b2bmail.adobe.com^ -||lp.club.costacoffee.in^ -||lp.club.costacoffee.pl^ -||lp.communications.manulife.ca^ -||lp.demo1.demoamericas275.adobe.com^ -||lp.demo10.demoamericas275.adobe.com^ -||lp.demo11.demoamericas275.adobe.com^ -||lp.demo12.demoamericas275.adobe.com^ -||lp.demo13.demoamericas275.adobe.com^ -||lp.demo14.demoamericas275.adobe.com^ -||lp.demo15.demoamericas275.adobe.com^ -||lp.demo16.demoamericas275.adobe.com^ -||lp.demo17.demoamericas275.adobe.com^ -||lp.demo18.demoamericas275.adobe.com^ -||lp.demo19.demoamericas275.adobe.com^ -||lp.demo2.demoamericas275.adobe.com^ -||lp.demo20.demoamericas275.adobe.com^ -||lp.demo3.demoamericas275.adobe.com^ -||lp.demo4.demoamericas275.adobe.com^ -||lp.demo5.demoamericas275.adobe.com^ -||lp.demo6.demoamericas275.adobe.com^ -||lp.demo7.demoamericas275.adobe.com^ -||lp.demo8.demoamericas275.adobe.com^ -||lp.demo9.demoamericas275.adobe.com^ -||lp.dmillersb.journeyusshared.adobe.com^ -||lp.dmillersbdev.journeyusshared.adobe.com^ -||lp.em.viking.com^ -||lp.email-kpn.cjm.adobe.com^ -||lp.email-lightroom.cjm.adobe.com^ -||lp.email-merkle.cjm.adobe.com^ -||lp.go2.ringcentral.com^ -||lp.hol1.demoamericas275.adobe.com^ -||lp.hol10.demoamericas275.adobe.com^ -||lp.hol11.demoamericas275.adobe.com^ -||lp.hol12.demoamericas275.adobe.com^ -||lp.hol13.demoamericas275.adobe.com^ -||lp.hol14.demoamericas275.adobe.com^ -||lp.hol15.demoamericas275.adobe.com^ -||lp.hol16.demoamericas275.adobe.com^ -||lp.hol17.demoamericas275.adobe.com^ -||lp.hol18.demoamericas275.adobe.com^ -||lp.hol19.demoamericas275.adobe.com^ -||lp.hol2.demoamericas275.adobe.com^ -||lp.hol20.demoamericas275.adobe.com^ -||lp.hol4.demoamericas275.adobe.com^ -||lp.hol5.demoamericas275.adobe.com^ -||lp.hol6.demoamericas275.adobe.com^ -||lp.hol7.demoamericas275.adobe.com^ -||lp.hol8.demoamericas275.adobe.com^ -||lp.jkowalskisb.journeyusshared.adobe.com^ -||lp.jkowalskisbdev.journeyusshared.adobe.com^ -||lp.kkaufmansb.journeyusshared.adobe.com^ -||lp.owarnersb.journeyusshared.adobe.com^ -||lp.owarnersbdev.journeyusshared.adobe.com^ -||lptest.email-mobiledx.cjm.adobe.com^ -||m.communications.ihmvcu.org^ -||m.delltechnologies.com^ -||m.edweek.org^ -||m.olympia.it^ -||m.sm.princess.com^ -||m.topschooljobs.org^ -||m.trb.com^ -||m.univision.com^ -||maling.dn.no^ -||marketing.news.riyadhair.com^ -||matrix.hbo.com^ -||matrix.itshboanytime.com^ -||mbox.wegmans.com^ -||mbox12.offermatica.com^ -||mbox4.offermatica.com^ -||mbox5.offermatica.com^ -||mbox9.offermatica.com^ -||mbox9e.offermatica.com^ -||mcdmetric.aaa.com^ -||mcdmetrics.aaa.com^ -||mcdmetrics2.aaa.com^ -||mdws.1stchoicesavings.ca^ -||mdws.advancesavings.ca^ -||mdws.aldergrovecu.ca^ -||mdws.assiniboine.mb.ca^ -||mdws.banquelaurentienne.ca^ -||mdws.battlerivercreditunion.com^ -||mdws.beaubear.ca^ -||mdws.belgianalliancecu.mb.ca^ -||mdws.bergengrencu.com^ -||mdws.biggarcu.com^ -||mdws.bowvalleycu.com^ -||mdws.caissepopclare.com^ -||mdws.caseracu.ca^ -||mdws.cccu.ca^ -||mdws.ccunl.ca^ -||mdws.cdcu.com^ -||mdws.chinookcu.com^ -||mdws.chinookfinancial.com^ -||mdws.coastalfinancial.ca^ -||mdws.communitycreditunion.ns.ca^ -||mdws.communityfirst-cu.com^ -||mdws.communitytrust.ca^ -||mdws.consolidatedcreditu.com^ -||mdws.copperfin.ca^ -||mdws.cornerstonecu.com^ -||mdws.cua.com^ -||mdws.cvcu.bc.ca^ -||mdws.cwbank.com^ -||mdws.diamondnorthcu.com^ -||mdws.eaglerivercu.com^ -||mdws.eastcoastcu.ca^ -||mdws.easternedgecu.com^ -||mdws.eccu.ca^ -||mdws.ekccu.com^ -||mdws.encompasscu.ca^ -||mdws.enderbycreditunion.com^ -||mdws.envisionfinancial.ca^ -||mdws.estoniancu.com^ -||mdws.firstcu.ca^ -||mdws.firstontariocu.com^ -||mdws.fnbc.ca^ -||mdws.frontlinecu.com^ -||mdws.ganaraskacu.com^ -||mdws.gvccu.com^ -||mdws.hmecu.com^ -||mdws.icsavings.ca^ -||mdws.innovationcu.ca^ -||mdws.inovacreditunion.coop^ -||mdws.integriscu.ca^ -||mdws.interiorsavings.com^ -||mdws.islandsavings.ca^ -||mdws.kawarthacu.com^ -||mdws.lakelandcreditunion.com^ -||mdws.ldcu.ca^ -||mdws.lecu.ca^ -||mdws.leroycu.ca^ -||mdws.luminusfinancial.com^ -||mdws.minnedosacu.mb.ca^ -||mdws.montaguecreditu.com^ -||mdws.morellcreditu.com^ -||mdws.mvcu.ca^ -||mdws.nelsoncu.com^ -||mdws.newrosscreditunion.ca^ -||mdws.nivervillecu.mb.ca^ -||mdws.nlcu.com^ -||mdws.northerncu.com^ -||mdws.northsave.com^ -||mdws.northsydneycreditunion.com^ -||mdws.noventis.ca^ -||mdws.npscu.ca^ -||mdws.omista.com^ -||mdws.pccu.ca^ -||mdws.peacehills.com^ -||mdws.penfinancial.com^ -||mdws.portagecu.mb.ca^ -||mdws.prospera.ca^ -||mdws.provincialcu.com^ -||mdws.provincialemployees.com^ -||mdws.pscu.ca^ -||mdws.revcu.com^ -||mdws.rpcul.com^ -||mdws.samplecu.com^ -||mdws.sdcu.com^ -||mdws.shellcu.com^ -||mdws.southwestcu.com^ -||mdws.stridecu.ca^ -||mdws.sudburycu.com^ -||mdws.sunrisecu.mb.ca^ -||mdws.sunshineccu.com^ -||mdws.sydneycreditunion.com^ -||mdws.tandia.com^ -||mdws.tcufinancialgroup.com^ -||mdws.teachersplus.ca^ -||mdws.tignishcreditu.com^ -||mdws.ubcu.ca^ -||mdws.ukrainiancu.com^ -||mdws.unitycu.ca^ -||mdws.valleycreditunion.com^ -||mdws.valleyfirst.com^ -||mdws.vancity.com^ -||mdws.vantageone.net^ -||mdws.venturecu.ca^ -||mdws.vermilioncreditunion.com^ -||mdws.victorycreditunion.ca^ -||mdws.visioncu.ca^ -||mdws.wetaskiwincreditunion.com^ -||mdws.weyburncu.ca^ -||mdws.wfcu.ca^ -||mdws.wldcu.com^ -||mdws.wpcu.ca^ -||mdws.wscu.com^ -||mdws.yourcu.com^ -||med.androderm.com^ -||med.aptalispharma.com^ -||med.armourthyroid.com^ -||med.asacolhdhcp.com^ -||med.bystolic.com^ -||med.bystolichcp.com^ -||med.bystolicsavings.com^ -||med.cerexa.com^ -||med.dalvance.com^ -||med.delzicol.com^ -||med.fetzima.com^ -||med.fetzimahcp.com^ -||med.frxis.com^ -||med.gelnique.com^ -||med.liletta.com^ -||med.lilettahcp.com^ -||med.linzess.com^ -||med.linzesshcp.com^ -||med.live2thrive.org^ -||med.myandroderm.com^ -||med.namenda.com^ -||med.namzaric.com^ -||med.rectiv.com^ -||med.saphris.com^ -||med.savella.com^ -||med.savellahcp.com^ -||med.teflaro.com^ -||med.viibryd.com^ -||med.viibrydhcp.com^ -||med.vraylar.com^ -||meds.androderm.com^ -||meds.asacolhdhcp.com^ -||meds.avycaz.com^ -||meds.bystolicsavings.com^ -||meds.delzicol.com^ -||meds.fetzima.com^ -||meds.liletta.com^ -||meds.lilettahcp.com^ -||meds.linzess.com^ -||meds.linzesshcp.com^ -||meds.rapaflo.com^ -||meds.savella.com^ -||meds.viibryd.com^ -||meds.viibrydhcp.com^ -||met.jasperforge.org^ -||met.sewell.com^ -||met1.hp.com^ -||met2.hp.com^ -||metc.banfield.com^ -||metric-nonssl.nomura.co.jp^ -||metric.1035thearrow.com^ -||metric.4imprint.com^ -||metric.alexandani.com^ -||metric.angieslist.com^ -||metric.armstrong.com^ -||metric.armstrongceilings.com^ -||metric.asos.com^ -||metric.asos.de^ -||metric.atg.se^ -||metric.atlanta.net^ -||metric.australiansuper.com^ -||metric.barclaycardus.com^ -||metric.baylorhealth.com^ -||metric.billmelater.com^ -||metric.bostonscientific.com^ -||metric.caixabank.es^ -||metric.carview.co.jp^ -||metric.ch.nissan.co.jp^ -||metric.changiairport.com^ -||metric.cort.com^ -||metric.crateandbarrel.com^ -||metric.cshgreenwich.org^ -||metric.dertour.de^ -||metric.drsfostersmith.com^ -||metric.duluthtrading.com^ -||metric.emerils.com^ -||metric.fatcatalog.com^ -||metric.foodbusinessnews.net^ -||metric.fxdd.com^ -||metric.genesis.es^ -||metric.golfnow.com^ -||metric.handmark.com^ -||metric.hilton.com^ -||metric.iccu.com^ -||metric.ing.es^ -||metric.ingdirect.es^ -||metric.its.de^ -||metric.jahnreisen.de^ -||metric.jeppesen.com^ -||metric.lacaixa.es^ -||metric.lan.com^ -||metric.langhamhotels.com^ -||metric.lo.movement.com^ -||metric.longhornsteakhouse.com^ -||metric.m.nissan-global.com^ -||metric.makemytrip.com^ -||metric.mars.com^ -||metric.matchesfashion.com^ -||metric.meatpoultry.com^ -||metric.mein-its.de^ -||metric.melectronics.ch^ -||metric.millenniumhotels.com^ -||metric.morganshotelgroup.com^ -||metric.movement.com^ -||metric.napster.com^ -||metric.nissan.co.uk^ -||metric.nissan.cz^ -||metric.nissan.de^ -||metric.nissan.es^ -||metric.nissan.lt^ -||metric.nissan.lv^ -||metric.nissan.nl^ -||metric.nissan.no^ -||metric.nissan.sk^ -||metric.nissan.ua^ -||metric.nomura.co.jp^ -||metric.northeast.aaa.com^ -||metric.nrma.com.au^ -||metric.octanner.com^ -||metric.olivegarden.com^ -||metric.optum.com^ -||metric.panpacific.com^ -||metric.pepboys.com^ -||metric.philosophy.com^ -||metric.polyone.com^ -||metric.postoffice.co.uk^ -||metric.publicstorage.com^ -||metric.redlobster.com^ -||metric.rent.com^ -||metric.restockit.com^ -||metric.revolutionhealth.com^ -||metric.samsclub.com^ -||metric.schooloutfitters.com^ -||metric.schwab.com^ -||metric.schwabinstitutional.com^ -||metric.sciencemag.org^ -||metric.sdl.com^ -||metric.seetorontonow.com^ -||metric.serena.com^ -||metric.shop.com^ -||metric.thecapitalgrille.com^ -||metric.timewarnercable.com^ -||metric.toyotacertificados.com^ -||metric.toyotacertified.com^ -||metric.trulia.com^ -||metric.tsite.jp^ -||metric.vodacom.co.za^ -||metric.vodafone.com.eg^ -||metric.vodafone.hu^ -||metric.volkswagen-nutzfahrzeuge.de^ -||metric.volkswagen.com^ -||metric.volkswagen.de^ -||metric.volkswagen.es^ -||metric.volkswagen.ie^ -||metric.volkswagen.pl^ -||metric.wilsonelectronics.com^ -||metric.worldcat.org^ -||metric.yardhouse.com^ -||metricas.agzero.com.br^ -||metrics-ieeexplore.ieee.org^ -||metrics-target.siriusxm.com^ -||metrics.1800contacts.com^ -||metrics.24hourfitness.com^ -||metrics.28degreescard.com.au^ -||metrics.3838.com^ -||metrics.3m.com^ -||metrics.48.ie^ -||metrics.aa.com^ -||metrics.aavacations.com^ -||metrics.abbott.co.in^ -||metrics.abbott.co.jp^ -||metrics.abbott.com^ -||metrics.abbott^ -||metrics.abbottbrasil.com.br^ -||metrics.abbvie.com^ -||metrics.abercrombie.com^ -||metrics.absolute.com^ -||metrics.absolutetotalcare.com^ -||metrics.academy.com^ -||metrics.acbj.com^ -||metrics.accuweather.com^ -||metrics.acehardware.com^ -||metrics.actemrahcp.com^ -||metrics.activase.com^ -||metrics.activecommunities.com^ -||metrics.adacreisen.de^ -||metrics.adage.com^ -||metrics.adelaidenow.com.au^ -||metrics.adiglobal.us^ -||metrics.adobe.nb.com^ -||metrics.adobe.nbprivatewealth.com^ -||metrics.adt.com^ -||metrics.advancedmd.com^ -||metrics.aem.playstation.com^ -||metrics.aetn.com^ -||metrics.aetnamedicare.com^ -||metrics.affymetrix.com^ -||metrics.agentprovocateur.com^ -||metrics.agilent.com^ -||metrics.agtechnavigator.com^ -||metrics.aia.com^ -||metrics.aircanada.com^ -||metrics.airtran.com^ -||metrics.airtv.net^ -||metrics.alabama.aaa.com^ -||metrics.alecensa.com^ -||metrics.alexandani.com^ -||metrics.alienware.com^ -||metrics.allaboutyou.com^ -||metrics.allegisgroup.com^ -||metrics.allianz.com.au^ -||metrics.allianzlife.com^ -||metrics.allstate.com^ -||metrics.ally.com^ -||metrics.alpo.com^ -||metrics.ambetterhealth.com^ -||metrics.amd.com^ -||metrics.ameise.de^ -||metrics.american-airlines.nl^ -||metrics.americanairlines.be^ -||metrics.americanairlines.cl^ -||metrics.americanairlines.co.cr^ -||metrics.americanairlines.jp^ -||metrics.americanblinds.com^ -||metrics.americancentury.com^ -||metrics.americaninno.com^ -||metrics.americansignaturefurniture.com^ -||metrics.amersports.com^ -||metrics.amg.com^ -||metrics.amgfunds.com^ -||metrics.amplifon.com^ -||metrics.ancestry.ca^ -||metrics.ancestry.com.au^ -||metrics.ancestry.com^ -||metrics.ancestry.de^ -||metrics.angelinaballerina.com^ -||metrics.angi.com^ -||metrics.angieslist.com^ -||metrics.anhi.org^ -||metrics.anixter.com^ -||metrics.anntaylor.com^ -||metrics.ansys.com^ -||metrics.antena3.com^ -||metrics.anthem.com^ -||metrics.apartments.com^ -||metrics.apps.ge.com^ -||metrics.argenta.be^ -||metrics.argenta.eu^ -||metrics.argos.co.uk^ -||metrics.arkansastotalcare.com^ -||metrics.armstrong.com^ -||metrics.armstrongceilings.com^ -||metrics.armstrongflooring.com^ -||metrics.army.mod.uk^ -||metrics.as.com^ -||metrics.asos.com^ -||metrics.assurances-bnc.ca^ -||metrics.assurancewireless.com^ -||metrics.assuranthealth.com^ -||metrics.astrogaming.com^ -||metrics.asumag.com^ -||metrics.asurion.com^ -||metrics.asx.com.au^ -||metrics.atresmedia.com^ -||metrics.au.com^ -||metrics.audi.co.uk^ -||metrics.austar.com.au^ -||metrics.australiansuper.com^ -||metrics.autoclubmo.aaa.com^ -||metrics.avalara.com^ -||metrics.avastin-hcp.com^ -||metrics.aviationweek.com^ -||metrics.avnet.com^ -||metrics.axs.com^ -||metrics.babycenter.de^ -||metrics.baitoru-id.com^ -||metrics.baitoru.com^ -||metrics.baitorupro.com^ -||metrics.bakeryandsnacks.com^ -||metrics.bakeryawards.co.uk^ -||metrics.bakeryinfo.co.uk^ -||metrics.bananarepublic.eu^ -||metrics.bancobmg.com.br^ -||metrics.bankatfirst.com^ -||metrics.bankia.es^ -||metrics.bankofamerica.com^ -||metrics.banksa.com.au^ -||metrics.bankwest.com.au^ -||metrics.barclaycardus.com^ -||metrics.barclays.co.uk^ -||metrics.base.be^ -||metrics.bayer.com^ -||metrics.bayer.us^ -||metrics.bbva.com.ar^ -||metrics.bbva.com.co^ -||metrics.bbva.es^ -||metrics.bbva.mx^ -||metrics.bbva.pe^ -||metrics.bbvaleasing.mx^ -||metrics.bcbsks.com^ -||metrics.bcbsnc.com^ -||metrics.bcbsnd.com^ -||metrics.be.carrefour.eu^ -||metrics.bestandless.com.au^ -||metrics.bestrecipes.com.au^ -||metrics.beveragedaily.com^ -||metrics.bhf.org.uk^ -||metrics.billmelater.com^ -||metrics.biocompare.com^ -||metrics.biooncology.com^ -||metrics.biopharma-reporter.com^ -||metrics.bissell.com^ -||metrics.bitbang.com^ -||metrics.bizjournals.com^ -||metrics.bkb.ch^ -||metrics.blackbaud.com^ -||metrics.blackrock.com^ -||metrics.bmc.com^ -||metrics.bmo.com^ -||metrics.bmwusa.com^ -||metrics.bncollege.com^ -||metrics.bnymellon.com^ -||metrics.boats.com^ -||metrics.bobthebuilder.com^ -||metrics.bodyandsoul.com.au^ -||metrics.boehringer-ingelheim.es^ -||metrics.boozallen.com^ -||metrics.boq.com.au^ -||metrics.borgatapoker.com^ -||metrics.boscovs.com^ -||metrics.bose.ca^ -||metrics.bose.com^ -||metrics.bostonglobe.com^ -||metrics.bostonscientific.com^ -||metrics.breadfinancial.com^ -||metrics.bridgestoneamericas.com^ -||metrics.brighthorizons.com^ -||metrics.brilliantbylangham.com^ -||metrics.britishgas.co.uk^ -||metrics.brocade.com^ -||metrics.brooksbrothers.com^ -||metrics.brooksrunning.com^ -||metrics.bt.com.au^ -||metrics.bt.com^ -||metrics.bt.se^ -||metrics.buildasign.com^ -||metrics.bupa.com.au^ -||metrics.business.comcast.com^ -||metrics.buyersedge.com.au^ -||metrics.buysearchsell.com.au^ -||metrics.c2fo.com^ -||metrics.caesars.com^ -||metrics.cahealthwellness.com^ -||metrics.cairnspost.com.au^ -||metrics.caixabank.es^ -||metrics.calbaptist.edu^ -||metrics.calgary.ca^ -||metrics.calia.com^ -||metrics.calif.aaa.com^ -||metrics.calimera.com^ -||metrics.calvinklein.com^ -||metrics.calvinklein.us^ -||metrics.calwater.com^ -||metrics.camperboerse.com^ -||metrics.campingworld.com^ -||metrics.cancer.gov^ -||metrics.capella.edu^ -||metrics.capitalone.com^ -||metrics.caracoltv.com^ -||metrics.carbonite.com^ -||metrics.care.com^ -||metrics.career-education.monster.com^ -||metrics.carfax.com^ -||metrics.carnival.co.uk^ -||metrics.carnival.com.au^ -||metrics.carnival.com^ -||metrics.carpricesecrets.com^ -||metrics.carters.com^ -||metrics.carzone.ie^ -||metrics.casinosplendido.com^ -||metrics.casio.com.tw^ -||metrics.catalog.usmint.gov^ -||metrics.cathflo.com^ -||metrics.cb2.com^ -||metrics.cbc.ca^ -||metrics.cbc.youtube.mercedes-benz.com^ -||metrics.cbn.com^ -||metrics.ccma.cat^ -||metrics.cdiscount.com^ -||metrics.cedars-sinai.org^ -||metrics.cellcept.com^ -||metrics.census.gov^ -||metrics.centurylink.com^ -||metrics.channelfutures.com^ -||metrics.chapters.indigo.ca^ -||metrics.chatrwireless.com^ -||metrics.chghealthcare.com^ -||metrics.chipotle.com^ -||metrics.chrysler.com^ -||metrics.churchill.com^ -||metrics.cib.bnpparibas^ -||metrics.cigarsinternational.com^ -||metrics.citi.com^ -||metrics.citibank.com.my^ -||metrics.citibank.com^ -||metrics.citimortgage.com^ -||metrics.citizensbank.com^ -||metrics.claires.com^ -||metrics.cluballiance.aaa.com^ -||metrics.clubmonaco.ca^ -||metrics.cmfgroup.com^ -||metrics.cnb.com^ -||metrics.cnn.com^ -||metrics.coach.com^ -||metrics.coachfactory.com^ -||metrics.coalesse.com^ -||metrics.codesports.com.au^ -||metrics.columbia.com^ -||metrics.combinedinsurance.com^ -||metrics.comcast.com^ -||metrics.comenity.net^ -||metrics.commercialtrucktrader.com^ -||metrics.commonclaimsmistakesvideo.com^ -||metrics.company.co.uk^ -||metrics.comparethemarket.com^ -||metrics.confectionerynews.com^ -||metrics.consumerreports.org^ -||metrics.contractingbusiness.com^ -||metrics.conveniencestore.co.uk^ -||metrics.converse.com^ -||metrics.coolibar.com^ -||metrics.coordinatedcarehealth.com^ -||metrics.cornerbanca.ch^ -||metrics.correos.es^ -||metrics.cort.com^ -||metrics.corus.ca^ -||metrics.cosmeticsdesign-asia.com^ -||metrics.cosmeticsdesign-europe.com^ -||metrics.cosmeticsdesign.com^ -||metrics.cosstores.com^ -||metrics.costco.ca^ -||metrics.costco.com^ -||metrics.costcobusinesscentre.ca^ -||metrics.costcobusinessdelivery.com^ -||metrics.cotellic.com^ -||metrics.cottages.com^ -||metrics.countryfinancial.com^ -||metrics.couriermail.com.au^ -||metrics.covance.com^ -||metrics.coventryhealthcare.com^ -||metrics.cpsenergy.com^ -||metrics.crainsnewyork.com^ -||metrics.crateandbarrel.com^ -||metrics.creditacceptance.com^ -||metrics.crocs.com^ -||metrics.cru.org^ -||metrics.csmonitor.com^ -||metrics.csu.edu.au^ -||metrics.ctv.ca^ -||metrics.currys.co.uk^ -||metrics.cvs.com^ -||metrics.cycleworld.com^ -||metrics.cytivalifesciences.com^ -||metrics.dailytelegraph.com.au^ -||metrics.dairyreporter.com^ -||metrics.dandh.ca^ -||metrics.dandh.com^ -||metrics.darty.com^ -||metrics.datapipe.com^ -||metrics.dcshoes.com^ -||metrics.deakin.edu.au^ -||metrics.defenseone.com^ -||metrics.delhaizedirect.be^ -||metrics.delicious.com.au^ -||metrics.delta.com^ -||metrics.dentalcompare.com^ -||metrics.depakoteer.com^ -||metrics.der.com^ -||metrics.dertour-reisebuero.de^ -||metrics.dertour.de^ -||metrics.despegar.com^ -||metrics.dev.www.vwfs.de^ -||metrics.dhc.co.jp^ -||metrics.dhl.de^ -||metrics.digitaleditions.com.au^ -||metrics.directtv.com^ -||metrics.directv.com^ -||metrics.discover.com^ -||metrics.discovertrk.com^ -||metrics.dish.co^ -||metrics.dish.com^ -||metrics.distrelec.ch^ -||metrics.divosta.com^ -||metrics.diy.com^ -||metrics.diynetwork.com^ -||metrics.dockers.com^ -||metrics.dog.com^ -||metrics.dollar.com^ -||metrics.dollargeneral.com^ -||metrics.donaldson.com^ -||metrics.dreamvacationweek.com^ -||metrics.drklein.de^ -||metrics.droidsc.natwest.com^ -||metrics.droidsc.rbs.co.uk^ -||metrics.drsfostersmith.com^ -||metrics.drugpricinglaw.com^ -||metrics.duluthtrading.com^ -||metrics.dunkindonuts.com^ -||metrics.e-abbott.com^ -||metrics.e-wie-einfach.de^ -||metrics.eastcentral.aaa.com^ -||metrics.edb.gov.sg^ -||metrics.eddiebauer.com^ -||metrics.eddiev.com^ -||metrics.edgepark.com^ -||metrics.ee.co.uk^ -||metrics.egencia.ae^ -||metrics.egencia.be^ -||metrics.egencia.ca^ -||metrics.egencia.ch^ -||metrics.egencia.cn^ -||metrics.egencia.co.in^ -||metrics.egencia.co.nz^ -||metrics.egencia.co.uk^ -||metrics.egencia.co.za^ -||metrics.egencia.com.au^ -||metrics.egencia.com.hk^ -||metrics.egencia.com.sg^ -||metrics.egencia.com^ -||metrics.egencia.cz^ -||metrics.egencia.de^ -||metrics.egencia.dk^ -||metrics.egencia.es^ -||metrics.egencia.fi^ -||metrics.egencia.fr^ -||metrics.egencia.ie^ -||metrics.egencia.it^ -||metrics.egencia.nl^ -||metrics.egencia.no^ -||metrics.egencia.pl^ -||metrics.egencia.se^ -||metrics.ehc.com^ -||metrics.ehealthinsurance.com^ -||metrics.ehstoday.com^ -||metrics.einsure.com.au^ -||metrics.eiu.com^ -||metrics.eki-net.com^ -||metrics.el-mundo.net^ -||metrics.elal.com^ -||metrics.elgiganten.dk^ -||metrics.elle.co.jp^ -||metrics.ellechina.com^ -||metrics.elpais.com^ -||metrics.elsevier.com^ -||metrics.eltenedor.es^ -||metrics.emdeon.com^ -||metrics.emicizumabinfo.com^ -||metrics.emirates.com^ -||metrics.empiretoday.com^ -||metrics.enelenergia.it^ -||metrics.energyaustralia.com.au^ -||metrics.enspryng-hcp.com^ -||metrics.enspryng.com^ -||metrics.enterprise.com^ -||metrics.ereplacementparts.com^ -||metrics.erivedge.com^ -||metrics.esbriet.com^ -||metrics.esbriethcp.com^ -||metrics.escape.com.au^ -||metrics.esignal.com^ -||metrics.etihad.com^ -||metrics.etihadengineering.com^ -||metrics.etihadguest.com^ -||metrics.eu.playstation.com^ -||metrics.eurobet.it^ -||metrics.eversource.com^ -||metrics.evine.com^ -||metrics.evite.com^ -||metrics.evrysdi.com^ -||metrics.ewstv.com^ -||metrics.examinebiosimilars.com^ -||metrics.explore.calvinklein.com^ -||metrics.express.com^ -||metrics.extraespanol.warnerbros.com^ -||metrics.extratv.warnerbros.com^ -||metrics.faceipf.com^ -||metrics.familiaynutricion.com.co^ -||metrics.fancl.co.jp^ -||metrics.farmprogressdaily.com^ -||metrics.farmshopanddelishow.co.uk^ -||metrics.farnell.com^ -||metrics.fcacert.com^ -||metrics.fcbarcelona.com^ -||metrics.fcsamerica.com^ -||metrics.fedex.com^ -||metrics.feednavigator.com^ -||metrics.feedstuffsfoodlink.com^ -||metrics.ferguson.com^ -||metrics.fetnet.net^ -||metrics.fifa.com^ -||metrics.figis.com^ -||metrics.filemaker.com^ -||metrics.finn.no^ -||metrics.flagstar.com^ -||metrics.flexerasoftware.com^ -||metrics.flexshares.com^ -||metrics.fmdos.cl^ -||metrics.folksam.se^ -||metrics.foodanddrinkexpo.co.uk^ -||metrics.foodex.co.uk^ -||metrics.foodmanufacture.co.uk^ -||metrics.foodnavigator-asia.com^ -||metrics.foodnavigator-latam.com^ -||metrics.foodnavigator-usa.com^ -||metrics.foodnavigator.com^ -||metrics.foodnetwork.com^ -||metrics.forbestravelguide.com^ -||metrics.ford.com^ -||metrics.forecourttrader.co.uk^ -||metrics.fortinet.com^ -||metrics.fortune.com^ -||metrics.foxbusiness.com^ -||metrics.foxnews.com^ -||metrics.foxsports.com.au^ -||metrics.fpl.com^ -||metrics.fressnapf.at^ -||metrics.fressnapf.ch^ -||metrics.fressnapf.de^ -||metrics.friskies.com^ -||metrics.frontier.com^ -||metrics.ftd.com^ -||metrics.fuzeon.com^ -||metrics.galicia.ar^ -||metrics.gap.co.jp^ -||metrics.gap.co.uk^ -||metrics.gap.com^ -||metrics.gap.eu^ -||metrics.gapcanada.ca^ -||metrics.gazyva.com^ -||metrics.gcimetrics.com^ -||metrics.geelongadvertiser.com.au^ -||metrics.gemfinance.co.nz^ -||metrics.genentech-access.com^ -||metrics.genentech-forum.com^ -||metrics.genentech-pro.com^ -||metrics.genentechhemophilia.com^ -||metrics.generac.com^ -||metrics.genesis.es^ -||metrics.gengraf.com^ -||metrics.genzyme.com^ -||metrics.giftcards.com^ -||metrics.gio.com.au^ -||metrics.global.mandg.com^ -||metrics.global.nba.com^ -||metrics.globalgolf.com^ -||metrics.globalscape.com^ -||metrics.globe.com.ph^ -||metrics.glucerna.net^ -||metrics.gnc.com^ -||metrics.goalfinancial.net^ -||metrics.gobank.com^ -||metrics.goindigo.in^ -||metrics.goinggoing.com^ -||metrics.goldcoastbulletin.com.au^ -||metrics.golfgalaxy.com^ -||metrics.gomastercard.com.au^ -||metrics.gomedigap.com^ -||metrics.goodhousekeeping.co.uk^ -||metrics.gordonsjewelers.com^ -||metrics.gq.com.au^ -||metrics.grainger.com^ -||metrics.grandandtoy.com^ -||metrics.greatland.com^ -||metrics.greendot.com^ -||metrics.greenflag.com^ -||metrics.greenies.com^ -||metrics.growthasiasummit.com^ -||metrics.grundfos.com^ -||metrics.guess.hk^ -||metrics.handmark.com^ -||metrics.harborfreight.com^ -||metrics.hatarako.net^ -||metrics.hawaii.aaa.com^ -||metrics.hayesandjarvis.co.uk^ -||metrics.hbogo.com^ -||metrics.hbogola.com^ -||metrics.hbr.org^ -||metrics.health.com^ -||metrics.healthpartners.com^ -||metrics.heathrow.com^ -||metrics.heathrowexpress.com^ -||metrics.helpguide.sony.net^ -||metrics.helvetia.com^ -||metrics.her2treatment.com^ -||metrics.heraldsun.com.au^ -||metrics.herbalife.com^ -||metrics.herceptin.com^ -||metrics.herceptinhylecta.com^ -||metrics.hgtv.com^ -||metrics.hitentertainment.com^ -||metrics.hm.com^ -||metrics.hmhco.com^ -||metrics.hollandamerica.com^ -||metrics.hollisterco.com.hk^ -||metrics.hollisterco.com^ -||metrics.homeadvisor.com^ -||metrics.homedecorators.com^ -||metrics.hoseasons.co.uk^ -||metrics.hostech.co.uk^ -||metrics.hrblock.com^ -||metrics.hsamuel.co.uk^ -||metrics.htc.com^ -||metrics.hubert.com^ -||metrics.huffingtonpost.es^ -||metrics.huntington.com^ -||metrics.huntingtonsdiseasehcp.com^ -||metrics.hydraulicspneumatics.com^ -||metrics.hyundaiusa.com^ -||metrics.iconfitness.com^ -||metrics.ifc.org^ -||metrics.iij.ad.jp^ -||metrics.ikea.com^ -||metrics.illinois.gov^ -||metrics.industryweek.com^ -||metrics.inet.fi^ -||metrics.infiniti.com^ -||metrics.infomedics.it^ -||metrics.ing.es^ -||metrics.ingdirect.es^ -||metrics.ingredion.com^ -||metrics.inkcartridges.com^ -||metrics.insider.hagerty.com^ -||metrics.instyle.com^ -||metrics.insuramatch.com^ -||metrics.insurancesaver.com^ -||metrics.interbank.pe^ -||metrics.interestfree.com.au^ -||metrics.interhyp.de^ -||metrics.internationalwinechallenge.com^ -||metrics.intervalworld.com^ -||metrics.interweave.com^ -||metrics.investmentnews.com^ -||metrics.ionos-group.com^ -||metrics.ionos.at^ -||metrics.ionos.ca^ -||metrics.ionos.co.uk^ -||metrics.ionos.com^ -||metrics.ionos.de^ -||metrics.ionos.es^ -||metrics.ionos.fr^ -||metrics.ionos.it^ -||metrics.ionos.mx^ -||metrics.iossc.natwest.com^ -||metrics.iossc.rbs.co.uk^ -||metrics.ireport.com^ -||metrics.its.de^ -||metrics.ittoolbox.com^ -||metrics.ivivva.com^ -||metrics.iwakifc.com^ -||metrics.jamestowndistributors.com^ -||metrics.jcrew.com^ -||metrics.jcwhitney.com^ -||metrics.jeppesen.com^ -||metrics.jetblue.com^ -||metrics.jm-lexus.com^ -||metrics.joefresh.com^ -||metrics.johnhancock.com^ -||metrics.judgemathistv.warnerbros.com^ -||metrics.juiceplus.com^ -||metrics.jungheinrich-profishop.co.uk^ -||metrics.kadcyla.com^ -||metrics.kaercher.com^ -||metrics.kao.com^ -||metrics.kawai-juku.ac.jp^ -||metrics.kayosports.com.au^ -||metrics.kempinski.com^ -||metrics.kennethcole.com^ -||metrics.keno.com.au^ -||metrics.key.com^ -||metrics.keysight.com^ -||metrics.kia.com^ -||metrics.kidsnews.com.au^ -||metrics.kidspot.com.au^ -||metrics.kimberly-clark.com^ -||metrics.kindercare.com^ -||metrics.kipling-usa.com^ -||metrics.kirklands.com^ -||metrics.knowyourhdl.com^ -||metrics.knowyourtrigs.com^ -||metrics.kone.cn^ -||metrics.kpmg.com^ -||metrics.kpmg.us^ -||metrics.kristinehamn.se^ -||metrics.kumon.com^ -||metrics.kunilexusofcoloradosprings.com^ -||metrics.labcorp.com^ -||metrics.lacaixa.es^ -||metrics.lacounty.gov^ -||metrics.ladbrokes.be^ -||metrics.lafourchette.com^ -||metrics.lambweston.com^ -||metrics.landolakesinc.com^ -||metrics.langhamhotels.com^ -||metrics.lastminute.ch^ -||metrics.latitudefinancial.com.au^ -||metrics.latitudepay.com^ -||metrics.learning.monster.com^ -||metrics.learningcurve.com^ -||metrics.legalandgeneral.com^ -||metrics.legalsolutions.thomsonreuters.com^ -||metrics.leggmason.com^ -||metrics.levi.com^ -||metrics.lexus.com^ -||metrics.lexusofqueens.com^ -||metrics.lifetime.life^ -||metrics.liverpool.com.mx^ -||metrics.lmtonline.com^ -||metrics.loblaws.ca^ -||metrics.londoncoffeefestival.com^ -||metrics.lovefilm.com^ -||metrics.lowes.com^ -||metrics.lpl.com^ -||metrics.lucentis.com^ -||metrics.lululemon.ch^ -||metrics.lululemon.cn^ -||metrics.lululemon.co.jp^ -||metrics.lululemon.co.kr^ -||metrics.lululemon.co.nz^ -||metrics.lululemon.co.uk^ -||metrics.lululemon.com.au^ -||metrics.lululemon.com.hk^ -||metrics.lululemon.com^ -||metrics.lululemon.de^ -||metrics.lululemon.fr^ -||metrics.lww.com^ -||metrics.lycos.com^ -||metrics.ma500.co.uk^ -||metrics.madeformums.com^ -||metrics.maestrocard.com^ -||metrics.makemytrip.com^ -||metrics.mandg.com^ -||metrics.marcus.com^ -||metrics.marketing.lighting.philips.kz^ -||metrics.marksandspencer.com^ -||metrics.marksandspencer.eu^ -||metrics.marksandspencer.fr^ -||metrics.marksandspencer.ie^ -||metrics.marksandspencerlondon.com^ -||metrics.marriott.com^ -||metrics.marriottvacationclub.asia^ -||metrics.mars.com^ -||metrics.mastercard.com^ -||metrics.mastercardadvisors.com^ -||metrics.mastercardbusiness.com^ -||metrics.mastercardintl.com^ -||metrics.masters.com^ -||metrics.matchesfashion.com^ -||metrics.mathworks.cn^ -||metrics.mathworks.com^ -||metrics.matlab.com^ -||metrics.maurices.com^ -||metrics.maxgo.com^ -||metrics.maxizoo.be^ -||metrics.maxizoo.fr^ -||metrics.maxizoo.ie^ -||metrics.maxizoo.pl^ -||metrics.mca-insight.com^ -||metrics.med.roche.ru^ -||metrics.medical.roche.de^ -||metrics.meiers-weltreisen.de^ -||metrics.mein-dertour.de^ -||metrics.mein-its.de^ -||metrics.mein-jahnreisen.de^ -||metrics.mein-meiers-weltreisen.de^ -||metrics.melectronics.ch^ -||metrics.menshealth.co.uk^ -||metrics.metrobyt-mobile.com^ -||metrics.mfs.com^ -||metrics.mgmresorts.com^ -||metrics.mhn.com^ -||metrics.mhngs.com^ -||metrics.mibcookies.rbs.com^ -||metrics.midatlantic.aaa.com^ -||metrics.midwestliving.com^ -||metrics.miketheknight.com^ -||metrics.miles-and-more.com^ -||metrics.mindshareworld.com^ -||metrics.miniusa.com^ -||metrics.missselfridge.com^ -||metrics.misumi-ec.com^ -||metrics.mobilebanking.scotiabank.com^ -||metrics.modcloth.com^ -||metrics.moen.com^ -||metrics.monclick.it^ -||metrics.moneta.cz^ -||metrics.moodys.com^ -||metrics.moosejaw.com^ -||metrics.morganshotelgroup.com^ -||metrics.morganstanley.com^ -||metrics.morningadvertiser.co.uk^ -||metrics.morningstar.com^ -||metrics.morrisjenkins.com^ -||metrics.motorhomebookers.com^ -||metrics.motortrend.com^ -||metrics.mrporter.com^ -||metrics.mrrooter.com^ -||metrics.mum.edu^ -||metrics.mycareforward.com^ -||metrics.myclubwyndham.com^ -||metrics.mydish.com^ -||metrics.myprime.com^ -||metrics.myspringfield.com^ -||metrics.mytributes.com.au^ -||metrics.myvi.in^ -||metrics.myyellow.com^ -||metrics.nab.com.au^ -||metrics.nabbroker.com.au^ -||metrics.napaonline.com^ -||metrics.nascar.com^ -||metrics.nationalconvenienceshow.co.uk^ -||metrics.nationalgeographic.com^ -||metrics.nationaljournal.com^ -||metrics.nationalrestaurantawards.co.uk^ -||metrics.nba.com^ -||metrics.nbnco.com.au^ -||metrics.nebraskatotalcare.com^ -||metrics.nero.com^ -||metrics.nespresso.com^ -||metrics.nestlepurinacareers.com^ -||metrics.netxpress.biz^ -||metrics.netxpress.co.nz^ -||metrics.newark.com^ -||metrics.newbalance.co.uk^ -||metrics.newbalance.com^ -||metrics.newequipment.com^ -||metrics.newmexico.aaa.com^ -||metrics.newport.com^ -||metrics.newportlexus.com^ -||metrics.news.co.uk^ -||metrics.news.com.au^ -||metrics.newsadds.com.au^ -||metrics.newsconcierge.com.au^ -||metrics.newscorpaustralia.com^ -||metrics.newscorporatesubscriptions.com.au^ -||metrics.newyorkfarmshow.com^ -||metrics.nexmo.com^ -||metrics.nfl.com^ -||metrics.nflextrapoints.com^ -||metrics.nfluk.com^ -||metrics.nfm.com^ -||metrics.nfpa.org^ -||metrics.nhm.ac.uk^ -||metrics.nhmshop.co.uk^ -||metrics.nielsen.com^ -||metrics.nike.net^ -||metrics.nintendo.com^ -||metrics.nissan.co.uk^ -||metrics.nissan.ee^ -||metrics.nissan.es^ -||metrics.nissan.lt^ -||metrics.nissan.lv^ -||metrics.nissan.no^ -||metrics.nissanusa.com^ -||metrics.nmfn.com^ -||metrics.nn.nl^ -||metrics.noloan.com^ -||metrics.northeast.aaa.com^ -||metrics.northernnewengland.aaa.com^ -||metrics.northwesternmutual.com^ -||metrics.norvir.com^ -||metrics.nowtv.com^ -||metrics.nrma.com.au^ -||metrics.ntnews.com.au^ -||metrics.nutraingredients-asia.com^ -||metrics.nutraingredients-latam.com^ -||metrics.nutraingredients-usa.com^ -||metrics.nutraingredients.com^ -||metrics.nutraingredientsasia-awards.com^ -||metrics.nutropin.com^ -||metrics.nvidia.com^ -||metrics.nxtbook.com^ -||metrics.nyandcompany.com^ -||metrics.nycgo.com^ -||metrics.nylexpress.com^ -||metrics.nysdot.gov^ -||metrics.o2online.de^ -||metrics.ocrelizumabinfo.com^ -||metrics.ocrevus.com^ -||metrics.octanner.com^ -||metrics.oetker.de^ -||metrics.olgaintimates.com^ -||metrics.omniture.com^ -||metrics.omya.com^ -||metrics.onecall.com^ -||metrics.optimum.net^ -||metrics.optum.com^ -||metrics.oreck.com^ -||metrics.oreilly.com^ -||metrics.orlandofuntickets.com^ -||metrics.outsourcing-pharma.com^ -||metrics.pacsun.com^ -||metrics.palopmed.com^ -||metrics.panasonic.biz^ -||metrics.panasonic.com^ -||metrics.panasonic.jp^ -||metrics.pandora.com^ -||metrics.panerabread.com^ -||metrics.paperdirect.com^ -||metrics.parcelforce.com^ -||metrics.patientsatheart.com^ -||metrics.paysafecard.com^ -||metrics.pcrichard.com^ -||metrics.pebblebeach.com^ -||metrics.penny-reisen.de^ -||metrics.pennymacusa.com^ -||metrics.penton.com^ -||metrics.people.com^ -||metrics.peoplescourt.warnerbros.com^ -||metrics.pepboys.com^ -||metrics.perjeta.com^ -||metrics.petchow.net^ -||metrics.petco.com^ -||metrics.petinsurance.com^ -||metrics.petsmart.com^ -||metrics.pfizer.com^ -||metrics.pgi.com^ -||metrics.pgs.com^ -||metrics.phoenix.edu^ -||metrics.photos.com^ -||metrics.pinkribbonbottle.com^ -||metrics.pisces-penton.com^ -||metrics.plusrewards.com.au^ -||metrics.pmis.abbott.com^ -||metrics.politico.com^ -||metrics.politico.eu^ -||metrics.politicopro.com^ -||metrics.polivy.com^ -||metrics.popularwoodworking.com^ -||metrics.portal.roche.de^ -||metrics.post-gazette.com^ -||metrics.postoffice.co.uk^ -||metrics.powerreviews.com^ -||metrics.ppt.org^ -||metrics.prd.base.be^ -||metrics.prd.telenet.be^ -||metrics.premierinn.com^ -||metrics.priceless.com^ -||metrics.princess.com^ -||metrics.privilege.com^ -||metrics.probiotaamericas.com^ -||metrics.proquest.com^ -||metrics.protectmyid.com^ -||metrics.provincial.com^ -||metrics.proximus.be^ -||metrics.pru.co.uk^ -||metrics.prudential.com^ -||metrics.pruina.com^ -||metrics.psoriasisuncovered.com^ -||metrics.publiclands.com^ -||metrics.publicstorage.com^ -||metrics.pulmozyme.com^ -||metrics.puma.com^ -||metrics.purina-petcare.com^ -||metrics.purina.ca^ -||metrics.purinamills.com^ -||metrics.purinaone.com^ -||metrics.purinastore.com^ -||metrics.purinaveterinarydiets.com^ -||metrics.puritan.com^ -||metrics.pvh.com^ -||metrics.qatarairways.com^ -||metrics.questrade.com^ -||metrics.quiksilver.com^ -||metrics.quill.com^ -||metrics.quiltingcompany.com^ -||metrics.qvc.jp^ -||metrics.r200.co.uk^ -||metrics.radissonhotels.com^ -||metrics.radissonhotelsamericas.com^ -||metrics.rainbowmagic.co.uk^ -||metrics.ralphlauren.com^ -||metrics.ralphlauren.fr^ -||metrics.rarediseasesignup.com^ -||metrics.rbcgam.com^ -||metrics.rbcgma.com^ -||metrics.rci.com^ -||metrics.rcn.com^ -||metrics.rcsmetrics.it^ -||metrics.reallymoving.com^ -||metrics.realpropertymgt.com^ -||metrics.realsimple.com^ -||metrics.realtor.com^ -||metrics.refinitiv.com^ -||metrics.refrigeratedtransporter.com^ -||metrics.regal.es^ -||metrics.regions.com^ -||metrics.reliant.com^ -||metrics.renesas.com^ -||metrics.renfe.com^ -||metrics.rent.com^ -||metrics.reseguiden.se^ -||metrics.restaurant-hospitality.com^ -||metrics.restaurantonline.co.uk^ -||metrics.restockit.com^ -||metrics.retail-week.com^ -||metrics.rethinksma.com^ -||metrics.rewe-reisen.de^ -||metrics.rewe.de^ -||metrics.richmondamerican.com^ -||metrics.riteaid.com^ -||metrics.rituxan.com^ -||metrics.rituxanforgpampa-hcp.com^ -||metrics.rituxanforpv.com^ -||metrics.rituxanforra-hcp.com^ -||metrics.rituxanforra.com^ -||metrics.rituxanhycela.com^ -||metrics.robeco.com^ -||metrics.roche-applied-science.com^ -||metrics.roche-infohub.co.za^ -||metrics.roche.de^ -||metrics.rochehelse.no^ -||metrics.rocheksa.com^ -||metrics.rochenet.pt^ -||metrics.rockandpop.cl^ -||metrics.rolex.cn^ -||metrics.rotorooter.com^ -||metrics.roxy.com^ -||metrics.royalcaribbean.com^ -||metrics.royalmail.com^ -||metrics.royalmailgroup.com^ -||metrics.rozlytrek.com^ -||metrics.ryanhomes.com^ -||metrics.rydahls.se^ -||metrics.sainsburysbank.co.uk^ -||metrics.salliemae.com^ -||metrics.samsclub.com^ -||metrics.samsunglife.com^ -||metrics.sap.com^ -||metrics.sasktel.com^ -||metrics.saudiairlines.com^ -||metrics.savethechildren.org.uk^ -||metrics.sce.com^ -||metrics.schooloutfitters.com^ -||metrics.sciencemag.org^ -||metrics.scopus.com^ -||metrics.scottrade.com^ -||metrics.sdcvisit.com^ -||metrics.seabourn.com^ -||metrics.seawheeze.com^ -||metrics.seb.se^ -||metrics.sebgroup.com^ -||metrics.seloger.com^ -||metrics.sensai-cosmetics.com^ -||metrics.sentido.com^ -||metrics.sephora.com^ -||metrics.sephora.fr^ -||metrics.sephora.it^ -||metrics.sephora.pl^ -||metrics.sfchronicle.com^ -||metrics.sfr.fr^ -||metrics.sgproof.com^ -||metrics.shangri-la.com^ -||metrics.shannons.com.au^ -||metrics.sharecare.com^ -||metrics.sharpusa.com^ -||metrics.shinseibank.com^ -||metrics.shiremedinfo.com^ -||metrics.shop.learningcurve.com^ -||metrics.shop.superstore.ca^ -||metrics.shopjapan.co.jp^ -||metrics.shopmyexchange.com^ -||metrics.showtickets.com^ -||metrics.showtime.com^ -||metrics.similac.com.tr^ -||metrics.siriusxm.ca^ -||metrics.siriusxm.com^ -||metrics.sisal.it^ -||metrics.sj1.omniture.com^ -||metrics.sjo.omniture.com^ -||metrics.skandia.se^ -||metrics.skipton.co.uk^ -||metrics.skistar.com^ -||metrics.sky.com^ -||metrics.sky.it^ -||metrics.skynews.com.au^ -||metrics.sling.com^ -||metrics.smartauctionlogin.com^ -||metrics.smartstyle.com^ -||metrics.smartzip.com^ -||metrics.smbcnikko.co.jp^ -||metrics.smedia.com.au^ -||metrics.snapfish.ca^ -||metrics.softwareag.com^ -||metrics.solarwinds.com^ -||metrics.solaseedair.jp^ -||metrics.solinst.com^ -||metrics.somas.se^ -||metrics.sony.com^ -||metrics.sony.jp^ -||metrics.sothebys.com^ -||metrics.southeastfarmpress.com^ -||metrics.southwest.com^ -||metrics.sparkassendirekt.de^ -||metrics.spdrs.com^ -||metrics.spencersonline.com^ -||metrics.spirithalloween.com^ -||metrics.srpnet.com^ -||metrics.ssga.com^ -||metrics.stage.www.vwfs.de^ -||metrics.standardandpoors.com^ -||metrics.stanfordhealthcare.org^ -||metrics.staples.com.au^ -||metrics.staples.com^ -||metrics.staplesadvantage.com^ -||metrics.starhub.com^ -||metrics.startribune.com^ -||metrics.statefarm.com^ -||metrics.statestreet.com^ -||metrics.steelcase.com^ -||metrics.steinhafels.com^ -||metrics.stockhead.com.au^ -||metrics.store.irobot.com^ -||metrics.strategiccoach.com^ -||metrics.striderite.com^ -||metrics.strokeawareness.com^ -||metrics.stubhub.co.uk^ -||metrics.stubhub.de^ -||metrics.stubhub.fr^ -||metrics.stwater.co.uk^ -||metrics.suncorpbank.com.au^ -||metrics.sunflowerhealthplan.com^ -||metrics.sungard.com^ -||metrics.sunlife.com^ -||metrics.sunpower.com^ -||metrics.sunpowercorp.com^ -||metrics.supercoach.com.au^ -||metrics.supercuts.com^ -||metrics.support.e-abbott.com^ -||metrics.svd.se^ -||metrics.swinburne.edu.au^ -||metrics.synergy.net.au^ -||metrics.synopsys.com^ -||metrics.sysco.com^ -||metrics.t-mobile.com^ -||metrics.t-mobilemoney.com^ -||metrics.tacobell.com^ -||metrics.tagesspiegel.de^ -||metrics.takami-labo.com^ -||metrics.talbots.com^ -||metrics.tamiflu.com^ -||metrics.tarceva.com^ -||metrics.target.com^ -||metrics.taste.com.au^ -||metrics.tasteline.com^ -||metrics.taxi.com^ -||metrics.taylormadegolf.com^ -||metrics.taylors.edu.my^ -||metrics.tbs.com^ -||metrics.tcm.com^ -||metrics.tcs.com^ -||metrics.td.com^ -||metrics.tdworld.com^ -||metrics.te.com^ -||metrics.teachforamerica.org^ -||metrics.teampages.com^ -||metrics.teamviewer.cn^ -||metrics.teamviewer.com^ -||metrics.tecentriq-hcp.com^ -||metrics.tecentriq.com^ -||metrics.teeoff.com^ -||metrics.telegraph.co.uk^ -||metrics.telenet.be^ -||metrics.telenor.se^ -||metrics.tescobank.com^ -||metrics.teveten-us.com^ -||metrics.texas.aaa.com^ -||metrics.tgifridays.com^ -||metrics.theaustralian.com.au^ -||metrics.thechronicle.com.au^ -||metrics.thedailybeast.com^ -||metrics.thefork.com^ -||metrics.thegrocer.co.uk^ -||metrics.thehartford.com^ -||metrics.thelott.com^ -||metrics.themadisonsquaregardencompany.com^ -||metrics.themercury.com.au^ -||metrics.thenation.com^ -||metrics.theomnichannelconference.co.uk^ -||metrics.therestaurantconference.co.uk^ -||metrics.therestaurantshow.co.uk^ -||metrics.thetrainline.com^ -||metrics.theworlds50best.com^ -||metrics.thingspeak.com^ -||metrics.thingsremembered.com^ -||metrics.thomasandfriends.com^ -||metrics.thomastrackmaster.com^ -||metrics.thoughtworks.com^ -||metrics.three.co.uk^ -||metrics.three.ie^ -||metrics.thrifty.com^ -||metrics.thrivent.com^ -||metrics.tiaa-cref.org^ -||metrics.tiaa.org^ -||metrics.ticketmaster.com^ -||metrics.tidewater.aaa.com^ -||metrics.tidycats.com^ -||metrics.tienda.telcel.com^ -||metrics.tim.it^ -||metrics.timberland.com^ -||metrics.timberland.de^ -||metrics.timberland.es^ -||metrics.timberland.it^ -||metrics.time.com^ -||metrics.timeinc.net^ -||metrics.timewarner.com^ -||metrics.timewarnercable.com^ -||metrics.tips.com.au^ -||metrics.tirebusiness.com^ -||metrics.tlc.com^ -||metrics.tmz.com^ -||metrics.tnkase.com^ -||metrics.tntdrama.com^ -||metrics.tommy.com^ -||metrics.tomsofmaine.com^ -||metrics.toofab.com^ -||metrics.toolbox.inter-ikea.com^ -||metrics.top50boutiquehotels.com^ -||metrics.top50cocktailbars.com^ -||metrics.top50gastropubs.com^ -||metrics.topshop.com^ -||metrics.toptenreviews.com^ -||metrics.toryburch.com^ -||metrics.totalwine.com^ -||metrics.townsvillebulletin.com.au^ -||metrics.toyota.com^ -||metrics.toyotacertificados.com^ -||metrics.toyotacertified.com^ -||metrics.toysrus.com^ -||metrics.tp.edu.sg^ -||metrics.tractorsupply.com^ -||metrics.traderonline.com^ -||metrics.trammellcrow.com^ -||metrics.travelchannel.com^ -||metrics.travelmoneyonline.co.uk^ -||metrics.travelodge.com^ -||metrics.trendmicro.co.jp^ -||metrics.trendmicro.com^ -||metrics.trendyol.com^ -||metrics.trovix.com^ -||metrics.trucker.com^ -||metrics.tryg.dk^ -||metrics.tsb.co.uk^ -||metrics.tsn.ca^ -||metrics.ttiinc.com^ -||metrics.tulsaworld.com^ -||metrics.tv2.dk^ -||metrics.tyrashow.warnerbros.com^ -||metrics.tyson.com^ -||metrics.tysonfoodservice.com^ -||metrics.ubi.com^ -||metrics.uhc.com^ -||metrics.ukfoodanddrinkshows.co.uk^ -||metrics.ulsterbank.com^ -||metrics.unipolsai.it^ -||metrics.united-internet.de^ -||metrics.ups.com^ -||metrics.us.playstation.com^ -||metrics.usbank.com^ -||metrics.usfoods.com^ -||metrics.usmint.gov^ -||metrics.uso.org^ -||metrics.usopen.org^ -||metrics.vademecum.es^ -||metrics.valuecityfurniture.com^ -||metrics.vanquis.co.uk^ -||metrics.vans.com.au^ -||metrics.vcm.com^ -||metrics.venclextahcp.com^ -||metrics.verizon.com^ -||metrics.vermontcountrystore.com^ -||metrics.vero.co.nz^ -||metrics.viasat.com^ -||metrics.viceroyhotelsandresorts.com^ -||metrics.viega.de^ -||metrics.vikingline.ee^ -||metrics.virginatlantic.com^ -||metrics.virginaustralia.com^ -||metrics.virginmedia.com^ -||metrics.virtualservers.com^ -||metrics.vision-systems.com^ -||metrics.visitflorida.com^ -||metrics.vitas.com^ -||metrics.vocus.com^ -||metrics.vodafone.co.uk^ -||metrics.vodafone.com.eg^ -||metrics.vodafone.com.tr^ -||metrics.vodafone.es^ -||metrics.vodafone.hu^ -||metrics.vodafone.ro^ -||metrics.vogue.com.au^ -||metrics.volusion.com^ -||metrics.vonage.co.uk^ -||metrics.vonage.com^ -||metrics.vrst.com^ -||metrics.vrtx.com^ -||metrics.vueling.com^ -||metrics.vw.com^ -||metrics.vwfs.com.br^ -||metrics.vwfs.com^ -||metrics.vwfs.cz^ -||metrics.vwfs.de^ -||metrics.vwfs.es^ -||metrics.vwfs.fr^ -||metrics.vwfs.gr^ -||metrics.vwfs.ie^ -||metrics.vwfs.it^ -||metrics.vwfs.mx^ -||metrics.vwfs.pl^ -||metrics.vwfs.pt^ -||metrics.wacken.com^ -||metrics.walgreens.com^ -||metrics.walmart.com^ -||metrics.walmartmoneycard.com^ -||metrics.washingtonpost.com^ -||metrics.waste360.com^ -||metrics.watch.nba.com^ -||metrics.watlow.com^ -||metrics.wdc.com^ -||metrics.wealthmanagement.com^ -||metrics.weeklytimesnow.com.au^ -||metrics.westernunion.com^ -||metrics.westgateresorts.com^ -||metrics.westmarine.com^ -||metrics.westpac.com.au^ -||metrics.wgu.edu^ -||metrics.when.com^ -||metrics.wildadventures.com^ -||metrics.william-reed.com^ -||metrics.williamhill.com^ -||metrics.williamhill.es^ -||metrics.williams-sonoma.com^ -||metrics.wingatehotels.com^ -||metrics.winsc.natwest.com^ -||metrics.winsc.rbs.co.uk^ -||metrics.wm.com^ -||metrics.wmg.com^ -||metrics.wnba.com^ -||metrics.wolterskluwer.com^ -||metrics.womansday.com^ -||metrics.workforce.com^ -||metrics.workfront.com^ -||metrics.workingadvantage.com^ -||metrics.worldbank.org^ -||metrics.worlds50bestbars.com^ -||metrics.worldsbestsommeliersselection.com^ -||metrics.worldsbestvineyards.com^ -||metrics.worldsteakchallenge.com^ -||metrics.worldvision.org^ -||metrics.wu.com^ -||metrics.www.apus.edu^ -||metrics.www.career-education.monster.com^ -||metrics.www.vwfs.de^ -||metrics.wyndhamhotels.com^ -||metrics.wyndhamtrips.com^ -||metrics.xfinity.com^ -||metrics.xofluza.com^ -||metrics.xolairhcp.com^ -||metrics.ybs.co.uk^ -||metrics.yelloh.com^ -||metrics.yellowbook.com^ -||metrics.yellowpages.com^ -||metrics.yola.com^ -||metrics.youandyourwedding.co.uk^ -||metrics.yourlexusdealer.com^ -||metrics.zacks.com^ -||metrics1.citi.com^ -||metrics1.citibank.com^ -||metrics1.citibankonline.com^ -||metrics1.citicards.com^ -||metrics1.experian.com^ -||metrics1.thankyou.com^ -||metrics2.houselogic.com^ -||metrics2.williamhill.com^ -||metricss.bibliotheek.nl^ -||metricssecure.empiretoday.com^ -||metricssecure.luna.com^ -||metricssecure.nmfn.com^ -||metricssecure.northwesternmutual.com^ -||metricstur.www.svenskaspel.se^ -||metrix.511tactical.com^ -||metrix.avon.uk.com^ -||metrix.publix.com^ -||metrix.youravon.com^ -||mix-omniture.rbs.com^ -||mixomniture.rbs.com^ -||mktg.aa.f5.com^ -||ms.topschooljobs.org^ -||msub.mmail.northeast.aaa.com^ -||mtc.jetstar.com^ -||mtc.nhk.or.jp^ -||mtc.qantas.com^ -||mtcs.nhk-ondemand.jp^ -||mtcs.nhk.or.jp^ -||mtr.fluor.com^ -||mtrs.cooecfluor.com^ -||mtrs.fluor.com^ -||mtrs.fluorconstructors.com^ -||mtrs.fluoruniversity.com^ -||mtx.lastminute.com.au^ -||my.iheart.com^ -||myhome.usg.com^ -||n.earthlink.net^ -||n.fitchratings.com^ -||n.hdsupplysolutions.com^ -||n.lexusfinancial.com^ -||n.netquote.com^ -||n.toyotafinancial.com^ -||nanalytics.virginaustralia.com^ -||nats.xing.com^ -||natsp.xing.com^ -||newsletter.sst-apac.test.cjmadobe.com^ -||newtest.wunderman-email.cjm.adobe.com^ -||nmetrics.samsung.com^ -||nmetrics.samsungmobile.com^ -||nocaadobefpc.optus.com.au^ -||nom.familysearch.org^ -||nom.lds.org^ -||nomsc.kpn.com^ -||nossl.aafpfoundation.org^ -||nossl.basco.com^ -||notice-tmo.notice.assurancewireless.com^ -||nsc.coutts.com^ -||nsc.iombank.com^ -||nsc.natwest.com^ -||nsc.natwestgroup.com^ -||nsc.natwestgroupremembers.com^ -||nsc.natwestinternational.com^ -||nsc.rbs.co.uk^ -||nsc.rbs.com^ -||nsc.ulsterbank.co.uk^ -||nsc.ulsterbank.com^ -||nsc.ulsterbank.ie^ -||nscmetrics.shell.com^ -||nsm.dell.com^ -||nsm.sungardas.com^ -||nsmeasure.jstor.org^ -||nsmetrics.adelaidenow.com.au^ -||nsmetrics.couriermail.com.au^ -||nsmetrics.dailytelegraph.com.au^ -||nsmetrics.geelongadvertiser.com.au^ -||nsmetrics.goldcoastbulletin.com.au^ -||nsmetrics.heraldsun.com.au^ -||nsmetrics.levi.com^ -||nsmetrics.ni.com^ -||nsmetrics.theaustralian.com.au^ -||nsmetrics.themercury.com.au^ -||nsmetrics.vogue.com.au^ -||nsstatistics.calphalon.com^ -||nsteq.queensland.com^ -||o.bluewin.ch^ -||o.carmax.com^ -||o.efaxcorporate.com^ -||o.evoicereceptionist.com^ -||o.fandango.com^ -||o.j2.com^ -||o.j2global.com^ -||o.macworld.co.uk^ -||o.medallia.com^ -||o.opentable.co.uk^ -||o.opentable.com^ -||o.otrestaurant.com^ -||o.swisscom.ch^ -||o.webmd.com^ -||o.xbox.com^ -||o8.hyatt.com^ -||ocs.hagerty.com^ -||odc.1und1.de^ -||odc.wunderground.com^ -||oimg.login.cnbc.com^ -||oimg.m.calltheclose.cnbc.com^ -||oimg.nbcsports.com^ -||oimg.nbcuni.com^ -||oimg.universalorlandovacations.com^ -||oimg.universalstudioshollywood.com^ -||om-ssl.consorsbank.de^ -||om.abritel.fr^ -||om.aopa.org^ -||om.burberry.com^ -||om.cbsi.com^ -||om.churchofjesuschrist.org^ -||om.cyberrentals.com^ -||om.dowjoneson.com^ -||om.escapehomes.com^ -||om.etnetera.cz^ -||om.familysearch.org^ -||om.fewo-direkt.de^ -||om.greatrentals.com^ -||om.healthgrades.com^ -||om.homeaway.ca^ -||om.homeaway.co.in^ -||om.hoteis.com^ -||om.hoteles.com^ -||om.hotels.cn^ -||om.hotwire.com^ -||om.lds.org^ -||om.medreps.com^ -||om.norton.com^ -||om.owenscorning.com^ -||om.ringcentral.com^ -||om.rogersmedia.com^ -||om.servicelive.com^ -||om.sportsnet.ca^ -||om.symantec.com^ -||om.travelocity.ca^ -||om.travelocity.com^ -||om.triphomes.com^ -||om.vacationrentals.com^ -||om.vegasmeansbusiness.com^ -||om.venere.com^ -||om.visitbouldercity.com^ -||om.vrbo.com^ -||om.zdnet.com.au^ -||omahasteaks.com.102.122.207.net^ -||ometrics.ameds.com^ -||ometrics.netapp.com^ -||ometrics.warnerbros.com^ -||ometrics.wb.com^ -||omn.americanexpress.com^ -||omn.costumesupercenter.com^ -||omn.crackle.com^ -||omn.hasbro.com^ -||omn.murdoch.edu.au^ -||omn.rockpanel.co.uk^ -||omn.rockwool.com^ -||omn.sonypictures.com^ -||omn.wholesalehalloweencostumes.com^ -||omn2.hasbro.com^ -||omni.alaskaair.com^ -||omni.amsurg.com^ -||omni.avg.com^ -||omni.basspro.com^ -||omni.bluebird.com^ -||omni.bluecrossma.com^ -||omni.cancercenter.com^ -||omni.carecreditprovidercenter.com^ -||omni.cineplex.com^ -||omni.cn.saxobank.com^ -||omni.commercial.pccw.com^ -||omni.copaair.com^ -||omni.deere.com^ -||omni.deloittenet.deloitte.com^ -||omni.djoglobal.com^ -||omni.dsw.com^ -||omni.dxc.com^ -||omni.dxc.technology^ -||omni.elearners.com^ -||omni.genworth.com^ -||omni.holidaycheck.com^ -||omni.holidaycheck.cz^ -||omni.home.saxo^ -||omni.israelbonds.com^ -||omni.istockphoto.com^ -||omni.lightstream.com^ -||omni.nine.com.au^ -||omni.nwa.com^ -||omni.orvis.com^ -||omni.pcm.com^ -||omni.pemco.com^ -||omni.pluralsight.com^ -||omni.rei.com^ -||omni.rockethomes.com^ -||omni.sbicard.com^ -||omni.serve.com^ -||omni.sky.de^ -||omni.suntrust.com^ -||omni.superonline.net^ -||omni.syf.com^ -||omni.synchronybank.com^ -||omni.thermofisher.com^ -||omni.turkcell.com.tr^ -||omni.vikingrivercruises.com^ -||omni.westernasset.com^ -||omni.yellowpages.com^ -||omnifpc.devry.edu^ -||omnifpcs.devry.edu^ -||omnis.basspro.com^ -||omnis.firstdata.com^ -||omnis.pcmall.com^ -||omnistat.teleflora.com^ -||omnistats.jetblue.com^ -||omnistats.teleflora.com^ -||omnit.blinkfitness.com^ -||omnit.pureyoga.com^ -||omniture-dc-sec.cadence.com^ -||omniture-secure.valpak.com^ -||omniture-ssl.direct.asda.com^ -||omniture-ssl.groceries-qa.asda.com^ -||omniture-ssl.groceries.asda.com^ -||omniture-ssl.kia.com^ -||omniture-ssl.wal-mart.com^ -||omniture-ssl.walmart.ca^ -||omniture-ssl.walmart.com^ -||omniture.affarsliv.com^ -||omniture.chip.de^ -||omniture.chip.eu^ -||omniture.corel.com^ -||omniture.direct.asda.com^ -||omniture.groceries-qa.asda.com^ -||omniture.groceries.asda.com^ -||omniture.kcbd.com^ -||omniture.kennametal.com^ -||omniture.lg.com^ -||omniture.money.asda.com^ -||omniture.omgeo.com^ -||omniture.partycity.ca^ -||omniture.partycity.com^ -||omniture.rbs.com^ -||omniture.scotiabank.com^ -||omniture.stuff.co.nz^ -||omniture.theglobeandmail.com^ -||omniture.valpak.com^ -||omniture.waff.com^ -||omniture.wal-mart.com^ -||omniture.walmart.ca^ -||omniture.walmart.com^ -||omniture.yell.com^ -||omniture.yodlee.com^ -||omniture443.partycity.ca^ -||omniture443.partycity.com^ -||omns.americanexpress.com^ -||omns.crackle.com^ -||omns.murdoch.edu.au^ -||ompx.shopbop.com^ -||ompxs.shopbop.com^ -||oms.1067rock.ca^ -||oms.680news.com^ -||oms.avast.com^ -||oms.avg.com^ -||oms.avira.com^ -||oms.barrons.com^ -||oms.breakfasttelevision.ca^ -||oms.ccleaner.com^ -||oms.chatelaine.com^ -||oms.chatrwireless.com^ -||oms.cityline.tv^ -||oms.citynews.ca^ -||oms.citytv.com^ -||oms.country600.com^ -||oms.davita.com^ -||oms.dowjones.com^ -||oms.dowjoneson.com^ -||oms.easy1013.ca^ -||oms.factiva.com^ -||oms.fido.ca^ -||oms.fnlondon.com^ -||oms.fxnowcanada.ca^ -||oms.gendigital.com^ -||oms.goarmy.com^ -||oms.hellomagazine.com^ -||oms.jack969.com^ -||oms.macleans.ca^ -||oms.mansionglobal.com^ -||oms.marketwatch.com^ -||oms.mymcmurray.com^ -||oms.neimanmarcus.com^ -||oms.nhllive.com^ -||oms.norton.com^ -||oms.ocean985.com^ -||oms.omnitv.ca^ -||oms.reputationdefender.com^ -||oms.rogersmedia.com^ -||oms.snnow.ca^ -||oms.symantec.com^ -||oms.travelocity.ca^ -||oms.travelocity.com^ -||oms.tsc.ca^ -||oms.usnews.com^ -||oms.venere.com^ -||oms.wsj.com^ -||oms1.sportsnet.ca^ -||omsc.kpn.com^ -||omtr.financialengines.com^ -||omtr1.partners.salesforce.com^ -||omtr2.partners.salesforce.com^ -||omtrdc.jobsdb.com^ -||omtrdc.jobstreet.co.id^ -||omtrdc.jobstreet.com.my^ -||omtrdc.jobstreet.com.ph^ -||omtrdc.jobstreet.com.sg^ -||omtrdc.jobstreet.com^ -||omtrdc.jobstreet.vn^ -||omtrns.sstats.q8.dk^ -||onem.marketing.onemarketinguxp.com^ -||oopt.norauto.es^ -||opt.delta.com^ -||optimisation.co-oplegalservices.co.uk^ -||optimisation.coop.co.uk^ -||optimisation.data.lloydsbankinggroup.com^ -||optout.info.nordea.fi^ -||optout.info.nordea.no^ -||origin-smetrics.go365.com^ -||origin-target.humana.com^ -||os.efax.es^ -||os.efax.nl^ -||os.efaxcorporate.com^ -||os.evoice.com^ -||os.evoicereceptionist.com^ -||os.fandango.com^ -||os.j2.com^ -||os.j2global.com^ -||os.mbox.com.au^ -||os.mckinseyquarterly.com^ -||os.onebox.com^ -||os.send2fax.com^ -||os.shutterfly.com^ -||os.vudu.com^ -||osc.hrs.com^ -||oscs.palazzolasvegas.com^ -||osimg.discoveruniversal.com^ -||osimg.halloweenhorrornights.com^ -||osimg.nbcuni.com^ -||osimg.universalorlando.co.uk^ -||osimg.universalorlando.com^ -||osimg.universalorlandovacations.com^ -||osimg.universalparks.com^ -||osimg.universalstudioshollywood.com^ -||osimg.windsurfercrs.com^ -||osur.dell.com^ -||otr.kaspersky.ca^ -||otr.kaspersky.co.jp^ -||otr.kaspersky.co.uk^ -||otr.kaspersky.co.za^ -||otr.kaspersky.com.au^ -||otr.kaspersky.com.br^ -||otr.kaspersky.com.tr^ -||otr.kaspersky.com^ -||otr.kaspersky.de^ -||otr.kaspersky.es^ -||otr.kaspersky.fr^ -||otr.kaspersky.it^ -||otr.kaspersky.nl^ -||otr.kaspersky.pt^ -||otr.kaspersky.se^ -||otrack.workday.com^ -||otracks.workday.com^ -||ou.shutterfly.com^ -||outrigger-a.outrigger.com^ -||owa.carhartt.com^ -||ows.ihs.com^ -||owss.ihs.com^ -||p1.danskebank.co.uk^ -||p1.danskebank.dk^ -||p1.danskebank.ie^ -||p2.danskebank.co.uk^ -||p2.danskebank.dk^ -||p2.danskebank.fi^ -||p2.danskebank.no^ -||p2.danskebank.se^ -||page.e.silverfernfarms.com^ -||page.email.key.com^ -||pagedot.deutschepost.de^ -||pages.ajo.knak.link^ -||pages.comunicaciones.ficohsa.com.gt^ -||pages.email.princess.com^ -||pages.guest.princess.com^ -||pages.info.ficohsa.com.pa^ -||pages.mail.puntoscolombia.com^ -||pages.newsletter.avianca.com^ -||pbstats.jpmorgan.com^ -||pc.personalcreations.com^ -||pdmsmrt.buick.ca^ -||pdmsmrt.buick.com^ -||pdmsmrt.cadillac.com^ -||pdmsmrt.cadillaccanada.ca^ -||pdmsmrt.chevrolet.ca^ -||pdmsmrt.chevrolet.com^ -||pdmsmrt.gmc.com^ -||pdmsmrt.gmccanada.ca^ -||petal.calyxflowers.com^ -||plugs.jameco.com^ -||private.cervicalcancer-risk.com^ -||private.roche.com^ -||purpose.fressnapf.at^ -||purpose.fressnapf.ch^ -||purpose.fressnapf.de^ -||purpose.maxizoo.be^ -||purpose.maxizoo.fr^ -||purpose.maxizoo.ie^ -||purpose.maxizoo.pl^ -||re.stjude.org^ -||repdata.12newsnow.com^ -||repdata.9news.com^ -||repdata.app.com^ -||repdata.battlecreekenquirer.com^ -||repdata.caller.com^ -||repdata.clarionledger.com^ -||repdata.coloradoan.com^ -||repdata.courier-journal.com^ -||repdata.dnj.com^ -||repdata.eveningsun.com^ -||repdata.federaltimes.com^ -||repdata.floridatoday.com^ -||repdata.golfweek.com^ -||repdata.jacksonsun.com^ -||repdata.kiiitv.com^ -||repdata.kitsapsun.com^ -||repdata.lansingstatejournal.com^ -||repdata.lcsun-news.com^ -||repdata.ldnews.com^ -||repdata.marionstar.com^ -||repdata.montgomeryadvertiser.com^ -||repdata.naplesnews.com^ -||repdata.news-press.com^ -||repdata.news10.net^ -||repdata.newsleader.com^ -||repdata.northjersey.com^ -||repdata.packersnews.com^ -||repdata.postcrescent.com^ -||repdata.poughkeepsiejournal.com^ -||repdata.sctimes.com^ -||repdata.tallahassee.com^ -||repdata.thv11.com^ -||repdata.usatoday.com^ -||repdata.wcsh6.com^ -||repdata.wzzm13.com^ -||repdata.ydr.com^ -||repdata.yorkdispatch.com^ -||rolt7it2lhml5rxa.edge41.testandtarget.omniture.com^ -||rpt.kidsfootlocker.com^ -||s-adobe.wacoal.jp^ -||s-adobeanalytics.vice.com^ -||s-omniture.yell.com^ -||s-sitecatalyst.work.shiseido.co.jp^ -||s.acxiom.com^ -||s.americanblinds.com^ -||s.ameriprisestats.com^ -||s.blinds.ca^ -||s.blinds.com^ -||s.boydgaming.com^ -||s.bramptonguardian.com^ -||s.cadent.bloomberglaw.com^ -||s.caledonenterprise.com^ -||s.cambridgetimes.ca^ -||s.columbiathreadneedle.ch^ -||s.columbiathreadneedle.co.uk^ -||s.columbiathreadneedle.hk^ -||s.durhamregion.com^ -||s.flamboroughreview.com^ -||s.grace.com^ -||s.guelphmercury.com^ -||s.hamiltonnews.com^ -||s.hdsupplysolutions.com^ -||s.hm.com^ -||s.insidehalton.com^ -||s.insideottawavalley.com^ -||s.justblinds.com^ -||s.lenovo.com^ -||s.lexusfinancial.com^ -||s.metrics.artistsnetwork.com^ -||s.metrics.skyandtelescope.com^ -||s.metroland.com^ -||s.mississauga.com^ -||s.musicradio.com^ -||s.muskokaregion.com^ -||s.newhamburgindependent.ca^ -||s.niagarafallsreview.ca^ -||s.niagarathisweek.com^ -||s.northbaynipissing.com^ -||s.northumberlandnews.com^ -||s.orangeville.com^ -||s.ourwindsor.ca^ -||s.parrysound.com^ -||s.rosettastone.co.uk^ -||s.rosettastone.com^ -||s.rosettastone.de^ -||s.rosettastone.eu^ -||s.sachem.ca^ -||s.save.ca^ -||s.simcoe.com^ -||s.stcatharinesstandard.ca^ -||s.tccc-comms.com^ -||s.testneedle.co.uk^ -||s.theifp.ca^ -||s.thepeterboroughexaminer.com^ -||s.therecord.com^ -||s.thespec.com^ -||s.thestar.com^ -||s.toronto.com^ -||s.toyotafinancial.com^ -||s.waterloochronicle.ca^ -||s.wellandtribune.ca^ -||s.wheels.ca^ -||s.yorkregion.com^ -||s02.bestsecret.com^ -||s1.subaru.com^ -||sa.adidas.ae^ -||sa.adidas.be^ -||sa.adidas.ca^ -||sa.adidas.ch^ -||sa.adidas.cn^ -||sa.adidas.co.in^ -||sa.adidas.co.uk^ -||sa.adidas.co^ -||sa.adidas.com.ar^ -||sa.adidas.com.au^ -||sa.adidas.com.br^ -||sa.adidas.com.tr^ -||sa.adidas.com.vn^ -||sa.adidas.com^ -||sa.adidas.cz^ -||sa.adidas.de^ -||sa.adidas.dk^ -||sa.adidas.es^ -||sa.adidas.fi^ -||sa.adidas.fr^ -||sa.adidas.gr^ -||sa.adidas.hu^ -||sa.adidas.ie^ -||sa.adidas.it^ -||sa.adidas.jp^ -||sa.adidas.mx^ -||sa.adidas.nl^ -||sa.adidas.no^ -||sa.adidas.pl^ -||sa.adidas.pt^ -||sa.adidas.se^ -||sa.adidas.sk^ -||sa.bankofinternet.com^ -||sa.cookingchanneltv.com^ -||sa.discovery.com^ -||sa.discoveryplus.com^ -||sa.discoveryplus.in^ -||sa.diynetwork.com^ -||sa.dyson.no^ -||sa.eurosport.co.uk^ -||sa.eurosport.com^ -||sa.fchp.org^ -||sa.foodnetwork.com^ -||sa.hgtv.com^ -||sa.investigationdiscovery.com^ -||sa.oprah.com^ -||sa.reebok.co.uk^ -||sa.tactics.com^ -||sa.tlc.com^ -||sa.travelchannel.com^ -||saa-aem.hamamatsu.com^ -||saa.247sports.com^ -||saa.cbs.com^ -||saa.cbsi.com^ -||saa.cbsnews.com^ -||saa.cbssports.com^ -||saa.cnet.com^ -||saa.collegesportslive.com^ -||saa.comicbook.com^ -||saa.dabl.com^ -||saa.datasheets360.com^ -||saa.daveandbusters.com^ -||saa.drphil.com^ -||saa.dyson.ae^ -||saa.dyson.at^ -||saa.dyson.be^ -||saa.dyson.ch^ -||saa.dyson.co.il^ -||saa.dyson.co.kr^ -||saa.dyson.co.nz^ -||saa.dyson.co.th^ -||saa.dyson.co.uk^ -||saa.dyson.co.za^ -||saa.dyson.com.au^ -||saa.dyson.com.ee^ -||saa.dyson.com.kw^ -||saa.dyson.com.ro^ -||saa.dyson.com.sg^ -||saa.dyson.com.tr^ -||saa.dyson.com^ -||saa.dyson.cz^ -||saa.dyson.de^ -||saa.dyson.dk^ -||saa.dyson.es^ -||saa.dyson.fr^ -||saa.dyson.hk^ -||saa.dyson.hr^ -||saa.dyson.hu^ -||saa.dyson.ie^ -||saa.dyson.in^ -||saa.dyson.it^ -||saa.dyson.lt^ -||saa.dyson.lu^ -||saa.dyson.lv^ -||saa.dyson.mx^ -||saa.dyson.my^ -||saa.dyson.nl^ -||saa.dyson.no^ -||saa.dyson.pl^ -||saa.dyson.pt^ -||saa.dyson.qa^ -||saa.dyson.se^ -||saa.dyson.sk^ -||saa.dyson.vn^ -||saa.dysoncanada.ca^ -||saa.etonline.com^ -||saa.gamespot.com^ -||saa.giantbomb.com^ -||saa.globalspec.com^ -||saa.irvinecompanyapartments.com^ -||saa.last.fm^ -||saa.maxpreps.com^ -||saa.metacritic.com^ -||saa.mysmile.wellfit.com^ -||saa.pacificdentalservices.com^ -||saa.paramountplus.com^ -||saa.paramountpressexpress.com^ -||saa.pluto.tv^ -||saa.popculture.com^ -||saa.poptv.com^ -||saa.rachaelrayshow.com^ -||saa.smilegeneration.com^ -||saa.smithsonianchannel.com^ -||saa.sparebank1.no^ -||saa.sportsline.com^ -||saa.startrek.com^ -||saa.tallink.com^ -||saa.techrepublic.com^ -||saa.tescomobile.com^ -||saa.thedoctorstv.com^ -||saa.thedrewbarrymoreshow.com^ -||saa.tvguide.com^ -||saa.viacomcbspressexpress.com^ -||saa.wowma.jp^ -||saa.zdnet.com^ -||saadata.career.netjets.com^ -||saadata.executivejetmanagement.com^ -||saadata.netjets.com^ -||saainfo.anz.co.nz^ -||saam.gumtree.com.au^ -||saametrics.aktia.fi^ -||saametrics.vaisala.com^ -||saat.dow.com^ -||sabxt.teeoff.com^ -||saccess.hikaritv.net^ -||sace.aaa.com^ -||sadb.superrtl-licensing.de^ -||sadb.superrtl.de^ -||sadb.toggo.de^ -||sadb.toggoeltern.de^ -||sadbelytics.munichre.com^ -||sadbmetrics.15kvalencia.es^ -||sadbmetrics.7canibales.com^ -||sadbmetrics.abc.es^ -||sadbmetrics.alhambraventure.com^ -||sadbmetrics.andorrataste.com^ -||sadbmetrics.aupaathletic.com^ -||sadbmetrics.autocasion.com^ -||sadbmetrics.b-venture.com^ -||sadbmetrics.burgosconecta.es^ -||sadbmetrics.canarias7.es^ -||sadbmetrics.carreraempresas.com^ -||sadbmetrics.carteleraasturias.com^ -||sadbmetrics.cmacomunicacion.com^ -||sadbmetrics.congresomigueldelibes.es^ -||sadbmetrics.diariosur.es^ -||sadbmetrics.diariovasco.com^ -||sadbmetrics.donostimasterscup.com^ -||sadbmetrics.e-movilidad.com^ -||sadbmetrics.e-volucion.es^ -||sadbmetrics.elbalcondemateo.es^ -||sadbmetrics.elbierzonoticias.com^ -||sadbmetrics.elcomercio.es^ -||sadbmetrics.elcorreo.com^ -||sadbmetrics.elcorreoclasificados.com^ -||sadbmetrics.eldiariomontanes.es^ -||sadbmetrics.elnortedecastilla.es^ -||sadbmetrics.finanza.eus^ -||sadbmetrics.funandseriousgamefestival.com^ -||sadbmetrics.granadablogs.com^ -||sadbmetrics.habitatsoft.com^ -||sadbmetrics.hoy.es^ -||sadbmetrics.hoycinema.com^ -||sadbmetrics.huelva24.com^ -||sadbmetrics.ideal.es^ -||sadbmetrics.innova-bilbao.com^ -||sadbmetrics.lagacetadesalamanca.es^ -||sadbmetrics.larioja.com^ -||sadbmetrics.lasprovincias.es^ -||sadbmetrics.laverdad.es^ -||sadbmetrics.lavozdegalicia.es^ -||sadbmetrics.lavozdigital.es^ -||sadbmetrics.leonoticias.com^ -||sadbmetrics.localdigitalkit.com^ -||sadbmetrics.lomejordelvinoderioja.com^ -||sadbmetrics.madridfusion.net^ -||sadbmetrics.malagaenlamesa.com^ -||sadbmetrics.masterelcorreo.com^ -||sadbmetrics.miperiodicodigital.com^ -||sadbmetrics.mondragoncitychallenge.com^ -||sadbmetrics.motocasion.com^ -||sadbmetrics.muevetebasket.es^ -||sadbmetrics.mujerhoy.com^ -||sadbmetrics.nextspain.es^ -||sadbmetrics.nuevosvecinos.com^ -||sadbmetrics.oferplan.com^ -||sadbmetrics.pidecita.com^ -||sadbmetrics.pisocompartido.com^ -||sadbmetrics.pisos.cat^ -||sadbmetrics.pisos.com^ -||sadbmetrics.relevo.com^ -||sadbmetrics.rendibu.com^ -||sadbmetrics.rtve.es^ -||sadbmetrics.salamancahoy.es^ -||sadbmetrics.salon-sie.com^ -||sadbmetrics.sansebastiangastronomika.com^ -||sadbmetrics.suenasur.com^ -||sadbmetrics.surinenglish.com^ -||sadbmetrics.todoalicante.es^ -||sadbmetrics.topcomparativas.com^ -||sadbmetrics.turium.es^ -||sadbmetrics.tusanuncios.com^ -||sadbmetrics.tvr.es^ -||sadbmetrics.unoauto.com^ -||sadbmetrics.vamosacorrer.com^ -||sadbmetrics.vehiculosdeocasion.eus^ -||sadbmetrics.vehiculosocasionalava.com^ -||sadbmetrics.vehiculosocasionlarioja.com^ -||sadbmetrics.vidasolidaria.com^ -||sadbmetrics.vocento.com^ -||sadbmetrics.vocentoeventos.com^ -||sadbmetrics.welife.es^ -||sadbmetrics.womennow.es^ -||sadbmetrics.worldcanic.com^ -||sadbmetrics.xlsemanal.com^ -||sadbmetrics.zendalibros.com^ -||sadobe.autoscout24.at^ -||sadobe.autoscout24.be^ -||sadobe.autoscout24.de^ -||sadobe.autoscout24.es^ -||sadobe.autoscout24.fr^ -||sadobe.autoscout24.it^ -||sadobe.autoscout24.lu^ -||sadobe.autoscout24.nl^ -||sadobe.dentsu-ho.com^ -||sadobe.falabella.com.co^ -||sadobe.falabella.com.pe^ -||sadobe.falabella.com^ -||sadobe.homecenter.com.co^ -||sadobe.mercuryinsurance.com^ -||sadobe.sodimac.com.ar^ -||sadobeanalytics.geico.com^ -||sadobeanalytics.medline.com^ -||sadobemarketing.boden.co.uk^ -||sadobemarketing.boden.eu^ -||sadobemarketing.boden.fr^ -||sadobemarketing.bodenclothing.com.au^ -||sadobemarketing.bodendirect.at^ -||sadobemarketing.bodendirect.de^ -||sadobemarketing.bodenusa.com^ -||sadobemetrics.dr.dk^ -||sadobemetrics.la-z-boy.com^ -||saec-metrics.base.be^ -||saec-metrics.telenet.be^ -||sal.milanoo.com^ -||sam.manager-magazin.de^ -||samc.frankly.ch^ -||samc.swisscanto.com^ -||samc.zkb.ch^ -||samc.zuerilaufcup.ch^ -||same.zkb.ch^ -||same.zkb.co.uk^ -||sametrics.finn.no^ -||sams.11freunde.de^ -||sams.spiegel.de^ -||samt.frankly.ch^ -||samt.swisscanto.com^ -||samt.zkb.ch^ -||sanalytics.adobe.tp.gskpro.com^ -||sanalytics.adultswim.co.uk^ -||sanalytics.allianz-assistance.co.uk^ -||sanalytics.amig.com^ -||sanalytics.autozone.com^ -||sanalytics.bd.com^ -||sanalytics.boing.es^ -||sanalytics.boingtv.it^ -||sanalytics.boomerang-tv.hu^ -||sanalytics.boomerang-tv.pl^ -||sanalytics.boomerang-tv.ro^ -||sanalytics.boomerang.asia^ -||sanalytics.boomerang.com.br^ -||sanalytics.boomerangmena.com^ -||sanalytics.boomerangtv.co.uk^ -||sanalytics.boomerangtv.com.au^ -||sanalytics.boomerangtv.de^ -||sanalytics.boomerangtv.fr^ -||sanalytics.boomerangtv.it^ -||sanalytics.boomerangtv.nl^ -||sanalytics.boomerangtv.se^ -||sanalytics.box.com^ -||sanalytics.boxlunch.com^ -||sanalytics.canaltnt.es^ -||sanalytics.cartoonito.co.uk^ -||sanalytics.cartoonito.com.br^ -||sanalytics.cartoonito.com.tr^ -||sanalytics.cartoonito.de^ -||sanalytics.cartoonito.fr^ -||sanalytics.cartoonito.hu^ -||sanalytics.cartoonito.it^ -||sanalytics.cartoonito.pl^ -||sanalytics.cartoonito.pt^ -||sanalytics.cartoonito.ro^ -||sanalytics.cartoonitoafrica.com^ -||sanalytics.cartoonitocheidea.it^ -||sanalytics.cartoonnetwork.bg^ -||sanalytics.cartoonnetwork.cl^ -||sanalytics.cartoonnetwork.co.uk^ -||sanalytics.cartoonnetwork.com.ar^ -||sanalytics.cartoonnetwork.com.au^ -||sanalytics.cartoonnetwork.com.br^ -||sanalytics.cartoonnetwork.com.co^ -||sanalytics.cartoonnetwork.com.mx^ -||sanalytics.cartoonnetwork.com.tr^ -||sanalytics.cartoonnetwork.com.ve^ -||sanalytics.cartoonnetwork.cz^ -||sanalytics.cartoonnetwork.de^ -||sanalytics.cartoonnetwork.dk^ -||sanalytics.cartoonnetwork.es^ -||sanalytics.cartoonnetwork.fr^ -||sanalytics.cartoonnetwork.hu^ -||sanalytics.cartoonnetwork.it^ -||sanalytics.cartoonnetwork.jp^ -||sanalytics.cartoonnetwork.nl^ -||sanalytics.cartoonnetwork.no^ -||sanalytics.cartoonnetwork.pl^ -||sanalytics.cartoonnetwork.pt^ -||sanalytics.cartoonnetwork.ro^ -||sanalytics.cartoonnetwork.se^ -||sanalytics.cartoonnetworkarabic.com^ -||sanalytics.cartoonnetworkasia.com^ -||sanalytics.cartoonnetworkclimatechampions.com^ -||sanalytics.cartoonnetworkhq.com^ -||sanalytics.cartoonnetworkindia.com^ -||sanalytics.cartoonnetworkkorea.com^ -||sanalytics.cartoonnetworkla.com^ -||sanalytics.cartoonnetworkme.com^ -||sanalytics.cdf.cl^ -||sanalytics.cha-ching.com^ -||sanalytics.chilevision.cl^ -||sanalytics.chvnoticias.cl^ -||sanalytics.cnfanart.com^ -||sanalytics.cnnchile.com^ -||sanalytics.combatefreestyle.com^ -||sanalytics.disneyplus.com^ -||sanalytics.enterprise.spectrum.com^ -||sanalytics.esporteinterativo.com.br^ -||sanalytics.ewz.ch^ -||sanalytics.expomaritt.com^ -||sanalytics.express.de^ -||sanalytics.facilitiesshow.com^ -||sanalytics.fietsverzekering.nl^ -||sanalytics.firstbankcard.com^ -||sanalytics.firstnational.com^ -||sanalytics.fnbolending.com^ -||sanalytics.fnbsd.com^ -||sanalytics.fsbloomis.com^ -||sanalytics.futuro360.com^ -||sanalytics.gladbachlive.de^ -||sanalytics.hallmark.com^ -||sanalytics.hottopic.com^ -||sanalytics.houghtonstatebank.com^ -||sanalytics.ingredion.com^ -||sanalytics.johnson.ca^ -||sanalytics.kbdesignlondon.com^ -||sanalytics.ksta.de^ -||sanalytics.landmands.com^ -||sanalytics.latamwbd.com^ -||sanalytics.lovemoney.com^ -||sanalytics.mail-corp.com^ -||sanalytics.makro.cz^ -||sanalytics.makro.es^ -||sanalytics.makro.nl^ -||sanalytics.makro.pl^ -||sanalytics.makro.pt^ -||sanalytics.metro.co.in^ -||sanalytics.metro.de^ -||sanalytics.metro.fr^ -||sanalytics.metro.it^ -||sanalytics.mondotv.jp^ -||sanalytics.mopo.de^ -||sanalytics.mz-web.de^ -||sanalytics.nba.com^ -||sanalytics.ncaa.com^ -||sanalytics.powernewz.ch^ -||sanalytics.proactiv.com^ -||sanalytics.radioberg.de^ -||sanalytics.radiobonn.de^ -||sanalytics.radioerft.de^ -||sanalytics.radioeuskirchen.de^ -||sanalytics.radiokoeln.de^ -||sanalytics.radioleverkusen.de^ -||sanalytics.radiorur.de^ -||sanalytics.ratioform.ch^ -||sanalytics.ratioform.it^ -||sanalytics.rbs.com.au^ -||sanalytics.rbs.com^ -||sanalytics.rbs.nl^ -||sanalytics.rbsbank.dk^ -||sanalytics.rbsbank.no^ -||sanalytics.rundschau-online.de^ -||sanalytics.safestepskids.com^ -||sanalytics.safety-health-expo.co.uk^ -||sanalytics.scsbnet.com^ -||sanalytics.securebanklogin.com^ -||sanalytics.skinny.co.nz^ -||sanalytics.smart.mercedes-benz.com^ -||sanalytics.southpointcasino.com^ -||sanalytics.spark.co.nz^ -||sanalytics.sydney.edu.au^ -||sanalytics.sydneyuniversity.cn^ -||sanalytics.tabichan.jp^ -||sanalytics.tbs.com^ -||sanalytics.tcm.com^ -||sanalytics.tcmuk.tv^ -||sanalytics.teentitanstoptalent.com^ -||sanalytics.tnt-tv.de^ -||sanalytics.tnt-tv.pl^ -||sanalytics.tnt-tv.ro^ -||sanalytics.tnt.africa^ -||sanalytics.tntdrama.com^ -||sanalytics.tntgo.tv^ -||sanalytics.tntsports.cl^ -||sanalytics.tntsports.com.ar^ -||sanalytics.tntsports.com.br^ -||sanalytics.toonamiafrica.com^ -||sanalytics.tributarycapital.com^ -||sanalytics.trutv.com^ -||sanalytics.verizon.com^ -||sanalytics.verizonenterprise.com^ -||sanalytics.verizonwireless.com^ -||sanalytics.visible.com^ -||sanalytics.warnertv.de^ -||sanalytics.warnertv.fr^ -||sanalytics.warnertv.pl^ -||sanalytics.warnertv.ro^ -||sanalytics.warnertvspiele.de^ -||sanalytics.washingtoncountybank.com^ -||sanalytics.wbd.com^ -||sanalytics.wideroe.no^ -||sanalytics.yorkstatebank.com^ -||sanl.champssports.ca^ -||sanl.champssports.com^ -||sanl.eastbay.com^ -||sanl.footaction.com^ -||sanl.footlocker.at^ -||sanl.footlocker.be^ -||sanl.footlocker.ca^ -||sanl.footlocker.co.nz^ -||sanl.footlocker.co.uk^ -||sanl.footlocker.com.au^ -||sanl.footlocker.com^ -||sanl.footlocker.cz^ -||sanl.footlocker.de^ -||sanl.footlocker.dk^ -||sanl.footlocker.es^ -||sanl.footlocker.fr^ -||sanl.footlocker.gr^ -||sanl.footlocker.hu^ -||sanl.footlocker.ie^ -||sanl.footlocker.it^ -||sanl.footlocker.kr^ -||sanl.footlocker.lu^ -||sanl.footlocker.nl^ -||sanl.footlocker.no^ -||sanl.footlocker.pl^ -||sanl.footlocker.pt^ -||sanl.footlocker.se^ -||sanl.six02.com^ -||sanmet.originenergy.com.au^ -||sappmetrics.sprint.com^ -||sasc.solidworks.com^ -||satarget.csu.edu.au^ -||satarget.npubank.com.au^ -||satarget.southaustralia.com^ -||satgt.grafana.com^ -||sats.manager-magazin.de^ -||sats.spiegel.de^ -||sawap.equifax.com^ -||sb.mynewplace.com^ -||sbcomniture.focus.de^ -||sbrands.lookfantastic.com^ -||sc-nossl.speakeasy.net^ -||sc.blurb.fr^ -||sc.cmt.com^ -||sc.coutts.com^ -||sc.cvent.com^ -||sc.disneylandparis.com^ -||sc.doctorwho.tv^ -||sc.hl.co.uk^ -||sc.hm.com^ -||sc.holtsmilitarybank.co.uk^ -||sc.icarly.com^ -||sc.infor.com^ -||sc.iombank.com^ -||sc.lacapitale.com^ -||sc.locator-rbs.co.uk^ -||sc.lombard.co.uk^ -||sc.lombard.ie^ -||sc.londonlive.co.uk^ -||sc.metrics-shell.com^ -||sc.mtv.co.uk^ -||sc.mtv.tv^ -||sc.mtvne.com^ -||sc.muji.net^ -||sc.natwest.com^ -||sc.natwestgroup.com^ -||sc.natwestgroupremembers.com^ -||sc.natwestinternational.com^ -||sc.neteller.com^ -||sc.nick.co.uk^ -||sc.nick.com.au^ -||sc.nick.com^ -||sc.nick.tv^ -||sc.nickelodeon.se^ -||sc.nickelodeonarabia.com^ -||sc.nickjr.com^ -||sc.nicktoons.co.uk^ -||sc.paramount.com^ -||sc.paramountnetwork.com^ -||sc.payback.de^ -||sc.rbos.com^ -||sc.rbs.co.uk^ -||sc.rbs.com^ -||sc.restplatzboerse.de^ -||sc.rhapsody.com^ -||sc.sanitas.com^ -||sc.sonystyle.com.cn^ -||sc.supertv.it^ -||sc.ulsterbank.co.uk^ -||sc.ulsterbank.ie^ -||sc.unitymedia.de^ -||sc.vmware.com^ -||sc.voanews.com^ -||sc.wa.gto.db.com^ -||sc2.constantcontact.com^ -||sc2.infor.com^ -||sc2metrics.exacttarget.com^ -||scadobe.vpay.co.kr^ -||scanalytics.wral.com^ -||sci.intuit.ca^ -||sci.intuit.com^ -||sci.quickbooks.com^ -||scmetrics.exacttarget.com^ -||scmetrics.shell.com^ -||scmetrics.vodafone.it^ -||scnd.landsend.co.uk^ -||scnd.landsend.com^ -||scnd.landsend.de^ -||scode.randomhouse.com^ -||sconnectstats.mckesson.com^ -||scookies-adobe.24plus.be^ -||scookies-adobe.cbc.be^ -||scookies-adobe.kbc-group.com^ -||scookies-adobe.kbc.be^ -||scookies-adobe.kbc.com^ -||scookies-adobe.kbcbrussels.be^ -||scookies-adobe.kbcsecurities.com^ -||scookies-adobe.kching.be^ -||scp.deltadentalwa.com^ -||scrippscookingchannel.cookingchanneltv.com^ -||scrippsfoodnetnew.foodnetwork.com^ -||scrippshgtvnew.hgtv.com^ -||scs.allsecur.nl^ -||scs.arcteryx.com^ -||scs.lacapitale.com^ -||scs.lifenet-seimei.co.jp^ -||scsmetrics.ho-mobile.it^ -||scsmetrics.vodafone.it^ -||sdata.avid.com^ -||sdata.chelseafc.com^ -||sdata.connection.com^ -||sdata.efficientlearning.com^ -||sdata.govconnection.com^ -||sdata.lifesize.com^ -||sdata.macconnection.com^ -||sdata.sealedair.com^ -||sdata.wiley.com^ -||sdc.allianz-autowelt.com^ -||sdc.allianz-autowelt.de^ -||sdc.allianz-maklerakademie.de^ -||sdc.allianz-vertrieb.de^ -||sdc.allianz-vor-ort.de^ -||sdc.allianz.de^ -||sdc.allianzpp.com^ -||sdc.allvest.de^ -||sdc.aware.com.au^ -||sdc.azt-automotive.com^ -||sdc.firmenonline.de^ -||sdc.firststatesuper.com.au^ -||sdc.kfz-steuercheck.de^ -||sdc.kvm-ga.de^ -||sdc.meinebav.com^ -||sdc.risikolebensversicherungen.com^ -||sdc2.credit-suisse.com^ -||sdcs.felissimo.co.jp^ -||sdome.underarmour.co.jp^ -||sec-analytics.panasonic.co.uk^ -||secmetrics.bkb.ch^ -||secmetrics.friendscout24.it^ -||secmetrics.friendscout24.nl^ -||secmetrics.leggmason.com^ -||secmetrics.rakuten-checkout.de^ -||secmetrics.schaefer-shop.at^ -||secmetrics.schaefer-shop.be^ -||secmetrics.schaefer-shop.ch^ -||secmetrics.schaefer-shop.de^ -||secmetrics.schaefer-shop.nl^ -||secu.hagerty.ca^ -||secu.hagerty.com^ -||secu.hagertyagent.com^ -||secu.hagertybroker.ca^ -||secure-stat.canal-plus.com^ -||secure.adata.ca.com^ -||secure.analytics.crowneplaza.com^ -||secure.analytics.intercontinental.com^ -||secure.diet.mayoclinic.org^ -||secure.info.m.seek.co.nz^ -||secure.realwomenofphiladelphia.ca^ -||secure.sigmaaldrich.com^ -||secure.valpak.com^ -||secure.whattoexpect.com^ -||secureae-edge.ikea.com^ -||secureanalytics.avis.at^ -||secureanalytics.avis.be^ -||secureanalytics.avis.ch^ -||secureanalytics.avis.co.uk^ -||secureanalytics.avis.com.pt^ -||secureanalytics.avis.cz^ -||secureanalytics.avis.de^ -||secureanalytics.avis.dk^ -||secureanalytics.avis.es^ -||secureanalytics.avis.fr^ -||secureanalytics.avis.lu^ -||secureanalytics.avis.nl^ -||secureanalytics.avis.no^ -||secureanalytics.avis.se^ -||secureanalytics.avisautonoleggio.it^ -||secureanalytics.budget.at^ -||secureanalytics.budget.co.uk^ -||secureanalytics.budget.de^ -||secureanalytics.budget.dk^ -||secureanalytics.budget.es^ -||secureanalytics.budget.fr^ -||secureanalytics.budget.no^ -||secureanalytics.budget.se^ -||secureanalytics.budgetautonoleggio.it^ -||secureanalytics.nedbank.co.za^ -||secureclicks.geae.com^ -||secureclicks.geaviation.com^ -||securedata.bestellen-mijnspar.be^ -||securedata.bioplanet.be^ -||securedata.collectandgo.be^ -||securedata.collectandgo.fr^ -||securedata.collishop.be^ -||securedata.colruyt.be^ -||securedata.colruyt.fr^ -||securedata.colruytgroup.com^ -||securedata.colruytgroupacademy.be^ -||securedata.commander-monspar.be^ -||securedata.cru.be^ -||securedata.dats24.be^ -||securedata.dreambaby.be^ -||securedata.dreamland.be^ -||securedata.mijnspar.be^ -||securedata.monspar.be^ -||securedata.okay.be^ -||securedata.retailpartnerscolruytgroup.be^ -||securedata.solucious.be^ -||securedata.unsw.edu.au^ -||secureflashplayerfeedback.adobe.com^ -||securemetrics-z.v.aaplimg.com^ -||securemetrics.athletawell.com^ -||securemetrics.blackrock.com^ -||securemetrics.brhome.com^ -||securemetrics.dailycandy.com^ -||securemetrics.gap.co.jp^ -||securemetrics.gap.co.uk^ -||securemetrics.gap.eu^ -||securemetrics.gpsuniforms.com^ -||securemetrics.marthastewart.com^ -||securemetrics.nbnco.com.au^ -||securestats.callawaygolf.com^ -||securestats.odysseygolf.com^ -||securetags.aeroterra.com^ -||securetags.esri-portugal.pt^ -||securetags.esri.ca^ -||securetags.esri.ch^ -||securetags.esri.cl^ -||securetags.esri.co^ -||securetags.esri.com.tr^ -||securetags.esri.com^ -||securetags.esri.de^ -||securetags.esri.fi^ -||securetags.esri.in^ -||securetags.esri.nl^ -||securetags.esri.ro^ -||securetags.esri.rw^ -||securetags.esrichina.hk^ -||securetags.esriuk.com^ -||securetags.geotecnologias.com^ -||securetags.gisbaltic.eu^ -||securetags.igeo.com.bo^ -||securetags.img.com.br^ -||securetags.maps.com^ -||securetags.sigsa.info^ -||securetarget.nedbank.co.za^ -||securetenilstats.turner.com^ -||securetracking.huntington.com^ -||securewebhelp.govmint.com^ -||sedge.aarp.org^ -||sedge.nfl.com^ -||selectronics.sony-latin.com^ -||service.vrp.com^ -||serviceo.comcast.net^ -||serviceo.xfinity.com^ -||serviceos.comcast.net^ -||serviceos.xfinity.com^ -||sfeedback.equa.cz^ -||sfirst.penfed.org^ -||sfirstparty.here.com^ -||sfpc.changehealthcare.com^ -||sgms.greatschools.org^ -||sgw-analytics.panasonic.com^ -||shop.lids.ca^ -||shqmetrics.sony.com^ -||sicas.ikea.com^ -||sicas.ikea.net^ -||sig.ig.com^ -||sig.igmarkets.com^ -||sig.nadex.com^ -||simg.bwin.be^ -||simg.bwin.com^ -||simg.bwin.es^ -||simg.bwin.fr^ -||simg.bwin.it^ -||simg.discovery.com^ -||simg.gamebookers.com^ -||simg.interhome.at^ -||simg.interhome.be^ -||simg.interhome.com^ -||simg.interhome.de^ -||simg.interhome.fr^ -||simg.interhome.ie^ -||simg.interhome.no^ -||simg.interhome.pl^ -||simg.interhome.se^ -||simg.mgsgamesonline.com^ -||simg.premium.com^ -||simg.sh.bwin.de^ -||simg.yemeksepeti.com^ -||sinfo.dtcidev.co^ -||sinmo.chasecenter.com^ -||sit-metrics.nab.com.au^ -||sit-smetrics.nab.com.au^ -||site.emarketer.com^ -||site.johnlewis-insurance.com^ -||site.waitrose.com^ -||site2.emarketer.com^ -||sitecat.eset.com^ -||sitecat.troweprice.com^ -||sitecatalyst.pts.se^ -||sitecatalyst.smartsource.com^ -||sitecatalyst.work.shiseido.co.jp^ -||sitecatalysts.a-q-f.com^ -||sitecatalysts.saisoncard.co.jp^ -||sitecats.troweprice.com^ -||sitectlyst.saksfifthavenue.com^ -||sjourney.aarp.org^ -||sjourney.penfed.org^ -||sjremetrics.java.com^ -||slaunch.shopcanopy.com^ -||slaunch.spectrumtherapeutics.com^ -||sm.delltechnologies.com^ -||sm.edweek.org^ -||sm.macys.com^ -||sm.stjude.org^ -||sm.sungardas.com^ -||sm.trb.com^ -||smatning.volkswagen.se^ -||smatrix.hbo.com^ -||smeasurement.fcc-fac.ca^ -||smeasurement.infiniti.ca^ -||smeasurement.nissan.ca^ -||smetc.banfield.com^ -||smetric.4imprint.com^ -||smetric.ads.microsoft.com^ -||smetric.atg.se^ -||smetric.bahamabreeze.com^ -||smetric.baylorhealth.com^ -||smetric.betway.com^ -||smetric.bimsplus24.pl^ -||smetric.biogen.com^ -||smetric.carview.co.jp^ -||smetric.changiairport.com^ -||smetric.cheddars.com^ -||smetric.darden.com^ -||smetric.dtgonlineplus.de^ -||smetric.e-nichii.net^ -||smetric.eddiev.com^ -||smetric.efgonlineplus.de^ -||smetric.gconlineplus.at^ -||smetric.gconlineplus.de^ -||smetric.gebrueder-goetz.de^ -||smetric.gutonlineplus.de^ -||smetric.hilton.com^ -||smetric.hti24.pl^ -||smetric.htionlineplus.de^ -||smetric.hydrosolar24.pl^ -||smetric.iccu.com^ -||smetric.itgonlineplus.de^ -||smetric.lo.movement.com^ -||smetric.longhornsteakhouse.com^ -||smetric.m.nissan-global.com^ -||smetric.malaysiaairlines.com^ -||smetric.mandatum.fi^ -||smetric.markenschuhe.de^ -||smetric.millenniumhotels.com^ -||smetric.movement.com^ -||smetric.nfgonlineplus.de^ -||smetric.olivegarden.com^ -||smetric.panpacific.com^ -||smetric.parkroyalhotels.com^ -||smetric.philosophy.com^ -||smetric.redlobster.com^ -||smetric.sales.vikingline.com^ -||smetric.schwab.com^ -||smetric.schwabinstitutional.com^ -||smetric.schwabplan.com^ -||smetric.seasons52.com^ -||smetric.shop.com^ -||smetric.sydneywater.com.au^ -||smetric.tfgonlineplus.de^ -||smetric.thecapitalburger.com^ -||smetric.thecapitalgrille.com^ -||smetric.trulia.com^ -||smetric.tsite.jp^ -||smetric.volkswagen-nutzfahrzeuge.de^ -||smetric.volkswagen-veicolicommerciali.it^ -||smetric.volkswagen.ch^ -||smetric.volkswagen.com.au^ -||smetric.volkswagen.com^ -||smetric.volkswagen.de^ -||smetric.volkswagen.es^ -||smetric.volkswagen.ie^ -||smetric.volkswagen.it^ -||smetric.volkswagen.pl^ -||smetric.volkswagen.ru^ -||smetric.vw.ca^ -||smetric.vw.com.tr^ -||smetric.worldcat.org^ -||smetric.yardhouse.com^ -||smetricas.fgv.br^ -||smetrics-cns.panasonic.com^ -||smetrics-ieeexplore.ieee.org^ -||smetrics-smartcommerce.amazon.in^ -||smetrics.1011bigfm.com^ -||smetrics.1031freshradio.ca^ -||smetrics.1043freshradio.ca^ -||smetrics.1045freshradio.ca^ -||smetrics.1075daverocks.com^ -||smetrics.10daily.com.au^ -||smetrics.10play.com.au^ -||smetrics.1792bourbon.com^ -||smetrics.1800contacts.com^ -||smetrics.21nova.com^ -||smetrics.24hourfitness.com^ -||smetrics.28degreescard.com.au^ -||smetrics.360dx.com^ -||smetrics.3838.com^ -||smetrics.3cat.cat^ -||smetrics.3kronor.se^ -||smetrics.3m.com^ -||smetrics.48.ie^ -||smetrics.50southcapital.com^ -||smetrics.7-elevenfleet.com^ -||smetrics.7eleven.com.au^ -||smetrics.915thebeat.com^ -||smetrics.925thechuck.ca^ -||smetrics.931freshradio.ca^ -||smetrics.963bigfm.com^ -||smetrics.aa.co.uk^ -||smetrics.aa.com^ -||smetrics.aaas.org^ -||smetrics.aaasouth.com^ -||smetrics.aadimbalance.com^ -||smetrics.aainsurance.co.nz^ -||smetrics.aami.com.au^ -||smetrics.aamotors.com^ -||smetrics.aarp.org^ -||smetrics.aarpmedicareplans.com^ -||smetrics.aavacations.com^ -||smetrics.abacusplumbing.net^ -||smetrics.abanca.com^ -||smetrics.abbott.co.in^ -||smetrics.abbott.com.sg^ -||smetrics.abbott.com^ -||smetrics.abbott^ -||smetrics.abbottbrasil.com.br^ -||smetrics.abbottcore.com^ -||smetrics.abbottdiagnostics.com^ -||smetrics.abbottgps.com^ -||smetrics.abbottnutrition.com.my^ -||smetrics.abbottnutrition.com^ -||smetrics.abbottstore.com^ -||smetrics.abbottvascular.com^ -||smetrics.abbvie.com^ -||smetrics.abcspark.ca^ -||smetrics.abercrombie.cn^ -||smetrics.abercrombie.com^ -||smetrics.abercrombiekids.com^ -||smetrics.abilify.com^ -||smetrics.abilifyasimtufii.com^ -||smetrics.abilifyasimtufiihcp.com^ -||smetrics.abilifymaintena.com^ -||smetrics.abilifymaintenahcp.com^ -||smetrics.abilifymycite.com^ -||smetrics.abilifymycitehcp.com^ -||smetrics.absolute.com^ -||smetrics.absolutetotalcare.com^ -||smetrics.absorbcommunicationskit.com^ -||smetrics.academy.com^ -||smetrics.accaglobal.com^ -||smetrics.accredo.com^ -||smetrics.aclu.org^ -||smetrics.acpny.com^ -||smetrics.acs.org.au^ -||smetrics.act4yourheart.com^ -||smetrics.actemra.com^ -||smetrics.actemrahcp.com^ -||smetrics.actemrainfo.com^ -||smetrics.activase.com^ -||smetrics.active.com^ -||smetrics.activecommunities.com^ -||smetrics.activeendurance.com^ -||smetrics.activenetwork.com^ -||smetrics.adage.com^ -||smetrics.addabilify.com^ -||smetrics.adhduniversity.com^ -||smetrics.adiglobal.us^ -||smetrics.adnradio.cl^ -||smetrics.adpkdquestions.com^ -||smetrics.adt.com^ -||smetrics.adult.prevnar13.com^ -||smetrics.adultnutritionlearningcenter.com^ -||smetrics.advancedmd.com^ -||smetrics.advil.com^ -||smetrics.aegon.co.uk^ -||smetrics.aelca.es^ -||smetrics.aem.playstation.com^ -||smetrics.aena.es^ -||smetrics.aetn.com^ -||smetrics.aetnamedicare.com^ -||smetrics.afcom.com^ -||smetrics.affymetrix.com^ -||smetrics.afpjobs.amazon.com^ -||smetrics.afrique.pwc.com^ -||smetrics.afvclub.ca^ -||smetrics.afvclub.com^ -||smetrics.agentprovocateur.com^ -||smetrics.agilent.com^ -||smetrics.agillink.com^ -||smetrics.agra-net.com^ -||smetrics.aia.co.kr^ -||smetrics.aia.com^ -||smetrics.aida.de^ -||smetrics.airandgo.fr^ -||smetrics.aircanada.com^ -||smetrics.airmiles.ca^ -||smetrics.airngo.at^ -||smetrics.airngo.de^ -||smetrics.airngo.dk^ -||smetrics.airngo.it^ -||smetrics.airngo.nl^ -||smetrics.airngo.no^ -||smetrics.airngo.pt^ -||smetrics.airngo.se^ -||smetrics.airtv.net^ -||smetrics.ajinomoto.co.jp^ -||smetrics.aktiv-mit-psa.de^ -||smetrics.aktiv-mit-rheuma.de^ -||smetrics.albankaldawli.org^ -||smetrics.alecensa.com^ -||smetrics.alexandani.com^ -||smetrics.alfalaval.cn^ -||smetrics.alfalaval.com.au^ -||smetrics.alfalaval.com^ -||smetrics.alfalaval.kr^ -||smetrics.alfalaval.sg^ -||smetrics.alka.dk^ -||smetrics.alkamobil.dk^ -||smetrics.allegion.com^ -||smetrics.allenedmonds.ca^ -||smetrics.allenedmonds.com^ -||smetrics.alliancebernstein.com^ -||smetrics.allianz.com.au^ -||smetrics.allianzlife.com^ -||smetrics.allstate.com^ -||smetrics.allstatecorporation.com^ -||smetrics.allwellmedicare.com^ -||smetrics.ally.com^ -||smetrics.alpo.com^ -||smetrics.amaroso.com.au^ -||smetrics.ambetterhealth.com^ -||smetrics.ambetterofillinois.com^ -||smetrics.ambetterofnorthcarolina.com^ -||smetrics.ambetteroftennessee.com^ -||smetrics.americanairlines.com.au^ -||smetrics.americanairlines.com^ -||smetrics.americanairlines.es^ -||smetrics.americanairlines.in^ -||smetrics.americanblinds.com^ -||smetrics.americancentury.com^ -||smetrics.americanconnection.io^ -||smetrics.americanway.com^ -||smetrics.americastire.com^ -||smetrics.amersportsproclub.com^ -||smetrics.amfam.com^ -||smetrics.amg.com^ -||smetrics.amica.com^ -||smetrics.amp.co.nz^ -||smetrics.amplifon.com^ -||smetrics.amway-bulgaria-qas.com^ -||smetrics.amway-estonia.com^ -||smetrics.amway-qas.com.co^ -||smetrics.amway-qas.nl^ -||smetrics.amway-turkey-qas.com^ -||smetrics.amway.ch^ -||smetrics.amway.com.ar^ -||smetrics.amway.com.hn^ -||smetrics.amway.it^ -||smetrics.amway.my^ -||smetrics.amway.se^ -||smetrics.amway.sg^ -||smetrics.ancestry.ca^ -||smetrics.ancestry.co.uk^ -||smetrics.ancestry.com.au^ -||smetrics.ancestry.com^ -||smetrics.ancestry.de^ -||smetrics.angara.com^ -||smetrics.angi.com^ -||smetrics.anhi.org^ -||smetrics.animalhealthacademy.com.au^ -||smetrics.animalnetwork.com^ -||smetrics.anixter.com^ -||smetrics.anntaylor.com^ -||smetrics.ansible.com^ -||smetrics.ansys.com^ -||smetrics.antena3.com^ -||smetrics.anthem.com^ -||smetrics.anticoagulante.info^ -||smetrics.anwagolf.com^ -||smetrics.apellis.com^ -||smetrics.apia.com.au^ -||smetrics.apps.ge.com^ -||smetrics.aptashop.co.uk^ -||smetrics.arcobusinesssolutions.com^ -||smetrics.argenta.be^ -||smetrics.argenta.eu^ -||smetrics.argos.co.uk^ -||smetrics.arhealthwellness.com^ -||smetrics.arkansastotalcare.com^ -||smetrics.armadaskis.com^ -||smetrics.army.mod.uk^ -||smetrics.arnette.com^ -||smetrics.as.com^ -||smetrics.ascentric.co.uk^ -||smetrics.aservoequihaler.com^ -||smetrics.asgrow.com.mx^ -||smetrics.asics.com^ -||smetrics.asmithbowman.com^ -||smetrics.assurancewireless.com^ -||smetrics.assuranthealth.com^ -||smetrics.asteronlife.com.au^ -||smetrics.asumag.com^ -||smetrics.atecsports.com^ -||smetrics.atlantic.caa.ca^ -||smetrics.atlanticsuperstore.ca^ -||smetrics.atmosphere.ca^ -||smetrics.atomic.com^ -||smetrics.atresmedia.com^ -||smetrics.atresplayer.com^ -||smetrics.au.com^ -||smetrics.au.ugg.com^ -||smetrics.audi.co.uk^ -||smetrics.audifinance.ca^ -||smetrics.audifinancialservices.nl^ -||smetrics.australiancurriculum.edu.au^ -||smetrics.australiansuper.com^ -||smetrics.autodesk.com^ -||smetrics.automobilemag.com^ -||smetrics.automobilwoche.de^ -||smetrics.autonews.com^ -||smetrics.autotrader.com^ -||smetrics.avalara.com^ -||smetrics.avancesenrespiratorio.com^ -||smetrics.avastin-hcp.com^ -||smetrics.avastin.com^ -||smetrics.aveva.com^ -||smetrics.aviationweek.com^ -||smetrics.aviva.co.uk^ -||smetrics.avnet.com^ -||smetrics.axa-direct-life.co.jp^ -||smetrics.axs.com^ -||smetrics.azcompletehealth.com^ -||smetrics.babycenter.at^ -||smetrics.babycenter.ca^ -||smetrics.babycenter.com.au^ -||smetrics.babycenter.com.mx^ -||smetrics.babycenter.com.ph^ -||smetrics.babycenter.de^ -||smetrics.babycenter.in^ -||smetrics.babycenter.ru^ -||smetrics.babycentre.co.uk^ -||smetrics.babyjoyclub.com^ -||smetrics.babynes.ch^ -||smetrics.bakerbrothersplumbing.com^ -||smetrics.bamboohr.com^ -||smetrics.banamex.com^ -||smetrics.bancobmg.com.br^ -||smetrics.bancomundial.org^ -||smetrics.bancsabadell.com^ -||smetrics.bank-daiwa.co.jp^ -||smetrics.bankatfirst.com^ -||smetrics.bankaustria.at^ -||smetrics.bankinter.com^ -||smetrics.bankofamerica.com^ -||smetrics.bankofmelbourne.com.au^ -||smetrics.banksa.com.au^ -||smetrics.bankwest.com.au^ -||smetrics.banquemondiale.org^ -||smetrics.banter.com^ -||smetrics.barandblock.co.uk^ -||smetrics.barberinilenses.com^ -||smetrics.barcainnovationhub.com^ -||smetrics.barkandwhiskers.com^ -||smetrics.barracuda.com^ -||smetrics.base.be^ -||smetrics.baskinrobbins.com^ -||smetrics.bayer.africa^ -||smetrics.bayer.ca^ -||smetrics.bayer.co^ -||smetrics.bayer.com.ar^ -||smetrics.bayer.com.br^ -||smetrics.bayer.com.mx^ -||smetrics.bayer.com.tr^ -||smetrics.bayer.com^ -||smetrics.bayer.cr^ -||smetrics.bayer.cz^ -||smetrics.bayer.dz^ -||smetrics.bayer.ec^ -||smetrics.bayer.gt^ -||smetrics.bayer.ma^ -||smetrics.bayer.pe^ -||smetrics.bayer.sk^ -||smetrics.bayer.us^ -||smetrics.bbb.org^ -||smetrics.bbva.com.ar^ -||smetrics.bbva.com.co^ -||smetrics.bbva.com.uy^ -||smetrics.bbva.com^ -||smetrics.bbva.es^ -||smetrics.bbva.it^ -||smetrics.bbva.mx^ -||smetrics.bbva.pe^ -||smetrics.bbvacib.com^ -||smetrics.bbvaexperience.com^ -||smetrics.bbvanet.com.co^ -||smetrics.bbvanet.com.mx^ -||smetrics.bbvanetcash.pe^ -||smetrics.bbvaopenmind.com^ -||smetrics.bbvaresearch.com^ -||smetrics.bbvaseguros.mx^ -||smetrics.bcbsks.com^ -||smetrics.bcbsm.com^ -||smetrics.bcbsnc.com^ -||smetrics.bcbsnd.com^ -||smetrics.bd.dk^ -||smetrics.be.carrefour.eu^ -||smetrics.beachbody.com^ -||smetrics.beatsbydre.com.cn^ -||smetrics.beatsbydre.com^ -||smetrics.beaumontenterprise.com^ -||smetrics.beckmancoulter.com^ -||smetrics.becomeanex.org^ -||smetrics.beefeater.co.uk^ -||smetrics.belairdirect.com^ -||smetrics.belk.com^ -||smetrics.benefitcosmetics.com.cn^ -||smetrics.beneful.com^ -||smetrics.beneplace.com^ -||smetrics.bereadywith.com^ -||smetrics.besame.fm^ -||smetrics.bestbuy.com^ -||smetrics.bestdrive.cz^ -||smetrics.bestegg.com^ -||smetrics.bestinver.es^ -||smetrics.bestoforlando.com^ -||smetrics.bestofvegas.com^ -||smetrics.bet.com^ -||smetrics.beterhoren.nl^ -||smetrics.bevestor.de^ -||smetrics.bgov.com^ -||smetrics.bhgelite.com^ -||smetrics.bhgfinancial.com^ -||smetrics.bhgpersonal.com^ -||smetrics.bi-connect.com^ -||smetrics.bi-vetmedica.com^ -||smetrics.bigkidneybigproblem.com^ -||smetrics.biglots.com^ -||smetrics.bilfinans.no^ -||smetrics.binge.com.au^ -||smetrics.bingle.com.au^ -||smetrics.biomedtracker.com^ -||smetrics.biooncology.com^ -||smetrics.biophilia-fbbva.es^ -||smetrics.biore.com^ -||smetrics.biosimilarsbyboehringer.com^ -||smetrics.bissell.com^ -||smetrics.bittermens.com^ -||smetrics.bjs.com^ -||smetrics.bkstr.com^ -||smetrics.blair.com^ -||smetrics.blanchir-sp.net^ -||smetrics.blau.de^ -||smetrics.blockbuster.com^ -||smetrics.bloombergbna.com^ -||smetrics.bloombergindustry.com^ -||smetrics.bloomberglaw.com^ -||smetrics.bloombergtax.com^ -||smetrics.bloombergtaxtech.com^ -||smetrics.bluegrasscellular.com^ -||smetrics.bluemercury.com^ -||smetrics.bluenile.com^ -||smetrics.blueprintprep.com^ -||smetrics.bmc.com^ -||smetrics.bmo.com^ -||smetrics.bms-immuno-dermatologie.de^ -||smetrics.bms-io-academy.co.uk^ -||smetrics.bms-newfrontiers.com.au^ -||smetrics.bms-onkologie.de^ -||smetrics.bms.com^ -||smetrics.bmscustomerconnect.com^ -||smetrics.bmshealthcare.jp^ -||smetrics.bmsmedinfo.co.uk^ -||smetrics.bmsmedinfo.com^ -||smetrics.bmsmedinfo.de^ -||smetrics.bmsoncology.jp^ -||smetrics.bmspaf.org^ -||smetrics.bmsstudyconnect.com^ -||smetrics.bmwusa.com^ -||smetrics.bna.com^ -||smetrics.bncollege.com^ -||smetrics.bncvirtual.com^ -||smetrics.bnpparibas.com^ -||smetrics.bnymellon.com^ -||smetrics.bnymellonam.com^ -||smetrics.bodyforlife.com^ -||smetrics.bodyworkmall.com^ -||smetrics.boehringer-ingelheim.at^ -||smetrics.boehringer-ingelheim.ca^ -||smetrics.boehringer-ingelheim.com.br^ -||smetrics.boehringer-ingelheim.com^ -||smetrics.boehringer-ingelheim.de^ -||smetrics.boehringer-ingelheim.es^ -||smetrics.boehringer-ingelheim.hu^ -||smetrics.boehringer-ingelheim.it^ -||smetrics.boehringer-ingelheim.jp^ -||smetrics.boehringer-ingelheim.no^ -||smetrics.boehringer-ingelheim.pl^ -||smetrics.boehringer-ingelheim.sk^ -||smetrics.boehringer-ingelheim.tw^ -||smetrics.boehringer-ingelheim.ua^ -||smetrics.boehringer-ingelheim.us^ -||smetrics.boehringer-interaktiv.de^ -||smetrics.boehringerone.com^ -||smetrics.boom1019.com^ -||smetrics.boom997.com^ -||smetrics.boostinfinite.com^ -||smetrics.boostmobile.com^ -||smetrics.boothehvac.com^ -||smetrics.boozallen.com^ -||smetrics.boq.com.au^ -||smetrics.borgatacasino.com^ -||smetrics.borgatapoker.com^ -||smetrics.boscovs.com^ -||smetrics.boss.info^ -||smetrics.boston.com^ -||smetrics.bostonglobe.com^ -||smetrics.bottegaverde.es^ -||smetrics.bottegaverde.it^ -||smetrics.boundaryford.com^ -||smetrics.bpbusinesssolutions.com^ -||smetrics.bravenhealth.com^ -||smetrics.breezeforcats.com^ -||smetrics.brett-robinson.com^ -||smetrics.brewersfayre.co.uk^ -||smetrics.bridgestoneamericas.com^ -||smetrics.brinksprepaidmastercard.com^ -||smetrics.briteboxelectrical.com^ -||smetrics.britishgas.co.uk^ -||smetrics.broadlinespoton.de^ -||smetrics.brocade.com^ -||smetrics.brookdale.com^ -||smetrics.brooksbrothers.com^ -||smetrics.brumate.jp^ -||smetrics.bt.com.au^ -||smetrics.bt.com^ -||smetrics.buckeyehealthplan.com^ -||smetrics.buell.com^ -||smetrics.buffalotrace.com^ -||smetrics.buffalotracedistillery.com^ -||smetrics.builddirect.com^ -||smetrics.bupa.com.au^ -||smetrics.business.comcast.com^ -||smetrics.businessfinancemag.com^ -||smetrics.buyagift.co.uk^ -||smetrics.buyersedge.com.au^ -||smetrics.buytickets.virgintrains.co.uk^ -||smetrics.buytickets.westmidlandsrailway.co.uk^ -||smetrics.bzees.com^ -||smetrics.c2fo.com^ -||smetrics.cadenadial.com^ -||smetrics.cadenaser.com^ -||smetrics.caesars.com^ -||smetrics.cahealthwellness.com^ -||smetrics.calbaptist.edu^ -||smetrics.caleres.com^ -||smetrics.calia.com^ -||smetrics.caliastudio.com^ -||smetrics.calvinklein.ca^ -||smetrics.calvinklein.cn^ -||smetrics.calvinklein.us^ -||smetrics.calwater.com^ -||smetrics.campaigns.abbott.com.sg^ -||smetrics.camzyos.com^ -||smetrics.camzyoshcp.com^ -||smetrics.canosan.de^ -||smetrics.capella.edu^ -||smetrics.capitalone.com^ -||smetrics.caracol.com.co^ -||smetrics.carbonite.com^ -||smetrics.care.com^ -||smetrics.carfax.com^ -||smetrics.caribbeanjobs.com^ -||smetrics.carnival.co.uk^ -||smetrics.carnival.com.au^ -||smetrics.carnival.com^ -||smetrics.carolina.com^ -||smetrics.carparts.com^ -||smetrics.carphonewarehouse.com^ -||smetrics.carrieres.pwc.fr^ -||smetrics.carters.com^ -||smetrics.cartersoshkosh.ca^ -||smetrics.cartoonnetwork.ca^ -||smetrics.caser.es^ -||smetrics.caserexpatinsurance.com^ -||smetrics.caseys.com^ -||smetrics.cashnetusa.com^ -||smetrics.casinoladbrokes.be^ -||smetrics.casinosplendido.com^ -||smetrics.casio-intl.com^ -||smetrics.casio-watches.com^ -||smetrics.casio.co.jp^ -||smetrics.casio.com.tw^ -||smetrics.casio.com^ -||smetrics.casio.info^ -||smetrics.casio.jp^ -||smetrics.cast.r-agent.com^ -||smetrics.catalog.usmint.gov^ -||smetrics.catchow.com^ -||smetrics.cathflo.com^ -||smetrics.catxpert.dk^ -||smetrics.cbc.ca^ -||smetrics.cbc.youtube.mercedes-benz.com^ -||smetrics.cbn.com^ -||smetrics.ccma.cat^ -||smetrics.cdiscount.com^ -||smetrics.cedars-sinai.org^ -||smetrics.celebritycruises.com^ -||smetrics.cellcept.com^ -||smetrics.celticarehealthplan.com^ -||smetrics.census.gov^ -||smetrics.centene.com^ -||smetrics.centerpointenergy.com^ -||smetrics.centex.com^ -||smetrics.centralparknyc.org^ -||smetrics.centrum.com^ -||smetrics.centurylink.com^ -||smetrics.cepheid.com^ -||smetrics.ceratizit.com^ -||smetrics.cfainstitute.org^ -||smetrics.cfox.com^ -||smetrics.chadstone.com.au^ -||smetrics.channel.com^ -||smetrics.channelfutures.com^ -||smetrics.chapstick.com^ -||smetrics.charter.com^ -||smetrics.charter.no^ -||smetrics.charter.se^ -||smetrics.chase.com^ -||smetrics.chatrwireless.com^ -||smetrics.chelseafc.com^ -||smetrics.chemistanddruggist.co.uk^ -||smetrics.chghealthcare.com^ -||smetrics.chicagobusiness.com^ -||smetrics.chip1stop.com^ -||smetrics.christianscience.com^ -||smetrics.christies.com^ -||smetrics.chron.com^ -||smetrics.chrysler.com^ -||smetrics.churchill.com^ -||smetrics.ciena.com^ -||smetrics.cigar.com^ -||smetrics.cigarsinternational.com^ -||smetrics.cigna.com^ -||smetrics.cinemaxx.de^ -||smetrics.circulodelasalud.mx^ -||smetrics.circusny.com^ -||smetrics.cirquedusoleil.com^ -||smetrics.cisco.com^ -||smetrics.cisnfm.com^ -||smetrics.cit.com^ -||smetrics.citalia.com^ -||smetrics.citeline.com^ -||smetrics.citibank.ae^ -||smetrics.citibank.cn^ -||smetrics.citibank.co.th^ -||smetrics.citibank.co.uk^ -||smetrics.citibank.com.au^ -||smetrics.citibank.com.hk^ -||smetrics.citibank.com.my^ -||smetrics.citibank.com.ph^ -||smetrics.citibank.com.sg^ -||smetrics.citibank.com.vn^ -||smetrics.citibank.pl^ -||smetrics.citizensbank.com^ -||smetrics.civilsandutilities.com^ -||smetrics.cjoy.com^ -||smetrics.claris.com^ -||smetrics.clearly.ca^ -||smetrics.clementia.cz^ -||smetrics.clickbank.com^ -||smetrics.client-services.ca^ -||smetrics.cloudera.com^ -||smetrics.cluballiance.aaa.com^ -||smetrics.clubmarriott.in^ -||smetrics.clubmonaco.com^ -||smetrics.clubnoble.jp^ -||smetrics.clubreservations.com^ -||smetrics.cnb.com^ -||smetrics.cnn.com^ -||smetrics.cnr.com^ -||smetrics.coach.com^ -||smetrics.coachfactory.com^ -||smetrics.coca-cola.com^ -||smetrics.coca-colacanada.ca^ -||smetrics.coca-colaentuhogar.com^ -||smetrics.codan.dk^ -||smetrics.coffretdor-makeup.jp^ -||smetrics.coke2home.com^ -||smetrics.collinscomfort.com^ -||smetrics.columbia.com^ -||smetrics.combinedinsurance.com^ -||smetrics.comcast.com^ -||smetrics.comdata.com^ -||smetrics.comenity.net^ -||smetrics.comfortwave.com^ -||smetrics.commonclaimsmistakesvideo.com^ -||smetrics.commonwealth.com^ -||smetrics.comms.westpac.co.nz^ -||smetrics.comparethemarket.com^ -||smetrics.comphealth.com^ -||smetrics.concardis.com^ -||smetrics.concierto.cl^ -||smetrics.condodirect.com^ -||smetrics.connecticare.com^ -||smetrics.consumerreports.org^ -||smetrics.contactsdirect.com^ -||smetrics.controlcenter.com^ -||smetrics.converse.co.uk^ -||smetrics.converse.com^ -||smetrics.cookhouseandpub.co.uk^ -||smetrics.coolray.com^ -||smetrics.cooltoday.com^ -||smetrics.coordinatedcarehealth.com^ -||smetrics.copd-aktuell.de^ -||smetrics.copdinsideout.ca^ -||smetrics.corazon.cl^ -||smetrics.cornercard.ch^ -||smetrics.cornertrader.ch^ -||smetrics.corpay.com^ -||smetrics.corpaybusinesscard.com^ -||smetrics.corpayone.com^ -||smetrics.corpayone.dk^ -||smetrics.correos.es^ -||smetrics.cortefiel.com^ -||smetrics.cortevents.com^ -||smetrics.cortfurnitureoutlet.com^ -||smetrics.cortpartyrental.com^ -||smetrics.corus.ca^ -||smetrics.costacruise.com^ -||smetrics.costadelmar.com^ -||smetrics.costco.ca^ -||smetrics.costco.com^ -||smetrics.costcobusinesscentre.ca^ -||smetrics.costcobusinessdelivery.com^ -||smetrics.costumesupercenter.com^ -||smetrics.cotellic.com^ -||smetrics.cottages.com^ -||smetrics.coulditbehcm.com^ -||smetrics.country104.com^ -||smetrics.country105.com^ -||smetrics.countryfinancial.com^ -||smetrics.countryfinancialsecurityblog.com^ -||smetrics.countrypassport.com^ -||smetrics.covance.com^ -||smetrics.cox.com^ -||smetrics.cpaaustralia.com.au^ -||smetrics.cpsenergy.com^ -||smetrics.crain.com^ -||smetrics.crainscleveland.com^ -||smetrics.crainsdetroit.com^ -||smetrics.crainsnewyork.com^ -||smetrics.creditscore.com^ -||smetrics.crimewatchdaily.com^ -||smetrics.crocs.at^ -||smetrics.crocs.ca^ -||smetrics.crocs.co.uk^ -||smetrics.crocs.com^ -||smetrics.crocs.de^ -||smetrics.crocs.eu^ -||smetrics.crocs.fi^ -||smetrics.crocs.fr^ -||smetrics.crocs.nl^ -||smetrics.crocs.se^ -||smetrics.crocsespana.es^ -||smetrics.croma.com^ -||smetrics.cru.org^ -||smetrics.crystalski.co.uk^ -||smetrics.crystalski.ie^ -||smetrics.csmonitor.com^ -||smetrics.css.ch^ -||smetrics.csu.edu.au^ -||smetrics.ctm.uhc.com^ -||smetrics.ctshirts.com^ -||smetrics.ctv.ca^ -||smetrics.cua.com.au^ -||smetrics.cultura.com^ -||smetrics.cupraofficial.com^ -||smetrics.cupraofficial.de^ -||smetrics.curel.com^ -||smetrics.currys.co.uk^ -||smetrics.customersvc.com^ -||smetrics.customs.pwc.com^ -||smetrics.cvs.com^ -||smetrics.cvty.com^ -||smetrics.cyrillus.be^ -||smetrics.cytivalifesciences.co.jp^ -||smetrics.cytivalifesciences.co.kr^ -||smetrics.cytivalifesciences.com^ -||smetrics.daiwa-grp.jp^ -||smetrics.daiwa.jp^ -||smetrics.daiwatv.jp^ -||smetrics.dalisalda.com^ -||smetrics.dallasmidwest.com^ -||smetrics.dandh.ca^ -||smetrics.dandh.com^ -||smetrics.darty.com^ -||smetrics.dashandstars.com^ -||smetrics.datapipe.com^ -||smetrics.davidclulow.com^ -||smetrics.dcu.org^ -||smetrics.deakin.edu.au^ -||smetrics.dekalb.com.co^ -||smetrics.dekalb.com.mx^ -||smetrics.dekalbasgrowdeltapine.com^ -||smetrics.delacon.com.au^ -||smetrics.delbetalning.seb.se^ -||smetrics.delta.com^ -||smetrics.deltacargo.com^ -||smetrics.deltafarmpress.com^ -||smetrics.demarini.com^ -||smetrics.derneuekaemmerer.de^ -||smetrics.dertreasurer.de^ -||smetrics.desparasitaatumascota.es^ -||smetrics.destinythegame.com^ -||smetrics.detect-afib.com^ -||smetrics.deutschepost.com^ -||smetrics.deutschepost.de^ -||smetrics.deutscheranwaltspiegel.de^ -||smetrics.dev.www.vwfs.de^ -||smetrics.devcommittee.org^ -||smetrics.dfo.com.au^ -||smetrics.dha.com^ -||smetrics.dhc.co.jp^ -||smetrics.dhl.de^ -||smetrics.dickssportinggoods.com^ -||smetrics.die-stiftung.de^ -||smetrics.digicert.com^ -||smetrics.digital.pwc.ie^ -||smetrics.digitalbalance.com.au^ -||smetrics.diners.co.jp^ -||smetrics.dinersclub.dk^ -||smetrics.directauto.com^ -||smetrics.directline.com^ -||smetrics.directlineforbusiness.co.uk^ -||smetrics.directtv.com^ -||smetrics.directv.com^ -||smetrics.discounttire.com^ -||smetrics.discova.jp^ -||smetrics.discover.com^ -||smetrics.discovertrk.com^ -||smetrics.dish.co^ -||smetrics.dish.com^ -||smetrics.dishanywhere.com^ -||smetrics.dishpuertorico.com^ -||smetrics.dishwireless.com^ -||smetrics.disneychannel.ca^ -||smetrics.disneylachaine.ca^ -||smetrics.distrelec.ch^ -||smetrics.dlalekarzy.roche.pl^ -||smetrics.dnb.com^ -||smetrics.dnszone.jp^ -||smetrics.doctoramascotas.com^ -||smetrics.doingbusiness.org^ -||smetrics.dominos.com^ -||smetrics.donaldson.com^ -||smetrics.donovanac.com^ -||smetrics.doujinshi-print.com^ -||smetrics.dreamlabdata.com^ -||smetrics.dreamvacationweek.com^ -||smetrics.driveshare.com^ -||smetrics.drmartens.com.au^ -||smetrics.drschollsshoes.com^ -||smetrics.drugpricinglaw.com^ -||smetrics.dryerventwizard.com^ -||smetrics.dunkindonuts.com^ -||smetrics.dxc.com^ -||smetrics.e-abbott.com^ -||smetrics.e-casio.co.jp^ -||smetrics.e-wie-einfach.de^ -||smetrics.earpros.com^ -||smetrics.eas.com^ -||smetrics.easacademy.org^ -||smetrics.eascertified.com^ -||smetrics.eastwestbank.com^ -||smetrics.ebgsolutions.com^ -||smetrics.ecmweb.com^ -||smetrics.edc.ca^ -||smetrics.eddiebauer.com^ -||smetrics.edge.ca^ -||smetrics.edifice-watches.com^ -||smetrics.ee.co.uk^ -||smetrics.efirstbank.com^ -||smetrics.ehealthinsurance.com^ -||smetrics.einsure.com.au^ -||smetrics.eis-inc.com^ -||smetrics.eki-net.com^ -||smetrics.el-mundo.net^ -||smetrics.elal.com^ -||smetrics.elecare.com^ -||smetrics.electronicdesign.com^ -||smetrics.element14.com^ -||smetrics.elgallomasgallo.com.gt^ -||smetrics.elgallomasgallo.com.hn^ -||smetrics.elgallomasgallo.com.ni^ -||smetrics.elgiganten.se^ -||smetrics.eliquis.co.uk^ -||smetrics.eliquis.com^ -||smetrics.eliquisdataportal.com^ -||smetrics.eliquispatient.nl^ -||smetrics.elkjop.no^ -||smetrics.elpais.com^ -||smetrics.elsevier.com^ -||smetrics.emblemhealth.com^ -||smetrics.emicizumabinfo.com^ -||smetrics.empliciti.com^ -||smetrics.enelenergia.it^ -||smetrics.energia.ie^ -||smetrics.energy953radio.ca^ -||smetrics.energyaustralia.com.au^ -||smetrics.energytoday.biz^ -||smetrics.enjoy365.ch^ -||smetrics.enspryng-hcp.com^ -||smetrics.enspryng.com^ -||smetrics.enterprise.com^ -||smetrics.enterprisersproject.com^ -||smetrics.enterprisesg.gov.sg^ -||smetrics.enterprisesurveys.org^ -||smetrics.entrykeyid.com^ -||smetrics.eprice.it^ -||smetrics.equipmentwatch.com^ -||smetrics.equitable.com^ -||smetrics.erivedge.com^ -||smetrics.ernestjones.co.uk^ -||smetrics.es-diabetes.com^ -||smetrics.esbriet.com^ -||smetrics.esbriethcp.com^ -||smetrics.esignal.com^ -||smetrics.essds.com^ -||smetrics.essomastercard.no^ -||smetrics.esurance.com^ -||smetrics.etcanada.com^ -||smetrics.eticketing.abbott.com.sg^ -||smetrics.etihad.com^ -||smetrics.etihadaviationgroup.com^ -||smetrics.etihadcargo.com^ -||smetrics.etihadengineering.com^ -||smetrics.etihadguest.com^ -||smetrics.etihadholidays.com^ -||smetrics.etihadsecurelogistics.com^ -||smetrics.ets.org^ -||smetrics.eu.playstation.com^ -||smetrics.eurekalert.org^ -||smetrics.eurobet.it^ -||smetrics.eurocard.com^ -||smetrics.europafm.com^ -||smetrics.eurowings.com^ -||smetrics.evernorth.com^ -||smetrics.eversource.com^ -||smetrics.evicore.com^ -||smetrics.evine.com^ -||smetrics.evivanlanschot.nl^ -||smetrics.evolytics.com^ -||smetrics.evoshield.com^ -||smetrics.evrysdi.com^ -||smetrics.ewweb.com^ -||smetrics.examinebiosimilars.com^ -||smetrics.experian.co.uk^ -||smetrics.expoeast.com^ -||smetrics.exposehcm.com^ -||smetrics.expowest.com^ -||smetrics.express-scripts.com^ -||smetrics.express.com^ -||smetrics.expressnews.com^ -||smetrics.expressverified.ca^ -||smetrics.extranetperu.grupobbva.pe^ -||smetrics.ey.com^ -||smetrics.faceipf.com^ -||smetrics.facitlaan.dk^ -||smetrics.familiaynutricion.com.co^ -||smetrics.famousfootwear.ca^ -||smetrics.famousfootwear.com^ -||smetrics.fancl.co.jp^ -||smetrics.fancl.jp^ -||smetrics.fancyfeast.com^ -||smetrics.farnell.com^ -||smetrics.fatface.com^ -||smetrics.faz-konferenzen.de^ -||smetrics.faz.net^ -||smetrics.fcacert.com^ -||smetrics.fcbarcelona.cat^ -||smetrics.fcbarcelona.co.de^ -||smetrics.fcbarcelona.co.it^ -||smetrics.fcbarcelona.com^ -||smetrics.fcbarcelona.es^ -||smetrics.fcbarcelona.fr^ -||smetrics.fcbarcelona.jp^ -||smetrics.fedex.com^ -||smetrics.feedthe485.com^ -||smetrics.feelbanfresh.com^ -||smetrics.ferguson.com^ -||smetrics.ferris.ac.jp^ -||smetrics.ferroviedellostato.it^ -||smetrics.fetnet.net^ -||smetrics.ficohsa.hn^ -||smetrics.fifa.com^ -||smetrics.fiftyoutlet.com^ -||smetrics.filemaker.com^ -||smetrics.filmmagic.com^ -||smetrics.filtron.eu^ -||smetrics.finance-magazin.de^ -||smetrics.financing.vwfinance.ca^ -||smetrics.findomestic.it^ -||smetrics.fingerhut.com^ -||smetrics.finishline.com^ -||smetrics.finn.no^ -||smetrics.finning.com^ -||smetrics.fireballwhisky.com^ -||smetrics.firestonebpco.com^ -||smetrics.flagstar.com^ -||smetrics.flashnews.com.au^ -||smetrics.fleetcardapplication.com^ -||smetrics.fleetcardsusa.com^ -||smetrics.fleetcor.com^ -||smetrics.flex.amazon.ca^ -||smetrics.flex.amazon.co.jp^ -||smetrics.flex.amazon.co.uk^ -||smetrics.flex.amazon.com.au^ -||smetrics.flex.amazon.com.mx^ -||smetrics.flex.amazon.com.sg^ -||smetrics.flex.amazon.com^ -||smetrics.flex.amazon.in^ -||smetrics.flexera.com^ -||smetrics.flexerasoftware.com^ -||smetrics.flexshares.com^ -||smetrics.flightnetwork.com^ -||smetrics.flyfar.ca^ -||smetrics.fm96.com^ -||smetrics.fmdos.cl^ -||smetrics.fnac.be^ -||smetrics.fnac.ch^ -||smetrics.fnac.com^ -||smetrics.fnac.es^ -||smetrics.fnac.pt^ -||smetrics.fnacpro.com^ -||smetrics.foeniksprivatlaan.dk^ -||smetrics.fokuslaan.dk^ -||smetrics.fokuslan.no^ -||smetrics.folksam.se^ -||smetrics.folksamlopension.se^ -||smetrics.fondation.pwc.fr^ -||smetrics.foniksprivatlan.no^ -||smetrics.ford.ca^ -||smetrics.ford.com^ -||smetrics.forgingmagazine.com^ -||smetrics.fortinos.ca^ -||smetrics.fortnumandmason.com^ -||smetrics.fostercaretx.com^ -||smetrics.foxbusiness.com^ -||smetrics.foxnews.com^ -||smetrics.fpl.com^ -||smetrics.framesdirect.com^ -||smetrics.francosarto.com^ -||smetrics.franke.com^ -||smetrics.fraport-bulgaria.com^ -||smetrics.fraport-galaxy.de^ -||smetrics.fraport-slovenija.si^ -||smetrics.fraport.com^ -||smetrics.fraport.de^ -||smetrics.frasersproperty.com^ -||smetrics.freecreditscore.com^ -||smetrics.freedomfordsales.ca^ -||smetrics.freeplus-global.net^ -||smetrics.friskies.com^ -||smetrics.front-line.nl^ -||smetrics.frontier.com^ -||smetrics.frontline.co.th^ -||smetrics.ftd.ca^ -||smetrics.fuelman.com^ -||smetrics.future.smart.com^ -||smetrics.futuro.cl^ -||smetrics.fuzeon.com^ -||smetrics.fxsolutions.com^ -||smetrics.fyndus.de^ -||smetrics.g-shock.com^ -||smetrics.g-shock.jp^ -||smetrics.g-tune.jp^ -||smetrics.gaes.es^ -||smetrics.gatesnotes.com^ -||smetrics.gazyva.com^ -||smetrics.gcimetrics.com^ -||smetrics.geeksquad.com^ -||smetrics.gehealthcare.com^ -||smetrics.gemcreditline.co.nz^ -||smetrics.gemfinance.co.nz^ -||smetrics.gemplers.com^ -||smetrics.gemvisa.co.nz^ -||smetrics.genarts.com^ -||smetrics.genentech-access.com^ -||smetrics.genentech-forum.com^ -||smetrics.genentech-pro.com^ -||smetrics.genentechhemophilia.com^ -||smetrics.generac.com^ -||smetrics.genomeweb.com^ -||smetrics.gestionpriveegi.com^ -||smetrics.getravelop.com^ -||smetrics.ghirardelli.com^ -||smetrics.gibbsanddandy.com^ -||smetrics.gio.com.au^ -||smetrics.glasses.com^ -||smetrics.global.jcb^ -||smetrics.global.mandg.com^ -||smetrics.global.nba.com^ -||smetrics.globalbmsmedinfo.com^ -||smetrics.globalfinancingfacility.org^ -||smetrics.globalnews.ca^ -||smetrics.glucerna.ca^ -||smetrics.glucerna.com^ -||smetrics.gmfinancial.com^ -||smetrics.gobank.com^ -||smetrics.goccl.co.uk^ -||smetrics.goibibo.com^ -||smetrics.goindigo.in^ -||smetrics.goinggoing.com^ -||smetrics.goinggoinggone.com^ -||smetrics.golden1.com^ -||smetrics.golfgalaxy.com^ -||smetrics.gomastercard.com.au^ -||smetrics.gomedigap.com^ -||smetrics.goodsamrvinsurance.com^ -||smetrics.gordonsjewelers.com^ -||smetrics.grainger.com^ -||smetrics.grandandtoy.com^ -||smetrics.greatland.com^ -||smetrics.greatsouthernbank.com.au^ -||smetrics.greendot.com^ -||smetrics.greenflag.com^ -||smetrics.greenrow.com^ -||smetrics.greenstate.com^ -||smetrics.group.uhc.com^ -||smetrics.groupama.fr^ -||smetrics.grundfos.com^ -||smetrics.grupobancomundial.org^ -||smetrics.gs1us.org^ -||smetrics.gsbank.com^ -||smetrics.gsfresh.com^ -||smetrics.gsghukuk.com^ -||smetrics.gshock.com^ -||smetrics.gsipartners.com^ -||smetrics.gsretail.com^ -||smetrics.guaranteedrate.com^ -||smetrics.guaranteesmatter.com^ -||smetrics.guess.eu^ -||smetrics.guhl.com^ -||smetrics.gvb.ch^ -||smetrics.h-scc.jp^ -||smetrics.ha.com^ -||smetrics.haband.com^ -||smetrics.hagerty.co.uk^ -||smetrics.handelsbanken.co.uk^ -||smetrics.handelsbanken.com^ -||smetrics.handelsbanken.nl^ -||smetrics.handelsbanken.no^ -||smetrics.handelsbanken.se^ -||smetrics.happyfamilyorganics.com^ -||smetrics.harborfreight.com^ -||smetrics.harley-davidson.com^ -||smetrics.havenwellwithin.com^ -||smetrics.hayesandjarvis.co.uk^ -||smetrics.hbogo.com^ -||smetrics.hbonow.com^ -||smetrics.hbr.org^ -||smetrics.hbs.edu^ -||smetrics.hbsp.harvard.edu^ -||smetrics.hdcymru.co.uk^ -||smetrics.hdfcbank.com^ -||smetrics.health.com^ -||smetrics.healthcompare.com^ -||smetrics.healthengine.com.au^ -||smetrics.healthnet.com^ -||smetrics.healthnetaccess.com^ -||smetrics.healthnetadvantage.com^ -||smetrics.healthnetcalifornia.com^ -||smetrics.healthnetoregon.com^ -||smetrics.healthpartners.com^ -||smetrics.heartgardplus.com.tw^ -||smetrics.heathrow.com^ -||smetrics.heathrowexpress.com^ -||smetrics.hebdebit.com^ -||smetrics.hebprepaid.com^ -||smetrics.helios-gesundheit.de^ -||smetrics.hellobank.fr^ -||smetrics.helvetia.com^ -||smetrics.hemapedia.jp^ -||smetrics.hematoconnect.com.br^ -||smetrics.hemlibra.com^ -||smetrics.henkivakuutuskuntoon.fi^ -||smetrics.her2treatment.com^ -||smetrics.herbalife.com^ -||smetrics.herceptin.com^ -||smetrics.herceptinhylecta.com^ -||smetrics.heroesvacationclub.com^ -||smetrics.heromotocorp.com^ -||smetrics.herschel.com.au^ -||smetrics.herzstolpern.at^ -||smetrics.herzstolpern.de^ -||smetrics.hfma.org^ -||smetrics.hibiyakadan.com^ -||smetrics.higheroneaccount.com^ -||smetrics.highsmith.com^ -||smetrics.hillrom.com^ -||smetrics.history.ca^ -||smetrics.hitachi-hightech.com^ -||smetrics.hitachivantara.com^ -||smetrics.hks-power.co.jp^ -||smetrics.hm.com^ -||smetrics.hmhco.com^ -||smetrics.hoken.zexy.net^ -||smetrics.holcimelevate.com^ -||smetrics.hollandamerica.com^ -||smetrics.hollisterco.com^ -||smetrics.hollisterco.jp^ -||smetrics.home.kpmg^ -||smetrics.homeadvisor.com^ -||smetrics.homegoods.com^ -||smetrics.homes.com^ -||smetrics.homestatehealth.com^ -||smetrics.hoovers.com^ -||smetrics.horizonblue.com^ -||smetrics.horizonnjhealth.com^ -||smetrics.horsexperts.be^ -||smetrics.hoseasons.co.uk^ -||smetrics.hossintropia.com^ -||smetrics.hotsy.com^ -||smetrics.houseoffraser.co.uk^ -||smetrics.houseoffraser.com^ -||smetrics.howifightms.com^ -||smetrics.hpe.com^ -||smetrics.hr.abbott^ -||smetrics.hrblock.com^ -||smetrics.hsamuel.co.uk^ -||smetrics.htc.com^ -||smetrics.hubbl.com.au^ -||smetrics.hubert.ca^ -||smetrics.hubert.com^ -||smetrics.huffingtonpost.es^ -||smetrics.humana.com^ -||smetrics.huntington.com^ -||smetrics.huntingtonsdiseasehcp.com^ -||smetrics.hydraulicspneumatics.com^ -||smetrics.hypedc.com^ -||smetrics.hyundaiusa.com^ -||smetrics.i-law.com^ -||smetrics.i22.nadro.mx^ -||smetrics.ibercaja.es^ -||smetrics.ibfd.org^ -||smetrics.ice.gov^ -||smetrics.iceland.co.uk^ -||smetrics.icharlotte.com^ -||smetrics.icicibank.com^ -||smetrics.iconfitness.com^ -||smetrics.icorner.ch^ -||smetrics.identityguard.com^ -||smetrics.iehp.org^ -||smetrics.ifc.org^ -||smetrics.ig.ca^ -||smetrics.igmfinancial.com^ -||smetrics.iilg.com^ -||smetrics.ikea.com^ -||smetrics.ileitis.de^ -||smetrics.ilhealthpracticealliance.com^ -||smetrics.illinicare.com^ -||smetrics.illinois.gov^ -||smetrics.illumina.com.cn^ -||smetrics.illumina.com^ -||smetrics.ilovematlab.cn^ -||smetrics.ilyouthcare.com^ -||smetrics.immunooncology.be^ -||smetrics.impress-web.com^ -||smetrics.infinitematerialsolutions.com^ -||smetrics.infinitiusa.com^ -||smetrics.infomedics.it^ -||smetrics.informa.com^ -||smetrics.ingdirect.it^ -||smetrics.inkcartridges.com^ -||smetrics.inlyta.com^ -||smetrics.insider.hagerty.com^ -||smetrics.insight.com^ -||smetrics.inspectionpanel.org^ -||smetrics.insuramatch.com^ -||smetrics.insuranceday.com^ -||smetrics.insurancesaver.com^ -||smetrics.insurewithaudi.co.uk^ -||smetrics.insurewithseat.co.uk^ -||smetrics.insurewithskoda.co.uk^ -||smetrics.insurewithvolkswagen.co.uk^ -||smetrics.insurewithvwcv.co.uk^ -||smetrics.intact.ca^ -||smetrics.intactarr2pro.com.py^ -||smetrics.intactinsurance.com^ -||smetrics.interbank.com.pe^ -||smetrics.interbank.pe^ -||smetrics.interbankbenefit.pe^ -||smetrics.interestfree.com.au^ -||smetrics.intermountainhealthcare.org^ -||smetrics.internationalchampionscup.com^ -||smetrics.internetbanka.cz^ -||smetrics.intertek-etlsemko.com^ -||smetrics.intervalresortsupport.com^ -||smetrics.intervalworld.com^ -||smetrics.intralinks.com^ -||smetrics.investmentnews.com^ -||smetrics.investorsgroup.com^ -||smetrics.iossc.natwest.com^ -||smetrics.iossc.rbs.co.uk^ -||smetrics.iotworldtoday.com^ -||smetrics.iowatotalcare.com^ -||smetrics.ipb.citibank.com.sg^ -||smetrics.iprodeveloper.com^ -||smetrics.irishjobs.ie^ -||smetrics.iselect.com.au^ -||smetrics.islandford.ca^ -||smetrics.its.rmit.edu.au^ -||smetrics.ivivva.com^ -||smetrics.iwakifc.com^ -||smetrics.iwceexpo.com^ -||smetrics.jackson.com^ -||smetrics.jacuzzi.com^ -||smetrics.jamestowndistributors.com^ -||smetrics.jarboes.com^ -||smetrics.jardiance.com^ -||smetrics.jared.com^ -||smetrics.jboss.org^ -||smetrics.jcb.co.jp^ -||smetrics.jcpenney.com^ -||smetrics.jcrew.com^ -||smetrics.jeld-wen.com^ -||smetrics.jergens.com^ -||smetrics.jetblue.com^ -||smetrics.jeugdbibliotheek.nl^ -||smetrics.jewson.co.uk^ -||smetrics.jimwilsonchevrolet.com^ -||smetrics.jjill.com^ -||smetrics.jobs.ie^ -||smetrics.joefresh.com^ -||smetrics.johnfrieda.com^ -||smetrics.johnhancock.com^ -||smetrics.joules.com^ -||smetrics.joulesusa.com^ -||smetrics.jre-travel.com^ -||smetrics.juiceplus.com^ -||smetrics.jumpforward.com^ -||smetrics.jumpradio.ca^ -||smetrics.junsungki.com^ -||smetrics.jwpepper.com^ -||smetrics.jynarque.com^ -||smetrics.kadcyla.com^ -||smetrics.kaercher.com^ -||smetrics.kaiserpermanente.org^ -||smetrics.kamloopshonda.ca^ -||smetrics.kanebo-cosmetics.co.jp^ -||smetrics.kanebo-cosmetics.jp^ -||smetrics.kanebo-forum.net^ -||smetrics.kanebo-global.com^ -||smetrics.kanebo.co.th^ -||smetrics.kanebo.com^ -||smetrics.kanebocos.net^ -||smetrics.kanen-net.info^ -||smetrics.kansasfarmer.com^ -||smetrics.kao-kirei.com^ -||smetrics.kao.co.jp^ -||smetrics.kao.com^ -||smetrics.kaobeautybrands.com^ -||smetrics.karcher-futuretech.com^ -||smetrics.karcher.cn^ -||smetrics.karcher.com^ -||smetrics.karcher.cz^ -||smetrics.kate-global.net^ -||smetrics.kawai-juku.ac.jp^ -||smetrics.kay.com^ -||smetrics.kayosports.com.au^ -||smetrics.kayoutlet.com^ -||smetrics.kbb.com^ -||smetrics.kebuena.com.mx^ -||smetrics.kelownachev.com^ -||smetrics.kelownatoyota.com^ -||smetrics.kenwood.com^ -||smetrics.kerry.com^ -||smetrics.ketsusen.jp^ -||smetrics.keysight.co.kr^ -||smetrics.keysight.com.cn^ -||smetrics.keysight.com^ -||smetrics.kioxia-holdings.com^ -||smetrics.kioxia-iwate.co.jp^ -||smetrics.kioxia.com.cn^ -||smetrics.kioxia.com^ -||smetrics.kipling-usa.com^ -||smetrics.kipling.com^ -||smetrics.klikklan.no^ -||smetrics.kmshair.com^ -||smetrics.knowpneumonia.com^ -||smetrics.kol.se^ -||smetrics.kone.ae^ -||smetrics.kone.at^ -||smetrics.kone.be^ -||smetrics.kone.bg^ -||smetrics.kone.bi^ -||smetrics.kone.ca^ -||smetrics.kone.ch^ -||smetrics.kone.cn^ -||smetrics.kone.co.id^ -||smetrics.kone.co.il^ -||smetrics.kone.co.ke^ -||smetrics.kone.co.nz^ -||smetrics.kone.co.za^ -||smetrics.kone.com.au^ -||smetrics.kone.com.cy^ -||smetrics.kone.com.kh^ -||smetrics.kone.com.tr^ -||smetrics.kone.com^ -||smetrics.kone.cz^ -||smetrics.kone.de^ -||smetrics.kone.dk^ -||smetrics.kone.ee^ -||smetrics.kone.eg^ -||smetrics.kone.es^ -||smetrics.kone.fi^ -||smetrics.kone.fr^ -||smetrics.kone.gr^ -||smetrics.kone.hk^ -||smetrics.kone.hu^ -||smetrics.kone.ie^ -||smetrics.kone.in^ -||smetrics.kone.is^ -||smetrics.kone.it^ -||smetrics.kone.lt^ -||smetrics.kone.lv^ -||smetrics.kone.me^ -||smetrics.kone.mx^ -||smetrics.kone.nl^ -||smetrics.kone.no^ -||smetrics.kone.om^ -||smetrics.kone.pt^ -||smetrics.kone.rs^ -||smetrics.kone.se^ -||smetrics.kone.sk^ -||smetrics.kone.tw^ -||smetrics.kone.us^ -||smetrics.kone.vn^ -||smetrics.kowa-h.com^ -||smetrics.kpmg.com^ -||smetrics.kpmg.us^ -||smetrics.krebs.de^ -||smetrics.krugerseed.com^ -||smetrics.kyndryl.com^ -||smetrics.labaie.com^ -||smetrics.labsafety.com^ -||smetrics.lacounty.gov^ -||smetrics.ladbrokes.be^ -||smetrics.lakeshorelearning.com^ -||smetrics.lakeside.com^ -||smetrics.lakewoodchev.com^ -||smetrics.lambweston.com^ -||smetrics.landa.com^ -||smetrics.landg-life.com^ -||smetrics.landg.com^ -||smetrics.landolakes.com^ -||smetrics.landolakesfoodservice.com^ -||smetrics.landolakesinc.com^ -||smetrics.landrover.com^ -||smetrics.lanebryant.com^ -||smetrics.laredoute.fr^ -||smetrics.lasexta.com^ -||smetrics.latitudefinancial.co.nz^ -||smetrics.latitudefinancial.com.au^ -||smetrics.latitudefinancial.com^ -||smetrics.latitudepay.com.au^ -||smetrics.latitudepay.com^ -||smetrics.latrobe.edu.au^ -||smetrics.lazarediamond.jp^ -||smetrics.lcbo.com^ -||smetrics.ldproducts.com^ -||smetrics.leagueone.com^ -||smetrics.leasy.com^ -||smetrics.leasy.dk^ -||smetrics.leasy.se^ -||smetrics.legalandgeneral.com^ -||smetrics.leisuretimepassport.com^ -||smetrics.lenscrafters.ca^ -||smetrics.leonardo.essilorluxottica.com^ -||smetrics.lexmark.com^ -||smetrics.lexus.com^ -||smetrics.lexusonthepark.ca^ -||smetrics.libertymutual.com^ -||smetrics.lidea.today^ -||smetrics.lifestride.com^ -||smetrics.lifetime.life^ -||smetrics.lifree.com^ -||smetrics.lilly.com^ -||smetrics.lillymedical.com^ -||smetrics.lina.co.kr^ -||smetrics.lissage.jp^ -||smetrics.liveitup.com^ -||smetrics.lizearle.com^ -||smetrics.lloydslist.com^ -||smetrics.lloydslistintelligence.com^ -||smetrics.lmtonline.com^ -||smetrics.loblaws.ca^ -||smetrics.loewshotels.com^ -||smetrics.loft.com^ -||smetrics.lordabbett.com^ -||smetrics.los40.com.co^ -||smetrics.los40.com.mx^ -||smetrics.los40.com^ -||smetrics.louandgrey.com^ -||smetrics.louisianahealthconnect.com^ -||smetrics.lowes.com^ -||smetrics.lpl.com^ -||smetrics.ltdcommodities.com^ -||smetrics.lucentis.com^ -||smetrics.lululemon.ch^ -||smetrics.lululemon.cn^ -||smetrics.lululemon.co.jp^ -||smetrics.lululemon.co.kr^ -||smetrics.lululemon.co.nz^ -||smetrics.lululemon.co.uk^ -||smetrics.lululemon.com.au^ -||smetrics.lululemon.com.hk^ -||smetrics.lululemon.com^ -||smetrics.lululemon.de^ -||smetrics.lululemon.es^ -||smetrics.lululemon.fr^ -||smetrics.lundbeck.com^ -||smetrics.luxilon.com^ -||smetrics.lww.com^ -||smetrics.m1.com.sg^ -||smetrics.mabanque.bnpparibas^ -||smetrics.machinedesign.com^ -||smetrics.mackenzieinvestments.com^ -||smetrics.maclinfordcalgary.com^ -||smetrics.madewell.com^ -||smetrics.maestrocard.com^ -||smetrics.magic106.com^ -||smetrics.magnoliahealthplan.com^ -||smetrics.magnumicecream.com^ -||smetrics.majestic.co.uk^ -||smetrics.mamypoko.com^ -||smetrics.man-uat.com^ -||smetrics.mandai.com^ -||smetrics.mandatumam.com^ -||smetrics.mandatumlife.fi^ -||smetrics.mandatumtrader.fi^ -||smetrics.mandg.com^ -||smetrics.manheim.com^ -||smetrics.mann-filter.com^ -||smetrics.mann-hummel.com^ -||smetrics.maplesoft.com^ -||smetrics.marathonthegame.com^ -||smetrics.marcus.com^ -||smetrics.markandgraham.ca^ -||smetrics.markandgraham.com^ -||smetrics.markantalo.fi^ -||smetrics.marketfor.com^ -||smetrics.marketing.attralux.com^ -||smetrics.marketing.colorkinetics.com^ -||smetrics.marketing.interact-lighting.com.cn^ -||smetrics.marketing.interact-lighting.com^ -||smetrics.marketing.lighting.philips.at^ -||smetrics.marketing.lighting.philips.be^ -||smetrics.marketing.lighting.philips.bg^ -||smetrics.marketing.lighting.philips.ca^ -||smetrics.marketing.lighting.philips.ch^ -||smetrics.marketing.lighting.philips.cl^ -||smetrics.marketing.lighting.philips.co.id^ -||smetrics.marketing.lighting.philips.co.il^ -||smetrics.marketing.lighting.philips.co.in^ -||smetrics.marketing.lighting.philips.co.kr^ -||smetrics.marketing.lighting.philips.co.nz^ -||smetrics.marketing.lighting.philips.co.th^ -||smetrics.marketing.lighting.philips.co.uk^ -||smetrics.marketing.lighting.philips.co.za^ -||smetrics.marketing.lighting.philips.com.ar^ -||smetrics.marketing.lighting.philips.com.au^ -||smetrics.marketing.lighting.philips.com.br^ -||smetrics.marketing.lighting.philips.com.hk^ -||smetrics.marketing.lighting.philips.com.mx^ -||smetrics.marketing.lighting.philips.com.my^ -||smetrics.marketing.lighting.philips.com.ph^ -||smetrics.marketing.lighting.philips.com.pk^ -||smetrics.marketing.lighting.philips.com.tr^ -||smetrics.marketing.lighting.philips.com.tw^ -||smetrics.marketing.lighting.philips.com.vn^ -||smetrics.marketing.lighting.philips.cz^ -||smetrics.marketing.lighting.philips.de^ -||smetrics.marketing.lighting.philips.dk^ -||smetrics.marketing.lighting.philips.ee^ -||smetrics.marketing.lighting.philips.es^ -||smetrics.marketing.lighting.philips.fi^ -||smetrics.marketing.lighting.philips.fr^ -||smetrics.marketing.lighting.philips.gr^ -||smetrics.marketing.lighting.philips.hr^ -||smetrics.marketing.lighting.philips.hu^ -||smetrics.marketing.lighting.philips.it^ -||smetrics.marketing.lighting.philips.kz^ -||smetrics.marketing.lighting.philips.lt^ -||smetrics.marketing.lighting.philips.lv^ -||smetrics.marketing.lighting.philips.nl^ -||smetrics.marketing.lighting.philips.pl^ -||smetrics.marketing.lighting.philips.pt^ -||smetrics.marketing.lighting.philips.ru^ -||smetrics.marketing.lighting.philips.sa^ -||smetrics.marketing.lighting.philips.se^ -||smetrics.marketing.lighting.philips.ua^ -||smetrics.marketing.mazdalighting.fr^ -||smetrics.marketing.mazdalighting.pt^ -||smetrics.marketing.meethue.com^ -||smetrics.marketing.philips-hue.com^ -||smetrics.marketing.pila-led.com^ -||smetrics.marketing.signify.com^ -||smetrics.marksandspencer.com^ -||smetrics.marksandspencer.eu^ -||smetrics.marksandspencer.fr^ -||smetrics.marksandspencer.ie^ -||smetrics.marksandspencerlondon.com^ -||smetrics.marriott.com^ -||smetrics.marriottvacationclub.asia^ -||smetrics.marriottvacationclub.com^ -||smetrics.marshalls.com^ -||smetrics.marshandmclennan.com^ -||smetrics.martinfurnitureexperts.com^ -||smetrics.mastercard.com^ -||smetrics.mastercardadvisors.com^ -||smetrics.mastercardbrandcenter.com^ -||smetrics.mastercardbusiness.com^ -||smetrics.mastercardintl.com^ -||smetrics.mastercardmoments.com^ -||smetrics.mathworks.cn^ -||smetrics.mathworks.com^ -||smetrics.matlab.com^ -||smetrics.matlabexpo.com^ -||smetrics.maurices.com^ -||smetrics.maverik.com^ -||smetrics.maxi.ca^ -||smetrics.maxicoffee.com^ -||smetrics.maxicoffee.de^ -||smetrics.maxicoffee.it^ -||smetrics.maximintegrated.com^ -||smetrics.mazuri.com^ -||smetrics.mbsdirect.net^ -||smetrics.mcafee.com^ -||smetrics.mcdonalds.com^ -||smetrics.mcdpromotion.ca^ -||smetrics.mdlive.com^ -||smetrics.meccabingo.com^ -||smetrics.med-iq.com^ -||smetrics.med.roche.ru^ -||smetrics.medallia.com^ -||smetrics.media-global.net^ -||smetrics.mediakademie.at^ -||smetrics.mediakademie.de^ -||smetrics.medical.roche.de^ -||smetrics.medichanzo.com^ -||smetrics.medstarhealth.org^ -||smetrics.medxperts.pk^ -||smetrics.meetingsnet.com^ -||smetrics.melanom-info.dk^ -||smetrics.melanom-wissen.ch^ -||smetrics.memberdeals.com^ -||smetrics.members.co.jp^ -||smetrics.merch.bankofamerica.com^ -||smetrics.mercola.com^ -||smetrics.mercolamarket.com^ -||smetrics.mercy.net^ -||smetrics.metacam.co.uk^ -||smetrics.metacam.com^ -||smetrics.metlife.com^ -||smetrics.metrobyt-mobile.com^ -||smetrics.mfs.com^ -||smetrics.mgmresorts.com^ -||smetrics.mhlnews.com^ -||smetrics.mhsindiana.com^ -||smetrics.mhswi.com^ -||smetrics.mibcookies.rbs.com^ -||smetrics.michaeljfox.org^ -||smetrics.michaelkors.ca^ -||smetrics.michaelkors.com^ -||smetrics.michaelkors.de^ -||smetrics.michaelkors.es^ -||smetrics.michaelkors.eu^ -||smetrics.michaelkors.fr^ -||smetrics.michaelkors.global^ -||smetrics.michaelkors.it^ -||smetrics.michaelkors.uk^ -||smetrics.michaels.com^ -||smetrics.michigancompletehealth.com^ -||smetrics.michiganfarmer.com^ -||smetrics.microtelinn.com^ -||smetrics.mid-townford.com^ -||smetrics.midatlantic.aaa.com^ -||smetrics.midnightlounge.com^ -||smetrics.mieten.mercedes-benz.de^ -||smetrics.miga.org^ -||smetrics.miles-and-more.com^ -||smetrics.minisom.pt^ -||smetrics.miniusa.com^ -||smetrics.minsteronline.co.uk^ -||smetrics.miracle-ear.com^ -||smetrics.misrp.com^ -||smetrics.mistore.jp^ -||smetrics.misumi-ec.com^ -||smetrics.mitrelinen.co.uk^ -||smetrics.mitsubishi-motors.co.jp^ -||smetrics.mitsubishi-motors.com.au^ -||smetrics.mizuno.com^ -||smetrics.mizuno.jp^ -||smetrics.modernatx.com^ -||smetrics.modernhealthcare.com^ -||smetrics.modernphysician.com^ -||smetrics.mojemedicina.cz^ -||smetrics.moncoeurmavie.ca^ -||smetrics.mondex.com^ -||smetrics.moneta.cz^ -||smetrics.monetaauto.cz^ -||smetrics.monetaleasing.cz^ -||smetrics.moneymarketing.co.uk^ -||smetrics.monsanto.com^ -||smetrics.moodys.com^ -||smetrics.moony.com^ -||smetrics.moosejaw.com^ -||smetrics.morganstanley.com^ -||smetrics.morningstar.com^ -||smetrics.mosquitojoe.com^ -||smetrics.motegrity.com^ -||smetrics.motioncanada.ca^ -||smetrics.motionindustries.com^ -||smetrics.motorsportreg.com^ -||smetrics.motortrend.com^ -||smetrics.mounjaro.com^ -||smetrics.mountainhomeutah.com^ -||smetrics.mouse-jp.co.jp^ -||smetrics.moving.com^ -||smetrics.mphasis.com^ -||smetrics.mrappliance.ca^ -||smetrics.mrelectric.com^ -||smetrics.mrhandyman.ca^ -||smetrics.mro-network.com^ -||smetrics.mrplumberatlanta.com^ -||smetrics.mrplumberindy.com^ -||smetrics.mrporter.com^ -||smetrics.mrrooter.com^ -||smetrics.msccrociere.it^ -||smetrics.msccruceros.es^ -||smetrics.msccruises.be^ -||smetrics.msccruises.ca^ -||smetrics.msccruises.ch^ -||smetrics.msccruises.co.za^ -||smetrics.msccruises.de^ -||smetrics.msccruises.se^ -||smetrics.msccruzeiros.com.br^ -||smetrics.msg.com^ -||smetrics.mslifelines.com^ -||smetrics.msvoice.com^ -||smetrics.multikino.pl^ -||smetrics.multiview.com^ -||smetrics.mum.edu^ -||smetrics.murata.com^ -||smetrics.mutua.es^ -||smetrics.mutuactivos.com^ -||smetrics.mutuateayuda.es^ -||smetrics.mybenefits.com.au^ -||smetrics.mybonuscenter.com^ -||smetrics.mycondogetaway.com^ -||smetrics.mycontrolcard.com^ -||smetrics.mydccu.com^ -||smetrics.myhealthtoolkit.com^ -||smetrics.myio.com.au^ -||smetrics.mykirei.com^ -||smetrics.mylifestages.org^ -||smetrics.mymanheim.com^ -||smetrics.mymatrixx.com^ -||smetrics.mymercy.net^ -||smetrics.myonlineservices.ch^ -||smetrics.mysanantonio.com^ -||smetrics.mysensiva.com^ -||smetrics.mysleepyhead.com^ -||smetrics.myspringfield.com^ -||smetrics.myspringfield.mx^ -||smetrics.mystudywindow.com^ -||smetrics.myvi.in^ -||smetrics.myyellow.com^ -||smetrics.nab.com.au^ -||smetrics.nabbroker.com.au^ -||smetrics.nabtrade.com.au^ -||smetrics.nadaguides.com^ -||smetrics.nadro.mx^ -||smetrics.namestudio.com^ -||smetrics.napaonline.com^ -||smetrics.napaprolink.ca^ -||smetrics.napaprolink.com^ -||smetrics.nascar.com^ -||smetrics.nationalbusinessfurniture.com^ -||smetrics.nationalgeneral.com^ -||smetrics.nationalgrid.com^ -||smetrics.nationalhogfarmer.com^ -||smetrics.nationaltrust.org.uk^ -||smetrics.nationwide.co.uk^ -||smetrics.naturalizer.ca^ -||smetrics.naturalizer.com^ -||smetrics.nba.com^ -||smetrics.nbi-sems.com^ -||smetrics.nbjsummit.com^ -||smetrics.ncbank.co.jp^ -||smetrics.nebraskafarmer.com^ -||smetrics.nebraskatotalcare.com^ -||smetrics.neighborly.com^ -||smetrics.neighborlybrands.com^ -||smetrics.neighbourly.ca^ -||smetrics.nepro.com^ -||smetrics.nerium.kr^ -||smetrics.nesn.com^ -||smetrics.net-a-porter.com^ -||smetrics.netspend.com^ -||smetrics.nettokom.de^ -||smetrics.netxpress.biz^ -||smetrics.new.wyndhamvrap.com^ -||smetrics.newark.com^ -||smetrics.newbalance.com^ -||smetrics.newequipment.com^ -||smetrics.newfoundlandgrocerystores.ca^ -||smetrics.newport.com^ -||smetrics.nexium24hr.com^ -||smetrics.nexmo.com^ -||smetrics.nexusmentalhealth.com^ -||smetrics.nfl.com^ -||smetrics.nfpa.org^ -||smetrics.nhhealthyfamilies.com^ -||smetrics.ni.com^ -||smetrics.nielsen.com^ -||smetrics.nike.net^ -||smetrics.nintendo.com^ -||smetrics.nisbets.be^ -||smetrics.nisbets.co.nz^ -||smetrics.nisbets.co.uk^ -||smetrics.nisbets.com.au^ -||smetrics.nisbets.fr^ -||smetrics.nisbets.ie^ -||smetrics.nisbets.nl^ -||smetrics.nissanusa.com^ -||smetrics.noblehome.co.jp^ -||smetrics.nofrills.ca^ -||smetrics.noloan.com^ -||smetrics.nomorerules.net^ -||smetrics.nordiclaan.se^ -||smetrics.nordiclan.no^ -||smetrics.northernterritory.com^ -||smetrics.nottingham.ac.uk^ -||smetrics.nowtv.com^ -||smetrics.nowtv.it^ -||smetrics.npr.org^ -||smetrics.npubank.com.au^ -||smetrics.nrhtx.com^ -||smetrics.ntkm2.com^ -||smetrics.nuanceaudio.com^ -||smetrics.nuedexta.com^ -||smetrics.nuedextahcp.com^ -||smetrics.nutritionmatters.com^ -||smetrics.nutropin.com^ -||smetrics.nvidia.com^ -||smetrics.nycgo.com^ -||smetrics.nykaa.com^ -||smetrics.nykaafashion.com^ -||smetrics.nylaarp.com^ -||smetrics.nylexpress.newyorklife.com^ -||smetrics.nyulangone.org^ -||smetrics.o2online.de^ -||smetrics.oakley.com^ -||smetrics.oakleysi.com^ -||smetrics.obirin.ac.jp^ -||smetrics.obirin.jp^ -||smetrics.oceaniacruises.com^ -||smetrics.oclc.org^ -||smetrics.ocrelizumabinfo.com^ -||smetrics.ocrevus.com^ -||smetrics.oerproject.com^ -||smetrics.officefurniture.com^ -||smetrics.officeworks.com.au^ -||smetrics.ohiofarmer.com^ -||smetrics.ok.dk^ -||smetrics.okcashbag.com^ -||smetrics.oliverpeoples.com^ -||smetrics.omdia.com^ -||smetrics.omniture.com^ -||smetrics.ondacero.es^ -||smetrics.oneamerica.com^ -||smetrics.onetrust.com^ -||smetrics.ontechsmartservices.com^ -||smetrics.onureg.ch^ -||smetrics.onward.co.jp^ -||smetrics.opdivo.com^ -||smetrics.opdivo.dk^ -||smetrics.opdivoclinicaldata.com^ -||smetrics.opdivohcp.com^ -||smetrics.opdualag.com^ -||smetrics.openboxdirect.com^ -||smetrics.openinnovationnetwork.gov.sg^ -||smetrics.openshift.com^ -||smetrics.opensource.com^ -||smetrics.opnme.com^ -||smetrics.opsm.co.nz^ -||smetrics.opsm.com.au^ -||smetrics.optica.de^ -||smetrics.optimum.com^ -||smetrics.optimum.net^ -||smetrics.optum.com^ -||smetrics.orangetheory.com^ -||smetrics.oreilly.com^ -||smetrics.orencia.com^ -||smetrics.orenciapatient.se^ -||smetrics.otsuka-us.com^ -||smetrics.ott.showmax.com^ -||smetrics.ove.com^ -||smetrics.ovumkc.com^ -||smetrics.ownertoownercommunication.com^ -||smetrics.oxfam.org.uk^ -||smetrics.packersproshop.com^ -||smetrics.pacsun.com^ -||smetrics.pahealthwellness.com^ -||smetrics.pakietyserwisowe.pl^ -||smetrics.palopmed.com^ -||smetrics.panasonic.com^ -||smetrics.panasonic.jp^ -||smetrics.panasonic.net^ -||smetrics.pandora.com^ -||smetrics.pandora.net^ -||smetrics.panerabread.com^ -||smetrics.parkerandsons.com^ -||smetrics.partnerbrands.com^ -||smetrics.partnermastercard.com^ -||smetrics.partssource.com^ -||smetrics.payback.at^ -||smetrics.payback.de^ -||smetrics.payback.it^ -||smetrics.payback.mx^ -||smetrics.payback.net^ -||smetrics.payback.pl^ -||smetrics.paymarkfinans.dk^ -||smetrics.paymarkfinans.se^ -||smetrics.payment-estimator.vwcredit.com^ -||smetrics.paysafecard.com^ -||smetrics.pbainfo.org^ -||smetrics.pbteen.ca^ -||smetrics.pbteen.com^ -||smetrics.pch.com^ -||smetrics.pcid.ca^ -||smetrics.pcoptimum.ca^ -||smetrics.pdt.r-agent.com^ -||smetrics.peachjohn.co.jp^ -||smetrics.peakperformance.com^ -||smetrics.pearlevision.ca^ -||smetrics.pearlevision.com^ -||smetrics.pebblebeach.com^ -||smetrics.pedialyte.com^ -||smetrics.pediasure.com.my^ -||smetrics.pediasure.com^ -||smetrics.pedrodelhierro.com^ -||smetrics.peek-und-cloppenburg.de^ -||smetrics.penfed.org^ -||smetrics.penguin.co.uk^ -||smetrics.pennwell.com^ -||smetrics.pensionstallet.dk^ -||smetrics.people.com^ -||smetrics.peoplepets.com^ -||smetrics.peoplesjewellers.com^ -||smetrics.perjeta.com^ -||smetrics.persol.com^ -||smetrics.personalwirtschaft.de^ -||smetrics.petbarn.com.au^ -||smetrics.petcentric.com^ -||smetrics.petco.com^ -||smetrics.petersmithcadillac.com^ -||smetrics.petersmithgm.com^ -||smetrics.petsmart.com^ -||smetrics.petvaccinesclinic.com^ -||smetrics.pexion.co.uk^ -||smetrics.pfa.dk^ -||smetrics.pfaassetmanagement.dk^ -||smetrics.pfabank.dk^ -||smetrics.pfaejendomme.dk^ -||smetrics.pfizer.com^ -||smetrics.pfizer.nl^ -||smetrics.pfizercemp.com^ -||smetrics.pflege-onkologie.de^ -||smetrics.pgford.ca^ -||smetrics.pharmawebportal.com^ -||smetrics.phesgo.com^ -||smetrics.phoenix.edu^ -||smetrics.phoenix.gov^ -||smetrics.phoenixinwest.de^ -||smetrics.photos.com^ -||smetrics.pictet.com^ -||smetrics.pinkribbonbottle.com^ -||smetrics.pionline.com^ -||smetrics.plansponsor.com^ -||smetrics.plasticsnews.com^ -||smetrics.platformservices.co.uk^ -||smetrics.platypusshoes.com.au^ -||smetrics.playforpurpose.com.au^ -||smetrics.plumbenefits.com^ -||smetrics.plumbingtoday.biz^ -||smetrics.plumblineservices.com^ -||smetrics.plymouthrock.com^ -||smetrics.pmis.abbott.com^ -||smetrics.podiumpodcast.com^ -||smetrics.pods.com^ -||smetrics.politico.com^ -||smetrics.politico.eu^ -||smetrics.politicopro.com^ -||smetrics.polivy.com^ -||smetrics.pordentrodaesclerodermia.com.br^ -||smetrics.potterybarn.ca^ -||smetrics.potterybarn.com^ -||smetrics.potterybarnkids.ca^ -||smetrics.potterybarnkids.com^ -||smetrics.power97.com^ -||smetrics.powerelectronics.com^ -||smetrics.powertracagri.com^ -||smetrics.prada.com^ -||smetrics.pradaxapatient.se^ -||smetrics.pradaxapro.com^ -||smetrics.prado.com.sv^ -||smetrics.prd.base.be^ -||smetrics.prd.telenet.be^ -||smetrics.preautorizacionfs.com^ -||smetrics.precisionmedicineonline.com^ -||smetrics.premera.com^ -||smetrics.premierinn.com^ -||smetrics.presidentscup.com^ -||smetrics.prestigeclub.in^ -||smetrics.preventionworks.info^ -||smetrics.previcox.de^ -||smetrics.pricedigests.com^ -||smetrics.princess.com^ -||smetrics.prinovaglobal.com^ -||smetrics.privatebank.citibank.com^ -||smetrics.privilege.com^ -||smetrics.productcentral-stg.products.pwc.com^ -||smetrics.projectbaseline.com^ -||smetrics.promod.eu^ -||smetrics.promod.fr^ -||smetrics.proplan.com^ -||smetrics.prosper.com^ -||smetrics.prosure.com^ -||smetrics.protrek.jp^ -||smetrics.provigo.ca^ -||smetrics.provincial.com^ -||smetrics.proximus.be^ -||smetrics.pru.co.uk^ -||smetrics.prudential.com^ -||smetrics.pshpgeorgia.com^ -||smetrics.publicissapient.com^ -||smetrics.publiclands.com^ -||smetrics.pudahuel.cl^ -||smetrics.pulmonaryfibrosis360.com^ -||smetrics.pulmozyme.com^ -||smetrics.pulte.com^ -||smetrics.puma.com^ -||smetrics.purchase.audipureprotection.com^ -||smetrics.purchasingpower.com^ -||smetrics.purina.ca^ -||smetrics.purinamills.com^ -||smetrics.purinaone.com^ -||smetrics.purinaveterinarydiets.com^ -||smetrics.puritan.com^ -||smetrics.purolatornow.com^ -||smetrics.pvh.com^ -||smetrics.pwc-tls.it^ -||smetrics.pwc.at^ -||smetrics.pwc.be^ -||smetrics.pwc.ch^ -||smetrics.pwc.co.nz^ -||smetrics.pwc.co.tz^ -||smetrics.pwc.co.uk^ -||smetrics.pwc.co.za^ -||smetrics.pwc.com.ar^ -||smetrics.pwc.com.au^ -||smetrics.pwc.com.br^ -||smetrics.pwc.com.cy^ -||smetrics.pwc.com.pk^ -||smetrics.pwc.com.tr^ -||smetrics.pwc.com.uy^ -||smetrics.pwc.com^ -||smetrics.pwc.dk^ -||smetrics.pwc.ec^ -||smetrics.pwc.es^ -||smetrics.pwc.fi^ -||smetrics.pwc.fr^ -||smetrics.pwc.gi^ -||smetrics.pwc.hr^ -||smetrics.pwc.ie^ -||smetrics.pwc.in^ -||smetrics.pwc.is^ -||smetrics.pwc.lu^ -||smetrics.pwc.nl^ -||smetrics.pwc.no^ -||smetrics.pwc.pl^ -||smetrics.pwc.pt^ -||smetrics.pwc.ro^ -||smetrics.pwc.rs^ -||smetrics.pwc.tw^ -||smetrics.pwcalgerie.pwc.fr^ -||smetrics.pwcavocats.com^ -||smetrics.pwccn.com^ -||smetrics.pwcconsulting.co.kr^ -||smetrics.pwchk.com^ -||smetrics.pwclegal.ee^ -||smetrics.pwclegal.lu^ -||smetrics.pwcmaroc.pwc.fr^ -||smetrics.q107.com^ -||smetrics.q107fm.ca^ -||smetrics.qatarairways.com.qa^ -||smetrics.qatarairways.com^ -||smetrics.qcnet.com^ -||smetrics.quallentpharmaceuticals.com^ -||smetrics.quickenloans.org^ -||smetrics.quikshiptoner.com^ -||smetrics.quiksilver.com^ -||smetrics.quill.com^ -||smetrics.qvc.com^ -||smetrics.qvc.de^ -||smetrics.qvc.jp^ -||smetrics.qvcuk.com^ -||smetrics.rac.co.uk^ -||smetrics.rackroomshoes.com^ -||smetrics.racq.com.au^ -||smetrics.racv.com.au^ -||smetrics.radioacktiva.com^ -||smetrics.radioactiva.cl^ -||smetrics.radioimagina.cl^ -||smetrics.radiole.com^ -||smetrics.radissonhotels.com^ -||smetrics.ragsdaleair.com^ -||smetrics.rainbowintl.com^ -||smetrics.ralphlauren.be^ -||smetrics.ralphlauren.ch^ -||smetrics.ralphlauren.co.kr^ -||smetrics.ralphlauren.co.uk^ -||smetrics.ralphlauren.com.au^ -||smetrics.ralphlauren.com.my^ -||smetrics.ralphlauren.com.sg^ -||smetrics.ralphlauren.com.tw^ -||smetrics.ralphlauren.de^ -||smetrics.ralphlauren.es^ -||smetrics.ralphlauren.eu^ -||smetrics.ralphlauren.fr^ -||smetrics.ralphlauren.global^ -||smetrics.ralphlauren.ie^ -||smetrics.ralphlauren.it^ -||smetrics.ralphlauren.nl^ -||smetrics.ralphlauren.pt^ -||smetrics.ramada.com^ -||smetrics.rapidadvance.com^ -||smetrics.rarediseasesignup.com^ -||smetrics.rate.com^ -||smetrics.ray-ban.com^ -||smetrics.rci.com^ -||smetrics.rcsmetrics.it^ -||smetrics.rds.ca^ -||smetrics.realcanadiansuperstore.ca^ -||smetrics.realcommercial.com.au^ -||smetrics.reale.es^ -||smetrics.realestate.com.au^ -||smetrics.realpropertymgt.com^ -||smetrics.realsimple.com^ -||smetrics.realtor.com^ -||smetrics.recruit.co.jp^ -||smetrics.redbox.com^ -||smetrics.redbull.tv^ -||smetrics.redcapnow.com^ -||smetrics.redcross.org^ -||smetrics.redcrossblood.org^ -||smetrics.redletterdays.co.uk^ -||smetrics.reedbusiness.net^ -||smetrics.refinanso.cz^ -||smetrics.reg.kb.nl^ -||smetrics.regions.com^ -||smetrics.rejuvenation.com^ -||smetrics.rejuvenationhome.ca^ -||smetrics.remservsalarypackage.com.au^ -||smetrics.renesas.com^ -||smetrics.renesas.eu^ -||smetrics.renfe.com^ -||smetrics.rent.mercedes-benz.ch^ -||smetrics.rent.mercedes-benz.co.jp^ -||smetrics.rent.mercedes-benz.se^ -||smetrics.rentprogress.com^ -||smetrics.repco.co.nz^ -||smetrics.repco.com.au^ -||smetrics.residentlearningcenter.com^ -||smetrics.resilium.com.au^ -||smetrics.resortdeveloper.com^ -||smetrics.retailagents.tui.co.uk^ -||smetrics.rethinksma.com^ -||smetrics.rexulti.com^ -||smetrics.rexultihcp.com^ -||smetrics.rexultisavings.com^ -||smetrics.riamoneytransfer.com^ -||smetrics.rimac.com^ -||smetrics.rinpashu.jp^ -||smetrics.ris.ac.jp^ -||smetrics.riteaid.com^ -||smetrics.rituxan.com^ -||smetrics.rituxanforgpampa-hcp.com^ -||smetrics.rituxanforgpampa.com^ -||smetrics.rituxanforpv.com^ -||smetrics.rituxanforra-hcp.com^ -||smetrics.rituxanforra.com^ -||smetrics.rituxanhycela.com^ -||smetrics.riumachitearoom.jp^ -||smetrics.rlicorp.com^ -||smetrics.robeco.com^ -||smetrics.robeco.nl^ -||smetrics.roche-infohub.co.za^ -||smetrics.roche-uae.com^ -||smetrics.roche.com^ -||smetrics.roche.de^ -||smetrics.rochehelse.no^ -||smetrics.rochemd.bg^ -||smetrics.rochenet.pt^ -||smetrics.rocheonline.net^ -||smetrics.rocheplus.es^ -||smetrics.rochepro-eg.com^ -||smetrics.rochepro.hr^ -||smetrics.rock101.com^ -||smetrics.rockandpop.cl^ -||smetrics.rockettes.com^ -||smetrics.rockwellautomation.com^ -||smetrics.roland.com^ -||smetrics.rolex.com^ -||smetrics.roomandboard.com^ -||smetrics.roomservicebycort.com^ -||smetrics.roxy.com^ -||smetrics.royalcaribbean.com^ -||smetrics.rozlytrek.com^ -||smetrics.rtl.nl^ -||smetrics.rubbernews.com^ -||smetrics.ryanhomes.com^ -||smetrics.ryka.com^ -||smetrics.safeauto.com^ -||smetrics.sainsburysbank.co.uk^ -||smetrics.saks.com^ -||smetrics.saksoff5th.com^ -||smetrics.salliemae.com^ -||smetrics.salomon.com^ -||smetrics.samedelman.ca^ -||smetrics.samedelman.com^ -||smetrics.samsung.com.cn^ -||smetrics.samsung.com^ -||smetrics.samsunglife.com^ -||smetrics.sandbox.ford.com^ -||smetrics.santander.co.uk^ -||smetrics.santandertravelinsurance.co.uk^ -||smetrics.sap.com^ -||smetrics.saseurobonusmastercard.dk^ -||smetrics.saseurobonusmastercard.no^ -||smetrics.saseurobonusmastercard.se^ -||smetrics.sasktel.com^ -||smetrics.saudiairlines.com^ -||smetrics.savethechildren.org.uk^ -||smetrics.saxobank.com^ -||smetrics.saxxanlage.ostsaechsische-sparkasse-dresden.de^ -||smetrics.sazerac.com^ -||smetrics.sazeracbarrelselect.com^ -||smetrics.sazerachouse.com^ -||smetrics.sbisec.co.jp^ -||smetrics.sbishinseibank.co.jp^ -||smetrics.sbs.com.au^ -||smetrics.scandichotels.com^ -||smetrics.scandichotels.de^ -||smetrics.scandichotels.dk^ -||smetrics.scandichotels.fi^ -||smetrics.scandichotels.no^ -||smetrics.scandichotels.se^ -||smetrics.scarboroughtoyota.ca^ -||smetrics.sce.com^ -||smetrics.schindler-berufsbildung.ch^ -||smetrics.schindler.ae^ -||smetrics.schindler.ar^ -||smetrics.schindler.at^ -||smetrics.schindler.ba^ -||smetrics.schindler.be^ -||smetrics.schindler.ch^ -||smetrics.schindler.cl^ -||smetrics.schindler.co.id^ -||smetrics.schindler.co.il^ -||smetrics.schindler.co.th^ -||smetrics.schindler.co.uk^ -||smetrics.schindler.co.za^ -||smetrics.schindler.co^ -||smetrics.schindler.com.br^ -||smetrics.schindler.com.tr^ -||smetrics.schindler.com^ -||smetrics.schindler.de^ -||smetrics.schindler.eg^ -||smetrics.schindler.es^ -||smetrics.schindler.fi^ -||smetrics.schindler.fr^ -||smetrics.schindler.in^ -||smetrics.schindler.it^ -||smetrics.schindler.lt^ -||smetrics.schindler.lu^ -||smetrics.schindler.lv^ -||smetrics.schindler.ma^ -||smetrics.schindler.mt^ -||smetrics.schindler.mx^ -||smetrics.schindler.my^ -||smetrics.schindler.nl^ -||smetrics.schindler.pe^ -||smetrics.schindler.pl^ -||smetrics.schindler.pt^ -||smetrics.schindler.ro^ -||smetrics.schindler.sa^ -||smetrics.schindler.sg^ -||smetrics.schindler.vn^ -||smetrics.science.org^ -||smetrics.sciencecareers.org^ -||smetrics.sciencemagazinedigital.org^ -||smetrics.scottrade.com^ -||smetrics.sdcvisit.com^ -||smetrics.seabourn.com^ -||smetrics.seasearcher.com^ -||smetrics.seat-italia.it^ -||smetrics.seat.be^ -||smetrics.seat.ch^ -||smetrics.seat.co.nz^ -||smetrics.seat.co.uk^ -||smetrics.seat.com.mt^ -||smetrics.seat.com^ -||smetrics.seat.de^ -||smetrics.seat.es^ -||smetrics.seat.fi^ -||smetrics.seat.fr^ -||smetrics.seat.ie^ -||smetrics.seat.mx^ -||smetrics.seat.no^ -||smetrics.seat.pl^ -||smetrics.seat.pt^ -||smetrics.seat.se^ -||smetrics.seat.tn^ -||smetrics.seawheeze.com^ -||smetrics.seb.ee^ -||smetrics.seb.lt^ -||smetrics.seb.lv^ -||smetrics.seb.se^ -||smetrics.sebgroup.com^ -||smetrics.sebkort.com^ -||smetrics.secure.ehc.com^ -||smetrics.secureremserv.com.au^ -||smetrics.seeeliquisevidence.com^ -||smetrics.seguro.mediaset.es^ -||smetrics.seic.com^ -||smetrics.selectquote.com^ -||smetrics.sen.com.au^ -||smetrics.sensai-cosmetics.com^ -||smetrics.sephora.com^ -||smetrics.sephora.fr^ -||smetrics.sephora.it^ -||smetrics.sephora.pl^ -||smetrics.seriesplus.com^ -||smetrics.servicechampions.net^ -||smetrics.severntrent.com^ -||smetrics.sfchronicle.com^ -||smetrics.sfr.fr^ -||smetrics.shangri-la.com^ -||smetrics.sharecare.com^ -||smetrics.sheen.jp^ -||smetrics.shell.co.uk^ -||smetrics.shellenergy.co.uk^ -||smetrics.sherwoodbuickgmc.com^ -||smetrics.sherwoodmotorcars.com^ -||smetrics.sherwoodparkchev.com^ -||smetrics.shihang.org^ -||smetrics.shihangjituan.org^ -||smetrics.shinseibank.com^ -||smetrics.shionogi.co.jp^ -||smetrics.shionogi.tv^ -||smetrics.sho.com^ -||smetrics.shop.mrbostondrinks.com^ -||smetrics.shop.superstore.ca^ -||smetrics.shopjapan.co.jp^ -||smetrics.shopmyexchange.com^ -||smetrics.shopnbc.com^ -||smetrics.shoppersdrugmart.ca^ -||smetrics.shoppremiumoutlets.com^ -||smetrics.showcase.ca^ -||smetrics.showtickets.com^ -||smetrics.showtime.com^ -||smetrics.showtimeanytime.com^ -||smetrics.siapnge.com^ -||smetrics.siblu.com^ -||smetrics.siblu.de^ -||smetrics.siblu.es^ -||smetrics.siblu.fr^ -||smetrics.siblu.nl^ -||smetrics.sierra.com^ -||smetrics.silversummithealthplan.com^ -||smetrics.simargenta.be^ -||smetrics.similac.com^ -||smetrics.simplyink.com^ -||smetrics.singlife.com^ -||smetrics.siriusxm.ca^ -||smetrics.siriusxm.com^ -||smetrics.sisal.it^ -||smetrics.sitestuff.com^ -||smetrics.sivasdescalzo.com^ -||smetrics.sj.se^ -||smetrics.sjmtech.ma^ -||smetrics.skandia.se^ -||smetrics.skandiabanken.se^ -||smetrics.skechers.co.nz^ -||smetrics.skechers.com.au^ -||smetrics.skiphop.com^ -||smetrics.skipton.co.uk^ -||smetrics.skodafinancialservices.nl^ -||smetrics.sky.com^ -||smetrics.sky.de^ -||smetrics.sky.es^ -||smetrics.sky.it^ -||smetrics.skyhighsecurity.com^ -||smetrics.slalom.com^ -||smetrics.sleepnumber.com^ -||smetrics.sling.com^ -||smetrics.sloc.co.uk^ -||smetrics.slugger.com^ -||smetrics.smart-invest.sparkasse-wuppertal.de^ -||smetrics.smartcommerce.amazon.in^ -||smetrics.smartervacations.com^ -||smetrics.smartmove.us^ -||smetrics.smartstyle.com^ -||smetrics.smartvermoegen.de^ -||smetrics.smbcnikko.co.jp^ -||smetrics.smtb.jp^ -||smetrics.snapfish.ca^ -||smetrics.snapfish.ch^ -||smetrics.snapfish.co.nz^ -||smetrics.snapfish.co.uk^ -||smetrics.snapfish.com.au^ -||smetrics.snapfish.com^ -||smetrics.snapfish.fr^ -||smetrics.snapfish.it^ -||smetrics.snapfish.nl^ -||smetrics.snapfish.no^ -||smetrics.snapfish.pt^ -||smetrics.snapfish.se^ -||smetrics.societyofvaluedminds.org^ -||smetrics.sofina.co.jp^ -||smetrics.sofina.com^ -||smetrics.softcrylic.com^ -||smetrics.softwareag.com^ -||smetrics.sofy.jp^ -||smetrics.sofygirls.com^ -||smetrics.solarwinds.com^ -||smetrics.solaseedair.jp^ -||smetrics.solidigm.com^ -||smetrics.solidigm.de^ -||smetrics.solidigmtech.com.cn^ -||smetrics.solidigmtechnology.cn^ -||smetrics.solidigmtechnology.jp^ -||smetrics.solidigmtechnology.kr^ -||smetrics.solinst.com^ -||smetrics.solomobile.ca^ -||smetrics.solvingmdddisconnect.com^ -||smetrics.sony-africa.com^ -||smetrics.sony-asia.com^ -||smetrics.sony-europe.com^ -||smetrics.sony.at^ -||smetrics.sony.be^ -||smetrics.sony.bg^ -||smetrics.sony.ca^ -||smetrics.sony.ch^ -||smetrics.sony.cl^ -||smetrics.sony.co.cr^ -||smetrics.sony.co.id^ -||smetrics.sony.co.in^ -||smetrics.sony.co.kr^ -||smetrics.sony.co.nz^ -||smetrics.sony.co.th^ -||smetrics.sony.co.uk^ -||smetrics.sony.com.au^ -||smetrics.sony.com.br^ -||smetrics.sony.com.co^ -||smetrics.sony.com.do^ -||smetrics.sony.com.ec^ -||smetrics.sony.com.hn^ -||smetrics.sony.com.mx^ -||smetrics.sony.com.pa^ -||smetrics.sony.com.pe^ -||smetrics.sony.com.ph^ -||smetrics.sony.com.tr^ -||smetrics.sony.com.tw^ -||smetrics.sony.com.vn^ -||smetrics.sony.com^ -||smetrics.sony.cz^ -||smetrics.sony.de^ -||smetrics.sony.dk^ -||smetrics.sony.ee^ -||smetrics.sony.es^ -||smetrics.sony.eu^ -||smetrics.sony.fi^ -||smetrics.sony.fr^ -||smetrics.sony.gr^ -||smetrics.sony.hr^ -||smetrics.sony.hu^ -||smetrics.sony.ie^ -||smetrics.sony.it^ -||smetrics.sony.jp^ -||smetrics.sony.kz^ -||smetrics.sony.lt^ -||smetrics.sony.lu^ -||smetrics.sony.lv^ -||smetrics.sony.nl^ -||smetrics.sony.no^ -||smetrics.sony.pl^ -||smetrics.sony.pt^ -||smetrics.sony.ro^ -||smetrics.sony.ru^ -||smetrics.sony.se^ -||smetrics.sony.si^ -||smetrics.sony.sk^ -||smetrics.sony.ua^ -||smetrics.sonylatvija.com^ -||smetrics.sorgenia.it^ -||smetrics.sothebys.com^ -||smetrics.sotyktu.com^ -||smetrics.sotyktuhcp.com^ -||smetrics.sourceesb.com^ -||smetrics.southaustralia.com^ -||smetrics.southeastfarmpress.com^ -||smetrics.southerncomfort.com^ -||smetrics.southernglazers.com^ -||smetrics.southwest.com^ -||smetrics.southwestfarmpress.com^ -||smetrics.southwesthotels.com^ -||smetrics.southwestwifi.com^ -||smetrics.soyaparabebe.com.co^ -||smetrics.spaf-academy.pl^ -||smetrics.spanx.com^ -||smetrics.spargofinans.se^ -||smetrics.sparkassendirekt.de^ -||smetrics.spdrs.com^ -||smetrics.speedousa.com^ -||smetrics.spela.svenskaspel.se^ -||smetrics.spendwise.no^ -||smetrics.spendwise.se^ -||smetrics.spiriva.com^ -||smetrics.sportsbet.com.au^ -||smetrics.sportsmansguide.com^ -||smetrics.sprucemoney.com^ -||smetrics.sptoyota.com^ -||smetrics.srpnet.com^ -||smetrics.srptelecom.com^ -||smetrics.ssfcu.org^ -||smetrics.ssga.com^ -||smetrics.standardandpoors.com^ -||smetrics.stanfordchildrens.org^ -||smetrics.stanfordhealthcare.org^ -||smetrics.staples.com^ -||smetrics.staplesadvantage.co.nz^ -||smetrics.staplesadvantage.com.au^ -||smetrics.staplesadvantage.com^ -||smetrics.starhub.com^ -||smetrics.stark.dk^ -||smetrics.startribune.com^ -||smetrics.statefarm.com^ -||smetrics.statestreet.com^ -||smetrics.statnews.com^ -||smetrics.stewartseeds.com^ -||smetrics.stgeorge.com.au^ -||smetrics.store.irobot.com^ -||smetrics.store360.luxottica.com^ -||smetrics.strategyand.pwc.com^ -||smetrics.stressless.com^ -||smetrics.striderite.com^ -||smetrics.strokeawareness.com^ -||smetrics.stubhub.co.uk^ -||smetrics.stwater.co.uk^ -||smetrics.stylefind.com^ -||smetrics.subaruofsaskatoon.ca^ -||smetrics.suisai-global.net^ -||smetrics.sumitclub.jp^ -||smetrics.suncorp.co.nz^ -||smetrics.suncorp.com.au^ -||smetrics.suncorpbank.com.au^ -||smetrics.sunflowerhealthplan.com^ -||smetrics.sunglasshut.com^ -||smetrics.sunlife.ca^ -||smetrics.sunlife.com.vn^ -||smetrics.sunlife.com^ -||smetrics.sunlife.ie^ -||smetrics.sunlifeconnect.com^ -||smetrics.sunlifefinancialtrust.ca^ -||smetrics.sunlifeglobalinvestments.com^ -||smetrics.sunpower.com^ -||smetrics.sunshinehealth.com^ -||smetrics.super8.com^ -||smetrics.super99.com^ -||smetrics.superfleet.net^ -||smetrics.superiorhealthplan.com^ -||smetrics.supermarketnews.com^ -||smetrics.suppliesguys.com^ -||smetrics.sustainableplastics.com^ -||smetrics.suunto.com^ -||smetrics.svd.se^ -||smetrics.swalife.com^ -||smetrics.swinburne.edu.au^ -||smetrics.swisslife-select.de^ -||smetrics.synergy.net.au^ -||smetrics.synjardyhcp.com^ -||smetrics.synopsys.com^ -||smetrics.sysmex-support.com^ -||smetrics.t-mobile.com^ -||smetrics.t-mobilemoney.com^ -||smetrics.tab.com.au^ -||smetrics.tabletable.co.uk^ -||smetrics.tackntogs.com^ -||smetrics.tacobell.com^ -||smetrics.takami-labo.com^ -||smetrics.talbots.com^ -||smetrics.talkaboutlaminitis.co.uk^ -||smetrics.taltz.com^ -||smetrics.tamiflu.com^ -||smetrics.tarceva.com^ -||smetrics.target.com^ -||smetrics.targetoptical.com^ -||smetrics.tarrantcounty.com^ -||smetrics.tastingaustralia.com.au^ -||smetrics.tataaia.com^ -||smetrics.tataaig.com^ -||smetrics.taylormadegolf.com^ -||smetrics.taylors.edu.my^ -||smetrics.taymark.taylorcorp.com^ -||smetrics.tbs.com^ -||smetrics.tcm.com^ -||smetrics.tcs.com^ -||smetrics.tdc.dk^ -||smetrics.tdworld.com^ -||smetrics.te.com^ -||smetrics.teachforamerica.org^ -||smetrics.teambeachbody.com^ -||smetrics.tecentriq-hcp.com^ -||smetrics.tecentriq.com^ -||smetrics.techdata.com^ -||smetrics.tecoloco.co.cr^ -||smetrics.tecoloco.com^ -||smetrics.tedbaker.com^ -||smetrics.teeoff.com^ -||smetrics.telecel.com.gh^ -||smetrics.telegraph.co.uk^ -||smetrics.telenet.be^ -||smetrics.telenor.dk^ -||smetrics.telenor.se^ -||smetrics.teletoon.com^ -||smetrics.telustvplus.com^ -||smetrics.ten.com.au^ -||smetrics.tesco.com^ -||smetrics.tescobank.com^ -||smetrics.tetrapak.com^ -||smetrics.textbooks.com^ -||smetrics.tfl.gov.uk^ -||smetrics.tgw.com^ -||smetrics.the-farmer.com^ -||smetrics.theathletesfoot.co.nz^ -||smetrics.theathletesfoot.com.au^ -||smetrics.thebay.com^ -||smetrics.theetihadaviationgroup.com^ -||smetrics.thefa.com^ -||smetrics.thegpsa.org^ -||smetrics.thelawyer.com^ -||smetrics.themadisonsquaregardencompany.com^ -||smetrics.theoutnet.com^ -||smetrics.thepeakfm.com^ -||smetrics.theplayers.com^ -||smetrics.thespacecinema.it^ -||smetrics.thespecialeventshow.com^ -||smetrics.thetruth.com^ -||smetrics.thewhitecompany.com^ -||smetrics.thewolf.ca^ -||smetrics.thingspeak.com^ -||smetrics.thingsremembered.com^ -||smetrics.thinkstockphotos.com^ -||smetrics.thomasgalbraith.com^ -||smetrics.thomsonlakes.co.uk^ -||smetrics.thomsonski.co.uk^ -||smetrics.thorn.se^ -||smetrics.thoughtworks.com^ -||smetrics.three.co.uk^ -||smetrics.three.ie^ -||smetrics.thrivent.com^ -||smetrics.thriventfinancial.com^ -||smetrics.thymes.com^ -||smetrics.tiaa-cref.org^ -||smetrics.tiaa.org^ -||smetrics.ticket.dk^ -||smetrics.ticket.fi^ -||smetrics.ticket.no^ -||smetrics.ticket.se^ -||smetrics.ticketmaster.com^ -||smetrics.ticketsatwork.com^ -||smetrics.tienda.telcel.com^ -||smetrics.tiendamonge.com^ -||smetrics.tiffany.com.br^ -||smetrics.tiffany.com.mx^ -||smetrics.tiffany.kr^ -||smetrics.tiffany.ru^ -||smetrics.timberland.com^ -||smetrics.timberland.es^ -||smetrics.timberland.fr^ -||smetrics.timberland.it^ -||smetrics.time.com^ -||smetrics.timeforkids.com^ -||smetrics.timeinc.com^ -||smetrics.timeinc.net^ -||smetrics.timeout.com^ -||smetrics.tirebusiness.com^ -||smetrics.tjekdinpuls.dk^ -||smetrics.tlcgroup.com^ -||smetrics.tmz.com^ -||smetrics.tnkase.com^ -||smetrics.tochinavi.net^ -||smetrics.tokbox.com^ -||smetrics.tomecontroldesusalud.com^ -||smetrics.tommy.com^ -||smetrics.tommybahama.com^ -||smetrics.toofab.com^ -||smetrics.toptenreviews.com^ -||smetrics.totalwine.com^ -||smetrics.tourdownunder.com.au^ -||smetrics.toyota.com^ -||smetrics.toyotanorthwestedmonton.com^ -||smetrics.toyotaonthepark.ca^ -||smetrics.toysrus.com^ -||smetrics.toysrus.es^ -||smetrics.traction.com^ -||smetrics.tractorsupply.com^ -||smetrics.traderonline.com^ -||smetrics.trailer-bodybuilders.com^ -||smetrics.trainsfares.co.uk^ -||smetrics.transact711.com^ -||smetrics.transactfamilycard.com^ -||smetrics.travelchannel.com^ -||smetrics.travelmoneyonline.co.uk^ -||smetrics.travelzoo.com^ -||smetrics.treehousetv.com^ -||smetrics.trellix.com^ -||smetrics.trendmicro.co.jp^ -||smetrics.trendmicro.com^ -||smetrics.trendyol.com^ -||smetrics.trilliumadvantage.com^ -||smetrics.trilliumhealthplan.com^ -||smetrics.trilliumohp.com^ -||smetrics.tropicanafm.com^ -||smetrics.trucker.com^ -||smetrics.truckfleetmro.com^ -||smetrics.truffaut.com^ -||smetrics.trulicity.com^ -||smetrics.trustmark.com^ -||smetrics.truthinitiative.org^ -||smetrics.tryg.dk^ -||smetrics.trygghansa.se^ -||smetrics.tsc.ca^ -||smetrics.tsn.ca^ -||smetrics.ttiinc.com^ -||smetrics.tudorwatch.com^ -||smetrics.tui.co.uk^ -||smetrics.tui.no^ -||smetrics.tui.se^ -||smetrics.tuifly.fr^ -||smetrics.tuleva.fi^ -||smetrics.tune-h.com^ -||smetrics.tuneup.de^ -||smetrics.tunisie.pwc.fr^ -||smetrics.tuvsud.com^ -||smetrics.tv2.dk^ -||smetrics.twany-hadabae.jp^ -||smetrics.typ2podden.se^ -||smetrics.tyro.com^ -||smetrics.tyson.com^ -||smetrics.tysonfoodservice.com^ -||smetrics.u-can.co.jp^ -||smetrics.ubi.com^ -||smetrics.uconnect.dtm.chrysler.com^ -||smetrics.uhc.com^ -||smetrics.undercovertourist.com^ -||smetrics.unipolsai.it^ -||smetrics.unitymediabusiness.de^ -||smetrics.upc.ch^ -||smetrics.ups.com^ -||smetrics.urgentcomm.com^ -||smetrics.us.playstation.com^ -||smetrics.us.trintellix.com^ -||smetrics.usaaperks.com^ -||smetrics.usbank.com^ -||smetrics.usopen.org^ -||smetrics.utech-polyurethane.com^ -||smetrics.utilityanalyticsweek.com^ -||smetrics.valumart.ca^ -||smetrics.vangraaf.com^ -||smetrics.vans.co.nz^ -||smetrics.vans.com.au^ -||smetrics.variis.com^ -||smetrics.vcm.com^ -||smetrics.velocityfrequentflyer.com^ -||smetrics.verdugotienda.com^ -||smetrics.vergoelst.de^ -||smetrics.verisign.com^ -||smetrics.vermontcountrystore.com^ -||smetrics.vermontcreamery.com^ -||smetrics.vero.co.nz^ -||smetrics.vetmedica.de^ -||smetrics.vetplus.com.au^ -||smetrics.viabcp.com^ -||smetrics.viasat.com^ -||smetrics.viceroyhotelsandresorts.com^ -||smetrics.viega.at^ -||smetrics.viega.be^ -||smetrics.viega.com^ -||smetrics.viega.cz^ -||smetrics.viega.de^ -||smetrics.viega.dk^ -||smetrics.viega.es^ -||smetrics.viega.fr^ -||smetrics.viega.hr^ -||smetrics.viega.hu^ -||smetrics.viega.in^ -||smetrics.viega.it^ -||smetrics.viega.lt^ -||smetrics.viega.nl^ -||smetrics.viega.no^ -||smetrics.viega.pl^ -||smetrics.viega.pt^ -||smetrics.viega.rs^ -||smetrics.viega.se^ -||smetrics.viega.us^ -||smetrics.viewtabi.jp^ -||smetrics.viigalan.se^ -||smetrics.vikingline.ax^ -||smetrics.vikingline.ee^ -||smetrics.vikingline.fi^ -||smetrics.vince.com^ -||smetrics.virginatlantic.com^ -||smetrics.virginaustralia.com^ -||smetrics.virginmedia.com^ -||smetrics.virginmediabusiness.co.uk^ -||smetrics.virginmoney.com.au^ -||smetrics.virtual-cosme.net^ -||smetrics.virusbuster.jp^ -||smetrics.visiondirect.co.uk^ -||smetrics.visitsingapore.com.cn^ -||smetrics.visitsingapore.com^ -||smetrics.vitacost.com^ -||smetrics.vitalsource.com^ -||smetrics.vitamix.com^ -||smetrics.vitasure.com.tr^ -||smetrics.vodafone.al^ -||smetrics.vodafone.co.nz^ -||smetrics.vodafone.co.uk^ -||smetrics.vodafone.com.gh^ -||smetrics.vodafone.com.tr^ -||smetrics.vodafone.es^ -||smetrics.vodafone.gr^ -||smetrics.vodafone.in^ -||smetrics.vodafone.qa^ -||smetrics.vodafone.ro^ -||smetrics.vodafonecu.gr^ -||smetrics.vogue-eyewear.com^ -||smetrics.volkswagenfinancialservices.nl^ -||smetrics.volusion.com^ -||smetrics.vonage.ca^ -||smetrics.vonage.co.uk^ -||smetrics.vonage.com^ -||smetrics.vrst.com^ -||smetrics.vrtx.com^ -||smetrics.vsemirnyjbank.org^ -||smetrics.vueling.com^ -||smetrics.vw.com^ -||smetrics.vwfs-service-plans.io^ -||smetrics.vwfs.co.uk^ -||smetrics.vwfs.com.br^ -||smetrics.vwfs.com^ -||smetrics.vwfs.cz^ -||smetrics.vwfs.de^ -||smetrics.vwfs.es^ -||smetrics.vwfs.fr^ -||smetrics.vwfs.gr^ -||smetrics.vwfs.ie^ -||smetrics.vwfs.io^ -||smetrics.vwfs.it^ -||smetrics.vwfs.mx^ -||smetrics.vwfs.pl^ -||smetrics.vwfs.pt^ -||smetrics.vwpfs.nl^ -||smetrics.vyvansepro.com^ -||smetrics.walgreens.com^ -||smetrics.walmart.com^ -||smetrics.walmartmoneycard.com^ -||smetrics.walmartstores.com^ -||smetrics.wardsintelligence.informa.com^ -||smetrics.warners.com^ -||smetrics.waseda-ac.co.jp^ -||smetrics.washingtonpost.com^ -||smetrics.waste360.com^ -||smetrics.watch.nba.com^ -||smetrics.waterlooford.com^ -||smetrics.waterloolincoln.com^ -||smetrics.waters.com^ -||smetrics.wavespartnership.org^ -||smetrics.wdeportes.com^ -||smetrics.wdrake.com^ -||smetrics.webex.com^ -||smetrics.webnova.abbottnutrition.com^ -||smetrics.wedenik.com^ -||smetrics.weflive.com^ -||smetrics.wegmans.com^ -||smetrics.wellcareky.com^ -||smetrics.west.edu^ -||smetrics.westcoastuniversity.edu^ -||smetrics.westelm.ca^ -||smetrics.westelm.com^ -||smetrics.westernaustralia.com^ -||smetrics.westernfarmpress.com^ -||smetrics.westernskycommunitycare.com^ -||smetrics.westernunion.com^ -||smetrics.westgateresorts.com^ -||smetrics.westpac.com.au^ -||smetrics.westpacgroup.com.au^ -||smetrics.wgu.edu^ -||smetrics.whatsappsim.de^ -||smetrics.whitbreadinns.co.uk^ -||smetrics.whitbyoshawahonda.com^ -||smetrics.wibe.com^ -||smetrics.wileyplus.com^ -||smetrics.williamhill.com^ -||smetrics.williamhill.es^ -||smetrics.williamhill.it^ -||smetrics.williamhillplc.com^ -||smetrics.williams-sonoma.ca^ -||smetrics.williams-sonoma.com^ -||smetrics.williamscomfortair.com^ -||smetrics.williamsf1.com^ -||smetrics.wilson.com^ -||smetrics.wilsonniblett.com^ -||smetrics.wimbledon.com^ -||smetrics.winc.co.nz^ -||smetrics.winc.com.au^ -||smetrics.winespectator.com^ -||smetrics.winfieldunited.com^ -||smetrics.wireimage.com^ -||smetrics.wirmagazin.de^ -||smetrics.wixfilters.com^ -||smetrics.wm.com^ -||smetrics.wmaze.com^ -||smetrics.wmg.com^ -||smetrics.wnba.com^ -||smetrics.wnetwork.com^ -||smetrics.wolterskluwer.com^ -||smetrics.woma-group.com^ -||smetrics.womensecret.com^ -||smetrics.womensecret.mx^ -||smetrics.workforce.com^ -||smetrics.workfront.com^ -||smetrics.workingadvantage.com^ -||smetrics.worldbank.org^ -||smetrics.worldbankgroup.org^ -||smetrics.worldmarket.com^ -||smetrics.worldvision.org^ -||smetrics.wowtv.de^ -||smetrics.wradio.com.co^ -||smetrics.wradio.com.mx^ -||smetrics.wrs.com.sg^ -||smetrics.wsib2b.com^ -||smetrics.wszechnica.roche.pl^ -||smetrics.wu.com^ -||smetrics.wunetspendprepaid.com^ -||smetrics.www.hondros.edu^ -||smetrics.www.vwfs.de^ -||smetrics.wyndham.com^ -||smetrics.wyndhamhotelgroup.com^ -||smetrics.wyndhamhotels.com^ -||smetrics.wyndhamrewards.com^ -||smetrics.xe.com^ -||smetrics.xofluza.com^ -||smetrics.xolairhcp.com^ -||smetrics.y108.ca^ -||smetrics.yaencontre.com^ -||smetrics.ybs.co.uk^ -||smetrics.yellow.com.au^ -||smetrics.yellowpages.com.au^ -||smetrics.yesterdaysnews.com^ -||smetrics.yo-ko-o.com^ -||smetrics.yo-ko-o.jp^ -||smetrics.yourconroenews.com^ -||smetrics.yourdot.com^ -||smetrics.yourdot.net^ -||smetrics.yourheartyourdecision.com^ -||smetrics.yourindependentgrocer.ca^ -||smetrics.yrcw.com^ -||smetrics.ytv.com^ -||smetrics.zagg.com^ -||smetrics.zales.com^ -||smetrics.zalesoutlet.com^ -||smetrics.zehrs.ca^ -||smetrics.zeiss.com^ -||smetrics.zeposia.com^ -||smetrics.zeposiareg.ch^ -||smetrics.zexy-en-soudan.net^ -||smetrics.zexy-enmusubi.net^ -||smetrics.zimmerbiomet.com^ -||smetrics.ziplyfiber.com^ -||smetrics.zodiacshoes.com^ -||smetrics.zoneperfect.com^ -||smetrics.zurichlife.co.jp^ -||smetrics1.experian.com^ -||smetrics2.kaiserpermanente.org^ -||smetrics2.nokia.com^ -||smetrics2.williamhill.com^ -||smetricsadobe.hollandandbarrett.be^ -||smetricsadobe.hollandandbarrett.com^ -||smetricsadobe.hollandandbarrett.ie^ -||smetricsadobe.hollandandbarrett.nl^ -||smetricsqa.sierra.com^ -||smetricstur.www.svenskaspel.se^ -||smetrix.avon.uk.com^ -||smetrix.youravon.com^ -||sminerva.healthcentral.com^ -||smobile.wotif.com^ -||smodus.nike.com^ -||smon.activate.cz^ -||smon.blackhistorymonth.gov^ -||smon.congress.gov^ -||smon.copyright.gov^ -||smon.loc.gov^ -||sms.ajopharmabeta.riteaid.com^ -||sms.apac.coca-cola.com^ -||sms.em.officedepot.com^ -||sms.email-disney.cjm.adobe.com^ -||sms.email-mobiledx.cjm.adobe.com^ -||sms.info.smart.com^ -||sms.mcafee.com^ -||sms.nespresso.com^ -||sms.northeast.aaa.com^ -||sms.notice.assurancewireless.com^ -||sms.notice.metrobyt-mobile.com^ -||sms.notice.t-mobile.com^ -||sms.realmadrid1.test.cjmadobe.com^ -||sms.riteaid.com^ -||smtc.qantas.com.au^ -||smtc.qantas.com^ -||smtrcs.redhat.com^ -||smtx.belfius.be^ -||smtx.lastminute.com.au^ -||smtx.travel.com.au^ -||smy.iheart.com^ -||snalytics.accidenthero.at^ -||snalytics.allianz-assistance.at^ -||snalytics.allianz-assistance.es^ -||snalytics.allianz-assistance.ie^ -||snalytics.allianz-assistance.nl^ -||snalytics.allianz-reiseversicherung.de^ -||snalytics.allianz-travel.com.hk^ -||snalytics.allianz-voyage.fr^ -||snalytics.allyz.com^ -||snalytics.travelinsurance.ca^ -||so.blue.ch^ -||so.bluecinema.ch^ -||so.bluenews.ch^ -||so.blueplus.ch^ -||so.bluewin.ch^ -||so.boh.com^ -||so.desertschools.org^ -||so.opentable.co.uk^ -||so.opentable.com^ -||so.otrestaurant.com^ -||so.sunrise.ch^ -||so.swisscom.ch^ -||so8.hyatt.com^ -||socs.hagerty.com^ -||som.abritel.fr^ -||som.aluguetemporada.com.br^ -||som.athenahealth.com^ -||som.blockbuster.com^ -||som.cablestogo.co.uk^ -||som.cbsi.com^ -||som.constellation.com^ -||som.craftsman.com^ -||som.escapehomes.com^ -||som.gaservesamerica.com^ -||som.greatwolf.com^ -||som.healthgrades.com^ -||som.homeaway.com.au^ -||som.homeaway.com.co^ -||som.homeaway.com^ -||som.homeaway.pt^ -||som.hotels.com^ -||som.hotwire.com^ -||som.kenmore.com^ -||som.newenergy.com^ -||som.reethirah.oneandonlyresorts.com^ -||som.resortime.com^ -||som.ringcentral.com^ -||som.sears.com^ -||som.vrbo.com^ -||sometrics.netapp.com^ -||somn.hiltongrandvacations.com^ -||somn.sonypictures.com^ -||somn.wholesalehalloweencostumes.com^ -||somn.wholesalepartysupplies.com^ -||somni.accenture.com^ -||somni.alaskaair.com^ -||somni.americanwesthomes.com^ -||somni.amrock.com^ -||somni.amsurg.com^ -||somni.ashleyfurniturehomestore.com^ -||somni.aussiespecialist.com^ -||somni.australia.cn^ -||somni.australia.com^ -||somni.avg.com^ -||somni.banzel.com^ -||somni.bcg.com^ -||somni.bd.pcm.com^ -||somni.bell.ca^ -||somni.bgsaxo.it^ -||somni.bluebird.com^ -||somni.bluecrossma.com^ -||somni.bostonpizza.com^ -||somni.carecredit.com^ -||somni.carecreditprovidercenter.com^ -||somni.choicehotels.com^ -||somni.cineplex.com^ -||somni.cineplexdigitalmedia.com^ -||somni.cn.saxobank.com^ -||somni.copaair.com^ -||somni.cpobd.com^ -||somni.cpogenerac.com^ -||somni.cpopowermatic.com^ -||somni.cporotarytools.com^ -||somni.cposenco.com^ -||somni.cpowilton.com^ -||somni.cpoworkshop.com^ -||somni.creditonebank.com^ -||somni.csc.com^ -||somni.deere.com^ -||somni.deloittenet.deloitte.com^ -||somni.dexknows.com^ -||somni.dispatch.com^ -||somni.djoglobal.com^ -||somni.dsw.com^ -||somni.dxc.technology^ -||somni.edisonfinancial.ca^ -||somni.empr.com^ -||somni.endocrinologyadvisor.com^ -||somni.fathead.com^ -||somni.firsttechfed.com^ -||somni.genworth.com^ -||somni.getscarlet.com^ -||somni.giljimenez.com^ -||somni.hallmarkecards.com^ -||somni.hardrockhotels.com^ -||somni.home.saxo^ -||somni.huk.de^ -||somni.huk24.de^ -||somni.icicihfc.com^ -||somni.innforks.com^ -||somni.istockphoto.com^ -||somni.lightstream.com^ -||somni.mapac.thermofisher.com^ -||somni.moneytips.com^ -||somni.mycme.com^ -||somni.myrocket.com^ -||somni.myspendwell.com^ -||somni.mysynchrony.com^ -||somni.neighbourly.co.nz^ -||somni.neurologyadvisor.com^ -||somni.nine.com.au^ -||somni.orvis.com^ -||somni.pcm.com^ -||somni.pemco.com^ -||somni.playdium.com^ -||somni.pluralsight.com^ -||somni.qlmortgageservices.com^ -||somni.quickenloans.org^ -||somni.redcardreloadable.com^ -||somni.rei.com^ -||somni.reifund.org^ -||somni.rkt.zone^ -||somni.rocketaccount.com^ -||somni.rocketauto.com^ -||somni.rocketcard.com^ -||somni.rockethomes.com^ -||somni.rockethq.com^ -||somni.rocketloans.com^ -||somni.rocketmoney.com^ -||somni.rocketmortgage.ca^ -||somni.rocketmortgage.com^ -||somni.rocketmortgagesquares.com^ -||somni.rocketpro.com^ -||somni.rocketprotpo.com^ -||somni.sbicard.com^ -||somni.sbimobility.com^ -||somni.scmagazine.com^ -||somni.serve.com^ -||somni.silversea.com^ -||somni.sky.at^ -||somni.sky.de^ -||somni.sundancecatalog.com^ -||somni.suntrust.com^ -||somni.superonline.net^ -||somni.syf.com^ -||somni.synchrony.com^ -||somni.synchronybank.com^ -||somni.synchronybusiness.com^ -||somni.synchronycareers.com^ -||somni.tatacard.com^ -||somni.thatsmymortgage.com^ -||somni.thedarcyhotel.com^ -||somni.therecroom.com^ -||somni.thermofisher.com^ -||somni.turkcell.com.tr^ -||somni.vikingrivercruises.com^ -||somni.vrk.de^ -||somni.westernasset.com^ -||somni.winwithp1ag.com^ -||somni.yellowpages.com^ -||somnistats.jetblue.com^ -||somnit.blinkfitness.com^ -||somnit.equinox.com^ -||somniture.chip.de^ -||somniture.compactappliance.com^ -||somniture.corel.com^ -||somniture.edgestar.com^ -||somniture.faucetdirect.com^ -||somniture.handlesets.com^ -||somniture.kegerator.com^ -||somniture.lightingdirect.com^ -||somniture.livingdirect.com^ -||somniture.pullsdirect.com^ -||somniture.scotiabank.com^ -||somniture.scotiabank.mobi^ -||somniture.stuff.co.nz^ -||somniture.ventingdirect.com^ -||somniture.ventingpipe.com^ -||somniture.winecoolerdirect.com^ -||somniture.yodlee.com^ -||somt.honda.com^ -||somtr.financialengines.com^ -||somtrdc.jobsdb.com^ -||somtrdc.jobstreet.co.id^ -||somtrdc.jobstreet.com.my^ -||somtrdc.jobstreet.com.ph^ -||somtrdc.jobstreet.com.sg^ -||somtrdc.jobstreet.com^ -||somtrdc.jobstreet.vn^ -||soptimize.southwest.com^ -||sosc.hrs.com^ -||sowa.carhartt.com^ -||spc.personalcreations.com^ -||spersonalization.mrappliance.ca^ -||spersonalization.mrappliance.com^ -||spersonalization.mrelectric.com^ -||spersonalization.mrrooter.ca^ -||spersonalization.mrrooter.com^ -||spersonalization.rainbowintl.com^ -||sphc.caring4cancer.com^ -||spscas.hitachi-solutions.co.jp^ -||srepdata.12newsnow.com^ -||srepdata.13wmaz.com^ -||srepdata.app.com^ -||srepdata.armytimes.com^ -||srepdata.azcentral.com^ -||srepdata.caller.com^ -||srepdata.citizen-times.com^ -||srepdata.clarionledger.com^ -||srepdata.coloradoan.com^ -||srepdata.coshoctontribune.com^ -||srepdata.courier-journal.com^ -||srepdata.courierpostonline.com^ -||srepdata.dailyworld.com^ -||srepdata.desertsun.com^ -||srepdata.elpasotimes.com^ -||srepdata.eveningsun.com^ -||srepdata.fdlreporter.com^ -||srepdata.fox15abilene.com^ -||srepdata.freep.com^ -||srepdata.golfweek.com^ -||srepdata.greatfallstribune.com^ -||srepdata.guampdn.com^ -||srepdata.hometownlife.com^ -||srepdata.inyork.com^ -||srepdata.ithacajournal.com^ -||srepdata.jconline.com^ -||srepdata.jsonline.com^ -||srepdata.kcentv.com^ -||srepdata.kens5.com^ -||srepdata.kgw.com^ -||srepdata.kiiitv.com^ -||srepdata.kitsapsun.com^ -||srepdata.knoxnews.com^ -||srepdata.krem.com^ -||srepdata.ktvb.com^ -||srepdata.kvue.com^ -||srepdata.lansingstatejournal.com^ -||srepdata.ldnews.com^ -||srepdata.livingstondaily.com^ -||srepdata.marconews.com^ -||srepdata.marinecorpstimes.com^ -||srepdata.marionstar.com^ -||srepdata.marshfieldnewsherald.com^ -||srepdata.michigan.com^ -||srepdata.montgomeryadvertiser.com^ -||srepdata.mycentraljersey.com^ -||srepdata.mydesert.com^ -||srepdata.mynorthshorenow.com^ -||srepdata.naplesnews.com^ -||srepdata.navytimes.com^ -||srepdata.news-leader.com^ -||srepdata.newsleader.com^ -||srepdata.pal-item.com^ -||srepdata.postcrescent.com^ -||srepdata.poughkeepsiejournal.com^ -||srepdata.pressconnects.com^ -||srepdata.publicopiniononline.com^ -||srepdata.recordonline.com^ -||srepdata.redding.com^ -||srepdata.rgj.com^ -||srepdata.ruidosonews.com^ -||srepdata.shreveporttimes.com^ -||srepdata.tcpalm.com^ -||srepdata.tennessean.com^ -||srepdata.theadvertiser.com^ -||srepdata.thedailyjournal.com^ -||srepdata.thehuddle.com^ -||srepdata.thespectrum.com^ -||srepdata.thetimesherald.com^ -||srepdata.thetowntalk.com^ -||srepdata.usatoday.com^ -||srepdata.wausaudailyherald.com^ -||srepdata.wauwatosanow.com^ -||srepdata.wisfarmer.com^ -||srepdata.wkyc.com^ -||srepdata.ydr.com^ -||srepdata.yorkdispatch.com^ -||sreport.mitsubishicars.com^ -||ssa.asianfoodnetwork.com^ -||ssa.cookingchanneltv.com^ -||ssa.discovery.com^ -||ssa.discoveryplus.com^ -||ssa.discoveryplus.in^ -||ssa.discoveryrise.org^ -||ssa.eurosport.co.uk^ -||ssa.eurosport.com^ -||ssa.eurosport.de^ -||ssa.eurosport.dk^ -||ssa.eurosport.es^ -||ssa.eurosport.fr^ -||ssa.eurosport.hu^ -||ssa.eurosport.it^ -||ssa.eurosport.nl^ -||ssa.eurosport.no^ -||ssa.eurosport.pl^ -||ssa.eurosport.pt^ -||ssa.eurosport.ro^ -||ssa.eurosport.rs^ -||ssa.eurosport.se^ -||ssa.eurosportplayer.com^ -||ssa.food.com^ -||ssa.foodnetwork.com^ -||ssa.hgtv.com^ -||ssa.investigationdiscovery.com^ -||ssa.oprah.com^ -||ssa.tlc.com^ -||ssc.alhurra.com^ -||ssc.amerikaninsesi.org^ -||ssc.amerikaovozi.com^ -||ssc.amerikayidzayn.com^ -||ssc.amerikiskhma.com^ -||ssc.azadiradio.com^ -||ssc.azadliq.org^ -||ssc.azathabar.com^ -||ssc.azatliq.org^ -||ssc.azattyk.org^ -||ssc.azattyq.org^ -||ssc.azatutyun.am^ -||ssc.bellator.com^ -||ssc.benarnews.org^ -||ssc.bet.plus^ -||ssc.budgetair.co.uk^ -||ssc.budgetair.fr^ -||ssc.budgetair.nl^ -||ssc.cc.com^ -||ssc.currenttime.tv^ -||ssc.cvent.com^ -||ssc.dandalinvoa.com^ -||ssc.darivoa.com^ -||ssc.dengeamerika.com^ -||ssc.dengiamerika.com^ -||ssc.disneylandparis.com^ -||ssc.ekhokavkaza.com^ -||ssc.elsaha.com^ -||ssc.europalibera.org^ -||ssc.evropaelire.org^ -||ssc.favetv.com^ -||ssc.glasamerike.net^ -||ssc.golosameriki.com^ -||ssc.hl.co.uk^ -||ssc.holosameryky.com^ -||ssc.idelreal.org^ -||ssc.insidevoa.com^ -||ssc.irfaasawtak.com^ -||ssc.isleofmtv.com^ -||ssc.kavkazr.com^ -||ssc.kcamexico.com^ -||ssc.kidschoiceawards.com^ -||ssc.krymr.com^ -||ssc.logotv.com^ -||ssc.maghrebvoices.com^ -||ssc.martinoticias.com^ -||ssc.mashaalradio.com^ -||ssc.meuspremiosnick.com.br^ -||ssc.mtv.co.uk^ -||ssc.mtv.com.au^ -||ssc.mtv.com.br^ -||ssc.mtv.com^ -||ssc.mtv.de^ -||ssc.mtv.es^ -||ssc.mtv.it^ -||ssc.mtv.nl^ -||ssc.mtvema.com^ -||ssc.mtvi.com^ -||ssc.mtvjapan.com^ -||ssc.mtvla.com^ -||ssc.mtvmama.com^ -||ssc.muji.net^ -||ssc.muji.tw^ -||ssc.mundonick.com.br^ -||ssc.mundonick.com^ -||ssc.newnownext.com^ -||ssc.nick-asia.com^ -||ssc.nick.co.uk^ -||ssc.nick.com.au^ -||ssc.nick.com.pl^ -||ssc.nick.com^ -||ssc.nick.de^ -||ssc.nick.tv^ -||ssc.nickanimation.com^ -||ssc.nickatnite.com^ -||ssc.nickelodeon.be^ -||ssc.nickelodeon.ee^ -||ssc.nickelodeon.es^ -||ssc.nickelodeon.fr^ -||ssc.nickelodeon.gr^ -||ssc.nickelodeon.hu^ -||ssc.nickelodeon.la^ -||ssc.nickelodeon.lt^ -||ssc.nickelodeon.lv^ -||ssc.nickelodeon.nl^ -||ssc.nickelodeon.pt^ -||ssc.nickelodeon.ro^ -||ssc.nickelodeon.se^ -||ssc.nickelodeonafrica.com^ -||ssc.nickelodeonarabia.com^ -||ssc.nickhelps.com^ -||ssc.nickjr.com^ -||ssc.nickourworld.tv^ -||ssc.nicktv.it^ -||ssc.nwf.org^ -||ssc.ozodi.org^ -||ssc.ozodlik.org^ -||ssc.paramountnetwork.com^ -||ssc.pashtovoa.com^ -||ssc.polygraph.info^ -||ssc.radiofarda.com^ -||ssc.radiomarsho.com^ -||ssc.radiosawa.com^ -||ssc.radiosvoboda.org^ -||ssc.radiotavisupleba.ge^ -||ssc.radiotelevisionmarti.com^ -||ssc.radiyoyacuvoa.com^ -||ssc.rfa.org^ -||ssc.rferl.org^ -||ssc.severreal.org^ -||ssc.sibreal.org^ -||ssc.slobodnaevropa.mk^ -||ssc.slobodnaevropa.org^ -||ssc.smithsonianchannel.com^ -||ssc.smithsonianchannellatam.com^ -||ssc.southpark.de^ -||ssc.southpark.lat^ -||ssc.southparkstudios.co.uk^ -||ssc.southparkstudios.com.br^ -||ssc.southparkstudios.com^ -||ssc.southparkstudios.nu^ -||ssc.supertv.it^ -||ssc.svaboda.org^ -||ssc.svoboda.org^ -||ssc.svobodnaevropa.bg^ -||ssc.szabadeuropa.hu^ -||ssc.tvland.com^ -||ssc.urduvoa.com^ -||ssc.usagm.gov^ -||ssc.vh1.com^ -||ssc.vidcon.com^ -||ssc.vliegwinkel.nl^ -||ssc.vmaj.jp^ -||ssc.vmware.com^ -||ssc.voaafaanoromoo.com^ -||ssc.voaafrica.com^ -||ssc.voaafrique.com^ -||ssc.voabambara.com^ -||ssc.voabangla.com^ -||ssc.voacambodia.com^ -||ssc.voacantonese.com^ -||ssc.voachinese.com^ -||ssc.voadeewanews.com^ -||ssc.voahausa.com^ -||ssc.voaindonesia.com^ -||ssc.voakorea.com^ -||ssc.voalingala.com^ -||ssc.voandebele.com^ -||ssc.voanews.com^ -||ssc.voanouvel.com^ -||ssc.voaportugues.com^ -||ssc.voashona.com^ -||ssc.voasomali.com^ -||ssc.voaswahili.com^ -||ssc.voathai.com^ -||ssc.voatibetan.com^ -||ssc.voatiengviet.com^ -||ssc.voaturkce.com^ -||ssc.voazimbabwe.com^ -||ssc.votvot.tv^ -||ssc.vozdeamerica.com^ -||ssc.wa.gto.db.com^ -||ssc.zeriamerikes.com^ -||ssdc.bawag.com^ -||ssdc.easybank.at^ -||ssite.johnlewis-insurance.com^ -||ssite.johnlewis.com^ -||ssite.johnlewisfinance.com^ -||ssite.waitrose.com^ -||ssitecat.eset.com^ -||ssitectlyst.saksfifthavenue.com^ -||ssl-metrics.tim.it^ -||ssl-omtrdc.dmp-support.jp^ -||ssl-omtrdc.zexy.net^ -||ssl.aafp.org^ -||ssl.aafpfoundation.org^ -||ssl.brandlicensing.eu^ -||ssl.citgo.com^ -||ssl.graham-center.org^ -||ssl.licensemag.com^ -||ssl.magiconline.com^ -||ssl.modernmedicine.com^ -||ssl.motorcycleshows.com^ -||ssl.o.additudemag.com^ -||ssl.o.auspost.com.au^ -||ssl.o.coliquio.de^ -||ssl.o.emedicinehealth.com^ -||ssl.o.globalacademycme.com^ -||ssl.o.guidelines.co.uk^ -||ssl.o.guidelinesinpractice.co.uk^ -||ssl.o.jim.fr^ -||ssl.o.mdedge.com^ -||ssl.o.medhelp.org^ -||ssl.o.medicinenet.com^ -||ssl.o.medscape.co.uk^ -||ssl.o.medscape.com^ -||ssl.o.medscape.org^ -||ssl.o.medscapelive.com^ -||ssl.o.medsims.com^ -||ssl.o.onhealth.com^ -||ssl.o.qxmd.com^ -||ssl.o.rxlist.com^ -||ssl.o.the-hospitalist.org^ -||ssl.o.univadis.com^ -||ssl.o.univadis.de^ -||ssl.o.univadis.es^ -||ssl.o.univadis.fr^ -||ssl.o.univadis.it^ -||ssl.o.vitals.com^ -||ssl.o.webmd.com^ -||ssl.o.webmdrx.com^ -||ssl.sciencechannel.com^ -||sslanalytics.sixt.co.uk^ -||sslanalytics.sixt.com^ -||sslanalytics.sixt.de^ -||sslanalytics.sixt.fr^ -||sslanalytics.sixt.it^ -||sslanalytics.sixt.nl^ -||ssldata.thepointsguy.com^ -||sslmetrics.vivint.com^ -||sslomni.canadiantire.ca^ -||sslsc.sanitas.com^ -||sslstats.canadapost-postescanada.ca^ -||sslstats.canadapost.ca^ -||sslstats.deltavacations.com^ -||sslstats.healthydirections.com^ -||sslstats.postescanada-canadapost.ca^ -||sslstats.ssl.postescanada-canadapost.ca^ -||sslstats.worldagentdirect.com^ -||ssmr.nuro.jp^ -||ssmr.so-net.ne.jp^ -||ssmr.sonynetwork.co.jp^ -||ssmr2.so-net.ne.jp^ -||sstat.3pagen.at^ -||sstat.detelefoongids.nl^ -||sstat.gilt.com^ -||sstat.jetsetter.co.uk^ -||sstat.jetsetter.com^ -||sstat.ncl.com^ -||sstat.outrigger.com^ -||sstat.spreadex.com^ -||sstatistikk.telenor.no^ -||sstats.aavacations.com^ -||sstats.adultswim.com^ -||sstats.afco.com^ -||sstats.airfarewatchdog.co.uk^ -||sstats.airfarewatchdog.com^ -||sstats.alfa.com^ -||sstats.alfalaval.com^ -||sstats.alliander.com^ -||sstats.americafirst.com^ -||sstats.arbetarskydd.se^ -||sstats.architecturaldigest.com^ -||sstats.asadventure.com^ -||sstats.asadventure.fr^ -||sstats.asadventure.lu^ -||sstats.asadventure.nl^ -||sstats.atu.at^ -||sstats.auto5.be^ -||sstats.backcountry.com^ -||sstats.bbt.com^ -||sstats.belgiantrain.be^ -||sstats.bever.nl^ -||sstats.bitdefender.com^ -||sstats.bnpparibasfortis.be^ -||sstats.bonappetit.com^ -||sstats.bookhostels.com^ -||sstats.bookingbuddy.co.uk^ -||sstats.bookingbuddy.com^ -||sstats.bookingbuddy.eu^ -||sstats.bridgetrusttitle.com^ -||sstats.build.com^ -||sstats.buycostumes.com^ -||sstats.cafo.com^ -||sstats.cartoonnetwork.com^ -||sstats.celcom.com.my^ -||sstats.checksimple.com^ -||sstats.cimentenligne.com^ -||sstats.cntraveler.com^ -||sstats.competitivecyclist.com^ -||sstats.condenast.com^ -||sstats.cookmedical.com^ -||sstats.coop.dk^ -||sstats.cotswoldoutdoor.com^ -||sstats.cupidandgrace.com^ -||sstats.deloitte.com^ -||sstats.deluxe.com^ -||sstats.dice.com^ -||sstats.dignityhealth.org^ -||sstats.directgeneral.com^ -||sstats.drugstore.com^ -||sstats.ds-pharma.com^ -||sstats.ds-pharma.jp^ -||sstats.economist.com^ -||sstats.emersonecologics.com^ -||sstats.epicurious.com^ -||sstats.estore-tco.com^ -||sstats.extendedstayhotels.com^ -||sstats.fairmont.com^ -||sstats.familyvacationcritic.com^ -||sstats.faucet.com^ -||sstats.fhb.com^ -||sstats.fintro.be^ -||sstats.fishersci.at^ -||sstats.fishersci.be^ -||sstats.fishersci.ca^ -||sstats.fishersci.ch^ -||sstats.fishersci.co.uk^ -||sstats.fishersci.com^ -||sstats.fishersci.de^ -||sstats.fishersci.es^ -||sstats.fishersci.fi^ -||sstats.fishersci.fr^ -||sstats.fishersci.ie^ -||sstats.fishersci.it^ -||sstats.fishersci.nl^ -||sstats.fishersci.no^ -||sstats.fishersci.pt^ -||sstats.fishersci.se^ -||sstats.gaba.co.jp^ -||sstats.gfi.com^ -||sstats.gibson.com^ -||sstats.girls1st.com^ -||sstats.girls1st.dk^ -||sstats.glamour.com^ -||sstats.gohealthinsurance.com^ -||sstats.golfdigest.com^ -||sstats.gourmet.com^ -||sstats.governmentcontractsusa.com^ -||sstats.grandbridge.com^ -||sstats.hannaandersson.com^ -||sstats.harlequin.com^ -||sstats.harrods.com^ -||sstats.hayu.com^ -||sstats.healthcare-sumitomo-pharma.jp^ -||sstats.hellobank.be^ -||sstats.hemtex.com^ -||sstats.hfflp.com^ -||sstats.hickoryfarms.com^ -||sstats.holcim.us^ -||sstats.hostelworld.com^ -||sstats.hostplus.com.au^ -||sstats.incorporate.com^ -||sstats.instawares.com^ -||sstats.investors.com^ -||sstats.iridesse.com^ -||sstats.juttu.be^ -||sstats.kroger.com^ -||sstats.lag-avtal.se^ -||sstats.lfg.com^ -||sstats.liander.nl^ -||sstats.libresse.ee^ -||sstats.libresse.fi^ -||sstats.libresse.hu^ -||sstats.libresse.rs^ -||sstats.lovelibra.com.au^ -||sstats.mcgriff.com^ -||sstats.meijer.com^ -||sstats.mora.jp^ -||sstats.motosport.com^ -||sstats.mt.com^ -||sstats.myafco.com^ -||sstats.myfidm.fidm.edu^ -||sstats.nalgene.com^ -||sstats.nana-maghreb.com^ -||sstats.newworldsreading.com^ -||sstats.newyorker.com^ -||sstats.nikkei.com^ -||sstats.norauto.es^ -||sstats.norauto.fr^ -||sstats.norauto.it^ -||sstats.norauto.pt^ -||sstats.o2extravyhody.cz^ -||sstats.o2family.cz^ -||sstats.o2knihovna.cz^ -||sstats.o2tv.cz^ -||sstats.o2tvsport.cz^ -||sstats.o2videoteka.cz^ -||sstats.o2vyhody.cz^ -||sstats.olivia.com^ -||sstats.omahasteaks.com^ -||sstats.oneilglobaladvisors.com^ -||sstats.onelambda.com^ -||sstats.onetime.com^ -||sstats.ooshop.com^ -||sstats.optionsxpress.com^ -||sstats.oui.sncf^ -||sstats.oyster.com^ -||sstats.paloaltonetworks.com^ -||sstats.paymypremiums.com^ -||sstats.paypal-metrics.com^ -||sstats.pitchfork.com^ -||sstats.portauthorityclothing.com^ -||sstats.postechnologygroup.com^ -||sstats.prevent.se^ -||sstats.primeratepfc.com^ -||sstats.raffles.com^ -||sstats.regionalacceptance.com^ -||sstats.rssc.com^ -||sstats.runnersneed.com^ -||sstats.sanmar.com^ -||sstats.scholastic.com^ -||sstats.seat.ch^ -||sstats.seat.lu^ -||sstats.seat.mx^ -||sstats.seat.pt^ -||sstats.securitas-direct.com^ -||sstats.self.com^ -||sstats.shaneco.com^ -||sstats.simzdarma.cz^ -||sstats.smartertravel.com^ -||sstats.snowandrock.com^ -||sstats.spark.co.nz^ -||sstats.sumitomo-pharma.co.jp^ -||sstats.sumitomo-pharma.com^ -||sstats.sumitomo-pharma.jp^ -||sstats.supply.com^ -||sstats.swissotel.com^ -||sstats.tdameritrade.com^ -||sstats.teenvogue.com^ -||sstats.telenor.se^ -||sstats.tena.ca^ -||sstats.tena.us^ -||sstats.thermofisher.com^ -||sstats.thermoscientific.com^ -||sstats.tiffany.at^ -||sstats.tiffany.ca^ -||sstats.tiffany.co.jp^ -||sstats.tiffany.co.uk^ -||sstats.tiffany.com.au^ -||sstats.tiffany.com^ -||sstats.tiffany.de^ -||sstats.tiffany.es^ -||sstats.tiffany.fr^ -||sstats.tiffany.ie^ -||sstats.tiffany.it^ -||sstats.truist-prd.com^ -||sstats.truist-tst.com^ -||sstats.truist.com^ -||sstats.truistinsurance.com^ -||sstats.truistleadershipinstitute.com^ -||sstats.truistsecurities.com^ -||sstats.uascrubs.com^ -||sstats.upack.com^ -||sstats.vacationclub.com^ -||sstats.vanityfair.com^ -||sstats.vattenfall.nl^ -||sstats.vattenfall.se^ -||sstats.vizergy.com^ -||sstats.vogue.com^ -||sstats.voyages-sncf.com^ -||sstats.wallisfashion.com^ -||sstats.wartsila.com^ -||sstats.webresint.com^ -||sstats.whattopack.com^ -||sstats.williamoneil.com^ -||sstats.wired.com^ -||sstats.wmagazine.com^ -||sstats.www.o2.cz^ -||sstats.yourchi.org^ -||sstats2.allure.com^ -||sstats2.architecturaldigest.com^ -||sstats2.golfdigest.com^ -||sstats2.gq.com^ -||sstats2.newyorker.com^ -||sstatstest.adobe.com^ -||ssuperstats.observepoint.com^ -||sswmetrics.bearskinairlines.com^ -||sswmetrics.firstair.ca^ -||sswmetrics.omanair.com^ -||sswmetrics.philippineairlines.com^ -||sswmetrics.sabre.com^ -||st-nlyss1.plala.or.jp^ -||st.bahn.de^ -||st.bahnhof.de^ -||st.der-kleine-ice.de^ -||st.discover-bavaria.com^ -||st.entdecke-deutschland-bahn.de^ -||st.fahrkartenshop2-bahn.de^ -||st.iceportal.de^ -||st.img-bahn.de^ -||st.mashable.com^ -||st.mazdausa.com^ -||st.newyorklife.com^ -||st.newyorklifeinvestments.com^ -||st.nylannuities.com^ -||st.nylinvestments.com^ -||st.onemazdausa.com^ -||st.s-bahn-muenchen-magazin.de^ -||st.wir-entdecken-bayern.de^ -||starget.aircanada.com^ -||starget.airmiles.ca^ -||starget.bitdefender.com^ -||starget.collegeboard.org^ -||starget.huntington.com^ -||starget.intel.cn^ -||starget.intel.co.jp^ -||starget.intel.co.kr^ -||starget.intel.co.uk^ -||starget.intel.com.br^ -||starget.intel.com.tr^ -||starget.intel.com.tw^ -||starget.intel.com^ -||starget.intel.de^ -||starget.intel.es^ -||starget.intel.fr^ -||starget.intel.in^ -||starget.intel.it^ -||starget.intel.la^ -||starget.intel.pl^ -||starget.intel.ru^ -||starget.ladbrokes.be^ -||starget.mathworks.com^ -||starget.morganstanley.com^ -||starget.nabtrade.com.au^ -||starget.orlandofuntickets.com^ -||starget.panerabread.com^ -||starget.plumbenefits.com^ -||starget.ticketsatwork.com^ -||starget.tv2.dk^ -||starget.uhc.com^ -||starget.vodafone.es^ -||starget.westjet.com^ -||starget.workingadvantage.com^ -||stat-ssl.akiba-souken.com^ -||stat-ssl.autoway.jp^ -||stat-ssl.bushikaku.net^ -||stat-ssl.career-tasu.jp^ -||stat-ssl.cc-rashinban.com^ -||stat-ssl.eiga.com^ -||stat-ssl.fx-rashinban.com^ -||stat-ssl.hitosara.com^ -||stat-ssl.icotto-jp.com^ -||stat-ssl.icotto.jp^ -||stat-ssl.idaten.ne.jp^ -||stat-ssl.idou.me^ -||stat-ssl.jobcube.com^ -||stat-ssl.kaago.com^ -||stat-ssl.kakaku.com^ -||stat-ssl.kakakumag.com^ -||stat-ssl.kinarino-mall.jp^ -||stat-ssl.kinarino.jp^ -||stat-ssl.kyujinbox.com^ -||stat-ssl.money-viva.jp^ -||stat-ssl.pathee.com^ -||stat-ssl.photohito.com^ -||stat-ssl.screeningmaster.jp^ -||stat-ssl.shift-one.jp^ -||stat-ssl.smfg.co.jp^ -||stat-ssl.sumaity.com^ -||stat-ssl.tabelog.com^ -||stat-ssl.tasclap.jp^ -||stat-ssl.teamroom.jp^ -||stat-ssl.tour-list.com^ -||stat-ssl.webcg.net^ -||stat-ssl.xn--pckua2a7gp15o89zb.com^ -||stat.buyersedge.com.au^ -||stat.canal-plus.com^ -||stat.carecredit.com^ -||stat.detelefoongids.nl^ -||stat.gomastercard.com.au^ -||stat.interestfree.com.au^ -||stat.jetsetter.com^ -||stat.kaago.com^ -||stat.kiwibank.co.nz^ -||stat.marshfieldclinic.org^ -||stat.mint.ca^ -||stat.ncl.com^ -||stat.outrigger.com^ -||stat.smbc.co.jp^ -||stat.smfg.co.jp^ -||stat.thegeneral.com^ -||stat.vocus.com^ -||stats-ssl.mdanderson.org^ -||stats.4travel.jp^ -||stats.aapt.com.au^ -||stats.adobe.com^ -||stats.adultswim.com^ -||stats.agl.com.au^ -||stats.airfarewatchdog.co.uk^ -||stats.airfarewatchdog.com^ -||stats.americafirst.com^ -||stats.apachecorp.com^ -||stats.aplaceformom.com^ -||stats.asadventure.nl^ -||stats.bankofthewest.com^ -||stats.bever.nl^ -||stats.bildconnect.de^ -||stats.bitdefender.com^ -||stats.blacksim.de^ -||stats.bookingbuddy.co.uk^ -||stats.bookingbuddy.com^ -||stats.bookingbuddy.eu^ -||stats.cafepress.com^ -||stats.canadapost-postescanada.ca^ -||stats.canadapost.ca^ -||stats.carecredit.com^ -||stats.cartoonnetwork.com^ -||stats.celcom.com.my^ -||stats.commonspirit.org^ -||stats.coop.dk^ -||stats.cruisingpower.com^ -||stats.cybersim.de^ -||stats.datamanie.cz^ -||stats.deloitte.com^ -||stats.deutschlandsim.de^ -||stats.dice.com^ -||stats.drillisch-online.de^ -||stats.economist.com^ -||stats.ellos.dk^ -||stats.exploratv.ca^ -||stats.extendedstayamerica.com^ -||stats.falck.dk^ -||stats.familyvacationcritic.com^ -||stats.fhb.com^ -||stats.firstmarkcu.org^ -||stats.fishersci.at^ -||stats.fishersci.com^ -||stats.fishersci.de^ -||stats.fishersci.it^ -||stats.franklincovey.com^ -||stats.getty.edu^ -||stats.gfi.com^ -||stats.gibson.com^ -||stats.guycarp.com^ -||stats.handyvertrag.de^ -||stats.hannaandersson.com^ -||stats.harrods.com^ -||stats.hayu.com^ -||stats.healthydirections.com^ -||stats.his-j.com^ -||stats.honeywell.com^ -||stats.iata.org^ -||stats.icimusique.ca^ -||stats.instawares.com^ -||stats.interestfree.com.au^ -||stats.jetzt-aktivieren.de^ -||stats.juttu.be^ -||stats.kroger.com^ -||stats.lag-avtal.se^ -||stats.leasy.dk^ -||stats.lumension.com^ -||stats.m2m-mobil.de^ -||stats.marshfieldclinic.org^ -||stats.marshfieldresearch.org^ -||stats.maxxim.de^ -||stats.mcgriff.com^ -||stats.mdanderson.org^ -||stats.meijer.com^ -||stats.merx.com^ -||stats.mint.ca^ -||stats.mt.com^ -||stats.nortonhealthcare.com^ -||stats.nyteknik.se^ -||stats.o2extravyhody.cz^ -||stats.omahasteaks.com^ -||stats.onetime.com^ -||stats.organizeit.com^ -||stats.oui.sncf^ -||stats.oyster.com^ -||stats.pacificdentalservices.com^ -||stats.postescanada-canadapost.ca^ -||stats.postescanada.ca^ -||stats.premiumsim.de^ -||stats.radio-canada.ca^ -||stats.radley.co.uk^ -||stats.radleylondon.com^ -||stats.rcinet.ca^ -||stats.refurbished-handys.de^ -||stats.rs-online.com^ -||stats.russellstover.com^ -||stats.safeway.com^ -||stats.seat.be^ -||stats.seat.es^ -||stats.seat.fr^ -||stats.seat.ie^ -||stats.seat.pt^ -||stats.sfwmd.gov^ -||stats.sim.de^ -||stats.sim24.de^ -||stats.simplytel.de^ -||stats.simzdarma.cz^ -||stats.smartdestinations.com^ -||stats.smartmobil.de^ -||stats.southernphone.com.au^ -||stats.spark.co.nz^ -||stats.steepandcheap.com^ -||stats.swissotel.com^ -||stats.tdameritrade.com^ -||stats.te.com^ -||stats.telenor.se^ -||stats.tennistalk.com^ -||stats.tfl.gov.uk^ -||stats.thegeneral.com^ -||stats.thermofisher.com^ -||stats.tiffany.ie^ -||stats.tnt.com^ -||stats.tou.tv^ -||stats.tradingacademy.com^ -||stats.truist.com^ -||stats.uticorp.com^ -||stats.vacationclub.com^ -||stats.vattenfall.nl^ -||stats.vattenfall.se^ -||stats.voyages-sncf.com^ -||stats.vulture.com^ -||stats.wallisfashion.com^ -||stats.wartsila.com^ -||stats.wartsila.net^ -||stats.whattopack.com^ -||stats.winsim.de^ -||stats.wired.com^ -||stats.wisconsingenomics.org^ -||stats.www.o2.cz^ -||stats.xactware.com^ -||stats.yourfone.de^ -||stats2.architecturaldigest.com^ -||stats2.bonappetit.com^ -||stats2.cntraveler.com^ -||stats2.golfdigest.com^ -||stats2.newyorker.com^ -||stats2.self.com^ -||stats2.wmagazine.com^ -||statse-omtrdc.deka.de^ -||statse.deka-etf.de^ -||statss.smartdestinations.com^ -||stbg.bankonline.sboff.com^ -||stbg.looksee.co.za^ -||stbg.sbgsecurities.co.ke^ -||stbg.stanbic.co.ug^ -||stbg.stanbicbank.co.bw^ -||stbg.stanbicbank.co.ke^ -||stbg.stanbicbank.co.tz^ -||stbg.stanbicbank.co.ug^ -||stbg.stanbicbank.co.zm^ -||stbg.stanbicbank.co.zw^ -||stbg.stanbicbank.com.gh^ -||stbg.stanbicibtccapital.com^ -||stbg.stanbicibtcinsurancebrokers.com^ -||stbg.stanbicibtcnominees.com^ -||stbg.stanbicibtctrustees.com^ -||stbg.standardbank.cd^ -||stbg.standardbank.co.ao^ -||stbg.standardbank.co.mw^ -||stbg.standardbank.co.mz^ -||stbg.standardbank.co.sz^ -||stbg.standardbank.co.za^ -||stbg.standardbank.com.na^ -||stbg.standardbank.com^ -||stbg.standardbank.mu^ -||stbg.standardlesothobank.co.ls^ -||std.o.globalacademycme.com^ -||std.o.medicinenet.com^ -||std.o.medscape.com^ -||std.o.rxlist.com^ -||std.o.webmd.com^ -||stel.telegraaf.nl^ -||stereos2.crutchfield.com^ -||stereos2s.crutchfield.ca^ -||stereos2s.crutchfield.com^ -||sticketsmetrics.masters.com^ -||stmetrics.bbva.com.ar^ -||stmetrics.bbva.com.co^ -||stmetrics.bbva.es^ -||stmetrics.bbva.it^ -||stmetrics.bbva.mx^ -||stmetrics.bbva.pe^ -||stms.53.com^ -||stms.newline53.com^ -||stnt.express-scripts.com^ -||stnt.sky.at^ -||stnt.sky.de^ -||str.foodnetwork.ca^ -||str.globalnews.ca^ -||str2-bbyca-track.bestbuy.com^ -||str2-fsca-track.bestbuy.com^ -||strack.aetna.com^ -||strack.aetnabetterhealth.com^ -||strack.allianz.at^ -||strack.allianz.ch^ -||strack.apps.allianzworldwidecare.com^ -||strack.bestbuy.ca^ -||strack.cap.ch^ -||strack.collegeboard.com^ -||strack.collegeboard.org^ -||strack.community.concur.com^ -||strack.concur.ae^ -||strack.concur.ca^ -||strack.concur.com.sg^ -||strack.concur.com^ -||strack.concur.tw^ -||strack.elvia.ch^ -||strack.englandstore.com^ -||strack.entegris.com^ -||strack.evertondirect.evertonfc.com^ -||strack.f1store.formula1.com^ -||strack.fanatics-intl.com^ -||strack.freedommobile.ca^ -||strack.futureshop.ca^ -||strack.go.concur.com^ -||strack.manjiro.net^ -||strack.mentor.com^ -||strack.mercycareaz.org^ -||strack.onemarketinguxp.com^ -||strack.shaw.ca^ -||strack.shawdirect.ca^ -||strack.shawmobile.ca^ -||strack.softbankhawksstore.jp^ -||strack.store.manutd.com^ -||strack.sw.siemens.com^ -||strack.tarif.allianz.ch^ -||strack.www.allianzcare-corporate.com^ -||strack.www.allianzcare.com^ -||stracking.kyobo.co.kr^ -||stracking.myomee.com^ -||stracking.rogers.com^ -||stracking.trutv.com^ -||strackingvanrental.vanrental.de^ -||stscs.ditzo.nl^ -||stt.bupa.com.au^ -||stt.cpaaustralia.com.au^ -||stt.deakin.edu.au^ -||stt.dell.com^ -||stt.keno.com.au^ -||stt.nvidia.com^ -||stt.pluralsight.com^ -||stt.tab.com.au^ -||stt.thelott.com^ -||stt.tyro.com^ -||styles.hautelook.com^ -||subscription.mktg.nfl.com^ -||subscriptions.costco.ca^ -||subscriptions.costco.com^ -||subscriptions.e.silverfernfarms.com^ -||subscriptions.outbound.luxair.lu^ -||sucmetrics.hypovereinsbank.de^ -||sucmetrics.unicredit.de^ -||sucmetrics.unicredit.it^ -||sucmetrics.unicreditbanca.it^ -||sucmetrics.unicreditgroup.eu^ -||sud.holidayinsider.com^ -||sud.holidays.hrs.de^ -||suncanny.marvel.com^ -||suncanny.marvelhq.com^ -||superstats.observepoint.com^ -||sut.dailyfx.com^ -||sut.iggroup.com^ -||sw88.24kitchen.bg^ -||sw88.24kitchen.com.hr^ -||sw88.24kitchen.com.tr^ -||sw88.24kitchen.nl^ -||sw88.24kitchen.pt^ -||sw88.24kitchen.rs^ -||sw88.24kitchen.si^ -||sw88.abc.com^ -||sw88.cinemapp.com^ -||sw88.disney.be^ -||sw88.disney.bg^ -||sw88.disney.co.il^ -||sw88.disney.co.jp^ -||sw88.disney.co.za^ -||sw88.disney.com.au^ -||sw88.disney.cz^ -||sw88.disney.de^ -||sw88.disney.fi^ -||sw88.disney.hu^ -||sw88.disney.pl^ -||sw88.disney.pt^ -||sw88.disney.se^ -||sw88.disneymagicmoments.co.uk^ -||sw88.disneymagicmoments.co.za^ -||sw88.disneymagicmoments.de^ -||sw88.disneymagicmoments.fr^ -||sw88.disneynow.com^ -||sw88.disneyonstage.co.uk^ -||sw88.disneyoutlet.co.uk^ -||sw88.disneyrewards.com^ -||sw88.disneystore.co.uk^ -||sw88.disneystore.de^ -||sw88.disneystore.es^ -||sw88.disneystore.eu^ -||sw88.disneystore.fr^ -||sw88.disneystore.it^ -||sw88.disneytickets.co.uk^ -||sw88.espn.co.uk^ -||sw88.espn.com.co^ -||sw88.espn.com^ -||sw88.espnmanofthematch.nl^ -||sw88.espnplayer.com^ -||sw88.freeform.com^ -||sw88.fxchannel.pl^ -||sw88.fxnetworks.com^ -||sw88.fxturkiye.com.tr^ -||sw88.go.com^ -||sw88.lionkingeducation.co.uk^ -||sw88.natgeotv.com^ -||sw88.nationalgeographic.com^ -||sw88.nationalgeographic.de^ -||sw88.nationalgeographic.es^ -||sw88.nationalgeographic.fr^ -||sw88.nationalgeographicbrasil.com^ -||sw88.nationalgeographicla.com^ -||sw88.shopdisney.asia^ -||sw88.shopdisney.co.uk^ -||sw88.shopdisney.es^ -||sw88.shopdisney.eu^ -||sw88.starchannel-bg.com^ -||sw88.starchannel-hr.com^ -||sw88.starchannel-rs.com^ -||sw88.starchannel.be^ -||sw88.starchannel.nl^ -||sw88.thewaltdisneycompany.eu^ -||swa.asnbank.nl^ -||swa.b2cjewels.com^ -||swa.blgwonen.nl^ -||swa.bol.com^ -||swa.castorama.fr^ -||swa.consumentenbond.nl^ -||swa.devolksbank.nl^ -||swa.energiedirect.nl^ -||swa.eonline.com^ -||swa.essent.nl^ -||swa.gifts.com^ -||swa.localworld.co.uk^ -||swa.millesima.co.uk^ -||swa.millesima.com.hk^ -||swa.millesima.com^ -||swa.millesima.it^ -||swa.monabanq.com^ -||swa.nexive.it^ -||swa.onlineverzendservice.be^ -||swa.personalcreations.com^ -||swa.postnl.nl^ -||swa.regiobank.nl^ -||swa.snsbank.nl^ -||swa.st.com^ -||swa.t-mobile.nl^ -||swa.tjmaxx.tjx.com^ -||swa.vodafone.cz^ -||swa.vodafone.pt^ -||swa.wowcher.co.uk^ -||swasc.homedepot.ca^ -||swasc.homedepot.com^ -||swasc.kaufland.bg^ -||swasc.kaufland.com^ -||swasc.kaufland.cz^ -||swasc.kaufland.de^ -||swasc.kaufland.hr^ -||swasc.kaufland.md^ -||swasc.kaufland.pl^ -||swasc.kaufland.ro^ -||swasc.kaufland.sk^ -||swasc.thecompanystore.com^ -||sweb.ulta.com^ -||swebanalytics.acs.org^ -||swebanalytics.degulesider.dk^ -||swebanalytics.eniro.se^ -||swebanalytics.gulesider.no^ -||swebanalytics.krak.dk^ -||swebanalytics.panoramafirm.pl^ -||swebanalytics.pgatour.com^ -||swebanalytics.proff.no^ -||swebmetrics.avaya.com^ -||swebmetrics.ok.gov^ -||swebmetrics.oklahoma.gov^ -||swebmetrics.zebra.com^ -||swebreports.nature.org^ -||swebstats.americanbar.org^ -||swebstats.imf.org^ -||swebstats.us.aimia.com^ -||swebtraffic.executiveboard.com^ -||sxp.allianz.de^ -||t-s.actemra.com^ -||t-s.activase.com^ -||t-s.allergicasthma.com^ -||t-s.avastin-hcp.com^ -||t-s.avastin.com^ -||t-s.biooncology.com^ -||t-s.cellcept.com^ -||t-s.erivedge.com^ -||t-s.flufacts.com^ -||t-s.fuzeon.com^ -||t-s.gazyva.com^ -||t-s.gene.com^ -||t-s.genentech-access.com^ -||t-s.gpa-mpaclinical.com^ -||t-s.herceptin.com^ -||t-s.kadcyla.com^ -||t-s.kytril.com^ -||t-s.lucentis.com^ -||t-s.lucentisdirect.com^ -||t-s.lyticportfolio.com^ -||t-s.msimmunology.com^ -||t-s.perjeta.com^ -||t-s.revealvirology.com^ -||t-s.rheumatoidarthritis.com^ -||t-s.rituxan.com^ -||t-s.strokeawareness.com^ -||t-s.tamiflu.com^ -||t-s.tnkase.com^ -||t-s.transplantaccessservices.com^ -||t-s.valcyte.com^ -||t-s.xolairhcp.com^ -||t-s.xpansions.com^ -||t-s.zelboraf.com^ -||t.10er-tagesticket.de^ -||t.actemra.com^ -||t.avastin-hcp.com^ -||t.avastin.com^ -||t.bahn-mietwagen.de^ -||t.bahn.de^ -||t.biooncology.com^ -||t.cathflo.com^ -||t.cellcept.com^ -||t.db-gruppen.de^ -||t.emusic.com^ -||t.erivedge.com^ -||t.fuzeon.com^ -||t.gazyva.com^ -||t.gene.com^ -||t.genentech-access.com^ -||t.herceptin.com^ -||t.kadcyla.com^ -||t.lucentis.com^ -||t.lucentisdirect.com^ -||t.mazdausa.com^ -||t.msz-bahn.de^ -||t.nordea.com^ -||t.nordea.dk^ -||t.nordea.fi^ -||t.nordea.no^ -||t.nordea.se^ -||t.nylinvestments.com^ -||t.pandemictoolkit.com^ -||t.perjeta.com^ -||t.popsugar.com^ -||t.rail-and-drive.de^ -||t.rheumatoidarthritis.com^ -||t.rituxan.com^ -||t.strokeawareness.com^ -||t.tamiflu.com^ -||t.tarceva.com^ -||t.tnkase.com^ -||t.transplantaccessservices.com^ -||t.valcyte.com^ -||t.veranstaltungsticket-bahn.de^ -||t.xolairhcp.com^ -||t3e.firstchoice.co.uk^ -||t4e.sainsburys.co.uk^ -||ta.taxslayer.com^ -||tags.esri.ca^ -||tags.esri.com^ -||tags.esri.rw^ -||tags.igeo.com.bo^ -||target-omtrdc.deka.de^ -||target-test.cisco.com^ -||target.abanca.com^ -||target.accenture.com^ -||target.acpny.com^ -||target.afrique.pwc.com^ -||target.aia.co.kr^ -||target.aiavitality.co.kr^ -||target.alfaromeousa.com^ -||target.allianz.at^ -||target.allianz.ch^ -||target.amica.com^ -||target.ansys.com^ -||target.arcobusinesssolutions.com^ -||target.audifinancialservices.nl^ -||target.auspost.com.au^ -||target.bankofamerica.com^ -||target.bankwest.com.au^ -||target.base.be^ -||target.bcbsnd.com^ -||target.belairdirect.com^ -||target.bose.com^ -||target.bpbusinesssolutions.com^ -||target.breadfinancial.com^ -||target.bws.com.au^ -||target.caixabank.es^ -||target.cap.ch^ -||target.carrieres.pwc.fr^ -||target.caseys.com^ -||target.centerpointenergy.com^ -||target.champssports.ca^ -||target.champssports.com^ -||target.changehealthcare.com^ -||target.chase.com^ -||target.chrysler.com^ -||target.cisco.com^ -||target.claris.com^ -||target.comcast.com^ -||target.comdata.com^ -||target.commonspirit.org^ -||target.connecticare.com^ -||target.cox.com^ -||target.danmurphys.com.au^ -||target.dodge.com^ -||target.dzbank.de^ -||target.eastbay.com^ -||target.eaton.com^ -||target.edb.gov.sg^ -||target.element14.com^ -||target.elvia.ch^ -||target.emblemhealth.com^ -||target.eon.de^ -||target.ey.com^ -||target.farnell.com^ -||target.fiatusa.com^ -||target.firestonebpco.com^ -||target.fleetcardsusa.com^ -||target.footlocker.at^ -||target.footlocker.be^ -||target.footlocker.ca^ -||target.footlocker.co.uk^ -||target.footlocker.com.au^ -||target.footlocker.com^ -||target.footlocker.cz^ -||target.footlocker.de^ -||target.footlocker.dk^ -||target.footlocker.es^ -||target.footlocker.fr^ -||target.footlocker.gr^ -||target.footlocker.hu^ -||target.footlocker.ie^ -||target.footlocker.it^ -||target.footlocker.lu^ -||target.footlocker.nl^ -||target.footlocker.no^ -||target.footlocker.pl^ -||target.footlocker.pt^ -||target.footlocker.se^ -||target.fuelman.com^ -||target.galicia.ar^ -||target.groupama.fr^ -||target.gsghukuk.com^ -||target.healthengine.com.au^ -||target.helsana.ch^ -||target.hostech.co.uk^ -||target.hsn.com^ -||target.hyundaiusa.com^ -||target.ihg.com^ -||target.intact.ca^ -||target.investors.com^ -||target.jeep.com^ -||target.jwatch.org^ -||target.key.com^ -||target.kidsfootlocker.com^ -||target.kwiktripfleet.com^ -||target.letsgofrance.pwc.fr^ -||target.maxxia.com.au^ -||target.miaprova.com^ -||target.michaels.com^ -||target.microchip.com^ -||target.microsoft.com^ -||target.monaco.pwc.fr^ -||target.mtu-solutions.com^ -||target.myhealthtoolkit.com^ -||target.navenegocios.com^ -||target.netapp.com^ -||target.newark.com^ -||target.nflextrapoints.com^ -||target.nfm.com^ -||target.ni.com^ -||target.nrma.com.au^ -||target.onemarketinguxp.com^ -||target.onlinebanking.bancogalicia.com.ar^ -||target.openbank.de^ -||target.openbank.es^ -||target.openbank.nl^ -||target.openbank.pt^ -||target.owenscorning.com^ -||target.pandasecurity.com^ -||target.powertracagri.com^ -||target.prd.base.be^ -||target.prd.telenet.be^ -||target.premierinn.com^ -||target.publicissapient.com^ -||target.pwc-tls.it^ -||target.pwc.at^ -||target.pwc.be^ -||target.pwc.ch^ -||target.pwc.co.uk^ -||target.pwc.co.za^ -||target.pwc.com.ar^ -||target.pwc.com.au^ -||target.pwc.com.cy^ -||target.pwc.com.tr^ -||target.pwc.com.uy^ -||target.pwc.com^ -||target.pwc.dk^ -||target.pwc.es^ -||target.pwc.fr^ -||target.pwc.ie^ -||target.pwc.in^ -||target.pwc.is^ -||target.pwc.lu^ -||target.pwc.nl^ -||target.pwc.no^ -||target.pwc.pl^ -||target.pwc.pt^ -||target.pwc.ro^ -||target.pwc.rs^ -||target.pwc.tw^ -||target.pwcalgerie.pwc.fr^ -||target.pwcavocats.com^ -||target.pwclegal.lu^ -||target.pwcmaroc.pwc.fr^ -||target.questdiagnostics.com^ -||target.questrade.com^ -||target.qvc.com^ -||target.qvc.de^ -||target.qvcuk.com^ -||target.ram.com^ -||target.ramtrucks.com^ -||target.retail-week.com^ -||target.roger.ai^ -||target.sanitas.com^ -||target.securemaxxia.com.au^ -||target.sgproof.com^ -||target.sharkgaming.dk^ -||target.sharkgaming.no^ -||target.sharkgaming.se^ -||target.simulationworld.com^ -||target.sivasdescalzo.com^ -||target.skodafinancialservices.nl^ -||target.southernglazers.com^ -||target.spectrum.com^ -||target.sportsmansguide.com^ -||target.stanfordchildrens.org^ -||target.strategyand.pwc.com^ -||target.sunlife.ca^ -||target.sunlife.co.id^ -||target.sunlife.com.hk^ -||target.sunlife.com.ph^ -||target.sunlife.com.vn^ -||target.sunlife.com^ -||target.sunlifeglobalinvestments.com^ -||target.superfleet.net^ -||target.swinburne.edu.au^ -||target.synergy.net.au^ -||target.tataaia.com^ -||target.telenet.be^ -||target.theconvenienceawards.com^ -||target.thegrocer.co.uk^ -||target.thetruth.com^ -||target.theworlds50best.com^ -||target.totalwine.com^ -||target.toyota.com^ -||target.troweprice.com^ -||target.tsc.ca^ -||target.tunisie.pwc.fr^ -||target.ultramarfleet.ca^ -||target.veeam.com^ -||target.visitsingapore.com^ -||target.vodafone.es^ -||target.volkswagenfinancialservices.nl^ -||target.vudu.com^ -||target.vwfs.co.uk^ -||target.vwfs.com^ -||target.vwfs.cz^ -||target.vwfs.de^ -||target.vwfs.es^ -||target.vwfs.fr^ -||target.vwfs.gr^ -||target.vwfs.ie^ -||target.vwfs.it^ -||target.vwfs.mx^ -||target.vwfs.pl^ -||target.vwfs.pt^ -||target.walgreens.com^ -||target.wedenik.com^ -||target.westjet.com^ -||target.wsec06.bancogalicia.com.ar^ -||target.xfinity.com^ -||target.zeiss.com^ -||target.zeiss.de^ -||target.zinia.com^ -||targetab.metrobyt-mobile.com^ -||targetlr.adobe.com^ -||targetsecure.kohler.com^ -||targetsoc.spela.svenskaspel.se^ -||targettur.www.svenskaspel.se^ -||tdor-smetrics.td.com^ -||tel.telegraaf.nl^ -||telemetry.boxt.co.uk^ -||telemetry.chrobinson.com^ -||telemetry.commonspirit.org^ -||telemetry.dematic.com^ -||telemetry.marketscope.com^ -||telemetry.moveworks.com^ -||telemetry.navispherecarrier.com^ -||telemetry.owenscorning.com^ -||telemetry.ruthschris.com^ -||telemetry.stryker.com^ -||telemetry.webasto.com^ -||tenilstats.turner.com^ -||test-landing-page-122122.email-disney.cjm.adobe.com^ -||test-landing-page.a.news.aida.de^ -||testtarget.jeep.com^ -||tidy.intel.cn^ -||tidy.intel.co.jp^ -||tidy.intel.co.kr^ -||tidy.intel.com.br^ -||tidy.intel.com.tw^ -||tidy.intel.com^ -||tidy.intel.de^ -||tidy.intel.fr^ -||tidy.intel.in^ -||tidy.intel.la^ -||tmetrics.hdfcbank.com^ -||tmetrics.webex.com^ -||tms.53.com^ -||tnt.yemeksepeti.com^ -||toolboxadobe.inter-ikea.com^ -||tr1.kaspersky.ca^ -||tr1.kaspersky.com.tr^ -||tr1.kaspersky.com^ -||tr1.kaspersky.es^ -||tr1.kaspersky.ru^ -||tr2.kaspersky.co.uk^ -||tr2.kaspersky.com^ -||tr2.kaspersky.ru^ -||track.bestbuy.ca^ -||track.collegeboard.org^ -||track.concur.ca^ -||track.concur.com.au^ -||track.concur.com.sg^ -||track.concur.com^ -||track.evertondirect.evertonfc.com^ -||track.f1store.formula1.com^ -||track.inews.co.uk^ -||track.mentor.com^ -||track.nbastore.com.au^ -||track.nbastore.la^ -||track.nbastore.mn^ -||track.reservationcounter.com^ -||track.shop.atleticodemadrid.com^ -||tracker-aa.paf.es^ -||tracker-aa.pafbetscore.lv^ -||tracking-secure.csob.cz^ -||tracking.c.mercedes-benz.co.in^ -||tracking.c.mercedes-benz.com.cn^ -||tracking.c.mercedes-benz.de^ -||tracking.csob.cz^ -||tracking.cspire.com^ -||tracking.dailyglow.com^ -||tracking.lg.com^ -||tracking.m.mercedes-benz.ch^ -||tracking.m.mercedes-benz.co.in^ -||tracking.m.mercedes-benz.co.za^ -||tracking.m.mercedes-benz.com.cn^ -||tracking.m.mercedes-benz.com.sg^ -||tracking.m.mercedes-benz.ru^ -||tracking.mb.mercedes-benz.com^ -||tracking.omniture.nt.se^ -||tracking.redbutton.de^ -||tracking.rogers.com^ -||tracking.socialpublish.mercedes-benz.com^ -||tracking.t.mercedes-benz.co.in^ -||tracking.t.mercedes-benz.com.cn^ -||tracking.t.mercedes-benz.de^ -||tracking.techcenter.mercedes-benz.com^ -||tracking.trutv.com^ -||tracking.www5.mercedes-benz.com^ -||trackingaa.hitachienergy.com^ -||trackingssl.agemployeebenefits.be^ -||trackingssl.aginsurance.be^ -||trackingssl.drysolutions.be^ -||trackingssl.homeras.be^ -||trackingssl.vivay-broker.be^ -||trackingssl.yongo.be^ -||transit.ncsecu.org^ -||trg.bosch-home.es^ -||trk.chegg.com^ -||ts.popsugar.com^ -||tsa.taxslayer.com^ -||tt.natwest.com^ -||tt.pluralsight.com^ -||tt.rbs.co.uk^ -||tt.rbs.com^ -||tt.sj.se^ -||tt.ubs.com^ -||tt.ulsterbank.co.uk^ -||tt.ulsterbank.ie^ -||ttarget.eastwestbank.com^ -||ttmetrics.faz.net^ -||ttmetrics.jcpenney.com^ -||ucmetrics.hypovereinsbank.de^ -||ucmetrics.unicredit.it^ -||ucmetrics.unicreditbanca.it^ -||ucmetrics.unicreditgroup.eu^ -||ues.kicker.de^ -||ukg6sq48dy4zd6gn.edge41.testandtarget.omniture.com^ -||uncanny.marvel.com^ -||uncanny.marvelkids.com^ -||unsubscribe.e.silverfernfarms.com^ -||unsubscribe.email.verizon.com^ -||unsubscribe.promo.timhortons.ca^ -||ut.dailyfx.com^ -||ut.iggroup.com^ -||ut.upmc.com^ -||value.register.com^ -||vdmwntw1of9t8xgd.edge41.testandtarget.omniture.com^ -||visit.asb.co.nz^ -||visitor.novartisoncology.us^ -||visualscience.external.bbc.co.uk^ -||vs.target.com^ -||w.smobile.wotif.com^ -||w88.abc.com^ -||w88.disneynow.com^ -||w88.espn.com^ -||w88.go.com^ -||w88.m.espn.go.com^ -||w88.natgeo.pt^ -||w88.natgeotv.com^ -||w88.nationalgeographic.com^ -||wa.and.co.uk^ -||wa.baltimoreravens.com^ -||wa.bol.com^ -||wa.castorama.fr^ -||wa.dailymail.co.uk^ -||wa.devolksbank.nl^ -||wa.epson.com^ -||wa.gifts.com^ -||wa.localworld.co.uk^ -||wa.ncr.com^ -||wa.nxp.com^ -||wa.personalcreations.com^ -||wa.postnl.nl^ -||wa.spring-gds.com^ -||wa.st.com^ -||wa.stubhub.com^ -||wa.t-mobile.nl^ -||wa.vodafone.cz^ -||wa.vodafone.de^ -||wa.vodafone.pt^ -||wa1.otto.de^ -||was.epson.com^ -||was.stubhub.com^ -||was.vodafone.de^ -||was.vodafone.nl^ -||wasc.homedepot.ca^ -||wasc.homedepot.com^ -||wasc.kaufland.ro^ -||wass.ihsmarkit.com^ -||wass.spglobal.com^ -||wat.gogoinflight.com^ -||wats.gogoinflight.com^ -||web.ajostg.cfs.com.au^ -||web.ajostg.colonialfirststate.com.au^ -||web.campaign.cfs.com.au^ -||web.campaigns.colonialfirststate.com.au^ -||web.e.lotteryoffice.com.au^ -||web.hammacher.com^ -||web.m.hurricanes.co.nz^ -||web.ulta.com^ -||webanalytics.astrogaming.com^ -||webanalytics.degulesider.dk^ -||webanalytics.eniro.se^ -||webanalytics.gulesider.no^ -||webanalytics.logicool.co.jp^ -||webanalytics.logitech.com.cn^ -||webanalytics.logitech.com^ -||webanalytics.logitechg.com.cn^ -||webanalytics.logitechg.com^ -||webanalytics.proff.no^ -||webanalyticsssl.websense.com^ -||webapp.e-post.smn.no^ -||webmetrics.avaya.com^ -||webmetrics.perkinelmer.com^ -||webmetrics.turnwrench.com^ -||webmetrics.zebra.com^ -||webs.hammacher.com^ -||websdkmetrics.blackrock.com^ -||webstat.4music.com^ -||webstat.garanti.com.tr^ -||webstat.vodafone.com^ -||webstats.americanbar.org^ -||webstats.cbre.com^ -||webstats.channel4.com^ -||webstats.imf.org^ -||webstats.kronos.com^ -||webstats.vfsco.com^ -||webstats.vodafone.com^ -||webstats.volvoce.com^ -||webstats.volvoit.com^ -||webtarget.astrogaming.com^ -||webtarget.logicool.co.jp^ -||webtarget.logitech.com.cn^ -||webtarget.logitech.com^ -||webtarget.logitechg.com.cn^ -||webtarget.logitechg.com^ -||webtraffic.executiveboard.com^ -||webtraffic.mastercontrol.com^ -||worldmtcs.nhk.jp^ -||ww0s.airtours.de^ -||ww0s.robinson.com^ -||ww0s.tui.com^ -||ww8.kohls.com^ -||ww9.kohls.com^ -||wwu.jjill.com^ -||wwv.jjill.com^ -||www-171.aig.com^ -||www-172.aig.com^ -||www-sadobe.384.co.jp^ -||www-sadobe.anabuki-community.com^ -||www-sadobe.anabuki.co.jp^ -||www-smt.daiichisankyo-hc.co.jp^ -||www.metrics.argos.co.uk^ -||www.metrics.bankaustria.at^ -||www.notice.assurancewireless.com^ -||www.notice.metrobyt-mobile.com^ -||www.notice.t-mobile.com^ -||www.smetrics.argos.co.uk^ -||www.smetrics.imedeen.us^ -||www.sstats.bnpparibasfortis.be^ -||www.sstats.hellobank.be^ -||www1.discountautomirrors.com^ -||www15.jedora.com^ -||www15.jtv.com^ -||www16.jtv.com^ -||www2.automd.com^ -||www2.autopartsplace.com^ -||www2.autopartsworld.com^ -||www2.discountairintake.com^ -||www2.discountautomirrors.com^ -||www2.discountbodyparts.com^ -||www2.discountbrakes.com^ -||www2.discountcarlights.com^ -||www2.extraspace.com^ -||www2.usautoparts.net^ -||www2s.automd.com^ -||www2s.autopartsgiant.com^ -||www2s.autopartswarehouse.com^ -||www2s.canadapartsonline.com^ -||www2s.carjunky.com^ -||www2s.discountautoshocks.com^ -||www2s.discountcatalyticconverters.com^ -||www2s.discountexhaustsystems.com^ -||www2s.discountfuelsystems.com^ -||www2s.extraspace.com^ -||www2s.speedyperformanceparts.com^ -||www2s.storage.com^ -||www2s.thepartsbin.com^ -||www2s.usautoparts.net^ -||www3.gfa.org^ -||www3s.bimmerpartswholesale.com^ -||www3s.ing.be^ -||www3s.pitstopautoparts.com^ -||www4s.ing.be^ -||www91.intel.co.jp^ -||www91.intel.co.kr^ -||www91.intel.co.uk^ -||www91.intel.com.br^ -||www91.intel.com.tr^ -||www91.intel.com.tw^ -||www91.intel.com^ -||www91.intel.de^ -||www91.intel.es^ -||www91.intel.fr^ -||www91.intel.in^ -||www91.intel.la^ -||www91.intel.pl^ -||wwwmetricssl.visitflorida.com^ -||x.timesunion.com^ -||xp.allianz.de^ -||xps.huk.de^ -||xps.huk24.de^ -||zisr3w3i2csfa76m.edge41.testandtarget.omniture.com^ -||zmetrics.boston.com^ -||zmetrics.msn.com^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_acton.txt *** -||12build.actonservice.com^ -||23andme.actonservice.com^ -||3347.wolf-gordon.com^ -||3347.wolfgordon.com^ -||3dm.3dimensional.com^ -||3mark.actonservice.com^ -||3plworldwide.actonservice.com^ -||a.evergage.com^ -||a.highroadsolution.com^ -||a10053.actonservice.com^ -||a10555.actonservice.com^ -||a10640.actonservice.com^ -||a10641.actonservice.com^ -||a10645.actonservice.com^ -||a10647.actonservice.com^ -||a10655.actonservice.com^ -||a10674.actonservice.com^ -||a10683.actonservice.com^ -||a10695.actonservice.com^ -||a10696.actonservice.com^ -||a10748.actonservice.com^ -||a11058.actonservice.com^ -||a11107.actonservice.com^ -||a11114.actonservice.com^ -||a11143.actonservice.com^ -||a11159.actonservice.com^ -||a11161.actonservice.com^ -||a11176.actonservice.com^ -||a11178.actonservice.com^ -||a11198.actonservice.com^ -||a11211.actonservice.com^ -||a11212.actonservice.com^ -||a11248.actonservice.com^ -||a11283.actonservice.com^ -||a11294.actonservice.com^ -||a11315.actonservice.com^ -||a11320.actonservice.com^ -||a11322.actonservice.com^ -||a11360.actonservice.com^ -||a11367.actonservice.com^ -||a11403.actonservice.com^ -||a11413003.actonservice.com^ -||a11426.actonservice.com^ -||a11436.actonservice.com^ -||a11442.actonservice.com^ -||a11443.actonservice.com^ -||a11463.actonservice.com^ -||a11468.actonservice.com^ -||a11481.actonservice.com^ -||a11501.actonservice.com^ -||a11516.actonservice.com^ -||a11519.actonservice.com^ -||a11522.actonservice.com^ -||a11531.actonservice.com^ -||a11537.actonservice.com^ -||a11538.actonservice.com^ -||a11540.actonservice.com^ -||a11550.actonservice.com^ -||a11576.actonservice.com^ -||a11584.actonservice.com^ -||a11585.actonservice.com^ -||a11588.actonservice.com^ -||a11601.actonservice.com^ -||a11645.actonservice.com^ -||a11690.actonservice.com^ -||a11735.actonservice.com^ -||a11801.actonservice.com^ -||a11823.actonservice.com^ -||a11843.actonservice.com^ -||a11860.actonservice.com^ -||a11862.actonservice.com^ -||a11868.actonservice.com^ -||a11872.actonservice.com^ -||a11888.actonservice.com^ -||a11904.actonservice.com^ -||a11928.actonservice.com^ -||a11929.actonservice.com^ -||a11942.actonservice.com^ -||a11943.actonservice.com^ -||a12014.actonservice.com^ -||a12016.actonservice.com^ -||a12019.actonservice.com^ -||a12058.actonservice.com^ -||a12083.actonservice.com^ -||a12093.actonservice.com^ -||a12132.actonservice.com^ -||a12139.actonservice.com^ -||a12142.actonservice.com^ -||a12160.actonservice.com^ -||a12179.actonservice.com^ -||a12180.actonservice.com^ -||a12192.actonservice.com^ -||a12238.actonservice.com^ -||a12254.actonservice.com^ -||a12255.actonservice.com^ -||a12256.actonservice.com^ -||a12269.actonservice.com^ -||a12273.actonservice.com^ -||a12287.actonservice.com^ -||a12290.actonservice.com^ -||a12329.actonservice.com^ -||a12332.actonservice.com^ -||a12336.actonservice.com^ -||a12409.actonservice.com^ -||a12433.actonservice.com^ -||a12440.actonservice.com^ -||a12516.actonservice.com^ -||a12517.actonservice.com^ -||a12520.actonservice.com^ -||a12533.actonservice.com^ -||a12538.actonservice.com^ -||a12547.actonservice.com^ -||a12559.actonservice.com^ -||a12561.actonservice.com^ -||a12572.actonservice.com^ -||a12619.actonservice.com^ -||a12678.actonservice.com^ -||a12683.actonservice.com^ -||a12684.actonservice.com^ -||a12719.actonservice.com^ -||a12724.actonservice.com^ -||a12732.actonservice.com^ -||a12734.actonservice.com^ -||a12765.actonservice.com^ -||a12770.actonservice.com^ -||a12777.actonservice.com^ -||a12791.actonservice.com^ -||a12793.actonservice.com^ -||a12798.actonservice.com^ -||a12826.actonservice.com^ -||a12852.actonservice.com^ -||a12872.actonservice.com^ -||a12876.actonservice.com^ -||a12893.actonservice.com^ -||a12894.actonservice.com^ -||a12924.actonservice.com^ -||a12930.actonservice.com^ -||a12935.actonservice.com^ -||a12956.actonservice.com^ -||a12991.actonservice.com^ -||a13007.actonservice.com^ -||a13009.actonservice.com^ -||a13010.actonservice.com^ -||a13016.actonservice.com^ -||a13017.actonservice.com^ -||a13027.actonservice.com^ -||a13044.actonservice.com^ -||a13050.actonservice.com^ -||a13072.actonservice.com^ -||a13080.actonservice.com^ -||a13083.actonservice.com^ -||a13101.actonservice.com^ -||a13104.actonservice.com^ -||a13111.actonservice.com^ -||a13112.actonservice.com^ -||a13118.actonservice.com^ -||a13119.actonservice.com^ -||a13132.actonservice.com^ -||a13183.actonservice.com^ -||a13188.actonservice.com^ -||a13199.actonservice.com^ -||a13209.actonservice.com^ -||a13294.actonservice.com^ -||a13302.actonservice.com^ -||a13309.actonservice.com^ -||a13320.actonservice.com^ -||a13357.actonservice.com^ -||a13363.actonservice.com^ -||a13375.actonservice.com^ -||a13389.actonservice.com^ -||a13398.actonservice.com^ -||a13404.actonservice.com^ -||a13422.actonservice.com^ -||a13425.actonservice.com^ -||a13460.actonservice.com^ -||a13472.actonservice.com^ -||a13476.actonservice.com^ -||a13548.actonservice.com^ -||a13557.actonservice.com^ -||a13605.actonservice.com^ -||a13620.actonservice.com^ -||a13650.actonservice.com^ -||a13651.actonservice.com^ -||a13653.actonservice.com^ -||a13654.actonservice.com^ -||a13664.actonservice.com^ -||a13678.actonservice.com^ -||a13692.actonservice.com^ -||a13709.actonservice.com^ -||a13715.actonservice.com^ -||a13724.actonservice.com^ -||a13796.actonservice.com^ -||a13835.actonservice.com^ -||a13850.actonservice.com^ -||a13860.actonservice.com^ -||a13866.actonservice.com^ -||a13868.actonservice.com^ -||a13885.actonservice.com^ -||a13890.actonservice.com^ -||a13912.actonservice.com^ -||a13913.actonservice.com^ -||a13931.actonservice.com^ -||a13938.actonservice.com^ -||a13951.actonservice.com^ -||a13956.actonservice.com^ -||a13980.actonservice.com^ -||a14001.actonservice.com^ -||a14010.actonservice.com^ -||a14041.actonservice.com^ -||a14057.actonservice.com^ -||a14063.actonservice.com^ -||a14069.actonservice.com^ -||a14070.actonservice.com^ -||a14082.actonservice.com^ -||a14089.actonservice.com^ -||a14103.actonservice.com^ -||a14107.actonservice.com^ -||a14109.actonservice.com^ -||a14142.actonservice.com^ -||a14163.actonservice.com^ -||a14164.actonservice.com^ -||a14167.actonservice.com^ -||a14181.actonservice.com^ -||a14214.actonservice.com^ -||a14249.actonservice.com^ -||a14259.actonservice.com^ -||a14267.actonservice.com^ -||a14273.actonservice.com^ -||a14277.actonservice.com^ -||a14282.actonservice.com^ -||a14284.actonservice.com^ -||a14315.actonservice.com^ -||a14338.actonservice.com^ -||a14339.actonservice.com^ -||a14349.actonservice.com^ -||a14362.actonservice.com^ -||a14374.actonservice.com^ -||a14376.actonservice.com^ -||a14377.actonservice.com^ -||a14378.actonservice.com^ -||a14382.actonservice.com^ -||a14383.actonservice.com^ -||a14384.actonservice.com^ -||a14412.actonservice.com^ -||a14414.actonservice.com^ -||a14415.actonservice.com^ -||a14418.actonservice.com^ -||a14429.actonservice.com^ -||a14448.actonservice.com^ -||a14457.actonservice.com^ -||a14481.actonservice.com^ -||a14482.actonservice.com^ -||a14485.actonservice.com^ -||a14489.actonservice.com^ -||a14505.actonservice.com^ -||a14512.actonservice.com^ -||a14515.actonservice.com^ -||a14516.actonservice.com^ -||a14518.actonservice.com^ -||a14527.actonservice.com^ -||a14535.actonservice.com^ -||a14540.actonservice.com^ -||a14556.actonservice.com^ -||a14559.actonservice.com^ -||a14572.actonservice.com^ -||a14576.actonservice.com^ -||a14587.actonservice.com^ -||a14596.actonservice.com^ -||a14606.actonservice.com^ -||a14629.actonservice.com^ -||a14637.actonservice.com^ -||a14641.actonservice.com^ -||a14644.actonservice.com^ -||a14647.actonservice.com^ -||a14655.actonservice.com^ -||a14661.actonservice.com^ -||a14663.actonservice.com^ -||a14690.actonservice.com^ -||a14700.actonservice.com^ -||a14724.actonservice.com^ -||a14732.actonservice.com^ -||a14774.actonservice.com^ -||a14775.actonservice.com^ -||a14778.actonservice.com^ -||a14788.actonservice.com^ -||a14797.actonservice.com^ -||a14808.actonservice.com^ -||a14814.actonservice.com^ -||a14835.actonservice.com^ -||a14951.actonservice.com^ -||a15567.actonservice.com^ -||a15569.actonservice.com^ -||a15575.actonservice.com^ -||a15599.actonservice.com^ -||a15601.actonservice.com^ -||a15613.actonservice.com^ -||a15614.actonservice.com^ -||a15633.actonservice.com^ -||a15654.actonservice.com^ -||a15661.actonservice.com^ -||a15662.actonservice.com^ -||a15668.actonservice.com^ -||a15673.actonservice.com^ -||a15675.actonservice.com^ -||a15691.actonservice.com^ -||a15703.actonservice.com^ -||a15717.actonservice.com^ -||a15736.actonservice.com^ -||a15742.actonservice.com^ -||a15745.actonservice.com^ -||a15760.actonservice.com^ -||a15777.actonservice.com^ -||a15781.actonservice.com^ -||a15782.actonservice.com^ -||a15788.actonservice.com^ -||a15807.actonservice.com^ -||a15817.actonservice.com^ -||a15818.actonservice.com^ -||a15831.actonservice.com^ -||a15832.actonservice.com^ -||a15833.actonservice.com^ -||a15838.actonservice.com^ -||a15857.actonservice.com^ -||a15877.actonservice.com^ -||a15908.actonservice.com^ -||a15909.actonservice.com^ -||a15927.actonservice.com^ -||a15932.actonservice.com^ -||a15933.actonservice.com^ -||a15943.actonservice.com^ -||a15944.actonservice.com^ -||a15949.actonservice.com^ -||a15955.actonservice.com^ -||a15960.actonservice.com^ -||a15964.actonservice.com^ -||a15988.actonservice.com^ -||a15991.actonservice.com^ -||a16009.actonservice.com^ -||a16016.actonservice.com^ -||a16017.actonservice.com^ -||a16018.actonservice.com^ -||a16028.actonservice.com^ -||a16030.actonservice.com^ -||a16031.actonservice.com^ -||a16041.actonservice.com^ -||a16048.actonservice.com^ -||a16052.actonservice.com^ -||a16054.actonservice.com^ -||a16060.actonservice.com^ -||a16065.actonservice.com^ -||a16067.actonservice.com^ -||a16068.actonservice.com^ -||a16070.actonservice.com^ -||a16078.actonservice.com^ -||a16084.actonservice.com^ -||a16088.actonservice.com^ -||a16089.actonservice.com^ -||a16096.actonservice.com^ -||a16097.actonservice.com^ -||a16101.actonservice.com^ -||a16102.actonservice.com^ -||a16108.actonservice.com^ -||a16113.actonservice.com^ -||a16119.actonservice.com^ -||a16121.actonservice.com^ -||a16122.actonservice.com^ -||a16133.actonservice.com^ -||a16157.actonservice.com^ -||a16161.actonservice.com^ -||a16176.actonservice.com^ -||a16178.actonservice.com^ -||a16179.actonservice.com^ -||a16206.actonservice.com^ -||a16207.actonservice.com^ -||a16208.actonservice.com^ -||a16215.actonservice.com^ -||a16219.actonservice.com^ -||a16220.actonservice.com^ -||a16238.actonservice.com^ -||a16241.actonservice.com^ -||a16242.actonservice.com^ -||a16257.actonservice.com^ -||a16258.actonservice.com^ -||a16269.actonservice.com^ -||a16279.actonservice.com^ -||a16282.actonservice.com^ -||a16291.actonservice.com^ -||a16292.actonservice.com^ -||a16302.actonservice.com^ -||a16303.actonservice.com^ -||a16317.actonservice.com^ -||a16378.actonservice.com^ -||a16385.actonservice.com^ -||a16398.actonservice.com^ -||a16404.actonservice.com^ -||a16408.actonservice.com^ -||a16418.actonservice.com^ -||a16443.actonservice.com^ -||a16445.actonservice.com^ -||a16450.actonservice.com^ -||a16453.actonservice.com^ -||a16454.actonservice.com^ -||a16468.actonservice.com^ -||a16473.actonservice.com^ -||a16475.actonservice.com^ -||a16476.actonservice.com^ -||a16477.actonservice.com^ -||a16478.actonservice.com^ -||a16479.actonservice.com^ -||a16485.actonservice.com^ -||a16502.actonservice.com^ -||a16508.actonservice.com^ -||a16509.actonservice.com^ -||a16513.actonservice.com^ -||a16517.actonservice.com^ -||a16523.actonservice.com^ -||a16524.actonservice.com^ -||a16526.actonservice.com^ -||a16527.actonservice.com^ -||a16528.actonservice.com^ -||a16529.actonservice.com^ -||a16530.actonservice.com^ -||a16531.actonservice.com^ -||a16532.actonservice.com^ -||a16533.actonservice.com^ -||a16537.actonservice.com^ -||a16542.actonservice.com^ -||a16543.actonservice.com^ -||a16557.actonservice.com^ -||a16560.actonservice.com^ -||a16570.actonservice.com^ -||a16573.actonservice.com^ -||a16581.actonservice.com^ -||a16583.actonservice.com^ -||a16585.actonservice.com^ -||a16588.actonservice.com^ -||a16589.actonservice.com^ -||a16609.actonservice.com^ -||a16611.actonservice.com^ -||a16611001.actonservice.com^ -||a16617.actonservice.com^ -||a16621.actonservice.com^ -||a16622.actonservice.com^ -||a16624.actonservice.com^ -||a16629.actonservice.com^ -||a16629001.actonservice.com^ -||a16634.actonservice.com^ -||a16635.actonservice.com^ -||a16638.actonservice.com^ -||a16656.actonservice.com^ -||a16656001.actonservice.com^ -||a16658.actonservice.com^ -||a16672.actonservice.com^ -||a16674.actonservice.com^ -||a16677.actonservice.com^ -||a16681.actonservice.com^ -||a16691.actonservice.com^ -||a16696.actonservice.com^ -||a16726.actonservice.com^ -||a16728.actonservice.com^ -||a16734.actonservice.com^ -||a16741.actonservice.com^ -||a16748.actonservice.com^ -||a16765.actonservice.com^ -||a16766.actonservice.com^ -||a16772.actonservice.com^ -||a16778.actonservice.com^ -||a16781.actonservice.com^ -||a16782.actonservice.com^ -||a16810.actonservice.com^ -||a16830.actonservice.com^ -||a16832.actonservice.com^ -||a16834.actonservice.com^ -||a16841.actonservice.com^ -||a16842.actonservice.com^ -||a16844.actonservice.com^ -||a16857.actonservice.com^ -||a16858.actonservice.com^ -||a16859.actonservice.com^ -||a16860.actonservice.com^ -||a16861.actonservice.com^ -||a16862.actonservice.com^ -||a16863.actonservice.com^ -||a16864.actonservice.com^ -||a16865.actonservice.com^ -||a16868.actonservice.com^ -||a16869.actonservice.com^ -||a16870.actonservice.com^ -||a16871.actonservice.com^ -||a16887.actonservice.com^ -||a16893.actonservice.com^ -||a16896.actonservice.com^ -||a16899.actonservice.com^ -||a16907.actonservice.com^ -||a16911.actonservice.com^ -||a16913.actonservice.com^ -||a16914.actonservice.com^ -||a16916.actonservice.com^ -||a16917.actonservice.com^ -||a16923.actonservice.com^ -||a16937.actonservice.com^ -||a16950.actonservice.com^ -||a16955.actonservice.com^ -||a16966.actonservice.com^ -||a16970.actonservice.com^ -||a16973.actonservice.com^ -||a16980.actonservice.com^ -||a16981.actonservice.com^ -||a17003.actonservice.com^ -||a17015.actonservice.com^ -||a17030.actonservice.com^ -||a17033.actonservice.com^ -||a17044.actonservice.com^ -||a17045.actonservice.com^ -||a17049.actonservice.com^ -||a17050.actonservice.com^ -||a17084.actonservice.com^ -||a17095.actonservice.com^ -||a17096.actonservice.com^ -||a17097.actonservice.com^ -||a17098.actonservice.com^ -||a17099.actonservice.com^ -||a17100.actonservice.com^ -||a17101.actonservice.com^ -||a17113.actonservice.com^ -||a17114.actonservice.com^ -||a17120.actonservice.com^ -||a17121.actonservice.com^ -||a17122.actonservice.com^ -||a17124.actonservice.com^ -||a17128.actonservice.com^ -||a17134.actonservice.com^ -||a17153.actonservice.com^ -||a17161.actonservice.com^ -||a17166.actonservice.com^ -||a17174.actonservice.com^ -||a17181.actonservice.com^ -||a17182.actonservice.com^ -||a17183.actonservice.com^ -||a17184.actonservice.com^ -||a17186.actonservice.com^ -||a17187.actonservice.com^ -||a17189.actonservice.com^ -||a17194.actonservice.com^ -||a17217.actonservice.com^ -||a17224.actonservice.com^ -||a17229.actonservice.com^ -||a17237.actonservice.com^ -||a17240.actonservice.com^ -||a17244.actonservice.com^ -||a17245.actonservice.com^ -||a17246.actonservice.com^ -||a17249.actonservice.com^ -||a17254.actonservice.com^ -||a17256.actonservice.com^ -||a17271.actonservice.com^ -||a17276.actonservice.com^ -||a17277.actonservice.com^ -||a17278.actonservice.com^ -||a17286.actonservice.com^ -||a17292.actonservice.com^ -||a17297.actonservice.com^ -||a17298.actonservice.com^ -||a17300.actonservice.com^ -||a17301.actonservice.com^ -||a17302.actonservice.com^ -||a17305.actonservice.com^ -||a17308.actonservice.com^ -||a17310.actonservice.com^ -||a17322.actonservice.com^ -||a17328.actonservice.com^ -||a17342.actonservice.com^ -||a17347.actonservice.com^ -||a17348.actonservice.com^ -||a17350.actonservice.com^ -||a17351.actonservice.com^ -||a17352.actonservice.com^ -||a17362.actonservice.com^ -||a17367.actonservice.com^ -||a17368.actonservice.com^ -||a17382.actonservice.com^ -||a17393.actonservice.com^ -||a17395.actonservice.com^ -||a17396.actonservice.com^ -||a17397.actonservice.com^ -||a17398.actonservice.com^ -||a17401.actonservice.com^ -||a17402.actonservice.com^ -||a17403.actonservice.com^ -||a17406.actonservice.com^ -||a17407.actonservice.com^ -||a17408.actonservice.com^ -||a17409.actonservice.com^ -||a17410.actonservice.com^ -||a17412.actonservice.com^ -||a17414.actonservice.com^ -||a17415.actonservice.com^ -||a17416.actonservice.com^ -||a17426.actonservice.com^ -||a17436.actonservice.com^ -||a17452.actonservice.com^ -||a17453.actonservice.com^ -||a17455.actonservice.com^ -||a17467.actonservice.com^ -||a17476.actonservice.com^ -||a17481.actonservice.com^ -||a17482.actonservice.com^ -||a17483.actonservice.com^ -||a17485.actonservice.com^ -||a17505.actonservice.com^ -||a17512.actonservice.com^ -||a17513.actonservice.com^ -||a17514.actonservice.com^ -||a17517.actonservice.com^ -||a17538.actonservice.com^ -||a17539.actonservice.com^ -||a17549.actonservice.com^ -||a17552.actonservice.com^ -||a17559.actonservice.com^ -||a17560.actonservice.com^ -||a17564.actonservice.com^ -||a17571.actonservice.com^ -||a17591.actonservice.com^ -||a17616.actonservice.com^ -||a17637.actonservice.com^ -||a17638.actonservice.com^ -||a17639.actonservice.com^ -||a17659.actonservice.com^ -||a17661.actonservice.com^ -||a17668.actonservice.com^ -||a17677.actonservice.com^ -||a17679.actonservice.com^ -||a17685.actonservice.com^ -||a17691.actonservice.com^ -||a17697.actonservice.com^ -||a17698.actonservice.com^ -||a17699.actonservice.com^ -||a17700.actonservice.com^ -||a17701.actonservice.com^ -||a17703.actonservice.com^ -||a17704.actonservice.com^ -||a17707.actonservice.com^ -||a17709.actonservice.com^ -||a17739.actonservice.com^ -||a17741.actonservice.com^ -||a17742.actonservice.com^ -||a17744.actonservice.com^ -||a17746.actonservice.com^ -||a17752.actonservice.com^ -||a17754.actonservice.com^ -||a17756.actonservice.com^ -||a17757.actonservice.com^ -||a17758.actonservice.com^ -||a17759.actonservice.com^ -||a17760.actonservice.com^ -||a17788.actonservice.com^ -||a17799.actonservice.com^ -||a17801.actonservice.com^ -||a17803.actonservice.com^ -||a17808.actonservice.com^ -||a17815.actonservice.com^ -||a17817.actonservice.com^ -||a17818.actonservice.com^ -||a17824.actonservice.com^ -||a17842.actonservice.com^ -||a17856.actonservice.com^ -||a17859.actonservice.com^ -||a17869.actonservice.com^ -||a17870.actonservice.com^ -||a17883.actonservice.com^ -||a17898.actonservice.com^ -||a17909.actonservice.com^ -||a17916.actonservice.com^ -||a17918.actonservice.com^ -||a18327.actonservice.com^ -||a18330.actonservice.com^ -||a18886.actonservice.com^ -||a19340.actonservice.com^ -||a19384.actonservice.com^ -||a19537.actonservice.com^ -||a19609.actonservice.com^ -||a19612.actonservice.com^ -||a19615.actonservice.com^ -||a19708.actonservice.com^ -||a19714.actonservice.com^ -||a19717.actonservice.com^ -||a19743.actonservice.com^ -||a19748.actonservice.com^ -||a19755.actonservice.com^ -||a19761.actonservice.com^ -||a19768.actonservice.com^ -||a19772.actonservice.com^ -||a19787.actonservice.com^ -||a19795.actonservice.com^ -||a19807.actonservice.com^ -||a19813.actonservice.com^ -||a19824.actonservice.com^ -||a19858.actonservice.com^ -||a19895.actonservice.com^ -||a19930.actonservice.com^ -||a19997.actonservice.com^ -||a20022.actonservice.com^ -||a20204.actonservice.com^ -||a20207.actonservice.com^ -||a20219.actonservice.com^ -||a20220.actonservice.com^ -||a20221.actonservice.com^ -||a20224.actonservice.com^ -||a20294.actonservice.com^ -||a20301.actonservice.com^ -||a20327.actonservice.com^ -||a20365.actonservice.com^ -||a20372.actonservice.com^ -||a20381.actonservice.com^ -||a20407.actonservice.com^ -||a20424.actonservice.com^ -||a20430.actonservice.com^ -||a20438.actonservice.com^ -||a20442.actonservice.com^ -||a20558.actonservice.com^ -||a20562.actonservice.com^ -||a20588.actonservice.com^ -||a20640.actonservice.com^ -||a20742.actonservice.com^ -||a20776.actonservice.com^ -||a20785.actonservice.com^ -||a20790.actonservice.com^ -||a20829.actonservice.com^ -||a20835.actonservice.com^ -||a20896.actonservice.com^ -||a20899.actonservice.com^ -||a20909.actonservice.com^ -||a20946.actonservice.com^ -||a20989.actonservice.com^ -||a21037.actonservice.com^ -||a21068.actonservice.com^ -||a21094.actonservice.com^ -||a21136.actonservice.com^ -||a21151.actonservice.com^ -||a21165.actonservice.com^ -||a21185.actonservice.com^ -||a21202.actonservice.com^ -||a21310.actonservice.com^ -||a21341.actonservice.com^ -||a21346.actonservice.com^ -||a21347.actonservice.com^ -||a21365.actonservice.com^ -||a21381.actonservice.com^ -||a21389.actonservice.com^ -||a21391.actonservice.com^ -||a21398.actonservice.com^ -||a21401.actonservice.com^ -||a21437.actonservice.com^ -||a21500.actonservice.com^ -||a21540.actonservice.com^ -||a21556.actonservice.com^ -||a21667.actonservice.com^ -||a21699.actonservice.com^ -||a21787.actonservice.com^ -||a21943.actonservice.com^ -||a21961.actonservice.com^ -||a22037.actonservice.com^ -||a22103.actonservice.com^ -||a22128.actonservice.com^ -||a22134.actonservice.com^ -||a22241.actonservice.com^ -||a22243.actonservice.com^ -||a22348.actonservice.com^ -||a22359.actonservice.com^ -||a22368.actonservice.com^ -||a22435.actonservice.com^ -||a22524.actonservice.com^ -||a22658.actonservice.com^ -||a22896.actonservice.com^ -||a22908.actonservice.com^ -||a22923.actonservice.com^ -||a22926.actonservice.com^ -||a22941.actonservice.com^ -||a23027.actonservice.com^ -||a23030.actonservice.com^ -||a23041.actonservice.com^ -||a23051.actonservice.com^ -||a23118.actonservice.com^ -||a23148.actonservice.com^ -||a23163.actonservice.com^ -||a23218.actonservice.com^ -||a23294.actonservice.com^ -||a23402.actonservice.com^ -||a23450.actonservice.com^ -||a23509.actonservice.com^ -||a23581.actonservice.com^ -||a23606.actonservice.com^ -||a23607.actonservice.com^ -||a23646.actonservice.com^ -||a23653.actonservice.com^ -||a23713.actonservice.com^ -||a23754.actonservice.com^ -||a23802.actonservice.com^ -||a23927.actonservice.com^ -||a24000.actonservice.com^ -||a24007.actonservice.com^ -||a24214.actonservice.com^ -||a24226.actonservice.com^ -||a24246.actonservice.com^ -||a24260.actonservice.com^ -||a24273.actonservice.com^ -||a24295.actonservice.com^ -||a24315.actonservice.com^ -||a24335.actonservice.com^ -||a24335001.actonservice.com^ -||a24336001.actonservice.com^ -||a24340.actonservice.com^ -||a24360.actonservice.com^ -||a24395.actonservice.com^ -||a24396.actonservice.com^ -||a24405.actonservice.com^ -||a24439.actonservice.com^ -||a24454.actonservice.com^ -||a24457.actonservice.com^ -||a24500.actonservice.com^ -||a24503.actonservice.com^ -||a24506.actonservice.com^ -||a24531.actonservice.com^ -||a24540.actonservice.com^ -||a24543.actonservice.com^ -||a24546.actonservice.com^ -||a24551.actonservice.com^ -||a24564.actonservice.com^ -||a24577001.actonservice.com^ -||a24579.actonservice.com^ -||a24584.actonservice.com^ -||a24591.actonservice.com^ -||a24592.actonservice.com^ -||a24600.actonservice.com^ -||a24606.actonservice.com^ -||a24612.actonservice.com^ -||a24630.actonservice.com^ -||a24638.actonservice.com^ -||a24642.actonservice.com^ -||a24648.actonservice.com^ -||a24669.actonservice.com^ -||a24681.actonservice.com^ -||a24703.actonservice.com^ -||a24718.actonservice.com^ -||a24727.actonservice.com^ -||a24730.actonservice.com^ -||a24733.actonservice.com^ -||a24744.actonservice.com^ -||a24766.actonservice.com^ -||a24780.actonservice.com^ -||a24786.actonservice.com^ -||a24792.actonservice.com^ -||a24793.actonservice.com^ -||a24809.actonservice.com^ -||a24812.actonservice.com^ -||a24820.actonservice.com^ -||a24842.actonservice.com^ -||a24843.actonservice.com^ -||a24846.actonservice.com^ -||a24849.actonservice.com^ -||a24853.actonservice.com^ -||a24858.actonservice.com^ -||a24863.actonservice.com^ -||a24865.actonservice.com^ -||a24868.actonservice.com^ -||a24869.actonservice.com^ -||a24898.actonservice.com^ -||a24899.actonservice.com^ -||a24907.actonservice.com^ -||a24910.actonservice.com^ -||a24923.actonservice.com^ -||a24962.actonservice.com^ -||a24982.actonservice.com^ -||a24985.actonservice.com^ -||a24998.actonservice.com^ -||a25026.actonservice.com^ -||a25032.actonservice.com^ -||a25041.actonservice.com^ -||a25057.actonservice.com^ -||a25065.actonservice.com^ -||a25067.actonservice.com^ -||a25077.actonservice.com^ -||a25080.actonservice.com^ -||a25095.actonservice.com^ -||a25098.actonservice.com^ -||a25134.actonservice.com^ -||a25152.actonservice.com^ -||a25158.actonservice.com^ -||a25186.actonservice.com^ -||a25197.actonservice.com^ -||a25210.actonservice.com^ -||a25216.actonservice.com^ -||a25224.actonservice.com^ -||a25226.actonservice.com^ -||a25233.actonservice.com^ -||a25247.actonservice.com^ -||a25250.actonservice.com^ -||a25303.actonservice.com^ -||a25306.actonservice.com^ -||a25307.actonservice.com^ -||a25309.actonservice.com^ -||a25329.actonservice.com^ -||a25350.actonservice.com^ -||a25351.actonservice.com^ -||a25370.actonservice.com^ -||a25378.actonservice.com^ -||a25381.actonservice.com^ -||a25393.actonservice.com^ -||a25406.actonservice.com^ -||a25409.actonservice.com^ -||a25412.actonservice.com^ -||a25427.actonservice.com^ -||a25488.actonservice.com^ -||a25493.actonservice.com^ -||a25497.actonservice.com^ -||a25513.actonservice.com^ -||a25526.actonservice.com^ -||a25535.actonservice.com^ -||a25540.actonservice.com^ -||a25545.actonservice.com^ -||a25546.actonservice.com^ -||a25569.actonservice.com^ -||a25572.actonservice.com^ -||a25580.actonservice.com^ -||a25598.actonservice.com^ -||a25599.actonservice.com^ -||a25601.actonservice.com^ -||a25604001.actonservice.com^ -||a25605.actonservice.com^ -||a25611.actonservice.com^ -||a25647.actonservice.com^ -||a25657.actonservice.com^ -||a25674.actonservice.com^ -||a25683.actonservice.com^ -||a25686.actonservice.com^ -||a25689.actonservice.com^ -||a25692.actonservice.com^ -||a25695.actonservice.com^ -||a25697.actonservice.com^ -||a25707.actonservice.com^ -||a25713.actonservice.com^ -||a25719.actonservice.com^ -||a25722.actonservice.com^ -||a25725.actonservice.com^ -||a25727.actonservice.com^ -||a25728.actonservice.com^ -||a25751.actonservice.com^ -||a25752.actonservice.com^ -||a25753.actonservice.com^ -||a25781.actonservice.com^ -||a25797.actonservice.com^ -||a25802.actonservice.com^ -||a25805.actonservice.com^ -||a25848.actonservice.com^ -||a25853.actonservice.com^ -||a25855.actonservice.com^ -||a25859.actonservice.com^ -||a25872.actonservice.com^ -||a25881.actonservice.com^ -||a25884.actonservice.com^ -||a25888.actonservice.com^ -||a25891.actonservice.com^ -||a25910.actonservice.com^ -||a25916.actonservice.com^ -||a25929001.actonservice.com^ -||a25939.actonservice.com^ -||a25949.actonservice.com^ -||a25950.actonservice.com^ -||a25953.actonservice.com^ -||a25956.actonservice.com^ -||a25977.actonservice.com^ -||a25985.actonservice.com^ -||a25994.actonservice.com^ -||a25998.actonservice.com^ -||a25999.actonservice.com^ -||a26011.actonservice.com^ -||a26020.actonservice.com^ -||a26040.actonservice.com^ -||a26043.actonservice.com^ -||a26052.actonservice.com^ -||a26055.actonservice.com^ -||a26062.actonservice.com^ -||a26064.actonservice.com^ -||a26069.actonservice.com^ -||a26089.actonservice.com^ -||a26095.actonservice.com^ -||a26135.actonservice.com^ -||a26138.actonservice.com^ -||a26164.actonservice.com^ -||a26168.actonservice.com^ -||a26175.actonservice.com^ -||a26177.actonservice.com^ -||a26193.actonservice.com^ -||a26199.actonservice.com^ -||a26204.actonservice.com^ -||a26226.actonservice.com^ -||a26232.actonservice.com^ -||a26236.actonservice.com^ -||a26239.actonservice.com^ -||a26245.actonservice.com^ -||a26251.actonservice.com^ -||a26259.actonservice.com^ -||a26260.actonservice.com^ -||a26268.actonservice.com^ -||a26284.actonservice.com^ -||a26287.actonservice.com^ -||a26292.actonservice.com^ -||a26301.actonservice.com^ -||a26310.actonservice.com^ -||a26312.actonservice.com^ -||a26327.actonservice.com^ -||a26361.actonservice.com^ -||a26362.actonservice.com^ -||a26391.actonservice.com^ -||a26394.actonservice.com^ -||a26395.actonservice.com^ -||a26410.actonservice.com^ -||a26448.actonservice.com^ -||a26463.actonservice.com^ -||a26469.actonservice.com^ -||a26472.actonservice.com^ -||a26475.actonservice.com^ -||a26479.actonservice.com^ -||a26495.actonservice.com^ -||a26521.actonservice.com^ -||a26530.actonservice.com^ -||a26539.actonservice.com^ -||a26582.actonservice.com^ -||a26591.actonservice.com^ -||a26597.actonservice.com^ -||a26612.actonservice.com^ -||a26629.actonservice.com^ -||a26632.actonservice.com^ -||a26634.actonservice.com^ -||a26648.actonservice.com^ -||a26650.actonservice.com^ -||a26655.actonservice.com^ -||a26664.actonservice.com^ -||a26665.actonservice.com^ -||a26676.actonservice.com^ -||a26695.actonservice.com^ -||a26698.actonservice.com^ -||a26705.actonservice.com^ -||a26710.actonservice.com^ -||a26711.actonservice.com^ -||a26758.actonservice.com^ -||a26767.actonservice.com^ -||a26770.actonservice.com^ -||a26779.actonservice.com^ -||a26781.actonservice.com^ -||a26807.actonservice.com^ -||a26813.actonservice.com^ -||a26816.actonservice.com^ -||a26826.actonservice.com^ -||a26839.actonservice.com^ -||a26855.actonservice.com^ -||a26857.actonservice.com^ -||a26871.actonservice.com^ -||a26879.actonservice.com^ -||a26889.actonservice.com^ -||a26900.actonservice.com^ -||a26962.actonservice.com^ -||a26965.actonservice.com^ -||a26970.actonservice.com^ -||a26991.actonservice.com^ -||a26996.actonservice.com^ -||a26998.actonservice.com^ -||a27004.actonservice.com^ -||a27013.actonservice.com^ -||a27031.actonservice.com^ -||a27035.actonservice.com^ -||a27050.actonservice.com^ -||a27059.actonservice.com^ -||a27061.actonservice.com^ -||a27063.actonservice.com^ -||a27064.actonservice.com^ -||a27067.actonservice.com^ -||a27069.actonservice.com^ -||a27070.actonservice.com^ -||a27072.actonservice.com^ -||a27075.actonservice.com^ -||a27081.actonservice.com^ -||a27084.actonservice.com^ -||a27087.actonservice.com^ -||a27091.actonservice.com^ -||a27092.actonservice.com^ -||a27110.actonservice.com^ -||a27117.actonservice.com^ -||a27129.actonservice.com^ -||a27133.actonservice.com^ -||a27138.actonservice.com^ -||a27147.actonservice.com^ -||a27157.actonservice.com^ -||a27159.actonservice.com^ -||a27172.actonservice.com^ -||a27175.actonservice.com^ -||a27183.actonservice.com^ -||a27196.actonservice.com^ -||a27199.actonservice.com^ -||a27205.actonservice.com^ -||a27234.actonservice.com^ -||a27238.actonservice.com^ -||a27252.actonservice.com^ -||a27297.actonservice.com^ -||a27300.actonservice.com^ -||a27303.actonservice.com^ -||a27304.actonservice.com^ -||a27307.actonservice.com^ -||a27319.actonservice.com^ -||a27320.actonservice.com^ -||a27323.actonservice.com^ -||a27325.actonservice.com^ -||a27331.actonservice.com^ -||a27337.actonservice.com^ -||a27339.actonservice.com^ -||a27342.actonservice.com^ -||a27348.actonservice.com^ -||a27355.actonservice.com^ -||a27358.actonservice.com^ -||a27378.actonservice.com^ -||a27384.actonservice.com^ -||a27387.actonservice.com^ -||a27394.actonservice.com^ -||a27396.actonservice.com^ -||a27397.actonservice.com^ -||a27402.actonservice.com^ -||a27409.actonservice.com^ -||a27421.actonservice.com^ -||a27424.actonservice.com^ -||a27435.actonservice.com^ -||a27441.actonservice.com^ -||a27457.actonservice.com^ -||a27459.actonservice.com^ -||a27461.actonservice.com^ -||a27469.actonservice.com^ -||a27472.actonservice.com^ -||a27474.actonservice.com^ -||a27501.actonservice.com^ -||a27519.actonservice.com^ -||a27563.actonservice.com^ -||a27571.actonservice.com^ -||a27574.actonservice.com^ -||a27581.actonservice.com^ -||a27584.actonservice.com^ -||a27587.actonservice.com^ -||a27593.actonservice.com^ -||a27596.actonservice.com^ -||a27598.actonservice.com^ -||a27602.actonservice.com^ -||a27617.actonservice.com^ -||a27619.actonservice.com^ -||a27620.actonservice.com^ -||a27626.actonservice.com^ -||a27629.actonservice.com^ -||a27647.actonservice.com^ -||a27657.actonservice.com^ -||a27666.actonservice.com^ -||a27673.actonservice.com^ -||a27679.actonservice.com^ -||a27686.actonservice.com^ -||a27691.actonservice.com^ -||a27692.actonservice.com^ -||a27700.actonservice.com^ -||a27712.actonservice.com^ -||a27728.actonservice.com^ -||a27743.actonservice.com^ -||a27809001.actonservice.com^ -||a27815.actonservice.com^ -||a27817.actonservice.com^ -||a27825.actonservice.com^ -||a27844.actonservice.com^ -||a27847.actonservice.com^ -||a27858.actonservice.com^ -||a27872.actonservice.com^ -||a27877.actonservice.com^ -||a27880.actonservice.com^ -||a27884.actonservice.com^ -||a27887.actonservice.com^ -||a27890.actonservice.com^ -||a27899.actonservice.com^ -||a27900.actonservice.com^ -||a27902.actonservice.com^ -||a27903.actonservice.com^ -||a27909.actonservice.com^ -||a27917.actonservice.com^ -||a27923.actonservice.com^ -||a27927.actonservice.com^ -||a27933.actonservice.com^ -||a27937.actonservice.com^ -||a27942.actonservice.com^ -||a27952.actonservice.com^ -||a27974.actonservice.com^ -||a27976.actonservice.com^ -||a27980.actonservice.com^ -||a27986.actonservice.com^ -||a27989.actonservice.com^ -||a27997.actonservice.com^ -||a28009.actonservice.com^ -||a28011.actonservice.com^ -||a28012.actonservice.com^ -||a28026.actonservice.com^ -||a28028.actonservice.com^ -||a28030.actonservice.com^ -||a28031.actonservice.com^ -||a28044.actonservice.com^ -||a28048001.actonservice.com^ -||a28050.actonservice.com^ -||a28071.actonservice.com^ -||a28087.actonservice.com^ -||a28093.actonservice.com^ -||a28101.actonservice.com^ -||a28115.actonservice.com^ -||a28128.actonservice.com^ -||a28133.actonservice.com^ -||a28137.actonservice.com^ -||a28143.actonservice.com^ -||a28191.actonservice.com^ -||a28200.actonservice.com^ -||a28216.actonservice.com^ -||a28228.actonservice.com^ -||a28230.actonservice.com^ -||a28239.actonservice.com^ -||a28243.actonservice.com^ -||a28248.actonservice.com^ -||a28275.actonservice.com^ -||a28278.actonservice.com^ -||a28284.actonservice.com^ -||a28287.actonservice.com^ -||a28296.actonservice.com^ -||a28298.actonservice.com^ -||a28302.actonservice.com^ -||a28307.actonservice.com^ -||a28308.actonservice.com^ -||a28310.actonservice.com^ -||a28316.actonservice.com^ -||a28320.actonservice.com^ -||a28328.actonservice.com^ -||a28335.actonservice.com^ -||a28337.actonservice.com^ -||a28348.actonservice.com^ -||a28350.actonservice.com^ -||a28351.actonservice.com^ -||a28379.actonservice.com^ -||a28390.actonservice.com^ -||a28397.actonservice.com^ -||a28401.actonservice.com^ -||a28410.actonservice.com^ -||a28416.actonservice.com^ -||a28440.actonservice.com^ -||a28443.actonservice.com^ -||a28472.actonservice.com^ -||a28481.actonservice.com^ -||a28487.actonservice.com^ -||a28490.actonservice.com^ -||a28493.actonservice.com^ -||a28496.actonservice.com^ -||a28499.actonservice.com^ -||a28500.actonservice.com^ -||a28513.actonservice.com^ -||a28515.actonservice.com^ -||a28518.actonservice.com^ -||a28527.actonservice.com^ -||a28530.actonservice.com^ -||a28533.actonservice.com^ -||a28539.actonservice.com^ -||a28541.actonservice.com^ -||a28547.actonservice.com^ -||a28557.actonservice.com^ -||a28565.actonservice.com^ -||a28579.actonservice.com^ -||a28599.actonservice.com^ -||a28609.actonservice.com^ -||a28619.actonservice.com^ -||a28627.actonservice.com^ -||a28647.actonservice.com^ -||a28653.actonservice.com^ -||a28690.actonservice.com^ -||a28702.actonservice.com^ -||a28708.actonservice.com^ -||a28719.actonservice.com^ -||a28720.actonservice.com^ -||a28725.actonservice.com^ -||a28729.actonservice.com^ -||a28772.actonservice.com^ -||a28778.actonservice.com^ -||a28788.actonservice.com^ -||a28791.actonservice.com^ -||a28793.actonservice.com^ -||a28795.actonservice.com^ -||a28797.actonservice.com^ -||a28816.actonservice.com^ -||a28838.actonservice.com^ -||a28858.actonservice.com^ -||a28876.actonservice.com^ -||a28891.actonservice.com^ -||a28895.actonservice.com^ -||a28896.actonservice.com^ -||a28911.actonservice.com^ -||a28914.actonservice.com^ -||a28935.actonservice.com^ -||a28941.actonservice.com^ -||a28962.actonservice.com^ -||a28968.actonservice.com^ -||a28979.actonservice.com^ -||a29009.actonservice.com^ -||a29025.actonservice.com^ -||a29032.actonservice.com^ -||a29045.actonservice.com^ -||a29047.actonservice.com^ -||a29064.actonservice.com^ -||a29071.actonservice.com^ -||a29072.actonservice.com^ -||a29084.actonservice.com^ -||a29088.actonservice.com^ -||a29090.actonservice.com^ -||a29091.actonservice.com^ -||a29097.actonservice.com^ -||a29112.actonservice.com^ -||a29134.actonservice.com^ -||a29152.actonservice.com^ -||a29160.actonservice.com^ -||a29167.actonservice.com^ -||a29170.actonservice.com^ -||a29171.actonservice.com^ -||a29177.actonservice.com^ -||a29192.actonservice.com^ -||a29197.actonservice.com^ -||a29198.actonservice.com^ -||a29201.actonservice.com^ -||a29206.actonservice.com^ -||a29213.actonservice.com^ -||a29218.actonservice.com^ -||a29225.actonservice.com^ -||a29228.actonservice.com^ -||a29235.actonservice.com^ -||a29238.actonservice.com^ -||a29251.actonservice.com^ -||a29255.actonservice.com^ -||a29270.actonservice.com^ -||a29277.actonservice.com^ -||a29282.actonservice.com^ -||a29286.actonservice.com^ -||a29312.actonservice.com^ -||a29315.actonservice.com^ -||a29319.actonservice.com^ -||a29322.actonservice.com^ -||a29330.actonservice.com^ -||a29354.actonservice.com^ -||a29358.actonservice.com^ -||a29364.actonservice.com^ -||a29388.actonservice.com^ -||a29395.actonservice.com^ -||a29397.actonservice.com^ -||a29412.actonservice.com^ -||a29418.actonservice.com^ -||a29421.actonservice.com^ -||a29424.actonservice.com^ -||a29429.actonservice.com^ -||a29431.actonservice.com^ -||a29433.actonservice.com^ -||a29440.actonservice.com^ -||a29478.actonservice.com^ -||a29483.actonservice.com^ -||a29508.actonservice.com^ -||a29521.actonservice.com^ -||a29523.actonservice.com^ -||a29539.actonservice.com^ -||a29546.actonservice.com^ -||a29547.actonservice.com^ -||a29553.actonservice.com^ -||a29565.actonservice.com^ -||a29582.actonservice.com^ -||a29586.actonservice.com^ -||a29643.actonservice.com^ -||a29655.actonservice.com^ -||a29673.actonservice.com^ -||a29682.actonservice.com^ -||a29685.actonservice.com^ -||a29688.actonservice.com^ -||a29710.actonservice.com^ -||a29715.actonservice.com^ -||a29721.actonservice.com^ -||a29751.actonservice.com^ -||a29757.actonservice.com^ -||a29763.actonservice.com^ -||a29772.actonservice.com^ -||a29774.actonservice.com^ -||a29784.actonservice.com^ -||a29794.actonservice.com^ -||a29798.actonservice.com^ -||a29817.actonservice.com^ -||a29820.actonservice.com^ -||a29823.actonservice.com^ -||a29827.actonservice.com^ -||a29831.actonservice.com^ -||a29832.actonservice.com^ -||a29846.actonservice.com^ -||a29866.actonservice.com^ -||a29868.actonservice.com^ -||a29881.actonservice.com^ -||a29902.actonservice.com^ -||a29975.actonservice.com^ -||a30003.actonservice.com^ -||a30010.actonservice.com^ -||a30526.actonservice.com^ -||a30667.actonservice.com^ -||a30668.actonservice.com^ -||a30798.actonservice.com^ -||a30867.actonservice.com^ -||a31047.actonservice.com^ -||a31112.actonservice.com^ -||a31248.actonservice.com^ -||a31254.actonservice.com^ -||a31734.actonservice.com^ -||a31970.actonservice.com^ -||a31985.actonservice.com^ -||a32224.actonservice.com^ -||a32227.actonservice.com^ -||a32270.actonservice.com^ -||a32359.actonservice.com^ -||a32559.actonservice.com^ -||a32800.actonservice.com^ -||a32808.actonservice.com^ -||a32858.actonservice.com^ -||a32861.actonservice.com^ -||a33167.actonservice.com^ -||a33174.actonservice.com^ -||a33374.actonservice.com^ -||a33393.actonservice.com^ -||a33437.actonservice.com^ -||a33519.actonservice.com^ -||a33612.actonservice.com^ -||a33882.actonservice.com^ -||a33994.actonservice.com^ -||a34357.actonservice.com^ -||a34396.actonservice.com^ -||a34436.actonservice.com^ -||a34504.actonservice.com^ -||a34524.actonservice.com^ -||a34529.actonservice.com^ -||a34549.actonservice.com^ -||a34553.actonservice.com^ -||a34648.actonservice.com^ -||a34718.actonservice.com^ -||a34764.actonservice.com^ -||a34773.actonservice.com^ -||a34894.actonservice.com^ -||a34938.actonservice.com^ -||a34969.actonservice.com^ -||a34989.actonservice.com^ -||a35094.actonservice.com^ -||a35110.actonservice.com^ -||a35161.actonservice.com^ -||a35310.actonservice.com^ -||a35388.actonservice.com^ -||a35415.actonservice.com^ -||a35421.actonservice.com^ -||a35511.actonservice.com^ -||a35617.actonservice.com^ -||a35688.actonservice.com^ -||a35697.actonservice.com^ -||a35827.actonservice.com^ -||a35851.actonservice.com^ -||a35907.actonservice.com^ -||a35910.actonservice.com^ -||a35933.actonservice.com^ -||a36025.actonservice.com^ -||a36117.actonservice.com^ -||a36162.actonservice.com^ -||a36168.actonservice.com^ -||a36210.actonservice.com^ -||a36213.actonservice.com^ -||a36216.actonservice.com^ -||a36243.actonservice.com^ -||a36279.actonservice.com^ -||a36331.actonservice.com^ -||a36531.actonservice.com^ -||a36535.actonservice.com^ -||a36539.actonservice.com^ -||a36575.actonservice.com^ -||a36590.actonservice.com^ -||a36723.actonservice.com^ -||a36755.actonservice.com^ -||a36777.actonservice.com^ -||a36791.actonservice.com^ -||a36961.actonservice.com^ -||a36966.actonservice.com^ -||a37023.actonservice.com^ -||a37518.actonservice.com^ -||a37619.actonservice.com^ -||a37641.actonservice.com^ -||a37695.actonservice.com^ -||a37697.actonservice.com^ -||a37929.actonservice.com^ -||a37941.actonservice.com^ -||a38028.actonservice.com^ -||a38031.actonservice.com^ -||a38137.actonservice.com^ -||a38256.actonservice.com^ -||a38619.actonservice.com^ -||a38742.actonservice.com^ -||a38757.actonservice.com^ -||a38761.actonservice.com^ -||a38820.actonservice.com^ -||a38951.actonservice.com^ -||a39173.actonservice.com^ -||a39176.actonservice.com^ -||a39177.actonservice.com^ -||a39210.actonservice.com^ -||a39465.actonservice.com^ -||a39468.actonservice.com^ -||a39498.actonservice.com^ -||a39539.actonservice.com^ -||a39606.actonservice.com^ -||a39662.actonservice.com^ -||a39705.actonservice.com^ -||a39744.actonservice.com^ -||a39780.actonservice.com^ -||a39804.actonservice.com^ -||a40194.actonservice.com^ -||a40248.actonservice.com^ -||a40452.actonservice.com^ -||a40545.actonservice.com^ -||a40554.actonservice.com^ -||a40587.actonservice.com^ -||a40865.actonservice.com^ -||a40890.actonservice.com^ -||a40898.actonservice.com^ -||a40899.actonservice.com^ -||a40901.actonservice.com^ -||a40904.actonservice.com^ -||a40905.actonservice.com^ -||a40907.actonservice.com^ -||a40910.actonservice.com^ -||a40913.actonservice.com^ -||a40916.actonservice.com^ -||a40917.actonservice.com^ -||a41166.actonservice.com^ -||a41172.actonservice.com^ -||a41199.actonservice.com^ -||a41309.actonservice.com^ -||a41334.actonservice.com^ -||a41342.actonservice.com^ -||a41385.actonservice.com^ -||a41505.actonservice.com^ -||a41522.actonservice.com^ -||a41547.actonservice.com^ -||a41550.actonservice.com^ -||a41553.actonservice.com^ -||a41556.actonservice.com^ -||a41558.actonservice.com^ -||a41609.actonservice.com^ -||a41628.actonservice.com^ -||a41643.actonservice.com^ -||a41691.actonservice.com^ -||a41714.actonservice.com^ -||a41768.actonservice.com^ -||a41947.actonservice.com^ -||a41976.actonservice.com^ -||a42072.actonservice.com^ -||a42073.actonservice.com^ -||a42096.actonservice.com^ -||a42330.actonservice.com^ -||a42368.actonservice.com^ -||a42382.actonservice.com^ -||a42384.actonservice.com^ -||a42575.actonservice.com^ -||a42579.actonservice.com^ -||a42580.actonservice.com^ -||a42605.actonservice.com^ -||a42623.actonservice.com^ -||a42624.actonservice.com^ -||a42625.actonservice.com^ -||a42626.actonservice.com^ -||a42628.actonservice.com^ -||a42701.actonservice.com^ -||a42707.actonservice.com^ -||a42767.actonservice.com^ -||a42807.actonservice.com^ -||a42845.actonservice.com^ -||a42872.actonservice.com^ -||a42900.actonservice.com^ -||a42906.actonservice.com^ -||a42917.actonservice.com^ -||a42918.actonservice.com^ -||a42919.actonservice.com^ -||a42920.actonservice.com^ -||a42926.actonservice.com^ -||a42927.actonservice.com^ -||a43050.actonservice.com^ -||a43094.actonservice.com^ -||a43242.actonservice.com^ -||a43245.actonservice.com^ -||a43246.actonservice.com^ -||a43248.actonservice.com^ -||a43253.actonservice.com^ -||a43254.actonservice.com^ -||a43256.actonservice.com^ -||a43257.actonservice.com^ -||a43260.actonservice.com^ -||a43261.actonservice.com^ -||a43263.actonservice.com^ -||a43271.actonservice.com^ -||a43273.actonservice.com^ -||a43285.actonservice.com^ -||a43286.actonservice.com^ -||a43287.actonservice.com^ -||a43290.actonservice.com^ -||a43293.actonservice.com^ -||a43294.actonservice.com^ -||a43295.actonservice.com^ -||a43296.actonservice.com^ -||a43305.actonservice.com^ -||a43307.actonservice.com^ -||a43309.actonservice.com^ -||a43312.actonservice.com^ -||a43315.actonservice.com^ -||a43317.actonservice.com^ -||a43318.actonservice.com^ -||a43320.actonservice.com^ -||a43321.actonservice.com^ -||a43326.actonservice.com^ -||a43329.actonservice.com^ -||a43333.actonservice.com^ -||a43337.actonservice.com^ -||a43338.actonservice.com^ -||a43339.actonservice.com^ -||a43345.actonservice.com^ -||a43347.actonservice.com^ -||a43348.actonservice.com^ -||a43351.actonservice.com^ -||a43354.actonservice.com^ -||a43366.actonservice.com^ -||a43367.actonservice.com^ -||a43368.actonservice.com^ -||a43369.actonservice.com^ -||a43372.actonservice.com^ -||a43373.actonservice.com^ -||a43375.actonservice.com^ -||a43376.actonservice.com^ -||a43378.actonservice.com^ -||a43379.actonservice.com^ -||a43380.actonservice.com^ -||a43381.actonservice.com^ -||a43385.actonservice.com^ -||a43386.actonservice.com^ -||a43396.actonservice.com^ -||a43406.actonservice.com^ -||a43409.actonservice.com^ -||a43410.actonservice.com^ -||a43411.actonservice.com^ -||a43412.actonservice.com^ -||a43414.actonservice.com^ -||a43421.actonservice.com^ -||a43422.actonservice.com^ -||a43423.actonservice.com^ -||a43424.actonservice.com^ -||a43444.actonservice.com^ -||a43445.actonservice.com^ -||a43447.actonservice.com^ -||a43454.actonservice.com^ -||a43456.actonservice.com^ -||a43461.actonservice.com^ -||a43462.actonservice.com^ -||a43465.actonservice.com^ -||a43472.actonservice.com^ -||a43474.actonservice.com^ -||a43477.actonservice.com^ -||a43478.actonservice.com^ -||a43479.actonservice.com^ -||a43480.actonservice.com^ -||a43482.actonservice.com^ -||a43486.actonservice.com^ -||a43494.actonservice.com^ -||a43498.actonservice.com^ -||a43501.actonservice.com^ -||a43504.actonservice.com^ -||a43507.actonservice.com^ -||a43521.actonservice.com^ -||a43523.actonservice.com^ -||a43524.actonservice.com^ -||a43527.actonservice.com^ -||a43528.actonservice.com^ -||a43530.actonservice.com^ -||a43533.actonservice.com^ -||a43534.actonservice.com^ -||a43538.actonservice.com^ -||a43539.actonservice.com^ -||a43542.actonservice.com^ -||a43545.actonservice.com^ -||a43546.actonservice.com^ -||a43547.actonservice.com^ -||a43548.actonservice.com^ -||a43550.actonservice.com^ -||a43553.actonservice.com^ -||a43554.actonservice.com^ -||a43557.actonservice.com^ -||a43558.actonservice.com^ -||a43561.actonservice.com^ -||a43562.actonservice.com^ -||a43569.actonservice.com^ -||a43571.actonservice.com^ -||a43572.actonservice.com^ -||a43573.actonservice.com^ -||a43576.actonservice.com^ -||a43577.actonservice.com^ -||a43582.actonservice.com^ -||a43587.actonservice.com^ -||a43590.actonservice.com^ -||a43591.actonservice.com^ -||a43593.actonservice.com^ -||a43594.actonservice.com^ -||a43595.actonservice.com^ -||a43596.actonservice.com^ -||a43597.actonservice.com^ -||a43601.actonservice.com^ -||a43604.actonservice.com^ -||a43606.actonservice.com^ -||a43607.actonservice.com^ -||a43611.actonservice.com^ -||a43613.actonservice.com^ -||a43614.actonservice.com^ -||a43619.actonservice.com^ -||a43621.actonservice.com^ -||a43624.actonservice.com^ -||a43626.actonservice.com^ -||a43628.actonservice.com^ -||a43630.actonservice.com^ -||a43634.actonservice.com^ -||a43640.actonservice.com^ -||a43645.actonservice.com^ -||a43649.actonservice.com^ -||a43658.actonservice.com^ -||a43661.actonservice.com^ -||a43662.actonservice.com^ -||a43665.actonservice.com^ -||a43666.actonservice.com^ -||a43667.actonservice.com^ -||a43668.actonservice.com^ -||a43672.actonservice.com^ -||a43677.actonservice.com^ -||a43678.actonservice.com^ -||a43685.actonservice.com^ -||a43694.actonservice.com^ -||a43698.actonservice.com^ -||a43702.actonservice.com^ -||a43708.actonservice.com^ -||a43710.actonservice.com^ -||a43711.actonservice.com^ -||a43712.actonservice.com^ -||a43715.actonservice.com^ -||a43723.actonservice.com^ -||a43724.actonservice.com^ -||a43725.actonservice.com^ -||a43726.actonservice.com^ -||a43733.actonservice.com^ -||a43735.actonservice.com^ -||a43736.actonservice.com^ -||a43737.actonservice.com^ -||a43738.actonservice.com^ -||a43740.actonservice.com^ -||a43746.actonservice.com^ -||a43748.actonservice.com^ -||a43749.actonservice.com^ -||a43750.actonservice.com^ -||a43751.actonservice.com^ -||a43757.actonservice.com^ -||a43762.actonservice.com^ -||a43765.actonservice.com^ -||a43766.actonservice.com^ -||a43767.actonservice.com^ -||a43770.actonservice.com^ -||a43772.actonservice.com^ -||a43775.actonservice.com^ -||a43778.actonservice.com^ -||a43780.actonservice.com^ -||a43782.actonservice.com^ -||a43784.actonservice.com^ -||a43785.actonservice.com^ -||a43786.actonservice.com^ -||a43787.actonservice.com^ -||a43789.actonservice.com^ -||a43790.actonservice.com^ -||a43791.actonservice.com^ -||a43792.actonservice.com^ -||a43794.actonservice.com^ -||a43795.actonservice.com^ -||a43797.actonservice.com^ -||a43800.actonservice.com^ -||a43801.actonservice.com^ -||a43803.actonservice.com^ -||a43804.actonservice.com^ -||a43805.actonservice.com^ -||a43806.actonservice.com^ -||a43807.actonservice.com^ -||a43814.actonservice.com^ -||a43818.actonservice.com^ -||a43820.actonservice.com^ -||a43821.actonservice.com^ -||a43830.actonservice.com^ -||a43834.actonservice.com^ -||a43838.actonservice.com^ -||a43839.actonservice.com^ -||a43840.actonservice.com^ -||a43843.actonservice.com^ -||a43846.actonservice.com^ -||a43847.actonservice.com^ -||a43848.actonservice.com^ -||a43849.actonservice.com^ -||a43853.actonservice.com^ -||a43855.actonservice.com^ -||a43856.actonservice.com^ -||a43858.actonservice.com^ -||a43860.actonservice.com^ -||a43863.actonservice.com^ -||a43866.actonservice.com^ -||a43869.actonservice.com^ -||a43870.actonservice.com^ -||a43871.actonservice.com^ -||a43875.actonservice.com^ -||a43876.actonservice.com^ -||a43878.actonservice.com^ -||a43889.actonservice.com^ -||a43893.actonservice.com^ -||a43896.actonservice.com^ -||a43899.actonservice.com^ -||a43901.actonservice.com^ -||a43906.actonservice.com^ -||a43909.actonservice.com^ -||a43910.actonservice.com^ -||a43913.actonservice.com^ -||a43918.actonservice.com^ -||a43919.actonservice.com^ -||a43921.actonservice.com^ -||a43922.actonservice.com^ -||a43923.actonservice.com^ -||a43924.actonservice.com^ -||a43933.actonservice.com^ -||a43934.actonservice.com^ -||a43937.actonservice.com^ -||a43939.actonservice.com^ -||a43951.actonservice.com^ -||a43952.actonservice.com^ -||a43954.actonservice.com^ -||a43957.actonservice.com^ -||a43966.actonservice.com^ -||a43967.actonservice.com^ -||a43968.actonservice.com^ -||a43972.actonservice.com^ -||a43976.actonservice.com^ -||a43977.actonservice.com^ -||a43981.actonservice.com^ -||a43982.actonservice.com^ -||a43993.actonservice.com^ -||a43994.actonservice.com^ -||a43995.actonservice.com^ -||a43996.actonservice.com^ -||a43999.actonservice.com^ -||a44000.actonservice.com^ -||a44022.actonservice.com^ -||a44023.actonservice.com^ -||a44031.actonservice.com^ -||a44036.actonservice.com^ -||a44043.actonservice.com^ -||a44050.actonservice.com^ -||a44051.actonservice.com^ -||a44055.actonservice.com^ -||a44057.actonservice.com^ -||a44058.actonservice.com^ -||a44090.actonservice.com^ -||a44093.actonservice.com^ -||a44094.actonservice.com^ -||a44095.actonservice.com^ -||a44096.actonservice.com^ -||a44097.actonservice.com^ -||a44102.actonservice.com^ -||a44105.actonservice.com^ -||a44107.actonservice.com^ -||a44111.actonservice.com^ -||a44112.actonservice.com^ -||a44113.actonservice.com^ -||a44116.actonservice.com^ -||a44119.actonservice.com^ -||a44120.actonservice.com^ -||a44121.actonservice.com^ -||a44122.actonservice.com^ -||a44125.actonservice.com^ -||a44127.actonservice.com^ -||a44128.actonservice.com^ -||a44130.actonservice.com^ -||a44131.actonservice.com^ -||a44134.actonservice.com^ -||a44135.actonservice.com^ -||a44137.actonservice.com^ -||a44138.actonservice.com^ -||a44143.actonservice.com^ -||a44145.actonservice.com^ -||a44147.actonservice.com^ -||a44148.actonservice.com^ -||a44155.actonservice.com^ -||a44156.actonservice.com^ -||a44157.actonservice.com^ -||a44171.actonservice.com^ -||a44172.actonservice.com^ -||a44177.actonservice.com^ -||a44178.actonservice.com^ -||a44179.actonservice.com^ -||a44182.actonservice.com^ -||a44183.actonservice.com^ -||a44184.actonservice.com^ -||a44190.actonservice.com^ -||a44193.actonservice.com^ -||a44195.actonservice.com^ -||a44200.actonservice.com^ -||a44201.actonservice.com^ -||a44203.actonservice.com^ -||a44205.actonservice.com^ -||a44211.actonservice.com^ -||a44213.actonservice.com^ -||a44214.actonservice.com^ -||a44222.actonservice.com^ -||a44224.actonservice.com^ -||a44227.actonservice.com^ -||a44230.actonservice.com^ -||a44232.actonservice.com^ -||a44233.actonservice.com^ -||a44241.actonservice.com^ -||a44246.actonservice.com^ -||a44251.actonservice.com^ -||a44263.actonservice.com^ -||a44267.actonservice.com^ -||a44269.actonservice.com^ -||a44270.actonservice.com^ -||a44271.actonservice.com^ -||a44272.actonservice.com^ -||a44273.actonservice.com^ -||a44274.actonservice.com^ -||a44275.actonservice.com^ -||a44277.actonservice.com^ -||a44281.actonservice.com^ -||a44287.actonservice.com^ -||a44289.actonservice.com^ -||a44293.actonservice.com^ -||a44300.actonservice.com^ -||a44301.actonservice.com^ -||a44304.actonservice.com^ -||a44305.actonservice.com^ -||a44306.actonservice.com^ -||a44307.actonservice.com^ -||a44308.actonservice.com^ -||a44309.actonservice.com^ -||a44310.actonservice.com^ -||a44311.actonservice.com^ -||a44313.actonservice.com^ -||a44314.actonservice.com^ -||a44315.actonservice.com^ -||a44316.actonservice.com^ -||a44320.actonservice.com^ -||a44321.actonservice.com^ -||a44322.actonservice.com^ -||a44325.actonservice.com^ -||a44329.actonservice.com^ -||a44332.actonservice.com^ -||a44342.actonservice.com^ -||a44344.actonservice.com^ -||a44347.actonservice.com^ -||a44352.actonservice.com^ -||a44354.actonservice.com^ -||a44356.actonservice.com^ -||a44357.actonservice.com^ -||a44358.actonservice.com^ -||a44359.actonservice.com^ -||a44363.actonservice.com^ -||a44364.actonservice.com^ -||a44370.actonservice.com^ -||a44371.actonservice.com^ -||a44379.actonservice.com^ -||a44395.actonservice.com^ -||a44396.actonservice.com^ -||a44397.actonservice.com^ -||a44413.actonservice.com^ -||a44529.actonservice.com^ -||a44530.actonservice.com^ -||a44539.actonservice.com^ -||a44548.actonservice.com^ -||a44557.actonservice.com^ -||a44569.actonservice.com^ -||a44575.actonservice.com^ -||a44581.actonservice.com^ -||a44587.actonservice.com^ -||a44595.actonservice.com^ -||a44596.actonservice.com^ -||a44599.actonservice.com^ -||a44614.actonservice.com^ -||a44619.actonservice.com^ -||a44621.actonservice.com^ -||a44627.actonservice.com^ -||a44644.actonservice.com^ -||a44656.actonservice.com^ -||a44662.actonservice.com^ -||a44670.actonservice.com^ -||a44685.actonservice.com^ -||a44686.actonservice.com^ -||a44687.actonservice.com^ -||a44688.actonservice.com^ -||a44708.actonservice.com^ -||a44712.actonservice.com^ -||a44734.actonservice.com^ -||a44745.actonservice.com^ -||a44746.actonservice.com^ -||a44748.actonservice.com^ -||a44765.actonservice.com^ -||a44766.actonservice.com^ -||a44770.actonservice.com^ -||a44772.actonservice.com^ -||a44775.actonservice.com^ -||a44784.actonservice.com^ -||a44785.actonservice.com^ -||a44791.actonservice.com^ -||a44795.actonservice.com^ -||a44820.actonservice.com^ -||a44828.actonservice.com^ -||a44831.actonservice.com^ -||a44833.actonservice.com^ -||a44834.actonservice.com^ -||a44838.actonservice.com^ -||a44839.actonservice.com^ -||a44840.actonservice.com^ -||a44845.actonservice.com^ -||a44848.actonservice.com^ -||a44853.actonservice.com^ -||a44857.actonservice.com^ -||a44862.actonservice.com^ -||a44863.actonservice.com^ -||a44865.actonservice.com^ -||a44867.actonservice.com^ -||a44876.actonservice.com^ -||a45000.actonservice.com^ -||a45001.actonservice.com^ -||a45002.actonservice.com^ -||a45009.actonservice.com^ -||a45012.actonservice.com^ -||a45021.actonservice.com^ -||a45024.actonservice.com^ -||a45035.actonservice.com^ -||a45040.actonservice.com^ -||a45044.actonservice.com^ -||a45050.actonservice.com^ -||a45064.actonservice.com^ -||a45071.actonservice.com^ -||a45080.actonservice.com^ -||a45115.actonservice.com^ -||a45125.actonservice.com^ -||a45126.actonservice.com^ -||a45139.actonservice.com^ -||a45144.actonservice.com^ -||a45155.actonservice.com^ -||a45157.actonservice.com^ -||a45158.actonservice.com^ -||a45163.actonservice.com^ -||a45165.actonservice.com^ -||a45167.actonservice.com^ -||a45171.actonservice.com^ -||a45175.actonservice.com^ -||a45192.actonservice.com^ -||a45193.actonservice.com^ -||a45194.actonservice.com^ -||a45197.actonservice.com^ -||a45205.actonservice.com^ -||a45208.actonservice.com^ -||a45213.actonservice.com^ -||a45218.actonservice.com^ -||a45223.actonservice.com^ -||a45225.actonservice.com^ -||a45226.actonservice.com^ -||a45230.actonservice.com^ -||a45231.actonservice.com^ -||a45233.actonservice.com^ -||a45235.actonservice.com^ -||a45241.actonservice.com^ -||a45245.actonservice.com^ -||a45246.actonservice.com^ -||a45256.actonservice.com^ -||a45260.actonservice.com^ -||a45261.actonservice.com^ -||a45262.actonservice.com^ -||a45263.actonservice.com^ -||a45266.actonservice.com^ -||a45268.actonservice.com^ -||a45270.actonservice.com^ -||a45271.actonservice.com^ -||a45272.actonservice.com^ -||a45274.actonservice.com^ -||a45275.actonservice.com^ -||a45276.actonservice.com^ -||a45277.actonservice.com^ -||a45278.actonservice.com^ -||a45279.actonservice.com^ -||a45282.actonservice.com^ -||a45289.actonservice.com^ -||a45290.actonservice.com^ -||a45295.actonservice.com^ -||a45298.actonservice.com^ -||a45300.actonservice.com^ -||a45305.actonservice.com^ -||a45306.actonservice.com^ -||a45307.actonservice.com^ -||a45310.actonservice.com^ -||a45318.actonservice.com^ -||a45330.actonservice.com^ -||a45331.actonservice.com^ -||a45337.actonservice.com^ -||a45338.actonservice.com^ -||a45351.actonservice.com^ -||a45353.actonservice.com^ -||a45356.actonservice.com^ -||a45357.actonservice.com^ -||a45358.actonservice.com^ -||a45359.actonservice.com^ -||a45360.actonservice.com^ -||a45362.actonservice.com^ -||a45363.actonservice.com^ -||a45364.actonservice.com^ -||a45365.actonservice.com^ -||a45366.actonservice.com^ -||a45367.actonservice.com^ -||a45375.actonservice.com^ -||a45395.actonservice.com^ -||a45403.actonservice.com^ -||a45405.actonservice.com^ -||a45406.actonservice.com^ -||a45411.actonservice.com^ -||a45415.actonservice.com^ -||a45420.actonservice.com^ -||a45427.actonservice.com^ -||a45428.actonservice.com^ -||a45429.actonservice.com^ -||a45443.actonservice.com^ -||a45445.actonservice.com^ -||a45449.actonservice.com^ -||a45451.actonservice.com^ -||a45452.actonservice.com^ -||a45456.actonservice.com^ -||a45463.actonservice.com^ -||a45477.actonservice.com^ -||a45478.actonservice.com^ -||a45498.actonservice.com^ -||a45499.actonservice.com^ -||a45500.actonservice.com^ -||a45504.actonservice.com^ -||a45508.actonservice.com^ -||a45513.actonservice.com^ -||a45514.actonservice.com^ -||a45519.actonservice.com^ -||a45520.actonservice.com^ -||a45521.actonservice.com^ -||a45526.actonservice.com^ -||a45539.actonservice.com^ -||a45542.actonservice.com^ -||a45548.actonservice.com^ -||a45553.actonservice.com^ -||a45554.actonservice.com^ -||a45570.actonservice.com^ -||a45579.actonservice.com^ -||a45580.actonservice.com^ -||a45584.actonservice.com^ -||a45592.actonservice.com^ -||a45594.actonservice.com^ -||a45609.actonservice.com^ -||a45612.actonservice.com^ -||a45623.actonservice.com^ -||a45629.actonservice.com^ -||a45634.actonservice.com^ -||a45636.actonservice.com^ -||a45641.actonservice.com^ -||a45648.actonservice.com^ -||a45655.actonservice.com^ -||a45656.actonservice.com^ -||a45660.actonservice.com^ -||a45662.actonservice.com^ -||a45682.actonservice.com^ -||a45686.actonservice.com^ -||a45697.actonservice.com^ -||a45704.actonservice.com^ -||a45710.actonservice.com^ -||a45712.actonservice.com^ -||a45713.actonservice.com^ -||a45716.actonservice.com^ -||a45718.actonservice.com^ -||a45720.actonservice.com^ -||a45722.actonservice.com^ -||a45733.actonservice.com^ -||a45734.actonservice.com^ -||a45751.actonservice.com^ -||a45752.actonservice.com^ -||a45759.actonservice.com^ -||a45760.actonservice.com^ -||a45770.actonservice.com^ -||a45772.actonservice.com^ -||a45785.actonservice.com^ -||a45794.actonservice.com^ -||a45797.actonservice.com^ -||a45810.actonservice.com^ -||a45817.actonservice.com^ -||a45823.actonservice.com^ -||a45831.actonservice.com^ -||a45836.actonservice.com^ -||a45841.actonservice.com^ -||a45851.actonservice.com^ -||a45855.actonservice.com^ -||a45856.actonservice.com^ -||a45857.actonservice.com^ -||a45863.actonservice.com^ -||a45868.actonservice.com^ -||a45886.actonservice.com^ -||a45887.actonservice.com^ -||a45899.actonservice.com^ -||a45910.actonservice.com^ -||a45911.actonservice.com^ -||a45963.actonservice.com^ -||a45964.actonservice.com^ -||a45973.actonservice.com^ -||a46060.actonservice.com^ -||a46062.actonservice.com^ -||a46069.actonservice.com^ -||a46090.actonservice.com^ -||a46097.actonservice.com^ -||a46106.actonservice.com^ -||a46122.actonservice.com^ -||a46136.actonservice.com^ -||a46180.actonservice.com^ -||a46248.actonservice.com^ -||a46268.actonservice.com^ -||a46300.actonservice.com^ -||a46303.actonservice.com^ -||a46306.actonservice.com^ -||a8780.actonservice.com^ -||a9643.actonservice.com^ -||aad-marketing.ascendeventmedia.com^ -||aad.actonservice.com^ -||aagon.actonservice.com^ -||aahamarketing.hubinternational.com^ -||aajtech.actonservice.com^ -||aamcompany.actonservice.com^ -||abclegal.actonservice.com^ -||abracon.actonservice.com^ -||absinfo.eagle.org^ -||absoft.actonservice.com^ -||acadian-asset.actonservice.com^ -||acclaro.actonservice.com^ -||accumula.actonservice.com^ -||accuride.actonservice.com^ -||accutrain.actonservice.com^ -||accuzip.actonservice.com^ -||acemetrix.actonservice.com^ -||acendas.actonservice.com^ -||aclordi.actonservice.com^ -||act-on-marketing.advancedsolutionsplm.com^ -||act-on-marketing.asidesignsoftware.com^ -||act-on-marketing.lifesciences.solutions^ -||act-on-marketing.slot3d.com^ -||act-on-marketing.xpedientsoftware.com^ -||act-on.ioactive.com^ -||act-on.milestoneinternet.com^ -||act-on.snb.com^ -||act-on.up.edu.pe^ -||act.boxerproperty.com^ -||act.colorlines.com^ -||act.convergencetraining.com^ -||act.cwsglobal.org^ -||act.davistech.edu^ -||act.enli.net^ -||act.lanap.com^ -||act.online.engineering.nyu.edu^ -||act.pivotpointsecurity.com^ -||act.plumvoice.com^ -||act.raceforward.org^ -||act.soneticscorp.com^ -||act.wernerelectric.com^ -||actie.milieudefensie.nl^ -||action.advisorycloud.com^ -||action.logixfiber.com^ -||action.totalcompbuilder.com^ -||action.totalrewardssoftware.com^ -||action.unifiedoffice.com^ -||acton.ajmfg.com^ -||acton.altep.com^ -||acton.bluetreesystems.com^ -||acton.brightspeed.com^ -||acton.dotcom-monitor.com^ -||acton.goldencomm.com^ -||acton.iriworldwide.com^ -||acton.locatesmarter.com^ -||acton.maintainer.com^ -||acton.marketing.knowlarity.com^ -||acton.oosis.com^ -||acton.outleads.com^ -||acton.prolabs.com^ -||acton.sightlife.org^ -||acton.simpleviewinc.com^ -||acton.the-tma.org^ -||acton.tourismireland.com^ -||acton.trefis.com^ -||actondev.actonservice.com^ -||actonhrm.mercuryhealthcare.com^ -||adm.adminstrumentengineering.com.au^ -||administrator.pnclassaction.com^ -||admission.concord.edu^ -||admissions.easterncollege.ca^ -||admissions.trios.com^ -||admit.mountsaintvincent.edu^ -||advancedsolutions.actonservice.com^ -||advanstar.actonservice.com^ -||advantageauburn.actonservice.com^ -||advantageind.actonservice.com^ -||advisers.kingstonsmith.co.uk^ -||advisor.raa.com^ -||advisors.beaconfinserv.com^ -||advisorycloud-dev.actonservice.com^ -||advtek.actonservice.com^ -||ae.cobweb.com^ -||aeromark.actonservice.com^ -||africa.promo.skf.com^ -||africafr.promo.skf.com^ -||aftermath.actonservice.com^ -||afterschoolallstars.actonservice.com^ -||agcs-knowledge.allianz.com^ -||agvinfo.kollmorgen.com^ -||ai.promo.skf.com^ -||aicipc.actonservice.com^ -||aip.actonservice.com^ -||air-weigh.actonservice.com^ -||aircuity.actonservice.com^ -||airefcoinc.actonservice.com^ -||alamocapital.actonservice.com^ -||alereinc.actonservice.com^ -||aleroninc.actonservice.com^ -||alhi.actonservice.com^ -||alicat.actonservice.com^ -||allegiant-partners.actonservice.com^ -||alliantdata.actonservice.com^ -||alliedfundingcorp.actonservice.com^ -||allinsurance.allinsure.ca^ -||allreach.actonservice.com^ -||allrisks.actonservice.com^ -||allstarfg.actonservice.com^ -||almalasers.actonservice.com^ -||alphasimplex.actonservice.com^ -||alticoadvisors.actonservice.com^ -||altn.actonservice.com^ -||alwayscare.starmountlife.com^ -||alwayscarebenefits.actonservice.com^ -||amalto.actonservice.com^ -||americanmarketinggroup.actonservice.com^ -||americanportfolios.actonservice.com^ -||americanroller.actonservice.com^ -||americanuniversityofantigua.actonservice.com^ -||americanwatergroup.actonservice.com^ -||amersc.actonservice.com^ -||amigraphics.actonservice.com^ -||amimon.actonservice.com^ -||amitracks.actonservice.com^ -||amsunsolar.actonservice.com^ -||analytics.rivaliq.com^ -||anesthesiaos.actonservice.com^ -||antonsystems.actonservice.com^ -||ao-marketing.dbiyes.com^ -||ao-marketing.essendant.com^ -||ao-mkt.tableausoftware.com^ -||ao.jsitel.com^ -||ao.pioncomm.net^ -||ao.tolydigital.net^ -||aom.smartbrief.com^ -||aomarketing.blytheco.com^ -||aon.insurancemail.ca^ -||aon.smartbrief.com^ -||aooptout.zoominformation.com^ -||aopcoms.aoptec.com^ -||apbspeakers.actonservice.com^ -||apcerpharma.actonservice.com^ -||aperio.leicabiosystems.com^ -||apisensor.actonservice.com^ -||apllogistics.actonservice.com^ -||apparound.actonservice.com^ -||apply.bluetrustloans.com^ -||apply.maxlend.com^ -||apprhs.hrm.healthgrades.com^ -||apptus.actonservice.com^ -||aptare.actonservice.com^ -||apwip-dev.actonservice.com^ -||apwip.actonservice.com^ -||aqr.actonservice.com^ -||ar.promo.skf.com^ -||aragenbio.actonservice.com^ -||aragonresearch.actonservice.com^ -||argyleforum.actonservice.com^ -||arisglobal.actonservice.com^ -||arrayasolutions.actonservice.com^ -||art2wave.actonservice.com^ -||artisan.actonservice.com^ -||arvig.actonservice.com^ -||asap-systems.actonservice.com^ -||asc.asc-net.com^ -||ascassociation.actonservice.com^ -||ascendintegratedmedia.actonservice.com^ -||ascentcrm.actonservice.com^ -||asentech-dev.actonservice.com^ -||ashasafety.actonservice.com^ -||ashcroft.actonservice.com^ -||ashergroup.actonservice.com^ -||asiamarketing.sedgwick.com^ -||asimarketing.antonsystems.com^ -||assets.channelplay.in^ -||association.locktonaffinity.net^ -||assure360.actonservice.com^ -||asteriaed.actonservice.com^ -||astromed.actonservice.com^ -||at.sharpmarketing.eu^ -||atbs.actonservice.com^ -||aticti.actonservice.com^ -||atlantic-general-hospital.hrm.healthgrades.com^ -||atlanticlabequipment.actonservice.com^ -||atlastravel.actonservice.com^ -||atlasworldusa.actonservice.com^ -||atsmobile.actonservice.com^ -||attivoconsulting.actonservice.com^ -||au.promo.skf.com^ -||audiofly.actonservice.com^ -||augustahealth.hrm.healthgrades.com^ -||aumarketing.sedgwick.com^ -||aurelianlending.actonservice.com^ -||austria.promo.skf.com^ -||authentic3d.actonservice.com^ -||automate.gixxy.com^ -||automotive.autodeskcommunications.com^ -||autozone.actonservice.com^ -||avai.actonservice.com^ -||avalere.actonservice.com^ -||avaloninnovation.actonservice.com^ -||avandsecurity.actonservice.com^ -||avantidestinations.actonservice.com^ -||avantifinance.actonservice.com^ -||avertium.actonservice.com^ -||avid.actonservice.com^ -||aviko.actonservice.com^ -||avnet.actonservice.com^ -||avolvesoftware.actonservice.com^ -||axion-biosystems.actonservice.com^ -||axisgroupbenefits.axiscapital.com^ -||axisinsurance.axiscapital.com^ -||axisre.axiscapital.com^ -||bakercommunications.actonservice.com^ -||ballantine.actonservice.com^ -||ballymoregroup.actonservice.com^ -||baltics.promo.skf.com^ -||bambee.actonservice.com^ -||bannerhealth.hrm.healthgrades.com^ -||baptisthealth.hrm.healthgrades.com^ -||bayshoresystems.actonservice.com^ -||bcanl.bca-autoveiling.nl^ -||bcc-ltd.actonservice.com^ -||bcob.charlotte.edu^ -||bcob.uncc.edu^ -||bcs.actonservice.com^ -||bdo.actonservice.com^ -||bdoaustralia.bdo.com.au^ -||beaconhealthsystem.hrm.healthgrades.com^ -||beanworks.actonservice.com^ -||beaumont.actonservice.com^ -||benelux.promo.skf.com^ -||bersondeanstevens.actonservice.com^ -||bestbuy.actonservice.com^ -||bestinfo.bluetrustloans.com^ -||bg.promo.skf.com^ -||bgiamericas.actonservice.com^ -||bi.concordesolutions.com^ -||bigcustomernetwork.actonservice.com^ -||biminibliss.rwbimini.com^ -||bioagiliytix.actonservice.com^ -||bioanalyticalmarketing.eurofins-info.com^ -||biophysicsgroup.actonservice.com^ -||bison.actonservice.com^ -||biworldwide.actonservice.com^ -||biznews.oregon.gov^ -||bizz.cochraneco.com^ -||bjc.hrm.healthgrades.com^ -||bke.actonservice.com^ -||bkifg.actonservice.com^ -||blackbirdventures.actonservice.com^ -||blackmesh.actonservice.com^ -||bladv.actonservice.com^ -||blockchain.actonservice.com^ -||blog.b2lead.com^ -||blog.trinityconsultants.com^ -||blue-rocket.actonservice.com^ -||bluebusiness.actonservice.com^ -||blueinfo.marugroup.net^ -||bluemarblepayroll.actonservice.com^ -||bluemountains.actonservice.com^ -||blueoceanpharma.actonservice.com^ -||bluvue.actonservice.com^ -||blytheco.actonservice.com^ -||bmail.getventive.com^ -||bmiimaging.actonservice.com^ -||bobcad.actonservice.com^ -||bobswatches.actonservice.com^ -||bolingbrookgolfclub.actonservice.com^ -||bowl.actonservice.com^ -||br.bio-rad.com^ -||br.promo.skf.com^ -||brainsell.actonservice.com^ -||brands.cambrio.com^ -||brascomarketing.actonservice.com^ -||briefing.actonservice.com^ -||bringg.actonservice.com^ -||brukernano.actonservice.com^ -||bu.actonservice.com^ -||bubblewrapp.actonservice.com^ -||build.bildgta.ca^ -||bulkbookstore.actonservice.com^ -||burnswhite.actonservice.com^ -||business-decision.actonservice.com^ -||business.franchiseforsale.com^ -||business.franchiseopportunities.com^ -||business.matchd.nl^ -||business.royal-cars.com^ -||businessgrouphealth.actonservice.com^ -||butlercc.actonservice.com^ -||buzz.logility.com^ -||buzz.neilsonmarketing.com^ -||c-c-l.actonservice.com^ -||c4cm.actonservice.com^ -||c4contexture.actonservice.com^ -||ca.promo.skf.com^ -||ca.ssl.holdmybeerconsulting.com^ -||caderonline.bu.edu^ -||caf.actonservice.com^ -||calgary-content.cresa.com^ -||caliberco.actonservice.com^ -||california.providence.hrm.healthgrades.com^ -||caljetelite.actonservice.com^ -||calldesignna.actonservice.com^ -||callsource.actonservice.com^ -||calmradio.actonservice.com^ -||camisado.actonservice.com^ -||campaign.csrxp.org^ -||campaign.lexjet.com^ -||campaigns.ashfieldengage.com^ -||campaigns.hygiena.com^ -||campaigns.micromass.com^ -||campaigns.mindplusmatter.com^ -||campaigns.primaverabss.com^ -||campaigns.wordandbrown.com^ -||canadamarketing.travelsavers.com^ -||capplanllc.actonservice.com^ -||caradonna.actonservice.com^ -||cardinalretirement.actonservice.com^ -||cargas.actonservice.com^ -||cargurus.actonservice.com^ -||carle.hrm.healthgrades.com^ -||carlisleit.actonservice.com^ -||carolina.actonservice.com^ -||cc.pennstatehealth.org^ -||celigo.actonservice.com^ -||centermarkplacements.actonservice.com^ -||central.actonservice.com^ -||centrastate.hrm.healthgrades.com^ -||centura.hrm.healthgrades.com^ -||cerionnano.actonservice.com^ -||certify.nasm.org^ -||cesa6.actonservice.com^ -||cfpwood.actonservice.com^ -||ch.sharpmarketing.eu^ -||channel-impact.actonservice.com^ -||channelblender.actonservice.com^ -||channelsignal.actonservice.com^ -||charlotte-content.cresa.com^ -||chartec.actonservice.com^ -||chevalierusa.actonservice.com^ -||chiefexecutive.actonservice.com^ -||childrens.hrm.healthgrades.com^ -||ci42.rgp.com^ -||cil.isotope.com^ -||cincinnati-content.cresa.com^ -||circadence.actonservice.com^ -||cisco-eagle.actonservice.com^ -||citizensclimate.actonservice.com^ -||cl.promo.skf.com^ -||clariant.actonservice.com^ -||claruscommerce.actonservice.com^ -||classroominc.actonservice.com^ -||claynelsonlifebalance.actonservice.com^ -||cleanservices.actonservice.com^ -||clearbrands.actonservice.com^ -||click.aabacosmallbusiness.com^ -||click.amazingfacts.org^ -||click.avalere.com^ -||click.compli.com^ -||click.execrank.com^ -||click.lmbcustomersupport.com^ -||click.quickenloansnow.com^ -||click.zoominformation.com^ -||clickatell.actonservice.com^ -||cloud.trapptechnology.com^ -||cloudhosting.actonservice.com^ -||cm.prodo.com^ -||cmme.actonservice.com^ -||cn.promo.skf.com^ -||cns-service.actonservice.com^ -||cnsecurity.actonservice.com^ -||co.promo.skf.com^ -||cobweb.actonservice.com^ -||cofactordigital.actonservice.com^ -||coffeycomm.actonservice.com^ -||cogstate.actonservice.com^ -||cohesive.actonservice.com^ -||collab9.actonservice.com^ -||college.business.oregonstate.edu^ -||collegeauthority.actonservice.com^ -||colliers.actonservice.com^ -||commercial.davey.com^ -||commondreams.actonservice.com^ -||comms.adss.com^ -||communicate.apcerls.com^ -||communicate.choicelogistics.com^ -||communicate.lightningprotection.com^ -||communication.avantifinance.co.nz^ -||communication.fits.me^ -||communication.jkseva.com^ -||communication.johnstongroup.ca^ -||communication.promo.skf.com^ -||communication.teakmedia.com^ -||communication.treston.com^ -||communications.all-risks.com^ -||communications.ameritrustgroup.com^ -||communications.engineering.oregonstate.edu^ -||communications.enrouteglobalexchange.com^ -||communications.fernenergy.co.nz^ -||communications.globalwidemedia.com^ -||communications.lydallpm.com^ -||communications.marlboroughgroup.com^ -||communications.meadowbrook.com^ -||communications.parmenion-im.co.uk^ -||communications.peopleadmin.com^ -||communications.prodways.com^ -||communications.qualico.com^ -||communications.rillion.com^ -||communications.securityins.net^ -||communications.taylorcorp.com^ -||communications.usfleettracking.com^ -||communications.worldtravelinc.com^ -||communications.ypo.org^ -||communique.assetzproperty.com^ -||community.actonline.org^ -||community.axiscapital.com^ -||community.chpw.org^ -||compliance.govdocs.com^ -||complianceupdates.aem.org^ -||compugen.actonservice.com^ -||compulite.actonservice.com^ -||compuware.actonservice.com^ -||comviewcorp.actonservice.com^ -||conference.flsmidth.com^ -||confiaen.legalitas.com^ -||connect.azulseven.com^ -||connect.blackmesh.com^ -||connect.businessldn.co.uk^ -||connect.chiropractic.ac.nz^ -||connect.ciena.com^ -||connect.clearonblack.com^ -||connect.dcblox.com^ -||connect.dexterchaney.com^ -||connect.digi.com^ -||connect.evocalize.com^ -||connect.frontier.com^ -||connect.invibio.com^ -||connect.kristechwire.com^ -||connect.landy.com^ -||connect.lightriver.com^ -||connect.mdtelephone.com^ -||connect.meringcarson.com^ -||connect.mikrocentrum.nl^ -||connect.munsonhealthcare.org^ -||connect.opendoorerp.com^ -||connect.planusa.org^ -||connect.prowareness.nl^ -||connect.purebranding.com^ -||connect.rallypoint.com^ -||connect.riseengineering.com^ -||connect.rush.edu^ -||connect.shopaplusrentals.com^ -||connect.shopezrentals.com^ -||connect.shoprentone.com^ -||connect.sigbee.com^ -||connect.stvincentcharity.com^ -||connect.thinkinterval.com^ -||connect.tpgtelecom.com.au^ -||connect.tribepictures.com^ -||connect.uniti.com^ -||connect.uofuhealth.org^ -||connect.walkerfirst.com^ -||connect.zehno.com^ -||connected.integrationpoint.com^ -||connectedmedicaltechnologies.actonservice.com^ -||conseil.seicgland.ch^ -||conseils.dotbase.com^ -||contact.adaptavist.com^ -||contact.aquaterraenergy.com^ -||contact.assaydepot.com^ -||contact.marathon-sports-ec.com^ -||contactcenter.presenceco.com^ -||content.4teamwork.ch^ -||content.actionbenefits.com^ -||content.aew.com^ -||content.bondbrothers.com^ -||content.brain-storm-email.com^ -||content.cammackhealth.com^ -||content.cannon-dunphy.com^ -||content.ceriumnetworks.com^ -||content.commandc.com^ -||content.czarnowski.com^ -||content.demand-on.com^ -||content.distium.com^ -||content.e-office.com^ -||content.enlightiumacademy.com^ -||content.fabasoft.com^ -||content.familyfeatures.com^ -||content.harrisproductsgroup.com^ -||content.hourigan.group^ -||content.hurix.com^ -||content.investresolve.com^ -||content.linesight.com^ -||content.logile.com^ -||content.mhs.net^ -||content.mrgmarketing.net^ -||content.msufcu.org^ -||content.ncek12.com^ -||content.ndm.net^ -||content.northcdatacenters.info^ -||content.ntwine-conferencing.com^ -||content.palram.com^ -||content.qumulo.com^ -||content.recordpoint.com^ -||content.rightsourcemarketing.com^ -||content.sffirecu.org^ -||content.tacticalma.com^ -||content.timetogather.co.uk^ -||content.wacom.com^ -||content.xpublisher.com^ -||contracts.mhainc.com^ -||convergentdental.actonservice.com^ -||conveyor.lewcoinc.com^ -||corporate-marketing.hrs.com^ -||corporate.averydennison.com^ -||corporatecommunications.bvifsc.vg^ -||cpihrinfo.cpihr.com^ -||crawford-industries.actonservice.com^ -||creationagency.actonservice.com^ -||crm.casabaca.com^ -||crm.masonmac.com^ -||crm.toyotago.com.ec^ -||crmcommunications.progressive.com^ -||crmonline.actonservice.com^ -||crs.actonservice.com^ -||ctg.actonservice.com^ -||ctiimage.actonservice.com^ -||culliganwaterco.actonservice.com^ -||cure.trueface.org^ -||customer.newsflare.com^ -||customercare.aircycle.com^ -||customerrelations.theinstitutes.org^ -||customersucceed.nanophase.com^ -||cvhp.hrm.healthgrades.com^ -||cxm.ingeniux.com^ -||cz.promo.skf.com^ -||czsk.sharpmarketing.eu^ -||dacocorp.actonservice.com^ -||daegis.actonservice.com^ -||dallas-content.cresa.com^ -||danielsmoving.actonservice.com^ -||datafiletechnologies.actonservice.com^ -||dav.davrontech.com^ -||dbbest.actonservice.com^ -||dc.actonservice.com^ -||de.bca-news.com^ -||de.promo.skf.com^ -||de.sharpmarketing.eu^ -||dealerrelations.cargurus.com^ -||dedola.actonservice.com^ -||deepcrawl.actonservice.com^ -||dev-iradimed.actonservice.com^ -||dev-spamgourmet.actonservice.com^ -||dev-tacticalma.actonservice.com^ -||devacton.simpleviewinc.com^ -||devotionalclicks.amazingfacts.org^ -||dextersolutions.actonservice.com^ -||dfw.bakerbrothersplumbing.com^ -||dialog.dqs.de^ -||dialog.losberger.com^ -||digital.medimpact.com^ -||digital.opsbase.com^ -||digital.setpointis.com^ -||digitalmarketing.gogsg.com^ -||digitalmarketing.smu.edu.sg^ -||dignityhealth.hrm.healthgrades.com^ -||dimensionfunding.actonservice.com^ -||dincloud.actonservice.com^ -||dincloudllc.actonservice.com^ -||diningalliance.actonservice.com^ -||discover.covenanthealthcare.com^ -||discover.dignityhealth.org^ -||discover.kloverproducts.com^ -||discover.maringeneral.org^ -||discover.megafrost.gr^ -||discover.supplydepotstore.com^ -||discoverorg.actonservice.com^ -||displaymaxmerchandising.actonservice.com^ -||distribution.provenpharma.com^ -||dkno.netpartnering.com^ -||dm.syntelli.com^ -||dmarkconsulting.actonservice.com^ -||dmc.romotur.com^ -||dmcc.actonservice.com^ -||dohmen.actonservice.com^ -||dotvox.actonservice.com^ -||downtownit.actonservice.com^ -||dppublishinginc.actonservice.com^ -||dqs.actonservice.com^ -||driven.actonservice.com^ -||dryvit.actonservice.com^ -||duprelogistics.actonservice.com^ -||durst-group.actonservice.com^ -||e.kc-education.com^ -||e.meridiancm.com^ -||e.replacementdevicelawsuit.com^ -||e.unchealthcare.org^ -||eagle.actonservice.com^ -||econnect.actonservice.com^ -||ecp.bdoaustralia.bdo.com.au^ -||ed1.newtekone.com^ -||ed4online.actonservice.com^ -||edeals.rbp.com^ -||edeals.rhymebiz.com^ -||edge.secure-24.com^ -||edm.healthroundtable.org^ -||edm.neoslife.com.au^ -||edriving.actonservice.com^ -||edtrainingcenter.actonservice.com^ -||education.brettdanko.com^ -||education.eatoncambridge.com^ -||education.graduateprogram.org^ -||edward.hrm.healthgrades.com^ -||eeco-net.actonservice.com^ -||efgam.actonservice.com^ -||elastoproxy.actonservice.com^ -||elcaminohospital.hrm.healthgrades.com^ -||elconfidencialdigital.actonservice.com^ -||electrifai.actonservice.com^ -||elgas.actonservice.com^ -||elink.altru.org^ -||elink.rushcopley.com^ -||elogic-learning.actonservice.com^ -||em-info2.thermofisher.com^ -||em.stauffersafety.com^ -||email-hg.holyredeemer.com^ -||email.apexauctions.com^ -||email.axisintegrated.ca^ -||email.bowl.com^ -||email.cobsbread.com^ -||email.eomega.org^ -||email.festiva.com^ -||email.mhr.co.uk^ -||email.participaction.com^ -||email.thewithotel.com^ -||email.voices.com^ -||email.vollrathco.com^ -||email.zumaoffice.com^ -||emailmarketing.vidanthealth.com^ -||emarketing.landisgyr.com^ -||emarketing.moveo.com^ -||emarketing.zulkiepartners.com^ -||emcalliance.vmware.com^ -||emea.kollmorgen.com^ -||emea.promo.skf.com^ -||emisgroupplc.actonservice.com^ -||emkt.stefanini.com^ -||emplicity.actonservice.com^ -||enablement.vmware.com^ -||enablis.actonservice.com^ -||enchantedrock.actonservice.com^ -||endeavorbusinessmedia.actonservice.com^ -||enews.learninga-z.com^ -||engage.alphastarcm.com^ -||engage.atriosystems.com^ -||engage.ca.victorinsurance.com^ -||engage.ce.victorinsurance.com^ -||engage.clinipace.com^ -||engage.dorngroup.com^ -||engage.dovetailinsurance.com^ -||engage.ipcginsurance.com^ -||engage.krm22.com^ -||engage.mhainc.com^ -||engage.navigatorgpo.com^ -||engage.nigp.org^ -||engage.permission.com.au^ -||engage.physicstoday.org^ -||engage.ria-insurancesolutions.com^ -||engage.td.org^ -||engage.tines.com^ -||engage.us.victorinsurance.com^ -||enrolldi.glic.com^ -||enterprisehive.actonservice.com^ -||enterpriseimaging.agfahealthcare.com^ -||eo.pearlinsurance.com^ -||epcvip.actonservice.com^ -||epicgolive.rainresources.com^ -||equippo.actonservice.com^ -||equity.e2g.com^ -||erepublic.actonservice.com^ -||es.lucanet.com^ -||es.sharpmarketing.eu^ -||eschsupply.actonservice.com^ -||eservices.lubetech.com^ -||esri.nl.actonservice.com^ -||essentiahealth.hrm.healthgrades.com^ -||estore.biscoind.com^ -||eu.sharpmarketing.eu^ -||eumarketing.sedgwick.com^ -||events.trapptechnology.com^ -||evergage1.actonservice.com^ -||eversource.actonservice.com^ -||evolent.actonservice.com^ -||evolution.promo.skf.com^ -||evolutionmarketing.actonservice.com^ -||exdmarketing.smu.edu.sg^ -||execreps.actonsoftware.com^ -||experience.faiu.com^ -||experience.rochesterregional.org^ -||experts.actonservice.com^ -||experts.cutter.com^ -||explore.coursefinders.com^ -||explore.landcentral.com^ -||expo.nada.org^ -||extendyourreach.actonservice.com^ -||eyc-marketing.eyc.com^ -||fac.fanucamerica.com^ -||facetwealth.actonservice.com^ -||farahatco.actonservice.com^ -||fastenermkt.averydennison.com^ -||fbsg.fayebsg.com^ -||fdbs.actonservice.com^ -||fdiinc.actonservice.com^ -||fea-cfd.simutechgroup.com^ -||fedsched.actonservice.com^ -||festo.actonservice.com^ -||ffr.actonservice.com^ -||fi.on-channel.com^ -||fiber.zayo.com^ -||fiduciaryfirst.actonservice.com^ -||filbrandtco.actonservice.com^ -||filemobile.actonservice.com^ -||files.urlinsgroup.com^ -||financialeducation-info.uchicago.edu^ -||financialservices.nada.org^ -||financialservices.teranet.ca^ -||findyourinfluence.actonservice.com^ -||finley.fecinc.com^ -||finley.finleyusa.com^ -||firstpac.actonservice.com^ -||flexibleplan.actonservice.com^ -||flexpod.ynsecureserver.net^ -||flipt.actonservice.com^ -||floorforce.actonservice.com^ -||flotech.actonservice.com^ -||fluentco.actonservice.com^ -||fly.caljetelite.com^ -||fmbankva.actonservice.com^ -||fna.fnainsurance.com^ -||foodpackaging.kpfilms.com^ -||forbidden.actonservice.com^ -||forbin.actonservice.com^ -||forms.accc-cancer.org^ -||forms.cooperaerobics.com^ -||forms.testoil.com^ -||forpci3.siege-corp.com^ -||foxt.actonservice.com^ -||foxtinfo.foxt.com^ -||fr.lucanet.com^ -||fr.promo.skf.com^ -||fr.sharpmarketing.eu^ -||franchise.goodearthcoffeehouse.com^ -||franchise.locktonaffinity.net^ -||franchise.tutoringacademy.ca^ -||franchiserecruitment.laserclinics.ca^ -||franchising.indooractivebrands.com^ -||franchising.kas.co.nz^ -||franchising.mcdonalds.ca^ -||franchising.pizzapizza.ca^ -||franklin-edu.actonservice.com^ -||franklin.edu.actonservice.com^ -||frankwatching.actonservice.com^ -||franoppnetwork.actonservice.com^ -||frenchgerleman.actonservice.com^ -||fridaymarketing.actonservice.com^ -||frontiermetal.actonservice.com^ -||fsresidential.actonservice.com^ -||ftfnews.actonservice.com^ -||fujifilmdb.fujifilmdiosynth.com^ -||fundraising.centuryresources.com^ -||funnelbox.actonservice.com^ -||futurebrand.actonservice.com^ -||futursalumnes.uic.es^ -||gameplanfinancial.actonservice.com^ -||gas-sensing.spec-sensors.com^ -||gatan.actonservice.com^ -||gblock.greenhousedata.com^ -||generaleducation.graduateprogram.org^ -||genesishealth.hrm.healthgrades.com^ -||geonetric.actonservice.com^ -||get.airecontact.com^ -||get.evidence.care^ -||get.incisive.com^ -||get.informedmortgage.com^ -||get.nuapay.com^ -||getstarted.national.edu^ -||gettoknow.skookum.com^ -||giftplanning.westmont.edu^ -||gk.gkservices.com^ -||global-guardians.actonservice.com^ -||global.raboag.com^ -||globalcommunications.sc.com^ -||globallearningsystems.actonservice.com^ -||globalmed.actonservice.com^ -||glue.evansadhesive.com^ -||gmnameplate.actonservice.com^ -||go.accumaxglobal.com.au^ -||go.acelisconnectedhealth.com^ -||go.adaquest.com^ -||go.alliancefunds.com^ -||go.americangriddle.com^ -||go.anthonyliftgates.com^ -||go.bayshoresystems.com^ -||go.bciburke.com^ -||go.bitnami.com^ -||go.biz.uiowa.edu^ -||go.brandactive.com^ -||go.brandactiveinsights.com^ -||go.brunswickgroup.com^ -||go.c4weld.com^ -||go.carlisleft.com^ -||go.clsi.org^ -||go.convenenow.com^ -||go.cresa.plantemoran.com^ -||go.delve.com^ -||go.diagraph.com^ -||go.diagraphmsp.com^ -||go.dukane.com^ -||go.durst-group.com^ -||go.eacpds.com^ -||go.eapps.com^ -||go.engiestorage.com^ -||go.esri.fi^ -||go.evolutionmarketing.com.au^ -||go.expresslanedefensivedriving.com^ -||go.fabplaygrounds.com^ -||go.foremostmedia.com^ -||go.gemapowdercoating.net^ -||go.getreadyforthefuture.com^ -||go.godunnage.com^ -||go.gpcom.com^ -||go.hatcocorp.com^ -||go.infopulse.com^ -||go.isbamutual.com^ -||go.janesvilleinnovation.com^ -||go.lanair.com^ -||go.lanmark360.com^ -||go.leecompany.com^ -||go.lendspace.com^ -||go.linksource.com^ -||go.loveshaw.com^ -||go.madisoncollege.edu^ -||go.marfeel.com^ -||go.metalgoodsmfg.com^ -||go.mitchell1.com^ -||go.mktgcampaigns.com^ -||go.multi-conveyor.com^ -||go.mvtec.com^ -||go.mysalonsuite.com^ -||go.ngtvalves.com^ -||go.northsidemedia.com^ -||go.nvp.com^ -||go.ovsoftware.nl^ -||go.peppermarketing.com.au^ -||go.pgx.com^ -||go.pheasant.com^ -||go.phhlending.com^ -||go.polarking.com^ -||go.polarkingmobile.com^ -||go.polarleasing.com^ -||go.quartz-events.com^ -||go.quartzinvitations.com^ -||go.rex-bac-t.com^ -||go.riosalado.edu^ -||go.rtafleet.com^ -||go.salessurrogate.com^ -||go.segra.com^ -||go.shareknowledge.com^ -||go.simco-ion.com^ -||go.simplomarketing.com^ -||go.solaruniverse.com^ -||go.spartansolutions.com^ -||go.spiroidgearing.com^ -||go.tactile.co^ -||go.tactile.com^ -||go.tdyne.com^ -||go.ticketbiz.se^ -||go.tigertool.com^ -||go.tm4.com^ -||go.tmacteex.org^ -||go.toonboom.com^ -||go.transversal.com^ -||go.triumphlearning.com^ -||go.unifiedav.com^ -||go.unifysquare.com^ -||go.unitusccu.com^ -||go.uscad.com^ -||go.ustruckbody.com^ -||go.wireco.com^ -||go.wm.plantemoran.com^ -||go.woodsidecap.com^ -||go.wtcmachinery.com^ -||go.zic.co.nz^ -||go2.altaro.com^ -||goaccredited.actonservice.com^ -||gobeyond.superiorgroup.com^ -||gogofunding.actonservice.com^ -||gogovapps.actonservice.com^ -||goldencomm.actonservice.com^ -||goldenhelix.actonservice.com^ -||goldenpaints.actonservice.com^ -||gosenergy.actonservice.com^ -||goshenhealth.hrm.healthgrades.com^ -||goto.newmarklearning.com^ -||govirtualoffice.actonservice.com^ -||gowestgroup.actonservice.com^ -||gowhiteowl.actonservice.com^ -||gr.promo.skf.com^ -||grado.ufv.es^ -||grande.actonservice.com^ -||grassrootsunwired.actonservice.com^ -||greenbeacon.actonservice.com^ -||greencharge.actonservice.com^ -||greif.actonservice.com^ -||groupevents.sixflags.com^ -||grow.business.xerox.com^ -||growthmodemarketing.actonservice.com^ -||guardiancu.actonservice.com^ -||guidepointglobal.actonservice.com^ -||guideposts.actonservice.com^ -||gundersenhealth.hrm.healthgrades.com^ -||hallmarkhealth.hrm.healthgrades.com^ -||halo.actonservice.com^ -||hancockhealth.hancockregional.org^ -||hardinet.actonservice.com^ -||harlan.actonservice.com^ -||hcafarwest.hrm.healthgrades.com^ -||hcagulfcoast.hrm.healthgrades.com^ -||hcahealthcare.hrm.healthgrades.com^ -||hcu.actonservice.com^ -||health.brgeneral.org^ -||health.hillcrest.com^ -||healthcasts.actonservice.com^ -||healthgrades.actonservice.com^ -||heartflow.actonservice.com^ -||helens.actonservice.com^ -||hello.controlmap.io^ -||hello.emergeinteractive.com^ -||hello.highlandsolutions.com^ -||hellogain.actonservice.com^ -||hesconet.actonservice.com^ -||hhglobal.actonservice.com^ -||hi.bigduck.com^ -||hickeysmith.actonservice.com^ -||hillcrest.hrm.healthgrades.com^ -||hines.actonservice.com^ -||hitachi-hightech-as.actonservice.com^ -||hiway.actonservice.com^ -||hodges.actonservice.com^ -||hodgesmace.actonservice.com^ -||homecareresources.rosemarksystem.com^ -||homehardware.actonservice.com^ -||honorhealth.hrm.healthgrades.com^ -||horacemann.actonservice.com^ -||horizononline.actonservice.com^ -||hospitals.hrm.healthgrades.com^ -||hotel-marketing.hrs.com^ -||houston-content.cresa.com^ -||hpninfo.hoopis.com^ -||hq.handiquilter.com^ -||hr.promo.skf.com^ -||hra.nyp.org^ -||hrm.healthgrades.com^ -||hronboard.actonservice.com^ -||hrs.actonservice.com^ -||hu.promo.skf.com^ -||hu.sharpmarketing.eu^ -||hub.hubfinancial.com^ -||hub.hubinternational.com^ -||hunterindustries.actonservice.com^ -||huseby.actonservice.com^ -||hvac.goodcoinc.com^ -||hygiena.actonservice.com^ -||hyperdisk.actonservice.com^ -||iatspayments.actonservice.com^ -||ibamolecular.actonservice.com^ -||iberian.promo.skf.com^ -||icahealth.actonservice.com^ -||icharts.actonservice.com^ -||icslearn.actonsoftware.com^ -||id.promo.skf.com^ -||ideadevice.actonservice.com^ -||idrivelogistics.actonservice.com^ -||ids.actonservice.com^ -||ignite.liftigniter.com^ -||igpr.actonservice.com^ -||ihc.cellmarque.com^ -||il.promo.skf.com^ -||immunocorp.actonservice.com^ -||impact-dm.actonservice.com^ -||in.promo.skf.com^ -||incisive.actonservice.com^ -||independence.americanportfolios.com^ -||industry.promo.skf.com^ -||inetprocess.actonservice.com^ -||info-fsi.stanford.edu^ -||info-pacific.marsh.com^ -||info-trek.actonservice.com^ -||info.abadiscount.org^ -||info.abcnorcal.org^ -||info.abcsd.org^ -||info.acacialearning.com^ -||info.accupurls.com^ -||info.accutrain.com^ -||info.acoginsurance.com^ -||info.admtech.com.au^ -||info.advanced-energy.com^ -||info.advantageman.com^ -||info.aestiva.com^ -||info.afidence.com^ -||info.aia-co.aleragroup.com^ -||info.aiabbs.aleragroup.com^ -||info.aiabrg.aleragroup.com^ -||info.allcatcoverage.com^ -||info.alticoadvisors.com^ -||info.americanroller.com^ -||info.anglianwaterbusiness.co.uk^ -||info.apbspeakers.com^ -||info.apisensor.com^ -||info.apparound.com^ -||info.applied.com^ -||info.appliedtech.pro^ -||info.archerdx.com^ -||info.ardentsolutionsllc.aleragroup.com^ -||info.ascassociation.org^ -||info.ashergroup.com^ -||info.aspcapro.org^ -||info.assure360.com^ -||info.astronovainc.com^ -||info.atlaslift.com^ -||info.atlastravel.com^ -||info.augustahealth.org^ -||info.authentic4d.com^ -||info.autozonepro.com^ -||info.avantiplc.com^ -||info.avmalife.org^ -||info.avondixon.aleragroup.com^ -||info.awos.com^ -||info.azuga.com^ -||info.b2lead-marketing.com^ -||info.backbonemedia.com^ -||info.base2s.com^ -||info.battelle.org^ -||info.bauerbuilt.com^ -||info.bcn.nl^ -||info.beaconmedicare.aleragroup.com^ -||info.beaumont.org^ -||info.bellingrathwealth.com^ -||info.belltechlogix.com^ -||info.bematechus.com^ -||info.benico.aleragroup.com^ -||info.bgi.com^ -||info.biafs.aleragroup.com^ -||info.bintheredumpthatusa.com^ -||info.biocision.com^ -||info.biologos.org^ -||info.bkifg.com^ -||info.blazecu.com^ -||info.blueskytherapy.net^ -||info.brand.live^ -||info.briefing.com^ -||info.brilliantfs.com^ -||info.bris.bdo.com.au^ -||info.burnswhite.com^ -||info.bvcm.nl^ -||info.bvo.nl^ -||info.cafonline.org^ -||info.calnexsol.com^ -||info.calypto.com^ -||info.camchealth.org^ -||info.canterburyconsulting.com^ -||info.capitalonesettlement.com^ -||info.capsresearch.org^ -||info.cascadeo.com^ -||info.castlemetals.com^ -||info.ccbjournal.com^ -||info.centrak.com^ -||info.centurybizsolutions.com^ -||info.cfevr.org^ -||info.cgjordaninsurance.com^ -||info.charityvillage.com^ -||info.chat-desk.com^ -||info.cignex.com^ -||info.citymarketingamersfoort.nl^ -||info.claimscope.com^ -||info.clariant.com^ -||info.clarus-rd.com^ -||info.cleanharbors.com^ -||info.cleaningproducts.com^ -||info.clearfunction.com^ -||info.cloudsteer.com^ -||info.cmcagile.com^ -||info.cmworks.com^ -||info.columninfosec.com^ -||info.commonwealthcommercial.com^ -||info.compusource.com^ -||info.comsoft-direct.nl^ -||info.conceptuitgeefgroep.nl^ -||info.conres.com^ -||info.constellationbehavioralhealth.com^ -||info.cpenow.com^ -||info.cpihr.aleragroup.com^ -||info.cranes101.com^ -||info.creadis.com^ -||info.createeveryopportunity.org^ -||info.cresinsurance.com^ -||info.crisp.aleragroup.com^ -||info.crossmfg.com^ -||info.ctiimage.com^ -||info.culturespanmarketing.com^ -||info.cvosusa.com^ -||info.dailybuzzbarrel.com^ -||info.dairymaster.com^ -||info.data-basics.com^ -||info.datasci.com^ -||info.datiphy.com^ -||info.davidrio.com^ -||info.dbbest.com^ -||info.demandmetric.com^ -||info.dgq.de^ -||info.dickerson-group.aleragroup.com^ -||info.digitalsys.com^ -||info.dimensionfunding.com^ -||info.dlancegolf.com^ -||info.doigcorp.com^ -||info.drawingboard.com^ -||info.duprelogistics.com^ -||info.dynamictechservices.com^ -||info.e-tabs.com^ -||info.eagleinvsys.com^ -||info.easealert.com^ -||info.echelonprint.com^ -||info.eco.ca^ -||info.edriving.com^ -||info.edtrainingcenter.com^ -||info.eecoonline.com^ -||info.electrifai.net^ -||info.em-ametek.com^ -||info.emergentsx.com^ -||info.emersonecologics.com^ -||info.emishealth.com^ -||info.enduraproducts.com^ -||info.energizect.com^ -||info.epworthvilla.org^ -||info.escocorp.com^ -||info.esriaustralia.com.au^ -||info.esriindonesia.co.id^ -||info.esrimalaysia.com.my^ -||info.esrisingapore.com.sg^ -||info.etgroup.net^ -||info.eu.tmi.yokogawa.com^ -||info.exxcel.com^ -||info.fairwaywholesalelending.com^ -||info.familyfeatures.com^ -||info.fastfundlending.com^ -||info.fastroofquotes.com^ -||info.fazzi.com^ -||info.filesanywhere.com^ -||info.financefactors.com^ -||info.flattstationers.com^ -||info.fleetlanding.com^ -||info.flexoimpressions.com^ -||info.flyingwithjets.com^ -||info.flytevu.com^ -||info.fminet.com^ -||info.focuspos.com^ -||info.footstepsgroup.com^ -||info.formiik.com^ -||info.forumbenefits.aleragroup.com^ -||info.fosterslaw.ca^ -||info.foundationsoft.com^ -||info.fourkitchens.com^ -||info.fptransitions.com^ -||info.franklin.edu^ -||info.freedom-iot.com^ -||info.freedomcte.com^ -||info.frenchgerleman.com^ -||info.furykeywest.com^ -||info.gantryinc.com^ -||info.gatan.com^ -||info.gcaaltium.com^ -||info.gcgfinancial.aleragroup.com^ -||info.genesishealth.com^ -||info.geonetric.com^ -||info.girlswhoinvest.org^ -||info.gkg.net^ -||info.glenviewterrace.com^ -||info.globalventuring.com^ -||info.gluenetworks.com^ -||info.gluware.com^ -||info.goagilix.com^ -||info.goegyptian.com^ -||info.goldmine.com^ -||info.gravie.com^ -||info.graystone-eye.com^ -||info.greenbusinessnetwork.org^ -||info.greenosupply.com^ -||info.greentarget.com^ -||info.greif.com^ -||info.groupbenefits.aleragroup.com^ -||info.groupservices.aleragroup.com^ -||info.guardiancu.org^ -||info.gucu.org^ -||info.guideposts.org^ -||info.halo.com^ -||info.halogistics.com^ -||info.harmonyhit.com^ -||info.harvardapparatus.com^ -||info.hds-rx.com^ -||info.healthcareittoday.com^ -||info.healthcarescene.com^ -||info.heartflow.com^ -||info.heirtight.co^ -||info.helens.se^ -||info.hesconet.com^ -||info.hiway.org^ -||info.hmk-ins.aleragroup.com^ -||info.holisticprimarycare.net^ -||info.holmenpaper.com^ -||info.hoopla.net^ -||info.horanassoc.com^ -||info.huseby.com^ -||info.hygfinancialservicesinc.com^ -||info.iatspayments.com^ -||info.ibamolecular.com^ -||info.ibexherd.com^ -||info.ic3dprinters.com^ -||info.icahn.org^ -||info.icslearn.co.uk^ -||info.ielts.com.au^ -||info.iihnordic.dk^ -||info.ijungo.com^ -||info.imagethink.net^ -||info.imagimob.com^ -||info.inigral.com^ -||info.insurancehotline.com^ -||info.interworks.cloud^ -||info.invata.com^ -||info.invo-progressus.com^ -||info.ioactive.com^ -||info.ironcad.com^ -||info.itw-air.com^ -||info.itwcce.com^ -||info.iwerk.com^ -||info.jabil.com^ -||info.jacksoncoker.com^ -||info.jacounter.aleragroup.com^ -||info.janiczek.com^ -||info.jccc.edu^ -||info.jensenhughes.com^ -||info.jfahern.com^ -||info.johonnottechnologies.com^ -||info.jonas-construction.com^ -||info.jordansc.com^ -||info.josephmday.com^ -||info.jwpepper.com^ -||info.kahnlitwin.com^ -||info.kanetix.ca^ -||info.kedronuk.com^ -||info.key2.ca^ -||info.key4cleaningsupplies.com^ -||info.klasresearch.com^ -||info.kollmorgen.cn^ -||info.kollmorgen.com^ -||info.kratosdefense.com^ -||info.kuttatech.com^ -||info.labelworks.com^ -||info.laconservancy.org^ -||info.lakewoodwestend.org^ -||info.landstar.com^ -||info.lansingbp.com^ -||info.laseradvanced.com^ -||info.ledcrew.com^ -||info.liftfund.com^ -||info.lincolnloop.com^ -||info.linkmedia360.com^ -||info.livingwage.org.uk^ -||info.locbox.com^ -||info.lonebeaconmedia.com^ -||info.lowestrates.ca^ -||info.lsualumni.org^ -||info.macro4.com^ -||info.mactac.com^ -||info.madronafinancial.com^ -||info.magnumsystems.com^ -||info.magnuspen.com^ -||info.managementsuccess.com^ -||info.marketing.spxflow.com^ -||info.marshmsp.com^ -||info.marshpcs.com^ -||info.marublue.com^ -||info.maruedrcx.com^ -||info.marugroup.net^ -||info.marumatchbox.com^ -||info.mccloudservices.com^ -||info.med-iq.com^ -||info.membercoverage.com^ -||info.memberzone.com^ -||info.mergertech.com^ -||info.meriwest.com^ -||info.meyerandassoc.com^ -||info.mhzdesign.com^ -||info.michaelfoods.com^ -||info.micro-matics.com^ -||info.midwestdatacenterexperts.com^ -||info.milestoneinternet.com^ -||info.mindbreeze.com^ -||info.mmmlaw.com^ -||info.mobiusleadership.com^ -||info.mobmed.com^ -||info.moneycontrol.network18online.com^ -||info.monsooninc.com^ -||info.morganfranklin.com^ -||info.motion10.nl^ -||info.msconsultants.com^ -||info.mshs.com^ -||info.multichannelsystems.com^ -||info.multitech.com^ -||info.museumofthebible.org^ -||info.mvp.nl^ -||info.mwhccareers.com^ -||info.myservicepak.com^ -||info.naag.org^ -||info.nahealth.com^ -||info.nai-consulting.com^ -||info.narcdc.org^ -||info.naswinsure.com^ -||info.nationalfoodgroup.com^ -||info.natlenvtrainers.com^ -||info.navitassys.com^ -||info.navitor.com^ -||info.ncoi.nl^ -||info.neosllc.com^ -||info.nepsisadvisors.com^ -||info.neptune-software.com^ -||info.nescornow.com^ -||info.netec.com^ -||info.nets-inc.com^ -||info.network9.com^ -||info.ngfcu.us^ -||info.nibesvv.nl^ -||info.nicholsonclinic.com^ -||info.nilex.com^ -||info.norman-spencer.com^ -||info.normecfoodcare.com^ -||info.northcdatacenters.com^ -||info.northeast.aleragroup.com^ -||info.northshore.org^ -||info.novahealthcare.com^ -||info.novahomeloans.com^ -||info.nvtc.org^ -||info.ochsner.org^ -||info.ocr-inc.com^ -||info.oh-ins.com^ -||info.omep.org^ -||info.onlinetech.com^ -||info.ortecfinance.com^ -||info.osiriseducational.co.uk^ -||info.osufoundation.org^ -||info.padistance.org^ -||info.parallel6.com^ -||info.parivedasolutions.com^ -||info.patientwise.com^ -||info.patrickandco.com^ -||info.paydashboardinfo.com^ -||info.payroll4construction.com^ -||info.pentra.aleragroup.com^ -||info.pentra.com^ -||info.perceptics.com^ -||info.perfectpatients.com^ -||info.personable.com^ -||info.pestfree.direct^ -||info.pharmaseek.com^ -||info.philadelphia.aleragroup.com^ -||info.phionline.com^ -||info.phsmobile.com^ -||info.pillartopost.com^ -||info.pittsburgh.aleragroup.com^ -||info.pmg360research.com^ -||info.pmhsi.com^ -||info.polypak.com^ -||info.positioninteractive.com^ -||info.precisebusiness.com.au^ -||info.precoa.com^ -||info.prep101.com^ -||info.prodagio.com^ -||info.progressinvestment.com^ -||info.prontopilates.com^ -||info.prosperafinancial.com^ -||info.provencut.com^ -||info.r2cgroup.com^ -||info.racksquared.com^ -||info.rates.ca^ -||info.raytecled.com^ -||info.rbatriad.com^ -||info.re-sourcepartners.com^ -||info.reachtech.com^ -||info.readingpartners.org^ -||info.recoverypoint.com^ -||info.redlinesolutions.com^ -||info.relphbenefit.aleragroup.com^ -||info.relphbenefitadvisors.aleragroup.com^ -||info.reltio.com^ -||info.rescignos.com^ -||info.rev1ventures.com^ -||info.rhahvac.com^ -||info.rodenhiser.com^ -||info.romerlabs.com^ -||info.rumsey.com^ -||info.safecorhealth.com^ -||info.safeguardrisksolutions.com^ -||info.safelogic.com^ -||info.safety-kleen.com^ -||info.sagewater.com^ -||info.sante-group.com^ -||info.savesfbay.org^ -||info.sbsgroup.com.au^ -||info.scheidegger.nl^ -||info.schmidt-na.com^ -||info.schoolspecialtynews.com^ -||info.scoopinsurance.ca^ -||info.scottmadden.com^ -||info.scriptel.com^ -||info.secotools.com^ -||info.send-server.com^ -||info.senior-systems.com^ -||info.serverlift.com^ -||info.services.vivacom.bg^ -||info.sherriffhealthcaresearch.com^ -||info.shilohtech.com^ -||info.shirazi.aleragroup.com^ -||info.siege-corp.com^ -||info.siglentna.com^ -||info.simutechmultimedia.com^ -||info.sispartnerplatform.com^ -||info.skystem.com^ -||info.smartbrief.com^ -||info.smartstrategyapps.com^ -||info.smartstrategyonline.com^ -||info.smilemarketing.com^ -||info.solidscape.com^ -||info.southstarcapital.com^ -||info.spark-point.com^ -||info.spencerfane.com^ -||info.sseinc.com^ -||info.sswhitedental.com^ -||info.stdom.com^ -||info.stratus.hr^ -||info.suite1000.com^ -||info.summitministries.org^ -||info.suncloudhealth.com^ -||info.supercare.health^ -||info.superchoiceservices.com.au^ -||info.suzy.com^ -||info.sydist.com^ -||info.symbio.com^ -||info.synteract.com^ -||info.tcasonline.com^ -||info.technologia.com^ -||info.techoregon.org^ -||info.techwave.net^ -||info.teletrac.net^ -||info.terracesatcloverwood.org^ -||info.terradatum.com^ -||info.tetravx.com^ -||info.texastaxgroup.com^ -||info.theaba.org^ -||info.thecentennial.aleragroup.com^ -||info.themichaelmannteam.com^ -||info.themsrgroup.com^ -||info.themyersbriggs.com^ -||info.thepgaofamerica.com^ -||info.theprogressiveaccountant.com^ -||info.thesmsgroup.com^ -||info.thestoryoftexas.com^ -||info.thomsonlinear.com^ -||info.tidbank.no^ -||info.tiwoiltools.com^ -||info.tmlt.org^ -||info.totango.com^ -||info.touchtown.us^ -||info.tpctrainco.com^ -||info.tpctraining.com^ -||info.tradeinterchange.com^ -||info.trapptechnology.com^ -||info.treeoflifecenterus.com^ -||info.trendler.com^ -||info.trinityconsultants.com^ -||info.truemfg.com^ -||info.truitycu.org^ -||info.tscpainsure.org^ -||info.txeee.engr.utexas.edu^ -||info.tyfone.com^ -||info.uchealth.com^ -||info.uila.com^ -||info.unicosystem.com^ -||info.unicous.com^ -||info.upcurvecloud.com^ -||info.valencepm.com^ -||info.vaporstream.com^ -||info.vcsolutions.com^ -||info.venturesolutions.com^ -||info.veoci.com^ -||info.verifund.tech^ -||info.vesselsvalue.com^ -||info.vestapublicsafety.com^ -||info.vibro-acoustics.com^ -||info.vidanthealth.com^ -||info.vierhetseizoen.nl^ -||info.virtela.net^ -||info.virtusbenefits.aleragroup.com^ -||info.visitgranbury.com^ -||info.visitorlando.com^ -||info.vistasiteselection.com^ -||info.visuresolutions.com^ -||info.vizquest.com^ -||info.vorne.com^ -||info.voxbone.com^ -||info.w-systems.com^ -||info.wafergen.com^ -||info.walkingclassroom.org^ -||info.washingtoninstitute.org^ -||info.watertechonline.com^ -||info.wellbe.me^ -||info.weloveournewwindows.com^ -||info.wespath.com^ -||info.westerville.org^ -||info.woodward.com^ -||info.wsplanadvisor.com^ -||info.xactflex.com^ -||info.yankeehome.com^ -||info.zelmanassociates.com^ -||info.zoominfo-notice.com^ -||info.zoominfo-privacy.com^ -||info.zoominfo.io^ -||info.zoominfotechnologies.com^ -||info.zoomintel.com^ -||info.zuidema.nl^ -||info01.on24.com^ -||infoco.readingpartners.org^ -||infodc.readingpartners.org^ -||infola.readingpartners.org^ -||infoland.actonservice.com^ -||infontx.readingpartners.org^ -||infonyc.readingpartners.org^ -||inform.milestonegroup.com.au^ -||inform.milestonegroup.com^ -||information.cleanservices.co.uk^ -||information.fi360.com^ -||information.remploy.co.uk^ -||infosea.readingpartners.org^ -||infoservice.paratherm.com^ -||infosfba.readingpartners.org^ -||infospot.roanokegroup.com^ -||infotc.readingpartners.org^ -||infotul.readingpartners.org^ -||inkubate.actonservice.com^ -||innovate.bionix.com^ -||innovation.communica.world^ -||innovation.leeind.com^ -||innovation.rlgbuilds.com^ -||innovation.thinkcommunica.com^ -||innovations.provisur.com^ -||inova.hrm.healthgrades.com^ -||insight.boomer.com^ -||insight.redflashgroup.com^ -||insight.wittkieffer.com^ -||insights.alley.com^ -||insights.avad3.com^ -||insights.diamond-consultants.com^ -||insights.goodandprosper.com^ -||insights.hugheseurope.com^ -||insights.i-runway.com^ -||insights.jabian.com^ -||insights.jackporter.com^ -||insights.journey.world^ -||insights.nowitmatters.com^ -||insights.openfieldx.com^ -||insights.partnerwithfacet.com^ -||insights.squintopera.com^ -||install.orderwork.online^ -||insurance.caainsurancecompany.com^ -||insurance.thehullgroup.com^ -||insurancenoodle.actonservice.com^ -||int.actonservice.com^ -||int.deltafaucet.com^ -||intechservices.actonservice.com^ -||intelledox.actonservice.com^ -||intelli-shop.actonservice.com^ -||interedgemarketing.actonservice.com^ -||internalcomms.hubinternational.com^ -||international.wandw.ac.nz^ -||interworks.cloud.actonservice.com^ -||invata.actonservice.com^ -||invited.louwmanexclusive.nl^ -||inx-corp.actonservice.com^ -||ioactiveinc.actonservice.com^ -||ip.chipestimate.com^ -||ipinternational.actonservice.com^ -||iq.intellicyt.com^ -||isbamic.actonservice.com^ -||isentia.actonservice.com^ -||ishainsight.actonservice.com^ -||isoplexis.actonservice.com^ -||it.promo.skf.com^ -||it.sharpmarketing.eu^ -||iwantglobal.actonservice.com^ -||jagransolutions.com.actonservice.com^ -||javs.actonservice.com^ -||jeedmact.sc.com^ -||jeffersonawards.actonservice.com^ -||jensenhughes.actonservice.com^ -||jetlinx.actonservice.com^ -||jifflenow.actonservice.com^ -||jobappplus.actonservice.com^ -||join.opencare.com^ -||joinsai.securitiesamerica.com^ -||joinus.holidayseniorliving.com^ -||jp.promo.skf.com^ -||jumpstartinc.actonservice.com^ -||jwpepper.actonsoftware.com^ -||kaydonus.promo.skf.com^ -||kbs-services.actonservice.com^ -||kc.promo.skf.com^ -||kennedyhealth.hrm.healthgrades.com^ -||kennisdomein.pqr.com^ -||kesko.actonservice.com^ -||kestlerfinancial.actonservice.com^ -||key2.actonservice.com^ -||keynotegroup.actonservice.com^ -||kidsdeservethebest.childrenswi.org^ -||kidsdeservethebest.chw.org^ -||kimberlyspa.actonservice.com^ -||kkhq.actonservice.com^ -||km.rightanswers.com^ -||know.gardner-webb.edu^ -||know.gimmal.com^ -||knowledge.equitymethods.com^ -||kone-cranes.actonservice.com^ -||kratosdefense.actonservice.com^ -||kristechwire.actonservice.com^ -||krm22.actonservice.com^ -||ksamarketing.sedgwick.com^ -||kurzweiledu.actonservice.com^ -||kuwaitmarketing.sedgwick.com^ -||kws.holdmybeerconsulting.com^ -||kyloepartners.actonservice.com^ -||lam.promo.skf.com^ -||lammico.actonservice.com^ -||landrykling.actonservice.com^ -||landstar.actonservice.com^ -||landuscooperative.actonservice.com^ -||lansinoh.actonservice.com^ -||lapiana.actonservice.com^ -||laplink.actonservice.com^ -||laserconcepts.actonservice.com^ -||lawyers.rigbycooke.com.au^ -||layeredinsight.actonservice.com^ -||lcscompanies.lcsnet.com^ -||leadcertain.actonservice.com^ -||leadership.zengerfolkman.com^ -||learn.altsourcesoftware.com^ -||learn.apartnership.com^ -||learn.brightspotstrategy.com^ -||learn.centricconsulting.com^ -||learn.healthyinteractions.com^ -||learn.image-iq.com^ -||learn.ultherapy.com^ -||ledgeviewpartners.actonservice.com^ -||leecompany.actonservice.com^ -||levementum.actonservice.com^ -||lgm.averydennison.com^ -||lhasalimited.actonservice.com^ -||libertyhomeequity.actonservice.com^ -||library.westernstatescat.com^ -||licensinginsights.ascap.com^ -||lighterthinnerstronger.fiber-line.com^ -||lilogy.actonservice.com^ -||link.hitachi-hightech.com^ -||links.asbury.org^ -||links.riverview.org^ -||loans.rategenius.com^ -||loansales.cbre.com^ -||lodicoandco.actonservice.com^ -||loginvsi.actonservice.com^ -||logistics.osmworldwide.com^ -||look-ahead.nurturemarketing.com^ -||lord.actonservice.com^ -||loveeveryday.brighterkind.com^ -||lovelace.hrm.healthgrades.com^ -||lowermybills.actonsoftware.com^ -||lp.fsresidential.com^ -||lp.mnp.ca^ -||lp.rallypoint.com^ -||ltcnetwork.mhainc.com^ -||lubrication.promo.skf.com^ -||lubricationcee-mea.promo.skf.com^ -||lubricationde.promo.skf.com^ -||lubricationus.promo.skf.com^ -||lucanet.actonservice.com^ -||lumenera.actonservice.com^ -||lydallpm.actonservice.com^ -||lyonsdown.actonservice.com^ -||m-m.actonservice.com^ -||m.acmgloballab.com^ -||m.evolutiondigital.com^ -||m.smartmatch.email^ -||m.vistaresourcegroup.com^ -||m2t.actonservice.com^ -||ma.a3.se^ -||ma.axiomatics.com^ -||ma.betterbusiness.se^ -||ma.brightby.se^ -||ma.cbre.com^ -||ma.kyloepartners.com^ -||ma.lekab.com^ -||ma.lexicon.se^ -||ma.meritgo.se^ -||ma.meritmind.se^ -||ma.moblrn.com^ -||ma.mvr.se^ -||ma.mw-ind.com^ -||ma.pasco.com^ -||ma.preciofishbone.se^ -||ma.pricegain.com^ -||ma.prover.com^ -||ma.revideco.se^ -||ma.ri.se^ -||ma.smartplanes.se^ -||ma.tss.se^ -||ma.uslawns.com^ -||madisoncres.actonservice.com^ -||mafiahairdresser.actonservice.com^ -||maformationofficinale.actonservice.com^ -||mail-rite.actonservice.com^ -||mail.fathomdelivers.com^ -||mail.finwellgroup.com^ -||mail.firsthome.com^ -||mail.spandex.com^ -||mailer.conad.com^ -||mailer.gameloft.com^ -||mailers.fusioncharts.com^ -||mailers.unitedadlabel.com^ -||mailing.elconfidencialdigital.com^ -||manufacturing.autodeskcommunications.com^ -||marcom.biodex.com^ -||marcom.biodexrehab.com^ -||marcomauto.globalfoundries.com^ -||marcomm.woodward.com^ -||marcomms.maistro.com^ -||maricich.actonservice.com^ -||marine.promo.skf.com^ -||markentive.actonservice.com^ -||marketing-company.getinsured.com^ -||marketing-fl.waterstonemortgage.com^ -||marketing-info.cargurus.com^ -||marketing-test.aqr.com^ -||marketing-uk.reputation.com^ -||marketing-us.alere.com^ -||marketing-us.contentguru.com^ -||marketing-us.palettesoftware.com^ -||marketing.1-800boardup.com^ -||marketing.100days.co.il^ -||marketing.188weststjames.com^ -||marketing.1edisource.com^ -||marketing.2016cle.com^ -||marketing.2inspire.com^ -||marketing.3dcadtools.com^ -||marketing.3mark.com^ -||marketing.4over.com^ -||marketing.4sightcomms.com^ -||marketing.602.cz^ -||marketing.90degreebenefits.com^ -||marketing.a1cu.org^ -||marketing.a2btracking.com^ -||marketing.aaaflag.com^ -||marketing.aad.org^ -||marketing.aamcompany.com^ -||marketing.abaco.com^ -||marketing.abnbfcu.org^ -||marketing.absoft.co.uk^ -||marketing.acadian-asset.com^ -||marketing.accedo.tv^ -||marketing.acceleratedwealth.com^ -||marketing.accesscapitalgrp.com^ -||marketing.accesshardware.com^ -||marketing.accountorgroup.com^ -||marketing.accuride.com^ -||marketing.accurisksolutions.com^ -||marketing.acendas.com^ -||marketing.acieu.net^ -||marketing.acromag.com^ -||marketing.acrowire.com^ -||marketing.act-on.com^ -||marketing.activehousing.co.uk^ -||marketing.activeprospect.com^ -||marketing.acumenehr.com^ -||marketing.acumenmd.com^ -||marketing.adamasconsulting.com^ -||marketing.adept-telecom.co.uk^ -||marketing.advancedpowertech.com^ -||marketing.advancedpractice.com^ -||marketing.advanceflooring.co.nz^ -||marketing.advantage.tech^ -||marketing.advectas.se^ -||marketing.advicemedia.com^ -||marketing.advisorsres.com^ -||marketing.aefonline.org^ -||marketing.afterschoolallstars.org^ -||marketing.agracel.com^ -||marketing.airefco.com^ -||marketing.akaes.com^ -||marketing.alaskavisit.com^ -||marketing.alcopro.com^ -||marketing.alere.com^ -||marketing.alereforensics.com^ -||marketing.alfalak.com^ -||marketing.alhi.com^ -||marketing.all-wall.com^ -||marketing.allgress.com^ -||marketing.allmy-data.com^ -||marketing.almalasers.com^ -||marketing.almusnet.com^ -||marketing.alphabroder.ca^ -||marketing.alphabroder.com^ -||marketing.alphacommsolutions.com^ -||marketing.alphastarcm.com^ -||marketing.alsearsmd.com^ -||marketing.am.jll.com^ -||marketing.americanairlinescenter.com^ -||marketing.americanbathgroup.com^ -||marketing.americanweathertechsoffers.com^ -||marketing.amerindrisk.org^ -||marketing.amishcountry.org^ -||marketing.amocc.net^ -||marketing.analysysmason.com^ -||marketing.anchorage.net^ -||marketing.andaluciarealty.com^ -||marketing.angellmarketing.com^ -||marketing.aod-cloud.com^ -||marketing.aoneatm.com^ -||marketing.aotourism.com^ -||marketing.apllogistics.com^ -||marketing.apnconsultinginc.com^ -||marketing.apparound.com^ -||marketing.apptus.com^ -||marketing.aqr.com^ -||marketing.aragonresearch.com^ -||marketing.arcsona.com^ -||marketing.arenasports.net^ -||marketing.ariser.se^ -||marketing.arlington-capital.com^ -||marketing.arlington.org^ -||marketing.armsolutions.com^ -||marketing.arrayasolutions.com^ -||marketing.artemiscm.com^ -||marketing.asginsurance.com^ -||marketing.ashcroft.com^ -||marketing.ashianahomes.com^ -||marketing.asmarterwindow.com^ -||marketing.assetstrategy.com^ -||marketing.astecsolutions.com^ -||marketing.asteracu.com^ -||marketing.astm.org^ -||marketing.asurarisk.com^ -||marketing.atcautomation.com^ -||marketing.aten.com^ -||marketing.atlanticcitynj.com^ -||marketing.atlanticdiagnosticlaboratories.com^ -||marketing.att-smb.com^ -||marketing.attaneresults.com^ -||marketing.attivoconsulting.com^ -||marketing.attocube.com^ -||marketing.attunelive.com^ -||marketing.austiner.com^ -||marketing.autopayplus.com^ -||marketing.avantage.nl^ -||marketing.aventel.nl^ -||marketing.aviacode.com^ -||marketing.avtex.com^ -||marketing.awh.net^ -||marketing.awidubai.com^ -||marketing.ayesa.com^ -||marketing.balconette.co.uk^ -||marketing.baltimore.org^ -||marketing.barbizon.com^ -||marketing.barenbrug.co.uk^ -||marketing.baristaproshop.com^ -||marketing.barnumfg.com^ -||marketing.barsnet.com^ -||marketing.basalite.com^ -||marketing.baschrock-fg.com^ -||marketing.basyspro.com^ -||marketing.bayhealth.org^ -||marketing.bbsmartsolutions.com^ -||marketing.bca.srl^ -||marketing.bcaespana.es^ -||marketing.bcaportugal.pt^ -||marketing.bcltechnologies.com^ -||marketing.bcpas.com^ -||marketing.beachleymedical.com^ -||marketing.bellwethercorp.com^ -||marketing.beneplace.com^ -||marketing.benzcommunications.com^ -||marketing.beringer.net^ -||marketing.berktek.us^ -||marketing.bfandt.com^ -||marketing.bftwealth.com^ -||marketing.biomerieux-usa.com^ -||marketing.bioquell.com^ -||marketing.biotek.com^ -||marketing.bisongear.com^ -||marketing.biworldwide.co.uk^ -||marketing.blacktrace.com^ -||marketing.blastone.com^ -||marketing.blauw.com^ -||marketing.bldgcontrols.com^ -||marketing.bloomingtonmn.org^ -||marketing.bluebox.net^ -||marketing.bluebusiness.com^ -||marketing.bluefcu.com^ -||marketing.bluemarblepayroll.com^ -||marketing.bluvue.com^ -||marketing.bmlwealth.net^ -||marketing.bobswatches.com^ -||marketing.bodine-electric.com^ -||marketing.bodybilt.com^ -||marketing.boeingavenue8.nl^ -||marketing.bondcapital.ca^ -||marketing.bostwick-braun.com^ -||marketing.bouldercoloradousa.com^ -||marketing.boxerproperty.com^ -||marketing.boxmanstudios.com^ -||marketing.braintraffic.com^ -||marketing.branchserv.com^ -||marketing.brandingbusiness.com^ -||marketing.brandonindustries.com^ -||marketing.brandywinevalley.com^ -||marketing.braunintertec.com^ -||marketing.brucknertruck.com^ -||marketing.brukeroptics.com^ -||marketing.bruynzeel.org^ -||marketing.bswift.com^ -||marketing.btcelectronics.com^ -||marketing.budpack.com^ -||marketing.buffalojeans.com^ -||marketing.bulkbookstore.com^ -||marketing.buscircle.com^ -||marketing.business-events.lu^ -||marketing.business-sweden.se^ -||marketing.businesssystemsuk.com^ -||marketing.butlercc.edu^ -||marketing.c-c-l.com^ -||marketing.cabinsatgreenmountain.com^ -||marketing.cableloc.com^ -||marketing.cachetservices.com^ -||marketing.cadillacmichigan.com^ -||marketing.caldwell.com^ -||marketing.caldwellpartners.com^ -||marketing.caliberpublicsafety.com^ -||marketing.calilighting.com^ -||marketing.callahan.agency^ -||marketing.callmeonmycell.com^ -||marketing.callsource.com^ -||marketing.callutc.com^ -||marketing.calm.io^ -||marketing.campbellwealth.com^ -||marketing.campusadv.com^ -||marketing.candorcircuitboards.com^ -||marketing.caplin.com^ -||marketing.careservicesllc.com^ -||marketing.careworks.com^ -||marketing.cargas.com^ -||marketing.carillonlubbock.com^ -||marketing.carlisleit.com^ -||marketing.carltontechnologies.com^ -||marketing.carmichael-hill.com^ -||marketing.carolina.com^ -||marketing.castrum.uk^ -||marketing.catamarans.com^ -||marketing.cbancnetwork.com^ -||marketing.ccbtechnology.com^ -||marketing.celayix.com^ -||marketing.celebratinghomedirect.com^ -||marketing.cellero.com^ -||marketing.celona.io^ -||marketing.celsiusinternational.com^ -||marketing.centra.org^ -||marketing.centreforaviation.com^ -||marketing.centsoft.se^ -||marketing.certipay.com^ -||marketing.cfa.ca^ -||marketing.challengemyteam.co.uk^ -||marketing.championsales.com^ -||marketing.chancefinancialgroup.com^ -||marketing.charityfirst.com^ -||marketing.charliebaggsinc.com^ -||marketing.chemometec.com^ -||marketing.cheyenne.org^ -||marketing.choosechicago.com^ -||marketing.christchurchnz.com^ -||marketing.chromachecker.com^ -||marketing.ciandt.com^ -||marketing.circadence.com^ -||marketing.cisco-eagle.com^ -||marketing.citycollege.edu^ -||marketing.cjisgroup.com^ -||marketing.cla.aero^ -||marketing.claritydiagnostics.com^ -||marketing.clarityqst.com^ -||marketing.clarosanalytics.com^ -||marketing.classroominc.org^ -||marketing.cleardigital.com^ -||marketing.clearlaws.com^ -||marketing.clearviewlive.com^ -||marketing.clickatell.com^ -||marketing.clientsfirst-us.com^ -||marketing.cliffordpower.com^ -||marketing.clinigengroup.com^ -||marketing.cloudmerge.com^ -||marketing.cnalloys.co.uk^ -||marketing.coastalmississippi.com^ -||marketing.coastaloakins.com^ -||marketing.coconutmalorie.com^ -||marketing.codebaby.com^ -||marketing.cofactordigital.com^ -||marketing.cogentco.com^ -||marketing.colliers.com^ -||marketing.cologuardclassic.com^ -||marketing.comda.com^ -||marketing.comeovertoplover.com^ -||marketing.commercehomemortgage.com^ -||marketing.communityassociationmanagement.com^ -||marketing.complianceassociates.ca^ -||marketing.compmort.com^ -||marketing.computerguidance.com^ -||marketing.compuware.com^ -||marketing.confidentialcures.com^ -||marketing.congress.eular.org^ -||marketing.connect.scanstat.com^ -||marketing.connectandsell.com^ -||marketing.conney.com^ -||marketing.constructionmonitor.com^ -||marketing.construsoft.com^ -||marketing.consumermkts1.com^ -||marketing.contentguru.nl^ -||marketing.convergentusa.com^ -||marketing.copc.com^ -||marketing.coregroupusa.com^ -||marketing.corneagen.com^ -||marketing.cornerstonevegas.com^ -||marketing.corrigan.com^ -||marketing.couplescruise.com^ -||marketing.cpa2biz.com^ -||marketing.cpicompanies.com^ -||marketing.cpsi.com^ -||marketing.crawford-industries.com^ -||marketing.crbcunninghams.co.uk^ -||marketing.credoreference.com^ -||marketing.cresa.com^ -||marketing.crystalcoastnc.org^ -||marketing.ctic.ca^ -||marketing.cura-hpc.com^ -||marketing.curetoday.com^ -||marketing.customercarebg.com^ -||marketing.cvma.com^ -||marketing.cyber-edge.com^ -||marketing.cyber360solutions.com^ -||marketing.cygnetcloud.com^ -||marketing.cypram.com^ -||marketing.d4discovery.com^ -||marketing.dacocorp.com^ -||marketing.dairyland.com^ -||marketing.dais.com^ -||marketing.dantecdynamics.com^ -||marketing.darwinspet.com^ -||marketing.data-source.com^ -||marketing.data180.com^ -||marketing.datacenterdynamics.com^ -||marketing.dataflo.com^ -||marketing.datamark.net^ -||marketing.datamatics.com^ -||marketing.dataprise.com^ -||marketing.datawatchsystems.com^ -||marketing.dataxoom.net^ -||marketing.daveycoach.com^ -||marketing.davidcbaker.com^ -||marketing.dbh-group.com^ -||marketing.dcihollowmetal.com^ -||marketing.dcmh.net^ -||marketing.dcmservices.com^ -||marketing.ddc-cabtech.com^ -||marketing.deckerretirementplanning.com^ -||marketing.dedicated-db.com^ -||marketing.dedola.com^ -||marketing.deepcrawl.com^ -||marketing.deltechomes.com^ -||marketing.demagcranes.com^ -||marketing.deppecommunications.com^ -||marketing.dessy.com^ -||marketing.destinationcanada.com^ -||marketing.destinationgranby.com^ -||marketing.destinationtravelnetwork.com^ -||marketing.destinationvancouver.com^ -||marketing.dev-pro.net^ -||marketing.dhptraining.com^ -||marketing.dienerlaw.net^ -||marketing.digitaledge.marketing^ -||marketing.digitalwarehouse.com^ -||marketing.diningalliance.com^ -||marketing.discovercentralma.org^ -||marketing.discoverdenton.com^ -||marketing.discoverdunwoody.com^ -||marketing.discoverkalamazoo.com^ -||marketing.discoverlehighvalley.com^ -||marketing.discovernewport.org^ -||marketing.discoverorg.com^ -||marketing.discoverphl.com^ -||marketing.discoverpuertorico.com^ -||marketing.discoversantaclara.org^ -||marketing.discoversaratoga.org^ -||marketing.discoverstcharles.com^ -||marketing.discovertemple.com^ -||marketing.discovia.com^ -||marketing.dispatchtoday.com^ -||marketing.diverseco.com.au^ -||marketing.dmcc.ae^ -||marketing.dmcplc.co.uk^ -||marketing.dmihotels.com^ -||marketing.dnacenter.com^ -||marketing.docstar.com^ -||marketing.dohenycompanies.com^ -||marketing.doorway.com^ -||marketing.doprocess.com^ -||marketing.draycir.com^ -||marketing.dreamlawn.com^ -||marketing.dreamstyleremodeling.com^ -||marketing.driveline.co.nz^ -||marketing.driveulu.com^ -||marketing.dryvit.com^ -||marketing.dscdredge.com^ -||marketing.ducenit.com^ -||marketing.duckbrand.com^ -||marketing.dulsco.com^ -||marketing.duramarktechnologies.com^ -||marketing.dylangrayconsulting.com^ -||marketing.dynamicairshelters.com^ -||marketing.e-emphasys.com^ -||marketing.earthbend.com^ -||marketing.earthquakeauthority.com^ -||marketing.eastbanctech.com^ -||marketing.eastviewpress.com^ -||marketing.easydita.com^ -||marketing.eccoviasolutions.com^ -||marketing.ece.org^ -||marketing.ecgmc.com^ -||marketing.echohealthinc.com^ -||marketing.echostarmobile.com^ -||marketing.ecosystemintegrity.com^ -||marketing.ecslearn.com^ -||marketing.efleets.com^ -||marketing.ehimrx.com^ -||marketing.ehy.com^ -||marketing.elastoproxy.com^ -||marketing.electroind.com^ -||marketing.electroquip.co.nz^ -||marketing.ellingtonresort.com^ -||marketing.elrig.org^ -||marketing.emds.com^ -||marketing.emeraldheights.com^ -||marketing.emergenttech.com^ -||marketing.emirsoftware.com^ -||marketing.empire-pa.com^ -||marketing.emplicity.com^ -||marketing.employeedevelopmentsystems.com^ -||marketing.endologix.com^ -||marketing.energystewardsinc.com^ -||marketing.enhancedvision.com^ -||marketing.enrichmentjourneys.com^ -||marketing.enterprise-selling.com^ -||marketing.entrustinc.com^ -||marketing.envisionpackaging.com^ -||marketing.envylabs.com^ -||marketing.epsteinandwhite.com^ -||marketing.equipointpartners.com^ -||marketing.equiscript.com^ -||marketing.ergogenesis.com^ -||marketing.erioninsurance.com^ -||marketing.erm-ins.com^ -||marketing.eschelsfinancial.net^ -||marketing.eschenbach.com^ -||marketing.esecuritysolutions.com^ -||marketing.esenetworks.com^ -||marketing.espec.com^ -||marketing.essellc.com^ -||marketing.et.support^ -||marketing.etcnow.net^ -||marketing.eteamsys.com^ -||marketing.eugenecascadescoast.org^ -||marketing.eurofinsus.com^ -||marketing.evansbank.com^ -||marketing.evcp.com^ -||marketing.eventsforce.com^ -||marketing.evolveip.nl^ -||marketing.ewi.org^ -||marketing.exclusive-networks.com.au^ -||marketing.execshape.com^ -||marketing.executivetravel.com^ -||marketing.experiencecolumbus.com^ -||marketing.experiencegr.com^ -||marketing.experienceolympia.com^ -||marketing.experts.com^ -||marketing.exploreasheville.com^ -||marketing.explorecharleston.com^ -||marketing.exploreedmonton.com^ -||marketing.exploregwinnett.org^ -||marketing.explorenorthmyrtlebeach.com^ -||marketing.explorestlouis.com^ -||marketing.expworld.com^ -||marketing.exteresauto.com^ -||marketing.external.xerox.com^ -||marketing.extremenetworks.com^ -||marketing.eyc.com^ -||marketing.ezicarrental.co.nz^ -||marketing.facilityplus.com^ -||marketing.fatiguescience.com^ -||marketing.fedsched.com^ -||marketing.festiva.com^ -||marketing.festivaorlandoresort.com^ -||marketing.fhsr.com^ -||marketing.fiduciaryfirst.com^ -||marketing.firearmsins.com^ -||marketing.first-insight.com^ -||marketing.firstinsurancefunding.com^ -||marketing.firstpac.com^ -||marketing.five-startech.com^ -||marketing.five19creative.com^ -||marketing.flaire.com^ -||marketing.fleetfeetorlando.com^ -||marketing.fleetfeetraleigh.com^ -||marketing.fleetstar.com^ -||marketing.fletchercsi.com^ -||marketing.florencechamber.com^ -||marketing.flsmidth.com^ -||marketing.fluentco.com^ -||marketing.flycastpartners.com^ -||marketing.flynth.nl^ -||marketing.forbin.com^ -||marketing.forepartnership.com^ -||marketing.forgeplumbing.com.au^ -||marketing.forte.net^ -||marketing.fortsmith.org^ -||marketing.fortworth.com^ -||marketing.foxitsoftware1.com^ -||marketing.foxrehab.org^ -||marketing.fpaaust.com.au^ -||marketing.frogtape.com^ -||marketing.frontrowseatsllc.com^ -||marketing.ftfnews.com^ -||marketing.funmobility.com^ -||marketing.funraise.io^ -||marketing.fwcbd.com^ -||marketing.gables.com^ -||marketing.gasandsupply.com^ -||marketing.gatewayp.com^ -||marketing.gatlinburg.com^ -||marketing.gbg.com^ -||marketing.gca.net^ -||marketing.gebroederskoffie.nl^ -||marketing.genesis-fs.com^ -||marketing.genpak.com^ -||marketing.geowarehouse.ca^ -||marketing.gep.com^ -||marketing.getfidelis.com^ -||marketing.getoverdrive.com^ -||marketing.glenviewterrace.com^ -||marketing.globalbmg.com^ -||marketing.globalmedics.co.nz^ -||marketing.globalpetfoods.ca^ -||marketing.globalpointofcare.abbott^ -||marketing.globerunner.com^ -||marketing.gmcvb.com^ -||marketing.gogofunding.com^ -||marketing.gogovapps.com^ -||marketing.gogreat.com^ -||marketing.goldenpaints.com^ -||marketing.goochandhousego.com^ -||marketing.goodcoinc.com^ -||marketing.goodfunding.com^ -||marketing.goprovidence.com^ -||marketing.gorillagroup.com^ -||marketing.gosenergy.com^ -||marketing.gotobermuda.com^ -||marketing.gotolouisville.com^ -||marketing.gowestgroup.com^ -||marketing.gradientfg.com^ -||marketing.gramener.com^ -||marketing.grandecheese.com^ -||marketing.greatgunsmarketing.co.uk^ -||marketing.greatpointins.com^ -||marketing.greenbay.com^ -||marketing.greenbrierwv.com^ -||marketing.greycon.com^ -||marketing.groupmgmt.com^ -||marketing.growbinmaster.com^ -||marketing.growthmodemarketing.com^ -||marketing.grplans.com^ -||marketing.guardianfinancialgp.com^ -||marketing.guidepoint.com^ -||marketing.gulfshores.com^ -||marketing.gwcontainers.com^ -||marketing.halcousa.com^ -||marketing.halldale.com^ -||marketing.halobi.com^ -||marketing.hardysolutions.com^ -||marketing.harlancapital.com^ -||marketing.harrishealthcare.com^ -||marketing.haughn.com^ -||marketing.havenfinancialgroup.com^ -||marketing.hcrwealth.com^ -||marketing.hcsbenefits.com^ -||marketing.hcu.coop^ -||marketing.headwaycorp.com^ -||marketing.healthcarousel.com^ -||marketing.healthfoodinsurance.com^ -||marketing.healthtech.net^ -||marketing.hellomedia.com^ -||marketing.helloposition.com^ -||marketing.heronskey.org^ -||marketing.hfgagents.com^ -||marketing.hfore.com^ -||marketing.hgdata.com^ -||marketing.hhglobal.com^ -||marketing.highpoint.com^ -||marketing.highwoods.com^ -||marketing.higmi.com^ -||marketing.hilltopwealthsolutions.com^ -||marketing.hilltopwealthtax.com^ -||marketing.hines.com^ -||marketing.hodgesmace.com^ -||marketing.holocentric.com^ -||marketing.home-inspection-franchise-opportunity.com^ -||marketing.homedna.com^ -||marketing.homeofpurdue.com^ -||marketing.homesteadplans.com^ -||marketing.horizonfoodgroup.com^ -||marketing.horizonlims.com^ -||marketing.horizonsoftware.com^ -||marketing.hospicecarelc.org^ -||marketing.hughwood.com^ -||marketing.hvcb.org^ -||marketing.hyperdisk.com^ -||marketing.iaccompanies.com^ -||marketing.iaclarington.com^ -||marketing.iacm.com^ -||marketing.iansresearch.com^ -||marketing.iar.com^ -||marketing.ibermatica.com^ -||marketing.icatsoftware.com^ -||marketing.icreative.nl^ -||marketing.idquantique.com^ -||marketing.igel.com^ -||marketing.ijoinsolutions.com^ -||marketing.iloveny.com^ -||marketing.imageworkscreative.com^ -||marketing.imagexmedia.com^ -||marketing.imatrix.com^ -||marketing.impactinnovationgroup.com^ -||marketing.impexium.com^ -||marketing.inaani.com^ -||marketing.incrediwear.com^ -||marketing.indianadunes.com^ -||marketing.industrialformulatorsinc.com^ -||marketing.industrialspec.com^ -||marketing.inex.com^ -||marketing.influitive.com^ -||marketing.influxdb.com^ -||marketing.infrontconsulting.com^ -||marketing.ink-co.com^ -||marketing.insdesign.com^ -||marketing.insigniam.com^ -||marketing.insignio.de^ -||marketing.instrumentassociates.com^ -||marketing.insurancedesigners.com^ -||marketing.insureline.com^ -||marketing.insureon.com^ -||marketing.inszoneinsurance.com^ -||marketing.intellifuel.com^ -||marketing.interact911.com^ -||marketing.interedgemarketing.com^ -||marketing.intergraph.net^ -||marketing.interiorfcu.org^ -||marketing.intermax.nl^ -||marketing.inthenest.com^ -||marketing.intrado.com^ -||marketing.inventiconasia.com^ -||marketing.investwithwmg.com^ -||marketing.invitria.com^ -||marketing.iofficedelivers.com^ -||marketing.iongroup.com^ -||marketing.iriworldwide.com^ -||marketing.irvingtexas.com^ -||marketing.isaless.com^ -||marketing.ismguide.com^ -||marketing.itiball.com^ -||marketing.itsavvy.com^ -||marketing.itshome.com^ -||marketing.ivctechnologies.com^ -||marketing.iwsinc.com^ -||marketing.izeno.com^ -||marketing.jacksonholechamber.com^ -||marketing.janek.com^ -||marketing.javs.com^ -||marketing.jaysoncompany.com^ -||marketing.jdicleaning.com^ -||marketing.jensenprecast.com^ -||marketing.jmait.com^ -||marketing.johncrane.com^ -||marketing.johnsonmelloh.com^ -||marketing.johnstoncountync.org^ -||marketing.joyridecoffee.com^ -||marketing.jstokes.com^ -||marketing.jtsa.edu^ -||marketing.juicepharma.com^ -||marketing.kainmcarthur.com^ -||marketing.kestlerfinancial.com^ -||marketing.keylane.com^ -||marketing.keystonegp.com^ -||marketing.kimble-chase.com^ -||marketing.kinectsolar.com^ -||marketing.kingsiii.com^ -||marketing.kiran.com^ -||marketing.kisales.com^ -||marketing.knoxville.org^ -||marketing.konareefresort.com^ -||marketing.konecranes.com^ -||marketing.kozzyavm.com^ -||marketing.kpfilms.com^ -||marketing.kurtzon.com^ -||marketing.labdepotinc.com^ -||marketing.lakeco.com^ -||marketing.lakecountyfl.gov^ -||marketing.lakepointadvisorygroup.com^ -||marketing.landuscooperative.com^ -||marketing.laplinkemail.com^ -||marketing.latisys.com^ -||marketing.latourism.org^ -||marketing.lcmchealth.org^ -||marketing.leadables.com^ -||marketing.leading-edge.com^ -||marketing.leadingresponse.com^ -||marketing.learncia.com^ -||marketing.leasehawk.com^ -||marketing.leatherberryassociates.com^ -||marketing.ledgeviewpartners.com^ -||marketing.leegov.com^ -||marketing.lhbindustries.com^ -||marketing.libertyhomeequity.com^ -||marketing.libertyreverse.com^ -||marketing.lightstreamin.com^ -||marketing.lilogy.com^ -||marketing.lincoln.org^ -||marketing.linkdex.com^ -||marketing.liquidvoice.co.uk^ -||marketing.livepaniau.com^ -||marketing.livevol.com^ -||marketing.location3.com^ -||marketing.lord.com^ -||marketing.lorenz.ca^ -||marketing.lorenzproducts.com^ -||marketing.loslagosathotspringsvillage.com^ -||marketing.lstaff.com^ -||marketing.lumenera.com^ -||marketing.lumiradx.com^ -||marketing.luxurylink.com^ -||marketing.lystek.com^ -||marketing.m-m.net^ -||marketing.m3design.com^ -||marketing.machtfit.de^ -||marketing.maddenmo.com^ -||marketing.mafiahairdresser.com^ -||marketing.magnamachine.com^ -||marketing.magnet.ie^ -||marketing.magnetrol.com^ -||marketing.mailersusa.com^ -||marketing.mainstream-tech.com^ -||marketing.manchesterspecialty.com^ -||marketing.mandarine.pl^ -||marketing.manningltg.com^ -||marketing.mapleleafpromostore.com^ -||marketing.mapleleafpromotions.com^ -||marketing.maricich.com^ -||marketing.marineagency.com^ -||marketing.marketinggeneral.com^ -||marketing.marketingguys.nl^ -||marketing.martorusa.com^ -||marketing.marusyngro.com^ -||marketing.marybrowns.com^ -||marketing.masergy.com^ -||marketing.matchstick.legal^ -||marketing.mba.hkust.edu.hk^ -||marketing.mcgrawpowersports.com^ -||marketing.mcommgroup.com^ -||marketing.mdbeautyclinic.ca^ -||marketing.medata.com^ -||marketing.medfusion.com^ -||marketing.medical.averydennison.com^ -||marketing.medprostaffing.com^ -||marketing.medsolutions.com^ -||marketing.medsphere.com^ -||marketing.medxm1.com^ -||marketing.meetac.com^ -||marketing.meetboston.com^ -||marketing.meetprestige.com^ -||marketing.melitta.ca^ -||marketing.melitta.com^ -||marketing.merlinbusinesssoftware.com^ -||marketing.mesalabs.com^ -||marketing.metaltanks.com^ -||marketing.metropolislosangeles.com^ -||marketing.mgis.com^ -||marketing.mhe-demag.com^ -||marketing.mhinvest.com^ -||marketing.microlise.com^ -||marketing.middlemarketcenter.org^ -||marketing.midstate-sales.com^ -||marketing.midwestbath.com^ -||marketing.mie-solutions.com^ -||marketing.milesfinancialgroup.com^ -||marketing.millstonefinancial.net^ -||marketing.mimakiusa.com^ -||marketing.mindflowdesign.com^ -||marketing.miraflats.com^ -||marketing.miramarcap.com^ -||marketing.mirrorlaketamarackresort.com^ -||marketing.mixitusa.com^ -||marketing.mlnrp.com^ -||marketing.mnmpartnersllc.com^ -||marketing.mobile.org^ -||marketing.modalife.com^ -||marketing.moldex.com^ -||marketing.monetsoftware.com^ -||marketing.monochrome.co.uk^ -||marketing.moodypublishers.com^ -||marketing.mossinc.com^ -||marketing.motionsolutions.com^ -||marketing.motista.com^ -||marketing.motivation.se^ -||marketing.motleys.com^ -||marketing.moverschoiceinfo.com^ -||marketing.mowe.studio^ -||marketing.mplsnw.com^ -||marketing.mrcaff.org^ -||marketing.mtcperformance.com^ -||marketing.mtrustcompany.com^ -||marketing.multiad.com^ -||marketing.mxmsig.com^ -||marketing.mya.co.uk^ -||marketing.myadvice.com^ -||marketing.mycvcu.org^ -||marketing.mydario.com^ -||marketing.mypoindexter.com^ -||marketing.mypureradiance.com^ -||marketing.na.schoeck.com^ -||marketing.nabatakinc.com^ -||marketing.nace.org^ -||marketing.nada.org^ -||marketing.nanthealth.net^ -||marketing.napatech.com^ -||marketing.natilik.com^ -||marketing.nav-x.com^ -||marketing.navieninc.com^ -||marketing.navitascredit.com^ -||marketing.ncbrunswick.com^ -||marketing.net3technology.net^ -||marketing.netcel.com^ -||marketing.netplan.co.uk^ -||marketing.netrixllc.com^ -||marketing.netvlies.nl^ -||marketing.network-value.com^ -||marketing.networthadvisorsllc.com^ -||marketing.netwoven.com^ -||marketing.neurorelief.com^ -||marketing.newgenerationins.com^ -||marketing.newhomesource.com^ -||marketing.newnet.com^ -||marketing.neworleans.com^ -||marketing.newwestinsurance.com^ -||marketing.nexans.us^ -||marketing.nibusinessparkleasing.com^ -||marketing.nicepak.com^ -||marketing.nicholaswealth.com^ -||marketing.njcpa.org^ -||marketing.nopec.org^ -||marketing.norsat.com^ -||marketing.northgate.com^ -||marketing.novatel.com^ -||marketing.novelcoworking.com^ -||marketing.novicell.co.uk^ -||marketing.nowplayingutah.com^ -||marketing.nparallel.com^ -||marketing.npuins.com^ -||marketing.nsfocus.com^ -||marketing.nsfocusglobal.com^ -||marketing.nsford.com^ -||marketing.ntconsult.com^ -||marketing.nthdegree.com^ -||marketing.nu.com^ -||marketing.nualight.com^ -||marketing.nugrowth.com^ -||marketing.o3world.com^ -||marketing.objectpartners.com^ -||marketing.oceanclubmyrtlebeach.com^ -||marketing.oceangateresortfl.com^ -||marketing.ocozzio.com^ -||marketing.odfigroup.com^ -||marketing.olivers.dk^ -||marketing.omadi.com^ -||marketing.omgnational.com^ -||marketing.omnifymarketing.com^ -||marketing.ompimail.com^ -||marketing.onclive.com^ -||marketing.onececo.com^ -||marketing.oni.co.uk^ -||marketing.onkyousa.com^ -||marketing.openskygroup.com^ -||marketing.opexanalytics.com^ -||marketing.opga.com^ -||marketing.opoffice.com^ -||marketing.optimumenergyco.com^ -||marketing.optionmetrics.com^ -||marketing.optis-world.com^ -||marketing.optitex.com^ -||marketing.orbograph.com^ -||marketing.oremuscorp.com^ -||marketing.orionhealth.com^ -||marketing.orionrisk.com^ -||marketing.orionti.ca^ -||marketing.orolia.com^ -||marketing.orthofi.com^ -||marketing.oxfordcomputergroup.com^ -||marketing.pac.com^ -||marketing.pacificspecialty.com^ -||marketing.paducah.travel^ -||marketing.page1solutions.com^ -||marketing.pal-v.com^ -||marketing.palettesoftware.com^ -||marketing.pangea-cds.com^ -||marketing.panviva.com^ -||marketing.papersave.com^ -||marketing.paraflex.com^ -||marketing.parkmycloud.com^ -||marketing.parkseniorvillas.com^ -||marketing.partnerrc.com^ -||marketing.patriotcapitalcorp.com^ -||marketing.pattonhc.com^ -||marketing.pax8.com^ -||marketing.paysafe.com^ -||marketing.pcsww.com^ -||marketing.peakfinancialfreedomgroup.com^ -||marketing.peerapp.com^ -||marketing.pentaho.com^ -||marketing.peoplesafe.co.uk^ -||marketing.perfarm.com^ -||marketing.performancepolymers.averydennison.com^ -||marketing.performantcorp.com^ -||marketing.periscopewealthadvisors.com^ -||marketing.petsit.com^ -||marketing.pfg1.net^ -||marketing.piazzaavm.com.tr^ -||marketing.pinkerton.com^ -||marketing.pitcher-nsw.com.au^ -||marketing.planar.com^ -||marketing.plastiq.com^ -||marketing.plazahomemortgage.com^ -||marketing.plsx.com^ -||marketing.plus-projects.com^ -||marketing.pmanetwork.com^ -||marketing.polimortgage.com^ -||marketing.pollock.com^ -||marketing.polymerohio.org^ -||marketing.pooleaudi.co.uk^ -||marketing.porchlightatl.com^ -||marketing.potlatchdelticlandsales.com^ -||marketing.precisiondoor.tech^ -||marketing.premierpandp.com^ -||marketing.prescientnational.com^ -||marketing.primaryservices.com^ -||marketing.profmi.org^ -||marketing.projectares.academy^ -||marketing.promiles.com^ -||marketing.promoboxx.com^ -||marketing.pronaca.com^ -||marketing.prosperoware.com^ -||marketing.protegic.com.au^ -||marketing.protosell.se^ -||marketing.ptw.com^ -||marketing.puffininn.net^ -||marketing.punctuation.com^ -||marketing.pureaircontrols.com^ -||marketing.pureflorida.com^ -||marketing.puretechltd.com^ -||marketing.qivos.com^ -||marketing.qualificationcheck.com^ -||marketing.queenstownnz.nz^ -||marketing.quenchonline.com^ -||marketing.questforum.org^ -||marketing.quickattach.com^ -||marketing.quickencompare.com^ -||marketing.quickenloans.com^ -||marketing.quonticbank.com^ -||marketing.rals.com^ -||marketing.ramsayinnovations.com^ -||marketing.rapidlockingsystem.com^ -||marketing.rattleback.com^ -||marketing.rdoequipment.com^ -||marketing.readinghorizons.com^ -||marketing.readtolead.org^ -||marketing.realcomm.com^ -||marketing.realstorygroup.com^ -||marketing.recarroll.com^ -||marketing.redclassic.com^ -||marketing.redlion.net^ -||marketing.redwoodtech.de^ -||marketing.regenteducation.net^ -||marketing.reliablepaper.com^ -||marketing.remotelock.com^ -||marketing.resolutionre.com^ -||marketing.responsepoint.com^ -||marketing.resuelve.mx^ -||marketing.revcommercialgroup.com^ -||marketing.revegy.com^ -||marketing.revgroup.com^ -||marketing.revparts.com^ -||marketing.revrvgroup.com^ -||marketing.rfactr.com^ -||marketing.rfl.uk.com^ -||marketing.rhinofoods.com^ -||marketing.rimes.com^ -||marketing.riseagainsthunger.org^ -||marketing.risingfall.com^ -||marketing.riverfrontig.com^ -||marketing.rme360.com^ -||marketing.rmhoffman.com^ -||marketing.rmhoist.com^ -||marketing.robtheiraguy.com^ -||marketing.rocklakeig.com^ -||marketing.roofconnect.com^ -||marketing.rosica.com^ -||marketing.roxtec.com^ -||marketing.rsvpportal.com^ -||marketing.rtx.travel^ -||marketing.ruckuswireless.com^ -||marketing.ruf-briquetter.com^ -||marketing.runyonsurfaceprep.com^ -||marketing.rxaap.com^ -||marketing.saa.com^ -||marketing.saegissolutions.ca^ -||marketing.safesend.com^ -||marketing.safetreeretirement.com^ -||marketing.safetychix.com^ -||marketing.sambasafety.com^ -||marketing.sanantonioedf.com^ -||marketing.sanitysolutions.com^ -||marketing.santabarbaraca.com^ -||marketing.sap.events.deloitte.com^ -||marketing.savannahchamber.com^ -||marketing.scalematrix.com^ -||marketing.scenicsedona.com^ -||marketing.schneiderdowns.com^ -||marketing.schuff.com^ -||marketing.sectra.com^ -||marketing.sedgwick.com^ -||marketing.seemonterey.com^ -||marketing.self-helpfcu.org^ -||marketing.sensoft.ca^ -||marketing.sensysgatso.com^ -||marketing.sentinelgroup.com^ -||marketing.sentirlabs.com^ -||marketing.seobusinessreporter.com^ -||marketing.sepac.com^ -||marketing.sertantcapital.com^ -||marketing.setaram.com^ -||marketing.shadow-soft.com^ -||marketing.shippers-supply.com^ -||marketing.shoplet.com^ -||marketing.shoppingcenteradvisers.com^ -||marketing.shoresatorangebeach.com^ -||marketing.shoresmith.com^ -||marketing.shpfinancial.com^ -||marketing.shreveport-bossier.org^ -||marketing.shurtapemail.com^ -||marketing.sigmanest.com^ -||marketing.signaltheory.com^ -||marketing.simio.com^ -||marketing.simpartners.com^ -||marketing.simplion.com^ -||marketing.sinctech.com^ -||marketing.skorsports.nl^ -||marketing.slocal.com^ -||marketing.smartcoversystems.com^ -||marketing.smartowner.com^ -||marketing.smartvault.com^ -||marketing.socialbakers.com^ -||marketing.softwaresecure.com^ -||marketing.soha.io^ -||marketing.sojern.com^ -||marketing.soloprotect.com^ -||marketing.somero.com^ -||marketing.sosintl.com^ -||marketing.sossystems.co.uk^ -||marketing.soundtrackyourbrand.com^ -||marketing.sourceadvisors.com^ -||marketing.southeastmortgage.com^ -||marketing.southparkcapital.com^ -||marketing.southwestblinds.com^ -||marketing.sparktx.com^ -||marketing.spbatpa.org^ -||marketing.specgradeled.com^ -||marketing.speconthejob.com^ -||marketing.spectracom.com^ -||marketing.spigit.com^ -||marketing.spinnakermgmt.com^ -||marketing.sportsworld.org^ -||marketing.springfieldelectric.com^ -||marketing.squareonemea.com^ -||marketing.ssfllp.com^ -||marketing.sstid.com^ -||marketing.staffboom.com^ -||marketing.stahl.com^ -||marketing.stamen.com^ -||marketing.starrcompanies.com^ -||marketing.startfinder.com^ -||marketing.stateandfed.com^ -||marketing.stay-rlhc.com^ -||marketing.stellarmls.com^ -||marketing.stentel.com^ -||marketing.sterlingsolutions.com^ -||marketing.sti.com^ -||marketing.stillsecure.com^ -||marketing.stmh.org^ -||marketing.stockcero.com^ -||marketing.streck.com^ -||marketing.striveoffice.com^ -||marketing.strongpoint.io^ -||marketing.summittruckgroup.com^ -||marketing.suncrestadvisors.com^ -||marketing.sunny.org^ -||marketing.superiormobilemedics.com^ -||marketing.superiorrecreationalproducts.com^ -||marketing.superwindowsusa.com^ -||marketing.surfcityusa.com^ -||marketing.swdurethane.com^ -||marketing.swiftprepaid.com^ -||marketing.syntax.com^ -||marketing.syntrio.com^ -||marketing.systancia.com^ -||marketing.systempavers.com^ -||marketing.t2systems.com^ -||marketing.t4media.co.uk^ -||marketing.talbot-promo.com^ -||marketing.tallwave.com^ -||marketing.taos.com^ -||marketing.tarheelpaper.com^ -||marketing.tas.business^ -||marketing.tba.group^ -||marketing.tcgrecycling.com^ -||marketing.teamspirit.uk.com^ -||marketing.techbrite.com^ -||marketing.techcxo.com^ -||marketing.techinsurance.com^ -||marketing.techlogix.com^ -||marketing.technicalprospects.com^ -||marketing.technologyadvice.com^ -||marketing.techoregon.org^ -||marketing.teleswitch.com^ -||marketing.telstraphonewords.com.au^ -||marketing.temptimecorp.com^ -||marketing.tengointernet.com^ -||marketing.tenoapp.com^ -||marketing.ternian.com^ -||marketing.test-acton.com^ -||marketing.testforce.com^ -||marketing.testtargettreat.com^ -||marketing.tfawealthplanning.com^ -||marketing.thatsbiz.com^ -||marketing.thealtan.com^ -||marketing.thebasiccompanies.com^ -||marketing.thebeacongrp.com^ -||marketing.thebestirs.com^ -||marketing.thecea.ca^ -||marketing.thefusiongroup.com^ -||marketing.theinovogroup.com^ -||marketing.themonumentgroup.com^ -||marketing.theoccasionsgroup.com^ -||marketing.theofficestore.com^ -||marketing.thepalmbeaches.com^ -||marketing.theplasticsurgeryclinic.ca^ -||marketing.thequincygroupinc.com^ -||marketing.theresortatsummerlin.com^ -||marketing.thermocalc.se^ -||marketing.thesanfranciscopeninsula.com^ -||marketing.thewilsonagency.com^ -||marketing.thisisalpha.com^ -||marketing.thisiscleveland.com^ -||marketing.threadsol.com^ -||marketing.tidedrycleaners.com^ -||marketing.tignl.eu^ -||marketing.timmons.com^ -||marketing.tmaonline.info^ -||marketing.tmshealth.com^ -||marketing.tongue-tied-nw.co.uk^ -||marketing.toolkitgroup.com^ -||marketing.topekapartnership.com^ -||marketing.topspotims.com^ -||marketing.torrentcorp.com^ -||marketing.totalcsr.com^ -||marketing.tourismpg.com^ -||marketing.tourismrichmond.com^ -||marketing.tourismsaskatoon.com^ -||marketing.tourismwinnipeg.com^ -||marketing.towerfcu.org^ -||marketing.toxicology.abbott^ -||marketing.toyotaofeasley.com^ -||marketing.trackmarketing.net^ -||marketing.transcore.com^ -||marketing.transitair.com^ -||marketing.translations.com^ -||marketing.transperfect.com^ -||marketing.transtar1.com^ -||marketing.travelink.com^ -||marketing.travelks.com^ -||marketing.travelmarketreport.com^ -||marketing.travelportland.com^ -||marketing.travelsavers.com^ -||marketing.traveltags.com^ -||marketing.traversecity.com^ -||marketing.traxtech.com^ -||marketing.trextape.com^ -||marketing.triconamericanhomes.com^ -||marketing.triconresidential.com^ -||marketing.trimtabconsultants.com^ -||marketing.trubridge.com^ -||marketing.trucode.com^ -||marketing.trueinfluence.com^ -||marketing.trustarmarketing.com^ -||marketing.trusteedplans.com^ -||marketing.trustid.com^ -||marketing.tsadvertising.com^ -||marketing.ttcu.com^ -||marketing.tucasi.com^ -||marketing.tvcn.nl^ -||marketing.twofivesix.co^ -||marketing.txsource.net^ -||marketing.u-pic.com^ -||marketing.ugamsolutions.com^ -||marketing.ultimo.com^ -||marketing.uni-med.com^ -||marketing.unimar.com^ -||marketing.unionbenefits.co.uk^ -||marketing.unionhousesf.com^ -||marketing.unionwear.com^ -||marketing.unitedautocredit.net^ -||marketing.uoficreditunion.org^ -||marketing.uptopcorp.com^ -||marketing.urbanprojects.ec^ -||marketing.usailighting.com^ -||marketing.usaprogrip.com^ -||marketing.useadam.co.uk^ -||marketing.usequityadvantage.com^ -||marketing.usglobaltax.com^ -||marketing.usmedequip.com^ -||marketing.uxreactor.com^ -||marketing.vabi.nl^ -||marketing.vacationcondos.com^ -||marketing.vacationvillastwo.com^ -||marketing.valleyforge.org^ -||marketing.valv.com^ -||marketing.vantagepoint-financial.com^ -||marketing.vathorst.nl^ -||marketing.vault49.com^ -||marketing.veladx.com^ -||marketing.verantis.com^ -||marketing.verasci.com^ -||marketing.versatile-ag.ca^ -||marketing.versium.com^ -||marketing.vertexcs.com^ -||marketing.vfop.com^ -||marketing.vgm.com^ -||marketing.vgmeducation.com^ -||marketing.vgmhomelink.com^ -||marketing.vigon.com^ -||marketing.villageatwoodsedge.com^ -||marketing.vippetcare.com^ -||marketing.virginia.org^ -||marketing.virtual-images.com^ -||marketing.visailing.com^ -||marketing.visitabq.org^ -||marketing.visitannapolis.org^ -||marketing.visitannarbor.org^ -||marketing.visitaugusta.com^ -||marketing.visitbatonrouge.com^ -||marketing.visitbellevuewa.com^ -||marketing.visitbentonville.com^ -||marketing.visitbgky.com^ -||marketing.visitcasper.com^ -||marketing.visitcharlottesville.org^ -||marketing.visitchattanooga.com^ -||marketing.visitchesapeake.com^ -||marketing.visitchicagosouthland.com^ -||marketing.visitcookcounty.com^ -||marketing.visitcorpuschristi.com^ -||marketing.visitdenver.com^ -||marketing.visiteauclaire.com^ -||marketing.visitestespark.com^ -||marketing.visitfortwayne.com^ -||marketing.visitgreaterpalmsprings.com^ -||marketing.visitgreenvillesc.com^ -||marketing.visithamiltoncounty.com^ -||marketing.visitindy.com^ -||marketing.visitjamaica.com^ -||marketing.visitkingston.ca^ -||marketing.visitlex.com^ -||marketing.visitloscabos.travel^ -||marketing.visitlubbock.org^ -||marketing.visitmanisteecounty.com^ -||marketing.visitmdr.com^ -||marketing.visitmilwaukee.org^ -||marketing.visitmontrose.com^ -||marketing.visitmusiccity.com^ -||marketing.visitnapavalley.com^ -||marketing.visitnepa.org^ -||marketing.visitnewportbeach.com^ -||marketing.visitnorthplatte.com^ -||marketing.visitoakland.com^ -||marketing.visitomaha.com^ -||marketing.visitorlando.com^ -||marketing.visitpanamacitybeach.com^ -||marketing.visitpasadena.com^ -||marketing.visitpensacola.com^ -||marketing.visitphoenix.com^ -||marketing.visitraleigh.com^ -||marketing.visitrapidcity.com^ -||marketing.visitroanokeva.com^ -||marketing.visitsacramento.com^ -||marketing.visitsalisburync.com^ -||marketing.visitsaltlake.com^ -||marketing.visitsanantonio.com^ -||marketing.visitsanmarcos.com^ -||marketing.visitsarasota.org^ -||marketing.visitsmcsv.com^ -||marketing.visitsouthwalton.com^ -||marketing.visitspc.com^ -||marketing.visitspokane.com^ -||marketing.visittemeculavalley.com^ -||marketing.visittucson.org^ -||marketing.visitvancouverusa.com^ -||marketing.visitvirginiabeach.com^ -||marketing.visitwausau.com^ -||marketing.visitwichita.com^ -||marketing.visitwilliamsburg.com^ -||marketing.visitwilmingtonde.com^ -||marketing.visualskus.com^ -||marketing.voicefirstsolutions.com^ -||marketing.voiply.us^ -||marketing.voltexelectrical.co.nz^ -||marketing.voltexelectrical.com.au^ -||marketing.voxer.com^ -||marketing.vrijekavelsvathorst.nl^ -||marketing.vroozi.com^ -||marketing.wachsws.com^ -||marketing.wainscotsolutions.com^ -||marketing.waitrainer.com^ -||marketing.wallindustries.com^ -||marketing.wallstreetsystems.com^ -||marketing.washcochamber.com^ -||marketing.washington.org^ -||marketing.watchsystems.com^ -||marketing.watercannon.com^ -||marketing.wateriqtech.com^ -||marketing.watsonmortgagecorp.com^ -||marketing.wbbrokerage.com^ -||marketing.wbf.com^ -||marketing.wbm.com^ -||marketing.wealthcarecapital.com^ -||marketing.wealthhorizon.com^ -||marketing.weathersolve.com^ -||marketing.webdcmarketing.com^ -||marketing.webgruppen.no^ -||marketing.welending.com^ -||marketing.wellingtonwealthstrategies.com^ -||marketing.wesco.com.br^ -||marketing.whysymphony.com^ -||marketing.wildhorsepass.com^ -||marketing.willamettewines.com^ -||marketing.wilmingtonandbeaches.com^ -||marketing.windes.com^ -||marketing.wolfgordon.com^ -||marketing.worldlinkintegration.com^ -||marketing.worldnetpr.com^ -||marketing.wowrack.com^ -||marketing.wrightimc.com^ -||marketing.wsandco.com^ -||marketing.wtcutrecht.nl^ -||marketing.wvtourism.com^ -||marketing.xait.com^ -||marketing.xcenda.com^ -||marketing.xcess.nl^ -||marketing.xicato.com^ -||marketing.xportsoft.com^ -||marketing.xtralight.com^ -||marketing.yapmo.com^ -||marketing.yeovilaudi.co.uk^ -||marketing.yesmarketing.com^ -||marketing.ynsecureserver.net^ -||marketing.yongletape.averydennison.com^ -||marketing.youththink.net^ -||marketing.ytc.com^ -||marketing.zencos.com^ -||marketing.zenjuries.com^ -||marketing.zinniawealth.com^ -||marketing1.aiworldexpo.com^ -||marketing1.directimpactinc.com^ -||marketing1.leica-microsystems.com^ -||marketing1.neverfailgroup.com^ -||marketing2.absolutelybryce.com^ -||marketing2.channel-impact.com^ -||marketing2.globalpointofcare.abbott^ -||marketing2.leica-microsystems.com^ -||marketing2.newhomesource.com^ -||marketing2.technologyadvice.com^ -||marketing3.polarispacific.com^ -||marketing4.directimpactinc.com^ -||marketing6.directimpactinc.com^ -||marketingautomation.impexium.net^ -||marketingde.mti.com^ -||marketingemea.guidepoint.com^ -||marketinginfo.clutch.com^ -||marketingms.actonservice.com^ -||marketingus.hso.com^ -||markkinointi.kespro.com^ -||marsh.actonservice.com^ -||marshinsurance.actonservice.com^ -||mas.hronboard.me^ -||mas.marsh.com^ -||masternaut.actonservice.com^ -||matrix42.actonservice.com^ -||mbaco.actonservice.com^ -||mbainfo.ust.hk^ -||mbna.bruker.com^ -||mbns.bruker.com^ -||mbopt.bruker.com^ -||mbs.modernbuilderssupply.com^ -||mclaren-porthuron.hrm.healthgrades.com^ -||mcw.actonservice.com^ -||mdfcrm.actonservice.com^ -||meanwellaustralia.actonservice.com^ -||meat.midanmarketing.com^ -||medhyg.actonservice.com^ -||media.claritylabsolutions.com^ -||media.elementsbehavioralhealth.com^ -||media.fsctrust.com^ -||media.gotham.com^ -||media.gstoneinc.com^ -||media.ignitium.com^ -||media.leahy-ifp.com^ -||media.pirtek.co.uk^ -||media.pirtek.de^ -||media.pirtek.nl^ -||media.polariswealth.net^ -||media.theartisansapproach.com^ -||mediacy.actonservice.com^ -||mediasolutions.netinsight.net^ -||mediasource.actonservice.com^ -||medisante.actonservice.com^ -||medtrainer.actonservice.com^ -||medxm1.actonservice.com^ -||member.usenix.org^ -||members.simplicity.coop^ -||membership.mortonarb.org^ -||memhosp.hrm.healthgrades.com^ -||merchant-mail.neosurf.com^ -||mesalabs.actonservice.com^ -||message.alldata.com^ -||metallic.actonservice.com^ -||metapack.actonservice.com^ -||meteachugood.holdmybeerconsulting.com^ -||metric.khkgears.us^ -||metrics.thesellingagency.com^ -||meylercapital.actonservice.com^ -||mfrmls.actonservice.com^ -||mg.mistrasgroup.com^ -||mhinvest.actonservice.com^ -||mhmp.bruker.com^ -||mhs.hrm.healthgrades.com^ -||mhz-design.actonservice.com^ -||microfocus.qm-g.com^ -||microlise.actonservice.com^ -||micronetonline.actonservice.com^ -||microware.actonservice.com^ -||mie-solutions.actonservice.com^ -||mill-all.actonservice.com^ -||mimakiusa.actonservice.com^ -||missionrs.actonservice.com^ -||mkt-i.actonservice.com^ -||mkt.aderant.com^ -||mkt.animalsafety.neogen.com^ -||mkt.bluestate.co^ -||mkt.copernicusmd.com^ -||mkt.detechtion.com^ -||mkt.emea.neogen.com^ -||mkt.environmentsatwork.com^ -||mkt.foodsafety.neogen.com^ -||mkt.globalmentoring.com^ -||mkt.lifesciences.neogen.com^ -||mkt.marcom.neogen.com^ -||mktg.act-on.com^ -||mktg.aicipc.com^ -||mktg.alphawire.com^ -||mktg.bekapublishing.com^ -||mktg.destinationmarketing.org^ -||mktg.digineer.com^ -||mktg.jeffersonhealth.org^ -||mktg.laresdental.com^ -||mktg.marceldigital.com^ -||mktg.matssoft.com^ -||mktg.mecinc.com^ -||mktg.northwoodsoft.com^ -||mktg.rocklandmfg.com^ -||mktg.rtx.travel^ -||mktg.schlage.com^ -||mktg.senneca.com^ -||mktg.ummhealth.org^ -||mktg.xeniumhr.com^ -||mm.morrellinc.com^ -||mmarkhigh.actonservice.com^ -||mmc-ltd.actonservice.com^ -||moldex.actonservice.com^ -||more.socialflow.com^ -||moreinfo.onnowdigital.com^ -||moreinfo.powerpro360.com^ -||moreinfo.sdmyers.com^ -||morganfranklin.actonservice.com^ -||motion.kollmorgen.com^ -||motista.actonservice.com^ -||motorsports.locktonaffinity.net^ -||moxtra.actonservice.com^ -||mpc-co.actonservice.com^ -||mri.iradimed.com^ -||msbainfo.fbe.hku.hk^ -||mshs.actonservice.com^ -||msi.msigts.com^ -||msigbs.actonservice.com^ -||msitec.actonservice.com^ -||msufcu.actonservice.com^ -||mtracking.mhequipment.com^ -||multimedia.netplusentremont.ch^ -||mw-ind.actonservice.com^ -||mwa.meanwellaustralia.com.au^ -||mx.promo.skf.com^ -||my.bruker.com^ -||my.carolina.com^ -||my.exotravel.com^ -||my.igrafx.com^ -||my.promo.skf.com^ -||mya.actonservice.com^ -||mycomm2.hackensackmeridian.org^ -||mydario.actonservice.com^ -||myexhibiteam.actonservice.com^ -||myretailmatch.actonservice.com^ -||naidileobram.actonservice.com^ -||nakisa.actonservice.com^ -||nanthealth.actonservice.com^ -||narc-dc.actonservice.com^ -||nccer.actonservice.com^ -||neathousepartners.actonservice.com^ -||nedasco.actonservice.com^ -||neosllc.actonservice.com^ -||netinsight.actonservice.com^ -||network.cogentco.com^ -||network.conterra.com^ -||network.lightpathfiber.com^ -||network.wintechnology.com^ -||newjersey-content.cresa.com^ -||news-info.gcgfinancial.com^ -||news.azcapitoltimes.com^ -||news.bestcompaniesgroup.com^ -||news.bpsecinc.com^ -||news.bridgetowermedia.com^ -||news.brokersalliance.com^ -||news.caamp.org^ -||news.chiefexecutive.net^ -||news.cmatcherlink.com^ -||news.colormagazine.com^ -||news.cpbj.com^ -||news.dailyreporter.com^ -||news.djcoregon.com^ -||news.finance-commerce.com^ -||news.journalrecord.com^ -||news.libn.com^ -||news.lvb.com^ -||news.masslawyersweekly.com^ -||news.mclaren.org^ -||news.mecktimes.com^ -||news.milawyersweekly.com^ -||news.molawyersmedia.com^ -||news.nada.org^ -||news.neworleanscitybusiness.com^ -||news.njbiz.com^ -||news.nydailyrecord.com^ -||news.petage.com^ -||news.rbj.net^ -||news.scbiznews.com^ -||news.scmanufacturingconference.com^ -||news.sp2.org^ -||news.strategiccfo360.com^ -||news.strategiccio360.com^ -||news.thedailyrecord.com^ -||news.thedolancompany.com^ -||news.valawyersweekly.com^ -||news.verimatrix.com^ -||newsletter.bcautoencheres.fr^ -||newsletter.davey.com^ -||newsletter.visitnc.com^ -||ngs.actonservice.com^ -||nordicmarketing.sedgwick.com^ -||nordics.sharpmarketing.eu^ -||northplains.actonservice.com^ -||northsidemediagroup.actonservice.com^ -||northwire.actonservice.com^ -||nova-healthcare.actonservice.com^ -||novarecoverycenter.actonservice.com^ -||now.infinitecampus.com^ -||now.tana.fi^ -||nparallel.actonservice.com^ -||nra.locktonaffinity.net^ -||nsfocus.actonservice.com^ -||nu.esri.nl^ -||nurture.mylivingvoice.com^ -||nuvi.actonservice.com^ -||oasisadvantage.actonservice.com^ -||oasismarketing.oasisadvantage.com^ -||objectpartners.actonservice.com^ -||oceanair.actonservice.com^ -||oceanautomotive.actonservice.com^ -||ochsner.hrm.healthgrades.com^ -||offers.hddistributors.com^ -||offers.jazelauto.com^ -||offers.storagepipe.com^ -||omadi.actonservice.com^ -||omgcreative.actonservice.com^ -||on.leagueapps.com^ -||on.librestream.com^ -||oncoclinicas.actonservice.com^ -||oncourselearning.actonservice.com^ -||one-workspace.matrix42.com^ -||onesourcebackground.actonservice.com^ -||online.siteboosters.de^ -||onlineis.actonservice.com^ -||onlinesellerenforcement.vorys.com^ -||onlinevacationcenter.actonservice.com^ -||opoffice.actonservice.com^ -||opportunity.businessbroker.net^ -||opportunityfund.actonservice.com^ -||opsveda.actonservice.com^ -||optis-world.actonservice.com^ -||optout.oracle-zoominfo-notice.com^ -||orbis.actonservice.com^ -||oregonstate.actonservice.com^ -||orionmarketing.actonservice.com^ -||orlmarketing.nfp.com^ -||ottawa-content.cresa.com^ -||outreach.allmy-data.com^ -||outreach.connectednation.org^ -||outreach.crossref.org^ -||outreach.kansashealthsystem.com^ -||outreach.semaconnect.com^ -||outreach.successforall.org^ -||outreach.teex.info^ -||outreach.veritivcorp.com^ -||overlakemedicalcenter.hrm.healthgrades.com^ -||pacstainless.actonservice.com^ -||page.asraymond.com^ -||page.ephesus.cooperlighting.com^ -||page.evergage.com^ -||page.ggled.net^ -||page.hpcspecialtypharmacy.com^ -||page.irco.com^ -||page.northstateconsultingllc.com^ -||page.vital4.net^ -||page1solutions.actonservice.com^ -||pages.aureon.com^ -||pages.cobweb.com^ -||pages.crd.com^ -||pages.distributionstrategy.com^ -||pages.exterro.com^ -||pages.jobaline.com^ -||pages.rategain.com^ -||pages.srsmith.com^ -||pages.telemessage.com^ -||pages.uila.com^ -||pages.vuzion.cloud^ -||pages.zenefits.com^ -||paintersusainc.actonservice.com^ -||pairin.actonservice.com^ -||pal-v.actonservice.com^ -||paladion.actonservice.com^ -||palramamericas.actonservice.com^ -||parallel6.actonservice.com^ -||partner.hubinternational.com^ -||partnership.evolenthealth.com^ -||patientpay.actonservice.com^ -||pawsplus.actonservice.com^ -||paydashboard.actonservice.com^ -||paynewest.actonservice.com^ -||pbc.programbrokerage.com^ -||pcci.pccinnovation.org^ -||pccipieces.actonservice.com^ -||pe.promo.skf.com^ -||people.mbtionline.com^ -||peoplehr.actonservice.com^ -||performantcorp.actonservice.com^ -||permission.au.actonservice.com^ -||ph.promo.skf.com^ -||phdinc.actonservice.com^ -||philadelphia-content.cresa.com^ -||phionline.actonservice.com^ -||phoenix-content.cresa.com^ -||photography.hursey.com^ -||phsmobile.actonservice.com^ -||phyins.actonservice.com^ -||picarro.actonservice.com^ -||pimpoint.inriver.com^ -||pinnacleuniversity.hrm.healthgrades.com^ -||pipelinepub.actonservice.com^ -||pitcher.actonservice.com^ -||pivotpointsecurity.actonservice.com^ -||pl.promo.skf.com^ -||pl.sharpmarketing.eu^ -||pla.pearlinsurance.com^ -||plans.ceteraretirement.com^ -||ple.pearlinsurance.com^ -||pll.pearlinsurance.com^ -||plo.pearlinsurance.com^ -||polypak.actonservice.com^ -||portal.dcgone.com^ -||portal.insight.maruedr.com^ -||possibilities.theajinetwork.com^ -||postgraduate.smu.edu.sg^ -||postgraduate2.smu.edu.sg^ -||powerup.rsaworks.com^ -||ppadv.actonservice.com^ -||practicemanagement.securitiesamerica.com^ -||premiercio.actonservice.com^ -||primavera.actonservice.com^ -||privateclient.hubinternational.com^ -||processserver.abclegal.com^ -||product.cel-fi.com^ -||proffiliatesinc.actonservice.com^ -||progressivedev.actonservice.com^ -||promo.aprima.com^ -||promo.ewellix.com^ -||promo.reborncabinets.com^ -||promo.rmidirect.com^ -||promo.skf.com^ -||promos.sanmarcanada.com^ -||promos.trustedtours.com^ -||promotions.stationcasinos.com^ -||promotionspr.actonservice.com^ -||propay.actonservice.com^ -||properties.insiterealestate.com^ -||prospex.actonservice.com^ -||protapes.actonservice.com^ -||protosell.actonservice.com^ -||providentcrm.actonservice.com^ -||prowareness.actonservice.com^ -||prudential.distribution.team.prudential.co.uk^ -||ptw-i.actonservice.com^ -||publications.nomination.fr^ -||publicschoolworks.actonservice.com^ -||pulse.munsonhealthcare.org^ -||purpletalk.actonservice.com^ -||pushspring.actonservice.com^ -||pyrexar.actonservice.com^ -||q88.actonservice.com^ -||qc.qualicocommunitieswinnipeg.com^ -||qm-g.actonservice.com^ -||questintegrity.actonservice.com^ -||questions.theanswerco.com^ -||questrominfo.bu.edu^ -||quidel.actonservice.com^ -||quinceimaging.actonservice.com^ -||quirklogic.actonservice.com^ -||qumulo.actonservice.com^ -||radiometer.actonservice.com^ -||rakuten.actonservice.com^ -||rarnational.raisingareader.org^ -||rbis-solutions.averydennison.com^ -||readingpartners.actonservice.com^ -||readytrainingonline.actonservice.com^ -||realcomm.actonservice.com^ -||realestate.collinscu.org^ -||realize.goldenspiralmarketing.com^ -||realogic.actonservice.com^ -||realogicinc.actonservice.com^ -||recoverypoint.actonservice.com^ -||redbooks.actonservice.com^ -||redclassic.actonservice.com^ -||redlion.actonservice.com^ -||redthreadmarketing.actonservice.com^ -||redvector.actonservice.com^ -||rehmann.actonservice.com^ -||reico.actonservice.com^ -||reliable.elgas.com.au^ -||remarketing.oncourselearning.com^ -||remine.actonservice.com^ -||reppify.actonservice.com^ -||research.insidesales.com^ -||resolution.taxdefensenetwork.com^ -||resources.acarasolutions.com^ -||resources.acarasolutions.in^ -||resources.activatems.com^ -||resources.aldec.com^ -||resources.biz-tech-insights.com^ -||resources.broadleafresults.com^ -||resources.davey.com^ -||resources.digitcom.ca^ -||resources.faronics.com^ -||resources.harneys.com^ -||resources.linengineering.com^ -||resources.lumestrategies.com^ -||resources.recordpoint.com^ -||resources.sightlogix.com^ -||resources.superiorgroup.in^ -||resources.talentrise.com^ -||results.sierrapiedmont.com^ -||retirementliving.actsretirement.org^ -||retirementservices.firstallied.com^ -||reverb.digitalviscosity.com^ -||revgroup.actonservice.com^ -||rhahvac.actonservice.com^ -||rhinowebgroup.actonservice.com^ -||rightanswers.actonservice.com^ -||riscitsolutions.actonservice.com^ -||rmhoffman.actonservice.com^ -||ro.promo.skf.com^ -||roiscs.actonservice.com^ -||rollbar.actonservice.com^ -||romotur.actonservice.com^ -||root9b.actonservice.com^ -||roxtec.actonservice.com^ -||rs.promo.skf.com^ -||rsfh.hrm.healthgrades.com^ -||rsvp.markettraders.com^ -||rtvision.actonservice.com^ -||rumsey.actonservice.com^ -||rush.hrm.healthgrades.com^ -||ruw.roanokeunderwriting.com^ -||rxaap.actonservice.com^ -||rystadenergy.actonservice.com^ -||rzmarketing.realization.com^ -||s.usenix.org^ -||saas.stratitude.com^ -||sabic.actonservice.com^ -||saegissolutions.actonservice.com^ -||sales.avis.com^ -||sales.northeastind.com^ -||sales.texturacorp.com^ -||sales.virtualpbx.com^ -||salesandmarketing.aitcfis.com^ -||samarketing.sedgwick.com^ -||sc.actonservice.com^ -||scalematrix.actonservice.com^ -||schinnerer.actonservice.com^ -||science.schoolspecialtynews.com^ -||scispg.smu.edu.sg^ -||scmarketing.colliers.com^ -||scorebuddy.actonservice.com^ -||se.netpartnering.com^ -||seahorseinfo.agilent.com^ -||sealingdev.actonservice.com^ -||seals.promo.skf.com^ -||seamarketny.actonservice.com^ -||seb.sharpmarketing.eu^ -||securityins.actonservice.com^ -||sedgwickpooling.sedgwick.com^ -||segra.actonservice.com^ -||senior-systems.actonservice.com^ -||seniorliving.artisseniorliving.com^ -||seniorliving.atriumatnavesink.org^ -||seniorliving.blakehurstlcs.com^ -||seniorliving.blakeliving.com^ -||seniorliving.brandonwildelcs.com^ -||seniorliving.broadviewseniorliving.org^ -||seniorliving.capitalmanor.com^ -||seniorliving.casadelascampanas.com^ -||seniorliving.claremontplace.com^ -||seniorliving.covia.org^ -||seniorliving.cypressplaceseniorliving.com^ -||seniorliving.cypressvillageretirement.com^ -||seniorliving.eastridgeatcutlerbay.com^ -||seniorliving.essexmeadows.com^ -||seniorliving.fellowshipsl.org^ -||seniorliving.foxhillvillage.com^ -||seniorliving.freedomplazafl.com^ -||seniorliving.freedompointefl.com^ -||seniorliving.freedomsquarefl.com^ -||seniorliving.friendshipvillageaz.com^ -||seniorliving.friendsview.org^ -||seniorliving.fvbrandywine.com^ -||seniorliving.fvhollandseniorliving.com^ -||seniorliving.galleriawoodsseniorliving.com^ -||seniorliving.greystonecommunities.com^ -||seniorliving.heronskey.org^ -||seniorliving.jkv.org^ -||seniorliving.johnknox.com^ -||seniorliving.lakeportseniorliving.com^ -||seniorliving.lakeseminoleseniorliving.com^ -||seniorliving.laurelcirclelcs.com^ -||seniorliving.liveatwhitestone.org^ -||seniorliving.marshesofskidaway.com^ -||seniorliving.merionevanston.com^ -||seniorliving.monroevillageonline.org^ -||seniorliving.mooringsatlewes.org^ -||seniorliving.morningsideoffullerton.com^ -||seniorliving.mrcaff.org^ -||seniorliving.parkplaceelmhurst.com^ -||seniorliving.peacevillage.org^ -||seniorliving.plantationvillagerc.com^ -||seniorliving.plymouthplace.org^ -||seniorliving.presvillagenorth.org^ -||seniorliving.querenciabartoncreek.com^ -||seniorliving.regencyoaksseniorliving.com^ -||seniorliving.sagewoodlcs.com^ -||seniorliving.sandhillcove.com^ -||seniorliving.santamartaretirement.com^ -||seniorliving.seasonsretirement.com^ -||seniorliving.sinairesidences.com^ -||seniorliving.smithcrossing.org^ -||seniorliving.southportseniorliving.com^ -||seniorliving.springpointsl.org^ -||seniorliving.stoneridgelcs.com^ -||seniorliving.summitvista.com^ -||seniorliving.thechesapeake.org^ -||seniorliving.theglebe.org^ -||seniorliving.theglenatscrippsranch.com^ -||seniorliving.theheritagelcs.com^ -||seniorliving.theridgecottonwood.com^ -||seniorliving.theridgepinehurst.com^ -||seniorliving.theridgeseniorliving.com^ -||seniorliving.theterracesatbonitasprings.com^ -||seniorliving.thewoodlandsatfurman.org^ -||seniorliving.timberridgelcs.com^ -||seniorliving.trilliumwoodslcs.com^ -||seniorliving.vantagehouse.org^ -||seniorliving.villageatgleannloch.com^ -||seniorliving.welcometomonarchlanding.com^ -||seniorliving.welcometosedgebrook.com^ -||seniorliving.westminsteraustintx.org^ -||seniorliving.whitneycenter.com^ -||seniorliving.winchestergardens.com^ -||seniorliving.wyndemerelcs.com^ -||seniors.fairportbaptisthomes.org^ -||servcliente.marathon-sports-ec.com^ -||services.releasepoint.com^ -||servicing.unitedautocredit.net^ -||setaram.actonservice.com^ -||setonhill.actonservice.com^ -||sffirecu.actonservice.com^ -||sfsinfo.sabic.com^ -||sg.lucanet.com^ -||sg.promo.skf.com^ -||shelbypublishing.actonservice.com^ -||shipsmarter.idrivelogistics.com^ -||shop.iwantclips.com^ -||simple.siegelgale.com^ -||simscale.actonservice.com^ -||singleplatform.actonservice.com^ -||site.newzstand.com^ -||sitel.actonservice.com^ -||sjms.actonservice.com^ -||sk.promo.skf.com^ -||skf.actonservice.com^ -||skillshouse.actonservice.com^ -||slashnext.actonservice.com^ -||smartworksforme.actonservice.com^ -||smf.southernmetalfab.com^ -||smu.actonservice.com^ -||smuengage.smu.edu.sg^ -||snd.freshstartnews.com^ -||soccajoeys.actonservice.com^ -||solar.sharpmarketing.eu^ -||solidscape.actonservice.com^ -||solmax.actonservice.com^ -||solutions.a-1freeman.com^ -||solutions.amigraphics.com^ -||solutions.bwtek.com^ -||solutions.cmsa.org^ -||solutions.coreandmain.com^ -||solutions.getfluid.com^ -||solutions.intactstudio.ca^ -||solutions.kep-technologies.com^ -||solutions.lumosnetworks.com^ -||solutions.multitone.com^ -||solutions.oshaeducationcenter.com^ -||solutions.sertifi.com^ -||solutions.servometer.com^ -||solutions.snapfi.com^ -||solutions.toolepeet.com^ -||solutions.wellspring.com^ -||soneticscorp.actonservice.com^ -||sosintl.actonservice.com^ -||sotelsystems.actonservice.com^ -||southwest.pgaofamericagolf.com^ -||spa.admissions.ucdenver.edu^ -||spamtitan.actonservice.com^ -||spark.thelyst.com^ -||spec-sensors.actonservice.com^ -||spinnakermgmt.actonservice.com^ -||srmy.srglobal.com^ -||srsa.srglobal.com^ -||srsg.srglobal.com^ -||sruk.srglobal.com^ -||ssfllp.actonservice.com^ -||sswhitedental.actonservice.com^ -||stahl.actonservice.com^ -||stamfordhealth.hrm.healthgrades.com^ -||stanburns.actonservice.com^ -||start.mediware.com^ -||start.mybillingtree.com^ -||start.ptl.org^ -||start.sharpclinical.com^ -||start.spark-thinking.com^ -||stcharleshealthcare.hrm.healthgrades.com^ -||steel.newmill.com^ -||stentel.actonservice.com^ -||stormwind.actonservice.com^ -||strategycompanion.actonservice.com^ -||studentadvantage.actonservice.com^ -||subscriber.franchiseinsights.com^ -||subscriber.smallbusinessstartup.com^ -||success.act-on.com^ -||success.azzure-it.com^ -||success.benico.com^ -||success.ebmcatalyst.com^ -||success.ebmsoftware.com^ -||success.etgroup.ca^ -||success.getfluid.com^ -||success.intelligentdemand.com^ -||success.mapcom.com^ -||success.rhb.com^ -||success.vertigis.com^ -||success.vertigisstudio.com^ -||sugabyte.actonservice.com^ -||superiorgroup.actonservice.com^ -||support.flex.com^ -||support2.flex.com^ -||support3.flex.com^ -||svmarketing.destinationtoronto.com^ -||swedishcovenant.hrm.healthgrades.com^ -||swim2000.actonservice.com^ -||symbio.actonservice.com^ -||synapse-da.actonservice.com^ -||synbiobeta.actonservice.com^ -||systancia-scp.actonservice.com^ -||system.nefiber.com^ -||t.ao.argyleforum.com^ -||t.ao.consumerfinancereport.com^ -||t.ao.walletjoy.com^ -||t.oticon.com^ -||tablesafe.actonservice.com^ -||target.actonservice.com^ -||targetrecruitllc.actonservice.com^ -||targetstore.actonservice.com^ -||tas.bdoaustralia.bdo.com.au^ -||taylorshellfish.actonservice.com^ -||teach.graduateprogram.org^ -||team.moxtra.com^ -||teamhodges.hodgesualumniandfriends.com^ -||techadv.actonservice.com^ -||technical.kyzen.com^ -||technologyadvice.actonservice.com^ -||techservices.trapptechnology.com^ -||telamoncom.actonservice.com^ -||tele2.actonservice.com^ -||telsmith.actonservice.com^ -||telstraphonewords.actonservice.com^ -||tengointernet.actonservice.com^ -||teracom.actonservice.com^ -||terradatum.actonservice.com^ -||test.actonservice.com^ -||testforce.actonservice.com^ -||teyourmarketing.trungaleegan.com^ -||thebasiccompanies.actonservice.com^ -||thebdx.actonservice.com^ -||thecea.actonservice.com^ -||thequickbooksteam.intuit.ca^ -||thesearchagency.actonservice.com^ -||thesuccessstars.actonservice.com^ -||think.phdinc.com^ -||thomsonreuters.actonservice.com^ -||tickets.smu.edu^ -||ticomix.actonservice.com^ -||timing.whenandhowagency.com^ -||tls.thelibrarystore.com^ -||tmlt.actonservice.com^ -||toonboom.actonservice.com^ -||toonboomanimation.actonservice.com^ -||toronto-content.cresa.com^ -||touch.multitaction.com^ -||touch.thenavisway.com^ -||touchtown.actonservice.com^ -||tourism.visitorlando.com^ -||towerfcu.actonservice.com^ -||townsquareinteractive.actonservice.com^ -||tpe.theparticipanteffect.com^ -||tqhosting.actonservice.com^ -||tr.promo.skf.com^ -||track.healthcare-distribution.com^ -||tracking.experiencescottsdale.com^ -||tradeshows.aem.org^ -||training.indigobusiness.co.uk^ -||transportation.external.conduent.com^ -||transportation.external.xerox.com^ -||trappcloudservices.trapptechnology.com^ -||trapptech.actonservice.com^ -||travel.caradonna.com^ -||travel.cruisesforless.com^ -||travel.ec-ovc.com^ -||travel.onlinevacationcenter.com^ -||travelmarketreport.actonservice.com^ -||treeoflifecenterus.actonservice.com^ -||triadtechnologies.actonservice.com^ -||triconah.actonservice.com^ -||trinityconsultants.actonservice.com^ -||triton.actonservice.com^ -||triumph.actonservice.com^ -||truefaced.actonservice.com^ -||truemfg.actonservice.com^ -||trust.mitutoyo.com^ -||trust.titanhq.com^ -||trustid.actonservice.com^ -||ttcu-union.actonservice.com^ -||ttmc.actonservice.com^ -||tvppa.actonservice.com^ -||tw.promo.skf.com^ -||uaemarketing.sedgwick.com^ -||ugmarketing.smu.edu.sg^ -||uhealthsystem.hrm.healthgrades.com^ -||uhhospitals.hrm.healthgrades.com^ -||uk-marketing.roxtec.com^ -||uk.promo.skf.com^ -||uk.sharpmarketing.eu^ -||ukmarketing.sedgwick.com^ -||umassmemorial.hrm.healthgrades.com^ -||unchealthcare.hrm.healthgrades.com^ -||unifilabs.actonservice.com^ -||unitedautocredit.actonservice.com^ -||unitusccu.actonservice.com^ -||updates.aem.org^ -||updates.conexpoconagg.com^ -||us-marketing.roxtec.com^ -||us.lucanet.com^ -||us.onkyo.actonservice.com^ -||us.promo.skf.com^ -||usaprogrip.actonservice.com^ -||usb-vna.coppermountaintech.com^ -||ussco-dev.actonservice.com^ -||utexas.actonservice.com^ -||value.kfcu.org^ -||vehicleaftermarket.euw.promo.skf.com^ -||velocitypartners.actonservice.com^ -||veoci.actonservice.com^ -||vertexcs.actonservice.com^ -||vetsource.actonservice.com^ -||vhans.siege-corp.com^ -||via.ssl.holdmybeerconsulting.com^ -||video.funnelbox.com^ -||vietnam.promo.skf.com^ -||vip.gophersport.com^ -||visit.monroecollege.edu^ -||visitorlando.actonsoftware.com^ -||vitalimages.actonservice.com^ -||vitalmedia.actonservice.com^ -||viu.actonservice.com^ -||viu.viubyhub.com^ -||vividcortex.actonservice.com^ -||voiply.actonservice.com^ -||vonazon.actonservice.com^ -||vsmeue.promo.skf.com^ -||vsmeuw.promo.skf.com^ -||vt.mak.com^ -||wa.bdoaustralia.bdo.com.au^ -||warfieldtech.actonservice.com^ -||warrenfcu.actonservice.com^ -||washlaundry.actonservice.com^ -||wealthcarecapital.actonservice.com^ -||weare.ballymoregroup.com^ -||web.consolid8.com.au^ -||web.eisenhowerhealthnews.org^ -||web.iru.org^ -||web.vonazon.com^ -||web.yourerc.com^ -||weidenhammer.actonservice.com^ -||welcome.patientmatters.com^ -||welcome.qualicoliving.com^ -||welcome.visitthelandmark.com^ -||wernerelectric.actonservice.com^ -||westevents.presidio.com^ -||why.hdvest.com^ -||wissen.sage.de^ -||withyou.shorr.com^ -||woodruffsweitzer.actonservice.com^ -||woodtone.actonservice.com^ -||workspacesolutions.gos1.com^ -||worldnetpr.actonservice.com^ -||wsandco.actonservice.com^ -||ww2.ads-on-line.com^ -||ww2.businessgrouphealth.org^ -||ww2.vinhwellness.com^ -||www.bcaeurope.eu^ -||www.consulting.ramboll.com^ -||www.healthcare-distribution.com^ -||www.marketing.aftermath.com^ -||www.marketing.altn.com^ -||www.marketing.linguamatics.com^ -||www.paydashboardinfo.com^ -||www.wescam.info^ -||www1.cynergysolutions.net^ -||www1.mcsrentalsoftware.com^ -||www1.symmons.com^ -||www2.2ndgear.com^ -||www2.acsvalves.com^ -||www2.arvig.com^ -||www2.bimobject.com^ -||www2.bobcad.com^ -||www2.citizensclimatelobby.org^ -||www2.cremarc.com^ -||www2.dws-global.com^ -||www2.esri.se^ -||www2.extensis.com^ -||www2.quickbooks.co.uk^ -||www2.senetas.com^ -||www2.simplilearn.com^ -||www2.timecommunications.biz^ -||www2.tyrens.se^ -||www2.unit4.nl^ -||www2.yellowspring.co.uk^ -||www2.zacco.com^ -||www3.bimobject.com^ -||www3.motumb2b.com^ -||www3.strsoftware.com^ -||www4.bimobject.com^ -||www4.qualigence.com^ -||www5.bimobject.com^ -||www8.bimobject.com^ -||xait.actonservice.com^ -||xseedwealth.actonservice.com^ -||yourbrandlive.actonservice.com^ -||yourcare.pennstatehealth.org^ -||yourerc.actonservice.com^ -||yourfuture.walsh.edu^ -||yourhealth.bassett.org^ -||yourhealth.bassetthealthnews.org^ -||yourhealth.cooperhealth.org^ -||yourhealth.sahealth.com^ -||yourhealth.wellness.providence.org^ -||youronestopshop.themagnetgroup.com^ -||yoursolution.electrified.averydennison.com^ -||yoursolution.tapes.averydennison.com^ -||ypowpo.actonservice.com^ -||zenedge.actonservice.com^ -||zoominfo.actonservice.com^ -||zuidema.actonservice.com^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_otto.txt *** -||prod.nitrosniffer.ottogroup.io^ -||sniffer.nitro-production.otto.boreus.de^ -||sniffer.nitro-test-extern.otto.boreus.de^ -||te.ackermann.ch^ -||te.ambria.de^ -||te.baur.de^ -||te.creation-l.de^ -||te.frankonia.at^ -||te.frankonia.com^ -||te.frankonia.de^ -||te.frankoniamoda.ch^ -||te.heine-shop.nl^ -||te.heine.at^ -||te.heine.ch^ -||te.heine.de^ -||te.helline.fr^ -||te.imwalking.de^ -||te.jelmoli-shop.ch^ -||te.limango.de^ -||te.mirapodo.de^ -||te.mytoys.de^ -||te.nitro-production.otto.boreus.de^ -||te.nitro-test-extern.otto.boreus.de^ -||te.otto.de^ -||te.ottoversand.at^ -||te.quelle.de^ -||te.sheego.de^ -||te.sieh-an.at^ -||te.sieh-an.ch^ -||te.sieh-an.de^ -||te.universal.at^ -||te.waeschepur.de^ -||te.witt-international.cz^ -||te.witt-international.nl^ -||te.witt-international.sk^ -||te.witt-weiden.at^ -||te.witt-weiden.ch^ -||te.witt-weiden.de^ -||te.yomonda.de^ -||te.your-look-for-less.nl^ -||te.your-look-for-less.se^ -||test-extern.nitrosniffer.ottogroup.io^ -||tp.ackermann.ch^ -||tp.ambria.de^ -||tp.baur.de^ -||tp.creation-l.de^ -||tp.frankonia.at^ -||tp.frankonia.com^ -||tp.frankonia.de^ -||tp.frankoniamoda.ch^ -||tp.heine-shop.nl^ -||tp.heine.at^ -||tp.heine.ch^ -||tp.heine.de^ -||tp.imwalking.de^ -||tp.jelmoli-shop.ch^ -||tp.limango.de^ -||tp.mirapodo.de^ -||tp.mytoys.de^ -||tp.otto.de^ -||tp.ottoversand.at^ -||tp.quelle.de^ -||tp.sheego.de^ -||tp.sieh-an.at^ -||tp.sieh-an.ch^ -||tp.sieh-an.de^ -||tp.universal.at^ -||tp.waeschepur.de^ -||tp.witt-international.cz^ -||tp.witt-international.nl^ -||tp.witt-international.sk^ -||tp.witt-weiden.at^ -||tp.witt-weiden.ch^ -||tp.witt-weiden.de^ -||tp.yomonda.de^ -||tp.your-look-for-less.nl^ -||tp.your-look-for-less.se^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_commanders-act.txt *** -||acquisition.klm.com^ -||configure.adlermode.com^ -||data.auchandirect.fr^ -||data.decathlon.co.uk^ -||data.decathlon.de^ -||data.decathlon.es^ -||data.decathlon.fr^ -||data.decathlon.it^ -||data.decathlon.pl^ -||data.ouigo.com^ -||data.ricaud.com^ -||data.ubi.com^ -||data.wptag.net^ -||logger.yp.ca^ -||sales.disneylandparis.com^ -||tag.boulanger.fr^ -||tagcommander.laredoute.be^ -||tagcommander.laredoute.ch^ -||tc.europcar.com.au^ -||tc.europcar.com^ -||tc.europcar.de^ -||tcdata.fnac.com^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_ingenious-technologies.txt *** -||0.net.easyjet.com^ -||125.net.jumia.co.ke^ -||176.net.jumia.ma^ -||63-217-112-145.static.pccwglobal.net.iberostar.com^ -||68-175.net.jumia.co.ke^ -||69-74.net.jumia.sn^ -||71-177.net.jumia.ma^ -||admin.net.fidorbank.uk^ -||af.eficads.com^ -||affiliate.logitravel.com^ -||ai.net.anwalt.de^ -||ak-br-cdn.kwai.net.iberostar.com^ -||akv2-br-cdn.kwai.net.iberostar.com^ -||ali-pro-origin-pull.kwai.net.iberostar.com^ -||ali-pro-pull.kwai.net.iberostar.com^ -||amahami.net.anwalt.de^ -||anaconda.net.anwalt.de^ -||analytics.net.dz.jumia.com^ -||api.apiok.net.iberostar.com^ -||app.chat.global.xiaomi.net.iberostar.com^ -||appfloor.appcpi.net.iberostar.com^ -||apress.efscle.com^ -||arch.net.jumia.ug^ -||atl-b24-link.ip.twelve99.net.iberostar.com^ -||aws-br-cdn.kwai.net.iberostar.com^ -||aws-br-pic.kwai.net.iberostar.com^ -||bdtheque.net.jumia.com.gh^ -||bolt-gcdn.sc-cdn.net.iberostar.com^ -||bruny.net.anwalt.de^ -||bs-pro-origin-pull.kwai.net.iberostar.com^ -||cast.net.anwalt.de^ -||cdn.net.dz.jumia.com^ -||cdn.net.elogia.net^ -||cppm-kc2.net.jumia.ci^ -||csr11.net.asambeauty.com^ -||cust01-cucm-sub-07-cl6.int.net.jumia.ug^ -||dc01p-net-sslvpn0-ra.net.jumia.com.gh^ -||dclnxirp001cou.net.jumia.co.tz^ -||dev-cenam-mobilefirst.tmx-internacional.net.iberostar.com^ -||dit.whatsapp.net.iberostar.com^ -||dls-b23-link.ip.twelve99.net.iberostar.com^ -||dpm.demdex.net.iberostar.com^ -||dst05lp2.net.mydays.de^ -||edge-mobile-static.azureedge.net.iberostar.com^ -||ei-api.testlb-gwy.easyjet.com.edgekey.net.easyjet.com^ -||ellypsio.net.jumia.com.ng^ -||eniac.net.jumia.com.gh^ -||external-bos5-1.xx.fbcdn.net.iberostar.com^ -||external.fpbc1-1.fna.fbcdn.net.iberostar.com^ -||find.api.micloud.xiaomi.net.iberostar.com^ -||fse.net.anwalt.de^ -||ftwnwght.net.anwalt.de^ -||fulmar.net.anwalt.de^ -||g-br-cdn.kwai.net.iberostar.com^ -||g-fallback.whatsapp.net.iberostar.com^ -||g.whatsapp.net.iberostar.com^ -||gea-exchange-03.net.jumia.ug^ -||ginmon.efscle.com^ -||instagram.xx.fbcdn.net.iberostar.com^ -||ipv4-c006-mid001-telmex-isp.1.oca.nflxvideo.net.iberostar.com^ -||ipv4-c024-mia006-ix.1.oca.nflxvideo.net.iberostar.com^ -||ipv4-cs.intsig.net.iberostar.com^ -||jkanime.net.iberostar.com^ -||kernenergie.efscle.com^ -||lozano.net.anwalt.de^ -||maeketing.net.gafas.es^ -||mandant.net.anwalt.de^ -||marketing.net.asambeauty.com^ -||marketing.net.beate-uhse-movie.com^ -||marketing.net.brillen.com^ -||marketing.net.brillen.pl^ -||marketing.net.daraz.lk^ -||marketing.net.daraz.pk^ -||marketing.net.elogia.net^ -||marketing.net.fidor.de^ -||marketing.net.gafas.es^ -||marketing.net.home24.at^ -||marketing.net.home24.be^ -||marketing.net.home24.de^ -||marketing.net.home24.fr^ -||marketing.net.home24.nl^ -||marketing.net.iberostar.com^ -||marketing.net.idealo-partner.com^ -||marketing.net.jumia.co.ke^ -||marketing.net.jumia.com.gh^ -||marketing.net.jumia.com.ng^ -||marketing.net.jumia.ma^ -||marketing.net.occhiali24.it^ -||marketing.net.vsgamers.es^ -||marketing.net.x24factory.com^ -||marketing.tr.netsalesmedia.pl^ -||mc2o133jkwu19fv9.net.fidor.de^ -||mcfeely.net.mydays.de^ -||mdtnjvcsdbc02-eth1-0.net.mydays.de^ -||media-atl3-1.cdn.whatsapp.net.iberostar.com^ -||media-cdg4-1.cdn.whatsapp.net.iberostar.com^ -||media.fmid5-1.fna.whatsapp.net.iberostar.com^ -||mellamanjorge.net.anwalt.de^ -||mhbhwilson1.net.mydays.de^ -||mholland.net.anwalt.de^ -||mmg.whatsapp.net.iberostar.com^ -||mobile-events.eservice.emarsys.net.iberostar.com^ -||mohamed.net.anwalt.de^ -||naoforge.net.jumia.com.ng^ -||nbcxa65t001z.net.jumia.ug^ -||neoncsr21.net.anwalt.de^ -||net.24-ads.com^ -||net.brillen.de^ -||net.cadeautjes.nl^ -||net.contorion.de^ -||net.daraz.com.bd^ -||net.daraz.com^ -||net.deine-arena.de^ -||net.fashionsisters.de^ -||net.home24.ch^ -||net.home24.com^ -||net.home24.it^ -||net.iberia.com^ -||net.jumia.com.eg^ -||net.jumia.com^ -||net.mydays.ch^ -||net.shop.com.mm^ -||net.steiner-vision.de^ -||net.tradeers.de^ -||net.voopter.com.br^ -||net.zooroyal.de^ -||nsm.tr.netsalesmedia.pl^ -||p16-tiktokcdn-com.akamaized.net.iberostar.com^ -||partner.net.idealo-partner.com^ -||partner.portal.fidormarket.com^ -||partner.service.belboon.com^ -||phpmyadmin.toolmonger.net.jumia.co.tz^ -||pny.net.penny.de^ -||prime.net.jumia.co.tz^ -||pvn.rewe.de^ -||r.akipam.com^ -||r.jakuli.com^ -||r.lafamo.com^ -||r.niwepa.com^ -||r.powuta.com^ -||rbcore-wlc-3.net.jumia.co.ke^ -||renaultbankdirekt.efscle.com^ -||report.appmetrica.yandex.net.iberostar.com^ -||resolver.msg.global.xiaomi.net.iberostar.com^ -||router28.net.anwalt.de^ -||s010.net.jumia.sn^ -||samia.net.anwalt.de^ -||schwaebischhall.efscle.com^ -||scontent-atl3-2.xx.fbcdn.net.iberostar.com^ -||scontent-cdg4-1.xx.fbcdn.net.iberostar.com^ -||scontent-cdg4-2.xx.fbcdn.net.iberostar.com^ -||scontent.fpbc1-2.fna.fbcdn.net.iberostar.com^ -||scontent.xx.fbcdn.net.iberostar.com^ -||server2.www1.dr.goldenserviceawards.net.jumia.co.ke^ -||shhoix0fuonj0hz6.net.fidor.de^ -||sonar6-akl1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-ams2-1.xx.fbcdn.net.iberostar.com^ -||sonar6-arn2-1.xx.fbcdn.net.iberostar.com^ -||sonar6-atl3-1.xx.fbcdn.net.iberostar.com^ -||sonar6-bcn1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-bkk1-2.xx.fbcdn.net.iberostar.com^ -||sonar6-bog2-1.xx.fbcdn.net.iberostar.com^ -||sonar6-bom1-2.xx.fbcdn.net.iberostar.com^ -||sonar6-bru2-1.xx.fbcdn.net.iberostar.com^ -||sonar6-ccu1-2.xx.fbcdn.net.iberostar.com^ -||sonar6-cdg4-1.xx.fbcdn.net.iberostar.com^ -||sonar6-cdg4-2.xx.fbcdn.net.iberostar.com^ -||sonar6-cdg4-3.xx.fbcdn.net.iberostar.com^ -||sonar6-cgk1-3.xx.fbcdn.net.iberostar.com^ -||sonar6-cph2-1.xx.fbcdn.net.iberostar.com^ -||sonar6-cpt1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-del2-1.xx.fbcdn.net.iberostar.com^ -||sonar6-den4-1.xx.fbcdn.net.iberostar.com^ -||sonar6-dfw5-1.xx.fbcdn.net.iberostar.com^ -||sonar6-dfw5-2.xx.fbcdn.net.iberostar.com^ -||sonar6-doh1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-dub4-1.xx.fbcdn.net.iberostar.com^ -||sonar6-eze1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-fco2-1.xx.fbcdn.net.iberostar.com^ -||sonar6-fml20-1.xx.fbcdn.net.iberostar.com^ -||sonar6-for1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-fra3-1.xx.fbcdn.net.iberostar.com^ -||sonar6-fra3-2.xx.fbcdn.net.iberostar.com^ -||sonar6-fra5-2.xx.fbcdn.net.iberostar.com^ -||sonar6-gig4-1.xx.fbcdn.net.iberostar.com^ -||sonar6-gmp1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-gru2-1.xx.fbcdn.net.iberostar.com^ -||sonar6-gua1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-ham3-1.xx.fbcdn.net.iberostar.com^ -||sonar6-hel3-1.xx.fbcdn.net.iberostar.com^ -||sonar6-hkt1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-hou1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-hyd1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-ist1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-itm1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-jnb1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-kul2-1.xx.fbcdn.net.iberostar.com^ -||sonar6-lax3-1.xx.fbcdn.net.iberostar.com^ -||sonar6-lga3-1.xx.fbcdn.net.iberostar.com^ -||sonar6-lhr6-2.xx.fbcdn.net.iberostar.com^ -||sonar6-lim1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-lis1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-los2-1.xx.fbcdn.net.iberostar.com^ -||sonar6-maa2-1.xx.fbcdn.net.iberostar.com^ -||sonar6-mad1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-mba1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-mct1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-mrs2-1.xx.fbcdn.net.iberostar.com^ -||sonar6-mty2-1.xx.fbcdn.net.iberostar.com^ -||sonar6-mxp1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-nrt1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-ord5-2.xx.fbcdn.net.iberostar.com^ -||sonar6-pmo1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-qro1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-scl2-1.xx.fbcdn.net.iberostar.com^ -||sonar6-sea1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-sin6-1.xx.fbcdn.net.iberostar.com^ -||sonar6-sjc3-1.xx.fbcdn.net.iberostar.com^ -||sonar6-sof1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-ssn1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-tir3-2.xx.fbcdn.net.iberostar.com^ -||sonar6-tpe1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-vie1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-xsp1-3.xx.fbcdn.net.iberostar.com^ -||sonar6-xxb1-1.xx.fbcdn.net.iberostar.com^ -||sonar6-yyz1-1.xx.fbcdn.net.iberostar.com^ -||sonar6.fcul1-1.fna.fbcdn.net.iberostar.com^ -||sonar6.fgdl1-3.fna.fbcdn.net.iberostar.com^ -||sonar6.fgdl1-4.fna.fbcdn.net.iberostar.com^ -||sonar6.fgym1-1.fna.fbcdn.net.iberostar.com^ -||sonar6.fhmo1-2.fna.fbcdn.net.iberostar.com^ -||sonar6.fmlm1-1.fna.fbcdn.net.iberostar.com^ -||sonar6.fmzt1-1.fna.fbcdn.net.iberostar.com^ -||sonar6.fnog1-1.fna.fbcdn.net.iberostar.com^ -||sonar6.fntr4-1.fna.fbcdn.net.iberostar.com^ -||sonar6.fpbc1-1.fna.fbcdn.net.iberostar.com^ -||sonar6.fpbc1-2.fna.fbcdn.net.iberostar.com^ -||sonar6.fver1-1.fna.fbcdn.net.iberostar.com^ -||sonar6.fzih1-1.fna.fbcdn.net.iberostar.com^ -||sonar6.xy.fbcdn.net.iberostar.com^ -||srd1-pdx.net.jumia.ci^ -||static.whatsapp.net.iberostar.com^ -||stats.g.doubleclick.net.iberostar.com^ -||stereofixers.net.jumia.com.gh^ -||swissinside.easyjet.com.edgekey.net.easyjet.com^ -||tamus.net.anwalt.de^ -||thialfi.net.anwalt.de^ -||thumbs.net.anwalt.de^ -||tirandoalmedio.net.anwalt.de^ -||titomacia.net.anwalt.de^ -||tittendestages.net.anwalt.de^ -||tweetdeck.net.anwalt.de^ -||twistairclub.net.anwalt.de^ -||tx-br-cdn.kwai.net.iberostar.com^ -||tx-pro-pull.kwai.net.iberostar.com^ -||txv2-br-cdn.kwai.net.iberostar.com^ -||tyumen.net.anwalt.de^ -||ui.belboon.com^ -||umrvmb.net.anwalt.de^ -||us.appbackupapi.micloud.xiaomi.net.iberostar.com^ -||us.micardapi.micloud.xiaomi.net.iberostar.com^ -||us.noteapi.micloud.xiaomi.net.iberostar.com^ -||us.pdc.micloud.xiaomi.net.iberostar.com^ -||usw18-268-pdb.net.mydays.de^ -||v16m-default.akamaized.net.iberostar.com^ -||valdes.net.anwalt.de^ -||vd-test.net.anwalt.de^ -||vidfiles.net.mydays.de^ -||vl037.net.anwalt.de^ -||wasteland.net.anwalt.de^ -||whoami.akamai.net.iberostar.com^ -||wotasia2.login.wargaming.net.iberostar.com^ -||wotasia3.login.wargaming.net.iberostar.com^ -||wpe-client02-vm4.net.mydays.de^ -||ws-br-cdn.kwai.net.iberostar.com^ -||ws-pro-pull.kwai.net.iberostar.com^ -||www.brillen.demarketing.net.brillen.pl^ -||www.ciscenje.net.jumia.com.ng^ -||www.clients.net.anwalt.de^ -||www.csr31.net.anwalt.de^ -||www.iaccede.net.jumia.ug^ -||www.meuble-design.net.jumia.ug^ -||www.net.asambeauty.com^ -||www.restopascher.net.jumia.sn^ -||www1.na.sandbox.gwsweb.net.jumia.co.ke^ -||yoi05.youthorganizing.net.jumia.ci^ -||zds.net.anwalt.de^ -||zimadifirenze.net.anwalt.de^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_np6.txt *** -||cotemaison.np6.com^ -||emailing.casden.banquepopulaire.fr^ -||epm.mailperformance.com^ -||f1.demo.np6.com^ -||f1.mailperf.com^ -||f1.mailperformance.com^ -||f1.mperf.com^ -||f1.np6.com^ -||infojeux.paris.fr^ -||lbv5.mperf.com^ -||mailtracking.tf1.com^ -||mp.pitchero.com^ -||news.mailperformance.com^ -||newsletter.ticketac.com^ -||shortener.np6.com^ -||sms.gestion.cetelem.fr^ -||sms.news.allopneus.com^ -||t8.mailperformance.com^ -||tr.3ou4xcb.cetelem.fr^ -||tr.3xcb.cofinoga.fr^ -||tr.aasi.espmp-agfr.net^ -||tr.abo.cotemaison.fr^ -||tr.account.np6.com^ -||tr.acd-comexpert.fr^ -||tr.acq-pjms.fr^ -||tr.actiflip.devisdirect.com^ -||tr.activeprospects.info^ -||tr.actu-companeo.com^ -||tr.actu.bricodepot.com^ -||tr.actu.reunica.com^ -||tr.actu.rmcbfmplay.com^ -||tr.actualites.bfmtv.com^ -||tr.actualites.reseau-lcd.org^ -||tr.actuentreprises.elior.fr^ -||tr.actupremium.com^ -||tr.actus-fdj.fr^ -||tr.adhesion.ircom-laverriere.com^ -||tr.afpa.espmp-cufr.net^ -||tr.ag2rlamondiale.fr^ -||tr.agefiseminaires.com^ -||tr.alex.espmp-agfr.net^ -||tr.allianz-trade.com^ -||tr.allopneus.com^ -||tr.animation.lexpress.fr^ -||tr.animation.micromania.fr^ -||tr.animations.alticemedia.com^ -||tr.animations.bfmtv.com^ -||tr.apou032.espmp-agfr.net^ -||tr.asp0010.espmp-nifr.net^ -||tr.asp0018.espmp-aufr.net^ -||tr.asp002q.espmp-aufr.net^ -||tr.asp002x.espmp-cufr.net^ -||tr.asp0085.espmp-nifr.net^ -||tr.asp008y.espmp-nifr.net^ -||tr.asp009j.espmp-aufr.net^ -||tr.asp009k.espmp-cufr.net^ -||tr.asp00a0.espmp-cufr.net^ -||tr.asp00a1.espmp-agfr.net^ -||tr.asp00a3.espmp-agfr.net^ -||tr.asp00a6.espmp-nifr.net^ -||tr.asp00ah.espmp-nifr.net^ -||tr.asp00am.espmp-cufr.net^ -||tr.asp1.espmp-agfr.net^ -||tr.asp102n.espmp-cufr.net^ -||tr.asp103z.espmp-nifr.net^ -||tr.asp104p.espmp-aufr.net^ -||tr.asp106d.espmp-cufr.net^ -||tr.asp106g.espmp-nifr.net^ -||tr.asp106m.espmp-agfr.net^ -||tr.asp108a.espmp-cufr.net^ -||tr.asp1098.espmp-cufr.net^ -||tr.asp109c.espmp-aufr.net^ -||tr.asp109e.espmp-cufr.net^ -||tr.asp109y.espmp-agfr.net^ -||tr.asp10a7.espmp-aufr.net^ -||tr.asp10ai.espmp-nifr.net^ -||tr.asp10ap.espmp-nifr.net^ -||tr.asp10ar.espmp-cufr.net^ -||tr.asp10b3.espmp-agfr.net^ -||tr.asp10bq.espmp-nifr.net^ -||tr.asp10bs.espmp-aufr.net^ -||tr.asp10c8.espmp-agfr.net^ -||tr.asp10cc.espmp-nifr.net^ -||tr.asp10cg.espmp-nifr.net^ -||tr.asp10ch.espmp-nifr.net^ -||tr.asp10cr.espmp-nifr.net^ -||tr.asp10d7.espmp-nifr.net^ -||tr.asp10de.espmp-agfr.net^ -||tr.asp10df.espmp-agfr.net^ -||tr.asp10dq.espmp-nifr.net^ -||tr.asp10dx.espmp-nifr.net^ -||tr.asp10ea.espmp-nifr.net^ -||tr.asp10f5.espmp-agfr.net^ -||tr.asp10f6.espmp-agfr.net^ -||tr.asp10fa.espmp-cufr.net^ -||tr.asp10fg.espmp-aufr.net^ -||tr.asp10fl.espmp-nifr.net^ -||tr.asp10fo.espmp-nifr.net^ -||tr.asp10fp.espmp-nifr.net^ -||tr.asp10fx.espmp-cufr.net^ -||tr.asp10ga.espmp-nifr.net^ -||tr.asp10ge.espmp-nifr.net^ -||tr.asp10h2.espmp-nifr.net^ -||tr.asp10hc.espmp-aufr.net^ -||tr.asp10hg.espmp-cufr.net^ -||tr.asp10hi.espmp-cufr.net^ -||tr.asp10hj.espmp-pofr.net^ -||tr.asp10if.espmp-cufr.net^ -||tr.asp2.espmp-agfr.net^ -||tr.asp202u.espmp-cufr.net^ -||tr.asp2032.espmp-aufr.net^ -||tr.asp2035.espmp-nifr.net^ -||tr.asp203m.espmp-cufr.net^ -||tr.asp2045.espmp-nifr.net^ -||tr.asp204q.espmp-cufr.net^ -||tr.asp205a.espmp-cufr.net^ -||tr.asp2063.espmp-nifr.net^ -||tr.asp206k.espmp-agfr.net^ -||tr.asp2070.espmp-aufr.net^ -||tr.asp2075.espmp-nifr.net^ -||tr.asp2076.espmp-pofr.net^ -||tr.asp2077.espmp-nifr.net^ -||tr.asp2078.espmp-nifr.net^ -||tr.asp207e.espmp-nifr.net^ -||tr.asp207f.espmp-cufr.net^ -||tr.assoc.cfsr-retine.com^ -||tr.avisecheance.maaf.fr^ -||tr.axa-millesimes.espmp-aufr.net^ -||tr.axa.espmp-aufr.net^ -||tr.b2d1.espmp-agfr.net^ -||tr.b2d1068.espmp-nifr.net^ -||tr.b2d106z.espmp-aufr.net^ -||tr.b2d107b.espmp-aufr.net^ -||tr.bati-partner.be^ -||tr.bati-partners.be^ -||tr.batirenover.info^ -||tr.batiweb.co^ -||tr.bel-pros.be^ -||tr.bern.espmp-nifr.net^ -||tr.bienvenue.envie-de-bien-manger.com^ -||tr.bizzquotes.co.uk^ -||tr.bobo.espmp-cufr.net^ -||tr.bodet.devisdirect.com^ -||tr.boletim.companeo.pt^ -||tr.boletim.meu-orcamento.pt^ -||tr.bouyguestelecom.espmp-aufr.net^ -||tr.brand.labelleadresse.com^ -||tr.btob-afaceri.ro^ -||tr.btob-cwf.com^ -||tr.btob-deals.co.uk^ -||tr.btob-pro.be^ -||tr.btob-pro.pt^ -||tr.btob.mhdfrance.fr^ -||tr.btobquotes.be^ -||tr.btobquotes.cl^ -||tr.btobquotes.com^ -||tr.btobquotes.mx^ -||tr.buenasofertas.pro^ -||tr.bureauveritas.espmp-aufr.net^ -||tr.business-deal.be^ -||tr.business-deal.cl^ -||tr.business-deal.com.br^ -||tr.business-deal.fr^ -||tr.business-deal.mx^ -||tr.business-deal.nl^ -||tr.business-quotes.co.uk^ -||tr.businessdev.younited-credit.es^ -||tr.cacf-acq.ipsos-surveys.com^ -||tr.cacf.ipsos-surveys.com^ -||tr.camara.eu.com^ -||tr.capu.espmp-agfr.net^ -||tr.carl.espmp-cufr.net^ -||tr.cart02d.espmp-agfr.net^ -||tr.carte.lcl.fr^ -||tr.cartegie.fr^ -||tr.cashback.floa.fr^ -||tr.cb4x.banque-casino.fr^ -||tr.cb4x.floa.fr^ -||tr.cclx.espmp-agfr.net^ -||tr.cdiscount.3wregie.com^ -||tr.ceeregion.moethennessy.com^ -||tr.christmas.petit-bateau.com^ -||tr.chronodrive.com^ -||tr.ciblexo.fr^ -||tr.cifa.espmp-nifr.net^ -||tr.cifa02b.espmp-aufr.net^ -||tr.cifa02d.espmp-aufr.net^ -||tr.cifa02k.espmp-aufr.net^ -||tr.cifa02l.espmp-nifr.net^ -||tr.citiesforlifeparis.latribune.fr^ -||tr.cj.bordeaux-metropole.fr^ -||tr.client.emailing.bnpparibas^ -||tr.clientes.younited-credit.com^ -||tr.clienti.younited-credit.com^ -||tr.clienti.younited-credit.it^ -||tr.clients-mediametrie.fr^ -||tr.clients.base-plus.fr^ -||tr.clients.boursobank.info^ -||tr.clients.boursorama.info^ -||tr.clients.compagnie-hyperactive.com^ -||tr.clients.europrogres.fr^ -||tr.clients.gemy.fr^ -||tr.clients.idaia.group^ -||tr.cnaf.espmp-nifr.net^ -||tr.cobranca.younited-credit.com^ -||tr.cogedim.espmp-agfr.net^ -||tr.collectif.groupe-vyv.fr^ -||tr.com-clients.sfr.fr^ -||tr.com-parc.sfr.fr^ -||tr.com-red.sfr.fr^ -||tr.com-web.sfr.fr^ -||tr.com.santiane.fr^ -||tr.com.sfr.fr^ -||tr.combca.fr^ -||tr.commande.location.boulanger.com^ -||tr.commercial.boursobank.info^ -||tr.communaute.caradisiac.com^ -||tr.communautes-mediametrie.fr^ -||tr.communication.alticemedia.com^ -||tr.communication.ancv.com^ -||tr.communication.armatis-lc.com^ -||tr.communication.arthur-bonnet.com^ -||tr.communication.b2b-actualites.com^ -||tr.communication.boursobank.info^ -||tr.communication.boursorama.info^ -||tr.communication.cgaaer.fr^ -||tr.communication.enkiapp.io^ -||tr.communication.harmonie-mutuelle.fr^ -||tr.communication.hennessy.com^ -||tr.communication.hybrigenics.com^ -||tr.communication.jardindacclimatation.fr^ -||tr.communication.lamaisondesstartups.com^ -||tr.communication.lvmh.fr^ -||tr.communication.lvmhdare.com^ -||tr.communication.mhdfrance.fr^ -||tr.communication.moethennessy.com^ -||tr.communication.moethennessydiageoconnect.com^ -||tr.communication.np6.com^ -||tr.communication.numericable.fr^ -||tr.communication.offresb2b.fr^ -||tr.communication.top-office.com^ -||tr.companeo-news.co.uk^ -||tr.comunicacao.younited-credit.com^ -||tr.comunicazione.younited-credit.com^ -||tr.contact.astuceco.fr^ -||tr.contact.canalplay.com^ -||tr.contact.canalplus.fr^ -||tr.contact.canalsat.fr^ -||tr.contact.cerel.net^ -||tr.contact.cereps.fr^ -||tr.contact.e-turf.fr^ -||tr.contact.henner.com^ -||tr.contact.lvmh.fr^ -||tr.contact.mhl-publishing.fr^ -||tr.contact.ruinart.com^ -||tr.contact.stof.fr^ -||tr.contact.thelist-emirates.fr^ -||tr.contrat.location.boulanger.com^ -||tr.contrat.lokeo.fr^ -||tr.contrats.cetelem.fr^ -||tr.contrats.cofinoga.fr^ -||tr.contrats.domofinance.fr^ -||tr.corporate.moethennessy.com^ -||tr.courriel.mae.fr^ -||tr.courriel.ouestnormandie.cci.fr^ -||tr.courrier.charentelibre.fr^ -||tr.courrier.larepubliquedespyrenees.fr^ -||tr.courrier.sudouest.fr^ -||tr.crc.henner.com^ -||tr.credito.universo.pt^ -||tr.crtl.espmp-aufr.net^ -||tr.customer-solutions.np6.com^ -||tr.cyberarchi.info^ -||tr.cyprusparadiseestates.com^ -||tr.cypruspremiervacations.com^ -||tr.datacom.espmp-pofr.net^ -||tr.demo.np6.com^ -||tr.designoutlet-contact.fr^ -||tr.devis-companeo.be^ -||tr.devis-companeo.com^ -||tr.devis-companeo.fr^ -||tr.devis-express.be^ -||tr.devis-professionnels.com^ -||tr.devis-professionnels.fr^ -||tr.devis.digital^ -||tr.devisminute-affranchissement.com^ -||tr.devisminute-alarme.com^ -||tr.devisminute-caisseenregistreuse.com^ -||tr.devisminute-fontainereseau.com^ -||tr.devisminute-geolocalisation.com^ -||tr.devisminute-gestiondepatrimoine.com^ -||tr.devisminute-gestiondutemps.com^ -||tr.devisminute-gestionpaie.com^ -||tr.devisminute-materieldestockage.com^ -||tr.devisminute-mutuelle.com^ -||tr.devisminute-operateur.com^ -||tr.devisminute-operateurpro.com^ -||tr.devisminute-securiteb2b.com^ -||tr.devisminute-siteecommerce.com^ -||tr.devisminute-weber.com^ -||tr.devize-companeo.ro^ -||tr.devizul-meu.ro^ -||tr.digitalacademy.np6.com^ -||tr.digitaldigest.lvmh.com^ -||tr.directferries.com^ -||tr.dirigeants.harmonie-mutuelle.fr^ -||tr.discover.perfectstay.com^ -||tr.djay.espmp-agfr.net^ -||tr.dkomaison.info^ -||tr.dnapresse.fr^ -||tr.docapost-sirs.com^ -||tr.dogstrust.org.uk^ -||tr.donateur.afm-telethon.fr^ -||tr.dossier-assurance.maaf.fr^ -||tr.drh-holding.lvmh.fr^ -||tr.e-mail.axa.fr^ -||tr.e-mail.axabanque.fr^ -||tr.e-travaux.info^ -||tr.e.entreprise-pm.fr^ -||tr.e.entreprise-pm.net^ -||tr.e.m-entreprise.fr^ -||tr.e.trouver-un-logement-neuf.com^ -||tr.easy-offertes.be^ -||tr.ecolab-france.fr^ -||tr.ecologie-shop.espmp-agfr.net^ -||tr.em.cdiscount-pro.com^ -||tr.em.cdiscountpro.com^ -||tr.email.aeroexpo.online^ -||tr.email.agriexpo.online^ -||tr.email.akerys.com^ -||tr.email.aktuariat.fr^ -||tr.email.archiexpo.com^ -||tr.email.bon-placement-immobilier.fr^ -||tr.email.contact-jaguar.fr^ -||tr.email.contact-landrover.fr^ -||tr.email.custom-campaign.com^ -||tr.email.d17.tv^ -||tr.email.d8.tv^ -||tr.email.directindustry.com^ -||tr.email.distributor-expo.com^ -||tr.email.gap-france.fr^ -||tr.email.grandjeupaysgourmand.fr^ -||tr.email.harmonie-mutuelle.fr^ -||tr.email.infocredit.orangebank.fr^ -||tr.email.janedeboy.com^ -||tr.email.maisonfoody.com^ -||tr.email.medicalexpo.com^ -||tr.email.mnpaf.fr^ -||tr.email.nauticexpo.com^ -||tr.email.pointfranchise.co.uk^ -||tr.email.rs-fr.com^ -||tr.email.securite-routiere.gouv.fr^ -||tr.email.solocal.com^ -||tr.email.thelem-assurances.fr^ -||tr.email.toute-la-franchise.com^ -||tr.email.videofutur.fr^ -||tr.email.virtual-expo.com^ -||tr.email.voyagesleclerc.com^ -||tr.emailatia.fr^ -||tr.emailing-wishesfactory.com^ -||tr.emailing.agencereference.com^ -||tr.emailing.canalbox.com^ -||tr.emailing.canalplay.com^ -||tr.emailing.canalplus-afrique.com^ -||tr.emailing.canalplus-caledonie.com^ -||tr.emailing.canalplus-caraibes.com^ -||tr.emailing.canalplus-maurice.com^ -||tr.emailing.canalplus-polynesie.com^ -||tr.emailing.canalplus-reunion.com^ -||tr.emailing.canalplus.ch^ -||tr.emailing.canalplus.fr^ -||tr.emailing.canalpro.fr^ -||tr.emailing.canalsat.ch^ -||tr.emailing.cifea-mkg.com^ -||tr.emailing.cnam-paysdelaloire.fr^ -||tr.emailing.cstar.fr^ -||tr.emailing.detours.canal.fr^ -||tr.emailing.grassavoye.com^ -||tr.emailing.pogioclub.be^ -||tr.emailing.studiocanal.com^ -||tr.emailing.tvcaraibes.tv^ -||tr.emailium.fr^ -||tr.emc.moethennessy.com^ -||tr.enedis-infos.fr^ -||tr.enews.customsolutions.fr^ -||tr.enquetes.actionlogement.fr^ -||tr.entreprise-pro.info^ -||tr.entreprise.axa.fr^ -||tr.envie-de-bien-manger.espmp-aufr.net^ -||tr.eqs.cpam67.net^ -||tr.ere.emailing.bnpparibas^ -||tr.espmp-agfr.net^ -||tr.estatesandwines.moethennessy.com^ -||tr.etravauxpro.fr^ -||tr.etude.sncd.org^ -||tr.eulerhermes.com^ -||tr.ev001.net^ -||tr.evenements.inpi.fr^ -||tr.expresofferte.be^ -||tr.fg3p.espmp-cufr.net^ -||tr.fidal.pro^ -||tr.fidalformation.pro^ -||tr.finance.moethennessy.com^ -||tr.fleetmatics.vraaguwofferte.be^ -||tr.forum.veuveclicquot.fr^ -||tr.fr.pro.accor.com^ -||tr.france.plimsoll.fr^ -||tr.futurecommerce.moethennessy.com^ -||tr.gen.espmp-agfr.net^ -||tr.gestion.cafineo.fr^ -||tr.gestion.cetelem.fr^ -||tr.gestion.coficabail.fr^ -||tr.gestion.cofinoga.fr^ -||tr.gestion.credit-moderne.fr^ -||tr.gestion.domofinance.fr^ -||tr.gestion.floa.fr^ -||tr.gestion.hondafinancialservices.fr^ -||tr.gestion.lexpress.fr^ -||tr.gestion.liberation.fr^ -||tr.gestion.norrsken.fr^ -||tr.gestion.sygmabnpparibas-pf.com^ -||tr.gplus.espmp-nifr.net^ -||tr.grez.espmp-nifr.net^ -||tr.group-appointments.lvmh.fr^ -||tr.group-hr.lvmh.fr^ -||tr.groupama-gne.fr^ -||tr.gtr.moethennessy.com^ -||tr.haute-maurienne-vanoise.net^ -||tr.hcahealthcare.co.uk^ -||tr.hello.maisonfoody.com^ -||tr.helloartisan.info^ -||tr.hmut.espmp-agfr.net^ -||tr.holidaycottages.co.uk^ -||tr.impayes.filiassur.com^ -||tr.info-btob-leaders.com^ -||tr.info-companeo.be^ -||tr.info-fr.assurant.com^ -||tr.info-jeux.paris.fr^ -||tr.info-pro.promoneuve.fr^ -||tr.info-strategie.fr^ -||tr.info.actionlogement.fr^ -||tr.info.aeroportdeauville.com^ -||tr.info.ag2rlamondiale.fr^ -||tr.info.aliae.com^ -||tr.info.annoncesbateau.com^ -||tr.info.aprr.fr^ -||tr.info.arialcnp.fr^ -||tr.info.astermod.net^ -||tr.info.aussois.com^ -||tr.info.bessans.com^ -||tr.info.bonneval-sur-arc.com^ -||tr.info.businesscreditcards.bnpparibasfortis.be^ -||tr.info.caissenationalegendarme.fr^ -||tr.info.camping-vagues-oceanes.com^ -||tr.info.capfun.com^ -||tr.info.cartesaffaires.bnpparibas^ -||tr.info.casino-proximites.fr^ -||tr.info.certypro.fr^ -||tr.info.clicochic.com^ -||tr.info.cnch.fr^ -||tr.info.comparadordeprestamos.es^ -||tr.info.conexancemd.com^ -||tr.info.conso-expert.fr^ -||tr.info.covid-resistance-bretagne.fr^ -||tr.info.dentexelans.com^ -||tr.info.e-leclerc.com^ -||tr.info.easyviaggio.com^ -||tr.info.easyviajar.com^ -||tr.info.easyvoyage.co.uk^ -||tr.info.easyvoyage.com^ -||tr.info.ecole-de-savignac.com^ -||tr.info.fulli.com^ -||tr.info.galian.fr^ -||tr.info.harmonie-mutuelle.fr^ -||tr.info.lacentrale.fr^ -||tr.info.lettre.cci.fr^ -||tr.info.linnc.com^ -||tr.info.linxea.com^ -||tr.info.mango-mobilites.fr^ -||tr.info.mango-mobilitesbyaprr.fr^ -||tr.info.mavoiturecash.fr^ -||tr.info.maxis-gbn.com^ -||tr.info.mcgarrybowen.com^ -||tr.info.mdbp.fr^ -||tr.info.mercialys.com^ -||tr.info.mobibam.com^ -||tr.info.np6.com^ -||tr.info.np6.fr^ -||tr.info.oceane-pme.com^ -||tr.info.offres-cartegie.fr^ -||tr.info.onboarding.corporatecards.bnpparibas^ -||tr.info.perl.fr^ -||tr.info.ph-bpifrance.fr^ -||tr.info.phsolidaire-bpifrance.fr^ -||tr.info.pret-bpifrance.fr^ -||tr.info.pretflashtpe-bpifrance.fr^ -||tr.info.projeo-finance.fr^ -||tr.info.promoneuve.fr^ -||tr.info.rebond-bpifrance.fr^ -||tr.info.reunica.com^ -||tr.info.rouen.aeroport.fr^ -||tr.info.rouen.cci.fr^ -||tr.info.snpden.net^ -||tr.info.solidarm.fr^ -||tr.info.svp.com^ -||tr.info.valcenis.com^ -||tr.info.vip-mag.co.uk^ -||tr.info.webikeo.fr^ -||tr.infolettre.securite-routiere.gouv.fr^ -||tr.infolettres.groupama.com^ -||tr.infomarche.hennessy.fr^ -||tr.information.fidalformations.fr^ -||tr.information.labelleadresse.com^ -||tr.information.lacollection-airfrance.be^ -||tr.information.lacollection-airfrance.ch^ -||tr.information.lacollection-airfrance.co.uk^ -||tr.information.lacollection-airfrance.fr^ -||tr.information.leclubtravel.fr^ -||tr.information.perfectstay.com^ -||tr.information.smartdeals-transavia-fr.com^ -||tr.information.thelist-emirates.fr^ -||tr.informations.harmonie-mutuelle.fr^ -||tr.informations.lcl.fr^ -||tr.infos-admissions.com^ -||tr.infos.afpa.fr^ -||tr.infos.allianz-trade.com^ -||tr.infos.ariase.com^ -||tr.infos.enerplus-bordeaux.fr^ -||tr.infos.fongecifcentre.com^ -||tr.infos.gazdebordeaux.fr^ -||tr.infos.lacarte.demenagez-moi.com^ -||tr.infos.lettre-resiliation.com^ -||tr.infos.odalys-vacances.com^ -||tr.inspiration.culture-data.fr^ -||tr.interieur.cotemaison.fr^ -||tr.interviews-mediametrie.fr^ -||tr.invest.younited-credit.com^ -||tr.invitation-mesdessous.fr^ -||tr.invitation.perfectstay.com^ -||tr.ipsos-surveys.com^ -||tr.ispaconsulting.com^ -||tr.italia.plimsoll.it^ -||tr.jend.espmp-pofr.net^ -||tr.jesuis.enformedelotus.com^ -||tr.jevoteenligne.fr^ -||tr.jimb.espmp-cufr.net^ -||tr.jkcd.espmp-cufr.net^ -||tr.jkcd.espmp-pofr.net^ -||tr.jkyg.espmp-cufr.net^ -||tr.kang.espmp-cufr.net^ -||tr.kedf.espmp-nifr.net^ -||tr.klse.espmp-agfr.net^ -||tr.kommunikation.younited-credit.com^ -||tr.kontakt.younited-credit.com^ -||tr.kpfc.espmp-nifr.net^ -||tr.kpyn.espmp-cufr.net^ -||tr.kpyn02a.espmp-cufr.net^ -||tr.kpyn02f.espmp-cufr.net^ -||tr.kpyn059.espmp-pofr.net^ -||tr.krus.espmp-agfr.net^ -||tr.lachaiselongue.fr^ -||tr.landrover.compte-financial-services.fr^ -||tr.laprairie.ifop.com^ -||tr.lbar.espmp-agfr.net^ -||tr.leads.direct^ -||tr.legrandjeu.boulanger.com^ -||tr.lesmarques.envie-de-bien-manger.com^ -||tr.lesmarquesenviedebienmanger.fr^ -||tr.lettre.dechets-infos.com^ -||tr.lettre.helianthal.fr^ -||tr.lettre.lecho-circulaire.com^ -||tr.leyravaud.devisdirect.com^ -||tr.liberation.espmp-aufr.net^ -||tr.livrephoto.espmp-aufr.net^ -||tr.loreal.ifop.com^ -||tr.louisvuittonmalletier.com^ -||tr.louvre-boites.com^ -||tr.ltbu.espmp-nifr.net^ -||tr.ltbu02o.espmp-agfr.net^ -||tr.lvmhappening.lvmh.fr^ -||tr.m.cwisas.com^ -||tr.macarte.truffaut.com^ -||tr.mail-companeo.fr^ -||tr.mail.cdiscount.com.ec^ -||tr.mail.cdiscount.com.pa^ -||tr.mail.digitalpjms.fr^ -||tr.mail.enviedebienmanger.fr^ -||tr.mail.floa.fr^ -||tr.mail.hagerservices.fr^ -||tr.mail.koregraf.com^ -||tr.mail.mdbp.fr^ -||tr.mail.moncoupdepouce.com^ -||tr.mail.perial.info^ -||tr.mail.primevere.com^ -||tr.mail.satisfactory.fr^ -||tr.mail.solocal.com^ -||tr.mail.vip-mag.co.uk^ -||tr.mail.vipmag.fr^ -||tr.mail.vo3000.com^ -||tr.mail1.macif.fr^ -||tr.mailatia.com^ -||tr.mailing.achatpublic.com^ -||tr.mailing.heliades.fr^ -||tr.mailing.laredoute.fr^ -||tr.mailing.lvmhappening.com^ -||tr.mailing.promodeclic.fr^ -||tr.mailingnp6.lavoirmoderne.com^ -||tr.mailmp.macif.net^ -||tr.mailperf.institut-de-la-protection-sociale.fr^ -||tr.mailperf.ngt-services.com^ -||tr.mailperformance.com^ -||tr.mailperformance.fr^ -||tr.maisonsdumonde.com^ -||tr.marg02n.espmp-agfr.net^ -||tr.marketing.bordeauxgironde.cci.fr^ -||tr.marketing.comparadordeprestamos.es^ -||tr.marketing.fulli.com^ -||tr.marketing.tennaxia.com^ -||tr.marketing.younited-credit.com^ -||tr.marketing.younited-credit.es^ -||tr.marketing.younited-credit.pt^ -||tr.marketingdisruption.co.uk^ -||tr.mart.espmp-agfr.net^ -||tr.mcom03b.espmp-aufr.net^ -||tr.mcom04p.espmp-aufr.net^ -||tr.media.harmonie-sante.fr^ -||tr.melhores-propostas.pt^ -||tr.membres.boursorama.info^ -||tr.mep.enkiapp.io^ -||tr.mes-bonsplans.be^ -||tr.mes-prestataires.fr^ -||tr.message.maaf.fr^ -||tr.mh-connect.moethennessy.com^ -||tr.mhch.moet.hennessy.com^ -||tr.mhdconnect.mhdfrance.fr^ -||tr.mhist.moethennessy.com^ -||tr.mhlab78.moethennessy.com^ -||tr.mhusa-trade-engagement.moethennessy.com^ -||tr.mhwinesestates.moethennessy.com^ -||tr.mijn-superaanbieding.be^ -||tr.mijnaanbieding.renowizz.be^ -||tr.mika.espmp-nifr.net^ -||tr.mktg.np6.com^ -||tr.mm.infopro-digital.com^ -||tr.mnoc.espmp-nifr.net^ -||tr.mnpd.espmp-agfr.net^ -||tr.moes.espmp-agfr.net^ -||tr.moja-wycena.pl^ -||tr.monagenligne.fr^ -||tr.mondevis-b2b.com^ -||tr.mondevis-pro.com^ -||tr.moving.fr^ -||tr.mp.aconclue-business.fr^ -||tr.mp.aconclue-entreprise.fr^ -||tr.mp.aconclue-pro.com^ -||tr.mp.actu-pm.fr^ -||tr.mp.infomanageo.fr^ -||tr.mp.ld-man.fr^ -||tr.mrls.espmp-agfr.net^ -||tr.mydevisentreprise.com^ -||tr.n.ferrero.fr^ -||tr.n.info.cdgp.fr^ -||tr.n.info.sygmabanque.fr^ -||tr.n.kinder.fr^ -||tr.n.nutella.fr^ -||tr.n.tic-tac.fr^ -||tr.nati02d.espmp-aufr.net^ -||tr.nespresso.com^ -||tr.nespresso.mailsservices.com^ -||tr.new.offres-cartegie.fr^ -||tr.news-abweb.com^ -||tr.news-chocolat.com^ -||tr.news-companeo.be^ -||tr.news-companeo.cl^ -||tr.news-companeo.com.br^ -||tr.news-companeo.fr^ -||tr.news-companeo.gr^ -||tr.news-companeo.mx^ -||tr.news-companeo.nl^ -||tr.news-companeo.pl^ -||tr.news-dfc.sciences-po.fr^ -||tr.news-fr.perfectstay.com^ -||tr.news-ingerop.com^ -||tr.news-longchamp.com^ -||tr.news.a-t.fr^ -||tr.news.a2micile.com^ -||tr.news.accessmastertour.com^ -||tr.news.accessmbatour.com^ -||tr.news.actu-man.com^ -||tr.news.ailleurs.com^ -||tr.news.alcyon.com^ -||tr.news.alibabuy.com^ -||tr.news.alinea.com^ -||tr.news.allopneus.com^ -||tr.news.aramisauto.com^ -||tr.news.assuragency.net^ -||tr.news.bruneau.fr^ -||tr.news.business-deal.co.uk^ -||tr.news.c-media.fr^ -||tr.news.cad-magazine.com^ -||tr.news.capfun.com^ -||tr.news.casino.fr^ -||tr.news.casinodrive.fr^ -||tr.news.casinomax.fr^ -||tr.news.cci-puydedome.com^ -||tr.news.cdiscount.com^ -||tr.news.cdiscountpro.com^ -||tr.news.cenpac.fr^ -||tr.news.chapsvision.com^ -||tr.news.chezmonveto.com^ -||tr.news.chilican.com^ -||tr.news.clicochic.com^ -||tr.news.companeo.es^ -||tr.news.companeo.ro^ -||tr.news.corsicaferries.com^ -||tr.news.corsicalinea.com^ -||tr.news.cotemaison.fr^ -||tr.news.cporadio.tv^ -||tr.news.crystal-partenaires.com^ -||tr.news.delifrance.com^ -||tr.news.deneuville-chocolat.fr^ -||tr.news.deshotelsetdesiles.com^ -||tr.news.devisdirect.be^ -||tr.news.devisdirect.com^ -||tr.news.digitpjms.fr^ -||tr.news.directeo.fr^ -||tr.news.easy-voyage.com^ -||tr.news.easyviaggio.com^ -||tr.news.easyviajar.com^ -||tr.news.easyvoyage.co.uk^ -||tr.news.easyvoyage.com^ -||tr.news.easyvoyage.de^ -||tr.news.economic-studies.fr^ -||tr.news.editions-lva.fr^ -||tr.news.enkiapp.io^ -||tr.news.entreprise-pm.com^ -||tr.news.epicery.com^ -||tr.news.eureden.com^ -||tr.news.eurodatatv.com^ -||tr.news.exclu.fr^ -||tr.news.extenso-telecom.com^ -||tr.news.externis.com^ -||tr.news.extrabook.com^ -||tr.news.flandrintechnologies.com^ -||tr.news.franceloc.fr^ -||tr.news.futuramedia.fr^ -||tr.news.geantcasino.fr^ -||tr.news.geomag.fr^ -||tr.news.glance-mediametrie.com^ -||tr.news.grandsmoulinsdeparis.com^ -||tr.news.groupe-armonia.com^ -||tr.news.hallobanden.be^ -||tr.news.happycap-foundation.fr^ -||tr.news.happycap.org^ -||tr.news.helvyre.fr^ -||tr.news.heredis.com^ -||tr.news.i24news.tv^ -||tr.news.ics.fr^ -||tr.news.infopro-digital.com^ -||tr.news.interforum.fr^ -||tr.news.itancia.com^ -||tr.news.jautomatise.com^ -||tr.news.kpmg-avocats.fr^ -||tr.news.kpmg.fr^ -||tr.news.kpmgacademy.fr^ -||tr.news.kpmgnet.fr^ -||tr.news.kuhn.com^ -||tr.news.la-collectionairfrance.fr^ -||tr.news.la-meilleure-voyance.com^ -||tr.news.labelleadresse.com^ -||tr.news.lacollection-airfrance.be^ -||tr.news.lacollection-airfrance.ch^ -||tr.news.lacollection-airfrance.co.uk^ -||tr.news.lacollection-airfrance.de^ -||tr.news.lacollection-airfrance.fr^ -||tr.news.lacollectionair-france.fr^ -||tr.news.lacollectionairfrance.be^ -||tr.news.lacollectionairfrance.co.uk^ -||tr.news.lacollectionairfrance.de^ -||tr.news.lacollectionairfrance.fr^ -||tr.news.lalettredelexpansion.com^ -||tr.news.latribunebordeaux.fr^ -||tr.news.leclubtravel.fr^ -||tr.news.lentillesmoinscheres.com^ -||tr.news.lentreprise.lexpress.fr^ -||tr.news.lexpansion.lexpress.fr^ -||tr.news.lexpress.fr^ -||tr.news.linxea.com^ -||tr.news.lisez.com^ -||tr.news.lokapimail.com^ -||tr.news.maisonfoody.com^ -||tr.news.maisons-du-monde.com^ -||tr.news.manufacturing.fr^ -||tr.news.mdbp.fr^ -||tr.news.mediametrie.fr^ -||tr.news.meillandrichardier.com^ -||tr.news.mi-oferta.es^ -||tr.news.moethennessy.com^ -||tr.news.mon-horoscope.info^ -||tr.news.monvoyant.fr^ -||tr.news.mperformance.fr^ -||tr.news.normandie.cci.fr^ -||tr.news.np6.com^ -||tr.news.ocs.fr^ -||tr.news.onetoonemba.com^ -||tr.news.ouestnormandie.cci.fr^ -||tr.news.parisinfo.com^ -||tr.news.perfectstay.com^ -||tr.news.perl.fr^ -||tr.news.pl.bata-esp.com^ -||tr.news.prosfora-mou.gr^ -||tr.news.receiveyourquote.co.uk^ -||tr.news.retailglobalsolutions.com^ -||tr.news.seine-estuaire.cci.fr^ -||tr.news.smartdeals-transavia-fr.com^ -||tr.news.smartdealstransavia-fr.com^ -||tr.news.sport2000.fr^ -||tr.news.styles.lexpress.fr^ -||tr.news.supercasino.fr^ -||tr.news.teklifim.pro^ -||tr.news.thelist-emirates.fr^ -||tr.news.themedtechforum.eu^ -||tr.news.tiptel.fr^ -||tr.news.toocampmail.com^ -||tr.news.toute-la-franchise.com^ -||tr.news.triskalia.fr^ -||tr.news.vetharmonie.fr^ -||tr.news.videofutur.fr^ -||tr.news.vip-diary.com^ -||tr.news.vip-mag.co.uk^ -||tr.news.vipmag.fr^ -||tr.news.vivrecotesud.fr^ -||tr.news.vo3000.com^ -||tr.news.votreargent.lexpress.fr^ -||tr.news.voyagesleclerc.com^ -||tr.news.vraaguwofferte.be^ -||tr.news.vraaguwofferte.com^ -||tr.news.younited-coach.com^ -||tr.news.younited-credit.com^ -||tr.news2pjms.fr^ -||tr.news5.cdiscount.com^ -||tr.news6.cdiscount.com^ -||tr.newsletter-stressless.com^ -||tr.newsletter.10h01.fr^ -||tr.newsletter.1664france.fr^ -||tr.newsletter.1oag.com^ -||tr.newsletter.actalians.fr^ -||tr.newsletter.afpa.fr^ -||tr.newsletter.assuragency.net^ -||tr.newsletter.astro-mail.com^ -||tr.newsletter.bassins-a-flot.fr^ -||tr.newsletter.bauermedia.fr^ -||tr.newsletter.bouygues-construction.com^ -||tr.newsletter.bouygues.com^ -||tr.newsletter.capdecision.fr^ -||tr.newsletter.chandon.com^ -||tr.newsletter.cuisine-plus.tv^ -||tr.newsletter.ecig-privee.fr^ -||tr.newsletter.erenumerique.fr^ -||tr.newsletter.etoiledevenus.com^ -||tr.newsletter.fotodiscount.com^ -||tr.newsletter.huilesdolive.fr^ -||tr.newsletter.leocare.eu^ -||tr.newsletter.location.boulanger.com^ -||tr.newsletter.lokeo.fr^ -||tr.newsletter.meilleurmobile.com^ -||tr.newsletter.milleis.fr^ -||tr.newsletter.mixr.net^ -||tr.newsletter.monmedium.com^ -||tr.newsletter.np6.com^ -||tr.newsletter.np6.fr^ -||tr.newsletter.opcoep.fr^ -||tr.newsletter.photoservice.com^ -||tr.newsletter.phyto.com^ -||tr.newsletter.plurielmedia.com^ -||tr.newsletter.tiragephoto.fr^ -||tr.newsletter.younited-credit.com^ -||tr.newsletterpagesjaunes.fr^ -||tr.newsletters-bonpoint.com^ -||tr.newsletters.alticemedia.com^ -||tr.newsletters.coedition-contact.fr^ -||tr.newsletters.odalys-vacances.com^ -||tr.newsletters.qapa-interim.fr^ -||tr.newsmarketing.allopneus.com^ -||tr.nl.2wls.net^ -||tr.nl.ardennes.cci.fr^ -||tr.nl.mondo-shop.fr^ -||tr.nl.myvipmag.fr^ -||tr.nl.services-sncf.com^ -||tr.nl2.sncf-fidelite.com^ -||tr.nmcm.espmp-cufr.net^ -||tr.notification-gdpr.bnpparibas-pf.fr^ -||tr.notification-gdpr.cafineo.fr^ -||tr.notification-gdpr.cofica.fr^ -||tr.notification-gdpr.cofinoga.fr^ -||tr.notification-gdpr.credit-moderne.fr^ -||tr.notification-gdpr.domofinance.fr^ -||tr.notification-gdpr.loisirs-finance.fr^ -||tr.notification-gdpr.norrsken.fr^ -||tr.notification-gdpr.personal-finance-location.bnpparibas^ -||tr.notification.cafineo.fr^ -||tr.notification.cdiscount.com^ -||tr.notification.cetelem.fr^ -||tr.notification.credit-moderne.fr^ -||tr.notification.norrsken.fr^ -||tr.notification.np6.com^ -||tr.np6.com^ -||tr.np6.fr^ -||tr.np6.orange.fr^ -||tr.observatoire.musee-orangerie.fr^ -||tr.observatoire.musee-orsay.fr^ -||tr.oferta-firmy.pl^ -||tr.ofertas-companeo.es^ -||tr.offer-companeo.co.uk^ -||tr.offerta-companeo.com^ -||tr.offerte.migliorifornitori.it^ -||tr.offre-btob.fr^ -||tr.offre-companeo.com^ -||tr.offre.devisdirect.com^ -||tr.offres-professionnelles.fr^ -||tr.offres.ap-regie.fr^ -||tr.offres.bfmtv.com^ -||tr.offresbtoc.engie.fr^ -||tr.offrevip.floa.fr^ -||tr.ojxm.espmp-aufr.net^ -||tr.online.longchamp.com^ -||tr.openinnovation.lvmh.com^ -||tr.orange-lease.fr^ -||tr.orcamento-online.pt^ -||tr.orcamentos-companeo.pt^ -||tr.oxatis.devisdirect.com^ -||tr.panels-mediametrie.fr^ -||tr.part.offres-cartegie.fr^ -||tr.partenaire.groupe-vyv.fr^ -||tr.partenaire.manageo.info^ -||tr.particuliers8.engie.com^ -||tr.partners.younited-credit.it^ -||tr.payment.lvmh.com^ -||tr.phjk.espmp-nifr.net^ -||tr.pixe.espmp-cufr.net^ -||tr.pm.pelhammedia.com^ -||tr.poker.np6.com^ -||tr.pole-emploi-services.com^ -||tr.pole-emploi.info^ -||tr.policyexpert.info^ -||tr.politicoevents.eu^ -||tr.politicolive.eu^ -||tr.politicomarketing.eu^ -||tr.portail.afpa.fr^ -||tr.prevention.harmonie-mutuelle.fr^ -||tr.preventivo.risparmiazienda.it^ -||tr.pro-renov.be^ -||tr.pro.odalys-vacances.com^ -||tr.pro.residencehappysenior.fr^ -||tr.programme-voyageur-sncf.com^ -||tr.projet.cotemaison.fr^ -||tr.promo.np6.fr^ -||tr.promotion.lexpress.fr^ -||tr.prosfores-companeo.gr^ -||tr.prosfores-etairias.gr^ -||tr.ps.espmp-agfr.net^ -||tr.psaparts.com^ -||tr.publicisdrugstore.espmp-agfr.net^ -||tr.qualitaetsumfrage.com^ -||tr.qualitaveicolo.com^ -||tr.qualite.groupama.com^ -||tr.qualite.groupebarriere.com^ -||tr.qualite.viparis.com^ -||tr.qualitevehicule.fr^ -||tr.qualityvehiclesurvey.com^ -||tr.quotes.digital^ -||tr.quotes4business.com^ -||tr.quotes4business.info^ -||tr.quotesforbusiness.cl^ -||tr.quotesforbusiness.co.uk^ -||tr.ratm.espmp-agfr.net^ -||tr.raym.espmp-agfr.net^ -||tr.reactivation.vertbaudet.fr^ -||tr.read.glose.com^ -||tr.recouvrement.finrec.com^ -||tr.recouvrement.seeric.com^ -||tr.recouvrement.younited-credit.com^ -||tr.redaction.essentiel-sante-magazine.fr^ -||tr.reglementaire.emailing.bnpparibas^ -||tr.relation-mediametrie.fr^ -||tr.relation.uneo.fr^ -||tr.renowizze.be^ -||tr.republicains-info.org^ -||tr.rh.auchan.com^ -||tr.route-solutiondata.fr^ -||tr.roxi02e.espmp-agfr.net^ -||tr.safrancom-esp.net^ -||tr.sash.espmp-aufr.net^ -||tr.sash02g.espmp-nifr.net^ -||tr.satisfaction.alinea.com^ -||tr.satisfaction.groupe-pv-cp.com^ -||tr.satisfaction.villagesnature.com^ -||tr.scienceshumaines.info^ -||tr.scienceshumaines.pro^ -||tr.secretary.wfitn.org^ -||tr.secteurentreprises.harmonie-mutuelle.fr^ -||tr.service.linxea.com^ -||tr.serviceclient.adagcaladoise.fr^ -||tr.serviceclient.bf-depannage.fr^ -||tr.serviceclient.confogaz.com^ -||tr.serviceclient.depanchauffageservice.fr^ -||tr.serviceclient.effica-service.fr^ -||tr.serviceclient.explore.fr^ -||tr.serviceclient.gazservicerapide.fr^ -||tr.serviceclient.ochauffage.fr^ -||tr.serviceclient.somgaz.fr^ -||tr.serviceclient.thermogaz.fr^ -||tr.serviceclient.younited-coach.com^ -||tr.serviceclient.younited-credit.com^ -||tr.services.alinea.com^ -||tr.services.caradisiac.com^ -||tr.servicesclients.canalplus.ch^ -||tr.servicesclients.canalplus.fr^ -||tr.servicoaocliente.younited-credit.com^ -||tr.sfr.espmp-aufr.net^ -||tr.sgjk.espmp-aufr.net^ -||tr.silvera-contact.fr^ -||tr.skin.espmp-agfr.net^ -||tr.smtp1.email-mediapost.fr^ -||tr.solendi.com^ -||tr.solocal.espmp-aufr.net^ -||tr.solution.uneo.fr^ -||tr.sort.espmp-nifr.net^ -||tr.souscription.floa.fr^ -||tr.spain.plimsoll.es^ -||tr.sportswear.np6.com^ -||tr.strategie.gouv.fr^ -||tr.suivi-client-edf.com^ -||tr.surveys.np6.com^ -||tr.tdgx.espmp-cufr.net^ -||tr.think.lvmh.fr^ -||tr.thisiseurope.moethennessy.com^ -||tr.tns.harmonie-mutuelle.fr^ -||tr.toner-service.fr^ -||tr.toner-services.fr^ -||tr.tonerservices.fr^ -||tr.tourisme.visit-lanarbonnaise.com^ -||tr.tpe.harmonie-mutuelle.fr^ -||tr.tr.bricodepot.com^ -||tr.trafficnews.lyria.com^ -||tr.ujsv.espmp-agfr.net^ -||tr.uk.icicibank.com^ -||tr.uk.katun.com^ -||tr.unaoffertaalgiorno.com^ -||tr.update.groupon.be^ -||tr.urfk.espmp-agfr.net^ -||tr.urfk02r.espmp-nifr.net^ -||tr.urfk02t.espmp-agfr.net^ -||tr.urfk02v.espmp-cufr.net^ -||tr.urfk02z.espmp-nifr.net^ -||tr.urfk03c.espmp-nifr.net^ -||tr.urfk03h.espmp-nifr.net^ -||tr.urfk03k.espmp-agfr.net^ -||tr.urfk03q.espmp-nifr.net^ -||tr.urfk03u.espmp-nifr.net^ -||tr.urfk03x.espmp-agfr.net^ -||tr.urfk041.espmp-cufr.net^ -||tr.urfk042.espmp-nifr.net^ -||tr.urfk044.espmp-nifr.net^ -||tr.urfk050.espmp-cufr.net^ -||tr.urfk052.espmp-cufr.net^ -||tr.urfk057.espmp-aufr.net^ -||tr.urfk05g.espmp-agfr.net^ -||tr.urfk05l.espmp-nifr.net^ -||tr.urfk05o.espmp-pofr.net^ -||tr.urfk06h.espmp-nifr.net^ -||tr.urfk06n.espmp-nifr.net^ -||tr.urfk06o.espmp-agfr.net^ -||tr.urfk06x.espmp-cufr.net^ -||tr.urfk06y.espmp-nifr.net^ -||tr.urfk07j.espmp-nifr.net^ -||tr.urfk07r.espmp-agfr.net^ -||tr.urfk07s.espmp-nifr.net^ -||tr.urfk080.espmp-agfr.net^ -||tr.urfk08c.espmp-cufr.net^ -||tr.vernede.huilesdolive.fr^ -||tr.vf7n.espmp-agfr.net^ -||tr.videofutur.fr^ -||tr.ville.bordeaux.fr^ -||tr.voeux-wishes.ipsilon-ip.com^ -||tr.voixduclient.harmonie-mutuelle.fr^ -||tr.votrealarme.securitasdirect.fr^ -||tr.vous.hellobank.fr^ -||tr.wa.wordappeal.com^ -||tr.welcome.easyviaggio.com^ -||tr.welcome.easyviajar.com^ -||tr.welcome.easyvoyage.co.uk^ -||tr.welcome.easyvoyage.com^ -||tr.welcome.easyvoyage.de^ -||tr.welcome.lacollection-airfrance.be^ -||tr.welcome.lacollection-airfrance.ch^ -||tr.welcome.lacollection-airfrance.co.uk^ -||tr.welcome.lacollection-airfrance.de^ -||tr.welcome.lacollection-airfrance.fr^ -||tr.welcome.lexpress.fr^ -||tr.welcome.moncoupdepouce.com^ -||tr.welcome.odalys-vacances.com^ -||tr.welcome.perfectstay.com^ -||tr.welcome.smartdeals-transavia-fr.com^ -||tr.welcome.thelist-emirates.fr^ -||tr.welcome.unaoffertaalgiorno.com^ -||tr.welcome.vipmag.fr^ -||tr.wuei.espmp-agfr.net^ -||tr.xlead.digital^ -||tr.xleads.digital^ -||tr.zojh.espmp-aluk.net^ -||tr1.bp06.net^ -||tr1.bp09.net^ -||tr1.bp26.net^ -||tr1.citroen-ipsos.com^ -||tr1.easy-v01.net^ -||tr1.lr001.net^ -||tr1.lr002.net^ -||tr1.lr003.net^ -||tr1.mailperf.com^ -||tr1.mailperformance.com^ -||tr1.mperf.com^ -||tr1.peugeot-ipsos.com^ -||tr1.psa-surveys.com^ -||tr4.mailperf.com^ -||tr5.mailperf.com^ -||tr5.mperf.com^ -||tr6.mperf.com^ -||tracking.allopneus.com^ -||www.bfc-mp.caisse-epargne.fr^ -||www.fodgfip.fr^ -||www.newsletter.banquepopulaire.fr^ -||www.np6.eu^ -||www.tr.bfc-mp.caisse-epargne.fr^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_criteo.txt *** -||aacjdq.pontoslivelo.com.br^ -||aadeda.niche-beauty.com^ -||aajdcp.brand-satei.me^ -||aajfoz.halfclub.com^ -||aajmmd.aireuropa.com^ -||aaktao.entel.cl^ -||aaqnpa.sizeofficial.se^ -||aaqrvt.thefryecompany.com^ -||aarqmo.culturekings.co.nz^ -||aaucna.casasbahia.com.br^ -||aazfby.auto.de^ -||aazmiw.reisenthel.com^ -||abbqns.gowabi.com^ -||abdpac.williamsshoes.com.au^ -||abdrjm.eurostarshotels.de^ -||abemms.atp-autoteile.de^ -||abgghj.moustakastoys.gr^ -||abjkfy.muuu.com^ -||abjtuq.exoticca.com^ -||abkdae.namshi.com^ -||abkobh.chobirich.com^ -||abpwqf.lolaflora.com.mx^ -||absscw.vegis.ro^ -||abuaac.suzette-shop.jp^ -||abuajs.e-monsite.com^ -||abvghl.udn.com^ -||abxslg.jollyroom.fi^ -||aciysf.destockage-fitness.com^ -||acxajt.jimmykey.com^ -||adhudg.nec-lavie.jp^ -||adixkr.culturekings.com.au^ -||adsnid.wagyushop.com^ -||adwmab.card-db.com^ -||adxzju.penti.com^ -||aebvay.mesinspirationsculinaires.com^ -||aeewjq.dr-vegefru.com^ -||aehudh.rakumachi.jp^ -||aeotgu.asi-reisen.de^ -||aerezb.nepamall.com^ -||aeuati.wedio.com^ -||aexhyo.pilatos.com^ -||afclms.xd-design.co.kr^ -||afdbwq.blivakker.no^ -||afhjxb.flaconi.de^ -||afilyo.tfehotels.com^ -||afizah.eprice.it^ -||afmvms.dealdash.com^ -||afoykb.ebook.de^ -||agcjee.sklep-nasiona.pl^ -||agcmtb.nameit.com^ -||aggalj.eloem.kr^ -||agoqaa.stockmann.com^ -||agxwhz.bloomingdales.sa^ -||ahbyjm.fiever.com.br^ -||ahfadj.aoki-style.com^ -||ahfzzc.konfio.mx^ -||ahhrtt.pixnet.net^ -||ahisft.moonmagic.com^ -||ahjucs.loberon.de^ -||ahngxh.palladiumhotelgroup.com^ -||ahnrmb.topvintage.de^ -||ahsxot.meaningfulbeauty.com^ -||ahuvjy.design-market.fr^ -||ahzqgr.au-sonpo.co.jp^ -||ahzygy.thesteelshop.com^ -||aiddut.particleformen.com^ -||aidsro.ostin.com^ -||aiieer.mangnut2.com^ -||aikhra.londonclub.sk^ -||aikrir.lcwaikiki.com^ -||aimvaa.gulet.at^ -||aincrd.champstudy.com^ -||ajbeqy.delfi.lt^ -||ajgkdt.eazy.de^ -||ajigzt.lampenwelt.de^ -||ajqaqk.unoliving.com^ -||ajtxoo.academiaassai.com.br^ -||ajvzis.triumph.com^ -||akgnwd.tocris.com^ -||akkieh.yumeyakata.com^ -||aknzmq.divvino.com.br^ -||akpiug.rarecarat.com^ -||akspdp.materialkitchen.com^ -||akzdrh.catofashions.com^ -||alexfj.elten-store.de^ -||alfeza.vueling.com^ -||algrcr.sandro-paris.com^ -||alhiop.thehandsome.com^ -||alrhry.cjthemarket.com^ -||alsgaj.chosun.com^ -||amcgns.giesswein.com^ -||amezqu.fabrykaform.pl^ -||aminks.underarmour.com.tr^ -||amvtwk.thebottleclub.com^ -||anijjm.winkelstraat.nl^ -||annwwu.guitarcenter.com^ -||antblz.mediaworld.it^ -||aoelfb.nanouniverse.jp^ -||aojhzj.watch.co.uk^ -||aolsvc.snowqueen.ru^ -||aonjkj.intermundial.es^ -||aoohaq.micromania.fr^ -||aoqcqh.eavalyne.lt^ -||aoqhfs.optikdodomu.cz^ -||aoulpo.puccini.pl^ -||aozmpm.jwell.com^ -||apfbrk.butorline.hu^ -||aphxav.green-acres.it^ -||aplobv.xexymix.com^ -||appgax.optica-optima.com^ -||apqcjj.celford.com^ -||apqmxf.curama.jp^ -||aqbron.battlepage.com^ -||aqmzbk.avectoi.kr^ -||aqorez.yamo.bio^ -||aqouep.aquaphor.ru^ -||aqwvwn.cultfurniture.com^ -||arigng.door.ac^ -||arphzc.woodica.pl^ -||arrlrk.edigital.hu^ -||arsaqf.yukoyuko.net^ -||aruoyf.peterhahn.ch^ -||arvwwu.stepstone.be^ -||asamgd.rossmann.de^ -||ascbdj.knivesandtools.de^ -||asnjih.apatchy.co.uk^ -||asoewk.jaanuu.com^ -||asttcp.vatera.hu^ -||asxxlo.interflora.es^ -||atblqu.rondorff.com^ -||atcbju.silvergoldbull.ca^ -||ateveq.street-beat.ru^ -||atgtfj.bettermusic.com.au^ -||atlkse.aosom.it^ -||atzzrq.tbs.co.jp^ -||aucqdk.autodoc.es^ -||audsoa.narumiya-online.jp^ -||audxht.effeweg.nl^ -||auhdzd.paprika-shopping.de^ -||aullwp.sportisimo.sk^ -||auoehd.liebscher-bracht.com^ -||ausclh.castlery.com^ -||autspe.notino.hr^ -||auwdff.dyfashion.ro^ -||avbtkz.locknlockmall.com^ -||aviite.freaksstore.com^ -||awbkht.verktygsproffsen.se^ -||awfzfs.kwantum.nl^ -||awggij.wplay.co^ -||awklir.0506mall.com^ -||awogtl.1stopbedrooms.com^ -||awowwo.forever21.com^ -||awrgkd.1000farmacie.it^ -||awuapj.landwatch.com^ -||axfevh.bandab.com.br^ -||axkcmb.mosigra.ru^ -||axkwyf.edinos.pl^ -||axnskz.power-stones.jp^ -||axoqjt.gommadiretto.it^ -||axoqvl.daf-shoes.com^ -||axpjcp.tennis-point.co.uk^ -||aydtkb.pikabu.ru^ -||aygccr.eonet.jp^ -||ayleaf.petersofkensington.com.au^ -||azbrtw.anydesk.com^ -||azcoct.bikkembergs.com^ -||azflce.fragrances.bg^ -||azlyta.immowelt.de^ -||azscgj.penningtons.com^ -||azveac.pearl.ch^ -||azwucq.locservice.fr^ -||azwxpp.nequittezpas.jp^ -||azxhnt.uniformadvantage.com^ -||baahnj.bezokularow.pl^ -||baffae.alcott.eu^ -||bagbgo.unitednude.eu^ -||bahrpo.dint.co.kr^ -||bahyei.himaraya.co.jp^ -||balkog.withmoment.co.kr^ -||basuey.toyscenter.it^ -||bavvgo.zingat.com^ -||bazlny.homepal.it^ -||bbagnw.sedaily.com^ -||bbbihe.vertbaudet.es^ -||bbubuq.aftco.com^ -||bbwqcs.vidaxl.ee^ -||bcdllh.esprit.co.uk^ -||bcfgwi.skidxb.com^ -||bcfhva.tradingpost.com.au^ -||bcigeg.pishposhbaby.com^ -||bcigfr.www.uoc.edu^ -||bcsjcj.nasdaq.com^ -||bcwljq.batteryempire.de^ -||bcybka.deinetuer.de^ -||bcytwb.student.com^ -||bderbn.foxtrot.com.ua^ -||bdickh.globalgolf.com^ -||bdkuth.smartbuyglasses.co.uk^ -||bdncut.pa-man.shop^ -||bdqzcj.micuento.com^ -||bdzcck.stadiumgoods.com^ -||beafdf.restaupro.com^ -||bebpon.zetronix.com^ -||beoofo.pairs.lv^ -||beqioy.promessedefleurs.com^ -||bfeagv.chicwish.com^ -||bfjoyp.plus.nl^ -||bfjpbw.herrenausstatter.de^ -||bfntkv.icon.co.cr^ -||bfvlgp.appstory.co.kr^ -||bfzikn.l-wine.ru^ -||bgaycm.exvital-shop.de^ -||bgevqy.moschino.com^ -||bgfmvc.amandalindroth.com^ -||bgupcq.westfalia.de^ -||bhawtp.vitacost.com^ -||bhcfpo.elfa.se^ -||bhcsub.sankeishop.jp^ -||bhgbqh.crocs.de^ -||bhmzab.totes.com^ -||bhwjoa.cotopaxi.com^ -||bhwkju.vivo.com^ -||bhxemw.charleskeith.com^ -||bibglj.timberland.fr^ -||bijkep.hotelesestelar.com^ -||bilahh.feuvert.fr^ -||bjdqbl.nippn-kenko.net^ -||bjfbac.hyundaivaudreuil.com^ -||bjpsuk.fray-id.com^ -||bjqnpe.i-office1.net^ -||bjuvux.andgino.jp^ -||bkmzhr.joint-space.co.jp^ -||bknqpb.dobredomy.pl^ -||bkogtr.vacationsbyrail.com^ -||bkpoef.jules.com^ -||bksckn.minhacasasolar.com.br^ -||blaltn.physicianschoice.com^ -||blfkmp.fti.de^ -||blmjbp.casamundo.pl^ -||blsoof.wirwinzer.de^ -||blzayw.ticketsmarter.com^ -||blziha.intimissimi.com^ -||bmjmse.softsurroundings.com^ -||bmnbzt.pool-systems.de^ -||bmodjx.mgos.jp^ -||bmyudk.clarins.de^ -||bmzuyj.nifty.com^ -||bnsmoi.valx.jp^ -||bnutnr.landandfarm.com^ -||bnvsjg.hometogo.de^ -||bnzkua.trussardi.com.br^ -||bobawb.pomellato.com^ -||boelsl.lastijerasmagicas.com^ -||boewzj.meiji-jisho.com^ -||bombrw.netshoes.com.br^ -||bopmkf.lolahome.es^ -||boqufs.2nn.jp^ -||bpgbcl.coconala.com^ -||bppbnn.vacanceole.com^ -||bpsxld.meutudo.com.br^ -||bqacmp.vidaxl.no^ -||bqhkix.mosmexa.ru^ -||bqoulb.nowo.pt^ -||bqvndd.ifood.com.br^ -||brgrwd.dansko.com^ -||brhwsg.makingnew.co.kr^ -||brjjkd.calzedonia.com^ -||brqory.notino.sk^ -||brrmpm.skanskin.kr^ -||brycys.24mx.se^ -||bsbmex.flaschenpost.ch^ -||bsjgdn.supergoop.com^ -||bskblt.6thstreet.com^ -||bsytzb.hago.kr^ -||btcfbr.mejshop.jp^ -||btmean.cardosystems.com^ -||btptod.aerzteblatt.de^ -||bttmkj.diesel.com^ -||buasmk.earthshoes.com^ -||budibu.saksfifthavenue.com^ -||bugdsm.buffalo-boots.com^ -||bugjyl.jkattire.co.uk^ -||bulozc.tui.be^ -||busrol.st-eustachenissan.com^ -||bvbqyq.odalys-vacances.com^ -||bvexmf.bigtv.ru^ -||bvkuwv.muumuu-domain.com^ -||bvubje.leboncoin.fr^ -||bwkpkx.projectxparis.com^ -||bwmxdg.kimono-365.jp^ -||bwntyd.neuve-a.net^ -||bwspqc.bloomonline.jp^ -||bwujxl.yoga-lava.com^ -||bxbuvv.zeelool.com^ -||bxiaev.linvosges.com^ -||bxlsct.ex-shop.net^ -||bxumze.buckscountycouriertimes.com^ -||bxumze.gadsdentimes.com^ -||bxumze.jacksonville.com^ -||bxumze.news-star.com^ -||bxumze.palmbeachpost.com^ -||bxumze.providencejournal.com^ -||bxumze.recordonline.com^ -||bxumze.times-gazette.com^ -||bxumze.tuscaloosanews.com^ -||byhqrw.gopeople.co.kr^ -||byjpsr.bobags.com.br^ -||bykwtf.victoriassecret.ae^ -||byqdtp.interpark.com^ -||bysfnu.bodeboca.com^ -||byxcbk.ipekevi.com^ -||bzaxgk.ecctur.com^ -||bzcuta.titleboxing.com^ -||bzlold.machi.to^ -||bznxqj.fiat.it^ -||bzqxze.remixshop.com^ -||bzuaqh.roan.nl^ -||caamcs.julipet.it^ -||cagkpu.suitdirect.co.uk^ -||cakmzz.schwab.de^ -||caknmq.rotita.com^ -||caowuq.babyliss-romania.ro^ -||cargdk.bakerross.co.uk^ -||cbnzop.c-c-j.com^ -||cbpgpg.bombshellsportswear.com^ -||cbudbs.tirendo.de^ -||cbuvhv.desertcart.ae^ -||ccdflm.limberry.de^ -||cchlhb.budgetsport.fi^ -||cciqma.cosabella.com^ -||ccztgy.elgiganten.dk^ -||cdeatz.spartoo.it^ -||cdfhpj.automobile.it^ -||cdjhcf.hometogo.es^ -||ceggfe.msc-kreuzfahrten.de^ -||ceoapr.donjoyperformance.com^ -||ceowyn.eseltree.com^ -||cfrnyp.kars4kids.org^ -||cfsaze.retailmenot.com^ -||cfyhym.weightwatchers.fr^ -||cgctsw.mytour.vn^ -||cgqkhc.trendyol.com^ -||cgsisl.owllabs.com^ -||chgwwj.klimate.nl^ -||choymp.pooldawg.com^ -||chpspb.bubbleroom.fi^ -||chrczt.vite-envogue.de^ -||chrooo.soccerandrugby.com^ -||cikvwv.dsdamat.com^ -||cikxuh.iciformation.fr^ -||cilvph.smartbuyglasses.com^ -||ciszhp.finanzfrage.net^ -||ciszhp.gesundheitsfrage.net^ -||ciszhp.motorradfrage.net^ -||cizzvi.beldona.com^ -||cjbdme.conquer.org^ -||cjcqls.onbuy.com^ -||cjejjz.thelasthunt.com^ -||cjfqtu.vitafy.ch^ -||cjlekm.correiodopovo.com.br^ -||cjnbqe.glamira.com.mx^ -||cjulor.marimekko.jp^ -||ckpxtt.justfly.com^ -||cksfgh.jaycar.com.au^ -||ckygge.mohd.it^ -||ckyhec.maxisport.com^ -||clhzet.ubierzswojesciany.pl^ -||clnbze.dziennikbaltycki.pl^ -||clnbze.dzienniklodzki.pl^ -||clnbze.dziennikpolski24.pl^ -||clnbze.dziennikzachodni.pl^ -||clnbze.echodnia.eu^ -||clnbze.expressbydgoski.pl^ -||clnbze.expressilustrowany.pl^ -||clnbze.gazetakrakowska.pl^ -||clnbze.gazetalubuska.pl^ -||clnbze.gazetawroclawska.pl^ -||clnbze.gk24.pl^ -||clnbze.gloswielkopolski.pl^ -||clnbze.gol24.pl^ -||clnbze.gp24.pl^ -||clnbze.gratka.pl^ -||clnbze.gs24.pl^ -||clnbze.kurierlubelski.pl^ -||clnbze.naszemiasto.pl^ -||clnbze.nowiny24.pl^ -||clnbze.nowosci.com.pl^ -||clnbze.nto.pl^ -||clnbze.polskatimes.pl^ -||clnbze.pomorska.pl^ -||clnbze.poranny.pl^ -||clnbze.regiodom.pl^ -||clnbze.stronakobiet.pl^ -||clnbze.telemagazyn.pl^ -||clohzp.hifi.lu^ -||cltxxq.cruises.united.com^ -||clyexf.decathlon.ie^ -||cmcyne.xoticpc.com^ -||cmgfbg.billetreduc.com^ -||cmhmpr.lolaliza.com^ -||cmrhvx.lojapegada.com.br^ -||cmtmwn.ditano.com^ -||cmttvv.bonprix.se^ -||cmzaly.gebrueder-goetz.de^ -||cngbpl.directliquidation.com^ -||cnlbxi.zoopla.co.uk^ -||cnpxwl.cheapcaribbean.com^ -||cntccc.publicrec.com^ -||cnxddc.lodenfrey.com^ -||cogxmr.travelplanet.pl^ -||colgui.vidaxl.pt^ -||coobuo.pinkpanda.cz^ -||cooyxg.tennis-point.de^ -||counmg.greatvaluevacations.com^ -||cowhmc.docmorris.de^ -||coyizl.embracon.com.br^ -||cpiibb.top-office.com^ -||cploms.hipicon.com^ -||cqbbpf.geewiz.co.za^ -||cqbkhv.anacapri.com.br^ -||cqemus.gartenhaus-gmbh.de^ -||cqishr.mobile.de^ -||cqlonl.spartoo.cz^ -||cqpmvc.caminteresse.fr^ -||cqpmvc.capital.fr^ -||cqpmvc.cesoirtv.com^ -||cqpmvc.cuisineactuelle.fr^ -||cqpmvc.gala.fr^ -||cqpmvc.prima.fr^ -||cqpmvc.programme-tv.net^ -||cqpmvc.programme.tv^ -||cqpmvc.voici.fr^ -||cqubdd.metro.co.uk^ -||cqubdd.thisismoney.co.uk^ -||criteo.gap.ae^ -||cruntn.receno.com^ -||crvayw.kagunosato.com^ -||crzohw.intersport.gr^ -||csalhh.okay.cz^ -||csbmey.viherpeukalot.fi^ -||csghyg.reginaclinic.jp^ -||cspmkl.gruppal.com^ -||csymrm.24mx.fr^ -||csyqts.tmon.co.kr^ -||ctiegx.kagu-wakuwaku.com^ -||ctjfdn.sandals.com^ -||ctlayn.talbots.com^ -||ctwqxs.autoscout24.at^ -||ctyjsf.cellphones.com.vn^ -||ctyojp.kibek.de^ -||cudgoz.mifcom.de^ -||cudrqv.sts.pl^ -||cueohf.actieforum.com^ -||cueohf.activo.mx^ -||cueohf.forumactif.com^ -||cueohf.forumattivo.com^ -||cueohf.forumieren.com^ -||cueohf.forumieren.de^ -||cueohf.forumotion.com^ -||cueohf.forumpro.fr^ -||cueohf.forumsactifs.com^ -||cueohf.hungarianforum.com^ -||cufroa.aboutyou.be^ -||cvhefd.ixbt.com^ -||cvoyrn.astotel.com^ -||cvpthv.vipoutlet.com^ -||cvtspo.moebel24.de^ -||cvzvun.vidaxl.de^ -||cwcdmm.zennioptical.com^ -||cxalid.turtlebeach.com^ -||cxasci.sprzedajemy.pl^ -||cxrfns.gu-global.com^ -||cxrptu.danland.dk^ -||cxsaev.stratiaskin.com^ -||cxwisl.jetstereo.com^ -||cyeabs.luxyhair.com^ -||cymuig.assem.nl^ -||cyntgd.anticipazionitv.it^ -||cyohmj.catawiki.com^ -||cyvxfq.jennikayne.com^ -||czdxto.radiopopular.pt^ -||cznfum.lumas.com^ -||cznluk.urbangymwear.co.uk^ -||czujjs.crownandcaliber.com^ -||czvdlp.hgregoire.com^ -||dafvng.sunrefre.jp^ -||daifez.thebay.com^ -||dajdnm.splits59.com^ -||dasych.drmartypets.com^ -||dazdmx.cobra.fr^ -||dbhbgz.suitableshop.nl^ -||dbmbfe.pegipegi.com^ -||dbmyvl.apartmentfinder.com^ -||dbpbyh.americanas.com.br^ -||dbyoei.styleggom.co.kr^ -||dbzgtg.infostrada.it^ -||dbzpek.nike.com^ -||dccfog.petco.com^ -||dcclaa.bunte.de^ -||dcclaa.daskochrezept.de^ -||dcclaa.einfachbacken.de^ -||dcclaa.elle.de^ -||dcclaa.freundin.de^ -||dcclaa.guter-rat.de^ -||dcclaa.harpersbazaar.de^ -||dcclaa.instyle.de^ -||dcclaa.meine-familie-und-ich.de^ -||dcclaa.slowlyveggie.de^ -||dckiwt.eataly.com^ -||dcnkrd.baseballsavings.com^ -||dcsqim.socialdeal.nl^ -||dcxusu.lacuracao.pe^ -||ddioce.wolverine.com^ -||ddlcvm.clas.style^ -||ddmfrg.modivo.bg^ -||ddnahc.mesbagages.com^ -||ddqwdh.sofastyle.jp^ -||ddsndt.azubiyo.de^ -||debjpy.globoshoes.com^ -||decvsm.xlmoto.se^ -||dejpog.sunstar-shop.jp^ -||denpjz.jamesedition.com^ -||detnmz.cuteness.com^ -||detnmz.ehow.com^ -||detnmz.hunker.com^ -||detnmz.livestrong.com^ -||detnmz.sapling.com^ -||detnmz.techwalla.com^ -||dffpxg.targus.com^ -||dfigxb.underarmour.com.mx^ -||dfitgc.yamamay.com^ -||dgaxzn.samma3a.com^ -||dgbftl.luckyvitamin.com^ -||dgbwya.evyapshop.com^ -||dgkpzy.2ch2.net^ -||dgmolb.irishjobs.ie^ -||dgynnj.koctas.com.tr^ -||dgztiz.conrad.se^ -||dhkyrl.discountmags.com^ -||dhmdja.trueprotein.com.au^ -||dhplma.pontofrio.com.br^ -||dhsjpz.bugaboo.com^ -||dhwmtx.stylewe.com^ -||diboji.class101.net^ -||didzrr.nutraholic.com^ -||dikhsb.vividseats.com^ -||diocgn.biltorvet.dk^ -||dioqto.totaljobs.com^ -||diypxh.tillys.com^ -||djbztw.marimekko.com^ -||djmzap.gamivo.com^ -||djnqoe.rani.com.tr^ -||djxjti.oil-stores.gr^ -||djxyhp.ashtondrake.com^ -||dkbicq.elektramat.nl^ -||dkclxi.sitkagear.com^ -||dkmvyl.kidsahoi.ch^ -||dkqibr.onlineverf.nl^ -||dkskbu.demae-can.com^ -||dkvvwq.aosom.ca^ -||dldotl.ouestfrance-auto.com^ -||dlesjf.fightsite.hr^ -||dlesjf.jutarnji.hr^ -||dlisuq.wbw-nail.com^ -||dljdgn.e-lens.com.br^ -||dlqxtm.sssports.com^ -||dlzbax.street-academy.com^ -||dmcnyf.nevzatonay.com^ -||dmdgdu.atmosphera.com^ -||dmqykw.thirtymall.com^ -||dmuwlm.fonteynspas.com^ -||dmvbpz.swimoutlet.com^ -||dncxgm.pegadorfashion.com^ -||dndvms.24s.com^ -||dnecea.vacances-lagrange.com^ -||dngpzy.bfmtv.com^ -||dngpzy.tradingsat.com^ -||dngpzy.zone-turf.fr^ -||dnhrxt.kintetsu-re.co.jp^ -||dnkeyt.svetsochtillbehor.se^ -||dnltkp.lampeetlumiere.fr^ -||dnxcok.pentik.com^ -||doabqu.s3.com.tw^ -||doagpm.promart.pe^ -||doclec.supersmart.com^ -||doclen.hypedc.com^ -||docyjy.ryderwear.com^ -||dolrfm.fotoregistro.com.br^ -||dopljl.noleggiosemplice.it^ -||dpckzt.mesrecettesfaciles.fr^ -||dptgdj.usagi-online.com^ -||dptkdh.joinhoney.com^ -||dqefxd.kaigoworker.jp^ -||dqntra.home-to-go.ca^ -||dqqfrs.qatarairways.com^ -||dqsfil.pikolinos.com^ -||druzja.canmart.co.kr^ -||drvive.lamoda.ru^ -||dsdjbj.abracadabra.com.br^ -||dshcej.aosom.co.uk^ -||dsvmgu.snipes.it^ -||dtnmyp.cocotorico.com^ -||dtqcpx.eskor.se^ -||dtzrrz.green-japan.com^ -||dujgiq.trendhim.pl^ -||duqqrl.jefchaussures.com^ -||dvczvm.cyfrowe.pl^ -||dvhcob.jtrip.co.jp^ -||dvmira.keskisenkello.fi^ -||dvrxgs.fc-moto.de^ -||dvvkov.agrieuro.de^ -||dwbotr.ssg.com^ -||dwglgp.dunelm.com^ -||dwrlwx.polo-motorrad.de^ -||dwtpxq.karaca-home.com^ -||dxeldq.madeindesign.com^ -||dxkuwz.domyown.com^ -||dxpxgy.jdsports.com^ -||dxqbfo.capfun.nl^ -||dxrkvm.cheryls.com^ -||dxrlkh.icanvas.com^ -||dyghye.fashionesta.com^ -||dynamic-content.croquetteland.com^ -||dyqebg.aboutyou.hr^ -||dysbvu.bodyandfit.com^ -||dyzmpx.speedway.fr^ -||dzbbzg.carfinance247.co.uk^ -||dzforp.buscape.com.br^ -||dzjhok.teufelaudio.at^ -||dzkygl.ullapopken.nl^ -||dzsevh.voyage-prive.com^ -||dzszbb.homes.co.jp^ -||dztatn.soulberry.jp^ -||dzuthv.fahrrad-xxl.de^ -||dzwqfq.alpitour.it^ -||eakaih.creditas.com^ -||eakwza.bipicar.com^ -||eatjav.ekosport.fr^ -||eauicw.artnature.co.jp^ -||ebfudo.underarmour.cl^ -||ebgagg.pink.rs^ -||ebgfyn.zenden.ru^ -||ebhjhw.bonprix.es^ -||ebmhpt.sneakscloud.com^ -||ebnpqi.carrefourlocation.fr^ -||ebreid.garneroarredamenti.com^ -||ebtxxz.travellink.se^ -||ebwupu.superbrightleds.com^ -||ebxirc.taylorstitch.com^ -||ecctjf.leroymerlin.com.br^ -||ecdoib.26p.jp^ -||ecefyu.geox.com^ -||edavbu.vittz.co.kr^ -||ednqjm.magnanni.com^ -||eduynp.fcl-hid.com^ -||eecfrq.edreams.de^ -||eedijm.bakeca.it^ -||eennme.vidaxl.sk^ -||eesexz.butyraj.pl^ -||eetzod.bemol.com.br^ -||eewdrt.fashiontofigure.com^ -||efadyz.smartbuyglasses.co.nz^ -||efbenj.adorebeauty.com.au^ -||efglbp.baur.de^ -||efplso.epost.go.kr^ -||efsqwi.krueger-dirndl.de^ -||efuxqe.tatilbudur.com^ -||efwhcj.emp-shop.se^ -||efxzea.badshop.de^ -||egbqvs.vila.com^ -||egdehs.selected.com^ -||eghrbf.immowelt.at^ -||egvemw.aboutyou.ee^ -||ehauzf.jewlr.ca^ -||ehavol.consul.com.br^ -||ehdkzm.ottoversand.at^ -||ehedwd.sikayetvar.com^ -||ehrlgb.izlato.sk^ -||eicyds.qoo10.jp^ -||eifeou.pandahall.com^ -||eiftfa.fashionette.de^ -||eikwax.marmot.com^ -||eimcqw.dickies.com^ -||einrfh.justanswer.com^ -||eiorzm.orvis.com^ -||eisdog.shape.com^ -||eitkrg.loriblu.com^ -||ejbbcf.finishline.com^ -||ejejip.bjjfanatics.com^ -||ejhyhg.travelist.pl^ -||ejimtl.costway.com^ -||ejkmld.tradus.com^ -||ejpcuw.mitsubishilaval.com^ -||ejrbgi.tous.com^ -||ekfwof.finnishdesignshop.fi^ -||eklexu.kibuba.com^ -||ekphpa.perfectlypriscilla.com^ -||eltlio.boribori.co.kr^ -||elyxvt.wilsonamplifiers.com^ -||embknh.perriconemd.com^ -||emdlqs.longtallsally.com^ -||emedns.bonify.de^ -||emrdnt.sumaity.com^ -||emzorz.allergybuyersclub.com^ -||enbazj.ilbianconero.com^ -||endljp.168chasa.bg^ -||endljp.abv.bg^ -||endljp.activenews.ro^ -||endljp.bazar.bg^ -||endljp.bgdnes.bg^ -||endljp.dariknews.bg^ -||endljp.edna.bg^ -||endljp.fakti.bg^ -||endljp.gong.bg^ -||endljp.kupujemprodajem.com^ -||endljp.nova.bg^ -||endljp.pariteni.bg^ -||endljp.sinoptik.bg^ -||endljp.vesti.bg^ -||endljp.ziuaconstanta.ro^ -||eniobs.moncler.com^ -||eofjtw.jjshouse.se^ -||eofwfj.ria.com^ -||eoiaso.onofre.com.br^ -||eoiqpm.gloria-jeans.ru^ -||eokdol.flaconi.at^ -||eokzre.jd-sports.com.au^ -||eolvci.olx.ro^ -||eonmxd.urban-research.jp^ -||eoocpp.fujiidaimaru.co.jp^ -||eozwcp.jetex.com^ -||epcdko.forevernew.com.au^ -||epezqy.plaisio.gr^ -||epixkf.dentrodahistoria.com.br^ -||epnfoq.cyberpowersystem.co.uk^ -||eqingl.ivet.bg^ -||eqkwat.histoiredor.com^ -||eqvioe.polihome.gr^ -||ergrbp.hobidunya.com^ -||ermiph.petermanningnyc.com^ -||esqjac.costakreuzfahrten.de^ -||esqxrp.bonprix-fl.be^ -||essmnx.edreams.ch^ -||eswpwi.xlmoto.pl^ -||etgaad.smartphoto.be^ -||etgkbu.unieuro.it^ -||etoqel.nordicnest.de^ -||etppmr.luko.eu^ -||etwovr.underarmour.eu^ -||etznkn.ec-store.net^ -||eubynl.baby-sweets.de^ -||euqsfp.belluna.jp^ -||eusdbk.philosophyofficial.com^ -||evhvza.sodimac.com.br^ -||evkjai.grandado.com^ -||evnzcl.ranking.ac^ -||evrget.nikkan-gendai.com^ -||evupmg.olehenriksen.com^ -||ewalxb.epicsports.com^ -||ewfarp.kappa.com^ -||ewfrnd.stockmann.ru^ -||eworfe.babyartikel.de^ -||ewygto.swanicoco.co.kr^ -||exbujk.glamood.com^ -||exmeqy.smartbuyglasses.de^ -||exwvpm.misumi-ec.com^ -||exxwhi.jmty.jp^ -||eyenox.eschuhe.de^ -||eyfygb.yourfirm.de^ -||eylnhf.jobhouse.jp^ -||eymiwj.cancan.ro^ -||eymiwj.ciao.ro^ -||eymiwj.promotor.ro^ -||eymiwj.prosport.ro^ -||eymqcj.lineonline.it^ -||eyqbvz.greysonclothiers.com^ -||eywvko.shaddy.jp^ -||eyypxz.canifa.com^ -||eyzthp.constellation.com^ -||eyzubm.gooutdoors.co.uk^ -||ezdjat.shoesme.nl^ -||ezhddx.thesouledstore.com^ -||eziccr.dedoles.cz^ -||ezobam.jdsports.nl^ -||ezuhbd.industrialdiscount.it^ -||ezvjys.belezanaweb.com.br^ -||fagtgb.acorn.com^ -||fahmta.accountingweb.co.uk^ -||fahmta.f1i.com^ -||fahmta.flashbak.com^ -||fahmta.lipsum.com^ -||fahmta.metoffice.gov.uk^ -||fahmta.polishexpress.co.uk^ -||fahmta.racefans.net^ -||fahmta.theaa.com^ -||faokwl.sklepogrodniczy.pl^ -||faqtjp.redley.com.br^ -||fauzxn.hairlavie.com^ -||fazphz.theiconic.com.au^ -||fbjpji.europcar.es^ -||fbycnk.chiaki.vn^ -||fcizcj.burlingtonfreepress.com^ -||fckxdb.hometogo.it^ -||fcnqkw.xeroshoes.com^ -||fcpszk.telestream.net^ -||fcswcx.cyrillus.fr^ -||fculcz.joann.com^ -||fdixsh.platypusshoes.com.au^ -||fdkeip.azafashions.com^ -||fdowic.hoiku.mynavi.jp^ -||fdxtbs.meeters.org^ -||febcyv.joshi-spa.jp^ -||feppiu.systemaction.es^ -||feqbqn.rent.com^ -||fespzx.sfr.fr^ -||feuqzl.woolrich.com^ -||ffrmel.gerryweber.com^ -||ffrmwn.musinsa.com^ -||ffuodj.lanebryant.com^ -||ffyvsn.evisu.com^ -||fgfecw.rebelle.com^ -||fgfukd.sakazen.co.jp^ -||fgjfwz.legami.com^ -||fglrgt.ruggable.com^ -||fgmaal.u-canshop.jp^ -||fgosob.unhcr.it^ -||fgqxcz.thehipstore.co.uk^ -||fhdnds.mrmarvis.com^ -||fhiwyq.axiory.com^ -||fhngty.vetsecurite.com^ -||fhqrnb.feelway.com^ -||fhrpqp.futfanatics.com.br^ -||fiawmk.empik.com^ -||fiimox.lebenskraftpur.de^ -||fimyxg.bloomberght.com^ -||fimyxg.haberturk.com^ -||fiowtf.hyggee.com^ -||firurx.invia.hu^ -||fizopp.duluthtrading.com^ -||fjdzgn.paulfredrick.com^ -||fjgcai.zlavomat.sk^ -||fjighz.armaniexchange.com^ -||fjkjaj.peterhahn.nl^ -||fjortk.braun-hamburg.com^ -||fjuccm.uktsc.com^ -||fkdaik.lightinthebox.com^ -||fkeupa.bett1.de^ -||fkmdky.lifehacker.ru^ -||fkmzox.teinei.co.jp^ -||fksngj.bonnyread.com.tw^ -||fkxlsc.fenix-store.com^ -||fldoai.municipal.com^ -||flnkmj.hometogo.fr^ -||flpwto.lohaco.jp^ -||fltuyy.philippemodel.com^ -||flznib.weblio.jp^ -||fmjgtp.dentalspeed.com^ -||fmpjka.moroccanoil.com^ -||fmqidg.letras.com^ -||fmqidg.letras.mus.br^ -||fmqidg.ouvirmusica.com.br^ -||fmssly.pets4homes.co.uk^ -||fmufpo.machicon.jp^ -||fnajvu.framingsuccess.com^ -||fnfhgj.secretsales.com^ -||fngwdl.allheart.com^ -||fnlvhy.wowma.jp^ -||fnmvok.aaaradiatory.cz^ -||fnoqgg.roninwear.com^ -||fokbrd.impo.ch^ -||foomjy.teacollection.com^ -||fpadga.mcruises.ru^ -||fpghll.rossmann.hu^ -||fpptmv.mrmarvis.co.uk^ -||fpvrgm.blackforestdecor.com^ -||fpxewa.ilmeteo.it^ -||fqcqnb.dwr.com^ -||fqppgv.cheapoair.com^ -||fqxnlh.kgcshop.co.kr^ -||fraalb.cebanatural.com^ -||frbdzc.goguynet.jp^ -||frbmdx.fwrd.com^ -||frdoki.acrylicpainting.work^ -||frdoki.athleticshoes.work^ -||frdoki.charcoal.work^ -||frdoki.copperprint.work^ -||frdoki.gamefactory.jp^ -||frdoki.heisei-housewarming.work^ -||frdoki.liquidfoundation.work^ -||frdoki.mineralfoundation.work^ -||frdoki.nailcolor.work^ -||frdoki.selftanning.work^ -||frdoki.studioglass.work^ -||frdoki.woodblock.work^ -||frqbff.hedleyandbennett.com^ -||frztrk.beaute-test.com^ -||frztrk.netmums.com^ -||fsbozl.dillards.com^ -||fsegfy.lepoint.fr^ -||fsqwdj.live-tennis.eu^ -||fsugco.rcn.nl^ -||ftaysn.meinekette.de^ -||ftmsyy.jbl.com.br^ -||ftnnce.autodoc.dk^ -||ftuart.chomedeynissan.com^ -||ftysya.aboutyou.de^ -||ftzets.silkfred.com^ -||fudezz.bolasport.com^ -||fudezz.grid.id^ -||fudezz.gridoto.com^ -||fudezz.kompas.com^ -||fudezz.kompas.tv^ -||fudezz.kompasiana.com^ -||fudezz.motorplus-online.com^ -||fudezz.sonora.id^ -||fufbgj.pazzo.com.tw^ -||fufoir.aif.ru^ -||fuicmy.hana-mail.jp^ -||fuooms.aetrex.com^ -||furlhp.kango.mynavi.jp^ -||fuzrct.gutteridge.com^ -||fuzrxc.aboutyou.nl^ -||fvuitt.alibabuy.com^ -||fvvyjd.jtv.com^ -||fwmqki.eckerle.de^ -||fwpugy.savilerowco.com^ -||fwsgvo.takami-labo.com^ -||fxfezg.bodylab24.de^ -||fxmdjr.mamastar.jp^ -||fxmdjr.saita-puls.com^ -||fxmdjr.yogajournal.jp^ -||fxmkij.jny.com^ -||fxsdex.longvadon.com^ -||fyccsw.eobuwie.com.pl^ -||fyebmf.lifenet-seimei.co.jp^ -||fygild.rueonline.com^ -||fywfld.fjellsport.no^ -||fzeidx.vidaxl.gr^ -||fzexkf.drogaraia.com.br^ -||fzgpzp.opodo.de^ -||fzqjvw.oakandluna.com^ -||gaafbi.fashiondays.hu^ -||gaccwr.dutramaquinas.com.br^ -||gagysn.floward.com^ -||gahhfg.bobo.com.br^ -||garvum.julesb.co.uk^ -||gastdn.wolfandbadger.com^ -||gbmfid.1mg.com^ -||gbncqh.koneko-breeder.com^ -||gbvrgf.hibarai.com^ -||gcoiys.cutsclothing.com^ -||gcowhi.thesalarycalculator.co.uk^ -||gcudsn.tradetested.co.nz^ -||gcwubi.happypancake.fi^ -||gcxiyx.inspireuplift.com^ -||gdfsrd.itslighting.kr^ -||gdphhl.elite-auto.fr^ -||gdqlno.weisshaus.de^ -||gdsngr.chainreactioncycles.com^ -||gecfnc.foresight.jp^ -||gedozw.autoscout24.cz^ -||gefkkw.cyberport.de^ -||gejzgq.gehaltsvergleich.com^ -||getpxq.rivolishop.com^ -||geygin.bonprix.ch^ -||gfeede.theminda.com^ -||gfgcwf.vidaxl.lv^ -||gfgywe.abril.com.br^ -||gflpvq.rufflebutts.com^ -||gfnokk.natro.com^ -||gforat.grahambrown.com^ -||gfqhvj.wunderkarten.de^ -||ggduev.cobone.com^ -||ggduzx.potterybarn.com.kw^ -||ghdlry.greetz.nl^ -||ghifrc.baldai1.lt^ -||ghnwss.fmsstores.gr^ -||ghonnz.columbiasports.co.jp^ -||ghrnbw.avocadostore.de^ -||ghrzlu.skechers.com.tr^ -||ghwkuv.lagirl.co.kr^ -||giojhm.finya.de^ -||givoiq.nichiigakkan-careerplus.jp^ -||gizsyj.thegrommet.com^ -||gjljde.kathmandu.co.nz^ -||gjmovc.epapoutsia.gr^ -||gjndsa.amaro.com^ -||gkcqyo.aquazzura.com^ -||gkfdkf.jdsports.co.uk^ -||gkgygj.verivox.de^ -||gkopqp.coccodrillo.eu^ -||gksqdt.reitmans.com^ -||glbgox.djoser.de^ -||glxdlf.tickets.ua^ -||glzsji.nordman.ru^ -||gmmhlk.techstar.ro^ -||gmpcyv.svinando.com^ -||gmqvql.furnwise.co.uk^ -||gmqyld.jacksonandperkins.com^ -||gmrhzf.wolfermans.com^ -||gmsllx.sorteonline.com.br^ -||gmufag.e1.ru^ -||gmufag.fontanka.ru^ -||gmufag.nn.ru^ -||gmufag.starhit.ru^ -||gmufag.woman.ru^ -||gmxcdm.vestel.com.tr^ -||gnfjvt.radpowerbikes.com^ -||gnfqtz.smartphoto.se^ -||gnkvyn.freeportstore.com^ -||gnnkrz.josbank.com^ -||gnozmx.locasun.fr^ -||gnrmty.eurovaistine.lt^ -||goazlf.mytoys.de^ -||gocuxy.baycrews.jp^ -||gogaej.momastore.jp^ -||gotpiu.regenbogen.com^ -||gozncj.stealthangelsurvival.com^ -||gpiljd.thetiebar.com^ -||gpiyhj.leopalace21.com^ -||gppppq.newcars.com^ -||gpsqnl.delsey.com^ -||gpukye.holabirdsports.com^ -||gpzhcc.lapeyre.fr^ -||gqhfjr.sizeofficial.es^ -||gqjppj.rentcafe.com^ -||gqjrfv.autodoc.fi^ -||gqlaur.currentcatalog.com^ -||gqmuky.kaigonohonne.com^ -||gqqxum.mannys.com.au^ -||gqraqz.e-domizil.de^ -||grnext.crockpot-romania.ro^ -||grofag.hollandandbarrett.ie^ -||grxokm.kirstein.de^ -||grxsaq.tagheuer.com^ -||grxxvx.centerparcs.nl^ -||grzhwl.adiamor.com^ -||gsbygc.clarks.eu^ -||gsftuy.nutripure.fr^ -||gsmqez.xcite.com^ -||gspjom.3balls.com^ -||gspqch.cake.jp^ -||gsyegj.shatura.com^ -||gtgvze.chintai.net^ -||gtzpic.opodo.co.uk^ -||guelvp.1111.com.tw^ -||guhyqz.hawesko.de^ -||guufxr.sdbullion.com^ -||guwuym.barneys.co.jp^ -||gvdqzy.milanoo.com^ -||gvfbpo.diafer.com.br^ -||gvxnff.soulara.com.au^ -||gwguyh.edreams.es^ -||gwizal.yumbutter.com^ -||gwropn.soelu.com^ -||gwupkw.flexform.com.br^ -||gxcaxz.cresus.fr^ -||gxleat.attenir.co.jp^ -||gxusko.pinkpanda.hu^ -||gxyaxf.pixartprinting.be^ -||gxyojn.underarmour.fr^ -||gybles.shopee.ph^ -||gyehtm.thebridge.it^ -||gyqbrs.qvc.it^ -||gyqntn.dekoruma.com^ -||gyvcwd.cdiscount.com^ -||gyvlgl.sportitude.com.au^ -||gyvyoc.dermoeczanem.com^ -||gyvzjp.conradelektronik.dk^ -||gyxtyd.yummicandles.com^ -||gyydua.dakine.com^ -||gzbcuy.mamarella.com^ -||gzjroa.bradsdeals.com^ -||gzlxvg.papy.co.jp^ -||halvwk.jetcost.ie^ -||hambtr.unilife.co.jp^ -||haoexw.buysellonline.jp^ -||hauhws.asgoodasnew.de^ -||hauixd.halistores.com^ -||hauzdj.quellogiusto.it^ -||haxdym.min-breeder.com^ -||hazawl.veke.fi^ -||hbaazk.bukalapak.com^ -||hbahrd.yogibo.jp^ -||hbfpvm.comolib.com^ -||hcdnpe.iareduceri.ro^ -||hchlqx.ghbass.com^ -||hcjarn.parfumsclub.de^ -||hcjpbc.closerweekly.com^ -||hcjpbc.intouchweekly.com^ -||hcjpbc.j-14.com^ -||hcjpbc.lifeandstylemag.com^ -||hcjpbc.mensjournal.com^ -||hcjpbc.muscleandfitness.com^ -||hcjpbc.okmagazine.com^ -||hcjpbc.radaronline.com^ -||hcjpbc.usmagazine.com^ -||hckjsc.kastner-oehler.at^ -||hclspy.gourmetencasa-tcm.com^ -||hcmhqb.radpowerbikes.ca^ -||hcsmec.decathlon.pt^ -||hczvwi.soldejaneiro.com^ -||hdicsm.autoscout24.be^ -||hdnagl.womensecret.com^ -||hdxdhu.zumnorde.de^ -||hearob.klix.ba^ -||hekhnn.turnkeyvr.com^ -||hemblx.vans.cl^ -||hesprh.sony.jp^ -||heuida.shopafrm.com^ -||hevqaz.submarino.com.br^ -||heyaxr.fashiondays.bg^ -||hfmogh.piatradesign.ro^ -||hfmphs.loccitane.com^ -||hfoghh.inter.it^ -||hfolmr.office-com.jp^ -||hfpwcx.supermercadosmas.com^ -||hfvura.noriel.ro^ -||hgprha.mizalle.com^ -||hgzqxe.hanesbrandsinc.jp^ -||hhbxcs.tylko.com^ -||hhwcqa.underarmour.com.br^ -||hidjoi.perfumesclub.com^ -||hijxfm.gaspedaal.nl^ -||hikmxb.botovo.cz^ -||hiknhe.tanabesports.com^ -||hipkqt.contorion.de^ -||hitmse.altinbas.com^ -||hiuplq.diretta.it^ -||hiuplq.eredmenyek.com^ -||hiuplq.flashscore.bg^ -||hiuplq.flashscore.ca^ -||hiuplq.flashscore.co.id^ -||hiuplq.flashscore.co.jp^ -||hiuplq.flashscore.co.ke^ -||hiuplq.flashscore.co.uk^ -||hiuplq.flashscore.com.au^ -||hiuplq.flashscore.com.br^ -||hiuplq.flashscore.com.ng^ -||hiuplq.flashscore.com.tr^ -||hiuplq.flashscore.com^ -||hiuplq.flashscore.de^ -||hiuplq.flashscore.dk^ -||hiuplq.flashscore.gr^ -||hiuplq.flashscore.in^ -||hiuplq.flashscore.nl^ -||hiuplq.flashscore.pl^ -||hiuplq.flashscore.pt^ -||hiuplq.flashscore.ro^ -||hiuplq.flashscore.se^ -||hiuplq.flashscore.sk^ -||hiuplq.flashscore.vn^ -||hiuplq.livescore.in^ -||hiuplq.livesport.cz^ -||hiuplq.liveticker.com^ -||hiuplq.resultados.com^ -||hiuplq.rezultati.com^ -||hiuplq.soccer24.com^ -||hiuplq.soccerstand.com^ -||hiuplq.tennis24.com^ -||hiyksu.karllagerfeldparis.com^ -||hjbgdc.fracora.com^ -||hjgcdi.farmacybeauty.com^ -||hjgkdv.fiverr.com^ -||hjyfhi.misterspex.fi^ -||hksfkh.otomotoprofi.pl^ -||hkskqs.belvilla.fr^ -||hlagkl.vinatis.com^ -||hleouh.feelunique.com^ -||hlhyzh.fann.cz^ -||hlqpie.waves.com^ -||hlreoc.gonuldensevenler.com^ -||hlygsp.modivo.ro^ -||hmakpa.saksoff5th.com^ -||hmcncq.pierreetvacances.com^ -||hmeagu.e87.com^ -||hmeoda.restplatzboerse.ch^ -||hmeqvp.essencemakeup.com^ -||hmfnaj.notino.bg^ -||hmgnjf.autoscout24.it^ -||hmjyvj.glamira.it^ -||hmlvxk.julian-fashion.com^ -||hmoctt.leboutique.com^ -||hmpfja.up-t.jp^ -||hmvbmf.vidaxl.es^ -||hmyjoj.5-fifth.com^ -||hmziwy.yearbookordercenter.com^ -||hnibej.transat.com^ -||hnnuaa.willhaben.at^ -||hnpgjp.cyclemarket.jp^ -||hntnca.petpetgo.com^ -||hnwttl.re-katsu.jp^ -||hnytrd.ssfshop.com^ -||hoojts.demmelhuber.net^ -||hpbrqr.daihatsu.co.jp^ -||hpcduz.shoemall.com^ -||hphtjv.orellfuessli.ch^ -||hplkcs.emp-shop.no^ -||hplrqg.interflora.fr^ -||hpxsci.miista.com^ -||hpymkg.air-austral.com^ -||hqfthz.betterlifeuae.com^ -||hqgkmj.marine-deals.co.nz^ -||hqiwnj.clarins.pt^ -||hqjuww.kolesa-darom.ru^ -||hqwtqa.intelligence-artificielle-school.com^ -||hqxbuy.rugs-direct.com^ -||hrcpql.candymagic.jp^ -||hrnhcu.kapiva.in^ -||hrprwf.proteinocean.com^ -||hruoxg.5vorflug.de^ -||hruyiq.auction.co.kr^ -||hrwgsq.loesdau.de^ -||hsaxca.americatv.com.pe^ -||hslkll.psychic.de^ -||hssyje.theathletesfoot.com.au^ -||hsvrww.plain-me.com^ -||hswgqa.jmsc.co.jp^ -||htcnbx.odkarla.cz^ -||htewng.plesio.bg^ -||hthzoa.notino.hu^ -||htmgrl.jollyroom.no^ -||htqfxh.vuch.cz^ -||hudhno.jdsports.es^ -||huechl.paige.com^ -||hugupq.selency.fr^ -||huqkbq.misterrunning.com^ -||husoxn.investors.com^ -||hutkse.wecandoo.fr^ -||hvpeme.petedge.com^ -||hvrhgt.the-sun.com^ -||hvrhgt.thescottishsun.co.uk^ -||hvrhgt.thesun.co.uk^ -||hvrhgt.thesun.ie^ -||hvrzig.e-domizil.ch^ -||hvteqk.snowleader.com^ -||hvuihu.undiz.com^ -||hvwgbj.wikinger-reisen.de^ -||hvxymx.tui.pl^ -||hwkfzf.meinauto.de^ -||hwnmhi.sunbeltrentals.com^ -||hwwjsi.aboutyou.pl^ -||hwyytk.verabradley.com^ -||hwyyuy.ringcentral.com^ -||hxbgxi.seikousa.com^ -||hxiabp.colins.com.tr^ -||hxmssa.wordans.nl^ -||hxnxxq.tophifi.pl^ -||hycywj.akkushop.de^ -||hyeorg.gmarket.co.kr^ -||hyibby.lampen24.be^ -||hykaqn.dormideo.com^ -||hyxvec.michaelpage.co.jp^ -||hyybul.kaskus.co.id^ -||hzeetn.natalie.mu^ -||hzoouw.s-re.jp^ -||hzuheh.palcloset.jp^ -||hzvsld.fr.filorga.com^ -||hzymxd.nocibe.fr^ -||hzzyhl.jobs.ch^ -||iaalxo.vans.ru^ -||iabdly.hoselink.com.au^ -||iabgvi.usadosbr.com^ -||iatoex.kahve.com^ -||iazwzp.lyst.com^ -||ibbmfq.decameron.com^ -||ibbmly.moneymetals.com^ -||ibkups.rci.com^ -||ibtmla.discovery-expedition.com^ -||icaubf.casamundo.de^ -||icfckg.myft.com.br^ -||icmakp.united-arrows.tw^ -||icoktb.onygo.com^ -||ictrjw.barcastores.com^ -||idbkfy.kango-roo.com^ -||idgptg.esm-computer.de^ -||idianw.warmteservice.nl^ -||idlqzb.puntoscolombia.com^ -||idndlc.kango-oshigoto.jp^ -||idqwqm.kkday.com^ -||ieeowa.marcjacobsbeauty.com^ -||iefiop.raizs.com.br^ -||iegwze.goldcar.es^ -||iepfcy.farmandfleet.com^ -||iesbpm.novasol.dk^ -||ievdpg.humanscale.com^ -||iffalh.y-aoyama.jp^ -||ifkzro.llbean.co.jp^ -||ifnyop.priceline.com^ -||ifqtfo.rugsusa.com^ -||ifxnyp.troquer.com.mx^ -||ifyane.balaan.co.kr^ -||igexlg.weltbild.de^ -||igfjkh.vw.com.tr^ -||igjytl.unice.com^ -||ignchq.kentaku.co.jp^ -||igxqyi.iese.edu^ -||igyswj.sixt.it^ -||ihcamp.ybtour.co.kr^ -||ihcrqa.sonnenklar.tv^ -||ihfwer.aboutyou.com^ -||ihnbqe.shane.co.jp^ -||ihpyig.hometogo.ch^ -||ihtnxu.tannergoods.com^ -||iiajtl.zeit.de^ -||iiqtru.aunworks.jp^ -||iirpzp.novasol.com^ -||ijaabm.bravotv.com^ -||ijaabm.eonline.com^ -||ijaabm.nbcsports.com^ -||ijaabm.rotoworld.com^ -||ijaabm.telemundo.com^ -||ijaabm.telemundodeportes.com^ -||ijaabm.usanetwork.com^ -||ijafud.heathcotes.co.nz^ -||ijhlca.lulus.com^ -||ijifwb.green-acres.fr^ -||ikdxfh.jollyroom.se^ -||ikneio.aquantindia.com^ -||ikvjvw.pharma.mynavi.jp^ -||ilepwo.bonprix.at^ -||ilfmju.right-on.co.jp^ -||ilnfdq.cybozu.co.jp^ -||iltcaf.immobilienscout24.de^ -||ilvqos.lyst.es^ -||imbhdu.housedo.co.jp^ -||imhwzc.blibli.com^ -||imjdmq.emcasa.com^ -||imjsfy.allbeauty.com^ -||imjxso.bristol.nl^ -||indiyo.38-8931.com^ -||inencr.woodhouseclothing.com^ -||inmtuj.jobs.ie^ -||inmuzp.popsockets.com^ -||inpney.warehouse-one.de^ -||inqjal.dickssportinggoods.com^ -||iobyeq.dallmayr-versand.de^ -||ioeczq.juno.co.uk^ -||ioedpk.oneill.com^ -||iofeth.pulsee.it^ -||iokhsx.unionmonthly.jp^ -||iooecb.bergzeit.de^ -||ioovmg.flexicar.es^ -||ioovrf.coen.co.jp^ -||iopqct.drogasil.com.br^ -||iopxiu.wingly.io^ -||ioxqdp.leatherology.com^ -||ipcfgw.pieces.com^ -||ipdmlm.yoriso.com^ -||iphufr.circleline.com^ -||ipixsi.aboutyou.fi^ -||ipkasp.nissan.co.jp^ -||iptmgi.akan.co.kr^ -||iptmih.hifi-regler.de^ -||ipummv.pharao24.de^ -||ipyjxs.chowsangsang.com^ -||iqbjqv.airarabia.com^ -||iqcxki.johosokuhou.com^ -||iqjwrk.crocodile.co.jp^ -||iquirc.motionrc.com^ -||iqyioj.harryanddavid.com^ -||irfiqx.babyneeds.ro^ -||irqewz.vilebrequin.com^ -||irqoqr.industrywest.com^ -||irurng.wondershare.jp^ -||iseuaa.olx.pl^ -||isjoui.cainz.com^ -||isovav.akomeya.jp^ -||itkdlu.equideow.com^ -||itznub.gap.co.uk^ -||iujeaa.menz-style.com^ -||iuryhk.soccer.com^ -||iuwiim.steigenberger.com^ -||ivbxao.roastmarket.de^ -||ivcxpw.kogan.com^ -||ivdguf.elephorm.com^ -||ivegss.autotrack.nl^ -||ivencq.nike.com.hk^ -||ivmwbl.hear.com^ -||ivwkkh.nexity.fr^ -||iwgfdj.iko-yo.net^ -||iwhzhi.packstyle.jp^ -||iwlnpw.claudiepierlot.com^ -||iwmjsk.jw.com.au^ -||iwpneu.eneba.com^ -||ixrzwf.decathlon.be^ -||ixsgoy.getpenta.com^ -||ixtzad.fetch.co.uk^ -||iycifx.coldwatercreek.com^ -||iyvzqt.agabangmall.com^ -||izbwce.secretoutlet.com.br^ -||izegag.shop24direct.de^ -||izremx.dentalplans.com^ -||izwgxw.acordocerto.com.br^ -||jambwe.transsibinfo.com^ -||janzoz.1001pneus.fr^ -||jaomlf.giftmall.co.jp^ -||jatflh.pharmamarket.be^ -||jatpmv.megacolchoes.com.br^ -||javvso.newone-shop.com^ -||jbbljg.autoscout24.bg^ -||jbezdi.ilsole24ore.com^ -||jcaqvl.twinset.com^ -||jcblar.floridarentals.com^ -||jcimgi.bestcuckoo.co.kr^ -||jcplzp.lancel.com^ -||jcpyyh.laredoute.es^ -||jdbjhd.saniweb.nl^ -||jdgtgb.4players.de^ -||jdgtgb.autoguru.de^ -||jdgtgb.buffed.de^ -||jdgtgb.desired.de^ -||jdgtgb.dnn.de^ -||jdgtgb.express.de^ -||jdgtgb.familie.de^ -||jdgtgb.fussballfieber.de^ -||jdgtgb.gamezone.de^ -||jdgtgb.giga.de^ -||jdgtgb.goettinger-tageblatt.de^ -||jdgtgb.haz.de^ -||jdgtgb.hildesheimer-allgemeine.de^ -||jdgtgb.kicker.de^ -||jdgtgb.kino.de^ -||jdgtgb.ksta.de^ -||jdgtgb.ln-online.de^ -||jdgtgb.lvz.de^ -||jdgtgb.mainpost.de^ -||jdgtgb.maz-online.de^ -||jdgtgb.meineorte.com^ -||jdgtgb.mopo.de^ -||jdgtgb.op-marburg.de^ -||jdgtgb.paz-online.de^ -||jdgtgb.pcgames.de^ -||jdgtgb.pcgameshardware.de^ -||jdgtgb.rnz.de^ -||jdgtgb.rundschau-online.de^ -||jdgtgb.spielaffe.de^ -||jdgtgb.sportbuzzer.de^ -||jdgtgb.stylevamp.de^ -||jdgtgb.t-online.de^ -||jdgtgb.tierfans.net^ -||jdgtgb.twitterperlen.de^ -||jdgtgb.unnuetzes.com^ -||jdgtgb.unsere-helden.com^ -||jdgtgb.volksstimme.de^ -||jdgtgb.watson.de^ -||jdgtgb.weser-kurier.de^ -||jdzmqj.thousandtrails.com^ -||jeccmq.wehkamp.nl^ -||jelndb.truereligion.com^ -||jeyttn.snipes.com^ -||jfltzz.riu.com^ -||jfnnzq.quelle.de^ -||jfpltp.eyeforfashion.pl^ -||jfyecc.machineseeker.com^ -||jgzhsu.caterer.com^ -||jhfuhi.b-exit.com^ -||jhnmpm.kiwoko.com^ -||jhprvk.skstoa.com^ -||jhpwrn.laredoute.ch^ -||jhrewn.venezia.pl^ -||jhzwle.ryuryumall.jp^ -||jiciqm.antalyahomes.com^ -||jifjai.instamotion.com^ -||jirnxq.guud.com^ -||jjcypx.vrai.com^ -||jjdciu.justspices.de^ -||jkgeyo.urbanara.de^ -||jkizha.theshoecompany.ca^ -||jknarp.kakaku.com^ -||jkwdsl.videt.ro^ -||jkzoac.headphones.com^ -||jldtlh.fashionnova.com^ -||jlffeu.nadula.com^ -||jlhwxm.spartoo.es^ -||jlnyti.mugo.com.tr^ -||jmcnwr.bricoprive.com^ -||jmvmrv.e-davidwalker.com^ -||jnkqnf.cifraclub.com.br^ -||jnkqnf.cifraclub.com^ -||jnkqnf.palcomp3.com.br^ -||jnzedp.his-j.com^ -||joqawz.snipes.nl^ -||joskgw.sewingmachinesplus.com^ -||jowtkv.vertbaudet.de^ -||jpfufu.xlmoto.co.uk^ -||jpluzr.autoc-one.jp^ -||jprbql.jdsports.fr^ -||jptobh.network.com.tr^ -||jpwfkn.besthotels.es^ -||jpwfrl.mona.de^ -||jqlzwb.bauhaus.fi^ -||jqsouo.gourmetcaree.jp^ -||jraasj.kobo.com^ -||jrfjcn.mebeli.bg^ -||jrucbb.guestreservations.com^ -||jrxrit.europcar.de^ -||jrzgcz.ciociariaoggi.it^ -||jrzgcz.latinaoggi.eu^ -||jshkyh.29cm.co.kr^ -||jsomtq.telescope.com^ -||jspqms.bellevue-ferienhaus.de^ -||jswlpe.modainpelle.com^ -||jswyrt.jp1880.de^ -||jszwxm.hometogo.nl^ -||jtbaoo.belvini.de^ -||jtosgk.123pneus.fr^ -||jttmym.gear4music.com^ -||jtxrou.saucony.com^ -||jtyutq.chaussures.fr^ -||jufhxk.audienhearing.com^ -||jujtcq.amnibus.com^ -||juzqsq.finanzcheck.de^ -||jvbvng.notino.it^ -||jviyau.pelicanwater.com^ -||jvpipr.hometogo.se^ -||jvrwil.gabor.de^ -||jvzlya.benesse.ne.jp^ -||jwcnjv.xlmoto.eu^ -||jweqai.amen.fr^ -||jwlvlo.icaniwill.dk^ -||jwmhqs.fsk.ru^ -||jwtnmo.promovacances.com^ -||jwvazl.mansurgavriel.com^ -||jwxqmj.thediamondstore.co.uk^ -||jxdptu.jouete-online.com^ -||jxeumx.hanaunni.com^ -||jxiwdw.ufret.jp^ -||jxoaza.yourmystar.jp^ -||jxpsrh.casamundo.co.uk^ -||jxsmzz.mytrauringstore.de^ -||jxvrhx.fotokoch.de^ -||jybnuw.mudah.my^ -||jynwlg.veromoda.com^ -||jyuicr.codemonkey.com^ -||jyumzv.dcshoes.com.br^ -||jyupgi.eurostarshotels.co.uk^ -||jyyqzt.sledstore.se^ -||jyyzvb.careerindex.jp^ -||jzauch.motostorm.it^ -||jzgfhr.nordicnest.com^ -||jzoxch.menswearhouse.com^ -||jzprtb.1stdibs.com^ -||jzqfac.bestsecret.ch^ -||kaacsi.belvilla.nl^ -||kabokc.webuy.com^ -||kaebyy.autouncle.se^ -||kalwub.mizuho-re.co.jp^ -||katylz.lojaspompeia.com^ -||kbcmdi.florsheim.com.au^ -||kbighx.absolventa.de^ -||kbviuj.enoteca.co.jp^ -||kbvxbw.bugatti-fashion.com^ -||kcgser.azialo.com^ -||kcqoej.roborock.com^ -||kcuzgn.fnac.be^ -||kcvwuw.iryouworker.com^ -||kcykhs.mrblue.com^ -||kdarje.garten-und-freizeit.de^ -||kdhmzv.oculosmeninaflor.com.br^ -||kdlsdk.neverfullydressed.co.uk^ -||kdpxgr.travellink.no^ -||kdqytm.vipre.com^ -||kdtbpt.brogsitter.de^ -||kebpln.darngoodyarn.com^ -||keoofp.gulfnews.com^ -||keqglr.panvel.com^ -||kftfhp.furusato-tax.jp^ -||kgbokc.masrefacciones.mx^ -||kgmmfk.galcomi.jp^ -||kgqxzw.blue-tomato.com^ -||kgqzgj.rougegorge.com^ -||khcdhu.saraschool.net^ -||khfiwx.sephora.com.br^ -||khfyas.bellybandit.com^ -||khgtwn.reifendirekt.de^ -||khimxz.shoesforcrews.com^ -||khiurx.tigerdirect.com^ -||kiddbs.baby-calendar.jp^ -||kierwg.enzzo.gr^ -||kighmh.nelson.nl^ -||kiqwal.autoscout24.es^ -||kiqwil.l-m.co.jp^ -||kirsrn.runway-webstore.com^ -||kjdfho.eidaihouse.com^ -||kjjuuy.icaniwill.fi^ -||kjmaoi.babor.com^ -||kjxmcn.eset.com^ -||kjxztu.biz-journal.jp^ -||kkcmcp.printemps.com^ -||kksuce.hankoya.com^ -||kkznoe.autouncle.ch^ -||kkznoe.autouncle.co.uk^ -||kkznoe.autouncle.it^ -||kkzpde.aboutyou.lt^ -||klhxyi.costakreuzfahrten.ch^ -||klktmc.parler.co.jp^ -||klqlmg.mitchellandness.com^ -||klwuhp.daehyuninside.com^ -||kmqghr.bristolshop.be^ -||kmqhmn.helen-marlen.com^ -||knapia.weightwatchers.com^ -||knfjhy.echo.msk.ru^ -||knjybs.luminis-films.com^ -||knlqeu.jewlr.com^ -||knopnf.asambeauty.com^ -||knorzj.wearfigs.com^ -||knymhv.ariat.com^ -||knzmrw.infojobs.net^ -||knzqjr.pult.ru^ -||koifrz.tvc-mall.com^ -||koowiu.obchod-vtp.cz^ -||kouopt.calvinklein.com.br^ -||kpbzar.warbyparker.com^ -||kpcyic.sportisimo.cz^ -||kpfvaq.schuhe.de^ -||kqchxa.denizbutik.com^ -||kqdqrj.traktorpool.de^ -||kqhckf.outfits24.de^ -||kqkcoq.vidaxl.fr^ -||kqkydl.postel-deluxe.ru^ -||kqscrl.bonprix.nl^ -||kqvtez.watt24.com^ -||kqzbph.zerohedge.com^ -||krgoad.mauboussin.fr^ -||krskux.newhaircaps.com.br^ -||kszpsc.waschbaer.ch^ -||kszuxn.snidel.com^ -||ktdcoy.lyst.it^ -||kthjuw.lyst.com.au^ -||ktoahv.ivet.rs^ -||ktocpw.silabg.com^ -||ktskxm.smartphoto.nl^ -||kuaifr.camicado.com.br^ -||kukckk.sagefinds.com^ -||kuusay.yalispor.com.tr^ -||kvfumh.fairwaystyles.com^ -||kvfunf.factorydirect.ca^ -||kvnkjd.kaigoshoku.mynavi.jp^ -||kvskic.jadore-jun.jp^ -||kwalnc.vans.co.kr^ -||kwbpge.jra-van.jp^ -||kwijfh.proactiv.com^ -||kwitvg.letudiant.fr^ -||kwqpix.ravenna.gr^ -||kwvbhj.jcpenney.com^ -||kwwgmv.tennistown.de^ -||kwwvxn.uniqlo.com^ -||kxbqbq.amicafarmacia.com^ -||kxkvpn.josera.de^ -||kxmrwu.ibarakinews.jp^ -||kxtqgp.mistermenuiserie.com^ -||kydcwp.landwirt.com^ -||kygelf.ludwig-von-kapff.de^ -||kyjoyk.modoza.com^ -||kyszhn.qvc.jp^ -||kyvpze.vidaxl.co.uk^ -||kzhesi.corcoran.com^ -||kzmual.superga.com^ -||kzsicw.chip.de^ -||kzsicw.cinema.de^ -||kzsicw.fitforfun.de^ -||kzsicw.focus.de^ -||kzsicw.tvspielfilm.de^ -||kzsicw.tvtoday.de^ -||kzsisc.3.dk^ -||kzutbh.takeappeal.com^ -||ladghy.jcb.co.jp^ -||ladxxr.sonovente.com^ -||lapkhy.aventon.com^ -||lapwkd.feelgood-shop.com^ -||lbgfqn.onward.co.jp^ -||lbgrwm.zolta.pl^ -||lbnrrh.autouncle.dk^ -||lcdsyj.daily.co.jp^ -||lcefua.timberland.ru^ -||lcodff.uta-net.com^ -||lcsopa.onamae.com^ -||lctfgw.evernew.ca^ -||lcwodl.bleulibellule.com^ -||lcztnn.asics-trading.co.jp^ -||ldckmk.divarese.com.tr^ -||ldgxsr.locasun-vp.fr^ -||ldhteg.mooihorloge.nl^ -||ldinry.drinks.ch^ -||ldorlv.seiban.co.jp^ -||ldqtdd.peing.net^ -||ldvalc.manzara.cz^ -||ldxpmz.people.com^ -||lebtpm.co-medical.com^ -||lekfso.hitohana.tokyo^ -||lenpmh.francoisesaget.com^ -||lexvek.gap.ae^ -||leynqj.newport.se^ -||lezntf.heydudeshoesusa.com^ -||lfapbe.quiksilver.co.jp^ -||lfbowp.talisa.com^ -||lfercl.tcb-beauty.net^ -||lfmhcb.sefamerve.com^ -||lfpfpl.andar.co.kr^ -||lfuzec.bglen.net^ -||lfxdqs.mamasandpapas.ae^ -||lfyqsi.erborian.com^ -||lgbdxo.azazie.com^ -||lgylib.dg-home.ru^ -||lgzkzp.bauhaus.at^ -||lhaqtn.lyst.ca^ -||lhcivu.dekbed-discounter.nl^ -||lhdidz.successories.com^ -||lhevhb.hjgreek.com^ -||lhewdj.fnac.pt^ -||lhlext.e-aircon.jp^ -||lhrzel.enterprise.com.tr^ -||lhzulh.tribeamrapali.com^ -||liecso.e-himart.co.kr^ -||ligxyv.hackers.co.kr^ -||liosix.mtvuutiset.fi^ -||ljbpfe.notino.es^ -||ljqpvo.hardrock.com^ -||ljyipz.nugnes1920.com^ -||ljzxdu.largus.fr^ -||lkhrtf.beveragefactory.com^ -||lkluoz.saraceniwines.com^ -||lknqfn.furla.com^ -||lkvkgk.levis.com.tr^ -||llkdiu.chacos.com^ -||llqutk.skechers.com.au^ -||llteig.framesdirect.com^ -||lltmch.zurifurniture.com^ -||llwoyl.mirraw.com^ -||lmavci.eloquii.com^ -||lmeniu.timberland.com.au^ -||lmgenf.ludwigbeck.de^ -||lmgvur.scbt.com^ -||lmldvr.centauro.net^ -||lmnqof.littletoncoin.com^ -||lmorsb.highstreettv.com^ -||lnjiwo.manzara.sk^ -||lnntnt.hsastore.com^ -||lntvby.banggood.com^ -||lnxfgm.party-calendar.net^ -||lodlww.carcon.co.jp^ -||loobmf.hardloop.fr^ -||lowgxl.yokumoku.jp^ -||lozjnq.stateandliberty.com^ -||lpbhnv.nbcbayarea.com^ -||lpbhnv.nbcboston.com^ -||lpbhnv.nbcchicago.com^ -||lpbhnv.nbcconnecticut.com^ -||lpbhnv.nbcdfw.com^ -||lpbhnv.nbclosangeles.com^ -||lpbhnv.nbcmiami.com^ -||lpbhnv.nbcnewyork.com^ -||lpbhnv.nbcphiladelphia.com^ -||lpbhnv.nbcsandiego.com^ -||lpbhnv.nbcwashington.com^ -||lpbhnv.necn.com^ -||lpbhnv.telemundo47.com^ -||lpbhnv.telemundo49.com^ -||lpbhnv.telemundo52.com^ -||lpbhnv.telemundonuevainglaterra.com^ -||lpbhnv.telemundopr.com^ -||lpbhnv.telemundosanantonio.com^ -||lpbhnv.telemundowashingtondc.com^ -||lpdbca.internetaptieka.lv^ -||lpfirw.kooding.com^ -||lpfsex.fabiboutique.com^ -||lpipua.kcar.com^ -||lpuqtu.propertyfinder.bh^ -||lpygsq.dorita.se^ -||lpyxrp.thewodlife.com.au^ -||lpzxed.em.com.br^ -||lpzxed.superesportes.com.br^ -||lpzxed.uai.com.br^ -||lqbinr.locker-room.co.kr^ -||lqdeyv.thepopcornfactory.com^ -||lqklml.amikado.com^ -||lqopyc.beermachines.ru^ -||lqpzdi.coppel.com^ -||lqsowt.mona-mode.fr^ -||lqvfkk.sosyopix.com^ -||lqxjrk.fbs.com^ -||lravwm.spa.cz^ -||lrdnuu.shopee.co.th^ -||lrdxki.hakutou-shop.com^ -||lrehgz.orix.co.jp^ -||lreust.joshinweb.jp^ -||lrfctq.wordans.co.uk^ -||lrhyty.weeronline.nl^ -||lrjnbf.sabon.co.jp^ -||lsixuz.agrifournitures.fr^ -||lslynl.chiashake.cz^ -||lspfuw.siwonschool.com^ -||lswfmx.stuartweitzman.com^ -||ltcmak.alodokter.com^ -||ltdczq.myhome.nifty.com^ -||ltecrf.dhgate.com^ -||lthbdc.become.co.jp^ -||lthdzu.sercotelhoteles.com^ -||lthzhy.elv.com^ -||ltnico.fnac.com^ -||ltqpej.vidaxl.ie^ -||ltripg.marti.mx^ -||ltsveh.wetteronline.at^ -||ltsveh.wetteronline.ch^ -||ltsveh.wetteronline.de^ -||ltycia.ba-sh.com^ -||ltzpth.sephora.fr^ -||luaqlg.blissy.com^ -||luegnh.sneakercage.gr^ -||lujaqg.e-blooming.com^ -||lujcig.modaforyou.pl^ -||lumtjt.plumbingonline.ca^ -||luptbq.lampsplus.com^ -||luumhi.whatonearthcatalog.com^ -||luuonz.motoblouz.com^ -||luwzem.skala.nl^ -||luzfpa.dltviaggi.it^ -||lvidqa.unisportstore.de^ -||lvivsu.peterhahn.de^ -||lvsats.gardner-white.com^ -||lwkvkd.maison-objet.com^ -||lwmnyf.modivo.hu^ -||lwozzk.legacy.com^ -||lwusnt.yogibo.kr^ -||lxiaho.lesfurets.com^ -||lxmnrl.eobuv.sk^ -||lxoemc.buonissimo.it^ -||lxoemc.dilei.it^ -||lxoemc.libero.it^ -||lxoemc.paginebianche.it^ -||lxoemc.siviaggia.it^ -||lxoemc.tuttocitta.it^ -||lxsway.alltforforaldrar.se^ -||lxsway.blogg.se^ -||lxsway.brollopstorget.se^ -||lxsway.familjeliv.se^ -||lxsway.kwiss.me^ -||lxsway.modette.se^ -||lxsway.nyheter24.se^ -||lxsway.tyda.se^ -||lxswqh.oyorooms.com^ -||lxwasy.tatragarden.ua^ -||lxwysd.hirmer.de^ -||lxztgb.musee-pla.com^ -||lyegyo.bluenile.com^ -||lyfrir.purehockey.com^ -||lynjbq.sizeofficial.nl^ -||lyxfra.shopee.com.my^ -||lyypsy.unisportstore.se^ -||lzcwbt.schuhcenter.de^ -||lziqkx.countryoutfitter.com^ -||lzrhay.farmaciasoccavo.it^ -||lzrljv.tradera.com^ -||lzvwxy.hometogo.pl^ -||lzwxzz.chintaistyle.jp^ -||maaiuh.tomorrowland.co.jp^ -||majdmw.gigasport.at^ -||makbti.bandofboats.com^ -||market.bellelily.com^ -||matytt.tone.ne.jp^ -||maxtat.55truck.com^ -||mbbhij.mi-home.pl^ -||mbelia.underarmour.co.uk^ -||mbeoxt.perfumesclub.pt^ -||mcacry.trendhim.it^ -||mccntp.raen.com^ -||mccylg.rutlandcycling.com^ -||mchtna.fashionplus.co.kr^ -||mckbpe.united-arrows.co.jp^ -||mckiey.thun.com^ -||mczpco.darty.com^ -||mczqzk.yves-rocher.hu^ -||mdokua.shiseido.co.jp^ -||mdugiz.jdsports.de^ -||mdxhon.allhomes.com.au^ -||mennoc.mezlan.com^ -||meypeg.videdressing.com^ -||mfamcw.sodexobeneficios.com.br^ -||mfmkkv.sorgenia.it^ -||mfxtlm.mobiup.ro^ -||mgbfxr.formongde.com^ -||mgbivj.hintaopas.fi^ -||mgclyt.costacruceros.es^ -||mgcnid.aboutyou.cz^ -||mgdmqr.parfium.bg^ -||mgefhu.seiska.fi^ -||mgefhu.suomi24.fi^ -||mggakg.littleblack.co.kr^ -||mgixgn.wittchen.com^ -||mgptul.finson.com^ -||mhauev.glasses.com^ -||mhidwg.elgiganten.se^ -||mhizzr.eurorelais.nl^ -||mhmzhc.trysnow.com^ -||mhnpec.nimaxi-online.com^ -||mhrkxi.thetrybe.com.au^ -||mhwbhn.tohapi.fr^ -||miexgq.forevernew.co.nz^ -||miqeuu.timberland.it^ -||mirvso.boggi.com^ -||mixxuo.sportys.gr^ -||mjfunt.bibi.com^ -||mjjvkx.monoprice.com^ -||mjnpya.marktplaats.nl^ -||mjsnvi.extraspace.com^ -||mjutjc.telstarsurf.de^ -||mjwnxc.julbie.com^ -||mjzkws.marcovasco.fr^ -||mkltfc.atgp.jp^ -||mkmkew.hometogo.no^ -||mkmree.dmm.co.jp^ -||mkolqj.ozonee.pl^ -||mksogv.oneclickdrive.com^ -||mkwntx.pinkpanda.de^ -||mkzpqu.sungboon.com^ -||mkztpk.invictastores.com^ -||mlfolu.nabava.net^ -||mlgubn.autouncle.de^ -||mlhtmc.macnificos.com^ -||mlkblr.la-becanerie.com^ -||mlkklg.suncamp.de^ -||mlmswk.janpara.co.jp^ -||mlqzau.koffer.com^ -||mluszz.eyelashgarage.jp^ -||mmobsz.edenviaggi.it^ -||mmulsx.comet.it^ -||mmwlwm.autoscout24.pl^ -||mnbyto.goo-net.com^ -||mnfqyj.corello.com.br^ -||mnrddc.journeys.com^ -||mnwljk.ibagy.com.br^ -||momyjw.jobninja.com^ -||mosvnx.livup.com.br^ -||mowvra.idlookmall.com^ -||mpglie.apartmentguide.com^ -||mpgtft.zoobeauval.com^ -||mpjtif.viabovag.nl^ -||mprkxf.teebooks.com^ -||mqesfg.bpm-power.com^ -||mqhaxf.keds.com^ -||mqhuzk.soffadirekt.se^ -||mqjpkx.lulli-sur-la-toile.com^ -||mqjsdu.eataly.net^ -||mqldrm.lgcity.ru^ -||mqojih.taschenkaufhaus.de^ -||mqsicr.smiggle.co.uk^ -||mquwyx.engelhorn.de^ -||mqvyob.vidaxl.fi^ -||mqwqas.marketbio.pl^ -||mqzoid.vintorte.com^ -||mrksmm.yumegazai.com^ -||msafoy.eyebuydirect.com^ -||mseeru.faz.net^ -||msfvwi.sieuthiyte.com.vn^ -||msioay.backcountry.com^ -||mtbflj.elementaree.ru^ -||mtcvyv.karakartal.com^ -||mtcvyv.sporx.com^ -||mtcvyv.superfb.com^ -||mtcvyv.webaslan.com^ -||mtkure.gazin.com.br^ -||mtoxtg.tezenis.com^ -||mtuqnl.roomys-webstore.jp^ -||mtvgxt.partirpascher.com^ -||mtvnbq.infopraca.pl^ -||mtyciy.solebox.com^ -||mugapi.lazzarionline.com^ -||muhttw.spotlightstores.com^ -||mujjrh.stylenanda.com^ -||mupmos.levis.com.au^ -||muqtti.motoin.de^ -||muwyib.lettuce.co.jp^ -||mvjkbj.2-carat.net^ -||mvjkbj.inazumanews2.com^ -||mwbhkv.plasico.bg^ -||mwbilx.pisos.com^ -||mwxema.galerieslafayette.com^ -||mxdzxd.mister-auto.com^ -||mxhunv.kurz-mal-weg.de^ -||mxmwqo.biosante.com.br^ -||mxpdsu.bhv.fr^ -||mxsvjc.hackers.ac^ -||myakiu.trendhim.ch^ -||mybjjg.vlan.be^ -||myxuak.mir-kubikov.ru^ -||mzldzb.crocs.pl^ -||mzwkss.chiccousa.com^ -||nafmxc.1083.fr^ -||namcah.alipearlhair.com^ -||navfja.answear.hu^ -||nbfopy.jjshouse.com^ -||nbizzi.store.ferrari.com^ -||nbohze.thenorthface.ru^ -||nbrngg.rinkaiseminar.co.jp^ -||nbyggk.jocee.jp^ -||ncbabz.hometogo.co.uk^ -||ncvsbz.bonds.com.au^ -||ncxxek.donedeal.ie^ -||nczils.pristineauction.com^ -||ndcywq.ullapopken.fr^ -||ndeooc.bubbleroom.no^ -||ndgrlo.visiondirect.com.au^ -||ndroyp.gettingpersonal.co.uk^ -||neaaom.ytn.co.kr^ -||nekgtz.bluestoneperennials.com^ -||neowiv.brumbrum.it^ -||nerldv.ullapopken.pl^ -||nffxqi.jorgebischoff.com.br^ -||nflxjp.residences-immobilier.com^ -||nfmvsq.giuseppezanotti.com^ -||nfptar.giordanoshop.com^ -||nfudeh.jadebag.co.kr^ -||ngazee.novostroy-m.ru^ -||ngcbjq.frecuento.com^ -||ngghll.me.co.kr^ -||ngueja.2ememain.be^ -||ngyxtr.ripcurl.com^ -||nhdhoj.ibs.it^ -||nhkoze.saneibd.com^ -||nhlvvh.sawadee.nl^ -||nhnazx.outdoorlook.co.uk^ -||nhqkbl.semilac.pl^ -||nirdjz.revolveclothing.com.au^ -||njnlih.realitatea.net^ -||njorya.aosom.de^ -||njtwub.schneider.de^ -||njxnsb.paodeacucar.com^ -||nkarmh.jmbullion.com^ -||nkothz.duskin.jp^ -||nkqxyn.misterspex.co.uk^ -||nkwvwb.fluevog.com^ -||nlbukc.babyworld.se^ -||nlgzhd.yoox.com^ -||nljjem.honeys-onlineshop.com^ -||nltihf.fashiondays.ro^ -||nltzqx.autodoc.co.uk^ -||nlvnht.miror.jp^ -||nmiodk.promiflash.de^ -||nnhxjd.zielonalazienka.pl^ -||nnivvr.zimmo.be^ -||nnkeoi.timarco.com^ -||nnkkxb.nuts.com^ -||nnobek.waschbaer.de^ -||nnofmj.studiof.com.co^ -||nnqyed.laredoute.be^ -||nntgna.dmm.com^ -||nnvoia.closetworld.com^ -||nogxjk.dackonline.se^ -||nohaxn.damattween.com^ -||nosjew.glamira.de^ -||npczil.maxandco.com^ -||npfopn.mix.tokyo^ -||nplden.legionathletics.com^ -||nprkvj.mall.sk^ -||npsopu.clearly.ca^ -||nptkpt.vangraaf.com^ -||npvbjv.yourroom.ru^ -||nqacsh.boosted.dk^ -||nqcbgz.cocopanda.se^ -||nqgmcp.chairish.com^ -||nqozgp.botland.com.pl^ -||nqxnvy.levi.com.hk^ -||nrjcur.pomelofashion.com^ -||nrquff.supurgemarket.com^ -||nrrgyk.hair-gallery.it^ -||nrstxi.envieshoes.gr^ -||nrtubi.sobrico.com^ -||nsedgj.bonprix.de^ -||nstclj.rubylane.com^ -||nthldc.europcar.co.uk^ -||ntopcd.underarmour.nl^ -||ntphyl.milan-jeunesse.com^ -||nturnm.unisport.dk^ -||nucgsx.indestructibleshoes.com^ -||nukktn.dorko.hu^ -||nuquds.citizenwatch.com^ -||nuyibu.pieper.de^ -||nuyujp.barstoolsports.com^ -||nvpdaa.brightcellars.com^ -||nvumcv.standoil.kr^ -||nvxlag.liligo.fr^ -||nwajdf.zakzak.co.jp^ -||nwbmvq.jockey.com^ -||nwfkjx.gadventures.com^ -||nwvupz.cljoias.com.br^ -||nwwucx.palemoba.com^ -||nxhqso.nordicnest.se^ -||nxnszu.ettoday.net^ -||nxovay.fo-online.jp^ -||nxwniq.aboutyou.ie^ -||nycwfz.kigili.com^ -||nyrxcy.teslaweld.com^ -||nytjyf.dholic.co.jp^ -||nyuyiw.linea-storia.co.kr^ -||nyvknh.compracerta.com.br^ -||nzmkzl.mytheresa.com^ -||nzqrfa.hushpuppies.com^ -||nzueib.dice.com^ -||nzuwat.miliboo.it^ -||nzzvvf.goldengoose.com^ -||oabnmx.jewelryexchange.com^ -||oaizwm.zox.la^ -||obfrok.partyking.no^ -||obhnrw.furniturebox.se^ -||obhxvb.tmktools.ru^ -||obnrap.neimanmarcus.com^ -||obooom.robinmaybag.com^ -||obqclg.dadway-onlineshop.com^ -||obqvss.debameubelen.be^ -||obrqts.hudforeclosed.com^ -||obtfhl.bellemaison.jp^ -||ocmxbu.hanatour.com^ -||ocpgll.bannerbuzz.ca^ -||ocwlhv.ecid.com.br^ -||odepcf.modetour.com^ -||odjdpy.jobware.de^ -||odkvrg.pedrodelhierro.com^ -||oebarc.ekosport.at^ -||oedbml.collage-shop.jp^ -||oedlmz.underarmour.it^ -||oedxix.lolipop.jp^ -||oesfco.glamira.pl^ -||oesonx.10000recipe.com^ -||oessbi.yves-rocher.ru^ -||oesxlp.atlasformen.co.uk^ -||oexcmv.concent.co.jp^ -||ofkqiy.knowfashionstyle.com^ -||ofqkbk.proclipusa.com^ -||ofvosb.jumbo.com.tr^ -||ofwdvh.suntransfers.com^ -||ogcsvq.sourcenext.com^ -||ognunn.chavesnamao.com.br^ -||ogpdwe.livin24.com^ -||ogwzby.peek-und-cloppenburg.de^ -||ogzucf.all4golf.de^ -||ohjrxj.personalizationmall.com^ -||ohrdit.kfzteile24.de^ -||ohsyat.jdsports.it^ -||ohtdbl.mister-auto.es^ -||oicmda.ugyismegveszel.hu^ -||oikckw.scarosso.com^ -||oiodyx.baldur-garten.de^ -||oitihv.drinks.de^ -||oiwnrl.theory.co.jp^ -||ojlsxt.pigment.co.kr^ -||ojmxro.yatsan.com^ -||ojufuk.vincecamuto.com^ -||ojvxtz.junonline.jp^ -||okhwxl.rnainc.jp^ -||oksiqv.styletread.com.au^ -||oktagv.immobilienscout24.at^ -||olhqou.realsimple.com^ -||olklgn.jh-profishop.de^ -||olpmni.acer.com^ -||olqsty.izipizi.com^ -||olroyk.ardene.com^ -||olspyo.laredoute.co.uk^ -||olwqxg.europcar.it^ -||olziko.maxmara.com^ -||omcshw.pharmasi.it^ -||omfoom.thepoolfactory.com^ -||omftdc.morijuku.com^ -||omjtca.emlakjet.com^ -||omvzcq.vidaxl.be^ -||omxodt.shredoptics.com^ -||oncahh.boxlunch.com^ -||onghfx.revolve.com^ -||onjjbn.koffiemarkt.be^ -||onjmsj.sumai-surfin.com^ -||onoztg.ultimate-guitar.com^ -||ontxgr.hofer-reisen.at^ -||oocrzh.byojet.com^ -||ooqbml.tac-school.co.jp^ -||oossod.potterybarn.ae^ -||opbdps.bonprix.fi^ -||opummf.himiwaybike.com^ -||oqbimz.aviasales.ru^ -||oqgrax.sissy-boy.com^ -||oqidne.itaka.pl^ -||ordbng.extra.com.br^ -||ordpmx.victorianplumbing.co.uk^ -||orlqtz.lampenwelt.ch^ -||orpggb.esprit.at^ -||orsmfg.notino.de^ -||ortkrq.damyller.com.br^ -||oscnjc.035000.com^ -||osczsk.lampeetlumiere.be^ -||osezny.intheswim.com^ -||oshlzg.takealot.com^ -||oshowm.allureville.com^ -||osjpyw.dico.com.mx^ -||osnksi.czytam.pl^ -||osuwzo.oyunfor.com^ -||osvdtm.theshopyohjiyamamoto.jp^ -||othisf.tagomago.pl^ -||otisxx.sullyn.com^ -||otkhyc.bueromarkt-ag.de^ -||otrnww.pipingrock.com^ -||oturvy.sanitairwinkel.nl^ -||otuumq.manyavar.com^ -||oufrqs.kunduz.com^ -||oufuqh.kant.ru^ -||oulpli.bettybarclay.com^ -||ounwut.thehappyplanner.com^ -||out.velpa.pl^ -||ouvjnb.westernbikeworks.com^ -||ovrsso.gemo.fr^ -||owpysc.lampenundleuchten.at^ -||owqbsl.kuhl.com^ -||owtjzn.so-nice.com.tw^ -||owzmdz.glamira.co.uk^ -||oxbskt.autotrader.com.au^ -||oxdejn.lavprisel.dk^ -||oxtrmw.marinarinaldi.com^ -||oyaswl.manor.ch^ -||oylyaz.mrkoll.se^ -||oyotii.sportokay.com^ -||oyoxyc.josefsteiner.at^ -||oyssqe.easyvoyage.com^ -||oyyqan.hejoscar.dk^ -||ozdoir.meundies.com^ -||ozkkuy.fabianafilippi.com^ -||oznlro.sanity.com.au^ -||ozvlyz.justmusic.de^ -||pabgey.siepomaga.pl^ -||paeppk.spar-mit.com^ -||pakdru.altrarunning.com^ -||papemz.rcwilley.com^ -||paqqlk.motatos.de^ -||pardko.pricerunner.com^ -||paupud.meillandrichardier.com^ -||payqjd.subito.it^ -||pbecrm.aquanet.ru^ -||pbvnwd.moongori.com^ -||pbxdny.angrybeards.cz^ -||pcdstm.petbarn.com.au^ -||pciidk.shopee.vn^ -||pciokm.glamuse.com^ -||pcykgc.onetravel.com^ -||pdftfe.thekooples.com^ -||pdlavr.erwinmueller.com^ -||pdsgaj.piquadro.com^ -||pduwvp.chanti.dk^ -||pdzutf.sftworks.jp^ -||pehkmy.edreams.pt^ -||pemskb.unitedcinemas.jp^ -||pepleb.ekosport.de^ -||peqvwk.notino.at^ -||pesaea.autoesa.cz^ -||pevftg.shopee.sg^ -||peyqvn.falke.com^ -||pfltjr.essentialnutrition.com.br^ -||pfuyhr.schutz.com.br^ -||pgkxhq.jamesallen.com^ -||phbnix.rocelec.com^ -||phcnvk.schalke04.de^ -||phczhg.johnjohndenim.com.br^ -||phgnxd.nike.com.br^ -||phhjak.frame-store.com^ -||phinnk.airtrip.jp^ -||phvylw.beurer-shop.de^ -||pibhjs.dongsuhfurniture.co.kr^ -||piddme.buyma.com^ -||pihxmq.98doci.com^ -||pinptg.milleni.com.tr^ -||pionmj.companyshop24.de^ -||pjbncv.ode.co.kr^ -||pjgaez.autouncle.at^ -||pjmryh.zapatos.es^ -||pjtshn.floraprima.de^ -||pjtxmd.epool.ru^ -||pkdimy.shoptime.com.br^ -||pkhevp.suplinx.com^ -||pkiawn.konvy.com^ -||pkimbc.bestsecret.com^ -||pkmvjx.my-store.ch^ -||pkqfky.direct-abris.com^ -||pktbag.flighthub.com^ -||pktytp.membershop.lv^ -||plbcsd.vidaxl.se^ -||plczro.21dressroom.com^ -||pljuin.lensmode.com^ -||plotzn.apmex.com^ -||plwfwc.teknozone.it^ -||plyizb.latour-lith.nl^ -||pmazpg.legalzoom.com^ -||pnaagn.haekplanter-heijnen.dk^ -||pnhesw.jtb.co.jp^ -||pnnpan.cv-library.co.uk^ -||pnovfl.karaca.com^ -||pntbrs.reflectwindow.com^ -||pnvnpy.scullyandscully.com^ -||polhvf.bootbarn.com^ -||porqhi.topictravel.nl^ -||ppgdyq.ideenmitherz.de^ -||ppgqvz.bigmotoringworld.co.uk^ -||pplpiq.pricerunner.se^ -||ppmakl.oscarcalcados.com.br^ -||ppssav.formal-message.com^ -||ppyflc.uniformnext.com^ -||pqcixi.sparco-official.com^ -||pqdhda.bluepops.co.kr^ -||pqghqs.eastcl.com^ -||pqiicj.misterspex.se^ -||pqlcpm.kindoh.co.kr^ -||pqlmae.lamaisonduchocolat.co.jp^ -||pqrede.fiatprofessional.com^ -||prhhqo.vintagevoyage.ru^ -||prkvlr.camper.com^ -||prnzxf.glamira.se^ -||prvizg.shurgard.be^ -||przucu.elkjop.no^ -||psbiaf.converse.com^ -||psfcnf.ochsnersport.ch^ -||pspqlm.rndsystems.com^ -||psqsjg.coach.com^ -||pswgpb.seshop.com^ -||ptlpel.tui.at^ -||ptmcos.beginning.kr^ -||ptrenx.vidaxl.com.au^ -||puiwrs.misterspex.de^ -||pumlmb.netcologne.de^ -||putphc.zuhre.com.tr^ -||pvfbav.sportler.com^ -||pvoheg.bubbleroom.se^ -||pvrugd.nieruchomosci-online.pl^ -||pwtftm.shingaku.mynavi.jp^ -||pxayti.hair-express.de^ -||pxbnou.ig.com.br^ -||pxgpnp.angara.com^ -||pxjkbj.bostonproper.com^ -||pxmzlk.redfin.com^ -||pxvlcc.crocs.fr^ -||pxxhbz.apamanshop.com^ -||pydnsv.ejobs.ro^ -||pyouad.autonvaraosat24.fi^ -||pyqfjx.medwing.com^ -||pyrkxp.novafotograf.com^ -||pytxsn.najlacnejsisport.sk^ -||pywiia.lfmall.co.kr^ -||pyxjkx.springjapan.com^ -||pzajdh.guicheweb.com.br^ -||pzxhyp.aeropostale.com^ -||qaghzg.planteon.pl^ -||qahxwy.goosecreekcandle.com^ -||qamnyl.bever.nl^ -||qasqhi.notino.pt^ -||qbermy.daxon.fr^ -||qblkeu.vamvelosiped.ru^ -||qbwkux.home24.at^ -||qcblzn.pinkpanda.it^ -||qceyjl.cellularoutfitter.com^ -||qcgtoz.cwjobs.co.uk^ -||qcmxuy.hardloop.de^ -||qcppad.merrell.com^ -||qdicel.marymaxim.com^ -||qdkaky.rikilovesriki.com^ -||qdnxys.cotswoldco.com^ -||qdqdfp.toitsutest-koukou.com^ -||qdvavs.trademax.se^ -||qedlai.restplatzboerse.com^ -||qejrwy.lazienkaplus.pl^ -||qerpks.rollei.de^ -||qexbcx.olx.kz^ -||qezfer.motelamiio.com^ -||qfbles.elefant.ro^ -||qfcxpa.dreamcloudsleep.com^ -||qfkmyf.clarins.com^ -||qflwqw.opodo.fr^ -||qfoiss.lendingtree.com^ -||qftpgz.socarrao.com.br^ -||qfvwfi.convenii.com^ -||qfwfbo.decofurnsa.co.za^ -||qgbnjd.coches.net^ -||qgcfcd.cairo.de^ -||qgmikp.fleurdumal.com^ -||qgumjp.asiae.co.kr^ -||qgumjp.joins.com^ -||qgumjp.mediatoday.co.kr^ -||qgutin.crocs.co.kr^ -||qifbmk.rodinnebaleni.cz^ -||qimcqs.hometogo.dk^ -||qitdsl.ralf.ru^ -||qivsvu.creedboutique.com^ -||qixipi.kathykuohome.com^ -||qjapso.r.pl^ -||qjcpcy.imkosmetik.com^ -||qjjgra.vendome.jp^ -||qjmsmj.invia.cz^ -||qjurou.laredoute.com^ -||qjxhxu.lakeside.com^ -||qjxiyt.respect-shoes.ru^ -||qjxkce.patriziapepe.com^ -||qkhhjm.autoscout24.nl^ -||qksbin.nocturne.com.tr^ -||qksxet.zeetours.nl^ -||qktnee.fribikeshop.dk^ -||qkxzdm.stellenanzeigen.de^ -||qldmga.criteo.work^ -||qldvnj.purepara.com^ -||qljiop.allabout.co.jp^ -||qllxvh.shopstyle.com^ -||qlmfpj.laura.ca^ -||qloevv.wikicasa.it^ -||qlqvej.bahia-principe.com^ -||qlsngs.paruvendu.fr^ -||qlspmy.xlmoto.be^ -||qlsszi.lululemon.co.nz^ -||qmcwpi.naturitas.es^ -||qmdbfv.grautecnico.com.br^ -||qmgwny.autobarn.com.au^ -||qmgzkb.dedoles.sk^ -||qmiiln.tower.jp^ -||qmlzcm.petshop.ru^ -||qmoyfh.xcite.com.sa^ -||qmtjvq.kuoni.ch^ -||qnbskk.oqvestir.com.br^ -||qnqdpy.edreams.net^ -||qnuzwe.nomanwalksalone.com^ -||qnwkbv.bestsecret.nl^ -||qnzczf.idc-otsuka.jp^ -||qoairs.scholl-shoes.com^ -||qohlsl.drawer.fr^ -||qonwdq.helmexpress.com^ -||qouxkn.natuurhuisje.nl^ -||qoygsv.born2be.pl^ -||qpielh.kfhi.or.kr^ -||qpuseo.notos.gr^ -||qqdflf.lpga.or.jp^ -||qqinrm.jagodo.vn^ -||qqmzen.elfadistrelec.no^ -||qqwxxf.levi.co.kr^ -||qriqiz.lifeisgood.com^ -||qrmccr.vernal.co.jp^ -||qrpwgt.drezzy.it^ -||qrrhvh.propertyfinder.ae^ -||qrtqsy.freshlycosmetics.com^ -||qrvsnt.citygrounds.com^ -||qsahny.smartbuyglasses.dk^ -||qswdme.modnakiecka.pl^ -||qtbaye.mona.ch^ -||qtdkfh.beautywelt.de^ -||qtdkxs.travellink.dk^ -||qtfnvf.ethika.com^ -||qttfwb.shaneco.com^ -||qtxxdm.levi.jp^ -||qtycwy.modivo.cz^ -||qumaef.conects.com^ -||qutsgp.calif.cc^ -||quyerj.northstyle.com^ -||qvbxza.stoneberry.com^ -||qvenxs.cash-piscines.com^ -||qveyyi.clarivate.com^ -||qvlcdw.ho-br.com^ -||qvmucs.abluestore.com^ -||qvnpxc.technopark.ru^ -||qvqtga.barenecessities.com^ -||qvsfrk.stephane-christian.com^ -||qvwick.mister-auto.de^ -||qvznqz.mekster.se^ -||qvzrde.mensagenscomamor.com^ -||qwfuug.phoneclick.it^ -||qwylpm.teljoy.co.za^ -||qxauwo.sportisimo.ro^ -||qxibrn.enviedefraise.fr^ -||qxkous.sweet-mommy.com^ -||qxsfaj.caloo.jp^ -||qxvqhy.miliboo.es^ -||qyatej.bocage.fr^ -||qygxrh.vandykes.com^ -||qymjpg.star-tex.ru^ -||qyogcr.amscope.com^ -||qypvnb.24mx.it^ -||qysknb.fukuishimbun.co.jp^ -||qysnzg.bien-zenker.de^ -||qyuzwd.maskworld.com^ -||qyvnic.footshop.cz^ -||qzcxtm.mango.com^ -||qzfxcf.coastal.com^ -||qzosds.gabalnara.com^ -||qzpkxf.edenboutique.ro^ -||qzqfud.casamineira.com.br^ -||qzwbod.blackdiamondequipment.com^ -||qzwktr.nazology.net^ -||qzwktr.nijimen.net^ -||qzwktr.world-fusigi.net^ -||qzxfnv.beams.co.jp^ -||raqwjl.dienthoaigiakho.vn^ -||raspnd.quadratec.com^ -||rbbgnn.hanshintigers.jp^ -||rbesql.just4camper.fr^ -||rbjmfj.dickies.ca^ -||rbncmx.chopperexchange.com^ -||rbrzcu.green-acres.gr^ -||rcbsrm.fivefoxes.co.jp^ -||rccnyh.airportrentalcars.com^ -||rcevcm.lyst.co.uk^ -||rcgwej.lights.co.uk^ -||rcqiho.emp.de^ -||rcqtck.dsquared2.com^ -||rcudsw.ths-net.jp^ -||rczwcs.brack.ch^ -||rddiqs.partyhallen.se^ -||rdfine.camelbrown.com^ -||rdlrbm.studying.jp^ -||rdvxxx.crushj.com^ -||reaonq.xn--hdks770u8f0a8dvzft.net^ -||reeokx.reima.com^ -||reeyzk.momq.co.kr^ -||refwkk.cas.sk^ -||refwkk.mojewypieki.com^ -||refwkk.omnicalculator.com^ -||refwkk.topky.sk^ -||refwkk.zoznam.sk^ -||refytq.camp-fire.jp^ -||relay.velpa.pl^ -||reltrd.peteralexander.com.au^ -||remnkv.doda.jp^ -||reqssx.centerparcs.fr^ -||rertrc.abc-mart.net^ -||retarget.gites-de-france.com^ -||reydrj.kozaczek.pl^ -||reydrj.papilot.pl^ -||reyzol.jdsports.dk^ -||rffsds.fsastore.com^ -||rfjrih.skinceuticals.com^ -||rfmfrg.yamap.com^ -||rgiixp.sperry.com^ -||rgjeqr.europcar.fr^ -||rgmseo.thejewellershop.com^ -||rgzrys.hangikredi.com^ -||rhdcmp.maxcolchon.com^ -||rhksxx.nencinisport.it^ -||rhlctb.jjkeller.com^ -||rhoxnc.studentuniverse.com^ -||rhybey.gap.co.jp^ -||riluwt.voxcinemas.com^ -||rimxqx.slickdeals.net^ -||riovdv.mustit.co.kr^ -||riundo.bonprix.no^ -||riwkmo.spacemarket.com^ -||riwnmh.novasol.co.uk^ -||rjgsjm.gigameubel.nl^ -||rjjynf.showcase-tv.com^ -||rjsouj.clubd.co.jp^ -||rkazse.infirmiere.co.jp^ -||rkstmr.cyrillus.ch^ -||rkxmow.novasol-vacaciones.es^ -||rlovoa.duckcamp.com^ -||rmdvca.belvilla.de^ -||rmmskb.fnacspectacles.com^ -||rmxhti.zpacks.com^ -||rnffgv.wemakeprice.com^ -||rnnstu.rentbeforeowning.com^ -||rnybul.gismeteo.lv^ -||rnybul.gismeteo.md^ -||rnyhid.pepperfry.com^ -||roedwy.imidapeptide.com^ -||roinjg.mkluzkoviny.cz^ -||rowsrm.atasunoptik.com.tr^ -||royzgi.giftishow.com^ -||rpfkgf.rp-online.de^ -||rpfkgf.saarbruecker-zeitung.de^ -||rpfkgf.volksfreund.de^ -||rpfqvl.donnerwetter.de^ -||rpiher.web-camp.io^ -||rpnvib.estilos.com.pe^ -||rpozzl.happy-size.de^ -||rqbdyk.evo.com^ -||rqbvgm.aleupominek.pl^ -||rqhtgf.pierrecardin.com.tr^ -||rqjjdi.bershka.com^ -||rqkmir.ferragamo.com^ -||rqkmnr.ifemme.co.kr^ -||rqyxdk.myanimelist.net^ -||rrbaib.tsutsumishop.jp^ -||rrgiuy.jackroad.co.jp^ -||rrincc.auto-doc.it^ -||rrjzyj.lepage.fr^ -||rrxldl.bol.de^ -||rrznha.lanvin-en-bleu.com^ -||rsaard.en-tea.com^ -||rsinqg.homelux.hu^ -||rsotku.mitsui-shopping-park.com^ -||rsuevw.unicef.or.jp^ -||rtegbv.jmclaughlin.com^ -||rtmugo.deindeal.ch^ -||rtneys.luuna.mx^ -||rtpmqv.smakon.jp^ -||rttkpr.bidolubaski.com^ -||rtxlni.doclasse.com^ -||rugttt.robinson.com^ -||ruhpbn.zhigaojixie.com^ -||ruvdkw.turk.net^ -||rvbqze.albamoda.de^ -||rverxn.autosphere.fr^ -||rvhzjg.desivero.com^ -||rvitam.xenos.nl^ -||rvtwqp.winparts.se^ -||rwdito.carsguide.com.au^ -||rwevib.harmontblaine.com^ -||rwfkzw.wuerth.it^ -||rwhneg.breaking-news.jp^ -||rwlnfq.alindashop.ro^ -||rwohdj.motocard.com^ -||rwpuqm.underarmour.es^ -||rwrnkb.lifelongcollectibles.com^ -||rwryla.theblockshop.com.au^ -||rxhsry.sortiraparis.com^ -||rxqqaq.hollandandbarrett.com^ -||rxtolo.domiporta.pl^ -||ryjknw.sonnenbrillen.com^ -||rymhet.posudamart.ru^ -||ryvapi.fragrancenet.com^ -||rzafbl.maxpeedingrods.com^ -||rzarxl.ovs.it^ -||rzdcyv.oreca-store.com^ -||rzgwpw.madeincookware.com^ -||rzoevr.qvc.de^ -||rzpjyz.pasona.co.jp^ -||saclel.zotapay.com^ -||sagxlv.daniellashevel.com^ -||sbdhdq.zeeman.com^ -||sbfrnq.naturalforme.fr^ -||sbmwgj.vidaxl.hu^ -||sbpzeq.lululemon.com.au^ -||sbttlj.togetter.com^ -||sbxxyx.notino.cz^ -||sbyneh.dailymail.co.uk^ -||scjlpq.navitime.co.jp^ -||scuhuh.cucannetshop.jp^ -||scuvcc.sportmax.com^ -||scuzgq.greencell.global^ -||scvgzt.onequince.com^ -||sdjthl.tvguide.dk^ -||sdlmaf.bestsecret.at^ -||sdpimt.lostgolfballs.com^ -||sebotr.rizeclinic.com^ -||sejdfu.coeur.de^ -||senlvg.secretsdujeu.com^ -||sepvbm.fromyouflowers.com^ -||seyfwl.bryk.pl^ -||seyfwl.deccoria.pl^ -||seyfwl.interia.pl^ -||seyfwl.maxmodels.pl^ -||seyfwl.okazjum.pl^ -||seyfwl.pomponik.pl^ -||seyfwl.smaker.pl^ -||seyfwl.styl.pl^ -||sezixz.officesupply.com^ -||sfajfu.boulanger.com^ -||sfbpok.theluxurycloset.com^ -||sffsgi.miele.com.tr^ -||sffyrc.ruparupa.com^ -||sfgysl.m-i.kr^ -||sfgysl.ppomppu.co.kr^ -||sfhgqy.i-sozoku.com^ -||sflvqq.pleinoutlet.com^ -||sfngya.centrecom.com.au^ -||sggsbd.fonteyn.nl^ -||sgwhvw.alura.com.br^ -||shjwhv.falsepeti.com^ -||shtptt.cupshe.com^ -||siazlw.cetroloja.com.br^ -||siewmi.uncommongoods.com^ -||sihoqd.sheridan.com.au^ -||sinkou.tireshop.com.br^ -||sipulo.katies.com.au^ -||sisdtb.climatempo.com.br^ -||siusmv.coraltravel.pl^ -||sizcsi.eobuv.cz^ -||sizybn.shipsltd.co.jp^ -||sjanff.v-moda.com^ -||sjmbua.matsui.co.jp^ -||sjprdu.oakhouse.jp^ -||sjryno.fullyloadedchew.com^ -||sjyzsm.danjohn.com^ -||skbnfa.filorga.com^ -||skmcwz.haselmode.co.kr^ -||skxbbj.clasic.jp^ -||slbunz.casamundo.fr^ -||slewvr.gp.se^ -||slryca.meyou.jp^ -||smbzbm.skymilescruises.com^ -||smqzbr.proozy.com^ -||smsulx.kijijiautos.ca^ -||smtccv.loveholidays.com^ -||smtpmail.velpa.pl^ -||smwvlc.intermixonline.com^ -||smxmlr.shimojima.jp^ -||snbwyi.heine.at^ -||snprxx.wwfmarket.com^ -||snvbhd.weltbild.at^ -||soejzg.efe.com.pe^ -||soelui.butosklep.pl^ -||sohiuc.sheego.de^ -||sorrhs.nescafe.com.tr^ -||sorxyx.vi.nl^ -||soubej.larebajavirtual.com^ -||soxnwz.lg.com^ -||spenvp.gate.shop^ -||spigte.shopee.tw^ -||spjysa.only.com^ -||spmaeu.gumtree.com.au^ -||spmyma.moscowfresh.ru^ -||sqdgwx.jobrapido.com^ -||sqdljj.kijiji.ca^ -||sqmazf.workamajig.com^ -||sqripu.selsey.pl^ -||sqtivj.vidaxl.hr^ -||srmdvb.ekohealth.com^ -||sroork.mrmarvis.nl^ -||srratl.mona-mode.at^ -||ssgamf.stories.com^ -||sshhfy.ray-ban.com^ -||ssigpc.servusmarktplatz.com^ -||ssjqkt.ekosport.it^ -||sspkbf.ragtag.jp^ -||ssuork.sixt.at^ -||ssushe.kennethcole.com^ -||stahhx.inversapub.com^ -||stehly.justfashionnow.com^ -||stfynw.esprit.be^ -||stktkt.profizelt24.de^ -||stliom.vidaxl.cz^ -||sufesj.shop4runners.com^ -||sufetv.chefuniforms.com^ -||supvka.colancolan.com^ -||suriwl.petsmart.com^ -||suxqvc.pinksisly.com^ -||suydnc.wwf.it^ -||svoywu.autoscout24.de^ -||svpury.sizeofficial.de^ -||svpxbr.drsquatch.com^ -||swdced.open32.nl^ -||swqleb.adidas.ru^ -||swwcyk.ahaber.com.tr^ -||swwcyk.atv.com.tr^ -||swwcyk.takvim.com.tr^ -||sxeimx.mydays.de^ -||sxjfhh.app.com^ -||sxjfhh.azcentral.com^ -||sxjfhh.battlecreekenquirer.com^ -||sxjfhh.caller.com^ -||sxjfhh.citizen-times.com^ -||sxjfhh.clarionledger.com^ -||sxjfhh.courier-journal.com^ -||sxjfhh.courierpostonline.com^ -||sxjfhh.delawareonline.com^ -||sxjfhh.delmarvanow.com^ -||sxjfhh.democratandchronicle.com^ -||sxjfhh.desertsun.com^ -||sxjfhh.desmoinesregister.com^ -||sxjfhh.detroitnews.com^ -||sxjfhh.floridatoday.com^ -||sxjfhh.freep.com^ -||sxjfhh.greenbaypressgazette.com^ -||sxjfhh.guampdn.com^ -||sxjfhh.hattiesburgamerican.com^ -||sxjfhh.hometownlife.com^ -||sxjfhh.indystar.com^ -||sxjfhh.jconline.com^ -||sxjfhh.jsonline.com^ -||sxjfhh.kitsapsun.com^ -||sxjfhh.knoxnews.com^ -||sxjfhh.lcsun-news.com^ -||sxjfhh.livingstondaily.com^ -||sxjfhh.lohud.com^ -||sxjfhh.montgomeryadvertiser.com^ -||sxjfhh.naplesnews.com^ -||sxjfhh.newarkadvocate.com^ -||sxjfhh.news-press.com^ -||sxjfhh.newsleader.com^ -||sxjfhh.northjersey.com^ -||sxjfhh.oklahoman.com^ -||sxjfhh.packersnews.com^ -||sxjfhh.pnj.com^ -||sxjfhh.poughkeepsiejournal.com^ -||sxjfhh.press-citizen.com^ -||sxjfhh.pressconnects.com^ -||sxjfhh.redding.com^ -||sxjfhh.rgj.com^ -||sxjfhh.sctimes.com^ -||sxjfhh.sheboyganpress.com^ -||sxjfhh.statesmanjournal.com^ -||sxjfhh.tallahassee.com^ -||sxjfhh.tcpalm.com^ -||sxjfhh.tennessean.com^ -||sxjfhh.theleafchronicle.com^ -||sxjfhh.thenewsstar.com^ -||sxjfhh.thespectrum.com^ -||sxjfhh.thetimesherald.com^ -||sxjfhh.thetowntalk.com^ -||sxjfhh.timesrecordnews.com^ -||sxjfhh.usatoday.com^ -||sxjfhh.vcstar.com^ -||sxmxpm.nectarsleep.com^ -||syfwnf.society6.com^ -||syqhvv.vivense.com^ -||sytuzk.nissanvimontlaval.com^ -||syvvsv.artex.com.br^ -||syycwa.barcelo.com^ -||szakms.bygghemma.se^ -||szgcnd.capfun.es^ -||szkbyo.zkai.co.jp^ -||sztpmc.branshes.com^ -||taduhy.timberland.co.uk^ -||taemhn.zamst-online.jp^ -||tagmwu.thalia.at^ -||takigx.tourneau.com^ -||takqyi.laurenhi.jp^ -||tatehj.nylaarp.com^ -||taznfx.renters.pl^ -||tbaqje.zadig-et-voltaire.com^ -||tbdhap.gamesonly.at^ -||tbihvt.pickawood.com^ -||tbjasp.cyrillus.de^ -||tbknig.ecc.jp^ -||tbmgyz.centerparcs.de^ -||tbvjrd.gocase.com.br^ -||tcbtus.opodo.com^ -||tccjxk.123.ru^ -||tchaxv.large.nl^ -||tczulp.econea.cz^ -||tdaqzz.graviditetskollen.nu^ -||tdbnom.madeleine.de^ -||tdbsoc.thegivingmovement.com^ -||tdjvod.chevignon.com.co^ -||teczbq.amicashop.com^ -||teijgy.herveleger.com^ -||telulr.golfgalaxy.com^ -||teraes.hgreg.com^ -||tevjso.konesso.pl^ -||tevzas.autoscout24.fr^ -||tewisg.monster.fi^ -||teyvmb.moniquelhuillier.com^ -||tfdtpa.dot-st.com^ -||tfoyfx.dukefotografia.com^ -||tfpeev.chanluu.com^ -||tfunqc.domonet.jp^ -||tfuodg.memolife.de^ -||tgbfha.lily-brw.com^ -||tgirgs.flinders.nl^ -||tgmklw.productreview.com.au^ -||tgsdiw.dedoles.de^ -||tgtgzo.otelz.com^ -||thaqyl.mediamarkt.nl^ -||thhesw.tre.it^ -||thsnvv.hollywoodschaukel-paradies.de^ -||ticvui.alexandani.com^ -||tiglck.technopolis.bg^ -||tioztp.unisportstore.nl^ -||tivixv.nutribullet.com^ -||tjbhng.hemington.com.tr^ -||tjitde.dodo.it^ -||tjnffp.tilebar.com^ -||tjwpfr.unitrailer.de^ -||tjyrup.templeandwebster.com.au^ -||tjzvuo.youcom.com.br^ -||tkgaws.seokplant.com^ -||tkjcqb.forrent.com^ -||tkmeyf.houseoflotus.jp^ -||tkvied.levi.com.my^ -||tkvxdj.cars.com^ -||tkykzv.polisorb.com^ -||tkzvse.whois.co.kr^ -||tlsalw.platypusshoes.co.nz^ -||tltkpu.jagran.com^ -||tltpyy.saatchiart.com^ -||tmbsxx.oxybul.com^ -||tmhgma.juwelo.de^ -||tmrhpl.nurse-agent.com^ -||tmwkya.jh-profishop.at^ -||tmxjdr.benaza.ro^ -||tncpzu.marelbo.com^ -||tnegqr.bohme.com^ -||tnhcsf.holzkern.com^ -||tniujy.natura.com.br^ -||tnxxtx.crepeerase.com^ -||toeopa.doutornature.com^ -||tpfrro.justlease.nl^ -||tpmexb.vans.co.nz^ -||tpubrk.eobuv.com^ -||tqbdio.medicare.pt^ -||tqiwqa.jdsports.ie^ -||tqkspo.neobyte.es^ -||tqtedm.kosmetik.at^ -||tqvacq.intrend.it^ -||tqxpnv.bauhaus.info^ -||trccvt.dhc.co.jp^ -||trkpzz.dcinside.com^ -||trpzjj.hrkgame.com^ -||trvonu.k-manga.jp^ -||tsbkht.puritan.com^ -||tsbmkf.zonnebrillen.com^ -||tsedvc.aboutyou.ch^ -||tshuxi.bbqguys.com^ -||tsliat.medme.pl^ -||tswafl.lascana.nl^ -||ttfpil.2dehands.be^ -||ttnnuo.racing-planet.de^ -||tuagol.gartenmoebel.de^ -||tufcum.margaretha.se^ -||tugngs.tui.com^ -||tuvevx.agent-sana.com^ -||tvcoag.brw.pl^ -||tvkfms.nta.co.jp^ -||tvuaeb.taqi.com.br^ -||twdhec.marioeletro.com^ -||twjobq.sixt.com^ -||twjobq.sixt.de^ -||twjobq.sixt.es^ -||twjobq.sixt.fr^ -||twjobq.sixt.nl^ -||twkbui.mansion-review.jp^ -||twoeej.carrefour.fr^ -||twsdne.petenkoiratarvike.com^ -||txaxkc.dsc-nightstore.com^ -||txfroe.decodoma.cz^ -||txfryh.terra.com.br^ -||txmmdl.lampy.pl^ -||txpbnm.sevellia.com^ -||txscpj.emp.ie^ -||txvoin.with2.net^ -||txyqik.jjshouse.fr^ -||tybfxw.puma.com^ -||tytpdz.climamarket.it^ -||tyvuwf.lameteoagricole.net^ -||tzovkp.aboutyou.at^ -||uaaooa.stansberryresearch.com^ -||ualkzq.moobel1.ee^ -||uaqcui.tennis-point.fr^ -||uarrdg.landsofamerica.com^ -||uasmdd.icaniwill.no^ -||uawefo.guylook.co.kr^ -||uazmti.a101.com.tr^ -||ubdjfy.maje.com^ -||ubdsej.notino.pl^ -||ubmdob.connection.com^ -||ubmups.houseofindya.com^ -||ubmwua.maisonsetappartements.fr^ -||ubpekn.sivillage.com^ -||ubqjbd.daviddonahue.com^ -||ubrihx.allbirds.jp^ -||ubvsjh.pointtown.com^ -||ubyjor.distrelec.ch^ -||ubykct.teufel.ch^ -||ucdvze.gudrunsjoden.com^ -||uclgnz.lunabazaar.com^ -||ucmahi.lectiva.com^ -||ucppeo.silux.hr^ -||udgrbq.malwarebytes.com^ -||udicje.perrys.co.uk^ -||udmmdl.dudalina.com.br^ -||udonjl.coopdeli.jp^ -||udrnks.vedder-vedder.com^ -||udrvvx.kabum.com.br^ -||udsgty.alkosto.com^ -||udxsuy.helline.fr^ -||udzucw.haggar.com^ -||uectfe.toptantr.com^ -||uedvam.tatilsepeti.com^ -||ueuqui.esprit.nl^ -||ufeonk.viravira.co^ -||uflfhl.mercci22.com^ -||ufnbgh.meierq.com^ -||ufqzrk.espritshop.ch^ -||ufsmcn.blackspade.com.tr^ -||ufwsfi.magasins-u.com^ -||ugdcxl.timeout.com.hk^ -||ugdcxl.timeout.com^ -||ugdcxl.timeout.es^ -||ugdcxl.timeout.jp^ -||ugdcxl.timeout.pt^ -||ughska.kids-world.dk^ -||ugkray.theloom.in^ -||uglwov.logic-immo.com^ -||ugzbsu.klimaworld.com^ -||uhenqb.manning.com^ -||uhlagm.rakurakuseisan.jp^ -||uhlkij.bonprix.it^ -||uhmpda.sunlocation.com^ -||uhrsek.shoemarker.co.kr^ -||uicjnk.gumtree.co.za^ -||uidpcx.planet.fr^ -||uifesg.modulor.de^ -||uigwgn.france-abonnements.fr^ -||uijciz.gunze.jp^ -||uilwmi.coop.nl^ -||uinpmz.iichi.com^ -||uiusqp.crowdcow.com^ -||uiwock.epantofi.ro^ -||ujbhri.pharmamarket.nl^ -||ujlwwo.lehner-versand.ch^ -||ujvqrs.meandem.com^ -||ujwfrf.uniformix.pl^ -||ujzqud.bestsecret.se^ -||ukaytg.cortefiel.com^ -||ukgfxw.satofull.jp^ -||ukjphn.vitaminler.com^ -||ukmnlp.techbang.com^ -||ukpgsb.agrieuro.es^ -||ukzjce.idus.com^ -||uldtqa.weekendmaxmara.com^ -||ulhyys.naehwelt.de^ -||ulidoo.montblanc.com^ -||ulinyo.bandito.com.tr^ -||ultund.misterspex.nl^ -||ulutlv.esprit.fr^ -||umazvs.raybiotech.com^ -||umdlbn.globetrotter.de^ -||umdpva.gakumado.mynavi.jp^ -||umhyck.belvilla.com^ -||umiaob.kireibiz.jp^ -||umtzwr.adidas.co.kr^ -||umwuxk.hotel.cz^ -||umxwew.hellobello.com^ -||uncmbg.timberland.de^ -||undurs.1md.org^ -||unyzea.aboutyou.sk^ -||uoblij.farmaline.be^ -||uofcdl.lagos.com^ -||uogqym.christopherandbanks.com^ -||uojpjo.miin-cosmetics.com^ -||uolwbz.heine.de^ -||uoqxdh.tendapro.it^ -||upeayz.eksisozluk.com^ -||upfmqr.carmensteffens.com.br^ -||uppbrl.thomassabo.com^ -||upqmpu.leasingtime.de^ -||upwkcv.vidaxl.ro^ -||upwwgd.zentempel.com^ -||uqckxr.chilli.se^ -||uqhpej.wiberrentacar.com^ -||urehgr.halekulani.com^ -||ureoaw.netthandelen.no^ -||uriokr.bauhaus.es^ -||urmgui.nationsphotolab.com^ -||uroqgj.wind.it^ -||urxbvw.tui.nl^ -||usdbbx.mmartan.com.br^ -||usgzei.vidaxl.ch^ -||usnvuj.skillfactory.ru^ -||usrkrz.zdravcity.ru^ -||usyyzz.winparts.nl^ -||usztct.gang.com.br^ -||utapbu.cykelkraft.se^ -||utgckq.reductionrevolution.com.au^ -||utjzyz.phillips.com^ -||utklhk.kojima.net^ -||utxokv.emp.co.uk^ -||uudbvq.skuola.net^ -||uuhejd.snipes.es^ -||uunczm.lescon.com.tr^ -||uurykr.pizzahut.com.mx^ -||uurzdr.global-style.jp^ -||uuzxaz.vidaxl.com^ -||uvccpk.1800petmeds.com^ -||uvgxhu.ezgif.com^ -||uvgxhu.sharemods.com^ -||uvpnpz.misterspex.ch^ -||uvqvvh.avva.com.tr^ -||uvzrtq.livingspaces.com^ -||uwdzbo.tgw.com^ -||uwxdru.hellovillam.com^ -||uxdse.sugarshape.de^ -||uxkurx.sportsmansguide.com^ -||uxqzcu.raunt.com^ -||uxtqtg.quattroruote.it^ -||uyivht.robertgraham.us^ -||uylodc.ecosa.com.au^ -||uyupgd.goalzero.com^ -||uzevnf.realtystore.com^ -||uzhobt.wholesalemarine.com^ -||uzipbs.weltbild.ch^ -||uzpkre.connor.com.au^ -||vahlnd.bogsfootwear.com^ -||vapxga.sieh-an.de^ -||vazulp.graniph.com^ -||vbkryy.pasonacareer.jp^ -||vbseje.stonehengehealth.com^ -||vbsjdd.olx.pt^ -||vbtdzb.fyndiq.se^ -||vdkjfd.hottopic.com^ -||vdmvyu.falk.de^ -||vdrebz.kathmandu.com.au^ -||vdrfga.deagoshop.ru^ -||vdrigb.8190.jp^ -||vdrxia.farmacosmo.it^ -||vdslnp.highkey.com^ -||vdvdjf.remotepc.com^ -||vdzrjr.kenminkyosai.or.jp^ -||vedznh.cumhuriyet.com.tr^ -||veosfi.woonexpress.nl^ -||veqvek.bnnbloomberg.ca^ -||veqvek.ctv.ca^ -||veqvek.ctvnews.ca^ -||veqvek.much.com^ -||veqvek.thebeaverton.com^ -||veqvek.tsn.ca^ -||vewbab.entertainmentearth.com^ -||vezsyr.bxblue.com.br^ -||vfmahn.slevomat.cz^ -||vfvcxv.naturhaeuschen.de^ -||vgavzy.spierandmackay.com^ -||vgazda.krefel.be^ -||vgbify.underarmour.de^ -||vgellr.esprit.de^ -||vglosh.courierpress.com^ -||vgrbvi.atncorp.com^ -||vhmewg.edreams.fr^ -||vhmjci.edreams.co.uk^ -||vhpabx.herffjones.com^ -||vhrbxb.vidaxl.nl^ -||vibsqr.theuiq.com^ -||vipwao.nutrimuscle.com^ -||vipyou.bulkpowders.es^ -||vjjgpt.diamond.jp^ -||vkbvny.ddanzi.com^ -||vkbvny.fow.kr^ -||vkctxy.yves-rocher.fi^ -||vkkasm.officechairsusa.com^ -||vkrdts.finestore.ro^ -||vkscdg.solocruceros.com^ -||vkxyjj.g2a.com^ -||vllsuv.skatedeluxe.com^ -||vmgihu.gelatopique.com^ -||vmjdpk.repairclinic.com^ -||vmsspl.tenamall.co.kr^ -||vmsxzx.buienradar.nl^ -||vmwody.seibu-k.co.jp^ -||vnlvxi.vivastreet.co.uk^ -||vnmopn.brax.com^ -||vnqcyq.noon.co.kr^ -||vnzwxk.e-bebek.com^ -||vocfhq.ilgiardinodeilibri.it^ -||vonvdn.garden.ne.jp^ -||voqysr.afr-web.co.jp^ -||voroud.wine.com.br^ -||vouzpu.tokyolife.co.jp^ -||voxtjm.about-you.ee^ -||vpemsb.autocasion.com^ -||vphsiv.gsshop.com^ -||vpivyf.meshki.com.au^ -||vpmdiq.propertyfinder.qa^ -||vpuuzj.schnullireich.de^ -||vqbidy.benetton.com^ -||vqjacf.mauriziocollectionstore.com^ -||vqpque.eloan.co.jp^ -||vqvuid.kobetsu.co.jp^ -||vqxlbd.billyreid.com^ -||vrhesh.avocadogreenmattress.com^ -||vrvjwr.mobelaris.com^ -||vrzmfy.fool.com^ -||vsfius.aranzulla.it^ -||vsqyaz.sweetwater.com^ -||vtffnz.blindsdirect.co.uk^ -||vtodss.livenation.com^ -||vttics.world.co.jp^ -||vuypew.ikks.com^ -||vvaaol.enuygun.com^ -||vvikao.brighton.com^ -||vvktyh.yotsuyagakuin.com^ -||vvnhhb.mebeles1.lv^ -||vvqizy.witt-weiden.de^ -||vwakpz.vidri.com.sv^ -||vwiind.beautyforever.com^ -||vwotiw.agazeta.com.br^ -||vwrgru.happymail.co.jp^ -||vxcjoz.nextadvisor.com^ -||vxlpha.weddingpark.net^ -||vxohkh.laboutiqueofficielle.com^ -||vxvibc.asahi-kasei.co.jp^ -||vyeysj.foto-mundus.de^ -||vyjwxc.elemis.com^ -||vyplzy.job-medley.com^ -||vyuodh.your-look-for-less.nl^ -||vyyikx.sixt.ch^ -||vyykdr.renogy.com^ -||vzcfqp.unibet.fr^ -||vzeyba.shopee.co.id^ -||vzhjnw.officedepot.com^ -||vzynem.lamporochljus.se^ -||waatch.gva.be^ -||waatch.hbvl.be^ -||waatch.nieuwsblad.be^ -||waatch.standaard.be^ -||waawuu.highfashionhome.com^ -||wabsgz.studocu.com^ -||wafoub.graindemalice.fr^ -||wamahe.wokularach.pl^ -||warrjy.feiler.jp^ -||wavrlh.cedok.cz^ -||wavzlt.michaelstars.com^ -||wbcygu.wardow.com^ -||wbiphu.johnbeerens.com^ -||wbkval.ecco.com^ -||wboeot.shop2gether.com.br^ -||wbswtr.decathlon.com.tr^ -||wchjfv.apartmenttherapy.com^ -||wddnff.bonprix.cz^ -||wdnyom.faces.com^ -||wdsgpy.lekarna.cz^ -||wdukge.midwayusa.com^ -||webmail.velpa.pl^ -||wejpuy.factor75.com^ -||wemqip.misli.com^ -||weoccn.bonito.pl^ -||wepany.tripbeat.com^ -||wesbgz.travel.co.jp^ -||wevbgr.vidaxl.it^ -||wezbvq.heine-shop.nl^ -||wfmcgd.msccruzeiros.com.br^ -||wgeaqi.laredoute.gr^ -||wgnrrd.culturekings.com^ -||wgpepw.boatoutfitters.com^ -||wgyapq.stormberg.com^ -||whahmy.timberland.es^ -||whcmij.altitude-sports.com^ -||whqkyq.leasingmarkt.de^ -||whwiab.pamono.it^ -||wigkxx.jetcost.com^ -||wirjoi.meetsmore.com^ -||wjssvg.descentekorea.co.kr^ -||wjtekf.vidaxl.bg^ -||wjzyrk.magiclife.com^ -||wklwyt.springer.com^ -||wkpjgh.toysrus.pt^ -||wkudly.realtruck.com^ -||wkuuuj.byther.kr^ -||wkympu.agnesb.co.jp^ -||wlkojk.orange.ro^ -||wlptux.habitaclia.com^ -||wlqtte.misterspex.at^ -||wlwtcr.toptoon.com^ -||wlxhzn.godfreys.com.au^ -||wmbldi.compass.it^ -||wmizdm.relax-job.com^ -||wmpmvk.whiskeyriff.com^ -||wmvroh.sgd.de^ -||wmxuba.aldoshoes.com^ -||wnegmu.timberland.nl^ -||wnfwzx.panpacific.com^ -||wngyjr.sportservice.pl^ -||wnozpl.escarpe.it^ -||wnvieu.enpal.de^ -||wnyywf.frankonia.de^ -||woosyt.portalesardegna.com^ -||woowjy.desa.com.tr^ -||woqcfy.sony.ru^ -||woutkw.type.jp^ -||wowrdm.stepstone.at^ -||wozdcc.vidaxl.at^ -||wpauvu.obuvki.bg^ -||wpgobx.feber.se^ -||wpgobx.marcusoscarsson.se^ -||wpkfti.1300k.com^ -||wppyub.mygenerator.com.au^ -||wpyvue.idealwine.com^ -||wqfflc.fupa.net^ -||wqfflc.gartendialog.de^ -||wqfflc.hausgarten.net^ -||wqfflc.plantopedia.de^ -||wqudcv.finnishdesignshop.com^ -||wqytxm.kurly.com^ -||wrkbha.lyst.de^ -||wrlnvt.pepita.hu^ -||wrugwj.bakerross.de^ -||wrvueo.mollis.ru^ -||wsnrfb.modlily.com^ -||wsuqzu.armani.com^ -||wsytyz.tts.ru^ -||wszwgs.cocopanda.fi^ -||wtdpkq.tausendkind.de^ -||wtesqx.news.mynavi.jp^ -||wtgnmr.golfdigest.co.jp^ -||wttbup.novasol.de^ -||wucvvh.surpricenow.com^ -||wvlirb.lexoffice.de^ -||wvoudw.magaseek.com^ -||wvrukp.globalcyclingnetwork.com^ -||wvzddr.quirumed.com^ -||wwbsll.nissen.co.jp^ -||wwnscv.myspringfield.com^ -||wwokkf.laredoute.ru^ -||wwrupv.tannico.it^ -||wxaaqr.plusdental.de^ -||wxbaal.ecosa.com.hk^ -||wxebye.aboutyou.hu^ -||wxgmca.orthofeet.com^ -||wxnxau.air-r.jp^ -||wxwsmt.matsmart.fi^ -||wyaopp.lacoccinelle.net^ -||wyelmp.vidaxl.si^ -||wywvyf.discuss.com.hk^ -||wywvyf.price.com.hk^ -||wywvyf.uwants.com^ -||wyzdlu.arhaus.com^ -||wyzqiy.pnet.co.za^ -||wzcnha.lenspure.com^ -||wzkhzb.cantao.com.br^ -||wzkjip.coru.com^ -||wzpwxe.4lapy.ru^ -||wzyjup.patch.com^ -||wzzhvn.hammer.de^ -||xaguwy.thomas-muenz.ru^ -||xbmady.daimaru-matsuzakaya.jp^ -||xbshje.smartbag.com.br^ -||xbwpfs.fotocasa.es^ -||xcedwa.contactsdirect.com^ -||xcgpdf.beautygarage.jp^ -||xcojhb.unitysquare.co.kr^ -||xdaoxa.footasylum.com^ -||xdbchs.bradfordexchange.com^ -||xdcpfs.shopdoen.com^ -||xdeiaf.elleshop.jp^ -||xdkwsh.farmacialoreto.it^ -||xdsblm.ullapopken.de^ -||xdvdrg.globalindustrial.com^ -||xejpzk.fram.fr^ -||xekjzy.rinascente.it^ -||xewihp.bayut.com^ -||xfobuc.serenaandlily.com^ -||xfzcds.netprint.ru^ -||xgefvi.iteshop.com^ -||xgezbc.tripmasters.com^ -||xgspzv.troyestore.com^ -||xgvenv.farmatodo.com.co^ -||xgyvaf.easydew.co.kr^ -||xhbzrk.hotmart.com^ -||xhohnr.fdm.pl^ -||xhqmvu.k-uno.co.jp^ -||xhuahy.juwelo.it^ -||xhxmhs.ounass.ae^ -||xibspj.komehyo.jp^ -||xiqvza.dickblick.com^ -||xitvce.webtretho.com^ -||xiuksf.worten.es^ -||xiznql.laredoute.it^ -||xjkpzh.voraxacessorios.com.br^ -||xjkugh.waterdropfilter.com^ -||xjoqmy.tuifly.be^ -||xjztuj.kbwine.com^ -||xkddvf.gigantti.fi^ -||xkgtxj.edomator.pl^ -||xkidkt.edenbrothers.com^ -||xknhwv.mobile01.com^ -||xkvmsr.hair.com^ -||xkzura.yves-rocher.se^ -||xlapmx.mcsport.ie^ -||xlbvvo.luisaviaroma.com^ -||xldnzg.trendhim.de^ -||xlhdtn.hugendubel.de^ -||xljqqe.hsn.com^ -||xludzt.alfastrah.ru^ -||xmcvqq.pinkpanda.ro^ -||xmfugv.tgn.co.jp^ -||xmohlh.melia.com^ -||xmqrvx.jewelry-queen-shop.com^ -||xmyvhu.soxo.pl^ -||xnukcp.cpcompany.com^ -||xpcpmr.gsm55.com^ -||xpygen.unger-fashion.com^ -||xpzswr.shasa.com^ -||xqdwwj.medpeer.jp^ -||xqslse.annadiva.nl^ -||xqtcur.kirklands.com^ -||xqupwc.emp.at^ -||xqzqdj.mfind.pl^ -||xransv.hometogo.com.au^ -||xrcksn.vvf-villages.fr^ -||xrnyhc.arumdri.co.kr^ -||xrnyhc.jokwangilbo.com^ -||xrnyhc.welltimes.co.kr^ -||xrxybn.kotofey-shop.ru^ -||xscmzs.tenki.jp^ -||xslmpq.ohou.se^ -||xsrzqh.ananzi.co.za^ -||xsrzqh.oferte360.ro^ -||xsrzqh.the-star.co.ke^ -||xsrzqh.vietnamplus.vn^ -||xsswcg.moglix.com^ -||xtazfx.50factory.com^ -||xtxwva.intersport.com.tr^ -||xudmrz.conforama.fr^ -||xugxwq.e-hoi.de^ -||xunzbx.mon-abri-de-jardin.com^ -||xuojhr.mobly.com.br^ -||xutolr.mainichikirei.jp^ -||xutolr.mantan-web.jp^ -||xuymgm.hostgator.mx^ -||xvteew.lacoste.jp^ -||xvyxgy.stz.com.br^ -||xwpoxv.birdies.com^ -||xwpzlz.gemimarket.it^ -||xwzebw.waja.co.jp^ -||xxjiqg.oysho.com^ -||xxpnnq.sklepmartes.pl^ -||xxsdtb.edreams.com^ -||xxxssv.jeulia.com^ -||xygxko.shop-apotheke.ch^ -||xyhojp.lacoste.com^ -||xymddt.clubeextra.com.br^ -||xymhzq.klingel.de^ -||xyxgbs.lezhin.com^ -||xyzznt.uterque.com^ -||xzjqlg.marella.com^ -||xztqfj.dreamvs.jp^ -||xzutow.affordablelamps.com^ -||xzwcng.vans.com.au^ -||yadtbk.blacks.co.uk^ -||yagoqv.smartbuyglasses.ca^ -||yajkhd.supersports.com^ -||yawxae.footpatrol.com^ -||yaxedj.vkf-renzel.de^ -||yazzuf.joyn.de^ -||ybgsyd.osharewalker.co.jp^ -||ybswii.swarovski.com^ -||ybzcmz.momoshop.com.tw^ -||ycembr.net-a-porter.com^ -||ychqww.aboutyou.lv^ -||ycjhuh.stripe-club.com^ -||ydbcct.nikigolf.jp^ -||ydbeuq.superpharm.pl^ -||ydccky.direnc.net^ -||ydcksa.certideal.com^ -||yddtah.takingshape.com^ -||ydosfw.filippa-k.com^ -||ydtzzw.firenzeviola.it^ -||ydtzzw.milannews.it^ -||ydtzzw.pianetabasket.com^ -||ydtzzw.torinogranata.it^ -||ydtzzw.tuttoc.com^ -||ydtzzw.tuttojuve.com^ -||ydtzzw.tuttomercatoweb.com^ -||ydtzzw.tuttonapoli.net^ -||ydtzzw.vocegiallorossa.it^ -||ydvsok.newbalance.jp^ -||yebvpc.gardengoodsdirect.com^ -||yefktd.avito.ru^ -||yehyqc.hugoboss.com^ -||yewrcd.govoyages.com^ -||yezztf.pinkelephant.co.kr^ -||yfaygn.natureetdecouvertes.com^ -||yfclaf.dsw.ca^ -||yfenys.prenatal.com^ -||yfepff.raymourflanigan.com^ -||yfkclv.asianetnews.com^ -||yfpvmd.reed.co.uk^ -||yftkzg.thisisfutbol.com^ -||yfwnsy.infraredsauna.com^ -||ygdogx.hearstmagazines.co.uk^ -||ygecho.wenz.de^ -||ygmpia.worten.pt^ -||ygopvz.windsorstore.com^ -||ygsoeu.size.co.uk^ -||ygtfgu.casamundo.nl^ -||ygxqjz.intersport.fi^ -||yhbdzh.farmasiint.com^ -||yhhuzt.gintarine.lt^ -||yhjgjk.wemakeup.it^ -||yhnwux.infomoney.com.br^ -||yhskfe.klipsch.com^ -||yhuamf.ktronix.com^ -||yhvewh.aboutyou.ro^ -||yiiwaq.mms.com^ -||yikrmn.ciceksepeti.com^ -||yiohzu.tsigs.com^ -||yixvbp.merkal.com^ -||yizlda.crocs.co.uk^ -||yjlbvd.pcfactory.cl^ -||yjlhep.skechers.co.nz^ -||yjpgxf.svsound.com^ -||yjpzqw.jackjones.com^ -||yjrcks.smile-zemi.jp^ -||yjxssk.apartments.com^ -||ykfrpx.kapten-son.com^ -||ykhqhe.domain.com.au^ -||ykmsxu.vitalabo.ch^ -||yknjjb.usaflex.com.br^ -||ykqapk.aboutyou.si^ -||ykskhw.candytm.pl^ -||ykxfoj.purchasingpower.com^ -||ylafwg.greenpoint.pl^ -||ylakmr.expressionscatalog.com^ -||ylsjdq.jegs.com^ -||ylsjka.conranshop.jp^ -||ymcvxo.check24.de^ -||ymixqb.nationalgeographic.com^ -||ymqnky.bagaggio.com.br^ -||ymrtre.scandinavianoutdoor.fi^ -||ymvikp.estadao.com.br^ -||ymviwl.just4camper.de^ -||ynagqs.vidaxl.pl^ -||ynemmp.goertz.de^ -||yngnwe.8division.com^ -||ynudoo.shoeby.nl^ -||ynwqna.mayblue.co.kr^ -||yogolp.beststl.com^ -||yoifwi.levi.com.ph^ -||yoxeha.afloral.com^ -||ypbfjo.paulsmith.co.jp^ -||ypcdbw.drive2.com^ -||ypcdbw.drive2.ru^ -||ypdewh.dokuritsu.mynavi.jp^ -||ypkado.clicrbs.com.br^ -||ypndvx.stepstone.fr^ -||ypqgnx.morizon.pl^ -||ypwzcq.tink.de^ -||ypzktj.fly.pl^ -||yqaxvu.leilian-online.com^ -||yqigli.tourlane.de^ -||yqorwz.weisshaus.at^ -||yqqhbd.yotsuyaotsuka.com^ -||yrepmy.jochen-schweizer.de^ -||yrrudp.inven.co.kr^ -||ysaaks.mobiauto.com.br^ -||yskvdo.gebrauchtwagen.at^ -||ysuwrg.meritocomercial.com.br^ -||yszedg.vidaxl.dk^ -||ytbnvm.firadis.net^ -||ytouvy.arezzo.com.br^ -||ytwtxi.beautybio.com^ -||yueqal.glassesusa.com^ -||yujmyt.theiconic.co.nz^ -||yuoyan.finanzen.de^ -||yurobl.rw-co.com^ -||yvcjyi.beymen.com^ -||yvdaeg.on-running.com^ -||yvdxij.applevacations.com^ -||yvsofs.tropeaka.com.au^ -||yvtgva.casa.it^ -||ywayoh.ecipo.hu^ -||ywcqef.lyst.com.nl^ -||ywhikg.surplex.com^ -||ywkiyt.candere.com^ -||ywojvu.kujten.com^ -||ywrcqa.11alive.com^ -||ywrcqa.12news.com^ -||ywrcqa.13newsnow.com^ -||ywrcqa.13wmaz.com^ -||ywrcqa.9news.com^ -||ywrcqa.abc10.com^ -||ywrcqa.cbs8.com^ -||ywrcqa.fox43.com^ -||ywrcqa.fox61.com^ -||ywrcqa.kare11.com^ -||ywrcqa.kcentv.com^ -||ywrcqa.kens5.com^ -||ywrcqa.khou.com^ -||ywrcqa.king5.com^ -||ywrcqa.ksdk.com^ -||ywrcqa.ktvb.com^ -||ywrcqa.kvue.com^ -||ywrcqa.newscentermaine.com^ -||ywrcqa.newswest9.com^ -||ywrcqa.wcnc.com^ -||ywrcqa.wfaa.com^ -||ywrcqa.wfmynews2.com^ -||ywrcqa.wgrz.com^ -||ywrcqa.whas11.com^ -||ywrcqa.wkyc.com^ -||ywrcqa.wltx.com^ -||ywrcqa.wnep.com^ -||ywrcqa.wqad.com^ -||ywrcqa.wthr.com^ -||ywrcqa.wtsp.com^ -||ywrcqa.wusa9.com^ -||ywrcqa.wwltv.com^ -||ywrcqa.wzzm13.com^ -||ywzmvh.trovaprezzi.it^ -||yxfqar.trendhim.com.au^ -||yxgcfb.petit-bateau.co.jp^ -||yxiqqh.dealchecker.co.uk^ -||yxkzip.brastemp.com.br^ -||yxqfkm.24mx.de^ -||yxsdgi.bedworld.net^ -||yxxuyo.nintendo.co.za^ -||yxzfdl.550909.com^ -||yyhijp.g123.jp^ -||yylqlk.agatinsvet.cz^ -||yyqlpi.danmusikk.no^ -||yyrtip.mujkoberec.cz^ -||yysjea.stepstone.nl^ -||yysqrv.berge-meer.de^ -||yywdph.multu.pl^ -||yzcfva.healthyplanetcanada.com^ -||yzcpqa.gumtree.com^ -||yzdljh.clarins.ca^ -||yzdltz.pricerunner.dk^ -||yzjqqj.emmiol.com^ -||yzvpco.hfashionmall.com^ -||yzzqza.vanillashu.co.kr^ -||zaawds.farmae.it^ -||zaiuhu.vacatia.com^ -||zatong.icaniwill.se^ -||zbdtkk.totvs.com^ -||zbfszb.calpis-shop.jp^ -||zbrfde.ozmall.co.jp^ -||zcbsft.thedoublef.com^ -||zcjemo.alwaysfashion.com^ -||zcnknu.oxxo.com.tr^ -||zcwcep.lojasrede.com.br^ -||zdbbqb.mancrates.com^ -||zdcjts.asics.com^ -||zdpsve.scrapbook.com^ -||zdqlel.restplatzboerse.at^ -||zefpks.dealdonkey.com^ -||zesgky.belambra.fr^ -||zfhlsg.repassa.com.br^ -||zftces.hoiku-job.net^ -||zftrez.unisportstore.no^ -||zfvdeu.novaconcursos.com.br^ -||zgfilz.propertyfinder.eg^ -||zgqgig.skillbox.ru^ -||zgumwv.stepstone.de^ -||zgwxoy.autoscout24.ro^ -||zhcxvk.qvc.com^ -||zhduni.rizap.jp^ -||zhqcir.netage.ne.jp^ -||zhyeqw.mercury.ru^ -||zicgoi.emmiegray.de^ -||zieyeq.intent24.fr^ -||zigpdx.ltbjeans.com^ -||zikazx.bouwmaat.nl^ -||zilhvf.hesperide.com^ -||zilmwz.gsm55.it^ -||ziqrso.24mx.no^ -||ziuggw.archon.pl^ -||ziwewm.tecovas.com^ -||zjbfke.centerparcs.be^ -||zjhlsx.exxpozed.de^ -||zjhswy.comeup.com.tr^ -||zjkpxw.tesco.hu^ -||zjrbwb.markenschuhe.de^ -||zjzain.aboutyou.bg^ -||zjzste.tom-tailor.de^ -||zkebwy.copenhagenstudios.com^ -||zkkkvb.welovebags.de^ -||zknrhv.sebago.com^ -||zkntjk.hikaku-cardloan.news.mynavi.jp^ -||zkqhqv.sizeofficial.it^ -||zkvxgc.nissui-kenko.com^ -||zldqcc.dodenhof.de^ -||zlgkpr.lottehotel.com^ -||zlvxiw.medicarelife.com^ -||zmfdxt.megastudy.net^ -||zmhsxr.hometogo.com^ -||zmlntc.green-acres.es^ -||zmmrpv.peterglenn.com^ -||zmpvij.bonprix.fr^ -||zmyopn.babadotop.com.br^ -||zmzkyj.agrieuro.com^ -||znlgke.jiobit.com^ -||znmtka.kikocosmetics.com^ -||znrttr.jaypore.com^ -||zodhqv.peterson.fr^ -||zodxgk.lecoqsportif.com^ -||zopqks.kavehome.com^ -||zopxzq.premiata.it^ -||zozwyc.moscot.com^ -||zpashl.amgakuin.co.jp^ -||zpnrnr.ab-in-den-urlaub.de^ -||zppfgh.renovatuvestidor.com^ -||zqkdzl.invia.sk^ -||zqwofo.liverpool.com.mx^ -||zrbbbj.tf.com.br^ -||zrjllb.zeb.be^ -||zrknjk.countrystorecatalog.com^ -||zrktaa.cityfurniture.com^ -||zrnsri.vogacloset.com^ -||zrsaff.petworld.no^ -||zrsetz.shutterstock.com^ -||zrxdzq.levelshoes.com^ -||ztarkm.johnnie-o.com^ -||ztbbpz.betten.de^ -||ztfjtn.liujo.com^ -||ztgblo.vidaxl.lt^ -||ztpdcg.stroilioro.com^ -||ztqnls.lojasrenner.com.br^ -||zudopk.callondoc.com^ -||zudver.matsmart.se^ -||zuqjug.nutrabay.com^ -||zurjxe.armine.com^ -||zusvfq.otorapor.com^ -||zvbqya.marideal.mu^ -||zvfzqw.cotta.jp^ -||zvhkzb.ambiendo.de^ -||zvlxlu.emsan.com.tr^ -||zvrbwf.drogerienatura.pl^ -||zvvpcz.puravita.ch^ -||zvvsvr.kettner-edelmetalle.de^ -||zwatgf.megaknihy.cz^ -||zwinqi.spartoo.pt^ -||zwiucp.ohmynews.com^ -||zwokia.aigle.com^ -||zxbumj.edreams.it^ -||zxqnbp.heute-wohnen.de^ -||zxqrdm.vinomofo.com^ -||zxrnfc.drinco.jp^ -||zxrrop.musely.com^ -||zxxvns.f64.ro^ -||zybveu.swappie.com^ -||zycnof.distrelec.de^ -||zzaoea.costacrociere.it^ -||zzqyxd.smartpozyczka.pl^ -||zzsqqx.shopjapan.co.jp^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_oracle.txt *** -||10stepswp.advancedtech.com^ -||1stparty.equifax.co.uk^ -||360direct.qualfon.com^ -||529conference.strategic-i.com^ -||a.aer.com^ -||a.swd5.com^ -||aarpannuity.newyorklife.com^ -||aarpfda.newyorklife.com^ -||aarpgfi.newyorklife.com^ -||aarpgli.newyorklife.com^ -||abastur.ubmmexico.com^ -||abo.schibsted.no^ -||acceptcards.americanexpress.co.uk^ -||access.acspubs.org^ -||access.sunpower.com^ -||accountancy.bppeloqua.com^ -||accounting.frbservices.org^ -||acq-au.americanexpress.com^ -||acq-hk.americanexpress.com^ -||acq-jp.americanexpress.com^ -||acq-sg.americanexpress.com^ -||acquisition.cbre.com.au^ -||act.firstdata.com^ -||actie.athlon.com^ -||action.hassconsult.co.ke^ -||activation.labcorp.com^ -||activation.thunderinsider.com^ -||active.sangfor.com^ -||activos.contacto.promerica.fi.cr^ -||adi.ni.com^ -||admin.smartgroup.com.au^ -||adminspace.carte-gr.total.fr^ -||adpia.client.adpinfo.com^ -||adpia130611.adpinfo.com^ -||adppartner.solutions.adpinfo.com^ -||advancing.acams.org^ -||advantages.americanexpress.com^ -||advise.gallup.com^ -||advisor.americanexpress.ca^ -||advisor.eaglestrategies.com^ -||advisor.newyorklifeannuities.com^ -||advisorservices.etradefinancial.com^ -||advisorservicesfpc.etradefinancial.com^ -||ae-go.experian.com^ -||afhleads.keurig.ca^ -||africa.edm.globalsources.com^ -||agentcomm.mercuryinsurance.com^ -||agexpo.americanexpress.com^ -||agribusiness.intelligence.informa.com^ -||ahhmkt.anhua.com.cn^ -||ahima.coniferhealth.com^ -||ai.mist.com^ -||ai.thermo.com^ -||ai.thermofisher.com^ -||aidc.barcodesgroup.com^ -||aladdinupdate.blackrock.com^ -||albanychicago.advancedtech.com^ -||ald.aldautomotive.be^ -||alerts.ironmountain.com^ -||alerts.wolterskluwerfs.com^ -||alertsatwork.americanexpress.com^ -||alias.cloud-marketing.dimensiondata.com^ -||allergy.thermo.com^ -||allergy.thermofisher.com^ -||alquiler.aldflex.es^ -||alquiler.carflex.es^ -||altalex.wolterskluwer.com^ -||alternativetechnology.arrow.com^ -||alumni.qualfon.com^ -||am.siemensplmevents.com^ -||amer.juniper.net^ -||americasbrandperformancesupport.hilton.com^ -||ams.oraclecloud.com^ -||analytics.banksneveraskthat.com^ -||analytics.blackboard.com^ -||analytics.cognyte.com^ -||analytics.ferguson.com^ -||analytics.flexpay.io^ -||analytics.pollardwater.com^ -||analytics.uwindsor.ca^ -||angebote.plex.com^ -||anmeldung.promatis.ch^ -||anmeldung.promatis.de^ -||announcement.lyreco.com^ -||answers.teradata.ch^ -||answers.teradata.co.uk^ -||answers.teradata.com.cn^ -||answers.teradata.com.sa^ -||answers.teradata.com^ -||answers.teradata.de^ -||answers.teradata.fr^ -||answers.teradata.hu^ -||answers.teradata.in^ -||answers.teradata.jp^ -||answers.teradata.mx^ -||answers.teradata.pl^ -||answers.teradata.ru^ -||answers.teradata.se^ -||antwort.hager.de^ -||aonemeaclientcouncil.aon.com^ -||ap.quadient.com^ -||apac-go.experian.com^ -||apac.adpinfo.com^ -||apac.juniper.net^ -||apac.zendesk.com^ -||apacenews.roche.com^ -||apcinfo.motorolasolutions.com^ -||apcinfo.vertexstandard.com^ -||api-websystems.landing.ni.com^ -||app.12thman.com^ -||app.12thmanfoundation.com^ -||app.aaas-science.org^ -||app.accelerate.zoominfo.com^ -||app.advertisingsolutions.att-mail.com^ -||app.arizonawildcats.com^ -||app.arkansasrazorbacks.com^ -||app.arts.kent.edu^ -||app.arts.uci.edu^ -||app.auburntigers.com^ -||app.augustaentertainmentcomplex.com^ -||app.bandimere.com^ -||app.baylorbears.com^ -||app.bbmannpah.com^ -||app.bceagles.com^ -||app.bluehens.com^ -||app.bncontacto.fi.cr^ -||app.bucky.uwbadgers.com^ -||app.budweisergardens.com^ -||app.bushnell.org^ -||app.business.westernunion.com^ -||app.byutickets.com^ -||app.calbears.com^ -||app.campaign.morganstanley.com^ -||app.campaign.trendmicro.com^ -||app.campaigns.fidelity.com^ -||app.care.eisenhowerhealthcares.org^ -||app.cb.pnc.com^ -||app.ceb.executiveboard.com^ -||app.centreinthesquare.com^ -||app.charlotte49ers.com^ -||app.chartwayarena.com^ -||app.cimarketing.aig.com^ -||app.cincinnatiarts.org^ -||app.classiccenter.com^ -||app.cofcsports.com^ -||app.collinscenterforthearts.com^ -||app.comms.aon.com^ -||app.communications.americanexpress.ca^ -||app.communications.citimortgage.com^ -||app.communications.jdsu.com^ -||app.compasslearning.biz^ -||app.connect.cch.ca^ -||app.connect.mandiant.com^ -||app.connect.synopsys.com^ -||app.connect.vmware.com^ -||app.connect.wgbh.org^ -||app.connect.wgby.org^ -||app.connections.te.com^ -||app.corp.tableausoftware.com^ -||app.crm.millenniumhotels.com^ -||app.csurams.com^ -||app.cubuffs.com^ -||app.customer.adaptiveinsights.com^ -||app.customer.adaptiveplanning.com^ -||app.customerservice.royalmail.com^ -||app.dawsoncreekeventscentre.com^ -||app.demand.nexsan.com^ -||app.demand.ni.com^ -||app.depaulbluedemons.com^ -||app.dtlphx.net^ -||app.e.dowjones.com^ -||app.e.flukecal.com^ -||app.e.gettyimages.com^ -||app.e.intercall.com^ -||app.e.kqed.org^ -||app.ecupirates.com^ -||app.email.fitchratings.com^ -||app.email.forrester.com^ -||app.emarketing.heat.com^ -||app.emueagles.com^ -||app.enable.atmel.com^ -||app.engineering.sae.org^ -||app.entertainment.comcast-spectacor.com^ -||app.fabulousfox.com^ -||app.fans.wolveslynx.com^ -||app.fightingillini.com^ -||app.fightingirish.com^ -||app.financialinstitutions.53.com^ -||app.fleet2.vauxhall.co.uk^ -||app.fordidahocenter.com^ -||app.foxtheatre.org^ -||app.frbcommunications.org^ -||app.friars.com^ -||app.gafreedom.com^ -||app.gaincapital.com^ -||app.georgiadogs.com^ -||app.get.comcastbiz.com^ -||app.gfis.genworth.com^ -||app.gfwm.genworth.com^ -||app.global.certain.com^ -||app.globalbusinesstravel.americanexpress.com^ -||app.go.bmc.com^ -||app.go.coxmedia.com^ -||app.go.csc.com^ -||app.go.endicia.com^ -||app.go.gogoair.com^ -||app.go.gogoinflight.com^ -||app.go.guidancesoftware.com^ -||app.go.healthways.com^ -||app.go.hult.edu^ -||app.go.jacksonhewitt.com^ -||app.go.livingstonintl.com^ -||app.go.maas360.com^ -||app.go.nhaschools.com^ -||app.go.nitropdf.com^ -||app.go.pentonmarketingservices.com^ -||app.go.sitel.com^ -||app.go.terremark.com^ -||app.go.wolterskluwerlb.com^ -||app.go.xo.com^ -||app.goairforcefalcons.com^ -||app.goarmywestpoint.com^ -||app.gobearcats.com^ -||app.gobulldogs.com^ -||app.godeacs.com^ -||app.goduke.com^ -||app.gofrogs.com^ -||app.gogriz.com^ -||app.goguecenter.auburn.edu^ -||app.goheels.com^ -||app.gohuskies.com^ -||app.gopack.com^ -||app.gophersports.com^ -||app.gopsusports.com^ -||app.gorhody.com^ -||app.goshockers.com^ -||app.gostanford.com^ -||app.gotigersgo.com^ -||app.goto.dowjones.com^ -||app.gozips.com^ -||app.green.omniture.com^ -||app.griztix.umt.edu^ -||app.growth.orange-business.com^ -||app.gseagles.com^ -||app.hailstate.com^ -||app.hawaiiathletics.com^ -||app.hawkeyesports.com^ -||app.health.bjc.org^ -||app.herdzone.com^ -||app.hokiesports.com^ -||app.hornettickets.csus.edu^ -||app.humanaresponses.com^ -||app.huskers.com^ -||app.info.actuate.com^ -||app.info.americanpublicmediagroup.org^ -||app.info.autotask.com^ -||app.info.aviationweek.com^ -||app.info.avid.com^ -||app.info.compellent.com^ -||app.info.coopenae.fi.cr^ -||app.info.fidelity.com^ -||app.info.fleetmatics.com^ -||app.info.idgenterprise.com^ -||app.info.jdpa.com^ -||app.info.markit.com^ -||app.info.polycom.com^ -||app.info.quark.com^ -||app.info.questrade.com^ -||app.info.recall.com^ -||app.info.redhat.com^ -||app.info.standardandpoors.com^ -||app.info.trinet.com^ -||app.info.truvenhealth.biz^ -||app.info.ubmchannel.com^ -||app.info.washcaps.com^ -||app.info.washingtonwizards.com^ -||app.inform.equifax.com^ -||app.information.cognos.com^ -||app.innovate.molex.com^ -||app.insider.cavs.net^ -||app.insight.cision.com^ -||app.insight.dnb.com^ -||app.insight.thompson.com^ -||app.iowaeventscenter.com^ -||app.iowawild.com^ -||app.iuhoosiers.com^ -||app.jmusports.com^ -||app.knowhow.ceridian.com^ -||app.krannertcenter.com^ -||app.kstatesports.com^ -||app.ksuowls.com^ -||app.kuathletics.com^ -||app.lacr.motorolasolutions.com^ -||app.lamy-liaisons.fr^ -||app.leadership.kenblanchard.com^ -||app.learn.datafoundry.com^ -||app.learn.ioninteractive.com^ -||app.learn.mindjet.com^ -||app.learn.rasmussen.edu^ -||app.libertyfirstcreditunionarena.com^ -||app.libertyflames.com^ -||app.m1.adsolutions.yp.com^ -||app.machspeed.bluecoat.com^ -||app.mail.mfg.macquarie.com^ -||app.mail.skillsoft.com^ -||app.mailings.erepublic.com^ -||app.mailserver.parker.com^ -||app.marketing.pro.sony.eu^ -||app.marketing.richardsonrfpd.com^ -||app.marketing.wolterskluwerfs.com^ -||app.markkinointi.aller.fi^ -||app.massmutualcenter.com^ -||app.meangreensports.com^ -||app.merchant.bankofamerica.com^ -||app.messages.sonicwall.com^ -||app.mgoblue.com^ -||app.miamihurricanes.com^ -||app.miamiredhawks.com^ -||app.mk.westernunion.com^ -||app.mktg.genesys.com^ -||app.mktg.novell.com^ -||app.mogosme.com^ -||app.msuspartans.com^ -||app.network.ecitele.com^ -||app.nevadawolfpack.com^ -||app.news.zend.com^ -||app.newsletter.bisnow.com^ -||app.nhra.com^ -||app.nissan.my-nissan-usa.com^ -||app.noreply.cummins.com^ -||app.now.bomgar.com^ -||app.now.nowtv.com^ -||app.nuhuskies.com^ -||app.nusports.com^ -||app.odusports.com^ -||app.ohiobobcats.com^ -||app.okcciviccenter.com^ -||app.okstate.com^ -||app.olemisssports.com^ -||app.online.microfocus.com^ -||app.osubeavers.com^ -||app.owlsports.com^ -||app.owners.hilton.com^ -||app.paciolan.com^ -||app.pacslo.org^ -||app.partner.fisglobal.com^ -||app.payments-response.americanexpress.co.uk^ -||app.payments.53.com^ -||app.pbr.com^ -||app.pennathletics.com^ -||app.pittsburghpanthers.com^ -||app.playhousesquare.org^ -||app.poconoraceway.com^ -||app.portland5.com^ -||app.post.vertafore.com^ -||app.ppacri.org^ -||app.profile.purina.com^ -||app.prsoftware.vocus.com^ -||app.pultegroup.com^ -||app.purduesports.com^ -||app.qnasdaqomx.com^ -||app.ramblinwreck.com^ -||app.ratingsinfo.standardandpoors.com^ -||app.recruit.caterermail.com^ -||app.reply.perkinelmer.com^ -||app.resources.netiq.com^ -||app.respond.aonhewitt.com^ -||app.response.adobesystemsinc.com^ -||app.response.aiu.edu.au^ -||app.response.americancentury.com^ -||app.response.americanexpress.ca^ -||app.response.americanexpress.com^ -||app.response.att-mail.com^ -||app.response.blackbaud.com^ -||app.response.cetera.com^ -||app.response.firstdata.com^ -||app.response.hanover.com^ -||app.response.hslda.org^ -||app.response.integratelecom.com^ -||app.response.intergraph.com^ -||app.response.j2global.com^ -||app.response.jacksonhealthcare.com^ -||app.response.kroll.com^ -||app.response.krollontrack.co.uk^ -||app.response.locumtenens.com^ -||app.response.markem-imaje.com^ -||app.response.ncr.com^ -||app.response.neopost.com^ -||app.response.softserveinc.com^ -||app.response.stratfor.com^ -||app.response.thermofisher.com^ -||app.response.transplace.com^ -||app.response.volarisgroup.com^ -||app.results.chronicle.com^ -||app.richmondspiders.com^ -||app.riverbed.com^ -||app.rolltide.com^ -||app.sbas.sage.com^ -||app.scarletknights.com^ -||app.selectyourtickets.com^ -||app.seminoles.com^ -||app.siemens-energy.com^ -||app.siemensplmevents.com^ -||app.sjsuspartans.com^ -||app.sjuhawks.com^ -||app.smart.vivint.com^ -||app.smumustangs.com^ -||app.snssecure.mcafee.com^ -||app.soec.ca^ -||app.solution.roxar.com^ -||app.solutions.intermec.com^ -||app.soonersports.com^ -||app.stratfor.com^ -||app.success.coniferhealth.com^ -||app.suse.com^ -||app.tableausoftware.com^ -||app.tech.pentontech.com^ -||app.texasperformingarts.org^ -||app.texassports.com^ -||app.texastech.com^ -||app.thefishercenter.com^ -||app.ticketatlantic.com^ -||app.ticketleader.ca^ -||app.ticketstaronline.com^ -||app.tribeathletics.com^ -||app.tsongascenter.com^ -||app.tuckerciviccenter.com^ -||app.tulanegreenwave.com^ -||app.tulsahurricane.com^ -||app.tysoncenter.com^ -||app.uabsports.com^ -||app.ucdavisaggies.com^ -||app.ucirvinesports.com^ -||app.uclabruins.com^ -||app.uhcougars.com^ -||app.umassathletics.com^ -||app.umterps.com^ -||app.und.com^ -||app.unlvrebels.com^ -||app.update.lenovo.com^ -||app.update.vodafone.co.uk^ -||app.updates.digicert.com^ -||app.usajaguars.com^ -||app.usctrojans.com^ -||app.utrockets.com^ -||app.villanova.com^ -||app.virginiasports.com^ -||app.vucommodores.com^ -||app.whartoncenter.com^ -||app.wine.tweglobal.com^ -||app.wsucougars.com^ -||app.wvusports.com^ -||app.www-102.aig.com^ -||app.xlcenter.com^ -||app.your.csc.com^ -||app.your.level3.com^ -||app.zmail.zionsbank.com^ -||appcloud.appyreward.com^ -||appinfosoryz.carte-gr.total.fr^ -||applicatifs.ricoh.fr^ -||application.rasmussen.edu^ -||application.ricoh.ch^ -||application.ricoh.co.uk^ -||application.ricoh.co.za^ -||application.ricoh.de^ -||application.ricoh.ie^ -||application.taleo.com^ -||appointments.covenanthealth.org^ -||appointments.providence.org^ -||appointments.swedish.org^ -||apps.go.hobsons.com^ -||apps.imaginecommunications.com^ -||apps.info.convio.com^ -||apps.software.netsimplicity.com^ -||appsecurezomation.carte-gr.total.fr^ -||ar.quadient.com^ -||archiv.promatis.de^ -||archived.first.eloqua.extrahop.com^ -||archived.learn.eloqua.extrahop.com^ -||arincol.arin-innovation.com^ -||art.carte-gr.total.fr^ -||as.balluff.com^ -||asia.atradius.com^ -||asia.interface.com^ -||asistente.christus.mx^ -||ask.antalis-verpackungen.at^ -||ask.antalis.co.uk^ -||ask.antalis.com.tr^ -||ask.antalis.com^ -||ask.antalis.dk^ -||ask.antalis.fr^ -||ask.antalis.lv^ -||ask.antalis.no^ -||ask.antalis.pl^ -||ask.antalis.pt^ -||ask.antalis.ro^ -||ask.antalis.se^ -||assets.eafit.edu.co^ -||assets.estudioseconomicos.co^ -||assets.oupe.es^ -||assets.spectrumhealthlakeland.org^ -||assistancetrack.changehealthcare.com^ -||ast-en.adp.ca^ -||ast-fr.adp.ca^ -||at-go.experian.com^ -||atencion.banrural.com.gt^ -||athl.lsusports.net^ -||attend.5gnorthamericaevent.com^ -||attend.motorcycleshows.com^ -||attend.networkxevent.com^ -||au-go.experian.com^ -||au-partners.ingrammicro.com^ -||au.interface.com^ -||au.mywd.com^ -||aus.amexforbusiness.com.au^ -||auth.carte-gr.total.fr^ -||autoimmunity.thermo.com^ -||autoimmunity.thermofisher.com^ -||automate.opex.com^ -||automation.pemco.com^ -||automationtest.pemco.com^ -||automotive-business.vodafone.com^ -||automotive.balluff.com^ -||autovista-fi.autovistagroup.com^ -||autovista-fr.autovistagroup.com^ -||autovista-se.autovistagroup.com^ -||autovistaintelligence.autovistagroup.com^ -||avaya-engage.avaya.com^ -||avs.adpinfo.com^ -||axentis.arclogics.com^ -||axp.avaya.com^ -||b.bloomberglp.com^ -||b2binfo.canon-europe.com^ -||b2bmarketing.swisscom.ch^ -||b2bmarketingsb.swisscom.ch^ -||b2bmarketingsb.swisscom.com^ -||b2bmkt.lge.co.kr^ -||backoffice.verintsystemsinc.com^ -||badirectoryz.carte-gr.total.fr^ -||bancopostapremia.bancoposta.it^ -||banks.adpinfo.com^ -||bapages.carte-gr.total.fr^ -||barracuda.carte-gr.total.fr^ -||bbbb.blackboard.com^ -||bbk.pnc.com^ -||bbworld.blackboard.com^ -||be-go.experian.com^ -||belgium.wolterskluwer.com^ -||belong.curtin.edu.au^ -||beneficios.davivienda.hn^ -||beneficios.davivienda.sv^ -||benefits.aon.com^ -||benelux2.secureforms.mcafee.com^ -||bestill.help.no^ -||better.herculesrx.com^ -||beuniquelyinsured.selective.com^ -||beyond.bluewolf.com^ -||bg-go.experian.com^ -||bienvenido.americanindustriesgroup.com^ -||bigdata.clarin.com^ -||biz.coface.com^ -||bizmkt.lguplus.com^ -||blackbook.coniferhealth.com^ -||bldr.mkt.samsung.com^ -||ble.ubm-licensing.com^ -||blog.myomnipod.com^ -||bnk.wolterskluwerfs.com^ -||boutique.ricoh.fr^ -||bpm.global360.com^ -||bps.ricoh.co.uk^ -||bps.ricoh.ie^ -||bpsemea.hilton.com^ -||br.adpinfo.com^ -||branch.verintsystemsinc.com^ -||branchout.pegs.com^ -||brand.adp.ca^ -||breakthrough.kronos.com^ -||btaconnect.americanexpress.at^ -||btaconnect.americanexpress.co.uk^ -||btaconnect.americanexpress.de^ -||btaconnect.americanexpress.es^ -||btaconnect.americanexpress.fr^ -||btaconnect.americanexpress.it^ -||btaenrolment.americanexpress.at^ -||btaenrolment.americanexpress.co.uk^ -||btaenrolment.americanexpress.it^ -||btaenrolment.americanexpress.nl^ -||bu.adpinfo.com^ -||business-cards.americanexpress.com^ -||business-pages.edfenergy.com^ -||business.keurig.com^ -||business.samsungusa.com^ -||business.vodafone.co.nz^ -||business.vodafone.com^ -||businessaffiliate.americanexpress.com^ -||businessengage.comcast.com^ -||businessmaking.progress.com^ -||businessmedia.americanexpress.com^ -||businessprocess.ricoh.de^ -||buzz.vocus.com^ -||by.mywd.com^ -||ca.connect.finning.com^ -||ca.creditacceptance.com^ -||ca.mattamyhomes.com^ -||calibration.ni.com^ -||camagess.carte-gr.total.fr^ -||campagne.enecozakelijk.nl^ -||campaign-fbsg.fujifilm.com^ -||campaign.amadeus.com^ -||campaign.bbmbonnier.se^ -||campaign.bpost.be.bpost.be^ -||campaign.daimlertruck.com^ -||campaign.fr.mazda.be^ -||campaign.glory-global.com^ -||campaign.hach.com.cn^ -||campaign.kpmg.co.il^ -||campaign.mazda.lu^ -||campaign.mazda.sk^ -||campaign.motorolasolutions.com^ -||campaign.nl.mazda.be^ -||campaign.outpayce.com^ -||campaign.phinmaproperties.com^ -||campaign.raymondcorp.com^ -||campaign.rockwellautomation.com^ -||campaign.ruukki.com^ -||campaign.shl.com^ -||campaign.ssab.com^ -||campaign.tandemdiabetes.com^ -||campaigninfo.motorolasolutions.com^ -||campaignresources.motorolasolutions.com^ -||campaigns-de.opentext.com^ -||campaigns-es.opentext.com^ -||campaigns-fr.opentext.com^ -||campaigns-it.opentext.com^ -||campaigns.amadeus.com^ -||campaigns.engage.cebglobal.com^ -||campaigns.glory-global.com^ -||campaigns.grenke.com^ -||campaigns.mellanox.com^ -||campaigns.messagemedia.com.au^ -||campaigns.netscout.com^ -||campaigns.opentext.com^ -||campaigns.ortec.com^ -||campaigns.panasonic.eu^ -||campaigns.rockwellautomation.com^ -||campaigns.sandhill.co.uk^ -||campaigns.technics.eu^ -||campaigns.verisk.com^ -||campaigns.xactware.com^ -||candidate.response.ingenovishealth.com^ -||carburanalyticsspace.carte-gr.total.fr^ -||carburez-a-l-emotion.carte-gr.total.fr^ -||cardexchanges.carte-gr.total.fr^ -||care.excellence.kaweahhealth.org^ -||care.mercycare.org^ -||care.oakstreethealth.com^ -||care.southeasthealth.org^ -||care.stlukes-stl.com^ -||care.universityhealth.com^ -||careers.coniferhealth.com^ -||carepay.gaf.com^ -||carreras.unisabana.edu.co^ -||cars.autopia.com.au^ -||cars.smartfleetaustralia.com.au^ -||cars.smartleasing.com.au^ -||carte.fleet-page.total.fr^ -||cascadion.thermo.com^ -||cascadion.thermofisher.com^ -||casl.couch-associates.com^ -||catracking.cubiq.com^ -||catracking.finning.com^ -||cbc.pnc.com^ -||ccaas.avaya.com^ -||ccmd.coveredca.com^ -||cd.chemistanddruggist.co.uk^ -||cdrive.compellent.com^ -||cen.acspubs.org^ -||cenbrandlab.acspubs.org^ -||cenjobs.acspubs.org^ -||central2.secureforms.mcafee.com^ -||challengeh.carte-gr.total.fr^ -||channel.cummins.com^ -||channel.informaengage.com^ -||channelevents.partnermcafee.com^ -||channelportal.netsuite.com^ -||channelusa.samsung.com^ -||chat.forddirectdealers.com^ -||check.frbservices.org^ -||chiefinvestmentofficer.strategic-i.com^ -||choose.adelaide.edu.au^ -||choose.nu.edu^ -||cihac.ubmmexico.com^ -||cimarketingforms.aig.com^ -||cimarketingforms.cimarketing.aig.com^ -||clarity-infographic.zebra.com^ -||click.rollouki.com^ -||click.vocus.com^ -||clicks.tableau.com^ -||client.trustaff.com^ -||clients.hermes-investment.com^ -||cloud.diagral.fr^ -||cloudhosting-business.vodafone.com^ -||cloverleaf.infor.com^ -||cm-in.americanexpress.com^ -||cm-jp.americanexpress.com^ -||cm-sg.americanexpress.com^ -||cm.informaengage.com^ -||cmc.americanexpress.co.uk^ -||cmr.customer.americanexpress.de^ -||cmrcustomer.americanexpress.co.uk^ -||cmrcustomer.americanexpress.es^ -||cn-go.experian.com^ -||cn.adpinfo.com^ -||cn.mywd.com^ -||cockpitdcbaima.carte-gr.total.fr^ -||collaborate.blackboard.com^ -||collections.equifax.com^ -||columbustech.tcsg.edu^ -||com.carte-gr.total.fr^ -||comm.toro.com^ -||commanslabdpp.carte-gr.total.fr^ -||commanslabdspace.carte-gr.total.fr^ -||commerce.edc.ca^ -||commercial.equifax.com^ -||commercial.inform.equifax.com^ -||comms.cigna.co.uk^ -||comms.cigna.es^ -||comms.cignaglobalhealth.com^ -||comms.cision.com^ -||comms.dfsco.com^ -||comms.groupmarketing.dimensiondata.com^ -||comms.hello.global.ntt^ -||comms.services.global.ntt^ -||comms.supplychain.nhs.uk^ -||communicate.cision.ca^ -||communicate.cision.co.uk^ -||communicate.prnewswire.co.uk^ -||communicate.prnewswire.com^ -||communicatelp.keysight.com^ -||communicatie.vub.be^ -||communication.adpinfo.com^ -||communication.futuresummits.com^ -||communication.hager.co.uk^ -||communication.imec.be^ -||communication.imechyperspectral.com^ -||communication.imeciclink.com^ -||communication.imecistart.com^ -||communication.imecitf.com^ -||communication.proximus.be^ -||communication.ricoh.at^ -||communication.ricoh.ch^ -||communication.ricoh.co.uk^ -||communication.ricoh.de^ -||communication.ricoh.it^ -||communication.ricoh.pt^ -||communications.adpinfo.com^ -||communications.aon.com^ -||communications.apilayer.com^ -||communications.cigna.com^ -||communications.embarcadero.com^ -||communications.fusioncharts.com^ -||communications.idera.com^ -||communications.lansa.com^ -||communications.parcours.fr^ -||communications.sencha.com^ -||communications.ultraedit.com^ -||communications.wpcarey.com^ -||community.fusesource.com^ -||compliance.coniferhealth.com^ -||computers.panasonic.eu^ -||comtelitalia.alcatel-lucent.com^ -||comunicacao.edpcomunicacao.com.br^ -||comunicacion.usj.es^ -||comunicaciones.davivienda.com.pa^ -||comunicaciones.daviviendacorredores.com^ -||comunicaciones.paginasamarillas.es^ -||comunicaciones.pymas.com.co^ -||comunicazioni.bancamediolanum.it^ -||conf.optum.com^ -||conference.all-energy.com.au^ -||conferences.cigna.com^ -||confirm.aon.com^ -||confirm.ptvgroup.com^ -||connect-qa.netapp.com^ -||connect.abm.netapp.com^ -||connect.acams.org^ -||connect.acspubs.org^ -||connect.arkadin.com^ -||connect.aucmed.edu^ -||connect.becker.com^ -||connect.blackboard.com^ -||connect.blog.netapp.com^ -||connect.build.com^ -||connect.cap.hcahealthcare.com^ -||connect.care.eehealth.org^ -||connect.care.hackensackmeridian.org^ -||connect.care.kansashealthsystem.com^ -||connect.care.lcmchealth.org^ -||connect.care.muschealth.org^ -||connect.care.sheppardpratt.org^ -||connect.care.wakemed.org^ -||connect.caringcrowd.org^ -||connect.carrier.com.ph^ -||connect.chapman.com^ -||connect.cloud.netapp.com^ -||connect.cognex.com^ -||connect.compellent.com^ -||connect.cont.hcahealthcare.com^ -||connect.content-hub.netapp.com^ -||connect.customers.netapp.com^ -||connect.delphi.international^ -||connect.dimensiondata.com^ -||connect.flowroute.com^ -||connect.fwd.hcahealthcare.com^ -||connect.gcd.hcahealthcare.com^ -||connect.geniecompany.com^ -||connect.grassicpas.com^ -||connect.handlesets.com^ -||connect.health.bjc.org^ -||connect.health.lexmed.com^ -||connect.health.mydocnews.com^ -||connect.healthcare.northbay.org^ -||connect.healthcare.rush.edu^ -||connect.info.halifaxhealthnews.org^ -||connect.insidelpl.com^ -||connect.intel.com^ -||connect.intercall.com^ -||connect.inxpo.com^ -||connect.ispo.com^ -||connect.labcorp.com^ -||connect.lgcns.com^ -||connect.link.boone.health^ -||connect.lionsclubs.org^ -||connect.mattamyhomes.com^ -||connect.medical.rossu.edu^ -||connect.medstarhealth.org^ -||connect.memorialcare.org^ -||connect.methodisthealthsystem.org^ -||connect.mhsystem.org^ -||connect.montagehealth.org^ -||connect.mycwt.com^ -||connect.ncd.hcahealthcare.com^ -||connect.netapp.co.il^ -||connect.netapp.co.kr^ -||connect.netapp.com.au^ -||connect.netapp.com.sg^ -||connect.netapp.com.tw^ -||connect.netapp.in^ -||connect.netapp.it^ -||connect.news.evergreenhealth.com^ -||connect.nfd.hcahealthcare.com^ -||connect.northoaks.org^ -||connect.palomarhealth.org^ -||connect.partner-connect.netapp.com^ -||connect.satl.hcahealthcare.com^ -||connect.schoolmessenger.com^ -||connect.senecacollege.ca^ -||connect.senecapolytechnic.ca^ -||connect.singlex.com^ -||connect.stihl.info^ -||connect.telstrawholesale.com^ -||connect.the-stockmarket.com^ -||connect.virginmediabusiness.co.uk^ -||connect.wfd.hcahealthcare.com^ -||connect.xo.com^ -||connect.zebra.com^ -||connect2.secureforms.mcafee.com^ -||connected.technologies.jci.com^ -||connected.verical.com^ -||connectfpc.zebra.com^ -||connection.arrow.com^ -||connection.verical.com^ -||connectlp.keysight.com^ -||connectportal.netapp.com^ -||connecttest.arubanetworks.com^ -||connectvet.rossu.edu^ -||connectwithus.cetera.com^ -||consulting.guidehouse.com^ -||consulting.icmi.com^ -||consulting.mcgladrey.com^ -||consumer.equifax.com^ -||consumer.inform.equifax.com^ -||contact-us.adp.ca^ -||contact.abc-companies.com^ -||contact.aon.com^ -||contact.coface.com^ -||contact.formasquare.com^ -||contact.iwgplc.com^ -||contact.kikusuiamerica.com^ -||contact.lesmills.com^ -||contact.nalgene.com^ -||contact.no18.com^ -||contact.regus.com^ -||contact.samsungsds.com^ -||contact.spacesworks.com^ -||contact.tsr-net.co.jp^ -||contactcenter.verintsystemsinc.com^ -||contactcentercala.verintsystemsinc.com^ -||contactecs.arrow.com^ -||contacto.gtc.com.gt^ -||contacto.lecleire.com.gt^ -||contactus.53.com^ -||content.accelalpha.com^ -||content.bazaarvoice.com^ -||content.blackboard.com^ -||content.box.net^ -||content.convio.com^ -||content.eaton.com^ -||content.ferguson.com^ -||content.juniper.net^ -||content.nxp.com^ -||content.ohcare.ohiohealth.com^ -||content.pollardwater.com^ -||content.powerdms.com^ -||content.prophet.com^ -||content.rackspace.co.uk^ -||content.tatatelebusiness.com^ -||content.verint.com^ -||content.wire.telstra.com^ -||contents.pwc.com^ -||controlexpenses.adp.ca^ -||convention.interfaceflor.com^ -||convision.davivienda.com^ -||cookie.amerigas.com^ -||cookie.cynch.com^ -||cookie.myamerigas.com^ -||cookiejar.atea.no^ -||cookies-sfs.siemens.com^ -||cookies.ec4u.com^ -||cookies.engage.russellinvestments.com^ -||cookies.grenke.ch^ -||cookies.grenke.com^ -||cookies.grenke.de^ -||cookies.siemens-advanta.com^ -||cookies.siemens-energy.com^ -||cookies.siemens-healthineers.com^ -||cookies.siemens.com^ -||cookies.wpcarey.com^ -||cookietracking.eatonpowersource.com^ -||coop.vmware.com^ -||corporate-klm.americanexpress.nl^ -||corporate.americanexpress.it^ -||corporate.mattamyhomes.com^ -||corporate.wpcarey.com^ -||corporatecard.americanexpress.nl^ -||corporatecards.americanexpress.com^ -||corporateforms.americanexpress.com^ -||corporatemembershiprewards.americanexpress.co.uk^ -||corporatemembershiprewards.americanexpress.es^ -||corporatemr.americanexpress.co.uk^ -||corporatemr.americanexpress.de^ -||corporatemr40k.americanexpress.co.uk^ -||corporatemrguide.americanexpress.co.uk^ -||corporatemrguide.americanexpress.de^ -||corporatepages.proximus.com^ -||corporateplatino.americanexpress.it^ -||cortellisconnections.thomsonreuters.com^ -||covenant.psjhealth.org^ -||cp.ir-central.irco.com^ -||create.encore-mx.com^ -||create.encoreglobal.com^ -||crm.ironmountain.com^ -||crm.landing.ni.com^ -||crm.leads360.com^ -||crm.velocify.com^ -||cs.coopeservidores.fi.cr^ -||cs.hot.net.il^ -||cs.nexttv.co.il^ -||ctc.wolterskluwer.com^ -||curious.cognyte.com^ -||custom.dowjones.com^ -||custom.info.shutterstock.com^ -||customer-engagement.verintsystemsinc.com^ -||customerexperience.verintsystemsinc.com^ -||customers-capitalbank-jo-877029.p06.elqsandbox.com^ -||customize.titanfactorydirect.com^ -||cx.quadient.com^ -||cyber-pages.att.com^ -||cyber-tracking.att.com^ -||cyber.boozallen.com^ -||cz-business.vodafone.com^ -||cz-cz.siemensplmevents.com^ -||cz-go.experian.com^ -||data.atea.no^ -||dbl.cadriamarketing.com^ -||dc.bluecoat.com^ -||dd.control4.com^ -||de-de.siemensplmevents.com^ -||de-go.experian.com^ -||de.contact.alphabet.com^ -||de.mywd.com^ -||de.verintsystemsinc.com^ -||defygravity.convio.com^ -||degree.insead.edu^ -||delete.atea.fi^ -||deleteme.intuit.com^ -||dell.compellent.com^ -||delphi.ni.com^ -||demandgen.ptc.com^ -||demo-mktg.vodafone.com^ -||dependable-s.hyster.com^ -||design.informabi.com^ -||design.nanawall.com^ -||details.pella.com^ -||dev-plan.intel.com^ -||dev.marketing.championhomes.com^ -||dev.marketing.skylinehomes.com^ -||devtracking.risk.lexisnexis.com^ -||dg.champion-compressors.com^ -||dg.compair.com^ -||dg.irco.com^ -||dg.ptl.irco.com^ -||dhdaa.duke.edu^ -||dhlsupplychain.dhl.com^ -||diagnostics.thermo.com^ -||dialer.leads360.com^ -||dialer.velocify.com^ -||dialogue.de.mazda.ch^ -||dialogue.fr.mazda.be^ -||dialogue.mazda.at^ -||dialogue.mazda.bg^ -||dialogue.mazda.co.uk^ -||dialogue.mazda.com.tr^ -||dialogue.mazda.cz^ -||dialogue.mazda.de^ -||dialogue.mazda.dk^ -||dialogue.mazda.es^ -||dialogue.mazda.eu^ -||dialogue.mazda.fr^ -||dialogue.mazda.gr^ -||dialogue.mazda.hr^ -||dialogue.mazda.hu^ -||dialogue.mazda.ie^ -||dialogue.mazda.it^ -||dialogue.mazda.nl^ -||dialogue.mazda.no^ -||dialogue.mazda.pl^ -||dialogue.mazda.pt^ -||dialogue.mazda.ro^ -||dialogue.mazda.rs^ -||dialogue.mazda.se^ -||dialogue.mazda.si^ -||dialogue.mazda.sk^ -||dialogue.nl.mazda.be^ -||diamages.carte-gr.total.fr^ -||digital-engineering.de^ -||digital-global.furniture-china.cn^ -||digital.adt-worldwide.com^ -||digital.adt.cl^ -||digital.adt.co.cr^ -||digital.adt.co.uk^ -||digital.adt.com.br^ -||digital.adt.com.es^ -||digital.adt.com.mx^ -||digital.adt.com.uy^ -||digital.aptaracorp.com^ -||digital.bebold.cx^ -||digital.cloud.travelport.com^ -||digital.dynatos.be^ -||digital.forddirectdealers.com^ -||digital.ironmountain.com^ -||digitalworkplace.ricoh.fr^ -||discover.10play.com.au^ -||discover.absciex.com.cn^ -||discover.absciex.com^ -||discover.aptly.de^ -||discover.averydennison.com^ -||discover.citeline.com^ -||discover.clarivate.com^ -||discover.conversantmedia.com^ -||discover.evaluate.com^ -||discover.fullsail.edu^ -||discover.harvardbusiness.org^ -||discover.immofinanz.com^ -||discover.jll.com^ -||discover.parker.com^ -||discover.pharmaignite.com^ -||discover.phenomenex.com^ -||discover.rewe-group.at^ -||discover.streamly.video^ -||discover.tenplay.com.au^ -||discover2.secureforms.mcafee.com^ -||distributors.balluff.com^ -||dk-go.experian.com^ -||dloeloqua.danskespil.dk^ -||dm.smfl.jp^ -||dmkt.solutions.cas.org^ -||dnews.alfaromeo.it^ -||dnews.fiat.it^ -||domorewithless.adp.ca^ -||downeconomywp.advancedtech.com^ -||download.createyournextcustomer.com^ -||download.dnv.com^ -||downloads.advancedtech.com^ -||downloads.coface.com^ -||downloads.mcgladrey.com^ -||downpayment.fernsby.com^ -||dozententag.ni.com^ -||drive.seagate.com^ -||drugtest.questdiagnostics.com^ -||dsdordering.kdrp.com^ -||dtestpromo.fiat.it^ -||dx.thermo.com^ -||dx.thermofisher.com^ -||e-img.hover.to^ -||e-learning.brainshark.com^ -||e.beckmancoulter.com^ -||e.darpro-solutions.com^ -||e.fdm.dk^ -||e.gettyimages.ae^ -||e.gettyimages.co.jp^ -||e.gettyimages.co.nz^ -||e.gettyimages.in^ -||e.gettyimages.nl^ -||e.gettyimages.pt^ -||e.nicklauschildrens.org^ -||e.pomonaelectronics.com^ -||e10.verticurl.com^ -||eagle.aon.com^ -||eastern2.secureforms.mcafee.com^ -||eatonaero.advancedtech.com^ -||eb.informabi.com^ -||ebooks.javer.com.mx^ -||economicadvantage.midamerican.com^ -||economies.adp.ca^ -||ecvmbusiness.mtn.co.za^ -||ed1.comcastbiz.com^ -||edge.ricoh-europe.com^ -||edpsmart.edpcomunicacao.com.br^ -||education.bendigotafe.edu.au^ -||education.leads360.com^ -||education.moodybible.org^ -||education.ricoh.ch^ -||education.ricoh.fr^ -||education.velocify.com^ -||educontinua.javeriana.edu.co^ -||efficiency.nl.visma.com^ -||efficiency.visma.com^ -||efficiency.visma.dk^ -||efficiency.visma.fi^ -||efficiency.visma.lv^ -||efficiency.visma.se^ -||efm.verintsystemsinc.com^ -||ehtel.endress.com^ -||electronics.edm.globalsources.com^ -||electronics.tradeshow.globalsources.com^ -||elia.thermofisher.com^ -||elink.serasaexperian.com.br^ -||eloq.fiducial.fr^ -||eloqua-tracking.kaiserpermanente.org^ -||eloqua-tracking.unity.com^ -||eloqua-tracking.unity3d.com^ -||eloqua-trackings.unity.com^ -||eloqua-trackings.unity3d.com^ -||eloqua-uat.motorolasolutions.com^ -||eloqua.53.com^ -||eloqua.acspubs.org^ -||eloqua.apexsql.com^ -||eloqua.binarytree.com^ -||eloqua.brakepartsinc.com^ -||eloqua.certiport.com^ -||eloqua.digitalpi.com^ -||eloqua.eafit.edu.co^ -||eloqua.eft.com^ -||eloqua.emdmillipore.com^ -||eloqua.erwin.com^ -||eloqua.ethicalcorp.com^ -||eloqua.exploreliberty.com^ -||eloqua.eyeforpharma.com^ -||eloqua.eyefortravel.com^ -||eloqua.gdlcouncil.org^ -||eloqua.impactconf.com^ -||eloqua.incite-group.com^ -||eloqua.infobip.com^ -||eloqua.insurancenexus.com^ -||eloqua.juilliard.edu^ -||eloqua.liberty.edu^ -||eloqua.mindhub.com^ -||eloqua.mindhubpro.com^ -||eloqua.moschampionship.com^ -||eloqua.newenergyupdate.com^ -||eloqua.nissan.com.tw^ -||eloqua.nuclearenergyinsider.com^ -||eloqua.oneidentity.com^ -||eloqua.onelogin.com^ -||eloqua.pearsonvue.ae^ -||eloqua.pearsonvue.co.jp^ -||eloqua.pearsonvue.co.uk^ -||eloqua.pearsonvue.com.cn^ -||eloqua.pearsonvue.com^ -||eloqua.petchem-update.com^ -||eloqua.pointcode.fr^ -||eloqua.psl.com.au^ -||eloqua.quadrotech-it.com^ -||eloqua.quest.com^ -||eloqua.radware.com^ -||eloqua.raybestos.com^ -||eloqua.roche.com^ -||eloqua.saiganeshk.com^ -||eloqua.sigmaaldrich.com^ -||eloqua.soprasteria.co.uk^ -||eloqua.syslog-ng.com^ -||eloqua.teknos.com^ -||eloqua.ufm.edu^ -||eloqua.undergraduateexam.in^ -||eloqua.upstreamintel.com^ -||eloquaimages.e.abb.com^ -||eloquamarketing.masterlock.com^ -||eloquatrack.kistler.com^ -||eloquatracking.internationalsos.com^ -||eloquatracking.iqvia.com^ -||eloquatracking.mindbody.io^ -||elq-tracking.genomes.atcc.org^ -||elq-trk.fullsail.edu^ -||elq.accuity.com^ -||elq.adaptris.com^ -||elq.analog.com^ -||elq.ansible.com^ -||elq.artsfestival.org^ -||elq.axeslive.com^ -||elq.blackrock.com^ -||elq.cirium.com^ -||elq.efront.com^ -||elq.eg.co.uk^ -||elq.egi.co.uk^ -||elq.enterprisersproject.com^ -||elq.feedbacknow.com^ -||elq.fisherinvestments.com^ -||elq.forrester.com^ -||elq.hamamatsu.com^ -||elq.icis.com^ -||elq.insource.co.jp^ -||elq.irobot.com^ -||elq.keysight.com.cn^ -||elq.keysight.com^ -||elq.lansa.com^ -||elq.macu.com^ -||elq.mh.mercuryhealthcare.com^ -||elq.modelgroup.com^ -||elq.mouser.ca^ -||elq.mouser.cn^ -||elq.mouser.com.tr^ -||elq.mouser.com^ -||elq.mouser.dk^ -||elq.mouser.fr^ -||elq.mouser.hk^ -||elq.mouser.it^ -||elq.mouser.jp^ -||elq.mouser.pe^ -||elq.mouser.tw^ -||elq.nextens.nl^ -||elq.openshift.com^ -||elq.opensource.com^ -||elq.proagrica.com^ -||elq.proconnect.intuit.com^ -||elq.redhat.com^ -||elq.scanningpens.ca^ -||elq.scanningpens.com.au^ -||elq.scanningpens.com^ -||elq.sonicwall.com^ -||elq.symantec.com^ -||elq.utas.edu.au^ -||elq.xperthr.co.uk^ -||elq.xperthr.nl^ -||elqact.gartner.com^ -||elqapp.clevelandbrowns.com^ -||elqapp.spectrum.com^ -||elqforms.qnx.com^ -||elqjourney.pwc.com^ -||elqtrack.broadridge.com^ -||elqtrack.kubotausa.com^ -||elqtrack.logarithmicsolutions.com^ -||elqtrack.poly.com^ -||elqtracking.capella.edu^ -||elqtracking.cengage.com^ -||elqtracking.destinationretirement.co.uk^ -||elqtracking.flexera.com^ -||elqtracking.hitachi-powergrids.com^ -||elqtracking.hitachienergy.com^ -||elqtracking.hub-group.co.uk^ -||elqtracking.hubfinancialsolutions.co.uk^ -||elqtracking.justadviser.com^ -||elqtracking.macegroup.com^ -||elqtracking.medidata.com^ -||elqtracking.mercer-retirement.co.uk^ -||elqtracking.pensionbuddy.co.uk^ -||elqtracking.revenera.com^ -||elqtracking.richardsonrfpd.com^ -||elqtracking.sandbox.wearejust.co.uk^ -||elqtracking.strayer.edu^ -||elqtracking.wearejust.co.uk^ -||elqtrck.motor.no^ -||elqtrck.nanawall.com^ -||elqtrk.cn.morningstar.com^ -||elqtrk.cummins.com^ -||elqtrk.hk.morningstar.com^ -||elqtrk.ibbotson.co.jp^ -||elqtrk.insight.tech^ -||elqtrk.intel.cn^ -||elqtrk.intel.co.il^ -||elqtrk.intel.co.jp^ -||elqtrk.intel.co.kr^ -||elqtrk.intel.co.uk^ -||elqtrk.intel.com.au^ -||elqtrk.intel.com.br^ -||elqtrk.intel.com.tr^ -||elqtrk.intel.com.tw^ -||elqtrk.intel.com^ -||elqtrk.intel.de^ -||elqtrk.intel.es^ -||elqtrk.intel.fr^ -||elqtrk.intel.in^ -||elqtrk.intel.it^ -||elqtrk.intel.la^ -||elqtrk.intel.pl^ -||elqtrk.intel.ru^ -||elqtrk.intel.sg^ -||elqtrk.intelrealsense.com^ -||elqtrk.morningstar.be^ -||elqtrk.morningstar.ch^ -||elqtrk.morningstar.com.au^ -||elqtrk.morningstar.com^ -||elqtrk.morningstar.de^ -||elqtrk.morningstar.hk^ -||elqtrk.morningstar.it^ -||elqtrk.morningstar.nl^ -||elqtrk.morningstar.no^ -||elqtrk.my.morningstar.com^ -||elqtrk.rsmus.com^ -||elqtrk.thailand.intel.com^ -||elqtrk.tw.morningstar.com^ -||elqtrkstg.intel.com^ -||elqview.kofax.com^ -||elqview.kofax.de^ -||elqview.kofax.jp^ -||elqview.uclahealth.org^ -||elqview2.uclahealth.org^ -||els298548211.medtronic.com^ -||em-email.thermofisher.com^ -||em.thermofisher.com^ -||email-am.jll-mena.com^ -||email-am.jll.ca^ -||email-am.jll.ch^ -||email-am.jll.cl^ -||email-am.jll.co.il^ -||email-am.jll.co.kr^ -||email-am.jll.co.th^ -||email-am.jll.co.za^ -||email-am.jll.com.ar^ -||email-am.jll.com.au^ -||email-am.jll.com.co^ -||email-am.jll.com.mo^ -||email-am.jll.com.mx^ -||email-am.jll.cz^ -||email-am.jll.de^ -||email-am.jll.es^ -||email-am.jll.fr^ -||email-am.jll.hu^ -||email-am.jll.it^ -||email-am.jll.pe^ -||email-am.joneslanglasalle.co.jp^ -||email-am.joneslanglasalle.com.vn^ -||email-am.stage.ca.jll.com^ -||email-am.us.jll.com^ -||email-ap.jll-mena.com^ -||email-ap.jll.ca^ -||email-ap.jll.co.id^ -||email-ap.jll.co.il^ -||email-ap.jll.co.in^ -||email-ap.jll.co.kr^ -||email-ap.jll.co.th^ -||email-ap.jll.co.uk^ -||email-ap.jll.com.ar^ -||email-ap.jll.com.au^ -||email-ap.jll.com.hk^ -||email-ap.jll.com.lk^ -||email-ap.jll.com.mx^ -||email-ap.jll.com.my^ -||email-ap.jll.com.ph^ -||email-ap.jll.com.sg^ -||email-ap.jll.com.tw^ -||email-ap.jll.de^ -||email-ap.jll.fi^ -||email-ap.jll.fr^ -||email-ap.jll.lu^ -||email-ap.jll.nz^ -||email-ap.jll.pe^ -||email-ap.joneslanglasalle.co.jp^ -||email-ap.joneslanglasalle.com.cn^ -||email-ap.joneslanglasalle.com.vn^ -||email-cm.jll-mena.com^ -||email-cm.jll.ca^ -||email-cm.jll.cl^ -||email-cm.jll.co.id^ -||email-cm.jll.co.il^ -||email-cm.jll.co.uk^ -||email-cm.jll.com.au^ -||email-cm.jll.com.hk^ -||email-cm.jll.com.mx^ -||email-cm.jll.com.sg^ -||email-cm.jll.fi^ -||email-cm.jll.hu^ -||email-cm.jll.nz^ -||email-cm.jll.pe^ -||email-cm.jllsweden.se^ -||email-cm.joneslanglasalle.co.jp^ -||email-cm.joneslanglasalle.com.vn^ -||email-em.jll-mena.com^ -||email-em.jll.be^ -||email-em.jll.ca^ -||email-em.jll.ch^ -||email-em.jll.cl^ -||email-em.jll.co.id^ -||email-em.jll.co.uk^ -||email-em.jll.co.za^ -||email-em.jll.com.co^ -||email-em.jll.com.hk^ -||email-em.jll.com.tr^ -||email-em.jll.de^ -||email-em.jll.fi^ -||email-em.jll.fr^ -||email-em.jll.ie^ -||email-em.jll.it^ -||email-em.jll.lu^ -||email-em.jll.nl^ -||email-em.jll.pe^ -||email-em.jll.pl^ -||email-em.jll.pt^ -||email-em.jll.ro^ -||email-em.jllsweden.se^ -||email-em.joneslanglasalle.co.jp^ -||email-em.joneslanglasalle.com.cn^ -||email-em.us.jll.com^ -||email-hk.americanexpress.com^ -||email-tw.americanexpress.com^ -||email.carte-gr.total.fr^ -||email.hockeytown.com^ -||email.info.exclusive-networks.com^ -||email.lottehotel.com^ -||email.mymandg.co.uk^ -||email.softwareag.com^ -||emailhoteldevelopment.ihg.com^ -||emea-go.experian.com^ -||emeadm.rockwellautomation.com^ -||emeanews.secureforms.partnermcafee.com^ -||en-gb.siemensplmevents.com^ -||en-sg.siemensplmevents.com^ -||en-us.coloplastcare.com^ -||encompassreport.elliemae.com^ -||endo.dentsply.com^ -||energy.eneco.be^ -||enews.alfaromeo.it^ -||engage-emea.jll.com^ -||engage.3m.co.cr^ -||engage.3m.co.id^ -||engage.3m.co.ke^ -||engage.3m.co.kr^ -||engage.3m.co.rs^ -||engage.3m.co.th^ -||engage.3m.co.uk^ -||engage.3m.co.za^ -||engage.3m.com.ar^ -||engage.3m.com.au^ -||engage.3m.com.bo^ -||engage.3m.com.br^ -||engage.3m.com.cn^ -||engage.3m.com.co^ -||engage.3m.com.do^ -||engage.3m.com.dz^ -||engage.3m.com.ec^ -||engage.3m.com.ee^ -||engage.3m.com.es^ -||engage.3m.com.gt^ -||engage.3m.com.hk^ -||engage.3m.com.hn^ -||engage.3m.com.hr^ -||engage.3m.com.jm^ -||engage.3m.com.kw^ -||engage.3m.com.kz^ -||engage.3m.com.lv^ -||engage.3m.com.mx^ -||engage.3m.com.my^ -||engage.3m.com.ni^ -||engage.3m.com.pa^ -||engage.3m.com.pe^ -||engage.3m.com.pk^ -||engage.3m.com.pr^ -||engage.3m.com.pt^ -||engage.3m.com.py^ -||engage.3m.com.qa^ -||engage.3m.com.ro^ -||engage.3m.com.sa^ -||engage.3m.com.sg^ -||engage.3m.com.sv^ -||engage.3m.com.tn^ -||engage.3m.com.tr^ -||engage.3m.com.tt^ -||engage.3m.com.tw^ -||engage.3m.com.ua^ -||engage.3m.com.uy^ -||engage.3m.com.vn^ -||engage.3mabrasive.co.kr^ -||engage.3mae.ae^ -||engage.3maustria.at^ -||engage.3mbelgie.be^ -||engage.3mbelgique.be^ -||engage.3mbulgaria.bg^ -||engage.3mcanada.ca^ -||engage.3mchile.cl^ -||engage.3mcompany.jp^ -||engage.3mdanmark.dk^ -||engage.3mdeutschland.de^ -||engage.3megypt.com.eg^ -||engage.3mfrance.fr^ -||engage.3mhellas.gr^ -||engage.3mindia.in^ -||engage.3mireland.ie^ -||engage.3misrael.co.il^ -||engage.3mitalia.it^ -||engage.3mlietuva.lt^ -||engage.3mmagyarorszag.hu^ -||engage.3mmaroc.ma^ -||engage.3mnederland.nl^ -||engage.3mnorge.no^ -||engage.3mnz.co.nz^ -||engage.3mphilippines.com.ph^ -||engage.3mpolska.pl^ -||engage.3mprivacyfilter.co.kr^ -||engage.3msafety.co.kr^ -||engage.3mschweiz.ch^ -||engage.3mslovensko.sk^ -||engage.3msuisse.ch^ -||engage.3msuomi.fi^ -||engage.3msverige.se^ -||engage.avalara.com^ -||engage.broadcom.com^ -||engage.build.com^ -||engage.dow.com^ -||engage.ferguson.com^ -||engage.hamiltoncaptel.com^ -||engage.informaconstructionmarkets.com^ -||engage.jacksonhewitt.com^ -||engage.jboss.com^ -||engage.jlclive.com^ -||engage.marketone.com^ -||engage.neogen.com^ -||engage.nuance.com^ -||engage.nuance.fr^ -||engage.poolspapatio.com^ -||engage.richardsonrfpd.com^ -||engage.shl.com^ -||engage.siriusdecisions.com^ -||engage.unisa.edu.au^ -||engage.uq.edu.au^ -||engage2demand.cisco.com^ -||engagemetrics.cisco.com^ -||engageru.3mrussia.ru^ -||engageru2.3mrussia.ru^ -||enquiry.marketingcube.com.au^ -||enterprise.dnb.ca^ -||enterprise2.secureforms.mcafee.com^ -||enterprises.proximus.be^ -||ep.regis.edu^ -||eqclicks.movember.com^ -||eqs.accountants.intuit.com^ -||eqs.intuit.com^ -||eqtrack.americashomeplace.com^ -||eroar.lionsclubs.org^ -||es-business.vodafone.com^ -||es-es.siemensplmevents.com^ -||es-go.experian.com^ -||es-mktg.vodafone.com^ -||es-sa.siemensplmevents.com^ -||es.adpinfo.com^ -||etc.lxhausys.com^ -||etk.locusrobotics.com^ -||etrack.ext.arubainstanton.com^ -||etrack.ext.arubanetworks.com^ -||etrack.ext.hpe.com^ -||ets.ni.com^ -||etscampaign.motorola.com^ -||eu.business.samsung.com^ -||eu.cignaglobalhealth.com^ -||eu.ironmountain.com^ -||eufunding.ukri.org^ -||eumeainfo.motorolasolutions.com^ -||eurotax-at.autovistagroup.com^ -||eurotax-be.autovistagroup.com^ -||eurotax-ch.autovistagroup.com^ -||eurotax-cz.autovistagroup.com^ -||eurotax-es.autovistagroup.com^ -||eurotax-hr.autovistagroup.com^ -||eurotax-hu.autovistagroup.com^ -||eurotax-nl.autovistagroup.com^ -||eurotax-pl.autovistagroup.com^ -||eurotax-pt.autovistagroup.com^ -||eurotax-ro.autovistagroup.com^ -||eurotax-si.autovistagroup.com^ -||eurotax-sk.autovistagroup.com^ -||eurotaxsrbija-si.autovistagroup.com^ -||evelynn.landing.ni.com^ -||evenement.ricoh.fr^ -||event.boozallen.com^ -||event.clubcorp.com^ -||event.dnv.com^ -||event.grassicpas.com^ -||event.jma.or.jp^ -||event.ortec.com^ -||event.raise3d.cn^ -||event.seatradecruiseevents.com^ -||event.seatradecruiseglobal.com^ -||event.thermofisher.com^ -||event.thermoscientific.cn^ -||event.thermoscientific.com^ -||event1.thermofisher.com^ -||event1.thermoscientific.com^ -||event3.thermofisher.com^ -||event3.thermoscientific.com^ -||eventos.abastur.com^ -||eventos.cihac.com^ -||eventos.mirecweek.com^ -||eventos.ubmmexico.com^ -||eventos.usj.es^ -||events.accuity.com^ -||events.avaya.com^ -||events.bendigotafe.edu.au^ -||events.blackboard.com^ -||events.careallies.com^ -||events.centex.com^ -||events.cigna.com^ -||events.coface.com^ -||events.elliemae.com^ -||events.engage.cebglobal.com^ -||events.executiveboard.com^ -||events.ferrari.com^ -||events.forddirectdealers.com^ -||events.glory-global.com^ -||events.gogoair.com^ -||events.golubcapital.com^ -||events.icmi.com^ -||events.interface.com^ -||events.kangan.edu.au^ -||events.marketingcube.com.au^ -||events.mbrl.ae^ -||events.mcgladrey.com^ -||events.mywd.com^ -||events.ndtco.com^ -||events.nuance.com^ -||events.oakstreethealth.com^ -||events.oddo-bhf.com^ -||events.pella.com^ -||events.rewe-group.at^ -||events.ricoh.ch^ -||events.ricoh.de^ -||events.ricoh.ie^ -||events.tafensw.edu.au^ -||events.verticurl.com^ -||exchange.carte-gr.total.fr^ -||execgroup.convio.com^ -||exhibit.coteriefashionevents.com^ -||exhibit.firex.co.uk^ -||exhibit.kbb.co.uk^ -||exhibit.magicfashionevents.com^ -||exhibit.myfashionevents.com^ -||exhibit.safety-health-expo.co.uk^ -||exhibit.ubm-events.com^ -||exhibition.edm.globalsources.com^ -||experience.aifsabroad.com^ -||experience.blackbaud.com^ -||experience.comcastbiz.com^ -||experience.jcu.edu.au^ -||experience.limelight.com^ -||experience.micromine.kz^ -||experience.phenomenex.com^ -||experience.rsm.com.au^ -||experience2013.elliemae.com^ -||experienceplatform.avaya.com^ -||experiencia.coopecaja.fi.cr^ -||expertise.logarithmicsolutions.com^ -||explore-dev.agilent.com^ -||explore-ft.agilent.com^ -||explore-uat.agilent.com^ -||explore.agilent.com^ -||explore.att.com^ -||explore.broncos.com.au^ -||explore.epsilon.com^ -||explore.firstnet.com^ -||explore.flexera.com^ -||explore.revenera.com^ -||explore.waldenu.edu^ -||ezgo.advancedtech.com^ -||facey.psjhealth.org^ -||factory.redbull.racing^ -||fan.info.heat.com^ -||fashion.edm.globalsources.com^ -||fashion.tradeshow.globalsources.com^ -||fasttrack.americanexpress.co.uk^ -||featured.bradyid.com^ -||fedexfield.redskins.com^ -||feedback.aon.com^ -||feedback.avigilon.com^ -||feedback.lifeguardarena.com^ -||feedback.nslsc-csnpe.ca^ -||ferias.usj.es^ -||files.info.posteitaliane.it^ -||findthetruth.allergyai.com^ -||fire.solutions.jci.com^ -||firstparty1.dentsplysirona.com^ -||firstpartycookie.gettyimages.com^ -||firstpartycookie.istockphoto.com^ -||flavors.firmenich.com^ -||food.informaengage.com^ -||food.pentonmarketingsvcs.com^ -||foodbrochure.advancedtech.com^ -||forex.americanexpress.com^ -||form.fusesource.com^ -||form.harvardbusiness.org^ -||form.innovative-design-lab.com^ -||form.vocalink.com^ -||formaciones.arin-innovation.com^ -||forms-emea.lenovo.com^ -||forms.anthology.com^ -||forms.b.oncourselearning.com^ -||forms.bankersalmanac.com^ -||forms.blackboard.com^ -||forms.bmc.com^ -||forms.bradyid.com^ -||forms.burriswindows.com^ -||forms.businessnews.telstra.com^ -||forms.campusmanagement.com^ -||forms.capitaliq.com^ -||forms.comcast-spectacor.com^ -||forms.cybersource.com^ -||forms.direxionfunds.com^ -||forms.egi.co.uk^ -||forms.embarcadero.com^ -||forms.enterprisenews.telstra.com^ -||forms.erepublic.com^ -||forms.executiveboard.com^ -||forms.fidelity.ca^ -||forms.fircosoft.com^ -||forms.fitchratings.com^ -||forms.flightglobal.com^ -||forms.icis.com^ -||forms.infor.com^ -||forms.irdeto.com^ -||forms.juniper.net^ -||forms.lenovo.com^ -||forms.mcgladrey.com^ -||forms.mdreducation.com^ -||forms.messe-muenchen.de^ -||forms.nexsan.com^ -||forms.nrs-inc.com^ -||forms.pella.com^ -||forms.pentonmarketingservices.com^ -||forms.personneltoday.com^ -||forms.poweritpro.com^ -||forms.progress.com^ -||forms.sharjahart.org^ -||forms.smarterbusiness.telstra.com^ -||forms.solarwinds.com^ -||forms.systeminetwork.com^ -||forms.telstraglobal.com^ -||forms.trendmicro.co.jp^ -||forms.vaisala.com^ -||forms.verisigninc.com^ -||forms.vistage.com^ -||forms.vmtechpro.com^ -||forms.web.roberthalf.com^ -||forms.xperthr.co.uk^ -||forms.xperthr.com^ -||forms.xtralis.com^ -||forms2.vistage.com^ -||fp.kalevavakuutus.fi^ -||fp.mandatum.fi^ -||fp.mandatumlife.fi^ -||fp.mandatumtrader.fi^ -||fpc.acpinternist.org^ -||fpc.acpjournals.org^ -||fpc.acponline.org^ -||fpc.annals.org^ -||fpc.arborcrowd.com^ -||fpc.attcenter.com^ -||fpc.cebglobal.com^ -||fpc.choosemylo.com^ -||fpc.ciel.com^ -||fpc.consumerportfolio.com^ -||fpc.gartner.com^ -||fpc.golubcapital.com^ -||fpc.immattersacp.org^ -||fpc.inxinternational.com^ -||fpc.laerdal.com^ -||fpc.pelican.com^ -||fpc.questoraclecommunity.org^ -||fpc.sage.com^ -||fpc.sg2.com^ -||fpc.singleplatform.com^ -||fpc.trimarkusa.com^ -||fpc.utexas.edu^ -||fpcdallasstars.nhl.com^ -||fpcsbulls.nba.com^ -||fpt.inxinternational.com^ -||fr-go.experian.com^ -||fr.adpinfo.com^ -||fr.contact.alphabet.com^ -||france.alphabet.com^ -||frc.redcross.fi^ -||fromhttptohttps.atea.fi^ -||frostnsullivan.advancedtech.com^ -||fusiontechnology.arrow.com^ -||future.coniferhealth.com^ -||future.jcu.edu.au^ -||future.uwindsor.ca^ -||fvc.alcatel-lucent.com^ -||fxipca.americanexpress.ca^ -||fxipreferral.americanexpress.com^ -||fxipwelcome.americanexpress.ca^ -||fxpayments.americanexpress.co.nz^ -||fxpayments.americanexpress.com.au^ -||fxreferral.americanexpress.com^ -||gateway.aimia.com^ -||gb.click.finning.com^ -||gba.kwm.com^ -||gbl.radware.com^ -||gbtracking.cubiq.com^ -||gbtracking.finning.com^ -||gc.titans.com.au^ -||gccmembershiprewards.americanexpress.de^ -||gccmembershiprewards.americanexpress.it^ -||gcn.tuv.com^ -||gdg.gardnerdenver.com^ -||gdmelqact.gartner.com^ -||gestiondocumentaire.ricoh.fr^ -||get.anthem.com^ -||get.diamanti.com^ -||get.docusign.com^ -||get.empireblue.com^ -||get.nl.ukg.be^ -||get.sage.com^ -||get.ukg.be^ -||get.ukg.ca^ -||get.ukg.co.uk^ -||get.ukg.com.au^ -||get.ukg.de^ -||get.ukg.fr^ -||get.ukg.in^ -||get.ukg.mx^ -||get.ukg.nl^ -||getconnected.infor.com^ -||getinfo.fullsail.edu^ -||ghp.adp.ca^ -||glass.autovistagroup.com^ -||glassguide-au.autovistagroup.com^ -||global-go.experian.com^ -||global-mktg.transunion.com^ -||global.cphi-china.cn^ -||global.fia-china.com^ -||global.successfactors.com^ -||global.zenprise.com^ -||globalbanking.wolterskluwer.com^ -||globaleloqua.americanexpress.com^ -||globalsolutions.risk.lexisnexis.com^ -||gn.informaengage.com^ -||go-communications.comed.com^ -||go-elqau.oracle.com^ -||go-marketing.comed.com^ -||go-response.thermofisher.com^ -||go-stage.oracle.com^ -||go.accredible.com^ -||go.air-electra.co.il^ -||go.ali-cle.org^ -||go.avalara.com^ -||go.avon.sk^ -||go.axione.com^ -||go.azets.dk^ -||go.azets.fi^ -||go.azets.no^ -||go.azets.se^ -||go.bandits.com^ -||go.billsmafia.com^ -||go.blackboard.com^ -||go.blackrock.com^ -||go.bouygues-construction.com^ -||go.brightspace.com^ -||go.canadalifecentre.ca^ -||go.cargotec.com^ -||go.carrefourclub.co.il^ -||go.century21.fr^ -||go.cf.labanquepostale.fr^ -||go.client.gazpasserelle.engie.fr^ -||go.climate.emerson.com^ -||go.comcastspectacor.com^ -||go.computacenter.com^ -||go.comres.emerson.com^ -||go.comres1.emerson.com^ -||go.contact.alphabet.com^ -||go.cornerstonebuildingbrands.com^ -||go.dallasstars.com^ -||go.deltek.com^ -||go.dunnhumby.com^ -||go.dxc.technology^ -||go.e.mailchimp.com^ -||go.earlywarning.com^ -||go.econnect.dellmed.utexas.edu^ -||go.edmontonoilers.com^ -||go.electra-consumer.co.il^ -||go.emeadatacenter.services.global.ntt^ -||go.emersonautomation.com^ -||go.engineeringim.com^ -||go.enterprise.spectrum.com^ -||go.event.eset.com^ -||go.exactonline.de^ -||go.exactonline.fr^ -||go.exactonline.nl^ -||go.eyefinity.com^ -||go.fairviewmicrowave.com^ -||go.fhlbny.com^ -||go.flukebiomedical.com^ -||go.fortifybuildingsolutions.com^ -||go.greenlee.emerson.com^ -||go.hager.com^ -||go.hager.ie^ -||go.hager.nl^ -||go.hager.pl^ -||go.hager.se^ -||go.healthgrades.com^ -||go.hello.navan.com^ -||go.heritagebuildings.com^ -||go.hitachienergy.com^ -||go.hocoma.com^ -||go.imaginecommunications.com^ -||go.info.verifi.com^ -||go.info.verticurl.com^ -||go.insinkerator.emerson.com^ -||go.int.vsp.com^ -||go.integraoptics.com^ -||go.intercall.com^ -||go.inxinternational.com^ -||go.itsehoitoapteekki.fi^ -||go.kareo.com^ -||go.klauke.emerson.com^ -||go.kurumsal.vodafone.com.tr^ -||go.l-com.com^ -||go.labcorp.com^ -||go.lasvegasaces.com^ -||go.laurelsprings.com^ -||go.mashery.com^ -||go.metallic.com^ -||go.mge.com^ -||go.milestek.com^ -||go.mitesp.com^ -||go.morningstar.com^ -||go.motivcx.com^ -||go.mwe.com^ -||go.my.elca.ch^ -||go.navepoint.com^ -||go.netwitness.com^ -||go.news.loyaltycompany.com^ -||go.oilkings.ca^ -||go.paze.com^ -||go.pearsonvue.com^ -||go.petrelocation.com^ -||go.plygem.com^ -||go.primeone.cloud^ -||go.protools.emerson.com^ -||go.psentertainment.com^ -||go.reach.utep.edu^ -||go.ridgid.emerson.com^ -||go.robertsonbuildings.com^ -||go.rochesterknighthawks.com^ -||go.rohrer.com^ -||go.sabres.com^ -||go.securitymsp.cisco.com^ -||go.servicenow.com^ -||go.sfcg.com^ -||go.sgs.com^ -||go.shutterstock.com^ -||go.sseairtricity.com^ -||go.steelbuilding.com^ -||go.syncsketch.com^ -||go.teknos.com^ -||go.teledynemarine.com^ -||go.testo.com^ -||go.transtector.com^ -||go.tuev.cn^ -||go.tuv.com^ -||go.ubmamg-media.com^ -||go.ukg.com^ -||go.ultimatesoftware.com^ -||go.visma.com^ -||go.vitality.com.ar^ -||go.vitalitybrasil.com^ -||go.vitecgroup.com^ -||go.vue.com^ -||go.wacom.com^ -||go.west.com^ -||go.www4.earlywarning.com^ -||go.zellepay.com^ -||go.zendesk.com^ -||go2.kofax.com^ -||go2.mathworks.com^ -||go5.global.toshiba^ -||gocertiport.pearsonvue.com^ -||gomerchant.groupon.com^ -||goto.firsttechfed.com^ -||goto.heartlandpaymentsystems.com^ -||government.informaengage.com^ -||governmentcloud.avaya.com^ -||gp.oddo-bhf.com^ -||gr-business.vodafone.com^ -||gr-go.experian.com^ -||grc2.secureforms.mcafee.com^ -||groundcare.dixiechopper.com^ -||groups.heatexperience.com^ -||grow.national.biz^ -||gsasolutionssecure.gsa.gov^ -||gslive.edm.globalsources.com^ -||gsmatch.edm.globalsources.com^ -||gsol.edm.globalsources.com^ -||gsols.edm.globalsources.com^ -||gsupplyair.carte-gr.total.fr^ -||guest.vistage.com^ -||happyholidays.coniferhealth.com^ -||harris.ni.com^ -||hasslefree.redwingshoes.com^ -||health.aonunited.com^ -||health.atlanticgeneral.org^ -||health.fishersci.com^ -||health.info.baptisthealth.com^ -||healthcare.fishersci.com^ -||healthcare.mcgladrey.com^ -||healthcare.oakstreethealth.com^ -||healthcare.thermofisher.com^ -||healthier.aahs.org^ -||healthier.luminishealth.org^ -||hello.bpost.be^ -||hello.bpost2.be^ -||hello.effervescents.com^ -||hello.grattezvotrecadeau.be^ -||hello.lesarcs-peiseyvallandry.com^ -||hello.ops.bpost.be^ -||hello.postuler.bpost.be^ -||hello.solliciteren.bpost.be^ -||hello.stbpost.be^ -||hello.trailblazers.com^ -||helpdesk.thinkhdi.com^ -||highered.franklincovey.com^ -||highlights-schadenmanager.schwacke.de^ -||highlights-schwackenet.schwacke.de^ -||hk-go.experian.com^ -||home.edm.globalsources.com^ -||hopeful.coh.org^ -||horizoneurope.ukri.org^ -||hospitality.redbull.racing^ -||hptechnology.arrow.com^ -||hr.adp.ca^ -||hsa.wageworks.info^ -||htc.oaken.com^ -||httr.redskins.com^ -||hu-business.vodafone.com^ -||hvac.solutions.jci.com^ -||i-ready.curriculumassociates.com^ -||i.moneytransfer.travelex.com^ -||ibmtechnology.arrow.com^ -||ideas.nanawall.com^ -||iduk.barcodesgroup.com^ -||ie-business.vodafone.com^ -||ie-go.experian.com^ -||ie-mktg.vodafone.com^ -||ieg.intel.com^ -||ifi-trk.informa.com^ -||iiceq.intuit.com^ -||image.go.aricent.com^ -||image.info.perkinelmer.com^ -||image.now.beyondtrust.info^ -||image.success.bluewolf.com^ -||image.thermoscientific.com^ -||imagenes.ubmmexico.com^ -||imagens.conteudo.algartelecom.com.br^ -||images.a.flukebiomedical.com^ -||images.access.imaginelearning.com^ -||images.aepinfo.com^ -||images.alliances.infor.com^ -||images.annuities.sfgmembers.com^ -||images.app.imaginecommunications.com^ -||images.arcb.com^ -||images.assets.aapa.org^ -||images.at.datawatch.com^ -||images.b2bindia.samsung.com^ -||images.b2bmkt.samsung.com^ -||images.bbs.barclaycard.co.uk^ -||images.bio.ozyme.fr^ -||images.biz.blackberry.com^ -||images.blackhat.com^ -||images.bncontacto.fi.cr^ -||images.bounceback.chiesiusa.com^ -||images.brand.j2.com^ -||images.business.fedex.com^ -||images.business.lenovo.com^ -||images.by.sensiolabs.com^ -||images.campaign.crmit.com^ -||images.campaign.reedexpo.at^ -||images.campaign.reedexpo.co.uk^ -||images.campaign.reedexpo.com^ -||images.campaign.reedexpo.de^ -||images.campaigns-qa.fidelity.com^ -||images.care.gundersenhealth.org^ -||images.care.ssmhealth.com^ -||images.care.tgh.org^ -||images.cargomarketing.email.aa.com^ -||images.chbusiness.samsung.com^ -||images.checkpoint.thomsonreuters.biz^ -||images.chef-lavan.tnuva.co.il^ -||images.cloud.cssus.com^ -||images.cloud.secure-24.com^ -||images.cloud.travelport.com^ -||images.cmbinsight.hsbc.com^ -||images.com.bouygues-es.com^ -||images.comm.pwc.com.br^ -||images.commercecloudevents.salesforce.com^ -||images.comms.cirium.com^ -||images.communication.carsales.com.au^ -||images.communication.maerskline.com^ -||images.communications.aldar.com^ -||images.communications.bt.com^ -||images.community.aidshealth.org^ -||images.compasslearning.biz^ -||images.comunicaciones.prosegur.es^ -||images.connect.ais.arrow.com^ -||images.connect.cebglobal.com^ -||images.connect.globalservices.arrow.com^ -||images.connect.hpe.com^ -||images.connect.mandiant.com^ -||images.connect.o2.co.uk^ -||images.connect.omron.eu^ -||images.connect.veritivcorp.com^ -||images.connect2.bt.com^ -||images.connect2.cebglobal.com^ -||images.connect2.globalservices.bt.com^ -||images.constellation.quintiles.com^ -||images.contact.cigna.com^ -||images.contact.princess.com^ -||images.contact.staubli.com^ -||images.contacto.unis.edu.gt^ -||images.content.aces-int.com^ -||images.content.dp.ae^ -||images.content.ser.de^ -||images.cornerstonebuildingbrands.com^ -||images.corp.berger-levrault.com^ -||images.crazynews.crazyshirts.com^ -||images.createyournextcustomer.com^ -||images.crowecomm.crowehorwath.com^ -||images.cs.consultdss.com^ -||images.cs.dsmihealth.com^ -||images.daikinchemicals.com^ -||images.deals.carpetone.com^ -||images.decisionhealth.com^ -||images.demand.awspls.com^ -||images.demand.brainshark.com^ -||images.demand.mcafee.com^ -||images.demand.naseba.com^ -||images.digital-markets.gartner.com^ -||images.directvbiz.att-mail.com^ -||images.discover.changehealthcare.com^ -||images.dm.itesm.mx^ -||images.donotreply.prudential.com^ -||images.drive.mercedes-benz.se^ -||images.dubaiholding.ae^ -||images.dvubootcamp.devry.edu^ -||images.e-insight.autovistagroup.com^ -||images.e-mail.deloittecomunicacao.com.br^ -||images.e.aquent.com^ -||images.e.bengals.com^ -||images.e.brother.com^ -||images.e.bulls.com^ -||images.e.chiefs.com^ -||images.e.congressionalfcu.org^ -||images.e.corenetglobal.org^ -||images.e.denverbroncos.com^ -||images.e.environicsanalytics.com^ -||images.e.gallup.com^ -||images.e.good2gotravelinsurance.com.au^ -||images.e.hillsbank.com^ -||images.e.ice.com^ -||images.e.istockphoto.com^ -||images.e.lexisnexis.com^ -||images.e.midmark.com^ -||images.e.mylanlabs.com^ -||images.e.pcm.com^ -||images.e.realtor.com^ -||images.e.royalmail.com^ -||images.e.seagate.com^ -||images.e.skandia.pl^ -||images.e.tcichemicals.com^ -||images.e.transunion.com^ -||images.e.tycois.com^ -||images.e.westuc.com^ -||images.e.xtelligentmedia.com^ -||images.e2.aig.com^ -||images.e3.aig.com^ -||images.edgenuity.com^ -||images.edm.carnivalaustralia.com^ -||images.edm.cunardinoz.com.au^ -||images.edm.princesscruises.com.au^ -||images.edm.propertyguru.com^ -||images.education.ifebp.org^ -||images.eloqua.fredhutch.org^ -||images.em.email-prudential.com^ -||images.em.groupon.com^ -||images.em.tdgarden.com^ -||images.email.air-worldwide.com^ -||images.email.fico.com^ -||images.email.hkaf.org^ -||images.emails.bokfinancial.com^ -||images.emails.ipcmedia.co.uk^ -||images.emarketing.hccs.edu^ -||images.emarketing.heat.com^ -||images.en25content.twilio.com^ -||images.energysolutions.evergy.com^ -||images.engage.brunswickgroup.com^ -||images.engage.cebglobal.com^ -||images.engage.elliemae.com^ -||images.engage.hamiltontel.com^ -||images.engage.hp.com^ -||images.engage.mettel.net^ -||images.engage.mims.com^ -||images.engage.nexperia.com^ -||images.engage.parexel.com^ -||images.engage.ubc.ca^ -||images.engageemea.jll.com^ -||images.enrollment.sunywcc.edu^ -||images.entreprise.com-bpifrance.fr^ -||images.eq.tm.intuit.com^ -||images.excellence.americanregistry.com^ -||images.experience.eneco.be^ -||images.explore.behr.com^ -||images.explore.editionhotels.com^ -||images.fans.mlse.com^ -||images.fanservices.jaguars.com^ -||images.financial-risk-solutions.thomsonreuters.info^ -||images.flippengroup.com^ -||images.fmpracticemanagement.lexisnexis.com^ -||images.frbusiness.samsung.com^ -||images.gc.georgiancollege.ca^ -||images.gcom.cigna.com^ -||images.get.kareo.com^ -||images.global.thomsonreuters.com^ -||images.globalempcomm.visa.com^ -||images.globalscm.eaton.com^ -||images.go.aifs.com^ -||images.go.alightsolutions.com^ -||images.go.anixter.com^ -||images.go.attcenter.com^ -||images.go.bge.com^ -||images.go.bluejacketslink.com^ -||images.go.braintreepayments.com^ -||images.go.broadridge1.com^ -||images.go.bryantstratton.edu^ -||images.go.citimortgage.com^ -||images.go.consumer.vsp.com^ -||images.go.cummins.com^ -||images.go.dentsplysirona.com^ -||images.go.diverseeducation.com^ -||images.go.elementfleet.com^ -||images.go.fastweb.it^ -||images.go.firsttechfed.com^ -||images.go.hardware.group^ -||images.go.hulft.com^ -||images.go.ifund.com.hk^ -||images.go.impinj.com^ -||images.go.insidelpl.com^ -||images.go.inxintl.com^ -||images.go.jll.com^ -||images.go.kpmgisraelmail.co.il^ -||images.go.mathworks.com^ -||images.go.metagenics.com^ -||images.go.mongodb.com^ -||images.go.na.sage.com^ -||images.go.optotechnik.zeiss.com^ -||images.go.pelican.com^ -||images.go.pioneer.com^ -||images.go.siriusdecisions.com^ -||images.go.staubli.com^ -||images.go.tennisfame.com^ -||images.go.thermofisher.com^ -||images.go.thompson.com^ -||images.go.trimarkusa.com^ -||images.go.vertivco.com^ -||images.grootzakelijk.kpn.com^ -||images.groupcommunications.royalmail.com^ -||images.guidance.choosemylo.com^ -||images.h.analog.com^ -||images.health.stlukes-stl.com^ -||images.healthlink.rsfh.com^ -||images.hq.scorecardrewards.com^ -||images.i.mesosphere.com^ -||images.identity.okta.com^ -||images.igdg.gardnerdenver.com^ -||images.ihs.com^ -||images.images.compagniedesalpes.fr^ -||images.ime.quintiles.com^ -||images.in.my1961.com^ -||images.info.acelatinamerica.com^ -||images.info.alibabacloud.com^ -||images.info.amexgbt.com^ -||images.info.aviationweek.com^ -||images.info.celum.com^ -||images.info.clubcorp.com^ -||images.info.coleparmer.com^ -||images.info.coopenae.fi.cr^ -||images.info.coopeservidores.fi.cr^ -||images.info.dfsco.com^ -||images.info.fibia.dk^ -||images.info.fticonsulting.com^ -||images.info.grenke.com^ -||images.info.grupovaughan.com^ -||images.info.informex.com^ -||images.info.innovateuk.org^ -||images.info.intrawest.com^ -||images.info.kpmgrealinsights.com^ -||images.info.la-z-boy.com^ -||images.info.legalsolutions.thomsonreuters.co.uk^ -||images.info.mercuryinsurance.com^ -||images.info.mercycare.org^ -||images.info.microstrategy.com^ -||images.info.monumentalsports.com^ -||images.info.newhope.com^ -||images.info.patheon.com^ -||images.info.pentontech.com^ -||images.info.posteitaliane.it^ -||images.info.proov.io^ -||images.info.rcgt.com^ -||images.info.resursbank.se^ -||images.info.rodekors.no^ -||images.info.seatradecruiseglobal.com^ -||images.info.shinoken.com^ -||images.info.siemensplmevents.com^ -||images.info.solidab.se^ -||images.info.telogis.com^ -||images.info.totalfleet.fr^ -||images.info.tupperware.at^ -||images.info.tupperware.be^ -||images.info.tupperware.de^ -||images.info.tupperware.pt^ -||images.info.tycosimplexgrinnell.com^ -||images.info.veritas.com^ -||images.info.visma.com^ -||images.info.wearejust.co.uk^ -||images.info.yourmobilitypartner.com^ -||images.info.yoursolutionspartner.com^ -||images.info.yousee.dk^ -||images.infofreddiemac.com^ -||images.informador.davivienda.com^ -||images.information.thmarch.co.uk^ -||images.inport.princess.com^ -||images.insight.extrahop.com^ -||images.insight.intrado.com^ -||images.insurance.leavitt.com^ -||images.integrity.synopsys.com^ -||images.interact.jll.com^ -||images.internalcomms.ntt.com^ -||images.it.business.samsung.com^ -||images.ita.ice.it^ -||images.join.masaisrael.org^ -||images.kampanjat.yle.fi^ -||images.klubb.bonnier.se^ -||images.lauthorities.com^ -||images.learn.arborcrowd.com^ -||images.learn.blr.com^ -||images.learn.cmdgroup.com^ -||images.learn.deloitte.com^ -||images.learn.drivemedical.com^ -||images.learn.follett.com^ -||images.learn.hitachiconsulting.com^ -||images.learn.hmhco.com^ -||images.learn.internationalsosfoundation.org^ -||images.learn.pharmacyclics.com^ -||images.learn.queenslibrary.org^ -||images.learn.shredit.com^ -||images.learn.unisourceworldwide.com^ -||images.link.penton3.com^ -||images.link.pentonagriculture.com^ -||images.link.pentonauto.com^ -||images.link.pentonaviation.com^ -||images.link.pentoncem.com^ -||images.link.pentonfinancialservices.com^ -||images.link.pentonfoodnews.com^ -||images.link.pentonlsm.com^ -||images.link.pentonnews.com^ -||images.livecreative.creativecircle.com^ -||images.logisticsnews.dbschenker.com^ -||images.loyalty.lindtusa.com^ -||images.lubricants.petro-canada.com^ -||images.luv.winsupplyinc.com^ -||images.m.onepeloton.com^ -||images.ma.kikusuiamerica.com^ -||images.mail-fellowesbrands.com^ -||images.mail.coloplast.com^ -||images.mail.dolce-gusto.com^ -||images.mail.tena.de^ -||images.mail01.arealink.co.jp^ -||images.mail01.learn.internationalsos.com^ -||images.mailaway.abritel.fr^ -||images.mailaway.fewo-direkt.de^ -||images.mailaway.homeaway.com^ -||images.mailaway.vrbo.com^ -||images.mailinfo.clarivate.com^ -||images.mailing.morningstar.com^ -||images.marketing-de.sage.com^ -||images.marketing.box.com^ -||images.marketing.bpp.com^ -||images.marketing.businessdirect.bt.com^ -||images.marketing.centerpointenergy.com^ -||images.marketing.deltaww.com^ -||images.marketing.demandfrontier.com^ -||images.marketing.emaarinfo.com^ -||images.marketing.habtoormotors.com^ -||images.marketing.henryscheinpracticesolutions.com^ -||images.marketing.invacare.com^ -||images.marketing.irobot.com^ -||images.marketing.kaec.net^ -||images.marketing.kaweahhealth.org^ -||images.marketing.ncc.se^ -||images.marketing.netapp.com^ -||images.marketing.richardsonrfpd.com^ -||images.marketing.selligent.com^ -||images.marketing.statistica.io^ -||images.marketing.strategic-i.com^ -||images.marketing.swhyhk.com^ -||images.marketing.zeusinc.com^ -||images.matservice.fcagroup.com^ -||images.max.max-finance.co.il^ -||images.mdtinternal.com^ -||images.medlem.naf.no^ -||images.medtronicdiabetes.com^ -||images.messages.seagate.com^ -||images.mkt.acindar.com.ar^ -||images.mkt.movida.com.br^ -||images.mkt.nectarconsulting.com.br^ -||images.mkt.zoominfo.com^ -||images.mkt.zte.com.cn^ -||images.mktg.dynabook.com^ -||images.mktgassets.symantec.com^ -||images.mm.eulerhermes.com^ -||images.moparservice.mopar.eu^ -||images.moresand.co.uk^ -||images.my1961.com^ -||images.myhealthyfinances.com^ -||images.myhome.modernize.com^ -||images.na.agcocorp.com^ -||images.na.sage.com^ -||images.nasdaqtech.nasdaq.com^ -||images.nationalproduction.wgbh.org^ -||images.news.auchan.lu^ -||images.news.extrahop.com^ -||images.news.lavoro.gov.it^ -||images.news.meraas.com^ -||images.news.panasonic.asia^ -||images.news.psjhealth.org^ -||images.news.thunderinsider.com^ -||images.news.wiley.com^ -||images.newsletter.hach.com.cn^ -||images.newsletter.larksuite.com^ -||images.newsletter.rewe-group.at^ -||images.notice.wageworks.com^ -||images.noticias.clarin.com^ -||images.notifications.aigdirect.com^ -||images.novedades.fibercorp.com.ar^ -||images.nwinsurance.pemco.com^ -||images.offers.princesscruises.co.uk^ -||images.on.karnovgroup.com^ -||images.online.bankofjordan.com.jo^ -||images.online.chancellors.co.uk^ -||images.online.mt.com^ -||images.ops.mailbpost.be^ -||images.oracle.netsuite.com^ -||images.outreach.pewtrusts.org^ -||images.p.smflc.jp^ -||images.pages.brightedge.com^ -||images.partner.fisglobal.com^ -||images.partnersupport.samsung.com^ -||images.performance.volvotrucks.com^ -||images.perspectives.jll.com^ -||images.portal.keppelelectric.com^ -||images.pr.thomsonreuters.com^ -||images.premier.email.shutterstock.com^ -||images.premiumdr.jp^ -||images.pride.kenya-airways.com^ -||images.pro.compagniedesalpes.fr^ -||images.programme.mavieclaire.com^ -||images.promo.mopar.eu^ -||images.protect-us.eset.com^ -||images.publicidad.cajalosandes.cl^ -||images.publishing.wiley.com^ -||images.purl.mercedes-benz.com^ -||images.query.adelaide.edu.au^ -||images.read.aspiresys.com^ -||images.register.deloittece.com^ -||images.register.lighthouse-media.com^ -||images.reldirect.lenovo.com^ -||images.respond.macktrucks.com^ -||images.respond.overheaddoor.com^ -||images.respons.aftenposten.no^ -||images.respons.schibsted.no^ -||images.response.aberdeenstandard.com^ -||images.response.amaliearena.com^ -||images.response.arcb.com^ -||images.response.architizer.com^ -||images.response.athenahealth.com^ -||images.response.bmw.co.nz^ -||images.response.bremer.com^ -||images.response.buydomains.com^ -||images.response.canesmail.com^ -||images.response.capex.com.ph^ -||images.response.cbre.com.au^ -||images.response.cisco.com^ -||images.response.demandbase.com^ -||images.response.denovo-us.com^ -||images.response.firmenich.com^ -||images.response.gcommerce.co.il^ -||images.response.handt.co.uk^ -||images.response.incontact.com^ -||images.response.lexmark.com^ -||images.response.mini.com.au^ -||images.response.motivatedigital.com^ -||images.response.nbnco.com.au^ -||images.response.orhp.com^ -||images.response.osv.com^ -||images.response.ricoh-europe.com^ -||images.response.softchoice.com^ -||images.response.vodafone.co.nz^ -||images.response.wexinc.com^ -||images.retail.ausbil.com.au^ -||images.rjf.raymondjames.com^ -||images.rsvp.capitalgrouppcs.com^ -||images.rx.reedexpo.ae^ -||images.sbs.americanexpress.com^ -||images.seemore.zebra.com^ -||images.service.boonedam.co.uk^ -||images.service.freo.nl^ -||images.service.ubmsinoexpo.com^ -||images.sfgmembers.com^ -||images.share.iheartmedia.com^ -||images.siteconnect.quintiles.com^ -||images.smartpay.changehealthcare.com^ -||images.smbdirect.lenovo.com^ -||images.solutions.createyournextcustomer.com^ -||images.solutions.dexmedia.com^ -||images.solutions.halliburton.com^ -||images.solutions.kellyservices.com^ -||images.srs.sfgmembers.com^ -||images.ssbusiness.samsung.com^ -||images.stanleyhealthcare.sbdinc.com^ -||images.studentlending.ca^ -||images.tableau.com^ -||images.tableausoftware.com^ -||images.tr-mail.bsh-group.com^ -||images.ubmamgevents.com^ -||images.uhealthsystem.miami.edu^ -||images.ultipro.ultimatesoftware.com^ -||images.uni.une.edu.au^ -||images.universidad.javeriana.edu.co^ -||images.update.lennar.com^ -||images.updates.hbo.com^ -||images.updates.hbonow.com^ -||images.v.cyberintel.verint.com^ -||images.verizonconnect.com^ -||images.voyage.apl.com^ -||images.warranty.2-10.com^ -||images.web.pirelli.com^ -||images.web.roberthalf.com^ -||images.workforce.equifax.com^ -||images2.verizonconnect.com^ -||images3.verizonconnect.com^ -||imagine.ricoh.nl^ -||imap1.carte-gr.total.fr^ -||imap2.carte-gr.total.fr^ -||imeetcentral.pgi.com^ -||img.aonunited.com^ -||img.e.sigsauer.com^ -||img.exb.emaildwtc.com^ -||img.go.coface.com^ -||img.hrm.groups.be^ -||img.learn.abreon.com^ -||img.link.cabinetry.com^ -||img.n.nasdaq.com^ -||img.newsletter.mazda.co.jp^ -||img.response.digicert.com^ -||img.website-security.symantec.com^ -||imgict.dwtcmarketing.com^ -||imginfo.insource.co.jp^ -||imgmail.mediasetpremium.it^ -||immunocap.thermofisher.com^ -||impact.carmeuse.com^ -||impact.go.economist.com^ -||in-business.vodafone.com^ -||in-go.experian.com^ -||in-mktg.vodafone.com^ -||indoeasia.edm.globalsources.com^ -||info.aacargo.com^ -||info.aag.com^ -||info.abbotsfordcentre.ca^ -||info.academynet.com^ -||info.adp.com^ -||info.aldcarmarket.com^ -||info.americanadvisorsgroup.com^ -||info.americas.mizuhogroup.com^ -||info.amperecomputing.com^ -||info.arclogics.com^ -||info.arp.com^ -||info.asce.org^ -||info.assets.reuters.com^ -||info.attcenter.com^ -||info.authorize.net^ -||info.avalara.com^ -||info.avigilon.com^ -||info.avtecinc.com^ -||info.banrural.com.gt^ -||info.bbvaautorenting.es^ -||info.bendigokangan.edu.au^ -||info.bendigotafe.edu.au^ -||info.bookkeepingconnect.pwc.com^ -||info.boozallen.com^ -||info.bouygues-es.com^ -||info.box.net^ -||info.cargoexpreso.com^ -||info.cellmedicine.com^ -||info.cengage.com^ -||info.checkin.pwc.com^ -||info.christus.mx^ -||info.clarivate.com^ -||info.clarivate.jp^ -||info.clevelandbrowns.com^ -||info.climatepledgearena.com^ -||info.commercial.keurig.com^ -||info.compasslearning.com^ -||info.compucom.com^ -||info.cybersource.com^ -||info.dailyfx.com^ -||info.darnelgroup.com^ -||info.deutscher-ausbildungsleiterkongress.de^ -||info.dfinsolutions.com^ -||info.dowjones.com^ -||info.e.royalmail.com^ -||info.edb.gov.sg^ -||info.eedinc.com^ -||info.elliemae.com^ -||info.engage.3m.com^ -||info.entega.de^ -||info.extrahop.com^ -||info.fdbhealth.com^ -||info.fieldandmain.com^ -||info.floridagators.com^ -||info.fortrea.com^ -||info.frbcommunications.org^ -||info.frbservices.org^ -||info.fscsecurities.com^ -||info.fxcm-chinese.com^ -||info.global-demand02.nec.com^ -||info.go.lorainccc.edu^ -||info.gtc.net.gt^ -||info.harte-hanks.com^ -||info.hila-leumit.co.il^ -||info.hmisrael.co.il^ -||info.igloosoftware.com^ -||info.insideview.com^ -||info.interface.com^ -||info.iowaeventscenter.com^ -||info.johnsoncontrols.com^ -||info.kace.com^ -||info.kalevavakuutus.fi^ -||info.kangan.edu.au^ -||info.kistler.com^ -||info.kita-aktuell.de^ -||info.kubotausa.com^ -||info.laley.es^ -||info.lamy-liaisons.fr^ -||info.landcentral.com^ -||info.lansa.com^ -||info.legal-solutions.thomsonreuters.co.uk^ -||info.lexisnexis.co.in^ -||info.lexisnexis.com.hk^ -||info.lexisnexis.com.my^ -||info.lexisnexis.com.sg^ -||info.liacourascenter.com^ -||info.lloydslistintelligence.com^ -||info.mackayshields.com^ -||info.mandatum.fi^ -||info.mandatumlife.fi^ -||info.marketingcube.com.au^ -||info.markmonitor.com^ -||info.mdsol.com^ -||info.medtronicdiabetes.com^ -||info.metronet.com^ -||info.metronetbusiness.com^ -||info.metronetinc.com^ -||info.mkt.global.dnp.co.jp^ -||info.mouser.com^ -||info.multiburo.com^ -||info.natera.com^ -||info.neg.co.jp^ -||info.netgear.be^ -||info.netgear.co.uk^ -||info.netgear.de^ -||info.nhlseattle.com^ -||info.o2business.de^ -||info.ohlogistics.com^ -||info.pbs.org^ -||info.pella.com^ -||info.philadelphiaunion.com^ -||info.phinmaproperties.com^ -||info.proedge.pwc.com^ -||info.protiviti.co.kr^ -||info.questoraclecommunity.org^ -||info.quova.com^ -||info.refinitiv.com^ -||info.restek.com^ -||info.reutersagency.com^ -||info.revvity.com^ -||info.rewe-group.at^ -||info.riskproducts.pwc.com^ -||info.sagepointfinancial.com^ -||info.sanantoniofc.com^ -||info.saverglass.com^ -||info.scene7.com^ -||info.scorecardrewards.com^ -||info.sec.rakuten.com.hk^ -||info.sg2.com^ -||info.shavve.co.il^ -||info.spurs.com^ -||info.sunsentinelmediagroup.com^ -||info.thecolonialcenter.com^ -||info.thermo.com^ -||info.thermofisher.com^ -||info.thermoscientific.com^ -||info.thunderhead.com^ -||info.transcontinental-printing.com^ -||info.treetopproducts.com^ -||info.ubmamevents.com^ -||info.uconnhuskies.com^ -||info.unis.edu.gt^ -||info.vaadsheli.co.il^ -||info.venyu.com^ -||info.verint.com^ -||info.versicherungspraxis24.de^ -||info.verwaltungspraxis24.de^ -||info.viant.com^ -||info.volvotrucks.us^ -||info.wkf.fr^ -||info.wolterskluwer.de^ -||info.wolterskluwer.nl^ -||info.woodburyfinancial.com^ -||info.workforce.pwc.com^ -||info.workforceorchestrator.pwc.com^ -||info1.thermofisher.com^ -||info1.thermoscientific.com^ -||info10.4thoughtmarketing.com^ -||info2.thermoscientific.com^ -||info3.thermofisher.com^ -||infopromerica.promerica.fi.cr^ -||inform.janssenpro.eu^ -||information.clubcorp.com^ -||information.cma-cgm.com^ -||information.frbcommunications.org^ -||information.lgcns.com^ -||information.skillsoft.com^ -||ingredients.firmenich.com^ -||innovation.m5.net^ -||innovations.luxaflex.com.au^ -||inqueritos-qa.cp.pt^ -||inqueritos.cp.pt^ -||ins.leavitt.com^ -||ins.wolterskluwerfs.com^ -||insight.aon.com^ -||insight.autovistagroup.com^ -||insight.business.hsbc.com^ -||insight.eurofinsexpertservices.fi^ -||insight.gbm.hsbc.com^ -||insight.leads360.com^ -||insight.optum.com^ -||insight.velocify.com^ -||insights.53.com^ -||insights.aiu.edu.au^ -||insights.aiu.sg^ -||insights.atradiuscollections.com^ -||insights.att.com^ -||insights.golubcapital.com^ -||insights.harvardbusiness.org^ -||insights.labcorp.com^ -||insights.networks.global.fujitsu.com^ -||insights.nexansdatacenter.com^ -||insights.prophet.com^ -||insightseries.redbull.racing^ -||inspire.changehealthcare.com^ -||inspire.ubmfashion.com^ -||insurance.alliant.com^ -||insurance.leads360.com^ -||insurance.velocify.com^ -||intel-trk.informa.com^ -||intel-trk.lloydslistintelligence.com^ -||intelpartneralliance.intel.com^ -||interact.crmtechnologies.com^ -||interest.truvenhealth.com^ -||internal.hcltech.com^ -||internalcomms.dbschenker.com^ -||international.edc.ca^ -||internationalpayments.americanexpress.com^ -||investments.aberdeenstandard.com^ -||investments.virtus.com^ -||investors.firmenich.com^ -||iot-business.vodafone.com^ -||iot.informaengage.com^ -||ipv3.landing.ni.com^ -||iready.curriculumassociates.com^ -||irmsolutions.choicepoint.com^ -||isac.thermofisher.com^ -||isbworld.aon.com^ -||it-business.vodafone.com^ -||it-go.experian.com^ -||itservices.ricoh.ch^ -||itservices.ricoh.co.uk^ -||itservices.ricoh.co.za^ -||itservices.ricoh.de^ -||itservices.ricoh.ie^ -||itservices.ricoh.no^ -||itt.enterprises.proximus.com^ -||iw.pentonmarketingsvcs.com^ -||ixia-elq.keysight.com^ -||ixia-lp.keysight.com^ -||ja-jp.siemensplmevents.com^ -||japan.secureforms.partnermcafee.com^ -||jhr.jacksonhealthcare.com^ -||jlfiber.advancedtech.com^ -||joc.marketing.atafreight.com^ -||jogtestdrive.jeep.com^ -||join.boozallen.com^ -||join.brandlicensing.eu^ -||join.coteriefashionevents.com^ -||join.decorex.com^ -||join.fhlbny.com^ -||join.figlobal.com^ -||join.ifsecglobal.com^ -||join.informa-events.com^ -||join.kbb.co.uk^ -||join.magicfashionevents.com^ -||join.myfashionevents.com^ -||join.pharmapackeurope.com^ -||join.projectfashionevents.com^ -||join.safety-health-expo.co.uk^ -||join.stratfor.com^ -||join.zendesk.com^ -||join02.informamarkets.com^ -||journey.cisco.com^ -||jp-go.experian.com^ -||jponmlkj.carte-gr.total.fr^ -||jubileo-ppb.carte-gr.total.fr^ -||justsayyes.infor.com^ -||kadlec.psjhealth.org^ -||kampanja.bhtelecom.ba^ -||kampanjat.atea.fi^ -||kampanjer.yxvisa.no^ -||kattoremontti.ruukki.com^ -||kl.klasselotteriet.dk^ -||klmcorporate.americanexpress.nl^ -||know.wolterskluwerlr.com^ -||knowledge.fdbhealth.com^ -||knowledge.vaisala.com^ -||kr-go.experian.com^ -||kunde.danskespil.dk^ -||la.idgenterprise.com^ -||lab.prodesp.sp.gov.br^ -||labs.verticurl.com^ -||lacinfo.motorolasolutions.com^ -||lakerspreferences.gleague.nba.com^ -||lakerspreferences.nba.com^ -||lan.landing.ni.com^ -||landing-activemeetings.wolterskluwer.com^ -||landing-annotext.wolterskluwer.com^ -||landing-dictnow.wolterskluwer.com^ -||landing-effacts.wolterskluwer.com^ -||landing-kleos.wolterskluwer.com^ -||landing-legisway.wolterskluwer.com^ -||landing-smartdocument.wolterskluwer.com^ -||landing-teamdocs.wolterskluwer.com^ -||landing-trimahn.wolterskluwer.com^ -||landing-trinotar.wolterskluwer.com^ -||landing-winra.wolterskluwer.com^ -||landing.clubcar.com^ -||landing.computershare.com^ -||landing.e.columbuscrew.com^ -||landing.georgeson.com^ -||landing.kccllc.com^ -||landing.kwm.com^ -||landing.lgensol.com^ -||landing.newyorkjets.com^ -||landing.wolterskluwer.hu^ -||landingpages.csustudycentres.edu.au^ -||landingpages.siemens-healthineers.com^ -||landings.omegacrmconsulting.com^ -||lantern.connect.o2.co.uk^ -||lantern.fortinet.com^ -||lantern7.wealth.mandg.com^ -||lantern8.wealth.mandg.com^ -||lantern9.mandg.com^ -||latam.thomsonreuters.com^ -||law.bppeloqua.com^ -||lead.blackrock.com^ -||leadmanagement.leads360.com^ -||leadmanagement.velocify.com^ -||leads.commercial.keurig.com^ -||learn.aiu.edu.au^ -||learn.amllp.com^ -||learn.amplypower.com^ -||learn.anthology.com^ -||learn.armanino.com^ -||learn.armaninollp.com^ -||learn.certiport.com^ -||learn.creditacceptance.com^ -||learn.fhlbny.com^ -||learn.grassicpas.com^ -||learn.houzz.com^ -||learn.huthwaite.com^ -||learn.insperity.com^ -||learn.jacksonhewitt.com^ -||learn.liensolutions.com^ -||learn.mvpindex.com^ -||learn.ndtco.com^ -||learn.nhaschools.com^ -||learn.oviahealth.com^ -||learn.panasonic.de^ -||learn.ricoh.ca^ -||learn.trapac.com^ -||learn.uwindsor.ca^ -||learn.wolterskluwerlb.com^ -||learn.wolterskluwerlr.com^ -||learn.wow.wowforbusiness.com^ -||learning.hmhco.com^ -||learnmore.protiviti.com^ -||lednews.powerint.com^ -||legalhold.ediscovery.com^ -||lets.go.haymarketmedicalnetwork.com^ -||lets.go.mcknightsnetwork.com^ -||lets.go.mmm-online.com^ -||lets.go.prweekus.com^ -||lfn.lfg.com^ -||library.acspubs.org^ -||library.daptiv.com^ -||lieudetravail.ricoh.fr^ -||lifescience.item24.de^ -||lifestyle.edm.globalsources.com^ -||lifestyle.tradeshow.globalsources.com^ -||like.reply.de^ -||lincoln-financial.lfd.com^ -||lincolnfinancialgroup.lfg.com^ -||lineside.networkrail.co.uk^ -||link.bankofscotland.co.uk^ -||link.global.amd.com^ -||link.halifax.co.uk^ -||link.infineon.com^ -||link.lloydsbank.com^ -||link.mbna.co.uk^ -||links.banking.scottishwidows.co.uk^ -||links.blackhorse.co.uk^ -||links.businessinsurance.bankofscotland.co.uk^ -||links.commercialemails.amcplc.com^ -||links.commercialemails.bankofscotland.co.uk^ -||links.commercialemails.blackhorse.co.uk^ -||links.commercialemails.halifax.co.uk^ -||links.commercialemails.lexautolease.co.uk^ -||links.commercialemails.lloydsbank.com^ -||links.e.response.mayoclinic.org^ -||links.email.bm-solutions.co.uk^ -||links.email.hx-intermediaries.co.uk^ -||links.emails-sharedealing.co.uk^ -||links.emails.birminghammidshires.co.uk^ -||links.global.protiviti.com^ -||links.go.shoretel.com^ -||links.insurance.lloydsbank.com^ -||links.lexautolease.co.uk^ -||links.news.riverview.org^ -||links.npsemails.mbna.co.uk^ -||links.qumu.com^ -||live.alljobs.co.il^ -||live.polycom.com^ -||live.techit.co.il^ -||log.cognex.com^ -||logistics.coyote.com^ -||logistics.dbschenker.com^ -||lp-eq.mitsuichemicals.com^ -||lp.adp.com^ -||lp.americas.business.samsung.com^ -||lp.antalis.com^ -||lp.apac.business.samsung.com^ -||lp.befly.com.br^ -||lp.capella.edu^ -||lp.connect.garnethealth.org^ -||lp.connectedcare.wkhs.com^ -||lp.copeland.com^ -||lp.deloittecomunicacao.com.br^ -||lp.dynabook.com^ -||lp.edpcomunicacao.com.br^ -||lp.email-particuliers.engie.fr^ -||lp.embarcadero.com^ -||lp.europe.business.samsung.com^ -||lp.flytour.com.br^ -||lp.fusioncharts.com^ -||lp.go.toyobo.co.jp^ -||lp.healthinfo.thechristhospital.com^ -||lp.info.aspirus.org^ -||lp.info.jeffersonhealth.org^ -||lp.internalcomms.exclusive-networks.com^ -||lp.jurion.de^ -||lp.leadingauthorities.com^ -||lp.marketing.engie-homeservices.fr^ -||lp.mkt-email.samsungsds.com^ -||lp.nexity.fr^ -||lp.northwestern.nm.org^ -||lp.oralia.fr^ -||lp.pro.engie.fr^ -||lp.response.deloitte.com^ -||lp.sekisuikasei.com^ -||lp.services.tuftsmedicine.org^ -||lp.smartbusiness.samsung.com^ -||lp.solutions.cegos.it^ -||lp.sophos.com^ -||lp.strayer.edu^ -||lp.svenskapostkodlotteriet.se^ -||lp.tfd-corp.co.jp^ -||lp.tix.lehigh.edu^ -||lp3.dentsplysirona.com^ -||lps-info.arval.com^ -||lrbelgium.wolterskluwer.com^ -||lrgermany.wolterskluwer.com^ -||lrhungary.wolterskluwer.com^ -||lritaly.wolterskluwer.com^ -||lrnetherlands.wolterskluwer.com^ -||lrpoland.wolterskluwer.com^ -||lrslovakia.wolterskluwer.com^ -||ltam2.secureforms.mcafee.com^ -||lxlx6p7y.arrow.com^ -||m.bumrungrad1378.com^ -||m.carte-gr.total.fr^ -||m.enerpac.com^ -||m.mywd.com^ -||m.premier.info.shutterstock.com^ -||ma.hitachi-systems.com^ -||ma.hmhco.com^ -||mackaytracking.newyorklifeinvestments.com^ -||mail.carte-gr.total.fr^ -||mail.dolce-gusto.at^ -||mail.dolce-gusto.be^ -||mail.dolce-gusto.bg^ -||mail.dolce-gusto.ca^ -||mail.dolce-gusto.cl^ -||mail.dolce-gusto.co.cr^ -||mail.dolce-gusto.co.il^ -||mail.dolce-gusto.co.kr^ -||mail.dolce-gusto.co.nz^ -||mail.dolce-gusto.co.uk^ -||mail.dolce-gusto.co.za^ -||mail.dolce-gusto.com.ar^ -||mail.dolce-gusto.com.au^ -||mail.dolce-gusto.com.mx^ -||mail.dolce-gusto.com.my^ -||mail.dolce-gusto.com.sg^ -||mail.dolce-gusto.com.tw^ -||mail.dolce-gusto.cz^ -||mail.dolce-gusto.de^ -||mail.dolce-gusto.dk^ -||mail.dolce-gusto.es^ -||mail.dolce-gusto.fi^ -||mail.dolce-gusto.fr^ -||mail.dolce-gusto.gr^ -||mail.dolce-gusto.hk^ -||mail.dolce-gusto.hu^ -||mail.dolce-gusto.ie^ -||mail.dolce-gusto.it^ -||mail.dolce-gusto.nl^ -||mail.dolce-gusto.no^ -||mail.dolce-gusto.pl^ -||mail.dolce-gusto.pt^ -||mail.dolce-gusto.ro^ -||mail.dolce-gusto.ru^ -||mail.dolce-gusto.se^ -||mail.dolce-gusto.sk^ -||mail.dolce-gusto.ua^ -||mail.dolce-gusto.us^ -||mail.information.maileva.com^ -||mail.rethinkretirementincome.co.uk^ -||mail2.carte-gr.total.fr^ -||mailer.carte-gr.total.fr^ -||mailgate.carte-gr.total.fr^ -||mailgw.carte-gr.total.fr^ -||mailin.carte-gr.total.fr^ -||mails.coloplast.com^ -||mailx.carte-gr.total.fr^ -||managedaccounts.nvenergy.com^ -||managedaccounts.pacificpower.net^ -||managedaccounts.rockymountainpower.net^ -||map.rockwellautomation.com^ -||march.landing.ni.com^ -||marketing-ap.mmc.co.jp^ -||marketing-form.fiat.com^ -||marketing-tracking.thomsonreuters.com^ -||marketing.adaptiveplanning.com^ -||marketing.agora.io^ -||marketing.alkhaleej.com.sa^ -||marketing.allenmotorgroup.co.uk^ -||marketing.aviationweek.com^ -||marketing.bajajelectricals.com^ -||marketing.business.vodafone.co.uk^ -||marketing.cigna.com^ -||marketing.clippergifts.at^ -||marketing.clippergifts.co.uk^ -||marketing.clippergifts.nl^ -||marketing.cloud.travelport.com^ -||marketing.colman.ac.il^ -||marketing.contenur.com^ -||marketing.edpcomunicacao.com.br^ -||marketing.enterprisedb.com^ -||marketing.euromaster.de^ -||marketing.global360.com^ -||marketing.golubcapital.com^ -||marketing.handt.co.uk^ -||marketing.hilton.com^ -||marketing.ianywhere.com^ -||marketing.igopost.no^ -||marketing.igopost.se^ -||marketing.income.com.sg^ -||marketing.naf.no^ -||marketing.netafim.cn^ -||marketing.netafim.com.br^ -||marketing.netafim.com.mx^ -||marketing.nova.gr^ -||marketing.omegahms.com^ -||marketing.omeir.com^ -||marketing.overheaddoor.com^ -||marketing.pelotongroup.com^ -||marketing.promotiv.se^ -||marketing.promotivnordics.dk^ -||marketing.psentertainment.com^ -||marketing.royalalaskanmovers.com^ -||marketing.salva.es^ -||marketing.sonac.biz^ -||marketing.spcapitaliq.com^ -||marketing.tandemdiabetes.com^ -||marketing.test.insead.edu^ -||marketing.uwmedicine.org^ -||marketing1.yealink.com^ -||marketingb2b.euromaster-neumaticos.es^ -||marketingforms.jdpa.com^ -||marketingpro.euromaster.fr^ -||marketreports.autovistagroup.com^ -||marketresearch.jacksonhealthcare.com^ -||markkinointi.igopost.fi^ -||martech.wavenet.com.tw^ -||mat.lgdisplay.com^ -||matrk.rockymountainpower.net^ -||mds.ricoh-europe.com^ -||mds.ricoh.ch^ -||mds.ricoh.co.uk^ -||mds.ricoh.co.za^ -||mds.ricoh.de^ -||mds.ricoh.es^ -||mds.ricoh.ie^ -||mds.ricoh.it^ -||mds.ricoh.no^ -||me.coact.org.au^ -||me.sigsauer.com^ -||mec.hilton.com^ -||media.redbull.racing^ -||media.ubmamevents.com^ -||medlemskap.nof.no^ -||meet.intercall.com^ -||meet.westuc.com^ -||meeting.nuance.com^ -||meetings.gaylordhotels.com^ -||memberships.clubcorp.com^ -||memelq.acs.org^ -||mercadeo.promerica.fi.cr^ -||message.sonicwall.com^ -||messages.blackhat.com^ -||metrics-go.experian.com^ -||metrics-now.experian.com^ -||metrics.mhi.com^ -||metricsinfo.edc.ca^ -||metricsinfoqac.edc.ca^ -||mexico.balluff.com^ -||micro.workplaceinvesting.fidelity.com^ -||microlearning.att.com^ -||microsite.pbs.org^ -||microsite.standardandpoors.com^ -||mini-site.larksuite-marketing.com^ -||mirec.ubmmexico.com^ -||mk.convera.com^ -||mkg.colfondos.co^ -||mkt-tracking.cloudmargin.com^ -||mkt.compactaprint.com.br^ -||mkt.consultdss.com^ -||mkt.unipega.com^ -||mktg.feedbacknow.com^ -||mktg.forrester.com^ -||mktg.northstardubai.com^ -||mlc.martela.se^ -||mobile-electronics.edm.globalsources.com^ -||mobile.blackboard.com^ -||mobile.tradeshow.globalsources.com^ -||mobile.vmware.com^ -||moodlerooms.blackboard.com^ -||more.groups.be^ -||more.spglobal.com^ -||mortgage.equifax.com^ -||mortgage.inform.equifax.com^ -||mortgage.leads360.com^ -||mortgage.velocify.com^ -||motm.adp.ca^ -||move.azets.com^ -||move.azets.dk^ -||move.azets.fi^ -||move.azets.no^ -||move.azets.se^ -||mroprospector.aviationweek.com^ -||ms.informaengage.com^ -||ms1.morganstanley.com^ -||msa-emea.secureforms.partnermcafee.com^ -||msa-uki.secureforms.partnermcafee.com^ -||mt-business.vodafone.com^ -||mws.verisk.com^ -||mx.carte-gr.total.fr^ -||mx.information.maileva.com^ -||mx.mywd.com^ -||mx2.carte-gr.total.fr^ -||my-go.experian.com^ -||my.catfinancial.com^ -||my.internationalsos.com^ -||my.iso.com^ -||my.kace.com^ -||my.kpmg.ca^ -||my.macu.com^ -||my.pannar.com^ -||my.totaljobs.com^ -||my.verisk.com^ -||my.xactware.co.uk^ -||my.xactware.com^ -||myevents.thalesgroup.com^ -||myfeed.thalesgroup.com^ -||myfuture.futureelectronics.com^ -||myhealth.ssmhealth.com^ -||myhotelbook.pegs.com^ -||myinfo.borland.com^ -||myinfo.eaton.com^ -||mypa-hk.americanexpress.com^ -||mypa-in-prop.americanexpress.com^ -||mypa-sg-prop.americanexpress.com^ -||myprofile.panasonic.eu^ -||myprofile.technics.eu^ -||mysite.webroot.com^ -||mystery.vfmleonardo.com^ -||mywebpage.ni.com^ -||na-pages.husqvarna.com^ -||namrinfo.motorolasolutions.com^ -||nationalaccounts.adp.com^ -||nbg.seagate.com^ -||nd.nasdaqtech.nasdaq.com^ -||ndi.nuance.com^ -||ned.themarketingscience.com^ -||networkingexchange.att.com^ -||networkprotection.mcafee.com^ -||networks.balluff.com^ -||newperspective.americanexpress.com^ -||news.cannesyachtingfestival.com^ -||news.communications-rmngp.fr^ -||news.crmtechnologies.com^ -||news.dbschenker.com^ -||news.equipbaie.com^ -||news.expoprotection.com^ -||news.fiac.com^ -||news.forddirectdealers.com^ -||news.iftm.fr^ -||news.income.com.sg^ -||news.inttra.com^ -||news.la-z-boy.com^ -||news.mazars.nl^ -||news.promo.fcagroup.com^ -||news.reedexpo.com.cn^ -||news.reedexpo.fr^ -||news.salon-aps.com^ -||news.seatrade-maritime.com^ -||news.sitl.eu^ -||news.supplychain-event.com^ -||news.tcsg.edu^ -||news2.secureforms.mcafee.com^ -||newsflash.elliemae.com^ -||newsletter.dolce-gusto.ch^ -||newsletter.standardandpoors.com^ -||newsletter.teletech.com^ -||newsletters.bancsabadell.com^ -||nidays.austria.ni.com^ -||nidays.suisse.ni.com^ -||nidays.switzerland.ni.com^ -||nl-go.experian.com^ -||nl-nl.coloplastcare.com^ -||nl.aon.com^ -||nonprofit.aon.com^ -||nordics.atradius.com^ -||nordicsbtaenrolment.americanexpress.co.uk^ -||notices.regis.edu^ -||noticias.grandt.com.ar^ -||notificaciones.conduce-seguro.es^ -||notify.eset.com^ -||novedades.telecomfibercorp.com.ar^ -||now.catersource.com^ -||now.cummins.com^ -||now.cumminsfiltration.com^ -||now.fintechfutures.com^ -||now.greenbuildexpo.com^ -||now.informaconnect01.com^ -||now.m5net.com^ -||now.myfashionevents.com^ -||now.wealthmanagement.com^ -||ns.carte-gr.total.fr^ -||ns2.carte-gr.total.fr^ -||nurse.fastaff.com^ -||nurse.trustaff.com^ -||nyhed.danskespil.dk^ -||nz-go.experian.com^ -||nzbusiness.vodafone.co.nz^ -||obrazy.dlabiznesu.pracuj.pl^ -||occidente.ubmmexico.com^ -||oci.dyn.com^ -||ocpi.americanexpress.ca^ -||offer.coface.com^ -||offer.lyreco.com^ -||offer.omniture.com^ -||offer.sj1.omniture.com^ -||offer.sjo.omniture.com^ -||offers.desertschools.org^ -||offers.la-z-boy.com^ -||oiat.dow.com^ -||oj.brothercloud.com^ -||okto1.spsglobal.com^ -||old.globalservices.arrow.com^ -||one-source.tax.thomsonreuters.com^ -||onecloud.avaya.com^ -||online-mt-com-455208869.p06.elqsandbox.com^ -||online.cphi.cn^ -||online.eaglepi.com^ -||online.expolifestyle.com^ -||online.hnoexpo.com^ -||online.hsrexpo.com^ -||online.jtiadvance.co.uk^ -||online.rwdls.com^ -||online.rwdstco.com^ -||online.sharjahart.org^ -||online.spsglobal.com^ -||onlineshop.ricoh.ch^ -||onlineshop.ricoh.de^ -||onlineshop.ricoh.it^ -||onlineshop.ricoh.lu^ -||onlineshop.ricoh.no^ -||onlineshop.ricoh.pl^ -||onmlkjiion.carte-gr.total.fr^ -||ops.sunpowercorp.com^ -||optifiantsion.carte-gr.total.fr^ -||optimize.mcafee.com^ -||optionen.hager.de^ -||optumcoding.optum.com^ -||oracle-netsuite-com-796203850.p04.elqsandbox.com^ -||oracle.marketingcube.com.au^ -||oracletechnology.arrow.com^ -||organizations.stratfor.com^ -||origin.www.images.2.forms.healthcare.philips.com^ -||our.sunshinecoast.qld.gov.au^ -||out.information.maileva.com^ -||outreach.sbf.org.sg^ -||owp-sg-prop.americanexpress.com^ -||owp-tw.americanexpress.com^ -||p01.sc.origins.en25.com^ -||p03.sc.origins.en25.com^ -||p04.sc.origins.en25.com^ -||p06.sc.origins.en25.com^ -||page.care.salinasvalleyhealth.com^ -||page.email.trinity-health.org^ -||page.griffinshockey.com^ -||page.health.tmcaz.com^ -||page.sangfor.com.cn^ -||page.sangfor.com^ -||page.thalesgroup.com^ -||pagename.care.ummhealth.org^ -||pages.arabiancentres.com^ -||pages.att.com^ -||pages.batteryworld.com.au^ -||pages.bayer.com^ -||pages.bioglan.com.au^ -||pages.canon.com.au^ -||pages.cenomicenters.com^ -||pages.concoursefinancial.com^ -||pages.contact.umpquabank.com^ -||pages.dubaifitnesschallenge.com^ -||pages.e.chooseumpquabank.com^ -||pages.erepublic.com^ -||pages.expowest.com^ -||pages.feedback.ignite.gleague.nba.com^ -||pages.feedback.vegasgoldenknights.com^ -||pages.financialintelligence.informa.com^ -||pages.health365.com.au^ -||pages.indigovision.com^ -||pages.info.anaheimducks.com^ -||pages.info.exclusive-networks.com^ -||pages.info.hondacenter.com^ -||pages.informatech1.com^ -||pages.intelligence.informa.com^ -||pages.kwm.com^ -||pages.ledger.com^ -||pages.lloydslist.com^ -||pages.lloydslistintelligence.com^ -||pages.magellangroup.com.au^ -||pages.maritimeintelligence.informa.com^ -||pages.mktg-upfield.com^ -||pages.mongodb.com^ -||pages.naturopathica.com.au^ -||pages.nbjsummit.com^ -||pages.news.realestate.bnpparibas^ -||pages.omdia.informa.com^ -||pages.pentonmktgsvcs.com^ -||pages.pharmaintelligence.informa.com^ -||pages.primalpictures.com^ -||pages.reply.broadwayinhollywood.com^ -||pages.reply.dpacnc.com^ -||pages.response.terex.com^ -||pages.sailgp.com^ -||pages.siemens-energy.com^ -||pages.siemens-info.com^ -||pages.siemens.com^ -||pages.titanmachinery.com^ -||pages.uchicagomedicine.org^ -||pages.usviolifeprofessional.mktg-upfield.com^ -||pages.wardsintelligence.informa.com^ -||paginaseloqua.unisabana.edu.co^ -||partenaireslld.temsys.fr^ -||partnermktg.symantec.com^ -||partners.avaya.com^ -||partners.redbull.racing^ -||partners.singularlogic.eu^ -||partnersuccess.cisco.com^ -||partnersuccessmetrics.cisco.com^ -||partnerwith.us.streetbond.com^ -||payments.americanexpress.co.uk^ -||payroll.smartsalary.com.au^ -||pci.aon.com^ -||pcm.symantec.com^ -||pcs.capgroup.com^ -||pd.bppeloqua.com^ -||pet-recycling.husky.ca^ -||pgs.aviationweek.com^ -||pgs.centreforaviation.com^ -||pgs.corporatetravelcommunity.com^ -||pgs.farmprogress.com^ -||phadia.thermo.com^ -||phadia.thermofisher.com^ -||phcbi-solution.phchd.com^ -||picis.optum.com^ -||pkg.balluff.com^ -||pl-go.experian.com^ -||platformsolutions.shutterstock.com^ -||playbook.convio.com^ -||plbusiness.samsung.com^ -||plongezdanslabdkj.carte-gr.total.fr^ -||plusavecmoins.adp.ca^ -||pm.eu.viatrisconnect.com^ -||pm.eu.viatrisconnect.de^ -||pm.eu.viatrisconnect.it^ -||poczta.carte-gr.total.fr^ -||podbooth.martela.com^ -||podbooth.martela.no^ -||podbooth.martela.se^ -||pop.carte-gr.total.fr^ -||pop.dmglobal.com^ -||pop3.carte-gr.total.fr^ -||porsche.nabooda-auto.com^ -||portal.krollontrack.co.uk^ -||posgrados-unisabana-edu-co-1207474081.p04.elqsandbox.com^ -||posgrados.unisabana.edu.co^ -||post.carte-gr.total.fr^ -||pp.scorecardrewards.com^ -||pr.cision.co.uk^ -||pr.cision.com^ -||pr.cision.fi^ -||pr.prnewswire.co.uk^ -||pr.prnewswire.com^ -||praluent-e.regeneron.com^ -||pre-employmentservices.adp.com^ -||preference.motorolasolutions.com^ -||preference.nuance.com^ -||preferencecenter.fticonsulting.com^ -||preferencecentre.americanexpress.co.uk^ -||preferencecentre.americanexpress.es^ -||preferencecentre.americanexpress.se^ -||preferences.acspubs.org^ -||preferences.bowerswilkins.com^ -||preferences.darglobal.co.uk^ -||preferences.definitivetechnology.com^ -||preferences.deloitte.ca^ -||preferences.denon.com^ -||preferences.dtlphx.net^ -||preferences.heatexperience.com^ -||preferences.la-lakers.com^ -||preferences.lakersgaming.com^ -||preferences.marantz.com^ -||preferences.marketone.com^ -||preferences.oakstreethealth.com^ -||preferences.polkaudio.com^ -||preferences.sb-lakers.com^ -||preferenza.nposistemi.it^ -||pregrados.javeriana.edu.co^ -||premierbuyer.edm.globalsources.com^ -||preview.fi-institutional.com.au^ -||primary.hasegawa.jp^ -||pro.stormwindstudios.com^ -||process.global360.com^ -||processusmetier.ricoh.fr^ -||procurement.cipscomms.org^ -||prod.tracking.refinitiv.com^ -||product.cloud.travelport.com^ -||productionprinting.ricoh.ch^ -||productionprinting.ricoh.co.uk^ -||productionprinting.ricoh.ie^ -||productivity-s.yale.com^ -||products.forddirectdealers.com^ -||products.ricoh-europe.com^ -||products.ricoh.ch^ -||products.ricoh.co.uk^ -||products.ricoh.ie^ -||produkte.ricoh.at^ -||produkte.ricoh.de^ -||produktionsdruck.ricoh.de^ -||profile.marketone.com^ -||profiling.afry.com^ -||profiling.eurofins.fi^ -||profiling.idbbn.com^ -||profiling.martela.com^ -||profiling.normet.com^ -||profiling.outokumpu.com^ -||profiling.plannja.com^ -||profiling.ruukki.com^ -||profit.edc.ca^ -||programmes-skema.skema-bs.fr^ -||programmes-skema.skema.edu^ -||programs.mellanox.com^ -||promo.alfaromeo.it^ -||promo.batesville.com^ -||promo.fiat.com^ -||promos.thermoscientific.com^ -||promotion.lginnotek.com^ -||promotion.lindt.az^ -||promotion.lindt.cr^ -||promotion.lindt.gt^ -||promotion.lindt.pa^ -||promotion.sedo.com^ -||promotions.batesville.com^ -||promotions.centex.com^ -||promotions.eq.delwebb.com^ -||promotions.hot.net.il^ -||promotions.kangan.edu.au^ -||promotions.la-z-boy.com^ -||promotions.thermofisher.com^ -||property.aon.com^ -||pruebascol.arin-innovation.com^ -||pt.balluff.com^ -||publicidad.davivienda.com.pa^ -||pubstr.acs.org^ -||pubstr.acspubs.org^ -||pubstr.chemrxiv.org^ -||purple.mongodb.com^ -||q.nasdaq.com^ -||qago.qiagen.com^ -||qr.dwtc.com^ -||r2r.utas.edu.au^ -||radio.moodybible.org^ -||ratings-events.standardandpoors.com^ -||rc.precisely.com^ -||rc.visionsolutions.com^ -||reach.ironmountain.com^ -||reach.terumo-bct.com^ -||read.lightreading.com^ -||read.telecoms.com^ -||ready.curriculumassociates.com^ -||ready.nerdery.com^ -||realbusiness.americanexpress.com^ -||realeducation.kangan.edu.au^ -||realsolutions.americanexpress.fr^ -||realsolutions.americanexpress.it^ -||realsolutions.americanexpress.se^ -||realtors.eq.delwebb.com^ -||recruit.go.apprenticeshipcommunity.com.au^ -||recruiting.dukekunshan.edu.cn^ -||redwingforbusiness.redwingsafety.com^ -||referafriend.box.com^ -||reg.enterpriseconnect.com^ -||reg.gdconf.com^ -||reg.hdiconference.com^ -||reg.informationweek.com^ -||reg.insecurity.com^ -||reg.iotworldtoday.com^ -||reg.nojitter.com^ -||reg.techweb.com^ -||reg.theaisummit.com^ -||reg.vrdconf.com^ -||reg.workspace-connect.com^ -||reg.xrdconf.com^ -||register-implants.dentsplysirona.com^ -||register.compellent.com^ -||register.denovo-us.com^ -||register.dnv.com^ -||register.harley-davidson.com^ -||register.markit.com^ -||register.purina.com^ -||register.redhat.com^ -||registration.promatis.com^ -||registro.omegacrmconsulting.com^ -||regmdr.pref.ims.dialog-direct.com^ -||relacionamento.edpcomunicacao.com.br^ -||relations.extrahop.com^ -||relay.carte-gr.total.fr^ -||relay.information.maileva.com^ -||relyonit.americanexpress.co.uk^ -||remote.carte-gr.total.fr^ -||rent.mgrc.com^ -||renting.aldautomotive.es^ -||reply.osv.com^ -||request.verisign.com^ -||research.dshb.biology.uiowa.edu^ -||research.gartner.com^ -||research.leads360.com^ -||research.velocify.com^ -||resources-it.opentext.com^ -||resources.att.com^ -||resources.blueprintgenetics.com^ -||resources.hermanmiller.com^ -||resources.icmi.com^ -||resources.inovis.com^ -||resources.l1id.com^ -||resources.mcgladrey.com^ -||resources.opentext.com^ -||resources.opentext.de^ -||resources.opentext.es^ -||resources.opentext.fr^ -||resources.rockwellautomation.com^ -||resources.thermofisher.com^ -||resources.xo.com^ -||resources2.secureforms.mcafee.com^ -||respond.firstdata.com^ -||respons.intern.schibsted.no^ -||response.abrdn.com^ -||response.accuitysolutions.com^ -||response.approva.net^ -||response.australian.physio^ -||response.b2b.bea.com^ -||response.bea.com^ -||response.careerstructure.com^ -||response.caterer.com^ -||response.catererglobal.com^ -||response.coh.org^ -||response.cpp.com^ -||response.cwjobs.co.uk^ -||response.deloittedigital.com^ -||response.desjardins.com^ -||response.economistevents.com^ -||response.eiuperspectives.com^ -||response.emirateswoman.com^ -||response.emoneyadvisor.com^ -||response.ez-dock.com^ -||response.fastaff.com^ -||response.hospital.fastaff.com^ -||response.idt.com^ -||response.informamarketsasia.com^ -||response.ingrammicrocloud.com^ -||response.iqpc.com^ -||response.kadient.com^ -||response.leadingauthorities.com^ -||response.littletikescommercial.com^ -||response.miracle-recreation.com^ -||response.nofault.com^ -||response.nxp.com^ -||response.operative.com^ -||response.optimummedical.co.uk^ -||response.playpower.com^ -||response.playworld.com^ -||response.polycom.com^ -||response.quest.com^ -||response.retailchoice.com^ -||response.reversepartner.genworth.com^ -||response.sagaftra.org^ -||response.sonosite.com^ -||response.stepstone.com^ -||response.tandberg.nl^ -||response.totaljobs.com^ -||response.travelex.co.jp^ -||response.turnkeyvr.com^ -||response.usnursing.com^ -||response.wbresearch.com^ -||response.wild.com^ -||response.xactware.com^ -||response2.buydomains.com^ -||responsed.abrdn.com^ -||responsemp.civica.co.uk^ -||responsemp.civica.com^ -||responses.diverseeducation.com^ -||responses.ingrammicro.com^ -||responses.wild.com^ -||responsesite.dsm-firmenich.com^ -||rethink.adp.com^ -||retirement.aonunited.com^ -||retirement.newyorklifeannuities.com^ -||reuniondepadres.unisabana.edu.co^ -||review.teradata.com^ -||rh.adp.ca^ -||rh.grupoocq.com.br^ -||rh.ocq.com.br^ -||rh.vettaquimica.com.br^ -||rims.aig.com^ -||ro-go.experian.com^ -||rs.adpinfo.com^ -||rsvp.heatexperience.com^ -||ru-go.experian.com^ -||ru-ru.siemensplmevents.com^ -||s.clientes.construrama.com^ -||s.corporate.cemex.com^ -||s.info.cemexgo.com^ -||s.latam.cemex.com^ -||s.sick.com^ -||s1133198723.sc.origins.en25.com^ -||s1325061471.sc.origins.en25.com^ -||s138663192.aon.com^ -||s1782711468.sc.origins.en25.com^ -||s1885709864.sc.origins.en25.com^ -||s2013560044.sc.origins.en25.com^ -||s205119.aon.com^ -||s2448.sc.origins.en25.com^ -||s2564.sc.origins.en25.com^ -||s3.landing.ni.com^ -||s362693299.aon.ca^ -||s362693299.aon.com^ -||s46849916.sc.origins.en25.com^ -||s615419487.sc.origins.en25.com^ -||s861531437.sc.origins.en25.com^ -||safety.west.com^ -||sales.hot.net.il^ -||saleslists.inform.equifax.com^ -||sandbox-connectlp.keysight.com^ -||sandbox-elq.keysight.com^ -||satracking.cubiq.com^ -||satracking.finning.com^ -||save.salary.com.au^ -||save.smartsalary.com.au^ -||savings.adp.ca^ -||say.hello.navan.com^ -||say.hello.tripactions.com^ -||sbx.daimlertruck.com^ -||schwacke.autovistagroup.com^ -||se-go.experian.com^ -||se-se.siemensplmevents.com^ -||seao.business.samsung.com^ -||sec.wolterskluwerfs.com^ -||secure-anzgo.arrow.com^ -||secure-e.healthiq.com^ -||secure-eugo.arrow.com^ -||secure.adp.ca^ -||secure.adpinfo.com^ -||secure.aifs.com^ -||secure.arg.email-prudential.com^ -||secure.arrow.com^ -||secure.constellation.iqvia.com^ -||secure.desjardinsassurancesgenerales.com^ -||secure.desjardinsgeneralinsurance.com^ -||secure.digital.mandg.com^ -||secure.ec4u.com^ -||secure.fortinet.com^ -||secure.gartnerevents.com^ -||secure.gartnerformarketers.com^ -||secure.immixgroup.com^ -||secure.info.awlgrip.com^ -||secure.info.domo.com^ -||secure.info.zetes.com^ -||secure.lapersonnelle.com^ -||secure.laurelsprings.com^ -||secure.mdtinternal.medtronic.com^ -||secure.medtronichealth.medtronic.com^ -||secure.medtronicinteract.com^ -||secure.medtroniclearn.com^ -||secure.mycalcas.com^ -||secure.nikkol.co.jp^ -||secure.omegacrmconsulting.com^ -||secure.orthology.com^ -||secure.sonosite.com^ -||secure.thepersonal.com^ -||secure.valleymed.org^ -||secure.visualsonics.com^ -||secure.vspdirect.com^ -||secure1.desjardinsassurancesgenerales.com^ -||secure1.desjardinsgeneralinsurance.com^ -||secure1.lapersonnelle.com^ -||secure1.thepersonal.com^ -||secure3.centralparknyc.org^ -||securecookies.dustin.dk^ -||securecookies.dustin.fi^ -||securecookies.dustin.nl^ -||securecookies.dustin.no^ -||securecookies.dustin.se^ -||securecookies.dustinhome.dk^ -||securecookies.dustinhome.fi^ -||securecookies.dustinhome.nl^ -||securecookies.dustinhome.no^ -||securecookies.dustinhome.se^ -||securecookiesdustininfo.dustin.com^ -||securecookiesdustininfo.dustin.dk^ -||securecookiesdustininfo.dustin.fi^ -||securecookiesdustininfo.dustin.nl^ -||securecookiesdustininfo.dustin.no^ -||securecookiesdustininfo.dustin.se^ -||securecookiesdustininfo.dustinhome.dk^ -||securecookiesdustininfo.dustinhome.fi^ -||securecookiesdustininfo.dustinhome.nl^ -||securecookiesdustininfo.dustinhome.no^ -||securecookiesdustininfo.dustinhome.se^ -||secured.avon-news.com^ -||secured.online.avon.com^ -||securedigital.pru.mandg.com^ -||securedigital.prudential.co.uk^ -||securedigital.wealth.mandg.com^ -||secureform.adaptris.com^ -||secureform.farmplan.co.uk^ -||secureform.proagrica.com^ -||secureforms.accuity.com^ -||secureforms.bankersalmanac.com^ -||secureforms.cirium.com^ -||secureforms.f4f.com^ -||secureforms.fircosoft.com^ -||secureforms.flightglobal.com^ -||secureforms.icis.com^ -||secureforms.nextens.nl^ -||secureforms.nrs-inc.com^ -||secureforms.sortingcodes.co.uk^ -||secureforms.xperthr.co.uk^ -||secureforms.xperthr.com^ -||secureforms.xperthr.nl^ -||secureinfo.edc.ca^ -||securetracking.eaton.com^ -||securetracking.golfpride.com^ -||securityintelligence.verint.com^ -||seek.intel.com^ -||seek.uwa.edu.au^ -||sendmoney.americanexpress.co.uk^ -||seniorlifestyles.amica.ca^ -||sentiment.icis.com^ -||service.athlon.com^ -||service.bechtle.com^ -||services.bdc.ca^ -||services.blackboard.com^ -||services.cairn.info^ -||services.eclerx.com^ -||services.edc.ca^ -||services.princes-trust.org.uk^ -||servicing.business.hsbc.com^ -||sg-go.experian.com^ -||sgsb.aba.com^ -||show.decorex.com^ -||show.kbb.co.uk^ -||signup.vovici.com^ -||simple.avaya.com^ -||simpletopay.americanexpress.co.uk^ -||simpletopay.americanexpress.com.au^ -||simpletopay.americanexpress.com^ -||sinfo.awrostamani.com^ -||site.att.com^ -||site.comunicaciones.iesa.es^ -||site.connect.mydrreddys.com^ -||site.firstnet.com^ -||site.infosysbpm.com^ -||site.tdk.com^ -||sites.campaignmgr.cisco.com^ -||sites.groo.co.il^ -||sites.siemens.com^ -||smallbusiness.adpinfo.com^ -||smart.boxtone.com^ -||smartcam.adt-worldwide.com^ -||smb-cashback.alcatel-lucent.com.au^ -||smb.info.shutterstock.com^ -||sme.proximus.be^ -||smkt.edm.globalsources.com^ -||sms.cf.labanquepostale.fr^ -||smtp.information.maileva.com^ -||smtp2.carte-gr.total.fr^ -||smtpauth.carte-gr.total.fr^ -||smtpauth.information.maileva.com^ -||smtpmail.carte-gr.total.fr^ -||smtpmail.information.maileva.com^ -||smtps.carte-gr.total.fr^ -||smtps.go.fr.scc.com^ -||sns2.secureforms.mcafee.com^ -||social.forddirectdealers.com^ -||social.insidelpl.com^ -||solar.sunpower.com^ -||solar.sunpowercorp.com^ -||solicitud.pacifico.com.pe^ -||solucionesreales.americanexpress.es^ -||solution.agc-chemicals.com^ -||solution.resonac.com^ -||solutions.aampglobal.com^ -||solutions.adp.ca^ -||solutions.adp.com^ -||solutions.arcb.com^ -||solutions.dbschenker.com^ -||solutions.desertfinancial.com^ -||solutions.equifax.co.uk^ -||solutions.lseg.com^ -||solutions.nuance.com^ -||solutions.oppd.com^ -||solutions.peco-energy.com^ -||solutions.redwingshoes.com^ -||solutions.refinitiv.cn^ -||solutions.refinitiv.com^ -||solutions.risk.lexisnexis.co.uk^ -||solutions.risk.lexisnexis.com^ -||solutions.saashr.com^ -||solutions.sabic.com^ -||solutions.sitech-wc.ca^ -||solutions.staubli.com^ -||solutions.stratus.com^ -||solutions.titanmachinery.com^ -||solutions.unysonlogistics.com^ -||solutions.vasque.com^ -||solutions.visaacceptance.com^ -||solutions.westrock.com^ -||solutions2.risk.lexisnexis.com^ -||solve.cranepi.com^ -||sources.nxp.com^ -||spaces.martela.com^ -||spaces.martela.fi^ -||spaces.martela.no^ -||spaces.martela.pl^ -||spaces.martela.se^ -||spain.thomsonreuters.com^ -||spam.carte-gr.total.fr^ -||specialevent.informaengage.com^ -||springboard.aon.com^ -||srqponmd.carte-gr.total.fr^ -||ssmile.dentsplysirona.com^ -||st.azcardinals.com^ -||start.adelaide.edu.au^ -||stat.ado.hu^ -||stat.altalex.com^ -||stat.bdc.ca^ -||stat.ciss.es^ -||stat.cuadernosdepedagogia.com^ -||stat.dauc.cz^ -||stat.dbschenker.com^ -||stat.guiasjuridicas.es^ -||stat.jogaszvilag.hu^ -||stat.juridicas.com^ -||stat.jusnetkarnovgroup.pt^ -||stat.kkpp.cz^ -||stat.kleos.cz^ -||stat.laley.es^ -||stat.laleynext.es^ -||stat.lamy-formation.fr^ -||stat.lamyetudiant.fr^ -||stat.lamyline.fr^ -||stat.legalintelligence.com^ -||stat.lex.pl^ -||stat.lexhub.tech^ -||stat.liaisons-sociales.fr^ -||stat.mersz.hu^ -||stat.praceamzda.cz^ -||stat.praetor-systems.cz^ -||stat.prawo.pl^ -||stat.profinfo.pl^ -||stat.rizeniskoly.cz^ -||stat.smarteca.cz^ -||stat.smarteca.es^ -||stat.starterre-campingcar.fr^ -||stat.starterre.fr^ -||stat.suresmile.dentsplysirona.com^ -||stat.taxlive.nl^ -||stat.ucetni-roku.cz^ -||stat.wk-formation.fr^ -||stat.wkf.fr^ -||stat.wolterskluwer.com^ -||stat.wolterskluwer.es^ -||stat.wolterskluwer.pl^ -||stat.wolterskluwer.pt^ -||stats.bdc.ca^ -||stats.hager.com^ -||stats.saverglass.com^ -||stats.sgs.com^ -||stay.lottehotel.com^ -||sth.mykingsevents.com^ -||stjoe.psjhealth.org^ -||storagetechnology.arrow.com^ -||strikenurse.usnursing.com^ -||study.jcu.edu.au^ -||study.vu.edu.au^ -||submit.info.shutterstock.com^ -||submit.vaisala.com^ -||subscribe.adpinfo.com^ -||subscribe.dnv.com^ -||subscribe.verintsystemsinc.com^ -||subscribe.vistage.com^ -||subscription.coface.com^ -||subscriptionmanagement.53.com^ -||subscriptions.bazaarvoice.com^ -||subscriptions.opentext.com^ -||subscriptions.reedpop.com^ -||subscriptionsbnk.wolterskluwerfs.com^ -||success.coface.com^ -||success.definitive-results.com^ -||summit.edm.globalsources.com^ -||support.panasonic.eu^ -||support.ricoh.de^ -||support.ricoh.fr^ -||survey-staging.mazda.com.au^ -||survey.communication.qualfon.com^ -||survey.mazda.com.au^ -||survey.xo.com^ -||surveys.executiveboard.com^ -||sustainability.ricoh.ch^ -||sustainability.ricoh.co.za^ -||sustainable.optum.com^ -||suunta.visma.fi^ -||sw.broadcom.com^ -||sweeps.la-z-boy.com^ -||symantec.ecs.arrow.com^ -||sys.hager.com^ -||t.12thman.com^ -||t.afry.com^ -||t.alumni.duke.edu^ -||t.antalis-verpackungen.at^ -||t.antalis.at^ -||t.antalis.be^ -||t.antalis.bg^ -||t.antalis.ch^ -||t.antalis.cl^ -||t.antalis.co.uk^ -||t.antalis.com.br^ -||t.antalis.com.tr^ -||t.antalis.cz^ -||t.antalis.de^ -||t.antalis.dk^ -||t.antalis.ee^ -||t.antalis.es^ -||t.antalis.fi^ -||t.antalis.fr^ -||t.antalis.hu^ -||t.antalis.ie^ -||t.antalis.lt^ -||t.antalis.lv^ -||t.antalis.nl^ -||t.antalis.no^ -||t.antalis.pl^ -||t.antalis.pt^ -||t.antalis.ro^ -||t.antalis.se^ -||t.antalis.sk^ -||t.antalisabitek.com^ -||t.antalisbolivia.com^ -||t.antalisperu.com^ -||t.appstatesports.com^ -||t.arizonawildcats.com^ -||t.arkansasrazorbacks.com^ -||t.arts.uci.edu^ -||t.auburntigers.com^ -||t.augustaentertainmentcomplex.com^ -||t.azets.com^ -||t.azets.dk^ -||t.azets.fi^ -||t.azets.no^ -||t.azets.se^ -||t.baylorbears.com^ -||t.bceagles.com^ -||t.bluehens.com^ -||t.bucky.uwbadgers.com^ -||t.budweisergardens.com^ -||t.bushnell.org^ -||t.byutickets.com^ -||t.calbears.com^ -||t.centreinthesquare.com^ -||t.charlotte49ers.com^ -||t.chartwayarena.com^ -||t.cincinnatiarts.org^ -||t.classiccenter.com^ -||t.cofcsports.com^ -||t.collinscenterforthearts.com^ -||t.cozone.com^ -||t.csurams.com^ -||t.cubuffs.com^ -||t.dawsoncreekeventscentre.com^ -||t.deloittece.com^ -||t.depaulbluedemons.com^ -||t.e.x.com^ -||t.ecupirates.com^ -||t.emueagles.com^ -||t.fabulousfox.com^ -||t.fairparkdallas.com^ -||t.fermion.fi^ -||t.festo.com^ -||t.fgcuathletics.com^ -||t.fightingillini.com^ -||t.fightingirish.com^ -||t.fordidahocenter.com^ -||t.foxtheatre.org^ -||t.friars.com^ -||t.georgiadogs.com^ -||t.goairforcefalcons.com^ -||t.goarmywestpoint.com^ -||t.gobearcats.com^ -||t.gobison.com^ -||t.goblackbears.com^ -||t.gobulldogs.com^ -||t.goccusports.com^ -||t.godeacs.com^ -||t.goduke.com^ -||t.gofrogs.com^ -||t.gogriz.com^ -||t.goguecenter.auburn.edu^ -||t.goheels.com^ -||t.gohuskies.com^ -||t.gojacks.com^ -||t.golobos.com^ -||t.gomocs.com^ -||t.gopack.com^ -||t.gophersports.com^ -||t.gopoly.com^ -||t.gopsusports.com^ -||t.goredbirds.com^ -||t.gorhody.com^ -||t.gostanford.com^ -||t.gotigersgo.com^ -||t.govandals.com^ -||t.gowyo.com^ -||t.goxavier.com^ -||t.gozips.com^ -||t.griztix.umt.edu^ -||t.gseagles.com^ -||t.hailstate.com^ -||t.hamptonpirates.com^ -||t.hawaiiathletics.com^ -||t.hawkeyesports.com^ -||t.herdzone.com^ -||t.hokiesports.com^ -||t.hornetsports.com^ -||t.huskers.com^ -||t.iowaeventscenter.com^ -||t.itsehoitoapteekki.fi^ -||t.iuhoosiers.com^ -||t.jmusports.com^ -||t.krannertcenter.com^ -||t.kstatesports.com^ -||t.ksuowls.com^ -||t.liberty.edu^ -||t.libertyfirstcreditunionarena.com^ -||t.libertyflames.com^ -||t.longbeachstate.com^ -||t.lsusports.net^ -||t.massmutualcenter.com^ -||t.meangreensports.com^ -||t.mgoblue.com^ -||t.miamihurricanes.com^ -||t.miamiredhawks.com^ -||t.mktg.genesys.com^ -||t.mmaeast.com^ -||t.montecarlosbm.com^ -||t.msubobcats.com^ -||t.msuspartans.com^ -||t.mynexity.fr^ -||t.navysports.com^ -||t.nevadawolfpack.com^ -||t.nexity-studea.com^ -||t.nexity.fr^ -||t.nhra.com^ -||t.niuhuskies.com^ -||t.nuhuskies.com^ -||t.nusports.com^ -||t.ohiobobcats.com^ -||t.okcciviccenter.com^ -||t.okstate.com^ -||t.olemisssports.com^ -||t.oralia.fr^ -||t.orion.fi^ -||t.osubeavers.com^ -||t.owlsports.com^ -||t.paciolan.com^ -||t.pbr.com^ -||t.pennathletics.com^ -||t.pittsburghpanthers.com^ -||t.playhousesquare.org^ -||t.poconoraceway.com^ -||t.portland5.com^ -||t.poyry.com^ -||t.pplcenter.com^ -||t.purduesports.com^ -||t.ragincajuns.com^ -||t.ramblinwreck.com^ -||t.restek.com^ -||t.richmondspiders.com^ -||t.rolltide.com^ -||t.scarletknights.com^ -||t.selectyourtickets.com^ -||t.seminoles.com^ -||t.sfajacks.com^ -||t.sjsuspartans.com^ -||t.sjuhawks.com^ -||t.soec.ca^ -||t.soonersports.com^ -||t.southernmiss.com^ -||t.texasperformingarts.org^ -||t.texassports.com^ -||t.texastech.com^ -||t.thalesgroup.com^ -||t.thefishercenter.com^ -||t.ticketatlantic.com^ -||t.ticketleader.ca^ -||t.ticketstaronline.com^ -||t.treventscomplex.com^ -||t.tribeathletics.com^ -||t.tulanegreenwave.com^ -||t.tulsahurricane.com^ -||t.tysoncenter.com^ -||t.uabsports.com^ -||t.ucdavisaggies.com^ -||t.ucirvinesports.com^ -||t.uclabruins.com^ -||t.uconnhuskies.com^ -||t.ucsdtritons.com^ -||t.uhcougars.com^ -||t.umassathletics.com^ -||t.umterps.com^ -||t.uncwsports.com^ -||t.und.com^ -||t.unlvrebels.com^ -||t.usajaguars.com^ -||t.usctrojans.com^ -||t.utahstateaggies.com^ -||t.utrockets.com^ -||t.villanova.com^ -||t.virginiasports.com^ -||t.vucommodores.com^ -||t.whartoncenter.com^ -||t.wsucougars.com^ -||t.wvusports.com^ -||t.xlcenter.com^ -||t.xtreamarena.com^ -||talent.aonunited.com^ -||talenteq.intuit.com^ -||target.connect.nicklauschildrens.org^ -||target.connect.nicklaushealth.org^ -||target.health.childrenswi.org^ -||tdbrochure.advancedtech.com^ -||teammate.arclogics.com^ -||tech.finalto.com^ -||tech.sangfor.com^ -||tech.softchoice.com^ -||techgifts.tradeshow.globalsources.com^ -||technology.informaengage.com^ -||technology1.informaengage.com^ -||technologyservices.equifax.com^ -||technologyservices.inform.equifax.com^ -||techprovider.intel.com^ -||techsupport.balluff.com^ -||teefiksummin.visma.fi^ -||teho.visma.fi^ -||temails.productnotice.thomsonreuters.com^ -||temsys.temsys.fr^ -||tesla-fortytwo.landing.ni.com^ -||test.go.provident.bank^ -||test.gogoinflight.com^ -||test.marketing.championhomes.com^ -||test.marketingcube.com.au^ -||test.paradyz.com^ -||test.siriusdecisions.com^ -||test.thomsonreuters.com^ -||testforms.fidelity.ca^ -||th-go.experian.com^ -||thrive.metagenics.com^ -||ticketoffice.liberty.edu^ -||tickets.gs-warriors.com^ -||tkelq.genesys.com^ -||tlm.adp.ca^ -||tm-marketing.wolterskluwer.com^ -||tmt.intelligence.informa.com^ -||todayintheword.moodybible.org^ -||tools.ricoh.co.uk^ -||tools.ricoh.de^ -||townhouses.woodlea.com.au^ -||tp.lexisnexis.co.nz^ -||tp.lexisnexis.com.au^ -||tr-business.vodafone.com^ -||tr-ms.bosch-home.com^ -||tr-ms.profilo.com^ -||tr-ms.siemens-home.bsh-group.com^ -||tr.informabi.com^ -||trace.insead.edu^ -||track-e.cypress.com^ -||track-e.infineon.com^ -||track-e.infineoncommunity.com^ -||track.abrdn.com^ -||track.abrdnacp.com^ -||track.abrdnaef.com^ -||track.abrdnaod.com^ -||track.abrdnawp.com^ -||track.abrdnfax.com^ -||track.abrdnfco.com^ -||track.abrdnifn.com^ -||track.abrdnjapan.co.uk^ -||track.abrdnnewindia.co.uk^ -||track.abrdnpit.co.uk^ -||track.asia-focus.co.uk^ -||track.asiadragontrust.co.uk^ -||track.auckland.ac.nz^ -||track.biz.lguplus.com^ -||track.cecobuildings.com^ -||track.clubcar.com^ -||track.connectwise.com^ -||track.cornerstonebuildingbrands.com^ -||track.deloitte.com^ -||track.docusign.ca^ -||track.docusign.co.uk^ -||track.docusign.com.au^ -||track.docusign.com.br^ -||track.docusign.com.es^ -||track.docusign.com^ -||track.docusign.de^ -||track.docusign.fr^ -||track.docusign.in^ -||track.docusign.it^ -||track.docusign.jp^ -||track.docusign.mx^ -||track.docusign.nl^ -||track.dunedinincomegrowth.co.uk^ -||track.education.intostudy.com^ -||track.estoneworks.com^ -||track.ferrari.com^ -||track.ferraridealers.com^ -||track.financialfairness.org.uk^ -||track.go.shokubai.co.jp^ -||track.heritagebuildings.com^ -||track.hg.healthgrades.com^ -||track.info.cancertherapyadvisor.com^ -||track.info.clinicaladvisor.com^ -||track.info.clinicalpainadvisor.com^ -||track.info.dermatologyadvisor.com^ -||track.info.empr.com^ -||track.info.endocrinologyadvisor.com^ -||track.info.gastroenterologyadvisor.com^ -||track.info.haymarketmedicalnetwork.com^ -||track.info.hematologyadvisor.com^ -||track.info.infectiousdiseaseadvisor.com^ -||track.info.mcknights.com^ -||track.info.mcknightshomecare.com^ -||track.info.mcknightsseniorliving.com^ -||track.info.medicalbag.com^ -||track.info.mmm-online.com^ -||track.info.neurologyadvisor.com^ -||track.info.oncologynurseadvisor.com^ -||track.info.ophthalmologyadvisor.com^ -||track.info.optometryadvisor.com^ -||track.info.prweekus.com^ -||track.info.psychiatryadvisor.com^ -||track.info.pulmonologyadvisor.com^ -||track.info.rarediseaseadvisor.com^ -||track.info.renalandurologynews.com^ -||track.info.rheumatologyadvisor.com^ -||track.info.thecardiologyadvisor.com^ -||track.inspirage.com^ -||track.into-giving.com^ -||track.intoglobal.com^ -||track.intostudy.com^ -||track.invtrusts.co.uk^ -||track.lesmills.com^ -||track.marketingcube.com.au^ -||track.murray-income.co.uk^ -||track.murray-intl.co.uk^ -||track.newdawn-trust.co.uk^ -||track.northamericanincome.co.uk^ -||track.plygem.com^ -||track.postkodlotteriet.se^ -||track.quad.com^ -||track.simonton.com^ -||track.solutions.ostechnology.co.jp^ -||track.solventum.com^ -||track.workfusion.com^ -||tracker.decomworld.com^ -||tracker.eft.com^ -||tracker.ethicalcorp.com^ -||tracker.eyeforpharma.com^ -||tracker.incite-group.com^ -||tracker.insurancenexus.com^ -||tracker.providence.org^ -||tracker.psjhealth.org^ -||tracker.swedish.org^ -||tracking-explore-uat.agilent.com^ -||tracking-explore.agilent.com^ -||tracking-sandbox.vodafone.co.uk^ -||tracking-uat.veritas.com^ -||tracking.aapa.org^ -||tracking.abraservice.com^ -||tracking.abrdn.com^ -||tracking.academicyear.org^ -||tracking.accent-technologies.com^ -||tracking.acceptance.industrial.omron.eu^ -||tracking.adp-iat.adp.ca^ -||tracking.adp-iat.adp.com^ -||tracking.adp.ca^ -||tracking.adp.com^ -||tracking.adpinfo.com^ -||tracking.adpri.org^ -||tracking.agora.io^ -||tracking.aifsabroad.com^ -||tracking.air-worldwide.com^ -||tracking.almax.com^ -||tracking.almirallmed.es^ -||tracking.alphacard.com^ -||tracking.amadeus.com^ -||tracking.americas.business.samsung.com^ -||tracking.analysis.hibu.com^ -||tracking.apac.business.samsung.com^ -||tracking.arabiancentres.com^ -||tracking.arbor.edu^ -||tracking.arcadis.com^ -||tracking.atea.dk^ -||tracking.atea.fi^ -||tracking.athlon.com^ -||tracking.att.com^ -||tracking.attexperts.com^ -||tracking.attsavings.com^ -||tracking.aupairinamerica.co.uk^ -||tracking.aupairinamerica.co.za^ -||tracking.aupairinamerica.com^ -||tracking.aupairinamerica.fr^ -||tracking.automotivemastermind.com^ -||tracking.averydennison.com^ -||tracking.bankofalbuquerque.com^ -||tracking.bankofoklahoma.com^ -||tracking.bankoftexas.com^ -||tracking.barcodediscount.com^ -||tracking.barcodegiant.com^ -||tracking.barcodesinc.com^ -||tracking.bbgevent.app^ -||tracking.bettingexpert.com^ -||tracking.biz.alabamapower.com^ -||tracking.blackboard.com^ -||tracking.blog.hibu.com^ -||tracking.bnpparibas.fr^ -||tracking.bokf.com^ -||tracking.bokfinancial.com^ -||tracking.bonava.de^ -||tracking.bonava.ee^ -||tracking.bonava.fi^ -||tracking.bonava.lt^ -||tracking.bonava.lv^ -||tracking.bonava.no^ -||tracking.bonava.ru^ -||tracking.bonava.se^ -||tracking.brady.co.uk^ -||tracking.brady.com.tr^ -||tracking.brady.es^ -||tracking.brady.eu^ -||tracking.brady.fr^ -||tracking.brady.pl^ -||tracking.bradycorp.it^ -||tracking.bradyid.com^ -||tracking.brevant.ca^ -||tracking.brgeneral.org^ -||tracking.build.com^ -||tracking.burriswindows.com^ -||tracking.business.comcast.com^ -||tracking.businessdirect.bt.com^ -||tracking.bv.com^ -||tracking.cairn.info^ -||tracking.campaigns.drax.com^ -||tracking.capitalbank.jo^ -||tracking.capterra.com^ -||tracking.care.essentiahealth.org^ -||tracking.care.muschealth.org^ -||tracking.care.salinasvalleyhealth.com^ -||tracking.cello-square.com^ -||tracking.cengage.com^ -||tracking.cenomicenters.com^ -||tracking.changehealthcare.com^ -||tracking.chem-agilent.com^ -||tracking.civica.co.uk^ -||tracking.clarivate.com^ -||tracking.coact.org.au^ -||tracking.cognyte.com^ -||tracking.coldspringusa.com^ -||tracking.compactappliance.com^ -||tracking.connect.nicklauschildrens.org^ -||tracking.connect.nicklaushealth.org^ -||tracking.connect.services.global.ntt^ -||tracking.connectedcare.wkhs.com^ -||tracking.construction.com^ -||tracking.contentmarketing.hibu.com^ -||tracking.continuingstudies.wisc.edu^ -||tracking.corporate.flightcentre.com^ -||tracking.corporatetraveler.us^ -||tracking.corporatetraveller.co.nz^ -||tracking.corporatetraveller.co.za^ -||tracking.corporatetraveller.com.au^ -||tracking.corptraveller.com^ -||tracking.corteva.ca^ -||tracking.corteva.us^ -||tracking.cpa.qa.web.visa.com^ -||tracking.cranepi.com^ -||tracking.creditacceptance.com^ -||tracking.culturalinsurance.com^ -||tracking.dataloen.dk^ -||tracking.dev2.pepsicopartners.com^ -||tracking.dfinsolutions.com^ -||tracking.digitalid.co.uk^ -||tracking.direxion.com^ -||tracking.dr-10.com^ -||tracking.dr-8.com^ -||tracking.drreddys.com^ -||tracking.dshb.biology.uiowa.edu^ -||tracking.dunnhumby.com^ -||tracking.dz.janssenmedicalcloud.me^ -||tracking.edb.gov.sg^ -||tracking.ehrintelligence.com^ -||tracking.eloq.soa.org^ -||tracking.eloqua.homeimprovementleads.com^ -||tracking.eloqua.modernize.com^ -||tracking.email.trinity-health.org^ -||tracking.emoneyadvisor.com^ -||tracking.endnote.com^ -||tracking.enlist.com^ -||tracking.ent.oviahealth.com^ -||tracking.epredia.com^ -||tracking.epsilon.com^ -||tracking.epsilon.postclickmarketing.com^ -||tracking.europe.business.samsung.com^ -||tracking.evanta.com^ -||tracking.events.adp.com^ -||tracking.evergy.com^ -||tracking.exclusive-networks.com^ -||tracking.eyefinity.com^ -||tracking.faucet.com^ -||tracking.faucetdirect.com^ -||tracking.fcmtravel.com^ -||tracking.fdbhealth.co.uk^ -||tracking.fdbhealth.com^ -||tracking.fdm.dk^ -||tracking.flowofwork.adp.com^ -||tracking.flukecal.com^ -||tracking.fr.adp.com^ -||tracking.fticonsulting.com^ -||tracking.ftitechnology.com^ -||tracking.fullsail.edu^ -||tracking.gartner.com^ -||tracking.gelia.com^ -||tracking.getapp.com^ -||tracking.global-demand02.nec.com^ -||tracking.go.atcc.org^ -||tracking.go.epsilon.com^ -||tracking.go.lorainccc.edu^ -||tracking.go.onshape.com^ -||tracking.go.provident.bank^ -||tracking.go.toyobo-mc.jp^ -||tracking.go.toyobo.co.jp^ -||tracking.goal.pl^ -||tracking.graduateschool.edu^ -||tracking.guidehouse.com^ -||tracking.handlesets.com^ -||tracking.hardoxwearparts.com^ -||tracking.hcltech.com^ -||tracking.health.bilh.org^ -||tracking.health.bjc.org^ -||tracking.health.lexmed.com^ -||tracking.health.tmcaz.com^ -||tracking.healthitanalytics.com^ -||tracking.healthitsecurity.com^ -||tracking.healthpayerintelligence.com^ -||tracking.hibu.com^ -||tracking.hiscox.com^ -||tracking.hot.net.il^ -||tracking.houzz.com^ -||tracking.idcardgroup.com^ -||tracking.idsuperstore.com^ -||tracking.idwholesaler.com^ -||tracking.idzone.com^ -||tracking.igloosoftware.com^ -||tracking.inexchange.com^ -||tracking.inexchange.fi^ -||tracking.inexchange.se^ -||tracking.infiniti-dubai.com^ -||tracking.info.ivanti.com^ -||tracking.info.jeffersonhealth.org^ -||tracking.info.methodisthealthsystem.org^ -||tracking.info.rcgt.com^ -||tracking.info.rochesterknighthawks.com^ -||tracking.info.servicenow.com^ -||tracking.info.zetes.com^ -||tracking.innovamarketinsights.com^ -||tracking.insead.edu^ -||tracking.insperity.com^ -||tracking.janssenmed.cz^ -||tracking.janssenmed.ro^ -||tracking.janssenmed.sk^ -||tracking.janssenmedicalcloud.be^ -||tracking.janssenmedicalcloud.ch^ -||tracking.janssenmedicalcloud.com^ -||tracking.janssenmedicalcloud.de^ -||tracking.janssenmedicalcloud.ee^ -||tracking.janssenmedicalcloud.es^ -||tracking.janssenmedicalcloud.eu^ -||tracking.janssenmedicalcloud.fr^ -||tracking.janssenmedicalcloud.gr^ -||tracking.janssenmedicalcloud.hr^ -||tracking.janssenmedicalcloud.ie^ -||tracking.janssenmedicalcloud.it^ -||tracking.janssenmedicalcloud.lt^ -||tracking.janssenmedicalcloud.me^ -||tracking.janssenmedicalcloud.nl^ -||tracking.janssenmedicalcloud.pl^ -||tracking.janssenmedicalcloud.pt^ -||tracking.janssenmedicalcloud.ro^ -||tracking.janssenmedicalcloud.se^ -||tracking.janssenmedicalcloud.sk^ -||tracking.janssenos.com^ -||tracking.kegerator.com^ -||tracking.kenblanchard.com^ -||tracking.kubota.ca^ -||tracking.lailiveevents.com^ -||tracking.laivideo.com^ -||tracking.laurelsprings.com^ -||tracking.leadingauthorities.com^ -||tracking.learn.carlingtech.com^ -||tracking.learn.oakstreethealth.com^ -||tracking.lenovo.com^ -||tracking.lenovopartnernetwork.com^ -||tracking.lfg.com^ -||tracking.lightingdirect.com^ -||tracking.lightingshowplace.com^ -||tracking.lindtusa.com^ -||tracking.link.boone.health^ -||tracking.liwest.at^ -||tracking.lonnogpersonalabc.visma.no^ -||tracking.lseg.com^ -||tracking.luminishealth.org^ -||tracking.ma.janssenmedicalcloud.me^ -||tracking.mail.ti.com.cn^ -||tracking.mail.ti.com^ -||tracking.mail.tij.co.jp^ -||tracking.mandg.co.uk^ -||tracking.marketing.frequentis.com^ -||tracking.marketone.com^ -||tracking.martela.com^ -||tracking.mathworks.com^ -||tracking.matsinc.com^ -||tracking.mattersurfaces.com^ -||tracking.max-stg.co.il^ -||tracking.max.co.il^ -||tracking.medicalcloud.janssen.com.tr^ -||tracking.mediwel.net^ -||tracking.mhealthintelligence.com^ -||tracking.mindshiftonline.com^ -||tracking.mizuhogroup.com^ -||tracking.mjbizconference.com^ -||tracking.mjbizdaily.com^ -||tracking.mkt-email.samsungsds.com^ -||tracking.mobiliteverte.engie.fr^ -||tracking.modelgroup.com^ -||tracking.monespaceprime.engie.fr^ -||tracking.motorolasolutions.com^ -||tracking.mtn.co.za^ -||tracking.mwe.com^ -||tracking.my.hq.com^ -||tracking.myaupairinamerica.com^ -||tracking.myregus.com^ -||tracking.myspacesworks.com^ -||tracking.netsuite.com^ -||tracking.news.evergreenhealth.com^ -||tracking.newyorklifeinvestments.com^ -||tracking.ng.janssenmedicalcloud.me^ -||tracking.nissan-dubai.com^ -||tracking.nl.visma.com^ -||tracking.ntl.no^ -||tracking.ocr.ca^ -||tracking.ohiohealth.com^ -||tracking.oldnational.com^ -||tracking.omron.at^ -||tracking.omron.eu^ -||tracking.omron.fr^ -||tracking.omron.pl^ -||tracking.omron.ro^ -||tracking.omron.se^ -||tracking.online.nl.adp.com^ -||tracking.online.wisc.edu^ -||tracking.opentable.com^ -||tracking.oppd.com^ -||tracking.oswegohealth.org^ -||tracking.outsetmedical.com^ -||tracking.parcelpending.com^ -||tracking.particuliers.engie.fr^ -||tracking.patientengagementhit.com^ -||tracking.pdc.wisc.edu^ -||tracking.peco.com^ -||tracking.pella.com^ -||tracking.pennmedicine.princetonhcs.org^ -||tracking.pepsicopartners.com^ -||tracking.petrelocation.com^ -||tracking.pgi.com^ -||tracking.pioneer.com^ -||tracking.pirelli.com^ -||tracking.plascoid.com^ -||tracking.precisely.com^ -||tracking.precollege.wisc.edu^ -||tracking.pro.engie.fr^ -||tracking.prodesa.com^ -||tracking.prophet.com^ -||tracking.prophix.com^ -||tracking.protective.com^ -||tracking.ps.shutterstock.com^ -||tracking.ptc.com^ -||tracking.pullsdirect.com^ -||tracking.puustelli.com^ -||tracking.puustelli.se^ -||tracking.quadient.com^ -||tracking.questdiagnostics.com^ -||tracking.realestate.bnpparibas^ -||tracking.regus.com^ -||tracking.relationshipone.com^ -||tracking.reply.broadwayinchicago.com^ -||tracking.reply.broadwayinhollywood.com^ -||tracking.reply.dpacnc.com^ -||tracking.response.terex.com^ -||tracking.rinoebastel.com^ -||tracking.risk.lexisnexis.co.jp^ -||tracking.risk.lexisnexis.co.uk^ -||tracking.risk.lexisnexis.com.br^ -||tracking.risk.lexisnexis.com^ -||tracking.rootinc.com^ -||tracking.rti-inc.com^ -||tracking.sabic.com^ -||tracking.sailgp.com^ -||tracking.schneider.com^ -||tracking.sciex.com^ -||tracking.securitymsp.cisco.com^ -||tracking.service.cz.nl^ -||tracking.service.just.nl^ -||tracking.sfitrucks.com^ -||tracking.shl.com^ -||tracking.shop.verymobile.it^ -||tracking.sierrawireless.com^ -||tracking.simpleaccess.com^ -||tracking.singlestore.com^ -||tracking.siriusdecisions.com^ -||tracking.smartbets.com^ -||tracking.smartbusiness.samsung.com^ -||tracking.softwareadvice.com^ -||tracking.solartrade-us.baywa-re.com^ -||tracking.solutions.parker.com^ -||tracking.speltips.se^ -||tracking.ssab.co^ -||tracking.ssab.com.br^ -||tracking.ssab.com.tr^ -||tracking.ssab.com^ -||tracking.ssab.dk^ -||tracking.ssab.es^ -||tracking.ssab.fi^ -||tracking.ssab.fr^ -||tracking.ssab.jp^ -||tracking.ssab.nl^ -||tracking.ssab.pe^ -||tracking.ssab.se^ -||tracking.stageandscreen.travel^ -||tracking.steelprize.com^ -||tracking.stemcell.com^ -||tracking.stericycle.com^ -||tracking.stihl-timbersports.com^ -||tracking.stihl.at^ -||tracking.stihl.be^ -||tracking.stihl.co.za^ -||tracking.stihl.com.au^ -||tracking.stihl.com.cy^ -||tracking.stihl.com^ -||tracking.stihl.de^ -||tracking.stihl.es^ -||tracking.stihl.fr^ -||tracking.stihl.gr^ -||tracking.stihl.hu^ -||tracking.stihl.it^ -||tracking.stihl.lu^ -||tracking.stihl.nl^ -||tracking.stihl.pt^ -||tracking.stihl.ua^ -||tracking.summer.wisc.edu^ -||tracking.syncsketch.com^ -||tracking.syncsort.com^ -||tracking.tdk.com.cn^ -||tracking.tdk.com^ -||tracking.te.com^ -||tracking.test.insead.edu^ -||tracking.theemeraldconference.com^ -||tracking.thermoinfo.com^ -||tracking.thiomucase.es^ -||tracking.thunderhead.com^ -||tracking.ti.com.cn^ -||tracking.ti.com^ -||tracking.tibnor.fi^ -||tracking.tij.co.jp^ -||tracking.trinet.com^ -||tracking.uberflip.com^ -||tracking.uk.adp.com^ -||tracking.umbrella.com^ -||tracking.umms.org^ -||tracking.unisabana.edu.co^ -||tracking.usj.es^ -||tracking.utas.edu.au^ -||tracking.ventingdirect.com^ -||tracking.ventingpipe.com^ -||tracking.venture-net.co.jp^ -||tracking.verisk.com^ -||tracking.veritas.com^ -||tracking.vertiv.com^ -||tracking.vertivco.com^ -||tracking.virginmediao2business.co.uk^ -||tracking.virtus.com^ -||tracking.visitdubai.com^ -||tracking.visma.co.uk^ -||tracking.visma.com^ -||tracking.visma.dk^ -||tracking.visma.fi^ -||tracking.visma.lt^ -||tracking.visma.lv^ -||tracking.visma.net^ -||tracking.visma.nl^ -||tracking.visma.no^ -||tracking.visma.ro^ -||tracking.visma.se^ -||tracking.vismaraet.nl^ -||tracking.vismaspcs.se^ -||tracking.vitalant.org^ -||tracking.vodafone.co.uk^ -||tracking.vodafone.com^ -||tracking.wettfreunde.net^ -||tracking.winecoolerdirect.com^ -||tracking.xmor.info^ -||tracking.y-nmc.jp^ -||tracking.yealink.com^ -||tracking.your.montagehealth.org^ -||tracking.zagranie.com^ -||tracking.zakelijk.cz.nl^ -||tracking1.cigna.com.hk^ -||tracking1.cigna.com^ -||tracking1.cignaglobal.com^ -||tracking1.cignaglobalhealth.com^ -||tracking1.labcorp.com^ -||tracking1.questdiagnostics.com^ -||tracking1.tena.com^ -||tracking2.bokf.com^ -||tracking2.bokfinancial.com^ -||tracking2.cigna.co.id^ -||tracking2.cigna.co.uk^ -||tracking2.cigna.com.tw^ -||tracking2.cignaglobal.com^ -||tracking2.labcorp.com^ -||tracking2.questdiagnostics.com^ -||tracking3.labcorp.com^ -||tracking3.lenovo.com^ -||tracking4.labcorp.com^ -||tracking5.labcorp.com^ -||trackingalumni.accenturealumni.com^ -||trackingcareers.accenture.com^ -||trackingeloqua.tec.mx^ -||trackinginternal.hcltech.com^ -||trackinginternal.ti.com^ -||trackinglrus.wolterskluwer.com^ -||trackingmms.accenture.com^ -||trackmarketing.staubli.com^ -||tracks1.ferrari.com^ -||tracks3.ferrari.com^ -||trackside.redbull.racing^ -||tradeshow.edm.globalsources.com^ -||trail.cleardocs.com^ -||trail.dominiosistemas.com.br^ -||trail.sweetandmaxwell.co.uk^ -||trail.thomsonreuters.ca^ -||trail.thomsonreuters.co.jp^ -||trail.thomsonreuters.co.kr^ -||trail.thomsonreuters.co.nz^ -||trail.thomsonreuters.co.uk^ -||trail.thomsonreuters.com.au^ -||trail.thomsonreuters.com.br^ -||trail.thomsonreuters.com.hk^ -||trail.thomsonreuters.com.my^ -||trail.thomsonreuters.com.sg^ -||trail.thomsonreuters.com^ -||trail.thomsonreuters.in^ -||training.hager.co.uk^ -||training.thunderhead.com^ -||transact.blackboard.com^ -||transplant.care.uhssa.com^ -||transplant.universityhealth.com^ -||trck.accredible.com^ -||trck.asset.malcotools.com^ -||trck.comms.watlow.com^ -||trck.copeland.com^ -||trck.e.atradius.com^ -||trck.el.supremapoker.com.br^ -||trck.employerservices.experian.com^ -||trck.feedback.ignite.gleague.nba.com^ -||trck.forfatterforbundet.no^ -||trck.go.emoneyadvisor.com^ -||trck.go.natera.com^ -||trck.graiman.com^ -||trck.info.fullsaildc3.com^ -||trck.internalnews.dbschenker.com^ -||trck.levata.com^ -||trck.medlem.elogit.no^ -||trck.medtronic.com^ -||trck.my.elca.ch^ -||trck.www4.earlywarning.com^ -||trck.www4.paze.com^ -||trck.www4.zellepay.com^ -||trelleborg.tecs1.com^ -||trk.admmontreal.com^ -||trk.admtoronto.com^ -||trk.advancedmanufacturingeast.com^ -||trk.advancedmanufacturingminneapolis.com^ -||trk.advisory.com^ -||trk.aeroengineconference.com^ -||trk.aeroenginesusa.com^ -||trk.afcom.com^ -||trk.aibusiness.com^ -||trk.airborn.com^ -||trk.aircharterguide.com^ -||trk.airchecklab.com^ -||trk.airdimensions.com^ -||trk.airportdata.com^ -||trk.albinpump.com^ -||trk.ali-cle.org^ -||trk.altis.com.gr^ -||trk.americancityandcounty.com^ -||trk.anthology.com^ -||trk.appliedintelligence.live^ -||trk.arozone.cn^ -||trk.arozone.com^ -||trk.astrasrilanka.com^ -||trk.aviationweek.com^ -||trk.avlr.net^ -||trk.bakewithstork.com^ -||trk.banktech.com^ -||trk.barcoproducts.ca^ -||trk.barcoproducts.com^ -||trk.batterytechonline.com^ -||trk.becel.ca^ -||trk.becel.com.br^ -||trk.becel.com^ -||trk.beefmagazine.com^ -||trk.berger-levrault.com^ -||trk.bertolli.co.uk^ -||trk.biomedboston.com^ -||trk.blueband.com.ec^ -||trk.blueband.com^ -||trk.bona.nl^ -||trk.bonella.com.ec^ -||trk.broomwade.com^ -||trk.brummelandbrown.com^ -||trk.business.westernunion.at^ -||trk.business.westernunion.ca^ -||trk.business.westernunion.ch^ -||trk.business.westernunion.co.nz^ -||trk.business.westernunion.co.uk^ -||trk.business.westernunion.com.au^ -||trk.business.westernunion.com^ -||trk.business.westernunion.de^ -||trk.business.westernunion.fr^ -||trk.business.westernunion.it^ -||trk.business.westernunion.pl^ -||trk.catersource.com^ -||trk.cf.labanquepostale.fr^ -||trk.championairtech.com^ -||trk.championpneumatic.com^ -||trk.channelfutures.com^ -||trk.channelleadershipsummit.com^ -||trk.channelpartnersconference.com^ -||trk.childrensfashionevents.com^ -||trk.citeline.com^ -||trk.compair.com^ -||trk.concisegroup.com^ -||trk.contact.alphabet.com^ -||trk.contact.umpquabank.com^ -||trk.contentmarketinginstitute.com^ -||trk.contentmarketingworld.com^ -||trk.convera.com^ -||trk.coteriefashionevents.com^ -||trk.countrycrock.com^ -||trk.createyournextcustomer.com^ -||trk.cremebonjour.fi^ -||trk.cremebonjour.se^ -||trk.croma.nl^ -||trk.cx.motivcx.com^ -||trk.cz.business.westernunion.com^ -||trk.daimlertruck.com^ -||trk.darkreading.com^ -||trk.datacenterknowledge.com^ -||trk.datacenterworld.com^ -||trk.delma.hu^ -||trk.delma.ro^ -||trk.delphiquest.com^ -||trk.designcon.com^ -||trk.designnews.com^ -||trk.digitaltveurope.com^ -||trk.dosatron.com^ -||trk.drdobbs.com^ -||trk.du-darfst.de^ -||trk.dvsystems.com^ -||trk.e.chooseumpquabank.com^ -||trk.e.mailchimp.com^ -||trk.elmlea.com^ -||trk.elmorietschle.com^ -||trk.elq.mcphersonoil.com^ -||trk.emcowheaton.com^ -||trk.en-cz.business.westernunion.com^ -||trk.en.business.westernunion.at^ -||trk.en.business.westernunion.ch^ -||trk.en.business.westernunion.de^ -||trk.en.business.westernunion.fr^ -||trk.en.business.westernunion.it^ -||trk.en.business.westernunion.pl^ -||trk.encore-can.com^ -||trk.encore-mx.com^ -||trk.encoreglobal.com^ -||trk.engie-homeservices.fr^ -||trk.engineeringwk.com^ -||trk.engineleasingandfinance-europe.com^ -||trk.enjoyplanta.com^ -||trk.enterpriseconnect.com^ -||trk.equifax.com.au^ -||trk.event.eset.com^ -||trk.everestblowers.com^ -||trk.everestvacuum.com^ -||trk.evtechexpo.com^ -||trk.evtechexpo.eu^ -||trk.farmprogress.com^ -||trk.farmprogressshow.com^ -||trk.feedstuffs.com^ -||trk.fieldandmain.com^ -||trk.fieldandmaininsurance.com^ -||trk.findfashionevents.com^ -||trk.fintechfutures.com^ -||trk.flora.com^ -||trk.flora.cz^ -||trk.flora.es^ -||trk.flora.pl^ -||trk.floraplant.at^ -||trk.floraspread.com.au^ -||trk.food-management.com^ -||trk.fr.business.westernunion.ca^ -||trk.fr.business.westernunion.ch^ -||trk.fruitdor.fr^ -||trk.futureelectronics.cn^ -||trk.futureelectronics.com^ -||trk.gamasutra.com^ -||trk.gamedeveloper.com^ -||trk.gardnerdenver.com.cn^ -||trk.gardnerdenver.com^ -||trk.gazpasserelle.engie.fr^ -||trk.gdconf.com^ -||trk.go.ingrammicro.com^ -||trk.go.ingrammicrocloud.com^ -||trk.greenbuildexpo.com^ -||trk.hankisonair.com^ -||trk.hartell.com^ -||trk.haskel.com^ -||trk.hello.navan.com^ -||trk.hibon.com^ -||trk.hoffmanandlamson.com^ -||trk.hppumps.com^ -||trk.huskerharvestdays.com^ -||trk.icantbelieveitsnotbutter.com^ -||trk.imeeventscalendar.com^ -||trk.imengineeringeast.com^ -||trk.imengineeringsouth.com^ -||trk.info.puntonet.ec^ -||trk.info.shutterstock.com^ -||trk.info.verifi.com^ -||trk.info.verticurl.com^ -||trk.informaconnect.com^ -||trk.informaengage.com^ -||trk.informatech.com^ -||trk.informationweek.com^ -||trk.ingersollrand.com^ -||trk.insurancetech.com^ -||trk.interop.com^ -||trk.ir-now.com^ -||trk.irco.com^ -||trk.itprotoday.com^ -||trk.iwceexpo.com^ -||trk.jeffersonhealth.org^ -||trk.jorc.com^ -||trk.kansashealthsystem.com^ -||trk.kirbybuilt.com^ -||trk.laetta.com^ -||trk.lasvegasaces.com^ -||trk.latta.se^ -||trk.lightreading.com^ -||trk.living.chartwell.com^ -||trk.lmipumps.com^ -||trk.lookbook.westernunion.com^ -||trk.mackayshields.com^ -||trk.magicfashionevents.com^ -||trk.mailchimp.com^ -||trk.margarinaiberia.com.mx^ -||trk.maximus-solution.com^ -||trk.md-kinney.com^ -||trk.mddionline.com^ -||trk.mdeawards.com^ -||trk.meetingsnet.com^ -||trk.metronet.com^ -||trk.metronetbusiness.com^ -||trk.microsyringes.com^ -||trk.midamericanenergy.com^ -||trk.milda.se^ -||trk.miltonroy.com^ -||trk.mk.westernunion.com^ -||trk.mktg.nec.com^ -||trk.mppumps.com^ -||trk.mt.business.westernunion.com^ -||trk.mycare.maimo.org^ -||trk.nashpumps.com^ -||trk.nationalhogfarmer.com^ -||trk.ndtco.com^ -||trk.neogen.com^ -||trk.networkcomputing.com^ -||trk.networkxevent.com^ -||trk.news.loyaltycompany.com^ -||trk.nojitter.com^ -||trk.novelis.com^ -||trk.nrn.com^ -||trk.nvenergy.com^ -||trk.oberdorferpumps.com^ -||trk.oma.dk^ -||trk.optum.com^ -||trk.oxywise.com^ -||trk.packagingdigest.com^ -||trk.paragondirect.com^ -||trk.parkitbikeracks.com^ -||trk.peceniejeradost.sk^ -||trk.pecenijeradost.cz^ -||trk.pedrogil.com^ -||trk.picnictables.com^ -||trk.planta.be^ -||trk.planta.pt^ -||trk.plantafin.fr^ -||trk.plasticstoday.com^ -||trk.powderandbulkshow.com^ -||trk.powderandbulksolids.com^ -||trk.powerdms.com^ -||trk.pro-activ.com^ -||trk.projectfashionevents.com^ -||trk.protiviti.com^ -||trk.ptl.irco.com^ -||trk.quantumbusinessnews.com^ -||trk.rama.com.co^ -||trk.rama.com^ -||trk.reach.utep.edu^ -||trk.reavell.com^ -||trk.recetasprimavera.com^ -||trk.restaurant-hospitality.com^ -||trk.riverview.org^ -||trk.robuschi.com^ -||trk.routesonline.com^ -||trk.runtechsystems.com^ -||trk.sais.ch^ -||trk.sana.com.tr^ -||trk.sanella.de^ -||trk.secure.icmi.com^ -||trk.seepex.com^ -||trk.send.waoo.dk^ -||trk.share.healthc2u.com^ -||trk.solo.be^ -||trk.solution.desjardins.com^ -||trk.sourcingatmagic.com^ -||trk.specialevents.com^ -||trk.speedbumpsandhumps.com^ -||trk.spsglobal.com^ -||trk.supermarketnews.com^ -||trk.tbivision.com^ -||trk.telecoms.com^ -||trk.the5gexchange.com^ -||trk.thea.at^ -||trk.theaisummit.com^ -||trk.thebatteryshow.com^ -||trk.thebatteryshow.eu^ -||trk.thebenchfactory.com^ -||trk.themspsummit.com^ -||trk.thinkhdi.com^ -||trk.thomaspumps.com^ -||trk.todocouplings.com^ -||trk.trashcontainers.com^ -||trk.treetopproducts.com^ -||trk.tricontinent.com^ -||trk.tu-auto.com^ -||trk.tulipan.es^ -||trk.tuthillpump.com^ -||trk.ummhealth.org^ -||trk.updates.juilliard.edu^ -||trk.urgentcomm.com^ -||trk.us.vacasa.com^ -||trk.vaqueiro.pt^ -||trk.violife.com^ -||trk.violifefoods.com^ -||trk.violifeprofessional.com^ -||trk.vitam.gr^ -||trk.vodafone.com.tr^ -||trk.wallstreetandtech.com^ -||trk.wardsauto.com^ -||trk.wealthmanagement.com^ -||trk.welchvacuum.com^ -||trk.wellsfargocenterphilly.com^ -||trk.williamspumps.com^ -||trk.yzsystems.com^ -||trk.zeks.com^ -||trk.zinsser-analytic.com^ -||trk01.informaconnect.com^ -||trk01.knect365.com^ -||trk02.knect365.com^ -||trk03.informatech.com^ -||trk03.knect365.com^ -||trk04.informatech.com^ -||trk05.informatech.com^ -||trk09.informa.com^ -||trk2.avalara.com^ -||trkcmi.informaconnect.com^ -||trust.flexpay.io^ -||trust.zebra.com^ -||try.blackboard.com^ -||try.tableau.com^ -||try.tableausoftware.com^ -||tv.totaljobs.com^ -||tw-go.experian.com^ -||u.audi-pureprotection.com^ -||u.fordprotectplans.com^ -||u.landing.ni.com^ -||uat.enterprises.proximus.com^ -||ucaas.avaya.com^ -||uk-business.vodafone.com^ -||uk-mktg.vodafone.com^ -||uk.adpinfo.com^ -||uk.contact.alphabet.com^ -||uk.partner.equifax.co.uk^ -||uk.realestate.bnpparibas^ -||uk.verintsystemsinc.com^ -||uki2.secureforms.mcafee.com^ -||ukri.innovateuk.org^ -||unifiedwfo.verintsystemsinc.com^ -||unsubscribe.datadelivers.com^ -||update.purina.com^ -||update.tcsg.edu^ -||updates.gaylordhotels.com^ -||us-go.experian.com^ -||us-now.experian.com^ -||us.mattamyhomes.com^ -||us.ricoh-usa.com^ -||usingyourcard.americanexpress.co.uk^ -||ussolutions.equifax.com^ -||ut.econnect.utexas.edu^ -||uxplora.davivienda.com^ -||vge-business.vodafone.com^ -||vge-mktg-secure.vodafone.com^ -||vge-mktg.vodafone.com^ -||video.verintsystemsinc.com^ -||videos.adp.ca^ -||videos.personneltoday.com^ -||view.americanbuildings.com^ -||view.aon.com^ -||view.centria.com^ -||view.kirbybuildingsystems.com^ -||view.metlspan.com^ -||view.nucorbuildingsystems.com^ -||vip.german.ni.com^ -||vip.granicus.com^ -||vip.maxtor.com^ -||vision.cbre.com.au^ -||vision.cbresi.com.au^ -||visit.adelaide.edu.au^ -||visit.atea.fi^ -||visit.donateblood.com.au^ -||visit.hypertherm.com^ -||visit.lifeblood.com.au^ -||visit.oakstreethealth.com^ -||visit.tafensw.edu.au^ -||visit.tenplay.com.au^ -||visitor.arabiancentres.com^ -||visitor.hotelex.cn^ -||visma.e-conomic.dk^ -||vismaturva.visma.fi^ -||voice.thewealthadvisor.com^ -||vois.vodafone.com^ -||w3.air-worldwide.com^ -||w4.air-worldwide.com^ -||water.tetrapak.com^ -||we.care.oswegohealth.org^ -||wealth.informabi.com^ -||web.akademiai.hu^ -||web.care.eehealth.org^ -||web.care.lcmchealth.org^ -||web.care.mclaren.org^ -||web.care.northoaks.org^ -||web.care.sheppardpratt.org^ -||web.care.uhssa.com^ -||web.care.wakemed.org^ -||web.connect.garnethealth.org^ -||web.destinationretirement.co.uk^ -||web.devry.edu^ -||web.health.childrenswi.org^ -||web.health.hannibalregional.org^ -||web.health.memorialcare.org^ -||web.healthcare.northbay.org^ -||web.healthnews.thechristhospital.com^ -||web.histoire.emailing.bnpparibas^ -||web.houstontexans.com^ -||web.houstontexansluxe.com^ -||web.hubfinancialsolutions.co.uk^ -||web.info.aspirus.org^ -||web.info.mymosaiclifecare.org^ -||web.lsse.net^ -||web.morganfranklin.com^ -||web.northwestern.nm.org^ -||web.nortonrosefulbright.com^ -||web.novogene.com^ -||web.novuna.co.uk^ -||web.novunabusinessfinance.co.uk^ -||web.novunapersonalfinance.co.uk^ -||web.orionpharma.com^ -||web.wearejust.co.uk^ -||web.winzer.com^ -||web2.perkinelmer.com^ -||web3.perkinelmer.com^ -||web8.perkinelmer.com^ -||webcasts.de.ni.com^ -||webcasts.partnermcafee.com^ -||webinar.dnv.com^ -||webinar.intel.com^ -||webinar.ndtco.com^ -||webinars.att.com^ -||webinars.blackboard.com^ -||webinars.cigna.com^ -||webinars.coface.com^ -||webinars.elliemae.com^ -||webinars.monster.com^ -||webinars.oncourselearning.com^ -||webinars.thermofisher.com^ -||webmail.carte-gr.total.fr^ -||webmail.information.maileva.com^ -||website-security.geotrust.com^ -||website-security.rapidssl.com^ -||website-security.thawte.com^ -||website-tracking.smartx.com^ -||webtracking.acams.org^ -||webtracking.aucmed.edu^ -||webtracking.becker.com^ -||webtracking.cuwebinars.com^ -||webtracking.devry.edu^ -||webtracking.medical.rossu.edu^ -||webtracking.moneylaundering.com^ -||webtracking.oncourselearning.com^ -||webtrackingvet.rossu.edu^ -||welcome.ciscopowerofpartnership.com^ -||welcome.coniferhealth.com^ -||welcome.e.chiefs.com^ -||welcome.floridagators.com^ -||welcome.item24.be^ -||welcome.item24.ch^ -||welcome.item24.com^ -||welcome.item24.cz^ -||welcome.item24.de^ -||welcome.item24.es^ -||welcome.item24.fr^ -||welcome.item24.hu^ -||welcome.item24.it^ -||welcome.item24.kr^ -||welcome.item24.mx^ -||welcome.item24.nl^ -||welcome.item24.pl^ -||welcome.item24.pt^ -||welcome.item24.us^ -||welcome.vodafone.com^ -||wellness.palomarhealth.org^ -||whatif.fr.adobe.com^ -||whatif.it.adobe.com^ -||whatif.nl.adobe.com^ -||whitepapers.blackboard.com^ -||whitepapers.rockwellautomation.com^ -||work.construction.com^ -||workforcetrends.advancedtech.com^ -||workplace.ricoh.de^ -||workplace.ricoh.ie^ -||workplace.ricoh.it^ -||workplacesolutions.equifax.com^ -||workplacesolutions.inform.equifax.com^ -||www-103.aig.com^ -||www-103.chartisinsurance.com^ -||www-104.aig.com^ -||www-105.aig.com^ -||www-106.aig.com^ -||www-107.aig.com^ -||www-109.aig.com^ -||www-110.aig.com^ -||www.acpprograms.org^ -||www.activisionnews.com^ -||www.adpinfo.com^ -||www.allergodil.cz^ -||www.allergodil.hu^ -||www.aonunited.com^ -||www.armolipid.com.ru^ -||www.avismarketing.gr^ -||www.cf.labanquepostale.fr^ -||www.chronischepancreatitis.nl^ -||www.comcastbiz.com^ -||www.communications.kra.go.ke^ -||www.completatusdatos.com^ -||www.connect.api.almirall.com^ -||www.connect.johndorys.co.za^ -||www.connect.panarottis.co.za^ -||www.connect.spurcorp.com^ -||www.enterprises.proximus.com^ -||www.epargnez.adp.ca^ -||www.epipenexpiryservice.com^ -||www.ess.tis.co.jp^ -||www.eu.viatrisconnect.com^ -||www.fordprotectplans.com^ -||www.fovissstejavercancun.com^ -||www.gaylordhotelsnews.com^ -||www.get.ukg.com^ -||www.glf.mt.com^ -||www.heatexperience.com^ -||www.infineon-community.com^ -||www.info.dunnhumby.com^ -||www.info.redhat.com^ -||www.infos-experts.adp.com^ -||www.ins-mercadeo.com^ -||www.ins-multiasistencia.com^ -||www.jabalproperties.org^ -||www.kings-email.com^ -||www.learn.dunnhumby.com^ -||www.longterminvestmentsolutions.com^ -||www.lowvolatilitysolutions.com^ -||www.ma-catinfo.com^ -||www.maserati.info^ -||www.mediwebinars.com^ -||www.medtronicsolutions.com^ -||www.mkt.uvg.edu.gt^ -||www.muni360.com^ -||www.mydocusign.com^ -||www.myfiltration.eaton.com^ -||www.mykingsevents.com^ -||www.mykingstickets.com^ -||www.myvehicle.eaton.com^ -||www.nepinplainsight.com^ -||www.newscatalanaoccidente.com^ -||www.newsgrupocatalanaoccidente.com^ -||www.newsplusultra.es^ -||www.on24-webinars.co.uk^ -||www.orionkeraily.fi^ -||www.partnermcafee.com^ -||www.quoteafs.com^ -||www.rdalpha.net^ -||www.registrocofinavit.com^ -||www.registrocumbresallegro.com^ -||www.registroeventosjaver.com^ -||www.registrojardinesdecastalias.com^ -||www.registrovalledelosencinos.com^ -||www.registrovalledesantiago.com^ -||www.registrovillaslapiedad.com^ -||www.retirementadvisorinsights.com^ -||www.safecoprograms.com^ -||www.saugellaviso.it^ -||www.save.adp.ca^ -||www.science.dunnhumby.com^ -||www.scienceaaas.org^ -||www.secondmicrosite.com^ -||www.secure.rc-club.ricoh.co.jp^ -||www.send.hollandcasino.nl^ -||www.service.cz.nl^ -||www.service.hollandcasino.nl^ -||www.service.just.nl^ -||www.solutions.prudential.com^ -||www.sp-newfunds.com^ -||www.subscriptions.nokiasiemensnetworks.com^ -||www.test92.com^ -||www.thalesgroup-events.com^ -||www.tracking.adp.ch^ -||www.tracking.adp.co.uk^ -||www.tracking.alabamapower.com^ -||www.training.graduateschool.edu^ -||www.undiaenlausj.com^ -||www.unrealpain.com^ -||www.us.roche-applied-science.com^ -||www.viatrisneuropathicpain.co.uk^ -||www.whennotsharingiscaring.com^ -||www.yourplanprovisions.com^ -||www.zakelijk.cz.nl^ -||www1.kawasaki-motors.com^ -||www2.carte-gr.total.fr^ -||www2.daikinchemicals.com^ -||www2.edgenuity.com^ -||www2.festo.com^ -||www2.firsttechfed.com^ -||www2.info.renesas.cn^ -||www3.americanprogressaction.org^ -||xvantage.ingrammicro.com^ -||your.maas.ptvgroup.com^ -||your.mapandguide.ptvgroup.com^ -||your.mapandmarket.ptvgroup.com^ -||your.routeoptimiser.ptvgroup.com^ -||your.trafficdata.ptvgroup.com^ -||your.vissim.ptvgroup.com^ -||your.vistro.ptvgroup.com^ -||your.visum.ptvgroup.com^ -||your.xserver.ptvgroup.com^ -||yourporsche.nabooda-auto.com^ -||yourporscheimg.nabooda-auto.com^ -||za-go.experian.com^ -||zakelijke-betalingsoplossingen.americanexpress.nl^ -||zakelijke-oplossingen-nld.americanexpress.nl^ -||zakelijkemarkt.vattenfall.nl^ -||zh-tw.siemensplmevents.com^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_ad-ebis.txt *** -||a9d8e7b6i5s.andgino.jp^ -||aaa.aqualink.tv^ -||aaaa.jawfp2.org^ -||aaaa.nocor.jp^ -||ac-3.mix.tokyo^ -||ac-ebis-otrk.usen.com^ -||ac-ebis-stb.usen.com^ -||ac-ebis-uhome.usen.com^ -||ac-ebis.otoraku.jp^ -||ac-ebis.usen-ad.com^ -||ac-ebis.usen-insurance.com^ -||ac-ebis.usen-pos.com^ -||ac-ebis.usen-service.com^ -||ac-ebis.usen-store.com^ -||ac-ebis.usen.biz^ -||ac.geechs-job.com^ -||ad-ebis.bookpass.auone.jp^ -||ad-ebis.mynavi-job20s.jp^ -||ad-ebis.toysub.jp^ -||ad.320320.net^ -||ad.aim-universe.co.jp^ -||ad.aucfan.com^ -||ad.aucview.com^ -||ad.autorace.jp^ -||ad.kddi-fs.com^ -||ad.ordersuit.info^ -||ad.takasu.co.jp^ -||ad.tempstaff.co.jp^ -||ad.theatre.co.jp^ -||ad.theatreacademy.jp^ -||ad1.tone.ne.jp^ -||adbq.bk.mufg.jp^ -||ade.deskstyle.info^ -||ade.hirose-fx.co.jp^ -||ade.jfx.co.jp^ -||adebis-52667624.wowma.jp^ -||adebis-bkan.vbest.jp^ -||adebis-cname.jobmall.jp^ -||adebis-dojyo.dojyo.jp^ -||adebis-morijuku.morijuku.com^ -||adebis-rikon.vbest.jp^ -||adebis-saimu.vbest.jp^ -||adebis.464981.com^ -||adebis.afc-shop.com^ -||adebis.ahjikan-shop.com^ -||adebis.aij.co.jp^ -||adebis.angfa-store.jp^ -||adebis.bathclin.jp^ -||adebis.bbb-life.jp^ -||adebis.chojyu.com^ -||adebis.crowdcredit.jp^ -||adebis.daiwahouse.co.jp^ -||adebis.demae-can.com^ -||adebis.e-ohaka.com^ -||adebis.entetsu.co.jp^ -||adebis.ferret-one.com^ -||adebis.furisode-ichikura.jp^ -||adebis.gfs-official.com^ -||adebis.gfs.tokyo^ -||adebis.gogin.co.jp^ -||adebis.harutaka.jp^ -||adebis.hotstaff.co.jp^ -||adebis.jp.iface.com^ -||adebis.juku.st^ -||adebis.kamada.co.jp^ -||adebis.kaonavi.jp^ -||adebis.kirei-journal.jp^ -||adebis.kirin.co.jp^ -||adebis.kodomohamigaki.com^ -||adebis.kose.co.jp^ -||adebis.koutsujiko.jp^ -||adebis.leben-establish.jp^ -||adebis.leben-style.jp^ -||adebis.lifestylemag.jp^ -||adebis.livable.co.jp^ -||adebis.logoshome.jp^ -||adebis.mizunomori.com^ -||adebis.muscledeli.jp^ -||adebis.no.01.alo-organic.com^ -||adebis.nursery.co.jp^ -||adebis.o-baby.net^ -||adebis.pikaichi.co.jp^ -||adebis.qeee.jp^ -||adebis.real-style.co.jp^ -||adebis.report.clinic^ -||adebis.reruju.com^ -||adebis.rishiria-furel.com^ -||adebis.s-toushi.jp^ -||adebis.saison-pocket.com^ -||adebis.satori.marketing^ -||adebis.sbishinseibank.co.jp^ -||adebis.sbpayment.jp^ -||adebis.shinseibank.com^ -||adebis.shiseido.co.jp^ -||adebis.shopserve.jp^ -||adebis.sokamocka.com^ -||adebis.thd-web.jp^ -||adebis.theclinic.jp^ -||adebis.tipness.co.jp^ -||adebis.tohshin.co.jp^ -||adebis.toitoitoi.clinic^ -||adebis.tokyuhotels.co.jp^ -||adebis.toushi-up.com^ -||adebis.tspot.co.jp^ -||adebis.urban-research.jp^ -||adebis.zenyaku-hbshop.com^ -||adebis01.job-con.jp^ -||adebis02.juku.st^ -||adebis0508.brain-sleep.com^ -||adebis1.1rnavi.com^ -||adebis8628.matsui.co.jp^ -||adebiscname.au-sonpo.co.jp^ -||adebiscname.auone.jp^ -||adebiscname.sumirin-ht.co.jp^ -||adebisu.wowow.co.jp^ -||adex.kintetsu-re.co.jp^ -||adex.naruko333.jp^ -||adex.predear.com^ -||admeasure.hh-online.jp^ -||adnl.bk.mufg.jp^ -||adpromo.peppynet.com^ -||adtrack.alchemy-web.jp^ -||adtrack.loracle.jp^ -||adtrack.maisonlexia.com^ -||aesus.so-net.ne.jp^ -||analyse.hinemos.info^ -||axjfkc.kobayashi.co.jp^ -||bbbb.goace.jp^ -||beeline.beeline-tire.co.jp^ -||campaign-direct.eisai.jp^ -||campaign-direct.ketsuatsu-taisaku.xyz^ -||campaign-direct.kouketsuatsu-health.xyz^ -||ccc.aqualink.tokyo^ -||cmass.massmedian.co.jp^ -||cname-ade.gom-in.com^ -||cname-ade.hankoya.com^ -||cname-ade.original-calendar.com^ -||cname-ade.shachihata.biz^ -||cname-adebis.nice2meet.us^ -||cname-adebis.vcube.com^ -||cname.crank-in.net^ -||cname.ebis.folio-sec.com^ -||cname.finess.jp^ -||cname.gladis.jp^ -||cname.jaic-college.jp^ -||cname.jf-d.jp^ -||cname.kyusai.co.jp^ -||cname.lions-mansion.jp^ -||cname.mebiusseiyaku.co.jp^ -||cname.mitsuihome.co.jp^ -||cname.nikkei-cnbc.co.jp^ -||cname1.shakenkan.co.jp^ -||cname2.shaken-yoyaku.com^ -||cnameebis.eizoshigoto.com^ -||cnameebis.usagi-online.com^ -||cnameforitp.dermed.jp^ -||cnebis.chocola.com^ -||cnebis.eisai.jp^ -||cnebis.i-no-science.com^ -||corporate.frontierconsul.net^ -||cs0010sbeda.theory-clinic.com^ -||cs1470sbeda.schoolasp.com^ -||cs1863sbeda.glaucoma-arrest.net^ -||cs2113sbeda.hokto-onlineshop.jp^ -||cvs.kireimo.jp^ -||d-kint.d-kintetsu.co.jp^ -||digital.anicom-sompo.co.jp^ -||eb.bewithyou.jp^ -||eb.o-b-labo.com^ -||ebis-cname.mirai-japan.co.jp^ -||ebis-tracking.hirakata-skin-clinic.com^ -||ebis-tracking.okinawa-keisei.com^ -||ebis-tracking.shinyokohama-beauty.com^ -||ebis-tracking.tcb-beauty.net^ -||ebis-tracking.tcb-fukushima.com^ -||ebis-tracking.tcb-mito.com^ -||ebis-tracking.tcb-recruit.com^ -||ebis-tracking.tcb-setagaya.com^ -||ebis.15jikai.com^ -||ebis.2jikaikun.com^ -||ebis.aibashiro.jp^ -||ebis.apo-mjob.com^ -||ebis.as-1.co.jp^ -||ebis.ayura.co.jp^ -||ebis.bbo.co.jp^ -||ebis.belta.co.jp^ -||ebis.biyo-job.com^ -||ebis.bulk.co.jp^ -||ebis.care-tensyoku.com^ -||ebis.ce-parfait.com^ -||ebis.coyori.com^ -||ebis.cp.claudia.co.jp^ -||ebis.delis.co.jp^ -||ebis.eiyoushi-tensyoku.com^ -||ebis.forcas.com^ -||ebis.funai-finance.com^ -||ebis.funaisoken.co.jp^ -||ebis.glico-direct.jp^ -||ebis.gokusen-ichiba.com^ -||ebis.goldcrest.co.jp^ -||ebis.housekeeping.or.jp^ -||ebis.j-l-m.co.jp^ -||ebis.jinzai-business.com^ -||ebis.jobcan.jp^ -||ebis.jobcan.ne.jp^ -||ebis.jojoble.jp^ -||ebis.jukkou.com^ -||ebis.kan54.jp^ -||ebis.kimonoichiba.com^ -||ebis.kubara.jp^ -||ebis.lululun.com^ -||ebis.macchialabel.com^ -||ebis.makeshop.jp^ -||ebis.mucuna.co.jp^ -||ebis.n-pri.jp^ -||ebis.nomu-silica.jp^ -||ebis.okasan-online.co.jp^ -||ebis.onamae.com^ -||ebis.palclair.jp^ -||ebis.pasonatech.co.jp^ -||ebis.rabo.cat^ -||ebis.radish-pocket.com^ -||ebis.radishbo-ya.co.jp^ -||ebis.randstad.co.jp^ -||ebis.re-shop.jp^ -||ebis.rozetta.jp^ -||ebis.s-bisco.jp^ -||ebis.samurai271.com^ -||ebis.sbismile.co.jp^ -||ebis.seibu-k.co.jp^ -||ebis.sekisuihouse.co.jp^ -||ebis.sekisuihouse.com^ -||ebis.shabon.com^ -||ebis.smakon.jp^ -||ebis.studio-alice.co.jp^ -||ebis.studioindi.jp^ -||ebis.sunstar-shop.jp^ -||ebis.tokado.jp^ -||ebis.touhan-navi.com^ -||ebis.treasurenet.jp^ -||ebis.umulin-lab.com^ -||ebis.yumeyakata.com^ -||ebis01.vernal.co.jp^ -||ebis01.zkai.co.jp^ -||ebis2020.hoiku-job.net^ -||ebis202001.joyfit.jp^ -||ebisanalysis.mouse-jp.co.jp^ -||ebiscname.clark.ed.jp^ -||ebiscname.english-native.net^ -||ebiscname.infofactory.jp^ -||ebiscname.j-esthe-yoyaku.com^ -||ebiscname.j-esthe.com^ -||ebiscname.native-phrase.com^ -||ebiscname.urr.jp^ -||ebiscosme.tamagokichi.com^ -||ebisfracora.fracora.com^ -||ebisstore.tamagokichi.com^ -||ebistoppan1.kyowahakko-bio-campaign-1.com^ -||emc.dr-stick.shop^ -||frontierconsul02.tsunagaru-office.com^ -||greenjapan-cname.green-japan.com^ -||hokkaidobank.rapi.jp^ -||isebis.takamiclinic.or.jp^ -||isebis.yutoriform.com^ -||itp.phoebebeautyup.com^ -||itpebis03.recella3d.com^ -||marketing.biz.mynavi.jp^ -||marketing.zwei.com^ -||matsubun.matsubun.com^ -||maz.zba.jp^ -||mcad.mods-clinic.com^ -||mcad.mods-clinic.info^ -||mdm.hibinobi-mandom.jp^ -||media.geinoschool-hikaku.net^ -||mgn.ebis.xn--olsz5f0ufw02b.net^ -||msr.p-antiaging.com^ -||ncc.nip-col.jp^ -||nlp-japan.life-and-mind.com^ -||p5mcwdbu.ginzo-buy.jp^ -||partner.haru-shop.jp^ -||sem.tkc-biyou.jp^ -||seo.tkc110.jp^ -||sep02.hinagiku-life.jp^ -||sinceregarden.sincere-garden.jp^ -||test-ad.lucia-c.com^ -||test-ad.mens-lucia.com^ -||tracking.mysurance.co.jp^ -||tracking.nokai.jp^ -||tracking.wao-corp.com^ -||tracking.wao.ne.jp^ -||ureruadebis.papawash.com^ -||urerucname.manara.jp^ -||ureruebis.nintama.co.jp^ -||urr.kumamoto-food.com^ -||www-ebis.384.co.jp^ -||www2.hnavi.co.jp^ -||y8hxgv9m.kobetsu.co.jp^ -||z89yxner8h.datsumou-beauty-times.com^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_eulerian.txt *** -||0sbm.consobaby.co.uk^ -||16ao.mathon.fr^ -||1ctc.sfr.fr^ -||2efj.economies.cheque-dejeuner.com^ -||2efj.up.coop^ -||3esm.consubebe.es^ -||5fm.985fm.ca^ -||66jo.societegenerale.fr^ -||6pal.consobaby.com^ -||6swu.cpa-france.org^ -||7lbd4.armandthiery.fr^ -||7mx.eider.com^ -||7mx.eidershop.com^ -||8ezc.sfr.fr^ -||a.audi.fr^ -||a.audifrance.fr^ -||a.oney.es^ -||a.parfumsclub.de^ -||a.perfumesclub.co.uk^ -||a.perfumesclub.com^ -||a.perfumesclub.fr^ -||a.perfumesclub.it^ -||a.perfumesclub.nl^ -||a.perfumesclub.pl^ -||a.perfumesclub.pt^ -||a.weareknitters.co.uk^ -||a.weareknitters.com^ -||a.weareknitters.de^ -||a.weareknitters.dk^ -||a.weareknitters.es^ -||a.weareknitters.fr^ -||a.weareknitters.nl^ -||a.weareknitters.no^ -||a.weareknitters.pl^ -||a.weareknitters.se^ -||a7e.monnierfreres.de^ -||a8ht.hipp.fr^ -||ab.oney.es^ -||ab.perfumesclub.com^ -||ali8.alinea.fr^ -||alp1.drimki.fr^ -||am.belambra.co.uk^ -||am.belambra.com^ -||anz7.allianz-voyage.fr^ -||aod4.societegenerale.fr^ -||ar.allrun.fr^ -||ar.i-run.fr^ -||azg1.emalu-store.com^ -||b1n.carabins.umontreal.ca^ -||bch8.destinia.co^ -||bdj5.terrassesmontecarlosbm.com^ -||bft5.destinia.fr^ -||bja2.destinia.cz^ -||bk.brookeo.fr^ -||blog.tagcentral.fr^ -||bn.voyage-prive.com^ -||bpe2.destinia.co.il^ -||bum7.bymycar.fr^ -||bwj4.hrhibiza.com^ -||c0i.ckoi.com^ -||c0p.cepsum.umontreal.ca^ -||c4dv.copinesdevoyage.com^ -||ca.clubavantages.net^ -||cbl6.destinia.gt^ -||cc.conforama.es^ -||cc.conforama.pt^ -||cf.campagnes-france.com^ -||ch.credithypo.com^ -||ch0p.darty.com^ -||cls7.theushuaiaexperience.com^ -||cpgo.avatacar.com^ -||cse3.chausport.com^ -||csm.magnetintell.com^ -||csv4.ebs-paris.fr^ -||ct5m.citadium.com^ -||ctp1.bforbank.com^ -||cvi6.destinia.qa^ -||cyf9.destinia.cl^ -||d2u.dauphinquebec.com^ -||dbj.quebecregion.com^ -||deut1.fdj.fr^ -||deut2.fdj.fr^ -||deut3.fdj.fr^ -||dko.vente-unique.nl^ -||dqs3.darjeeling.fr^ -||dsfe19.madeindesign.com^ -||dv59b.montecarlomeeting.com^ -||dw0c.sfr.fr^ -||dw7u.hotelsbarriere.com^ -||dxe2.heip.fr^ -||ea.armandthiery.fr^ -||ea.assuronline.com^ -||ea.auchantelecom.fr^ -||ea.audika.com^ -||ea.auvergne-direct.fr^ -||ea.bcassurance.fr^ -||ea.camping-and-co.com^ -||ea.carrefour.com^ -||ea.carrefour.fr^ -||ea.castorama.fr^ -||ea.catimini-boutique.com^ -||ea.catimini.com^ -||ea.ciblo.net^ -||ea.coffrefortplus.com^ -||ea.dcshoes-europe.com^ -||ea.devred.com^ -||ea.diamant-unique.com^ -||ea.easyvoyage.com^ -||ea.ecotour.com^ -||ea.elstarprevention.com^ -||ea.evaway.com^ -||ea.fleurancenature.com^ -||ea.fleurancenature.fr^ -||ea.francoisesaget.com^ -||ea.franziskasager.de^ -||ea.greenweez.com^ -||ea.greenweez.de^ -||ea.greenweez.es^ -||ea.greenweez.eu^ -||ea.habitat.de^ -||ea.habitat.fr^ -||ea.handsenderplus.com^ -||ea.histoiredor.com^ -||ea.hofmann.es^ -||ea.hofmann.pt^ -||ea.igraal.com^ -||ea.kauf-unique.at^ -||ea.kauf-unique.de^ -||ea.kidiliz.com^ -||ea.labelhabitation.com^ -||ea.lafrancedunordausud.fr^ -||ea.laredoute.pt^ -||ea.leskidunordausud.fr^ -||ea.lespagnedunordausud.fr^ -||ea.megustaescribir.com^ -||ea.megustaleer.com.pe^ -||ea.millet-mountain.ch^ -||ea.millet-mountain.com^ -||ea.millet-mountain.de^ -||ea.millet.fr^ -||ea.mistergatesdirect.com^ -||ea.mnt.fr^ -||ea.mondial-assistance.fr^ -||ea.mydailyhotel.com^ -||ea.mywarner.warnerbros.fr^ -||ea.natiloo.com^ -||ea.netvox-assurances.com^ -||ea.nextseguros.es^ -||ea.nomade-aventure.com^ -||ea.odalys-vacances.com^ -||ea.odalys-vacation-rental.com^ -||ea.onestep-boutique.com^ -||ea.online.carrefour.fr^ -||ea.peugeot-assurance.fr^ -||ea.placedestendances.com^ -||ea.poeleaboismaison.com^ -||ea.promovacances.com^ -||ea.quiksilver.eu^ -||ea.radiateurplus.com^ -||ea.rentacar.fr^ -||ea.reunica.com^ -||ea.roxy.eu^ -||ea.sadyr.es^ -||ea.smallable.com^ -||ea.sport2000.fr^ -||ea.telecommandeonline.com^ -||ea.tool-fitness.com^ -||ea.topsante.com^ -||ea.venta-del-diablo.com^ -||ea.venta-unica.com^ -||ea.vente-unique.be^ -||ea.vente-unique.ch^ -||ea.vente-unique.com^ -||ea.vente-unique.lu^ -||ea.vivus.es^ -||ea.voyage-prive.co.uk^ -||ea.voyage-prive.es^ -||ea.voyage-prive.it^ -||ea.warnerbros.fr^ -||eat9.thebeat925.ca^ -||ebc1.capifrance.fr^ -||ef.futuroscope.com^ -||ef.futuroscope.mobi^ -||eit3.destinia.nl^ -||ek8.voyage-prive.com^ -||elr.sfr.fr^ -||erb.tremblant.ca^ -||ert5.rmcsport.tv^ -||et.sncf.com^ -||eule1.pmu.fr^ -||eule3.pmu.fr^ -||eule4.pmu.fr^ -||eule5.pmu.fr^ -||euler.pmu.fr^ -||eulerian.alinea.fr^ -||eulerian.astro-way.com^ -||eulerian.belambra.be^ -||eulerian.belambra.fr^ -||eulerian.canal-plus.com^ -||eulerian.eidershop.com^ -||eulerian.eveiletjeux.com^ -||eulerian.look-voyages.fr^ -||eulerian.maison-facile.com^ -||eulerian.malakoffmederic.com^ -||eulerian.mathon.fr^ -||eulerian.monoprix.fr^ -||eulerian.netbooster.com^ -||eulerian.officiel-des-vacances.com^ -||eulerian.oxybul.com^ -||eulerian.sarenza.com^ -||eulerian.siandso.com^ -||eulerian.structube.com^ -||eulerian.telechargement.fr^ -||eulerian.tgv-europe.be^ -||eulerian.tgv-europe.com^ -||eulerian.tgv-europe.es^ -||eulerian.tgv-europe.it^ -||eulerian.tgv-europe.lu^ -||eulerian.tgv-europe.nl^ -||eulerian.thalasseo.com^ -||eulerian.voyage-prive.com^ -||eultech.fnac.com^ -||exd4.destinia.com.au^ -||f0nn.oney.fr^ -||f2.voyage-prive.com^ -||fal2.carrefour-banque.fr^ -||fbu8.hoteldeparismontecarlo.com^ -||fbu8.hotelhermitagemontecarlo.com^ -||fbu8.monte-carlo-beach.com^ -||fbu8.montecarlobay.com^ -||fbu8.montecarloluxuryhotels.com^ -||fbu8.montecarlosbm.com^ -||fbu8.montecarloseasonalsale.com^ -||fbu8.ticket-online.montecarlolive.com^ -||fkwc.sfr.fr^ -||fl5dpe.oui.sncf^ -||fma7.aegon.es^ -||fpb8.esce.fr^ -||fsz1.francoisesaget.com^ -||fsz1.franziskasager.de^ -||fzb5.laboratoire-giphar.fr^ -||fze8.carrefour-banque.fr^ -||fzu4.bysidecar.com^ -||g1be.swisslife-direct.fr^ -||gdm1.toner.fr^ -||gf7t.cheques-cadeaux-culturels.fr^ -||gfn1.ugap.fr^ -||gfv4.destinia.co.za^ -||gi7a.structube.com^ -||gif1.gifi.fr^ -||gli9.inseec-bs.com^ -||gnh2.destinia.lv^ -||gsg9.carrefour-banque.fr^ -||guq9.vente-unique.it^ -||gwtc.sfr.fr^ -||h00c.sfr.fr^ -||hbo5.concours-pass.com^ -||hby7.destinia.it^ -||hde1.repentignychevrolet.com^ -||hgf4.zanzicar.fr^ -||hkj8.evobanco.com^ -||idg1.idgarages.com^ -||igc0.destinia.at^ -||inv3te.oui.sncf^ -||iro.iperceptions.com^ -||irs.iperceptions.com^ -||j2i0.mathon.fr^ -||jcr3.onlyyouhotels.com^ -||jelr1.dili.fr^ -||jfo0.societegenerale.fr^ -||jfp6.destinia.de^ -||jg0c.sfr.fr^ -||jhm3.ifgexecutive.com^ -||jln3.cl-brands.com^ -||jln3.clstudios.com^ -||jn23.madeindesign.ch^ -||jn23.madeindesign.it^ -||jo2f.cheque-cadhoc.fr^ -||ju23.madeindesign.co.uk^ -||jun23.madeindesign.de^ -||jxy6.evobanco.es^ -||kep6.destinia.ie^ -||kvt5.blesscollectionhotels.com^ -||kwsjy9.oui.sncf^ -||lbc.lesbonscommerces.fr^ -||leo1.leon-de-bruxelles.fr^ -||let1.devialet.com^ -||lio8.destinia.com.pa^ -||ljb0.assuronline.com^ -||lp.to-lipton.com^ -||lrp7.carrefour-banque.fr^ -||lsv5.belambra.fr^ -||ltm6.destinia.se^ -||lwh1.carrefour-banque.fr^ -||ly8c.caci-online.fr^ -||lzuc.sfr.fr^ -||m3ds.subarumetropolitain.com^ -||mfd.myfirstdressing.com^ -||mgt7.madeindesign.it^ -||mi.miliboo.be^ -||mi.miliboo.ch^ -||mi.miliboo.co.uk^ -||mi.miliboo.com^ -||mi.miliboo.de^ -||mi.miliboo.es^ -||mi.miliboo.it^ -||mi.miliboo.lu^ -||mla3.societegenerale.fr^ -||mm.melia.com^ -||mmz3.beinsports.com^ -||mre6.destinia.ma^ -||msz3.destinia.cn^ -||mud4.destinia.com.eg^ -||mva1.maeva.com^ -||mwf7.montecarlowellness.com^ -||ncx2.voyage-prive.it^ -||net1.netski.com^ -||netc.sfr.fr^ -||ni8.lafuma-boutique.com^ -||ni8.lafuma.com^ -||nlf6.vente-unique.pl^ -||nmo1.orpi.com^ -||nmu3.destinia.be^ -||noa0.compteczam.fr^ -||nrg.red-by-sfr.fr^ -||nym5c.bonlook.com^ -||nym5c.laura.ca^ -||nyt1.biosens-leanature.fr^ -||o68c.sfr.fr^ -||oae6.carrefour-banque.fr^ -||oal2.destinia.co.uk^ -||oek7.april-moto.com^ -||ogb2.biopur-leanature.fr^ -||ogb2.biovie.com^ -||ogb2.eauthermalejonzac.com^ -||ogb2.jardinbio.fr^ -||ogb2.leanatureboutique.com^ -||ogb2.natessance.com^ -||ogb2.sobio-etic.com^ -||oit4.destinia.com.br^ -||oj2q8.montecarlosbm.book-secure.com^ -||ojm4.palladiumhotelgroup.com^ -||one2.onestep.fr^ -||oo.ooshop.com^ -||oph7o.montecarlosbm-corporate.com^ -||opim.pixmania.com^ -||opo4.assuronline.com^ -||oqr4.destinia.in^ -||ouk7.grantalexander.com^ -||p.pmu.fr^ -||pbox.no.photobox.com^ -||pbox.photobox.at^ -||pbox.photobox.be^ -||pbox.photobox.co.nz^ -||pbox.photobox.co.uk^ -||pbox.photobox.com.au^ -||pbox.photobox.de^ -||pbox.photobox.dk^ -||pbox.photobox.fr^ -||pbox.photobox.ie^ -||pbox.photobox.it^ -||pbox.photobox.nl^ -||pbox.photobox.se^ -||pcnphysio-com.ca-eulerian.net^ -||pgt1.voyage-prive.es^ -||piq4.inseec.education^ -||pjh7.us.chantelle.com^ -||pk1u.melanielyne.com^ -||pkc5.hardrockhoteltenerife.com^ -||pm.pmu.fr^ -||po.ponant.com^ -||pol3.cheque-domicile.fr^ -||pp.promocionesfarma.com^ -||ppp7.destinia.kr^ -||pqn7.cheque-dejeuner.fr^ -||prx6.destinia.ch^ -||ps.pmu.fr^ -||pu.pretunique.fr^ -||pv.partenaires-verisure.fr^ -||qal0.destinia.gr^ -||qbl4.ecetech.fr^ -||qjg4.destinia.asia^ -||qpc4.visilab.ch^ -||qpl9.destinia.dk^ -||qtj0.destinia.pl^ -||quk9.destinia.com.ar^ -||qyn6.ofertastelecable.es^ -||qzl8.destinia.fi^ -||qzu5.carrefour-banque.fr^ -||r1ztni.oui.sncf^ -||r4nds.absorba.com^ -||rce.iperceptions.com^ -||rdc.rachatdecredit.net^ -||rh1a.granions.fr^ -||rjg2.destinia.ly^ -||rmp4.destinia.uy^ -||rqz4.supdigital.fr^ -||rup5.destinia.ru^ -||rvz9.destinia.co.ro^ -||ry0.rythmefm.com^ -||s4e8.cascades.com^ -||sa.lesselectionsskoda.fr^ -||sa.skoda.fr^ -||sa.skodasuperb.fr^ -||sby1.madeindesign.de^ -||sd.securitasdirect.fr^ -||sfp7.eco-conscient.com^ -||sis8.premieremoisson.com^ -||six9e.canal.fr^ -||sk0.monnierfreres.eu^ -||ski1.skiset.com^ -||sno1.snowrental.com^ -||snr4.canalplus.com^ -||srm4.destinia.co.no^ -||ssrlot.lotoquebec.com^ -||ssy7.destinia.com.ua^ -||su1.les-suites.ca^ -||t.locasun-vp.fr^ -||t.locasun.co.uk^ -||t.locasun.de^ -||t.locasun.es^ -||t.locasun.fr^ -||t.locasun.it^ -||t.locasun.nl^ -||t.pmu.fr^ -||t.voyages-sncf.com^ -||t0y.toyota.ca^ -||t9h2.ricardocuisine.com^ -||t9k3a.jeanpaulfortin.com^ -||tdf1.easyviaggio.com^ -||tdf1.easyviajar.com^ -||tdf1.easyvols.fr^ -||tdf1.easyvoyage.co.uk^ -||tdf1.easyvoyage.com^ -||tdf1.easyvoyage.de^ -||tdf1.laredoute.fr^ -||tdf1.vente-unique.pt^ -||tdp1.vivabox.es^ -||tds1.vivabox.be^ -||tmy8.madeindesign.ch^ -||tnz3.carrefour-banque.fr^ -||tr.pmu.fr^ -||tsj0.madeindesign.com^ -||txv0.destinia.hu^ -||udr9.livera.nl^ -||ueb4.destinia.tw^ -||ued8.destinia.sg^ -||uhn9.up-france.fr^ -||ujq1.destinia.is^ -||upload.euleriancdn.net^ -||upz1.destinia.lt^ -||uue2.destinia.ir^ -||uwy4.aegon.es^ -||uzd1.madeindesign.com^ -||v.oney.es^ -||v.oui.sncf^ -||vbe.voyage-prive.be^ -||vch.voyage-prive.ch^ -||vde1.voyage-prive.de^ -||vfo.voyage-prive.co.uk^ -||vfo4.carrefour-banque.fr^ -||vgo.vegaoo.com^ -||vgo.vegaoo.pt^ -||vgo.vegaoopro.com^ -||vi.adviso.ca^ -||vnl1.voyage-prive.nl^ -||vpf4.euskaltelofertas.com^ -||vpl.voyage-prive.pl^ -||vqp3.madeindesign.co.uk^ -||vry9.destinia.com^ -||vs.verisure.fr^ -||why3.inseec.education^ -||wlp3.aegon.es^ -||wnd2.destinia.cat^ -||wph2.destinia.us^ -||www.dataholics.tech^ -||www.fasttrack.fr^ -||www.fasttracker.fr^ -||xay5o.toscane-boutique.fr^ -||xjq5.belambra.be^ -||xuc.monteleone.fr^ -||xy33.smallable.com^ -||xya4.groupefsc.com^ -||yf5.voyage-prive.at^ -||yh6u.dealeusedevoyages.com^ -||yoc.younited-credit.com^ -||ysl3.destinia.ec^ -||yst4.muchoviaje.com^ -||yyi7.consobaby.de^ -||zdx5.destinia.pe^ -||zkc5.fleurancenature.fr^ -||zlm2.ecetech.fr^ -||znq9.destinia.mx^ -||zrw1.destinia.jp^ -||zs.voyage-prive.com^ -||zsi7.destinia.do^ -||zum7cc.oui.sncf^ -||zyq2.destinia.sk^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_keyade.txt *** -||click-ext.anxa.com^ -||clk.ubi.com^ -||k.brandalley.be^ -||k.brandalley.co.nl^ -||k.brandalley.de^ -||k.brandalley.es^ -||k.brandalley.fr^ -||k.flynas.com^ -||k.hofmann.es^ -||k.laredoute.com^ -||k.laredoute.es^ -||k.laredoute.pt^ -||k.laredoute.ru^ -||k.laredoute.se^ -||k.truffaut.com^ -||k.voyageursdumonde.be^ -||k.voyageursdumonde.ca^ -||k.voyageursdumonde.ch^ -||k.voyageursdumonde.fr^ -||keyade.alltricks.fr^ -||keyade.ooreka.fr^ -||keyade.uniqlo.com^ -||market-keyade.macif.fr^ -||tck.fr.transavia.com^ -||tck.photobox.com^ -||tck.wonderbox.fr^ -||www.keyade.fr^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_lead-forensics.txt *** -||analytics-hub.3plearning.com^ -||analytics-prod2.glance-internal.inmobi.com^ -||analytics.glance.inmobi.com^ -||capture.norm0care.com^ -||cloud.webtrack.online^ -||data.diagnostics.office.com^ -||f5.track-mv-01.com^ -||mail.semilab.hu^ -||oca.microsoft.com^ -||partners.dudley.gov.uk^ -||secure.1-cl0ud.com^ -||secure.24-astute.com^ -||secure.24-information-acute.com^ -||secure.24-visionaryenterprise.com^ -||secure.365-bright-astute.com^ -||secure.365-visionary-insightful.com^ -||secure.365insightcreative.com^ -||secure.365smartenterprising.com^ -||secure.365syndicate-smart.com^ -||secure.52enterprisingdetails.com^ -||secure.7-companycompany.com^ -||secure.acor1sign.com^ -||secure.agile-company-247.com^ -||secure.agile-company-365.com^ -||secure.agile-enterprise-365.com^ -||secure.agile365enterprise.com^ -||secure.agilebusinessvision.com^ -||secure.agilecompanyintelligence.com^ -||secure.agiledata7.com^ -||secure.aiea6gaza.com^ -||secure.alda1mure.com^ -||secure.alea6badb.com^ -||secure.alga9frog.com^ -||secure.amos5lynn.com^ -||secure.aran9midi.com^ -||secure.arid5glop.com^ -||secure.badb5refl.com^ -||secure.bait4role.com^ -||secure.bali6nora.com^ -||secure.bank8line.com^ -||secure.barn5bake.com^ -||secure.bass2poll.com^ -||secure.benn8bord.com^ -||secure.bike6debt.com^ -||secure.blue2fund.com^ -||secure.boat3deer.com^ -||secure.bolt8snap.com^ -||secure.bred4tula.com^ -||secure.brie5jiff.com^ -||secure.burn5tilt.com^ -||secure.businessintuition247.com^ -||secure.bux1le001.com^ -||secure.cage6west.com^ -||secure.care5alea.com^ -||secure.cart8draw.com^ -||secure.cast9half.com^ -||secure.cavy9soho.com^ -||secure.ches5sort.com^ -||secure.chic9usia.com^ -||secure.chip2gift.com^ -||secure.chop8live.com^ -||secure.cloud-ingenuity.com^ -||secure.clue6load.com^ -||secure.coat0tire.com^ -||secure.coax7nice.com^ -||secure.companyperceptive-365.com^ -||secure.copy9loom.com^ -||secure.coup7cold.com^ -||secure.cuba7tilt.com^ -||secure.curl7bike.com^ -||secure.dana8herb.com^ -||secure.data-creativecompany.com^ -||secure.data-ingenuity.com^ -||secure.data-insight365.com^ -||secure.dawn3host.com^ -||secure.deng3rada.com^ -||secure.dens1raec.com^ -||secure.details24group.com^ -||secure.detailsinventivegroup.com^ -||secure.dial4gwyn.com^ -||secure.diet3dart.com^ -||secure.doll8tune.com^ -||secure.doll9jiva.com^ -||secure.dump4barn.com^ -||secure.east2pony.com^ -||secure.easy0bark.com^ -||secure.emeu0circ.com^ -||secure.enterprise-consortiumoperation.com^ -||secure.enterprise-inspired52.com^ -||secure.enterprise-operation-inspired.com^ -||secure.enterprise7syndicate.com^ -||secure.enterpriseforesight247.com^ -||secure.enterpriseintelligence-24.com^ -||secure.enterprisingconsortium.com^ -||secure.enterprisingoperation-7.com^ -||secure.etym6cero.com^ -||secure.fear7calk.com^ -||secure.feed5baby.com^ -||secure.feed5mown.com^ -||secure.file3size.com^ -||secure.flow8free.com^ -||secure.food9wave.com^ -||secure.frog9alea.com^ -||secure.game9time.com^ -||secure.gard4mass.com^ -||secure.garm9yuma.com^ -||secure.gaza2lote.com^ -||secure.gift2pair.com^ -||secure.give2hill.com^ -||secure.glue1lazy.com^ -||secure.golp4elik.com^ -||secure.grow1maid.com^ -||secure.haag0some.com^ -||secure.haig7anax.com^ -||secure.half1hell.com^ -||secure.hall3hook.com^ -||secure.harm6stop.com^ -||secure.hazy4cant.com^ -||secure.head3high.com^ -||secure.hear8crew.com^ -||secure.heat6have.com^ -||secure.herb2warn.com^ -||secure.herb7calk.com^ -||secure.hero6bell.com^ -||secure.hims1nice.com^ -||secure.hiss3lark.com^ -||secure.hook6vein.com^ -||secure.imaginative-24.com^ -||secure.imaginative-trade7.com^ -||secure.imaginativeenterprising-intelligent.com^ -||secure.informationcreativeinnovative.com^ -||secure.innovation-perceptive52.com^ -||secure.insight-52.com^ -||secure.insightful-cloud-365.com^ -||secure.insightful-cloud-7.com^ -||secure.insightful-company-52.com^ -||secure.insightful-enterprise-247.com^ -||secure.insightful-enterprise-intelligence.com^ -||secure.insightfulbusinesswisdom.com^ -||secure.insightfulcloudintuition.com^ -||secure.insightfulcompanyinsight.com^ -||secure.instinct-52.com^ -||secure.intelligence-enterprise.com^ -||secure.intelligence52.com^ -||secure.intelligent-business-wisdom.com^ -||secure.intelligent-company-365.com^ -||secure.intelligent-company-foresight.com^ -||secure.intelligent-consortium.com^ -||secure.intelligent-data-247.com^ -||secure.intelligentcloudforesight.com^ -||secure.intelligentcompanywisdom.com^ -||secure.intelligentdataintuition.com^ -||secure.intelligentdatawisdom.com^ -||secure.intuition-agile-7.com^ -||secure.intuitionoperation.com^ -||secure.intuitive-intuition.com^ -||secure.inventive52intuitive.com^ -||secure.inventiveinspired7.com^ -||secure.inventiveperception365.com^ -||secure.iron0walk.com^ -||secure.jaup0lake.com^ -||secure.jebb8hurt.com^ -||secure.jody0sora.com^ -||secure.josh7cuba.com^ -||secure.keep0bury.com^ -||secure.keet1liod.com^ -||secure.kick1pore.com^ -||secure.kilo6alga.com^ -||secure.kota3chat.com^ -||secure.kpr2exp21.com^ -||secure.lack4skip.com^ -||secure.lane5down.com^ -||secure.late6year.com^ -||secure.late8chew.com^ -||secure.lave6loki.com^ -||secure.lazy8krti.com^ -||secure.lead5beat.com^ -||secure.left5lock.com^ -||secure.line6agar.com^ -||secure.link5view.com^ -||secure.liod1ours.com^ -||secure.list1holp.com^ -||secure.loki8lave.com^ -||secure.loom3otto.com^ -||secure.lope4refl.com^ -||secure.lote1otto.com^ -||secure.mack7oyes.com^ -||secure.main5poem.com^ -||secure.make6pain.com^ -||secure.mali4blat.com^ -||secure.malm1coax.com^ -||secure.mari4norm.com^ -||secure.marx7loki.com^ -||secure.mass1soma.com^ -||secure.mean8sigh.com^ -||secure.meet3monk.com^ -||secure.mews2ruck.com^ -||secure.mile0tire.com^ -||secure.mill8grip.com^ -||secure.misc1bulk.com^ -||secure.moat4shot.com^ -||secure.mon-com-01.com^ -||secure.mown5gaze.com^ -||secure.navy9gear.com^ -||secure.neck6bake.com^ -||secure.nice3aiea.com^ -||secure.nipe4head.com^ -||secure.node7seat.com^ -||secure.nong3bram.com^ -||secure.nora7nice.com^ -||secure.norm0care.com^ -||secure.nyctrl32.com^ -||secure.oboe3broo.com^ -||secure.office-cloud-52.com^ -||secure.office-information-24.com^ -||secure.office-insightdetails.com^ -||secure.oita4bali.com^ -||secure.otto5loki.com^ -||secure.ours3care.com^ -||secure.page1monk.com^ -||secure.page9awry.com^ -||secure.pair1tune.com^ -||secure.pass8heal.com^ -||secure.path5wall.com^ -||secure.pdxor02.com^ -||secure.peak2poem.com^ -||secure.peep1alea.com^ -||secure.perceptionastute7.com^ -||secure.perceptive-innovation-ingenuity.com^ -||secure.perk0mean.com^ -||secure.plug1luge.com^ -||secure.plug4norm.com^ -||secure.poor5zero.com^ -||secure.pump8walk.com^ -||secure.raab3frog.com^ -||secure.rals4alum.com^ -||secure.rate2self.com^ -||secure.rate8deny.com^ -||secure.rear9axis.com^ -||secure.redd7liod.com^ -||secure.refl3alea.com^ -||secure.rigi9bury.com^ -||secure.rime8lope.com^ -||secure.ripe8book.com^ -||secure.risk8belt.com^ -||secure.roar9beer.com^ -||secure.rock5rice.com^ -||secure.rote8mino.com^ -||secure.ruth8badb.com^ -||secure.ryke4peep.com^ -||secure.said3page.com^ -||secure.sale0home.com^ -||secure.saon6harz.com^ -||secure.scan6show.com^ -||secure.seat6worn.com^ -||secure.sharpinspiration-instinct.com^ -||secure.shoo5woop.com^ -||secure.shrfbdg004.com^ -||secure.silk0palm.com^ -||secure.skye6oner.com^ -||secure.slim2disc.com^ -||secure.smart-business-365.com^ -||secure.smart-business-foresight.com^ -||secure.smart-business-ingenuity.com^ -||secure.smart-business-intuition.com^ -||secure.smart-cloud-intelligence.com^ -||secure.smart-company-365.com^ -||secure.smart-company-vision.com^ -||secure.smart-enterprise-365.com^ -||secure.smart-enterprise-52.com^ -||secure.smart-enterprise-7.com^ -||secure.smart-enterprise-acumen.com^ -||secure.smart24astute.com^ -||secure.smartenterprisewisdom.com^ -||secure.snta0034.com^ -||secure.soil5hear.com^ -||secure.soma9vols.com^ -||secure.sour1bare.com^ -||secure.sour7will.com^ -||secure.spit0stge.com^ -||secure.sugh8yami.com^ -||secure.svr007phz.com^ -||secure.swat8toot.com^ -||secure.tank3pull.com^ -||secure.team8save.com^ -||secure.tent0mown.com^ -||secure.text6film.com^ -||secure.tire1soak.com^ -||secure.tm1-001.com^ -||secure.toll6kerb.com^ -||secure.torn6back.com^ -||secure.toru0vane.com^ -||secure.tray0bury.com^ -||secure.tube6sour.com^ -||secure.tula9mari.com^ -||secure.vane3alga.com^ -||secure.venture-365-inspired.com^ -||secure.venture-enterprising.com^ -||secure.venture365office.com^ -||secure.vice4beek.com^ -||secure.vick6duty.com^ -||secure.visionary-7-data.com^ -||secure.visionary-business-52.com^ -||secure.visionary-business-ingenuity.com^ -||secure.visionary-company-ingenuity.com^ -||secure.visionary-data-intuition.com^ -||secure.visionary-enterprise-ingenuity.com^ -||secure.visionary-enterprise-wisdom.com^ -||secure.visionary-intuitiveimaginative.com^ -||secure.visionary365enterprise.com^ -||secure.visionarybusiness7.com^ -||secure.visionarybusinessacumen.com^ -||secure.visionarycloudvision.com^ -||secure.visionarycompany52.com^ -||secure.vols7feed.com^ -||secure.wait8hurl.com^ -||secure.wake4tidy.com^ -||secure.want7feed.com^ -||secure.wauk1care.com^ -||secure.weed6tape.com^ -||secure.wild0army.com^ -||secure.wild8prey.com^ -||secure.wine9bond.com^ -||secure.wivo2gaza.com^ -||secure.yama1hove.com^ -||secure.yami8alea.com^ -||secure.yeld9auto.com^ -||secure.yirr5frog.com^ -||segment-api.inrix.com^ -||telemetry-eastus.trafficmanager.inmobi.com^ -||telemetry.sdk.inmobi.com^ -||utm.semilab.hu^ -||utm.shireburn.com^ -||watson.microsoft.com^ -||www.1-cl0ud.com^ -||www.1-creative-1.com^ -||www.100-flannelman.com^ -||www.123-tracker.com^ -||www.143nchrtl3.com^ -||www.1h2h54jkw.com^ -||www.200-rockergod.com^ -||www.200summit.com^ -||www.22-trk-srv.com^ -||www.24-visionaryenterprise.com^ -||www.33-trk-srv.com^ -||www.33infra-strat.com^ -||www.44-trk-srv.com^ -||www.44tele-infra.com^ -||www.52data-venture.com^ -||www.55-trk-srv.com^ -||www.66-trk-srv.com^ -||www.66infra-strat.com^ -||www.7-companycompany.com^ -||www.88infra-strat.com^ -||www.acor1sign.com^ -||www.active-trk7.com^ -||www.adgjl13.com^ -||www.agile-company-247.com^ -||www.agile-company-365.com^ -||www.agile-enterprise-365.com^ -||www.agile365enterprise.com^ -||www.agiledata7.com^ -||www.aiea6gaza.com^ -||www.alda1mure.com^ -||www.alea6badb.com^ -||www.alga9frog.com^ -||www.alnw3nsdi.com^ -||www.alskd34.com^ -||www.altabold1.com^ -||www.amos5lynn.com^ -||www.angorch-cdr7.com^ -||www.ape78cn2.com^ -||www.aqedsw4.com^ -||www.aran9midi.com^ -||www.arid5glop.com^ -||www.asdfg23.com^ -||www.atl-6-ga.com^ -||www.azera-s014.com^ -||www.badb5refl.com^ -||www.bae5tracker.com^ -||www.bait4role.com^ -||www.bali6nora.com^ -||www.bank8line.com^ -||www.bass2poll.com^ -||www.baw5tracker.com^ -||www.bdg001a.com^ -||www.benn8bord.com^ -||www.berg-6-82.com^ -||www.bis-dic15.com^ -||www.blocwhite7.com^ -||www.blue2fund.com^ -||www.blzsnd02.com^ -||www.boat3deer.com^ -||www.bolt8snap.com^ -||www.bosctrl32.com^ -||www.bred4tula.com^ -||www.brie5jiff.com^ -||www.burn5tilt.com^ -||www.business-path-55.com^ -||www.bux1le001.com^ -||www.cable-cen-01.com^ -||www.cage6west.com^ -||www.care5alea.com^ -||www.cart8draw.com^ -||www.cast9half.com^ -||www.cavy9soho.com^ -||www.cben9a9s1.com^ -||www.cdbgmj12.com^ -||www.cdert34.com^ -||www.central-core-7.com^ -||www.centralcore7.com^ -||www.ches5sort.com^ -||www.chic9usia.com^ -||www.chip2gift.com^ -||www.chop8live.com^ -||www.click-to-trace.com^ -||www.cloud-9751.com^ -||www.cloud-exploration.com^ -||www.cloud-ingenuity.com^ -||www.cloud-trail.com^ -||www.cloudpath82.com^ -||www.cloudtracer101.com^ -||www.clue6load.com^ -||www.cnej4912jks.com^ -||www.cnt-tm-1.com^ -||www.cntr-di5.com^ -||www.cntr-di7.com^ -||www.co85264.com^ -||www.coat0tire.com^ -||www.coax7nice.com^ -||www.connct-9.com^ -||www.copy9loom.com^ -||www.core-cen-54.com^ -||www.coup7cold.com^ -||www.crb-frm-71.com^ -||www.create-tracking.com^ -||www.cten10010.com^ -||www.cuba7tilt.com^ -||www.cube-78.com^ -||www.curl7bike.com^ -||www.dakic-ia-300.com^ -||www.dana8herb.com^ -||www.data-ingenuity.com^ -||www.data-insight365.com^ -||www.dawn3host.com^ -||www.dbrtkwaa81.com^ -||www.deng3rada.com^ -||www.dens1raec.com^ -||www.detailsinspiration-data.com^ -||www.dhenr54m.com^ -||www.dial4gwyn.com^ -||www.diet3dart.com^ -||www.direct-aws-a1.com^ -||www.direct-azr-78.com^ -||www.discover-path.com^ -||www.discovertrail.net^ -||www.djkeun1bal.com^ -||www.dkjn1bal2.com^ -||www.doll8tune.com^ -||www.doll9jiva.com^ -||www.domainanalytics.net^ -||www.dtc-330d.com^ -||www.dtc-v6t.com^ -||www.dthvdr9.com^ -||www.dump4barn.com^ -||www.east2pony.com^ -||www.easy0bark.com^ -||www.ed-clr-01.com^ -||www.efvrgb12.com^ -||www.ela-3-tnk.com^ -||www.elite-s001.com^ -||www.emeu0circ.com^ -||www.enterprise-consortiumoperation.com^ -||www.enterpriseforesight247.com^ -||www.enterprisingoperation-7.com^ -||www.etym6cero.com^ -||www.eue21east.com^ -||www.eue27west.com^ -||www.eventcapture03.com^ -||www.eventcapture06.com^ -||www.ever-track-51.com^ -||www.explore-123.com^ -||www.fear7calk.com^ -||www.feed5baby.com^ -||www.feed5mown.com^ -||www.file3size.com^ -||www.final-aws-01.com^ -||www.final-azr-01.com^ -||www.finger-info.net^ -||www.flow8free.com^ -||www.food9wave.com^ -||www.forensics1000.com^ -||www.frog9alea.com^ -||www.game9time.com^ -||www.gard4mass.com^ -||www.garm9yuma.com^ -||www.gaza2lote.com^ -||www.gbl007.com^ -||www.gblwebcen.com^ -||www.gift2pair.com^ -||www.glb12pkgr.com^ -||www.glb21pkgr.com^ -||www.gldsta-02-or.com^ -||www.glue1lazy.com^ -||www.golp4elik.com^ -||www.grow1maid.com^ -||www.gtcslt-di2.com^ -||www.gw100-10.com^ -||www.haag0some.com^ -||www.haig7anax.com^ -||www.half1hell.com^ -||www.hall3hook.com^ -||www.harm6stop.com^ -||www.hazy4cant.com^ -||www.head3high.com^ -||www.hear8crew.com^ -||www.heat6have.com^ -||www.herb2warn.com^ -||www.herb7calk.com^ -||www.hero6bell.com^ -||www.hims1nice.com^ -||www.hiss3lark.com^ -||www.hook6vein.com^ -||www.hrb1tng0.com^ -||www.hunt-leads.com^ -||www.hunter-details.com^ -||www.hvgcfx1.com^ -||www.imaginative-trade7.com^ -||www.inc9lineedge.com^ -||www.incline9edge.com^ -||www.indpcr1.com^ -||www.insightful-company-52.com^ -||www.insightfulbusinesswisdom.com^ -||www.insightfulcompanyinsight.com^ -||www.intelligence-enterprise.com^ -||www.intelligent-company-foresight.com^ -||www.intelligent-data-247.com^ -||www.intelligentcompanywisdom.com^ -||www.intelligentdatawisdom.com^ -||www.intuition-agile-7.com^ -||www.ip-a-box.com^ -||www.ip-route.net^ -||www.iproute66.com^ -||www.iron0walk.com^ -||www.jaup0lake.com^ -||www.jebb8hurt.com^ -||www.jenxsw21lb.com^ -||www.jody0sora.com^ -||www.josh7cuba.com^ -||www.jsnzoe301m.com^ -||www.keet1liod.com^ -||www.kick1pore.com^ -||www.kilo6alga.com^ -||www.kota3chat.com^ -||www.kpr2exp21.com^ -||www.kprbexp21.com^ -||www.ksk-mjto-001.com^ -||www.ksyrium0014.com^ -||www.lack4skip.com^ -||www.laksjd4.com^ -||www.lane5down.com^ -||www.lansrv020.com^ -||www.lansrv030.com^ -||www.lansrv040.com^ -||www.lansrv050.com^ -||www.lansrv060.com^ -||www.lansrv070.com^ -||www.lansrv080.com^ -||www.lansrv090.com^ -||www.late6year.com^ -||www.late8chew.com^ -||www.lave6loki.com^ -||www.lazy8krti.com^ -||www.ldfr-cloud.net^ -||www.lead-123.com^ -||www.lead-analytics-1000.com^ -||www.lead-watcher.com^ -||www.leads.goldenshovel.com^ -||www.ledradn.com^ -||www.left5lock.com^ -||www.letterbox-path.com^ -||www.letterboxtrail.com^ -||www.lforen-cloud-trace.com^ -||www.line6agar.com^ -||www.link5view.com^ -||www.liod1ours.com^ -||www.list1holp.com^ -||www.lmknjb1.com^ -||www.loki8lave.com^ -||www.loom3otto.com^ -||www.lope4refl.com^ -||www.lote1otto.com^ -||www.m1ll1c4n0.com^ -||www.mack7oyes.com^ -||www.main5poem.com^ -||www.make6pain.com^ -||www.mali4blat.com^ -||www.malm1coax.com^ -||www.mari4norm.com^ -||www.marx7loki.com^ -||www.mass1soma.com^ -||www.mavic852.com^ -||www.mbljpu9.com^ -||www.me1294hlx.com^ -||www.mean8sigh.com^ -||www.mediaedge-info.com^ -||www.meet3monk.com^ -||www.mews2ruck.com^ -||www.mialbj6.com^ -||www.mile0tire.com^ -||www.mill8grip.com^ -||www.misc1bulk.com^ -||www.mnbvc34.com^ -||www.moat4shot.com^ -||www.mon-com-01.com^ -||www.mon-com-net.com^ -||www.mown5gaze.com^ -||www.n-core-pipe.com^ -||www.navy9gear.com^ -||www.neck6bake.com^ -||www.network-handle.com^ -||www.nhyund4.com^ -||www.nice3aiea.com^ -||www.nipe4head.com^ -||www.node7seat.com^ -||www.nora7nice.com^ -||www.norm0care.com^ -||www.nw-rail-03.com^ -||www.ny79641.com^ -||www.nyc14ny.com^ -||www.nyctrl32.com^ -||www.oboe3broo.com^ -||www.ofnsv69.com^ -||www.oita4bali.com^ -||www.okc-5190.com^ -||www.okc-5191.com^ -||www.operationintelligence7.com^ -||www.optimum-xyz.com^ -||www.otto5loki.com^ -||www.ours3care.com^ -||www.page1monk.com^ -||www.page9awry.com^ -||www.pair1tune.com^ -||www.pass-1234.com^ -||www.pass8heal.com^ -||www.path-follower.com^ -||www.path-trail.com^ -||www.path5wall.com^ -||www.pdxor02.com^ -||www.peak-ip-54.com^ -||www.peak2poem.com^ -||www.peep1alea.com^ -||www.perk0mean.com^ -||www.pkrchp001.com^ -||www.plokij1.com^ -||www.plug1luge.com^ -||www.plug4norm.com^ -||www.poiuy12.com^ -||www.poor5zero.com^ -||www.poqwo3.com^ -||www.pri12mel.com^ -||www.prt-or-067.com^ -||www.pto-slb-09.com^ -||www.pump8walk.com^ -||www.qetup12.com^ -||www.qlzn6i1l.com^ -||www.qpwoei2.com^ -||www.r45j15.com^ -||www.raab3frog.com^ -||www.rals4alum.com^ -||www.rate2self.com^ -||www.rate8deny.com^ -||www.rdeswa1.com^ -||www.rear9axis.com^ -||www.redd7liod.com^ -||www.refl3alea.com^ -||www.rep0pkgr.com^ -||www.req12pkg.com^ -||www.req12pkgb.com^ -||www.rfr-69.com^ -||www.rigi9bury.com^ -||www.rime8lope.com^ -||www.ripe8book.com^ -||www.risk8belt.com^ -||www.rng-snp-003.com^ -||www.roar9beer.com^ -||www.rock5rice.com^ -||www.rote8mino.com^ -||www.ruth8badb.com^ -||www.ryke4peep.com^ -||www.s3network1.com^ -||www.s5network1.com^ -||www.saas-eue-1.com^ -||www.saas-euw-1.com^ -||www.said3page.com^ -||www.sale0home.com^ -||www.san-spr-01.net^ -||www.saon6harz.com^ -||www.sas15k01.com^ -||www.scan-trail.com^ -||www.scan6show.com^ -||www.sch-alt-91.com^ -||www.sch-crt-91.com^ -||www.se-core-pipe.com^ -||www.sea-nov-1.com^ -||www.seat6worn.com^ -||www.seatac15.com^ -||www.shoo5woop.com^ -||www.shrfbdg004.com^ -||www.skye6oner.com^ -||www.sl-ct5.com^ -||www.slim2disc.com^ -||www.smart-business-365.com^ -||www.smart-business-foresight.com^ -||www.smart-business-intuition.com^ -||www.smart-cloud-intelligence.com^ -||www.smart-company-365.com^ -||www.smart-company365.com^ -||www.smart-enterprise-365.com^ -||www.smart-enterprise-7.com^ -||www.smart-enterprise-acumen.com^ -||www.snta0034.com^ -||www.softtrack08.com^ -||www.soil5hear.com^ -||www.soma9vols.com^ -||www.sour1bare.com^ -||www.sour7will.com^ -||www.spit0stge.com^ -||www.spn-twr-14.com^ -||www.srv00infra.com^ -||www.srv1010elan.com^ -||www.srv2020real.com^ -||www.srvtrkxx1.com^ -||www.srvtrkxx2.com^ -||www.star-cntr-5.com^ -||www.sugh8yami.com^ -||www.svr-prc-01.com^ -||www.svr007phz.com^ -||www.sw-rail-7.com^ -||www.swat8toot.com^ -||www.syntace-094.com^ -||www.tank3pull.com^ -||www.tent0mown.com^ -||www.text6film.com^ -||www.tghbn12.com^ -||www.tgvrfc4.com^ -||www.the-lead-tracker.com^ -||www.tire1soak.com^ -||www.tm1-001.com^ -||www.toll6kerb.com^ -||www.torn6back.com^ -||www.toru0vane.com^ -||www.trace-2000.com^ -||www.track-web.net^ -||www.trackdiscovery.net^ -||www.trackercloud.net^ -||www.trackinvestigate.net^ -||www.trail-route.com^ -||www.trail-viewer.com^ -||www.trail-web.com^ -||www.trailbox.net^ -||www.tray0bury.com^ -||www.trksrv44.com^ -||www.trksrv45.com^ -||www.trksrv46.com^ -||www.tst14netreal.com^ -||www.tst16infra.com^ -||www.tube6sour.com^ -||www.tula9mari.com^ -||www.uhygtf1.com^ -||www.ult-blk-cbl.com^ -||www.vane3alga.com^ -||www.vcentury01.com^ -||www.venture-enterprising.com^ -||www.vice4beek.com^ -||www.vick6duty.com^ -||www.visionary-business-52.com^ -||www.visionary-data-intuition.com^ -||www.visionary-enterprise-ingenuity.com^ -||www.visionary-enterprise-wisdom.com^ -||www.visionary365enterprise.com^ -||www.visionarybusiness7.com^ -||www.visionarybusinessacumen.com^ -||www.visionarycompany52.com^ -||www.vols7feed.com^ -||www.wa52613.com^ -||www.wait8hurl.com^ -||www.want7feed.com^ -||www.wauk1care.com^ -||www.web-01-gbl.com^ -||www.web-cntr-07.com^ -||www.websiteexploration.com^ -||www.weed6tape.com^ -||www.wild0army.com^ -||www.wild8prey.com^ -||www.wivo2gaza.com^ -||www.www-path.com^ -||www.yama1hove.com^ -||www.yami8alea.com^ -||www.ydwsjt-2.com^ -||www.yeld9auto.com^ -||www.yirr5frog.com^ -||www.zcbmn14.com^ -||www.zmxncb5.com^ -||www.zxcvb23.com^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_webtrekk.txt *** -||a.deutschehospitality.com^ -||a.hrewards.com^ -||a.jaz-hotel.com^ -||a.maxxhotel.com^ -||a.zleep.com^ -||abc.bayer04.de^ -||analytics.hermesworld.com^ -||analytics.myhermes.de^ -||app03.ikk-classic.de^ -||cdn7.baunetz.de^ -||census.misterspex.at^ -||census.misterspex.no^ -||count.bank99.at^ -||ctdfm.ilgiornale.it^ -||ctrkd.ilsole24ore.com^ -||da.bodenhaus.de^ -||da.hornbach.at^ -||da.hornbach.be^ -||da.hornbach.ch^ -||da.hornbach.cz^ -||da.hornbach.de^ -||da.hornbach.lu^ -||da.hornbach.nl^ -||da.hornbach.ro^ -||da.hornbach.se^ -||da.hornbach.sk^ -||data.adlermode.com^ -||data.all-in.de^ -||data.allgaeuer-zeitung.de^ -||data.babista.de^ -||data.campaign.prenatal.com^ -||data.campaign.toyscenter.it^ -||data.charles-colby.com^ -||data.engelhorn.com^ -||data.engelhorn.de^ -||data.goertz.de^ -||data.inbank.it^ -||data.janvanderstorm.de^ -||data.kulturkaufhaus.de^ -||data.leipzig.de^ -||data.main-ding.de^ -||data.mainpost.de^ -||data.mapp.com^ -||data.mediaworld.it^ -||data.shirtmaster.com^ -||data.vdi-wissensforum.de^ -||data.volksfreund.de^ -||data.westlotto.de^ -||daten.union-investment.de^ -||def.bayer04.de^ -||di.fotos-fuers-leben.ch^ -||di.ifolor.at^ -||di.ifolor.be^ -||di.ifolor.ch^ -||di.ifolor.com^ -||di.ifolor.de^ -||di.ifolor.dk^ -||di.ifolor.es^ -||di.ifolor.fi^ -||di.ifolor.fr^ -||di.ifolor.ie^ -||di.ifolor.it^ -||di.ifolor.lu^ -||di.ifolor.net^ -||di.ifolor.nl^ -||di.ifolor.se^ -||di.spreadmorelove.ch^ -||ed.emp-online.ch^ -||ed.emp-online.com^ -||ed.emp-online.es^ -||ed.emp-online.fr^ -||ed.emp-online.it^ -||ed.emp-shop.cz^ -||ed.emp-shop.dk^ -||ed.emp-shop.no^ -||ed.emp-shop.pl^ -||ed.emp-shop.se^ -||ed.emp-shop.sk^ -||ed.emp.at^ -||ed.emp.co.uk^ -||ed.emp.de^ -||ed.emp.fi^ -||ed.emp.ie^ -||ed.large.be^ -||ed.large.nl^ -||ed.originalpress.com^ -||eht.endress.com^ -||fiwinet.firmenwissen.com^ -||fiwinet.firmenwissen.de^ -||hbbtv-track.prosieben.de^ -||hbbtv-track.prosiebensat1puls4.com^ -||image.deginvest.de^ -||image.kfw-entwicklungsbank.de^ -||image.kfw-formularsammlung.de^ -||image.kfw-ipex-bank.de^ -||image.kfw.de^ -||images1.test.de^ -||img.buch.ch^ -||img.foodspring.at^ -||img.foodspring.ch^ -||img.foodspring.co.uk^ -||img.foodspring.cz^ -||img.foodspring.de^ -||img.foodspring.dk^ -||img.foodspring.es^ -||img.foodspring.fi^ -||img.foodspring.fr^ -||img.foodspring.hr^ -||img.foodspring.it^ -||img.foodspring.nl^ -||img.foodspring.se^ -||img.sparkasse-koelnbonn.de^ -||info.allango.net^ -||info.deltapublishing.co.uk^ -||info.derdiedaf.com^ -||info.genialklick.ch^ -||info.klett-sprachen.de^ -||intel.web.noleggiare.it^ -||intelligence.officialwesthamstore.com^ -||is.lg.com^ -||joda.corriereadriatico.it^ -||joda.ilgazzettino.it^ -||joda.ilmattino.it^ -||joda.ilmessaggero.it^ -||joda.leggo.it^ -||joda.quotidianodipuglia.it^ -||mapp.ewm.co.uk^ -||mapp.jysk.dk^ -||mapp.jysk.nl^ -||mapp.peacocks.co.uk^ -||mapp.yesstyle.com^ -||mff.messefrankfurt.com^ -||mit.bhw.de^ -||mit.db.com^ -||mit.deutsche-bank.de^ -||mit.deutschebank.be^ -||mit.deutschewealth.com^ -||mit.dslbank.de^ -||mit.dws.com^ -||mit.dws.de^ -||mit.postbank.de^ -||mit.researchlog.db.com^ -||mit.researchlog.dbresearch.com^ -||mit.researchlog.dbresearch.de^ -||mon.ingservices.nl^ -||now.peek-cloppenburg.de^ -||on.dextra.ch^ -||ot.obi-baumarkt.ch^ -||ot.obi-brico.ch^ -||ot.obi-italia.it^ -||ot.obi-ticino.ch^ -||ot.obi.at^ -||ot.obi.ba^ -||ot.obi.ch^ -||ot.obi.com^ -||ot.obi.cz^ -||ot.obi.de^ -||ot.obi.hu^ -||ot.obi.pl^ -||ot.obi.si^ -||ot.obi.sk^ -||pix.airbusgroup.com^ -||pix.eads.com^ -||pix.telekom-dienste.de^ -||pix.telekom.com^ -||pix.telekom.de^ -||pixel.augsburger-allgemeine.de^ -||proditor.sparda.de^ -||prophet.heise-academy.de^ -||prophet.heise.de^ -||scout.alpinetrek.co.uk^ -||scout.alpiniste.fr^ -||scout.berg-freunde.at^ -||scout.berg-freunde.ch^ -||scout.bergfreunde.de^ -||scout.bergfreunde.dk^ -||scout.bergfreunde.es^ -||scout.bergfreunde.eu^ -||scout.bergfreunde.fi^ -||scout.bergfreunde.it^ -||scout.bergfreunde.nl^ -||scout.bergfreunde.no^ -||scout.bergfreunde.se^ -||service.hcob-bank.de^ -||startrekk.flaconi.at^ -||startrekk.flaconi.ch^ -||startrekk.flaconi.de^ -||startrekk.flaconi.fr^ -||startrekk.flaconi.pl^ -||statistics.tuv.com^ -||sub1.cosmosdirekt.de^ -||t.mediaset.it^ -||text.benefitsatwork.be^ -||text.benefitsatwork.ch^ -||text.benefitsatwork.pl^ -||text.benefitsatwork.pt^ -||text.convenzioniaziendali.it^ -||text.mitarbeiterangebote.at^ -||text.mitarbeiterangebote.de^ -||text.rahmenvereinbarungen.de^ -||tippcom01.tipp24.com^ -||tr.computeruniverse.net^ -||tr.suedkurier.de^ -||track.emeza.ch^ -||track.emeza.com^ -||track.kiomi.com^ -||track.yellostrom.de^ -||tracking.eduscho.at^ -||tracking.netcologne.de^ -||tracking.shop.hunter.easynet.de^ -||tracking.tchibo.ch^ -||tracking.tchibo.com.tr^ -||tracking.tchibo.cz^ -||tracking.tchibo.de^ -||tracking.tchibo.hu^ -||tracking.tchibo.pl^ -||tracking.tchibo.sk^ -||trail-001.schleich-s.com^ -||trk.blume2000.de^ -||trk.krebsversicherung.de^ -||trk.nuernberger.com^ -||trk.nuernberger.de^ -||trk.nuernberger.digital^ -||w.ilfattoquotidiano.it^ -||w3.aktionaersbank.de^ -||w3.flatex.es^ -||w3.flatex.nl^ -||w7.berlin.de^ -||wa.planet-wissen.de^ -||wa.quarks.de^ -||wa.wdr.de^ -||wa.wdrmaus.de^ -||waaf.medion.com^ -||waaf1.aldi-gaming.de^ -||waaf1.aldi-music.de^ -||waaf1.aldilife.com^ -||waaf1.aldiphotos.co.uk^ -||waaf1.alditalk.de^ -||waaf1.hoferfotos.at^ -||watg.xxxlutz.com^ -||wbtrkk.deutschlandcard.de^ -||wbtrkk.teufel.ch^ -||wbtrkk.teufel.de^ -||wbtrkk.teufelaudio.at^ -||wbtrkk.teufelaudio.be^ -||wbtrkk.teufelaudio.co.uk^ -||wbtrkk.teufelaudio.com^ -||wbtrkk.teufelaudio.es^ -||wbtrkk.teufelaudio.fr^ -||wbtrkk.teufelaudio.it^ -||wbtrkk.teufelaudio.nl^ -||wbtrkk.teufelaudio.pl^ -||web.autobodytoolmart.com^ -||web.b2bimperialfashion.com^ -||web.b2bpleasefashion.com^ -||web.bankofscotland.de^ -||web.campaign.jaked.com^ -||web.campaign.miriade.com^ -||web.campaign.v73.it^ -||web.capriceshoes.com^ -||web.collisionservices.com^ -||web.communications.amouage.com^ -||web.comunicazioni.iol.it^ -||web.crm.beps.it^ -||web.crm.speedup.it^ -||web.diebayerische.de^ -||web.e.aldermore.co.uk^ -||web.e.bolts.co.uk^ -||web.e.compositesales.co.uk^ -||web.e.dekogardensupplies.co.uk^ -||web.e.drainagepipe.co.uk^ -||web.e.guttersupplies.co.uk^ -||web.e.obayaty.com^ -||web.e.panmacmillan.com^ -||web.e.pbslgroup.co.uk^ -||web.e.professionalbuildingsupplies.co.uk^ -||web.e.pvccladding.com^ -||web.e.soakaways.com^ -||web.email.farrow-ball.com^ -||web.email.pizzaexpress.com^ -||web.email.pmtonline.co.uk^ -||web.email.superga.co.uk^ -||web.email.topfarmacia.it^ -||web.email.turtlebay.co.uk^ -||web.email.umbro.co.uk^ -||web.email.zone3.com^ -||web.ideaautorepair.com^ -||web.info.aiteca.it^ -||web.info.bodybuildingwarehouse.co.uk^ -||web.info.bodybuildingwarehouse.com^ -||web.info.bonprix.es^ -||web.info.teamwarrior.com^ -||web.info.vantastic-foods.com^ -||web.info.varelotteriet.dk^ -||web.info.yeppon.it^ -||web.jana-shoes.com^ -||web.mail.parmalat.it^ -||web.mail.proximaati.com^ -||web.mailing.morawa.at^ -||web.mailing.storz-bickel.com^ -||web.mailing.vapormed.com^ -||web.mapp.docpeter.it^ -||web.mapp.edenred.it^ -||web.mapp.ilgiardinodeilibri.it^ -||web.mapp.naturzeit.com^ -||web.mapp.skousen.dk^ -||web.mapp.skousen.no^ -||web.mapp.tretti.se^ -||web.mapp.whiteaway.com^ -||web.mapp.whiteaway.no^ -||web.mapp.whiteaway.se^ -||web.marcotozzi.com^ -||web.marketing.jellybelly.com^ -||web.mytoys.de^ -||web.news.creedfragrances.co.uk^ -||web.news.dixiefashion.com^ -||web.news.eprice.it^ -||web.news.gnv.it^ -||web.news.imperialfashion.com^ -||web.news.lancel.com^ -||web.news.paganistore.com^ -||web.news.piquadro.com^ -||web.news.pleasefashion.com^ -||web.news.thebridge.it^ -||web.newsletter.koffer-to-go.de^ -||web.newsletter.viviennewestwood.com^ -||web.newsletterit.esprinet.com^ -||web.online.monnalisa.com^ -||web.redazione.milanofinanza.it^ -||web.sensilab.com^ -||web.sensilab.cz^ -||web.sensilab.de^ -||web.sensilab.dk^ -||web.sensilab.es^ -||web.sensilab.fi^ -||web.sensilab.hr^ -||web.sensilab.ie^ -||web.sensilab.it^ -||web.sensilab.org^ -||web.sensilab.pt^ -||web.sensilab.ro^ -||web.sensilab.se^ -||web.sensilab.si^ -||web.sensilab.sk^ -||web.sidsavage.com^ -||web.slim-joy.de^ -||web.slimjoy.com^ -||web.slimjoy.cz^ -||web.slimjoy.dk^ -||web.slimjoy.it^ -||web.slimjoy.ro^ -||web.slimjoy.se^ -||web.slimjoy.sk^ -||web.solesource.com^ -||web.tamaris.com^ -||web.tummy-tox.com^ -||web.tummytox.at^ -||web.tummytox.de^ -||web.tummytox.es^ -||web.tummytox.fr^ -||web.tummytox.it^ -||web.tummytox.pt^ -||web.tummytox.sk^ -||web.usautosupply.com^ -||web.web.tomasiauto.com^ -||web.x.ilpost.it^ -||webanalytics.also.com^ -||webmet.creditreform-mahnwesen.de^ -||webmet.creditreform.de^ -||website-usage.b2bendix.com^ -||website-usage.knorr-bremse.com^ -||webt.aqipa.com^ -||webt.eleonto.com^ -||webt.eu.teac-audio.com^ -||webt.pure-audio.com^ -||webt.store.okmilo.com^ -||webts.adac.de^ -||wt.ara.ad^ -||wt.ara.cat^ -||wt.arabalears.cat^ -||wt.dialog-versicherung.de^ -||wt.distrelec.com^ -||wt.envivas.de^ -||wt.generali.de^ -||wt.generalibewegtdeutschland.de^ -||wt.generalihealthsolutions.de^ -||wt.netze-bw.de^ -||wt.vhb.de^ -||wtm.interhyp.de^ -||wttd.douglas.at^ -||wttd.douglas.ch^ -||wttd.douglas.de^ -||wttd.douglas.it^ -||wttd.douglas.nl^ -||wttd.douglas.pl^ -||wttd.madeleine-fashion.be^ -||wttd.madeleine-fashion.nl^ -||wttd.madeleine-mode.at^ -||wttd.madeleine-mode.ch^ -||wttd.madeleine.co.uk^ -||wttd.madeleine.de^ -||wttd.madeleine.fr^ -||wttd.madeleine.gr^ -||www7.springer.com^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_wizaly.txt *** -||t-test.esvdigital.com^ -||t.wiz.meilleurtaux.com^ -||tk.abt.com^ -||tk.agrizone.net^ -||tk.aircaraibes.com^ -||tk.airfrance.ae^ -||tk.airfrance.am^ -||tk.airfrance.at^ -||tk.airfrance.be^ -||tk.airfrance.bf^ -||tk.airfrance.bg^ -||tk.airfrance.bj^ -||tk.airfrance.ca^ -||tk.airfrance.ch^ -||tk.airfrance.cm^ -||tk.airfrance.co.ao^ -||tk.airfrance.co.il^ -||tk.airfrance.co.jp^ -||tk.airfrance.co.kr^ -||tk.airfrance.co.th^ -||tk.airfrance.co.uk^ -||tk.airfrance.co.za^ -||tk.airfrance.cz^ -||tk.airfrance.de^ -||tk.airfrance.dj^ -||tk.airfrance.dk^ -||tk.airfrance.dz^ -||tk.airfrance.es^ -||tk.airfrance.fi^ -||tk.airfrance.fr^ -||tk.airfrance.ga^ -||tk.airfrance.gf^ -||tk.airfrance.gr^ -||tk.airfrance.hr^ -||tk.airfrance.ht^ -||tk.airfrance.id^ -||tk.airfrance.ie^ -||tk.airfrance.in^ -||tk.airfrance.it^ -||tk.airfrance.ma^ -||tk.airfrance.mg^ -||tk.airfrance.mq^ -||tk.airfrance.mu^ -||tk.airfrance.my^ -||tk.airfrance.ng^ -||tk.airfrance.nl^ -||tk.airfrance.pa^ -||tk.airfrance.pf^ -||tk.airfrance.pl^ -||tk.airfrance.pt^ -||tk.airfrance.re^ -||tk.airfrance.ro^ -||tk.airfrance.rs^ -||tk.airfrance.ru^ -||tk.airfrance.sa^ -||tk.airfrance.se^ -||tk.airfrance.sg^ -||tk.airfrance.sk^ -||tk.airfrance.sn^ -||tk.airfrance.tn^ -||tk.airfrance.ua^ -||tk.airfrance.us^ -||tk.airfrance.vn^ -||tk.alexandermcqueen.com^ -||tk.apprentis-auteuil.org^ -||tk.assurland.com^ -||tk.assurlandpro.com^ -||tk.atol.fr^ -||tk.balenciaga.com^ -||tk.biovea.com^ -||tk.blancheporte.be^ -||tk.blancheporte.fr^ -||tk.boutique.capital.fr^ -||tk.boutique.geo.fr^ -||tk.boutique.hbrfrance.fr^ -||tk.boutique.voici.fr^ -||tk.bricoprive.com^ -||tk.bullebleue.fr^ -||tk.cadeaux.com^ -||tk.conforama.fr^ -||tk.dietbon.fr^ -||tk.domitys.fr^ -||tk.dossier.co^ -||tk.engie.fr^ -||tk.etam.com^ -||tk.evaneos.ch^ -||tk.evaneos.de^ -||tk.evaneos.es^ -||tk.evaneos.fr^ -||tk.evaneos.it^ -||tk.evaneos.nl^ -||tk.france-abonnements.fr^ -||tk.frenchbee.com^ -||tk.gustaveroussy.fr^ -||tk.healthwarehouse.com^ -||tk.hypnia.co.uk^ -||tk.hypnia.de^ -||tk.hypnia.es^ -||tk.hypnia.fr^ -||tk.hypnia.nl^ -||tk.illicado.com^ -||tk.interflora.dk^ -||tk.interflora.es^ -||tk.interflora.fr^ -||tk.interflora.it^ -||tk.jeux.loro.ch^ -||tk.jim-joe.fr^ -||tk.kidsaround.com^ -||tk.kitchendiet.fr^ -||tk.klm.com^ -||tk.kusmitea.com^ -||tk.lacoste.com^ -||tk.lamaisonduchocolat.com^ -||tk.lcl.fr^ -||tk.little-big-change.com^ -||tk.lolivier.fr^ -||tk.lulli-sur-la-toile.com^ -||tk.m6boutique.com^ -||tk.macif.fr^ -||tk.maison123.com^ -||tk.manouvellevoiture.com^ -||tk.moveyourfit.com^ -||tk.msccruises.com^ -||tk.nhlottery.com^ -||tk.opinion-assurances.fr^ -||tk.petit-bateau.be^ -||tk.petit-bateau.co.uk^ -||tk.petit-bateau.de^ -||tk.petit-bateau.es^ -||tk.petit-bateau.fr^ -||tk.petit-bateau.it^ -||tk.planete-oui.fr^ -||tk.prismashop.fr^ -||tk.qare.fr^ -||tk.qobuz.com^ -||tk.rentacar.fr^ -||tk.rimowa.com^ -||tk.salomon.com^ -||tk.santevet.be^ -||tk.santevet.com^ -||tk.santevet.de^ -||tk.santevet.es^ -||tk.santevet.it^ -||tk.speedway.fr^ -||tk.svsound.com^ -||tk.teleshopping.fr^ -||tk.tikamoon.at^ -||tk.tikamoon.be^ -||tk.tikamoon.ch^ -||tk.tikamoon.co.uk^ -||tk.tikamoon.com^ -||tk.tikamoon.de^ -||tk.tikamoon.es^ -||tk.tikamoon.it^ -||tk.tikamoon.nl^ -||tk.transavia.com^ -||tk.ultrapremiumdirect.com^ -||tk.undiz.com^ -||tk.verisure.fr^ -||tk.viapresse.com^ -||tk.zenpark.com^ -||tracking-test.esearchvision.com^ -||trackv-test.esearchvision.com^ -||tv-test.esvdigital.com^ -||twiz.wizaly.co.uk^ -||twiz.wizaly.fr^ -||wiz.empowerhearing.com^ -||wiz.sncf-connect.com^ -||wz.allianz.fr^ - -! *** easylist:easyprivacy/easyprivacy_specific_cname_branch.txt *** -||07b3.pandasuite.io^ -||0ddf.pandasuite.io^ -||1.ftb.al^ -||10008919.pomelo.fashion^ -||10079290.fluz.app^ -||10298198.arch.sofi.org^ -||10298198.info.sofi.org^ -||10298198.m.sofi.org^ -||10298198.o.sofi.org^ -||102d.pandasuite.io^ -||11959579.fun.joyrun.com^ -||12915784.care.sanvello.com^ -||12915784.help.sanvello.com^ -||16134024.artcollection.io^ -||161779.publy.co^ -||18052925.im.intermiles.com^ -||19035924.automated.almosafer.com^ -||19035924.email.almosafer.com^ -||19035924.loyalty.almosafer.com^ -||19035924.mktg.almosafer.com^ -||19035955.automated.tajawal.com^ -||19035955.email.tajawal.com^ -||19035955.loyalty.tajawal.com^ -||19035955.mktg.tajawal.com^ -||1e90.pandasuite.io^ -||2.wantsext.me^ -||20bd.pandasuite.io^ -||2143.pandasuite.io^ -||22153974.branch.rocks^ -||223f.pandasuite.io^ -||2540166.chalknation.com^ -||3565433061881492849.academyofconsciousleadership.com^ -||3587285621425460184.academyofconsciousleadership.net^ -||3889082.dev.att.llabs.io^ -||3935128650935608632.academyofconsciousleadership.org^ -||3988408442896783715.theacademyforconsciousleadership.com^ -||3b38.pandasuite.io^ -||3skickasurf.tre.se^ -||40caidaylimpia.catzolab.net^ -||492733704185584515.academyforconsciousculture.com^ -||4b.oktium.com^ -||5173.pandasuite.io^ -||52d8.pandasuite.io^ -||5363316.marketing.numi.com^ -||5363316.trackerinfo.southbeachdiet.com^ -||581b.pandasuite.io^ -||5e00.pandasuite.io^ -||6068372.huckleberry-labs.com^ -||6519114.automated.almosafer.com^ -||6519114.automated.tajawal.com^ -||6519114.email.tajawal.com^ -||6519114.loyalty.almosafer.com^ -||6519114.loyalty.tajawal.com^ -||6519114.mktg.almosafer.com^ -||6519114.mktg.tajawal.com^ -||6677648.reddoorz.com^ -||671c.pandasuite.io^ -||757d.pandasuite.io^ -||76ef.pandasuite.io^ -||7701534.emails.tntdrama.com^ -||8041691.comms.hipages.com.au^ -||8041691.engage.hipages.com.au^ -||8147563.1954.bk.com^ -||8147563.thekingdom.bk.com^ -||8147563.your-way.bk.com^ -||8820.pandasuite.io^ -||8d4b.pandasuite.io^ -||9189.pandasuite.io^ -||9544702.kazooby.com^ -||9693.pandasuite.io^ -||9735476.sender.skyscanner.com^ -||9735476.sender.skyscanner.net^ -||9735476.test.skyscanner.net^ -||9786.pandasuite.io^ -||9857064.hello.spriggy.com.au^ -||9857064.notice.spriggy.com.au^ -||9955951.pillar.app^ -||9984342.reddoorz.in^ -||9b55.pandasuite.io^ -||9bdb.pandasuite.io^ -||9kvnwwkj.pandasuite.io^ -||a-t.topya.com^ -||a.a23.in^ -||a.careangel.com^ -||a.getemoji.me^ -||a.hibbett.com^ -||a.ifit.io^ -||a.itim.es^ -||a.nelo.mx^ -||a.pickme.lk^ -||a.sbnw.in^ -||a.topya.com^ -||a2.slotxbros.com^ -||aakashapp.byjus.com^ -||abcd.coderays.com^ -||ablink.1954.bk.com^ -||ablink.8email.eightsleep.com^ -||ablink.a.radio.com^ -||ablink.account.one.app^ -||ablink.account.zip.co^ -||ablink.ae.linktr.ee^ -||ablink.alerts.forhers.com^ -||ablink.alerts.max.com^ -||ablink.arch.sofi.org^ -||ablink.c.grubhub.com^ -||ablink.care.sanvello.com^ -||ablink.comms.hipages.com.au^ -||ablink.comms.trainline.com^ -||ablink.comms.waveapps.com^ -||ablink.commsinfo.trainline.com^ -||ablink.daily.sofi.com^ -||ablink.e.hungryjacks.com.au^ -||ablink.e.jackpocket.com^ -||ablink.e.sanvello.com^ -||ablink.e.theiconic.com.au^ -||ablink.earn.liven.com.au^ -||ablink.edm.zip.co^ -||ablink.em.redmart.com^ -||ablink.email.creator.shopltk.com^ -||ablink.email.etsy.com^ -||ablink.email.luminarypodcasts.com^ -||ablink.email.pressreader.com^ -||ablink.emails.spothero.com^ -||ablink.emails.themarket.nz^ -||ablink.emails.vida.com^ -||ablink.engage.hipages.com.au^ -||ablink.engage.insighttimer.com^ -||ablink.enjoy.wonder.com^ -||ablink.feed.liven.com.au^ -||ablink.fun.joyrun.com^ -||ablink.go1.zip.co^ -||ablink.go2.zip.co^ -||ablink.go3.zip.co^ -||ablink.hello.innit.com^ -||ablink.hello.sanvello.com^ -||ablink.hello.spriggy.com.au^ -||ablink.hello.washmen.com^ -||ablink.help.innit.com^ -||ablink.help.sanvello.com^ -||ablink.help.shopwell.com^ -||ablink.info.felixmobile.com.au^ -||ablink.info.oneatwork.app^ -||ablink.info.pressreader.com^ -||ablink.info.sofi.org^ -||ablink.info.themarket.nz^ -||ablink.info.timhortons.ca^ -||ablink.info.timhortons.com^ -||ablink.info.vida.com^ -||ablink.juicer.li.me^ -||ablink.kfc.com.au^ -||ablink.lifecycle.onxmaps.com^ -||ablink.loyal.timhortons.ca^ -||ablink.loyal.timhortons.com^ -||ablink.loyalty.almosafer.com^ -||ablink.loyalty.tajawal.com^ -||ablink.m.feelcove.com^ -||ablink.m.jackpocket.com^ -||ablink.m.popeyes.com^ -||ablink.m.seatedapp.io^ -||ablink.m.sofi.org^ -||ablink.ma.linktr.ee^ -||ablink.mail.activearcade.ai^ -||ablink.mail.adobespark.com^ -||ablink.mail.flipfit.com^ -||ablink.mail.grailed.com^ -||ablink.mail.homecourt.ai^ -||ablink.mail.parkmobile.io^ -||ablink.mail.truemoney.com^ -||ablink.mail.winwinsave.com^ -||ablink.mail1.iheart.com^ -||ablink.marketing.adobemailing.com^ -||ablink.marketing.li.me^ -||ablink.marketing.max.com^ -||ablink.marketing.motortrend.com^ -||ablink.marketing.onxmaps.com^ -||ablink.media.10play.com.au^ -||ablink.mktg.almosafer.com^ -||ablink.mktg.tajawal.com^ -||ablink.msg.flipfit.com^ -||ablink.my.zip.co^ -||ablink.news.felixmobile.com.au^ -||ablink.news.forhers.com^ -||ablink.news.gooseinsurance.com^ -||ablink.news.kfc.co.za^ -||ablink.newsletters1.motortrend.com^ -||ablink.newsletters2.motortrend.com^ -||ablink.notice.spriggy.com.au^ -||ablink.notification.insighttimer.com^ -||ablink.notify.homecourt.ai^ -||ablink.nz-edm.zip.co^ -||ablink.o.sofi.org^ -||ablink.offers.checkout51.com^ -||ablink.offroad-marketing.onxmaps.com^ -||ablink.p.radio.com^ -||ablink.pomelo.fashion^ -||ablink.pomelofashion.com^ -||ablink.promos.timhortons.ca^ -||ablink.promos.timhortons.com^ -||ablink.qa.enjoy.wonder.com^ -||ablink.r.sofi.com^ -||ablink.rider.li.me^ -||ablink.seller.etsy.com^ -||ablink.send.joinjamjar.com.au^ -||ablink.sender.skyscanner.com^ -||ablink.sender.skyscanner.net^ -||ablink.service.max.com^ -||ablink.staging-e.klarna.com^ -||ablink.stream.max.com^ -||ablink.subscribers.motortrend.com^ -||ablink.support.oneatwork.app^ -||ablink.t.feelcove.com^ -||ablink.tchicken.popeyes.com^ -||ablink.test.iheart.com^ -||ablink.test.kfc.com.au^ -||ablink.test.skyscanner.net^ -||ablink.test.vida.com^ -||ablink.thekingdom.bk.com^ -||ablink.thekitchen.popeyes.com^ -||ablink.track.popeyes.com^ -||ablink.track.timhortons.ca^ -||ablink.track.timhortons.com^ -||ablink.uat.enjoy.wonder.com^ -||ablink.updates.creator.shopltk.com^ -||ablink.updates.gooseinsurance.com^ -||ablink.your-way.bk.com^ -||ablink.your.audacy.com^ -||ablinkclicktest.prod.aws.skyscnr.com^ -||ablinks-staging.email.tispr.com^ -||ablinks.comms.healthengine.com.au^ -||ablinks.e.foxsports.com.au^ -||ablinks.e.sportinanutshell.com.au^ -||ablinks.info.amaro.com^ -||ablinks.kfc.com.au^ -||ablinks.mail.claritymoney.com^ -||ablinks.mail.hinge.co^ -||ablinks.mail.pared.com^ -||ablinks.marketing.numi.com^ -||ablinks.news.amaro.com^ -||ablinks.news.learnwithhomer.com^ -||ablinks.notify.healthengine.com.au^ -||ablinks.trackerinfo.southbeachdiet.com^ -||ablinks.welcome.learnwithhomer.com^ -||ablinksemail.wirexapp.com^ -||ablinksuni.a.grubhub.com^ -||ablinksuni.a.seamless.com^ -||abmail.info.amaro.com^ -||abmail.peak.net^ -||abmail.test.iheart.com^ -||abmail2.e.hungryjacks.com.au^ -||acc-link-ccontact.focuscura.com^ -||accenture.epoise.com^ -||accenturetest.epoise.com^ -||access.ipro.net^ -||access.iprolive.com^ -||access2.ipro.net^ -||acesse.tc.com.br^ -||acro.egghead.link^ -||act.wynk.in^ -||activation.depop.com^ -||active-email.branch.rocks^ -||ad.gogox.com^ -||ad.inhaabit.com^ -||adl.kkguan.com^ -||admin.academyforconsciousleadership.net^ -||ads.tikpage.com^ -||afpd.groundwidgets.com^ -||aggelakia.openapp.link^ -||ailla.abphotos.link^ -||aivali.openapp.link^ -||al.airtel.in^ -||al.mtrx.dev^ -||al.mtrx.travel^ -||al.mtrxs.dev^ -||al.test.airtel.in^ -||alaburger.openapp.link^ -||alapita.openapp.link^ -||alerts.steadyapp.com^ -||alexa.dev.intecular.com^ -||alibabapizza.openapp.link^ -||alinks.outcomes4me.com^ -||alpha.go.levelbank.com^ -||amandi.openapp.link^ -||amazon-email.branch.rocks^ -||amo.myoyster.mx^ -||ana.e-ticket.co.jp^ -||analytics.adobe.ly^ -||analytics.crowdkeep.com^ -||analytics.eventbrite.com^ -||anapp.adobe.com^ -||android.txtsmarter.com^ -||anet.abphotos.link^ -||animaux.oworld.fr^ -||antico.openapp.link^ -||aod.echovisuals.com^ -||ap.hibbett.com^ -||ap.shouta.co^ -||app-branch.yummybazaar-qa.com^ -||app-clicks-corporate.firstrepublic.com^ -||app-clicks.firstrepublic.com^ -||app-dat.kingofthecurve.org^ -||app-dev.onyx.fit^ -||app-dev.stressbuoy.com^ -||app-jp.getmiles.com^ -||app-link-test.inkl.com^ -||app-link-test.republik.gg^ -||app-link.funfull.com^ -||app-link.inkl.com^ -||app-link.republik.gg^ -||app-link.smartvid.io^ -||app-link.udex.us^ -||app-qa.rnd.thronelabs.co^ -||app-redirect.wearephlo.com^ -||app-stage.mschfsneakers.com^ -||app-test.albrt.co^ -||app-test.barking.city^ -||app-test.barking.ee^ -||app-test.comparethemarket.com.au^ -||app-test.evntly.com^ -||app-test.get360fit.com^ -||app-test.goat.com^ -||app-test.hermo.my^ -||app-test.kisikates.com.tr^ -||app-test.klip.ae^ -||app-test.mogo.ca^ -||app-test.mywaggle.com^ -||app-test.nala.money^ -||app-test.planstr.com^ -||app-test.playtally.com^ -||app-test.thestaxapp.com^ -||app-test.utlob.com^ -||app-uat.latrobehealth.com.au^ -||app-uat.navyhealth.com.au^ -||app.1112.com^ -||app.2cents.audio^ -||app.5miles.us^ -||app.8tracks.com^ -||app.aaptiv.com^ -||app.acekuwait.com^ -||app.activityhero.com^ -||app.aksent.ai^ -||app.albrt.co^ -||app.allyos.com^ -||app.almosafer.com^ -||app.almutawapharmacies.com^ -||app.ammanmart.com^ -||app.anch.co^ -||app.appcity.com.au^ -||app.aquaservice.com^ -||app.areyouin.io^ -||app.atlasmission.com^ -||app.audibene.de^ -||app.auge.pro.br^ -||app.autotrader.com.au^ -||app.avopass.com^ -||app.awto.cl^ -||app.awto.com.br^ -||app.babycloud.in^ -||app.bajajfinservmarkets.in^ -||app.ballet.org.uk^ -||app.bancobv.com.br^ -||app.banqi.com.br^ -||app.barking.city^ -||app.barking.ee^ -||app.bateriasparacarrosbogota.com^ -||app.begin.is^ -||app.bekfood.de^ -||app.belbet.by^ -||app.belk.com^ -||app.bergenkino.no^ -||app.berrydates.com^ -||app.bettle.co^ -||app.bible.com^ -||app.biblelens.com^ -||app.bikeep.com^ -||app.bimbaylola.com^ -||app.bloombergconnects.org^ -||app.bovedainc.com^ -||app.bplepay.co.kr^ -||app.brain.ly^ -||app.brandclub.com^ -||app.bruce.work^ -||app.buildd.co^ -||app.butterflymx.com^ -||app.bws.com.au^ -||app.byjus.com^ -||app.caden.io^ -||app.cambolink21.com^ -||app.campaignhero.ai^ -||app.campbowwow.com^ -||app.capitalbikeshare.com^ -||app.cardbaazi.com^ -||app.cardiovisual.com^ -||app.carrierview.com^ -||app.carsguide.com.au^ -||app.catchconnect.com.au^ -||app.changemakerz.org^ -||app.citibikenyc.com^ -||app.citylink.ro^ -||app.clientbook.com^ -||app.clovia.com^ -||app.cmnet.cf^ -||app.coconuts.co^ -||app.colesmobile.com.au^ -||app.comparethemarket.com.au^ -||app.cookdtv.com^ -||app.coto.world^ -||app.cover.com^ -||app.ctc.ru^ -||app.cuahealth.com.au^ -||app.curesk.in^ -||app.currenciesdirect.com^ -||app.danmurphys.com.au^ -||app.deliverynow.vn^ -||app.delphia.com^ -||app.dev.pyypl.io^ -||app.dev.talksport.com^ -||app.dev.virginradio.co.uk^ -||app.deviceidfinder.com^ -||app.devyce.com^ -||app.dickssportinggoods.com^ -||app.discover.com^ -||app.dolinakrzny.digimuth.com^ -||app.domclick.ru^ -||app.dreambox.ru.com^ -||app.echo.co.uk^ -||app.echovisuals.com^ -||app.eland.kr^ -||app.elanic.in^ -||app.elly.com^ -||app.email.influitive.com^ -||app.entwickler.de^ -||app.etc.se^ -||app.etcel.se^ -||app.evntly.com^ -||app.exercisetimer.net^ -||app.experience297.com^ -||app.explico.sg^ -||app.fashalot.com^ -||app.favorited.com^ -||app.feedacat.com^ -||app.feedadog.com^ -||app.fitmint.io^ -||app.fixly.pl^ -||app.flatex.at^ -||app.flatex.de^ -||app.flowyour.money^ -||app.flykitt.com^ -||app.flyx.me^ -||app.food.li^ -||app.food.porn^ -||app.foody.vn^ -||app.forever21.com^ -||app.fount.bio^ -||app.fuse.cash^ -||app.fyscore.com^ -||app.gasengineersoftware.co.uk^ -||app.gastro-ausweis.de^ -||app.gempak.com^ -||app.get-e.com^ -||app.getbamboo.io^ -||app.getcubo.com^ -||app.getgifted.com^ -||app.getgigl.com^ -||app.getjerry.com^ -||app.getmiles.com^ -||app.getplayground.com^ -||app.getselect.co^ -||app.getsquirrel.io^ -||app.ggpoker.co.uk^ -||app.gobuncha.com^ -||app.gocheetah.com^ -||app.godtlevert.no^ -||app.gogovan.sg^ -||app.gogovan.tw^ -||app.golfgalaxy.com^ -||app.goodwearmall.com^ -||app.gopib.net^ -||app.goqii.com^ -||app.got-it.link^ -||app.grabon.in^ -||app.grapevine.in^ -||app.greenweez.com^ -||app.grubster.com.br^ -||app.gustave-et-rosalie.com^ -||app.gwsportsapp.in^ -||app.gymstreak.com^ -||app.handlemoa.com^ -||app.hapicolibri.fr^ -||app.happyar.world^ -||app.hauskey.com^ -||app.headuplabs.com^ -||app.health2sync.com^ -||app.healthteams.com.au^ -||app.hear.com^ -||app.heponda.com^ -||app.hermo.my^ -||app.hinge.co^ -||app.hirenodes.com^ -||app.hocngoainguhieuqua.com^ -||app.holdstation.com^ -||app.homelocatorapp.com^ -||app.homoola.com^ -||app.hotdoc.com.au^ -||app.iamblackbusiness.com^ -||app.idexevent.com^ -||app.infyn.it^ -||app.inkitt.com^ -||app.instantlocal.com^ -||app.intermexonline.com^ -||app.intermiles.com^ -||app.interprefy.com^ -||app.intros.com^ -||app.inutriciondeportiva.com^ -||app.iroomit.com^ -||app.itimes.com^ -||app.iwanttfc.com^ -||app.jamdoughnut.com^ -||app.jili178.us^ -||app.joatspace.com^ -||app.joinkroo.com^ -||app.joinraft.com^ -||app.jurishand.com^ -||app.kaptain11.com^ -||app.kcutsgo.com^ -||app.kernwerk.de^ -||app.kingofthecurve.org^ -||app.kippo.gg^ -||app.kisikates.com.tr^ -||app.klaim.us^ -||app.klip.ae^ -||app.klokahem.com^ -||app.kochamwino.com.pl^ -||app.kora.money^ -||app.koyamedical.com^ -||app.kumu.ph^ -||app.lark.com^ -||app.latrobehealth.com.au^ -||app.lawnlove.com^ -||app.learnz.hu^ -||app.levi.com^ -||app.libre.org^ -||app.link.livibank.com^ -||app.link.nba.com^ -||app.liven.com.au^ -||app.lootpop.com^ -||app.luckysweater.com^ -||app.luve.tv^ -||app.manager.privateaser.com^ -||app.marriott.com^ -||app.matchme.social^ -||app.me4u.ai^ -||app.meclub.com^ -||app.meihengyisheng.com^ -||app.meliuz.com.br^ -||app.memor-i.com^ -||app.menupromo.inlinefx.com^ -||app.mikedfitness.com^ -||app.mingo.chat^ -||app.mintmobile.com^ -||app.mobilapp.io^ -||app.mobilevikings.pl^ -||app.mogo.ca^ -||app.moneta.lk^ -||app.moneywalkie.com^ -||app.motiwy.com^ -||app.movebe.com^ -||app.movegb.com^ -||app.mschfsneakers.com^ -||app.mt11.io^ -||app.musely.com^ -||app.mybestphotobook.com^ -||app.mybliss.ai^ -||app.mycirclecare.com^ -||app.mylogoinc.com^ -||app.myrbhs.com.au^ -||app.mywaggle.com^ -||app.naga.com^ -||app.naked.insure^ -||app.nala.money^ -||app.nalogi.online^ -||app.nautilus.io^ -||app.navi.com^ -||app.navyhealth.com.au^ -||app.nhrmcmychart.com^ -||app.nootric.com^ -||app.now.vn^ -||app.nursef.ly^ -||app.ocamping.fr^ -||app.oceans.io^ -||app.ofisten.com^ -||app.onet.pl^ -||app.onyx.fit^ -||app.onyxcharge.com^ -||app.openfolio.com^ -||app.optus.com.au^ -||app.ouicsport.fr^ -||app.ovloop.com^ -||app.oze789.com^ -||app.p100.io^ -||app.pally.live^ -||app.pandasuite.io^ -||app.panomoments.com^ -||app.pawsket.com^ -||app.payomatic.com^ -||app.payon.mn^ -||app.pdf.ac^ -||app.pethoops.com^ -||app.pickwin.net^ -||app.pickyourtrail.com^ -||app.pixapp.com^ -||app.pointer.com.br^ -||app.pokerup.net^ -||app.pooler.io^ -||app.poolkingmobile.com^ -||app.popsa.com^ -||app.poupaenergia.pt^ -||app.powerwatch.io^ -||app.priceoff.com.br^ -||app.primeconcept.co.uk^ -||app.primexbt.com^ -||app.pro-vision.com^ -||app.producttube.com^ -||app.progressive.com^ -||app.puma.com^ -||app.puneeatouts.in^ -||app.pyypl.io^ -||app.qa.flykitt.com^ -||app.qa.fount.bio^ -||app.qeenatha.com^ -||app.qlan.gg^ -||app.qooxydz.net^ -||app.quidd.co^ -||app.quotesalarm.com^ -||app.radio.com^ -||app.radixdlt.com^ -||app.raneen.com^ -||app.rclb.pl^ -||app.realnewsnow.com^ -||app.renozee.com^ -||app.resq.club^ -||app.reuters.com^ -||app.ritual.io^ -||app.rlax.me^ -||app.rmbr.in^ -||app.roomsync.com^ -||app.scrpbx.co^ -||app.seasonshare.com^ -||app.segno.org^ -||app.select.id^ -||app.semusi.com^ -||app.sephora.com^ -||app.shopback.com^ -||app.shouta.co^ -||app.showroomprive.com^ -||app.singlife.com^ -||app.skideal-prod.ynadev.com^ -||app.skydo.cloud^ -||app.smartcredit.com^ -||app.smrtp.link^ -||app.snbla.com^ -||app.sortedai.com^ -||app.soultime.com^ -||app.sswt.co^ -||app.stadac.mobilapp.gmbh^ -||app.stagingsimpl.com^ -||app.streaktrivia.com^ -||app.stressbuoy.com^ -||app.studios.brain.ai^ -||app.subs.tv^ -||app.sunstone.in^ -||app.sweeps.fyi^ -||app.swiftgift.it^ -||app.swiftgift.me^ -||app.ta3weem.com^ -||app.tadatada.com^ -||app.tagachi.io^ -||app.tajawal.com^ -||app.talksport.com^ -||app.task.io^ -||app.teachfx.com^ -||app.test.elly.com^ -||app.th3rdwave.coffee^ -||app.theachieveapp.com^ -||app.theachieveproject.com^ -||app.thedealerapp.co.uk^ -||app.themaven.net^ -||app.thestaxapp.com^ -||app.thetimes.link^ -||app.thetriviabar.com^ -||app.thexlife.co^ -||app.thisiscleveland.com^ -||app.tikki.com^ -||app.times.radio^ -||app.tmro.com^ -||app.toastme.com^ -||app.topgrad.co.uk^ -||app.topten10mall.com^ -||app.torfx.com^ -||app.touchofmodern.com^ -||app.trade.mogo.ca^ -||app.trainfitness.ai^ -||app.trainline.com^ -||app.travelcom.com.tw^ -||app.trayls.com^ -||app.treering.com^ -||app.trell.co^ -||app.trimenu.com^ -||app.trulia.com^ -||app.trutv.com^ -||app.tsgo.io^ -||app.tutorela.com^ -||app.ugo.srl^ -||app.unlockar.com^ -||app.utlob.com^ -||app.vahak.in^ -||app.vidds.ee^ -||app.virdee.co^ -||app.virginradio.co.uk^ -||app.vitabuddy.de^ -||app.vitruvian.me^ -||app.voice.football^ -||app.vurse.com^ -||app.vyaparapp.in^ -||app.w3w.io^ -||app.waybetter.com^ -||app.well.co.uk^ -||app.what3words.com^ -||app.wish2wash.com^ -||app.wishtrend.com^ -||app.withutraining.com^ -||app.wonder.com^ -||app.wordgo.org^ -||app.wsop.ca^ -||app.wudju.de^ -||app.yolda.com^ -||app.yolda.io^ -||app.yollty.com^ -||app.youla.io^ -||app.yourmoji.co^ -||app.zip.co^ -||app.ziptoss.com^ -||app.zirtue.com^ -||app.zwilling.com^ -||app2.220cordncode.com^ -||application.mindshine.app^ -||application.mybiglove.ru^ -||applink-test.chalknation.com^ -||applink.aspiration.com^ -||applink.batterii.com^ -||applink.beta.aspiration.com^ -||applink.calciumhealth.com^ -||applink.cw.com.tw^ -||applink.designengineapp.com^ -||applink.discuss.com.hk^ -||applink.eventable.com^ -||applink.flipboard.com^ -||applink.fun88906.com^ -||applink.get-a-way.com^ -||applink.getbambu.com^ -||applink.getconfide.com^ -||applink.glicrx.com^ -||applink.groupthera.com^ -||applink.hellobacsi.com^ -||applink.hightail.com^ -||applink.hk01.com^ -||applink.hktester.com^ -||applink.joyrun.com^ -||applink.jurafuchs.de^ -||applink.mojilala.com^ -||applink.moolban.com^ -||applink.mypostcardapp.com^ -||applink.oskar.de^ -||applink.picmasters.de^ -||applink.pleizi.com^ -||applink.pod.io^ -||applink.podimo.com^ -||applink.psychonline.com^ -||applink.qa.tarjetabumeran.com^ -||applink.raaho.in^ -||applink.tarjetabumeran.com^ -||applink.test.jurafuchs.de^ -||applink.whizzl.com^ -||applink.youareaceo.com^ -||applink2.moolban.com^ -||applinks-test.flybuys.com.au^ -||applinks.afriflirt.com^ -||applinks.aventuraapp.com^ -||applinks.bikersnearby.com^ -||applinks.box8.in^ -||applinks.calpool.com^ -||applinks.capitalone.co.uk^ -||applinks.cougarsnearby.com^ -||applinks.cowboysnearby.com^ -||applinks.fliplearn.com^ -||applinks.flybuys.com.au^ -||applinks.hotspot.travel^ -||applinks.laoshi.io^ -||applinks.makemytrip.com^ -||applinks.tarrakki.com^ -||applinks.truckersnearby.com^ -||applinks.xdressr.com^ -||applinks.zerista.com^ -||appredirect.snapdeal.com^ -||apps-test.spectrum-member.com^ -||apps.airmeet.com^ -||apps.ayopop.id^ -||apps.bannerman.com^ -||apps.circle.com^ -||apps.crib.in^ -||apps.daxko-qa.com^ -||apps.daxko.com^ -||apps.ding.jobs^ -||apps.e-butler.com^ -||apps.jeffgalloway.com^ -||apps.myprepaidcenter.com^ -||apps.shakaguide.com^ -||apps.spectrum-member.com^ -||apps.uquote.io^ -||apps.weekendgowhere.sg^ -||apps.wholefoodsmarket.com^ -||apps.zingeroo.com^ -||apptest.gotvive.com^ -||apptest.gwsportsapp.in^ -||apptest.jow.fr^ -||apptest.truveiculos.com^ -||apptracker.torob.com^ -||appuat.intermiles.com^ -||apssdc.epoise.com^ -||apssdctest.epoise.com^ -||ar.interiordefine.com^ -||arch.onjoyri.de^ -||aria.inhaabit.com^ -||art.b.inhaabit.com^ -||ascmart.abphotos.link^ -||ask.wearelistening.co.nz^ -||assistant.dg1.com^ -||atb.mlb.com^ -||athlete.uninterrupted.com^ -||atiteasexam.quantresear.ch^ -||atlantablackstar.black.news^ -||atumanera.burgerking.com.mx^ -||authsmtp.happ.social^ -||avasgtest.branch.rocks^ -||awsexam.quantresear.ch^ -||b.arenum.games^ -||b.check-ins.com.my^ -||b.chme.io^ -||b.discotech.me^ -||b.dl.redcrossblood.org^ -||b.ewd.io^ -||b.getmaintainx.com^ -||b.gett.com^ -||b.home.com.au^ -||b.iheart.southwest.com^ -||b.itravel.southwest.com^ -||b.iwanna.southwest.com^ -||b.lyst.com^ -||b.mail.tabcorp.com.au^ -||b.pickme.lk^ -||b.prod1.youroffers.dominos.ca^ -||b.pscp.live^ -||b.sharechat.com^ -||b.sprucehealth.com^ -||b.staging.thechivery.com^ -||b.tate.it^ -||b.thechive.com^ -||b.thechivery.com^ -||b.todaytix.com^ -||b.vidmob.com^ -||b.whee.ly^ -||b.workhere.com^ -||b.your.rewardsemail.dominos.ca^ -||b.ysh.io^ -||b.zedge.me^ -||b73c.pandasuite.io^ -||baccarat.abzorbagames.com^ -||basket.mondo.link^ -||baton.cuetv.online^ -||battlenet.openapp.link^ -||bb.onjoyri.de^ -||bbanywhere.links.rosieapp.com^ -||bbs.theacademyforconsciousleadership.com^ -||bclicks.lyst.com^ -||bde.beformance.com^ -||bdl.xefyr.com^ -||bdtestsendpulse.branch.rocks^ -||be.slowmographer.co^ -||bears.daigostudio.com^ -||bepartof.wechain.eu^ -||beta-link.liilix.com^ -||betrice.wantsext.me^ -||betterhealthrewards.headuplabs.com^ -||bettermedical-app.hotdoc.com.au^ -||bf35f69f2c6f6bcda64064b1f5b49218.domain.com.au^ -||bfg.loanzify.app^ -||bh-test.groc.press^ -||bh.groc.press^ -||bi.irisdating.com^ -||bint.openapp.link^ -||bio.chups.co^ -||bit.beformance.com^ -||bizlink.dinifi.com^ -||bkstg.flyx.me^ -||bl-test.curatedplanet.com^ -||blackdagger.openapp.link^ -||blackenterprise.black.news^ -||blackjack.abzorbagames.com^ -||blavity.black.news^ -||blink.checkworkrights.com.au^ -||blinks.mindoktor.se^ -||blinks.outcomes4me.com^ -||blinkstest.mindoktor.se^ -||bluecore-email.branch.rocks^ -||bmf.branch.rocks^ -||bn.coupocket.com^ -||bnc-papago.naver.com^ -||bnc.autopass.xyz^ -||bnc.chewchunks.com^ -||bnc.citylink.ro^ -||bnc.cityscope.media^ -||bnc.findlife.com.tw^ -||bnc.luxurysportsrelocation.com^ -||bnc.mksp.io^ -||bnc.oustme.com^ -||bnc.squaretrade.com^ -||bnc.thewaya.com^ -||bnc.tripcody.com^ -||book.londonsoundacademy.com^ -||booking.getwaitnot.com^ -||boss.openapp.link^ -||bot.asksyllable.com^ -||bot.stackbots.com^ -||bot.streaktrivia.com^ -||botb.rtl2.de^ -||bp.mlb.com^ -||bpe.mlb.com^ -||bpeml.mlb.com^ -||br.ac.ebookers.ch^ -||br.ac.ebookers.com^ -||br.ac.ebookers.de^ -||br.ac.ebookers.fi^ -||br.ac.ebookers.fr^ -||br.ac.ebookers.ie^ -||br.ac.mrjet.se^ -||br.ac.orbitz.com^ -||br.ac.travelocity.com^ -||br.ac2.cheaptickets.com^ -||br.backmarket.fr^ -||br.email.lifesum.com^ -||br.eml.walgreens.com^ -||br.inhaabit.com^ -||br.kent.co.in^ -||br.links.kmartphotos.com.au^ -||br.links.kodakmoments.com^ -||br.potato1.influitive.com^ -||br.probablecausesolutions.com^ -||br.sprbl.st^ -||br.uk.beformance.com^ -||bractivacar.eccocar.com^ -||braddumacar.eccocar.com^ -||brainlands.stonefalcon.com^ -||bramerirent.eccocar.com^ -||bran.sightdots.com^ -||branch-4567w2a56q-test.salesfloor.net^ -||branch-4567w2a56q.salesfloor.net^ -||branch-5q8gbnve37.salesfloor.net^ -||branch-areena.yle.fi^ -||branch-c.hipages.com.au^ -||branch-consumer.hipages.com.au^ -||branch-dev.getmaintainx.com^ -||branch-g993dvyzae-test.salesfloor.net^ -||branch-g993dvyzae.salesfloor.net^ -||branch-io.smartr365.com^ -||branch-link.getseated.com^ -||branch-sandbox.thekono.com^ -||branch-sl-qc.trycircle.com^ -||branch-stage.jisp.com^ -||branch-test.locationlabs.com^ -||branch-test.rejuvenan.com^ -||branch-test.step.com^ -||branch-test.tbal.io^ -||branch-titan.rejuvenan.com^ -||branch-tradie.hipages.com.au^ -||branch-uutisvahti.yle.fi^ -||branch-ylefi.yle.fi^ -||branch.365soup.bibsolution.net^ -||branch.agmt.it^ -||branch.appryse.com^ -||branch.att.llabs.io^ -||branch.backbon3.com^ -||branch.bottradionetwork.com^ -||branch.callbridge.rocks^ -||branch.careforth.com^ -||branch.carvana.com^ -||branch.chelseafc.com^ -||branch.clicks.anchor.fm^ -||branch.codepressapp.com^ -||branch.connect.actionnetwork.com^ -||branch.craftsmanrepublic.com^ -||branch.dev.att.llabs.io^ -||branch.devishetty.net^ -||branch.dragonslayertravel.com^ -||branch.dstreet.finance^ -||branch.eccocar.com^ -||branch.employus.com^ -||branch.familybase.vzw.com^ -||branch.frankctan.com^ -||branch.getcredible.io^ -||branch.gosunpro.com^ -||branch.hyr.work^ -||branch.indi.com^ -||branch.kastapp.link^ -||branch.kiddom.co^ -||branch.lacarte.com^ -||branch.learny.co^ -||branch.liketk.it^ -||branch.link.loop.net.nz^ -||branch.livenation.com^ -||branch.locationlabs.com^ -||branch.mapstr.com^ -||branch.myoyster.mx^ -||branch.mypixie.co^ -||branch.nc.mails.sssports.com^ -||branch.olamoney.com^ -||branch.oneroof.co.nz^ -||branch.oraleye.com^ -||branch.parkingpanda.com^ -||branch.pgatour-mail.com^ -||branch.quantic.edu^ -||branch.rejuvenan.com^ -||branch.release.winfooz.com^ -||branch.reserveout.com^ -||branch.rockmyrun.com^ -||branch.servingchefs.com^ -||branch.seshfitnessapp.com^ -||branch.shoprunner.com^ -||branch.shuruapp.com^ -||branch.socar.kr^ -||branch.spaceback.me^ -||branch.step.com^ -||branch.supportgenie.io^ -||branch.t.slac.com^ -||branch.tadatada.com^ -||branch.tbal.io^ -||branch.thekono.com^ -||branch.threepiece.com^ -||branch.totalbrain.com^ -||branch.trevo.my^ -||branch.tripcody.com^ -||branch.uat.bfsgodirect.com^ -||branch.udl.io^ -||branch.vcf-test.vzw.dev.llabs.io^ -||branch.vsco.ninja^ -||branch.wallet.bitcoin.com^ -||branch.wawa.com^ -||branch.weeblme.com^ -||branch.wellsitenavigator.com^ -||branch.whatsnxt.app^ -||branch.xoxloveheart.com^ -||branch2.udl.io^ -||branchct.ncapp04.com^ -||branchcust.zulln.se^ -||branchio.hipages.com.au^ -||branchio.rsvp.com.au^ -||branchio.services.evaneos.com^ -||branchio.taxibeat.com^ -||branchioth.thehindu.co.in^ -||branchlink.adobespark.com^ -||branchlink.tripcody.com^ -||branchtest.cocoon.today^ -||branchtest.uk.puma.com^ -||branchtest.veryableops.com^ -||branchtest.whataburger.com^ -||branchtrk.lendingtree.com^ -||brands.picklebutnotcucumber.com^ -||bravantrent.eccocar.com^ -||brbristoltruckrentals.eccocar.com^ -||brc.aigrammar.net^ -||brc.emails.rakuten.com^ -||brc.englishdict.cc^ -||brc.englishtimes.cc^ -||brc.hellotalk.com^ -||brc.languageclass.cc^ -||brc2.aigrammar.net^ -||brcargreen.eccocar.com^ -||brcicar.eccocar.com^ -||brclickrent.eccocar.com^ -||brcrx.eccocar.com^ -||brdriveonrental.eccocar.com^ -||breasycarrental.eccocar.com^ -||brespark.eccocar.com^ -||brevnet.eccocar.com^ -||brfeneval.eccocar.com^ -||brfree2move.eccocar.com^ -||brgoazen.eccocar.com^ -||brgroupeollandini.eccocar.com^ -||brhellorentacar.eccocar.com^ -||brhimobility.eccocar.com^ -||brice-test.nawar.io^ -||brinstascooter.eccocar.com^ -||brioscoot.eccocar.com^ -||brldassustitucion.eccocar.com^ -||brlesrochesmarbella.eccocar.com^ -||brlikecarsharing.eccocar.com^ -||brllanesrentacar.eccocar.com^ -||brmbrenting.eccocar.com^ -||brmexrentacar.eccocar.com^ -||brmocean.eccocar.com^ -||brmoter.eccocar.com^ -||brmov.eccocar.com^ -||brmuvif.eccocar.com^ -||brmuvon.eccocar.com^ -||brnc.seidecor.com.br^ -||bronxvanilla.openapp.link^ -||brooklynway.openapp.link^ -||brpayless.eccocar.com^ -||brquazzar.eccocar.com^ -||brquikly.eccocar.com^ -||brrecordgo.eccocar.com^ -||brrentalservicefinland.eccocar.com^ -||brrhgrocarsharing.eccocar.com^ -||brshareandrent.eccocar.com^ -||brsmovecity.eccocar.com^ -||brsolenelocation.eccocar.com^ -||brtelefurgo.eccocar.com^ -||brtimove.eccocar.com^ -||brtimovesharing.eccocar.com^ -||brtrack.rummypassion.com^ -||brugocarz.eccocar.com^ -||brvallsrentacar.eccocar.com^ -||brvelocity.eccocar.com^ -||brwanacars.eccocar.com^ -||brwerental.eccocar.com^ -||bryurent.eccocar.com^ -||btn.listonic.com^ -||btn.rtl2.de^ -||build.1tap.tax^ -||bulgaria.openapp.link^ -||bulgariarestaurant.openapp.link^ -||buonasera.openapp.link^ -||buoypinger-app.sapsailing.com^ -||business.crib.in^ -||business.face2.io^ -||buyer.okiela.com^ -||c-t.topya.com^ -||c.aquaservice.com^ -||c.autozen.tv^ -||c.ixi.to^ -||c.lolamarket.com^ -||c.refun.do^ -||c.stext.id^ -||c.topya.com^ -||c.vcty.co^ -||c.werally.com^ -||c4c9.pandasuite.io^ -||c6lc.pandasuite.io^ -||c917.pandasuite.io^ -||ca.macheq.com^ -||caapp.levi.com^ -||campaigns.impactive.io^ -||campaigns.outvote.io^ -||card.getgifted.com^ -||card.pingpro.com^ -||careerconnect.epoise.com^ -||cartoon.hardalist.com^ -||cattell.loanzify.app^ -||cclink.carfax.com^ -||cdanjoyner4374.myre.io^ -||cdl.booksy.com^ -||cdl.lvsafe.io^ -||cdl2.booksy.com^ -||cfaexam.quantresear.ch^ -||cfb.8it.me^ -||chef.getmenoo.com^ -||chef.newtrina.com^ -||chelsea.clicks.hqo.co^ -||circle.pandasuite.io^ -||citizenship.quantresear.ch^ -||cl.inhaabit.com^ -||clevertapsendgrid.branch.rocks^ -||click-staging.food.mercato.com^ -||click-staging.getdreams.co^ -||click-testing.moselo.com^ -||click.aaptiv.com^ -||click.bible.com^ -||click.bitesquad.com^ -||click.blueapron.com^ -||click.carousell.com^ -||click.community.carousell.com^ -||click.depop.com^ -||click.devemails.skechers.com^ -||click.dice.com^ -||click.drizly.com^ -||click.e.affirm.com^ -||click.e.progressive.com^ -||click.e.tdbank.com^ -||click.em.soothe.com^ -||click.email.houndapp.com^ -||click.email.soundhound.com^ -||click.emails.creditonebank.com^ -||click.favordelivery.com^ -||click.food.mercato.com^ -||click.glamsquad.com^ -||click.instacartemail.com^ -||click.mail.carousell.com^ -||click.mail.thecarousell.com^ -||click.mail.theknot.com^ -||click.marketing.carousell.com^ -||click.moselo.com^ -||click.pockee.com^ -||click.redditmail.com^ -||click.signaturemarket.co^ -||click.sutra.co^ -||click.totallymoney.com^ -||click.transactional.carousell.com^ -||click.trycaviar.com^ -||click.trycobble.com^ -||click1.e.audacy.com^ -||click1.e.radio.com^ -||click1.email-postup.branch.rocks^ -||click1.email.audacy.com^ -||click2.email.ticketmaster.com^ -||clicked.ebates.com^ -||clicks.6thstreet.com^ -||clicks.burgerking.co.uk^ -||clicks.drizly.com^ -||clicks.email.shakeshack.com^ -||clicks.equinoxplus.com^ -||clicks.exploreshackle.app^ -||clicks.flaming.burger-king.ch^ -||clicks.food.mercato.com^ -||clicks.kfc.co.uk^ -||clicks.kfc.fr^ -||clicks.lifesum.com^ -||clicks.metronautapp.com^ -||clicks.point.app^ -||clicks.rallyrd.com^ -||clicks.shakeshack.com^ -||clicks.staging.worldremit.com^ -||clicks.thehive.hqo.co^ -||clicks.tunein.com^ -||clicks.variis.com^ -||clicks2.hqo.co^ -||clients.belairdirect.com^ -||clients.intact.ca^ -||clients.nbc-insurance.ca^ -||clk.mindfulsuite.com^ -||cltr.irlmail.org^ -||cmflinks.provesio.com^ -||cn1.stadiumgoods.com^ -||cn2.stadiumgoods.com^ -||cname.pebmed.com.br^ -||collect.ezidox.com^ -||colors.chamoji.com^ -||community.keeperz.app^ -||connect.goziohealth.com^ -||connect.huru.ai^ -||connect.im8.net^ -||connect.pixellot.link^ -||connectmychart.goziohealth.com^ -||content.booksplusapp.com^ -||content.mini.pix.style^ -||content.pix.style^ -||content.stage.mini.pix.style^ -||content.yole365.com^ -||content.youmiam.com^ -||contractor-app.buildforce.com^ -||converge.headuplabs.com^ -||cooking-app.lkk.com^ -||cp.rootielearning.com^ -||cq.hq1.influitive.com^ -||crepemania.openapp.link^ -||crew-qa.zubie.com^ -||crew.spektare.tv^ -||crew.zubie.com^ -||crrm.onjoyri.de^ -||crypto.egghead.link^ -||cscsexam.quantresear.ch^ -||ct-dev.taskhuman.com^ -||ct.irl.co^ -||ct.irl.com^ -||ct.irlmail.org^ -||ct.taskhuman.com^ -||ctd.drivescore.com^ -||cttest.branch.rocks^ -||cucaido.abphotos.link^ -||culture.pandasuite.io^ -||custom.tonyle.co^ -||customer.libertycarz.com^ -||cz-anag.m-shop.me^ -||cz-babynabytek.m-shop.me^ -||cz-babyplaza.m-shop.me^ -||cz-batteryimport.m-shop.me^ -||cz-cassidi.m-shop.me^ -||cz-countrylife.m-shop.me^ -||cz-efitness.m-shop.me^ -||cz-fightstore.m-shop.me^ -||cz-fitness007.m-shop.me^ -||cz-grafficon.m-shop.me^ -||cz-joealex.m-shop.me^ -||cz-laznejupiter.m-shop.me^ -||cz-myhealth.m-shop.me^ -||cz-newbag.m-shop.me^ -||cz-nobilistilia.m-shop.me^ -||cz-originalstore.m-shop.me^ -||cz-rekant.m-shop.me^ -||cz-rychleleky.m-shop.me^ -||cz-sasoo.m-shop.me^ -||cz-scootshop.m-shop.me^ -||cz-styx.m-shop.me^ -||cz-tattoomania.m-shop.me^ -||cz-topalkohol.m-shop.me^ -||cz-topgal.m-shop.me^ -||cz-trenyrkarna.m-shop.me^ -||cz-tropicliberec.m-shop.me^ -||cz-velkykosik.m-shop.me^ -||d-app.progressive.com^ -||d-snapshotapp.progressive.com^ -||d-staging.groc.press^ -||d.cybtel.com^ -||d.delahorro.app^ -||d.groc.press^ -||d.jugnoo.in^ -||d.mail.levi.com^ -||d.shopprecouriers.com^ -||d.stay-app.com^ -||d.whoscall.com^ -||d.xapcard.com^ -||d6ek.pandasuite.io^ -||dart.onjoyri.de^ -||dashboardbntest.branchcustom.xyz^ -||dba4.pandasuite.io^ -||ddlbr.timesclub.co^ -||de-metalshop.m-shop.me^ -||dealfastfood.openapp.link^ -||debug-inform.liilix.com^ -||debug-r.rover.com^ -||deep.mimizoo.dev^ -||deep.mlmtool.in^ -||deep.plant.chat^ -||deep.souk.com.br^ -||deeplink-app.olympia.nl^ -||deeplink-staging.tops.co.th^ -||deeplink.alpha.aspiration.com^ -||deeplink.api-sandbox.notarycam.com^ -||deeplink.app.notarycam.com^ -||deeplink.aspiration.com^ -||deeplink.autotrader.com.au^ -||deeplink.dashnow.my^ -||deeplink.estheticon.com^ -||deeplink.gocover.co.za^ -||deeplink.goodmeasures.com^ -||deeplink.instacartemail.com^ -||deeplink.intelligence.weforum.org^ -||deeplink.lamsaworld.com^ -||deeplink.locokids.cn^ -||deeplink.mobile360.io^ -||deeplink.newsandbox.notarycam.com^ -||deeplink.oxstreet.com^ -||deeplink.ring.md^ -||deeplink.supergreat.com^ -||deeplink.tytod.com^ -||deeplink.wagr.ai^ -||deeplink.wbnc.99array.com^ -||deeplink.winespectator.com^ -||deeplink.xeropan.com^ -||deeplinkdev.upoker.net^ -||deeplinks.amex.dynamify.com^ -||deeplinks.breaz.dynamify.com^ -||deeplinks.efeed.dynamify.com^ -||deeplinks.everyday.dynamify.com^ -||deeplinks.mindtickle.com^ -||deeplinks.myyogateacher.com^ -||deeplinks.pebblebee.com^ -||deeplinks.twelve.dynamify.com^ -||deeplinktest.yooture.info^ -||deeplinkuat.upoker.net^ -||delete-me-2.branchcustom.xyz^ -||delete-me.branchcustom.xyz^ -||delikoko.openapp.link^ -||delivery.email-pepipost.branch.rocks^ -||delivery.marketing.boutiqaat.com^ -||demo.gomi.do^ -||demojobsapp.epoise.com^ -||denver.thexlife.co^ -||descarga.veikul.com^ -||descargar.billeteramango.com^ -||descargar.telocompro.com.bo^ -||dev-app.insprd.co^ -||dev-business.stc.com.sa^ -||dev-deeplink.bigrichstore.com^ -||dev-dl.oneworldonesai.com^ -||dev-get.unhedged.com.au^ -||dev-get.wysa.uk^ -||dev-link.aira.io^ -||dev-link.getprizepool.com^ -||dev-link.myoptimity.com^ -||dev-share.beaconlearningapp.com^ -||dev-share.haloedapp.com^ -||dev-share.smartfashion.ai^ -||dev.getcontact.me^ -||dev.getemoji.me^ -||dev.gldn.io^ -||dev.go.levelbank.com^ -||dev.gomi.do^ -||dev.got-it.link^ -||dev.me.thequad.com^ -||dev.smartrbuyer.com^ -||dev.sswt.co^ -||development.me.thequad.com^ -||devlink.saganworks.com^ -||devlink.sprive.com^ -||devlink.thebpr.com^ -||devlinks.slicepay.in^ -||devtest.app-birdy.com^ -||devtest.cocoon.today^ -||dgd.okiela.com^ -||digicard.jollyhires.com^ -||digital.acutx.org^ -||dinocraft-test.animocabrands.com^ -||dinocraft.animocabrands.com^ -||direct.diarymuslim.com^ -||directions.mdanderson.org^ -||distiller.kano.link^ -||dl-dev.tablelist.com^ -||dl-dev.tytocare.com^ -||dl-qa.flipagram.com^ -||dl-qa.nonton.99array.com^ -||dl-stage.6tst.com^ -||dl-stage.zola.com^ -||dl-test.4buy.net^ -||dl-test.boutiqat.com^ -||dl-test.furni-shop.com^ -||dl-test.hadaaya.com^ -||dl-test.myathath.com^ -||dl-test.rivafashion.com^ -||dl.4buy.net^ -||dl.6thstreet.com^ -||dl.amazonmusic.com^ -||dl.autopay.eu^ -||dl.benefits.express-scripts.com^ -||dl.bimbaylola.com^ -||dl.booksy.com^ -||dl.boutiqaat.com^ -||dl.buildsafe.se^ -||dl.caavo.com^ -||dl.connectedboat.eu^ -||dl.correspondence.evernorth.com^ -||dl.dinngo.co^ -||dl.elaw.om^ -||dl.flipagram.com^ -||dl.flipkartwholesale.com^ -||dl.getdrivemark.com^ -||dl.grip.events^ -||dl.hadaaya.com^ -||dl.health-programs.express-scripts.com^ -||dl.klinq.com^ -||dl.mail.accredo.com^ -||dl.mail.express-scripts.com^ -||dl.manscore.com^ -||dl.nalbes.com^ -||dl.nekropol-khv.ru^ -||dl.oneworldonesai.com^ -||dl.orders.accredo.com^ -||dl.orders.express-scripts.com^ -||dl.popclub.co.in^ -||dl.purplle.com^ -||dl.right2vote.in^ -||dl.rivafashion.com^ -||dl.shopwell.com^ -||dl.tablelist.com^ -||dl.thebeat.co^ -||dl.tytocare.com^ -||dl.wooribank.com.kh^ -||dl.workindia.in^ -||dl.zola.com^ -||dl2.brandatt.com^ -||dldev.wooribank.com.kh^ -||dlh1.hilton.com^ -||dlink-staging.blueapron.com^ -||dlink.blueapron.com^ -||dlink.hsdyn.com^ -||dlink.upperinc.com^ -||dlp.egghead.link^ -||dls.guidrr.com^ -||dluat.pokerbros.net^ -||dluat.supremapoker.net^ -||do.exaai.chat^ -||do.usefireside.com^ -||domainbntest.branchcustom.xyz^ -||domino.flycl.ps^ -||download-staging.planify.io^ -||download.backpackergame.com^ -||download.bonnti.com^ -||download.coinseed.co^ -||download.connectie.com^ -||download.dackinc.com^ -||download.frolit.io^ -||download.getneema.com^ -||download.gravitus.com^ -||download.headhelp.io^ -||download.helponymous.com^ -||download.ibuzza.net^ -||download.innit.com^ -||download.joingofree.com^ -||download.kesh5.co.il^ -||download.kuailefun.com^ -||download.milkpot.com^ -||download.parkunload.com^ -||download.planify.io^ -||download.poolking.in^ -||download.quizdom.com^ -||download.quizdom.gr^ -||download.sendstack.africa^ -||download.sharexpere.com^ -||download.shiftsmart.com^ -||download.spotangels.com^ -||download.supercoating.com.hk^ -||download.wearelistening.co.nz^ -||download.withu.fit^ -||download.yuehlia.com^ -||download.zikirapp.com^ -||dp.tuex.ca^ -||drive.carpoollogistics.com^ -||drive.waitrapp.com^ -||driver.dctaxi.com^ -||driver.jugnoo.in^ -||e.e.themighty.com^ -||e.mail.levi.com^ -||e.shop.app^ -||e.synchronybank.com^ -||e.vcty.co^ -||e035.pandasuite.io^ -||e246.pandasuite.io^ -||e403.pandasuite.io^ -||eat.newtrina.com^ -||ebony.black.news^ -||edu.quizdom.gr^ -||educationlink.clear360.com^ -||ee93.pandasuite.io^ -||ef71.pandasuite.io^ -||elgreco.openapp.link^ -||elijah.tantawy.app^ -||elinks.dice.com^ -||em.getsimpleprints.com^ -||em.touchtunes.com^ -||em6802.musesapp.com^ -||email-activecampaign.branch.rocks^ -||email-activecampaign.keylyst.com^ -||email-adobe.branch.rocks^ -||email-appboy.branch.rocks^ -||email-betaout.branch.rocks^ -||email-bronto-stage.branch.rocks^ -||email-bronto.branch.rocks^ -||email-bss-new.branch.rocks^ -||email-campmon.branch.rocks^ -||email-cheetahmail.branch.rocks^ -||email-click-test-for-branch.vts.com^ -||email-clicks.vts.com^ -||email-cm.branch.rocks^ -||email-cordial.branch.rocks^ -||email-eloqua.branch.rocks^ -||email-emarsys.branch.rocks^ -||email-epsilon.branch.rocks^ -||email-full-sailthru.branch.rocks^ -||email-hubspot.branch.rocks^ -||email-icubespro.branch.rocks^ -||email-insider.branch.rocks^ -||email-iterable.branch.rocks^ -||email-klaviyo.branch.rocks^ -||email-link.mg-staging.surkus.com^ -||email-link.mg.surkus.com^ -||email-listrak.branch.rocks^ -||email-mailjet.branch.rocks^ -||email-mailup.branch.rocks^ -||email-mandrill.branch.rocks^ -||email-mandrill.id90travel.com^ -||email-marketo.branch.rocks^ -||email-messagegears.branch.rocks^ -||email-moengage.branch.rocks^ -||email-rapidmail.branch.rocks^ -||email-sailthru.branch.io^ -||email-selligent.branch.rocks^ -||email-sender.branch.rocks^ -||email-sendgrid.branch.rocks^ -||email-simple-sailthru.branch.rocks^ -||email-smartech.branch.rocks^ -||email-sp.branch.rocks^ -||email-staging.goodrx.com^ -||email-test.dmcperforma.com.br^ -||email-test.wirexapp.com^ -||email-vero.branch.rocks^ -||email-yesmail.branch.rocks^ -||email.agfuse.com^ -||email.app.theiconic.com.au^ -||email.branch.ninomail.com^ -||email.branchio.mg.kreezee.com^ -||email.chope.co^ -||email.clearscore.ca^ -||email.clearscore.co.za^ -||email.clearscore.com.au^ -||email.clearscore.com^ -||email.customerio.branch.rocks^ -||email.dev.mypopshop.app^ -||email.devishetty.com^ -||email.email-cusomerio.branch.rocks^ -||email.everyonesocial.apptio.com^ -||email.everyonesocial.bostonscientific.com^ -||email.everyonesocial.circle.com^ -||email.everyonesocial.colt.net^ -||email.everyonesocial.coupa.com^ -||email.everyonesocial.dykema.com^ -||email.everyonesocial.frontier.com^ -||email.everyonesocial.gumgum.com^ -||email.everyonesocial.hmausa.com^ -||email.everyonesocial.indeed.com^ -||email.everyonesocial.inmoment.com^ -||email.everyonesocial.integritystaffing.com^ -||email.everyonesocial.lexisnexisrisk.com^ -||email.everyonesocial.lumen.com^ -||email.everyonesocial.merckgroup.com^ -||email.everyonesocial.neat.no^ -||email.everyonesocial.ni.com^ -||email.everyonesocial.notarize.com^ -||email.everyonesocial.nuskin.com^ -||email.everyonesocial.rubrik.com^ -||email.everyonesocial.united.com^ -||email.everyonesocial.unity.com^ -||email.floatme.io^ -||email.fretello.com^ -||email.goodrx.com^ -||email.happ.social^ -||email.headsuphealth.com^ -||email.inteng-testing.com^ -||email.link.flipgive.com^ -||email.luminpdf.com^ -||email.mail.floatme.io^ -||email.member.theknot.com^ -||email.mg.everyonesocial.com^ -||email.mg.repuzzlic.com^ -||email.mg.test.everyonesocial.com^ -||email.msg.navyfederal.org^ -||email.msg.workday.com^ -||email.mypopshop.app^ -||email.pac-12.com^ -||email.pray.com^ -||email.qa.member.theknot.com^ -||email.reflectlyapp.com^ -||email.rentomojo.in^ -||email.rentomojo.org^ -||email.rentomojomailer.com^ -||email.shouta.co^ -||email.social.avasecurity.com^ -||email.social.f5.com^ -||email.social.qualtrics.com^ -||email.staging-link.flipgive.com^ -||email.strava.com^ -||email.thislife.com^ -||email.wingocard.com^ -||email.wirexapp.com^ -||email1.strava.com^ -||emailct.enfavr.com^ -||emailer45.clovinfo.com^ -||emails.ahctv.com^ -||emails.animalplanet.com^ -||emails.app.allcal.com^ -||emails.cookingchanneltv.com^ -||emails.destinationamerica.com^ -||emails.discoverygo.com^ -||emails.discoverylife.com^ -||emails.foodnetwork.com^ -||emails.hgtv.com^ -||emails.investigationdiscovery.com^ -||emails.motortrend.com^ -||emails.sciencechannel.com^ -||emails.shopupp.com^ -||emails.tlc.com^ -||emails.travelchannel.com^ -||emails.verishop.com^ -||emails.watchown.tv^ -||emb.soothe.com^ -||emlink.hermo.my^ -||emm.ca.puma.com^ -||emm.us.puma.com^ -||emsexam.quantresear.ch^ -||encuestas.billeteramango.com^ -||enroll.workforcewellness.com^ -||epoisejobs.epoise.com^ -||epoisepreptest.epoise.com^ -||espaniapizza.openapp.link^ -||espressoroom.openapp.link^ -||eu.gldn.io^ -||euapp.levi.com^ -||eureka-app.eurekaplatform.org^ -||event.spektare.com^ -||eventos.emkt.ingressorapido.com.br^ -||exchange.happ.social^ -||eximius.epoise.com^ -||exitachieve.myre.io^ -||expertsender.branch.rocks^ -||exprealty377.myre.io^ -||f.a23.in^ -||f928.pandasuite.io^ -||face2.ishoppingapp.com^ -||familydoctor-app.hotdoc.com.au^ -||familypractice-app.hotdoc.com.au^ -||fast.icars.cc^ -||fb.echovisuals.com^ -||feedback.campbellmetal.com^ -||feedback.imsmetals.com^ -||feedme.use-beez.com^ -||fetch.gethuan.com^ -||ff.pdf.ac^ -||fight.offtherecord.com^ -||fishing.daigostudio.com^ -||fleet-eml.postmates.com^ -||foodsouvlakibar.openapp.link^ -||fraudandcyberawareness.safeguard.hsbc.com^ -||friends.hyll.com^ -||fscareers.epoise.com^ -||fscareerstest.epoise.com^ -||ft.groc.press^ -||ftp.happ.social^ -||fullerton-app.hotdoc.com.au^ -||furnituredl.istaging.co^ -||fut.mondo.link^ -||g.getsimpler.me^ -||g.pathsha.re^ -||g.staging.pathsha.re^ -||g2048.rgluk.com^ -||g993dvyzae.branch.salesfloor.net^ -||ga.groc.press^ -||gallerysouvlakeri.openapp.link^ -||gawayez.e-postserv.com^ -||gb-asymbo.m-shop.me^ -||gear.echovisuals.com^ -||get-beta.kabbee.com^ -||get-dev.mastersapp.com^ -||get-lor.tacter.app^ -||get-stage.petdesk.com^ -||get-staging.even.com^ -||get-staging.iynk.com^ -||get-staging.soloyal.co^ -||get-test-employer.switchapp.com^ -||get-test.avakin.com^ -||get-test.livekick.com^ -||get-test.switchapp.com^ -||get.1tap.build^ -||get.1tap.io^ -||get.air-measure.com^ -||get.aivatar.co^ -||get.akim.bo^ -||get.amity.io^ -||get.atakama.com^ -||get.avakin.com^ -||get.babyalbum.com^ -||get.bambinoapp.com^ -||get.basicprint.co^ -||get.betheshyft.com^ -||get.biblechat.ai^ -||get.bigideas.club^ -||get.bizly.co^ -||get.buzzwallet.io^ -||get.call-levels.com^ -||get.catch.co^ -||get.cheapshot.co^ -||get.cityworthapp.com^ -||get.codehub.ninja^ -||get.conciergecare.app^ -||get.cryptocontrol.io^ -||get.dctaxi.com^ -||get.deplike.com^ -||get.emma-app.com^ -||get.endur.app^ -||get.even.com^ -||get.firstline.org^ -||get.flareapp.co^ -||get.found.app^ -||get.fudigo.com^ -||get.fullcourt.io^ -||get.getblood.com^ -||get.helloheart.com^ -||get.hiya.com^ -||get.homemealdeal.com^ -||get.howdy.co^ -||get.hugoapp.com^ -||get.ingomoney.com^ -||get.instalocum.com^ -||get.jan.ai^ -||get.jaranda.kr^ -||get.kabbee.com^ -||get.layer.com^ -||get.livekick.com^ -||get.loanzify.com^ -||get.lookout.com^ -||get.loopmobility.co^ -||get.lu.gg^ -||get.mastersapp.com^ -||get.medifi.com^ -||get.megastarfinancial.com^ -||get.miso.kr^ -||get.mistplay.com^ -||get.mndbdy.ly^ -||get.mojo.sport^ -||get.muchbetter.com^ -||get.myoyster.mx^ -||get.nala.money^ -||get.nfit.club^ -||get.noknok.co^ -||get.noonlight.com^ -||get.oneatwork.app^ -||get.openph.one^ -||get.peoople.app^ -||get.peoople.co^ -||get.plural.com^ -||get.pockit.com^ -||get.prapo.com^ -||get.printt.com^ -||get.printtapp.com^ -||get.prismapp.com^ -||get.pslove.com^ -||get.pslove.dev^ -||get.pulsega.me^ -||get.qapital.com^ -||get.recolor.info^ -||get.revolut.com^ -||get.reward.me^ -||get.riyazapp.com^ -||get.roomiapp.com^ -||get.sakay.ph^ -||get.schoolbuddy.app^ -||get.seedly.sg^ -||get.sidekick.health^ -||get.smart-guide.org^ -||get.snapask.com^ -||get.soloyal.co^ -||get.somontreal.ca^ -||get.speaky.com^ -||get.spenn.com^ -||get.spot.so^ -||get.staging.tellusapp.com^ -||get.starguide.app^ -||get.stationhead.com^ -||get.switchapp.com^ -||get.telexa.mn^ -||get.tellusapp.com^ -||get.thesmartapp.me^ -||get.toffapp.co^ -||get.tunableapp.com^ -||get.tunity.com^ -||get.utelly.com^ -||get.venmo.com^ -||get.vent.co^ -||get.vero.co^ -||get.vida.co^ -||get.videokits.com^ -||get.viggo.com^ -||get.viggo.energy^ -||get.watchcat.app^ -||get.wawa.games^ -||get.weme.sh^ -||get.wemoms.com^ -||get.wishmindr.com^ -||get.wyndy.com^ -||get.wysa.uk^ -||get.yellw.co^ -||get.yugengamers.com^ -||getapp.eltiempo.es^ -||getapp.joinleaf.com^ -||getapp.keepy.me^ -||getapp.marinemax.com^ -||getapp.myhappyforce.com^ -||getapp.priceza.com^ -||getdev.payso.ca^ -||getl4w.lookout.com^ -||gets.myoyster.mx^ -||gettunable.affinityblue.com^ -||geystikigonia.openapp.link^ -||gh.vsee.me^ -||ghd.vsee.me^ -||gi.inhaabit.com^ -||go-dev.callersmart.com^ -||go-dev.qantaswellbeing.com^ -||go-staging.qantaswellbeing.com^ -||go-test.bigspring.io^ -||go-test.goflux.de^ -||go-test.homepass.com^ -||go-test.karos.fr^ -||go-test.string.me^ -||go-test.tamed.fdm.dk^ -||go-test.wondavr.com^ -||go-uat.qantaswellbeing.com^ -||go.17app.co^ -||go.4010.ru^ -||go.4sq.com^ -||go.aero.com^ -||go.alpha.avant.com^ -||go.alphaapp.sharekey.com^ -||go.anifox.net^ -||go.app.sharekey.com^ -||go.asian.mingle.com^ -||go.askbee.my^ -||go.audacy.com^ -||go.augin.app^ -||go.aussie.mingle.com^ -||go.aussiesocial.innovatedating.com^ -||go.aussingles.ignite.technology^ -||go.avant.com^ -||go.backtest.io^ -||go.betql.co^ -||go.bigo.tv^ -||go.bilt.page^ -||go.blackppl.innovatedating.com^ -||go.bluecrewjobs.com^ -||go.bookmate.com^ -||go.booksy.com^ -||go.bouncie.com^ -||go.boxtiq.com^ -||go.brazil.innovatedating.com^ -||go.bro.social^ -||go.callersmart.com^ -||go.calo.app^ -||go.cardless.com^ -||go.cb-w.com^ -||go.channel.io^ -||go.checkncall.com^ -||go.cheerz.com^ -||go.chile.innovatedating.com^ -||go.china.innovatedating.com^ -||go.christsingles.mingle.com^ -||go.citizen.com^ -||go.clickipo.com^ -||go.colombia.innovatedating.com^ -||go.covoitici.fr^ -||go.cwtv.com^ -||go.dateinasia.innovatedating.com^ -||go.datingapp.mingle.com^ -||go.dev.hbnb.io^ -||go.dev.upnext.in^ -||go.devapp.sharekey.com^ -||go.develapme.com^ -||go.dgsta.com^ -||go.divorced.ignite.technology^ -||go.dngn.kr^ -||go.dreamgaragealabama.com^ -||go.driveclutch.com^ -||go.drivemyfreedom.com^ -||go.drivencarsallaccess.ca^ -||go.dubbi.com.br^ -||go.dutchbros.link^ -||go.ebat.es^ -||go.ebates.ca^ -||go.egypt.innovatedating.com^ -||go.emails.discoveryplus.com^ -||go.europe.mingle.com^ -||go.everfave.com^ -||go.ezidox.com^ -||go.faithfollow.com^ -||go.fem.mingle.com^ -||go.fiestabites.com^ -||go.filipinocupid.date^ -||go.filipinosingles.ignite.technology^ -||go.findaplayer.com^ -||go.findplay.it^ -||go.fitfusion.com^ -||go.flexwheels.com^ -||go.flipauto.com^ -||go.flipfit.com^ -||go.flyreel.co^ -||go.france.innovatedating.com^ -||go.freework.com^ -||go.frescofrigo.app^ -||go.frip.kr^ -||go.futupilot.com^ -||go.fyndi.ng^ -||go.gaia.com^ -||go.gaydate.ignite.technology^ -||go.gaysingles.ignite.technology^ -||go.germansingles.ignite.technology^ -||go.germany.innovatedating.com^ -||go.getcyclique.com^ -||go.getone.today^ -||go.ginmon.de^ -||go.gridwise.io^ -||go.hbnb.io^ -||go.hcmuaf.edu.vn^ -||go.heleman.org^ -||go.heybianca.co^ -||go.heyho.my^ -||go.holidayextras.co.uk^ -||go.homear.io^ -||go.homepass.com^ -||go.hongkong.innovatedating.com^ -||go.hongkongcupid.date^ -||go.huterra.com^ -||go.ibi.bo^ -||go.indo.innovatedating.com^ -||go.indonesiacupid.co^ -||go.insight.tv^ -||go.iran.innovatedating.com^ -||go.israel.innovatedating.com^ -||go.italy.innovatedating.com^ -||go.italysingles.ignite.technology^ -||go.japan.ignite.technology^ -||go.japan.innovatedating.com^ -||go.jillianmichaels.com^ -||go.jobtoday.com^ -||go.jsh.mingle.com^ -||go.justarrivd.com^ -||go.karos.fr^ -||go.kasa.co.kr^ -||go.keenvibe.com^ -||go.keenvibe.de^ -||go.korea.innovatedating.com^ -||go.koreacupid.co^ -||go.koreasingles.ignite.technology^ -||go.kvrma.net^ -||go.labonneadresse.ouest-france.fr^ -||go.lamour.ignite.technology^ -||go.lanemove.com^ -||go.latin.mingle.com^ -||go.latincupid.date^ -||go.lawly.app^ -||go.lbb.in^ -||go.leaf.fm^ -||go.lejour.com.br^ -||go.letspepapp.com^ -||go.lexuscompletesubscription.com^ -||go.lezsingles.ignite.technology^ -||go.list-it.ai^ -||go.llapac.com^ -||go.locosonic.com^ -||go.lukat.me^ -||go.lunchr.co^ -||go.majelan.com^ -||go.makwajy.com^ -||go.malay.innovatedating.com^ -||go.malaysiacupid.co^ -||go.malaysingles.ignite.technology^ -||go.mapstr.com^ -||go.mashable.com^ -||go.medicall.cc^ -||go.mercedesbenzsouthorlando.com^ -||go.merqueo.com^ -||go.mexicancupid.date^ -||go.mexico.innovatedating.com^ -||go.mindfi.co^ -||go.moka.ai^ -||go.muglife.com^ -||go.muslim.mingle.com^ -||go.muzz.com^ -||go.myfave.com^ -||go.mylike-app.com^ -||go.mytwc.com.au^ -||go.naratourapp.com^ -||go.netherlands.innovatedating.com^ -||go.noondate.com^ -||go.norway.innovatedating.com^ -||go.ondutydoc.com^ -||go.onecart.co.za^ -||go.onefc.com^ -||go.ortholive.com^ -||go.palpita.net^ -||go.panda-click.com^ -||go.panda.sa^ -||go.parents.mingle.com^ -||go.peak.net^ -||go.petmire.com^ -||go.piccolo.mobi^ -||go.picsart.com^ -||go.pinoy.innovatedating.com^ -||go.playbackbone.com^ -||go.player2app.com^ -||go.poland.innovatedating.com^ -||go.polen-app.com^ -||go.porschedrive.com^ -||go.porscheparkingplus.com^ -||go.portfoliobyopenroad.com^ -||go.portugal.innovatedating.com^ -||go.power.trade^ -||go.powunity.com^ -||go.prealpha.avant.com^ -||go.prodapp.sharekey.com^ -||go.pubu.tw^ -||go.qantaswellbeing.com^ -||go.queer.ignite.technology^ -||go.rakuten.com^ -||go.rate.sh^ -||go.ratengoods.com^ -||go.real.co^ -||go.russia.innovatedating.com^ -||go.rzr.to^ -||go.saudiarabia.innovatedating.com^ -||go.seniorppl.mingle.com^ -||go.shokshak.com^ -||go.shop.app^ -||go.shoppremiumoutlets.com^ -||go.sirved.com^ -||go.skippy.ai^ -||go.smartjobr.com^ -||go.snipsnap.it^ -||go.socar.kr^ -||go.socar.my^ -||go.socialvenu.com^ -||go.southafrica.ignite.technology^ -||go.southafrica.innovatedating.com^ -||go.southafricacupid.co^ -||go.spain.innovatedating.com^ -||go.spot.com^ -||go.stagger.co^ -||go.staging.hbnb.io^ -||go.steps.me^ -||go.stgapp.sharekey.com^ -||go.streetbees.app^ -||go.stshr.co^ -||go.subaru-justdrive.com^ -||go.subscribe.mikealbert.com^ -||go.suiste.app^ -||go.sw.iftly.in^ -||go.sweet.io^ -||go.switzerland.innovatedating.com^ -||go.tab.com.au^ -||go.tamed.fdm.dk^ -||go.teepic.com^ -||go.teepik.com^ -||go.tellusapp.com^ -||go.test.mindfi.co^ -||go.test.shop.app^ -||go.thai.innovatedating.com^ -||go.tinder.com^ -||go.topicit.net^ -||go.trevo.my^ -||go.turkey.innovatedating.com^ -||go.twi.sm^ -||go.uae.innovatedating.com^ -||go.uk.innovatedating.com^ -||go.ukraine.innovatedating.com^ -||go.uksingles.ignite.technology^ -||go.unverbluemt.de^ -||go.usecaya.com^ -||go.venezuela.innovatedating.com^ -||go.viet.innovatedating.com^ -||go.voot.com^ -||go.voypost.com^ -||go.vsee.me^ -||go.wanna.com^ -||go.washland.ae^ -||go.webtoons.com^ -||go.weecare.co^ -||go.werbleapp.com^ -||go.whatchu.com^ -||go.wondavr.com^ -||go.worldwinner.com^ -||go.wu.com^ -||go.you-app.com^ -||go.zakatpedia.com^ -||go.zapyle.com^ -||go.zartoo.ir^ -||go.zebra.i-nox.de^ -||go.zoomex.com^ -||go.zvooq.com^ -||go2.letscliq.com^ -||goa.dngn.kr^ -||god.vsee.me^ -||godev.steps.me^ -||gone.pronhub.fun^ -||goseri-link.mysuki.io^ -||gotest.bouncie.com^ -||gotest.onecart.co.za^ -||gotest.onefc.com^ -||gotest.real.co^ -||gotest.taillight.com^ -||goto.nearlist.com^ -||goto.rosegal.com^ -||goto.zaful.com^ -||gotoaws.dresslily.com^ -||gotoaws.rosegal.com^ -||gotoaws.zaful.com^ -||gotoexp.dresslily.com^ -||gpplus-app.hotdoc.com.au^ -||gr.a23.in^ -||grc.openapp.link^ -||grn.openapp.link^ -||guardian-app.hotdoc.com.au^ -||guitarlearning.deplike.com^ -||guterrat.gaius.app^ -||gyradiko.openapp.link^ -||hanadev.branch.rocks^ -||hanastage.branch.rocks^ -||hanatest.branch.rocks^ -||harman.epoise.com^ -||harmantest.epoise.com^ -||harpra-companion-test.harvinar.com^ -||harpra-companion.harvinar.com^ -||hdu-deeplinks.mindtickle.com^ -||hello.ola.app^ -||hello.steadyapp.com^ -||hello.wellocution.com^ -||hf.forevernetworks.com^ -||hi.hipcamp.com^ -||hi.inhaabit.com^ -||hi.littlepixi.com^ -||hi.syllable.ai^ -||hi.wooribank.com^ -||hipizza.openapp.link^ -||hol.dir.tvsmiles.tv^ -||hootsuite.branch.rocks^ -||hop.dttd.app^ -||host.roxiapp.com^ -||hpark-adobe.branch.rocks^ -||hpark-beta-moengage.branch.rocks^ -||hpark-brazesp.branch.rocks^ -||hpark-iterable.branch.rocks^ -||hpark-iterable2.branch.rocks^ -||hpark-marketo.branch.rocks^ -||hpark.branch.rocks^ -||hparksendgrid.branch.rocks^ -||hparksendgridstage.branch.rocks^ -||hst2-invite.ander.ai^ -||hu-topgal.m-shop.me^ -||hubert.branch.rocks^ -||i-dev.villa.ge^ -||i-staging.villa.ge^ -||i.airtel.in^ -||i.appbox.me^ -||i.carry.bible^ -||i.degoo.com^ -||i.getemoji.me^ -||i.honk.me^ -||i.lf360.co^ -||i.live.xyz^ -||i.livexyz.com^ -||i.morons.us^ -||i.play.vividpicks.com^ -||i.poker2u.app^ -||i.pokerbros.net^ -||i.raise.me^ -||i.rttd.io^ -||i.sandbox.love^ -||i.shelf.im^ -||i.spyn.co^ -||i.temiz.co^ -||i.test.airtel.in^ -||i.toywords.games^ -||i.upoker.net^ -||ibf.smrtp.link^ -||igorsgtest.branch.rocks^ -||ilinks.petalcard.com^ -||ilpostoplus.openapp.link^ -||imagica.brain.ai^ -||imap.happ.social^ -||in.invitd.us^ -||in.upipr.co^ -||indir.boowetr.com^ -||indir.pembepanjur.com^ -||influencer.picklebutnotcucumber.com^ -||info.gyg.com.au^ -||inform.fsm.kz^ -||inform.liilix.com^ -||install.ibeor.com^ -||install.mushroomgui.de^ -||install.ottoradio.com^ -||install.playgpl.com^ -||install.pranavconstructions.com^ -||install.xchange.sabx.com^ -||int-shares.ri.la^ -||internet.degoo.com^ -||inv.mksp.io^ -||invest.rubicoin.com^ -||invitation.friendshipwallet.com^ -||invitation.mindbliss.com^ -||invitation.reyesmagos.app^ -||invitation.xmastimeapp.com^ -||invite-alternate.ritual.co^ -||invite-demo.easypark.net^ -||invite-sandbox.ritual.co^ -||invite-test.sadapay.pk^ -||invite.abra.com^ -||invite.airtabapp.com^ -||invite.ak-ecosystem.com^ -||invite.allflex.global^ -||invite.camfrog.com^ -||invite.carselonadaily.com^ -||invite.chalo.com^ -||invite.cippy.it^ -||invite.circleparties.com^ -||invite.coinmine.com^ -||invite.coinstats.app^ -||invite.colu.com^ -||invite.easypark.net^ -||invite.entrylevel.net^ -||invite.fashom.com^ -||invite.getwaitnot.com^ -||invite.gosunpro.com^ -||invite.gust.show^ -||invite.icars.cc^ -||invite.juke.ly^ -||invite.openhouse.study^ -||invite.paltalk.net^ -||invite.piceapp.com^ -||invite.ritual.co^ -||invite.sadapay.pk^ -||invite.supersonic.run^ -||invite.traktivity.com^ -||invite.trueteams.co^ -||invite.urbanclap.com^ -||invite.youmail.com^ -||invites.nospace.app^ -||io.piupiu.io^ -||iob.imgur.com^ -||ios.asktagapp.com^ -||ipn-app.hotdoc.com.au^ -||iqpizza.openapp.link^ -||iterable.convoy.com^ -||ivonitsa.openapp.link^ -||jhmkopen.minortom.net^ -||jobs.smpgn.co^ -||join-staging.kloaked.app^ -||join-test.pre-prod.spur.io^ -||join-test.step.com^ -||join.air.me^ -||join.airvet.com^ -||join.amorus.net^ -||join.asteride.co^ -||join.belive.sg^ -||join.blimp.homes^ -||join.callie.app^ -||join.deetzapp.com^ -||join.entrylevel.net^ -||join.evercoin.com^ -||join.fitgrid.com^ -||join.fusely.app^ -||join.gerak.asia^ -||join.getstarsapp.com^ -||join.haha.me^ -||join.homeyapp.net^ -||join.hu-manity.co^ -||join.hypercare.com^ -||join.kloaked.app^ -||join.lapse.app^ -||join.listmakerapp.com^ -||join.motion-app.com^ -||join.newtrina.com^ -||join.our-story.co^ -||join.parentlove.me^ -||join.pockit.com^ -||join.qa.fitgrid.com^ -||join.reakt.to^ -||join.schmooze.tech^ -||join.sizl.com^ -||join.slickapp.co^ -||join.spur.io^ -||join.staging.spur.io^ -||join.step.com^ -||join.stuypend.com^ -||join.talker.network^ -||join.thekrishi.com^ -||join.tlon.io^ -||join.travelxp.com^ -||join.vibely.io^ -||join.vtail.co^ -||joina.rune.ai^ -||joinb.rune.ai^ -||jp.ppgamingproxy.lol^ -||jumpto.use-beez.com^ -||jupiterhealth-app.hotdoc.com.au^ -||just.playvici.com^ -||k.itribe.in^ -||k50.rtl2.de^ -||k5app.byjus.com^ -||kamchatka-io.traveler.today^ -||kartik.devishetty.com^ -||kartik.devishetty.net^ -||kd.eland.kr^ -||keyes.myre.io^ -||kingnews.burgerking.co.za^ -||kl-branch-sandbox.thekono.com^ -||kl-branch.thekono.com^ -||kotopoulathanasis.openapp.link^ -||l-t.topya.com^ -||l-test.civic.com^ -||l-test.guesthug.com^ -||l.apna.co^ -||l.audibook.si^ -||l.azarlive.com^ -||l.bhaibandhu.com^ -||l.bigbasket.com^ -||l.biglion.ru^ -||l.brightside.com^ -||l.bspace.io^ -||l.civic.com^ -||l.claphere.com^ -||l.coastapp.com^ -||l.create.canva.com^ -||l.cultgear.com^ -||l.dev.audibook.si^ -||l.du.coach^ -||l.e.domain.com.au^ -||l.engage.canva.com^ -||l.getpyfl.com^ -||l.gocement.com^ -||l.gpay.to^ -||l.guesthug.com^ -||l.ialoc.app^ -||l.iamfy.co^ -||l.imax.com^ -||l.itribe.in^ -||l.jayshetty.me^ -||l.kodika.io^ -||l.lyfshort.com^ -||l.m.tradiecore.com.au^ -||l.mydoki.app^ -||l.myvoleo.com^ -||l.navx.co^ -||l.newnew.co^ -||l.nflo.at^ -||l.post2b.com^ -||l.prk.bz^ -||l.redcross.or.ke^ -||l.rovo.co^ -||l.siply.in^ -||l.sqrrl.in^ -||l.support.canva.com^ -||l.supremapoker.net^ -||l.t.domain.com.au^ -||l.thumbtack.com^ -||l.topya.com^ -||l.umba.com^ -||l.unfy.ai^ -||l.urban.com.au^ -||l.uvcr.me^ -||l.voalearningenglish.in^ -||l.voleousa.com^ -||l.whizzl.com^ -||l.workoutparty.co^ -||l.your.md^ -||lapescheria.openapp.link^ -||launch.aella.app^ -||launch.meetsaturn.com^ -||launch.vypr.it^ -||lb.billing01.email-allstate.com^ -||lb.marketing01.email-allstate.com^ -||lb.quote01.email-allstate.com^ -||lb.service01.email-allstate.com^ -||ldv.midoplay.com^ -||leak.welnes.online^ -||learn.infinitylearn.com^ -||learn.mywallst.app^ -||learn.rubicoin.com^ -||leb-app.diasporaid.com^ -||lets-dev.irl.com^ -||lets.instantify.it^ -||lets.playzingus.com^ -||lets.useflash.app^ -||lets.watcho.com^ -||level.badlandgame.com^ -||levi247.levi.com^ -||lhp-mortgage.loanzify.com^ -||li.rtl2.de^ -||link-acceptance.alan.com^ -||link-app-dev.agvisorpro.com^ -||link-app-preprod.agvisorpro.com^ -||link-app-staging.agvisorpro.com^ -||link-app.agvisorpro.com^ -||link-be-acceptance.alan.com^ -||link-be.alan.com^ -||link-beta.qonto.co^ -||link-ccontact.focuscura.com^ -||link-debug.killi.io^ -||link-dev.fandompay.com^ -||link-dev.gem.co^ -||link-dev.killi.io^ -||link-dev.sensemetrics.com^ -||link-dev.tradee.com^ -||link-es-acceptance.alan.com^ -||link-es.alan.com^ -||link-mind.alan.com^ -||link-partner.btaskee.com^ -||link-qc.trycircle.com^ -||link-staging.bestest.io^ -||link-staging.killi.io^ -||link-staging.samewave.com^ -||link-staging.viivio.io^ -||link-staging.youbooq.me^ -||link-test.360vuz.com^ -||link-test.avenue.us^ -||link-test.chalknation.com^ -||link-test.divcity.com^ -||link-test.external.wealth-park.com^ -||link-test.glide.com^ -||link-test.halal-navi.com^ -||link-test.hanpath.com^ -||link-test.ianacare.team^ -||link-test.steadio.co^ -||link-test.trendstag.com^ -||link-test.tumblbug.com^ -||link-web.tatadigital.com^ -||link.1112.com^ -||link.1800contacts.com^ -||link.24go.co^ -||link.321okgo.com^ -||link.360vuz.com^ -||link.3dbear.io^ -||link.7-eleven.vn^ -||link.abandonedmonkey.codes^ -||link.adhdinsight.com^ -||link.admin.kodakmoments.com^ -||link.afterpay.com^ -||link.ag.fan^ -||link.aioremote.net^ -||link.aira.io^ -||link.airfarm.io^ -||link.alan.com^ -||link.alerts.busuu.app^ -||link.allyapp.com^ -||link.altrua.icanbwell.com^ -||link.angel.com^ -||link.angelstudios.com^ -||link.animefanz.app^ -||link.announce.busuu.app^ -||link.antwak.com^ -||link.app.carrx.com^ -||link.app.dev.fixdapp.com^ -||link.app.fixdapp.com^ -||link.app.forhers.com^ -||link.app.hims.com^ -||link.app.medintegral.es^ -||link.app.notab.com^ -||link.appewa.com^ -||link.ascension-app.com^ -||link.atlys.com^ -||link.augmentedreality.jlg.com^ -||link.auraframes.com^ -||link.automated.almosafer.com^ -||link.avenue.us^ -||link.axshealthapp.com^ -||link.babyquip.com^ -||link.bambu.dev^ -||link.beebs.app^ -||link.beforekick.com^ -||link.beforespring.com^ -||link.bellu.gg^ -||link.bemachine.app^ -||link.bestest.io^ -||link.bigroom.tv^ -||link.bluecallapp.com^ -||link.blueheart.io^ -||link.bobmakler.com^ -||link.bodylove.com^ -||link.bolsanelo.com.br^ -||link.booknet.com^ -||link.booknet.ua^ -||link.booksy.com^ -||link.bounty.com^ -||link.broadly.com^ -||link.brottsplats-app.se^ -||link.btl.vin^ -||link.buddybet.com^ -||link.build.com^ -||link.bulbul.tv^ -||link.busuu.app^ -||link.buzzwallet.io^ -||link.californiapsychics.com^ -||link.capital-wellness.icanbwell.com^ -||link.captionwriter.app^ -||link.cardgamesbybicycle.com^ -||link.cardu.com^ -||link.careerfairplus.com^ -||link.carfax.com^ -||link.cargo.co^ -||link.cdl.freshly.com^ -||link.cerego.com^ -||link.chalknation.com^ -||link.cheerz.com^ -||link.chefsclub.com.br^ -||link.classicalradio.com^ -||link.cleaninglab.co.kr^ -||link.clearsky.jlg.com^ -||link.clever.menu^ -||link.clickipo.com^ -||link.clubmanagergame.com^ -||link.cluno.com^ -||link.cofyz.com^ -||link.collectivebenefits.com^ -||link.conio.com^ -||link.covve.com^ -||link.crazyquest.com^ -||link.creatively.life^ -||link.creditonemail.com^ -||link.crowdfireapp.com^ -||link.crumbl.com^ -||link.curious.com^ -||link.curve.com^ -||link.dana.id^ -||link.daryse.com^ -||link.dawriplus.com^ -||link.debatespace.app^ -||link.debatespace.io^ -||link.deliverr.ca^ -||link.design.unum.la^ -||link.dev-portal.icanbwell.com^ -||link.dev.appewa.com^ -||link.develapme.com^ -||link.developerinsider.co^ -||link.dinifi.com^ -||link.dior.com^ -||link.discotech.me^ -||link.dishcult.com^ -||link.district34.com^ -||link.doctorcareanywhere.com^ -||link.dongnealba.com^ -||link.doopage.com^ -||link.doppels.com^ -||link.dosh.cash^ -||link.dralilabolsanelo.com^ -||link.drum.io^ -||link.dubble.me^ -||link.dvendor.com^ -||link.e.blog.myfitnesspal.com^ -||link.easy.me^ -||link.edapp.com^ -||link.eksperience.net^ -||link.electroneum.com^ -||link.electrover.se^ -||link.em.sssports.com^ -||link.email.almosafer.com^ -||link.email.bnext.es^ -||link.email.myfitnesspal.com^ -||link.email.soothe.com^ -||link.email.tajawal.com^ -||link.emblyapp.com^ -||link.empleyo.com^ -||link.epmyalptest.com^ -||link.eventconnect.io^ -||link.evergreen-life.co.uk^ -||link.everlance.com^ -||link.evolia.com^ -||link.expiwell.com^ -||link.explorz.app^ -||link.extasy.com^ -||link.external.wealth-park.com^ -||link.fabulist.app^ -||link.faithplay.com^ -||link.fanfight.com^ -||link.fanzapp.io^ -||link.farm.seedz.ag^ -||link.favorited.com^ -||link.fieldcamp.com^ -||link.financie.online^ -||link.finfinchannel.com^ -||link.finnomena.com^ -||link.fitflo.app^ -||link.fitforbucks.com^ -||link.fjuul.com^ -||link.flickplay.co^ -||link.fn365.co.uk^ -||link.foodgroup.com^ -||link.foodi.fr^ -||link.foodiapp.com^ -||link.foodliapp.com^ -||link.foodnetwork.com^ -||link.forexhero.eu^ -||link.freetrade.io^ -||link.frescoymas.com^ -||link.fretello.com^ -||link.gamebrain.co.uk^ -||link.gem.co^ -||link.geo4.me^ -||link.geoparquelitoralviana.pt^ -||link.get.discovery.plus^ -||link.getamber.io^ -||link.getbaqala.com^ -||link.getcoral.app^ -||link.getdinr.com^ -||link.getfoodly.com^ -||link.getfxguru.com^ -||link.getoutpatient.com^ -||link.getremix.ai^ -||link.getsaturday.com^ -||link.getsendit.com^ -||link.getshortcut.co^ -||link.getsigneasy.com^ -||link.giide.com^ -||link.glicrx.com^ -||link.glide.com^ -||link.global.id^ -||link.globecar.app^ -||link.gokimboo.com^ -||link.gradeproof.com^ -||link.gradeviewapp.com^ -||link.granderota.riadeaveiro.pt^ -||link.gravio.com^ -||link.guoqi365.com^ -||link.halal-navi.com^ -||link.hallow.com^ -||link.happycar.info^ -||link.harveyssupermarkets.com^ -||link.hayhayapp.se^ -||link.hbogo.com^ -||link.hbonow.com^ -||link.hd.io^ -||link.heal.com^ -||link.healthbank.io^ -||link.heartbeathealth.com^ -||link.hello-au.circles.life^ -||link.hello-sg.circles.life^ -||link.hello.unum.la^ -||link.hello2-sg.circles.life^ -||link.hellobeerapp.com^ -||link.helloclue.com^ -||link.hermanpro.com^ -||link.hey.mypostcard.com^ -||link.heycloudy.co^ -||link.heyitsbingo.com^ -||link.heymiso.app^ -||link.hiccup.dev^ -||link.hivexchange.com.au^ -||link.hobbinity.com^ -||link.hola.health^ -||link.hugoapp.com^ -||link.huuu.ge^ -||link.hyre.no^ -||link.iabmexico.com.mx^ -||link.ianacare.team^ -||link.icecream.club^ -||link.igglo.com^ -||link.im.intermiles.com^ -||link.immobilienscout24.at^ -||link.imprint.co^ -||link.imumz.com^ -||link.individuology.com^ -||link.info.myfitnesspal.com^ -||link.inklusiv.io^ -||link.inoxmovies.com^ -||link.inploi.com^ -||link.insense.pro^ -||link.insider.in^ -||link.instabridge.com^ -||link.instaeats.com^ -||link.instnt.com^ -||link.invoiceowl.com^ -||link.itsdcode.com^ -||link.jawwy.tv^ -||link.jetsobee.com^ -||link.jetstar.com^ -||link.jig.space^ -||link.jitta.co^ -||link.jittawealth.co^ -||link.jmbl.app^ -||link.jobble.com^ -||link.joinswitch.co^ -||link.joinswoop.com^ -||link.joinworkpass.com^ -||link.justincase.jp^ -||link.keycollectorcomics.com^ -||link.kidfund.us^ -||link.kidzapp.com^ -||link.killi.io^ -||link.kindred.co^ -||link.kingsnews.whopper.co.za^ -||link.kitchnrock.com^ -||link.kofiz.ru^ -||link.kulina.id^ -||link.lcdg.io^ -||link.lead-out-app-staging.specialized.com^ -||link.lead-out-app.specialized.com^ -||link.legapass.com^ -||link.lendingtree.com^ -||link.letsdayout.com^ -||link.litnet.com^ -||link.localmasters.com^ -||link.lola.com^ -||link.lomolist.com^ -||link.loop11.com^ -||link.loopedlive.com^ -||link.loopslive.com^ -||link.loxclubapp.com^ -||link.loyalty.almosafer.com^ -||link.lpm.surkus.com^ -||link.lpt.surkus.com^ -||link.made.com^ -||link.mail.blidz.com^ -||link.mail.burgerking.ca^ -||link.mail.popsa.com^ -||link.mail.step.com^ -||link.mangoapp.com.py^ -||link.manutdfeed.com^ -||link.mark.app^ -||link.marketing.bleacherreport.com^ -||link.mbtihell.com^ -||link.medibuddy.app^ -||link.medium.com^ -||link.melissawoodhealth.com^ -||link.metronaut.app^ -||link.meumulti.com.br^ -||link.midnite.com^ -||link.million.one^ -||link.mindsetapp.com^ -||link.miratelemundo.com^ -||link.mix.com^ -||link.mixbit.com^ -||link.mixnpik.com^ -||link.mktg.almosafer.com^ -||link.mktg.tajawal.com^ -||link.mobstar.com^ -||link.modstylist.com^ -||link.morty.app^ -||link.mortyapp.com^ -||link.movespring.com^ -||link.moviemate.io^ -||link.mpg.football^ -||link.mpp.football^ -||link.mudrex.com^ -||link.mulliegolf.com^ -||link.mune.co^ -||link.muso.ai^ -||link.muuzzer.com^ -||link.myasnb.com.my^ -||link.mybridge.com^ -||link.myjourneypickleball.com^ -||link.myofx.eu^ -||link.myoptimity.com^ -||link.mypostcard.com^ -||link.mysuki.io^ -||link.mywallst.app^ -||link.nabla.com^ -||link.nate.tech^ -||link.nbcadmin.com^ -||link.nearpod.com^ -||link.neos.app^ -||link.never-missed.com^ -||link.news.bleacherreport.com^ -||link.news.clearpay.co.uk^ -||link.news.goeuro.com^ -||link.newsbeast.gr^ -||link.newspicks.us^ -||link.nextaveapp.com^ -||link.nextlevelsports.com^ -||link.nilclub.com^ -||link.notifications.busuu.app^ -||link.nutty.chat^ -||link.offers.kodakmoments.com^ -||link.olympya.com^ -||link.omghi.co^ -||link.onference.co^ -||link.onference.in^ -||link.onsight.librestream.com^ -||link.oomph.app^ -||link.orders.kodakmoments.com^ -||link.ottencoffee.co.id^ -||link.outgo.com.br^ -||link.outpatient.ai^ -||link.palletml.com^ -||link.pariksha.co^ -||link.patient.com^ -||link.pavilhaodaagua.pt^ -||link.payris.app^ -||link.payulatam.com^ -||link.pbrry.com^ -||link.pedidosonline.com^ -||link.perzzle.com^ -||link.phaze.io^ -||link.piesystems.io^ -||link.pillowcast.app^ -||link.place2biz.fr^ -||link.plaympe.com^ -||link.plazahogar.com.py^ -||link.pluckk.in^ -||link.plzgrp.it^ -||link.podercard.com^ -||link.point.app^ -||link.poputi.coffee^ -||link.portal.icanbwell.com^ -||link.pray.com^ -||link.prenuvo.com^ -||link.prokure.it^ -||link.pulsz.com^ -||link.purplebrick.io^ -||link.qa.bepretty.cl^ -||link.qa.heal.com^ -||link.qanva.st^ -||link.qeenatha.com^ -||link.qp.me^ -||link.quicktakes.io^ -||link.radiotunes.com^ -||link.rangde.in^ -||link.rc.faithplay.com^ -||link.rechat.com^ -||link.reflexhealth.co^ -||link.reklaimyours.com^ -||link.resy.com^ -||link.reuters.com^ -||link.revolut.com^ -||link.ride.specialized.com^ -||link.ride.staging.specialized.com^ -||link.ridewithvia.com^ -||link.ripple.thedacare.org^ -||link.rippling.com^ -||link.roomaters.com^ -||link.roveworld.xyz^ -||link.ruhgu.com^ -||link.saganworks.com^ -||link.samewave.com^ -||link.sandboxx.us^ -||link.saratogaocean.com^ -||link.savvy360.com^ -||link.sayferapp.com^ -||link.scoutfin.com^ -||link.seaflux.tech^ -||link.sendbirdie.com^ -||link.sendoutpost.com^ -||link.sensemetrics.com^ -||link.setyawan.dev^ -||link.sevencooks.com^ -||link.sheeriz.com^ -||link.shengcekeji.com^ -||link.shopbuo.com^ -||link.shopview.in^ -||link.shotgun.live^ -||link.shuffoe.com^ -||link.shutterfly.com^ -||link.sidechat.lol^ -||link.siftfoodlabels.com^ -||link.sixcycle.com^ -||link.skillacademy.org^ -||link.sluv.org^ -||link.smallcase.com^ -||link.smartrbuyer.com^ -||link.smile.com.au^ -||link.smokeandsoda.com^ -||link.snapfeet.io^ -||link.snaphabit.app^ -||link.snippz.com^ -||link.socar.my^ -||link.socash.io^ -||link.somm.io^ -||link.sooooon.com^ -||link.soultime.com^ -||link.space.ge^ -||link.sparrow.geekup.vn^ -||link.splittr.io^ -||link.sporthub.io^ -||link.sprive.com^ -||link.stabilitas.io^ -||link.staff.notab.com^ -||link.stage.easy.me^ -||link.staging.clearsky.jlg.com^ -||link.starshiphsa.com^ -||link.staycation.co^ -||link.staycircles.com^ -||link.steadio.co^ -||link.steezy.co^ -||link.stg.boxofficevr.com^ -||link.stg.imprint.co^ -||link.stickybeak.co^ -||link.stockalarm.io^ -||link.stockviva.com^ -||link.straitstimes.com^ -||link.stridekick.com^ -||link.studdy.ai^ -||link.stynt.com^ -||link.subscribly.com^ -||link.superlocal.com^ -||link.supermama.io^ -||link.superviz.com^ -||link.support.discovery.plus^ -||link.surbee.io^ -||link.swa.info^ -||link.swaypayapp.com^ -||link.swingindex.golf^ -||link.syfy-channel.com^ -||link.szl.ai^ -||link.t2o.io^ -||link.talescreator.com^ -||link.taptapapp.com^ -||link.target.com.au^ -||link.tastemade.com^ -||link.team.bnext.es^ -||link.team.bnext.io^ -||link.techmaxapp.com^ -||link.tempo.fit^ -||link.tenallaccess.com.au^ -||link.test.chalknation.com^ -||link.test.stickybeak.co^ -||link.testbook.com^ -||link.thejetjournal.com^ -||link.theprenatalnutritionlibrary.com^ -||link.thesecurityteam.rocks^ -||link.thisislex.app^ -||link.thue.do^ -||link.tigerhall.com^ -||link.tigerhall.isdemo.se^ -||link.tillfinancial.io^ -||link.togaapp.com^ -||link.tomoloyalty.com^ -||link.tomoloyaltysg.com^ -||link.touchtunes.com^ -||link.touchtunesmail.com^ -||link.tr.freshly.com^ -||link.tradee.com^ -||link.tradle.io^ -||link.tribeup.social^ -||link.truckerpath.com^ -||link.trycircle.com^ -||link.trymida.com^ -||link.trytaptab.com^ -||link.tubi.tv^ -||link.tul.io^ -||link.tumblbug.com^ -||link.tupinambaenergia.com.br^ -||link.tv.cbs.com^ -||link.uat.my.smartcrowd.ae^ -||link.ulive.chat^ -||link.up.com.au^ -||link.upperinc.com^ -||link.urbansitter.com^ -||link.us.paramountplus.com^ -||link.usa-network.com^ -||link.usechatty.com^ -||link.vavabid.fr^ -||link.velas.com^ -||link.vezeeta.com^ -||link.vibo.io^ -||link.victoriatheapp.com^ -||link.viivio.io^ -||link.viska.com^ -||link.voiapp.io^ -||link.volt.app^ -||link.vozzi.app^ -||link.wagerlab.app^ -||link.wait.nl^ -||link.wakatoon.com^ -||link.walem.io^ -||link.wappiter.com^ -||link.watchbravotv.com^ -||link.watchoxygen.com^ -||link.wazirx.com^ -||link.wearecauli.com^ -||link.weepec.com^ -||link.wefish.app^ -||link.wegowhere.com^ -||link.welcomeapp.se^ -||link.wetrade.app^ -||link.winndixie.com^ -||link.winwintechnology.com^ -||link.wisaw.com^ -||link.wix.app^ -||link.workmate.asia^ -||link.workwellnessinstitute.org^ -||link.worqout.io^ -||link.wow.ink^ -||link.xiahealth.com^ -||link.yesorno.bet^ -||link.yoodo.com.my^ -||link.youpickit.de^ -||link.your.storage^ -||link.yourway.burgerking.ca^ -||link.yuu.sg^ -||link.zikto.com^ -||link.zipsit.com^ -||link.zulily.com^ -||link.zurp.com^ -||link1.fanfight.com^ -||linkcmf.insights.md^ -||linkcmfdev.insights.md^ -||linkd.trybany.com^ -||linkdental.insights.md^ -||linkdentaldev.insights.md^ -||linkdev.sprive.com^ -||linker.lyrahealth.com^ -||linker.staging.lyrahealth.com^ -||linkhealth-app.hotdoc.com.au^ -||linking.venueapp-system.com^ -||linkort.insights.md^ -||linkortdev.insights.md^ -||linkprod.sprive.com^ -||links-anz.afterpay.com^ -||links-dev.letzbig.com^ -||links-dev.sandboxx.us^ -||links-dev.seed.co^ -||links-na.afterpay.com^ -||links-uk.clearpay.co.uk^ -||links.ab.soul-cycle.email^ -||links.agoratix.com^ -||links.ahctv.com^ -||links.alerts.depop.com^ -||links.alerts.forhims.com^ -||links.alerts.hims.com^ -||links.amiralearning.com^ -||links.animalplanet.com^ -||links.announce.touchsurgery.com^ -||links.aopcongress.com^ -||links.app.medintegral.es^ -||links.automated.almosafer.com^ -||links.aws.nexttrucking.com^ -||links.blueapron.com^ -||links.bookshipapp.com^ -||links.br.discoveryplus.com^ -||links.brickapp.se^ -||links.bubbloapp.com^ -||links.ca.discoveryplus.com^ -||links.campermate.com^ -||links.claphere.com^ -||links.colonelsclub.kfc.com^ -||links.comms3.jetprivilege.com^ -||links.communitycarehelp.com^ -||links.consultaapp.com^ -||links.cookingchanneltv.com^ -||links.customers.instacartemail.com^ -||links.dailypay.com^ -||links.damejidlo.cz^ -||links.danceinapp.com^ -||links.destinationamerica.com^ -||links.dev.rally.app^ -||links.development.danceinapp.com^ -||links.discovery.com^ -||links.discoverylife.com^ -||links.discoveryplus.com^ -||links.e.aecrimecentral.com^ -||links.e.aetv.com^ -||links.e.history.com^ -||links.e.historyvault.com^ -||links.e.lifetimemovieclub.com^ -||links.e.mylifetime.com^ -||links.e.wine.com^ -||links.earncarrot.com^ -||links.eatclub.com.au^ -||links.edm.noracora.com^ -||links.elmc.mylifetime.com^ -||links.em.aetv.com^ -||links.em.history.com^ -||links.em.mylifetime.com^ -||links.email.almosafer.com^ -||links.email.bravotv.com^ -||links.email.distrokid.com^ -||links.email.getgocafe.com^ -||links.email.getprizepool.com^ -||links.email.gianteagle.com^ -||links.email.greenlight.me^ -||links.email.nbc.com^ -||links.email.oxygen.com^ -||links.email.tajawal.com^ -||links.email.usanetwork.com^ -||links.emea.discoveryplus.com^ -||links.es.aecrimecentral.com^ -||links.evault.history.com^ -||links.extra.app^ -||links.fable.co^ -||links.fabletics.co.uk^ -||links.fabletics.com^ -||links.fabletics.de^ -||links.fabletics.es^ -||links.fabletics.fr^ -||links.feltapp.com^ -||links.fennel.com^ -||links.firecracker.me^ -||links.foodnetwork.com^ -||links.gamersafer.com^ -||links.gardyn.io^ -||links.gemspace.com^ -||links.getprizepool.com^ -||links.getupside.com^ -||links.glamsquad.com^ -||links.goodpup.com^ -||links.goveo.app^ -||links.grand.co^ -||links.h5.hilton.com^ -||links.h6.hilton.com^ -||links.hbe.io^ -||links.hgtv.com^ -||links.himoon.app^ -||links.hitrecord.org^ -||links.huckleberry-labs.com^ -||links.i.blueapron.com^ -||links.imcas.com^ -||links.impactwayv.com^ -||links.info.getgocafe.com^ -||links.info.gianteagle.com^ -||links.info.headspace.com^ -||links.info.kfc.com^ -||links.info.marketdistrict.com^ -||links.investigationdiscovery.com^ -||links.iopool.com^ -||links.joinhiive.com^ -||links.joinrooster.co.uk^ -||links.joro.app^ -||links.justfab.co.uk^ -||links.justfab.com^ -||links.justfab.de^ -||links.justfab.es^ -||links.justfab.fr^ -||links.keepitcleaner.com.au^ -||links.kha.com^ -||links.letzbig.com^ -||links.m.blueapron.com^ -||links.mail.stubhub.com^ -||links.marketing.getprizepool.com^ -||links.max.com^ -||links.mezurashigame.com^ -||links.mgmresorts.com^ -||links.motortrend.com^ -||links.myplace.co^ -||links.myvolly.com^ -||links.nbc.com^ -||links.nbcnews.com^ -||links.news.forhims.com^ -||links.news.hims.com^ -||links.nexttrucking.com^ -||links.notarize.com^ -||links.notifications.headspace.com^ -||links.official.vsco.co^ -||links.ohhey.depop.com^ -||links.openfit.com^ -||links.orders.kfc.com^ -||links.ottplay.com^ -||links.outskill.app^ -||links.own.tv^ -||links.oxstreet.com^ -||links.petpartner.co^ -||links.ph.discoveryplus.com^ -||links.picsart.com^ -||links.pinart.io^ -||links.pkrewards.com^ -||links.plated.com^ -||links.playon.tv^ -||links.quatreepingles.fr^ -||links.rally.app^ -||links.rathilpatel.com^ -||links.respilates.app^ -||links.riftapp.co^ -||links.riverratrounders.com^ -||links.samsclub.com^ -||links.schnucks.com^ -||links.sciencechannel.com^ -||links.seed.co^ -||links.sheroes.in^ -||links.shipt.com^ -||links.shoprunner.com^ -||links.shukran.com^ -||links.sidehide.com^ -||links.silverpop-email.branch.rocks^ -||links.sleep.com^ -||links.sleepscore.com^ -||links.sliceit.com^ -||links.slicepay.in^ -||links.soulsoftware.org^ -||links.sparkmail.branch.rocks^ -||links.staging-lifestepsapp.com^ -||links.stretchitapp.com^ -||links.subscribed.app^ -||links.sudokuplus.net^ -||links.swazzen.com^ -||links.sweet.io^ -||links.t.blueapron.com^ -||links.t.totallymoney.com^ -||links.t.wine.com^ -||links.teladoc.com^ -||links.thedyrt.com^ -||links.theinfatuation.com^ -||links.thephoenix.org^ -||links.thriveglobal.com^ -||links.tlc.com^ -||links.travelchannel.com^ -||links.tribe.fitness^ -||links.trutify.com^ -||links.tutorbin.com^ -||links.vestoapp.com^ -||links.vyzivovetabulky.sk^ -||links.weareher.com^ -||links.well.co^ -||links.wesponsored.com^ -||links.yayzy.com^ -||links.younify.tv^ -||links.younow.com^ -||links.yummly.com^ -||links2.chownowmail.com^ -||links2.fluent-forever.com^ -||links2.pillar.app^ -||linksbntest.branchcustom.xyz^ -||linkspine.insights.md^ -||linkspinedev.insights.md^ -||linktest.itsdcode.com^ -||linkto.driver.codes^ -||linktrace.diningcity.cn^ -||linkus.buddybet.com^ -||linkvet.insights.md^ -||linkvetdev.insights.md^ -||listen.trakks.com^ -||listen.tunein.com^ -||lk.parisfoodies.fr^ -||lk.vrstories.com^ -||lm.groc.press^ -||lnk-stg.welthee.com^ -||lnk-test.jointakeoff.com^ -||lnk.christmaslistapp.com^ -||lnk.culturetrip.com^ -||lnk.dgsta.com^ -||lnk.ernesto.it^ -||lnk.gleeph.net^ -||lnk.joinpopp.in^ -||lnk.jointakeoff.com^ -||lnk.most-days.com^ -||lnk.mostdays.com^ -||lnk.raceful.ly^ -||lnk.rush.gold^ -||lnk.welthee.com^ -||lnk2.patpat.com^ -||local-shares.ri.la^ -||location.imsmetals.com^ -||login.e-ticket.co.jp^ -||lotte.myomee.com^ -||lp.egghead.link^ -||lub-links.eyecue.io^ -||lw.b.inhaabit.com^ -||m-t.topya.com^ -||m-test.papertrail.io^ -||m.aecrimecentral.com^ -||m.aetv.com^ -||m.bell.ca^ -||m.bigroad.com^ -||m.bitmo.com^ -||m.bookis.com^ -||m.brain.ai^ -||m.d11.io^ -||m.dagym-manager.com^ -||m.dq.ca^ -||m.dq.com^ -||m.equinoxplus.com^ -||m.fontself.com^ -||m.fyi.tv^ -||m.giftry.com^ -||m.go4.io^ -||m.happ.social^ -||m.history.com^ -||m.historyvault.com^ -||m.ioicommunity.com.my^ -||m.irl.com^ -||m.irlmail.org^ -||m.jarvisinvest.com^ -||m.kaikuhealth.com^ -||m.lifetimemovieclub.com^ -||m.luckym.ca^ -||m.moomoo.com^ -||m.mylifetime.com^ -||m.natural.ai^ -||m.navi.com^ -||m.nxtgn.us^ -||m.origin.com.au^ -||m.papertrail.io^ -||m.pcmobile.ca^ -||m.petmire.com^ -||m.providers.alto.com^ -||m.realself.com^ -||m.rifird.com^ -||m.riipay.my^ -||m.rsvy.io^ -||m.shoppre.com^ -||m.shopprecouriers.com^ -||m.shoppreparcels.com^ -||m.showaddict.com^ -||m.suda.io^ -||m.topya.com^ -||m.varagesale.com^ -||m.vpc.ca^ -||m.wishmindr.com^ -||m1.stadiumgoods.com^ -||m2.washmen.com^ -||mac.macheq.com^ -||magic.freetrade.io^ -||mail.academyforconsciousleadership.net^ -||mail.blueapronwine.com^ -||mail.bravado.co^ -||mail.central.co.th^ -||mail.tops.co.th^ -||mail.wondery.com^ -||mail1.happ.social^ -||mail2.happ.social^ -||mailer.happ.social^ -||mailx.happ.social^ -||mallioras.openapp.link^ -||mandrillapp.zola.com^ -||mapp.biryanibykilo.com^ -||marceline.wantsext.me^ -||marketing.boostmi.com^ -||math.meistercody.com^ -||matrix.elecle.bike^ -||maui.shakaguide.com^ -||me.glamhive.com^ -||media.wave.qburst.com^ -||meinauto.hdd-dienste.de^ -||melodothogy.meng2x.com^ -||member-app.rightwayhealthcare.com^ -||members.atomcomplete.com^ -||merchant-app.th3rdwave.coffee^ -||merchant.libertycarz.com^ -||microsoft.eventionapp.com^ -||mikelperaia.openapp.link^ -||mit3app.3.dk^ -||mitt.3.se^ -||mitt3.3.se^ -||mk.appwebel.com^ -||mkt.wemakeprice.link^ -||ml.houzz.com^ -||mlinkdev.bookedout.com^ -||mlinks.fluz.app^ -||mlinks.helloalfred.com^ -||mm.openapp.link^ -||mobil.hry.yt^ -||mobile-event-alternative.cvent.me^ -||mobile-event-development.cvent.me^ -||mobile-event-staging.cvent.me^ -||mobile-event.cvent.me^ -||mobile.aspensnowmass.com^ -||mobile.bespontix.com^ -||mobile.bswift.com^ -||mobile.btgpactualdigital.com^ -||mobile.clickastro.com^ -||mobile.dat.com^ -||mobile.etiquetaunica.com.br^ -||mobile.everytap.com^ -||mobile.excedo.io^ -||mobile.expensify.com^ -||mobile.hippovideo.io^ -||mobile.locumprime.co.uk^ -||mobile.mailchimpapp.com^ -||mobile.reki.tv^ -||mobile.suiste.com^ -||mobiletest.aspensnowmass.com^ -||mobilize.tupinambaenergia.com.br^ -||mobwars-alternate.kano.link^ -||mobwars.kano.link^ -||money.clerkie.io^ -||monster.branch.rocks^ -||mousebusters.odencat.com^ -||mpakal.openapp.link^ -||msg.sqz.app^ -||mt.plateiq.com^ -||mtest.fontself.com^ -||mx.carfax.com^ -||mx.happ.social^ -||mx2.happ.social^ -||my-staging.villa.ge^ -||my-testing.tsgo.io^ -||my.bake-club.com^ -||my.blueprint-health.com^ -||my.fbird.co^ -||my.fynd.com^ -||my.gaius.app^ -||my.likeo.fr^ -||my.ndge.co^ -||my.nextgem.com^ -||my.powur.com^ -||my.showin.gs^ -||my.tsgo.io^ -||my.w.tt^ -||myapp.branch.rocks^ -||mymix.mixdevelopment.com^ -||mymix.mixtel.com^ -||mymix.mixtelematics.com^ -||myopia.gocheckkids.com^ -||mypowur.eyecue.io^ -||n.homepass.com^ -||nadelle.wantsext.me^ -||nala.headuplabs.com^ -||nasscom.epoise.com^ -||nasscomtest.epoise.com^ -||nbcnews.black.news^ -||nceexam.quantresear.ch^ -||nikitas.openapp.link^ -||nisaapp.nexus-dt.com^ -||norex-app.paihealth.no^ -||notice.hoopladigital.com^ -||notify.pray.com^ -||now.getwifireapp.com^ -||npr.black.news^ -||npteptptaexam.quantresear.ch^ -||ns1.happ.social^ -||nv.inhaabit.com^ -||o.catalyst.com.sa^ -||o.hmwy.io^ -||o.myomnicard.in^ -||oahu.shakaguide.com^ -||ochre-app.hotdoc.com.au^ -||on.allposters.com^ -||on.art.com^ -||on.hellostake.com^ -||one.appice.io^ -||one.godigit.com^ -||onelink.taptalk.io^ -||open-test.wynk.in^ -||open.ailo.app^ -||open.airtelxstream.in^ -||open.anghami.com^ -||open.bitcoinmagazine.app^ -||open.catchapp.mobi^ -||open.clerkie.io^ -||open.ditch.cash^ -||open.drivescore.com^ -||open.flow.com.mm^ -||open.fotition.com^ -||open.freeplayapp.com^ -||open.gaius.app^ -||open.getsigneasy.com^ -||open.homepass.com^ -||open.homey.app^ -||open.howbout.app^ -||open.kidu.com^ -||open.majelan.com^ -||open.melomm.com^ -||open.muze.chat^ -||open.novamoney.com^ -||open.speeko.co^ -||open.swapu.app^ -||open.theinnercircle.co^ -||open.ticketbro.com^ -||open.trakks.com^ -||open.uzitapp.com^ -||open.wynk.in^ -||openshop.m-shop.me^ -||oshp.io^ -||othanasis.openapp.link^ -||outdoor.theres.co^ -||oxqq.pandasuite.io^ -||p.cab.ua^ -||p3tq.pandasuite.io^ -||paramedicexam.quantresear.ch^ -||parentapp.byjus.com^ -||parents.app.playosmo.com^ -||partner-staging.miso.kr^ -||partner.librarius.com.ua^ -||partner.miso.kr^ -||partnerapp.kravein.com.au^ -||partnerapp.urbanclap.com^ -||partnerdev.extasy.com^ -||patrikios.openapp.link^ -||pay.truemoney.me^ -||payments.acutx.org^ -||paymentslink.dropp.cc^ -||pbm-email.rightwayhealthcare.com^ -||pdf.didgigo.com^ -||pe.txbe.at^ -||pergeroni.openapp.link^ -||pf.a23.in^ -||phlebotomyexam.quantresear.ch^ -||phoenix.thexlife.co^ -||phonetrack.hukumkaikka.in^ -||pint-dev-branch.airship.com^ -||pirateclan-alternate.kano.link^ -||pirateclan.kano.link^ -||pirounakia.openapp.link^ -||pitapan.openapp.link^ -||pitatisisminis.openapp.link^ -||pittaking.openapp.link^ -||pizzacamels.openapp.link^ -||pizzaexpress.openapp.link^ -||pizzaromea.openapp.link^ -||pl-topgal.m-shop.me^ -||play.ab05.bet^ -||play.b-t11.com^ -||play.colorplay.fun^ -||play.fanslide.com^ -||play.goldplay.me^ -||play.jdb888.club^ -||play.journey8.com^ -||play.maxgame.store^ -||play.nekobot.vip^ -||play.rheo.tv^ -||play.scavos.com^ -||play.skydreamcasino.net^ -||play.spdfun777.com^ -||play.spkr.com^ -||play.staging.underdogfantasy.com^ -||play.underdogfantasy.com^ -||play.waka8et.com^ -||play.wavelength.zone^ -||plv.geocomply.com^ -||poczta.happ.social^ -||pod.spoti.fi^ -||polis.openapp.link^ -||poll.pollinatepolls.com^ -||pool.onjoyri.de^ -||pool.onjoyride.com^ -||pop3.happ.social^ -||power.viggo.com^ -||prassas.openapp.link^ -||prasserie.openapp.link^ -||prealpha.go.levelbank.com^ -||premiumapp.byjus.com^ -||prenesi-mojm.mercator.si^ -||primary-app.hotdoc.com.au^ -||priority-app.hotdoc.com.au^ -||prismtest.epoise.com^ -||pro.bizportal.co.il^ -||pro.jig.space^ -||pro.pokerup.net^ -||production-link-ccontact.focuscura.com^ -||promo.cafexapp.com^ -||promo.gogo.org.ua^ -||promo.roadie.com^ -||promo.tops.co.th^ -||prunas.openapp.link^ -||psilikaki.openapp.link^ -||psmastersendgrid.branch.rocks^ -||psssaraki.openapp.link^ -||publish.tagstorm.com^ -||puzzle.spiriteq.com^ -||px.pandora.com^ -||pxsg.pandora.com^ -||q.skiplino.com^ -||qa-branch-app.liketoknow.it^ -||qa-brc.emails.rakuten.com^ -||qa-go.ebat.es^ -||qa-link.californiapsychics.com^ -||qa-prod.branch.rocks^ -||qaapp.forever21.com^ -||qbse.intuit.com^ -||qlp.egghead.link^ -||qr.juuice.com^ -||qr.printko.ro^ -||qrcode.visit-thassos.com^ -||qualitas-app.hotdoc.com.au^ -||quest.epoise.com^ -||question.snapiio.com^ -||questtest.epoise.com^ -||quick.openapp.link^ -||r-dev.urbansitter.net^ -||r.atlasearth.com^ -||r.blidzdeal.com^ -||r.cricbet.co^ -||r.cvglobal.co^ -||r.getcopper-dev.com^ -||r.getcopper.com^ -||r.guggy.com^ -||r.intimately.us^ -||r.morons.us^ -||r.onmyway.com^ -||r.phhhoto.com^ -||r.presspadnews.com^ -||r.rover.com^ -||r.sportsie.com^ -||racemanager-app.sapsailing.com^ -||randstad.epoise.com^ -||randstadtest.epoise.com^ -||rb.groc.press^ -||read.medium.com^ -||read.meistercody.com^ -||redditstream.arborapps.io^ -||redirect.cuballama.com^ -||redirect.indacar.io^ -||redirect.kataklop.com^ -||redirectdemoqpay.2c2p.com^ -||ref.elitehrv.com^ -||ref.mybb.id^ -||refer.chargerunning.com^ -||refer.dev.wagr.us^ -||refer.dragonfly.com.kh^ -||refer.gober.app^ -||refer.kheloapp.com^ -||refer.payluy.com.kh^ -||referral-ca.mixtiles.com^ -||referral.50fin.in^ -||referral.avena.io^ -||referral.mixtiles.com^ -||referral.monkitox.com^ -||referral.moonglabs.com^ -||referral.rvappstudio.com^ -||referral.setipe.com^ -||referral.upay.lk^ -||referral.yourcanvas.co^ -||referrals-test.ridealto.com^ -||referrals.getservice.com^ -||referrals.ridealto.com^ -||referrals.tradeapp.me^ -||referrals.zunify.me^ -||rel-link.californiapsychics.com^ -||relay.happ.social^ -||remaxmetro369.myre.io^ -||request.idangels.org^ -||resetpassword.surepetcare.io^ -||review.openapp.link^ -||rewards-my.greateasternlife.com^ -||rewards-sg.greateasternlife.com^ -||rimsha.viralof.online^ -||rl.finalprice.com^ -||rochelle.wantsext.me^ -||rooms.itsme.cool^ -||rooms.itsme.video^ -||roulette.abzorbagames.com^ -||routes.navibration.com^ -||rr.groc.press^ -||rtek-link.shares.social^ -||rx-test.capsulecares.com^ -||rx.capsulecares.com^ -||s-t.topya.com^ -||s.airgoat.com^ -||s.brin.io^ -||s.chatie.ai^ -||s.goat.com^ -||s.grabble.com^ -||s.grigora.com^ -||s.imagica.ai^ -||s.mygl.in^ -||s.myvoleo.com^ -||s.nextblock.sg^ -||s.salla.ps^ -||s.swishpick.com^ -||s.thebigfamily.app^ -||s.topya.com^ -||s.umba.com^ -||s.upoker.net^ -||s.utop.vn^ -||safepass.citizen.com^ -||safetravelsapp.progressive.com^ -||sailinsight-app.sapsailing.com^ -||sailinsight20-app.sapsailing.com^ -||sales.pandasuite.io^ -||saltsabar.openapp.link^ -||sbc-app-links.specialized.com^ -||scanner-link.covve.com^ -||scheduling.qualifi.hr^ -||securefamilylink.wireless.att.com^ -||see.yousoon.com^ -||sefkal.openapp.link^ -||selectjeeps.acutx.org^ -||selftour.walk.in^ -||sellerapp.musely.com^ -||send.merit.me^ -||send.preply.com^ -||sendgrid.employeelinkapp.com^ -||sendpulsenewtest.branch.rocks^ -||sendpulsetest.branch.rocks^ -||sense.cliexa.com^ -||sephora-qa.branch.rocks^ -||sephora-qa.branchstaging.com^ -||setup.physiapp.com^ -||sex.viralof.online^ -||sf-test.groc.press^ -||sf.groc.press^ -||sf4567w2a56q.branch.salesfloor.net^ -||sf5q8gbnve37.branch.salesfloor.net^ -||sg.carousellmotors.com^ -||sg3.notarize.com^ -||sh.b.inhaabit.com^ -||share-backcountry.onxmaps.com^ -||share-dev.perchwell.com^ -||share-dev1.sparemin.com^ -||share-hunt.onxmaps.com^ -||share-idi.dailyrounds.org^ -||share-local.sparemin.com^ -||share-staging.perchwell.com^ -||share-stg1.sparemin.com^ -||share-test.goswaggle.com^ -||share-test.tessie.com^ -||share-test.travelloapp.com^ -||share-test.usehamper.com^ -||share.1stphorm.app^ -||share.appdater.mobi^ -||share.appsaround.net^ -||share.appwinit.com^ -||share.atlantic.money^ -||share.aynrand.org^ -||share.beaconlearningapp.com^ -||share.bitzer.app^ -||share.blindside.pro^ -||share.bookey.app^ -||share.boostorder.com^ -||share.bttl.me^ -||share.ccorl.com^ -||share.check-ins.com.my^ -||share.cjcookit.com^ -||share.coupangeats.com^ -||share.dailyrounds.in^ -||share.drinki.com^ -||share.dunzo.in^ -||share.dusk.app^ -||share.eleph.app^ -||share.elixirapp.co^ -||share.elsanow.io^ -||share.entertainment.com^ -||share.finory.app^ -||share.flickasa.com^ -||share.foxtrotco.com^ -||share.furaha.co.uk^ -||share.getthatlemonade.com^ -||share.gleeph.net^ -||share.glorify-app.com^ -||share.gobx.com^ -||share.goswaggle.com^ -||share.haloedapp.com^ -||share.headliner.app^ -||share.helpthyneighbour.com^ -||share.heypubstory.com^ -||share.jisp.com^ -||share.jobeo.net^ -||share.jugnoo.in^ -||share.kamipuzzle.com^ -||share.keeano.com^ -||share.ksedi.com^ -||share.liv.rent^ -||share.mansi.io^ -||share.marrow.com^ -||share.moonlightcake.com^ -||share.mooodek.com^ -||share.mzaalo.com^ -||share.nearpod.us^ -||share.oneway.cab^ -||share.oppvenuz.com^ -||share.oyorooms.com^ -||share.palletml.com^ -||share.passportpower.app^ -||share.perchwell.com^ -||share.platoonline.com^ -||share.quin.cl^ -||share.quizizz.com^ -||share.rapfame.app^ -||share.realcrushconnection.com^ -||share.ridehip.com^ -||share.robinhood.com^ -||share.savvy-navvy.com^ -||share.scoreholio.com^ -||share.sharafdg.com^ -||share.sliver.tv^ -||share.soundit.com^ -||share.sparemin.com^ -||share.squadx.online^ -||share.stayplus.com^ -||share.stiya.com^ -||share.supp.film^ -||share.swishpick.com^ -||share.talkit.app^ -||share.tessie.com^ -||share.theladbible.com^ -||share.titanvest.com^ -||share.tops.co.th^ -||share.tornado.com^ -||share.tp666.vip^ -||share.tradeapp.me^ -||share.travelloapp.com^ -||share.vomevolunteer.com^ -||share.wayup.com^ -||share.wigle.me^ -||share.winit.nyc^ -||share.wolfspreads.com^ -||share.worldleaguelive.com^ -||share.yabelink.com^ -||share.yugengamers.com^ -||share2.360vuz.com^ -||shared.jodel.com^ -||sharedev.passportpower.app^ -||sharelink.oppvenuz.com^ -||sharen.oyorooms.com^ -||sharing.kptncook.com^ -||shell-recharge.tupinambaenergia.com.br^ -||sheregesh-io.traveler.today^ -||shop.myaeon2go.com^ -||shoppers-test.instacartemail.com^ -||shoppers.instacartemail.com^ -||shoppingapp.norwex.com^ -||short.afgruppen.no^ -||short.isdev.info^ -||showcase.inhaabit.com^ -||sign.use-neo.com^ -||sk-batteryimport.m-shop.me^ -||sk-sanasport.m-shop.me^ -||sk-topgal.m-shop.me^ -||skaffa.tidyapp.se^ -||skincheckwa-app.hotdoc.com.au^ -||skosgrill.openapp.link^ -||sl.trycircle.com^ -||slotabrosdev.zharev.com^ -||slotabrosuat.zharev.com^ -||sm-test.groc.press^ -||sm.groc.press^ -||sm.sylectus.com^ -||smbranch.nc.mails.sssports.com^ -||sms-vbs.branch.rocks^ -||sms.3.se^ -||sms.uphabit.com^ -||smtp.happ.social^ -||smtp2.happ.social^ -||smtpauth.happ.social^ -||snapshotapp.progressive.com^ -||snowman.odencat.com^ -||social.talenttitan.com^ -||social.tinyview.com^ -||socialflow.branch.rocks^ -||sp-app.fixly.pl^ -||splitexpenses.oworld.fr^ -||spread.epoolers.com^ -||ss.silkandsonder.com^ -||ssltest2.branch.io^ -||stadac.mobilapp.io^ -||stageapplink.reki.tv^ -||stagelink.lola.com^ -||stagelink.supershare.com^ -||stagelink.youareaceo.com^ -||staging-c.vcty.co^ -||staging-go.getsquire.com^ -||staging-link-ccontact.focuscura.com^ -||staging-link.docyt.com^ -||staging-link.kol.store^ -||staging-links.thriveglobal.com^ -||staging-refer.rooam.co^ -||staging.findeck.link^ -||staging.link.findeck.de^ -||staging.narrateapp.com^ -||staging.refer.wagr.us^ -||starchild.odencat.com^ -||starify.appsonic.fr^ -||start.hearsaysocial.com^ -||start.luscii.com^ -||start.ramp.com^ -||status.acutx.org^ -||stg-bnc-papago.naver.com^ -||stg-deeplink.ring.md^ -||store.echovisuals.com^ -||store.esquirrel.at^ -||stream.9now.com.au^ -||studio.joinsalut.com^ -||subito.openapp.link^ -||summary.instaread.co^ -||super8-link.mysuki.io^ -||surpreendaapp.hanzo.com.br^ -||swa.anydma.com^ -||sxarakia.openapp.link^ -||t.ac.pandora.com^ -||t.bztest.origin.com.au^ -||t.comms.thetimes.co.uk^ -||t.discover.kayosports.com.au^ -||t.ecomms.origin.com.au^ -||t.haha.me^ -||t.hmwy.io^ -||t.icomms.origin.com.au^ -||t.newsletter.thetimes.co.uk^ -||t.prod1.discover.binge.com.au^ -||t.service.thetimes.co.uk^ -||t.staging-mail.tabcorp.com.au^ -||t.twenty.co^ -||t.vrbo.io^ -||t1.benefits.tops.co.th^ -||t1.discover.flashnews.com.au^ -||t1.stadiumgoods.com^ -||t2.click.subway.com^ -||tagourounakia.openapp.link^ -||talent.roxiapp.com^ -||talentsprint.epoise.com^ -||talk-test.stitch.cam^ -||talk.stitch.cam^ -||tally.bizanalyst.in^ -||tamedbc.roska.fr^ -||tap.carling.com^ -||tasteeat.openapp.link^ -||tba.smrtp.link^ -||td.emails.domain.com.au^ -||teen.zubie.com^ -||test-app.getgifted.com^ -||test-app.popsa.com^ -||test-app.thetimes.link^ -||test-applink.batterii.com^ -||test-b.todaytix.com^ -||test-eml.postmates.com^ -||test-fleet-eml.postmates.com^ -||test-link-ccontact.focuscura.com^ -||test-link.californiapsychics.com^ -||test-link.electrover.se^ -||test-link.foodiapp.com^ -||test-link.hellobeerapp.com^ -||test-link.payulatam.com^ -||test-link.rmbr.in^ -||test-link.stabilitas.io^ -||test-link.touchsurgery.com^ -||test-link.tradle.io^ -||test-link.volt.app^ -||test-links.cpgdata.com^ -||test-links.dipdip.com^ -||test-links.yelsa.app^ -||test-listen.tunein.com^ -||test-share.glorify-app.com^ -||test-starify.appsonic.fr^ -||test.asteride.co^ -||test.bilt.page^ -||test.customers.instacartemail.com^ -||test.emails.discovery.com^ -||test.fbird.co^ -||test.findeck.link^ -||test.findplay.it^ -||test.handy-alarm.com^ -||test.links.emails.br.discoveryplus.com^ -||test.links.emails.ca.discoveryplus.com^ -||test.links.emails.discoveryplus.com^ -||test.links.emails.emea.discoveryplus.com^ -||test.links.emails.ph.discoveryplus.com^ -||test.open.ggwpacademy.com^ -||test.openapp.link^ -||test.pooler.io^ -||test.smrtp.link^ -||test.spenn.com^ -||test.swa.info^ -||test.thei.co^ -||test2.majelan.com^ -||testbnc.mksp.io^ -||testbranch.onsequel.com^ -||testgo.huterra.com^ -||testing.news.forhers.com^ -||testing.news.forhims.com^ -||testing.news.hims.com^ -||testlink.blueheart.io^ -||testlink.droppin.us^ -||testlink.kidzapp.com^ -||testlink.peak.net^ -||testlink.saganworks.com^ -||testlink.urban.com.au^ -||testlink.victoriatheapp.com^ -||testlinks.ottplay.com^ -||testlinks.sliceit.com^ -||testreferral.upay.lk^ -||testsocial.eduthrill.com^ -||thanecityfc.spyn.co^ -||theme.echovisuals.com^ -||theroot.black.news^ -||thesource.black.news^ -||thraka.openapp.link^ -||timeclock.mytoolr.com^ -||tmapp.fitnessyard.com^ -||tmpbr.getgifted.com^ -||tmvasapp.fitnessyard.com^ -||to.4sq.com^ -||to.5mins.ai^ -||to.card.com^ -||to.degree.plus^ -||to.figr.me^ -||to.golfn.app^ -||to.quit.guru^ -||to.skooldio.com^ -||to.stynt.com^ -||to.uptime.app^ -||tommys.openapp.link^ -||tongkhohangnhat.abphotos.link^ -||top3.inhaabit.com^ -||toto.pandasuite.io^ -||trac.roomster.com^ -||track-mail.homage.co^ -||track-test.workframe.com^ -||track.cafu.com^ -||track.gleeph.net^ -||track.ivia.com^ -||track.newsplug.com^ -||track.roomster.com^ -||track.spothero.com^ -||track.workframe.com^ -||tracking.email-mandrill.pushd.com^ -||tracking.laredoute.fr^ -||tracking.sp.sofi.com^ -||tracking.staging.goshare.co^ -||tracks.roomster.com^ -||transmissionapp.jacoblegrone.com^ -||travel.stage.x.unikoom.com^ -||travel.x.unikoom.com^ -||trk-branch.balinea.com^ -||trk.bc.shutterfly.com^ -||trk.e.underarmour.com^ -||trk.flipfit.com^ -||trk.geico.com^ -||trk.luisaviaroma.com^ -||trk.s.sephora.com^ -||trk.send.safestyle.com.au^ -||trk.shoppremiumoutlets.com^ -||trk.squeezemassage.com^ -||trk.underarmour.com^ -||trk.us.underarmour.com^ -||trkemail.luisaviaroma.com^ -||trklink.luisaviaroma.com^ -||try.jaranda.kr^ -||try.joonapp.io^ -||try.popchart.family^ -||try.postmuseapp.com^ -||tsp.onjoyri.de^ -||tst-link-ccontact.focuscura.com^ -||tune.sckmediatv.com^ -||tw.spiriteq.com^ -||txt.appcity.com.au^ -||txt.fuelmyclub.com^ -||txt.hooplaguru.com^ -||txt.htltn.com^ -||txt.shopbanquet.com^ -||txt.showings.com^ -||txt.styr.com^ -||u-test.getgoose.com^ -||u.getgoose.com^ -||u.salony.com^ -||uat-client.belairdirect.com^ -||uat-client.intact.ca^ -||uat-client.nbc-insurance.ca^ -||uat-link.covve.com^ -||uat-scanner-link.covve.com^ -||uatrewards-my.greateasternlife.com^ -||uatrewards-sg.greateasternlife.com^ -||uatshare.entertainment.com^ -||ujvh.pandasuite.io^ -||uni.okane-reco-plus.com^ -||universal.okane-reco-plus.com^ -||universal.shakaguide.com^ -||universaldev.taylormadegolf.com^ -||unsubscribe.openapp.link^ -||uptvmovies.uptv.com^ -||ur.b.inhaabit.com^ -||url.density.exchange^ -||url1020.keycollectorcomics.com^ -||url1445.affirm.com^ -||url1451.careerkarma.info^ -||url1741.linktr.ee^ -||url1981.jhutnick.tantawy.app^ -||url2031.lemonaidhealth.com^ -||url2556.matthewherman.tantawy.app^ -||url259.artcollection.io^ -||url2987.affirm.com^ -||url3009.onbunches.com^ -||url3630.newsletter.experience-muse.com^ -||url3788.blazepizza.com^ -||url4142.dev.att.llabs.io^ -||url4324.affirm.ca^ -||url4324.affirm.com^ -||url485.yourname.tantawy.app^ -||url5290.dev-portal.icanbwell.com^ -||url6013.qa-app11-sendgrid.branch.rocks^ -||url6035.clay-sendgrid-test.branch.rocks^ -||url6143.branch.rocks^ -||url6146.bastien.tantawy.app^ -||url6514.affirm.com^ -||url6633.ana.tantawy.app^ -||url6933.email.marcon.au^ -||url7061.support.1dental.com^ -||url7542.fluz.app^ -||url7674.fitgenieapp.com^ -||url8196.mindrise.app^ -||url8258.jshek.branch.rocks^ -||url9609.account.experience-muse.com^ -||use.fvr.to^ -||use.lunos.app^ -||users.rentbabe.com^ -||v-t.topya.com^ -||v.angha.me^ -||v.cameo.com^ -||v.minu.be^ -||v.myvoleo.com^ -||v.topya.com^ -||vcs.kensington.my^ -||ve.velocityclinical.com^ -||verify.spin.app^ -||verify.test.spin.app^ -||verizon-branch.locationlabs.com^ -||video.bzfd.it^ -||video.vitcord.com^ -||viewer.pandasuite.io^ -||vikingclan.kano.link^ -||vip.agentteam.com.au^ -||visit.campermate.com^ -||visit.sendheirloom.com^ -||voeux2020.wearemip.com^ -||vote.speaqapp.com^ -||votedotorg.outvote.io^ -||votejoe.outvote.io^ -||vr.mttr.pt^ -||vr.vivareal.com^ -||vrasto.openapp.link^ -||vrcamdl.istaging.com^ -||vrcamdltest.istaging.com^ -||vtneexam.quantresear.ch^ -||wallet.chain.com^ -||wap.mylifetime.com^ -||watch.jawwy.tv^ -||watch.stctv.com^ -||watch.vipa.me^ -||wave.getonthewave.com^ -||we.kurly.com^ -||web.givingli.com^ -||webmail.happ.social^ -||webtoons.naver.com^ -||welcome.peek.com^ -||whatcounts.branch.rocks^ -||wl.bl.frequentvalues.com.au^ -||won.wooribank.com^ -||wop-bio.ubiwhere.com^ -||worker-app-dev.buildforce.com^ -||worker-app-staging.buildforce.com^ -||worker-app.buildforce.com^ -||wpunkt.newsweek.pl^ -||wsfc-t.topya.com^ -||wsfc.topya.com^ -||www.branch.rocks^ -||www.getone.today^ -||www.vetxanh.edu.vn^ -||www1.happ.social^ -||x.gldn.io^ -||x.xtar.io^ -||x88s.pandasuite.io^ -||y-t.topya.com^ -||y.topya.com^ -||yiyemail.branch.rocks^ -||yo.inbots.online^ -||you.pixellot.link^ -||you.stage.pixellot.link^ -||youate.co^ -||your.tmro.me^ -||yummylink.funcapital.com^ -||z.inlist.com^ -||zelle.odencat.com^ -||zombieslayer-alternate.kano.link^ -||zombieslayer.kano.link^ -!-----------------International individual tracking systems-----------------! -! *** easylist:easyprivacy/easyprivacy_specific_international.txt *** -||1438976156.recolution.de^ -||20min.ch/ana/ -||aachener-zeitung.de/zva/drive.js -||aerzteblatt.de/inc/js/ga4.js -||agnes.waz.de^ -||analytics.adliners.de^ -||analytics.daasrv.net^ -||analytics.deutscher-apotheker-verlag.de^ -||analytics.moviepilot.de^ -||arlt.com/analytics/ -||arte.tv/log-player/ -||as.mirapodo.de^ -||as.mytoys.de^ -||as.yomonda.de^ -||autoscout24.de^$ping -||basicthinking.de/stats/ -||behave.sn.at^ -||berliner-stadtplan.com/t.gif -||bilder11.markt.de^ -||braunschweiger-zeitung.de/stats/ -||buzzfeed.at/bi/bootstrap/ -||buzzfeed.de/bi/bootstrap/ -||bz-berlin.de/_stats/ -||chartsurfer.de/js/mtm.js -||chartsurfer.de/uscoll.php? -||chefkoch-cdn.de/agf/agf.js -||chefkoch.de/search/tracking/ -||chefkoch.de/tracking/ -||click.alternate.de^ -||cmp2.channelpartner.de^ -||cnt.wetteronline.de^ -||comparis.ch/comparis/Tracking/ -||computerbase.de/api2/$ping,xmlhttprequest -||computerbase.de/nlytev -||cp.finanzfrage.net/stats -||cpx.golem.de^ -||cpxl.golem.de^ -||d.rp-online.de^ -||dasoertliche.de/js/liwAnalytics.js -||data.sportdeutschland.tv^ -||dd.betano.com^ -||dein-plan.de/t.gif -||dejure.org/cgi-bin/sitzung.fcgi? -||derwesten.de/stats/ -||dforum.net/counter/ -||dv.chemie.de^ -||ens.luzernerzeitung.ch^ -||ens.nzz.ch^ -||ens.tagblatt.ch^ -||epimetheus.navigator.web.de^ -||epochtimes.de/mp/track/ -||event-collector.prd.data.s.joyn.de^ -||events.limango.com^ -||fc.vodafone.de^ -||fotocommunity.de/track/ -||froglytics.eventfrog.ch^ -||gegenstimme.tv/tracker/ -||geoip.finanzen.net^ -||glomex.com^$ping -||gmx.net/monitoring/ -||golem.de/staticrl/scripts/golem_cpxl_ -||hamburger-stadtplan.com/t.gif -||hannover-stadtplan.com/t.gif -||happysex.ch/app_jquery/Tracking.js -||hartgeld.com/cgi-sys/Count.cgi? -||heise.de/ivw-bin/ivw/cp/ -||herz-fuer-tiere.de^*/ad.gif? -||herz-fuer-tiere.de^*/sunshine.gif? -||hokuspokus.tarnkappe.info^ -||homegate.ch/g/collect? -||horizont.net/stats/ -||inside-channels.ch/proxy/engine/api/v1/auth/ping/ -||inside-it.ch/proxy/engine/api/v1/auth/ping/ -||jobs.ch/api/v1/public/product/track/ -||js.tag24.de/main.js -||k-aktuell.de/monitoring? -||kaufland.de/uts/events/ -||leipziger-stadtplan.com/t.gif -||llntrack.messe-duesseldorf.de^ -||lokalwerben.t-online.de^ -||mat.ukraine-nachrichten.de^ -||metrics.n-tv.de^ -||mlm-tracking-service.meinestadt.de^ -||moviepilot.de/assets/autotrack- -||mtb-news.de/metric/ -||muenchener-stadtplan.com/t.gif -||mydirtyhobby.de/tracker -||navigation-timing.meinestadt.de^ -||nct.ui-portal.de^ -||netzwelt.de/log? -||news.de/track.php -||newsdeutschland.com/RPC.php -||nickles.de/ivw/ -||nius.de/monitoring -||ostjob.ch/public/statistic/teaser/hit/ -||otto.de/error-logging/ -||otto.de/pass/scale-beacon-service/ -||otto.de^$ping -||oxifwsabgd.nzz.ch^ -||pi.technik3d.com^ -||pixel.ionos.de^ -||plausible.motorpresse.de^ -||potsdamer-stadtplan.com/t.gif -||pstt.mtb-news.de^ -||px.derstandard.at^ -||pxc.otto.de^ -||r.wz.de^ -||redaktionstest.net/cdn/$ping -||rem-track.bild.de^ -||responder.wt.heise.de^ -||ricardo.ch/api/browser-statistics/ -||rt.bunte.de^ -||schnaeppchenfuchs.com/js/default- -||shoop.de/mgtrx/ -||shop.rewe.de/api/xrd/web-vitals -||sparkasse.de/frontend/setTrackingCookie.htm -||sportnews.bz/pcookie? -||spreewaldkarte.de/t.gif -||sqs.quoka.de^ -||squirrel.cividi.ch^ -||srf.ch/udp/tracking/ -||ss.photospecialist.at^ -||ss.photospecialist.de^ -||statistic2.reichelt.de^ -||statistics.riskommunal.net^ -||stats.autoscout24.ch^ -||stats.rocketbeans.tv^ -||stats.sumikai.com^ -||steuertipps.de/scripts/tracking/ -||stol.it/pcookie? -||stuttgarter-nachrichten.de/cre-1.0/tracking/device.js -||subpixel.4players.de^ -||suche.web.de/click -||swmhdata.stuttgarter-nachrichten.de^ -||swmhdata.stuttgarter-zeitung.de^ -||t-online.de/to/web/click? -||t-online.de/toi/html/de/img/transp.bmp? -||t.wayfair.de^ -||tagm.eduscho.at^ -||tarnkappe.info^$ping -||taz.de/count/ -||teltarif.de/scripts/fb.js -||teltarif.de/scripts/ttt.js -||teltarif.de/ttt.go? -||tgw.gmx.ch^ -||tgw.gmx.net^ -||tgw.web.de^ -||timing.uhrforum.de^ -||tm.swp.de^ -||tracer.autoscout24.ch^ -||track.dws.de^ -||track.express.de^ -||track.noz.de^ -||track.rheinpfalz.de^ -||track.rundschau-online.de^ -||tracking.asialadies.de^ -||tracking.avladies.de^ -||tracking.badeladies.de^ -||tracking.behaarteladies.de^ -||tracking.bizarrladies.de^ -||tracking.busenladies.de^ -||tracking.deutscheladies.de^ -||tracking.devoteladies.de^ -||tracking.dominanteladies.de^ -||tracking.erfahreneladies.de^ -||tracking.escorts24.de^ -||tracking.exklusivladies.de^ -||tracking.finanzen.net^ -||tracking.fkk24.de^ -||tracking.fupa.net^ -||tracking.grosseladies.de^ -||tracking.hobbyladies.de^ -||tracking.immobilienscout24.de^ -||tracking.jungeladies.de^ -||tracking.krone.at^ -||tracking.kussladies.de^ -||tracking.ladies.de^ -||tracking.latinaladies.de^ -||tracking.live.wetter.at^ -||tracking.massierendeladies.de^ -||tracking.mollyladies.de^ -||tracking.noen.at^ -||tracking.nsladies.de^ -||tracking.nymphomaneladies.de^ -||tracking.oe24.at^ -||tracking.orientladies.de^ -||tracking.osteuropaladies.de^ -||tracking.piercingladies.de^ -||tracking.rasierteladies.de^ -||tracking.schokoladies.de^ -||tracking.tattooladies.de^ -||tracking.tsladies.de^ -||tracking.zaertlicheladies.de^ -||tracking.zierlicheladies.de^ -||tracksrv.zdf.de^ -||ui-portal.de/pos-cdn/tracklib/ -||vfd2dyn.vodafone.de^ -||vinted.de/relay/events -||wa.gmx.ch^ -||wa.gmx.net^ -||wa.web.de^ -||walbusch.de^$ping -||weltbild.de/tracking/ -||werkenntdenbesten.de/js/tracking. -||werkenntdenbesten.de/pd.js -||wikipedia.de/tracking.js -||witt-weiden.de^$ping -||wlw.de/unified_search_backend/api/v1/tracking/ -||xing.com^$ping -||ymprove.gmx.net^ -||ymprove.web.de^ -||zooplus.de/om/pxl/ -! Danish -||ia.ekstrabladet.dk^ -||jv.dk/assets/statistics/ -! French -||2ememain.be/c3650cdf- -||2ememain.be/px/ -||actu.fr/assets/js/smarttag5280-1.js -||aliasdmc.fr/js/general_sts.js -||allocine.fr/_/geolocalize -||analytics.allovoisins.com^ -||analytics.clubic.com^ -||api.doctolib.fr/nr_insert_ -||api.odysee.com/locale/get -||api.ouedkniss.com^*&xTrackId= -||api.tacotax.fr/v2/amplitude_trackers -||batiactu.com/cap_ -||bmly.impots.gouv.fr^ -||boingtv.fr/track_view -||cdtm.cdiscount.com^ -||centerblog.net/a/in -||cesu.urssaf.fr/clm10 -||clubic.com/tview -||compteur.developpez.com^ -||courrierinternational.com/*&vtag= -||datalayer.orange.fr^ -||dd.leboncoin.fr^ -||decathlon.net/content/tracker.v2.prod.min.js -||developpez.com/public/js/log.js -||donnons.org/log.js -||e.legalstart.fr^ -||e.m6web.fr/events -||easeus.com/default/js/aff_buy_tracking.js -||ecranlarge.com/stat -||email.nautiljon.com/oo/$image -||europe1.fr/assets/europe1/estat. -||events-logs.doctolib.com^ -||flow.kiloutou.fr^ -||fourchette-et-bikini.fr/core/modules/statistics/ -||fr.shopping.rakuten.com/rakuten-static-deliver/mob/*/js/track.js -||fsm.lapresse.ca^ -||gamergen.com/ajax/actualites/addVue -||hits.porn.fr^ -||hlms.ecologie.gouv.fr^ -||ianimes.org/img/tracker.gif -||ici.radio-canada.ca/v5/*/trace/ -||igen.fr/modules/statistics/statistics.php -||insights.v3.decathlon.net^ -||iphoneaddict.fr/wp-content/*/counter.php -||iptvgratuit.net/wp-content/*/analytics.js -||jeu.net/hits.js -||jscrambler.com^$script,domain=airfrance.fr -||kwgs.letudiant.fr^ -||l.francetvinfo.fr^$script -||l.nicematin.com/pv.js -||lacentrale.fr/collect -||lacentrale.fr/static/fragment-sentry/lc-sentry.js -||lacoccinelle.net/tools.js -||laposte.fr/cdp/events? -||ldlc.com/V4px/js/ldlcmachine.js -||leboncoin.fr/rav-monitoring/ -||lecho.be/fb2? -||lecho.be/tag/tag- -||ledevoir.com/js/pianoAnalyticsTags.js -||lemonde.fr/*&cts= -||lemonde.fr/*&stc= -||lemonde.fr/bucket/*/tagistan. -||lemonde.fr^$ping -||leparking-moto.fr/jsV155/Tracker.js -||leparking.fr/*/Tracker.js -||lepoint.fr/img-l/$image -||liberation.fr/newsite/js/cmp/ -||logstash-3.radio-canada.ca^ -||ma-petite-recette.fr/visites -||marmiton.org/reloaded/errpix.php -||medoucine.com/tracking/ -||metrics-broker.prod.p.tf1.fr^ -||neko-san.fr/stats -||ocular.dealabs.com^ -||ouest-france.fr/v1/javascripts/*-googletag- -||ouest-france.fr/v1/javascripts/*-prebid- -||p.pagesjaunes.fr^ -||paruvendu.fr/*/stats/ -||pixel.dugwood.com^ -||pixel.ionos.fr^ -||promoneuve.fr/stat/ -||pt.legalstart.fr^ -||quellavelinge.com/referer.php? -||res.paruvendu.fr^ -||rts.ch^*/boreas_b01.js -||s5.charliehebdo.fr^ -||serv.letudiant.fr^ -||shemsfm.net/ar/setStats/ -||shemsfm.net/fr/setStats/ -||sncf-connect.com/apm -||sncf-connect.com/bff/api/v1/t/events -||space-blogs.net/include/counter/ -||sta.extreme-down. -||sta.wawacity. -||sta.zone-telechargement. -||stat.ouedkniss.com^ -||stats*.credit-cooperatif.coop^ -||stats.sexemodel.com^ -||stats.zone-annuaire. -||stats.zone-telechargement. -||stt.wawacity.onl^ -||surace-jujitsu.fr/outils/compteur_php/ -||t.7sur7.be^$image -||t.blablacar.com^ -||tc2.hometogo.net^ -||techno-science.net/outils/serviceLoc.php? -||telerama.fr/*&ptag= -||tracker.mspy.com^ -||tracking.cdiscount.com^ -||unblog.fr/cu.js -||vinted.fr/relay/events -||wawacity.*/bypass -||woopic.com/z.gif -||wrhv.education.gouv.fr^ -||wstats.gameblog.fr^ -||wt.oscaro.com^ -||yandex.fr/clck/click -||zone-telechargement.al/analytics/ -! Belarusian -||c1hit.zerkalo.io^ -||s1r.zerkalo.io^ -||s3r.zerkalo.io^ -||zerkalo.io/stat/ -! Arabic -||khamsat.com/ajax/account_stats? -||mosoah.com/analytics.js -||tags.aljazeera.net^ -! Bosnian -||insight.olx.ba^ -||klix.ba/pixel/ -! Chinese -||104.com.tw/log/ -||17173.com/ping.js -||17173.com/pv? -||4399.com/js/4399stat.js -||4399.com/plugins/tj/event? -||4399stat.5054399.com^ -||55bbs.com/east.html -||591.com.tw/stats/ -||9game.cn/stat/ -||a.itsmore.cn^ -||ac.dun.163.com^ -||ac.dun.163yun.com/v2/collect? -||accwww9.53kf.com^ -||adstats.tencentmusic.com^ -||al.autohome.com.cn^ -||alicdn.com/f/pcdn/i.php? -||ams.lelong.com.my^ -||analytics-gw.games.wanmei.com^ -||analytics.163.com^ -||analytics.cnblogs.com^ -||analytics.oceanengine.com^ -||analytics.shop.hisense.com^ -||api.ea3w.com/hits.js -||apilog-web.acfun.cn^ -||apiwmda.58.com.cn^ -||applog.yiche.com^ -||audit.qiuwen.net.cn^ -||autohome.com.cn/impress? -||baidu.com/api/bidder/ -||baidu.com/kan/api/ipLocation -||baidu.com^*/ps_default.gif? -||banana.le.com^ -||bc.qunar.com^ -||beacon.qq.com^ -||cherry.le.com^ -||clewm.net/public/cli_analytics.js$domain=cli.im -||click.gamersky.com^ -||clickcount.cnool.net^ -||clientlog.music.163.com^ -||count.candou.com^ -||count5.pconline.com.cn^ -||counter.people.cn^ -||cstm.baidu.com^ -||ctrmi.cn/t/ -||data.bilibili.com^ -||dcard.tw/v1/events -||dig.lianjia.com^ -||dlswbr.baidu.com^ -||dolphin.deliver.ifeng.com^ -||douyucdn.cn/fish3/1.gif -||eastmoney.com/usercollect/ -||eastmoney.com/web/prd/jump_tracker.js -||eclick.360doc.com^ -||ems.youku.com^ -||err.ifengcloud.ifeng.com^ -||event.csdn.net^ -||fclog.baidu.com^ -||flog.pressplay.cc^ -||forum.zuvio.com.tw/api/article/finish -||fp-upload.dun.163.com^ -||frog.yuanfudao.com^ -||ftwo-feedback.autohome.com.cn^ -||ftwo-receiver.autohome.com.cn^ -||gentian-frd.hjapi.com^ -||gia.jd.com^ -||gk.sina.cn^ -||h5.analytics.126.net^ -||h5log.zongheng.com^ -||hisense.com/ta.js -||hktvmall.com/api/event -||huaxiang.eastmoney.com^ -||hujiang.com/v2/log -||i-cable.com/ci/tracking/ -||i-tm.com.tw/api/itm-tracker.js$domain=pixnet.net -||idm.api.autohome.com.cn^ -||ifeng.com/i?p= -||imgstat.baidu.com^ -||improving.wuzhuiso.com^ -||iqiyi.com/dsp_track3 -||iqiyi.com/track2? -||jcm.jd.com^$script,third-party -||jcmonitor.xcar.com.cn^ -||jiayuan.com^*/pv.js -||js.ea3w.com/pv.js -||kn007.net/snmp.php -||le.com/op/ -||log.bitauto.com^ -||log.flight.qunar.com^ -||log.m.sm.cn^ -||log.mix.sina.com.cn^ -||log.sina.cn^ -||log.zongheng.com^ -||log2.sina.cn^ -||logs.51cto.com^ -||logtake.weidian.com^ -||m.diyibanzhu.buzz/17mb/script/tj.js -||m.diyibanzhu.buzz/17mb/script/wap.js -||mail.qq.com/cgi-bin/getinvestigate? -||map.baidu.com/newmap_test/static/common/images/transparent.gif -||metric.huya.com^ -||mi.com/stat/ -||monitor.music.qq.com^ -||mp.weixin.qq.com/mp/appmsgreport? -||mp.weixin.qq.com/mp/getappmsgad? -||mp.weixin.qq.com/mp/jsmonitor? -||mp.weixin.qq.com/mp/report? -||mp.weixin.qq.com/mp/webcommreport? -||msg.qy.net^ -||msgsndr.com/funnel/event -||mtrace.qq.com^ -||music.163.com/device/signature/create/deviceid.js -||music.163.com/weapi/feedback/weblog -||music.163.com/weapi/pl/count -||netstat.yunnan.cn^ -||nex.163.com^ -||p.data.cctv.com^ -||pan.baidu.com/api/report/ -||pan.baidu.com/pcloud/counter/refreshcount? -||pan.baidu.com/recent/report? -||pb.i.sogou.com^ -||people.cn/js/pa.js -||phpstat.cntcm.com.cn^ -||pingjs.qq.com^ -||pinkoi.com/_log/ -||pixel.kknews.cc^ -||poro.58.com^ -||pptv.com/stg/add? -||pptv.com/webdelivery/ -||pressplay.cc/marketing/event -||pv.ltn.com.tw^ -||pv.xcar.com.cn^ -||pvx.xcar.com.cn^ -||qhimg.com/11.0.1.js$script -||qihucdn.com/11.0.1.js$script -||qiyukf.com/webda/da.gif$domain=youdao.com -||qq.com/code.cgi? -||qq.com/collect/ -||qq.com/kvcollect? -||qq.com/p? -||qq.com/qqcom/ -||qq.com/report.cgi? -||qq.com/report/$image,xmlhttprequest -||qq.com/report| -||qq.com/stdlog -||qreport.qunar.com^ -||qzone.qq.com/iframe/report -||qzone.qq.com/wspeed.qq.com^ -||qzonestyle.gtimg.cn/qzone/v8/ic/iframeReport.js -||rcgi.video.qq.com^ -||referer.pixplug.in^ -||reportsk.web.sdo.com^ -||retcode.taobao.com^ -||reurl.cc/javascripts/tagtoo.js -||rlogs.youdao.com^ -||ro.aiwan4399.com^ -||s.360.cn^ -||s.pixfs.net/js/pixlogger.min.js -||s.pixfs.net/visitor.pixplug.in/ -||sbeacon.sina.com.cn^ -||sentry.music.163.com^ -||sfp.safe.baidu.com^ -||shopee.tw/__t__ -||shopee.tw/v2/shpsec/web/report -||shrek.6.cn^ -||sina.com.cn/view? -||sinajs.cn/open/api/js/wb.js -||sngmta.qq.com^ -||sofire.bdstatic.com^ -||sogou.com/cl.gif? -||sogoucdn.com/hhytrace/ -||sohu.com/adgtr/ -||sohu.com/count/ -||sohu.com/ip/$script -||sohu.com/pccollector -||sohu.com/pv.js -||soufun.com/click/ -||soufun.com/stats/ -||ssp.hinet.net^ -||stadig.ifeng.com^ -||stat-58home.58che.com^ -||stat.*.v-56.com^ -||stat.caijing.com.cn^ -||stat.funshion.net^ -||stat.iteye.com^ -||stat.stheadline.com^ -||stat.uuu9.com^ -||stat.y.qq.com^ -||stat.zol.com.cn^ -||static.funshion.com/*/common/log/ -||static.qiyi.com/js/pingback/ -||statistic.qzone.qq.com^ -||steamchina.com/events/ -||sugar.zhihu.com^ -||tbskip.taobao.com^$script -||tf.360.cn^ -||theav.xyz/anyalytics -||theporn.cc/anyalytics? -||tianxun.com/ajax_website_statistics. -||titan24.com/scripts/stats.js -||tj.img4399.com^ -||tongji.mafengwo.cn^ -||tongji.xinmin.cn^ -||tongji2.vip.duba.net/__infoc.gif? -||top.baidu.com/js/nsclick.js -||toutiao.com/action_log/ -||toutiao.com^*/user_log/ -||tr.discuss.com.hk^ -||tr.price.com.hk^ -||trace.qq.com^ -||track.hujiang.com^ -||track.sohu.com^ -||track.tom.com^ -||trackcommon.hujiang.com^ -||tracker.ai.xiaomi.com^ -||trail.53kf.com^ -||uestat.video.qiyi.com^ -||utrack.hexun.com^ -||uuu9.com/s.php? -||v.blog.sohu.com/dostat.do? -||vatrack.hinet.net^ -||vipstatic.com/mars/ -||visit.xchina.pics^ -||visitorapi.pixplug.in^$domain=pixnet.net -||wanmei.com/public/js/stat.js -||weather.com.cn/a1.js -||webstat.kuwo.cn^ -||weibo.cn/h5logs/ -||weibo.com/aj/log/ -||weiyun.com/cgi-bin/tianshu_report -||weiyun.com/proxy/domain/boss.qzone.qq.com/fcg-bin/fcg_rep_strategy? -||wenku.baidu.com/tongji/ -||wkctj.baidu.com^ -||wl.jd.com^$third-party -||work.3dmgame.com/js/statistics.js -||wumii.com/images/pixel.png -||xcar.com.cn/exp/ -||xiaohongshu.com/api/collect -||xiaohongshu.com/api/v2/collect -||xiaomi.com/js/mstr.js? -||ylog.huya.com^ -||youku.com/log/ -||yxdown.com/count.js -||zcool.com.cn/track/ -||zhihu-web-analytics.zhihu.com^ -||zhihu.com/collector/ -||zhihu.com/zbst/events/ -||zio.xcar.com.cn^ -||zol-img.com.cn^*/logger.js -||zongheng.com^*/logger.min.js -||zz.bdstatic.com^ -! Croatian -||avaz.ba/update/hits/ -||jutarnji.hr/template/js/eph_analytics.js -! Czech -||cc.dalten.cz^ -||jslog.post.cz^ -||o2.cz^*-ga_o2cz_bundle.js? -||stat.super.cz^ -||statistics.csob.cz^ -! Dutch -||2dehands.be/px/ -||analytics.rambla.be^ -||api.rtl.nl/monitoring/ -||bc34.wijnvoordeel.nl^ -||bol.com/tracking/ -||businessinsider.nl^*/tr.php -||c.vrt.be^ -||coolblue.nl/monitoring/ -||ds2.independer.nl^ -||events.reclamefolder.nl^ -||expert.nl/daix.js -||fd.nl/pixel/ -||folderz.nl/clickstream/ -||infonu.nl/t.php? -||kieskeurig.nl/collect -||kieskeurig.nl/track- -||klik.nrc.nl/ping? -||log.rabobank.nl^ -||logs.ggweb.nl^ -||marktplaats.nl/add_counter_image. -||marktplaats.nl/metrics/ -||marktplaats.nl/px/ -||metrics.nu.nl^ -||njam.tv/tracking/ -||npo-data.nl/tag/v3/npotag.js -||npo-data.nl/tags/tag.min.js -||npo.nl/tag/atinternet/ -||pcmweb.nl/track/ -||pg.totaaltv.nl/api/metrics -||pipeline.lc.nl^$~script -||pipeline.rd.nl^$~script -||r.kleertjes.com^ -||rtl.nl/system/track/ -||sanoma.nl/pixel/ -||sat.sanoma.fi^ -||stats.fd.nl^ -||t.ad.nl^$image -||t.bd.nl^$image -||t.bndestem.nl^$image -||t.destentor.nl^$image -||t.ed.nl^$image -||t.gelderlander.nl^$image -||t.hln.be^$image -||t.pzc.nl^$image -||t.tubantia.nl^$image -||t.vrt.be^ -||tdep.kvk.nl^ -||tijd.be/fb/? -||tijd.be/fb2? -||tijd.be/track/ -||topspin.npo.nl^ -||track.pexi.nl^ -||tracking.voordeeluitjes.nl^ -||tvgids.nl/collect -||tweakers.nl/track/ -||txrx.bol.com^ -||u299.libelle-lekker.be^ -||vinted.nl/relay/events -||vroom.be^*/stats.js? -||vroom.be^*/stats.php? -! Finnish -||analytics.sanoma.fi^ -||api.nettix.fi/counter/$image -||data.reactandshare.com^ -||dax.yle.fi^ -||dp.alma.iltalehti.fi/v1/cookie -||events.il.fi^ -||hs.fi/stats -||huuto.net/js/analytic/ -||ilcdn.fi^*/Bootstrap.js -||io-tech.fi/io/www/delvr/lokiz.php -||is.fi/stats/ -||logger.omio.com^ -||mha.fi/simple.gif? -||mtv3.fi/remarketing.js -||nelonenmedia.fi/hitcounter$image -||omataloyhtio.fi/ffsw-pushcrew.js -||omataloyhtio.fi/kuvat/pi.gif$image -||omataloyhtio.fi/statb.asp -||puutarha.net/ffsw-pushcrew.js -||puutarha.net/statb.asp -||rac.ruutu.fi^ -||rakentaja.fi/kuvat/pi.gif$image -||rantapallo.fi/s/redirect/tracking? -||stat.mtv3.fi^ -||stats.fonecta.fi^ -||tori.fi/img/none.gif$image -||ts.fi/Statistics/Log$image -||ts.fi^*/spring.js -! Greek -||skroutz.gr/analytics/ -||skroutza.skroutz.gr/skroutza.min.js -||vidads.gr/imp/ -! Hebrew -||bravo.israelweather.co.il^ -||cellstats.mako.co.il^ -||ds.haaretz.co.il^ -||inn.co.il/Controls/HPJS.ashx?act=log -||stats.mako.co.il^ -||walla.co.il/CountsHP.asp? -||walla.co.il/impression/ -! Hungarian -||adat.borsonline.hu^ -||adat.ingatlanbazar.hu^ -||adat.koponyeg.hu^ -||adat.life.hu^ -||adat.mandiner.hu^ -||adat.mindmegette.hu^ -||adat.origo.hu^ -||adat.travelo.hu^ -||adat.veol.hu^ -||adat.videa.hu^ -||beam.telex.hu^ -||events.ingatlan.com^ -||hirtv.hu/ajaxx/_stat/ -||hirtv.hu/nx_general_stat.jpg? -||otthonterkep.hu/c.js -||outal.origo.hu^ -||rtl.hu/_stat/ -||videa.hu/flvplayer_setcookie.php? -! Indonesian -||analytic20.detik.com^ -||bukalapak.com/banner-redirector/impression -||bukalapak.com/track-external-visit -||bukalapak.com/track_external.json -||ktracker.kumparan.com^ -||t.bukalapak.com^ -||ta.tokopedia.com/promo/v1/views -||tokopedia.com/helios-client/client-log -! Italian -/~shared/do/~/count/?$image -||alfemminile.com/logpix.php -||altervista.org/js/contatore.js -||altervista.org/js_tags/contatore.js -||altervista.org/stats/ -||altervista.org^*/tb_hits_ -||analytics.laregione.ch^ -||analytics.ticinolibero.ch^ -||analytics.tio.ch^ -||analytics.traderlink.com^ -||as.payback.it^ -||automobile.it/fb/ -||avvenire.it/content/js/track.es5.min.js? -||bachecaannunci.it/statins3.php? -||bnamic.com/referrer/ -||c-date.it/tracking? -||c-date.it^*/tracking2/tr.js -||c.corriere.it^ -||catalove.com/bimp/ -||catalove.com/ntv/ -||click.tv.repubblica.it^ -||clickserver.libero.it^ -||compare.easyviaggio.com^ -||data.segugio.it^ -||deagostinipassion.it/collezioni/analytics.js -||execution-ci360.rai.it^ -||fanpage.it/views/ -||freeonline.org/sito_track? -||gazzetta.it^*/stats.php? -||insights.cdt.ch^ -||joka.it/inquiero/isapi/csf.dll? -||la7.it/js-live/nielsen1.js -||lalaziosiamonoi.it/pixel -||laregione.ch/ext/av.php? -||leggo.it/index.php?$image -||libero.it//js/comscore/ -||libero.it/cgi-bin/ajaxtrace? -||libero.it/cgi-bin/cdcounter.cgi? -||libero.it/cgi-bin/cdcountersp.cgi? -||libero.it/cgi-bin/twit? -||libero.it/search/abin/ajaxtrace? -||libero.it^*/counter.php? -||lupoporno.com/js/analytics -||ma.register.it^ -||mediaset.it/cgi-bin/getcod.cgi? -||mtv.it/flux/trackingcodes/ -||paginebianche.it/cgi-bin/jbimpres.cgi? -||paginebianche.it/ip?dv= -||paginegialle.it/cgi-bin/getcod.cgi? -||paginegialle.it/cgi-bin/jimpres.cgi? -||paginegialle.it/engagement.js -||ppcdn.it/iol/tracklib.3.js -||raiplay.it/tracking/ -||repstatic.it^*/nielsen_static_mapping_repubblica_ -||seat.it/cgi-bin/getcod.cgi? -||servizi.unionesarda.it/controlli/ -||smsaffari.it/count_new.php? -||spaziogames.it/ajax/player_impression.ashx? -||stats.splinder.com^ -||stats.stylight.it^ -||stats.suedtirolerjobs.it^ -||t.mediaset.it^ -||tantifilm.top^*/ping -||timinternet.it/timmobilestatic/img/*.gif? -||timinternet.it/timmobilestatic/jsPrivacy/gdl_function_cookie.js -||tio.ch/ext/u.php? -||tio.ch/lib/videojs/video-js-tiostats.js -||tiscali.it/banner-tiscali/stats.html? -||tla.traderlink.com^ -||topolino.it^*/omniture.php? -||track.tesiteca.it^ -||tracker.stileo.it^ -||tracking.donnemagazine.it^$script -||tracking.foodblog.it^$script -||tracking.gruppo.mps.it^ -||tracking.mammemagazine.it^$script -||tracking.motorimagazine.it^$script -||tracking.notizie.it^$script -||tracking.offerteshopping.it^$script -||tracking.style24.it^$script -||tracking.tuobenessere.it^$script -||tracking.viaggiamo.it^$script -||tuttocagliari.net/pixel -||tuttogratis.it/gopix.php? -||tuttomercatoweb.com/pixel -||video.mediaset.it/polymediashowanalytics/ -||videogame.it/a/logview/ -||vinted.it/relay/events -||virgilio.it/clientinfo.gif? -||virgilio.it/js/web-vitals-evnt/tracking.js -||volkswagen-italia.it^*/tracking/ -||vvvvid.it^$ping -||yachtingnetwork.it/stat/ -! Japanese -||abema-tv.com/v1/stats/ -||ad-platform.jmty.jp^ -||amazonaws.com/ai-img/aia.js -||ameba.jp/cookie/ -||ameblo.jp/accesslog/ -||analysis.aws.locondo.jp^ -||analytics.castel.jp^ -||analytics.cocolog-nifty.com^ -||analytics.ikyu.com^ -||analytics.tver.jp^ -||analyzer.fc2.com^ -||analyzer2.fc2.com^ -||anyelse.com/stat^ -||askdoctors.jp/assets/packs/js/impression_tracker- -||astat.nikkei.com^ -||astral.nicovideo.jp^ -||barks.jp/v1/stats -||bc.nhk.jp^ -||beacon.radiko.jp^ -||beacon.watch.impress.co.jp^ -||beat.yourtv.jp^ -||bookoffonline.co.jp/files/inc_js/ac/ -||bookoffonline.co.jp/files/tracking/ -||carview.co.jp/include_api/log/ -||contx.net/collect.js -||count.upc.rakuten.co.jp^ -||crank-in.net/assets/common/js/sendpv.js -||d-log.asahi.co.jp^ -||d-log.bs-asahi.tv^ -||d-log.tv-asahi.co.jp^ -||d.tv-asahi.co.jp^ -||daiichi-kamotsu.co.jp/js/google_analytics.js -||dmm.com/analytics/ -||dmm.com/imp? -||doda.jp/DodaCommon/Html/js/RtoasterTrack.js -||doda.jp/DodaFront/Html/js/dodaPrime_pc_aaTag.js -||doda.jp/resources/dcfront/js/usrclkTracking.js -||dxlive.com/js/dtrace.js -||eq-beacon.stream.co.jp^ -||eq-player-log.cdnext.stream.ne.jp^ -||eropuru.com/plugin/tracking/ -||event.lib.visumo.io/js/hbn_track.js -||fensi.plus^*/tracking/ -||fspark-ap.com/ft/analytics_log -||g123.jp/stats? -||game-i.daa.jp/skin/analytics.php -||gizmodo.jp/api/SurveyCountCollection? -||goo.ne.jp^*/vltracedmd.js -||gtm.diamond.jp^ -||hatarako.net/api/recommend/analyze_logger -||hatena.ne.jp/api/log? -||i2i.jp/bin/ -||img.syosetu.org/js/c_ -||j1.ax.xrea.com^ -||k-crm.jp/tracking.js -||link.tv-asahi.co.jp/tver/cookiesync? -||ln.ameba.jp^ -||log-lb.skyperfectv.co.jp^ -||log.recommend.nicovideo.jp^ -||logql.yahoo.co.jp^ -||m-oo-m.com/data/report/ -||mangaraw.to/api/v1/view/ -||mayla.jp/TRACKING/ -||measure.ameblo.jp^ -||medibot.delling.care/api/counts/ -||minkou.jp/js/tracking.js -||mixi.net/static/js/build/mixi-analysis.production.js -||mng.jiji.com/cookie.html -||muragon.com/js/normal/gtag-event.js -||mwed.jp/assets/packs/js/measurements/ -||newsdig.tbs.co.jp/op/analytics.js -||next.rikunabi.com/api/logRecommendRealtimeI2AV2 -||nhk.or.jp^*/bc.js -||nicoad.nicovideo.jp/*/instream/tracking/ -||nicolive.cdn.nimg.jp/relive/sp/browser-logs. -||nicolive.cdn.nimg.jp/relive/sp/trackingService. -||nicovideo.jp/api/counter/ -||nikkei.com/.resources/tracking/ -||nvapi.nicovideo.jp/v1/bandit-machine/ -||odsyms15.com/impression? -||portal.kotodaman.jp/api/otel/v1/logs -||pvtag.yahoo.co.jp^ -||pw.gigazine.net^ -||pzd.rakuten.co.jp^ -||rakuten.co.jp/com/js/omniture/ -||rakuten.co.jp/gw.js -||rat.rakuten.co.jp^ -||rdsig.yahoo.co.jp^$image -||rebuyengine.com/api/*/analytics/event/ -||rec1.smt.docomo.ne.jp/bcn_access_log/ -||recv-entry.tbs.co.jp^ -||recv-jnn.tbs.co.jp^ -||recv.tbs.co.jp^ -||retty.me/gen204.php -||retty.me/javascripts/common/logging.js -||revico.jp/providejs/revico_tracking.js -||revive-chat.io/js/tracking-min.js -||rtm-tracking.zozo.jp^ -||sankei.co.jp/js/analytics/ -||scinable.net/access? -||seesaawiki.jp/img/rainman.gif? -||service.webgoto.net/*?wAnalytics -||shipping.jp/raa/rd.js -||so-zou.jp/js/ga.js -||ssai.api.streaks.jp/*/ad_info? -||stats.nhk.or.jp^ -||sy.amebame.com^ -||sy.ameblo.jp^ -||t.syosetu.org^ -||tekoki-fuzoku-joho.com/js/ALinkPrepare_ -||temp.twicomi.com^ -||tower.jp/bundle/beacon -||track.buyma.com^ -||track.prod.smash.pet^ -||tracking.ai.rakuten.co.jp^ -||tracking.game8.jp^ -||tracking.gnavi.co.jp^ -||travel.co.jp/js/analysis.js -||travel.co.jp/tracking.asp -||tsite.jp/static/analytics/ -||tv-asahi.co.jp/official/logging? -||twivideo.net/templates/ajax_link_click.php -||view.fujitv.co.jp^ -||visumo.jp/Content/js/tracking.js -||withnews.jp/assets/js/bcon.js -||wowow.co.jp/API/new_prg/get_tracking_url.php -||wrtn.ai/proxy/client/metrics -||x.allabout.co.jp^ -||yahoo.co.jp/b?p= -||yahoo.co.jp/p? -||yahoo.co.jp/s?s= -||yjtag.yahoo.co.jp^ -||zatsubitown.com/mailfriend/kaiseki -! Korean -||11st.co.kr/st/ -||ad-log.dable.io^ -||adoffice.11st.co.kr^ -||aem-collector.daumkakao.io^ -||auction.co.kr/ad/log.js -||auction.co.kr/montelena.js -||bizlog-gateway.myrealtrip.com^ -||cdp.yna.co.kr^ -||chosun.com/hitlog/ -||count.munhwa.com^ -||cue.search.naver.com/api/*/log/ -||data-logdelivery.wconcept.co.kr^ -||daumcdn.net^*/awsa.js -||dpg.danawa.com/*/rest/*getStampEvent -||gmarket.co.kr/js/common/uuid.js -||hits.zdnet.co.kr^ -||jdsports.co.kr/collect.php -||kyson.kakao.com^ -||l.m.naver.com^ -||log.etoday.co.kr^ -||log.kinolights.com^ -||log.tossinvest.com^ -||log.zdnet.co.kr^ -||naver.com/PostView.nhn?$image -||nil.naver.com^ -||nlog.naver.com^ -||pds.auction.co.kr^ -||rake.11st.co.kr^ -||seoul.co.kr/weblog/ -||shinsegae.com/topNPopup.do -||sp.naver.com^ -||ssgdfs.com/kr/common/getPageIcfCd -||stat.i3.dmm.com^ -||stat.tiara.daum.net^ -||stat.tiara.kakao.com^ -||stat.tiara.tistory.com^ -||stat.wanted.jobs^ -||track.tiara.daum.net^ -||track.tiara.kakao.com^ -||tracker.cauly.co.kr^ -||traders.co.kr/common/js/makePCookie.js -||uts.auction.co.kr^ -||utsssl.auction.co.kr^ -||wcs.naver.com^ -||weblog.coupang.com^ -||weblog.eseoul.go.kr^ -||weblog2.eseoul.go.kr^ -||ytn.co.kr/_comm/ylog.php? -! Latvian -||cv.ee/static/stat.php -||delfi.lv/t/p.js -||delphi.lv/t/t.js -||diena.lv/statistics/ -||inbox.lv^*/ga.js -||insbergs.lv/ins_statistics/ -||reklama.lv/services/espy.php -||ss.lv/counter/ -||stats.tunt.lv^ -||tanks.lv/top/stats.php -! Lithuanian -||15min.lt/cached/tgif$~third-party -||g.delfi.lt/g.js -||lrytas.lt/counter/ -! Malaysian -||event-tracking.hellohealthgroup.com^ -||propertyguru.com.my/api/consumer/vast-media/impression? -! Norwegian -||click.vgnett.no^ -||data.nrk.no^ -||nrk.no^*/stats/ -||stats.proff.no^ -||stm.komplett.no^ -||tdep.hema.nl/main.js -||vg.no/stats/ -! Persian -||abadis.ir/ajaxcmd/setvisit/ -||aparat.com/gogol/ -||namnak.com/act/stats.json -||namnak.com/ga.js -! Polish -|http://x.o2.pl^ -||analytics.gazeta.pl^ -||collect.state.centrum24.pl^ -||dot.wp.pl^$script -||entryhit.wp.pl^ -||euro.com.pl/log-customer-visit -||eventstream.dodopizza.com^ -||ingbank.pl/mojeing/bs/xx.js -||interia.pl^*/hit. -||iplsc.com/inpl.log/ -||iwa.iplsc.com^ -||kropka.onet.pl^ -||mklik.gazeta.pl^ -||nasza-klasa.pl^*/pp_gemius -||p.gazeta.pl^ -||p2ro4u.trybawaryjny.pl^ -||pixel.wp.pl^ -||rek.www.wp.pl^ -||savecart.pl/d/ -||squid.gazeta.pl/bdtrck/ -||stats.teledyski.info^ -||wp.pl/?rid= -||wtk.pl/js/WTKStats.js -! Portuguese -||audience-mostread.r7.com^ -||click.uol.com.br^ -||dejavu.mercadolivre.com.br^ -||dn.pt/tag/ -||dna.uol.com.br^ -||g.bit.pt^ -||g.bitmag.com.br^ -||geoip.ativo.com^ -||globo-ab.globo.com^ -||globo.com/geo? -||hits.letras.mus.br^ -||horizon.globo.com^ -||jsuol.com.br/aud/$script -||lancenet.com.br/pw.js -||log-ads.r7.com^ -||logger.rm.uol.com.br^ -||logger.uol.com.br^ -||matt.mercadolivre.com.br^ -||metrics.uol.com.br^ -||olx.com.br^*/lurker. -||poder360.com.br/_tracker -||r7.com/comscore/ -||sapo.*/clk?u= -||sapo.pt/Projects/sapoabd/ -||sinonimos.com.br/hits.php -||standvirtual.com^$ping -||strapi.clickjogos.com.br^ -||tags.globo.com^ -||terra.com.br^*/metrics.js -||tm.uol.com.br^ -||track.exame.com^ -||track.olx.com.br^ -||tracker.bt.uol.com.br^ -||tracker.publico.pt^ -||uai.com.br^*/analytics.js -||uol.com.br/stats? -! Romanian -||agrointel.ro/ga.js -||agrointel.ro/track.js -||analytics.okazii.ro^ -||views.b1tv.ro^ -||views.romaniatv.net^ -! Russian -||2ch.hk^*/tracker.js? -||2gis.ru/_/log -||2gis.ru/_/metrics -||3dnews.ru/track -||4pda.ru/stat/ -||a.mts.ru^ -||a.pikabu.ru^ -||a.ria.ru^ -||ad.mail.ru/static/sync-loader.js -||ad7.bigmir.net^ -||adme.media/metric-collector -||affilate.hh.ru^ -||agroserver.ru/ct/ -||analytics.carambatv.ru^ -||api.litres.ru/tracker/ -||auto.ru/-/ajax/$~xmlhttprequest -||auto.ru/cookiesync/ -||avito.ru/stat/ -||babyblog.ru/pixel? -||c.sibnet.ru^ -||clck.dzen.ru^ -||consultant.ru/js/counter.js -||cosmo.ru/*/.js?i=*&r= -||counter.drom.ru^ -||counter.sibnet.ru^ -||cpa.hh.ru^ -||credistory.ru/api/v1/LiveMetrics/ -||cs42.pikabu.ru^ -||cs43.pikabu.ru^ -||cvt1.sibnet.ru^ -||data.glamour.ru^ -||drom.ru/dummy. -||dzen.ru/api/*/stats/ -||dzen.ru/clck/ -||dzen.ru/pingx -||dzeninfra.ru/ping? -||fb.ru/stat/ -||fontanka.ru/api/metrics/ -||fotostrana.ru/start/ -||goya.rutube.ru^ -||hh.ru/analytics^ -||hh.ru/stat? -||interfax.ru/cnt/ -||irecommend.ru/collect/ -||jetvis.ru/stat/ -||kommersant.ru/a.asp?p= -||kommersant.uk/banner_stats -||lamoda.ru/z? -||link.subscribe.ru^ -||livelib.ru/service/pinger -||livelib.ru/service/spv -||livelib.ru/service/traffic -||livelib.ru/service/visitlist/ -||lmcdn.ru^*/statistics.js -||log.dzen.ru^ -||log.ren.tv^ -||log.rutube.ru^ -||mail.ru/count/ -||metrika.kontur.ru^ -||mirtesen.ru/js/ms.js -||ms.dzen.ru^ -||mts.ru/fe-api/logger -||mytoys.ru/ka_z.jpg? -||ngs.ru/s/ -||odnoklassniki.ru/dk?cmd=videoStatNew -||ok.ru/dk?cmd=videoStatNew -||ozon.ru/tracker/ -||pikabu.ru/ajax/analytics.php -||pikabu.ru/apps/*/analytics.js -||pikabu.ru/stat/ -||pixels.boxberry.ru^ -||rabota.by/analytics? -||rabota.by/stat? -||radar.imgsmail.ru^ -||rambler.ru/metrics/ -||rambler.ru/ts-metrics/ -||rbc.ru/click? -||rbc.ru/count/ -||rbc.ru/redir/stat/ -||rbc.ru/rightarror.gif -||rt.ru/proxy? -||rutube.ru/counters.html? -||rutube.ru/dbg/player_stat? -||seedr.ru^*/stats/ -||servernews.ru/track? -||sibnet.ru/counter.php? -||ssp.rambler.ru^ -||start.ru/logger/ -||stat.5-tv.ru^ -||stat.api.2gis.ru^ -||stat.bankiros.ru^ -||stat.pravmir.ru^ -||stat.russianfood.com^ -||stat.stars.ru^ -||stats.mos.ru^ -||superjob.ru/ws/ -||sync.rambler.ru^ -||tes-game.ru/stat/ -||tonkosti.ru/go.php? -||top-staging.mail.ru^ -||top.mail.ru/tc?js -||top.mail.ru/tpc.js -||top.mail.ru/tt?js -||trk.mail.ru^$image,script -||vedomosti.ru/boom? -||vesti.ru/counter/ -||vstat.rtr-vesti.ru^ -||xapi.ozon.ru^$ping -||xray.mail.ru^ -||yandex.ru/log? -||yast.rutube.ru^ -! Slovak -||harvester.cms.markiza.sk^ -! Slovene -||24ur.com/bin/player/?mod=statistics& -||dnevnik.si/tracker/ -||go-usertrack-importer.pub.24ur.si^ -||ninja.data.olxcdn.com/ninja-olxba.js -||tracker.azet.sk^ -! Spanish -||abc.es/pixel/ -||aemet.es/js/stats.js -||analytics.bolavip.com^ -||analytics.emol.com^ -||analytics.infobae.com^ -||analytics.redlink.com.ar^ -||audiencies.ccma.cat^ -||bankinter.com/res/img/documento_cargado.gif? -||caixabank.es/util/pixel.png? -||caliente.mx/integration-scripts/tracking.min.js -||coletor.terra.com^ -||compare.easyviajar.com^ -||emol.com/bt/ping -||epimg.net/js/*/satelliteLib- -||esfbs.com/site/stat? -||esmas.com/scripts/esmas_stats.js -||estadisticas.lanacion.com.ar^ -||estadonline.publiguias.cl^ -||fnvma.milanuncios.com^ -||g.siliconweek.es^ -||genial.guru/metric-collector -||geo.emol.cl^ -||gruporeforma.com/clickGrupoReforma.js -||hits.antena3.com^ -||horizon-track.globo.com^ -||logs.openbank.com^ -||matt.mercadolibre. -||mediaserver.emol.cl/rtracker/ -||mega.promodescuentos.com^ -||mercadolibre.com/tracks^ -||mundodesconocido.com/tracker/ -||ocular.promodescuentos.com^ -||pixel.europapress.net^ -||px-intl.ucweb.com^ -||realtime.bbcl.cl^ -||rvv.emol.com^ -||sst.cooperativa.cl^ -||statsmp2.emol.com^ -||t-pan.triodos.com^ -||t13.cl/hit/ -||taringa.net/ajax/track-visit.php -||terra.com.mx/js/metricspar_ -||terra.com.mx^*/metrics_begin.js -||terra.com.mx^*/metrics_end.js -||terra.com/js/metrics/ -||terra.com^*/td.asp?bstat -||todomercadoweb.es/pixel -||tracker.jkplayers.com^ -||trrsf.com/metrics/ -||ubeat.tv/api/v1/sda/ -||uecdn.es/js/pbmu.js -||unm.emol.com^ -||wssgmstats.vibbo.com^ -||wsstats.coches.net^ -! Swedish -||aftonbladet.se/cnp-assets/glimr-sdk.js -||ai.idg.se^ -||ax.idg.se^ -||blocket.se/js/trafikfonden.js -||bonmed.se/monitoring? -||falkenbergtorget.se/sc.gif? -||fotbollskanalen.se^$ping -||fusion.bonniertidskrifter.se^ -||gx.idg.se^ -||prisjakt.nu/js.php?p=trafikfonden -||stat.nyheter24.se^ -! Thai -||dek-d.com^*/analytic.js -||scribe.wongnai.com^ -||ta.sanook.com^ -||thairath.co.th/event/ -! Turkish -||athena-event-provider.n11.com^ -||c.gazetevatan.com^ -||cimri.com/api/pixel -||d.haberler.com^ -||d.sondakika.com^ -||glami.com.tr/tracker/ -||h.n11.com^ -||haberler.com/dinamik/ -||hepsiburada.com/api/track -||hit.cnbce.com^ -||hstats.hepsiburada.com^ -||hstatstest.hepsiburada.com^ -||iys.org.tr/mti-popts.js -||kunduz.com/kunduzlytics.min.js -||sahibinden.com/sbbi/ -||stats.birgun.net^ -||tracker.blutv.com^ -! Ukrainian -|http://r.i.ua^ -|https://r.i.ua^ -||analytics.cosmonova.net^ -||at.ua/stat/ -||counter.nv.ua^ -||counter.ukr.net^ -||meta.ua/c.asp? -||obozrevatel.com/pixel.png -||piccy.info/c? -||piccy.org.ua/c? -||remp.nv.ua^ -||sport.ua/pixel/ -||target.ukr.net^ -! Vietnamese -||analytics.aita.gov.vn^ -||api.baomoi.com^$image -||coccoc.com/log -||log.ttbc-hcm.gov.vn^ -||logsbin.dantri.com.vn^ -||pixel.coccoc.com^ -||tka.tiki.vn/pixel/ -||track-srv.vietnamnet.vn^ -||w-api.baomoi.com^$image -!-----------------------Allowlists to fix broken sites------------------------! -! *** easylist:easyprivacy/easyprivacy_allowlist.txt *** -@@/cgi-bin/counter_module?action=list_models$subdocument,~third-party -@@||1.1.1.1/cdn-cgi/trace$xmlhttprequest,domain=myair.resmed.com|one.one.one.one -@@||1001trackstats.com/api/$xmlhttprequest,domain=songstats.com -@@||1trackapp.com/static/tracking/$script,stylesheet,~third-party -@@||8tm.net/static/img/fbpixel.png$~third-party -@@||a.usafacts.org/api/v4/Metrics$~third-party -@@||ab.blogs.es/abtest.png$domain=trendencias.com|xataka.com -@@||account.adobe.com/newrelic.js$~third-party -@@||accounts.intuit.com/fe_logger?$~third-party -@@||addthis.com/*-angularjs.min.js$script,domain=ead.senac.br|missingkids.com|missingkids.org -@@||addthis.com/js/*/addthis_widget.js$script,domain=stagecoachbus.com -@@||admin.memberspace.com/sites/*/analytics/views$~third-party -@@||adobedc.demdex.net/ee/v1/identity/$xmlhttprequest,domain=cibc.com -@@||adobedtm.com/launch-$script,xmlhttprequest -@@||adobedtm.com^*/launch-$script,xmlhttprequest -@@||adobedtm.com^*/s-code-$script -@@||adobedtm.com^*/satellite-$script -@@||aeries.net^*/require/analytics/views/$script,~third-party -@@||ajio.com/static/assets/vendors~static/chunk/common/libraries/fingerprintjs2.$script,~third-party -@@||akamaihd.net/nbad/player/*/appmeasurement.js$domain=watch.nba.com -@@||akamaihd.net/nbad/player/*/visitorapi.js$domain=watch.nba.com -@@||alphaapi.brandify.com/rest/clicktrack$xmlhttprequest,domain=traderjoes.com -@@||analytics-static.ugc.bazaarvoice.com/prod/$script,domain=hisense.co.uk -@@||analytics.amplitude.com^$~third-party -@@||analytics.analytics-egain.com/onetag/$script,domain=boohoo.com|digikey.at|digikey.be|digikey.bg|digikey.ca|digikey.ch|digikey.cn|digikey.co.il|digikey.co.nz|digikey.co.th|digikey.co.uk|digikey.co.za|digikey.com|digikey.com.au|digikey.com.br|digikey.com.mx|digikey.cz|digikey.de|digikey.dk|digikey.ee|digikey.es|digikey.fi|digikey.fr|digikey.gr|digikey.hk|digikey.hu|digikey.ie|digikey.in|digikey.it|digikey.jp|digikey.kr|digikey.lt|digikey.lu|digikey.lv|digikey.my|digikey.nl|digikey.no|digikey.ph|digikey.pl|digikey.pt|digikey.ro|digikey.se|digikey.sg|digikey.si|digikey.sk|digikey.tw -@@||analytics.casper.com/gtag/js$~third-party -@@||analytics.casper.com/gtm.js$~third-party -@@||analytics.edgekey.net/ma_library/html5/html5_malibrary.js$script,domain=mxplayer.in -@@||analytics.itunes.apple.com^$~third-party -@@||api-analytics.magstimconnect.net^$~third-party -@@||api-js.datadome.co/js/$domain=sso.garena.com -@@||api-mg2.db-ip.com^$xmlhttprequest,domain=journal-news.com -@@||api.amplitude.com^$xmlhttprequest,domain=insiderintelligence.com -@@||api.ipinfodb.com^$xmlhttprequest,domain=management30.com -@@||api.perfops.net^$script,xmlhttprequest,domain=cdnperf.com|dnsperf.com -@@||api.touchnote.io^$xmlhttprequest,domain=app.touchnote.com -@@||api.vk.com/method/statEvents.$~third-party -@@||assets.msn.com/staticsb/statics/latest/adboxes/$script,~third-party -@@||att.com/scripts/adobe/prod/$script,~third-party -@@||att.com/scripts/adobe/virtual/detm-container-hdr.js$~third-party -@@||att.com/ui/services_co_myatt_common/$script,~third-party -@@||att.tv^*/VisitorAPI.js$script,~third-party -@@||autocomplete.clearbit.com^$xmlhttprequest -@@||azureedge.net/prod/smi/loader-config.json$domain=pressdemocrat.com -@@||bam.nr-data.net^$script,domain=kapwing.com -@@||bgp.he.net/images/flags/*.gif?$image,~third-party -@@||bjjhq.com/HttpCombiner.ashx?$script,~third-party -@@||blackcircles.ca^$script,~third-party -@@||blueconic.net/bostonglobemedia.js$domain=bostonglobe.com -@@||board-game.co.uk/cdn-cgi/zaraz/s.js$script,~third-party -@@||bookmate.com^*/impressions?$~third-party,xmlhttprequest -@@||bostonglobe.com/login/js/lib/AppMeasurement.js$~third-party -@@||c.lytics.io/api/tag/$script,domain=time.com -@@||c.paypal.com/da/r/fb.js$script -@@||c.webtrends-optimize.com/acs/$image,script,domain=tvlicensing.co.uk -@@||canadacomputers.com/templates/ccnew/assets/js/jquery.browser-fingerprint-$~third-party -@@||cdc.gov/jscript/metrics/adobe/launch/$script,~third-party -@@||cdn-net.com/cc.js -@@||cdn.getblueshift.com/blueshift.js$script,domain=rentcafe.com -@@||cdn.heapanalytics.com^$script,domain=libertymutual.com -@@||cdn.jsdelivr.net^*/fp.min.js$script,domain=cuevana2.io -@@||cdn.mxpnl.com/libs/$script,domain=get.pumpkin.care -@@||cdn.perfops.net/rom3/rom3.min.js$domain=cdnperf.com -@@||cdn.segment.com/analytics-next/ -@@||cdn.segment.com/analytics.js/$script,domain=abstractapi.com|app.cryptotrader.tax|driversed.com|fender.com|finerdesk.com|foxbusiness.com|foxnews.com|givingassistant.org|inxeption.io|reuters.com|squaretrade.com -@@||cdn.segment.com/next-integrations/integrations/ -@@||cdn.segment.com/v1/projects/ -@@||cdn.sophi.io/assets/$script,domain=nationalpost.com -@@||cdn.treasuredata.com/sdk/$script,domain=sso.lg.com -@@||cdn.usefathom.com/script.js$domain=sharpen-free-design-generator.netlify.app -@@||cdn.viglink.com/api/vglnk.js$domain=9to5mac.com|electrek.co -@@||certona.net^*/scripts/resonance.js$script,domain=canadiantire.ca|finishline.com|summitracing.com|tumi.com -@@||channel.images.production.web.w4a.tv^*/ard.png?$domain=yallo.tv -@@||chart-embed.service.newrelic.com^$subdocument,xmlhttprequest -@@||chasecdn.com/web/*/eventtracker.js$domain=chase.com -@@||chat.d-id.com/assets/mixpanel.$~third-party -@@||check.ddos-guard.net/check.js$script -@@||cleverpush.com/channel/$script,domain=bsdex.de|heise.de -@@||cleverpush.com/sdk/$script,domain=heise.de -@@||cloudflare.com/ajax/libs/fingerprintjs2/$domain=extracttable.com|fckrasnodar.ru|login.kroton.com.br -@@||cloudflare.com/cdn-cgi/trace$domain=infyspringboard.onwingspan.com|injora.com|myair.resmed.com -@@||cloudflareinsights.com/beacon.min.js$script,domain=app.uniswap.org -@@||cloudfront.net/atrk.js$domain=luxuryrealestate.com -@@||cloudinary.com/perimeterx/$image,domain=perimeterx.com -@@||cnet.com/a/video-player/uvpjs-rv/$script,~third-party -@@||cohesionapps.com/cohesion/$domain=bankrate.com|frontier.com -@@||cohesionapps.com/preamp/$subdocument,xmlhttprequest,domain=frontier.com -@@||collusion.com/static/newrelic.js$script,~third-party -@@||commerce.adobe.io^$xmlhttprequest,domain=superbrightleds.com -@@||community.brave.com/t/$xmlhttprequest -@@||connatix.com/min/connatix.renderer.infeed.min.js$domain=accuweather.com|collider.com|gamepress.gg|salon.com -@@||console.statsig.com/_next/$~third-party -@@||content.gap.com/fp/check.js$script,domain=oldnavy.gap.com -@@||content.gap.com/fp/tags.js$script,domain=oldnavy.gap.com -@@||coremetrics.com*/eluminate.js -@@||coxbusiness.com/R136/assets/newrelic/newrelic.js$~third-party -@@||cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/vendor/adobe/app-measurement.html$xmlhttprequest -@@||cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/vendor/adobe/visitor-api.html$xmlhttprequest -@@||cqcounter.com^$domain=cqcounter.com -@@||crimemapping.com/cdn/*/analytics/eventtracking.js$~third-party -@@||cults3d.com/packs/js/quantcast-$~third-party -@@||cvs.com/shop-assets/js/VisitorAPI.js$~third-party -@@||d2ma0sm7bfpafd.cloudfront.net/wcsstore/waitrosedirectstorefrontassetstore/custom/js/analyticseventtracking/$script,domain=waitrosecellar.com -@@||d347cldnsmtg5x.cloudfront.net/util/1x1.gif$image,domain=aplaceforeverything.co.uk -@@||d41.co/tags/ff-2.min.js$domain=ads.spotify.com -@@||data.adxcel-ec2.com^$image,domain=laguardia.edu -@@||datadoghq-browser-agent.com^$script,domain=bbcgoodfood.com|dashboard.getdriven.app|hungryroot.com|usa.experian.com -@@||delta.com/dlhome/ruxitagentjs$~third-party -@@||docs.google.com/*/viewdata$~third-party -@@||driverfix.com^*/index_src.php?tracking=$~third-party -@@||dw.com.com/js/dw.js$domain=cbsnews.com|tv.com -@@||dz9qn8fh4jznm.cloudfront.net/script.js$script,domain=bostonglobe.com -@@||easternbank.com/sites/easternbank/files/google_tag/eastern_bank/google_tag.script.js$script,~third-party -@@||easy-firmware.com/templates/default/html/*/assets/js/fingerprint2.min.js$script,~third-party -@@||ec.europa.eu/eurostat/databrowser/assets/analytics/piwik.js$script,~third-party -@@||ensighten.com^*/Bootstrap.js$domain=americanexpress.com|ba.com|bestbuy.com|britishairways.com|capitalone.com|caranddriver.com|cart.autodesk.com|citi.com|citigold.com.sg|citizensbank.com|dell.com|fidelity.com|france24.com|hp.com|norton.com|rfi.fr|sbs.com.au|sfgate.com|staples.com|target.com|verizonwireless.com|williamhill.com|womenshealthmag.com|zales.com -@@||ensighten.com^*/code/$script -@@||ensighten.com^*/scode/$script,domain=norton.com -@@||ensighten.com^*/serverComponent.php?$script -@@||etsy.com/api/v3/ajax/bespoke/*log_performance_metrics=$~third-party -@@||events.raceresult.com^$~third-party,xmlhttprequest -@@||evil-inc.com/comic/advertising-age/$~third-party,xmlhttprequest -@@||extreme-ip-lookup.com^$script,domain=bulkbarn.ca -@@||ezodn.com/cmp/gvl.json$xmlhttprequest -@@||fast.fonts.net/jsapi/core/mt.js$script,domain=bkmedical.com|eclecticbars.co.uk|gables.com|itsolutions-inc.com|senate.gov -@@||fichub.com/plugins/adobe/lib/AppMeasurement.js$domain=natgeotv.com -@@||fichub.com/plugins/adobe/lib/VisitorAPI.js$domain=natgeotv.com -@@||firebase.google.com/docs/analytics/$~third-party -@@||friendbuy.com^$domain=butcherbox.com -@@||geoip-db.com/jsonp/$script,third-party -@@||geolocation-db.com/jsonp$script,domain=parts.hp.com -@@||getflywheel.com/addons/google-analytics/$~third-party -@@||getpublica.com/playlist.m3u8$xmlhttprequest -@@||github.com/gorhill/uBlock/*/src/web_accessible_resources/fingerprint2.js$~third-party -@@||globalatlanticannuity.com/assets/embed/gtm.js$script,~third-party -@@||glookup.info/api/json/$domain=grabify.link -@@||gnar.grammarly.com/events$xmlhttprequest,domain=account.grammarly.com -@@||groupbycloud.com/gb-tracker-client-3.min.js -@@||gstatic.com^*/firebase-performance-standalone.js$script,domain=flightradar24.com -@@||gsuite.tools/js/gtag.js$script,~third-party -@@||guce.advertising.com/collectIdentifiers$~third-party -@@||healthgateway.gov.bc.ca/snowplow.js$~third-party -@@||hello.myfonts.net/count/$stylesheet,domain=cfr.org|condor.com|furniturevillage.co.uk|luggagehero.com -@@||hobbyking.com^*/gtm.js$script,~third-party -@@||hotstarext.com/web-messages/core/error/v52.json$xmlhttprequest,domain=hotstar.com -@@||identity.mparticle.com^$xmlhttprequest -@@||ignitetv.shaw.ca/js/api/fingerprint.js$~third-party -@@||ikea.com^*/analyticsEvent.$script,~third-party -@@||imgur.com/min/px.js$~third-party -@@||indeed.com/rpc/log/myjobs/$~third-party -@@||ipapi.co/json/$xmlhttprequest,domain=168.dailymaverick.co.za|audius.co -@@||ipinfo.io/?token=$domain=assurancemortgage.com|webtv.ert.gr -@@||ipinfo.io/json$domain=queye.co -@@||ipv4.seeip.org/jsonip$domain=empire-streaming.app -@@||join.southerncross.co.nz/quote/_assets/js/sx/app/helpers/gtm.js -@@||js-agent.newrelic.com^$domain=alliantcreditunion.com|giftcards.com|kapwing.com|live.griiip.com -@@||js.datadome.co/tags.js$script,domain=sso.garena.com|thefork.com -@@||js.monitor.azure.com/scripts/$script,domain=genya.it|microsoft.com|rubex.efilecabinet.net -@@||js.sentry-cdn.com^$script,domain=app.homebinder.com|book.dmm.com|etsy.com|interacty.me|jobs.ch|pizzahut.com.au -@@||jsrdn.com/s/$script,domain=distro.tv -@@||kameleoon.eu/kameleoon.js$script,domain=buttercloth.com|jules.com -@@||kaptcha.com/collect/sdk?$domain=palmettostatearmory.com|wyze.com -@@||kaxsdc.com/collect/sdk$xmlhttprequest,domain=vanillaereward.com -@@||kilimall.co.tz/sensorsdata.min.js$~third-party -@@||kilimall.com*/js/sensorsdata.min.js$script,domain=kilimall.co.ke -@@||kohls.com/ecustservice/js/sitecatalyst.js$script,~third-party -@@||lacoste.com^*/click-analytics.js$~third-party -@@||languagecloud.sdl.com/node_modules/fingerprintjs2/dist/fingerprint2.min.js$~third-party -@@||leadpages.io/analytics/v1/observations/capture?$xmlhttprequest -@@||leanplum.com^$domain=arkadium.com -@@||legendstracking.com/js/legends-tracking.js$~third-party -@@||lenovo.com/_ui/desktop/common/js/AdobeAnalyticsEvent.js$script,~third-party -@@||lenovo.com/fea/js/adobeAnalytics/$script,~third-party,xmlhttprequest -@@||letmegpt.com/js/gpt.js$~third-party -@@||level.travel/tracker/tracker.js$script,~third-party -@@||lightning.bleacherreport.com/launch/*-source.min.js$~third-party -@@||lightning.bleacherreport.com^*/launch-$~third-party -@@||live.rezync.com^$script,domain=batteriesplus.com -@@||liveapi.cleverpush.com/websocket$websocket,domain=heise.de -@@||loader-cdn.azureedge.net/prod/smi/loader.min.js$domain=pressdemocrat.com -@@||logging.apache.org^$~third-party -@@||logo.clearbit.com^$image,third-party -@@||lr-ingest.io/LogRocket.min.js$domain=smartcare.com -@@||magento-recs-sdk.adobe.net/v2/index.js$script,domain=superbrightleds.com -@@||mapquestapi.com/logger/$domain=hertz.com -@@||maps.arcgis.com/apps/instant/lookup/app/utilites/telemetry/AppMeasurement.js$~third-party -@@||maptiles.ping-admin.ru^$image,domain=ping-admin.com -@@||martech.condenastdigital.com/lib/martech.js$script,domain=wired.com -@@||matomo.miraheze.org/matomo.js$script,~third-party -@@||maxmind.com/geoip/$xmlhttprequest,domain=ibanez.com -@@||maxmind.com^*/geoip.js$domain=aljazeera.com|ballerstatus.com|bikemap.net|carltonjordan.com|cashu.com|dr.dk|everydaysource.com|fab.com|girlgames4u.com|ip-address.cc|qatarairways.com|sat-direction.com|sotctours.com|stoli.com|vibe.com -@@||maxmind.com^*/geoip2.js$domain=bandai-hobby.net|boostedboards.com|donorschoose.org|driftinnovation.com|fallout4.com|ibanez.com|instamed.com|metronews.ca|mtv.com.lb|runningheroes.com|teslamotors.com -@@||mbe.modelica.university/_next/static/*/pages/pageview.js$~third-party -@@||mclo.gs/js/logview.js$~third-party -@@||metrics.bangbros.com/tk.js$~third-party -@@||mlbstatic.com/mlb.com/adobe-analytics/$script,domain=mlb.com -@@||mmstat.com/eg.js$script,domain=aliexpress.com -@@||mopar.com/moparsvc/mopar-analytics-state$~third-party -@@||mozu.com^*/monetate.js$script,domain=acehardware.com -@@||mparticle.com/js/v2/*/mparticle.js$script,domain=bk.com|bravotv.com|cnbc.com|gymshark.com|motortrendondemand.com -@@||msecnd.net/scripts/jsll-$script,domain=forms.microsoft.com|office.com|sharepoint.com|teams.microsoft.com -@@||munchkin.marketo.net/munchkin.js$domain=st.com|telus.com -@@||mxpnl.com/libs/mixpanel-*.min.js$domain=change.org|frigidaire.com -@@||mxpnl.com^$domain=mixpanel.com -@@||my.goabode.com/assets/js/fp2.min.js$script,~third-party -@@||myaccount.chicagotribune.com/assets/scripts/tag-manager/googleTag.js$~third-party -@@||nationwide.com/myaccount/includes/images/x.gif$~third-party -@@||natureetdecouvertes.com^*/pixel.png$~third-party -@@||netcoresmartech.com/smartechclient.js$domain=hdfcfund.com -@@||new.abb.com/ruxitagentjs_$~third-party -@@||newrelic.com/nr-*.min.js$domain=surveymonkey.co.uk|surveymonkey.com|surveymonkey.de -@@||next.co.uk/static-content/gtm-sdk/gtm.js$~third-party -@@||nike.com/assets/measure/data-capture/analytics-client.min.js$script,~third-party -@@||nintendolife.com/themes/base/javascript/fingerprint.js$~third-party -@@||nocookie.net^*/tracking-opt-in.min.js$script,domain=fandom.com -@@||noodid.ee/chordQuiz/$~third-party -@@||noxgroup.com/noxinfluencer/sensor_sdk/$script,domain=noxinfluencer.com -@@||nsfw.xxx/vendor/fingerprint/fingerprint2.min.js$script,~third-party -@@||nypost.com/blaize/datalayer$~third-party -@@||nytimes.com^*/EventTracker.js$~third-party -@@||odb.outbrain.com/utils/get?url=$script,domain=cnn.com -@@||ondemand.sas.com^$subdocument -@@||onenote.com^*/aria-web-telemetry -@@||online-metrix.net/fp/tags.js$domain=donorschoose.org -@@||onlinebanking.usbank.com/TUX/public/libs/adobe/appmeasurement.js$script,~third-party -@@||optimove.net^$domain=app.touchnote.com -@@||ots.webtrends-optimize.com/$xmlhttprequest,domain=tvlicensing.co.uk -@@||outbrain.com/outbrain.js$domain=cnn.com -@@||p.typekit.net/p.css$stylesheet,domain=athleticpropulsionlabs.com|browserstack.com|bungie.net|business.untappd.com|robertsspaceindustries.com -@@||palmettostatearmory.com/static/$script,~third-party -@@||pals.pa.gov/vendor/analytics/$~third-party -@@||parcel.app/webtrack.php?$~third-party -@@||parsely.com/keys/$script,domain=wmmr.com|wrif.com -@@||paypal.com/xoplatform/logger/api/logger$domain=play.leagueofkingdoms.com -@@||paypalobjects.com/*/pageView.js$script,domain=paypal.com -@@||paypalobjects.com/web/*/gAnalytics.js$script,domain=paypal.com -@@||pcoptimizedsettings.com/wp-content/plugins/koko-analytics/$~third-party -@@||pcoptimizedsettings.com/wp-content/uploads/breeze/google/gtag.js$~third-party -@@||pendo.io/agent/static/$script,domain=recruiting.adp.com -@@||plantyn.com/optiext/optiextension.dll$~third-party -@@||plausible.io/js/plausible.js$script,domain=sammobile.com -@@||plex.tv/api/v2/geoip$xmlhttprequest -@@||plugin.intuitcdn.net/vep-collab-smlk-ui/assets/vendor/glance/cobrowse/ -@@||plugins.matomo.org^$image,~third-party -@@||portal.cityspark.com/PortalScripts/DailyCamera$domain=dailycamera.com -@@||portal.cityspark.com/v1/event$domain=dailycamera.com -@@||postex.com/api/ping?$~third-party -@@||powerquality.eaton.com/include/js/elqScr.js$~third-party -@@||ps.w.org/wp-slimstat/$domain=wordpress.org -@@||pub.pixels.ai/prebid_standard.js$script,domain=standard.co.uk -@@||public.fbot.me/events/$domain=casper.com -@@||px-cdn.net/api/v2/collector/ocaptcha$xmlhttprequest -@@||qm.redbullracing.com/gtm.js$~third-party -@@||quantcast.com/wp-content/themes/quantcast/$domain=quantcast.com -@@||quickmath.com/js/r/web-vitals.js$script,~third-party -@@||reactandshare.com^$domain=maanmittauslaitos.fi -@@||realclearpolitics.com/esm/assets/js/admiral.js$~third-party -@@||realclearpolitics.com/esm/assets/js/analytics/chartbeat.js$~third-party -@@||realclearpolitics.com/esm/assets/js/analytics/gaAnalytics.js$~third-party -@@||reallyfreegeoip.org/json/$domain=thekitchensafe.com -@@||redbull.com/gtm.js$~third-party -@@||res-x.com^*/Resonance.aspx? -@@||researchintel.com^*/feedback.asp$xmlhttprequest,domain=intel.com -@@||rest.edit.site/geoip-service/geoip$domain=systemshouse.com -@@||retailmenot.com/__wsm.gif$ping,~third-party,xmlhttprequest -@@||rfksrv.com/rfk/js/*/init.js$script,domain=riteaid.com -@@||rollbar.com^*/rollbar.min.js$domain=rollingstone.com|variety.com|wwd.com -@@||s-microsoft.com/mscc/statics/$script,domain=microsoft.com -@@||sc.youmaker.com/site/article/count? -@@||scorecardresearch.com^*/streamingtag_plugin_jwplayer.js -@@||sealserver.trustwave.com/seal.js$domain=zoom.us -@@||secure.logmein.com/scripts/Tracking/$script,domain=logme.in|logmein.com -@@||securegames.iwin.com/data/gtm.json$~third-party,xmlhttprequest -@@||seg-cdn.pumpkin.care/analytics.js/$~third-party -@@||seg-cdn.pumpkin.care/next-integrations/integrations/mixpanel/$domain=get.pumpkin.care -@@||sephora-track.inside-graph.com/gtm/$domain=sephora.com -@@||sephora-track.inside-graph.com/ig.js$domain=sephora.com -@@||sephora.com/js/ufe/isomorphic/thirdparty/fp.min.js$script,~third-party -@@||sephora.com/js/ufe/isomorphic/thirdparty/VisitorAPI.js$~third-party -@@||service.apport.net/apport-spa-common/src/tracking/tracking.js$~third-party -@@||services.chipotle.com/__imp_apg__/$~third-party -@@||sharethis.com/button/buttons.js$domain=bristan.com -@@||shoonya.finvasia.com/fingerprint2.min.js$script,~third-party -@@||shop.bmw.com.au/assets/analytics-setup.js$~third-party -@@||shopify.com/shopifycloud/boomerang/shopify-boomerang-$domain=rydewear.com -@@||signalshares.com/webtrends.min.js$script,~third-party -@@||simcotools.app/assets/adsense-*.js$~third-party -@@||simpleanalyticsexternal.com^$script,domain=inleo.io -@@||smushcdn.com^*/1.gif$domain=retrounlim.com -@@||snap.licdn.com/li.lms-analytics/insight.min.js$domain=msci.com -@@||sohotheatre.com^*/PageView.js$~third-party -@@||solr.sas.com/query/$xmlhttprequest,domain=jmp.com -@@||sophos.com^*/tracking/gainjectmin.js$script,domain=community.sophos.com -@@||spark.co.nz/content/*/utag.sync.js$domain=skinny.co.nz -@@||src.fedoraproject.org/static/issues_stats.js?$~third-party -@@||src.litix.io/shakaplayer/*/shakaplayer-mux.js -@@||src.litix.io/videojs/*/videojs-mux.js -@@||ssl-images-amazon.com^*/satelliteLib-$script,domain=audible.com -@@||startribune.com/analytics-assets/sitecatalyst/appmeasurement.js$~third-party -@@||statcounter.com/css/packed/statcounter-$stylesheet,~third-party -@@||statcounter.com/js/packed/statcounter-$script,~third-party -@@||static.amazon.jobs/assets/analytics-$script,domain=amazon.jobs -@@||static.cloud.coveo.com/coveo.analytics.js/$domain=cabelas.com -@@||static.foxnews.com^*/VisitorAPI.js$domain=foxbusiness.com|foxnews.com -@@||static.knowledgehub.com/global/images/ping.gif?$~third-party -@@||stats.pusher.com/timeline/$script,domain=bringatrailer.com -@@||stats.sports.bellmedia.ca^$domain=rds.ca|tsn.ca -@@||stats.statbroadcast.com/interface/webservice/event/$~third-party -@@||stats.wnba.com/templates/angular/tables/events/$~third-party -@@||steamstatic.com/steam/apps/$image,domain=store.steampowered.com -@@||taboola.com/libtrc/*/loader.js$domain=dailymail.co.uk|foxsports.com -@@||tagcommander.com^*/tc_$script -@@||tags.news.com.au/prod/heartbeat/$script -@@||taplytics.com^$domain=royalbank.com -@@||target.microsoft.com/rest/$xmlhttprequest,domain=microsoft.com -@@||targetimg1.com/webui/$script,domain=target.com -@@||teams.microsoft.com/dialin-cdn-root/*/aria-web-telemetry-$~third-party -@@||telemetry.stytch.com/submit$domain=play.pixels.xyz -@@||tennispro.eu/min/?$script,~third-party -@@||thaiairways.com/static/common/js/wt_js/webtrends.min.js$~third-party -@@||thomas.co/sites/default/files/google_tag/primary/google_tag.script.js$script,~third-party -@@||tinypass.com^*/logAutoMicroConversion?$domain=chicago.suntimes.com -@@||tms.oracle.com/main/prod/utag.sync.js$~third-party -@@||tntdrama.com/modules/custom/ten_video/js/analytics_v2.js$~third-party -@@||tokbox.com/prod/logging/ClientEvent$domain=examroom.ai -@@||toyota.com/recall/static/js/custom/facebookPixel.js$~third-party -@@||traceparts.com/lib/piano-analytics/piano-analytics.js$script,~third-party -@@||track.shipstation.com/collections/trackingEvents.js$~third-party -@@||trackjs.com/agent/$script,domain=delta.com -@@||trackonomics.net/client/$script,domain=popsugar.com -@@||travel-assets.com/platform-analytics-prime/$domain=chase.com -@@||tunein.com/api/v1/comscore$~third-party -@@||userapi.com^*.gif?extra=$image,domain=vk.com -@@||usplastic.com/js/hawk.js -@@||uwufufu.com/_nuxt/mixpanel.$~third-party -@@||vast.com/vimpressions.js$domain=everycarlisted.com -@@||vidible.tv^*/ComScore.StreamSense.js -@@||vidible.tv^*/ComScore.Viewability.js -@@||vivocha.com^*/vivocha.js?$script,domain=kartell.com -@@||web.dev/patterns/web-vitals-$~third-party -@@||webtrends.com/js/webtrends.min.js$script,domain=tvlicensing.co.uk -@@||weightwatchers.com/optimizelyjs/$script,~third-party -@@||where2getit.com/traderjoes/rest/clicktrack?$domain=traderjoes.com -@@||widget.fitanalytics.com/widget.js$script,domain=pullandbear.com -@@||widget.trustpilot.com/bootstrap/$script,domain=amartfurniture.com.au|exodus.co.uk|imyfone.com -@@||wpfc.ml/b.gif$image,domain=holybooks.com -@@||wsj.net/iweb/static_html_files/cxense-candy.js$script,domain=marketwatch.com -@@||www.ups.com/WebTracking/processInputRequest -@@||wwwcache.wral.com/presentation/v3/scripts/providers/analytics/ga.js$~third-party -@@||xeroshoes.co.uk/affiliate/scripts/trackjs.js$~third-party -@@||xfinity.com/stream/js/api/fingerprint.js$~third-party -@@||yottaa.net^$script,domain=containerstore.com|hannaandersson.com -@@||zoominfo.com/c/amplitude-js$script,~third-party -!! https://old.reddit.com/r/uBlockOrigin/comments/1czbcvg/foundit_is_blocking_searches_until_ublock_origin/ -@@||media.foundit.*/trex/public/theme_3/dist/js/userTracking.js$script,~third-party -!! amplitude.com/libs -@@||amplitude.com/libs/$script,domain=elconfidencial.com|kink.com|pdfexpert.com|xe.com -!! googletagmanager.com/gtm.js -@@||googletagmanager.com/gtm.js$domain=3djuegosguias.com|3djuegospc.com|9to5mac.com|acehardware.com|acornonline.com|ads.spotify.com|aena.es|aeromexico.com|afisha.timepad.ru|aliexpress.com|ampparit.com|animeanime.jp|anond.hatelabo.jp|applesfera.com|aruba.it|arvopaperi.fi|atptour.com|autobild.de|autorevue.cz|avis.com|axeptio.eu|backcountry.com|baywa-re.com|bbcgoodfood.com|benesse-style-care.co.jp|besplatka.ua|beterbed.nl|betten.de|binglee.com.au|book.impress.co.jp|bsa-whitelabel.com|bunte.de|butcherblockco.com|bybit.com|bybitglobal.com|canadiantire.ca|capital.it|carcareplus.jp|carhartt-wip.com|casa.it|ccleaner.com|cdek.ru|cdon.fi|checkout.ao.com|chipotle.com|chronopost.fr|cinemacafe.net|clickup.com|cmoa.jp|como.fi|complex.com|compradiccion.com|computerbild.de|coolermaster.com|cora.fr|costco.co.jp|courses.monoprix.fr|crello.com|cyclestyle.net|cyclingnews.com|cypress.io|dazeddigital.com|deejay.it|dengekionline.com|dholic.co.jp|directoalpaladar.com|dlsite.com|dmv.ca.gov|doodle.com|dropps.com|e15.cz|easternbank.com|edwardjones.com|eki-net.com|elcorteingles.es|elnuevodia.com|enmotive.com|episodi.fi|eprice.it|ergotron.com|espinof.com|euronics.ee|euronics.it|expressvpn.com|famesupport.com|fandom.com|feex.co.il|festoolusa.com|finanzen.at|finanzen.ch|finanzen.net|flytap.com|focus.de|formula1.com|fortress.com.hk|fortune.com|freenet-funk.de|froxy.com|fum.fi|gamebusiness.jp|gamespark.jp|genbeta.com|glamusha.ru|gorillamind.com|grandhood.dk|gravitydefyer.com|gumtree.com|harveynorman.co.nz|harveynorman.com.au|hatenacorp.jp|headlightrevolution.com|hepsiburada.com|herculesstands.com|hobbyhall.fi|hostingvergelijker.nl|idealo.at|idealo.de|iexprofs.nl|iltalehti.fi|independent.co.uk|inferno.fi|inside-games.jp|insiderstore.com.br|iodonna.it|iphoneitalia.com|j-wave.co.jp|jalan.net|jn.pt|join.kazm.com|journaldunet.com|jreastmall.com|junonline.jp|kakuyomu.jp|karriere.at|kauppalehti.fi|kedronparkhotel.com.au|kfc.co.jp|kinepolis.be|kinepolis.ch|kinepolis.es|kinepolis.fr|kinepolis.lu|kinepolis.nl|komputronik.pl|konami.com|la7.it|larousse.fr|lastampa.it|lasvegasentuidioma.com|lbc.co.uk|lecker.de|level.travel|life.fi|lift.co.za|linternaute.com|lippu.fi|loopearplugs.com|luko.eu|m1.com|m2o.it|magazineluiza.com.br|mainichi.jp|makitani.net|mangaseek.net|mcgeeandco.com|mecindo.no|mediamarkt.nl|mediuutiset.fi|mercell.com|meritonsuites.com.au|mikrobitti.fi|mirapodo.de|mobilmania.cz|montcopa.org|mycar-life.com|mysmartprice.com|nanikanokami.github.io|nap-camp.com|netcombo.com.br|newscafe.ne.jp|nflgamepass.com|ngv.vic.gov.au|nielsendodgechryslerjeepram.com|nihontsushin.com|nordvpn.com|nourison.com|oakandfort.com|odia.ig.com.br|oetker-shop.de|okwave.jp|olx.ro|online-shop.mb.softbank.jp|onlineshop.ocn.ne.jp|papajohns.com|pccomponentes.com|petsathome.com|pgatoursuperstore.com|pioneer.eu|plaion.com|plantsome.ca|pohjanmaanhyvinvointi.fi|poprosa.com|post.ch|primeoak.co.uk|prisjakt.nu|prisonfellowship.org|prizehometickets.com.au|qrcode-monkey.com|radiko.jp|radio-canada.ca|radiobob.de|radiorur.de|rbbtoday.com|reanimal.jp|resemom.jp|response.jp|rocketnews24.com|rtl.de|rumba.fi|rustih.ru|rydercup.com|sanwacompany.co.jp|saraiva.com.br|saturn.at|savethechildren.it|scan.netsecurity.ne.jp|sciencesetavenir.fr|scotsman.com|service.smt.docomo.ne.jp|smartbox.com|soranews24.com|soundguys.com|soundi.fi|spektrum.de|sport1.de|sportingnews.com|sportiva.shueisha.co.jp|sportmaster.ru|spyder7.com|stage.parco.jp|store-jp.nintendo.com|str.toyokeizai.net|stressless.com|subscribe.greenbuildingadvisor.com|superesportes.com.br|support.bose.com|support.brother.com|support.creative.com|support.knivesandtools.com|swarajyamag.com|swb.de|talent.lowes.com|talouselama.fi|tbsradio.jp|teddyfood.com|tekniikkatalous.fi|telia.no|theretrofitsource.com|tide.com|tilt.fi|tivi.fi|tn.com.ar|tomshw.it|topper.com.br|toyota-forklifts.se|trademe.co.nz|tradera.com|tredz.co.uk|trendencias.com|trendenciashombre.com|tribuna.com|truckspring.com|tugatech.com.pt|tumi.com|tv-asahi.co.jp|type.jp|uclabruins.com|unieuro.it|uniqlo.com|upc.pl|upwork.com|uqr.to|uusisuomi.fi|veho.fi|vidaextra.com|video.lacnews24.it|video.repubblica.it|vip.de|virginmedia.com|vitonica.com|viviennewestwood-tokyo.com|vox.de|vtvgo.vn|wamiz.com|watson.ch|watsons.com.tr|workingclassheroes.co.uk|wowma.jp|wpb.shueisha.co.jp|www.nicovideo.jp|xatakamovil.com|xxl.se|ymobile.jp|yotsuba-shop.com|youpouch.com|zakzak.co.jp|zazzle.com|zennioptical.com|zf1.tohoku-epco.co.jp|zinio.com|zive.cz|zozo.jp -!! google-analytics.com/analytics.js -@@||google-analytics.com/analytics.js$domain=beinsports.com|brooklinen.com|carnesvizzera.ch|cmoa.jp|enmotive.com|healthrangerstore.com|hobbyhall.fi|infoconso-multimedia.fr|jackbox.tv|k2radio.com|koel.com|kowb1290.com|ligtv.com.tr|meritonsuites.com.au|nabortu.ru|news.gamme.com.tw|novatv.bg|papajohns.com|poiskstroek.ru|rzd.ru|saturn.at|schweizerfleisch.ch|skaties.lv|stressless.com|teddyfood.com|tracking.narvar.com|tradera.com|tribuna.com|truwin.com|tuasaude.com|unicef.de|viandesuisse.ch|vox.de|westernunion.com|worldsbiggestpacman.com|xxl.se -!! googletagmanager.com/gtag/js -@@||googletagmanager.com/gtag/js$domain=9to5mac.com|academy.com|acornonline.com|aena.es|afisha.timepad.ru|aliexpress.com|carhartt-wip.com|cbslocal.com|checkout.ao.com|cmoa.jp|devclass.com|dholic.co.jp|ejgiftcards.com|enmotive.com|euronics.ee|factory.pixiv.net|fanpage.it|game.anymanager.io|herculesstands.com|honeystinger.com|hostingvergelijker.nl|huion.com|inforesist.org|kawasaki.com|kinepolis.be|kinepolis.ch|kinepolis.es|kinepolis.fr|kinepolis.lu|kinepolis.nl|liene-life.com|livongo.com|m.putlocker.how|mediaite.com|mirrativ.com|modehasen.de|montcopa.org|nihontsushin.com|oko.sh|panflix.com.br|papajohns.com|radiosarajevo.ba|rintraccialamiaspedizione.it|schwab.com|seatmaps.com|showroom-live.com|skylar.com|square-enix.com|starblast.io|timparty.tim.it|toptal.com|truckspring.com|virginmedia.com|virginplus.ca|winefolly.com|winhappy.com|xl-bygg.no|zf1.tohoku-epco.co.jp -!! googleoptimize.com/optimize.js -@@||googleoptimize.com/optimize.js$domain=binglee.com.au|grasshopper.com|in.bookmyshow.com|inquirer.com|investing.com|lacomer.com.mx|lodgecastiron.com|tentree.ca|virginmedia.com -!! google-analytics.com/plugins/ua/ec.js -@@||google-analytics.com/plugins/ua/ec.js$domain=saturn.at|teddyfood.com|xxl.se -!! google-analytics.com/ga.js -@@||google-analytics.com/ga.js$domain=meritonsuites.com.au|realpage.com -!! collect.igodigital.com/collect.js -@@||collect.igodigital.com/collect.js$domain=berkley-fishing.com|enoteca.co.jp|goodwillfinds.com|samash.com|viajeguanabara.com.br|vitalsource.com|wilsonparking.com.au -!! browser.sentry-cdn.com -@@||browser.sentry-cdn.com^$domain=acustica-audio.com|dic.pixiv.net|doconcall.com.my|eco-clobber.co.uk|fundhero.io|marshmallow-qa.com|menshealth.com|ocado.com|podcasty.seznam.cz|roomster.com|shop.dns-net.de|spacemarket.com|timesprime.com|vivareal.com.br|womenshealthmag.com -!! ||assets.adobedtm.com/extensions/*/AppMeasurement.min.js -@@||assets.adobedtm.com/extensions/*/AppMeasurement.min.js$domain=nbc.com|tatamotors.com|usanetwork.com -!! adobedtm.com^*/satelliteLib- -@@||adobedtm.com^*/satelliteLib-$script,domain=absa.co.za|ally.com|americanexpress.com|as.com|auspost.com.au|backcountry.com|bmw.com.au|canadapost-postescanada.ca|ceair.com|collegeboard.org|conad.it|costco.com|crackle.com|crackle.com.ar|crackle.com.br|crackle.com.ec|crackle.com.mx|crackle.com.pe|crackle.com.py|crave.ca|crimewatchdaily.com|dhl.de|directline.com|elgiganten.se|elkjop.no|eonline.com|fcbarcelona.cat|fcbarcelona.cn|fcbarcelona.com|fcbarcelona.es|fcbarcelona.fr|fcbarcelona.jp|firststatesuper.com.au|gigantti.fi|godigit.com|hellobank.fr|hgtv.com|hrw.com|ilsole24ore.com|jeep.com|laredoute.be|laredoute.ch|laredoute.co.uk|laredoute.com|laredoute.es|laredoute.fr|laredoute.it|laredoute.pl|laredoute.pt|laredoute.ru|lenovo.com|lowes.com|malaysiaairlines.com|mastercard.us|mathworks.com|monoprice.com|myaetnasupplemental.com|nbcnews.com|nfl.com|nflgamepass.com|nofrills.ca|nrj.fr|oprah.com|oracle.com|pnc.com|poweredbycovermore.com|radiko.jp|realtor.com|redbull.tv|repco.co.nz|sbb.ch|searspartsdirect.com|shoppersdrugmart.ca|smooth.com.au|sony.jp|stuff.co.nz|subaru.com|support.nec-lavie.jp|tatacliq.com|telegraph.co.uk|timewarnercable.com|tou.tv|usanetwork.com|vanityfair.com|vtr.com|wayin.com|wired.com -!! adobedtm.com^*-libraryCode_source.min.js -@@||adobedtm.com^*-libraryCode_source.min.js$domain=doda.jp -!! adobedtm.com^*_source.min.js -@@||adobedtm.com^*_source.min.js$domain=ally.com|americanexpress.com|as.com|backcountry.com|crave.ca|disneyplus.disney.co.jp|hilton.com|hl.co.uk|homedepot.ca|kroger.com|mora.jp|nbarizona.com|pnc.com|tatacliq.com|telus.com -!! adobedtm.com^*-source.min.js -@@||adobedtm.com^*-source.min.js$script,domain=53.com|aarp.org|ally.com|americanexpress.com|as.com|atresplayer.com|automobiles.honda.com|backcountry.com|bose.ae|bose.at|bose.ca|bose.ch|bose.cl|bose.co|bose.co.jp|bose.co.nz|bose.co.uk|bose.com|bose.com.au|bose.de|bose.dk|bose.es|bose.fi|bose.fr|bose.hk|bose.hu|bose.ie|bose.it|bose.lu|bose.mx|bose.nl|bose.no|bose.pe|bose.pl|bose.se|boseapac.com|bosebelgium.be|boselatam.com|bt.com|cadenaser.com|churchofjesuschrist.org|cibc.com|crave.ca|currys.co.uk|deutsche-bank.de|dollargeneral.com|etihad.com|fedex.com|guitarcenter.com|healthsafe-id.com|helvetia.com|hgtv.com|hilton.com|homedepot.ca|imsa.com|ing.com.au|ingrammicro.com|kroger.com|lenovo.com|manager-magazin.de|marriott.com|mtvuutiset.fi|mybell.bell.ca|natwest.com|nbarizona.com|news.sky.com|personal.natwest.com|pnc.com|poweredbycovermore.com|ralphlauren.com|samsung.com|sephora.com|ssrn.com|tatacliq.com|telegraph.co.uk|telus.com|verizon.com|virginplus.ca|walgreens.com|xfinity.com -!! adobedtm.com^*/mbox-contents- -@@||adobedtm.com^*/mbox-contents-$script,domain=absa.co.za|ally.com|americanexpress.com|as.com|backcountry.com|ceair.com|conad.it|costco.com|dhl.de|fcbarcelona.cat|fcbarcelona.cn|fcbarcelona.com|fcbarcelona.es|fcbarcelona.fr|fcbarcelona.jp|firststatesuper.com.au|hgtv.com|lenovo.com|lowes.com|nfl.com|oprah.com|pnc.com|shoppersdrugmart.ca|sony.jp|tatacliq.com|usanetwork.com|vanityfair.com|wired.com -!! adobedtm.com/extensions/ -@@||adobedtm.com/extensions/$domain=antena3.com|apple.com|atresmedia.com|atresplayer.com|automobiles.honda.com|bravotv.com|cadenaser.com|crave.ca|foodnetwork.com|lasexta.com|telus.com|verizon.com|xfinity.com -!! OtAutoBlock.js -@@||cookielaw.org^*/OtAutoBlock.js$domain=bancsabadell.com|darkreading.com|uphold.com -!! cxense.com/document/search? -@@||cxense.com/document/search? -!! cxense.com/persisted/execute -@@||cxense.com/persisted/execute$domain=nippon.com -!! cxense.com/public/widget/ -@@||cxense.com/public/widget/$domain=bizjournals.com|businessinsider.de|computerbild.de|cxpublic.com|cyclestyle.net|friday.gold|friday.kodansha.co.jp|handelsblatt.com|inquirer.com|ksml.fi|mainichi.jp|marketwatch.com|nippon.com|savonsanomat.fi|shueisha.co.jp|tn.com.ar|tvnet.lv|wsj.com -!! cxense.com/cx.cce.js -@@||cxense.com/cx.cce.js$domain=bizjournals.com|businessinsider.de|cxpublic.com|handelsblatt.com|inquirer.com|mainichi.jp|marketwatch.com|shueisha.co.jp|tarzanweb.jp|tn.com.ar|tvnet.lv|wsj.com -!! cxense.com/cx.js -@@||cxense.com/cx.js$domain=13.cl|bizjournals.com|businessinsider.de|computerbild.de|cyclestyle.net|handelsblatt.com|inquirer.com|ksml.fi|mainichi.jp|marketwatch.com|nippon.com|savonsanomat.fi|shueisha.co.jp|str.toyokeizai.net|tarzanweb.jp|tn.com.ar|tv-tokyo.co.jp|tvnet.lv|wsj.com -!! collector.appconsent.io -@@||collector.appconsent.io/hello$domain=lachainemeteo.com|lefigaro.fr -!! imrworldwide.com/*ggc -@@||imrworldwide.com/novms/js/2/ggc$script,domain=9now.com.au|adelaidenow.com.au|advertiser.com.au|bestrecipes.com.au|byronnews.com.au|cairnspost.com.au|coffscoastadvocate.com.au|couriermail.com.au|dailyexaminer.com.au|espn.com|frasercoastchronicle.com.au|gattonstar.com.au|geelongadvertiser.com.au|gladstoneobserver.com.au|goldcoastbulletin.com.au|heraldsun.com.au|ipswichadvertiser.com.au|la7.it|news-mail.com.au|news.com.au|noosanews.com.au|ntnews.com.au|sky.it|sunshinecoastdaily.com.au|theaustralian.com.au|themercury.com.au|theweeklytimes.com.au|townsvillebulletin.com.au|tvnow.de|video.corriere.it|weeklytimesnow.com.au|whitsundaytimes.com.au -!! imrworldwide.com/conf/ -@@||imrworldwide.com/conf/$script,domain=nbcolympics.com -! imrworldwide.com/v60.js -@@||imrworldwide.com/v60.js$domain=adelaidenow.com.au|advertiser.com.au|bestrecipes.com.au|byronnews.com.au|cairnspost.com.au|coffscoastadvocate.com.au|corriereadriatico.it|couriermail.com.au|dailyexaminer.com.au|fanpage.it|frasercoastchronicle.com.au|gattonstar.com.au|geelongadvertiser.com.au|gladstoneobserver.com.au|goldcoastbulletin.com.au|heraldsun.com.au|huffingtonpost.it|ilgazzettino.it|ilmattino.it|ilmessaggero.it|ipswichadvertiser.com.au|la7.it|last.fm|leggo.it|musicfeeds.com.au|news-mail.com.au|noosanews.com.au|ntnews.com.au|nzherald.co.nz|quotidianodipuglia.it|realestateview.com.au|sf.se|sunshinecoastdaily.com.au|theaustralian.com.au|themercury.com.au|theweeklytimes.com.au|threenow.co.nz|townsvillebulletin.com.au|video.deejay.it|video.espresso.repubblica.it|video.ilsecoloxix.it|video.lastampa.it|video.repubblica.it|weatherchannel.com.au|weeklytimesnow.com.au|whitsundaytimes.com.au -!! mpsnare.iesnare.com -@@||mpsnare.iesnare.com^$script,domain=citi.com|citibank.com|jbhifi.com.au|login.skype.com|oreillyauto.com|power.fi|princessauto.com|ringcentral.com|screwfix.com|usbank.com|verkkokauppa.com|vitacost.com|westernunion.com -!! ingest.sentry.io/api/ -@@||ingest.sentry.io/api/$xmlhttprequest,domain=core.app|orionprotocol.io|play.tv3.lv|tesco.com|tesco.hu -!! ci-mpsnare.iovation.com -@@||ci-mpsnare.iovation.com/snare.js$domain=equifax.ca -!! lightning.cnn.com -@@||lightning.cnn.com^$script,domain=wfmz.com -!! tag.aticdn.net -@@||tag.aticdn.net^$script,domain=gouv.fr|rte.ie|tv5monde.com|uktvplay.co.uk|visaconcierge.eu|yourstory.com -!! cdn.optimizely.com/public -@@||cdn.optimizely.com/public/*.json/tag.js$domain=mobile.de -!! omtrdc.net -@@||omtrdc.net^*/mbox/json?$xmlhttprequest,domain=absa.co.za|att.com|pnc.com|vodafone.it -!! tags.tiqcdn.com -@@||tags.tiqcdn.com/utag/*/utag.sync.js$domain=bankofamerica.com|hsbc.co.uk|samsung.com|sony.jp|vmware.com -! statcounter.com charts https://github.com/uBlockOrigin/uAssets/issues/11321 -@@||gs.statcounter.com/chart.php$script,third-party -@@||statcounter.com/js//fusioncharts.charts.js -@@||statcounter.com/js/fusioncharts.js -@@||www.statcounter.com/images/$image,third-party -! ping exceptions -@@||api.babbel.io/gamma/v1/$ping,domain=babbel.com -! https://github.com/easylist/easylist/issues/10565 -@@||googletagmanager.com/gtm.js$domain=blaklader.at|blaklader.be|blaklader.ca|blaklader.com|blaklader.cz|blaklader.de|blaklader.dk|blaklader.ee|blaklader.es|blaklader.fi|blaklader.fr|blaklader.ie|blaklader.it|blaklader.nl|blaklader.no|blaklader.pl|blaklader.se|blaklader.uk -! Opera/Safari (buggy 3rd-party implementations) -! https://forums.lanik.us/viewtopic.php?f=64&t=45603&p=158333 -@@||bugsnag.com^$~third-party,domain=app.bugsnag.com -! Consent and video Fixes -@@||sourcepointcmp.bloomberg.*/ccpa.js$script,domain=bloomberg.co.jp|bloomberg.com -@@||sourcepointcmp.bloomberg.*/mms/get_site_data?$domain=bloomberg.co.jp|bloomberg.com -! CNAME (Specific allowlists) -@@||app.clarity.so^$~third-party -@@||cbsi.map.fastly.net^ -@@||gva.et-gv.fr^$script,domain=culture.gouv.fr -@@||mycleverpush.com/iframe?$domain=bsdex.de -@@||n8s.jp^$script,domain=nikkei.com -@@||online-metrix.net^$script,domain=eki-net.com -@@||p11.techlab-cdn.com^$domain=wizzair.com -@@||sc.omtrdc.net^$domain=cibc.com -@@||team-rec.jp^$domain=search-voi.0101.co.jp|voi.0101.co.jp -@@||tmx.bestbuy.com/z3nsvo31pnlmt3tw.js$domain=bestbuy.com -@@||wwwimage-tve.cbsstatic.com^ -! Chrome bug (Endless loading causing site to crash https://forums.lanik.us/viewtopic.php?f=64&t=25152) -! Preliminarily allowlists Omniture s_code tracking pixels (script versions H.25 - H.25.2) due to breakage (https://adblockplus.org/forum/viewtopic.php?f=10&t=11378) if blocking the script causes issues -@@||omns.americanexpress.com/b/ss/ -@@||omtrdc.net/b/ss/$image,domain=ba.com|britishairways.com|halifax-online.co.uk -@@||omtrdc.net/rest/$xmlhttprequest -! Allowlists to fix broken pages of tracking companies -! Heatmap -@@||heatmap.it^$domain=heatmap.com|heatmap.it|heatmap.me|heatmap.org -@@||komas19.xyz/cdn-cgi/apps/$script,~third-party -!----------------Allowlists to fix broken international sites-----------------! -! *** easylist:easyprivacy/easyprivacy_allowlist_international.txt *** -!---------- German ---------- -@@||adconsole.ch/api/ws-businessclick/*/data.json$domain=finanzen.ch -@@||adnz.co/dmp/publisher.js$domain=finanzen.ch -@@||adnz.co/header.js?adTagId=$domain=finanzen.ch -@@||analytics.edgekey.net/html5/akamaihtml5-min.js$domain=br.de -@@||api-v4.trbo.com/r.php?$script,domain=blau.de -@@||apps.derstandard.at^*/TrackingCookieCheck?$subdocument -@@||asadcdn.com/adlib/$domain=computerbild.de -@@||asadcdn.com/assets/video/$domain=computerbild.de -@@||bilder-a.akamaihd.net/ip/js/ipdvdc/ipdvdc.min.js$domain=n-tv.de|toggo.de|vip.de -@@||businessclick.ch/index.js$domain=finanzen.ch -@@||classic.comunio.de/clubImg.phtml/$image,~third-party -@@||digitale-sammlungen.gwlb.de^*/pageview.js$script,domain=digitale-sammlungen.gwlb.de -@@||dynamicyield.com/scripts/*/dy-coll-nojq-min.js$domain=gigasport.at|gigasport.ch|gigasport.de -@@||energy.de^*/ivw.js?$domain=energy.de -@@||ens.nzz.ch^$~third-party -@@||geo.kaloo.ga/json/$script,domain=tagesspiegel.de -@@||google-analytics.com/gtm/js?$script,domain=unicef.de -@@||google-analytics.com/gtm/optimize.js$domain=focus.de -@@||googleoptimize.com/optimize.js?$domain=eventim.de -@@||gymnasedeburier.ch/themes/segment/js/$~third-party -@@||kameleoon.eu/images/$domain=welt.de -@@||kameleoon.eu/kameleoon.js$domain=welt.de -@@||kameleoon.io/geolocation^$domain=welt.de -@@||kameleoon.io/ip^$domain=welt.de -@@||l.ecn-ldr.de/loader/loader.js$domain=braun-hamburg.com -@@||online.mps-gba.de/praeludium/$script,domain=auto-motor-und-sport.de|caravaning.de|motorradonline.de -@@||outbrainimg.com^$third-party,domain=computerbild.de|fitbook.de|metal-hammer.de|rollingstone.de|stylebook.de -@@||rackcdn.com/stf.js$script,domain=20min.ch -@@||responder.wt-safetag.com/resp/api/get/$script,domain=myhermes.de -@@||script-at.iocnt.net/iam.js$domain=oe24.at -@@||showheroes.com/publishertag.js$domain=rollingstone.de -@@||showheroes.com/pubtag.js$domain=rollingstone.de -@@||spiegel.de/layout/js/http/netmind-$script -@@||taboola.com/libtrc/$script,domain=bild.de|computerbild.de|fitbook.de|jetzt.de|metal-hammer.de|musikexpress.de|noizz.de|rollingstone.de|stylebook.de|sueddeutsche.de|techbook.de|travelbook.de|welt.de|wieistmeineip.at|wieistmeineip.ch|wieistmeineip.de -@@||technical-service.net^$xmlhttprequest,domain=n-tv.de|rtl.de|vip.de -@@||tipico.de/js/modules/fingerprintjs2/fingerprint2.min.js$script,~third-party -@@||toggo.de/static/js/sourcepoint.js$domain=toggo.de -@@||trbo.com/plugin/trbo_$script,domain=blau.de -@@||uim.tifbs.net/js/$script,domain=web.de -@@||widgets.trustedshops.com/reviews/tsSticker/$domain=koziol-shop.de -!---------- Greek ----------- -@@||extreme-ip-lookup.com/json/$xmlhttprequest,domain=skaitv.gr -!---------- French ---------- -@@||actiris.be/urchin.js -@@||ausha.tsbluebox.com^$media,domain=podcast.ausha.co -@@||caf.fr^*/smarttag.js$script,~third-party -@@||cmp.telerama.fr/js/telerama.min.js$~third-party -@@||connect.facebook.net^*/fbevents.js$domain=elinoi.com -@@||forecast.lemonde.fr/p/event/pageview?$image,~third-party -@@||helix.videotron.com/js/api/fingerprint.js$~third-party -@@||logic-immo.com/lib/xiti/xiti.js$script,~third-party -@@||mabanque.fortuneo.fr/js/front/fingerprint2.js$script,domain=mabanque.fortuneo.fr -@@||pmdstatic.net/advertising-$script,xmlhttprequest,domain=programme-tv.net -@@||service-public.fr^*/assets/js/eulerian/eulerian.js$~third-party -@@||tra.scds.pmdstatic.net/sourcepoint/$domain=businessinsider.fr|capital.fr|voici.fr -@@||trustcommander.net/iab-tcfapi/tcfapi.js$script,domain=tf1info.fr -!---------- Arabic ---------- -@@||collector.leaddyno.com/shopify.js$script,domain=s4l.us -@@||nbe.com.eg/NBEeChannelManager/CallMW.aspx$~third-party -@@||rudaw.net/images/pixel.gif$~third-party -@@||static.leaddyno.com/js$script,domain=s4l.us -!---------- Bosnian ---------- -@@||ocdn.eu/ucs/static/*/onesignal.js$script,domain=pulsonline.rs -!---------- Bulgarian ---------- -!---------- Chinese ---------- -@@||10086.cn/framework/modules/sdc.js$script,~third-party -@@||aixifan.com^*/sensorsdata.min.js?$domain=acfun.cn -@@||baidu.com/api/bidder/$domain=jump2.bdimg.com -@@||gtimg.com/qqcdn/*/beacon.min.js$script,domain=qq.com -@@||hk.on.cc/js/v4/urchin.js -@@||ipqualityscore.com/api/$script,domain=carousell.com.hk -@@||iwrite.unipus.cn/js/main/GPT.js$~third-party -@@||mail.163.com/fetrack/api/27/envelope/?sentry_key=$xmlhttprequest -@@||marketing.unionpayintl.com/offer-promote/static/sensorsdata.min.js$script,~third-party -@@||nobook.com/open-interface/official-sensors.git/$script,~third-party -@@||pv.sohu.com/cityjson$domain=ems.com.cn -@@||statics.zcool.com.cn/track/sensors.$script,~third-party -@@||tianyancha.com^*/sensorsdata.$script,~third-party -!---------- Czech ---------- -@@||1gr.cz/js/dtm/cache/satelliteLib-$domain=idnes.cz -@@||creditas.cz/cb/public/assets/SmartTag-$script,~third-party -@@||h.imedia.cz/js/cmp2/scmp.js$domain=seznam.cz -@@||hlidacstatu.cz/scripts/highcharts-6/modules/heatmap.js -@@||seznam.cz/?spec=*&url=$image,domain=search.seznam.cz -@@||tvcom-static.ssl.cdn.cra.cz/*/videojs.ga.js$script,domain=tvcom.cz -!---------- Danish ---------- -@@||nemlog-in.dk/resources/js/adrum.js$~third-party -@@||spoc.sydtrafik.dk/CherwellPortal/dist/app/common/analytics/Analytics.js$~third-party -!---------- Dutch ---------- -@@||3voor12.vpro.nl^*/streamsense.min.js$~third-party -@@||ad.crwdcntrl.net^$script,domain=rtl.nl -@@||gdh.postcodeloterij.nl/gdltm.js$domain=vriendenloterij.nl -@@||josiad.ns.nl/DG/DEFAULT/$xmlhttprequest -@@||marketingautomation.services^$script,domain=leeuwerik.nl -@@||tag.aticdn.net/piano-analytics.js$script,domain=boerzoektvrouw.kro-ncrv.nl -!---------- Finnish ---------- -@@||analytics-sdk.yle.fi/yle-analytics.min.js$~third-party -@@||nelonenmedia.fi/logger/logger-ini.json$xmlhttprequest,domain=embed.sanoma-sndp.fi|supla.fi -!---------- Hebrew ---------- -@@||amazonaws.com/static.madlan.co.il/*/heatmap.json?$xmlhttprequest -@@||haaretz.co.il/logger/p.gif?$image,xmlhttprequest -@@||mixpanel.com/track/?data=$xmlhttprequest,domain=eloan.co.il -@@||mxpnl.com/libs/mixpanel-*.min.js$domain=eloan.co.il -@@||themarker.com/logger/p.gif?$image,xmlhttprequest -@@||trc.taboola.com/inncoil/log/3/available$subdocument,domain=inn.co.il -!---------- Hungarian ---------- -@@||keytiles.com/tracking/$script,domain=blikk.hu -@@||kozkutak.hu/getdata.php?v*=pageview$~third-party -!---------- Icelandic ---------- -!---------- Italian ---------- -@@||adobedtm.com^*/AppMeasurement.min.js$script,domain=sky.it -@@||adobetag.com/d2/telecomitalia/live/Aggregato119TIM.js$domain=tim.it -@@||analytics.edgekey.net/config/beacon-$xmlhttprequest,domain=raiplay.it -@@||cdnb.4strokemedia.com/carousel/v4/comscore-JS-$script -@@||chartbeat.com/js/chartbeat_brightcove_plugin.js$domain=capital.it|deejay.it|m2o.it -@@||clerk.io/clerk.js$script,domain=trony.it -@@||codicefl.shinystat.com/cgi-bin/getserver.cgi?$script,domain=3bmeteo.com|quotidiano.net -@@||digitrend.it/wonder-marketing/assets/wordpress/js/videojs.ga.js?$script,domain=vrsicilia.it -@@||jsdelivr.net^*/keen-tracking.min.js$domain=nextquotidiano.it -@@||kataweb.it/wt/wt.js?http$domain=gelocal.it|video.huffingtonpost.it|video.ilsecoloxix.it|video.lastampa.it|video.repubblica.it -@@||livesicilia.it/wp-content/plugins/digistream/digiplayer/js/videojs.ga.js?$script,~third-party -@@||qds.it/wp-content/plugins/digistream/digiplayer/js/videojs.ga.js?$script,~third-party -@@||radio24.ilsole24ore.com/plugins/cordova-plugin-nielsen/www/nielsen.js$script,~third-party -@@||repubblica.it/pw/pw.js?deskurl=$domain=gelocal.it|ilsecoloxix.it|lastampa.it -@@||speedcurve.com/js/lux.js$script,domain=tv8.it -@@||sport.virgilio.it/js/web-vitals-evnt.25/web-vitals.attribution.js$script,domain=sport.virgilio.it -@@||tecnologia.libero.it/js/dist.1/web-vitals.attribution.js$script,domain=tecnologia.libero.it -@@||thron.com/shared/plugins/tracking/current/tracking-library-min.js$domain=dainese.com -@@||timvision.it/libs/fingerprint/fingerprint.js -@@||track.adform.net/serving/scripts/trackpoint$script,domain=sky.it -!---------- Indonesian ---------- -@@||detik.com/urchin.js -!---------- Japanese ---------- -@@||allabout.co.jp/mtx_cnt.js$script,~third-party -@@||analytics.digitalpfizer.com/js/prod/pcc/pf_appmeasurement.js$domain=pfizer-covid19-vaccine.jp -@@||atwiki.jp/common/_img/spacer.gif?$image,domain=atwiki.jp -@@||b-cloud.templatebank.com/js/gtag.js$~third-party -@@||bdash-cloud.com/recommend-script/$script,domain=junonline.jp -@@||bdash-cloud.com/tracking-script/*/tracking.js$domain=junonline.jp -@@||carsensor.net/usedcar/modules/clicklog_top_lp_revo.php$xmlhttprequest -@@||cdn.treasuredata.com/sdk/$script,domain=retty.me -@@||clarity.ms/tag/$script,domain=phileweb.com -@@||cmn.gyro-n.com/js/gyr.min.js$domain=benesse-style-care.co.jp -@@||delivery.satr.jp^$script,domain=mieru-ca.com -@@||deteql.net/recommend/provision?$xmlhttprequest,domain=t-fashion.jp -@@||disneyplus.disney.co.jp/view/vendor/analytics/$~third-party -@@||dmp.im-apps.net/pms/*/pmt.js$domain=zakzak.co.jp -@@||docodoco.jp^*/docodoco?key=$script,domain=jrtours.co.jp -@@||e-stat.go.jp/modules/custom/retrieve/src/js/stat.js?$script,~third-party -@@||ev.tpocdm.com^$xmlhttprequest,domain=wowma.jp -@@||f-gear.ec-optimizer.com/img/spacer.gif$image,domain=ec.f-gear.co.jp -@@||f-gear.ec-optimizer.com/search4.do$script,domain=ec.f-gear.co.jp -@@||f-gear.ec-optimizer.com/speights/searchresult2fgear.js$script,domain=ec.f-gear.co.jp -@@||gamerch.com/s3-assets/library/js/fingerprint2.min.js?$script,~third-party -@@||geolocation-db.com/json/$domain=admanager.line.biz -@@||get.s-onetag.com/*/tag.min.js$domain=zakzak.co.jp -@@||googleadservices.com/pagead/conversion_async.js$script,domain=jp.square-enix.com -@@||googletagservices.com/tag/js/gpt.js$domain=fukuishimbun.co.jp -@@||guinnessworldrecords.jp/ezais/analytics$~third-party -@@||h-cast.jp^$script,domain=bookoffonline.co.jp -@@||howtonote.jp/google-analytics/$image,~third-party -@@||in.treasuredata.com/js/*api_key$script,domain=retty.me -@@||js.appboycdn.com/web-sdk/$domain=kfc.co.jp -@@||justmyshop.com/gate/criteo/product-id.js$~third-party -@@||k-img.com/script/analytics/s_code.js$script,domain=kakaku.com -@@||karte.io/libs/tracker.$domain=zf1.tohoku-epco.co.jp|zozo.jp -@@||line-scdn.net^*/torimochi.js$script,domain=demae-can.com -@@||linksynergy.com/minified_logic.js$xmlhttprequest -@@||log000.goo.ne.jp/gcgw.js$domain=nttxstore.jp -@@||logly.co.jp/recommend/img.benesse-cms.jp/$image,domain=benesse.ne.jp -@@||nakanohito.jp^*/bi.js$domain=kenko-tokina.co.jp|myna.go.jp -@@||nittsu.com/Tracking/Scripts/Tracking/track.js -@@||platform.twitter.com/oct.js$domain=ncsoft.jp -@@||play.dlsite.com/csr/viewer/lib/newrelic.js -@@||pvtag.yahoo.co.jp^$script,domain=paypaymall.yahoo.co.jp -@@||rt.rtoaster.jp^$image,domain=ec-store.net -@@||rtoaster.jp/Rtoaster.js$domain=peachjohn.co.jp|satofull.jp -@@||rtoaster.jp^$script,domain=cecile.co.jp|ec-store.net|jreastmall.com|lexus.jp|melonbooks.co.jp -@@||s.yimg.jp/images/listing/tool/cv/ytag.js$domain=redstoneonline.jp -@@||s.yjtag.jp/tag.js$script,domain=baseball.yahoo.co.jp|bousai.yahoo.co.jp|soccer.yahoo.co.jp|www.epson.jp -@@||sail-horizon.com/spm/spm.v1.min.js$script,domain=voguegirl.jp -@@||sankei.co.jp/js/analytics/skd.Analysis.js$script -@@||sanspo.com/parts/chartbeat/$xmlhttprequest -@@||snva.jp/javascripts/reco/$script,domain=store.charle.co.jp -@@||suumo.jp/sp/js/beacon.js$script,~third-party -@@||tm.r-ad.ne.jp/128/ra346756.js$script,domain=hpdsp.net -@@||townwork.net/js/AppMeasurement.js$~third-party -@@||treasuredata.com^$script,domain=skincare-univ.com -@@||twitter.com/oct.js$domain=jp.square-enix.com -@@||type.jp/common/js/clicktag.js -@@||ukw.jp^*/?cbk=$script,domain=system5.jp -@@||useinsider.com/ins.js$domain=pizzahut.jp -@@||user.userguiding.com/sdk/identify$xmlhttprequest,domain=xaris.ai -@@||webcdn.stream.ne.jp^*/referrer.js$domain=stream.ne.jp -@@||yjtag.yahoo.co.jp/tag?$script,domain=bousai.yahoo.co.jp -@@||yu.xyz.mn/images/event.gif?$image,~third-party -@@||zinro.net/m/log.php -!---------- Korean ---------- -@@||naver.net/wcslog.js$domain=m.tv.naver.com -@@||ssl.pstatic.net/sstatic/sdyn.js$script,domain=search.naver.com -!---------- Latvian ---------- -@@||gemius.pl/gplayer.js$script,third-party -!---------- Macedonian ---------- -@@||motika.com.mk/wp-content/plugins/ajax-hits-counter/display-hits.rapid.php$~third-party -!---------- Norwegian ---------- -@@||cat.telia.no/gtm.js$script,domain=telia.no -@@||hvemder.no/js/hitcount.min.js$~third-party -@@||komplett.no/gtm.js$script,~third-party -!---------- Polish ---------- -@@||gemius.pl/gstream.js -@@||hit.gemius.pl/__/redataredir?$domain=ing.pl -@@||hit.interia.pl/iwa_core$script,~third-party -@@||iwa.iplsc.com/iwa.js$script -@@||login.ingbank.pl^*/satelliteLib-$script -@@||polfan.pl/app/vendor/fingerprint2.min.js$~third-party -@@||pushpushgo.com/js/$script,domain=centrumriviera.pl -@@||sascdn.com/tag/$script,domain=filmweb.pl -@@||smog.moja-ostroleka.pl/mapa/sensorsdata.json$~third-party -@@||staty.portalradiowy.pl/wstats/$script,third-party -@@||unpkg.com/web-vitals/dist/web-vitals.base.iife.js$script,domain=wpolityce.pl -!---------- Portuguese ---------- -@@||auth2.picpay.com^*/event-tracking.js$script,~third-party -@@||d.tailtarget.com/profiles.js$domain=superesportes.com.br -@@||google-analytics.com/urchin.js$domain=record.xl.pt -@@||players.fichub.com/plugins/adobe/$domain=24kitchen.pt -@@||serasaexperian.com.br/dist/scripts/fingerprint2.js$~third-party -@@||sibs.com/fingerprint/sfp2/fp2.min.js$script,domain=net24.bancomontepio.pt -@@||siteapps.com^$script,domain=netcombo.com.br -@@||tags.t.tailtarget.com/t3m.js?$domain=superesportes.com.br -!---------- Romanian ---------- -@@||content.adunity.com/aulib.js$script,domain=b1tv.ro -@@||imobiliare.ro/js/gtm.js$script,~third-party -@@||stream.adunity.com^$xmlhttprequest,domain=b1tv.ro -!---------- Russian ---------- -@@||afisha.ru/proxy/videonetworkproxy.ashx?$xmlhttprequest -@@||criteo.net/js/ld/publishertag.js$domain=novayagazeta.ru -@@||dict.rambler.ru/fcgi-bin/$xmlhttprequest,domain=rambler.ru -@@||fplay.online/log_event$~third-party,xmlhttprequest -@@||k12-company.ru^*/statistics.js$script -@@||krok8.com/wp-content/plugins/pageviews/pageviews.min.js$script,~third-party -@@||labrc.pw/advstats/$xmlhttprequest -@@||mc.yandex.ru/metrika/tag.js$script,domain=auto.yandex|coddyschool.com -@@||mealty.ru/js/ga_events.js$~third-party -@@||mycargo.rzd.ru/dst/scripts/common/analytics-helper.js$~third-party -@@||online.bcs.ru^*/piwik.bcs.js$script -@@||openfpcdn.io/fingerprintjs/v3/iife.min.js$script,domain=mos03education.ru -@@||pay.citylink.pro/stats/services/$~third-party -@@||pladform.ru/dive/$xmlhttprequest -@@||pladform.ru/player$subdocument -@@||planetazdorovo.ru/pics/transparent_pixel.png$image,~third-party -@@||playep.pro/log_event$~third-party,xmlhttprequest -@@||player.fc-zenit.ru/msi/geoip?$xmlhttprequest -@@||player.smotrim.ru/js/piwik.js$~third-party -@@||player.vgtrk.com/js/stat.js? -@@||playy.online/log_event$~third-party,xmlhttprequest -@@||plplayer.online/log_event$~third-party,xmlhttprequest -@@||rtr-vesti.ru/pvc_cdn/js/stat.js$domain=player.vgtrk.com -@@||smotrim.ru/js/stat.js$script -@@||swa.mail.ru/cgi-bin/counters?$script -@@||toplay.biz/log_event$~third-party,xmlhttprequest -@@||ucoz.net/cgi/uutils.fcg?$script,third-party -@@||wargag.ru/public/js/counter.js? -@@||widget.myrentacar.me^$script,subdocument -@@||yandex.ru/metrika/tag.js$script,domain=kuchenland.ru -@@||yandex.ru/metrika/watch.js$domain=alean.ru|anoncer.net|nabortu.ru|samozapis-spb.ru|tv.yandex.ru|tvrain.ru -@@||yandex.ru/watch/$xmlhttprequest,domain=anoncer.net -@@||yandex.ru/webvisor/$xmlhttprequest,domain=anoncer.net -!---------- Spanish ---------- -@@||api.apolomedia.com/static/libs/event-tracking.min.js$script -@@||cdn.smartclip-services.com^$script,domain=cerebriti.com -@@||cloudfront.net/libs/amplitude-$script,domain=elconfidencial.com -@@||elconfidencial.com^*/AnalyticsEvent.js -@@||elconfidencial.com^*/EventTracker.js -@@||metrics.el-mundo.net/b/ss/$image,domain=expansion.com -@@||mi.tigo.com.co/plugins/cordova-plugin-fingerprint-aio/$script,~third-party -@@||spxl.socy.es^$script,xmlhttprequest,domain=3djuegosguias.com|3djuegospc.com|applesfera.com|compradiccion.com|directoalpaladar.com|espinof.com|genbeta.com|poprosa.com|trendencias.com|trendenciashombre.com|vidaextra.com|vitonica.com|xatakamovil.com -!---------- Swedish ---------- -@@||lwadm.com/lw/pbjs?pid=$script,domain=sydostran.se -@@||picsearch.com/js/comscore.js$domain=dn.se -!---------- Thai ---------- -!---------- Turkish ---------- -@@||cdn.segmentify.com^$script,domain=gratis.com -@@||merlincdn.net^*/common/images/spacer.gif$image,domain=turkcell.com.tr -!---------- Ukrainian ---------- -@@||gemius.pl/gplayer.js$domain=tsn.ua -@@||multitest.ua/static/bower_components/boomerang/boomerang.js$~third-party -@@||privatbank.ua/content/*/fp2.min.js$~third-party -@@||uaprom.net/image/blank.gif?$image -!---------- Vietnamese ---------- -@@||netcoresmartech.com/smartechclient.js$domain=cgv.vn -!---------- Anti-Adblock ---------- -@@|http://r.i.ua/s?*&p*&l$image,domain=swordmaster.org diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/pgl.yoyo.org/as/README.md b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/pgl.yoyo.org/as/README.md deleted file mode 100644 index cf68d92..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/pgl.yoyo.org/as/README.md +++ /dev/null @@ -1,29 +0,0 @@ -: - -Site does encourage use of the list for noncommercial uses only, as per -https://pgl.yoyo.org/ ("everything licensed under the McRae General Public -License (version 4.r53) ") - -Licence can be found at https://pgl.yoyo.org/license/, and is copied below -for brevity: - - - Preamble - -------- - Your GRAN. - - - MCRAE GENERAL PUBLIC LICENSE (version 4.r53) - -------------------------------------------- - This license applies to any work containing a notice placed by the - copyright holder (that would be ME) saying it is uses the McRae - General Public License. "The work" refers to any such work. - - This license stipulates that it is strictly forbidden to redistribute - or use the work in any manner that could possibly be construed as - making anybody any money, or I'll sue you. No! You will NOT do that! - Okee? And if you don't agree with these terms, you can print out the - source to the work and stick it up your ARSE. - - Aye, but otherwise feel free to take "the work" and do what you like. - If you're TOO BLOODY LAZY to do it yourself, I cannae help it. OK? diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/pgl.yoyo.org/as/serverlist b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/pgl.yoyo.org/as/serverlist deleted file mode 100644 index 82e682f..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/pgl.yoyo.org/as/serverlist +++ /dev/null @@ -1,3562 +0,0 @@ -# Blocklist for use with hosts files to block ads, trackers, and other nasty things -# -# For more information about this list, see: https://pgl.yoyo.org/adservers/ -# ---- -# last updated: Fri, 26 Jul 2024 14:50:13 GMT -# entries: 3548 -# format: hosts (hosts -- in hosts file format) -# credits: Peter Lowe - pgl@yoyo.org - https://pgl.yoyo.org/ - https://twitter.com/pgl -# this URL: https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext -# Patreon: https://patreon.com/blocklist -# other formats: https://pgl.yoyo.org/adservers/formats.php -# policy: https://pgl.yoyo.org/adservers/policy.php -# -# start date: Fri, 06 Jun 2003 00:00:00 -127.0.0.1 1-1ads.com -127.0.0.1 101com.com -127.0.0.1 101order.com -127.0.0.1 180hits.de -127.0.0.1 180searchassistant.com -127.0.0.1 1link2020.com -127.0.0.1 1rx.io -127.0.0.1 207.net -127.0.0.1 247media.com -127.0.0.1 24log.com -127.0.0.1 24pm-affiliation.com -127.0.0.1 2mdn.net -127.0.0.1 2o7.net -127.0.0.1 2znp09oa.com -127.0.0.1 30ads.com -127.0.0.1 3337723.com -127.0.0.1 33across.com -127.0.0.1 360yield.com -127.0.0.1 3lift.com -127.0.0.1 3o9s.short.gy -127.0.0.1 4d5.net -127.0.0.1 4info.com -127.0.0.1 4jnzhl0d0.com -127.0.0.1 50websads.com -127.0.0.1 518ad.com -127.0.0.1 5mcwl.pw -127.0.0.1 6ldu6qa.com -127.0.0.1 6sc.co -127.0.0.1 777partner.com -127.0.0.1 77tracking.com -127.0.0.1 7bpeople.com -127.0.0.1 7cnq.net -127.0.0.1 7search.com -127.0.0.1 82o9v830.com -127.0.0.1 a-ads.com -127.0.0.1 a.mktw.net -127.0.0.1 a.muloqot.uz -127.0.0.1 a.sakh.com -127.0.0.1 a.ucoz.net -127.0.0.1 a.ucoz.ru -127.0.0.1 a.vartoken.com -127.0.0.1 a.vfghd.com -127.0.0.1 a.vfgtb.com -127.0.0.1 a.xanga.com -127.0.0.1 a135.wftv.com -127.0.0.1 a5.overclockers.ua -127.0.0.1 aa-metrics.beauty.hotpepper.jp -127.0.0.1 aa-metrics.recruit-card.jp -127.0.0.1 aa-metrics.trip-ai.jp -127.0.0.1 aaddzz.com -127.0.0.1 aax-eu-dub.amazon.com -127.0.0.1 aaxads.com -127.0.0.1 abacho.net -127.0.0.1 abc-ads.com -127.0.0.1 ablink.comms.trainline.com -127.0.0.1 ablink.news.emails-puregym.com -127.0.0.1 ablinks.mail.hinge.co -127.0.0.1 aboardlevel.com -127.0.0.1 abruptroad.com -127.0.0.1 absorbingband.com -127.0.0.1 absorbingcorn.com -127.0.0.1 abstractedauthority.com -127.0.0.1 abtasty.com -127.0.0.1 ac.rnm.ca -127.0.0.1 acemlnb.com -127.0.0.1 acridtwist.com -127.0.0.1 actionsplash.com -127.0.0.1 actonsoftware.com -127.0.0.1 actualdeals.com -127.0.0.1 actuallysheep.com -127.0.0.1 actuallysnake.com -127.0.0.1 actuallything.com -127.0.0.1 acuityads.com -127.0.0.1 acuityplatform.com -127.0.0.1 ad-balancer.at -127.0.0.1 ad-balancer.net -127.0.0.1 ad-cupid.com -127.0.0.1 ad-delivery.net -127.0.0.1 ad-pay.de -127.0.0.1 ad-rotator.com -127.0.0.1 ad-score.com -127.0.0.1 ad-server.gulasidorna.se -127.0.0.1 ad-space.net -127.0.0.1 ad-up.com -127.0.0.1 ad.71i.de -127.0.0.1 ad.a8.net -127.0.0.1 ad.abcnews.com -127.0.0.1 ad.abctv.com -127.0.0.1 ad.aboutwebservices.com -127.0.0.1 ad.abum.com -127.0.0.1 ad.admitad.com -127.0.0.1 ad.allboxing.ru -127.0.0.1 ad.altervista.org -127.0.0.1 ad.amgdgt.com -127.0.0.1 ad.anuntis.com -127.0.0.1 ad.auditude.com -127.0.0.1 ad.bitmedia.io -127.0.0.1 ad.bizo.com -127.0.0.1 ad.bondage.com -127.0.0.1 ad.centrum.cz -127.0.0.1 ad.cgi.cz -127.0.0.1 ad.choiceradio.com -127.0.0.1 ad.cooks.com -127.0.0.1 ad.digitallook.com -127.0.0.1 ad.dnoticias.pt -127.0.0.1 ad.domainfactory.de -127.0.0.1 ad.exyws.org -127.0.0.1 ad.foxnetworks.com -127.0.0.1 ad.grafika.cz -127.0.0.1 ad.gt -127.0.0.1 ad.hbv.de -127.0.0.1 ad.hodomobile.com -127.0.0.1 ad.hyena.cz -127.0.0.1 ad.iinfo.cz -127.0.0.1 ad.infoseek.com -127.0.0.1 ad.intl.xiaomi.com -127.0.0.1 ad.jacotei.com.br -127.0.0.1 ad.jetsoftware.com -127.0.0.1 ad.keenspace.com -127.0.0.1 ad.lgappstv.com -127.0.0.1 ad.liveinternet.ru -127.0.0.1 ad.lupa.cz -127.0.0.1 ad.mediastorm.hu -127.0.0.1 ad.mg -127.0.0.1 ad.musicmatch.com -127.0.0.1 ad.myapple.pl -127.0.0.1 ad.mynetreklam.com.streamprovider.net -127.0.0.1 ad.nachtagenten.de -127.0.0.1 ad.nettvservices.com -127.0.0.1 ad.nttnavi.co.jp -127.0.0.1 ad.nwt.cz -127.0.0.1 ad.period-calendar.com -127.0.0.1 ad.profiwin.de -127.0.0.1 ad.prv.pl -127.0.0.1 ad.reachlocal.com -127.0.0.1 ad.simflight.com -127.0.0.1 ad.simgames.net -127.0.0.1 ad.style -127.0.0.1 ad.tapthislink.com -127.0.0.1 ad.technoratimedia.com -127.0.0.1 ad.tv2.no -127.0.0.1 ad.universcine.com -127.0.0.1 ad.usatoday.com -127.0.0.1 ad.virtual-nights.com -127.0.0.1 ad.wavu.hu -127.0.0.1 ad.weatherbug.com -127.0.0.1 ad.wsod.com -127.0.0.1 ad.wz.cz -127.0.0.1 ad.xiaomi.com -127.0.0.1 ad.xmovies8.si -127.0.0.1 ad.xrea.com -127.0.0.1 ad.ztylez.com -127.0.0.1 ad0.bigmir.net -127.0.0.1 ad01.mediacorpsingapore.com -127.0.0.1 ad1.emule-project.org -127.0.0.1 ad1.kde.cz -127.0.0.1 ad2.iinfo.cz -127.0.0.1 ad2.lupa.cz -127.0.0.1 ad2.netriota.hu -127.0.0.1 ad2.nmm.de -127.0.0.1 ad2.xrea.com -127.0.0.1 ad3.iinfo.cz -127.0.0.1 ad3.xrea.com -127.0.0.1 ad4game.com -127.0.0.1 ad4mat.com -127.0.0.1 ad4mat.de -127.0.0.1 ad4mat.net -127.0.0.1 adabra.com -127.0.0.1 adaction.de -127.0.0.1 adadvisor.net -127.0.0.1 adalliance.io -127.0.0.1 adanging.blog -127.0.0.1 adap.tv -127.0.0.1 adapt.tv -127.0.0.1 adaranth.com -127.0.0.1 adbilty.me -127.0.0.1 adblade.com -127.0.0.1 adblade.org -127.0.0.1 adblockanalytics.com -127.0.0.1 adbooth.net -127.0.0.1 adbot.com -127.0.0.1 adbrite.com -127.0.0.1 adbroker.de -127.0.0.1 adbunker.com -127.0.0.1 adbutler.com -127.0.0.1 adbuyer.com -127.0.0.1 adbuyer3.lycos.com -127.0.0.1 adcampo.com -127.0.0.1 adcannyads.com -127.0.0.1 adcash.com -127.0.0.1 adcast.deviantart.com -127.0.0.1 adcel.co -127.0.0.1 adcell.de -127.0.0.1 adcenter.net -127.0.0.1 adclick.com -127.0.0.1 adclient1.tucows.com -127.0.0.1 adclixx.net -127.0.0.1 adcolony.com -127.0.0.1 adcomplete.com -127.0.0.1 adconion.com -127.0.0.1 adcontent.gamespy.com -127.0.0.1 adcovery.com -127.0.0.1 adcycle.com -127.0.0.1 add.newmedia.cz -127.0.0.1 addfreestats.com -127.0.0.1 addme.com -127.0.0.1 adecn.com -127.0.0.1 adeimptrck.com -127.0.0.1 ademails.com -127.0.0.1 adengage.com -127.0.0.1 adetracking.com -127.0.0.1 adeure.com -127.0.0.1 adexc.net -127.0.0.1 adexchangegate.com -127.0.0.1 adexchangeprediction.com -127.0.0.1 adexpose.com -127.0.0.1 adext.inkclub.com -127.0.0.1 adf.ly -127.0.0.1 adfeed.marchex.com -127.0.0.1 adflight.com -127.0.0.1 adforce.com -127.0.0.1 adform.com -127.0.0.1 adform.net -127.0.0.1 adformdsp.net -127.0.0.1 adgardener.com -127.0.0.1 adhaven.com -127.0.0.1 adhese.be -127.0.0.1 adhese.com -127.0.0.1 adhigh.net -127.0.0.1 adhoc4.net -127.0.0.1 adhunter.media -127.0.0.1 adimage.guardian.co.uk -127.0.0.1 adimages.been.com -127.0.0.1 adimages.carsoup.com -127.0.0.1 adimages.go.com -127.0.0.1 adimages.homestore.com -127.0.0.1 adimages.omroepzeeland.nl -127.0.0.1 adimages.sanomawsoy.fi -127.0.0.1 adimg.com.com -127.0.0.1 adimg.uimserv.net -127.0.0.1 adimg1.chosun.com -127.0.0.1 adimgs.sapo.pt -127.0.0.1 adingo.jp -127.0.0.1 adinjector.net -127.0.0.1 adinterax.com -127.0.0.1 adisfy.com -127.0.0.1 adition.com -127.0.0.1 adition.de -127.0.0.1 adition.net -127.0.0.1 adizio.com -127.0.0.1 adjix.com -127.0.0.1 adjug.com -127.0.0.1 adjuggler.com -127.0.0.1 adjuggler.yourdictionary.com -127.0.0.1 adjust.com -127.0.0.1 adjustnetwork.com -127.0.0.1 adk2.co -127.0.0.1 adk2.com -127.0.0.1 adland.ru -127.0.0.1 adlegend.com -127.0.0.1 adlightning.com -127.0.0.1 adlog.com.com -127.0.0.1 adloox.com -127.0.0.1 adlooxtracking.com -127.0.0.1 adlure.net -127.0.0.1 adm.fwmrm.net -127.0.0.1 admagnet.net -127.0.0.1 admailtiser.com -127.0.0.1 adman.gr -127.0.0.1 adman.otenet.gr -127.0.0.1 admanagement.ch -127.0.0.1 admanager.btopenworld.com -127.0.0.1 admanager.carsoup.com -127.0.0.1 admanmedia.com -127.0.0.1 admantx.com -127.0.0.1 admarketplace.net -127.0.0.1 admarvel.com -127.0.0.1 admaster.com.cn -127.0.0.1 admatchly.com -127.0.0.1 admedia.com -127.0.0.1 admeld.com -127.0.0.1 admeridianads.com -127.0.0.1 admex.com -127.0.0.1 admidadsp.com -127.0.0.1 adminder.com -127.0.0.1 adminshop.com -127.0.0.1 admix.in -127.0.0.1 admixer.net -127.0.0.1 admized.com -127.0.0.1 admob.com -127.0.0.1 admonitor.com -127.0.0.1 adn.lrb.co.uk -127.0.0.1 adnami.io -127.0.0.1 adnet.asahi.com -127.0.0.1 adnet.biz -127.0.0.1 adnet.de -127.0.0.1 adnet.ru -127.0.0.1 adnetasia.com -127.0.0.1 adnetwork.net -127.0.0.1 adnetworkperformance.com -127.0.0.1 adnews.maddog2000.de -127.0.0.1 adnium.com -127.0.0.1 adnxs-simple.com -127.0.0.1 adnxs.com -127.0.0.1 adocean.pl -127.0.0.1 adonspot.com -127.0.0.1 adoptum.net -127.0.0.1 adoric-om.com -127.0.0.1 adorigin.com -127.0.0.1 adotmob.com -127.0.0.1 adpepper.dk -127.0.0.1 adpepper.nl -127.0.0.1 adperium.com -127.0.0.1 adpia.vn -127.0.0.1 adplus.co.id -127.0.0.1 adplxmd.com -127.0.0.1 adprofits.ru -127.0.0.1 adpushup.com -127.0.0.1 adrazzi.com -127.0.0.1 adreactor.com -127.0.0.1 adreclaim.com -127.0.0.1 adrecover.com -127.0.0.1 adrecreate.com -127.0.0.1 adremedy.com -127.0.0.1 adreporting.com -127.0.0.1 adrevolver.com -127.0.0.1 adriver.ru -127.0.0.1 adrolays.de -127.0.0.1 adrotate.de -127.0.0.1 adrotic.girlonthenet.com -127.0.0.1 adrta.com -127.0.0.1 ads-backend.chaincliq.com -127.0.0.1 ads-bilek.com -127.0.0.1 ads-click.com -127.0.0.1 ads-dev.pinterest.com -127.0.0.1 ads-game-187f4.firebaseapp.com -127.0.0.1 ads-kesselhaus.com -127.0.0.1 ads-trk.vidible.tv -127.0.0.1 ads-twitter.com -127.0.0.1 ads.365.mk -127.0.0.1 ads.4tube.com -127.0.0.1 ads.5ci.lt -127.0.0.1 ads.73dpi.com -127.0.0.1 ads.a-snag-smartmoney.fyi -127.0.0.1 ads.aavv.com -127.0.0.1 ads.abovetopsecret.com -127.0.0.1 ads.aceweb.net -127.0.0.1 ads.acpc.cat -127.0.0.1 ads.acrosspf.com -127.0.0.1 ads.activestate.com -127.0.0.1 ads.adfox.ru -127.0.0.1 ads.administrator.de -127.0.0.1 ads.adred.de -127.0.0.1 ads.adsbtc.fun -127.0.0.1 ads.adstream.com.ro -127.0.0.1 ads.adultfriendfinder.com -127.0.0.1 ads.advance.net -127.0.0.1 ads.adverline.com -127.0.0.1 ads.affiliates.match.com -127.0.0.1 ads.alive.com -127.0.0.1 ads.alt.com -127.0.0.1 ads.amdmb.com -127.0.0.1 ads.amigos.com -127.0.0.1 ads.annabac.com -127.0.0.1 ads.apn.co.nz -127.0.0.1 ads.appsgeyser.com -127.0.0.1 ads.as4x.tmcs.net -127.0.0.1 ads.as4x.tmcs.ticketmaster.com -127.0.0.1 ads.asiafriendfinder.com -127.0.0.1 ads.aspalliance.com -127.0.0.1 ads.avazu.net -127.0.0.1 ads.bb59.ru -127.0.0.1 ads.belointeractive.com -127.0.0.1 ads.betfair.com -127.0.0.1 ads.bigchurch.com -127.0.0.1 ads.bigfoot.com -127.0.0.1 ads.bing.com -127.0.0.1 ads.bittorrent.com -127.0.0.1 ads.blog.com -127.0.0.1 ads.bluemountain.com -127.0.0.1 ads.boerding.com -127.0.0.1 ads.boylesports.com -127.0.0.1 ads.brabys.com -127.0.0.1 ads.bumq.com -127.0.0.1 ads.canalblog.com -127.0.0.1 ads.casinocity.com -127.0.0.1 ads.casumoaffiliates.com -127.0.0.1 ads.cbc.ca -127.0.0.1 ads.cc -127.0.0.1 ads.cc-dt.com -127.0.0.1 ads.centraliprom.com -127.0.0.1 ads.channel4.com -127.0.0.1 ads.cheabit.com -127.0.0.1 ads.citymagazine.si -127.0.0.1 ads.clasificadox.com -127.0.0.1 ads.co.com -127.0.0.1 ads.colombiaonline.com -127.0.0.1 ads.com.com -127.0.0.1 ads.comeon.com -127.0.0.1 ads.contactmusic.com -127.0.0.1 ads.creative-serving.com -127.0.0.1 ads.cybersales.cz -127.0.0.1 ads.dada.it -127.0.0.1 ads.dailycamera.com -127.0.0.1 ads.deltha.hu -127.0.0.1 ads.dennisnet.co.uk -127.0.0.1 ads.desmoinesregister.com -127.0.0.1 ads.detelefoongids.nl -127.0.0.1 ads.deviantart.com -127.0.0.1 ads.devmates.com -127.0.0.1 ads.digital-digest.com -127.0.0.1 ads.digitalmedianet.com -127.0.0.1 ads.digitalpoint.com -127.0.0.1 ads.directionsmag.com -127.0.0.1 ads.doit.com.cn -127.0.0.1 ads.domeus.com -127.0.0.1 ads.dtpnetwork.biz -127.0.0.1 ads.eagletribune.com -127.0.0.1 ads.easy-forex.com -127.0.0.1 ads.economist.com -127.0.0.1 ads.elcarado.com -127.0.0.1 ads.electrocelt.com -127.0.0.1 ads.elitetrader.com -127.0.0.1 ads.emdee.ca -127.0.0.1 ads.emirates.net.ae -127.0.0.1 ads.epi.sk -127.0.0.1 ads.epltalk.com -127.0.0.1 ads.eu.msn.com -127.0.0.1 ads.expat-blog.biz -127.0.0.1 ads.fairfax.com.au -127.0.0.1 ads.fastcomgroup.it -127.0.0.1 ads.fasttrack-ignite.com -127.0.0.1 ads.femmefab.nl -127.0.0.1 ads.ferianc.com -127.0.0.1 ads.filmup.com -127.0.0.1 ads.financialcontent.com -127.0.0.1 ads.flooble.com -127.0.0.1 ads.fool.com -127.0.0.1 ads.footymad.net -127.0.0.1 ads.forbes.net -127.0.0.1 ads.formit.cz -127.0.0.1 ads.fortunecity.com -127.0.0.1 ads.fotosidan.se -127.0.0.1 ads.foxnetworks.com -127.0.0.1 ads.friendfinder.com -127.0.0.1 ads.gamecity.net -127.0.0.1 ads.gamespyid.com -127.0.0.1 ads.gamigo.de -127.0.0.1 ads.gaming-universe.de -127.0.0.1 ads.gaming1.com -127.0.0.1 ads.getlucky.com -127.0.0.1 ads.gld.dk -127.0.0.1 ads.gmodules.com -127.0.0.1 ads.goyk.com -127.0.0.1 ads.gplusmedia.com -127.0.0.1 ads.gradfinder.com -127.0.0.1 ads.grindinggears.com -127.0.0.1 ads.gsm-exchange.com -127.0.0.1 ads.gsmexchange.com -127.0.0.1 ads.guardian.co.uk -127.0.0.1 ads.guardianunlimited.co.uk -127.0.0.1 ads.guru3d.com -127.0.0.1 ads.hbv.de -127.0.0.1 ads.hearstmags.com -127.0.0.1 ads.heartlight.org -127.0.0.1 ads.hollywood.com -127.0.0.1 ads.horsehero.com -127.0.0.1 ads.hsoub.com -127.0.0.1 ads.ibest.com.br -127.0.0.1 ads.ibryte.com -127.0.0.1 ads.icq.com -127.0.0.1 ads.ign.com -127.0.0.1 ads.imagistica.com -127.0.0.1 ads.imgur.com -127.0.0.1 ads.independent.com.mt -127.0.0.1 ads.infi.net -127.0.0.1 ads.internic.co.il -127.0.0.1 ads.ipowerweb.com -127.0.0.1 ads.itv.com -127.0.0.1 ads.jewishfriendfinder.com -127.0.0.1 ads.jobsite.co.uk -127.0.0.1 ads.justhungry.com -127.0.0.1 ads.kabooaffiliates.com -127.0.0.1 ads.kaktuz.net -127.0.0.1 ads.kelbymediagroup.com -127.0.0.1 ads.kinxxx.com -127.0.0.1 ads.kompass.com -127.0.0.1 ads.krawall.de -127.0.0.1 ads.leovegas.com -127.0.0.1 ads.lesbianpersonals.com -127.0.0.1 ads.liberte.pl -127.0.0.1 ads.lifethink.net -127.0.0.1 ads.linkedin.com -127.0.0.1 ads.livenation.com -127.0.0.1 ads.lordlucky.com -127.0.0.1 ads.ma7.tv -127.0.0.1 ads.mail.bg -127.0.0.1 ads.mariuana.it -127.0.0.1 ads.massinfra.nl -127.0.0.1 ads.mcafee.com -127.0.0.1 ads.mediaodyssey.com -127.0.0.1 ads.mediasmart.es -127.0.0.1 ads.medienhaus.de -127.0.0.1 ads.meetcelebs.com -127.0.0.1 ads.mgnetwork.com -127.0.0.1 ads.miarroba.com -127.0.0.1 ads.mic.com -127.0.0.1 ads.mmania.com -127.0.0.1 ads.mobilebet.com -127.0.0.1 ads.msn.com -127.0.0.1 ads.multimania.lycos.fr -127.0.0.1 ads.muslimehelfen.org -127.0.0.1 ads.mvscoelho.com -127.0.0.1 ads.myadv.org -127.0.0.1 ads.nccwebs.com -127.0.0.1 ads.ndtv1.com -127.0.0.1 ads.networksolutions.com -127.0.0.1 ads.newgrounds.com -127.0.0.1 ads.newmedia.cz -127.0.0.1 ads.newsint.co.uk -127.0.0.1 ads.newsquest.co.uk -127.0.0.1 ads.nj.com -127.0.0.1 ads.nola.com -127.0.0.1 ads.nordichardware.com -127.0.0.1 ads.nordichardware.se -127.0.0.1 ads.nyi.net -127.0.0.1 ads.nytimes.com -127.0.0.1 ads.nyx.cz -127.0.0.1 ads.nzcity.co.nz -127.0.0.1 ads.o2.pl -127.0.0.1 ads.oddschecker.com -127.0.0.1 ads.okcimg.com -127.0.0.1 ads.ole.com -127.0.0.1 ads.oneplace.com -127.0.0.1 ads.opensubtitles.org -127.0.0.1 ads.optusnet.com.au -127.0.0.1 ads.outpersonals.com -127.0.0.1 ads.oxyshop.cz -127.0.0.1 ads.passion.com -127.0.0.1 ads.paymonex.net -127.0.0.1 ads.pexi.nl -127.0.0.1 ads.pfl.ua -127.0.0.1 ads.phpclasses.org -127.0.0.1 ads.pinterest.com -127.0.0.1 ads.planet.nl -127.0.0.1 ads.pni.com -127.0.0.1 ads.pof.com -127.0.0.1 ads.powweb.com -127.0.0.1 ads.printscr.com -127.0.0.1 ads.prisacom.com -127.0.0.1 ads.program3.com -127.0.0.1 ads.psd2html.com -127.0.0.1 ads.quoka.de -127.0.0.1 ads.radialserver.com -127.0.0.1 ads.radio1.lv -127.0.0.1 ads.recoletos.es -127.0.0.1 ads.rediff.com -127.0.0.1 ads.redlightcenter.com -127.0.0.1 ads.revjet.com -127.0.0.1 ads.samsung.com -127.0.0.1 ads.saymedia.com -127.0.0.1 ads.schmoozecom.net -127.0.0.1 ads.scifi.com -127.0.0.1 ads.seniorfriendfinder.com -127.0.0.1 ads.servebom.com -127.0.0.1 ads.shizmoo.com -127.0.0.1 ads.shopstyle.com -127.0.0.1 ads.sift.co.uk -127.0.0.1 ads.sjon.info -127.0.0.1 ads.smartclick.com -127.0.0.1 ads.socialtheater.com -127.0.0.1 ads.soft32.com -127.0.0.1 ads.soweb.gr -127.0.0.1 ads.space.com -127.0.0.1 ads.sun.com -127.0.0.1 ads.suomiautomaatti.com -127.0.0.1 ads.supplyframe.com -127.0.0.1 ads.syscdn.de -127.0.0.1 ads.themovienation.com -127.0.0.1 ads.thestar.com -127.0.0.1 ads.thrillsaffiliates.com -127.0.0.1 ads.tiktok.com -127.0.0.1 ads.tmcs.net -127.0.0.1 ads.todoti.com.br -127.0.0.1 ads.toplayaffiliates.com -127.0.0.1 ads.townhall.com -127.0.0.1 ads.travelaudience.com -127.0.0.1 ads.trinitymirror.co.uk -127.0.0.1 ads.tripod.com -127.0.0.1 ads.tripod.lycos.co.uk -127.0.0.1 ads.tripod.lycos.de -127.0.0.1 ads.tripod.lycos.es -127.0.0.1 ads.tripod.lycos.it -127.0.0.1 ads.tripod.lycos.nl -127.0.0.1 ads.tso.dennisnet.co.uk -127.0.0.1 ads.twitter.com -127.0.0.1 ads.twojatv.info -127.0.0.1 ads.ultimate-guitar.com -127.0.0.1 ads.uncrate.com -127.0.0.1 ads.unison.bg -127.0.0.1 ads.usatoday.com -127.0.0.1 ads.uxs.at -127.0.0.1 ads.v-lazer.com -127.0.0.1 ads.verticalresponse.com -127.0.0.1 ads.vgchartz.com -127.0.0.1 ads.virtual-nights.com -127.0.0.1 ads.virtuopolitan.com -127.0.0.1 ads.vnumedia.com -127.0.0.1 ads.walkiberia.com -127.0.0.1 ads.watson.ch -127.0.0.1 ads.weather.ca -127.0.0.1 ads.web.de -127.0.0.1 ads.webinak.sk -127.0.0.1 ads.webmasterpoint.org -127.0.0.1 ads.websiteservices.com -127.0.0.1 ads.whoishostingthis.com -127.0.0.1 ads.wiezoekje.nl -127.0.0.1 ads.wikia.nocookie.net -127.0.0.1 ads.wineenthusiast.com -127.0.0.1 ads.wwe.biz -127.0.0.1 ads.xhamster.com -127.0.0.1 ads.xtra.co.nz -127.0.0.1 ads.yahoo.com -127.0.0.1 ads.yap.yahoo.com -127.0.0.1 ads.yimg.com -127.0.0.1 ads.yldmgrimg.net -127.0.0.1 ads.youtube.com -127.0.0.1 ads.yumenetworks.com -127.0.0.1 ads1-adnow.com -127.0.0.1 ads1.mediacapital.pt -127.0.0.1 ads1.msn.com -127.0.0.1 ads1.rne.com -127.0.0.1 ads1.virtual-nights.com -127.0.0.1 ads10.speedbit.com -127.0.0.1 ads180.com -127.0.0.1 ads2.brazzers.com -127.0.0.1 ads2.contentabc.com -127.0.0.1 ads2.femmefab.nl -127.0.0.1 ads2.gamecity.net -127.0.0.1 ads2.hsoub.com -127.0.0.1 ads2.net-communities.co.uk -127.0.0.1 ads2.rne.com -127.0.0.1 ads2.techads.info -127.0.0.1 ads2.virtual-nights.com -127.0.0.1 ads2.webdrive.no -127.0.0.1 ads2.xnet.cz -127.0.0.1 ads2004.treiberupdate.de -127.0.0.1 ads24h.net -127.0.0.1 ads3-adnow.com -127.0.0.1 ads3.contentabc.com -127.0.0.1 ads3.gamecity.net -127.0.0.1 ads3.virtual-nights.com -127.0.0.1 ads4.gamecity.net -127.0.0.1 ads4.virtual-nights.com -127.0.0.1 ads4homes.com -127.0.0.1 ads5.virtual-nights.com -127.0.0.1 ads6.gamecity.net -127.0.0.1 ads7.gamecity.net -127.0.0.1 adsafeprotected.com -127.0.0.1 adsatt.abc.starwave.com -127.0.0.1 adsatt.abcnews.starwave.com -127.0.0.1 adsatt.espn.go.com -127.0.0.1 adsatt.espn.starwave.com -127.0.0.1 adsatt.go.starwave.com -127.0.0.1 adsby.bidtheatre.com -127.0.0.1 adsbydelema.com -127.0.0.1 adscale.de -127.0.0.1 adscholar.com -127.0.0.1 adscience.nl -127.0.0.1 adsco.re -127.0.0.1 adscpm.com -127.0.0.1 adsdaq.com -127.0.0.1 adsdk.yandex.ru -127.0.0.1 adsend.de -127.0.0.1 adsensecustomsearchads.com -127.0.0.1 adserve.ams.rhythmxchange.com -127.0.0.1 adserve.gkeurope.de -127.0.0.1 adserve.io -127.0.0.1 adserve.jbs.org -127.0.0.1 adserver.71i.de -127.0.0.1 adserver.adultfriendfinder.com -127.0.0.1 adserver.adverty.com -127.0.0.1 adserver.anawe.cz -127.0.0.1 adserver.ariase.org -127.0.0.1 adserver.bdoce.cl -127.0.0.1 adserver.betandwin.de -127.0.0.1 adserver.bing.com -127.0.0.1 adserver.bizedge.com -127.0.0.1 adserver.bizhat.com -127.0.0.1 adserver.break-even.it -127.0.0.1 adserver.cams.com -127.0.0.1 adserver.cdnstream.com -127.0.0.1 adserver.cherryfind.co.uk -127.0.0.1 adserver.com -127.0.0.1 adserver.diariodosertao.com.br -127.0.0.1 adserver.digitoday.com -127.0.0.1 adserver.echdk.pl -127.0.0.1 adserver.friendfinder.com -127.0.0.1 adserver.generationiron.com -127.0.0.1 adserver.hwupgrade.it -127.0.0.1 adserver.ilango.de -127.0.0.1 adserver.industryarena.com -127.0.0.1 adserver.info7.mx -127.0.0.1 adserver.irishwebmasterforum.com -127.0.0.1 adserver.janes.com -127.0.0.1 adserver.kontent.com -127.0.0.1 adserver.lecool.com -127.0.0.1 adserver.mobi -127.0.0.1 adserver.news.com.au -127.0.0.1 adserver.nydailynews.com -127.0.0.1 adserver.o2.pl -127.0.0.1 adserver.oddschecker.com -127.0.0.1 adserver.omroepzeeland.nl -127.0.0.1 adserver.otthonom.hu -127.0.0.1 adserver.pampa.com.br -127.0.0.1 adserver.piksel.mk -127.0.0.1 adserver.pl -127.0.0.1 adserver.portugalmail.net -127.0.0.1 adserver.pressboard.ca -127.0.0.1 adserver.sanomawsoy.fi -127.0.0.1 adserver.sciflicks.com -127.0.0.1 adserver.scr.sk -127.0.0.1 adserver.smgfiles.com -127.0.0.1 adserver.theonering.net -127.0.0.1 adserver.trojaner-info.de -127.0.0.1 adserver.tupolska.com -127.0.0.1 adserver.twitpic.com -127.0.0.1 adserver.virginmedia.com -127.0.0.1 adserver.waggonerguide.com -127.0.0.1 adserver01.de -127.0.0.1 adserverplus.com -127.0.0.1 adserverpub.com -127.0.0.1 adserversolutions.com -127.0.0.1 adserverxxl.de -127.0.0.1 adservetx.media.net -127.0.0.1 adservice.google.com -127.0.0.1 adservice.google.com.mt -127.0.0.1 adserving.unibet.com -127.0.0.1 adservingfront.com -127.0.0.1 adservrs.com -127.0.0.1 adservrs.com.edgekey.net -127.0.0.1 adsfac.eu -127.0.0.1 adsfac.net -127.0.0.1 adsfac.us -127.0.0.1 adsfactor.net -127.0.0.1 adsfeed.brabys.com -127.0.0.1 adshrink.it -127.0.0.1 adside.com -127.0.0.1 adsiduous.com -127.0.0.1 adskeeper.co.uk -127.0.0.1 adskeeper.com -127.0.0.1 adsklick.de -127.0.0.1 adskpak.com -127.0.0.1 adsmart.com -127.0.0.1 adsmart.net -127.0.0.1 adsmartracker.com -127.0.0.1 adsmetadata.startappservice.com -127.0.0.1 adsmogo.com -127.0.0.1 adsoftware.com -127.0.0.1 adsolut.in -127.0.0.1 adspeed.net -127.0.0.1 adspirit.de -127.0.0.1 adsponse.de -127.0.0.1 adspredictiv.com -127.0.0.1 adspsp.com -127.0.0.1 adsroller.com -127.0.0.1 adsrv.deviantart.com -127.0.0.1 adsrv.eacdn.com -127.0.0.1 adsrv.iol.co.za -127.0.0.1 adsrv.kobi.tv -127.0.0.1 adsrv.moebelmarkt.tv -127.0.0.1 adsrv2.swidnica24.pl -127.0.0.1 adsrvr.org -127.0.0.1 adstacks.in -127.0.0.1 adstanding.com -127.0.0.1 adstat.4u.pl -127.0.0.1 adstest.weather.com -127.0.0.1 adsupply.com -127.0.0.1 adswizz.com -127.0.0.1 adsxyz.com -127.0.0.1 adsynergy.com -127.0.0.1 adsys.townnews.com -127.0.0.1 adsystem.simplemachines.org -127.0.0.1 adt598.com -127.0.0.1 adtech-digital.ru -127.0.0.1 adtech.com -127.0.0.1 adtech.de -127.0.0.1 adtechjp.com -127.0.0.1 adtechus.com -127.0.0.1 adtegrity.net -127.0.0.1 adthis.com -127.0.0.1 adthrive.com -127.0.0.1 adtiger.de -127.0.0.1 adtilt.com -127.0.0.1 adtng.com -127.0.0.1 adtology.com -127.0.0.1 adtoma.com -127.0.0.1 adtrace.org -127.0.0.1 adtrack.voicestar.com -127.0.0.1 adtraction.com -127.0.0.1 adtrade.net -127.0.0.1 adtriplex.com -127.0.0.1 adultadvertising.com -127.0.0.1 adv-adserver.com -127.0.0.1 adv.cooperhosting.net -127.0.0.1 adv.donejty.pl -127.0.0.1 adv.freeonline.it -127.0.0.1 adv.hwupgrade.it -127.0.0.1 adv.mpvc.it -127.0.0.1 adv.nexthardware.com -127.0.0.1 adv.webmd.com -127.0.0.1 adv.wp.pl -127.0.0.1 adv.yo.cz -127.0.0.1 advangelists.com -127.0.0.1 advariant.com -127.0.0.1 adventory.com -127.0.0.1 adventurousamount.com -127.0.0.1 advert.bayarea.com -127.0.0.1 advert.dyna.ultraweb.hu -127.0.0.1 adverticum.com -127.0.0.1 adverticum.net -127.0.0.1 adverticus.de -127.0.0.1 advertise.com -127.0.0.1 advertiseireland.com -127.0.0.1 advertiserurl.com -127.0.0.1 advertising.com -127.0.0.1 advertisingbanners.com -127.0.0.1 advertisingbox.com -127.0.0.1 advertmarket.com -127.0.0.1 advertmedia.de -127.0.0.1 advertpro.ya.com -127.0.0.1 advertserve.com -127.0.0.1 advertwizard.com -127.0.0.1 advideo.uimserv.net -127.0.0.1 adview.com -127.0.0.1 advisormedia.cz -127.0.0.1 adviva.net -127.0.0.1 advnt.com -127.0.0.1 adwebone.com -127.0.0.1 adwhirl.com -127.0.0.1 adworldnetwork.com -127.0.0.1 adworx.at -127.0.0.1 adworx.nl -127.0.0.1 adx.gayboy.at -127.0.0.1 adxpansion.com -127.0.0.1 adxpose.com -127.0.0.1 adyoulike.com -127.0.0.1 adz.rashflash.com -127.0.0.1 adzbazar.com -127.0.0.1 adzerk.net -127.0.0.1 adzerk.s3.amazonaws.com -127.0.0.1 adzestocp.com -127.0.0.1 adzrevads.com -127.0.0.1 aerserv.com -127.0.0.1 af-ad.co.uk -127.0.0.1 affec.tv -127.0.0.1 affili.net -127.0.0.1 affiliate.1800flowers.com -127.0.0.1 affiliate.dtiserv.com -127.0.0.1 affiliate.rusvpn.com -127.0.0.1 affiliate.travelnow.com -127.0.0.1 affiliate.treated.com -127.0.0.1 affiliatefuture.com -127.0.0.1 affiliates.allposters.com -127.0.0.1 affiliates.babylon.com -127.0.0.1 affiliates.digitalriver.com -127.0.0.1 affiliates.globat.com -127.0.0.1 affiliates.streamray.com -127.0.0.1 affiliates.thinkhost.net -127.0.0.1 affiliates.thrixxx.com -127.0.0.1 affiliates.ultrahosting.com -127.0.0.1 affiliatetracking.com -127.0.0.1 affiliatetracking.net -127.0.0.1 affiliatewindow.com -127.0.0.1 affiliation-france.com -127.0.0.1 afftracking.justanswer.com -127.0.0.1 afraidlanguage.com -127.0.0.1 agkn.com -127.0.0.1 ah-ha.com -127.0.0.1 ahalogy.com -127.0.0.1 aheadday.com -127.0.0.1 aim4media.com -127.0.0.1 airpush.com -127.0.0.1 aistat.net -127.0.0.1 ak0gsh40.com -127.0.0.1 alchemist.go2cloud.org -127.0.0.1 alclick.com -127.0.0.1 alenty.com -127.0.0.1 alexa-sitestats.s3.amazonaws.com -127.0.0.1 algorix.co -127.0.0.1 aliasanvil.com -127.0.0.1 alikeaddition.com -127.0.0.1 alipromo.com -127.0.0.1 all4spy.com -127.0.0.1 alluringbucket.com -127.0.0.1 aloofmetal.com -127.0.0.1 aloofvest.com -127.0.0.1 alphonso.tv -127.0.0.1 als-svc.nytimes.com -127.0.0.1 amazingcounters.com -127.0.0.1 amazon-adsystem.com -127.0.0.1 americash.com -127.0.0.1 amung.us -127.0.0.1 analytics-production.hapyak.com -127.0.0.1 analytics.adpost.org -127.0.0.1 analytics.algoepico.net -127.0.0.1 analytics.bitrix.info -127.0.0.1 analytics.cloudron.io -127.0.0.1 analytics.cohesionapps.com -127.0.0.1 analytics.emarketer.com -127.0.0.1 analytics.ext.go-tellm.com -127.0.0.1 analytics.google.com -127.0.0.1 analytics.htmedia.in -127.0.0.1 analytics.icons8.com -127.0.0.1 analytics.inlinemanual.com -127.0.0.1 analytics.jst.ai -127.0.0.1 analytics.justuno.com -127.0.0.1 analytics.lucid.app -127.0.0.1 analytics.mailmunch.co -127.0.0.1 analytics.mobile.yandex.net -127.0.0.1 analytics.momentum-institut.at -127.0.0.1 analytics.myfinance.com -127.0.0.1 analytics.ostr.io -127.0.0.1 analytics.phando.com -127.0.0.1 analytics.picsart.com -127.0.0.1 analytics.pinterest.com -127.0.0.1 analytics.pointdrive.linkedin.com -127.0.0.1 analytics.poolshool.com -127.0.0.1 analytics.posttv.com -127.0.0.1 analytics.santander.co.uk -127.0.0.1 analytics.shorte.st -127.0.0.1 analytics.swiggy.com -127.0.0.1 analytics.tiktok.com -127.0.0.1 analytics.xelondigital.com -127.0.0.1 analytics.yahoo.com -127.0.0.1 analyticsapi.happypancake.net -127.0.0.1 ancientact.com -127.0.0.1 androiddownload.net -127.0.0.1 angossa.com -127.0.0.1 aniview.com -127.0.0.1 annonser.dagbladet.no -127.0.0.1 annoyedairport.com -127.0.0.1 annoyingacoustics.com -127.0.0.1 anrdoezrs.net -127.0.0.1 anstrex.com -127.0.0.1 anuncios.edicaoms.com.br -127.0.0.1 anxiousapples.com -127.0.0.1 api.amplitude.com -127.0.0.1 api.appmetrica.yandex.ru -127.0.0.1 api.eu.amplitude.com -127.0.0.1 api.intensifier.de -127.0.0.1 api.iterable.com -127.0.0.1 api.kameleoon.com -127.0.0.1 api.lab.amplitude.com -127.0.0.1 api.rudderlabs.com -127.0.0.1 api2.amplitude.com -127.0.0.1 apolloprogram.io -127.0.0.1 app-analytics-v2.snapchat.com -127.0.0.1 app-analytics.snapchat.com -127.0.0.1 app-measurement.com -127.0.0.1 app.pendo.io -127.0.0.1 app2.salesmanago.pl -127.0.0.1 appboycdn.com -127.0.0.1 appsflyer.com -127.0.0.1 aps.hearstnp.com -127.0.0.1 apsalar.com -127.0.0.1 aptabase.com -127.0.0.1 apture.com -127.0.0.1 apu.samsungelectronics.com -127.0.0.1 aquaticanswer.com -127.0.0.1 aquaticowl.com -127.0.0.1 ar1nvz5.com -127.0.0.1 aralego.com -127.0.0.1 arc1.msn.com -127.0.0.1 archswimming.com -127.0.0.1 ard.xxxblackbook.com -127.0.0.1 aromamirror.com -127.0.0.1 as.webmd.com -127.0.0.1 as2.adserverhd.com -127.0.0.1 aserv.motorsgate.com -127.0.0.1 asewlfjqwlflkew.com -127.0.0.1 aso1.net -127.0.0.1 assets1.exgfnetwork.com -127.0.0.1 assoc-amazon.com -127.0.0.1 aswpapius.com -127.0.0.1 aswpsdkus.com -127.0.0.1 at-adserver.alltop.com -127.0.0.1 at-o.net -127.0.0.1 atdmt.com -127.0.0.1 athena-ads.wikia.com -127.0.0.1 ato.mx -127.0.0.1 attractionbanana.com -127.0.0.1 attribution.report -127.0.0.1 atwola.com -127.0.0.1 auctionads.com -127.0.0.1 auctionads.net -127.0.0.1 aud.pubmatic.com -127.0.0.1 audience.media -127.0.0.1 audience2media.com -127.0.0.1 audienceinsights.com -127.0.0.1 audit.median.hu -127.0.0.1 audit.webinform.hu -127.0.0.1 augur.io -127.0.0.1 auto-bannertausch.de -127.0.0.1 avalonalbum.com -127.0.0.1 avazutracking.net -127.0.0.1 avenuea.com -127.0.0.1 avocet.io -127.0.0.1 awempire.com -127.0.0.1 awin1.com -127.0.0.1 awstrack.me -127.0.0.1 awzbijw.com -127.0.0.1 axiomaticalley.com -127.0.0.1 axonix.com -127.0.0.1 ay.delivery -127.0.0.1 aztracking.net -127.0.0.1 b-s.tercept.com -127.0.0.1 b.videoamp.com -127.0.0.1 b3.videoamp.com -127.0.0.1 ba.afl.rakuten.co.jp -127.0.0.1 backbeatmedia.com -127.0.0.1 banik.redigy.cz -127.0.0.1 banner.ambercoastcasino.com -127.0.0.1 banner.buempliz-online.ch -127.0.0.1 banner.cotedazurpalace.com -127.0.0.1 banner.coza.com -127.0.0.1 banner.easyspace.com -127.0.0.1 banner.elisa.net -127.0.0.1 banner.eurogrand.com -127.0.0.1 banner.finzoom.ro -127.0.0.1 banner.goldenpalace.com -127.0.0.1 banner.inyourpocket.com -127.0.0.1 banner.linux.se -127.0.0.1 banner.media-system.de -127.0.0.1 banner.nixnet.cz -127.0.0.1 banner.noblepoker.com -127.0.0.1 banner.northsky.com -127.0.0.1 banner.rbc.ru -127.0.0.1 banner.reinstil.de -127.0.0.1 banner.tanto.de -127.0.0.1 banner.titan-dsl.de -127.0.0.1 banner10.zetasystem.dk -127.0.0.1 bannerads.de -127.0.0.1 bannerboxes.com -127.0.0.1 bannerconnect.com -127.0.0.1 bannerconnect.net -127.0.0.1 bannergrabber.internet.gr -127.0.0.1 bannerimage.com -127.0.0.1 bannerlandia.com.ar -127.0.0.1 bannermall.com -127.0.0.1 bannermanager.bnr.bg -127.0.0.1 bannermarkt.nl -127.0.0.1 bannerpower.com -127.0.0.1 banners.adultfriendfinder.com -127.0.0.1 banners.amigos.com -127.0.0.1 banners.asiafriendfinder.com -127.0.0.1 banners.babylon-x.com -127.0.0.1 banners.bol.com.br -127.0.0.1 banners.cams.com -127.0.0.1 banners.clubseventeen.com -127.0.0.1 banners.czi.cz -127.0.0.1 banners.dine.com -127.0.0.1 banners.direction-x.com -127.0.0.1 banners.freett.com -127.0.0.1 banners.friendfinder.com -127.0.0.1 banners.getiton.com -127.0.0.1 banners.iq.pl -127.0.0.1 banners.passion.com -127.0.0.1 banners.payserve.com -127.0.0.1 banners.resultonline.com -127.0.0.1 banners.sys-con.com -127.0.0.1 banners.thomsonlocal.com -127.0.0.1 banners.videosz.com -127.0.0.1 banners.virtuagirlhd.com -127.0.0.1 bannerserver.com -127.0.0.1 bannersgomlm.com -127.0.0.1 bannershotlink.perfectgonzo.com -127.0.0.1 bannersng.yell.com -127.0.0.1 bannerspace.com -127.0.0.1 bannerswap.com -127.0.0.1 bannertesting.com -127.0.0.1 bannertrack.net -127.0.0.1 bannery.cz -127.0.0.1 bannieres.wdmedia.net -127.0.0.1 bans.bride.ru -127.0.0.1 baremetrics.com -127.0.0.1 barnesandnoble.bfast.com -127.0.0.1 basebanner.com -127.0.0.1 basketballbelieve.com -127.0.0.1 baskettexture.com -127.0.0.1 bat.bing.com -127.0.0.1 bawdybeast.com -127.0.0.1 baypops.com -127.0.0.1 bbelements.com -127.0.0.1 bbn.img.com.ua -127.0.0.1 beachfront.com -127.0.0.1 beacon.gu-web.net -127.0.0.1 beacons.gcp.gvt2.com -127.0.0.1 beacons.gvt2.com -127.0.0.1 bebi.com -127.0.0.1 beemray.com -127.0.0.1 begun.ru -127.0.0.1 behavioralengine.com -127.0.0.1 belstat.com -127.0.0.1 belstat.nl -127.0.0.1 benefits.sovendus.com -127.0.0.1 benfly.net -127.0.0.1 berp.com -127.0.0.1 bespoke.iln8.net -127.0.0.1 bestboundary.com -127.0.0.1 bestbuy.7tiv.net -127.0.0.1 bewilderedblade.com -127.0.0.1 bfmio.com -127.0.0.1 bhcumsc.com -127.0.0.1 bid.pubmatic.com -127.0.0.1 bidbarrel.cbsnews.com -127.0.0.1 bidclix.com -127.0.0.1 bidclix.net -127.0.0.1 bidr.io -127.0.0.1 bidsopt.com -127.0.0.1 bidswitch.net -127.0.0.1 bidtellect.com -127.0.0.1 bidvertiser.com -127.0.0.1 big-bang-ads.com -127.0.0.1 bigbangmedia.com -127.0.0.1 bigclicks.com -127.0.0.1 bigreal.org -127.0.0.1 bikesboard.com -127.0.0.1 billboard.cz -127.0.0.1 birthdaybelief.com -127.0.0.1 bitmedianetwork.com -127.0.0.1 bizible.com -127.0.0.1 bizographics.com -127.0.0.1 bizrate.com -127.0.0.1 bizzclick.com -127.0.0.1 bkrtx.com -127.0.0.1 blingbucks.com -127.0.0.1 blis.com -127.0.0.1 blockadblock.com -127.0.0.1 blogads.com -127.0.0.1 blogcounter.de -127.0.0.1 blogherads.com -127.0.0.1 blogtoplist.se -127.0.0.1 blogtopsites.com -127.0.0.1 blueadvertise.com -127.0.0.1 blueconic.com -127.0.0.1 blueconic.net -127.0.0.1 bluekai.com -127.0.0.1 bluelithium.com -127.0.0.1 bluewhaleweb.com -127.0.0.1 blushingbeast.com -127.0.0.1 blushingbread.com -127.0.0.1 bm.annonce.cz -127.0.0.1 bn.bfast.com -127.0.0.1 bnrs.ilm.ee -127.0.0.1 boffoadsapi.com -127.0.0.1 boilingbeetle.com -127.0.0.1 bongacash.com -127.0.0.1 boomads.com -127.0.0.1 boomtrain.com -127.0.0.1 boredcrown.com -127.0.0.1 boudja.com -127.0.0.1 bounceads.net -127.0.0.1 bounceexchange.com -127.0.0.1 bowie-cdn.fathomdns.com -127.0.0.1 box.anchorfree.net -127.0.0.1 bpath.com -127.0.0.1 bpu.samsungelectronics.com -127.0.0.1 braincash.com -127.0.0.1 brand-display.com -127.0.0.1 brandreachsys.com -127.0.0.1 brandybison.com -127.0.0.1 braze.eu -127.0.0.1 breadbalance.com -127.0.0.1 breakableinsurance.com -127.0.0.1 breaktime.com.tw -127.0.0.1 brealtime.com -127.0.0.1 bridgetrack.com -127.0.0.1 brightcom.com -127.0.0.1 brightinfo.com -127.0.0.1 brightmountainmedia.com -127.0.0.1 broadboundary.com -127.0.0.1 broadcastbed.com -127.0.0.1 broaddoor.com -127.0.0.1 broadstreetads.com -127.0.0.1 browser-http-intake.logs.datadoghq.com -127.0.0.1 browser-http-intake.logs.datadoghq.eu -127.0.0.1 bs.yandex.ru -127.0.0.1 btglss.net -127.0.0.1 btrll.com -127.0.0.1 bttrack.com -127.0.0.1 buysellads.com -127.0.0.1 buzzonclick.com -127.0.0.1 bwp.download.com -127.0.0.1 c.bigmir.net -127.0.0.1 c.corporate-fundraising.co.uk -127.0.0.1 c1exchange.com -127.0.0.1 c212.net -127.0.0.1 cakesdrum.com -127.0.0.1 calculatingcircle.com -127.0.0.1 calculatingtoothbrush.com -127.0.0.1 calculatorstatement.com -127.0.0.1 call-ad-network-api.marchex.com -127.0.0.1 callousbrake.com -127.0.0.1 callrail.com -127.0.0.1 calmcactus.com -127.0.0.1 calypsocapsule.com -127.0.0.1 campaign.bharatmatrimony.com -127.0.0.1 caniamedia.com -127.0.0.1 capablecows.com -127.0.0.1 capriciouscorn.com -127.0.0.1 captainbicycle.com -127.0.0.1 carambo.la -127.0.0.1 carbonads.com -127.0.0.1 carbonads.net -127.0.0.1 caringcast.com -127.0.0.1 carscannon.com -127.0.0.1 cartstack.com -127.0.0.1 carvecakes.com -127.0.0.1 casalemedia.com -127.0.0.1 casalmedia.com -127.0.0.1 cash4members.com -127.0.0.1 cash4popup.de -127.0.0.1 cashcrate.com -127.0.0.1 cashengines.com -127.0.0.1 cashfiesta.com -127.0.0.1 cashpartner.com -127.0.0.1 cashstaging.me -127.0.0.1 casinopays.com -127.0.0.1 casinorewards.com -127.0.0.1 casinotraffic.com -127.0.0.1 cattlecommittee.com -127.0.0.1 causecherry.com -127.0.0.1 cautiouscredit.com -127.0.0.1 cbanners.virtuagirlhd.com -127.0.0.1 cdn.bannerflow.com -127.0.0.1 cdn.branch.io -127.0.0.1 cdn.freshmarketer.com -127.0.0.1 cdn.heapanalytics.com -127.0.0.1 cdn.keywee.co -127.0.0.1 cdn.mouseflow.com -127.0.0.1 cdn.onesignal.com -127.0.0.1 cdn.scarabresearch.com -127.0.0.1 cdn.segment.com -127.0.0.1 cdnondemand.org -127.0.0.1 ceciliavenus.com -127.0.0.1 cedato.com -127.0.0.1 celtra.com -127.0.0.1 centerpointmedia.com -127.0.0.1 cetrk.com -127.0.0.1 cgicounter.puretec.de -127.0.0.1 chairscrack.com -127.0.0.1 channelintelligence.com -127.0.0.1 chargecracker.com -127.0.0.1 chart.dk -127.0.0.1 chartbeat.com -127.0.0.1 chartbeat.net -127.0.0.1 chartboost.com -127.0.0.1 checkm8.com -127.0.0.1 checkstat.nl -127.0.0.1 cherriescare.com -127.0.0.1 chickensstation.com -127.0.0.1 childlikecrowd.com -127.0.0.1 chinsnakes.com -127.0.0.1 chitika.net -127.0.0.1 chubbycreature.com -127.0.0.1 citrusad.net -127.0.0.1 cityads.telus.net -127.0.0.1 cj.com -127.0.0.1 cjbmanagement.com -127.0.0.1 cjlog.com -127.0.0.1 cl.turkishairlines.com -127.0.0.1 cl0udh0st1ng.com -127.0.0.1 claria.com -127.0.0.1 clck.ru -127.0.0.1 clevernt.com -127.0.0.1 click.airmalta-mail.com -127.0.0.1 click.aliexpress.com -127.0.0.1 click.allkeyshop.com -127.0.0.1 click.bkdpt.com -127.0.0.1 click.cartsguru.io -127.0.0.1 click.cision.com -127.0.0.1 click.classmates.com -127.0.0.1 click.comm.rcibank.co.uk -127.0.0.1 click.digital.metaquestmail.com -127.0.0.1 click.discord.com -127.0.0.1 click.e.bbcmail.co.uk -127.0.0.1 click.e.progressive.com -127.0.0.1 click.e.zoom.us -127.0.0.1 click.em.blizzard.com -127.0.0.1 click.email.bbc.com -127.0.0.1 click.email.lhh.com -127.0.0.1 click.email.microsoftemail.com -127.0.0.1 click.email.sonos.com -127.0.0.1 click.email.strawberry.no -127.0.0.1 click.emails.argos.co.uk -127.0.0.1 click.fool.com -127.0.0.1 click.hookupinyourcity.com -127.0.0.1 click.hooligapps.com -127.0.0.1 click.i.southwesternrailway.com -127.0.0.1 click.infoblox.com -127.0.0.1 click.justwatch.com -127.0.0.1 click.kmindex.ru -127.0.0.1 click.mail.hotels.com -127.0.0.1 click.mail.salesforce.com -127.0.0.1 click.mailing.ticketmaster.com -127.0.0.1 click.mkt.grab.com -127.0.0.1 click.news.vans.com -127.0.0.1 click.nl.npr.org -127.0.0.1 click.nvgaming.nvidia.com -127.0.0.1 click.redditmail.com -127.0.0.1 click.twcwigs.com -127.0.0.1 click2freemoney.com -127.0.0.1 click360v2-ingest.azurewebsites.net -127.0.0.1 clickadz.com -127.0.0.1 clickagents.com -127.0.0.1 clickbank.com -127.0.0.1 clickbooth.com -127.0.0.1 clickboothlnk.com -127.0.0.1 clickbrokers.com -127.0.0.1 clickcease.com -127.0.0.1 clickcompare.co.uk -127.0.0.1 clickdensity.com -127.0.0.1 clickedyclick.com -127.0.0.1 clickfuse.com -127.0.0.1 clickhereforcellphones.com -127.0.0.1 clicklink.jp -127.0.0.1 clickmate.io -127.0.0.1 clickonometrics.pl -127.0.0.1 clicks.deliveroo.co.uk -127.0.0.1 clicks.equantum.com -127.0.0.1 clicks.eventbrite.com -127.0.0.1 clicks.monzo.com -127.0.0.1 clickserve.cc-dt.com -127.0.0.1 clicktag.de -127.0.0.1 clickthruserver.com -127.0.0.1 clickthrutraffic.com -127.0.0.1 clicktrack.pubmatic.com -127.0.0.1 clicktrack.ziyu.net -127.0.0.1 clicktracks.com -127.0.0.1 clicktrade.com -127.0.0.1 clickxchange.com -127.0.0.1 clickyab.com -127.0.0.1 clickz.com -127.0.0.1 clientgear.com -127.0.0.1 clientmetrics-pa.googleapis.com -127.0.0.1 clikerz.net -127.0.0.1 cliksolution.com -127.0.0.1 clixgalore.com -127.0.0.1 clk1005.com -127.0.0.1 clk1011.com -127.0.0.1 clk1015.com -127.0.0.1 clkrev.com -127.0.0.1 clksite.com -127.0.0.1 cloisteredcord.com -127.0.0.1 closedcows.com -127.0.0.1 cloudflareinsights.com -127.0.0.1 clrstm.com -127.0.0.1 cluster.adultworld.com -127.0.0.1 clustrmaps.com -127.0.0.1 cmp.dmgmediaprivacy.co.uk -127.0.0.1 cmvrclicks000.com -127.0.0.1 cnomy.com -127.0.0.1 cnt.spbland.ru -127.0.0.1 cnt1.pocitadlo.cz -127.0.0.1 cny.yoyo.org -127.0.0.1 codeadnetwork.com -127.0.0.1 cognitiv.ai -127.0.0.1 cointraffic.io -127.0.0.1 coldbalance.com -127.0.0.1 collector-dev.cdp-dev.cnn.com -127.0.0.1 collector.cdp.cnn.com -127.0.0.1 colonize.com -127.0.0.1 comfortablecheese.com -127.0.0.1 commindo-media-ressourcen.de -127.0.0.1 commissionmonster.com -127.0.0.1 communications.melitaltd.com -127.0.0.1 compactbanner.com -127.0.0.1 comparereaction.com -127.0.0.1 compiledoctor.com -127.0.0.1 comprabanner.it -127.0.0.1 concernedchange.com -127.0.0.1 conditionchange.com -127.0.0.1 conductrics.com -127.0.0.1 connatix.com -127.0.0.1 connectad.io -127.0.0.1 connextra.com -127.0.0.1 consciouschairs.com -127.0.0.1 consciouscheese.com -127.0.0.1 consensad.com -127.0.0.1 consensu.org -127.0.0.1 contadores.miarroba.com -127.0.0.1 content.acc-hd.de -127.0.0.1 content.ad -127.0.0.1 content22.online.citi.com -127.0.0.1 contextweb.com -127.0.0.1 controlcola.com -127.0.0.1 converge-digital.com -127.0.0.1 conversantmedia.com -127.0.0.1 conversionbet.com -127.0.0.1 conversionruler.com -127.0.0.1 convertingtraffic.com -127.0.0.1 convrse.media -127.0.0.1 cookies.cmpnet.com -127.0.0.1 cootlogix.com -127.0.0.1 copycarpenter.com -127.0.0.1 copyrightaccesscontrols.com -127.0.0.1 coremetrics.com -127.0.0.1 cosmosjackson.com -127.0.0.1 count.rin.ru -127.0.0.1 count.west263.com -127.0.0.1 counted.com -127.0.0.1 counter.bloke.com -127.0.0.1 counter.cnw.cz -127.0.0.1 counter.cz -127.0.0.1 counter.dreamhost.com -127.0.0.1 counter.mirohost.net -127.0.0.1 counter.mojgorod.ru -127.0.0.1 counter.rambler.ru -127.0.0.1 counter.search.bg -127.0.0.1 counter.snackly.co -127.0.0.1 counting.kmindex.ru -127.0.0.1 coupling-media.de -127.0.0.1 coxmt.com -127.0.0.1 cozyhillside.com -127.0.0.1 cpalead.com -127.0.0.1 cpays.com -127.0.0.1 cpmstar.com -127.0.0.1 cpu.samsungelectronics.com -127.0.0.1 cpx-traffic.com -127.0.0.1 cpx.to -127.0.0.1 cpxinteractive.com -127.0.0.1 cqcounter.com -127.0.0.1 crabbychin.com -127.0.0.1 craktraffic.com -127.0.0.1 crashchance.com -127.0.0.1 crashlytics.com -127.0.0.1 crashlyticsreports-pa.googleapis.com -127.0.0.1 cratecamera.com -127.0.0.1 crawlability.com -127.0.0.1 crazyegg.com -127.0.0.1 crazypopups.com -127.0.0.1 creatives.livejasmin.com -127.0.0.1 crimsonmeadow.com -127.0.0.1 criteo.com -127.0.0.1 criteo.net -127.0.0.1 critictruck.com -127.0.0.1 crowdedmass.com -127.0.0.1 crowdgravity.com -127.0.0.1 crsspxl.com -127.0.0.1 crta.dailymail.co.uk -127.0.0.1 crtv.mate1.com -127.0.0.1 crwdcntrl.net -127.0.0.1 crypto-loot.org -127.0.0.1 crystalboulevard.com -127.0.0.1 cs.co -127.0.0.1 cumbersomecloud.com -127.0.0.1 curtaincows.com -127.0.0.1 cushiondrum.com -127.0.0.1 customad.cnn.com -127.0.0.1 customads.co -127.0.0.1 customers.kameleoon.com -127.0.0.1 cutcurrent.com -127.0.0.1 cutechin.com -127.0.0.1 cxense.com -127.0.0.1 cyberbounty.com -127.0.0.1 d-collect.jennifersoft.com -127.0.0.1 d-collector.jennifersoft.com -127.0.0.1 d.adroll.com -127.0.0.1 d1f0tbk1v3e25u.cloudfront.net -127.0.0.1 d2cmedia.ca -127.0.0.1 d81mfvml8p5ml.cloudfront.net -127.0.0.1 dabiaozhi.com -127.0.0.1 dacdn.visualwebsiteoptimizer.com -127.0.0.1 dacdn.vwo.com -127.0.0.1 dakic-ia-300.com -127.0.0.1 damageddistance.com -127.0.0.1 damdoor.com -127.0.0.1 dancemistake.com -127.0.0.1 dapper.net -127.0.0.1 data.namesakeoscilloscopemarquis.com -127.0.0.1 daughterstone.com -127.0.0.1 dc-storm.com -127.0.0.1 de17a.com -127.0.0.1 dealdotcom.com -127.0.0.1 debtbusterloans.com -127.0.0.1 decenterads.com -127.0.0.1 decisivebase.com -127.0.0.1 decisivedrawer.com -127.0.0.1 decisiveducks.com -127.0.0.1 decknetwork.net -127.0.0.1 decoycreation.com -127.0.0.1 deepintent.com -127.0.0.1 delegatediscussion.com -127.0.0.1 delicatecascade.com -127.0.0.1 deloo.de -127.0.0.1 deloplen.com -127.0.0.1 deloton.com -127.0.0.1 demandbase.com -127.0.0.1 demdex.net -127.0.0.1 deployads.com -127.0.0.1 desiredirt.com -127.0.0.1 detailedgovernment.com -127.0.0.1 detectdiscovery.com -127.0.0.1 dev.visualwebsiteoptimizer.com -127.0.0.1 dewdroplagoon.com -127.0.0.1 dianomi.com -127.0.0.1 didtheyreadit.com -127.0.0.1 digestiondrawer.com -127.0.0.1 digital-ads.s3.amazonaws.com -127.0.0.1 digitalmerkat.com -127.0.0.1 direct-events-collector.spot.im -127.0.0.1 directaclick.com -127.0.0.1 directleads.com -127.0.0.1 directorym.com -127.0.0.1 directtrack.com -127.0.0.1 discountclick.com -127.0.0.1 discreetfield.com -127.0.0.1 disqusads.com -127.0.0.1 dist.belnk.com -127.0.0.1 distillery.wistia.com -127.0.0.1 distributionneck.com -127.0.0.1 districtm.ca -127.0.0.1 districtm.io -127.0.0.1 dk4ywix.com -127.0.0.1 dmp.mall.tv -127.0.0.1 dmtracker.com -127.0.0.1 dmtracking.alibaba.com -127.0.0.1 dmtracking2.alibaba.com -127.0.0.1 dnsdelegation.io -127.0.0.1 do-global.com -127.0.0.1 dockdigestion.com -127.0.0.1 dogcollarfavourbluff.com -127.0.0.1 domaining.in -127.0.0.1 domainsteam.de -127.0.0.1 domdex.com -127.0.0.1 dotmetrics.net -127.0.0.1 dotomi.com -127.0.0.1 doubleclick.com -127.0.0.1 doubleclick.de -127.0.0.1 doubleclick.net -127.0.0.1 doublepimp.com -127.0.0.1 doubleverify.com -127.0.0.1 dpbolvw.net -127.0.0.1 dpu.samsungelectronics.com -127.0.0.1 dq95d35.com -127.0.0.1 drumcash.com -127.0.0.1 drydrum.com -127.0.0.1 dsp.colpirio.com -127.0.0.1 dsp.io -127.0.0.1 dstillery.com -127.0.0.1 dustyhammer.com -127.0.0.1 dyntrk.com -127.0.0.1 e-m.fr -127.0.0.1 e-planning.net -127.0.0.1 e.kde.cz -127.0.0.1 e37364.dscd.akamaiedge.net -127.0.0.1 eadexchange.com -127.0.0.1 eas.almamedia.fi -127.0.0.1 easyhits4u.com -127.0.0.1 ebayadvertising.com -127.0.0.1 ebuzzing.com -127.0.0.1 ecircle-ag.com -127.0.0.1 ecleneue.com -127.0.0.1 eclick.vn -127.0.0.1 eclkmpbn.com -127.0.0.1 eclkspbn.com -127.0.0.1 ecoupons.com -127.0.0.1 edaa.eu -127.0.0.1 edgexads.com -127.0.0.1 eiv.baidu.com -127.0.0.1 ejyymghi.com -127.0.0.1 elasticchange.com -127.0.0.1 elderlytown.com -127.0.0.1 elephantqueue.com -127.0.0.1 elitedollars.com -127.0.0.1 elitetoplist.com -127.0.0.1 em1.yoursantander.co.uk -127.0.0.1 email-link.adtidy.net -127.0.0.1 email-link.adtidy.org -127.0.0.1 email-links.crowdfireapp.com -127.0.0.1 email-open.adtidy.net -127.0.0.1 email-open.adtidy.org -127.0.0.1 email.mg1.substack.com -127.0.0.1 emaillinks.soundiiz.com -127.0.0.1 emebo.io -127.0.0.1 emerse.com -127.0.0.1 emetriq.de -127.0.0.1 emjcd.com -127.0.0.1 emltrk.com -127.0.0.1 emodoinc.com -127.0.0.1 emptyescort.com -127.0.0.1 emxdigital.com -127.0.0.1 energeticladybug.com -127.0.0.1 engage.tines.com -127.0.0.1 engage.windows.com -127.0.0.1 engagebdr.com -127.0.0.1 engageya.com -127.0.0.1 engine.espace.netavenir.com -127.0.0.1 engineertrick.com -127.0.0.1 enginenetwork.com -127.0.0.1 enormousearth.com -127.0.0.1 enquisite.com -127.0.0.1 ensighten.com -127.0.0.1 entercasino.com -127.0.0.1 entrecard.s3.amazonaws.com -127.0.0.1 enviousthread.com -127.0.0.1 epom.com -127.0.0.1 epp.bih.net.ba -127.0.0.1 eqads.com -127.0.0.1 eqy.link -127.0.0.1 erne.co -127.0.0.1 ero-advertising.com -127.0.0.1 estat.com -127.0.0.1 esty.com -127.0.0.1 et.educationdynamics.com -127.0.0.1 et.nytimes.com -127.0.0.1 etahub.com -127.0.0.1 etargetnet.com -127.0.0.1 etracker.com -127.0.0.1 etracker.de -127.0.0.1 eu-adcenter.net -127.0.0.1 eule1.pmu.fr -127.0.0.1 eulerian.net -127.0.0.1 eurekster.com -127.0.0.1 euros4click.de -127.0.0.1 eusta.de -127.0.0.1 evadav.com -127.0.0.1 evadavdsp.pro -127.0.0.1 eventexistence.com -127.0.0.1 events-eu.freshsuccess.com -127.0.0.1 events-us.freshsuccess.com -127.0.0.1 everestads.net -127.0.0.1 everesttech.net -127.0.0.1 evergage.com -127.0.0.1 eversales.space -127.0.0.1 evs.sgmt.loom.com -127.0.0.1 evyy.net -127.0.0.1 exampleshake.com -127.0.0.1 exchange-it.com -127.0.0.1 exchangead.com -127.0.0.1 exchangeclicksonline.com -127.0.0.1 exclusivebrass.com -127.0.0.1 exelate.com -127.0.0.1 exelator.com -127.0.0.1 exhibitsneeze.com -127.0.0.1 exit76.com -127.0.0.1 exitexchange.com -127.0.0.1 exitfuel.com -127.0.0.1 exoclick.com -127.0.0.1 exosrv.com -127.0.0.1 experianmarketingservices.digital -127.0.0.1 explorads.com -127.0.0.1 exponea.com -127.0.0.1 exponential.com -127.0.0.1 express-submit.de -127.0.0.1 extractobservation.com -127.0.0.1 extreme-dm.com -127.0.0.1 extremetracking.com -127.0.0.1 eyeblaster.com -127.0.0.1 eyeota.net -127.0.0.1 eyeviewads.com -127.0.0.1 eyewonder.com -127.0.0.1 ezula.com -127.0.0.1 f7ds.liberation.fr -127.0.0.1 fabric.io -127.0.0.1 fadedsnow.com -127.0.0.1 fairfeeling.com -127.0.0.1 fallaciousfifth.com -127.0.0.1 fam-ad.com -127.0.0.1 farethief.com -127.0.0.1 farmergoldfish.com -127.0.0.1 fast-redirecting.com -127.0.0.1 fastclick.com -127.0.0.1 fastclick.com.edgesuite.net -127.0.0.1 fastclick.net -127.0.0.1 fastly-insights.com -127.0.0.1 faultycanvas.com -127.0.0.1 fave.co -127.0.0.1 fc.webmasterpro.de -127.0.0.1 feathr.co -127.0.0.1 feedbackresearch.com -127.0.0.1 feedjit.com -127.0.0.1 feedmob.com -127.0.0.1 fimserve.com -127.0.0.1 findcommerce.com -127.0.0.1 findyourcasino.com -127.0.0.1 fineoffer.net -127.0.0.1 fingahvf.top -127.0.0.1 fireworkadservices.com -127.0.0.1 fireworkanalytics.com -127.0.0.1 fireworks-advertising.com -127.0.0.1 firstlightera.com -127.0.0.1 firsttexture.com -127.0.0.1 fixedfold.com -127.0.0.1 flairadscpc.com -127.0.0.1 flakyfeast.com -127.0.0.1 flashtalking.com -127.0.0.1 fleshlightcash.com -127.0.0.1 flexbanner.com -127.0.0.1 flimsycircle.com -127.0.0.1 flimsythought.com -127.0.0.1 floodprincipal.com -127.0.0.1 flourishinginnovation.com -127.0.0.1 floweryflavor.com -127.0.0.1 flowgo.com -127.0.0.1 flurry.com -127.0.0.1 fly-analytics.com -127.0.0.1 foo.cosmocode.de -127.0.0.1 foresee.com -127.0.0.1 forex-affiliate.net -127.0.0.1 forkcdn.com -127.0.0.1 forwrdnow.com -127.0.0.1 fpctraffic.com -127.0.0.1 fpjs.io -127.0.0.1 fqtag.com -127.0.0.1 free-counter.co.uk -127.0.0.1 freebanner.com -127.0.0.1 freecounterstat.com -127.0.0.1 freelogs.com -127.0.0.1 freepay.com -127.0.0.1 freestats.com -127.0.0.1 freestats.tv -127.0.0.1 freewebcounter.com -127.0.0.1 freewheel.com -127.0.0.1 freewheel.tv -127.0.0.1 freezingbuilding.com -127.0.0.1 frequentflesh.com -127.0.0.1 freshrelevance.com -127.0.0.1 frightenedpotato.com -127.0.0.1 frogator.com -127.0.0.1 fronttoad.com -127.0.0.1 frtyj.com -127.0.0.1 frtyk.com -127.0.0.1 fullstory.com -127.0.0.1 functionalcrown.com -127.0.0.1 functionalfeather.com -127.0.0.1 funklicks.com -127.0.0.1 funnelytics.io -127.0.0.1 furryfork.com -127.0.0.1 fusionads.net -127.0.0.1 fusionquest.com -127.0.0.1 futuristicapparatus.com -127.0.0.1 futuristicfairies.com -127.0.0.1 futuristicfifth.com -127.0.0.1 futuristicframe.com -127.0.0.1 fuzzybasketball.com -127.0.0.1 fvl1f.pw -127.0.0.1 fwcdn1.com -127.0.0.1 fwcdn2.com -127.0.0.1 fxstyle.net -127.0.0.1 ga.clearbit.com -127.0.0.1 gadsbee.com -127.0.0.1 galaxien.com -127.0.0.1 game-advertising-online.com -127.0.0.1 gamesites100.net -127.0.0.1 gamesites200.com -127.0.0.1 gammamaximum.com -127.0.0.1 gaug.es -127.0.0.1 gavvia.com -127.0.0.1 gearwom.de -127.0.0.1 generateoffice.com -127.0.0.1 geo.digitalpoint.com -127.0.0.1 geobanner.adultfriendfinder.com -127.0.0.1 georiot.com -127.0.0.1 geovisite.com -127.0.0.1 getclicky.com -127.0.0.1 getintent.com -127.0.0.1 getmyads.com -127.0.0.1 giddycoat.com -127.0.0.1 glisteningsign.com -127.0.0.1 globalismedia.com -127.0.0.1 gloriousbeef.com -127.0.0.1 gloyah.net -127.0.0.1 gmads.net -127.0.0.1 gml.email -127.0.0.1 go-clicks.de -127.0.0.1 go-mpulse.net -127.0.0.1 go-rank.de -127.0.0.1 go.dhs.gov -127.0.0.1 go.eu.sparkpostmail1.com -127.0.0.1 go.icann.org -127.0.0.1 go.scmagazine.com -127.0.0.1 go.usa.gov -127.0.0.1 go.xlirdr.com -127.0.0.1 go2affise.com -127.0.0.1 goingplatinum.com -127.0.0.1 goldstats.com -127.0.0.1 gondolagnome.com -127.0.0.1 google-analytics.com -127.0.0.1 googleadservices.com -127.0.0.1 googleanalytics.com -127.0.0.1 googlesyndication.com -127.0.0.1 googletagmanager.com -127.0.0.1 googletagservices.com -127.0.0.1 gostats.com -127.0.0.1 gothamads.com -127.0.0.1 gotraffic.net -127.0.0.1 gp.dejanews.com -127.0.0.1 graizoah.com -127.0.0.1 grandfatherguitar.com -127.0.0.1 grapeshot.co.uk -127.0.0.1 greyinstrument.com -127.0.0.1 greystripe.com -127.0.0.1 grouchybrothers.com -127.0.0.1 groundtruth.com -127.0.0.1 gscontxt.net -127.0.0.1 gstaticx.com -127.0.0.1 guardeddirection.com -127.0.0.1 guardedschool.com -127.0.0.1 gunggo.com -127.0.0.1 h-bid.com -127.0.0.1 h0.t.hubspotemail.net -127.0.0.1 h78xb.pw -127.0.0.1 habitualhumor.com -127.0.0.1 halcyoncanyon.com -127.0.0.1 haltingbadge.com -127.0.0.1 hammerhearing.com -127.0.0.1 handsomehose.com -127.0.0.1 handyfireman.com -127.0.0.1 handyincrease.com -127.0.0.1 haplesshydrant.com -127.0.0.1 harrenmedia.com -127.0.0.1 harrenmedianetwork.com -127.0.0.1 hb.afl.rakuten.co.jp -127.0.0.1 hb.vntsm.com -127.0.0.1 hbb.afl.rakuten.co.jp -127.0.0.1 hbopenbid.pubmatic.com -127.0.0.1 hdscout.com -127.0.0.1 heap.com -127.0.0.1 hearinglizards.com -127.0.0.1 heimi-lwx.com -127.0.0.1 hellobar.com -127.0.0.1 helpcollar.com -127.0.0.1 hentaicounter.com -127.0.0.1 herbalaffiliateprogram.com -127.0.0.1 hexcan.com -127.0.0.1 hexusads.fluent.ltd.uk -127.0.0.1 heyos.com -127.0.0.1 hf5rbejvpwds.com -127.0.0.1 hfc195b.com -127.0.0.1 hgads.com -127.0.0.1 hightrafficads.com -127.0.0.1 hilariouszinc.com -127.0.0.1 histats.com -127.0.0.1 hit-parade.com -127.0.0.1 hit.ua -127.0.0.1 hit.webcentre.lycos.co.uk -127.0.0.1 hitbox.com -127.0.0.1 hitcounters.miarroba.com -127.0.0.1 hitlist.ru -127.0.0.1 hitlounge.com -127.0.0.1 hitometer.com -127.0.0.1 hits-i.iubenda.com -127.0.0.1 hits.europuls.eu -127.0.0.1 hits.informer.com -127.0.0.1 hits.puls.lv -127.0.0.1 hits.sh -127.0.0.1 hits.theguardian.com -127.0.0.1 hits4me.com -127.0.0.1 hitslink.com -127.0.0.1 hittail.com -127.0.0.1 hlok.qertewrt.com -127.0.0.1 hocgeese.com -127.0.0.1 hollowafterthought.com -127.0.0.1 homelycrown.com -127.0.0.1 homepageking.de -127.0.0.1 honorablehall.com -127.0.0.1 honorableland.com -127.0.0.1 hostedads.realitykings.com -127.0.0.1 hotjar.com -127.0.0.1 hotlog.ru -127.0.0.1 hotrank.com.tw -127.0.0.1 hoverowl.com -127.0.0.1 hs-analytics.net -127.0.0.1 hs-banner.com -127.0.0.1 hsadspixel.net -127.0.0.1 hsleadflows.net -127.0.0.1 hsn.uqhv.net -127.0.0.1 htlbid.com -127.0.0.1 httpool.com -127.0.0.1 hubadnetwork.com -127.0.0.1 hubspotlinks.com -127.0.0.1 hueads.com -127.0.0.1 hueadsortb.com -127.0.0.1 hueadsxml.com -127.0.0.1 hurricanedigitalmedia.com -127.0.0.1 hydramedia.com -127.0.0.1 hyperbanner.net -127.0.0.1 hypertracker.com -127.0.0.1 hyprmx.com -127.0.0.1 hystericalcloth.com -127.0.0.1 i-i.lt -127.0.0.1 i1media.no -127.0.0.1 i305175.net -127.0.0.1 ia.iinfo.cz -127.0.0.1 iad.anm.co.uk -127.0.0.1 iadnet.com -127.0.0.1 iasds01.com -127.0.0.1 ibillboard.com -127.0.0.1 icptrack.com -127.0.0.1 id5-sync.com -127.0.0.1 idealadvertising.net -127.0.0.1 idevaffiliate.com -127.0.0.1 idtargeting.com -127.0.0.1 ientrymail.com -127.0.0.1 iesnare.com -127.0.0.1 ifa.tube8live.com -127.0.0.1 ignals.com -127.0.0.1 ilbanner.com -127.0.0.1 ilead.itrack.it -127.0.0.1 illustriousoatmeal.com -127.0.0.1 image2.pubmatic.com -127.0.0.1 image3.pubmatic.com -127.0.0.1 image4.pubmatic.com -127.0.0.1 image6.pubmatic.com -127.0.0.1 imagecash.net -127.0.0.1 images-pw.secureserver.net -127.0.0.1 img.prohardver.hu -127.0.0.1 imgpromo.easyrencontre.com -127.0.0.1 immensehoney.com -127.0.0.1 imonomy.com -127.0.0.1 imp.i312864.net -127.0.0.1 importedincrease.com -127.0.0.1 impossibleexpansion.com -127.0.0.1 imprese.cz -127.0.0.1 impressionmedia.cz -127.0.0.1 impressionmonster.com -127.0.0.1 improvedigital.com -127.0.0.1 imrworldwide.com -127.0.0.1 inclk.com -127.0.0.1 incognitosearches.com -127.0.0.1 incoming-telemetry.thunderbird.net -127.0.0.1 incoming.telemetry.mozilla.org -127.0.0.1 indexexchange.com -127.0.0.1 indexstats.com -127.0.0.1 indexww.com -127.0.0.1 indieclick.com -127.0.0.1 industrybrains.com -127.0.0.1 inetlog.ru -127.0.0.1 infinite-ads.com -127.0.0.1 infinityads.com -127.0.0.1 infoevent.startappservice.com -127.0.0.1 infolinks.com -127.0.0.1 inmobi.com -127.0.0.1 inner-active.com -127.0.0.1 innocentwax.com -127.0.0.1 innovid.com -127.0.0.1 inquisitiveinvention.com -127.0.0.1 insgly.net -127.0.0.1 insightexpress.com -127.0.0.1 insightexpressai.com -127.0.0.1 inskinad.com -127.0.0.1 inspectlet.com -127.0.0.1 install.365-stream.com -127.0.0.1 instantmadness.com -127.0.0.1 insticator.com -127.0.0.1 intelliads.com -127.0.0.1 intelligenceadx.com -127.0.0.1 interactive.forthnet.gr -127.0.0.1 intercom-clicks.com -127.0.0.1 intergi.com -127.0.0.1 internalcondition.com -127.0.0.1 internetfuel.com -127.0.0.1 interreklame.de -127.0.0.1 intnotif.club -127.0.0.1 ioam.de -127.0.0.1 ip.ro -127.0.0.1 ip193.cn -127.0.0.1 iperceptions.com -127.0.0.1 ipredictive.com -127.0.0.1 ipstack.com -127.0.0.1 irchan.com -127.0.0.1 ireklama.cz -127.0.0.1 is-tracking-pixel-api-prod.appspot.com -127.0.0.1 itop.cz -127.0.0.1 its-that-easy.com -127.0.0.1 ivwbox.de -127.0.0.1 ivykiosk.com -127.0.0.1 iyfbodn.com -127.0.0.1 iyfnzgb.com -127.0.0.1 j93557g.com -127.0.0.1 jadeitite.com -127.0.0.1 jads.co -127.0.0.1 jauchuwa.net -127.0.0.1 jcount.com -127.0.0.1 jdoqocy.com -127.0.0.1 jinkads.de -127.0.0.1 joetec.net -127.0.0.1 joyoussurprise.com -127.0.0.1 js-agent.newrelic.com -127.0.0.1 js-api.otherlevels.com -127.0.0.1 js-tags.otherlevels.com -127.0.0.1 js.iterable.com -127.0.0.1 js.users.51.la -127.0.0.1 jsecoin.com -127.0.0.1 jsrdn.com -127.0.0.1 jubilantglimmer.com -127.0.0.1 juicyads.com -127.0.0.1 juicyads.me -127.0.0.1 jumptap.com -127.0.0.1 jungroup.com -127.0.0.1 justicejudo.com -127.0.0.1 justpremium.com -127.0.0.1 justrelevant.com -127.0.0.1 k.iinfo.cz -127.0.0.1 kameleoon.eu -127.0.0.1 kanoodle.com -127.0.0.1 kargo.com -127.0.0.1 karonty.com -127.0.0.1 keymedia.hu -127.0.0.1 kindads.com -127.0.0.1 kissmetrics.com -127.0.0.1 klclick.com -127.0.0.1 klclick1.com -127.0.0.1 kliks.nl -127.0.0.1 klsdee.com -127.0.0.1 kmpiframe.keepmeposted.com.mt -127.0.0.1 knitstamp.com -127.0.0.1 knorex.com -127.0.0.1 knottyswing.com -127.0.0.1 komoona.com -127.0.0.1 kompasads.com -127.0.0.1 kontera.com -127.0.0.1 kost.tv -127.0.0.1 kpu.samsungelectronics.com -127.0.0.1 krxd.net -127.0.0.1 kt5850pjz0.com -127.0.0.1 ktu.sv2.biz -127.0.0.1 kubient.com -127.0.0.1 l1.britannica.com -127.0.0.1 l6b587txj1.com -127.0.0.1 lakequincy.com -127.0.0.1 lameletters.com -127.0.0.1 larati.net -127.0.0.1 largebrass.com -127.0.0.1 laughcloth.com -127.0.0.1 launchbit.com -127.0.0.1 layer-ad.de -127.0.0.1 layer-ads.de -127.0.0.1 lbn.ru -127.0.0.1 leadboltads.net -127.0.0.1 leadclick.com -127.0.0.1 leadinfo.net -127.0.0.1 leadingedgecash.com -127.0.0.1 leadplace.fr -127.0.0.1 leadspace.com -127.0.0.1 leadzupc.com -127.0.0.1 leaplunchroom.com -127.0.0.1 leftliquid.com -127.0.0.1 lemmatechnologies.com -127.0.0.1 lemnisk.co -127.0.0.1 lever-analytics.com -127.0.0.1 lfeeder.com -127.0.0.1 lfstmedia.com -127.0.0.1 lgad.cjpowercast.com.edgesuite.net -127.0.0.1 lgsmartad.com -127.0.0.1 li.alibris.com -127.0.0.1 li.azstarnet.com -127.0.0.1 li.dailycaller.com -127.0.0.1 li.gatehousemedia.com -127.0.0.1 li.gq.com -127.0.0.1 li.hearstmags.com -127.0.0.1 li.livingsocial.com -127.0.0.1 li.mw.drhinternet.net -127.0.0.1 li.onetravel.com -127.0.0.1 li.patheos.com -127.0.0.1 li.pmc.com -127.0.0.1 li.realtor.com -127.0.0.1 li.walmart.com -127.0.0.1 li.ziffimages.com -127.0.0.1 liadm.com -127.0.0.1 lifeimpressions.net -127.0.0.1 liftdna.com -127.0.0.1 ligatus.com -127.0.0.1 ligatus.de -127.0.0.1 lightcast.leadscoringcenter.com -127.0.0.1 lightspeedcash.com -127.0.0.1 lightstep.medium.systems -127.0.0.1 lijit.com -127.0.0.1 link-booster.de -127.0.0.1 link.axios.com -127.0.0.1 link.email.usmagazine.com -127.0.0.1 link.go.chase -127.0.0.1 link.sbstck.com -127.0.0.1 link.theatlantic.com -127.0.0.1 link.uk.expediamail.com -127.0.0.1 link4ads.com -127.0.0.1 linkbuddies.com -127.0.0.1 linkexchange.com -127.0.0.1 linkprice.com -127.0.0.1 linkrain.com -127.0.0.1 linkreferral.com -127.0.0.1 links-ranking.de -127.0.0.1 links.email.crunchbase.com -127.0.0.1 links.prosservice.fr -127.0.0.1 links.zoopla.co.uk -127.0.0.1 linkstorms.com -127.0.0.1 linkswaper.com -127.0.0.1 linksynergy.com -127.0.0.1 linktarget.com -127.0.0.1 linkvertise.com -127.0.0.1 liquidad.narrowcastmedia.com -127.0.0.1 litix.io -127.0.0.1 liveadexchanger.com -127.0.0.1 liveintent.com -127.0.0.1 livelylaugh.com -127.0.0.1 livelyreward.com -127.0.0.1 liverail.com -127.0.0.1 livingsleet.com -127.0.0.1 lizardslaugh.com -127.0.0.1 lkqd.com -127.0.0.1 lnks.gd -127.0.0.1 loading321.com -127.0.0.1 loadsurprise.com -127.0.0.1 locked4.com -127.0.0.1 lockerdome.com -127.0.0.1 locpub.com -127.0.0.1 log.btopenworld.com -127.0.0.1 log.logrocket.io -127.0.0.1 log.pinterest.com -127.0.0.1 log.videocampaign.co -127.0.0.1 logger.snackly.co -127.0.0.1 logs.roku.com -127.0.0.1 logs.spilgames.com -127.0.0.1 logsss.com -127.0.0.1 logua.com -127.0.0.1 look.djfiln.com -127.0.0.1 look.ichlnk.com -127.0.0.1 look.opskln.com -127.0.0.1 look.ufinkln.com -127.0.0.1 loopme.com -127.0.0.1 loudlunch.com -127.0.0.1 lp3tdqle.com -127.0.0.1 lucidmedia.com -127.0.0.1 luckyorange.com -127.0.0.1 ludicrousarch.com -127.0.0.1 lytics.io -127.0.0.1 lzjl.com -127.0.0.1 m.trb.com -127.0.0.1 m2.ai -127.0.0.1 m32.media -127.0.0.1 m4n.nl -127.0.0.1 m6r.eu -127.0.0.1 mackeeperapp.mackeeper.com -127.0.0.1 madclient.uimserv.net -127.0.0.1 madcpms.com -127.0.0.1 madinad.com -127.0.0.1 madisonavenue.com -127.0.0.1 madvertise.de -127.0.0.1 magicadz.co -127.0.0.1 magicaljoin.com -127.0.0.1 mail-ads.google.com -127.0.0.1 maltiverse.lt.acemlnc.com -127.0.0.1 manageadv.cblogs.eu -127.0.0.1 mantisadnetwork.com -127.0.0.1 marinsm.com -127.0.0.1 markedmeasure.com -127.0.0.1 marketing.888.com -127.0.0.1 marketing.desertcart.com -127.0.0.1 marketing.net.brillen.de -127.0.0.1 marketing.net.home24.de -127.0.0.1 marketing.net.occhiali24.it -127.0.0.1 marketing.nyi.net -127.0.0.1 marketing.osijek031.com -127.0.0.1 marketingsolutions.yahoo.com -127.0.0.1 marketo.com -127.0.0.1 marlowpillow.sjv.io -127.0.0.1 marriedbelief.com -127.0.0.1 mas.sector.sk -127.0.0.1 massivemark.com -127.0.0.1 matchcraft.com -127.0.0.1 matheranalytics.com -127.0.0.1 mathtag.com -127.0.0.1 matomo.activate.cz -127.0.0.1 matomo.crossiety.app -127.0.0.1 mautic.com -127.0.0.1 max.i12.de -127.0.0.1 maximiser.net -127.0.0.1 maxonclick.com -127.0.0.1 mbs.megaroticlive.com -127.0.0.1 mcdlks.com -127.0.0.1 mcs-va.tiktok.com -127.0.0.1 mcs-va.tiktokv.com -127.0.0.1 meadowlullaby.com -127.0.0.1 measlymiddle.com -127.0.0.1 measure.office.com -127.0.0.1 measuremap.com -127.0.0.1 meatydime.com -127.0.0.1 media-adrunner.mycomputer.com -127.0.0.1 media.funpic.de -127.0.0.1 media.net -127.0.0.1 media01.eu -127.0.0.1 media6degrees.com -127.0.0.1 mediaarea.eu -127.0.0.1 mediabridge.cc -127.0.0.1 mediacharger.com -127.0.0.1 mediafuse.com -127.0.0.1 mediageneral.com -127.0.0.1 mediaiqdigital.com -127.0.0.1 mediamath.com -127.0.0.1 mediamgr.ugo.com -127.0.0.1 mediaplazza.com -127.0.0.1 mediaplex.com -127.0.0.1 mediascale.de -127.0.0.1 mediaserver.bwinpartypartners.it -127.0.0.1 mediasmart.io -127.0.0.1 mediatext.com -127.0.0.1 mediavine.com -127.0.0.1 mediavoice.com -127.0.0.1 mediax.angloinfo.com -127.0.0.1 mediaz.angloinfo.com -127.0.0.1 medleyads.com -127.0.0.1 medyanetads.com -127.0.0.1 meetrics.net -127.0.0.1 megacash.de -127.0.0.1 megapu.sh -127.0.0.1 megastats.com -127.0.0.1 megawerbung.de -127.0.0.1 meltmilk.com -127.0.0.1 memorizeneck.com -127.0.0.1 messagenovice.com -127.0.0.1 metadsp.co.uk -127.0.0.1 metaffiliation.com -127.0.0.1 metanetwork.com -127.0.0.1 methodcash.com -127.0.0.1 metrics-logger.spot.im -127.0.0.1 metrics.api.drift.com -127.0.0.1 metrics.articulate.com -127.0.0.1 metrics.cnn.com -127.0.0.1 metrics.consumerreports.org -127.0.0.1 metrics.ctv.ca -127.0.0.1 metrics.foxnews.com -127.0.0.1 metrics.getrockerbox.com -127.0.0.1 metrics.gfycat.com -127.0.0.1 metrics.govexec.com -127.0.0.1 metrics.icloud.com -127.0.0.1 metrics.mzstatic.com -127.0.0.1 metrilo.com -127.0.0.1 mfadsrvr.com -127.0.0.1 mg2connext.com -127.0.0.1 mgid.com -127.0.0.1 microstatic.pl -127.0.0.1 microticker.com -127.0.0.1 milotree.com -127.0.0.1 minewhat.com -127.0.0.1 mintegral.com -127.0.0.1 minusmental.com -127.0.0.1 mittencattle.com -127.0.0.1 mix2ads.com -127.0.0.1 mixedreading.com -127.0.0.1 mixpanel.com -127.0.0.1 mkto-ab410147.com -127.0.0.1 mktoresp.com -127.0.0.1 ml314.com -127.0.0.1 mlm.de -127.0.0.1 mlsend.com -127.0.0.1 mltrk.io -127.0.0.1 mmismm.com -127.0.0.1 mmstat.com -127.0.0.1 mmtro.com -127.0.0.1 mntzrlt.net -127.0.0.1 moartraffic.com -127.0.0.1 moat.com -127.0.0.1 moatads.com -127.0.0.1 moatpixel.com -127.0.0.1 mobclix.com -127.0.0.1 mobfox.com -127.0.0.1 mobileanalytics.us-east-1.amazonaws.com -127.0.0.1 mobilefuse.com -127.0.0.1 modernpricing.com -127.0.0.1 mon-va.byteoversea.com -127.0.0.1 mon.byteoversea.com -127.0.0.1 monarchads.com -127.0.0.1 monetate.net -127.0.0.1 monetizer101.com -127.0.0.1 moneyexpert.co.uk -127.0.0.1 monsterpops.com -127.0.0.1 mookie1.com -127.0.0.1 mopub.com -127.0.0.1 motionlessmeeting.com -127.0.0.1 motionspots.com -127.0.0.1 mousestats.com -127.0.0.1 movad.net -127.0.0.1 movemeal.com -127.0.0.1 mparticle.com -127.0.0.1 mpstat.us -127.0.0.1 mr-rank.de -127.0.0.1 mrskincash.com -127.0.0.1 mstrlytcs.com -127.0.0.1 mtrcs.samba.tv -127.0.0.1 mtree.com -127.0.0.1 munchkin.marketo.net -127.0.0.1 mundanenail.com -127.0.0.1 mundanepollution.com -127.0.0.1 musiccounter.ru -127.0.0.1 muteknife.com -127.0.0.1 muwmedia.com -127.0.0.1 mxptint.net -127.0.0.1 myads.company -127.0.0.1 myads.net -127.0.0.1 myads.telkomsel.com -127.0.0.1 myaffiliateprogram.com -127.0.0.1 mybbc-analytics.files.bbci.co.uk -127.0.0.1 mybetterdl.com -127.0.0.1 mybloglog.com -127.0.0.1 mybuys.com -127.0.0.1 mycounter.ua -127.0.0.1 mydas.mobi -127.0.0.1 mylink-today.com -127.0.0.1 mypagerank.net -127.0.0.1 mypagerank.ru -127.0.0.1 mypowermall.com -127.0.0.1 mystat.pl -127.0.0.1 n2.mouseflow.com -127.0.0.1 n69.com -127.0.0.1 naj.sk -127.0.0.1 nappyattack.com -127.0.0.1 nappyneck.com -127.0.0.1 nastydollars.com -127.0.0.1 nativeroll.tv -127.0.0.1 navegg.com -127.0.0.1 navigator.io -127.0.0.1 navrcholu.cz -127.0.0.1 ncaudienceexchange.com -127.0.0.1 ndparking.com -127.0.0.1 nebulacrescent.com -127.0.0.1 nedstatbasic.net -127.0.0.1 needlessnorth.com -127.0.0.1 needyneedle.com -127.0.0.1 neighborlywatch.com -127.0.0.1 nend.net -127.0.0.1 neocounter.neoworx-blog-tools.net -127.0.0.1 nervoussummer.com -127.0.0.1 net-filter.com -127.0.0.1 netaffiliation.com -127.0.0.1 netagent.cz -127.0.0.1 netclickstats.com -127.0.0.1 netcommunities.com -127.0.0.1 netdirect.nl -127.0.0.1 netech.postaffiliatepro.com -127.0.0.1 netincap.com -127.0.0.1 netmera-web.com -127.0.0.1 netmera.com -127.0.0.1 netmng.com -127.0.0.1 netpool.netbookia.net -127.0.0.1 netshelter.net -127.0.0.1 neudesicmediagroup.com -127.0.0.1 newads.bangbros.com -127.0.0.1 newnet.qsrch.com -127.0.0.1 newnudecash.com -127.0.0.1 newopenx.detik.com -127.0.0.1 newsadsppush.com -127.0.0.1 newsletter-link.com -127.0.0.1 newstarads.com -127.0.0.1 newt1.adultadworld.com -127.0.0.1 newt1.adultworld.com -127.0.0.1 nexac.com -127.0.0.1 nexage.com -127.0.0.1 ng3.ads.warnerbros.com -127.0.0.1 nitroclicks.com -127.0.0.1 nocturnalloom.com -127.0.0.1 noiselessplough.com -127.0.0.1 nondescriptcrowd.com -127.0.0.1 nondescriptnote.com -127.0.0.1 nondescriptstocking.com -127.0.0.1 novem.pl -127.0.0.1 npttech.com -127.0.0.1 nr-data.net -127.0.0.1 nr.mmcdn.com -127.0.0.1 nr.static.mmcdn.com -127.0.0.1 ns1p.net -127.0.0.1 ntv.io -127.0.0.1 ntvk1.ru -127.0.0.1 nullitics.com -127.0.0.1 nuseek.com -127.0.0.1 nutritiousbean.com -127.0.0.1 nzaza.com -127.0.0.1 o2.mouseflow.com -127.0.0.1 o333o.com -127.0.0.1 oafishobservation.com -127.0.0.1 oas.benchmark.fr -127.0.0.1 oas.repubblica.it -127.0.0.1 oas.roanoke.com -127.0.0.1 oas.toronto.com -127.0.0.1 oas.uniontrib.com -127.0.0.1 oascentral.chicagobusiness.com -127.0.0.1 oascentral.fortunecity.com -127.0.0.1 oascentral.register.com -127.0.0.1 obscenesidewalk.com -127.0.0.1 observantice.com -127.0.0.1 oclasrv.com -127.0.0.1 odbierz-bony.ovp.pl -127.0.0.1 oewa.at -127.0.0.1 offaces-butional.com -127.0.0.1 offer.fyber.com -127.0.0.1 offer.sponsorpay.com -127.0.0.1 offerforge.com -127.0.0.1 offermatica.com -127.0.0.1 oglasi.posjetnica.com -127.0.0.1 ogury.com -127.0.0.1 ojrq.net -127.0.0.1 omnijay.com -127.0.0.1 omniture.com -127.0.0.1 omtrdc.net -127.0.0.1 onaudience.com -127.0.0.1 onclasrv.com -127.0.0.1 onclickads.net -127.0.0.1 oneandonlynetwork.com -127.0.0.1 onenetworkdirect.com -127.0.0.1 onestat.com -127.0.0.1 onestatfree.com -127.0.0.1 online-metrix.net -127.0.0.1 online.miarroba.com -127.0.0.1 onlinecash.com -127.0.0.1 onlinecashmethod.com -127.0.0.1 onlinerewardcenter.com -127.0.0.1 onscroll.com -127.0.0.1 onthe.io -127.0.0.1 opads.us -127.0.0.1 open.oneplus.net -127.0.0.1 openad.tf1.fr -127.0.0.1 openad.travelnow.com -127.0.0.1 openads.friendfinder.com -127.0.0.1 openads.org -127.0.0.1 openadsnetwork.com -127.0.0.1 openbid.pubmatic.com -127.0.0.1 openx.angelsgroup.org.uk -127.0.0.1 openx.cairo360.com -127.0.0.1 openx.net -127.0.0.1 openx.skinet.cz -127.0.0.1 openx.smcaen.fr -127.0.0.1 openx2.kytary.cz -127.0.0.1 operationchicken.com -127.0.0.1 opienetwork.com -127.0.0.1 opmnstr.com -127.0.0.1 oppuz.com -127.0.0.1 optimallimit.com -127.0.0.1 optimizely.com -127.0.0.1 optimost.com -127.0.0.1 optmd.com -127.0.0.1 optmnstr.com -127.0.0.1 optmstr.com -127.0.0.1 optnmstr.com -127.0.0.1 optnx.com -127.0.0.1 orientedargument.com -127.0.0.1 orionember.com -127.0.0.1 ota.cartrawler.com -127.0.0.1 otto-images.developershed.com -127.0.0.1 outbrain.com -127.0.0.1 overconfidentfood.com -127.0.0.1 overture.com -127.0.0.1 ow.pubmatic.com -127.0.0.1 owebanalytics.com -127.0.0.1 owebmoney.ru -127.0.0.1 owlsr.us -127.0.0.1 owneriq.net -127.0.0.1 oxado.com -127.0.0.1 oxcash.com -127.0.0.1 oxen.hillcountrytexas.com -127.0.0.1 p-n.io -127.0.0.1 p.nag.ru -127.0.0.1 padsbrown.com -127.0.0.1 pagead.l.google.com -127.0.0.1 pagefair.com -127.0.0.1 pagerank-ranking.de -127.0.0.1 pageranktop.com -127.0.0.1 painstakingpickle.com -127.0.0.1 paleleaf.com -127.0.0.1 panickycurtain.com -127.0.0.1 panickypancake.com -127.0.0.1 panoramicplane.com -127.0.0.1 parachutehome.sjv.io -127.0.0.1 parchedsofa.com -127.0.0.1 pardonpopular.com -127.0.0.1 parentpicture.com -127.0.0.1 parsely.com -127.0.0.1 parsimoniouspolice.com -127.0.0.1 partner-ads.com -127.0.0.1 partner.pelikan.cz -127.0.0.1 partnerad.l.google.com -127.0.0.1 partnerads.ysm.yahoo.com -127.0.0.1 partnercash.de -127.0.0.1 partners.priceline.com -127.0.0.1 partplanes.com -127.0.0.1 passeura.com -127.0.0.1 paychat.fuse-cloud.com -127.0.0.1 paycounter.com -127.0.0.1 paypopup.com -127.0.0.1 pbnet.ru -127.0.0.1 pbterra.com -127.0.0.1 pc-tc.s3-eu-west-1.amazonaws.com -127.0.0.1 pcash.imlive.com -127.0.0.1 peep-auktion.de -127.0.0.1 peer39.com -127.0.0.1 pennyweb.com -127.0.0.1 pepperjamnetwork.com -127.0.0.1 perceivequarter.com -127.0.0.1 percentmobile.com -127.0.0.1 perfectaudience.com -127.0.0.1 perfiliate.com -127.0.0.1 performancerevenue.com -127.0.0.1 performancerevenues.com -127.0.0.1 performancing.com -127.0.0.1 permutive.com -127.0.0.1 personagraph.com -127.0.0.1 petiteumbrella.com -127.0.0.1 pgl.example.com -127.0.0.1 pgl.example0101 -127.0.0.1 pgmediaserve.com -127.0.0.1 pgpartner.com -127.0.0.1 pheedo.com -127.0.0.1 phoenix-adrunner.mycomputer.com -127.0.0.1 photographpan.com -127.0.0.1 piano.io -127.0.0.1 piet2eix3l.com -127.0.0.1 pimproll.com -127.0.0.1 ping.ublock.org -127.0.0.1 pipedream.wistia.com -127.0.0.1 pippio.com -127.0.0.1 piquantpigs.com -127.0.0.1 pix.spot.im -127.0.0.1 pixel.condenastdigital.com -127.0.0.1 pixel.keywee.co -127.0.0.1 pixel.sojern.com -127.0.0.1 pixel.watch -127.0.0.1 pixel.yabidos.com -127.0.0.1 placed.com -127.0.0.1 placeframe.com -127.0.0.1 placidactivity.com -127.0.0.1 plausible.avris.it -127.0.0.1 plausibleio.workers.dev -127.0.0.1 play4traffic.com -127.0.0.1 playhaven.com -127.0.0.1 pleasantpump.com -127.0.0.1 plista.com -127.0.0.1 plotrabbit.com -127.0.0.1 pltraffic8.com -127.0.0.1 pluckypocket.com -127.0.0.1 plugrush.com -127.0.0.1 pocketfaucet.com -127.0.0.1 pointlesshour.com -127.0.0.1 pointlessprofit.com -127.0.0.1 pointroll.com -127.0.0.1 pokkt.com -127.0.0.1 popads.net -127.0.0.1 popcash.net -127.0.0.1 popmyads.com -127.0.0.1 popplantation.com -127.0.0.1 popub.com -127.0.0.1 popunder.ru -127.0.0.1 popunhot1.blogspot.com -127.0.0.1 popup.msn.com -127.0.0.1 popupmoney.com -127.0.0.1 popupnation.com -127.0.0.1 popuptraffic.com -127.0.0.1 porngraph.com -127.0.0.1 porntrack.com -127.0.0.1 possibleboats.com -127.0.0.1 possiblepencil.com -127.0.0.1 post.spmailtechno.com -127.0.0.1 postback.iqm.com -127.0.0.1 postrelease.com -127.0.0.1 ppc.adhere.marchex.com -127.0.0.1 pr-star.de -127.0.0.1 praddpro.de -127.0.0.1 prchecker.info -127.0.0.1 prebid.org -127.0.0.1 predictad.com -127.0.0.1 premium-offers.com -127.0.0.1 presetrabbits.com -127.0.0.1 previousplayground.com -127.0.0.1 previouspotato.com -127.0.0.1 prf.hn -127.0.0.1 priceypies.com -127.0.0.1 pricklydebt.com -127.0.0.1 priefy.com -127.0.0.1 primetime.net -127.0.0.1 privatecash.com -127.0.0.1 prmtracking.com -127.0.0.1 pro-market.net -127.0.0.1 probablepartner.com -127.0.0.1 processplantation.com -127.0.0.1 proext.com -127.0.0.1 profero.com -127.0.0.1 profitrumour.com -127.0.0.1 programattik.com -127.0.0.1 projectwonderful.com -127.0.0.1 promo.badoink.com -127.0.0.1 promobenef.com -127.0.0.1 promos.bwin.it -127.0.0.1 promos.fling.com -127.0.0.1 promote.pair.com -127.0.0.1 promotions-884485.c.cdn77.org -127.0.0.1 pronetadvertising.com -127.0.0.1 proof-x.com -127.0.0.1 propellerads.com -127.0.0.1 propellerclick.com -127.0.0.1 proper.io -127.0.0.1 props.id -127.0.0.1 prosper.on-line-casino.ca -127.0.0.1 protectcrev.com -127.0.0.1 protectsubrev.com -127.0.0.1 protestcopy.com -127.0.0.1 proton-tm.com -127.0.0.1 protraffic.com -127.0.0.1 provenpixel.com -127.0.0.1 provexia.com -127.0.0.1 prpops.com -127.0.0.1 prsitecheck.com -127.0.0.1 pstmrk.it -127.0.0.1 psychedelicchess.com -127.0.0.1 ptoushoa.com -127.0.0.1 pub.chez.com -127.0.0.1 pub.club-internet.fr -127.0.0.1 pub.hardware.fr -127.0.0.1 pub.network -127.0.0.1 pub.realmedia.fr -127.0.0.1 pubdirecte.com -127.0.0.1 publicidad.elmundo.es -127.0.0.1 publicidees.com -127.0.0.1 publicsofa.com -127.0.0.1 pubmine.com -127.0.0.1 pubnative.net -127.0.0.1 puffyloss.com -127.0.0.1 puffypaste.com -127.0.0.1 puffypull.com -127.0.0.1 puffypurpose.com -127.0.0.1 pureclarity.net -127.0.0.1 pushame.com -127.0.0.1 pushance.com -127.0.0.1 pushazer.com -127.0.0.1 pushengage.com -127.0.0.1 pushno.com -127.0.0.1 pushtrack.co -127.0.0.1 pushwhy.com -127.0.0.1 px.dynamicyield.com -127.0.0.1 px.gfycat.com -127.0.0.1 pxf.io -127.0.0.1 pxl-mailtracker.com -127.0.0.1 pxl.iqm.com -127.0.0.1 pymx5.com -127.0.0.1 q.azcentral.com -127.0.0.1 q1connect.com -127.0.0.1 qctop.com -127.0.0.1 ql.tc -127.0.0.1 qnsr.com -127.0.0.1 qrlsx.com -127.0.0.1 quacksquirrel.com -127.0.0.1 quaintcan.com -127.0.0.1 quantcast.com -127.0.0.1 quantcount.com -127.0.0.1 quantserve.com -127.0.0.1 quantummetric.com -127.0.0.1 quarterserver.de -127.0.0.1 quickkoala.io -127.0.0.1 quietknowledge.com -127.0.0.1 quinst.com -127.0.0.1 quirkysugar.com -127.0.0.1 quisma.com -127.0.0.1 quizzicalzephyr.com -127.0.0.1 r.logrocket.io -127.0.0.1 r.msn.com -127.0.0.1 r.scoota.co -127.0.0.1 r.sibmail.havasit.com -127.0.0.1 r1.visualwebsiteoptimizer.com -127.0.0.1 r2.visualwebsiteoptimizer.com -127.0.0.1 r3.visualwebsiteoptimizer.com -127.0.0.1 raac33.net -127.0.0.1 rabbitrifle.com -127.0.0.1 radar.cedexis.com -127.0.0.1 radiate.com -127.0.0.1 radiateprose.com -127.0.0.1 rads.realadmin.pl -127.0.0.1 railwayreason.com -127.0.0.1 rambunctiousflock.com -127.0.0.1 rampidads.com -127.0.0.1 rankchamp.de -127.0.0.1 ranking-charts.de -127.0.0.1 ranking-hits.de -127.0.0.1 ranking-links.de -127.0.0.1 ranking-liste.de -127.0.0.1 rankingchart.de -127.0.0.1 rankingscout.com -127.0.0.1 rankyou.com -127.0.0.1 rapidcounter.com -127.0.0.1 raresummer.com -127.0.0.1 rate.ru -127.0.0.1 ratings.lycos.com -127.0.0.1 rayjump.com -127.0.0.1 rcadserver.com -127.0.0.1 reachjunction.com -127.0.0.1 reactx.com -127.0.0.1 readingguilt.com -127.0.0.1 readymoon.com -127.0.0.1 realcastmedia.com -127.0.0.1 realclever.com -127.0.0.1 realclix.com -127.0.0.1 realmedia-a800.d4p.net -127.0.0.1 realsrv.com -127.0.0.1 realtechnetwork.com -127.0.0.1 realtracker.com -127.0.0.1 rebelhen.com -127.0.0.1 rebelswing.com -127.0.0.1 rec5.visualwebsiteoptimizer.com -127.0.0.1 recapture.io -127.0.0.1 receptiveink.com -127.0.0.1 receptivereaction.com -127.0.0.1 recoco.it -127.0.0.1 reconditerake.com -127.0.0.1 record.bonniergaming.com -127.0.0.1 record.mrwin.com -127.0.0.1 redirectingat.com -127.0.0.1 redirectvoluum.com -127.0.0.1 redshell.io -127.0.0.1 reduxmedia.com -127.0.0.1 referralware.com -127.0.0.1 referrer.disqus.com -127.0.0.1 regnow.com -127.0.0.1 regularplants.com -127.0.0.1 reklam.rfsl.se -127.0.0.1 reklama.mironet.cz -127.0.0.1 reklamcsere.hu -127.0.0.1 reklamdsp.com -127.0.0.1 relmaxtop.com -127.0.0.1 rememberdiscussion.com -127.0.0.1 remox.com -127.0.0.1 report-1.appmetrica.webvisor.com -127.0.0.1 report-2.appmetrica.webvisor.com -127.0.0.1 report-partners.appmetrica.yandex.net -127.0.0.1 report.ap.yandex-net.ru -127.0.0.1 report.appmetrica.yandex.net -127.0.0.1 republika.onet.pl -127.0.0.1 resalag.com -127.0.0.1 resonantbrush.com -127.0.0.1 resonate.com -127.0.0.1 responsiveads.com -127.0.0.1 restrainstorm.com -127.0.0.1 retargeter.com -127.0.0.1 revcatch.com -127.0.0.1 revcontent.com -127.0.0.1 reveal.clearbit.com -127.0.0.1 revenuedirect.com -127.0.0.1 revenuehits.com -127.0.0.1 revive.docmatic.org -127.0.0.1 revive.dubcnm.com -127.0.0.1 revive.haskovo.net -127.0.0.1 revive.netriota.hu -127.0.0.1 revive.plays.bg -127.0.0.1 revlift.io -127.0.0.1 revprotect.com -127.0.0.1 revstats.com -127.0.0.1 rexadvert.xyz -127.0.0.1 reyden-x.com -127.0.0.1 rhombusads.com -127.0.0.1 rhythmone.com -127.0.0.1 richmails.com -127.0.0.1 richstring.com -127.0.0.1 rightstats.com -127.0.0.1 ringplant.com -127.0.0.1 ringsrecord.com -127.0.0.1 ritzykey.com -127.0.0.1 ritzyrepresentative.com -127.0.0.1 rlcdn.com -127.0.0.1 rle.ru -127.0.0.1 rmads.msn.com -127.0.0.1 rmedia.boston.com -127.0.0.1 roar.com -127.0.0.1 robotreplay.com -127.0.0.1 rockabox.co -127.0.0.1 rok.com.com -127.0.0.1 rollconnection.com -127.0.0.1 rose.ixbt.com -127.0.0.1 rotabanner.com -127.0.0.1 roxr.net -127.0.0.1 rqtrk.eu -127.0.0.1 rs6.net -127.0.0.1 rta.dailymail.co.uk -127.0.0.1 rtb.gumgum.com -127.0.0.1 rtbadzesto.com -127.0.0.1 rtbflairads.com -127.0.0.1 rtbplatform.net -127.0.0.1 rtbpop.com -127.0.0.1 rtbpopd.com -127.0.0.1 rtmark.net -127.0.0.1 rtxplatform.com -127.0.0.1 ru4.com -127.0.0.1 rubiconproject.com -127.0.0.1 rum-http-intake.logs.datadoghq.com -127.0.0.1 rum-http-intake.logs.datadoghq.eu -127.0.0.1 runads.com -127.0.0.1 rundsp.com -127.0.0.1 ruralrobin.com -127.0.0.1 s.adroll.com -127.0.0.1 s.dmmew.com -127.0.0.1 s1-adfly.com -127.0.0.1 s20dh7e9dh.com -127.0.0.1 s2d6.com -127.0.0.1 sabio.us -127.0.0.1 sadloaf.com -127.0.0.1 safeanalytics.net -127.0.0.1 sail-horizon.com -127.0.0.1 samplesamba.com -127.0.0.1 samsungacr.com -127.0.0.1 samsungads.com -127.0.0.1 sanalytics.disneyplus.com -127.0.0.1 sanity-dataplane.rudderstack.com -127.0.0.1 savoryorange.com -127.0.0.1 sbird.xyz -127.0.0.1 sbx.pagesjaunes.fr -127.0.0.1 sc-analytics.appspot.com -127.0.0.1 scambiobanner.aruba.it -127.0.0.1 scanscout.com -127.0.0.1 scarcesign.com -127.0.0.1 scaredsnakes.com -127.0.0.1 scaredsong.com -127.0.0.1 scaredswing.com -127.0.0.1 scarfsmash.com -127.0.0.1 scatteredheat.com -127.0.0.1 scatteredquiver.com -127.0.0.1 scintillatingscissors.com -127.0.0.1 scintillatingsilver.com -127.0.0.1 scissorsstatement.com -127.0.0.1 scopelight.com -127.0.0.1 scorecardresearch.com -127.0.0.1 scratch2cash.com -127.0.0.1 screechingfurniture.com -127.0.0.1 screechingstocking.com -127.0.0.1 screechingstove.com -127.0.0.1 scripte-monster.de -127.0.0.1 scrubswim.com -127.0.0.1 sdkfjxjertertry.com -127.0.0.1 seadform.net -127.0.0.1 searchmarketing.com -127.0.0.1 searchramp.com -127.0.0.1 secre.jp -127.0.0.1 secretspiders.com -127.0.0.1 secure.webconnect.net -127.0.0.1 securedopen-bp.com -127.0.0.1 securely-protectsoft.com -127.0.0.1 securemetrics.apple.com -127.0.0.1 securemetrics.apple.com.cn -127.0.0.1 sedoparking.com -127.0.0.1 sedotracker.com -127.0.0.1 segment-cdn.producthunt.com -127.0.0.1 selectivesummer.com -127.0.0.1 semasio.net -127.0.0.1 sendmepixel.com -127.0.0.1 seraphichorizon.com -127.0.0.1 serendipityecho.com -127.0.0.1 serpentshampoo.com -127.0.0.1 serv0.com -127.0.0.1 servads.net -127.0.0.1 servclick1move.com -127.0.0.1 serve.tercept.com -127.0.0.1 servedby-buysellads.com -127.0.0.1 servedbyadbutler.com -127.0.0.1 servedbyopenx.com -127.0.0.1 servethis.com -127.0.0.1 services.hearstmags.com -127.0.0.1 serving-sys.com -127.0.0.1 sessioncam.com -127.0.0.1 sexcounter.com -127.0.0.1 sexlist.com -127.0.0.1 sextracker.com -127.0.0.1 shakegoldfish.com -127.0.0.1 shakytaste.com -127.0.0.1 shareasale.com -127.0.0.1 sharethrough.com -127.0.0.1 sher.index.hu -127.0.0.1 shesubscriptions.com -127.0.0.1 shinystat.com -127.0.0.1 shinystat.it -127.0.0.1 shiveringspot.com -127.0.0.1 shiverscissors.com -127.0.0.1 shockinggrass.com -127.0.0.1 shoppingads.com -127.0.0.1 showads.pubmatic.com -127.0.0.1 shrillspoon.com -127.0.0.1 shxtrk.com -127.0.0.1 sicksmash.com -127.0.0.1 sidebar.angelfire.com -127.0.0.1 signalayer.com -127.0.0.1 sillyscrew.com -127.0.0.1 silvermob.com -127.0.0.1 simpleanalytics.io -127.0.0.1 simpli.fi -127.0.0.1 simulateswing.com -127.0.0.1 sincerebuffalo.com -127.0.0.1 sinoa.com -127.0.0.1 sitedataprocessing.com -127.0.0.1 siteimproveanalytics.com -127.0.0.1 siteimproveanalytics.io -127.0.0.1 siteintercept.qualtrics.com -127.0.0.1 sitemeter.com -127.0.0.1 sixscissors.com -127.0.0.1 sixsigmatraffic.com -127.0.0.1 sizmek.com -127.0.0.1 skimresources.com -127.0.0.1 skisofa.com -127.0.0.1 skroutza.skroutz.gr -127.0.0.1 skylink.vn -127.0.0.1 slopeaota.com -127.0.0.1 smaato.com -127.0.0.1 smart-data-systems.com -127.0.0.1 smart-traffik.com -127.0.0.1 smart-traffik.io -127.0.0.1 smart4ads.com -127.0.0.1 smartadserver.com -127.0.0.1 smartclip.net -127.0.0.1 smartlook.com -127.0.0.1 smartstream.tv -127.0.0.1 smartyads.com -127.0.0.1 smashquartz.com -127.0.0.1 smashsurprise.com -127.0.0.1 smetrics.10daily.com.au -127.0.0.1 smetrics.bestbuy.com -127.0.0.1 smetrics.ctv.ca -127.0.0.1 smetrics.fedex.com -127.0.0.1 smetrics.foxnews.com -127.0.0.1 smetrics.walgreens.com -127.0.0.1 smetrics.washingtonpost.com -127.0.0.1 smilingcattle.com -127.0.0.1 smilingwaves.com -127.0.0.1 smoggysnakes.com -127.0.0.1 smrtb.com -127.0.0.1 snapads.com -127.0.0.1 snoobi.com -127.0.0.1 socialspark.com -127.0.0.1 softclick.com.br -127.0.0.1 soggysponge.com -127.0.0.1 soggyzoo.com -127.0.0.1 sombersea.com -127.0.0.1 sombersquirrel.com -127.0.0.1 sombersurprise.com -127.0.0.1 somniture.stuff.co.nz -127.0.0.1 somoaudience.com -127.0.0.1 sonobi.com -127.0.0.1 sordidsmile.com -127.0.0.1 sortable.com -127.0.0.1 sourcepoint.vice.com -127.0.0.1 sovrn.com -127.0.0.1 spacash.com -127.0.0.1 spaceleadster.com -127.0.0.1 spadelocket.com -127.0.0.1 sparklingshelf.com -127.0.0.1 sparkstudios.com -127.0.0.1 speakol.com -127.0.0.1 specially4u.net -127.0.0.1 specificmedia.co.uk -127.0.0.1 specificpop.com -127.0.0.1 speedomizer.com -127.0.0.1 speedshiftmedia.com -127.0.0.1 spezialreporte.de -127.0.0.1 spiffymachine.com -127.0.0.1 spinbox.techtracker.com -127.0.0.1 spinbox.versiontracker.com -127.0.0.1 spinnaker-js.com -127.0.0.1 spirebaboon.com -127.0.0.1 sponsorads.de -127.0.0.1 sponsorpro.de -127.0.0.1 sponsors.thoughtsmedia.com -127.0.0.1 spookysleet.com -127.0.0.1 spot.fitness.com -127.0.0.1 spotlessstamp.com -127.0.0.1 spotscenered.info -127.0.0.1 spotx.tv -127.0.0.1 spotxchange.com -127.0.0.1 springbot.com -127.0.0.1 springserve.com -127.0.0.1 spulse.net -127.0.0.1 spylog.com -127.0.0.1 spywarelabs.com -127.0.0.1 spywords.com -127.0.0.1 srvmath.com -127.0.0.1 srvtrck.com -127.0.0.1 srwww1.com -127.0.0.1 sshowads.pubmatic.com -127.0.0.1 st.dynamicyield.com -127.0.0.1 st.pubmatic.com -127.0.0.1 stack-sonar.com -127.0.0.1 stackadapt.com -127.0.0.1 stakingsmile.com -127.0.0.1 stalesummer.com -127.0.0.1 starffa.com -127.0.0.1 startapp.com -127.0.0.1 stat-track.com -127.0.0.1 stat.cliche.se -127.0.0.1 stat.dyna.ultraweb.hu -127.0.0.1 stat.pl -127.0.0.1 stat.webmedia.pl -127.0.0.1 stat.xiaomi.com -127.0.0.1 stat.zenon.net -127.0.0.1 stat24.com -127.0.0.1 stat24.meta.ua -127.0.0.1 statcounter.com -127.0.0.1 statdynamic.com -127.0.0.1 static-tracking.klaviyo.com -127.0.0.1 static.fmpub.net -127.0.0.1 static.itrack.it -127.0.0.1 static.kameleoon.com -127.0.0.1 staticads.btopenworld.com -127.0.0.1 statistik-gallup.net -127.0.0.1 statm.the-adult-company.com -127.0.0.1 stats.blogger.com -127.0.0.1 stats.hyperinzerce.cz -127.0.0.1 stats.merriam-webster.com -127.0.0.1 stats.mirrorfootball.co.uk -127.0.0.1 stats.nextgen-email.com -127.0.0.1 stats.olark.com -127.0.0.1 stats.pusher.com -127.0.0.1 stats.rdphv.net -127.0.0.1 stats.self.com -127.0.0.1 stats.stb-ottow.de -127.0.0.1 stats.townnews.com -127.0.0.1 stats.wordpress.com -127.0.0.1 stats.wp.com -127.0.0.1 stats.x14.eu -127.0.0.1 stats2.self.com -127.0.0.1 stats4all.com -127.0.0.1 statserv.net -127.0.0.1 statsie.com -127.0.0.1 statxpress.com -127.0.0.1 steadfastsound.com -127.0.0.1 steadfastsystem.com -127.0.0.1 steelhouse.com -127.0.0.1 steelhousemedia.com -127.0.0.1 steepscale.com -127.0.0.1 stickyadstv.com -127.0.0.1 stiffgame.com -127.0.0.1 stimulatingsneeze.com -127.0.0.1 stomachscience.com -127.0.0.1 stopstomach.com -127.0.0.1 storetail.io -127.0.0.1 stormyachiever.com -127.0.0.1 storygize.net -127.0.0.1 strack.pubmatic.com -127.0.0.1 straightnest.com -127.0.0.1 stretchsquirrel.com -127.0.0.1 strivesidewalk.com -127.0.0.1 stupendoussleet.com -127.0.0.1 stupendoussnow.com -127.0.0.1 subscribe.hearstmags.com -127.0.0.1 succeedscene.com -127.0.0.1 sugoicounter.com -127.0.0.1 sulkycook.com -127.0.0.1 summerhamster.com -127.0.0.1 summerobject.com -127.0.0.1 sumo.com -127.0.0.1 sumome.com -127.0.0.1 superawesome.tv -127.0.0.1 superclix.de -127.0.0.1 superficialsquare.com -127.0.0.1 supersonicads.com -127.0.0.1 superstats.com -127.0.0.1 supertop.ru -127.0.0.1 supertop100.com -127.0.0.1 supply.colossusssp.com -127.0.0.1 supportwaves.com -127.0.0.1 surfmusik-adserver.de -127.0.0.1 surveygizmobeacon.s3.amazonaws.com -127.0.0.1 sw88.espn.com -127.0.0.1 swan-swan-goose.com -127.0.0.1 swankysquare.com -127.0.0.1 swingslip.com -127.0.0.1 swordgoose.com -127.0.0.1 synonymoussticks.com -127.0.0.1 t.appsflyer.com -127.0.0.1 t.bawafx.com -127.0.0.1 t.carta.com -127.0.0.1 t.co -127.0.0.1 t.eloqua.com -127.0.0.1 t.email.superdrug.com -127.0.0.1 t.en25.com -127.0.0.1 t.firstpromoter.com -127.0.0.1 t.insigit.com -127.0.0.1 t.irtyd.com -127.0.0.1 t.leady.com -127.0.0.1 t.mmtrkr.com -127.0.0.1 t.news.browns-restaurants.co.uk -127.0.0.1 t.notif-colissimo-laposte.info -127.0.0.1 t.podcast.co -127.0.0.1 t.pubmatic.com -127.0.0.1 t.salesmatemail.com -127.0.0.1 t.vacations.disneydestinations.com -127.0.0.1 t.visit.disneydestinations.com -127.0.0.1 t.visitorqueue.com -127.0.0.1 t.x.co -127.0.0.1 taboola.com -127.0.0.1 tag-demo.mention-me.com -127.0.0.1 tag.links-analytics.com -127.0.0.1 tag.mention-me.com -127.0.0.1 tagcommander.com -127.0.0.1 tagger.opecloud.com -127.0.0.1 tags.tiqcdn.com -127.0.0.1 tagtoo.com -127.0.0.1 tagular.com -127.0.0.1 tailsweep.com -127.0.0.1 tailsweep.se -127.0.0.1 takethatad.com -127.0.0.1 tamgrt.com -127.0.0.1 tangibleteam.com -127.0.0.1 tangyamount.com -127.0.0.1 tapad.com -127.0.0.1 tapfiliate.com -127.0.0.1 tapinfluence.com -127.0.0.1 tapjoy.com -127.0.0.1 tappx.com -127.0.0.1 targad.de -127.0.0.1 target.microsoft.com -127.0.0.1 targeting.api.drift.com -127.0.0.1 targeting.nzme.arcpublishing.com -127.0.0.1 targeting.voxus.tv -127.0.0.1 targetingnow.com -127.0.0.1 targetnet.com -127.0.0.1 targetpoint.com -127.0.0.1 tatsumi-sys.jp -127.0.0.1 tawdryson.com -127.0.0.1 tcads.net -127.0.0.1 teads.tv -127.0.0.1 tealeaf.com -127.0.0.1 tealium.cbsnews.com -127.0.0.1 tealium.com -127.0.0.1 tealiumiq.com -127.0.0.1 tediousticket.com -127.0.0.1 tedioustooth.com -127.0.0.1 teenrevenue.com -127.0.0.1 telaria.com -127.0.0.1 telemetrics.klaviyo.com -127.0.0.1 telemetry.dropbox.com -127.0.0.1 telemetry.goodlifefitness.com -127.0.0.1 telemetry.malwarebytes.com -127.0.0.1 telemetry.v.dropbox.com -127.0.0.1 temelio.com -127.0.0.1 tend.io -127.0.0.1 tendertest.com -127.0.0.1 terriblethumb.com -127.0.0.1 text-link-ads.com -127.0.0.1 textad.sexsearch.com -127.0.0.1 textads.biz -127.0.0.1 textlinks.com -127.0.0.1 tfag.de -127.0.0.1 the-ozone-project.com -127.0.0.1 theadex.com -127.0.0.1 theadhost.com -127.0.0.1 thebugs.ws -127.0.0.1 theclickads.com -127.0.0.1 themoneytizer.com -127.0.0.1 therapistla.com -127.0.0.1 thinkitten.com -127.0.0.1 thirdparty.bnc.lt -127.0.0.1 thirdrespect.com -127.0.0.1 thirstytwig.com -127.0.0.1 thomastorch.com -127.0.0.1 throtle.io -127.0.0.1 thruport.com -127.0.0.1 thunderhead.com -127.0.0.1 tia.timeinc.net -127.0.0.1 ticketaunt.com -127.0.0.1 ticklesign.com -127.0.0.1 ticksel.com -127.0.0.1 tics.techdirt.com -127.0.0.1 tidaltv.com -127.0.0.1 tidint.pro -127.0.0.1 tinybar.com -127.0.0.1 tinytendency.com -127.0.0.1 tiresomethunder.com -127.0.0.1 tkbo.com -127.0.0.1 tls.telemetry.swe.quicinc.com -127.0.0.1 tlvmedia.com -127.0.0.1 tm.br.de -127.0.0.1 tnkexchange.com -127.0.0.1 tns-counter.ru -127.0.0.1 top-casting-termine.de -127.0.0.1 top-site-list.com -127.0.0.1 top.list.ru -127.0.0.1 top.mail.ru -127.0.0.1 top100-images.rambler.ru -127.0.0.1 top100.mafia.ru -127.0.0.1 top123.ro -127.0.0.1 top20free.com -127.0.0.1 topforall.com -127.0.0.1 toplist.cz -127.0.0.1 toplist.pornhost.com -127.0.0.1 toplista.mw.hu -127.0.0.1 toplistcity.com -127.0.0.1 topsir.com -127.0.0.1 topsite.lv -127.0.0.1 topsites.com.br -127.0.0.1 topstats.com -127.0.0.1 totemcash.com -127.0.0.1 touchclarity.com -127.0.0.1 tour.brazzers.com -127.0.0.1 track.adform.net -127.0.0.1 track.anchorfree.com -127.0.0.1 track.canva.com -127.0.0.1 track.contently.com -127.0.0.1 track.effiliation.com -127.0.0.1 track.flexlinks.com -127.0.0.1 track.flexlinkspro.com -127.0.0.1 track.freemmo2017.com -127.0.0.1 track.game18click.com -127.0.0.1 track.lettingaproperty.com -127.0.0.1 track.mailalert.io -127.0.0.1 track.mailerlite.com -127.0.0.1 track.miro.com -127.0.0.1 track.nationalgunrights.org -127.0.0.1 track.privacyatclearbit.com -127.0.0.1 track.pubmatic.com -127.0.0.1 track.segmetrics.io -127.0.0.1 track.software-codes.com -127.0.0.1 track.spe.schoolmessenger.com -127.0.0.1 track.themaccleanup.info -127.0.0.1 track.ultravpn.com -127.0.0.1 track.unear.net -127.0.0.1 track.vcdc.com -127.0.0.1 track.viewdeos.com -127.0.0.1 track1.viewdeos.com -127.0.0.1 trackalyzer.com -127.0.0.1 trackedlink.net -127.0.0.1 trackedweb.net -127.0.0.1 tracker-pm2.spilleren.com -127.0.0.1 tracker.bannerflow.com -127.0.0.1 tracker.cdnbye.com -127.0.0.1 tracker.icerocket.com -127.0.0.1 tracker.metricswave.com -127.0.0.1 tracker.mmdlv.it -127.0.0.1 tracker.samplicio.us -127.0.0.1 tracker.vgame.us -127.0.0.1 tracking.1-a1502-bi.co.uk -127.0.0.1 tracking.21-a4652-bi.co.uk -127.0.0.1 tracking.28-91473-wbm.co.uk -127.0.0.1 tracking.39-bb4a9-osm.co.uk -127.0.0.1 tracking.42-01pr5-osm-secure.co.uk -127.0.0.1 tracking.5-47737-bi.co.uk -127.0.0.1 tracking.epicgames.com -127.0.0.1 tracking.hyros.com -127.0.0.1 tracking.ibxlink.com -127.0.0.1 tracking.intentsify.io -127.0.0.1 tracking.internetstores.de -127.0.0.1 tracking.intl.miui.com -127.0.0.1 tracking.jiffyworld.com -127.0.0.1 tracking.markethero.io -127.0.0.1 tracking.miui.com -127.0.0.1 tracking.netalerts.io -127.0.0.1 tracking.olx-st.com -127.0.0.1 tracking.orixa-media.com -127.0.0.1 tracking.shopstyle.com -127.0.0.1 tracking.thinkabt.com -127.0.0.1 tracking.utlservice.com -127.0.0.1 tracking.wetter.at -127.0.0.1 tracking01.walmart.com -127.0.0.1 tracking101.com -127.0.0.1 tracking22.com -127.0.0.1 trackingsoft.com -127.0.0.1 trackmysales.com -127.0.0.1 trackuhub.com -127.0.0.1 tradeadexchange.com -127.0.0.1 tradedoubler.com -127.0.0.1 traffic-exchange.com -127.0.0.1 traffic-redirecting.com -127.0.0.1 traffic.hyteck.de -127.0.0.1 trafficfactory.biz -127.0.0.1 trafficforce.com -127.0.0.1 trafficholder.com -127.0.0.1 traffichunt.com -127.0.0.1 trafficjunky.net -127.0.0.1 trafficleader.com -127.0.0.1 trafficrouter.io -127.0.0.1 trafficshop.com -127.0.0.1 trafficspaces.net -127.0.0.1 trafficstrategies.com -127.0.0.1 trafficswarm.com -127.0.0.1 trafficz.com -127.0.0.1 traffiq.com -127.0.0.1 trafic.ro -127.0.0.1 traktrafficflow.com -127.0.0.1 tranquilplume.com -127.0.0.1 tranquilside.com -127.0.0.1 travis.bosscasinos.com -127.0.0.1 trck.a8.net -127.0.0.1 trcklion.com -127.0.0.1 treasuredata.com -127.0.0.1 trekdata.com -127.0.0.1 tremendoustime.com -127.0.0.1 tremorhub.com -127.0.0.1 trendcounter.com -127.0.0.1 trendmd.com -127.0.0.1 trialfire.com -127.0.0.1 tribalfusion.com -127.0.0.1 triplelift.com -127.0.0.1 triptease.io -127.0.0.1 trk.bad-tool-tell-doubt.xyz -127.0.0.1 trk.bc.shutterfly.com -127.0.0.1 trk.pinterest.com -127.0.0.1 trk.techtarget.com -127.0.0.1 trk42.net -127.0.0.1 trkn.us -127.0.0.1 trknths.com -127.0.0.1 trkoptimizer.com -127.0.0.1 trkpnt.ongage.net -127.0.0.1 trmit.com -127.0.0.1 truckstomatoes.com -127.0.0.1 truculentrate.com -127.0.0.1 truehits.net -127.0.0.1 truehits1.gits.net.th -127.0.0.1 truehits2.gits.net.th -127.0.0.1 trust.titanhq.com -127.0.0.1 trustpid.com -127.0.0.1 trustx.org -127.0.0.1 tsyndicate.com -127.0.0.1 tsyndicate.net -127.0.0.1 tubemogul.com -127.0.0.1 tumbleicicle.com -127.0.0.1 turboadv.com -127.0.0.1 turn.com -127.0.0.1 twittad.com -127.0.0.1 twyn.com -127.0.0.1 tynt.com -127.0.0.1 typicalteeth.com -127.0.0.1 tyroo.com -127.0.0.1 uarating.com -127.0.0.1 ucfunnel.com -127.0.0.1 udkcrj.com -127.0.0.1 udncoeln.com -127.0.0.1 uib.ff.avast.com -127.0.0.1 ukoffzeh.com -127.0.0.1 ultimateclixx.com -127.0.0.1 ultramercial.com -127.0.0.1 ultraoranges.com -127.0.0.1 unaccountablepie.com -127.0.0.1 unarmedindustry.com -127.0.0.1 unbecominglamp.com -127.0.0.1 understoodocean.com -127.0.0.1 undertone.com -127.0.0.1 unidentifiedanalytics.web.app -127.0.0.1 unknowntray.com -127.0.0.1 unrulymedia.com -127.0.0.1 untd.com -127.0.0.1 untidyquestion.com -127.0.0.1 unusualtitle.com -127.0.0.1 unwieldyhealth.com -127.0.0.1 unwieldyimpulse.com -127.0.0.1 upu.samsungelectronics.com -127.0.0.1 url9467.comms-2.zoopla.co.uk -127.0.0.1 urlcash.net -127.0.0.1 urldata.net -127.0.0.1 us.a1.yimg.com -127.0.0.1 user-shield-check.com -127.0.0.1 userreplay.com -127.0.0.1 userreplay.net -127.0.0.1 users.maxcluster.net -127.0.0.1 utils.mediageneral.net -127.0.0.1 utl-1.com -127.0.0.1 uu.domainforlite.com -127.0.0.1 v1.cnzz.com -127.0.0.1 v1adserver.com -127.0.0.1 valerie.forbes.com -127.0.0.1 validclick.com -127.0.0.1 valuead.com -127.0.0.1 valueclick.com -127.0.0.1 valueclickmedia.com -127.0.0.1 valuecommerce.com -127.0.0.1 vanfireworks.com -127.0.0.1 vcommission.com -127.0.0.1 veille-referencement.com -127.0.0.1 velismedia.com -127.0.0.1 venetrigni.com -127.0.0.1 vengefulgrass.com -127.0.0.1 ventivmedia.com -127.0.0.1 venturead.com -127.0.0.1 vericlick.com -127.0.0.1 vertamedia.com -127.0.0.1 verticalmass.com -127.0.0.1 vervewireless.com -127.0.0.1 vibrantmedia.com -127.0.0.1 vibrantsundown.com -127.0.0.1 vid.pubmatic.com -127.0.0.1 vidcpm.com -127.0.0.1 video-stats.video.google.com -127.0.0.1 videoadex.com -127.0.0.1 videoegg.com -127.0.0.1 videostats.kakao.com -127.0.0.1 vidible.tv -127.0.0.1 vidora.com -127.0.0.1 view4cash.de -127.0.0.1 viglink.com -127.0.0.1 virtualvincent.com -127.0.0.1 visiblemeasures.com -127.0.0.1 visistat.com -127.0.0.1 visitbox.de -127.0.0.1 visual-pagerank.fr -127.0.0.1 visualrevenue.com -127.0.0.1 vivads.net -127.0.0.1 vivtracking.com -127.0.0.1 vmmpxl.com -127.0.0.1 voicefive.com -127.0.0.1 voicelessvein.com -127.0.0.1 volatilevessel.com -127.0.0.1 voluum.com -127.0.0.1 voluumtrk2.com -127.0.0.1 vpon.com -127.0.0.1 vrs.cz -127.0.0.1 vs.tucows.com -127.0.0.1 vtracy.de -127.0.0.1 vungle.com -127.0.0.1 w55c.net -127.0.0.1 wa.and.co.uk -127.0.0.1 waardex.com -127.0.0.1 walkets.click -127.0.0.1 warlog.ru -127.0.0.1 warmafterthought.com -127.0.0.1 washbanana.com -127.0.0.1 wateryvan.com -127.0.0.1 wdads.sx.atl.publicus.com -127.0.0.1 wdfl.co -127.0.0.1 web-stat.com -127.0.0.1 web.informer.com -127.0.0.1 web2.deja.com -127.0.0.1 webads.co.nz -127.0.0.1 webads.nl -127.0.0.1 webanalytics.zohodcm.com -127.0.0.1 webcash.nl -127.0.0.1 webcontentassessor.com -127.0.0.1 webcounter.cz -127.0.0.1 webcounter.goweb.de -127.0.0.1 webgains.com -127.0.0.1 weborama.com -127.0.0.1 weborama.fr -127.0.0.1 webpower.com -127.0.0.1 webreseau.com -127.0.0.1 webseoanalytics.com -127.0.0.1 websponsors.com -127.0.0.1 webstat.channel4.com -127.0.0.1 webstat.com -127.0.0.1 webstat.net -127.0.0.1 webtrackerplus.com -127.0.0.1 webtracky.com -127.0.0.1 webtraffic.se -127.0.0.1 webtraxx.de -127.0.0.1 webtrendslive.com -127.0.0.1 webxcdn.com -127.0.0.1 wellmadefrog.com -127.0.0.1 welved.com -127.0.0.1 werbung.meteoxpress.com -127.0.0.1 wetrack.it -127.0.0.1 whaleads.com -127.0.0.1 wheredoyoucomefrom.ovh -127.0.0.1 whirlwealth.com -127.0.0.1 whiskyqueue.com -127.0.0.1 whispa.com -127.0.0.1 whisperingcascade.com -127.0.0.1 whisperingcrib.com -127.0.0.1 whisperingsummit.com -127.0.0.1 whoisonline.net -127.0.0.1 wickedreports.com -127.0.0.1 widespace.com -127.0.0.1 widget.educationdynamics.com -127.0.0.1 widget.privy.com -127.0.0.1 wikia-ads.wikia.com -127.0.0.1 win.iqm.com -127.0.0.1 window.nixnet.cz -127.0.0.1 wintricksbanner.googlepages.com -127.0.0.1 wirecomic.com -127.0.0.1 wirypaste.com -127.0.0.1 wisepops.com -127.0.0.1 witch-counter.de -127.0.0.1 wittypopcorn.com -127.0.0.1 wizaly.com -127.0.0.1 wl.spotify.com -127.0.0.1 wlmarketing.com -127.0.0.1 wonderlandads.com -127.0.0.1 wondoads.de -127.0.0.1 woopra.com -127.0.0.1 worldwide-cash.net -127.0.0.1 worldwidedigitalads.com -127.0.0.1 worriednumber.com -127.0.0.1 wt-eu02.net -127.0.0.1 wt.bankmillennium.pl -127.0.0.1 wtlive.com -127.0.0.1 www-banner.chat.ru -127.0.0.1 www-google-analytics.l.google.com -127.0.0.1 www.dnps.com -127.0.0.1 www.kaplanindex.com -127.0.0.1 www.photo-ads.co.uk -127.0.0.1 www8.glam.com -127.0.0.1 wwwpromoter.com -127.0.0.1 x-traceur.com -127.0.0.1 x6.yakiuchi.com -127.0.0.1 xad.com -127.0.0.1 xapads.com -127.0.0.1 xchange.ro -127.0.0.1 xertive.com -127.0.0.1 xfreeservice.com -127.0.0.1 xg4ken.com -127.0.0.1 xiti.com -127.0.0.1 xovq5nemr.com -127.0.0.1 xplusone.com -127.0.0.1 xponsor.com -127.0.0.1 xpu.samsungelectronics.com -127.0.0.1 xq1.net -127.0.0.1 xtendmedia.com -127.0.0.1 xtracker.logimeter.com -127.0.0.1 xxxcounter.com -127.0.0.1 xxxmyself.com -127.0.0.1 y.ibsys.com -127.0.0.1 yab-adimages.s3.amazonaws.com -127.0.0.1 yadro.ru -127.0.0.1 yepads.com -127.0.0.1 yesads.com -127.0.0.1 yesadvertising.com -127.0.0.1 yieldads.com -127.0.0.1 yieldlab.net -127.0.0.1 yieldmanager.net -127.0.0.1 yieldmo.com -127.0.0.1 yieldoptimizer.com -127.0.0.1 yieldtraffic.com -127.0.0.1 yldbt.com -127.0.0.1 ymetrica1.com -127.0.0.1 yoads.net -127.0.0.1 yoggrt.com -127.0.0.1 youradexchange.com -127.0.0.1 ypu.samsungelectronics.com -127.0.0.1 zangocash.com -127.0.0.1 zanox-affiliate.de -127.0.0.1 zanox.com -127.0.0.1 zantracker.com -127.0.0.1 zarget.com -127.0.0.1 zbwp6ghm.com -127.0.0.1 zdbb.net -127.0.0.1 zedo.com -127.0.0.1 zemanta.com -127.0.0.1 zencudo.co.uk -127.0.0.1 zenkreka.com -127.0.0.1 zenzuu.com -127.0.0.1 zephyrlabyrinth.com -127.0.0.1 zeus.developershed.com -127.0.0.1 zeusclicks.com -127.0.0.1 zion-telemetry.api.cnn.io -127.0.0.1 zippingcare.com -127.0.0.1 zlp6s.pw -127.0.0.1 zm232.com -127.0.0.1 zmedia.com -127.0.0.1 zpu.samsungelectronics.com -127.0.0.1 zqtk.net -127.0.0.1 zukxd6fkxqn.com -127.0.0.1 zy16eoat1w.com -127.0.0.1 zzhc.vnet.cn diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat deleted file mode 100644 index 5bc92a5..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat +++ /dev/null @@ -1,15782 +0,0 @@ -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at https://mozilla.org/MPL/2.0/. - -// Please pull this list from, and only from https://publicsuffix.org/list/public_suffix_list.dat, -// rather than any other VCS sites. Pulling from any other URL is not guaranteed to be supported. - -// Instructions on pulling and using this list can be found at https://publicsuffix.org/list/. - -// ===BEGIN ICANN DOMAINS=== - -// ac : http://nic.ac/rules.htm -ac -com.ac -edu.ac -gov.ac -net.ac -mil.ac -org.ac - -// ad : https://en.wikipedia.org/wiki/.ad -ad -nom.ad - -// ae : https://tdra.gov.ae/en/aeda/ae-policies -ae -co.ae -net.ae -org.ae -sch.ae -ac.ae -gov.ae -mil.ae - -// aero : https://information.aero/registration/policies/dmp -aero -// 2LDs -airline.aero -airport.aero -// 2LDs (currently not accepting registration, seemingly never have) -// As of 2024-07, these are marked as reserved for potential 3LD -// registrations (clause 11 "allocated subdomains" in the 2006 TLD -// policy), but the relevant industry partners have not opened them up -// for registration. Current status can be determined from the TLD's -// policy document: 2LDs that are open for registration must list -// their policy in the TLD's policy. Any 2LD without such a policy is -// not open for registrations. -accident-investigation.aero -accident-prevention.aero -aerobatic.aero -aeroclub.aero -aerodrome.aero -agents.aero -air-surveillance.aero -air-traffic-control.aero -aircraft.aero -airtraffic.aero -ambulance.aero -association.aero -author.aero -ballooning.aero -broker.aero -caa.aero -cargo.aero -catering.aero -certification.aero -championship.aero -charter.aero -civilaviation.aero -club.aero -conference.aero -consultant.aero -consulting.aero -control.aero -council.aero -crew.aero -design.aero -dgca.aero -educator.aero -emergency.aero -engine.aero -engineer.aero -entertainment.aero -equipment.aero -exchange.aero -express.aero -federation.aero -flight.aero -freight.aero -fuel.aero -gliding.aero -government.aero -groundhandling.aero -group.aero -hanggliding.aero -homebuilt.aero -insurance.aero -journal.aero -journalist.aero -leasing.aero -logistics.aero -magazine.aero -maintenance.aero -marketplace.aero -media.aero -microlight.aero -modelling.aero -navigation.aero -parachuting.aero -paragliding.aero -passenger-association.aero -pilot.aero -press.aero -production.aero -recreation.aero -repbody.aero -res.aero -research.aero -rotorcraft.aero -safety.aero -scientist.aero -services.aero -show.aero -skydiving.aero -software.aero -student.aero -taxi.aero -trader.aero -trading.aero -trainer.aero -union.aero -workinggroup.aero -works.aero - -// af : http://www.nic.af/help.jsp -af -gov.af -com.af -org.af -net.af -edu.af - -// ag : http://www.nic.ag/prices.htm -ag -com.ag -org.ag -net.ag -co.ag -nom.ag - -// ai : http://nic.com.ai/ -ai -off.ai -com.ai -net.ai -org.ai - -// al : http://www.ert.gov.al/ert_alb/faq_det.html?Id=31 -al -com.al -edu.al -gov.al -mil.al -net.al -org.al - -// am : https://www.amnic.net/policy/en/Policy_EN.pdf -am -co.am -com.am -commune.am -net.am -org.am - -// ao : https://en.wikipedia.org/wiki/.ao -// http://www.dns.ao/REGISTR.DOC -ao -ed.ao -gv.ao -og.ao -co.ao -pb.ao -it.ao - -// aq : https://en.wikipedia.org/wiki/.aq -aq - -// ar : https://nic.ar/es/nic-argentina/normativa -ar -bet.ar -com.ar -coop.ar -edu.ar -gob.ar -gov.ar -int.ar -mil.ar -musica.ar -mutual.ar -net.ar -org.ar -senasa.ar -tur.ar - -// arpa : https://en.wikipedia.org/wiki/.arpa -// Confirmed by registry 2008-06-18 -arpa -e164.arpa -in-addr.arpa -ip6.arpa -iris.arpa -uri.arpa -urn.arpa - -// as : https://en.wikipedia.org/wiki/.as -as -gov.as - -// asia : https://en.wikipedia.org/wiki/.asia -asia - -// at : https://en.wikipedia.org/wiki/.at -// Confirmed by registry 2008-06-17 -at -ac.at -co.at -gv.at -or.at -sth.ac.at - -// au : https://en.wikipedia.org/wiki/.au -// http://www.auda.org.au/ -au -// 2LDs -com.au -net.au -org.au -edu.au -gov.au -asn.au -id.au -// Historic 2LDs (closed to new registration, but sites still exist) -info.au -conf.au -oz.au -// CGDNs - http://www.cgdn.org.au/ -act.au -nsw.au -nt.au -qld.au -sa.au -tas.au -vic.au -wa.au -// 3LDs -act.edu.au -catholic.edu.au -// eq.edu.au - Removed at the request of the Queensland Department of Education -nsw.edu.au -nt.edu.au -qld.edu.au -sa.edu.au -tas.edu.au -vic.edu.au -wa.edu.au -// act.gov.au Bug 984824 - Removed at request of Greg Tankard -// nsw.gov.au Bug 547985 - Removed at request of -// nt.gov.au Bug 940478 - Removed at request of Greg Connors -qld.gov.au -sa.gov.au -tas.gov.au -vic.gov.au -wa.gov.au -// 4LDs -// education.tas.edu.au - Removed at the request of the Department of Education Tasmania -schools.nsw.edu.au - -// aw : https://en.wikipedia.org/wiki/.aw -aw -com.aw - -// ax : https://en.wikipedia.org/wiki/.ax -ax - -// az : https://en.wikipedia.org/wiki/.az -az -com.az -net.az -int.az -gov.az -org.az -edu.az -info.az -pp.az -mil.az -name.az -pro.az -biz.az - -// ba : http://nic.ba/users_data/files/pravilnik_o_registraciji.pdf -ba -com.ba -edu.ba -gov.ba -mil.ba -net.ba -org.ba - -// bb : https://en.wikipedia.org/wiki/.bb -bb -biz.bb -co.bb -com.bb -edu.bb -gov.bb -info.bb -net.bb -org.bb -store.bb -tv.bb - -// bd : https://en.wikipedia.org/wiki/.bd -*.bd - -// be : https://en.wikipedia.org/wiki/.be -// Confirmed by registry 2008-06-08 -be -ac.be - -// bf : https://en.wikipedia.org/wiki/.bf -bf -gov.bf - -// bg : https://en.wikipedia.org/wiki/.bg -// https://www.register.bg/user/static/rules/en/index.html -bg -a.bg -b.bg -c.bg -d.bg -e.bg -f.bg -g.bg -h.bg -i.bg -j.bg -k.bg -l.bg -m.bg -n.bg -o.bg -p.bg -q.bg -r.bg -s.bg -t.bg -u.bg -v.bg -w.bg -x.bg -y.bg -z.bg -0.bg -1.bg -2.bg -3.bg -4.bg -5.bg -6.bg -7.bg -8.bg -9.bg - -// bh : https://en.wikipedia.org/wiki/.bh -bh -com.bh -edu.bh -net.bh -org.bh -gov.bh - -// bi : https://en.wikipedia.org/wiki/.bi -// http://whois.nic.bi/ -bi -co.bi -com.bi -edu.bi -or.bi -org.bi - -// biz : https://en.wikipedia.org/wiki/.biz -biz - -// bj : https://nic.bj/bj-suffixes.txt -// submitted by registry -bj -africa.bj -agro.bj -architectes.bj -assur.bj -avocats.bj -co.bj -com.bj -eco.bj -econo.bj -edu.bj -info.bj -loisirs.bj -money.bj -net.bj -org.bj -ote.bj -resto.bj -restaurant.bj -tourism.bj -univ.bj - -// bm : http://www.bermudanic.bm/dnr-text.txt -bm -com.bm -edu.bm -gov.bm -net.bm -org.bm - -// bn : http://www.bnnic.bn/faqs -bn -com.bn -edu.bn -gov.bn -net.bn -org.bn - -// bo : https://nic.bo/delegacion2015.php#h-1.10 -bo -com.bo -edu.bo -gob.bo -int.bo -org.bo -net.bo -mil.bo -tv.bo -web.bo -// Social Domains -academia.bo -agro.bo -arte.bo -blog.bo -bolivia.bo -ciencia.bo -cooperativa.bo -democracia.bo -deporte.bo -ecologia.bo -economia.bo -empresa.bo -indigena.bo -industria.bo -info.bo -medicina.bo -movimiento.bo -musica.bo -natural.bo -nombre.bo -noticias.bo -patria.bo -politica.bo -profesional.bo -plurinacional.bo -pueblo.bo -revista.bo -salud.bo -tecnologia.bo -tksat.bo -transporte.bo -wiki.bo - -// br : http://registro.br/dominio/categoria.html -// Submitted by registry -br -9guacu.br -abc.br -adm.br -adv.br -agr.br -aju.br -am.br -anani.br -aparecida.br -app.br -arq.br -art.br -ato.br -b.br -barueri.br -belem.br -bhz.br -bib.br -bio.br -blog.br -bmd.br -boavista.br -bsb.br -campinagrande.br -campinas.br -caxias.br -cim.br -cng.br -cnt.br -com.br -contagem.br -coop.br -coz.br -cri.br -cuiaba.br -curitiba.br -def.br -des.br -det.br -dev.br -ecn.br -eco.br -edu.br -emp.br -enf.br -eng.br -esp.br -etc.br -eti.br -far.br -feira.br -flog.br -floripa.br -fm.br -fnd.br -fortal.br -fot.br -foz.br -fst.br -g12.br -geo.br -ggf.br -goiania.br -gov.br -// gov.br 26 states + df https://en.wikipedia.org/wiki/States_of_Brazil -ac.gov.br -al.gov.br -am.gov.br -ap.gov.br -ba.gov.br -ce.gov.br -df.gov.br -es.gov.br -go.gov.br -ma.gov.br -mg.gov.br -ms.gov.br -mt.gov.br -pa.gov.br -pb.gov.br -pe.gov.br -pi.gov.br -pr.gov.br -rj.gov.br -rn.gov.br -ro.gov.br -rr.gov.br -rs.gov.br -sc.gov.br -se.gov.br -sp.gov.br -to.gov.br -gru.br -imb.br -ind.br -inf.br -jab.br -jampa.br -jdf.br -joinville.br -jor.br -jus.br -leg.br -lel.br -log.br -londrina.br -macapa.br -maceio.br -manaus.br -maringa.br -mat.br -med.br -mil.br -morena.br -mp.br -mus.br -natal.br -net.br -niteroi.br -*.nom.br -not.br -ntr.br -odo.br -ong.br -org.br -osasco.br -palmas.br -poa.br -ppg.br -pro.br -psc.br -psi.br -pvh.br -qsl.br -radio.br -rec.br -recife.br -rep.br -ribeirao.br -rio.br -riobranco.br -riopreto.br -salvador.br -sampa.br -santamaria.br -santoandre.br -saobernardo.br -saogonca.br -seg.br -sjc.br -slg.br -slz.br -sorocaba.br -srv.br -taxi.br -tc.br -tec.br -teo.br -the.br -tmp.br -trd.br -tur.br -tv.br -udi.br -vet.br -vix.br -vlog.br -wiki.br -zlg.br - -// bs : http://www.nic.bs/rules.html -bs -com.bs -net.bs -org.bs -edu.bs -gov.bs - -// bt : https://en.wikipedia.org/wiki/.bt -bt -com.bt -edu.bt -gov.bt -net.bt -org.bt - -// bv : No registrations at this time. -// Submitted by registry -bv - -// bw : https://en.wikipedia.org/wiki/.bw -// http://www.gobin.info/domainname/bw.doc -// list of other 2nd level tlds ? -bw -co.bw -org.bw - -// by : https://en.wikipedia.org/wiki/.by -// http://tld.by/rules_2006_en.html -// list of other 2nd level tlds ? -by -gov.by -mil.by -// Official information does not indicate that com.by is a reserved -// second-level domain, but it's being used as one (see www.google.com.by and -// www.yahoo.com.by, for example), so we list it here for safety's sake. -com.by -// http://hoster.by/ -of.by - -// bz : https://en.wikipedia.org/wiki/.bz -// http://www.belizenic.bz/ -bz -com.bz -net.bz -org.bz -edu.bz -gov.bz - -// ca : https://en.wikipedia.org/wiki/.ca -ca -// ca geographical names -ab.ca -bc.ca -mb.ca -nb.ca -nf.ca -nl.ca -ns.ca -nt.ca -nu.ca -on.ca -pe.ca -qc.ca -sk.ca -yk.ca -// gc.ca: https://en.wikipedia.org/wiki/.gc.ca -// see also: http://registry.gc.ca/en/SubdomainFAQ -gc.ca - -// cat : https://en.wikipedia.org/wiki/.cat -cat - -// cc : https://en.wikipedia.org/wiki/.cc -cc - -// cd : https://en.wikipedia.org/wiki/.cd -// see also: https://www.nic.cd/domain/insertDomain_2.jsp?act=1 -cd -gov.cd - -// cf : https://en.wikipedia.org/wiki/.cf -cf - -// cg : https://en.wikipedia.org/wiki/.cg -cg - -// ch : https://en.wikipedia.org/wiki/.ch -ch - -// ci : https://en.wikipedia.org/wiki/.ci -// http://www.nic.ci/index.php?page=charte -ci -org.ci -or.ci -com.ci -co.ci -edu.ci -ed.ci -ac.ci -net.ci -go.ci -asso.ci -aéroport.ci -int.ci -presse.ci -md.ci -gouv.ci - -// ck : https://en.wikipedia.org/wiki/.ck -*.ck -!www.ck - -// cl : https://www.nic.cl -// Confirmed by .CL registry -cl -co.cl -gob.cl -gov.cl -mil.cl - -// cm : https://en.wikipedia.org/wiki/.cm plus bug 981927 -cm -co.cm -com.cm -gov.cm -net.cm - -// cn : https://en.wikipedia.org/wiki/.cn -// Submitted by registry -cn -ac.cn -com.cn -edu.cn -gov.cn -net.cn -org.cn -mil.cn -公司.cn -网络.cn -網絡.cn -// cn geographic names -ah.cn -bj.cn -cq.cn -fj.cn -gd.cn -gs.cn -gz.cn -gx.cn -ha.cn -hb.cn -he.cn -hi.cn -hl.cn -hn.cn -jl.cn -js.cn -jx.cn -ln.cn -nm.cn -nx.cn -qh.cn -sc.cn -sd.cn -sh.cn -sn.cn -sx.cn -tj.cn -xj.cn -xz.cn -yn.cn -zj.cn -hk.cn -mo.cn -tw.cn - -// co : https://en.wikipedia.org/wiki/.co -// Submitted by registry -co -arts.co -com.co -edu.co -firm.co -gov.co -info.co -int.co -mil.co -net.co -nom.co -org.co -rec.co -web.co - -// com : https://en.wikipedia.org/wiki/.com -com - -// coop : https://en.wikipedia.org/wiki/.coop -coop - -// cr : http://www.nic.cr/niccr_publico/showRegistroDominiosScreen.do -cr -ac.cr -co.cr -ed.cr -fi.cr -go.cr -or.cr -sa.cr - -// cu : https://en.wikipedia.org/wiki/.cu -cu -com.cu -edu.cu -org.cu -net.cu -gov.cu -inf.cu - -// cv : https://en.wikipedia.org/wiki/.cv -// cv : http://www.dns.cv/tldcv_portal/do?com=DS;5446457100;111;+PAGE(4000018)+K-CAT-CODIGO(RDOM)+RCNT(100); <- registration rules -cv -com.cv -edu.cv -int.cv -nome.cv -org.cv - -// cw : http://www.una.cw/cw_registry/ -// Confirmed by registry 2013-03-26 -cw -com.cw -edu.cw -net.cw -org.cw - -// cx : https://en.wikipedia.org/wiki/.cx -// list of other 2nd level tlds ? -cx -gov.cx - -// cy : http://www.nic.cy/ -// Submitted by registry Panayiotou Fotia -// namespace policies URL https://www.nic.cy/portal//sites/default/files/symfonia_gia_eggrafi.pdf -cy -ac.cy -biz.cy -com.cy -ekloges.cy -gov.cy -ltd.cy -mil.cy -net.cy -org.cy -press.cy -pro.cy -tm.cy - -// cz : https://en.wikipedia.org/wiki/.cz -cz - -// de : https://en.wikipedia.org/wiki/.de -// Confirmed by registry (with technical -// reservations) 2008-07-01 -de - -// dj : https://en.wikipedia.org/wiki/.dj -dj - -// dk : https://en.wikipedia.org/wiki/.dk -// Confirmed by registry 2008-06-17 -dk - -// dm : https://en.wikipedia.org/wiki/.dm -dm -com.dm -net.dm -org.dm -edu.dm -gov.dm - -// do : https://en.wikipedia.org/wiki/.do -do -art.do -com.do -edu.do -gob.do -gov.do -mil.do -net.do -org.do -sld.do -web.do - -// dz : http://www.nic.dz/images/pdf_nic/charte.pdf -dz -art.dz -asso.dz -com.dz -edu.dz -gov.dz -org.dz -net.dz -pol.dz -soc.dz -tm.dz - -// ec : http://www.nic.ec/reg/paso1.asp -// Submitted by registry -ec -com.ec -info.ec -net.ec -fin.ec -k12.ec -med.ec -pro.ec -org.ec -edu.ec -gov.ec -gob.ec -mil.ec - -// edu : https://en.wikipedia.org/wiki/.edu -edu - -// ee : http://www.eenet.ee/EENet/dom_reeglid.html#lisa_B -ee -edu.ee -gov.ee -riik.ee -lib.ee -med.ee -com.ee -pri.ee -aip.ee -org.ee -fie.ee - -// eg : https://en.wikipedia.org/wiki/.eg -eg -com.eg -edu.eg -eun.eg -gov.eg -mil.eg -name.eg -net.eg -org.eg -sci.eg - -// er : https://en.wikipedia.org/wiki/.er -*.er - -// es : https://www.nic.es/site_ingles/ingles/dominios/index.html -es -com.es -nom.es -org.es -gob.es -edu.es - -// et : https://en.wikipedia.org/wiki/.et -et -com.et -gov.et -org.et -edu.et -biz.et -name.et -info.et -net.et - -// eu : https://en.wikipedia.org/wiki/.eu -eu - -// fi : https://www.iana.org/domains/root/db/fi.html -fi -// aland.fi : https://www.iana.org/domains/root/db/ax.html -// This domain is being phased out in favor of .ax. As there are still many -// domains under aland.fi, we still keep it on the list until aland.fi is -// completely removed. -aland.fi - -// fj : http://domains.fj/ -// Submitted by registry 2020-02-11 -fj -ac.fj -biz.fj -com.fj -gov.fj -info.fj -mil.fj -name.fj -net.fj -org.fj -pro.fj - -// fk : https://en.wikipedia.org/wiki/.fk -*.fk - -// fm : https://en.wikipedia.org/wiki/.fm -com.fm -edu.fm -net.fm -org.fm -fm - -// fo : https://en.wikipedia.org/wiki/.fo -fo - -// fr : https://www.afnic.fr/ https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf -fr -asso.fr -com.fr -gouv.fr -nom.fr -prd.fr -tm.fr -// Other SLDs now selfmanaged out of AFNIC range. Former "domaines sectoriels", still registration suffixes -avoues.fr -cci.fr -greta.fr -huissier-justice.fr - -// ga : https://en.wikipedia.org/wiki/.ga -ga - -// gb : This registry is effectively dormant -// Submitted by registry -gb - -// gd : https://en.wikipedia.org/wiki/.gd -edu.gd -gov.gd -gd - -// ge : http://www.nic.net.ge/policy_en.pdf -ge -com.ge -edu.ge -gov.ge -org.ge -mil.ge -net.ge -pvt.ge - -// gf : https://en.wikipedia.org/wiki/.gf -gf - -// gg : http://www.channelisles.net/register-domains/ -// Confirmed by registry 2013-11-28 -gg -co.gg -net.gg -org.gg - -// gh : https://en.wikipedia.org/wiki/.gh -// see also: http://www.nic.gh/reg_now.php -// Although domains directly at second level are not possible at the moment, -// they have been possible for some time and may come back. -gh -com.gh -edu.gh -gov.gh -org.gh -mil.gh - -// gi : http://www.nic.gi/rules.html -gi -com.gi -ltd.gi -gov.gi -mod.gi -edu.gi -org.gi - -// gl : https://en.wikipedia.org/wiki/.gl -// http://nic.gl -gl -co.gl -com.gl -edu.gl -net.gl -org.gl - -// gm : http://www.nic.gm/htmlpages%5Cgm-policy.htm -gm - -// gn : http://psg.com/dns/gn/gn.txt -// Submitted by registry -gn -ac.gn -com.gn -edu.gn -gov.gn -org.gn -net.gn - -// gov : https://en.wikipedia.org/wiki/.gov -gov - -// gp : http://www.nic.gp/index.php?lang=en -gp -com.gp -net.gp -mobi.gp -edu.gp -org.gp -asso.gp - -// gq : https://en.wikipedia.org/wiki/.gq -gq - -// gr : https://grweb.ics.forth.gr/english/1617-B-2005.html -// Submitted by registry -gr -com.gr -edu.gr -net.gr -org.gr -gov.gr - -// gs : https://en.wikipedia.org/wiki/.gs -gs - -// gt : https://www.gt/sitio/registration_policy.php?lang=en -gt -com.gt -edu.gt -gob.gt -ind.gt -mil.gt -net.gt -org.gt - -// gu : http://gadao.gov.gu/register.html -// University of Guam : https://www.uog.edu -// Submitted by uognoc@triton.uog.edu -gu -com.gu -edu.gu -gov.gu -guam.gu -info.gu -net.gu -org.gu -web.gu - -// gw : https://en.wikipedia.org/wiki/.gw -// gw : https://nic.gw/regras/ -gw - -// gy : https://en.wikipedia.org/wiki/.gy -// http://registry.gy/ -gy -co.gy -com.gy -edu.gy -gov.gy -net.gy -org.gy - -// hk : https://www.hkirc.hk -// Submitted by registry -hk -com.hk -edu.hk -gov.hk -idv.hk -net.hk -org.hk -公司.hk -教育.hk -敎育.hk -政府.hk -個人.hk -个人.hk -箇人.hk -網络.hk -网络.hk -组織.hk -網絡.hk -网絡.hk -组织.hk -組織.hk -組织.hk - -// hm : https://en.wikipedia.org/wiki/.hm -hm - -// hn : http://www.nic.hn/politicas/ps02,,05.html -hn -com.hn -edu.hn -org.hn -net.hn -mil.hn -gob.hn - -// hr : http://www.dns.hr/documents/pdf/HRTLD-regulations.pdf -hr -iz.hr -from.hr -name.hr -com.hr - -// ht : http://www.nic.ht/info/charte.cfm -ht -com.ht -shop.ht -firm.ht -info.ht -adult.ht -net.ht -pro.ht -org.ht -med.ht -art.ht -coop.ht -pol.ht -asso.ht -edu.ht -rel.ht -gouv.ht -perso.ht - -// hu : http://www.domain.hu/domain/English/sld.html -// Confirmed by registry 2008-06-12 -hu -co.hu -info.hu -org.hu -priv.hu -sport.hu -tm.hu -2000.hu -agrar.hu -bolt.hu -casino.hu -city.hu -erotica.hu -erotika.hu -film.hu -forum.hu -games.hu -hotel.hu -ingatlan.hu -jogasz.hu -konyvelo.hu -lakas.hu -media.hu -news.hu -reklam.hu -sex.hu -shop.hu -suli.hu -szex.hu -tozsde.hu -utazas.hu -video.hu - -// id : https://pandi.id/en/domain/registration-requirements/ -id -ac.id -biz.id -co.id -desa.id -go.id -mil.id -my.id -net.id -or.id -ponpes.id -sch.id -web.id - -// ie : https://en.wikipedia.org/wiki/.ie -ie -gov.ie - -// il : http://www.isoc.org.il/domains/ -// see also: https://en.isoc.org.il/il-cctld/registration-rules -// ISOC-IL (operated by .il Registry) -il -ac.il -co.il -gov.il -idf.il -k12.il -muni.il -net.il -org.il -// xn--4dbrk0ce ("Israel", Hebrew) : IL -ישראל -// xn--4dbgdty6c.xn--4dbrk0ce. -אקדמיה.ישראל -// xn--5dbhl8d.xn--4dbrk0ce. -ישוב.ישראל -// xn--8dbq2a.xn--4dbrk0ce. -צהל.ישראל -// xn--hebda8b.xn--4dbrk0ce. -ממשל.ישראל - -// im : https://www.nic.im/ -// Submitted by registry -im -ac.im -co.im -com.im -ltd.co.im -net.im -org.im -plc.co.im -tt.im -tv.im - -// in : https://en.wikipedia.org/wiki/.in -// see also: https://registry.in/policies -// Please note, that nic.in is not an official eTLD, but used by most -// government institutions. -in -5g.in -6g.in -ac.in -ai.in -am.in -bihar.in -biz.in -business.in -ca.in -cn.in -co.in -com.in -coop.in -cs.in -delhi.in -dr.in -edu.in -er.in -firm.in -gen.in -gov.in -gujarat.in -ind.in -info.in -int.in -internet.in -io.in -me.in -mil.in -net.in -nic.in -org.in -pg.in -post.in -pro.in -res.in -travel.in -tv.in -uk.in -up.in -us.in - -// info : https://en.wikipedia.org/wiki/.info -info - -// int : https://en.wikipedia.org/wiki/.int -// Confirmed by registry 2008-06-18 -int -eu.int - -// io : http://www.nic.io/rules.htm -// list of other 2nd level tlds ? -io -com.io - -// iq : http://www.cmc.iq/english/iq/iqregister1.htm -iq -gov.iq -edu.iq -mil.iq -com.iq -org.iq -net.iq - -// ir : http://www.nic.ir/Terms_and_Conditions_ir,_Appendix_1_Domain_Rules -// Also see http://www.nic.ir/Internationalized_Domain_Names -// Two .ir entries added at request of , 2010-04-16 -ir -ac.ir -co.ir -gov.ir -id.ir -net.ir -org.ir -sch.ir -// xn--mgba3a4f16a.ir (.ir, Persian YEH) -ایران.ir -// xn--mgba3a4fra.ir (.ir, Arabic YEH) -ايران.ir - -// is : http://www.isnic.is/domain/rules.php -// Confirmed by registry 2008-12-06 -is -net.is -com.is -edu.is -gov.is -org.is -int.is - -// it : https://en.wikipedia.org/wiki/.it -it -gov.it -edu.it -// Reserved geo-names (regions and provinces): -// https://www.nic.it/sites/default/files/archivio/docs/Regulation_assignation_v7.1.pdf -// Regions -abr.it -abruzzo.it -aosta-valley.it -aostavalley.it -bas.it -basilicata.it -cal.it -calabria.it -cam.it -campania.it -emilia-romagna.it -emiliaromagna.it -emr.it -friuli-v-giulia.it -friuli-ve-giulia.it -friuli-vegiulia.it -friuli-venezia-giulia.it -friuli-veneziagiulia.it -friuli-vgiulia.it -friuliv-giulia.it -friulive-giulia.it -friulivegiulia.it -friulivenezia-giulia.it -friuliveneziagiulia.it -friulivgiulia.it -fvg.it -laz.it -lazio.it -lig.it -liguria.it -lom.it -lombardia.it -lombardy.it -lucania.it -mar.it -marche.it -mol.it -molise.it -piedmont.it -piemonte.it -pmn.it -pug.it -puglia.it -sar.it -sardegna.it -sardinia.it -sic.it -sicilia.it -sicily.it -taa.it -tos.it -toscana.it -trentin-sud-tirol.it -trentin-süd-tirol.it -trentin-sudtirol.it -trentin-südtirol.it -trentin-sued-tirol.it -trentin-suedtirol.it -trentino-a-adige.it -trentino-aadige.it -trentino-alto-adige.it -trentino-altoadige.it -trentino-s-tirol.it -trentino-stirol.it -trentino-sud-tirol.it -trentino-süd-tirol.it -trentino-sudtirol.it -trentino-südtirol.it -trentino-sued-tirol.it -trentino-suedtirol.it -trentino.it -trentinoa-adige.it -trentinoaadige.it -trentinoalto-adige.it -trentinoaltoadige.it -trentinos-tirol.it -trentinostirol.it -trentinosud-tirol.it -trentinosüd-tirol.it -trentinosudtirol.it -trentinosüdtirol.it -trentinosued-tirol.it -trentinosuedtirol.it -trentinsud-tirol.it -trentinsüd-tirol.it -trentinsudtirol.it -trentinsüdtirol.it -trentinsued-tirol.it -trentinsuedtirol.it -tuscany.it -umb.it -umbria.it -val-d-aosta.it -val-daosta.it -vald-aosta.it -valdaosta.it -valle-aosta.it -valle-d-aosta.it -valle-daosta.it -valleaosta.it -valled-aosta.it -valledaosta.it -vallee-aoste.it -vallée-aoste.it -vallee-d-aoste.it -vallée-d-aoste.it -valleeaoste.it -valléeaoste.it -valleedaoste.it -valléedaoste.it -vao.it -vda.it -ven.it -veneto.it -// Provinces -ag.it -agrigento.it -al.it -alessandria.it -alto-adige.it -altoadige.it -an.it -ancona.it -andria-barletta-trani.it -andria-trani-barletta.it -andriabarlettatrani.it -andriatranibarletta.it -ao.it -aosta.it -aoste.it -ap.it -aq.it -aquila.it -ar.it -arezzo.it -ascoli-piceno.it -ascolipiceno.it -asti.it -at.it -av.it -avellino.it -ba.it -balsan-sudtirol.it -balsan-südtirol.it -balsan-suedtirol.it -balsan.it -bari.it -barletta-trani-andria.it -barlettatraniandria.it -belluno.it -benevento.it -bergamo.it -bg.it -bi.it -biella.it -bl.it -bn.it -bo.it -bologna.it -bolzano-altoadige.it -bolzano.it -bozen-sudtirol.it -bozen-südtirol.it -bozen-suedtirol.it -bozen.it -br.it -brescia.it -brindisi.it -bs.it -bt.it -bulsan-sudtirol.it -bulsan-südtirol.it -bulsan-suedtirol.it -bulsan.it -bz.it -ca.it -cagliari.it -caltanissetta.it -campidano-medio.it -campidanomedio.it -campobasso.it -carbonia-iglesias.it -carboniaiglesias.it -carrara-massa.it -carraramassa.it -caserta.it -catania.it -catanzaro.it -cb.it -ce.it -cesena-forli.it -cesena-forlì.it -cesenaforli.it -cesenaforlì.it -ch.it -chieti.it -ci.it -cl.it -cn.it -co.it -como.it -cosenza.it -cr.it -cremona.it -crotone.it -cs.it -ct.it -cuneo.it -cz.it -dell-ogliastra.it -dellogliastra.it -en.it -enna.it -fc.it -fe.it -fermo.it -ferrara.it -fg.it -fi.it -firenze.it -florence.it -fm.it -foggia.it -forli-cesena.it -forlì-cesena.it -forlicesena.it -forlìcesena.it -fr.it -frosinone.it -ge.it -genoa.it -genova.it -go.it -gorizia.it -gr.it -grosseto.it -iglesias-carbonia.it -iglesiascarbonia.it -im.it -imperia.it -is.it -isernia.it -kr.it -la-spezia.it -laquila.it -laspezia.it -latina.it -lc.it -le.it -lecce.it -lecco.it -li.it -livorno.it -lo.it -lodi.it -lt.it -lu.it -lucca.it -macerata.it -mantova.it -massa-carrara.it -massacarrara.it -matera.it -mb.it -mc.it -me.it -medio-campidano.it -mediocampidano.it -messina.it -mi.it -milan.it -milano.it -mn.it -mo.it -modena.it -monza-brianza.it -monza-e-della-brianza.it -monza.it -monzabrianza.it -monzaebrianza.it -monzaedellabrianza.it -ms.it -mt.it -na.it -naples.it -napoli.it -no.it -novara.it -nu.it -nuoro.it -og.it -ogliastra.it -olbia-tempio.it -olbiatempio.it -or.it -oristano.it -ot.it -pa.it -padova.it -padua.it -palermo.it -parma.it -pavia.it -pc.it -pd.it -pe.it -perugia.it -pesaro-urbino.it -pesarourbino.it -pescara.it -pg.it -pi.it -piacenza.it -pisa.it -pistoia.it -pn.it -po.it -pordenone.it -potenza.it -pr.it -prato.it -pt.it -pu.it -pv.it -pz.it -ra.it -ragusa.it -ravenna.it -rc.it -re.it -reggio-calabria.it -reggio-emilia.it -reggiocalabria.it -reggioemilia.it -rg.it -ri.it -rieti.it -rimini.it -rm.it -rn.it -ro.it -roma.it -rome.it -rovigo.it -sa.it -salerno.it -sassari.it -savona.it -si.it -siena.it -siracusa.it -so.it -sondrio.it -sp.it -sr.it -ss.it -suedtirol.it -südtirol.it -sv.it -ta.it -taranto.it -te.it -tempio-olbia.it -tempioolbia.it -teramo.it -terni.it -tn.it -to.it -torino.it -tp.it -tr.it -trani-andria-barletta.it -trani-barletta-andria.it -traniandriabarletta.it -tranibarlettaandria.it -trapani.it -trento.it -treviso.it -trieste.it -ts.it -turin.it -tv.it -ud.it -udine.it -urbino-pesaro.it -urbinopesaro.it -va.it -varese.it -vb.it -vc.it -ve.it -venezia.it -venice.it -verbania.it -vercelli.it -verona.it -vi.it -vibo-valentia.it -vibovalentia.it -vicenza.it -viterbo.it -vr.it -vs.it -vt.it -vv.it - -// je : http://www.channelisles.net/register-domains/ -// Confirmed by registry 2013-11-28 -je -co.je -net.je -org.je - -// jm : http://www.com.jm/register.html -*.jm - -// jo : http://www.dns.jo/Registration_policy.aspx -jo -com.jo -org.jo -net.jo -edu.jo -sch.jo -gov.jo -mil.jo -name.jo - -// jobs : https://en.wikipedia.org/wiki/.jobs -jobs - -// jp : https://en.wikipedia.org/wiki/.jp -// http://jprs.co.jp/en/jpdomain.html -// Submitted by registry -jp -// jp organizational type names -ac.jp -ad.jp -co.jp -ed.jp -go.jp -gr.jp -lg.jp -ne.jp -or.jp -// jp prefecture type names -aichi.jp -akita.jp -aomori.jp -chiba.jp -ehime.jp -fukui.jp -fukuoka.jp -fukushima.jp -gifu.jp -gunma.jp -hiroshima.jp -hokkaido.jp -hyogo.jp -ibaraki.jp -ishikawa.jp -iwate.jp -kagawa.jp -kagoshima.jp -kanagawa.jp -kochi.jp -kumamoto.jp -kyoto.jp -mie.jp -miyagi.jp -miyazaki.jp -nagano.jp -nagasaki.jp -nara.jp -niigata.jp -oita.jp -okayama.jp -okinawa.jp -osaka.jp -saga.jp -saitama.jp -shiga.jp -shimane.jp -shizuoka.jp -tochigi.jp -tokushima.jp -tokyo.jp -tottori.jp -toyama.jp -wakayama.jp -yamagata.jp -yamaguchi.jp -yamanashi.jp -栃木.jp -愛知.jp -愛媛.jp -兵庫.jp -熊本.jp -茨城.jp -北海道.jp -千葉.jp -和歌山.jp -長崎.jp -長野.jp -新潟.jp -青森.jp -静岡.jp -東京.jp -石川.jp -埼玉.jp -三重.jp -京都.jp -佐賀.jp -大分.jp -大阪.jp -奈良.jp -宮城.jp -宮崎.jp -富山.jp -山口.jp -山形.jp -山梨.jp -岩手.jp -岐阜.jp -岡山.jp -島根.jp -広島.jp -徳島.jp -沖縄.jp -滋賀.jp -神奈川.jp -福井.jp -福岡.jp -福島.jp -秋田.jp -群馬.jp -香川.jp -高知.jp -鳥取.jp -鹿児島.jp -// jp geographic type names -// http://jprs.jp/doc/rule/saisoku-1.html -*.kawasaki.jp -*.kitakyushu.jp -*.kobe.jp -*.nagoya.jp -*.sapporo.jp -*.sendai.jp -*.yokohama.jp -!city.kawasaki.jp -!city.kitakyushu.jp -!city.kobe.jp -!city.nagoya.jp -!city.sapporo.jp -!city.sendai.jp -!city.yokohama.jp -// 4th level registration -aisai.aichi.jp -ama.aichi.jp -anjo.aichi.jp -asuke.aichi.jp -chiryu.aichi.jp -chita.aichi.jp -fuso.aichi.jp -gamagori.aichi.jp -handa.aichi.jp -hazu.aichi.jp -hekinan.aichi.jp -higashiura.aichi.jp -ichinomiya.aichi.jp -inazawa.aichi.jp -inuyama.aichi.jp -isshiki.aichi.jp -iwakura.aichi.jp -kanie.aichi.jp -kariya.aichi.jp -kasugai.aichi.jp -kira.aichi.jp -kiyosu.aichi.jp -komaki.aichi.jp -konan.aichi.jp -kota.aichi.jp -mihama.aichi.jp -miyoshi.aichi.jp -nishio.aichi.jp -nisshin.aichi.jp -obu.aichi.jp -oguchi.aichi.jp -oharu.aichi.jp -okazaki.aichi.jp -owariasahi.aichi.jp -seto.aichi.jp -shikatsu.aichi.jp -shinshiro.aichi.jp -shitara.aichi.jp -tahara.aichi.jp -takahama.aichi.jp -tobishima.aichi.jp -toei.aichi.jp -togo.aichi.jp -tokai.aichi.jp -tokoname.aichi.jp -toyoake.aichi.jp -toyohashi.aichi.jp -toyokawa.aichi.jp -toyone.aichi.jp -toyota.aichi.jp -tsushima.aichi.jp -yatomi.aichi.jp -akita.akita.jp -daisen.akita.jp -fujisato.akita.jp -gojome.akita.jp -hachirogata.akita.jp -happou.akita.jp -higashinaruse.akita.jp -honjo.akita.jp -honjyo.akita.jp -ikawa.akita.jp -kamikoani.akita.jp -kamioka.akita.jp -katagami.akita.jp -kazuno.akita.jp -kitaakita.akita.jp -kosaka.akita.jp -kyowa.akita.jp -misato.akita.jp -mitane.akita.jp -moriyoshi.akita.jp -nikaho.akita.jp -noshiro.akita.jp -odate.akita.jp -oga.akita.jp -ogata.akita.jp -semboku.akita.jp -yokote.akita.jp -yurihonjo.akita.jp -aomori.aomori.jp -gonohe.aomori.jp -hachinohe.aomori.jp -hashikami.aomori.jp -hiranai.aomori.jp -hirosaki.aomori.jp -itayanagi.aomori.jp -kuroishi.aomori.jp -misawa.aomori.jp -mutsu.aomori.jp -nakadomari.aomori.jp -noheji.aomori.jp -oirase.aomori.jp -owani.aomori.jp -rokunohe.aomori.jp -sannohe.aomori.jp -shichinohe.aomori.jp -shingo.aomori.jp -takko.aomori.jp -towada.aomori.jp -tsugaru.aomori.jp -tsuruta.aomori.jp -abiko.chiba.jp -asahi.chiba.jp -chonan.chiba.jp -chosei.chiba.jp -choshi.chiba.jp -chuo.chiba.jp -funabashi.chiba.jp -futtsu.chiba.jp -hanamigawa.chiba.jp -ichihara.chiba.jp -ichikawa.chiba.jp -ichinomiya.chiba.jp -inzai.chiba.jp -isumi.chiba.jp -kamagaya.chiba.jp -kamogawa.chiba.jp -kashiwa.chiba.jp -katori.chiba.jp -katsuura.chiba.jp -kimitsu.chiba.jp -kisarazu.chiba.jp -kozaki.chiba.jp -kujukuri.chiba.jp -kyonan.chiba.jp -matsudo.chiba.jp -midori.chiba.jp -mihama.chiba.jp -minamiboso.chiba.jp -mobara.chiba.jp -mutsuzawa.chiba.jp -nagara.chiba.jp -nagareyama.chiba.jp -narashino.chiba.jp -narita.chiba.jp -noda.chiba.jp -oamishirasato.chiba.jp -omigawa.chiba.jp -onjuku.chiba.jp -otaki.chiba.jp -sakae.chiba.jp -sakura.chiba.jp -shimofusa.chiba.jp -shirako.chiba.jp -shiroi.chiba.jp -shisui.chiba.jp -sodegaura.chiba.jp -sosa.chiba.jp -tako.chiba.jp -tateyama.chiba.jp -togane.chiba.jp -tohnosho.chiba.jp -tomisato.chiba.jp -urayasu.chiba.jp -yachimata.chiba.jp -yachiyo.chiba.jp -yokaichiba.chiba.jp -yokoshibahikari.chiba.jp -yotsukaido.chiba.jp -ainan.ehime.jp -honai.ehime.jp -ikata.ehime.jp -imabari.ehime.jp -iyo.ehime.jp -kamijima.ehime.jp -kihoku.ehime.jp -kumakogen.ehime.jp -masaki.ehime.jp -matsuno.ehime.jp -matsuyama.ehime.jp -namikata.ehime.jp -niihama.ehime.jp -ozu.ehime.jp -saijo.ehime.jp -seiyo.ehime.jp -shikokuchuo.ehime.jp -tobe.ehime.jp -toon.ehime.jp -uchiko.ehime.jp -uwajima.ehime.jp -yawatahama.ehime.jp -echizen.fukui.jp -eiheiji.fukui.jp -fukui.fukui.jp -ikeda.fukui.jp -katsuyama.fukui.jp -mihama.fukui.jp -minamiechizen.fukui.jp -obama.fukui.jp -ohi.fukui.jp -ono.fukui.jp -sabae.fukui.jp -sakai.fukui.jp -takahama.fukui.jp -tsuruga.fukui.jp -wakasa.fukui.jp -ashiya.fukuoka.jp -buzen.fukuoka.jp -chikugo.fukuoka.jp -chikuho.fukuoka.jp -chikujo.fukuoka.jp -chikushino.fukuoka.jp -chikuzen.fukuoka.jp -chuo.fukuoka.jp -dazaifu.fukuoka.jp -fukuchi.fukuoka.jp -hakata.fukuoka.jp -higashi.fukuoka.jp -hirokawa.fukuoka.jp -hisayama.fukuoka.jp -iizuka.fukuoka.jp -inatsuki.fukuoka.jp -kaho.fukuoka.jp -kasuga.fukuoka.jp -kasuya.fukuoka.jp -kawara.fukuoka.jp -keisen.fukuoka.jp -koga.fukuoka.jp -kurate.fukuoka.jp -kurogi.fukuoka.jp -kurume.fukuoka.jp -minami.fukuoka.jp -miyako.fukuoka.jp -miyama.fukuoka.jp -miyawaka.fukuoka.jp -mizumaki.fukuoka.jp -munakata.fukuoka.jp -nakagawa.fukuoka.jp -nakama.fukuoka.jp -nishi.fukuoka.jp -nogata.fukuoka.jp -ogori.fukuoka.jp -okagaki.fukuoka.jp -okawa.fukuoka.jp -oki.fukuoka.jp -omuta.fukuoka.jp -onga.fukuoka.jp -onojo.fukuoka.jp -oto.fukuoka.jp -saigawa.fukuoka.jp -sasaguri.fukuoka.jp -shingu.fukuoka.jp -shinyoshitomi.fukuoka.jp -shonai.fukuoka.jp -soeda.fukuoka.jp -sue.fukuoka.jp -tachiarai.fukuoka.jp -tagawa.fukuoka.jp -takata.fukuoka.jp -toho.fukuoka.jp -toyotsu.fukuoka.jp -tsuiki.fukuoka.jp -ukiha.fukuoka.jp -umi.fukuoka.jp -usui.fukuoka.jp -yamada.fukuoka.jp -yame.fukuoka.jp -yanagawa.fukuoka.jp -yukuhashi.fukuoka.jp -aizubange.fukushima.jp -aizumisato.fukushima.jp -aizuwakamatsu.fukushima.jp -asakawa.fukushima.jp -bandai.fukushima.jp -date.fukushima.jp -fukushima.fukushima.jp -furudono.fukushima.jp -futaba.fukushima.jp -hanawa.fukushima.jp -higashi.fukushima.jp -hirata.fukushima.jp -hirono.fukushima.jp -iitate.fukushima.jp -inawashiro.fukushima.jp -ishikawa.fukushima.jp -iwaki.fukushima.jp -izumizaki.fukushima.jp -kagamiishi.fukushima.jp -kaneyama.fukushima.jp -kawamata.fukushima.jp -kitakata.fukushima.jp -kitashiobara.fukushima.jp -koori.fukushima.jp -koriyama.fukushima.jp -kunimi.fukushima.jp -miharu.fukushima.jp -mishima.fukushima.jp -namie.fukushima.jp -nango.fukushima.jp -nishiaizu.fukushima.jp -nishigo.fukushima.jp -okuma.fukushima.jp -omotego.fukushima.jp -ono.fukushima.jp -otama.fukushima.jp -samegawa.fukushima.jp -shimogo.fukushima.jp -shirakawa.fukushima.jp -showa.fukushima.jp -soma.fukushima.jp -sukagawa.fukushima.jp -taishin.fukushima.jp -tamakawa.fukushima.jp -tanagura.fukushima.jp -tenei.fukushima.jp -yabuki.fukushima.jp -yamato.fukushima.jp -yamatsuri.fukushima.jp -yanaizu.fukushima.jp -yugawa.fukushima.jp -anpachi.gifu.jp -ena.gifu.jp -gifu.gifu.jp -ginan.gifu.jp -godo.gifu.jp -gujo.gifu.jp -hashima.gifu.jp -hichiso.gifu.jp -hida.gifu.jp -higashishirakawa.gifu.jp -ibigawa.gifu.jp -ikeda.gifu.jp -kakamigahara.gifu.jp -kani.gifu.jp -kasahara.gifu.jp -kasamatsu.gifu.jp -kawaue.gifu.jp -kitagata.gifu.jp -mino.gifu.jp -minokamo.gifu.jp -mitake.gifu.jp -mizunami.gifu.jp -motosu.gifu.jp -nakatsugawa.gifu.jp -ogaki.gifu.jp -sakahogi.gifu.jp -seki.gifu.jp -sekigahara.gifu.jp -shirakawa.gifu.jp -tajimi.gifu.jp -takayama.gifu.jp -tarui.gifu.jp -toki.gifu.jp -tomika.gifu.jp -wanouchi.gifu.jp -yamagata.gifu.jp -yaotsu.gifu.jp -yoro.gifu.jp -annaka.gunma.jp -chiyoda.gunma.jp -fujioka.gunma.jp -higashiagatsuma.gunma.jp -isesaki.gunma.jp -itakura.gunma.jp -kanna.gunma.jp -kanra.gunma.jp -katashina.gunma.jp -kawaba.gunma.jp -kiryu.gunma.jp -kusatsu.gunma.jp -maebashi.gunma.jp -meiwa.gunma.jp -midori.gunma.jp -minakami.gunma.jp -naganohara.gunma.jp -nakanojo.gunma.jp -nanmoku.gunma.jp -numata.gunma.jp -oizumi.gunma.jp -ora.gunma.jp -ota.gunma.jp -shibukawa.gunma.jp -shimonita.gunma.jp -shinto.gunma.jp -showa.gunma.jp -takasaki.gunma.jp -takayama.gunma.jp -tamamura.gunma.jp -tatebayashi.gunma.jp -tomioka.gunma.jp -tsukiyono.gunma.jp -tsumagoi.gunma.jp -ueno.gunma.jp -yoshioka.gunma.jp -asaminami.hiroshima.jp -daiwa.hiroshima.jp -etajima.hiroshima.jp -fuchu.hiroshima.jp -fukuyama.hiroshima.jp -hatsukaichi.hiroshima.jp -higashihiroshima.hiroshima.jp -hongo.hiroshima.jp -jinsekikogen.hiroshima.jp -kaita.hiroshima.jp -kui.hiroshima.jp -kumano.hiroshima.jp -kure.hiroshima.jp -mihara.hiroshima.jp -miyoshi.hiroshima.jp -naka.hiroshima.jp -onomichi.hiroshima.jp -osakikamijima.hiroshima.jp -otake.hiroshima.jp -saka.hiroshima.jp -sera.hiroshima.jp -seranishi.hiroshima.jp -shinichi.hiroshima.jp -shobara.hiroshima.jp -takehara.hiroshima.jp -abashiri.hokkaido.jp -abira.hokkaido.jp -aibetsu.hokkaido.jp -akabira.hokkaido.jp -akkeshi.hokkaido.jp -asahikawa.hokkaido.jp -ashibetsu.hokkaido.jp -ashoro.hokkaido.jp -assabu.hokkaido.jp -atsuma.hokkaido.jp -bibai.hokkaido.jp -biei.hokkaido.jp -bifuka.hokkaido.jp -bihoro.hokkaido.jp -biratori.hokkaido.jp -chippubetsu.hokkaido.jp -chitose.hokkaido.jp -date.hokkaido.jp -ebetsu.hokkaido.jp -embetsu.hokkaido.jp -eniwa.hokkaido.jp -erimo.hokkaido.jp -esan.hokkaido.jp -esashi.hokkaido.jp -fukagawa.hokkaido.jp -fukushima.hokkaido.jp -furano.hokkaido.jp -furubira.hokkaido.jp -haboro.hokkaido.jp -hakodate.hokkaido.jp -hamatonbetsu.hokkaido.jp -hidaka.hokkaido.jp -higashikagura.hokkaido.jp -higashikawa.hokkaido.jp -hiroo.hokkaido.jp -hokuryu.hokkaido.jp -hokuto.hokkaido.jp -honbetsu.hokkaido.jp -horokanai.hokkaido.jp -horonobe.hokkaido.jp -ikeda.hokkaido.jp -imakane.hokkaido.jp -ishikari.hokkaido.jp -iwamizawa.hokkaido.jp -iwanai.hokkaido.jp -kamifurano.hokkaido.jp -kamikawa.hokkaido.jp -kamishihoro.hokkaido.jp -kamisunagawa.hokkaido.jp -kamoenai.hokkaido.jp -kayabe.hokkaido.jp -kembuchi.hokkaido.jp -kikonai.hokkaido.jp -kimobetsu.hokkaido.jp -kitahiroshima.hokkaido.jp -kitami.hokkaido.jp -kiyosato.hokkaido.jp -koshimizu.hokkaido.jp -kunneppu.hokkaido.jp -kuriyama.hokkaido.jp -kuromatsunai.hokkaido.jp -kushiro.hokkaido.jp -kutchan.hokkaido.jp -kyowa.hokkaido.jp -mashike.hokkaido.jp -matsumae.hokkaido.jp -mikasa.hokkaido.jp -minamifurano.hokkaido.jp -mombetsu.hokkaido.jp -moseushi.hokkaido.jp -mukawa.hokkaido.jp -muroran.hokkaido.jp -naie.hokkaido.jp -nakagawa.hokkaido.jp -nakasatsunai.hokkaido.jp -nakatombetsu.hokkaido.jp -nanae.hokkaido.jp -nanporo.hokkaido.jp -nayoro.hokkaido.jp -nemuro.hokkaido.jp -niikappu.hokkaido.jp -niki.hokkaido.jp -nishiokoppe.hokkaido.jp -noboribetsu.hokkaido.jp -numata.hokkaido.jp -obihiro.hokkaido.jp -obira.hokkaido.jp -oketo.hokkaido.jp -okoppe.hokkaido.jp -otaru.hokkaido.jp -otobe.hokkaido.jp -otofuke.hokkaido.jp -otoineppu.hokkaido.jp -oumu.hokkaido.jp -ozora.hokkaido.jp -pippu.hokkaido.jp -rankoshi.hokkaido.jp -rebun.hokkaido.jp -rikubetsu.hokkaido.jp -rishiri.hokkaido.jp -rishirifuji.hokkaido.jp -saroma.hokkaido.jp -sarufutsu.hokkaido.jp -shakotan.hokkaido.jp -shari.hokkaido.jp -shibecha.hokkaido.jp -shibetsu.hokkaido.jp -shikabe.hokkaido.jp -shikaoi.hokkaido.jp -shimamaki.hokkaido.jp -shimizu.hokkaido.jp -shimokawa.hokkaido.jp -shinshinotsu.hokkaido.jp -shintoku.hokkaido.jp -shiranuka.hokkaido.jp -shiraoi.hokkaido.jp -shiriuchi.hokkaido.jp -sobetsu.hokkaido.jp -sunagawa.hokkaido.jp -taiki.hokkaido.jp -takasu.hokkaido.jp -takikawa.hokkaido.jp -takinoue.hokkaido.jp -teshikaga.hokkaido.jp -tobetsu.hokkaido.jp -tohma.hokkaido.jp -tomakomai.hokkaido.jp -tomari.hokkaido.jp -toya.hokkaido.jp -toyako.hokkaido.jp -toyotomi.hokkaido.jp -toyoura.hokkaido.jp -tsubetsu.hokkaido.jp -tsukigata.hokkaido.jp -urakawa.hokkaido.jp -urausu.hokkaido.jp -uryu.hokkaido.jp -utashinai.hokkaido.jp -wakkanai.hokkaido.jp -wassamu.hokkaido.jp -yakumo.hokkaido.jp -yoichi.hokkaido.jp -aioi.hyogo.jp -akashi.hyogo.jp -ako.hyogo.jp -amagasaki.hyogo.jp -aogaki.hyogo.jp -asago.hyogo.jp -ashiya.hyogo.jp -awaji.hyogo.jp -fukusaki.hyogo.jp -goshiki.hyogo.jp -harima.hyogo.jp -himeji.hyogo.jp -ichikawa.hyogo.jp -inagawa.hyogo.jp -itami.hyogo.jp -kakogawa.hyogo.jp -kamigori.hyogo.jp -kamikawa.hyogo.jp -kasai.hyogo.jp -kasuga.hyogo.jp -kawanishi.hyogo.jp -miki.hyogo.jp -minamiawaji.hyogo.jp -nishinomiya.hyogo.jp -nishiwaki.hyogo.jp -ono.hyogo.jp -sanda.hyogo.jp -sannan.hyogo.jp -sasayama.hyogo.jp -sayo.hyogo.jp -shingu.hyogo.jp -shinonsen.hyogo.jp -shiso.hyogo.jp -sumoto.hyogo.jp -taishi.hyogo.jp -taka.hyogo.jp -takarazuka.hyogo.jp -takasago.hyogo.jp -takino.hyogo.jp -tamba.hyogo.jp -tatsuno.hyogo.jp -toyooka.hyogo.jp -yabu.hyogo.jp -yashiro.hyogo.jp -yoka.hyogo.jp -yokawa.hyogo.jp -ami.ibaraki.jp -asahi.ibaraki.jp -bando.ibaraki.jp -chikusei.ibaraki.jp -daigo.ibaraki.jp -fujishiro.ibaraki.jp -hitachi.ibaraki.jp -hitachinaka.ibaraki.jp -hitachiomiya.ibaraki.jp -hitachiota.ibaraki.jp -ibaraki.ibaraki.jp -ina.ibaraki.jp -inashiki.ibaraki.jp -itako.ibaraki.jp -iwama.ibaraki.jp -joso.ibaraki.jp -kamisu.ibaraki.jp -kasama.ibaraki.jp -kashima.ibaraki.jp -kasumigaura.ibaraki.jp -koga.ibaraki.jp -miho.ibaraki.jp -mito.ibaraki.jp -moriya.ibaraki.jp -naka.ibaraki.jp -namegata.ibaraki.jp -oarai.ibaraki.jp -ogawa.ibaraki.jp -omitama.ibaraki.jp -ryugasaki.ibaraki.jp -sakai.ibaraki.jp -sakuragawa.ibaraki.jp -shimodate.ibaraki.jp -shimotsuma.ibaraki.jp -shirosato.ibaraki.jp -sowa.ibaraki.jp -suifu.ibaraki.jp -takahagi.ibaraki.jp -tamatsukuri.ibaraki.jp -tokai.ibaraki.jp -tomobe.ibaraki.jp -tone.ibaraki.jp -toride.ibaraki.jp -tsuchiura.ibaraki.jp -tsukuba.ibaraki.jp -uchihara.ibaraki.jp -ushiku.ibaraki.jp -yachiyo.ibaraki.jp -yamagata.ibaraki.jp -yawara.ibaraki.jp -yuki.ibaraki.jp -anamizu.ishikawa.jp -hakui.ishikawa.jp -hakusan.ishikawa.jp -kaga.ishikawa.jp -kahoku.ishikawa.jp -kanazawa.ishikawa.jp -kawakita.ishikawa.jp -komatsu.ishikawa.jp -nakanoto.ishikawa.jp -nanao.ishikawa.jp -nomi.ishikawa.jp -nonoichi.ishikawa.jp -noto.ishikawa.jp -shika.ishikawa.jp -suzu.ishikawa.jp -tsubata.ishikawa.jp -tsurugi.ishikawa.jp -uchinada.ishikawa.jp -wajima.ishikawa.jp -fudai.iwate.jp -fujisawa.iwate.jp -hanamaki.iwate.jp -hiraizumi.iwate.jp -hirono.iwate.jp -ichinohe.iwate.jp -ichinoseki.iwate.jp -iwaizumi.iwate.jp -iwate.iwate.jp -joboji.iwate.jp -kamaishi.iwate.jp -kanegasaki.iwate.jp -karumai.iwate.jp -kawai.iwate.jp -kitakami.iwate.jp -kuji.iwate.jp -kunohe.iwate.jp -kuzumaki.iwate.jp -miyako.iwate.jp -mizusawa.iwate.jp -morioka.iwate.jp -ninohe.iwate.jp -noda.iwate.jp -ofunato.iwate.jp -oshu.iwate.jp -otsuchi.iwate.jp -rikuzentakata.iwate.jp -shiwa.iwate.jp -shizukuishi.iwate.jp -sumita.iwate.jp -tanohata.iwate.jp -tono.iwate.jp -yahaba.iwate.jp -yamada.iwate.jp -ayagawa.kagawa.jp -higashikagawa.kagawa.jp -kanonji.kagawa.jp -kotohira.kagawa.jp -manno.kagawa.jp -marugame.kagawa.jp -mitoyo.kagawa.jp -naoshima.kagawa.jp -sanuki.kagawa.jp -tadotsu.kagawa.jp -takamatsu.kagawa.jp -tonosho.kagawa.jp -uchinomi.kagawa.jp -utazu.kagawa.jp -zentsuji.kagawa.jp -akune.kagoshima.jp -amami.kagoshima.jp -hioki.kagoshima.jp -isa.kagoshima.jp -isen.kagoshima.jp -izumi.kagoshima.jp -kagoshima.kagoshima.jp -kanoya.kagoshima.jp -kawanabe.kagoshima.jp -kinko.kagoshima.jp -kouyama.kagoshima.jp -makurazaki.kagoshima.jp -matsumoto.kagoshima.jp -minamitane.kagoshima.jp -nakatane.kagoshima.jp -nishinoomote.kagoshima.jp -satsumasendai.kagoshima.jp -soo.kagoshima.jp -tarumizu.kagoshima.jp -yusui.kagoshima.jp -aikawa.kanagawa.jp -atsugi.kanagawa.jp -ayase.kanagawa.jp -chigasaki.kanagawa.jp -ebina.kanagawa.jp -fujisawa.kanagawa.jp -hadano.kanagawa.jp -hakone.kanagawa.jp -hiratsuka.kanagawa.jp -isehara.kanagawa.jp -kaisei.kanagawa.jp -kamakura.kanagawa.jp -kiyokawa.kanagawa.jp -matsuda.kanagawa.jp -minamiashigara.kanagawa.jp -miura.kanagawa.jp -nakai.kanagawa.jp -ninomiya.kanagawa.jp -odawara.kanagawa.jp -oi.kanagawa.jp -oiso.kanagawa.jp -sagamihara.kanagawa.jp -samukawa.kanagawa.jp -tsukui.kanagawa.jp -yamakita.kanagawa.jp -yamato.kanagawa.jp -yokosuka.kanagawa.jp -yugawara.kanagawa.jp -zama.kanagawa.jp -zushi.kanagawa.jp -aki.kochi.jp -geisei.kochi.jp -hidaka.kochi.jp -higashitsuno.kochi.jp -ino.kochi.jp -kagami.kochi.jp -kami.kochi.jp -kitagawa.kochi.jp -kochi.kochi.jp -mihara.kochi.jp -motoyama.kochi.jp -muroto.kochi.jp -nahari.kochi.jp -nakamura.kochi.jp -nankoku.kochi.jp -nishitosa.kochi.jp -niyodogawa.kochi.jp -ochi.kochi.jp -okawa.kochi.jp -otoyo.kochi.jp -otsuki.kochi.jp -sakawa.kochi.jp -sukumo.kochi.jp -susaki.kochi.jp -tosa.kochi.jp -tosashimizu.kochi.jp -toyo.kochi.jp -tsuno.kochi.jp -umaji.kochi.jp -yasuda.kochi.jp -yusuhara.kochi.jp -amakusa.kumamoto.jp -arao.kumamoto.jp -aso.kumamoto.jp -choyo.kumamoto.jp -gyokuto.kumamoto.jp -kamiamakusa.kumamoto.jp -kikuchi.kumamoto.jp -kumamoto.kumamoto.jp -mashiki.kumamoto.jp -mifune.kumamoto.jp -minamata.kumamoto.jp -minamioguni.kumamoto.jp -nagasu.kumamoto.jp -nishihara.kumamoto.jp -oguni.kumamoto.jp -ozu.kumamoto.jp -sumoto.kumamoto.jp -takamori.kumamoto.jp -uki.kumamoto.jp -uto.kumamoto.jp -yamaga.kumamoto.jp -yamato.kumamoto.jp -yatsushiro.kumamoto.jp -ayabe.kyoto.jp -fukuchiyama.kyoto.jp -higashiyama.kyoto.jp -ide.kyoto.jp -ine.kyoto.jp -joyo.kyoto.jp -kameoka.kyoto.jp -kamo.kyoto.jp -kita.kyoto.jp -kizu.kyoto.jp -kumiyama.kyoto.jp -kyotamba.kyoto.jp -kyotanabe.kyoto.jp -kyotango.kyoto.jp -maizuru.kyoto.jp -minami.kyoto.jp -minamiyamashiro.kyoto.jp -miyazu.kyoto.jp -muko.kyoto.jp -nagaokakyo.kyoto.jp -nakagyo.kyoto.jp -nantan.kyoto.jp -oyamazaki.kyoto.jp -sakyo.kyoto.jp -seika.kyoto.jp -tanabe.kyoto.jp -uji.kyoto.jp -ujitawara.kyoto.jp -wazuka.kyoto.jp -yamashina.kyoto.jp -yawata.kyoto.jp -asahi.mie.jp -inabe.mie.jp -ise.mie.jp -kameyama.mie.jp -kawagoe.mie.jp -kiho.mie.jp -kisosaki.mie.jp -kiwa.mie.jp -komono.mie.jp -kumano.mie.jp -kuwana.mie.jp -matsusaka.mie.jp -meiwa.mie.jp -mihama.mie.jp -minamiise.mie.jp -misugi.mie.jp -miyama.mie.jp -nabari.mie.jp -shima.mie.jp -suzuka.mie.jp -tado.mie.jp -taiki.mie.jp -taki.mie.jp -tamaki.mie.jp -toba.mie.jp -tsu.mie.jp -udono.mie.jp -ureshino.mie.jp -watarai.mie.jp -yokkaichi.mie.jp -furukawa.miyagi.jp -higashimatsushima.miyagi.jp -ishinomaki.miyagi.jp -iwanuma.miyagi.jp -kakuda.miyagi.jp -kami.miyagi.jp -kawasaki.miyagi.jp -marumori.miyagi.jp -matsushima.miyagi.jp -minamisanriku.miyagi.jp -misato.miyagi.jp -murata.miyagi.jp -natori.miyagi.jp -ogawara.miyagi.jp -ohira.miyagi.jp -onagawa.miyagi.jp -osaki.miyagi.jp -rifu.miyagi.jp -semine.miyagi.jp -shibata.miyagi.jp -shichikashuku.miyagi.jp -shikama.miyagi.jp -shiogama.miyagi.jp -shiroishi.miyagi.jp -tagajo.miyagi.jp -taiwa.miyagi.jp -tome.miyagi.jp -tomiya.miyagi.jp -wakuya.miyagi.jp -watari.miyagi.jp -yamamoto.miyagi.jp -zao.miyagi.jp -aya.miyazaki.jp -ebino.miyazaki.jp -gokase.miyazaki.jp -hyuga.miyazaki.jp -kadogawa.miyazaki.jp -kawaminami.miyazaki.jp -kijo.miyazaki.jp -kitagawa.miyazaki.jp -kitakata.miyazaki.jp -kitaura.miyazaki.jp -kobayashi.miyazaki.jp -kunitomi.miyazaki.jp -kushima.miyazaki.jp -mimata.miyazaki.jp -miyakonojo.miyazaki.jp -miyazaki.miyazaki.jp -morotsuka.miyazaki.jp -nichinan.miyazaki.jp -nishimera.miyazaki.jp -nobeoka.miyazaki.jp -saito.miyazaki.jp -shiiba.miyazaki.jp -shintomi.miyazaki.jp -takaharu.miyazaki.jp -takanabe.miyazaki.jp -takazaki.miyazaki.jp -tsuno.miyazaki.jp -achi.nagano.jp -agematsu.nagano.jp -anan.nagano.jp -aoki.nagano.jp -asahi.nagano.jp -azumino.nagano.jp -chikuhoku.nagano.jp -chikuma.nagano.jp -chino.nagano.jp -fujimi.nagano.jp -hakuba.nagano.jp -hara.nagano.jp -hiraya.nagano.jp -iida.nagano.jp -iijima.nagano.jp -iiyama.nagano.jp -iizuna.nagano.jp -ikeda.nagano.jp -ikusaka.nagano.jp -ina.nagano.jp -karuizawa.nagano.jp -kawakami.nagano.jp -kiso.nagano.jp -kisofukushima.nagano.jp -kitaaiki.nagano.jp -komagane.nagano.jp -komoro.nagano.jp -matsukawa.nagano.jp -matsumoto.nagano.jp -miasa.nagano.jp -minamiaiki.nagano.jp -minamimaki.nagano.jp -minamiminowa.nagano.jp -minowa.nagano.jp -miyada.nagano.jp -miyota.nagano.jp -mochizuki.nagano.jp -nagano.nagano.jp -nagawa.nagano.jp -nagiso.nagano.jp -nakagawa.nagano.jp -nakano.nagano.jp -nozawaonsen.nagano.jp -obuse.nagano.jp -ogawa.nagano.jp -okaya.nagano.jp -omachi.nagano.jp -omi.nagano.jp -ookuwa.nagano.jp -ooshika.nagano.jp -otaki.nagano.jp -otari.nagano.jp -sakae.nagano.jp -sakaki.nagano.jp -saku.nagano.jp -sakuho.nagano.jp -shimosuwa.nagano.jp -shinanomachi.nagano.jp -shiojiri.nagano.jp -suwa.nagano.jp -suzaka.nagano.jp -takagi.nagano.jp -takamori.nagano.jp -takayama.nagano.jp -tateshina.nagano.jp -tatsuno.nagano.jp -togakushi.nagano.jp -togura.nagano.jp -tomi.nagano.jp -ueda.nagano.jp -wada.nagano.jp -yamagata.nagano.jp -yamanouchi.nagano.jp -yasaka.nagano.jp -yasuoka.nagano.jp -chijiwa.nagasaki.jp -futsu.nagasaki.jp -goto.nagasaki.jp -hasami.nagasaki.jp -hirado.nagasaki.jp -iki.nagasaki.jp -isahaya.nagasaki.jp -kawatana.nagasaki.jp -kuchinotsu.nagasaki.jp -matsuura.nagasaki.jp -nagasaki.nagasaki.jp -obama.nagasaki.jp -omura.nagasaki.jp -oseto.nagasaki.jp -saikai.nagasaki.jp -sasebo.nagasaki.jp -seihi.nagasaki.jp -shimabara.nagasaki.jp -shinkamigoto.nagasaki.jp -togitsu.nagasaki.jp -tsushima.nagasaki.jp -unzen.nagasaki.jp -ando.nara.jp -gose.nara.jp -heguri.nara.jp -higashiyoshino.nara.jp -ikaruga.nara.jp -ikoma.nara.jp -kamikitayama.nara.jp -kanmaki.nara.jp -kashiba.nara.jp -kashihara.nara.jp -katsuragi.nara.jp -kawai.nara.jp -kawakami.nara.jp -kawanishi.nara.jp -koryo.nara.jp -kurotaki.nara.jp -mitsue.nara.jp -miyake.nara.jp -nara.nara.jp -nosegawa.nara.jp -oji.nara.jp -ouda.nara.jp -oyodo.nara.jp -sakurai.nara.jp -sango.nara.jp -shimoichi.nara.jp -shimokitayama.nara.jp -shinjo.nara.jp -soni.nara.jp -takatori.nara.jp -tawaramoto.nara.jp -tenkawa.nara.jp -tenri.nara.jp -uda.nara.jp -yamatokoriyama.nara.jp -yamatotakada.nara.jp -yamazoe.nara.jp -yoshino.nara.jp -aga.niigata.jp -agano.niigata.jp -gosen.niigata.jp -itoigawa.niigata.jp -izumozaki.niigata.jp -joetsu.niigata.jp -kamo.niigata.jp -kariwa.niigata.jp -kashiwazaki.niigata.jp -minamiuonuma.niigata.jp -mitsuke.niigata.jp -muika.niigata.jp -murakami.niigata.jp -myoko.niigata.jp -nagaoka.niigata.jp -niigata.niigata.jp -ojiya.niigata.jp -omi.niigata.jp -sado.niigata.jp -sanjo.niigata.jp -seiro.niigata.jp -seirou.niigata.jp -sekikawa.niigata.jp -shibata.niigata.jp -tagami.niigata.jp -tainai.niigata.jp -tochio.niigata.jp -tokamachi.niigata.jp -tsubame.niigata.jp -tsunan.niigata.jp -uonuma.niigata.jp -yahiko.niigata.jp -yoita.niigata.jp -yuzawa.niigata.jp -beppu.oita.jp -bungoono.oita.jp -bungotakada.oita.jp -hasama.oita.jp -hiji.oita.jp -himeshima.oita.jp -hita.oita.jp -kamitsue.oita.jp -kokonoe.oita.jp -kuju.oita.jp -kunisaki.oita.jp -kusu.oita.jp -oita.oita.jp -saiki.oita.jp -taketa.oita.jp -tsukumi.oita.jp -usa.oita.jp -usuki.oita.jp -yufu.oita.jp -akaiwa.okayama.jp -asakuchi.okayama.jp -bizen.okayama.jp -hayashima.okayama.jp -ibara.okayama.jp -kagamino.okayama.jp -kasaoka.okayama.jp -kibichuo.okayama.jp -kumenan.okayama.jp -kurashiki.okayama.jp -maniwa.okayama.jp -misaki.okayama.jp -nagi.okayama.jp -niimi.okayama.jp -nishiawakura.okayama.jp -okayama.okayama.jp -satosho.okayama.jp -setouchi.okayama.jp -shinjo.okayama.jp -shoo.okayama.jp -soja.okayama.jp -takahashi.okayama.jp -tamano.okayama.jp -tsuyama.okayama.jp -wake.okayama.jp -yakage.okayama.jp -aguni.okinawa.jp -ginowan.okinawa.jp -ginoza.okinawa.jp -gushikami.okinawa.jp -haebaru.okinawa.jp -higashi.okinawa.jp -hirara.okinawa.jp -iheya.okinawa.jp -ishigaki.okinawa.jp -ishikawa.okinawa.jp -itoman.okinawa.jp -izena.okinawa.jp -kadena.okinawa.jp -kin.okinawa.jp -kitadaito.okinawa.jp -kitanakagusuku.okinawa.jp -kumejima.okinawa.jp -kunigami.okinawa.jp -minamidaito.okinawa.jp -motobu.okinawa.jp -nago.okinawa.jp -naha.okinawa.jp -nakagusuku.okinawa.jp -nakijin.okinawa.jp -nanjo.okinawa.jp -nishihara.okinawa.jp -ogimi.okinawa.jp -okinawa.okinawa.jp -onna.okinawa.jp -shimoji.okinawa.jp -taketomi.okinawa.jp -tarama.okinawa.jp -tokashiki.okinawa.jp -tomigusuku.okinawa.jp -tonaki.okinawa.jp -urasoe.okinawa.jp -uruma.okinawa.jp -yaese.okinawa.jp -yomitan.okinawa.jp -yonabaru.okinawa.jp -yonaguni.okinawa.jp -zamami.okinawa.jp -abeno.osaka.jp -chihayaakasaka.osaka.jp -chuo.osaka.jp -daito.osaka.jp -fujiidera.osaka.jp -habikino.osaka.jp -hannan.osaka.jp -higashiosaka.osaka.jp -higashisumiyoshi.osaka.jp -higashiyodogawa.osaka.jp -hirakata.osaka.jp -ibaraki.osaka.jp -ikeda.osaka.jp -izumi.osaka.jp -izumiotsu.osaka.jp -izumisano.osaka.jp -kadoma.osaka.jp -kaizuka.osaka.jp -kanan.osaka.jp -kashiwara.osaka.jp -katano.osaka.jp -kawachinagano.osaka.jp -kishiwada.osaka.jp -kita.osaka.jp -kumatori.osaka.jp -matsubara.osaka.jp -minato.osaka.jp -minoh.osaka.jp -misaki.osaka.jp -moriguchi.osaka.jp -neyagawa.osaka.jp -nishi.osaka.jp -nose.osaka.jp -osakasayama.osaka.jp -sakai.osaka.jp -sayama.osaka.jp -sennan.osaka.jp -settsu.osaka.jp -shijonawate.osaka.jp -shimamoto.osaka.jp -suita.osaka.jp -tadaoka.osaka.jp -taishi.osaka.jp -tajiri.osaka.jp -takaishi.osaka.jp -takatsuki.osaka.jp -tondabayashi.osaka.jp -toyonaka.osaka.jp -toyono.osaka.jp -yao.osaka.jp -ariake.saga.jp -arita.saga.jp -fukudomi.saga.jp -genkai.saga.jp -hamatama.saga.jp -hizen.saga.jp -imari.saga.jp -kamimine.saga.jp -kanzaki.saga.jp -karatsu.saga.jp -kashima.saga.jp -kitagata.saga.jp -kitahata.saga.jp -kiyama.saga.jp -kouhoku.saga.jp -kyuragi.saga.jp -nishiarita.saga.jp -ogi.saga.jp -omachi.saga.jp -ouchi.saga.jp -saga.saga.jp -shiroishi.saga.jp -taku.saga.jp -tara.saga.jp -tosu.saga.jp -yoshinogari.saga.jp -arakawa.saitama.jp -asaka.saitama.jp -chichibu.saitama.jp -fujimi.saitama.jp -fujimino.saitama.jp -fukaya.saitama.jp -hanno.saitama.jp -hanyu.saitama.jp -hasuda.saitama.jp -hatogaya.saitama.jp -hatoyama.saitama.jp -hidaka.saitama.jp -higashichichibu.saitama.jp -higashimatsuyama.saitama.jp -honjo.saitama.jp -ina.saitama.jp -iruma.saitama.jp -iwatsuki.saitama.jp -kamiizumi.saitama.jp -kamikawa.saitama.jp -kamisato.saitama.jp -kasukabe.saitama.jp -kawagoe.saitama.jp -kawaguchi.saitama.jp -kawajima.saitama.jp -kazo.saitama.jp -kitamoto.saitama.jp -koshigaya.saitama.jp -kounosu.saitama.jp -kuki.saitama.jp -kumagaya.saitama.jp -matsubushi.saitama.jp -minano.saitama.jp -misato.saitama.jp -miyashiro.saitama.jp -miyoshi.saitama.jp -moroyama.saitama.jp -nagatoro.saitama.jp -namegawa.saitama.jp -niiza.saitama.jp -ogano.saitama.jp -ogawa.saitama.jp -ogose.saitama.jp -okegawa.saitama.jp -omiya.saitama.jp -otaki.saitama.jp -ranzan.saitama.jp -ryokami.saitama.jp -saitama.saitama.jp -sakado.saitama.jp -satte.saitama.jp -sayama.saitama.jp -shiki.saitama.jp -shiraoka.saitama.jp -soka.saitama.jp -sugito.saitama.jp -toda.saitama.jp -tokigawa.saitama.jp -tokorozawa.saitama.jp -tsurugashima.saitama.jp -urawa.saitama.jp -warabi.saitama.jp -yashio.saitama.jp -yokoze.saitama.jp -yono.saitama.jp -yorii.saitama.jp -yoshida.saitama.jp -yoshikawa.saitama.jp -yoshimi.saitama.jp -aisho.shiga.jp -gamo.shiga.jp -higashiomi.shiga.jp -hikone.shiga.jp -koka.shiga.jp -konan.shiga.jp -kosei.shiga.jp -koto.shiga.jp -kusatsu.shiga.jp -maibara.shiga.jp -moriyama.shiga.jp -nagahama.shiga.jp -nishiazai.shiga.jp -notogawa.shiga.jp -omihachiman.shiga.jp -otsu.shiga.jp -ritto.shiga.jp -ryuoh.shiga.jp -takashima.shiga.jp -takatsuki.shiga.jp -torahime.shiga.jp -toyosato.shiga.jp -yasu.shiga.jp -akagi.shimane.jp -ama.shimane.jp -gotsu.shimane.jp -hamada.shimane.jp -higashiizumo.shimane.jp -hikawa.shimane.jp -hikimi.shimane.jp -izumo.shimane.jp -kakinoki.shimane.jp -masuda.shimane.jp -matsue.shimane.jp -misato.shimane.jp -nishinoshima.shimane.jp -ohda.shimane.jp -okinoshima.shimane.jp -okuizumo.shimane.jp -shimane.shimane.jp -tamayu.shimane.jp -tsuwano.shimane.jp -unnan.shimane.jp -yakumo.shimane.jp -yasugi.shimane.jp -yatsuka.shimane.jp -arai.shizuoka.jp -atami.shizuoka.jp -fuji.shizuoka.jp -fujieda.shizuoka.jp -fujikawa.shizuoka.jp -fujinomiya.shizuoka.jp -fukuroi.shizuoka.jp -gotemba.shizuoka.jp -haibara.shizuoka.jp -hamamatsu.shizuoka.jp -higashiizu.shizuoka.jp -ito.shizuoka.jp -iwata.shizuoka.jp -izu.shizuoka.jp -izunokuni.shizuoka.jp -kakegawa.shizuoka.jp -kannami.shizuoka.jp -kawanehon.shizuoka.jp -kawazu.shizuoka.jp -kikugawa.shizuoka.jp -kosai.shizuoka.jp -makinohara.shizuoka.jp -matsuzaki.shizuoka.jp -minamiizu.shizuoka.jp -mishima.shizuoka.jp -morimachi.shizuoka.jp -nishiizu.shizuoka.jp -numazu.shizuoka.jp -omaezaki.shizuoka.jp -shimada.shizuoka.jp -shimizu.shizuoka.jp -shimoda.shizuoka.jp -shizuoka.shizuoka.jp -susono.shizuoka.jp -yaizu.shizuoka.jp -yoshida.shizuoka.jp -ashikaga.tochigi.jp -bato.tochigi.jp -haga.tochigi.jp -ichikai.tochigi.jp -iwafune.tochigi.jp -kaminokawa.tochigi.jp -kanuma.tochigi.jp -karasuyama.tochigi.jp -kuroiso.tochigi.jp -mashiko.tochigi.jp -mibu.tochigi.jp -moka.tochigi.jp -motegi.tochigi.jp -nasu.tochigi.jp -nasushiobara.tochigi.jp -nikko.tochigi.jp -nishikata.tochigi.jp -nogi.tochigi.jp -ohira.tochigi.jp -ohtawara.tochigi.jp -oyama.tochigi.jp -sakura.tochigi.jp -sano.tochigi.jp -shimotsuke.tochigi.jp -shioya.tochigi.jp -takanezawa.tochigi.jp -tochigi.tochigi.jp -tsuga.tochigi.jp -ujiie.tochigi.jp -utsunomiya.tochigi.jp -yaita.tochigi.jp -aizumi.tokushima.jp -anan.tokushima.jp -ichiba.tokushima.jp -itano.tokushima.jp -kainan.tokushima.jp -komatsushima.tokushima.jp -matsushige.tokushima.jp -mima.tokushima.jp -minami.tokushima.jp -miyoshi.tokushima.jp -mugi.tokushima.jp -nakagawa.tokushima.jp -naruto.tokushima.jp -sanagochi.tokushima.jp -shishikui.tokushima.jp -tokushima.tokushima.jp -wajiki.tokushima.jp -adachi.tokyo.jp -akiruno.tokyo.jp -akishima.tokyo.jp -aogashima.tokyo.jp -arakawa.tokyo.jp -bunkyo.tokyo.jp -chiyoda.tokyo.jp -chofu.tokyo.jp -chuo.tokyo.jp -edogawa.tokyo.jp -fuchu.tokyo.jp -fussa.tokyo.jp -hachijo.tokyo.jp -hachioji.tokyo.jp -hamura.tokyo.jp -higashikurume.tokyo.jp -higashimurayama.tokyo.jp -higashiyamato.tokyo.jp -hino.tokyo.jp -hinode.tokyo.jp -hinohara.tokyo.jp -inagi.tokyo.jp -itabashi.tokyo.jp -katsushika.tokyo.jp -kita.tokyo.jp -kiyose.tokyo.jp -kodaira.tokyo.jp -koganei.tokyo.jp -kokubunji.tokyo.jp -komae.tokyo.jp -koto.tokyo.jp -kouzushima.tokyo.jp -kunitachi.tokyo.jp -machida.tokyo.jp -meguro.tokyo.jp -minato.tokyo.jp -mitaka.tokyo.jp -mizuho.tokyo.jp -musashimurayama.tokyo.jp -musashino.tokyo.jp -nakano.tokyo.jp -nerima.tokyo.jp -ogasawara.tokyo.jp -okutama.tokyo.jp -ome.tokyo.jp -oshima.tokyo.jp -ota.tokyo.jp -setagaya.tokyo.jp -shibuya.tokyo.jp -shinagawa.tokyo.jp -shinjuku.tokyo.jp -suginami.tokyo.jp -sumida.tokyo.jp -tachikawa.tokyo.jp -taito.tokyo.jp -tama.tokyo.jp -toshima.tokyo.jp -chizu.tottori.jp -hino.tottori.jp -kawahara.tottori.jp -koge.tottori.jp -kotoura.tottori.jp -misasa.tottori.jp -nanbu.tottori.jp -nichinan.tottori.jp -sakaiminato.tottori.jp -tottori.tottori.jp -wakasa.tottori.jp -yazu.tottori.jp -yonago.tottori.jp -asahi.toyama.jp -fuchu.toyama.jp -fukumitsu.toyama.jp -funahashi.toyama.jp -himi.toyama.jp -imizu.toyama.jp -inami.toyama.jp -johana.toyama.jp -kamiichi.toyama.jp -kurobe.toyama.jp -nakaniikawa.toyama.jp -namerikawa.toyama.jp -nanto.toyama.jp -nyuzen.toyama.jp -oyabe.toyama.jp -taira.toyama.jp -takaoka.toyama.jp -tateyama.toyama.jp -toga.toyama.jp -tonami.toyama.jp -toyama.toyama.jp -unazuki.toyama.jp -uozu.toyama.jp -yamada.toyama.jp -arida.wakayama.jp -aridagawa.wakayama.jp -gobo.wakayama.jp -hashimoto.wakayama.jp -hidaka.wakayama.jp -hirogawa.wakayama.jp -inami.wakayama.jp -iwade.wakayama.jp -kainan.wakayama.jp -kamitonda.wakayama.jp -katsuragi.wakayama.jp -kimino.wakayama.jp -kinokawa.wakayama.jp -kitayama.wakayama.jp -koya.wakayama.jp -koza.wakayama.jp -kozagawa.wakayama.jp -kudoyama.wakayama.jp -kushimoto.wakayama.jp -mihama.wakayama.jp -misato.wakayama.jp -nachikatsuura.wakayama.jp -shingu.wakayama.jp -shirahama.wakayama.jp -taiji.wakayama.jp -tanabe.wakayama.jp -wakayama.wakayama.jp -yuasa.wakayama.jp -yura.wakayama.jp -asahi.yamagata.jp -funagata.yamagata.jp -higashine.yamagata.jp -iide.yamagata.jp -kahoku.yamagata.jp -kaminoyama.yamagata.jp -kaneyama.yamagata.jp -kawanishi.yamagata.jp -mamurogawa.yamagata.jp -mikawa.yamagata.jp -murayama.yamagata.jp -nagai.yamagata.jp -nakayama.yamagata.jp -nanyo.yamagata.jp -nishikawa.yamagata.jp -obanazawa.yamagata.jp -oe.yamagata.jp -oguni.yamagata.jp -ohkura.yamagata.jp -oishida.yamagata.jp -sagae.yamagata.jp -sakata.yamagata.jp -sakegawa.yamagata.jp -shinjo.yamagata.jp -shirataka.yamagata.jp -shonai.yamagata.jp -takahata.yamagata.jp -tendo.yamagata.jp -tozawa.yamagata.jp -tsuruoka.yamagata.jp -yamagata.yamagata.jp -yamanobe.yamagata.jp -yonezawa.yamagata.jp -yuza.yamagata.jp -abu.yamaguchi.jp -hagi.yamaguchi.jp -hikari.yamaguchi.jp -hofu.yamaguchi.jp -iwakuni.yamaguchi.jp -kudamatsu.yamaguchi.jp -mitou.yamaguchi.jp -nagato.yamaguchi.jp -oshima.yamaguchi.jp -shimonoseki.yamaguchi.jp -shunan.yamaguchi.jp -tabuse.yamaguchi.jp -tokuyama.yamaguchi.jp -toyota.yamaguchi.jp -ube.yamaguchi.jp -yuu.yamaguchi.jp -chuo.yamanashi.jp -doshi.yamanashi.jp -fuefuki.yamanashi.jp -fujikawa.yamanashi.jp -fujikawaguchiko.yamanashi.jp -fujiyoshida.yamanashi.jp -hayakawa.yamanashi.jp -hokuto.yamanashi.jp -ichikawamisato.yamanashi.jp -kai.yamanashi.jp -kofu.yamanashi.jp -koshu.yamanashi.jp -kosuge.yamanashi.jp -minami-alps.yamanashi.jp -minobu.yamanashi.jp -nakamichi.yamanashi.jp -nanbu.yamanashi.jp -narusawa.yamanashi.jp -nirasaki.yamanashi.jp -nishikatsura.yamanashi.jp -oshino.yamanashi.jp -otsuki.yamanashi.jp -showa.yamanashi.jp -tabayama.yamanashi.jp -tsuru.yamanashi.jp -uenohara.yamanashi.jp -yamanakako.yamanashi.jp -yamanashi.yamanashi.jp - -// ke : http://www.kenic.or.ke/index.php/en/ke-domains/ke-domains -ke -ac.ke -co.ke -go.ke -info.ke -me.ke -mobi.ke -ne.ke -or.ke -sc.ke - -// kg : http://www.domain.kg/dmn_n.html -kg -org.kg -net.kg -com.kg -edu.kg -gov.kg -mil.kg - -// kh : http://www.mptc.gov.kh/dns_registration.htm -*.kh - -// ki : http://www.ki/dns/index.html -ki -edu.ki -biz.ki -net.ki -org.ki -gov.ki -info.ki -com.ki - -// km : https://en.wikipedia.org/wiki/.km -// http://www.domaine.km/documents/charte.doc -km -org.km -nom.km -gov.km -prd.km -tm.km -edu.km -mil.km -ass.km -com.km -// These are only mentioned as proposed suggestions at domaine.km, but -// https://en.wikipedia.org/wiki/.km says they're available for registration: -coop.km -asso.km -presse.km -medecin.km -notaires.km -pharmaciens.km -veterinaire.km -gouv.km - -// kn : https://en.wikipedia.org/wiki/.kn -// http://www.dot.kn/domainRules.html -kn -net.kn -org.kn -edu.kn -gov.kn - -// kp : http://www.kcce.kp/en_index.php -kp -com.kp -edu.kp -gov.kp -org.kp -rep.kp -tra.kp - -// kr : https://en.wikipedia.org/wiki/.kr -// see also: http://domain.nida.or.kr/eng/registration.jsp -kr -ac.kr -co.kr -es.kr -go.kr -hs.kr -kg.kr -mil.kr -ms.kr -ne.kr -or.kr -pe.kr -re.kr -sc.kr -// kr geographical names -busan.kr -chungbuk.kr -chungnam.kr -daegu.kr -daejeon.kr -gangwon.kr -gwangju.kr -gyeongbuk.kr -gyeonggi.kr -gyeongnam.kr -incheon.kr -jeju.kr -jeonbuk.kr -jeonnam.kr -seoul.kr -ulsan.kr - -// kw : https://www.nic.kw/policies/ -// Confirmed by registry -kw -com.kw -edu.kw -emb.kw -gov.kw -ind.kw -net.kw -org.kw - -// ky : http://www.icta.ky/da_ky_reg_dom.php -// Confirmed by registry 2008-06-17 -ky -com.ky -edu.ky -net.ky -org.ky - -// kz : https://en.wikipedia.org/wiki/.kz -// see also: http://www.nic.kz/rules/index.jsp -kz -org.kz -edu.kz -net.kz -gov.kz -mil.kz -com.kz - -// la : https://en.wikipedia.org/wiki/.la -// Submitted by registry -la -int.la -net.la -info.la -edu.la -gov.la -per.la -com.la -org.la - -// lb : https://en.wikipedia.org/wiki/.lb -// Submitted by registry -lb -com.lb -edu.lb -gov.lb -net.lb -org.lb - -// lc : https://en.wikipedia.org/wiki/.lc -// see also: http://www.nic.lc/rules.htm -lc -com.lc -net.lc -co.lc -org.lc -edu.lc -gov.lc - -// li : https://en.wikipedia.org/wiki/.li -li - -// lk : https://www.nic.lk/index.php/domain-registration/lk-domain-naming-structure -lk -gov.lk -sch.lk -net.lk -int.lk -com.lk -org.lk -edu.lk -ngo.lk -soc.lk -web.lk -ltd.lk -assn.lk -grp.lk -hotel.lk -ac.lk - -// lr : http://psg.com/dns/lr/lr.txt -// Submitted by registry -lr -com.lr -edu.lr -gov.lr -org.lr -net.lr - -// ls : http://www.nic.ls/ -// Confirmed by registry -ls -ac.ls -biz.ls -co.ls -edu.ls -gov.ls -info.ls -net.ls -org.ls -sc.ls - -// lt : https://en.wikipedia.org/wiki/.lt -lt -// gov.lt : http://www.gov.lt/index_en.php -gov.lt - -// lu : http://www.dns.lu/en/ -lu - -// lv : http://www.nic.lv/DNS/En/generic.php -lv -com.lv -edu.lv -gov.lv -org.lv -mil.lv -id.lv -net.lv -asn.lv -conf.lv - -// ly : http://www.nic.ly/regulations.php -ly -com.ly -net.ly -gov.ly -plc.ly -edu.ly -sch.ly -med.ly -org.ly -id.ly - -// ma : https://en.wikipedia.org/wiki/.ma -// http://www.anrt.ma/fr/admin/download/upload/file_fr782.pdf -ma -co.ma -net.ma -gov.ma -org.ma -ac.ma -press.ma - -// mc : http://www.nic.mc/ -mc -tm.mc -asso.mc - -// md : https://en.wikipedia.org/wiki/.md -md - -// me : https://en.wikipedia.org/wiki/.me -me -co.me -net.me -org.me -edu.me -ac.me -gov.me -its.me -priv.me - -// mg : http://nic.mg/nicmg/?page_id=39 -mg -org.mg -nom.mg -gov.mg -prd.mg -tm.mg -edu.mg -mil.mg -com.mg -co.mg - -// mh : https://en.wikipedia.org/wiki/.mh -mh - -// mil : https://en.wikipedia.org/wiki/.mil -mil - -// mk : https://en.wikipedia.org/wiki/.mk -// see also: http://dns.marnet.net.mk/postapka.php -mk -com.mk -org.mk -net.mk -edu.mk -gov.mk -inf.mk -name.mk - -// ml : http://www.gobin.info/domainname/ml-template.doc -// see also: https://en.wikipedia.org/wiki/.ml -ml -com.ml -edu.ml -gouv.ml -gov.ml -net.ml -org.ml -presse.ml - -// mm : https://en.wikipedia.org/wiki/.mm -*.mm - -// mn : https://en.wikipedia.org/wiki/.mn -mn -gov.mn -edu.mn -org.mn - -// mo : http://www.monic.net.mo/ -mo -com.mo -net.mo -org.mo -edu.mo -gov.mo - -// mobi : https://en.wikipedia.org/wiki/.mobi -mobi - -// mp : http://www.dot.mp/ -// Confirmed by registry 2008-06-17 -mp - -// mq : https://en.wikipedia.org/wiki/.mq -mq - -// mr : https://en.wikipedia.org/wiki/.mr -mr -gov.mr - -// ms : http://www.nic.ms/pdf/MS_Domain_Name_Rules.pdf -ms -com.ms -edu.ms -gov.ms -net.ms -org.ms - -// mt : https://www.nic.org.mt/go/policy -// Submitted by registry -mt -com.mt -edu.mt -net.mt -org.mt - -// mu : https://en.wikipedia.org/wiki/.mu -mu -com.mu -net.mu -org.mu -gov.mu -ac.mu -co.mu -or.mu - -// museum : https://welcome.museum/wp-content/uploads/2018/05/20180525-Registration-Policy-MUSEUM-EN_VF-2.pdf https://welcome.museum/buy-your-dot-museum-2/ -museum - -// mv : https://en.wikipedia.org/wiki/.mv -// "mv" included because, contra Wikipedia, google.mv exists. -mv -aero.mv -biz.mv -com.mv -coop.mv -edu.mv -gov.mv -info.mv -int.mv -mil.mv -museum.mv -name.mv -net.mv -org.mv -pro.mv - -// mw : http://www.registrar.mw/ -mw -ac.mw -biz.mw -co.mw -com.mw -coop.mw -edu.mw -gov.mw -int.mw -museum.mw -net.mw -org.mw - -// mx : http://www.nic.mx/ -// Submitted by registry -mx -com.mx -org.mx -gob.mx -edu.mx -net.mx - -// my : http://www.mynic.my/ -// Available strings: https://mynic.my/resources/domains/buying-a-domain/ -my -biz.my -com.my -edu.my -gov.my -mil.my -name.my -net.my -org.my - -// mz : http://www.uem.mz/ -// Submitted by registry -mz -ac.mz -adv.mz -co.mz -edu.mz -gov.mz -mil.mz -net.mz -org.mz - -// na : http://www.na-nic.com.na/ -// http://www.info.na/domain/ -na -info.na -pro.na -name.na -school.na -or.na -dr.na -us.na -mx.na -ca.na -in.na -cc.na -tv.na -ws.na -mobi.na -co.na -com.na -org.na - -// name : has 2nd-level tlds, but there's no list of them -name - -// nc : http://www.cctld.nc/ -nc -asso.nc -nom.nc - -// ne : https://en.wikipedia.org/wiki/.ne -ne - -// net : https://en.wikipedia.org/wiki/.net -net - -// nf : https://en.wikipedia.org/wiki/.nf -nf -com.nf -net.nf -per.nf -rec.nf -web.nf -arts.nf -firm.nf -info.nf -other.nf -store.nf - -// ng : http://www.nira.org.ng/index.php/join-us/register-ng-domain/189-nira-slds -ng -com.ng -edu.ng -gov.ng -i.ng -mil.ng -mobi.ng -name.ng -net.ng -org.ng -sch.ng - -// ni : http://www.nic.ni/ -ni -ac.ni -biz.ni -co.ni -com.ni -edu.ni -gob.ni -in.ni -info.ni -int.ni -mil.ni -net.ni -nom.ni -org.ni -web.ni - -// nl : https://en.wikipedia.org/wiki/.nl -// https://www.sidn.nl/ -// ccTLD for the Netherlands -nl - -// no : https://www.norid.no/en/om-domenenavn/regelverk-for-no/ -// Norid geographical second level domains : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-b/ -// Norid category second level domains : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-c/ -// Norid category second-level domains managed by parties other than Norid : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-d/ -// RSS feed: https://teknisk.norid.no/en/feed/ -no -// Norid category second level domains : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-c/ -fhs.no -vgs.no -fylkesbibl.no -folkebibl.no -museum.no -idrett.no -priv.no -// Norid category second-level domains managed by parties other than Norid : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-d/ -mil.no -stat.no -dep.no -kommune.no -herad.no -// Norid geographical second level domains : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-b/ -// counties -aa.no -ah.no -bu.no -fm.no -hl.no -hm.no -jan-mayen.no -mr.no -nl.no -nt.no -of.no -ol.no -oslo.no -rl.no -sf.no -st.no -svalbard.no -tm.no -tr.no -va.no -vf.no -// primary and lower secondary schools per county -gs.aa.no -gs.ah.no -gs.bu.no -gs.fm.no -gs.hl.no -gs.hm.no -gs.jan-mayen.no -gs.mr.no -gs.nl.no -gs.nt.no -gs.of.no -gs.ol.no -gs.oslo.no -gs.rl.no -gs.sf.no -gs.st.no -gs.svalbard.no -gs.tm.no -gs.tr.no -gs.va.no -gs.vf.no -// cities -akrehamn.no -åkrehamn.no -algard.no -ålgård.no -arna.no -brumunddal.no -bryne.no -bronnoysund.no -brønnøysund.no -drobak.no -drøbak.no -egersund.no -fetsund.no -floro.no -florø.no -fredrikstad.no -hokksund.no -honefoss.no -hønefoss.no -jessheim.no -jorpeland.no -jørpeland.no -kirkenes.no -kopervik.no -krokstadelva.no -langevag.no -langevåg.no -leirvik.no -mjondalen.no -mjøndalen.no -mo-i-rana.no -mosjoen.no -mosjøen.no -nesoddtangen.no -orkanger.no -osoyro.no -osøyro.no -raholt.no -råholt.no -sandnessjoen.no -sandnessjøen.no -skedsmokorset.no -slattum.no -spjelkavik.no -stathelle.no -stavern.no -stjordalshalsen.no -stjørdalshalsen.no -tananger.no -tranby.no -vossevangen.no -// communities -afjord.no -åfjord.no -agdenes.no -al.no -ål.no -alesund.no -ålesund.no -alstahaug.no -alta.no -áltá.no -alaheadju.no -álaheadju.no -alvdal.no -amli.no -åmli.no -amot.no -åmot.no -andebu.no -andoy.no -andøy.no -andasuolo.no -ardal.no -årdal.no -aremark.no -arendal.no -ås.no -aseral.no -åseral.no -asker.no -askim.no -askvoll.no -askoy.no -askøy.no -asnes.no -åsnes.no -audnedaln.no -aukra.no -aure.no -aurland.no -aurskog-holand.no -aurskog-høland.no -austevoll.no -austrheim.no -averoy.no -averøy.no -balestrand.no -ballangen.no -balat.no -bálát.no -balsfjord.no -bahccavuotna.no -báhccavuotna.no -bamble.no -bardu.no -beardu.no -beiarn.no -bajddar.no -bájddar.no -baidar.no -báidár.no -berg.no -bergen.no -berlevag.no -berlevåg.no -bearalvahki.no -bearalváhki.no -bindal.no -birkenes.no -bjarkoy.no -bjarkøy.no -bjerkreim.no -bjugn.no -bodo.no -bodø.no -badaddja.no -bådåddjå.no -budejju.no -bokn.no -bremanger.no -bronnoy.no -brønnøy.no -bygland.no -bykle.no -barum.no -bærum.no -bo.telemark.no -bø.telemark.no -bo.nordland.no -bø.nordland.no -bievat.no -bievát.no -bomlo.no -bømlo.no -batsfjord.no -båtsfjord.no -bahcavuotna.no -báhcavuotna.no -dovre.no -drammen.no -drangedal.no -dyroy.no -dyrøy.no -donna.no -dønna.no -eid.no -eidfjord.no -eidsberg.no -eidskog.no -eidsvoll.no -eigersund.no -elverum.no -enebakk.no -engerdal.no -etne.no -etnedal.no -evenes.no -evenassi.no -evenášši.no -evje-og-hornnes.no -farsund.no -fauske.no -fuossko.no -fuoisku.no -fedje.no -fet.no -finnoy.no -finnøy.no -fitjar.no -fjaler.no -fjell.no -flakstad.no -flatanger.no -flekkefjord.no -flesberg.no -flora.no -fla.no -flå.no -folldal.no -forsand.no -fosnes.no -frei.no -frogn.no -froland.no -frosta.no -frana.no -fræna.no -froya.no -frøya.no -fusa.no -fyresdal.no -forde.no -førde.no -gamvik.no -gangaviika.no -gáŋgaviika.no -gaular.no -gausdal.no -gildeskal.no -gildeskål.no -giske.no -gjemnes.no -gjerdrum.no -gjerstad.no -gjesdal.no -gjovik.no -gjøvik.no -gloppen.no -gol.no -gran.no -grane.no -granvin.no -gratangen.no -grimstad.no -grong.no -kraanghke.no -kråanghke.no -grue.no -gulen.no -hadsel.no -halden.no -halsa.no -hamar.no -hamaroy.no -habmer.no -hábmer.no -hapmir.no -hápmir.no -hammerfest.no -hammarfeasta.no -hámmárfeasta.no -haram.no -hareid.no -harstad.no -hasvik.no -aknoluokta.no -ákŋoluokta.no -hattfjelldal.no -aarborte.no -haugesund.no -hemne.no -hemnes.no -hemsedal.no -heroy.more-og-romsdal.no -herøy.møre-og-romsdal.no -heroy.nordland.no -herøy.nordland.no -hitra.no -hjartdal.no -hjelmeland.no -hobol.no -hobøl.no -hof.no -hol.no -hole.no -holmestrand.no -holtalen.no -holtålen.no -hornindal.no -horten.no -hurdal.no -hurum.no -hvaler.no -hyllestad.no -hagebostad.no -hægebostad.no -hoyanger.no -høyanger.no -hoylandet.no -høylandet.no -ha.no -hå.no -ibestad.no -inderoy.no -inderøy.no -iveland.no -jevnaker.no -jondal.no -jolster.no -jølster.no -karasjok.no -karasjohka.no -kárášjohka.no -karlsoy.no -galsa.no -gálsá.no -karmoy.no -karmøy.no -kautokeino.no -guovdageaidnu.no -klepp.no -klabu.no -klæbu.no -kongsberg.no -kongsvinger.no -kragero.no -kragerø.no -kristiansand.no -kristiansund.no -krodsherad.no -krødsherad.no -kvalsund.no -rahkkeravju.no -ráhkkerávju.no -kvam.no -kvinesdal.no -kvinnherad.no -kviteseid.no -kvitsoy.no -kvitsøy.no -kvafjord.no -kvæfjord.no -giehtavuoatna.no -kvanangen.no -kvænangen.no -navuotna.no -návuotna.no -kafjord.no -kåfjord.no -gaivuotna.no -gáivuotna.no -larvik.no -lavangen.no -lavagis.no -loabat.no -loabát.no -lebesby.no -davvesiida.no -leikanger.no -leirfjord.no -leka.no -leksvik.no -lenvik.no -leangaviika.no -leaŋgaviika.no -lesja.no -levanger.no -lier.no -lierne.no -lillehammer.no -lillesand.no -lindesnes.no -lindas.no -lindås.no -lom.no -loppa.no -lahppi.no -láhppi.no -lund.no -lunner.no -luroy.no -lurøy.no -luster.no -lyngdal.no -lyngen.no -ivgu.no -lardal.no -lerdal.no -lærdal.no -lodingen.no -lødingen.no -lorenskog.no -lørenskog.no -loten.no -løten.no -malvik.no -masoy.no -måsøy.no -muosat.no -muosát.no -mandal.no -marker.no -marnardal.no -masfjorden.no -meland.no -meldal.no -melhus.no -meloy.no -meløy.no -meraker.no -meråker.no -moareke.no -moåreke.no -midsund.no -midtre-gauldal.no -modalen.no -modum.no -molde.no -moskenes.no -moss.no -mosvik.no -malselv.no -målselv.no -malatvuopmi.no -málatvuopmi.no -namdalseid.no -aejrie.no -namsos.no -namsskogan.no -naamesjevuemie.no -nååmesjevuemie.no -laakesvuemie.no -nannestad.no -narvik.no -narviika.no -naustdal.no -nedre-eiker.no -nes.akershus.no -nes.buskerud.no -nesna.no -nesodden.no -nesseby.no -unjarga.no -unjárga.no -nesset.no -nissedal.no -nittedal.no -nord-aurdal.no -nord-fron.no -nord-odal.no -norddal.no -nordkapp.no -davvenjarga.no -davvenjárga.no -nordre-land.no -nordreisa.no -raisa.no -ráisa.no -nore-og-uvdal.no -notodden.no -naroy.no -nærøy.no -notteroy.no -nøtterøy.no -odda.no -oksnes.no -øksnes.no -oppdal.no -oppegard.no -oppegård.no -orkdal.no -orland.no -ørland.no -orskog.no -ørskog.no -orsta.no -ørsta.no -os.hedmark.no -os.hordaland.no -osen.no -osteroy.no -osterøy.no -ostre-toten.no -østre-toten.no -overhalla.no -ovre-eiker.no -øvre-eiker.no -oyer.no -øyer.no -oygarden.no -øygarden.no -oystre-slidre.no -øystre-slidre.no -porsanger.no -porsangu.no -porsáŋgu.no -porsgrunn.no -radoy.no -radøy.no -rakkestad.no -rana.no -ruovat.no -randaberg.no -rauma.no -rendalen.no -rennebu.no -rennesoy.no -rennesøy.no -rindal.no -ringebu.no -ringerike.no -ringsaker.no -rissa.no -risor.no -risør.no -roan.no -rollag.no -rygge.no -ralingen.no -rælingen.no -rodoy.no -rødøy.no -romskog.no -rømskog.no -roros.no -røros.no -rost.no -røst.no -royken.no -røyken.no -royrvik.no -røyrvik.no -rade.no -råde.no -salangen.no -siellak.no -saltdal.no -salat.no -sálát.no -sálat.no -samnanger.no -sande.more-og-romsdal.no -sande.møre-og-romsdal.no -sande.vestfold.no -sandefjord.no -sandnes.no -sandoy.no -sandøy.no -sarpsborg.no -sauda.no -sauherad.no -sel.no -selbu.no -selje.no -seljord.no -sigdal.no -siljan.no -sirdal.no -skaun.no -skedsmo.no -ski.no -skien.no -skiptvet.no -skjervoy.no -skjervøy.no -skierva.no -skiervá.no -skjak.no -skjåk.no -skodje.no -skanland.no -skånland.no -skanit.no -skánit.no -smola.no -smøla.no -snillfjord.no -snasa.no -snåsa.no -snoasa.no -snaase.no -snåase.no -sogndal.no -sokndal.no -sola.no -solund.no -songdalen.no -sortland.no -spydeberg.no -stange.no -stavanger.no -steigen.no -steinkjer.no -stjordal.no -stjørdal.no -stokke.no -stor-elvdal.no -stord.no -stordal.no -storfjord.no -omasvuotna.no -strand.no -stranda.no -stryn.no -sula.no -suldal.no -sund.no -sunndal.no -surnadal.no -sveio.no -svelvik.no -sykkylven.no -sogne.no -søgne.no -somna.no -sømna.no -sondre-land.no -søndre-land.no -sor-aurdal.no -sør-aurdal.no -sor-fron.no -sør-fron.no -sor-odal.no -sør-odal.no -sor-varanger.no -sør-varanger.no -matta-varjjat.no -mátta-várjjat.no -sorfold.no -sørfold.no -sorreisa.no -sørreisa.no -sorum.no -sørum.no -tana.no -deatnu.no -time.no -tingvoll.no -tinn.no -tjeldsund.no -dielddanuorri.no -tjome.no -tjøme.no -tokke.no -tolga.no -torsken.no -tranoy.no -tranøy.no -tromso.no -tromsø.no -tromsa.no -romsa.no -trondheim.no -troandin.no -trysil.no -trana.no -træna.no -trogstad.no -trøgstad.no -tvedestrand.no -tydal.no -tynset.no -tysfjord.no -divtasvuodna.no -divttasvuotna.no -tysnes.no -tysvar.no -tysvær.no -tonsberg.no -tønsberg.no -ullensaker.no -ullensvang.no -ulvik.no -utsira.no -vadso.no -vadsø.no -cahcesuolo.no -čáhcesuolo.no -vaksdal.no -valle.no -vang.no -vanylven.no -vardo.no -vardø.no -varggat.no -várggát.no -vefsn.no -vaapste.no -vega.no -vegarshei.no -vegårshei.no -vennesla.no -verdal.no -verran.no -vestby.no -vestnes.no -vestre-slidre.no -vestre-toten.no -vestvagoy.no -vestvågøy.no -vevelstad.no -vik.no -vikna.no -vindafjord.no -volda.no -voss.no -varoy.no -værøy.no -vagan.no -vågan.no -voagat.no -vagsoy.no -vågsøy.no -vaga.no -vågå.no -valer.ostfold.no -våler.østfold.no -valer.hedmark.no -våler.hedmark.no - -// np : http://www.mos.com.np/register.html -*.np - -// nr : http://cenpac.net.nr/dns/index.html -// Submitted by registry -nr -biz.nr -info.nr -gov.nr -edu.nr -org.nr -net.nr -com.nr - -// nu : https://en.wikipedia.org/wiki/.nu -nu - -// nz : https://en.wikipedia.org/wiki/.nz -// Submitted by registry -nz -ac.nz -co.nz -cri.nz -geek.nz -gen.nz -govt.nz -health.nz -iwi.nz -kiwi.nz -maori.nz -mil.nz -māori.nz -net.nz -org.nz -parliament.nz -school.nz - -// om : https://en.wikipedia.org/wiki/.om -om -co.om -com.om -edu.om -gov.om -med.om -museum.om -net.om -org.om -pro.om - -// onion : https://tools.ietf.org/html/rfc7686 -onion - -// org : https://en.wikipedia.org/wiki/.org -org - -// pa : http://www.nic.pa/ -// Some additional second level "domains" resolve directly as hostnames, such as -// pannet.pa, so we add a rule for "pa". -pa -ac.pa -gob.pa -com.pa -org.pa -sld.pa -edu.pa -net.pa -ing.pa -abo.pa -med.pa -nom.pa - -// pe : https://www.nic.pe/InformeFinalComision.pdf -pe -edu.pe -gob.pe -nom.pe -mil.pe -org.pe -com.pe -net.pe - -// pf : http://www.gobin.info/domainname/formulaire-pf.pdf -pf -com.pf -org.pf -edu.pf - -// pg : https://en.wikipedia.org/wiki/.pg -*.pg - -// ph : http://www.domains.ph/FAQ2.asp -// Submitted by registry -ph -com.ph -net.ph -org.ph -gov.ph -edu.ph -ngo.ph -mil.ph -i.ph - -// pk : http://pk5.pknic.net.pk/pk5/msgNamepk.PK -pk -com.pk -net.pk -edu.pk -org.pk -fam.pk -biz.pk -web.pk -gov.pk -gob.pk -gok.pk -gon.pk -gop.pk -gos.pk -info.pk - -// pl http://www.dns.pl/english/index.html -// Submitted by registry -pl -com.pl -net.pl -org.pl -// pl functional domains (http://www.dns.pl/english/index.html) -aid.pl -agro.pl -atm.pl -auto.pl -biz.pl -edu.pl -gmina.pl -gsm.pl -info.pl -mail.pl -miasta.pl -media.pl -mil.pl -nieruchomosci.pl -nom.pl -pc.pl -powiat.pl -priv.pl -realestate.pl -rel.pl -sex.pl -shop.pl -sklep.pl -sos.pl -szkola.pl -targi.pl -tm.pl -tourism.pl -travel.pl -turystyka.pl -// Government domains -gov.pl -ap.gov.pl -griw.gov.pl -ic.gov.pl -is.gov.pl -kmpsp.gov.pl -konsulat.gov.pl -kppsp.gov.pl -kwp.gov.pl -kwpsp.gov.pl -mup.gov.pl -mw.gov.pl -oia.gov.pl -oirm.gov.pl -oke.gov.pl -oow.gov.pl -oschr.gov.pl -oum.gov.pl -pa.gov.pl -pinb.gov.pl -piw.gov.pl -po.gov.pl -pr.gov.pl -psp.gov.pl -psse.gov.pl -pup.gov.pl -rzgw.gov.pl -sa.gov.pl -sdn.gov.pl -sko.gov.pl -so.gov.pl -sr.gov.pl -starostwo.gov.pl -ug.gov.pl -ugim.gov.pl -um.gov.pl -umig.gov.pl -upow.gov.pl -uppo.gov.pl -us.gov.pl -uw.gov.pl -uzs.gov.pl -wif.gov.pl -wiih.gov.pl -winb.gov.pl -wios.gov.pl -witd.gov.pl -wiw.gov.pl -wkz.gov.pl -wsa.gov.pl -wskr.gov.pl -wsse.gov.pl -wuoz.gov.pl -wzmiuw.gov.pl -zp.gov.pl -zpisdn.gov.pl -// pl regional domains (http://www.dns.pl/english/index.html) -augustow.pl -babia-gora.pl -bedzin.pl -beskidy.pl -bialowieza.pl -bialystok.pl -bielawa.pl -bieszczady.pl -boleslawiec.pl -bydgoszcz.pl -bytom.pl -cieszyn.pl -czeladz.pl -czest.pl -dlugoleka.pl -elblag.pl -elk.pl -glogow.pl -gniezno.pl -gorlice.pl -grajewo.pl -ilawa.pl -jaworzno.pl -jelenia-gora.pl -jgora.pl -kalisz.pl -kazimierz-dolny.pl -karpacz.pl -kartuzy.pl -kaszuby.pl -katowice.pl -kepno.pl -ketrzyn.pl -klodzko.pl -kobierzyce.pl -kolobrzeg.pl -konin.pl -konskowola.pl -kutno.pl -lapy.pl -lebork.pl -legnica.pl -lezajsk.pl -limanowa.pl -lomza.pl -lowicz.pl -lubin.pl -lukow.pl -malbork.pl -malopolska.pl -mazowsze.pl -mazury.pl -mielec.pl -mielno.pl -mragowo.pl -naklo.pl -nowaruda.pl -nysa.pl -olawa.pl -olecko.pl -olkusz.pl -olsztyn.pl -opoczno.pl -opole.pl -ostroda.pl -ostroleka.pl -ostrowiec.pl -ostrowwlkp.pl -pila.pl -pisz.pl -podhale.pl -podlasie.pl -polkowice.pl -pomorze.pl -pomorskie.pl -prochowice.pl -pruszkow.pl -przeworsk.pl -pulawy.pl -radom.pl -rawa-maz.pl -rybnik.pl -rzeszow.pl -sanok.pl -sejny.pl -slask.pl -slupsk.pl -sosnowiec.pl -stalowa-wola.pl -skoczow.pl -starachowice.pl -stargard.pl -suwalki.pl -swidnica.pl -swiebodzin.pl -swinoujscie.pl -szczecin.pl -szczytno.pl -tarnobrzeg.pl -tgory.pl -turek.pl -tychy.pl -ustka.pl -walbrzych.pl -warmia.pl -warszawa.pl -waw.pl -wegrow.pl -wielun.pl -wlocl.pl -wloclawek.pl -wodzislaw.pl -wolomin.pl -wroclaw.pl -zachpomor.pl -zagan.pl -zarow.pl -zgora.pl -zgorzelec.pl - -// pm : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf -pm - -// pn : http://www.government.pn/PnRegistry/policies.htm -pn -gov.pn -co.pn -org.pn -edu.pn -net.pn - -// post : https://en.wikipedia.org/wiki/.post -post - -// pr : http://www.nic.pr/index.asp?f=1 -pr -com.pr -net.pr -org.pr -gov.pr -edu.pr -isla.pr -pro.pr -biz.pr -info.pr -name.pr -// these aren't mentioned on nic.pr, but on https://en.wikipedia.org/wiki/.pr -est.pr -prof.pr -ac.pr - -// pro : http://registry.pro/get-pro -pro -aaa.pro -aca.pro -acct.pro -avocat.pro -bar.pro -cpa.pro -eng.pro -jur.pro -law.pro -med.pro -recht.pro - -// ps : https://en.wikipedia.org/wiki/.ps -// http://www.nic.ps/registration/policy.html#reg -ps -edu.ps -gov.ps -sec.ps -plo.ps -com.ps -org.ps -net.ps - -// pt : https://www.dns.pt/en/domain/pt-terms-and-conditions-registration-rules/ -pt -net.pt -gov.pt -org.pt -edu.pt -int.pt -publ.pt -com.pt -nome.pt - -// pw : https://en.wikipedia.org/wiki/.pw -pw -co.pw -ne.pw -or.pw -ed.pw -go.pw -belau.pw - -// py : http://www.nic.py/pautas.html#seccion_9 -// Submitted by registry -py -com.py -coop.py -edu.py -gov.py -mil.py -net.py -org.py - -// qa : http://domains.qa/en/ -qa -com.qa -edu.qa -gov.qa -mil.qa -name.qa -net.qa -org.qa -sch.qa - -// re : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf -re -asso.re -com.re -nom.re - -// ro : http://www.rotld.ro/ -ro -arts.ro -com.ro -firm.ro -info.ro -nom.ro -nt.ro -org.ro -rec.ro -store.ro -tm.ro -www.ro - -// rs : https://www.rnids.rs/en/domains/national-domains -rs -ac.rs -co.rs -edu.rs -gov.rs -in.rs -org.rs - -// ru : https://cctld.ru/files/pdf/docs/en/rules_ru-rf.pdf -// Submitted by George Georgievsky -ru - -// rw : https://www.ricta.org.rw/sites/default/files/resources/registry_registrar_contract_0.pdf -rw -ac.rw -co.rw -coop.rw -gov.rw -mil.rw -net.rw -org.rw - -// sa : http://www.nic.net.sa/ -sa -com.sa -net.sa -org.sa -gov.sa -med.sa -pub.sa -edu.sa -sch.sa - -// sb : http://www.sbnic.net.sb/ -// Submitted by registry -sb -com.sb -edu.sb -gov.sb -net.sb -org.sb - -// sc : http://www.nic.sc/ -sc -com.sc -gov.sc -net.sc -org.sc -edu.sc - -// sd : http://www.isoc.sd/sudanic.isoc.sd/billing_pricing.htm -// Submitted by registry -sd -com.sd -net.sd -org.sd -edu.sd -med.sd -tv.sd -gov.sd -info.sd - -// se : https://en.wikipedia.org/wiki/.se -// Submitted by registry -se -a.se -ac.se -b.se -bd.se -brand.se -c.se -d.se -e.se -f.se -fh.se -fhsk.se -fhv.se -g.se -h.se -i.se -k.se -komforb.se -kommunalforbund.se -komvux.se -l.se -lanbib.se -m.se -n.se -naturbruksgymn.se -o.se -org.se -p.se -parti.se -pp.se -press.se -r.se -s.se -t.se -tm.se -u.se -w.se -x.se -y.se -z.se - -// sg : http://www.nic.net.sg/page/registration-policies-procedures-and-guidelines -sg -com.sg -net.sg -org.sg -gov.sg -edu.sg -per.sg - -// sh : http://nic.sh/rules.htm -sh -com.sh -net.sh -gov.sh -org.sh -mil.sh - -// si : https://en.wikipedia.org/wiki/.si -si - -// sj : No registrations at this time. -// Submitted by registry -sj - -// sk : https://en.wikipedia.org/wiki/.sk -// list of 2nd level domains ? -sk - -// sl : http://www.nic.sl -// Submitted by registry -sl -com.sl -net.sl -edu.sl -gov.sl -org.sl - -// sm : https://en.wikipedia.org/wiki/.sm -sm - -// sn : https://en.wikipedia.org/wiki/.sn -sn -art.sn -com.sn -edu.sn -gouv.sn -org.sn -perso.sn -univ.sn - -// so : http://sonic.so/policies/ -so -com.so -edu.so -gov.so -me.so -net.so -org.so - -// sr : https://en.wikipedia.org/wiki/.sr -sr - -// ss : https://registry.nic.ss/ -// Submitted by registry -ss -biz.ss -com.ss -edu.ss -gov.ss -me.ss -net.ss -org.ss -sch.ss - -// st : http://www.nic.st/html/policyrules/ -st -co.st -com.st -consulado.st -edu.st -embaixada.st -mil.st -net.st -org.st -principe.st -saotome.st -store.st - -// su : https://en.wikipedia.org/wiki/.su -su - -// sv : http://www.svnet.org.sv/niveldos.pdf -sv -com.sv -edu.sv -gob.sv -org.sv -red.sv - -// sx : https://en.wikipedia.org/wiki/.sx -// Submitted by registry -sx -gov.sx - -// sy : https://en.wikipedia.org/wiki/.sy -// see also: http://www.gobin.info/domainname/sy.doc -sy -edu.sy -gov.sy -net.sy -mil.sy -com.sy -org.sy - -// sz : https://en.wikipedia.org/wiki/.sz -// http://www.sispa.org.sz/ -sz -co.sz -ac.sz -org.sz - -// tc : https://en.wikipedia.org/wiki/.tc -tc - -// td : https://en.wikipedia.org/wiki/.td -td - -// tel: https://en.wikipedia.org/wiki/.tel -// http://www.telnic.org/ -tel - -// tf : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf -tf - -// tg : https://en.wikipedia.org/wiki/.tg -// http://www.nic.tg/ -tg - -// th : https://en.wikipedia.org/wiki/.th -// Submitted by registry -th -ac.th -co.th -go.th -in.th -mi.th -net.th -or.th - -// tj : http://www.nic.tj/policy.html -tj -ac.tj -biz.tj -co.tj -com.tj -edu.tj -go.tj -gov.tj -int.tj -mil.tj -name.tj -net.tj -nic.tj -org.tj -test.tj -web.tj - -// tk : https://en.wikipedia.org/wiki/.tk -tk - -// tl : https://en.wikipedia.org/wiki/.tl -tl -gov.tl - -// tm : http://www.nic.tm/local.html -tm -com.tm -co.tm -org.tm -net.tm -nom.tm -gov.tm -mil.tm -edu.tm - -// tn : http://www.registre.tn/fr/ -// https://whois.ati.tn/ -tn -com.tn -ens.tn -fin.tn -gov.tn -ind.tn -info.tn -intl.tn -mincom.tn -nat.tn -net.tn -org.tn -perso.tn -tourism.tn - -// to : https://en.wikipedia.org/wiki/.to -// Submitted by registry -to -com.to -gov.to -net.to -org.to -edu.to -mil.to - -// tr : https://nic.tr/ -// https://nic.tr/forms/eng/policies.pdf -// https://nic.tr/index.php?USRACTN=PRICELST -tr -av.tr -bbs.tr -bel.tr -biz.tr -com.tr -dr.tr -edu.tr -gen.tr -gov.tr -info.tr -mil.tr -k12.tr -kep.tr -name.tr -net.tr -org.tr -pol.tr -tel.tr -tsk.tr -tv.tr -web.tr -// Used by Northern Cyprus -nc.tr -// Used by government agencies of Northern Cyprus -gov.nc.tr - -// tt : http://www.nic.tt/ -tt -co.tt -com.tt -org.tt -net.tt -biz.tt -info.tt -pro.tt -int.tt -coop.tt -jobs.tt -mobi.tt -travel.tt -museum.tt -aero.tt -name.tt -gov.tt -edu.tt - -// tv : https://en.wikipedia.org/wiki/.tv -// Not listing any 2LDs as reserved since none seem to exist in practice, -// Wikipedia notwithstanding. -tv - -// tw : https://en.wikipedia.org/wiki/.tw -tw -edu.tw -gov.tw -mil.tw -com.tw -net.tw -org.tw -idv.tw -game.tw -ebiz.tw -club.tw -網路.tw -組織.tw -商業.tw - -// tz : http://www.tznic.or.tz/index.php/domains -// Submitted by registry -tz -ac.tz -co.tz -go.tz -hotel.tz -info.tz -me.tz -mil.tz -mobi.tz -ne.tz -or.tz -sc.tz -tv.tz - -// ua : https://hostmaster.ua/policy/?ua -// Submitted by registry -ua -// ua 2LD -com.ua -edu.ua -gov.ua -in.ua -net.ua -org.ua -// ua geographic names -// https://hostmaster.ua/2ld/ -cherkassy.ua -cherkasy.ua -chernigov.ua -chernihiv.ua -chernivtsi.ua -chernovtsy.ua -ck.ua -cn.ua -cr.ua -crimea.ua -cv.ua -dn.ua -dnepropetrovsk.ua -dnipropetrovsk.ua -donetsk.ua -dp.ua -if.ua -ivano-frankivsk.ua -kh.ua -kharkiv.ua -kharkov.ua -kherson.ua -khmelnitskiy.ua -khmelnytskyi.ua -kiev.ua -kirovograd.ua -km.ua -kr.ua -kropyvnytskyi.ua -krym.ua -ks.ua -kv.ua -kyiv.ua -lg.ua -lt.ua -lugansk.ua -luhansk.ua -lutsk.ua -lv.ua -lviv.ua -mk.ua -mykolaiv.ua -nikolaev.ua -od.ua -odesa.ua -odessa.ua -pl.ua -poltava.ua -rivne.ua -rovno.ua -rv.ua -sb.ua -sebastopol.ua -sevastopol.ua -sm.ua -sumy.ua -te.ua -ternopil.ua -uz.ua -uzhgorod.ua -uzhhorod.ua -vinnica.ua -vinnytsia.ua -vn.ua -volyn.ua -yalta.ua -zakarpattia.ua -zaporizhzhe.ua -zaporizhzhia.ua -zhitomir.ua -zhytomyr.ua -zp.ua -zt.ua - -// ug : https://www.registry.co.ug/ -ug -co.ug -or.ug -ac.ug -sc.ug -go.ug -ne.ug -com.ug -org.ug - -// uk : https://en.wikipedia.org/wiki/.uk -// Submitted by registry -uk -ac.uk -co.uk -gov.uk -ltd.uk -me.uk -net.uk -nhs.uk -org.uk -plc.uk -police.uk -*.sch.uk - -// us : https://en.wikipedia.org/wiki/.us -us -dni.us -fed.us -isa.us -kids.us -nsn.us -// us geographic names -ak.us -al.us -ar.us -as.us -az.us -ca.us -co.us -ct.us -dc.us -de.us -fl.us -ga.us -gu.us -hi.us -ia.us -id.us -il.us -in.us -ks.us -ky.us -la.us -ma.us -md.us -me.us -mi.us -mn.us -mo.us -ms.us -mt.us -nc.us -nd.us -ne.us -nh.us -nj.us -nm.us -nv.us -ny.us -oh.us -ok.us -or.us -pa.us -pr.us -ri.us -sc.us -sd.us -tn.us -tx.us -ut.us -vi.us -vt.us -va.us -wa.us -wi.us -wv.us -wy.us -// The registrar notes several more specific domains available in each state, -// such as state.*.us, dst.*.us, etc., but resolution of these is somewhat -// haphazard; in some states these domains resolve as addresses, while in others -// only subdomains are available, or even nothing at all. We include the -// most common ones where it's clear that different sites are different -// entities. -k12.ak.us -k12.al.us -k12.ar.us -k12.as.us -k12.az.us -k12.ca.us -k12.co.us -k12.ct.us -k12.dc.us -k12.fl.us -k12.ga.us -k12.gu.us -// k12.hi.us Bug 614565 - Hawaii has a state-wide DOE login -k12.ia.us -k12.id.us -k12.il.us -k12.in.us -k12.ks.us -k12.ky.us -k12.la.us -k12.ma.us -k12.md.us -k12.me.us -k12.mi.us -k12.mn.us -k12.mo.us -k12.ms.us -k12.mt.us -k12.nc.us -// k12.nd.us Bug 1028347 - Removed at request of Travis Rosso -k12.ne.us -k12.nh.us -k12.nj.us -k12.nm.us -k12.nv.us -k12.ny.us -k12.oh.us -k12.ok.us -k12.or.us -k12.pa.us -k12.pr.us -// k12.ri.us Removed at request of Kim Cournoyer -k12.sc.us -// k12.sd.us Bug 934131 - Removed at request of James Booze -k12.tn.us -k12.tx.us -k12.ut.us -k12.vi.us -k12.vt.us -k12.va.us -k12.wa.us -k12.wi.us -// k12.wv.us Bug 947705 - Removed at request of Verne Britton -k12.wy.us -cc.ak.us -cc.al.us -cc.ar.us -cc.as.us -cc.az.us -cc.ca.us -cc.co.us -cc.ct.us -cc.dc.us -cc.de.us -cc.fl.us -cc.ga.us -cc.gu.us -cc.hi.us -cc.ia.us -cc.id.us -cc.il.us -cc.in.us -cc.ks.us -cc.ky.us -cc.la.us -cc.ma.us -cc.md.us -cc.me.us -cc.mi.us -cc.mn.us -cc.mo.us -cc.ms.us -cc.mt.us -cc.nc.us -cc.nd.us -cc.ne.us -cc.nh.us -cc.nj.us -cc.nm.us -cc.nv.us -cc.ny.us -cc.oh.us -cc.ok.us -cc.or.us -cc.pa.us -cc.pr.us -cc.ri.us -cc.sc.us -cc.sd.us -cc.tn.us -cc.tx.us -cc.ut.us -cc.vi.us -cc.vt.us -cc.va.us -cc.wa.us -cc.wi.us -cc.wv.us -cc.wy.us -lib.ak.us -lib.al.us -lib.ar.us -lib.as.us -lib.az.us -lib.ca.us -lib.co.us -lib.ct.us -lib.dc.us -// lib.de.us Issue #243 - Moved to Private section at request of Ed Moore -lib.fl.us -lib.ga.us -lib.gu.us -lib.hi.us -lib.ia.us -lib.id.us -lib.il.us -lib.in.us -lib.ks.us -lib.ky.us -lib.la.us -lib.ma.us -lib.md.us -lib.me.us -lib.mi.us -lib.mn.us -lib.mo.us -lib.ms.us -lib.mt.us -lib.nc.us -lib.nd.us -lib.ne.us -lib.nh.us -lib.nj.us -lib.nm.us -lib.nv.us -lib.ny.us -lib.oh.us -lib.ok.us -lib.or.us -lib.pa.us -lib.pr.us -lib.ri.us -lib.sc.us -lib.sd.us -lib.tn.us -lib.tx.us -lib.ut.us -lib.vi.us -lib.vt.us -lib.va.us -lib.wa.us -lib.wi.us -// lib.wv.us Bug 941670 - Removed at request of Larry W Arnold -lib.wy.us -// k12.ma.us contains school districts in Massachusetts. The 4LDs are -// managed independently except for private (PVT), charter (CHTR) and -// parochial (PAROCH) schools. Those are delegated directly to the -// 5LD operators. -pvt.k12.ma.us -chtr.k12.ma.us -paroch.k12.ma.us -// Merit Network, Inc. maintains the registry for =~ /(k12|cc|lib).mi.us/ and the following -// see also: http://domreg.merit.edu -// see also: whois -h whois.domreg.merit.edu help -ann-arbor.mi.us -cog.mi.us -dst.mi.us -eaton.mi.us -gen.mi.us -mus.mi.us -tec.mi.us -washtenaw.mi.us - -// uy : http://www.nic.org.uy/ -uy -com.uy -edu.uy -gub.uy -mil.uy -net.uy -org.uy - -// uz : http://www.reg.uz/ -uz -co.uz -com.uz -net.uz -org.uz - -// va : https://en.wikipedia.org/wiki/.va -va - -// vc : https://en.wikipedia.org/wiki/.vc -// Submitted by registry -vc -com.vc -net.vc -org.vc -gov.vc -mil.vc -edu.vc - -// ve : https://registro.nic.ve/ -// Submitted by registry nic@nic.ve and nicve@conatel.gob.ve -ve -arts.ve -bib.ve -co.ve -com.ve -e12.ve -edu.ve -firm.ve -gob.ve -gov.ve -info.ve -int.ve -mil.ve -net.ve -nom.ve -org.ve -rar.ve -rec.ve -store.ve -tec.ve -web.ve - -// vg : https://en.wikipedia.org/wiki/.vg -vg - -// vi : http://www.nic.vi/newdomainform.htm -// http://www.nic.vi/Domain_Rules/body_domain_rules.html indicates some other -// TLDs are "reserved", such as edu.vi and gov.vi, but doesn't actually say they -// are available for registration (which they do not seem to be). -vi -co.vi -com.vi -k12.vi -net.vi -org.vi - -// vn : https://www.vnnic.vn/en/domain/cctld-vn -// https://vnnic.vn/sites/default/files/tailieu/vn.cctld.domains.txt -vn -ac.vn -ai.vn -biz.vn -com.vn -edu.vn -gov.vn -health.vn -id.vn -info.vn -int.vn -io.vn -name.vn -net.vn -org.vn -pro.vn - -// vn geographical names -angiang.vn -bacgiang.vn -backan.vn -baclieu.vn -bacninh.vn -baria-vungtau.vn -bentre.vn -binhdinh.vn -binhduong.vn -binhphuoc.vn -binhthuan.vn -camau.vn -cantho.vn -caobang.vn -daklak.vn -daknong.vn -danang.vn -dienbien.vn -dongnai.vn -dongthap.vn -gialai.vn -hagiang.vn -haiduong.vn -haiphong.vn -hanam.vn -hanoi.vn -hatinh.vn -haugiang.vn -hoabinh.vn -hungyen.vn -khanhhoa.vn -kiengiang.vn -kontum.vn -laichau.vn -lamdong.vn -langson.vn -laocai.vn -longan.vn -namdinh.vn -nghean.vn -ninhbinh.vn -ninhthuan.vn -phutho.vn -phuyen.vn -quangbinh.vn -quangnam.vn -quangngai.vn -quangninh.vn -quangtri.vn -soctrang.vn -sonla.vn -tayninh.vn -thaibinh.vn -thainguyen.vn -thanhhoa.vn -thanhphohochiminh.vn -thuathienhue.vn -tiengiang.vn -travinh.vn -tuyenquang.vn -vinhlong.vn -vinhphuc.vn -yenbai.vn - -// vu : https://en.wikipedia.org/wiki/.vu -// http://www.vunic.vu/ -vu -com.vu -edu.vu -net.vu -org.vu - -// wf : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf -wf - -// ws : https://en.wikipedia.org/wiki/.ws -// http://samoanic.ws/index.dhtml -ws -com.ws -net.ws -org.ws -gov.ws -edu.ws - -// yt : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf -yt - -// IDN ccTLDs -// When submitting patches, please maintain a sort by ISO 3166 ccTLD, then -// U-label, and follow this format: -// // A-Label ("", [, variant info]) : -// // [sponsoring org] -// U-Label - -// xn--mgbaam7a8h ("Emerat", Arabic) : AE -// http://nic.ae/english/arabicdomain/rules.jsp -امارات - -// xn--y9a3aq ("hye", Armenian) : AM -// ISOC AM (operated by .am Registry) -հայ - -// xn--54b7fta0cc ("Bangla", Bangla) : BD -বাংলা - -// xn--90ae ("bg", Bulgarian) : BG -бг - -// xn--mgbcpq6gpa1a ("albahrain", Arabic) : BH -البحرين - -// xn--90ais ("bel", Belarusian/Russian Cyrillic) : BY -// Operated by .by registry -бел - -// xn--fiqs8s ("Zhongguo/China", Chinese, Simplified) : CN -// CNNIC -// http://cnnic.cn/html/Dir/2005/10/11/3218.htm -中国 - -// xn--fiqz9s ("Zhongguo/China", Chinese, Traditional) : CN -// CNNIC -// http://cnnic.cn/html/Dir/2005/10/11/3218.htm -中國 - -// xn--lgbbat1ad8j ("Algeria/Al Jazair", Arabic) : DZ -الجزائر - -// xn--wgbh1c ("Egypt/Masr", Arabic) : EG -// http://www.dotmasr.eg/ -مصر - -// xn--e1a4c ("eu", Cyrillic) : EU -// https://eurid.eu -ею - -// xn--qxa6a ("eu", Greek) : EU -// https://eurid.eu -ευ - -// xn--mgbah1a3hjkrd ("Mauritania", Arabic) : MR -موريتانيا - -// xn--node ("ge", Georgian Mkhedruli) : GE -გე - -// xn--qxam ("el", Greek) : GR -// Hellenic Ministry of Infrastructure, Transport, and Networks -ελ - -// xn--j6w193g ("Hong Kong", Chinese) : HK -// https://www.hkirc.hk -// Submitted by registry -// https://www.hkirc.hk/content.jsp?id=30#!/34 -香港 -公司.香港 -教育.香港 -政府.香港 -個人.香港 -網絡.香港 -組織.香港 - -// xn--2scrj9c ("Bharat", Kannada) : IN -// India -ಭಾರತ - -// xn--3hcrj9c ("Bharat", Oriya) : IN -// India -ଭାରତ - -// xn--45br5cyl ("Bharatam", Assamese) : IN -// India -ভাৰত - -// xn--h2breg3eve ("Bharatam", Sanskrit) : IN -// India -भारतम् - -// xn--h2brj9c8c ("Bharot", Santali) : IN -// India -भारोत - -// xn--mgbgu82a ("Bharat", Sindhi) : IN -// India -ڀارت - -// xn--rvc1e0am3e ("Bharatam", Malayalam) : IN -// India -ഭാരതം - -// xn--h2brj9c ("Bharat", Devanagari) : IN -// India -भारत - -// xn--mgbbh1a ("Bharat", Kashmiri) : IN -// India -بارت - -// xn--mgbbh1a71e ("Bharat", Arabic) : IN -// India -بھارت - -// xn--fpcrj9c3d ("Bharat", Telugu) : IN -// India -భారత్ - -// xn--gecrj9c ("Bharat", Gujarati) : IN -// India -ભારત - -// xn--s9brj9c ("Bharat", Gurmukhi) : IN -// India -ਭਾਰਤ - -// xn--45brj9c ("Bharat", Bengali) : IN -// India -ভারত - -// xn--xkc2dl3a5ee0h ("India", Tamil) : IN -// India -இந்தியா - -// xn--mgba3a4f16a ("Iran", Persian) : IR -ایران - -// xn--mgba3a4fra ("Iran", Arabic) : IR -ايران - -// xn--mgbtx2b ("Iraq", Arabic) : IQ -// Communications and Media Commission -عراق - -// xn--mgbayh7gpa ("al-Ordon", Arabic) : JO -// National Information Technology Center (NITC) -// Royal Scientific Society, Al-Jubeiha -الاردن - -// xn--3e0b707e ("Republic of Korea", Hangul) : KR -한국 - -// xn--80ao21a ("Kaz", Kazakh) : KZ -қаз - -// xn--q7ce6a ("Lao", Lao) : LA -ລາວ - -// xn--fzc2c9e2c ("Lanka", Sinhalese-Sinhala) : LK -// https://nic.lk -ලංකා - -// xn--xkc2al3hye2a ("Ilangai", Tamil) : LK -// https://nic.lk -இலங்கை - -// xn--mgbc0a9azcg ("Morocco/al-Maghrib", Arabic) : MA -المغرب - -// xn--d1alf ("mkd", Macedonian) : MK -// MARnet -мкд - -// xn--l1acc ("mon", Mongolian) : MN -мон - -// xn--mix891f ("Macao", Chinese, Traditional) : MO -// MONIC / HNET Asia (Registry Operator for .mo) -澳門 - -// xn--mix082f ("Macao", Chinese, Simplified) : MO -澳门 - -// xn--mgbx4cd0ab ("Malaysia", Malay) : MY -مليسيا - -// xn--mgb9awbf ("Oman", Arabic) : OM -عمان - -// xn--mgbai9azgqp6j ("Pakistan", Urdu/Arabic) : PK -پاکستان - -// xn--mgbai9a5eva00b ("Pakistan", Urdu/Arabic, variant) : PK -پاكستان - -// xn--ygbi2ammx ("Falasteen", Arabic) : PS -// The Palestinian National Internet Naming Authority (PNINA) -// http://www.pnina.ps -فلسطين - -// xn--90a3ac ("srb", Cyrillic) : RS -// https://www.rnids.rs/en/domains/national-domains -срб -пр.срб -орг.срб -обр.срб -од.срб -упр.срб -ак.срб - -// xn--p1ai ("rf", Russian-Cyrillic) : RU -// https://cctld.ru/files/pdf/docs/en/rules_ru-rf.pdf -// Submitted by George Georgievsky -рф - -// xn--wgbl6a ("Qatar", Arabic) : QA -// http://www.ict.gov.qa/ -قطر - -// xn--mgberp4a5d4ar ("AlSaudiah", Arabic) : SA -// http://www.nic.net.sa/ -السعودية - -// xn--mgberp4a5d4a87g ("AlSaudiah", Arabic, variant) : SA -السعودیة - -// xn--mgbqly7c0a67fbc ("AlSaudiah", Arabic, variant) : SA -السعودیۃ - -// xn--mgbqly7cvafr ("AlSaudiah", Arabic, variant) : SA -السعوديه - -// xn--mgbpl2fh ("sudan", Arabic) : SD -// Operated by .sd registry -سودان - -// xn--yfro4i67o Singapore ("Singapore", Chinese) : SG -新加坡 - -// xn--clchc0ea0b2g2a9gcd ("Singapore", Tamil) : SG -சிங்கப்பூர் - -// xn--ogbpf8fl ("Syria", Arabic) : SY -سورية - -// xn--mgbtf8fl ("Syria", Arabic, variant) : SY -سوريا - -// xn--o3cw4h ("Thai", Thai) : TH -// http://www.thnic.co.th -ไทย -ศึกษา.ไทย -ธุรกิจ.ไทย -รัฐบาล.ไทย -ทหาร.ไทย -เน็ต.ไทย -องค์กร.ไทย - -// xn--pgbs0dh ("Tunisia", Arabic) : TN -// http://nic.tn -تونس - -// xn--kpry57d ("Taiwan", Chinese, Traditional) : TW -// http://www.twnic.net/english/dn/dn_07a.htm -台灣 - -// xn--kprw13d ("Taiwan", Chinese, Simplified) : TW -// http://www.twnic.net/english/dn/dn_07a.htm -台湾 - -// xn--nnx388a ("Taiwan", Chinese, variant) : TW -臺灣 - -// xn--j1amh ("ukr", Cyrillic) : UA -укр - -// xn--mgb2ddes ("AlYemen", Arabic) : YE -اليمن - -// xxx : http://icmregistry.com -xxx - -// ye : http://www.y.net.ye/services/domain_name.htm -ye -com.ye -edu.ye -gov.ye -net.ye -mil.ye -org.ye - -// za : https://www.zadna.org.za/content/page/domain-information/ -ac.za -agric.za -alt.za -co.za -edu.za -gov.za -grondar.za -law.za -mil.za -net.za -ngo.za -nic.za -nis.za -nom.za -org.za -school.za -tm.za -web.za - -// zm : https://zicta.zm/ -// Submitted by registry -zm -ac.zm -biz.zm -co.zm -com.zm -edu.zm -gov.zm -info.zm -mil.zm -net.zm -org.zm -sch.zm - -// zw : https://www.potraz.gov.zw/ -// Confirmed by registry 2017-01-25 -zw -ac.zw -co.zw -gov.zw -mil.zw -org.zw - - -// newGTLDs - -// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2024-07-12T15:14:39Z -// This list is auto-generated, don't edit it manually. -// aaa : American Automobile Association, Inc. -// https://www.iana.org/domains/root/db/aaa.html -aaa - -// aarp : AARP -// https://www.iana.org/domains/root/db/aarp.html -aarp - -// abb : ABB Ltd -// https://www.iana.org/domains/root/db/abb.html -abb - -// abbott : Abbott Laboratories, Inc. -// https://www.iana.org/domains/root/db/abbott.html -abbott - -// abbvie : AbbVie Inc. -// https://www.iana.org/domains/root/db/abbvie.html -abbvie - -// abc : Disney Enterprises, Inc. -// https://www.iana.org/domains/root/db/abc.html -abc - -// able : Able Inc. -// https://www.iana.org/domains/root/db/able.html -able - -// abogado : Registry Services, LLC -// https://www.iana.org/domains/root/db/abogado.html -abogado - -// abudhabi : Abu Dhabi Systems and Information Centre -// https://www.iana.org/domains/root/db/abudhabi.html -abudhabi - -// academy : Binky Moon, LLC -// https://www.iana.org/domains/root/db/academy.html -academy - -// accenture : Accenture plc -// https://www.iana.org/domains/root/db/accenture.html -accenture - -// accountant : dot Accountant Limited -// https://www.iana.org/domains/root/db/accountant.html -accountant - -// accountants : Binky Moon, LLC -// https://www.iana.org/domains/root/db/accountants.html -accountants - -// aco : ACO Severin Ahlmann GmbH & Co. KG -// https://www.iana.org/domains/root/db/aco.html -aco - -// actor : Dog Beach, LLC -// https://www.iana.org/domains/root/db/actor.html -actor - -// ads : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/ads.html -ads - -// adult : ICM Registry AD LLC -// https://www.iana.org/domains/root/db/adult.html -adult - -// aeg : Aktiebolaget Electrolux -// https://www.iana.org/domains/root/db/aeg.html -aeg - -// aetna : Aetna Life Insurance Company -// https://www.iana.org/domains/root/db/aetna.html -aetna - -// afl : Australian Football League -// https://www.iana.org/domains/root/db/afl.html -afl - -// africa : ZA Central Registry NPC trading as Registry.Africa -// https://www.iana.org/domains/root/db/africa.html -africa - -// agakhan : Fondation Aga Khan (Aga Khan Foundation) -// https://www.iana.org/domains/root/db/agakhan.html -agakhan - -// agency : Binky Moon, LLC -// https://www.iana.org/domains/root/db/agency.html -agency - -// aig : American International Group, Inc. -// https://www.iana.org/domains/root/db/aig.html -aig - -// airbus : Airbus S.A.S. -// https://www.iana.org/domains/root/db/airbus.html -airbus - -// airforce : Dog Beach, LLC -// https://www.iana.org/domains/root/db/airforce.html -airforce - -// airtel : Bharti Airtel Limited -// https://www.iana.org/domains/root/db/airtel.html -airtel - -// akdn : Fondation Aga Khan (Aga Khan Foundation) -// https://www.iana.org/domains/root/db/akdn.html -akdn - -// alibaba : Alibaba Group Holding Limited -// https://www.iana.org/domains/root/db/alibaba.html -alibaba - -// alipay : Alibaba Group Holding Limited -// https://www.iana.org/domains/root/db/alipay.html -alipay - -// allfinanz : Allfinanz Deutsche Vermögensberatung Aktiengesellschaft -// https://www.iana.org/domains/root/db/allfinanz.html -allfinanz - -// allstate : Allstate Fire and Casualty Insurance Company -// https://www.iana.org/domains/root/db/allstate.html -allstate - -// ally : Ally Financial Inc. -// https://www.iana.org/domains/root/db/ally.html -ally - -// alsace : Region Grand Est -// https://www.iana.org/domains/root/db/alsace.html -alsace - -// alstom : ALSTOM -// https://www.iana.org/domains/root/db/alstom.html -alstom - -// amazon : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/amazon.html -amazon - -// americanexpress : American Express Travel Related Services Company, Inc. -// https://www.iana.org/domains/root/db/americanexpress.html -americanexpress - -// americanfamily : AmFam, Inc. -// https://www.iana.org/domains/root/db/americanfamily.html -americanfamily - -// amex : American Express Travel Related Services Company, Inc. -// https://www.iana.org/domains/root/db/amex.html -amex - -// amfam : AmFam, Inc. -// https://www.iana.org/domains/root/db/amfam.html -amfam - -// amica : Amica Mutual Insurance Company -// https://www.iana.org/domains/root/db/amica.html -amica - -// amsterdam : Gemeente Amsterdam -// https://www.iana.org/domains/root/db/amsterdam.html -amsterdam - -// analytics : Campus IP LLC -// https://www.iana.org/domains/root/db/analytics.html -analytics - -// android : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/android.html -android - -// anquan : Beijing Qihu Keji Co., Ltd. -// https://www.iana.org/domains/root/db/anquan.html -anquan - -// anz : Australia and New Zealand Banking Group Limited -// https://www.iana.org/domains/root/db/anz.html -anz - -// aol : Yahoo Inc. -// https://www.iana.org/domains/root/db/aol.html -aol - -// apartments : Binky Moon, LLC -// https://www.iana.org/domains/root/db/apartments.html -apartments - -// app : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/app.html -app - -// apple : Apple Inc. -// https://www.iana.org/domains/root/db/apple.html -apple - -// aquarelle : Aquarelle.com -// https://www.iana.org/domains/root/db/aquarelle.html -aquarelle - -// arab : League of Arab States -// https://www.iana.org/domains/root/db/arab.html -arab - -// aramco : Aramco Services Company -// https://www.iana.org/domains/root/db/aramco.html -aramco - -// archi : Identity Digital Limited -// https://www.iana.org/domains/root/db/archi.html -archi - -// army : Dog Beach, LLC -// https://www.iana.org/domains/root/db/army.html -army - -// art : UK Creative Ideas Limited -// https://www.iana.org/domains/root/db/art.html -art - -// arte : Association Relative à la Télévision Européenne G.E.I.E. -// https://www.iana.org/domains/root/db/arte.html -arte - -// asda : Wal-Mart Stores, Inc. -// https://www.iana.org/domains/root/db/asda.html -asda - -// associates : Binky Moon, LLC -// https://www.iana.org/domains/root/db/associates.html -associates - -// athleta : The Gap, Inc. -// https://www.iana.org/domains/root/db/athleta.html -athleta - -// attorney : Dog Beach, LLC -// https://www.iana.org/domains/root/db/attorney.html -attorney - -// auction : Dog Beach, LLC -// https://www.iana.org/domains/root/db/auction.html -auction - -// audi : AUDI Aktiengesellschaft -// https://www.iana.org/domains/root/db/audi.html -audi - -// audible : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/audible.html -audible - -// audio : XYZ.COM LLC -// https://www.iana.org/domains/root/db/audio.html -audio - -// auspost : Australian Postal Corporation -// https://www.iana.org/domains/root/db/auspost.html -auspost - -// author : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/author.html -author - -// auto : XYZ.COM LLC -// https://www.iana.org/domains/root/db/auto.html -auto - -// autos : XYZ.COM LLC -// https://www.iana.org/domains/root/db/autos.html -autos - -// aws : AWS Registry LLC -// https://www.iana.org/domains/root/db/aws.html -aws - -// axa : AXA Group Operations SAS -// https://www.iana.org/domains/root/db/axa.html -axa - -// azure : Microsoft Corporation -// https://www.iana.org/domains/root/db/azure.html -azure - -// baby : XYZ.COM LLC -// https://www.iana.org/domains/root/db/baby.html -baby - -// baidu : Baidu, Inc. -// https://www.iana.org/domains/root/db/baidu.html -baidu - -// banamex : Citigroup Inc. -// https://www.iana.org/domains/root/db/banamex.html -banamex - -// band : Dog Beach, LLC -// https://www.iana.org/domains/root/db/band.html -band - -// bank : fTLD Registry Services LLC -// https://www.iana.org/domains/root/db/bank.html -bank - -// bar : Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable -// https://www.iana.org/domains/root/db/bar.html -bar - -// barcelona : Municipi de Barcelona -// https://www.iana.org/domains/root/db/barcelona.html -barcelona - -// barclaycard : Barclays Bank PLC -// https://www.iana.org/domains/root/db/barclaycard.html -barclaycard - -// barclays : Barclays Bank PLC -// https://www.iana.org/domains/root/db/barclays.html -barclays - -// barefoot : Gallo Vineyards, Inc. -// https://www.iana.org/domains/root/db/barefoot.html -barefoot - -// bargains : Binky Moon, LLC -// https://www.iana.org/domains/root/db/bargains.html -bargains - -// baseball : MLB Advanced Media DH, LLC -// https://www.iana.org/domains/root/db/baseball.html -baseball - -// basketball : Fédération Internationale de Basketball (FIBA) -// https://www.iana.org/domains/root/db/basketball.html -basketball - -// bauhaus : Werkhaus GmbH -// https://www.iana.org/domains/root/db/bauhaus.html -bauhaus - -// bayern : Bayern Connect GmbH -// https://www.iana.org/domains/root/db/bayern.html -bayern - -// bbc : British Broadcasting Corporation -// https://www.iana.org/domains/root/db/bbc.html -bbc - -// bbt : BB&T Corporation -// https://www.iana.org/domains/root/db/bbt.html -bbt - -// bbva : BANCO BILBAO VIZCAYA ARGENTARIA, S.A. -// https://www.iana.org/domains/root/db/bbva.html -bbva - -// bcg : The Boston Consulting Group, Inc. -// https://www.iana.org/domains/root/db/bcg.html -bcg - -// bcn : Municipi de Barcelona -// https://www.iana.org/domains/root/db/bcn.html -bcn - -// beats : Beats Electronics, LLC -// https://www.iana.org/domains/root/db/beats.html -beats - -// beauty : XYZ.COM LLC -// https://www.iana.org/domains/root/db/beauty.html -beauty - -// beer : Registry Services, LLC -// https://www.iana.org/domains/root/db/beer.html -beer - -// bentley : Bentley Motors Limited -// https://www.iana.org/domains/root/db/bentley.html -bentley - -// berlin : dotBERLIN GmbH & Co. KG -// https://www.iana.org/domains/root/db/berlin.html -berlin - -// best : BestTLD Pty Ltd -// https://www.iana.org/domains/root/db/best.html -best - -// bestbuy : BBY Solutions, Inc. -// https://www.iana.org/domains/root/db/bestbuy.html -bestbuy - -// bet : Identity Digital Limited -// https://www.iana.org/domains/root/db/bet.html -bet - -// bharti : Bharti Enterprises (Holding) Private Limited -// https://www.iana.org/domains/root/db/bharti.html -bharti - -// bible : American Bible Society -// https://www.iana.org/domains/root/db/bible.html -bible - -// bid : dot Bid Limited -// https://www.iana.org/domains/root/db/bid.html -bid - -// bike : Binky Moon, LLC -// https://www.iana.org/domains/root/db/bike.html -bike - -// bing : Microsoft Corporation -// https://www.iana.org/domains/root/db/bing.html -bing - -// bingo : Binky Moon, LLC -// https://www.iana.org/domains/root/db/bingo.html -bingo - -// bio : Identity Digital Limited -// https://www.iana.org/domains/root/db/bio.html -bio - -// black : Identity Digital Limited -// https://www.iana.org/domains/root/db/black.html -black - -// blackfriday : Registry Services, LLC -// https://www.iana.org/domains/root/db/blackfriday.html -blackfriday - -// blockbuster : Dish DBS Corporation -// https://www.iana.org/domains/root/db/blockbuster.html -blockbuster - -// blog : Knock Knock WHOIS There, LLC -// https://www.iana.org/domains/root/db/blog.html -blog - -// bloomberg : Bloomberg IP Holdings LLC -// https://www.iana.org/domains/root/db/bloomberg.html -bloomberg - -// blue : Identity Digital Limited -// https://www.iana.org/domains/root/db/blue.html -blue - -// bms : Bristol-Myers Squibb Company -// https://www.iana.org/domains/root/db/bms.html -bms - -// bmw : Bayerische Motoren Werke Aktiengesellschaft -// https://www.iana.org/domains/root/db/bmw.html -bmw - -// bnpparibas : BNP Paribas -// https://www.iana.org/domains/root/db/bnpparibas.html -bnpparibas - -// boats : XYZ.COM LLC -// https://www.iana.org/domains/root/db/boats.html -boats - -// boehringer : Boehringer Ingelheim International GmbH -// https://www.iana.org/domains/root/db/boehringer.html -boehringer - -// bofa : Bank of America Corporation -// https://www.iana.org/domains/root/db/bofa.html -bofa - -// bom : Núcleo de Informação e Coordenação do Ponto BR - NIC.br -// https://www.iana.org/domains/root/db/bom.html -bom - -// bond : ShortDot SA -// https://www.iana.org/domains/root/db/bond.html -bond - -// boo : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/boo.html -boo - -// book : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/book.html -book - -// booking : Booking.com B.V. -// https://www.iana.org/domains/root/db/booking.html -booking - -// bosch : Robert Bosch GMBH -// https://www.iana.org/domains/root/db/bosch.html -bosch - -// bostik : Bostik SA -// https://www.iana.org/domains/root/db/bostik.html -bostik - -// boston : Registry Services, LLC -// https://www.iana.org/domains/root/db/boston.html -boston - -// bot : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/bot.html -bot - -// boutique : Binky Moon, LLC -// https://www.iana.org/domains/root/db/boutique.html -boutique - -// box : Intercap Registry Inc. -// https://www.iana.org/domains/root/db/box.html -box - -// bradesco : Banco Bradesco S.A. -// https://www.iana.org/domains/root/db/bradesco.html -bradesco - -// bridgestone : Bridgestone Corporation -// https://www.iana.org/domains/root/db/bridgestone.html -bridgestone - -// broadway : Celebrate Broadway, Inc. -// https://www.iana.org/domains/root/db/broadway.html -broadway - -// broker : Dog Beach, LLC -// https://www.iana.org/domains/root/db/broker.html -broker - -// brother : Brother Industries, Ltd. -// https://www.iana.org/domains/root/db/brother.html -brother - -// brussels : DNS.be vzw -// https://www.iana.org/domains/root/db/brussels.html -brussels - -// build : Plan Bee LLC -// https://www.iana.org/domains/root/db/build.html -build - -// builders : Binky Moon, LLC -// https://www.iana.org/domains/root/db/builders.html -builders - -// business : Binky Moon, LLC -// https://www.iana.org/domains/root/db/business.html -business - -// buy : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/buy.html -buy - -// buzz : DOTSTRATEGY CO. -// https://www.iana.org/domains/root/db/buzz.html -buzz - -// bzh : Association www.bzh -// https://www.iana.org/domains/root/db/bzh.html -bzh - -// cab : Binky Moon, LLC -// https://www.iana.org/domains/root/db/cab.html -cab - -// cafe : Binky Moon, LLC -// https://www.iana.org/domains/root/db/cafe.html -cafe - -// cal : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/cal.html -cal - -// call : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/call.html -call - -// calvinklein : PVH gTLD Holdings LLC -// https://www.iana.org/domains/root/db/calvinklein.html -calvinklein - -// cam : Cam Connecting SARL -// https://www.iana.org/domains/root/db/cam.html -cam - -// camera : Binky Moon, LLC -// https://www.iana.org/domains/root/db/camera.html -camera - -// camp : Binky Moon, LLC -// https://www.iana.org/domains/root/db/camp.html -camp - -// canon : Canon Inc. -// https://www.iana.org/domains/root/db/canon.html -canon - -// capetown : ZA Central Registry NPC trading as ZA Central Registry -// https://www.iana.org/domains/root/db/capetown.html -capetown - -// capital : Binky Moon, LLC -// https://www.iana.org/domains/root/db/capital.html -capital - -// capitalone : Capital One Financial Corporation -// https://www.iana.org/domains/root/db/capitalone.html -capitalone - -// car : XYZ.COM LLC -// https://www.iana.org/domains/root/db/car.html -car - -// caravan : Caravan International, Inc. -// https://www.iana.org/domains/root/db/caravan.html -caravan - -// cards : Binky Moon, LLC -// https://www.iana.org/domains/root/db/cards.html -cards - -// care : Binky Moon, LLC -// https://www.iana.org/domains/root/db/care.html -care - -// career : dotCareer LLC -// https://www.iana.org/domains/root/db/career.html -career - -// careers : Binky Moon, LLC -// https://www.iana.org/domains/root/db/careers.html -careers - -// cars : XYZ.COM LLC -// https://www.iana.org/domains/root/db/cars.html -cars - -// casa : Registry Services, LLC -// https://www.iana.org/domains/root/db/casa.html -casa - -// case : Digity, LLC -// https://www.iana.org/domains/root/db/case.html -case - -// cash : Binky Moon, LLC -// https://www.iana.org/domains/root/db/cash.html -cash - -// casino : Binky Moon, LLC -// https://www.iana.org/domains/root/db/casino.html -casino - -// catering : Binky Moon, LLC -// https://www.iana.org/domains/root/db/catering.html -catering - -// catholic : Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) -// https://www.iana.org/domains/root/db/catholic.html -catholic - -// cba : COMMONWEALTH BANK OF AUSTRALIA -// https://www.iana.org/domains/root/db/cba.html -cba - -// cbn : The Christian Broadcasting Network, Inc. -// https://www.iana.org/domains/root/db/cbn.html -cbn - -// cbre : CBRE, Inc. -// https://www.iana.org/domains/root/db/cbre.html -cbre - -// center : Binky Moon, LLC -// https://www.iana.org/domains/root/db/center.html -center - -// ceo : XYZ.COM LLC -// https://www.iana.org/domains/root/db/ceo.html -ceo - -// cern : European Organization for Nuclear Research ("CERN") -// https://www.iana.org/domains/root/db/cern.html -cern - -// cfa : CFA Institute -// https://www.iana.org/domains/root/db/cfa.html -cfa - -// cfd : ShortDot SA -// https://www.iana.org/domains/root/db/cfd.html -cfd - -// chanel : Chanel International B.V. -// https://www.iana.org/domains/root/db/chanel.html -chanel - -// channel : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/channel.html -channel - -// charity : Public Interest Registry -// https://www.iana.org/domains/root/db/charity.html -charity - -// chase : JPMorgan Chase Bank, National Association -// https://www.iana.org/domains/root/db/chase.html -chase - -// chat : Binky Moon, LLC -// https://www.iana.org/domains/root/db/chat.html -chat - -// cheap : Binky Moon, LLC -// https://www.iana.org/domains/root/db/cheap.html -cheap - -// chintai : CHINTAI Corporation -// https://www.iana.org/domains/root/db/chintai.html -chintai - -// christmas : XYZ.COM LLC -// https://www.iana.org/domains/root/db/christmas.html -christmas - -// chrome : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/chrome.html -chrome - -// church : Binky Moon, LLC -// https://www.iana.org/domains/root/db/church.html -church - -// cipriani : Hotel Cipriani Srl -// https://www.iana.org/domains/root/db/cipriani.html -cipriani - -// circle : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/circle.html -circle - -// cisco : Cisco Technology, Inc. -// https://www.iana.org/domains/root/db/cisco.html -cisco - -// citadel : Citadel Domain LLC -// https://www.iana.org/domains/root/db/citadel.html -citadel - -// citi : Citigroup Inc. -// https://www.iana.org/domains/root/db/citi.html -citi - -// citic : CITIC Group Corporation -// https://www.iana.org/domains/root/db/citic.html -citic - -// city : Binky Moon, LLC -// https://www.iana.org/domains/root/db/city.html -city - -// claims : Binky Moon, LLC -// https://www.iana.org/domains/root/db/claims.html -claims - -// cleaning : Binky Moon, LLC -// https://www.iana.org/domains/root/db/cleaning.html -cleaning - -// click : Internet Naming Company LLC -// https://www.iana.org/domains/root/db/click.html -click - -// clinic : Binky Moon, LLC -// https://www.iana.org/domains/root/db/clinic.html -clinic - -// clinique : The Estée Lauder Companies Inc. -// https://www.iana.org/domains/root/db/clinique.html -clinique - -// clothing : Binky Moon, LLC -// https://www.iana.org/domains/root/db/clothing.html -clothing - -// cloud : Aruba PEC S.p.A. -// https://www.iana.org/domains/root/db/cloud.html -cloud - -// club : Registry Services, LLC -// https://www.iana.org/domains/root/db/club.html -club - -// clubmed : Club Méditerranée S.A. -// https://www.iana.org/domains/root/db/clubmed.html -clubmed - -// coach : Binky Moon, LLC -// https://www.iana.org/domains/root/db/coach.html -coach - -// codes : Binky Moon, LLC -// https://www.iana.org/domains/root/db/codes.html -codes - -// coffee : Binky Moon, LLC -// https://www.iana.org/domains/root/db/coffee.html -coffee - -// college : XYZ.COM LLC -// https://www.iana.org/domains/root/db/college.html -college - -// cologne : dotKoeln GmbH -// https://www.iana.org/domains/root/db/cologne.html -cologne - -// commbank : COMMONWEALTH BANK OF AUSTRALIA -// https://www.iana.org/domains/root/db/commbank.html -commbank - -// community : Binky Moon, LLC -// https://www.iana.org/domains/root/db/community.html -community - -// company : Binky Moon, LLC -// https://www.iana.org/domains/root/db/company.html -company - -// compare : Registry Services, LLC -// https://www.iana.org/domains/root/db/compare.html -compare - -// computer : Binky Moon, LLC -// https://www.iana.org/domains/root/db/computer.html -computer - -// comsec : VeriSign, Inc. -// https://www.iana.org/domains/root/db/comsec.html -comsec - -// condos : Binky Moon, LLC -// https://www.iana.org/domains/root/db/condos.html -condos - -// construction : Binky Moon, LLC -// https://www.iana.org/domains/root/db/construction.html -construction - -// consulting : Dog Beach, LLC -// https://www.iana.org/domains/root/db/consulting.html -consulting - -// contact : Dog Beach, LLC -// https://www.iana.org/domains/root/db/contact.html -contact - -// contractors : Binky Moon, LLC -// https://www.iana.org/domains/root/db/contractors.html -contractors - -// cooking : Registry Services, LLC -// https://www.iana.org/domains/root/db/cooking.html -cooking - -// cool : Binky Moon, LLC -// https://www.iana.org/domains/root/db/cool.html -cool - -// corsica : Collectivité de Corse -// https://www.iana.org/domains/root/db/corsica.html -corsica - -// country : Internet Naming Company LLC -// https://www.iana.org/domains/root/db/country.html -country - -// coupon : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/coupon.html -coupon - -// coupons : Binky Moon, LLC -// https://www.iana.org/domains/root/db/coupons.html -coupons - -// courses : Registry Services, LLC -// https://www.iana.org/domains/root/db/courses.html -courses - -// cpa : American Institute of Certified Public Accountants -// https://www.iana.org/domains/root/db/cpa.html -cpa - -// credit : Binky Moon, LLC -// https://www.iana.org/domains/root/db/credit.html -credit - -// creditcard : Binky Moon, LLC -// https://www.iana.org/domains/root/db/creditcard.html -creditcard - -// creditunion : DotCooperation LLC -// https://www.iana.org/domains/root/db/creditunion.html -creditunion - -// cricket : dot Cricket Limited -// https://www.iana.org/domains/root/db/cricket.html -cricket - -// crown : Crown Equipment Corporation -// https://www.iana.org/domains/root/db/crown.html -crown - -// crs : Federated Co-operatives Limited -// https://www.iana.org/domains/root/db/crs.html -crs - -// cruise : Viking River Cruises (Bermuda) Ltd. -// https://www.iana.org/domains/root/db/cruise.html -cruise - -// cruises : Binky Moon, LLC -// https://www.iana.org/domains/root/db/cruises.html -cruises - -// cuisinella : SCHMIDT GROUPE S.A.S. -// https://www.iana.org/domains/root/db/cuisinella.html -cuisinella - -// cymru : Nominet UK -// https://www.iana.org/domains/root/db/cymru.html -cymru - -// cyou : ShortDot SA -// https://www.iana.org/domains/root/db/cyou.html -cyou - -// dabur : Dabur India Limited -// https://www.iana.org/domains/root/db/dabur.html -dabur - -// dad : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/dad.html -dad - -// dance : Dog Beach, LLC -// https://www.iana.org/domains/root/db/dance.html -dance - -// data : Dish DBS Corporation -// https://www.iana.org/domains/root/db/data.html -data - -// date : dot Date Limited -// https://www.iana.org/domains/root/db/date.html -date - -// dating : Binky Moon, LLC -// https://www.iana.org/domains/root/db/dating.html -dating - -// datsun : NISSAN MOTOR CO., LTD. -// https://www.iana.org/domains/root/db/datsun.html -datsun - -// day : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/day.html -day - -// dclk : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/dclk.html -dclk - -// dds : Registry Services, LLC -// https://www.iana.org/domains/root/db/dds.html -dds - -// deal : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/deal.html -deal - -// dealer : Intercap Registry Inc. -// https://www.iana.org/domains/root/db/dealer.html -dealer - -// deals : Binky Moon, LLC -// https://www.iana.org/domains/root/db/deals.html -deals - -// degree : Dog Beach, LLC -// https://www.iana.org/domains/root/db/degree.html -degree - -// delivery : Binky Moon, LLC -// https://www.iana.org/domains/root/db/delivery.html -delivery - -// dell : Dell Inc. -// https://www.iana.org/domains/root/db/dell.html -dell - -// deloitte : Deloitte Touche Tohmatsu -// https://www.iana.org/domains/root/db/deloitte.html -deloitte - -// delta : Delta Air Lines, Inc. -// https://www.iana.org/domains/root/db/delta.html -delta - -// democrat : Dog Beach, LLC -// https://www.iana.org/domains/root/db/democrat.html -democrat - -// dental : Binky Moon, LLC -// https://www.iana.org/domains/root/db/dental.html -dental - -// dentist : Dog Beach, LLC -// https://www.iana.org/domains/root/db/dentist.html -dentist - -// desi -// https://www.iana.org/domains/root/db/desi.html -desi - -// design : Registry Services, LLC -// https://www.iana.org/domains/root/db/design.html -design - -// dev : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/dev.html -dev - -// dhl : Deutsche Post AG -// https://www.iana.org/domains/root/db/dhl.html -dhl - -// diamonds : Binky Moon, LLC -// https://www.iana.org/domains/root/db/diamonds.html -diamonds - -// diet : XYZ.COM LLC -// https://www.iana.org/domains/root/db/diet.html -diet - -// digital : Binky Moon, LLC -// https://www.iana.org/domains/root/db/digital.html -digital - -// direct : Binky Moon, LLC -// https://www.iana.org/domains/root/db/direct.html -direct - -// directory : Binky Moon, LLC -// https://www.iana.org/domains/root/db/directory.html -directory - -// discount : Binky Moon, LLC -// https://www.iana.org/domains/root/db/discount.html -discount - -// discover : Discover Financial Services -// https://www.iana.org/domains/root/db/discover.html -discover - -// dish : Dish DBS Corporation -// https://www.iana.org/domains/root/db/dish.html -dish - -// diy : Internet Naming Company LLC -// https://www.iana.org/domains/root/db/diy.html -diy - -// dnp : Dai Nippon Printing Co., Ltd. -// https://www.iana.org/domains/root/db/dnp.html -dnp - -// docs : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/docs.html -docs - -// doctor : Binky Moon, LLC -// https://www.iana.org/domains/root/db/doctor.html -doctor - -// dog : Binky Moon, LLC -// https://www.iana.org/domains/root/db/dog.html -dog - -// domains : Binky Moon, LLC -// https://www.iana.org/domains/root/db/domains.html -domains - -// dot : Dish DBS Corporation -// https://www.iana.org/domains/root/db/dot.html -dot - -// download : dot Support Limited -// https://www.iana.org/domains/root/db/download.html -download - -// drive : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/drive.html -drive - -// dtv : Dish DBS Corporation -// https://www.iana.org/domains/root/db/dtv.html -dtv - -// dubai : Dubai Smart Government Department -// https://www.iana.org/domains/root/db/dubai.html -dubai - -// dunlop : The Goodyear Tire & Rubber Company -// https://www.iana.org/domains/root/db/dunlop.html -dunlop - -// dupont : DuPont Specialty Products USA, LLC -// https://www.iana.org/domains/root/db/dupont.html -dupont - -// durban : ZA Central Registry NPC trading as ZA Central Registry -// https://www.iana.org/domains/root/db/durban.html -durban - -// dvag : Deutsche Vermögensberatung Aktiengesellschaft DVAG -// https://www.iana.org/domains/root/db/dvag.html -dvag - -// dvr : DISH Technologies L.L.C. -// https://www.iana.org/domains/root/db/dvr.html -dvr - -// earth : Interlink Systems Innovation Institute K.K. -// https://www.iana.org/domains/root/db/earth.html -earth - -// eat : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/eat.html -eat - -// eco : Big Room Inc. -// https://www.iana.org/domains/root/db/eco.html -eco - -// edeka : EDEKA Verband kaufmännischer Genossenschaften e.V. -// https://www.iana.org/domains/root/db/edeka.html -edeka - -// education : Binky Moon, LLC -// https://www.iana.org/domains/root/db/education.html -education - -// email : Binky Moon, LLC -// https://www.iana.org/domains/root/db/email.html -email - -// emerck : Merck KGaA -// https://www.iana.org/domains/root/db/emerck.html -emerck - -// energy : Binky Moon, LLC -// https://www.iana.org/domains/root/db/energy.html -energy - -// engineer : Dog Beach, LLC -// https://www.iana.org/domains/root/db/engineer.html -engineer - -// engineering : Binky Moon, LLC -// https://www.iana.org/domains/root/db/engineering.html -engineering - -// enterprises : Binky Moon, LLC -// https://www.iana.org/domains/root/db/enterprises.html -enterprises - -// epson : Seiko Epson Corporation -// https://www.iana.org/domains/root/db/epson.html -epson - -// equipment : Binky Moon, LLC -// https://www.iana.org/domains/root/db/equipment.html -equipment - -// ericsson : Telefonaktiebolaget L M Ericsson -// https://www.iana.org/domains/root/db/ericsson.html -ericsson - -// erni : ERNI Group Holding AG -// https://www.iana.org/domains/root/db/erni.html -erni - -// esq : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/esq.html -esq - -// estate : Binky Moon, LLC -// https://www.iana.org/domains/root/db/estate.html -estate - -// eurovision : European Broadcasting Union (EBU) -// https://www.iana.org/domains/root/db/eurovision.html -eurovision - -// eus : Puntueus Fundazioa -// https://www.iana.org/domains/root/db/eus.html -eus - -// events : Binky Moon, LLC -// https://www.iana.org/domains/root/db/events.html -events - -// exchange : Binky Moon, LLC -// https://www.iana.org/domains/root/db/exchange.html -exchange - -// expert : Binky Moon, LLC -// https://www.iana.org/domains/root/db/expert.html -expert - -// exposed : Binky Moon, LLC -// https://www.iana.org/domains/root/db/exposed.html -exposed - -// express : Binky Moon, LLC -// https://www.iana.org/domains/root/db/express.html -express - -// extraspace : Extra Space Storage LLC -// https://www.iana.org/domains/root/db/extraspace.html -extraspace - -// fage : Fage International S.A. -// https://www.iana.org/domains/root/db/fage.html -fage - -// fail : Binky Moon, LLC -// https://www.iana.org/domains/root/db/fail.html -fail - -// fairwinds : FairWinds Partners, LLC -// https://www.iana.org/domains/root/db/fairwinds.html -fairwinds - -// faith : dot Faith Limited -// https://www.iana.org/domains/root/db/faith.html -faith - -// family : Dog Beach, LLC -// https://www.iana.org/domains/root/db/family.html -family - -// fan : Dog Beach, LLC -// https://www.iana.org/domains/root/db/fan.html -fan - -// fans : ZDNS International Limited -// https://www.iana.org/domains/root/db/fans.html -fans - -// farm : Binky Moon, LLC -// https://www.iana.org/domains/root/db/farm.html -farm - -// farmers : Farmers Insurance Exchange -// https://www.iana.org/domains/root/db/farmers.html -farmers - -// fashion : Registry Services, LLC -// https://www.iana.org/domains/root/db/fashion.html -fashion - -// fast : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/fast.html -fast - -// fedex : Federal Express Corporation -// https://www.iana.org/domains/root/db/fedex.html -fedex - -// feedback : Top Level Spectrum, Inc. -// https://www.iana.org/domains/root/db/feedback.html -feedback - -// ferrari : Fiat Chrysler Automobiles N.V. -// https://www.iana.org/domains/root/db/ferrari.html -ferrari - -// ferrero : Ferrero Trading Lux S.A. -// https://www.iana.org/domains/root/db/ferrero.html -ferrero - -// fidelity : Fidelity Brokerage Services LLC -// https://www.iana.org/domains/root/db/fidelity.html -fidelity - -// fido : Rogers Communications Canada Inc. -// https://www.iana.org/domains/root/db/fido.html -fido - -// film : Motion Picture Domain Registry Pty Ltd -// https://www.iana.org/domains/root/db/film.html -film - -// final : Núcleo de Informação e Coordenação do Ponto BR - NIC.br -// https://www.iana.org/domains/root/db/final.html -final - -// finance : Binky Moon, LLC -// https://www.iana.org/domains/root/db/finance.html -finance - -// financial : Binky Moon, LLC -// https://www.iana.org/domains/root/db/financial.html -financial - -// fire : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/fire.html -fire - -// firestone : Bridgestone Licensing Services, Inc -// https://www.iana.org/domains/root/db/firestone.html -firestone - -// firmdale : Firmdale Holdings Limited -// https://www.iana.org/domains/root/db/firmdale.html -firmdale - -// fish : Binky Moon, LLC -// https://www.iana.org/domains/root/db/fish.html -fish - -// fishing : Registry Services, LLC -// https://www.iana.org/domains/root/db/fishing.html -fishing - -// fit : Registry Services, LLC -// https://www.iana.org/domains/root/db/fit.html -fit - -// fitness : Binky Moon, LLC -// https://www.iana.org/domains/root/db/fitness.html -fitness - -// flickr : Flickr, Inc. -// https://www.iana.org/domains/root/db/flickr.html -flickr - -// flights : Binky Moon, LLC -// https://www.iana.org/domains/root/db/flights.html -flights - -// flir : FLIR Systems, Inc. -// https://www.iana.org/domains/root/db/flir.html -flir - -// florist : Binky Moon, LLC -// https://www.iana.org/domains/root/db/florist.html -florist - -// flowers : XYZ.COM LLC -// https://www.iana.org/domains/root/db/flowers.html -flowers - -// fly : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/fly.html -fly - -// foo : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/foo.html -foo - -// food : Internet Naming Company LLC -// https://www.iana.org/domains/root/db/food.html -food - -// football : Binky Moon, LLC -// https://www.iana.org/domains/root/db/football.html -football - -// ford : Ford Motor Company -// https://www.iana.org/domains/root/db/ford.html -ford - -// forex : Dog Beach, LLC -// https://www.iana.org/domains/root/db/forex.html -forex - -// forsale : Dog Beach, LLC -// https://www.iana.org/domains/root/db/forsale.html -forsale - -// forum : Fegistry, LLC -// https://www.iana.org/domains/root/db/forum.html -forum - -// foundation : Public Interest Registry -// https://www.iana.org/domains/root/db/foundation.html -foundation - -// fox : FOX Registry, LLC -// https://www.iana.org/domains/root/db/fox.html -fox - -// free : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/free.html -free - -// fresenius : Fresenius Immobilien-Verwaltungs-GmbH -// https://www.iana.org/domains/root/db/fresenius.html -fresenius - -// frl : FRLregistry B.V. -// https://www.iana.org/domains/root/db/frl.html -frl - -// frogans : OP3FT -// https://www.iana.org/domains/root/db/frogans.html -frogans - -// frontier : Frontier Communications Corporation -// https://www.iana.org/domains/root/db/frontier.html -frontier - -// ftr : Frontier Communications Corporation -// https://www.iana.org/domains/root/db/ftr.html -ftr - -// fujitsu : Fujitsu Limited -// https://www.iana.org/domains/root/db/fujitsu.html -fujitsu - -// fun : Radix Technologies Inc. -// https://www.iana.org/domains/root/db/fun.html -fun - -// fund : Binky Moon, LLC -// https://www.iana.org/domains/root/db/fund.html -fund - -// furniture : Binky Moon, LLC -// https://www.iana.org/domains/root/db/furniture.html -furniture - -// futbol : Dog Beach, LLC -// https://www.iana.org/domains/root/db/futbol.html -futbol - -// fyi : Binky Moon, LLC -// https://www.iana.org/domains/root/db/fyi.html -fyi - -// gal : Asociación puntoGAL -// https://www.iana.org/domains/root/db/gal.html -gal - -// gallery : Binky Moon, LLC -// https://www.iana.org/domains/root/db/gallery.html -gallery - -// gallo : Gallo Vineyards, Inc. -// https://www.iana.org/domains/root/db/gallo.html -gallo - -// gallup : Gallup, Inc. -// https://www.iana.org/domains/root/db/gallup.html -gallup - -// game : XYZ.COM LLC -// https://www.iana.org/domains/root/db/game.html -game - -// games : Dog Beach, LLC -// https://www.iana.org/domains/root/db/games.html -games - -// gap : The Gap, Inc. -// https://www.iana.org/domains/root/db/gap.html -gap - -// garden : Registry Services, LLC -// https://www.iana.org/domains/root/db/garden.html -garden - -// gay : Registry Services, LLC -// https://www.iana.org/domains/root/db/gay.html -gay - -// gbiz : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/gbiz.html -gbiz - -// gdn : Joint Stock Company "Navigation-information systems" -// https://www.iana.org/domains/root/db/gdn.html -gdn - -// gea : GEA Group Aktiengesellschaft -// https://www.iana.org/domains/root/db/gea.html -gea - -// gent : Easyhost BV -// https://www.iana.org/domains/root/db/gent.html -gent - -// genting : Resorts World Inc Pte. Ltd. -// https://www.iana.org/domains/root/db/genting.html -genting - -// george : Wal-Mart Stores, Inc. -// https://www.iana.org/domains/root/db/george.html -george - -// ggee : GMO Internet, Inc. -// https://www.iana.org/domains/root/db/ggee.html -ggee - -// gift : DotGift, LLC -// https://www.iana.org/domains/root/db/gift.html -gift - -// gifts : Binky Moon, LLC -// https://www.iana.org/domains/root/db/gifts.html -gifts - -// gives : Public Interest Registry -// https://www.iana.org/domains/root/db/gives.html -gives - -// giving : Public Interest Registry -// https://www.iana.org/domains/root/db/giving.html -giving - -// glass : Binky Moon, LLC -// https://www.iana.org/domains/root/db/glass.html -glass - -// gle : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/gle.html -gle - -// global : Identity Digital Limited -// https://www.iana.org/domains/root/db/global.html -global - -// globo : Globo Comunicação e Participações S.A -// https://www.iana.org/domains/root/db/globo.html -globo - -// gmail : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/gmail.html -gmail - -// gmbh : Binky Moon, LLC -// https://www.iana.org/domains/root/db/gmbh.html -gmbh - -// gmo : GMO Internet, Inc. -// https://www.iana.org/domains/root/db/gmo.html -gmo - -// gmx : 1&1 Mail & Media GmbH -// https://www.iana.org/domains/root/db/gmx.html -gmx - -// godaddy : Go Daddy East, LLC -// https://www.iana.org/domains/root/db/godaddy.html -godaddy - -// gold : Binky Moon, LLC -// https://www.iana.org/domains/root/db/gold.html -gold - -// goldpoint : YODOBASHI CAMERA CO.,LTD. -// https://www.iana.org/domains/root/db/goldpoint.html -goldpoint - -// golf : Binky Moon, LLC -// https://www.iana.org/domains/root/db/golf.html -golf - -// goo : NTT DOCOMO, INC. -// https://www.iana.org/domains/root/db/goo.html -goo - -// goodyear : The Goodyear Tire & Rubber Company -// https://www.iana.org/domains/root/db/goodyear.html -goodyear - -// goog : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/goog.html -goog - -// google : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/google.html -google - -// gop : Republican State Leadership Committee, Inc. -// https://www.iana.org/domains/root/db/gop.html -gop - -// got : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/got.html -got - -// grainger : Grainger Registry Services, LLC -// https://www.iana.org/domains/root/db/grainger.html -grainger - -// graphics : Binky Moon, LLC -// https://www.iana.org/domains/root/db/graphics.html -graphics - -// gratis : Binky Moon, LLC -// https://www.iana.org/domains/root/db/gratis.html -gratis - -// green : Identity Digital Limited -// https://www.iana.org/domains/root/db/green.html -green - -// gripe : Binky Moon, LLC -// https://www.iana.org/domains/root/db/gripe.html -gripe - -// grocery : Wal-Mart Stores, Inc. -// https://www.iana.org/domains/root/db/grocery.html -grocery - -// group : Binky Moon, LLC -// https://www.iana.org/domains/root/db/group.html -group - -// gucci : Guccio Gucci S.p.a. -// https://www.iana.org/domains/root/db/gucci.html -gucci - -// guge : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/guge.html -guge - -// guide : Binky Moon, LLC -// https://www.iana.org/domains/root/db/guide.html -guide - -// guitars : XYZ.COM LLC -// https://www.iana.org/domains/root/db/guitars.html -guitars - -// guru : Binky Moon, LLC -// https://www.iana.org/domains/root/db/guru.html -guru - -// hair : XYZ.COM LLC -// https://www.iana.org/domains/root/db/hair.html -hair - -// hamburg : Hamburg Top-Level-Domain GmbH -// https://www.iana.org/domains/root/db/hamburg.html -hamburg - -// hangout : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/hangout.html -hangout - -// haus : Dog Beach, LLC -// https://www.iana.org/domains/root/db/haus.html -haus - -// hbo : HBO Registry Services, Inc. -// https://www.iana.org/domains/root/db/hbo.html -hbo - -// hdfc : HOUSING DEVELOPMENT FINANCE CORPORATION LIMITED -// https://www.iana.org/domains/root/db/hdfc.html -hdfc - -// hdfcbank : HDFC Bank Limited -// https://www.iana.org/domains/root/db/hdfcbank.html -hdfcbank - -// health : Registry Services, LLC -// https://www.iana.org/domains/root/db/health.html -health - -// healthcare : Binky Moon, LLC -// https://www.iana.org/domains/root/db/healthcare.html -healthcare - -// help : Innovation service Limited -// https://www.iana.org/domains/root/db/help.html -help - -// helsinki : City of Helsinki -// https://www.iana.org/domains/root/db/helsinki.html -helsinki - -// here : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/here.html -here - -// hermes : HERMES INTERNATIONAL -// https://www.iana.org/domains/root/db/hermes.html -hermes - -// hiphop : Dot Hip Hop, LLC -// https://www.iana.org/domains/root/db/hiphop.html -hiphop - -// hisamitsu : Hisamitsu Pharmaceutical Co.,Inc. -// https://www.iana.org/domains/root/db/hisamitsu.html -hisamitsu - -// hitachi : Hitachi, Ltd. -// https://www.iana.org/domains/root/db/hitachi.html -hitachi - -// hiv : Internet Naming Company LLC -// https://www.iana.org/domains/root/db/hiv.html -hiv - -// hkt : PCCW-HKT DataCom Services Limited -// https://www.iana.org/domains/root/db/hkt.html -hkt - -// hockey : Binky Moon, LLC -// https://www.iana.org/domains/root/db/hockey.html -hockey - -// holdings : Binky Moon, LLC -// https://www.iana.org/domains/root/db/holdings.html -holdings - -// holiday : Binky Moon, LLC -// https://www.iana.org/domains/root/db/holiday.html -holiday - -// homedepot : Home Depot Product Authority, LLC -// https://www.iana.org/domains/root/db/homedepot.html -homedepot - -// homegoods : The TJX Companies, Inc. -// https://www.iana.org/domains/root/db/homegoods.html -homegoods - -// homes : XYZ.COM LLC -// https://www.iana.org/domains/root/db/homes.html -homes - -// homesense : The TJX Companies, Inc. -// https://www.iana.org/domains/root/db/homesense.html -homesense - -// honda : Honda Motor Co., Ltd. -// https://www.iana.org/domains/root/db/honda.html -honda - -// horse : Registry Services, LLC -// https://www.iana.org/domains/root/db/horse.html -horse - -// hospital : Binky Moon, LLC -// https://www.iana.org/domains/root/db/hospital.html -hospital - -// host : Radix Technologies Inc. -// https://www.iana.org/domains/root/db/host.html -host - -// hosting : XYZ.COM LLC -// https://www.iana.org/domains/root/db/hosting.html -hosting - -// hot : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/hot.html -hot - -// hotels : Booking.com B.V. -// https://www.iana.org/domains/root/db/hotels.html -hotels - -// hotmail : Microsoft Corporation -// https://www.iana.org/domains/root/db/hotmail.html -hotmail - -// house : Binky Moon, LLC -// https://www.iana.org/domains/root/db/house.html -house - -// how : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/how.html -how - -// hsbc : HSBC Global Services (UK) Limited -// https://www.iana.org/domains/root/db/hsbc.html -hsbc - -// hughes : Hughes Satellite Systems Corporation -// https://www.iana.org/domains/root/db/hughes.html -hughes - -// hyatt : Hyatt GTLD, L.L.C. -// https://www.iana.org/domains/root/db/hyatt.html -hyatt - -// hyundai : Hyundai Motor Company -// https://www.iana.org/domains/root/db/hyundai.html -hyundai - -// ibm : International Business Machines Corporation -// https://www.iana.org/domains/root/db/ibm.html -ibm - -// icbc : Industrial and Commercial Bank of China Limited -// https://www.iana.org/domains/root/db/icbc.html -icbc - -// ice : IntercontinentalExchange, Inc. -// https://www.iana.org/domains/root/db/ice.html -ice - -// icu : ShortDot SA -// https://www.iana.org/domains/root/db/icu.html -icu - -// ieee : IEEE Global LLC -// https://www.iana.org/domains/root/db/ieee.html -ieee - -// ifm : ifm electronic gmbh -// https://www.iana.org/domains/root/db/ifm.html -ifm - -// ikano : Ikano S.A. -// https://www.iana.org/domains/root/db/ikano.html -ikano - -// imamat : Fondation Aga Khan (Aga Khan Foundation) -// https://www.iana.org/domains/root/db/imamat.html -imamat - -// imdb : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/imdb.html -imdb - -// immo : Binky Moon, LLC -// https://www.iana.org/domains/root/db/immo.html -immo - -// immobilien : Dog Beach, LLC -// https://www.iana.org/domains/root/db/immobilien.html -immobilien - -// inc : Intercap Registry Inc. -// https://www.iana.org/domains/root/db/inc.html -inc - -// industries : Binky Moon, LLC -// https://www.iana.org/domains/root/db/industries.html -industries - -// infiniti : NISSAN MOTOR CO., LTD. -// https://www.iana.org/domains/root/db/infiniti.html -infiniti - -// ing : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/ing.html -ing - -// ink : Registry Services, LLC -// https://www.iana.org/domains/root/db/ink.html -ink - -// institute : Binky Moon, LLC -// https://www.iana.org/domains/root/db/institute.html -institute - -// insurance : fTLD Registry Services LLC -// https://www.iana.org/domains/root/db/insurance.html -insurance - -// insure : Binky Moon, LLC -// https://www.iana.org/domains/root/db/insure.html -insure - -// international : Binky Moon, LLC -// https://www.iana.org/domains/root/db/international.html -international - -// intuit : Intuit Administrative Services, Inc. -// https://www.iana.org/domains/root/db/intuit.html -intuit - -// investments : Binky Moon, LLC -// https://www.iana.org/domains/root/db/investments.html -investments - -// ipiranga : Ipiranga Produtos de Petroleo S.A. -// https://www.iana.org/domains/root/db/ipiranga.html -ipiranga - -// irish : Binky Moon, LLC -// https://www.iana.org/domains/root/db/irish.html -irish - -// ismaili : Fondation Aga Khan (Aga Khan Foundation) -// https://www.iana.org/domains/root/db/ismaili.html -ismaili - -// ist : Istanbul Metropolitan Municipality -// https://www.iana.org/domains/root/db/ist.html -ist - -// istanbul : Istanbul Metropolitan Municipality -// https://www.iana.org/domains/root/db/istanbul.html -istanbul - -// itau : Itau Unibanco Holding S.A. -// https://www.iana.org/domains/root/db/itau.html -itau - -// itv : ITV Services Limited -// https://www.iana.org/domains/root/db/itv.html -itv - -// jaguar : Jaguar Land Rover Ltd -// https://www.iana.org/domains/root/db/jaguar.html -jaguar - -// java : Oracle Corporation -// https://www.iana.org/domains/root/db/java.html -java - -// jcb : JCB Co., Ltd. -// https://www.iana.org/domains/root/db/jcb.html -jcb - -// jeep : FCA US LLC. -// https://www.iana.org/domains/root/db/jeep.html -jeep - -// jetzt : Binky Moon, LLC -// https://www.iana.org/domains/root/db/jetzt.html -jetzt - -// jewelry : Binky Moon, LLC -// https://www.iana.org/domains/root/db/jewelry.html -jewelry - -// jio : Reliance Industries Limited -// https://www.iana.org/domains/root/db/jio.html -jio - -// jll : Jones Lang LaSalle Incorporated -// https://www.iana.org/domains/root/db/jll.html -jll - -// jmp : Matrix IP LLC -// https://www.iana.org/domains/root/db/jmp.html -jmp - -// jnj : Johnson & Johnson Services, Inc. -// https://www.iana.org/domains/root/db/jnj.html -jnj - -// joburg : ZA Central Registry NPC trading as ZA Central Registry -// https://www.iana.org/domains/root/db/joburg.html -joburg - -// jot : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/jot.html -jot - -// joy : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/joy.html -joy - -// jpmorgan : JPMorgan Chase Bank, National Association -// https://www.iana.org/domains/root/db/jpmorgan.html -jpmorgan - -// jprs : Japan Registry Services Co., Ltd. -// https://www.iana.org/domains/root/db/jprs.html -jprs - -// juegos : Dog Beach, LLC -// https://www.iana.org/domains/root/db/juegos.html -juegos - -// juniper : JUNIPER NETWORKS, INC. -// https://www.iana.org/domains/root/db/juniper.html -juniper - -// kaufen : Dog Beach, LLC -// https://www.iana.org/domains/root/db/kaufen.html -kaufen - -// kddi : KDDI CORPORATION -// https://www.iana.org/domains/root/db/kddi.html -kddi - -// kerryhotels : Kerry Trading Co. Limited -// https://www.iana.org/domains/root/db/kerryhotels.html -kerryhotels - -// kerrylogistics : Kerry Trading Co. Limited -// https://www.iana.org/domains/root/db/kerrylogistics.html -kerrylogistics - -// kerryproperties : Kerry Trading Co. Limited -// https://www.iana.org/domains/root/db/kerryproperties.html -kerryproperties - -// kfh : Kuwait Finance House -// https://www.iana.org/domains/root/db/kfh.html -kfh - -// kia : KIA MOTORS CORPORATION -// https://www.iana.org/domains/root/db/kia.html -kia - -// kids : DotKids Foundation Limited -// https://www.iana.org/domains/root/db/kids.html -kids - -// kim : Identity Digital Limited -// https://www.iana.org/domains/root/db/kim.html -kim - -// kindle : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/kindle.html -kindle - -// kitchen : Binky Moon, LLC -// https://www.iana.org/domains/root/db/kitchen.html -kitchen - -// kiwi : DOT KIWI LIMITED -// https://www.iana.org/domains/root/db/kiwi.html -kiwi - -// koeln : dotKoeln GmbH -// https://www.iana.org/domains/root/db/koeln.html -koeln - -// komatsu : Komatsu Ltd. -// https://www.iana.org/domains/root/db/komatsu.html -komatsu - -// kosher : Kosher Marketing Assets LLC -// https://www.iana.org/domains/root/db/kosher.html -kosher - -// kpmg : KPMG International Cooperative (KPMG International Genossenschaft) -// https://www.iana.org/domains/root/db/kpmg.html -kpmg - -// kpn : Koninklijke KPN N.V. -// https://www.iana.org/domains/root/db/kpn.html -kpn - -// krd : KRG Department of Information Technology -// https://www.iana.org/domains/root/db/krd.html -krd - -// kred : KredTLD Pty Ltd -// https://www.iana.org/domains/root/db/kred.html -kred - -// kuokgroup : Kerry Trading Co. Limited -// https://www.iana.org/domains/root/db/kuokgroup.html -kuokgroup - -// kyoto : Academic Institution: Kyoto Jyoho Gakuen -// https://www.iana.org/domains/root/db/kyoto.html -kyoto - -// lacaixa : Fundación Bancaria Caixa d’Estalvis i Pensions de Barcelona, “la Caixa” -// https://www.iana.org/domains/root/db/lacaixa.html -lacaixa - -// lamborghini : Automobili Lamborghini S.p.A. -// https://www.iana.org/domains/root/db/lamborghini.html -lamborghini - -// lamer : The Estée Lauder Companies Inc. -// https://www.iana.org/domains/root/db/lamer.html -lamer - -// lancaster : LANCASTER -// https://www.iana.org/domains/root/db/lancaster.html -lancaster - -// land : Binky Moon, LLC -// https://www.iana.org/domains/root/db/land.html -land - -// landrover : Jaguar Land Rover Ltd -// https://www.iana.org/domains/root/db/landrover.html -landrover - -// lanxess : LANXESS Corporation -// https://www.iana.org/domains/root/db/lanxess.html -lanxess - -// lasalle : Jones Lang LaSalle Incorporated -// https://www.iana.org/domains/root/db/lasalle.html -lasalle - -// lat : XYZ.COM LLC -// https://www.iana.org/domains/root/db/lat.html -lat - -// latino : Dish DBS Corporation -// https://www.iana.org/domains/root/db/latino.html -latino - -// latrobe : La Trobe University -// https://www.iana.org/domains/root/db/latrobe.html -latrobe - -// law : Registry Services, LLC -// https://www.iana.org/domains/root/db/law.html -law - -// lawyer : Dog Beach, LLC -// https://www.iana.org/domains/root/db/lawyer.html -lawyer - -// lds : IRI Domain Management, LLC -// https://www.iana.org/domains/root/db/lds.html -lds - -// lease : Binky Moon, LLC -// https://www.iana.org/domains/root/db/lease.html -lease - -// leclerc : A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc -// https://www.iana.org/domains/root/db/leclerc.html -leclerc - -// lefrak : LeFrak Organization, Inc. -// https://www.iana.org/domains/root/db/lefrak.html -lefrak - -// legal : Binky Moon, LLC -// https://www.iana.org/domains/root/db/legal.html -legal - -// lego : LEGO Juris A/S -// https://www.iana.org/domains/root/db/lego.html -lego - -// lexus : TOYOTA MOTOR CORPORATION -// https://www.iana.org/domains/root/db/lexus.html -lexus - -// lgbt : Identity Digital Limited -// https://www.iana.org/domains/root/db/lgbt.html -lgbt - -// lidl : Schwarz Domains und Services GmbH & Co. KG -// https://www.iana.org/domains/root/db/lidl.html -lidl - -// life : Binky Moon, LLC -// https://www.iana.org/domains/root/db/life.html -life - -// lifeinsurance : American Council of Life Insurers -// https://www.iana.org/domains/root/db/lifeinsurance.html -lifeinsurance - -// lifestyle : Internet Naming Company LLC -// https://www.iana.org/domains/root/db/lifestyle.html -lifestyle - -// lighting : Binky Moon, LLC -// https://www.iana.org/domains/root/db/lighting.html -lighting - -// like : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/like.html -like - -// lilly : Eli Lilly and Company -// https://www.iana.org/domains/root/db/lilly.html -lilly - -// limited : Binky Moon, LLC -// https://www.iana.org/domains/root/db/limited.html -limited - -// limo : Binky Moon, LLC -// https://www.iana.org/domains/root/db/limo.html -limo - -// lincoln : Ford Motor Company -// https://www.iana.org/domains/root/db/lincoln.html -lincoln - -// link : Nova Registry Ltd -// https://www.iana.org/domains/root/db/link.html -link - -// lipsy : Lipsy Ltd -// https://www.iana.org/domains/root/db/lipsy.html -lipsy - -// live : Dog Beach, LLC -// https://www.iana.org/domains/root/db/live.html -live - -// living : Internet Naming Company LLC -// https://www.iana.org/domains/root/db/living.html -living - -// llc : Identity Digital Limited -// https://www.iana.org/domains/root/db/llc.html -llc - -// llp : Intercap Registry Inc. -// https://www.iana.org/domains/root/db/llp.html -llp - -// loan : dot Loan Limited -// https://www.iana.org/domains/root/db/loan.html -loan - -// loans : Binky Moon, LLC -// https://www.iana.org/domains/root/db/loans.html -loans - -// locker : Orange Domains LLC -// https://www.iana.org/domains/root/db/locker.html -locker - -// locus : Locus Analytics LLC -// https://www.iana.org/domains/root/db/locus.html -locus - -// lol : XYZ.COM LLC -// https://www.iana.org/domains/root/db/lol.html -lol - -// london : Dot London Domains Limited -// https://www.iana.org/domains/root/db/london.html -london - -// lotte : Lotte Holdings Co., Ltd. -// https://www.iana.org/domains/root/db/lotte.html -lotte - -// lotto : Identity Digital Limited -// https://www.iana.org/domains/root/db/lotto.html -lotto - -// love : Waterford Limited -// https://www.iana.org/domains/root/db/love.html -love - -// lpl : LPL Holdings, Inc. -// https://www.iana.org/domains/root/db/lpl.html -lpl - -// lplfinancial : LPL Holdings, Inc. -// https://www.iana.org/domains/root/db/lplfinancial.html -lplfinancial - -// ltd : Binky Moon, LLC -// https://www.iana.org/domains/root/db/ltd.html -ltd - -// ltda : InterNetX, Corp -// https://www.iana.org/domains/root/db/ltda.html -ltda - -// lundbeck : H. Lundbeck A/S -// https://www.iana.org/domains/root/db/lundbeck.html -lundbeck - -// luxe : Registry Services, LLC -// https://www.iana.org/domains/root/db/luxe.html -luxe - -// luxury : Luxury Partners, LLC -// https://www.iana.org/domains/root/db/luxury.html -luxury - -// madrid : Comunidad de Madrid -// https://www.iana.org/domains/root/db/madrid.html -madrid - -// maif : Mutuelle Assurance Instituteur France (MAIF) -// https://www.iana.org/domains/root/db/maif.html -maif - -// maison : Binky Moon, LLC -// https://www.iana.org/domains/root/db/maison.html -maison - -// makeup : XYZ.COM LLC -// https://www.iana.org/domains/root/db/makeup.html -makeup - -// man : MAN SE -// https://www.iana.org/domains/root/db/man.html -man - -// management : Binky Moon, LLC -// https://www.iana.org/domains/root/db/management.html -management - -// mango : PUNTO FA S.L. -// https://www.iana.org/domains/root/db/mango.html -mango - -// map : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/map.html -map - -// market : Dog Beach, LLC -// https://www.iana.org/domains/root/db/market.html -market - -// marketing : Binky Moon, LLC -// https://www.iana.org/domains/root/db/marketing.html -marketing - -// markets : Dog Beach, LLC -// https://www.iana.org/domains/root/db/markets.html -markets - -// marriott : Marriott Worldwide Corporation -// https://www.iana.org/domains/root/db/marriott.html -marriott - -// marshalls : The TJX Companies, Inc. -// https://www.iana.org/domains/root/db/marshalls.html -marshalls - -// mattel : Mattel Sites, Inc. -// https://www.iana.org/domains/root/db/mattel.html -mattel - -// mba : Binky Moon, LLC -// https://www.iana.org/domains/root/db/mba.html -mba - -// mckinsey : McKinsey Holdings, Inc. -// https://www.iana.org/domains/root/db/mckinsey.html -mckinsey - -// med : Medistry LLC -// https://www.iana.org/domains/root/db/med.html -med - -// media : Binky Moon, LLC -// https://www.iana.org/domains/root/db/media.html -media - -// meet : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/meet.html -meet - -// melbourne : The Crown in right of the State of Victoria, represented by its Department of State Development, Business and Innovation -// https://www.iana.org/domains/root/db/melbourne.html -melbourne - -// meme : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/meme.html -meme - -// memorial : Dog Beach, LLC -// https://www.iana.org/domains/root/db/memorial.html -memorial - -// men : Exclusive Registry Limited -// https://www.iana.org/domains/root/db/men.html -men - -// menu : Dot Menu Registry, LLC -// https://www.iana.org/domains/root/db/menu.html -menu - -// merckmsd : MSD Registry Holdings, Inc. -// https://www.iana.org/domains/root/db/merckmsd.html -merckmsd - -// miami : Registry Services, LLC -// https://www.iana.org/domains/root/db/miami.html -miami - -// microsoft : Microsoft Corporation -// https://www.iana.org/domains/root/db/microsoft.html -microsoft - -// mini : Bayerische Motoren Werke Aktiengesellschaft -// https://www.iana.org/domains/root/db/mini.html -mini - -// mint : Intuit Administrative Services, Inc. -// https://www.iana.org/domains/root/db/mint.html -mint - -// mit : Massachusetts Institute of Technology -// https://www.iana.org/domains/root/db/mit.html -mit - -// mitsubishi : Mitsubishi Corporation -// https://www.iana.org/domains/root/db/mitsubishi.html -mitsubishi - -// mlb : MLB Advanced Media DH, LLC -// https://www.iana.org/domains/root/db/mlb.html -mlb - -// mls : The Canadian Real Estate Association -// https://www.iana.org/domains/root/db/mls.html -mls - -// mma : MMA IARD -// https://www.iana.org/domains/root/db/mma.html -mma - -// mobile : Dish DBS Corporation -// https://www.iana.org/domains/root/db/mobile.html -mobile - -// moda : Dog Beach, LLC -// https://www.iana.org/domains/root/db/moda.html -moda - -// moe : Interlink Systems Innovation Institute K.K. -// https://www.iana.org/domains/root/db/moe.html -moe - -// moi : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/moi.html -moi - -// mom : XYZ.COM LLC -// https://www.iana.org/domains/root/db/mom.html -mom - -// monash : Monash University -// https://www.iana.org/domains/root/db/monash.html -monash - -// money : Binky Moon, LLC -// https://www.iana.org/domains/root/db/money.html -money - -// monster : XYZ.COM LLC -// https://www.iana.org/domains/root/db/monster.html -monster - -// mormon : IRI Domain Management, LLC -// https://www.iana.org/domains/root/db/mormon.html -mormon - -// mortgage : Dog Beach, LLC -// https://www.iana.org/domains/root/db/mortgage.html -mortgage - -// moscow : Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) -// https://www.iana.org/domains/root/db/moscow.html -moscow - -// moto : Motorola Trademark Holdings, LLC -// https://www.iana.org/domains/root/db/moto.html -moto - -// motorcycles : XYZ.COM LLC -// https://www.iana.org/domains/root/db/motorcycles.html -motorcycles - -// mov : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/mov.html -mov - -// movie : Binky Moon, LLC -// https://www.iana.org/domains/root/db/movie.html -movie - -// msd : MSD Registry Holdings, Inc. -// https://www.iana.org/domains/root/db/msd.html -msd - -// mtn : MTN Dubai Limited -// https://www.iana.org/domains/root/db/mtn.html -mtn - -// mtr : MTR Corporation Limited -// https://www.iana.org/domains/root/db/mtr.html -mtr - -// music : DotMusic Limited -// https://www.iana.org/domains/root/db/music.html -music - -// nab : National Australia Bank Limited -// https://www.iana.org/domains/root/db/nab.html -nab - -// nagoya : GMO Registry, Inc. -// https://www.iana.org/domains/root/db/nagoya.html -nagoya - -// navy : Dog Beach, LLC -// https://www.iana.org/domains/root/db/navy.html -navy - -// nba : NBA REGISTRY, LLC -// https://www.iana.org/domains/root/db/nba.html -nba - -// nec : NEC Corporation -// https://www.iana.org/domains/root/db/nec.html -nec - -// netbank : COMMONWEALTH BANK OF AUSTRALIA -// https://www.iana.org/domains/root/db/netbank.html -netbank - -// netflix : Netflix, Inc. -// https://www.iana.org/domains/root/db/netflix.html -netflix - -// network : Binky Moon, LLC -// https://www.iana.org/domains/root/db/network.html -network - -// neustar : NeuStar, Inc. -// https://www.iana.org/domains/root/db/neustar.html -neustar - -// new : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/new.html -new - -// news : Dog Beach, LLC -// https://www.iana.org/domains/root/db/news.html -news - -// next : Next plc -// https://www.iana.org/domains/root/db/next.html -next - -// nextdirect : Next plc -// https://www.iana.org/domains/root/db/nextdirect.html -nextdirect - -// nexus : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/nexus.html -nexus - -// nfl : NFL Reg Ops LLC -// https://www.iana.org/domains/root/db/nfl.html -nfl - -// ngo : Public Interest Registry -// https://www.iana.org/domains/root/db/ngo.html -ngo - -// nhk : Japan Broadcasting Corporation (NHK) -// https://www.iana.org/domains/root/db/nhk.html -nhk - -// nico : DWANGO Co., Ltd. -// https://www.iana.org/domains/root/db/nico.html -nico - -// nike : NIKE, Inc. -// https://www.iana.org/domains/root/db/nike.html -nike - -// nikon : NIKON CORPORATION -// https://www.iana.org/domains/root/db/nikon.html -nikon - -// ninja : Dog Beach, LLC -// https://www.iana.org/domains/root/db/ninja.html -ninja - -// nissan : NISSAN MOTOR CO., LTD. -// https://www.iana.org/domains/root/db/nissan.html -nissan - -// nissay : Nippon Life Insurance Company -// https://www.iana.org/domains/root/db/nissay.html -nissay - -// nokia : Nokia Corporation -// https://www.iana.org/domains/root/db/nokia.html -nokia - -// norton : NortonLifeLock Inc. -// https://www.iana.org/domains/root/db/norton.html -norton - -// now : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/now.html -now - -// nowruz : Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. -// https://www.iana.org/domains/root/db/nowruz.html -nowruz - -// nowtv : Starbucks (HK) Limited -// https://www.iana.org/domains/root/db/nowtv.html -nowtv - -// nra : NRA Holdings Company, INC. -// https://www.iana.org/domains/root/db/nra.html -nra - -// nrw : Minds + Machines GmbH -// https://www.iana.org/domains/root/db/nrw.html -nrw - -// ntt : NIPPON TELEGRAPH AND TELEPHONE CORPORATION -// https://www.iana.org/domains/root/db/ntt.html -ntt - -// nyc : The City of New York by and through the New York City Department of Information Technology & Telecommunications -// https://www.iana.org/domains/root/db/nyc.html -nyc - -// obi : OBI Group Holding SE & Co. KGaA -// https://www.iana.org/domains/root/db/obi.html -obi - -// observer : Fegistry, LLC -// https://www.iana.org/domains/root/db/observer.html -observer - -// office : Microsoft Corporation -// https://www.iana.org/domains/root/db/office.html -office - -// okinawa : BRregistry, Inc. -// https://www.iana.org/domains/root/db/okinawa.html -okinawa - -// olayan : Competrol (Luxembourg) Sarl -// https://www.iana.org/domains/root/db/olayan.html -olayan - -// olayangroup : Competrol (Luxembourg) Sarl -// https://www.iana.org/domains/root/db/olayangroup.html -olayangroup - -// ollo : Dish DBS Corporation -// https://www.iana.org/domains/root/db/ollo.html -ollo - -// omega : The Swatch Group Ltd -// https://www.iana.org/domains/root/db/omega.html -omega - -// one : One.com A/S -// https://www.iana.org/domains/root/db/one.html -one - -// ong : Public Interest Registry -// https://www.iana.org/domains/root/db/ong.html -ong - -// onl : iRegistry GmbH -// https://www.iana.org/domains/root/db/onl.html -onl - -// online : Radix Technologies Inc. -// https://www.iana.org/domains/root/db/online.html -online - -// ooo : INFIBEAM AVENUES LIMITED -// https://www.iana.org/domains/root/db/ooo.html -ooo - -// open : American Express Travel Related Services Company, Inc. -// https://www.iana.org/domains/root/db/open.html -open - -// oracle : Oracle Corporation -// https://www.iana.org/domains/root/db/oracle.html -oracle - -// orange : Orange Brand Services Limited -// https://www.iana.org/domains/root/db/orange.html -orange - -// organic : Identity Digital Limited -// https://www.iana.org/domains/root/db/organic.html -organic - -// origins : The Estée Lauder Companies Inc. -// https://www.iana.org/domains/root/db/origins.html -origins - -// osaka : Osaka Registry Co., Ltd. -// https://www.iana.org/domains/root/db/osaka.html -osaka - -// otsuka : Otsuka Holdings Co., Ltd. -// https://www.iana.org/domains/root/db/otsuka.html -otsuka - -// ott : Dish DBS Corporation -// https://www.iana.org/domains/root/db/ott.html -ott - -// ovh : MédiaBC -// https://www.iana.org/domains/root/db/ovh.html -ovh - -// page : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/page.html -page - -// panasonic : Panasonic Holdings Corporation -// https://www.iana.org/domains/root/db/panasonic.html -panasonic - -// paris : City of Paris -// https://www.iana.org/domains/root/db/paris.html -paris - -// pars : Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. -// https://www.iana.org/domains/root/db/pars.html -pars - -// partners : Binky Moon, LLC -// https://www.iana.org/domains/root/db/partners.html -partners - -// parts : Binky Moon, LLC -// https://www.iana.org/domains/root/db/parts.html -parts - -// party : Blue Sky Registry Limited -// https://www.iana.org/domains/root/db/party.html -party - -// pay : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/pay.html -pay - -// pccw : PCCW Enterprises Limited -// https://www.iana.org/domains/root/db/pccw.html -pccw - -// pet : Identity Digital Limited -// https://www.iana.org/domains/root/db/pet.html -pet - -// pfizer : Pfizer Inc. -// https://www.iana.org/domains/root/db/pfizer.html -pfizer - -// pharmacy : National Association of Boards of Pharmacy -// https://www.iana.org/domains/root/db/pharmacy.html -pharmacy - -// phd : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/phd.html -phd - -// philips : Koninklijke Philips N.V. -// https://www.iana.org/domains/root/db/philips.html -philips - -// phone : Dish DBS Corporation -// https://www.iana.org/domains/root/db/phone.html -phone - -// photo : Registry Services, LLC -// https://www.iana.org/domains/root/db/photo.html -photo - -// photography : Binky Moon, LLC -// https://www.iana.org/domains/root/db/photography.html -photography - -// photos : Binky Moon, LLC -// https://www.iana.org/domains/root/db/photos.html -photos - -// physio : PhysBiz Pty Ltd -// https://www.iana.org/domains/root/db/physio.html -physio - -// pics : XYZ.COM LLC -// https://www.iana.org/domains/root/db/pics.html -pics - -// pictet : Pictet Europe S.A. -// https://www.iana.org/domains/root/db/pictet.html -pictet - -// pictures : Binky Moon, LLC -// https://www.iana.org/domains/root/db/pictures.html -pictures - -// pid : Top Level Spectrum, Inc. -// https://www.iana.org/domains/root/db/pid.html -pid - -// pin : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/pin.html -pin - -// ping : Ping Registry Provider, Inc. -// https://www.iana.org/domains/root/db/ping.html -ping - -// pink : Identity Digital Limited -// https://www.iana.org/domains/root/db/pink.html -pink - -// pioneer : Pioneer Corporation -// https://www.iana.org/domains/root/db/pioneer.html -pioneer - -// pizza : Binky Moon, LLC -// https://www.iana.org/domains/root/db/pizza.html -pizza - -// place : Binky Moon, LLC -// https://www.iana.org/domains/root/db/place.html -place - -// play : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/play.html -play - -// playstation : Sony Interactive Entertainment Inc. -// https://www.iana.org/domains/root/db/playstation.html -playstation - -// plumbing : Binky Moon, LLC -// https://www.iana.org/domains/root/db/plumbing.html -plumbing - -// plus : Binky Moon, LLC -// https://www.iana.org/domains/root/db/plus.html -plus - -// pnc : PNC Domain Co., LLC -// https://www.iana.org/domains/root/db/pnc.html -pnc - -// pohl : Deutsche Vermögensberatung Aktiengesellschaft DVAG -// https://www.iana.org/domains/root/db/pohl.html -pohl - -// poker : Identity Digital Limited -// https://www.iana.org/domains/root/db/poker.html -poker - -// politie : Politie Nederland -// https://www.iana.org/domains/root/db/politie.html -politie - -// porn : ICM Registry PN LLC -// https://www.iana.org/domains/root/db/porn.html -porn - -// pramerica : Prudential Financial, Inc. -// https://www.iana.org/domains/root/db/pramerica.html -pramerica - -// praxi : Praxi S.p.A. -// https://www.iana.org/domains/root/db/praxi.html -praxi - -// press : Radix Technologies Inc. -// https://www.iana.org/domains/root/db/press.html -press - -// prime : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/prime.html -prime - -// prod : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/prod.html -prod - -// productions : Binky Moon, LLC -// https://www.iana.org/domains/root/db/productions.html -productions - -// prof : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/prof.html -prof - -// progressive : Progressive Casualty Insurance Company -// https://www.iana.org/domains/root/db/progressive.html -progressive - -// promo : Identity Digital Limited -// https://www.iana.org/domains/root/db/promo.html -promo - -// properties : Binky Moon, LLC -// https://www.iana.org/domains/root/db/properties.html -properties - -// property : Digital Property Infrastructure Limited -// https://www.iana.org/domains/root/db/property.html -property - -// protection : XYZ.COM LLC -// https://www.iana.org/domains/root/db/protection.html -protection - -// pru : Prudential Financial, Inc. -// https://www.iana.org/domains/root/db/pru.html -pru - -// prudential : Prudential Financial, Inc. -// https://www.iana.org/domains/root/db/prudential.html -prudential - -// pub : Dog Beach, LLC -// https://www.iana.org/domains/root/db/pub.html -pub - -// pwc : PricewaterhouseCoopers LLP -// https://www.iana.org/domains/root/db/pwc.html -pwc - -// qpon : dotQPON LLC -// https://www.iana.org/domains/root/db/qpon.html -qpon - -// quebec : PointQuébec Inc -// https://www.iana.org/domains/root/db/quebec.html -quebec - -// quest : XYZ.COM LLC -// https://www.iana.org/domains/root/db/quest.html -quest - -// racing : Premier Registry Limited -// https://www.iana.org/domains/root/db/racing.html -racing - -// radio : European Broadcasting Union (EBU) -// https://www.iana.org/domains/root/db/radio.html -radio - -// read : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/read.html -read - -// realestate : dotRealEstate LLC -// https://www.iana.org/domains/root/db/realestate.html -realestate - -// realtor : Real Estate Domains LLC -// https://www.iana.org/domains/root/db/realtor.html -realtor - -// realty : Internet Naming Company LLC -// https://www.iana.org/domains/root/db/realty.html -realty - -// recipes : Binky Moon, LLC -// https://www.iana.org/domains/root/db/recipes.html -recipes - -// red : Identity Digital Limited -// https://www.iana.org/domains/root/db/red.html -red - -// redstone : Redstone Haute Couture Co., Ltd. -// https://www.iana.org/domains/root/db/redstone.html -redstone - -// redumbrella : Travelers TLD, LLC -// https://www.iana.org/domains/root/db/redumbrella.html -redumbrella - -// rehab : Dog Beach, LLC -// https://www.iana.org/domains/root/db/rehab.html -rehab - -// reise : Binky Moon, LLC -// https://www.iana.org/domains/root/db/reise.html -reise - -// reisen : Binky Moon, LLC -// https://www.iana.org/domains/root/db/reisen.html -reisen - -// reit : National Association of Real Estate Investment Trusts, Inc. -// https://www.iana.org/domains/root/db/reit.html -reit - -// reliance : Reliance Industries Limited -// https://www.iana.org/domains/root/db/reliance.html -reliance - -// ren : ZDNS International Limited -// https://www.iana.org/domains/root/db/ren.html -ren - -// rent : XYZ.COM LLC -// https://www.iana.org/domains/root/db/rent.html -rent - -// rentals : Binky Moon, LLC -// https://www.iana.org/domains/root/db/rentals.html -rentals - -// repair : Binky Moon, LLC -// https://www.iana.org/domains/root/db/repair.html -repair - -// report : Binky Moon, LLC -// https://www.iana.org/domains/root/db/report.html -report - -// republican : Dog Beach, LLC -// https://www.iana.org/domains/root/db/republican.html -republican - -// rest : Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable -// https://www.iana.org/domains/root/db/rest.html -rest - -// restaurant : Binky Moon, LLC -// https://www.iana.org/domains/root/db/restaurant.html -restaurant - -// review : dot Review Limited -// https://www.iana.org/domains/root/db/review.html -review - -// reviews : Dog Beach, LLC -// https://www.iana.org/domains/root/db/reviews.html -reviews - -// rexroth : Robert Bosch GMBH -// https://www.iana.org/domains/root/db/rexroth.html -rexroth - -// rich : iRegistry GmbH -// https://www.iana.org/domains/root/db/rich.html -rich - -// richardli : Pacific Century Asset Management (HK) Limited -// https://www.iana.org/domains/root/db/richardli.html -richardli - -// ricoh : Ricoh Company, Ltd. -// https://www.iana.org/domains/root/db/ricoh.html -ricoh - -// ril : Reliance Industries Limited -// https://www.iana.org/domains/root/db/ril.html -ril - -// rio : Empresa Municipal de Informática SA - IPLANRIO -// https://www.iana.org/domains/root/db/rio.html -rio - -// rip : Dog Beach, LLC -// https://www.iana.org/domains/root/db/rip.html -rip - -// rocks : Dog Beach, LLC -// https://www.iana.org/domains/root/db/rocks.html -rocks - -// rodeo : Registry Services, LLC -// https://www.iana.org/domains/root/db/rodeo.html -rodeo - -// rogers : Rogers Communications Canada Inc. -// https://www.iana.org/domains/root/db/rogers.html -rogers - -// room : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/room.html -room - -// rsvp : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/rsvp.html -rsvp - -// rugby : World Rugby Strategic Developments Limited -// https://www.iana.org/domains/root/db/rugby.html -rugby - -// ruhr : dotSaarland GmbH -// https://www.iana.org/domains/root/db/ruhr.html -ruhr - -// run : Binky Moon, LLC -// https://www.iana.org/domains/root/db/run.html -run - -// rwe : RWE AG -// https://www.iana.org/domains/root/db/rwe.html -rwe - -// ryukyu : BRregistry, Inc. -// https://www.iana.org/domains/root/db/ryukyu.html -ryukyu - -// saarland : dotSaarland GmbH -// https://www.iana.org/domains/root/db/saarland.html -saarland - -// safe : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/safe.html -safe - -// safety : Safety Registry Services, LLC. -// https://www.iana.org/domains/root/db/safety.html -safety - -// sakura : SAKURA Internet Inc. -// https://www.iana.org/domains/root/db/sakura.html -sakura - -// sale : Dog Beach, LLC -// https://www.iana.org/domains/root/db/sale.html -sale - -// salon : Binky Moon, LLC -// https://www.iana.org/domains/root/db/salon.html -salon - -// samsclub : Wal-Mart Stores, Inc. -// https://www.iana.org/domains/root/db/samsclub.html -samsclub - -// samsung : SAMSUNG SDS CO., LTD -// https://www.iana.org/domains/root/db/samsung.html -samsung - -// sandvik : Sandvik AB -// https://www.iana.org/domains/root/db/sandvik.html -sandvik - -// sandvikcoromant : Sandvik AB -// https://www.iana.org/domains/root/db/sandvikcoromant.html -sandvikcoromant - -// sanofi : Sanofi -// https://www.iana.org/domains/root/db/sanofi.html -sanofi - -// sap : SAP AG -// https://www.iana.org/domains/root/db/sap.html -sap - -// sarl : Binky Moon, LLC -// https://www.iana.org/domains/root/db/sarl.html -sarl - -// sas : Research IP LLC -// https://www.iana.org/domains/root/db/sas.html -sas - -// save : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/save.html -save - -// saxo : Saxo Bank A/S -// https://www.iana.org/domains/root/db/saxo.html -saxo - -// sbi : STATE BANK OF INDIA -// https://www.iana.org/domains/root/db/sbi.html -sbi - -// sbs : ShortDot SA -// https://www.iana.org/domains/root/db/sbs.html -sbs - -// scb : The Siam Commercial Bank Public Company Limited ("SCB") -// https://www.iana.org/domains/root/db/scb.html -scb - -// schaeffler : Schaeffler Technologies AG & Co. KG -// https://www.iana.org/domains/root/db/schaeffler.html -schaeffler - -// schmidt : SCHMIDT GROUPE S.A.S. -// https://www.iana.org/domains/root/db/schmidt.html -schmidt - -// scholarships : Scholarships.com, LLC -// https://www.iana.org/domains/root/db/scholarships.html -scholarships - -// school : Binky Moon, LLC -// https://www.iana.org/domains/root/db/school.html -school - -// schule : Binky Moon, LLC -// https://www.iana.org/domains/root/db/schule.html -schule - -// schwarz : Schwarz Domains und Services GmbH & Co. KG -// https://www.iana.org/domains/root/db/schwarz.html -schwarz - -// science : dot Science Limited -// https://www.iana.org/domains/root/db/science.html -science - -// scot : Dot Scot Registry Limited -// https://www.iana.org/domains/root/db/scot.html -scot - -// search : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/search.html -search - -// seat : SEAT, S.A. (Sociedad Unipersonal) -// https://www.iana.org/domains/root/db/seat.html -seat - -// secure : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/secure.html -secure - -// security : XYZ.COM LLC -// https://www.iana.org/domains/root/db/security.html -security - -// seek : Seek Limited -// https://www.iana.org/domains/root/db/seek.html -seek - -// select : Registry Services, LLC -// https://www.iana.org/domains/root/db/select.html -select - -// sener : Sener Ingeniería y Sistemas, S.A. -// https://www.iana.org/domains/root/db/sener.html -sener - -// services : Binky Moon, LLC -// https://www.iana.org/domains/root/db/services.html -services - -// seven : Seven West Media Ltd -// https://www.iana.org/domains/root/db/seven.html -seven - -// sew : SEW-EURODRIVE GmbH & Co KG -// https://www.iana.org/domains/root/db/sew.html -sew - -// sex : ICM Registry SX LLC -// https://www.iana.org/domains/root/db/sex.html -sex - -// sexy : Internet Naming Company LLC -// https://www.iana.org/domains/root/db/sexy.html -sexy - -// sfr : Societe Francaise du Radiotelephone - SFR -// https://www.iana.org/domains/root/db/sfr.html -sfr - -// shangrila : Shangri‐La International Hotel Management Limited -// https://www.iana.org/domains/root/db/shangrila.html -shangrila - -// sharp : Sharp Corporation -// https://www.iana.org/domains/root/db/sharp.html -sharp - -// shell : Shell Information Technology International Inc -// https://www.iana.org/domains/root/db/shell.html -shell - -// shia : Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. -// https://www.iana.org/domains/root/db/shia.html -shia - -// shiksha : Identity Digital Limited -// https://www.iana.org/domains/root/db/shiksha.html -shiksha - -// shoes : Binky Moon, LLC -// https://www.iana.org/domains/root/db/shoes.html -shoes - -// shop : GMO Registry, Inc. -// https://www.iana.org/domains/root/db/shop.html -shop - -// shopping : Binky Moon, LLC -// https://www.iana.org/domains/root/db/shopping.html -shopping - -// shouji : Beijing Qihu Keji Co., Ltd. -// https://www.iana.org/domains/root/db/shouji.html -shouji - -// show : Binky Moon, LLC -// https://www.iana.org/domains/root/db/show.html -show - -// silk : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/silk.html -silk - -// sina : Sina Corporation -// https://www.iana.org/domains/root/db/sina.html -sina - -// singles : Binky Moon, LLC -// https://www.iana.org/domains/root/db/singles.html -singles - -// site : Radix Technologies Inc. -// https://www.iana.org/domains/root/db/site.html -site - -// ski : Identity Digital Limited -// https://www.iana.org/domains/root/db/ski.html -ski - -// skin : XYZ.COM LLC -// https://www.iana.org/domains/root/db/skin.html -skin - -// sky : Sky International AG -// https://www.iana.org/domains/root/db/sky.html -sky - -// skype : Microsoft Corporation -// https://www.iana.org/domains/root/db/skype.html -skype - -// sling : DISH Technologies L.L.C. -// https://www.iana.org/domains/root/db/sling.html -sling - -// smart : Smart Communications, Inc. (SMART) -// https://www.iana.org/domains/root/db/smart.html -smart - -// smile : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/smile.html -smile - -// sncf : Société Nationale SNCF -// https://www.iana.org/domains/root/db/sncf.html -sncf - -// soccer : Binky Moon, LLC -// https://www.iana.org/domains/root/db/soccer.html -soccer - -// social : Dog Beach, LLC -// https://www.iana.org/domains/root/db/social.html -social - -// softbank : SoftBank Group Corp. -// https://www.iana.org/domains/root/db/softbank.html -softbank - -// software : Dog Beach, LLC -// https://www.iana.org/domains/root/db/software.html -software - -// sohu : Sohu.com Limited -// https://www.iana.org/domains/root/db/sohu.html -sohu - -// solar : Binky Moon, LLC -// https://www.iana.org/domains/root/db/solar.html -solar - -// solutions : Binky Moon, LLC -// https://www.iana.org/domains/root/db/solutions.html -solutions - -// song : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/song.html -song - -// sony : Sony Corporation -// https://www.iana.org/domains/root/db/sony.html -sony - -// soy : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/soy.html -soy - -// spa : Asia Spa and Wellness Promotion Council Limited -// https://www.iana.org/domains/root/db/spa.html -spa - -// space : Radix Technologies Inc. -// https://www.iana.org/domains/root/db/space.html -space - -// sport : SportAccord -// https://www.iana.org/domains/root/db/sport.html -sport - -// spot : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/spot.html -spot - -// srl : InterNetX, Corp -// https://www.iana.org/domains/root/db/srl.html -srl - -// stada : STADA Arzneimittel AG -// https://www.iana.org/domains/root/db/stada.html -stada - -// staples : Staples, Inc. -// https://www.iana.org/domains/root/db/staples.html -staples - -// star : Star India Private Limited -// https://www.iana.org/domains/root/db/star.html -star - -// statebank : STATE BANK OF INDIA -// https://www.iana.org/domains/root/db/statebank.html -statebank - -// statefarm : State Farm Mutual Automobile Insurance Company -// https://www.iana.org/domains/root/db/statefarm.html -statefarm - -// stc : Saudi Telecom Company -// https://www.iana.org/domains/root/db/stc.html -stc - -// stcgroup : Saudi Telecom Company -// https://www.iana.org/domains/root/db/stcgroup.html -stcgroup - -// stockholm : Stockholms kommun -// https://www.iana.org/domains/root/db/stockholm.html -stockholm - -// storage : XYZ.COM LLC -// https://www.iana.org/domains/root/db/storage.html -storage - -// store : Radix Technologies Inc. -// https://www.iana.org/domains/root/db/store.html -store - -// stream : dot Stream Limited -// https://www.iana.org/domains/root/db/stream.html -stream - -// studio : Dog Beach, LLC -// https://www.iana.org/domains/root/db/studio.html -studio - -// study : Registry Services, LLC -// https://www.iana.org/domains/root/db/study.html -study - -// style : Binky Moon, LLC -// https://www.iana.org/domains/root/db/style.html -style - -// sucks : Vox Populi Registry Ltd. -// https://www.iana.org/domains/root/db/sucks.html -sucks - -// supplies : Binky Moon, LLC -// https://www.iana.org/domains/root/db/supplies.html -supplies - -// supply : Binky Moon, LLC -// https://www.iana.org/domains/root/db/supply.html -supply - -// support : Binky Moon, LLC -// https://www.iana.org/domains/root/db/support.html -support - -// surf : Registry Services, LLC -// https://www.iana.org/domains/root/db/surf.html -surf - -// surgery : Binky Moon, LLC -// https://www.iana.org/domains/root/db/surgery.html -surgery - -// suzuki : SUZUKI MOTOR CORPORATION -// https://www.iana.org/domains/root/db/suzuki.html -suzuki - -// swatch : The Swatch Group Ltd -// https://www.iana.org/domains/root/db/swatch.html -swatch - -// swiss : Swiss Confederation -// https://www.iana.org/domains/root/db/swiss.html -swiss - -// sydney : State of New South Wales, Department of Premier and Cabinet -// https://www.iana.org/domains/root/db/sydney.html -sydney - -// systems : Binky Moon, LLC -// https://www.iana.org/domains/root/db/systems.html -systems - -// tab : Tabcorp Holdings Limited -// https://www.iana.org/domains/root/db/tab.html -tab - -// taipei : Taipei City Government -// https://www.iana.org/domains/root/db/taipei.html -taipei - -// talk : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/talk.html -talk - -// taobao : Alibaba Group Holding Limited -// https://www.iana.org/domains/root/db/taobao.html -taobao - -// target : Target Domain Holdings, LLC -// https://www.iana.org/domains/root/db/target.html -target - -// tatamotors : Tata Motors Ltd -// https://www.iana.org/domains/root/db/tatamotors.html -tatamotors - -// tatar : Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic" -// https://www.iana.org/domains/root/db/tatar.html -tatar - -// tattoo : Registry Services, LLC -// https://www.iana.org/domains/root/db/tattoo.html -tattoo - -// tax : Binky Moon, LLC -// https://www.iana.org/domains/root/db/tax.html -tax - -// taxi : Binky Moon, LLC -// https://www.iana.org/domains/root/db/taxi.html -taxi - -// tci : Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. -// https://www.iana.org/domains/root/db/tci.html -tci - -// tdk : TDK Corporation -// https://www.iana.org/domains/root/db/tdk.html -tdk - -// team : Binky Moon, LLC -// https://www.iana.org/domains/root/db/team.html -team - -// tech : Radix Technologies Inc. -// https://www.iana.org/domains/root/db/tech.html -tech - -// technology : Binky Moon, LLC -// https://www.iana.org/domains/root/db/technology.html -technology - -// temasek : Temasek Holdings (Private) Limited -// https://www.iana.org/domains/root/db/temasek.html -temasek - -// tennis : Binky Moon, LLC -// https://www.iana.org/domains/root/db/tennis.html -tennis - -// teva : Teva Pharmaceutical Industries Limited -// https://www.iana.org/domains/root/db/teva.html -teva - -// thd : Home Depot Product Authority, LLC -// https://www.iana.org/domains/root/db/thd.html -thd - -// theater : Binky Moon, LLC -// https://www.iana.org/domains/root/db/theater.html -theater - -// theatre : XYZ.COM LLC -// https://www.iana.org/domains/root/db/theatre.html -theatre - -// tiaa : Teachers Insurance and Annuity Association of America -// https://www.iana.org/domains/root/db/tiaa.html -tiaa - -// tickets : XYZ.COM LLC -// https://www.iana.org/domains/root/db/tickets.html -tickets - -// tienda : Binky Moon, LLC -// https://www.iana.org/domains/root/db/tienda.html -tienda - -// tips : Binky Moon, LLC -// https://www.iana.org/domains/root/db/tips.html -tips - -// tires : Binky Moon, LLC -// https://www.iana.org/domains/root/db/tires.html -tires - -// tirol : punkt Tirol GmbH -// https://www.iana.org/domains/root/db/tirol.html -tirol - -// tjmaxx : The TJX Companies, Inc. -// https://www.iana.org/domains/root/db/tjmaxx.html -tjmaxx - -// tjx : The TJX Companies, Inc. -// https://www.iana.org/domains/root/db/tjx.html -tjx - -// tkmaxx : The TJX Companies, Inc. -// https://www.iana.org/domains/root/db/tkmaxx.html -tkmaxx - -// tmall : Alibaba Group Holding Limited -// https://www.iana.org/domains/root/db/tmall.html -tmall - -// today : Binky Moon, LLC -// https://www.iana.org/domains/root/db/today.html -today - -// tokyo : GMO Registry, Inc. -// https://www.iana.org/domains/root/db/tokyo.html -tokyo - -// tools : Binky Moon, LLC -// https://www.iana.org/domains/root/db/tools.html -tools - -// top : .TOP Registry -// https://www.iana.org/domains/root/db/top.html -top - -// toray : Toray Industries, Inc. -// https://www.iana.org/domains/root/db/toray.html -toray - -// toshiba : TOSHIBA Corporation -// https://www.iana.org/domains/root/db/toshiba.html -toshiba - -// total : TotalEnergies SE -// https://www.iana.org/domains/root/db/total.html -total - -// tours : Binky Moon, LLC -// https://www.iana.org/domains/root/db/tours.html -tours - -// town : Binky Moon, LLC -// https://www.iana.org/domains/root/db/town.html -town - -// toyota : TOYOTA MOTOR CORPORATION -// https://www.iana.org/domains/root/db/toyota.html -toyota - -// toys : Binky Moon, LLC -// https://www.iana.org/domains/root/db/toys.html -toys - -// trade : Elite Registry Limited -// https://www.iana.org/domains/root/db/trade.html -trade - -// trading : Dog Beach, LLC -// https://www.iana.org/domains/root/db/trading.html -trading - -// training : Binky Moon, LLC -// https://www.iana.org/domains/root/db/training.html -training - -// travel : Dog Beach, LLC -// https://www.iana.org/domains/root/db/travel.html -travel - -// travelers : Travelers TLD, LLC -// https://www.iana.org/domains/root/db/travelers.html -travelers - -// travelersinsurance : Travelers TLD, LLC -// https://www.iana.org/domains/root/db/travelersinsurance.html -travelersinsurance - -// trust : Internet Naming Company LLC -// https://www.iana.org/domains/root/db/trust.html -trust - -// trv : Travelers TLD, LLC -// https://www.iana.org/domains/root/db/trv.html -trv - -// tube : Latin American Telecom LLC -// https://www.iana.org/domains/root/db/tube.html -tube - -// tui : TUI AG -// https://www.iana.org/domains/root/db/tui.html -tui - -// tunes : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/tunes.html -tunes - -// tushu : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/tushu.html -tushu - -// tvs : T V SUNDRAM IYENGAR & SONS LIMITED -// https://www.iana.org/domains/root/db/tvs.html -tvs - -// ubank : National Australia Bank Limited -// https://www.iana.org/domains/root/db/ubank.html -ubank - -// ubs : UBS AG -// https://www.iana.org/domains/root/db/ubs.html -ubs - -// unicom : China United Network Communications Corporation Limited -// https://www.iana.org/domains/root/db/unicom.html -unicom - -// university : Binky Moon, LLC -// https://www.iana.org/domains/root/db/university.html -university - -// uno : Radix Technologies Inc. -// https://www.iana.org/domains/root/db/uno.html -uno - -// uol : UBN INTERNET LTDA. -// https://www.iana.org/domains/root/db/uol.html -uol - -// ups : UPS Market Driver, Inc. -// https://www.iana.org/domains/root/db/ups.html -ups - -// vacations : Binky Moon, LLC -// https://www.iana.org/domains/root/db/vacations.html -vacations - -// vana : D3 Registry LLC -// https://www.iana.org/domains/root/db/vana.html -vana - -// vanguard : The Vanguard Group, Inc. -// https://www.iana.org/domains/root/db/vanguard.html -vanguard - -// vegas : Dot Vegas, Inc. -// https://www.iana.org/domains/root/db/vegas.html -vegas - -// ventures : Binky Moon, LLC -// https://www.iana.org/domains/root/db/ventures.html -ventures - -// verisign : VeriSign, Inc. -// https://www.iana.org/domains/root/db/verisign.html -verisign - -// versicherung : tldbox GmbH -// https://www.iana.org/domains/root/db/versicherung.html -versicherung - -// vet : Dog Beach, LLC -// https://www.iana.org/domains/root/db/vet.html -vet - -// viajes : Binky Moon, LLC -// https://www.iana.org/domains/root/db/viajes.html -viajes - -// video : Dog Beach, LLC -// https://www.iana.org/domains/root/db/video.html -video - -// vig : VIENNA INSURANCE GROUP AG Wiener Versicherung Gruppe -// https://www.iana.org/domains/root/db/vig.html -vig - -// viking : Viking River Cruises (Bermuda) Ltd. -// https://www.iana.org/domains/root/db/viking.html -viking - -// villas : Binky Moon, LLC -// https://www.iana.org/domains/root/db/villas.html -villas - -// vin : Binky Moon, LLC -// https://www.iana.org/domains/root/db/vin.html -vin - -// vip : Registry Services, LLC -// https://www.iana.org/domains/root/db/vip.html -vip - -// virgin : Virgin Enterprises Limited -// https://www.iana.org/domains/root/db/virgin.html -virgin - -// visa : Visa Worldwide Pte. Limited -// https://www.iana.org/domains/root/db/visa.html -visa - -// vision : Binky Moon, LLC -// https://www.iana.org/domains/root/db/vision.html -vision - -// viva : Saudi Telecom Company -// https://www.iana.org/domains/root/db/viva.html -viva - -// vivo : Telefonica Brasil S.A. -// https://www.iana.org/domains/root/db/vivo.html -vivo - -// vlaanderen : DNS.be vzw -// https://www.iana.org/domains/root/db/vlaanderen.html -vlaanderen - -// vodka : Registry Services, LLC -// https://www.iana.org/domains/root/db/vodka.html -vodka - -// volvo : Volvo Holding Sverige Aktiebolag -// https://www.iana.org/domains/root/db/volvo.html -volvo - -// vote : Monolith Registry LLC -// https://www.iana.org/domains/root/db/vote.html -vote - -// voting : Valuetainment Corp. -// https://www.iana.org/domains/root/db/voting.html -voting - -// voto : Monolith Registry LLC -// https://www.iana.org/domains/root/db/voto.html -voto - -// voyage : Binky Moon, LLC -// https://www.iana.org/domains/root/db/voyage.html -voyage - -// wales : Nominet UK -// https://www.iana.org/domains/root/db/wales.html -wales - -// walmart : Wal-Mart Stores, Inc. -// https://www.iana.org/domains/root/db/walmart.html -walmart - -// walter : Sandvik AB -// https://www.iana.org/domains/root/db/walter.html -walter - -// wang : Zodiac Wang Limited -// https://www.iana.org/domains/root/db/wang.html -wang - -// wanggou : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/wanggou.html -wanggou - -// watch : Binky Moon, LLC -// https://www.iana.org/domains/root/db/watch.html -watch - -// watches : Identity Digital Limited -// https://www.iana.org/domains/root/db/watches.html -watches - -// weather : International Business Machines Corporation -// https://www.iana.org/domains/root/db/weather.html -weather - -// weatherchannel : International Business Machines Corporation -// https://www.iana.org/domains/root/db/weatherchannel.html -weatherchannel - -// webcam : dot Webcam Limited -// https://www.iana.org/domains/root/db/webcam.html -webcam - -// weber : Saint-Gobain Weber SA -// https://www.iana.org/domains/root/db/weber.html -weber - -// website : Radix Technologies Inc. -// https://www.iana.org/domains/root/db/website.html -website - -// wed -// https://www.iana.org/domains/root/db/wed.html -wed - -// wedding : Registry Services, LLC -// https://www.iana.org/domains/root/db/wedding.html -wedding - -// weibo : Sina Corporation -// https://www.iana.org/domains/root/db/weibo.html -weibo - -// weir : Weir Group IP Limited -// https://www.iana.org/domains/root/db/weir.html -weir - -// whoswho : Who's Who Registry -// https://www.iana.org/domains/root/db/whoswho.html -whoswho - -// wien : punkt.wien GmbH -// https://www.iana.org/domains/root/db/wien.html -wien - -// wiki : Registry Services, LLC -// https://www.iana.org/domains/root/db/wiki.html -wiki - -// williamhill : William Hill Organization Limited -// https://www.iana.org/domains/root/db/williamhill.html -williamhill - -// win : First Registry Limited -// https://www.iana.org/domains/root/db/win.html -win - -// windows : Microsoft Corporation -// https://www.iana.org/domains/root/db/windows.html -windows - -// wine : Binky Moon, LLC -// https://www.iana.org/domains/root/db/wine.html -wine - -// winners : The TJX Companies, Inc. -// https://www.iana.org/domains/root/db/winners.html -winners - -// wme : William Morris Endeavor Entertainment, LLC -// https://www.iana.org/domains/root/db/wme.html -wme - -// wolterskluwer : Wolters Kluwer N.V. -// https://www.iana.org/domains/root/db/wolterskluwer.html -wolterskluwer - -// woodside : Woodside Petroleum Limited -// https://www.iana.org/domains/root/db/woodside.html -woodside - -// work : Registry Services, LLC -// https://www.iana.org/domains/root/db/work.html -work - -// works : Binky Moon, LLC -// https://www.iana.org/domains/root/db/works.html -works - -// world : Binky Moon, LLC -// https://www.iana.org/domains/root/db/world.html -world - -// wow : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/wow.html -wow - -// wtc : World Trade Centers Association, Inc. -// https://www.iana.org/domains/root/db/wtc.html -wtc - -// wtf : Binky Moon, LLC -// https://www.iana.org/domains/root/db/wtf.html -wtf - -// xbox : Microsoft Corporation -// https://www.iana.org/domains/root/db/xbox.html -xbox - -// xerox : Xerox DNHC LLC -// https://www.iana.org/domains/root/db/xerox.html -xerox - -// xihuan : Beijing Qihu Keji Co., Ltd. -// https://www.iana.org/domains/root/db/xihuan.html -xihuan - -// xin : Elegant Leader Limited -// https://www.iana.org/domains/root/db/xin.html -xin - -// xn--11b4c3d : VeriSign Sarl -// https://www.iana.org/domains/root/db/xn--11b4c3d.html -कॉम - -// xn--1ck2e1b : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/xn--1ck2e1b.html -セール - -// xn--1qqw23a : Guangzhou YU Wei Information Technology Co., Ltd. -// https://www.iana.org/domains/root/db/xn--1qqw23a.html -佛山 - -// xn--30rr7y : Excellent First Limited -// https://www.iana.org/domains/root/db/xn--30rr7y.html -慈善 - -// xn--3bst00m : Eagle Horizon Limited -// https://www.iana.org/domains/root/db/xn--3bst00m.html -集团 - -// xn--3ds443g : TLD REGISTRY LIMITED OY -// https://www.iana.org/domains/root/db/xn--3ds443g.html -在线 - -// xn--3pxu8k : VeriSign Sarl -// https://www.iana.org/domains/root/db/xn--3pxu8k.html -点看 - -// xn--42c2d9a : VeriSign Sarl -// https://www.iana.org/domains/root/db/xn--42c2d9a.html -คอม - -// xn--45q11c : Zodiac Gemini Ltd -// https://www.iana.org/domains/root/db/xn--45q11c.html -八卦 - -// xn--4gbrim : Helium TLDs Ltd -// https://www.iana.org/domains/root/db/xn--4gbrim.html -موقع - -// xn--55qw42g : China Organizational Name Administration Center -// https://www.iana.org/domains/root/db/xn--55qw42g.html -公益 - -// xn--55qx5d : China Internet Network Information Center (CNNIC) -// https://www.iana.org/domains/root/db/xn--55qx5d.html -公司 - -// xn--5su34j936bgsg : Shangri‐La International Hotel Management Limited -// https://www.iana.org/domains/root/db/xn--5su34j936bgsg.html -香格里拉 - -// xn--5tzm5g : Global Website TLD Asia Limited -// https://www.iana.org/domains/root/db/xn--5tzm5g.html -网站 - -// xn--6frz82g : Identity Digital Limited -// https://www.iana.org/domains/root/db/xn--6frz82g.html -移动 - -// xn--6qq986b3xl : Tycoon Treasure Limited -// https://www.iana.org/domains/root/db/xn--6qq986b3xl.html -我爱你 - -// xn--80adxhks : Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) -// https://www.iana.org/domains/root/db/xn--80adxhks.html -москва - -// xn--80aqecdr1a : Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) -// https://www.iana.org/domains/root/db/xn--80aqecdr1a.html -католик - -// xn--80asehdb : CORE Association -// https://www.iana.org/domains/root/db/xn--80asehdb.html -онлайн - -// xn--80aswg : CORE Association -// https://www.iana.org/domains/root/db/xn--80aswg.html -сайт - -// xn--8y0a063a : China United Network Communications Corporation Limited -// https://www.iana.org/domains/root/db/xn--8y0a063a.html -联通 - -// xn--9dbq2a : VeriSign Sarl -// https://www.iana.org/domains/root/db/xn--9dbq2a.html -קום - -// xn--9et52u : RISE VICTORY LIMITED -// https://www.iana.org/domains/root/db/xn--9et52u.html -时尚 - -// xn--9krt00a : Sina Corporation -// https://www.iana.org/domains/root/db/xn--9krt00a.html -微博 - -// xn--b4w605ferd : Temasek Holdings (Private) Limited -// https://www.iana.org/domains/root/db/xn--b4w605ferd.html -淡马锡 - -// xn--bck1b9a5dre4c : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/xn--bck1b9a5dre4c.html -ファッション - -// xn--c1avg : Public Interest Registry -// https://www.iana.org/domains/root/db/xn--c1avg.html -орг - -// xn--c2br7g : VeriSign Sarl -// https://www.iana.org/domains/root/db/xn--c2br7g.html -नेट - -// xn--cck2b3b : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/xn--cck2b3b.html -ストア - -// xn--cckwcxetd : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/xn--cckwcxetd.html -アマゾン - -// xn--cg4bki : SAMSUNG SDS CO., LTD -// https://www.iana.org/domains/root/db/xn--cg4bki.html -삼성 - -// xn--czr694b : Internet DotTrademark Organisation Limited -// https://www.iana.org/domains/root/db/xn--czr694b.html -商标 - -// xn--czrs0t : Binky Moon, LLC -// https://www.iana.org/domains/root/db/xn--czrs0t.html -商店 - -// xn--czru2d : Zodiac Aquarius Limited -// https://www.iana.org/domains/root/db/xn--czru2d.html -商城 - -// xn--d1acj3b : The Foundation for Network Initiatives “The Smart Internet” -// https://www.iana.org/domains/root/db/xn--d1acj3b.html -дети - -// xn--eckvdtc9d : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/xn--eckvdtc9d.html -ポイント - -// xn--efvy88h : Guangzhou YU Wei Information Technology Co., Ltd. -// https://www.iana.org/domains/root/db/xn--efvy88h.html -新闻 - -// xn--fct429k : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/xn--fct429k.html -家電 - -// xn--fhbei : VeriSign Sarl -// https://www.iana.org/domains/root/db/xn--fhbei.html -كوم - -// xn--fiq228c5hs : TLD REGISTRY LIMITED OY -// https://www.iana.org/domains/root/db/xn--fiq228c5hs.html -中文网 - -// xn--fiq64b : CITIC Group Corporation -// https://www.iana.org/domains/root/db/xn--fiq64b.html -中信 - -// xn--fjq720a : Binky Moon, LLC -// https://www.iana.org/domains/root/db/xn--fjq720a.html -娱乐 - -// xn--flw351e : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/xn--flw351e.html -谷歌 - -// xn--fzys8d69uvgm : PCCW Enterprises Limited -// https://www.iana.org/domains/root/db/xn--fzys8d69uvgm.html -電訊盈科 - -// xn--g2xx48c : Nawang Heli(Xiamen) Network Service Co., LTD. -// https://www.iana.org/domains/root/db/xn--g2xx48c.html -购物 - -// xn--gckr3f0f : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/xn--gckr3f0f.html -クラウド - -// xn--gk3at1e : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/xn--gk3at1e.html -通販 - -// xn--hxt814e : Zodiac Taurus Limited -// https://www.iana.org/domains/root/db/xn--hxt814e.html -网店 - -// xn--i1b6b1a6a2e : Public Interest Registry -// https://www.iana.org/domains/root/db/xn--i1b6b1a6a2e.html -संगठन - -// xn--imr513n : Internet DotTrademark Organisation Limited -// https://www.iana.org/domains/root/db/xn--imr513n.html -餐厅 - -// xn--io0a7i : China Internet Network Information Center (CNNIC) -// https://www.iana.org/domains/root/db/xn--io0a7i.html -网络 - -// xn--j1aef : VeriSign Sarl -// https://www.iana.org/domains/root/db/xn--j1aef.html -ком - -// xn--jlq480n2rg : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/xn--jlq480n2rg.html -亚马逊 - -// xn--jvr189m : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/xn--jvr189m.html -食品 - -// xn--kcrx77d1x4a : Koninklijke Philips N.V. -// https://www.iana.org/domains/root/db/xn--kcrx77d1x4a.html -飞利浦 - -// xn--kput3i : Beijing RITT-Net Technology Development Co., Ltd -// https://www.iana.org/domains/root/db/xn--kput3i.html -手机 - -// xn--mgba3a3ejt : Aramco Services Company -// https://www.iana.org/domains/root/db/xn--mgba3a3ejt.html -ارامكو - -// xn--mgba7c0bbn0a : Competrol (Luxembourg) Sarl -// https://www.iana.org/domains/root/db/xn--mgba7c0bbn0a.html -العليان - -// xn--mgbab2bd : CORE Association -// https://www.iana.org/domains/root/db/xn--mgbab2bd.html -بازار - -// xn--mgbca7dzdo : Abu Dhabi Systems and Information Centre -// https://www.iana.org/domains/root/db/xn--mgbca7dzdo.html -ابوظبي - -// xn--mgbi4ecexp : Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) -// https://www.iana.org/domains/root/db/xn--mgbi4ecexp.html -كاثوليك - -// xn--mgbt3dhd : Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. -// https://www.iana.org/domains/root/db/xn--mgbt3dhd.html -همراه - -// xn--mk1bu44c : VeriSign Sarl -// https://www.iana.org/domains/root/db/xn--mk1bu44c.html -닷컴 - -// xn--mxtq1m : Net-Chinese Co., Ltd. -// https://www.iana.org/domains/root/db/xn--mxtq1m.html -政府 - -// xn--ngbc5azd : International Domain Registry Pty. Ltd. -// https://www.iana.org/domains/root/db/xn--ngbc5azd.html -شبكة - -// xn--ngbe9e0a : Kuwait Finance House -// https://www.iana.org/domains/root/db/xn--ngbe9e0a.html -بيتك - -// xn--ngbrx : League of Arab States -// https://www.iana.org/domains/root/db/xn--ngbrx.html -عرب - -// xn--nqv7f : Public Interest Registry -// https://www.iana.org/domains/root/db/xn--nqv7f.html -机构 - -// xn--nqv7fs00ema : Public Interest Registry -// https://www.iana.org/domains/root/db/xn--nqv7fs00ema.html -组织机构 - -// xn--nyqy26a : Stable Tone Limited -// https://www.iana.org/domains/root/db/xn--nyqy26a.html -健康 - -// xn--otu796d : Jiang Yu Liang Cai Technology Company Limited -// https://www.iana.org/domains/root/db/xn--otu796d.html -招聘 - -// xn--p1acf : Rusnames Limited -// https://www.iana.org/domains/root/db/xn--p1acf.html -рус - -// xn--pssy2u : VeriSign Sarl -// https://www.iana.org/domains/root/db/xn--pssy2u.html -大拿 - -// xn--q9jyb4c : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/xn--q9jyb4c.html -みんな - -// xn--qcka1pmc : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/xn--qcka1pmc.html -グーグル - -// xn--rhqv96g : Stable Tone Limited -// https://www.iana.org/domains/root/db/xn--rhqv96g.html -世界 - -// xn--rovu88b : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/xn--rovu88b.html -書籍 - -// xn--ses554g : KNET Co., Ltd. -// https://www.iana.org/domains/root/db/xn--ses554g.html -网址 - -// xn--t60b56a : VeriSign Sarl -// https://www.iana.org/domains/root/db/xn--t60b56a.html -닷넷 - -// xn--tckwe : VeriSign Sarl -// https://www.iana.org/domains/root/db/xn--tckwe.html -コム - -// xn--tiq49xqyj : Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) -// https://www.iana.org/domains/root/db/xn--tiq49xqyj.html -天主教 - -// xn--unup4y : Binky Moon, LLC -// https://www.iana.org/domains/root/db/xn--unup4y.html -游戏 - -// xn--vermgensberater-ctb : Deutsche Vermögensberatung Aktiengesellschaft DVAG -// https://www.iana.org/domains/root/db/xn--vermgensberater-ctb.html -vermögensberater - -// xn--vermgensberatung-pwb : Deutsche Vermögensberatung Aktiengesellschaft DVAG -// https://www.iana.org/domains/root/db/xn--vermgensberatung-pwb.html -vermögensberatung - -// xn--vhquv : Binky Moon, LLC -// https://www.iana.org/domains/root/db/xn--vhquv.html -企业 - -// xn--vuq861b : Beijing Tele-info Technology Co., Ltd. -// https://www.iana.org/domains/root/db/xn--vuq861b.html -信息 - -// xn--w4r85el8fhu5dnra : Kerry Trading Co. Limited -// https://www.iana.org/domains/root/db/xn--w4r85el8fhu5dnra.html -嘉里大酒店 - -// xn--w4rs40l : Kerry Trading Co. Limited -// https://www.iana.org/domains/root/db/xn--w4rs40l.html -嘉里 - -// xn--xhq521b : Guangzhou YU Wei Information Technology Co., Ltd. -// https://www.iana.org/domains/root/db/xn--xhq521b.html -广东 - -// xn--zfr164b : China Organizational Name Administration Center -// https://www.iana.org/domains/root/db/xn--zfr164b.html -政务 - -// xyz : XYZ.COM LLC -// https://www.iana.org/domains/root/db/xyz.html -xyz - -// yachts : XYZ.COM LLC -// https://www.iana.org/domains/root/db/yachts.html -yachts - -// yahoo : Yahoo Inc. -// https://www.iana.org/domains/root/db/yahoo.html -yahoo - -// yamaxun : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/yamaxun.html -yamaxun - -// yandex : Yandex Europe B.V. -// https://www.iana.org/domains/root/db/yandex.html -yandex - -// yodobashi : YODOBASHI CAMERA CO.,LTD. -// https://www.iana.org/domains/root/db/yodobashi.html -yodobashi - -// yoga : Registry Services, LLC -// https://www.iana.org/domains/root/db/yoga.html -yoga - -// yokohama : GMO Registry, Inc. -// https://www.iana.org/domains/root/db/yokohama.html -yokohama - -// you : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/you.html -you - -// youtube : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/youtube.html -youtube - -// yun : Beijing Qihu Keji Co., Ltd. -// https://www.iana.org/domains/root/db/yun.html -yun - -// zappos : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/zappos.html -zappos - -// zara : Industria de Diseño Textil, S.A. (INDITEX, S.A.) -// https://www.iana.org/domains/root/db/zara.html -zara - -// zero : Amazon Registry Services, Inc. -// https://www.iana.org/domains/root/db/zero.html -zero - -// zip : Charleston Road Registry Inc. -// https://www.iana.org/domains/root/db/zip.html -zip - -// zone : Binky Moon, LLC -// https://www.iana.org/domains/root/db/zone.html -zone - -// zuerich : Kanton Zürich (Canton of Zurich) -// https://www.iana.org/domains/root/db/zuerich.html -zuerich - - -// ===END ICANN DOMAINS=== -// ===BEGIN PRIVATE DOMAINS=== -// (Note: these are in alphabetical order by company name) - -// 12CHARS: https://12chars.com -// Submitted by Kenny Niehage -12chars.dev -12chars.it -12chars.pro - -// 1GB LLC : https://www.1gb.ua/ -// Submitted by 1GB LLC -cc.ua -inf.ua -ltd.ua - -// 611coin : https://611project.org/ -611.to - -// AAA workspace : https://aaa.vodka -// Submitted by Kirill Rezraf -aaa.vodka - -// A2 Hosting -// Submitted by Tyler Hall -a2hosted.com -cpserver.com - -// accesso Technology Group, plc. : https://accesso.com/ -// Submitted by accesso Team -*.devcdnaccesso.com - -// Acorn Labs : https://acorn.io -// Submitted by Craig Jellick -*.on-acorn.io - -// ActiveTrail: https://www.activetrail.biz/ -// Submitted by Ofer Kalaora -activetrail.biz - -// Adaptable.io : https://adaptable.io -// Submitted by Mark Terrel -adaptable.app - -// Adobe : https://www.adobe.com/ -// Submitted by Ian Boston and Lars Trieloff -adobeaemcloud.com -*.dev.adobeaemcloud.com -aem.live -hlx.live -adobeaemcloud.net -aem.page -hlx.page -hlx3.page - -// Adobe Developer Platform : https://developer.adobe.com -// Submitted by Jesse MacFadyen -adobeio-static.net -adobeioruntime.net - -// Agnat sp. z o.o. : https://domena.pl -// Submitted by Przemyslaw Plewa -beep.pl - -// Airkit : https://www.airkit.com/ -// Submitted by Grant Cooksey -airkitapps.com -airkitapps-au.com -airkitapps.eu - -// Aiven: https://aiven.io/ -// Submitted by Etienne Stalmans -aivencloud.com - -// Akamai : https://www.akamai.com/ -// Submitted by Akamai Team -akadns.net -akamai.net -akamai-staging.net -akamaiedge.net -akamaiedge-staging.net -akamaihd.net -akamaihd-staging.net -akamaiorigin.net -akamaiorigin-staging.net -akamaized.net -akamaized-staging.net -edgekey.net -edgekey-staging.net -edgesuite.net -edgesuite-staging.net - -// alboto.ca : http://alboto.ca -// Submitted by Anton Avramov -barsy.ca - -// Alces Software Ltd : http://alces-software.com -// Submitted by Mark J. Titorenko -*.compute.estate -*.alces.network - -// all-inkl.com : https://all-inkl.com -// Submitted by Werner Kaltofen -kasserver.com - -// Altervista: https://www.altervista.org -// Submitted by Carlo Cannas -altervista.org - -// alwaysdata : https://www.alwaysdata.com -// Submitted by Cyril -alwaysdata.net - -// Amaze Software : https://amaze.co -// Submitted by Domain Admin -myamaze.net - -// Amazon : https://www.amazon.com/ -// Submitted by AWS Security -// Subsections of Amazon/subsidiaries will appear until "concludes" tag - -// Amazon API Gateway -// Submitted by AWS Security -// Reference: 9e37648f-a66c-4655-9ab1-5981f8737197 -execute-api.cn-north-1.amazonaws.com.cn -execute-api.cn-northwest-1.amazonaws.com.cn -execute-api.af-south-1.amazonaws.com -execute-api.ap-east-1.amazonaws.com -execute-api.ap-northeast-1.amazonaws.com -execute-api.ap-northeast-2.amazonaws.com -execute-api.ap-northeast-3.amazonaws.com -execute-api.ap-south-1.amazonaws.com -execute-api.ap-south-2.amazonaws.com -execute-api.ap-southeast-1.amazonaws.com -execute-api.ap-southeast-2.amazonaws.com -execute-api.ap-southeast-3.amazonaws.com -execute-api.ap-southeast-4.amazonaws.com -execute-api.ca-central-1.amazonaws.com -execute-api.ca-west-1.amazonaws.com -execute-api.eu-central-1.amazonaws.com -execute-api.eu-central-2.amazonaws.com -execute-api.eu-north-1.amazonaws.com -execute-api.eu-south-1.amazonaws.com -execute-api.eu-south-2.amazonaws.com -execute-api.eu-west-1.amazonaws.com -execute-api.eu-west-2.amazonaws.com -execute-api.eu-west-3.amazonaws.com -execute-api.il-central-1.amazonaws.com -execute-api.me-central-1.amazonaws.com -execute-api.me-south-1.amazonaws.com -execute-api.sa-east-1.amazonaws.com -execute-api.us-east-1.amazonaws.com -execute-api.us-east-2.amazonaws.com -execute-api.us-gov-east-1.amazonaws.com -execute-api.us-gov-west-1.amazonaws.com -execute-api.us-west-1.amazonaws.com -execute-api.us-west-2.amazonaws.com - -// Amazon CloudFront -// Submitted by Donavan Miller -// Reference: 54144616-fd49-4435-8535-19c6a601bdb3 -cloudfront.net - -// Amazon Cognito -// Submitted by AWS Security -// Reference: cb38c251-c93d-4cda-81ec-e72c4f0fdb72 -auth.af-south-1.amazoncognito.com -auth.ap-east-1.amazoncognito.com -auth.ap-northeast-1.amazoncognito.com -auth.ap-northeast-2.amazoncognito.com -auth.ap-northeast-3.amazoncognito.com -auth.ap-south-1.amazoncognito.com -auth.ap-south-2.amazoncognito.com -auth.ap-southeast-1.amazoncognito.com -auth.ap-southeast-2.amazoncognito.com -auth.ap-southeast-3.amazoncognito.com -auth.ap-southeast-4.amazoncognito.com -auth.ca-central-1.amazoncognito.com -auth.ca-west-1.amazoncognito.com -auth.eu-central-1.amazoncognito.com -auth.eu-central-2.amazoncognito.com -auth.eu-north-1.amazoncognito.com -auth.eu-south-1.amazoncognito.com -auth.eu-south-2.amazoncognito.com -auth.eu-west-1.amazoncognito.com -auth.eu-west-2.amazoncognito.com -auth.eu-west-3.amazoncognito.com -auth.il-central-1.amazoncognito.com -auth.me-central-1.amazoncognito.com -auth.me-south-1.amazoncognito.com -auth.sa-east-1.amazoncognito.com -auth.us-east-1.amazoncognito.com -auth-fips.us-east-1.amazoncognito.com -auth.us-east-2.amazoncognito.com -auth-fips.us-east-2.amazoncognito.com -auth-fips.us-gov-west-1.amazoncognito.com -auth.us-west-1.amazoncognito.com -auth-fips.us-west-1.amazoncognito.com -auth.us-west-2.amazoncognito.com -auth-fips.us-west-2.amazoncognito.com - -// Amazon EC2 -// Submitted by Luke Wells -// Reference: 4c38fa71-58ac-4768-99e5-689c1767e537 -*.compute.amazonaws.com.cn -*.compute.amazonaws.com -*.compute-1.amazonaws.com -us-east-1.amazonaws.com - -// Amazon EMR -// Submitted by AWS Security -// Reference: 82f43f9f-bbb8-400e-8349-854f5a62f20d -emrappui-prod.cn-north-1.amazonaws.com.cn -emrnotebooks-prod.cn-north-1.amazonaws.com.cn -emrstudio-prod.cn-north-1.amazonaws.com.cn -emrappui-prod.cn-northwest-1.amazonaws.com.cn -emrnotebooks-prod.cn-northwest-1.amazonaws.com.cn -emrstudio-prod.cn-northwest-1.amazonaws.com.cn -emrappui-prod.af-south-1.amazonaws.com -emrnotebooks-prod.af-south-1.amazonaws.com -emrstudio-prod.af-south-1.amazonaws.com -emrappui-prod.ap-east-1.amazonaws.com -emrnotebooks-prod.ap-east-1.amazonaws.com -emrstudio-prod.ap-east-1.amazonaws.com -emrappui-prod.ap-northeast-1.amazonaws.com -emrnotebooks-prod.ap-northeast-1.amazonaws.com -emrstudio-prod.ap-northeast-1.amazonaws.com -emrappui-prod.ap-northeast-2.amazonaws.com -emrnotebooks-prod.ap-northeast-2.amazonaws.com -emrstudio-prod.ap-northeast-2.amazonaws.com -emrappui-prod.ap-northeast-3.amazonaws.com -emrnotebooks-prod.ap-northeast-3.amazonaws.com -emrstudio-prod.ap-northeast-3.amazonaws.com -emrappui-prod.ap-south-1.amazonaws.com -emrnotebooks-prod.ap-south-1.amazonaws.com -emrstudio-prod.ap-south-1.amazonaws.com -emrappui-prod.ap-south-2.amazonaws.com -emrnotebooks-prod.ap-south-2.amazonaws.com -emrstudio-prod.ap-south-2.amazonaws.com -emrappui-prod.ap-southeast-1.amazonaws.com -emrnotebooks-prod.ap-southeast-1.amazonaws.com -emrstudio-prod.ap-southeast-1.amazonaws.com -emrappui-prod.ap-southeast-2.amazonaws.com -emrnotebooks-prod.ap-southeast-2.amazonaws.com -emrstudio-prod.ap-southeast-2.amazonaws.com -emrappui-prod.ap-southeast-3.amazonaws.com -emrnotebooks-prod.ap-southeast-3.amazonaws.com -emrstudio-prod.ap-southeast-3.amazonaws.com -emrappui-prod.ap-southeast-4.amazonaws.com -emrnotebooks-prod.ap-southeast-4.amazonaws.com -emrstudio-prod.ap-southeast-4.amazonaws.com -emrappui-prod.ca-central-1.amazonaws.com -emrnotebooks-prod.ca-central-1.amazonaws.com -emrstudio-prod.ca-central-1.amazonaws.com -emrappui-prod.ca-west-1.amazonaws.com -emrnotebooks-prod.ca-west-1.amazonaws.com -emrstudio-prod.ca-west-1.amazonaws.com -emrappui-prod.eu-central-1.amazonaws.com -emrnotebooks-prod.eu-central-1.amazonaws.com -emrstudio-prod.eu-central-1.amazonaws.com -emrappui-prod.eu-central-2.amazonaws.com -emrnotebooks-prod.eu-central-2.amazonaws.com -emrstudio-prod.eu-central-2.amazonaws.com -emrappui-prod.eu-north-1.amazonaws.com -emrnotebooks-prod.eu-north-1.amazonaws.com -emrstudio-prod.eu-north-1.amazonaws.com -emrappui-prod.eu-south-1.amazonaws.com -emrnotebooks-prod.eu-south-1.amazonaws.com -emrstudio-prod.eu-south-1.amazonaws.com -emrappui-prod.eu-south-2.amazonaws.com -emrnotebooks-prod.eu-south-2.amazonaws.com -emrstudio-prod.eu-south-2.amazonaws.com -emrappui-prod.eu-west-1.amazonaws.com -emrnotebooks-prod.eu-west-1.amazonaws.com -emrstudio-prod.eu-west-1.amazonaws.com -emrappui-prod.eu-west-2.amazonaws.com -emrnotebooks-prod.eu-west-2.amazonaws.com -emrstudio-prod.eu-west-2.amazonaws.com -emrappui-prod.eu-west-3.amazonaws.com -emrnotebooks-prod.eu-west-3.amazonaws.com -emrstudio-prod.eu-west-3.amazonaws.com -emrappui-prod.il-central-1.amazonaws.com -emrnotebooks-prod.il-central-1.amazonaws.com -emrstudio-prod.il-central-1.amazonaws.com -emrappui-prod.me-central-1.amazonaws.com -emrnotebooks-prod.me-central-1.amazonaws.com -emrstudio-prod.me-central-1.amazonaws.com -emrappui-prod.me-south-1.amazonaws.com -emrnotebooks-prod.me-south-1.amazonaws.com -emrstudio-prod.me-south-1.amazonaws.com -emrappui-prod.sa-east-1.amazonaws.com -emrnotebooks-prod.sa-east-1.amazonaws.com -emrstudio-prod.sa-east-1.amazonaws.com -emrappui-prod.us-east-1.amazonaws.com -emrnotebooks-prod.us-east-1.amazonaws.com -emrstudio-prod.us-east-1.amazonaws.com -emrappui-prod.us-east-2.amazonaws.com -emrnotebooks-prod.us-east-2.amazonaws.com -emrstudio-prod.us-east-2.amazonaws.com -emrappui-prod.us-gov-east-1.amazonaws.com -emrnotebooks-prod.us-gov-east-1.amazonaws.com -emrstudio-prod.us-gov-east-1.amazonaws.com -emrappui-prod.us-gov-west-1.amazonaws.com -emrnotebooks-prod.us-gov-west-1.amazonaws.com -emrstudio-prod.us-gov-west-1.amazonaws.com -emrappui-prod.us-west-1.amazonaws.com -emrnotebooks-prod.us-west-1.amazonaws.com -emrstudio-prod.us-west-1.amazonaws.com -emrappui-prod.us-west-2.amazonaws.com -emrnotebooks-prod.us-west-2.amazonaws.com -emrstudio-prod.us-west-2.amazonaws.com - -// Amazon Managed Workflows for Apache Airflow -// Submitted by AWS Security -// Reference: f5ea5d0a-ec6a-4f23-ac1c-553fbff13f5c -*.cn-north-1.airflow.amazonaws.com.cn -*.cn-northwest-1.airflow.amazonaws.com.cn -*.af-south-1.airflow.amazonaws.com -*.ap-east-1.airflow.amazonaws.com -*.ap-northeast-1.airflow.amazonaws.com -*.ap-northeast-2.airflow.amazonaws.com -*.ap-northeast-3.airflow.amazonaws.com -*.ap-south-1.airflow.amazonaws.com -*.ap-south-2.airflow.amazonaws.com -*.ap-southeast-1.airflow.amazonaws.com -*.ap-southeast-2.airflow.amazonaws.com -*.ap-southeast-3.airflow.amazonaws.com -*.ap-southeast-4.airflow.amazonaws.com -*.ca-central-1.airflow.amazonaws.com -*.ca-west-1.airflow.amazonaws.com -*.eu-central-1.airflow.amazonaws.com -*.eu-central-2.airflow.amazonaws.com -*.eu-north-1.airflow.amazonaws.com -*.eu-south-1.airflow.amazonaws.com -*.eu-south-2.airflow.amazonaws.com -*.eu-west-1.airflow.amazonaws.com -*.eu-west-2.airflow.amazonaws.com -*.eu-west-3.airflow.amazonaws.com -*.il-central-1.airflow.amazonaws.com -*.me-central-1.airflow.amazonaws.com -*.me-south-1.airflow.amazonaws.com -*.sa-east-1.airflow.amazonaws.com -*.us-east-1.airflow.amazonaws.com -*.us-east-2.airflow.amazonaws.com -*.us-west-1.airflow.amazonaws.com -*.us-west-2.airflow.amazonaws.com - -// Amazon S3 -// Submitted by AWS Security -// Reference: cd5c8b3a-67b7-4b40-9236-c87ce81a3d10 -s3.dualstack.cn-north-1.amazonaws.com.cn -s3-accesspoint.dualstack.cn-north-1.amazonaws.com.cn -s3-website.dualstack.cn-north-1.amazonaws.com.cn -s3.cn-north-1.amazonaws.com.cn -s3-accesspoint.cn-north-1.amazonaws.com.cn -s3-deprecated.cn-north-1.amazonaws.com.cn -s3-object-lambda.cn-north-1.amazonaws.com.cn -s3-website.cn-north-1.amazonaws.com.cn -s3.dualstack.cn-northwest-1.amazonaws.com.cn -s3-accesspoint.dualstack.cn-northwest-1.amazonaws.com.cn -s3.cn-northwest-1.amazonaws.com.cn -s3-accesspoint.cn-northwest-1.amazonaws.com.cn -s3-object-lambda.cn-northwest-1.amazonaws.com.cn -s3-website.cn-northwest-1.amazonaws.com.cn -s3.dualstack.af-south-1.amazonaws.com -s3-accesspoint.dualstack.af-south-1.amazonaws.com -s3-website.dualstack.af-south-1.amazonaws.com -s3.af-south-1.amazonaws.com -s3-accesspoint.af-south-1.amazonaws.com -s3-object-lambda.af-south-1.amazonaws.com -s3-website.af-south-1.amazonaws.com -s3.dualstack.ap-east-1.amazonaws.com -s3-accesspoint.dualstack.ap-east-1.amazonaws.com -s3.ap-east-1.amazonaws.com -s3-accesspoint.ap-east-1.amazonaws.com -s3-object-lambda.ap-east-1.amazonaws.com -s3-website.ap-east-1.amazonaws.com -s3.dualstack.ap-northeast-1.amazonaws.com -s3-accesspoint.dualstack.ap-northeast-1.amazonaws.com -s3-website.dualstack.ap-northeast-1.amazonaws.com -s3.ap-northeast-1.amazonaws.com -s3-accesspoint.ap-northeast-1.amazonaws.com -s3-object-lambda.ap-northeast-1.amazonaws.com -s3-website.ap-northeast-1.amazonaws.com -s3.dualstack.ap-northeast-2.amazonaws.com -s3-accesspoint.dualstack.ap-northeast-2.amazonaws.com -s3-website.dualstack.ap-northeast-2.amazonaws.com -s3.ap-northeast-2.amazonaws.com -s3-accesspoint.ap-northeast-2.amazonaws.com -s3-object-lambda.ap-northeast-2.amazonaws.com -s3-website.ap-northeast-2.amazonaws.com -s3.dualstack.ap-northeast-3.amazonaws.com -s3-accesspoint.dualstack.ap-northeast-3.amazonaws.com -s3-website.dualstack.ap-northeast-3.amazonaws.com -s3.ap-northeast-3.amazonaws.com -s3-accesspoint.ap-northeast-3.amazonaws.com -s3-object-lambda.ap-northeast-3.amazonaws.com -s3-website.ap-northeast-3.amazonaws.com -s3.dualstack.ap-south-1.amazonaws.com -s3-accesspoint.dualstack.ap-south-1.amazonaws.com -s3-website.dualstack.ap-south-1.amazonaws.com -s3.ap-south-1.amazonaws.com -s3-accesspoint.ap-south-1.amazonaws.com -s3-object-lambda.ap-south-1.amazonaws.com -s3-website.ap-south-1.amazonaws.com -s3.dualstack.ap-south-2.amazonaws.com -s3-accesspoint.dualstack.ap-south-2.amazonaws.com -s3.ap-south-2.amazonaws.com -s3-accesspoint.ap-south-2.amazonaws.com -s3-object-lambda.ap-south-2.amazonaws.com -s3-website.ap-south-2.amazonaws.com -s3.dualstack.ap-southeast-1.amazonaws.com -s3-accesspoint.dualstack.ap-southeast-1.amazonaws.com -s3-website.dualstack.ap-southeast-1.amazonaws.com -s3.ap-southeast-1.amazonaws.com -s3-accesspoint.ap-southeast-1.amazonaws.com -s3-object-lambda.ap-southeast-1.amazonaws.com -s3-website.ap-southeast-1.amazonaws.com -s3.dualstack.ap-southeast-2.amazonaws.com -s3-accesspoint.dualstack.ap-southeast-2.amazonaws.com -s3-website.dualstack.ap-southeast-2.amazonaws.com -s3.ap-southeast-2.amazonaws.com -s3-accesspoint.ap-southeast-2.amazonaws.com -s3-object-lambda.ap-southeast-2.amazonaws.com -s3-website.ap-southeast-2.amazonaws.com -s3.dualstack.ap-southeast-3.amazonaws.com -s3-accesspoint.dualstack.ap-southeast-3.amazonaws.com -s3.ap-southeast-3.amazonaws.com -s3-accesspoint.ap-southeast-3.amazonaws.com -s3-object-lambda.ap-southeast-3.amazonaws.com -s3-website.ap-southeast-3.amazonaws.com -s3.dualstack.ap-southeast-4.amazonaws.com -s3-accesspoint.dualstack.ap-southeast-4.amazonaws.com -s3.ap-southeast-4.amazonaws.com -s3-accesspoint.ap-southeast-4.amazonaws.com -s3-object-lambda.ap-southeast-4.amazonaws.com -s3-website.ap-southeast-4.amazonaws.com -s3.dualstack.ca-central-1.amazonaws.com -s3-accesspoint.dualstack.ca-central-1.amazonaws.com -s3-accesspoint-fips.dualstack.ca-central-1.amazonaws.com -s3-fips.dualstack.ca-central-1.amazonaws.com -s3-website.dualstack.ca-central-1.amazonaws.com -s3.ca-central-1.amazonaws.com -s3-accesspoint.ca-central-1.amazonaws.com -s3-accesspoint-fips.ca-central-1.amazonaws.com -s3-fips.ca-central-1.amazonaws.com -s3-object-lambda.ca-central-1.amazonaws.com -s3-website.ca-central-1.amazonaws.com -s3.dualstack.ca-west-1.amazonaws.com -s3-accesspoint.dualstack.ca-west-1.amazonaws.com -s3-accesspoint-fips.dualstack.ca-west-1.amazonaws.com -s3-fips.dualstack.ca-west-1.amazonaws.com -s3-website.dualstack.ca-west-1.amazonaws.com -s3.ca-west-1.amazonaws.com -s3-accesspoint.ca-west-1.amazonaws.com -s3-accesspoint-fips.ca-west-1.amazonaws.com -s3-fips.ca-west-1.amazonaws.com -s3-website.ca-west-1.amazonaws.com -s3.dualstack.eu-central-1.amazonaws.com -s3-accesspoint.dualstack.eu-central-1.amazonaws.com -s3-website.dualstack.eu-central-1.amazonaws.com -s3.eu-central-1.amazonaws.com -s3-accesspoint.eu-central-1.amazonaws.com -s3-object-lambda.eu-central-1.amazonaws.com -s3-website.eu-central-1.amazonaws.com -s3.dualstack.eu-central-2.amazonaws.com -s3-accesspoint.dualstack.eu-central-2.amazonaws.com -s3.eu-central-2.amazonaws.com -s3-accesspoint.eu-central-2.amazonaws.com -s3-object-lambda.eu-central-2.amazonaws.com -s3-website.eu-central-2.amazonaws.com -s3.dualstack.eu-north-1.amazonaws.com -s3-accesspoint.dualstack.eu-north-1.amazonaws.com -s3.eu-north-1.amazonaws.com -s3-accesspoint.eu-north-1.amazonaws.com -s3-object-lambda.eu-north-1.amazonaws.com -s3-website.eu-north-1.amazonaws.com -s3.dualstack.eu-south-1.amazonaws.com -s3-accesspoint.dualstack.eu-south-1.amazonaws.com -s3-website.dualstack.eu-south-1.amazonaws.com -s3.eu-south-1.amazonaws.com -s3-accesspoint.eu-south-1.amazonaws.com -s3-object-lambda.eu-south-1.amazonaws.com -s3-website.eu-south-1.amazonaws.com -s3.dualstack.eu-south-2.amazonaws.com -s3-accesspoint.dualstack.eu-south-2.amazonaws.com -s3.eu-south-2.amazonaws.com -s3-accesspoint.eu-south-2.amazonaws.com -s3-object-lambda.eu-south-2.amazonaws.com -s3-website.eu-south-2.amazonaws.com -s3.dualstack.eu-west-1.amazonaws.com -s3-accesspoint.dualstack.eu-west-1.amazonaws.com -s3-website.dualstack.eu-west-1.amazonaws.com -s3.eu-west-1.amazonaws.com -s3-accesspoint.eu-west-1.amazonaws.com -s3-deprecated.eu-west-1.amazonaws.com -s3-object-lambda.eu-west-1.amazonaws.com -s3-website.eu-west-1.amazonaws.com -s3.dualstack.eu-west-2.amazonaws.com -s3-accesspoint.dualstack.eu-west-2.amazonaws.com -s3.eu-west-2.amazonaws.com -s3-accesspoint.eu-west-2.amazonaws.com -s3-object-lambda.eu-west-2.amazonaws.com -s3-website.eu-west-2.amazonaws.com -s3.dualstack.eu-west-3.amazonaws.com -s3-accesspoint.dualstack.eu-west-3.amazonaws.com -s3-website.dualstack.eu-west-3.amazonaws.com -s3.eu-west-3.amazonaws.com -s3-accesspoint.eu-west-3.amazonaws.com -s3-object-lambda.eu-west-3.amazonaws.com -s3-website.eu-west-3.amazonaws.com -s3.dualstack.il-central-1.amazonaws.com -s3-accesspoint.dualstack.il-central-1.amazonaws.com -s3.il-central-1.amazonaws.com -s3-accesspoint.il-central-1.amazonaws.com -s3-object-lambda.il-central-1.amazonaws.com -s3-website.il-central-1.amazonaws.com -s3.dualstack.me-central-1.amazonaws.com -s3-accesspoint.dualstack.me-central-1.amazonaws.com -s3.me-central-1.amazonaws.com -s3-accesspoint.me-central-1.amazonaws.com -s3-object-lambda.me-central-1.amazonaws.com -s3-website.me-central-1.amazonaws.com -s3.dualstack.me-south-1.amazonaws.com -s3-accesspoint.dualstack.me-south-1.amazonaws.com -s3.me-south-1.amazonaws.com -s3-accesspoint.me-south-1.amazonaws.com -s3-object-lambda.me-south-1.amazonaws.com -s3-website.me-south-1.amazonaws.com -s3.amazonaws.com -s3-1.amazonaws.com -s3-ap-east-1.amazonaws.com -s3-ap-northeast-1.amazonaws.com -s3-ap-northeast-2.amazonaws.com -s3-ap-northeast-3.amazonaws.com -s3-ap-south-1.amazonaws.com -s3-ap-southeast-1.amazonaws.com -s3-ap-southeast-2.amazonaws.com -s3-ca-central-1.amazonaws.com -s3-eu-central-1.amazonaws.com -s3-eu-north-1.amazonaws.com -s3-eu-west-1.amazonaws.com -s3-eu-west-2.amazonaws.com -s3-eu-west-3.amazonaws.com -s3-external-1.amazonaws.com -s3-fips-us-gov-east-1.amazonaws.com -s3-fips-us-gov-west-1.amazonaws.com -mrap.accesspoint.s3-global.amazonaws.com -s3-me-south-1.amazonaws.com -s3-sa-east-1.amazonaws.com -s3-us-east-2.amazonaws.com -s3-us-gov-east-1.amazonaws.com -s3-us-gov-west-1.amazonaws.com -s3-us-west-1.amazonaws.com -s3-us-west-2.amazonaws.com -s3-website-ap-northeast-1.amazonaws.com -s3-website-ap-southeast-1.amazonaws.com -s3-website-ap-southeast-2.amazonaws.com -s3-website-eu-west-1.amazonaws.com -s3-website-sa-east-1.amazonaws.com -s3-website-us-east-1.amazonaws.com -s3-website-us-gov-west-1.amazonaws.com -s3-website-us-west-1.amazonaws.com -s3-website-us-west-2.amazonaws.com -s3.dualstack.sa-east-1.amazonaws.com -s3-accesspoint.dualstack.sa-east-1.amazonaws.com -s3-website.dualstack.sa-east-1.amazonaws.com -s3.sa-east-1.amazonaws.com -s3-accesspoint.sa-east-1.amazonaws.com -s3-object-lambda.sa-east-1.amazonaws.com -s3-website.sa-east-1.amazonaws.com -s3.dualstack.us-east-1.amazonaws.com -s3-accesspoint.dualstack.us-east-1.amazonaws.com -s3-accesspoint-fips.dualstack.us-east-1.amazonaws.com -s3-fips.dualstack.us-east-1.amazonaws.com -s3-website.dualstack.us-east-1.amazonaws.com -s3.us-east-1.amazonaws.com -s3-accesspoint.us-east-1.amazonaws.com -s3-accesspoint-fips.us-east-1.amazonaws.com -s3-deprecated.us-east-1.amazonaws.com -s3-fips.us-east-1.amazonaws.com -s3-object-lambda.us-east-1.amazonaws.com -s3-website.us-east-1.amazonaws.com -s3.dualstack.us-east-2.amazonaws.com -s3-accesspoint.dualstack.us-east-2.amazonaws.com -s3-accesspoint-fips.dualstack.us-east-2.amazonaws.com -s3-fips.dualstack.us-east-2.amazonaws.com -s3.us-east-2.amazonaws.com -s3-accesspoint.us-east-2.amazonaws.com -s3-accesspoint-fips.us-east-2.amazonaws.com -s3-deprecated.us-east-2.amazonaws.com -s3-fips.us-east-2.amazonaws.com -s3-object-lambda.us-east-2.amazonaws.com -s3-website.us-east-2.amazonaws.com -s3.dualstack.us-gov-east-1.amazonaws.com -s3-accesspoint.dualstack.us-gov-east-1.amazonaws.com -s3-accesspoint-fips.dualstack.us-gov-east-1.amazonaws.com -s3-fips.dualstack.us-gov-east-1.amazonaws.com -s3.us-gov-east-1.amazonaws.com -s3-accesspoint.us-gov-east-1.amazonaws.com -s3-accesspoint-fips.us-gov-east-1.amazonaws.com -s3-fips.us-gov-east-1.amazonaws.com -s3-object-lambda.us-gov-east-1.amazonaws.com -s3-website.us-gov-east-1.amazonaws.com -s3.dualstack.us-gov-west-1.amazonaws.com -s3-accesspoint.dualstack.us-gov-west-1.amazonaws.com -s3-accesspoint-fips.dualstack.us-gov-west-1.amazonaws.com -s3-fips.dualstack.us-gov-west-1.amazonaws.com -s3.us-gov-west-1.amazonaws.com -s3-accesspoint.us-gov-west-1.amazonaws.com -s3-accesspoint-fips.us-gov-west-1.amazonaws.com -s3-fips.us-gov-west-1.amazonaws.com -s3-object-lambda.us-gov-west-1.amazonaws.com -s3-website.us-gov-west-1.amazonaws.com -s3.dualstack.us-west-1.amazonaws.com -s3-accesspoint.dualstack.us-west-1.amazonaws.com -s3-accesspoint-fips.dualstack.us-west-1.amazonaws.com -s3-fips.dualstack.us-west-1.amazonaws.com -s3-website.dualstack.us-west-1.amazonaws.com -s3.us-west-1.amazonaws.com -s3-accesspoint.us-west-1.amazonaws.com -s3-accesspoint-fips.us-west-1.amazonaws.com -s3-fips.us-west-1.amazonaws.com -s3-object-lambda.us-west-1.amazonaws.com -s3-website.us-west-1.amazonaws.com -s3.dualstack.us-west-2.amazonaws.com -s3-accesspoint.dualstack.us-west-2.amazonaws.com -s3-accesspoint-fips.dualstack.us-west-2.amazonaws.com -s3-fips.dualstack.us-west-2.amazonaws.com -s3-website.dualstack.us-west-2.amazonaws.com -s3.us-west-2.amazonaws.com -s3-accesspoint.us-west-2.amazonaws.com -s3-accesspoint-fips.us-west-2.amazonaws.com -s3-deprecated.us-west-2.amazonaws.com -s3-fips.us-west-2.amazonaws.com -s3-object-lambda.us-west-2.amazonaws.com -s3-website.us-west-2.amazonaws.com - -// Amazon SageMaker Ground Truth -// Submitted by AWS Security -// Reference: 98dbfde4-7802-48c3-8751-b60f204e0d9c -labeling.ap-northeast-1.sagemaker.aws -labeling.ap-northeast-2.sagemaker.aws -labeling.ap-south-1.sagemaker.aws -labeling.ap-southeast-1.sagemaker.aws -labeling.ap-southeast-2.sagemaker.aws -labeling.ca-central-1.sagemaker.aws -labeling.eu-central-1.sagemaker.aws -labeling.eu-west-1.sagemaker.aws -labeling.eu-west-2.sagemaker.aws -labeling.us-east-1.sagemaker.aws -labeling.us-east-2.sagemaker.aws -labeling.us-west-2.sagemaker.aws - -// Amazon SageMaker Notebook Instances -// Submitted by AWS Security -// Reference: b5ea56df-669e-43cc-9537-14aa172f5dfc -notebook.af-south-1.sagemaker.aws -notebook.ap-east-1.sagemaker.aws -notebook.ap-northeast-1.sagemaker.aws -notebook.ap-northeast-2.sagemaker.aws -notebook.ap-northeast-3.sagemaker.aws -notebook.ap-south-1.sagemaker.aws -notebook.ap-south-2.sagemaker.aws -notebook.ap-southeast-1.sagemaker.aws -notebook.ap-southeast-2.sagemaker.aws -notebook.ap-southeast-3.sagemaker.aws -notebook.ap-southeast-4.sagemaker.aws -notebook.ca-central-1.sagemaker.aws -notebook-fips.ca-central-1.sagemaker.aws -notebook.ca-west-1.sagemaker.aws -notebook-fips.ca-west-1.sagemaker.aws -notebook.eu-central-1.sagemaker.aws -notebook.eu-central-2.sagemaker.aws -notebook.eu-north-1.sagemaker.aws -notebook.eu-south-1.sagemaker.aws -notebook.eu-south-2.sagemaker.aws -notebook.eu-west-1.sagemaker.aws -notebook.eu-west-2.sagemaker.aws -notebook.eu-west-3.sagemaker.aws -notebook.il-central-1.sagemaker.aws -notebook.me-central-1.sagemaker.aws -notebook.me-south-1.sagemaker.aws -notebook.sa-east-1.sagemaker.aws -notebook.us-east-1.sagemaker.aws -notebook-fips.us-east-1.sagemaker.aws -notebook.us-east-2.sagemaker.aws -notebook-fips.us-east-2.sagemaker.aws -notebook.us-gov-east-1.sagemaker.aws -notebook-fips.us-gov-east-1.sagemaker.aws -notebook.us-gov-west-1.sagemaker.aws -notebook-fips.us-gov-west-1.sagemaker.aws -notebook.us-west-1.sagemaker.aws -notebook-fips.us-west-1.sagemaker.aws -notebook.us-west-2.sagemaker.aws -notebook-fips.us-west-2.sagemaker.aws -notebook.cn-north-1.sagemaker.com.cn -notebook.cn-northwest-1.sagemaker.com.cn - -// Amazon SageMaker Studio -// Submitted by AWS Security -// Reference: 69c723d9-6e1a-4bff-a203-48eecd203183 -studio.af-south-1.sagemaker.aws -studio.ap-east-1.sagemaker.aws -studio.ap-northeast-1.sagemaker.aws -studio.ap-northeast-2.sagemaker.aws -studio.ap-northeast-3.sagemaker.aws -studio.ap-south-1.sagemaker.aws -studio.ap-southeast-1.sagemaker.aws -studio.ap-southeast-2.sagemaker.aws -studio.ap-southeast-3.sagemaker.aws -studio.ca-central-1.sagemaker.aws -studio.eu-central-1.sagemaker.aws -studio.eu-north-1.sagemaker.aws -studio.eu-south-1.sagemaker.aws -studio.eu-south-2.sagemaker.aws -studio.eu-west-1.sagemaker.aws -studio.eu-west-2.sagemaker.aws -studio.eu-west-3.sagemaker.aws -studio.il-central-1.sagemaker.aws -studio.me-central-1.sagemaker.aws -studio.me-south-1.sagemaker.aws -studio.sa-east-1.sagemaker.aws -studio.us-east-1.sagemaker.aws -studio.us-east-2.sagemaker.aws -studio.us-gov-east-1.sagemaker.aws -studio-fips.us-gov-east-1.sagemaker.aws -studio.us-gov-west-1.sagemaker.aws -studio-fips.us-gov-west-1.sagemaker.aws -studio.us-west-1.sagemaker.aws -studio.us-west-2.sagemaker.aws -studio.cn-north-1.sagemaker.com.cn -studio.cn-northwest-1.sagemaker.com.cn - -// Amazon SageMaker with MLflow -// Submited by: AWS Security -// Reference: c19f92b3-a82a-452d-8189-831b572eea7e -*.experiments.sagemaker.aws - -// Analytics on AWS -// Submitted by AWS Security -// Reference: 955f9f40-a495-4e73-ae85-67b77ac9cadd -analytics-gateway.ap-northeast-1.amazonaws.com -analytics-gateway.ap-northeast-2.amazonaws.com -analytics-gateway.ap-south-1.amazonaws.com -analytics-gateway.ap-southeast-1.amazonaws.com -analytics-gateway.ap-southeast-2.amazonaws.com -analytics-gateway.eu-central-1.amazonaws.com -analytics-gateway.eu-west-1.amazonaws.com -analytics-gateway.us-east-1.amazonaws.com -analytics-gateway.us-east-2.amazonaws.com -analytics-gateway.us-west-2.amazonaws.com - -// AWS Amplify -// Submitted by AWS Security -// Reference: c35bed18-6f4f-424f-9298-5756f2f7d72b -amplifyapp.com - -// AWS App Runner -// Submitted by AWS Security -// Reference: 6828c008-ba5d-442f-ade5-48da4e7c2316 -*.awsapprunner.com - -// AWS Cloud9 -// Submitted by: AWS Security -// Reference: 30717f72-4007-4f0f-8ed4-864c6f2efec9 -webview-assets.aws-cloud9.af-south-1.amazonaws.com -vfs.cloud9.af-south-1.amazonaws.com -webview-assets.cloud9.af-south-1.amazonaws.com -webview-assets.aws-cloud9.ap-east-1.amazonaws.com -vfs.cloud9.ap-east-1.amazonaws.com -webview-assets.cloud9.ap-east-1.amazonaws.com -webview-assets.aws-cloud9.ap-northeast-1.amazonaws.com -vfs.cloud9.ap-northeast-1.amazonaws.com -webview-assets.cloud9.ap-northeast-1.amazonaws.com -webview-assets.aws-cloud9.ap-northeast-2.amazonaws.com -vfs.cloud9.ap-northeast-2.amazonaws.com -webview-assets.cloud9.ap-northeast-2.amazonaws.com -webview-assets.aws-cloud9.ap-northeast-3.amazonaws.com -vfs.cloud9.ap-northeast-3.amazonaws.com -webview-assets.cloud9.ap-northeast-3.amazonaws.com -webview-assets.aws-cloud9.ap-south-1.amazonaws.com -vfs.cloud9.ap-south-1.amazonaws.com -webview-assets.cloud9.ap-south-1.amazonaws.com -webview-assets.aws-cloud9.ap-southeast-1.amazonaws.com -vfs.cloud9.ap-southeast-1.amazonaws.com -webview-assets.cloud9.ap-southeast-1.amazonaws.com -webview-assets.aws-cloud9.ap-southeast-2.amazonaws.com -vfs.cloud9.ap-southeast-2.amazonaws.com -webview-assets.cloud9.ap-southeast-2.amazonaws.com -webview-assets.aws-cloud9.ca-central-1.amazonaws.com -vfs.cloud9.ca-central-1.amazonaws.com -webview-assets.cloud9.ca-central-1.amazonaws.com -webview-assets.aws-cloud9.eu-central-1.amazonaws.com -vfs.cloud9.eu-central-1.amazonaws.com -webview-assets.cloud9.eu-central-1.amazonaws.com -webview-assets.aws-cloud9.eu-north-1.amazonaws.com -vfs.cloud9.eu-north-1.amazonaws.com -webview-assets.cloud9.eu-north-1.amazonaws.com -webview-assets.aws-cloud9.eu-south-1.amazonaws.com -vfs.cloud9.eu-south-1.amazonaws.com -webview-assets.cloud9.eu-south-1.amazonaws.com -webview-assets.aws-cloud9.eu-west-1.amazonaws.com -vfs.cloud9.eu-west-1.amazonaws.com -webview-assets.cloud9.eu-west-1.amazonaws.com -webview-assets.aws-cloud9.eu-west-2.amazonaws.com -vfs.cloud9.eu-west-2.amazonaws.com -webview-assets.cloud9.eu-west-2.amazonaws.com -webview-assets.aws-cloud9.eu-west-3.amazonaws.com -vfs.cloud9.eu-west-3.amazonaws.com -webview-assets.cloud9.eu-west-3.amazonaws.com -webview-assets.aws-cloud9.il-central-1.amazonaws.com -vfs.cloud9.il-central-1.amazonaws.com -webview-assets.aws-cloud9.me-south-1.amazonaws.com -vfs.cloud9.me-south-1.amazonaws.com -webview-assets.cloud9.me-south-1.amazonaws.com -webview-assets.aws-cloud9.sa-east-1.amazonaws.com -vfs.cloud9.sa-east-1.amazonaws.com -webview-assets.cloud9.sa-east-1.amazonaws.com -webview-assets.aws-cloud9.us-east-1.amazonaws.com -vfs.cloud9.us-east-1.amazonaws.com -webview-assets.cloud9.us-east-1.amazonaws.com -webview-assets.aws-cloud9.us-east-2.amazonaws.com -vfs.cloud9.us-east-2.amazonaws.com -webview-assets.cloud9.us-east-2.amazonaws.com -webview-assets.aws-cloud9.us-west-1.amazonaws.com -vfs.cloud9.us-west-1.amazonaws.com -webview-assets.cloud9.us-west-1.amazonaws.com -webview-assets.aws-cloud9.us-west-2.amazonaws.com -vfs.cloud9.us-west-2.amazonaws.com -webview-assets.cloud9.us-west-2.amazonaws.com - -// AWS Directory Service -// Submitted by AWS Security -// Reference: a13203e8-42dc-4045-a0d2-2ee67bed1068 -awsapps.com - -// AWS Elastic Beanstalk -// Submitted by AWS Security -// Reference: bb5a965c-dec3-4967-aa22-e306ad064797 -cn-north-1.eb.amazonaws.com.cn -cn-northwest-1.eb.amazonaws.com.cn -elasticbeanstalk.com -af-south-1.elasticbeanstalk.com -ap-east-1.elasticbeanstalk.com -ap-northeast-1.elasticbeanstalk.com -ap-northeast-2.elasticbeanstalk.com -ap-northeast-3.elasticbeanstalk.com -ap-south-1.elasticbeanstalk.com -ap-southeast-1.elasticbeanstalk.com -ap-southeast-2.elasticbeanstalk.com -ap-southeast-3.elasticbeanstalk.com -ca-central-1.elasticbeanstalk.com -eu-central-1.elasticbeanstalk.com -eu-north-1.elasticbeanstalk.com -eu-south-1.elasticbeanstalk.com -eu-west-1.elasticbeanstalk.com -eu-west-2.elasticbeanstalk.com -eu-west-3.elasticbeanstalk.com -il-central-1.elasticbeanstalk.com -me-south-1.elasticbeanstalk.com -sa-east-1.elasticbeanstalk.com -us-east-1.elasticbeanstalk.com -us-east-2.elasticbeanstalk.com -us-gov-east-1.elasticbeanstalk.com -us-gov-west-1.elasticbeanstalk.com -us-west-1.elasticbeanstalk.com -us-west-2.elasticbeanstalk.com - -// (AWS) Elastic Load Balancing -// Submitted by Luke Wells -// Reference: 12a3d528-1bac-4433-a359-a395867ffed2 -*.elb.amazonaws.com.cn -*.elb.amazonaws.com - -// AWS Global Accelerator -// Submitted by Daniel Massaguer -// Reference: d916759d-a08b-4241-b536-4db887383a6a -awsglobalaccelerator.com - -// AWS re:Post Private -// Submitted by AWS Security -// Reference: 83385945-225f-416e-9aa0-ad0632bfdcee -*.private.repost.aws - -// eero -// Submitted by Yue Kang -// Reference: 264afe70-f62c-4c02-8ab9-b5281ed24461 -eero.online -eero-stage.online - -// concludes Amazon - -// Amune : https://amune.org/ -// Submitted by Team Amune -t3l3p0rt.net -tele.amune.org - -// Apigee : https://apigee.com/ -// Submitted by Apigee Security Team -apigee.io - -// Apis Networks: https://apisnetworks.com -// Submitted by Matt Saladna -panel.dev - -// Apphud : https://apphud.com -// Submitted by Alexander Selivanov -siiites.com - -// Appspace : https://www.appspace.com -// Submitted by Appspace Security Team -appspacehosted.com -appspaceusercontent.com - -// Appudo UG (haftungsbeschränkt) : https://www.appudo.com -// Submitted by Alexander Hochbaum -appudo.net - -// Aptible : https://www.aptible.com/ -// Submitted by Thomas Orozco -on-aptible.com - -// Aquapal : https://aquapal.net/ -// Submitted by Aki Ueno -f5.si - -// ASEINet : https://www.aseinet.com/ -// Submitted by Asei SEKIGUCHI -user.aseinet.ne.jp -gv.vc -d.gv.vc - -// Asociación Amigos de la Informática "Euskalamiga" : http://encounter.eus/ -// Submitted by Hector Martin -user.party.eus - -// Association potager.org : https://potager.org/ -// Submitted by Lunar -pimienta.org -poivron.org -potager.org -sweetpepper.org - -// ASUSTOR Inc. : http://www.asustor.com -// Submitted by Vincent Tseng -myasustor.com - -// Atlassian : https://atlassian.com -// Submitted by Sam Smyth -cdn.prod.atlassian-dev.net - -// Authentick UG (haftungsbeschränkt) : https://authentick.net -// Submitted by Lukas Reschke -translated.page - -// Autocode : https://autocode.com -// Submitted by Jacob Lee -autocode.dev - -// AVM : https://avm.de -// Submitted by Andreas Weise -myfritz.link -myfritz.net - -// AVStack Pte. Ltd. : https://avstack.io -// Submitted by Jasper Hugo -onavstack.net - -// AW AdvisorWebsites.com Software Inc : https://advisorwebsites.com -// Submitted by James Kennedy -*.awdev.ca -*.advisor.ws - -// AZ.pl sp. z.o.o: https://az.pl -// Submitted by Krzysztof Wolski -ecommerce-shop.pl - -// b-data GmbH : https://www.b-data.io -// Submitted by Olivier Benz -b-data.io - -// Balena : https://www.balena.io -// Submitted by Petros Angelatos -balena-devices.com - -// University of Banja Luka : https://unibl.org -// Domains for Republic of Srpska administrative entity. -// Submitted by Marko Ivanovic -rs.ba - -// Banzai Cloud -// Submitted by Janos Matyas -*.banzai.cloud -app.banzaicloud.io -*.backyards.banzaicloud.io - -// BASE, Inc. : https://binc.jp -// Submitted by Yuya NAGASAWA -base.ec -official.ec -buyshop.jp -fashionstore.jp -handcrafted.jp -kawaiishop.jp -supersale.jp -theshop.jp -shopselect.net -base.shop - -// BeagleBoard.org Foundation : https://beagleboard.org -// Submitted by Jason Kridner -beagleboard.io - -// Beget Ltd -// Submitted by Lev Nekrasov -*.beget.app - -// Besties : https://besties.house -// Submitted by Hazel Cora -pages.gay - -// BetaInABox -// Submitted by Adrian -betainabox.com - -// University of Bielsko-Biala regional domain: http://dns.bielsko.pl/ -// Submitted by Marcin -bielsko.pl - -// BinaryLane : http://www.binarylane.com -// Submitted by Nathan O'Sullivan -bnr.la - -// Bitbucket : http://bitbucket.org -// Submitted by Andy Ortlieb -bitbucket.io - -// Blackbaud, Inc. : https://www.blackbaud.com -// Submitted by Paul Crowder -blackbaudcdn.net - -// Blatech : http://www.blatech.net -// Submitted by Luke Bratch -of.je - -// Blue Bite, LLC : https://bluebite.com -// Submitted by Joshua Weiss -bluebite.io - -// Boomla : https://boomla.com -// Submitted by Tibor Halter -boomla.net - -// Boutir : https://www.boutir.com -// Submitted by Eric Ng Ka Ka -boutir.com - -// Boxfuse : https://boxfuse.com -// Submitted by Axel Fontaine -boxfuse.io - -// bplaced : https://www.bplaced.net/ -// Submitted by Miroslav Bozic -square7.ch -bplaced.com -bplaced.de -square7.de -bplaced.net -square7.net - -// Brave : https://brave.com -// Submitted by Andrea Brancaleoni -*.s.brave.io - -// Brendly : https://brendly.rs -// Submitted by Dusan Radovanovic -shop.brendly.hr -shop.brendly.rs - -// BrowserSafetyMark -// Submitted by Dave Tharp -browsersafetymark.io - -// Bytemark Hosting : https://www.bytemark.co.uk -// Submitted by Paul Cammish -uk0.bigv.io -dh.bytemark.co.uk -vm.bytemark.co.uk - -// Caf.js Labs LLC : https://www.cafjs.com -// Submitted by Antonio Lain -cafjs.com - -// callidomus : https://www.callidomus.com/ -// Submitted by Marcus Popp -mycd.eu - -// Canva Pty Ltd : https://canva.com/ -// Submitted by Joel Aquilina -canva-apps.cn -*.my.canvasite.cn -canva-apps.com -*.my.canva.site - -// Carrd : https://carrd.co -// Submitted by AJ -drr.ac -uwu.ai -carrd.co -crd.co -ju.mp - -// CentralNic : http://www.centralnic.com/names/domains -// Submitted by registry -za.bz -br.com -cn.com -de.com -eu.com -jpn.com -mex.com -ru.com -sa.com -uk.com -us.com -za.com -com.de -gb.net -hu.net -jp.net -se.net -uk.net -ae.org -com.se - -// No longer operated by CentralNic, these entries should be adopted and/or removed by current operators -// Submitted by Gavin Brown -ar.com -hu.com -kr.com -no.com -qc.com -uy.com - -// Africa.com Web Solutions Ltd : https://registry.africa.com -// Submitted by Gavin Brown -africa.com - -// iDOT Services Limited : http://www.domain.gr.com -// Submitted by Gavin Brown -gr.com - -// Radix FZC : http://domains.in.net -// Submitted by Gavin Brown -web.in -in.net - -// US REGISTRY LLC : http://us.org -// Submitted by Gavin Brown -us.org - -// co.com Registry, LLC : https://registry.co.com -// Submitted by Gavin Brown -co.com - -// Roar Domains LLC : https://roar.basketball/ -// Submitted by Gavin Brown -aus.basketball -nz.basketball - -// BRS Media : https://brsmedia.com/ -// Submitted by Gavin Brown -radio.am -radio.fm - -// certmgr.org : https://certmgr.org -// Submitted by B. Blechschmidt -certmgr.org - -// Cityhost LLC : https://cityhost.ua -// Submitted by Maksym Rivtin -cx.ua - -// Civilized Discourse Construction Kit, Inc. : https://www.discourse.org/ -// Submitted by Rishabh Nambiar & Michael Brown -discourse.group -discourse.team - -// Clever Cloud : https://www.clever-cloud.com/ -// Submitted by Quentin Adam -cleverapps.cc -*.services.clever-cloud.com -cleverapps.io -cleverapps.tech - -// Clerk : https://www.clerk.dev -// Submitted by Colin Sidoti -clerk.app -clerkstage.app -*.lcl.dev -*.lclstage.dev -*.stg.dev -*.stgstage.dev - -// ClickRising : https://clickrising.com/ -// Submitted by Umut Gumeli -clickrising.net - -// Cloud66 : https://www.cloud66.com/ -// Submitted by Khash Sajadi -c66.me -cloud66.ws -cloud66.zone - -// CloudAccess.net : https://www.cloudaccess.net/ -// Submitted by Pawel Panek -jdevcloud.com -wpdevcloud.com -cloudaccess.host -freesite.host -cloudaccess.net - -// Cloudera, Inc. : https://www.cloudera.com/ -// Submitted by Kedarnath Waikar -*.cloudera.site - -// Cloudflare, Inc. : https://www.cloudflare.com/ -// Submitted by Cloudflare Team -cf-ipfs.com -cloudflare-ipfs.com -trycloudflare.com -pages.dev -r2.dev -workers.dev -cdn.cloudflareanycast.net -cdn.cloudflarecn.net -cdn.cloudflareglobal.net -cloudflare.net -cdn.cloudflare.net - -// cloudscale.ch AG : https://www.cloudscale.ch/ -// Submitted by Gaudenz Steinlin -cust.cloudscale.ch -objects.lpg.cloudscale.ch -objects.rma.cloudscale.ch - -// Clovyr : https://clovyr.io -// Submitted by Patrick Nielsen -wnext.app - -// co.ca : http://registry.co.ca/ -co.ca - -// Co & Co : https://co-co.nl/ -// Submitted by Govert Versluis -*.otap.co - -// i-registry s.r.o. : http://www.i-registry.cz/ -// Submitted by Martin Semrad -co.cz - -// CDN77.com : http://www.cdn77.com -// Submitted by Jan Krpes -cdn77-storage.com -rsc.contentproxy9.cz -r.cdn77.net -cdn77-ssl.net -c.cdn77.org -rsc.cdn77.org -ssl.origin.cdn77-secure.org - -// Cloud DNS Ltd : http://www.cloudns.net -// Submitted by Aleksander Hristov & Boyan Peychev -cloudns.asia -cloudns.be -cloudns.biz -cloudns.cc -cloudns.ch -cloudns.cl -cloudns.club -dnsabr.com -cloudns.cx -cloudns.eu -cloudns.in -cloudns.info -dns-cloud.net -dns-dynamic.net -cloudns.nz -cloudns.org -cloudns.ph -cloudns.pro -cloudns.pw -cloudns.us - -// CNPY : https://cnpy.gdn -// Submitted by Angelo Gladding -cnpy.gdn - -// Codeberg e. V. : https://codeberg.org -// Submitted by Moritz Marquardt -codeberg.page - -// CodeSandbox B.V. : https://codesandbox.io -// Submitted by Ives van Hoorne -csb.app -preview.csb.app - -// CoDNS B.V. -co.nl -co.no - -// Combell.com : https://www.combell.com -// Submitted by Thomas Wouters -webhosting.be -hosting-cluster.nl - -// Convex : https://convex.dev/ -// Submitted by James Cowling -convex.site - -// Coordination Center for TLD RU and XN--P1AI : https://cctld.ru/en/domains/domens_ru/reserved/ -// Submitted by George Georgievsky -ac.ru -edu.ru -gov.ru -int.ru -mil.ru -test.ru - -// COSIMO GmbH : http://www.cosimo.de -// Submitted by Rene Marticke -dyn.cosidns.de -dnsupdater.de -dynamisches-dns.de -internet-dns.de -l-o-g-i-n.de -dynamic-dns.info -feste-ip.net -knx-server.net -static-access.net - -// Craft Docs Ltd : https://www.craft.do/ -// Submitted by Zsombor Fuszenecker -craft.me - -// Craynic, s.r.o. : http://www.craynic.com/ -// Submitted by Ales Krajnik -realm.cz - -// Crisp IM SAS : https://crisp.chat/ -// Submitted by Baptiste Jamin -on.crisp.email - -// Cryptonomic : https://cryptonomic.net/ -// Submitted by Andrew Cady -*.cryptonomic.net - -// Cupcake : https://cupcake.io/ -// Submitted by Jonathan Rudenberg -cupcake.is - -// Curv UG : https://curv-labs.de/ -// Submitted by Marvin Wiesner -curv.dev - -// Customer OCI - Oracle Dyn https://cloud.oracle.com/home https://dyn.com/dns/ -// Submitted by Gregory Drake -// Note: This is intended to also include customer-oci.com due to wildcards implicitly including the current label -*.customer-oci.com -*.oci.customer-oci.com -*.ocp.customer-oci.com -*.ocs.customer-oci.com - -// cyber_Folks S.A. : https://cyberfolks.pl -// Submitted by Bartlomiej Kida -cfolks.pl - -// cyon GmbH : https://www.cyon.ch/ -// Submitted by Dominic Luechinger -cyon.link -cyon.site - -// Danger Science Group: https://dangerscience.com/ -// Submitted by Skylar MacDonald -platform0.app -fnwk.site -folionetwork.site - -// Daplie, Inc : https://daplie.com -// Submitted by AJ ONeal -daplie.me -localhost.daplie.me - -// Datto, Inc. : https://www.datto.com/ -// Submitted by Philipp Heckel -dattolocal.com -dattorelay.com -dattoweb.com -mydatto.com -dattolocal.net -mydatto.net - -// Dansk.net : http://www.dansk.net/ -// Submitted by Anani Voule -biz.dk -co.dk -firm.dk -reg.dk -store.dk - -// dappnode.io : https://dappnode.io/ -// Submitted by Abel Boldu / DAppNode Team -dyndns.dappnode.io - -// dapps.earth : https://dapps.earth/ -// Submitted by Daniil Burdakov -*.dapps.earth -*.bzz.dapps.earth - -// Dark, Inc. : https://darklang.com -// Submitted by Paul Biggar -builtwithdark.com -darklang.io - -// DataDetect, LLC. : https://datadetect.com -// Submitted by Andrew Banchich -demo.datadetect.com -instance.datadetect.com - -// Datawire, Inc : https://www.datawire.io -// Submitted by Richard Li -edgestack.me - -// DDNS5 : https://ddns5.com -// Submitted by Cameron Elliott -ddns5.com - -// Debian : https://www.debian.org/ -// Submitted by Peter Palfrader / Debian Sysadmin Team -debian.net - -// Deno Land Inc : https://deno.com/ -// Submitted by Luca Casonato -deno.dev -deno-staging.dev - -// deSEC : https://desec.io/ -// Submitted by Peter Thomassen -dedyn.io - -// Deta: https://www.deta.sh/ -// Submitted by Aavash Shrestha -deta.app -deta.dev - -// dhosting.pl Sp. z o.o.: https://dhosting.pl/ -// Submitted by Michal Kokoszkiewicz -dfirma.pl -dkonto.pl -you2.pl - -// Diher Solutions : https://diher.solutions -// Submitted by Didi Hermawan -*.rss.my.id -*.diher.solutions - -// Discord Inc : https://discord.com -// Submitted by Sahn Lam -discordsays.com -discordsez.com - -// DNS Africa Ltd https://dns.business -// Submitted by Calvin Browne -jozi.biz - -// DNShome : https://www.dnshome.de/ -// Submitted by Norbert Auler -dnshome.de - -// DotArai : https://www.dotarai.com/ -// Submitted by Atsadawat Netcharadsang -online.th -shop.th - -// DrayTek Corp. : https://www.draytek.com/ -// Submitted by Paul Fang -drayddns.com - -// DreamCommerce : https://shoper.pl/ -// Submitted by Konrad Kotarba -shoparena.pl - -// DreamHost : http://www.dreamhost.com/ -// Submitted by Andrew Farmer -dreamhosters.com - -// Dreamyoungs, Inc. : https://durumis.com -// Submitted by Infra Team -durumis.com - -// Drobo : http://www.drobo.com/ -// Submitted by Ricardo Padilha -mydrobo.com - -// Drud Holdings, LLC. : https://www.drud.com/ -// Submitted by Kevin Bridges -drud.io -drud.us - -// DuckDNS : http://www.duckdns.org/ -// Submitted by Richard Harper -duckdns.org - -// Bip : https://bip.sh -// Submitted by Joel Kennedy -bip.sh - -// bitbridge.net : Submitted by Craig Welch, abeliidev@gmail.com -bitbridge.net - -// dy.fi : http://dy.fi/ -// Submitted by Heikki Hannikainen -dy.fi -tunk.org - -// DynDNS.com : http://www.dyndns.com/services/dns/dyndns/ -dyndns.biz -for-better.biz -for-more.biz -for-some.biz -for-the.biz -selfip.biz -webhop.biz -ftpaccess.cc -game-server.cc -myphotos.cc -scrapping.cc -blogdns.com -cechire.com -dnsalias.com -dnsdojo.com -doesntexist.com -dontexist.com -doomdns.com -dyn-o-saur.com -dynalias.com -dyndns-at-home.com -dyndns-at-work.com -dyndns-blog.com -dyndns-free.com -dyndns-home.com -dyndns-ip.com -dyndns-mail.com -dyndns-office.com -dyndns-pics.com -dyndns-remote.com -dyndns-server.com -dyndns-web.com -dyndns-wiki.com -dyndns-work.com -est-a-la-maison.com -est-a-la-masion.com -est-le-patron.com -est-mon-blogueur.com -from-ak.com -from-al.com -from-ar.com -from-ca.com -from-ct.com -from-dc.com -from-de.com -from-fl.com -from-ga.com -from-hi.com -from-ia.com -from-id.com -from-il.com -from-in.com -from-ks.com -from-ky.com -from-ma.com -from-md.com -from-mi.com -from-mn.com -from-mo.com -from-ms.com -from-mt.com -from-nc.com -from-nd.com -from-ne.com -from-nh.com -from-nj.com -from-nm.com -from-nv.com -from-oh.com -from-ok.com -from-or.com -from-pa.com -from-pr.com -from-ri.com -from-sc.com -from-sd.com -from-tn.com -from-tx.com -from-ut.com -from-va.com -from-vt.com -from-wa.com -from-wi.com -from-wv.com -from-wy.com -getmyip.com -gotdns.com -hobby-site.com -homelinux.com -homeunix.com -iamallama.com -is-a-anarchist.com -is-a-blogger.com -is-a-bookkeeper.com -is-a-bulls-fan.com -is-a-caterer.com -is-a-chef.com -is-a-conservative.com -is-a-cpa.com -is-a-cubicle-slave.com -is-a-democrat.com -is-a-designer.com -is-a-doctor.com -is-a-financialadvisor.com -is-a-geek.com -is-a-green.com -is-a-guru.com -is-a-hard-worker.com -is-a-hunter.com -is-a-landscaper.com -is-a-lawyer.com -is-a-liberal.com -is-a-libertarian.com -is-a-llama.com -is-a-musician.com -is-a-nascarfan.com -is-a-nurse.com -is-a-painter.com -is-a-personaltrainer.com -is-a-photographer.com -is-a-player.com -is-a-republican.com -is-a-rockstar.com -is-a-socialist.com -is-a-student.com -is-a-teacher.com -is-a-techie.com -is-a-therapist.com -is-an-accountant.com -is-an-actor.com -is-an-actress.com -is-an-anarchist.com -is-an-artist.com -is-an-engineer.com -is-an-entertainer.com -is-certified.com -is-gone.com -is-into-anime.com -is-into-cars.com -is-into-cartoons.com -is-into-games.com -is-leet.com -is-not-certified.com -is-slick.com -is-uberleet.com -is-with-theband.com -isa-geek.com -isa-hockeynut.com -issmarterthanyou.com -likes-pie.com -likescandy.com -neat-url.com -saves-the-whales.com -selfip.com -sells-for-less.com -sells-for-u.com -servebbs.com -simple-url.com -space-to-rent.com -teaches-yoga.com -writesthisblog.com -ath.cx -fuettertdasnetz.de -isteingeek.de -istmein.de -lebtimnetz.de -leitungsen.de -traeumtgerade.de -barrel-of-knowledge.info -barrell-of-knowledge.info -dyndns.info -for-our.info -groks-the.info -groks-this.info -here-for-more.info -knowsitall.info -selfip.info -webhop.info -forgot.her.name -forgot.his.name -at-band-camp.net -blogdns.net -broke-it.net -buyshouses.net -dnsalias.net -dnsdojo.net -does-it.net -dontexist.net -dynalias.net -dynathome.net -endofinternet.net -from-az.net -from-co.net -from-la.net -from-ny.net -gets-it.net -ham-radio-op.net -homeftp.net -homeip.net -homelinux.net -homeunix.net -in-the-band.net -is-a-chef.net -is-a-geek.net -isa-geek.net -kicks-ass.net -office-on-the.net -podzone.net -scrapper-site.net -selfip.net -sells-it.net -servebbs.net -serveftp.net -thruhere.net -webhop.net -merseine.nu -mine.nu -shacknet.nu -blogdns.org -blogsite.org -boldlygoingnowhere.org -dnsalias.org -dnsdojo.org -doesntexist.org -dontexist.org -doomdns.org -dvrdns.org -dynalias.org -dyndns.org -go.dyndns.org -home.dyndns.org -endofinternet.org -endoftheinternet.org -from-me.org -game-host.org -gotdns.org -hobby-site.org -homedns.org -homeftp.org -homelinux.org -homeunix.org -is-a-bruinsfan.org -is-a-candidate.org -is-a-celticsfan.org -is-a-chef.org -is-a-geek.org -is-a-knight.org -is-a-linux-user.org -is-a-patsfan.org -is-a-soxfan.org -is-found.org -is-lost.org -is-saved.org -is-very-bad.org -is-very-evil.org -is-very-good.org -is-very-nice.org -is-very-sweet.org -isa-geek.org -kicks-ass.org -misconfused.org -podzone.org -readmyblog.org -selfip.org -sellsyourhome.org -servebbs.org -serveftp.org -servegame.org -stuff-4-sale.org -webhop.org -better-than.tv -dyndns.tv -on-the-web.tv -worse-than.tv -is-by.us -land-4-sale.us -stuff-4-sale.us -dyndns.ws -mypets.ws - -// ddnss.de : https://www.ddnss.de/ -// Submitted by Robert Niedziela -ddnss.de -dyn.ddnss.de -dyndns.ddnss.de -dyn-ip24.de -dyndns1.de -home-webserver.de -dyn.home-webserver.de -myhome-server.de -ddnss.org - -// Definima : http://www.definima.com/ -// Submitted by Maxence Bitterli -definima.io -definima.net - -// DigitalOcean App Platform : https://www.digitalocean.com/products/app-platform/ -// Submitted by Braxton Huggins -ondigitalocean.app - -// DigitalOcean Spaces : https://www.digitalocean.com/products/spaces/ -// Submitted by Robin H. Johnson -*.digitaloceanspaces.com - -// DigitalPlat : https://www.digitalplat.org/ -// Submitted by Edward Hsing -us.kg - -// dnstrace.pro : https://dnstrace.pro/ -// Submitted by Chris Partridge -bci.dnstrace.pro - -// Dynu.com : https://www.dynu.com/ -// Submitted by Sue Ye -ddnsfree.com -ddnsgeek.com -giize.com -gleeze.com -kozow.com -loseyourip.com -ooguy.com -theworkpc.com -casacam.net -dynu.net -accesscam.org -camdvr.org -freeddns.org -mywire.org -webredirect.org -myddns.rocks -blogsite.xyz - -// dynv6 : https://dynv6.com -// Submitted by Dominik Menke -dynv6.net - -// E4YOU spol. s.r.o. : https://e4you.cz/ -// Submitted by Vladimir Dudr -e4.cz - -// Easypanel : https://easypanel.io -// Submitted by Andrei Canta -easypanel.app -easypanel.host - -// EasyWP : https://www.easywp.com -// Submitted by -*.ewp.live - -// eDirect Corp. : https://hosting.url.com.tw/ -// Submitted by C.S. chang -twmail.cc -twmail.net -twmail.org -mymailer.com.tw -url.tw - -// Electromagnetic Field : https://www.emfcamp.org -// Submitted by -at.emf.camp - -// Elefunc, Inc. : https://elefunc.com -// Submitted by Cetin Sert -rt.ht - -// Elementor : Elementor Ltd. -// Submitted by Anton Barkan -elementor.cloud -elementor.cool - -// En root‽ : https://en-root.org -// Submitted by Emmanuel Raviart -en-root.fr - -// Enalean SAS: https://www.enalean.com -// Submitted by Enalean Security Team -mytuleap.com -tuleap-partners.com - -// Encoretivity AB: https://encore.dev -// Submitted by André Eriksson -encr.app -encoreapi.com - -// ECG Robotics, Inc: https://ecgrobotics.org -// Submitted by -onred.one -staging.onred.one - -// encoway GmbH : https://www.encoway.de -// Submitted by Marcel Daus -eu.encoway.cloud - -// EU.org https://eu.org/ -// Submitted by Pierre Beyssac -eu.org -al.eu.org -asso.eu.org -at.eu.org -au.eu.org -be.eu.org -bg.eu.org -ca.eu.org -cd.eu.org -ch.eu.org -cn.eu.org -cy.eu.org -cz.eu.org -de.eu.org -dk.eu.org -edu.eu.org -ee.eu.org -es.eu.org -fi.eu.org -fr.eu.org -gr.eu.org -hr.eu.org -hu.eu.org -ie.eu.org -il.eu.org -in.eu.org -int.eu.org -is.eu.org -it.eu.org -jp.eu.org -kr.eu.org -lt.eu.org -lu.eu.org -lv.eu.org -mc.eu.org -me.eu.org -mk.eu.org -mt.eu.org -my.eu.org -net.eu.org -ng.eu.org -nl.eu.org -no.eu.org -nz.eu.org -paris.eu.org -pl.eu.org -pt.eu.org -q-a.eu.org -ro.eu.org -ru.eu.org -se.eu.org -si.eu.org -sk.eu.org -tr.eu.org -uk.eu.org -us.eu.org - -// Eurobyte : https://eurobyte.ru -// Submitted by Evgeniy Subbotin -eurodir.ru - -// Evennode : http://www.evennode.com/ -// Submitted by Michal Kralik -eu-1.evennode.com -eu-2.evennode.com -eu-3.evennode.com -eu-4.evennode.com -us-1.evennode.com -us-2.evennode.com -us-3.evennode.com -us-4.evennode.com - -// Evervault : https://evervault.com -// Submitted by Hannah Neary -relay.evervault.app -relay.evervault.dev - -// Expo : https://expo.dev/ -// Submitted by James Ide -expo.app -staging.expo.app - -// Fabrica Technologies, Inc. : https://www.fabrica.dev/ -// Submitted by Eric Jiang -onfabrica.com - -// FAITID : https://faitid.org/ -// Submitted by Maxim Alzoba -// https://www.flexireg.net/stat_info -ru.net -adygeya.ru -bashkiria.ru -bir.ru -cbg.ru -com.ru -dagestan.ru -grozny.ru -kalmykia.ru -kustanai.ru -marine.ru -mordovia.ru -msk.ru -mytis.ru -nalchik.ru -nov.ru -pyatigorsk.ru -spb.ru -vladikavkaz.ru -vladimir.ru -abkhazia.su -adygeya.su -aktyubinsk.su -arkhangelsk.su -armenia.su -ashgabad.su -azerbaijan.su -balashov.su -bashkiria.su -bryansk.su -bukhara.su -chimkent.su -dagestan.su -east-kazakhstan.su -exnet.su -georgia.su -grozny.su -ivanovo.su -jambyl.su -kalmykia.su -kaluga.su -karacol.su -karaganda.su -karelia.su -khakassia.su -krasnodar.su -kurgan.su -kustanai.su -lenug.su -mangyshlak.su -mordovia.su -msk.su -murmansk.su -nalchik.su -navoi.su -north-kazakhstan.su -nov.su -obninsk.su -penza.su -pokrovsk.su -sochi.su -spb.su -tashkent.su -termez.su -togliatti.su -troitsk.su -tselinograd.su -tula.su -tuva.su -vladikavkaz.su -vladimir.su -vologda.su - -// Fancy Bits, LLC : http://getchannels.com -// Submitted by Aman Gupta -channelsdvr.net -u.channelsdvr.net - -// Fastly Inc. : http://www.fastly.com/ -// Submitted by Fastly Security -edgecompute.app -fastly-edge.com -fastly-terrarium.com -freetls.fastly.net -map.fastly.net -a.prod.fastly.net -global.prod.fastly.net -a.ssl.fastly.net -b.ssl.fastly.net -global.ssl.fastly.net -fastlylb.net -map.fastlylb.net - -// Fastmail : https://www.fastmail.com/ -// Submitted by Marc Bradshaw -*.user.fm - -// FASTVPS EESTI OU : https://fastvps.ru/ -// Submitted by Likhachev Vasiliy -fastvps-server.com -fastvps.host -myfast.host -fastvps.site -myfast.space - -// Fedora : https://fedoraproject.org/ -// submitted by Patrick Uiterwijk -fedorainfracloud.org -fedorapeople.org -cloud.fedoraproject.org -app.os.fedoraproject.org -app.os.stg.fedoraproject.org - -// FearWorks Media Ltd. : https://fearworksmedia.co.uk -// submitted by Keith Fairley -conn.uk -copro.uk -hosp.uk - -// Fermax : https://fermax.com/ -// submitted by Koen Van Isterdael -mydobiss.com - -// FH Muenster : https://www.fh-muenster.de -// Submitted by Robin Naundorf -fh-muenster.io - -// Filegear Inc. : https://www.filegear.com -// Submitted by Jason Zhu -filegear.me - -// Firebase, Inc. -// Submitted by Chris Raynor -firebaseapp.com - -// Firewebkit : https://www.firewebkit.com -// Submitted by Majid Qureshi -fireweb.app - -// FLAP : https://www.flap.cloud -// Submitted by Louis Chemineau -flap.id - -// FlashDrive : https://flashdrive.io -// Submitted by Eric Chan -fldrv.com - -// FlutterFlow : https://flutterflow.io -// Submitted by Anton Emelyanov -flutterflow.app - -// fly.io: https://fly.io -// Submitted by Kurt Mackey -fly.dev -shw.io -edgeapp.net - -// Flynn : https://flynn.io -// Submitted by Jonathan Rudenberg -flynnhosting.net - -// Forgerock : https://www.forgerock.com -// Submitted by Roderick Parr -forgeblocks.com -id.forgerock.io - -// Framer : https://www.framer.com -// Submitted by Koen Rouwhorst -framer.ai -framer.app -framercanvas.com -framer.media -framer.photos -framer.website -framer.wiki - -// Frusky MEDIA&PR : https://www.frusky.de -// Submitted by Victor Pupynin -*.frusky.de - -// RavPage : https://www.ravpage.co.il -// Submitted by Roni Horowitz -ravpage.co.il - -// Frederik Braun https://frederik-braun.com -// Submitted by Frederik Braun -0e.vc - -// Freebox : http://www.freebox.fr -// Submitted by Romain Fliedel -freebox-os.com -freeboxos.com -fbx-os.fr -fbxos.fr -freebox-os.fr -freeboxos.fr - -// freedesktop.org : https://www.freedesktop.org -// Submitted by Daniel Stone -freedesktop.org - -// freemyip.com : https://freemyip.com -// Submitted by Cadence -freemyip.com - -// FunkFeuer - Verein zur Förderung freier Netze : https://www.funkfeuer.at -// Submitted by Daniel A. Maierhofer -wien.funkfeuer.at - -// Future Versatile Group. : https://www.fvg-on.net/ -// T.Kabu -daemon.asia -dix.asia -mydns.bz -0am.jp -0g0.jp -0j0.jp -0t0.jp -mydns.jp -pgw.jp -wjg.jp -keyword-on.net -live-on.net -server-on.net -mydns.tw -mydns.vc - -// Futureweb GmbH : https://www.futureweb.at -// Submitted by Andreas Schnederle-Wagner -*.futurecms.at -*.ex.futurecms.at -*.in.futurecms.at -futurehosting.at -futuremailing.at -*.ex.ortsinfo.at -*.kunden.ortsinfo.at -*.statics.cloud - -// GCom Internet : https://www.gcom.net.au -// Submitted by Leo Julius -aliases121.com - -// GDS : https://www.gov.uk/service-manual/technology/managing-domain-names -// Submitted by Stephen Ford -campaign.gov.uk -service.gov.uk -independent-commission.uk -independent-inquest.uk -independent-inquiry.uk -independent-panel.uk -independent-review.uk -public-inquiry.uk -royal-commission.uk - -// CDDO : https://www.gov.uk/guidance/get-an-api-domain-on-govuk -// Submitted by Jamie Tanna -api.gov.uk - -// Gehirn Inc. : https://www.gehirn.co.jp/ -// Submitted by Kohei YOSHIDA -gehirn.ne.jp -usercontent.jp - -// Gentlent, Inc. : https://www.gentlent.com -// Submitted by Tom Klein -gentapps.com -gentlentapis.com -lab.ms -cdn-edges.net - -// Getlocalcert: https://www.getlocalcert.net -// Submitted by Robert Alexander -localcert.net -localhostcert.net -corpnet.work - -// GignoSystemJapan: http://gsj.bz -// Submitted by GignoSystemJapan -gsj.bz - -// GitHub, Inc. -// Submitted by Patrick Toomey -githubusercontent.com -githubpreview.dev -github.io - -// GitLab, Inc. -// Submitted by Alex Hanselka -gitlab.io - -// Gitplac.si - https://gitplac.si -// Submitted by Aljaž Starc -gitapp.si -gitpage.si - -// Glitch, Inc : https://glitch.com -// Submitted by Mads Hartmann -glitch.me - -// Global NOG Alliance : https://nogalliance.org/ -// Submitted by Sander Steffann -nog.community - -// Globe Hosting SRL : https://www.globehosting.com/ -// Submitted by Gavin Brown -co.ro -shop.ro - -// GMO Pepabo, Inc. : https://pepabo.com/ -// Submitted by Hosting Div -lolipop.io -angry.jp -babyblue.jp -babymilk.jp -backdrop.jp -bambina.jp -bitter.jp -blush.jp -boo.jp -boy.jp -boyfriend.jp -but.jp -candypop.jp -capoo.jp -catfood.jp -cheap.jp -chicappa.jp -chillout.jp -chips.jp -chowder.jp -chu.jp -ciao.jp -cocotte.jp -coolblog.jp -cranky.jp -cutegirl.jp -daa.jp -deca.jp -deci.jp -digick.jp -egoism.jp -fakefur.jp -fem.jp -flier.jp -floppy.jp -fool.jp -frenchkiss.jp -girlfriend.jp -girly.jp -gloomy.jp -gonna.jp -greater.jp -hacca.jp -heavy.jp -her.jp -hiho.jp -hippy.jp -holy.jp -hungry.jp -icurus.jp -itigo.jp -jellybean.jp -kikirara.jp -kill.jp -kilo.jp -kuron.jp -littlestar.jp -lolipopmc.jp -lolitapunk.jp -lomo.jp -lovepop.jp -lovesick.jp -main.jp -mods.jp -mond.jp -mongolian.jp -moo.jp -namaste.jp -nikita.jp -nobushi.jp -noor.jp -oops.jp -parallel.jp -parasite.jp -pecori.jp -peewee.jp -penne.jp -pepper.jp -perma.jp -pigboat.jp -pinoko.jp -punyu.jp -pupu.jp -pussycat.jp -pya.jp -raindrop.jp -readymade.jp -sadist.jp -schoolbus.jp -secret.jp -staba.jp -stripper.jp -sub.jp -sunnyday.jp -thick.jp -tonkotsu.jp -under.jp -upper.jp -velvet.jp -verse.jp -versus.jp -vivian.jp -watson.jp -weblike.jp -whitesnow.jp -zombie.jp -heteml.net - -// GoDaddy Registry : https://registry.godaddy -// Submitted by Rohan Durrant -graphic.design - -// GOV.UK Platform as a Service : https://www.cloud.service.gov.uk/ -// Submitted by Tom Whitwell -cloudapps.digital -london.cloudapps.digital - -// GOV.UK Pay : https://www.payments.service.gov.uk/ -// Submitted by Richard Baker -pymnt.uk - -// GoIP DNS Services : http://www.goip.de -// Submitted by Christian Poulter -goip.de - -// Google, Inc. -// Submitted by Shannon McCabe -blogspot.ae -blogspot.al -blogspot.am -*.hosted.app -*.run.app -web.app -blogspot.com.ar -blogspot.co.at -blogspot.com.au -blogspot.ba -blogspot.be -blogspot.bg -blogspot.bj -blogspot.com.br -blogspot.com.by -blogspot.ca -blogspot.cf -blogspot.ch -blogspot.cl -blogspot.com.co -*.0emm.com -appspot.com -*.r.appspot.com -blogspot.com -codespot.com -googleapis.com -googlecode.com -pagespeedmobilizer.com -publishproxy.com -withgoogle.com -withyoutube.com -blogspot.cv -blogspot.com.cy -blogspot.cz -blogspot.de -*.gateway.dev -blogspot.dk -blogspot.com.ee -blogspot.com.eg -blogspot.com.es -blogspot.fi -blogspot.fr -cloud.goog -translate.goog -*.usercontent.goog -blogspot.gr -blogspot.hk -blogspot.hr -blogspot.hu -blogspot.co.id -blogspot.ie -blogspot.co.il -blogspot.in -blogspot.is -blogspot.it -blogspot.jp -blogspot.co.ke -blogspot.kr -blogspot.li -blogspot.lt -blogspot.lu -blogspot.md -blogspot.mk -blogspot.mr -blogspot.com.mt -blogspot.mx -blogspot.my -cloudfunctions.net -blogspot.com.ng -blogspot.nl -blogspot.no -blogspot.co.nz -blogspot.pe -blogspot.pt -blogspot.qa -blogspot.re -blogspot.ro -blogspot.rs -blogspot.ru -blogspot.se -blogspot.sg -blogspot.si -blogspot.sk -blogspot.sn -blogspot.td -blogspot.com.tr -blogspot.tw -blogspot.ug -blogspot.co.uk -blogspot.com.uy -blogspot.vn -blogspot.co.za - -// Goupile : https://goupile.fr -// Submitted by Niels Martignene -goupile.fr - -// Government of the Netherlands: https://www.government.nl -// Submitted by -gov.nl - -// GrayJay Web Solutions Inc. : https://grayjaysports.ca -// Submitted by Matt Yamkowy -grayjayleagues.com - -// Group 53, LLC : https://www.group53.com -// Submitted by Tyler Todd -awsmppl.com - -// GünstigBestellen : https://günstigbestellen.de -// Submitted by Furkan Akkoc -günstigbestellen.de -günstigliefern.de - -// Hakaran group: http://hakaran.cz -// Submitted by Arseniy Sokolov -fin.ci -free.hr -caa.li -ua.rs -conf.se - -// Handshake : https://handshake.org -// Submitted by Mike Damm -hs.run -hs.zone - -// Hashbang : https://hashbang.sh -hashbang.sh - -// Hasura : https://hasura.io -// Submitted by Shahidh K Muhammed -hasura.app -hasura-app.io - -// Hatena Co., Ltd. : https://hatena.co.jp -// Submitted by Masato Nakamura -hatenablog.com -hatenadiary.com -hateblo.jp -hatenablog.jp -hatenadiary.jp -hatenadiary.org - -// Heilbronn University of Applied Sciences - Faculty Informatics (GitLab Pages): https://www.hs-heilbronn.de -// Submitted by Richard Zowalla -pages.it.hs-heilbronn.de - -// Helio Networks : https://heliohost.org -// Submitted by Ben Frede -helioho.st -heliohost.us - -// HeiyuSpace: https://lazycat.cloud -// Submitted by Xia Bin -heiyu.space - -// Hepforge : https://www.hepforge.org -// Submitted by David Grellscheid -hepforge.org - -// Heroku : https://www.heroku.com/ -// Submitted by Tom Maher -herokuapp.com -herokussl.com - -// Hibernating Rhinos -// Submitted by Oren Eini -ravendb.cloud -ravendb.community -development.run -ravendb.run - -// home.pl S.A.: https://home.pl -// Submitted by Krzysztof Wolski -homesklep.pl - -// Homebase : https://homebase.id/ -// Submitted by Jason Babo -*.kin.one -*.id.pub -*.kin.pub - -// Hong Kong Productivity Council: https://www.hkpc.org/ -// Submitted by SECaaS Team -secaas.hk - -// Hoplix : https://www.hoplix.com -// Submitted by Danilo De Franco -hoplix.shop - - -// HOSTBIP REGISTRY : https://www.hostbip.com/ -// Submitted by Atanunu Igbunuroghene -orx.biz -biz.gl -col.ng -firm.ng -gen.ng -ltd.ng -ngo.ng -edu.scot -sch.so - -// HostFly : https://www.ie.ua -// Submitted by Bohdan Dub -ie.ua - -// HostyHosting (https://hostyhosting.com) -hostyhosting.io - -// Hypernode B.V. : https://www.hypernode.com/ -// Submitted by Cipriano Groenendal -hypernode.io - -// Häkkinen.fi -// Submitted by Eero Häkkinen -häkkinen.fi - -// Ici la Lune : http://www.icilalune.com/ -// Submitted by Simon Morvan -*.moonscale.io -moonscale.net - -// iki.fi -// Submitted by Hannu Aronsson -iki.fi - -// iliad italia: https://www.iliad.it -// Submitted by Marios Makassikis -ibxos.it -iliadboxos.it - -// Incsub, LLC: https://incsub.com/ -// Submitted by Aaron Edwards -smushcdn.com -wphostedmail.com -wpmucdn.com -tempurl.host -wpmudev.host - -// Individual Network Berlin e.V. : https://www.in-berlin.de/ -// Submitted by Christian Seitz -dyn-berlin.de -in-berlin.de -in-brb.de -in-butter.de -in-dsl.de -in-vpn.de -in-dsl.net -in-vpn.net -in-dsl.org -in-vpn.org - -// info.at : http://www.info.at/ -biz.at -info.at - -// info.cx : http://info.cx -// Submitted by June Slater -info.cx - -// Interlegis : http://www.interlegis.leg.br -// Submitted by Gabriel Ferreira -ac.leg.br -al.leg.br -am.leg.br -ap.leg.br -ba.leg.br -ce.leg.br -df.leg.br -es.leg.br -go.leg.br -ma.leg.br -mg.leg.br -ms.leg.br -mt.leg.br -pa.leg.br -pb.leg.br -pe.leg.br -pi.leg.br -pr.leg.br -rj.leg.br -rn.leg.br -ro.leg.br -rr.leg.br -rs.leg.br -sc.leg.br -se.leg.br -sp.leg.br -to.leg.br - -// intermetrics GmbH : https://pixolino.com/ -// Submitted by Wolfgang Schwarz -pixolino.com - -// Internet-Pro, LLP: https://netangels.ru/ -// Submitted by Vasiliy Sheredeko -na4u.ru - -// iopsys software solutions AB : https://iopsys.eu/ -// Submitted by Roman Azarenko -iopsys.se - -// IPiFony Systems, Inc. : https://www.ipifony.com/ -// Submitted by Matthew Hardeman -ipifony.net - -// is-a.dev : https://www.is-a.dev -// Submitted by William Harrison -is-a.dev - -// ir.md : https://nic.ir.md -// Submitted by Ali Soizi -ir.md - -// IServ GmbH : https://iserv.de -// Submitted by Mario Hoberg -iservschule.de -mein-iserv.de -schulplattform.de -schulserver.de -test-iserv.de -iserv.dev - -// I-O DATA DEVICE, INC. : http://www.iodata.com/ -// Submitted by Yuji Minagawa -iobb.net - -// Jelastic, Inc. : https://jelastic.com/ -// Submitted by Ihor Kolodyuk -mel.cloudlets.com.au -cloud.interhostsolutions.be -mycloud.by -alp1.ae.flow.ch -appengine.flow.ch -es-1.axarnet.cloud -diadem.cloud -vip.jelastic.cloud -jele.cloud -it1.eur.aruba.jenv-aruba.cloud -it1.jenv-aruba.cloud -keliweb.cloud -cs.keliweb.cloud -oxa.cloud -tn.oxa.cloud -uk.oxa.cloud -primetel.cloud -uk.primetel.cloud -ca.reclaim.cloud -uk.reclaim.cloud -us.reclaim.cloud -ch.trendhosting.cloud -de.trendhosting.cloud -jele.club -amscompute.com -dopaas.com -paas.hosted-by-previder.com -rag-cloud.hosteur.com -rag-cloud-ch.hosteur.com -jcloud.ik-server.com -jcloud-ver-jpc.ik-server.com -demo.jelastic.com -kilatiron.com -paas.massivegrid.com -jed.wafaicloud.com -lon.wafaicloud.com -ryd.wafaicloud.com -j.scaleforce.com.cy -jelastic.dogado.eu -fi.cloudplatform.fi -demo.datacenter.fi -paas.datacenter.fi -jele.host -mircloud.host -paas.beebyte.io -sekd1.beebyteapp.io -jele.io -cloud-fr1.unispace.io -jc.neen.it -cloud.jelastic.open.tim.it -jcloud.kz -upaas.kazteleport.kz -cloudjiffy.net -fra1-de.cloudjiffy.net -west1-us.cloudjiffy.net -jls-sto1.elastx.net -jls-sto2.elastx.net -jls-sto3.elastx.net -faststacks.net -fr-1.paas.massivegrid.net -lon-1.paas.massivegrid.net -lon-2.paas.massivegrid.net -ny-1.paas.massivegrid.net -ny-2.paas.massivegrid.net -sg-1.paas.massivegrid.net -jelastic.saveincloud.net -nordeste-idc.saveincloud.net -j.scaleforce.net -jelastic.tsukaeru.net -sdscloud.pl -unicloud.pl -mircloud.ru -jelastic.regruhosting.ru -enscaled.sg -jele.site -jelastic.team -orangecloud.tn -j.layershift.co.uk -phx.enscaled.us -mircloud.us - -// Jino : https://www.jino.ru -// Submitted by Sergey Ulyashin -myjino.ru -*.hosting.myjino.ru -*.landing.myjino.ru -*.spectrum.myjino.ru -*.vps.myjino.ru - -// Jotelulu S.L. : https://jotelulu.com -// Submitted by Daniel Fariña -jotelulu.cloud - -// JouwWeb B.V. : https://www.jouwweb.nl -// Submitted by Camilo Sperberg -webadorsite.com -jouwweb.site - -// Joyent : https://www.joyent.com/ -// Submitted by Brian Bennett -*.cns.joyent.com -*.triton.zone - -// JS.ORG : http://dns.js.org -// Submitted by Stefan Keim -js.org - -// KaasHosting : http://www.kaashosting.nl/ -// Submitted by Wouter Bakker -kaas.gg -khplay.nl - -// Kakao : https://www.kakaocorp.com/ -// Submitted by JaeYoong Lee -ktistory.com - -// Kapsi : https://kapsi.fi -// Submitted by Tomi Juntunen -kapsi.fi - -// Keyweb AG : https://www.keyweb.de -// Submitted by Martin Dannehl -keymachine.de - -// KingHost : https://king.host -// Submitted by Felipe Keller Braz -kinghost.net -uni5.net - -// KnightPoint Systems, LLC : http://www.knightpoint.com/ -// Submitted by Roy Keene -knightpoint.systems - -// KoobinEvent, SL: https://www.koobin.com -// Submitted by Iván Oliva -koobin.events - -// KUROKU LTD : https://kuroku.ltd/ -// Submitted by DisposaBoy -oya.to - -// Katholieke Universiteit Leuven: https://www.kuleuven.be -// Submitted by Abuse KU Leuven -ezproxy.kuleuven.be -kuleuven.cloud - -// .KRD : http://nic.krd/data/krd/Registration%20Policy.pdf -co.krd -edu.krd - -// Krellian Ltd. : https://krellian.com -// Submitted by Ben Francis -webthings.io -krellian.net - -// LCube - Professional hosting e.K. : https://www.lcube-webhosting.de -// Submitted by Lars Laehn -git-repos.de -lcube-server.de -svn-repos.de - -// Leadpages : https://www.leadpages.net -// Submitted by Greg Dallavalle -leadpages.co -lpages.co -lpusercontent.com - -// Lelux.fi : https://lelux.fi/ -// Submitted by Lelux Admin -lelux.site - -// Libre IT Ltd : https://libre.nz -// Submitted by Tomas Maggio -runcontainers.dev - -// Lifetime Hosting : https://Lifetime.Hosting/ -// Submitted by Mike Fillator -co.business -co.education -co.events -co.financial -co.network -co.place -co.technology - -// linkyard ldt: https://www.linkyard.ch/ -// Submitted by Mario Siegenthaler -linkyard-cloud.ch -linkyard.cloud - -// Linode : https://linode.com -// Submitted by -members.linode.com -*.nodebalancer.linode.com -*.linodeobjects.com -ip.linodeusercontent.com - -// LiquidNet Ltd : http://www.liquidnetlimited.com/ -// Submitted by Victor Velchev -we.bs - -// Localcert : https://localcert.dev -// Submitted by Lann Martin -*.user.localcert.dev - -// localzone.xyz -// Submitted by Kenny Niehage -localzone.xyz - -// Log'in Line : https://www.loginline.com/ -// Submitted by Rémi Mach -loginline.app -loginline.dev -loginline.io -loginline.services -loginline.site - -// Lokalized : https://lokalized.nl -// Submitted by Noah Taheij -servers.run - -// Lõhmus Family, The -// Submitted by Heiki Lõhmus -lohmus.me - -// LubMAN UMCS Sp. z o.o : https://lubman.pl/ -// Submitted by Ireneusz Maliszewski -krasnik.pl -leczna.pl -lubartow.pl -lublin.pl -poniatowa.pl -swidnik.pl - -// Lug.org.uk : https://lug.org.uk -// Submitted by Jon Spriggs -glug.org.uk -lug.org.uk -lugs.org.uk - -// Lukanet Ltd : https://lukanet.com -// Submitted by Anton Avramov -barsy.bg -barsy.club -barsycenter.com -barsyonline.com -barsy.de -barsy.dev -barsy.eu -barsy.gr -barsy.in -barsy.info -barsy.io -barsy.me -barsy.menu -barsyonline.menu -barsy.mobi -barsy.net -barsy.online -barsy.org -barsy.pro -barsy.pub -barsy.ro -barsy.rs -barsy.shop -barsyonline.shop -barsy.site -barsy.store -barsy.support -barsy.uk -barsy.co.uk -barsyonline.co.uk - -// Magento Commerce -// Submitted by Damien Tournoud -*.magentosite.cloud - -// May First - People Link : https://mayfirst.org/ -// Submitted by Jamie McClelland -mayfirst.info -mayfirst.org - -// Mail.Ru Group : https://hb.cldmail.ru -// Submitted by Ilya Zaretskiy -hb.cldmail.ru - -// Maze Play: https://www.mazeplay.com -// Submitted by Adam Humpherys -mazeplay.com - -// mcpe.me : https://mcpe.me -// Submitted by Noa Heyl -mcpe.me - -// McHost : https://mchost.ru -// Submitted by Evgeniy Subbotin -mcdir.me -mcdir.ru -vps.mcdir.ru -mcpre.ru - -// Mediatech : https://mediatech.by -// Submitted by Evgeniy Kozhuhovskiy -mediatech.by -mediatech.dev - -// Medicom Health : https://medicomhealth.com -// Submitted by Michael Olson -hra.health - -// Memset hosting : https://www.memset.com -// Submitted by Tom Whitwell -miniserver.com -memset.net - -// Messerli Informatik AG : https://www.messerli.ch/ -// Submitted by Ruben Schmidmeister -messerli.app - -// Meta Platforms, Inc. : https://meta.com/ -// Submitted by Jacob Cordero -atmeta.com -apps.fbsbx.com - -// MetaCentrum, CESNET z.s.p.o. : https://www.metacentrum.cz/en/ -// Submitted by Zdeněk Šustr -*.cloud.metacentrum.cz -custom.metacentrum.cz - -// MetaCentrum, CESNET z.s.p.o. : https://www.metacentrum.cz/en/ -// Submitted by Radim Janča -flt.cloud.muni.cz -usr.cloud.muni.cz - -// Meteor Development Group : https://www.meteor.com/hosting -// Submitted by Pierre Carrier -meteorapp.com -eu.meteorapp.com - -// Michau Enterprises Limited : http://www.co.pl/ -co.pl - -// Microsoft Corporation : http://microsoft.com -// Submitted by Public Suffix List Admin -// Managed by Corporate Domains -// Microsoft Azure : https://home.azure -*.azurecontainer.io -azure-api.net -azure-mobile.net -azureedge.net -azurefd.net -azurestaticapps.net -1.azurestaticapps.net -2.azurestaticapps.net -3.azurestaticapps.net -4.azurestaticapps.net -5.azurestaticapps.net -6.azurestaticapps.net -7.azurestaticapps.net -centralus.azurestaticapps.net -eastasia.azurestaticapps.net -eastus2.azurestaticapps.net -westeurope.azurestaticapps.net -westus2.azurestaticapps.net -azurewebsites.net -cloudapp.net -trafficmanager.net -blob.core.windows.net -servicebus.windows.net - -// minion.systems : http://minion.systems -// Submitted by Robert Böttinger -csx.cc - -// MobileEducation, LLC : https://joinforte.com -// Submitted by Grayson Martin -forte.id - -// MODX Systems LLC : https://modx.com -// Submitted by Elizabeth Southwell -modx.dev - -// Mozilla Foundation : https://mozilla.org/ -// Submitted by glob -bmoattachments.org - -// MSK-IX : https://www.msk-ix.ru/ -// Submitted by Khannanov Roman -net.ru -org.ru -pp.ru - -// Mythic Beasts : https://www.mythic-beasts.com -// Submitted by Paul Cammish -hostedpi.com -caracal.mythic-beasts.com -customer.mythic-beasts.com -fentiger.mythic-beasts.com -lynx.mythic-beasts.com -ocelot.mythic-beasts.com -oncilla.mythic-beasts.com -onza.mythic-beasts.com -sphinx.mythic-beasts.com -vs.mythic-beasts.com -x.mythic-beasts.com -yali.mythic-beasts.com -cust.retrosnub.co.uk - -// Nabu Casa : https://www.nabucasa.com -// Submitted by Paulus Schoutsen -ui.nabu.casa - -// Net at Work Gmbh : https://www.netatwork.de -// Submitted by Jan Jaeschke -cloud.nospamproxy.com - -// Netfy Domains : https://netfy.domains -// Submitted by Suranga Ranasinghe -netfy.app - -// Netlify : https://www.netlify.com -// Submitted by Jessica Parsons -netlify.app - -// Neustar Inc. -// Submitted by Trung Tran -4u.com - -// NGO.US Registry : https://nic.ngo.us -// Submitted by Alstra Solutions Ltd. Networking Team -ngo.us - -// ngrok : https://ngrok.com/ -// Submitted by Alan Shreve -ngrok.app -ngrok-free.app -ngrok.dev -ngrok-free.dev -ngrok.io -ap.ngrok.io -au.ngrok.io -eu.ngrok.io -in.ngrok.io -jp.ngrok.io -sa.ngrok.io -us.ngrok.io -ngrok.pizza -ngrok.pro - -// Nicolaus Copernicus University in Torun - MSK TORMAN (https://www.man.torun.pl) -torun.pl - -// Nimbus Hosting Ltd. : https://www.nimbushosting.co.uk/ -// Submitted by Nicholas Ford -nh-serv.co.uk -nimsite.uk - -// NFSN, Inc. : https://www.NearlyFreeSpeech.NET/ -// Submitted by Jeff Wheelhouse -nfshost.com - -// NFT.Storage : https://nft.storage/ -// Submitted by Vasco Santos or -ipfs.nftstorage.link - -// Noop : https://noop.app -// Submitted by Nathaniel Schweinberg -*.developer.app -noop.app - -// Northflank Ltd. : https://northflank.com/ -// Submitted by Marco Suter -*.northflank.app -*.build.run -*.code.run -*.database.run -*.migration.run - -// Noticeable : https://noticeable.io -// Submitted by Laurent Pellegrino -noticeable.news - -// Notion Labs, Inc : https://www.notion.so/ -// Submitted by Jess Yao -notion.site - -// Now-DNS : https://now-dns.com -// Submitted by Steve Russell -dnsking.ch -mypi.co -n4t.co -001www.com -ddnslive.com -myiphost.com -forumz.info -16-b.it -32-b.it -64-b.it -soundcast.me -tcp4.me -dnsup.net -hicam.net -now-dns.net -ownip.net -vpndns.net -dynserv.org -now-dns.org -x443.pw -now-dns.top -ntdll.top -freeddns.us -crafting.xyz -zapto.xyz - -// nsupdate.info : https://www.nsupdate.info/ -// Submitted by Thomas Waldmann -nsupdate.info -nerdpol.ovh - -// No-IP.com : https://noip.com/ -// Submitted by Deven Reza -mmafan.biz -myftp.biz -no-ip.biz -no-ip.ca -fantasyleague.cc -gotdns.ch -3utilities.com -blogsyte.com -ciscofreak.com -damnserver.com -ddnsking.com -ditchyourip.com -dnsiskinky.com -dynns.com -geekgalaxy.com -health-carereform.com -homesecuritymac.com -homesecuritypc.com -myactivedirectory.com -mysecuritycamera.com -myvnc.com -net-freaks.com -onthewifi.com -point2this.com -quicksytes.com -securitytactics.com -servebeer.com -servecounterstrike.com -serveexchange.com -serveftp.com -servegame.com -servehalflife.com -servehttp.com -servehumour.com -serveirc.com -servemp3.com -servep2p.com -servepics.com -servequake.com -servesarcasm.com -stufftoread.com -unusualperson.com -workisboring.com -dvrcam.info -ilovecollege.info -no-ip.info -brasilia.me -ddns.me -dnsfor.me -hopto.me -loginto.me -noip.me -webhop.me -bounceme.net -ddns.net -eating-organic.net -mydissent.net -myeffect.net -mymediapc.net -mypsx.net -mysecuritycamera.net -nhlfan.net -no-ip.net -pgafan.net -privatizehealthinsurance.net -redirectme.net -serveblog.net -serveminecraft.net -sytes.net -cable-modem.org -collegefan.org -couchpotatofries.org -hopto.org -mlbfan.org -myftp.org -mysecuritycamera.org -nflfan.org -no-ip.org -read-books.org -ufcfan.org -zapto.org -no-ip.co.uk -golffan.us -noip.us -pointto.us - -// NodeArt : https://nodeart.io -// Submitted by Konstantin Nosov -stage.nodeart.io - -// NYC.mn : http://www.information.nyc.mn -// Submitted by Matthew Brown -nyc.mn - -// O3O.Foundation : https://o3o.foundation/ -// Submitted by the prvcy.page Registry Team -prvcy.page - -// Obl.ong : -// Submitted by Reese Armstrong -obl.ong - -// Observable, Inc. : https://observablehq.com -// Submitted by Mike Bostock -observablehq.cloud -static.observableusercontent.com - -// OMG.LOL : -// Submitted by Adam Newbold -omg.lol - -// Omnibond Systems, LLC. : https://www.omnibond.com -// Submitted by Cole Estep -cloudycluster.net - -// OmniWe Limited: https://omniwe.com -// Submitted by Vicary Archangel -omniwe.site - -// One.com: https://www.one.com/ -// Submitted by Jacob Bunk Nielsen -123webseite.at -123website.be -simplesite.com.br -123website.ch -simplesite.com -123webseite.de -123hjemmeside.dk -123miweb.es -123kotisivu.fi -123siteweb.fr -simplesite.gr -123homepage.it -123website.lu -123website.nl -123hjemmeside.no -service.one -simplesite.pl -123paginaweb.pt -123minsida.se - -// Open Domains : https://open-domains.net -// Submitted by William Harrison -is-cool.dev -is-not-a.dev -localplayer.dev -is-local.org - -// Open Social : https://www.getopensocial.com/ -// Submitted by Alexander Varwijk -opensocial.site - -// OpenCraft GmbH : http://opencraft.com/ -// Submitted by Sven Marnach -opencraft.hosting - -// OpenResearch GmbH: https://openresearch.com/ -// Submitted by Philipp Schmid -orsites.com - -// Opera Software, A.S.A. -// Submitted by Yngve Pettersen -operaunite.com - -// Orange : https://www.orange.com -// Submitted by Alexandre Linte -tech.orange - -// OsSav Technology Ltd. : https://ossav.com/ -// TLD Nic: http://nic.can.re - TLD Whois Server: whois.can.re -// Submitted by OsSav Technology Ltd. -can.re - -// Oursky Limited : https://authgear.com/, https://skygear.io/ -// Submitted by Authgear Team , Skygear Developer -authgear-staging.com -authgearapps.com -skygearapp.com - -// OutSystems -// Submitted by Duarte Santos -outsystemscloud.com - -// OVHcloud: https://ovhcloud.com -// Submitted by Vincent Cassé -*.hosting.ovh.net -*.webpaas.ovh.net - -// OwnProvider GmbH: http://www.ownprovider.com -// Submitted by Jan Moennich -ownprovider.com -own.pm - -// OwO : https://whats-th.is/ -// Submitted by Dean Sheather -*.owo.codes - -// OX : http://www.ox.rs -// Submitted by Adam Grand -ox.rs - -// oy.lc -// Submitted by Charly Coste -oy.lc - -// Pagefog : https://pagefog.com/ -// Submitted by Derek Myers -pgfog.com - -// PageXL : https://pagexl.com -// Submitted by Yann Guichard -pagexl.com - -// Paywhirl, Inc : https://paywhirl.com/ -// Submitted by Daniel Netzer -*.paywhirl.com - -// pcarrier.ca Software Inc: https://pcarrier.ca/ -// Submitted by Pierre Carrier -*.xmit.co -xmit.dev -madethis.site -srv.us -gh.srv.us -gl.srv.us - -// .pl domains (grandfathered) -art.pl -gliwice.pl -krakow.pl -poznan.pl -wroc.pl -zakopane.pl - -// Pantheon Systems, Inc. : https://pantheon.io/ -// Submitted by Gary Dylina -gotpantheon.com -pantheonsite.io - -// Peplink | Pepwave : http://peplink.com/ -// Submitted by Steve Leung -mypep.link - -// Perspecta : https://perspecta.com/ -// Submitted by Kenneth Van Alstyne -perspecta.cloud - -// PE Ulyanov Kirill Sergeevich : https://airy.host -// Submitted by Kirill Ulyanov -lk3.ru - -// Planet-Work : https://www.planet-work.com/ -// Submitted by Frédéric VANNIÈRE -on-web.fr - -// Platform.sh : https://platform.sh -// Submitted by Nikola Kotur -*.upsun.app -upsunapp.com -ent.platform.sh -eu.platform.sh -us.platform.sh -*.platformsh.site -*.tst.site - -// Platter: https://platter.dev -// Submitted by Patrick Flor -platter-app.com -platter-app.dev -platterp.us - -// Pley AB : https://www.pley.com/ -// Submitted by Henning Pohl -pley.games - -// Port53 : https://port53.io/ -// Submitted by Maximilian Schieder -dyn53.io - -// Porter : https://porter.run/ -// Submitted by Rudraksh MK -onporter.run - -// Positive Codes Technology Company : http://co.bn/faq.html -// Submitted by Zulfais -co.bn - -// Postman, Inc : https://postman.com -// Submitted by Rahul Dhawan -postman-echo.com -pstmn.io -mock.pstmn.io -httpbin.org - -// prequalifyme.today : https://prequalifyme.today -// Submitted by DeepakTiwari deepak@ivylead.io -prequalifyme.today - -// prgmr.com : https://prgmr.com/ -// Submitted by Sarah Newman -xen.prgmr.com - -// priv.at : http://www.nic.priv.at/ -// Submitted by registry -priv.at - -// Protocol Labs : https://protocol.ai/ -// Submitted by Michael Burns -*.dweb.link - -// Protonet GmbH : http://protonet.io -// Submitted by Martin Meier -protonet.io - -// Publication Presse Communication SARL : https://ppcom.fr -// Submitted by Yaacov Akiba Slama -chirurgiens-dentistes-en-france.fr -byen.site - -// pubtls.org: https://www.pubtls.org -// Submitted by Kor Nielsen -pubtls.org - -// PythonAnywhere LLP: https://www.pythonanywhere.com -// Submitted by Giles Thomas -pythonanywhere.com -eu.pythonanywhere.com - -// QOTO, Org. -// Submitted by Jeffrey Phillips Freeman -qoto.io - -// Qualifio : https://qualifio.com/ -// Submitted by Xavier De Cock -qualifioapp.com - -// Quality Unit: https://qualityunit.com -// Submitted by Vasyl Tsalko -ladesk.com - -// QuickBackend: https://www.quickbackend.com -// Submitted by Dani Biro -qbuser.com - -// Rad Web Hosting: https://radwebhosting.com -// Submitted by Scott Claeys -cloudsite.builders -myradweb.net -servername.us - -// Raidboxes GmbH : https://raidboxes.de -// Submitted by Auke Tembrink -myrdbx.io -site.rb-hosting.io - -// Redgate Software: https://red-gate.com -// Submitted by Andrew Farries -instances.spawn.cc - -// Russian Academy of Sciences -// Submitted by Tech Support -ras.ru - -// QA2 -// Submitted by Daniel Dent (https://www.danieldent.com/) -qa2.com - -// QCX -// Submitted by Cassandra Beelen -qcx.io -*.sys.qcx.io - -// QNAP System Inc : https://www.qnap.com -// Submitted by Nick Chang -myqnapcloud.cn -alpha-myqnapcloud.com -dev-myqnapcloud.com -mycloudnas.com -mynascloud.com -myqnapcloud.com - -// Quip : https://quip.com -// Submitted by Patrick Linehan -*.quipelements.com - -// Qutheory LLC : http://qutheory.io -// Submitted by Jonas Schwartz -vapor.cloud -vaporcloud.io - -// Rackmaze LLC : https://www.rackmaze.com -// Submitted by Kirill Pertsev -rackmaze.com -rackmaze.net - -// Rancher Labs, Inc : https://rancher.com -// Submitted by Vincent Fiduccia -*.on-rancher.cloud -*.on-k3s.io -*.on-rio.io - -// Read The Docs, Inc : https://www.readthedocs.org -// Submitted by David Fischer -readthedocs.io - -// Red Hat, Inc. OpenShift : https://openshift.redhat.com/ -// Submitted by Tim Kramer -rhcloud.com - -// Render : https://render.com -// Submitted by Anurag Goel -onrender.com -app.render.com - -// Repl.it : https://repl.it -// Submitted by Lincoln Bergeson -replit.app -id.replit.app -firewalledreplit.co -id.firewalledreplit.co -repl.co -id.repl.co -replit.dev -archer.replit.dev -bones.replit.dev -canary.replit.dev -global.replit.dev -hacker.replit.dev -id.replit.dev -janeway.replit.dev -kim.replit.dev -kira.replit.dev -kirk.replit.dev -odo.replit.dev -paris.replit.dev -picard.replit.dev -pike.replit.dev -prerelease.replit.dev -reed.replit.dev -riker.replit.dev -sisko.replit.dev -spock.replit.dev -staging.replit.dev -sulu.replit.dev -tarpit.replit.dev -teams.replit.dev -tucker.replit.dev -wesley.replit.dev -worf.replit.dev -repl.run - -// Resin.io : https://resin.io -// Submitted by Tim Perry -resindevice.io -devices.resinstaging.io - -// RethinkDB : https://www.rethinkdb.com/ -// Submitted by Chris Kastorff -hzc.io - -// Revitalised Limited : http://www.revitalised.co.uk -// Submitted by Jack Price -wellbeingzone.eu -wellbeingzone.co.uk - -// Rico Developments Limited : https://adimo.co -// Submitted by Colin Brown -adimo.co.uk - -// Riseup Networks : https://riseup.net -// Submitted by Micah Anderson -itcouldbewor.se - -// Rochester Institute of Technology : http://www.rit.edu/ -// Submitted by Jennifer Herting -git-pages.rit.edu - -// Rocky Enterprise Software Foundation : https://resf.org -// Submitted by Neil Hanlon -rocky.page - -// Rusnames Limited: http://rusnames.ru/ -// Submitted by Sergey Zotov -биз.рус -ком.рус -крым.рус -мир.рус -мск.рус -орг.рус -самара.рус -сочи.рус -спб.рус -я.рус - -// SAKURA Internet Inc. : https://www.sakura.ad.jp/ -// Submitted by Internet Service Department -180r.com -dojin.com -sakuratan.com -sakuraweb.com -x0.com -2-d.jp -bona.jp -crap.jp -daynight.jp -eek.jp -flop.jp -halfmoon.jp -jeez.jp -matrix.jp -mimoza.jp -ivory.ne.jp -mail-box.ne.jp -mints.ne.jp -mokuren.ne.jp -opal.ne.jp -sakura.ne.jp -sumomo.ne.jp -topaz.ne.jp -netgamers.jp -nyanta.jp -o0o0.jp -rdy.jp -rgr.jp -rulez.jp -s3.isk01.sakurastorage.jp -s3.isk02.sakurastorage.jp -saloon.jp -sblo.jp -skr.jp -tank.jp -uh-oh.jp -undo.jp -rs.webaccel.jp -user.webaccel.jp -websozai.jp -xii.jp -squares.net -jpn.org -kirara.st -x0.to -from.tv -sakura.tv - -// Salesforce.com, Inc. https://salesforce.com/ -// Submitted by Salesforce Public Suffix List Team -*.builder.code.com -*.dev-builder.code.com -*.stg-builder.code.com -*.001.test.code-builder-stg.platform.salesforce.com -*.d.crm.dev -*.w.crm.dev -*.wa.crm.dev -*.wb.crm.dev -*.wc.crm.dev -*.wd.crm.dev -*.we.crm.dev -*.wf.crm.dev - -// Sandstorm Development Group, Inc. : https://sandcats.io/ -// Submitted by Asheesh Laroia -sandcats.io - -// SBE network solutions GmbH : https://www.sbe.de/ -// Submitted by Norman Meilick -logoip.com -logoip.de - -// Scaleway : https://www.scaleway.com/ -// Submitted by Rémy Léone -fr-par-1.baremetal.scw.cloud -fr-par-2.baremetal.scw.cloud -nl-ams-1.baremetal.scw.cloud -cockpit.fr-par.scw.cloud -fnc.fr-par.scw.cloud -functions.fnc.fr-par.scw.cloud -k8s.fr-par.scw.cloud -nodes.k8s.fr-par.scw.cloud -s3.fr-par.scw.cloud -s3-website.fr-par.scw.cloud -whm.fr-par.scw.cloud -priv.instances.scw.cloud -pub.instances.scw.cloud -k8s.scw.cloud -cockpit.nl-ams.scw.cloud -k8s.nl-ams.scw.cloud -nodes.k8s.nl-ams.scw.cloud -s3.nl-ams.scw.cloud -s3-website.nl-ams.scw.cloud -whm.nl-ams.scw.cloud -cockpit.pl-waw.scw.cloud -k8s.pl-waw.scw.cloud -nodes.k8s.pl-waw.scw.cloud -s3.pl-waw.scw.cloud -s3-website.pl-waw.scw.cloud -scalebook.scw.cloud -smartlabeling.scw.cloud -dedibox.fr - -// schokokeks.org GbR : https://schokokeks.org/ -// Submitted by Hanno Böck -schokokeks.net - -// Scottish Government: https://www.gov.scot -// Submitted by Martin Ellis -gov.scot -service.gov.scot - -// Scry Security : http://www.scrysec.com -// Submitted by Shante Adam -scrysec.com - -// Scrypted : https://scrypted.app -// Submitted by Koushik Dutta -client.scrypted.io - -// Securepoint GmbH : https://www.securepoint.de -// Submitted by Erik Anders -firewall-gateway.com -firewall-gateway.de -my-gateway.de -my-router.de -spdns.de -spdns.eu -firewall-gateway.net -my-firewall.org -myfirewall.org -spdns.org - -// Seidat : https://www.seidat.com -// Submitted by Artem Kondratev -seidat.net - -// Sellfy : https://sellfy.com -// Submitted by Yuriy Romadin -sellfy.store - -// Senseering GmbH : https://www.senseering.de -// Submitted by Felix Mönckemeyer -senseering.net - -// Sendmsg: https://www.sendmsg.co.il -// Submitted by Assaf Stern -minisite.ms - -// Servebolt AS: https://servebolt.com -// Submitted by Daniel Kjeserud -servebolt.cloud - -// Service Magnet : https://myservicemagnet.com -// Submitted by Dave Sanders -magnet.page - -// Service Online LLC : http://drs.ua/ -// Submitted by Serhii Bulakh -biz.ua -co.ua -pp.ua - -// Shanghai Accounting Society : https://www.sasf.org.cn -// Submitted by Information Administration -as.sh.cn - -// Sheezy.Art : https://sheezy.art -// Submitted by Nyoom -sheezy.games - -// ShiftEdit : https://shiftedit.net/ -// Submitted by Adam Jimenez -shiftedit.io - -// Shopblocks : http://www.shopblocks.com/ -// Submitted by Alex Bowers -myshopblocks.com - -// Shopify : https://www.shopify.com -// Submitted by Alex Richter -myshopify.com - -// Shopit : https://www.shopitcommerce.com/ -// Submitted by Craig McMahon -shopitsite.com - -// shopware AG : https://shopware.com -// Submitted by Jens Küper -shopware.store - -// Siemens Mobility GmbH -// Submitted by Oliver Graebner -mo-siemens.io - -// SinaAppEngine : http://sae.sina.com.cn/ -// Submitted by SinaAppEngine -1kapp.com -appchizi.com -applinzi.com -sinaapp.com -vipsinaapp.com - -// Siteleaf : https://www.siteleaf.com/ -// Submitted by Skylar Challand -siteleaf.net - -// Skyhat : http://www.skyhat.io -// Submitted by Shante Adam -bounty-full.com -alpha.bounty-full.com -beta.bounty-full.com - -// Smallregistry by Promopixel SARL: https://www.smallregistry.net -// Former AFNIC's SLDs -// Submitted by Jérôme Lipowicz -aeroport.fr -avocat.fr -chambagri.fr -chirurgiens-dentistes.fr -experts-comptables.fr -medecin.fr -notaires.fr -pharmacien.fr -port.fr -veterinaire.fr - -// Small Technology Foundation : https://small-tech.org -// Submitted by Aral Balkan -small-web.org - -// Smoove.io : https://www.smoove.io/ -// Submitted by Dan Kozak -vp4.me - -// Snowflake Inc : https://www.snowflake.com/ -// Submitted by Sam Haar -*.snowflake.app -*.privatelink.snowflake.app -streamlit.app -streamlitapp.com - -// Snowplow Analytics : https://snowplowanalytics.com/ -// Submitted by Ian Streeter -try-snowplow.com - -// SourceHut : https://sourcehut.org -// Submitted by Drew DeVault -srht.site - -// SparrowHost : https://sparrowhost.in/ -// Submitted by Anant Pandey -ind.mom - -// StackBlitz : https://stackblitz.com -// Submitted by Dominic Elm -w-corp-staticblitz.com -w-credentialless-staticblitz.com -w-staticblitz.com - -// Stackhero : https://www.stackhero.io -// Submitted by Adrien Gillon -stackhero-network.com - -// STACKIT : https://www.stackit.de/en/ -// Submitted by STACKIT-DNS Team (Simon Stier) -runs.onstackit.cloud -stackit.gg -stackit.rocks -stackit.run -stackit.zone - -// Staclar : https://staclar.com -// Submitted by Q Misell -// Submitted by Matthias Merkel -musician.io -novecore.site - -// staticland : https://static.land -// Submitted by Seth Vincent -static.land -dev.static.land -sites.static.land - -// Storebase : https://www.storebase.io -// Submitted by Tony Schirmer -storebase.store - -// Strapi : https://strapi.io/ -// Submitted by Florent Baldino -strapiapp.com -media.strapiapp.com - -// Strategic System Consulting (eApps Hosting): https://www.eapps.com/ -// Submitted by Alex Oancea -vps-host.net -atl.jelastic.vps-host.net -njs.jelastic.vps-host.net -ric.jelastic.vps-host.net - -// Sony Interactive Entertainment LLC : https://sie.com/ -// Submitted by David Coles -playstation-cloud.com - -// SourceLair PC : https://www.sourcelair.com -// Submitted by Antonis Kalipetis -apps.lair.io -*.stolos.io - -// SpaceKit : https://www.spacekit.io/ -// Submitted by Reza Akhavan -spacekit.io - -// SpeedPartner GmbH: https://www.speedpartner.de/ -// Submitted by Stefan Neufeind -customer.speedpartner.de - -// Spreadshop (sprd.net AG) : https://www.spreadshop.com/ -// Submitted by Martin Breest -myspreadshop.at -myspreadshop.com.au -myspreadshop.be -myspreadshop.ca -myspreadshop.ch -myspreadshop.com -myspreadshop.de -myspreadshop.dk -myspreadshop.es -myspreadshop.fi -myspreadshop.fr -myspreadshop.ie -myspreadshop.it -myspreadshop.net -myspreadshop.nl -myspreadshop.no -myspreadshop.pl -myspreadshop.se -myspreadshop.co.uk - -// Standard Library : https://stdlib.com -// Submitted by Jacob Lee -api.stdlib.com - -// stereosense GmbH : https://www.involve.me -// Submitted by Florian Burmann -feedback.ac -forms.ac -assessments.cx -calculators.cx -funnels.cx -paynow.cx -quizzes.cx -researched.cx -tests.cx -surveys.so - -// Storipress : https://storipress.com -// Submitted by Benno Liu -storipress.app - -// Storj Labs Inc. : https://storj.io/ -// Submitted by Philip Hutchins -storj.farm - -// Streak : https://streak.com -// Submitted by Blake Kadatz -streak-link.com -streaklinks.com -streakusercontent.com - -// Studenten Net Twente : http://www.snt.utwente.nl/ -// Submitted by Silke Hofstra -utwente.io - -// Student-Run Computing Facility : https://www.srcf.net/ -// Submitted by Edwin Balani -soc.srcf.net -user.srcf.net - -// Sub 6 Limited: http://www.sub6.com -// Submitted by Dan Miller -temp-dns.com - -// Supabase : https://supabase.io -// Submitted by Inian Parameshwaran -supabase.co -supabase.in -supabase.net - -// Symfony, SAS : https://symfony.com/ -// Submitted by Fabien Potencier -*.sensiosite.cloud -*.s5y.io - -// Syncloud : https://syncloud.org -// Submitted by Boris Rybalkin -syncloud.it - -// Synology, Inc. : https://www.synology.com/ -// Submitted by Rony Weng -dscloud.biz -direct.quickconnect.cn -dsmynas.com -familyds.com -diskstation.me -dscloud.me -i234.me -myds.me -synology.me -dscloud.mobi -dsmynas.net -familyds.net -dsmynas.org -familyds.org -direct.quickconnect.to -vpnplus.to - -// Tabit Technologies Ltd. : https://tabit.cloud/ -// Submitted by Oren Agiv -mytabit.com -mytabit.co.il -tabitorder.co.il - -// TAIFUN Software AG : http://taifun-software.de -// Submitted by Bjoern Henke -taifun-dns.de - -// Tailscale Inc. : https://www.tailscale.com -// Submitted by David Anderson -beta.tailscale.net -ts.net -*.c.ts.net - -// TASK geographical domains (https://www.task.gda.pl/uslugi/dns) -gda.pl -gdansk.pl -gdynia.pl -med.pl -sopot.pl - -// tawk.to, Inc : https://www.tawk.to -// Submitted by tawk.to developer team -p.tawk.email -p.tawkto.email - -// team.blue https://team.blue -// Submitted by Cedric Dubois -site.tb-hosting.com - -// Teckids e.V. : https://www.teckids.org -// Submitted by Dominik George -edugit.io -s3.teckids.org - -// Telebit : https://telebit.cloud -// Submitted by AJ ONeal -telebit.app -telebit.io -*.telebit.xyz - -// Thingdust AG : https://thingdust.com/ -// Submitted by Adrian Imboden -*.firenet.ch -*.svc.firenet.ch -reservd.com -thingdustdata.com -cust.dev.thingdust.io -reservd.dev.thingdust.io -cust.disrec.thingdust.io -reservd.disrec.thingdust.io -cust.prod.thingdust.io -cust.testing.thingdust.io -reservd.testing.thingdust.io - -// ticket i/O GmbH : https://ticket.io -// Submitted by Christian Franke -tickets.io - -// Tlon.io : https://tlon.io -// Submitted by Mark Staarink -arvo.network -azimuth.network -tlon.network - -// Tor Project, Inc. : https://torproject.org -// Submitted by Antoine Beaupré -torproject.net -pages.torproject.net - -// TownNews.com : http://www.townnews.com -// Submitted by Dustin Ward -bloxcms.com -townnews-staging.com - -// TrafficPlex GmbH : https://www.trafficplex.de/ -// Submitted by Phillipp Röll -12hp.at -2ix.at -4lima.at -lima-city.at -12hp.ch -2ix.ch -4lima.ch -lima-city.ch -trafficplex.cloud -de.cool -12hp.de -2ix.de -4lima.de -lima-city.de -1337.pictures -clan.rip -lima-city.rocks -webspace.rocks -lima.zone - -// TransIP : https://www.transip.nl -// Submitted by Rory Breuk -*.transurl.be -*.transurl.eu -*.transurl.nl - -// TransIP: https://www.transip.nl -// Submitted by Cedric Dubois -site.transip.me - -// TuxFamily : http://tuxfamily.org -// Submitted by TuxFamily administrators -tuxfamily.org - -// TwoDNS : https://www.twodns.de/ -// Submitted by TwoDNS-Support -dd-dns.de -dray-dns.de -draydns.de -dyn-vpn.de -dynvpn.de -mein-vigor.de -my-vigor.de -my-wan.de -syno-ds.de -synology-diskstation.de -synology-ds.de -diskstation.eu -diskstation.org - -// Typedream : https://typedream.com -// Submitted by Putri Karunia -typedream.app - -// Typeform : https://www.typeform.com -// Submitted by Sergi Ferriz -pro.typeform.com - -// Uberspace : https://uberspace.de -// Submitted by Moritz Werner -*.uberspace.de -uber.space - -// UDR Limited : http://www.udr.hk.com -// Submitted by registry -hk.com -inc.hk -ltd.hk -hk.org - -// UK Intis Telecom LTD : https://it.com -// Submitted by ITComdomains -it.com - -// Unison Computing, PBC : https://unison.cloud -// Submitted by Simon Højberg -unison-services.cloud - -// UNIVERSAL DOMAIN REGISTRY : https://www.udr.org.yt/ -// see also: whois -h whois.udr.org.yt help -// Submitted by Atanunu Igbunuroghene -name.pm -sch.tf -biz.wf -sch.wf -org.yt - -// United Gameserver GmbH : https://united-gameserver.de -// Submitted by Stefan Schwarz -virtual-user.de -virtualuser.de - -// Upli : https://upli.io -// Submitted by Lenny Bakkalian -upli.io - -// urown.net : https://urown.net -// Submitted by Hostmaster -urown.cloud -dnsupdate.info - -// .US -// Submitted by Ed Moore -lib.de.us - -// Val Town, Inc : https://val.town/ -// Submitted by Tom MacWright -express.val.run -web.val.run - -// VeryPositive SIA : http://very.lv -// Submitted by Danko Aleksejevs -2038.io - -// Vercel, Inc : https://vercel.com/ -// Submitted by Connor Davis -vercel.app -vercel.dev -now.sh - -// Viprinet Europe GmbH : http://www.viprinet.com -// Submitted by Simon Kissel -router.management - -// Virtual-Info : https://www.virtual-info.info/ -// Submitted by Adnan RIHAN -v-info.info - -// Voorloper.com: https://voorloper.com -// Submitted by Nathan van Bakel -voorloper.cloud - -// V.UA Domain Administrator : https://domain.v.ua/ -// Submitted by Serhii Rostilo -v.ua - -// Vultr Objects : https://www.vultr.com/products/object-storage/ -// Submitted by Niels Maumenee -*.vultrobjects.com - -// Waffle Computer Inc., Ltd. : https://docs.waffleinfo.com -// Submitted by Masayuki Note -wafflecell.com - -// Webflow, Inc. : https://www.webflow.com -// Submitted by Webflow Security Team -webflow.io -webflowtest.io - -// WebHare bv: https://www.webhare.com/ -// Submitted by Arnold Hendriks -*.webhare.dev - -// WebHotelier Technologies Ltd: https://www.webhotelier.net/ -// Submitted by Apostolos Tsakpinis -bookonline.app -hotelwithflight.com -reserve-online.com -reserve-online.net - -// WebPros International, LLC : https://webpros.com/ -// Submitted by Nicolas Rochelemagne -cprapid.com -pleskns.com -wp2.host -pdns.page -plesk.page -wpsquared.site - -// WebWaddle Ltd: https://webwaddle.com/ -// Submitted by Merlin Glander -*.wadl.top - -// WeDeploy by Liferay, Inc. : https://www.wedeploy.com -// Submitted by Henrique Vicente -wedeploy.io -wedeploy.me -wedeploy.sh - -// Western Digital Technologies, Inc : https://www.wdc.com -// Submitted by Jung Jin -remotewd.com - -// Whatbox Inc. : https://whatbox.ca/ -// Submitted by Anthony Ryan -box.ca - -// WIARD Enterprises : https://wiardweb.com -// Submitted by Kidd Hustle -pages.wiardweb.com - -// Wikimedia Labs : https://wikitech.wikimedia.org -// Submitted by Arturo Borrero Gonzalez -toolforge.org -wmcloud.org -wmflabs.org - -// WISP : https://wisp.gg -// Submitted by Stepan Fedotov -panel.gg -daemon.panel.gg - -// Wix.com, Inc. : https://www.wix.com -// Submitted by Shahar Talmi / Alon Kochba -wixsite.com -wixstudio.com -editorx.io -wixstudio.io -wix.run - -// Wizard Zines : https://wizardzines.com -// Submitted by Julia Evans -messwithdns.com - -// WoltLab GmbH : https://www.woltlab.com -// Submitted by Tim Düsterhus -woltlab-demo.com -myforum.community -community-pro.de -diskussionsbereich.de -community-pro.net -meinforum.net - -// Woods Valldata : https://www.woodsvalldata.co.uk/ -// Submitted by Chris Whittle -affinitylottery.org.uk -raffleentry.org.uk -weeklylottery.org.uk - -// WP Engine : https://wpengine.com/ -// Submitted by Michael Smith -// Submitted by Brandon DuRette -wpenginepowered.com -js.wpenginepowered.com - -// XenonCloud GbR: https://xenoncloud.net -// Submitted by Julian Uphoff -half.host - -// XnBay Technology : http://www.xnbay.com/ -// Submitted by XnBay Developer -xnbay.com -u2.xnbay.com -u2-local.xnbay.com - -// XS4ALL Internet bv : https://www.xs4all.nl/ -// Submitted by Daniel Mostertman -cistron.nl -demon.nl -xs4all.space - -// Yandex.Cloud LLC: https://cloud.yandex.com -// Submitted by Alexander Lodin -yandexcloud.net -storage.yandexcloud.net -website.yandexcloud.net - -// YesCourse Pty Ltd : https://yescourse.com -// Submitted by Atul Bhouraskar -official.academy - -// Yola : https://www.yola.com/ -// Submitted by Stefano Rivera -yolasite.com - -// Yombo : https://yombo.net -// Submitted by Mitch Schwenk -ybo.faith -yombo.me -homelink.one -ybo.party -ybo.review -ybo.science -ybo.trade - -// Yunohost : https://yunohost.org -// Submitted by Valentin Grimaud -ynh.fr -nohost.me -noho.st - -// ZaNiC : http://www.za.net/ -// Submitted by registry -za.net -za.org - -// ZAP-Hosting GmbH & Co. KG : https://zap-hosting.com -// Submitted by Julian Alker -zap.cloud - -// Zeabur : https://zeabur.com/ -// Submitted by Zeabur Team -zeabur.app - -// Zine EOOD : https://zine.bg/ -// Submitted by Martin Angelov -bss.design - -// Zitcom A/S : https://www.zitcom.dk -// Submitted by Emil Stahl -basicserver.io -virtualserver.io -enterprisecloud.nu - -// ===END PRIVATE DOMAINS=== diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/urlhaus-filter/LICENSE.md b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/urlhaus-filter/LICENSE.md deleted file mode 100644 index b81428e..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/urlhaus-filter/LICENSE.md +++ /dev/null @@ -1,42 +0,0 @@ -CC0 1.0 Universal -================== - -Statement of Purpose ---------------------- - -The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. - -For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. - -1. Copyright and Related Rights. --------------------------------- -A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: - -i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; -ii. moral rights retained by the original author(s) and/or performer(s); -iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; -iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; -v. rights protecting the extraction, dissemination, use and reuse of data in a Work; -vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and -vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. - -2. Waiver. ------------ -To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. ----------------------------- -Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. - -4. Limitations and Disclaimers. --------------------------------- - -a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. -b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. -c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. -d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. - -For more information, please see -https://creativecommons.org/publicdomain/zero/1.0/ \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt deleted file mode 100644 index 6768e8f..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt +++ /dev/null @@ -1,4506 +0,0 @@ -! Title: Online Malicious URL Blocklist -! Updated: 2024-07-29T00:09:53Z -! Expires: 1 day (update frequency) -! Homepage: https://gitlab.com/malware-filter/urlhaus-filter -! License: https://gitlab.com/malware-filter/urlhaus-filter#license -! Source: https://urlhaus.abuse.ch/api/ -1.117.27.115 -1.15.245.245 -1.179.62.255 -1.214.192.147 -1.55.243.196 -1.64.200.102 -1.87.211.221 -1.92.89.193 -1.bdl99down.kukulaa.cn -100.16.168.239 -101.101.160.56 -101.161.231.223 -101.35.228.105 -101.42.158.190 -101.42.4.160 -101.51.121.206 -101.58.214.125 -101.59.0.126 -102.0.4.86 -102.165.122.114 -102.216.105.81 -102.216.69.112 -102.218.172.134 -102.223.106.188 -102.23.88.134 -102.36.229.155 -102.39.242.53 -102.53.15.17 -102.53.15.18 -102.53.15.54 -102.68.74.45 -102.68.74.69 -103.1.157.126 -103.101.81.142 -103.118.45.13 -103.134.214.139 -103.137.36.6 -103.138.137.176 -103.14.48.254 -103.143.195.161 -103.146.202.41 -103.146.233.159 -103.149.87.69 -103.159.72.227 -103.16.75.50 -103.162.20.69 -103.162.59.218 -103.173.173.98 -103.183.113.17 -103.190.16.179 -103.195.141.241 -103.195.237.43 -103.198.26.104 -103.199.144.62 -103.199.144.65 -103.209.184.118 -103.209.184.121 -103.212.237.34 -103.226.1.18 -103.227.118.33 -103.230.153.181 -103.235.66.238 -103.237.174.27 -103.237.174.30 -103.237.86.247 -103.238.235.163 -103.244.120.222 -103.245.10.51 -103.253.154.142 -103.30.85.58 -103.35.99.88 -103.36.11.31 -103.42.198.103 -103.42.198.106 -103.42.198.20 -103.42.201.36 -103.42.55.251 -103.6.5.3 -103.62.233.206 -103.69.219.250 -103.69.88.185 -103.69.88.70 -103.69.89.229 -103.7.27.90 -103.70.125.146 -103.70.204.50 -103.71.46.122 -103.75.33.34 -103.78.215.82 -103.79.114.27 -103.82.211.164 -103.90.207.234 -103.90.207.58 -103.93.177.61 -103.96.128.3 -103.99.9.138 -104.129.31.245 -104.168.45.34 -104.192.201.206 -104.218.236.179 -104.219.239.104 -104.223.22.86 -104.223.90.5 -106.14.143.152 -106.15.239.51 -106.246.224.219 -106.254.250.98 -106.52.247.30 -107.145.144.57 -107.172.234.198 -107.172.4.179 -107.172.76.154 -107.173.4.12 -108.162.187.11 -108.167.178.107 -108.174.58.28 -109.107.78.7 -109.108.84.121 -109.111.182.149 -109.158.46.249 -109.171.80.104 -109.173.236.128 -109.190.171.149 -109.199.101.109 -109.225.84.48 -109.235.189.104 -109.245.220.229 -109.248.151.196 -109.251.89.47 -109.69.79.44 -109.69.8.230 -109.73.242.146 -109.74.12.246 -109.86.151.10 -109.87.223.241 -109.92.143.90 -109.92.181.49 -109.92.28.89 -109.93.92.142 -110.143.54.213 -110.172.170.111 -110.182.60.240 -110.34.7.5 -110.42.248.7 -110.90.122.245 -111.185.127.181 -111.220.60.175 -111.231.145.137 -111.38.106.19 -111.61.103.93 -111.61.93.17 -111.70.25.62 -112.120.173.185 -112.229.207.169 -112.232.217.248 -112.232.76.57 -112.237.109.70 -112.239.101.253 -112.239.101.51 -112.239.123.24 -112.242.230.250 -112.242.246.194 -112.242.59.23 -112.246.98.196 -112.248.102.92 -112.248.103.213 -112.248.106.195 -112.248.110.158 -112.248.114.226 -112.248.125.198 -112.248.126.114 -112.248.126.90 -112.248.142.20 -112.248.163.18 -112.248.185.245 -112.248.189.56 -112.248.190.140 -112.248.61.130 -112.248.62.166 -112.248.83.173 -112.27.189.32 -112.31.67.95 -112.4.110.22 -112.53.154.170 -112.74.185.5 -112.93.203.105 -113.106.167.11 -113.160.129.229 -113.160.185.79 -113.160.249.9 -113.160.251.236 -113.218.202.6 -113.225.106.133 -113.228.104.118 -113.228.152.232 -113.228.246.24 -113.229.104.204 -113.229.2.102 -113.230.126.207 -113.230.244.126 -113.230.30.162 -113.230.31.149 -113.231.231.220 -113.231.232.83 -113.231.234.15 -113.231.86.43 -113.232.250.101 -113.236.101.175 -113.236.104.32 -113.236.157.47 -113.236.159.197 -113.236.251.164 -113.238.174.26 -113.238.2.67 -113.238.202.151 -113.238.230.227 -113.238.70.167 -113.238.76.97 -113.239.110.145 -113.239.127.114 -113.239.237.230 -113.239.243.38 -113.239.81.85 -113.24.165.7 -113.254.192.161 -114.115.141.157 -114.219.142.81 -114.227.58.20 -114.31.28.42 -114.7.20.38 -115.149.165.248 -115.165.209.73 -115.245.112.26 -115.28.26.10 -115.42.121.22 -115.42.122.1 -115.48.131.250 -115.48.141.75 -115.48.146.172 -115.48.148.137 -115.48.150.218 -115.48.150.64 -115.48.151.0 -115.48.154.224 -115.48.217.125 -115.49.208.184 -115.50.178.51 -115.50.183.102 -115.50.209.193 -115.50.4.211 -115.50.71.204 -115.50.92.222 -115.50.94.227 -115.52.0.42 -115.52.150.208 -115.52.2.122 -115.52.246.41 -115.52.4.113 -115.52.4.87 -115.54.239.161 -115.55.140.28 -115.55.196.245 -115.55.20.226 -115.55.207.189 -115.55.226.185 -115.55.229.55 -115.55.237.87 -115.55.240.138 -115.55.243.78 -115.55.245.137 -115.55.248.52 -115.55.54.127 -115.55.78.139 -115.55.9.118 -115.56.110.67 -115.56.150.172 -115.56.150.177 -115.57.69.16 -115.58.132.3 -115.58.155.28 -115.58.83.130 -115.58.9.161 -115.61.116.104 -115.61.116.65 -115.61.119.40 -115.61.12.65 -115.61.19.68 -115.62.114.233 -115.63.41.218 -115.94.9.181 -115.96.118.55 -116.138.204.77 -116.138.26.4 -116.139.177.255 -116.139.178.151 -116.140.175.111 -116.203.8.165 -116.58.21.218 -116.58.39.59 -116.58.51.90 -116.58.62.74 -116.58.78.122 -116.58.83.76 -116.68.162.186 -117.120.28.114 -117.194.215.194 -117.195.238.183 -117.195.238.196 -117.195.253.23 -117.196.165.185 -117.196.165.192 -117.198.14.97 -117.198.27.98 -117.199.74.21 -117.199.74.57 -117.201.3.155 -117.201.7.72 -117.202.0.15 -117.202.0.54 -117.202.73.21 -117.203.116.51 -117.206.129.191 -117.206.135.106 -117.206.182.26 -117.206.183.62 -117.206.68.138 -117.207.119.227 -117.207.64.227 -117.207.73.52 -117.208.215.139 -117.208.251.182 -117.208.91.123 -117.208.98.13 -117.209.36.68 -117.209.45.42 -117.210.180.157 -117.210.223.116 -117.211.208.110 -117.211.208.59 -117.211.210.36 -117.211.211.241 -117.211.213.58 -117.211.43.170 -117.211.45.71 -117.212.102.232 -117.213.84.194 -117.215.208.87 -117.215.209.185 -117.216.139.132 -117.216.139.218 -117.216.148.71 -117.216.155.33 -117.216.20.86 -117.216.3.1 -117.217.134.210 -117.217.37.93 -117.219.81.123 -117.219.88.43 -117.220.150.12 -117.220.151.103 -117.222.114.169 -117.222.126.202 -117.222.197.228 -117.222.206.221 -117.222.254.202 -117.223.0.123 -117.223.3.194 -117.223.3.9 -117.223.5.121 -117.223.5.186 -117.223.5.220 -117.223.6.245 -117.235.134.79 -117.235.151.117 -117.235.159.49 -117.241.51.184 -117.241.51.205 -117.241.74.26 -117.242.232.3 -117.242.233.237 -117.242.233.28 -117.242.76.255 -117.243.114.128 -117.245.34.229 -117.245.35.126 -117.245.35.23 -117.245.39.118 -117.245.42.195 -117.245.44.224 -117.245.45.235 -117.248.161.11 -117.248.161.138 -117.248.161.156 -117.248.161.235 -117.248.161.237 -117.248.163.106 -117.248.163.21 -117.248.164.124 -117.248.166.6 -117.248.167.155 -117.248.167.20 -117.248.167.238 -117.248.168.14 -117.248.168.39 -117.248.169.15 -117.248.169.192 -117.248.169.221 -117.248.171.167 -117.248.171.32 -117.248.172.192 -117.248.172.25 -117.248.173.249 -117.248.174.0 -117.248.174.33 -117.248.175.74 -117.248.30.121 -117.251.170.118 -117.252.127.20 -117.252.37.70 -117.253.163.197 -117.253.218.14 -117.253.220.213 -117.253.221.245 -117.253.221.9 -117.253.222.71 -117.254.101.120 -117.254.103.245 -117.254.96.198 -117.254.97.39 -117.255.102.253 -117.255.104.0 -117.255.27.119 -117.26.72.120 -117.28.27.75 -117.44.242.206 -117.50.184.22 -117.50.194.20 -117.50.52.240 -117.50.95.62 -117.63.114.182 -117.84.253.156 -117.86.150.26 -118.127.105.182 -118.127.112.49 -118.178.133.241 -118.179.121.235 -118.179.41.46 -118.189.125.90 -118.201.148.50 -118.201.148.53 -118.232.241.143 -118.233.242.3 -118.240.211.157 -118.26.174.163 -118.69.157.212 -118.70.242.100 -118.71.250.6 -118.81.19.219 -118.91.54.34 -118.98.123.178 -119.109.151.19 -119.109.188.137 -119.114.162.146 -119.115.117.66 -119.115.176.60 -119.115.50.137 -119.116.131.115 -119.116.160.97 -119.117.168.77 -119.117.242.31 -119.13.179.133 -119.13.179.180 -119.13.179.183 -119.13.179.184 -119.13.179.185 -119.13.179.186 -119.13.179.187 -119.13.179.189 -119.13.179.191 -119.13.179.222 -119.13.179.227 -119.13.179.75 -119.13.179.78 -119.13.179.84 -119.13.179.92 -119.15.236.104 -119.15.254.44 -119.15.92.78 -119.167.60.236 -119.179.238.253 -119.179.239.208 -119.179.255.21 -119.18.148.102 -119.180.72.142 -119.183.25.190 -119.183.42.248 -119.185.143.102 -119.186.205.34 -119.187.239.62 -119.189.205.136 -119.252.167.174 -119.32.29.121 -119.40.84.254 -119.40.91.22 -119.45.173.126 -119.45.219.31 -119.91.25.19 -12.148.208.86 -12.196.184.34 -120.211.104.203 -120.211.137.177 -120.211.201.252 -120.211.41.13 -120.211.69.13 -120.211.69.67 -120.211.70.84 -120.43.54.22 -120.46.35.129 -120.50.10.30 -120.57.221.116 -120.61.15.234 -120.61.18.222 -120.61.195.87 -120.61.92.178 -121.101.130.14 -121.101.130.152 -121.101.191.106 -121.101.191.150 -121.101.248.101 -121.167.2.59 -121.186.242.113 -121.200.63.162 -121.200.63.165 -121.224.137.203 -121.238.206.100 -121.52.72.135 -121.61.248.112 -121.61.248.123 -122.157.183.74 -122.170.110.131 -122.179.136.112 -122.201.25.95 -122.3.195.178 -122.51.16.51 -122.51.240.34 -123.10.139.112 -123.10.225.193 -123.10.54.166 -123.11.1.161 -123.11.76.41 -123.110.124.238 -123.110.57.185 -123.12.225.149 -123.129.128.198 -123.129.128.199 -123.129.133.185 -123.129.135.158 -123.129.155.97 -123.129.63.216 -123.13.146.173 -123.130.205.148 -123.132.162.190 -123.132.164.216 -123.133.204.9 -123.14.112.17 -123.14.117.23 -123.14.181.113 -123.14.255.12 -123.14.43.29 -123.14.79.193 -123.14.98.84 -123.143.141.75 -123.173.69.226 -123.188.0.176 -123.188.89.36 -123.189.148.125 -123.19.126.13 -123.190.133.252 -123.190.19.133 -123.190.23.151 -123.190.23.224 -123.190.25.54 -123.190.89.243 -123.193.21.48 -123.200.171.184 -123.253.12.111 -123.4.130.188 -123.4.172.12 -123.4.70.50 -123.4.71.150 -123.5.150.196 -123.7.222.57 -123.8.82.90 -123.9.198.68 -123.9.80.158 -124.105.81.130 -124.131.146.27 -124.131.159.62 -124.131.94.223 -124.133.221.24 -124.153.20.102 -124.153.22.49 -124.19.77.89 -124.19.79.176 -124.19.92.48 -124.194.46.204 -124.234.203.193 -124.235.130.245 -124.29.249.182 -124.41.225.49 -124.44.107.132 -124.67.254.109 -124.71.73.181 -124.94.102.115 -124.94.231.159 -124.94.231.215 -125.168.166.40 -125.186.91.61 -125.20.254.34 -125.209.71.6 -125.41.137.219 -125.41.77.114 -125.41.79.102 -125.43.39.11 -125.43.73.61 -125.43.93.204 -125.44.17.123 -125.44.192.94 -125.44.220.16 -125.44.39.45 -125.44.41.94 -125.45.48.32 -125.45.56.117 -125.45.63.223 -125.46.226.150 -125.47.226.137 -126.23.203.236 -129.144.180.26 -129.151.210.233 -129.204.230.225 -130.185.193.208 -132.255.192.122 -134.249.186.66 -136.169.119.33 -138.122.43.76 -138.124.184.210 -138.186.156.210 -138.19.251.214 -138.207.174.248 -138.36.239.20 -139.155.1.167 -139.159.155.204 -139.255.17.234 -139.255.32.242 -139.5.152.14 -139.60.191.170 -139520.aioc.qbgxl.com -14.142.209.198 -14.224.174.212 -14.230.63.61 -14.237.38.7 -14.37.140.32 -14.48.149.164 -14.56.250.173 -141.105.87.18 -141.134.214.217 -144.48.169.8 -144.48.170.111 -144.6.87.144 -146.120.241.207 -146.196.120.194 -146.196.120.91 -146.196.97.231 -146.66.164.51 -147.45.44.2 -147.45.47.81 -147.91.249.85 -148.0.90.213 -148.135.35.177 -149.62.200.106 -14stirling.dyndns.org -150.107.205.29 -150.129.202.193 -150.129.202.197 -151.177.251.42 -151.236.247.230 -151.237.4.20 -151.248.56.14 -152.160.191.205 -154.0.129.114 -154.0.129.134 -154.117.133.58 -154.126.178.16 -154.126.186.56 -154.197.69.155 -154.23.240.102 -154.64.60.149 -154.66.125.202 -154.84.212.18 -154.9.249.164 -154.9.26.224 -156.238.253.55 -156.248.77.205 -156.248.77.218 -156.248.77.230 -158.140.133.56 -158.255.82.235 -158.255.82.66 -158.255.83.148 -158.255.83.169 -158.255.83.76 -158.51.126.172 -158.51.126.96 -159.196.71.244 -159.224.143.43 -159.253.120.117 -160.238.95.229 -161.43.205.67 -162.191.190.249 -162.219.216.183 -162.248.46.120 -163.142.84.48 -163.142.95.253 -163.24.228.112 -163.24.228.125 -163.24.228.133 -163.24.228.146 -163.24.228.159 -163.24.228.172 -163.24.228.190 -163.24.228.216 -163.24.228.229 -163.24.228.242 -163.24.228.29 -163.24.228.47 -163.24.228.60 -163.24.228.73 -163.24.228.8 -163.24.228.86 -163.24.228.99 -163.24.230.104 -163.24.230.120 -163.24.230.132 -163.24.230.152 -163.24.230.168 -163.24.230.184 -163.24.230.24 -163.24.230.4 -163.24.230.40 -163.24.230.56 -163.24.230.84 -163.53.205.56 -164.126.129.225 -164.215.113.22 -165.132.228.67 -165.73.108.6 -166.144.131.188 -166.88.141.219 -167.250.49.155 -168.228.6.22 -168.76.20.194 -168.76.20.195 -168.76.20.196 -168.76.20.197 -168.76.20.198 -168.76.20.203 -168.76.20.204 -168.76.20.205 -168.76.20.206 -168.76.20.210 -168.76.20.211 -168.76.20.212 -168.76.20.213 -168.76.20.214 -170.210.81.101 -170.210.81.104 -171.235.192.32 -171.247.215.25 -171.249.153.68 -171.250.142.99 -1717.1000uc.com -172-105-66-118.ip.linodeusercontent.com -172.105.66.118 -172.115.81.23 -173.215.77.169 -173.235.65.44 -174.63.112.21 -174.71.237.86 -174.71.238.93 -174.71.253.35 -174.78.254.83 -175.146.159.150 -175.146.159.170 -175.146.225.158 -175.146.225.93 -175.147.195.249 -175.147.199.179 -175.147.202.93 -175.147.208.22 -175.147.212.197 -175.148.200.60 -175.148.48.157 -175.148.86.170 -175.149.111.150 -175.149.123.66 -175.149.177.224 -175.149.97.30 -175.150.218.148 -175.150.247.233 -175.151.105.26 -175.151.155.78 -175.151.237.105 -175.151.238.119 -175.151.252.35 -175.151.85.149 -175.151.86.230 -175.165.106.52 -175.165.46.43 -175.165.64.73 -175.167.182.103 -175.167.31.69 -175.173.129.13 -175.173.190.98 -175.173.59.204 -175.174.43.160 -175.175.192.205 -175.175.206.209 -175.175.230.159 -175.175.45.16 -175.31.203.86 -176.100.241.12 -176.111.174.109 -176.12.6.42 -176.122.255.155 -176.123.5.92 -176.192.78.254 -176.193.144.159 -176.195.130.210 -176.195.191.123 -176.37.170.214 -176.62.179.34 -176.65.35.214 -176.74.100.156 -176.74.100.220 -176.74.100.244 -176.74.100.69 -176.74.101.10 -176.74.101.30 -176.74.105.30 -176.74.105.51 -176.74.105.69 -176.74.106.128 -176.74.106.146 -176.74.106.15 -176.74.106.235 -176.74.106.241 -176.74.106.245 -176.74.106.70 -176.74.107.102 -176.74.107.108 -176.74.107.111 -176.74.107.125 -176.74.107.152 -176.74.107.201 -176.74.107.210 -176.74.107.212 -176.74.107.26 -176.74.107.44 -176.74.107.85 -176.74.108.129 -176.74.109.114 -176.74.109.123 -176.74.109.183 -176.74.109.211 -176.74.109.215 -176.74.109.222 -176.74.109.249 -176.74.114.183 -176.74.114.235 -176.74.114.253 -176.74.114.74 -176.74.118.166 -176.74.118.199 -176.74.118.204 -176.74.118.222 -176.74.118.236 -176.74.118.6 -176.74.118.8 -176.74.120.152 -176.74.120.71 -176.74.120.80 -176.74.120.86 -176.74.120.94 -176.74.66.108 -176.74.66.187 -176.74.66.200 -176.74.66.211 -176.74.66.61 -176.74.69.1 -176.74.69.111 -176.74.69.117 -176.74.69.135 -176.74.69.185 -176.74.69.84 -176.74.71.11 -176.74.71.117 -176.74.71.119 -176.74.71.139 -176.74.71.184 -176.74.71.185 -176.74.71.209 -176.74.71.24 -176.74.71.47 -176.74.71.53 -176.74.71.68 -176.74.71.79 -176.74.71.89 -176.74.71.90 -176.74.75.121 -176.74.75.129 -176.74.75.178 -176.74.75.87 -176.74.76.20 -176.74.76.205 -176.74.76.228 -176.74.76.238 -176.74.76.72 -176.74.79.231 -176.74.81.179 -176.74.81.44 -176.74.82.17 -176.74.83.136 -176.74.83.61 -176.74.83.92 -176.74.85.199 -176.74.85.250 -176.74.85.53 -176.74.86.15 -176.74.86.29 -176.74.88.110 -176.74.88.112 -176.74.88.161 -176.74.88.243 -176.74.88.25 -176.74.90.141 -176.74.90.196 -176.74.93.153 -176.74.93.45 -176.74.93.98 -176.74.94.233 -176.98.13.44 -176.98.26.35 -176.98.86.53 -177.101.246.138 -177.129.147.4 -177.155.215.85 -177.21.19.32 -177.220.212.65 -177.242.106.138 -177.66.105.167 -177.71.61.129 -177.8.227.138 -177.84.237.26 -178.131.101.80 -178.131.74.80 -178.131.81.7 -178.131.84.65 -178.131.95.168 -178.134.42.162 -178.150.209.205 -178.151.143.2 -178.165.112.168 -178.165.79.24 -178.169.136.50 -178.170.251.9 -178.173.39.201 -178.176.204.240 -178.176.204.250 -178.183.85.67 -178.183.99.195 -178.188.30.171 -178.19.174.250 -178.19.183.14 -178.210.50.116 -178.212.49.26 -178.212.51.166 -178.214.241.150 -178.236.113.246 -178.236.114.174 -178.238.118.238 -178.239.120.153 -178.34.157.178 -178.34.177.42 -178.34.177.78 -178.34.183.162 -178.49.214.145 -178.60.25.240 -178.84.167.164 -179.118.199.209 -179.189.254.54 -179.190.109.156 -18.221.24.26 -180.108.255.24 -180.163.61.176 -180.178.32.66 -180.211.169.2 -180.250.160.26 -180.92.229.122 -181.10.211.18 -181.114.97.30 -181.117.209.48 -181.117.210.108 -181.129.106.146 -181.129.195.162 -181.129.2.18 -181.191.82.170 -181.191.82.45 -181.193.59.78 -181.193.62.225 -181.199.179.14 -181.204.218.149 -181.205.125.58 -181.211.252.34 -181.224.242.131 -181.224.243.165 -181.36.153.151 -181.48.119.70 -181.49.100.190 -181.49.124.170 -181.49.47.190 -181.71.191.178 -182.112.50.134 -182.112.51.50 -182.112.74.113 -182.113.198.185 -182.113.47.253 -182.114.193.101 -182.114.195.13 -182.116.11.82 -182.116.14.201 -182.116.23.172 -182.116.234.235 -182.116.50.120 -182.117.114.200 -182.117.131.233 -182.117.136.84 -182.117.78.224 -182.117.78.71 -182.119.165.134 -182.119.189.47 -182.119.220.86 -182.119.235.25 -182.119.97.247 -182.120.0.69 -182.121.104.96 -182.121.189.232 -182.121.216.195 -182.121.43.251 -182.121.45.242 -182.121.53.152 -182.122.221.223 -182.122.235.28 -182.123.209.163 -182.123.209.186 -182.123.251.52 -182.124.187.248 -182.124.27.191 -182.124.61.181 -182.126.197.110 -182.126.92.5 -182.127.113.173 -182.127.114.159 -182.127.168.82 -182.127.221.45 -182.127.31.125 -182.127.31.229 -182.127.34.61 -182.127.4.62 -182.176.138.75 -182.239.84.154 -182.239.84.156 -182.239.84.86 -182.239.84.87 -182.239.84.88 -182.239.84.89 -182.252.66.18 -182.253.115.155 -182.253.115.156 -182.253.205.235 -182.56.111.199 -182.59.133.14 -182.60.9.130 -182.72.167.124 -182.93.83.121 -183.115.102.3 -183.239.38.170 -183.57.21.131 -183.6.76.139 -184.148.5.123 -184.151.249.241 -184.180.131.206 -185.109.113.198 -185.113.172.205 -185.114.137.114 -185.12.78.161 -185.126.195.110 -185.127.22.75 -185.13.221.50 -185.133.214.138 -185.136.195.200 -185.143.139.103 -185.150.26.210 -185.150.26.221 -185.16.38.38 -185.165.172.66 -185.167.61.107 -185.19.190.80 -185.190.20.228 -185.196.10.231 -185.196.118.86 -185.2.229.122 -185.21.223.166 -185.215.113.101 -185.215.113.16 -185.215.113.19 -185.215.113.204 -185.215.113.66 -185.215.113.8 -185.215.113.84 -185.215.113.93 -185.215.163.90 -185.216.133.16 -185.216.214.218 -185.224.107.4 -185.234.216.64 -185.236.46.120 -185.237.157.98 -185.27.62.20 -185.29.162.101 -185.29.162.110 -185.34.20.221 -185.34.22.140 -185.34.22.25 -185.43.16.46 -185.43.19.103 -185.43.228.126 -185.45.165.45 -185.49.168.84 -185.71.69.198 -186.118.121.223 -186.15.233.178 -186.154.93.81 -186.159.0.129 -186.159.4.25 -186.177.98.100 -186.189.199.6 -186.3.78.195 -186.42.113.6 -186.42.121.70 -186.42.98.2 -186.67.115.166 -186.67.227.98 -187.33.225.154 -188.0.131.200 -188.113.68.227 -188.121.161.31 -188.137.36.53 -188.142.253.22 -188.147.175.138 -188.147.175.18 -188.149.139.44 -188.149.142.208 -188.150.231.39 -188.17.84.160 -188.170.32.148 -188.170.48.204 -188.175.134.62 -188.190.57.41 -188.191.16.250 -188.2.23.244 -188.20.51.118 -188.222.45.134 -188.237.250.100 -188.246.177.214 -188.250.120.10 -188.254.223.175 -188.254.255.246 -188.30.201.55 -188.43.201.109 -188.44.110.215 -188.68.95.174 -188.72.6.218 -188.93.245.85 -188.95.186.50 -189.204.177.98 -189.71.131.197 -190.104.195.210 -190.108.63.242 -190.109.168.146 -190.109.227.99 -190.109.228.98 -190.109.230.79 -190.110.206.134 -190.111.116.96 -190.113.124.155 -190.128.195.138 -190.129.2.198 -190.14.11.146 -190.14.11.226 -190.145.123.18 -190.145.205.178 -190.15.176.254 -190.185.119.13 -190.186.115.41 -190.2.213.169 -190.2.237.104 -190.201.156.66 -190.215.253.57 -190.217.148.149 -190.217.148.227 -190.246.165.66 -190.248.145.19 -190.253.241.253 -190.4.34.18 -190.4.44.202 -190.4.51.242 -190.55.22.174 -190.57.128.110 -190.57.135.90 -190.57.183.186 -190.7.153.18 -190.7.158.202 -190.70.237.191 -190.75.47.51 -190.92.29.206 -190.96.214.111 -191.103.250.193 -191.232.181.180 -191.240.38.70 -191.96.79.79 -192.3.101.135 -192.3.13.57 -192.3.176.154 -192.3.216.148 -193.106.58.174 -193.142.147.59 -193.151.82.82 -193.160.10.213 -193.160.86.39 -193.162.43.35 -193.168.173.217 -193.189.172.10 -193.189.188.129 -193.218.142.205 -193.228.134.234 -193.228.135.75 -193.233.203.218 -193.239.254.115 -193.251.62.153 -193.31.116.186 -193.42.11.9 -193.93.248.103 -193.95.254.50 -194.105.59.47 -194.124.227.4 -194.145.227.21 -194.187.149.116 -194.187.151.189 -194.208.56.60 -194.38.23.2 -195.103.203.106 -195.135.42.75 -195.144.235.42 -195.158.95.85 -195.162.70.105 -195.162.70.5 -195.164.132.134 -195.181.38.152 -195.189.218.150 -195.208.145.49 -195.211.101.219 -195.211.197.30 -195.218.152.38 -195.22.237.98 -195.24.131.189 -195.34.91.22 -195.66.105.122 -195.9.14.86 -195.9.192.52 -196.190.229.115 -196.202.220.96 -196.41.63.178 -196.43.113.182 -196.45.130.38 -196.89.168.163 -197.155.64.126 -197.159.1.58 -197.210.197.185 -197.210.198.190 -197.248.41.250 -197.254.23.210 -197.254.46.102 -198.255.193.91 -198.44.176.142 -198.44.176.224 -198.46.174.139 -198.46.176.133 -198.46.178.144 -198.46.178.145 -198.55.111.5 -2.179.194.192 -2.180.35.231 -2.180.9.57 -2.181.0.146 -2.181.0.20 -2.184.54.225 -2.185.140.219 -2.187.118.22 -2.187.118.46 -2.187.188.113 -2.187.36.184 -2.187.6.249 -2.188.165.250 -2.188.165.251 -2.36.68.156 -2.42.168.99 -2.55.98.253 -2.57.122.121 -2.81.93.24 -2.9.30.119 -20.205.11.156 -200.105.205.26 -200.108.131.222 -200.116.1.90 -200.122.211.138 -200.123.251.66 -200.195.160.182 -200.237.162.102 -200.255.164.35 -200.35.49.74 -200.54.37.90 -200.59.84.176 -200.59.84.33 -200.6.88.136 -200.6.88.146 -200.6.88.227 -200.6.91.43 -200.61.163.235 -200.69.57.4 -200.81.127.208 -200.91.207.83 -201-meihouwang-new.oss-cn-shenzhen.aliyuncs.com -201.184.231.250 -201.184.84.106 -201.20.122.114 -201.208.52.46 -201.209.16.76 -201.234.253.53 -202.107.235.202 -202.107.28.176 -202.107.4.230 -202.110.11.124 -202.110.7.162 -202.124.33.242 -202.131.244.202 -202.139.20.12 -202.139.20.27 -202.139.21.198 -202.148.20.138 -202.148.5.34 -202.151.29.65 -202.154.187.26 -202.155.196.152 -202.166.220.109 -202.169.235.107 -202.180.25.194 -202.191.123.196 -202.22.143.159 -202.3.248.178 -202.3.248.179 -202.4.110.130 -202.4.124.58 -202.5.36.27 -202.5.61.33 -202.53.164.210 -202.53.164.214 -202.57.39.2 -202.57.44.122 -202.57.50.194 -202.59.90.106 -202.61.204.177 -202.63.242.37 -202.78.201.3 -202.88.224.130 -203.109.201.77 -203.115.103.19 -203.128.76.99 -203.142.91.39 -203.150.253.15 -203.17.23.194 -203.176.137.54 -203.194.107.101 -203.2.65.29 -203.202.245.6 -203.223.44.142 -203.223.44.206 -203.232.37.151 -203.80.244.154 -204.11.227.214 -205.185.120.123 -205.185.123.153 -205.185.124.50 -205.209.246.83 -206.53.55.147 -208.89.168.31 -209.141.35.56 -209.162.229.229 -209.42.55.230 -210.4.69.226 -210.56.21.206 -211.108.60.155 -211.186.82.229 -211.192.113.231 -211.192.113.232 -211.226.15.79 -211.40.16.243 -212.107.232.167 -212.113.35.236 -212.154.131.153 -212.154.135.81 -212.156.143.242 -212.162.149.108 -212.162.149.85 -212.164.252.18 -212.18.223.226 -212.18.223.229 -212.200.106.94 -212.225.175.223 -212.225.186.186 -212.231.226.35 -212.251.68.204 -212.3.211.157 -212.43.34.226 -212.46.197.114 -212.5.200.222 -212.70.149.205 -212.80.18.246 -212.93.103.10 -213.120.230.115 -213.147.120.145 -213.16.63.103 -213.175.189.102 -213.184.249.83 -213.204.126.186 -213.222.45.158 -213.243.216.3 -213.5.19.220 -213.6.101.83 -213.6.74.138 -213.7.223.212 -213.92.222.96 -216.155.93.238 -216.172.177.16 -216.183.54.169 -216.46.44.147 -217.114.43.149 -217.171.55.168 -217.218.235.202 -217.64.96.209 -217.65.15.51 -217.71.224.90 -217.75.222.27 -217.86.136.170 -2173c68b-2260-4810-9a81-774ef2ab2048.random.aefiabeuodbauobfafoebbf.net -218.108.181.2 -218.147.147.172 -218.24.55.60 -218.33.72.123 -218.38.241.103 -218.38.241.105 -218.59.103.232 -218.60.179.244 -218.86.123.43 -218.91.153.60 -218.93.44.86 -219.155.170.117 -219.155.192.37 -219.155.193.77 -219.155.227.230 -219.155.83.157 -219.156.174.250 -219.156.89.148 -219.157.235.244 -219.157.30.155 -219.157.61.167 -220.192.225.200 -220.192.254.203 -220.202.91.159 -220.92.223.97 -221.1.226.225 -221.10.233.217 -221.120.98.22 -221.143.49.222 -221.15.164.225 -221.15.19.101 -221.15.198.201 -221.15.246.128 -221.202.207.68 -221.202.23.125 -221.203.232.10 -221.203.94.226 -221.212.104.58 -222.127.214.76 -222.132.36.54 -222.133.113.134 -222.133.81.32 -222.134.163.222 -222.134.173.137 -222.135.132.134 -222.135.221.115 -222.137.107.245 -222.137.155.36 -222.137.41.38 -222.137.74.225 -222.138.113.100 -222.138.124.162 -222.138.150.10 -222.138.179.243 -222.140.186.160 -222.140.224.64 -222.141.105.33 -222.141.107.22 -222.141.38.175 -222.141.42.59 -222.142.236.52 -222.142.241.199 -222.142.243.208 -222.142.252.101 -222.244.110.238 -222.246.111.136 -222.246.41.228 -222.252.15.21 -222.88.186.81 -223.108.58.13 -223.108.58.15 -223.16.143.101 -223.17.9.188 -223.220.162.90 -23-122-210-174.lightspeed.cicril.sbcglobal.net -23.122.210.174 -24.106.91.24 -24.109.148.130 -24.120.175.134 -24.149.81.68 -24.153.218.165 -24.202.206.66 -24.234.159.5 -24.79.48.21 -27.0.235.198 -27.121.80.82 -27.147.178.248 -27.156.154.3 -27.156.224.11 -27.157.144.3 -27.18.157.125 -27.194.79.75 -27.202.13.138 -27.202.96.24 -27.203.19.229 -27.204.237.56 -27.207.241.203 -27.207.247.55 -27.207.39.76 -27.213.228.209 -27.215.102.170 -27.215.111.112 -27.215.122.240 -27.215.122.253 -27.215.125.136 -27.215.139.198 -27.215.142.81 -27.215.154.241 -27.215.181.92 -27.215.182.70 -27.215.208.88 -27.215.239.11 -27.215.47.120 -27.215.49.41 -27.215.51.228 -27.215.54.226 -27.215.77.241 -27.215.83.11 -27.215.86.153 -27.217.128.60 -27.220.11.235 -27.222.86.171 -27.223.252.134 -27.25.147.19 -27.37.114.78 -27.37.117.250 -27.37.117.50 -27.37.127.85 -27.37.127.96 -27.37.75.16 -27.37.87.242 -27.6.166.93 -27.6.169.179 -27.68.28.110 -3.109.239.113 -31.0.136.2 -31.0.241.65 -31.10.63.218 -31.125.243.56 -31.14.57.173 -31.173.70.100 -31.184.194.114 -31.186.217.44 -31.186.54.203 -31.202.83.200 -31.207.203.184 -31.210.217.24 -31.211.44.70 -31.222.113.214 -31.223.60.33 -31.25.133.191 -31.28.11.111 -31.41.91.37 -31.43.16.120 -32326df1-21cb-49ce-8424-4802f8af9fdd.random.aefiabeuodbauobfafoebbf.net -34.102.78.64 -35.185.187.24 -36.138.125.70 -36.249.46.154 -36.249.46.166 -36.249.46.167 -36.249.46.168 -36.249.46.169 -36.249.46.170 -36.249.46.171 -36.249.46.172 -36.249.46.173 -36.249.46.174 -36.249.46.232 -36.249.46.233 -36.249.46.234 -36.249.46.235 -36.249.46.236 -36.249.46.237 -36.249.46.238 -36.249.46.239 -36.249.46.240 -36.249.46.241 -36.37.129.73 -36.39.146.69 -36.64.209.97 -36.64.210.218 -36.64.4.199 -36.66.105.177 -36.66.139.36 -36.66.151.7 -36.66.168.49 -36.66.171.191 -36.66.174.186 -36.66.174.189 -36.66.231.15 -36.66.59.233 -36.67.155.2 -36.67.251.197 -36.67.251.227 -36.67.4.139 -36.67.66.178 -36.88.109.138 -36.88.180.115 -36.88.244.2 -36.89.11.81 -36.89.129.213 -36.89.240.75 -36.91.144.195 -36.91.171.37 -36.91.171.51 -36.91.186.253 -36.91.37.71 -36.92.188.82 -36.92.207.29 -36.92.68.241 -36.92.77.11 -36.92.93.101 -36.93.28.66 -36.93.41.223 -36.94.100.202 -36.94.29.82 -36.95.166.82 -360down7.miiyun.cn -37-221-67-60.plesk.page -37.0.69.42 -37.130.41.248 -37.139.249.103 -37.143.133.215 -37.156.29.141 -37.17.61.236 -37.19.50.238 -37.192.22.166 -37.193.88.34 -37.194.25.119 -37.205.81.56 -37.221.67.60 -37.238.132.158 -37.252.66.188 -37.34.209.216 -37.44.238.67 -37.46.255.40 -37.54.15.36 -37.57.33.51 -37.77.128.242 -38.137.248.18 -38.137.248.43 -38.137.248.6 -38.137.251.130 -38.61.169.244 -38.61.176.224 -38.61.176.226 -39.101.205.127 -39.103.150.56 -39.108.182.78 -39.126.203.159 -39.164.41.36 -39.174.238.43 -39.175.56.202 -39.175.56.248 -39.175.56.249 -39.175.56.250 -39.187.83.166 -39.66.95.93 -39.74.250.38 -39.79.42.125 -39.80.196.29 -39.81.111.75 -39.81.51.36 -39.86.39.213 -39.87.255.252 -39.87.29.162 -39.87.61.240 -39.87.75.233 -39.88.113.81 -39.88.123.115 -39.88.156.152 -39.89.219.219 -39.90.134.19 -39.90.148.13 -39.98.107.227 -39.99.131.244 -41.111.213.190 -41.174.152.29 -41.180.49.110 -41.184.188.49 -41.190.142.206 -41.190.70.254 -41.190.70.78 -41.203.218.38 -41.215.23.222 -41.215.69.106 -41.76.195.60 -41.76.195.90 -41.77.74.90 -41.79.233.62 -41.84.131.154 -41.84.143.178 -42.176.252.103 -42.177.10.144 -42.177.123.112 -42.177.22.218 -42.177.230.226 -42.177.246.195 -42.177.62.13 -42.178.129.21 -42.178.169.33 -42.178.170.107 -42.178.171.240 -42.178.26.84 -42.178.28.62 -42.179.10.152 -42.179.10.99 -42.179.153.237 -42.179.199.151 -42.179.236.12 -42.180.57.216 -42.193.241.116 -42.200.105.192 -42.224.109.135 -42.224.123.136 -42.224.147.213 -42.224.148.139 -42.224.152.45 -42.224.192.170 -42.224.198.2 -42.224.31.229 -42.224.66.166 -42.224.77.122 -42.225.231.205 -42.225.50.199 -42.225.52.16 -42.226.222.223 -42.226.224.109 -42.227.177.233 -42.227.197.252 -42.227.204.141 -42.227.204.161 -42.227.236.80 -42.228.106.119 -42.228.34.101 -42.230.139.8 -42.230.184.95 -42.230.189.29 -42.230.35.3 -42.231.255.110 -42.231.42.232 -42.231.66.164 -42.231.66.224 -42.232.211.186 -42.232.215.240 -42.233.92.235 -42.234.147.123 -42.234.164.222 -42.234.208.133 -42.234.209.236 -42.235.189.29 -42.235.40.160 -42.235.47.139 -42.235.48.234 -42.235.93.23 -42.236.212.194 -42.239.152.130 -42.239.152.197 -42.239.188.48 -42.239.227.22 -42.239.240.225 -42.4.214.204 -42.5.194.198 -42.5.21.156 -42.5.241.227 -42.5.5.216 -42.52.124.194 -42.52.19.216 -42.52.193.220 -42.52.27.81 -42.53.251.106 -42.54.108.78 -42.54.140.122 -42.54.147.17 -42.54.186.106 -42.54.21.136 -42.55.33.40 -42.55.36.55 -42.55.61.201 -42.56.156.89 -42.56.157.223 -42.56.182.0 -42.56.194.120 -42.57.163.113 -42.57.185.177 -42.57.200.150 -42.57.202.157 -42.57.220.219 -42.57.226.91 -42.57.25.140 -42.57.74.192 -42.58.113.22 -42.58.114.218 -42.58.17.89 -42.58.184.217 -42.58.223.226 -42.58.237.82 -42.59.90.107 -42.6.185.189 -42.7.198.147 -42.85.123.140 -42.85.15.12 -42.86.121.13 -42.86.127.141 -42.86.159.72 -42.86.63.45 -42.87.110.132 -42.87.150.232 -42.87.156.239 -42.87.38.84 -42.87.44.232 -42.87.92.51 -42.98.156.7 -42.98.254.77 -43.132.102.107 -43.134.227.6 -43.143.246.38 -43.153.49.49 -43.224.0.5 -43.230.158.100 -43.230.158.26 -43.230.159.242 -43.240.65.55 -43.245.131.27 -43.249.172.195 -43.249.52.210 -43.249.54.246 -45.115.114.75 -45.115.254.149 -45.115.254.150 -45.118.79.103 -45.139.104.237 -45.148.120.244 -45.152.67.101 -45.156.25.175 -45.163.18.136 -45.163.18.137 -45.163.18.138 -45.163.18.139 -45.194.32.159 -45.200.14.77 -45.224.100.254 -45.229.174.144 -45.229.174.165 -45.234.218.54 -45.235.49.49 -45.6.134.12 -45.64.128.244 -45.66.231.148 -45.83.207.67 -46.100.50.137 -46.151.56.42 -46.173.163.110 -46.175.138.75 -46.209.255.18 -46.219.119.69 -46.229.139.93 -46.231.32.135 -46.250.54.75 -46.26.216.74 -46.39.247.173 -46.44.203.207 -46.52.164.170 -46.72.31.77 -46.99.218.152 -47.101.206.165 -47.102.104.99 -47.103.73.226 -47.104.173.216 -47.110.247.171 -47.111.180.75 -47.116.25.208 -47.120.46.210 -47.152.114.31 -47.229.251.27 -47.236.23.121 -47.50.169.82 -47.97.18.56 -47.98.177.117 -47.98.188.214 -4841a27a-aeca-4563-9acf-b84bd2e4a572.random.fihsifuiiusuiuduf.com -49.142.114.242 -49.156.46.134 -49.174.82.174 -49.213.157.76 -49.232.20.75 -49.233.249.195 -4b488e51-f1ae-4819-8709-fb213d2875cd.random.aefiabeuodbauobfafoebbf.net -5-157-110-232.dyn.eolo.it -5.10.183.36 -5.154.67.251 -5.157.110.232 -5.160.3.5 -5.198.242.56 -5.200.72.26 -5.201.176.87 -5.202.101.153 -5.235.186.47 -5.249.20.110 -5.26.97.52 -5.28.38.135 -5.59.248.10 -5.59.248.206 -5.59.248.52 -50.114.185.212 -50.175.37.218 -50.175.37.220 -50.175.37.221 -50.175.37.222 -50.175.37.223 -50.207.70.160 -52.83.32.119 -58.115.174.26 -58.145.168.170 -58.215.245.2 -58.216.207.82 -58.23.215.155 -58.23.215.156 -58.23.215.157 -58.23.215.158 -58.23.215.160 -58.23.215.161 -58.23.215.163 -58.23.215.170 -58.23.215.171 -58.23.215.173 -58.23.215.175 -58.23.215.176 -58.23.215.177 -58.23.215.178 -58.23.215.179 -58.23.215.25 -58.23.215.26 -58.23.215.27 -58.23.215.29 -58.23.215.30 -58.23.215.32 -58.23.215.62 -58.23.215.64 -58.23.215.65 -58.23.215.66 -58.23.215.67 -58.23.215.68 -58.23.215.70 -58.23.215.71 -58.57.22.238 -59.154.122.196 -59.154.123.20 -59.154.252.26 -59.175.183.106 -59.178.88.228 -59.178.94.77 -59.180.180.103 -59.182.123.17 -59.183.13.57 -59.183.134.214 -59.184.241.75 -59.184.245.4 -59.184.248.65 -59.184.250.98 -59.184.255.20 -59.184.50.69 -59.184.53.238 -59.184.56.144 -59.184.67.26 -59.184.79.233 -59.19.13.27 -59.28.44.218 -59.29.46.120 -59.59.6.86 -59.88.123.150 -59.88.148.20 -59.88.244.196 -59.88.249.90 -59.89.179.34 -59.89.181.211 -59.89.233.140 -59.89.68.65 -59.89.69.43 -59.91.173.183 -59.91.82.221 -59.91.82.253 -59.91.84.1 -59.91.87.206 -59.91.87.239 -59.91.89.1 -59.91.89.20 -59.91.90.0 -59.91.90.158 -59.91.90.235 -59.91.92.81 -59.92.176.27 -59.92.184.178 -59.92.82.192 -59.93.149.22 -59.93.185.252 -59.93.93.237 -59.93.95.82 -59.94.145.217 -59.95.218.254 -59.95.80.251 -59.95.83.94 -59.95.88.176 -59.95.96.38 -59.96.176.126 -59.96.251.34 -59.97.113.208 -59.97.116.34 -59.97.126.144 -59.97.127.4 -59.99.137.28 -59.99.200.143 -59.99.209.160 -59.99.97.11 -60.17.154.117 -60.19.139.104 -60.212.239.178 -60.214.81.231 -60.215.172.153 -60.22.23.50 -60.22.254.171 -60.22.54.228 -60.23.187.65 -60.241.14.143 -60.246.106.122 -60.246.235.10 -60.246.83.121 -601a893a-e60f-4252-8810-13698bb2abc1.random.aefiabeuodbauobfafoebbf.net -61.0.149.156 -61.0.177.109 -61.0.181.104 -61.0.182.186 -61.0.182.42 -61.1.238.222 -61.1.53.213 -61.1.53.96 -61.137.128.32 -61.137.150.134 -61.137.157.192 -61.137.197.7 -61.155.88.94 -61.163.102.174 -61.176.211.70 -61.182.69.190 -61.2.105.166 -61.3.101.160 -61.3.185.251 -61.3.191.114 -61.3.212.190 -61.3.221.63 -61.3.93.140 -61.43.116.247 -61.52.110.74 -61.52.170.147 -61.52.195.69 -61.52.208.212 -61.52.32.22 -61.52.33.41 -61.52.37.35 -61.53.116.194 -61.53.121.122 -61.53.126.128 -61.53.251.208 -61.53.46.140 -61.53.47.239 -61.53.47.247 -61.53.72.127 -61.53.72.202 -61.54.253.212 -61.54.70.193 -61.88.50.73 -61.88.50.74 -61.88.50.76 -62.122.96.124 -62.141.122.162 -62.152.23.177 -62.162.113.34 -62.162.141.194 -62.169.235.215 -62.176.113.135 -62.176.27.243 -62.197.209.247 -62.202.20.85 -62.204.41.39 -62.21.103.194 -62.212.36.135 -62.212.36.194 -62.212.36.224 -62.212.43.115 -62.212.43.79 -62.212.46.79 -62.212.49.131 -62.212.54.11 -62.212.54.142 -62.249.140.222 -62.32.86.42 -62.45.143.203 -62.73.121.49 -63.227.145.214 -63.78.214.18 -64.140.100.194 -64.140.100.201 -64.140.105.9 -64.140.99.97 -64.66.18.79 -64.89.206.97 -65.132.139.90 -65.49.44.84 -66.18.162.62 -66.187.4.213 -66.198.193.249 -66.198.199.18 -66.214.27.140 -66.49.95.131 -66.54.98.190 -66.54.98.43 -66.55.76.192 -66.71.242.67 -66.71.242.68 -66.71.242.69 -66.71.242.70 -66.71.249.146 -67.213.59.251 -67.214.245.59 -68.107.218.106 -68.226.36.150 -68.46.23.180 -69.117.18.44 -69.70.215.126 -69.75.168.226 -691b7289-27a2-4daf-9e9b-485fe30d2331.random.fihsifuiiusuiuduf.com -70.166.80.169 -71.83.248.9 -71b002e7-9c3a-45c2-9708-01ddfacca838.random.aefiabeuodbauobfafoebbf.net -72.180.130.39 -72d673a1-eb79-49af-9da0-269b13f9ac9f.random.aefiabeuodbauobfafoebbf.net -72ec8d09-fce8-4272-9829-f4a17ae33269.random.fihsifuiiusuiuduf.com -74.48.45.204 -74.48.60.99 -74.72.72.247 -75.136.50.41 -76.138.90.233 -76.53.38.126 -76.76.195.174 -77.237.29.219 -77.239.22.123 -77.42.243.110 -77.65.45.186 -77.72.254.210 -77.73.49.254 -77.89.199.242 -77.89.245.118 -78.11.95.13 -78.136.240.220 -78.140.32.219 -78.153.140.96 -78.186.45.130 -78.188.192.66 -78.188.215.66 -78.188.4.242 -78.188.82.30 -78.189.103.63 -78.21.148.41 -78.23.174.181 -78.29.14.127 -78.29.19.18 -78.30.234.163 -78.30.245.243 -78.38.157.82 -78.38.18.173 -78.38.60.246 -78.38.98.43 -78.58.145.84 -78.70.203.243 -78.73.138.2 -78.83.245.86 -78.92.194.255 -79.101.0.33 -79.111.119.241 -79.111.14.68 -79.120.54.194 -79.127.76.34 -79.127.92.80 -79.175.42.206 -7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.fihsifuiiusuiuduf.com -8.137.103.16 -8.137.59.132 -8.213.217.173 -8.218.138.77 -8.219.229.99 -80.14.38.66 -80.19.172.50 -80.202.217.118 -80.210.27.206 -80.210.35.140 -80.217.109.85 -80.24.87.77 -80.255.187.190 -80.64.76.65 -80.68.196.6 -80.73.70.114 -81.156.181.101 -81.16.247.116 -81.16.247.69 -81.16.247.81 -81.16.254.181 -81.163.57.65 -81.170.168.75 -81.196.96.73 -81.211.8.190 -81.23.169.206 -81.42.247.62 -81.69.22.170 -81.70.93.58 -81.71.147.158 -82.114.109.66 -82.114.200.50 -82.137.219.178 -82.148.194.54 -82.157.80.216 -82.193.118.248 -82.193.118.99 -82.193.120.99 -82.212.109.51 -82.213.194.68 -82.31.159.47 -82.65.205.108 -82.65.37.116 -82.76.12.91 -82.77.57.16 -82.99.201.222 -82.99.230.98 -83-87-76-41.cable.dynamic.v4.ziggo.nl -83.147.93.226 -83.209.41.236 -83.220.108.132 -83.229.86.179 -83.234.147.99 -83.234.203.16 -83.234.218.234 -83.239.105.190 -83.249.236.177 -83.87.76.41 -83.96.147.6 -84.199.4.170 -84.215.248.162 -84.22.136.158 -84.22.48.234 -84.242.139.154 -84.255.42.67 -84.29.231.9 -84.52.94.215 -85.105.159.91 -85.105.172.22 -85.105.79.209 -85.114.141.88 -85.114.145.172 -85.115.232.230 -85.118.110.232 -85.130.70.76 -85.153.139.194 -85.185.20.208 -85.187.82.120 -85.190.230.229 -85.202.9.242 -85.215.66.153 -85.22.139.189 -85.239.34.237 -85.239.34.37 -85.28.47.101 -85.28.47.116 -85.28.47.152 -85.28.47.30 -85.28.47.31 -85.28.47.60 -85.28.47.70 -85.29.137.243 -85.29.147.122 -85.50.148.206 -85.72.39.196 -85.89.178.102 -85.89.188.97 -86.101.187.225 -86.101.187.226 -86.102.177.140 -86.106.119.113 -86.120.181.49 -86.120.181.54 -86.120.181.56 -86.120.181.60 -86.120.181.61 -86.121.112.111 -86.121.112.188 -86.121.112.70 -86.121.113.72 -86.121.113.87 -86.122.141.80 -86.127.104.61 -86.221.95.134 -86.38.173.89 -86.63.108.167 -8616618e-906e-4ed1-95a8-264945799517.random.aefiabeuodbauobfafoebbf.net -87.120.179.196 -87.120.179.197 -87.120.179.198 -87.121.112.42 -87.140.77.206 -87.197.107.203 -87.251.249.41 -87.255.201.109 -87.26.194.197 -88.116.62.226 -88.119.151.142 -88.119.193.17 -88.119.87.161 -88.119.95.176 -88.123.92.100 -88.204.59.2 -88.236.58.57 -88.247.163.125 -88.247.206.153 -88.247.222.82 -88.248.150.208 -88.248.150.209 -88.248.150.210 -88.248.150.211 -88.248.150.212 -88.248.150.213 -88.248.150.214 -88.248.150.215 -88.248.81.112 -88.250.50.11 -88.28.217.34 -88.28.218.163 -88.80.242.177 -89.133.95.164 -89.135.142.235 -89.140.176.228 -89.149.127.214 -89.149.71.22 -89.165.120.174 -89.17.36.70 -89.175.24.90 -89.184.185.198 -89.186.22.19 -89.19.176.232 -89.190.76.126 -89.197.154.116 -89.201.7.189 -89.21.132.24 -89.216.100.166 -89.218.249.86 -89.231.14.137 -89.25.214.254 -89.25.223.211 -89.254.173.147 -89.28.58.132 -89.28.58.97 -89.31.226.224 -90.176.171.4 -90.182.214.197 -90.182.214.225 -90.230.28.6 -90.63.155.1 -91.122.210.7 -91.139.153.236 -91.142.27.138 -91.147.103.160 -91.164.39.142 -91.192.33.128 -91.195.100.69 -91.196.121.81 -91.202.233.169 -91.205.131.242 -91.215.61.181 -91.215.85.182 -91.216.28.112 -91.225.132.57 -91.231.190.163 -91.234.124.161 -91.238.203.71 -91.242.106.137 -91.244.112.102 -91.244.169.56 -91.246.214.25 -91.92.126.73 -91.92.82.180 -91.92.98.94 -912648.aioc.qbgxl.com -92.114.191.82 -92.127.156.174 -92.204.132.114 -92.204.170.238 -92.50.146.222 -92.51.27.116 -92.81.131.98 -92.85.48.31 -93.122.207.3 -93.123.53.204 -93.123.89.226 -93.175.205.158 -93.175.223.140 -93.189.222.80 -93.63.154.162 -94.121.3.50 -94.154.84.37 -94.156.69.146 -94.159.74.226 -94.178.235.25 -94.181.44.208 -94.205.212.138 -94.226.135.252 -94.240.37.34 -94.240.47.154 -94.241.90.73 -94.251.5.51 -94.254.244.246 -94.28.123.75 -94.43.59.154 -94.52.86.60 -94.53.120.109 -94.73.244.135 -94.74.128.50 -95.137.159.108 -95.137.182.147 -95.137.182.55 -95.137.187.16 -95.137.187.71 -95.137.190.75 -95.137.193.51 -95.137.197.39 -95.137.202.191 -95.137.206.17 -95.137.206.97 -95.137.209.127 -95.137.210.155 -95.137.210.219 -95.137.212.13 -95.137.212.26 -95.137.212.71 -95.137.212.78 -95.137.212.8 -95.137.213.234 -95.137.213.243 -95.137.213.74 -95.137.217.231 -95.137.223.12 -95.137.223.208 -95.137.223.235 -95.137.223.241 -95.137.223.46 -95.137.225.223 -95.137.238.51 -95.137.244.238 -95.137.249.196 -95.137.252.101 -95.137.252.114 -95.137.252.115 -95.137.253.64 -95.141.135.138 -95.158.161.35 -95.158.175.214 -95.167.25.74 -95.170.112.158 -95.170.113.236 -95.170.114.70 -95.170.116.28 -95.170.119.100 -95.174.99.179 -95.230.215.65 -95.255.114.11 -95.38.147.200 -95.38.24.186 -95.43.68.51 -95.47.247.67 -95.47.248.146 -95.60.186.19 -95.67.60.25 -95.80.77.125 -95.91.182.4 -95.91.96.123 -96.33.220.208 -96.76.18.90 -98.14.183.227 -98.180.230.180 -99.139.100.137 -99.71.130.109 -9d4e04ce-a517-4d13-a463-30c7edb00ca5.random.aefiabeuodbauobfafoebbf.net -abissnet.net -aebbf21e-8b29-43b7-bb9f-7cb1d7c4afe4.random.aefiabeuodbauobfafoebbf.net -aefiabeuodbauobfafoebbf.net -aefieiaehfiaehr.top -aeoghehofu.su -aeufoeahfouefhg.top -aiiaiafrzrueuedur.net -almrwad.com -anchornorth.com -aoruuoooshfrohle.su -aosafrica.co.za -api-ms.cobainaja.id -api.52kkg.com -app.aefiabeuodbauobfafoebbf.net -atlpvt.com -atordeg.com.br -atsegypt.com -auth-idclient.37-221-67-60.plesk.page -avast-antivirus.com -avast-antivirusdownload.com -avastcsw.com -avastsf.com -awesome-shirley.37-221-67-60.plesk.page -b.9-9-8.com -b46.oss-cn-hongkong.aliyuncs.com -bades.co.tz -bafybeicnmx2fcaolinpdaiqjo7hgsourg3qzaxf57psdrbqic4qrm4pf3i.ipfs.dweb.link -bafybeicoo7kwhmnl6q7prd65aimf5byzrihrklgviebm2pkyzyepdaigf4.ipfs.dweb.link -bafybeidc67axv337ni24dprmx7f42twqeqrvahpmhogdtawzng5eytszme.ipfs.dweb.link -bahrabeauty.com -bcc3d8ee-9718-4d4d-8494-2b5fc0b685be.random.aefiabeuodbauobfafoebbf.net -bef08220-795f-4c88-a211-13dfc2d20d4c.random.fihsifuiiusuiuduf.com -best.obs.cn-sz1.ctyun.cn -biancolevrin.com -bitkiselurunsiparis.com -blackhattoolz.com -bruiserbodies.com -bsa.bsafesafety.com -buscascolegios.diit.cl -by.haory.cn -c0349eb0-28fb-48be-b636-b866060fb0a1.random.aefiabeuodbauobfafoebbf.net -c7797d6a-28d9-4e99-81f1-98c0567e46ad.random.aefiabeuodbauobfafoebbf.net -c99d2b10-b6a8-474b-a0b8-96d8118e5ffe.random.fihsifuiiusuiuduf.com -caca.szcoolgame.com -campingkaymakis.ath.forthnet.gr -catbaparadisehotel.com.vn -cdaonline.com.ar -cdn.pawns.app -cef331d9-c605-4d06-aa84-b25d5c7662ac.random.fihsifuiiusuiuduf.com -cfs10.blog.daum.net -cfs13.tistory.com -cfs7.blog.daum.net -cfs9.blog.daum.net -chemsky.tn -cnom.sante.gov.ml -coadymarine.com -coe.com.vn -compan.oss-cn-hongkong.aliyuncs.com -comunicacolweb.com -contemega.com.do -cpanel-adminhost.com -cpc138130-hatf10-2-0-cust814.9-3.cable.virginm.net -criapediatria.com.br -cryptolabstudio.com -d1.udashi.com -d1i94yju6i4l9g.cloudfront.net -d38c6492-db8a-468e-9680-b62c6443b8b0.random.aefiabeuodbauobfafoebbf.net -darpexllc.top -data.discuz.mobi -deauduafzgezzfgm.top -demo.aefiabeuodbauobfafoebbf.net -dev.aefiabeuodbauobfafoebbf.net -dhcp-206-248-59-5.metro86.ru -diclegrup.org -dist.eda1.ru -dl.1003b.56a.com -dl.aginjector.com -dnvk1.info -down.ftp21.cc -down.pcclear.com -download.caihong.com -download.doumaibiji.cn -download.pdf00.cn -download.skycn.com -downloadwasabi.is -dz0nhlj1q8ac3.cloudfront.net -e9ee228b-57e8-4349-a41e-71a7b6d67aa2.random.aefiabeuodbauobfafoebbf.net -easy2buy.ae -ec2-18-221-24-26.us-east-2.compute.amazonaws.com -eff6743c-caa4-48bb-ab72-f3a43bf81e0e.random.aefiabeuodbauobfafoebbf.net -eguaheoghouughahsu.cc -epei77.direct.quickconnect.to -eradi-tech.net -espace-auth.37-221-67-60.plesk.page -evoluxcontabilidade.com.br -exilum.com -faf52996-68c1-46a1-b531-b14d611d20e3.random.aefiabeuodbauobfafoebbf.net -famesa.com.ar -fd8a7ef9-faae-4c3c-814a-376eb024783e.random.fihsifuiiusuiuduf.com -fervent-kilby.37-221-67-60.plesk.page -fetchdesignprint.co.za -fihsifuiiusuiuduf.com -files5.uludagbilisim.com -filespot.is -firstviewautoservice.com -floride.37-221-67-60.plesk.page -fookonline.com -funletters.net -games.njanzen.de -gestion-client.37-221-67-60.plesk.page -gestion.transaction.37-221-67-60.plesk.page -globallaborsupply.com -gztcpcmynls.fihsifuiiusuiuduf.com -happy-heisenberg.37-221-67-60.plesk.page -hfs.t1linux.com -hitman-pro.ru -hitstation.nl -hook.ftp21.cc -host-195-103-203-106.business.telecomitalia.it -host-95-255-114-11.business.telecomitalia.it -hr2019.vrcom7.com -hseda.com -hwthurmann.de -hydewood.com -ia800400.us.archive.org -ia803402.us.archive.org -ia803405.us.archive.org -ia903207.us.archive.org -iankian.shop -imtoken8.cc -ingonherbal.com -innovativebuildingsolutions.in -inspirepk.org -inspiring-ride.37-221-67-60.plesk.page -intelligent-varahamihira.37-221-67-60.plesk.page -iprimaveral.com -ironturner.shop -jeffdahlke.com -jobcity.com -joccupationalscience.org -jointings.org -jtpdev.co.uk -karer.by -karoonpc.com -lajollaautorepairs.com -leopolfa.shop -lflsoftware.com -lh.yjjxz.com -library.arihantmbainstitute.ac.in -licocojambamarketplace.com -lindnerelektroanlagen.de -linkvilleplayers.org -livetrack.in -locale.37-221-67-60.plesk.page -loeghaiofiehfihf.to -lop.foxesjoy.com -lostheaven.com.cn -lti.cs.vt.edu -mail.bsa.bsafesafety.com -mail.fihsifuiiusuiuduf.com -manager.37-221-67-60.plesk.page -managermagnetcccccmango.duckdns.org -mastercompu.com -maxmoney.com -meeweb.com -megasena777.top -microsecurityupdate.com -milanaces.com -mitosiscg.com -moninediy.com -mussangroup.com -namthaibinh.net -nerve.untergrund.net -noithaticon.vn -ns1.bsafesafety.com -ns1.tiktekmarketing.com -ns2.bsafesafety.com -ojang.pe.kr -omnicomm-ural.ru -onlinesupportforroad.com -opolis.io -oys0ro.static.otenet.gr -pagamento.afya.com.br -palharesinformatica.com.br -pic.shouhucj.com -pns.org.pk -postaipay.top -pouya.blob.core.windows.net -privacy.aefiabeuodbauobfafoebbf.net -protechasia.com -pub-97694a1358de4edbb16efd939f516a29.r2.dev -qgf338jtt8tty7rx.myfritz.net -rachmatmusa.com -ranchoboscardin.com.br -ratokalokm1.homelinux.com -rddissisifigifidi.net -reifenquick.de -reusable-flex.com -rfddsdaajbs.fihsifuiiusuiuduf.com -rockcreekdds.com -s088.silver.fastwebserver.de -saf-oil.ru -sc.jishousc.shop -scratchedcards.com -sd-1093121-h00002.ferozo.net -sd-1684625-h00001.ferozo.net -server.toeicswt.co.kr -servisaludocupacional.pe -shell.dimitrimedia.com -shipminttracking.net -silentpdf.line.pm -silinast.ro -sistema.intensegroupgt.com -skbm.ba -skyjsihnqew.fihsifuiiusuiuduf.com -smtp.aefiabeuodbauobfafoebbf.net -soft.110route.com -softbank126023203236.bbtec.net -softcatalog.ru -softdl.360tpcdn.com -sos.vivi.sg -spaceframe.mobi.space-frame.co.za -sportvision.app -src1.minibai.com -ssl.ftp21.cc -starcountry.net -static-91-225-132-57.devs.futuro.pl -static.165.8.203.116.clients.your-server.de -static.cz01.cn -static.yvosm.cn -static.zongheng.com -stdown.dinju.com -subtitlez0.duckdns.org -support.clz.kr -syn-047-229-251-027.res.spectrum.com -talkstuff.social -techniguitare.com -tecni-soft.com -tejarat-gram.com -telegram.ninja -tengfeidn.com -test.typoten.com -tmars.net -totalhorsehealth.com -transaction.37-221-67-60.plesk.page -travelwithmanta.co.za -tspanel.net -unicorpbrunei.com -update.cg100iii.com -updates.ultimate-fakkers.co.network -webmail.aefiabeuodbauobfafoebbf.net -webmail.auth-idclient.37-221-67-60.plesk.page -webmail.espace-auth.37-221-67-60.plesk.page -webmail.floride.37-221-67-60.plesk.page -webmail.gestion-client.37-221-67-60.plesk.page -webmail.gestion.transaction.37-221-67-60.plesk.page -webmail.locale.37-221-67-60.plesk.page -webmail.manager.37-221-67-60.plesk.page -white.carsmartag.com -wmmzcodukxm.aefiabeuodbauobfafoebbf.net -wowsecurityspider.duckdns.org -www999999asgasg-1327129302.cos.ap-chengdu.myqcloud.com -www999999safagqwhg-1327129302.cos.ap-chengdu.myqcloud.com -xiangshunjy.com -xz888.oss-cn-hangzhou.aliyuncs.com -y.shavsl.com -yp.hnggzyjy.cn -yqpbmbpwksl.aefiabeuodbauobfafoebbf.net -ysdjsrf.com -yzkzixun.com -zffsg.oss-ap-northeast-2.aliyuncs.com -zhengxinpeixun.oss-cn-qingdao.aliyuncs.com -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/1.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/11.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/a$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/a.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/aa$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/aaa.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/b$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/bb$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/bbb$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/c$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/cc$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/ccc$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/delta_$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/m.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/newtpp.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/npp.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/nxmr.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/o.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/pei.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/peinf.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/pi.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/pp.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/r.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/s.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/t.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/t1.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/t2.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/tdrpload.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/tpeinf.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/tt.exe$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/twizt/2$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/twizt/3$all -||038d159d-b3bc-44dd-a0c4-bec68c0c4123.random.tsrv1.ws/twztl.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/1.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/11.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/a$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/a.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/aa$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/aaa.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/b$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/bb$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/bbb$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/c$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/cc$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/ccc$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/delta_$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/m.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/newtpp.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/npp.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/nxmr.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/o.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/pei.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/peinf.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/pi.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/pp.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/r.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/s.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/t.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/t1.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/t2.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/tdrpload.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/tpeinf.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/tt.exe$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/twizt/2$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/twizt/3$all -||1090ce78-a573-43df-908b-4bc549764a3a.random.tsrv1.ws/twztl.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/1.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/11.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/a$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/a.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/aa$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/aaa.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/b$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/bb$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/bbb$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/c$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/cc$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/ccc$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/delta_$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/m.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/newtpp.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/npp.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/nxmr.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/o.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/pei.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/peinf.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/pi.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/pp.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/r.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/s.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/t.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/t1.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/t2.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/tdrpload.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/tpeinf.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/tt.exe$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/twizt/2$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/twizt/3$all -||1855e8b9-5b39-418e-b53e-3259c2f0c3fc.random.tsrv1.ws/twztl.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/1.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/11.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/a$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/a.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/aa$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/aaa.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/b$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/bb$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/bbb$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/c$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/cc$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/ccc$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/delta_$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/m.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/newtpp.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/npp.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/nxmr.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/o.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/pei.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/peinf.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/pi.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/pp.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/r.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/s.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/t.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/t1.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/t2.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/tdrpload.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/tpeinf.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/tt.exe$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/twizt/2$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/twizt/3$all -||215be44b-06b4-4bfd-8b66-92003bd7fe54.random.tsrv1.ws/twztl.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/1.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/11.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/a$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/a.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/aa$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/aaa.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/b$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/bb$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/bbb$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/c$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/cc$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/ccc$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/delta_$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/m.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/newtpp.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/npp.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/nxmr.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/o.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/pei.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/peinf.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/pi.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/pp.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/r.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/s.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/t.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/t1.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/t2.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/tdrpload.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/tpeinf.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/tt.exe$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/twizt/2$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/twizt/3$all -||225c2cd6-cbd3-4ac2-8464-cc7686273c9c.random.tsrv1.ws/twztl.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/1.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/11.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/a$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/a.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/aa$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/aaa.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/b$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/bb$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/bbb$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/c$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/cc$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/ccc$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/delta_$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/m.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/newtpp.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/npp.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/nxmr.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/o.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/pei.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/peinf.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/pi.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/pp.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/r.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/s.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/t.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/t1.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/t2.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/tdrpload.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/tpeinf.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/tt.exe$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/twizt/2$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/twizt/3$all -||226b8f14-a155-4dbb-88f2-b146941c2fc9.random.tsrv1.ws/twztl.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/1.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/11.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/a$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/a.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/aa$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/aaa.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/b$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/bb$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/bbb$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/c$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/cc$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/ccc$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/delta_$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/m.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/newtpp.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/npp.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/nxmr.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/o.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/pei.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/peinf.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/pi.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/pp.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/r.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/s.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/t.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/t1.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/t2.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/tdrpload.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/tpeinf.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/tt.exe$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/twizt/2$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/twizt/3$all -||3746c740-22d8-4bc2-9f60-c6c8db13ee88.random.tsrv1.ws/twztl.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/1.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/11.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/a$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/a.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/aa$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/aaa.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/b$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/bb$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/bbb$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/c$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/cc$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/ccc$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/delta_$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/m.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/newtpp.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/npp.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/nxmr.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/o.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/pei.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/peinf.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/pi.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/pp.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/r.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/s.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/t.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/t1.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/t2.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/tdrpload.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/tpeinf.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/tt.exe$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/twizt/2$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/twizt/3$all -||450d4a71-458d-4d35-bd01-b075cdb0d900.random.tsrv1.ws/twztl.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/1.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/11.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/a$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/a.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/aa$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/aaa.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/b$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/bb$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/bbb$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/c$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/cc$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/ccc$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/delta_$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/m.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/newtpp.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/npp.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/nxmr.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/o.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/pei.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/peinf.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/pi.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/pp.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/r.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/s.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/t.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/t1.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/t2.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/tdrpload.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/tpeinf.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/tt.exe$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/twizt/2$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/twizt/3$all -||53e2e72e-92ec-45bd-b5bf-5230e35c1564.random.tsrv1.ws/twztl.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/1.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/11.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/a$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/a.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/aa$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/aaa.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/b$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/bb$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/bbb$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/c$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/cc$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/ccc$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/delta_$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/m.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/newtpp.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/npp.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/nxmr.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/o.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/pei.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/peinf.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/pi.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/pp.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/r.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/s.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/t.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/t1.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/t2.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/tdrpload.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/tpeinf.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/tt.exe$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/twizt/2$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/twizt/3$all -||5913942c-0d07-4809-a743-1db0a1076c8f.random.tsrv1.ws/twztl.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/1.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/11.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/a$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/a.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/aa$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/aaa.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/b$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/bb$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/bbb$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/c$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/cc$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/ccc$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/delta_$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/m.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/newtpp.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/npp.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/nxmr.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/o.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/pei.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/peinf.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/pi.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/pp.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/r.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/s.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/t.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/t1.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/t2.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/tdrpload.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/tpeinf.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/tt.exe$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/twizt/2$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/twizt/3$all -||72ec8d09-fce8-4272-9829-f4a17ae33269.random.tsrv1.ws/twztl.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/1.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/11.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/a$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/a.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/aa$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/aaa.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/b$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/bb$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/bbb$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/c$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/cc$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/ccc$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/delta_$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/m.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/newtpp.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/npp.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/nxmr.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/o.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/pei.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/peinf.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/pi.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/pp.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/r.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/s.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/t.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/t1.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/t2.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/tdrpload.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/tpeinf.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/tt.exe$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/twizt/2$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/twizt/3$all -||7db24a1f-1cdd-4190-89ec-b2765dadb2cd.random.tsrv1.ws/twztl.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/1.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/11.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/a$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/a.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/aa$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/aaa.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/b$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/bb$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/bbb$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/c$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/cc$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/ccc$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/delta_$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/m.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/newtpp.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/npp.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/nxmr.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/o.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/pei.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/peinf.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/pi.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/pp.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/r.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/s.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/t.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/t1.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/t2.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/tdrpload.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/tpeinf.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/tt.exe$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/twizt/2$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/twizt/3$all -||92803df9-8cd5-43dd-811b-f2840cdabc14.random.tsrv1.ws/twztl.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/1.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/11.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/a$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/a.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/aa$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/aaa.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/b$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/bb$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/bbb$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/c$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/cc$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/ccc$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/delta_$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/m.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/newtpp.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/npp.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/nxmr.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/o.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/pei.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/peinf.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/pi.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/pp.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/r.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/s.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/t.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/t1.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/t2.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/tdrpload.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/tpeinf.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/tt.exe$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/twizt/2$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/twizt/3$all -||a012a656-f566-48a1-afad-3dcc46018380.random.tsrv1.ws/twztl.exe$all -||admin.tsrv1.ws/1.exe$all -||admin.tsrv1.ws/11.exe$all -||admin.tsrv1.ws/a$all -||admin.tsrv1.ws/a.exe$all -||admin.tsrv1.ws/aa$all -||admin.tsrv1.ws/aaa.exe$all -||admin.tsrv1.ws/b$all -||admin.tsrv1.ws/bb$all -||admin.tsrv1.ws/bbb$all -||admin.tsrv1.ws/c$all -||admin.tsrv1.ws/cc$all -||admin.tsrv1.ws/ccc$all -||admin.tsrv1.ws/delta_$all -||admin.tsrv1.ws/m.exe$all -||admin.tsrv1.ws/newtpp.exe$all -||admin.tsrv1.ws/npp.exe$all -||admin.tsrv1.ws/nxmr.exe$all -||admin.tsrv1.ws/o.exe$all -||admin.tsrv1.ws/pei.exe$all -||admin.tsrv1.ws/peinf.exe$all -||admin.tsrv1.ws/pi.exe$all -||admin.tsrv1.ws/pp.exe$all -||admin.tsrv1.ws/r.exe$all -||admin.tsrv1.ws/s.exe$all -||admin.tsrv1.ws/t.exe$all -||admin.tsrv1.ws/t1.exe$all -||admin.tsrv1.ws/t2.exe$all -||admin.tsrv1.ws/tdrpload.exe$all -||admin.tsrv1.ws/tpeinf.exe$all -||admin.tsrv1.ws/tt.exe$all -||admin.tsrv1.ws/twizt/2$all -||admin.tsrv1.ws/twizt/3$all -||admin.tsrv1.ws/twztl.exe$all -||airhobi.com/system/gbh/$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/1.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/11.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/a$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/a.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/aa$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/aaa.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/b$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/bb$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/bbb$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/c$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/cc$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/ccc$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/delta_$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/m.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/newtpp.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/npp.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/nxmr.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/o.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/pei.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/peinf.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/pi.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/pp.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/r.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/s.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/t.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/t1.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/t2.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/tdrpload.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/tpeinf.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/tt.exe$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/twizt/2$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/twizt/3$all -||b66c2ee0-f77f-455c-bb30-9b845f1006cb.random.tsrv1.ws/twztl.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/1.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/11.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/a$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/a.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/aa$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/aaa.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/b$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/bb$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/bbb$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/c$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/cc$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/ccc$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/delta_$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/m.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/newtpp.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/npp.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/nxmr.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/o.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/pei.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/peinf.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/pi.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/pp.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/r.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/s.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/t.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/t1.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/t2.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/tdrpload.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/tpeinf.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/tt.exe$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/twizt/2$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/twizt/3$all -||b6bc745a-7b5c-4d56-ab6c-0dd2982cb122.random.tsrv1.ws/twztl.exe$all -||bitbucket.org/!api/2.0/snippets/mounmeinlylo/6qaezk/68ca2fb6aac2a81f027f3153f0d611c70af8c116/files/file$all -||bitbucket.org/!api/2.0/snippets/mounmeinlylo/6qano5/2aa998bdd45ea12f5552d98e8e28825a5a95cc86/files/file$all -||bitbucket.org/!api/2.0/snippets/mounmeinlylo/bqaeer/5b924a1aa7fee2cb51377a9085ed3793f6a749a7/files/file$all -||bitbucket.org/112download/browser/downloads/onionbrowser.rar$all -||bitbucket.org/4afziyfqzm/afziyfqzm/downloads/new_kiddions.rar$all -||bitbucket.org/adobeofficial/adobeofficiall/downloads/setup_en_x64.zip$all -||bitbucket.org/aneex/gtaaaaa/downloads/kiddions_menu.rar$all -||bitbucket.org/aneex/gtavnew/downloads/kiddions_menu.rar$all -||bitbucket.org/aneex/kiddions_menu/downloads/kiddions_menu.rar$all -||bitbucket.org/aneex/rust-aim-esp/downloads/rust_aimesp.rar$all -||bitbucket.org/aneex/warzone_2.0_unlock_tool_aim_esp/downloads/warzone_2.0_unlock_tool_aim_esp.rar$all -||bitbucket.org/apilogic2023/api/downloads/password_2022_installer.rar$all -||bitbucket.org/bodywawe/downwawe/downloads/fort.rar$all -||bitbucket.org/contore/update/downloads/password_2022_installer.rar$all -||bitbucket.org/downcloud-load-ad/ads1022/downloads/afterburner.zip$all -||bitbucket.org/download-aa/download_aaa/downloads/fortnite_hack.rar$all -||bitbucket.org/download-aa/download_aaa/downloads/kiddions_mod_menu.rar$all -||bitbucket.org/download-hack/download/downloads/kiddions_menu.rar$all -||bitbucket.org/easy-s0ft/easys0ft/downloads/fortnite_hack.rar$all -||bitbucket.org/fdfffdfdd/sasa/downloads/crypted.exe$all -||bitbucket.org/foxxlrep/repo/downloads/newf.dotm$all -||bitbucket.org/foxxlrep/repo/downloads/za.xlsx$all -||bitbucket.org/foxxlrep/repo/downloads/zip.zip$all -||bitbucket.org/frozenthrone1337/yeah/downloads/64.dll$all -||bitbucket.org/georgy1ss1s/geoasdfasdf/downloads/fortnite_hack.rar$all -||bitbucket.org/georgy1ss1s/geoasdfasdf/downloads/kiddions_mod_menu.rar$all -||bitbucket.org/greeeengo/xcaseasd/downloads/%d0%a1s_g%d0%9e_ch%d0%90ng%d0%95r.rar$all -||bitbucket.org/greeeengo/xcaseasd/downloads/5m_mod_menu.rar$all -||bitbucket.org/greeeengo/xcaseasd/downloads/g%d0%bed_of_war_ragnar%d0%bek_cr%d0%b0%d1%81k.rar$all -||bitbucket.org/greeeengo/xcaseasd/downloads/sonic_frontiers_cracked.rar$all -||bitbucket.org/hgdfhdfgd/test/downloads/ingdmbd.txt$all -||bitbucket.org/hgdfhdfgd/test/downloads/new_image.jpg$all -||bitbucket.org/hgdfhdfgd/test/downloads/new_image2.jpg$all -||bitbucket.org/hgdfhdfgd/test/downloads/new_image2.jpg?14461721$all -||bitbucket.org/inseller31/loverskit1/downloads/fort.rar$all -||bitbucket.org/it-alert-2023/update/downloads/sns_24.apk$all -||bitbucket.org/jhjhhjhjjhhj/regge/downloads/f%d0%bertnit%d0%b5_h%d0%a1.rar$all -||bitbucket.org/jwgo-software/software_good/downloads/svcpjuhbt.exe$all -||bitbucket.org/lucianoeasy1/whythefuckareutryingtotrackthishttpdebuggerlol/raw/67c59c70dfb800fa2bf21b3217e2485221c20428/fund.exe$all -||bitbucket.org/miryp/gasgqw/downloads/ddmc.txt$all -||bitbucket.org/myworkescxz/meyca/downloads/soft.rar$all -||bitbucket.org/neironner/app/downloads/appwesoft.rar$all -||bitbucket.org/neonbatsv4/neonbats2/downloads/neonbatsloader.rar$all -||bitbucket.org/o1lov/repo1lov/downloads/kidi.rar$all -||bitbucket.org/osaka123/mahoa1/downloads/suburbanskamacite.exe$all -||bitbucket.org/pavelalekseev11/346346/downloads/socks5-clean.exe$all -||bitbucket.org/rpvpov0nqt/rpvpov0nqt/downloads/fortnite_hack.rar$all -||bitbucket.org/rpvpov0nqt/rpvpov0nqt/downloads/new_kiddions.rar$all -||bitbucket.org/rpvpov0nqt/rpvpov0nqt/downloads/roblox_doors_src.rar$all -||bitbucket.org/samesaaa/123/downloads/tjeajweeeh.exe$all -||bitbucket.org/sdfsfew/abbas-ksdmspaod/downloads/r28juniosost.txt$all -||bitbucket.org/sdfsfew/remcos/downloads/25.txt$all -||bitbucket.org/sdfsfew/remcos/downloads/26.txt$all -||bitbucket.org/sdfsfew/remcos/downloads/27.txt$all -||bitbucket.org/sdfsfew/remcos/downloads/28.txt$all -||bitbucket.org/shgz2/sghz3/downloads/fortnie_hack.rar$all -||bitbucket.org/shgz2/sghz3/downloads/kiddions_mod_menu.rar$all -||bitbucket.org/slack-files/windows/downloads/siacksetupwin.iso$all -||bitbucket.org/softwarefiles/fulldownloadhere/downloads/main_setups_full_version.rar$all -||bitbucket.org/tautara-dwnl/download/downloads/kiddions_menu.rar$all -||bitbucket.org/tautaracheats-dwnld/tautaracheats/downloads/fortnite_cheat.rar$all -||bitbucket.org/tautata-hacks/download/downloads/kiddions_menu.rar$all -||bitbucket.org/testing77777/appdevlompent55555555/downloads/m5traider.exe$all -||bitbucket.org/testing77777/appdevlompent55555555/downloads/v2.exe$all -||bitbucket.org/valentinomaseratti/symphitems/downloads/passw_items_applicationsetupfile14.1.rar$all -||bitbucket.org/wavelength54/topu/downloads/was.ps1$all -||bitbucket.org/wfwfwe2/2/downloads/softinstall.rar$all -||bitbucket.org/workker300066/partners/downloads/project_8.exe$all -||bitbucket.org/worldofsoft1/soft/downloads/soft.rar$all -||bitbucket.org/zesoftwares/zesoft/downloads/zesoftapp.rar$all -||blog.tsrv1.ws/1.exe$all -||blog.tsrv1.ws/11.exe$all -||blog.tsrv1.ws/a$all -||blog.tsrv1.ws/a.exe$all -||blog.tsrv1.ws/aa$all -||blog.tsrv1.ws/aaa.exe$all -||blog.tsrv1.ws/b$all -||blog.tsrv1.ws/bb$all -||blog.tsrv1.ws/bbb$all -||blog.tsrv1.ws/c$all -||blog.tsrv1.ws/cc$all -||blog.tsrv1.ws/ccc$all -||blog.tsrv1.ws/delta_$all -||blog.tsrv1.ws/m.exe$all -||blog.tsrv1.ws/newtpp.exe$all -||blog.tsrv1.ws/npp.exe$all -||blog.tsrv1.ws/nxmr.exe$all -||blog.tsrv1.ws/o.exe$all -||blog.tsrv1.ws/pei.exe$all -||blog.tsrv1.ws/peinf.exe$all -||blog.tsrv1.ws/pi.exe$all -||blog.tsrv1.ws/pp.exe$all -||blog.tsrv1.ws/r.exe$all -||blog.tsrv1.ws/s.exe$all -||blog.tsrv1.ws/t.exe$all -||blog.tsrv1.ws/t1.exe$all -||blog.tsrv1.ws/t2.exe$all -||blog.tsrv1.ws/tdrpload.exe$all -||blog.tsrv1.ws/tpeinf.exe$all -||blog.tsrv1.ws/tt.exe$all -||blog.tsrv1.ws/twizt/2$all -||blog.tsrv1.ws/twizt/3$all -||blog.tsrv1.ws/twztl.exe$all -||cd.textfiles.com/hmatrix/data/hack1226.exe$all -||cdn.glitch.global/46d5c5db-3dcf-40b7-9747-10abbec96aee/fabtronics%20rfq%20for%20parts%20ti%20pn%20urgent%e2%80%aef%cd%8fd%cd%8fp%cd%8f..7z?v=1719473909542$all -||cfs5.tistory.com/upload_control/download.blog?fhandle=ymxvzzcxmzyyqgzzns50axn0b3j5lmnvbtovyxr0ywnolzavmtqwmdawmdawmdawlmv4zq%3d%3d&filename=crack-pro20.exe$all -||chiptune.com/razor/rzr-winner_intro.zip$all -||cmp5itpp9h30577inogg.tsrv1.ws/1.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/11.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/a$all -||cmp5itpp9h30577inogg.tsrv1.ws/a.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/aa$all -||cmp5itpp9h30577inogg.tsrv1.ws/aaa.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/b$all -||cmp5itpp9h30577inogg.tsrv1.ws/bb$all -||cmp5itpp9h30577inogg.tsrv1.ws/bbb$all -||cmp5itpp9h30577inogg.tsrv1.ws/c$all -||cmp5itpp9h30577inogg.tsrv1.ws/cc$all -||cmp5itpp9h30577inogg.tsrv1.ws/ccc$all -||cmp5itpp9h30577inogg.tsrv1.ws/delta_$all -||cmp5itpp9h30577inogg.tsrv1.ws/m.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/newtpp.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/npp.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/nxmr.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/o.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/pei.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/peinf.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/pi.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/pp.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/r.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/s.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/t.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/t1.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/t2.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/tdrpload.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/tpeinf.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/tt.exe$all -||cmp5itpp9h30577inogg.tsrv1.ws/twizt/2$all -||cmp5itpp9h30577inogg.tsrv1.ws/twizt/3$all -||cmp5itpp9h30577inogg.tsrv1.ws/twztl.exe$all -||codeload.github.com/drakeo03/rbxfpsunlocker-x64-hotfix1/zip/refs/heads/main$all -||codeload.github.com/meteoradminz/hidden-tear/zip/master$all -||codeload.github.com/unlockteame/unlimited/zip/refs/heads/main$all -||community.tsrv1.ws/1.exe$all -||community.tsrv1.ws/11.exe$all -||community.tsrv1.ws/a$all -||community.tsrv1.ws/a.exe$all -||community.tsrv1.ws/aa$all -||community.tsrv1.ws/aaa.exe$all -||community.tsrv1.ws/b$all -||community.tsrv1.ws/bb$all -||community.tsrv1.ws/bbb$all -||community.tsrv1.ws/c$all -||community.tsrv1.ws/cc$all -||community.tsrv1.ws/ccc$all -||community.tsrv1.ws/delta_$all -||community.tsrv1.ws/m.exe$all -||community.tsrv1.ws/newtpp.exe$all -||community.tsrv1.ws/npp.exe$all -||community.tsrv1.ws/nxmr.exe$all -||community.tsrv1.ws/o.exe$all -||community.tsrv1.ws/pei.exe$all -||community.tsrv1.ws/peinf.exe$all -||community.tsrv1.ws/pi.exe$all -||community.tsrv1.ws/pp.exe$all -||community.tsrv1.ws/r.exe$all -||community.tsrv1.ws/s.exe$all -||community.tsrv1.ws/t.exe$all -||community.tsrv1.ws/t1.exe$all -||community.tsrv1.ws/t2.exe$all -||community.tsrv1.ws/tdrpload.exe$all -||community.tsrv1.ws/tpeinf.exe$all -||community.tsrv1.ws/tt.exe$all -||community.tsrv1.ws/twizt/2$all -||community.tsrv1.ws/twizt/3$all -||community.tsrv1.ws/twztl.exe$all -||cpanel.tsrv1.ws/1.exe$all -||cpanel.tsrv1.ws/11.exe$all -||cpanel.tsrv1.ws/a$all -||cpanel.tsrv1.ws/a.exe$all -||cpanel.tsrv1.ws/aa$all -||cpanel.tsrv1.ws/aaa.exe$all -||cpanel.tsrv1.ws/b$all -||cpanel.tsrv1.ws/bb$all -||cpanel.tsrv1.ws/bbb$all -||cpanel.tsrv1.ws/c$all -||cpanel.tsrv1.ws/cc$all -||cpanel.tsrv1.ws/ccc$all -||cpanel.tsrv1.ws/delta_$all -||cpanel.tsrv1.ws/m.exe$all -||cpanel.tsrv1.ws/newtpp.exe$all -||cpanel.tsrv1.ws/npp.exe$all -||cpanel.tsrv1.ws/nxmr.exe$all -||cpanel.tsrv1.ws/o.exe$all -||cpanel.tsrv1.ws/pei.exe$all -||cpanel.tsrv1.ws/peinf.exe$all -||cpanel.tsrv1.ws/pi.exe$all -||cpanel.tsrv1.ws/pp.exe$all -||cpanel.tsrv1.ws/r.exe$all -||cpanel.tsrv1.ws/s.exe$all -||cpanel.tsrv1.ws/t.exe$all -||cpanel.tsrv1.ws/t1.exe$all -||cpanel.tsrv1.ws/t2.exe$all -||cpanel.tsrv1.ws/tdrpload.exe$all -||cpanel.tsrv1.ws/tpeinf.exe$all -||cpanel.tsrv1.ws/tt.exe$all -||cpanel.tsrv1.ws/twizt/2$all -||cpanel.tsrv1.ws/twizt/3$all -||cpanel.tsrv1.ws/twztl.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/1.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/11.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/a$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/a.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/aa$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/aaa.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/b$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/bb$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/bbb$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/c$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/cc$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/ccc$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/delta_$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/m.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/newtpp.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/npp.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/nxmr.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/o.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/pei.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/peinf.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/pi.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/pp.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/r.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/s.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/t.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/t1.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/t2.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/tdrpload.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/tpeinf.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/tt.exe$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/twizt/2$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/twizt/3$all -||d166ab3b-91ab-410f-a50d-c702fa55858d.random.tsrv1.ws/twztl.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/1.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/11.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/a$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/a.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/aa$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/aaa.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/b$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/bb$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/bbb$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/c$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/cc$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/ccc$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/delta_$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/m.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/newtpp.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/npp.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/nxmr.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/o.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/pei.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/peinf.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/pi.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/pp.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/r.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/s.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/t.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/t1.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/t2.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/tdrpload.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/tpeinf.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/tt.exe$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/twizt/2$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/twizt/3$all -||d38c6492-db8a-468e-9680-b62c6443b8b0.random.tsrv1.ws/twztl.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/1.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/11.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/a$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/a.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/aa$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/aaa.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/b$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/bb$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/bbb$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/c$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/cc$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/ccc$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/delta_$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/m.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/newtpp.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/npp.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/nxmr.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/o.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/pei.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/peinf.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/pi.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/pp.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/r.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/s.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/t.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/t1.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/t2.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/tdrpload.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/tpeinf.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/tt.exe$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/twizt/2$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/twizt/3$all -||de91e0c0-23c2-457f-9d5d-21e0ce13ac57.random.tsrv1.ws/twztl.exe$all -||dfmtjmptskr.tsrv1.ws/1.exe$all -||dfmtjmptskr.tsrv1.ws/11.exe$all -||dfmtjmptskr.tsrv1.ws/a$all -||dfmtjmptskr.tsrv1.ws/a.exe$all -||dfmtjmptskr.tsrv1.ws/aa$all -||dfmtjmptskr.tsrv1.ws/aaa.exe$all -||dfmtjmptskr.tsrv1.ws/b$all -||dfmtjmptskr.tsrv1.ws/bb$all -||dfmtjmptskr.tsrv1.ws/bbb$all -||dfmtjmptskr.tsrv1.ws/c$all -||dfmtjmptskr.tsrv1.ws/cc$all -||dfmtjmptskr.tsrv1.ws/ccc$all -||dfmtjmptskr.tsrv1.ws/delta_$all -||dfmtjmptskr.tsrv1.ws/m.exe$all -||dfmtjmptskr.tsrv1.ws/newtpp.exe$all -||dfmtjmptskr.tsrv1.ws/npp.exe$all -||dfmtjmptskr.tsrv1.ws/nxmr.exe$all -||dfmtjmptskr.tsrv1.ws/o.exe$all -||dfmtjmptskr.tsrv1.ws/pei.exe$all -||dfmtjmptskr.tsrv1.ws/peinf.exe$all -||dfmtjmptskr.tsrv1.ws/pi.exe$all -||dfmtjmptskr.tsrv1.ws/pp.exe$all -||dfmtjmptskr.tsrv1.ws/r.exe$all -||dfmtjmptskr.tsrv1.ws/s.exe$all -||dfmtjmptskr.tsrv1.ws/t.exe$all -||dfmtjmptskr.tsrv1.ws/t1.exe$all -||dfmtjmptskr.tsrv1.ws/t2.exe$all -||dfmtjmptskr.tsrv1.ws/tdrpload.exe$all -||dfmtjmptskr.tsrv1.ws/tpeinf.exe$all -||dfmtjmptskr.tsrv1.ws/tt.exe$all -||dfmtjmptskr.tsrv1.ws/twizt/2$all -||dfmtjmptskr.tsrv1.ws/twizt/3$all -||dfmtjmptskr.tsrv1.ws/twztl.exe$all -||dhnconstrucciones.com.ar/wp-admin/sm02zsvdywdotb7rql/$all -||distro.ibiblio.org/slitaz/sources/packages/c/cross-compiler-armv6l.tar.bz2$all -||dl.dropboxusercontent.com/scl/fi/4887fro36c2bdkkhpysx6/cheatrun_is.zip?rlkey=kxh3zmbphzh2pwgyuto8f3vcb&st=m241yvsn&dl=0$all -||dl.dropboxusercontent.com/scl/fi/oy8858iq8qolsts57wfbt/cheatrun.zip?rlkey=dfm1xos8di7odkk5j9krzlo02&dl=0$all -||dl.dropboxusercontent.com/scl/fi/wowpg1oatbah46366ug5n/cheatrun_is.zip?rlkey=dbrm55ylg3gy4bby3zf9zxfih&st=0mn4yho2&dl=0$all -||dl.dropboxusercontent.com/scl/fi/xhthjkifvacjtpy7t1tkw/cheatrun_ue.zip?rlkey=43mau4b0oc0kdil7umfheckw0&st=7ze80qza&dl=0$all -||dl.dropboxusercontent.com/scl/fi/zbqs6n2km8t0rlotua5l6/cheatrun_u.zip?rlkey=ha6cslkjll8ov6exhi5lw8sxb&st=5wmi12d1&dl=0$all -||dl.packetstormsecurity.net/dos/nemesy13.zip$all -||docs.google.com/uc?export=download&id=11mi132ptx9rjlbgex4ep7qabji8v7urn$all -||docs.google.com/uc?export=download&id=15zgeesmda5wyugsfzvjg2gwkc_fgqotw$all -||docs.google.com/uc?export=download&id=1ctmywlj5wouiug1wgizy3ke7yj1u0yor&revid=0b_t0-zked1mgagxwmxcwywq5q0q1uk1uoxcwaup6l2ovmtdjpq$all -||docs.google.com/uc?export=download&id=1dc4iab_hlm_nomzlujetqj0bazv82w9u$all -||docs.google.com/uc?export=download&id=1fpbbdq9oxyiioquxf15ovsfrbxjdxw62$all -||docs.google.com/uc?export=download&id=1gv_nk9llqw4fxudo-khja7nuuj1kevvw&revid=0b7zefp-g6n7vm0zhowo4be9pvus4mmh0ymxvd3r6zlu3ylznpq$all -||docs.google.com/uc?export=download&id=1h_dyp_d5lst4akyf2qezxl7j1scvbtvs&revid=0b5thckui5i0mdk5moelbnm9vuhnydvjnvwpyq01vrg5xvwhrpq$all -||docs.google.com/uc?export=download&id=1iesqruzogl-axgunc2woeuhkvlrnydcd$all -||docs.google.com/uc?export=download&id=1j7ltdpl8xs6-3tgdctojda2tytpkixk8$all -||docs.google.com/uc?export=download&id=1jpl-uouydm5hypqm67uokyddrblbpxvw&revid=0b7zpiprmoc5ubhpwclq0cxdyte5vwtrbymnidznhtgm3bzvrpq$all -||docs.google.com/uc?export=download&id=1jxxc4l7icdzs0zx0iz7hayfglrujm8ro$all -||docs.google.com/uc?export=download&id=1m1lfr5wjwb9drg6ei-ycwhailqyfrwni$all -||docs.google.com/uc?export=download&id=1m8jszvq-ztfrul7vgsb6q-n3ftgnkbdj&revid=0bxrhybf9__wnmgjlnmxmunzznlu0v204azc4edmzcep6a0hzpq$all -||docs.google.com/uc?export=download&id=1qjelrqkppetcr9jqmqsmjr0vgbpipvrh$all -||docs.google.com/uc?export=download&id=1rvq8pgkasyh7eicu7wn2_qp6isv2y2wf$all -||docs.google.com/uc?export=download&id=1sbd1rnw8luztjmsh6gdlzupvyupbopa0&revid=0b3yyjts_woklr2vnyxvqohlidxbxn1l2wwjntxfnwvi5v0h3pq$all -||docs.google.com/uc?export=download&id=1the4ifkgjuyy5svnu6u_kmffxomo6y55$all -||docs.google.com/uc?export=download&id=1tilqozot07vylvdmmsfs7ia452jwhktj&revid=0b7gsmqzks4xkcdjcwhuvatj2qvlvchnmnnovu2ldzstek2jzpq$all -||docs.google.com/uc?export=download&id=1uh8squz6doag3ywzn7rpx0k5jfze9r6d$all -||docs.google.com/uc?export=download&id=1v3jbapne_tx5mxdrzl6653nhp0vavggc$all -||docs.google.com/uc?export=download&id=1y7uppv_adkponakwwz3xh8fh2au_zd1q$all -||docs.google.com/uc?export=download&id=1ygn4gkmy9musdp_lgnpyjjh6rskt39vp&revid=0b8rbgp2bpeofmk5ta3n3mgjtefbzdevwtk5wwhpjd3yruejjpq$all -||docs.tsrv1.ws/1.exe$all -||docs.tsrv1.ws/11.exe$all -||docs.tsrv1.ws/a$all -||docs.tsrv1.ws/a.exe$all -||docs.tsrv1.ws/aa$all -||docs.tsrv1.ws/aaa.exe$all -||docs.tsrv1.ws/b$all -||docs.tsrv1.ws/bb$all -||docs.tsrv1.ws/bbb$all -||docs.tsrv1.ws/c$all -||docs.tsrv1.ws/cc$all -||docs.tsrv1.ws/ccc$all -||docs.tsrv1.ws/delta_$all -||docs.tsrv1.ws/m.exe$all -||docs.tsrv1.ws/newtpp.exe$all -||docs.tsrv1.ws/npp.exe$all -||docs.tsrv1.ws/nxmr.exe$all -||docs.tsrv1.ws/o.exe$all -||docs.tsrv1.ws/pei.exe$all -||docs.tsrv1.ws/peinf.exe$all -||docs.tsrv1.ws/pi.exe$all -||docs.tsrv1.ws/pp.exe$all -||docs.tsrv1.ws/r.exe$all -||docs.tsrv1.ws/s.exe$all -||docs.tsrv1.ws/t.exe$all -||docs.tsrv1.ws/t1.exe$all -||docs.tsrv1.ws/t2.exe$all -||docs.tsrv1.ws/tdrpload.exe$all -||docs.tsrv1.ws/tpeinf.exe$all -||docs.tsrv1.ws/tt.exe$all -||docs.tsrv1.ws/twizt/2$all -||docs.tsrv1.ws/twizt/3$all -||docs.tsrv1.ws/twztl.exe$all -||drive.google.com/u/0/uc?id=1apbgg8cyhbx3l2qaezfjnk9krbmumfbf&export=download$all -||drive.google.com/u/0/uc?id=1prfxr7v6xwfvjnk9nlcnb5u0leqydzlg&export=download/?q=$all -||drive.google.com/u/0/uc?id=1r8ha5a1gtjvb-3-1be7hpndhbv5yyonu&export=download$all -||drive.google.com/u/0/uc?id=1txdqckk-lg72vbxwzaisonda3smn8tg8&export=download$all -||drive.google.com/u/0/uc?id=1vi2wqh_zcpd3b6thl70mdflfywpajesa&export=download$all -||drive.google.com/u/1/uc?id=1uq00qoghsvrdaayru6cjrd9pctx-dknv&export=download$all -||drive.google.com/uc?export=download&confirm=no_antivirus&id=1-5tfbyc52tepabxjdszg1dcqgaizf0m6$all -||drive.google.com/uc?export=download&confirm=t&id=145b1fbjtyee3w1rjsazo7hzcoiiaxzum&uuid=eb581596-9566-4a21-b3b6-e6909eb42ff6&at=akkf8vzrltviqrn7wljfjcwisgcc:1683793107077$all -||drive.google.com/uc?export=download&id=105fjezm0xcr8st4tqhremjggzkld2xw_$all -||drive.google.com/uc?export=download&id=10lygpyju_dlg3x6r9oslzgblshakstl-$all -||drive.google.com/uc?export=download&id=10qzzrvc0u1j3ha4ajh6xb64gvyaxwhag$all -||drive.google.com/uc?export=download&id=11cbyky_wegqjut6afr8jannw7vub-xxf$all -||drive.google.com/uc?export=download&id=11qhsna1hbygbdtbstnrv9vibk7ntjhpi$all -||drive.google.com/uc?export=download&id=12gxtnsqsjokneqetkvk1a99fni-es6ir$all -||drive.google.com/uc?export=download&id=12ma_yvbmprts6e_vkfnmwikrnwsarqbw$all -||drive.google.com/uc?export=download&id=12rmvuwgpj0dzbb3haoaww2lviavhvb4r$all -||drive.google.com/uc?export=download&id=12zhu5cy9mntlhoz9fq7v9q_-xi-iozmj$all -||drive.google.com/uc?export=download&id=16c6v-drp1lkrsjwem7dh7eidsn61_1xl$all -||drive.google.com/uc?export=download&id=171-yky-j89krighojrmmetm69vbmd5m4$all -||drive.google.com/uc?export=download&id=189v0fzraz5hlsqtg0u3kqk-8sytfofju$all -||drive.google.com/uc?export=download&id=18hegse3o1_awwqlninxdgqmaqezmqqeu$all -||drive.google.com/uc?export=download&id=18opq2_cuhgvezldmmbuzkt3tp3u8sgr_$all -||drive.google.com/uc?export=download&id=18s4yootwkyvfb1r2yuaisjgn1btht30d$all -||drive.google.com/uc?export=download&id=18x-_ydaarhwgayekdpgl9e53aixtkfp-$all -||drive.google.com/uc?export=download&id=19nonxskhmwbvfxpr2ccmwd9xrhz1ldco$all -||drive.google.com/uc?export=download&id=1_gv_k0ynz9_n6h6n7bvistk9oi2njezj$all -||drive.google.com/uc?export=download&id=1_ldguopt2cg7fblntw3ltxgtxqtmlflc$all -||drive.google.com/uc?export=download&id=1alq8r5tnr6wwiftqa3l6d9fymv7y0g9m$all -||drive.google.com/uc?export=download&id=1b3zgfh-ofoq4nkifk7j0manbu5aqvhet$all -||drive.google.com/uc?export=download&id=1b6etw70krbjunvsme7jlxtce5hzmycj6$all -||drive.google.com/uc?export=download&id=1b6t1mjnjcvndcy-mdqq0neqrbocqyju4$all -||drive.google.com/uc?export=download&id=1cpyrauziryvuorqqdqezflraxwfj7xvq$all -||drive.google.com/uc?export=download&id=1ctnmusyjuqkrxgvd6uph5ttb4-sb1zxr$all -||drive.google.com/uc?export=download&id=1cz1lqyxis4wvr7nlc71ukekxyhj5xu-l$all -||drive.google.com/uc?export=download&id=1d-wca9siby574mvzkelwe3wwh0qsiuuk$all -||drive.google.com/uc?export=download&id=1d71as2f80cm_fx4vfjzlpdeppf58dly0$all -||drive.google.com/uc?export=download&id=1da5k7bzywtuvhcms8_xqy0nwlhnmiqaq$all -||drive.google.com/uc?export=download&id=1dg0exynyytilmwvdp3v1denuhlxqrosz$all -||drive.google.com/uc?export=download&id=1dh3my7h6mtgih5btwmhre7gu6wkxw4ny$all -||drive.google.com/uc?export=download&id=1dw-ezm7o_wfctzz8fcnjwpag5oikf-xt$all -||drive.google.com/uc?export=download&id=1e2y5yppu_zjj4o3wmuo-2j8n9lbthkzc$all -||drive.google.com/uc?export=download&id=1etpmpb2shvuny5dxj5awfpxklxqpbzgx$all -||drive.google.com/uc?export=download&id=1ff79_1umnp7iyibpg169gupnkiz0zfr_$all -||drive.google.com/uc?export=download&id=1fhqpevblkipshqumjmsbzeetdzhzxv-j$all -||drive.google.com/uc?export=download&id=1gfn3lqd1rvybut4ha-ldl92wt8ysrzfc$all -||drive.google.com/uc?export=download&id=1gvnzexvvs3vpv0-ihflwnmzmhij3qqly$all -||drive.google.com/uc?export=download&id=1gzckgqlufkfpmlzsd4dlrp8-nrdeju1w$all -||drive.google.com/uc?export=download&id=1hditwve1kadzeycbldxttxi4mmhddgyp$all -||drive.google.com/uc?export=download&id=1heka7sgmbcessdhxtvmfwxownz7sipbb$all -||drive.google.com/uc?export=download&id=1i33affjfkkztyuz_nusrz4jqs45gwzjs$all -||drive.google.com/uc?export=download&id=1idr2kutygbqp_loxqdocuzvjalp19zpp$all -||drive.google.com/uc?export=download&id=1ifvzub1blhmwsirshbe2wu5b1tus3ls-$all -||drive.google.com/uc?export=download&id=1ijmhpwvvwh5vty_bunhlmm4vuqncbavl$all -||drive.google.com/uc?export=download&id=1jgvnke0-oihe5-iqu772j07jweadd8cq$all -||drive.google.com/uc?export=download&id=1jmvlc342a-9khhwqofk1aticown34bxe$all -||drive.google.com/uc?export=download&id=1js_0klwabntwltixvmlzwimesfgs3lwk$all -||drive.google.com/uc?export=download&id=1jvqaqhw3wrdy09sf69rsggxmk_jl7lz5$all -||drive.google.com/uc?export=download&id=1k0bqhrtnu4v1yexoni5p1utyjuohmfzm$all -||drive.google.com/uc?export=download&id=1ktbjyxwsalf73tp79ejtexdnkcogv_e4$all -||drive.google.com/uc?export=download&id=1l-zoyasmfcwfa655dud7ekudjq3ywquk$all -||drive.google.com/uc?export=download&id=1lhnnwoydntgqibsykxwgd32s5xftxvfh$all -||drive.google.com/uc?export=download&id=1lrviuk1wka4di3qh7ach-b7m1ics2hbp$all -||drive.google.com/uc?export=download&id=1mpo2w6zanpe_-zbjgplcpea3hmowavkm$all -||drive.google.com/uc?export=download&id=1mtywxnmyuae6tez8rxi5wguzpkogpolg$all -||drive.google.com/uc?export=download&id=1n8_s6gijerearczwh74blkygodig64eo$all -||drive.google.com/uc?export=download&id=1nswywj8clchrca8qfprulk146knvbj_z$all -||drive.google.com/uc?export=download&id=1nw1gmzg6lwtuhs0tte969xcfpp9_dc5q$all -||drive.google.com/uc?export=download&id=1nx37rcyoclifch3waaddhuzclyj4ouue$all -||drive.google.com/uc?export=download&id=1o9jg3oqyewncoptigwscdbtfmvtfqygj$all -||drive.google.com/uc?export=download&id=1oe1ixppk9tdxfmairsjhsacdgh2litag$all -||drive.google.com/uc?export=download&id=1osqxhd1ncdyo-hhavradwbm9_itb2p49$all -||drive.google.com/uc?export=download&id=1oxpqeutyreby186exx4zeofyz0rjocsp$all -||drive.google.com/uc?export=download&id=1p5myromjprou5-vehst_hpzb7pbwagjw$all -||drive.google.com/uc?export=download&id=1pjt23vhtwzyzypmtn3-laqctzzr5vb5d$all -||drive.google.com/uc?export=download&id=1psjfkavxoi-3yv-87eskdpuwzjd5jomd$all -||drive.google.com/uc?export=download&id=1pssupirwdhnwaztrwz6_7dw9r4h_zau9$all -||drive.google.com/uc?export=download&id=1pvgvrcomccqllrfbaaxotcp-gyyh3onz$all -||drive.google.com/uc?export=download&id=1q2fszfukk1d8mxwia7wy6u4fse2vz07h$all -||drive.google.com/uc?export=download&id=1qxwff0k49bjdhwzotirkvqlqhebzgphg$all -||drive.google.com/uc?export=download&id=1re9cqjrafya6wcb5e0zcolwdorvsf9pi$all -||drive.google.com/uc?export=download&id=1rfsmrzeanvap2tnmtwrptlepwarwlkge$all -||drive.google.com/uc?export=download&id=1rqhgsr779gyzvi15p-bmkx8txq4bj-yi$all -||drive.google.com/uc?export=download&id=1rsqnkyvcaein5m-gskl8coyuh8w5xrbd$all -||drive.google.com/uc?export=download&id=1satmexzn3qpvqzfxnc-5dtnnn8lihdxh$all -||drive.google.com/uc?export=download&id=1sjm5t0ktlepibtv3kgaousspnw3zonom$all -||drive.google.com/uc?export=download&id=1smjsns4djerxm11i8rx6ldttpsynidio$all -||drive.google.com/uc?export=download&id=1sqvm1xsoranfnvqst_kkdmn8yhgulm4k$all -||drive.google.com/uc?export=download&id=1t36pjqs33b0q_k78zbmxjrlbrzkssrbu$all -||drive.google.com/uc?export=download&id=1tdc0chqeg5vcszu_xhie9bfwlvdsowra$all -||drive.google.com/uc?export=download&id=1u-vaalebjnomuhbyimsdjqctjqfyiwna$all -||drive.google.com/uc?export=download&id=1udpahhkabfdjz32b558xh_lwxs0snowc$all -||drive.google.com/uc?export=download&id=1ugl_xjshxerwwbal1fatflznekorqco5$all -||drive.google.com/uc?export=download&id=1uiaxivybdf4ag1xr9v_kun9qf6rtg8wl$all -||drive.google.com/uc?export=download&id=1uqg1nqa_xwers1_ysieimfiz-pnax2qw$all -||drive.google.com/uc?export=download&id=1uqhwvmx2487zzfsem60otqi7j9mairnl$all -||drive.google.com/uc?export=download&id=1ur2ibphmxipkxb5ernf34acfzzj2jga4$all -||drive.google.com/uc?export=download&id=1uygnpwzzyzn2rodsrimg0-sloxy_letg$all -||drive.google.com/uc?export=download&id=1uzj6rbkjyyfcvpddyaduabxfay7w4_9w$all -||drive.google.com/uc?export=download&id=1veoquekmvfj3rhpvfogdclmsu31vpjuz$all -||drive.google.com/uc?export=download&id=1vi1xsx54rcwqzgzvb-2oav9l9siqpaip$all -||drive.google.com/uc?export=download&id=1vsur0eqtbms6bvnqcsfo8rxzvp3vfqnd$all -||drive.google.com/uc?export=download&id=1w6j0xeptoliyrblijhnxbm_qnnoptzfw$all -||drive.google.com/uc?export=download&id=1wh77u66ujxr-ihxqfarkrqgrv-ngaoxe$all -||drive.google.com/uc?export=download&id=1wsqkirdngjlt8uu2lv9mzciks4my12jh$all -||drive.google.com/uc?export=download&id=1wuy2y3vbxibdfqcs6-kx96nocarzixfd$all -||drive.google.com/uc?export=download&id=1x2ottjaqouharvqcgs-lsggzqijws0hv$all -||drive.google.com/uc?export=download&id=1x6cd0z6l79ciefoo627uiws_6yscm_xn$all -||drive.google.com/uc?export=download&id=1x7znle2rmcofu1ki717cjcnxfgpw2whl$all -||drive.google.com/uc?export=download&id=1xjytwrf1rsolsgkswyhu7kbggg9asbaz$all -||drive.google.com/uc?export=download&id=1xlvjhhrjt6siivltqjcfbcc61ijiddpb$all -||drive.google.com/uc?export=download&id=1xs8pro01qbtxyw-svqnnkvejhdsdmydt$all -||drive.google.com/uc?export=download&id=1xvwttdidff3eukgariw1lyrdoqyisrvt$all -||drive.google.com/uc?export=download&id=1yfqtugahqhqrulwugdekeavffktsl8ci$all -||drive.google.com/uc?export=download&id=1yydiodtw09banou13ro8ielf9rcmljxy$all -||drive.google.com/uc?export=download&id=1yzeorlwdwke15en4v7t0ymp96mb-kluq$all -||drive.google.com/uc?export=download&id=1z7qhwcozjwehksdhw-yuivac2jzwjqia$all -||drive.google.com/uc?export=download&id=1zqzivoxid6wgvjstzd0lg2vxnpnc-puf$all -||drive.google.com/uc?export=download&id=1zte2ty_wldnnepgomzi6zqqad7moc4kk$all -||drive.google.com/uc?id=17bsqdb9hpmi35bdhkfrcxc41lgj02zd3&export=download$all -||drive.google.com/uc?id=1a7jwdzayvxw_d3cgv_n7tjf4sty3ufor&export=download$all -||drive.google.com/uc?id=1ekcinmskddduir6reyjrjyzvcyw-1idj&export=download$all -||drive.google.com/uc?id=1gwsdcu5mxxo0oq3kiaerlwqqcpxbg74p&export=download&authuser=0$all -||drive.google.com/uc?id=1kavuowl0c1mms_vtxozw-cwq7hwto0el&export=download&authuser=0$all -||drive.google.com/uc?id=1nmo38gwdllgzyd-hnhpvh9gq81wetj3x&export=download$all -||drive.google.com/uc?id=1q5cjdgzphbzwuklpcb-lvnv88rrbfve_&export=download&authuser=0$all -||drive.google.com/uc?id=1qvag-koyy2l8h5lwvaeaw35hnuwbm3xo$all -||drive.google.com/uc?id=1re8ewllfl3pjf1m1ywjwjwbitzqqmhjs&export=download$all -||drive.google.com/uc?id=1wmgaxnwpvqnfdpprpe__0imvwnk8jssb&export=download&authuser=0$all -||drive.google.com/uc?id=1xoop133uf_qyhg-61tr5l1domkwkn0j5&export=download&authuser=0$all -||drive.google.com/uc?id=1ydvywxcdyt0xtr6bhehejast9uqv9vjn&export=download&authuser=0$all -||drive.google.com/uc?id=1ym8akclpz20qhuwav7_en4qcpezs20i2$all -||eoufaoeuhoauengi.su/1.exe$all -||eoufaoeuhoauengi.su/11$all -||eoufaoeuhoauengi.su/11.exe$all -||eoufaoeuhoauengi.su/111$all -||eoufaoeuhoauengi.su/222$all -||eoufaoeuhoauengi.su/33$all -||eoufaoeuhoauengi.su/a$all -||eoufaoeuhoauengi.su/a.exe$all -||eoufaoeuhoauengi.su/aa$all -||eoufaoeuhoauengi.su/aaa.exe$all -||eoufaoeuhoauengi.su/asec.exe$all -||eoufaoeuhoauengi.su/b$all -||eoufaoeuhoauengi.su/bb$all -||eoufaoeuhoauengi.su/bbb$all -||eoufaoeuhoauengi.su/c$all -||eoufaoeuhoauengi.su/c6$all -||eoufaoeuhoauengi.su/cc$all -||eoufaoeuhoauengi.su/ccc$all -||eoufaoeuhoauengi.su/m.exe$all -||eoufaoeuhoauengi.su/newtpp.exe$all -||eoufaoeuhoauengi.su/npp.exe$all -||eoufaoeuhoauengi.su/nxmr.exe$all -||eoufaoeuhoauengi.su/o.exe$all -||eoufaoeuhoauengi.su/pei.exe$all -||eoufaoeuhoauengi.su/peinf.exe$all -||eoufaoeuhoauengi.su/pi.exe$all -||eoufaoeuhoauengi.su/pp.exe$all -||eoufaoeuhoauengi.su/r.exe$all -||eoufaoeuhoauengi.su/s.exe$all -||eoufaoeuhoauengi.su/t.exe$all -||eoufaoeuhoauengi.su/t1.exe$all -||eoufaoeuhoauengi.su/t2.exe$all -||eoufaoeuhoauengi.su/tdrpload.exe$all -||eoufaoeuhoauengi.su/tpeinf.exe$all -||eoufaoeuhoauengi.su/tt.exe$all -||eoufaoeuhoauengi.su/twztl.exe$all -||f24-zfcloud.zdn.vn/17c4755d1d45ed1bb454/8703634058188758823$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/1.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/11.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/a$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/a.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/aa$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/aaa.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/b$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/bb$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/bbb$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/c$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/cc$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/ccc$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/delta_$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/m.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/newtpp.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/npp.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/nxmr.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/o.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/pei.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/peinf.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/pi.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/pp.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/r.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/s.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/t.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/t1.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/t2.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/tdrpload.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/tpeinf.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/tt.exe$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/twizt/2$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/twizt/3$all -||fd8a7ef9-faae-4c3c-814a-376eb024783e.random.tsrv1.ws/twztl.exe$all -||firebasestorage.googleapis.com/v0/b/ld2207-88703.appspot.com/o/ldmx2207?alt=media&token=ea4d3172-9ea9-4c03-96a7-2174419c6a1e$all -||firebasestorage.googleapis.com/v0/b/rodriakd-8413d.appspot.com/o/pe%2fp%20mio.txt?alt=media&token=330330d6-cbd5-4a10-a95d-bb839b673423$all -||free.360totalsecurity.com/totalsecurity/360ts_setup_mini_ww.peter.cpi202405_6.6.0.1060.exe$all -||fromthetrenchesworldreport.com/analytics/zy5ntk/$all -||github.com/20matrix77/2fts3/raw/main/386$all -||github.com/20matrix77/2fts3/raw/main/arm$all -||github.com/20matrix77/2fts3/raw/main/bots_mips$all -||github.com/20matrix77/2fts3/raw/main/disbot$all -||github.com/20matrix77/2fts3/raw/main/mips$all -||github.com/20matrix77/2fts3/raw/main/mpsl$all -||github.com/adrinnno/ptwis/raw/main/file_cbs_app_details_no-0923871691_xlsx.zip$all -||github.com/caonim2le/yournigas/raw/main/arm$all -||github.com/caonim2le/yournigas/raw/main/arm5$all -||github.com/caonim2le/yournigas/raw/main/arm6$all -||github.com/caonim2le/yournigas/raw/main/arm7$all -||github.com/caonim2le/yournigas/raw/main/m68k$all -||github.com/caonim2le/yournigas/raw/main/mips$all -||github.com/caonim2le/yournigas/raw/main/mpsl$all -||github.com/caonim2le/yournigas/raw/main/sh4$all -||github.com/caonim2le/yournigas/raw/main/x86_32$all -||github.com/caonim2le/yournigas/raw/main/x86_64$all -||github.com/coolismoney/laughing-octo-tribble/releases/download/v2/crazycore.exe$all -||github.com/coolismoney/laughing-octo-tribble/releases/download/v6/crazycore.exe$all -||github.com/cronusxd/update/releases/download/programa/universal.cheat.all.games.rar$all -||github.com/danclpford/snokm/raw/main/r41ns22024112491256_xml.zip$all -||github.com/delta-io/delta/files/15016110/delta.zip$all -||github.com/den4ikyt/spoofer/raw/main/hwid%20spoofer.rar$all -||github.com/dinsherman202/solid-lamp/releases/download/download/github.software.zip$all -||github.com/frexoff/efefwefwwf/raw/main/cock.exe$all -||github.com/frielandrews892/file/releases/download/file/file.zip$all -||github.com/frielandrews892/file/releases/download/installer/installer.exe$all -||github.com/fury-os/fury_kms/releases/download/v.1.6.0/furykms_v.1.6.0.zip$all -||github.com/grayinv/henidus/raw/main/transaction_end_ids_58788719853478_pdf.rar$all -||github.com/gretmeet/nbc938sdu42/raw/main/test.exe$all -||github.com/hackwardev/globalnet/raw/main/files/pc/igfxcuiservice%20module.exe$all -||github.com/hackwardev/globalnet/raw/main/files/pc/presentationfontcache.exe$all -||github.com/hackwardev/globalnet/raw/main/files/pc/user%20oobe%20broker.exe$all -||github.com/incoper887/tua/raw/main/build.exe$all -||github.com/jailtonoliveira301018/working/raw/main/visualizador.msi$all -||github.com/junlionserto/dfbhdfioughfdsiu/raw/main/poolsdnkjfdbndklsnfgb.exe$all -||github.com/junlionserto/dfgdbfgndbdsfbhry/raw/main/momsstiflersdgjboigfnbio.exe$all -||github.com/kampfkarren/roblox/files/15001743/roexec.zip$all -||github.com/komasinfo/idcb/raw/main/cbs_applcation_details_072602024_xlsx.rar$all -||github.com/kseniakucherksenia/.github.io/raw/main/cayv0deo9jst417.exe$all -||github.com/kyango01/steam/raw/main/soft.exe$all -||github.com/lidiyakamalova89/www/raw/main/ver.1.4.1.zip$all -||github.com/mazacoin/maza/releases/download/v0.16.3/maza-0.16.3-osx-unsigned.dmg$all -||github.com/mazacoin/maza/releases/download/v0.16.3/maza-0.16.3-win32-setup-unsigned.exe$all -||github.com/mazacoin/maza/releases/download/v0.16.3/maza-0.16.3-win64-setup-unsigned.exe$all -||github.com/mendoza1123/rgya/raw/main/transaction_error_details_file_981209_jpeg.rar$all -||github.com/moom825/discord-rat-2.0/raw/master/discord%20rat/resources/passwordstealer.dll$all -||github.com/moom825/discord-rat-2.0/raw/master/discord%20rat/resources/token%20grabber.dll$all -||github.com/mybay1/config/raw/main/advancedrun.exe$all -||github.com/mybay1/config/raw/main/disable_all_windows_security_notifications_for_all_users.reg$all -||github.com/mybay1/hellminer-win64/raw/main/hellminer.exe$all -||github.com/mybay1/hellminer-win64/raw/main/verus-solver.exe$all -||github.com/mybay1/nircmd-nircmd/raw/main/nircmd.exe$all -||github.com/neverhodeqqp/dskas77/raw/main/dsdasda.exe$all -||github.com/pbhhdf/12/raw/main/keepvid-pro_full2578.exe$all -||github.com/pidoras883/-/releases/download/huesos/ijerkoff.exe$all -||github.com/reporgu/fakado/raw/main/transaction_file_9812009_end_ids_yesbr5_pdf.rar$all -||github.com/riseme-origami/g/raw/main/build6_unencrypted.exe$all -||github.com/riseme-origami/g/raw/main/client-built.exe$all -||github.com/riseme-origami/g/raw/main/eszop.exe$all -||github.com/riseme-origami/g/raw/main/first.exe$all -||github.com/riseme-origami/g/raw/main/wefhrf.exe$all -||github.com/riseme-origami/g/raw/main/windows.exe$all -||github.com/runsim12/cleodf/raw/main/tran_id-details009192_end_ids_58788719853478_pdf.rar$all -||github.com/salatikochen/salatapps/archive/refs/heads/main.zip$all -||github.com/setthreadexecutionstate/modifieddiscordclient/raw/main/yar.exe$all -||github.com/sobaka212/n/releases/download/rr/ce0b953269c74bc.exe$all -||github.com/sobaka212/n/releases/download/rr/dcratbuild.exe$all -||github.com/ssslllap1/asdasd/raw/main/crypted.exe$all -||github.com/tedburke/commandcam/archive/refs/heads/master.zip$all -||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/ransomware/coronavirus.exe$all -||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/ransomware/cryptowall.exe$all -||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/ransomware/hive%20ransomware.exe$all -||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/ransomware/infinitycrypt.exe$all -||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/ransomware/jigsaw.exe$all -||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/ransomware/nomoreransom.exe$all -||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/ransomware/petya.a.exe$all -||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/ransomware/wannacry.exe$all -||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/trojan/000.exe$all -||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/trojan/destover.exe$all -||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/trojan/freeyoutubedownloader.exe$all -||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/trojan/memz.exe$all -||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/trojan/meredrop.exe$all -||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/trojan/noescape.exe$all -||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/trojan/redlinestealer.exe$all -||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/trojan/trojan.malpack.themida%20(anti%20vm).exe$all -||github.com/trevsglass/morna/raw/main/ref_ba0929399122_pdf.zip$all -||github.com/ustaxes/ustaxes/files/15378217/all.2023.tax.documents.zip$all -||github.com/ustaxes/ustaxes/files/15421286/2022and2023taxdocuments.zip$all -||github.com/xmrig/xmrig/releases/download/v6.10.0/xmrig-6.10.0-linux-static-x64.tar.gz$all -||help.tsrv1.ws/1.exe$all -||help.tsrv1.ws/11.exe$all -||help.tsrv1.ws/a$all -||help.tsrv1.ws/a.exe$all -||help.tsrv1.ws/aa$all -||help.tsrv1.ws/aaa.exe$all -||help.tsrv1.ws/b$all -||help.tsrv1.ws/bb$all -||help.tsrv1.ws/bbb$all -||help.tsrv1.ws/c$all -||help.tsrv1.ws/cc$all -||help.tsrv1.ws/ccc$all -||help.tsrv1.ws/delta_$all -||help.tsrv1.ws/m.exe$all -||help.tsrv1.ws/newtpp.exe$all -||help.tsrv1.ws/npp.exe$all -||help.tsrv1.ws/nxmr.exe$all -||help.tsrv1.ws/o.exe$all -||help.tsrv1.ws/pei.exe$all -||help.tsrv1.ws/peinf.exe$all -||help.tsrv1.ws/pi.exe$all -||help.tsrv1.ws/pp.exe$all -||help.tsrv1.ws/r.exe$all -||help.tsrv1.ws/s.exe$all -||help.tsrv1.ws/t.exe$all -||help.tsrv1.ws/t1.exe$all -||help.tsrv1.ws/t2.exe$all -||help.tsrv1.ws/tdrpload.exe$all -||help.tsrv1.ws/tpeinf.exe$all -||help.tsrv1.ws/tt.exe$all -||help.tsrv1.ws/twizt/2$all -||help.tsrv1.ws/twizt/3$all -||help.tsrv1.ws/twztl.exe$all -||ipfs.io/ipfs/bafybeihztxwimpjrjtlr3djk5sxcxnyiubceso2zkoijuplsccegiceqya/ngown.exe$all -||ipfs.io/ipfs/qmu99juvu4mweyuw7e6kkw8mheocjzoem5nueb87fdfpeh$all -||mail.sitefind.top:8888/247102099110965.dll$all -||mail.tsrv1.ws/1.exe$all -||mail.tsrv1.ws/11.exe$all -||mail.tsrv1.ws/a$all -||mail.tsrv1.ws/a.exe$all -||mail.tsrv1.ws/aa$all -||mail.tsrv1.ws/aaa.exe$all -||mail.tsrv1.ws/b$all -||mail.tsrv1.ws/bb$all -||mail.tsrv1.ws/bbb$all -||mail.tsrv1.ws/c$all -||mail.tsrv1.ws/cc$all -||mail.tsrv1.ws/ccc$all -||mail.tsrv1.ws/delta_$all -||mail.tsrv1.ws/m.exe$all -||mail.tsrv1.ws/newtpp.exe$all -||mail.tsrv1.ws/npp.exe$all -||mail.tsrv1.ws/nxmr.exe$all -||mail.tsrv1.ws/o.exe$all -||mail.tsrv1.ws/pei.exe$all -||mail.tsrv1.ws/peinf.exe$all -||mail.tsrv1.ws/pi.exe$all -||mail.tsrv1.ws/pp.exe$all -||mail.tsrv1.ws/r.exe$all -||mail.tsrv1.ws/s.exe$all -||mail.tsrv1.ws/t.exe$all -||mail.tsrv1.ws/t1.exe$all -||mail.tsrv1.ws/t2.exe$all -||mail.tsrv1.ws/tdrpload.exe$all -||mail.tsrv1.ws/tpeinf.exe$all -||mail.tsrv1.ws/tt.exe$all -||mail.tsrv1.ws/twizt/2$all -||mail.tsrv1.ws/twizt/3$all -||mail.tsrv1.ws/twztl.exe$all -||namphuctourist.com/tmp/1.exe$all -||nstools.tsrv1.ws/1.exe$all -||nstools.tsrv1.ws/11.exe$all -||nstools.tsrv1.ws/a$all -||nstools.tsrv1.ws/a.exe$all -||nstools.tsrv1.ws/aa$all -||nstools.tsrv1.ws/aaa.exe$all -||nstools.tsrv1.ws/b$all -||nstools.tsrv1.ws/bb$all -||nstools.tsrv1.ws/bbb$all -||nstools.tsrv1.ws/c$all -||nstools.tsrv1.ws/cc$all -||nstools.tsrv1.ws/ccc$all -||nstools.tsrv1.ws/delta_$all -||nstools.tsrv1.ws/m.exe$all -||nstools.tsrv1.ws/newtpp.exe$all -||nstools.tsrv1.ws/npp.exe$all -||nstools.tsrv1.ws/nxmr.exe$all -||nstools.tsrv1.ws/o.exe$all -||nstools.tsrv1.ws/pei.exe$all -||nstools.tsrv1.ws/peinf.exe$all -||nstools.tsrv1.ws/pi.exe$all -||nstools.tsrv1.ws/pp.exe$all -||nstools.tsrv1.ws/r.exe$all -||nstools.tsrv1.ws/s.exe$all -||nstools.tsrv1.ws/t.exe$all -||nstools.tsrv1.ws/t1.exe$all -||nstools.tsrv1.ws/t2.exe$all -||nstools.tsrv1.ws/tdrpload.exe$all -||nstools.tsrv1.ws/tpeinf.exe$all -||nstools.tsrv1.ws/tt.exe$all -||nstools.tsrv1.ws/twizt/2$all -||nstools.tsrv1.ws/twizt/3$all -||nstools.tsrv1.ws/twztl.exe$all -||onedrive.live.com/download?resid=4e6f63f4c3c86180%21112&authkey=!aji85fsyq6pgubw$all -||onedrive.live.com/download?resid=59261c7e41b6478a%21212&authkey=!agx6xu7a8tjfwjs$all -||onedrive.live.com/download?resid=59261c7e41b6478a%21215&authkey=!ailxsvzlzbop3io$all -||onedrive.live.com/download?resid=7eb674a88ccf381d%21552&authkey=!ah8ykhc8fseogq0$all -||onedrive.live.com/download?resid=7eb674a88ccf381d%21553&authkey=!am3kf8wmh98xn0y$all -||onedrive.live.com/download?resid=7eb674a88ccf381d%21554&authkey=!al2jzv2j-kuxnxi$all -||onedrive.live.com/download?resid=8950d94f9949f870%213505&authkey=!afhuotcjydvf6pg$all -||onedrive.live.com/download?resid=8e46c1968a0bd204%21125&authkey=!agfr46opw6byh2g$all -||onedrive.live.com/download?resid=b24528e77689f9ac%21162&authkey=!apfh4vxvdjek1qc$all -||onedrive.live.com/download?resid=be74a2a80f46402f%21108&authkey=!apakrcjm7r_t5aa$all -||onedrive.live.com/download?resid=fdb0512de793b32e%21192&authkey=!aabmannkbvjdxgc$all -||pastebin.ai/raw/kyhzi3xskc$all -||public.adobecc.com/files/1cbzrekgr3qfqlniab3cpysqnzafff?content_disposition=attachment;filename=%22upload_20240311-130634.zip$all -||raw.githubusercontent.com/ahmed45sh/apple-replica-starter-files/master/apple-replica/zintask.exe$all -||raw.githubusercontent.com/ahmed45sh/flutter-movie/master/crypted_c360a5b7.exe$all -||raw.githubusercontent.com/bao3125/32/main/d-obf.bat$all -||raw.githubusercontent.com/brunovale03/adegaads/main/offeredbuilt.exe$all -||raw.githubusercontent.com/dark831/top3/main/barbarossa.jpg$all -||raw.githubusercontent.com/dark8711/dark/main/xw.jpg$all -||raw.githubusercontent.com/deannwas/policah/main/file_cbs_app_details_no-0923871691_xlsx.zip$all -||raw.githubusercontent.com/evan9908/setup1/main/file200h.exe$all -||raw.githubusercontent.com/frexoff/efefwefwwf/main/cock.exe$all -||raw.githubusercontent.com/fuzzbunch/fuzzbunch/master/payloads/doublepulsar-1.3.1.exe$all -||raw.githubusercontent.com/jijilovedada/jijilovedada/main/tools/cc/adaptorovernight.exe$all -||raw.githubusercontent.com/kailash-jakhar/webpack-v5-tutorial/main/quizpokemon.exe$all -||raw.githubusercontent.com/komasinfo/idcb/main/cbs_applcation_details_072602024_xlsx.rar$all -||raw.githubusercontent.com/kseniakucherksenia/.github.io/main/cayv0deo9jst417.exe$all -||raw.githubusercontent.com/mendoza1123/rgya/main/transaction_error_details_file_981209_jpeg.rar$all -||raw.githubusercontent.com/mybay1/config/main/advancedrun.exe$all -||raw.githubusercontent.com/mybay1/config/main/disable_all_windows_security_notifications_for_all_users.reg$all -||raw.githubusercontent.com/mybay1/config/main/script-ps$all -||raw.githubusercontent.com/mybay1/config/main/start-miner.bat$all -||raw.githubusercontent.com/mybay1/hellminer-win64/main/hellminer.exe$all -||raw.githubusercontent.com/mybay1/hellminer-win64/main/verus-solver.exe$all -||raw.githubusercontent.com/mybay1/nircmd-nircmd/main/nircmd.exe$all -||raw.githubusercontent.com/reporgu/fakado/main/transaction_file_9812009_end_ids_yesbr5_pdf.rar$all -||raw.githubusercontent.com/runsim12/cleodf/main/tran_id-details009192_end_ids_58788719853478_pdf.rar$all -||raw.githubusercontent.com/sheksweet/sheksweet1/main/rambledmime.exe$all -||raw.githubusercontent.com/sirvivor32/sirvivor/main/lukejazz.exe$all -||raw.githubusercontent.com/smug246/luna-grabber-injection/main/injection-obfuscated.js$all -||raw.githubusercontent.com/trevsglass/morna/main/ref_ba0929399122_pdf.zip$all -||raw.githubusercontent.com/washywashy14/7zip-bin/master/win/er5thygfd.zip$all -||raw.githubusercontent.com/washywashy14/7zip-bin/master/win/uemlxaw.zip$all -||raw.githubusercontent.com/zev3n/ubuntu-gnome-privilege-escalation/main/cve-2020-1612%5b6_7%5d_exploit.sh$all -||raw.githubusercontent.com/zwzonepieces/posapsi/master/chatlife.exe$all -||sendspace.com/pro/dl/3a9xj1$all -||sendspace.com/pro/dl/6f2c5c$all -||sendspace.com/pro/dl/7dhid7$all -||sendspace.com/pro/dl/8gikly$all -||sendspace.com/pro/dl/dvbcvt$all -||sendspace.com/pro/dl/dy1f16$all -||sendspace.com/pro/dl/e7opy8$all -||sendspace.com/pro/dl/exw2o1$all -||sendspace.com/pro/dl/g2js91$all -||sendspace.com/pro/dl/i7tdbr$all -||sendspace.com/pro/dl/kx3wl4$all -||sendspace.com/pro/dl/lt00vw$all -||sendspace.com/pro/dl/medjl1$all -||sendspace.com/pro/dl/ppxodm$all -||sendspace.com/pro/dl/tbfvpd$all -||sendspace.com/pro/dl/wyg3h5$all -||smtp.tsrv1.ws/1.exe$all -||smtp.tsrv1.ws/11.exe$all -||smtp.tsrv1.ws/a$all -||smtp.tsrv1.ws/a.exe$all -||smtp.tsrv1.ws/aa$all -||smtp.tsrv1.ws/aaa.exe$all -||smtp.tsrv1.ws/b$all -||smtp.tsrv1.ws/bb$all -||smtp.tsrv1.ws/bbb$all -||smtp.tsrv1.ws/c$all -||smtp.tsrv1.ws/cc$all -||smtp.tsrv1.ws/ccc$all -||smtp.tsrv1.ws/delta_$all -||smtp.tsrv1.ws/m.exe$all -||smtp.tsrv1.ws/newtpp.exe$all -||smtp.tsrv1.ws/npp.exe$all -||smtp.tsrv1.ws/nxmr.exe$all -||smtp.tsrv1.ws/o.exe$all -||smtp.tsrv1.ws/pei.exe$all -||smtp.tsrv1.ws/peinf.exe$all -||smtp.tsrv1.ws/pi.exe$all -||smtp.tsrv1.ws/pp.exe$all -||smtp.tsrv1.ws/r.exe$all -||smtp.tsrv1.ws/s.exe$all -||smtp.tsrv1.ws/t.exe$all -||smtp.tsrv1.ws/t1.exe$all -||smtp.tsrv1.ws/t2.exe$all -||smtp.tsrv1.ws/tdrpload.exe$all -||smtp.tsrv1.ws/tpeinf.exe$all -||smtp.tsrv1.ws/tt.exe$all -||smtp.tsrv1.ws/twizt/2$all -||smtp.tsrv1.ws/twizt/3$all -||smtp.tsrv1.ws/twztl.exe$all -||stltpweavzg.tsrv1.ws/1.exe$all -||stltpweavzg.tsrv1.ws/11.exe$all -||stltpweavzg.tsrv1.ws/a$all -||stltpweavzg.tsrv1.ws/a.exe$all -||stltpweavzg.tsrv1.ws/aa$all -||stltpweavzg.tsrv1.ws/aaa.exe$all -||stltpweavzg.tsrv1.ws/b$all -||stltpweavzg.tsrv1.ws/bb$all -||stltpweavzg.tsrv1.ws/bbb$all -||stltpweavzg.tsrv1.ws/c$all -||stltpweavzg.tsrv1.ws/cc$all -||stltpweavzg.tsrv1.ws/ccc$all -||stltpweavzg.tsrv1.ws/delta_$all -||stltpweavzg.tsrv1.ws/m.exe$all -||stltpweavzg.tsrv1.ws/newtpp.exe$all -||stltpweavzg.tsrv1.ws/npp.exe$all -||stltpweavzg.tsrv1.ws/nxmr.exe$all -||stltpweavzg.tsrv1.ws/o.exe$all -||stltpweavzg.tsrv1.ws/pei.exe$all -||stltpweavzg.tsrv1.ws/peinf.exe$all -||stltpweavzg.tsrv1.ws/pi.exe$all -||stltpweavzg.tsrv1.ws/pp.exe$all -||stltpweavzg.tsrv1.ws/r.exe$all -||stltpweavzg.tsrv1.ws/s.exe$all -||stltpweavzg.tsrv1.ws/t.exe$all -||stltpweavzg.tsrv1.ws/t1.exe$all -||stltpweavzg.tsrv1.ws/t2.exe$all -||stltpweavzg.tsrv1.ws/tdrpload.exe$all -||stltpweavzg.tsrv1.ws/tpeinf.exe$all -||stltpweavzg.tsrv1.ws/tt.exe$all -||stltpweavzg.tsrv1.ws/twizt/2$all -||stltpweavzg.tsrv1.ws/twizt/3$all -||stltpweavzg.tsrv1.ws/twztl.exe$all -||support.tsrv1.ws/1.exe$all -||support.tsrv1.ws/11.exe$all -||support.tsrv1.ws/a$all -||support.tsrv1.ws/a.exe$all -||support.tsrv1.ws/aa$all -||support.tsrv1.ws/aaa.exe$all -||support.tsrv1.ws/b$all -||support.tsrv1.ws/bb$all -||support.tsrv1.ws/bbb$all -||support.tsrv1.ws/c$all -||support.tsrv1.ws/cc$all -||support.tsrv1.ws/ccc$all -||support.tsrv1.ws/delta_$all -||support.tsrv1.ws/m.exe$all -||support.tsrv1.ws/newtpp.exe$all -||support.tsrv1.ws/npp.exe$all -||support.tsrv1.ws/nxmr.exe$all -||support.tsrv1.ws/o.exe$all -||support.tsrv1.ws/pei.exe$all -||support.tsrv1.ws/peinf.exe$all -||support.tsrv1.ws/pi.exe$all -||support.tsrv1.ws/pp.exe$all -||support.tsrv1.ws/r.exe$all -||support.tsrv1.ws/s.exe$all -||support.tsrv1.ws/t.exe$all -||support.tsrv1.ws/t1.exe$all -||support.tsrv1.ws/t2.exe$all -||support.tsrv1.ws/tdrpload.exe$all -||support.tsrv1.ws/tpeinf.exe$all -||support.tsrv1.ws/tt.exe$all -||support.tsrv1.ws/twizt/2$all -||support.tsrv1.ws/twizt/3$all -||support.tsrv1.ws/twztl.exe$all -||teknoarge.com/update/ana/update.exe$all -||thaus.top/1.exe$all -||thaus.top/11.exe$all -||thaus.top/a$all -||thaus.top/a.exe$all -||thaus.top/aa$all -||thaus.top/aaa.exe$all -||thaus.top/b$all -||thaus.top/bb$all -||thaus.top/bbb$all -||thaus.top/c$all -||thaus.top/ccc$all -||thaus.top/delta_$all -||thaus.top/m.exe$all -||thaus.top/newtpp.exe$all -||thaus.top/npp.exe$all -||thaus.top/nxmr.exe$all -||thaus.top/o.exe$all -||thaus.top/pei.exe$all -||thaus.top/peinf.exe$all -||thaus.top/pi.exe$all -||thaus.top/pp.exe$all -||thaus.top/s.exe$all -||thaus.top/t.exe$all -||thaus.top/t1.exe$all -||thaus.top/t2.exe$all -||thaus.top/tdrpload.exe$all -||thaus.top/tpeinf.exe$all -||thaus.top/tt.exe$all -||thaus.top/twizt/2$all -||thaus.top/twizt/3$all -||thaus.top/twztl.exe$all -||token.im/downloads/imtoken-v2.apk$all -||tsrv1.ws/pei.exe$all -||tsrv1.ws/peinf.exe$all -||tsrv1.ws/tpeinf.exe$all -||tsrv1.ws/twztl.exe$all -||twizt.net/1.exe$all -||twizt.net/11.exe$all -||twizt.net/a$all -||twizt.net/a.exe$all -||twizt.net/aa$all -||twizt.net/aaa.exe$all -||twizt.net/b$all -||twizt.net/bb$all -||twizt.net/bbb$all -||twizt.net/c$all -||twizt.net/cc$all -||twizt.net/ccc$all -||twizt.net/delta_$all -||twizt.net/m.exe$all -||twizt.net/npp.exe$all -||twizt.net/nxmr.exe$all -||twizt.net/o.exe$all -||twizt.net/pei.exe$all -||twizt.net/peinf.exe$all -||twizt.net/pi.exe$all -||twizt.net/pp.exe$all -||twizt.net/s.exe$all -||twizt.net/t.exe$all -||twizt.net/t1.exe$all -||twizt.net/tdrpload.exe$all -||twizt.net/tpeinf.exe$all -||twizt.net/tt.exe$all -||twizt.net/twizt/2$all -||twizt.net/twztl.exe$all -||ujkujiiempp.tsrv1.ws/1.exe$all -||ujkujiiempp.tsrv1.ws/11.exe$all -||ujkujiiempp.tsrv1.ws/a$all -||ujkujiiempp.tsrv1.ws/a.exe$all -||ujkujiiempp.tsrv1.ws/aa$all -||ujkujiiempp.tsrv1.ws/aaa.exe$all -||ujkujiiempp.tsrv1.ws/b$all -||ujkujiiempp.tsrv1.ws/bb$all -||ujkujiiempp.tsrv1.ws/bbb$all -||ujkujiiempp.tsrv1.ws/c$all -||ujkujiiempp.tsrv1.ws/cc$all -||ujkujiiempp.tsrv1.ws/ccc$all -||ujkujiiempp.tsrv1.ws/delta_$all -||ujkujiiempp.tsrv1.ws/m.exe$all -||ujkujiiempp.tsrv1.ws/newtpp.exe$all -||ujkujiiempp.tsrv1.ws/npp.exe$all -||ujkujiiempp.tsrv1.ws/nxmr.exe$all -||ujkujiiempp.tsrv1.ws/o.exe$all -||ujkujiiempp.tsrv1.ws/pei.exe$all -||ujkujiiempp.tsrv1.ws/peinf.exe$all -||ujkujiiempp.tsrv1.ws/pi.exe$all -||ujkujiiempp.tsrv1.ws/pp.exe$all -||ujkujiiempp.tsrv1.ws/r.exe$all -||ujkujiiempp.tsrv1.ws/s.exe$all -||ujkujiiempp.tsrv1.ws/t.exe$all -||ujkujiiempp.tsrv1.ws/t1.exe$all -||ujkujiiempp.tsrv1.ws/t2.exe$all -||ujkujiiempp.tsrv1.ws/tdrpload.exe$all -||ujkujiiempp.tsrv1.ws/tpeinf.exe$all -||ujkujiiempp.tsrv1.ws/tt.exe$all -||ujkujiiempp.tsrv1.ws/twizt/2$all -||ujkujiiempp.tsrv1.ws/twizt/3$all -||ujkujiiempp.tsrv1.ws/twztl.exe$all -||update.itopvpn.com/dl/idr/v3/pub/idrb5event.exe$all -||vk.com/doc869877400_678972482?hash=bxesveaulimong9apuvzzqb5sjhiw7mhux9bzu22eat&dl=y640nlvxuphmcq2lkrz2mea3wtnhkod8uusn9s6sre0&api=1&no_preview=1#mene$all -||vk.com/doc869877400_678974076?hash=yb8tek8nsfnncobuwxhkvaetz1khfkhzbdqip7s01be&dl=mhhbkrqyi5quk3azavxqb54uego3uzsndmrd3vcuddg&api=1&no_preview=1#1$all -||vk.com/doc869877400_679034306?hash=rrdj5fxf6sb3miibammoepqqpkwzb3ajs4josgxkivx&dl=l36p8f0svoaewph07cd0oj27hhn5a5c5kgc6pr02jzd&api=1&no_preview=1$all -||vk.com/doc869877400_679040923?hash=r3c6wofxf9ixf6cpcmnwrns72cz9niqfn2cwrmoqjvz&dl=bea7puaazgnhqz7v7lonxjk2zfr6a4jrmezumondfrg&api=1&no_preview=1#1$all -||vk.com/doc869877400_679049939?hash=i6dnzsxg8rqy4eu1lfaezdghojlyykgze3jugp5frwd&dl=uioprvghn68ycflbgjdmaja9h2yntcyjcykiqtruyvp&api=1&no_preview=1$all -||vk.com/doc869877400_679054576?hash=jhnug28kd4w2cq3d633basbuzchqowijklymonds73g&dl=njqyum4u6mhafqf2rqakicdjp7pnj3flpjxuezj8rzt&api=1&no_preview=1#mene$all -||vk.com/doc869877400_679106745?hash=evfojtwm4qzianpjpkescxzhs3yfouoz3z0rb29pr6d&dl=hhjlonsq59046gukjnwvkzia1xhs0dveiszra0eesos&api=1&no_preview=1#xin$all -||ysbaojia.com/downfile.asp?sid=276663/$all -||yzcplsibdtq.tsrv1.ws/1.exe$all -||yzcplsibdtq.tsrv1.ws/11.exe$all -||yzcplsibdtq.tsrv1.ws/a$all -||yzcplsibdtq.tsrv1.ws/a.exe$all -||yzcplsibdtq.tsrv1.ws/aa$all -||yzcplsibdtq.tsrv1.ws/aaa.exe$all -||yzcplsibdtq.tsrv1.ws/b$all -||yzcplsibdtq.tsrv1.ws/bb$all -||yzcplsibdtq.tsrv1.ws/bbb$all -||yzcplsibdtq.tsrv1.ws/c$all -||yzcplsibdtq.tsrv1.ws/cc$all -||yzcplsibdtq.tsrv1.ws/ccc$all -||yzcplsibdtq.tsrv1.ws/delta_$all -||yzcplsibdtq.tsrv1.ws/m.exe$all -||yzcplsibdtq.tsrv1.ws/newtpp.exe$all -||yzcplsibdtq.tsrv1.ws/npp.exe$all -||yzcplsibdtq.tsrv1.ws/nxmr.exe$all -||yzcplsibdtq.tsrv1.ws/o.exe$all -||yzcplsibdtq.tsrv1.ws/pei.exe$all -||yzcplsibdtq.tsrv1.ws/peinf.exe$all -||yzcplsibdtq.tsrv1.ws/pi.exe$all -||yzcplsibdtq.tsrv1.ws/pp.exe$all -||yzcplsibdtq.tsrv1.ws/r.exe$all -||yzcplsibdtq.tsrv1.ws/s.exe$all -||yzcplsibdtq.tsrv1.ws/t.exe$all -||yzcplsibdtq.tsrv1.ws/t1.exe$all -||yzcplsibdtq.tsrv1.ws/t2.exe$all -||yzcplsibdtq.tsrv1.ws/tdrpload.exe$all -||yzcplsibdtq.tsrv1.ws/tpeinf.exe$all -||yzcplsibdtq.tsrv1.ws/tt.exe$all -||yzcplsibdtq.tsrv1.ws/twizt/2$all -||yzcplsibdtq.tsrv1.ws/twizt/3$all -||yzcplsibdtq.tsrv1.ws/twztl.exe$all diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/ublock/badlists.txt b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/ublock/badlists.txt deleted file mode 100644 index 03fc4ef..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/ublock/badlists.txt +++ /dev/null @@ -1,74 +0,0 @@ -# The lists below are known to create issues in uBO. - -# Reek's Anti-Adblock Killer -https://raw.github.com/reek/anti-adblock-killer/master/anti-adblock-killer-filters.txt -https://raw.githubusercontent.com/reek/anti-adblock-killer/master/anti-adblock-killer-filters.txt - -# ABP anti-circumvention filter lists -https://easylist-downloads.adblockplus.org/abp-filters-anti-cv.txt -https://easylist-msie.adblockplus.org/abp-filters-anti-cv.txt -https://raw.githubusercontent.com/abp-filters/abp-filters-anti-cv/master/english.txt - -# https://github.com/uBlockOrigin/uBlock-issues/issues/971 -https://hosts-file.net/.%5Cad_servers.txt remove -http://hosts-file.net/.%5Cad_servers.txt remove - -# https://github.com/uBlockOrigin/uAssets/issues/8738 -https://raw.githubusercontent.com/k2jp/abp-japanese-filters/master/abpjf.txt - -# https://github.com/uBlockOrigin/uAssets/issues/13566 -# https://twitter.com/gorhill/status/1352651716265713665 -https://www.joinhoney.com/whitelist/honey-smart-shopping.txt - -# whitelisting lists -https://slickdeals.net/attachment/extension/allowlist.txt -https://easylist-downloads.adblockplus.org/exceptionrules.txt -https://letyshops.com/adblock.txt -https://www.aadvantageeshopping.com/adBlockWhitelist.php -https://multiup.org/list_adblock.txt -https://multiup.io/list_adblock.txt -https://downloads.zohocdn.com/ulaa-browser/release/adb/stable/ulaa-filters.txt - -# https://www.reddit.com/r/uBlockOrigin/comments/143k8lm/ -https://www.topcashback.co.uk/misc/AdBlockWhiteList.aspx -https://www.topcashback.co.uk/Misc/AdBlockWhiteList.aspx -https://www.topcashback.com/Misc/AdBlockWhiteList.aspx - -# https://github.com/collinbarrett/FilterLists/issues/3794 -https://www.rakuten.ca/static/cashback-shopping-whitelist -https://www.rakuten.ca/static/cashback-shopping-whitelist?title=Rakuten%20Cash%20Back%20Shopping -# redirect to the new list -https://www.ebates.com/whitelist/ebates-cash-back-shopping.txt -https://www.rakuten.com/whitelist/ebates-cash-back-shopping.txt - -# obsolete lists -https://cdn.rawgit.com/NanoAdblocker/NanoFilters/master/NanoFilters/NanoAnnoyance.txt -https://cdn.rawgit.com/NanoAdblocker/NanoFilters/master/NanoFilters/NanoBase.txt -https://cdn.rawgit.com/NanoAdblocker/NanoFilters/master/NanoFilters/NanoWhitelist.txt -https://gitcdn.xyz/repo/NanoAdblocker/NanoFilters/master/NanoFilters/NanoBase.txt -https://gitcdn.xyz/repo/NanoAdblocker/NanoFilters/master/NanoMirror/NanoDefender.txt -https://raw.githubusercontent.com/NanoAdblocker/NanoFilters/master/NanoFilters/NanoAnnoyance.txt -https://raw.githubusercontent.com/NanoAdblocker/NanoFilters/master/NanoFilters/NanoWhitelist.txt -https://raw.githubusercontent.com/NanoAdblocker/NanoFilters/master/NanoFiltersSource/NanoAnnoyance.txt -https://raw.githubusercontent.com/NanoAdblocker/NanoFilters/master/NanoFiltersSource/NanoBase.txt -https://raw.githubusercontent.com/NanoAdblocker/NanoFilters/master/NanoFiltersSource/NanoWhitelist.txt -https://raw.githubusercontent.com/jspenguin2017/uBlockProtector/master/uBlockProtectorList.txt -https://cdn.rawgit.com/NanoAdblocker/NanoFilters/master/NanoMirror/NanoDefender.txt -https://cdn.rawgit.com/NanoMeow/MDLMirror/master/hosts.txt - -# outdated prebake list -https://raw.githubusercontent.com/liamja/Prebake/master/obtrusive.txt - -# interfere negatively; generic exceptions to ad servers -https://raw.githubusercontent.com/bogachenko/fuckfuckadblock/master/fuckfuckadblock.txt -https://cdn.statically.io/gh/bogachenko/fuckfuckadblock/master/fuckfuckadblock.txt -https://raw.githack.com/bogachenko/fuckfuckadblock/master/fuckfuckadblock.txt -https://cdn.jsdelivr.net/gh/bogachenko/fuckfuckadblock/fuckfuckadblock.txt -https://cdn.jsdelivr.net/gh/bogachenko/fuckfuckadblock@master/fuckfuckadblock.txt -https://fuckfuckadblock.pages.dev/fuckfuckadblock.txt -https://fuckfuckadblock.pages.dev/fuckfuckadblock.txt?_=3 -https://raw.githack.com/bogachenko/fuckfuckadblock/master/fuckfuckadblock.txt?_=3 -https://cdn.statically.io/gh/bogachenko/fuckfuckadblock/master/fuckfuckadblock.txt?_=3 -https://raw.githubusercontent.com/bogachenko/fuckfuckadblock/master/fuckfuckadblock.txt?_=3 -# https://www.reddit.com/r/uBlockOrigin/comments/1cl3qgh/ads_getting_through/ -https://raw.githubusercontent.com/bogachenko/fuckfuckadblock/master/fuckfuckadblock.txt?_=raw diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/ublock/badware.min.txt b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/ublock/badware.min.txt deleted file mode 100644 index ae1ae5b..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/ublock/badware.min.txt +++ /dev/null @@ -1,3815 +0,0 @@ -! Title: uBlock filters – Badware risks -! Expires: 5 days -! Last modified: Mon, 29 Jul 2024 11:08:55 +0000 -! Diff-Path: %diffpath%#ublock-badware -! Diff-Expires: 317 minutes -! License: https://github.com/uBlockOrigin/uAssets/blob/master/LICENSE -! *** uAssets:filters/badware.txt *** -! Using request of type `document` will cause the whole site to be blocked through -! strict blocking, yet the site will render properly if a user still decides to -! go ahead. -! 2014-10-22: https://assiste.com/01Net.html -! 2013-03-25: https://www.malekal.com/pctutotuto4pc-association-avec-01net/ -! 2012-10-31: https://www.journaldunet.com/solutions/dsi/des-malwares-sur-telecharger-com-01net-1012.shtml -! 2012-10-30: https://www.lesnumeriques.com/appli-logiciel/telecharger-depuis-01net-nuit-gravement-a-sante-pc-n26763.html -! 2012-06-17: https://www.malekal.com/01net-pc-optimizer-pour-ne-pas-optimiser-son-pc/ -! 2012-02-17: http://neosting.net/logiciels/01net-et-softonic-ajoutent-aussi-un-installeur-publicitaire.html (Dead page) -||01net.com/telecharger/$doc -! 2015-03-11: https://blog.emsisoft.com/en/12678/mind-the-pup-top-download-portals-to-avoid/ -! 2015-01-21: https://www.howtogeek.com/207692/yes-every-freeware-download-site-is-serving-crapware-heres-the-proof/ -! 2015-01-11: https://www.howtogeek.com/198622/heres-what-happens-when-you-install-the-top-10-download.com-apps/ -! 2012-06-27: https://insecure.org/news/download-com-fiasco.html -! 2011-12-05: https://seclists.org/nmap-announce/2011/5 -! 2011-08-22: https://www.extremetech.com/computing/93504-download-com-wraps-downloads-in-bloatware-lies-about-motivations -! ||download.cnet.com^$doc -||flexytalk.net^ -||quickdomainfwd.com^ -||vlc.de^$doc -||audacity.de^$doc -||havenworks.com^$doc -! ||ublock.org^$doc -~support.ublock.org,ublock.org##main::before:style(content: 'uBlock is unrelated to the well-known uBlock Origin.' !important; font-size: 32px !important; color: red !important; font-weight: bold !important;) -support.ublock.org##div.hero-unit > div.search-box--hero-unit::before:style(content: 'uBlock is unrelated to the well-known uBlock Origin.' !important; font-size: var(--font-size-h2) !important; color: red !important; font-weight: bold !important;) -||7zip.es^$doc -||7zip.fr^$doc -||7zip.it^$doc -||adblock.fr^$doc -||aresgalaxy.es^$doc -||audacity.es^$doc -||audacity.fr^$doc -||audacity.it^$doc -||audacity.pl^$doc -||azureus.es^$doc -||bittorrent.es^$doc -||bleachbit.com^$doc -||blender3d.es^$doc -||blender3d.fr^$doc -||bluestacksdownloads.com^$doc -||calibre.it^$doc -||celestia.es^$doc -||celestia.fr^$doc -||clonezilla.es^$doc -||clonezilla.fr^$doc -||clonezilla.it^$doc -||cyberduck.de^$doc -||cyberduck.es^$doc -||cyberduck.fr^$doc -||cyberduck.it^$doc -||filezilla.es^$doc -||filezilla.fr^$doc -||filezilla.it^$doc -||filezilla.net^$doc -||filezilla.pl^$doc -||freefilesync.com^$doc -||freerapid.fr^$doc -||garagebandforpc.org^$doc -||gimp.es^$doc -||gparted.fr^$doc -||gparted.it^$doc -||greenshot.fr^$doc -||greenshot.org^$doc -||handbrake.es^$doc -||handbrake.it^$doc -||inkscape.es^$doc -||inkscape.fr^$doc -||inkscape.it^$doc -||izarc.fr^$doc -||jdownloader.fr^$doc -||keepass.com^$doc -||keepass.de^$doc -||keepass.es^$doc -||keepass.fr^$doc -||keepass.it^$doc -||keepassxc.com^$doc -||notepad2.com^$doc -||office.org^$doc -||open-office.fr^$doc -||openoffice.de^$doc -||paintnet.es^$doc -||paintnet.fr^$doc -||paintnet.it^$doc -||pdfsam.com^$doc -||peazip.com^$doc -||qbittorrent.com^$doc -||scribus.fr^$doc -||scribus.it^$doc -||senuti.org^$doc -||smplayer.org^$doc -||stellarium.es^$doc -||stellarium.fr^$doc -||truecrypt.fr^$doc -||truecrypt.it^$doc -||truecrypt.pl^$doc -||unetbootin.net^$doc -||unetbootin.org^$doc -||utorrent.it^$doc -||virtualbox.es^$doc -||virtualbox.pl^$doc -||newsharecounts.s3-us-west-2.amazonaws.com/nsc.js$script -||googlo.co^$doc -||hentaiplaytime.com^$doc -||viewmypdf.com^$doc -! foxload.com badware -||foxload.com^$doc -! aksia.co badware -! Ref: https://www.bleepingcomputer.com/news/security/phisher-announces-more-attacks-against-hedge-funds-and-financial-firms/ -||aksia.co^$doc -! ReImagePlus links -! Ref: https://forums.malwarebytes.com/topic/194200-removal-instructions-for-reimage-repair/ -windowsreport.com##.code-block -appuals.com##.appua-reimage-top -appuals.com##.info.box -pcseguro.es,sauguspc.lt,sichernpc.de,ugetfix.com,wyleczpc.pl##.download_button_info_texts -pcseguro.es,sauguspc.lt,sichernpc.de,ugetfix.com,wyleczpc.pl##.js-download_button_additional_links -pcseguro.es,sauguspc.lt,sichernpc.de,ugetfix.com,wyleczpc.pl##.primary_download -pcseguro.es,sauguspc.lt,sichernpc.de,ugetfix.com,wyleczpc.pl##.sidebar_download_inner -pcseguro.es,sauguspc.lt,sichernpc.de,ugetfix.com,wyleczpc.pl##div.attention-button-box-green -thewindowsclub.com##.entry-content > div > strong:has-text(find & fix Windows error) -majorgeeks.com##b:has(a[target^="reimage"]) -||majorgeeks.com/images/icons/red_icon_18x17px.png$image -2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,ioys.gr,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.attention-button-wrap:has-text(Reimage) -2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,ioys.gr,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.ui-content > .win -2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,ioys.gr,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.sidebar_download_inner > :not(.voting-box):not(.colorbg-grey) -2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,ioys.gr,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##th:has-text(/^Detection$/) -2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,ioys.gr,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##th:has-text(/^Detection$/) + td -2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,ioys.gr,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.js-download_button_offer -2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,ioys.gr,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.primary_download -2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,ioys.gr,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.automatic_removal_list -2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,ioys.gr,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.quick-download-button-placeholder -2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,ioys.gr,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.nfc-bottom-right:has-text(Reimage) -2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,ioys.gr,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##a:has-text(Reimage) -2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,ioys.gr,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.quick-download-button-text -||reimageplus.com^$doc -! Lapsed domains that once hosted adblock lists, several of whom are now used for bad purposes -||gjtech.net^$doc -! Badware -||kuhoot.it^$doc -! Fake cloudflare screen -||gmboxx.com^ -||mr.media-bucket.com^ -||pl.allsports4free.club^ -||pl.allsports4u.club^ -||discount.s3blog.org^ -||s3blog.org^$3p -||dataprovider.biz^ -||tplinkextender.net^ -||upload4earn.org^$doc -||newsfile.club^$doc -||buzzadnetwork.com^$all -||abcdserver.com^$all -||americanoverlook.com^ -||anonnews.co^ -||embols.com^ -||endingthefed.com^ -||goneleft.com^ -||nephef.com^ -||newsbreakshere.com^ -||rilenews.com^ -||thecontroversialfiles.net^ -||voxtribune.com^ -||checkisreal.com^ -||mysecurify.com^ -||developsincelock.com^ -||gabriellalovecats.com^ -||jackielovedogs.com^ -||tomorrowwillbehotmaybe.com^ -||wiilberedmodels.com^ -||apple.com-*.live^ -! redirects -||nextyourcontent.com^$all -||doctopdftech.com^$all -||best2019-games-web4.com^$all -||searchdimension.com^$all -||beqbox.com^ -||bblck.me^$all -||glinks.co^$all -/?track=*&key=$all -||getsecuritysuite.com^$all -! SpyHunter links -! Ref: https://blog.malwarebytes.com/detections/pup-optional-spyhunter/ -howtoremove.guide##div[style^="border:2px"] -howtoremove.guide##.entry-content > div:has-text(Special Offer) -howtoremove.guide###solution_v2_de -howtoremove.guide###alt_content_main_div > p:has-text(SpyHunter) -howtoremove.guide###gray_de -2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,ioys.gr,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.automatic_removal_list_w > .ar_block_description -2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,ioys.gr,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##a:has-text(SpyHunter) -||tncrun.net^$all -||d3125zvx5yi5sj.cloudfront.net^$all -! thepiratebay3 .com bad -thepiratebay3.com^$all -||procdnvids.net^ -||prostream.to^ -||mybestclick.net^$3p -||verified-extensions.com^ -||smsiak.pl^$doc -||smsy24.pl^$doc -! redirecting domains / fraud -||video-adblock.com^$all -||vid-adblocker.com^$all -||multiadblock.com^$all -||popsads.link^$all -||adverdirect.com^$all -||bestwinexperience.com^$all -||traffic-go.com^$all -||streamssitesearch.com^$all -||trackertrak.com^$all -||bingstyle.com^$all -||redirekted.com^$all -||blockskipad.com^$all -||adpopblocker.com^$all -||trafficjunction.com^$all -||arclk.net^$all -||btnativenav.com^$all -||1111sale.us^$all -||omgtnc.com^$all -||bestoffer21.info^$all -||n06.biz^$all -||um-bredirect.com^$all -||aff2021.com^$all -||glbltraffic.com^$all -||0redirc.com^$all -||inspirationhistorical.com^$all -||maroohost.online^$all -||amigosdetuciudad.com^$all -||bb-delivery.icu^$all -||praterage-colled.com^$all -||womeniovers.net^$all -||pwrtds.com^$all -||trackbyfast.com^$all -||trfrc.com^$all -||1ts11.top^$all -||dating.hdxvideos.ru^$all -||elevisions.biz^$all -||harzfriends.de^$all -||moviesboys.com/*.shtml$doc -||name0fbestway.com^$all -||sex-is-here.com/*.shtml$doc -||sexall.net/*.shtml$doc -||urtyert.com^$all -||hsrvu.com^$all -||adtr1.com^$all -||axdsz.pro^$all -||datingapp.live^$all -.com/c/*?s1=$doc,domain=com -.net/c/*?s1=$doc,domain=net -/tds/ae?tds_campaign=$doc -||adating.link^$all -||benaughty.com^$all -||bnewsblite.me^$all -||ckre.net^$all -||gotohouse2.cc^$all -||letmessagenow.com^$all -||x-soft.club^$all -||apilond.com^$all -||tracklyfast.com^$all -||pupok.link^$all -||ntvpevnts.com^$all -||aditserve.com^$all -/bdv_rd.dbm?ownid=$doc -?bid=0.*&search_referrer_domain=$doc -||fecebook.com^$all -||festinus.xyz^$all -/apop/redirect/zone/*$doc,popup -/?pl=*&sm=$doc -||fortuneadvert.com^$all -||lalielynaualish.com^$all -||casino-ice.fun^$all -! hacked and abused for redirect -tech4yougadgets.com##^meta[http-equiv="refresh"] -tech4yougadgets.com##^script[src^="data:text/javascript;base64,"] -tech4yougadgets.com##+js(aopr, Notification) -||clicks.affstrack.com^ -||weledying-jessed.com^$all -?zoneid=*&cost=0.$doc -/zcredirect?visitid=*&iframeDetected=false|$doc -*/zcvisitor/*?campaignid$doc -||tweitter.com^$all -||mqdownload.com^$all -/pop-click?sid=*&data=$doc -/click?a=*&aff_click_id=$doc -||trwl1.com^$all -||pushmeup.art^$all -||adserver*/?sdomain=$doc,popup -/click.php?data=$doc -&adspot_id=*&cost=0.$doc -||s4f.net^$all -||onlyfreetoonporn.com^$all -||cleardexchange.com^$all -||lone1y.com^$all -||tr1net.com^$all -||usdownload.widost.com^$all -||cpttrcklnk.com^$all -||neighborhoodsluts.com^$all -.xyz/video.php?=*&dating_xyz_0&&0$frame -/click?pid=*&sub1=$doc -! fraud => https://forums.lanik.us/viewtopic.php?f=90&t=45586 -||411medias.com^$all -||zedplays.com^$all -||special-update.online^$all -||bookgr8.com^$all -||internetspeedtracker.com^$all -||system-update-new-2021.com^$all -||m7c4d5r7.stackpathcdn.com^$all -||download-app.net^$all -||pu4.biz^$all -||privatesinglesmeet.com^$all -||readytosinglesmeet.com^$all -||cleanphonefast.com^$all -||fastphonebooster.com^$all -||reimageplusminus.me^$all -||luckywinner-web1.com^$all -||theshoparound.com^$all -||loverfuck.com^$all -||onlineplus.click^$all -||trafempire.com^$all -||iamnaughty.com^$all -||iwantu.com^$all -||myhotdates.com^$all -||onenightfriend.com^$doc -||buddygays.com^$all -||localsnapsext.com^$all -||heartmedia.biz^$all -.php?key=*cost=$doc,popup -||totaltopposts.com^$all -||djin.site^$all -||antivirus.landerhd.com^$all -||to6s.biz^$all -||sweetgirls.date^$all -||fast-travel.org^$all -/?clck=*&sid=$doc -||love7date.info^$all -||bestsecretflirt.com^$all -||toplov.com^$all -||gegenhartz.de^$all -||marootrack.co^$all -&dci=*&tds_campaign=$doc -||revpu.sh^$all -||listen-heres.com^$all -/smartlink/?a=$doc -||date.sexpartnercommunity.com/landing/*$doc -/ll/click.php?key=$doc -/?ip=*&uclickhash=$doc -||cheaterboss.com^$all -||cumshots.com^$all -||multiflings.com^$all -||real-women-online.com^$all -/?camp=*&cost=0.$doc -||monglitch.monster^$all -||d13nu0oomnx5ti.cloudfront.net^ -||quickdates1.com^$all -||getmackeepersoftpro.xyz^$all -||familysimulator.$all -||adblockfast.com^$all -||bookofsex.com^$all -||mydirtytinders.com^$all -||fuckmore.com^$all -||greengoplatform.com^$all -||transportgoline.com^$all -||owlfolk.com^$all -||onlyfreelesbianporn.com^$all -||family-simulators.com^$all -||your-dates-tonight.com^$all -||familysimulatorgame.com^$all -||trackingboost.com^$all -||update-protection.com^$all -||asiaxdate.com^$all -||hotsimulator.com^$all -/aff.php?*&data2=$doc -/tds/ae?*&clickid=$doc -/?clickid=*&ptracker=$doc -||vehicle-insurance-quote.com^$all -^lpkey=*&uclickhash=$doc -||systemupdatesy.life^$all -||d135aysof2oufc.cloudfront.net^$all -/?banner=*&phone=$doc -||advidates.com^$all -||dvjqvdfujjvvkuyvhjqdvbjcmioljbhjmijq.s3.ap-northeast-1.amazonaws.com^$all -/?clickid=*&cost=0.$doc -/index.php?key=*&t1=$doc -/click?key=*&t1=$doc -||cmprotraf.club^$all -||prelandappslab.com^$all -/registration?theme=*&a_aid=$doc -.top/prize/*.php?c=$doc -||di02.biz^$all -||adultonlineplay.com^$all -||fastandslut.com^$all -&click_price=0.*&click_id=$doc -?brand=*&model=*&lptoken=$doc -?brand=*&fingerprint_=$doc -||familialsimulation.com^$all -/\/(?:[0-9a-z]{7,25}-){9,13}[0-9a-z]{10,15}\/(?:[0-9a-z]+\/)+index\.php/$doc -||imilroshoors.com^$all -||trackhere.pl^$all -||datingformeeting.com^$all -/_dating\d\/index\.html\?aref=/$doc -||familysimulators.$all -^apb=*&ata=mobilemdots^$doc -||uoutube.com^$all -! kkomj.ofchildr.buzz -||0redire.com^$all -||celxkpdir.com^$all -^cep=*&zoneid=$doc -^cep=*&s1=$doc -.top/robot4*&a=$doc,domain=top -||androidnotice.com^$all -||wholenicefeed.com^$all -||updaterlife.com^$all -^s=*&ssk=*&svar=*&z=$doc -/?cid=*&dom=$doc -||totalrecaptcha.top^$all -/?type=*&button=2&clickid=$doc -||valrogrowth.com^$all -^device_model=*&p1=https$doc -||5.61.55.143^ -.biz/sw/w1s.js|$script,3p -||mo11.biz^$all -/click.php?key=*&cpc=0&$doc -||37.1.213.100^ -/?p=*&sub1=$doc -.xyz/ddos/1tn.html?clickid=$doc -://e.*.top/video/?c=$doc -/?srv_id=*#$doc -||love88.club^$all -.html?cep=*&cost=0.$doc -||familysexsimulators.io^$all -||23.109.87.170^ -.live/1*.html?cep=$doc -||edfringe.com/*.php$all -||jmdinfotechs.com^$all -||grakorte.com^$all -/click.php?key=*&zone_id=$doc -/domredirect?visitid=$doc -||smart-redirecting.com^ -?adTagId=*&extclickid=$doc -/antibot*/ab.php$xhr,1p -||androiddetection.com^$all -||elooksjustli.one^ -||keepsclean.com^$all -||magictrack1.com^ -||my-cleaner.info^$all -||news-zolehe.com^$all -||ready-for-download.com^ -||rcuacroossonec.com.ua^ -||taitlastwebegan.com^$all -||thbstvd.com^ -||vpn-connection-security.com^$all -||yourpcnotification.com^$all -/SRC/SRC.php?c=$doc -&tb=redirect&allb=redirect&ob=redirect&href=$doc -||go2click.online^$all -||datingmeetnet.com^$all -||bndl-trp.com^$all -||clean-2-clean.club^$all -||top-official-app.com^$all -||pornonenight.com^$all -||youfindadate.top^$all -?z=*&ymid=$doc -?z=*&cnv_id=*&sourceid=*&t1=$doc -||xypthe.com^ -||besluor.com^ -/jr.php?gz=$doc -/g?visitorid=*&extra_data2=|$doc -.com/play-2?h=*=eyJ&si1=$doc -/\.com\/proc\.php\?[0-9a-f]{40}$/$doc -||postyourlife.com^$all -||rplnd60.com^$all -||iwinprize.xyz^$all -||shosril.com^ -||meetamate.site^ -||dm09.biz^$all -/click.php?key=*&dj_placement=$doc -&srv_id=terra#$doc -||ultimate-clean.club^$all -||pcconelove.xyz^$all -||video.redwap.cam^$all -||cractica.xyz^$doc -||beyourxfriend.com^$all -||bybygnom.com^$all -||paderrer.com^$all -||best-site-online.com^ -/jump/next.php?r=$doc -||softronline.click^ -/?clickid=*&t2=.$doc -||skipalos.xyz^$all -||makenoads.com^$all -||dateclique.life^ -||family-simulators.io^$doc -||familyfornicate.com^$doc -||speedtestnow.site^$all -||programprotacol0.com^$all -||lovedatee.net^$all -/dating_lp?keyword=$doc -/bonus/*.php?c=$doc,domain=space|top -||club-gagnant.online^$all -||srengin.com^$all -/common-player-arrow/index.html?var=*&zoneid=$doc -/common-player/index.html?var=*&zoneid=$doc -/not-a-robot/index.html?$doc -||dating.service2u.shop^$all -||amazonaws.com/www.yournewlocalflingfinder7.com/$all -||dirtyfree.games^$all -||familycheaters.net^$all -||register.blissfulltimes.com^$doc -.com/pl?o=$doc -||geheimerseitensprung.com^$all -||matches4you.info^$all -||reifenachbarn.com^$all -/zclkredirect?visitid=$doc -||done-install.com^$all -||felicitakam.ru^$all -||livestreamchatme.com^$all -||livechatlove.store^$all -||naughtymets.com^$all -||linkprotecttrck.com^$all -||www3secure.com^$all -||midnighthookup.today^$all -||padsthai.com^$all -||doppelsbangers.com^$all -||dirtyflirt9.com^$all -||bestvideo.cloud^$all -||bmtracks.com^$all -||doublebangers.com^$all -||laddler.site^$all -||bintrr.top^$all -||tricksygirlw.com^$all -||bustymeets.com^$all -||aht42trk.com^$all -||jasnathvibes.com^$all -||falltes.site^$all -||lewdmilfh22y.com^$all -/mc-test/*/index.php?cid=$doc -||attractivecutiewcx.com^$all -||onecupcoffeereviews.com^$all -||skollett.site^$all -||browserneedupdate.com^ -||click-allow.top^ -||girlwaityou.com^$all -||feelfllirty.com^$all -||spiendidates.com^$all -||alone-here.online^$all -||meetsworldsm.link^$all -||newonlinedates.com^$all -||tusser.site^$all -/?l=*&ymid=$doc -.com/r2.php?e=$doc -/video_app/adult/*/index.html?*p1=$doc -||apphasten.com^$all -||shinqueen.com^$all -/downloadapp/*/index.html?*p1=$doc -.com/afu.php?zoneid=$doc -||altairaquilae.com^$doc -||himasearch.shop^$doc -||reddriko.site^$all -||mikkerst.com^$all -||sugarfllngs.com^$all -||trripwire.com^$all -||ardentcrackerbo.com^$all -||girlsonlinenow.com^$all -/dating/adult/*/index.html?*p1=$doc -/video-app-default/adult/*/index.html?*p1=$doc -||meetdats.com^$all -||meet-flirts.com^$all -||mltrck.com^$all -||meetshorny.link^$all -||trckoja.com^$all -||trckams.com^$all -||pecuniatrck.com^$all -||smart-tds.com^$all -||nicking-unding.com^$all -||septdate.com^$all -||maturewomenevm5.com^$all -||164.132.74.156^$all -||icetraff.com^$all -||girlsml.com^$all -||pussycat1.online^$all -||hornydateclub.link^$all -||guardlnkcaptcha.com^$all -/gambling/main/default/*/index.html?*p1=$doc -/?p=*5gi3bp*$doc,domain=biz|com -||landings.namapper.com^ -||hornysmart.link^$all -||bd4jn7dk9u.com^$all -||throb.fun^$all -||throww.fun^$all -||dattter.shop^$all -||fiverera.click^$all -||imp2.com^$all -||love-places.ru^$all -/click.php?key=*&price=$doc -?click_id=*&tds_cid=$doc -.com/lp*.html?zoneid=$doc -/vpn/adult/*/index.html?*p1=$doc -||fervidpopsyk.com^$all -||dunabear.com^$all -||mialifestyle.com^$all -||miafann.online^$all -||dating365.link^$all -||trckhoul.com^$all -/utility/adult/*/index.html?*p1=$doc -/1/index.html?c=$doc -/2/index.html?c=$doc -||1win-17545.com^ -||saucygirls4g.com^$all -||onlysexygirl.com^$all -||binomasia.com^$all -/protectme_new1/index.html?$doc -||nyeeiye2.click^$all -||privatedates.link^$all -||trckotang.com^$all -||ct01.biz^$all -||ehnax.sbs^$all -||mobilerefreshpro.xyz^$all -||rekosx.co.in^$all -||remor.xyz^$all -||github.io/health-records-x-ray$doc -||rusoil24.ru^$all -||adultminglenight.click^$all -||miallafun.com^$all -||derriks.site^$all -||butya.top^$all -||onenightfindertm.com^$all -||datenaughtysingles.click^$all -||flirtyconnection.click^$all -/other/btn/*/index.html?*p1=$doc -||suitablepartner.life^$all -||ohmysweetromancespot.life^$all -||yourdatefind.com^$all -||olosex.pics^$all -||painfont.cyou^$all -||builder.hufs.ac.kr/goLink.jsp?url=xn-$doc -||m.jubilantrefreshingvisit.buzz^$all -||lamilagq.com^$all -/1/index.html?p1=$doc -/fb_video_googleplay/*/index.html?*p1=$doc -||mikkim.top^$all -||discordvip.createsocialcard.top^$all -||discordvip.pages.dev^$all -^s1=*&click_id=$doc -^mh=*&s2=$doc -||onenightchicko.com^$all -/^https:\/\/[0-9a-z]{3,}\.[-a-z]{10,}\.(?:li[fv]e|top|xyz)\/[a-z]{8}\/(?:article\d{4}\.doc)?\?utm_campaign=\w{40,}/$doc,match-case,domain=life|live|top|xyz -/^https:\/\/[a-z]{2,3}\d\.biz\/go\/[0-9a-z]{15,18}$/$doc,domain=biz -! fake dating/prize/video sites -/^https?:\/\/[0-9a-z]*\.?[-0-9a-z]{4,}\.[a-z]{2,11}\.?[a-z]{0,7}\/(?:[0-9a-z]{6,10}\/)?\/?(?:article\d{4}\.doc)?\?(?:cid=[0-9a-z]+&)?u=[0-9a-z]{7}(?:&t=\d+)?&o=[0-9a-z]{7}/$doc,frame,match-case -/^https?:\/\/[0-9a-z]*\.?[-0-9a-z]{4,}\.[a-z]{2,11}\.?[a-z]{0,7}\/(?:[0-9a-z]{6,10}\/)?\/?(?:article\d{4}\.doc)?\?(?:cid=[0-9a-z]+&)?o=[0-9a-z]{7}(?:&t=\d+)?&u=[0-9a-z]{7}/$doc,frame,match-case -.live/web/?sid=t*~$doc -/?u1=*&o1=*&sid=t*~$doc -! push notification scam -/^https:\/\/(?:www\d\.)?[-a-z]{6,}\.(?:club|com|info|net|org)\/(?=[-_a-zA-Z]{0,42}\d)(?=[-_0-9a-z]{0,42}[A-Z])[-_0-9a-zA-Z]{43}\/\?cid=[-_0-9a-zA-Z]{10,36}(?:&qs\d=\S+)?&(?:s|pub)id=[-_0-9a-z{}]{1,32}(?:&s=0\.\d+)?(?:#\S+)?$/$doc,match-case,domain=club|com|info|net|org -/^https:\/\/(?:www\d\.)?[-a-z]{6,}\.(?:club|com|info|net|org)\/(?=[-_a-zA-Z]{0,42}\d)(?=[-_0-9a-z]{0,42}[A-Z])[-_0-9a-zA-Z]{43}\/\?(?:pub|s)id=[-_0-9a-z{}]{1,32}(?:&qs\d=\S+)?&cid=[-_0-9a-zA-Z]{10,36}(?:&s=0\.\d+)?(?:#\S+)?$/$doc,match-case,domain=club|com|info|net|org -/^https:\/\/(?:www\d\.)?[-a-z]{6,}\.(?:club|com|info|net|org)\/(?=[-_a-zA-Z]{0,42}\d)(?=[-_0-9a-z]{0,42}[A-Z])[-_0-9a-zA-Z]{43}\/\?clickID=[0-9a-f]{32}&sourceID=\d+$/$doc,match-case,domain=club|com|info|net|org -||ogtrk.net^ -||91.241.60.117^$all -||mfilecloud.com^$all -||xsharenode.com^$all -||yuppdownload.com^$doc -||drop-cloud.com^$all -||drop-cloud.org^$all -||sharpfiledownload.com^$all -||link-ii.info^$all -||thepcworld.net^$all -||one-click.cc^$all -||descarga.pw^$doc -||soft-lab.pw^$doc -||cheats.ink^$doc -||cheat-world.site^$doc -||clc-link.me^$all -||soft-portal.me^$doc -||app.mediafire.com/qtz1ifx0uetl4$doc -||mediafire.com/folder/10ejpiwio2gfh/$doc -||mediafire.com/folder/47ccu44v3b5sq/$doc -||mediafire.com/folder/s5k8d836a2xwr/$doc -||mediafire.com/folder/atuqt39mahs1x/$doc -||mediafire.com/folder/upkvl96lgm82i/$doc -||mediafire.com/folder/n2cwlepl4zeov/$doc -||mediafire.com/folder/cybqk7ulnmptm/$doc -||mediafire.com/folder/dsnn4gpdlnig4/$doc -||mediafire.com/folder/6q6psz38mqj7b/$doc -||mediafire.com/folder/d36tcrxj403tj/$doc -||www.youtube.com/channel/UCuHeiORKwgjZ5-n8xoq_zVA/$doc -||www.youtube.com/channel/UCCmzcphyrH6Br5eNUnQR2mw/$doc -||www.youtube.com/@pengwincheat/$doc -||sites.google.com/view/amamsoft|$doc -||sites.google.com/view/hubgames|$doc -||sites.google.com/view/ulpackmnn|$doc -||sites.google.com/view/externalcheats-game|$doc -||sites.google.com/view/zxcmell|$doc -||gamefree.vip^$doc -||gocrazy.gg^$doc -||murhack.com^$doc -||mi-hack.com^$doc -||spacecheats.site^$doc -||wow-site.site^$doc -||cheatworld.site^$doc -||sssrust.com^$doc -||softport.fun^$all -||cheat.sierramercado.com^$doc -||upload.advgroup.ru/mvWwiE4h$all -||blazehack.top^$doc -||fusionhacks.pro^$doc -||gameggss.site^$all -||cheatify.co^$doc -||cloud-folder.org^$doc -.systems/signup?ad_domain=$doc,popup -! fake software updaters /redirections -||1perpersqe1.com^$all -||atnpx.com^ -||best-winplace.life^$all -||checkup08.biz^ -||mfroute.com^ -||webpushcloud.top^ -||workerz1.com^ -||xpayperinstx2.com^ -||zvideo-live.com^ -/index.php?uid=*&code=ad^$doc -||koitushinterneinnehmen.s3.eu-central-1.amazonaws.com^$all -||my-hookup-clubs1.com^$all -||localsexfinderxxx4.com^$all -||sinder8.com^$all -||bigosext69.com^$all -||captcharesolving-universe.com^$all -! scam -||trfcbooost.com^$all -||turboadblocker.com^$all -||mysearchflow.com^$all -||youtuba.com^$all -||polyhymnia-mar.com^$all -! Typosquatting: redirects to scam sites -||bestbut.com^$all -||girhub.com^$all -||gmkail.com^$all -||goglle.com^$all -||linkefdin.com^ -||twitterr.com^$all -||yautube.com^$all -||yourube.com^$all -||youtubee.com^$all -||youtunbe.com^$all -||youutube.com^$all -||youvetube.com^$all -! "looks like typo squatting" -||wanderlust.rocks^$all -||harmlessmessage.com^$all -||hushemail.net^$all -||hushmailservice.com^$all -||lavaboom.net^$all -||privacyharbor.net^$all -||privacyharbors.com^$all -||prontonmailpro.com^$all -||protonmails.com^$all -||protonmails.net^$all -||safemessagesystems.com^$all -||silencemail.com^$all -||tutamail.net^$all -||tutanoto.com^$all -||messagesafe.net^$all -||msgsafe.net^$all -||best4fuck.com^$all -||aeeonmaill.com^$all -||bamboairways.com.vn^$all,to=~bambooairways.com -||schbnwabh.com^$all,to=~schwab.com -||kuaizip.com^$all -! ||zhuangjizhuli.com^$all -! ||zhuangjizhuli.net^$all -||win.zjwhr.top^$all -||geekotg.com^$all -||xiaobaixitong.com^$all -||daque.cn^$all -||dabaicai.com^$all -||qqfzn.com^$all -||lubuntu.net^$doc -/^https:\/\/serch\d{2}\.biz\/\?p=/$doc,domain=biz -! ||driverfix.com^$doc -||gghacks.com^$all -||rewardsgiantusa.com^$doc -||promotionsonlineusa.com^$doc -||displayoptoffers.com^$doc -||sweepstakesalerts.com^$doc -||qualityhealth.com^$doc -||consumerproductsusa.com^$doc -||get-cracked.com^$all -||tinyurl.com/gp84uz2$doc -||mediafiire.com^$doc -||onlinepromotionsusa.com^$doc -||greenadblocker.com^$doc -||flash.cn^$all -||hentai-tube.me^$doc -||foxmods.xyz^$doc -! phishing /malicious -||gesas.it^$doc -||techinnsrl.com^$doc -||studiogiamberardino.it^$doc -||eniedu.com^$doc -||gamletaarnhuset.no^$doc -||possessedcrackinghart.com^$all -||reepratic.com^$all -||5vcjzwb1tsnd82g.caflu87p1d.ru^$all -! phishing /scam /malware -||dogehype.com^$all -||rblx.land^$all -||csnegotiable.com^$all -||connect-csgo.com^$all -||events-csgo.com^$all -||nbryb.com^$all -||onemacusa.com^$all -||realnetnews.com^$all -||rogueleader.org^$all -||suggestive.com/deals/?cid=$doc -||discordap.$all -||discord*.gift^$all,domain=~discord.gift -||discord*.gifts^$all,domain=~discord.gifts -||discord-give.$all -||discord-nitro.$all -||discordgift.$all,domain=~discordgift.site -||dlscord*.$all -||dlscrod*.$all -||freediscordnitro.$all -||updatemobilee.com^$all -||supreme-ad-blocker.info^$all -||allprizesforme.com^$all -||hypernitro.ru^$all -||nitrohunt.com^$all -||tekhacks.net^$all -||freedownloadfiles.org^$all -||tw-goldenwinner-57.com^$doc -||fasterfiles.net^$all -||yunosurveys.com^$all -||a1475.com^$all -||ts-group.com^$all -||88btbtt.com^$all -! fake domain -||jinshanduba.org.cn^$all -||phpstat.cntcm.com.cn/phpstat/count/abceffgh/abceffgh.js^$script -||cdn.discordapp.com/attachments/916391647955279943/*^$all -||sideload.net^$doc -||stc.tools^$doc -||stcverify.com^$doc -||1980s.click^$doc -goharpc.com,pccrackbox.com,cracklabel.com,pcwarezbox.com,10crack.com,crackproductkey.com,crackpcsoft.net,crackwinz.com,genuineactivator.com,topcracked.com,fullcrackedpc.com,idmfullcrack.info,idmpatched.com,productkeyfree.org,patchcracks.com,cracksole.com,allsoftwarekeys.com,softwar2crack.com,productkeyforfree.com,wazusoft.com,rootscrack.com,activators4windows.com,procrackhere.com,proproductkey.com,freelicensekey.org,pcsoftz.net,freecrackdownload.com,f4file.com,serialkey360.com,zuketcreation.net,filedownloads.store##[onclick*="open"] -serialkey89.com,installcracks.com,crackserialkey.co,maliksofts.com,crackpropc.com,ayeshapc.com,crackhomes.com,crackspro.co,crackknow.com,4howcrack.com,trycracksoftware.com,getprocrack.co,activationkeys.co,organiccrack.com,softwarance.com,procrackkey.co,download4mac.com,freeactivationkeys.org,explorecrack.com,okproductkey.com,downloadpc.net,up4pc.com,hitproversion.com,cracktube.net,abbaspc.net,crackdownload.org,crackdownload.me,corecrack.com,windowsactivator.info,keygenstore.com,procrackpc.co,getmacos.org,latestproductkey.co,shanpc.com,crackpckey.com,torrentfilefree.com,patchcracks.com,idmfullversion.com,wareskey.com,crackbell.com,newproductkey.com,osproductkey.com,serialkeysfree.org,autocracking.com,crackzoom.com,greencracks.com,profullversion.com,crackswall.com,rootcracks.org,licensekeys.org,softserialkey.com,free4pc.org,productkeys.org,crackedfine.com,idmcrackeys.com,crackedhere.com,licensekeysfree.org,trycracksetup.com,crackedsoft.org,assadpc.com,thecrackbox.com,crackproductkey.com,cracklabel.com,keystool.com,crackedpcs.com,cracksmad.com,licensekeyup.com,chcracked.com,finalcracked.com,activatorpros.com,crackedmod.com,whitecracked.com,cracksoon.com,boxcracked.com,activationkey.org,serialkeypatch.org,crackedsoftpc.com,proapkcrack.com,softscracked.com,freeappstorepc.com,reallpccrack.com,crackfullkey.net,hmzapc.com,zcracked.com,usecracked.com,crackedversion.com,aryancrack.com,piratespc.net,reallcrack.com,fultech.org,crackpro.org,cracksray.com,pcwarezbox.com,cracksmat.com,crackxpoint.com,startcrack.co,crackbros.com,pcfullversion.com,sjcrack.com,repack-games.com,bypassapp.com,crackfury.com,9to5crack.com##center > [class*="buttonPress-"] -free4pc.org,warezcrack.net,freeprosoftz.com,vcracks.com,crackthere.com,keygenfile.net,scracked.com,cyberspc.com,softzcrack.com,crackintopc.com,zslicensekey.com,procrackpc.com,crackshere.com,crackdj.com,cracktopc.com,serialsofts.com,prosoftlink.com,zscracked.com,crackvip.com,windowcrack.com,softsnew.com,licensecrack.net,vstpatch.net,newcrack.info,topkeygen.com,vsthomes.com,vstserial.com,procrackerz.com,pcfullcrack.org,keygenpc.com,bicfic.com,ikcrack.com,downloadcracker.com,karancrack.com,piratesfile.com,activatorwin.com,starcrack.net,crackproduct.com,dgkcrack.com,crackglobal.com,crackcan.com,keygendownloads.com,crackpatched.com,windowsactivators.org,serialsoft.org,crackit.org,productscrack.com,crackurl.info,crackroot.net,crackmak.com,seeratpc.com,crackmix.com,piratepc.me,activators4windows.com,letcracks.com,latestcracked.com,proproductkey.com,fullversionforever.com,vlsoft.net,topcracked.com,goharpc.com,crackeado.net,freecrackdownload.com,assadpc.com,fileoye.com,f4file.com,crackpcsoft.net,crackwinz.com,excrack.com,mahcrack.com,get4pcs.com,keygenwin.com,mycrackfree.com,crackfullpro.com,crackkey4u.com,fileserialkey.com,cracksdat.com,crackgrid.com,licensekeysfree.com,crackkeymac.com,freecrack4u.com,getintomac.net,crackreview.com,activatorskey.com,kuyhaa.cc,cracktel.com,up4crack.com,cracksmat.com,crackbros.com,pcfullversion.com,crackcut.com,game-repack.site,dodi-repacks.download,yasir-252.net,getpcsofts.net,keystool.com,rootcracks.org,procracks.net,newproductkey.com,greencracks.com,zeemalcrack.com##div[class^="code-block code-block-"] -crackkits.com,crackwatch.org,origincrack.com,procrackerz.com,crackhub.org,crackrules.com,zeemalcrack.com,haxmac.cc,cracka2zsoft.com,clevercracks.com,crackpropc.com,crackspro.co,crackknow.com,onhax.in,haxpc.net##.getox -alicracks.com,win-crack.com,productkeyfree.org,productkeyforfree.com,wazusoft.com,piratesfile.com,kalicrack.com,sadeempc.com,letcracks.com,topkeygen.com,thepiratecity.co,torrentmac.net,ryuugames.com,rootscrack.com,pesktop.com,profullversion.com,crackswall.com,proappcrack.com,thecrackbox.com,autocracking.com,zgamespc.com,serialkeysfree.org,torrentfilefree.com,crack11.com##center > a -cracksoftwaress.net##div[style="float: none; margin:10px 0 10px 0; text-align:center;"] -haxnode.net##[id^="haxno-"] -romsdl.net##a[rel="nofollow noreferrer noopener"][target="_blank"] -zuketcreation.net##.cente-1 -xcloud.mom##.ads-btns -onhax.in##[class*="buttonPress-"] -cracka2zsoft.com##center > a -origincrack.com##center > button -||xforce-cracks.com^$doc -||fileisready.com^$doc -||coronasfapps.net^$doc -||sustac.com^$all -||thefreesoft.com^$doc -||sbjjzdwqg41ps.click^$all -||vgfrrtc.click^$all -||vablecable.click^$all -||mcteirx.click^$all -||igluumars.click^$all -||poixtre.click^$all -||ygabgga.click^$all -||browimeto.click^$all -||ambrkx.click^$all -||kcmcbc.click^$all -||ovgtt9j87tgh.world^$all -||wisoper.click^$all -||steamrip.click^$all -||swiftflare.click^$all -||rarz-uploader.com^$all -||rarz-loader.com^$doc -||uploader-rars.com^$doc -||fileexpert.xyz^$all -||securefiles.pro^$all -||filedomain.click^$all -||ewuipld.pro^$all -||dhux7ijh.click^$all -||lokasjc.cfd^$all -||sertyuurs.xyz^$all -||u87yuo9ojh.world^$all -||theipfire.co^$all -||securecracked.info^$all -||sushilprajapati.com^$all -.click/?s=*&g=*&q=files.zip$doc -.click/*?s=*&g=*&q=$script,3p -.click/?h=*&user=$script,3p -.click/?user=*&h=$script,3p -.click/*/?partner=*&pg=$script,3p -.xyz/*?s=*&g=*&q=$script,3p -.xyz/?h=*&user=45$script,3p -.xyz/*/?partner=*&pg=$script,3p -.cfd/?h=*&user=$script,3p -.cfd/?aD*HlwZT1jJnRtcD01JmFkY29kZT0x$script,3p -.one/?h=*&user=$script,3p -.online/?h=*&user=$script,3p -.pro/?h=*&user=$script,3p -%3C?php%20echo%20substr(md5(microtime()),0,rand(10,30));?%3E&$doc -/?*&gkss=$doc,domain=click|pro|xyz|cfd|world -||theannoyingsite.com^$all -/vpnupdate/*/index.html?*p1=$doc -||smartklick.biz^$all -||zoosk.online^$all -||fulptube.org^$all -*/bouncy.php?*&inPopUp=$all -||onpharmvermen.com^$doc -||sale24-pills.com^$doc -||hdvideosnet.com^ -||fullcrack.vn^$all -/rtbfeed.php?$image,3p -!#if !env_mobile -/^http:\/\/[a-z]{5}\.[a-z]{5}\.com\/[a-z]{10}\.apk$/$doc,match-case,domain=com -!#endif -||fetishpartner.com^$all -||facevideosc.com^$all -/?c=propeller&lpid=$all -||geoflix.me^$all -||skymods.net^$all -||hypixelstorexyz.pages.dev^$all -! torrdroidforpc. com -||slugmefilehos.xyz^$all -||tinyurl.com/setup-full-version$doc -torrdroidforpc.com##[href^="http://slugmefilehos.xyz/"] -||haxsoft.com^$all -||zenlytrade.com^$all -||rubika.ir^$all,domain=~web.rubika.ir|~m.rubika.ir -||luckypapa.top^$all -||nbsfmradio.com^$all -||ngazi.co.tz^$all -||video-watch1.com^$all -||musicinmysoul.biz^$all -||choseoffhandsight.com^$all -||melodydownloader.com^$all -||flymylife.info^$all -||kochava.com^ -||neptunclicks.com^ -||arakusus.com^$all -||imgfil.com^$all -||urlcod.com^$all -||tiurll.com^$all -||urlca.com^$all -||lomogd.com^$all -||voutew.com^$all -||abukss.com^$all -||kiknu.com^$all -||konmm.com^$all -||xiuty.com^$all -||pejik.com^$all -||oyndr.com^$all -||lpoms.com^$all -||psfmi.com^$all -||gftet.com^$all -||fwern.com^$all -||ytomb.com^$all -||gghut.com^$all -||nkmoo.com^$all -||nnjou.com^$all -||foilf.com^$all -||vlyyg.com^$all -||pimlm.com^$all -||mciun.com^$all -||sanff.com^$all -||gghhe.com^$all -||ooppnm.com^$all -||vnomm.com^$all -||nnggo.com^$all -/axad/?lpkey=$doc -||vlcdownloads.com^$all -&t=main9|$doc,domain=live -&t=main9ljs|$doc,domain=live -&t=main9expsess|$doc,domain=live -&t=mono|$doc,domain=info -||hypixei.com^$all -! Fake Steam website -||99box.com^$all -||ezadblocker.com^$all -||watchadsfree.com^$all -||discordoauthverification.onrender.com^$all -||barlear.ru^$all -||kaminarisubs.net^$all -||galeden.cn^$all -! Phishing gathered from Twitter -||3utilities.com^$all -||bafybeidzp4sgidm4rvsc32fofkhbz5bdotbekov4mnwzejakvnzhhohysa.ipfs.dweb.link^$all -.top/index-install.html|$doc -||r39-g003-h8ig0w-u8f0we8-fgw0rgf-0we880e-rhgth.obs.ap-southeast-2.myhuaweicloud.com^$all -||bafybeiexjty7qmufu5jvbyln5ce5mue2lqw2htafc3api4wwsefxet5k54.ipfs.dweb.link^$all -||jlydxj.com^$all -||chargerlogistics-dot-exceldocsverification.uk.r.appspot.com^$all -||bizerba-dot-azure-projectfiles.uk.r.appspot.com^$all -||aajdrp.com^$all -||italianlottery.com^$all -||metamasek.cc^$all -||theexpressiveteacher.com^$all -||qhyhw.com^$all -||007itshop.com^$all -||tonghongad.com^$all -||thndg.com^$all -||e-tax-nta.web.app^$all -||dinglike.com^$all -||blisterlngdate.com^$all -||fapello.xyz^$all -||pf0755.cn^$all -||hohshops.com^$all -||yanrefael.com^$all -||bavaria-cup.ru^$all -||patriothomestore.com^$all -||ameixosszpxpass.top^$all -||techguykev.com^$all -||anzenns.com^$all -||paekatcerd.com^$all -||pppfgz.wiki^$all -||luckypapa.xyz^$doc -||manage-fpw-my-sakura-fpw-jp-fpw.impulsion.mu^$all -||honda-law-office.jp/wp-includes/70038/Earthcorejp/|$doc -||metamasktoken.cc^$all -||itsaol.com^$all -||tokyu-dept.site^$all -||qhigh.com^$all -||yoinst.com^$doc -||shindaan.com^$doc -||almostmy.com^$all -||mkwlejfnaklglkasdjg.com^$all -||caponefx.com^$all -||ifavoritebuy.com^$all -||jpzone.vip^$all -||aeonhelp.org^$all -||tokyobag.shop^$all -||erdfkhxrnanm.top^$all -||tfehmsag.xyz^$all -||authority-uspser.top^$all -||www.uspertest.vip^$all -||xqfefdkey.xyz^$all -||aeonasco.com^$all -||tokyo-waters.com^$all -||app-bitbanlk-cc.weebly.com^$all -||www-bitbenk-app.com^$all -||artenthusiastany.sa.com^$all -||oioi-tokye.top^$all -||tpoint-sites.com^$all -||cordialhoist.top^$all -||app.stocksj.xyz^ -||oioi-store.vip^$all -||totalpcsecure.com^$all -||gczxaczixzierxzier.com^$all -||zhikunux.com^$all -||myetherwalletet.org^$all -||smart-ex-jp.top^$all -||luckvote.top^$all -||aofengniu.com^$all -||kuronekoyamato-jp.com^$all -||appleidliy.com^$all -||jp-kensatsu.com^$all -||saichengbs.com^$all -||npajp.icu^$all -||web-telegvm.org^$all -||m-k-r-5.com^$all -||if-eku3a-fp.com^$all -||ilar.cn^$all -://ev.ri-*gb.com/home/home.php$doc -||lunarserver.cn^$all -||sapjp.com^$doc -||t-pia.me^$all -||toythieves.com^$all -||pocket-888.com^$all -! scam sites -||webuzz.me^$doc -||coup-ling.net^$all -||coup-ling-dm.net^$all -||gokinjolove.jp^$all -||gokinjolove.net^$all -||hornygirlsinapp.com^$all -||id001.jp^$all -||10un.jp^$doc -||3tuhabe.info^$doc -||4256-on.biz^$doc -||5dgja.com^$doc -||6aqr9j.com^$doc -||8senjya.jp^$doc -||a-divination.com^$doc -||ad7mylo.com^$doc -||advice-obtrusive.com^$doc -||after-pop-abc.com^$doc -||aiai-talk.com^$doc -||aiaitalk.com^$doc -||alicekdsod.com^$doc -||amusementpalacegonow.com^$doc -||any2st777fhy.com^$doc -||applaud-acclaim.com^$doc -||aqmessage.jp^$doc -||armed-postulation.com^$doc -||asetpun.com^$doc -||astraeus-star.site^$doc -||best-chat.net^$doc -||best-friendd.net^$doc -||best-friendd2022.net^$doc -||bestxchat.net^$doc -||bluew-web.com^$doc -||car-na.jp^$doc -||cbcdnkyyxubdsrmg.com^$doc -||cdypsqghdgrw.com^$doc -||ch3l.net^$doc -||chl3.net^$doc -||clubfukugyou.work^$doc -||cosmos01.com^$doc -||date-app.net^$doc -||days-neighborhood.com^$doc -||decided-decision.com^$doc -||determinatioon.jp^$doc -||di-ana.jp^$doc -||dosukoudo.net^$doc -||dot-acc.xyz^$doc -||drct-match.com^$doc -||drct-match.net^$doc -||dydynight.org^$doc -||eag1eag1e.com^$doc -||en-kakuri.biz^$doc -||en-mu-su-bi.com^$doc -||entertainment-undamped.net^$doc -||eyes-luv-u.com^$doc -||fapp.work^$doc -||fl-0wer685hjdp300.com^$doc -||fle652.net^$doc -||flk41.com^$doc -||formatch.co.jp^$doc -||fortune-fate.jp^$doc -||fortune-koun.jp^$doc -||fortune-luna.com^$doc -||friendxroom.com^$doc -||ft-sou.com^$doc -||fukumaneki-888.com^$doc -||fukumaneki2211.com^$doc -||g6-gonight.org^$doc -||gabfbnaqodnvfafnj.com^$doc -||gandestin0.jp^$doc -||girls.a-makeup.com^$doc -||gokusenn.jp^$doc -||goldenluck.jp^$doc -||happy468.net^$doc -||happymethod55.com^$doc -||hi-a-so-bi.net^$doc -||himatalk77.net^$doc -||himichat999.net^$doc -||home4ugoog10you.com^$doc -||homeseventen.com^$doc -||hope-for-shiningday.com^$doc -||hori-hori.xyz^$doc -||hp-dy.net^$doc -||hphp-dy.net^$doc -||i.redi-ana.jp^$doc -||i2019.jp^$doc -||indiscerptible-provisionally.jp^$doc -||indi-ana.jp^$doc -||ir0d0ri.jp^$doc -||iri195.net^$doc -||irie3.net^$doc -||ivy2241u.jp^$doc -||jamjamjam.biz^$doc -||k-colorful.jp^$doc -||k-smilegallery.com^$doc -||k1wa.jp^$doc -||kaiun-com.com^$doc -||kaiun-park.jp^$doc -||keep.secret-ace.com^$doc -||koifull.jp^$doc -||koiroom.net^$doc -||koiroomnotice.net^$doc -||koun-yogen.com^$doc -||l-one-one.com^$doc -||l-thr-thr.com^$doc -||l-two-two.com^$doc -||l0vekatsu.com^$doc -||lightn5.com^$doc -||lin-link.net^$doc -||line-line-biz.com^$doc -||link-service.net^$doc -||linkage-linkage.com^$doc -||log.xi-cascade.com^$doc -||love-fit.jp^$doc -||love-letter-dm.com^$doc -||love-letter.info^$doc -||love.sweet199.com^$doc -||loveaholics.com^$doc -||lovemelo.jp^$doc -||lover-stream.com^$doc -||luuce.jp^$doc -||lzogdlorkfssui.net^$doc -||machi-match.info^$doc -||madnna.jp^$doc -||madnna.net^$doc -||mangogo.jp^$doc -||mangogo.work^$doc -||match-mate.jp^$doc -||match-mate.net^$doc -||matimati.site^$doc -||maytail.jp^$doc -||meguri-eye.net^$doc -||meguri-y.net^$doc -||meltiness.jp^$doc -||mobaapo.net^$doc -||moody-night.net^$doc -||moogle-set.space^$doc -||moogle-set.website^$doc -||muhamed-online.com^$doc -||my7love.xyz^$doc -||mystic-wonder.com^$doc -||naja59jg.com^$doc -||navi-match.net^$doc -||near-s.com^$doc -||nearing.jp^$doc -||neverthelessadvertising.com^$doc -||new.hpk0fu9.jp^$doc -||newencounter.pw^$doc -||nydlaepytwuekwhfyvivsf.com^$doc -||on-glamour.xyz^$doc -||one-chan-love.love^$doc -||one-match01.com^$doc -||onega.jp^$doc -||onegaga.jp^$doc -||oprirgreifeuprdlojeocg.com^$doc -||originatepour.com^$doc -||osubstancenasubstitute.com^$doc -||otona-nona.biz^$doc -||otonanona.jp^$doc -||otonatime.net^$doc -||oyasu-mi.tokyo^$doc -||paesbeaqerdrsheuboapyh.com^$doc -||pair-online.jp^$doc -||piasukai.xyz^$doc -||pinkredwhitereef.greenreef.net^$doc -||plati-num.com^$doc -||pr0m.site^$doc -||privatelife.jp^$doc -||psg.make9-salon.com^$doc -||purpleiyvf.com^$doc -||r30address.com^$doc -||r30deai.com^$doc -||reddishpurple.com^$doc -||reverita-t.jp^$doc -||rhsrthrtjhe.com^$doc -||ripiai.com^$doc -||romancetime.jp^$doc -||romancetrain.jp^$doc -||royalclass-dm.com^$doc -||royalclass.info^$doc -||s4fk.destin0.jp^$doc -||salon1999.net^$doc -||salonoshirase.net^$doc -||sen-no-y-t.com^$doc -||shells.pairapple.net^$doc -||slow-piercer.com^$doc -||sns-pair.net^$doc -||soul-ft.com^$doc -||space-high.com^$doc -||spirilp3000.com^$doc -||spirituallounge-3000.com^$doc -||sugarboxxx.net^$doc -||sugulove.com^$doc -||sun.kgi5fgwpp8.com^$doc -||sweetmemo.net^$doc -||sweetmemoryy.com^$doc -||t1a.jp^$doc -||tadaapo123.com^$doc -||tadaapomail.com^$doc -||tadamatch.com^$doc -||tenluuce.jp^$doc -||terinron.com^$doc -||tsumalabo.jp^$doc -||tttt.star095.com^$doc -||tumalabo.net^$doc -||tyotto.jp^$doc -||tyotyo.biz^$doc -||u3ig.com^$doc -||undetermined-whitish.com^$doc -||ura-nai-best.com^$doc -||vanilla-japan.net^$doc -||verita-t.jp^$doc -||very.bes-tplay.com^$doc -||with.2-on-line.com^$doc -||yu0287tk.com^$doc -||yumajhsbsff.com^$doc -||apple22cd.com^$doc -||cherry.mermaid77c.com^$doc -||jivo-ce.jp^$doc -||online2022-shopping.com^$doc -||whimsicalrain.com^$doc -||merachatkaghar.xyz^$all -||myjapanonlineshop.xyz^$all -||mynameserverok.xyz^$all -||slapcleaner.com^$all -||tatikhale.xyz^$all -||2226wurpatw.tokyo^$doc -||app.plum375ap.com^$doc -||asiansgetnaughty.com^$doc -||blackstunners.com^$doc -||budhump.com^$doc -||connect-wp.net^$doc -||electro-magneticwave.com^$doc -||eternal.mobius-loop.net^$doc -||fukuinnnokotoba.com^$doc -||humpbuds.com^$doc -||line-bs.com^$doc -||localsgowild.com^$doc -||naughtyfever.com^$doc -||oo.opaall.com^$doc -||sldg02.com^$doc -||sll-lp1f.com^$doc -||smart-chat.info^$doc -||tenseikaiun.com^$doc -||v1v-g1ft-o7.com^$doc -||woman-busi.com^$doc -||secure-57v.pages.dev^$all -||ll-m-work-2020.com^$doc -||slb3cr9dx9.jp^$doc -||sukui05.com^$doc -||36vv-ssj.com^$doc -||4miracle4.jp^$doc -||7nwa.cxiujudffaitd.jp^$doc -||abc.youtus7216.com^$doc -||amari-ama.com^$doc -||ank.vop-95jszkk.jp^$doc -||axd.jp^$doc -||bambam-bi.com^$doc -||c-al-e1nder.com^$doc -||chocochipu-o.com^$doc -||chumsline.jp^$doc -||cosmos-metatrade.com^$doc -||dandelion-horsetail.work^$doc -||dddiey-s1d2.com^$doc -||ddeityy.com^$doc -||deaimatch.jp^$doc -||facebooc.jp^$doc -||ff-dai.net^$doc -||friendmatch.jp^$doc -||ganesha0910.com^$doc -||ganesha52697.com^$doc -||gtir5die6sutngr.jpn.com^$doc -||happiness-gate.com^$doc -||happy-h0ur.jp^$doc -||heart-s2.com^$doc -||iikanjiyanakanjide.wixsite.com^$doc -||kisekichikara.com^$doc -||l1nefree.com^$doc -||loto-chance.com^$doc -||makoto-in-room.wixsite.com^$doc -||moira-101.com^$doc -||nem0phila000.com^$doc -||nitr5eur6fjhtsw.jpn.com^$doc -||npo-government.jp^$doc -||okai.work^$doc -||p3s18f1d0.com^$doc -||pa-ir.net^$doc -||pdss3a1r.jp^$doc -||pfunding-01.com^$doc -||pororin081.com^$doc -||primal.premium-prism.net^$doc -||rainbow-fortune.biz^$doc -||rainbow-fortune.com^$doc -||rainbow-fortune.jp^$doc -||sall.etchat.jp^$doc -||som7ebb3.com^$doc -||somatryui53.com^$doc -||star-fortune.com^$doc -||supp0.jp^$doc -||toki-no-irodori.com^$doc -||tokyo-get-business.jp^$doc -||tomodachixoxo.wixsite.com^$doc -||triangle123.com^$doc -||trust-tarade.net^$doc -||ukokjxfbdqwffmuvsd.jp^$doc -||umjditpwlb4f.com^$doc -||unmei-kaika.com^$doc -||very10.com^$doc -||vf5rkgirsir8ska.jpn.com^$doc -||vitop7eg5sqwgbk.jpn.com^$doc -||vixii.co^$doc -||wishhoree1890.com^$doc -||with-with.net^$doc -||xs5rur1she7eyry.jpn.com^$doc -||you.y-uh9k7n5y.tokyo^$doc -||57zyazmk.jp^$doc -||a.tlineat.jp^$doc -||abc.lemon2023.com^$doc -||angelchance.com^$doc -||b2ujcm.com^$doc -||be-loaded.com^$doc -||clarinet20.com^$doc -||coralnov.jp^$doc -||deai.amour-site.com^$doc -||deaisaito.jp^$doc -||dia-lover.com^$doc -||doorway-of-guidance.com^$doc -||ed-blissful.com^$doc -||eika-akie220202.com^$doc -||eternalfame461.com^$doc -||ev-upstart.com^$doc -||for-tg.com^$doc -||for20-coco.com^$doc -||fortune-gluck.com^$doc -||fortune-mooon.com^$doc -||ft-flower.com^$doc -||fukugyou2022.net^$doc -||fukukomachi-220513.com^$doc -||fukunoha211013.com^$doc -||fukura210317.com^$doc -||future-marvellous.com^$doc -||gluck-happy.com^$doc -||gluck-fortune.com^$doc -||gluck-happyuranai.com^$doc -||gluck-horoscope.com^$doc -||gluck-luckyuranai.com^$doc -||gluck-miracleuranai.com^$doc -||gluck-secreturanai.com^$doc -||gluck-uranai-gluck.com^$doc -||gluck-uranaisalon.com^$doc -||gogonews.club^$doc -||happiness-sign.com^$doc -||happy-gluck.com^$doc -||happyuranai-gluck.com^$doc -||heart-uranai.com^$doc -||holydivination.com^$doc -||honnkaku-uranai-gluck.com^$doc -||horoscope-gluck.com^$doc -||iflirts.com^$doc -||im-excellent.com^$doc -||infomessagehappy.com^$doc -||iris-808.com^$doc -||jdig56po.com^$doc -||kaaairoo549kai.com^$doc -||kahimeyuki.jp^$doc -||kantan-uranai.com^$doc -||karinaroom.wixsite.com^$doc -||keitai-uranai.com^$doc -||l-chat.jp^$doc -||login-chat.net^$doc -||lovekatsu2277.com^$doc -||luckyuranai-gluck.com^$doc -||match1ng.com^$doc -||mintiia.com^$doc -||mio-love2.wixsite.com^$doc -||miracleuranai-gluck.com^$doc -||moon-1light.com^$doc -||moon1234moom.com^$doc -||mttk2020.jp^$doc -||mystery-forest.com^$doc -||mr-benjamin.com^$doc -||oficialinesp.wixsite.com^$doc -||one-sunnyday.com^$doc -||online-gluck.com^$doc -||onlineuranai-gluck.com^$doc -||p-chi.info^$doc -||pairpure.jp^$doc -||pairpure.jp.net^$doc -||photo-gallery-picture2398.com^$doc -||pinponpaipan.com^$doc -||poke10ve.com^$doc -||pocketlove.jp^$doc -||pos.tnsd-apsq.com^$doc -||ppo.re9t-hmd0.com^$doc -||pulp-days.jp^$doc -||pwo.wane-jctl.com^$doc -||relife0001.com^$doc -||relifemail555.com^$doc -||s-kiseki.jp^$doc -||sebumu28.com^$doc -||secreturanai-gluck.com^$doc -||sevensmooon.com^$doc -||smartphone-uranai.com^$doc -||su-hisenjutu.com^$doc -||suhi-senjutsu.com^$doc -||suhi-sejutsuexpert.com^$doc -||tada10ve.jp^$doc -||tada1ove.com^$doc -||take.the.n-chapter.jp^$doc -||tkmailgirl.xyz^$doc -||toxic-ventilate.com^$doc -||ultratime.info^$doc -||uranai-gluck.com^$doc -||uranai-keitai.com^$doc -||uranai-smartphone.com^$doc -||uranaikantei-gluck.com^$doc -||uranaionline-gluck.com^$doc -||uranaisalon-gluck.com^$doc -||uu-charisma.jp^$doc -||v-yummy.com^$doc -||vroom24.com^$doc -||vroom24365.com^$doc -||webdeai.jp^$doc -||wmw.matchin.jp^$doc -||wn56y7ve57j12zuv7tyj.com^$doc -||woman-good-job.work^$doc -||world.ex-advantage.jp^$doc -||xxa.uji8979erd77.jp^$doc -||y-tradie.com^$doc -||zaitaku-baito.com^$doc -||action0120.com^$doc -||alphabet0120.com^$doc -||best-web2020.com^$doc -||computer0120.com^$doc -||cyber0120.com^$doc -||degmq5l23.jp^$doc -||dosudosuo.com^$doc -||fanfande.net^$doc -||female-good.work^$doc -||forum0120.com^$doc -||foundate-core.net^$doc -||intern0120.com^$doc -||kasegeru-rank.com^$doc -||li-neeee.net^$doc -||linemail.work^$doc -||make2022.com^$doc -||positive0120.com^$doc -||protein0120.com^$doc -||ol2ewq989.jp^$doc -||openhouse0120.com^$doc -||salon.beauty202201.com^$doc -||sbfw.work^$doc -||sma-talk.com^$doc -||smile-4u-2u.com^$doc -||sokkinjobmasu.work^$doc -||tim.time-time-zyunizi.com^$doc -||xxxmake.com^$doc -||yours-mail.com^$doc -||1litteno.home-walil1.jp^$doc -||1st-mail.jp^$doc -||2507u35ia6mk1.com^$doc -||2qpk150djf0ri.jp^$doc -||56fv2z8bfv9.com^$doc -||5jd2tj2idrool.com^$doc -||777.funnyy.net^$doc -||ai-ne.net^$doc -||ai-tas.com^$doc -||ai3tu.com^$doc -||alch.treas.jp^$doc -||amaenbo.jp^$doc -||amourplace.jp^$doc -||ancient-guidance.jp^$doc -||apple012.com^$doc -||ataru-loto.com^$doc -||atchm.net^$doc -||bontruth.com^$doc -||c.onnect.jp^$doc -||c930lhsivns1b.jp^$doc -||chat111room-09.com^$doc -||confidencial-uniq.com^$doc -||connect-jumbo.com^$doc -||cosdate.jp^$doc -||cxbvnmyeruw.com^$doc -||d-hiyori.com^$doc -||daisukimatch.jp^$doc -||defendeerrpro.jp^$doc -||diamond-line.net^$doc -||dinosaur-crown.com^$doc -||dreamatch.jp^$doc -||edge-campaign-japan.com^$doc -||eiqnnmxvun5ge97.com^$doc -||en5wr67sag3.com^$doc -||equation-of-happiness.com^$doc -||eromatchi.jp^$doc -||ev.every-every-happy.com^$doc -||fanta-stic.net^$doc -||flirt.com^$doc -||fx-protrade.net^$doc -||ggcake.tindersplus.net^$doc -||glitter-girls.net^$doc -||gokuhuku.jp^$doc -||gyakusimei.com^$doc -||h-spe.net^$doc -||hapim.net^$doc -||happy-egg.net^$doc -||happylife-partner.com^$doc -||heartmatch.jp^$doc -||hho.yes-hhoyf.com^$doc -||home-22-time.com^$doc -||hy4ied3d.com^$doc -||i5h56ozira7l6.jp^$doc -||ii-earth.com^$doc -||imvcenuietfmw.net^$doc -||jack-roaddinc.jp^$doc -||japanhotties.jp^$doc -||jdoasjfojuhod.com^$doc -||kaiunmegami.jp^$doc -||kaiunrecipe.com^$doc -||koipara.jp^$doc -||lib-333-lib.com^$doc -||local-bang.com^$all -||lovedotto.net^$doc -||lovewish.jp^$doc -||lvmeet.net^$doc -||machimatch.jp^$doc -||matchmix.jp^$doc -||mem.wakuwa98.com^$doc -||mmdem.net^$doc -||mmkat.net^$doc -||mmlnc.net^$doc -||moelove.jp^$doc -||mustwork.work^$doc -||myocean.jp^$doc -||nakayama.chikarakosopower.com^$doc -||netsgram.com^$doc -||nextaex.com^$doc -||one.thx-birthday.com^$doc -||one-two-up.jp^$doc -||one1-day.com^$doc -||otakuplay.jp^$doc -||otakurabu.jp^$doc -||p18d6.hp.peraichi.com^$doc -||pairnavipairnavi.com^$doc -||pakok.net^$doc -||paradise-angel.com^$doc -||peaces-ign.com^$doc -||peachzone.site^$doc -||plaza-l1o0nni-p1aza.com^$doc -||ps-sns0girls.com^$doc -||ptron.net^$doc -||pxk.jp^$doc -||ranch-1and.com^$doc -||removerted.com^$doc -||rexsvj8omabse.jp^$doc -||richheart.completelifetime.com^$doc -||s908b9n62w53u.jp^$doc -||sard1.com^$doc -||sca-letter.com^$doc -||sdhjak.com^$doc -||sea-into-53426l1.com^$doc -||sfsrch.com^$doc -||sns.smle.mobi^$doc -||sokudeai.jp^$doc -||sokuh.net^$doc -||sonic-nicehands.com^$doc -||specialapp-sns.com^$doc -||stowers-service.com^$doc -||sxtown.jp^$doc -||syakoba.com^$doc -||teamwork-project.com^$doc -||tennshinomitibiki01.com^$doc -||tenshinomitibiki.com^$doc -||unafei-kokusai.com^$doc -||upforit.com^$doc -||uptoest.com^$doc -||vhills.net^$doc -||votteetten.com^$doc -||vqydliiyda.net^$doc -||wbpb9.com^$doc -||whim-w.net^$doc -||xn--4dkua4c8143c.jp^$doc -||xn--edkc9m807k.jp^$doc -||xn--n8j0la8wb3547bghe.jp^$doc -||xn--n8jwkyc7fw52nfvd.jp^$doc -||xn--z9j635l1gs.jp^$doc -||xn--z9jzga6u1506a.jp^$doc -||xyg.application-sns.com^$doc -||you4love.jp^$doc -||zmaka.net^$doc -||0281.jp^$doc -||0909810.com^$doc -||093093.jp^$doc -||11093.jp^$doc -||19093.jp^$doc -||2349.jp^$doc -||2h1.jp^$doc -||39093.net^$doc -||39093.tv^$doc -||4151.biz^$doc -||4151.tv^$doc -||55093.com^$doc -||55bdsm.com^$doc -||aeru.tv^$doc -||affairdating.com^$doc -||aitai.biz^$doc -||amantssexy.com^$doc -||askme4date.com^$doc -||b-7.jp^$doc -||babaroa.net^$doc -||bbs-7.jp^$doc -||bbsdx.jp^$doc -||benbbs.net^$doc -||bnbn.jp^$doc -||c-y.jp^$doc -||celcol.jp^$doc -||celebri.jp^$doc -||choucreme.com^$doc -||chy.jp^$doc -||cjok.net^$doc -||crostol.com^$doc -||datenabi.com^$doc -||doem.jp^$doc -||ebifri.com^$doc -||eraberu.jp^$doc -||erocm.com^$doc -||flirtanu.com^$doc -||flirtmoms.com^$doc -||freedom-garden.com^$doc -||freesexmatch.com^$doc -||geh.jp^$doc -||getnaughty.com^$doc -||gofun.jp^$doc -||gspo.jp^$doc -||guj.jp^$doc -||guw.jp^$doc -||h093.net^$doc -||hipma.jp^$doc -||hmai.jp^$doc -||hmhm.jp^$doc -||hoct.cc^$doc -||hxh.jp^$doc -||igetnaughty.com^$doc -||irha.jp^$doc -||jnjn.jp^$doc -||jukcha.com^$doc -||jukuana.net^$doc -||jyk.jp^$doc -||kadak.jp^$doc -||kanbbs.net^$doc -||kokanjo.net^$doc -||koubi.jp^$doc -||koy.jp^$doc -||ksds.jp^$doc -||linblog.info^$doc -||linguette.net^$doc -||locals.dating^$doc -||loveju.net^$doc -||mamak.jp^$doc -||matchx2.com^$doc -||meetdatekiss.com^$doc -||meetpie.net^$doc -||mejp.net^$doc -||mgirl.jp^$doc -||mland.jp^$doc -||mmnav.jp^$doc -||moecoco.com^$doc -||mymymy.net^$doc -||natadecoco.net^$doc -||naughtydate.com^$doc -||newhoney.jp^$doc -||nuide.net^$doc -||oneisan.net^$doc -||oolontya.com^$doc -||pair-pair.com^$doc -||panacota.net^$doc -||piparelli.net^$doc -||pirikitos.com^$doc -||pmew.jp^$doc -||pnav.jp^$doc -||quickflirt.com^$doc -||ricopin.com^$doc -||scnv.jp^$doc -||serev.net^$doc -||sfg.jp^$doc -||sfge.jp^$doc -||singles50.jp^$doc -||smab.jp^$doc -||smism.jp^$doc -||smmax.jp^$doc -||soha.jp^$doc -||sok8.net^$doc -||stomatico.com^$doc -||suguaitaina.com^$doc -||suguao.net^$doc -||sumatuma.com^$doc -||sxe.jp^$doc -||syasei.com^$doc -||tapi2.jp^$doc -||tarto.net^$doc -||tendermeetonline.com^$doc -||tendermeets.com^$doc -||tinql.com^$doc -||together.com^$doc -||maturedating.com^$doc -||topg.jp^$doc -||tubakinohimitsu.amebaownd.com^$doc -||tugonoyoi.com^$doc -||twowife.com^$doc -||txtx.jp^$doc -||ulla.com^$doc -||uniformdating.com^$doc -||wantubad.com^$doc -||wildmeets.com^$doc -||xgal.jp^$doc -||xzo.jp^$doc -||yceleb.com^$doc -||yourskiss.com^$doc -||life-is-luminous.com^$doc -||00ebjdbagyqwt.club^$doc -||0didjsgheje.club^$doc -||5050.fm^$doc -||6xtpke4.com^$doc -||8xpamp5fxd.com^$doc -||aberration-0000000001.com^$doc -||adoptmeantranslate.com^$doc -||after-7.net^$doc -||aikatuz.jp^$doc -||all-time-domain.com^$doc -||always-happy-fortune.com^$doc -||alwayslike.safestspot.jp^$doc -||anau6stg6y.com^$doc -||andyou2.com^$doc -||aphrodite-astrology.net^$doc -||apppleheaddd.jp^$doc -||bestcosme.jp^$doc -||browser9182.web.fc2.com^$doc -||burmesterone.jp^$doc -||catchmetalk.com^$doc -||charecttorr.jp^$doc -||charm-n.com^$doc -||chesscheckersvariation.com^$doc -||circle7-bd.com^$doc -||club-house.link^$doc -||cocoro-liberty.com^$doc -||coin-of-fate.jp^$doc -||d-sr.net^$doc -||d-will.net^$doc -||daylighteel.com^$doc -||ddxdda.unusualdate.com^$doc -||digital-mail.jp^$doc -||divination-truth.com^$doc -||during-the-holiday.com^$doc -||e-d-en.com^$doc -||every-au.com^$doc -||every-bisque.com^$doc -||every-blanched.com^$doc -||every-cute.com^$doc -||every-dark.com^$doc -||every-dodo.com^$doc -||every-enjoy.com^$doc -||every-isb.com^$doc -||every-line1.com^$doc -||every-line2.com^$doc -||every-nejp.com^$doc -||every-pcpc.com^$doc -||every-salmon.com^$doc -||every-super.com^$doc -||every-toroku1.com^$doc -||every-toroku2.com^$doc -||every-toroku3.com^$doc -||experiencedlawsuit.com^$doc -||febdd.info^$doc -||fortune-yakata.com^$doc -||gate-1-spiritual.com^$doc -||gnan.jp^$doc -||gnchag.com^$doc -||gran-danker.jp^$doc -||gyakunan.net^$doc -||happiness-gate01.com^$doc -||higher-mainnd.jp^$doc -||igazre.com^$doc -||jinsei-uranai2023.com^$doc -||just1ce.net^$doc -||kantei-oracle.com^$doc -||kinhako-m02.com^$doc -||lover-c.com^$doc -||mamagathering.org^$doc -||match007.jp^$doc -||mc-aoyama.com^$doc -||miracle-door.com^$doc -||mother-sku.jp^$doc -||okanekasegeru.com^$doc -||online-777.jp^$doc -||p-mel.net^$doc -||part-ner01.jp^$doc -||peachcafe.net^$doc -||poison-idea.com^$doc -||polaris-775.com^$doc -||pollutionsatisfyadopt.com^$doc -||prophecy-of-fate.com^$doc -||rosaca-nina.net^$doc -||s-space.jp^$doc -||sokuai.jp^$doc -||sp-gt-meet.com^$doc -||spring-sealion.com^$doc -||spiritual-gt.com^$doc -||spiritual-leading.com^$doc -||sta.star-star777.com^$doc -||star-superstar-yellow.com^$doc -||sugusagasu.com^$doc -||sukui01.com^$doc -||sukui02.com^$doc -||sukui03.com^$doc -||sukui04.com^$doc -||sukuinote.jp^$doc -||sumsmsp.info^$doc -||szddbxyumfcf.net^$doc -||tarot2fs.com^$doc -||telet.me^$doc -||tomikuji.com^$doc -||ugfdwmausxfy.net^$doc -||unmei2023.com^$doc -||uranai-hit.com^$doc -||uranai-like.com^$doc -||utugmz93sr.com^$doc -||wastearguewasteill.com^$doc -||web.fe-vrier.com^$doc -||whpbrmdss.com^$doc -||will-kantei.com^$doc -||wkdk.jp^$doc -||6xy-zg.com^$doc -||cwa-2020.com^$doc -||dwoetbarcrooplsloiwh.com^$doc -||gargar.making-garden.com^$doc -||happy-popice.com^$doc -||kronos2022.com^$doc -||like-baloon-leaf.com^$doc -||mor.chance-10dayful.com^$doc -||octagongon.com^$doc -||s.meru.jp^$doc -||ts7nept8.com^$doc -||vcrwv.monster^$doc -||x-yz6asktoi.com^$doc -||x-yzn6.com^$doc -||x6-yz-kzyx0.com^$doc -||x6-yzk.com^$doc -||xy-z6goo-xyz.com^$doc -||xy-z6x.com^$doc -||ytjon-d2s1ah.com^$doc -||lets-tip315.com^$doc -||loveri.net^$doc -||lvli.jp^$doc -||m2sg.jp^$doc -||mamasg.net^$doc -||mcbien.net^$doc -||mlaligms205s.com^$doc -||rollfa.net^$doc -||rollin-12fate.com^$doc -||rollin-fat1e.com^$doc -||sgua.jp^$doc -||spilov.net^$doc -||splv.jp^$doc -||suguap.net^$doc -||vien.jp^$doc -||a-power.jp^$doc -||eternal-station.jp^$doc -||friends-connect.com^$doc -||kinun-2023.com^$doc -||madonnaoasis.com^$doc -||msg.metamessen.net^$doc -||o-cean-fortune.biz^$doc -||o-cean-fortune.com^$doc -||secondary-with.com^$doc -||fure-ai.com^$doc -||fure-ai.site^$doc -||happy-classic.com^$doc -||rea-love.net^$doc -||natu.natural-natural-pure.com^$doc -||btc8228.com^$all -||btc9339.com^$all -||abacus-prefix.com^$doc -||celezma.net^$doc -||dismay-sacred.com^$doc -||loveru.jp^$doc -||morale-yellow.com^$doc -||t1amo.jp^$doc -||uggstore.online^$doc -||fair.alivio-platform.com^$doc -||pair-seat.net^$doc -||pairseat.net^$doc -||sez.jp^$doc -||matching-go.jp^$doc -||kira-kira.blue^$doc -||p-chi.tech^$doc -||rearea2022.com^$doc -||vanilla-japan.love^$doc -||jtybleua.jp^$doc -||mai-tel.jp^$doc -||sfc.bz^$doc -||sfget.jp^$doc -||download-campaign.com^$doc -||fine-cloud.net^$doc -||float-next.com^$doc -||matomenever.com^$doc -||mid-round.com^$doc -||otonanojikan13579.net^$doc -||up-loop.net^$doc -||videochat-fan.com^$doc -||mamamour.net^$doc -||2chlovers.web.fc2.com^$doc -||lovez.jp^$doc -||moremorelove.net^$doc -||after-noon.jp^$doc -||bse.bb64bb8.com^$doc -||chatchu.jp^$doc -||cupid-chat.net^$doc -||docommo.com^$doc -||doconno.com^$doc -||f9ng8gb.com^$doc -||fx640b4a8v2n.net^$doc -||grace-pot.com^$doc -||leaf.lau-rier.com^$doc -||maiwai2.jp^$doc -||moon1hit.com^$doc -||moonlight-ebbandflow.com^$doc -||nanroom.net^$doc -||nowtuma.net^$doc -||p39ztyx.com^$doc -||pastelism02.jpn.com^$doc -||pineapplecake-yummy.com^$doc -||ssq.spofbd99.com^$doc -||t26dmg9.com^$doc -||tokuyama-kaiun.com^$doc -||vy8monlf1t.com^$doc -||wifekai.net^$doc -||yummy-yuy.com^$doc -||yummy2-yuy.com^$doc -||zerocha.jp^$doc -||catchato10.com^$doc -||chat-search.com^$doc -||happy.pp99adad.com^$doc -||hhh.u3se3jg3gae.com^$doc -||hzalwkcjbudom.info^$doc -||ii.iriiss.com^$doc -||let.attract1v3.com^$doc -||lmoox5.net^$doc -||mchynxqpiswuj.info^$doc -||mtl.metel-x-x-x.com^$doc -||panlcake.net^$doc -||paradise.shine-site.com^$doc -||s21aabb6.com^$doc -||sstt22free5.com^$doc -||utg.ri64-pdmv.com^$doc -||venus-uranainoizumi.com^$doc -||vgwkhaujofqxe.info^$doc -||whuaqdsfjktgr.info^$doc -||vegansweeets.jp^$doc -||getmatch.jp^$doc -||hn-mizuki.com^$doc -||urara02032023.com^$doc -||ang.el-mail.online^$doc -||atre-frer6.com^$doc -||berate-expressive.com^$doc -||comcom0511.com^$doc -||gloria-divination.$doc -||mothersmilk.jp^$doc -||otomachi.jp^$doc -||smoothie-smoothie.jp^$doc -||suffix-consignment.com^$doc -||amazonlogistics.jp^$all -||fukusenkan.com^$doc -||koi-chat.net^$doc -||sachikru.com^$doc -||sachikru1.com^$doc -||sachikru3.com^$doc -||sachikru4.com^$doc -||sachikru5.com^$doc -||sachikru6.com^$doc -||sachikru7.com^$doc -||sachikru8.com^$doc -||bookblack5208w.com^$doc -||freest200look.com^$doc -||leterthe-gese.com^$doc -||off-wiloeese.com^$doc -||the-style-free.info^$doc -||weekenddogkeep.com^$doc -||koundayori.com^$doc -||second-love-love.jp^$doc -||deaiai55.com^$doc -||kokocha.site^$doc -||hjytu75fro0.jp^$doc -||secssnetplan.jp^$doc -||68a9i9w.com^$doc -||988s82r.com^$doc -||efzhm85.com^$doc -||rhyprua.com^$doc -||tui8s2e.com^$doc -||emyqsvk7zw.com^$doc -||evqhubkfh8.com^$doc -||jinuja5zgm.com^$doc -||ljqq93npbr.com^$doc -||n9zxgxpdu6.com^$doc -||pnw0kbzjtt.com^$doc -||sdlbtwi3lr.com^$doc -||tvngrq6yat.com^$doc -||vjybuykaxz4.com^$doc -||willgood-will.com^$doc -||y2sysagetf.com^$doc -||san-dast.net^$doc -||dedestin0.jp^$doc -||fortune-fortuna.com^$doc -||legamee.jp^$doc -||miraiah.jp^$doc -||sen8senjya.jp^$doc -||happy-matome.com^$doc -||fukuroou.jp^$doc -||kennsaku.jp^$doc -||matchingsite.jp^$doc -||for.life-thrones.com^$doc -||7wbb.com^$doc -||me-ru.jp^$doc -||byoep.moustachespontaneous.com^$doc -||categorywrench.com^$doc -||moustachespontaneous.com^$doc -||waterproofvile.com^$doc -||ht54s-grf.com^$doc -||hyop-ed12.com^$doc -||ss7-yhw0-wk.com^$doc -||w-dbl.com^$doc -||recruit-gold.com^$doc -||tokimake.site^$doc -||tokimeku.xyz^$doc -||6q5c53c6sg4z9vkkpqnc.com^$doc -||emoti-on.com^$doc -||jinsei-undesu.com^$doc -||sftqg7t9cyzjaw0b.com^$doc -||spiritual-jp.com^$doc -||unki-josho.com^$doc -||xdpiwrx7ub.net^$doc -||feve-r.com^$doc -||ma-tching.com^$doc -||mugicom.live^$doc -||romanc-e.com^$doc -||sns3615.com^$doc -||talkthattalkllc.com^$doc -||go-ld-li-ne.site^$doc -||gold-line.click^$doc -||gold-line.online^$doc -||cloudmax.jp^$doc -||mama-piece.com^$doc -||mamakatu42.blogspot.com^$doc -||princess2022.com^$doc -||vivian.jp.net^$doc -||cha-nce.net^$doc -||mirusiru.online^$doc -||mirusiru.site^$doc -||mobileverify.net^$doc -||grabgiftcard.net^$doc -||giftcardhero.net^$doc -||ewapps.top^$all -||awapps.cfd^$all -||awapp.store^$doc -||cleansoft.online^$doc -||softlab.fun^$doc -||appxfree.com^$doc -||appxfree.top^$doc -||vbucks.buzz^$doc -||vbucks.cloud^$doc -||absent-pretty.net^$doc -||ahmrispfewmkhbwz.com^$doc -||every0028.jp^$doc -||flash0007.jp^$doc -||grasshoppermirro.com^$doc -||nuts.sugar1105.com^$doc -||tatuieaawtkjnxzj.com^$doc -||vacuumcleanerani.com^$doc -||prc.pr-e-c-i-o-us.com^$doc -||vghe0-ed7-d.com^$doc -||kounnomichishirube.net^$doc -||lucksignpost0804.org^$doc -||lightning02s.com^$doc -||lightning0707.com^$doc -||jkytd-rd3.com^$doc -||le.tter99.com^$doc -||silversex.com^$doc -||flirttime.com^$doc -||eyesput55.com^$doc -||scene7goal3.work^$doc -||all-friends0817.com^$doc -||ma-rry.net^$doc -||ma-rry.site^$doc -||altdorfer-niklaus.com^$doc -||eliminateabyss.com^$doc -||lucky-star69.com^$doc -||lucky-star8.com^$doc -||tulip-tulip.net^$doc -||koinik.net^$doc -||ukylcim.top^$doc -||gallery-sight.com^$doc -||yurizono.com^$doc -||9gcpz8hu.com^$doc -||bobonheur.com^$doc -||cit-rine.com^$doc -||ctn-ctn.com^$doc -||holy-kantei.com^$doc -||sk3-renew.com^$doc -||unki-max.com^$doc -||boost6182ll.com^$doc -||eir.tdhg7ppa.com^$doc -||grea-fd12dr.com^$doc -||cpd.ipllo4ys.com^$doc -||htjrs-fgds.com^$doc -||recklessdroughtburglar.com^$doc -||the-match.jp^$doc -||gekkei-jyu-gekkei-jyu.com^$doc -||gekkeijyu-gekkeijyu.com^$doc -||lemonadebb.net^$doc -||naruf4253090.com^$doc -||ev4ev.biz^$doc -||evkakuri2308.click^$doc -||gtex3.com^$doc -||nice.par-even.com^$doc -||pr-0m.link^$doc -||wa-nago-wagona.com^$doc -||chi-yo-1807chiyo.com^$doc -||fd-2.shop^$doc -||cuddle.koi-ba-na.com^$doc -||globalreward77.com^$doc -||jukukoi.jp^$doc -||jukukoi.me^$doc -||buono2023-web.com^$doc -||a3-1089115.com^$doc -||cloud3-3679244.com^$doc -||d3-8692227.com^$doc -||ic-05lion.com^$doc -||m3-8498263.com^$doc -||michi-fortune.jp^$doc -||miemashita.jp^$doc -||p3-5723935.com^$doc -||s3-8388725.com^$doc -||x3-001-8103.com^$doc -||x3-228-1713.com^$doc -||lovely-lovely.com^$doc -||shareno1wish.net^$doc -||cue-find.com^$doc -||d-position.com^$doc -||d-position.shop^$doc -||kaiunnookite.com^$doc -||bs-03-6743-2266.net^$doc -||love2-mail.com^$doc -||gokinjoscreen.com^$doc -||koun-wa.com^$doc -||koto-dama-kin.com^$doc -||one----talk.com^$doc -||pc.deainobasyo.jp^$doc -||ewfwetqfbhmlodz.com^$doc -||wkcs.onesmbg-login.com^$doc -||mariage-inc.com^$doc -||tenmei-michibiki.com^$doc -||10vekatu.jp^$doc -||a-ro-ma.com^$doc -||a1tai7.jp^$doc -||atchao.jp^$doc -||bestchat-chat.com^$doc -||brs.bi09aso-yo.xyz^$doc -||brs.vacat81-best.tokyo^$doc -||chu-chu.jp^$doc -||deai-labo.site^$doc -||enenkatukatumail.com^$doc -||enjoylife2001.net^$doc -||ffr548tyfhe.jp^$doc -||fure-i.site^$doc -||k0k0cha.link^$doc -||ir0d0r1.jp^$doc -||lovelyhappy.jp^$doc -||lovemelo.net^$doc -||ma-t-chy.link^$doc -||maiwa12.jp^$doc -||mat-chy.site^$doc -||me08mo.com^$doc -||media-matchinggo.com^$doc -||meltiest.jp^$doc -||meltylove.jp^$doc -||mem44.com^$doc -||merukore.jp^$doc -||moremoremail.net^$doc -||p-pure.jp^$doc -||p0cket1ove.jp^$doc -||p0rte.site^$doc -||pairife.jp^$doc -||platinumpla2023.com^$doc -||riarialuvluv2023.com^$doc -||romance-time.net^$doc -||sez-pr.com^$doc -||soklove.net^$doc -||sugulove777.com^$doc -||ta0dal0ve.com/^$doc -||ta1kcall.site^$doc -||tada-love.jp^$doc -||tokimekitaine.net^$doc -||tokimekimaildesu.net^$doc -||tokumeichat135.net^$doc -||tokumeichatmail.net^$doc -||tsumatsuma.xyz^$doc -||olive-ft.jp^$doc -||fortuna-destiny.com^$doc -||fountain-unmei.com^$doc -||happylife-10uanai.com^$doc -||holy-12seizaholy.com^$doc -||shiawasenokotae.com^$doc -||super-spfortune.com^$doc -||welcome-happyroad.com^$doc -||az-l.com^$doc -||luna-t.net^$doc -||sm-bt.net^$doc -||sm-heaven.com^$doc -||smdotcom.com^$doc -||seselagi.com^$doc -||nc2.site^$doc -||recipe000.tokyo^$doc -||5y4-hters-765.jp^$doc -||h5t4rsw-htrs.jp^$doc -||h6t4sw-nhytd.jp^$doc -||neyr5s-e45f.jp^$doc -||uj6y5defg.jp^$doc -||y54wdrg.com^$doc -||peach2023.net^$doc -||gokinjo---hot.com^$doc -||iwish.ltd^$doc -||matchin.site^$doc -||metalepsa.me^$doc -||nysoctieotion.tech^$doc -||peroiramus.me^$doc -||www.academicsingles.jp^$doc -||ado.wish-best.com^$doc -||ga6jkbl.jp^$doc -||keiunkan.com^$doc -||matching-search.jp^$doc -||matching-searchh.jp^$doc -||falsettoy.click^$doc -||on-li-ne.net^$doc -||rayon-mid.com^$doc -||pc.mt3sys.com^$doc -||as25ap.com^$doc -||asap15.com^$doc -||sm8787.com^$doc -||pc.line-center.jp^$doc -||pc.peach1ink.jp^$doc -||felicitaline.com^$doc -||foretheure.jp^$doc -||alt.com^$doc -||keenchimairaanthem.com^$doc -||pc.h1ma.jp^$doc -||pc.ta1k.jp^$doc -||63jehxd5vfi6.jp^$doc -||imiqmcyj4wjj.jp^$doc -||kev8ffh2n9a8.jp^$doc -||qeucuzpbv6jq.jp^$doc -||ccappu-ccinno.com^$doc -||ccappuccinno.com^$doc -||happiness-road.net^$doc -||daddyclub.net^$doc -||papamagic.net^$doc -||hoshi-no-michibiki.com^$doc -||hoshi-no-michibiki.jp^$doc -||miracle.magic-connect.net^$doc -||shinoriori2023.jp^$doc -||book-aerkeep.com^$doc -||libiro-aree22.com^$doc -||look302se.com^$doc -||premium-2023.click^$doc -||premium-2023.info^$doc -||premium-lucky.com^$doc -||fun-uranai.com^$doc -||hrt-hrt.com^$doc -||uranai-su-ki.com^$doc -||million-vita128.com^$doc -||eb-nav.com^$doc -||global-riward77.com^$doc -||x9mw.com^$doc -||essence-one.net^$doc -||himegoto-time.com^$doc -||himegoto-time.jp^$doc -||happiness-app.net^$doc -||happyhappylovely.jp^$doc -||lovelylovelyhappy.jp^$doc -||matching364.com^$doc -||pc.maleana.jp^$doc -||dr5rmdxa.com^$doc -||efmg29.com^$doc -||executiveclub-x3.com^$doc -||kinkyu-desuku-27.com^$doc -||pktbuu.morau.top^$doc -||qxb0v.com^$doc -||w0o.eu^$doc -||zj5c3.com^$doc -||e-summer.top^$doc -||ehxp.e-flo.top^$doc -||getchance.top^$doc -||ilovu.store^$doc -||in-sight.top^$doc -||moneyget.top^$doc -||millionget.top^$doc -||premiers.top^$doc -||sugukasegu.top^$doc -||tbotb.top^$doc -||tyfto.friendmap.top^$doc -||wdujqj.repaymen.top^$doc -||iris-making.com^$doc -||lm-mousey-happy.com^$doc -||speeds5-mmiliked.com^$doc -||blackknocckk.jp^$doc -||finelucckyy.jp^$doc -||nokiseitjnemnew.jp^$doc -||vi.violleet.com^$doc -||gg.garrnnet.com^$doc -||scmhubffttnnu.jp^$doc -||super-grander.jp^$doc -||dznufijtjbgyi.jp^$doc -||fl.floriittee.com^$doc -||ll.liberrttyy.com^$doc -||6kk2a4t.com^$doc -||eujsiyajep.niigata.jp^$doc -||fnebvr1a.com^$doc -||humane-urgent.com^$doc -||kantanemusuu.jp^$doc -||nextgenpeacety.jp^$doc -||sp-ciro-gov.com^$doc -||startwork-introduce.com^$doc -||success-dream.jp^$doc -||super-express-f.com^$doc -||lovetwipaco.com^$doc -||sharesharemail.net^$doc -||high-incomes.com^$doc -||line-channel-info.com^$doc -||line-special-information.com^$doc -||pretty-topspace.com^$doc -||safety-line-message.com^$doc -||secure-line-network.com^$doc -||fun-comu.click^$doc -||fun-comu.space^$doc -||make-money-happy.site^$doc -||money-present.com^$doc -||rich-cash.fun^$doc -||t-gotousen.fun^$doc -||t-gotousen.site^$doc -||t-haihukikaku.site^$doc -||take-money-happy.fun^$doc -||take-money-happy.site^$doc -||tw-happy.space^$doc -||tw-lucky.site^$doc -||luxury-dream.site^$doc -||make-money-happy.online^$doc -||t-haihukikaku.online^$doc -||t-present.online^$doc -||rich-cash.site^$doc -||fr4aj87j.com^$doc -||island-vanity.com^$doc -||side-joblp.com^$doc -||32k987.com^$doc -||71l0b.com^$doc -||ajv06.com^$doc -||f8dt6.com^$doc -||i7fq6o.com^$doc -||m65ln.com^$doc -||mphb0.com^$doc -||sj74is.com^$doc -||e-chat1.com^$doc -||fc67x.com^$doc -||benefit-billion.com^$doc -||condemn-fearful.com^$doc -||heading-towards.net^$doc -||search-happiness.jp^$doc -||5hjd9t.com^$doc -||cd7z7b.com^$doc -||d8yfr7.com^$doc -||everydaykennsyou.com^$doc -||king-sweepstakes.com^$doc -||qaghoz.com^$doc -||rjwc95.com^$doc -||xhictk.com^$doc -||64ws9x.com^$doc -||npdptp.com^$doc -||resort-life7.com^$doc -||friendmap.top^$doc -||moraeru.top^$doc -||mmnn.jp^$doc -||pxmmm23.net^$doc -||lutherinfo2.com^$doc -||mamatech.pepper.jp^$doc -||manpuku-ja.com^$doc -||manpuku-ja.jp^$doc -||ms-lounge.net^$doc -||sm-sl.net^$doc -||ssr1000.com^$doc -||sslovexxxrr.com^$doc -||st-art.life^$doc -||ten-un.com^$doc -||xanadu-du.com^$doc -||z9iq6vt.com^$doc -||yuppie-yuppie.com^$doc -||enchantedfruit.com^$doc -||meltsweetbite.com^$doc -||okanekubari.site^$doc -||4kx3a.com^$doc -||ce0oil1ibu.com^$doc -||ezg-iy.com^$doc -||hjr-wq.com^$doc -||olt-nw.com^$doc -||abrhsuoamrnrx.com^$doc -||agqycbadbofog.com^$doc -||awagbbxlyqoys.com^$doc -||blfeiywbthjom.com^$doc -||brwasnlipggqq.com^$doc -||bvwozybuqztvg.com^$doc -||cqcwalvjljddvrebl.com^$doc -||efljiccdztabg.com^$doc -||fbgajrlmjiotb.com^$doc -||hneeeixuyivwg.com^$doc -||hrzonvohdppab.com^$doc -||iinfssspoipo.com^$doc -||jjvkbzdungkop.com^$doc -||jqbwhhxvcytgh.com^$doc -||jvuihhlzixawx.com^$doc -||khrbuumwcntfx.com^$doc -||kmnvwjrbskybh.com^$doc -||kswrkbdsejqpm.com^$doc -||lwjrudzmzygol.com^$doc -||motsrgidyzoaz.com^$doc -||nlfhtxehjzeti.com^$doc -||ptgt.monuone-present.com^$doc -||rsgyndxlwfurm.com^$doc -||sfxmgzhaeeguq.com^$doc -||txczlzcskwozcjcptvvyz.com^$doc -||zekhauukqrqwx.com^$doc -||mugen-online.com^$doc -||pnieair.cloud^$doc -||shiny-up.com^$doc -||unlock-the-bg2.com^$doc -||yl-0-wf.com^$doc -||auto.giz-store.com^$doc -||heat.tsu-bas.com^$doc -||hapihapi24.com^$doc -||layer-pj.com^$doc -||xn--gmqz9af0r9srup0c.com^$doc -||shop22.fishkillbaptistnurseryschool.org^$all -||a-labyrinth.com^$doc -||du0.jp^$doc -||hapinet.net^$doc -||kiseki.com^$doc -||b.eeaach.com^$doc -||gre.green-g-r-ee-n.com^$doc -||msdjdhj-tyq.com^$doc -||fukutoku-miyako.com^$doc -||ka73-urara.club^$doc -||uraaka.net^$doc -||peraichi.com/landing_pages/view/s8j8k/$doc -||lovelove-on-line.site^$doc -||gmatch.jp^$doc -||gppw5cm4.com^$doc -||mai1b0x.com^$doc -||majiainc.com^$doc -||m4x8ndwhed9.com^$doc -||meet-up.jp^$doc -||torquetrove.com^$doc -||getm.site^$doc -||kuronekoyamzyato.top^$all -||9npze.com^$doc -||gsi3t.com^$doc -||support-e-n.com^$doc -||n43vr.com^$doc -||qf6tm5ug.com^$doc -||azbzcz.com^$doc -||candycandypop.com^$doc -||fate-15.com^$doc -||loveste.cc^$doc -||marketingcareer.jp^$doc -||showa-klub.com^$doc -||lines.fxmwjjeusmulsjf.com^$doc -||new.deeper-start.com^$doc -||xczzfvxknafgoawjtv.com^$doc -||lover.new-n-e-x-u-s.com^$doc -||lines.hdaprocqxmthax.com^$doc -||lshyodrgehlnyswsjq.com^$doc -||lum-i0e0r0e.com^$doc -||himitumatch.com^$doc -||a9gcq7sc.com^$doc -||yy4rhgzd.com^$doc -||fallenscfwqy2pbin0.jp^$doc -||genetick4zwtf6c8mh5.jp^$doc -||harmfuleqwrj14xnvdc.jp^$doc -||marginz03nx1oe.jp^$doc -||nextb5vzysjcq8d0.jp^$doc -||outdoorvzk6la39o7r8.jp^$doc -||political7450163928.jp^$doc -||reasonable5786mi4n3srxq.jp^$doc -||supervision6912305847.jp^$doc -||tender9041257836.jp^$doc -||veryverythanks1123.jp^$doc -||brotherorgan.com^$doc -||familymusicman.com^$doc -||motherguitar.com^$doc -||swe.sweet-sweet-sweets.com^$doc -||vqsrz.ctwyrs2aki6zyggj.com^$doc -||webworks-plus.jp^$doc -||colorfulromance.com^$doc -||gmatch.jp^$doc -||me-l-t1.com^$doc -||blue-uranai.com^$doc -||bluemoon-uranai.com^$doc -||bm-bluemoon.com^$doc -||kin-un2023.com^$doc -||kinun-777.com^$doc -||kousenkan.com^$doc -||aikotoba2020.com^$doc -||ainokotoba1515.com^$doc -||yunekon2taxiy.jp^$doc -||midnighteaparty.com^$doc -||nav1.jp^$doc -||gamojinsegesegeas.com^$doc -||jalaobrsdrgssdrgrs.com^$doc -||ml.ml.wawahrsdfrhfsdfh.com^$doc -||up.ch3m1stry.com^$doc -||wawahrsdfrhfsdfh.com^$doc -||hoshiyomi-yakata.com^$doc -||hoshiyomi-yakata.jp^$doc -||admin-matching-pair.jp^$doc -||matching-pair.jp^$doc -||media-matching-pair.jp^$doc -||mimiray-k.jp^$doc -||miray-k.jp^$doc -||kaimiray-k.jp^$doc -||luna-ria.jp^$doc -||ms88sv.com^$doc -||msiv5.com^$doc -||free-ren.jp^$doc -||free-ren.com^$doc -||zeroappointment.com^$doc -||zeroapo.com^$doc -||zeroendeapo.com^$doc -||fortune-crystal.com^$doc -||ctl.ultima.fun^$doc -||fab-inst.com^$doc -||ube71ki83.com^$doc -||ai-mono.jp^$doc -||again-agreement.com^$doc -||birth-bravery.com^$doc -||cross-customer.com^$doc -||desk-dictionary.com^$doc -||event-experiment.com^$doc -||final-future.com^$doc -||t-uraaka.site^$doc -||jap.cookingsboss.com^ -||jap.cookinggenuine.com^ -||soft-pro.site^$all -||apkmirror.co^$all -||webogram.org^$all -||webogram.ru^$all -||xn--80affa3aj0al.xn--80asehdb^$all -||telegr.am/user_mgt/login$all -||tgram.ru^$all -||telegramm.site^$all -||web-telegram.net^$all -!#if !env_mobile -||n.fcd.su^$all -!#endif -||ru-torproject.ru^$all -||anapatformacion.org/modules/file/tor/tor-browser.zip^$all -/^https:\/\/[a-z]+\.com\/away\.php\?url=[%0-9A-z]{100,}$/$doc -||a-new86.com^$all -||ane102.net^$all -||honey888.love^$all -||ima55notice.biz^$all -||infozoomplus.biz^$all -||koi2ru.com^$all -||likechat33.net^$all -||likechat33call.net^$all -||pair55.net^$all -||pair55call.net^$all -||room2021.net^$all -||roomoshirase.net^$all -||smore91.net^$all -||som419.net^$all -||touchoshirase.net^$all -||touchtacchi.net^$all -||wsws1234.net^$all -||wswsnews.net^$all -||s3.amazonaws.com/extpro/speed4.html$all -||imgfarm.com/images/dlp2/prod$3p -||myway.com^$all -/anemone-*.min.js$script,1p -||tor-browser-rus.ru^$all -! techsupport scam -/?{BV_SRCID}&$doc -/werrx01/^$doc -/merrx01/^$doc -||ondigitalocean.app/*^phone=+1-$doc -||plesk.page/*?phone=$doc -/W*ity0*00Er00*/index.$doc -||s3.ap-northeast-1.amazonaws.com/tedex.com/*/index.html$all -||smarttvnew.vercel.app^$all -/systemerror-mac/?$doc -/Win0SecurityEr0CH0700Err0rSt/index.html$doc -/werrx01/index.html$doc -||activexsportswear.com^$all -||besttreasurecoastroofing.com^$all -||eharmonysingle.online^$all -||errorordufhwe.s3.ap-south-1.amazonaws.com^$all -||microsoftsupportservices.com^$all -||teszoom.com^$all -||tiffanyandtoke.com^$all -||s3.ap-northeast-2.amazonaws.com/%*!!%*/index.html$doc -||s3.amazonaws.com/securityfotrus.1.13/index.html$all -||s3.eu-west-2.amazonaws.com/675.88.u6.8878/index.html$all -||s3.us-west-1.amazonaws.com/security.uni.firewall.$all -/Win00Security07/index.html$document -||varchardetection777.site^$all -||xngqoc.com^$all -/Er0Wind0fsd0Security087/index.html$doc -||chuberanetto.tech^$all -||starglaxyheritez.tech^$all -||websafety.online^$all -||chuibesumeru.shop^$all -||windwserror.com^$all -||popts.site^$all -||cnctddot.com^$all -||woocommerce-sagepayments.com^$all -||mct-niger.com^$all -||klinikmrc.com^$all -||govimpot.com^$all -||hrmntrimagukeazctesto.shop^$all -||stb-media.xyz^$all -||compass-holding.com^$all -||pguilford.com^$all -||theweddingmahotsav.com^$all -||xac2gjx.autos^$all -||detailsreceipts.com^$all -||hodllane.com^$all -||hiddenamonghearts.com^$all -||stowesupperclub.com^$all -||185.161.248.253^$all -||auditedmicros.website^$all -||checkedservices.website^$all -||chutkeliye.online^$all -||golovanov.net^$all -||lucasmrahman.xyz^$all -||processprivate.website^$all -||tobyaburton.xyz^$all -||votuporn.cfd^$all -||yaravoyara.online^$all -||microagent.site^$all -||165-227-173-120.plesk.page^$all -||horporn.cfd^$all -||dare2life.click^$all -||pushlandings.b-cdn.net^$all -||ssupp2.site^$all -||webaudhar.online^$all -||asian-maturedates.click^$all -||flextd.shop^$all -||64-226-126-114.plesk.page^$all -||boomdates.online^$all -||erroarwasuppoto.world^$all -||fastndio.s3.eu-central-1.amazonaws.com^$all -||ikiped.online^$all -||pub-77106c9273be4f3fbec6b6d6c3c51b7f.r2.dev^$all -||hosterunozxxxna.shop^$all -||dbslfqowejd.b-cdn.net^$all -||ghrthryh.b-cdn.net^$all -||sok-rev.b-cdn.net^$all -||erroarwasuppoto.life^$all -||saludoads.com^$all -||janganhackya.com^$all -||viewmerit.info^$all -||blexad.shop^$all -||xoty55.cfd^$all -||dumbabd.online^$all -||alewis.sbs^$all -||edeyk.sbs^$all -||edfzh.sbs^$all -||tanhes.sbs^$all -||tansxv.sbs^$all -||tanvoa.sbs^$all -||tanwmv.sbs^$all -||kosbqn.sbs^$all -||taniqj.sbs^$all -||ahmxgv.sbs^$all -||edluv.sbs^$all -||koskdd.sbs^$all -||liqftt.sbs^$all -||s3.ap-northeast-1.amazonaws.com/ongoing.com/aanoitmessure/index.html^$all -||foodhereandnow.com^$all -||setkuttina.pages.dev^$all -||liq27qbf.monster^$all -||certificate-certificate.gettrials.com^$all -||vasafreight.com/ajax.php? -||thin-skinned-cost.000webhostapp.com^$all -||boring-tesla.149-102-231-176.plesk.page^$all -||happy-diwali-sabhiko-shubhkamneyen.b-cdn.net^$all -||qwudbhasdwq9h.sa.com^$all -/^https:\/\/[0-9a-z]{12,16}\.azureedge\.net\/\d{4}\//$doc -||fcukxxx.com^$all -||xbasugigqiuegiwqdbsx.s3.ap-northeast-1.amazonaws.com^$all -||popworldservice.com^$all -||perutzxrqe.ru.com^$all -||qwudbhasdwq8h.sa.com^$all -||uwqghwfdwqywetqwfghewqeqweig.s3.ap-southeast-2.amazonaws.com^$all -||baattakkkk.online^$all -||assitechnique.net^$all -||kelectricalservices.com^$all -||fantastic-salamander-c721cb.netlify.app^$all -||shishimishi.shop^$all -||track7.online^$all -||ondigitalocean.app/*/index.php?cezp=$doc -||amazonaws.com/*.*.*.*.*.*.*.*/*/index*.html$doc -||jp-helplineweb-chrsmjinfgtizonedswebs-01.s3.ap-southeast-2.amazonaws.com^$all -||germanytechsupport.pages.dev^$all -||systemsupport.pages.dev^$all -||techsupport-ev2.pages.dev^$all -||pub-3b4d978c14114185847089b100168c84.r2.dev^$all -||31snowmeprona.ru.com^$all -||9wqjkdisaodjwqd.sa.com^$all -||tingtang.pages.dev^$all -||tomtom.pages.dev^$all -||wertyhjuhg.online^$all -||adolphusisomlycyou.pages.dev^$all -||lianashepard.autos^$all -||nihongirl.online^$all -||blob.core.windows.net/$web/index.html$doc -||windows.net/*?bcda=$doc -/index.html?ph0n=1-$doc -||technosoft35.ru^$all -||tube-dvm.com^$all -||japanonlinebroadcast.live^$all -||crackedpc.org^$all -||cracksway.com^$all -||gamingnewsanalyst.com^$all -||gamingdebates.com^$all -||bonzi.link^$all -||bestgames-2022.com^$all -||videoadblocker.pro^$all -||pccdirect.site^$all -||templatesearch.org^$all -||f-i-n-d.onlyfuns.win^$all -||search-journal.onlyfuns.win^$all -||ftx.onlyfuns.win^$all -||adultpics.wiki^$all -||gamefabrique.com^$all -||d2r3dgsh5nr4kg.cloudfront.net/installer/$all -||skytils.net^$all -||skyblockmaniacs.net^$all -||fragbots.net^$all -||hard-configurator.com^$all -||filmshngjbzix.blogspot.com^ -||mopiez.com^ -||goglel.com^$all -||easylist.club^$all -||bestextensionegde.com^$all -.com/api/users*^pii=&in=false^$doc -.com/api/users*^in=false&pii=$doc -.com/api/users*^in=false&token=$doc -||asdmcm.com^$all -.com/bot-captcha-1?h=$doc -/^https:\/\/[a-z]{5,7}\.[0-9a-z]{12}\.top\/[0-9a-f]{32}\/[0-9-a-f]{32}\/$/$doc,match-case,domain=top -/\/[0-9a-f]{32}\/maq\/$/$doc,match-case,domain=com|top -/antivirus/main/cleaner-default/*$doc -! Copycat and fake sites -! FitGirl Repacks - Official site: fitgirl-repacks.site -||fitgirl-repacks.*^$all,domain=~fitgirl-repacks.site,to=~fitgirl-repacks.site -||fitgirl-repack.*^$all,domain=~fitgirl-repacks.site -||fitgirlrepacks.*^$all,domain=~fitgirl-repacks.site -||fitgirlrepack.*^$all,domain=~fitgirl-repacks.site -||fitgirls-repack.*^$all,domain=~fitgirl-repacks.site -||fitgirl-repacks-site.org^$doc,domain=~fitgirl-repacks.site -||fitgirlrepacksite.com^$all,domain=~fitgirl-repacks.site -||fitgirl.cc^$all,domain=~fitgirl-repacks.site -||fitgirlrepackz.*^$all,domain=~fitgirl-repacks.site -||fitgirltorrent.*^$all,domain=~fitgirl-repacks.site -! Magisk manager - Official site: https://github.com/topjohnwu/Magisk -||magiskmanager.com^$all -||magisk.me^$all -||magiskapp.com^$all -||magiskroot.com^$all -||magiskroot.net^$all -||magisks.com^$all -||themagisk.com^$all -||magiskzip.*^$all -||magiskmodule.com^$all -||magiskmanagerroot.com^$all -||magisk.download^$all -||magisk.info^$all -! LibreTube - Official site: libretube.dev -||libretube.*^$all,domain=~libretube.dev,to=~libretube.dev -||libretubeapk.com^$all,domain=~libretube.dev -! ReVanced - Official site: revanced.app -||revanced.$all,from=~revanced.app,to=~revanced.app -||revancedapk.$all,domain=~revanced.app -||revancedapp.$all,domain=~revanced.app -||ytvancedpro.com^$all,domain=~revanced.app -||youtubevanced.$all,domain=~revanced.app -||youtuberevanced.*^$all,domain=~revanced.app -||re-vanced.com^$all,domain=~revanced.app -||revanceddl.com^$all,domain=~revanced.app -||revancedmusic.com^$all,domain=~revanced.app -||revancedyoutube.org^$all,domain=~revanced.app -||revancedextend.com^$all,domain=~revanced.app -||revancedextended.$all,domain=~revanced.app -||revanced-extended.com^$all,domain=~revanced.app -||extendedrevanced.com^$all,domain=~revanced.app -||youtuberevancedextended.com^$all,domain=~revanced.app -||ytrevanced.$all,domain=~revanced.app -||tuberevanced.com^$all,domain=~revanced.app -||vanced-official.com^$all,domain=~revanced.app -||vanced.pro^$all,domain=~revanced.app -||vancedmanager.$all,domain=~revanced.app -||revancedapps.$all,domain=~revanced.app -! LuckyPatcher - Official site: luckypatchers.com -||luckypatcher.*^$all,domain=~luckypatchers.com -||luckypatchers.*^$all,domain=~luckypatchers.com,to=~luckypatchers.com -||luckypatcherwin.com^$all,domain=~luckypatchers.com -! Balena Etcher - Official site: etcher.balena.io -||etcher.net^$all,domain=~etcher.balena.io -||etcher.download^$all,domain=~etcher.balena.io -||balenaetcher.$all,domain=~etcher.balena.io -||balena-etcher.com^$all,domain=~etcher.balena.io -! Vencord - Official site: vencord.dev -||vencord.app^$all,domain=~vencord.dev -! NewPipe - Official site: newpipe.net -||newpipe.app^$all,domain=~newpipe.net -! Z-Library - Official sites: singlelogin.se, singlelogin.re, z-library.se, zlibrary-global.se, go-to-zlibrary.se -||z-lib.io^$all -||z-lib.id^$all -||zlibrary.to^$all -||z-lib.ee^$all -||z-lib.tf^$all -||z-lib.wf^$all -||z-lib.yt^$all -||z-lib.lol^$all -||zlibrary-global.com^$all -||zlib-official.com^$all -||zlibrary.lol^$all -||z-library.live^$all -||z-library.wiki^$all -||z-library.blog^$all -||z-library-proxy.com^$all -||go-to-zlibrary.com^$all -! phishing https://www.virustotal.com/gui/url/8521a1e5b4269111fb1e98f2142739dad1d6fb42ddf5198597c68abfea395f7f/detection -||reink2.top^ -||86pmafno21mst.com^$all -||akyr3h9x5mb.com^$all -||tiger.qnews.media^$3p -||s8bet.com^$doc -/\.br\/(?:[a-z]{4,8}\/){1,2}\?(?:app|patt|videos?)=\S+\.shtml$/$doc,match-case,domain=gov.br -c0c9d.cmi.rj.gov.br,cambe.pr.gov.br##^responseheader(location) -||azure.z97z.com/go.html$doc -||sites.uft.edu.br/topama/news.php$doc -||imagebet.ph^$all -||googleeplay.com^$all -||mingvip.com^$all -||t89ll.com^$doc -||brkbk.202226.net/jump/index.html$doc -||kbkb.bet^$doc -||bet55h.com^$doc -||officefonts-clo.com^$all -||lazycaht.pro^$all -||bxtongji.cc^$all -||04tips.com^$all -||dhotelzao.com^$all -||tamilislamgate.com^$all -||adblock1.com^$all -||newupdatesnow.com^$all -||thefinanceadvice.com^$all -||fralstamp-genglyric.icu^$all -||ilil.in^$all -||ruiukp.top^$all -||ets2.gr^$all -||chromegoogle.cn^$all -||mk90.shop^$all -||stalkforx.ru^$all -||stalktoolss.ru^$all -||stalkanalysis.ru^$all -! Cryptocurrency Scams -||mevtime.com^$all -||musk-project.com^$doc -||muskusa.com^$doc -||cealits.com^$all -||pepzk-community.xyz^$all -||earth-ling.org^$doc -||pacmoonn.icu^$doc -||arbitragebot.team^$all -||arbitrageinstruction.media^$all -||arbitrageproject.blog^$all -||autotradeguide.pro^$all -||botarbitrages.pro^$all -||ethmevbot.com^$all -||ethmevsetup.group^$all -||guidesetup.pro^$all -||mevfrontbot.info^$all -||mevsetup.site^$all -||publicbot.pro^$all -||setupbot.info^$all -||strategyarbitrages.pro^$all -||tradingstart.pro^$all -||uni-setup.media^$all -||uni-trading.pro^$all -||uniguide.media^$all -||unisettings.pro^$all -||uniswapbot.team^$all -||uproject.team^$all -||web-instruction.team^$all -||webarbitraging.pro^$all -||0x00000000000.substack.com^$all -||etharticles.substack.com^$all -||publicationgroup.substack.com^$all -||teamproject.substack.com^$all -||tradestrategy.substack.com^$all -||uniproject.substack.com^$all -||web3projects.substack.com^$all -||webpublic.substack.com^$all -||teslafond.io^$doc -||teslacore.io^$doc -! Phishing - See https://bbs.kafan.cn/thread-2264505-1-1.html -||counter-strike2-official.net^$all -||primeleech.com^$all -||privacyguides.io^$all -||skinboxs.com^$all -||okun.shop^$doc -||hostpdf.co^$all -||billlionair.app^$all,to=~billionair.com -||cdn-npmjs.com^$all -||cdnjs-storage.com^$all -||browsersjsfiles.com^$all -/cachingjs/settings.js -/cachingjs/turboturbo.js -/config?key=6922a2c8-d1e9-43be-b201-749543d28fe1 -/config?key=d35e161b-abb4-4949-b523-003165d250bb -||dns.google/resolve?name=*.host-stats.io&type=txt|$xhr,3p -||picocrypt.org^$doc -||traveltraffic.cc^$all -||cloudsonicwave.com^$all -||obs-software.cc^$all -||bandi-cam.cc^$all -||breavas.app^$all -||open-project.org^$all -||onenote-download.com^$all -||epicgames-store.org^$all -||blcnder.org^$all -||trelconf.com^$all -||trelconf.net^$all -||noitons.net^$all -||bezynet.com^$all -||church-notes.com^$all -||avr-energie.com^$all -||irs-ein-gov.us^$all -/^https:\/\/[a-z]+\.[-a-z0-9]+\.[a-z]{3,7}\/[a-z]{2,6}\.(?:[a-z]{1,8}\.)?17\d{8}\.js\?(?:revision|sr?c?|ve?r?)=6[a-f0-9]{7}$/$script,3p,match-case,to=~edu|~gov -/^https:\/\/[a-z]+\.[-a-z0-9]+\.[a-z]{3,7}\/17\d{8}\/em\.js\?(?:revision|sr?c?|ve?r?)=6[a-f0-9]{7}$/$script,3p,match-case,to=~edu|~gov -||schema-forms.org^$all -||stickloader.info^$all -||fueltypebel.info^$all -||re-captha-version-$all -! http://teluguodu.com/om-bheem-bush-movie-review/ - example site -||check-tl-ver-$all -||gemfowls.com^$all -||tech4u.app^$all -.com/?news&s|$popup -||cloud.tnewstraffic.com^$all -||cache.cloudswiftcdn.com^$all -||cdn.metricastats.com^$all -||cloud.edgerapidcdn.com^$all -||content.gorapidcdn.com^$all -||content.streamfastcdn.com^$all -||fast.quickcontentnetwork.com^$all -||ga.cdzanalytics.com^$all -||gll.metricaga.com^$all -||go.syndcloud.com^$all -||host.cloudsonicwave.com^$all -||host.gsslcloud.com^$all -||metrics.gocloudmaps.com^$all -||secure.gdcstatic.com^$all -||secure.globalultracdn.com^$all -||static.rapidglobalorbit.com^$all -||synd.edgecdnc.com^$all -||syndication.gcdnanalytics.com^$all -||mygeomanager.org^$all -||livedashboardkit.info^$all -/^https:\/\/[a-z]{10,}\.[a-z]{3,4}\/(?:engine|track)-[a-f0-9]{8}\.js$/$script,3p,to=~edu|~gov,header=vary:/^referer\,accept-encoding/i -||digitalxnetwork.com^$all -||vnote-*.myqcloud.com^$all -! phishing -/^https:\/\/vietg[a-z]v[0-9]*\.cc\//$doc,domain=cc -||clickhereecraigslist.tripod.com^$all -||thriveinclusion.com^$all,to=~web.de -||talktalk0.godaddysites.com^$all,to=~talktalk.co.uk -||unclepigva.com^$all,to=~chase.com -||ee-billing-recovery.web.app^$all,to=~ee.co.uk -||final-ua.eu/vasilisa/votings$all -||flow.page/foxhills.co.uk^$all,to=~foxhills.co.uk -||codeanyapp.com/neta/*/pay-method.php$doc -||otomoto-h229.net^$all,to=~otomoto.pl -||mybluehost.me/*Recibir_paquete.php$doc,domain=~correos.es -||codeanyapp.com/klarna/$doc,domain=~klarna.com -||mybluehost.me/*/dir/ca/pay/$doc,domain=~canadapost-postescanada.ca -||21cpromotions.com/logs/postch/$all,to=~laposte.fr -||inner.website/*.html^$all -/^https:\/\/www\.[a-z]{4,5}\.[a-z]{3,7}\/[a-z0-9]{36}\.html\b/$doc,match-case,domain=com|info|website|~edu|~gov|~google.com -||hand-to-hand.cfolks.pl^$all,to=~ram.co.za -! wetransfer.com -||wetransfers.fr^$all,to=~wetransfer.com -||cragrle.whf.bz/wetransfert/$all,to=~wetransfer.com -! intesasanpaolo.com -||mybluehost.me/intesasanpaolo/$doc,domain=~intesasanpaolo.com -||mybluehost.me/*/itx/it/conto/$doc,domain=~intesasanpaolo.com -! linkedin -||faran.ac.ir/wp-content/$all,to=~linkedin.com -||colegiovilamilitar.com.br/*/linkedin_^$all,to=~linkedin.com -! shopify -||1234854.com^$all,to=~shopify.com -||suoncopbaonk.com^$all,to=~shopify.com -! paypal -||paypal-complete.com^$all -||prizegift.top^$all -! jio -/\/recharge\d?\.(?:html|php)\?mobile=\d{10}\b/$doc,match-case,domain=~jio.com|~edu|~gov -/offer.php?rechargenumber=$doc,domain=~jio.com|~edu|~gov -/offer.html?rechargenumber=$doc,domain=~jio.com|~edu|~gov -/\/offer\.(?:html|php)\?(?:mobile|rechargenumber)=\d{10}\b/$doc,match-case,domain=~jio.com|~edu|~gov -! apple -||com/isignesp.php^$doc,domain=com|~apple.com -||help/isignesp.php^$doc,domain=help|~apple.com -! ourtime -||login-ourtime.members-datings.workers.dev^$all,domain=~ourtime.com -||profile-ourtime.*.workers.dev^$doc,domain=~ourtime.com -! tiktok -/^https:\/\/(?:[a-z]{4,6}\.)?tiktok\d{2,5}\.com\//$doc,domain=com|~tiktok.com -/^https:\/\/(?:[a-z]{4,6}\.)?tiktok\d{2,5}\.cc\//$doc,domain=cc|~tiktok.com -/\/wap\/api\/(?:activity\/)?[a-zA-Z]+![-_a-zA-Z]+\.action\?/$xhr,1p,strict1p,match-case -! made-in-china.com -||griffithdds.com/*/madeinchina.com/$all,to=~made-in-china.com -||oortech.com/mic.shtml^$doc,domain=~made-in-china.com -! fedex -||smoothies.pt/nf_tracking.php/$all -||fedexridn.com^$all -||yellowjacket.co.nz^$all,to=~fedex.com -||bookingtool.azurewebsites.net^$all,to=~fedex.com -||saham.hugaf.dev^$all,to=~fedex.com -! booking.com -/^https:\/\/(?:[a-z]+\.)?hotel-(?:id)?\d{3,8}\.eu\//$doc,domain=eu|~booking.com -/^https:\/\/(?:[a-z]+\.)?hotel-(?:id)?\d{3,8}\.com\//$doc,domain=com|~booking.com -/^https:\/\/hotels-\d{6}\.eu\//$doc,domain=eu|~booking.com -/^https:\/\/booking\.[a-z]{3,}-(?:id)?\d{3,8}\.eu\//$doc,domain=eu|~booking.com -! airbnb -||air-bnb.check-$doc -||abnbclaim.com^$all,to=~airbnb.com -/^https?:\/\/([a-z]{4,}\.)?support-\d{1,2}\.ru\//$doc,domain=ru -! labanquepostale -||group-postban.firebaseapp.com^$all,to=~labanquepostale.fr -||oasisministries.com/fr/postale/$all,to=~labanquepostale.fr -! adobe -||adobecloud5xpo.yolasite.com^$all,to=~adobe.com -||socalthesyndicate.com/*/adobefud/$all,to=~adobe.com -||pub-*.r2.dev/adobe2024.html^$doc -! gazprom -/^https:\/\/[a-z0-9]{5}\.shop\/l\/gaz\//$1p,strict1p,match-case,domain=shop -/^https:\/\/[a-z0-9]{5}\.shop\/uniq$/$xhr,1p,strict1p,match-case,method=get,domain=shop -/^https:\/\/[a-z0-9]{5}\.shop\/lead$/$doc,1p,strict1p,match-case,method=post,domain=shop -||k8cxh.shop^$all,to=~gazprom.ru -||c2bm9.shop^$all,to=~gazprom.ru -||cz4sb.shop^$all,to=~gazprom.ru -||v5hhx.shop^$all,to=~gazprom.ru -||pe4hk.shop^$all,to=~gazprom.ru -||g1vm6.shop^$all,to=~gazprom.ru -! netflix -||mybluehost.me/*/netflix/net/login.php$doc -||mybluehost.me/watch/a/flix/$doc -||floridavacationrentalsbyowners.com/*/Info/page_settings/account.php^$all -||loginnetflixleiojfioje.blogspot.$all -||xsph.ru/*/netfi2k/$doc -! allegro -||allegrostore.cc^$all -||allegrostu.com^$all -||allegrocolombia.com^$all -||allegrocx.com^$all -||allegrocns.com^$all -||allegro-005.com^$all -||allegro-online.ru^$all -||allegro-reinigung.de^$all -/^https:\/\/allegro[a-z]{2,}\.shop\//$doc,domain=shop -||allegroshop.shop^$all -||allegrocn.shop^$all -! rackspace -||racks.pages.dev^$all,to=~rackspace.com -||rackweb-----support*.weebly.com^$all,to=~rackspace.com -! dana -||dana-indone*.id^$doc,domain=my.id|web.id|~dana.id -! biz.id --dna-log-*.biz.id^$doc,domain=biz.id|~dana.id -||xxtl-v1.biz.id^$doc,domain=~dana.id -||xlink-dna-log-new.xxtl-v1.biz.id^$all,to=~dana.id -||hadiah-dana2024.beviz.biz.id^$all,to=~dana.id -||danaxspaylaterr.biz.id^$all,to=~dana.id -! my.id -||xcxcx.my.id^$doc,domain=~dana.id -||pemesanan*.glowz.my.id^$doc,domain=~dana.id -||pemesanann-lpg-pertamina-market-deliveryy.glowz.my.id^$all,to=~dana.id -||penerimaan-hadiah-giveaway-10juta.clau.my.id^$all,to=~dana.id -! others -||gdnapqmhbs.1myall.com^$all,to=~dana.id -||ambiil-hadiaa4h.cs-resmi.com^$all,to=~dana.id -||danadigital2024.cs-zx.top^$all,to=~dana.id -! orange.fr -||orange53.yolasite.com^$all,to=~orange.fr -||dev-7614646544.pantheonsite.io^$all,to=~orange.fr -||smsmmsernorepls.wixsite.com^$all,to=~orange.fr -||orange234.wixsite.com^$all,to=~orange.fr -||exbtengineers.com/o/$all,to=~orange.fr -||servicemailorange25.wixsite.com^$all,to=~orange.fr -||assistancesosh.wixsite.com^$all,to=~orange.fr -/or/.espace-.client/(;authentication.htm^$doc,domain=~orange.fr -||tw1.ru/Orange/$doc,domain=~orange.fr -! amazon -||amazon-*.shop^$doc -||amazon-shopping.shop^$all -||amazonl3.com^$all -||tepoty.com^$all -||daroznel.com^$all -||ecommrce-web-amazon.netlify.app^$all -||etisalat-amazonprime.com^$all,to=~etisalat.ae -||shop73.online^$all -||syae3289.top^$all -||mybluehost.me/wp-admin/amz/$doc -! ebay -||c.vn-ebayn.vip^$all -||vn-ebay.quxlpuj.cn^$all -||ebayasean.com^$all -||vilbuy.com^$all -||ebay-european.com^$all -||show.naturecircle.shop^$all -||51eabay.com^$all -||135buy.com^$all -||ebaydw.^$all,to=ebaydw.cc|ebaydw.com -||pages.dev/errors/validateCaptcha^$doc -! alibaba -||hologramid.cn^$all,to=~alibaba.com -||alibaba-shopvip.com^$all,to=~alibaba.com -||topmarifle.life^$all,to=~alibaba.com -||shopvip-alibaba.com^$all,to=~alibaba.com -! AT&T -||wixsite.com/att-support/$doc -||diwapa3051.wixsite.com^$all -||idhnochalter.wixsite.com^$all -||cajewar736.wixsite.com^$all -||loginaccount6.wixsite.com^$all -||ruthah9.wixsite.com^$all -||iirrrrrrii.wixsite.com^$all -||ewueuweudsjdjsdjjd.weeblysite.com^$all -||maiil-myatt.weeblysite.com^$all -||rtm-att.directly.com^$all -||keepo.io/KJOUYHUBU799BH/$all -||keepo.io/loginatt/$all -||dlhessell.wixsite.com/att-support/$all -||dones9.wixsite.com^$all -||alisongaudino992.wixsite.com^$all -||deenveerww.wixsite.com^$all -||att5h6.wixsite.com^$all -||wixstudio.io/mysiteattmail940940^$doc -||f.digital-*.com/igit/$doc -! BT -||homelogginbbt.weebly.com^$all,to=~bt.com -||boardband.univer.se^$all,to=~bt.com -! gov phishing site -||thanhtrapcrt.online^$all,to=~thanhtra.gov.vn -||seeproc.com.br^$all,to=~my.gov.au -! gov.tr -||pttgov-*.top^$all,to=top|~ptt.gov.tr -! gov.uk -||liveflo.qxlva.io^$all,to=~gov.uk -||smartaromas.com/income-individual_service_tax-gg-check-hm/$all,to=~gov.uk -! gouv.fr -||mybluehost.me/*/impo/$doc,domain=~impots.gouv.fr -||speedtest.gr/*/Amendes-gouv-fr/$all,to=~amendes.gouv.fr -||wcomhost.com/amendes-gouv/$doc,domain=~amendes.gouv.fr -/am/*.php^$doc,domain=arubabusiness.it|mybluehost.me|wcomhost.com|~amendes.gouv.fr -||fi/a/Amendes/*.php^$doc,domain=fi|~amendes.gouv.fr -||fi/part/Amendes/*.php^$doc,domain=fi|~amendes.gouv.fr -||mybluehost.me/wp-content/12/*.php^$doc,domain=~amendes.gouv.fr -||odeal.fi/fr/AMA/*.php^$doc,domain=~amendes.gouv.fr -||askozvar.sk/*/amendesgouv/$all,to=~amendes.gouv.fr -! bank -||chamsocthekhachhang-$doc,domain=~edu|~gov|~edu.vn|~gov.vn -||sotuyenvcb.vietcombanker.com^$all,to=~vietcombank.com.vn -||vdbank.com.vn^$all,to=~vdb.gov.vn -||conveyancingportal.com^$all -||tinchapshinhan.online^$all,to=~shinhan.com.vn -||canhantpb.com^$all,to=~tpb.vn -||mbdk99.com^$all,to=~mbbank.com.vn -||bmoreferral.com^$all,to=~bmo.com -||personas.devbam.com^$all,to=~bam.com.gt -||negociebra.com.br^$all,to=~banco.bradesco -||lloyd-group.com^$all,to=~lloydsbank.com -||itaconsorciodigital.com.br^$all,to=~itau.com.br -||wizardpayroll.com.ar^$all,to=~hsbc.com -||spareb1.com^$all,to=~sparebank1.no -||amigosdelasfinanzas.com^$all,to=~bancocajasocial.com -||e-cmv.ph^$all,to=~grupobancolombia.com -||recompensaszurichsantander.com.mx^$all -||upsdelivery-nl.com^$all,to=~bancosantander.es -||santander.cf.sandbox.motrada.ch^$all,to=~santanderbank.com|~santander.co.uk -||anz.brandkit.io^$all,to=~anz.co.nz -/^https:\/\/tpbank\.[-a-z0-9]{5,}\.[a-z]{3}(?:\.vn)?\//$doc,domain=~edu|~gov|~gov.vn|~tpb.vn -||americanexpressempresas.com^$all,to=~americanexpress.com -||r2.dev/blobamexbsatt.html^$doc,domain=~americanexpress.com -||sparkasse-oberhessen.info^$all,to=~sparkasse.de -||mybluehost.me/service/*/nkl-log.php$doc,domain=~nickel.eu -||turkiyecumhuriyetiziraatbankasi.com^$all,to=~ziraatbank.com.tr -||c1.is/BRI/$doc,domain=~bri.co.id -||ewp.live/*/pages/region.php^$doc -||glitch.me/*/nationwide^$doc,domain=~nationwide.co.uk -||mybluehost.me/ameli/$doc,domain=~ameli.fr -/28kxhS^$doc,domain=online|shop|top|~sberbank.ru -||xyz/akbank/$doc,domain=xyz|~akbank.com -||artecafe.eu/html/postde/pst/$all,to=~postbank.de -/views/choice/*/start.php^$doc -! DHL -||dhl.*.potabox.com^$doc,domain=~dhl.com -||dhl-event.app^$all,to=~dhl.com -||dhexpress.weebly.com^$all,to=~dhl.com -||delivery.attempt.failure.ebbs.co.za^$all,to=~dhl.com -||packages.mpinsureit.com^$all,to=~dhl.com -||sites.google.com/view/expressdhl^$all,to=~dhl.com -||xn--d1aqfkf.xn--p1ai/bitrix/.../GlobalSources/$all,to=~dhl.com -||app.farmaciadelmonestironline.com/SER/dnkdl/$all,to=~dhl.com -||solutionfun.info^$all -||leatherqueen.shop^$all -||dhl-express-ppd.infanion.com^$all,to=~dhl.com -||elementor.cloud/*/ENGHUY645/$doc,domain=~dhl.com -||mybluehost.me/*/phpmailer/src/dh/$doc,domain=~dhl.com -! whatsapp -||ann.tess1.top^$all -||play.funfourmob.com^$all -! instagram -||privrendom.com^$all -! facebook -||mait.inhhome.top^$all -! /^https:\/\/[vw]ww-[a-z]?facebook[a-z]?([.-]com)?\.vn\//$doc,domain=vn -||notificationbyfacebook.$doc -||notificationbyfacebook.firebaseapp.com^$all -||notificationbyfacebook.web.app^$all -||business-facebook-*.pages.dev^$all -||unusualaccountcnfrmpages.github.io^$all -||facebook.prantiksoft.com^$all -||facebook-guidelines.com^$all -||www-mfacebook.$doc -||www-facebooks.$doc -||www-facebook-$doc -||www-facebook.$doc -||vww-facebook.$doc -||www-mfacebook.vn^$all -||www-facebook-com.vn^$all -||vww-facebook.com.vn^$all -||www-facebooks.com.vn^$all -||facabook.vn^$all -||facebooks-com.vn^$all -||mobile-facebook.com.vn^$all -||ifbsmetaiidentiityconfirms.com^$all -||ad-activity-center.com^$all -||govern-assessment-validation-*.vercel.app^$all -||support-center-for-*.vercel.app^$all -||request-page-violation-*.surge.sh^$all -||violation-*.surge.sh^$doc -||copyrights-*.surge.sh^$doc -||fan-page-*.surge.sh^$doc -||content-voilation-$doc -||appeal-account-copyright-case-review.$doc -||community-flagged-$doc -||help-for-work-*.pages.dev^$doc -||metabussines.com^$all -||transparency-business.com^$all -||http://marketplace-item-details-*.zya.me^$all -||mediacontrolcenters.com^$all -/^https:\/\/business\.[a-z]+confirm\.com\/meta-community-standard\d{15}\/?/$doc,match-case,domain=com -/\.(?:pages\.dev|surge\.sh)\/help\/contact\/\d{14,19}\b/$doc,match-case,domain=pages.dev|surge.sh|~facebook.com -||business-help-temp-$doc -/\.cfd\/contract\/\d{14,19}\b/$doc,match-case,domain=cfd|~facebook.com -||business-center-$doc -||instructions-video.vercel.app/detailed_video.mp4$doc,media -! shopping sites -/api/user/do_login|$xhr,1p,to=com|info,method=post,header=access-control-allow-headers:/authorization\,content-type\,if-match\,if-modified-since\,if-none-match\,if-unmodified-since\,x-requested-with/i -/api/user/do_login|$xhr,1p,to=com|info,method=post,header=Access-Control-Allow-Headers:/authorization\,content-type\,if-match\,if-modified-since\,if-none-match\,if-unmodified-since\,x-requested-with/i -/api/webapi/login|$xhr,3p,to=online|vip,method=post,header=access-control-allow-headers:Origin, X-Requested-With, Content-Type, Accept, Authorization -||lazada.bbc6666.com^$all -||tuyendungtiki2024.vn^$all,to=~tiki.vn -! shopee -/^https:\/\/sp\d{2,3}88(?:vn)?\.com\//$doc,domain=com|~shopee.vn -||vivanoticiando.com^$all -||virtualnoticiasaqui.com^$all -! sendo -||vnsendo.*^$all,to=info|shop|vip|~sendo.vn -! dienmayxanh -||mayxanhsupport.com^$all,to=~dienmayxanh.com -||trungtam-dienmayxanh.com^$all,to=~dienmayxanh.com -! steam -||steamproxy.*^$all,to=steamproxy.cc|steamproxy.net|steamproxy.vip -||sp.aircsgo.com^$all -||st.aircsgo.com^$all -||steamfiller.ru^$all -||11steam.com^$all -||gtm.you1.cn^$all -||steamxiazai.cn^$all -||s.team-pn.com^$all -||steam.zssjsq.com^$all -||steamcommunitylog.chez.com^$all -||steam.workshop*.com^$doc -!#if !env_mv3 -/^https:\/\/stea[a-z]{1,4}o[mn][a-z]{4,7}y[a-z]?\.com\//$doc,domain=com|~steamcommunity.com -/^https:\/\/steam\.(?:community)?workshop-?[a-z]+\.com\//$doc,domain=com|~steamcommunity.com -!#endif -||steam.communityart-work.com^$all -||stearnccommunity.com^$all -||steamcomuniry.com^$all -||steamcommunlyt.com^$all -||steemcommuntiy.com^$all -||workshop-users.com^$all -||st-friends.com^$all -||st-invite.com^$all -||cn-steam.com^$all -!#if !env_mv3 -||com/p/jcod-ppsr/huasdirjdo^$doc,domain=~steamcommunity.com -!#endif -! game sites -||battlegrounds-bgmi-reward.events-games.com^$all -! garena -||rewards-ff-garenaa.ru^$all -||tes.lkowi.cfd^$all -/^https:\/\/(?:www\.)?(?:ff[-.])?member[-.]gare[a-z]+a(?:\.pro)?\.vn\//$doc,domain=vn|~garena.vn -/^https:\/\/(?:www\.)?(?:ff[-.])?men?mber[-.]garena\.vn\//$doc,domain=vn|~garena.vn -||xn--npth-5q5a1g.vn^$all,to=~napthe.vn -||garerna.vn^$all,to=~garena.vn -||gareza.vn^$all,to=~garena.vn -||garena.pro.vn^$all,to=~garena.vn -||ff-menmber-garena.vn^$all,to=~garena.vn -||gaerana.io.vn^$all,to=~garena.vn -||gareana.vn^$all,to=~garena.vn -||doivangfreefiregarena.io.vn^$all,to=~garena.vn -||garane.io.vn^$all,to=~garena.vn -||garcna.vn^$all,to=~garena.vn -! pubg -||pubg-arena.top^$all -||register-turnamen.free.nf^$all -||pubgm-zing-vn.com^$all -||sukien-pubg.io.vn^$all -||napthepubg.mobi^$all -/volt/*?nox=$doc,domain=ai|com -! mobile legends -||mobilelegendsmycode.com^$all -||eventdmkuning.brenn.biz.id^$all -! google -||bxzxenzidrmrksu.jiongcao.cn^$all -||google-stare.com^$all -||confirmktk.com^$all -||datahub.center^$all -||channelhub.info^$all -! microsoft -||microsoft*.dfautomotive.de^$doc -||microsoft.dfautomotive.de^$all -||microsoft.account.dfautomotive.de^$all -||whfdny.org^$all -||outlook-office.zapier.app^$all -||infos4.yolasite.com^$all -||policija64.wixsite.com^$all -||outlook20239.wixsite.com^$all -||microsoftupdate67.wixsite.com^$all -||exchange.add-solution.de^$all -||activarhotmail.weebly.com^$all -||exceklcmicrosftprotection.pages.dev^$all -||microsoft-datamaturity.noisehq.nl^$all -||graettingerlaw.com^$all -||hab-sharepoint.weebly.com^$all -||iamnew.powerappsportals.com^$all -||post.nationalrent.ru^$all -||gocolonial.local-user.com^$all -||skype-com.cn^$all -||cashum.unam.mx/wp-content/backups-dup-pro/imports/index.htm$all -||od.atami.no/one_drive.html$all -||johnhstngs4.wixsite.com^$all -||acir.postofficeweb.com/grupoacir/$all -||storageapi-new.fleek.co/*/yss/ind.html$all -||wwwservicemsnlive-*.hubspotpagebuilder.com^$all -||conohawing.com/*/outlook-$doc -||hergunavantaj.com.tr^$all -||irrigationservices.co^$all -||copynet.com.mx/Message%20Centre/$all -||msnoauth*.com/office-$all -||sites.google.com/l0gin-microsoftwebonlne.app/$all -||monogonzalez.com^$all -||athenasbaklava.com^$all -||mail.sorbeadindias.com^$all -||pages.dev/smart89/$doc -||microsofthotmailsi1.wixsite.com^$all -||supplieradvisor.ciamlogin.com^$all -||e-messsage.com^$all -||supp0rt.co.za^$all -||ariabcon.com^$all -||vkcs.cloud/owa.html^$doc -||ocalam.com:8443/impact^$doc -||pub-*.r2.dev/owa.html^$doc -! telegram -||telegramhcn.com^$all -||web.telegram.data-bees.cn^$all -||newappmssg.ru^$all -||telegrambotsolution.pages.dev^$all -/^https:\/\/www\.telegramk[a-z]\.com\//$domain=com|~telegram.org -||telegramkv.com^$all -||telegramkp.com^$all -||cdn-telegram.com^$all -||telegramkd.com^$all -||telegram-zhongwen.com^$all -||rr.nu^$doc -! usps -||uspsparcels.net^$all,to=~usps.com -/^https:\/\/usps\.[-a-z]{6,}\.(?:com|top)\/(?:address\.html|information|verify)\b/$doc,domain=com|top|~usps.com -/^https:\/\/ur[cex][a-z]{2,4}\.com\/(?:address\.html|information|verify)\b/$doc,domain=com|~usps.com -.top/pg?do=$doc,domain=top -||wrc-gh.org/redelivery$doc -||uszq.iafedoec.top^$all -||mybluehost.me/2us/verification/$doc -||mybluehost.me/uspshome/$doc -||mybluehost.me/us/post/$doc -||mybluehost.me/tracking-mail-delivery/$doc -! weebly/square phishing -/^https:\/\/(?:[a-z0-9]{2,}-)+10\d{4}\.weeblysite\.com\//$doc,domain=weeblysite.com -/^https:\/\/(?:[a-z0-9]{2,}-)+10\d{4}\.square\.site\//$doc,domain=square.site -! spotify -/^https:\/\/[^.]+\.codeanyapp\.com\/wp-content\/.+\/spo[a-z]{2}i\//$doc,domain=codeanyapp.com -||codeanyapp.com/*/spotii/$all -||codeanyapp.com/*/spoofi/$all -||mybluehost.me/*/MitID/$doc -||airpos.co.kr/.well-known/pki-validation/*/MitID/$doc -||autolocksmithpro.com/spt/$all -||mybluehost.me/spot/Account/$doc -||mybluehost.me/dse/main/$doc -! swisspass -||swiss-passapp.web.app^$all,to=~swisspass.ch -||mybluehost.me/CFF/$doc,domain=~swisspass.ch -||mybluehost.me/--/SBBCFF$doc,domain=~swisspass.ch -||mybluehost.me/SBB.CH/$doc,domain=~swisspass.ch -||mybluehost.me/*/swisspass/$doc,domain=~swisspass.ch -||mybluehost.me/Konto/SBB/$doc,domain=~swisspass.ch -||mybluehost.me/sbb-ch/$doc,domain=~swisspass.ch -||mybluehost.me/pass/index/$doc,domain=~swisspass.ch -||mybluehost.me/seitech/$doc,domain=~swisspass.ch -||mybluehost.me/*/CHFINAL/$doc,domain=~swisspass.ch -||acconsult.info/*/CHFINAL/$doc,domain=~swisspass.ch -||sviluppo.host/sbb-chf-id/$doc,domain=~swisspass.ch -||wcomhost.com/spass/$doc,domain=~swisspass.ch -||altitudesim.ca/*/CHFINAL/$doc,domain=~swisspass.ch -||codeanyapp.com/Swissp/$doc,domain=~swisspass.ch -! swisscom -||secureserver.net/myswisscom$doc,domain=~swisscom.ch -||codeanyapp.com/Swiss_com/$doc,domain=~swisscom.ch -||codeanyapp.com/info/cc.php^$doc,domain=~swisscom.ch -||mybluehost.me/neww/$doc,domain=~swisscom.ch -||mybluehost.me/*/csom/$doc,domain=~swisscom.ch -||secureserver.net/ruckstantung907921/$doc,domain=~swisscom.ch -||sviluppo.host/df/pass.php^$doc,domain=~swisscom.ch -||mybluehost.me/sssssssssssssss/$doc,domain=~swisscom.ch -||mybluehost.me/comssss/$doc,domain=~swisscom.ch -||codeanyapp.com/swiss-login/$doc -! swisspost -||swisspost.web.app^$all,to=~post.ch -! upc -||wcomhost.com/ch/upc/$all,to=~upc.ch -||treezorrwallett.webflow.io^$all,to=~trezor.io -||tokenpocket-com.cc^$all,to=~tokenpocket.pro -||exodusrt.azurewebsites.net^$all,to=~exodus.com -||ledgerwallive.com^$all,to=~ledger.com -||mantanetworkcn.com^$all,to=~manta.network -||interface-git-parallel-cypress-uniswap.vercel.app^$doc,domain=~uniswap.org -||web3mainnetdapp.pages.dev^$all -||web3connectfix.pages.dev^$all -||clinitex.fr/META5KYC/$doc,domain=~metamask.io -||syncwallet.pages.dev^$all,to=~walletconnect.com -||azuki-*.vercel.app^$all,to=~azuki.com -||base-swap-frontend-*.vercel.app^$doc -||metamask*.webflow.io^$doc -! coinbase -||baseguardauth.net^$all,to=~coinbase.com -||cbnotifser.top^$all,to=~coinbase.com -||cbnotif.top^$all,to=~coinbase.com -! imtoken -||imtoken.org.cn^$all,to=~token.im -||imcosom.com^$all,to=~token.im -||tokenap.app^$all,to=~token.im -||tokenax.app^$all,to=~token.im -app##html > body[style]:not([class]):not([id]) > center#yangchen[style]:not([class]) > iframe#external-frame[src="https://im136.mom/"]:not([class]) -! pancakeswap -/^https:\/\/pancake(?:dro|swa)pclick\d+\.vercel\.app\//$doc,domain=vercel.app|~pancakeswap.finance -||pancakeswap-*.vercel.app^$doc,domain=vercel.app|~pancakeswap.finance -||pancake-swap*.vercel.app^$doc,domain=vercel.app|~pancakeswap.finance -||pancake-nft*.vercel.app^$doc,domain=vercel.app|~pancakeswap.finance -||pancakeswap.finance.expolorer.im^$all,to=~pancakeswap.finance -! openphish -||air.bnb-id*.com^$all,to=~airbnb.com -||pakket-bpost-be.web.app^$all,to=~bpost.be -||mmitalianbeef.square.site^$all,to=~mmitalianbeef.com -||bigbauer.com^$all,to=~gmx.com -||lkmw88.com^$all,to=~mercadolibre.com -||seguro.serasaexperian.site^$all,to=~serasa.com.br -||vangphutai.com^$all,to=~vangphutai.vn -||snapscrttm.serv00.net^$all,to=~snapchat.com -||beluxrepm.followme.fr/FolloWMe$all,to=~realestate.bnpparibas.com -||mybluehost.me/Cope346/$all -||tesakom.com/aa/index.html^$all,to=~ebestsec.co.kr -||glitch.me/pdf.html?email=$doc -||chattts-49f1.beszyrecala.workers.dev^$all,to=~christianmingle.com -||cursorltd.com^$doc -||cprapid.com^$doc -||utahpolicetraining.*.mybluehost.me^$all -||mybluehost.me/*/choronopost/$doc,domain=~chronopost.fr -||dropbox*.weebly.com^$doc -/^https:\/\/([a-z]-){10,15}[a-z]\.(?:com|net|org)\.tr\//$doc,domain=com.tr|net.tr|org.tr -/views/go/start.php^$doc -/^https:\/\/pub-[a-f0-9]{32}\.r2\.dev/be[a0-9]\d{2,3}\.html\b/$doc,match-case,domain=r2.dev -! docusign.com -||roycamining.com/pdeb/Untitled/$all,to=~docusign.com -||msoft_docusign_verification_secured-doc_office.zatrdg.com^$all,to=~docusign.com -||pub-*.r2.dev/alt_type.html^$doc,domain=~docusign.com -||pub-*.r2.dev/auth_response.html^$doc,domain=~docusign.com -||pub-*.r2.dev/doc_start.html^$doc,domain=~docusign.com -||pub-*.r2.dev/dse_sign.html^$doc,domain=~docusign.com -||pub-*.r2.dev/secure_response.html^$doc,domain=~docusign.com -||pub-*.r2.dev/utility_base.html^$doc,domain=~docusign.com -||pub-*.r2.dev/docuss_3456787654324567897865433456789.html^$doc,domain=~docusign.com -||didongvietstore.com^$all,to=~didongviet.vn -||tin-dung-$doc -||khcn-tindung-$doc -||viettelgroup.com^$all,to=~viettel.com.vn -||khach-hang-the-$doc -||lazada.gg^$all -||chamsockhachhang-$doc -! /^https:\/\/hdsaison-?[a-z]{2,}\.(?:cc|com|vip)\//$doc,domain=cc|com|vip|~hdsaison.com.vn -/^https?:\/\/dienmayxanh[-a-z0-9]+\.com\//$doc,domain=com|~dienmayxanh.com -/^https:\/\/dich-vu(?:-[a-z0-9]+){2,3}\.com\//$doc,domain=com -/^https:\/\/zla\d{3}\.top\//$doc,domain=top|~tiki.vn -||cskh-vib-$doc -||cskh-vib.$doc -||chamsockhachang-$doc -||chamsocthekhachang-$doc -||nang-cap-$doc -||ho-tro-tin-dung-ca-nhan.com^$all -||hdsaison-$doc,domain=cc|vip|~hdsaison.com.vn -||dichvucong.$doc,domain=~gov.vn -||tikimall.$doc,domain=tikimall.*|~tiki.vn -||taikhoanvps.com.vn^$all,to=~vps.com.vn -||motaikhoanchungkhoanvps.com^$all,to=~vps.com.vn -||zla963.top^$all,to=~tiki.vn -||zla653.top^$all,to=~tiki.vn -||tah0a.com^$all,to=~tiki.vn -||shopeesmarket.com^$all,to=~shopee.vn -||dailyssshopee.com^$all,to=~shopee.vn -||clzl.pro^$all,to=~momo.vn -||tpbankvn.workplace.com^$all,to=~tpb.vn -/^https:\/\/da\d{4}\.com\//$doc,domain=com|~lazada.vn -/^https:\/\/tdk[det]0[0-9]\.com\//$doc,domain=com|~tiki.vn -||da6555.com^$all,to=~lazada.vn -||soppe68.$all,to=~shopee.vn -/^https:\/\/sp\d{4,5}p\.com\//$doc,domain=com|~shopee.vn -||vib-*.com^$doc,domain=com|~vib.com.vn -||vib-*.shop^$doc,domain=shop|~vib.com.vn -||vssidgov.com^$all -||nappthe.vn^$all,to=~napthe.vn -||binhchoncuocthivetranhsinhvien2024.weebly.com^$all -||vn156475p.com^$all -||seleeashopee.com^$all,to=~shopee.vn -||icchanoi.net^$all,to=~icchanoi.vn -||centralmarketing.online^$all,to=~worldbank.org -||nze98582s.com^$all,to=~shopee.vn -||tdke00.com^$all,to=~tiki.vn -||uudai-tructuyen-$doc -||uudaikhachhang-$doc -||nang-hang-$doc -||tikijaj2.com^$all,to=~tiki.vn -||tikt88.com^$all,to=~tiki.vn -||businesseventskp.top^$all,to=~tiki.vn -||mojgov.weebly.com^$all,to=~moj.gov.vn -||chinhphu.cc^$all,to=~chinhphu.vn -||hangtietkiem.com^$all,to=~giaohangtietkiem.vn -||tcvnhomefic.com^$all,to=~mbbank.com.vn -||lapdatinternet.net^$all,to=~sctv.com.vn -||hethongnhanvien.com^$all,to=~lazada.vn -||lazadaevent.com^$all,to=~lazada.vn -||vntiki.vip^$all,to=~tiki.vn -||baovietcom.vip^$all,to=~baovietbank.vn -||mcqdvn.com^$all,to=~mbbank.com.vn -||hethongvaynhanh247.com^$all -||bethivetranh2024.weebly.com^$all -||ebaymall168.shop^$all -||tikifreeship.vip^$all,to=~tiki.vn -||flikois.com^$all -||f997.sbs^$all -||371j.xyz^$all -||momoshopvip.com^$all,to=~momo.vn -||puttyconnect.info^$all -||astrosphere.world^$all -||marketplace-item-*.000.pe^$doc -! /^https:\/\/(?:ai|art|get)?-?midjourney(?:s|ai)[^\/]+\//$doc,domain=~midjourney.com|~edu|~gov -/^https:\/\/(?:ai|art|get)-?midjourney[^\/]+\//$doc,domain=~midjourney.com|~edu|~gov -/^https:\/\/mid-journey\.[a-z]+\//$doc,domain=~midjourney.com|~edu|~gov -||midjourney.co^$all -||runningapplications-b7dae-default-rtdb.firebaseio.com^$all -||kisanbethak.com^$all -||kunalicon.com^$all -||inzerille.com^$all -||recovernj.com^$all -||pputy.com^$all -||file-zilla-projectt.org^$all -||vuabem.com^$all -||lynstore.net^$all,to=~lynvn.com -||wasabiwallet.is^$doc -||magicslimnhatban.com^$all -||giamcannhatban.com^$all -||examated.co.in^$doc -||github.com/linarweloper/Blumfarmbot^$doc -||waredot.com^$doc -||waredot.us^$doc -||meltedpleasandtws.shop^$all -/l/DMP_captcha_for_vpn?$all -||kms-full.com^$doc -||kmspico.ws^$doc -||kmspico.io^$doc -||kmsauto.uno^$doc -||kms-tool.com^$doc -||kmsauto.tech^$doc -||kmsautodown.space^$doc -||gpstracker.site^$all -||kmsauto.org^$doc -||furykms.com^$doc -||kmspico-official.org^$doc -||roundyearfun.org^$all -||roundyearfun.com^$all -||anyplacehere.me^$all -||funaroundy.click^$all -||anyplacehere.live^$all -||funtwitter.games^$all -||twitter-circle.com^$all -||funroundy.click^$all -||twitterfun.games^$all -||funxgames.site^$all -||funroundy.online^$all -||funxgames.me^$all -||anyplacehere.store^$all -||infinitytweet.me^$all -||infinitweet.com^$all -||infinitytweet.com^$all -||infinityweet.me^$all -||infinityweet.com^$all -||anyplacehere.online^$all -||googie-anaiytics.com^$all -||bootcdn.net^$all -||bootcss.com^$all -||staticfile.net^$all -||staticfile.org^$all -||unionadjs.com^$all -||xhsbpza.com^$all -||union.macoms.la^$all -||newcrbpc.com^$all -||polyfill.com^$all -||polyfill.top^$all -||veilcurtin.world^$doc -||yikesgroto.com^$doc -||midnightsociety-x.com^$doc -||2d45b3cf2299d8ba038f45cb38aca4f2ecfbcb8d264ba28432ae5c51.com^$doc -||protonge.com^$all -||get-express-vpn.online^$all,to=~expressvpn.com -||chromnius.com^$all -||premium-x-notes.com^$all -||bloxstrap.*^$doc,domain=~bloxstrap.pizzaboxer.xyz,to=~bloxstrap.pizzaboxer.xyz -||bloxstrapmenu.com^$doc -||joannclearances.com^$all,to=~joann.com -||pcapp.store^$doc -||convertwithwave.com^$doc -||withsecurify.com^ -||securifyguard.com^ -||getsecurify.com^ -||highwaycpmrevenue.social-previews.top^$all,to=~image.io -||clicksocialimage.top^$all,to=~image.io -||blue-softs.com^$all -||softs-download.com^$all -||iemcan.com^$all -||hvacpartstechnician.com^$all -||pmequebeclic.com^$all -||sirokataldea.com^$all -||senmendai.net^$all -||download-ai.top^$all -||sites.google.com/view/blue-softs^$all -||sites.google.com/view/xtaskbar-themes^$all -||sites.google.com/view/newtaskbar-themes^$all -||sites.google.com/view/awesome-themes-desktop^$all -||sites.google.com/view/taskbar-themes^$all -||sites.google.com/view/ai-image-3d^$all -||sites.google.com/view/taskbar-themess^$all -||sites.google.com/view/softs-download^$all -||sites.google.com/view/sora-ai-v2^$all -/^https:\/\/[a-z]{6,19}\.(?:com|net)\/js\?t=[_a-z0-9]+&ns=[a-z]{2}$/$script,3p,strict3p,match-case,to=com|net -/^https:\/\/[a-z]{6,19}\.(?:com|net)\/(?:static_)?file\/\?t=[_a-z0-9]+&ns=[a-z]{2}$/$frame,popup,3p,strict3p,match-case,to=com|net -/^https:\/\/[a-z]{6,19}\.(?:com|net)\/(?:static_)?file\/\?t=[_a-z0-9]+&ns=[a-z]{2}$/$doc,match-case,domain=com|net -||shy-boat-90ce.jiko728928922.workers.dev^$doc,domain=~uniswap.org -||uniwspapp.com^$all,to=~uniswap.org -||crowdstrike-helpdesk.com^$doc -||crowdstrikebluescreen.com^$doc -||crowdstrike0day.com^$doc -||crowdstrikedoomsday.com^$doc -||crowdstriketoken.com^$doc -||bsodsm8r.xamzgjedu.com^$doc -||crowdstrike-cloudtrail-storage-bb-126d5e.s3.us-west-1.amazonaws.com^$doc -||crowdstrikeoutage.info^$doc -||microsoftcrowdstrike.com^$doc -||crowdpass.live^$doc -||crowdstrike.life^$doc -||crowdstrikeupdate.com^$doc -||mecrowdstrikesnowstandalone.azurewebsites.net^$doc -||crowdstrikereposify.net^$doc -||crowdstrike-falcon.online^$doc -||crowdstrike-solutions.nl^$doc -||crowdstrikeclaim.com^$doc -||crowdstrokeme.me^$doc -||crowdstrikeoutage.com^$doc -||crowdstrikefix.zip^$doc -||crowdstuck.com^$doc -||portalintranetgrupobbva.com^$all -||dropbox.com/*/crowdstrike-hotfix.zip^$all -||amazon-analytic.com^$all -||eventstickets.club^$all,to=~tickets.paris2024.org -||tickets.website.com.se^$all,to=~tickets.paris2024.org -||ticketsparis24.com^$all,to=~tickets.paris2024.org -||tickets-paris24.com^$all,to=~tickets.paris2024.org -||ticket-paris24.com^$all,to=~tickets.paris2024.org -||elamoto.com^$all -||kongtuke.com^$all -||egisela.com^$all -||uhsee.com^$all diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/ublock/filters.min.txt b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/ublock/filters.min.txt deleted file mode 100644 index 4b06387..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/assets/ublock/filters.min.txt +++ /dev/null @@ -1,23644 +0,0 @@ -! Title: uBlock filters -! Expires: 5 days -! Last modified: Mon, 29 Jul 2024 17:31:42 +0000 -! Diff-Path: %diffpath%#ublock-filters -! Diff-Expires: 317 minutes -! License: https://github.com/uBlockOrigin/uAssets/blob/master/LICENSE -! *** uAssets:filters/filters.txt *** -*_ad_$media,domain=youtube.com,3p -! @@||youtube.com/get_video_info?*timedtext_editor$xhr,1p -tv.youtube.com##+js(trusted-replace-xhr-response, '"adPlacements"', '"no_ads"', /playlist\?list=|player\?|watch\?[tv]=|youtubei\/v1\/player/) -!#if !cap_html_filtering -www.youtube.com##+js(trusted-replace-xhr-response, /"adPlacements.*?([A-Z]"\}|"\}{2\,4})\}\]\,/, , /playlist\?list=|player\?|watch\?[tv]=|youtubei\/v1\/player/) -www.youtube.com##+js(trusted-replace-xhr-response, /"adPlacements.*?("adSlots"|"adBreakHeartbeatParams")/gms, $1, youtubei/v1/player) -www.youtube.com##+js(trusted-replace-fetch-response, /"adPlacements.*?([A-Z]"\}|"\}{2\,4})\}\]\,/, , player?) -www.youtube.com##+js(trusted-replace-fetch-response, /"adSlots.*?\}\}\]\,"adBreakHeartbeatParams/, "adBreakHeartbeatParams, player?) -!#else -||www.youtube.com/playlist?list=$xhr,1p,replace=/"adPlacements.*?([A-Z]"\}|"\}{2\,4})\}\]\,// -||www.youtube.com/playlist?list=$xhr,1p,replace=/"adSlots.*?\}\}\]\,"adBreakHeartbeatParams/"adBreakHeartbeatParams/ -||www.youtube.com/watch?$xhr,1p,replace=/"adPlacements.*?([A-Z]"\}|"\}{2\,4})\}\]\,// -||www.youtube.com/watch?$xhr,1p,replace=/"adSlots.*?\}\}\]\,"adBreakHeartbeatParams/"adBreakHeartbeatParams/ -||www.youtube.com/youtubei/v1/player?$xhr,1p,replace=/"adPlacements.*?([A-Z]"\}|"\}{2\,4})\}\]\,// -||www.youtube.com/youtubei/v1/player?$xhr,1p,replace=/"adSlots.*?\}\}\]\,"adBreakHeartbeatParams/"adBreakHeartbeatParams/ -!#endif -m.youtube.com,music.youtube.com,tv.youtube.com,www.youtube.com,youtubekids.com,youtube-nocookie.com##+js(set, ytInitialPlayerResponse.playerAds, undefined) -m.youtube.com,music.youtube.com,tv.youtube.com,www.youtube.com,youtubekids.com,youtube-nocookie.com##+js(set, ytInitialPlayerResponse.adPlacements, undefined) -m.youtube.com,music.youtube.com,tv.youtube.com,www.youtube.com,youtubekids.com,youtube-nocookie.com##+js(set, ytInitialPlayerResponse.adSlots, undefined) -m.youtube.com,music.youtube.com,tv.youtube.com,www.youtube.com,youtubekids.com,youtube-nocookie.com##+js(set, playerResponse.adPlacements, undefined) -m.youtube.com,music.youtube.com,youtubekids.com,youtube-nocookie.com##+js(json-prune, playerResponse.adPlacements playerResponse.playerAds playerResponse.adSlots adPlacements playerAds adSlots important) -www.youtube.com##+js(json-prune-fetch-response, playerAds adPlacements adSlots playerResponse.playerAds playerResponse.adPlacements playerResponse.adSlots, , propsToMatch, /playlist?) -youtube.com##.ytlr-horizontal-list-renderer__items > .yt-virtual-list__container > .yt-virtual-list__item--visible.yt-virtual-list__item--selected.yt-virtual-list__item:has-text(Ad) -||googlevideo.com/initplayback?source=youtube*&c=TVHTML5&oad=$xhr,domain=youtube.com -! Shorts Ad -m.youtube.com,music.youtube.com,tv.youtube.com,www.youtube.com,youtubekids.com,youtube-nocookie.com##+js(json-prune-fetch-response, reelWatchSequenceResponse.entries.[-].command.reelWatchEndpoint.adClientParams.isAd entries.[-].command.reelWatchEndpoint.adClientParams.isAd, , propsToMatch, url:/reel_watch_sequence?) -! AdDefend -!#if env_chromium -lablue.*##+js(nostif, push, 500) -||doubleclick.net^$script,important,domain=auto-motor-und-sport.de -!#endif -4-liga.com,4fansites.de,4players.de,9monate.de##+js(nostif, .call(null), 10) -aachener-nachrichten.de,aachener-zeitung.de,abendblatt.de,abendzeitung-muenchen.de,about-drinks.com,abseits-ka.de,airliners.de,ajaxshowtime.com,allgemeine-zeitung.de,alpin.de,antenne.de,arcor.de,areadvd.de,areamobile.de,ariva.de,astronews.com,aussenwirtschaftslupe.de,auszeit.bio,auto-motor-und-sport.de,auto-service.de,autobild.de,autoextrem.de,autopixx.de,autorevue.at,az-online.de##+js(nostif, .call(null), 10) -baby-vornamen.de,babyclub.de,bafoeg-aktuell.de,berliner-kurier.de,berliner-zeitung.de,bigfm.de,bikerszene.de,bildderfrau.de,blackd.de,blick.de,boerse-online.de,boerse.de,boersennews.de,braunschweiger-zeitung.de,brieffreunde.de,brigitte.de,buerstaedter-zeitung.de,buffed.de,businessinsider.de,buzzfeed.at,buzzfeed.de##+js(nostif, .call(null), 10) -caravaning.de,cavallo.de,chefkoch.de,cinema.de,clever-tanken.de,computerbild.de,computerhilfen.de,comunio-cl.com,comunio.*,connect.de,chip.de##+js(nostif, .call(null), 10) -da-imnetz.de,dasgelbeblatt.de,dbna.com,dbna.de,deichstube.de,deine-tierwelt.de,der-betze-brennt.de,derwesten.de,desired.de,dhd24.com,dieblaue24.com,digitalfernsehen.de,dnn.de,donnerwetter.de##+js(nostif, .call(null), 10) -e-hausaufgaben.de,e-mountainbike.com,eatsmarter.de,echo-online.de,ecomento.de,einfachschoen.me,elektrobike-online.com,eltern.de,epochtimes.de,essen-und-trinken.de,express.de,extratipp.com##+js(nostif, .call(null), 10) -familie.de,fanfiktion.de,fehmarn24.de,fettspielen.de,fid-gesundheitswissen.de,finanzen.*,finanznachrichten.de,finanztreff.de,finya.de,firmenwissen.de,fitforfun.de,fnp.de,football365.fr,formel1.de,fr.de,frankfurter-wochenblatt.de,freenet.de,fremdwort.de,froheweihnachten.info,frustfrei-lernen.de,fuldaerzeitung.de,funandnews.de,fussballdaten.de,futurezone.de##+js(nostif, .call(null), 10) -gala.de,gamepro.de,gamersglobal.de,gamesaktuell.de,gamestar.de,gameswelt.*,gamezone.de,gartendialog.de,gartenlexikon.de,gedichte.ws,geissblog.koeln,gelnhaeuser-tageblatt.de,general-anzeiger-bonn.de,geniale-tricks.com,genialetricks.de,gesund-vital.de,gesundheit.de,gevestor.de,gewinnspiele.tv,giessener-allgemeine.de,giessener-anzeiger.de,gifhorner-rundschau.de,giga.de,gipfelbuch.ch,gmuender-tagespost.de,golem.de,gruenderlexikon.de,gusto.at,gut-erklaert.de,gutfuerdich.co##+js(nostif, .call(null), 10) -hallo-muenchen.de,hamburg.de,hanauer.de,hardwareluxx.de,hartziv.org,harzkurier.de,haus-garten-test.de,hausgarten.net,haustec.de,haz.de,heftig.*,heidelberg24.de,heilpraxisnet.de,heise.de,helmstedter-nachrichten.de,hersfelder-zeitung.de,hftg.co,hifi-forum.de,hna.de,hochheimer-zeitung.de,hoerzu.de,hofheimer-zeitung.de##+js(nostif, .call(null), 10) -iban-rechner.de,ikz-online.de,immobilienscout24.de,ingame.de,inside-digital.de,inside-handy.de,investor-verlag.de##+js(nostif, .call(null), 10) -jappy.com,jpgames.de##+js(nostif, .call(null), 10) -kabeleins.de,kachelmannwetter.com,kamelle.de,kicker.de,kindergeld.org,klettern-magazin.de,klettern.de,kochbar.de,kreis-anzeiger.de,kreisbote.de,kreiszeitung.de,ksta.de,kurierverlag.de##+js(nostif, .call(null), 10) -lachainemeteo.com,lampertheimer-zeitung.de,landwirt.com,laut.de,lauterbacher-anzeiger.de,leckerschmecker.me,leinetal24.de,lesfoodies.com,levif.be,lifeline.de,liga3-online.de,likemag.com,linux-community.de,linux-magazin.de,live.vodafone.de,ln-online.de,lokalo24.de,lustaufsleben.at,lustich.de,lvz.de,lz.de##+js(nostif, .call(null), 10) -macwelt.de,macworld.co.uk,mail.de,main-spitze.de,manager-magazin.de,manga-tube.me,mathebibel.de,mathepower.com,maz-online.de,medisite.fr,mehr-tanken.de,mein-kummerkasten.de,mein-mmo.de,mein-wahres-ich.de,meine-anzeigenzeitung.de,meinestadt.de,menshealth.de,mercato365.com,merkur.de,messen.de,metal-hammer.de,metalflirt.de,meteologix.com,minecraft-serverlist.net,mittelbayerische.de,modhoster.de,moin.de,mopo.de,morgenpost.de,motor-talk.de,motorbasar.de,motorradonline.de,motorsport-total.com,motortests.de,mountainbike-magazin.de,moviejones.de,moviepilot.de,mt.de,mtb-news.de,musiker-board.de,musikexpress.de,musikradar.de,mz-web.de##+js(nostif, .call(null), 10) -n-tv.de,naumburger-tageblatt.de,netzwelt.de,neuepresse.de,neueroeffnung.info,news.at,news.de,news38.de,newsbreak24.de,nickles.de,nicknight.de,nl.hardware.info,nn.de,nnn.de,nordbayern.de,notebookchat.com,notebookcheck-ru.com,notebookcheck-tr.com,notebookcheck.*,noz-cdn.de,noz.de,nrz.de,nw.de,nwzonline.de##+js(nostif, .call(null), 10) -oberhessische-zeitung.de,och.to,oeffentlicher-dienst.info,onlinekosten.de,onvista.de,op-marburg.de,op-online.de,outdoor-magazin.com,outdoorchannel.de##+js(nostif, .call(null), 10) -paradisi.de,pc-magazin.de,pcgames.de,pcgameshardware.de,pcwelt.de,pcworld.es,peiner-nachrichten.de,pferde.de,pietsmiet.de,pixelio.de,pkw-forum.de,playboy.de,playfront.de,pnn.de,pons.com,prad.de,prignitzer.de,profil.at,promipool.de,promobil.de,prosiebenmaxx.de,psychic.de##+js(nostif, .call(null), 10) -quoka.de##+js(nostif, .call(null), 10) -radio.at,radio.de,radio.dk,radio.es,radio.fr,radio.it,radio.net,radio.pl,radio.pt,radio.se,ran.de,readmore.de,rechtslupe.de,recording.de,rennrad-news.de,reuters.com,reviersport.de,rhein-main-presse.de,rheinische-anzeigenblaetter.de,rimondo.com,roadbike.de,roemische-zahlen.net,rollingstone.de,rot-blau.com,rp-online.de,rtl.de,rtv.de,rugby365.fr,ruhr24.de,rundschau-online.de,runnersworld.de##+js(nostif, .call(null), 10) -safelist.eu,salzgitter-zeitung.de,sat1.de,sat1gold.de,schoener-wohnen.de,schwaebische-post.de,schwarzwaelder-bote.de,serienjunkies.de,shz.de,sixx.de,skodacommunity.de,smart-wohnen.net,sn.at,sozialversicherung-kompetent.de,spiegel.de,spielen.de,spieletipps.de,spielfilm.de,sport.de,sport365.fr,sportal.de,spox.com,stern.de,stuttgarter-nachrichten.de,stuttgarter-zeitung.de,sueddeutsche.de,svz.de,szene1.at,szene38.de##+js(nostif, .call(null), 10) -t-online.de,tagesspiegel.de,taschenhirn.de,techadvisor.co.uk,techstage.de,tele5.de,testedich.*,the-voice-of-germany.de,thueringen24.de,tichyseinblick.de,tierfreund.co,tiervermittlung.de,torgranate.de,transfermarkt.*,trend.at,truckscout24.*,tv-media.at,tvdigital.de,tvinfo.de,tvspielfilm.de,tvtoday.de,tvtv.*,tz.de##+js(nostif, .call(null), 10) -unicum.de,unnuetzes.com,unsere-helden.com,unterhalt.net,usinger-anzeiger.de,usp-forum.de##+js(nostif, .call(null), 10) -videogameszone.de,vienna.at,vip.de,virtualnights.com,vox.de##+js(nostif, .call(null), 10) -wa.de,wallstreet-online.de,waz.de,weather.us,webfail.com,weihnachten.me,weihnachts-bilder.org,weihnachts-filme.com,welt.de,weltfussball.at,weristdeinfreund.de,werkzeug-news.de,werra-rundschau.de,wetterauer-zeitung.de,wetteronline.*,wieistmeineip.*,wiesbadener-kurier.de,wiesbadener-tagblatt.de,winboard.org,windows-7-forum.net,winfuture.de,wintotal.de,wlz-online.de,wn.de,wohngeld.org,wolfenbuetteler-zeitung.de,wolfsburger-nachrichten.de,woman.at,womenshealth.de,wormser-zeitung.de,woxikon.de,wp.de,wr.de##+js(nostif, .call(null), 10) -yachtrevue.at##+js(nostif, .call(null), 10) -ze.tt,zeit.de##+js(nostif, .call(null), 10) -meineorte.com,osthessen-news.de,techadvisor.com,focus.de##+js(nostif, .call(null)) -kicker.de##+js(set, ov.advertising.tisoomi.loadScript, noopFunc) -!#if cap_html_filtering -alpin.de,boersennews.de,chefkoch.de,chip.de,clever-tanken.de,desired.de,donnerwetter.de,fanfiktion.de,focus.de,formel1.de,frustfrei-lernen.de,gewinnspiele.tv,giga.de,gut-erklaert.de,kino.de,messen.de,nickles.de,nordbayern.de,spielfilm.de,teltarif.de,unsere-helden.com,weltfussball.at,watson.de,moviepilot.de##^script:has-text(DisplayAcceptableAdIfAdblocked) -!#else -alpin.de,boersennews.de,chefkoch.de,chip.de,clever-tanken.de,desired.de,donnerwetter.de,fanfiktion.de,focus.de,formel1.de,frustfrei-lernen.de,gewinnspiele.tv,giga.de,gut-erklaert.de,kino.de,messen.de,nickles.de,nordbayern.de,spielfilm.de,teltarif.de,unsere-helden.com,weltfussball.at,watson.de,moviepilot.de##+js(rmnt, script, DisplayAcceptableAdIfAdblocked) -!#endif -||giga.de/special/gutscheine/*.png$script,1p -||kino.de/mages/*.png$script,1p -||teltarif.de/img/$script,1p -.de/bilder/*.jpg|$script,1p -.at/bilder/*.jpg|$script,1p -.de/image/*.gif|$script,1p -teltarif.de,kino.de,desired.de,giga.de##img[referrerpolicy="unsafe-url"][src^="/img/"][src$=".jpg"] -wetter.*##+js(nostif, (null), 10) -tagesspiegel.de##+js(aopr, Notification) -newsbreak24.de##^script:has-text(===):has-text(/[\w\W]{14000}/) -t-online.de##+js(set, abp, false) -businessinsider.de##.slideshow__mobile-ad -businessinsider.de##.slideshow__middle-ad-container -businessinsider.de##.slideshow__desktop-ad:style(max-height:20px) -businessinsider.de##.bi-superbanner -businessinsider.de##.slideshow__ad -businessinsider.de##.bi-injected-ad -businessinsider.de##.adup-wrap -desired.de##.sad_banner -frustfrei-lernen.de##.noContentBannerArea -macworld.co.uk##.leaderBoardHolder -wallstreet-online.de##+js(nostif, userHasAdblocker) -bonedo.de##.banner -mtb-news.de##.mtbnews-forum__banner -newsbreak24.de##.aw-track-click -newsbreak24.de###adup1 -transfermarkt.*##.noscript -n-tv.de##+js(aopr, embedAddefend) -! To counter unnecessary exception filters -||adnxs.com^$important,domain=bz-berlin.de|metal-hammer.de|musikexpress.de|rollingstone.de|stylebook.de -||googlesyndication.com^$script,important,domain=autobild.de|metal-hammer.de|musikexpress.de|rollingstone.de -||sascdn.com^$script,important,domain=autobild.de|metal-hammer.de|musikexpress.de|rollingstone.de -||smartadserver.com^$script,important,domain=metal-hammer.de|musikexpress.de|rollingstone.de|welt.de -@@||11freunde.de/sites/all/themes/elf/gujAd/gujAd.js$domain=11freunde.de,badfilter -@@||g.doubleclick.net/gpt/pubads_impl_$script,domain=11freunde.de|auto-motor-und-sport.de|brigitte.de|gala.de|geo.de|hardwareluxx.de|hbf-info.de|kochbar.de|n-tv.de|notebooksbilliger.de|rakuten.at|rakuten.de|rtl.de|stern.de|welt.de|zalando.de,badfilter -abendzeitung-muenchen.de##.wtc-wg-plugilo-connector -boerse-online.de##.center_top_bar -wetter.de##.outbrain-ad-slot -||iframe.chefkoch.de/amp/online-food-trade/rewe/$frame -mathebibel.de###banner-bottom -/\.de\/[a-z]{10,18}\.js$/$script,1p,strict1p,match-case,domain=www.capital.de|www.essen-und-trinken.de|www.geo.de|www.eltern.de -@@*$ghide,domain=allgemeine-zeitung.de|buffed.de|buerstaedter-zeitung.de|echo-online.de|gamezone.de|lampertheimer-zeitung.de|lauterbacher-anzeiger.de|main-spitze.de|oberhessische-zeitung.de|wiesbadener-kurier.de|wormser-zeitung.de -echo-online.de##.mainFooter__ccePosition -echo-online.de##.recommendations__cceWidget -echo-online.de##.storyElementWrapper__container:has(> [data-testid="storyElementWrapper-cceWidget-element"]) -echo-online.de##.swiper-slide [data-testid="topStories-cardSlider-ad"]:upward(.swiper-slide) -echo-online.de##.teaserGrid > div:has(.nativeAd) -echo-online.de##div.frontpageOverview__child -allgemeine-zeitung.de,buerstaedter-zeitung.de,echo-online.de,lampertheimer-zeitung.de,lauterbacher-anzeiger.de,main-spitze.de,oberhessische-zeitung.de,wiesbadener-kurier.de,wormser-zeitung.de##.adSlot, .loadingBanner -berliner-zeitung.de##[class^="ad-slot"] -berliner-zeitung.de##[class^="outbrain"] -! breakage -@@||scdn.cxense.com/cx.cce.js$script,domain=allgemeine-zeitung.de|buerstaedter-zeitung.de|echo-online.de|lampertheimer-zeitung.de|lauterbacher-anzeiger.de|main-spitze.de|oberhessische-zeitung.de|wiesbadener-kurier.de|wormser-zeitung.de -@@||api.cxense.com/public/widget/data$xhr,domain=allgemeine-zeitung.de|buerstaedter-zeitung.de|echo-online.de|lampertheimer-zeitung.de|lauterbacher-anzeiger.de|main-spitze.de|oberhessische-zeitung.de|wiesbadener-kurier.de|wormser-zeitung.de -! Yavli ads -*.jpg$script,domain=allthingsvegas.com|clashdaily.com|madworldnews.com|politicalcowboy.com|reviveusa.com|sonsoflibertymedia.com|teltarif.de|themattwalshblog.com|videogamesblogger.com -*$script,3p,denyallow=aghtag.tech|agorahtag.tech|brid.tv|cloudflare.com|cloudflare.net|consensu.org|enetscores.com|etop.ro|facebook.net|fastly.net|fastlylb.net|fbcdn.net|fontawesome.com|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|instagram.com|jquery.com|jsdelivr.net|jwpcdn.com|mrf.io|onnetwork.tv|pahtzh.tech|quantcast.com|recaptcha.net|wall-street.ro|ziareromania.ro,domain=ziare.com|cancan.ro|ciao.ro|gandul.ro|prosport.ro|descopera.ro|csid.ro|raziculacrimi.ro|go4games.ro|wall-street.ro|9am.ro -*$script,3p,denyallow=anycast.me|cloudflare.com|cloudflare.net|consensu.org|consentframework.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|jsdelivr.net|mrf.io|priice.net|sirdata.fr|twitter.com|recaptcha.net|x.com,domain=lebigdata.fr|montjeuturf.net -*$script,3p,denyallow=cloudflare.com|cloudflare.net|consensu.org|facebook.net|fastly.net|fastlylb.net|fbcdn.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|jsdelivr.net|jwpcdn.com|recaptcha.net|sharethis.com|tradingview.com|twitter.com|x.com,domain=beforeitsnews.com -*$script,domain=amgreatness.com,3p,denyallow=spreaker.com|starfield.ai -/^https?:\/\/.*\/easylist\/[0-9]{5}/ -*banner$domain=beforeitsnews.com,image -||jeengweb.com^$3p -dcdirtylaundry.com,ipatriot.com,newser.com,politicalcowboy.com##+js(aost, Math, onerror) -! aupetitparieur.com,allthingsvegas.com,beforeitsnews.com,concomber.com,conservativebrief.com,conservativefiringline.com,dailylol.com,funnyand.com,letocard.fr,mamieastuce.com,meilleurpronostic.fr,patriotnationpress.com,toptenz.net,vitamiiin.com,writerscafe.org,populist.press,dailytruthreport.com,livinggospeldaily.com,first-names-meanings.com,welovetrump.com,thehayride.com,thelibertydaily.com,thepoke.co.uk,thepolitistick.com,theblacksphere.net,shark-tank.com,naturalblaze.com,greatamericanrepublic.com,dailysurge.com,truthlion.com,flagandcross.com,westword.com,republicbrief.com,freedomfirstnetwork.com,phoenixnewtimes.com,clashdaily.com,madworldnews.com,reviveusa.com,sonsoflibertymedia.com,videogamesblogger.com,topminceur.fr,lovezin.fr,protrumpnews.com,thepalmierireport.com,kresy.pl,thepatriotjournal.com,gellerreport.com,wltreport.com,miaminewtimes.com,politicalsignal.com,rightwingnews.com,bigleaguepolitics.com,comicallyincorrect.com##+js(aost, Math.random, injectedScript) -telexplorer.com.ar##+js(aost, Math.random, /injectedScript.*inlineScript/) -designbump.com,thedesigninspiration.com##+js(aost, Math.random, /(?=.*onerror)(?=^(?!.*(https)))/) -!#if cap_html_filtering -aupetitparieur.com,allthingsvegas.com,100percentfedup.com,beforeitsnews.com,concomber.com,conservativebrief.com,conservativefiringline.com,dailylol.com,funnyand.com,letocard.fr,mamieastuce.com,meilleurpronostic.fr,patriotnationpress.com,toptenz.net,vitamiiin.com,writerscafe.org,populist.press,dailytruthreport.com,livinggospeldaily.com,first-names-meanings.com,welovetrump.com,thehayride.com,thelibertydaily.com,thepoke.co.uk,thepolitistick.com,theblacksphere.net,shark-tank.com,naturalblaze.com,greatamericanrepublic.com,dailysurge.com,truthlion.com,flagandcross.com,westword.com,republicbrief.com,freedomfirstnetwork.com,phoenixnewtimes.com,designbump.com,clashdaily.com,madworldnews.com,reviveusa.com,sonsoflibertymedia.com,thedesigninspiration.com,videogamesblogger.com,protrumpnews.com,thepalmierireport.com,kresy.pl,thepatriotjournal.com,gellerreport.com,thegatewaypundit.com,wltreport.com,miaminewtimes.com,politicalsignal.com,rightwingnews.com,bigleaguepolitics.com,comicallyincorrect.com##^script:has-text(/==undefined.*body/) -!#else -aupetitparieur.com,allthingsvegas.com,100percentfedup.com,beforeitsnews.com,concomber.com,conservativebrief.com,conservativefiringline.com,dailylol.com,funnyand.com,letocard.fr,mamieastuce.com,meilleurpronostic.fr,patriotnationpress.com,toptenz.net,vitamiiin.com,writerscafe.org,populist.press,dailytruthreport.com,livinggospeldaily.com,first-names-meanings.com,welovetrump.com,thehayride.com,thelibertydaily.com,thepoke.co.uk,thepolitistick.com,theblacksphere.net,shark-tank.com,naturalblaze.com,greatamericanrepublic.com,dailysurge.com,truthlion.com,flagandcross.com,westword.com,republicbrief.com,freedomfirstnetwork.com,phoenixnewtimes.com,designbump.com,clashdaily.com,madworldnews.com,reviveusa.com,sonsoflibertymedia.com,thedesigninspiration.com,videogamesblogger.com,protrumpnews.com,thepalmierireport.com,kresy.pl,thepatriotjournal.com,gellerreport.com,thegatewaypundit.com,wltreport.com,miaminewtimes.com,politicalsignal.com,rightwingnews.com,bigleaguepolitics.com,comicallyincorrect.com##+js(rmnt, script, /==undefined.*body/) -!#endif -whatfinger.com##+js(set, oeo, noopFunc) -@@*$ghide,domain=themattwalshblog.com -||rddywd.com^$image,redirect-rule=1x1.gif -@@||rddywd.com/advertising.js$script -@@||thegatewaypundit.com^$image,1p -@@||wltreport.com^$image,1p -wltreport.com##.top-banner -newser.com##+js(aeld, load, Object) -funnyand.com##.ad-unit-desktop -conservativebrief.com###main-box-3 -conservativebrief.com###main-box-5 -conservativebrief.com###main-box-7 -conservativebrief.com##.ai-attributes -conservativebrief.com##[id^="vuukle-ad-"] -conservativebrief.com##.ai_widget -conservativebrief.com###vuukle-powerbar -beforeitsnews.com##[src*="/banner"] -politicalcowboy.com##.dsk-box-ad-e -politicalcowboy.com##.dsk-box-ad-a -truthlion.com##.ad-banner-revcontent -westword.com##.AirBillboardInlineContentresponsive -gellerreport.com##.__hinit -! Users should not have to punch holes in their blockers if it can be avoided. -*/fuckadblock-$script,redirect=fuckadblock.js-3.2.0:5 -*/fuckadblock.$script,redirect=fuckadblock.js-3.2.0:5 -*/blockadblock.$script,redirect=fuckadblock.js-3.2.0:5 -*/blockadblock-$script,redirect=fuckadblock.js-3.2.0:5 -*/wp-adblock-$script,redirect=fuckadblock.js-3.2.0:5 -||s3.amazonaws.com/homad-global-configs.schneevonmorgen.com/hd-main.js$script,domain=autobild.de|cinema.de|computerbild.de|cdnapi.kaltura.com|focus.de|spieleaffe.de|sueddeutsche.de,redirect=hd-main.js -||svonm.com/hd-main.js$script,redirect=hd-main.js,domain=cinema.de|cdnapi.kaltura.com -tvspielfilm.de##.promo-box -tvtoday.de##+js(nosiif, fireEvent, 500) -@@||tvtoday.de^$ghide -@@||a.bf-ad.net/makabo/ads_fol_init.js$script,domain=chip.de -||chip.de/*&$script,1p -chip.de##.js_download_button:has(> a.Download-Button--Free[href*="withinstaller"][href*="lastchanged"]) -chip.de##+js(json-prune, enabled, force_disabled) -##[href*="/afu.php"] -kisscartoon.*##+js(aeld, mousedown, clientX) -kisscartoon.*###upgrade_pop -blackmod.net##.js-notices.notices--bottom_fixer.notices -onrpg.com##a[href*="mmo-it.com/"] -onrpg.com##[href^="http://server.cpmstar.com/click.aspx"] -onrpg.com###onrpg-hotbox-widget -||gamingaffiliation.com^$3p -||adnxs.com/*/sport1.js$script,redirect=noopjs,domain=sport1.de -||acdn.adnxs.com/as/1h/pages/sport1_mediathek.js$script,redirect=noopjs,domain=sport1.de -||asadcdn.com/adlib/*$script,redirect=noopjs,domain=sport1.de -@@||tag.aticdn.net^$script,domain=sport1.de -@@||asadcdn.com/adlib/pages/sport1.js$script,domain=sport1.de -sport1.de##+js(aeld, load, hard_block) -sport1.de##.s1-ad -sport1.de##strong:has-text(/anzeige/i) -vaughn.live##+js(nosiif, header_menu_abvs, 10000) -vaughn.live##.vs_v9_stream_content_abvs -vaughn.live##.vs_v9_header_menu_abvs -vaughn.live##div[id$="-ad"][id^="vs_v9_"] -||g9g.eu^*fa.js$script,redirect=fuckadblock.js-3.2.0 -||8s8.eu^*fa.js$script,redirect=fuckadblock.js-3.2.0 -||sprzedaz2.oczarjk.pl/img/ads/banner.gif$image,redirect-rule=1x1.gif,domain=im9.eu -g9g.eu##+js(aopr, adBlockDetected) -! Computers seizing thanks to these moronic scripts leading to system-wide out -! of memory condition -||twnmm.com/js/*/adobe_audience_manager$script,redirect=noopjs -||twnmm.com/js/*/dfpad/*$script,redirect=noopjs -allmusic.com##+js(no-fetch-if, adsbygoogle) -allmusic.com##.advertising -redtube.*###paid_tabs_list -pornhub.*##div[id^="customSkin"] -pornhub.*##div.container:style(margin-top: 0px !important) -youjizz.com##+js(noeval) -youjizz.com###desktopFooterPr -youjizz.com##.top_pr -||indiatimes.com/detector$script -||static.clmbtech.com^$script,important,domain=indiatimes.com -||chartbeat.com/js/chartbeat.js$script,important,domain=indiatimes.com -||tags.crwdcntrl.net^$script,important,domain=indiatimes.com -economictimes.indiatimes.com##.active > ul > li:has-text(Ad:) -indiatimes.com##[onclick] .btxt:has-text(/Ad/):xpath(../../..) -indiatimes.com#@#a[onclick*="/click.htm?"] -indiatimes.com##[onclick] p:has-text(/Ad/):xpath(../../..) -indiatimes.com,samayam.com##[onclick] p:matches-css-before(content:/Ad /):xpath(../..):not(p:has-text(/MAHA/i)):not(p:has-text(/Times/i)) -samayam.com##:xpath(//span[(text()='Ad')]/../../..) -m.economictimes.com##H2:has-text(/Promoted/) + DIV -m.economictimes.com##h2:has-text(/Promoted/) -||m.economictimes.com/mpetat/commons/images/rbc-red.png$image -economictimes.indiatimes.com##div h2:has(span:matches-css-before(content: /Sponsored/)) -economictimes.indiatimes.com##div h2:has(span:matches-css-before(content: /Sponsored/)) + div -indiatimes.com##h2:has-text(/Promoted/) + div -indiatimes.com##h2:has-text(/Promoted/) -indiatimes.com##.wzrk-overlay -||media.indiatimes.in/idthat/commons/images/rbc-gray.png$image -indiatimes.com##[onclick] h5:has-text(/Ad/):xpath(../../..) -m.timesofindia.com##.brand_ctn:has-text(/Ad:/):xpath(../..) -m.timesofindia.com##span:has-text(/Ad:/):xpath(../..) -m.timesofindia.com##p:has-text(/Ad:/):xpath(../../..) -indiatimes.com##p:matches-css(background-image: /colombia-icon/):xpath(../..) -indiatimes.com##div:matches-css(background-image: /colombia_/):xpath(../..) -m.timesofindia.com##.asAffiliate -seithy.com##.slick-track -indiatimes.com##.PPD_ADS_JS -timesofindia.indiatimes.com##+js(set, nsShowMaxCount, 0) -||assets.toiimg.com/affiliates/sdk/v2.js$script,domain=indiatimes.com|timesofindia.com -||assets.toiimg.com/affiliates/sdk/v1.js$script,domain=indiatimes.com|timesofindia.com -timesofindia.indiatimes.com##.nonAppView > .mPws3 -timesofindia.indiatimes.com##div[class*="personaliseWidgetLoader"] -timesofindia.indiatimes.com##.sidebar_ad_fix .imageBanner -timesofindia.indiatimes.com###header-masthead -! punemirror .com banner ads -||punemirror.com/api/v1$xhr,1p -||malayalam.samayam.com/*/amazon_widget.cms?type=amazondeal$frame -! interstitial page -economictimes.indiatimes.com##+js(set, objVc.interstitial_web,'') -economictimes.indiatimes.com##+js(nosiif, adb) -maharashtratimes.com##.ad1 -maharashtratimes.com##.colombia -##[href^="https://trk.clmbtrck.in/click"] -*/pwafeeds/amazon_$frame -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=indiatimes.com|iamgujarat.com|vijaykarnataka.com|tamil.samayam.com|telugu.samayam.com|malayalam.samayam.com,redirect-rule=google-ima.js -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js,domain=m.economictimes.com -||dealspakki.com^$frame,domain=eisamay.com|iamgujarat.com|indiatimes.com|maharashtratimes.com|samayam.com|vijaykarnataka.com -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=maharashtratimes.com,important -! ads placeholders -eisamay.com,indiatimes.com,samayam.com,vijaykarnataka.com##.wdt-taboola -eisamay.com,indiatimes.com,samayam.com,vijaykarnataka.com##.pwa-deals.wdt_amz -eisamay.com,indiatimes.com,samayam.com,vijaykarnataka.com##div[class="news-card col4"] -eisamay.com,indiatimes.com,samayam.com,vijaykarnataka.com##.advertorialwrapper -eisamay.com,indiatimes.com,samayam.com,vijaykarnataka.com##.atf-wrapper -eisamay.com,indiatimes.com,samayam.com,vijaykarnataka.com##.top-atf-enabled-wrapper -indiatimes.com##.article_first_ad -health.economictimes.indiatimes.com##.layer-overlay -health.economictimes.indiatimes.com##.article-detail-ad-slot -educationtimes.com##div[class]:has(> div[class] > div[id^="div-gpt-ad"]) -||svonm.com/hd-main.js$script,redirect=hd-main.js,domain=kicker.de|myspass.de|spielaffe.de|tele5.de -aranzulla.it##+js(aopr, navigator.userAgent) -*$script,domain=aranzulla.it,redirect-rule=noopjs -aranzulla.it##.banner:remove() -aranzulla.it##[id^="ad"]:remove() -||paywall.folha.uol.com.br/wall.jsonp?callback=paywall.inicio$domain=blogfolha.uol.com.br|educacao.uol.com.br|folha.uol.com.br -||jsuol.com.br/*/detectadblock/$script,important,domain=uol.com.br -www.uol##.content-lightbox -www.uol##.overlay-lightbox -uol.com.br##.bg-banner -uol.com.br##[id^="banner-300x250"]:remove() -||popads.net/pop.js$script,redirect=popads.net.js -@@||indiatoday.intoday.in/video/$ghide -businesstoday.in###zedoads1:style(height: 1px !important) -businesstoday.in###zedoads2:style(height: 1px !important) -businesstoday.in###zedotopnavads:style(height: 1px !important) -businesstoday.in###zedotopnavads1:style(height: 1px !important) -businesstoday.in###adbocker_alt -businesstoday.in##.adblocker-container -businesstoday.in###story-maincontent:style(display: block !important) -indiatoday.in,indiatoday.intoday.in##.ad_bn.row -indiatoday.in,intoday.in###adbocker_alt -indiatoday.in,intoday.in###zedoads1:style(height: 1px !important) -indiatoday.in,intoday.in###zedoads2:style(height: 1px !important) -indiatoday.in,intoday.in##.adblockcontainer:style(display: block !important) -||zedo.com^$script,important,domain=indiatoday.in|intoday.in -||googlesyndication.com^$script,important,domain=indiatoday.in|intoday.in -ndtv.com###ndtv-message-users -ndtv.com###ins_videodetail:style(display: block !important;) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion###stream_pagelet div[id^="hyperfeed_story_id_"]:has(a.uiStreamSponsoredLink) -! "People You May Know": EasyList tries to block these, might as well block them fully -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion###stream_pagelet div[id^="hyperfeed_story_id_"]:if(h6:has-text(People You May Know)) -touch.facebook.com,mtouch.facebook.com,x.facebook.com,iphone.facebook.com,m.beta.facebook.com,touch.beta.facebook.com,mtouch.beta.facebook.com,x.beta.facebook.com,iphone.beta.facebook.com,m.facebook.com,b-m.facebook.com,mobile.facebook.com,touch.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion,mtouch.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion,x.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion,iphone.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion,touch.beta.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion,m.facebook.com,m.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion,b-m.facebook.com,b-m.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion,mobile.facebook.com,mobile.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##article:has(footer > div > div > a[href^="/friends/center/?fb_ref="]) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##.ego_section:has(a.adsCategoryTitleLink) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion###stream_pagelet [id^="hyperfeed_story_id_"]:has(span._4dcu) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##.ego_column:if(a[href^="/campaign/landing"]) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##.ego_section:if(a[href^="/ad_campaign"]) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##.userContentWrapper:has(a[href*="/ads/"]):not(:has(a[href*="/ads/preferences"])) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion#@#div[id^="hyperfeed_story_id_"]:has(a[href*="utm_campaign"]) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##.userContentWrapper>div div>span>span:has-text(/^Suggested Post$/) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##div[id^="hyperfeed_story_id_"]:has(div > span:has(abbr .timestampContent):matches-css(display: none)) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##.ego_section:has(a[href*="campaign_id"]) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##div[id^=hyperfeed_story_id_]:has(span[data-ft="{\"tn\":\"j\"}"]) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion#?#.pagelet-group .pagelet:has(a:has-text(/Sponsored|Create ad|Crear un anuncio|Publicidad/)) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##div[role="complementary"] div:not([class]):not([id]) > span:not([class]):not([id]):not([aria-labelledby]) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##div[role="region"] + div[role="main"] div[role="article"] div[style="border-radius: max(0px, min(8px, ((100vw - 4px) - 100%) * 9999)) / 8px;"] > div[class]:not([class*=" "]) -! !#if env_chromium -! facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##html[lang="en"] div[aria-posinset] svg[style$="width: 56.8906px;"] use:upward(div[aria-posinset]) -! facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##html[lang="pl"] div[aria-posinset] svg[style$="width: 78.5465px;"] use:upward(div[aria-posinset]) -! facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##html[lang="vi"] div[aria-posinset] svg[style$="width: 65.0684px;"] use:upward(div[aria-posinset]) -! !#endif -! !#if env_firefox -! facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##html[lang="en"] div[aria-posinset] svg[style$="width: 59px;"] use:upward(div[aria-posinset]) -! facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##html[lang="pl"] div[aria-posinset] svg[style$="width: 80.8px;"] use:upward(div[aria-posinset]) -! facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##html[lang="vi"] div[aria-posinset] svg[style$="width: 65px;"] use:upward(div[aria-posinset]) -! !#endif -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##div[aria-posinset]:has(a[aria-label="広告"]):style(height: 0 !important; overflow: hidden !important;) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##:matches-path(/^\/(\?[a-z]+=\w+)?$/) div[aria-posinset] :is(h3, h4) span > a[href]:not([href^="/groups/"]):not([href*="section_header_type"]):matches-attr(href="/__cft__\[0\]=[-\w]{290,}/"):upward(div[aria-posinset]):style(height: 0 !important; overflow: hidden !important;) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##div[aria-describedby]:not([aria-posinset]) :is(h3, h4) span > a[href]:not([href^="/groups/"]):not([href*="section_header_type"]):matches-attr(href="/__cft__\[0\]=[-\w]{290,}/"):upward(div[aria-describedby]):style(height: 0 !important; overflow: hidden !important;) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion###watch_feed div:not([class]) > div:not([class]) div[class] span[class] > a span[aria-labelledby]:has(> span[style="display: flex;"] > span[class]:has-text(/^S$/)):has(> span[style="display: flex;"] > span[class]:has-text(/^p$/)):has(> span[style="display: flex;"] > span[class]:has-text(/^d$/)):upward(div:not([class]) > div:not([class])):style(height: 0 !important; overflow: hidden !important;) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion###watch_feed div:not([class]) > div:not([class]) div[class] span[class] > a[aria-label="広告"]:upward(div:not([class]) > div:not([class])):style(height: 0 !important; overflow: hidden !important;) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion###watch_feed div:not([class]) > div:not([class]) div[class] [class] > a[href*="utm_source=facebook"] span[class] > span[class][style*="-webkit-line-clamp"]:has-text(広告):upward(div:not([class]) > div:not([class])):style(height: 0 !important; overflow: hidden !important;) -facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##:matches-path(/search/) div[role="article"] span > a[href]:not([href^="/groups/"]):not([href*="section_header_type"]):matches-attr(href="/__cft__\[0\]=[-\w]{265,}/"):upward([role="article"]):style(height: 0 !important; overflow: hidden !important;) -!#if env_chromium -web.facebook.com,www.facebook.com##+js(json-prune, require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.node, require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.node.sponsored_data.ad_id) -!#else -web.facebook.com,www.facebook.com##+js(json-prune, require.0.3.0.__bbox.require.[].3.[-].__bbox.result.data.node.sponsored_data.ad_id) -!#endif -web.facebook.com,www.facebook.com##+js(json-prune, require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.serpResponse.results.edges.[-].relay_rendering_strategy.view_model.story.sponsored_data.ad_id) -!#if cap_html_filtering -||facebook.com/api/graphql/$xhr,replace=/\{"brs_content_label":[^,]+,"[^"]+":"SPONSORED"[^\n]+"cursor":"[^"]+"\}/{}/g,domain=web.facebook.com|www.facebook.com -||facebook.com/api/graphql/$xhr,replace=/\{"node":\{"role":"SEARCH_ADS"[^\n]+?cursor":[^}]+\}/{}/g,domain=web.facebook.com|www.facebook.com -||facebook.com/api/graphql/$xhr,replace=/\{"node":\{"__typename":"MarketplaceFeedAdStory"[^\n]+?"cursor":(?:null|"\{[^\n]+?\}"|[^\n]+?MarketplaceSearchFeedStoriesEdge")\}/{}/g,domain=web.facebook.com|www.facebook.com -||facebook.com/api/graphql/$xhr,replace=/\{"node":\{"__typename":"VideoHomeFeedUnitSectionComponent"[^\n]+?"sponsored_data":\{"ad_id"[^\n]+?"cursor":null\}/{}/,domain=web.facebook.com|www.facebook.com -!#else -web.facebook.com,www.facebook.com##+js(trusted-replace-xhr-response, '/\{"brs_content_label":[^,]+,"[^"]+":"SPONSORED"[^\n]+"cursor":"[^}]+\}/g', {}, /api/graphql) -web.facebook.com,www.facebook.com##+js(trusted-replace-xhr-response, /\{"node":\{"role":"SEARCH_ADS"[^\n]+?cursor":[^}]+\}/g, {}, /api/graphql) -web.facebook.com,www.facebook.com##+js(trusted-replace-xhr-response, /\{"node":\{"__typename":"MarketplaceFeedAdStory"[^\n]+?"cursor":(?:null|"\{[^\n]+?\}"|[^\n]+?MarketplaceSearchFeedStoriesEdge")\}/g, {}, /api/graphql) -web.facebook.com,www.facebook.com##+js(trusted-replace-xhr-response, /\{"node":\{"__typename":"VideoHomeFeedUnitSectionComponent"[^\n]+?"sponsored_data":\{"ad_id"[^\n]+?"cursor":null\}/, {}, /api/graphql) -!#endif -web.facebook.com,www.facebook.com##+js(json-prune, require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.node, require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.node.story.sponsored_data.ad_id) -web.facebook.com,www.facebook.com##+js(json-prune, require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.marketplace_search.feed_units.edges.[-].node.story.sponsored_data.ad_id) -web.facebook.com,www.facebook.com##+js(json-prune, require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.viewer.marketplace_feed_stories.edges.[-].node.story.sponsored_data.ad_id) -web.facebook.com,www.facebook.com###seo_pivots ~ div > div[style^="max-width"] > div[class] > div[style^="max-width"]:has(a[href^="/ads/about/?"]) -web.facebook.com,www.facebook.com##+js(json-prune-xhr-response, data.viewer.instream_video_ads data.scrubber, , propsToMatch, /api/graphql) -!facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##div[role="feed"] > div[class]:has([data-ad-preview]) -ndtv.com###ndtv-myModal -ndtv.com##body:style(overflow: auto !important) -*$3p,denyallow=cloudflare.com|googleapis.com|gstatic.com|support.send.cm|userscloud.net,domain=userscloud.com -@@||userscloud.com^$ghide -userscloud.com##+js(aeld, /contextmenu|keydown/) -userscloud.com##+js(set, console.clear, trueFunc) -||userscloud.com/js/de.min.js$script,1p -wetteronline.*##+js(aopr, __eiPb) -wetteronline.*##^script:has-text(runCount) -wetteronline.*###topcontainer -wetteronline.de###woRect -wetteronline.de###woCsiAdContent -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=m.timesofindia.com,redirect-rule=google-ima.js -@@||m.photos.timesofindia.com^$ghide -||static.toiimg.com/ad-banner*/photo/*$image,redirect=2x2.png,domain=m.timesofindia.com -m.timesofindia.com##.adsinview -timesofindia.com##+js(aopr, detector) -timesofindia.indiatimes.com##+js(aeld, , adb) -m.timesofindia.com,timesofindia.indiatimes.com##+js(nostif, adb) -||indiatimes.com^$image,redirect-rule=1x1.gif -m.aajtak.in##body > #adbocker_alt.adblocker-page -m.aajtak.in##body > .secArticleTitle:style(display: block !important) -m.aajtak.in##body > .pubTime:style(display: block !important) -m.aajtak.in##body > .secArticleImage:style(display: block !important) -m.aajtak.in##body > .storyBody:style(display: block !important) -/amazon_products_prod.js$script,domain=aajtak.in -finanzen.*##+js(nosiif, nrWrapper) -finanzen.*##+js(nostif, nrWrapper) -finanzen.*###adup1 -finanzen.*###bs_abstand -finanzen.*##[id^="sas_"]:style(height: 1px !important) -||images.finanzen.net/*banner$image -finanzen.net##.pull-right.img-responsive -finanzen.net##:xpath('//*[contains(text(),"Werbung")]') + [class] -gadgets.ndtv.com##.adblockerContent:style(display: initial !important;) -gadgets.ndtv.com###ndtv-message-userss -amazon.*###s-results-list-atf > .s-result-item:has(> .s-item-container h5.s-sponsored-list-header) -amazon.*###s-results-list-atf > .s-result-item:has(.s-item-container h5.s-sponsored-header) -amazon.*##.s-result-item:has(> .s-item-container > h5 .s-sponsored-info-icon) -amazon.*##.s-widget:has(> [data-cel-widget^="MAIN"] > [data-cel-widget^="tetris"] > div[id^="CardInstance"][class^="_tetris-"]) -amazon.*##.a-carousel-card:has(> div > div[cel_widget_id^="adplacements:"]):remove() -amazon.*##.AdHolder -amazon.*###similarities_feature_div:has(span[id^="ad-feedback-text"]) -amazon.*##div[cel_widget_id="sims-consolidated-5_csm_instrumentation_wrapper"] -motherless.com##+js(set, _ml_ads_ns, null) -motherless.com##+js(acs, jQuery, cookie) -freethesaurus.com,thefreedictionary.com##div:has(> a:not([href*="/"]) > img:not([src*="/"])) -freethesaurus.com,thefreedictionary.com##+js(nostif, warn) -freethesaurus.com,thefreedictionary.com##+js(aopr, adc) -freethesaurus.com,thefreedictionary.com##div[class][id]:not(.logo):if-not(*):has-text(/^$/) -freethesaurus.com,thefreedictionary.com###sidebar > .widget:not([id]):has(> .holder > a[href]) -! To counter exception filters -||googlesyndication.com^$script,important,domain=thefreedictionary.com -||x.shopsavvy.com^$3p -||uim.tifbs.net/js/*.js$script,redirect=noopjs,domain=gmx.*|web.de -web.de##.main [data-ac]:empty -gmx.*##.main [data-ac]:empty -web.de##.iba-acceptable:has-text(/Anzeige|Info/) -*$image,redirect-rule=1x1.gif,domain=web.de -@@*$ghide,domain=web.de|gmx.* -web.de#@#.ad -web.de##.ad:style(position:absolute !important; left:-10000px !important; display:block !important; pointer-events: none !important;) -||web.de/*/nonfriendlyiframe.html$frame,1p -web.de##+js(rmnt, script, '"Anzeige"') -web.de##div[data-service-slot-initialized] -golem.de##+js(acs, showAds) -golem.de##+js(nostif, adBlockerDetected) -golem.de##+js(nostif, show) -||video.golem.de/*/scripts/radiant/homad$xhr,redirect=nooptext,domain=golem.de -golem.de##[href^="https://ads.golem.de/"] -golem.de##.sp-article:has(span:matches-css-before(content:/Anzeige/i)) -golem.de##.list-articles>li:has(.icon-addy:matches-css-before(content: "Anzeige")) -golem.de##[data-article-id]:has([class]:matches-css-before(content:/ANZEIGE/)) -@@||bild.de^$ghide -bild.de#@##fullBanner -bild.de#@##powerplace -bild.de#@##subchannelBanner1_1 -bild.de#@##subchannelBanner2_2 -bild.de#@#.cbErotikContentbar15 -bild.de#@#.contentbar -bild.de#@#.eyecatcher -bild.de#@#.footerbar -bild.de#@#.jetzt_aufnehmen -bild.de#@#.servicelinks -bild.de#@#.tea-rectangle -bild.de#@#.txe -bild.de#@#.yield -bild.de#@#.rectangle -bild.de#@#.fullbanner -bild.de#@#.ads -bild.de##div:matches-css-before(content:/Anzeige/i) -bild.de##.ad-wrapper -bild.de##aside[data-type="ad"] -||tagger.opecloud.com^$xhr,redirect=noop.txt,domain=bild.de -bild.de##+js(aopr, SmartAdServerASMI) -bild.de##+js(rpnt, script, "adBlockWallEnabled":true, "adBlockWallEnabled":false) -sport.bild.de#@#.ad-wrapper -spiele.bild.de##+js(nano-stb, , 10000) -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,xhr,domain=spiele.bild.de -spiele.bild.de##div[id^="ad-landingpage-"] -spiele.bild.de##div[id^="ad-gamepage-"] -spiele.bild.de##.ad-vertical-box -||servedby.adbility-media.com^$3p -||partners2.das-onlinespiel.de^$3p -bild.de##.main-nav .utilities > li:style(margin-left:-0.5px !important) -sueddeutsche.de##+js(aopr, _sp_._networkListenerData) -sueddeutsche.de##+js(aopw, SZAdBlockDetection) -sueddeutsche.de##+js(set, _sp_.config, undefined) -8muses.com##.a-image -8muses.com###content > div > .gallery > a.t-hover.c-tile:has(iframe[src^="/banner/"]) -8muses.com##[href^="https://bit.ly/"] -! Popups triggered by webrtc -123movies.net,2ddl.*,allitebooks.*,bonstreams.net,convertinmp4.com,crictime.com,ddlvalley.me,dramamate.*,eztv.*,fluvore.com,kiss-anime.*,letmewatchthis.*,mac-torrents.com,mkvcage.*,nflstream.io,oceanoffgames.com,pastehere.xyz,sawlive.tv,skidrowcrack.com,toros.co,uptobox.com,yts.*,zooqle.*##+js(nowebrtc) -gamer.com.tw##img[onload="AntiAd.check(this)"] -gamer.com.tw##+js(aopr, AntiAd.check) -skidrowreloaded.com##+js(acs, open) -skidrowreloaded.com##+js(no-fetch-if, /^/) -! skidrowcodexgames.com ads -skidrowcodexgames.com##+js(aopr, _pop) -skidrowcodexgames.com##[class^="aligncenter wp-image-"] -*$script,3p,denyallow=googleapis.com,domain=skidrowcodexgames.com -! Sourcepoint -autobytel.com,cesoirtv.com,gamesradar.com,huffingtonpost.co.uk,huffingtonpost.com,moviefone.com,playboy.de##+js(aopw, _sp_) -faz.net##+js(acs, $, _sp_._networkListenerData) -eltern.de,essen-und-trinken.de,focus.de##+js(aopr, _sp_.mms.startMsg) -20min.ch,al.com,alphr.com,autoexpress.co.uk,bikeradar.com,blick.ch,chefkoch.de,cyclingnews.com,digitalspy.com,democratandchronicle.com,denofgeek.com,esgentside.com,evo.co.uk,exclusivomen.com,ft.com,gala.de,gala.fr,heatworld.com,itpro.co.uk,livingathome.de,masslive.com,maxisciences.com,metabomb.net,mlive.com,motherandbaby.co.uk,motorcyclenews.com,muthead.com,neonmag.fr,newyorkupstate.com,ngin-mobility.com,nj.com,nola.com,ohmirevista.com,ohmymag.*,oregonlive.com,pennlive.com,programme.tv,programme-tv.net,radiotimes.com,silive.com,simplyvoyage.com,stern.de,syracuse.com,theweek.co.uk,ydr.com##+js(aopr, _sp_._networkListenerData) -car.com,codeproject.com,familyhandyman.com,goldderby.com,headlinepolitics.com,html.net,indiewire.com,marmiton.org,mymotherlode.com,nypost.com,realgm.com,tvline.com,wwd.com##+js(aopw, _sp_) -codeproject.com##+js(aopr, retrievalService) -usatoday.com##+js(aopr, _sp_._networkListenerData) -usatoday.com##[aria-label="advertisement"] -usatoday.com##[data-gl-method="initTaboola"] -usatoday.com##.gnt_n:style(top: 0 !important; margin-top: 0 !important;) -familyhandyman.com##.ad -familyhandyman.com##.advertisement -familyhandyman.com##.cm-ad-unit-section -cwseed.com##+js(aopr, admrlWpJsonP) -pocketnow.com##+js(aopr, InstallTrigger) -||adition.com^$important,domain=spiegel.de -@@||ad.yieldlab.net^$script,domain=spiegel.de,badfilter -||cdn.prod.www.spiegel.de/public/spon/generated/web/js/header*.js$script,1p -spiele.spiegel.de###ad-gamepage-top -spiele.spiegel.de##.ad -spiele.spiegel.de##div#ad-gamepage-bottom -spiegel.de##[data-area="affiliatebox"] -spiegel.de##[data-area="vouchers"] -quora.com##.PromptsList -quora.com##.AdBundle -quora.com##.AdStory -!#if env_mobile -quora.com##.top_slot -!#endif -quora.com##div[id$="_content_box"] -quora.com##.lower_slot -quora.com##[disable_auto_login*="True"] -quora.com##:xpath(//div[not(@class="ui_qtext_para") and contains(text(), 'ad by')]/parent::div/parent::div/parent::div[@id]) -quora.com##:xpath(//div[not(@class="ui_qtext_para") and contains(text(), 'promoted') and contains(text(), 'by')]/parent::a/parent::div/parent::div/parent::div[@id]) -quora.com##:xpath(//div[not(@class="ui_qtext_para") and contains(text(), 'Quora') and contains(text(), 'by') and contains(text(), 'Business')]/parent::a/parent::div/parent::div/parent::div[@id]) -quora.com##.FeedStory.feed_item > div > div:has-text(/by Quora for Business/i) -quora.com##.Toggle.SimpleToggle.ToggleAnswerFooterWrapper > div:has-text(/Promoted/i) -quora.com##:xpath(//span[contains(text(), 'by')]/ancestor::*[contains(concat(' ', @class, ' '), ' external_link ')]/../../..) -quora.com##:xpath(//p[(text()='d')]/../../../../..) -! from abp cv list for https://github.com/uBlockOrigin/uAssets/issues/8032 -quora.com##.u-margin-top--lg+div[class="UnifiedAnswerPagedList PagedListFoo unified"][id$="_paged_list"] -quora.com##.pagedlist_item > div[id$="_paged_list"] -quora.com##.answer_auto_expanded_comments + div > div.feed_expand -quora.com##.feedback_wrapper.hidden:not(.negative_action) + .FeedStory.HyperLinkFeedStory.feed_item -quora.com##div[class="question_main_col"] > div:nth-child(3) > div[class="UnifiedAnswerPagedList PagedListFoo unified"] -quora.com##div[class="pagedlist_item"] div[id*="paged_list"] -quora.com##.q-box.qu-borderAll>.q-box>div>div[class^="Box-sc-"]>div:not([class]) -quora.com##.q-box.qu-borderTop>[class^="Box-sc-"]>div:not([class]) -quora.com##div > [class^="Box-"] > div > .q-box.qu-pb--tiny.qu-pt--medium.qu-px--medium -quora.com##.qu-bg--white>[class^="Box-"] .qu-pt--medium -quora.com##.q-box.qu-borderTop>[class^="Box-"] .q-box.qu-pt--medium.qu-pb--tiny -quora.com##.q-box.qu-borderAll>.q-box>div:not([class="q-box"])>[class^="Box-"] -quora.com##.q-box.qu-borderAll.qu-bg--white>.q-box>div>[class="q-box "]>[class="q-box"] -quora.com##[class="q-box qu-borderTop"]>[class="q-box "] -quora.com##[class="q-box qu-bg--white"]>[class="q-box "]>[class="q-box"] -quora.com##.dom_annotate_multifeed_bundle_AdBundle -!www.quora.com##.q-box.qu-bg--white > span[data-nosnippet="true"] > .q-box -!www.quora.com##.qu-mb--small.qu-bg--white > .q-box > div > span[data-nosnippet="true"] > .q-box -!www.quora.com##.q-box.qu-borderTop > span[data-nosnippet="true"] > .q-box -!www.quora.com##span[data-nosnippet="true"] .q-box.qu-pb--tiny.qu-pt--medium -quora.com##div[class^="q-box dom_annotate_question_answer_item_"] .q-box.qu-borderTop:has(.dom_annotate_google_ad) -##[onclick*="window.open('http://deloplen.com/"] -eurogamer.net,rockpapershotgun.com,vg247.com##+js(aopw, yafaIt) -eurogamer.de,eurogamer.es,eurogamer.it,eurogamer.net,eurogamer.pt,rockpapershotgun.com,vg247.com##+js(aopr, _sp_.mms.startMsg) -||bit.ly^$popup,domain=eurogamer.net -eurogamer.net,rockpapershotgun.com##.leaderboards -eurogamer.*##.advert -auto-motor-und-sport.de,caravaning.de,womenshealth.de##+js(aopw, adblockActive) -gamestorrents.*,gogoanimes.*,limetorrents.*,piratebayz.*##+js(aopr, LieDetector) -mediafire.com##+js(aeld, click, ClickHandler) -mediafire.com##+js(aeld, load, IsAdblockRequest) -mediafire.com##+js(nostif, InfMediafireMobileFunc, 1000) -gamestorrents.*,gogoanimes.*,limetorrents.*,piratebayz.*##^script:has-text(AaDetector) -mediafire.com##.errorExtraContent -||rule34.us/ad.html$frame -rule34.xxx##+js(aopr, newcontent) -rule34.xxx##[src^="https://rule34.xxx/aa/"] -rule34.xxx###right-col > div > #lbot1.a_list -rule34.xxx##body > a > div[id]:style(background: var(--c-bg, #aae5a3) !important) -rule34.xxx###halloween -rule34.xxx##.dp -||rule34.xxx/static/fp/$image,1p -||rule34.xxx/images/clicker.png -realbooru.com##+js(aopr, ExoLoader.serve) -realbooru.com##.adzoneTest -realbooru.com##.flex_content_main > div[style$="min-height: 125px;"] -||rule34.xxx/*/nutaku/ -! rule34.top etc. popups -||topxxxlist.net/eroclick.js -/pop.js$domain=booru.*|erotic-beauties.com|hardsex.cc|rule34.top|sex-movies.biz|tube18.sexy|xvideos.name -||rule34.top^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation -||rule34.top/eroclick.js$script,1p -xbooru.com##a[href^="https://xbooru.com/c.html"] -||xbooru.com^$frame,1p -@@||kbb.com^$ghide -kbb.com##[id^="kbbAds"], [id^="kbbAds"] + p -! Fingerprint2 popups -dfiles.eu,downsub.com,j.gs,macserial.com,microify.com,minecraft-forum.net,onmovies.*,pirateproxy.*,psarips.*,solidfiles.com,thepiratebay.org,uptobox.com##+js(aopw, Fingerprint2) -solidfiles.com##.remove -thepiratebay.org##[href^="http://www.coiwqe.site/"] -watchcartoononline.*,wcostream.*##+js(nofab) -watchcartoononline.*,wcostream.*##+js(noeval) -watchcartoononline.*,watchcartoonsonline.*,wcostream.*##+js(acs, document.createElement, jsc.mgid.com) -wcostream.*##+js(nowoif) -watchcartoononline.bz##.BorderColorChangeElement -@@||wcoanimedub.tv^$ghide -@@||wcoanimesub.tv^$ghide -@@||wco.tv^$ghide -wco.tv##iframe.hide-ads:upward(div[style]) -watchanimesub.net,wco.tv,wcoanimesub.tv,wcoforever.net##+js(set, isAdBlockActive, false) -wcoanimedub.tv,wcoforever.net##+js(nostif, google_jobrunner) -m.wcostream.org##center -||bloxplay.com^ -wcoforever.net##.anti-ad -wcoforever.net###sidebar_r1 -@@||embed.watchanimesub.net^$script,1p -handelsblatt.com##+js(no-xhr-if, request=adb) -@@||handelsblatt.com^$ghide -||handelsblatt.com/*/empty.js$script,1p -||wiwo.de/preparesite/empty.js$script,1p -wiwo.de##+js(set, AdController, noopFunc) -@@||wiwo.de^$ghide -transfermarkt.*##+js(acs, document.querySelector, popupBlocked) -transfermarkt.*##+js(acs, Math, /\}\s*\(.*?\b(self|this|window)\b.*?\)/) -transfermarkt.*##body > div[id]:has(a[href^="/intern/adblock"]) -||s0.2mdn.net/instream/video/client.js$script,redirect=noopjs,domain=player.performgroup.com -||sascdn.com^$important,script,domain=transfermarkt.de -transfermarkt.*###werbung_superbanner -transfermarkt.*##.werbung -transfermarkt.*##[id^="home-rectangle-"] -! kissasian .sh, .li, .sk -kissasian.*##+js(aeld, /^(?:click|mousedown)$/, _0x) -keephealth.info,kissasian.*##+js(aopr, mm) -keephealth.info,kissasian.*##+js(nostif, (), 45000) -kissasian.*##+js(set, check_adblock, true) -kissasian.*##+js(nowoif) -@@||kissasian.*^$ghide -kissasian.*##.ksAds -kissasian.*##[id*="ScriptRoot"] -kissasian.*###videoAd -kissasian.*###hideAds -kissasian.*##div[style$="width: 610px;"]:has(.adsbyvli) -kissasian.*##div[style$="height: 90px;"]:has(.adsbyvli) -kissasian.*###overplay -||kissasian.*/Ads/$frame -thewindowsclub.com##+js(aopr, googletag) -@@||google.com/*/search/*$script,domain=thewindowsclub.com -*expires$media,redirect=noopmp3-0.1s,domain=sat1.de|wetter.com -||vidapi.expepp.de/files/*$media,domain=moviepilot.de -moviepilot.de##+js(nano-stb, _0x, *) -moviepilot.de##+js(no-xhr-if, doubleclick) -moviepilot.de##+js(rmnt, script, Promise) -*$image,redirect-rule=32x32.png,domain=afreesms.com -afreesms.com##+js(aeld, error) -afreesms.com##+js(nowoif) -afreesms.com##+js(nostif, 0x) -afreesms.com###smspage:style(display: block !important;) -afreesms.com##[href^="https://freemining.co/"] -mma-core.*##+js(nostif, displayAdBlockedVideo) -mma-core.*##+js(acs, $, undefined) -mma-core.*###tlbrd -mma-core.*##.rsky -mma-core.*##.outVidAd -mma-core.*##.banr -||webpartners.co^$3p -@@||poststar.com^$ghide -poststar.com##.dfp-ad -grubstreet.com,twitchy.com##+js(aopr, stop) -||em0n.com^$domain=grubstreet.com|twitchy.com -popculture.com##div.modernInContent -||static.tvtropes.org/design/js/google-adblock.js$script -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=popculture.com,important -popculture.com##body:not(.skybox-loaded) > header:style(top: 0 !important;) -popculture.com##body.pcm-public:not(.skybox-loaded):style(margin-top: 90px !important;) -! Prevent popunders + redirections on multiple websites -||go.oclasrv.com/apu.php$script,redirect=noopjs -||go.onclasrv.com/apu.php$script,redirect=noopjs -||onclkds.com/apu.php$script,redirect=noopjs -||xxlargepop.com/apu.php$script,redirect=noopjs -rule34hentai.net##+js(aopr, open) -||rule34hentai.net/*.php$script,1p -@@||fluidplayer.com^$script,domain=rule34hentai.net -rule34hentai.net##[href^="https://syndication.dynsrvtbg.com/splash.php"] -rule34hentai.net###commentlistimage ~ section[id$="main"] -rule34hentai.net###imagelist ~ section[id$="main"] -rule34hentai.net##section[id$="left"]:has(> .blockbody > script[type]) -rule34hentai.net##section[id$="main"]:has(> .blockbody > .adsbyexoclick) -kingofdown.com##+js(aeld, load, onload) -mind42.com###sidebar -mind42.com###content.sidebar2:style(margin-right: 0 !important;) -elmundo.es##.Bloque-anuncios-shadow -elmundo.es##.Bloque-anuncios -elmundo.es##.disabled-vscroll:style(overflow: auto !important; position: initial !important;) -||andreas-unterberger.at/includes/js/helperFunctions.js$script,1p -receive-sms-online.info##+js(aopr, ga.length) -||gainskins.com^$frame,domain=hltv.org -||hltv.org/img/newwidgets/$image -||hltv.org/img/static/featured_bet_bg.png$image -||hltv.org/*.gif?ixlib=$image -hltv.org##+js(nowoif) -hltv.org##.leftCol > aside:first-child:has(> .ggbe-firstcol-box > a[href] > img[src*="/ggbet/"]) -hltv.org##body, body::before:style(background-image: unset !important;) -hltv.org##:is(div, aside):has(> a[href^="/"][data-link-tracking-page="Widget"]) -hltv.org##.leftCol > div [data-link-tracking-page="Widget"]:upward(.leftCol > div) -hltv.org##.presented-by -hltv.org##.thunderpick-firstcol-box -hltv.org##a:matches-attr(href=/[a-zA-Z0-9]{100,}/) -thepiratebay.*,theproxyproxy.com,tpbay.*##+js(aopr, _wm) -wallpapershome.com##+js(nostif, .adsbygoogle) -! primewire.mn ads -primewire.*##+js(set, console.clear, noopFunc) -primewire.*##:xpath('//*[contains(text(),"Sponsored")]'):upward(2) -||primewire.*/sw$script,1p -||primewire.*/addons/*.gif$image -primewire.*##.ico.close -!broken video ign.com##+js(aopr, __eiPb) -ign.com##^script:has-text(iframeTestTimeMS) -ign.com##.preShell:style(height: 0 !important;) -ign.com###king -ignboards.com,ign.com##^script:has-text(g02.) -!#if env_chromium -||au.ign.com^$inline-script -ignboards.com##+js(acs, JSON.stringify) -!#endif -*$xhr,redirect-rule=1x1.gif,domain=ign.com -*$script,redirect-rule=noopjs,domain=ignboards.com -||fux.com/*banner$image -fux.com##.autonextAd -.com/external/*?width=300&height=250$frame,1p -.com/nativeexternal/$frame,1p -steamplay.*##+js(aopr, btoa) -steamplay.*,streamp1ay.*##+js(aopw, Fingerprint2) -streamp1ay.*##+js(aopw, Fingerprent2) -steamplay.*,streamp1ay.*##+js(aopr, console.clear) -steamplay.*,streamp1ay.*##+js(aopw, adcashMacros) -slreamplay.*##+js(nano-stb, grecaptcha.ready, *) -@@player*.html$frame,1p,domain=slreamplay.* -*$frame,denyallow=google.com,domain=slreamplay.*|streampiay.* -ext=$script,1p,domain=slreamplay.* -||*ontent.steamplay.*^$all -||steamplay.*^$csp=worker-src 'none'; -@@||streamp1ay.*^$ghide -*$xhr,frame,3p,domain=streamp1ay.cc,denyallow=spcdn.cc -slreamplay.*,steamplay.*,steanplay.*,stemplay.*,streamp1ay.*,streanplay.*,streampiay.*##+js(nowoif) -streanplay.*##+js(set, console.log, noopFunc) -streanplay.*##+js(set, console.clear, noopFunc) -streanplay.*,steanplay.*##+js(aeld, , BACK) -streanplay.*##+js(nowebrtc) -steamplay.*,steanplay.*,stemplay.*,streamp1ay.*,streanplay.*##+js(aopr, jwplayer.utils.Timer) -steamplay.*,steanplay.*,streamp1ay.*,streanplay.*##.ad -slreamplay.*,steamplay.*,steanplay.*,stemplay.*,streamp1ay.*,streampiay.*,streanplay.*###uverlay -steanplay.*,streanplay.*##div[style*="z-index: 2147483647;"][style*="position: fixed;"] -*$xhr,frame,3p,domain=steanplay.*|streanplay.cc,denyallow=spcdn.cc -stre4mplay.*##.ad -stre4mplay.*##+js(nowoif) -torrentfunk.com##+js(nowebrtc) -||torrentfunk.com/s1w.js$script,1p -torrentfunk.com##[href*=".premium"] -torrentfunk.com##:xpath(//strong[contains(text(),"VPN")]/../../..) -torrentfunk.com##.extneed -torrentz2.*##[class]:not(body):not(html):has-text(/Protect your privacy/i) -torrentz2.*##[class]:not(body):not(html):has-text(Sponsored) -torrentz2.*##.xpressa -informer.com##+js(aopr, adblock_added) -informer.com##.screen_ad -torlock.*,torlock2.*##+js(acs, setTimeout, admc) -||torlock.*/sww.js$script,1p -torlock.*##:xpath(//strong[contains(text(),"VPN")]/../../..) -torlock.*,torlock2.*##+js(nowebrtc) -torlock2.*##:xpath(//strong[contains(text(),"VPN")]/../../..) -torlock.*,torlock2.*##.extneed -/script/bootstrap.js$script,3p,domain=torlock.*|torlock2.* -bordertelegraph.com,bournemouthecho.co.uk,dailyecho.co.uk,dorsetecho.co.uk,eveningtimes.co.uk,guardian-series.co.uk,heraldscotland.com,iwcp.co.uk,lancashiretelegraph.co.uk,oxfordmail.co.uk,salisburyjournal.co.uk,theargus.co.uk,thetelegraphandargus.co.uk,yorkpress.co.uk##+js(aopw, _sp_) -##[href^="https://www.onclickmega.com/"] -dronedj.com##+js(set, String.prototype.charCodeAt, trueFunc) -9to5google.com,9to5mac.com,9to5toys.com,dronedj.com,electrek.co,marketrealist.com##.ad-disclaimer-container, .inlinead, .ad-container -||googlesyndication.com^$xhr,redirect=noopjs,domain=9to5google.com|9to5mac.com|9to5toys.com|dronedj.com|electrek.co|marketrealist.com -*$script,redirect-rule=noopjs,domain=9to5google.com|9to5mac.com|9to5toys.com|dronedj.com|electrek.co|marketrealist.com -dronedj.com##.adsense, a[target="_blank"][rel="noopener noreferrer"] -9to5toys.com,dronedj.com##.slot-leaderboard -marketrealist.com###Track\.End + div[class] -marketrealist.com##.gXgoom > div -igfap.com##+js(aopr, decodeURI) -||dslr-forum.de/ads/$image -*/plugin/advertisement/$image -@@||myreadingmanga.disqus.com^$script -myreadingmanga.info##.imgtop -myreadingmanga.info##center -##[href*="www.gaming-adult.com/"] -alibaba.com##.m-product-item:has-text(Sponsored Listing) -||msn.com/advertisement.ad.js$script,1p,important -||aolcdn.com/ads/adswrappermsni.js$script,domain=msn.com,important -msn.com##.extnativeaditem, .serversidenativead > h3 -msn.com##.colombiaintraarticleads -msn.com##[data-aop="stripe.sponsored.navigation_stripenavigation"]:upward(2) -!#if !env_mobile -msn.com##[data-aop="stripe.store.navigation_stripenavigation"]:upward(2) -!#endif -!#if env_mobile -msn.com##.stripenav:has(.adslabel):upward(2) -!#endif -msn.com##.todayshowcasead -msn.com##.stripecontainer:has(.adslabel) -msn.com##msft-article-card:not([class]) -!#if env_mobile -msn.com##cs-native-ad-card-no-hover -msn.com##msft-article-card:not(.contentCard) -!#endif -www.msn.com##+js(json-prune-fetch-response, properties.componentConfigs.slideshowConfigs.slideshowSettings.interstitialNativeAds, , propsToMatch, url:consumptionpage/gallery_windows/config.json) -www.msn.com##+js(json-prune-fetch-response, *, list.*.link.ad list.*.link.kicker, propsToMatch, url:content/v1/cms/api/amp) -msn.com##.vd-ad -mcloud.bz##+js(acs, Math, XMLHttpRequest) -mcloud.bz##+js(nosiif, break) -mcloud.bz##+js(aopr, open) -@@||mcloud.bz^$ghide -mcloud.bz,vidstream.pro,vid2faf.*##+js(nowoif) -vidstream.pro##+js(aopr, mm) -mcloud.bz##+js(aopr, __Y) -vidstream.pro##+js(nosiif, break) -vidstream.pro##div[id][style^="position: fixed; inset: 0px; z-index: 2147483647;"] -bflix.*,mcloud.*,vizcloud.*,vizcloud2.*##+js(aopr, AaDetector) -bflix.*##+js(aopr, mm) -vizcloud.*,vizcloud2.*##.xad-wrapper -mcloud.bz,vidplay.*,vidstream.pro,vizcloud.*##+js(ra, data-id|data-p, '[data-id],[data-p]', stay) -mcloud.bz,vid2faf.*,vidplay.*##[src^="assets/bn"]:upward([style]) -||i.imgur.com^$image,domain=vizcloud.*|vizcloud2.* -/mellowpresence.com^$script -/\/[A-Z]{1,2}\/[-0-9a-z]{5,}\.com\/(?:[0-9a-f]{2}\/){3}[0-9a-f]{32}\.js$/$script,1p,match-case -vidstream.pro##.aslot -/lazymolecule/*.js$script -youtubedownloader.*##+js(nowoif) -liferayiseasy.*##+js(aeld, load, getComputedStyle) -liferayiseasy.*##+js(aeld, load, adsense) -iptvbin.com##+js(aost, String.prototype.charCodeAt, ai_) -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=iptvbin.com -@@||playok.com^$ghide -playok.com##.adsbygoogle:style(height: 1px !important; width: 1px !important;) -blackspigot.com##+js(aopw, AdBlockDetectorWorkaround) -spaste.com##+js(nofab) -spaste.com##[href^="http://bit.ly/"] -spaste.com##[href="javascript:showhide('deals')"] -spaste.com##b -spaste.com##h5:has(> a[href^="javascript:"]) -spaste.com##h5 > a[href^="http://amzn.to/"] -dailyuploads.net##+js(acs, $, window.open) -dailyuploads.net##+js(nowoif) -*$script,3p,denyallow=google.com|gstatic.com,domain=dailyuploads.net -||coertiest.click^ -! sports streams vipleague -@@*$ghide,domain=f1stream.*|fbstream.*|mlbstream.*|motogpstream.*|nbastream.*|nflstream.*|nhlstream.*|plylive.*|plyvdo.*|rugbystreams.*|socceronline.*|tennisstreams.*|tvply.*|ufcstream.*|vipleague.* -plylive.*,plyvdo.*##+js(nowoif) -tennisstreams.*,vipleague.*##+js(acs, setTimeout, admc) -||mw19c3mi5a.com^$3p -||ryllae.com^$3p,important -##[data-uri^="https://s3.amazonaws.com"] -##[data-lnguri^="https://s3.amazonaws.com"] -fbstream.*##.position-absolute -vipleague.*##.bg-dark.ratio > .position-absolute -*/script/formula.js|$script -nolive.me##+js(set, attachEvent, trueFunc) -nolive.me##+js(nosiif, debug) -vipleague.*##.m-1.btn-danger.btn -cs-fundamentals.com##+js(aopr, google_jobrunner) -xmoviesforyou.*##+js(aopr, popjs.init) -xmoviesforyou.*##+js(aopr, decodeURI) -kisshentai.net##+js(aopr, adblock) -||zergnet.com/zerg-inf-multi$3p,script -wunderground.com##+js(aopw, _sp_) -wunderground.com##[class*="-ad-box-"] -wunderground.com##.content-wrap #inner-wrap:style(height: 100vh !important;) -wunderground.com##body wu-header:style(margin-top: 0px !important;) -putlockerc.*##+js(nowoif) -putlocker.*##[id*="ScriptRoot"] -putlocker.*##.ep_buttons -||putlocker.*^*banner -||put-locker.com/sw$script,1p -||putlocker.*/sab_*.html$frame -||earn-bitcoins.net^$frame,3p -fstream365.com###overlay-ads -putlocker-website.com,putlockertv.*##+js(nowoif) -||greedseed.world/vpaid/YtVpaid.php -putlocker.*##+js(aopw, open) -putlocker.*##+js(aopw, adcashMacros) -||putlocker.*/*.gif$image -10fastfingers.com##+js(acs, document.createElement, decodeURIComponent) -@@||ultrahorny.com^$ghide -@@||ajax.googleapis.com^$script,domain=ultrahorny.com -ultrahorny.com##.afs_ads -ultrahorny.com###hideads -bibme.org,citationmachine.net##+js(aopr, SBMGlobal.run.pcCallback) -citationmachine.net,citethisforme.com,easybib.com##+js(aopr, SBMGlobal.run.gramCallback) -citethisforme.com##.sbm-ad -bibme.org,citationmachine.net##+js(aeld, load, (!o)) -easybib.com##+js(aeld, load, (!i)) -citethisforme.com##.ads_top_middle -||contributor.google.com/scripts/*/loader.js$script,domain=citationmachine.net -radio.*##.topAdSpacer -mmorpg.com##[onclick^="trackClick"] -mmorpg.com##a[href^="http://v2.g.99.com/"] -mmorpg.com##.vhadb -mylink.*,my1ink.*,myl1nk.*,myli3k.*##+js(acs, decodeURIComponent, 'shift') -mylink.*,my1ink.*,myl1nk.*,myli3k.*##+js(nosiif, /0x|google|ecoded|==/) -mylink.*,my1ink.*,myl1nk.*,myli3k.*##+js(nowoif) -mylink.*,my1ink.*,myl1nk.*,myli3k.*##a[href^="https://go.nordvpn.net/"], [src^="/nordcode.php"] -mylink.*,my1ink.*,myl1nk.*,myli3k.*##div[id][style^="width: 970px; height: 250px;"] -mylink.*,my1ink.*,myl1nk.*,myli3k.*##div[id][style="width: 300px; height: 250px;"] -mylink.*,my1ink.*,myl1nk.*,myli3k.*##div[id][style="width: 728px; height: 90px;"]:upward(#pub1) -mylink.*,my1ink.*,myl1nk.*,myli3k.*##html > iframe -@@*$script,1p,domain=mylink.*|my1ink.*|myl1nk.*|myli3k.* -@@||in-page-push.com^$script,domain=mylink.*|my1ink.*|myl1nk.*|myli3k.* -@@||googleads.g.doubleclick.net/pagead/test_domain.js$script,domain=mylink.*|my1ink.*|myl1nk.*|myli3k.* -*$script,redirect-rule=noopjs,domain=mylink.*|my1ink.*|myl1nk.*|myli3k.* -*$script,3p,denyallow=cloudflare.com|cloudflare.net|consensu.org|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|recaptcha.net|twitter.com|x.com,domain=mylink.*|my1ink.*|myl1nk.*|myli3k.* -freebeacon.com##.uppercase:has-text(/advertisement/i) -sankakucomplex.com##.vce-ad-container -sankakucomplex.com#@#.scad -sankaku.app##+js(no-xhr-if, googlesyndication) -chan.sankakucomplex.com##body.no-scroll:style(overflow: auto !important; position: static !important; width: unset !important;) -@@||anghami.com^$ghide -@@||anghamiwebcdn.akamaized.net/ads.$script,domain=play.anghami.com -@@||d24n15hnbwhuhn.cloudfront.net/libs/amplitude-$script,domain=play.anghami.com -play.anghami.com##.sideBox:has(.adsbox) -anghami.com##anghami-ads -anghami.com##+js(nostif, isDesktopApp, 1000) -player.glomex.com,merkur.de,tz.de##+js(set, Object.prototype._getSalesHouseConfigurations, noopFunc) -player.glomex.com##+js(no-fetch-if, player-feedback) -||player-feedback*.glomex.*^ -theoutline.com##.stack-embed -wired.com##[class^="OutbrainGridColumn-"] -wired.com##[class^="StickyHeroAdWrapper-"] -wired.com###around-the-web -||googlesyndication.com/pagead/*$script,important,domain=wired.com -||wired.com/ams/page-ads.js$important,script -wired.com##+js(nostif, Bait) -! "Sponsored stories" section spotted 1st-hand at: -wired.com##.sponsored-stories-component -! wired.com: more EasyList's exception filters to counter -||doubleclick.net^$important,script,domain=wired.com -wired.com##[id^="cns_ads_"] -wired.com##[class^="adv"] -wired.com##.failsafe-desktop -wired.com##.consumer-marketing-unit -androidrepublic.org##+js(acs, $, samInitDetection) -biqle.*##+js(acs, decodeURI, decodeURIComponent) -biqle.*##+js(aopr, Date.prototype.toUTCString) -||biqle.ru/swp.js$script,1p -dxb.to##+js(nowebrtc) -nytimes.com,nytimes3xbfgragh.onion###site-content > div[class^="css"]:has(> [data-testid="StandardAd"]) -nytimes.com,nytimes3xbfgragh.onion##article.story:style(opacity: 1.0 !important;) -nytimes.com,nytimes3xbfgragh.onion##:xpath(//div[starts-with(@id, "dfp-ad")]/../..) -nytimes.com,nytimes3xbfgragh.onion##section[aria-labelledby="new-york-section"] > div > div[class^="css"]:has(> #pp_morein-wrapper) -cooking.nytimes.com#?#.nytc---modal-window---isShown:not(:has(.nytc---largepicturemodal---contentBody > .nytc---x---x.nytc---largepicturemodal---xBtn[role="button"], .nytc---grocerylistmodal---groceryListContentContainer)) -cooking.nytimes.com##body:style(height: auto !important; overflow: auto !important) -cooking.nytimes.com##html:style(height: auto !important; overflow: auto !important) -@@||nytimes.com^*/adslot-$script,xhr,badfilter -nytimes.com##[id^="story-ad"][id$="wrapper"] -mp4upload.com##+js(aopw, adcashMacros) -mp4upload.com##+js(aopr, Adcash) -mp4upload.com###lay.lay -*$script,redirect-rule=noopjs,domain=mp4upload.com -*$script,3p,denyallow=cloudflare.com|cloudflare.net|fontawesome.com|gstatic.com|hwcdn.net|jquery.com|jsdelivr.net,domain=mp4upload.com -@@||userupload.*^$ghide -userupload.*##.btn-danger:has-text(/download/i) -userupload.*##a[href*="hotstar"] -userupload.*##ins.adsbygoogle -userupload.*##.ads -||tgwidget.com^$3p -get.getpczone.com,rahim-soft.com,uploadrar.*###commonId > a[target="_blank"] -||canoestallowrootsabre.com^ -||pixeltrey.com^ -wetter.com##+js(acs, $, lobster) -at.wetter.com##+js(aopw, openLity) -motorradonline.de,zentralplus.ch##+js(nofab) -business-standard.com##+js(acs, $, blockThisUrl) -powerthesaurus.org##+js(aopw, ad_abblock_ad) -! Popups triggered by popads -animepahe.*,kwik.*##^script:has-text('shift') -animepahe.*,kwik.*##^script:has-text(\'shift\') -animepahe.*,kwik.*##+js(acs, String.fromCharCode, 'shift') -animepahe.*,kwik.*##+js(aopr, open) -animepahe.*,kwik.*##+js(aopr, PopAds) -pahe.*##+js(rmnt, script, Reflect) -pahe.*##+js(nowoif) -@@||kwik.*^$script,1p -pahe.*##+js(aeld, , _0x) -@@||pahe.*^$ghide -zonebourse.com##+js(acs, $, AdBlocker) -! bad*.it network sites -badtaste.it##+js(aeld, , Adblock) -aofsoru.com##+js(acs, addEventListener, displayMessage) -yts.*##+js(aeld, , _0x) -yts.*##+js(aopr, runAdblock) -yts.*##+js(nowoif) -yts.*##+js(nostif, "admc") -yts.*##+js(acs, document.createElement, admc) -yts.*##+js(aopw, Adcash) -yts.*##^script:has-text(admc) -*/script/clock.js$script,domain=yts.* -yts.*##[id*="container"][id^="id"] -yts.*##html:style(overflow: auto !important;) -yts.*##.cborz-bordered -yts.*##.madikf -yts.mx##.title ~ a[href] .button:upward(.container > div) -yts.mx##^script:has-text(document.write) -!#if !cap_html_filtering -yts.mx##+js(rmnt, script, document.write) -!#endif -yts.mx##.container > [class]:has-text(VPN) -sarugbymag.co.za##+js(aopr, showAds) -imgdrive.net,imgwallet.com##+js(acs, jQuery, TestAdBlock) -imgadult.com,imgdrive.net,imgtaxi.com,imgwallet.com##+js(aopr, ExoLoader) -imgadult.com,imgdrive.net,imgtaxi.com,imgwallet.com##+js(aopr, loadTool) -imgadult.com,imgdrive.net,imgtaxi.com,imgwallet.com##+js(aopw, cticodes) -imgadult.com,imgdrive.net,imgtaxi.com,imgwallet.com##+js(aopw, imgadbpops) -imgadult.com,imgdrive.net,imgtaxi.com,imgwallet.com##+js(acs, document.getElementById, document.write) -imgadult.com,imgdrive.net,imgtaxi.com,imgwallet.com##+js(nano-stb, redirect, 4000) -/(?:com|net)\/[a-z-]{3,10}\.html$/$frame,1p,domain=imgadult.com|imgdrive.net|imgtaxi.com|imgwallet.com -/(?:com|net)\/[0-9a-f]{12}\.js$/$script,1p,domain=imgadult.com|imgdrive.net|imgtaxi.com|imgwallet.com -/ea/fl.js -/ea2/fl.js -/altiframe.php$domain=imgadult.com|imgdrive.net|imgtaxi.com|imgwallet.com -/altiframe2.php$domain=imgadult.com|imgdrive.net|imgtaxi.com|imgwallet.com -/frame.php$domain=imgadult.com|imgdrive.net|imgtaxi.com|imgwallet.com -imgadult.com,imgdrive.net,imgtaxi.com,imgwallet.com##.blink -imgadult.com,imgdrive.net,imgtaxi.com,imgwallet.com##.sidebar > div:first-of-type -imgadult.com,imgdrive.net,imgtaxi.com,imgwallet.com##.sidebar > h3:first-child -imgadult.com,imgdrive.net,imgwallet.com##.bottom_abs -imgadult.com,imgdrive.net,imgwallet.com##.centered -imgtaxi.com###image_details:style(margin-top: 30px !important) -sxyprn.*##+js(acs, decodeURI, decodeURIComponent) -sxyprn.*##+js(set, vast_urls, {}) -sxyprn.*##+js(aopr, popns) -sxyprn.*##+js(acs, document.createElement, /l\.parentNode\.insertBefore\(s/) -sxyprn.*##+js(aopw, __aaZoneid) -sxyprn.*##.tbd -sxyprn.*##.cbd -*$frame,script,3p,denyallow=google.com|googleapis.com|gstatic.com|hcaptcha.com|recaptcha.net,domain=sxyprn.* -lacuevadeguns.com##+js(aost, onload, inlineScript) -*$image,redirect-rule=1x1.gif,domain=magesy.*|majesy.*|mage.si|magesypro.* -@@*$ghide,domain=mage.si|magesypro.*|magesy.blog -magesy.*##ins.adsbygoogle -mage.si##+js(aeld, load, nextFunction) -mage.si##+js(nano-sib) -magesypro.*##ins.adsbygoogle -magesypro.pro,magesy.*##+js(nostif, AdBlocker) -magesy.*##+js(no-fetch-if, adsbygoogle) -audiotools.pro,magesy.blog,magesypro.pro##+js(noeval-if, blocker) -audiotools.pro,magesy.blog,magesypro.pro##+js(nostif, Blocked) -magesy.download##+js(acs, addEventListener, google_ad_client) -magesy.*,magesypro.pro##+js(aost, document.getElementById, adsBlocked) -@@*$script,1p,domain=audiotools.pro|magesy.blog|magesypro.pro|audioztools.com -/magesy\.blog\/biocontent\/themes\/[a-z0-9]{4,15}\.js/$script,1p,important,domain=magesy.blog -||cdn.jsdelivr.net/npm/@rimiti/abm@latest/dist/$script,css,3p -magesy.blog###abm -magesy.blog##+js(nostif, ai_adb) -magesy.blog##+js(nostif, match, 100) -hqq.*##+js(aopr, adBlockDetected) -hqq.*##+js(set, sadbl, false) -hqq.*##+js(nowoif) -||hqq.*/cdn-cgi/trace$xhr,1p,important -||googletagmanager.com/ns.html$redirect-rule=noop.js -@@||hqq.*^$ghide -@@||hqq.*^$script,xhr,1p -@@||cdn.jsdelivr.net/npm/videojs-contrib-ads/$domain=hqq.* -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=hqq.* -!#if env_firefox -@@||hqq.*/sec/player/*$csp -!#endif -hqq.*##[href="https://t.me/Russia_Vs_Ukraine_War3"] -hqq.*##a[onclick="openAuc();"] -||vkcdnservice.com^$script,redirect-rule=noopjs,3p -||ebd.cda-hd.cc^ -hqq.*,waaw.*##+js(set, adblockcheck, false) -! Redirecting -hqq.*,waaw.*##^script:has-text(self == top) -!#if !cap_html_filtering -hqq.*,waaw.*##+js(rmnt, script, self == top) -!#endif -*$script,3p,denyallow=google.com|gstatic.com|polyfill.io,domain=playdede.us -waaw.*##+js(aopr, doSecondPop) -waaw.*##+js(nowoif) -waaw.*##+js(set, arrvast, []) -filescdn.com##+js(nowoif) -! palimas tv => palimas org -@@||palimas.*^$ghide -*$script,3p,denyallow=cloudflare.com|cloudflare.net|fluidplayer.com|fontawesome.com|google.com|gstatic.com|hwcdn.net|jquery.com,domain=palimas.* -! URL Shortener -adbull.org##+js(set, blurred, false) -*$script,3p,domain=adbull.org -@@||static.adbull.me^$script,domain=adbull.org -*$script,redirect-rule=noopjs,domain=adbull.org -adbull.*##+js(ra, onclick) -adbull.*##[src^="https://i.imgur.com/"] -deportealdia.live##+js(nano-sib, , 1200, 0) -deportealdia.live##+js(nowoif) -deportealdia.live###overlay -adyou.me,srt.am##+js(nowebrtc) -srt.am##+js(aopr, RunAds) -||srt.am/sw.js$script,1p -adyou.*##+js(aeld, /^(?:click|mousedown)$/, bypassEventsInProxies) -adyou.me#@#.adscontainer -||fbs.com^$3p -123link.*##+js(aopr, jQuery.adblock) -123link.*##+js(acs, $, test-block) -123link.*##+js(acs, $, adi) -123link.*##+js(acs, $, undefined) -||123link.*/push/ -123link.*##.ads-block-warning -123link.*##+js(aopr, ads_block) -123link.*##+js(aopr, blockAdBlock) -123link.*##+js(nano-sib) -123link.*##+js(set, blurred, false) -||yoads.network^$3p -||player.ooyala.com/static/*ad$script,redirect=noopjs,domain=dugout.com -sheshaft.com##+js(aopr, decodeURI) -sheshaft.com##[class*="banner"] -sheshaft.com##.adv-aside -alrincon.com##+js(aopr, loadTool) -alrincon.com##+js(aopr, ExoLoader.serve) -alrincon.com##+js(aopr, open) -alrincon.com##+js(acs, onload, open) -||trcklks.com^$3p -! ##[href^="https://sex.cam/"] -alrincon.com##center:has-text(deal) -||alrincon.com/2022/varios/crazyshit.jpg -||alrincon.com/imagenes/stasyq/ -/nbk/frnd_ld.js -@@||playview.io/*/showads.js$xhr,1p -playview.io##.ads_player -hdporn.net##+js(aopr, exoOpts) -hdporn.net##+js(aopr, doOpen) -hdporn.net##[href^="http://www.hdporn.net/site.php"] -||grandfuckauto.xxx^$3p -||long.xxx^$3p -||amateurporn.net/*.gif$image -watch-my-gf.com,watchmyexgf.net##+js(aopr, prPuShown) -watchmyexgf.net##+js(nowoif) -watchmygf.me##+js(set, flashvars.adv_pre_src, '') -watchmyexgf.net##.adv -watchmyexgf.net##[href^="http://wct.link/click"] -watch-my-gf.com##.table -||watch-my-gf.com/images/bear.png -||watchmyexgf.net/z/gf.jpg -*$frame,domain=clik.pw -*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=clik.pw -@@||api-secure.solvemedia.com^$frame -clik.pw##a[href^="https://href.li/"] -clik.pw##body > div[style]:has(input[type="button"]) -clik.pw##div[style*="z-index:99999"] > div[style*="width:300px"] -##a[href^="https://syndication.exdynsrv.com/splash.php"] -*$popup,domain=clik.pw,3p -clik.pw##+js(aopr, open) -@@||api.solvemedia.com^$script,frame -adshort.*##+js(aopw, Fingerprint2) -adshort.*,adsrt.*##+js(nowoif) -adshort.*##+js(set, blurred, false) -adshort.*##A[href$=".html"][rel="nofollow norefferer noopener"] -adshort.*,adsrt.*##[id*="frme"] -adsrt.*#@#div[id*="ScriptRoot"] -||adsrt.*/sw.js$script,1p -adsrt.*##div[id^="SC_TBlock"] -@@||adshort.*^$ghide -upload-4ever.com##+js(nowoif) -*$script,domain=upload-4ever.com,3p,denyallow=gstatic.com -##[onclick*="postlnk.com"] -##[href*="postlnk.com"] -tube8.*##+js(set, showPopunder, false) -tube8.*##+js(aeld, , _0x) -tube8.*##+js(aopw, IS_ADBLOCK) -tube8.*##+js(nowoif) -tube8.*##+js(set, page_params.holiday_promo, true) -tube8.*##.adsbytrafficjunky -tube8.*##.js-remove-ads-premium-link -tube8.*##main.row > aside.col-4 > div[class] -tube8.*##input + div:has(.adsbytrafficjunky) -tube8.*##.gridList > [class]:has(.adsbytrafficjunky) -tube8.*##[href^="https://ads.trafficjunky.net/ads"] -tube8.*##[style="background-color: rgb(255, 255, 255); display: block;"] -tube8.*###flvplayer > [style]:has(.js-remove-ads-premium-link) -tube8.*###result_container_wrapper > [style]:has(.js-remove-ads-premium-link) -tube8.*###result_container > [class]:not(.video_box) -hdpornt.com##+js(aopr, ExoLoader) -hdpornt.com##+js(aopw, __NA) -@@||simply-hentai.com^$ghide -*$script,redirect-rule=noopjs,domain=simply-hentai.com -simply-hentai.com##.page-leave -simply-hentai.com##.native + div -||daporn.com/*banner$image -||daporn.com/frames/$frame -daporn.com##.ntv-media -daporn.com##.bottom-promo -daporn.com###mediaOverlay -daporn.com###close-aff -*.gif$domain=daporn.com,image -daporn.com##[href*="offer"] -daporn.com##[href*="&aff"] -daporn.com##.sponsor -4tube.com##+js(aopr, ExoLoader) -4tube.com##+js(aopw, ads_priv) -||4tube.com/*banner$image -mp3cut.net##+js(aopw, ab_detected) -pornerbros.com##+js(aopr, ExoLoader) -pornerbros.com##+js(aopw, ads_priv) -pornerbros.com##+js(set, adsEnabled, true) -pornerbros.com##+js(aopr, document.dispatchEvent) -||pornerbros.com/*banner$image -||pornerbros.com/sw.js$script,1p -@@||media.oadts.com/www/delivery/afv.php$domain=serienjunkies.de -@@||media.oadts.com/www/delivery/video.php$domain=serienjunkies.de -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=media.oadts.com -serienjunkies.de###sj-ad-wrapper -pichaloca.com##+js(aopr, ExoLoader) -pichaloca.com##.publis-bottom -pornodoido.com##+js(aopr, ExoLoader) -kinos.*,kinox.*##+js(acs, adcashMacros) -kinos.*,kinox.*##+js(aopr, AaDetector) -kinos.*,kinox.*##+js(aopr, eddOptions) -||35.226.75.50^ -@@||ucoz.com^$ghide -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=shidurlive.com -vortez.net##+js(nowoif) -vortez.net##+js(acs, $, Adblock) -platinmods.com##+js(aopr, adBlockDetected) -platinmods.*##+js(nano-sib) -||whentai.com/*.gif$image -! Common rules for TXXX network -/\/[a-z]{4,}\/(?!holly7|siksik7)[0-9a-z]{3,}\d\.\d{1,2}\.\d{1,2}\.[0-9a-f]{32}\.js$/$script,domain=555.porn|abxxx.com|aniporn.com|bigdick.tube|gaytxxx.com|hclips.com|hdzog.*|hotmovs.*|imzog.com|in-porn.com|inporn.com|javdaddy.com|manysex.*|porn555.com|pornclassic.tube|pornforrelax.com|porngo.tube|pornj.com|pornl.com|pornq.com|porntop.com|privatehomeclips.com|puporn.com|see.xxx|shemalez.com|sss.xxx|thegay.*|tubepornclassic.com|tuberel.com|txxx.*|txxxporn.tube|upornia.*|vjav.*|voyeurhit.*|vxxx.com|xjav.tube -/\.[a-z]{3,5}\/[0-9a-z]{8,12}\/[0-9a-z]{8,12}\.js$/$script,domain=555.porn|abxxx.com|aniporn.com|asiantv.fun|blackporn.tube|bdsmx.tube|bigdick.tube|gaytxxx.com|hclips.com|hdzog.*|hotmovs.*|imzog.com|in-porn.com|inporn.com|javdaddy.com|manysex.*|mrgay.tube|onlyporn.tube|porn555.com|pornclassic.tube|pornforrelax.com|porngo.tube|pornhits.com|pornj.com|pornl.com|pornq.com|porntop.com|pornzog.com|privatehomeclips.com|puporn.com|see.xxx|senzuri.tube|sextu.com|shemalez.com|sss.xxx|teenorgy.video|thegay.*|tubepornclassic.com|tuberel.com|txxx.*|txxxporn.tube|upornia.*|vjav.*|voyeurhit.*|vxxx.com|xjav.tube|xmilf.com -/afon7.$script,1p -/barbar7.$script,1p -/huyass7.$script,1p -/lemon7.$script,1p -/rass7.$script,1p -/teo7.$script,1p -/nofa7.$script,1p -/ytrek7.$script,1p -/kzdh7.$script,1p -/klesd7.$script,1p -/leo7.$script,1p -/howone7.$script,1p -/duayn7.$script,1p -/assets/jwplayer-*/vast.js$script,1p -txxx.*##+js(acs, setTimeout, hommy.mutation.mutation) -txxx.*##+js(aopr, jwplayer.utils.Timer) -txxx.*##.content.page.page-video .video-content > div[class] > div > div[class] > div[class][style^="background-image:"]:style(background-image: none !important;) -txxx.*##div[style="display:flex !important"] > div -txxx.*##.page-video > div.video-videos-slider ~ div[class]:matches-css(justify-content: center) -txxx.*##.video-videos-slider -txxx.*##.video-content > div + div:last-child -txxx.*##.video-content > div:first-child > div[class]:has(> div > a[href="#"]) -txxx.*##.videos-tube-friends -txxx.*##span:only-child:has-text(/^AD$/):upward(2) -txxx.*##.suggestion -txxx.*##.index-page > .wrapper > .row + div[class] -txxx.*##.pwa-ad -txxx.*##.jw-atitle.nopop:has(> [href*="g2fame.com"][href*="&campaign"]) -*$frame,3p,denyallow=google.com|gstatic.com,domain=txxx.* -*$popunder,3p,domain=txxx.* -voyeurhit.*##+js(acs, adver) -voyeurhit.*##.content > div > .container + div -voyeurhit.*##.video-page__content > div.left + div[class]:last-child -voyeurhit.*##.video-page__underplayer > div[class]:first-child > div[class] -voyeurhit.*##.video-related + div[class] > div[class]:only-child -voyeurhit.*##div[style="display:flex !important"] > div -voyeurhit.*##.video-tube-friends + div[class] -upornia.*##+js(acs, adver) -upornia.com##+js(rmnt, script, /popunder|isAdBlock|admvn.src/i) -upornia.com##h5:has-text(Advertisement) -upornia.com##section:not(:empty) -upornia.com##.underplayer:style(min-height: initial !important;) -upornia.com##.video-page__content > .right -upornia.*##.intwo__img -upornia.*##.video-videos-slider -upornia.*##span[style="display:flex !important"] > div:first-child -upornia.*##+js(set, hommy, {}) -upornia.*##+js(set, hommy.waitUntil, noopFunc) -upornia.*##.jw-title-secondary -pornzog.com###ntv_a -pornzog.com##.video-ntv-list -hotmovs.*##+js(acs, adver) -hotmovs.com##.partners-wrap -hotmovs.*##.block_label--last + div[class] -hotmovs.*##.pagination + div.block_label--last -hotmovs.*##.underplayer__info > div[class]:first-child -hotmovs.*##.video-page__content > div.left + div[class]:last-child -hotmovs.*##div[style="display:flex !important"] > div -hotmovs.*##.video-page > div.block_label.mt-15 + div[class] -hotmovs.*##.videos-tube-friends -*$script,3p,denyallow=gstatic.com,domain=vjav.* -vjav.*##.hv-block -vjav.*##div[style="display:flex !important"] > div -vjav.*##.album-page > div.video-page__wrapper + div[class] -vjav.*##.content > div:not([class]) > div.video-page + div[class] -vjav.*##.video-page__content > div.left + div[class]:last-child -vjav.*##.video-page__player + div[class] > div[class] -vjav.*##.video-tube-friends -vjav.*##.video-tube-friends + div[class]:not(.pagination) -vjav.*##.index-page > div.container + div[class] -vjav.*##.jw-reset.jw-atitle.nopop -vjav.*##.partners-wrap + div[class] -vjav.*##div[class] > div[class] > section[style="padding: 10px;"] -! pornq .com popups -||bitupsss.com^$all -! pornj .com popups -pornj.com##+js(aopr, open) -pornj.com##.vda-item -! pornl.com -pornl.com##+js(aopr, open) -pornl.com##.adv-list--footer -pornl.com##.vda-item -! porn555 .com popups -porn555.com##.vda-x2 -! see .xxx -||see.xxx/nr.js -see.xxx##.vda-item -porntop.com###inv_pause -porntop.com##.ip > .btn-close -thegay.*##+js(acs, adver) -thegay.*##.content > div:not([class]) > .wrapper ~ div[class]:not(.wrapper) -thegay.*##.underplayer__info > div[class]:first-child -thegay.*##.video-page__content > div.left + div[class]:last-child -thegay.*##div[style="display:flex !important"] > div -||thegay.com^$csp=default-src 'self' *.ahcdn.com fonts.gstatic.com fonts.googleapis.com https://thegay.com https://tn.thegay.com 'unsafe-inline' 'unsafe-eval' data: blob:,badfilter -! privatehomeclips.com -privatehomeclips.com##span[style="display:flex !important"] > div:first-child -privatehomeclips.com##.partners-wrap -privatehomeclips.com##.video-page__content > .right -privatehomeclips.com##.video-page__item -privatehomeclips.com##.content > div > .wrapper + div[class]:not(.wrapper) -privatehomeclips.com##.underplayer > div[class]:not([class*="_"]) > div[class] -privatehomeclips.com##.partners-wrap + div[class] -privatehomeclips.com##.undp--karp -privatehomeclips.com##section[style="padding: 20px;"] -privatehomeclips.com##.left + div:not([class]):last-child -! vxxx.com -vxxx.com##+js(acs, ACtMan) -vxxx.com###player-1 > div[style="display:flex !important"] -vxxx.com##.video-page-content + div[class] -vxxx.com##.video-page-content-left + div[class]:last-child -vxxx.com##.videoplayer + div > div[class] -vxxx.com##.wrapper-margin + div[class]:last-child -! pornhits.com popup/under -pornhits.com##+js(acs, ACtMan) -pornhits.com###s-suggesters -pornhits.com##.ft -pornhits.com##.index-ntv -pornhits.com##.jwplayer > span -pornhits.com##.sponsor -pornhits.com##.right -||pornhits.com/magic/ -||red12flyw2.site^$3p -! inporn.com ads/PH -in-porn.com,inporn.com##.video-page__content > div.right -in-porn.com,inporn.com##.video-info > section -in-porn.com,inporn.com##.video__wrapper > div.wrapper.headline -in-porn.com,inporn.com##.wrapper > article -in-porn.com,inporn.com##section[is-footer-banners] -in-porn.com,inporn.com###in_v -in-porn.com,inporn.com##.btn-close -in-porn.com,inporn.com##[style="display:flex !important"] > div > div:not(:last-child) -in-porn.com,inporn.com##.jw-channel-btn.nopop -in-porn.com,inporn.com##.wrapper[style="min-width: 0px;"] > section[style="padding: 12px;"] -! senzuri.tube redirect, ad -senzuri.tube##+js(acs, adver) -senzuri.tube##.video-page + div[class]:not(.container) -senzuri.tube##.video-page__content > div.left + div[class]:last-child -senzuri.tube##.index-page > div.container + div[class] -senzuri.tube##.content-block + .video-tube-friends + div[class] -senzuri.tube##div[style="display:flex !important"] > div -txxxporn.tube##+js(acs, adver) -txxxporn.tube##div[style="display:flex !important"] > div -txxxporn.tube##.video-content > div:not(:has(.pplayer)) -txxxporn.tube##.video-content > div[class]:first-child > div[class]:has(> div > a[href="#"]) -txxxporn.tube##span:only-child:has-text(/^AD$/):upward(2) -txxxporn.tube##.suggestion -txxxporn.tube##.video-videos-slider -txxxporn.tube##.page-video > div[class]:has(> div[class]:not(.video-related) > div[id][class]:empty) -hclips.com##+js(acs, adver) -hclips.com##.wrapper + .partners-wrap + div[class] -hclips.com##.underplayer > section -hclips.com##.video__wrapper > section[style] -hclips.com##span[style="display:flex !important"] > div:first-child -hclips.com##.video-page__content > div.left + div:not([class]) -*$frame,3p,denyallow=google.com|gstatic.com,domain=hclips.com -hdzog.*##+js(acs, adver) -hdzog.*##.content > div:not([class]) > div.content-block ~ div[class]:not(.content-block) -hdzog.*##.suggestions -hdzog.*##.partners-wrap -hdzog.*##.pagination + div[class]:last-of-type -hdzog.*##.video-page__left > div[class]:last-of-type -hdzog.*##div[style="display:flex !important"] > div -hdzog.*##.video-page__content > div:not([class*="video"]) -hdzog.*##.video-page__row > div:not([class*="video"]) -tuberel.com##+js(acs, adver) -sextu.com##.afs_ads + span[style] > div > div:not(:last-child) -sextu.com##.right -sextu.com##.thumbs__banner -sextu.com##.wrapper > article -sextu.com##.wrapper > section -sextu.com##div[id^="underplayer_"] -manysex.com,manysex.tube##.suggestion-wrapper -manysex.com,manysex.tube##.right -manysex.com,manysex.tube##.video-page__related + .headline -manysex.com,manysex.tube##.videoplayer + section -manysex.com,manysex.tube##section[style="padding: 12px;"] -manysex.com,manysex.tube##span[style="display:flex !important"] > div > div:not(:last-child) -manysex.com,manysex.tube##.jw-reset.jw-atitle.nopop -abxxx.com##.video-page__content > div.left > section -abxxx.com##.video__wrapper > div.wrapper > section -abxxx.com##.video__wrapper > div.wrapper.headline -gaytxxx.com##.index-page > div.wrapper > div.row + div[class] -gaytxxx.com##.jw-reset.jw-atitle.nopop -gaytxxx.com##.suggestion + div[class]:has(> .video-related) + div[class] -gaytxxx.com##.undp -gaytxxx.com##.video-content > div[class]:first-child > div[class]:has(> div[class] > div[class] > div[id]) -gaytxxx.com##.video-content > div[class] + div[class]:last-child -gaytxxx.com##.wrapper + div[style="margin-top: 0px;"] -gaytxxx.com##div[style="display:flex !important"] > div -shemalez.com##+js(acs, adver) -shemalez.com##+js(aeld, , window.open) -shemalez.com##+js(nosiif, document.readyState) -shemalez.com##.video-page__content > .left + div[class] -shemalez.com##.video-tube-friends + div[class] -shemalez.com##.content > div > .wrapper + div[class] -shemalez.com##div[style="display:flex !important"] > div -! xjav.tube -xjav.tube##.left > section -xjav.tube##.right -xjav.tube##.video-tube-friends + article -xjav.tube##.wrapper > section[style="padding: 12px;"] -xjav.tube##.wrapper.headline:has(+ .wrapper > section[style="padding: 12px;"]) -xjav.tube##span[style="display:flex !important"] > div > div:not(:last-child) -xjav.tube##.jw-channel-btn.nopop -mcfucker.com##+js(aopw, t4PP) -sponsor=$domain=mcfucker.com -mcfucker.com##.vadv -mcfucker.com##.c2p -imgprime.com##+js(aopr, document.createElement) -imgprime.com##+js(ra, href|target, a[href="https://imgprime.com/view.php"][target="_blank"], complete) -||imgprime.com/*.php$script -imgprime.com##.overlayBg -imgshots.com##+js(popads.net) -imgshots.com###introOverlayBg -porn.com##+js(nowoif) -porn.com##+js(set, String.prototype.charAt, trueFunc) -bdupload.*##+js(nano-stb) -bdupload.*##[href*="/dloadbutton.php"] -||bdupload.*/sw.js$script,1p -||socialbars-web5.com/*/notifications/$script -taroot-rangi.com##+js(aopw, sc_adv_out) -pornwatchers.com##+js(aopr, ExoLoader) -pornwatchers.com##+js(aopr, document.dispatchEvent) -pornwatchers.com##.aside-block -pornwatchers.com##.fluid_nonLinear_bottom -pornwatchers.com##.stage-promo -##.aff-content-col -##.aff-inner-col -##.aff-item-list -||pornwatchers.com/sw.js$script,1p -sotemnovinhas.com##+js(nofab) -||sotemnovinhas.com/*.gif$image -ondemandkorea.com##+js(aopr, pbjs.libLoaded) -ondemandkorea.com##.banner_728x90 -ondemandkorea.com##.floatBanner -ondemandkorea.com##.player_overlay.banner -@@||ondemandkorea.com^$ghide -||ondemandkorea.com/*/*sponsor*300x250.jpg$image,redirect=32x32.png -||google-analytics.com/collect$image,redirect=1x1.gif,domain=ondemandkorea.com -katestube.com##+js(nostif, '0x) -katestube.com##+js(nowoif) -katestube.com##.bottom-banners -katestube.com##.advertising -katestube.com###under-video -gotporn.com##+js(aeld, , open) -gotporn.com##+js(aopr, ExoLoader) -bdsmx.tube##+js(aopr, mz) -bdsmx.tube##.btn-close -bdsmx.tube##article -blackporn.tube,xmilf.com##.right -blackporn.tube,mrgay.tube##.video-info > section -blackporn.tube,mrgay.tube,xmilf.com##.wrapper > section -blackporn.tube,mrgay.tube,xmilf.com##article > section -bdsmx.tube,blackporn.tube,mrgay.tube,xmilf.com##[is-footer-banners] -bdsmx.tube,blackporn.tube,mrgay.tube,xmilf.com##.headline.wrapper -bdsmx.tube,blackporn.tube,mrgay.tube,xmilf.com##[style="display:flex !important"] > div > div:not(:last-child) -mrgay.*##.right -||googlesyndication.com^$script,important,domain=mypapercraft.net -mypapercraft.net##+js(nofab) -mypapercraft.net##.ezoic-ad -sintelevisor.com,tvpor-internet.com##+js(nowebrtc) -||livesports.pw/adblock.js$script,1p,redirect=fuckadblock.js-3.2.0 -@@||sintelevisor.com^$ghide -||sintelevisor.com/tv/asarasa.html$frame,1p -sintelevisor.com###floatLayer -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=supergames.com -||adservice.google.com.*/adsid/integrator.js?domain=player.tubia.com$xhr,redirect=nooptext -tune.pk###tpk-revenue-sharing-program -tune.pk##+js(set, ad_blocker, false) -europixhd.*,hdeuropix.*,topeuropix.*##+js(aopr, AaDetector) -europixhd.*,hdeuropix.*,topeuropix.*##+js(aopr, LieDetector) -europixhd.*,hdeuropix.*,topeuropix.*##+js(popads-dummy) -europixhd.*,hdeuropix.*,hindipix.*,topeuropix.*##+js(disable-newtab-links) -europixhd.*,topeuropix.*##+js(nowoif) -topeuropix.*##+js(aeld, , _0x) -||europixhd.net/js/propadbl_epxhd.js$script,1p -europixhd.*,hdeuropix.*,topeuropix.*###MyImageId -@@|blob:$domain=hdeuropix.cc -europixhd.*,topeuropix.*##[id^="MyAdsId"] -$script,domain=zdnet.fr,3p -@@||ajax.googleapis.com^$script,domain=zdnet.fr -pornxs.com##+js(acs, ExoLoader) -pornxs.com##+js(aopr, _abb) -||pornxs.com/*.php -pornxs.com##[id^="div_theAd"] -pornxs.com##[data-ad-index-parent] -||megayoungsex.com/func.js -megayoungsex.com##.SAbnsBotBl -megayoungsex.com##.SHVidBlockUndBn -megayoungsex.com##.SHVidBlockR -mangoporn.net##+js(acs, puShown, /doOpen|popundr/) -mangoporn.net##+js(aopr, document.dispatchEvent) -mangoporn.net##+js(aopw, pURL) -mangoporn.net##+js(nowoif) -frprn.com##+js(nosiif, readyState) -frprn.com##.spot -frprn.com##.footer-spot -! watchseries.unblocked.* popups -watchseries.unblocked.*##+js(nowebrtc) -vidlox.*##A[href$=".html"][rel="nofollow norefferer noopener"] -@@||arkadiumhosted.com^$script,domain=arkadiumarena.com|games.baltimoresun.com|games.chicagotribune.com|games.dailypress.com|games.express.co.uk|games.mcall.com|games.nydailynews.com|games.orlandosentinel.com|games.sun-sentinel.com|puzzles.bestforpuzzles.com -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=arkadiumarena.com|games.baltimoresun.com|games.chicagotribune.com|games.dailypress.com|games.express.co.uk|games.mcall.com|games.nydailynews.com|games.orlandosentinel.com|games.sun-sentinel.com|juegos.elpais.com|puzzles.bestforpuzzles.com|games.startribune.com -||arkadiumhosted.com/*/adsBlob/$xhr,domain=bestforpuzzles.com|charlotteobserver.com|independent.co.uk|miamiherald.com|standard.co.uk|word.tips -##[class^="DisplayAd"] -##.ark-ad-message -##div[class*="displayAdRight"] -puzzles.standard.co.uk,puzzles.independent.co.uk,puzzles.bestforpuzzles.com,arkadiumarena.com,games.charlotteobserver.com,games.miamiherald.com,games.startribune.com,games.word.tips##+js(nano-sib, generalTimeLeft, *, 0.02) -@@*$ghide,domain=games.startribune.com|games.charlotteobserver.com|games.miamiherald.com|games.word.tips|puzzles.bestforpuzzles.com|puzzles.independent.co.uk|puzzles.standard.co.uk -puzzles.standard.co.uk,puzzles.independent.co.uk,puzzles.bestforpuzzles.com,games.charlotteobserver.com,games.miamiherald.com,games.startribune.com,games.word.tips##[class*="Ad"] -@@*$ghide,domain=arcade.buzzrtv.com|arcade.lemonde.fr|arena.gamesforthebrain.com|bestpuzzlesandgames.com|cointiply.arkadiumarena.com|gamelab.com|games.abqjournal.com|games.amny.com|games.bellinghamherald.com|games.besthealthmag.ca|games.bnd.com|games.boston.com|games.bostonglobe.com|games.bradenton.com|games.centredaily.com|games.cnhinews.com|games.crosswordgiant.com|games.dallasnews.com|games.daytondailynews.com|games.denverpost.com|games.everythingzoomer.com|games.fresnobee.com|games.gameshownetwork.com|games.get.tv|games.greatergood.com|games.heraldonline.com|games.heraldsun.com|games.idahostatesman.com|games.insp.com|games.islandpacket.com|games.journal-news.com|games.kansas.com|games.kansascity.com|games.kentucky.com|games.lancasteronline.com|games.ledger-enquirer.com|games.macon.com|games.mercedsunstar.com|games.modbee.com|games.moviestvnetwork.com|games.myrtlebeachonline.com|games.nationalreview.com|games.newsobserver.com|games.parade.com|games.pressdemocrat.com|games.puzzlebaron.com|games.puzzler.com|games.puzzles.ca|games.qns.com|games.readersdigest.ca|games.sacbee.com|games.sanluisobispo.com|games.sixtyandme.com|games.sltrib.com|games.springfieldnewssun.com|games.star-telegram.com|games.sunherald.com|games.theadvocate.com|games.thenewstribune.com|games.theolympian.com|games.theportugalnews.com|games.thestar.com|games.thestate.com|games.tri-cityherald.com|games.triviatoday.com|games.usnews.com|games.wordgenius.com|games.wtop.com|jeux.meteocity.com|juegos.as.com|juegos.elnuevoherald.com|juegos.elpais.com|philly.arkadiumarena.com|play.dictionary.com|puzzles.centralmaine.com|puzzles.crosswordsolver.org|puzzles.nola.com|puzzles.pressherald.com|puzzles.sunjournal.com -arcade.buzzrtv.com,arcade.lemonde.fr,arena.gamesforthebrain.com,bestpuzzlesandgames.com,cointiply.arkadiumarena.com,gamelab.com,games.abqjournal.com,games.ajc.com,games.amny.com,games.bellinghamherald.com,games.besthealthmag.ca,games.bnd.com,games.boston.com,games.bostonglobe.com,games.bradenton.com,games.centredaily.com,games.cnhinews.com,games.crosswordgiant.com,games.dallasnews.com,games.daytondailynews.com,games.denverpost.com,games.everythingzoomer.com,games.fresnobee.com,games.gameshownetwork.com,games.get.tv,games.greatergood.com,games.heraldonline.com,games.heraldsun.com,games.idahostatesman.com,games.insp.com,games.islandpacket.com,games.journal-news.com,games.kansas.com,games.kansascity.com,games.kentucky.com,games.lancasteronline.com,games.ledger-enquirer.com,games.macon.com,games.mercedsunstar.com,games.modbee.com,games.moviestvnetwork.com,games.myrtlebeachonline.com,games.nationalreview.com,games.newsobserver.com,games.parade.com,games.pressdemocrat.com,games.puzzlebaron.com,games.puzzler.com,games.puzzles.ca,games.qns.com,games.readersdigest.ca,games.sacbee.com,games.sanluisobispo.com,games.sixtyandme.com,games.sltrib.com,games.springfieldnewssun.com,games.star-telegram.com,games.sunherald.com,games.theadvocate.com,games.thenewstribune.com,games.theolympian.com,games.theportugalnews.com,games.thestar.com,games.thestate.com,games.tri-cityherald.com,games.triviatoday.com,games.usnews.com,games.vgwplay.com,games.wordgenius.com,games.wtop.com,jeux.meteocity.com,juegos.as.com,juegos.elnuevoherald.com,juegos.elpais.com,philly.arkadiumarena.com,play.dictionary.com,puzzles.centralmaine.com,puzzles.crosswordsolver.org,puzzles.nola.com,puzzles.pressherald.com,puzzles.sunjournal.com##+js(nano-sib) -arcade.buzzrtv.com,arcade.lemonde.fr,arena.gamesforthebrain.com,bestpuzzlesandgames.com,cointiply.arkadiumarena.com,gamelab.com,games.abqjournal.com,games.ajc.com,games.amny.com,games.bellinghamherald.com,games.besthealthmag.ca,games.bnd.com,games.boston.com,games.bostonglobe.com,games.bradenton.com,games.centredaily.com,games.cnhinews.com,games.crosswordgiant.com,games.dallasnews.com,games.daytondailynews.com,games.denverpost.com,games.everythingzoomer.com,games.fresnobee.com,games.gameshownetwork.com,games.get.tv,games.greatergood.com,games.heraldonline.com,games.heraldsun.com,games.idahostatesman.com,games.insp.com,games.islandpacket.com,games.journal-news.com,games.kansas.com,games.kansascity.com,games.kentucky.com,games.lancasteronline.com,games.ledger-enquirer.com,games.macon.com,games.mercedsunstar.com,games.modbee.com,games.moviestvnetwork.com,games.myrtlebeachonline.com,games.nationalreview.com,games.newsobserver.com,games.parade.com,games.pressdemocrat.com,games.puzzlebaron.com,games.puzzler.com,games.puzzles.ca,games.qns.com,games.readersdigest.ca,games.sacbee.com,games.sanluisobispo.com,games.sixtyandme.com,games.sltrib.com,games.springfieldnewssun.com,games.star-telegram.com,games.sunherald.com,games.theadvocate.com,games.thenewstribune.com,games.theolympian.com,games.theportugalnews.com,games.thestar.com,games.thestate.com,games.tri-cityherald.com,games.triviatoday.com,games.usnews.com,games.wordgenius.com,games.wtop.com,jeux.meteocity.com,juegos.as.com,juegos.elnuevoherald.com,juegos.elpais.com,philly.arkadiumarena.com,play.dictionary.com,puzzles.centralmaine.com,puzzles.crosswordsolver.org,puzzles.nola.com,puzzles.pressherald.com,puzzles.sunjournal.com##[class^="DisplayAd__container"] -*/advertisement/video/static/advantage.xml$xhr -nwanime.tv##+js(nowoif) -nwanime.tv##.adf-float -/all-for-adsense/* -ah-me.com##+js(acs, $, serve) -ah-me.com##+js(aopr, open) -||hprofits.com^$domain=gogaytube.tv|shemaleporntube.tv -gogaytube.tv,shemaleporntube.tv##.videojs-hero -/iframe.php?spotID= -@@||mdsrwdassets-a.akamaihd.net^$xhr,script,other,domain=telecinco.es|cuatro.com -@@||imasdk.googleapis.com/js/sdkloader/ima3_dai.js$script,domain=telecinco.es|cuatro.com -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=telecinco.es|cuatro.com -@@||cuatro.com^$ghide -@@||telecinco.es^$ghide -ouo.*##+js(aopr, AaDetector) -ouo.*##+js(nowebrtc) -ouo.*##+js(nano-sib, stop()) -ouo.*##^script:has-text('shift') -ouo.*##^script:has-text(\'shift\') -ouo.*##[style*="width:300px"] > a[href][target="_blank"] > img -||ouo.*/js/jbitly.js$script,1p -||ouo.*/js/webpush.ma.js$script,1p -||ouo.*/sw$script,1p -*$script,redirect-rule=noopjs,domain=ouo.* -||egnatius-ear.com^$script,domain=ouo.* -ouo.*##[href^="https://dynamicadx.com/"] -ouo.*##iframe:not([src]) -ouo.*##[id*="ScriptRoot"] -ouo.*##.dlbtns -ouo.press##.skip-container > .text-center > span[style="display: block;color: #aaa;font-size: 13px;padding-bottom: 2px;"] -chooyomi.com##+js(nowoif) -*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=chooyomi.com -x1337x.*##[href*=".php"] -1337x.*,x1337x.*,1337x.unblock2.xyz,1337x.unblocked.*,1337x.unblockit.*##ul > li:has-text(/‌/i) -1337x.*,x1337x.*,1337x.unblock2.xyz,1337x.unblocked.*,1337x.unblockit.*##:xpath('//*[contains(text(),"Hide your IP")]/..') -1337x.unblock2.xyz,1337x.unblockit.*##+js(aopr, btoa) -1337x.unblock2.xyz,1337x.unblocked.*,1337x.unblockit.*##+js(aopr, open) -1337x.unblock2.xyz##+js(aopr, Math.floor) -1337x.unblocked.*###lb-banner -1337x.*,1337x.unblockit.*##a[href$="Promo.php"] > img -||topblockchainsolutions.*^$all -xiaopan.co##+js(aopw, AdBlockDetectorWorkaround) -shooshtime.com##+js(nowoif) -||monad.network^$script,domain=shooshtime.com -seattletimes.com##+js(nostif, apstagLOADED) -noticias.gospelmais.com.br##+js(set, blockAdBlock, true) -songs.*##+js(aopr, AaDetector) -mel.fm##+js(nofab) -@@||spiele.heise.de^$ghide -heise.de###topBannerContainer -heise.de##.keygameBannerContainer -heise.de##.ad-microsites -heise.de##.tipps-content-ad -heise.de##.hbs-ad -heise.de##.stage-advertising -heise.de##.ad -dailygeekshow.com##+js(aopr, jQuery.hello) -@@||seirsanduk.*^$ghide -@@||seirsanduk.*/$script,1p -seirsanduk.*##+js(popads.net) -seirsanduk.*##[href^="https://www.bybit.com/"] -seirsanduk.*##ins.adsbygoogle -seirsanduk.*##[href^="//bgtop.net/"] -bestgames.com,yiv.com##+js(nostif, /Adb|moneyDetect/) -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=bestgames.com|yiv.com,redirect-rule=google-ima.js -bestgames.com,yiv.com#@##adsContainer -bestgames.com,yiv.com###LeftAdDiv -bestgames.com,yiv.com###game_middle_ad -bestgames.com,yiv.com###RightAdTopDiv -bestgames.com,yiv.com###RightAdMiddleDiv -jacquieetmicheltv.net##+js(set, is_adblocked, false) -jacquieetmicheltv.net##+js(set, showPopunder, noopFunc) -jacquieetmicheltv.net##.espace-cam -||easysexe.com^$3p -||tawenda-tech.net^$frame,3p -||rencontres-coquines.jacquieetmichel.net^ -gotgayporn.com##+js(aopr, decodeURI) -||gotgayporn.com/sw.js$script,1p -rue89lyon.fr##+js(aopr, isShowingAd) -kitguru.net##body:style(background-image:none !important) -viki.com##+js(set, VikiPlayer.prototype.pingAbFactor, noopFunc) -viki.com##+js(set, player.options.disableAds, true) -*expire=$media,redirect=noopmp3-0.1s,domain=viki.com -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js,domain=viki.com -realgfporn.com##+js(aopr, ExoLoader) -realgfporn.com##+js(aopw, __htapop) -realgfporn.com##+js(popads-dummy) -realgfporn.com##+js(aopr, ExoLoader.serve) -realgfporn.com##+js(aeld, click, exopop) -realgfporn.com##+js(aeld, /^(?:load|click)$/, popMagic) -realgfporn.com##+js(acs, document.createElement, 'script') -realgfporn.com###fixedBanner -realgfporn.com##.overlay-banner -realgfporn.com##.video-overlay -realgfporn.com##.banner-video-right -||realgfporn.com/sw.js$script,1p -*$popunder,domain=realgfporn.com -picturelol.com###rang2 -picturelol.com##+js(aopr, ExoLoader) -picturelol.com##+js(nowoif) -imgspice.com##+js(nowoif) -imgspice.com##+js(aopr, ExoLoader) -imgspice.com##+js(aeld, mousedown, popundrInit) -imgspice.com###widepage -imgspice.com###interdiv -mitly.us##+js(aopr, adBlockDetected) -mitly.us##+js(aopr, open) -mitly.us##+js(aopw, adcashMacros) -mitly.us##+js(aopw, atOptions) -mitly.us##+js(set, blurred, false) -@@||mitly.us^$ghide -*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=mitly.us -||googlesyndication.com/pagead/$script,redirect=noopjs,domain=mitly.us -mitly.us##ins.adsbygoogle -mitly.us##[href^="http://deloplen.com/"] -watch-series.*,watchseries.*##+js(acs, Math, XMLHttpRequest) -watch-series.*,watchseries.*##+js(nowebrtc) -watch-series.*,watchseries.*##+js(nowoif) -watch-series.*,watchseries.*##+js(set, console.clear, trueFunc) -watch-series.*,watchseries.*##.freeEpisode -watch-series.*,watchseries.*##.sp-leader -watch-series.*,watchseries.*##.shd_button -watch-series.*,watchseries.*##.sp-leader-bottom -watch-series.*,watchseries.*##.category-item-ad -watch-series.*,watchseries.*###related -watch-series.*,watchseries.*###rotating-item-wrapper -watch-series.*,watchseries.*##div.block-left-home-inside[style^="height:252"] -@@||watchseries.*^$ghide -||watch-series.*/sw.js$script,1p -||watchseries.*/sw.js$script,1p -fetishshrine.com##+js(aopr, decodeURI) -fetishshrine.com##.adv-aside -sleazyneasy.com##+js(aopr, decodeURI) -sleazyneasy.com##+js(set, flashvars.adv_pre_vast, '') -sleazyneasy.com##+js(set, flashvars.adv_pre_vast_alt, '') -sleazyneasy.com##+js(set, x_width, 1) -/contents/images-banners/* -sleazyneasy.com##.container-aside > .item -sleazyneasy.com##.remove-spots -vikiporn.com##+js(aeld, getexoloader) -vikiporn.com##+js(aopr, decodeURI) -@@||anime-loads.org^$ghide -anime-loads.org###leaderwidget -anime-loads.org##.skycontent -/static/js/amvn.js -globalrph.com##+js(nostif, disableDeveloper) -onlinemschool.com##+js(aopr, oms.ads_detect) -onlinemschool.com###oms_left_block -e-glossa.it##+js(nostif, Blocco, 2000) -pornsocket.com##+js(set, _site_ads_ns, true) -||adspaces.ero-advertising.com/adspace/*$script,redirect=noopjs,domain=pornsocket.com -! http://forum.chip.de/rund-um-online/werbeterror-spendenaufruf-pic-upload-de-microsoft-alarm-u-google-benachr-1879678.html -pic-upload.de##+js(aopw, Fingerprint2) -limerickleader.ie###abr_purchase_div -pornhd.com##+js(aopr, hasAdBlock) -pornhd.com,pornhdin.com##+js(aopr, ExoLoader.serve) -pornhd.com##+js(popads-dummy) -pornhd.com##+js(nowoif) -pornhd.com##+js(aeld, , pop) -pornhdin.com##+js(aopr, open) -||syndication.exoclick.com/ads-iframe-display.php$script,redirect=noopjs,domain=pornhd.com -pornhd.com##.phdZone -pornhd.com##.overlay-content -pornhd.com##.video-list-corner-ad -##.inplayer-ad -luxuretv.com##+js(acs, $, ltvModal) -luxuretv.com##iframe[data-src^="https://networkmanag.com/"] -luxuretv.com##+js(set, luxuretv.config, '') -luxuretv.com##+js(aopr, popns) -*$script,3p,denyallow=gstatic.com|polyfill.io,domain=sexu.com -||sexu.com^$frame,1p -sexu.com##.footerBanners -sexu.com###jw_video_popup -sexu.com##.container > .info -sexu.com##.player-related -sexu.com##.player-block__line -sexu.com##.title--sm -sexu.com##.player-block__square -pussyspace.*##+js(aopr, open) -pussyspace.com,pussyspace.net##+js(aost, navigator.userAgent, exopop.browser.is) -pussyspace.com,pussyspace.net##+js(aeld, load, exoJsPop101) -pussyspace.com,pussyspace.net##+js(norafif, exoframe) -pussyspace.com,pussyspace.net##+js(aeld, /^loadex/) -pussyspace.com,pussyspace.net##a[href$="/live/meet-and-fuck/"] -pussyspace.com,pussyspace.net##a:matches-attr(/^on/=/event/) -pussyspace.com,pussyspace.net##a:matches-attr(/-h?ref/) -pussyspace.com,pussyspace.net###alphabet, #channels, #divx-container, #hmenu, #inform, #nowlooking, #playerCamBox, #playerMenu, #qcat, #showPlayer, #tabel_tagslist, #video_content, #web_cam, .BaseRoomContents, .buttons, .carouselTopScroll, .carusel-keys-box-ps, .footerdesc, .in_top, .load_more_rel, .mainBoxTitle, .pagIno, .playerContent100pr, .relatedVideo, .right-160px, .videos-related, footer, header, [href^="/webcams.php"]:others() -||pussyspace.*/live/meet-and-fuck/$all -||pussyspace.*/js/all.js?v=gitcache_gulp_ -||pussyspace.*/lazyload.im -/click.php?$popup,3p,domain=pussyspace.com|pussyspace.net -*$image,3p,denyallow=cdn77.org|fpbns.net|globalcdn.co|others-cdn.com|rncdn7.com|sb-cd.com|stream.highwebmedia.com|upsiloncdn.net|xvideos-cdn.com|youjizz.com|ypncdn.com|thumb.live.mmcdn.com,from=pussyspace.com|pussyspace.net -||propbigo.com/*.xml$xhr,redirect=nooptext -||doathair.com^ -bigtitsxxxsex.com##+js(aopr, ALoader) -bigtitsxxxsex.com##+js(nowoif) -bigtitsxxxsex.com##+js(noeval) -bigtitsxxxsex.com##.bano1 -||adn.porndig.com^ -||videos.porndig.com/js/videojs.logobrand.js -porndig.com##+js(set, Object.prototype.AdOverlay, noopFunc) -porndig.com##+js(set, tkn_popunder, null) -||porndig.com/sw$script,1p -@@||mamahd.*^$ghide -||mamahd.*/hd.php$frame -perfectgirls.*,perfektdamen.*##+js(acs, ExoLoader) -perfectgirls.*,perfektdamen.*##+js(aopw, ads_priv) -perfectgirls.*,perfektdamen.*##+js(noeval) -perfectgirls.*,perfektdamen.*##.advertisement -perfectgirls.*,perfektdamen.*##.promo -area51.porn##+js(aopr, document.dispatchEvent) -area51.porn##.under-video-banner -hentaipulse.com##+js(acs, ExoLoader) -1fichier.com##+js(nowebrtc) -1fichier.com##+js(nano-stb, dlw, 40000) -vivud.com##+js(aopr, ALoader) -vivud.com##+js(acs, ExoLoader) -vivud.com##+js(nowoif) -vivud.com##+js(aopr, LieDetector) -||vivud.com/sw$script,1p -vivud.com##+js(aopr, decodeURI) -vivud.com##+js(aopr, Notification) -*.mp4$media,redirect=noopmp3-0.1s,domain=vivud.com -@@/key=$media,domain=vivud.com -||utubeworkers.com/Campaigns/$script,xhr,domain=vivud.com -vivud.com##.adv -##.inplayer_banners -##.in_stream_banner -||googlesyndication.com^$script,important,domain=incredibox.com -@@||incredibox.com/ad/*$xhr,1p -webcheats.com.br##+js(set, can_run_ads, true) -webcheats.com.br##+js(nostif, test, 0) -ceesty.com,gestyy.com##+js(set, adsBlockerDetector, noopFunc) -@@||ceesty.com^$ghide -@@||corneey.com^$ghide -@@||destyy.com^$ghide -@@||festyy.com^$ghide -@@||gestyy.com^$ghide -@@||sh.st^$ghide -ceesty.com,corneey.com,destyy.com,festyy.com,gestyy.com,sh.st##.skip-advert -ceesty.com,corneey.com,destyy.com,festyy.com,gestyy.com,sh.st##+js(set, globalThis, null) -*$3p,xhr,domain=ceesty.com|corneey.com|destyy.com|festyy.com|gestyy.com -ceesty.com,corneey.com,destyy.com,festyy.com,gestyy.com##+js(aopr, NREUM) -imgcloud.pw##+js(popads-dummy) -*$script,3p,denyallow=fastly.net|google.com|googleapis.com|gstatic.com|jsdelivr.net|jwpcdn.com,domain=imgcloud.pw -angrybirdsnest.com##+js(set, adblock, false) -nitroflare.com##+js(acs, $, window.open) -nitroflare.com##+js(acs, pop3, window.open) -sexytrunk.com,teensark.com##+js(aopr, document.dispatchEvent) -planetsuzy.org##+js(set, __ads, true) -planetsuzy.org##+js(acs, jQuery, ready) -planetsuzy.org##div[style]:has(> script[src*="ads.exoclick.com/"]) -zrozz.com##+js(set, adblock, false) -empflix.com##+js(aopw, popzone) -empflix.com##+js(nowoif) -empflix.com##+js(set, FlixPop.isPopGloballyEnabled, falseFunc) -empflix.com##+js(aeld, , /exo) -tnaflix.com##+js(aopr, ads.pop_url) -tnaflix.com##+js(aeld, getexoloader) -||tnaflix.com/*.php$script,1p -empflix.com,tnaflix.com##.lastLiAvx -tnaflix.com###vidPlayer span:has-text(Advertisement) -tnaflix.com###vidPlayer > div:last-child -tnaflix.com###zoneInPlayer -tnaflix.com##.improveADS -empflix.com##.mewDv -empflix.com##.padAdvx -empflix.com#@##hideAd -empflix.com##.col-xs-6:not([data-vid]) -tnaflix.com##+js(set-cookie, popunder_stop, 1) -tnaflix.com##.pause-overlay -||adsession.com^$popup -pornomovies.com##+js(aopr, ExoLoader.serve) -pornomovies.com##+js(aopr, decodeURI) -pornomovies.com##.twocolumns > .viewlist + .aside -urlcero.*##+js(aopr, open) -urlcero.*##+js(nostif, checkAdblockUser, 1000) -onlinetv.planetfools.com##+js(acs, setTimeout, 1000) -planetfools.com##+js(nowebrtc) -gala.fr,gentside.com,geo.fr,hbrfrance.fr,nationalgeographic.fr,ohmymag.com,serengo.net,vsd.fr##+js(nostif, checkPub, 6000) -@@||startimez.com^$ghide -newsextv.com##+js(acs, ExoLoader) -||aa.21pron.com^ -anyporn.com##+js(nowoif) -anyporn.com##+js(acs, ExoLoader) -||anyporn.com/if2/ -||img.stomp.com.sg/sites/all/themes/stompst/images/placeholder.jpg$image -stomp.straitstimes.com##.content:has(> div:has-text(Branded Content)) -linkrex.net##+js(aopr, open) -linkrex.net##+js(aopw, __htapop) -linkrex.net,linx.cc##+js(set, blurred, false) -*$script,3p,denyallow=cloudflare.com|cloudflare.net|google.com|gstatic.com|recaptcha.net,domain=linkrex.net|linx.cc -shrtfly.*##+js(aopr, open) -shrtfly.*##+js(aopr, tabUnder) -@@||shrtfly.*^$ghide -shrtfly.*##ins.adsbygoogle -shrtfly.*##.banner -oke.io##+js(aopr, open) -oke.io##+js(aopw, Fingerprint2) -oke.io##+js(set, blurred, false) -gogoanime.*##+js(acs, atob, decodeURIComponent) -gogoanime.*,gogoanimes.*##+js(nowoif) -gogoanime.*##+js(set, console.clear, undefined) -gogoanime.*##+js(set, check_adblock, true) -gogoanime.*##+js(acs, document.createElement, /l\.parentNode\.insertBefore\(s/) -gogoanime.*##.banner_center -gogoanime.*##.anime_video_body_cate > div[style]:has(> div[id] + script[src]) -gogoanime.*##.adx -gogoanimetv.*##+js(aopr, AaDetector) -gogoanimetv.*##+js(nosiif, _0x) -||gogoanime.*/api/pop.php$xhr,1p -gogoanimetv.*##+js(nowoif) -||gogoanime.me/*.gif$image -/get/*?zoneid=$script -cpmlink.net##+js(acs, decodeURI, decodeURIComponent) -cpmlink.net##+js(nowebrtc) -cpmlink.net##.__web-inspector-hide-shortcut__ -*$script,3p,denyallow=cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|fastly.net|fastlylb.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jsdelivr.net|jquery.com|jwpcdn.com|recaptcha.net|tawk.to,domain=cpmlink.net -cpmlink.net##+js(aeld, , _blank) -*$frame,3p,domain=cpmlink.net -cpmlink.net##[href^="https://bit.ly"] -cpmlink.net##iframe[src="about:blank"] -sunporno.com##+js(aopr, ExoLoader.addZone) -sunporno.com##+js(popads-dummy) -sunporno.com##+js(aeld, , ;}) -sunporno.com##+js(aopr, console.clear) -sunporno.com##+js(aeld, load, BetterPop) -sunporno.com##+js(aopr, SUN_XER) -sunporno.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -*.gif$domain=sunporno.com,image -sunporno.com##.flirt -sunporno.com##.flirt-footer -sunporno.com##.flirt-block -sunporno.com##.thumbs-container > .th-ba -||sunporno.com/*.php$script,1p -sunporno.com##.safelink -/api/model/feed?siteId=$xhr,3p -namethatporn.com##+js(popads-dummy) -namethatporn.com##[data-flba^="https://landing.brazzersnetwork.com"] -||namethatporn.com/assets/imgs/1x1.gif$badfilter -||namethatporn.com/assets/imgs/1x1.gif$frame,redirect=noopframe -magnetdl.com,magnetdl.org##+js(nowoif) -magnetdl.com,magnetdl.org##a[href="/site/vpn/"] -magnetdl.com,magnetdl.org##+js(ra, href, a[href="https://vpn-choice.com"]) -magnetdl.com,magnetdl.org##a[href^="https://usenetbay.com/"] -freeviewmovies.com##+js(aopw, encodeURIComponent) -freeviewmovies.com##+js(set, isAdBlockActive, false) -freeviewmovies.com###pause-container -badjojo.com##+js(aopw, encodeURIComponent) -pornhost.com##+js(aopr, raConf) -badjojo.com##.embed-overlay -eroprofile.com##+js(acs, ExoLoader) -||eroprofile.com/js/nvbla.js -eroprofile.com##.center-block -eroprofile.com###divVideoListAd2 -feet9.com##[data-vid^="live-"]:remove() -feet9.com##[href^="https://go.cam.feet9.com/"]:upward(3) -||feet9.com/t/newbuttonyellow.png$image -feet9.com##.pup -feet9.com##.video:has(span:has-text(Live)) -feet9.com##+js(acs, __ADX_URL_U) -feet9.com##[onclick*="banner"]:upward(.video) -feet9.com##.hvr-pulse -feet9.com##[class^="ig"] -||feet9.com^$csp=worker-src 'none'; -locopelis.com##+js(aopr, popTimes) -locopelis.com##+js(aopr, smrtSB) -locopelis.com##+js(aopr, smrtSP) -absoluporn.*##+js(acs, ExoLoader) -@@||chaturbate.com/*embed$frame,domain=absoluporn.com -/code/script/back.php| -short.pe##+js(acs, atob, tabunder) -short.pe##+js(acs, RegExp, POSTBACK_PIXEL) -short.pe##+js(aopr, AaDetector) -short.pe##+js(aopr, console.clear) -short.pe##+js(aeld, mousedown, preventDefault) -short.pe##+js(nowebrtc) -short.pe##+js(nowoif) -short.pe##+js(nostif, '0x) -*$frame,denyallow=google.com|hcaptcha.com,domain=short.pe -short.pe##a[href^="https://href.li/"] -short.pe##body > div[style]:has(input[type="button"]) -short.pe##div[style*="z-index:99999"] > div[style*="width:300px"] -185.153.231.222##+js(nowebrtc) -filespace.com##+js(set, fuckAdBlock, false) -orgyxxxhub.com##+js(aopr, ExoLoader) -orgyxxxhub.com##+js(aopr, Aloader) -orgyxxxhub.com##+js(aopr, advobj) -orgyxxxhub.com##+js(noeval-if, replace) -||orgyxxxhub.com/js/arjlk.js -repelis.net##+js(aopr, popTimes) -pornomico.com##+js(aopr, addElementToBody) -pornomico.com##+js(popads-dummy) -pornomico.com##+js(aopr, decodeURI) -pornomico.com##.vjs-overlay -donkparty.com##+js(aopr, phantomPopunders) -donkparty.com##+js(nowoif) -watchmygf.me##+js(noeval) -||watchmygf.me/js/popupimage.js -watchmygf.me##+js(aopr, open) -watchmygf.me##+js(set, $.magnificPopup.open, noopFunc) -watchmygf.me##[href^="https://wct.link/click"] -mylust.com##+js(aopr, document.dispatchEvent) -mylust.com##+js(aopr, console.clear) -mylust.com##.no_pop.centeredbox -mylust.com##iframe.clear_both -mylust.com##div[class^="span"] > div.box:has(> .title > div:has-text(Advertisement)) -mylust.com###wrapper > div[style*="height:18px"] -mylust.com##.list_videos_ad -mylust.com###main_video_fluid_html_on_pause -||mylust.com/*.jsx -||mylust.com/assets/script.js -deepbrid.com##+js(acs, document.getElementById, undefined) -deepbrid.com##+js(set, adsenseadBlock, noopFunc) -pinsystem.co.uk##+js(aeld, /^(?:click|mousedown)$/, _0x) -@@||pinsystem.co.uk^$ghide -pinsystem.co.uk##ins.adsbygoogle -pinsystem.co.uk##+js(no-xhr-if, /adsbygoogle|doubleclick/) -pinsystem.co.uk##+js(acs, eval, replace) -pinsystem.co.uk##+js(rmnt, script, deblocker) -boysfood.com##+js(aopw, encodeURIComponent) -boysfood.com###pause-container -submityourflicks.com##+js(aopr, ExoLoader.serve) -submityourflicks.com##+js(aopr, decodeURI) -submityourflicks.com##+js(set, flashvars.adv_pause_html, '') -submityourflicks.com##.aside -submityourflicks.com##.spot -||submityourflicks.com/sw.js$script,1p -sextingforum.net##+js(aopw, stagedPopUnder) -linkshorts.*##+js(aopr, open) -linkshorts.*##+js(set, blurred, false) -*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=linkshorts.* -dz4link.com##+js(aopw, Fingerprint2) -dz4link.com##+js(set, blurred, false) -dz4link.com##+js(nowoif) -dz4link.com##.banner -dz4up.com##.container + div[style] > [title="Download Now"] > img -*$frame,denyallow=google.com,domain=dz4link.com -*$script,3p,denyallow=facebook.net|google.com|gstatic.com|recaptcha.net,domain=dz4link.com -! pixhost. to -pixhost.*###js -pixhost.*###web:style(display: block !important;) -pixhost.*##^script:has-text(exdynsrv) -!#if !cap_html_filtering -pixhost.*##+js(rmnt, script, exdynsrv) -!#endif -readmng.com##.desk -readmng.com##.sideways -||readmng.com/dist/img/banner*$image,1p -@@||next-episode.net^$ghide -@@||next-episode.net^$script,1p -*$script,redirect-rule=noopjs,domain=next-episode.net -!next-episode.net##+js(rmnt, script, /<.*>.*\x40/) -!next-episode.net##.adsbygoogle -next-episode.net##[id=""] -||beinsports.com/*/adbw/ -indi-share.com##+js(nano-stb, seconds) -indi-share.com##+js(nano-sib, clearInterval) -techmyntra.net##+js(nano-stb) -||dwf6crl4raal7.cloudfront.net^$script,3p -||techmyntra.net^$3p -@@||fwmrm.net/ad/$script,domain=dplay.dk -||dniadops-a.akamaihd.net/video-assets/*.mp4$media,domain=dplay.dk -updato.com##+js(nostif, document.querySelector, 5000) -imgdew.*,imgoutlet.*,imgsen.*,imgsto.*,imgtown.*,imgview.*##+js(aopr, CustomEvent) -imgdew.*,imgmaze.*,imgoutlet.*,imgtown.*,imgview.*##+js(aopr, exoJsPop101) -imgdew.*,imgmaze.*,imgtown.*,imgview.*##+js(aopr, ExoLoader.addZone) -imgmaze.*,imgtown.*##+js(aopr, popjs.init) -imgdew.*,imgmaze.*,imgoutlet.*,imgtown.*,imgview.*##+js(aopw, Fingerprint2) -imgdew.*,imgmaze.*,imgoutlet.*,imgtown.*,imgview.*##+js(nowoif) -dewimg.*,imgrock.*,imgviu.*,mazpic.*,outletpic.*,picrok.*##+js(nowoif) -*$script,frame,xhr,3p,domain=mazpic.*,denyallow=imgmaze.com -*$script,frame,xhr,3p,domain=picrok.*,denyallow=imgrock.net -*$script,frame,xhr,3p,domain=imgviu.*,denyallow=imgview.net -*$script,frame,xhr,3p,domain=outletpic.*,denyallow=imgoutlet.com -*$script,frame,xhr,3p,domain=dewimg.*,denyallow=imgdew.com -*$script,frame,xhr,3p,domain=imgtown.*,denyallow=imgtown.net -*$script,3p,domain=imgsen.com -@@||imgtown.*^$ghide -@@||imgmaze.*^$ghide -@@||imgoutlet.*^$ghide -@@||imgview.*^$ghide -/\/[0-9a-z]{5,9}\.js(\?[a-z]{3})?$/$script,domain=dewimg.*|imgtown.*|imgviu.*|mazpic.*|outletpic.*|picrok.* -dewimg.*,imgtown.*,imgviu.*,mazpic.*,outletpic.*,picrok.*##+js(acs, addEventListener, -0x) -dewimg.*,imgtown.*,imgviu.*,mazpic.*,outletpic.*,picrok.*##div[style^="z-index: 999999; background-image: url(\"data:image/gif;base64,"][style$="position: absolute;"] -dewimg.*,imgtown.*,imgviu.*,mazpic.*,outletpic.*,picrok.*##[href^="//"][rel="nofollow norefferer noopener"] -imgclick.net##+js(aopw, Fingerprint2) -imgclick.net##+js(noeval) -behindwoods.com###cboxOverlay -behindwoods.com###cboxWrapper -behindwoods.com###colorbox -behindwoods.com##.vedio-block -rojadirecta.*,tarjetarojatvonline.*##+js(aopw, closeMyAd) -rojadirecta.*,rojadirectatv.*,tarjetarojatvonline.*##+js(aopw, smrtSP) -capshd.*,rojadirectatvlive.*##+js(nowoif) -||misert.com^ -||behabs.com^ -||adblockenterpriseedition.com^ -@@||ekstrabladet.dk^$ghide -@@||adtech.de/dt/common/DAC.js$domain=ekstrabladet.dk -ekstrabladet.dk##.eb-placement -webnovel.com##+js(set, adblockSuspected, false) -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=webnovel.com -@@||totaldebrid.org^$ghide -*.gif#$image,redirect=1x1.gif,domain=totaldebrid.org -totaldebrid.*##+js(nostif, nextFunction, 250) -totaldebrid.org##+js(aeld, load, nextFunction) -streamwish.*##+js(set, xRds, true) -streamwish.*##+js(set, cRAds, false) -! Add filters to boost timers, for the reasoning read the link above -! Copied from https://github.com/NanoAdblocker/NanoFilters/blob/a57366bd7b42a31d25af47eefc031218826bcae0/NanoFiltersSource/NanoTimer.txt -al.ly,bbf.lt,cpmlink.net,cut-urls.com,eg4link.*,idlelivelink.*,igram.*,iiv.pl,shink.me,ur.ly,url.gem-flash.com,zeiz.me##+js(nano-sib) -globalbesthosting.com,srt.am##+js(nano-stb) -1ink.cc##+js(nano-sib) -1ink.cc##[id^="Ad"] -*$frame,domain=1ink.cc -freepdf-books.com##+js(nano-sib, myTimer, 1500) -@@||met.bz^$ghide -*.gif$domain=met.bz,image -met.bz##+js(noeval) -met.bz##+js(aopr, AaDetector) -hideout.*##+js(acs, stop, adblock) -@@||pastpapers.papacambridge.com^$ghide -pastpapers.papacambridge.com##[id^="aswift"] -mimaletadepeliculas.*##+js(aeld, load, advertising) -themeslide.com##+js(nano-sib, countdown, 2000) -themeslide.com##+js(nano-stb) -@@||aternos.org^$ghide -*$script,redirect-rule=noopjs,domain=aternos.org -@@||hb.vntsm.com/v2/live/$xhr,domain=aternos.org -@@||tlx.3lift.com/header/auction?$xhr,domain=aternos.org -@@||fastlane.rubiconproject.com/a/api/fastlane.json?$xhr,domain=aternos.org -@@||bidder.criteo.com/cdb?$xhr,domain=aternos.org -@@||hbopenbid.pubmatic.com/translator?source=prebid-client$xhr,domain=aternos.org -@@||mp.4dex.io/prebid$xhr,domain=aternos.org -@@||prg.smartadserver.com/prebid/v1$xhr,domain=aternos.org -@@||venatusmedia-d.openx.net/w/1.0/arj$xhr,domain=aternos.org -@@||adx.adform.net/adx/openrtb$xhr,domain=aternos.org -@@||htlb.casalemedia.com/cygnus?s=$xhr,domain=aternos.org -@@||prebid.a-mo.net/a/c$xhr,domain=aternos.org -@@||vntsm.com/*/ad-manager.min.js$script,domain=aternos.org -@@||hb.vntsm.io/content.html$xhr,domain=aternos.org -@@||securepubads.g.doubleclick.net/tag/js/gpt.js$script,domain=aternos.org -||aternos.org/panel/ajax/reportDetection.php?$xhr,1p -||aternos.org/ajax/account/report-detection$xhr,1p -||tech426.com^$3p -||ultra-rv.com^$3p -||atom-ds.com^$3p -||fastlane.rubiconproject.com^$removeparam,domain=aternos.org -||htlb.casalemedia.com^$removeparam=r,domain=aternos.org -@@||imasdk.googleapis.com/js/sdkloader/*$script,domain=video.gjirafa.com -gjirafa.com##[id^="gjc"] -gjirafa.com##[id^="an-holder"] -!video.gjirafa.com##+js(json-prune, 0) -||s3.amazonaws.com/dmas-public/revcontent/bundle.js -pcworld.com###amazon-bottom-widget -thedailywtf.com##.article-body > div:has(a[href*="utm_medium"]) -befap.com##+js(aopr, ExoLoader) -befap.com##+js(aopw, tiPopAction) -befap.com##.row-middle -tubemania.org##+js(nowoif) -||tubemania.org^$frame,1p -wp-time.com##a[href^="https://goo.gl/"]:has(img) -wp-time.com###pop-ad-wrap -#@#.reklama -~offmoto.com##.reklama:not(.ads) -cumlouder.com##+js(aopw, ExoLoader) -nme.com##.advert:style(z-index: -999999 !important;) -nme.com###wrapper:style(padding-top: 0 !important;) -idealhome.co.uk,look.co.uk##body > div#wrapper:style(padding-top: 0px !important;) -goodtoknow.co.uk,marieclaire.co.uk,womanandhome.com##.header-advert-wrapper -! mejortorrent.com popups -mejortorrent.*,mejortorrento.*,mejortorrents.*,mejortorrents1.*,mejortorrentt.*##+js(nowebrtc) -mejortorrento.*,mejortorrents.*,mejortorrents1.*,mejortorrentt.*##iframe[src^="publi"] -||mejortorrent.*/bannner -*$popunder,domain=xfreehd.com,3p -xfreehd.com##.nvheader > span:has-text(Advertisement) -*$frame,redirect-rule=noopframe,domain=xfreehd.com -xfreehd.com##.ad-body:remove() -||downloadfullfree.com^$xhr,redirect=nooptext -adsrt.*##+js(acs, atob, decodeURIComponent) -adsrt.*##+js(aopw, Fingerprint2) -adsrt.*##+js(aopr, rmVideoPlay) -adsrt.*##+js(set, blurred, false) -*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=adsrt.* -linclik.com##+js(set, blurred, false) -||kogaqmlci.com^ -rd.com##+js(acs, btoa, Adblock) -||uptostream.com/assets/ads.xml$xhr,domain=imasdk.googleapis.com -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js,domain=uptostream.com -1movies.*##+js(set, String.prototype.charCodeAt, trueFunc) -1movies.*##+js(set, check_adblock, true) -1movies.*##^script:has-text(3f87b0eaddd) -||1movies.*/sw.js$script,1p -||amgload.net^$xhr,redirect=nooptext,domain=1movies.* -||piguiqproxy.com^$xhr,redirect=nooptext,domain=1movies.* -1movies.*##a[href^="https://vpn-stream.com"] -1movies.*##+js(aopw, decodeURIComponent) -1movies.*##+js(nowoif) -@@||1movies.*/*.html$csp,1p -1movies.life##div[id^="___"][style="display: block;"] -bs.to,burningseries.*##+js(aeld, click, preventDefault) -*$popunder,3p,domain=bs.to|burningseries.* -bs.to,burningseries.*##+js(ra, onclick) -hentaigo.com##+js(aopr, loadTool) -hentaigo.com##+js(aopr, r3H4) -hentaigo.com##a[href*="//www.nutaku.net/signup/"] -lin-ks.*##+js(nano-sib) -streamfare.com##[id^="wb_AdText"] -||thebookee.net^$image,redirect-rule=1x1.gif,1p -@@||thebookee.net^$ghide -thebookee.net##ins.adsbygoogle -webdesigndev.com##+js(nowoif) -@@||schwaebische.de/*/ad$script,1p -schwaebische.de##+js(set, disasterpingu, false) -@@||schwaebische.de^$ghide -dz4soft.*##+js(noeval) -dz4soft.*##+js(aeld, load, 2000) -imageweb.ws##+js(nowoif) -||imageweb.ws/*.gif$image -imageweb.ws##a[href^="http://refer.ccbill.com/"] -hardcoreluv.com,imageweb.ws,pezporn.com,wildpictures.net##.box1[style^="height"] -stream2watch.*##+js(acs, atob) -stream2watch.*##+js(aopr, AdservingModule) -stream2watch.*##p[style="color:white;"] -stream2watch.*##.min-test -hindimean.com,streamcdn.*##+js(aopr, AaDetector) -hindimean.com##+js(nowebrtc) -streamcdn.*##+js(aopr, open) -wizhdsports.fi##+js(nowebrtc) -||stream2watch.*/sw.js$script,1p -! daddylive.live (.club .me .eu) popups -daddylive.*##+js(aopr, AaDetector) -daddylive.*##+js(aopr, require) -daddylive.*##+js(nowebrtc) -daddylive.*##+js(aopw, afStorage) -daddylive.*##^script:has-text(decodeURIComponent) -dlhd.sx##+js(aopw, u_cfg) -/adblock.php$script,domain=dlhd.sx -dlhd.sx##+js(nostif, (), 150) -||gocast2.com/z-$script,1p -||daddylive.*/*ads$frame,1p -||daddylive.*/sw.js$script,1p -gooals.*###mo-ads-close -daddylive.*###floatLayer1 -daddylive.*###html1 -daddylive.*##div > a.btn-outline-primary.btn -daddylive.link#@#+js(aopr, require) -cnnamador.com##+js(nostif, backRedirect) -cnnamador.com##+js(aeld, , pop) -cnnamador.com##+js(noeval) -cnnamador.com##.banner -||cnnamador.com/player/float.php -cnnamador.com##.is-ad-visible -cnnamador.com##+js(aopw, adv_pre_duration) -cnnamador.com##+js(aopw, adv_post_duration) -cnnamador.com##+js(aeld, /^(click|mousedown|mousemove|touchstart|touchend|touchmove)/, system.popunder) -cnnamador.com##.cards__item:has([href*="loboclick"]) -||cnnamador.com/sw.js$script,1p -||adsloboclick.com^ -dirpy.com##a[href*="bit.ly"] -dirpy.com##a[href*="out.dirpy.com"] -dirpy.com###dirpy-news -clix4btc.com##+js(set, adblock, false) -mp3guild.*,mp3clan.*##+js(aopw, Fingerprint2) -vidoza.net##+js(noeval) -vidoza.net##+js(nowoif) -vidoza.net##.in-block -vidoza.net###plo_0 -vidoza.net##[id*="ScriptRoot"] -vidoza.net##.simpleToast -vidoza.net##.download-green -*$image,redirect-rule=1x1.gif,domain=freeopenvpn.org -freeopenvpn.org##.ipspeed -freeopenvpn.org#@##advert_top -freeopenvpn.org##div[style^="display: block"][style*="width: 336px"] -@@||diariosur.es^$ghide -@@||diariovasco.com^$ghide -@@||elcomercio.es^$ghide -@@||elcorreo.com^$ghide -@@||eldiariomontanes.es^$ghide -@@||elnortedecastilla.es^$ghide -@@||hoy.es^$ghide -@@||ideal.es^$ghide -@@||larioja.com^$ghide -@@||lasprovincias.es^$ghide -@@||leonoticias.com^$ghide -||static.vocento.com/dab/*.js -diariovasco.com,eldiariomontanes.es,elnortedecastilla.es,hoy.es,ideal.es,larioja.com,lasprovincias.es,leonoticias.com##.voc-advertising -*$script,redirect-rule=noopjs,domain=spiegel.de -*$xhr,redirect-rule=noopjs,domain=spiegel.de -||doubleclick.net^$script,important,domain=spiegel.de -spiegel.de#@#.asset-affiliatebox -spiegel.de#@#.nativead -spiegel.de#@#.nativead + .headline-date -spiegel.de#@#a[href^="http://paid.outbrain.com/network/redir?"] -spiegel.de#@#a[href^="https://paid.outbrain.com/network/redir?"] -spiegel.de#@#a[data-nvp*="'trafficUrl':'https://paid.outbrain.com/network/redir?"] -spiegel.de#@#a[onmousedown^="this.href='https://paid.outbrain.com/network/redir?"] -spiegel.de#@#a[onmousedown^="this.href='http://paid.outbrain.com/network/redir?"] -||focus.de/src/js/spmsg$script,redirect=noopjs,1p -focus.de##.clearfix.branding > .surftipp:has-text(Anzeige) -focus.de##[href^="https://www.cyberport.de"] -@@||ariva.de^$ghide -||ariva.de/js/fcm-sw.js$script,1p -ariva.de##.werb_textlink -ariva.de###iqd_mainAd -haxmaps.com##+js(acs, ab1, ab2) -vsco.co##.page-wrap > section:has-text(Download the free) -@@||bittube.me/*/js/ads2.js$xhr,1p -generacionretro.net##+js(aeld, load, 2000) -arlinadzgn.com,idntheme.com##+js(aopw, hidekeep) -ma-x.org##+js(aeld, load, adb) -||waybig.com/*.gif$image -waybig.com##.aff-list -waybig.com##.content-aff -waybig.com##.aside-adds-col -! animeflv.net | animeflvnet.com | animeflv.ac | animeflv.cc | animeflv.la | animeflv.ru ads/popup -animeflv.*##+js(acs, jQuery, 'pp12') -*$script,3p,denyallow=cloudflare.com|cloudflare.net|cloudfront.net|disqus.com|disquscdn.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|jsdelivr.net|mega.nz|recaptcha.net,domain=animeflv.* -@@||animeflv.*/assets/vast/videojs$script,1p -||animeflv.*/api/pop.php -jkanime.*##+js(nowoif) -sfastwish.com##+js(aopr, __Y) -8tracks.com##+js(set, App.views.adsView.adblock, false) -nudecelebforum.com##+js(aopr, __ads) -nudecelebforum.com##+js(noeval) -nudecelebforum.com##+js(nostif, document.querySelectorAll, 1000) -nudecelebforum.com###floatingbar -@@||hyperdebrid.*^$ghide -hyperdebrid.*##+js(acs, decodeURI, atob) -pronpic.org##+js(aopr, document.createEvent) -pronpic.org##+js(aopw, ShowAdbblock) -pronpic.org##+js(nostif, style) -@@||visitweb.com^$script,domain=pronpic.org -||player.ooyala.com/*/ad-plugin/google_ima.min.js$script,important,redirect=noopjs,domain=nrl.com -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js,domain=nrl.com -@@||nrl.com^$ghide -nrl.com##[id^="publift-ad-"] -@@||ccbluex.net^$ghide -*/adsid/integrator.js$script,redirect=noopjs,domain=dl.ccbluex.net -||googlesyndication.com^$script,redirect=noopjs,domain=dl.ccbluex.net -thewebflash.com##+js(nostif, clientHeight) -chyoa.com##+js(aopr, __NA) -chyoa.com##+js(aopw, ExoLoader) -chyoa.com##.chyoa-banner -chyoa.com##.chyoa-adzone -3movs.com##+js(popads-dummy) -3movs.com##+js(noeval-if, ExoLoader) -3movs.com##+js(set, flashvars.adv_pause_html, '') -3movs.com##[src*="aid="] -3movs.com###player-pop-layer -||3movs.com/su4unbl-ssu.js -@@||seekingalpha.com^$ghide -||seekingalpha.com/boot_data.js$important -seekingalpha.com##[id^="ad-slot-"] -twitter.com,twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid.onion,x.com##[data-testid="trend"]:has-text(/Promoted|Gesponsert|Promocionado|Patrocinat|Sponsorisé|Sponsorizzato|Promowane|Promovido|Реклама|Uitgelicht|Sponsorlu|Promotert|Promoveret|Sponsrad|Mainostettu|Sponzorováno|Promovat|Ajánlott|Προωθημένο|Dipromosikan|Được quảng bá|推廣|推广|推薦|推荐|プロモーション|프로모션|ประชาสัมพันธ์|प्रचारित|বিজ্ঞাপিত|تشہیر شدہ|مُروَّج|تبلیغی|מקודם/):upward(1) -twitter.com,twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid.onion,x.com##div[style^="transform"] h2 > div[style^="-webkit-line-clamp"] > span:has-text(/^(?:Promoted Post|Promowany Post|Post promovat|プロモポスト)$/):upward(3) -popularmechanics.com##+js(nostif, addEventListener, 0) -@@||azlink.xyz^$ghide -azlink.xyz##+js(nano-sib) -! cricfree .io .live/xyz -cricplay2.xyz##+js(acs, setTimeout, admc) -xmovies8.*##+js(nowoif) -xmovies8.*##+js(aeld, /^(?:click|mousedown|mousemove|touchstart|touchend|touchmove)$/, system.popunder) -xmovies8.*##+js(set, check_adblock, true) -xmovies08.org##+js(aeld, , '0x) -xmovies8.*###upgrade_pop -||hipercontas.com.br^$3p -main-echo.de##div[id^="traffective-ad"] -divxtotal.*,divxtotal1.*##+js(acs, jQuery, btoa) -divxtotal.*,divxtotal1.*###banner_publi -broadwayworld.com##a[href^="https://ad.doubleclick.net/ddm/"] -op.gg##+js(aopw, lifeOnwer) -op.gg##+js(nostif, adblock, 2000) -op.gg##div[class^="css-"]:has(> div:not([class], [id]) > .vm-placement:not([style])) -op.gg##div[class^="css-"]:has(> div:not([class], [id]) > .vm-placement[data-display-type="hybrid-banner"]) -op.gg##[id^="div-gpt-ad"]:not([class]):upward(div[class]) -@@||doubleclick.net^$xhr,domain=op.gg -@@||vntsm.com^$xhr,domain=op.gg -@@||pagead2.googlesyndication.com^$xhr,domain=op.gg -birdsandblooms.com,bombshellbling.com,dorkly.com,dryscalpgone.com,eclypsia.com,familyhandyman.com,gala.fr,gentlemansgazette.com,homeschoolgiveaways.com,hotbeautyhealth.com,ketoconnect.net,mom4real.com,mynaturalfamily.com,oneessentialcommunity.com,pageflutter.com,printablecrush.com,psychologyjunkie.com,skinnyms.com,skintagsgone.com,stayglam.com,tasteandtellblog.com,thecelticblog.com,thecozyapron.com,theendlessmeal.com,thehappierhomemaker.com,thelovenerds.com,yellowblissroad.com##+js(acs, btoa, BOOTLOADER_LOADED) -thisisfutbol.com##+js(aopr, PerformanceLongTaskTiming) -pcwelt.de##+js(aopr, proxyLocation) -sixsistersstuff.com##+js(aopr, Int32Array) -moondoge.co.in##+js(ra, src, iframe#claimAd) -moondoge.co.in##iframe#claimAd:style(max-height:1px !important;max-width:1px !important) -moondoge.co.in##div.flexContentAd, .btn-sm.btn-coin, .flexBefore, .flexAfter -moondoge.co.in###advert-space > iframe:style(visibility: collapse !important) -moondoge.co.in##[src^="//coinad.com/ads/"]:style(visibility: collapse !important) -moondoge.co.in##.captchaAd:style(visibility: collapse !important) -||localbitcoins.com^$3p -revealname.com##+js(set, $.fx.off, true) -alphaporno.com##+js(aopr, ExoLoader) -alphaporno.com##+js(set, console.clear, noopFunc) -alphaporno.com,zedporn.com##.bnnrs-player -alphaporno.com,zedporn.com##.bottom-banners -alphaporno.com,zedporn.com##.block-banner -alphaporno.com##.movies-block > div[style*="text-align:center;"] -alphaporno.com,zedporn.com##.sponsor -||alphaporno.com/bravoplayer/custom/alphapornocom/scripts/inplaybn- -lequipe.fr##+js(nostif, start, 0) -@@||lequipe.fr/js/thirdparty/smarttag.js$script,1p -@@||lequipe.fr/js/thirdparty/prebid.js$script,1p -@@||lequipe.fr^$ghide -?zoneId=*&sponsor$frame -fcportables.com##+js(set, adsClasses, undefined) -fcportables.com##+js(set, gsecs, 0) -porntube.com##.relatedContainer -porntube.com##.col-md-3:has(> iframe[src^="/external"]) -||porntube.com/external/ -||porntube.com/nativeexternal/ -elrellano.com##+js(rmnt, script, deblocker) -elrellano.com##.widget_media_image -jeuxvideo.com##^script:has-text(wadsBlocking) -comunidadgzone.es##+js(nostif, nextFunction, 2000) -tubous.com##+js(aopr, popMagic.init) -tubous.com##+js(aopr, document.dispatchEvent) -||fuckandcdn.com/*/ads/ -||fuckandcdn.com/*/frms/ -tubous.com##.allIM -tubous.com###good_money -tubous.com##a.DarkBg -apurogol.net##+js(aopw, smrtSB) -apurogol.net##+js(aopw, smrtSP) -apurogol.net##[href="/stream/"] -apurogol.net###fakeplayer -||ichlnk.com^ -! freecoursesonline. me -freecoursesonline.*##+js(aeld, load, nextFunction) -globaldjmix.com##+js(aeld, /DOMContentLoaded|load/, y.readyState) -@@||globaldjmix.com^$ghide -pelisplus2.*##+js(acs, document.getElementsByTagName, onclick) -pelisplus.*##+js(aopr, AaDetector) -pelisplus.*,pelisplushd.*##+js(aopw, adcashMacros) -pelisplus.*##+js(aopw, smrtSP) -pelisplus.*##+js(aopw, smrtSB) -pelisplus.*,pelisplushd.*,pelispop.net,streampelis.club##+js(nowoif) -streampelis.club##+js(aopr, __Y) -pelisplus.*##+js(ra, href, #opfk) -pelisplus.*##[class^="smartadtags"] -pelisplus.*##.links > a.btn[class*="fa-"] -pelisplus2.*##[style^="margin:-30px"] > [href][target="_blank"] -||gotprofits.com^$3p -@@||whiskypreisvergleich.de^$ghide -@@||whiskyprices.co.uk^$ghide -@@||whiskyprijzen.*^$ghide -@@||whiskyprix.*^$ghide -whiskypreisvergleich.de,whiskyprices.co.uk,whiskyprijzen.be,whiskyprijzen.nl,whiskyprix.be,whiskyprix.fr##.blocker -jellynote.com##+js(nostif, byepopup, 5000) -||go.pub2srv.com/apu.php$script,redirect=noopjs -pouvideo.*,povvideo.*,povw1deo.*,povwideo.*,powv1deo.*,powvibeo.*,powvideo.*,powvldeo.*##+js(aopr, jwplayer.vast) -pouvideo.*,povvideo.*,povw1deo.*,povwideo.*,powv1deo.*,powvibeo.*,powvideo.*,powvldeo.*##+js(aopw, adcashMacros) -pouvideo.*,povvideo.*,povw1deo.*,povwideo.*,powv1deo.*,powvibeo.*,powvideo.*,powvldeo.*##+js(aopw, Fingerprent2) -pouvideo.*,povvideo.*,povvldeo.*,povw1deo.*,povwideo.*,powv1deo.*,powvibeo.*,powvideo.*,powvldeo.*##+js(aopw, Fingerprint2) -pouvideo.*,povvideo.*,povw1deo.*,povwideo.*,powv1deo.*,powvibeo.*,powvideo.*,powvldeo.*##+js(nano-stb, grecaptcha.ready, *) -pouvideo.*,povvideo.*,povw1deo.*,povwideo.*,powv1deo.*,powvibeo.*,powvideo.*,powvldeo.*##+js(nostif, test.remove, 100) -pouvideo.*,povvideo.*,povvldeo.*,povw1deo.*,povwideo.*,powv1deo.*,powvibeo.*,powvideo.*,powvldeo.*##+js(nowoif) -pouvideo.*,povvideo.*,povw1deo.*,povwideo.*,powv1deo.*,powvibeo.*,powvideo.*,powvldeo.*##+js(set, isAdb, false) -pouvideo.*,povvideo.*,povw1deo.*,povwideo.*,powv1deo.*,powvibeo.*,powvideo.*,powvldeo.*##[src^="/ben/mgnat.html?"] -pouvideo.*,povvideo.*,povw1deo.*,povwideo.*,powv1deo.*,powvibeo.*,powvideo.*,powvldeo.*###embed -pouvideo.*,povvideo.*,povw1deo.*,povwideo.*,powv1deo.*,powvibeo.*,powvideo.*,powvldeo.*###keepFloatin -pouvideo.*,povvideo.*,povw1deo.*,povwideo.*,powv1deo.*,powvibeo.*,powvideo.*,powvldeo.*##iframe:not([src*="recaptcha"]) -/jquery.notify.js$script,1p,domain=pouvideo.*|povvideo.*|povw1deo.*|povwideo.*|powv1deo.*|powvibeo.*|powvideo.*|powvldeo.* -ext=$script,1p,domain=pouvideo.*|povvideo.*|povw1deo.*|povwideo.*|powv1deo.*|powvibeo.*|powvideo.*|powvldeo.* -*$frame,3p,denyallow=google.com,domain=pouvideo.*|povvideo.*|povw1deo.*|powvibeo.*|povwideo.*|powv1deo.*|powvideo.*|powvldeo.*|povvldeo.* -*$script,3p,denyallow=googleapis.com|google.com|gstatic.com,domain=povvldeo.*|povvldeo.lol -@@player*.html$frame,1p,domain=pouvideo.*|povvideo.*|povw1deo.*|powvibeo.*|povwideo.*|powv1deo.*|powvideo.*|powvldeo.* -||wontent.powvideo.net^ -||zontent.powvideo.net^ -/js/fpu3/pu4.min.js -pcbolsa.com###ContenidoPubliCotiza -pcbolsa.com##.InfoPcBolsaAdBlock:xpath(..) -pcbolsa.com###ContenidoPubliCotizax1 -minecraftraffle.com##+js(acs, awm, location) -golfchannel.com##+js(set, adBlockEnabled, false) -@@||v.fwmrm.net^$xhr,domain=stream.golfchannel.com -downloadpirate.com##+js(aopw, Fingerprint2) -||downloadpirate.com/sw.js$script -reddit.com,reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad.onion##.size-compact.Post:has([class*="promoted"]) -reddit.com,reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad.onion##div[id*="sidebar"][data-before-content="advertisement"]:upward(3) -reddit.com,reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad.onion##div[class][data-before-content="advertisement"]:not([id]) -reddit.com,reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad.onion##div[class][data-before-content="Werbung"]:not([id]) -reddit.com,reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad.onion##[id^="t3"].promotedlink:upward(.rpBJOHq2PR60pnwJlUyP0 > div) -toyoheadquarters.com##+js(aopr, document.dispatchEvent) -insidemarketing.it##+js(aopr, adblock) -insidemarketing.it##.homeBannerMax -desiupload.*,9xupload.*##+js(nano-stb) -desiupload.*##+js(acs, getCookie) -desiupload.*###container > center > a[href*="?key="][target="_blank"] > img -||a2ztechworld.com^$3p -vermangasporno.com##+js(aeld, , _0x) -vermangasporno.com##+js(aopr, dataPopUnder) -vermangasporno.com##[href^="https://bit.ly"] -vermangasporno.com##[href*="http://www.ciberhentai.net"] -*$script,3p,denyallow=cloudflare.net|cloudfront.net|disqus.com|disquscdn.com|fastlylb.net,domain=vermangasporno.com -bdsmstreak.com##+js(aopr, ExoLoader.serve) -bdsmstreak.com##+js(aeld, , _blank) -*$script,3p,denyallow=cloudflare.com|cloudflare.net|fastly.net|fastlylb.net|fluidplayer.com|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|jsdelivr.net|recaptcha.net|twitter.com|x.com,domain=bdsmstreak.com -gamcore.com,porcore.com,69games.xxx##+js(nowoif) -gamcore.com,porcore.com,69games.xxx##+js(set, puShown, true) -gamcore.com,69games.xxx##[href*="/ads/"] -classic.gamcore.com##[id]:has(> .warningbox) -classic.gamcore.com###center > .flashes > .wide:has(> a[href][rel]) -gamcore.com##.item:has([href^="/games/"][class=""]) -gamcore.com##.item:has(> a[href] > img[src*="//cdn.69games.xxx/"]) -gamcore.com##.menuArea [rel] -gamcore.com##.row > .d-md-block -gamcore.com##.row > .d-lg-block.d-none -gamcore.com##.mycontainer > .d-lg-block.d-none > iframe -gamcore.com##.row > .game_view > .add_game iframe -gamcore.com###preloader_2 -gamcore.com##.side_flashes -gamcore.com##.wide.alphadelta_block -gamcore.com###ad_unter_spiel -gamcore.com###tvnotice -porcore.com##.adscolumn -porcore.com##[style^="width:728px;height:90px"] -porcore.com###videoitems.videoitems > .onevideothumb:has(> .clip-link > img[src^="/uploads/"][src$="gif"]) -porcore.com##[target="_blank"]:has([src*=".gif"]) -porcore.com##li > a[href*="/loader?"] -69games.xxx###footer -69games.xxx###right -69games.xxx###tvnotice -69games.xxx##[class^="leaderboard"] -69games.xxx##[id*="tvadbody"] -69games.xxx##[id^="center"] .I:has(> [class=""][href]) -69games.xxx##.side_flash -zazzybabes.com##+js(aeld, /error|canplay/, (t)) -*$frame,script,3p,denyallow=bootstrapcdn.com|cloudflare.com|cloudflare.net|fastly.net|fastlylb.net|getbootstrap.com|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|recaptcha.net|serverable.com|zencdn.net,domain=porcore.com|zazzybabes.com -@@||tm-offers.gamingadult.com/?offer=$frame,domain=gamcore.com|69games.xxx -://a.*/ipp?id=$script,3p -://a.*/loader?a=$frame,3p -/strip_ngn_2020_august$script,domain=porcore.com -||serverable.com/*.gif$image -cinedetodo.*##.alignnone -cinedetodo.*##.bnr -cinedetodo.*##[id*="yellow"] -||cda-online.pl/wp-content/uploads/*.js$script -aquipelis.*##+js(aopw, smrtSB) -aquipelis.*##+js(aopw, smrtSP) -aquipelis.net##[class^="adsbutt"] -eporner.com##+js(rmnt, script, /adb/i) -eporner.com##+js(aopw, EPeventFire) -eporner.com##+js(nostif, additional_src, 300) -*.xml$xhr,3p,domain=eporner.com -||eporner.com/js/bowser.php -||eporner.com/cppb/ -||eporner.com/dotm/ -eporner.com##.mb:has(> .adnative-1x1) -@@||arenavision.*^$ghide -arenavision.*##+js(nowoif) -||imgpfx.arenavision. -vintage-erotica-forum.com##+js(acs, __ads) -vintage-erotica-forum.com##+js(acs, setTimeout, ____POP) -vintage-erotica-forum.com##+js(nowoif) -htmlgames.com##+js(no-fetch-if, openx) -||yollamedia.com^ -||htmlgames.com/js/yolla.php -@@||yolla-d.openx.net/|$script,domain=cdn.htmlgames.com -cdn.htmlgames.com###afgContainer -siamfishing.com##+js(acs, is_noadblock, window.location) -tecknity.com##+js(set, ads_b_test, true) -@@||tecknity.com^$ghide -pornbimbo.com##+js(nostif, (), 2000) -@@||pornbimbo.com^$ghide -pornbimbo.com##[href^="https://ca.clcknads.pro"] -pornbimbo.com##.bottom-adv -pornbimbo.com##[src^="http://pornbimbo.com/player/html.php"] -/pu-placer.js -@@||bntech.io^$script,domain=buffalonews.com -momondo.com##+js(nowoif) -momondo.com##[onclick*="inline.ad"] -momondo.*##div[id$=-list] div[role=tab] -haaretz.co.il,haaretz.com##+js(aeld, load, hblocked) -haaretz.co.il,haaretz.com##+js(acs, $, AdBlockUtil) -haaretz.co.il,haaretz.com##+js(set, showAds, true) -avoiderrors.com##+js(nostif, css_class.show) -avoiderrors.com##.ai-viewport-1.code-block-3.code-block -avoiderrors.com##[href^="https://www.avoiderrors.com/robinhood"] -slate.com##+js(aeld, error, Adblocker) -slate.com##.slate-ad -4tests.com##+js(set, adblock, false) -@@||farmeramania.de^$ghide -farmeramania.de##+js(acs, $, show) -||sersh.com^ -guidedhacking.com##[href="https://guidedhacking.com/advertise"] -||guidedhacking.com/*banner$image -||guidedhacking.com/*.gif$image -theralphretort.com##+js(aopw, adBlockDetected) -||ads.puhutv.com/i.jpg$image,redirect=2x2.png -winfuture.de##+js(json-prune, adtagparameter, enabled) -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=winfuture.de -@@||widget.spoods.io/loader.js$script,domain=winfuture.de -@@||hdblog.it^$ghide -hdblog.it#@#.item_compra -hdblog.it#@#.box_flame -hdblog.it#@#.box_grampa_shadow -hdblog.it##[id^="google_ads_iframe"] -hdblog.it##.ads_container_top -hdblog.it##.ads_block -@@||hdmotori.it^$ghide -hdmotori.it##body:style(background: none !important; overflow: auto !important;) -hdmotori.it##+js(nostif, CANG, 3000) -hdmotori.it##.ads_block -hentai2read.com##+js(nowoif) -hentai2read.com##[target="_blank"]:has([src^="//"]) -hentai2read.com##[src^="data: ;base64,"] -||hentaicdn.com^*/NATORI.$script,3p -/\.com\/\d+/[0-9a-z]+\.js$/$script,1p,domain=hentai2w.com -||hentai2w.com/templates/default/js/ab.functions.js -||hentai2w.com/templates/default/js/arf- -hentai2w.com##+js(acs, Math.random, ExoLoader) -hentai2w.com##+js(aeld, getexoloader) -hentai2w.com##.arf-sec -hentai2w.com##.ark-noAB -megalinks.info##+js(aeld, DOMContentLoaded, adlinkfly) -megapaste.xyz###newlayercontent -||highstream.tv/twos.js -updato.com##+js(nostif, updato-overlay, 500) -lolhentai.net##+js(nowoif) -lolhentai.net##+js(aopr, loadTool) -lolhentai.net##.sponsor -||lolhentai.net/cornergirls.js -! ! adding sites using the same script -mangafreak.net##+js(nowoif) -mangafreak.net##+js(acs, setTimeout, document.querySelector) -||cdn.siteswithcontent.com/js/push/subscribe.js$script,important -||cdn.contentsitesrv.com/js/push/subscribe.js$script,important -mangafreak.net##[src^="/scripts/"] -memecenter.com##a[href$=".png"] -*$script,3p,denyallow=cloudflare.net|cloudfront.net|disqus.com|disquscdn.com|facebook.com|facebook.net|fastlylb.net|fbcdn.net|fontawesome.com|google.com|googleapis.com|gstatic.com|hwcdn.net|jquery.com|sharethis.com|unpkg.com|watchcartoonsonline.info|kisscartoon.info,domain=kiss-anime.* -kiss-anime.*###rightside > .clear2 ~ .rightBox -kiss-anime.*##.episodeList > div > div[style*="text-align: center"] -freepornvideo.sex,teenpornvideo.xxx##+js(aopr, ExoLoader.serve) -freepornvideo.sex##noindex -teenpornvideo.xxx##.aside-spots -tubsexer.*##.sponsored_top -tubsexer.*##.table -tubsexer.*##.desktop_link -tubsexer.*##+js(nostif, innerText, 2000) -tubsexer.*##.advertising -yourlust.com##+js(aopr, ExoLoader.serve) -yourlust.com##+js(aeld, getexoloader) -twitch.tv##+js(nowoif, amazon-adsystem) -||amazon-adsystem.com/aax2/apstag.js$script,domain=twitch.tv,important -||ddacn6pr5v0tl.cloudfront.net^ -twitch.tv##.stream-display-ad__wrapper -imx.to##+js(aopr, ExoLoader.serve) -crazyshit.com##+js(acs, jQuery, document.cookie) -||crazyshit.com/aff/$frame -strikeout.*##+js(nowoif, |) -strikeout.*##+js(acs, setTimeout, admc) -strikeout.*##.position-absolute:style(opacity: 0 !important;) -strikeout.*##.d-none.d-lg-block.col-lg-3 -strikeout.*##+js(acs, String.fromCharCode, 'shift') -strikeout.*##.m-1.btn-danger.btn -strikeout.*##.w-100.position-absolute.h-100 -*$image,redirect-rule=1x1.gif,domain=strikeout.* -plyjam.*##+js(set, attr, {}) -plyjam.*##+js(set, scriptSrc, '') -lejdd.fr##+js(aopr, SmartWallSDK) -peliculasmx.net###pbar_outerdiv -peliculasmx.net##.selected:has-text(Ads) -peliculasmx.net##+js(nowebrtc) -peliculasmx.net##+js(aopw, segs_pop) -##[href^="https://www.onclickperformance.com/"] -peliculasmx.net###pills-ads -peliculasmx.net###pills-ads-tab -ciberdvd.*##+js(nowoif) -ciberdvd.*##+js(aopw, smrtSB) -@@||windows10gadgets.pro^$ghide -elfqrin.com##+js(nostif, alert, 8000) -anonymousemail.me##+js(acs, document.getElementById, adblock) -porngem.com##+js(set, console.clear, noopFunc) -porngem.com##.video-right -porngem.com###player-pop-layer -porngem.com##.adv-in-video -porngem.com##.bottom-b-s -@@||e-komplet.dk^$ghide -@@||btc-echo.de^$ghide -btc-echo.de##.elementor-row:has-text([Anzeige]) -!#if env_chromium -||amazonaws.com/homad-global-configs.schneevonmorgen.com/global_config.json$xhr,redirect=nooptext,domain=fitforfun.de|golem.de|n-tv.de|wetter.de -||amazonaws.com/homad-global-configs-eu-fra.schneevonmorgen.com/global_config.json$xhr,redirect=nooptext,domain=desired.de -!#endif -n-tv.de##+js(set, Object.prototype.adReinsertion, noopFunc) -brigitte.de,stern.de##+js(set, Object.prototype.disableAds, true) -wetter.de##+js(no-xhr-if, homad-global-configs) -||amazonaws.com/homad-global-configs.schneevonmorgen.com/global_config.json$xhr,redirect=nooptext,domain=tele5.de -! ||damoh.tele5.de/*$media,redirect=noopmp3-0.1s,domain=tele5.de -kochbar.de##.ks-ad -kochbar.de##[data-adslot] -kochbar.de##.admanager -foxsports.com.au##+js(set, cxStartDetectionProcess, noopFunc) -thememypc.net##+js(aopr, Abd_Detector) -thememypc.net##+js(nano-sib, counter, 2000) -kinoger.*##+js(aopr, __Y) -cityam.com##+js(aopr, paywallWrapper) -thesimsresource.com##+js(set, isAdBlocked, false) -thesimsresource.com##+js(no-xhr-if, /enthusiastgaming|googleoptimize|googletagmanager/) -thesimsresource.com##.crtv-bottom-wrapper -thesimsresource.com##.pleasewaitad -xbabe.com##.bnnr -xbabe.com##.bnnrs-bottom -*$script,3p,denyallow=googleapis.com|hwcdn.net|fastly.net|jwpcdn.com,domain=xbabe.com -||akamaihd.net/vod/*$media,redirect=noopmp3-0.1s,domain=7tv.de -satcesc.com##+js(nostif, css_class) -||wpfc.ml/b.gif$image,redirect-rule=1x1.gif,domain=satcesc.com -pornoreino.com##+js(aopr, ExoLoader) -pornoreino.com##+js(aopr, open) -pornoreino.com##.banner -@@||dogefaucet.com^$ghide -dogefaucet.com##.loader -||a-ads.com^$frame,redirect-rule=noopframe,domain=dogefaucet.com -playretrogames.com##+js(nano-stb, ez, *, 0.02) -playretrogames.com##.adblock -shrt10.com##+js(aopr, open) -shrt10.com##+js(aopw, adcashMacros) -shrt10.com##+js(set, blurred, false) -*$script,3p,denyallow=cloudflare.com|google.com|gstatic.com|recaptcha.net,domain=shrt10.com -||dx-tv.com^$3p -@@||shrt10.com^$ghide -fxporn69.*##+js(aeld, click, exopop) -fxporn69.*##+js(set, adblock, noopFunc) -fxporn69.*##+js(nostif, nextFunction, 2000) -*$popup,domain=vipbox.*,3p -@@|about:blank|$popup,domain=vipbox.* -vipbox.*##a[href^="https://s3.amazonaws.com/"] -vipbox.*##button[data-open="_blank"] -vipbox.*##.btn-lg.btn -~vipbox.pl,vipbox.*,vipboxtv.*##.position-absolute -##[data-lnguri*="vipbox"] -*$image,redirect-rule=1x1.gif,domain=vipbox.* -@@||vipbox.*^$ghide -vipbox.*##.btn-success.btn -vipbox.*,viprow.*##+js(set, path, '') -vipbox.*,vipboxtv.*##+js(json-prune, *, *.adserverDomain) -vipbox.*,viprow.*##^script:has-text("admc") -vipbox.*,viprow.*##^script:has-text(\"admc\") -vipbox.*##+js(nowoif, , 10) -vipbox.*##+js(acs, JSON.parse, atob) -wkyc.com##+js(acs, btoa) -wkyc.com##.grid__sticky-column_side_left -crackllc.com##.onp-sl-content:style(display: block !important;) -crackllc.com##.onp-sl-social-locker -animeid.tv##+js(nowebrtc) -animeid.tv##[href^="http://play.leadzupc.com/"] -geo.fr##+js(aopw, $getWin) -tfc.tv##+js(aopw, adBlockDetected) -@@||tfc.tv/Scripts/*ads.js -gnomio.com##+js(no-xhr-if, /doubleclick|googlesyndication/) -@@||nba.com^$ghide -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=nba.com -@@||neulionms-a.akamaihd.net^$script,domain=nba.com -||ugdturner.com/xd.sjs$script,redirect-rule=noopjs,domain=nba.com -||clips-manifests-aka.warnermediacdn.com^$xhr,removeparam=caid,domain=nba.com -||akamaized.net/*.m3u8$xhr,3p,removeparam=csid,domain=nba.com -||akamaized.net/*.m3u8$xhr,3p,removeparam=pcaid,domain=nba.com -hotcopper.com.au##+js(acs, $, blockAds) -trekbbs.com##div[style^="width:970px"] -@@||popcornflix.com^$ghide -popcornflix.com##+js(json-prune, adEnabled) -hdbox.ws##+js(nostif, show) -@@||benkhouya.com^$script,domain=anonymousemail.me -timeforbitco.in##+js(set, adBlock, false) -@@||timeforbitco.in^$ghide -inmanga.com##+js(acs, setTimeout, manageAntiBlock) -designmodo.com##.onp-sl-content:style(display: block !important;) -designmodo.com##.onp-sl-social-locker -||ctrl.blog/ac/rba$frame,1p -ctrl.blog##+js(set, _ctrl_vt.blocked.ad_script, false) -ctrl.blog##.boxa -@@||adz.bz^$ghide -adz.bz###frameAd:style(height: 51 px !important; display: block !important; visibility: collapse !important;) -*/wp-content/plugins/adunblocker/*$script,1p -download.ipeenk.com##+js(aopw, adBlockDetected) -download.ipeenk.com##+js(aopw, Fingerprint2) -revivelink.com##+js(acs, Object.defineProperty, XMLHttpRequest) -sportlife.es##+js(set, blockAdBlock, noopFunc) -inhabitat.com##+js(aopr, registerSlideshowAd) -*$frame,domain=lusthero.com,3p -lusthero.com##+js(nostif, (), 50) -m4ufree.*##+js(nostif, debugger) -m4ufree.*,streamm4u.*##+js(nowebrtc) -m4ufree.*##+js(aopr, mm) -streamm4u.*##+js(aopr, AaDetector) -||caffeinecontainerakin.com^ -mega-dvdrip.*,peliculas-dvdrip.*##+js(aeld, DOMContentLoaded, shortener) -peliculas-dvdrip.*##+js(aopr, AdservingModule) -peliculas-dvdrip.*##[class*="col-"] > p > [href] > img.alignnone -megapastes.com##+js(aeld, DOMContentLoaded, adlinkfly) -megapastes.com##.content > center -@@||anime-update*.*^$ghide -@@||animedao*.*^$ghide -animedao.*##.gads -*$script,redirect-rule=noopjs,domain=animedao.* -@@||animedao*.stream^$script,1p -animedao.*##.ab -animedao.*##hr -avclub.com,clickhole.com,deadspin.com,earther.com,gizmodo.com,jalopnik.com,jezebel.com,kotaku.com,lifehacker.com,splinternews.com,theinventory.com,theonion.com,theroot.com,thetakeout.com##article.postlist__item:has(.meta__network) -!#if env_firefox -@@||amazon-adsystem.com/$script,domain=avclub.com|clickhole.com|deadspin.com|earther.com|gizmodo.com|jalopnik.com|jezebel.com|kotaku.com|lifehacker.com|splinternews.com|theinventory.com|theonion.com|theroot.com|thetakeout.com -!#endif -worldfreeware.com##+js(aopr, require) -@@||worldfreeware.com^$ghide -||tibiabr.com/$frame,1p -einthusan.*##+js(no-xhr-if, /^(?!.*(einthusan\.io|yahoo|rtnotif|ajax|quantcast|bugsnag))/) -@@||einthusan.*/prebid.js$script,1p -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=einthusan.* -@@||googletagmanager.com/gtm.js$xhr,domain=einthusan.tv -einthusan.*##.adspace-lb -einthusan.*##.adspace-lr -nuevos-mu.ucoz.com##+js(aeld, load, 2000) -@@||esradio.libertaddigital.com/ad/*$xhr,1p -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=esradio.libertaddigital.com -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=storage.oraclecloud.com -@@||storage.oraclecloud.com/*/smartclip-services/sc_player/$script,1p -esradio.libertaddigital.com###mega-atf -! Fix navbar being stuck in the middle of the page -dailydot.com##.dd-nav-global:style(top: 0 !important; transform: none !important;) -pornfay.*##+js(nowoif) -*$frame,domain=pornfay.* -pornfay.*##.rmedia -pornfay.*##.zone -||pvrtx.net^ -pornfay.*##.bottom-adv -finofilipino.org##+js(set, caca, noopFunc) -mypornstarbook.net##+js(aopr, ExoLoader.serve) -mypornstarbook.net##table > tbody > tr:has-text(Advertisement) -grantorrent.*,grantorrent1.*##+js(aopr, getUrlParameter) -grantorrent.*##+js(acs, onload, btoa) -grantorrent.*##+js(aopr, LieDetector) -grantorrent.*,grantorrents.*##+js(nano-stb) -grantorrent.*,grantorrent1.*##+js(aopw, Fingerprint2) -grantorrent.*,grantorrent1.*##+js(acs, decodeURI, decodeURIComponent) -grantorrents.*##.myButton -grantorrents.*##.custom-html-widget.textwidget > [style*="width:300px; height:600px"] -##[href*="passtechusa.com"] -desbloqueador.*##+js(aeld, mousedown, trigger) -desbloqueador.*##+js(set, Ok, true) -desbloqueador.*##+js(nowoif, given) -ddlvalley.*##+js(acs, decodeURI, getScriptFromCss) -ddlvalley.*##+js(aopw, Fingerprint2) -speedtest.net##+js(set, isBlocked, false) -speedtest.net##+js(aopr, _sp_) -speedtest.net#@#.pure-u-custom-ad-skyscraper -seehd.*##+js(acs, String.fromCharCode, 'shift') -||bokarsolutions.co.uk^$3p -mangaku.*##+js(nowebrtc) -mangaku.*##+js(acs, $, onclick) -*.gif$domain=mangaku.*,image -mac2sell.net##+js(no-fetch-if, method:HEAD) -xberuang.*##+js(set, safelink.adblock, false) -xberuang.*##+js(nano-sib) -@@||v.fwmrm.net/ad/g/$xhr,domain=mycanal.fr -goafricaonline.com##+js(aopr, goafricaSplashScreenAd) -@@||youmath.it/$script,1p -*$script,redirect-rule=noopjs,domain=youmath.it -youmath.it##+js(acs, document.getElementById, try) -youmath.it##+js(nostif, adb) -youmath.it##+js(no-xhr-if, /adnxs.com|onetag-sys.com|teads.tv|google-analytics.com/) -youmath.it###D_1 -youmath.it###C_1 -ashemaletube.com##+js(aopr, open) -ashemaletube.com##.ads-block-rightside -@@||ashemaletube.com^$ghide -||cc.ashemaletube.com/*/black-header.jpg$image -||cc.ashemaletube.com/*/header-black.jpg$image -ashemaletube.com##.video-end-overlay -*.mp4$media,redirect=noopmp3-0.1s,domain=ashemaletube.com -||cc.ashemaletube.com/*/black-main.jpg$image,1p -ashemaletube.com###site-wrapper:style(padding-top: 0 !important;) -ashemaletube.com##.header-ads-wrapper -@@/key=$media,domain=ashemaletube.com -ashemaletube.com##li[class]:has(a[href^="https://shemale.show/"][rel="sponsored"]) -ashemaletube.com##.js-toggle-content-wrapper a[href^="https://shemale.show/"][rel="sponsored"]:upward(.js-toggle-content-wrapper) -ashemaletube.com##.ads-wrapper -hotscope.tv##+js(nowoif) -hotscope.tv##[style^="transform"]:has(#videoHolder) -hotscope.tv##ul[style^="padding-top:"] -||hotscope.tv^$csp=script-src 'self' 'unsafe-inline' 'unsafe-eval' data: https://disqus.com *.disqus.com *.google-analytics.com *.disquscdn.com -||hotscope.tv/_next/static/chunks/pages/go-$script,1p -japanesefuck.com##+js(aopr, ExoLoader.serve) -*/wp-content/plugins/deadblocker/*$script,1p -todopolicia.com##+js(nostif, show) -poedb.tw##+js(aopr, importFAB) -@@||poedb.tw^$ghide -poedb.tw###bottombanner970 -poedb.tw###topbanner970 -poedb.tw##[target="_blank"]:has([src*="webp"]) -poedb.tw##.text-center:has([src*="webp"]):has([style]) -cine.to##+js(aeld, , 0x) -micloudfiles.com##+js(aeld, load, 2000) -micloudfiles.com##+js(acs, atob, tabunder) -micloudfiles.com##+js(nowoif) -micloudfiles.com##[href*="medbooksvn.org/"] -micloudfiles.com##[href*="usmlematerials.net/"] -||media.giphy.com^$image,domain=micloudfiles.com -||imgur.com^$image,domain=micloudfiles.com -||usmlematerials.net^$image,domain=micloudfiles.com -coinfaucet.io##+js(acs, atob, tabunder) -coinfaucet.io,freecardano.com,freenem.com##+js(nowebrtc) -@@||cloudstorageoptions.com^$ghide -cloudstorageoptions.com##ins.adsbygoogle -cloudstorageoptions.com##.adslot_left -cbc.ca##+js(aopw, xhr.prototype.realSend) -cbc.ca##.ad-risingstar-container -cbc.ca##.ad-container -! popups http://assia.tv/live/betsport/?lang=rs -assia.tv,assia4.com,assia24.com##+js(set, ClickUnder, noopFunc) -/css/*$frame,domain=assia.tv|assia4.com|assia24.com -/css/jquerymin*$script,1p,domain=assia.tv|assia4.com|assia24.com -assia.tv,assia4.com,assia24.com##[class*="ban"] -assia.tv,assia4.com,assia24.com##+js(nowoif) -dallasnews.com##+js(nostif, initializeCourier, 3000) -@@||courier-js.dallasnews.com^$script,1p -nulledteam.com##+js(acs, $, userAgent) -turbobit.net##+js(acs, decodeURI, decodeURIComponent) -turbobit.net##+js(aopr, open) -turbobit.net##+js(popads-dummy) -link.tl##+js(aopr, _0xbeb9) -link.tl##+js(nano-sib, , 1800) -||link.tl/interstitial/*$frame,1p -||link.tl/splash/*$script,1p -||lnk.news^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation -||lnk.parts^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation -lnk.news,lnk.parts##+js(aopr, popAdsClickCount) -lnk.news,lnk.parts##+js(nano-sib, , , 0) -lnk.news,lnk.parts##+js(nostif, redirectPage) -lnk.news,lnk.parts##.child-centered.display-300x250 -nzbstars.com##+js(acs, document.getElementById, adblocker) -nzbstars.com##[href="usenetbucket.php"] -||nzbstars.com/*.gif$image -@@||frkn64modding.com^$ghide -frkn64modding.com##+js(no-xhr-if, ad_) -frkn64modding.com##.ezoic-ad -accordo.it###bglink -||accordo.it/cloud-assets/x/sfondi/ -seatguru.com##+js(nowoif) -vixenless.com##+js(acs, azar, redirect) -camslib.com,camwhores.*,camwhorestv.*##+js(acs, onload) -camwhores.*,camwhorestv.*##+js(aeld, , Pop) -camwhores.*,camwhorestv.*##+js(aopr, _wm) -camwhores.*,camwhorestv.*##+js(aopr, loadTool) -camwhores.*,camwhorestv.*##+js(nowoif) -camwhores.*,camwhorez.tv##+js(set, flashvars.adv_pre_src, '') -camwhores.*,camwhorez.tv##+js(set, flashvars.adv_pre_url, '') -camwhores.*,camwhorez.tv##+js(set, flashvars.adv_pre_vast, '') -camwhores.*,camwhorez.tv##+js(set, flashvars.protect_block, '') -camwhores.*##+js(set, flashvars.video_click_url, '') -||camwhores.tv/contents/*/preroll$media,important,1p -||h-cdn.com/loader.js$script,domain=camwhores.tv -||lexozfldkklgvc.com^$3p -||virtwishmodels.com^$frame,3p -||cemiocw.com^$3p -camwhores.*,camwhorestv.*##.place -camwhores.*,camwhorestv.*##[href^="https://go.schjmp.com"] -camwhores.*,camwhorestv.*##.row-models -camwhores.*,camwhorestv.*##.topad -camwhores.*,camwhorestv.*###list_videos_friends -*pre-roll$media,redirect=noopmp4-1s,domain=camwhores.tv,important -/\/[0-9a-f]{12}\.js$/$script,1p,domain=camvideos.org|camwhores.* -bestialitytaboo.tv,bestialitysextaboo.com,mujeresdesnudas.club##+js(acs, $, azar) -bestialitysexanimals.com,bestialporn.com,mujeresdesnudas.club,mynakedwife.video##+js(aopr, open) -zootube1.com##+js(aopr, popunderSetup) -zootube1.com##+js(cookie-remover, da325) -zootube1.com##+js(aost, document.cookie, https) -videoszoofiliahd.com##+js(aopr, open) -videoszoofiliahd.com##+js(aeld, /^(?:click|mousedown)$/, popunder) -asiananimaltube.org,zoosex.pink##+js(nowoif) -videoszoofiliahd.com##[href^="https://redirect.ero-advertising.com/"] -allbestiality.com,beastwomans.com,beastzoo.org,bestialitysexvideos.com,bestialitytaboo.tv,bestialityworld.org,bestialporn.net,bestialzoo.*,fakingszoo.com,hispajotes.com,portalzoo.com,videosbizarre.com,zoofiliak9.com,zoofilianet.com,zoofiliataboo.com,zookings.com,zoosexnet.com,zoosexsite.com,zootubex.tv,zootubex.us##[href^="https://www.skypeis"] -porntopic.com##+js(aopr, loadTool) -||grtyb.com^$3p -xxxtubezoo.com,zooredtube.com##+js(aopr, popunderSetup) -xxxtubezoo.com,zooredtube.com##+js(aeld, DOMContentLoaded, preventExit) -hdbraze.com##+js(acs, Math.floor, hilltop) -||hdbraze.com/sw.js$script,1p -hdbraze.com##.ads -fapdig.com##+js(acs, document.createElement, 'script') -||fapdig.com/sw.js$script,1p -||pornbraze.com/popup.js -pornbraze.com##.adv-square -pornbraze.com/sw.js$script,1p -fembed.com##+js(aopr, decodeURI) -fembed.com##+js(aeld, /^(?:click|mousedown)$/, _0x) -fembed.com##+js(disable-newtab-links) -fembed.com##+js(nosiif, (), 500) -@@||fembed.com^$ghide -videos1002.com##+js(acs, $, azar) -videos1002.com##+js(aopr, jsPopunder) -ancensored.com,ganool.*##+js(aeld, /^(?:click|mousedown)$/, _0x) -ganool.*##+js(nowebrtc) -@@||boards.net^$ghide -@@||freeforums.net^$ghide -@@||proboards.com^$ghide -/tortoise.min.js$domain=boards.net|freeforums.net|proboards.com -boards.net,freeforums.net,proboards.com##+js(acs, $, vglnk) -boards.net,freeforums.net,proboards.com##[id^="ad-"], #remove_ads_link -proboards.com###ad1 -acortarm.xyz##+js(aeld, mousedown, trigger) -acortarm.xyz##+js(set, Ok, true) -||ref-dir.xyz^$popunder -inkapelis.*##+js(acs, setTimeout, aadblock) -inkapelis.*##+js(aopr, AaDetector) -inkapelis.*##+js(aopw, smrtSB) -inkapelis.*##+js(aopw, smrtSP) -inkapelis.*##+js(aopw, Fingerprint2) -inkapelis.*##+js(acs, decodeURI, decodeURIComponent) -||inkapelis.*/sw.js$script -cuevana3.*##+js(aopr, S9tt) -cuevana3.*##+js(aopr, decodeURI) -cuevana3.*##+js(aopw, popUpUrl) -player.cuevana.ac##+js(nowoif, , 10) -||player.cuevana.ac/cdn-cgi/trace$xhr,1p -yoututosjeff.*##+js(aopw, adBlockDetected) -yoututosjeff.*##+js(aeld, load, 2000) -||googlesyndication.com/pagead/$script,redirect=noopjs,domain=yoututosjeff.es -efukt.com##+js(aeld, click, preventDefault) -efukt.com##+js(nostif, _0x, 2000) -efukt.com##+js(aopr, open) -||syndication.twitter.com/i/jot$frame,domain=efukt.com,important -efukt.com##[href^="https://efukt.com/videos/naughty/"] -efukt.com##.hide_before:has([href*="?utm_source=efukt"]) -efukt.com##div.tile:has(a[href^="https://efukt.com/out.php"]) -efukt.com##.efukt-widget-slider-nice-try-adblockers -efukt.com##.plugs-nice-try-adblockers -gtaall.com##+js(nowebrtc) -gtaall.com##+js(aopr, Notification) -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=arlinadzgn.com|idntheme.com -fotbolltransfers.com##+js(aopr, adBlockDetected) -androidaba.*##+js(aopw, adBlockDetected) -ilpuntotecnico.com##[style^="text-align:center; height:"][style$="px;"] -@@||ilpuntotecnico.com^$ghide -a2zapk.*##+js(acs, atob, decodeURIComponent) -a2zapk.*##+js(aopr, AaDetector) -||a2zapk.*/js/notification.js -@@||a2zupload.com^$ghide -@@||googlesyndication.com/pagead/$script,domain=a2zupload.com -@@*$image,domain=a2zupload.com -a2zapk.*,a2zupload.com##ins.adsbygoogle -a2zapk.*,educatiocenter.online##+js(acs, $, alertmsg) -@@||dl.a2zapk.*/getred.php$xhr,domain=a2zapk.*|educatiocenter.online -@@||tmp.a2zapk.*/js/advertisement/$frame,domain=a2zapk.*|educatiocenter.online -||googlesyndication.com^$image,redirect-rule=1x1.gif,domain=a2zapk.*|educatiocenter.online -igg-games.com##+js(acs, addEventListener, document.createElement) -*$script,3p,domain=igg-games.com|bluemediafile.sbs,denyallow=cloudflare.com|fastcomments.com|googleapis.com|addtoany.com -igg-games.com##+js(aopw, btoa) -igg-games.com##+js(ra, srcdoc, iframe) -||igg-games.com/sw.js$script,1p -igg-games.com##[href^="https://tm-offers"] -@@||igg-games.com^$ghide -igg-games.com#@#.uk-panel.widget-text -igg-games.com##.uk-panel.widget-text:style(height: 0px !important; visibility: collapse;) -igg-games.com##.widget_advads_ad_widget -igg-games.com##a[href^="https://igg-games.com/c1flix"], a[aria-label="faadgg"], a[aria-label="fdgg"], a[aria-label="aswd"] -igg-games.com##.uk-margin-medium-top > *:first-child:has(img[src^="https://igg-games.com/wp-content/uploads/"]) -igg-games.com##.uk-margin-medium-top > *:first-child + a:has(img[src^="https://igg-games.com/wp-content/uploads/"]) -igg-games.com##article > a:has(img[loading="lazy"][width][height]) -igg-games.com###tm-sidebar > div:not([class], [id]):has(a[rel] > img[src^="https://igg-games.com/wp-content/uploads/"]) -igg-games.com##aside > :not(:first-child) a[href] img -igg-games.com##a[href$=".php"] -igg-games.com##a[href^="https://igg-games.com/"][href*="flix"] > img -||igg-games.com/wp-content/uploads/2024/02/hhh3.png$image -||igg-games.com/wp-content/uploads/2021/02/hh1.gif$image -||igg-games.com/wp-content/uploads/2024/02/naa1.jpg$image -||igg-games.com/wp-content/uploads/2024/02/aaa.jpg$image -||igg-games.com/wp-content/uploads/2024/02/sss.jpg$image -pcgamestorrents.com##[href*="banner"] -pcgamestorrents.org##[href*="/gameadult/"][href$=".php"] -||pcgamestorrents.com/*.gif$image -pcgamestorrents.com,pcgamestorrents.org##a[href^="https://pcgamestorrents."][href*="/cuskilo"] -pcgamestorrents.com,pcgamestorrents.org##a[href][aria-label="awed"] -pornrabbit.com##+js(nowoif) -||pornrabbit.com/sw.js$script,1p -pornrabbit.com##.stage-promo -pornrabbit.com##.footer-margin -pornrabbit.com##.table -camwhoresbay.com##+js(acs, readCookieDelit) -camwhoresbay.com##div.opt -camwhoresbay.com##.fake-player -camwhoresbay.com##.content > center:has([style="width:300px;height:250px"]) -@@||my5.tv^$ghide -gamepedia.com###bodyContent:style(width:100%!important) -gamepedia.com##[id^="siderail_"] -anon-v.com##+js(acs, atob, decodeURI) -anon-v.com##+js(acs, onload) -anon-v.com##.embed-container -anon-v.com##.place -anon-v.com##.sponsor -anon-v.com##.table -||cum-shows.net^$frame,3p -||cfgr2.com^ -||hrtya.com^ -||nudespree.com/a/av/live.php$frame -cartoonporno.xxx##+js(aopr, prPuShown) -cartoonporno.xxx##+js(nowoif) -@@||solvettube.com^$script,1p -you-porn.com,youporn.*,youporngay.com,youpornru.com##+js(set, page_params.holiday_promo, true) -youpornru.com##+js(nowoif) -you-porn.com,youporn.*,youporngay.com,youpornru.com##.ad-bottom-text -you-porn.com,youporn.*,youporngay.com##.adLinkText -you-porn.com,youporn.*,youporngay.com,youpornru.com##.adsbytrafficjunky -you-porn.com,youporn.*,youpornru.com##.e8-column -you-porn.com,youporn.*##[data-removelink="removeLink"] -you-porn.com,youporngay.com,youpornru.com###pb_template -you-porn.com##[id^="adblock"] -youpornru.com##.adLinkText -youpornru.com##[data-tracking="track-close-btn-ad"] -##.trafficjunky-float-right -redtube.*##+js(acs, Object.defineProperty, trafficjunky) -redtube.*##+js(nowoif) -redtube.*##+js(set, page_params.holiday_promo, true) -redtube.*##.abovePlayer -redtube.*##.adsbytrafficjunky -redtube.*##li:has(.adsbytrafficjunky) -redtube.*##.remove_ads -! mirror -9908ww.com,adelaidepawnbroker.com,bztube.com,hotovs.com,insuredhome.org,nudegista.com,pornluck.com,vidd.se##+js(set, page_params.holiday_promo, true) -! anti adb https://www.tvserial.it/the-generi-serie-tv-sky-maccio-capatonda-video/ -@@||tvserial.it^$ghide -@@||exmarketplace.com^$domain=tvserial.it -tvserial.it##.gptslot -foumovies.*##+js(aopw, decodeURIComponent) -fullywatchonline.com,myvidmate.*##+js(acs, atob, decodeURIComponent) -hubfiles.ws##+js(nowoif) -hubfiles.ws##+js(nano-stb) -moviescounter.*##+js(aopr, LieDetector) -moviescounter.*##+js(aeld, , _0x) -/watchbutton11.png$image -/download11.png$image -mydownloadtube.*##.movie-box > .vert-add -||vuwomoby.pro^ -douploads.*##+js(acs, $, show) -douploads.*##+js(ra, checked, input#chkIsAdd) -douploads.*##[href^="https://href.li/"] -||douploads.*/*sw$script,1p -@@||douploads.*^$ghide -douploads.*##a[rel="nofollow"] -@@||v.fwmrm.net/ad/*$script,domain=funimation.com -||mediausamns-a.akamaihd.net^$media,domain=funimation.com -funimation.com##+js(json-prune, adRenderers) -*$media,redirect=noopmp3-0.1s,domain=funimation.com -@@||media.truex.com/integration/vpaid/com.truex.TrueXRenderer.js$script,domain=funimation.com -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=funimation.com -@@||pubads.g.doubleclick.net/gampad/ads*.funimation.com*player$xhr,domain=imasdk.googleapis.com -autobild.de##+js(aopr, adSSetup) -alimaniac.com##+js(aopr, document.cookie) -hulkshare.com##+js(nosiif, adblockerModal, 1000) -springfieldspringfield.co.uk##+js(nostif, ads, 750) -mcoc-guide.com#@#ins.adsbygoogle[data-ad-slot] -mcoc-guide.com#@#ins.adsbygoogle[data-ad-client] -porngun.net##.video:not([id]) -mp3fy.com##+js(nostif, nextFunction, 2000) -ebookmed.*##+js(aeld, load, 2000) -@@||appvn.com^$ghide -appvn.com##.ads -appvn.com##.downloadtitle -appvn.com###info:style(display: block !important) -@@||worldofbitco.in^$ghide -worldofbitco.in,weatherx.co.in##+js(set, adBlock, false) -worldofbitco.in,weatherx.co.in##+js(set, spoof, noopFunc) -dailyfreebits.com##+js(acs, $, html) -@@||getyourbitco.in^$ghide -getyourbitco.in##+js(set, adBlock, false) -sbs.com.au##+js(set, adBlockerDetected, undefined) -sbs.com.au##+js(m3u-prune, /redirector\.googlevideo\.com\/videoplayback\?[\s\S]*?dclk_video_ads/, pubads.g.doubleclick.net/ondemand/hls/) -sbs.com.au##+js(no-xhr-if, /redirector\.googlevideo\.com\/videoplayback[\s\S]*?dclk_video_ads/) -sbs.com.au##+js(json-prune, ads breaks cuepoints times) -sbs.com.au##+js(rc, ad-controls, .bitmovinplayer-container.ad-controls) -||pubads.g.doubleclick.net/ondemand/hls/content/*/streams$xhr,redirect=noop.txt,domain=sbs.com.au -||redirector.googlevideo.com/*&source=dclk_video_ads&$redirect=noop.txt,domain=sbs.com.au,important,image,media,subdocument,stylesheet,script,xhr,other -@@||pubads.g.doubleclick.net/ondemand/hls/content/*/vid/*/streams$domain=sbs.com.au -@@||pubads.g.doubleclick.net/ssai/event/$xhr,domain=sbs.com.au -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$domain=sbs.com.au -sbs.com.au##^script:has-text(NREUM) -@@||sbs.com.au^$ghide -@@/ad/banner/_adsense_/_adserver/_adview_.ad.json$1p -@@||sbs.com.au/ondemand/ad/peel1.js$script,domain=sbs.com.au -*$script,3p,redirect-rule=noopjs,domain=sbs.com.au -@@||sbs.com.au^$xhr,1p -@@||dpm.demdex.net^$xhr,domain=sbs.com.au -sbs.com.au##+js(aopr, odabd) -neko-miku.com##+js(aeld, load, nextFunction) -||player.neko-miku.com/*slot$media,redirect=noopmp4-1s,domain=neko-miku.com -! http://www.subtorrents.io/series/the-durrells/ popups -subtorrents.*,subtorrents1.*##+js(aopr, capapubli) -subtorrents.*,subtorrents1.*##+js(aopr, getUrlParameter) -subtorrents.*,subtorrents1.*##+js(nowebrtc) -subtorrents.*,subtorrents1.*##+js(noeval) -subtorrents.*,subtorrents1.*##+js(popads-dummy) -subtorrents.*,subtorrents1.*##+js(set, btoa, null) -lordpremium.*##+js(aeld, load, nextFunction) -tranny.one##+js(popads-dummy) -tranny.one##+js(aopr, open) -tranny.one##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -tranny.one##.adsFirst -tranny.one##.adsSecond -tranny.one##.squarecont -||tranny.one/trannystatic/ads/ -pornhost.com##+js(aopw, encodeURIComponent) -loveroms.*##+js(acs, decodeURI, decodeURIComponent) -1xxx-tube.com,asssex-hd.com,bigcockfreetube.com,bigdickwishes.com,enjoyfuck.com,freemomstube.com,fuckmonstercock.com,gobigtitsporn.com,gofetishsex.com,hard-tubesex.com,hd-analporn.com,hiddencamstube.com,kissmaturestube.com,lesbianfantasyxxx.com,modporntube.com,pornexpanse.com,pornokeep.com,pussytubeebony.com,tubesex.me,vintagesexpass.com,voyeur-pornvideos.com,voyeurspyporn.com,voyeurxxxfree.com,xxxtubenote.com,yummysextubes.com##+js(aopr, Aloader.serve) -1xxx-tube.com,asssex-hd.com,bigcockfreetube.com,bigdickwishes.com,enjoyfuck.com,freemomstube.com,fuckmonstercock.com,gobigtitsporn.com,gofetishsex.com,hard-tubesex.com,hd-analporn.com,hiddencamstube.com,kissmaturestube.com,lesbianfantasyxxx.com,modporntube.com,pornexpanse.com,pornokeep.com,pussytubeebony.com,tubesex.me,vintagesexpass.com,voyeur-pornvideos.com,voyeurspyporn.com,voyeurxxxfree.com,xxxtubenote.com,yummysextubes.com##+js(noeval) -1xxx-tube.com###invideo_3 -enjoyfuck.com,pornokeep.com##.advin -fuckmonstercock.com##.znaipn -fuckmonstercock.com##.ztkady -kissmaturestube.com,yummysextubes.com##.block-a -pornexpanse.com##.banners_pl -pussytubeebony.com##div.banner-area -tubesex.me##.adban1 -||uii.io^$csp=script-src 'self' 'unsafe-inline' 'unsafe-eval' data: *.gstatic.com *.google.com *.googletagmanager.com *.recaptcha.net -uii.io##+js(noeval) -uii.io##+js(nowebrtc) -uii.io##+js(nowoif) -@@||uii.io^$ghide -*$frame,denyallow=google.com|hcaptcha.com,domain=uii.io -uii.io##.banner -uii.io##a[href^="https://href.li/"] -uii.io##a[href^="http://mob1ledev1ces.com/"] -uii.io##body > div[style]:has(input[type="button"]) -uii.io##div[style*="z-index:99999"] > div[style*="width:300px"] -!#if env_chromium -uii.io##+js(aeld, mouseup, _blank) -uii.io#@#+js(noeval) -!#endif -lebensmittelpraxis.de##+js(nostif, nextFunction, 2000) -telemundodeportes.com##+js(set, adBlockEnabled, false) -@@||v.fwmrm.net/ad/$xhr,domain=telemundodeportes.com -ojogos.com.br##+js(set, sp_ad, true) -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=witchhut.com -studopedia.org##+js(aopw, detectAdblk) -sheamateur.com##+js(aopr, __htapop) -nekopoi.*##+js(acs, atob, tabunder) -nekopoi.*##+js(aeld, , adsense) -nekopoi.*##[href^="http://bit.ly/"] -*.gif$domain=nekopoi.*,image -||d3jcjsor8fnmka.cloudfront.net^ -ccn.com##.widget:has-text(/advert|sponsor/i) -ccn.com##.row.divider:has-text(/sponsor|press releases/i) -vinaurl.*##+js(aopr, app_vars.force_disable_adblock) -vinaurl.*##+js(aopr, open) -vinaurl.*##+js(aopw, adsHeight) -vinaurl.*##+js(ra, onmousemove, button) -vinaurl.*##+js(set, blurred, false) -||dembuon.vn/lib/flies/flier.js$script,domain=vinaurl.* -||i.imgur.com^$image,domain=vinaurl.* -vinaurl.*###ads-notice -vinaurl.*##[href^="https://dembuon.vn"] -vinaurl.*##.alert-danger -vinaurl.*##[href^="https://kttm.club/"] -||vinaurl.*/*png -gamelopte.com##+js(nano-sib, yuidea-, *) -loptelink.com##+js(set, blurred, false) -loptelink.com##center > a[href^="https://loptelink.com/ref/"] > img -||googleusercontent.com/*/s320/download-button-gif-$domain=loptelink.com -powforums.com##+js(set, adsBlocked, false) -powforums.com##+js(nowoif) -@@||powforums.com/js/*$xhr,1p -usgamer.net##+js(set, _sp_.msg.displayMessage, noopFunc) -wallpapersmania.com##.js_disabled -wallpapersmania.com###cpa_wrap -megacams.me##+js(aeld, load) -@@||chaturbate.com/affiliates/$frame,domain=megacams.me -megacams.me#@#a[href^="https://chaturbate.com/affiliates/"] -@@||chaturbate.com^$popup,domain=megacams.me -sexviacam.com#@#a[href^="https://chaturbate.com/affiliates/"] -@@||chaturbate.com^$frame,domain=sexviacam.com -porndoe.com##+js(aopr, open) -porndoe.com##+js(aeld, click, pop_under) -porndoe.com##+js(nostif, location.href, 500) -||porndoe.com/movie/preroll/$media,1p -||porndoe.com/wp-contents/video?id=$frame -porndoe.com##.player-right -porndoe.com##.-h-ticker -##[href^="https://t.mobtyb.com/"] -naughtymachinima.com##+js(acs, __htapop) -naughtymachinima.com##.col-md-8 > a[href][target="_blank"] -||chaturbate.com^$frame,domain=naughtymachinima.com -!uploadbank.com##+js(aost, Math, /(?=^(?!.*(api|jquery|inlineScript|form|Progress)))/) -uploadbank.com###container > div[style="width:970px; height:200px;"] -uploadbank.com##+js(set, console.clear, noopFunc) -@@||uploadbank.com^$ghide -!uploadbank.com##+js(nowoif) -uploadbank.com###iframeCore____ -||uploadbank.com/js/abcode.js -||yousaidthewallow.info^$popup -filecrypt.*##+js(acs, decodeURIComponent, replace) -filecrypt.*##+js(acs, parseInt, open) -filecrypt.*##+js(aopr, __pop_debugX) -filecrypt.*##+js(set, isAdblock, false) -||filecrypt.*^$popunder -@@||cutcaptcha.com/captcha/*$script,domain=filecrypt.cc|filecrypt.co -filecrypt.*##div:has(> [href*=".html"]) -filecrypt.*###jvb -filecrypt.*##li:has-text(100% Anonym) -filecrypt.*##.bums -filecrypt.*##.support -filecrypt.*##[src^="https://filecrypt.cc/images/"] -filecrypt.*##[src^="../../../images/"] -filecrypt.*##[href^="/xux/"] -filecrypt.*##div[class] > i[style*="background:url"][onclick*="openLink"] -filecrypt.*##+js(ra, onclick, button[id][onclick*=".html"]) -filecrypt.*##div[class] > i[style][onclick] -filecrypt.*##button[id]:has-text(/High-speed/i) -sharer.pw###overlay -||pornblade.com/*.php -||twincdn.com^$3p,script,image -||pornblade.com^$xhr,1p -||pornfelix.com^$xhr,1p -hd-easyporn.com,pornblade.com,pornfelix.com##.vjs-overlayed -hd-easyporn.com,pornblade.com,pornfelix.com###wrapper_content > aside[id] -pornblade.com###e_v + aside[id] -*$xhr,3p,domain=hd-easyporn.com -hd-easyporn.com##[rel*="sponsored"] -||pornojenny.com/api/widget/$3p -/static/exnb/froload.js?v=$script,1p -asianxxxvideo.net##+js(aopw, ExoLoader) -asianxxxvideo.net##.a_all -asianxxxvideo.net##.play -channel4.com##+js(no-xhr-if, /\/ad\/g\/1/) -channel4.com##.advertsMpu -channel4.com##.block--mpu -webs.com.gt##+js(acs, jQuery, Adblocker) -filehorse.com##+js(set, isAdBlockActive, false) -@@||mygoroot.com^$ghide -@@||unlockvungtau.com^$ghide -gsm-solution.com##+js(aopr, _0x32d5) -gsm-solution.com###adblock-blocker-overlay -@@||motortrendondemand.com/advertisements-ad-unit/*$xhr,1p -ettv.*##+js(nowoif) -ettv.*##+js(aopr, AaDetector) -ettv.*##:xpath('//*[contains(text(),"VPN")]'):upward(2) -pelisgratis.*##+js(aopw, smrtSB) -pelisgratis.*##a[href*="look.kfiopkln.com"] -pelisgratis.*##a[href*="look.opskln.com"] -ver-pelis.*##+js(nowoif) -ver-pelis.*##+js(acs, decodeURI, decodeURIComponent) -newpelis.*,pelix.*##+js(aeld, , 0x) -newpelis.*,pelix.*##+js(set, btoa, null) -newpelis.*,pelix.*##+js(nowoif) -newpelis.*,pelix.*##+js(aeld, load, url) -newpelis.*,pelix.*##+js(aopw, smrtSB) -newpelis.*,pelix.*##+js(aopw, smrtSP) -pelix.*##+js(aopr, AaDetector) -pelix.*##+js(aopw, adcashMacros) -peliculas24.*##+js(acs, blur) -peliculas24.*##+js(aopw, smrtSB) -peliculas24.*##[href^="http://refpadsm.host/"] -topvideosgay.com##+js(aopr, open) -kissjav.*##.column:has(> .card > .adv) -kissjav.*##.is-12-touch.is-narrow-desktop.has-text-centered -kissjav.*##+js(aost, atob, _0x) -capo2play.com##+js(acs, document.createElement, onerror) -*$popup,domain=extremotvplay.com,3p -/skipad.png$image -ihackedgames.com##+js(aopr, decodeURIComponent) -yxzero.xyz##+js(aopr, adBlockDetected) -onlinevideoconverter.*##+js(nowoif) -@@||onlinevideoconverter.*^$ghide -onlinevideoconverter.*##.music-container > div[style] > a[href][target] > img -elsfile.org##+js(aeld, load, nextFunction) -pnd.*##+js(aopr, AaDetector) -pnd.*##+js(aopw, Fingerprint2) -pnd.*##A[href$=".html"][rel="nofollow norefferer noopener"] -pnd.*##.banner-captcha -freebitcoin.win##+js(aopr, adBlockDetected) -freebitcoin.win##+js(set, CaptchmeState.adb, undefined) -@@||freebitcoin.win^$ghide -freebitcoin.win##.wrapper > .section > .container > .row > div.d-md-block.d-none.col-md-3 -freebitcoin.win##.col-md-12 -||clprr.com^ -e-monsite.com##+js(set, CaptchmeState.adb, undefined) -coindice.win##+js(set, CaptchmeState.adb, undefined) -coindice.win##+js(aopr, adBlockDetected) -@@||coindice.win^$ghide -planet-explorers-isos.com##+js(set, adblock, false) -plusone8.com##+js(aopr, ExoLoader.serve) -plusone8.com###overlay-advertising -camvideos.tv##.thumbs-items -||bblivecams.com^$frame,3p -||gldrdr.com^$frame,3p -lanjutkeun.*##+js(aeld, load, 2000) -xrares.com##+js(acs, decodeURI, decodeURIComponent) -xrares.com##+js(disable-newtab-links) -xrares.com###linkedblok -xrares.com##.absd-body:not(.row + .well) -xrares.com##[href^="/plugout.php"]:upward([class^="col-sm"]) -||xrares.com/sw.js$script,1p -||shidurlive.com/adz*.html$frame -||tvbarata.club/ads/*$frame -@@||filmix.co^$ghide -||googleads.g.doubleclick.net/pagead/$xhr,redirect=nooptext,domain=filmix.co -||protovid.com/preroll/$media,redirect=noopmp3-0.1s,domain=filmix.co -adfloz.*##+js(nowoif) -adfloz.*##+js(set, blurred, false) -adfloz.*##.banner -aliancapes.*##+js(nostif, nextFunction, 2000) -radiotormentamx.com##+js(aeld, load, onload) -*/rellect/AdblockDetector/handler.min.js$script,important,redirect=noopjs -torrentz2eu.*##+js(aopr, glxopen) -torrentz2eu.*##+js(acs, decodeURI, decodeURIComponent) -torrentz2eu.*##+js(acs, $, open) -@@||sport-tv-guide.live^$ghide -sport-tv-guide.live##ins.adsbygoogle -*$frame,domain=sport-tv-guide.live,redirect-rule=noopframe -sport-tv-guide.live##+js(set, bb, false) -acienciasgalilei.com##+js(aeld, load, adverts-top-container) -22pixx.xyz##+js(ra, onclick, button[name="imgContinue"][onclick]) -22pixx.xyz##^script:has-text('shift') -22pixx.xyz##^script:has-text(\'shift\') -22pixx.xyz##+js(aopr, AdservingModule) -22pixx.xyz##+js(aopr, ExoLoader.addZone) -22pixx.xyz##+js(aopr, _pop) -22pixx.xyz##+js(ra, target, #continuetoimage > [href]) -22pixx.xyz##+js(ra, href|target, #continuetoimage > [href][onclick]\, #overlayera > #ajax_load_indicator > #page_effect > [href][onclick]) -22pixx.xyz##[class^="resp-container"] -*$frame,3p,domain=22pixx.xyz -smsget.net##+js(nostif, Adblock, 5000) -smsget.net##+js(nostif, disable, 200) -temp-mails.com##+js(acs, document.getElementById, AdBlock) -temp-mails.com##+js(set, indexedDB.open, trueFunc) -zigforums.com##+js(no-xhr-if, googlesyndication) -zigforums.com##+js(aopw, adsBlocked) -@@||zigforums.com/js/*$xhr,1p -kjanime.net##+js(nostif, CekAab, 0) -soft112.com##+js(nano-sib) -popmatters.com##+js(aopr, CatapultTools) -goto.com.np##+js(aopr, open) -goto.com.np##+js(nano-sib, timeLeft) -link.goto.com.np##.wpsafe-top > div > center:has-text(Advertisements) -*$frame,3p,domain=goto.com.np -undeniable.info##+js(acs, document.getElementById, testadblock) -transparentcalifornia.com##+js(set, $.magnificPopup.open, noopFunc) -klartext-ne.de##+js(acs, document.addEventListener, google_ad_client) -titsbox.com##+js(aeld, click, exopop) -titsbox.com##+js(nowoif) -*$script,3p,domain=titsbox.com -titsbox.com##[class*="banners"] -||titsbox.com/iframe/*_NTV_ -||titsbox.com/js/pns.min.js -zmovs.com##+js(nowoif) -zmovs.com##+js(aopr, ALoader) -||zmovs.com/js/pns.min.js -||zmovs.com/nb/ -spycock.com##+js(aopr, document.dispatchEvent) -spycock.com##+js(aopw, Fingerprint2) -spycock.com##+js(nowoif) -||spycock.com/coco/$script -spycock.com##.footer-banner-wrapper -spycock.com###advertising -jizz.us,spycock.com###alfa_promo_parent -jizz.us,spycock.com##.aside-itempage-col -||jizz.us/loco/$script -sandrives.*##+js(nostif, nextFunction, 250) -movies123.*##+js(nowoif) -0123movie.*,movies123.*##+js(aopr, AaDetector) -movies123.*##[href^="//himekingrow.com/"] -movies123.*###list-eps:style(display:block!important) -movies123.*##.les-title:has-text(HD) -movies123.*##.vip.server-item.le-server:first-child -freiepresse.de##+js(set, UhasAB, false) -icy-veins.com##+js(aopr, adbackDebug) -hiddenobjectgames.com##.banner -@@||v.fwmrm.net/ad/$script,domain=fxnetworks.com -@@||media.truex.com/release/*TrueXRenderer.js$script,domain=fxnetworks.com -files-save.com##+js(popads-dummy) -@@||files-save.com/Assets/Addon/Css/ads.css$css,1p -@@||fordclub.eu^$ghide -tetris.com##.horizontalAxContainer -tetris.com##div[class^="verticalAxContainer"] -girlsgogames.co.uk##+js(aopr, googletag) -||cdn.witchhut.com^$script,domain=ejocuri.ro|gamesheep.com|girlg.com|girlsplay.com|jocurifete.ro|playpod.com -! added sites using the same ad-reinsertion script -anallievent.com,au-di-tions.com,badgehungry.com,beingmelody.com,bloggingawaydebt.com,casutalaurei.ro,cornerstoneconfessions.com,culture-informatique.net,dearcreatives.com,disneyfashionista.com,divinelifestyle.com,dna.fr,eslauthority.com,estrepublicain.fr,fitting-it-all-in.com,heresyoursavings.com,irresistiblepets.net,julieseatsandtreats.com,justjared.com,lecturisiarome.ro,lemonsqueezyhome.com,libramemoria.com,lovegrowswild.com,magicseaweed.com,measuringflower.com,mjsbigblog.com,mommybunch.com,mustardseedmoney.com,myfunkytravel.com,onetimethrough.com,panlasangpinoymeatrecipes.com,silverpetticoatreview.com,the-military-guide.com,therelaxedhomeschool.com,the2seasons.com,zeroto60times.com##+js(aopr, __eiPb) -adivineencounter.com,alcasthq.com,au-di-tions.com,badgehungry.com,bloggingawaydebt.com,chipandco.com,cornerstoneconfessions.com,dearcreatives.com,divinelifestyle.com,eslauthority.com,heresyoursavings.com,investingchannel.com,irresistiblepets.net,justjared.com,kompas.com,lovegrowswild.com,mjsbigblog.com,mommybunch.com,mustardseedmoney.com,myfunkytravel.com,mywomenstuff.com,onetimethrough.com,panlasangpinoymeatrecipes.com,peru21.pe,savespendsplurge.com,savvyhoney.com,silverpetticoatreview.com,tamaratattles.com,the-military-guide.com,the2seasons.com,therelaxedhomeschool.com,thetechieguy.com,truesteamachievements.com,truetrophies.com,waterheaterleakinginfo.com,zeroto60times.com##^script:has-text(axtd) -justjared.com,truetrophies.com##+js(acs, setTimeout, isIframeNetworking) -truetrophies.com##+js(aopr, $pxy822) -truetrophies.com##^script:has-text(isIframeNetworking) -alcasthq.com##+js(aopr, performance) -alcasthq.com##+js(acs, Math.floor, axtd) -cut-fly.com##+js(nowoif) -cut-fly.com##+js(set, blurred, false) -cut-fly.com##.banner-inner -cut-fly.com##form#go-popup:remove() -gioialive.it##+js(nostif, rbm_block_active, 1000) -investing.com##+js(no-fetch-if, ads) -investing.com##[class^="outbrain_outbrain-wrapper"] -investing.com##[class*="adBlock"] -investing.com##[class*="overlay_overlay"] -investing.com##body:style(overflow: auto !important) -investing.com###__next > .fixed -||investing.com/*/ad-notification-popup -investing.com##[class^="ad-notification"] -investing.com##[id^="adNotification"] -investing.com##+js(set, adNotificationDetected, false) -investing.com##[class*="notification_notification"] -investing.com##div[class]:has(> :is(.ad-blockers-section, [class*="adNotification"])) -investing.com##.border-b:has(> .box-content[data-test="ad-slot-visible"]) -ausfile.com##+js(aopw, Fingerprint2) -ausfile.com##+js(aopw, SubmitDownload1) -ausfile.com##+js(nano-stb) -@@||ausfile.com^$ghide -ausfile.com##ins.adsbygoogle -femdomtb.com##+js(nostif, innerText, 2000) -femdomtb.com##+js(aopr, open) -femdomtb.com##.bannerImage -femdomtb.com##div.opt -femdomtb.com##.place -@@||voirfilms.*^$ghide -voirfilms.*##+js(aopw, smrtSB) -voirfilms.*##+js(nowoif) -voirfilms.*##.lefermeur -voirfilms.*##+js(acs, atob, decodeURIComponent) -||voirfilms.*/sw.js -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=coolgames.com -@@||g.doubleclick.net/pagead/managed/js/gpt/*/pubads_impl.js$domain=games.coolgames.com -classicreload.com##.ad-wrapper:upward(div.region-sidebar-first-wrapper) -classicreload.com##+js(nostif, show()) -classicreload.com##.content-top-wrapper -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=stickgames.com -senmanga.com##+js(aopr, AaDetector) -senmanga.com##[class*="banner"] -*$script,3p,domain=senmanga.com -mimaletamusical.blogspot.com##+js(nowebrtc) -mimaletamusical.blogspot.com##+js(aeld, load, 2000) -||cdn.rawgit.com^*/arlinablock.js$script -||cdn.rawgit.com^*/AdblockRampok.js$script -@@||faucetcrypto.com^$ghide -||faucetcrypto.com/ads/$frame -faucetcrypto.com##+js(no-fetch-if, googlesyndication) -faucetcrypto.com##+js(nosiif, user=null, 1000) -faucetcrypto.com##.vs-dialog-danger.con-vs-dialog.vs-component -*$frame,redirect-rule=noopframe,domain=faucetcrypto.com -linkfinal.com##+js(set, blurred, false) -linkfinal.com##.banner -linkfinal.com##.blog-content -hotpornfile.org##+js(aopw, getIfc) -hotpornfile.org##+js(aeld, getexoloader) -*$popunder,domain=hotpornfile.org -hotpornfile.org##+js(nostif, _0x) -search.crowdsearch.net#@##adslot1 -hotpornfile.org##+js(set, adblockcheck, false) -hotpornfile.org##+js(nowoif, !bergblock, 10) -@@||searchwithme.net/redirect?tid=$frame,domain=hotpornfile.org -||hotpornfile.org/wp-content/themes/hpf-theme/assets/img/search-ash.gif$image -moviejones.de##+js(acs, document.getElementById, overlayBtn) -hackyouriphone.org##.labeladv -donnaglamour.it##+js(aopw, adBlockRunning) -donnaglamour.it##.banner_contest -@@||globaltv.com^$ghide -globaltv.com##.adChoices_overlayContainer -globaltv.com##.adTile -globaltv.com##.dynamic-ad-wrapper -globaltv.com##.footerAd-wrapper -globaltv.com###_evidon_banner -repelisgoo.*,repelisgooo.*,repelisgt.*,repelisxd.*,pelisplusgo.*,pelisplusxd.*###ads -repelisgoo.*,repelisgooo.*,repelisgt.*,repelisxd.*,pelisplusgo.*,pelisplusxd.*##div[class]:has(> div[class] > iframe[src*="/srv-pv/tag-"]) -pelisplus.online##+js(aopw, mz_str) -pelisplus.online##+js(aopr, popjs.init) -pelisplus.online##a.fasc-button -pelisplus.online###custom_html-7 -cine24.online##+js(nowoif) -cine24.online###publicidad-video -@@||cine24.online^$ghide -tornadomovies.*##+js(set, atob, noopFunc) -||tornadomovies.*/sw.js$script -tornadomovies.*##[href="/user/premiumregistration"] -avgle.com###player_3x2_close:style(opacity: 0 !important; height: 300px !important;) -avgle.com###ps32-container -*$3p,popup,domain=avgle.com -*$frame,script,3p,denyallow=cloudflare.com|cloudflare.net|google.com|gstatic.com|hcaptcha.com|jsdelivr.net|recaptcha.net|webflow.com,domain=avgle.com -javher.com###popunderLink -javher.com##.affiliate-card-container -sexwebvideo.*##+js(aeld, , _blank) -sexwebvideo.*##+js(set, flashvars.popunder_url, '') -@@||sexwebvideo.*^$ghide -sexwebvideo.*##.spot-vertical-wrap -*banner$domain=sexwebvideo.*,frame -novelasesp.*##+js(aeld, load, 2000) -playrust.io##+js(aeld, , Date) -supforums.com##+js(set, adsBlocked, false) -supforums.com##+js(aopr, htaUrl) -||booking.com^$popunder,domain=viamichelin.* -mp3fiber.com##+js(aeld, /^(?:click|mousedown)$/, _0x) -mp3fiber.com##+js(aeld, load, nextFunction) -mp3fiber.com##+js(set, _pop, noopFunc) -chicoer.com##+js(nostif, n.trigger, 1) -chicoer.com##+js(set, CnnXt.Event.fire, noopFunc) -visionias.net##+js(aeld, load, 2000) -*.gif$domain=www.visionias.net,image -tennisactu.net##+js(acs, document.getElementById, ads) -xrivonet.info##+js(aopw, Fingerprint2) -xrivonet.info##+js(aeld, /^(?:click|mousedown)$/, _0x) -xrivonet.info##+js(nowebrtc) -xrivonet.info##+js(nowoif) -suedkurier.de##+js(set, _ti_update_user, noopFunc) -gounlimited.to##+js(acs, $, adb) -gounlimited.to##+js(nowoif) -gounlimited.to##+js(nowebrtc) -animeheaven.*##+js(set, check_adblock, true) -||animeheaven.*/api/pop.php$xhr,1p -payskip.org##+js(aeld, DOMContentLoaded,  ) -payskip.org##+js(aopw, atOptions) -payskip.org##+js(set, blurred, false) -payskip.org##+js(ra, onclick) -||payskip.org/sw.js$script,1p -||payskip.org/VLC.php$frame,1p -payskip.org##.box-main center > a[href][target="_blank"] > img -payskip.org##center > center -payskip.org###link-view > p -payskip.org###link-view a[href] > img -*$script,3p,denyallow=cloudflare.com|cloudflare.net|google.com|gstatic.com|jsdelivr.net|recaptcha.net|tawk.to,domain=payskip.org -@@||shortit.pw^$ghide -shortit.pw##+js(nowoif) -shortit.pw##+js(set, console.clear, noopFunc) -shortit.pw##+js(set, valid, 1) -||allcoins.pw/js/ref.js -||shortit.pw/js/adbb.js -pirateproxy.*##+js(nowebrtc) -pirateproxy.*,thehiddenbay.com##+js(acs, String.fromCharCode, decodeURIComponent) -pirate.*,piratebay.*,pirateproxy.*,proxytpb.*,thepiratebay.*##+js(aeld, /^(?:click|mousedown)$/, _0x) -piratebay.*##+js(aopr, AaDetector) -pirateproxy.*##+js(acs, Object.defineProperty, document.body.appendChild) -piratebay.*,pirateproxy.*##[href]:has-text(PLAY) -||nfkd2ug8d9.com^ -pirateproxy.*,thehiddenbay.com###content > div > iframe -vidcloud.*##+js(nowoif) -vidcloud.*##+js(aopr, BetterJsPop) -vidcloud.*##+js(aopr, decodeURI) -vidcloud.*##+js(aopw, adBlockDetected) -vidcloud.*##+js(aopr, __Y) -vidcloud.*###overlay-center -@@||adinplay.com/libs/aiptag/assets/adsbygoogle.js^$xhr,domain=devast.io -devast.io###advert -imgrock.*##+js(aopr, CustomEvent) -imgrock.*##+js(aopr, popjs.init) -imgrock.*##+js(aopw, Fingerprint2) -imgrock.*##+js(nano-stb, /.?/, 4000) -imgrock.*##+js(popads-dummy) -imgrock.*##+js(popads.net) -@@||imgrock.*^$ghide -imgtorrnt.in##+js(aopr, ExoLoader.serve) -imgtorrnt.in##+js(aopr, document.dispatchEvent) -imgtorrnt.in##+js(aeld, , _0x) -imgtorrnt.in##[id*="Banner"] -||ddns.net/*.php$frame -*$frame,3p,domain=imgtorrnt.in -*$popunder,3p,domain=imgtorrnt.in -imgtorrnt.in##.bannerImage -*.gif$domain=imgtorrnt.in,image -webbro.*##+js(aopr, AaDetector) -@@||webbro.*^$ghide -javhay.net##.title-most-views:first-child -javhay.net###logoplayer -iframejav.*##+js(nowoif) -iframejav.*##+js(aopr, __Y) -anysex.com##+js(set, vastAds, []) -anysex.com##+js(aopr, ExoLoader) -anysex.com##+js(aopr, document.dispatchEvent) -anysex.com##+js(aopr, console.clear) -anysex.com##+js(aopr, decodeURI) -anysex.com##[class^="content"] > .no_pop -anysex.com###content > .naf_dd -anysex.com##+js(aopr, setExoCookie) -||nwch.az-cdn.ch^$script,domain=solothurnerzeitung.ch -gocurrycracker.com##+js(aopr, encodeURIComponent) -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=gentside.*|maxisciences.com|ohmymag.* -!*$script,redirect-rule=noopjs,domain=gentside.*|gentside.com|gentside.de|gentside.co.uk|maxisciences.com|ohmymag.com|ohmymag.de|ohmymag.co.uk,3p -@@||maxisciences.com/js/amazon/$script,domain=maxisciences.com -@@||googletagservices.com/tag/js/gpt.js$script,domain=gentside.*|maxisciences.com|ohmymag.* -@@*/assets/prebid/$script,xhr,1p,domain=gentside.*|maxisciences.com|ohmymag.* -@@||securepubads.g.doubleclick.net/tag/js/gpt.js$script,domain=gentside.*|ohmymag.* -@@||securepubads.g.doubleclick.net/*/pubads_impl.js$script,domain=gentside.*|ohmymag.* -@@||cdn.adsafeprotected.com^$script,domain=gentside.*|ohmymag.*|maxisciences.com -@@||pixel.adsafeprotected.com/services/pub$xhr,domain=gentside.*|ohmymag.*|maxisciences.com -@@||btloader.com/tag?h=prismamedia-com&upapi=true$script,domain=maxisciences.com|gentside.*|ohmymag.* -@@||js-sec.indexww.com/$script,domain=maxisciences.com|gentside.*|ohmymag.* -@@||prismamedia-com.videoplayerhub.com/galleryplayer.js$script,domain=maxisciences.com|gentside.*|ohmymag.* -@@||tra.scds.pmdstatic.net/advertising-core/$script,domain=gentside.*|gentside.com|gentside.de|gentside.co.uk|maxisciences.com|ohmymag.com|ohmymag.de|ohmymag.co.uk -thurrott.com##+js(acs, $, adblockDetected) -icdrama.*,vlist.se##+js(set, adblock, 1) -icdrama.*###closeADV -streamdreams.org##+js(aopr, exoJsPop101) -wowescape.com,games2rule.com,bigescapegames.com##.col-12:has(> .adsbyvli) -wowescape.com,games2rule.com,bigescapegames.com##.col-12:has(> .adsbygoogle) -wowescape.com,games2rule.com,bigescapegames.com##div.border_radius:has-text(Advertisement) -wowescape.com##+js(no-fetch-if, adsbygoogle) -wowescape.com###gameplay > iframe:style(display: block !important;) -wowescape.com###preroll -duellinksmeta.com##+js(noeval) -*$script,redirect-rule=noopjs,domain=duellinksmeta.com -@@||cdn.intergi.com/hera/*$xhr,domain=duellinksmeta.com -@@||cdn.intergient.com^$script,xhr,domain=duellinksmeta.com -@@||duellinksmeta.com^$1p -@@||duellinksmeta.com^$ghide -duellinksmeta.com##.advertisement-box -duellinksmeta.com##.ad-slot -pornve.com##+js(set, frg, 1) -pornve.com##+js(nowoif) -pornve.com###blockblockB:style(display: block!important;) -pornve.com###blockblockA -pornve.com###close-teaser -seselah.com##+js(aopw, adBlockDetected) -venstrike.jimdofree.com##+js(aeld, load, nextFunction) -@@||programasve.blogspot.com^$ghide -maxcheaters.com##.esPopupWrapper -maxcheaters.com##.b-modal -@@||maxcheaters.com/uploads2/country/*.gif$image -maxcheaters.com##.ipsContained.ipsImage -maxcheaters.com##+js(nostif, adblock) -mivo.com##.ads -sportsplays.com##+js(nostif, abDetected) -rmdown.com##+js(aopw, open) -rmdown.com##.container td[bgcolor="white"] > a[target="_blank"] -*$image,3p,redirect=1x1.gif,domain=rmdown.com -dailybreeze.com,dailybulletin.com,dailynews.com,delcotimes.com,eastbaytimes.com,macombdaily.com,ocregister.com,pasadenastarnews.com,pe.com,presstelegram.com,redlandsdailyfacts.com,reviewjournal.com,santacruzsentinel.com,saratogian.com,sentinelandenterprise.com,sgvtribune.com,tampabay.com,times-standard.com,theoaklandpress.com,trentonian.com,twincities.com,whittierdailynews.com##+js(set, CnnXt.Event.fire, noopFunc) -*$script,domain=delcotimes.com|macombdaily.com|santacruzsentinel.com|saratogian.com|theoaklandpress.com|trentonian.com,redirect-rule=noopjs -*$image,domain=delcotimes.com|macombdaily.com|santacruzsentinel.com|saratogian.com|theoaklandpress.com|trentonian.com,redirect-rule=2x2.png -ocregister.com##a[href^="http://www.webpublished.com"] -@@||mobinozer.com^$ghide -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=mobinozer.com -pixlr.com###workspace:style(right: 0px !important;) -pixlr.com###right-space -schoener-wohnen.de##+js(aopr, _sp_._networkListenerData) -! http://www.gamesgames.com/game/mahjong-quest anti adb -@@||gamesgames.com^$ghide -savemedia.*##+js(nowoif) -watchhouseonline.net##+js(aopr, decodeURI) -watchhouseonline.net###custom_html-2 -linkedin.com##.ad-banner-container -||2mdn.net^$media,redirect=noopmp4-1s,domain=games2rule.com -||youtube.com/get_video$media,redirect=noopmp4-1s,domain=games2rule.com -@@||googleads.g.doubleclick.net/pagead/*games2rule$xhr,domain=imasdk.googleapis.com -games2rule.com##embed:style(display:inherit!important) -games2rule.com##[id^="gdsdk_"] -games2rule.com##div:has(> div:has(> .adsbygoogle)) -games2rule.com##div.border_radius:has-text(Advertisement) -games2rule.com##.col-sm-4:has-text(Advertisement) -games2rule.com##+js(ra, target) -elixx.*##+js(aopr, AdservingModule) -elixx.*##+js(aopr, LieDetector) -elixx.*##+js(aopw, I833) -elixx.*##+js(json-prune, urls, urls.0) -elixx.*##^script:has-text(0x3) -||elixx.*/popcash.js^ -! ads, popups https://www.limetorrents .info/search/all/duck/ -! => limetorrents. lol -limetorrents.*##+js(aeld, , _0x) -limetorrents.*##+js(aeld, load, onload) -limetorrents.*##+js(acs, Object.assign, popunder) -limetorrents.*##+js(acs, Math, XMLHttpRequest) -limetorrents.*##+js(nowoif) -limetorrents.*##[href^="/fast.php"] -limetorrents.*##div:has(> div > a[href^="/leet/?"]) -limetorrents.*##tr:has-text(VPN) -||limetorrents.*/sw.js -@@||limetorrents.*^$ghide -limetorrents.*##[href^="https://affiliate.rusvpn.com/"] -limetorrents.*##.head:has-text(Adv) -ebookdz.com##+js(aopr, AaDetector) -ebookdz.com##+js(nowebrtc) -ebookdz.com##+js(nostif, nextFunction, 2000) -@@||ebookdz.com^$ghide -*$script,domain=ebookdz.com,redirect-rule=noopjs -ebookdz.com##[href*="offer"] -telerium.*##+js(nostif, KeepOpeningPops, 1000) -telerium.*##+js(nowoif) -telerium.*##+js(aopr, LieDetector) -@@||telerium.*^$ghide -telerium.*###overlay -onhockey.tv,web.livecricket.is##+js(nowebrtc) -||onhockey.tv/stopadblock*.jpg$image -@@||amc.com^$ghide -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=amc.com -||ssaimanifest.prod.boltdns.net^$xhr,removeparam=prof,domain=amc.com -pornvideospass.com##+js(aopw, Aloader) -pornvideospass.com##+js(aopw, bindall) -barfuck.com##+js(aopr, document.dispatchEvent) -barfuck.com###im-layer -||curvyfemales.com/*.php$script,1p -curvyfemales.com##.im-show -pornvideotop.com##+js(aopr, open) -pornvideotop.com##+js(nostif, location.href) -pornvideotop.com###user18div -||aa.pornvideotop.com^ -||pornvideotop.com/ads300x250.php -||pornvideotop.com/e/fp.js -||pornvideotop.com/js/popec.js -||spermyporn.com/js/my.js -||young-porn-movie.com/adv.js -||tds.pornvideotop.com^ -/mod_ablockdetector/* -@@||trecetv.es^$ghide -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=shares.enetres.net -@@||player.enetres.net/js/videojs-plugins/videojs-ads-contrib/videojs.ads.js$script,domain=shares.enetres.net -file4go.*##+js(acs, document.getElementById, ad_block) -file4go.*##+js(set, time, 0) -@@||file4go.*/ads.js$script,1p -file4go.*##div.banner300b, .lateral -! jav688.com popups -javwide.*##+js(aopr, AaDetector) -cdnfinder.xyz,player.javqd.*,player.javwide.*###preroll -cdnfinder.xyz###poster -*$script,3p,denyallow=cdnfinder.xyz,domain=cdnfinder.xyz -##a[href^="http://www.poweredbyliquidfire.mobi/"] -holavid.com##+js(aopw, decodeURIComponent) -||hawaktv.com/sw.js$script -! Similar group of german porn sites -pornohirsch.net##+js(set, vpPrerollVideo, undefined) -deinesexfilme.com,einfachtitten.com,halloporno.com,herzporno.com,lesbenhd.com,milffabrik.com,porn-monkey.com,porndrake.com,pornhubdeutsch.net,pornoaffe.com,pornodavid.com,pornoente.tv,pornofisch.com,pornofelix.com,pornohammer.com,pornohelm.com,pornoklinge.com,pornotom.com,pornotommy.com,pornovideos-hd.com,pornozebra.com,xhamsterdeutsch.xyz,xnxx-sexfilme.com##+js(nostif, appendChild) -@@*$ghide,domain=deinesexfilme.com|einfachtitten.com|halloporno.com|herzporno.com|lesbenhd.com|milffabrik.com|porn-monkey.com|porndrake.com|pornhubdeutsch.net|pornoaffe.com|pornodavid.com|pornoente.tv|pornofisch.com|pornofelix.com|pornohammer.com|pornohelm.com|pornoklinge.com|pornotom.com|pornotommy.com|pornovideos-hd.com|pornozebra.com|xhamsterdeutsch.xyz|xnxx-sexfilme.com -deinesexfilme.com,einfachtitten.com,halloporno.com,herzporno.com,pornohirsch.net,lesbenhd.com,milffabrik.com,porndrake.com,pornoaffe.com,pornodavid.com,pornoente.tv,pornofisch.com,pornofelix.com,pornohammer.com,pornohelm.com,pornoklinge.com,pornovideos-hd.com,pornotom.com,pornotommy.com,pornozebra.com,xnxx-sexfilme.com##.vjs-overlay -deinesexfilme.com,herzporno.com,lesbenhd.com,milffabrik.com,pornoaffe.com,pornoente.tv,pornohelm.com,pornoklinge.com,xnxx-sexfilme.com###wa_join_btn -einfachtitten.com,halloporno.com,pornodavid.com,pornofisch.com,pornofelix.com,pornohammer.com,pornotom.com,pornotommy.com,pornovideos-hd.com,pornozebra.com##.send_event.widget_btn.cf -deinesexfilme.com,einfachtitten.com,halloporno.com,herzporno.com,lesbenhd.com,milffabrik.com,porn-monkey.com,porndrake.com,pornhubdeutsch.net,pornoaffe.com,pornodavid.com,pornoente.tv,pornofisch.com,pornofelix.com,pornohammer.com,pornohelm.com,pornoklinge.com,pornotom.com,pornotommy.com,pornovideos-hd.com,pornozebra.com,xhamsterdeutsch.xyz,xnxx-sexfilme.com##+js(aopr, open) -||static.twincdn.com^$media,redirect=noopmp3-0.1s -##.preroll-blocker -xnxx-sexfilme.com##+js(aopw, SpecialUp) -||pushpad.xyz^$script,domain=xnxx-sexfilme.com -xnxx-sexfilme.com##.img_box:has-text(Anzeige) -xnxx-sexfilme.com###wa-banner -xnxx-sexfilme.com##aside ins:upward(aside) -||xnxx.com/cams/ -xnxx-sexfilme.com##.grid_box:has(a[target="_blank"]) -xnxx-sexfilme.com##.preroll-blocker -xnxx-sexfilme.com##.preroll-skip-button -xnxx-sexfilme.com##.vjs-overlayed -||twincdn.com/video/susilive/$media,redirect=noopmp4-1s,domain=xnxx-sexfilme.com -marie-claire.es##+js(set, ads, true) -*$xhr,redirect-rule=nooptext,domain=marie-claire.es -||starbits.io/libs/check.js$script,1p -! sawlive.tv popups -sawlive.tv##+js(aopw, Fingerprint2) -sawlive.tv##+js(nowoif) -@@||sawlive.tv^$script,1p -sawlive.tv##body[onclick^="closeMyAd"] > div[id][style^="position"][style*="background-color"] -converto.io##+js(acs, atob, decodeURIComponent) -player.xxxbestsites.com##+js(aopr, BetterJsPop) -svipvids.com##+js(aopw, KillAdBlock) -gaypornmasters.com##+js(aost, String.prototype.charCodeAt, ai_) -||hexupload.net/images/Premium_Banners/$3p -short-url.link##+js(aeld, click, read_cookie) -short-url.link##+js(nano-sib) -short-url.link##center > [src$=".html"] -salamanca24horas.com##+js(aopr, ReviveBannerInterstitial) -scrapywar.com##+js(acs, eval, replace) -scrapywar.com##.stream-item-widget -! Videos disabled by anti-blocker: -globalnews.ca##+js(set, GNCA_Ad_Support, true) -globalnews.ca##.c-ad__unit -globalnews.ca##.c-ad__label -king-pes.*##+js(aeld, load, onload) -@@||rp-online.de^$ghide -@@||saarbruecker-zeitung.de^$ghide -@@||volksfreund.de^$ghide -@@||rp-online.de/assets/adsbygoogle.js$script,1p -@@||saarbruecker-zeitung.de/assets/adsbygoogle.js$script,1p -@@||volksfreund.de/assets/adsbygoogle.js$script,1p -rp-online.de,saarbruecker-zeitung.de,volksfreund.de##.park-portal -@@||mylivesignature.com^$ghide -@@||mylivesignature.com/$script,1p -mylivesignature.com##.topadscontainer -@@||googlesyndication.com/pagead/managed/js/adsense/*/show_ads_impl$domain=searchftps.net -@@||googlesyndication.com/pagead/show_ads.js$script,domain=searchftps.net -hungama.com##+js(set, showAds, true) -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js,domain=hungama.com -@@||crazyhd.com^$ghide -@@||chd4.com^$ghide -chd4.com##+js(aopw, checkAdBlocker) -||adblockanalytics.com^$xhr,redirect-rule=noop.txt -@@||goalad.com^$ghide -canberratimes.com.au##+js(set, cxStartDetectionProcess, noopFunc) -letribunaldunet.fr##+js(nostif, adb, 0) -tryboobs.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -tryboobs.com##+js(aopr, open) -tryboobs.com##.bottomspots -tryboobs.com##.flirt.spot -tryboobs.com###sr -tubedupe.com##+js(aopr, ExoLoader) -tubedupe.com##+js(aeld, , midRoll) -||tubedupe.com/player/html.php$frame,1p -veekyforums.com##+js(nowoif) -@@||veekyforums.com/js/adcash.js$xhr,1p -||yespornclips.com/sw.js$script,1p -@@||mlbstatic.com/mlb.com/video/*/advertise$xhr,domain=mlb.com -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=ipla.tv -cutpaid.com##+js(aeld, , _blank) -cutpaid.com##+js(aopr, app_vars.force_disable_adblock) -cutpaid.com##+js(nowoif) -cutpaid.com##+js(set, blurred, false) -cutpaid.com##center -*$frame,denyallow=google.com,domain=cutpaid.com -*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=cutpaid.com -germancarforum.com##+js(rmnt, script, adsbygoogle) -televisionlibre.net##+js(aopw, smrtSB) -televisionlibre.net##+js(nowoif) -televisionlibre.net##[class^="fkdaop"] -todovieneok.*##+js(aeld, load, nextFunction) -findwords.info##div[itemtype="http://schema.org/WPAdBlock"] -findwords.info##.ads-block-horizontal -||forwardrb.bid^ -thewestmorlandgazette.co.uk##+js(aopr, _sp_._networkListenerData) -live-tv-channels.org##+js(aopr, adBlockDetected) -live-tv-channels.org##+js(nostif, adBlocked) -live-tv-channels.org##.adsense-player -live-tv-channels.org##.adsense-player-2 -live-tv-channels.org##[class^="_ads-"] -drinksmixer.com,leitesculinaria.com##+js(set, Date.now, noopFunc) -andiim3.com##+js(acs, jQuery, AdBlock) -twatis.com##+js(aopr, ExoLoader.addZone) -hitomi.la##+js(noeval) -*$script,3p,domain=hitomi.la -hitomi.la##+js(aopr, open) -hitomi.la##.container > div[class$="content"] > div[class]:has(> script) -||ltn.hitomi.la^*?yuo1=$script,1p -fupa.net##+js(set, jQuery.adblock, 1) -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js,domain=fupa.net -@@||ad.71i.de/*/loader.js$script,domain=fupa.net -! sites with the same ad-reinsertion script -kompas.com##+js(acs, setTimeout, iframeTestTimeMS) -namemc.com##+js(acs, setTimeout, runInIframe) -namemc.com##+js(aopw, deployads) -namemc.com##.ad-container -pockettactics.com##+js(acs, Math.floor, iframeTestTimeMS) -tribunnews.com##+js(acs, Math, ='\x) -descarga-animex.*##+js(aopw, adBlockDetected) -bollywoodshaadis.com##+js(aopr, Debugger) -bollywoodshaadis.com##+js(aopw, adBlockDetected) -hdvid.*##+js(aopw, atOptions) -hdvid.*##+js(aost, String.fromCharCode, stackDepth:3) -hdvid.*,onvid.*,ovid.*,vidhd.*##+js(aopw, Fingerprint2) -hdvid.*,onvid.*,ovid.*,vidhd.*##+js(aopw, smrtSB) -hdvid.*,onvid.*,ovid.*,vidhd.*##+js(nowebrtc) -vidhd.*##+js(aopr, AaDetector) -hdvid.*,onvid.*,ovid.*,vidhd.*##.video_batman -||hdvid.tv/sw.js$script -||onvid.*/sw.js$script -||ovid.*/sw.js$script,1p -||vidhd.*/sw.js$script,1p -hardmob.com.br#?#.postcontainer:has(.usertitle:has-text(Publicidade)) -@@||ugdturner.com^$script,domain=live.bleacherreport.com -@@||v.fwmrm.net/crossdomain.xml$xhr,domain=live.bleacherreport.com -downloadming.*##+js(aopw, decodeURIComponent) -nfl.com##[class$="adblock"] -guidetnt.com##+js(set, isAdBlockActive, false) -eslfast.com##+js(nostif, warning, 100) -quelleestladifference.fr##+js(aeld, load, onload) -iwin.com##.modals -iwin.com#@##sponsorText -giveawayoftheday.com##+js(nosiif, _checkBait) -sexykittenporn.com##+js(aopr, loadTool) -sexykittenporn.com##+js(aopr, ExoLoader) -sexykittenporn.com##+js(ra, href, [href*="ccbill"]) -sexykittenporn.com##.hr.babes -@@||i8086.de^$ghide -i8086.de##ins.adsbygoogle -starmusiq.*##+js(nowebrtc) -starmusiq.*##+js(set, isAdBlockActive, false) -@@||gameguardian.net^$ghide -||googlesyndication.com/pagead/$script,redirect=noopjs,domain=gameguardian.net -gameguardian.net##.adsbygoogle:style(height: 1px !important;) -hawtcelebs.com##+js(aopw, close_screen) -camgirlfap.com##+js(acs, document.createElement, onerror) -##.happy-inside-player -cda-hd.cc##+js(aopr, AaDetector) -ge-map-overlays.appspot.com##+js(no-xhr-if, googlesyndication) -vinylcollective.com##+js(acs, jQuery, dismissAdBlock) -sp-today.com##+js(set, isAdBlockActive, false) -mirrorace.*##+js(aopr, AaDetector) -mirrorace.*##+js(aeld, click, _0x) -mirrorace.*##+js(popads-dummy) -/invoke.js$script,domain=mirrorace.* -@@||mirrorace.*^$ghide -mirrorace.*##.uk-card-secondary:has-text(VPN) -mirrorace.*##[href*="search/"] -||mirrorace.org/*.gif$image -tamilmv.*##+js(nowebrtc) -tamilmv.*##+js(acs, atob, decodeURIComponent) -||tamilmv.*/sw.js$script,xhr,1p -||xxxwebdlxxx.org^$csp=script-src 'self' data: -browardpalmbeach.com,dallasobserver.com,houstonpress.com,miaminewtimes.com,phoenixnewtimes.com,westword.com##+js(set, VMG.Components.Adblock, false) -prostoporno.*##+js(aopr, ExoLoader.serve) -prostoporno.*##.spot -muyinteresante.es##+js(no-fetch-if, googlesyndication, method:HEAD) -*$xhr,redirect-rule=nooptext,domain=muyinteresante.es -9xbuddy.*##+js(nowoif) -@@||offmp3.*^$ghide -*$script,3p,denyallow=9xbud.com|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|fastly.net|fastlylb.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|jsdelivr.net|jwpsrv.com|plyr.io|twimg.com|twitter.com|recaptcha.net|x.com,domain=9xbuddy.* -durtypass.com##+js(nowoif) -durtypass.com##+js(aopr, _pop) -@@||durtypass.com^$ghide -||pornid.*$csp=frame-src -pornid.*##.rsidebar-spots-holder, .spots-bottom -pornid.*##.cs-under-player-link -pornid.*##+js(aopr, decodeURI) -||pornid.*/azone/ -||pornid.*/pid/dev.js -!#if env_mobile -pornid.*##.cs -pornid.*##.spots-title -pornid.*###fltd -pornid.*###native_code -||pornid.*/xdman2/$frame,1p -!#endif -practicequiz.com,wapkiz.com##+js(aopw, adBlockDetected) -freegamescasual.com##+js(nostif, adblock_popup, 500) -opjav.com##+js(nowoif) -||clipbongda.info^ -123moviesjr.cc##+js(aopr, mm) -||123movie.*/sw.js$script -schrauben-normen.de##+js(aeld, load, nextFunction) -ngelag.com##+js(aopr, FuckAdBlock) -@@||homegrownfreaks.net/player/player_ads.html$frame,1p -@@||homegrownfreaks.net^$ghide -homegrownfreaks.net##.fp-brand -depedlps.*##+js(aeld, load, onload) -depedlps.*##+js(aopr, encodeURIComponent) -pianokafe.com##+js(aopw, adBlockDetected) -huim.com##+js(aopr, isAdEnabled) -||push.zhanzhang.baidu.com/push.js$script,domain=huim.com -||zbporn.*/tri/zp.js -zbporn.*##+js(aopr, decodeURI) -zbporn.*##+js(aopr, promo) -zbporn.*##.desktop-nat-spot -*$popunder,domain=zbporn.com -||zbporn.*/ttt/ -zbporn.*##.view-right -fapality.com##+js(aopr, document.dispatchEvent) -fapality.com##+js(aopr, open) -||yourlustmedia.com^$3p -worldsex.com##+js(aopr, Notification) -worldsex.com##+js(aopr, document.dispatchEvent) -worldsex.com###video_banner -worldsex.com##div.da-by -worldsex.com##.overlay -@@||api.production.k8s.y3o.tv/*/video-ads$xhr,domain=yallo.tv -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=yallo.tv -||adservice.google.com^$script,redirect-rule=noopjs,domain=yallo.tv -@@||secure.adnxs.com/ptv$xhr,domain=imasdk.googleapis.com -imasdk.googleapis.com##+js(xml-prune, VAST, , adnxs) -babesxworld.com,cocogals.com##+js(aopr, loadTool) -babesxworld.com##+js(aopr, open) -babesxworld.com##+js(aopr, document.dispatchEvent) -babesxworld.com##.g-link -babesxworld.com##a[href^="http://refer.ccbill.com/"] -*$3p,popup,domain=babesxworld.com -*$script,3p,denyallow=cloudflare.com|bootstrapcdn.com|fastly.net|fluidplayer.com|hwcdn.net|twitter.com|x.com,domain=babesxworld.com -babesxworld.com##[onclick*="spons"] -masteranime.tv##+js(set, check_adblock, true) -||masteranime.tv/api/pop.php$xhr,1p -*$script,3p,denyallow=anmedm.com|cloudflare.net|cloudfront.net|disqus.com|disquscdn.com|facebook.net|fastlylb.net|fbcdn.net|google.com,domain=masteranime.tv -||ad.masteranime.tv^$script,1p -tcpvpn.com##+js(nostif, Adblock) -otakuworldsite.blogspot.com##+js(aeld, load, onload) -pornoman.pl##+js(aopr, decodeURI) -pornoman.pl##+js(aopr, _0x311a) -pornoman.pl##[src*="bannery"] -pornoman.pl###porno_accept -@@||pornoman.pl^$ghide -nhentai.net##+js(nowoif) -nhentai.net##+js(set, _n_app.popunder, null) -nhentai.net##+js(rpnt, script, popunder, p) -*.mp4$media,redirect=noopmp4-1s,domain=abc.go.com -canadianunderwriter.ca##+js(aopw, mockingbird) -forexmab.com,linkjust.com,linkszia.co##+js(set, blurred, false) -forexlap.com,forexmab.com,forexwaw.club,forex-articles.com,fx4vip.com,forexrw7.com,3rabsports.com,fx-22.com,gold-24.net##+js(nano-sib, , , 0.001) -forexlap.com##+js(nowoif) -linkjust.com##.banner-inner -linkszia.co##.banner -@@||linkjust.com^$ghide -||proviralhost.com^$3p -||urbharat.xyz^$3p -||forexrw7.com^$frame,3p -business-standard.com##+js(set, adblock, false) -*$popunder,domain=camsexvideo.net -camsexvideo.net##.list-spots -nowtv.com.tr##+js(set, adblockDetector, trueFunc) -oemdtc.com##.easyazon-block -oemdtc.com##.blocker-notice, .blocker-overlay -oemdtc.com##[src^="https://cdn.flowdee.de/"], [href^="https://www.amazon.com/b"] -cambay.tv,caminspector.net,camporn.tube,camwhorescloud.com,camwhorespy.com,camwhoria.com,camvideos.org##+js(acs, crakPopInParams) -cambay.tv,caminspector.net,camporn.tube,camwhorescloud.com,camwhoreshd.com,camwhorespy.com,camvideos.org##+js(acs, onload, onclick) -cambay.tv,caminspector.net,camwhorespy.com,camwhoria.com,camgoddess.tv##+js(aopr, console.log) -cambay.tv,camwhoreshd.com,camwhorespy.com,cwtvembeds.com##+js(nowoif) -cambay.tv,caminspector.net,camwhoreshd.com,camgoddess.tv##+js(set, hasPoped, true) -camwhorescloud.com##+js(aost, Math.round, inlineScript) -camwhoreshd.com,cwtvembeds.com##.hola_top_element -cwtvembeds.com##+js(set, flashvars.protect_block, '') -cwtvembeds.com##+js(set, flashvars.video_click_url, undefined) -camwhoreshd.com##+js(aopr, loadTool) -cambay.tv,camporn.tube,camwhorescloud.com,camwhoreshd.com,camgoddess.tv##.table -caminspector.net,camvideos.org##.place -@@*$media,domain=camvideos.org -@@||video$xhr,media,domain=camvideos.org -camseek.tv##+js(aopr, decodeURI) -||camseek.tv/live/live.php$frame,1p -camseek.tv##div[style$="height: 240px; background: white"] -||wpnrtnmrewunrtok.xyz^$badfilter -cambay.tv##.rltdsldr -cambay.tv##+js(set, flashvars.adv_pause_html, '') -cambay.tv##+js(set, flashvars.adv_start_html, '') -cambay.tv##+js(set, flashvars.popunder_url, '') -||cfgr3.com/popin/$script,3p -##[href^="https://go.smljmp.com/"] -caminspector.net##.top -cambay.tv##.fp-logo -cambay.tv##+js(set, flashvars.adv_post_src, '') -cambay.tv##+js(set, flashvars.adv_post_url, '') -cambay.tv##+js(set, flashvars.adv_pre_src, '') -cambay.tv##+js(set, flashvars.adv_pre_url, '') -@@||open.http.mp.streamamg.com/html5/$script,domain=mediapason.it -@@||pubads.g.doubleclick.net/gampad/live/*.mediapason.it$xhr,domain=imasdk.googleapis.com -mediapason.it##+js(set, jQuery.adblock, false) -leechpremium.link##+js(set, blurred, false) -*$image,1p,redirect-rule=1x1.gif,domain=leechpremium.link -leechpremium.link###myModal -leechpremium.link##ins.adsbygoogle -leechpremium.link##.fade.modal-backdrop -leechpremium.link##[id*="ScriptRoot"] -leechpremium.link##body:style(overflow: auto !important;) -leechpremium.link##.row > .col-md-2:first-child > .pricingTable -leechpremium.link##+js(no-fetch-if, adsbygoogle) -*$script,3p,denyallow=bootstrapcdn.com|cloudflare.net|google.com|googleapis.com|gstatic.com|recaptcha.net|tawk.to|jsdelivr.net,domain=leechpremium.link -@@||leechpremium.net^$ghide -leechpremium.net##.adsbygoogle -@@||tsubasa.im^$ghide -tsubasa.im##+js(nostif, location.href, 10000) -zemporn.com##+js(aopr, h1mm.w3) -zemporn.com##.player-aside-banners -guitarnick.com##+js(acs, document.getElementById, banner) -jeshoots.com##+js(set, google_jobrunner, true) -xxxuno.com##+js(nostif, #chatWrap, 1000) -allmonitors24.com##+js(nostif, (), 2000) -apritos.com,bsierad.com,diminimalis.com,downloadbatch.com,eksporimpor.com,jadijuara.com,kicaunews.com,palapanews.com,ridvanmau.com,teknohot.com,unduh31.net##+js(aopw, adBlockDetected) -homebooster.de,newhome.de##+js(acs, document.getElementById, blocker_div) -ellibrepensador.com##+js(aopr, require) -porconocer.com##+js(acs, document.getElementById, onscroll) -0123movies.*##+js(set, check_adblock, true) -0123movies.*##+js(aopr, mm) -0123movies.*##.fake_player, #tab-ad -0123movies.*##[href="#tab-ad"] -0123movies.*##.les-title:has-text(HD) -0123movies.*##.mvic-btn -sholah.net,2rdroid.com##+js(nostif, keep-ads, 2000) -tinyppt.com##+js(rmnt, script, deblocker) -internetretailing.com.au##.textwidget:has(> div > div[id^="IRN_Homepage_300x250"]) -@@||mygoodstream.pw^$ghide -bisceglielive.it##+js(nostif, #rbm_block_active, 1000) -bisceglielive.it##.mkt-300x250 -bisceglielive.it##.mkt-728x90 -worldaide.fr##+js(aopr, adblock) -@@||worldaide.fr^$ghide -worldaide.fr##ins.adsbygoogle -wpgdadatong.com##+js(aopr, checkAdblock) -creativebusybee.com##+js(aopw, checkAds) -scamalot.com##+js(acs, $, #DontBloxMyAdZ) -beautypackaging.com,coatingsworld.com,contractpharma.com,happi.com,inkworldmagazine.com,labelandnarrowweb.com,mpo-mag.com,nutraceuticalsworld.com,odtmag.com,printedelectronicsnow.com##+js(acs, $, #pageWrapper) -beautypackaging.com,coatingsworld.com,contractpharma.com,happi.com,inkworldmagazine.com,labelandnarrowweb.com,mpo-mag.com,nutraceuticalsworld.com,odtmag.com,printedelectronicsnow.com##.modal-backdrop -beautypackaging.com,coatingsworld.com,contractpharma.com,happi.com,inkworldmagazine.com,labelandnarrowweb.com,mpo-mag.com,nutraceuticalsworld.com,odtmag.com,printedelectronicsnow.com##body:style(overflow: auto !important;) -savevideo.me##+js(acs, $, banner) -yeutienganh.com##+js(aopw, adBlockDetected) -openspeedtest.com##+js(nostif, google_jobrunner) -situsberita2terbaru.blogspot.com##+js(acs, document.getElementById, adpbtest) -telecharger-igli4.*##+js(aopw, adBlockDetected) -addtobucketlist.com##+js(nostif, google_jobrunner) -syracusefan.com##+js(aopw, XF) -@@||promods.net^$ghide -@@||promods.net/kampyle.js$script,1p -argio-logic.net##+js(acs, document.getElementById, alert) -appstore-discounts.com##+js(acs, document.getElementById, undefined) -onlineatlas.us#@#ins.adsbygoogle[data-ad-slot] -onlineatlas.us#@#ins.adsbygoogle[data-ad-client] -ohorse.com##+js(aopw, check) -@@||tabooporns.com^$ghide -player.tabooporns.com##+js(aopr, BetterJsPop) -player.tabooporns.com,x69.ovh##+js(nowoif, , 10) -player.tabooporns.com,x69.ovh##+js(set, adblockcheck, false) -||unpkg.com/videojs-vast-vpaid@2.0.2/bin/videojs_5.vast.vpaid.min.js$script,domain=player.tabooporns.com|x69.ovh -player.tabooporns.com##[href="https://t.me/Russia_Vs_Ukraine_War3"] -player.tabooporns.com##a[onclick="openAuc();"] -x08.ovh##+js(nowoif) -x08.ovh##+js(acs, JSON.parse, showTrkURL) -x08.ovh##+js(acs, Math, /window\['(?:\\x\d{2}){1}/) -||findmyheadache.com^ -photos-public-domain.com##+js(aopr, blockAdBlock) -@@/wp-content/themes/mts_ad_sense/*$1p -##.blocker-notice -##.blocker-overlay -popcorntv.it##.box-adv -! Generic BlockAdBlock and other sites -arianatoday.net###phpeverywherewidget-2 -teamos-hkrg.com##[href^="https://bit.ly/"] -digitask.ru##ins[class][style="display:inline-block;width:300px;height:250px;"] -heidibemvindaacasabrasil.blogspot.com###popup -l2network.eu##.ubm_banner -mylivewallpapers.com,softfully.com##+js(no-fetch-if, ads) -mylivewallpapers.com##.group.posts > div.post -aalah.me,academiadelmotor.es,aiailah.com,almursi.com,altebwsneno.blogspot.com,ambonkita.com,androidspill.com,aplus.my.id,arrisalah-jakarta.com,babyjimaditya.com,bbyhaber.com,beritabangka.com,beritasulteng.com,bestsellerforaday.com,bintangplus.com,bitco.world,br.nacaodamusica.com,bracontece.com.br,dicariguru.com,fairforexbrokers.com,foguinhogames.net,formasyonhaber.net,fullvoyeur.com,healbot.dpm15.net,igli4.com,indofirmware.site,hagalil.com,javjack.com,latribunadelpaisvasco.com,line-stickers.com,luxurydreamhomes.net,m5g.it,miltonfriedmancores.org,minutolivre.com,oportaln10.com.br,pedroinnecco.com,philippinenmagazin.de,piazzagallura.org,pornflixhd.com,safehomefarm.com,synoniemboek.com,techacrobat.com##+js(aopw, adBlockDetected) -elizabeth-mitchell.org##+js(aopw, adBlockDetected) -elizabeth-mitchell.org##.widget-title:has-text(AD) -ad-itech.blogspot.com##+js(aeld, load, onload) -avengerinator.blogspot.com##+js(aeld, load, nextFunction) -best4hack.blogspot.com##+js(acs, atob, decodeURI) -||myfreecopyright.com^$3p -3dzip.org##+js(nostif, google_jobrunner) -3dzip.org##+js(nostif, null, 4000) -||googlesyndication.com^$script,redirect-rule=googlesyndication_adsbygoogle.js,domain=3dzip.org -3dzip.org##.adcontainer -3dzip.org##div.better-ads-listitemad -3dzip.org##div[id][itemtype="https://schema.org/WPAdBlock"] -technisches-zeichnen.net##[id^="banner-"] -technisches-zeichnen.net###ad-unten-01 -technisches-zeichnen.net##.bild-rechts-01 -mi-globe.com##.td-is-sticky -||googlesyndication.com^$script,redirect-rule=googlesyndication_adsbygoogle.js,domain=fatgirlskinny.net -fatgirlskinny.net##+js(aeld, load, isBlanketFound) -fatgirlskinny.net##[href^="https://www.topcashback.co.uk/"] -canaltdt.es##+js(aeld, load, showModal) -*$script,redirect-rule=noopjs,domain=canaltdt.es -4download.net##+js(acs, addEventListener, nextFunction) -4download.net##+js(nano-sib) -scat.gold##+js(nostif, show) -scat.gold##+js(acs, document.createElement, onerror) -globalssh.net##+js(acs, addEventListener, nextFunction) -sysnettechsolutions.com##a[href^="https://bit.ly/"] -pandajogosgratis.com.br##+js(nostif, (), 2500) -5278.cc##+js(nostif, myaabpfun, 3000) -icutlink.com##+js(aopr, open) -icutlink.com##+js(set, blurred, false) -icutlink.com##+js(nano-sib, time) -icutlink.com##+js(set, sec, 0) -icutlink.com##.banner-inner -zegtrends.com##+js(nowoif) -zegtrends.com##+js(nano-sib, time, 2500) -@@/ad.min.js$script,domain=icutlink.com|zegtrends.com -zegtrends.com##+js(noeval-if, /chp_?ad/) -hotbabes.tv##+js(aopr, loadTool) -candid.tube,filesamba.*,hotbabes.tv,purelyceleb.com##+js(aopr, _wm) -cambabe.*,camgirlbay.net##+js(acs, onload) -cambabe.*##+js(acs, crakPopInParams) -cambabe.*##.topad -cambabe.*##.place -purelyceleb.com##.embed-container -##.exo-horizontal -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=cookinggames.com -@@||witchhut.com^$script,1p -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=girlgames.com -stfly.me##+js(aopw, Fingerprint2) -stfly.me##+js(aopw, tabUnder) -stfly.me##+js(aeld, click, trigger) -stfly.me##+js(aopr, open) -stfly.me##+js(set, blurred, false) -@@||stfly.me^$ghide -*$3p,denyallow=bootstrapcdn.com|cloudflare.com|google.com|googleapis.com|gstatic.com|hcaptcha.com|recaptcha.net|unpkg.com,domain=stfly.me -||bulletprofit.com^$3p -altblogger.net,blogbux.net,stfly.me##+js(acs, document.createElement, Adblock) -altblogger.net##+js(nostif, nextFunction) -blogbux.net###overlay -@@||audiotools.*^$ghide -audiotools.*##ins.adsbygoogle -*$image,redirect-rule=1x1.gif,domain=audiotools.blog -pandafreegames.*##+js(nostif, adFilled, 2500) -multporn.net##+js(aopr, document.dispatchEvent) -tonspion.de##+js(nostif, (), 15000) -oncehelp.com##+js(aeld, click, trigger) -oncehelp.com##+js(aopr, open) -oncehelp.com##+js(set, blurred, false) -oncehelp.com##.banner-inner -oncehelp.com##[href*="?token"] -@@||consensu.org/*/cmp2.js$script,domain=novagente.pt -viprow.*##+js(acs, setTimeout, admc) -viprow.*##+js(nowoif, //) -viprow.*##+js(rmnt, script, FingerprintJS) -viprow.*##+js(json-prune, *, *.adserverDomain) -viprow.*##.position-absolute -myegy.*##+js(aopw, decodeURI) -gamezhero.com##+js(set, ads, true) -||gamezhero.com/promo$frame,1p -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js,domain=gamezhero.com -wikifeet.com##+js(aopr, NativeAd) -flashplayer.fullstacks.net##+js(set, gadb, false) -@@||encoretvb.com^$ghide -encoretvb.com###square-ad-1 -sms-receive.net##+js(acs, $, adblock) -@@||wordgames.com^$ghide -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=wordgames.com -wordgames.com###ad-gamepage-leaderboard -wordgames.com###skyscrapper-container -wordgames.com###skyscraper-container -ani-stream.com##+js(no-fetch-if, damoh.ani-stream.com) -!#if env_chromium -||amazonaws.com/homad-global-configs.schneevonmorgen.com/global_config.json$xhr,redirect=nooptext,domain=ani-stream.com -!#endif -||fairytail-tube.org/templates/caprica/amz$image,1p -||grammarly.com/*utm_source=$popup,domain=duplichecker.com|plagiarismchecker.co|plagiarismdetector.net|searchenginereports.net|smallseotools.com -duplichecker.com,plagiarismchecker.co,plagiarismdetector.net,searchenginereports.net,smallseotools.com##[href*="grammarly.com"] -duplichecker.com,plagiarismchecker.co,plagiarismdetector.net,searchenginereports.net##+js(nostif, showPopup) -plagiarismdetector.net##a[rel*="nofollow"][rel*="noopener"]:has(> img.img-fluid[src^="https://plagiarismdetector.net/pd-imgs/"]) -plagiarismdetector.net##a[onclick*="PC_Home_gra"][rel="nofollow noopener"][target="_blank"] -searchenginereports.net##div[class^="theMSsy"], div[id^="theMSsy"], a[onclick*="PushClickTag"][rel], a[href^="https://searchenginereports.net/gmdasads"] -||searchenginereports.net/thAdoGMA/$image -smallseotools.com##+js(aeld, mouseout, clientWidth) -smallseotools.com##span[onclick*="https://smallseotools.com/deep_grammar.html"] -smallseotools.com##span[onclick*="https://smallseotools.com/deep_pcgrammar.html"] -plagiarismchecker.co##body *:matches-css(margin: /auto/):matches-css(width: /^[2-3]{1}[0-9]{2}(\.[0-9]+)?px$/):matches-css(height: /^[2-3]{1}[0-9]{2}(\.[0-9]+)?px$/):matches-css(display: /block|table/):remove() -duplichecker.com##vvv, ccc, spavn, .qwert, .dfdfdf, .nhnhnhn, [class^="alkjhg"], #btnbtnn2, a[href="https://www.duplichecker.com/gcl"], [mv*="grmly"] -||duplichecker.com/asets/img/logo.svg$image,1p -jagran.com##.ads -picbaron.com##+js(aeld, , _0x) -picbaron.com##+js(aopr, loadTool) -picbaron.com##+js(aopr, open) -picbaron.com##+js(noeval) -picbaron.com##.newsbar_blue -picbaron.com###fadeinbox -*$frame,domain=picbaron.com -||picbaron.com/*.gif$image -picbaron.com##[href*="/redirect?tid="] -temp-mail.org##+js(set, checkadBlock, noopFunc) -temp-mail.org#?#li:has(.viewLink:has-text(AD |)) -! http://forums.mozillazine.org/viewtopic.php?f=38&t=3043519 -3dprintersforum.co.uk##+js(acs, $, gandalfads) -giallozafferano.it##+js(nostif, (), 1) -javstream.com##+js(aopr, AaDetector) -javstream.com##+js(aopw, __aaZoneid) -sna3talaflam.com###adblock_abdoutech -sna3talaflam.com##body:style(overflow: auto !important;) -sna3talaflam.com##+js(aeld, load, onload) -linkspaid.com##+js(set, jQuery.adblock, false) -linkspaid.com##+js(nostif, (), 1000) -kurazone.net##+js(aopr, AaDetector) -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=kurazone.net -! agar.* -agar.pro##+js(aeld, load, onload) -@@||ip-api.com/json/$script,domain=agar.pro -@@||agar.pro^$ghide -@@||methbox.com^$ghide -methbox.com##+js(nostif, nextFunction, 250) -||popcent.org^$3p -gamecopyworld.*##+js(acs, document.createElement, Tool) -dl.gamecopyworld.*##.t2 > tbody > tr:nth-of-type(1) > td -dl.gamecopyworld.*##td:nth-of-type(2) -dl.gamecopyworld.*##tr:nth-of-type(6) > td -consoletarget.com##+js(aopr, loadTool) -||gamecopyworld.com/!_$frame -@@||asianclub.*^$ghide -asianclub.*##+js(set, clientSide.adbDetect, noopFunc) -asianclub.*##+js(aopr, AaDetector) -asianclub.*##+js(aopr, jwplayer.utils.Timer) -asianclub.*##+js(nowoif) -asianclub.*##+js(aopr, __Y) -javmost.*##center > div[style^="width:100%; height: 100px"] -watchjavnow.xyz##+js(aopr, __Y) -! vidmoly . me | .to popups -vidmoly.*##+js(nowoif) -||apptospace.com^ -||disproveknob.com^ -vidmoly.*###mg_vd -vidmoly.*###voc_block -vidmoly.*###dos_vlock -||cdn.staticmoly.me/*.php$domain=vidmoly.* -! nsfw xcums . com popups -xcums.com##+js(aopr, encodeURIComponent) -xpaja.net##+js(acs, String.fromCharCode, atob) -comnuan.com##+js(set, cmnnrunads, true) -mega-p2p.net##+js(aopr, open) -audioz.download,peeplink.in##+js(acs, String.fromCharCode, 'shift') -@@||savelinks.*^$ghide -savelinks.*##+js(aopr, LieDetector) -savelinks.*##+js(nowoif) -! uppit. com ads -||uppit.com^$document,csp=script-src 'self' 'unsafe-eval' 'unsafe-inline' data: *.cloudflare.com -@@||uppit.com^$ghide -xianzhenyuan.cn##+js(acs, document.getElementById, undefined) -novablogitalia.*##+js(aeld, load, nextFunction) -||shrinkearn.com/sw.js$script,1p -*$frame,domain=shrinkearn.com,3p,denyallow=cloudflare.com -shrinkearn.com##+js(aopr, open) -gsm1x.xyz##+js(aopw, downloadJSAtOnload) -gsm1x.xyz##+js(nano-stb, run) -||romgoc.net^$3p -dexterclearance.com#@#ins.adsbygoogle[data-ad-slot] -dexterclearance.com#@#ins.adsbygoogle[data-ad-client] -dexterclearance.com##.adsbygoogle:style(max-height: 1px !important;) -a-o.ninja,anime-odcinki.pl##+js(set, showAds, true) -anime-odcinki.pl##+js(aopr, _pop) -anime-odcinki.pl##.size-full -singingdalong.*##+js(aeld, load, 2000) -mrdeepfakes.com##+js(aopw, ReactAds) -mrdeepfakes.com##+js(acs, document.getElementsByTagName, script) -mrdeepfakes.com##+js(aopw, phtData) -mrdeepfakes.com##[href*="offer"] -*&expires$media,redirect=noopmp3-0.1s,domain=prosieben.at|prosieben.de|prosiebenmaxx.de|ran.de -||zomap.de/*&expires=$script,domain=prosieben.at|prosieben.de|prosiebenmaxx.de|ran.de -! popunder / (nsfw) sites - phtData -donk69.com,hotdreamsxxx.com##+js(aopw, phtData) -veedi.com##+js(set, adBlocker, false) -4j.com##+js(nostif, (), 2000) -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=4j.com|veedi.com,redirect-rule=google-ima.js -4j.com###bio_ep, #bio_ep_bg -4j.com##body:style(overflow: auto !important;) -anitube.*##+js(aopr, exoJsPop101) -anitube.*##+js(set, adBlockDetected, noopFunc) -anitube.*###iframeCore____ -||anitube.*/sw.js$script,1p -anitube.*##div[style^="pointer-events: none; position: absolute; "] -goltelevision.com##+js(set, adblock, false) -@@||nqs.nice264.com/data?system=golt&plugin$xhr,domain=goltelevision.com -||code.jquery.com/jquery-$script,domain=mega-mkv.com -mega-mkv.com,mkv-pastes.com##+js(aeld, DOMContentLoaded, adlinkfly) -mega-mkv.com##+js(aeld, DOMContentLoaded, shortener) -mega-mkv.com##center > p:has(> a[href] > img.alignnone) -medievalists.net##.widget-title:has-text(Adv) -! celebritymovieblog . com popups / ads -celebritymovieblog.com##+js(acs, puShown, /doOpen|popundr/) -celebritymovieblog.com##.banner_top -stiletv.it##+js(set, StileApp.somecontrols.adBlockDetected, noopFunc) -beeimg.com##+js(nostif, document.cookie, 2500) -beeimg.com##+js(nostif, window.open) -beeimg.com##.offer -fileone.tv##+js(nowoif) -mywatchseries.*##+js(nowebrtc) -||d19f0dp1dh77jq.cloudfront.net^ -||mywatchseries.*/sw.js$script,1p -yomovies.*##+js(aopr, decodeURI) -mixdrp.*##+js(aeld, load, download-wrapper) -mixdrop.*##+js(set, MDCore.adblock, 0) -mixdrop.*,mixdrp.*##+js(acs, $, String.fromCharCode) -mixdrop.*,mixdrp.*##+js(nano-stb, disabled) -mdbekjwqa.pw##+js(noeval-if, setInterval) -mdbekjwqa.pw##+js(acs, document.createElement, onerror) -mdfx9dc8n.net,mdzsmutpcvykb.net,mixdrop21.net,mixdropjmk.pw##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -mdbekjwqa.pw,mdfx9dc8n.net,mdzsmutpcvykb.net,mixdroop.*,mixdrop.*,mixdrop21.net,mixdropjmk.pw,mixdrp.*##+js(nowoif) -||mixdrop.*/sw.js$script,1p -mixdrop.*##div[onclick^="$(this).remove"] -mdbekjwqa.pw,mdfx9dc8n.net,mixdroop.*,mixdrop.*,mixdrop21.net,mixdropjmk.pw,mixdrp.*##body > div[style^="position: absolute;"][style*="z-index"] -*$script,3p,denyallow=dotblocking.dummy|google.com|gstatic.com|hwcdn.net|jquery.com,domain=mixdrop.*|mixdrp.*|~mixdrop.one|mixdroop.* -||auubslxxi.com^ -||brightadnetwork.com^ -||cviezjsg.com^ -||gtbtnrpzz.com^ -||jwgigawtq.com^ -||zwuucugezzjhhi.com^ -||d81idz8m5qll8.cloudfront.net/app.min.js$script -m.hellporno.com###fltd-inner -hellporno.*##.bnnrs-player -||share.notizie.it^ -||areyouabot.net^$3p -u.gg###af-header-link -u.gg###af-all:style(margin-top: 4em;) -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=actiongame.com|brain-games.co.uk|classicgame.com|games-site.co.uk|hiddenobjectgames.com|mahjong.co.uk|mahjong.com|match3.co.uk|match3games.com|mindgames.com|neongames.co.uk|solitaireonline.com|timemanagementgame.com -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js,domain=neongames.com -! anti adb puzzlefry . com -puzzlefry.com##+js(aopw, killAdBlock) -hentaisd.*##+js(aopr, LieDetector) -||n1g459ky7y.com^ -ftlauderdalebeachcam.com,ftlauderdalewebcam.com,juneauharborwebcam.com,keywestharborwebcam.com,kittycatcam.com,mahobeachcam.com,miamiairportcam.com,morganhillwebcam.com,njwildlifecam.com,nyharborwebcam.com,paradiseislandcam.com,pompanobeachcam.com,portbermudawebcam.com,portcanaveralwebcam.com,portevergladeswebcam.com,portmiamiwebcam.com,portnywebcam.com,portnassauwebcam.com,portstmaartenwebcam.com,portstthomaswebcam.com,porttampawebcam.com,sxmislandcam.com##+js(nostif, innerHTML) -ftlauderdalebeachcam.com,ftlauderdalewebcam.com,juneauharborwebcam.com,keywestharborwebcam.com,kittycatcam.com,mahobeachcam.com,miamiairportcam.com,morganhillwebcam.com,njwildlifecam.com,nyharborwebcam.com,paradiseislandcam.com,pompanobeachcam.com,portbermudawebcam.com,portcanaveralwebcam.com,portevergladeswebcam.com,portmiamiwebcam.com,portnywebcam.com,portnassauwebcam.com,portstmaartenwebcam.com,portstthomaswebcam.com,porttampawebcam.com,sxmislandcam.com##.horiz-banner-box-1, .info-left, .info-right -||cdn.ptztv.live/*/ads/$image -portevergladeswebcam.com###partnerad1div -hqtv.biz##+js(set, google_tag_data, noopFunc) -thoptv.*##+js(aopr, AaDetector) -thoptv.*##+js(nostif, readyplayer, 2000) -liveuamap.com##+js(set, noAdBlock, true) -||smrmembers-smr.smartmediarep.com/*/video/*.mp4$media,domain=tv.naver.com,redirect=noopmp4-1s -forum-pokemon-go.fr##+js(nostif, nextFunction, 2000) -||short.es/adv/*$frame,1p -@@||rte.ie^$ghide -@@||v.fwmrm.net/ad/g/*_HTML5_Live$script,domain=rte.ie -@@||src.litix.io/videojs/$script,domain=rte.ie -@@||rte.ie/player/$script,xhr,1p -@@||googlesyndication.com/pagead/js/adsbygoogle.js$xhr,domain=rte.ie -||rte.ie/ads/*$media,redirect=noopmp4-1s,domain=rte.ie -@@||doubleclick.net/gampad/live/ads*rte.ie$xhr,domain=imasdk.googleapis.com -@@||doubleclick.net/gampad/ads*rte.ie$xhr,domain=imasdk.googleapis.com -||securecdn.videologygroup.com/Prod/DSPMedia/$media,redirect=noopmp3-0.1s,domain=rte.ie -*/media/*.mp4|$media,domain=rte.ie,redirect=noopmp3-0.1s -*$1p,image,redirect-rule=1x1.gif,domain=rte.ie -rte.ie##.vjs-close-button -rte.ie##.adCue -! crohasit . com popups -crohasit.*##+js(aopw, Fingerprint2) -theglobeandmail.com##+js(aopw, adBlocker) -macwelt.de,pcwelt.de##+js(aeld, load, autoRecov) -! 6play fr anti adb -@@||v.fwmrm.net/ad/g/*_html5_live$script,domain=6play.fr -@@||v.fwmrm.net/ad/g/$xhr,domain=6play.fr -*.mp4$media,redirect=noopmp3-0.1s,domain=6play.fr -@@||ads.stickyadstv.com^$xhr,domain=6play.fr -*$script,redirect-rule=noopjs,domain=6play.fr -@@||7cbf2.v.fwmrm.net^$xhr,domain=6play.fr -||adslop.com^$3p -@@||genvideos.*/js/showads.js$xhr,1p -||googlesyndication.com/pagead/$script,redirect=noopjs,domain=uploadbox.io -uploadbox.io##+js(nosiif, (), 5000) -gaypornwave.com##+js(aost, String.prototype.charCodeAt, ai_) -gaypornwave.com##+js(aopr, ExoLoader) -gaypornwave.com##+js(aopr, _pop) -##[href^="https://popcash.net/"] -##[href^="https://adult.xyz/"] -onlineclassnotes.com###turnOffAdBlockerContainer -dualpaste.net##+js(nowebrtc) -urbia.de##+js(aopr, _sp_.mms.startMsg) -freecoursesite.com,livsavr.co##+js(acs, eval, replace) -freecoursesite.com##+js(nostif, show) -scubidu.eu##+js(aost, String.prototype.charCodeAt, ai_) -scubidu.eu###custom_html-15 -scubidu.eu###custom_html-16 -root-top.com##+js(aopr, adblockblock) -!#if env_firefox -||cibntv.net/youku/$media,important,redirect=none:10,from=youku.com -!#endif -||cibntv.net/youku/*$media,redirect=noopmp3-0.1s,domain=youku.com -||valipl.cp31.ott.cibntv.net^$media,redirect=noopmp3-0.1s,domain=youku.com -youku.com##+js(nano-stb, , ,0) -@@||valipl.cp31.ott.cibntv.net^$xhr,domain=youku.com -*$image,redirect-rule=1x1.gif,domain=youku.com -! popunder celebjihad . com nsfw -celebjihad.com##+js(aopr, dataPopUnder) -||celebjihad.live^$3p -||leojmp.com^ -allmomsex.com,allnewindianporn.com,analxxxvideo.com,animalextremesex.com,anime3d.xyz,animefuckmovies.com,animepornfilm.com,animesexbar.com,animesexclip.com,animexxxsex.com,animexxxfilms.com,anysex.club,apetube.asia,asianfuckmovies.com,asianfucktube.com,asianporn.sexy,asiansex.*,asiansexcilps.com,beeg.fund,beegvideoz.com,bestasiansex.pro,bravotube.asia,brutalanimalsfuck.com,candyteenporn.com,daddyfuckmovies.com,desifuckonline.com,exclusiveasianporn.com,exteenporn.com,fantasticporn.net,fantasticyoungporn.com,fineasiansex.com,firstasianpussy.com,freeindiansextube.com,freepornasians.com,freerealvideo.com,fuck-beeg.com,fuck-xnxx.com,fuckasian.pro,fuckfuq.com,fuckundies.com,gojapaneseporn.com,golderotica.com,goodyoungsex.com,goyoungporn.com,hardxxxmoms.com,hdvintagetube.com,hentaiporn.me,hentaisexfilms.com,hentaisexuality.com,hot-teens-movies.mobi,hotanimepornvideos.com,hotanimevideos.com,hotasianpussysex.com,hotjapaneseshows.com,hotmaturetube.com,hotmilfs.pro,hotorientalporn.com,hotpornyoung.com,hotxxxjapanese.com,hotxxxpussy.com,indiafree.net,indianpornvideo.online,japanfuck.*,japanporn.*,japanpornclip.com,japanesetube.video,japansex.me,japanesexxxporn.com,japansporno.com,japanxxx.asia,japanxxxworld.com,keezmovies.surf,lingeriefuckvideo.com,liveanimalporn.zooo.club,madhentaitube.com,megahentaitube.com,megajapanesesex.com,megajapantube.com,milfxxxpussy.com,momsextube.pro,momxxxass.com,monkeyanimalporn.com,moviexxx.mobi,newanimeporn.com,newjapanesexxx.com,nicematureporn.com,nudeplayboygirls.com,openxxxporn.com,originalindianporn.com,originalteentube.com,pig-fuck.com,plainasianporn.com,popularasianxxx.com,pornanimetube.com,pornasians.pro,pornhat.asia,pornheed.online,pornjapanesesex.com,pornomovies.asia,pornvintage.tv,primeanimesex.com,realjapansex.com,realmomsex.com,redsexhub.com,retroporn.world,retrosexfilms.com,sex-free-movies.com,sexanimesex.com,sexanimetube.com,sexjapantube.com,sexmomvideos.com,sexteenxxxtube.com,sexxxanimal.com,sexyoungtube.com,sexyvintageporn.com,sopornmovies.com,spicyvintageporn.com,sunporno.club,tabooanime.club,teenextrem.com,teenfucksex.com,teenhost.net,teensex.*,teensexass.com,tnaflix.asia,totalfuckmovies.com,totalmaturefuck.com,txxx.asia,vintagetube.*,voyeurpornsex.com,warmteensex.com,wetasiancreampie.com,wildhentaitube.com,wowyoungsex.com,xhamster-art.com,xmovie.pro,xnudevideos.com,xnxxjapon.com,xpics.me,xvide.me,xxxanimefuck.com,xxxanimevideos.com,xxxanimemovies.com,xxxhentaimovies.com,xxxhothub.com,xxxjapaneseporntube.com,xxxlargeporn.com,xxxmomz.com,xxxmovies.*,xxxpornmilf.com,xxxpussyclips.com,xxxpussysextube.com,xxxretrofuck.com,xxxsex.pro,xxxsexyjapanese.com,xxxteenyporn.com,xxxvideo.asia,xxxvideos.ink,xxxyoungtv.com,youjizzz.club,youngpussyfuck.com##+js(aopr, popit) -allmomsex.com,allnewindianporn.com,analxxxvideo.com,animalextremesex.com,anime3d.xyz,animefuckmovies.com,animepornfilm.com,animesexbar.com,animesexclip.com,animexxxsex.com,animexxxfilms.com,anysex.club,apetube.asia,asianfuckmovies.com,asianfucktube.com,asianporn.sexy,asiansex.*,asiansexcilps.com,beeg.fund,beegvideoz.com,bestasiansex.pro,bravotube.asia,brutalanimalsfuck.com,candyteenporn.com,daddyfuckmovies.com,desifuckonline.com,exclusiveasianporn.com,exteenporn.com,fantasticporn.net,fantasticyoungporn.com,fineasiansex.com,firstasianpussy.com,freeindiansextube.com,freepornasians.com,freerealvideo.com,fuck-beeg.com,fuck-xnxx.com,fuckasian.pro,fuckfuq.com,fuckundies.com,gojapaneseporn.com,golderotica.com,goodyoungsex.com,goyoungporn.com,hardxxxmoms.com,hdvintagetube.com,hentaiporn.me,hentaisexfilms.com,hentaisexuality.com,hot-teens-movies.mobi,hotanimepornvideos.com,hotanimevideos.com,hotasianpussysex.com,hotjapaneseshows.com,hotmaturetube.com,hotmilfs.pro,hotorientalporn.com,hotpornyoung.com,hotxxxjapanese.com,hotxxxpussy.com,indiafree.net,indianpornvideo.online,japanfuck.*,japanporn.*,japanpornclip.com,japanesetube.video,japansex.me,japanesexxxporn.com,japansporno.com,japanxxx.asia,japanxxxworld.com,keezmovies.surf,lingeriefuckvideo.com,liveanimalporn.zooo.club,madhentaitube.com,megahentaitube.com,megajapanesesex.com,megajapantube.com,milfxxxpussy.com,momsextube.pro,momxxxass.com,monkeyanimalporn.com,moviexxx.mobi,newanimeporn.com,newjapanesexxx.com,nicematureporn.com,nudeplayboygirls.com,openxxxporn.com,originalindianporn.com,originalteentube.com,pig-fuck.com,plainasianporn.com,popularasianxxx.com,pornanimetube.com,pornasians.pro,pornhat.asia,pornheed.online,pornjapanesesex.com,pornomovies.asia,pornvintage.tv,primeanimesex.com,realjapansex.com,realmomsex.com,redsexhub.com,retroporn.world,retrosexfilms.com,sex-free-movies.com,sexanimesex.com,sexanimetube.com,sexjapantube.com,sexmomvideos.com,sexteenxxxtube.com,sexxxanimal.com,sexyoungtube.com,sexyvintageporn.com,sopornmovies.com,spicyvintageporn.com,sunporno.club,tabooanime.club,teenextrem.com,teenfucksex.com,teenhost.net,teensex.*,teensexass.com,tnaflix.asia,totalfuckmovies.com,totalmaturefuck.com,txxx.asia,vintagetube.*,voyeurpornsex.com,warmteensex.com,wetasiancreampie.com,wildhentaitube.com,wowyoungsex.com,xhamster-art.com,xmovie.pro,xnudevideos.com,xnxxjapon.com,xpics.me,xvide.me,xxxanimefuck.com,xxxanimevideos.com,xxxanimemovies.com,xxxhentaimovies.com,xxxhothub.com,xxxjapaneseporntube.com,xxxlargeporn.com,xxxmomz.com,xxxmovies.*,xxxpornmilf.com,xxxpussyclips.com,xxxpussysextube.com,xxxretrofuck.com,xxxsex.pro,xxxsexyjapanese.com,xxxteenyporn.com,xxxvideo.asia,xxxvideos.ink,xxxyoungtv.com,youjizzz.club,youngpussyfuck.com##+js(aeld, popstate, noPop) -twister.porn##+js(aopr, open) -xpics.me##+js(nowoif) -fuckundies.com##+js(acs, puShown, /doOpen|popundr/) -hotxxxpussy.com,openxxxporn.com,xxxlargeporn.com,xxxpussyclips.com,xxxpussysextube.com##.imbar -##.ave-pl -##.bottom-hor-block -##.brs-block -finevids.xxx##.spot3-holder -hentaisexuality.com###popwindow -livejapaneseporn.com##body > div > div > aside[class] -pornjapanese.me##.bottom-spot-area -pornjapanese.me##[class$="spots-area"] -teencumpot.com###spot-holder -xnxxjapon.com###asg-inplayer-block:upward(4) -xxmovz.com##+js(aopr, decodeURI) -xxmovz.com##.ad -xxxvideos.ink###hidme -xxxvideos.ink##li.plate:has(iframe[width="300"]) -xxxvideos.ink##.curiosity -/quwet.js$script,1p -||all-usanomination.com^$3p -||willalland.info^ -##.advboxemb -freeporn.works##.show -freeporn.works##.past -||freeporn.works/seven.aspx? -||clivads.com^ -||sexxx.kim/literature.xhtml? -||granny.asia/partner.xhtml? -xvideo.party##.pride.dump -||xvideo.party/shop.aspx? -mtlblog.com,narcity.com##+js(aopw, Ha) -komikcast.*##+js(aeld, load, onload) -komikcast.*##+js(aopr, open) -@@||komikcast.*^$ghide -||blogspot.*/*.gif$image,domain=komikcast.* -vidcloud.*##+js(acs, atob, decodeURIComponent) -vidcloud.*##+js(acs, Math, XMLHttpRequest) -@@||vidcloud.*^$ghide -streamingworld.*##+js(acs, atob, decodeURIComponent) -streamingworld.*##+js(aopr, AaDetector) -streamingworld.*##+js(aopw, Fingerprint2) -*$script,3p,denyallow=googleapis.com,domain=streamingworld.club -l23movies.*,123moviess.*,123movieshub.*##+js(acs, JSON.parse, atob) -0l23movies.*##+js(aopr, rid) -123moviess.*##+js(aost, document.createElement, inlineScript) -||d1b0fk9ns6n0w9.cloudfront.net^ -||mousheen.net^ -123moviesfree.*##+js(nowoif) -123moviesd.com,123moviesjr.cc,123moviess.se##+js(aopr, mm) -! yesmovies .vc/. ws/. org/ .mn -yesmovies.*##+js(nowoif) -yesmovies.*##+js(aopr, AaDetector) -yesmovies.*##+js(nowebrtc) -/sw-vodlocker.to.js$script -yesmovies.*##a.btn-successful -solarmovie.*##+js(aopr, AaDetector) -solarmovie.*##+js(nowoif) -solarmovie.*##.close -solarmovie.*##[href*="/4k"] -solarmovie.*##table.movie_version:has-text(Promo) -solarmovie.*##div.row:has-text(in HD) -solarmovie.*##.jw-reset.jw-logo-top-left.jw-logo -||solarmovie.vip/js/dab.min.js -mega4up.*,zeefiles.*##+js(ra, onclick, [onclick^="window.open"]) -zeefiles.*##+js(nano-stb, tick) -zeefiles.*##+js(nowoif) -mycoolmoviez.*##[href="javascript:void(0);"] -mycoolmoviez.*##+js(nowebrtc) -||mycoolmoviez.*/sw.js -mega4up.*##+js(nowoif) -putlocker9.*##+js(aopw, Fingerprint2) -putlocker9.*##.pframe:has([href^="javascript: void(0);"]) -k511.me##+js(acs, document.getElementById, undefined) -thepiratebay.*,thepiratebay10.org##+js(aopw, spot) -thepiratebay.*##+js(aopr, popjs.init) -audycje.tokfm.pl##+js(set, adsOk, true) -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=audycje.tokfm.pl -news-leader.com##+js(aopr, _sp_._networkListenerData) -ihub.live,naturalbd.com##+js(aopr, encodeURIComponent) -||ihub.live/sw.js$script,1p -||naturalbd.com/sw.js$script,1p -bdiptv.*##+js(aopr, AaDetector) -bdiptv.*##+js(nowoif) -@@||bdiptv.*^$ghide -bdlive.*###AdDiv -milfzr.com##+js(nowoif) -milfzr.com##+js(acs, String.prototype.charCodeAt, tabunder) -milfzr.com##.wpfp_custom_ad_content -milfzr.com###post-0 -||milfzr.com/*.gif$image -wemakesites.net##+js(acs, $, adBlockChecker) -hulu.com##+js(set, Object.prototype._parseVAST, noopFunc) -hulu.com##+js(set, Object.prototype.createAdBlocker, noopFunc) -hulu.com##+js(set, Object.prototype.isAdPeriod, falseFunc) -||assetshuluimcom-a.akamaihd.net/*.mp3$media,redirect=noopmp3-0.1s,domain=hulu.com -@@||hulu.com^$ghide -hulu.com###banner-ad-container -hulu.com##.ad-choices -hulu.com##+js(json-prune-fetch-response, breaks pause_ads video_metadata.end_credits_time, pause_ads) -hulu.com##+js(json-prune-fetch-response, breaks pause_ads video_metadata.end_credits_time, breaks) -hulu.com##+js(json-prune, breaks pause_ads video_metadata.end_credits_time, pause_ads) -hulu.com##+js(json-prune, breaks pause_ads video_metadata.end_credits_time, breaks) -hulu.com##+js(xml-prune, xpath(//*[name()="MPD"]/@mediaPresentationDuration | //*[name()="Period"][.//*[name()="BaseURL" and contains(text()\,'/ads-')]] | //*[name()="Period"]/@start), Period[id^="Ad"i], .mpd) -@@||adserver.iprom.net/adserver7$xhr,domain=rtl.hr -myjest.com##+js(nosiif, _$, 12345) -*$frame,domain=9ig.de,3p -rgl.vn##+js(set, blurred, false) -s.sseluxx.com##+js(nano-sib) -unlockapk.com##+js(aeld, load, onload) -@@||unlockapk.com^$ghide -@@||unlockapk.com^$script,1p -||googlesyndication.com/simgad/*$image,domain=unlockapk.com,redirect=1x1.gif -@@||googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=unlockapk.com -unlockapk.com##ins.adsbygoogle -reqlinks.net##+js(set, blurred, false) -mangovideo.*,pandamovies.pw##+js(acs, document.createElement, 'script') -pandamovies.pw##+js(acs, puShown, /doOpen|popundr/) -pandamovies.pw##+js(aopr, ExoLoader.serve) -pandamovies.pw##+js(nowoif) -mangovideo.*##+js(set, flashvars.popunder_url, '') -mangovideo.*##.sponsor -mangovideo.*##.top -mangovideo.*##.table -mangovideo.*##[target="_blank"] -@@||pandamovies.pw^$ghide -pandamovies.pw##.btn-lg.btn-block.btn -||mangovideo.*/sw.js$script,1p -||mangovideo.*/player/html.php?aid -*$script,3p,domain=mangovideo.* -||pradjadj.com^$csp=child-src *.google.com *.gstatic.com *.arc.io -pradjadj.com##[href="/advertise"] -pradjadj.com##.ABD_display -||pradjadj.com/*banner$image -siriusfiles.com##+js(nano-stb) -||siriusfiles.com/adframe.js$frame,redirect-rule=noop.html -@@||dvdporngay.com^$ghide -||dvdporngay.com/wp-content/themes/*/images/loading.gif$image -dvdporngay.com##+js(aopr, decodeURIComponent) -alimaniacky.cz##+js(acs, $, urlForPopup) -dozarte.com##+js(acs, document.getElementById, undefined) -dozarte.com##+js(ra, onclick) -dozarte.com###banana -shush.se##+js(set, check, true) -||shush.se/loader/load.js$script -emurom.net##+js(set, dvsize, 51) -emurom.net##+js(aost, jQuery, removeDLElements) -||s3.amazonaws.com/dmas-public/rubicon/bundle.js$script,domain=dailymotion.com -@@||dailymotion.com^$ghide -! cinemalibero .best popups/ ads -cinemalibero.*##+js(nowoif) -cinemalibero.*##+js(aopr, AaDetector) -allkpop.com##+js(set, isal, true) -gearingcommander.com##+js(nostif, /innerHTML|AdBlock/) -gearingcommander.com##+js(no-xhr-if, ads) -generate.plus##+js(nostif, checkStopBlock) -za.gl##+js(acs, document.addEventListener, click) -za.gl##+js(acs, document.getElementById, overlay) -za.gl##+js(acs, setInterval, location) -za.gl##+js(aopr, popad) -za.gl##+js(nowoif, !za.gl, 0) -za.gl##+js(set, document.hidden, true) -za.gl###ww -*$script,3p,denyallow=cloudflare.com|google.com|googleapis.com|gstatic.com,domain=za.gl -||earn-bitcoins.*/banner_ -||bmovies.*/bassets/js/jquery.watch.js$script,1p -bmovies.*###upgrade_pop -||bmovies.*/sw.js$script,1p -||doo6pwib3qngu.cloudfront.net^ -watchfree.*###vpnvpn -||filesenzu.com^$3p -rockit.it##.articolo-body-text-banner -@@||rockitecn.nohup.it/webnew/js/adv$script,domain=rockit.it -watchtvseries.*##+js(nowebrtc) -||watchtvseries.*/sw.js$script,1p -gazetedamga.com.tr##+js(aopw, importFAB) -bitlk.com##+js(aopr, open) -bitlk.com##+js(set, blurred, false) -! anti-adb wakanim.tv -@@||wakanim.tv^$script,xhr,1p -pickcrackpasswords.blogspot.com##+js(set, awm, true) -*$script,redirect-rule=noopjs,domain=debilizator.tv -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=debilizator.tv -||cdn.provesrc.com/provesrc.js -dramacool.*##h2.widget-title:has-text(Advertisement) -dramacool.*##[class$="_ads"] -*$script,3p,denyallow=cloudflare.com|facebook.net|fbcdn.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|recaptcha.net,domain=dramacool9.* -! http://fwd.ovh/J4NMS => http://qlinks.eu/J4NMS -qlinks.eu##+js(set, blurred, false) -||d.wedosas.net/i/$domain=qlinks.eu -simsdom.com##+js(nowoif) -simsdom.com##._ad -simsdom.com###ad860 -simsdom.com###adv840 -simsdom.com##._pubR -simsdom.com##._pubL -simsdom.com##div[id^="elm"][style="opacity: 1; display: block;"] -simsdom.com##+js(nano-sib, clearInterval, *) -@@||c.amazon-adsystem.com/aax2/apstag.js$script,domain=mylifetime.com -@@||mylifetime.com^$ghide -gomovies.*,gomoviesc.*##+js(nowoif) -gostream.*,gomovies.*##+js(set, check_adblock, true) -gomovies.*##+js(aopr, mm) -||gomovies.*/sw.js$script,1p -||haupsoti.net^ -getfreesmsnumber.com##+js(acs, document.getElementById, undefined) -link.3dmili.com##+js(set, blurred, false) -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=zattoo.com -kfrfansub.com##+js(set, adblockEnabled, false) -movisubmalay.*##+js(aopr, glxopen) -movisubmalay.*##+js(aopr, exoJsPop101) -! bayimg.com popups -bayimg.com##+js(aeld, /^(?:click|mousedown)$/, ppu) -avcesar.com##+js(nostif, adspot_top, 1500) -proxydocker.com##+js(nostif, (), 1000) -illicoporno.com##+js(set, is_adblocked, false) -*$popunder,domain=illicoporno.com -mobdi3ips.com##+js(aeld, load, onload) -short-fly.com##+js(set, blurred, false) -||ecotrackings.com^$3p -@@||audiotag.info^$script,1p -*$image,domain=audiotag.info,redirect-rule=1x1.gif -audiotag.info##+js(nostif, /offsetHeight|google|Global/) -legionpeliculas.org##+js(aopw, smrtSB) -legionpeliculas.org##+js(aopw, smrtSP) -latribunadelpaisvasco.com##+js(noeval) -hanime.tv##+js(set, ABLK, false) -@@||hanime.tv^$ghide -hanime.tv##a[href^="https://a.adtng.com/"] -hanime.tv##div:has(> a[href^="https://track.aftrk1.com/"]) -||members.hanime.tv/*/preroll_ad_event$xhr -@@||adtng.com/get/$frame,domain=hanime.tv,badfilter -!#if env_mobile -hanime.tv##.htvad[style^="width: 300px; display: block"] -hanime.tv##.htvnad1 -hanime.tv##.htvnad -!#endif -dokumen.tips##+js(nano-stb, , , 0.02) -tudigitale.it##+js(nostif, an_message, 500) -ibcomputing.com##+js(nostif, Adblocker, 10000) -footballstream.tv,mlbstream.tv,nbastream.tv,nflstream.tv##+js(acs, decodeURI, decodeURIComponent) -mlbstream.tv,nbastream.tv,nflstream.tv,nhlstream.tv##[href*="allsports4free.online/"] -mlbstream.tv,nbastream.tv,nhlstream.tv##[href^="https://pl.allsports4free.club/"] -||sports-streams-online.club^$3p -||givememmastreams.com^$3p -celeb.gate.cc##+js(aeld, click, native code) -celeb.gate.cc##[href^="https://goo.gl/"] -||strpjmp.com^ -bolly4u.*##+js(aopr, open) -bolly4u.*##+js(aopr, XMLHttpRequest) -bolly4u.*##.code-block -||d1pozdfelzfhyt.cloudfront.net^ -@@||f4links.*^$ghide -androidweblog.com##.stream-item -androidweblog.com##[class^="andro-random-paragraph"] -pogo.com##+js(set, pogo.intermission.staticAdIntermissionPeriod, 0) -@@||cdn.pogo.com/*/blockadblock$script,1p -@@||cdn.pogo.com/*/imasdk/application.js$script,1p -@@||cdn.pogo.com/*/imasdk/imasdk-pogo-1.0.js$script,1p -@@||cdn.pogo.com/*/imasdk/video_player.js$script,1p -@@||cdn.pogo.com/*prebid.js$script,1p -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=pogo.com -@@||pogo.com^$ghide -pogo.com##.hideableAd -pogo.com###leaderboard-ad -pogo.com##[class*="gameSkyscraperAd"] -pogo.com##[class*="gameTopAd"] -@@||torrent9.*^$ghide -torrent9.*##+js(aeld, , _0x) -torrent9.*###vpnvpn -||retdaz.fun^$all -||cloudvideo.tv/sw.js$script,1p -cloudvideo.tv##+js(set, SubmitDownload1, noopFunc) -cloudvideotv.*,cloudvideo.tv##+js(nowoif) -cloudvideotv.*##+js(aopr, localStorage) -cloudvideo.tv##+js(aopr, mm) -bdsmporn.cc,cocoporn.net,dirtyporn.cc,faperplace.com,freeadultvideos.cc,freepornstream.cc,generalpornmovies.com,kinkyporn.cc,moviesxxx.cc,movstube.net,onlinefetishporn.cc,peetube.cc,pornonline.cc,porntube18.cc,streamextreme.cc,streamporn.cc,videoxxx.cc,watchporn.cc,x24.video,xxxonline.cc,xxxonlinefree.com,xxxopenload.com##+js(acs, decodeURI, decodeURIComponent) -bdsmporn.cc,cocoporn.net,dirtyporn.cc,faperplace.com,freeadultvideos.cc,freepornstream.cc,generalpornmovies.com,kinkyporn.cc,moviesxxx.cc,movstube.net,onlinefetishporn.cc,peetube.cc,pornonline.cc,porntube18.cc,streamextreme.cc,streamporn.cc,videoxxx.cc,watchporn.cc,x24.video,xxx24.vip,xxxonline.cc,xxxonlinefree.com,xxxopenload.com##+js(aopr, exoJsPop101) -startseite.to##+js(nowebrtc) -@@||startseite.to^$ghide -@@||getfreebit.xyz^$ghide -fautsy.com##+js(nano-sib, seconds) -@@||fautsy.com^$ghide -||fautsy.com/adblock.php$xhr,redirect-rule=nooptext,1p -fautsy.com##.coinzilla -fautsy.com##ins[class][style^="display:inline-block;width:"] -legia.net##+js(nostif, timeoutChecker) -legionprogramas.org##+js(aopw, smrtSB) -legionprogramas.org##+js(aopw, smrtSP) -legionjuegos.org,legionpeliculas.org,legionprogramas.org##+js(nano-sib, , ,0.02) -legionjuegos.org,legionpeliculas.org,legionprogramas.org##+js(set, t, 0) -||ouo.*^$popup,domain=legionjuegos.org|legionpeliculas.org|legionprogramas.org -||adxxx.com^$3p -wiztube.xyz##+js(aopr, BetterJsPop) -wiztube.xyz##+js(acs, Math.floor, vpn) -wiztube.xyz##+js(set, adblockcheck, false) -kinoger.to##+js(nowebrtc) -kinoger.ru##+js(nowoif) -kinoger.re##+js(nostif, 0x) -kinoger.ru##+js(aopr, my_pop) -kinoger.to##a[href^="//fbmedia-ckl.com/get"] -||notifyvideo.info/p/creative-video/*$media,3p,redirect=noopmp4-1s -xxxbunker.com##+js(nowoif) -||static.xxxbunker.com/preroll/*$media,1p -clasicotas.org##+js(aopr, nombre_dominio) -clasicotas.org##+js(nowoif) -||clasicotas.org/themes/*/js/links.js$script,1p -moretvtime.*##+js(acs, adBlockDetected) -moretvtime.*##.sc-banner -||aterroppop.com^ -||pandanetwork.club^$3p,script -/?r=dir&zoneid=$all -||letaikay.net^ -watchjavonline.com##+js(acs, atob, decodeURIComponent) -||artofxxx.net^$image,domain=watchjavonline.com -tvguia.es##+js(acs, $, .height) -foxseotools.com##+js(nowoif, !?safelink_redirect=) -foxseotools.com##+js(set, blurred, false) -foxseotools.com##form#go-popup:remove() -@@||foxseotools.com^$ghide -foxseotools.com##.iframe-overlay -*$frame,denyallow=facebook.com|google.com|youtube.com,domain=foxseotools.com -*$script,3p,denyallow=akamaiedge.net|cloudflare.com|facebook.net|fbcdn.net|google.com|googleapis.com|gstatic.com|pinterest.com|recaptcha.net,domain=foxseotools.com -123movierulz.*,7movierulz1.*,7moviesrulz.*,5movierulz2.*,movieruls.*,movierulz.*,movierulzfree.*,movierulz2free.*,movierulzs.*,movierulzwatch.*,movierulzz.*,moviesrulz.*,moviesrulzfree.*,watchmoviesrulz.com##+js(nowoif) -movierulzlink.*,newmovierulz.*##+js(aopr, String.fromCharCode) -4movierulz.*,4movierulz1.*,7movierulzfree.*,movieruls.*,movierulz4k.*,movierulzfree.*,movierulz2free.*,movierulzwatch.*,movierulzs.*##.ad_btn-white -123movierulz.*,4movierulz.*,4movierulz1.*,7movierulzfree.*,7moviesrulz.*,movieruls.*,movierulz4k.*,movierulzfree.*,movierulz2free.*,movierulzs.*,movierulzwatch.*,movierulzz.*,moviesrulz.*,moviesrulzfree.*,watchmovierulz.*,watchmoviesrulz.com##.ad_watch_now -7moviesrulz.com,movierulzfree.*,movierulzs.*##.hd-buttons -123movierulz.*,4movierulz.*,4movierulz1.*,5movierulz2.*,7moviesrulz.*,movieruls.*,movierulz4k.*,moviesrulz.*,moviesrulzfree.*,movierulz2free.*##.btn1 -7movierulzfree.*##.display\:none\;\"hd-buttons\" -||hellrider.live^$3p -||suftanzine.com^ -6hiidude.gold##+js(acs, document.documentElement, break;case $.) -6hiidude.gold##+js(href-sanitizer, a[href^="https://cdns.6hiidude.gold/file.php?link=http"], ?link) -6hiidude.gold##p > a[href*="/4/"][target="_blank"] -||9xmovies.*/sw.js$script,1p -couchtuner.*##+js(acs, RegExp, 0x) -||couchtuner.*/sw.js$script,1p -dutchycorp.*##+js(acs, eval, replace) -dutchycorp.*##center > .hide-on-med-and-down -dutchycorp.*##[class^="bmadblock"] -dutchycorp.*##div[class][style="width:468px;height:60px;display: inline-block;margin: 0 auto"] -dutchycorp.*##+js(nano-sib, time.html, 1000) -dutchycorp.*##+js(set, blurred, false) -@@||dutchycorp.*^$ghide -dutchycorp.*##ins.adsbygoogle -dutchycorp.*##[class$="-page"] .box-main center center -dutchycorp.*##[class$="-page"] > .hide-on-small-only -dutchycorp.*##[class$="-page"] > .container > .row > .col-md-offset-1 .text-left > *:not(.box-main) -dutchycorp.*##[class$="-page"] center > p -dutchycorp.*##.box-main > .row > center -dutchycorp.*##.box-main > center > div -dutchycorp.*##.nav-ad -dutchycorp.*##.row [style*="width:728px;height:90px"] -dutchycorp.*##.sidenav_left -dutchycorp.*##.sidenav_right -dutchycorp.*##[id*="ScriptRoot"] -dutchycorp.*##[style*="width:300px;height:250px"] -dutchycorp.*###link-view [style^="width:468px"] -dutchycorp.*###boxes -dutchycorp.*###link-view > center > br -*$frame,denyallow=cloudflare.com|facebook.com|google.com|hcaptcha.com|youtube.com|jungleofferwall.com,domain=dutchycorp.* -*$script,redirect-rule=noopjs,from=dutchycorp.*,to=~sentry-cdn.com -autofaucet.dutchycorp.space##.show-on-medium -@@||googletagmanager.com/gtag/js$script,domain=autofaucet.dutchycorp.* -@@||cdnjs.cloudflare.com^$script,domain=autofaucet.dutchycorp.* -@@||imasdk.googleapis.com^$script,domain=autofaucet.dutchycorp.* -dutchycorp.*##+js(rmnt, script, /adblock.php) -sexgalaxy.net##+js(nowoif) -||watchserieshd.watch/ajax/banner/$xhr,1p -mtsproducoes.*##+js(aopw, block_detected) -zooqle.*##+js(aeld, /^(?:mousedown|mouseup)$/, 0x) -16honeys.com##+js(set, ckaduMobilePop, noopFunc) -socks24.org##+js(aeld, load, onload) -socks24.org##[href^="http://www.linkev.com/"] -tugaflix.*##+js(aopr, open) -mongri.net##+js(aopw, adBlockDetected) -@@||nonsensediamond.*^$ghide -nonsensediamond.*##+js(aopr, decodeURI) -planetf1.com##+js(aopr, CatapultTools) -easy-coin.*##+js(acs, Math.random, banner) -@@||eestatic.com/*/adsbygoogle.js$script,domain=elespanol.com -elespanol.com##+js(set, tieneAdblock, 0) -masterplayer.xyz##+js(aeld, click, popundr) -onifile.com,topflix.*##+js(nano-sib) -topflix.*##+js(nowoif) -@@||topflix.*^$ghide -topflix.*##+js(aopr, console.clear) -||ads.exoclick.com^$script,redirect=noopjs,domain=uflash.tv -@@||uflash.tv^$ghide -uflash.tv#@#.ad -@@||exosrv.com/popunder1000.js$script,domain=uflash.tv -uflash.tv##+js(aopw, ads_priv) -uflash.tv##.advertisement -uflash.tv##[id^="ad-float"] -uflash.tv##+js(nowoif, adblock, 1, obj) -uflash.tv##+js(no-fetch-if, ujsmediatags method:HEAD) -jizzbunker.com##+js(rpnt, script, /\$.*embed.*.appendTo.*;/, , condition, appendTo) -jizzbunker.com,xxxdan.com##+js(aopw, spot) -jizzbunker.com##+js(aopr, XMLHttpRequest) -jizzbunker.com##+js(aopr, Notification) -jizzbunker.com##.banner-popup -jizzbunker.com##.panel-rklcontent-wide -jizzbunker.com##.panel-body -porndex.com##+js(aeld, click) -remodelista.com##+js(set, adsAreBlocked, false) -remodelista.com##[data-advert] -club-flank.com##+js(aopr, ExoLoader.serve) -idedroidsafelink.*,links-url.*##+js(aeld, load, onload) -hackstore.*##.onp-sl-content:style(display: block !important;) -hackstore.*##.onp-sl-social-locker -hackstore.me##+js(acs, spr) -##[href^="//look.utndln.com/offer"] -@@*$ghide,domain=drivelinks.me|hackshort.me|pelislinks.me -*$popunder,domain=drivelinks.me|hackshort.me|pelislinks.me -drivelinks.me,hackshort.me,pelislinks.me##+js(acs, document.oncontextmenu) -drivelinks.me,hackshort.me,pelislinks.me##+js(acs, document.onmousedown) -@@*$ghide,domain=freeserverhostingweb.club|me-encantas.com|tanfacil.net|tecnoaldia.net -freeserverhostingweb.club,me-encantas.com,mexicogob.com,noticiascripto.site,tanfacil.net,tecnoaldia.net,todoandroid.live##+js(acs, document.oncontextmenu) -freeserverhostingweb.club,me-encantas.com,mexicogob.com,noticiascripto.site,tanfacil.net,tecnoaldia.net,todoandroid.live##+js(acs, document.onkeydown) -freeserverhostingweb.club,me-encantas.com,mexicogob.com,noticiascripto.site,tanfacil.net,tecnoaldia.net,todoandroid.live##+js(acs, document.onmousedown) -||ads-twitter.com/uwt.js$xhr,3p,redirect-rule=noop.txt -noticiascripto.site##.pb -compucalitv.com##.onp-sl-content:style(display: block !important;) -compucalitv.com##.onp-sl-social-locker -compucalitv.com##+js(aeld, DOMContentLoaded, compupaste) -compucalitv.com##+js(aopr, redirectURL) -compucalitv.com##.botondescarga -*$script,3p,denyallow=chatango.com,domain=compucalitv.com -||gigaleecher.com/templates/plugmod/giga.js$script,1p -teknorizen.*##+js(set, safelink.adblock, false) -hdfriday.*##+js(aopr, open) -||pub-3d10bad2840341eaa1c7e39b09958b46.r2.dev^$3p -extramovies.*##.textwidget > a[target="_blank"] > img -extramovies.*##.stickyzone -extramovies.*##.gridshow-header-img -extramovies.*##.gridshow-widget-box-inside -@@||googletagmanager.com/gtm.js$script,domain=ciudad.com.ar -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=gameswf.com -mangasail.*##+js(set, adblock, 1) -daizurin.com##+js(nostif, nextFunction, 250) -animekb.*##+js(nowebrtc) -@@||webtvhd.com^$ghide -@@||webserver.one^$ghide -webtvhd.com##[id*="ScriptRoot"] -webtvhd.com##ins.adsbygoogle -webserver.one##ins.adsbygoogle -webserver.one##div[id^="imCell_"][class=""]:has-text(/Advertisement/i) -webserver.one##[id*="ScriptRoot"] -coolmathgames.com##+js(nano-sib) -coolmathgames.com##+js(set, cmgpbjs, false) -coolmathgames.com##+js(set, displayAdblockOverlay, false) -coolmathgames.com##+js(set, google, false) -coolmathgames.com###block-adstop-otherpage-728x90 -coolmathgames.com##[class*="-ads"] -||poweredbyliquidfire.mobi^ -! news-und-nachrichten.de anti adb -news-und-nachrichten.de##+js(set, adblock, false) -news-und-nachrichten.de##.adverts_billboard -news-und-nachrichten.de##.adverts_top -acapellas4u.co.uk##+js(nostif, bait, 1) -austin.culturemap.com##+js(aopr, CatapultTools) -t-online.de##^script:has-text(}(window);) -t-online.de##^script:has-text(,window\);) -t-online.de##^script:has-text(toscr\') -email.t-online.de#@#^script:has-text((window);) -email.t-online.de#@#^script:has-text(,window\);) -@@||t-online.de^$ghide -t-online.de##[href^="http://pubads.g.doubleclick.net"] -!#if env_mobile -pcgames.de,t-online.de#@#+js(set, CustomEvent, noopFunc) -!#endif -t-online.de##[href^="https://ad1.adfarm1.adition.com"] -t-online.de###Tasfeed1 -t-online.de###T-Shopping -kstreaming.*##+js(aopw, Fingerprint2) -kstreaming.*##+js(nowebrtc) -atomohd.*##+js(nowoif, !atomtt) -atomohd.*##+js(acs, setTimeout, admc) -pctfenix.*,pctnew.*##+js(acs, I833) -pctfenix.*,pctnew.*##+js(aopr, AaDetector) -pctfenix.*,pctnew.*##+js(aopr, TID) -atomixhq.*,pctfenix.*,pctnew.*##+js(aopw, adcashMacros) -atomixhq.*,pctfenix.*,pctnew.*##+js(nowoif, !/download\/|link/) -atomixhq.*,pctfenix.*,pctnew.*##.ads -*$script,3p,denyallow=cloudflare.net|fontawesome.com|googleapis.com|hwcdn.net|jquery.com,domain=atomixhq.*|pctfenix.* -atomtt.com##+js(acs, setTimeout, admc) -@@||acorta-enlace.com^$ghide -||pctnew.*/sw.js$script -atomohd.*##.ads -||atomohd.*/*/banners$image -*/script/pattern.js|$script -audiofanzine.com##+js(set, Math.pow, noopFunc) -hubzter.com##+js(aopr, adsanity_ad_block_vars) -! sport stuff -/adu.php$frame,3p -allfeeds.*,daddylive.*,sporting77.*,teleriumtv.*##+js(nowoif) -allfeeds.*,teleriumtv.*###overlay -! lewdzone. com popups -lewdzone.com##+js(aopr, decodeURI) -lewdzone.com##+js(nano-sib, circle_animation) -lewdzone.com##+js(nano-stb, CountBack, 990) -@@||lewdzone.com^$ghide -||lewdzone.com/wp-content/themes/lz/assets/affiliate/$image -lewdzone.com##.ad_overlay, .ad, [href^="https://theporndude.com"] -lewdzone.com##.affiliate-block -lewdzone.com##.alzd -lewdzone.com##.Leaderboard -lewdzone.com##.item.widget_text -lewdzone.com##.site-margin > .container-block div:has(> .item.widget_text) -lewdzone.com###ad_vid -problogbooster.com##+js(aopw, hidekeep) -ispunlock.*,tpb.*##+js(aopr, pace) -||d3t9nyds4ufoqz.cloudfront.net^ -robloxscripts.com##+js(nostif, ai_adb) -megafile.io##+js(nosiif, (), 5000) -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=megafile.io -||padsims.com^ -@@||geoguessr.com/_ads/*$script,1p -@@||geoguessr.com^$xhr,1p -skpb.live##+js(acs, atob, decodeURIComponent) -link-to.net##+js(aeld, load, nextFunction) -link-to.net##+js(nano-sib) -@@||link-to.net^$ghide -||link-to.net^$image,redirect-rule=1x1.gif,1p -link-to.net##.ad-block-1 -123movies.*##+js(aopr, open) -||d13jhr4vol1304.cloudfront.net^ -||oppfiles.com/common/scriptjs.php -/jquery.watch.js|$script,1p,important,domain=~dekrantvantoen.nl -@@||static.sunmedia.tv^$script,xhr,domain=ivoox.com -@@||services.sunmedia.tv/geotarget/geocity.php$xhr,domain=ivoox.com -@@||ivoox.com^$ghide -ivoox.com###adLayout -||static.addevweb.com/integrations$script,3p -*$script,3p,domain=7starhd.*,denyallow=googleapis.com -7starhd.*##+js(nowoif) -||r-q-e.com^$3p -autojournal.fr,autoplus.fr,sportauto.fr##+js(nostif, (), 1) -uploadev.*##+js(nowoif) -uploadev.*##+js(set, openInNewTab, noopFunc) -volksstimme.de##+js(aopr, TRM) -@@||shortearn.*^$ghide -shortearn.*##.banner -shortearn.*##+js(aopr, AaDetector) -shortearn.*##+js(aopr, open) -shortearn.*##+js(set, blurred, false) -shortearn.*##.box-main > .blog-item -beta.shortearn.eu##+js(acs, fetch, detectAdblockWithInvalidURL) -beta.shortearn.eu##^script:has-text(detectAdblockWithInvalidURL) -*$frame,denyallow=google.com,domain=shortearn.in -*$script,3p,denyallow=cloudflare.com|google.com|gstatic.com|recaptcha.net,domain=shortearn.* -4shared.com##+js(nosiif, .append, 1000) -||4shared.com/empty.js$script,1p,important -||4shared.com/sw.js$script,important -pingit.*,~pingit.com,~pingit.me,pngit.live##+js(aopr, AaDetector) -pingit.*,~pingit.com,~pingit.me,pngit.live##+js(aopr, open) -pingit.*,~pingit.com,~pingit.me,pngit.live##+js(aopr, rmVideoPlay) -pingit.*,~pingit.com,~pingit.me,pngit.live##+js(aopr, _pop) -pingit.*,~pingit.com,~pingit.me,pngit.live##+js(aopw, Fingerprint2) -pingit.*,~pingit.com,~pingit.me,pngit.live##+js(set, blurred, false) -||pingit.*/sw.js$script,1p,domain=~pingit.com|~pingit.me -*$frame,3p,domain=pingit.im|pngit.live -*$script,3p,denyallow=cdn77.org|google.com|gstatic.com|pingit.im|recaptcha.net|smartsuppcdn.com|smartsuppchat.com,domain=pingit.*|pngit.live|~pingit.com|~pingit.me -noticiasesports.live,noweconomy.live##+js(nano-sib, , 1200, 0) -noticiasesports.live,noweconomy.live##+js(nowoif) -noticiasesports.live,noweconomy.live###overlay -noweconomy.live##+js(set, adblockDetector, noopFunc) -noweconomy.live##+js(ra, disabled, button[id="invisibleCaptchaShortlink"]) -pelisplay.*##+js(aopw, smrtSB) -pelisplay.*##+js(aopw, smrtSP) -pelisplay.*##+js(acs, document.write, advnetwork) -pelisplay.*##+js(disable-newtab-links) -pelisplay.*#@#[href*="/afu.php"] -pelisplay.*##[data-lang="Publicidad"] -@@||chichester.co.uk^$ghide -hdfull.*##+js(acs, document.createElement, /l\.parentNode\.insertBefore\(s/) -hdfull.*##+js(aeld, mousedown, !!{});) -hdfull.*##+js(nano-stb) -gamovideo.com##+js(acs, onload) -gamovideo.com##+js(aopr, open) -gamovideo.com##+js(acs, document.createElement, onerror) -gamovideo.com###po-pimp -||gamovideo.com^$frame,1p -hitokin.net##+js(set, loadingAds, true) -||swarm.video/telerium_dev.js -! developerinsider.co anti adb -developerinsider.co##+js(set, runAdBlocker, false) -phonenumber-lookup.info##+js(aopr, pa) -! loadTool -abellalist.com,didilist.com,erotichdworld.com,sharkyporn.com##+js(acs, loadTool, popping) -! nextorrent . site popups -nextorrent.*##+js(acs, jQuery, popunder) -nextorrent.*##+js(ra, onclick) -closeronline.co.uk##+js(aopr, _sp_._networkListenerData) -calculate.plus##+js(nostif, checkStopBlock) -turkdown.com##+js(aopr, AaDetector) -link.turkdown.com##+js(set, blurred, false) -@@||turkdown.com^$ghide -@@||hilly.io/adBlockDetector.js$script,1p -@@||hilly.io^$ghide -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=hilly.io -ilprimatonazionale.it#@#.td-ad-background-link -ilprimatonazionale.it##+js(set, td_ad_background_click_link, undefined) -ilprimatonazionale.it##body:style(background-image: none !important;) -urlgalleries.net##+js(aopr, AaDetector) -urlgalleries.net##+js(acs, document.cookie, setOCookie) -moonquill.com##+js(aopw, document.getElementsByClassName) -googlvideo.com##+js(aopr, mm) -googlvideo.com##+js(nowoif) -@@||finobe.com^$ghide -@@||googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=finobe.com -*$script,redirect-rule=noopjs,domain=finobe.com -@@||convallariaslibrary.com^$ghide -convallariaslibrary.com##.code-block -convallariaslibrary.com##.widget_custom_html ins:upward(.widget_custom_html) -frag-mutti.de##.intext-ad -frag-mutti.de##.ad-loading:remove() -frag-mutti.de###campaign-popup -frag-mutti.de###fm-shadow -thehindu.com##+js(set, Adblock, false) -thehindu.com###gsi_overlay -maniac.de##+js(aopr, td_ad_background_click_link) -maniac.de##[href^="https://www.maniac.de/linkout/"] -cambro.tv##+js(acs, document.addEventListener, initBCPopunder) -cambro.tv##+js(acs, crakPopInParams) -cambro.tv##+js(aopr, onload) -cambro.tv##.box.rltdsldr -cambro.tv##.bttsptt.box -cambro.tv##[href^="https://go.strpjmp.com"] -||cambro.tv/contents/*/player/*$media,1p -||cambro.tv/player/html.php$frame,1p -*$popunder,domain=cambro.tv -||liveflirt.net^$frame,domain=cambro.tv -cambro.tv###kt_player > [href^="https://www.cambro.tv/"] -cambro.tv##.crak_cams_ctn -cambro.tv##.fp-brand -cambro.tv##[href^="https://t.grtya.com/"] -||widgets.skyprivate.com/promo/$frame -cambro.tv##+js(set, flashvars.logo_url, '') -cambro.tv##+js(set, flashvars.logo_text, '') -nibelungen-kurier.de##+js(set, nlf.custom.userCapabilities, false) -coolsoft.altervista.org##+js(nostif, _0x) -coolsoft.altervista.org###block-block-30 -coolsoft.altervista.org###content-right-floatbox -@@||hanimesubth.com/assets/js/ads.core.js$script,1p -hanimesubth.com##+js(aeld, load, nextFunction) -hanimesubth.com##[href="https://slotgame66.co/"] -*.gif$domain=hanimesubth.com,image -*.webp$domain=hanimesubth.com,image,3p -watchkobestreams.info##+js(aost, atob, inlineScript) -*$script,3p,domain=fromwatch.com,denyallow=cloudflare.com|googleapis.com -tcheats.com##+js(aopr, checkAds) -gamekult.com##+js(aopr, SmartWallSDK) -gsmturkey.net##+js(aeld, load, nextFunction) -*$script,3p,domain=gsmturkey.net,redirect-rule=noopjs -@@||cdnjs.cloudflare.com/ajax/libs/*$script,domain=warda.at -dz4up1.com##+js(acs, document.getElementById, adblockinfo) -readmng.com#@#.scroll_target_top -ciudadgamer.com##+js(acs, atob, encodeURIComponent) -ovagames.com##+js(acs, JSON, _0x) -ovagames.com###adter:upward(3) -ovagames.com##.single-entry-titles:has-text(Sponsor) -@@||ovagames.com^$ghide -mmacore.tv##+js(acs, $, importFAB) -@@||mmacore.tv^$ghide -laprovence.com,viedemerde.fr##+js(acs, document.createElement, __esModule) -@@||svonm.com/hd-main.js$script,domain=kicker.de|kino.de|videos.giga.de|video.spieletipps.de -!#if env_chromium -@@||svonm.com/hd-main.js$script,domain=kicker.de|kino.de|videos.giga.de|video.spieletipps.de,badfilter -!#endif -!#if env_firefox -@@||svonm.com/hd-main.js$script,domain=kicker.de|kino.de|videos.giga.de|video.spieletipps.de,badfilter -!#endif -!#if env_edge -@@||svonm.com/hd-main.js$script,domain=kicker.de|kino.de|videos.giga.de|video.spieletipps.de,badfilter -!#endif -!#if env_safari -@@||svonm.com/hd-main.js$script,domain=kicker.de|kino.de|videos.giga.de|video.spieletipps.de,badfilter -!#endif -!#if env_mobile -@@||svonm.com/hd-main.js$script,domain=kicker.de|kino.de|videos.giga.de|video.spieletipps.de,badfilter -!#endif -symbolab.com##.googleLeftSkyScrapper -@@||googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=safelinkunited.blogspot.com -@@||pagead2.googlesyndication.com/pagead/$script,domain=safelinkunited.blogspot.com -safelinkunited.blogspot.com##.ADS -safelinkunited.blogspot.com##ins.adsbygoogle -||ipla.pluscdn.pl/p/*$media,redirect=noopmp4-1s,domain=polsatsport.pl -@@||redefineadpl.hit.gemius.pl^$xhr,domain=polsatsport.pl -@@||gemius.pl^$script,xhr,domain=polsatnews.pl -@@||hit.stat24.com/$xhr,domain=polsatnews.pl -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js,domain=polsatnews.pl -lookmovie.*##+js(aopr, adBlockDetected) -@@||lookmovie.*^$ghide -||metrika.lookmovie.io^$important -lookmovie.*##.view-top-ab -lookmovie.*##.notifyjs-corner -lookmovie.*##.nord-vpn.home-banner -lookmovie.*###single.dtsingle > .content > center > a[href] > img -lookmovie.*###single.dtsingle > .content > .sheader > .poster > .extra > center > a[href] > img -lookmovie.*##+js(aopr, mm) -lookmovie.ag.w3snoop.com##.ezoic-ad -streamhentaimovies.com##+js(nostif, pum-open) -||p-cdn.us/public/*$media,redirect=noopmp3-0.1s,domain=soundcloud.com -||sndcdn.com/audio/*$media,redirect=noopmp3-0.1s,domain=soundcloud.com -||soundcloud.com/audio-ad$1p,xhr -||soundcloud.com/promoted$1p,xhr -soundcloud.com##.soundList__item:has(.sc-promoted-icon-medium) -@@||virginmediatelevision.ie/player/$xhr,1p -@@||virginmediatelevision.ie/includes/js/cookienotice.js.pagespeed.$script,1p -! as suggested https://github.com/uBlockOrigin/uAssets/issues/5153 -*expires$media,redirect=noopmp3-0.1s,domain=kabeleins.de -*expires$media,redirect=noopmp3-0.1s,domain=kabeleinsdoku.de -*expires$media,redirect=noopmp3-0.1s,domain=sat1gold.de -*expires$media,redirect=noopmp3-0.1s,domain=sixx.de -||zomap.de/*&expires=$script,domain=kabeleins.de|kabeleinsdoku.de|sat1gold.de|sixx.de -vox.de##+js(no-xhr-if, svonm) -bharian.com.my##+js(aopr, SmartWallSDK) -! amyscans.com popups -amyscans.com##+js(aost, String.prototype.charCodeAt, ai_) -amyscans.com##+js(ra, href, #clickfakeplayer) -laradiobbs.net##+js(set, adblock, false) -!#if env_firefox -||fwmrm.net/ad/*$script,redirect=noopjs,domain=nationalgeographic.com -!#endif -nationalgeographic.fr##+js(no-xhr-if, /\/VisitorAPI\.js|\/AppMeasurement\.js/) -nationalgeographic.*##.ng-ad-banner -nationalgeographic.*##.ngart__footer-ad -mstream.*##+js(aopr, open) -ver-pelis-online.*##+js(set, decodeURIComponent, trueFunc) -ver-pelis-online.*##a.lav_btn -ver-pelis-online.*##[href$="player.html"] -ver-pelis-online.*##.holder >li:has([href="/pelis/descargar.html"]) -ver-pelis-online.*##a.eli_lav_btn, .mobile_btn -konten.co.id##+js(nostif, overlay, 2000) -@@||farsondigitalwatercams.com^$ghide -farsondigitalwatercams.com##.advert -! thefmovies . me popups -thefmovies.*##+js(aost, Math, inlineScript) -thefmovies.*##+js(nostif, '0x) -thefmovies.*##+js(nowoif) -thefmovies.*##.mobile-btn -sembunyi.in##+js(aopr, popjs) -series9.*##div[style="padding:15px 0;text-align:right;"] -@@||diariodenavarra.es^$ghide -diariodenavarra.es##+js(aeld, DOMContentLoaded, /adblock/i) -diariodenavarra.es##+js(nostif, /adblock/i) -diariodenavarra.es###AdSlot_megabanner -diariodenavarra.es##.sticky_roba -urlty.com##+js(set, blurred, false) -urlty.com##+js(aopr, open) -keepvid.*##+js(nowoif) -||player.ooyala.com/static/*/ad-plugin/*$script,redirect=noopjs,domain=dragons.com.au -xiaomifans.pl##+js(nostif, test, 100) -@@||rangdhanu.live^$ghide -streamporn.pw##+js(aopr, ExoLoader.serve) -streamporn.pw##+js(nowoif) -streamporn.pw##.btn-lg.btn-block.btn -streamporn.pw###overlays -@@||cdn.taboola.com/libtrc/$script,domain=ndtv.com -@@||trc.taboola.com/ndtv$script,domain=ndtv.com -@@||trc.taboola.com/ndtv-ndtvmobile/$frame,domain=ndtv.com -@@||trc.taboola.com/ndtv*/log/*$domain=trc.taboola.com -ndtv.com##.trc-content-sponsored -ndtv.com##.composite-branding.branding:has-text(/sponsored/i):xpath(..) -@@||cdn.ampproject.org/*amp-ad$script,domain=ndtv.com -@@||cdn.taboola.com/libtrc/ndtv-ndtvmobile/loader.js$script,domain=ampproject.net -@@||cdn.taboola.com/libtrc/impl.$script,domain=ampproject.net -@@||trc.taboola.com/ndtv-ndtvmobile/$script,domain=ampproject.net -ndtv.com#@#amp-embed[type="taboola"] -ndtv.com##[id^="adslot"] -ndtv.com##:xpath(//div[contains(text(),"Advert")]) -ampproject.net##.trc-content-sponsored -food.ndtv.com##.ads -food.ndtv.com###jeocontainer > span:has-text(Promoted) -||hotdeals360.com^$3p -ndtv.com#@##taboola-below-article-thumbnails -ndtv.com##.tbl-feed-card:has(.trc-content-sponsored) -@@||trc.taboola.com/ndtv*/trc/*/json$xhr,domain=ndtv.com -ndtv.com##.inline.ads -ndtv.com##.tbl-wrp:has(.i-amphtml-fill-content) -/pup.php?$script -ustream.*##+js(nowoif) -ustream.*##^script:has-text(btoa) -ustream.*##+js(aopr, console.clear) -/zone?pub -ustream.to##.popup -ustream.to##.overlay -@@||ustream.*^$script,1p -*$script,redirect-rule=noopjs,domain=ustream.to -! canalesportivo. live -fr.streamon-sport.ru,hoca4u.com##+js(acs, document.createElement, onerror) -sound-park.*,soundpark.*,soundpark-club.*##+js(acs, $, open) -sound-park.*,soundpark.*,soundpark-club.*##+js(acs, document.createElement, script) -! paladinsdecks.com anti adb -||paladinsdecks.com/fileadmin/*/fab.min.js$script,1p,redirect=fuckadblock.js-3.2.0 -@@||paladinsdecks.com/ad/banner/*$xhr,1p -@@||ratemyprofessors.com/assets/libs/oas.js$script,1p -ratemyprofessors.com##.slide.sticky-wrapper -go.bucketforms.com##+js(acs, $, adblocker) -hopto.org##+js(acs, document.getElementById, undefined) -@@||grahaflasher.com^$ghide -bidouillesikea.com##+js(aopr, adbackDebug) -@@||dausel.co^$ghide -@@||googlesyndication.com/pagead/$script,domain=dausel.co -dausel.co##.adsbygoogle:style(max-height: 1px !important;) -dausel.co##[id^="aswift"] -blizzboygames.net##+js(nowebrtc) -blizzboygames.net##[href*="bit.ly"] -blizzboygames.net##.gp-entry-text > div > div[style] > .vc_row.wpb_row.vc_row-fluid -||blizzboygames.net/sw.js$script,1p -##[href^="https://track.wg-aff.com/click"] -optifine.net##+js(nostif, Math.round, 1000) -! http://adfoc.us/serve/?id=47525085215776 timer -adfoc.us##+js(set, count, 0) -pianetamountainbike.it##+js(set, LoadThisScript, true) -||pianetamountainbike.it/*Banner$image -lavoixdux.com##+js(set, is_adblocked, false) -barchart.com##+js(set, showPremLite, true) -barchart.com##[id^=customAd] -! closeBlockerModal anti adb -modelisme.com,parasportontario.ca,prescottenews.com##+js(set, closeBlockerModal, false) -juegoviejo.com##+js(nano-stb) -anime-jl.net##+js(aopr, detector_launch) -zona-leros.net##+js(aeld, DOMContentLoaded, shortener) -zona-leros.net##.content_store -player.zona-leros.net,zlplayer.net###dvr-vid -zona-leros.net##.Body > .Container > ul.Rows > li:first-child:has(> article > a[href][target="_blank"]) -zpaste.net,zlpaste.net##+js(aeld, DOMContentLoaded, adlinkfly) -zplayer.live##+js(aopr, I833) -zplayer.live##+js(nowoif) -zplayer.live##.user -zpaste.net,pixeldrain.com###sponsors -zplayer.live##.banner -||zshorte.net/*.html$frame,3p -*$script,3p,denyallow=cloudflare.com|cloudflare.net|fastly.net|fastlylb.net|google.com|googleapis.com|gstatic.com|hwcdn.net|jquery.com|jsdelivr.net|jwplatform.com|jwpcdn.com|recaptcha.net|arc.io,domain=zpaste.net|zplayer.live -@@||zplayer.live^$cname -||anime-jl.net^$3p,script -||i.imgur.com/YmmGPK1.png^$3p -luzernerzeitung.ch,tagblatt.ch##+js(nostif, adblock, 5) -! anti adb superhumanradio .net -@@||superhumanradio.net^$ghide -! egydead .com => .live -@@||egydead.*^$ghide -egydead.*##.adHolder -egydead.*##.FooterAds -||herdethi.net^ -! mangamanga. ml popups -mangamanga.*##+js(aeld, keydown) -! fuckdy .com popups -fuckdy.com##+js(aopr, Popunder) -fuckdy.com##.fkd-inban -! spellchecker.net ad-reinsertion -spellchecker.net##+js(aopr, gPartners) -spellcheck.net,spellchecker.net,spellweb.com##+js(nostif, bioEp) -@@||express.de^$ghide -@@||mopo.de^$ghide -express.de,mopo.de##.dm_ad -express.de,mopo.de##.dm_ad-container -express.de,mopo.de###nativendo-marginal -mopo.de##.dm_ta300x300_html -@@||berryboot.alexgoldcheidt.com^$ghide -! ableitungsrechner.net ad-reinsertion -ableitungsrechner.net##+js(nostif, ag_adBlockerDetected) -ableitungsrechner.net##a.extern[href^="//www.amazon.de/"]:upward(2) -@@||gatevidyalay.com^$ghide -gatevidyalay.com##ins.adsbygoogle -urlaubspartner.net##+js(set, adblock, false) -urlaubspartner.net##.ad -urlaubspartner.net##.text-center.col-lg-4.visible-lg-block > span -bostonherald.com##+js(nostif, n.trigger, 1) -bostonherald.com##+js(set, CnnXt.Event.fire, noopFunc) -alternet.org##+js(nostif, null) -mz-web.de##+js(acs, document.createElement, document.head.appendChild) -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=freeiptv.life -! praxis-jugendarbeit.de anti adb -praxis-jugendarbeit.de##+js(nostif, nextFunction, 2000) -m.kuku.lu##+js(acs, setTimeout, bait.css) -@@||m.kuku.lu^$ghide -m.kuku.lu##ins.adsbygoogle -watchfreexxx.net##+js(acs, document.createElement, 'script') -watchfreexxx.net##+js(aopr, Date.prototype.toGMTString) -watchfreexxx.net##+js(aopr, ExoLoader) -watchfreexxx.net##+js(aopr, ExoLoader.serve) -watchfreexxx.net##+js(aopr, initPu) -watchfreexxx.net##+js(aopr, jsUnda) -watchfreexxx.net##+js(aeld, getexoloader) -watchfreexxx.net##.order-1:has(.video-block-happy-absolute) -watchfreexxx.net##.happy-player-beside, .happy-section, .widget_execphp:has-text(/Advertisement|ExoLoader/) -watchfreexxx.net###tracking-url -||watchfreexxx.net/*.php$script,1p -*$script,3p,denyallow=cloudflare.net|fastly.net|google.com|googleapis.com|gstatic.com|jwpcdn.com|jsdelivr.net|eastream.net|youtube.com|ytimg.com,domain=vidfast.co -okstream.*##[id^="click"] -*$script,3p,denyallow=bootstrapcdn.com|cloudflare.net|google.com|gstatic.com|hwcdn.net|jquery.com|jsdelivr.net|tawk.to,domain=okstream.* -macrotrends.net##+js(acs, RegExp, '0x) -macrotrends.net##+js(aopw, ABD) -macrotrends.net##.adx_top_ad -nrj-play.fr##+js(set, adBlockDetector.isEnabled, falseFunc) -thegatewaypundit.com##+js(aopr, adtoniq) -@@||muzlan.top^$ghide -@@||muzlan.top^$xhr,image,1p -oeffentlicher-dienst.info##+js(set, testerli, false) -lippycorn.com##+js(acs, document.createElement, __esModule) -@@||catracalivre.com.br^$ghide -pendekarsubs.us##+js(nostif, nextFunction, 250) -@@||telepisodes.org^$ghide -telepisodes.org##+js(nowebrtc) -telepisodes.org##+js(nano-sib) -*$script,3p,denyallow=cdn77.org|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|fluidplayer.com|hcaptcha.com|hwcdn.net|jwpcdn.com|wp.com|google.com|googleapis.com|gstatic.com|instagram.com|jquery.com|jsdelivr.net|jwpsrv.com|sharethis.com|stackpathcdn.com|recaptcha.net|twitter.com|x.com,domain=telepisodes.org -telepisodes.org###play_button:style(display:block!important;) -telepisodes.org###loading_button -telepisodes.org##a.button-link.mybutton:has-text(Play) -||d3d52lhoy0sh2w.cloudfront.net^ -7r6.com##+js(aopr, app_vars.force_disable_adblock) -7r6.com##+js(aopr, LieDetector) -7r6.com##+js(aopr, console.clear) -7r6.com##+js(set, blurred, false) -7r6.com##.banner -@@||7r6.com^$ghide -*$script,3p,denyallow=cloudfront.net|google.com|gstatic.com|recaptcha.net,domain=7r6.com -b3infoarena.in##+js(aeld, load, 2000) -faucethero.com##+js(aopr, adBlockDetected) -faucethero.com##+js(nowoif) -faucethero.com##+js(acs, atob, decodeURIComponent) -faucethero.com##+js(aopr, decodeURI) -faucethero.com###middle-adspace -faucethero.com##[href^="https://freebitco.in/"] -faucethero.com##[href^="https://qik.cc/"] -faucethero.com##[href^="https://www.office.jocial.com/Affiliate/"] -||aruble.net^$3p -||qik.cc^$3p -@@||upvid.*^$ghide -upvid.*##+js(nowoif) -||upvid.*/sw.js$script,1p -upload.ac##.ads -@@||capital.fr^$ghide -capital.fr##.cap-ads -capital.fr##.pmd-ads -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=kharisma-adzana.blogspot.com -@@||sunderlandecho.com^$ghide -@@||googlesyndication.com/pagead/$script,domain=ebb.io -720pxmovies.blogspot.com##+js(acs, Math, break) -720pxmovies.blogspot.com##+js(aopr, myFunction_ads) -720pxmovies.blogspot.com##+js(nowoif) -hackingwithreact.com##+js(set, areAdsDisplayed, true) -@@||gamesfree.ca^$ghide -onle.co##+js(nano-sib) -@@||onle.co^$ghide -@@||googlesyndication.com/pagead/$script,domain=onle.co -onle.co##[id^="aswift"] -onle.co##.adsbygoogle:style(max-height: 1px !important;) -! gutekueche.at anti adb -gutekueche.at##+js(set, gkAdsWerbung, true) -software-on.com##+js(aopr, decodeURIComponent) -software-on.com##+js(nowebrtc) -software-on.com##+js(nowoif) -@@||software-on.com^$ghide -@@||software-on.com/*/advertising.js$script,1p -software-on.com##ins.adsbygoogle -software-on.com##.widget_oxnepzimd -software-on.com##.oxnepzimd -gamershit.altervista.org##+js(nobab) -gamershit.altervista.org##[src="float.htm"] -@@||elbotola.com^$ghide -@@||berliner-kurier.de^$ghide -@@||berliner-zeitung.de^$ghide -berliner-kurier.de,berliner-zeitung.de##.dm_ad-container -berliner-kurier.de##div[class^="traffective_"] -berliner-kurier.de##div[class^="outbrain_outbrain-outer-container"] -eplfootballmatch.com##+js(set, document.bridCanRunAds, true) -!#if env_firefox -webmail.email.it##+js(no-fetch-if, googlesyndication) -!#endif -allacronyms.com##+js(nobab) -@@||smscodeonline.com^$ghide -smscodeonline.com##ins.adsbygoogle -peekvids.com,playvids.com,pornflip.com,pornoeggs.com##+js(aopr, open) -*&token$media,redirect=noopmp3-0.1s,domain=peekvids.com|playvids.com|pornflip.com|pornoeggs.com -peekvids.com,playvids.com,pornflip.com##+js(set, pop_target, null) -pornoeggs.com##.card-deck-promotion -pornoeggs.com##.mediaPlayerBanner -@@||thuglink.com^$ghide -thuglink.com##+js(set, adblockEnabled, false) -@@||watchmalcolminthemiddle.com^$ghide -@@||onlinecoursebay.com^$ghide -gametop.com##+js(aost, document.getElementById, onLoadEvent) -gametop.com##.ads -redensarten-index.de##+js(set, is_banner, true) -redensarten-index.de##+js(nostif, adb) -interviewgig.com##+js(aeld, load, onload) -extratorrent.*##:xpath(//a[contains(text(),"VPN")]/../../..) -typinggames.zone##+js(acs, document.getElementById, alert) -@@||typinggames.zone^$ghide -cdna.tv##+js(nowoif) -oko.sh##+js(rmnt, script, /document\.createElement|\.banner-in/) -oko.sh##+js(aopr, AaDetector) -oko.sh##+js(aopr, open) -oko.sh##+js(set, blurred, false) -oko.sh##+js(nostif, Adblock) -oko.sh##+js(no-fetch-if, /googlesyndication|inklinkor|ads\/load/) -oko.sh##+js(acs, XMLHttpRequest, adb) -oko.sh##+js(no-xhr-if, inklinkor.com) -oko.sh##.banner-inner:style(width: 0 !important;) -oko.sh##^script:has-text(adb_detected) -*$image,redirect-rule=1x1.gif,domain=oko.sh -*$script,redirect-rule=noopjs,domain=oko.sh -@@||oko.sh^$ghide -oko.sh##a[href^="https://href.li/"] -oko.sh##a[href^="https://taghaugh.com/"] -oko.sh##[href="https://tipsalert.xyz"] -oko.sh##[src^="https://i.imgur.com/"] -oko.sh##[href^="https://monetag.com/"] -oko.sh##[id^="div-gpt-"] -||inklinkor.com/tag.min.js$script,xhr,redirect-rule=noop.js,domain=oko.sh -||oko.sh/webroot/img$image,1p -@@||anhdep24.net^$ghide -cam4.com##+js(nowoif) -cam4.com###Cam4DialogContainer -footystreams.net##+js(nostif, '0x) -##[href^="https://pl.allsports4free.club/"] -##[href^="https://pl.allsports4u.club/"] -@@||1warie.com^$ghide -produktion.de##+js(set, adblock, false) -vw-page.com##+js(set, $easyadvtblock, false) -@@||mediaite.com^$script,1p -mediaite.com##.adthrive-ad -mediaite.com##.o-jw-sub-promo -dump.xxx##+js(aopr, ExoLoader.serve) -dump.xxx##+js(popads-dummy) -dump.xxx##+js(aopr, open) -||dump.xxx/sw.js$script,1p -fuqer.com##+js(aopr, ExoLoader.serve) -fuqer.com##+js(aopr, open) -fuqer.com##+js(popads-dummy) -||fuqer.com/sw.js$script,1p -fuqer.com##.spot-thumbs > .right:style(height:1px !important) -fuqer.com##.right > .text -fuqer.com#@#.spot-thumbs > .right -@@||villatalk.com^$ghide -lurdchinexgist.blogspot.com##+js(aeld, load, 2000) -sharemods.com##+js(nowebrtc) -sharemods.com##iframe[data-id$="_DFP"] -*$script,3p,denyallow=bootstrapcdn.com|cloudflare.com|cloudflare.net|cookieinfoscript.com|fastly.net|fastlylb.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|recaptcha.net,domain=sharemods.com -modsbase.com##+js(nowebrtc) -@@||65creedmoor.com^$ghide -myfreeblack.com##+js(aopw, mfbDetect) -||myfreeblack.com/sw.js$script,1p -auto-data.net##+js(acs, document.getElementById, adblock) -otakuindo.*##+js(aopr, Date.prototype.toUTCString) -otakuindo.*##+js(nobab) -penis-bilder.com##+js(aopr, popunder) -penis-bilder.com##+js(nobab) -filerio.in##+js(nowoif) -filerio.in##+js(ra, onclick, , stay) -filerio.in##+js(aopr, onload) -filerio.in###player_img:upward(2) -ckk.ai##+js(set, blurred, false) -ckk.ai##+js(nowoif) -@@||ckk.ai^$ghide -ckk.ai##a[href][target="_blank"] > img -||35.224.227.218^$all -sendvid.com##+js(nowoif, !/^https:\/\/sendvid\.com\/[0-9a-z]+$/) -sendvid.com##[href*=".php"] -sendvid.com###video-js-video > [href^="javascript:"] -sendvid.com###vjs-logo-top-bar -sendvid.com###ftr -imgdawgknuttz.com##+js(aopw, atOptions) -imgdawgknuttz.com##+js(acs, document.createElement, /l\.parentNode\.insertBefore\(s/) -imgdawgknuttz.com##+js(aost, atob, inlineScript) -imgdawgknuttz.com##+js(aopr, Pub2a) -||imgdawgknuttz.com/*.php$script,1p -||xxxwebdlxxx.org^$image,domain=imgdawgknuttz.com -*$frame,3p,domain=imgdawgknuttz.com -*$script,3p,domain=imgdawgknuttz.com -||trifms.com^ -@@||javsubtitle.co^$ghide -javsubtitle.co###impanel -javsubtitle.co###mimpanel -javsubtitle.co##.boxAds -javsubtitle.co##.boxAds2 -javsubtitle.co##.header-ads -javsubtitle.co##.mid-ads -@@||iphonetweak.fr^$ghide -iphonetweak.fr##ins.adsbygoogle -iphonetweak.fr##.bigPub -duden.de##[id*="billboard"] -duden.de##.tabloid__side-column -!#if !env_mobile -~mentor.duden.de,duden.de##+js(aeld, DOMContentLoaded, isMobile) -!#endif -||duden.de/aab/assets/js/ -duden.de##body:style(margin-top: 0px !important;) -faresgame.com##+js(aopr, adBlockDetected) -solarmovie.to##+js(aopw, Fingerprint2) -||solarmovie.to/sw.js$script,1p -shemalepower.xyz##+js(nobab) -shemalepower.xyz##+js(nowoif) -ssrmovies.*##+js(nowoif) -||get-link.xyz^ -||hitcashtag.com^$3p -||techbumper.info^$3p -||techcdn.com^$3p -shrib.com##+js(nostif, adb, 6000) -ratemyteachers.com##+js(acs, document.getElementById, 'block') -thefreedommatrix.blogspot.com##+js(aeld, load, 2000) -thefreedommatrix.blogspot.com##+js(nobab) -desiremovies.*##+js(acs, document.createElement, console) -desiremovies.*##+js(aeld, , _0x) -||desiremovies.*/sw.js$script,1p -||presdithas.pw^ -desiremovies.*##.code-block-2.code-block -uploadbox.cc##.soundy -uploadbox.cc##+js(disable-newtab-links) -uploadbox.cc##.hopa -||gstatic.com/firebasejs/*/firebase.js$script,domain=uploadbox.cc -pandafiles.com##+js(nostif, pop) -||grumft.com^$3p -##[href="//xxxrevpushclcdu.com/app.webp"] -@@||proxy.ads.canalplus-bo.net^$xhr,domain=mycanal.fr -||static.canal-plus.net/pub/$media,redirect=noopmp3-0.1s,domain=mycanal.fr -@@||damnripped.com^$ghide -notebookcheck-ru.com##+js(acs, document.getElementById, send) -@@||notebookcheck.com^$script,1p -@@||notebookcheck.net^$script,1p -@@||notebookcheck-ru.com^$script,1p -@@||notebook-check.com^$script,domain=notebookcheck.com|notebookcheck.net|notebookcheck-ru.com -@@||notebookcheck-ru.com^$script,domain=notebookcheck.com|notebookcheck.net|notebookcheck-ru.com -notebookcheck.*##+js(aopw, ab_cl) -@@||www-league.nhlstatic.com/nhl.com/builds/site-core/*/scripts/*$script,domain=nhl.com -@@||www-league.nhlstatic.com^$xhr,domain=nhl.com -@@||nhl.com^$ghide -*&expire$media,3p,redirect=noopmp3-0.1s,domain=nhl.com -nhl.com##.ad -nhl.com##.ad-centered -nhl.com##.ad-responsive-slot -nhl.com##.native-ad-slot -@@||thuthuatjb.com^$ghide -dfiles.*##+js(acs, decodeURI, decodeURIComponent) -@@||cloudflare.com/ajax/libs/*/fuckadblock.js$script,domain=depositfiles.org|dfiles.eu -||dfiles.*/sw.js$script,1p -m4maths.com##+js(aopr, alert) -dailycamera.com##+js(nostif, n.trigger, 1) -dailycamera.com##+js(set, CnnXt.Event.fire, noopFunc) -fc.lc,fc-lc.com##+js(acs, document.addEventListener, nextFunction) -fc.lc##+js(aopr, adBlockDetected) -fc.lc##+js(aopr, app_vars.force_disable_adblock) -fc.lc##+js(noeval) -fc.lc##+js(set, blurred, false) -||fc.lc/*.html$frame,1p -||fc.lc/sw.js$script,1p -*$image,3p,domain=fc-lc.com -fc.lc##.banner-inner -fc.lc###ad -fc-lc.com###iframe_id -fc-lc.com##.captcha-page .box-main > a[href][target="_blank"] > img -*$frame,denyallow=facebook.com|google.com|hcaptcha.com|youtube.com,domain=fc.lc|fc-lc.com -*$script,3p,denyallow=bootstrapcdn.com|cloudflare.com|cloudflare.net|google.com|gstatic.com|jsdelivr.net|recaptcha.net|tawk.to|wp.com,domain=fc.lc|fc-lc.com -fc.lc##+js(nowoif, /^/, 1) -! vocalley.com anti-adb -#@#.ad-area -#@#.ads_container -~job.inshokuten.com,~netmile.co.jp##.ad-area:not(.text-ad) -##.ads_container:not(.text-ad) -movie4u.live##+js(aopr, AaDetector) -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=abdoutech.com -pastepvp.org,programasvirtualespc.net##+js(aopw, smrtSB) -programasvirtualespc.net##+js(nosiif, visibility, 1000) -@@||pastepvp.org^$ghide -pastepvp.org##.content > center -@@||programasvirtualespc.net^$ghide -||descargaloaca.com^$3p -||fc.lc^$3p,script -@@||online-courses.club^$ghide -turbogvideos.com##+js(aopr, open) -@@||turbogvideos.com^$ghide -@@||syndication.exosrv.com/instream-tag.php$script,domain=turbogvideos.com -megapornfreehd.com##+js(aopr, V4ss) -cinetux.*##+js(aopw, smrtSB) -cinetux.*##+js(ra, href, #clickfakeplayer) -cinetux.*##span.button -cinetux.*##.links_table > .fix-table > table > tbody > tr:has-text(Patrocinador) -@@||ad.71i.de/somtag/loader/loader.js$script,domain=puls4.com -@@||putlockerhd.co/js/showads.js$xhr,1p -@@||animecurse.cz^$ghide -tonpornodujour.com##+js(aopr, popunders) -tonpornodujour.com##+js(set, is_adblocked, false) -tonpornodujour.com###disclaimerId -cyfostreams.com##+js(nowebrtc) -cyfostreams.com###blockblockA -cyfostreams.com#@#.banner_ad -444.coffee##+js(noeval) -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=firm-ware27.blogspot.com|flash-reset.blogspot.com -@@||magiclen.org^$ghide -magiclen.org##ins.adsbygoogle -file.magiclen.org##+js(nano-stb, , ,0.02) -streameast.*,thestreameast.*##+js(aeld, /^/, 0x) -streameast.*,thestreameast.*##+js(nosiif, visibility, 1000) -streameast.*,thestreameast.*##+js(nowebrtc) -streameast.*,thestreameast.*##+js(nostif, sadbl) -streameast.*##+js(acs, Object.defineProperty, break;case) -streameast.*##^script:has-text(/aclib|runPop/) -thestreameast.*##+js(aopr, aclib) -*$xhr,redirect-rule=nooptext,domain=streameast.*|thestreameast.* -sportlive.*##+js(ra, onclick) -*$image,redirect-rule=32x32.png,domain=streameast.*|thestreameast.* -||streameast.*/*.gif$image -||thestreameast.*/*.gif$image -||dsxwcas.com^ -||eagamerz.com^$popup -||supertracker200.com^$popup -||tcgjpib.com^ -play-old-pc-games.com##+js(nostif, checkAdStatus) -viz.com##+js(set, show_dfp_preroll, false) -viz.com##+js(set, show_youtube_preroll, false) -@@||viz.com^$ghide -!#if env_mobile -viz.com##+js(nano-sib, , ,0) -viz.com###metamodal-dfp-preroll -viz.com###overlay -@@||doubleclick.net^$script,xhr,domain=viz.com -@@||googletagservices.com/tag/js/gpt.js$script,domain=viz.com -||assetshuluimcom-a.akamaihd.net/prerolls/$media,3p -!#endif -dplay.com##.e-overlay--adblock -@@||cdn.playwire.com^$image,domain=krunker.io -@@||cdn.playwire.com/bolt4/js/zeus/frame/admgr$script,1p -*$image,domain=krunker.io,redirect-rule=1x1.gif -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=krunker.io -@@||cdn.frvr.com/fran/pubads_$script,domain=krunker.io -@@||pagead2.googlesyndication.com^$xhr,domain=krunker.io -@@||securepubads.g.doubleclick.net^$xhr,domain=krunker.io -||googlesyndication.com/pagead/js/$script,redirect=noopjs,domain=eazycheat.com -pussytorrents.org##+js(aopr, loadTool) -||assets.moat.com/*/ad$image,redirect=2x2.png,1p -! addic7ed.com popups -addic7ed.com##+js(aopr, AaDetector) -addic7ed.com##+js(aopr, eddOptions) -@@||rmdan.*^$ghide -tunovelaligera.com##+js(aopr, mdpDeBlocker) -tunovelaligera.com##+js(nostif, mdp) -@@||tunovelaligera.com^$ghide -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=tunovelaligera.com -@@||player.ooyala.com/static/*/ad-plugin/google_ima.min.js$script,domain=ccmbg.com -@@||1000ps.de^$ghide -@@||desirecourse.net^$ghide -@@||nfhost.me^$ghide -! jobhunterplg.xyz redirection -||scorchin.com*?realDomain$doc -@@||hastingsobserver.co.uk^$ghide -hastingsobserver.co.uk##.leaderboard-ad -dlkoo.com##+js(nowoif) -||wp.com*/banner$image,domain=komikmama.net -freecourseweb.com##+js(nostif, brave_load_popup) -@@||freecourseweb.com^$ghide -freecourseweb.com##ins.adsbygoogle -*$script,3p,redirect-rule=noopjs,domain=freecourseweb.com -svapo.it##+js(aopw, adBlockDetected) -sataniabatch.blogspot.com##+js(nofab) -@@||csm.dev^$ghide -papalah.com##+js(aopw, adBlockDetected) -! solarmovie.id popup -solarmovie.id##+js(aopr, AaDetector) -bezpolitickekorektnosti.cz##+js(aopr, sc_adv_out) -bezpolitickekorektnosti.cz##.SC_TBlock -glodls.*##+js(nowebrtc) -starcoins.ws##+js(aopw, adBlockDetected) -anitube.site###protetorVideo -bitcoinminingforex.blogspot.com##+js(nofab) -bitcoinminingforex.blogspot.com##+js(nowoif) -@@||imggram.org^$ghide -protopage.com##+js(aopr, pageParams.dispAds) -@@||cyclismactu.net/adserver.js$script,1p -letmejerk.com,letmejerk2.com,letmejerk3.com,letmejerk4.com,letmejerk5.com,letmejerk6.com,letmejerk7.com##+js(aopr, ExoLoader) -letmejerk.com,letmejerk2.com,letmejerk3.com,letmejerk4.com,letmejerk5.com,letmejerk6.com,letmejerk7.com##+js(aeld, , _0x) -letmejerk.com,letmejerk2.com,letmejerk3.com,letmejerk4.com,letmejerk5.com,letmejerk6.com,letmejerk7.com##.cams-widget -letmejerk.com,letmejerk2.com,letmejerk3.com,letmejerk4.com,letmejerk5.com,letmejerk6.com,letmejerk7.com##[class^="lmj"] -letmejerk.com,letmejerk2.com,letmejerk3.com,letmejerk4.com,letmejerk5.com,letmejerk6.com,letmejerk7.com##.th:has(> span.th-ad) -||letmejerk.com/*.php$script,1p -||mn-shop.com^$3p -queenfaucet.website##+js(aopw, app_vars.force_disable_adblock) -queenfaucet.website##+js(aopw, adBlockDetected) -queenfaucet.website##+js(aeld, click, trigger) -queenfaucet.website##+js(set, show_ads_gr8_lite, true) -@@||dailythanthi.com^$ghide -windowcleaningforums.co.uk##+js(nostif, show) -windowcleaningforums.co.uk##[href="https://thrivewp.com/"] -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=windowcleaningforums.co.uk -windowcleaningforums.co.uk##a[href^="https://windowcleaningforums.co.uk/index.php?"][target="_blank"] -windowcleaningforums.co.uk##.ipsAdvertisement_large -pennlive.com##+js(aeld, load, PrivateMode) -freeupload.info,fstore.biz,uploadfree.info##+js(acs, document.getElementById, undefined) -fstore.biz##+js(set, blurred, false) -freeupload.info,fstore.biz,uploadfree.info##+js(nano-sib) -uploadfree.info###at-btn-download -@@||beatricedailysun.com^$ghide -beatricedailysun.com##.tnt-ads-container -.gif$image,domain=107.152.37.223 -beautypageants.indiatimes.com##+js(aeld, scroll, _0x) -@@||googletagmanager.com/gtm.js$script,domain=raiplayradio.it -freebcc.org##+js(aopr, app_vars.force_disable_adblock) -freebcc.org##+js(aopr, adBlockDetected) -@@||freebcc.org^$ghide -freebcc.org##.mb-0.mt-3.text-center.text-small -freebcc.org###Layer_1 -cda.pl##.pb-video-click -cda.pl##.pb-ad-video-player -||redcdn.pl/file/*/vstatic/*.mp4$media,redirect=noopmp3-0.1s,domain=cda.pl -@@||maalaimalar.com^$ghide -cinema.maalaimalar.com##.in.fade.modal-backdrop -cinema.maalaimalar.com##body:style(overflow: auto !important;) -topito.com##+js(aopr, document.bridCanRunAds) -@@||neko-sama.fr^$ghide -0rechner.de##+js(set, doads, true) -@@||galt.hit.gemius.pl/gplayer.js$script,domain=lrt.lt -@@||pasty.*^$ghide -@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=pasty.* -@@||pagead2.googlesyndication.com/pagead/js/*/show_ads_impl$script,domain=pasty.* -@@||qctimes.com^$ghide -@@||wcfcourier.com^$ghide -qctimes.com,wcfcourier.com##.tnt-ads-container -@@||roya.tv^$ghide -sexvid.*,hdtube.porn##+js(acs, document.write, iframe) -sexvid.*,hdtube.porn##+js(aopr, ExoLoader) -sexvid.*##+js(aopr, pu) -sexvid.*###banner_video -sexvid.*##.sponsor.shown -sexvid.*##.spots_field.spots_thumbs -sexvid.*##.box_site -sexvid.*##.download_link -sexvid.*##.spot-content, .spot-title -*$xhr,frame,domain=sexvid.* -hdtube.porn##.banners -!#if env_mobile -sexvid.*,hdtube.porn###fltd-inner -sexvid.*##.wrapper > .spot-holder -sexvid.*##.cs -sexvid.*##.thumb-adv -sexvid.*##.container > .headline, .intro -sexvid.*##.under-player.spot-holder > .spot -hdtube.porn##.cards__item--adv.cards__item--big.cards__item.item -hdtube.porn##.page__main > .container -!#endif -livesport.ws##+js(aopr, MessageChannel) -! configspc .com popups -configspc.com##+js(set, jsUnda, noopFunc) -sbsun.com##+js(set, CnnXt.Event.fire, noopFunc) -citynow.it##+js(aopr, advads_passive_ads) -||citynow.it/wp-content/uploads/*/banner$image,1p -citynow.it##.advads-close-button -@@||myshorturls.blogspot.com^$ghide -myshorturls.blogspot.com##ins.adsbygoogle -tmohentai.com##+js(aopr, ExoLoader.serve) -@@||tmohentai.com^$ghide -tmohentai.com##.advert -||tmohentai.com/nb/ -||tmohentai.com/*.php -tmohentai.com##+js(noeval-if, tmohentai) -variety.com##+js(aopr, pmc_admanager.show_interrupt_ads) -@@||sme.sk^$ghide -! anti adb http://arembed .com/live.php?ch=Bein_Sports1 -@@||janjua.*^$ghide -xopenload.me##+js(set, jsUnda, noopFunc) -xopenload.me##+js(aopw, open) -xopenload.me##+js(aopr, ExoLoader.serve) -xopenload.me##.btn-lg.btn-block.btn -@@||jbzdy.com.pl^$ghide -@@||senpa.io^$ghide -senpa.io##+js(nobab) -senpa.io###ad-slot-left-panel -senpa.io###ad-slot-center-panel -senpa.io###banner_ad_bottom -senpa.io##.adsPanel -senpa.io##.advertisement-informer -getfreecourses.*##+js(nosiif, visibility, 1000) -@@||getfreecourses.*^$ghide -getfreecourses.*##ins.adsbygoogle -tuotromedico.com##+js(set, jQuery.adblock, false) -lesoir.be##+js(nostif, adb) -mysostech.com##+js(aopw, ai_adb_overlay) -gleanster.com###overlay -! Postmedia featured video ads -airdrieecho.com,brantfordexpositor.ca,calgaryherald.com,calgarysun.com,canoe.com,chathamdailynews.ca,chathamthisweek.com,clintonnewsrecord.com,cochranetimes.com,cochranetimespost.ca,coldlakesun.com,communitypress.ca,countymarket.ca,countyweeklynews.ca,devondispatch.ca,draytonvalleywesternreview.com,edmontonjournal.com,edmontonsun.com,elliotlakestandard.ca,fairviewpost.com,fortmcmurraytoday.com,fortsaskatchewanrecord.com,gananoquereporter.com,goderichsignalstar.com,greybrucethisweek.ca,hannaherald.com,intelligencer.ca,kenoraminerandnews.com,kincardinenews.com,kingstonthisweek.com,lakeshoreadvance.com,leaderpost.com,leducrep.com,lfpress.com,lucknowsentinel.com,mayerthorpefreelancer.com,melfortjournal.com,midnorthmonitor.com,mitchelladvocate.com,montrealgazette.com,nantonnews.com,nationalpost.com,norfolkandtillsonburgnews.com,northernnews.ca,nugget.ca,ontariofarmer.com,ottawacitizen.com,ottawasun.com,owensoundsuntimes.com,parisstaronline.com,peacecountrysun.com,pembrokeobserver.com,pinchercreekecho.com,prrecordgazette.com,recorder.ca,sarniathisweek.com,saultstar.com,saultthisweek.com,seaforthhuronexpositor.com,sherwoodparknews.com,shorelinebeacon.com,simcoereformer.ca,sprucegroveexaminer.com,standard-freeholder.com,stonyplainreporter.com,stratfordbeaconherald.com,strathroyagedispatch.com,stthomastimesjournal.com,thebeaumontnews.ca,thechronicle-online.com,thecragandcanyon.ca,thegraphicleader.com,thelondoner.ca,thepost.on.ca,theprovince.com,thestarphoenix.com,thesudburystar.com,thewhig.com,timminspress.com,timminstimes.com,todaysfarmer.ca,torontosun.com,trentonian.ca,vancouversun.com,vermilionstandard.com,vulcanadvocate.com,wallaceburgcourierpress.com,wetaskiwintimes.com,whitecourtstar.com,wiartonecho.com,windsorstar.com,winnipegsun.com,woodstocksentinelreview.com##.featured-video -@@||canoe.com^$ghide -canoe.com###postmedia_layouts_ad-top -canoe.com##.ad__container -moviflex.*##+js(acs, Math, XMLHttpRequest) -moviflex.*##+js(nowoif) -||welect.de^$3p -||wlct-three.de^$3p -vladan.fr##+js(nostif, adb, 0) -vladan.fr##body:style(background-image:none !important) -vladan.fr###text-414857080 > .widget-wrap > .widgettitle.widget-title -vladan.fr##[href^="https://www.nakivo.com/"] -vladan.fr##[href^="https://www.starwindsoftware.com/"] -vladan.fr##[href^="https://lpar2rrd.com/"] -vladan.fr##+js(nowoif) -||vladan.fr/*skin$image -losporn.org##+js(aopr, ExoLoader.serve) -losporn.org##+js(nowoif) -onepiece-tube.com##+js(set, abp, noopFunc) -onepiece-tube.com##.adb -onepiece-tube.com##[href^="https://www.amazon.de/"] -@@||british-birdsongs.uk^$ghide -british-birdsongs.uk##ins.adsbygoogle -japgay.com##+js(set, AlobaidiDetectAdBlock, true) -hentai-vl.blogspot.com##+js(aeld, load, 2000) -@@||helenair.com^$ghide -helenair.com##.tnt-ads-container -deltabit.co##+js(nano-sib) -*$script,3p,domain=deltabit.co -||ipultcbpgbs.com^ -@@||loskatchorros.com.br^$ghide -loskatchorros.com.br##.adsbygoogle:style(max-height: 1px !important;) -embedsito.com,fembed.com,films5k.com,javcl.me,javideo.pw,mavplay.*,playfinder.xyz,ujav.me,videobb.*##+js(aopr, jwplayer.utils.Timer) -diasfem.com,embedsito.com,fembed.*,films5k.com,javcl.me,javideo.pw,mavlecteur.com,mavplay.*,playfinder.xyz,ujav.me,videobb.*##+js(aopr, __Y) -diasfem.com,embedsito.com,fembed.*,mavlecteur.com,mavplay.*,playfinder.xyz,videobb.*##+js(aopw, adcashMacros) -diasfem.com,embedsito.com,fembed.*,javcl.me,mavlecteur.com,mavplay.*,playfinder.xyz,videobb.*##+js(aopr, mm) -fembed.com,playfinder.xyz,videobb.*##+js(aopr, glxopen) -embedsito.com,fembed.*,films5k.com,javcl.me,mavlecteur.com,mavplay.*,playfinder.xyz,ujav.me,videobb.*##+js(nowoif) -tpxanime.in,welovestream.xyz##+js(nowoif) -welovestream.xyz##.video-fake -welovestream.xyz##div[style="position: fixed; display: block; width: 100%; height: 100%; inset: 0px; background-color: rgba(0, 0, 0, 0); z-index: 300000;"] -javsister.com###custom_html-11 -javsister.com###footer-widgets -javsister.com##.boxzilla-overlay -javsister.com##.boxzilla-center-container -||4gay.fans/fans.js -@@||playfinder.xyz^$ghide -varmatin.com##+js(aopw, checkAds) -@@||siouxcityjournal.com^$ghide -siouxcityjournal.com##.tnt-ads-container -||wicket.pw/embeds/icc-cwc.png$image -nsw2u.*##[href^="https://bit.ly/"] -nsw2u.*##+js(acs, eval, replace) -nsw2u.*##+js(no-xhr-if, googlesyndication) -! filesharing.io anti adb -filesharing.io##+js(aopw, showMsgAb) -@@||filesharing.io^$ghide -@@||loveawake.com^$ghide -loveawake.com##ins.adsbygoogle -softwarecrackguru.com##+js(aopw, downloadJSAtOnload) -@@||kickedface.com^$ghide -mega-debrid.eu##+js(set, Advertisement, 1) -projetomotog.blogspot.com##+js(aeld, load, 2000) -solvetube.*##+js(nostif, 0x, 3000) -||googlesyndication.com/pagead/$script,redirect=noopjs,domain=solvetube.site,important -||google-analytics.com/analytics.js$script,redirect=google-analytics.com/analytics.js,important,domain=solvetube.site -@@*$script,1p,domain=solvetube.* -mlwbd.*##+js(noeval-if, ads) -@@/home.php$popup,domain=mlwbd.* -@@/blog.php$popup,domain=mlwbd.* -mlwbd.*##+js(ra, type, input[value^="http"]) -mlwbd.*##input[value^="http"]:style(width: 70% !important) -123mkv.*##+js(nowoif) -hdfilme.*##+js(aopr, eddOptions) -hdfilme.*##+js(nostif, invoke) -hdfilme.*##+js(aopr, console.clear) -hdfilme.*##+js(aopr, adBlocked) -hdfilme.*##+js(aopr, AaDetector) -hdfilme.*###fake-player-wrapper -||goodnewsnetwork.org^$csp=script-src 'self' 'unsafe-inline' 'unsafe-eval' *.googletagservices.com *.wp.com *.air.tv *.addthis.com *.cloudflare.com *.facebook.net *.facebook.com *.gstatic.com *.youtube.com *.ytimg.com *.google.com *.googletagmanager.com *.instagram.com -apple-of-my-eye.com,barefeetonthedashboard.com,bargainbriana.com,betterbuttchallenge.com,bike-urious.com,blwideas.com,eartheclipse.com,entertainment-focus.com,fanatik.com.tr,foreverconscious.com,foreversparkly.com,getdatgadget.com,goodnewsnetwork.org,greenarrowtv.com,hbculifestyle.com,heysigmund.com,hodgepodgehippie.com,homestratosphere.com,indesignskills.com,katiescucina.com,knowyourphrase.com,letsworkremotely.com,lizs-early-learning-spot.com,ledauphine.com,leprogres.fr,milliyet.com.tr,mjsbigblog.com,pinoyrecipe.net,prepared-housewives.com,recipesforourdailybread.com,redcarpet-fashionawards.com,republicain-lorrain.fr,savespendsplurge.com,savingadvice.com,shutupandgo.travel,spring.org.uk,stevivor.com,tamaratattles.com,tastefullyeclectic.com,theavtimes.com,thechroniclesofhome.com,thisisourbliss.com,tinyqualityhomes.org,turtleboysports.com,ultimateninjablazingx.com,universfreebox.com,utahsweetsavings.com,vgamerz.com,wheatbellyblog.com,yummytummyaarthi.com##+js(acs, Date, ='\x) -apple-of-my-eye.com,barefeetonthedashboard.com,bargainbriana.com,betterbuttchallenge.com,bike-urious.com,blwideas.com,eartheclipse.com,entertainment-focus.com,fanatik.com.tr,foreverconscious.com,foreversparkly.com,getdatgadget.com,goodnewsnetwork.org,greenarrowtv.com,hbculifestyle.com,heysigmund.com,hodgepodgehippie.com,homestratosphere.com,indesignskills.com,katiescucina.com,knowyourphrase.com,letsworkremotely.com,lizs-early-learning-spot.com,ledauphine.com,leprogres.fr,milliyet.com.tr,mjsbigblog.com,pinoyrecipe.net,prepared-housewives.com,recipesforourdailybread.com,redcarpet-fashionawards.com,republicain-lorrain.fr,savespendsplurge.com,savingadvice.com,shutupandgo.travel,spring.org.uk,stevivor.com,tamaratattles.com,tastefullyeclectic.com,theavtimes.com,thechroniclesofhome.com,thisisourbliss.com,tinyqualityhomes.org,turtleboysports.com,ultimateninjablazingx.com,universfreebox.com,utahsweetsavings.com,vgamerz.com,wheatbellyblog.com,yummytummyaarthi.com##+js(acs, document.head.appendChild, ='\x) -apple-of-my-eye.com,barefeetonthedashboard.com,bargainbriana.com,betterbuttchallenge.com,bike-urious.com,blwideas.com,eartheclipse.com,entertainment-focus.com,fanatik.com.tr,foreverconscious.com,foreversparkly.com,getdatgadget.com,goodnewsnetwork.org,greenarrowtv.com,hbculifestyle.com,heysigmund.com,hodgepodgehippie.com,homestratosphere.com,indesignskills.com,katiescucina.com,knowyourphrase.com,letsworkremotely.com,lizs-early-learning-spot.com,ledauphine.com,leprogres.fr,milliyet.com.tr,mjsbigblog.com,pinoyrecipe.net,prepared-housewives.com,recipesforourdailybread.com,redcarpet-fashionawards.com,republicain-lorrain.fr,savespendsplurge.com,savingadvice.com,shutupandgo.travel,spring.org.uk,stevivor.com,tamaratattles.com,tastefullyeclectic.com,theavtimes.com,thechroniclesofhome.com,thisisourbliss.com,tinyqualityhomes.org,turtleboysports.com,ultimateninjablazingx.com,universfreebox.com,utahsweetsavings.com,vgamerz.com,wheatbellyblog.com,yummytummyaarthi.com##+js(aopr, __eiPb) -@@||fapxl.com/skins/blank/js/blockadblock.js$script,1p -dreamfancy.org##+js(nostif, nextFunction, 250) -dreamfancy.org##+js(nowoif) -dreamdth.com##+js(aopw, wutimeBotPattern) -dreamdth.com##+js(set, adBlockDetected, false) -dreamdth.com##+js(acs, $, show) -pornhub.*##+js(nostif, adsbytrafficjunkycontext) -pornhub.*##+js(acs, Object.defineProperty, trafficjunky) -pornhub.*##+js(nowoif) -pornhub.*##.video-wrapper > #player ~ .hd.clear -pornhub.*##.sniperModeEngaged -pornhub.*##a[href^="http://ads.trafficjunky.net/"] -pornhub.*##.realsex -pornhub.*###pb_block -pornhub.*##+js(set, page_params.holiday_promo, true) -pornhub.*###relatedVideosCenter > .wrapVideoBlock -pornhub.*##+js(set, abp1, 1) -ranker.com##+js(aopr, __eiPb) -@@||stltoday.com^$ghide -stltoday.com##.dfp-ad -stltoday.com##.tnt-ads-container -subdivx.com##+js(cookie-remover, ref_cookie) -subdivx.com###taboola-below-article-thumbnails -||karconsulting.us^$3p -! thevidhd popups -thevidhd.*##+js(aopw, smrtSB) -thevidhd.*##+js(nowebrtc) -||thevidhd.*/sw.js$script,1p -thevidhd.*##.video_batman -thevidhd.*##h1 -@@||tubitv.com^$ghide -||ads.adrise.tv^$3p -*.mp4$media,redirect=noopmp3-0.1s,domain=tubitv.com -/cdn.*/ads.$badfilter -cuatro.com,mitele.es,telecinco.es##+js(aopr, $REACTBASE_STATE.serverModules.push) -@@||wupfile.com^$ghide -wupfile.com##[id*=ScriptRoot] -! techperiod.com anti adb -@@||techperiod.com^$ghide -techperiod.com##ins.adsbygoogle -gdrivez.xyz##+js(nostif, nextFunction, 2000) -acefile.co##+js(aopw, popup_ads) -acefile.co##.textwidget -acefile.co###btmx -lne.es##+js(nostif, ipod) -diaridegirona.cat,diariodeibiza.es,diariodemallorca.es,diarioinformacion.com,eldia.es,emporda.info,farodevigo.es,laopinioncoruna.es,laopiniondemalaga.es,laopiniondemurcia.es,laopiniondezamora.es,laprovincia.es,levante-emv.com,mallorcazeitung.es,regio7.cat,superdeporte.es##+js(set, pr_okvalida, true) -voiranime.com##.ad -@@||wikitrik.com^$ghide -@@||wikitrik.com/favicon.ico$image,1p -! fix seireshd.com anti adb -seireshd.com##+js(acs, btoa, href) -serieslandia.com##+js(aopr, scriptwz_url) -@@||seireshd.com^$ghide -||adsrt.com^$3p -! fix pivigames.blog ads & popup -pivigames.blog##+js(acs, enlace) -playpaste.com##+js(acs, document.addEventListener, Popup) -playpaste.com##+js(set, $.ajax, trueFunc) -||playpaste.com/sw.js$script,1p -ktmx.pro##+js(aeld, load, 2000) -@@||darkw.pl^$ghide -player.rtl2.de##+js(set, getHomadConfig, noopFunc) -! thecrazytourist .com popunder -thecrazytourist.com##+js(acs, document.getElementsByTagName, appendChild) -||sp.booking.com^$domain=thecrazytourist.com -megatube.xxx##+js(aopr, BetterJsPop) -||megatube.xxx^$frame,1p -||megatube.xxx/atrm/*$script,1p -@@||megatube.xxx/atrm/s/s/js/m/pr-before.js$script,1p -dailydemocrat.com,montereyherald.com,orovillemr.com,record-bee.com,redbluffdailynews.com,reporterherald.com,thereporter.com,timescall.com,timesheraldonline.com,ukiahdailyjournal.com##+js(set, CnnXt.Event.fire, noopFunc) -@@||maggotdrowning.com/forums/js/siropu/am/ads.min.js$script,1p -pornult.com##+js(acs, Math.random, Exoloader) -pornult.com##+js(nowoif) -pornult.com##+js(nostif, offsetWidth) -pornult.com##+js(aopr, exoJsPop101) -pornult.com##+js(aopr, btoa) -||pornult.com/sw.js$script,1p -pornult.com##.sexshp -||pornult.com/*/custom_vast/$media,1p -joyn.de,joyn.at##+js(no-fetch-if, zomap.de) -@@||ad.71i.de/global_js/AppConfig/Joyn/desktop.json$xhr,domain=joyn.de -@@||adition.com/1x1.gif$xhr,domain=joyn.de -@@||aws.route71.net/ad-$script,domain=joyn.de -@@||research.de.com/bb-mx/prime$xhr,domain=joyn.de -@@||script.ioam.de/iam.js$script,domain=joyn.de -@@||securepubads.g.doubleclick.net/pcs/view/*$xhr,domain=joyn.de -dictionnaire-medical.net##+js(nostif, nextFunction, 2000) -@@||money.it^$ghide -money.it##.gptslot -nonktube.com##+js(nowoif) -nonktube.com##+js(aopr, decodeURI) -@@||kenkenpuzzle.com/assets/*$xhr,1p -izzylaif.com##+js(acs, jQuery, undefined) -@@||gelbeseiten.de^$script,1p -movs4u.*##+js(aeld, , _0x) -||i.imgur.com/*.gif$image,domain=movs4u.* -collater.al##+js(aopr, adsanity_ad_block_vars) -@@||get-click2.blogspot.com^$ghide -get-click2.blogspot.com##[href^="http://bit.ly"] -mousecity.com##.banner-box-squareb -mousecity.com##.banner-box -proplanta.de##+js(nostif, /$|adBlock/) -@@||hydrogenassociation.org^$ghide -hydrogenassociation.org##+js(nostif, ads) -@@||paraphrasing-tool.com^$script,1p -beautypackaging.com##+js(aopw, adblockerpopup) -uptomega.*##+js(nano-stb, seconds) -*$3p,denyallow=bootstrapcdn.com|cloudflare.net|fontawesome.com|hwcdn.net|jquery.com|uptomega.com,domain=uptomega.* -uptomega.*##.ads -@@||vtpii.com^$ghide -*$image,domain=grafixfather.com,redirect-rule=1x1.gif -@@||grafixfather.com^$ghide -grafixfather.com##ins.adsbygoogle -@@||league-funny.com^$ghide -league-funny.com##[id^="div-gpt-ad-"] -@@||vacation-et.work^$ghide -hotgameplus.com##+js(aopw, downloadJSAtOnload) -puhutv.com##+js(aopw, adblockCheck) -megavideo.*##+js(nowoif) -*$script,3p,denyallow=cloudflare.com|disqus.com|fastlylb.net|google.com|googleapis.com|gstatic.com|hwcdn.net|jquery.com|unpkg.com,domain=megavideo.* -uwatchfree.*,hydrax.*##+js(aeld, , _0x) -uwatchfree.*##[href*="deceittoured.com"] -uwatchfree.*##.hd-links -uwatchfree.*##center -! watch4hd. net (ex .com) -watch4hd.*##+js(aopr, open) -watch4hd.*##.btn-block.btn -! altadefinizione .cloud anti adb -||altadefinizone.*^$popup,3p -*$popunder,3p,domain=alemannia-aachen.de -alemannia-aachen.de###grid-image-head -alemannia-aachen.de##.b-error -||hitadsmedia.com^$3p -5movies.*##+js(aopr, mm) -5movies.*###cookiedata -5movies.*##.btn-lg -5movies.*###content-embed:style(display: block!important) -5movies.*##.streamaly -5movies.*##.les-title:has-text(HD) -1movietv.com##li.uk-active:remove() -||affforce.com^$doc,popup -01fmovies.com##+js(aopr, AaDetector) -01fmovies.com##+js(aeld, DOMContentLoaded, checkVPN) -||01fmovies.com/mmmasdfl-asd$xhr,1p -01fmovies.com##[src^="/addons/"] -01fmovies.com##.jw-logo -01fmovies.com##.ico.close -||autotracer.org/cnc/?*=rightcol$xhr,1p -||vectorization.org/cnc/?*=rightcol$xhr,1p -oranhightech.com##+js(aopw, cancelAdBlocker) -freetutorialsus.com##+js(set, adsbygoogle.loaded, true) -@@||freetutorialsus.com^$ghide -freetutorialsus.com##.code-block-1.code-block > div -||googlesyndication.com/pagead/$script,redirect-rule=noopjs,domain=freetutorialsus.com -freetutorialsus.com###babasbmsgx -freetutorialsus.com##ins.adsbygoogle -freetutorials.*##+js(nosiif, visibility, 1000) -@@||nosey.com^$ghide -nosey.com##.unreel-player-overlay -tusfiles.com##+js(aopw, Fingerprint2) -tusfiles.com##+js(nowoif) -||tusfiles.com/sw.js$script,1p -gdtot.*,tusfiles.com##+js(acs, document.createElement, 'script') -*$3p,denyallow=cloudflare.com|fastly.net|support.send.cm|tusfiles.net|zencdn.net,domain=tusfiles.com -gdtot.*##+js(aopr, open) -@@||lapresse.ca^$ghide -lirik3satu.blogspot.com##+js(aeld, load, 2000) -! mangovideo's sites -adultdvdparadise.com,freeomovie.info,fullxxxmovies.me,mangoparody.com,mangoporn.co,netflixporno.net,pandamovie.*,pandamovies.me,playpornfree.xyz,pornkino.cc,pornwatch.ws,speedporn.*,watchfreexxx.pw,watchpornfree.*,watchxxxfree.pw,xopenload.pw,xtapes.me,xxxmoviestream.xyz,xxxparodyhd.net,xxxscenes.net,xxxstream.me,youwatchporn.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -adultdvdparadise.com,freeomovie.info,fullxxxmovies.me,mangoparody.com,mangoporn.co,netflixporno.net,pandamovie.*,pandamovies.me,playpornfree.xyz,pornkino.cc,pornwatch.ws,speedporn.*,watchfreexxx.pw,watchpornfree.*,watchxxxfree.pw,xopenload.pw,xtapes.me,xxxmoviestream.xyz,xxxparodyhd.net,xxxscenes.net,xxxstream.me,youwatchporn.com##+js(nowoif) -pandamovie.*,pandamovies.me,pornkino.cc,speedporn.*,youwatchporn.com###tracking-url -pornwatch.ws,xopenload.pw,xxxparodyhd.net,xxxstream.me##.btn-lg.btn-block.btn -pandamovie.*,pandamovies.me,pornkino.cc,speedporn.*,xxxscenes.net,youwatchporn.com##.video-block-happy-absolute:upward(.order-1) -pandamovie.*,pandamovies.me,pornkino.cc,speedporn.*,xxxscenes.net,youwatchporn.com##.happy-player-beside, .happy-section, .widget_execphp:has-text(/Advertisement|ExoLoader/) -! serialy.bombuj.tv | .si anti adb -@@||bombuj.*^$ghide -bombuj.*##.ad_banner -bombuj.*##[id*="ekla"] -bombuj.*##style:has-text(blink_me_ad):upward(2) -bombuj.*##[href][target="_blank"] -||wurfl.io/wurfl.js$script,3p -waaaw.*,waaw1.*##+js(aopr, doSecondPop) -waaaw.*,waaw.*,waaw1.*##+js(aopr, BetterJsPop) -/cdn-cgi/trace$xhr,domain=waaw.*|waaaw.* -bombuj.*##+js(no-fetch-if, ads) -bombuj.*##+js(nobab) -gamefront.com##+js(acs, $, AdBlock) -gamefront.com##+js(nano-stb, , 10000) -!#if env_chromium -washingtonpost.com##+js(acs, Promise, 'overlay') -washingtonpost.com##+js(acs, document.createElement, 'overlay') -washingtonpost.com##+js(rmnt, script, /\badblock\b/) -!#endif -washingtonpost.com##.remainder-content .db-ns.dn -washingtonpost.com##html[style="overflow: hidden;"]:style(overflow: auto !important;) -washingtonpost.com##.outbrain-wrapper -washingtonpost.com##.bb.pt-0 -washingtonpost.com##div.grey-bg -washingtonpost.com##section > div:has-text(/^AD$/) -washingtonpost.com##:xpath('//*[(text()="AD")]/..') -washingtonpost.com##.w-100:has-text(Advertisement) -washingtonpost.com##[data-testid="article-body-card"]:has(> [data-qa="article-body-ad"]) -!#if env_mobile -washingtonpost.com##div.mb-lg.mt-lg.pb-lg.pt-lg.bc-gray-lighter.bh.b.justify-center.items-center.flex.dn-hp-sm-to-mx -washingtonpost.com###mobile-footer-ad-wrapper -!#endif -rawstory.com##+js(aopr, setNptTechAdblockerCookie) -@@||rawstory.com^$ghide -rawstory.com##.rs_ad_block -rawstory.com##.amp-unresolved -rawstory.com##.proper-ad-unit -rawstory.com##.alt_ad_block -rawstory.com##.connatix-holder -rawstory.com##ins.adsbygoogle -rawstory.com##[class^="mgid_"] -rawstory.com###rc-widget-d9572e -rawstory.com##[id^="spink_appeal_box"] -gonzoporn.cc,onlinexxx.cc,tvporn.cc##+js(acs, decodeURI, decodeURIComponent) -gonzoporn.cc,onlinexxx.cc,tvporn.cc##+js(aopr, exoJsPop101) -kimochi.info##+js(nosiif, visibility, 1000) -*$script,redirect-rule=noopjs,domain=linternaute.com -@@||googletagmanager.com/gtm.js$script,domain=linternaute.com -samash.com##+js(acs, document.getElementById, for-variations) -@@||blindhypnosis.com/adsbygoogle.js$script,1p -godtube.com##+js(aopr, googletag) -||googlesyndication.com/pagead/js/adsbygoogle.js$xhr,redirect=noopjs,domain=rollingstone.it -ftopx.com##+js(aopr, exoJsPop101) -ftopx.com##+js(aopr, ExoLoader.addZone) -ftopx.com##+js(aopr, loadTool) -@@||ifc.com^$ghide -techhx.com##+js(set, google_jobrunner, true) -1movietv.com##+js(refresh-defuser) -1movietv.com##[target="_blank"][href$=".html"] -||ekdj30.com^ -vidstream.*##+js(nowoif, !api?call=, 10, obj) -||psaiceex.net^ -watchgameofthrones.*##+js(aopr, AaDetector) -watchgameofthrones.*##+js(nobab) -watchgameofthrones.*###keeper2 -mad4wheels.com##+js(nostif, adsbygoogle) -mad4wheels.com##+js(aopw, adblock) -dailylocal.com##+js(set, CnnXt.Event.fire, noopFunc) -! marketmovers.it anti adb -marketmovers.it##+js(aeld, load, 2000) -marketmovers.it##^script:has-text(google_ad_client) -gsurl.*##+js(aeld, mousedown, preventDefault) -||iz682noju02ye5.com^$3p -northern-scot.co.uk##+js(aopr, CatapultTools) -northern-scot.co.uk##.MPU -northern-scot.co.uk##.TaboolaSide -cnbc.com##+js(set, cnbc.canShowAds, true) -cnbc.com##[class^="CreditCardCalloutWildcard-styles-select"]:has([href*="/?lid="]) -! allporncomic.com anti adb popups -allporncomic.com##+js(aopw, ExoSupport) -allporncomic.com##+js(aopr, exoJsPop101) -allporncomic.com##.ad -allporncomic.com##iframe -*$script,3p,domain=allporncomic.com,denyallow=cloudflare.com -||pmdipads-a.akamaihd.net^$media,redirect=noopmp3-0.1s -@@||reactgo.com^$ghide -reactgo.com##ins.adsbygoogle -! pharmaguideline.com anti adb -pharmaguideline.com##+js(aeld, load, 2000) -puzzles.msn.com##+js(set, Adv_ab, false) -puzzles.msn.com##+js(nano-sib) -@@||puzzles.msn.com^$ghide -@@||cdn.arkadiumhosted.com/advertisement/*/video-ads.js$script,domain=puzzles.msn.com -@@||cdn.arkadiumhosted.com/advertisement/*/display-ads.js$script,domain=puzzles.msn.com -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,3p,domain=puzzles.msn.com -puzzles.msn.com##[class*="displayAd"], .ark-ad-message -||videorolls.row.aiv-cdn.net/*.mp4$media,redirect=noopmp3-0.1s,domain=amazon.com -www.amazon.co.jp,www.amazon.co.uk,www.amazon.com,www.amazon.de,www.primevideo.com##+js(json-prune, cuepointPlaylist) -www.amazon.co.jp,www.amazon.co.uk,www.amazon.com,www.amazon.de,www.primevideo.com##+js(xml-prune, xpath(//*[name()="Period"][.//*[@value="Ad"]] | //*[name()="Period"]/@start), [value="Ad"], .mpd) -@@||novelgo.id^$ghide -novelgo.id##ins.adsbygoogle -lyricsongation.com##+js(nobab) -@@||finalboss.io^$ghide -finalboss.io##ins.adsbygoogle -vev.*,vidop.*##+js(aeld, /^(?:click|mousedown|mouseup)$/, di()) -vev.*,vidop.*,vidup.*##+js(set, console.clear, trueFunc) -vev.*,vidup.*##+js(nowoif, /^/, 1) -@@||vev.*^$ghide -@@||vidop.*^$ghide -@@||vidup.*^$ghide -*$frame,3p,domain=vev.red|vidop.icu|vidup.io -||vev.*/sw.js$script,1p -||vidop.*/sw.js$script,1p -||vidup.*/sw.js$script,1p -*$script,domain=vidup.io,redirect-rule=noopjs -vidup.*##.sponsored-container -vev.*##.vjs-overlay -vev.*##body > div[style="position: fixed; display: block; width: 100%; height: 100%; inset: 0px; background-color: rgba(0, 0, 0, 0); z-index: 300000;"] -okanime.*##+js(acs, $, getElementById) -okanime.*##+js(nowebrtc) -okanime.*##+js(nowoif) -okanime.*###calque -besthugecocks.com##+js(aopr, document.dispatchEvent) -pipocamoderna.com.br##+js(aopw, adBlockDetected) -textograto.com##+js(nostif, ()) -rainanime.*##+js(aopr, loadRunative) -rainanime.*##.fake_player -shrink.*##+js(aopr, app_vars.force_disable_adblock) -shrink.*##+js(aopr, adBlockDetected) -shrink.*##+js(nowebrtc) -shrink.*##+js(set, blurred, false) -shrink.*##+js(aopr, open) -shrink.*##+js(noeval-if, replace) -shrink.*##center -shrink.*##.banner -@@||shrink.*^$ghide -bigbtc.win##div[style^="width:300px;height:250px"] -@@||onceagain.mooo.com/prebid.js$script,domain=bigbtc.win -bigbtc.win,cryptofun.space##^script:has-text(/block-adb|-0x|adblock/) -!#if !cap_html_filtering -bigbtc.win,cryptofun.space##+js(rmnt, script, /block-adb|-0x|adblock/) -!#endif -@@||bigbtc.win^$ghide -bigbtc.win,cryptofun.space###block-adb-enabled, #block-add-enabled -bigbtc.win,cryptofun.space###main, #ielement:style(display: block !important;) -bigbtc.win##div:has(> div[style] > div[id] > script[src^="//ads.themoneytizer.com"]) -@@||dlvid.*/prebid.js$domain=bigbtc.win|shrink.icu -||watson.de/js/tisoomi.js$script,1p -watson.de##[data-ad] -activistpost.com##+js(aopr, XMLHttpRequest) -activistpost.com##+js(aopr, String.fromCharCode) -||activistpost.com^$script,1p -@@||activistpost.com/wp-$script,1p -hackedonlinegames.com##+js(nostif, _0x) -crunchyroll.com##+js(json-prune, value.media.ad_breaks) -crunchyroll.com##+js(nosiif, onAdVideoStart) -crunchyroll.com###template_skin_leaderboard -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=crunchyroll.com,important -!*$popunder,3p,domain=spankbang.com -||ersties.com^$3p -||spankbang.*/official/serve_ -spankbang.*##+js(nowoif) -spankbang.*##+js(set, chrome, undefined) -spankbang.*##.ttaa2v3 -spankbang.*##[id^="interstitial_div"] -spankbang.*##.video-list-with-ads > .video-item[data-id="0"] -spankbang.*##.lv_cm_int_come_on -spankbang.*##.download-promo -@@||g-status.com^$ghide -g-status.com##ins.adsbygoogle -g-status.com##.topadv_placeholder -arcadeprehacks.com##+js(acs, Math.random, zonefile) -bilasport.net##+js(aopr, pwparams) -! starachowice .eu anti adb -@@||starachowice.eu^$ghide -! iporntv .net popups -iporntv.net##+js(acs, document.createElement, pop) -skeimg.com##+js(nowoif) -||d1k3dpebxhgqjc.cloudfront.net^ -readcomicsonline.ru##+js(acs, document.createElement, "script") -@@||readcomicsonline.ru^$ghide -yogitimes.com##+js(aopr, fuckAdBlock) -! games4king https://github.com/NanoMeow/QuickReports/issues/19 -games4king.com###wrapped-content:style(display:inherit!important) -games4king.com###ava-game_container:style(display:inherit!important) -games4king.com##[id^="leaderboard"] -games4king.com##[class^="ads"] -games4king.com##[href^="https://play.google.com/"] -games4king.com##+js(ra, target) -! other https://github.com/NanoMeow/QuickReports/issues/19 -##.wgAdBlockMessage -||cdn.pushcrew.com^$3p -4share.vn##+js(nano-stb) -4share.vn##+js(nowoif) -firefaucet.win##+js(nofab) -firefaucet.win##+js(set, firefaucet, true) -@@||firefaucet.win^$ghide -firefaucet.win##[class^="sticky-ad"] -||cpx-research.com^$3p -||adservice.google.*/adsid/integrator.js$xhr,redirect=nooptext,domain=tubia.com -odkrywamyzakryte.com##+js(nofab) -xtapes.to##+js(acs, jQuery, popunder) -xtapes.to##+js(aopw, open) -55k.io##+js(set, cRAds, true) -0xxx.ws##+js(acs, decodeURI, decodeURIComponent) -0xxx.ws##+js(nowoif) -! gocolumbialions.com anti adb -@@||gocolumbialions.com^$ghide -||gocolumbialions.com/components/js/analytics.js$script,1p,redirect=noopjs -! cle0desktop.blogspot.com anti adb -cle0desktop.blogspot.com##+js(nostif, nextFunction, 2000) -cle0desktop.blogspot.com##+js(aeld, , pop) -! voyageforum.com anti adb -voyageforum.com##+js(nostif, AdBlock) -! wuxiaworld.com anti adb -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=wuxiaworld.com -@@||pubads.g.doubleclick.net/gampad/ads*wuxiaworld.com$xhr,domain=imasdk.googleapis.com -g5u.pw##A[href$=".html"][rel="nofollow norefferer noopener"] -g5u.pw##+js(acs, Object.defineProperty, XMLHttpRequest) -||g5u.pw/sw.js$script,1p -artribune.com##+js(aost, Object, mark) -artribune.com##^script:has-text(window.adsbygoogle) -interfans.org##+js(acs, $, AdBlock) -interfans.org##+js(nobab) -xclusivejams.*##+js(aopr, decodeURI) -||xclusivejams.*/sw.js$script -prad.de##+js(nostif, stop-scrolling) -juba-get.com##+js(aopr, detectAdBlock) -chatta.it##+js(nostif, Adv) -up-load.io##+js(noeval) -up-load.io##+js(nostif, nextFunction, 2000) -||up-load.io/sw.js$xhr,1p -*$3p,denyallow=cloudflare.net|fontawesome.com|google.com|googleapis.com|gstatic.com|hwcdn.net|jquery.com|up-load.download,domain=up-load.io -up-load.io##.ads -! ketubanjiwa.com anti adb -ketubanjiwa.com##+js(nostif, blockUI, 2000) -direct-link.net,link-to.net,direkt-wissen.com##+js(nano-sib, countdown) -direct-link.net,direkt-wissen.com,link-to.net##+js(nano-sib, web_counter) -direct-link.net,direkt-wissen.com,link-to.net##+js(nano-sib, video_counter) -direct-link.net,link-to.net##+js(nano-stb, notification_state, 12000) -direct-link.net,direkt-wissen.com,link-to.net##+js(set, app.addonIsInstalled, trueFunc) -direct-link.net,direkt-wissen.com##+js(nostif, nextFunction, 2000) -||direct-link.net^$xhr,1p -@@||direct-link.net/*/click$xhr,1p -@@||link-to.net/*/click$xhr,1p -direct-link.net,link-to.net##.redirect-overlay -rlslog.net##+js(aeld, load) -rlslog.net##+js(nowebrtc) -@@||jwpcdn.com/player/plugins/googima/v/*/googima.js$script,domain=viu.tv -! tf1 .fr -@@||tf1.fr^$ghide -||delivery.tf1.fr/pub$media,redirect=noopmp3-0.1s,domain=tf1.fr -||dnl-adv-ssl.tf1.fr/$media,redirect=noopmp3-0.1s,domain=tf1.fr -*$xhr,redirect-rule=nooptext,domain=tf1.fr -tf1.fr##+js(no-fetch-if, adsafeprotected) -@@||footprint.net^$xhr,domain=prod-player.tf1.fr -@@||vendorlist.consensu.org/vendorlist.json$xhr,domain=tf1.fr -@@||cdn.tagcommander.com/cmp-api/cmp.js$script,domain=tf1.fr -||slpubmedias.tf1.fr^$media,1p,redirect=noopmp3-0.1s -f1livegp.net##+js(nowebrtc) -f1livegp.net###blockblockA -! safemaru.blogspot.com anti adb -safemaru.blogspot.com##+js(aeld, load, 2000) -reverso.net##+js(acs, $, adblock) -reverso.net##.vdahead -reverso.net##.bottom-rca -reverso.net##.wrapperW + .sticky -smutr.com##+js(popads-dummy) -smutr.com##+js(set, flashvars.adv_pre_vast, '') -smutr.com##+js(set, flashvars.popunder_url, undefined) -*$popunder,domain=smutr.com,3p -! yuvutu .com popunder -yuvutu.com##+js(acs, String.prototype.charAt) -@@||lnk2.cc^$script,1p -lnk2.cc##+js(aeld, , \) -lnk2.cc##+js(nano-stb) -ucptt.com##+js(nowoif) -||loadshare.org/custom/*$media,redirect=noopmp4-1s,important -kachelmannwetter.com,meteologix.com##.dkpw-billboard-margin -kachelmannwetter.com,meteologix.com,weather.us##.dkpw-billboard-margin-fixed -kachelmannwetter.com##[href="https://pflotsh.com"] -kachelmannwetter.com###meteosafe -meteologix.com##.md-billboard-sp -meteologix.com,weather.us##.mdcss-desktop -kachelmannwetter.com,meteologix.com,weather.us##.kw-ad-right -meteologix.com,weather.us##.gad-billboard-pos -weather.us##.dkpw-abp -@@||meteologix.com^$ghide -@@||weather.us^$ghide -||mairdumont.com^$script,redirect-rule=noopjs,domain=kachelmannwetter.com -||md-nx.com^$script,redirect-rule=noopjs,domain=meteologix.com|weather.us -techperiod.com##+js(set, blockAdBlock, true) -4movierulz.*##+js(aeld, , _0x) -losmovies.*##.aPlaceHolder -! sportlemons. net / org popups / ads -sportlemon.*,sportlemons.*,sportlemonx.*##+js(aopr, decodeURI) -sportlemons.*###happyDog -sportlemons.*###lazyCat -sportlemonx.com##.tallstreambanner -||bitcoinsports.org^$3p -xxx-image.com##+js(aopr, adsBlocked) -xxx-image.com##+js(aopr, open) -xxx-image.com##+js(noeval) -xxx-image.com##+js(aopr, XMLHttpRequest) -xxx-image.com##+js(aopr, Date.prototype.toUTCString) -xxx-image.com##+js(ra, oncontextmenu) -xxx-image.com##.footer-container -oscobo.com##.banotset:upward(3) -! hulkpop.com -> kpopjjang.com -kpopjjang.com##+js(aopr, decodeURIComponent) -kpopjjang.com##+js(aopr, Base64) -! exe.io shorteners -cuts-url.com,eio.io,exe.io,exe.app,exee.io##+js(aopr, app_vars.force_disable_adblock) -exe.io,exe.app##+js(nowoif) -cuts-url.com,eio.io,exe.app,exee.io##+js(set, blurred, false) -/sw.js$script,1p,domain=eio.io|exe.app|exee.io -exey.io##+js(acs, encodeURIComponent, XMLHttpRequest) -exey.io##+js(set, blurred, false) -eio.io,exee.io,exe.app##+js(aopr, adBlockDetected) -exey.io##+js(acs, disableItToContinue) -@@||exe.app^$ghide -exe.app,eio.io,ufacw.com##+js(no-fetch-if, google) -exe.io,wealthh.xyz##+js(aopr, parcelRequire) -@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=exey.io -@@||pagead2.googlesyndication.com/pagead/managed/js/adsense/$script,domain=exey.io -/ad-m.js$script,1p -||lengejoberdak.pro^ -||measur-d.com^$3p -exee.io,exe.app##.banner-page > .short -skincarie.com##+js(nowoif) -skincarie.com##+js(set, blurred, false) -ufacw.com###wpsafe-generate, #wpsafe-link:style(display: block !important;) -ufacw.com###wpsafe-generate, #wpsafe-link:others() -exeo.app##+js(set, blurred, false) -nsfw247.to##+js(nostif, mdpDeBlocker) -mzee.com##+js(aopr, performance) -@@||idalponse.blogspot.com^$ghide -idalponse.blogspot.com##ins.adsbygoogle -! automobiledimension.com anti adb -automobiledimension.com##.avisdiv -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=mysterious-dev.com -daftporn.com##+js(aopr, document.dispatchEvent) -daftporn.com##+js(disable-newtab-links) -bravoerotica.com##+js(aopr, ExoLoader.serve) -bravoerotica.net##+js(set, flashvars.adv_pause_html, '') -bravoerotica.net##+js(set, flashvars.adv_start_html, '') -bravoerotica.net##.place -bravoerotica.net##.table -@@||emu-games.com^$ghide -fullhdxxx.com##+js(aeld, popstate) -fullhdxxx.com##+js(aopr, ExoLoader) -fullhdxxx.com##+js(set, adv, true) -fullhdxxx.com##+js(aopr, btoa) -fullhdxxx.com,viptube.com##+js(nowoif) -fullhdxxx.com###video-slider -m.viptube.com##+js(aopw, mobilePop) -madchensex.com##+js(aopr, ExoLoader) -madchensex.com###side-spot -erogen.*##+js(aopr, document.dispatchEvent) -xasiat.com##+js(aopr, exoJsPop101) -xasiat.com##+js(aopr, ExoLoader.serve) -||rusexclips.com^$3p -redporno.cz##+js(aopr, ExoLoader.serve) -redporno.cz##.right -vintageporntubes.com##+js(aopr, ExoLoader.serve) -vintageporntubes.com##+js(aeld, getexoloader) -vintageporntubes.com##.VPT_player_ads -italianoxxx.com##+js(aopr, document.dispatchEvent) -||scopateitaliane.it^$3p -collegehdsex.com,lustylist.com##+js(aopr, document.dispatchEvent) -yumstories.com##+js(aopr, document.dispatchEvent) -18-teen-porn.com,69teentube.com,girlshd.xxx,home-xxx-videos.com,orgasmlist.com,teensextube.xxx##+js(aopr, document.dispatchEvent) -xxxvideos247.com##+js(aopr, ExoLoader.serve) -pornyfap.com##+js(aopr, document.dispatchEvent) -young-pussy.com##+js(aopr, ExoLoader.serve) -young-pussy.com###playerOverlay -extremereportbot.com##+js(nostif, /_0x|debug/) -extremereportbot.com##+js(nosiif, /_0x|debug/) -@@||extremereportbot.com^$ghide -*$script,redirect-rule=noopjs,domain=extremereportbot.com -||googleapis.com/discovery/$xhr,domain=extremereportbot.com -@@||pagead2.googlesyndication.com^*/show_ads_impl.js$script,domain=extremereportbot.com -@@||doubleclick.net/pagead/*$frame,domain=extremereportbot.com -@@||googlesyndication.com^$xhr,domain=extremereportbot.com -tatsumi-crew.net##+js(nobab) -tatsumi-crew.net###HTML2 -your-daily-girl.com##+js(aopr, adtoniq) -nudistube.com##+js(aopr, document.dispatchEvent) -uporno.xxx##+js(aopr, document.dispatchEvent) -uporno.xxx##.banner -ultrateenporn.com##+js(aopr, document.dispatchEvent) -gosexpod.com##+js(aeld, click, my_inter_listen) -gosexpod.com##+js(aopr, document.dispatchEvent) -gosexpod.com##.zzz-ddnotice -gosexpod.com##.content__block[style^="direction"] -gosexpod.com##.video-headline -gosexpod.com##center -gosexpod.com##.natsc -gosexpod.com##.im_outer_x:upward(2) -gosexpod.com##^script:has-text(myreadCookie/) -!#if env_chromium -gosexpod.com##+js(rmnt, script, myreadCookie) -!#endif -al4a.com,grannysex.name,porntb.com,scopateitaliane.it,sexbox.online,teenpornvideo.sex,twatis.com##+js(aopr, document.dispatchEvent) -/dao/dao-fel.js$script,1p -lonely-mature.com##+js(aopr, EviPopunder) -pornclassic.tube,tubepornclassic.com##+js(acs, adver) -tubepornclassic.com##+js(acs, document.createElement, tcpusher) -tubepornclassic.com##+js(aeld, , window.open) -tubepornclassic.com##+js(aopr, preadvercb) -tubepornclassic.com##+js(nosiif, complete, 50) -tubepornclassic.com##+js(nosiif, document.readyState) -pornclassic.tube,tubepornclassic.com##+js(set, prerollMain, undefined) -*$frame,3p,domain=pornclassic.tube|tubepornclassic.com -*$popunder,3p,domain=pornclassic.tube|tubepornclassic.com -pornclassic.tube,tubepornclassic.com##.content > div > .container + div -pornclassic.tube,tubepornclassic.com##div:has(> a[href^="http://www.theclassicporn.com/"]) -pornclassic.tube,tubepornclassic.com##span[style="display:flex !important"] > div:first-child -pornclassic.tube,tubepornclassic.com##.video-page__content > div.left + div[class]:last-child -pornclassic.tube,tubepornclassic.com##div[style="display:flex !important"] > div -pornclassic.tube,tubepornclassic.com##.video-page__player + div[class] > div[class] -pornclassic.tube,tubepornclassic.com##.partners-wrap + div[class] -pornclassic.tube,tubepornclassic.com##section[style="padding: 20px;"] -pornclassic.tube,tubepornclassic.com##div[style="width: 300px; height: 250px;"] -flashingjungle.com##+js(aeld, /^(click|mousedown|mousemove|touchstart|touchend|touchmove)/, system.popunder) -flashingjungle.com##+js(aopr, document.dispatchEvent) -flashingjungle.com##.advertising:upward(2) -pussyspot.net,wildpictures.net##+js(aopr, decodeURI) -pussyspot.net,wildpictures.net##[href^="http://ucam.xxx/"] -pussyspot.net,wildpictures.net##[href^="https://easygamepromo.com/"] -8boobs.com,babesinporn.com,hotstunners.com,mainbabes.com,mysexybabes.com,pleasuregirl.net,rabbitsfun.com,sexybabesz.com,silkengirl.*##+js(aopr, ExoLoader.addZone) -8boobs.com,babesinporn.com,boobgirlz.com,fooxybabes.com,hotstunners.com,jennylist.xyz,jumboporn.xyz,mainbabes.com,mysexybabes.com,nakedbabes.club,pleasuregirl.net,rabbitsfun.com,sexybabesz.com,silkengirl.*,vibraporn.com,zazzybabes.com,zehnporn.com##+js(aopr, loadTool) -8boobs.com,babesinporn.com,bustybloom.com,hotstunners.com,nudebabes.sexy,pleasuregirl.net,rabbitsfun.com,silkengirl.*##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -babesaround.com,dirtyyoungbitches.com,grabpussy.com,join2babes.com,nightdreambabe.com,novoglam.com,novohot.com,novojoy.com,novoporn.com,novostrong.com,pbabes.com,pussystate.com,redpornblog.com,rossoporn.com,sexynakeds.com,thousandbabes.com##+js(aopr, AaDetector) -babesinporn.com##.topbanner -boobgirlz.com##.widget-column:has(> center > [href="https://boobgirlz.com/istripper"]) -nakedneighbour.com##.banner:upward(.block) -/sex.gif$domain=epikporn.com|erotichdworld.com|guruofporn.com|jesseporn.xyz|jumboporn.xyz|kendralist.com|steezylist.com -/yep.gif$domain=abellalist.com|doseofporn.com|freyalist.com|lizardporn.com|moozporn.com|zehnporn.com -/flr.js$domain=8boobs.com|angelgals.com|babesexy.com|babesinporn.com|fooxybabes.com|hotbabeswanted.com|hotstunners.com|mainbabes.com|nakedbabes.club|nakedgirlsroom.com|nudebabes.sexy|pleasuregirl.net|rabbitsfun.com|sexybabes.club|sexybabesart.com|silkengirl.*|wantedbabes.com -/images/*/b/*$image,redirect=2x2.png,domain=babesandbitches.net|babesaround.com|babesbang.com|babeuniversum.com|grabpussy.com|join2babes.com|nightdreambabe.com|novojoy.com|novoporn.com|novostrong.com|pbabes.com|pussystate.com|redpornblog.com|rossoporn.com|sexynakeds.com -/images/*/banners/*$image,redirect=2x2.png,domain=100bucksbabes.com|8boobs.com|babeimpact.com|babesandgirls.com|babesaround.com|babesinporn.com|babesmachine.com|bustybloom.com|chickteases.com|decorativemodels.com|dirtyyoungbitches.com|exgirlfriendmarket.com|fooxybabes.com|girlsofdesire.org|glam0ur.com|hotstunners.com|livejasminbabes.net|morazzia.com|nakedneighbour.com|novoglam.com|pleasuregirl.net|rabbitsfun.com|sexyaporno.com|sexykittenporn.com|silkengirl.*|slutsandangels.com|theomegaproject.org|thousandbabes.com|vibraporn.com|wantedbabes.com|wildfanny.com -/istripper/istripper_$image,domain=8boobs.com|babesinporn.com|fooxybabes.com|hotstunners.com|mainbabes.com|pleasuregirl.net|rabbitsfun.com|silkengirl.*|wantedbabes.com -/smallfr/*$frame,domain=babeimpact.com|decorativemodels.com|sexykittenporn.com -/smallfr2/*$frame,domain=babeimpact.com|decorativemodels.com -/\.com\/[_0-9a-zA-Z]+\.jpg$/$image,1p,domain=hottystop.com -||zehnporn.com/img/12221.gif -/gofd_fl.js -babeuniversum.com##.aw -babeuniversum.com##.galleryad -redpornblog.com###ads -nightdreambabe.com##.banner_place -girlsofdesire.org##a[href^="/out"] -silkengirl.com##.spots -hotbabeswanted.com,nakedbabes.club##.deskbanner -100bucksbabes.com,babesandgirls.com,morazzia.com##.vda -babesaround.com,nightdreambabe.com##.section-bustyMedinaq > a[href^="/click/o/"] -novojoy.com##.ownerbanner -pussystate.com##li[style="clear:both;float:none;width:600px;margin:0;overflow:hidden;margin-left:-5px;"] -rabbitsfun.com##.gallery-banner -rabbitsfun.com##.picture-banner -vibraporn.com##.topad -fresh-babes.com###XXXGirls -girlsofdesire.org##div[data-width="600"] -novoporn.com##a[href^="/click/o/"] -sensualgirls.org##a[href^="http://refer.ccbill.com/cgi-bin/clicks.cgi?"] -nudevista.link##.sidebar-bn -nudevista.link##.bnblog -angelgals.com,nakedbabes.club##+js(acs, loadTool, popping) -angelgals.com,nakedbabes.club##+js(aopr, ExoLoader.addZone) -angelgals.com##+js(aeld, getexoloader) -babesexy.com,hotbabeswanted.com,nakedgirlsroom.com,nudebabes.sexy,sexybabes.club,sexybabesart.com##+js(aopr, ExoLoader.addZone) -babesexy.com##+js(aeld, getexoloader) -sexybabes.club##+js(acs, loadTool, popping) -/backend_loader$script -cherrynudes.com##+js(acs, loadTool, popping) -cherrynudes.com##[href^="http://links.verotel.com/"] -cherrynudes.com##[href^="http://www.g4mz.com/"] -hegreartnudes.com##+js(acs, loadTool, popping) -cherrynudes.com##[href^="http://wcrgl.freeadult.games/hit.php"] -1001tracklists.com##+js(aopr, recoverLinks) -1001tracklists.com##+js(ra, class, div.intAdX) -1001tracklists.com##+js(ra, class, div[class^="img"][class$="ad"]) -@@||1001tracklists.com^$ghide -@@||1001tracklists.com^$script,1p -*$script,xhr,redirect-rule=noopjs,domain=1001tracklists.com -1001tracklists.com##.adnginRight -1001tracklists.com##div[class=""][style] -1001tracklists.com##+js(alert-buster) -1001tracklists.com##+js(no-fetch-if, method:HEAD) -fetishburg.com##+js(aopr, document.dispatchEvent) -fetishburg.com##div.spot -privateindianmovies.com##+js(aopr, document.dispatchEvent) -homemature.net##+js(nowoif) -soyoungteens.com##+js(aopr, document.dispatchEvent) -kingsofteens.com##+js(aopr, ExoLoader.serve) -kingsofteens.com##+js(aopw, base64_decode) -kingsofteens.com##+js(nowoif) -doseofporn.com##+js(acs, loadTool, popping) -kingsofteens.com##.spot -@@||receivetxt.com^$ghide -@@||properhacks.weebly.com^$ghide -space.tribuntekno.com##+js(aopw, adBlockDetected) -flashgirlgames.com,onlinesudoku.games##+js(set, ads, true) -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js,domain=flashgirlgames.com|onlinesudoku.games -otakukan.com##+js(aeld, load, appendChild) -||otakukan.com/sw.js$script,1p -||cdn.jsdelivr.net^*/arlinablock.js$script -@@||otakukan.com^$ghide -otakukan.com##ins.adsbygoogle -devdrive.cloud##+js(acs, document.getElementById, undefined) -gpxgenerator.com###adBlockDiv -gpxgenerator.com##[href="link.php"] -@@||aston-martin-club.com^$ghide -linkshub.*##+js(nowoif) -@@||javaguides.net^$ghide -javaguides.net##+js(aeld, load, onload) -hentaihere.com##+js(nowoif) -hentaihere.com##[href^="https://goo.gl"] -hentaihere.com##.js-adzone -@@||zavislak.to^$ghide -||adservice.google.com/adsid/integrator.js$script,redirect=noopjs,domain=973espn.com -secretsdujeu.com##+js(acs, document.getElementById, adsrefresh) -||googlesyndication.com/pagead/$script,redirect=noopjs,domain=iptvdroid1.blogspot.com -cruisingearth.com##+js(nostif, show) -@@/wutime$script,1p -@@||roanoke.com^$ghide -roanoke.com##.dfp-ad -afilmywap.*,okhatrimaza.*##+js(popads-dummy) -afilmywap.*,okhatrimaza.*##+js(aopr, glxopen) -/1clkn/*$script,3p -getintopc.com##+js(nostif, /ai_adb|_0x/) -etonline.com##+js(aopr, _sp_._networkListenerData) -etonline.com##+js(set, canRunAds, true) -! metager .org ads on search -metager.org##.result:has(.partnershop-info) -supertelevisionhd.com##+js(aopr, AaDetector) -~chavesnamao.com.br###anuncio -@@||aradramatv.co^$ghide -aradramatv.co##ins.adsbygoogle -@@||teenserie.com/wp-content/plugins/$script,1p -/apu.php?*&zoneid=$important -gulf-up.com##+js(aopr, AaDetector) -@@||gulf-up.com^$ghide -gulf-up.com##ins.adsbygoogle -||googlesyndication.com/$script,redirect=noopjs,domain=gulf-up.com -keysbrasil.blogspot.com##+js(nostif, nextFunction, 2000) -@@||fiatclub.eu^$ghide -vidia.tv##+js(acs, $, undefined) -vidia.tv##+js(aopr, AaDetector) -@@||vidia.tv^$script,1p -||egyanime.com^$domain=vidia.tv -vidia.tv##+js(nostif, iframe) -vidia.tv##+js(nostif, pop) -||vidia.tv^$csp=frame-src -@@||liveadexchanger.com/a/display.php$script,domain=prem.link -multiup.io,multiup.org,multiup.eu##+js(acs, decodeURI, decodeURIComponent) -multiup.io,multiup.org,multiup.eu##+js(nosiif, .submit) -multiup.io##+js(rpnt, script, setInterval) -multiup.io,multiup.org,multiup.eu##.text-center.bg-info -multiup.io,multiup.org,multiup.eu##div.col-md-4:has(> .panel > .panel-footer > a[href^="/download-fast/"][namehost^="UseNet"]) -multiup.io,multiup.org,multiup.eu##.mfp-ready -multiup.io,multiup.org,multiup.eu##div.text-center:has(a[class="btn btn-success"][href^="abp:subscribe"]) -*$popunder,3p,domain=multiup.io|multiup.org|multiup.eu -||multinews.me^$3p -tmearn.*##+js(aopr, app_vars.force_disable_adblock) -tmearn.*##+js(nowoif) -tmearn.*##+js(set, blurred, false) -cutpaid.com,tmearn.*##+js(aopr, AaDetector) -*$script,3p,denyallow=cloudflare.com|google.com|gstatic.com|recaptcha.net,domain=tmearn.* -||tmearn.com/*sw.js$script,1p -tmearn.*##.banner -godmods.com##+js(aopw, mdp_deblocker) -bilan.ch##+js(aopr, _sp_._networkListenerData) -filedown.*##+js(nowoif) -@@||filedown.*^$ghide -mexa.*##+js(acs, document.getElementById, adblockinfo) -mexa.sh##+js(acs, String.fromCharCode, 'shift') -mexa.sh##+js(aopr, eddOptions) -mexa.*##+js(aopw, adBlockDetected) -mexa.sh##+js(aopw, afScript) -mexa.*##+js(aopw, installBtnvar) -*$script,3p,denyallow=google.com|gstatic.com|hcaptcha.com|recaptcha.net,domain=mexa.sh -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=spieleklassiker.com -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=spieleklassiker.com -spieleklassiker.com##.banner -@@||valueyourmusic.com^$ghide -qoshe.com##+js(nostif, adBlock) -yandexcdn.com##+js(nowoif) -@@||yandexcdn.com^$ghide -@@||yandexcdn.com^$script,1p -yandexcdn.com##a[onclick="openAuc();"] -yandexcdn.com##[href="https://t.me/Russia_Vs_Ukraine_War3"] -*.mp4$media,redirect=noopmp3-0.1s,domain=theweedtube.com -iguarras.com,peliculaspornomega.net##+js(nowoif) -iguarras.com###dimmed -peliculaspornomega.net##.dimmed -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=tsforum.pl -uploadas.com##+js(aopw, Fingerprint2) -@@||video.bestjavporn.com^$ghide -bestjavporn.com,mm9841.cc###flash -bestjavporn.com###player_3x2_container_inner -bestjavporn.com###player-container:has-text(Close ad) -javporn.best##+js(aopr, AaDetector) -javporn.best##+js(aopr, glxopen) -@@||javporn.*^$ghide -@@||av-th.info^$ghide -lowellsun.com##+js(nostif, , 1) -multifaucet.org##+js(nano-sib, seconds) -multifaucet.org##+js(aopr, adBlockDetected) -@@||multifaucet.org^$ghide -multifaucet.org##.flexbannergroup -multifaucet.org##ins[class][style^="display:inline-block;width:"] -! popups , ads torrentproject .io / cc -||torrentproject.*^$script,frame,1p -nudogram.com##+js(acs, decodeURI, decodeURIComponent) -nudogram.com##+js(aopr, decodeURI) -||leadnote.me^ -nudogram.com##.sponsor -gottanut.com##+js(aopr, document.dispatchEvent) -uiporn.com##+js(aopr, document.dispatchEvent) -||uiporn.com/ai/*$script,1p -||uiporn.com/sw.js$script,1p -xcafe.com##+js(aopr, document.dispatchEvent) -xcafe.com##+js(popads-dummy) -xcafe.com##+js(aeld, , bi()) -||xcafe.com/js/initsite.js -@@||coinlyhub.com^$ghide -coinlyhub.com##+js(aopr, open) -coinlyhub.com##+js(set, Fingerprint2, true) -coinlyhub.com##+js(nano-sib, seconds) -coinlyhub.com##+js(aopr, app_vars.force_disable_adblock) -coinlyhub.com##+js(set, blurred, false) -@@||coinlyhub.com^$script,1p -coinlyhub.com##[class^="bmadblock"] -coinlyhub.com##div.highlight -coinlyhub.com##.banner -*$script,redirect-rule=noopjs,domain=coinlyhub.com|cryptotinker.com -zimabdko.com##+js(nowebrtc) -pornoxo.com##+js(popads-dummy) -*$popunder,3p,domain=m.pornoxo.com -||pushpad.xyz^$3p -leechall.*###adBanner:style(height:25px !important;left:-3000px !important;position:absolute !important) -leechall.*##+js(nano-sib) -leechall.com##+js(acs, document.createElement, /l\.parentNode\.insertBefore\(s/) -leechall.*##.text-center.alert-info.alert -@@||leechall.download^$ghide -@@||leechall.download^$script,1p -||digiseller.ru^$3p,domain=leechall.com -*$script,3p,redirect-rule=noopjs,domain=leechall.download|leechall.com -*$script,3p,denyallow=bootstrapcdn.com|cloudflare.com|cloudflare.net|googleapis.com|jsdelivr.net|tawk.to,domain=leechall.* -||hathyneglu.com^ -||newtoki*.net/*banner$image,1p -kinoz.*##+js(nowebrtc) -kinoz.*##+js(aopr, AaDetector) -kinox.*,kinoz.*##+js(aopr, decodeURI) -||tsyndolls.com^$3p -majalahpendidikan.com##+js(aopr, adBlockDetected) -! sombex.com anti adb -sombex.com##+js(nosiif, visibility, 1000) -ultimate-catch.eu##+js(nostif, undefined) -! lampungway .com anti adb -lampungway.com##+js(aopw, adBlockDetected) -movie4me.*##+js(aopr, Math.floor) -||movie4me.*/image/ad-$image -##[href^="//producebreed.com/"] -##[href*="uselnk.com/"] -*$script,3p,denyallow=recaptcha.net|gstatic.com,domain=dglinker.com -! cpopchanelofficial.com anti adb -cpopchanelofficial.com##+js(nostif, check, 1) -@@||teemo.gg^$ghide -teemo.gg##.bg-gray-200:style(background: none !important; height: 1px !important; min-height: 1px !important;) -sochi.camera#@##cams_top_block -adsafelink.com##+js(aopr, app_vars.force_disable_adblock) -adsafelink.com##+js(nowoif) -adsafelink.com##+js(set, blurred, false) -@@||ustv247.tv^$ghide -avseesee.com##+js(acs, document.getElementById, _banner) -avseesee.com##.textwidget:has(ins) -juicywest.com##+js(aopr, __Y) -@@||aii.sh^$ghide -aii.sh##+js(nowoif) -aii.sh##+js(nowebrtc) -aii.sh##+js(set, blurred, false) -aii.sh###link-view > center -||aii.sh/sw$script,1p -aii.sh##[src^="https://i.imgur.com/"] -##.glx-watermark-container -kisstvshow.*##+js(acs, $, #divDownload) -kisstvshow.*###hideAds -kisstvshow.*##.ksAds -kisstvshow.*##div[style="width: 620px; margin: 0px auto; overflow: hidden;"] -||kisstvshow.*/api/pop.php$xhr,1p -||ad.kisstvshow.*^ -||bebi.com^$script,redirect-rule=noopjs,domain=lifestylehack.info -! winit.heatworld.com anti adb -winit.heatworld.com##+js(aopw, showModal) -winit.heatworld.com##.sticky-ad-unit-default -winit.heatworld.com##.sticky-ad-unit-spacer-default -@@||ryuukoi.web.id^$ghide -||i1.wp.com/ryuukoi.web.id/wp-content/uploads/*/ANTIADBLOCK$image -||bitcoinadvertise.net^$3p -checkz.net##+js(aopw, console.log) -@@||checkz.net^$ghide -checkz.net##ins.adsbygoogle -@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=ff14angler.com -@@||pagead2.googlesyndication.com/pagead/managed/js/adsense/$script,domain=ff14angler.com -@@||g.doubleclick.net/pagead/ads?$frame,domain=ff14angler.com -@@||ff14angler.com^$ghide -ff14angler.com###main > ins.adsbygoogle:style(position: absolute !important; left: -4000px !important;) -ff14angler.com##.side_banner:style(position: absolute !important; left: -4000px !important;) -jaiefra.com##+js(aopr, adBlockDetected) -! hotpress.info anti adb -hotpress.info##+js(nostif, nextFunction, 2000) -@@||hotpress.info^$ghide -! mixloads.com anti adb popups -mixloads.com##+js(aopr, AaDetector) -mixloads.com##+js(aeld, load, 2000) -||mixloads.com/sw.js$script,1p -! mangaromance.eu anti adb -mangaromance.eu##+js(aeld, load, 2000) -! onlineproxy. eu popups -||onlineproxy.eu^$csp=default-src 'self' 'unsafe-inline' *.googleapis.com *.google.com *.gstatic.com *.google-analytics.com -@@||coachmag.co.uk^$ghide -||doubleclick.net/pagead/id$xhr,redirect=nooptext,domain=windowsreport.com -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=collegestash.com -||googlesyndication.com/pagead/js/adsbygoogle.js$xhr,redirect=noopjs,domain=collegestash.com -buffstream.to,buffstreamz.com##+js(acs, $, modal) -buffstreamz.com##+js(nowebrtc) -buffstream.to,buffstreamz.com##.btn -buffstreamz.com##a[href*="//my-sports.club"] -##[href^="http://referrer.website/"] -@@||thisismoney.co.uk^$ghide -megagames.com##+js(acs, jQuery, fuckAdBlock) -@@||chiaseapk.com^$ghide -@@||csrevo.com^$ghide -@@||phoenixkiller.com/assets/js/ad-provider.js|$script -csrevo.com###HTML3 -||i.imgur.com/FYROU5n.gif$image,3p -@@||designoptimal.com^$ghide -designoptimal.com##ins.adsbygoogle -! almohtarif-tech .net anti adb -almohtarif-tech.net##+js(aeld, load, onload) -*$media,redirect=noopmp3-0.1s,domain=pietsmiet.de -@@||pietcdn.de/pietcast/*$media,domain=pietsmiet.de -vidbom.com,zimabdko.com##+js(aopr, open) -czxxx.org##+js(aopr, adBlockDetected) -czechvideo.org##+js(nowoif) -creditcardgenerator.com##+js(nostif, adsBlocked) -! interssh.com anti adb -interssh.com##+js(aeld, load, 2000) -ancensored.com##+js(aopr, AaDetector) -elpasotimes.com##+js(aopr, _sp_.mms.startMsg) -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=ktab3ndna.com -! sexo5k .com exo ads -sexo5k.com##+js(rmnt, script, ExoLoader) -! gfsvideos .com exo + popups -gfsvideos.com##+js(aopr, document.dispatchEvent) -gfsvideos.com##+js(nowoif) -! home-made-videos .com exo -home-made-videos.com##+js(aopr, document.dispatchEvent) -home-made-videos.com##+js(set, dclm_ajax_var.disclaimer_redirect_url, '') -home-made-videos.com###dclm_modal_content -home-made-videos.com###dclm_modal_screen -shameless.com##+js(aopr, ExoLoader.addZone) -shameless.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -shameless.com##+js(aopr, jwplayer.utils.Timer) -shameless.com##.active.pause-gift -electriciansforums.net##+js(nostif, adb) -nmn900.net##+js(acs, document.getElementById, undefined) -@@||realmadryt.pl^$xhr,1p -@@||speakingtree.in^$ghide -coinhub.pw##+js(aopw, adBlockDetected) -coinhub.pw##body > center -the-voice-of-germany.de##+js(aopr, $ADP) -||zomap.de/*&expires=$script,domain=the-voice-of-germany.* -||cdn.zomap.de^$media,redirect=noopmp3-0.1s,domain=the-voice-of-germany.* -! dpstream .bz popups -dpstream.*##+js(set, load_pop_power, noopFunc) -dpstream.*##+js(ra, href, #clickfakeplayer) -dpstream.*##.movie-aye -unfriend-app.com##+js(nobab) -@@||unfriend-app.com^$ghide -*$script,redirect-rule=noopjs,domain=unfriend-app.com -adn.com##+js(aopr, MG2Loader) -@@||jbzdy.cc^$ghide -technews.tw##+js(acs, jQuery, adblock) -technews.tw##.AD_wrapper -shon.xyz##+js(nano-sib) -shon.xyz##+js(aopw, Fingerprint2) -shon.xyz##+js(ra, onclick, [onclick^="window.open"]) -shon.xyz##+js(popads-dummy) -||shon.xyz^$csp=script-src 'self' 'unsafe-inline' *.gstatic.com *.google.com *.googletagmanager.com *.googleapis.com;frame-src 'self' *.google.com;connect-src 'self' -?zoneid=*&ab=1|$script,3p -turkleech.com##+js(nostif, nextFunction, 2000) -gamearter.com##+js(nano-sib,/SplashScreen|BannerAd/) -gamearter.com##+js(nano-stb,/SplashScreen|BannerAd/) -gamearter.com##div[id^="ga_sp_"] -mpg.football##+js(set, ads, true) -@@||animevietsub.tv^$ghide -spokesman.com##+js(aopr, Connext) -medihelp.life##+js(aopw, ai_adb_overlay) -@@||guiamuriae.com.br^$ghide -||guiamuriae.com.br/*.gif$image -guiamuriae.com.br##.theiaStickySidebar -guiamuriae.com.br##ins.adsbygoogle -guiamuriae.com.br##.e3lan-top -verprogramasonline.com##+js(acs, atob, decodeURI) -verprogramasonline.com##+js(aopr, mdp_deblocker) -verprogramasonline.com##.td-ss-main-sidebar -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=viu.tv -@@||entitlements.jwplayer.com/$xhr,domain=viu.tv -||d2wpknqle9nuv8.cloudfront.net^ -ffmovies.*##+js(acs, String.fromCharCode, break;) -ffmovies.*##+js(nowoif) -thisvid.com##+js(aeld, /^(?:load|click)$/, popMagic) -hl-live.de##+js(nostif, nextFunction) -hl-live.de###swlad -! flsaudio.com anti adb -flsaudio.com##.adsbygoogle:upward(.widget) -flsaudio.com##.altumcode-coupon-content -||flsaudio.com^$image,redirect-rule=1x1.gif,1p -@@||aargauerzeitung.ch^$ghide -cloudapps.herokuapp.com##+js(set, gadb, false) -! imagetwist .com popunders -imagetwist.com##+js(acs, document.getElementsByTagName, "script") -imagehaha.com,imagenpic.com,imageshimage.com,imagetwist.com##+js(aeld, , checkTarget) -imagehaha.com,imagenpic.com,imageshimage.com,imagetwist.com,picshick.com###rang2 -imagehaha.com,imagenpic.com,imageshimage.com,imagetwist.com##video -imagehaha.com##+js(nowoif) -@@||watchsuitsonline.net^$ghide -produsat.com##+js(set, adBlockDetected, true) -*/gfp_video_ads/*$media,redirect=noopmp3-0.1s,domain=digisport.ro -||gvt1.com^$media,redirect=noopmp3-0.1s,domain=digisport.ro -@@||scdn.cxense.com/cx.js$script,domain=digisport.ro -@@||entitlements.jwplayer.com^$xhr,domain=digisport.ro -@@||doubleclick.net/gampad/live/ads*digisport.ro$xhr,domain=imasdk.googleapis.com -@@||jwpcdn.com/player/$script,domain=digisport.ro -@@||how2electronics.com^$ghide -how2electronics.com##.adsbygoogle:style(max-height: 1px !important;) -! freesoftpdfdownload.blogspot.com anti adb popups -freesoftpdfdownload.blogspot.com##+js(acs, decodeURI, decodeURIComponent) -freesoftpdfdownload.blogspot.com##+js(aeld, load, 2000) -||wap4dollar.com^$3p -@@||upclips.*^$ghide -upclips.*##[id*="ScriptRoot"] -||upclips.online*^$csp=script-src 'self' 'unsafe-inline' blob: *.cloudflare.com *.google-analytics.com *.googleapis.com *.gstatic.com *.radiantmediatechs.com -||mediapass.com^$3p -officegamespot.com##+js(acs, Math.round, zonefile) -! tamilyogi. cool popups vidorg.net anti adb -tamilyogi.*##+js(acs, String.fromCharCode, 'shift') -@@||vidorg.net^$ghide -@@||tvpc.us^$ghide -parzibyte.me##+js(acs, jQuery, ai_adb) -livingstondaily.com##+js(aopr, _sp_) -bluemediafiles.*##+js(aopr, open) -bluemediafiles.*##+js(nano-sib, i--) -bluemediafiles.*##+js(set, Time_Start, 0) -@@||bluemediafiles.*^$ghide -*$image,redirect-rule=32x32.png,domain=bluemediafiles.* -/script/su.js$script,3p -nilopolisonline.com.br##+js(nostif, blocker) -mesquitaonline.com##+js(nostif, blocker) -@@||nohat.*^$script,domain=nohat.cc -tbib.org##+js(aopr, document.dispatchEvent) -greensboro.com##body:style(overflow: auto !important) -greensboro.com##.modal, .modal-backdrop -@@||shirainime.com^$ghide -! espn1420.com/listen-live anti adb -||adservice.google.com/adsid/integrator.js$script,redirect=noopjs,domain=espn1420.com -@@||dias-uteis.com^$ghide -fullxxxmovies.net##+js(aopr, open) -socialgirls.im##+js(nostif, aswift_) -@@||socialgirls.im^$ghide -closermag.fr##+js(acs, document.head.appendChild, ='\x) -@@||closermag.fr^$ghide -@@||watchcalifornicationonline.com^$ghide -@@||kupujemprodajem.com^$ghide -kupujemprodajem.com##.bnrBox -||evolok.net/acd/api/*/authorize/*adblock$xhr,3p -@@||gagetmatome.com^$ghide -@@||animetake*.*^$script,1p -@@||animetake*.*^$ghide -animetake27.*##.gads -@@||s0ft4pc.com^$ghide -lavozdegalicia.es##+js(aeld, load, adb) -@@||neobux.com^$script,css,1p -mamadu.pl##+js(nostif, , 1) -neoteo.com##+js(set, jQuery.adblock, false) -elitegoltv.org,extremotvplay.com,tarjetarojatv.org,pirlotvonline.org,rojadirectaonlinetv.com##+js(aopr, open) -elmundo.es,expansion.com,marca.com##+js(aopr, adUnits) -marca.com##.ad-item-bt-cont -marca.com##.banner-sticky -yaoiotaku.com##+js(nostif, afs_ads, 2000) -||slacker.com^*/getspot/?spotid=$media,redirect=noopmp3-0.1s -||googlesyndication.com/pagead/js/adsbygoogle.js$xhr,redirect=noopjs,domain=gazetadopovo.com.br -gazetadopovo.com.br##.ads-desktop -beinmatch.*##+js(nowoif) -beinmatch.*##+js(rmnt, script, /?key.*open/, condition, key) -! cirokun.blogspot.com anti adb -cirokun.blogspot.com##+js(aeld, load, 2000) -! anisubindo.video anti adb -anisubindo.*##+js(aeld, load, nextFunction) -! anibatch.me anti adb -anibatch.me##+js(nostif, nextFunction, 2000) -mangalist.org##+js(nosiif, 0x) -@@||cdnjs.cloudflare.com/ajax/libs/blockadblock/$script,3p -@@||mangalist.org^$script,1p -! nsfw camchickscaps. com ads -camchickscaps.com##+js(aopw, ai_adb_overlay) -||nvxcvyfedg.com^ -||okean-qoj.com^ -! romanialivewebcam .blogspot.com anti adb -@@||romanialivewebcam.blogspot.com^$ghide -techmuzz.com##+js(nosiif, adblocker) -@@||minecraftpocket-servers.com^$ghide -allusione.org##+js(aopr, b2a) -photobucket.com##.swal2-container -photobucket.com##body.swal2-shown > [aria-hidden="true"]:style(filter: none !important) -photobucket.com##body:style(overflow: auto !important) -@@||photobucket.com/resources/common/*$script,1p -vvvvid.it##+js(json-prune, data.[].vast_url) -! @@||imasdk.googleapis.com/js/core/$frame,domain=vvvvid.it -! @@*ads.mperience.net/vast$xhr,domain=imasdk.googleapis.com -! preroll;$xhr,domain=imasdk.googleapis.com,important -! ||akamaized.net/Roll/$media,redirect=noopmp3-0.1s -! *$media,redirect=noopmp3-0.1s,domain=vvvvid.it -! @@||bs.serving-sys.com/*&gdpr_consent$xhr,domain=imasdk.googleapis.com -semawur.com##+js(aopr, open) -ayobelajarbareng.com,semawur.com##+js(nano-sib, , *, 0) -semawur.com###main > .text-center > a[href] > img -||semawur.com/download$image -kumpulmanga.org##+js(set, showAds, true) -msguides.com##+js(aopw, ai_adb_overlay) -||cloudfront.net/assets.sidearmsports.com/*/bettor_detector.$script,3p -*/assets.sidearmsports.com/$script,redirect-rule=noopjs -@@/templates/dfp/dfp-component-template.html$xhr,1p -@@/components/js/analytics.js|$xhr,1p -###sidearm-adblock-modal -12thman.com##.c-sticky-leaderboard -bceagles.com##.s-sticky-dfp -bceagles.com##.article-aside__sponsor -bceagles.com##.article-aside__sponsor2 -12thman.com,acusports.com,atlantic10.com,auburntigers.com,baylorbears.com,bceagles.com,bgsufalcons.com,big12sports.com,bigten.org,bradleybraves.com,butlersports.com,cmumavericks.com,conferenceusa.com,cyclones.com,dartmouthsports.com,daytonflyers.com,dbupatriots.com,dbusports.com,denverpioneers.com,fduknights.com,fgcuathletics.com,fightinghawks.com,fightingillini.com,floridagators.com,friars.com,friscofighters.com,gamecocksonline.com,goarmywestpoint.com,gobison.com,goblueraiders.com,gobobcats.com,gocards.com,gocreighton.com,godeacs.com,goexplorers.com,goetbutigers.com,gofrogs.com,gogriffs.com,gogriz.com,golobos.com,gomarquette.com,gopack.com,gophersports.com,goprincetontigers.com,gopsusports.com,goracers.com,goshockers.com,goterriers.com,gotigersgo.com,gousfbulls.com,govandals.com,gowyo.com,goxavier.com,gozags.com,gozips.com,griffinathletics.com,guhoyas.com,gwusports.com,hailstate.com,hamptonpirates.com,hawaiiathletics.com,hokiesports.com,huskers.com,icgaels.com,iuhoosiers.com,jsugamecocksports.com,longbeachstate.com,loyolaramblers.com,lrtrojans.com,lsusports.net,morrisvillemustangs.com,msuspartans.com,muleriderathletics.com,mutigers.com,navysports.com,nevadawolfpack.com,niuhuskies.com,nkunorse.com,nuhuskies.com,nusports.com,okstate.com,olemisssports.com,omavs.com,ovcsports.com,owlsports.com,purduesports.com,redstormsports.com,richmondspiders.com,sfajacks.com,shupirates.com,siusalukis.com,smcgaels.com,smumustangs.com,soconsports.com,soonersports.com,themw.com,tulsahurricane.com,txst.com,txstatebobcats.com,ubbulls.com,ucfknights.com,ucirvinesports.com,uconnhuskies.com,uhcougars.com,uicflames.com,umterps.com,uncwsports.com,unipanthers.com,unlvrebels.com,uoflsports.com,usdtoreros.com,utahstateaggies.com,utepathletics.com,utrockets.com,uvmathletics.com,uwbadgers.com,villanova.com,wkusports.com,wmubroncos.com,woffordterriers.com,1pack1goal.com,bcuathletics.com,bubraves.com,goblackbears.com,golightsgo.com,gomcpanthers.com,goutsa.com,mercerbears.com,pirateblue.com,pirateblue.net,pirateblue.org,quinnipiacbobcats.com,towsontigers.com,tribeathletics.com,tribeclub.com,utepminermaniacs.com,utepminers.com,wkutickets.com,aopathletics.org,atlantichockeyonline.com,bigsouthnetwork.com,bigsouthsports.com,chawomenshockey.com,dbupatriots.org,drakerelays.org,ecac.org,ecacsports.com,emueagles.com,emugameday.com,gculopes.com,godrakebulldog.com,godrakebulldogs.com,godrakebulldogs.net,goeags.com,goislander.com,goislanders.com,gojacks.com,gomacsports.com,gseagles.com,hubison.com,iowaconference.com,ksuowls.com,lonestarconference.org,mascac.org,midwestconference.org,mountaineast.org,niu-pack.com,niuhuskies.com,nulakers.ca,oswegolakers.com,ovcdigitalnetwork.com,pacersports.com,rmacsports.org,rollrivers.com,samfordsports.com,uncpbraves.com,usfdons.com,wiacsports.com,alaskananooks.com,broncathleticfund.com,cameronaggies.com,columbiacougars.com,etownbluejays.com,gobadgers.ca,golancers.ca,gometrostate.com,gothunderbirds.ca,kentstatesports.com,lehighsports.com,lopers.com,lycoathletics.com,lycomingathletics.com,maraudersports.com,mauiinvitational.com,msumavericks.com,nauathletics.com,nueagles.com,nwusports.com,oceanbreezenyc.org,patriotathleticfund.com,pittband.com,principiaathletics.com,roadrunnersathletics.com,sidearmsocial.com,snhupenmen.com,stablerarena.com,stoutbluedevils.com,uwlathletics.com,yumacs.com,collegefootballplayoff.com,csurams.com,cubuffs.com,gobearcats.com,gohuskies.com,mgoblue.com,osubeavers.com,pittsburghpanthers.com,rolltide.com,texassports.com,thesundevils.com,uclabruins.com,wvuathletics.com,wvusports.com,arizonawildcats.com,calbears.com,cuse.com,georgiadogs.com,goducks.com,goheels.com,gostanford.com,insidekstatesports.com,insidekstatesports.info,insidekstatesports.net,insidekstatesports.org,k-stateathletics.com,k-statefootball.net,k-statefootball.org,k-statesports.com,k-statesports.net,k-statesports.org,k-statewomenshoops.com,k-statewomenshoops.net,k-statewomenshoops.org,kstateathletics.com,kstatefootball.net,kstatefootball.org,kstatesports.com,kstatewomenshoops.com,kstatewomenshoops.net,kstatewomenshoops.org,ksuathletics.com,ksusports.com,scarletknights.com,showdownforrelief.com,syracusecrunch.com,texastech.com,theacc.com,ukathletics.com,usctrojans.com,utahutes.com,utsports.com,wsucougars.com##+js(set, blockAdBlock, trueFunc) -*$script,redirect-rule=noopjs,domain=acusports.com|atlantic10.com|big12sports.com|bigten.org|cmumavericks.com|conferenceusa.com|dartmouthsports.com|daytonflyers.com|dbupatriots.com|dbusports.com|fduknights.com|floridagators.com|friscofighters.com|gamecocksonline.com|gobobcats.com|gocreighton.com|goetbutigers.com|golobos.com|gophersports.com|gopsusports.com|goracers.com|goshockers.com|goterriers.com|gotigersgo.com|gousfbulls.com|govandals.com|gowyo.com|goxavier.com|gozags.com|gozips.com|griffinathletics.com|guhoyas.com|gwusports.com|hailstate.com|hamptonpirates.com|hawaiiathletics.com|hokiesports.com|huskers.com|icgaels.com|iuhoosiers.com|jsugamecocksports.com|longbeachstate.com|loyolaramblers.com|lrtrojans.com|lsusports.net|morrisvillemustangs.com|msuspartans.com|muleriderathletics.com|mutigers.com|navysports.com|nevadawolfpack.com|niuhuskies.com|nulakers.ca|nkunorse.com|nuhuskies.com|nusports.com|oceanbreezenyc.org|okstate.com|olemisssports.com|omavs.com|ovcsports.com|owlsports.com|purduesports.com|redstormsports.com|richmondspiders.com|sfajacks.com|shupirates.com|siusalukis.com|smcgaels.com|smumustangs.com|soconsports.com|soonersports.com|themw.com|tulsahurricane.com|txst.com|txstatebobcats.com|ubbulls.com|ucfknights.com|ucirvinesports.com|uconnhuskies.com|uhcougars.com|uicflames.com|umterps.com|uncwsports.com|unipanthers.com|unlvrebels.com|uoflsports.com|usdtoreros.com|utahstateaggies.com|utepathletics.com|utrockets.com|uvmathletics.com|uwbadgers.com|villanova.com|wkusports.com|wmubroncos.com|woffordterriers.com|1pack1goal.com|bcuathletics.com|bubraves.com|goblackbears.com|golightsgo.com|gomcpanthers.com|goutsa.com|mercerbears.com|pirateblue.com|pirateblue.net|pirateblue.org|quinnipiacbobcats.com|towsontigers.com|tribeathletics.com|tribeclub.com|utepminermaniacs.com|utepminers.com|wkutickets.com|aopathletics.org|atlantichockeyonline.com|bigsouthnetwork.com|bigsouthsports.com|chawomenshockey.com|dbupatriots.org|drakerelays.org|ecac.org|ecacsports.com|emueagles.com|emugameday.com|gculopes.com|godrakebulldog.com|godrakebulldogs.com|godrakebulldogs.net|goeags.com|goislander.com|goislanders.com|gojacks.com|gomacsports.com|gseagles.com|hubison.com|iowaconference.com|ksuowls.com|lonestarconference.org|mascac.org|midwestconference.org|mountaineast.org|niu-pack.com|niuhuskies.com|oswegolakers.com|ovcdigitalnetwork.com|pacersports.com|rmacsports.org|rollrivers.com|samfordsports.com|uncpbraves.com|usfdons.com|wiacsports.com|alaskananooks.com|broncathleticfund.com|cameronaggies.com|columbiacougars.com|etownbluejays.com|gobadgers.ca|golancers.ca|gometrostate.com|gothunderbirds.ca|kentstatesports.com|lehighsports.com|lopers.com|lycoathletics.com|lycomingathletics.com|maraudersports.com|mauiinvitational.com|msumavericks.com|nauathletics.com|nueagles.com|nwusports.com|patriotathleticfund.com|pittband.com|principiaathletics.com|roadrunnersathletics.com|sidearmsocial.com|snhupenmen.com|stablerarena.com|stoutbluedevils.com|uwlathletics.com|yumacs.com|collegefootballplayoff.com|csurams.com|cubuffs.com|gobearcats.com|gohuskies.com|mgoblue.com|osubeavers.com|pittsburghpanthers.com|rolltide.com|texassports.com|thesundevils.com|uclabruins.com|wvuathletics.com|wvusports.com|arizonawildcats.com|calbears.com|cuse.com|georgiadogs.com|goducks.com|goheels.com|insidekstatesports.com|insidekstatesports.info|insidekstatesports.net|insidekstatesports.org|k-stateathletics.com|k-statefootball.net|k-statefootball.org|k-statesports.com|k-statesports.net|k-statesports.org|k-statewomenshoops.com|k-statewomenshoops.net|k-statewomenshoops.org|kstateathletics.com|kstatefootball.net|kstatefootball.org|kstatesports.com|kstatewomenshoops.com|kstatewomenshoops.net|kstatewomenshoops.org|ksuathletics.com|ksusports.com|scarletknights.com|showdownforrelief.com|syracusecrunch.com|texastech.com|theacc.com|ukathletics.com|usctrojans.com|utahutes.com|utsports.com|wsucougars.com -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=acusports.com|atlantic10.com|big12sports.com|bigten.org|cmumavericks.com|conferenceusa.com|dartmouthsports.com|daytonflyers.com|dbupatriots.com|dbusports.com|fduknights.com|floridagators.com|friscofighters.com|gamecocksonline.com|gobobcats.com|gocreighton.com|goetbutigers.com|golobos.com|gophersports.com|gopsusports.com|goracers.com|goshockers.com|goterriers.com|gotigersgo.com|gousfbulls.com|govandals.com|gowyo.com|goxavier.com|gozags.com|gozips.com|griffinathletics.com|guhoyas.com|gwusports.com|hailstate.com|hamptonpirates.com|hawaiiathletics.com|hokiesports.com|huskers.com|icgaels.com|iuhoosiers.com|jsugamecocksports.com|longbeachstate.com|loyolaramblers.com|lrtrojans.com|lsusports.net|morrisvillemustangs.com|msuspartans.com|muleriderathletics.com|mutigers.com|navysports.com|nevadawolfpack.com|niuhuskies.com|nulakers.ca|nkunorse.com|nuhuskies.com|nusports.com|oceanbreezenyc.org|okstate.com|olemisssports.com|omavs.com|ovcsports.com|owlsports.com|purduesports.com|redstormsports.com|richmondspiders.com|sfajacks.com|shupirates.com|siusalukis.com|smcgaels.com|smumustangs.com|soconsports.com|soonersports.com|themw.com|tulsahurricane.com|txst.com|txstatebobcats.com|ubbulls.com|ucfknights.com|ucirvinesports.com|uconnhuskies.com|uhcougars.com|uicflames.com|umterps.com|uncwsports.com|unipanthers.com|unlvrebels.com|uoflsports.com|usdtoreros.com|utahstateaggies.com|utepathletics.com|utrockets.com|uvmathletics.com|uwbadgers.com|villanova.com|wkusports.com|wmubroncos.com|woffordterriers.com|1pack1goal.com|bcuathletics.com|bubraves.com|goblackbears.com|golightsgo.com|gomcpanthers.com|goutsa.com|mercerbears.com|pirateblue.com|pirateblue.net|pirateblue.org|quinnipiacbobcats.com|towsontigers.com|tribeathletics.com|tribeclub.com|utepminermaniacs.com|utepminers.com|wkutickets.com|aopathletics.org|atlantichockeyonline.com|bigsouthnetwork.com|bigsouthsports.com|chawomenshockey.com|dbupatriots.org|drakerelays.org|ecac.org|ecacsports.com|emueagles.com|emugameday.com|gculopes.com|godrakebulldog.com|godrakebulldogs.com|godrakebulldogs.net|goeags.com|goislander.com|goislanders.com|gojacks.com|gomacsports.com|gseagles.com|hubison.com|iowaconference.com|ksuowls.com|lonestarconference.org|mascac.org|midwestconference.org|mountaineast.org|niu-pack.com|niuhuskies.com|oswegolakers.com|ovcdigitalnetwork.com|pacersports.com|rmacsports.org|rollrivers.com|samfordsports.com|uncpbraves.com|usfdons.com|wiacsports.com|alaskananooks.com|broncathleticfund.com|cameronaggies.com|columbiacougars.com|etownbluejays.com|gobadgers.ca|golancers.ca|gometrostate.com|gothunderbirds.ca|kentstatesports.com|lehighsports.com|lopers.com|lycoathletics.com|lycomingathletics.com|maraudersports.com|mauiinvitational.com|msumavericks.com|nauathletics.com|nueagles.com|nwusports.com|patriotathleticfund.com|pittband.com|principiaathletics.com|roadrunnersathletics.com|sidearmsocial.com|snhupenmen.com|stablerarena.com|stoutbluedevils.com|uwlathletics.com|yumacs.com|collegefootballplayoff.com|csurams.com|cubuffs.com|gobearcats.com|gohuskies.com|mgoblue.com|osubeavers.com|pittsburghpanthers.com|rolltide.com|texassports.com|thesundevils.com|uclabruins.com|wvuathletics.com|wvusports.com|arizonawildcats.com|calbears.com|cuse.com|georgiadogs.com|goducks.com|goheels.com|gostanford.com|insidekstatesports.com|insidekstatesports.info|insidekstatesports.net|insidekstatesports.org|k-stateathletics.com|k-statefootball.net|k-statefootball.org|k-statesports.com|k-statesports.net|k-statesports.org|k-statewomenshoops.com|k-statewomenshoops.net|k-statewomenshoops.org|kstateathletics.com|kstatefootball.net|kstatefootball.org|kstatesports.com|kstatewomenshoops.com|kstatewomenshoops.net|kstatewomenshoops.org|ksuathletics.com|ksusports.com|scarletknights.com|showdownforrelief.com|syracusecrunch.com|texastech.com|theacc.com|ukathletics.com|usctrojans.com|utahutes.com|utsports.com|wsucougars.com -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js:5,domain=12thman.com|auburntigers.com|baylorbears.com|bceagles.com|bgsufalcons.com|bradleybraves.com|butlersports.com|cyclones.com|denverpioneers.com|fgcuathletics.com|fightinghawks.com|fightingillini.com|friars.com|goarmywestpoint.com|gobison.com|goblueraiders.com|gocards.com|godeacs.com|goexplorers.com|gofrogs.com|gogriffs.com|gogriz.com|gomarquette.com|gopack.com|goprincetontigers.com -||sidearm-syndication.s3.amazonaws.com^$script,redirect=noopjs,3p -@@||brid.tv/player/build/plugins/adunit.js$script,domain=pluralist.com -vupload.com##+js(nowebrtc) -vupload.com##+js(nowoif) -@@||savetolink.com^$ghide -@@||blogshinobijawi.blogspot.com^$ghide -karanapk.com##+js(set, google_jobrunner, true) -*$frame,3p,domain=ironysub.net -camhub.world##+js(nostif, visibility, 2000) -||camhub.world/player/player_ads.html$frame,1p,redirect=noopframe -! camhub.cc anti-adb/popunder -camhub.cc##.table -camhub.cc##+js(nostif, innerText, 2000) -camhub.cc##+js(set, flashvars.popunder_url, '') -camhub.*##.popunder-opener -! averio.de anti adb -@@||averio.de^$ghide -! moneyhouse.ch anti adb -moneyhouse.ch##+js(nostif, bait) -@@||itavisen.no^$ghide -! megalink.pro anti adb -megalink.*##+js(aopr, app_vars.force_disable_adblock) -megalink.*##+js(set, blurred, false) -megalink.*##+js(aeld, click, popunder) -megalink.*##[href^="https://mob1ledev1ces.com/r/"] -megalink.*###__bgd_link -||i.imgur.com^$domain=megalink.* -! theshedend.com anti adb -theshedend.com##+js(rmnt, script, adblock) -sfile.mobi##+js(nano-sib) -softwaresblue.com##+js(acs, $, setTimeout) -mrpiracy.*##+js(acs, document.getElementById, deleted) -mrpiracy.*##+js(aopr, LieDetector) -mrpiracy.*##+js(nowoif) -||mrpiracy.*/images/*.gif$image -! canalplus.com anti adb + ads -@@||canalplus-bo.net/web/canal/*$xhr,domain=canalplus.com -@@||fwmrm.net/ad/*$xhr,domain=canalplus.com -*$media,redirect=noopmp3-0.1s,domain=canalplus.com -@@||bran-media.canalplus.pro^$media,domain=canalplus.com -||vidads.gr^$3p -kino-zeit.de##+js(acs, getCookie) -topstreams.*##+js(nowebrtc) -topstreams.*##+js(acs, $, ads) -topstreams.*##+js(acs, setTimeout, admc) -topstreams.*##^script:has-text(admc) -jotapov.com##+js(acs, jQuery, adblocker) -jotapov.com##.jconfirm -oload.*##+js(aopr, AaDetector) -oload.*,streamhoe.*##+js(aopr, open) -oload.*,streamhoe.*##+js(aopr, _pop) -oload.*##+js(aopr, decodeURI) -##[href^="https://klsdee.com/"] -@@||animex.*^$ghide -@@||moonline.*^$ghide -moonline.*###clickfakeplayer -shorten.*##+js(aopr, AaDetector) -shorten.*##+js(aopr, app_vars.force_disable_adblock) -shorten.*##+js(aopr, parcelRequire) -shorten.*##+js(nowoif) -shorten.*###chromepop -||shorten.*/sw.js$script,1p -ligainsider.de##+js(acs, $, MutationObserver) -@@||ligainsider.de^$ghide -drrtyr.mx##+js(aeld,, adb) -dirrty.remix.es##.ad_target -dirrty.remix.es##.adsbygoogle -dirrty.remix.es##.AdZone300 -@@||globaltvapp.net^$ghide -! indaily.com.au anti adb -indaily.com.au##.advertisement -bitcointalk.org##:xpath(//span[contains(text(),"Advert")]/../..) -bitcointalk.org##td:has(> span[class]:has-text(Advert)) -bitcointalk.org##.fpcontainer -fluentu.com##+js(aopr, __eiPb) -forocoches.com##+js(aopr, pbjsChunk) -forocoches.com##table.cajasnews > tbody > tr > td > table > tbody > tr:has(> td > a[rel=nofollow]:has-text(Promos)) -forocoches.com##table.cajasprin > tbody > tr > td:has(iframe[src^="//cdn.forocoches.com/lwa/forocoches/fc_promo.html"]) -forocoches.com##table.tborder#threadslist > tbody[id^="threadbits_forum_"] > tr:has(> [id^="td_threadtitle_"][style^="background-color: #"].alt1 > .smallfont > span) -forocoches.com##table.tborder[id^="table"] > tbody:has(> tr > .alt1 [href][target]):has(strong) -forocoches.com##table.tborder > tbody:has(> tr > .alt1 [href^="/link.php?url=https%3A%2F%2Fwww.pccomponentes.com"][target]) -forocoches.com##table.tborder > tbody:has(> tr > .alt1 > table > tbody > tr > td > a):has(strong):has(span > font > strong) -forocoches.com##table.tborder > tbody:has(> tr > .alt1 > table > tbody > tr > td > table > tbody > tr > td > strong > a[target][href]) -forocoches.com##table.tborder[id^="table"] > tbody > tr > .alt1:has(> table[id^="table"] > tbody > tr > td > div[style] > a[style][href^="/foro/"] > strong) -forocoches.com##table.tborder[id^="table"] > tbody:has(> tr > .alt1 > table[id^="table"] > tbody > tr > td > [href] + span > br + strong) -forocoches.com###vbnotices -m.forocoches.com##div.title-forum-display-destacado -m.forocoches.com##.page > div > ul > li[style^="word-wrap:break-word; word-break:break-word; background-color: #"] -m.forocoches.com##.page > div > ul[style]:has(> li > div[style] > a[style][href^="/foro/"] > strong) -m.forocoches.com##ul > li:has([id*="adslot"]) -||cdn.forocoches.com/lwa/forocoches/*_promo.html$frame,1p -@@||naruto-arena.net^$script,1p -investmentwatchblog.com##+js(acs, Math, '0x) -investmentwatchblog.com##+js(aopw, ABD) -fangraphs.com##+js(acs, $, Math.random) -fangraphs.com##+js(set, ezstandalone.enabled, true) -fangraphs.com##.catchall728 -fangraphs.com##.fg-ra-desktop -fangraphs.com##.fg-ra-mobile -phoneswiki.com##+js(set, jQuery.adblock, false) -myadslink.com##+js(aeld, load, 2000) -filmonerileri.org##+js(acs, document.querySelector, adblock) -@@||kisshentai.tv^$ghide -kisshentai.tv##.adv-container -! 943thex.com live player anti adb -||adservice.google.com/adsid/integrator.js$script,redirect=noopjs,domain=943thex.com -@@||vidcrt.net^$ghide -@@||sabervivirtv.com^$ghide -sabervivirtv.com##.ad-item -sabervivirtv.com##.ad-sidebar -aol.com##.maas-item:has-text(our Partners) -@@||debridup.com^$script,xhr,1p -! homad -4players.de,buffed.de,gamesaktuell.de,gamezone.de,pcgames.de,videogameszone.de##+js(set, CustomEvent, noopFunc) -golem.de,player.pcgameshardware.de##+js(no-xhr-if, damoh) -vip.de,rtl.de,fitforfun.de,desired.de,kino.de,cinema.de##+js(no-xhr-if, svonm) -desired.de##+js(ra, data-ivad-preroll-adtag, video, stay) -||computer-bild.de/_static-assets/homad/homad.js -||auto-bild.de/_static-assets/homad/homad.js -||stern.de/__assets/homad -||static.kicker.de/content/js/vendor/homad -spiegel.de##^script:has-text(homad) -welt.de,~dutyfarm.welt.de##+js(json-prune, vastUrl) -welt.de,~dutyfarm.welt.de##div[id][style^="z-index: 2"][style*="margin"][style*="auto"][style*="top"][style$="px; position: absolute;"]:remove() -giga.de,kino.de,spieletipps.de##+js(rpnt, script, /\"homad\"\,/) -t-online.de##+js(rpnt, script, /\"homad\":\{\"state\":\"enabled\"\}/, "homad":{"state":"disabled"}) -!#if !cap_html_filtering -spiegel.de##+js(rmnt, script, homad) -!#endif -plus.rtl.de##+js(json-prune, adReinsertion) -tvspielfilm.de,tvtoday.de,chip.de,focus.de##+js(set, DL8_GLOBALS.enableAdSupport, false) -tvspielfilm.de,tvtoday.de,chip.de,focus.de##+js(set, DL8_GLOBALS.useHomad, false) -tvspielfilm.de,tvtoday.de,chip.de,focus.de##+js(set, DL8_GLOBALS.enableHomadDesktop, false) -tvspielfilm.de,tvtoday.de,chip.de,focus.de##+js(set, DL8_GLOBALS.enableHomadMobile, false) -||damoh.gmx.*/*$media,redirect=noop-0.1s.mp3,1p -||united-infos.net^$domain=gmx.*|web.de -focus.de##+js(json-prune, enabled, force_disabled) -gmx.*,web.de##+js(aeld, timeupdate) -*$media,redirect-rule=noop-0.1s.mp3,3p,domain=gmx.*|web.de -!#if env_firefox -@@||akamaiedge.net^$media,domain=gmx.*|web.de -!#endif -tv2.no##+js(json-prune, enabled, testhide) -@@||player.clevercast.com/players/video-js/video-js-plugins/videojs.ads.min.js$script,1p -elamigosedition.com##+js(aost, document.addEventListener, blocker) -camcam.cc##+js(no-fetch-if, adsbygoogle) -ihow.info##+js(nostif, getComputedStyle, 250) -@@||eldia.com^$ghide -adshrink.it##+js(aeld, load, nextFunction) -adshrink.it##+js(aopr, open) -@@||googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=adshrink.it -@@||googlesyndication.com/pagead/js/*/show_ads_impl$script,domain=adshrink.it -||googlesyndication.com/pagead/js/adsbygoogle.js$xhr,redirect-rule=noopjs,domain=adshrink.it -@@||shrink-service.it^$frame,domain=adshrink.it -@@||cdn.trackjs.com/agent/v*/latest/t.js$script,domain=adshrink.it -||shrink-service.it^$csp=frame-src -shrink-service.it##+js(aopr, open) -adshrink.it##.active.dimmer.ui:has-text(/Wait|Skip/i) -||offer.alibaba.com^$frame,domain=adshrink.it -vipstand.*##+js(nowoif, //) -turkanime.co##+js(aeld, , pop) -turkanime.*##+js(nostif, blocked) -*$script,redirect-rule=noopjs,domain=turkanime.* -@@||turkanime.*^$ghide -@@||turkanime.*/ad/$xhr,1p -turkanime.*##div.col-xs-12:has-text(MMPORG OYUNLAR) -turkanime.*###sponsored -turkanime.*##.panel-title:has-text(REKLAM) -turkanime.*##.AltkisimMenu -video.sibnet.ru###vjs-overlayclip-box -video.sibnet.ru##.vjs-overlayclip-box-close -! allcalidad.net anti adb and popup -allcalidad.*##+js(acs, doOnce) -allcalidad.*##+js(aeld, , 0x) -allcalidad.*##+js(aopw, smrtSB) -allcalidad.*##+js(set, btoa, null) -allcalidad.*##+js(ra, href, #clickfakeplayer) -allcalidad.*##.table-hover.table > tbody > tr:has-text(Descargar Premium) -*$script,3p,denyallow=cloudflare.com|cloudfront.net|facebook.net|fbcdn.net|googleapis.com|gstatic.com|heyoya.com,domain=allcalidad.* -*.gif$image,domain=stream1688.com -*$media,domain=stream1688.com,redirect=noopmp3-0.1s -123anime.*,123animes.*##+js(aopr, glxopen) -123anime.*##+js(acs, setTimeout, popi) -123anime.*##+js(nowoif) -! 123animes.mobi/ru popup -123animes.*##+js(aopr, AaDetector) -123animes.*##div[id][style^="position: fixed; inset: 0px; z-index: 2147483647;"] -upfile.us##+js(nano-sib) -metro.us##+js(set, Adv_ab, false) -games.metro.us##+js(rpnt, script, "isAdBlockerEnabled":true, "isAdBlockerEnabled":false) -! oltnertagblatt .ch anti adb -@@||nwch.az-cdn.ch^$script,domain=oltnertagblatt.ch -*$media,domain=series-d.com,redirect=noopmp3-0.1s -||imgur.com/*.gif$image,domain=series-d.com -.gif$image,domain=series-d.com -@@||cdn.jsdelivr.net/npm/*/fuckadblock$script,xhr,domain=series-d.com -@@||googleusercontent.com^$media,domain=series-d.com -@@||googlevideo.com/videoplayback$media,domain=series-d.com -series-d.com##.mb-3.text-center.container-fluid -@@||series-d.com^$ghide -! enxf.net anti adb -enxf.net##+js(acs, $, adblock) -listenonrepeat.com##+js(acs, googlefc) -!#if !env_mobile -news18.com##+js(aeld, scroll, getElementById) -!#endif -!#if env_mobile -news18.com##+js(aeld, scroll, Mgid) -news18.com##+js(aopr, getAdsScripts) -news18.com##.ad-container -news18.com##[class^="adv_placeholder_"] -!#endif -spinbot.com##+js(aopr, angular) -xiaomi-miui.gr##+js(acs, $, detected) -@@||calciomercato.com^$ghide -calciomercato.com##.adv -forum.release-apk.com###page-header:has(+ .phpbb-ads-center:matches-css(height: 280px)):style(margin-bottom: -265px !important) -forum.release-apk.com##.phpbb-ads-center:style(pointer-events: none !important) -!forum.release-apk.com##^script:has-text(/\'load\'|document.onload/) -forum.release-apk.com##+js(aeld, load, onload) -forum.release-apk.com##+js(nobab) -@@||forum.release-apk.com^$ghide -@@||pagead2.googlesyndication.com/pagead/$script,domain=forum.release-apk.com -*$frame,domain=forum.release-apk.com,redirect-rule=noopframe -@@||googleads.g.doubleclick.net/pagead/*forum.release-apk.com$frame,domain=forum.release-apk.com -forum.release-apk.com##ins:style(opacity: 0 !important; pointer-events: none !important) -*$xhr,redirect-rule=nooptext,domain=forum.release-apk.com -forum.release-apk.com##+js(acs, eval, replace) -adonisfansub.com##+js(nobab) -agefi.fr##+js(nostif, {r(), 0) -horriblesubs.info##[class*="sponsor"] -ladepeche.fr##+js(aopr, localStorage) -projectfreetv.*##+js(aeld, , _0x) -##.overlay-advertising-new -*$xhr,redirect-rule=nooptext,domain=freevocabulary.com -cinemaxxl.de##+js(set, adblock, false) -cinemaxxl.de##noscript:has-text(Adblocker):remove() -||cinemaxxl.de/js/adblock.js$script -anime-i.com##+js(nostif, nextFunction, 2000) -||google.com/adsid/integrator.js$script,redirect=noopjs,domain=961thebreeze.com -cartoonth12.com##.header-ad -*.gif$domain=cartoonth12.com,image -@@||jwpcdn.com/player/$script,domain=player.cartoonth12.com -*.mp4$media,redirect=noopmp3-0.1s,domain=cartoonth12.com -@@||cartoonth12.com^$ghide -cartoonth12.com##.dessert-frame -cartoonth12.com##[href="https://www.sagame350.bet/"] -cartoonth12.com##.video-player.responsive-player -upzone.cc##+js(acs, document.getElementById, undefined) -##.header-menu-bottom-ads -##.rkads -###bt-ads -*.gif$domain=doo4k.com,image -*$media,domain=doo4k.com,redirect=noopmp3-0.1s -@@||cdn.ekcdn.me/video.mp4$media,domain=doo4k.com -@@||lutontoday.co.uk^$ghide -@@||kikiers.com^$ghide -@@||kikiers.com^$script,1p -@@||cdntvn.pl^$script,domain=player.pl -@@||player.pl^$cname -@@||player.pl^$ehide -/ad.xml$xhr,badfilter -player.pl#@#+js(json-prune, movie.advertising.ad_server) -$xhr,redirect-rule=noopjs,domain=player.pl -player.pl##div.adsbygoogle.prebid.adocean.ado.ad.ads.advert.banner.reklama.linkSponsorowany.adsense.advertisments.reklama-top.adv_container:style(display: block !important) -*$media,domain=player.pl,redirect=noopmp3-0.1s -@@||tvn.hit.gemius.pl^$xhr,domain=player.pl -@@||jbzd.com.pl^$ghide -! irisbuddies.ml (dead) anti adb -||rawgit.com/fahimraza/FK/master/ad-unblocker.js^$script -||cdn.jsdelivr.net/gh/Akshat-h/propeller/btagantiadb.js^$script -news-herald.com##+js(aopr, Connext) -*.gif$domain=037-hd.com,image -*$media,domain=037-hd.com,redirect=noopmp3-0.1s -*$script,3p,denyallow=bootstrapcdn.com|disqus.com|jsdelivr.net|jwpcdn.com|fastly.net|fastlylb.net|jquery.com|hwcdn.net|recaptcha.net|cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com,domain=movieshub.* -@@||kwik.*^$ghide -@@||sadeempc.com^$ghide -sadeempc.com##[class^="buttonPress"] -@@||game-kentang.blogspot.com^$ghide -game-kentang.blogspot.com##+js(nano-sib) -shortgoo.blogspot.com##+js(set, showAds, true) -shortgoo.blogspot.com##+js(nano-sib) -@@||downloader.la^$ghide -! ytmp3. plus ad and popup -ytmp3.*##+js(nowoif) -ytmp3.cc#@#+js(nowoif) -ytmp3.cc##+js(nowoif, !/ytmp3|dropbox/) -||ytmp3.*/ad/$frame -||ytmp3.cc/js/ad*$script,1p -! cariskuy.com anti adb -cariskuy.com##+js(nostif, nextFunction, 450) -||domnovrek.com^$3p -! blackavelic.com anti adb -blackavelic.com##+js(aeld, load, 2000) -series-d.com##+js(nano-sib, curAd) -series-d.com##+js(nowoif) -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=felanovia.com -thelanb.com##+js(aeld, load, undefined) -planetaminecraft.com##+js(set, ab, false) -@@||aasarchitecture.com^$ghide -softwaredescargas.com##+js(aeld, DOMContentLoaded, scriptwz_url) -softwaredescargas.com##+js(aopr, scriptwz_url) -@@||justlightnovels.com^$ghide -justlightnovels.com##.adsbyvli -jnovels.com##+js(aopw, KillAdBlock) -codesnse.com###paras-devgenerate ~ * -codesnse.com##[href^="https://play.google.com/"] -cybertechng.com##+js(set, blurred, false) -cybertechng.com##+js(set, go_popup, {}) -cracking-dz.com##+js(aeld, load, 0x) -voipreview.org##+js(set, adblockEnabled, false) -@@||safelink-jozz.blogspot.com^$ghide -yusepjaelani.blogspot.com###showadblock, .modal-backdrop -yusepjaelani.blogspot.com##body:style(overflow: auto !important) -|about:$popup,domain=yusepjaelani.blogspot.com -||yusepjaelani.blogspot.com^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation -yusepjaelani.blogspot.com##+js(nostif, Debug) -mega1080p.*##+js(aeld, DOMContentLoaded, btoa) -mega1080p.*##.bnr -@@||easyreaders.site^$ghide -! /interstitial/*$xhr,redirect=noop-1s.mp4,domain=imdb.com -||imdb.com/tr/*pageHit$xhr,redirect=noopjs,domain=imdb.com -||fls-na.amazon.com/$xhr,redirect=noopjs,domain=imdb.com -*$media,redirect=noopmp3-0.1s,domain=imdb.com,3p -@@||media-imdb.com^$media,domain=imdb.com -presentation-ppt.com##+js(aeld, load, nextFunction) -*$frame,xhr,script,3p,domain=bolly4umovies.* -femina.ch##+js(aopr, _sp_.mms.startMsg) -photovoltaikforum.com##+js(acs, $, offsetHeight) -photovoltaikforum.com##.wcfAdLocation:upward(li) -! fix mangahere.onl ads & anti adb -mangahere.onl##+js(aopr, AdservingModule) -mangahere.onl##+js(aopr, loadRunative) -mangahere.onl##.container.ads-container -||mangahere.onl/adsbygoogle.js$script,redirect=noopjs,1p -soy502.com##+js(acs, document.getElementById, length) -*$script,3p,denyallow=101placeonline.com|bootstrapcdn.com|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|fastly.net|fastlylb.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|jsdelivr.net|jwpcdn.com|recaptcha.net|sportscentral.io,domain=mlbstreams.to|nbastreams.to|nflbite.com|nflstreams.to|nhlstreams.to|soccerstreams.net -openloadmovies.*##+js(aopr, AaDetector) -streamango.*###ad_buts -naughtymachinima.com##+js(aopr, loadTool) -naughtymachinima.com##+js(nowoif) -||naughtymachinima.com/*banner -||naughtymachinima.com/*preroll -@@||bonjourdefrance.com^$script,1p -@@||remix.es^$ghide -arabseed.*##+js(aeld, , _0x) -||arabseed.*/sw.js$script,1p -arabseed.*##.ads-aa -lapresse.ca##+js(set, noBlocker, true) -lapresse.ca##+js(aopw, _sp_) -||nxbrew.com/sw.js$script,1p -@@||tele-gratuit.net/analytics/adiframe.js$script,1p -sportsnaut.com###dsk-banner-ad-a -sportsnaut.com###dsk-box-ad-c -@@||seriesytv.tv^$ghide -seriesytv.tv##+js(nowebrtc) -||seriesytv.tv/*.html$frame,1p -doodle.com##+js(aopr, _sp_._networkListenerData) -seeitworks.com##+js(acs, document.getElementById, adblock) -televisiongratishd.com##+js(acs, adBlockDetected) -televisiongratishd.com###ventana-flotante -@@||hacknetfl1x.net^$ghide -||googlesyndication.com/pagead/js/adsbygoogle.js$xhr,domain=jmusic.me,redirect-rule=noopjs -##.mdp-deblocker-wrapper -@@||classic-retro-games.com^$ghide -classic-retro-games.com##ins.adsbygoogle, #ad, .game-ad -/bab.min.js$script,1p -kolyoom.com##+js(nobab) -kolyoom.com##+js(set, adsbygoogle, null) -bde4.*#@#a[href*=".yabo816."] -bde4.*##a[href*=".yabo816."]:remove() -bde4.*##+js(nofab) -bde4.*##+js(nano-sib) -dailysport.*##+js(acs, String.fromCharCode, atob) -dailysport.*,eplsite.uk##+js(aopr, AaDetector) -dailysport.*,eplsite.uk##+js(aopr, open) -eplsite.uk##[href="https://www.eplsite.uk/vm.html"] -*$script,3p,denyallow=bootstrapcdn.com|cloudflare.com|cloudflare.net|googleapis.com|hwcdn.net|jsdelivr.net,domain=dailysport.* -@@||lesmoutonsrebelles.com^$ghide -@@||vietgamemod.net^$ghide -##.amp-ad-inner -###placeAds -@@||cdn.ampproject.org/*/amp-ad-*.js$script,domain=aajtak.intoday.in -@@||taboola.com/*indiatoday$domain=ampproject.net -@@||trc.taboola.com/indiatoday -! dirtyship .com tabunder -dirtyship.com##+js(aopr, dataPopUnder) -porn00.org##+js(nowoif) -porn00.org##.table -porn00.org##div.headline[style] -||ang-content.com/*.mp4$media,redirect=noopmp3-0.1s,domain=porn00.org -@@||sonyliv.com^$ghide -@@||sonyliv.com^$xhr,1p -!sonyliv.com##+js(json-prune, adProvider) -@@||realmofdarkness.net^$ghide -@@||magyarhang.org^$shide -||magyarhang.org/*.gif$image -savevideo.tube##+js(aopr, AaDetector) -savevideo.tube##+js(nowoif) -files.cx##+js(aopr, AaDetector) -devoloperxda.blogspot.com##+js(aeld, load, onload) -celebmix.com##+js(set, jQuery.adblock, false) -vttpi.com##+js(acs, document.createElement, adblock) -@@||rakuten.tv^$ghide -@@||cdnjs.cloudflare.com/ajax/libs/rollbar.js/$script,domain=rakuten.tv -@@||search.spotxchange.com/vast/$xhr,domain=rakuten.tv -rakuten.tv##+js(no-xhr-if, /youboranqs01|spotx|springserve/) -@@||projectkorra.com/*/siropu/*/ads$script,1p -doofree88.com##+js(nano-sib, js-btn-skip, 1000) -||doofree88.com/storage/go/banner*.gif$image,1p -doofree88.com##.go-hard -doofree88.com##.placeholder -insidermonkey.com##+js(acs, Math, '0x) -tr.savefrom.net##+js(nowoif) -tr.savefrom.net##.second-btn-box -@@||meucdn.*^$script,xhr,1p -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=meucdn.vip -@@||cdn.jsdelivr.net/npm/videojs-contrib-ads/$domain=meucdn.vip -@@||meucdn.*^$ghide -##a[href^="http://adtrack"] -##a[href*="/go.php?a_aid="] -@@||allvidview.com^$ghide -letras.mus.br##+js(nostif, r(), 0) -letras.mus.br##[id^="pub"] -@@||batch.id^$ghide -pakkotoisto.com##+js(acs, $, undefined) -androidonepro.com##+js(aopr, downloadJSAtOnload) -@@||tda.io^$xhr,domain=tagesanzeiger.ch -@@||tagesanzeiger.ch^$ghide -tagesanzeiger.ch,berneroberlaender.ch,derbund.ch##div[class^="TopAds"] -rmcmv.*##+js(nosiif, visibility) -rmcmv.*##[class*="ads"] -lecourrier-du-soir.com##+js(nosiif, iframe) -owllink.net##+js(nobab) -owllink.net##+js(aopr, app_vars.force_disable_adblock) -owllink.net##+js(aopr, open) -owllink.net##+js(nowebrtc) -owllink.net##+js(set, blurred, false) -owllink.net##.box-main p -owllink.net###link-view > br -owllink.net##iframe[src*="publisherAddr"] -owllink.net##[href^="https://padsbrown.com/"] -owllink.net##[src^="https://url-coin.com/"] -*$frame,script,3p,denyallow=consensu.org|google.com|gstatic.com|recaptcha.net|quantcast.com|cloudflare.com,domain=owllink.net -||i.ibb.co^$image,domain=owllink.net -@@||owllink.net^$ghide -9gag.com##[id^="sidebar-stream-"] > h4:has-text(Advertisement) -gazzetta.it##+js(aeld, adblockActivated) -upstream.to##+js(aopr, open) -upstream.to##+js(acs, globalThis, break;case) -arcadepunks.com##+js(aopr, penci_adlbock) -arcadepunks.com##[class*="ads"]:not(#jetblocker-detect) -@@||arcadepunks.com^$ghide -arcadepunks.com##.header-banner -arcadepunks.com##[href^="https://www.arcadepunks.com/go/"] -arcadepunks.com##.left-ad -arcadepunks.com##.right-ad -arcadepunks.com##.spMessageFailure -arcadepunks.com##[href^="https://gameroomsolutions.com/"] -arcadepunks.com##.custom-html-widget:not(.custom-html-widget:has([href*="arcadepunks.com"])) -osxinfo.net##+js(acs, $, btoa) -myneobuxportal.com##+js(set, jQuery.adblock, false) -wohnungsboerse.net##+js(aopr, Number.isNaN) -@@||wohnungsboerse.net^$xhr,1p -wohnungsboerse.net##[href*=".php"] -@@||football-lineups.com/dfp.js$script,1p -negumo.com##+js(set, fabActive, false) -rysafe.blogspot.com##+js(nostif, nextFunction, 250) -! impotsurlerevenu.org anti adb -@@||impotsurlerevenu.org^$ghide -! eletronicabr.com anti adb -eletronicabr.com##+js(nostif, test, 100) -! inkagames.com anti adb -@@||inkagames.com^$ghide -@@||filmytoday.com^$ghide -filmytoday.com##.advertisement, .adsbygoogle -filmytoday.com##.i-am-centered -filmytoday.com##.title-section:has-text(/adv/i) -@@||safetxt.*^$ghide -safetxt.*##ins.adsbygoogle -cyberstumble.com##+js(aopr, b2a) -games.wkb.jp##+js(set, gWkbAdVert, true) -games.wkb.jp##+js(set, noblock, true) -@@||games.wkb.jp/ykg/assets/pc/ad_adsense_for_games$css,script,1p -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=games.wkb.jp -channelmyanmar.org##+js(aopr, adBD) -channelmyanmar.org##+js(set, ai_dummy, true) -channelmyanmar.org##+js(set, ulp_noadb, true) -||channelmyanmar.org/banners/*$image,1p -channelmyanmar.org##[src$=".gif"] -||roda.site^$3p -asmwall.com##+js(aopr, adblock) -fandom.com##+js(set, wgAffiliateEnabled, false) -kenshi.fandom.com##+js(set, ads, null) -fandom.com##[id^="siderail_"][id*="_gamepedia"] -fandom.com###bodyContent:style(width:100% !important) -fandom.com##.instant-suggestion -fandom.com##.top-ads-container -||45tu1c0.com^ -!#if env_mobile -fandom.com##.ad-slot-wrapper -!#endif -fandom.com##li.top-results__item span:has-text(Sponsored):upward(li) -139.99.33.192##.adpop -gdriveplayer.*##+js(aopr, AaDetector) -gdriveplayer.*##+js(nowoif, !gdrivedownload) -kordramass.com,kshowsubindo.org,senimovie.co##+js(acs, document.onclick, popunder) -uptobox.com,uptostream.com##+js(set, jsUnda, noopFunc) -earnload.*##+js(aopr, app_vars.force_disable_adblock) -earnload.*##+js(disable-newtab-links) -||earnload.*/sw.js$script,1p -*$image,3p,denyallow=earnload.com,domain=earnload.* -shop123.com.tw##+js(aopw, daCheckManager) -orirom.com,romfirmware.com##+js(acs, eval, AdBlock) -evileaks.*##+js(acs, $, prompt) -@@||evileaks.*^$ghide -evileaks.*##ins.adsbygoogle -||adservice.google.com/adsid/integrator.js$xhr,redirect=noopjs,domain=maxedtech.com -maxedtech.com##.widget_custom_html -*$xhr,redirect-rule=nooptext,domain=btik.com -dewabioskop21.org###main-popup -||protect-ad.com^$all -! popups drivefire .co/file/ FGZUI0DAGsHKdfW9NI2I -drivefire.co##+js(aopr, AaDetector) -@@||yoursavegames.com^$ghide -yoursavegames.com##ins.adsbygoogle -hexupload.net##+js(aopw, Fingerprint2) -!#if env_mobile -hexupload.net##+js(acs, document.createElement, rAb) -!#endif -@@||the-man.gr^$ghide -||firefaucet.win/*.gif$image -||35.238.205.163^$all -||releinemaoff.pro^ -xanimeporn.com##+js(nowoif) -@@||d1-dm.com^$ghide -||300mbmovies4u.*/sw.js$script,1p -! sensualgirls .org exo stuff -sensualgirls.org##+js(aopr, document.dispatchEvent) -sensualgirls.org##.wide_boxcontent:has-text(/adb/i) -sensualgirls.org##.cbox_cont > div[style="text-align: center;"] -sensualgirls.org##div[data-width][style*="background-image: url"]:style(background: none !important) -call2friends.com##+js(aopr, onload) -call2friends.com#@#.adWrapper -bladesalvador.com##+js(set, adblock, false) -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=folhabv.com.br -folhabv.com.br##.publicidade-asynchronous -jacquieetmichel.net##+js(set, is_adblocked, false) -@@||keneono.site^$ghide -fruitlab.com##+js(set, adBlockDetected, noopFunc) -@@||fruitlab.com^$ghide -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js,domain=babygames.com -@@||audio-sound-premium.com^$ghide -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=okyanime.com -@@||wallpaperwaifu.com^$ghide -wallpaperwaifu.com##.ads-between-post:upward(.post-item) -wallpaperwaifu.com##ins.adsbygoogle -||padspms.com^$all -sh0rt.cc##+js(aopr, adBlockDetected) -aeonax.com##+js(noeval-if, debugger) -@@||aeonax.com^$ghide -*$frame,redirect-rule=noopframe,domain=camera.aeonax.com -@@||omekon.blogspot.com^$ghide -dobrapogoda24.pl##+js(nostif, , 1) -! 9hentai onclick popup/under -9hentai.*##+js(aeld, click, saveLastEvent) -9hentai.*###ads -@@||chuppito.fr^$ghide -||chuppito.fr/ext/*/privacypolicy/styles/all/template/remove_url.js$script,1p -@@||rtl.it^$script,1p -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=rtl.it -web2.0calc.*##+js(aopr, doads) -||web2.0rechner.de/*/$frame -||web2.0calc.*/*/$frame -web2.0rechner.de,web2.0calc.*###abmodal, body > .in.modal-backdrop -web2.0rechner.de,web2.0calc.*##body:style(overflow: auto !important) -web2.0rechner.de,web2.0calc.*###nocreditsmodal -web2.0rechner.de,web2.0calc.*##.first -@@||bzbasel.ch^$ghide -bacakomik.co##+js(nowoif) -*.gif$domain=bacakomik.co,image -@@||mastercoria.com^$script,1p -gaybeeg.info##+js(acs, String.fromCharCode, 'shift') -gaybeeg.info##+js(aopr, popjs) -gaybeeg.info##+js(nowebrtc) -*$script,3p,domain=gaybeeg.info -keralatelecom.info##+js(nostif, adb) -keralatelecom.info##.ai-viewports -extreme-down.*##+js(acs, $, friendlyduck) -extreme-down.*##+js(acs, Math, decodeURIComponent) -nzpocketguide.com##+js(aopr, adsanity_ad_block_vars) -webcamsdolls.com##+js(nostif, offsetWidth) -*.php$script,domain=webcamsdolls.com -webcamsdolls.com##.sponsor -||mwcvu.com^$3p -fussball.news##+js(aopr, adBlockDetected) -tvchoicemagazine.co.uk##+js(acs, $, onload) -! nensaysubs.net anti adb -@@||nensaysubs.net^$ghide -||nensaysubs.net/images/logonensay.ico$image,1p,redirect=1x1.gif -nensaysubs.net###outerdiv -gnula.*##+js(nowoif) -||gnula.*/player/vast*xml|$xhr,1p -stream.nbcsports.com##+js(set, adBlockEnabled, false) -@@||v.fwmrm.net/ad/g/1$xhr,domain=stream.nbcsports.com -@@||redsoccer.info^$ghide -porngo.com##+js(aopr, AaDetector) -||porngo.com^$csp=child-src * -porngo.com##+js(nowoif) -*preRoll$xhr,domain=porngo.com -*$xhr,redirect-rule=noopjs,domain=audioblog.com -@@||easy-firmware.com/templates/default/html/en/assets/js/fingerprint2.min.js$script,1p -@@||freetempsms.com^$ghide -||s3.amazonaws.com/callloop/banners/$3p,image -||mityneedn.com^ -||perfotrack.com^ -||fundingchoicesmessages.google.com^$3p -! google contributor anti adblock -#@#[class^="div-gpt-ad"] -#@#[id^="div-gpt-ad"] -#@#div[id^="div-gpt-"] -##[class^="div-gpt-ad"]:not([style^="width: 1px; height: 1px; position: absolute; left: -10000px; top: -"]) -~cinelatino.net##[id^="div-gpt-ad"]:not([style^="width: 1px; height: 1px; position: absolute; left: -10000px; top: -"]) -~cinelatino.net##div[id^="div-gpt-"]:not([style^="width: 1px; height: 1px; position: absolute; left: -10000px; top: -"]) -@@||demokrasistyle.blogspot.com^$ghide -dloady.com##+js(acs, $, show) -sobatkeren.*##+js(nowoif) -||sobatkeren.*/img/banner/$image -movieon21.*##+js(nowoif) -*.gif$domain=movieon21.*,image -pornfactors.com##+js(acs, jQuery, popunder) -@@||javplayer.com^$ghide -javplayer.com###player-advertising -animekaizoku.com##+js(aopr, decodeURI) -*$script,3p,denyallow=b-cdn.net|disqus.com|jsdelivr.net|jwpcdn.com|fastly.net|fastlylb.net|jquery.com|hetrixtools.com|hwcdn.net|recaptcha.net|cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com|twimg.com|twitter.com|x.com,domain=animekaizoku.com -||doubleclick.net^$domain=pccomponentes.com,important -||googlesyndication.com^$domain=pccomponentes.com,important -||googletagservices.com^$domain=pccomponentes.com,important -||omtrdc.net^$xhr,domain=pccomponentes.com,important -pccomponentes.com##div[id^="div-gpt-ad-"] -techradar.com##+js(aopr, _sp_._networkListenerData) -gamesradar.com,techradar.com,tomsguide.com,tomshardware.com,whathifi.com##.mobile-leaderboard-320-50:upward([style]) -androidcentral.com,gamesradar.com,livescience.com,pcgamer.com,space.com,techradar.com,tomsguide.com,tomshardware.com,whathifi.com,windowscentral.com##.van_taboola -whathifi.com##.dfp-leaderboard-container -whathifi.com###ultimedia_wrapper -whathifi.com##.slot-leaderboard -whathifi.com##.adunit -modebaca.com##+js(aopr, app_vars.force_disable_adblock) -modebaca.com##+js(acs, $, click) -modebaca.com##[href="https://www.tautan.pro/"] -! crichd .sc / .com / .cx / to / .tv popups -crichd.*##+js(aopr, AaDetector) -ticonsiglio.com##+js(aopr, jQuery.adblock) -mtlurb.com##+js(nostif, purple_box) -! 123moviesc. cyou -123moviesc.*##+js(aopr, mm) -mkvcinemas.*##+js(nowoif) -*$script,3p,denyallow=googleapis.com,domain=mkvcinemas.* -debgen.fr##+js(acs, addEventListener, nextFunction) -@@||mabzicle.com^$ghide -*$popunder,domain=convert2mp3.tv,3p -daily-times.com##+js(aopr, _sp_._networkListenerData) -@@||googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=lexigram.gr -||vidazoo.com^$domain=readonepiece.com -readonepiece.com###vidazoo-player-div -imgbaron.com##+js(aopr, loadTool) -imgbaron.com##[src="https://imgbaron.com/chrome.ads.png"] -imgbaron.com##p.newsbar_b -imgbaron.com##div[style^="display: block; position: fixed; z-index"] -imgbaron.com###fadeinbox -##.samBannerUnit -##.samCodeUnit -@@||ads.hausbau-forum.de/openad.js$script,1p -hausbau-forum.de##+js(no-xhr-if, adsbygoogle) -hausbau-forum.de##+js(set, detectAdblock, noopFunc) -*$script,redirect-rule=noopjs,domain=hausbau-forum.de -!#if cap_html_filtering -hausbau-forum.de##^script:has-text(Adblock) -!#else -hausbau-forum.de##+js(rmnt, script, Adblock) -!#endif -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=adnan-tech.com -! nbareplayhd.com anti adb -nbareplayhd.com##+js(aopr, adblockDetector) -! heavy-r .com nsfw ads (srcdoc) -||heavy-r.com^$csp=child-src * -heavy-r.com##.mob-ban -heavy-r.com##.nopop.hd-bar -! showbiz .cz ads (srcdoc) -||showbiz.cz^$csp=child-src * -her.ie##html:style(overflow: auto !important) -warps.club##+js(aopr, adblockDetect) -*$script,redirect-rule=noopjs,domain=texviewer.herokuapp.com -fake-it.ws##+js(set, adsLoadable, true) -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=noopjs,domain=881903.com -cuatrolatastv.blogspot.com##+js(nobab) -cuatrolatastv.blogspot.com##+js(acs, _pop) -||sites.google.com/site/rvdmarcrailcatrain/home/tomber.js$script -dramakrsubindo.blogspot.com##+js(aopr, open) -||protectsurf-a.akamaihd.net^ -||akamaihd.net/*&affid -! pelispedia. one popup -pelispedia.*##+js(acs, allclick_Public) -pelispedia.*##+js(nano-stb) -pelispedia24.*,streamplusvip.xyz##+js(nowoif) -pelispedia.*,pelispedia24.*##+js(ra, href, a#clickfakeplayer) -pelispedia.*##+js(ra, href, #opfk) -pelispedia.*##+js(ra, href, .fake_player > [href][target]) -premiumstream.live##+js(ra, href, .link) -pelispedia.*##a.btns -pelispedia.*##div.mb-5.text-center -pelispedia.*##.cont.principal > .site-main > .links -pelispedia.*##.img-responsive -pelispedia.*##.mvic-btn -pelispedia.*##[class^="page_speed_"][href] > img[src$="app.png"] -pelispedia24.*##.button -pelispedia24.*##.asgdc -pelispedia24.*##.preplayer -pelispedia24.*##[href^="/acceso-total-sin-limite"] -||pelispedia.*/*sw.js$script,1p -*$script,3p,denyallow=cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com|jsdelivr.net,domain=pelispedia.* -pelisplayer.xyz##+js(aopr, doSecondPop) -pelispedia.*##[href^="https://settledchagrinpass.com/"] -! pelis28.co ads -pelis28.*##+js(nowoif) -pelis28.*##+js(ra, href, #clickfakeplayer) -pelis28.*##.buttons-p -pelis28.*###options-0 -! verpelistoday.com popup ads -verepeliculas.com#@#.fake_player -verepeliculas.com##+js(ra, href, .fake_player > a[href]) -verepeliculas.com##a[href^="https://www.verepeliculas.com/dowload/"] -playembed.xyz,playtemporal.xyz##+js(nowoif) -playembed.xyz##+js(set, clientSide.adbDetect, noopFunc) -playnetutem1.xyz##+js(aopr, doSecondPop) -grid.id##+js(acs, Math, '\x) -kompasiana.com##+js(aopr, initAdserver) -||asset.kompas.com/data/*/kgmedia/js/*notif$script -publish0x.com###registerModal, .show.fade.modal-backdrop -publish0x.com##body:style(overflow: auto !important;) -*$script,redirect-rule=noopjs,domain=myschool-eng.com -*$script,redirect-rule=noopjs,domain=ehubsoft.herokuapp.com -spectrum.ieee.org##+js(aopr, splashpage.init) -doujindesu.*##+js(aeld, load, 2000) -doujindesu.*##+js(aost, Math.random, inlineScript) -doujindesu.*##+js(acs, String.fromCharCode, window[_0x) -port.hu##+js(aeld, DOMContentLoaded, offsetHeight) -port.hu##+js(nostif, offsetHeight) -indavideo.hu##+js(nano-sib) -indavideo.hu###ad -indavideo.hu###preroll -@@||port.hu/js/ads.min.js$script,1p -@@||port.hu^$ghide -cutdl.xyz##+js(aopr, app_vars.force_disable_adblock) -cutdl.xyz##+js(set, blurred, false) -cutdl.xyz##.banner -dziennikbaltycki.pl,dzienniklodzki.pl,dziennikpolski24.pl,dziennikzachodni.pl,echodnia.eu,expressbydgoski.pl,expressilustrowany.pl,gazetakrakowska.pl,gazetalubuska.pl,gazetawroclawska.pl,gk24.pl,gloswielkopolski.pl,gol24.pl,gp24.pl,gra.pl,gs24.pl,kurierlubelski.pl,motofakty.pl,naszemiasto.pl,nowiny24.pl,nowosci.com.pl,nto.pl,polskatimes.pl,pomorska.pl,poranny.pl,sportowy24.pl,strefaagro.pl,strefabiznesu.pl,stronakobiet.pl,telemagazyn.pl,to.com.pl,wspolczesna.pl##+js(aeld, , show) -||ppstatic.pl/*/reklama.js$script,domain=dziennikbaltycki.pl|dzienniklodzki.pl|dziennikpolski24.pl|dziennikzachodni.pl|echodnia.eu|expressbydgoski.pl|expressilustrowany.pl|gazetakrakowska.pl|gazetalubuska.pl|gazetawroclawska.pl|gk24.pl|gloswielkopolski.pl|gol24.pl|gp24.pl|gra.pl|gs24.pl|kurierlubelski.pl|motofakty.pl|naszemiasto.pl|nowiny24.pl|nowosci.com.pl|nto.pl|polskatimes.pl|pomorska.pl|poranny.pl|sportowy24.pl|strefaagro.pl|strefabiznesu.pl|stronakobiet.pl|telemagazyn.pl|to.com.pl|wspolczesna.pl,important -*$script,redirect-rule=noopjs,domain=onemanhua.com -onemanhua.com##+js(aeld, /.?/, popMagic) -onemanhua.com##+js(nostif, checkSiteNormalLoad) -||onemanhua.com/js/ad/$image -@@||onemanhua.com^$ghide -@@||euconfesso.com^$ghide -@@||rndnovels.com^$ghide -laksa19.github.io##+js(aost, console.log, /blob|injectedScript/) -laksa19.github.io##+js(set, ASSetCookieAds, null) -laksa19.github.io##+js(nostif, 0x) -*$script,redirect-rule=noopjs,domain=laksa19.github.io -@@||guncelakademi.com^$ghide -guncelakademi.com##ins.adsbygoogle -! mangacanblog .com anti adb -mangacanblog.com##+js(aeld, load, nextFunction) -! javnew.net popups -javnew.net##+js(acs, document.querySelectorAll, adConfig) -@@||sololeveling.net^$ghide -motohigh.pl##+js(nostif, , 1) -orangespotlight.com##+js(aopr, adBlockDetected) -thenation.com##+js(aopr, ___tp) -@@||remixsearch.co^$ghide -t3n.de##+js(nostif, adBlockOverlay) -t3n.de##.outbrain-wrapper-outer -@@||erovoice.us^$ghide -ar-atech.blogspot.com##+js(aopr, adBlockDetected) -*$script,redirect-rule=noopjs,domain=kurnasional.blogspot.com -newsonthegotoday.com##+js(aopr, STREAM_CONFIGS) -newsonthegotoday.com##+js(ra, target, .clickbutton) -newsonthegotoday.com##.clickbutton:not([data-href]) -newsonthegotoday.com##.viewtable:has(> center:has-text(▼ Scroll down to Continue ▼)) > a[href][target="_blank"] -okulsoru.com##+js(acs, addEventListener, google_ad_client) -ex-foary.com##+js(aopr, app_vars.force_disable_adblock) -ex-foary.com##+js(aopr, open) -ex-foary.com##+js(nowebrtc) -ex-foary.com##.banner-inner -forex-trnd.com##+js(nosiif, visibility, 1000) -||gkxyifeulfpb.com^ -||gregorfines.com^ -||needntrusts.com^ -clixwarez.blogspot.com##+js(aopr, adBlockDetected) -allindiaroundup.com##+js(nostif, Detected, 500) -! thewizardsmanse .com anti adb -@@||thewizardsmanse.com^$script,1p -! fellowsfilm .com anti adb -fellowsfilm.com##+js(acs, document.querySelector, XF) -fellowsfilm.com##[data-author="Advertisement"] -! zwergenstadt .com anti adb -zwergenstadt.com##+js(aeld, load, onload) -! netaffiliation .com anti adb -netaffiliation.com##+js(acs, $, hide) -gigaho.com##+js(aopr, onload) -@@||geekdrop.com^$ghide -@@||erepublik.tools^$ghide -! ebook300.com/longfiles.com popups -ebook3000.com,longfiles.com##+js(aopw, adcashMacros) -tapchipi.com##+js(nostif, mdp) -oceanof-games.com##+js(aopr, open) -||poptival.com^ -@@||insideedition.com^$ghide -hobby-machinist.com##+js(nostif, show) -hobby-machinist.com##.samCodeUnit -jacquieetmichelelite.com##+js(acs, $, show) -*$popunder,domain=jacquieetmichelelite.com -*$script,redirect-rule=noopjs,domain=puregym.com -@@||filegrade.com^$script,1p -arenabg.com##+js(aopr, AaDetector) -arenabg.com##[href^="http://bit.ly"] -@@||honeyhunterworld.com/*/js/blockadblock.js$script,1p -@@||honeyhunterworld.com^$ghide -honeyhunterworld.com##div[class*="ad_"] -@@||speed-down.org^$ghide -dr-farfar.com##+js(aeld, , ads) -dr-farfar.com##+js(aopr, mdpDeBlocker) -dr-farfar.com##+js(nowoif) -dr-farfar.com##.essb-sharebooster -dr-farfar.com##.essb-sharebooster-overlay -||mrfog.com^$domain=dr-farfar.net -pornhat.*##+js(aopr, document.dispatchEvent) -vr.pornhat.*#@#+js(aopr, document.dispatchEvent) -pornhat.*##.bns-bl-new.bns-bl -pornhat.*##div.player-bn -pornhat.*##.video-block > .show.before-player -pornhat.*##b -pornhat.*##.top_spot -||doublepimpads.com^$3p -||pornhat.*/static/js/300x250. -bccondos.net###exampleModal -bccondos.net##.in.fade.modal-backdrop -bccondos.net##body:style(overflow: auto !important;) -yepi.com##+js(acs, $, modal) -@@||ponselharian.com^$ghide -ponselharian.com##ins.adsbygoogle -napi.hu##+js(acs, $, show) -@@||gamepccrack.com^$ghide -*$xhr,frame,3p,domain=pcgamez-download.com -pcgamez-download.com##+js(aost, Math, inlineScript) -av-uncen.com##+js(aopr, adBlockDetected) -spaziogames.it##+js(acs, $, .test) -boyfriendtv.com##+js(aopw, backgroundBanner) -boyfriendtv.com##+js(aeld, click, interstitial) -boyfriendtv.com##+js(aopr, popunder) -boyfriendtv.com##li[class]:has(a[href^="https://boyfriend.show/"][rel="sponsored"]) -boyfriendtv.com##.js-toggle-content-wrapper a[href^="https://boyfriend.show/"][rel="sponsored"]:upward(.js-toggle-content-wrapper) -boyfriendtv.com##.ads-block-rightside -||cdn.nsimg.net/cache/landing^ -||catsnbootsncats2020.com^ -||boyfriendlive.com^$3p -1shortlink.com##+js(set, letShowAds, true) -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noop.js:10,domain=1shortlink.com -||youtube.com/embed/*$domain=1shortlink.com -@@||1shortlink.com^$ghide -1shortlink.com##[id*="ScriptRoot"] -! numbeo .com anti adb -@@||numbeo.com^$script,1p -||googlesyndication.com/pagead/js/adsbygoogle.j$xhr,redirect=noopjs,domain=botayit.com -vectorizer.io##+js(nostif, modal) -vectorizer.io##[href^="https://track.fiverr.com/"] -||jsdelivr.net/*/levelmaxblock.js$script,3p -porndaa.com##+js(aeld, getexoloader) -@@||earlymanga.website^$ghide -@@||sfirmware.com^$ghide -||jsdelivr.net/*/adb-analytics$script,3p -sfirmware.com##+js(nano-sib) -sfirmware.com##.cc-window -sfirmware.com##.post-ads -sfirmware.com##.buy_on_amazon -hostingunlock.com##+js(acs, $, show) -*$script,redirect-rule=noopjs,domain=tgbeautymedia.blogspot.com -wickedspot.org##+js(aopr, b2a) -*$script,redirect-rule=noopjs,domain=sportif.id -@@||erai-raws.info^$ghide -##[href*="//agacelebir.com"] -@@||smashresume.com^$ghide -! NSFW popups exo ads -18-teen-sex.com,18-teen-tube.com,18girlssex.com,18teen-tube.com,18tubehd.com,2017tube.com,3prn.com,sexmoza.com,yogranny.com,youfreepornotube.com,youngleak.com,zhlednito.cz##+js(acs, document.dispatchEvent, myEl) -24pornvideos.com,2japaneseporn.com,xxxvideor.com,youngleak.com,zhlednito.cz##+js(aopr, ExoLoader.serve) -zhlednito.cz##+js(nosiif, /^/) -nakedarab-tube.com,xxxtubepass.com,yestubemature.com,yourhomemadetube.com,yourtranny-sex.com##+js(aopr, Aloader.serve) -yeswegays.com,youramateurtube.com##+js(nowoif) -ganstamovies.com,youngleak.com##+js(aeld, getexoloader) -18girlssex.com##+js(aopr, decodeURI) -||youramateurtube.com/sw.js$script,1p -ringsidenews.com##+js(aopr, googletag) -watchmonkonline.com##+js(aopr, open) -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=motorsport.tv,redirect-rule=google-ima.js -||static.adsafeprotected.com/vans-adapter-google-ima.js$script,domain=motorsport.tv,redirect-rule=google-ima.js -convert-case.softbaba.com##+js(aopr, adblockDetector) -fotografareindigitale.com##+js(acs, jQuery, ai_adb) -nesia.my.id##+js(set, tidakAdaPenghalangAds, true) -*$script,redirect-rule=noopjs,domain=allkaicerteam.com -@@||allkaicerteam.com^$ghide -allkaicerteam.com##ins.adsbygoogle -@@||meutimao.com.br^$ghide -rbxoffers.com##+js(nostif, adblock) -tvn24.pl##+js(json-prune, playlist.movie.advertising.ad_server) -@@||cdntvn.pl/*/advert.js$xhr,domain=tvn24.pl -gomoviesfree.*##+js(aopr, glxopen) -@@||uragongaming.blogspot.com^$ghide -brandstofprijzen.info##+js(aeld, load, antiblock) -theandroidpro.com##+js(aopr, adBlockDetected) -netfuck.net##+js(aeld, DOMContentLoaded, adsBlocked) -webtor.io##+js(nowoif) -webtor.io##.alerts -webtor.io##.me-ad-container -phimgi.tv##+js(acs, jQuery, popup) -@@||player.phimnhe.net^$ghide -nirjonmela.com##+js(acs, $, AdBlock) -thgss.com##+js(nosiif, adsbygoogle) -@@||thgss.com^$script,1p -u-s-news.com##+js(set, ulp_noadb, true) -redbox.com##.rb-ad-leaderboard-container -*$image,redirect-rule=2x2.png,domain=redbox.com -yggtorrent.*##+js(aopw, Fingerprint2) -thefastlaneforum.com##+js(nostif, .show, 1000) -zeeebatch.blogspot.com##+js(aopr, adBlockDetected) -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=infolokerserang.com -@@||luscious.net^$ghide -luscious.net##.ad_lead -*$script,redirect-rule=noopjs,domain=luscious.net -luscious.net##+js(aopr, console.clear) -luscious.net##+js(aeld, popstate) -luscious.net##+js(nowoif) -luscious.net##a[rel$="sponsored"] -luscious.net##div[class^="adDisplay-module"] -luscious.net##.ad_section -*$script,3p,denyallow=cdn77.org|cloudflare.net|googleapis.com|jsdelivr.net|jsdelivr.map.fastly.net,from=luscious.net -@@*$xhr,domain=luscious.net,3p -||luscious.net/advertisement/iframe/ -! downsub .com anti adb -@@||downsub.com^$xhr,1p -tiz-cycling-live.io##+js(acs, $, blocker) -tiz-cycling-live.io###msg -tiz-cycling.io##+js(acs, jQuery, blocker) -! azarplus.com ads -||azarplus.com/wp-content/uploads/*.gif$image,1p -@@||azarplus.com/wp-content/uploads/*Publicidad*.jpg$image,1p -@@||azarplus.com/wp-content/uploads/*Publicidad*.png$image,1p -azarplus.com##.public-banner-3 -azarplus.com##.td-all-devices > [href][target="_blank"] -azarplus.com###overbox3 -||cloudgallery.net^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation -||cloudgallery.net^$csp=script-src * 'unsafe-inline' -||imghot.net^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation -||imghot.net^$csp=script-src * 'unsafe-inline' -||imgzong.*^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation -||imgzong.*^$csp=script-src * 'unsafe-inline' -cloudgallery.net,imghot.net##+js(aopr, AaDetector) -cloudgallery.net,imghot.net##+js(aopr, console.clear) -/webroot/modern_theme/img/dwndbnr*$image,1p -makemoneywithurl.com##+js(nowoif) -makemoneywithurl.com##+js(set, timeSec, 0) -makemoneywithurl.com###scroll.hidden, .footerLink.hidden:style(display: block!important) -makemoneywithurl.com###next.getmylink -makemoneywithurl.com##.box-main > div:not([class]) -dvdgayonline.com##+js(ra, href, #clickfakeplayer) -dvdgayonline.com##+js(nano-stb, countdown, 1000, 0.02) -dflix.top##+js(nowoif) -dflix.top##body > div[class]:last-child -||acacdn.com^$script,redirect-rule=noop.js,domain=dflix.top -! wutime_adblock -trade2win.com##+js(nostif, .show) -gomo.to##+js(aopr, glxopen) -gomo.to##+js(nowoif) -*$script,3p,denyallow=googleapis.com,domain=gomo.to -iir.ai##+js(acs, Math, XMLHttpRequest) -iir.ai##+js(aeld, load, .appendChild) -iir.ai##+js(aopr, app_vars.force_disable_adblock) -iir.ai##+js(aopr, open) -iir.ai##+js(aopw, Fingerprint2) -iir.ai##+js(set, blurred, false) -iir.ai###link-view > div[style] + p[style] + center > [href][target] -iir.ai##form > a[href][target] -iir.ai##.box-main > a[href][target] -*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=iir.ai -||iir.ai/sw$script,1p -trendsderzukunft.de##+js(aopr, onload) -||vidlii.com/js/main.js^$script,1p -vidlii.com##+js(nosiif, visibility, 1000) -vidlii.com##+js(set, blockAdBlock, trueFunc) -vidlii.com##+js(set, adsbygoogle.loaded, true) -*$xhr,redirect-rule=noopjs,domain=vidlii.com -@@||vidlii.com^$ghide -vidlii.com##ins.adsbygoogle -docer.*##+js(set, ads_unblocked, true) -download.htdrive.com##+js(acs, document.getElementById, bannerad) -onlinetutorium.com##+js(acs, addEventListener, google_ad_client) -fontyukle.net##+js(aost, setTimeout, onload) -fontyukle.net##div.sponsor -@@||cryptonetos.ru^$ghide -cryptonetos.ru##+js(acs, onload, adblock) -cryptonetos.ru##.carousel-inner -cryptonetos.ru##.ads -cryptonetos.ru##.popup -! cryptofuns.ru anti-adb -cryptofuns.ru##+js(nowoif) -cryptofuns.ru##+js(aopr, app_vars.force_disable_adblock) -cryptofuns.ru##+js(aopr, adcashMacros) -cryptofuns.ru##.popup, #overlay -cryptofuns.ru##[href^="//a.o333o.com/"] -cryptofuns.ru##[class^="_fa7"] -northwalespioneer.co.uk##+js(aopr, _sp_.mms.startMsg) -@@||indcit.com^$ghide -||google.com/adsense/domains/caf.js$script,redirect=noopjs,domain=jestrudo.pl -modagamers.com##+js(acs, JSON.parse, atob) -modagamers.com##+js(nostif, showModal) -modagamers.com##+js(nano-stb) -animetemaefiore.club##+js(nowoif) -modagamers.com##+js(aopr, decodeURI) -@@*$ghide,domain=pomponik.pl|iplsc.com -ogrenciyegelir.com##+js(acs, document.getElementById, nextFunction) -cdn77.org##+js(set, xxSetting.adBlockerDetection, false) -cdn77.org###layerName_preroll, #layerName_postroll -! nsfw batporno .com popunder -batporno.com##+js(aopr, decodeURI) -howtofixwindows.com##+js(set, better_ads_adblock, null) -||grammarist.com/*/*.jpg$script,1p -grammarist.com###custom_html-3, #custom_html-5 -grammarist.com##small -vidload.net##+js(aopr, AaDetector) -sandiegouniontribune.com##+js(aopr, googlefc) -almezoryae.com##+js(acs, document.createElement, adblock) -femalefirst.co.uk##+js(aopr, ppload) -@@||shana.pe.kr^$ghide -shana.pe.kr##ins.adsbygoogle -! perfectmomsporn .com ads + popunder -perfectmomsporn.com##+js(aopr, Aloader) -perfectmomsporn.com##+js(noeval) -! tubexxxone .com ads + popunder -tubexxxone.com##+js(noeval) -tubexxxone.com##+js(aopr, Aloader.serve) -! theregister.co.uk -theregister.co.uk##+js(aopr, RegAdBlocking) -theregister.co.uk##+js(acs, document.createElement, a.adm) -remaxhd.*##+js(aopr, decodeURI) -remaxhd.*##+js(nowoif) -shorteet.com##+js(set, blurred, false) -shorteet.com##+js(set, open, undefined) -shorteet.com##.banner -*$script,3p,denyallow=gstatic.com|recaptcha.net,domain=shorteet.com -mobilelegends.shop##+js(nano-sib) -*$image,redirect-rule=2x2.png,domain=mobilelegends.shop -gogodl.com##+js(acs, document.getElementById, adblock) -cdiscount.com##+js(aopr, __eiPb) -@@||toyota-club.eu^$ghide -@@||9docu.*^$ghide -@@||k258059.net^$ghide -vipracing.*##+js(acs, $, show) -vipracing.*##+js(aopr, AaDetector) -vipracing.*##[href="https://www.tvbarata.club/"] -vipracing.*###vpp -primedeportes.es##+js(aeld, load, onload) -sportstream.live##+js(aopr, checkABlockP) -@@||poring.world^$ghide -poring.world##[data-ad-slot] -||survivalservers.com^$frame,domain=ads.bdcraft.net -@@||ads.bdcraft.net/js/interstitial.js$script,1p -ddaynormandy.forumgaming.fr,neogeo-system.com##a[onclick][target]:upward(2) -! btdb .eu popunder -btdb.*##+js(aeld, , _0x) -btdb.*##+js(aopr, console.clear) -btdb.*##+js(aeld, , Date) -btdb.*##+js(aopr, open) -*$frame,script,xhr,3p,denyallow=bootstrapcdn.com|cdn77.org|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|instagram.com|jquery.com|jsdelivr.net|jwpcdn.com|jwpsrv.com|plyr.io|twimg.com|twitter.com|recaptcha.net|wp.com|x.com,domain=btdb.* -btdb.*##.alert-dismissible -btdb.*##.alert -ujszo.com##+js(set, Drupal.behaviors.adBlockerPopup, null) -naniplay.com##+js(nowoif) -@@||3amid-url.blogspot.com^$ghide -librospreuniversitariospdf.blogspot.com##+js(nostif, getComputedStyle) -*$script,3p,denyallow=disqus.com|disquscdn.com|jsdelivr.net|jwpcdn.com|fastly.net|fastlylb.net|jquery.com|hwcdn.net|hcaptcha.com|recaptcha.net|cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com|googleusercontent.com|blogger.com|plyr.io,domain=librospreuniversitariospdf.blogspot.com -@@||appnee.com^$ghide -appnee.com##ins.adsbygoogle -appnee.com###babasbmsgx -appnee.com##[href^="https://appnee.com/advertising/"] > [src^="https://img.appnee.com/other/"][alt="Ads Place"] -appnee.com##+js(rmnt, script, alert) -! wojtekczytawh40k.blogspot.com anti-adb -wojtekczytawh40k.blogspot.com##+js(acs, addEventListener, ADBLOCK) -! atdhe .cc / sx popups, ads -atdhe.*##+js(popads-dummy) -atdhe.*##[href^="https://horti.brovada.eu/"] -atdhe.*###bannerInCenter -||bitcoines.com^$3p -! 5299 .tv anti adb -5299.tv##+js(acs, jQuery, setTimeout) -@@||scaleya.com^$ghide -files.im##+js(acs, decodeURI, decodeURIComponent) -files.im##+js(nano-stb, tick) -||files.im/ppa -pharmaceutical-technology.com##+js(acs, jQuery, click) -||pharmaceutical-technology.com/wp-content/*skin.jpg$image -*$xhr,redirect-rule=nooptext,domain=savesubs.com -savesubs.com##+js(nowoif) -lebahmovie.com##+js(aopr, decodeURI) -||lebahmovie.com/sw.js$script,1p -lebahmovie.com##.idmuvi-topbanner-aftermenu -*.gif$domain=lebahmovie.com,image -||ohbayersbur.pro^ -||global.proper.io/salon.min.js$script,redirect=noopjs,domain=salon.com -salon.com##.ad-topper -creditcardrush.com##+js(nostif, adsBlocked) -||doubleclick.net/pagead/id$xhr,redirect=nooptext,domain=creditcardrush.com -@@||dynamicpapers.com^$ghide -dynamicpapers.com##ins.adsbygoogle -dynamicpapers.com##.ezoic-ad -newsmax.com##+js(set, fake_ad, true) -@@||mintik.com^$ghide -ockles.com##+js(nano-sib) -duit.cc##+js(aopr, decodeURI) -duit.cc##+js(acs, eval, ignielAdBlock) -@@||duit.cc^$ghide -*$image,redirect-rule=1x1.gif,domain=duit.cc|ockles.com -duit.cc##[id*="ScriptRoot"], .adsbygoogle, .amp-unresolved -theouterhaven.net,watchallchannels.com,wikipekes.com##+js(acs, jQuery, ai_adb) -semuanyabola.com##+js(acs, decodeURIComponent, ai_) -watchallchannels.com##[href^="https://www.xvinlink.com/"] -watchallchannels.com##.widget-title -@@||seriesynovelas.online^$ghide -seriesynovelas.online##+js(nowoif) -truyentranhaudio.online##+js(acs, jQuery, adblocker) -carbonite.co.za##+js(acs, $, AdBlock) -@@||romsforever.co^$ghide -interracial.com##+js(nowoif) -interracial.com##[src^="https://www.interracial.com/player/html.php"] -@@||memexcomputer.it^$ghide -memexcomputer.it##ins.adsbygoogle -layarkaca21indo.com##+js(aopr, adBlockDetected) -@@||forbes.com^$ghide -forbes.com##.vestpocket -forbes.com##fbs-ad -forbes.com##.ad-unit:not(.text-ad):not(.textads) -forbes.com##.footer-ad-labeling -forbes.com##.ad-rail -forbes.com##.ed-wrap.rafeed__block -forbes.com###featured-partners -forbes.com##.amp-ad-container -||jootizud.net^ -*$3p,denyallow=google.com|googleapis.com|gstatic.com,domain=uplinkto.* -porno-tour.*##+js(aopr, document.dispatchEvent) -porno-tour.*##+js(nostif, innerText, 2000) -popcornstream.*##+js(nostif, blur) -popcornstream.*##+js(aeld, , btoa) -oyungibi.com##+js(set, jQuery.adblock, false) -turkmmo.com##+js(acs, $, AdBlock) -turkmmo.com##+js(nostif, samOverlay) -@@||firefiles.org^$ghide -animealtadefinizione.it##+js(acs, addEventListener, adb) -animealtadefinizione.it##+js(aopr, AaDetector) -jumpmanclubbrasil.com.br##+js(acs, addEventListener, nextFunction) -jumpmanclubbrasil.com.br##.home-ad-con -! rentbyowner .com popunder -rentbyowner.com##+js(nowoif, !refine?search) -@@||psprices.com^$ghide -psprices.com##[href*=".smartadserver.com"] -psprices.com##body:style(background-color: white !important) -ikaza.net##+js(aopr, showAds) -! anti adb zerozero .pt -@@||zerozero.pt^$ghide -tatangga.com##+js(acs, eval, AdBlock) -@@||torrentvhd.biz^$ghide -||fegortius.com^$3p -||weblion777.github.io^$3p -*$xhr,3p,domain=torrentvhd.biz -||torrentvhd.biz/sw.js$script,1p -||corported.com^$3p -||kataprius.com^ -torrentvhd.biz##center -itechfever.com##+js(nobab) -! exoclick ads, popunder -airsextube.com,asianbabestube.com,bigtitsxxxfree.com,blowjobpornset.com,entertubeporn.com,finexxxvideos.com,freesexvideos24.com,fuckhairygirls.com,gopornindian.com,grandmatube.pro,grannyfucko.com,grannyfuckxxx.com,hd-analporn.com,hiddencamhd.com,hindiporno.pro,indianbestporn.com,japanesemomsex.com,japanxxxass.com,massagefreetube.com,maturepussies.pro,megajapansex.com,new-xxxvideos.com,xxxblowjob.pro,xxxtubegain.com,xxxvideostrue.com,onlinegrannyporn.com,agedtubeporn.com,agedvideos.com,freebigboobsporn.com,tubeinterracial-porn.com,best-xxxvideos.com,bestanime-xxx.com,blowxxxtube.com,callfuck.com,teenhubxxx.com,tubepornasian.com,xxxtubedot.com,blowjobfucks.com,dirtyasiantube.com,maturewomenfucks.com,pornmaturetube.com,setfucktube.com,tourporno.com,do-xxx.com,dotfreesex.com,dotfreexxx.com,easymilftube.net,electsex.com,erospots.info,fineretroporn.com,freehqtube.com,freshmaturespussy.com,freshsexxvideos.com,fuckedporno.com,gallant-matures.com,hqhardcoreporno.com,getitinside.com,girlssexxxx.com,glamourxxx-online.com,vintagepornnew.com,tubevintageporn.com,goxxxvideos.com,grouppornotube.com,hqxxxmovies.com,hqsex-xxx.com,hqamateurtubes.com,hotpussyhubs.com,hdpornteen.com,indecentvideos.com,ifreefuck.com,kittyfuckstube.com,lightxxxtube.com,momstube-porn.com,modelsxxxtube.com,milfpussy-sex.com,nudistube.com,nudisteens.com,nudismteens.com,nude-beach-tube.com,nicexxxtube.com,neatpornodot.com,neatfreeporn.com,bigtitsporn-tube.com,tubehqxxx.com,nakedbbw-sex.com,onlineteenhub.com,online-xxxmovies.com,pussyhothub.com,pornxxxplace.com,pornoteensex.com,pornonote.pro,pornoaid.com,pornclipshub.com,whitexxxtube.com,sweetadult-tube.com,sweet-maturewomen.com,sexyoungclips.com,sexymilfsearch.com,sextubedot.com,hqmaxporn.com,sexlargetube.com,sexhardtubes.com,tubepornstock.com,xfuckonline.com##+js(noeval) -airsextube.com,asianbabestube.com,bigtitsxxxfree.com,blowjobpornset.com,entertubeporn.com,finexxxvideos.com,freesexvideos24.com,fuckhairygirls.com,gopornindian.com,grandmatube.pro,grannyfucko.com,grannyfuckxxx.com,hd-analporn.com,hiddencamhd.com,hindiporno.pro,indianbestporn.com,japanesemomsex.com,japanxxxass.com,massagefreetube.com,maturepussies.pro,megajapansex.com,new-xxxvideos.com,xxxblowjob.pro,xxxtubegain.com,xxxvideostrue.com,acutetube.net,agedtubeporn.com,agedvideos.com,onlinegrannyporn.com,freebigboobsporn.com,tubeinterracial-porn.com,best-xxxvideos.com,bestanime-xxx.com,blowxxxtube.com,callfuck.com,teenhubxxx.com,tubepornasian.com,xxxtubedot.com,blowjobfucks.com,dirtyasiantube.com,maturewomenfucks.com,pornmaturetube.com,setfucktube.com,tourporno.com,do-xxx.com,dotfreesex.com,dotfreexxx.com,easymilftube.net,electsex.com,fineretroporn.com,freehqtube.com,freshmaturespussy.com,freshsexxvideos.com,fuckedporno.com,gallant-matures.com,hqhardcoreporno.com,getitinside.com,girlssexxxx.com,glamourxxx-online.com,vintagepornnew.com,tubevintageporn.com,goxxxvideos.com,grouppornotube.com,hqxxxmovies.com,hqsex-xxx.com,hqamateurtubes.com,hotpussyhubs.com,hdpornteen.com,indecentvideos.com,ifreefuck.com,kittyfuckstube.com,lightxxxtube.com,momstube-porn.com,modelsxxxtube.com,milfpussy-sex.com,nicexxxtube.com,neatpornodot.com,neatfreeporn.com,bigtitsporn-tube.com,tubehqxxx.com,nakedbbw-sex.com,onlineteenhub.com,online-xxxmovies.com,pussyhothub.com,pornxxxplace.com,pornoteensex.com,pornonote.pro,pornoaid.com,pornclipshub.com,whitexxxtube.com,sweetadult-tube.com,sweet-maturewomen.com,sexyoungclips.com,sexymilfsearch.com,sextubedot.com,hqmaxporn.com,sexlargetube.com,sexhardtubes.com,tubepornstock.com,xfuckonline.com##+js(aopr, Aloader.serve) -activevoyeur.com,allbbwtube.com,alltstube.com,cockmeter.com##+js(acs, document.dispatchEvent, myEl) -ariestube.com,asian-teen-sex.com,18asiantube.com,wholevideos.com,asianporntube69.com,babeswp.com,bangyourwife.com,bdsmslavemovie.com,bdsmwaytube.com,bestmaturewomen.com,classicpornvids.com,cockmeter.com,cocogals.com,pornpaw.com,dawntube.com,desihoes.com,desimmshd.com,dirtytubemix.com,plumperstube.com,enormousbabes.net,erowall.com,exclusiveindianporn.com,figtube.com,amateur-twink.com,freeboytwinks.com,freegrannyvids.com,freexmovs.com,freshbbw.com,frostytube.com,fuckhottwink.com,fuckslutsonline.com,gameofporn.com,gayboyshd.com,getitinside.com,giantshemalecocks.com,erofus.com,hd-tube-porn.com,hardcorehd.xxx,hairytwat.org,iwantmature.com,justababes.com,juicyflaps.com,jenpornuj.cz,javteentube.com,hard-tube-porn.com,klaustube.com,kaboomtube.com,lustyspot.com,lushdiaries.com,lovelynudez.com,dailyangels.com,ljcam.net,myfreemoms.com,mybestxtube.com,nakenprat.com,oosex.net,oldgrannylovers.com,ohueli.net,pornuploaded.net,pornstarsadvice.com,alotporn.com,bobs-tube.com,pornohaha.com,pornmam.com,pornhegemon.com,pornabcd.com,porn-hd-tube.com,pandamovies.pw,teensporn.tv,thehentaiworld.com,pantyhosepink.com,queenofmature.com,realvoyeursex.com,realbbwsex.com,rawindianporn.com,onlygoldmovies.com,rainytube.com,stileproject.com,slutdump.com,nastybulb.com,babesinporn.com,wantedbabes.com,sextube-6.com,porntubegf.com,sassytube.com,smplace.com,maturell.com,nudemilfwomen.com,pornoplum.com,widewifes.com,wowpornlist.xyz,vulgarmilf.com,oldgirlsporn.com,freepornrocks.com,desivideos.*##+js(aopr, document.dispatchEvent) -8teenxxx.com,activevoyeur.com,allschoolboysecrets.com,boobsforfun.com,breedingmoms.com,cockmeter.com,collegeteentube.com,cumshotlist.com,porn0.tv,ritzysex.com,ritzyporn.com,sexato.com,javbobo.com,sokobj.com##+js(aopr, ExoLoader.serve) -bdsmporntub.com,femdomporntubes.com##+js(aopr, Popunder) -comicxxx.eu##^meta[http-equiv="refresh"] -comicxxx.eu###dclm_modal_content -comicxxx.eu##*:style(filter: none !important) -comicxxx.eu###dclm_modal_screen -||be-well.es^ -blowjobgif.net##+js(aopr, ExoDetector) -favefreeporn.com,onlygayvideo.com,peachytube.com,stepsisterfuck.me##+js(aopr, ExoLoader.addZone) -decorativemodels.com,erowall.com,freyalist.com,guruofporn.com,jesseporn.xyz,kendralist.com,vipergirls.to,lizardporn.com,wantedbabes.com,bustybloom.com,exgirlfriendmarket.com,nakedneighbour.com##+js(aopr, loadTool) -comicxxx.eu,mybestxtube.com,pornobengala.com,pornicom.com,xecce.com,teensporn.tv,pornlift.com,reddflix.com,superbgays.com##+js(aopr, open) -classicpornbest.com,desihoes.com,indianpornvideo.org,porn18sex.com,slaughtergays.com,sexiestpicture.com##+js(aopr, decodeURI) -classicpornbest.com##+js(aeld, popstate) -classicpornbest.com##+js(aopr, localStorage) -embedy.me##+js(nowoif, !embedy) -reddflix.com##+js(aopr, LieDetector) -erospots.info##+js(aopr, Pub2) -gameofporn.com##+js(aeld, , exopop) -jemontremonminou.com,jemontremasextape.com,jemontremabite.com##+js(aopr, localStorage) -porndollz.com,xnxxvideo.pro,xvideosxporn.com,filmpornofrancais.fr,pictoa.com##+js(aeld, getexoloader) -nackte.com##+js(aopr, jsUnda) -older-mature.net##+js(aopr, doOpen) -canalporno.com,dreamamateurs.com,eroxia.com,porndoe.com,pornozot.com##+js(aopr, ExoLoader) -alotporn.com##+js(aopw, __htapop) -alotporn.com##+js(aopr, console.clear) -bobs-tube.com##+js(nostif, innerText, 2000) -bobs-tube.com##+js(set, flashvars.mlogo, '') -bobs-tube.com##.adv_nad_player -bobs-tube.com##.sponsored_top -dreamamateurs.com##+js(popads-dummy) -pornforrelax.com##+js(aopr, adver.abFucker.serve) -pornforrelax.com##+js(aeld, , _blank) -fatwhitebutt.com,smplace.com,slaughtergays.com,sexiestpicture.com,sassytube.com,vipergirls.to,xh.video##+js(nowoif) -fatwhitebutt.com##+js(aeld, , _blank) -freepornrocks.com##+js(aeld, , open) -tubev.sex##+js(aopw, displayCache) -tubev.sex##[class^="sp_block"] -pictoa.com##+js(aeld, , 0x) -lovelynudez.com##+js(aopr, popit) -javbobo.com,nudismteens.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -*$script,3p,denyallow=cdn77.org|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|fluidplayer.com|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|instagram.com|jquery.com|jsdelivr.net|jwpcdn.com|jwpsrv.com|plyr.io|twimg.com|twitter.com|recaptcha.net|wp.com|x.com,domain=filmpornofrancais.fr -||classicpornbest.com^$csp=script-src * -*$script,xhr,3p,domain=lovelynudez.com -||teenhooker.net^$frame,1p -*$script,3p,domain=classicpornbest.com -classicpornbest.com##.h-bns-bl -||youvideoporno.mobi^$3p -||nudismteens.com/tensnuddy.js -||javbobo.com/little-hall-f39d/ -||pornpaw.com/never.js -comicxxx.eu###tracking-url -dirtytubemix.com##.on-video-dark -boobsforfun.com##.adcontainer -breedingmoms.com##.embaners -breedingmoms.com##.h-bn -pornpaw.com##.ipprtcnt -pornpaw.com##div[style="height:250px;display:block;"] -erospots.info##.custom-html-widget.textwidget -amateur-twink.com##.banner -amateur-twink.com##.pl_adv -freyalist.com##.stripper -ftopx.com##.advert -fuckedporno.com##.bannersinner -fuckhardporn.com##.player_ad_block -fuckhardporn.com###player_adv_start -fuckhardporn.com###skim -gameofporn.com###container -gameofporn.com##.block-pub-side -cockmeter.com###alfa_promo_parent -||girlscanner.online/ph_co.js$script -||girlscanner.cc/check.php -girlscanner.cc##[href*="/check.php"] -girlscanner.cc##div.side-box -vipergirls.to##[src="files/se.gif"] -vipergirls.to##.body_wrapper > [id^="ad_global"], #notices.notices -mrsexe.com###disclaimer -mrsexe.com##.reveal-modal-bg -mrsexe.com###exovid -mrsexe.com##.vjs-poster -xnxxvideo.pro##.video-archive-ad -xvideosxporn.com##[href*="bawafx.com/"] -pornstarsadvice.com##.banners -bobs-tube.com##.advertising -bobs-tube.com##.player-related-videos -bobs-tube.com##.adv -pornforrelax.com##.vda-item -porn613.net##[src="about:blank"] -superbgays.com###block -superbgays.com###CloseAd -@@||bobs-tube.com/player/player_ads.html$1p -dreamamateurs.com##[href^="http://ezofferz.com/"] -pictoa.com###tab-gallery -pictoa.com###tab-footer -||bo4news.biz^ -||bobs-tube.com/sw$script,1p -||checking-your-browser.com^ -||crentgate.com^ -||obitube.com^$frame,1p -||redtub3xxx.com^$frame,1p -##.bloc-pub -##.bloc-pub2 -###invideo_data -*/api/spots/$frame,script -/api/spots/*^fill=$xhr -/api/spots/*&kw=$xhr -###invideo_2 -##.hor_banner -###invid_call -###invideo_new -##.aan_fake -##.aan_fake__video-units -##.rps_player_ads -##[src^="//dombnrs.com/"] -*.gif$domain=javbobo.com,image -/frtd_ldr_$script,1p -/bknd_ldr_$script,1p -pornoplum.com,vulgarmilf.com,oldgirlsporn.com,maturell.com,nakedolders.com,nudemilfwomen.com,widewifes.com##iframe:upward(2) -besttwinkass.com##[class*="_Bns"] -nylonbabez.net,nylonpornpictures.net,stockingspornpics.com##.preview:has(.nat-block) -*$frame,1p,domain=sexrura.pl|sexrura.com -acdriftingpro.com##+js(nostif, offsetHeight) -acdriftingpro.com##+js(nano-sib, countdown, *, 0.001) -urlpay.net##+js(nano-sib) -urlpay.net##^script:has-text('shift') -urlpay.net##^script:has-text(\'shift\') -urlpay.net##+js(acs, String.fromCharCode, 'shift') -olinevid.com###layerName_preroll, #layerName_postroll -*$script,redirect-rule=noopjs,domain=olinevid.com -@@||olinevid.com^$ghide -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=olinevid.com -sekilastekno.com##+js(aopr, app_vars.force_disable_adblock) -sekilastekno.com##+js(nowoif, wapka) -sekilastekno.com##+js(no-fetch-if, ads) -sekilastekno.com##[href^="https://poptival.com/direct"] -sekilastekno.com##+js(set, blurred, false) -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=apk.sekilastekno.com -apk.sekilastekno.com##[href="https://www.tautan.pro/"] -apk.sekilastekno.com##[href^="https://www.poptival.com/direct"] -apk.sekilastekno.com##[width="200"][height="60"] -@@||the-race.com^$ghide -the-race.com##.ad_container_default -savealoonie.com##+js(aopr, mdp_deblocker) -@@||mangafeeds.com^$ghide -tempr.email##+js(set, adblock, false) -tempr.email###HeaderBanner -teenager365.com##+js(acs, document.addEventListener, adsbygoogle) -teenager365.com##.video-archive-ad -lkc21.net##+js(aopr, AaDetector) -lkc21.net##+js(nowoif) -@@||musicpremieres.com^$ghide -iptvspor.com##+js(aopr, adBlockDetected) -plugincim.com##+js(aopr, adBlockDetected) -fivemturk.com##+js(aopr, adBlockDetected) -fivemturk.com##[src^="https://i.hizliresim.com/"] -sosyalbilgiler.net##+js(aopr, adBlockDetected) -nadidetarifler.com##+js(set, koddostu_com_adblock_yok, null) -nadidetarifler.com##.advert-side -hwreload.it##+js(acs, $, show) -suzylu.co.uk##+js(set, adsbygoogle, trueFunc) -suzylu.co.uk##+js(set, player.ads.cuePoints, undefined) -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=suzylu.co.uk -@@||alfaloji.org^$ghide -alfaloji.org##ins.adsbygoogle -lenkino.*##+js(nostif, innerText, 2000) -mail.de###euccBanner -positive-feedback.com##.ad-row-horizontal -positive-feedback.com##.banner-right -positive-feedback.com##.right-ad-wrapper -positive-feedback.com##.archive_ad_block -positive-feedback.com##.load-screen -medicalnewstoday.com##div[id="__next"] > div[class^="css-"] > div > section > div:matches-css-before(content: /ADVERTISEMENT/) -medicalnewstoday.com##div[id="__next"] > div[class^="css-"] > aside:has(> div:matches-css-before(content: /ADVERTISEMENT/)) -medicalnewstoday.com##div[data-dynamic-ads] -medicalnewstoday.com##div[class^="css-"]:matches-css-before(content: /ADVERTISEMENT/) -medicalnewstoday.com##hl-adsense -medicalnewstoday.com##.css-rp3d6 -pekalongan-cits.blogspot.com##+js(aeld, load, nextFunction) -cheatglobal.com##+js(acs, addEventListener, nextFunction) -mega-hentai2.blogspot.com##+js(aopr, adBlockDetected) -macrumors.com##+js(aopr, adthrive) -underhentai.net##+js(nano-sib) -underhentai.net##+js(nowoif, !t.me) -underhentai.net##.hidden-sm -underhentai.net##.visible-xs -underhentai.net##[onclick^="window.open('https://landing."] -underhentai.net##.sidebar > div[class] > .loading -||adf.underhentai.net^$frame,1p -palermotoday.it##+js(nostif, bADBlock) -discordfastfood.com##+js(nostif, clientHeight) -||googlesyndication.com/pagead/js/adsbygoogle.js$xhr,redirect-rule=noopjs,domain=btgyama.blogspot.com -*$script,domain=btgyama.blogspot.com,redirect-rule=noopjs -thumpertalk.com##+js(nostif, location) -*$xhr,redirect-rule=nooptext,domain=thumpertalk.com -@@||thumpertalk.com^$ghide -thumpertalk.com##.focus-ad -facciabuco.com##+js(nostif, , 4000) -@@||customercareal.com^$ghide -customercareal.com##a[id^="actionlinkid_"] -customercareal.com###locked_action_link.disabled:style(cursor:pointer !important; opacity:1 !important; pointer-events:auto !important) -customercareal.com##+js(nano-sib) -miniurl.*##+js(aopr, app_vars.force_disable_adblock) -miniurl.*##+js(set, blurred, false) -miniurl.*##.banner -miniurl.*##div[style="width:970px;height:90px;display: inline-block;margin: 0 auto"] -*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=miniurl.* -||miniurl.*/sw.js$script,1p -arabic-robot.blogspot.com##+js(acs, document.createElement, adblock) -arabic-robot.blogspot.com###preloader -@@||nsfwmega.com^$ghide -! popups https://forums.lanik.us/viewtopic.php?f=64&t=44458 -mavanimes.co##+js(aopr, AaDetector) -freegogpcgames.com##+js(nowoif) -freegogpcgames.com##+js(no-xhr-if, googlesyndication) -freegogpcgames.com##+js(nostif, show) -@@||nxmac.com^$ghide -nxmac.com##.alert-errors.in.fade.alert -nxmac.com##ins.adsbygoogle -! rizaldi.web.id anti-adb -@@||rizaldi.web.id^$ghide -! smiechawatv.pl anti-adb -smiechawatv.pl##+js(nowoif) -smiechawatv.pl##[href^="http://smiechawatv.cupsell.pl/"] -smiechawatv.pl##[href^="https://www.cda.pl/smiechawaTV/"] -! digitalrev4u.com anti-adb -digitalrev4u.com##.header_banner -digitalrev4u.com##[href^="https://shop.olympus.eu/"] -gun-otaku.blogspot.com##+js(aopr, adBlockDetected) -gun-otaku.blogspot.com###HTML16 -@@||get-digital-help.com^$ghide -get-digital-help.com##.ezoic-ad -get-digital-help.com##.adthrive-ad -! nefree .com anti adb -@@||nefree.com^$ghide -onworks.net##+js(set, adBlockDetected, null) -onworks.net###ja-container-prev-b -! dlapk4all .com popups -dlapk4all.com##+js(aopr, glxopen) -dlapk4all.com##+js(aeld, , _0x) -apk4all.com##.control.field > .is-danger.button -! 4tymode. win anti adb -4tymode.win##+js(aeld, load, nextFunction) -@@||watchonlyfoolsandhorses.com^$ghide -watchonlyfoolsandhorses.com##[id*="ScriptRoot"] -watchonlyfoolsandhorses.com##.module_single_ads -@@||brownsboys.com^$ghide -@@||mrsbrownsb.blogspot.com^$ghide -mrsbrownsb.blogspot.com##.section.featured-post -qpython.club##+js(aeld, DOMContentLoaded, AdBlock) -galvinconanstuart.blogspot.com##+js(acs, $, open) -freep.com##+js(set, adsEnabled, true) -freep.com##.teal-video-wrap -freep.com##.gnt_em_vp__tavp.gnt_em -freep.com##a.gnt_cw_sl -freep.com##.gnt_ar_xb -@@||robloxexploitz.com^$ghide -robloxexploitz.com##ins.adsbygoogle -downloadsoft.net##+js(acs, document.createElement, adblock) -downloadsoft.net##+js(set, better_ads_adblock, 1) -@@||teledyski.info^$ghide -teledyski.info###r-s1 -@@||tudogamesbr.com^$ghide -tudogamesbr.com##+js(nowoif) -tudogamesbr.com##+js(nano-stb, /.?/, , 0.02) -! songsio. com popup -*$script,3p,domain=songsio.com -||nfxktxuwx.com^ -faupto.com##+js(aopr, show_ads_gr8_lite) -dogemate.com##+js(nowoif) -dogemate.com##+js(acs, $, .filter) -faupto.com,dogemate.com##+js(aopr, disableButtonTimer) -faupto.com##+js(nano-sib) -*$frame,script,3p,denyallow=bootstrapcdn.com|consensu.org|google.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|recaptcha.net|wp.com,domain=faupto.com -*$3p,script,frame,denyallow=bootstrapcdn.com|cloudflare.com|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|recaptcha.net,domain=dogemate.com -faupto.com##[href^="https://brave.com"] -faupto.com##.shadow.bg-dark -dogemate.com##div[class][style="width:300px;height:250px;display: inline-block;margin: 0 auto"] -@@||dogemate.com/banner/$image,1p -dogemate.com##img[id^="ads-"]:style(visibility: hidden !important;) -claimcrypto.cc##+js(aopr, app_vars.force_disable_adblock) -claimcrypto.cc##+js(aopr, adBlockDetected) -claimcrypto.cc##[class^="bmadblock"] -@@||sledujserialy.*^$script,1p -||sledujserialy.*/theme/json/episode.ad.php^$frame -sledujserialy.*##div[id][style="position: absolute; top: 0; left: 0; width: 100%; height: 380px; text-align: center;"] -sledujserialy.*###super_secret_ad -@@||taiba-dz.blogspot.com^$ghide -onnime.net##+js(aopr, AaDetector) -softx64.com##+js(nostif, blocker, 100) -! nysainfo.pl anti-adb -nysainfo.pl##+js(aopr, mdpDeBlocker) -nysainfo.pl###mdp-deblocker-js-disabled -! napolipiu.com anti-adb -napolipiu.com##+js(aopr, tie) -manpeace.org##+js(aopr, document.write) -@@||judicialcaselaw.com^$script,1p -@@||boardgamesonline.net^$ghide -boardgamesonline.net##ins.adsbygoogle -! anti adb games.newsobserver .com -newsobserver.com##+js(set, Adv_ab, false) -findandfound.ga,png.is##+js(aopr, adb_checker) -nohat.cc,png.is##+js(aopr, ignore_adblock) -png.is,nohat.cc##+js(aopr, $.prototype.offset) -png.is,nohat.cc##+js(no-fetch-if, adsbygoogle) -findandfound.ga##+js(aopr, $.prototype.html) -findandfound.ga##+js(aopr, onload) -findandfound.ga##+js(ra, oncontextmenu, body) -||nohat.me^$3p -@@||nohat.me/s?*k=$xhr,domain=png.is|nohat.cc -! line25 .com popunder -line25.com##+js(aopr, decodeURI) -hmc-id.blogspot.com,jemerik.com##+js(nostif, AdBlock) -noxx.to##+js(aopr, AaDetector) -thelayoff.com##+js(nostif, alert) -thelayoff.com##.epp-bf -fuskator.com##+js(aopr, ea.add) -fuskator.com##+js(noeval) -bostoncommons.net##+js(aopr, eddOptions) -bostoncommons.net##+js(aopr, LieDetector) -bostoncommons.net##+js(nostif, adsBlocked) -e9china.net##+js(aeld, load, blocker) -isminiunuttum.com##+js(acs, document.getElementById, block) -@@||bigbrothercanada.ca^$ghide -*$script,redirect-rule=noopjs,domain=bigbrothercanada.ca -bigbrothercanada.ca##.video-adTile -bigbrothercanada.ca##.adWrapper -@@||bolognatoday.it^$ghide -! newtorrentgame .com popups -||d2klx87bgzngce.cloudfront.net^$script,redirect=noopjs -newtorrentgame.com##^script:has-text('shift') -newtorrentgame.com##^script:has-text(\'shift\') -||allbloggingtips.com^$3p -! sunbtc.space anti-adb -@@||sunbtc.space^$ghide -sunbtc.space##+js(set, adBlock, false) -! ero18.cc anti-adb/popups/ads -@@||ero18.cc^$ghide -ero18.cc##[href^="https://rapidgator.net/"] -! pstream .net anti adb / example: https://www.pstream .net/e/KJxQ2W0P91WW00L -pstream.net##+js(acs, String.fromCharCode, atob) -pstream.net##+js(nosiif, length) -pstream.net##+js(nostif, length) -pstream.net##+js(nowebrtc) -pstream.net##+js(nowoif) -pstream.net##head:has(style[id*="videojs"]) + body > *:not(.video-js) -@@||pstream.net^$ghide -@@||pstream.net^$xhr,1p -*$script,1p,redirect-rule=noopjs,domain=pstream.net -||lologhfd.com^$all -suanoticia.online##+js(nano-sib) -bibliotechsuper.com##[href="https://bibliotechsuper.com/"] -shurt.pw##+js(aopr, app_vars.force_disable_adblock) -shurt.pw##+js(aopw, adcashMacros) -shurt.pw##+js(nowoif) -shurt.pw##body > div[style]:has(input[type="button"]) -shurt.pw##div[style*="z-index:99999"] > div[style*="width:300px"] -*$frame,denyallow=google.com|hcaptcha.com,domain=shurt.pw -*$script,3p,denyallow=google.com|gstatic.com|hcaptcha.com|jsdelivr.net|recaptcha.net,domain=shurt.pw -||vdo.ai^$3p -||short.pe^$3p -art19.com##+js(json-prune, ad_pods.0.ads.0.segments.0.media ad_pods.1.ads.1.segments.1.media ad_pods.2.ads.2.segments.2.media ad_pods.3.ads.3.segments.3.media ad_pods.4.ads.4.segments.4.media ad_pods.5.ads.5.segments.5.media ad_pods.6.ads.6.segments.6.media ad_pods.7.ads.7.segments.7.media ad_pods.8.ads.8.segments.8.media) -art19.com##.art19-notifications-list -||marketbeat.com/scripts/modal/* -marketbeat.com##+js(aeld, mouseleave, NativeDisplayAdID) -marketbeat.com###mb-bar -marketbeat.com##[id*="pnlAd"] -marketbeat.com##a[href*="NativeDisplayAdID"] -linkconfig.com##+js(nano-sib) -*$script,redirect-rule=noopjs,domain=onbatch.my.id -@@||onbatch.my.id^$ghide -onbatch.my.id##[id*="ScriptRoot"] -jkoding.xyz##+js(nostif, _0x) -! bt4g.unblocked .to popups -bt4g.unblocked.to##+js(aopr, open) -@@||controlc.com^$ghide -||twitch.tv^$xhr,3p,domain=controlc.com -controlc.com##[href^="http://redact.dev"] -legendas.dev##+js(refresh-defuser) -investnewsbrazil.com##+js(nano-stb, contador, *, 0.001) -investnewsbrazil.com##+js(acs, Light.Popup.create) -||oyesrhweyma.com^ -libreriamo.it##+js(nostif, ai_adb) -! boost.ink link-hijack // boost.ink/ia7o -boost.ink##+js(disable-newtab-links) -@@||easyexploits.com^$ghide -easyexploits.com##+js(aopr, mm) -dailymaverick.co.za##+js(nostif, t(), 0) -notiziemusica.it##+js(aopw, adBlockDetected) -dood.*,doods.pro,dooood.*,ds2play.com##+js(aopw, DoodPop) -d0o0d.com,do0od.com,dood.*,ds2video.com##+js(acs, decodeURI, decodeURIComponent) -dood.*##+js(aopr, __aaZoneid) -d0000d.com,d000d.com,d0o0d.com,do0od.com,dood.*,doods.pro,dooood.*,ds2play.com,ds2video.com##+js(nowoif) -d0000d.com,d000d.com,d0o0d.com,do0od.com,dood.*,doods.pro,doodstream.*,dooood.*,ds2play.com,ds2video.com##+js(rmnt, script, /adblock|popunder/) -d0000d.com,d000d.com,d0o0d.com,do0od.com,dood.*,doods.pro,doodstream.*,dooood.*,ds2play.com,ds2video.com##^script:has-text(/adblock|popunder/) -/sw.js$script,domain=d0000d.com|d000d.com|d0o0d.com|do0od.com|dood.*|doods.pro|dooood.*|ds2play.com|ds2video.com -||dexchangegenius.com^ -||rfsjuxlip.com^ -$popup,3p,domain=ds2play.com,badfilter -androgamer.org##+js(acs, jQuery, ai_adb) -@@||fiches-auto.fr^$ghide -fiches-auto.fr###bulle_avvis -fiches-auto.fr##.adsbygoogle:style(visibility: collapse !important) -ludigames.com##+js(nostif, ads) -! pixsera -pixsera.net##+js(nano-sib, timer) -pixsera.net##+js(nowoif, !/prcf.fiyar|themes|pixsense|.jpg/) -pixsera.net##+js(set, hold_click, false) -pixsera.net##div[id][style^="position: fixed; display: block; width: 100%;"] -||imgair.net/vip/splitest.html -@@||imgair.net^$script -nemenlake.*##+js(nowoif) -||hottracker.biz^ -||explorads.xml-v4.ak-is2.net^ -||expmdiadi.com^ -||vehavings.biz^ -||antoiew.com^ -||kooolboomin.com^ -||shyvanas.top^$all -||linksprf.com^$3p -||searchwithme.net^ -||shacsda.name^$3p -||ghostsinstance.com^ -||genishury.pro^$popup -imgair.net,imgblaze.net,imgfrost.net,vestimage.site,imgwia.buzz,pixlev.*,imgbaex.store,imgbah.online,imgbaie.online,imgbango.store,imgbier.store,imgbimn.store,imgbqw.store,imgbuba.online,imgbwe.store,imgbxs.online,imgcao.store,imgnwe.online,imgqge.store,imgqxb.online,imgteq.online,imgtex.online,imgtuta.online,imgwqr.online,imgwww.store,imgxza.store,imgezx.sbs,imgbcxsb.store,imgbcxs.store,imgbake.cfd,imgmffg.sbs,imgmffgtr.sbs,imgnbg.sbs,imgngc.sbs,imgnmh.cfd,imgqte.sbs,imguthes.sbs,imgwag.cfd,imgwang.cfd,imgwety.sbs,imgxuh.cfd,imgxytw.cfd,imgycgey.sbs,imgyruy.cfd,imgyusa.cfd,imgyyqey.sbs,imgyer.store,imgxhs.store,imgwekr.online,imgwbfh.online,imgwak.online,imgutry.online,imgutiyu.online,imgutbbn.online,imgubfd.online,imgrei.online,imgqec.online,imgpaiou.online,imgpaiki.online,imgmjj.store,imgfa.store,imgbutrt.store,imgbty.store,imgbdl.store,imgngh.sbs,imgbbfg.pics,imgjhrjjr.pics,imgleko.pics,imgluki.pics,imgnffe.pics,imgnnnf.pics,imgrwqz.pics,imgtweqz.pics,imgxzgf.pics,imgyyeryt.pics,picbbc.one,picbbdr.one,picbest.one,picbhrt.one,picnrrt.one,picqqw.one,picqr.one,picqtwe.one,picsjre.one,piczzaq.one,imgqazx.sbs,imgiruyw.online,picnerr.cfd,pichfer.cfd,picbbeq.cfd,picqaxs.cfd,picxxdd.cfd,picqweff.cfd,pickjsn.cfd,piczzxsw.cfd,picbbbde.cfd,picbdd.cfd,imgbahxg.sbs,imgxune.sbs,imgqklw.shop,pixqkhgrt.shop,pixqbngg.shop,pixqwet.shop,pixmos.shop,imgtgd.shop,imgcsxx.shop,imgqklw.shop,pixqkhgrt.shop,pixqbngg.shop,pixqwet.shop,pixmos.shop,imgtgd.shop,imgcsxx.shop,imgcssd.shop,imguwjsd.sbs,pictbbf.shop,pixbryexa.sbs,picbqqa.sbs,pixbkghxa.sbs,imgmgf.sbs,picbcxvxa.sbs,imguee.sbs,imgmffmv.sbs,imgbqb.sbs,imgbyrev.sbs,imgbncvnv.sbs,pixtryab.shop,imggune.shop,pictryhab.shop,pixbnab.shop,imgbnwe.shop,imgbbnhi.shop,imgnbii.shop,imghqqbg.shop,imgyhq.shop,pixnbrqwg.sbs,pixnbrqw.sbs,picmsh.sbs,imgpke.sbs,picuenr.sbs,imgolemn.sbs,imgoebn.sbs,picnwqez.sbs,imgjajhe.sbs,pixjnwe.sbs,pixkfjtrkf.shop,pixkfkf.shop,pixdfdjkkr.shop,pixdfdj.shop,picnft.shop,pixrqqz.shop,picngt.shop,picjgfjet.shop,picjbet.shop,imgkkabm.shop,imgxabm.shop,imgthbm.shop,imgmyqbm.shop,imgwwqbm.shop,imgjvmbbm.shop,imgjbxzjv.shop,imgjmgfgm.shop,picxnkjkhdf.sbs,imgxxbdf.sbs,imgnngr.sbs,imgjjtr.sbs,imgqbbds.sbs,imgbvdf.sbs,imgqnnnebrf.sbs,imgnnnvbrf.sbs##+js(aopr, console.clear) -imgair.net,imgblaze.net,imgfrost.net,vestimage.site,imgwia.buzz,pixlev.*,imgbaex.store,imgbah.online,imgbaie.online,imgbango.store,imgbier.store,imgbimn.store,imgbqw.store,imgbuba.online,imgbwe.store,imgbxs.online,imgcao.store,imgnwe.online,imgqge.store,imgqxb.online,imgteq.online,imgtex.online,imgtuta.online,imgwqr.online,imgwww.store,imgxza.store,imgezx.sbs,imgbcxsb.store,imgbcxs.store,imgbake.cfd,imgmffg.sbs,imgmffgtr.sbs,imgnbg.sbs,imgngc.sbs,imgnmh.cfd,imgqte.sbs,imguthes.sbs,imgwag.cfd,imgwang.cfd,imgwety.sbs,imgxuh.cfd,imgxytw.cfd,imgycgey.sbs,imgyruy.cfd,imgyusa.cfd,imgyyqey.sbs,imgyer.store,imgxhs.store,imgwekr.online,imgwbfh.online,imgwak.online,imgutry.online,imgutiyu.online,imgutbbn.online,imgubfd.online,imgrei.online,imgqec.online,imgpaiou.online,imgpaiki.online,imgmjj.store,imgfa.store,imgbutrt.store,imgbty.store,imgbdl.store,imgngh.sbs,imgbbfg.pics,imgjhrjjr.pics,imgleko.pics,imgluki.pics,imgnffe.pics,imgnnnf.pics,imgrwqz.pics,imgtweqz.pics,imgxzgf.pics,imgyyeryt.pics,picbbc.one,picbbdr.one,picbest.one,picbhrt.one,picnrrt.one,picqqw.one,picqr.one,picqtwe.one,picsjre.one,piczzaq.one,imgqazx.sbs,imgiruyw.online,picnerr.cfd,pichfer.cfd,picbbeq.cfd,picqaxs.cfd,picxxdd.cfd,picqweff.cfd,pickjsn.cfd,piczzxsw.cfd,picbbbde.cfd,picbdd.cfd,imgbahxg.sbs,imgxune.sbs,imgqklw.shop,pixqkhgrt.shop,pixqbngg.shop,pixqwet.shop,pixmos.shop,imgtgd.shop,imgcsxx.shop,imgqklw.shop,pixqkhgrt.shop,pixqbngg.shop,pixqwet.shop,pixmos.shop,imgtgd.shop,imgcsxx.shop,imgcssd.shop,imguwjsd.sbs,pictbbf.shop,pixbryexa.sbs,picbqqa.sbs,pixbkghxa.sbs,imgmgf.sbs,picbcxvxa.sbs,imguee.sbs,imgmffmv.sbs,imgbqb.sbs,imgbyrev.sbs,imgbncvnv.sbs,pixtryab.shop,imggune.shop,pictryhab.shop,pixbnab.shop,imgbnwe.shop,imgbbnhi.shop,imgnbii.shop,imghqqbg.shop,imgyhq.shop,pixnbrqwg.sbs,pixnbrqw.sbs,picmsh.sbs,imgpke.sbs,picuenr.sbs,imgolemn.sbs,imgoebn.sbs,picnwqez.sbs,imgjajhe.sbs,pixjnwe.sbs,pixkfjtrkf.shop,pixkfkf.shop,pixdfdjkkr.shop,pixdfdj.shop,picnft.shop,pixrqqz.shop,picngt.shop,picjgfjet.shop,picjbet.shop,imgkkabm.shop,imgxabm.shop,imgthbm.shop,imgmyqbm.shop,imgwwqbm.shop,imgjvmbbm.shop,imgjbxzjv.shop,imgjmgfgm.shop,picxnkjkhdf.sbs,imgxxbdf.sbs,imgnngr.sbs,imgjjtr.sbs,imgqbbds.sbs,imgbvdf.sbs,imgqnnnebrf.sbs,imgnnnvbrf.sbs##+js(nano-sib, timer) -imgair.net,imgblaze.net,imgfrost.net,vestimage.site,imgwia.buzz,pixlev.*,imgbaex.store,imgbah.online,imgbaie.online,imgbango.store,imgbier.store,imgbimn.store,imgbqw.store,imgbuba.online,imgbwe.store,imgbxs.online,imgcao.store,imgnwe.online,imgqge.store,imgqxb.online,imgteq.online,imgtex.online,imgtuta.online,imgwqr.online,imgwww.store,imgxza.store,imgezx.sbs,imgbcxsb.store,imgbcxs.store,imgbake.cfd,imgmffg.sbs,imgmffgtr.sbs,imgnbg.sbs,imgngc.sbs,imgnmh.cfd,imgqte.sbs,imguthes.sbs,imgwag.cfd,imgwang.cfd,imgwety.sbs,imgxuh.cfd,imgxytw.cfd,imgycgey.sbs,imgyruy.cfd,imgyusa.cfd,imgyyqey.sbs,imgyer.store,imgxhs.store,imgwekr.online,imgwbfh.online,imgwak.online,imgutry.online,imgutiyu.online,imgutbbn.online,imgubfd.online,imgrei.online,imgqec.online,imgpaiou.online,imgpaiki.online,imgmjj.store,imgfa.store,imgbutrt.store,imgbty.store,imgbdl.store,imgngh.sbs,imgbbfg.pics,imgjhrjjr.pics,imgleko.pics,imgluki.pics,imgnffe.pics,imgnnnf.pics,imgrwqz.pics,imgtweqz.pics,imgxzgf.pics,imgyyeryt.pics,picbbc.one,picbbdr.one,picbest.one,picbhrt.one,picnrrt.one,picqqw.one,picqr.one,picqtwe.one,picsjre.one,piczzaq.one,imgqazx.sbs,imgiruyw.online,picnerr.cfd,pichfer.cfd,picbbeq.cfd,picqaxs.cfd,picxxdd.cfd,picqweff.cfd,pickjsn.cfd,piczzxsw.cfd,picbbbde.cfd,picbdd.cfd,imgbahxg.sbs,imgxune.sbs,imgqklw.shop,pixqkhgrt.shop,pixqbngg.shop,pixqwet.shop,pixmos.shop,imgtgd.shop,imgcsxx.shop,imgqklw.shop,pixqkhgrt.shop,pixqbngg.shop,pixqwet.shop,pixmos.shop,imgtgd.shop,imgcsxx.shop,imgcssd.shop,imguwjsd.sbs,pictbbf.shop,pixbryexa.sbs,picbqqa.sbs,pixbkghxa.sbs,imgmgf.sbs,picbcxvxa.sbs,imguee.sbs,imgmffmv.sbs,imgbqb.sbs,imgbyrev.sbs,imgbncvnv.sbs,pixtryab.shop,imggune.shop,pictryhab.shop,pixbnab.shop,imgbnwe.shop,imgbbnhi.shop,imgnbii.shop,imghqqbg.shop,imgyhq.shop,pixnbrqwg.sbs,pixnbrqw.sbs,picmsh.sbs,imgpke.sbs,picuenr.sbs,imgolemn.sbs,imgoebn.sbs,picnwqez.sbs,imgjajhe.sbs,pixjnwe.sbs,pixkfjtrkf.shop,pixkfkf.shop,pixdfdjkkr.shop,pixdfdj.shop,picnft.shop,pixrqqz.shop,picngt.shop,picjgfjet.shop,picjbet.shop,imgkkabm.shop,imgxabm.shop,imgthbm.shop,imgmyqbm.shop,imgwwqbm.shop,imgjvmbbm.shop,imgjbxzjv.shop,imgjmgfgm.shop,picxnkjkhdf.sbs,imgxxbdf.sbs,imgnngr.sbs,imgjjtr.sbs,imgqbbds.sbs,imgbvdf.sbs,imgqnnnebrf.sbs,imgnnnvbrf.sbs##div[id][style^="position: fixed; display: block; width: 100%;"] -imgair.net,imgblaze.net,imgfrost.net,vestimage.site,imgwia.buzz,pixlev.*,imgbaex.store,imgbah.online,imgbaie.online,imgbango.store,imgbier.store,imgbimn.store,imgbqw.store,imgbuba.online,imgbwe.store,imgbxs.online,imgcao.store,imgnwe.online,imgqge.store,imgqxb.online,imgteq.online,imgtex.online,imgtuta.online,imgwqr.online,imgwww.store,imgxza.store,imgezx.sbs,imgbcxsb.store,imgbcxs.store,imgbake.cfd,imgmffg.sbs,imgmffgtr.sbs,imgnbg.sbs,imgngc.sbs,imgnmh.cfd,imgqte.sbs,imguthes.sbs,imgwag.cfd,imgwang.cfd,imgwety.sbs,imgxuh.cfd,imgxytw.cfd,imgycgey.sbs,imgyruy.cfd,imgyusa.cfd,imgyyqey.sbs,imgyer.store,imgxhs.store,imgwekr.online,imgwbfh.online,imgwak.online,imgutry.online,imgutiyu.online,imgutbbn.online,imgubfd.online,imgrei.online,imgqec.online,imgpaiou.online,imgpaiki.online,imgmjj.store,imgfa.store,imgbutrt.store,imgbty.store,imgbdl.store,imgngh.sbs,imgbbfg.pics,imgjhrjjr.pics,imgleko.pics,imgluki.pics,imgnffe.pics,imgnnnf.pics,imgrwqz.pics,imgtweqz.pics,imgxzgf.pics,imgyyeryt.pics,picbbc.one,picbbdr.one,picbest.one,picbhrt.one,picnrrt.one,picqqw.one,picqr.one,picqtwe.one,picsjre.one,piczzaq.one,imgqazx.sbs,imgiruyw.online,picnerr.cfd,pichfer.cfd,picbbeq.cfd,picqaxs.cfd,picxxdd.cfd,picqweff.cfd,pickjsn.cfd,piczzxsw.cfd,picbbbde.cfd,picbdd.cfd,imgbahxg.sbs,imgxune.sbs,imgqklw.shop,pixqkhgrt.shop,pixqbngg.shop,pixqwet.shop,pixmos.shop,imgtgd.shop,imgcsxx.shop,imgqklw.shop,pixqkhgrt.shop,pixqbngg.shop,pixqwet.shop,pixmos.shop,imgtgd.shop,imgcsxx.shop,imgcssd.shop,imguwjsd.sbs,pictbbf.shop,pixbryexa.sbs,picbqqa.sbs,pixbkghxa.sbs,imgmgf.sbs,picbcxvxa.sbs,imguee.sbs,imgmffmv.sbs,imgbqb.sbs,imgbyrev.sbs,imgbncvnv.sbs,pixtryab.shop,imggune.shop,pictryhab.shop,pixbnab.shop,imgbnwe.shop,imgbbnhi.shop,imgnbii.shop,imghqqbg.shop,imgyhq.shop,pixnbrqwg.sbs,pixnbrqw.sbs,picmsh.sbs,imgpke.sbs,picuenr.sbs,imgolemn.sbs,imgoebn.sbs,picnwqez.sbs,imgjajhe.sbs,pixjnwe.sbs,pixkfjtrkf.shop,pixkfkf.shop,pixdfdjkkr.shop,pixdfdj.shop,picnft.shop,pixrqqz.shop,picngt.shop,picjgfjet.shop,picjbet.shop,imgkkabm.shop,imgxabm.shop,imgthbm.shop,imgmyqbm.shop,imgwwqbm.shop,imgjvmbbm.shop,imgjbxzjv.shop,imgjmgfgm.shop,picxnkjkhdf.sbs,imgxxbdf.sbs,imgnngr.sbs,imgjjtr.sbs,imgqbbds.sbs,imgbvdf.sbs,imgqnnnebrf.sbs,imgnnnvbrf.sbs##div[style="width:100%;height:110px"] -imgair.net,imgblaze.net,imgfrost.net,vestimage.site,imgwia.buzz,pixlev.*,imgbaex.store,imgbah.online,imgbaie.online,imgbango.store,imgbier.store,imgbimn.store,imgbqw.store,imgbuba.online,imgbwe.store,imgbxs.online,imgcao.store,imgnwe.online,imgqge.store,imgqxb.online,imgteq.online,imgtex.online,imgtuta.online,imgwqr.online,imgwww.store,imgxza.store,imgezx.sbs,imgbcxsb.store,imgbcxs.store,imgbake.cfd,imgmffg.sbs,imgmffgtr.sbs,imgnbg.sbs,imgngc.sbs,imgnmh.cfd,imgqte.sbs,imguthes.sbs,imgwag.cfd,imgwang.cfd,imgwety.sbs,imgxuh.cfd,imgxytw.cfd,imgycgey.sbs,imgyruy.cfd,imgyusa.cfd,imgyyqey.sbs,imgyer.store,imgxhs.store,imgwekr.online,imgwbfh.online,imgwak.online,imgutry.online,imgutiyu.online,imgutbbn.online,imgubfd.online,imgrei.online,imgqec.online,imgpaiou.online,imgpaiki.online,imgmjj.store,imgfa.store,imgbutrt.store,imgbty.store,imgbdl.store,imgngh.sbs,imgbbfg.pics,imgjhrjjr.pics,imgleko.pics,imgluki.pics,imgnffe.pics,imgnnnf.pics,imgrwqz.pics,imgtweqz.pics,imgxzgf.pics,imgyyeryt.pics,picbbc.one,picbbdr.one,picbest.one,picbhrt.one,picnrrt.one,picqqw.one,picqr.one,picqtwe.one,picsjre.one,piczzaq.one,imgqazx.sbs,imgiruyw.online,picnerr.cfd,pichfer.cfd,picbbeq.cfd,picqaxs.cfd,picxxdd.cfd,picqweff.cfd,pickjsn.cfd,piczzxsw.cfd,picbbbde.cfd,picbdd.cfd,imgbahxg.sbs,imgxune.sbs,imgqklw.shop,pixqkhgrt.shop,pixqbngg.shop,pixqwet.shop,pixmos.shop,imgtgd.shop,imgcsxx.shop,imgqklw.shop,pixqkhgrt.shop,pixqbngg.shop,pixqwet.shop,pixmos.shop,imgtgd.shop,imgcsxx.shop,imgcssd.shop,imguwjsd.sbs,pictbbf.shop,pixbryexa.sbs,picbqqa.sbs,pixbkghxa.sbs,imgmgf.sbs,picbcxvxa.sbs,imguee.sbs,imgmffmv.sbs,imgbqb.sbs,imgbyrev.sbs,imgbncvnv.sbs,pixtryab.shop,imggune.shop,pictryhab.shop,pixbnab.shop,imgbnwe.shop,imgbbnhi.shop,imgnbii.shop,imghqqbg.shop,imgyhq.shop,pixnbrqwg.sbs,pixnbrqw.sbs,picmsh.sbs,imgpke.sbs,picuenr.sbs,imgolemn.sbs,imgoebn.sbs,picnwqez.sbs,imgjajhe.sbs,pixjnwe.sbs,pixkfjtrkf.shop,pixkfkf.shop,pixdfdjkkr.shop,pixdfdj.shop,picnft.shop,pixrqqz.shop,picngt.shop,picjgfjet.shop,picjbet.shop,imgkkabm.shop,imgxabm.shop,imgthbm.shop,imgmyqbm.shop,imgwwqbm.shop,imgjvmbbm.shop,imgjbxzjv.shop,imgjmgfgm.shop,picxnkjkhdf.sbs,imgxxbdf.sbs,imgnngr.sbs,imgjjtr.sbs,imgqbbds.sbs,imgbvdf.sbs,imgqnnnebrf.sbs,imgnnnvbrf.sbs##+js(nowoif, !/prcf.fiyar|themes|pixsense|.jpg/) -imgair.net,imgblaze.net,imgfrost.net,vestimage.site,imgwia.buzz,pixlev.*,imgbaex.store,imgbah.online,imgbaie.online,imgbango.store,imgbier.store,imgbimn.store,imgbqw.store,imgbuba.online,imgbwe.store,imgbxs.online,imgcao.store,imgnwe.online,imgqge.store,imgqxb.online,imgteq.online,imgtex.online,imgtuta.online,imgwqr.online,imgwww.store,imgxza.store,imgezx.sbs,imgbcxsb.store,imgbcxs.store,imgbake.cfd,imgmffg.sbs,imgmffgtr.sbs,imgnbg.sbs,imgngc.sbs,imgnmh.cfd,imgqte.sbs,imguthes.sbs,imgwag.cfd,imgwang.cfd,imgwety.sbs,imgxuh.cfd,imgxytw.cfd,imgycgey.sbs,imgyruy.cfd,imgyusa.cfd,imgyyqey.sbs,imgyer.store,imgxhs.store,imgwekr.online,imgwbfh.online,imgwak.online,imgutry.online,imgutiyu.online,imgutbbn.online,imgubfd.online,imgrei.online,imgqec.online,imgpaiou.online,imgpaiki.online,imgmjj.store,imgfa.store,imgbutrt.store,imgbty.store,imgbdl.store,imgngh.sbs,imgbbfg.pics,imgjhrjjr.pics,imgleko.pics,imgluki.pics,imgnffe.pics,imgnnnf.pics,imgrwqz.pics,imgtweqz.pics,imgxzgf.pics,imgyyeryt.pics,picbbc.one,picbbdr.one,picbest.one,picbhrt.one,picnrrt.one,picqqw.one,picqr.one,picqtwe.one,picsjre.one,piczzaq.one,imgqazx.sbs,imgiruyw.online,picnerr.cfd,pichfer.cfd,picbbeq.cfd,picqaxs.cfd,picxxdd.cfd,picqweff.cfd,pickjsn.cfd,piczzxsw.cfd,picbbbde.cfd,picbdd.cfd,imgbahxg.sbs,imgxune.sbs,imgqklw.shop,pixqkhgrt.shop,pixqbngg.shop,pixqwet.shop,pixmos.shop,imgtgd.shop,imgcsxx.shop,imgqklw.shop,pixqkhgrt.shop,pixqbngg.shop,pixqwet.shop,pixmos.shop,imgtgd.shop,imgcsxx.shop,imgcssd.shop,imguwjsd.sbs,pictbbf.shop,pixbryexa.sbs,picbqqa.sbs,pixbkghxa.sbs,imgmgf.sbs,picbcxvxa.sbs,imguee.sbs,imgmffmv.sbs,imgbqb.sbs,imgbyrev.sbs,imgbncvnv.sbs,pixtryab.shop,imggune.shop,pictryhab.shop,pixbnab.shop,imgbnwe.shop,imgbbnhi.shop,imgnbii.shop,imghqqbg.shop,imgyhq.shop,pixnbrqwg.sbs,pixnbrqw.sbs,picmsh.sbs,imgpke.sbs,picuenr.sbs,imgolemn.sbs,imgoebn.sbs,picnwqez.sbs,imgjajhe.sbs,pixjnwe.sbs,pixkfjtrkf.shop,pixkfkf.shop,pixdfdjkkr.shop,pixdfdj.shop,picnft.shop,pixrqqz.shop,picngt.shop,picjgfjet.shop,picjbet.shop,imgkkabm.shop,imgxabm.shop,imgthbm.shop,imgmyqbm.shop,imgwwqbm.shop,imgjvmbbm.shop,imgjbxzjv.shop,imgjmgfgm.shop,picxnkjkhdf.sbs,imgxxbdf.sbs,imgnngr.sbs,imgjjtr.sbs,imgqbbds.sbs,imgbvdf.sbs,imgqnnnebrf.sbs,imgnnnvbrf.sbs##div[class][style="display: block;"] -@@||pandora.com/web-version/*.json$xhr,1p -*$script,redirect-rule=noopjs,domain=pandora.com -||pandora.com/static/ads/omsdk-$script,redirect=noop.js -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=pandora.com,redirect=google-ima.js:10 -||clk.sh^$3p -hentaipornpics.net##+js(acs, $, zendplace) -hentaipornpics.net##+js(aeld, mouseover, event.triggered) -@@||templateshub.net^$ghide -gaypornhdfree.*##+js(aeld, DOMContentLoaded, adsBlocked) -||giftcardbouns.com^ -*$xhr,3p,redirect-rule=nooptext,domain=podu.me -*/ads$media,redirect-rule=noopmp3-0.1s,domain=podu.me -||podu.me/*/advertisement^$xhr,1p -podu.me##.adv-contanier -programmiedovetrovarli.it##+js(aost, encodeURIComponent, inlineScript) -@@||bolsanow.com^$ghide -funzen.net##+js(nostif, mdpDeBlocker) -acessarlink.online,subdowns.com##+js(nano-stb, , , 0) -subsvip.com##+js(nano-stb, , 10000, 0) -subsvip.com###botaoBloqueio -subsvip.com###botaoLink:style(display: block !important;) -smoner.com##+js(aopr, app_vars.force_disable_adblock) -smoner.com##+js(set, blurred, false) -smoner.com##.form-group:has(> div#box[style="display: inline-block;"]) -*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=smoner.com -javcl.com##+js(nostif, 0x) -javcl.com##+js(nosiif, 0x) -javcl.com###wrapfabtest:style(height:1px !important;width:1px !important) -c1ne.co##+js(aopr, mdpDeBlocker) -thesukan.net##+js(aost, String.prototype.charCodeAt, ai_) -@@||suj.nu^$ghide -suj.nu##.ads -ru-xvideos.me##+js(nostif, innerText, 2000) -*$script,redirect-rule=noopjs,domain=apps2app.com -apps2app.com##.adsbygoogle:style(width:1px!important;height:1px!important;min-width:1px!important;min-height:1px) -apps2app.com##+js(aeld, load, removeChild) -apps2app.com##+js(nostif, $) -apps2app.com##+js(nano-sib, gotolink) -apps2app.com##+js(ra, disabled, button) -apps2app.com##+js(rc, hidden, button) -apps2app.com##button:style(display: inline-block !important) -apps2app.com###timer -toolss.net##+js(acs, eval, replace) -toolss.net##+js(no-fetch-if, googlesyndication) -@@||toolss.net^$ghide -toolss.net##.sidebar_adds -toolss.net##ins.adsbygoogle -||toolss.net^$3p -toolss.net###wpsafe-generate, #wpsafe-link:style(display: block !important;) -toolss.net##div[id^="wpsafe-wait"] -jav.sh##+js(aopr, AaDetector) -jav.sh##+js(aopr, document.regexpSrcDomainPlaceholder) -jav.sh##center > div -*$script,3p,denyallow=cloudflare.com,domain=jav.fm|jav.sh|jav.vin -! scrubson. blogspot.com anti adb + popups -scrubson.blogspot.com##+js(aopr, adcashMacros) -! nsfw aquariumgays .com anti adb + popups -aquariumgays.com##+js(aopr, _cpp) -aquariumgays.com##+js(acs, eval, replace) -! redecanais.bz ads -redecanais.*###guerejo -redecanais.*###guerejoback -redecanais.*###iframeCore____ -allgamesejogos.*,bemestarglobal.*,gamesgo.*,lojadebicicleta.com.br,redecanais.*##[id="colunas"]:style(display: block !important;) -vz.lt##+js(acs, $, adblock) -vz.lt##.banners -javxxx.me###player_3x2_container_inner -*/player/plugins/vast-*.js$script -testlanguages.com##+js(set, sgpbCanRunAds, true) -! nsfw porncomics .me popups -porncomics.me##+js(aopr, open) -paginadanoticia.com.br##+js(aopr, pareAdblock) -paginadanoticia.com.br##.banner-img -watchtvseries.video##+js(nosiif, visibility, 1000) -tr.link##+js(nowoif, ppcnt) -tr.link##+js(ra, data-ppcnt_ads, main[onclick]) -||tr.link/js/sweets.js$script,1p -||tr.link/*/sweet.js$script,1p -||tr.link/push/push.js$script,1p -tr.link##.sweet-alert -tr.link##.sweet-overlay -! celebmasta.com video ad/banner -||celebmasta.com/vast/$1p -celebmasta.com##img.size-medium -celebmasta.com##+js(aopr, dataPopUnder) -faucetdump.com##+js(acs, $, ads) -@@||beti.club^$ghide -@@||superuser.cz^$ghide -orsm.net##+js(aopr, open) -fernsehserien.de##+js(aopr, googlefc) -@@||precitaj.si^$ghide -precitaj.si##ins.adsbygoogle -lg-firmwares.com##+js(nano-sib) -@@||lg-firmwares.com^$ghide -lg-firmwares.com##.cc-window, .buy_on_amazon, .post-ads -animeblix.*##+js(nowoif) -hd-tch.com##+js(acs, addEventListener, nextFunction) -2kspecialist.net##+js(acs, addEventListener, blocker) -digit77.com##+js(acs, addEventListener, Blocker) -! pcmag.com whitespace caused by a necessary exception in EasyList -pcmag.com###adkit_billboard:style(padding-top: 0px!important;) -! kutubistan.blogspot.com/softdroid4u.blogspot.com anti-adb -kutubistan.blogspot.com,softdroid4u.blogspot.com,cosmomaker3.blogspot.com##+js(acs, addEventListener, blocker) -! khmer7.org anti-adb -khmer7.org##+js(acs, addEventListener, blocker) -khmer7.org##+js(aopr, adcashMacros) -! proxyserverlist24.top anti-adb -proxyserverlist24.top##+js(acs, addEventListener, blocker) -proxyserverlist24.top###HTML1, #HTML5, .Feed.widget, [href^="http://www.linkev.com/"], [href^="https://brave.com/"] -! gudangfirmwere.com anti-adb -gudangfirmwere.com##+js(acs, addEventListener, AdBlocker) -! kamerabudaya.com anti-adb -kamerabudaya.com##+js(acs, addEventListener, adblock) -kamerabudaya.com##.ads, div.adsadsense, #HTML1 -gbadamud.blogspot.com##+js(acs, addEventListener, blocker) -gbadamud.blogspot.com##.pinterestjo, .googlejo -javtiful.com##+js(rmnt, script, /adb/i) -javtiful.com##+js(acs, document.addEventListener, adsBlocked) -javtiful.com##+js(acs, String.fromCharCode, 'shift') -javtiful.com##+js(acs, addEventListener, -0x) -javtiful.com##+js(aopr, decodeURI) -javtiful.com##body > div[style*="z-index:"] -javtiful.com##[href^="//"][rel="nofollow norefferer noopener"] -fakyutube.com##+js(nowoif) -fakyutube.com##+js(aopr, __Y) -supervideo.*##+js(aopr, AaDetector) -/tag*.js$script,domain=supervideo.tv|supervideo.one|supervideo.cc -||oussouveem.com^ -! nsfw thisav .com popups -*$script,redirect-rule=noopjs,domain=thisav.com -thisav.com##^script:has-text('shift') -thisav.com##^script:has-text(\'shift\') -||antirgiocub.com^ -||intellipopup.com^$script,redirect=noopjs -||antirgiocub.com^$script,redirect=noopjs -@@||enterinit.com^$ghide -enterinit.com##.bs-wrap-gdpr-law -enterinit.com##*::selection:style(background-color:#338FFF!important) -buzz50.com##+js(acs, jQuery, blocker) -buzz50.com##[href^="http://buzz50.co.uk/"] -||cdn.jsdelivr.net/*/dist/js/wgd-core.min.js$script -premid.app##+js(nosiif, innerHTML) -premid.app##+js(nano-sib, clearInterval) -@@||premid.app/ads/ads$xhr,1p -@@||premid.app^$ghide -premid.app##ins.adsbygoogle -thejobsmovie.com##+js(nostif, adsBlocked) -@@||techdracula.com^$ghide -techdracula.com##ins.adsbygoogle -||bwtsrv.com^$3p -! thememazing .com broken page + other anti adb -! fix mdpDeBlocker + some other anti-adb -||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,xhr,redirect=googlesyndication_adsbygoogle.js:5,domain=~zipextractor.app -||pagead2.googlesyndication.com^$xhr,redirect=noop.js -! regex -/^https?:\/\/(?:www\.|[0-9a-z]{7,10}\.)?[-0-9a-z]{5,}\.com\/\/?(?:[0-9a-f]{2}\/){2,3}[0-9a-f]{32}\.js/$script,xhr,3p,redirect=noop.js,to=com -/^https?:\/\/(?:[a-z]{2}\.)?[0-9a-z]{5,16}\.[a-z]{3,7}\/[a-z](?=[a-z]{0,25}[0-9A-Z])[0-9a-zA-Z]{3,26}\/\d{4,5}(?:\?[_v]=\d+)?$/$script,3p,match-case,redirect=noop.js -/^https?:\/\/(?:[a-z]{2}\.)?[0-9a-z]{7,16}\.com\/[a-z](?=[a-z]{0,25}[0-9A-Z])[0-9a-zA-Z]{3,26}\/\d{4,5}\??(?:_=\d+|v=\d)?$/$frame,xhr,popup,3p,match-case,to=com -/^https?:\/\/(?:[a-z]{2}\.)?[0-9a-z]{7,16}\.website\/[a-z](?=[a-z]{0,25}[0-9A-Z])[0-9a-zA-Z]{3,26}\/\d{4,5}\??(?:_=\d+|v=\d)?$/$frame,xhr,popup,3p,match-case -/\/t\/[0-9]{3}\/[0-9]{3}\/a[0-9]{4,9}\.js$/$script -/^https?:\/\/[0-9a-z]{13,14}\.cloudfront\.net\/\?[a-z]{3,5}=\d{6,7}$/$script,xhr,3p -/^https:\/\/[0-9a-f]{10}\.[0-9a-f]{10}\.com\/[0-9a-f]{32}\.js$/$script,3p,to=com -! globalThis -/^https?:\/\/[0-9a-f]{50,}\.s3\.amazonaws\.com\/[0-9a-f]{10}$/$xhr,3p -/^https?:\/\/s3\.us-east-1\.amazonaws\.com\/[0-9a-f]{50,}\/[0-9a-f]{10}$/$xhr,3p -! propeller new variants -/^https?:\/\/[a-z]{8,15}\.top(\/(?:\d{1,5}|0NaN|articles?|browse|index|movie|news|pages?|static|view|web|wiki)){1,4}(?:\.html|\/)$/$frame,3p,match-case -/^https?:\/\/[a-z]{8,15}\.top\/(?!api|available|team)[a-z]{4,}\.json$/$xhr,3p,match-case -/^https?:\/\/[a-z]{8,15}\.top\/[-a-z]{4,}\.css\?aHR0c[\/0-9a-zA-Z]{33,}=?=?$/$css,3p,match-case -/^https?:\/\/[a-z]{8,15}\.top\/[a-z]{4,}\.png\?aHR0c[\/0-9a-zA-Z]{33,}=?=?$/$image,3p,match-case -/^https?:\/\/[a-z]{8,15}\.xyz(\/(?:\d{1,5}|0NaN|articles?|browse|index|movie|news|pages?|static|view|web|wiki)){1,4}(?:\.html|\/)$/$frame,3p,match-case -/^https?:\/\/[a-z]{8,15}\.xyz\/(?!api|available|team)[a-z]{4,}\.json$/$xhr,3p,match-case -/^https?:\/\/[a-z]{8,15}\.xyz\/[-a-z]{4,}\.css\?aHR0c[\/0-9a-zA-Z]{33,}=?=?$/$css,3p,match-case -/^https?:\/\/[a-z]{8,15}\.xyz\/[a-z]{4,}\.png\?aHR0c[\/0-9a-zA-Z]{33,}=?=?$/$image,3p,match-case -.top/event|$xhr,3p -.xyz/event|$xhr,3p -! hilltopads -/^https?:\/\/[-a-z]{6,}\.com?\/[a-d][-\.\/_A-Za-z][DHWXm][-\.\/_A-Za-z][59FVZ][-\.\/_A-Za-z][6swyz][-\.\/_A-Za-z][-\/_0-9a-zA-Z][-\.\/_A-Za-z][-\/_0-9a-zA-Z]{22,162}$/$script,xhr,3p,match-case,to=co|com -/^https?:\/\/[-a-z]{6,}\.info\/[a-d][-\.\/_A-Za-z][DHWXm][-\.\/_A-Za-z][59FVZ][-\.\/_A-Za-z][6swyz][-\.\/_A-Za-z][-\/_0-9a-zA-Z][-\.\/_A-Za-z][-\/_0-9a-zA-Z]{22,162}$/$script,xhr,3p,match-case,to=info -/^https?:\/\/[-a-z]{6,}\.pro\/[a-d][-\.\/_A-Za-z][DHWXm][-\.\/_A-Za-z][59FVZ][-\.\/_A-Za-z][6swyz][-\.\/_A-Za-z][-\/_0-9a-zA-Z][-\.\/_A-Za-z][-\/_0-9a-zA-Z]{22,162}$/$script,xhr,3p,match-case,to=pro -/^https?:\/\/[-a-z]{6,}\.xyz\/[a-d][-\.\/_A-Za-z][DHWXm][-\.\/_A-Za-z][59FVZ][-\.\/_A-Za-z][6swyz][-\.\/_A-Za-z][-\/_0-9a-zA-Z][-\.\/_A-Za-z][-\/_0-9a-zA-Z]{22,162}$/$script,xhr,3p,match-case,to=xyz -! Defuse pointless online tool too causing hardship to volunteers -*$3p,domain=d3ward.github.io -@@*$redirect-rule,domain=d3ward.github.io -d3ward.github.io##.textads -! As of 2020-04-09, new filters will be added to year-based sublists -! *** filters/filters-2024.txt *** -! START: Rules from filters.txt -360haven.com###pageWrapper:style(display: initial !important;) -360haven.com###notices -360haven.com###ad_global_above_footer -imagefap.com##+js(acs, $, popCookie) -alliptvlinks.com##+js(aeld, load, ads) -alliptvlinks.com##+js(aopr, eazy_ad_unblocker) -alliptvlinks.com###arlinablock -alliptvlinks.com##body:style(overflow: auto !important) -alliptvlinks.com##+js(no-xhr-if, /doubleclick|googlesyndication/, length:10) -||alliptvlinks.com/tktk-content/plugins/$script,1p,replace=/\bconst now.+?, 100/clearInterval(timer);resolve();}, 100/gms -apkmirror.com#@#.gooWidget -apkmirror.com#@#.google-ad-leaderboard -apkmirror.com##.gooWidget:style(opacity: 0 !important; visibility: collapse !important;) -apkmirror.com##.google-ad-leaderboard:style(opacity: 0 !important;) -apkmirror.com##[href^="https://bstk.me/"] -apkmirror.com##div.appRow[style] -apkmirror.com##.advertisement-text -apkmirror.com##.downloadCountdown -apkmirror.com##.OUTBRAIN -apkmirror.com##[id^="adtester-container"]:style(position: absolute !important;) -apkmirror.com##.ains -apkmirror.com##^script:has-text(document.createTextNode) -!#if !cap_html_filtering -apkmirror.com##+js(rmnt, script, document.createTextNode) -!#endif -vidsrc.*##+js(nosiif, /0x|sandCheck/) -vidsrc.*##+js(nowoif) -vidsrc.*##+js(aopr, __Y) -vidsrc.*##+js(aopr, AaDetector) -vidsrc.*###pop_asdf -||katebugs.com^ -||vidsrc.pro/uwu-js^$script -embed.smashystream.com###addiv -streambucket.net##+js(acs, EventTarget.prototype.addEventListener, /runPop|aclib|window\.open/) -streambucket.net##+js(acs, atob, /popundersPerIP[\s\S]*?Date[\s\S]*?getElementsByTagName[\s\S]*?insertBefore/) -kokostream.net##+js(nowoif) -*$script,3p,denyallow=gstatic.com,domain=streambucket.net -player.smashy.stream##.react-responsive-modal-root -binged.*##+js(nowoif) -*$script,domain=pch.com,redirect=noopjs,3p -@@||pchassets.com^$script,domain=pch.com -@@||ajax.googleapis.com/ajax/$script,domain=pch.com -@@||gstatic.com^$script,domain=pch.com -@@||imasdk.googleapis.com^$script,domain=pch.com -@@||pch.com^$ghide -@@||content.jwplatform.com^$script,domain=pch.com -@@||pch.com/vendor/googleanalytics/js/googleanalytics.js$script,1p -@@||code.jquery.com^$script,domain=pch.com -@@||cdnjs.cloudflare.com/ajax/$script,domain=pch.com -@@||sts.eccmp.com/sts/scripts/conversen-SDK.js$script,domain=pch.com -@@||static.topixcdn.com^$script,domain=pch.com -@@||tags.tiqcdn.com/utag/*/utag.js$script,domain=pch.com -||cloudfront.net/ads/*$script,redirect=noopjs,domain=cbs.com -||cloudfront.net/ads/img/*$image,redirect=1x1.gif,domain=cbs.com -cbs.com,paramountplus.com##+js(set, hasAdBlocker, false) -*$3p,script,redirect-rule=noopjs,domain=cbs.com|paramountplus.com -@@||s0.2mdn.net/instream/html5/ima3.js$script,domain=cbs.com|paramountplus.com -||ad.doubleclick.net^$image,redirect=1x1.gif,domain=cbs.com|paramountplus.com -@@||imasdk.googleapis.com/js/sdkloader/ima3_dai.js$script,domain=cbs.com|paramountplus.com -@@||pubads.g.doubleclick.net/ondemand/*/content/*/streams$xhr,domain=cbs.com|paramountplus.com -||pubads.g.doubleclick.net/ondemand/*/content/*/vid/*/streams/*/time-events.json$important,domain=cbs.com|paramountplus.com -xstory-fr.com##+js(aeld, popstate) -xstory-fr.com##+js(nostif, location.href) -xvideos.com,xvideos2.com##+js(nowoif) -xvideos.com,xvideos2.com##+js(aeld, click, ShouldShow) -||xvideos.com/lvcsm/abck-banners/ -1337x.*##+js(rmnt, script, style) -1337x.*##+js(aost, document.createElement, _0x) -1337x.*,x1337x.*##+js(nowoif, , 1) -1337x.*##+js(aopr, afScript) -1337x.*##+js(nostif, adb) -1337x.*##^script:has-text(admc) -x1337x.*##+js(acs, setTimeout, admc) -1337x.*,x1337x.*##.stream-torrent -1337x.*,x1337x.*##.link-info-stream -1337x.*##.download-links-dontblock > LI:has-text(Anon) -1337x.*##.download-links-dontblock > LI:has-text(Stream) -1337x.*##a[href^="/redirectmusic.php"] -1337x.*##a[href^="/spyoff"] -1337x.*##a[href*="//steepto.com/"] -1337x.*##[href*="vpn"] -1337x.*##[onclick*="vpn"] -1337x.*##[href^="/anoy"] -1337x.*,x1337x.*##.no-top-radius div > a[href]:has-text(VPN) -/^https:\/\/x?1337x\.(?:[0-9a-z]{3,9}\.)?[a-z]{2,4}\/(?:css\/)?(?:images\/)?[0-9a-zA-Z]+\.(?:gif|jpe?g|png)/$image,1p,domain=1337x.*|1337x.g3g.*|x1337x.*|unblockit.* -||1337x.*/sw.js^ -13377x.*##+js(acs, decodeURI, decodeURIComponent) -1337x.*,x1337x.*##+js(nowebrtc) -x1337x.eu##.mgbox -1337x.*##+js(aopr, AaDetector) -@@||torrage.info/torrent.php$popup,domain=1337x.to -1337x.*,x1337x.*##+js(aeld, popstate) -1337x.*,x1337x.*##+js(aost, navigator, FingerprintJS) -1337x.*,x1337x.*##+js(aost, localStorage, /https:\/\/x?1337x\.[a-z]+\/\S+\.js/) -1337x.*,x1337x.*##+js(aost, onload, /https:\/\/x?1337x\.[a-z]+\/\S+\.js/) -/ma.js^$script,domain=1337x.*|x1337x.* -/mm.js^$script,domain=1337x.*|x1337x.* -cheatcloud.cc,cheater.ninja,cheatermad.com,cheatsquad.gg##+js(nano-sib, clearInterval) -cheatsquad.gg##+js(nosiif, visibility, 1000) -cheatermad.com##+js(nostif, offset) -@@||cheatsquad.gg^$script,xhr,1p -cheatsquad.gg##.tooltip::before -cheatsquad.gg##.tooltip::after -updown.link##+js(nano-stb, startDownload, 8000) -@@||work.ink^$ghide -*$frame,redirect-rule=noopframe,domain=work.ink -*$script,domain=work.ink,redirect-rule=noopjs -@@||work.ink^$xhr,1p -workink.click##+js(no-fetch-if, cloudfront) -work.ink##.no-overlay -work.ink##+js(ra, href, [href*="jump"], stay) -@@||cdn.thisiswaldo.com/static/js/$script,domain=work.ink -@@||doubleverify.com^$xhr,domain=work.ink -||nextmillmedia.com^ -workink.click##+js(nowoif, !direct) -work.ink##+js(nosiif, a0b) -work.ink##+js(no-fetch-if, /outbrain|criteo|thisiswaldo|media\.net|ohbayersbur|adligature|quantserve|srvtrck|\.css|\.js/) -work.ink##body > div:has(> a#link) -work.ink##.opera-container:style(visibility: collapse !important;) -work.ink##img[alt="Buff Banner"]:style(visibility: collapse !important;) -hollaforums.com,powforums.com,supforums.com##+js(no-xhr-if, googlesyndication) -reuters.com##[class^="leaderboard-space"] -reuters.com##[class^="workspace-article-banner"] -reuters.com##div[data-testid="Leaderboard"] -reuters.com##div[class^="regular-article-layout__inner_"]:has(> div[data-testid="StickyRail"]) -bing.com#@#.b_ad -bing.com#@#.b_adLastChild -bing.com#@#.pa_sb -bing.com##.b_adLastChild:style(position: absolute !important; top: -9999px !important;) -bing.com##.b_ad:style(position: absolute !important; top: -9999px !important;) -bing.com##.pa_sb:style(position: absolute !important; top: -9999px !important;) -bing.com##.b_restorableLink:remove() -bing.com##.tob_calcontainer > .slide:has(.rtb_ad_caritem_mvtr) -bing.com##.b_ans:has([class^="xm_"][class*="_ansCont"]) -||assets.msn.com/service/news/feed/pages/binghp?$xhr,3p,removeparam=wpopageid,domain=www.bing.com -ville-ideale.fr##+js(nostif, contrformpub) -@@||crackle.com^$cname -*.mp4$media,domain=crackle.com -||media.truex.com/integration/vpaid/com.truex.TrueXRenderer.js$script,domain=crackle.com,redirect=noopjs -crackle.com##.vjs-ad-break-marker-adjustment -crackle.com##+js(json-prune-fetch-response, data.device.adsParams data.device.adSponsorshipTemplate, , propsToMatch, url:/appconfig) -||heartbeat.crackle.com/tp.png -fmovies.*##+js(nowoif) -fmovies.*##+js(aopr, mm) -fmovies.*##+js(set, console.clear, undefined) -! fmovies.ps popup -fmovies.*,f2movies.to###modalshare -fmovies.*,f2movies.to##.modal-backdrop -fmovies.*,f2movies.to##body.modal-open:style(overflow: auto!important) -fmovies.*###gift-middle -fmovies.*###gift-top -fmovies.*##+js(acs, document.write, innerWidth) -||iamcdn.net/players/player*.*mins.js$script,domain=freeplayervideo.com|nazarickol.com|player-cdn.com -! abysscdn.com,freeplayervideo.com,nazarickol.com,player-cdn.com##+js(set, detectAdBlockAll, noopFunc) -*$image,redirect-rule=32x32.png,domain=freeplayervideo.com|nazarickol.com|player-cdn.com -freeplayervideo.com,nazarickol.com,player-cdn.com,playhydrax.com##+js(set, console.clear, undefined) -freeplayervideo.com,nazarickol.com,player-cdn.com,playhydrax.com##+js(ra, style, #over) -freeplayervideo.com,nazarickol.com,player-cdn.com,playhydrax.com##+js(nowoif, /^/, 1) -jav.guru##.inside-right-sidebar > aside.widget_custom_html -jav.guru###text-76 -jav.guru###text-92 -jav.guru###text-93 -||feedyourtralala.com^ -/cdn-cgi/trace$xhr,1p,domain=abysscdn.com|playhydrax.com -abysscdn.com##div[style*="z-index:100000"] -##div[style="width:100%;height:auto;position:absolute;z-index:100000;justify-content:center;align-items:center;display:flex;top:0px;bottom:0px;background:rgba(0, 0, 0, .6);user-select: none;"] -abysscdn.com##+js(aopr, document.onclick) -abysscdn.com##+js(aopr, document.ontouchend) -abysscdn.com##.playover -@@*$ghide,domain=kimcartoon.*|kisscartoon.se|kc.linksgen.com -kimcartoon.*###disAdb1 -kimcartoon.*###disAdb2 -! kimcartoon.*##.adsbygoogle -kimcartoon.*,kisscartoon.se,kc.linksgen.com##+js(no-xhr-if, /\/ads\/advert/) -kimcartoon.*##+js(nowoif) -kimcartoon.*##+js(aopw, Fingerprint2) -! kimcartoon.*,kisscartoon.se,kc.linksgen.com##div[style*="width: 300px; height: 250px"] -! kimcartoon.*,kisscartoon.se,kc.linksgen.com##.kcAds1 -||kimcartoon.*/Ads/$frame -*$script,redirect-rule=noopjs,domain=kimcartoon.*|kimcartoon.unblockit.*|kisscartoon.se|kc.linksgen.com -*$script,3p,denyallow=blogger.com|bootstrapcdn.com|bunnycdn.ru|cackle.me|cdn.ampproject.org|cdn.staticfile.org|chatango.com|cloudflare.com|fastly.net|disqus.com|disquscdn.com|dmca.com|ebacdn.com|facebook.net|fastcomments.com|fastlylb.net|fbcdn.net|fluidplayer.com|fontawesome.com|github.io|google-analytics.com|google.com|googleapis.com|googleoptimize.com|googletagmanager.com|gstatic.com|hcaptcha.com|hwcdn.net|img.cartooncdn.xyz|instagram.com|jquery.com|jsdelivr.net|jwpcdn.com|jwplatform.com|media-imdb.com|plyr.io|polyfill.io|raincaptcha.com|recaptcha.net|sharecast.ws|shrink.pe|statically.io|twimg.com|twitter.com|ulogin.ru|unpkg.com|userapi.com|vidazoo.com|vk.com|vuukle.com|wp.com|x.com|yastatic.net|youtube.com|ytimg.com|zencdn.net,domain=kimcartoon.* -||cartooncdn.xyz/*/vast/$script,3p,domain=kimcartoon.* -! ||kimcartoon.*/Scripts/ozzz.min.js -*$ping,domain=buktube.com|fullxh.com|galleryxh.site|hamsterix.*|megaxh.com|movingxh.world|seexh.com|taoxh.life|unlockxh4.com|xhaccess.com|xhadult2.com|xhadult3.com|xhadult4.com|xhadult5.com|xhamster.*|xhamster10.*|xhamster11.*|xhamster12.*|xhamster13.*|xhamster14.*|xhamster15.*|xhamster16.*|xhamster17.*|xhamster18.*|xhamster19.*|xhamster20.*|xhamster2.*|xhamster3.*|xhamster4.*|xhamster42.*|xhamster46.com|xhamster5.*|xhamster7.*|xhamster8.*|xhbig.com|xhbranch5.com|xhday.com|xhday1.com|xhmoon5.com|xhplanet1.com|xhplanet2.com|xhreal2.com|xhreal3.com|xhtab2.com|xhtab4.com|xhtree.com|xhvictory.com|xhwebsite.com|xhwebsite2.com|xhwide1.com -://collector.$domain=buktube.com|fullxh.com|galleryxh.site|hamsterix.*|megaxh.com|movingxh.world|seexh.com|taoxh.life|unlockxh4.com|xhaccess.com|xhadult2.com|xhadult3.com|xhadult4.com|xhadult5.com|xhamster.*|xhamster10.*|xhamster11.*|xhamster12.*|xhamster13.*|xhamster14.*|xhamster15.*|xhamster16.*|xhamster17.*|xhamster18.*|xhamster19.*|xhamster20.*|xhamster2.*|xhamster3.*|xhamster4.*|xhamster42.*|xhamster46.com|xhamster5.*|xhamster7.*|xhamster8.*|xhbig.com|xhbranch5.com|xhday.com|xhday1.com|xhmoon5.com|xhplanet1.com|xhplanet2.com|xhreal2.com|xhreal3.com|xhtab2.com|xhtab4.com|xhtree.com|xhvictory.com|xhwebsite.com|xhwebsite2.com|xhwide1.com -/api/models?userId=$xhr,domain=buktube.com|fullxh.com|galleryxh.site|hamsterix.*|megaxh.com|movingxh.world|seexh.com|taoxh.life|unlockxh4.com|xhaccess.com|xhadult2.com|xhadult3.com|xhadult4.com|xhadult5.com|xhamster.*|xhamster10.*|xhamster11.*|xhamster12.*|xhamster13.*|xhamster14.*|xhamster15.*|xhamster16.*|xhamster17.*|xhamster18.*|xhamster19.*|xhamster20.*|xhamster2.*|xhamster3.*|xhamster4.*|xhamster42.*|xhamster46.com|xhamster5.*|xhamster7.*|xhamster8.*|xhbig.com|xhbranch5.com|xhday.com|xhday1.com|xhmoon5.com|xhplanet1.com|xhplanet2.com|xhreal2.com|xhreal3.com|xhtab2.com|xhtab4.com|xhtree.com|xhvictory.com|xhwebsite.com|xhwebsite2.com|xhwide1.com -/api/models/vast$xhr,domain=buktube.com|fullxh.com|galleryxh.site|hamsterix.*|megaxh.com|movingxh.world|seexh.com|taoxh.life|unlockxh4.com|xhaccess.com|xhadult2.com|xhadult3.com|xhadult4.com|xhadult5.com|xhamster.*|xhamster10.*|xhamster11.*|xhamster12.*|xhamster13.*|xhamster14.*|xhamster15.*|xhamster16.*|xhamster17.*|xhamster18.*|xhamster19.*|xhamster20.*|xhamster2.*|xhamster3.*|xhamster4.*|xhamster42.*|xhamster46.com|xhamster5.*|xhamster7.*|xhamster8.*|xhbig.com|xhbranch5.com|xhday.com|xhday1.com|xhmoon5.com|xhplanet1.com|xhplanet2.com|xhreal2.com|xhreal3.com|xhtab2.com|xhtab4.com|xhtree.com|xhvictory.com|xhwebsite.com|xhwebsite2.com|xhwide1.com -||xhcdn.com/promo/$image,domain=buktube.com|fullxh.com|galleryxh.site|hamsterix.*|megaxh.com|movingxh.world|seexh.com|taoxh.life|unlockxh4.com|xhaccess.com|xhadult2.com|xhadult3.com|xhadult4.com|xhadult5.com|xhamster.*|xhamster10.*|xhamster11.*|xhamster12.*|xhamster13.*|xhamster14.*|xhamster15.*|xhamster16.*|xhamster17.*|xhamster18.*|xhamster19.*|xhamster20.*|xhamster2.*|xhamster3.*|xhamster4.*|xhamster42.*|xhamster46.com|xhamster5.*|xhamster7.*|xhamster8.*|xhbig.com|xhbranch5.com|xhday.com|xhday1.com|xhmoon5.com|xhplanet1.com|xhplanet2.com|xhreal2.com|xhreal3.com|xhtab2.com|xhtab4.com|xhtree.com|xhvictory.com|xhwebsite.com|xhwebsite2.com|xhwide1.com -*$3p,popunder,domain=buktube.com|fullxh.com|galleryxh.site|hamsterix.*|megaxh.com|movingxh.world|seexh.com|taoxh.life|unlockxh4.com|xhaccess.com|xhadult2.com|xhadult3.com|xhadult4.com|xhadult5.com|xhamster.*|xhamster10.*|xhamster11.*|xhamster12.*|xhamster13.*|xhamster14.*|xhamster15.*|xhamster16.*|xhamster17.*|xhamster18.*|xhamster19.*|xhamster20.*|xhamster2.*|xhamster3.*|xhamster4.*|xhamster42.*|xhamster46.com|xhamster5.*|xhamster7.*|xhamster8.*|xhbig.com|xhbranch5.com|xhday.com|xhday1.com|xhmoon5.com|xhplanet1.com|xhplanet2.com|xhreal2.com|xhreal3.com|xhtab2.com|xhtab4.com|xhtree.com|xhvictory.com|xhwebsite.com|xhwebsite2.com|xhwide1.com -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##.thumb-list > .video-thumb:style(margin-right: 0px !important;) -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##.video-thumb[class*="__look-like-item"] -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##div[class*="sp-b"] -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##[class*="sp-l"] -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##[class*="containerBottomSpot"] -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##.xp-banner-pause -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##div[class^="yld-"] -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##.xp-banner-bottom + button -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##div[class$="-pauseSpotContainer"] -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##div[class*="cams-wgt"] -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##div[data-testid="right-banner-section"] -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##div[class*="widget-section"] -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##div[class^="VIq-"] -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##div[class*="clipstore-bottom"] -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##+js(set, initials.yld-pdpopunder, '') -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##+js(set-cookie, ts_popunder, true, , reload, 1) -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##+js(rpnt, script, popunder, , condition, popunder, stay, 1) -*$doc,csp=worker-src 'none',domain=buktube.com|fullxh.com|galleryxh.site|hamsterix.*|megaxh.com|movingxh.world|seexh.com|taoxh.life|unlockxh4.com|xhaccess.com|xhadult2.com|xhadult3.com|xhadult4.com|xhadult5.com|xhamster.*|xhamster10.*|xhamster11.*|xhamster12.*|xhamster13.*|xhamster14.*|xhamster15.*|xhamster16.*|xhamster17.*|xhamster18.*|xhamster19.*|xhamster2.*|xhamster20.*|xhamster3.*|xhamster4.*|xhamster42.*|xhamster46.com|xhamster5.*|xhamster7.*|xhamster8.*|xhbig.com|xhbranch5.com|xhday.com|xhday1.com|xhmoon5.com|xhplanet1.com|xhplanet2.com|xhreal2.com|xhreal3.com|xhtab2.com|xhtab4.com|xhtree.com|xhvictory.com|xhwebsite.com|xhwebsite2.com|xhwide1.com -! xh interstitial page -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##+js(cookie-remover, video_view_count) -||xhamsterpremium.com^$3p -||xhamsterlive.com^$3p -*$frame,3p,denyallow=google.com|xh.video,domain=buktube.com|fullxh.com|galleryxh.site|hamsterix.*|megaxh.com|movingxh.world|seexh.com|taoxh.life|unlockxh4.com|xhaccess.com|xhadult2.com|xhadult3.com|xhadult4.com|xhadult5.com|xhamster.*|xhamster10.*|xhamster11.*|xhamster12.*|xhamster13.*|xhamster14.*|xhamster15.*|xhamster16.*|xhamster17.*|xhamster18.*|xhamster19.*|xhamster20.*|xhamster2.*|xhamster3.*|xhamster4.*|xhamster42.*|xhamster46.com|xhamster5.*|xhamster7.*|xhamster8.*|xhbig.com|xhbranch5.com|xhday.com|xhday1.com|xhmoon5.com|xhplanet1.com|xhplanet2.com|xhreal2.com|xhreal3.com|xhtab2.com|xhtab4.com|xhtree.com|xhvictory.com|xhwebsite.com|xhwebsite2.com|xhwide1.com -!#if env_mobile -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##.thumb-list-mobile-item--widget -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##.no-ts-initiailize -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##.video-page__layout-ad -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##.VDkO-px -buktube.com,fullxh.com,galleryxh.site,hamsterix.*,megaxh.com,movingxh.world,seexh.com,taoxh.life,unlockxh4.com,xhaccess.com,xhadult2.com,xhadult3.com,xhadult4.com,xhadult5.com,xhamster.*,xhamster1.*,xhamster10.*,xhamster11.*,xhamster12.*,xhamster13.*,xhamster14.*,xhamster15.*,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.*,xhamster20.*,xhamster2.*,xhamster3.*,xhamster4.*,xhamster42.*,xhamster46.com,xhamster5.*,xhamster7.*,xhamster8.*,xhbig.com,xhbranch5.com,xhday.com,xhday1.com,xhmoon5.com,xhplanet1.com,xhplanet2.com,xhreal2.com,xhreal3.com,xhtab2.com,xhtab4.com,xhtree.com,xhvictory.com,xhwebsite.com,xhwebsite2.com,xhwide1.com##.VDkO-pxpremium-n-overlay -!#endif -/api/models/vast?userId=*&adblocked=$xhr,1p -&spotPageType=*&statsUID=$frame,xhr -/mlxhl/v*/for-page?$xhr -xhamster20.*##.yxd-jbanner -xhamster20.*##.player-add-overlay -||xhamster20.*/api/*/vast -play.nova.bg##+js(no-xhr-if, googlesyndication) -@@||thehouseofportable.com^$ghide -@@||thehouseofportable.com^$script,1p -@@*$xhr,domain=thehouseofportable.com -*$script,redirect-rule=noopjs,domain=thehouseofportable.com -thehouseofportable.com##ins.adsbygoogle -thehouseofportable.com###mt > [onclick][data-user] -thehouseofportable.com##a[href*="/aff.php?aff="] -||thehouseofportable.com/wp-content/uploads/2020/06/purevpn.jpg$image -thehouseofportable.com##+js(nano-stb, 0x, *) -@@||dancewave.online^$script,1p -||dancewave.online/js/dwab.js$script,1p,important -brainly.*,eodev.com##+js(nostif, trigger, 0) -@@*$ghide,domain=brainly.*|eodev.com -brainly.*##[class^="BrainlyAdsPlaceholder"] -brainly.*,eodev.com##.brn-ads-box -brainly.*,eodev.com##.js-scroll-to-unlock-section.brn-kodiak-answer-redesigned__unlock -brainly.*,eodev.com##[data-testid="brainly_ads_placeholder"] -brainly.*##+js(aopr, __brn_private_mode) -*$script,redirect-rule=noopjs,domain=linkneverdie.net -linkneverdie.net###adsqc -linkneverdie.net##.quangcao -linkneverdie.net##.show.fade.modal-backdrop -linkneverdie.net##body:style(overflow: auto !important;) -linkneverdie.net#@#+js(nostif, t) -@@||quantumdex.io^$script,domain=linkneverdie.net -porntrex.com###index-link -*$script,3p,denyallow=blazingcdn.net|cdntrex.com|fastly.net|google.com|googleapis.com|gstatic.com|h-cdn.com|stackpathcdn.com,domain=porntrex.com -porntrex.com##+js(disable-newtab-links) -||porndoe.com/movie/preroll/*$media,redirect=noopmp4-1s,domain=porntrex.com -||porndoe.com/sitePreRoll/ -porndoe.com##.bunny-container:style(display: flex !important;) -porndoe.com##.bunny-button-resume:style(display: grid !important;) -porndoe.com##.bunny-icon[disabled]:remove-attr(disabled) -torrentdownloads.*##+js(nowebrtc) -torrentdownload.*,torrentdownloads.*##+js(acs, adcashMacros) -torrentdownload.*,torrentdownloads.*##[href^="/td/?"] -torrentdownload.*##+js(rmnt, script, shown_at) -torrentdownload.*##+js(acs, JSON.parse, break;case) -torrentdownload.*##+js(nowoif) -torrentdownload.*##[href^="/bing."] -torrentdownload.*##[href^="/get.php"] -torrentdownload.*##[href^="https://goo.gl/"] -torrentdownload.*##TR:has-text(Stream:) -torrentdownload.*##.table2:has-text(Sponsored) -||torrentdownload.*/*.gif$image -katfile.com##+js(acs, document.createElement, onerror) -katfile.com##+js(nano-stb) -katfile.com##+js(nowoif) -katfile.com##+js(set, adblock, false) -katfile.com###container > p > a[href*="?"]:has(> img) -||katfile.com/images/dlli.png$image -homemoviestube.com##+js(aopr, decodeURI) -homemoviestube.com##.film-aside-ads -homemoviestube.com##+js(aeld, click, clickCount) -&vast=$xhr,domain=homemoviestube.com -||homemoviestube.com/b4b8.js -file-upload.*##+js(noeval-if, ppu) -file-upload.*##+js(nowoif) -file-upload.*##+js(acs, document.getElementById, undefined) -file-upload.*##+js(acs, document.documentElement, break;case $.) -3upload.com,file-up.org,file-upload.*##+js(acs, getCookie, setCookie) -file-upload.*##ins.adsbygoogle -||file-upload.com^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation -file-upload.com##^meta[http-equiv="refresh"] -file-upload.*##+js(aopw, Fingerprint2) -||file-upload.*^$frame -/werbebanner-$badfilter -oploverz.*##+js(acs, $, popup) -oploverz.*##+js(nostif, popup) -oploverz.*###overplay -*.gif$domain=oploverz.*,image -*$script,3p,denyallow=cloudflare.com|disqus.com|disquscdn.com|facebook.com|fastlylb.net|fbcdn.net|facebook.net|googleapis.com|jsdelivr.net|statically.io|githack.com|gitcdn.xyz|gitcdn.link|gitcdn.herokuapp.com|arc.io|fluidplayer.com,domain=oploverz.* -*$xhr,redirect-rule=noop.txt,domain=tunein.com -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,3p,redirect=google-ima.js,domain=tunein.com,important -||imasdk.googleapis.com/pal/sdkloader/pal.js$script,3p,redirect=noopjs,domain=tunein.com,important -readcomiconline.*##+js(no-xhr-if, /adskeeper|googlesyndication/) -readcomiconline.*##+js(aopr, adblockDetector) -||vliplatform.com^$3p -readcomiconline.*##.adsbyvli:upward(div[style^="width: 300px; height: 250px"]) -readcomiconline.*##.divCloseBut -*$script,3p,denyallow=cloudfront.net|disqus.com|disquscdn.com|edgecastcdn.net|facebook.net|fastlylb.net|fbcdn.net|twitter.com|x.com,domain=readcomiconline.* -readcomiconline.*##+js(aeld, mousedown, localStorage) -/ads/bid300*.aspx -lightnovelworld.com##+js(set, importFAB, undefined) -@@||lightnovelworld.com^$ghide -lightnovelworld.com##.adsbox -lightnovelworld.com##ins.adsbygoogle -lightnovelworld.com##.vl-ad -lightnovelworld.*##.uaxcKxir -lightnovelcave.com##[data-defid] -lightnovelcave.com###lnvidcontainer -pixiv.net###js-mount-point-header.with-ad:style(min-height: auto !important) -pixiv.net##._illust-upload + div[style*="968px;"][style*="170px;"] -pixiv.net##div[class^="sc-"] > div[class^="sc-"]:has(> div[style*="width: 728px;"]:only-child > iframe[name="footer"][width="728"][height="90"]):matches-css(padding-bottom: 56px) -pixiv.net##iframe[name="dashboard_home"]:upward(div[class^="sc-"][span="1"]) -pixiv.net##div[style="margin: 48px auto 8px; width: 728px; line-height: 0; font-size: 0px;"] -pixiv.net##div[style^="margin-left:"]:has(> iframe[name="header"][width="468"][height="60"]) -pixiv.net##div[style^="font-size:"]:has(> iframe[name="rectangle"][width="300"]) -pixiv.net##.gtm-toppage-thumbnail-illustration-recommend-works-zone li:has(> div > iframe[name="topbranding_rectangle"][width="300"][height="250"]) -pixiv.net##.gtm-toppage-thumbnail-manga-recommend-works-zone li:has(> iframe[name="comic"][width="184"][height="232"]) -pixiv.net##main > section > div > div:has(> iframe[name][width="500"][height="520"]) -pixiv.net##section > div[class^="sc-"]:last-child:has(> div[style*="width: 728px;"]:only-child > iframe[name="footer"][width="728"][height="90"]):matches-css(margin-bottom: -16px) -pixiv.net##section ul > li:has(> iframe[name="infeed"]) -mercurynews.com##+js(set, CnnXt.Event.fire, noopFunc) -mercurynews.com##.dfp-ad -@@||mercurynews.com^$ghide -/wp-content/client-mu-plugins/src/Paywall/static/js/connext-paywall-analytics.min.js -||cdn.http.anno.channel4.com/m/1/$media,domain=uktvplay.uktv.co.uk -u.co.uk,uktvplay.co.uk,uktvplay.uktv.co.uk##+js(no-xhr-if, fwmrm.net) -u.co.uk,uktvplay.co.uk,uktvplay.uktv.co.uk##+js(no-fetch-if, fwmrm.net) -! mail.yahoo.com stuff -mail.yahoo.com##[data-test-id="right-rail-ad"] -mail.yahoo.com##[data-test-id="video-container"] -mail.yahoo.com##[aria-labelledby^="bottom-sticky-pencil-ad-brand-name"] -sports.yahoo.com##div[id^="mrt-node-"][id$="-Ad"] -in.search.yahoo.com##.reg:has([href*="aclick"]) -in.search.yahoo.com##.reg:has([href*="clk"]) -yahoo.com##.ys-mobileFeaturedAd -||cdn.yahoomedia.net/creatives/*/BlackFriday -yahoo.com###HPSPON-ad -||edgecast-vod.yimg.com/$media,redirect=noopmp3-0.1s,domain=yahoo.com -www.yahoo.com##.sticky[class*="top-"]:has(style) -www.yahoo.com##[id^="mid-center-ad"] -www.yahoo.com##body#news-content-app li:has(.inset-0) -jpopsingles.eu##+js(nano-sib, downloadTimer) -jpopsingles.eu##+js(acs, document.createElement, /l\.parentNode\.insertBefore\(s/) -jpopsingles.eu##+js(noeval-if, adsBlocked) -@@||jpopsingles.eu^$ghide -@@||jpopsingles.eu^$image,1p -/ap-plugin-scripteo/frontend/img/728x90.png$image,redirect-rule=1x1.gif -jpopsingles.eu##+js(aeld, DOMContentLoaded, document.documentElement.lang.toLowerCase) -jpopsingles.eu##+js(rmnt, script, adsSrc) -megawarez.org##+js(aopw, smrtSB) -megawarez.org##[class^="ads"] -megawarez.org##[id^="text-"] > .textwidget > p > [href][target="_blank"] > .size-full.alignnone -megawarez.org##.onp-sl-content:style(display: block !important;) -megawarez.org##.onp-sl-social-locker -mwpaste.com##+js(nowoif, /^/, 15) -*$frame,3p,domain=mwpaste.com -acortalo.*,acortar.*,megadescarga.net##+js(nofab) -acortalo.*,acortar.*,megadescarga.net,megadescargas.net##+js(nano-sib, , , 0) -acortalo.*,acortar.*,megadescarga.net,megadescargas.net##+js(set, clicked, true) -acortalo.*,acortar.*,megadescarga.net,megadescargas.net##+js(set, eClicked, true) -acortalo.*,acortar.*,megadescarga.net,megadescargas.net##+js(set, number, 0) -acortalo.*,acortar.*,megadescarga.net,megadescargas.net##+js(set, sync, true) -||acortalo.*^$3p -@@*$css,1p,domain=acortalo.*|acortar.*|megadescarga.net -@@*$ghide,domain=acortalo.*|acortar.*|megadescarga.net -*$popunder,domain=acortalo.*|acortar.*|megadescarga.net|megadescargas.net -||imasdk.googleapis.com/js/sdkloader/ima3.js^$script,3p,redirect-rule=google-ima.js,domain=acortalink.* -hentaihaven.xxx##+js(noeval-if, debugger) -*$xhr,redirect-rule=nooptext,domain=hentaihaven.xxx -hentaihaven.xxx##+js(nowoif) -hentaihaven.xxx##+js(set, PlayerLogic.prototype.detectADB, noopFunc) -hentaihaven.xxx##+js(no-fetch-if, ads-twitter.com) -hentaihaven.xxx##+js(json-prune, *, all) -hentaihaven.xxx##.hhzt -hentaihaven.xxx##.code-block -||aj3038.bid^ -@@||hentaihaven.xxx^$script,1p -@@||hentaihaven.xxx^$ghide -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js,domain=hentaihaven.xxx -! hentaihaven .com/icu ads, popup -||hentaihaven.icu/wp-content/plugins/sscript-manager/ -||mult-imgs.cyou/images/*.gif$image,domain=hentaihaven.xxx -! interstitial page -hentaihaven.xxx##+js(aopw, Script_Manager) -itv.com##+js(xml-prune, VAST > Ad, , /tserver) -itv.com##+js(nowoif) -||toots-a.akamaihd.net/priority/*$media,redirect=noopmp3-0.1s,domain=itv.com -||toots-a.akamaihd.net/priority/*$media,redirect=noopmp4-1s,domain=itv.com -itv.com##.stage__upsell-button -itv.com##.seek-bar__ad -wsj.com##[class*="sponsored"] -wsj.com##div[id^="wrapper-AD_"] -wsj.com##div[class^="style--column--"]:has(> div[class=""] > div[id^="wrapper-AD_NATIVE"]) -wsj.com##.css-1fl953o -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=marketwatch.com|wsj.com,important -cbssports.com##.Skybox--minHeight, .Skybox--minHeightBoth:style(--global-nav-v2-offset: 0px !important;) -! END: Rules from filters.txt -! START: Regional lists -! <<<<< czech slovak filters >>>>> -||ads-twitter.com^$frame,redirect-rule=noopframe,domain=media.cms.markiza.sk -||img.kurzy.cz/block/$frame,1p -||bydleni.com/dm/banner/$domain=bydleni.cz -bydleni.cz###rightClick -bydleni.cz###clickLeft -! <<<<< Liste FR >>>>> -*$script,3p,domain=faselhd-watch.shop|kickassanime.mx,badfilter -*$xhr,3p,domain=faselhd-watch.shop|kickassanime.mx,badfilter -wiflix-catalogue.pro#@#a[href*=".php"] -! <<<<< Oficjalne polskie filtry przeciwko alertom o Adblocku >>>>> -dziennik.pl#@#+js(abort-current-script, parseInt, adblock) -! END: Regional lists -flixscans.org##+js(no-fetch-if, googlesyndication) -mhn.quest##+js(nostif, adblock) -@@||mhn.quest^$script,1p -bonsaiprolink.shop##+js(noeval-if, ads) -! paste. fo ads -paste.fo##a[href="https://bit.ly/3vKxLhC"], a[href="https://bit.ly/4aDbAcb"], a[href="https://bit.ly/4cL4Jz2"], a[href="https://bit.ly/3VEkIbL"], a[href="https://goldenaccounts.cc/?r=pastefo"], a[href="https://discord.gg/R5pN8ZvBVW"], a[href="https://spadone.cc/"], a[href="https://orion.hydrolmn.com/"], a[href^="https://anonsmm.com/?utm_source"], a[href="https://cryptochanger.to/"], a[href="https://sellsn.io/"], a[href="https://astralproxies.sellpass.io/"], a[href="https://discord.gg/GeDqHNzyEh"], a[href="https://proxylist.to/?ref=pfo"], a[href="https://themario.sellpass.io/"] -paste.fo##body > .wrapper > p[class]:has(> a[id] > *) -/paste\.fo\/[A-Z0-9]{70,130}\.(gif|jpeg|jpg)$/$image,1p,domain=paste.fo -||paste.fo/*?as=*&tkn=$xhr -paste.fo##a[href] img:not([src$=".php"]) -paste.fo##a[href] div[style*="background-image"] -! bharathwick .com anti-adb -bharathwick.com##+js(rmnt, script, deblocker) -@@||easyupload.io/cdn-cgi/zaraz/s.js$1p -||amazonaws.com/pubs/trib/aatribscriptcheck$script,3p -||amazonaws.com/pubs/trib/aa_adb_modal$script,3p -||amazonaws.com/pubs/trib/triblive_$script,3p -animesuge.to,aniwave.*,anix.to,bflix.to,bflixhd.to,flixflare.to,flixhive.to,flixhq.bz,flixtorz.to,fmoviesz.to,fmovies24.to,hurawatch.bz,hurawatch2.to,losmoviesz.to,mangafire.to,moviestowatch.id,soap2dayx.to,watchseriesx.to##+js(nowoif, _blank) -animesuge.to,aniwave.*,anix.to,anix.vc,bflix.to,bflixhd.to,flixflare.to,flixhive.to,flixhq.bz,flixtorz.to,fmoviesz.to,fmovies24.to,hurawatch.bz,hurawatch2.to,losmoviesz.to,mangafire.to,moviestowatch.id,soap2dayx.to,watchseriesx.to##+js(set-cookie, __pf, 1) -!#if cap_html_filtering -aniwave.*##^script:has-text(document.write) -!#else -aniwave.*##+js(acs, document.write) -!#endif -aniwave.*##.adx -aniwave.*##.text-center:has(script + a[target="_blank"]) -||aniwave.*/assets/_bnx/$image,1p -||platform.pubadx.one^$3p -||delivery.r2b2.cz^$3p -! filemoon ads -defienietlynotme.com,embedme.*,filemooon.top,finfang.*,fmembed.cc,fmoonembed.pro,hellnaw.*,moonembed.*,rgeyyddl.skin,sbnmp.bar,sulleiman.com,vpcxz19p.xyz,z12z0vla.*##+js(acs, JSON.parse, showTrkURL) -1azayf9w.xyz,c4qhk0je.xyz,defienietlynotme.com,embedme.*,filemooon.top,finfang.*,fmembed.cc,fmhd.bar,fmoonembed.pro,hellnaw.*,moonembed.*,rgeyyddl.skin,sbnmp.bar,sulleiman.com,vidsrc.click,vpcxz19p.xyz,z12z0vla.*##+js(acs, Math, /window\['(?:\\x[0-9a-f]{2}){2}/) -1azayf9w.xyz,c4qhk0je.xyz,defienietlynotme.com,embedme.*,filemooon.top,finfang.*,fmembed.cc,fmhd.bar,fmoonembed.pro,hellnaw.*,moonembed.*,rgeyyddl.skin,sbnmp.bar,sulleiman.com,vpcxz19p.xyz,z12z0vla.*##+js(nowoif) -defienietlynotme.com,embedme.*,filemooon.top,finfang.*,fmembed.cc,fmhd.bar,fmoonembed.pro,hellnaw.*,moonembed.*,rgeyyddl.skin,sbnmp.bar,sulleiman.com,vpcxz19p.xyz,z12z0vla.*##+js(noeval-if, /popunder/i) -rgeyyddl.skin##+js(acs, document.createElement, adblock) -||ceasedheave.com^ -||ihavenewdomain.xyz^ -||ohmyanotherone.xyz^ -||shoulsos.com^ -||thisisalsonewdomain.xyz^$popup -||whulsauh.tv^$popup -||zxtuqpiu.skin^ -*$script,3p,redirect-rule=noopjs,domain=defienietlynotme.com|embedme.*|filemoon.*|filemooon.top|fmembed.cc|fmoonembed.pro|finfang.*|hellnaw.*|moonembed.*|rgeyyddl.skin|sbnmp.bar|sulleiman.com|vpcxz19p.xyz|z12z0vla.* -||coinblocktyrusmiram.com/player8/JWui.js$script,redirect=noopjs -*$image,domain=pmvhaven.com,redirect-rule=1x1.gif -@@||townnews.com^*/tncms/*/ads/*/tnt.ads.adverts.$script -tubereader.me##+js(aeld, /adblock/i) -tubereader.me##+js(nostif, /adblock/i) -://ads.$~image,domain=~ads.8designers.com|~ads.ac.uk|~ads.adstream.com.ro|~ads.allegro.pl|~ads.am|~ads.amazon|~ads.apple.com|~ads.atmosphere.copernicus.eu|~ads.band|~ads.bestprints.biz|~ads.bikepump.com|~ads.brave.com|~ads.buscaempresas.co|~ads.business.bell.ca|~ads.cafebazaar.ir|~ads.colombiaonline.com|~ads.comeon.com|~ads.cvut.cz|~ads.doordash.com|~ads.dosocial.ge|~ads.dosocial.me|~ads.elevateplatform.co.uk|~ads.finance|~ads.google.cn|~ads.google.com|~ads.gree.net|~ads.gurkerl.at|~ads.harvard.edu|~ads.instacart.com|~ads.jiosaavn.com|~ads.kaipoke.biz|~ads.kazakh-zerno.net|~ads.kifli.hu|~ads.knuspr.de|~ads.listonic.com|~ads.magalu.com|~ads.mercadolivre.com.br|~ads.mgid.com|~ads.microsoft.com|~ads.midwayusa.com|~ads.mobilebet.com|~ads.mojagazetka.com|~ads.msstate.edu|~ads.mst.dk|~ads.mt|~ads.nc|~ads.nipr.ac.jp|~ads.olx.pl|~ads.pinterest.com|~ads.red|~ads.rohlik.cz|~ads.route.cc|~ads.safi-gmbh.ch|~ads.scotiabank.com|~ads.selfip.com|~ads.shopee.cn|~ads.shopee.co.th|~ads.shopee.com.br|~ads.shopee.com.mx|~ads.shopee.com.my|~ads.shopee.kr|~ads.shopee.ph|~ads.shopee.pl|~ads.shopee.sg|~ads.shopee.tw|~ads.shopee.vn|~ads.smartnews.com|~ads.snapchat.com|~ads.socialtheater.com|~ads.spotify.com|~ads.studyplus.co.jp|~ads.taboola.com|~ads.tiktok.com|~ads.twitter.com|~ads.typepad.jp|~ads.us.tiktok.com|~ads.viksaffiliates.com|~ads.vk.com|~ads.watson.ch|~ads.x.com|~badassembly.com|~caravansforsale.co.uk|~fusac.fr|~memo2.nl|~reempresa.org|~satmetrix.com|~seriouswheels.com,badfilter -://ads.$~image,domain=~ads.8designers.com|~ads.ac.uk|~ads.adstream.com.ro|~ads.allegro.pl|~ads.am|~ads.amazon|~ads.apple.com|~ads.atmosphere.copernicus.eu|~ads.band|~ads.bestprints.biz|~ads.bikepump.com|~ads.brave.com|~ads.buscaempresas.co|~ads.business.bell.ca|~ads.cafebazaar.ir|~ads.colombiaonline.com|~ads.comeon.com|~ads.cvut.cz|~ads.doordash.com|~ads.dosocial.ge|~ads.dosocial.me|~ads.elevateplatform.co.uk|~ads.finance|~ads.google.cn|~ads.google.com|~ads.gree.net|~ads.gurkerl.at|~ads.harvard.edu|~ads.instacart.com|~ads.jiosaavn.com|~ads.kaipoke.biz|~ads.kazakh-zerno.net|~ads.kifli.hu|~ads.knuspr.de|~ads.listonic.com|~ads.magalu.com|~ads.mercadolivre.com.br|~ads.mgid.com|~ads.microsoft.com|~ads.midwayusa.com|~ads.mobilebet.com|~ads.mojagazetka.com|~ads.msstate.edu|~ads.mst.dk|~ads.mt|~ads.nc|~ads.nipr.ac.jp|~ads.olx.pl|~ads.pinterest.com|~ads.red|~ads.rohlik.cz|~ads.route.cc|~ads.safi-gmbh.ch|~ads.scotiabank.com|~ads.selfip.com|~ads.shopee.cn|~ads.shopee.co.th|~ads.shopee.com.br|~ads.shopee.com.mx|~ads.shopee.com.my|~ads.shopee.kr|~ads.shopee.ph|~ads.shopee.pl|~ads.shopee.sg|~ads.shopee.tw|~ads.shopee.vn|~ads.smartnews.com|~ads.snapchat.com|~ads.socialtheater.com|~ads.spotify.com|~ads.studyplus.co.jp|~ads.taboola.com|~ads.tiktok.com|~ads.twitter.com|~ads.typepad.jp|~ads.us.tiktok.com|~ads.viksaffiliates.com|~ads.vk.com|~ads.watson.ch|~ads.x.com|~badassembly.com|~caravansforsale.co.uk|~fusac.fr|~memo2.nl|~reempresa.org|~satmetrix.com|~seriouswheels.com,to=~ads.remix.es -counterstrike-hack.leforum.eu,ajt.xooit.org##+js(aopr, document.body.style.backgroundPosition) -! ludwig-van .com anti-adb -ludwig-van.com##+js(aopr, canRunAds) -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js,domain=broncos.com.au|bulldogs.com.au|cowboys.com.au|dolphinsnrl.com.au|dragons.com.au|melbournestorm.com.au|newcastleknights.com.au|nswrl.com.au|parraeels.com.au|penrithpanthers.com.au|qrl.com.au|raiders.com.au|roosters.com.au|seaeagles.com.au|sharks.com.au|titans.com.au|warriors.kiwi|weststigers.com.au -@@*$ghide,domain=broncos.com.au|bulldogs.com.au|cowboys.com.au|dolphinsnrl.com.au|dragons.com.au|melbournestorm.com.au|newcastleknights.com.au|nswrl.com.au|parraeels.com.au|penrithpanthers.com.au|qrl.com.au|raiders.com.au|roosters.com.au|seaeagles.com.au|sharks.com.au|titans.com.au|warriors.kiwi|weststigers.com.au -! zxi.mytechroad .com anti-adb -zxi.mytechroad.com##+js(aost, document.getElementsByTagName, adsBlocked) -descargaspcpro.net##+js(rmnt, script, deblocker) -dx-tv.com##+js(rmnt, script, deblocker) -! postermockup .com anti-adb -postermockup.com##+js(aost, setTimeout, adsBlocked) -@@||sidearm-syndication.s3.amazonaws.com/prod/web-push.bundle.js$script,domain=hokiesports.com -||check-host.net/images/rondguarf$image,1p -||check-host.net/images/rmondguarf$image,1p -||check-host.net/images/alexqhost.png$image,1p -||check-host.net/images/aezaqlogo.$image,1p -check-host.net###hostacq, .hostacq, #antkeatvhaqaprivatealps, .specgo, #antkeatvhaqaaeza-permnnt, #antkeatvhaqaalexhost, #antkeatvhaqapp-juiaryt, #antkeatvhaqapp-juiaryt2, .rv-elative, [href*="?utm_"], a[href*="privatealps.net"], [onclick*="aeza.net"] -! conceptartworld. com antiadb -@@||conceptartworld.com^$ghide -pomofocus.io##+js(no-xhr-if, adsbygoogle, length:10) -@@||restegourmet.de^$ghide -restegourmet.de##ion-col:has(> app-content-ad-grid) -restegourmet.de##+js(nano-sib, invoke, 1000) -plex-guide.de##+js(nostif, nextFunction, 2000) -@@||yad.com^$ghide -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js,domain=yad.com -pressplay.top##.btn-custom[target="_blank"] -! an1.com -an1.com##+js(nano-stb, countdown, *) -an1.com##+js(nowoif) -||sponsoredaccess.viasat.com/video/$1p,media,redirect=noopmp4-1s -forexwikitrading.com##+js(aost, setTimeout, adsBlocked) -forexwikitrading.com##+js(nowoif) -forexwikitrading.com##[href^="https://fbs.partners"] -forexwikitrading.com##[href^="https://forexwikitrading.com/go/"] -! 007stockchat .com anti-adb -007stockchat.com##+js(nosiif, daadb) -! stockhideout .com anti-adb -stockhideout.com##+js(nosiif, daadb) -copypastescan.xyz##+js(noeval-if, /chp_?ad/) -@@||fundingchoicesmessages.google.com^$script,domain=formulatv.com -@@||formulatv.com^$ghide -fm-arena.com##+js(nostif, getComputedStyle, 2000) -! westmanga.fun ads -westmanga.fun##+js(nowoif) -westmanga.fun##[src*=".gif"] -! envato-downloader .com anti-adb -envato-downloader.com##+js(no-fetch-if, google-analytics) -onlyfaucet.com##+js(rmnt, script, /fetch|adb/i) -@@||imasdk.googleapis.com/js/sdkloader/ima3_dai.js$xhr,domain=mtv.it|mtv.de|mtv.co.uk|mtvema.com -||imasdk.googleapis.com/pal/sdkloader/pal.js$redirect-rule=noop.js,domain=mtv.it|mtv.de|mtv.co.uk|mtvema.com -||imasdk.googleapis.com^$script,xhr,3p,redirect-rule=noopjs,domain=mtv.nl -timesnewsgroup.com.au##+js(acs, $, popup) -||launcherleaks.net/*main_script.js$script,1p -! romfree .net anti-adb -romfree.net##+js(aost, setTimeout, adsBlocked) -livecamrips.com##+js(rmnt, script, window.open) -! exactlyhowlong. com detection -exactlyhowlong.com##+js(noeval-if, ads) -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js,domain=sportitalialive.com -sportitalialive.com##+js(nostif, ads) -@@*$script,xhr,1p,domain=digikey.co.za|digikey.cn|digikey.ee|digikey.at|digikey.be|digikey.bg|digikey.cz|digikey.dk|digikey.fi|digikey.fr|digikey.de|digikey.gr|digikey.hu|digikey.ie|digikey.it|digikey.lv|digikey.lt|digikey.lu|digikey.nl|digikey.no|digikey.pl|digikey.pt|digikey.ro|digikey.sk|digikey.si|digikey.es|digikey.se|digikey.ch|digikey.co.uk|digikey.co.il|digikey.com.mx|digikey.ca|digikey.com.br|digikey.co.nz|digikey.com.au|digikey.co.th|digikey.tw|digikey.kr|digikey.sg|digikey.ph|digikey.my|digikey.jp|digikey.in|digikey.hk|digikey.com -watch.sling.com##+js(json-prune, ssai_manifest ad_manifest playback_info.ad_info qvt.playback_info.ad_info) -9goals.live##+js(aeld, load, onload) -! digter8 .com anti-adb -digter8.com##+js(acs, eval, replace) -@@||sultanovic.info^$ghide -||jads.co^$script,3p,redirect-rule=noopjs,domain=2th.me -||juicyads.com^$image,3p,redirect-rule=1x1.gif,domain=2th.me -2th.me##.pc-container -ultimate-guitar.com##+js(set, Object.prototype.setNeedShowAdblockWarning, noopFunc) -@@||meong.club^$ghide -hdporn92.com##+js(acs, onload, puHref) -tube.hentaistream.com##.vast-skip-button -||res.cloudinary.com/*/Ads%20Video/preroll_$media,redirect=noop-1s.mp4 -getmodsapk.com##+js(nowoif) -getmodsapk.com##+js(nano-sib, download, *, 0.02) -getmodsapk.com##.downloadLink:style(max-height: initial !important; overflow: revert !important) -getmodsapk.com##center[style="position:relative; width:100%; min-height:280px;"] -getmodsapk.com##.ad-container -! 5play.ru/org Timer -5play.*##+js(nano-sib, countdown, *) -! modcombo.com timer -modcombo.com##+js(nano-sib) -! soninow .com anti-adb -soninow.com##+js(nosiif, adsbygoogle) -bailiwickexpress.com##+js(acs, $, load_banner) -@@||dotnet.guide^$ghide -twitchmetrics.net##+js(set-cookie, npabp, 1) -/nyaa\.land\/static\/[a-z0-9]{32}\.jpg$/$image,1p,domain=nyaa.land -nyaa.land##+js(nowoif) -nyaa.land##[href*="iptv.cat"] -nyaa.land##[href*="tiny.cc"] -nyaa.land##html > body > div:not([class="container"]) -nyaa.land##html > body > div:not([class="container"]) + br -nyaa.land##html > body > center -nyaa.land##.panel-body > .row:last-child > :is(div[style="padding:5px"],hr):last-of-type -||go4kora.tv/assets/js/script_antiAdBlock_*.js$script,1p -msdos-games.com##+js(nostif, getComputedStyle) -@@||webshark.pl^$script,domain=vider.* -teachmemicro.com##+js(set, DHAntiAdBlocker, true) -rt3dmodels.com##+js(rmnt, script, deblocker) -plc4me.com##+js(rmnt, script, deblocker) -@@*$ghide,domain=tutoriales-virales.blogspot.com|tyvpaste.blogspot.com|librospreuniversitariospdf.blogspot.com|preu-pdf-paste.blogspot.com -@@||fernsehzone.online^$ghide -fernsehzone.online##.adsbygoogle -! krx18.com -krx18.com##center > [src*="/ads/"] -playerwatch.xyz##+js(nowoif, , 10) -||ezodn.com^$redirect-rule=noopjs,domain=tv.bdix.app -*$xhr,3p,redirect-rule=noop.txt,domain=tv.bdix.live -tv.bdix.live##+js(no-fetch-if, outbrain.com) -dagensnytt.com##+js(aeld, load, doTest) -blisseyhusbands.com##+js(rmnt, script, deblocker) -@@*$ghide,domain=countrychord.com|wazzuptechph.com|bigbrothergisthub.com|news9.co.ke|techprice.pk|scopenew.com|rokuguru.com|guided.news|techfinancials.co.za|scholarshipexpo.com|dailyparliamenttimes.com|theexchange.africa|thedailyhoosier.com|subhashyadav.org|thenews-chronicle.com|diyprojectslab.com -obf-io.deobfuscate.io##.self-center.overflow-hidden:has(> img[src="/nexus_banner.webp"]:only-child) -hole-io.com###aip-sidebarads -hole-io.com##.webgl-content:style(width: 100% !important;) -/^https:\/\/www\.thesun\.co\.uk\/[0-9a-z]{32}\.js$/$script,1p,match-case,domain=thesun.co.uk -@@||servedbyadbutler.com/vast.spark$xhr,3p,domain=freerideworldtour.com -||servedbyadbutler.com^$media,3p,redirect-rule=noopmp3-0.1s,domain=freerideworldtour.com -x-x-x.tube##+js(aopr, popns) -! Video ads on nsfw sites -/theme/002/js/application.js?2.0|$script,1p,replace=/video\.maxPop/0/ -pornx.to##+js(nowoif) -pornx.to##[href="https://pornx.to/go/icegirlsai"] -qwant.com##.result__ext:has([data-testid="adResult"]):style(max-height: 1px !important; opacity: 0 !important; pointer-events: none !important;) -qwant.com#@#div[data-testid="pam.container"] -qwant.com##div[data-testid="pam.container"]:style(max-height: 1px !important; opacity: 0 !important; pointer-events: none !important;) -@@||qwant.com/apm/intake/v2/rum/events$xhr,1p -@@||qwant.com^$ping,1p -@@||spite.cz^$ghide -civitai.com##+js(no-fetch-if, googlesyndication) -civitai.com##[data-aa-adunit]:upward(.mantine-Paper-root):remove() -civitai.com##.mantine-Paper-root > .mantine-Stack-root:has-text(Become a supporter):upward(.mantine-Paper-root) -||ads.civitai.com^$script,1p,redirect-rule=noopjs -||d3mw273ubcaiex.cloudfront.net/images/ad/$image -@@/^https:\/\/www\.puzzle-[a-z]+\.com\//$script,from=puzzle-loop.com|puzzle-words.com|puzzle-chess.com|puzzle-thermometers.com|puzzle-norinori.com|puzzle-minesweeper.com|puzzle-slant.com|puzzle-lits.com|puzzle-galaxies.com|puzzle-tents.com|puzzle-battleships.com|puzzle-pipes.com|puzzle-hitori.com|puzzle-heyawake.com|puzzle-shingoki.com|puzzle-masyu.com|puzzle-stitches.com|puzzle-aquarium.com|puzzle-tapa.com|puzzle-star-battle.com|puzzle-kakurasu.com|puzzle-skyscrapers.com|puzzle-futoshiki.com|puzzle-shakashaka.com|puzzle-kakuro.com|puzzle-jigsaw-sudoku.com|puzzle-killer-sudoku.com|puzzle-binairo.com|puzzle-nonograms.com|puzzle-sudoku.com|puzzle-light-up.com|puzzle-bridges.com|puzzle-shikaku.com|puzzle-nurikabe.com|puzzle-dominosa.com -puzzle-loop.com,puzzle-words.com,puzzle-chess.com,puzzle-thermometers.com,puzzle-norinori.com,puzzle-minesweeper.com,puzzle-slant.com,puzzle-lits.com,puzzle-galaxies.com,puzzle-tents.com,puzzle-battleships.com,puzzle-pipes.com,puzzle-hitori.com,puzzle-heyawake.com,puzzle-shingoki.com,puzzle-masyu.com,puzzle-stitches.com,puzzle-aquarium.com,puzzle-tapa.com,puzzle-star-battle.com,puzzle-kakurasu.com,puzzle-skyscrapers.com,puzzle-futoshiki.com,puzzle-shakashaka.com,puzzle-kakuro.com,puzzle-jigsaw-sudoku.com,puzzle-killer-sudoku.com,puzzle-binairo.com,puzzle-nonograms.com,puzzle-sudoku.com,puzzle-light-up.com,puzzle-bridges.com,puzzle-shikaku.com,puzzle-nurikabe.com,puzzle-dominosa.com###MainContainer > [id^="bannerTopSpacer"] -puzzle-loop.com,puzzle-words.com,puzzle-chess.com,puzzle-thermometers.com,puzzle-norinori.com,puzzle-minesweeper.com,puzzle-slant.com,puzzle-lits.com,puzzle-galaxies.com,puzzle-tents.com,puzzle-battleships.com,puzzle-pipes.com,puzzle-hitori.com,puzzle-heyawake.com,puzzle-shingoki.com,puzzle-masyu.com,puzzle-stitches.com,puzzle-aquarium.com,puzzle-tapa.com,puzzle-star-battle.com,puzzle-kakurasu.com,puzzle-skyscrapers.com,puzzle-futoshiki.com,puzzle-shakashaka.com,puzzle-kakuro.com,puzzle-jigsaw-sudoku.com,puzzle-killer-sudoku.com,puzzle-binairo.com,puzzle-nonograms.com,puzzle-sudoku.com,puzzle-light-up.com,puzzle-bridges.com,puzzle-shikaku.com,puzzle-nurikabe.com,puzzle-dominosa.com###MainContainer + [id]:has(> #bannerSide) -!#if cap_html_filtering -||d3lj2s469wtjp0.cloudfront.net/build/js/public/$script,3p,replace=/\{try\{.*?clip-path.*?catch\(/{try{}catch(/,domain=puzzle-loop.com|puzzle-words.com|puzzle-chess.com|puzzle-thermometers.com|puzzle-norinori.com|puzzle-minesweeper.com|puzzle-slant.com|puzzle-lits.com|puzzle-galaxies.com|puzzle-tents.com|puzzle-battleships.com|puzzle-pipes.com|puzzle-hitori.com|puzzle-heyawake.com|puzzle-shingoki.com|puzzle-masyu.com|puzzle-stitches.com|puzzle-aquarium.com|puzzle-tapa.com|puzzle-star-battle.com|puzzle-kakurasu.com|puzzle-skyscrapers.com|puzzle-futoshiki.com|puzzle-shakashaka.com|puzzle-kakuro.com|puzzle-jigsaw-sudoku.com|puzzle-killer-sudoku.com|puzzle-binairo.com|puzzle-nonograms.com|puzzle-sudoku.com|puzzle-light-up.com|puzzle-bridges.com|puzzle-shikaku.com|puzzle-nurikabe.com|puzzle-dominosa.com -puzzle-loop.com,puzzle-words.com,puzzle-chess.com,puzzle-thermometers.com,puzzle-norinori.com,puzzle-minesweeper.com,puzzle-slant.com,puzzle-lits.com,puzzle-galaxies.com,puzzle-tents.com,puzzle-battleships.com,puzzle-pipes.com,puzzle-hitori.com,puzzle-heyawake.com,puzzle-shingoki.com,puzzle-masyu.com,puzzle-stitches.com,puzzle-aquarium.com,puzzle-tapa.com,puzzle-star-battle.com,puzzle-kakurasu.com,puzzle-skyscrapers.com,puzzle-futoshiki.com,puzzle-shakashaka.com,puzzle-kakuro.com,puzzle-jigsaw-sudoku.com,puzzle-killer-sudoku.com,puzzle-binairo.com,puzzle-nonograms.com,puzzle-sudoku.com,puzzle-light-up.com,puzzle-bridges.com,puzzle-shikaku.com,puzzle-nurikabe.com,puzzle-dominosa.com###MainContainer > [id]:has(> [id^="btIn"] > #bannerTop) -!#else -puzzle-loop.com,puzzle-words.com,puzzle-chess.com,puzzle-thermometers.com,puzzle-norinori.com,puzzle-minesweeper.com,puzzle-slant.com,puzzle-lits.com,puzzle-galaxies.com,puzzle-tents.com,puzzle-battleships.com,puzzle-pipes.com,puzzle-hitori.com,puzzle-heyawake.com,puzzle-shingoki.com,puzzle-masyu.com,puzzle-stitches.com,puzzle-aquarium.com,puzzle-tapa.com,puzzle-star-battle.com,puzzle-kakurasu.com,puzzle-skyscrapers.com,puzzle-futoshiki.com,puzzle-shakashaka.com,puzzle-kakuro.com,puzzle-jigsaw-sudoku.com,puzzle-killer-sudoku.com,puzzle-binairo.com,puzzle-nonograms.com,puzzle-sudoku.com,puzzle-light-up.com,puzzle-bridges.com,puzzle-shikaku.com,puzzle-nurikabe.com,puzzle-dominosa.com###MainContainer > [id]:has(> [id^="btIn"] > #bannerTop) *:style(width: 102px !important; background-color: transparent !important; border: none !important;) -puzzle-loop.com,puzzle-words.com,puzzle-chess.com,puzzle-thermometers.com,puzzle-norinori.com,puzzle-minesweeper.com,puzzle-slant.com,puzzle-lits.com,puzzle-galaxies.com,puzzle-tents.com,puzzle-battleships.com,puzzle-pipes.com,puzzle-hitori.com,puzzle-heyawake.com,puzzle-shingoki.com,puzzle-masyu.com,puzzle-stitches.com,puzzle-aquarium.com,puzzle-tapa.com,puzzle-star-battle.com,puzzle-kakurasu.com,puzzle-skyscrapers.com,puzzle-futoshiki.com,puzzle-shakashaka.com,puzzle-kakuro.com,puzzle-jigsaw-sudoku.com,puzzle-killer-sudoku.com,puzzle-binairo.com,puzzle-nonograms.com,puzzle-sudoku.com,puzzle-light-up.com,puzzle-bridges.com,puzzle-shikaku.com,puzzle-nurikabe.com,puzzle-dominosa.com###MainContainer > [id]:has(> [id^="btIn"] > #bannerTop) a -puzzle-loop.com,puzzle-words.com,puzzle-chess.com,puzzle-thermometers.com,puzzle-norinori.com,puzzle-minesweeper.com,puzzle-slant.com,puzzle-lits.com,puzzle-galaxies.com,puzzle-tents.com,puzzle-battleships.com,puzzle-pipes.com,puzzle-hitori.com,puzzle-heyawake.com,puzzle-shingoki.com,puzzle-masyu.com,puzzle-stitches.com,puzzle-aquarium.com,puzzle-tapa.com,puzzle-star-battle.com,puzzle-kakurasu.com,puzzle-skyscrapers.com,puzzle-futoshiki.com,puzzle-shakashaka.com,puzzle-kakuro.com,puzzle-jigsaw-sudoku.com,puzzle-killer-sudoku.com,puzzle-binairo.com,puzzle-nonograms.com,puzzle-sudoku.com,puzzle-light-up.com,puzzle-bridges.com,puzzle-shikaku.com,puzzle-nurikabe.com,puzzle-dominosa.com##.featherlight:has(.box-error) -!#endif -||delivery.twentythree.com/*/video_medium?revision$media,redirect=noopmp3-0.1s -streamer4u.site##+js(no-fetch-if, googlesyndication) -! radio .zone anti-adb -radio.zone##+js(nosiif, daadb) -mhdsports.*,mhdsportstv.*,mhdtvsports.*,mhdtvworld.*,mhdtvmax.*,mhdstream.*,mhdtvmax.*##+js(rmnt, script, deblocker) -mhdsports.*,mhdtvmax.*##+js(aost, fetch, HTMLDocument) -*/|$xhr,domain=fakestream.co.in -/wp-content/uploads/adb$script,domain=mhdsports.*|mhdsportstv.*|mhdtvsports.*|mhdtvworld.*|mhdtvmax.*|mhdstream.*|mhdtvmax.* -! durhamopenhouses .com anti-adb -durhamopenhouses.com##+js(acs, document.getElementById, fakeElement) -! fullboys .com popups -fullboys.com##+js(nowoif, ?key=) -! madaradex .org anti-adb -madaradex.org##+js(rmnt, script, deblocker) -vanillatweaks.net##.banner-spot -vanillatweaks.net##+js(nano-sib, downloadTimer) -infinityscans.xyz,infinityscans.net##+js(rpnt, script, /\(function\(.*?\'\}\}\)\(\)/, , condition, throw) -!#if cap_html_filtering -infinityscans.xyz,infinityscans.net##^script:has-text(;break;case $.) -!#else -infinityscans.xyz,infinityscans.net##+js(rmnt, script, ;break;case $.) -!#endif -! linkos. info/photogen. hair/sharedrive. yachts popups -linkos.info,photogen.hair,sharedrive.*##+js(nowoif) -pictoa.com##+js(aopw, tiPopAction) -sunci.net,yoykp.com##+js(aopr, app_vars.please_disable_adblock) -sunci.net,yoykp.com##+js(acs, navigator, FingerprintJS) -||d3o9njeb29ydop.cloudfront.net^ -! trigonevo .com anti-adb -trigonevo.com##+js(acs, eval, replace) -trigonevo.com##+js(rmnt, script, deblocker) -pastetot.com##+js(nowoif) -xyzsports111.xyz,xyzsports112.xyz,xyzsports113.xyz,xyzsports114.xyz,xyzsprtsfrmr1.site,xyzsprtsfrmr2.site##+js(set, adsConfigs, {}) -xyzsports111.xyz,xyzsports112.xyz,xyzsports113.xyz,xyzsports114.xyz,xyzsprtsfrmr1.site,xyzsprtsfrmr2.site##+js(set, adsConfigs.0, {}) -xyzsports111.xyz,xyzsports112.xyz,xyzsports113.xyz,xyzsports114.xyz,xyzsprtsfrmr1.site,xyzsprtsfrmr2.site##+js(set, adsConfigs.0.enabled, 0) -xyzsports111.xyz,xyzsports112.xyz,xyzsports113.xyz,xyzsports114.xyz,xyzsprtsfrmr1.site,xyzsprtsfrmr2.site###sticky-footer -*/das/$image,domain=xyzsports111.xyz|xyzsports112.xyz|xyzsports113.xyz|xyzsports114.xyz|xyzsprtsfrmr1.site|xyzsprtsfrmr2.site -.gif$image,domain=xyzsports111.xyz|xyzsports112.xyz|xyzsports113.xyz|xyzsports114.xyz|xyzsprtsfrmr1.site|xyzsprtsfrmr2.site -@@||vectr.com^$ghide -! claimbits.net anti adblock after login -claimbits.net##+js(set, NoAdBlock, noopFunc) -||claimbits.net/promo/$image,1p -claimbits.net###wcfloatDiv4 -! gfx-station .com anti-adb -gfx-station.com##+js(aeld, DOMContentLoaded, antiAdBlockerHandler) -gfx-station.com##.ad-container -tradersunion.com##+js(nostif, video-popup) -itopmusics.com##+js(acs, document.getElementById, adblock) -itopmusics.com##+js(acs, atob, /popundersPerIP[\s\S]*?Date[\s\S]*?getElementsByTagName[\s\S]*?insertBefore/) -movies7.to##+js(nowoif) -! toolkitspro .com anti-adb -toolkitspro.com##+js(no-xhr-if, googlesyndication) -! historyofroyalwomen .com anti-adb -historyofroyalwomen.com##+js(aeld, DOMContentLoaded, daadb_get_data_fetch) -ukchat.co.uk##+js(aeld, click, splashPage) -||ukchat.co.uk/js/popunder.js -/afr?*zoneid=$3p,frame,domain=ukchat.co.uk -wohnmobilforum.de##+js(nostif, nextFunction) -! gamerxyt. com antiadb -gamerxyt.com##+js(aopr, antiAdBlockerHandler) -gamerxyt.com##^script:has-text(antiAdBlockerHandler) -@@||js.estat.com/js/$script,domain=rmcbfmplay.com -||fwmrm.net^$3p,domain=rmcbfmplay.com,important -willcycle.com##+js(set, DHAntiAdBlocker, true) -drivemoe.com##+js(aopr, showada) -franceprefecture.fr##+js(rmnt, script, deblocker) -|http://video.telvi.de/videos/*.mp4$media,3p,redirect=noopmp3-0.1s,domain=meissen-fernsehen.de -dsharer.com##+js(aopr, showada) -trust.zone##+js(set, adblock, false) -! faroutmagazine.co.uk placeholder at the top -faroutmagazine.co.uk##.header:style(margin-top: 0px !important;) -tandess.com##+js(nostif, detectAdblock) -||tandess.com/music/files/detectAdblock.js -soft3arbi.com##.ts-modal-overlay -soft3arbi.com##body:style(overflow: auto !important;) -soft3arbi.com##.ar-bunyad-main -leagueofgraphs.com##+js(nostif, adblock) -leagueofgraphs.com##.adbox -gameszap.com##+js(no-xhr-if, ads) -||lib.csscloud.live/lib.js?$script,3p -@@||challenge.place^$ghide -||cdn.mekobre.com/ads^$media,redirect=noop-0.1s.mp3,domain=mekobre.com -||cdn.mekobre.com/ads^$image,domain=mekobre.com -! imagetranslator. io antiadb -imagetranslator.io##+js(no-fetch-if, googlesyndication) -looptorrent.org##+js(aopr, checkAdsStatus) -pornovka.cz##+js(acs, document.querySelectorAll, popMagic) -pornovka.cz##+js(no-fetch-if, ads) -musichq.pe##+js(rmnt, script, shown_at) -musichq.pe##+js(nowoif) -||voxiom.io^$xhr,1p,redirect-rule=nooptext -sexyscope.net##+js(set, adList, []) -hieunguyenphoto.com###detect-adblock-zone -hieunguyenphoto.com##+js(nostif, adblock) -hieunguyenphoto.com##+js(nano-sib, countdown) -visnalize.com##+js(no-fetch-if, googlesyndication) -copyseeker.net##+js(trusted-replace-argument, document.getElementById, 0, null, condition, adsense-container) -mmsmaza.com##+js(nowoif) -govtech.com##+js(trusted-set-cookie, adTakeOver, seen) -govtech.com##body[data-billboard="true"]:remove-attr(data-billboard) -govtech.com##.Enhancement:has(.GoogleDfpAd) -visionpapers.org##+js(rmnt, script, adblockimg) -visionpapers.org##+js(nano-sib, disabled) -||pubfuture-ad.com^$script,3p,redirect-rule=noopjs,domain=faqwiki.us -faqwiki.us##+js(nostif, EzoIvent) -faqwiki.us##+js(aopr, antiAdBlockerHandler) -fdownloader.net##+js(rmnt, script, showAd) -||fussballtransfers.com^$script,1p,redirect-rule=noopjs -anime7.download##+js(aopw, app_advert) -misskey.io,misskey.oga.ninja,mk.yopo.work,sushi.ski,trpger.us,warpday.net,zadankai.club##+js(json-prune-fetch-response, ads.[].imageUrl, , propsToMatch, url:api/meta) -hivelr.com##+js(aeld, load, detect-modal) -! zeroupload.com anti-adb -@@||zerodmca.com^$ghide -dodz.*,doodss.*,doood.*,doooood.*,kakitengah.*,y2tube.pro##+js(nowoif) -y2tube.pro##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -||dooods.pro/download_popunder$popup -||htliaproject.com^ -doodss.*###video-container ~ a[href="#"] -doooood.co###overlay -nulledbear.com##+js(nostif, nextFunction) -@@||dragontea.ink^$ghide -dragontea.ink##body > div[style]:not([id]):style(position: static !important; background-color: rgba(0, 0, 0, 0) !important) -dragontea.ink##html, body:style(overflow: visible !important;) -dragontea.ink##iframe[id^="google_ads_iframe"] -dragontea.ink##.dta -dragontea.ink##+js(nosiif, /_0x|dtaf/) -dragontea.ink##style:has-text(.reading-content img):remove() -dragontea.ink##+js(rpnt, script, "}};, "}}; jQuery(document).ready(function(t){let e=document.createElement("link");e.setAttribute("rel"\,"stylesheet")\,e.setAttribute("media"\,"all")\,e.setAttribute("href"\,"https://dragontea.ink/wp-content/cache/autoptimize/css/autoptimize_325679dd9090b57747bdd165077b8cc2.css")\,document.head.appendChild(e)\,t(".dmpvazRKNzBib1IxNjh0T0cwUUUxekEyY3F6Wm5QYzJDWGZqdXFnRzZ0TT0nuobc").parent().prev().prev().prev();var a=1\,n=16\,r=11\,i="08"\,g=""\,c=""\,d=0\,o=2\,p=3\,s=0\,h=100;s++\,s*=2\,h/=2\,h/=2;var $=3\,u=20;function b(){let e=t(".entry-header.header")\,a=parseInt(e.attr("data-id"));return a}function m(t\,e\,a\,n\,r){return CryptoJSAesJson.decrypt(t\,e+a+n+r)}function f(t\,e){return CryptoJSAesJson.decrypt(t\,e)}function l(t\,e){return parseInt(t.toString()+e.toString())}function k(t\,e\,a){return t.toString()+e.toString()+a.toString()}$*=2\,u=u-2-2\,i="03"\,o++\,r++\,n=n/4-2\,a++\,a*=4\,n++\,n++\,n++\,a-=5\,r++\,i="07"\,t(".reading-content .page-break img").each(function(){var e\,g=t(this)\,c=f(g.attr("id").toString()\,(e=parseInt((b()+l(r\,i))*a-t(".reading-content .page-break img").length)\,e=l(2*n+1\,e)).toString());g.attr("id"\,c)})\,r=0\,n=0\,a=0\,i=0\,t(".reading-content .page-break img").each(function(){var e=t(this)\,a=parseInt(e.attr("id").replace(/image-(\d+)[a-z]+/i\,"$1"));t(".reading-content .page-break").eq(a).append(e)})\,t(".reading-content .page-break img").each(function(){var e=t(this).attr("id");g+=e.substr(-1)\,t(this).attr("id"\,e.slice(0\,-1))})\,d++\,$++\,$++\,u/=4\,u*=2\,o*=2\,p-=3\,p++\,t(".reading-content .page-break img").each(function(){var e\,a=t(this)\,n=f(a.attr("dta").toString()\,(e=parseInt((b()+l($\,u))*(2*d)-t(".reading-content .page-break img").length-(4*d+1))\,e=k(2*o+p+p+1\,g\,e)).toString());a.attr("dta"\,n)})\,d=0\,$=0\,u=0\,o=0\,p=0\,t(".reading-content .page-break img").each(function(){var e=t(this).attr("dta").substr(-2);c+=e\,t(this).removeAttr("dta")})\,s*=s\,s++\,h-=25\,h++\,h++\,t(".reading-content .page-break img").each(function(){var e=t(this)\,a=f(e.attr("data-src").toString()\,(b()\,k(b()+4*s\,c\,t(".reading-content .page-break img").length*(2*h))).toString());e.attr("data-src"\,a)})\,s=0\,h=0\,t(".reading-content .page-break img").each(function(){t(this).addClass("wp-manga-chapter-img img-responsive lazyload effect-fade")})\,_0xabe6x4d=!0});) -time.artjoey.com##.adsense:style(padding: 0 !important;) -texteditor.nsspot.net##+js(set, gadb, false) -||googlesyndication.com/pagead/show_ads.js$script,redirect=noop.js -! mockupplanet .com anti-adb -mockupplanet.com##+js(aost, setTimeout, adsBlocked) -spontacts.com##+js(nostif, detectAdBlocker) -tutorialspoint.com##^#east[data-options*="Advertisement"] -thehackernews.com##a[href^="https://thehackernews.uk/"]:matches-attr(href=/https:\/\/thehackernews\.uk\/[a-zA-Z0-9]{4,}/):not([href*="-"]):not([class*="button"]):not([class*="latest"]) -thehackernews.com##body:has(article) .cf > a[href^="https://thehackernews.uk/"][target="_blank"] -thehackernews.com##[href="https://thehackernews.uk/wiz-kubernetes-security"] -thehackernews.com##.akku -thehackernews.com##section.cf.rocking -!#if cap_html_filtering -thehackernews.com##^script:has-text(imgSrc) -!#else -thehackernews.com##+js(rmnt, script, imgSrc) -!#endif -mielec.pl##+js(rmnt, script, document.createElement("script")) -@@||ddzswov1e84sp.cloudfront.net^$script,domain=free-content.pro -@@||onasider.top/tc$xhr,domain=free-content.pro -/yzfdmoan.js$script,redirect-rule=noop.js -boredbat.com##+js(aopr, b2a) -tekken8combo.kagewebsite.com##+js(no-fetch-if, googlesyndication) -zoro.*##+js(nowoif) -24game.stream##.ad-modal -! tvlive.fctvhd.com antiadb -*$image,redirect-rule=2x2.png,domain=tvlive.fctvhd.com -@@||forum.iptvkalite.com^$ghide -@@||forum.iptvkalite.com^$script,1p -forum.iptvkalite.com##ins.adsbygoogle -deano.me,themehospital.co.uk,resplace.com##+js(acs, jQuery, this) -||es.ylilauta.org^ -ylilauta.org##iframe.a -eurotruck2.com.br##+js(aeld, load, nextFunction) -! detection on tweets -||redbullracing.com/gtm.js$script,redirect-rule=googletagmanager_gtm.js,domain=redbullracing.com -||pub.network/core/prebid-universal-creative.js^$script,3p,redirect-rule=noopjs -*$xhr,redirect-rule=nooptext,3p,domain=bizjournals.com -kickassanime.*##+js(set, ifmax, true) -@@||kickassanime.*^$ghide -kickassanime.*##.ka-axx-wr -kickassanime.*##.text-center:has(> .hide-button) -kickassanime.*##.latest-update > .row > div:has(.hide-button) -kickassanime.ch##+js(noeval-if, shift) -kickassanime.ch###close-teaser -kickassanime.ch###overplay -||d1x9q8w2e4.xyz^ -@@||ad-ipd.sxp.smartclip.net/select?type=vast$xhr,domain=toggo.de -||ccstatic.toggo.de/cc-static-files/bumper-video/Toggolino_WT_$media,1p -dankmemer.lol##+js(nostif, nads) -petri.com###enlivy-kit-popup-overlay -petri.com##body:style(overflow: auto !important;) -@@||custommapposter.com^$ghide -custommapposter.com##.adsbygoogle -custommapposter.com##+js(no-fetch-if, googlesyndication) - creepypasta.com##[data-pid^="ad-"]:remove() -lulacloud.com##+js(aost, Object.defineProperty, https) -javboys.com##+js(aopr, popns) -player.javboys.cam##+js(nowoif) -apkmoddone.com##+js(nostif, 1e3*) -||technicalcity.b-cdn.net/css/inlab.$domain=technical.city -technical.city##.container > div[style^="margin-bottom:"] -embedz.click##+js(aeld, load, _0x) -embedz.click##+js(aopr, aclib) -||zalukaj.io/detector.js$script -camsrip.com##+js(rmnt, script, googlesyndication) -! recherche-ebook .fr anti-adb -recherche-ebook.fr##+js(set, nitroAds.abp, true) -*$script,3p,redirect-rule=noop.js,domain=streamelements.com|strms.net -royaledudes.io##+js(no-xhr-if, adinplay.com) -royaledudes.io##.gifts -betaseries.com##+js(nostif, adb) -zonebourse.com##+js(set, onloadUI, noopFunc) -zonebourse.com##+js(trusted-replace-argument, document.getElementById, 0, null, condition, modal) -scriptzhub.com##+js(nostif, show()) -||fulltv.video^$3p -||ver.gratis^$3p -!#if cap_html_filtering -treasl.com##^script:has-text(antiAdBlock) -!#else -treasl.com##+js(rmnt, script, antiAdBlock) -!#endif -mrbenne.com##+js(rmnt, script, /fairAdblock|popMagic/) -tecnologiati.online###player:style(display: block !important;) -ebaticalfel.com,fansmega.com,iedprivatedqu.com,stownrusis.com##+js(nowoif) -@@||cloudfront.net^$script,domain=ebaticalfel.com|fansmega.com|iedprivatedqu.com|stownrusis.com -||buyvisblog.com^$all -botrix.live##+js(no-fetch-if, googlesyndication, length:10000) -*$script,redirect-rule=noopjs,3p,domain=expressnews.com -daotranslate.*##+js(acs, document.getElementById, deblocker, /^data:text\/javascript/) -*$script,redirect-rule=noopjs,3p,domain=sfchronicle.com -sfchronicle.com##+js(set-session-storage-item, realm.Oidc.3pc, $remove$) -@@||realm.hearst3pcc.com^$script,3p,redirect-rule,from=sfchronicle.com|expressnews.com -beaumontenterprise.com,bigrapidsnews.com,ctinsider.com,ctpost.com,darientimes.com,greenwichtime.com,houstonchronicle.com,lmtonline.com,manisteenews.com,michigansthumb.com,middletownpress.com,milfordmirror.com,mrt.com,myjournalcourier.com,ncadvertiser.com,newstimes.com,nhregister.com,ourmidland.com,registercitizen.com,sfchronicle.com,sheltonherald.com,stamfordadvocate.com,theheraldreview.com,thehour.com,theintelligencer.com,theridgefieldpress.com,timesunion.com,trumbulltimes.com,wiltonbulletin.com,yourconroenews.com###modals -beaumontenterprise.com,bigrapidsnews.com,ctinsider.com,ctpost.com,darientimes.com,greenwichtime.com,houstonchronicle.com,lmtonline.com,manisteenews.com,michigansthumb.com,middletownpress.com,milfordmirror.com,mrt.com,myjournalcourier.com,ncadvertiser.com,newstimes.com,nhregister.com,ourmidland.com,registercitizen.com,sfchronicle.com,sheltonherald.com,stamfordadvocate.com,theheraldreview.com,thehour.com,theintelligencer.com,theridgefieldpress.com,timesunion.com,trumbulltimes.com,wiltonbulletin.com,yourconroenews.com##body:style(overflow: auto !important;) -beaumontenterprise.com,bigrapidsnews.com,ctinsider.com,ctpost.com,darientimes.com,greenwichtime.com,houstonchronicle.com,lmtonline.com,manisteenews.com,michigansthumb.com,middletownpress.com,milfordmirror.com,mrt.com,myjournalcourier.com,ncadvertiser.com,newstimes.com,nhregister.com,ourmidland.com,registercitizen.com,sfchronicle.com,sheltonherald.com,stamfordadvocate.com,theheraldreview.com,thehour.com,theintelligencer.com,theridgefieldpress.com,timesunion.com,trumbulltimes.com,wiltonbulletin.com,yourconroenews.com##.mb32:has-text(Advertisement) -scenexe2.io##+js(no-fetch-if, googlesyndication) -||docs.google.com/forms/d/e/1FAIpQLSfQK0eGG1JJ2vRS267yFjTI4vAwJLQsM5rNhmMA0ks31luMtQ/formResponse?usp=pp_url&entry.670406098=*&submit=Submit$frame,3p,domain=scenexe2.io -jazbaat.in##+js(rmnt, script, deblocker) -||my.optikservers.com/assets/AdsenseInit.$script,1p -tainguyenmienphi.com##+js(noeval-if, /chp_?ad/) -tainguyenmienphi.com##+js(acs, document.addEventListener, randomNumber) -lewdcorner.com##+js(acs, $, btoa) -statisticsanddata.org##.cmplz-blocked-content-container:remove-class(cmplz-blocked-content-container) -statisticsanddata.org##+js(set-attr, iframe[data-src-cmplz][src="about:blank"], src, [data-src-cmplz]) -getexploits.com##+js(nostif, current.children) -getexploits.com##div.self-center -! nsfw sex-empire.org popups -sex-empire.org,sexempire.xyz##+js(nowoif) -sexempire.xyz###video_player ~ div[id]:has(> div[style^="position:fixed;inset:0px;z-index"] > a[target="_blank"]) -||toughvariation.com^$doc -poki.com##div[class]:has(> div > div[style*="height"][style*="width"][style$="px; overflow: hidden;"] > [id*="_gp_"]) -web.businessuniqueidea.com##+js(aopr, b2a) -!#if cap_html_filtering -||tmailor.com/js/main_new.js^$script,1p,replace=/callback\(true\)/callback(false)/g -!#else -@@||pagead2.googlesyndication.com^$xhr,3p,domain=tmailor.com -@@||tmailor.com^$ghide -!#endif -bgmateriali.com##+js(no-fetch-if, googlesyndication) -||bgmateriali.com/js/detector.js$script,1p -ncaa.com##+js(no-fetch-if, googlesyndication) -olx.in##[id^="baxter-ads"]:upward([class]) -94.103.83.138##+js(nowoif) -94.103.83.138###clickfakeplayer:remove-attr(href) -!#if cap_html_filtering -94.103.83.138##^script[src*="cG9wMXN0c"] -!#endif -farsroid.com#@#div.labeled-dw-ads:style(max-height: 1px !important; opacity: 0 !important; pointer-events: none !important;) -farsroid.com#@#div.site-middle-banners:style(max-height: 1px !important; opacity: 0 !important; pointer-events: none !important;) -farsroid.com#@#div.single-text-ads:style(max-height: 1px !important; opacity: 0 !important; pointer-events: none !important;) -farsroid.com##div.labeled-dw-ads:style(position: absolute !important; top: -10000px !important;) -farsroid.com##div.site-middle-banners:style(position: absolute !important; top: -10000px !important;) -farsroid.com##div.single-text-ads:style(position: absolute !important; top: -10000px !important;) -boardgameoracle.com##div[class^="js"]:has(> span.MuiTypography-subtitle2.MuiTypography-displayBlock) -vtmgo.be##+js(no-fetch-if, doubleclick) -overtake.gg##+js(acs, $, adBlockAction) -sexseeimage.com##+js(aeld, click, clickCount) -pink-sluts.net##+js(set, PageLoader.DetectAb, 0) -pink-sluts.net##.modSQ-add -||pink-sluts.net/adver/$script -||est-host.com/promo/$image -doomovie-hd.*##+js(set, adSettings, []) -.gif$image,3p,domain=doomovie-hd.* -||via.placeholder.com^$image,domain=doomovie-hd.* -/UltimateBanana/*$xhr,domain=doomovie-hd.* -doomovie-hd.*##div[class*="banana-container"] -doomovie-hd.*##.header-banana_container -doomovie-hd.*##iframe + div[style^="position: absolute;"] -doomovie-hd.*##[href="https://www.warpfootball.com"] -doomovie-hd.*##[data-ultimate-banana-id] -doomovie-hd.*##[class^="horizontal-ad"] -@@||koyso.com^$ghide -koyso.com##+js(nowoif, !koyso.com) -@@*$ghide,domain=fplstatistics.com -@@||pagead2.googlesyndication.com/pagead/$script,domain=fplstatistics.com -@@||fundingchoicesmessages.google.com/i/$script,domain=fplstatistics.com -*$frame,domain=fplstatistics.com,redirect-rule=noopframe -fplstatistics.com##+js(no-fetch-if, ads) -fplstatistics.com##[href="https://fantasyfootballhub.co.uk/join/"] -fplstatistics.com##[href^="https://betterfpl.com/"] -fplstatistics.com##[href="https://hostinguk.net/web-hosting"] -fplstatistics.com##+js(nostif, adStatus) -gurusiana.id##+js(no-fetch-if, googlesyndication) -pesmodding.com#@#.button-ad -maos4alaw.online##+js(noeval-if, ads) -!#if cap_html_filtering -cnpics.org,ovabee.com,porn4f.com,cnxx.me,ai18.pics##^script:has-text(/pop1stp|detectAdBlock/) -!#else -cnpics.org,ovabee.com,porn4f.com,cnxx.me,ai18.pics##+js(rmnt, script, /pop1stp|detectAdBlock/) -!#endif -pupupul.site##+js(aopr, popUrl) -cuervotv.me##+js(nowoif) -cuervotv.me##+js(rmnt, script, popundersPerIP) -!#if cap_html_filtering -andhrafriends.com##^script:has-text(popunder) -!#else -andhrafriends.com##+js(rmnt, script, popunder) -!#endif -andhrafriends.com##+js(set, one_time, 1) -andhrafriends.com##+js(set-cookie, popunder, yes) -xmateur.com##+js(set, flashvars.protect_block, '') -xmateur.com##+js(set, flashvars.popunder_url, '') -xmateur.com##+js(set, flashvars.video_click_url, '') -xmateur.com##+js(aopr, adConfig) -xmateur.com##+js(acs, document.querySelectorAll, popMagic) -dazn.com##+js(json-prune, PlaybackDetails.[].DaiVod) -#@#.ad-wrap -##.ad-wrap:not(#google_ads_iframe_checktag) -benzinpreis.de##+js(nostif, adblock) -benzinpreis.de##+js(set, consentGiven, true) -aliezstream.pro,daddy-stream.xyz,daddylive1.*,esportivos.*,instream.pro,mylivestream.pro,poscitechs.*,powerover.online,sportea.link,sportsurge.stream,ufckhabib.com,ustream.pro##+js(rmnt, script, popundersPerIP) -1qwebplay.xyz,dlhd.so,flstv.online,mmastreams.me,mylivestream.pro,streambtw.com,tennisonline.me,voodc.com##+js(aopw, Adcash) -tennisonline.me##+js(acs, navigator, FingerprintJS) -antenasports.ru,cdn.xsportbox.com,claplivehdplay.ru,cuervotv.me,embedstream.me,viwlivehdplay.ru##+js(acs, JSON.parse, atob) -apl341.me,apl323.me,apl332.me,apl340.me##+js(nowoif) -whitemouseapple.com##+js(aopr, AaDetector) -aliezstream.pro,apl341.me,apl332.me,apl323.me,apl348.me,apl152.me###ads -aliezstream.pro,mylivestream.pro###openLinks:remove() -||crypto-ads.net/delivr^$3p -||thqgxvs.com^$3p -||androidpctv.com^$image,domain=sportshub.stream|sportsbuff.stream -dichvureviewmap.com##+js(no-fetch-if, googlesyndication) -raenonx.cc##body > div[class] > style:first-child + .w-full:has(> .button-clickable-bg-opaque > .transform-smooth > svg) -gunauc.net##+js(no-fetch-if, adsbygoogle) -absentescape.net,forgepattern.net##+js(aopr, aclib) -sportsonline.si##+js(rmnt, script, aclib.runPop) -m4u.*,xprime4u.*##+js(nowoif) -_ads.gif$image,domain=xprime4u.* -xprime4u.*##.ads-btns -m4u.*,xprime4u.*##.onclick-input -@@||v.fwmrm.net/ad/g/$xhr,domain=rtlplay.be -||v.fwmrm.net/ad/g/$xhr,3p,removeparam=caid,domain=rtlplay.be -||live.streamtheworld.com/ondemand/ars?$xhr,3p -||vader.amperwave.net/*/instream/$xhr,3p -fiuxy2.co##+js(rmnt, script, mega-enlace.com/ext.php?o=) -voltupload.com##+js(nano-stb, download, 1000, 0.001) -mylocal.co.uk##main > div > [id].scroll-mt-20:has(.items-center + div:has-text(/^Sponsored$/)) -@@||poweredby.jads.co^$script,frame,domain=video.pemersatu.org -fastapi.tiangolo.com###announce-right .item:has(.sponsor-badge) -voodc.com##+js(json-prune, *, *.adserverDomain) -roystream.com##+js(acs, JSON.parse, atob) -1stream.eu,roystream.com##+js(nowoif) -ripleyfieldworktracker.com#@#.googleAds -ripleyfieldworktracker.com##+js(acs, jQuery, ad-block) -technofino.in##+js(no-fetch-if, googlesyndication) -ettvi.com##div[class*="ads"]:has-text(/Advertisement/i) -||beatstars.com/v3/promote/ -||beatstars.com/promos? -! anti adblock on https://perchance.org/ai-chat -||perchance.org/api/count?key=abp$xhr,1p -||perchance.org/api/count?key=abt$xhr,1p -perchance.org##+js(rpnt, script, scri12pts && ifra2mes && coo1kies, true) -perchance.org##+js(rpnt, script, (scri12pts && ifra2mes), (true)) -perchance.org##div[style*="var"][style*="min-height"]:has([data-freestar-ad]) -woxmax.net##+js(acs, $, btoa) -woxmax.net##+js(nowoif, _blank) -differenceprimitive85p.shop##+js(no-xhr-if, ads) -megacloud.tv###overlay-center -hianime.to##[href="https://1flix.to/"] -||iili.io/JvfIu1a.gif$image -nextdoor.com##+js(json-prune, data.searchClassifiedFeed.searchResultView.0.searchResultItemsV2.edges.[-].node.item.content.creative.clickThroughEvent.adsTrackingMetadata.metadata.adRequestId) -nextdoor.com##.feed-container:not(.wide-layout-feed-container) > div:not([class]) > div[class^="blocks-"] > div[class^="blocks-"] > div[class^="blocks-"] > div:not([class]) > div[class^="blocks-"] > div[class]:has(> .fsf-gam-ad) -nextdoor.com##+js(json-prune, data.me.personalizedFeed.feedItems.[-].promo.creative.clickThroughUrl.adsTrackingMetadata.metadata.adRequestId) -! sidebar ad -nextdoor.com##+js(json-prune, data.me.rhrFeed.feedItems.[-].promo.creative.clickThroughUrl.adsTrackingMetadata.metadata.sponsor) -buffsports.me##+js(no-fetch-if, pogo) -buffsports.me##+js(nowoif, !self) -buffsports.me##+js(acs, navigator, FingerprintJS) -buffsports.me##^script:has-text(FingerprintJS) -buffsports.me##.position-absolute -kimdesene.org##+js(nowoif) -! pp server -/^https?:\/\/[a-z]{8,15}\.xyz\/$/$xhr,3p,to=xyz,method=head,header=x-trace-id -/^https?:\/\/[a-z]{8,15}\.com\/$/$xhr,3p,to=com,method=head,header=x-trace-id -/^https?:\/\/[a-z]{8,15}\.xyz\/$/$xhr,3p,to=xyz,method=head,header=x-trace2-id -/^https?:\/\/[a-z]{8,15}\.com\/$/$xhr,3p,to=com,method=head,header=x-trace2-id -/^https?:\/\/[a-z]{8,15}\.xyz\/$/$xhr,3p,to=xyz,method=head,header=x-trace3-id -/^https?:\/\/[a-z]{8,15}\.com\/$/$xhr,3p,to=com,method=head,header=x-trace3-id -! kumapoi. info detection -kumapoi.info##+js(noeval-if, ads) -iggtech.com##+js(acs, document.readyState, mdpDeblocker) -meteopool.org##+js(no-xhr-if, googlesyndication) -lemino.docomo.ne.jp##+js(no-fetch-if, doubleclick.net) -||h.seznam.cz^$badfilter -noicetranslations.blogspot.com##+js(aopr, checkAdsStatus) -manwan.xyz##+js(nostif, alert) -waploaded.com#@#.ad-slot:not(.adsbox):not(.adsbygoogle) -! innateblogger. com detection -innateblogger.com##+js(rmnt, script, adsbygoogle) -breitbart.com##+js(nostif, BN_CAMPAIGNS) -salidzini.lv##+js(nostif, media_place_list) -salidzini.lv##div[id][style^="width"]:has([id^="media_place_"]) -@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=mrnussbaum.com -matrixserver.in##+js(acs, $, samNotice) -vinstartheme.com##+js(no-fetch-if, googlesyndication) -free-sms-receive.com,sms-receive-online.com##+js(nostif, adb) -||cdn.pranmcpkx.com^$script,3p,redirect-rule=noopjs -fansubseries.com.br##+js(aopr, popUrl) -pandadevelopment.net##+js(no-fetch-if, adsbygoogle) -||go.aff.7k-partners.com^$popup -megacanais.com##+js(aopr, Adcash) -!#if cap_html_filtering -rnbastreams.com,4kwebplay.xyz,qqwebplay.xyz,totalsportek.to,eztvx.to,topstreams.info,lewblivehdplay.ru,claplivehdplay.ru,mixdrop.*,viwlivehdplay.ru,antennasports.ru,buffstreams.app,1stream.eu##^script:has-text(adserverDomain) -!#else -rnbastreams.com,4kwebplay.xyz,qqwebplay.xyz,totalsportek.to,eztvx.to,topstreams.info,lewblivehdplay.ru,claplivehdplay.ru,mixdrop.*,viwlivehdplay.ru,antennasports.ru,buffstreams.app,1stream.eu##+js(rmnt, script, adserverDomain) -!#endif -###dontfoid -##div[style="top: 0px; left: 0px; width: 1287px; height: 500px; position: fixed; z-index: 2147483647;"] -##div[style="position: fixed; inset: 0px; z-index: 2147483647; pointer-events: auto;"] -/\/z-[a-z0-9]{7,10}(\.js)?$/$script,domain=embedflix.online|koyso.com|nepu.to|methstreams.com -/^https:\/\/[a-z]{4,}\.(?:com|to)\/z-[a-z0-9]{7,10}(\.js)?$/$script,1p,strict1p,domain=com|to,header=etag:/^"[a-f0-9]{4,}-[a-f0-9]{4,}"$/ -/^https?:\/\/[a-z]{5,12}\.com\/[0-9a-h]{1,17}\?[0-9a-zA-Z]{1,21}=[0-9a-zA-Z]{300,1300}/$xhr,3p,match-case,to=com,method=get,header=via:/1[.:]1/ -! cricket sites popups -crictime.is,freehit.eu,mobilecric.com##[href*="?key"][target="_blank"]:remove-attr(href) -factorp.xyz##+js(nowoif) -@@||thorstin.ddns.net^$frame,domain=thorstin.nl -ssstik.io##+js(no-xhr-if, googlesyndication) -animeunity.to##+js(rmnt, script, Popup) -!#if env_chromium -decrypt.day##[id="aswift_0_host"], [id="aswift_1_host"], [id="aswift_2_host"], [id="aswift_3_host"], [id="aswift_4_host"], [id="aswift_5_host"]:style(clip-path: clircle(0) !important;) -decrypt.day##+js(spoof-css, [id="aswift_0_host"]\, [id="aswift_1_host"]\, [id="aswift_2_host"]\, [id="aswift_3_host"]\, [id="aswift_4_host"]\, [id="aswift_5_host"], clip-path, none) -@@*$xhr,domain=decrypt.day -||pagead2.googlesyndication.com/getconfig/sodar?$xhr,important,domain=decrypt.day -||fundingchoicesmessages.google.com^$xhr,important,domain=decrypt.day -!#else -decrypt.day##ins.adsbygoogle > *:style(position: relative !important; left: -10000px !important;) -!#endif -decrypt.day##+js(no-fetch-if, adsbygoogle) -@@||decrypt.day^$ghide -@@||decrypt.day^$xhr,1p -@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=decrypt.day -@@||pagead2.googlesyndication.com/pagead/managed/js/adsense/*/show_ads_impl$script,domain=decrypt.day -@@||googletagmanager.com/gtag/js$script,domain=decrypt.day -@@||fundingchoicesmessages.google.com^$script,domain=decrypt.day -@@||googleads.g.doubleclick.net/pagead/ads?gdpr=$frame,domain=decrypt.day -@@||pagead2.googlesyndication.com/pagead/$xhr,domain=decrypt.day -*$frame,redirect-rule=noopframe,domain=decrypt.day -blogcreativos.com##+js(noeval-if, ads) -lol-foot.ru##+js(acs, document.documentElement, break;case $.) -choosingnothing.com##+js(nostif, cvad) -choosingnothing.com###cvad -choosingnothing.com###cvadclo -choosingnothing.com##div[data-player] > a[href][style*="z-index"] -##a[href][style="cursor:pointer;width:100%;height:100%;z-index:10000000000000000;position:absolute;top:0;left:0;"] -##div[style="font-size: 15px; color: white; background-color: rgba(0, 0, 0, 0); cursor: pointer; position: absolute; width: 100%; height: 100%; padding: 1rem; z-index: 2147483647;"] -cryptorank.io##+js(nostif, ..., 300) -cryptorank.io##tbody > tr:not(.init-scroll):has(a[href*="?"][target="_blank"]) -cryptorank.io##div[tabindex] > button:has-text(Buy $) -cryptorank.io##+js(nostif, /\{[a-z]\(!0\)\}/) -skidrowcodex.net##+js(aeld, DOMContentLoaded, canRedirect) -skidrowcodex.net##.blog-content.wcontainer:has(> .premium) -skidrowcodex.net##.widget_text:has-text(Advertisement) -skidrowcodex.net##.widget_text:has(script[src$="/invoke.js"]) -erothots.co##+js(nowoif) -||blackandwhite-temporary.com^ -mygaytube.com##+js(acs, document.querySelectorAll, popMagic) -18kalebettv.xyz,19kalebettv.xyz##+js(ra, oncontextmenu, body) -18kalebettv.xyz,19kalebettv.xyz##+js(set-attr, .video-skip[data-time], data-time, 0) -18kalebettv.xyz,19kalebettv.xyz##body > a[target="_blank"][rel="noopener"] -18kalebettv.xyz,19kalebettv.xyz##a[target="_blank"]:has(> img:only-child[src^="/assets/"]) -takimag.com##+js(aeld, DOMContentLoaded, adb) -digi.no##+js(aeld, error, /\{[a-z]\(e\)\}/) -tu.no##+js(aeld, error) -percentagecalculator.guru##+js(aopr, detectAdBlock) -auto-crypto.click##+js(rmnt, script, catch) -cheater.ninja##+js(no-fetch-if, ads) -cheater.ninja##+js(rpnt, script, /catch[\s\S]*?}/, , condition, fetch) -blocklayer.com##+js(nostif, getComputedStyle) -! Promoted products and stores on search page (/search), product page (/p), and find page (/find) -tokopedia.com##+js(json-prune, [].data.displayAdsV3.data.[-].__typename) -tokopedia.com##+js(json-prune, [].data.TopAdsProducts.data.[-].__typename) -tokopedia.com##+js(json-prune, [].data.topads.data.[-].__typename) -!#if cap_html_filtering -! Promoted products on search page (/search) carousels -||tokopedia.com/graphql/InspirationCarousel$xhr,replace=/\{"id":\d{9,11}(?:(?!"ads":\{"id":"").)+?"ads":\{"id":"\d+".+?"__typename":"ProductCarouselV2"\},?//g -||tokopedia.com/graphql/InspirationalCarousel$xhr,replace=/\{"category_id"(?:(?!"ads":\{"id":"").)+?"ads":\{"id":"\d+".+?"__typename":"ProductCarouselV2"\},?//g -! Promoted products on mobile carousels of product page (/p) and cart page (/cart) -||tokopedia.com/graphql/productRecommendation$xhr,replace=/\{"id":\d{9,11}(?:(?!"isTopads":false).)+?"isTopads":true.+?"__typename":"recommendationItem"\},//g -||tokopedia.com/graphql/productRecommendation$xhr,replace=/,\{"id":\d{9,11}(?:(?!"isTopads":false).)+?"isTopads":true(?:(?!"__typename":"recommendationItem").)+?"__typename":"recommendationItem"\}(?=\])// -! Promoted products on cart page (/cart) -||tokopedia.com/graphql/RecomWidget$xhr,replace=/\{"(?:productS|s)lashedPrice"(?:(?!"isTopads":false).)+?"isTopads":true.+?"__typename":"recommendationItem"\},?//g -||tokopedia.com/graphql/ProductRecommendationQuery$xhr,replace=/\{"appUrl"(?:(?!"isTopads":false).)+?"isTopads":true.+?"__typename":"recommendationItem"\},?//g -!#else -! Promoted products on search page (/search) carousels -tokopedia.com##+js(trusted-replace-fetch-response, '/\{"id":\d{9,11}(?:(?!"ads":\{"id":"").)+?"ads":\{"id":"\d+".+?"__typename":"ProductCarouselV2"\},?/g', , /graphql/InspirationCarousel) -tokopedia.com##+js(trusted-replace-fetch-response, '/\{"category_id"(?:(?!"ads":\{"id":"").)+?"ads":\{"id":"\d+".+?"__typename":"ProductCarouselV2"\},?/g', , /graphql/InspirationalCarousel) -! Promoted products on mobile carousels of product page (/p) and cart page (/cart) -tokopedia.com##+js(trusted-replace-fetch-response, '/\{"id":\d{9,11}(?:(?!"isTopads":false).)+?"isTopads":true.+?"__typename":"recommendationItem"\},/g', , /\/graphql\/productRecommendation/i) -tokopedia.com##+js(trusted-replace-fetch-response, '/,\{"id":\d{9,11}(?:(?!"isTopads":false).)+?"isTopads":true(?:(?!"__typename":"recommendationItem").)+?"__typename":"recommendationItem"\}(?=\])/', , /\/graphql\/productRecommendation/i) -! Promoted products on cart page (/cart) -tokopedia.com##+js(trusted-replace-fetch-response, '/\{"(?:productS|s)lashedPrice"(?:(?!"isTopads":false).)+?"isTopads":true.+?"__typename":"recommendationItem"\},?/g', , /graphql/RecomWidget) -tokopedia.com##+js(trusted-replace-fetch-response, '/\{"appUrl"(?:(?!"isTopads":false).)+?"isTopads":true.+?"__typename":"recommendationItem"\},?/g', , /graphql/ProductRecommendationQuery) -!#endif -! Promoted products cache on search page (/search), find page (/find), and product page (/p) -!#if cap_html_filtering -tokopedia.com##^script:has-text(displayAdsV3) -!#else -tokopedia.com##+js(rmnt, script, displayAdsV3) -!#endif -||zee5.com/*/displayAds$xhr -zee5.com##+js(json-prune-fetch-response, adDetails, , propsToMatch, /secure?) -zee5.com##.vjs-control-bar:style(display: flex !important;) -thejakartapost.com##.tjp-single__content-ads:remove() -||adconfig.ster.nl/adurl$xhr,3p,domain=nos.nl -$frame,csp=sandbox allow-downloads allow-forms allow-same-origin allow-scripts,to=~buymeacoffee.com|~chatango.com|~cloudflare.com|~dailymotion.com|~discord.com|~disqus.com|~edgecastcdn.net|~emturbovid.com|~facebook.com|~frembed.*|~google.*|~hcaptcha.com|~mixdrop.*|~ok.ru|~recaptcha.net|~twitter.com|~vidmoly.*|~vixcloud.co|~youtu.be|~youtube.com|~x.com,from=1jour1film.homes|animefever.cc|animeunity.to|antennasports.ru|detodopeliculas.nu|euro2024direct.ru|hianime.to|kickassanime.*|kipflix.vercel.app|kissanime.*|seriescultes.store|soccerinhd.com|xsportbox.com -##div[style="position:fixed;inset:0px;z-index:999999;height:100%;width:100%"] -! redecanais.dev & redecanaistv.dev popups on iframe -xn-----0b4asja7ccgu2b4b0gd0edbjm2jpa1b1e9zva7a0347s4da2797e8qri.xn--1ck2e1b##+js(rmnt, script, ;}}};break;case $.) -xn-----0b4asja7ccgu2b4b0gd0edbjm2jpa1b1e9zva7a0347s4da2797e8qri.xn--1ck2e1b##[style="position: fixed; inset: 0px; z-index: 2147483647; pointer-events: auto;"] -! Popping Tool sites -asianlbfm.net,schoolgirls-asia.org##+js(aopr, loadTool) -||happymod.com/*/appx.php$frame,1p -@@||paktech2.com^$ghide -! timer to show image -pimpandhost.com##+js(nano-stb, count) -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=tv.okezone.com,redirect-rule=google-ima.js -@@||cdnjs.cloudflare.com/ajax/libs/videojs-contrib-ads/6.9.0/videojs-contrib-ads.min.js$script,domain=tv.okezone.com -||redsky.target.com^$xhr,removeparam=include_sponsored -target.com##+js(json-prune-fetch-response, data.search.products.[-].sponsored_ad.ad_source, , propsToMatch, url:/plp_search_v2?) -animefever.cc##+js(no-xhr-if, googlesyndication) -sinnerclownceviri.net##+js(nostif, nextFunction) -flvto.com.co##+js(nowoif) -flvto.com.co##.add-block -||cenoteka.rs/*/banner-sponzorstvo$image,1p -cenoteka.rs##.banner -cenoteka.rs##.sponsorship:remove-class(sponsorship) -defenseone.com,govexec.com,nextgov.com,route-fifty.com##+js(set, GEMG.GPT.Interstitial, noopFunc) -!#if cap_html_filtering -remixsearch.net,remixsearch.es,onlineweb.tools,sharing.wtf##^script:has-text(adblocker) -!#else -remixsearch.net,remixsearch.es,onlineweb.tools,sharing.wtf##+js(rmnt, script, adblocker) -!#endif -sharing.wtf##+js(set, amiblock, 0) -sharing.wtf##+js(nobab) -sharing.wtf##.metaRedirectWrapperTopAds -kimetsujbn.blogspot.com##+js(nowoif, !blogspot) -||gviet.vn/public/js/player/ads/ima3.js^$script,redirect-rule=google-ima.js,domain=vtvcab.vn -th.gl##+js(set, nitroAds, {}) -th.gl##+js(set, nitroAds.createAd, noopFunc) -th.gl##+js(nostif, error) -th.gl##+js(aeld, load, .call(this) -||s.nitropay.com/ads-*.js^$script,3p,redirect-rule=noopjs -||fewcents.co^$3p -wetter3.de##+js(set, karte3, 18) -@@||emailregex.com^$ghide -emailregex.com##.adsbygoogle -! arahdrive.com anti adblock -arahdrive.com##+js(set, protection, noopFunc) -starleaks.org##+js(nostif, show) -watchserie.online##.row:has(> [style="text-align: center;"] > a[rel="external nofollow ugc"]) -downev.com##+js(no-fetch-if, googlesyndication) -||playerembed-lb.blackboxsys.net/images/banners^$image,domain=dooball66s.com -||onlineprostream.com^$media,redirect=noopmp3-0.1s,domain=blackboxsys.net -uiiumovie.*##+js(acs, document.readyState, callbackAdsBlocked) -dizikral.com##+js(trusted-rpnt, script, /(function playVideo\(\) \{[\s\S]*?\.remove\(\);[\s\S]*?\})/, $1 playVideo();) -dizikral.com##+js(trusted-rpnt, script, video_urls.length != activeItem, !1) -4kwebplay.xyz,qqwebplay.xyz,viwlivehdplay.ru##+js(nostif, stackTrace) -esportivos.fun##+js(set, sandDetect, noopFunc) -||trackad.cz/adtrack.php^$script,3p,redirect-rule=noopjs -@@*$ghide,domain=akillikafa.com|kazanimtestleri.com.tr|testcoz.com -||api.poki.com/ads/ -scimagojr.com##+js(aeld, load, adblock) -cybernews.com##aside[data-e="popupEvent"] -cybernews.com##body:style(overflow: auto !important;) -||fuseplatform.net^$script,3p,redirect-rule=noopjs,domain=shipspotting.com -savegame.pro##+js(aost, document.getElementsByTagName, adsBlocked) -savegame.pro##body > div:first-child[id]:has(> div > div > div > div > div + .adblock_title) -digipuzzle.net###maindiv > tbody > tr > td[style="display:inline-block;width:180px;height:630px;text-align:left"] -digipuzzle.net##+js(no-xhr-if, googlesyndication) -knowt.com##div[class^="breakpoints_mdDownDisplayNone"]:has(#knowt_sticky_rightrail) -twi-fans.com##body[data-scroll-locked]:remove-attr(data-scroll-locked) -! temp -twi-fans.com##+js(aeld, /touchmove|wheel/, preventDefault()) -twi-fans.com##.fixed.data-\[state\=open\]\:animate-in -twi-fans.com##body[style="pointer-events: none;"]:style(pointer-events: auto !important;) -mediaevent.de##.topadds -mediaevent.de##.bottomadds -learn-cpp.org##+js(aeld, load, showcfkModal) -learn-cpp.org###google-ad-right > div.mt-3 -learn-cpp.org##a[href^="https://codingforkids.io"] -||learn-cpp.org/static/img/banners/cfk/$image,1p -cosmonova-broadcast.tv##+js(set, amodule.data, emptyArr) -libertycity.net##+js(nano-sib, timer) -porno-baguette.com##.daily-premium -porno-baguette.com##.get-premium -porno-baguette.com##.espace-cam -porno-baguette.com##.grid-layout__col:has(> .video-item--zeder) -porno-baguette.com##[data-popunder-enabled]:remove-attr(data-popunder-enabled) -porno-baguette.com##+js(set-cookie, dscl, 1) -porno-baguette.com##+js(set-cookie, ppndr, 1) -||soccerinhd.com/live1/$script,1p -soccerinhd.com##+js(set, checkAdsStatus, noopFunc) -soccerinhd.com##+js(no-fetch-if, googlesyndication) -soccerinhd.com##+js(acs, document.documentElement, break;case $.) -@@||soccerinhd.com^$ghide -molbiotools.com##+js(nostif, inner-ad) -7mm003.cc,7mmtv.sx,javporn.tv,mm9845.com##+js(nowoif) -vods.tv##+js(nostif, _ET) -! toonnetworkindia. net ads -||toonnetworkindia.net^$csp=script-src 'self' -||apifetchmethod.com^$all -||limeerror.org^$all -||paradizeconstruction.com^$all -hdfilmcehennemi2.cx##+js(set-local-storage-item, adDisplayed, $remove$) -jadoo.lol##+js(aopr, Promise.all) -kfc.com##+js(no-fetch-if, jssdks.mparticle.com) -@@||htlbid.com/*/htlbid.js^$script,3p,domain=barstoolsports.com -@@||imasdk.googleapis.com/js/sdkloader/ima3.js^$script,3p,domain=barstoolsports.com -@@||pubads.g.doubleclick.net/gampad/ads?*barstoolsports.com$xhr,domain=imasdk.googleapis.com -||pubads.g.doubleclick.net/gampad/ads?*barstoolsports.com$xhr,3p,removeparam=/^a|^c|^l|^m|^n|^o|^t|^u|^w/,domain=imasdk.googleapis.com -||pubads.g.doubleclick.net/gampad/ads?*barstoolsports.com$xhr,3p,removeparam=/dt|eid|eoidce|frm|gdpr|ged|hl|is_amp|plcmt|pp|ptt|scor|sdk_apis|sdki|sdkv|sdr|sid|vconp|vis|vpa|vpmute/,domain=imasdk.googleapis.com -||amazon-adsystem.com/aax2/apstag.js$domain=barstoolsports.com,important -||gvt1.com/*/dclk_video_ads/ -imasdk.googleapis.com##+js(xml-prune, VAST, , barstoolsports.com) -barstoolsports.com##+js(trusted-set-cookie, ajs_anonymous_id, OK, , , domain, barstoolsports.com) -barstoolsports.com##.videoList__ad -barstoolsports.com##.ad -barstoolsports.com##.relative:has(> .ad_skeleton) -play.geforcenow.com##+js(json-prune-fetch-response, session.sessionAds session.sessionAdsRequired, , propsToMatch, /session) -sinensistoon.com##+js(aopr, block_ads) -! filmi7.net anti adblock -filmi7.net##+js(aost, document.getElementById, adsBlocked) -filmi7.net##+js(acs, WebAssembly, _0x) -filmi7.net##[href="https://vin-checker.com"] -! ncdnx3. xyz popups(hqq mirror) -ncdnx3.xyz##+js(nowoif) -ncdnx3.xyz##+js(aopr, arrvast) -||ufouxbwn.com^ -18xxx.xyz##+js(nostif, .clientHeight) -asia.5ivttv.vip##+js(acs, document.readyState, mdpDeblocker) -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js,domain=sbt.com.br -stylisheleg4nt.com##+js(acs, document.documentElement, break;case $.) -||khantv.live/ad2.php^ -mp3y.info##+js(nowoif) -||mp3y.info/*.php^$frame -@@||fx545.site^$ghide -raidrush.net##+js(nostif, getComputedStyle(el)) -!#if env_firefox -raidrush.net#@#.funbox -raidrush.net#@##top_ga -raidrush.net##.funbox:style(position: absolute !important; left: -10000px !important;) -raidrush.net###top_ga:style(position: absolute !important; left: -10000px !important;) -!#endif -netu.frembed.fun##+js(nowoif) -netu.frembed.fun##+js(set, adblockcheck, false) -frembed.pro##+js(acs, atob, /popundersPerIP[\s\S]*?Date[\s\S]*?getElementsByTagName[\s\S]*?insertBefore/) -||jl63v3fp1.com^ -flixlatam.com##+js(noeval-if, ads) -anakteknik.co.id##+js(no-fetch-if, adsbygoogle) -pay4fans.com##+js(nowoif) -||caravanmagazine.in/iframes/flipkart-ad-$frame,1p -caravanmagazine.in##.article_content > [class] > [class]:has(.iframe_embed_container):remove() -limiteddollqjc.shop##+js(aost, document.getElementById, /(?=^(?!.*(orchestrate|cloudflare)))/) -closedjelly.net,compensationcoincide.net,hitsports.pro,sportsonline.so,onloop.pro##+js(aopw, Adcash) -papa4k.online##+js(rmnt, script, popundersPerIP) -/aclib.js|$script -movierr.online##+js(no-fetch-if, googlesyndication) -eloshapes.com##header.v-toolbar--flat:has([id^="promo-slider-"]) -eloshapes.com##header.elevation-3:style(top: 0px !important;) -eloshapes.com##main:style(--v-layout-top: 64px !important;) -eloshapes.com##div[id^="promo-slider-"] -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js,domain=zloteprzeboje.pl|radiopogoda.pl -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,3p,redirect-rule=google-ima.js,domain=animationdigitalnetwork.fr -! filmyhub.one, anime4u.xyz, hublinks.xyz antiadb -||pagead2.googlesyndication.com/pagead/js/google_top_exp.js$script,redirect-rule=noopjs -@@||fundingchoicesmessages.google.com/f^$script,domain=teve2.com.tr -filerox.com##body:style(overflow: auto !important; position: initial !important;) -filerox.com##.mhide -lowcygier.pl##.content-wrapper > div[id]:has(> a[target="_blank"]) -lowcygier.pl##.tile-container-small:has(> a[href*="/?utm_term=index&utm_source=mainpage-tile-"] > img) -lowcygier.pl##header.intro:style(margin-bottom: 0px !important;) -vandaaginside.nl##+js(trusted-rpnt, script, '"adblock-detection","enabled":true', '"adblock-detection","enabled":false') -uhdmovies.*##+js(nowoif) -tech.unblockedgames.world##+js(nano-sib, /count|verify|isCompleted/, , 0.001) -||analdinporn.com/rock-widget.php^$3p,frame -rock.porn##+js(set, postroll, undefined) -rock.porn##+js(set, interstitial, undefined) -rock.porn###rock-widget-host -rock.porn##.banner-sasd -rock.porn##.banner-asd -rock.porn##.fp-brand -rock.porn##.maf -rock.porn##.watch-link -rock.porn##a[href^="https://wittered-mainging.com/"] -www.tiktok.com##+js(json-prune-fetch-response, itemList.[-].ad_info.ad_id, , propsToMatch, url:api/recommend/item_list/) -||video-ads-module.ad-tech.nbcuni.com^ -vectorx.top##+js(no-fetch-if, googlesyndication) -! new.direct-dl.top popup -direct-dl.*##+js(nowoif) -! filmy4web. site popup -filmy4web.*##+js(nowoif) -||cr09.biz^ -||ballasttheir.com^ -||fulvideozrt.click^ -filmy4web.*##[href^="https://wapsing.com/"] -trancehost.com##+js(aost, document.getElementById, adsBlocked) -@@||crazygames.com/prebid.js$script,1p -crazygames.com##+js(no-fetch-if, /adinplay|googlesyndication/) -@@||blockingtv.xyz/adbdetect/$script -pererecadoida.life,newcdn.lol,bullrun2024.online###floatLayer1 -pererecadoida.life,newcdn.lol,bullrun2024.online###overover -pererecadoida.life,newcdn.lol,bullrun2024.online###obrazek -pererecadoida.life,newcdn.lol,bullrun2024.online###bannerInCenter -myp2p.*###reklama_sidebar -myp2p.*##a[rel="sponsored"] -game8.co##.js-side-ads-movie-container:remove() -modrinth.com##section.normal-page__content a[href*="/redirect/"] img -modrinth.com##section.normal-page__content :is([href^="https://ModdersAgainstBlockers.github.io"],[href^="https://billing.bloom.host/"],[href^="https://minefort.com/"],[href^="https://www.ocean-hosting.top/"],[href^="https://billing.apexminecrafthosting.com/"],[href^="https://mcph.info/"], [href*="/kinetic/"], [href*="/creeperhost"], [href^="https://www.akliz.net/"]) > img -curseforge.com##:is(.project-description,div.project-detail__content) [href^="/linkout?remoteUrl=http"]:is([href*="fxco.ca"],[href*="billing.bloom.host"],[href*="minefort.com"],[href*="www.ocean-hosting.top"],[href*="billing.apexminecrafthosting.com"],[href*="mcph.info"]) > img -arenascan.com##+js(aost, document.getElementById, adsBlocked) -arenascan.com###floatcenter -*$script,3p,denyallow=google.com|gstatic.com,domain=datanodes.to -||csdf4dn.pro^ -||players.radioonlinehd.net/ads/ -||players.radioonlinehd.net^$frame,3p,domain=mgeko.cc -||rnp.gt/radioplayer/$frame,3p,domain=rizzfables.com -rizzfables.com,mgeko.cc,flamecomics.me###radio_content.abierto -!#if cap_html_filtering -xnxxcom.xyz##^script:has-text(/interceptClickEvent|onbeforeunload|popMagic|location\.replace/) -!#else -xnxxcom.xyz##+js(rmnt, script, /interceptClickEvent|onbeforeunload|popMagic|location\.replace/) -xnxxcom.xyz##+js(acs, onbeforeunload, ask) -xnxxcom.xyz##+js(acs, document.querySelectorAll, popMagic) -xnxxcom.xyz##+js(acs, addEventListener, location.replace) -xnxxcom.xyz##+js(acs, navigator, interceptClickEvent) -!#endif -xnxxcom.xyz##+js(nostif, location.replace) -xnxxcom.xyz##+js(set-cookie, clicked, 1, , reload, 1) -xnxxcom.xyz##.fluid-spots -xnxxcom.xyz##[id^="fluid-on"] > h3 -||pobierzgrepc.com/templates/games/js/blocker.js -||pobierzgrepc.com/templates/games/js/p0per.js -videzz.net##+js(nostif, console.clear) -videzz.net##+js(set, isAdBlockDetected, false) -videzz.net##.prevent-first-click -spambox.xyz##+js(nostif, ad_block_detector) -filegram.to##+js(nowoif) -filegram.to##+js(acs, document.documentElement, break;case $.) -wiflix.*##center[style="padding: 20px;"] -crn.com##+js(no-xhr-if, googlesyndication) -.cfd/?aD*Z1c2VyPT$doc,script,popup,to=cfd -.pro/?aD*Z1c2VyPT$doc,script,popup,to=pro -.xyz/?aD*Z1c2VyPT$doc,script,popup,to=xyz -sport890.com.uy##+js(acs, gtag, adblock) -terashare.co##+js(nowoif, _blank) -terashare.co##+js(aeld, click, attached, elements, div[class="share-embed-container"]) -||api.terashare.co/api/analytics$1p -*$script,3p,denyallow=teraboxcdn.app,domain=terashare.co -||aistekso.nett^ -||petargumentswhirlpool.com^ -freemp3.tube##+js(nowoif) -sanet.lc##+js(aopr, Adcash) -! aipebel .com anti-adb -aipebel.com##+js(rmnt, script, deblocker) -ign.com##.zad.billboard:style(min-height: 1px !important;) -! antiblock.org sites -mmo69.com,ysokuhou.blog.jp##+js(acs, document.addEventListener, google_ad_client) -! moviehaxx.pro popups -moviehaxx.pro##+js(aopr, open) -*$script,3p,domain=moviehaxx.pro -||moviehaxx.pro^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation -||asjjlh.cfd^$all -moviehaxx.pro##a[href^="https://asjjlh.cfd/"] -resetscan.com##+js(aost, document.getElementById, adsBlocked) -ytmp3s.nu##+js(nowoif) -npo.nl##+js(json-prune-fetch-response, assets.preroll assets.prerollDebug, , propsToMatch, /stream-link) -phim1080.in##+js(m3u-prune, /^\w{11}[1-9]\d+\.ts/, .m3u8) -||phim1080.in/mmo/ -ezaudiobookforsoul.com##+js(set, cabdSettings, undefined) -||popcdn.day/magnitude.js^ -||freeshot.live/ads/ -||freeshot.live/manifest.js -freeshot.live##+js(no-fetch-if, /outbrain|adligature|quantserve|adligature|srvtrck/) -watch.shout-tv.com##+js(json-prune-fetch-response, adsConfiguration, , propsToMatch, /vod) -@@||cdn.cxense.com/cx.js$script,domain=tvaplus.ca -@@||api.cxense.com^$script,domain=tvaplus.ca -@@||ads.rubiconproject.com/prebid/$script,domain=tvaplus.ca -arldeemix.com##+js(noeval-if, adblock) -authenticateme.xyz##+js(rpnt, script, /if.*includes.*;/) -club386.com##+js(set, td_ad_background_click_link) -club386.com##body:style(background-image: unset !important; cursor: auto !important;) -yourstory.com###header-collapse-trigger:style(top: 0 !important; margin-top: 0 !important;) -questloops.com##+js(noeval-if, /chp_?ad/) -questloops.com##+js(aopr, b2a) -||instacart.ca/graphql?operationName=DisplayAdPlacement^$xhr,1p -onlybabes.site##+js(acs, $, btoa) -coomer.su,kemono.su##+js(acs, String.fromCharCode, \x) -audiobookbay.lu##:matches-path(/^\/($|abss\/)/) .postContent a[href^="/"]:not([href*="/forum/"]):matches-attr(href=/^\/[-a-z]+\?[a-z]{2,}=/) -audiobookbay.lu##:matches-path(/^\/($|abss\/)/) a:is([href^="/"],[href*="audiobookbay.lu/"]):matches-attr(href=/(^|audiobookbay\.lu)\/[-a-z0-9]+$/) img -bong.ink##+js(no-fetch-if, googlesyndication) -skyblock.bz##.card[style] -mathdf.com##+js(set, adBlockEnabled, false) -||imasdk.googleapis.com/js/sdkloader/ima3.js^$script,3p,redirect-rule=google-ima.js,domain=powernationtv.com -actionviewphotography.com,exporntoons.net,tyler-brown.com,ukdevilz.com##+js(acs, document.querySelectorAll, popMagic) -realcanadiansuperstore.ca#@#[data-testid="product-grid"] > .css-0:has([data-testid="product-badge"]) -realcanadiansuperstore.ca##+js(json-prune-fetch-response, layout.sections.mainContentCollection.components.[].data.productTiles.[-].sponsoredCreative.adGroupId, , propsToMatch, /search) -pornwex.tv##+js(aeld, click, fp-screen) -safestream.cc##+js(acs, atob, decodeURIComponent) -safestream.cc##+js(acs, WebAssembly, _0x) -safestream.cc##+js(acs, atob, /popundersPerIP[\s\S]*?Date[\s\S]*?getElementsByTagName[\s\S]*?insertBefore/) -! clifnewz. online popups -clifnewz.online##+js(nowoif) -clifnewz.online##+js(aost, document.createElement, inlineScript) -||updservice.site^ -! pirate sites asg -armoniscans.top,bentomanga.top,bigcomics.win,brmangas.top,cmoa.pro,hachiraw.top,j8jp.com,janime.top,jpraw.xyz,kakuyomu.in,kkraw.com,komiku.win,lectormanga.top,lermanga.top,manga1000.top,manga1001.xyz,manga1001.win,mangajp.top,mangakl.su,mangaraw.bid,mangavy.com,mangaz.win,scanita.top,shinigami-id.top,sushiscan.top,syosetu.gs##+js(no-fetch-if, url) -armoniscans.top,bentomanga.top,bigcomics.win,brmangas.top,cmoa.pro,hachiraw.top,j8jp.com,janime.top,jpraw.xyz,kakuyomu.in,kkraw.com,komiku.win,lectormanga.top,lermanga.top,manga1000.top,manga1001.xyz,manga1001.win,mangajp.top,mangakl.su,mangaraw.bid,mangavy.com,mangaz.win,scanita.top,shinigami-id.top,sushiscan.top,syosetu.gs##+js(rmnt, script, UrlLink) -*$xhr,3p,denyallow=cloudflare.net|fontawesome.com,domain=armoniscans.top|bentomanga.top|bigcomics.win|brmangas.top|cmoa.pro|hachiraw.top|j8jp.com|janime.top|jpraw.xyz|kakuyomu.in|kkraw.com|komiku.win|lectormanga.top|lermanga.top|manga1000.top|manga1001.win|manga1001.xyz|mangajp.top|mangakl.su|mangaraw.bid|mangavy.com|mangaz.win|scanita.top|shinigami-id.top|sushiscan.top|syosetu.gs -||tubator.com/lookout/wantfood.js -tubator.com##+js(aeld, getexoloader) -||wochenblitz.com^$xhr,1p,redirect-rule=nooptext -listen2.ai##.backdrop-blur-sm -listen2.ai##article > div:has(> ins.adsbygoogle) -zerioncc.pl##+js(no-fetch-if, doubleclick) -||filehaus.*/ads/$image -filehaus.*##div:has(> a[href] > img[src^="ads/"]) -||teraboxdownloader.in/assets/js/adblocker-detector.min.js^ -zippyshare.day##+js(no-fetch-if, googlesyndication) -zippyshare.day##.vr-adv-unit -zippyshare.day##.fixed-leftSd -zippyshare.day##.fixed-rightSd -vidhidepre.com##+js(nowoif, !vidhidepre.com) -@@||f95zone.to.it^$script,1p -f95zone.to.it##.ad-download -admiregirls.su##+js(acs, $, btoa) -service.webgoto.net##:not(:matches-path(/amafav/)) .image_box[style*="amazon.co"]:style(background: none !important;) -service.webgoto.net##:not(:matches-path(/amafav/)) a[href^="https://www.amazon.co.jp"][target="_blank"] -dreamdth.com,freemodsapp.in,onlytech.com##+js(acs, eval, replace) -freemodsapp.in##^script:has-text(/eval\(.+?decodeURIComponent/) -tokuzilla.net##.btn-warning[href="#watch"]:remove-attr(onclick) -javball.com##+js(no-fetch-if, adsbygoogle) -javball.com##+js(aopr, popns) -eurostreaming.casino##+js(acs, document.documentElement, break;case $.) -bakashi.tv##+js(acs, document.documentElement, break;case $.) -anitube.*,hinatasoul.com##+js(no-xhr-if, /pagead2\.googlesyndication\.com|outbrain\.com|adligature\.com|quantserve\.com|srvtrck\.com/) -lowfuelmotorsport.com##[href^="https://api2.lowfuelmotorsport.com/api/l/"] -smithsonianmag.com##+js(aeld, DOMContentLoaded, leaderboardAd) -! usersdrive .com popups -usersdrive.com##+js(aopr, popurl) -||pol.azureedge.net^$domain=usersdrive.com -||smartpc.click^$all -usersdrive.com##center > a[href][target="_blank"] > img -||snigelweb.com^$script,domain=editpad.org,redirect-rule=noopjs -editpad.org##.top_ad_box -editpad.org##label[style="font-size: 12px;text-transform: uppercase;"] -editpad.org##.inlinADs -! weirdwolf.net, linksshub.lol popups -weirdwolf.net,linksshub.lol##+js(nowoif) -9xlinks.*,9xmovie.*,desiflix.*,girlmms.com,ottxmaza.com,sexmazahd.com,webxmaza.com##^script[data-cfasync]:has-text(popundersPerIP) -desiflix.*,girlmms.com,ottxmaza.com,sexmazahd.com,webxmaza.com##+js(nowoif) -!#if env_chromium -$script,3p,denyallow=facebook.net|unpkg.com|vk.com|zencdn.net,domain=desiflix.*|girlmms.com|ottxmaza.com|sexmazahd.com|webxmaza.com -$script,3p,denyallow=fastlylb.net|googleapis.com|disqus.com|wp.com,domain=9xmovie.* -$script,3p,denyallow=google.com|googleapis.com|gstatic.com,domain=9xlinks.* -!#endif -gamingbeasts.com,uploadbeast.com##+js(nano-sib, counter) -upscaler.stockphotos.com##+js(json-prune, placements.processingFile) -app.scope.gg##a[href^="https://skinrave.gg/rewards?"]:style(height: 0px !important; margin-bottom: 0px !important;) -governing.com##+js(trusted-set-cookie, adTakeOver, seen) -governing.com##.Page-body[data-header-hat="true"] .Page-header-hat -governing.com##.Page-body[data-header-hat="true"] .Page-header:style(top: 0px !important;) -governing.com##.Page-body[data-header-hat="true"]:style(padding-top: var(--headerHeight) !important;) -! samurai.ragnarokscanlation. org detection -samurai.ragnarokscanlation.org##+js(noeval-if, ads) -thumpertalk.com##a[data-autolink]::after -thumpertalk.com##a[data-autolink]:style(text-decoration: none !important; color: inherit !important; pointer-events: none;) -thumpertalk.com##.ipsResponsive_block -||rxlife.net/src/adb.js -*$script,3p,denyallow=google.com|gstatic.com,domain=severeporn.com -||ohjfacva.com^ -##.fp-ui > a[href][target="_blank"][style^="position: absolute; inset: 0px;"] -mitaku.net##+js(set, globalThis, null) -therealdeal.com###trd-header:style(top: 0 !important;) -olympics.com###header-adv-banner:remove() -*$xhr,redirect-rule=nooptext:-1,to=~fundingchoicesmessages.google.com|~sentry.io,domain=hackerrank.com -watchdirty.to##+js(set, flashvars.protect_block, '') -watchdirty.to##+js(set, flashvars.popunder_url, '') -watchdirty.to##+js(set, flashvars.video_click_url, '') -watchdirty.to##+js(set, flashvars.adv_pre_vast, '') -||2linkpath.com^ -watchdirty.to##.block-video > .table -cinemitas.org,cinelatino.net,cineplus123.org,paraveronline.org,pobreflix.vc,verpelis.gratis##+js(trusted-set, dtGonza.playeradstime, '"-1"') -cracksports.me##+js(acs, JSON.parse, atob) -!#if cap_html_filtering -mlbbite.net,mlbstreams.ai##^script:has-text(adserverDomain) -!#else -mlbbite.net,mlbstreams.ai##+js(rmnt, script, adserverDomain) -!#endif -! Link shortener filters go into their own dedicated list -! *** filters/ubo-link-shorteners.txt *** -! gplinks all domains (gplinks.co/EWu8) -@@*$ghide,domain=gplinks.*|techreviewhere.com|djrkmusicjaunpur.in|cmsarkariyojana.com|apkeclipse.com|decidewhy.com|odiaalbumsong.com|insurelist.online|recipenames.com|filmfliqz.com|morestate.pro|puresports.pro|funkeykida.com|oriyaremix.com|freegadgets24.com|odisharemix.link|rajgarhsamachar.com|djrachit.com|120fpsconfig.com|sololevelinghindi.online|pharmastudyaid.com|sarkisozleri.pro|jobsparky.com|techglobo.com|mytastyrecipe.in|tmtaz.com|syllabusdownload.com|babamp3.in|djbarmanmusic.com|dheerajrock.com|bgmiipadview.com|bmkmafiya.com -@@*$script,xhr,to=googlesyndication.com|doubleclick.net,from=techreviewhere.com|djrkmusicjaunpur.in|cmsarkariyojana.com|apkeclipse.com|decidewhy.com|odiaalbumsong.com|insurelist.online|recipenames.com|filmfliqz.com|morestate.pro|puresports.pro|funkeykida.com|oriyaremix.com|freegadgets24.com|odisharemix.link|rajgarhsamachar.com|djrachit.com|120fpsconfig.com|sololevelinghindi.online|pharmastudyaid.com|sarkisozleri.pro|jobsparky.com|techglobo.com|mytastyrecipe.in|tmtaz.com|syllabusdownload.com|babamp3.in|djbarmanmusic.com|dheerajrock.com|bgmiipadview.com|bmkmafiya.com -@@||gplinks.in/track/$script,xhr,domain=gplinks.*|techreviewhere.com|djrkmusicjaunpur.in|cmsarkariyojana.com|apkeclipse.com|decidewhy.com|odiaalbumsong.com|insurelist.online|recipenames.com|filmfliqz.com|morestate.pro|puresports.pro|funkeykida.com|oriyaremix.com|freegadgets24.com|odisharemix.link|rajgarhsamachar.com|djrachit.com|120fpsconfig.com|sololevelinghindi.online|pharmastudyaid.com|sarkisozleri.pro|jobsparky.com|techglobo.com|mytastyrecipe.in|tmtaz.com|syllabusdownload.com|babamp3.in|djbarmanmusic.com|dheerajrock.com|bgmiipadview.com|bmkmafiya.com -bmkmafiya.com,bgmiipadview.com,dheerajrock.com,djbarmanmusic.com,babamp3.in,syllabusdownload.com,tmtaz.com,mytastyrecipe.in,techglobo.com,jobsparky.com,sarkisozleri.pro,pharmastudyaid.com,sololevelinghindi.online,120fpsconfig.com,djrachit.com,rajgarhsamachar.com,odisharemix.link,freegadgets24.com,oriyaremix.com,funkeykida.com,puresports.pro,morestate.pro,filmfliqz.com,recipenames.com,insurelist.online,odiaalbumsong.com,decidewhy.com,apkeclipse.com,cmsarkariyojana.com,djrkmusicjaunpur.in,techreviewhere.com##center:others() -bmkmafiya.com,bgmiipadview.com,dheerajrock.com,djbarmanmusic.com,babamp3.in,syllabusdownload.com,tmtaz.com,mytastyrecipe.in,techglobo.com,jobsparky.com,sarkisozleri.pro,pharmastudyaid.com,sololevelinghindi.online,120fpsconfig.com,djrachit.com,rajgarhsamachar.com,odisharemix.link,freegadgets24.com,oriyaremix.com,funkeykida.com,puresports.pro,morestate.pro,filmfliqz.com,recipenames.com,insurelist.online,odiaalbumsong.com,decidewhy.com,apkeclipse.com,cmsarkariyojana.com,djrkmusicjaunpur.in,techreviewhere.com###SmileyBanner:remove() -bmkmafiya.com,bgmiipadview.com,dheerajrock.com,djbarmanmusic.com,babamp3.in,syllabusdownload.com,tmtaz.com,mytastyrecipe.in,techglobo.com,jobsparky.com,sarkisozleri.pro,pharmastudyaid.com,sololevelinghindi.online,120fpsconfig.com,djrachit.com,rajgarhsamachar.com,odisharemix.link,freegadgets24.com,oriyaremix.com,funkeykida.com,puresports.pro,morestate.pro,filmfliqz.com,recipenames.com,insurelist.online,odiaalbumsong.com,decidewhy.com,apkeclipse.com,cmsarkariyojana.com,djrkmusicjaunpur.in,techreviewhere.com##+js(aopw, AdBDetected) -bmkmafiya.com,bgmiipadview.com,dheerajrock.com,djbarmanmusic.com,babamp3.in,syllabusdownload.com,tmtaz.com,mytastyrecipe.in,techglobo.com,jobsparky.com,sarkisozleri.pro,pharmastudyaid.com,sololevelinghindi.online,120fpsconfig.com,djrachit.com,rajgarhsamachar.com,odisharemix.link,freegadgets24.com,oriyaremix.com,funkeykida.com,puresports.pro,morestate.pro,filmfliqz.com,recipenames.com,insurelist.online,odiaalbumsong.com,decidewhy.com,apkeclipse.com,cmsarkariyojana.com,djrkmusicjaunpur.in,techreviewhere.com##+js(set, count, 0) -bmkmafiya.com,bgmiipadview.com,dheerajrock.com,djbarmanmusic.com,babamp3.in,syllabusdownload.com,tmtaz.com,mytastyrecipe.in,techglobo.com,jobsparky.com,sarkisozleri.pro,pharmastudyaid.com,sololevelinghindi.online,120fpsconfig.com,djrachit.com,rajgarhsamachar.com,odisharemix.link,freegadgets24.com,oriyaremix.com,funkeykida.com,puresports.pro,morestate.pro,filmfliqz.com,recipenames.com,insurelist.online,odiaalbumsong.com,decidewhy.com,apkeclipse.com,cmsarkariyojana.com,djrkmusicjaunpur.in,techreviewhere.com##[id*="iframe"], [id*="gpt_unit"], [id*="div-gpt-"]:style(height:0.0001px !important;) -gplinks.*##a.exclude-pop.smartlink, .exclude-pop.quiz-container, #PlayQuiz, #quiz-frame, .exclude-popad -||gamezop.com^$domain=gplinks.* -gplinks.*##+js(set, blurred, false) -gplinks.*##+js(aopr, clickCount) -*$script,3p,denyallow=cloudflare.com|github.io|google.com|googleapis.com|gstatic.com|hwcdn.net|jquery.com|recaptcha.net|tipsforce.com|unpkg.com,domain=gplinks.* -||profitsfly.com^$image,redirect-rule=1x1.gif -!#if env_chromium -@@||securepubads.g.doubleclick.net/*/gpt.js$domain=cryptednews.space -@@||securepubads.g.doubleclick.net/*/pubads_impl.js$domain=cryptednews.space -@@||googleads.g.doubleclick.net/pagead/interaction/$domain=cryptednews.space -!#endif -*$xhr,redirect-rule=noopjs,method=get|post,from=antonimos.de|ashrfd.xyz|ashrff.xyz|blackwoodacademy.org|cryptednews.space|dawenet.com|dshytb.com|erzar.xyz|poqzn.xyz|quesignifi.ca|rezst.xyz|rezsx.xyz|sinonimos.de|swgop.com|telcoinfo.online|tiktokcounter.net|tiktokrealtime.com|tpayr.xyz|tryzt.xyz|vbnmll.com|vivuq.com|waezg.xyz|waezm.xyz|starkroboticsfrc.com -@@*$xhr,redirect-rule,method=head,domain=antonimos.de|ashrfd.xyz|ashrff.xyz|blackwoodacademy.org|cryptednews.space|dawenet.com|dshytb.com|erzar.xyz|poqzn.xyz|quesignifi.ca|rezst.xyz|rezsx.xyz|sinonimos.de|swgop.com|telcoinfo.online|tiktokcounter.net|tiktokrealtime.com|tpayr.xyz|tryzt.xyz|vbnmll.com|vivuq.com|waezg.xyz|waezm.xyz|starkroboticsfrc.com -@@*$ghide,domain=sinonimos.de|antonimos.de|quesignifi.ca|tiktokrealtime.com|tiktokcounter.net|tpayr.xyz|poqzn.xyz|ashrfd.xyz|rezsx.xyz|tryzt.xyz|ashrff.xyz|rezst.xyz|dawenet.com|erzar.xyz|waezm.xyz|waezg.xyz|blackwoodacademy.org|cryptednews.space|vivuq.com|swgop.com|vbnmll.com|telcoinfo.online|dshytb.com|starkroboticsfrc.com -@@*$script,1p,domain=sinonimos.de|antonimos.de|quesignifi.ca|tiktokrealtime.com|tiktokcounter.net|tpayr.xyz|poqzn.xyz|ashrfd.xyz|rezsx.xyz|tryzt.xyz|ashrff.xyz|rezst.xyz|dawenet.com|erzar.xyz|waezm.xyz|waezg.xyz|blackwoodacademy.org|cryptednews.space|vivuq.com|swgop.com|vbnmll.com|telcoinfo.online|dshytb.com|starkroboticsfrc.com -@@||profitsfly.com^$script,domain=sinonimos.de|antonimos.de|quesignifi.ca|tiktokrealtime.com|tiktokcounter.net|tpayr.xyz|poqzn.xyz|ashrfd.xyz|rezsx.xyz|tryzt.xyz|ashrff.xyz|rezst.xyz|dawenet.com|erzar.xyz|waezm.xyz|waezg.xyz|blackwoodacademy.org|cryptednews.space|vivuq.com|swgop.com|vbnmll.com|telcoinfo.online|dshytb.com|starkroboticsfrc.com -@@/adpartner.min.js$script,domain=sinonimos.de|antonimos.de|quesignifi.ca|tiktokrealtime.com|tiktokcounter.net|tpayr.xyz|poqzn.xyz|ashrfd.xyz|rezsx.xyz|tryzt.xyz|ashrff.xyz|rezst.xyz|dawenet.com|erzar.xyz|waezm.xyz|waezg.xyz|blackwoodacademy.org|cryptednews.space|vivuq.com|swgop.com|vbnmll.com|telcoinfo.online|dshytb.com|starkroboticsfrc.com -starkroboticsfrc.com,sinonimos.de,antonimos.de,quesignifi.ca,tiktokrealtime.com,tiktokcounter.net,tpayr.xyz,poqzn.xyz,ashrfd.xyz,rezsx.xyz,tryzt.xyz,ashrff.xyz,rezst.xyz,dawenet.com,erzar.xyz,waezm.xyz,waezg.xyz,cryptednews.space,vivuq.com,swgop.com,vbnmll.com,telcoinfo.online,dshytb.com##+js(nostif, documentElement.innerHTML) -starkroboticsfrc.com,sinonimos.de,antonimos.de,quesignifi.ca,tiktokrealtime.com,tiktokcounter.net,tpayr.xyz,poqzn.xyz,ashrfd.xyz,rezsx.xyz,tryzt.xyz,ashrff.xyz,rezst.xyz,dawenet.com,erzar.xyz,waezm.xyz,waezg.xyz,blackwoodacademy.org,cryptednews.space,vivuq.com,swgop.com,vbnmll.com,telcoinfo.online,dshytb.com##+js(trusted-replace-node-text, script, /^([^{])/, "document.addEventListener('DOMContentLoaded',()=>{const i=document.createElement('iframe');i.style='height:0;width:0;border:0';i.id='aswift_0';document.body.appendChild(i);i.focus();const f=document.createElement('div');f.id='9JJFp';document.body.appendChild(f);});$1", sedCount, 2) -starkroboticsfrc.com,sinonimos.de,antonimos.de,quesignifi.ca,tiktokrealtime.com,tiktokcounter.net,tpayr.xyz,poqzn.xyz,ashrfd.xyz,rezsx.xyz,tryzt.xyz,ashrff.xyz,rezst.xyz,dawenet.com,erzar.xyz,waezm.xyz,waezg.xyz,blackwoodacademy.org,cryptednews.space,vivuq.com,swgop.com,vbnmll.com,telcoinfo.online,dshytb.com##+js(set, document.hasFocus, trueFunc) -yoshare.net###tp-snp1, #go_d, #go_d2:style(display: block !important;) -yoshare.net##button[onclick^="handleDownload"] -yoshare.net##+js(noeval-if, /chp_?ad/) -droplink.co##+js(aopr, app_vars.force_disable_adblock) -droplink.co##.text-left -||i.gyazo.com^$domain=insurancexblog.blogspot.com -! modijiurl.com/ZTnw -||moderate.cleantalk.org^$script,domain=moonplusnews.com|loanoffering.in -||blogger.googleusercontent.com^$domain=moonplusnews.com|loanoffering.in -@@*$ghide,domain=loanoffering.in|moonplusnews.com -moonplusnews.com,loanoffering.in##+js(rmnt, script, /-Ads-close|preventDefault|ai-debug|b2a|split|reload/) -moonplusnews.com,loanoffering.in##+js(rmnt, script, ai_adb) -moonplusnews.com###overlay, #SoumyaHelp-Ads, .mh-header, .mh-sidebar, .breadcrumbs, #ads-blocked -loanoffering.in##button[onclick], .captcha-check:others() -loanoffering.in###ads-blocked -moonplusnews.com,loanoffering.in##+js(nano-sib, /counter|timer/, *) -moonplusnews.com,loanoffering.in##+js(nano-stb, getElementById, *) -moonplusnews.com,loanoffering.in##+js(rpnt, script, true, false, condition, antiads) -moonplusnews.com,loanoffering.in##+js(noeval-if, /fairAdblock|chp_adblock|adsbygoogle\.js/) -moonplusnews.com,loanoffering.in##+js(aopw, AdBDetected) -moonplusnews.com,loanoffering.in###tp4, #rtg-snp2, #rtg-snp22:style(display: block !important;) -! XpShort New (http://xpshort.com/Alpha_5_Complete_Batch) -comptegratuite.com,timestej.com,theramishali.blogspot.com,thepowerofpen.in##+js(nano-sib, _0x, *, 0.001) -comptegratuite.com,timestej.com,theramishali.blogspot.com,thepowerofpen.in##.safeb:style(display: block !important;) -comptegratuite.com,timestej.com,theramishali.blogspot.com,thepowerofpen.in##li, ul, p, h2, h3, .type-related, .entry-labels, .entry-title, .entry-header, .comments-system-blogger, .post-widget, #sidebar-wrapper, .main-header -xpshort.com##+js(set, blurred, false) -xpshort.com##.banner -@@*$ghide,domain=iisfvirtual.in|starxinvestor.com|viewmyknowledge.com|infinityskull.com|nayisahara.com|wikifilmia.com|careersides.com|funkeypagali.com -||cdn.jsdelivr.net/gh/itspro-dev/*/js/main.js$script,domain=iisfvirtual.in|starxinvestor.com|viewmyknowledge.com|infinityskull.com|nayisahara.com|wikifilmia.com|careersides.com|funkeypagali.com -!#if env_firefox -funkeypagali.com,careersides.com,nayisahara.com,wikifilmia.com,infinityskull.com,viewmyknowledge.com,iisfvirtual.in,starxinvestor.com##+js(rmnt, script, /ABDetected|navigator.brave|fetch/) -!#else -funkeypagali.com,careersides.com,nayisahara.com,wikifilmia.com,infinityskull.com,viewmyknowledge.com,iisfvirtual.in,starxinvestor.com##^script:has-text(/ABDetected|navigator.brave|fetch/) -!#endif -funkeypagali.com,careersides.com,nayisahara.com,wikifilmia.com,infinityskull.com,viewmyknowledge.com,iisfvirtual.in,starxinvestor.com##+js(no-fetch-if, googlesyndication) -funkeypagali.com,careersides.com,nayisahara.com,wikifilmia.com,infinityskull.com,viewmyknowledge.com,iisfvirtual.in,starxinvestor.com##+js(noeval-if, /chp_?ad/) -funkeypagali.com,careersides.com,nayisahara.com,wikifilmia.com,infinityskull.com,viewmyknowledge.com,iisfvirtual.in,starxinvestor.com##+js(set, count, 0) -funkeypagali.com,careersides.com,nayisahara.com,wikifilmia.com,infinityskull.com,viewmyknowledge.com,iisfvirtual.in,starxinvestor.com###tp98, #btn6:style(display: block !important;) -funkeypagali.com,careersides.com,nayisahara.com,wikifilmia.com,infinityskull.com,viewmyknowledge.com,iisfvirtual.in,starxinvestor.com##[id$="-Ads"], [id*="-gpt-ad"], center > h3, #skull, #content, #btnx, .mh-clearfix.mh-wrapper:remove() -go.publicearn.com##.page-header > h3, .banner, .bg-soft-primary -techcyan.com,kiktu.com,upshrink.com,trangchu.news,banaraswap.in##+js(acs, $, google_ads_iframe_) -@@*$ghide,domain=techcyan.com|kiktu.com|upshrink.com|trangchu.news|banaraswap.in -@@*$xhr,domain=techcyan.com|kiktu.com|upshrink.com|trangchu.news|banaraswap.in -*$image,domain=techcyan.com|kiktu.com|upshrink.com|trangchu.news|banaraswap.in,redirect-rule=1x1.gif -@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=techcyan.com|kiktu.com|upshrink.com|trangchu.news|banaraswap.in -||player.aniview.com/script/*$script,redirect-rule=noopjs,domain=techcyan.com|kiktu.com|upshrink.com|trangchu.news|banaraswap.in -techcyan.com,kiktu.com,upshrink.com,trangchu.news,banaraswap.in##body:style(overflow: visible !important;) -@@||upshrink.com^$script,1p -upshrink.com##+js(aeld, DOMContentLoaded, iframe) -upshrink.com##+js(set, blurred, false) -upshrink.com##^script:has-text(/iframe|setTimeout|0x/) -||blogspot.com/*/s336/Upshrink336x280.jpg -||upshrink.in^$frame,1p -||upshrink.in/updealz-1^$frame,domain=upshrink.com -/wp-content/uploads/play.webp$domain=techcyan.com|kiktu.com|upshrink.com|trangchu.news|banaraswap.in -||kiktu.com/wp-json/wp-statistics/$xhr,important -||kiktu.com/wp-content/plugins/azee-safelink/img/clickheretodownload*.png$image,1p -||kiktu.com/wp-content/plugins/azee-safelink/img/Download*.png$image,1p -||kiktu.com/wp-content/plugins/azee-safelink/img/download_btns*.png$image,1p -||kiktu.com/wp-content/plugins/azee-safelink/img/play*.jpg$image,1p -||kiktu.com/wp-content/plugins/azee-safelink/img/StartDownload*.gif$image,1p -techcyan.com,kiktu.com,upshrink.com,trangchu.news,banaraswap.in###btx1, #btx2, #wg-genx > .mediafire:style(visibility: hidden !important;) -techcyan.com,kiktu.com,upshrink.com,trangchu.news,banaraswap.in##+js(spoof-css, #btx1\, #btx2\, #wg-genx > .mediafire, visibility, visible) -.click/?s=$popup,domain=techcyan.com|kiktu.com|upshrink.com|trangchu.news|banaraswap.in -*$image,domain=techcyan.com|kiktu.com|upshrink.com|trangchu.news|banaraswap.in,redirect-rule=2x2.png:5 -! Mlwbd Download -||tactictablepolite.com^$script,domain=freethemesy.com|tech24us.com -tech24us.com,freethemesy.com##+js(nano-sib, counter, *, 0.02) -! psa.wf Download Shorteners -@@||get-to.link^$ghide -get-to.link##+js(aopr, exoJsPop101) -get-to.link##+js(aopr, document.dispatchEvent) -get-to.link##+js(nowoif) -enit.in,financerites.com##+js(nostif, , 5) -enit.in##+js(nowoif) -enit.in##+js(set, blurred, false) -enit.in,financerites.*##+js(nano-stb, downloadBtn, *) -enit.in##footer, div#gads.banner-inner -enit.it###gads[disabled]:remove-attr(disabled) -enit.in,financerites.*##.footerLink.hidden:style(display: block !important;) -enit.in,financerites.*##.getlink:others() -trip.businessnews-nigeria.com,te-it.com,world2our.com,mobi2c.com,tech5s.co,ez4mods.com,bluetechno.net,forexit.online###go_d:remove-attr(disabled) -trip.businessnews-nigeria.com,te-it.com,world2our.com,mobi2c.com,bluetechno.net,forexit.online###submitBtn, #go_d, #devozon-snp, #submitBtn, #tp-snp1, #go_d2:others() -trip.businessnews-nigeria.com,te-it.com,world2our.com,mobi2c.com,tech5s.co,ez4mods.com,bluetechno.net,forexit.online###submitBtn, #go_d, #devozon-snp, #submitBtn, #tp-snp1, #go_d2:style(display: block !important;) -junkyponk.com,healthfirstweb.com,vocalley.com,yogablogfit.com,howifx.com,en.financerites.com,mythvista.com,livenewsflix.com,cureclues.com,apekite.com##+js(set, timeSec, 0) -junkyponk.com,healthfirstweb.com,vocalley.com,yogablogfit.com,howifx.com,en.financerites.com,mythvista.com,livenewsflix.com,cureclues.com,apekite.com##+js(nano-stb, getlink, *, 0.001) -junkyponk.com,healthfirstweb.com,vocalley.com,yogablogfit.com,howifx.com,en.financerites.com,mythvista.com,livenewsflix.com,cureclues.com,apekite.com##+js(noeval-if, replace) -junkyponk.com,healthfirstweb.com,vocalley.com,yogablogfit.com,howifx.com,en.financerites.com,mythvista.com,livenewsflix.com,cureclues.com,apekite.com###gads -junkyponk.com,healthfirstweb.com,vocalley.com,yogablogfit.com,howifx.com,en.financerites.com,mythvista.com,livenewsflix.com,cureclues.com,apekite.com##.getlink, #getlink:remove-attr(disabled) -junkyponk.com,healthfirstweb.com,vocalley.com,yogablogfit.com,howifx.com,en.financerites.com,mythvista.com,livenewsflix.com,cureclues.com,apekite.com##.container:style(font-size: 0px !important;) -junkyponk.com,healthfirstweb.com,vocalley.com,yogablogfit.com,howifx.com,en.financerites.com,mythvista.com,livenewsflix.com,cureclues.com,apekite.com##.container > center:others() -en.financerites.com##form:others() -clk.*##+js(nowoif) -clk.*##+js(set, blurred, false) -||canoemissioninjunction.com^ -||rdrclk.com^ -||clk.wiki/ads$frame -||cmp.quantcast.com^$domain=healthfirstweb.com|vocalley.com|yogablogfit.com|howifx.com|en.financerites.com|junkyponk.com|mythvista.com -! ez4short.com/oynPc14?src=PSA -ez4short.com##+js(aopr, app_vars.force_disable_adblock) -ez4short.com##+js(set, blurred, false) -ez4short.com##.faq -ez4short.com##footer -techmody.io##+js(nano-sib, , *, 0) -tech5s.co##+js(noeval-if, ads) -tech5s.co,ez4mods.com##+js(nano-sib, /.?/, *, 0.02) -tech5s.co,ez4mods.com##.btn-primary, #go_d, #tp-snp1, #go_d2:others() -tech5s.co,ez4mods.com##+js(aopr, adBlockDetected) -||cmp.quantcast.com^$domain=tech5s.co|themezon.net -||push-sdk.$3p -||a.labadena.com^$popup -||feistyhelicopter.com^$popup -! easysky.in focus and timer -easysky.in,veganab.co##+js(set, blurred, false) -veganab.co,camdigest.com##+js(nano-sib, /wpsafe|wait/, *, 0.001) -veganab.co,camdigest.com##+js(rmnt, script, deblocker) -veganab.co,camdigest.com###wpsafe-link, #section2:style(display: block !important;) -veganab.co,camdigest.com###wpsafe-link, #section2:others() -techy.veganab.co##.text-left, div.inst.box, .banner-inner -! earn2me.com (earn2me.com/kVFvyX) -nichapk.com,easyworldbusiness.com,riveh.com###yuidea-snp:style(display: block !important;) -nichapk.com,easyworldbusiness.com,riveh.com##center, [src*="google.com/recaptcha/"]:others() -nichapk.com,easyworldbusiness.com,riveh.com##+js(nano-sib, timer, *, 0.02) -nichapk.com,easyworldbusiness.com,riveh.com###tie-wrapper:style(min-height:initial! important;) -blog.filepresident.com##.box-main > [src], .content, .r-bg, .short, .download-btn, h4 -naukrilelo.in##+js(no-fetch-if, ads) -naukrilelo.in##+js(nano-sib, timer, 1300) -naukrilelo.in###tp98, #tp-snp2:style(display: block !important;) -naukrilelo.in###tp98, #tp-generate, #tp-snp2, [src*="https://www.google.com/recaptcha"]:others() -adrinolinks.in##+js(set, blurred, false) -myprivatejobs.com,wikitraveltips.com,amritadrino.com##+js(noeval-if, /fairAdblock|chp_adblock|adsbygoogle\.js/) -myprivatejobs.com,wikitraveltips.com,amritadrino.com##.g-recaptcha, #tp-snp2, .captcha-check, [src*="google.com/recaptcha/"]:others() -myprivatejobs.com,wikitraveltips.com,amritadrino.com##+js(ra, disabled, #tp-snp2) -myprivatejobs.com,wikitraveltips.com,amritadrino.com###overlay, .popup -myprivatejobs.com,wikitraveltips.com,amritadrino.com##+js(set, count, 0) -myprivatejobs.com,wikitraveltips.com,amritadrino.com##+js(set, detectAdBlock, noopFunc) -@@||exeo.app^$ghide -exeo.app##.actions, .earning-steps ~*, .earning-steps, header, footer, .ad-element -@@*$ghide,domain=hipsonyc.com|theforyou.in|gyanitheme.com|hostadviser.net -hipsonyc.com,theforyou.in,gyanitheme.com,hostadviser.net##+js(no-xhr-if, adsbygoogle) -hipsonyc.com,theforyou.in,gyanitheme.com,hostadviser.net##.getox -hipsonyc.com,theforyou.in,gyanitheme.com,hostadviser.net##+js(rpnt, script, /^window\.location\.href.*\'$/gms) -hipsonyc.com,theforyou.in,gyanitheme.com,hostadviser.net###waiting, #pop-button:style(display: block !important;) -hipsonyc.com,theforyou.in,gyanitheme.com,hostadviser.net###waiting, #pop-button, .modal-content:others() -hipsonyc.com,theforyou.in,gyanitheme.com,hostadviser.net##+js(nano-stb, gotoo, *) -hipsonyc.com###notarobot, #gotolink:style(display: block !important;) -hipsonyc.com,~tech.hipsonyc.com###notarobot, #gotolink:others() -hipsonyc.com###gotolink[disabled]:remove-attr(disabled) -hipsonyc.com##+js(nano-sib, countDown, *) -go.bloggingaro.com,go.gyanitheme.com,go.theforyou.in,go.hipsonyc.com##+js(set, blurred, false) -go.bloggingaro.com,go.gyanitheme.com,go.theforyou.in,go.hipsonyc.com##.blog-item, .banner-inner, footer -||buoydeparturediscontent.com^$all -! LinkShortify (https://lksfy.com/ovKOaZ) -bookszone.in##+js(nano-sib, timer, *) -bookszone.in###tp98, #jatinbtn-continue:style(display: block !important;) -bookszone.in###tp98, #jatinbtn-continue:others() -graphicuv.com##+js(aost, setTimeout, adsBlocked) -graphicuv.com###popup, #blur-background -graphicuv.com,learnmany.in###btn6:style(display: block !important;) -graphicuv.com,learnmany.in###btn6:others() -learnmany.in##+js(rmnt, script, deblocker) -shortix.co###btn6, #tp98:style(display: block !important;) -shortix.co###btn6, #tp98:others() -top10cafe.se##+js(no-fetch-if, googlesyndication, length:10) -top10cafe.se##+js(aopr, SMart1) -! owllink.net & birdurls.com (go.owllink.net/1wij6ola) -uptechnologys.com,sevenjournals.com###yuidea-snp, #btn6:style(display: block !important;) -uptechnologys.com,sevenjournals.com###yuidea-snp, #btn6, center, [src*="google.com/recaptcha"]:others() -uptechnologys.com,sevenjournals.com##+js(nano-sib, /.?/, *, 0.001) -uptechnologys.com,sevenjournals.com###yuidea-snp, #btn6, #yuidea, #countdown:others() -uptechnologys.com,sevenjournals.com##+js(acs, eval, replace) -sevenjournals.com##+js(nobab) -||cmp.quantcast.com^$domain=uptechnologys.com|sevenjournals.com -birdurls.com##+js(nowoif) -birdurls.com###bg_popup -birdurls.com##+js(set, blurred, false) -birdurls.com##.box-main p -birdurls.com##.box-main center -birdurls.com###link-view > br -*$frame,script,3p,denyallow=consensu.org|google.com|gstatic.com|recaptcha.net|quantcast.com|cloudflare.com,domain=birdurls.com -hit-films.com###btn6:style(display: block !important;) -hit-films.com###btn6:others() -! cut.lc Shortner -yalifin.xyz,lrncook.xyz###makingdifferenttimer:style(display: block !important;) -yalifin.xyz,lrncook.xyz##+js(nano-sib, /.?/, *, 0.02) -yalifin.xyz,lrncook.xyz##center:others() -! vlsshort.com,V2links,vzu.us -gadgetsreview27.com,newsbawa.com##center:others() -gadgetsreview27.com,newsbawa.com##+js(nano-sib, /.?/, *, 0.02) -/js/nt.js$domain=fc-lc.xyz|tmail.io -fc-lc.*##+js(aeld, , /_blank/i) -tmail.io##+js(aopw, detectAdblock) -tmail.io,fc-lc.*##+js(no-fetch-if, adsbygoogle) -tmail.io,fc-lc.*##+js(noeval-if, ppuQnty) -tmail.io,fc-lc.*##+js(nowoif) -@@||tmail.io^$ghide -tmail.io###glink:style(display: block !important;) -||curryfielddistribution.com^ -||turbiditedeklehexoses.monster^ -||whitepark9.com^ -||tophostingapp.com/dwn-$image -@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=hotmediahub.com|terabox.fun|fansonlinehub.com|teralink.me|terashare.me|teraearn.com -@@*$ghide,domain=hotmediahub.com|terabox.fun|fansonlinehub.com|teralink.me|terashare.me|teraearn.com -||gamerplay*.space^$domain=hotmediahub.com|terabox.fun|fansonlinehub.com|teralink.me|terashare.me|teraearn.com -fansonlinehub.com,hotmediahub.com,terabox.fun,teralink.me,terashare.me,teraearn.com##body:style(overflow: auto !important;) -fansonlinehub.com,hotmediahub.com,terabox.fun,teralink.me,terashare.me,teraearn.com##[id^="pop-ad"], div.artical-content, .full-box, .bottom-adsense, .article-recommend, .article-next, [id^="ad-box-"], .full-ctr -terabox.fun##.short-link-home-bottom -fansonlinehub.com,hotmediahub.com,terabox.fun,teralink.me,terashare.me,teraearn.com##+js(json-prune, web_share_ads_adsterra_config wap_short_link_middle_page_ad wap_short_link_middle_page_show_time data.ads_cpm_info) -fansonlinehub.com,hotmediahub.com,terabox.fun,teralink.me,terashare.me,teraearn.com##+js(nano-stb, value, *) -fansonlinehub.com,hotmediahub.com,terabox.fun,teralink.me,terashare.me,teraearn.com##+js(nano-sib, clearInterval, *) -4funbox.com,nephobox.com,1024tera.com,terabox.*##+js(set, Object.prototype.isAllAdClose, true) -4funbox.com,nephobox.com,1024tera.com,terabox.*##.ad-eggplant, .operate-box -@@||linkvertise.com^$ghide -linkvertise.com##+js(acs, addEventListener, DOMNodeRemoved) -linkvertise.com##+js(acs, document.dispatchEvent, CustomEvent) -linkvertise.com##+js(acs, onload, adsbygoogle) -linkvertise.com##+js(aeld, load, nextFunction) -linkvertise.com##+js(json-prune, data.meta.require_addon data.meta.require_captcha data.meta.require_notifications data.meta.require_og_ads data.meta.require_video data.meta.require_web data.meta.require_related_topics data.meta.require_custom_ad_step data.meta.og_ads_offers data.meta.addon_url data.displayAds data.linkCustomAdOffers) -linkvertise.com##+js(json-prune, data.getDetailPageContent.linkCustomAdOffers.[-].title) -linkvertise.com##+js(json-prune, data.getTaboolaAds.*) -linkvertise.com##+js(set, isAdBlockActive, false) -linkvertise.com##.skeleton__image > ngx-skeleton-loader[appearance="line"] > span.progress:empty -||streamrail.com^$script,domain=linkvertise.* -! link.vipurl.in -acetack.com##+js(noeval-if, /chp_?ad/) -acetack.com,androidquest.com,apklox.com,chhaprawap.in,gujarativyakaran.com,kashmirstudentsinformation.in,kisantime.com,pastescript.com,trimorspacks.com,updrop.link##+js(nano-sib, /.?/, *, 0.02) -acetack.com,androidquest.com,apklox.com,chhaprawap.in,gujarativyakaran.com,kashmirstudentsinformation.in,kisantime.com,pastescript.com,trimorspacks.com,updrop.link##+js(no-fetch-if, googlesyndication) -acetack.com,androidquest.com,apklox.com,chhaprawap.in,gujarativyakaran.com,kashmirstudentsinformation.in,kisantime.com,pastescript.com,trimorspacks.com,updrop.link###wpsafe-generate, #wpsafelink-landing, #wpsafe-link:style(display: block !important;) -acetack.com,androidquest.com,apklox.com,chhaprawap.in,gujarativyakaran.com,kashmirstudentsinformation.in,kisantime.com,pastescript.com,trimorspacks.com,updrop.link###adb -try2link.com##+js(aopr, app_vars.force_disable_adblock) -try2link.com##+js(set, blurred, false) -try2link.com##+js(aopr, popUp) -try2link.com##.text-left.box-main2, footer -fx-gd.net,healthy4pepole.com,hightrip.net,to-travel.net###submitBtn, #go_d, #wolfexe-snp:style(display: block !important;) -fx-gd.net,healthy4pepole.com,hightrip.net,to-travel.net###submitBtn, #go_d, #wolfexe-snp:others() -fx-gd.net,healthy4pepole.com,hightrip.net,to-travel.net##+js(nano-sib, /.?/, *, 0.02) -jameeltips.us##+js(aopr, app_vars.force_disable_adblock) -jameeltips.us##+js(set, blurred, false) -jameeltips.us#@#.banner-728x90 -||jameeltips.us^$3p -*$script,domain=gainbtc.*,redirect-rule=noopjs -gainbtc.click##._hide -gainbtc.click##.panel-heading > center -||adcryp.to^$3p -fadedfeet.com,homeculina.com,ineedskin.com,kenzo-flowertag.com,lawyex.co,mdn.lol##+js(nostif, /adblock|isRequestPresent/) -mdn.lol##+js(no-fetch-if, bmcdn6) -homeculina.com,ineedskin.com,kenzo-flowertag.com,lawyex.co,mdn.lol##form[id]:style(display: block !important;) -kenzo-flowertag.com,mdn.lol##.form-group > div[style^="width:"] -mdn.lol##div[style^="width:"][style$=" height: 90px;"] -mdn.lol##+js(acs, window.onload, devtools) -kenzo-flowertag.com,mdn.lol##+js(rmnt, script, /bypass.php) -homeculina.com,ineedskin.com,kenzo-flowertag.com,lawyex.co,mdn.lol##form [id][style="display: none;"]:style(display: block !important;) -awgrow.com##.text-center:style(display: block !important;) -btcbitco.in##+js(acs, window.onload, innerHTML) -btcbitco.in,btcsatoshi.net,cempakajaya.com,crypto4yu.com,readbitcoin.org,wiour.com##+js(set, document.hasFocus, trueFunc) -btcbitco.in,btcsatoshi.net,cempakajaya.com,crypto4yu.com,gainl.ink,readbitcoin.org,wiour.com##+js(no-fetch-if, /adoto|\/ads\/js/) -gainl.ink##+js(set, blurred, false) -gainl.ink##+js(nowoif) -ohionowcast.info,wiour.com##+js(aeld, load, htmls) -@@||acceptable.a-ads.com/1^$xhr,domain=gainl.ink -@@||googletagmanager.com/gtm.js$domain=btcbitco.in|btcsatoshi.net|crypto4yu.com|gainl.ink|readbitcoin.org|wiour.com -gainl.ink#@##adclose -btcbitco.in,btcsatoshi.net,cempakajaya.com,crypto4yu.com,gainl.ink,manofadan.com,readbitcoin.org,wiour.com##^script:has-text(htmls) -btcbitco.in,btcsatoshi.net,cempakajaya.com,crypto4yu.com,gainl.ink,manofadan.com,readbitcoin.org,wiour.com##html, body:style(overflow: auto !important;) -!#if !cap_html_filtering -btcbitco.in,btcsatoshi.net,cempakajaya.com,crypto4yu.com,gainl.ink,manofadan.com,readbitcoin.org,wiour.com##+js(rmnt, script, htmls) -!#endif -||bitcotasks.com//files/banners/banner- -||cryptocoinsad.com/ads/js/slider_right.js$script,redirect=noopjs -btcbitco.in##+js(acs, addEventListener, devtools) -btcbitco.in,btcsatoshi.net,wiour.com##+js(acs, document.getElementById, ads) -crypto4yu.com,manofadan.com,readbitcoin.org##+js(acs, addEventListener, ads) -bitcotasks.com##+js(nostif, offsetWidth) -bitcotasks.com##+js(nostif, alert) -btcbitco.in,btcsatoshi.net,wiour.com##.post > center > [href] > img -btcbitco.in,btcsatoshi.net,crypto4yu.com,readbitcoin.org,wiour.com##+js(nowoif, ?key=) -/invoke.js$script,redirect-rule=noop.js,domain=btcbitco.in|btcsatoshi.net|crypto4yu.com|readbitcoin.org|wiour.com -||cryptocoinsad.com/ads/js/popunder.js$script,redirect=noop.js,domain=btcbitco.in|btcsatoshi.net|crypto4yu.com|readbitcoin.org|wiour.com -||acceptable.a-ads.com^$frame,redirect-rule=noop.html,domain=btcbitco.in|btcsatoshi.net|crypto4yu.com|readbitcoin.org|wiour.com -btcbitco.in,btcsatoshi.net,crypto4yu.com,readbitcoin.org,wiour.com##div.text-center[id]:style(height: 100px !important;) -@@||static.surfe.pro/js/net.js$domain=btcbitco.in|btcsatoshi.net|crypto4yu.com|readbitcoin.org -@@||surfe.pro/net/teaser$xhr,domain=btcbitco.in|btcsatoshi.net|crypto4yu.com|readbitcoin.org -btcbitco.in##+js(set, isRequestPresent, true) -||bmcdn6.com^$script,redirect-rule=noop.js -blog.cryptowidgets.net,blog.insurancegold.in,blog.wiki-topia.com##+js(rmnt, script, /\/detected\.html|Adblock/) -blog.cryptowidgets.net,blog.insurancegold.in,blog.wiki-topia.com##+js(set, isRequestPresent, true) -blog.cryptowidgets.net,blog.insurancegold.in,blog.wiki-topia.com##+js(rpnt, script, = false;, = true;, condition, innerHTML) -blog.coinsvalue.net,blog.cookinguide.net,blog.freeoseocheck.com##+js(rmnt, script, /\/detected\.html|Adblock/) -blog.coinsvalue.net,blog.cookinguide.net,blog.freeoseocheck.com##+js(set, isRequestPresent, true) -blog.coinsvalue.net,blog.cookinguide.net,blog.freeoseocheck.com##+js(rpnt, script, = false;, = true;, condition, innerHTML) -||rollercoin.com^$image,3p,redirect-rule=32x32.png,domain=blog.cryptowidgets.net|blog.insurancegold.in|blog.wiki-topia.com|blog.coinsvalue.net|blog.cookinguide.net|blog.freeoseocheck.com|blog.makeupguide.net|blog.carstopia.net|blog.carsmania.net|blog.coinsrise.net -||czilladx.com^$xhr,3p,redirect-rule=nooptext,domain=blog.cryptowidgets.net|blog.insurancegold.in|blog.wiki-topia.com|blog.coinsvalue.net|blog.cookinguide.net|blog.freeoseocheck.com|blog.makeupguide.net|blog.carstopia.net|blog.carsmania.net|blog.coinsrise.net -@@||cdn.bmcdn6.com/js/*d0.js^$domain=blog.cryptowidgets.net|blog.insurancegold.in|blog.wiki-topia.com|blog.coinsvalue.net|blog.cookinguide.net|blog.freeoseocheck.com|blog.makeupguide.net|blog.carstopia.net|blog.carsmania.net|blog.coinsrise.net -blog.coinsrise.net,blog.cryptowidgets.net,blog.insurancegold.in,blog.wiki-topia.com,blog.coinsvalue.net,blog.cookinguide.net,blog.freeoseocheck.com,blog.makeupguide.net,blog.carstopia.net,blog.carsmania.net##+js(nostif, alert) -blog.coinsrise.net,blog.cryptowidgets.net,blog.insurancegold.in,blog.wiki-topia.com,blog.coinsvalue.net,blog.cookinguide.net,blog.freeoseocheck.com,blog.makeupguide.net,blog.carstopia.net,blog.carsmania.net##+js(rpnt, script, "'IFRAME'", "'BODY'") -blog.carstopia.net,blog.carsmania.net##+js(noeval-if, /chp_?ad/) -! aylink.co popup ads -aylink.co##+js(rmnt, script, toast) -aylink.co,gitizle.vip,shtms.co##+js(aopr, xmlhttp) -aylink.co,gitizle.vip,shtms.co##+js(nano-sib) -aylink.co,gitizle.vip,shtms.co##+js(ra, data-ppcnt_ads|onclick, #main) -aylink.co,gitlink.pro,gitizle.vip,shtms.co##.alternative-ad -@@||shorterall.com^$ghide -@@||allgroups.online^$script,css,domain=promo-visits.site|satoshi-win.xyz|shorterall.com -@@*$script,1p,domain=promo-visits.site|satoshi-win.xyz -*$frame,redirect-rule=noopframe,domain=promo-visits.site|satoshi-win.xyz|shorterall.com -*$script,redirect-rule=noopjs,domain=promo-visits.site|satoshi-win.xyz|shorterall.com -*$xhr,3p,domain=promo-visits.site,redirect-rule=nooptext -promo-visits.site,satoshi-win.xyz,shorterall.com##+js(set, blurred, false) -promo-visits.site,satoshi-win.xyz,shorterall.com###qc-cmp2-container + p -shorterall.com##+js(nostif, alert) -shorterall.com##+js(acs, decodeURI, decodeURIComponent) -shorterall.com##+js(aopw, atOptions) -promo-visits.site,shorterall.com##+js(nowoif) -*$popup,domain=promo-visits.site|shorterall.com -@@||displayvertising.com^$script,domain=promo-visits.site|shorterall.com -@@||c.adsco.re^$script,domain=promo-visits.site|shorterall.com -@@||adsco.re/p$xhr,domain=promo-visits.site|shorterall.com -@@||ads.themoneytizer.com^$script,domain=promo-visits.site|shorterall.com -@@||c.tmyzer.com^$xhr,domain=promo-visits.site|shorterall.com -@@||gum.criteo.com/sid/json$xhr,domain=promo-visits.site|shorterall.com -@@||prebid.smilewanted.com^$xhr,domain=promo-visits.site|shorterall.com -@@||promo-visits.site^$ghide -||ultimateaderaser.com^$all -/click?pid=*&offer_id= -satoshi-win.xyz##+js(nostif, nextFunction) -satoshi-win.xyz##+js(ra, onclick, .btn-success.get-link, stay) -satoshi-win.xyz##+js(set, fouty, true) -satoshi-win.xyz##.banner-inner -promo-visits.site,shorterall.com##.btn-primary:style(visibility: visible !important;) -promo-visits.site##+js(ra, disabled, .btn-primary) -promo-visits.site###newlayercontent -/php_code.php?sid=$domain=promo-visits.site|satoshi-win.xyz|shorterall.com,important -homeairquality.org##+js(aeld, blur, focusOut) -homeairquality.org##+js(no-fetch-if, googletagmanager) -homeairquality.org##+js(set, detectAdblock, noopFunc) -@@||homeairquality.org^$ghide -*$script,redirect-rule=noopjs,domain=homeairquality.org -homeairquality.org##.ezo_ad -homeairquality.org##.adtester-container:style(min-height: 0px !important; max-height: 1px !important; opacity: 0 !important;) -mynewsmedia.co##+js(no-fetch-if, googlesyndication) -@@||ads.themoneytizer.com/s/requestform.js?$script,domain=satoshi-win.xyz -@@||gibevay.ru/retarget/get$script,domain=satoshi-win.xyz -@@||googletagservices.com/tag/js/gpt.js$script,domain=satoshi-win.xyz -@@||govbusi.info^$script,domain=satoshi-win.xyz -@@||themoneytizer.com^$frame,domain=satoshi-win.xyz -@@||umekana.ru/retarget/get$script,domain=satoshi-win.xyz -@@||zatnoh.com/pw/*=eyJ.js$script,domain=satoshi-win.xyz -satoshi-win.xyz##^responseheader(refresh) -||googletagmanager.com/gtag/js$script,redirect-rule=googletagmanager_gtm.js:10,domain=satoshi-win.xyz -||id5-sync.com^$image,redirect-rule=1x1.gif,domain=satoshi-win.xyz -|about:blank$popup,domain=satoshi-win.xyz -||funuzai.ru^$popup -encurtandourl.com##+js(nostif, getComputedStyle, 250) -encurtandourl.com##+js(nostif, nextFunction) -encurtandourl.com##+js(set, blurred, false) -encurtandourl.com##.banner -@@||overgal.com^$ghide -overgal.com##+js(no-fetch-if, googlesyndication) -overgal.com##+js(nano-sib, timeLeft, *, 0.001) -||ad.tradertimerz.media^ -suaurl.com##+js(aopr, document.oncontextmenu) -suaurl.com##+js(aopr, shortcut) -suaurl.com##+js(aost, document.querySelector, suaads) -suaurl.com##+js(rpnt, script, typeof cdo == 'undefined' || document.querySelector('div.textads.banner-ads.banner_ads.ad-unit.ad-zone.ad-space.adsbox') == undefined, false) -reidoplacar.com###divactioncheck > .mb-3 -reidoplacar.com##.result_content_ff:style(display: block !important;) -mamahawa.com##+js(rpnt, script, /window\.location\.href='.*';/, , condition, openLink) -forextrader.site##+js(set, blurred, false) -||10short.pro/GoogleNe*.js$script,3p,domain=forextrader.site -10short.*,mamahawa.com,lollty.pro##+js(nano-sib, timer, *, 0.001) -10short.*,mamahawa.com,lollty.pro##.text-left -mamahawa.com###popup -@@||postazap.com^$ghide -postazap.com##+js(set, blurred, false) -~encurtador.postazap.com,postazap.com##+js(nano-sib, timer, *, 0.001) -postazap.com##+js(nostif, ai_adb) -postazap.com##+js(no-xhr-if, googlesyndication) -postazap.com###page, .image-container -rawlazy.si##+js(nano-stb, /\$\('|ai-close/, *, 0.001) -bigdata.rawlazy.si##+js(nano-sib, counter, *, 0.001) -rawlazy.si##.content-text.lh-16.font-12x -! Bitlinks -paidinsurance.in,conghuongtu.net,coinseidon.com###wpsafelinkhuman, #wpsafe-link:style(display: block !important;) -paidinsurance.in,conghuongtu.net,coinseidon.com###wpsafelinkhuman, #wpsafe-link:others() -placementsmela.com###wpsafe-link:style(display: block !important;) -placementsmela.com###wpsafe-link:others() -cryptokinews.com##+js(nano-sib) -cryptokinews.com##center:others() -!#if cap_html_filtering -sugarona.com,nishankhatri.xyz,highkeyfinance.com,amanguides.com##^script:has-text(AdbModel) -!#else -sugarona.com,nishankhatri.xyz,highkeyfinance.com,amanguides.com##+js(rmnt, script, AdbModel) -!#endif -nishankhatri.xyz###pro-continue, #pro-btn, #my-btn:style(display: block !important;) -nishankhatri.xyz###pro-continue, #pro-btn, #my-btn:others() -sugarona.com###my-btn, #my-btn2:style(display: block !important;) -sugarona.com###my-btn, #my-btn2:others() -reminimod.co,highkeyfinance.com,amanguides.com##+js(no-fetch-if, ads) -reminimod.co,highkeyfinance.com,amanguides.com###wpsafe-link:style(display: block !important;) -reminimod.co,highkeyfinance.com,amanguides.com###wpsafe-link:others() -blog.disheye.com###gourl:style(display: block !important;) -blog.disheye.com###gourl:others() -amanguides.com,highkeyfinance.com##+js(rmnt, script, deblocker) -! cuty.io (https://cutty.app/b6InEDRzF8NF) -cety.app,exego.app,cutlink.net,cutsy.net,cutyurls.com,cutty.app,cutnet.net##.steps-to-earn, .flex.share-icons-container, .register-banner, fieldset, .partners-container, .actions -cety.app,exego.app,cutlink.net,cutsy.net,cutyurls.com,cutty.app,cutnet.net##+js(aeld, click, /handleClick|popup/) -cety.app,exego.app,cutlink.net,cutsy.net,cutyurls.com,cutty.app,cutnet.net##+js(rmnt, script, popup) -cety.app,exego.app,cutlink.net,cutsy.net,cutyurls.com,cutty.app,cutnet.net##+js(set, blurred, false) -adcrypto.net,admediaflex.com,aduzz.com,bitcrypto.info,cdrab.com,datacheap.io,hbz.us,savego.org,owsafe.com,sportweb.info###wpsafe-link:style(display: block !important;) -adcrypto.net,admediaflex.com,aduzz.com,bitcrypto.info,cdrab.com,datacheap.io,hbz.us,savego.org,owsafe.com,sportweb.info##+js(no-fetch-if, ads) -adcrypto.net,admediaflex.com,aduzz.com,bitcrypto.info,cdrab.com,datacheap.io,hbz.us,savego.org,owsafe.com,sportweb.info##+js(aeld, load, bypass) -!aduzz.com,bitcrypto.info##+js(set, wpsafelinkCount, 0) -adcrypto.net,admediaflex.com,aduzz.com,bitcrypto.info,cdrab.com,datacheap.io,hbz.us,savego.org,owsafe.com,sportweb.info##.adslr -adcrypto.net,admediaflex.com,aduzz.com,bitcrypto.info,cdrab.com,datacheap.io,hbz.us,savego.org,owsafe.com,sportweb.info##.floating-banner -adcrypto.net,admediaflex.com,aduzz.com,bitcrypto.info,cdrab.com,datacheap.io,hbz.us,savego.org,owsafe.com,sportweb.info##table[class^="a"] -adcrypto.net,admediaflex.com,aduzz.com,bitcrypto.info,cdrab.com,datacheap.io,hbz.us,savego.org,owsafe.com,sportweb.info##center:has(> a[href="javascript:hidepromol();"]) -adcrypto.net,admediaflex.com,aduzz.com,bitcrypto.info,cdrab.com,datacheap.io,hbz.us,savego.org,owsafe.com,sportweb.info#@#.adb-top -finish.addurl.biz##+js(nowoif) -finish.addurl.biz##+js(set, document.hasFocus, trueFunc) -tinys.click##+js(noeval-if, adsBlocked) -tinys.click##+js(rmnt, script, antiAdBlockerHandler) -tinys.click##+js(set, blurred, false) -tinys.click##+js(set, go_popup, {}) -tinys.click##.text-left, .banner-inner, .separator, .gmr-box-content, div[id^="wpsafe-wait"] -tinys.click###wpsafe-generate, #wpsafe-link:style(display: block !important) -bitzite.com##+js(aeld, load, htmls) -bitzite.com##+js(ra, href, .MyAd > a[target="_blank"]) -bitzite.com##.buttonnya:style(display: block !important;) -bitzite.com##.buttondownload:style(display: block !important;) -bitzite.com##div[id^="countdownText"] -||bitzite.com/dtban.jpg -bitzite.com##+js(aeld, DOMContentLoaded, antiAdBlockerHandler) -bitzite.com##.modal-overlay -bitzite.com##+js(aeld, DOMContentLoaded, location.href) -bitzite.com##+js(acs, document.createElement, onerror) -*$image,redirect-rule=1x1.gif,domain=bitzite.com -bitzite.com#@#.banner-ad -bitzite.com##+js(nostif, _0x, 500) -bitzite.com##+js(aopw, onScriptError) -bitzite.com##+js(aopr, localStorage) -bitzite.com##+js(rpnt, script, "'IFRAME'", "'BODY'") -cpmlink.pro##+js(ra, data-ppcnt_ads, , stay) -cpmlink.pro##+js(nowoif, php) -cpmlink.pro##+js(nano-sib) -cpmlink.pro###toasts, .alternative-ad -bildirim.link##+js(set, Notification, undefined) -aiimgvlog.fun##+js(no-xhr-if, popunder) -aiimgvlog.fun##+js(acs, eval, replace) -aiimgvlog.fun##+js(acs, addEventListener, google_ad_client) -@@||aiimgvlog.fun^$ghide -aiimgvlog.fun##+js(aopw, AdbModel) -aiimgvlog.fun##+js(aeld, , popMagic) -aiimgvlog.fun##+js(set, protection, noopFunc) -aiimgvlog.fun##+js(set, document.hasFocus, trueFunc) -aiimgvlog.fun##form > div[id][style="display: none;"]:style(display: block !important;) -aiimgvlog.fun###widescreen2 -aiimgvlog.fun##div[id][style="position:fixed;bottom: 0px;left: 0px;z-index:999999;"] -cpm.icu##+js(set, blurred, false) -aiimgvlog.fun##+js(rmnt, script, /ad\s?block|adsBlocked|document\.write\(unescape\('|devtool/i) -appsbull.com,diudemy.com,maqal360.com##+js(nano-stb, div_form) -appsbull.com,diudemy.com,maqal360.com###tristana, #_append, #myDiv:style(display: block !important;) -@@*$ghide,domain=appsbull.com|diudemy.com|maqal360.com -appsbull.com,diudemy.com,maqal360.com##+js(aeld, load, htmls) -appsbull.com,diudemy.com,maqal360.com##+js(rmnt, script, onerror) -@@||cdn.jsdelivr.net^$script,domain=appsbull.com|diudemy.com|maqal360.com -appsbull.com,diudemy.com,maqal360.com##+js(set, private, false) -appsbull.com,diudemy.com,maqal360.com##+js(rpnt, script, "'IFRAME'", "'BODY'") -mphealth.online##+js(rmnt, script, onerror) -mphealth.online###yuidea-btn-after, #yuidea-btmbtn:style(display: block !important;) -mphealth.online###yuidea-btn-after, #yuidea-btmbtn:remove-attr(disabled) -mphealth.online###yuidea-btn-after, #yuidea-btmbtn:others() -mphealth.online###content:style(font-size: 0px !important;) -sahlmarketing.net###link:remove-attr(disabled) -sahlmarketing.net###link, center, #yuidea-snp, #btn6:style(display: block !important;) -sahlmarketing.net##+js(set, count, 0) -blog.panytourism.online###link1s-snp:style(display: block !important;) -panyshort.link##+js(set, blurred, false) -mayaremix.in,unfoldedstars.com,neverdims.com,bit4me.info,deltabtc.xyz,mbjremix.com##div#wpsafe-link:style(display: block !important;) -mayaremix.in,unfoldedstars.com,neverdims.com,bit4me.info,deltabtc.xyz,mbjremix.com##div#wpsafe-link:others() -apkupload.in,ezeviral.com,pngreal.com,ytpng.net##+js(no-fetch-if, ads) -apkupload.in,ezeviral.com,dailynew.online,pngreal.com,ytpng.net###wpsafe-generate, #wpsafe-link:style(display: block !important) -apkupload.in,dailynew.online,ezeviral.com,pngreal.com,ytpng.net##div[id^="wpsafe-wait"] -ezeviral.com,pngreal.com###overlay -techusnews.com###tp-generate, #tp-snp2:style(display: block !important;) -techusnews.com##div[id^="tp-wait"] -ezeviral.cok,pngreal.com##.adb -ryuugames.com###wpsafe-link:style(display: block !important;) -ryuugames.com###wpsafe-wait1,#wpsafe-link:others() -blog24.me##+js(aeld, DOMContentLoaded, adsBlocked) -blog24.me##+js(aeld, load, htmls) -blog24.me##+js(nostif, alert) -blog24.me##+js(aopr, Swal.fire) -blog24.me##^script:has-text(htmls) -blog24.me##+js(set, isRequestPresent, true) -blog24.me##+js(rmnt, script, location.assign) -blog24.me##+js(rmnt, script, location.href) -*$script,redirect-rule=noopjs,domain=blog24.me -*$xhr,redirect-rule=nooptext,domain=blog24.me -||blog24.me/dss.php$script -||blog24.me/ad*html$frame,1p -||aiimgvlog.fun^$frame,domain=blog24.me -@@||blog24.me^$ghide -blog24.me##form > [id]:style(display: block !important;) -@@||pagead2.googlesyndication.com^$xhr,domain=blog24.me -blog24.me##.adb-overlay -blog24.me###widescreen2 -! intercelestial.com skip countdown (https://pahe.me/monster-2023-web-dl-480p-720p-1080p/) -||intercelestial.com^$csp=script-src 'self' * 'unsafe-inline' -intercelestial.com##+js(nano-stb, , *, 0.1) -intercelestial.com###landing, .soractrl:others() -linegee.net##.kecil:others() -laweducationinfo.com,savemoneyinfo.com,worldaffairinfo.com,godstoryinfo.com,successstoryinfo.com,cxissuegk.com,learnmarketinfo.com,bhugolinfo.com,armypowerinfo.com,bhugolinfo.com,rsadnetworkinfo.com,rsinsuranceinfo.com,rsfinanceinfo.com,rsgamer.app,rssoftwareinfo.com,rshostinginfo.com,rseducationinfo.com##+js(rpnt, script, });, });var iframe = document.createElement('iframe');iframe.style.height = '0';iframe.style.width = '0';iframe.style.border = '0';document.body.appendChild(iframe);iframe.focus();, condition, googletag, sedCount, 1) -laweducationinfo.com,savemoneyinfo.com,worldaffairinfo.com,godstoryinfo.com,successstoryinfo.com,cxissuegk.com,learnmarketinfo.com,bhugolinfo.com,armypowerinfo.com,bhugolinfo.com,rsadnetworkinfo.com,rsinsuranceinfo.com,rsfinanceinfo.com,rsgamer.app,rssoftwareinfo.com,rshostinginfo.com,rseducationinfo.com##+js(set-cookie, __gads, 1) -laweducationinfo.com,savemoneyinfo.com,worldaffairinfo.com,godstoryinfo.com,successstoryinfo.com,cxissuegk.com,learnmarketinfo.com,bhugolinfo.com,armypowerinfo.com,bhugolinfo.com,rsadnetworkinfo.com,rsinsuranceinfo.com,rsfinanceinfo.com,rsgamer.app,rssoftwareinfo.com,rshostinginfo.com,rseducationinfo.com##+js(aopw, window.onload) -laweducationinfo.com,savemoneyinfo.com,worldaffairinfo.com,godstoryinfo.com,successstoryinfo.com,cxissuegk.com,learnmarketinfo.com,bhugolinfo.com,armypowerinfo.com,bhugolinfo.com,rsadnetworkinfo.com,rsinsuranceinfo.com,rsfinanceinfo.com,rsgamer.app,rssoftwareinfo.com,rshostinginfo.com,rseducationinfo.com##+js(no-xhr-if, googlesyndication) -laweducationinfo.com,savemoneyinfo.com,worldaffairinfo.com,godstoryinfo.com,successstoryinfo.com,cxissuegk.com,learnmarketinfo.com,bhugolinfo.com,armypowerinfo.com,bhugolinfo.com,rsadnetworkinfo.com,rsinsuranceinfo.com,rsfinanceinfo.com,rsgamer.app,rssoftwareinfo.com,rshostinginfo.com,rseducationinfo.com##+js(aost, navigator.userAgent, checkBrowser) -laweducationinfo.com,savemoneyinfo.com,worldaffairinfo.com,godstoryinfo.com,successstoryinfo.com,learnmarketinfo.com,bhugolinfo.com,armypowerinfo.com,bhugolinfo.com,rsadnetworkinfo.com,rsinsuranceinfo.com,rsfinanceinfo.com,rsgamer.app,rssoftwareinfo.com,rshostinginfo.com,rseducationinfo.com##+js(set, document.hasFocus, trueFunc) -*$frame,redirect-rule=noopframe,domain=learnmarketinfo.com|bhugolinfo.com|armypowerinfo.com|bhugolinfo.com|rsadnetworkinfo.com|rsinsuranceinfo.com|rsfinanceinfo.com|rsgamer.app|rssoftwareinfo.com|rshostinginfo.com|rseducationinfo.com|cxissuegk.com|successstoryinfo.com|godstoryinfo.com|worldaffairinfo.com|savemoneyinfo.com|laweducationinfo.com -@@*$ghide,domain=learnmarketinfo.com|bhugolinfo.com|armypowerinfo.com|bhugolinfo.com|rsadnetworkinfo.com|rsinsuranceinfo.com|rsfinanceinfo.com|rsgamer.app|rssoftwareinfo.com|rshostinginfo.com|rseducationinfo.com|cxissuegk.com|successstoryinfo.com|godstoryinfo.com|worldaffairinfo.com|savemoneyinfo.com|laweducationinfo.com -cravesandflames.com##+js(set, go_popup, {}) -cravesandflames.com##[href^="https://apps.apple.com/"] -cravesandflames.com##[href^="https://play.google.com/"] -filmypoints.in##+js(nano-sib, timer, 1000, 0.001) -filmypoints.in##+js(set, count, 0) -filmypoints.in###btn11:style(display: block !important;) -filmypoints.in##.mh-wrapper,#btn1 -filmypoints.in##.col-md-12 > .wpsafe-top ~ :is(h2,h3,h4,p,ul) -! tnshort.net (go.tnshort.net/grammarly) -financeyogi.net,finclub.in##+js(nano-sib, timer, *, 0.001) -financeyogi.net,finclub.in###btn2, #btn5, #tp-snp2:style(display: block !important;) -financeyogi.net,finclub.in###btn2, #btn5, #tp-snp2:others() -! linksfire.co (link.linksfire.co/dLvqhe) -blog.linksfire.co##+js(aopr, app_vars.force_disable_adblock) -blog.linksfire.co##[href^="https://b3stcond1tions.com/"] -blog.linksfire.co##div.separator > b -blog.linksfire.co##.banner -blog.linksfire.co##.ex2 -blog.linksfire.co##.link-details -linksfire.*##+js(aopr, open) -bartendingexpert.com###yuidea-snp:style(display: block !important;) -bartendingexpert.com###yuidea-snp:others() -freethailottery.live,progfu.com##+js(nano-sib, timer, 1600, 0.001) -freethailottery.live,progfu.com##center, [src*="google.com/recaptcha/"], #yuidea-snp:style(display:block !important) -freethailottery.live,progfu.com##center, [src*="google.com/recaptcha/"], #yuidea-snp:others() -! linkco.pro (linkco.pro/N8kQfv) -easywithcode.tech,letest25.co,truevpnlover.com##+js(nano-sib, timer, *, 0.001) -loanteacher.in###tp-snp2:style(display: block !important;) -letest25.co,loanteacher.in,truevpnlover.com###tp-snp2:others() -easywithcode.tech###cross-snp2:others() -! dollerlinksd.in (dollerlinksd.in/ZN4p) -financebolo.com,rphost.in,vedamdigi.tech##+js(nano-sib, timer, *, 0.001) -financebolo.com,rphost.in,vedamdigi.tech##+js(nowoif) -financebolo.com,rphost.in###tp-snp2:others() -vedamdigi.tech###cross-snp2:others() -vedamdigi.tech##.g-recaptcha, #cross-verify-go, .captcha-check, [src*="google.com/recaptcha/"]:others() -! linkpays.in (linkpays.in/Kdk) -redfea.com,pranarevitalize.com,techyinfo.in,fitnessholic.net##+js(noeval-if, /chp_?ad/) -redfea.com,pranarevitalize.com,techyinfo.in,fitnessholic.net###btn11, #tp-snp2, #rtg, #btn6, #wpsafe-snp:style(display: block !important;) -redfea.com,pranarevitalize.com,techyinfo.in,fitnessholic.net###btn11, #tp-snp2, #rtg, #btn6, #wpsafe-snp:others() -fitnessholic.net##+js(set, count, 0) -! shorturllinks.com (shorturllinks.com/pv1TizfJ1) -appkamods.com##+js(rmnt, script, deblocker) -appkamods.com###tp98, #btn6:style(display: block !important;) -appkamods.com###tp98, #btn6:others() -! instantearn.in (instantearn.in/lnwOySrW) -cancelguider.online##+js(nano-sib, timer, *, 0.001) -cancelguider.online##+js(nowoif) -cancelguider.online###tp-snp2, #cross-snp2:others() -petrainer.in###rtg-snp2:style(display: block !important;) -petrainer.in###rtg-snp2:others() -moderngyan.com,sattakingcharts.in,freshbhojpuri.com,bgmi32bitapk.in,bankshiksha.in,earn.mpscstudyhub.com,earn.quotesopia.com,money.quotesopia.com,best-mobilegames.com,learn.moderngyan.com,bharatsarkarijobalert.com##+js(noeval-if, /chp_?ad/) -moderngyan.com,sattakingcharts.in,freshbhojpuri.com,bgmi32bitapk.in,bankshiksha.in,earn.mpscstudyhub.com,earn.quotesopia.com,money.quotesopia.com,best-mobilegames.com,learn.moderngyan.com,bharatsarkarijobalert.com##+js(aeld, click, Popunder) -moderngyan.com,sattakingcharts.in,freshbhojpuri.com,bgmi32bitapk.in,bankshiksha.in,earn.mpscstudyhub.com,earn.quotesopia.com,money.quotesopia.com,best-mobilegames.com,learn.moderngyan.com,bharatsarkarijobalert.com##+js(acs, eval, replace) -moderngyan.com,sattakingcharts.in,freshbhojpuri.com,bgmi32bitapk.in,bankshiksha.in,earn.mpscstudyhub.com,earn.quotesopia.com,money.quotesopia.com,best-mobilegames.com,learn.moderngyan.com,bharatsarkarijobalert.com###tp-snp2, #cross-snp2:style(display: block !important;) -moderngyan.com,sattakingcharts.in,freshbhojpuri.com,bgmi32bitapk.in,bankshiksha.in,earn.mpscstudyhub.com,earn.quotesopia.com,money.quotesopia.com,best-mobilegames.com,learn.moderngyan.com,bharatsarkarijobalert.com###tp-snp2, #cross-snp2, .tp-top:others() -moderngyan.com,sattakingcharts.in,freshbhojpuri.com,bgmi32bitapk.in,bankshiksha.in,earn.mpscstudyhub.com,earn.quotesopia.com,money.quotesopia.com,best-mobilegames.com,learn.moderngyan.com,bharatsarkarijobalert.com##.floating-ads-container -moderngyan.com,sattakingcharts.in,freshbhojpuri.com,bgmi32bitapk.in,bankshiksha.in,earn.mpscstudyhub.com,earn.quotesopia.com,money.quotesopia.com,best-mobilegames.com,learn.moderngyan.com,bharatsarkarijobalert.com##+js(set, count, 0) -bgmi32bitapk.in,bankshiksha.in,earn.mpscstudyhub.com,earn.quotesopia.com,money.quotesopia.com,best-mobilegames.com,learn.moderngyan.com,bharatsarkarijobalert.com##+js(trusted-click-element, #tp-snp2, , 1000) -bgmi32bitapk.in,bankshiksha.in,earn.mpscstudyhub.com,earn.quotesopia.com,money.quotesopia.com,best-mobilegames.com,learn.moderngyan.com,bharatsarkarijobalert.com##+js(trusted-click-element, #cross-snp2, , 1000) -set.seturl.in##+js(acs, document.createElement, antiAdBlockerHandler) -set.seturl.in##.blog-item -set.seturl.in##.banner-inner -set.seturl.in##.popSc -get.instantearn.in##.banner-inner -||attorney.homeloanis.com/safe -! instantlinks.in (instantlinks.in/Ve33sw) -currentrecruitment.com,investorveda.com##+js(aopr, document.onmousedown) -currentrecruitment.com,investorveda.com##+js(nano-sib, count, *, 0.001) -currentrecruitment.com,investorveda.com###hometimerstartbtn, #hometimer, #yuidea-btmbtn, #btn6:style(display: block !important;) -currentrecruitment.com,investorveda.com###hometimerstartbtn, #hometimer, #yuidea-btmbtn, #btn6:others() -! revcut.net (go.revcut.net/OW71rahtyb4) -!#if cap_html_filtering -coingraph.us,impact24.us##^script:has-text(/checkAdBlocker|AdblockRegixFinder/) -!#else -coingraph.us,impact24.us##+js(rmnt, script, /checkAdBlocker|AdblockRegixFinder/) -!#endif -coingraph.us##+js(aeld, contextmenu) -coingraph.us,impact24.us##+js(nostif, isRequestPresent) -coingraph.us,impact24.us###form > [id], [id^="wpsafe-link"], [id^="plan"], .wpsafelink-button, #wpsafelinkhuman, [id][style="display: none;"]:style(display: block !important;) -! onepagelink.in (onepagelink.in/fn0O) -gorating.in,techkeshri.com###tp-snp2:style(display: block !important;) -gorating.in,techkeshri.com###tp-snp2:others() -! mdisk.pro / omegalinks.in (mdisk.pro/SxUtzZl) -meclipstudy.in###notarobot, #gotolink:style(display: block !important;) -meclipstudy.in###notarobot, #gotolink:others() -meclipstudy.in###gotolink[disabled]:remove-attr(disabled) -! cutt.ly (cutt.ly/QwF6jGZS) -sportsonfr.com###wpsafe-link:style(display: block !important;) -sportsonfr.com###wpsafe-link:others() -! linkvhoriz.com (linkvhoriz.com/DZI6s) -gurumu.net,kreatifparenting.com###wpsafe-link:style(display: block !important;) -gurumu.net,kreatifparenting.com###wpsafe-link:others() -foodupe.com###doad,.locked-action-link -foodupe.com###donead:style(display: block !important;) -foodupe.com##a[onclick*="adlink()"]:remove-attr(onclick) -bloggingdaze.com##.locked-action-link -bloggingdaze.com##a.get-link.disabled:remove-class(disabled) -! shotzon.com (enagato.com/nOlVu) -enagato.com##+js(aopr, open) -enagato.com##+js(set, blurred, false) -codesnse.com##+js(set, go_popup, {}) -codesnse.com##+js(nano-sib, counter, *, 0.001) -codesnse.com##[href^="https://app.adjust.com/"] -! pandaznetwork.com (pandaznetwork.com/TN8cD) -pandaznetwork.com##+js(set, blurred, false) -freemodsapp.xyz,panda.freemodsapp.in###wpsafe-link:style(display: block !important;) -freemodsapp.xyz,panda.freemodsapp.in###wpsafe-link:others() -! nanolinks.in (nanolinks.in/4o78F) -itscybertech.com##+js(nano-sib, counter) -itscybertech.com###combtn, .download.medium.button:style(display: inline-block !important;) -computerpedia.in###tp98, #countdown:style(display: block !important;) -computerpedia.in###tp98, #countdown, [src*="https://www.google.com/recaptcha"]:others() -computerpedia.in##+js(nano-sib, count, *, 0.001) -computerpedia.in##+js(no-fetch-if, syndication) -takez.co##+js(nano-sib, timer) -takez.co##+js(nano-stb, shortenbl) -takez.co##+js(nano-stb, enbll) -takez.co###gtbtn, #displaySeconds -takez.co###toshowtrlink, #gtbtn2:style(display: block !important;) -takez.co###toshowtrlink, #gtbtn2, .divTableCell, #postfooterOk:others() -! adsfly.in (adsfly.in/K9cXk) -adsfly.in##+js(nowoif) -rphost.in,techurlshort.in###notarobot, #btn7:style(display: block !important;) -rphost.in,techurlshort.in###notarobot, #btn7:others() -! sub4unlock.com (daniblogs.com/BF/956195hx) -sub4unlock.com###file:remove-attr(disabled) -sub4unlock.com###file:others() -dlink2.net##+js(rpnt, script, var seconde = 10;, var seconde = 0;) -dlink2.net##+js(set-cookie, clictune_pop, off) -*$frame,domain=dlink2.net -howtoconcepts.com##+js(no-fetch-if, googlesyndication) -lifesurance.info##+js(set, showadas, true) -lifesurance.info##center:others() -! moonlinks.in (moonlinks.in/bvbvuK) -cybercityhelp.in##+js(rmnt, script, adsbygoogle) -cybercityhelp.in###username[required]:remove-attr(required) -akcartoons.in,cybercityhelp.in###tp982, #btn6:style(display: block !important;) -akcartoons.in,cybercityhelp.in###tp982, #btn6:others() -iconicblogger.com##+js(rmnt, script, catch) -iconicblogger.com###wpsafe-link:style(display: block !important;) -iconicblogger.com###wpsafe-link:others() -! ttps://paste.segurosdevida .site -segurosdevida.site###wpsafe-generate, #wpsafe-link:style(display: block !important;) -segurosdevida.site##[id^="wpsafe-wait"], #content-wrapper -ikramlar.online##+js(noeval-if, /chp_?ad/) -ikramlar.online##+js(no-fetch-if, googlesyndication) -@@||shareus.io^$ghide -cookad.net,pmkisanlists.in,shramikcard.in,shareus.io##+js(aopr, antiAdBlockerHandler) -cookad.net,pmkisanlists.in,shramikcard.in###bottomNewButton, #bottomButton:remove-attr(disabled) -cookad.net,pmkisanlists.in,shramikcard.in##.timer, .shrs_btn, .tag, .link-open-modal:others() -@@*$ghide,domain=tii.la|oko.sh|ckk.ai|oei.la|lnbz.la|iir.la|tvi.la -tvi.la,iir.la,tii.la,oko.sh,ckk.ai,oei.la,lnbz.la##+js(no-fetch-if, /googlesyndication|inklinkor/) -tvi.la,iir.la,tii.la,oko.sh,ckk.ai,oei.la,lnbz.la##+js(no-xhr-if, /pagead2\.googlesyndication\.com|inklinkor\.com/) -!#if cap_html_filtering -tvi.la,iir.la,tii.la,oko.sh,ckk.ai,oei.la,lnbz.la##^script:has-text(;break;case $.) -tvi.la,iir.la,tii.la,oko.sh,ckk.ai,oei.la,lnbz.la##^script:has-text(adb_detected) -!#else -tvi.la,iir.la,tii.la,oko.sh,ckk.ai,oei.la,lnbz.la##+js(rmnt, script, ;break;case $.) -tvi.la,iir.la,tii.la,oko.sh,ckk.ai,oei.la,lnbz.la##+js(rmnt, script, adb_detected) -!#endif -tvi.la,iir.la,tii.la,oko.sh,ckk.ai,oei.la,lnbz.la##+js(set, blurred, false) -tvi.la,iir.la,tii.la,oko.sh,ckk.ai,oei.la,lnbz.la##a[href][target="_blank"] -tvi.la,iir.la,tii.la,oko.sh,ckk.ai,oei.la,lnbz.la##.banner-inner -tvi.la,iir.la,tii.la,oko.sh,ckk.ai,oei.la,lnbz.la##.td-post-template-default.td-container -tvi.la,iir.la,tii.la,oko.sh,ckk.ai,oei.la,blogtechh.com,lnbz.la,techbixby.com,blogmyst.com,wp2host.com,insmyst.com##+js(nowoif) -insmyst.com,wp2host.com,blogtechh.com,lnbz.la,techbixby.com,blogmyst.com##+js(ra, onclick, button[onclick^="window.open"]) -insmyst.com,wp2host.com,blogtechh.com,lnbz.la,techbixby.com,blogmyst.com##+js(set, timeSec, 0) -insmyst.com,wp2host.com,blogtechh.com,lnbz.la,techbixby.com,blogmyst.com##[class*="category-"], .td-pb-border-top, .td-footer-bottom-full.td-container, .td-container-wrap.td-sub-footer-container -! http://go.megafly.in/znj2u7olam -techacode.com##+js(nostif, nextFunction, 250) -techacode.com##+js(nobab) -techacode.com##+js(noeval-if, adb) -mtraffics.com##+js(nowoif, _blank) -techacode.com,sahlmarketing.net###link, #btn6, #yuidea-snp:remove-attr(disabled) -techacode.com,sahlmarketing.net##+js(set, count, 0) -techacode.com##+js(aopr, SMart1) -techacode.com##+js(rmnt, script, deblocker) -techacode.com##+js(no-xhr-if, /doubleclick|googlesyndication/) -trickms.com##+js(set, count, 0) -trickms.com###tp98[disabled]:remove-attr(disabled) -trickms.com###tp-snp2:style(display: block !important;) -trickms.com###tp98, #btn6, #tp-snp2:others() -travel.vebma.com,cloud.majalahhewan.com,crm.cekresi.me,ai.tempatwisata.pro##+js(no-fetch-if, ads) -travel.vebma.com##.text-primary.inline-block, button.text-primary:others() -travel.vebma.com,cloud.majalahhewan.com,crm.cekresi.me,ai.tempatwisata.pro##+js(aeld, blur, counter) -travel.vebma.com,cloud.majalahhewan.com,crm.cekresi.me,ai.tempatwisata.pro##+js(nano-sib, /counter|wait/, *, 0.001) -crm.cekresi.me,ai.tempatwisata.pro##+js(nowoif, tempat.org) -adtival.network##div.box:has(.purple) -rsrlink.in###wpsafe-link:style(display: block !important;) -rsrlink.in###wpsafe-link:others() -go.pointlinks.in###footer -recipestutorials.com##+js(aopr, app_vars.force_disable_adblock) -recipestutorials.com##+js(set, blurred, false) -recipestutorials.com##.banner -pureshort.*##+js(aopr, app_vars.force_disable_adblock) -pureshort.*##+js(aopr, open) -pureshort.*##+js(set, blurred, false) -pureshort.*##.banner -pureshort.*###link-view > br -pureshort.*###link-view > a[href] > img -speedynews.xyz##+js(nano-sib) -||speedynews.xyz^$3p -shrinke.*,shrinkme.*##+js(aopr, app_vars.force_disable_adblock) -shrinke.*,shrinkme.*##+js(set, blurred, false) -shrinke.*,shrinkme.*##.expop, .blog-item, footer, [src*="shrinkme."], .box-main h3, [hight="250px"] -shrinke.*,shrinkme.*##+js(rmnt, script, window.open) -mrproblogger.com,themezon.net##+js(aeld, load, doTest) -mrproblogger.com,themezon.net###btn2, .tp-blue:style(display: block !important;) -mrproblogger.com,themezon.net###btn2, .tp-blue:others() -@@||doubleclick.net^$script,domain=shrinkforearn.in -@@||googletagmanager.com^$script,domain=shrinkforearn.in -shrinkforearn.in##+js(aopr, app_vars.force_disable_adblock) -shrinkforearn.in,techyuth.xyz##+js(set, blurred, false) -shrinkforearn.in##.box-main:style(font-size: 0px !important;) -shrinkforearn.in##[class*="wp-image"] -techyuth.xyz##+js(aopr, window.open) -cmphost.com,drinkspartner.com,uploadsoon.com,wp.uploadfiles.in,viralxns.com##+js(noeval-if, /fairAdblock|chp_adblock|adsbygoogle\.js/) -cmphost.com,drinkspartner.com,uploadsoon.com,wp.uploadfiles.in,viralxns.com##body:style(overflow: auto !important;) -cmphost.com,drinkspartner.com,uploadsoon.com,wp.uploadfiles.in,viralxns.com###tp-snp2, #timeout:style(display:block !important; margin-top: 520px !important; height: 100px !important; width: 100px !important) -cmphost.com,drinkspartner.com,uploadsoon.com,wp.uploadfiles.in,viralxns.com###timeout, #btn1, #tp-snp2:others() -cmphost.com,drinkspartner.com,uploadsoon.com,wp.uploadfiles.in,viralxns.com##+js(nano-sib, /.?/, *, 0.02) -cmphost.com,drinkspartner.com,uploadsoon.com,wp.uploadfiles.in,viralxns.com###timeout:remove-attr(disabled) -viralsbaba1.blogspot.com###btn-gotolink:style(display:block !important; margin-top: 410px !important; margin-left: 200px !important; height: 100px !important; width: 100px !important) -viralsbaba1.blogspot.com###btn-gotolink:remove-attr(disabled) -viralsbaba1.blogspot.com###btn-gotolink:others() -viralsbaba1.blogspot.com##+js(rpnt, script, '_blank', '_self') -faucet.ovh##+js(rmnt, script, /adblock.php) -||dutchycorp.space/banner-advertising/$frame,3p,domain=faucet.ovh -claimclicks.com##+js(aopr, checkAdsBlocked) -infokeeda.xyz,webzeni.com##+js(set, iktimer, 0) -infokeeda.xyz,webzeni.com##+js(nano-sib) -infokeeda.xyz,webzeni.com##.gAd -webzeni.com##+js(nano-stb, , 1000) -webzeni.com##header -||oii.io/sw.js$script -oii.io##+js(nowoif) -oii.io##+js(ra, onclick, .btn) -oii.io##+js(set, blurred, false) -oii.io###overlay -hubdrive.*##+js(nowoif) -hubdrive.*##+js(acs, Math.imul) -blog.workedbd.com,advisecreate.fun,uses-in-hindi.com,maxxfour.com,cybertyrant.com,gdspike.com,profitshort.com,courselinkfree.us,technorozen.com,hubdrive.me###top_nav, .rd_btn, .soractrl:style(display: block !important;) -blog.workedbd.com,advisecreate.fun,uses-in-hindi.com,maxxfour.com,cybertyrant.com,gdspike.com,profitshort.com,courselinkfree.us,technorozen.com,hubdrive.me###top_nav, .rd_btn, .soractrl, .large:others() -choiceappstore.xyz##+js(no-fetch-if, googlesyndication) -choiceappstore.xyz###wpsafe-generate, #wpsafe-link:style(display: block !important;) -choiceappstore.xyz##div[id^="wpsafe-wait"] -du-link.in##+js(set, blurred, false) -du-link.in##.banner -atglinks.com##+js(rmnt, script, /aclib|break;|zoneNativeSett/) -atglinks.com##+js(set, blurred, false) -atglinks.com##.blog-item, ._th_times, .separator, .banner-inner, .box-main > [href], #footer -djpunjab2.in,djqunjab.in,foodxor.com,geniussolutions.co,mealcold.com,mixrootmods.com,fartechy.com##+js(no-fetch-if, googlesyndication) -djpunjab2.in,djqunjab.in,foodxor.com,geniussolutions.co,mealcold.com,mixrootmods.com,fartechy.com###wpsafe-link:style(display:block !important;) -djpunjab2.in,djqunjab.in,foodxor.com,geniussolutions.co,mealcold.com,mixrootmods.com,fartechy.com###wpsafe-link:others() -djqunjab.in,geniussolutions.co###interstitial-container -geniussolutions.co##+js(aost, document.getElementById, adsBlocked) -djqunjab.in##+js(rmnt, script, deblocker) -hosty.uprwssp.org###btnfianl:style(display: block !important;) -lootdest.com##+js(nowoif, , 5) -@@||0.entlysearchin.info^$ping,domain=lootdest.com -investcrust.com##+js(no-fetch-if, googlesyndication) -investcrust.com###wpsafe-link:style(display: block !important;) -investcrust.com###wpsafe-link:others() -@@*$ghide,domain=bluemediadownload.*|bluemediafile.*|bluemedialink.*|bluemediastorage.*|bluemediaurls.*|urlbluemedia.* -.gif$image,domain=bluemediadownload.*|bluemediafile.*|bluemedialink.*|bluemediastorage.*|bluemediaurls.*|urlbluemedia.* -bluemediadownload.*,bluemediafile.*,bluemedialink.*,bluemediastorage.*,bluemediaurls.*,urlbluemedia.*##+js(aopr, decodeURI) -bluemediadownload.*,bluemediafile.*,bluemedialink.*,bluemediastorage.*,bluemediaurls.*,urlbluemedia.*##+js(aopr, open) -bluemediadownload.*,bluemediafile.*,bluemedialink.*,bluemediastorage.*,bluemediaurls.*,urlbluemedia.*###ads-centter -/fhbdhf.jpg$image,1p,domain=bluemediadownload.*|bluemediafile.*|bluemedialink.*|bluemediastorage.*|bluemediaurls.*|urlbluemedia.* -!#if cap_html_filtering -bluemediadownload.*,bluemediafile.*,bluemedialink.*,bluemediastorage.*,bluemediaurls.*,urlbluemedia.*##^script:has-text(FingerprintJS) -!#else -bluemediadownload.*,bluemediafile.*,bluemedialink.*,bluemediastorage.*,bluemediaurls.*,urlbluemedia.*##+js(rmnt, script, FingerprintJS) -!#endif -cinedesi.in,thevouz.in,tejtime24.com,techishant.in##+js(no-fetch-if, ads) -!#if env_firefox -cinedesi.in,thevouz.in,tejtime24.com,techishant.in##+js(rmnt, script, /AdbModel|showPopup/) -!#else -cinedesi.in,thevouz.in,tejtime24.com,techishant.in##^script:has-text(/AdbModel|showPopup/) -!#endif -cinedesi.in,thevouz.in,tejtime24.com,techishant.in##+js(nano-sib, interval, *) -cinedesi.in,thevouz.in,tejtime24.com,techishant.in##.remove-sticky -cinedesi.in,thevouz.in,tejtime24.com,techishant.in#@#.quads-location -cinedesi.in,thevouz.in,tejtime24.com,techishant.in##.quads-location,.pro_btn:others() -||youtube.com^$domain=tejtime24.com|thevouz.in|cinedesi.in|techishant.in -@@||cdn.adpushup.com/*/adpushup.js$xhr,domain=tejtime24.com -techishant.in##body:style(overflow: auto !important;) -mooonten.com,msic.site,fx-22.com,gold-24.net,forexrw7.com##+js(noeval-if, /chp_?ad/) -mooonten.com,msic.site,fx-22.com,gold-24.net,forexrw7.com##.btn-success, .btn-primary:style(display: block !important;) -mooonten.com,msic.site,fx-22.com,gold-24.net,forexrw7.com##+js(nano-stb, getElementById, *, 0.001) -mooonten.com,msic.site,fx-22.com,gold-24.net,forexrw7.com##+js(nano-sib, sec--, *, 0.001) -mooonten.com,msic.site,fx-22.com,gold-24.net,forexrw7.com##.btn-success, .btn-primary:others() -kbconlinegame.com,hamrojaagir.com,odijob.com###my-btn, #pro-continue, #pro-link:style(display: block !important;) -kbconlinegame.com,hamrojaagir.com,odijob.com###my-btn, #pro-continue, #pro-link:others() -kbconlinegame.com,hamrojaagir.com,odijob.com##+js(rmnt, script, /fetch|popupshow/) -efhjd.com##+js(acs, navigator, FingerprintJS) -buzzheavier.com###unlocker -buzzheavier.com##.dl.disabled:remove-class(disabled) -buzzheavier.com##+js(nowoif, !buzzheavier.com) -buzzheavier.com###unclear2 -buzzheavier.com##button[onclick] -jeuxenligne.xyz##form > [id][style="display: none;"]:style(display:block !important;) -||earnbitmoon.xyz/multiads/multiads.php -edukaroo.com##+js(nano-sib, count, *, 0.001) -blogesque.net,explorosity.net,optimizepics.com,stfly.*,stly.*,torovalley.net##+js(rmnt, script, justDetectAdblock) -apkmodvn.com,mod1s.com##+js(nostif, adsPost) -apkmodvn.com##+js(set-cookie, _ckLV1, 1) -dl.apkmoddone.com##+js(nostif, _0x, 1000) -dl.apkmoddone.com##+js(acs, setTimeout, window[_0x) -dl.apkmoddone.com##+js(set-cookie, fckXBlock, 1) -dl.apkmoddone.com##+js(rpnt, script, return!![];, return![];) -dl.apkmoddone.com##+js(set, aSl.gcd, 0) -apkmoddone.com##+js(set, isVietnam, noopFunc) -dl.apkmoddone.com##.adBanner -apkmodvn.com,phongroblox.com##[data-da] -apkmodvn.com##.stuAd -mod1s.com##a[href="javascript:;"]:has(> span:has-text(Advertisement)) -||acscdn.com/script/aclib.js$script,redirect-rule=noopjs -||alwingulla.com^$script,3p,redirect-rule=noopjs,domain=apkmoddone.com -thotpacks.xyz###popconlkr -thotpacks.xyz##.modal-backdrop -thotpacks.xyz##+js(set, blurred, false) -cloutgist.com##+js(aopr, open) -cloutgist.com##[href^="https://app.adjust.com/"] -sfile.mobi,tutwuri.id##+js(nowoif) -tutwuri.id##+js(nano-sib) -||blogger.googleusercontent.com^$image,domain=tutwuri.id -@@||ontechhindi.com^$ghide -ontechhindi.com##.floating-ads-container -downfile.site##+js(rmnt, script, deblocker) -! azmath.info,azsoft.*,downfile.site,downphanmem.com,expertvn.com,memangbau.com,trangchu.news,aztravels.net##+js(set, count, 0) -azmath.info,azsoft.*,downfile.site,downphanmem.com,expertvn.com,memangbau.com,trangchu.news,aztravels.net##+js(aopr, SMart1) -azmath.info,azsoft.*,downfile.site,downphanmem.com,expertvn.com,memangbau.com,trangchu.news,aztravels.net##+js(noeval-if, chp_ad) -azmath.info,azsoft.*,downfile.site,downphanmem.com,expertvn.com,memangbau.com,trangchu.news,aztravels.net##+js(aeld, DOMContentLoaded, document.documentElement.lang.toLowerCase) -expertvn.com##+js(rmnt, script, deblocker) -trangchu.news##+js(rmnt, script, deblocker) -trangchu.news##+js(no-xhr-if, /doubleclick|googlesyndication/) -/fuckadb.js$badfilter -megaurl.in,megafly.in##+js(ra, onclick, [onclick^="pop"]) -megaurl.in,megafly.in##+js(set, blurred, false) -@@||megaurl.*^$ghide -@@||expertvn.com^$ghide -*$script,3p,denyallow=bootstrapcdn.com|cloudflare.com|google.com|googleapis.com|gstatic.com|hwcdn.net|jquery.com,domain=expertvn.com -||monetiza.co^$3p -||vidcrunch.com^$domain=aztravels.net|downfile.site -@@*$ghide,domain=aztravels.net|downfile.site -*$image,domain=app.trangchu.news|azmath.info,redirect-rule=1x1.gif -!#if cap_html_filtering -simana.online##^script:has-text(openPopup) -!#else -simana.online##+js(rmnt, script, openPopup) -!#endif -simana.online##+js(set, blurred, false) -zeroupload.com##+js(nano-sib, display) -ielts-isa.edu.vn##+js(aeld, DOMContentLoaded, document.documentElement.lang.toLowerCase) -ielts-isa.edu.vn##+js(set, count, 0) -||cdn.jsdelivr.net/npm/maari/dist/maari.min.js$script,3p -claim.8bit.ca##+js(aopr, adsBlocked) -claim.8bit.ca##+js(aopr, Light.Popup) -advertisingexcel.com,allcryptoz.net,batmanfactor.com,crewbase.net,crewus.net,phineypet.com,shinbhu.net,shinchu.net,talkforfitness.com,thumb8.net,thumb9.net,topcryptoz.net,uniqueten.net,ultraten.net##.a, .b, .c, .d, .e, .f, .g -*$script,redirect-rule=noopjs,domain=allcryptoz.net|batmanfactor.com|crewbase.net|crewus.net|shinbhu.net|shinchu.net|talkforfitness.com|thumb8.net|thumb9.net|topcryptoz.net|uniqueten.net|ultraten.net -allcryptoz.net,batmanfactor.com,crewbase.net,crewus.net,phineypet.com,shinbhu.net,shinchu.net,thumb8.net,thumb9.net,topcryptoz.net,uniqueten.net,ultraten.net###overlay -*$frame,redirect-rule=noopframe,domain=allcryptoz.net|batmanfactor.com|crewbase.net|crewus.net|shinbhu.net|shinchu.net|talkforfitness.com|thumb8.net|thumb9.net|topcryptoz.net|uniqueten.net|ultraten.net -*$xhr,redirect-rule=nooptext,domain=allcryptoz.net|batmanfactor.com|crewbase.net|crewus.net|shinbhu.net|shinchu.net|talkforfitness.com|thumb8.net|thumb9.net|topcryptoz.net|uniqueten.net|ultraten.net -*$image,redirect-rule=1x1.gif,domain=allcryptoz.net|batmanfactor.com|crewbase.net|crewus.net|shinbhu.net|shinchu.net|talkforfitness.com|thumb8.net|thumb9.net|topcryptoz.net|uniqueten.net|ultraten.net -@@*$ghide,domain=allcryptoz.net|batmanfactor.com|crewbase.net|crewus.net|shinbhu.net|shinchu.net|talkforfitness.com|thumb8.net|thumb9.net|topcryptoz.net|uniqueten.net|ultraten.net -@@*$xhr,script,1p,domain=allcryptoz.net|batmanfactor.com|crewbase.net|crewus.net|shinbhu.net|shinchu.net|talkforfitness.com|thumb8.net|thumb9.net|topcryptoz.net|uniqueten.net|ultraten.net -*$object,empty,domain=allcryptoz.net|batmanfactor.com|crewbase.net|crewus.net|shinbhu.net|shinchu.net|talkforfitness.com|thumb8.net|thumb9.net|topcryptoz.net|uniqueten.net|ultraten.net -bestclaimtrx.xyz##+js(no-xhr-if, popunder) -advertisingexcel.com,allcryptoz.net,batmanfactor.com,beautifulfashionnailart.com,crewbase.net,crewus.net,phineypet.com,shinbhu.net,shinchu.net,talkforfitness.com,thumb8.net,thumb9.net,topcryptoz.net,uniqueten.net,ultraten.net##+js(rpnt, script, "'IFRAME'", "'BODY'") -advertisingexcel.com,allcryptoz.net,batmanfactor.com,beautifulfashionnailart.com,crewbase.net,crewus.net,phineypet.com,shinbhu.net,shinchu.net,talkforfitness.com,thumb8.net,thumb9.net,topcryptoz.net,uniqueten.net,ultraten.net##+js(set, document.hasFocus, trueFunc) -youshort.me##+js(aopr, open) -youshort.me##.blog-item -bantenexis.com###wpsafe-generate, #wpsafe-link:style(display: block !important;) -bantenexis.com##div[id^="wpsafe-wait"] -bantenexis.com##+js(no-fetch-if, googlesyndication) -link.paid4link.com##.card -link.paid4link.com##+js(nowoif) -link.paid4link.com##+js(aeld, click, maxclick) -link.paid4link.com##+js(set, counter, 10) -link.paid4link.com##+js(set, blurred, false) -||link.paid4link.com/img/cdn_adcash.mp4 -exactpay.online##+js(aopr, htmls) -exactpay.online##+js(set, document.hasFocus, trueFunc) -||exactpay.online/forex/index.js -exalink.fun##+js(set, blurred, false) -||earnbitmoon.club/promo/EBM-300x250.gif -exactpay.online##+js(aopr, Swal.fire) -exactpay.online##iframe[src^="https://cryptocoinsad.com/"] -||exactpay.online/Bitmedia.html$frame,redirect=noop.html -exactpay.online##+js(no-fetch-if, surfe.pro) -exactpay.online##+js(no-xhr-if, czilladx) -exactpay.online##form > div:style(display: block !important;) -||rollercoin.com^$image,3p,redirect-rule=1x1.gif,domain=exactpay.online -litonmods.com##+js(no-fetch-if, googlesyndication) -litonmods.com###wpsafe-link:style(display: block !important;) -litonmods.com###wpsafe-link:others() -.gif^$image,domain=universitiesonline.xyz -universitiesonline.xyz##+js(no-fetch-if, googlesyndication) -universitiesonline.xyz##.popup -universitiesonline.xyz##.overlay -universitiesonline.xyz###tp-generate, #tp-snp2:style(display: block !important;) -!#if env_mobile -! *** filters/filters-mobile.txt *** -!----- 2020 ----- -*##.ad-block -*##.ad-center -*##.ad-slot:not(.adsbox):not(.adsbygoogle) -~lamire.jp,*##.ad-unit:not(.text-ad):not(.textads) -*##.ad-wrapper -*##.ad_container -*##.ads-wrapper -*##.dfp-ad -*##.ezoic-ad -*##.top-ad-container -*##AMP-AD -*##div[id*="ScriptRoot"] -*##ins.adsbygoogle[data-ad-slot] -~cinelatino.net,*##[id^="div-gpt-ad"]:not([style^="width: 1px; height: 1px; position: absolute; left: -10000px; top: -"]) -xnxx.com,xvideos.com###ad-header-mobile -jprime.jp##.ad-overlay -apkdone.com##.adplaceholder-top -cyclehack.jp,gogo-miyagi.com,izuhack.akao-hotel.co.jp,nap-camp.com,runhack.jp,tsurihack.com,yamahack.com###ad-overlay -m.washingtontimes.com##.mrf-adv__wrapper -fortune.com##.amp-ad-wrapper -fortune.com##.amp-ad-wrapper-dianomi -wallpaperbetter.com##.lst_ads -variety.com##.admz -bakusai.com##.adSection -gamereactor.asia,gamereactor.cn,gamereactor.cz,gamereactor.de,gamereactor.dk,gamereactor.es,gamereactor.eu,gamereactor.fi,gamereactor.fr,gamereactor.it,gamereactor.jp,gamereactor.kr,gamereactor.nl,gamereactor.no,gamereactor.pl,gamereactor.pt,gamereactor.se###ad_topScroller -! player on clipx.tv -xxxporns.org##.adBlock -a-eroland.net,hhmanga.com,nyahentai.re##.__isboostReturnAd -androidpolice.com,gamerant.com,howtogeek.com,makeuseof.com,screenrant.com,xda-developers.com##.adsninja-ad-zone -!----- 2023 ----- -facebook.com#?#div[data-status-bar-color] > div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"]:has(> div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"] div[data-mcomponent="TextArea"] .native-text > span:contains(/(Sponsored|Gesponsert|Sponsorlu|Sponsorowane|Ispoonsara godhameera|Geborg|Bersponsor|Ditaja|Disponsori|Giisponsoran|Sponzorováno|Sponsoreret|Publicidad|May Sponsor|Sponsorisée|Oipytyvôva|Ɗaukar Nayin|Sponzorirano|Uterwa inkunga|Sponsorizzato|Imedhaminiwa|Hirdetés|Misy Mpiantoka|Gesponsord|Sponset|Patrocinado|Patrocinado|Sponsorizat|Sponzorované|Sponsoroitu|Sponsrat|Được tài trợ|Χορηγούμενη|Спонсорирано|Спонзорирано|Ивээн тэтгэсэн|Реклама|Спонзорисано|במימון|سپانسرڈ|دارای پشتیبانی مالی|ስፖንሰር የተደረገ|प्रायोजित|ተደረገ|प|प्रायोजित|স্পনসর্ড|ਪ੍ਰਯੋਜਿਤ|પ્રાયોજિત|ପ୍ରାୟୋଜିତ|செய்யப்பட்ட செய்யப்பட்ட|చేయబడినది చేయబడినది|ಪ್ರಾಯೋಜಿಸಲಾಗಿದೆ|ചെയ്‌തത് ചെയ്‌തത്|ලද ලද ලද|สนับสนุน สนับสนุน รับ สนับสนุน สนับสนุน|ကြော်ငြာ ကြော်ငြာ|ឧបត្ថម្ភ ឧបត្ថម្ភ ឧបត្ថម្ភ|광고|贊助|赞助内容|広告|സ്‌പോൺസർ ചെയ്‌തത്)/)):not(:has([data-tracking-duration-id])) -facebook.com#?#div[data-status-bar-color] > div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"]:has(> div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"] div[data-mcomponent="TextArea"] .native-text > span:contains(/(Sponsored|Gesponsert|Sponsorlu|Sponsorowane|Ispoonsara godhameera|Geborg|Bersponsor|Ditaja|Disponsori|Giisponsoran|Sponzorováno|Sponsoreret|Publicidad|May Sponsor|Sponsorisée|Oipytyvôva|Ɗaukar Nayin|Sponzorirano|Uterwa inkunga|Sponsorizzato|Imedhaminiwa|Hirdetés|Misy Mpiantoka|Gesponsord|Sponset|Patrocinado|Patrocinado|Sponsorizat|Sponzorované|Sponsoroitu|Sponsrat|Được tài trợ|Χορηγούμενη|Спонсорирано|Спонзорирано|Ивээн тэтгэсэн|Реклама|Спонзорисано|במימון|سپانسرڈ|دارای پشتیبانی مالی|ስፖንሰር የተደረገ|प्रायोजित|ተደረገ|प|प्रायोजित|স্পনসর্ড|ਪ੍ਰਯੋਜਿਤ|પ્રાયોજિત|ପ୍ରାୟୋଜିତ|செய்யப்பட்ட செய்யப்பட்ட|చేయబడినది చేయబడినది|ಪ್ರಾಯೋಜಿಸಲಾಗಿದೆ|ചെയ്‌തത് ചെയ്‌തത്|ලද ලද ලද|สนับสนุน สนับสนุน รับ สนับสนุน สนับสนุน|ကြော်ငြာ ကြော်ငြာ|ឧបត្ថម្ភ ឧបត្ថម្ភ ឧបត្ថម្ភ|광고|贊助|赞助内容|広告|സ്‌പോൺസർ ചെയ്‌തത്)/)):not(:has([data-tracking-duration-id])) + .m:is(.bg-s2, .bg-s3, .bg-s4):has(+ .m:is(.bg-s2, .bg-s3, .bg-s4) + .m:not(:has(.m:empty))) -facebook.com#?#div[data-status-bar-color] > div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"]:has(> div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"] div[data-mcomponent="TextArea"] .native-text > span:contains(/(Sponsored|Gesponsert|Sponsorlu|Sponsorowane|Ispoonsara godhameera|Geborg|Bersponsor|Ditaja|Disponsori|Giisponsoran|Sponzorováno|Sponsoreret|Publicidad|May Sponsor|Sponsorisée|Oipytyvôva|Ɗaukar Nayin|Sponzorirano|Uterwa inkunga|Sponsorizzato|Imedhaminiwa|Hirdetés|Misy Mpiantoka|Gesponsord|Sponset|Patrocinado|Patrocinado|Sponsorizat|Sponzorované|Sponsoroitu|Sponsrat|Được tài trợ|Χορηγούμενη|Спонсорирано|Спонзорирано|Ивээн тэтгэсэн|Реклама|Спонзорисано|במימון|سپانسرڈ|دارای پشتیبانی مالی|ስፖንሰር የተደረገ|प्रायोजित|ተደረገ|प|प्रायोजित|স্পনসর্ড|ਪ੍ਰਯੋਜਿਤ|પ્રાયોજિત|ପ୍ରାୟୋଜିତ|செய்யப்பட்ட செய்யப்பட்ட|చేయబడినది చేయబడినది|ಪ್ರಾಯೋಜಿಸಲಾಗಿದೆ|ചെയ്‌തത് ചെയ്‌തത്|ලද ලද ලද|สนับสนุน สนับสนุน รับ สนับสนุน สนับสนุน|ကြော်ငြာ ကြော်ငြာ|ឧបត្ថម្ភ ឧបត្ថម្ភ ឧបត្ថម្ភ|광고|贊助|赞助内容|広告|സ്‌പോൺസർ ചെയ്‌തത്)/)):not(:has([data-tracking-duration-id])) + .m:is(.bg-s2, .bg-s3, .bg-s4) + .m:is(.bg-s2, .bg-s3, .bg-s4):has(+ .m:not(:has(.m:empty))) -facebook.com#?#div[data-status-bar-color] > div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"]:has(> div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"] div[data-mcomponent="TextArea"] .native-text > span:contains(/(Sponsored|Gesponsert|Sponsorlu|Sponsorowane|Ispoonsara godhameera|Geborg|Bersponsor|Ditaja|Disponsori|Giisponsoran|Sponzorováno|Sponsoreret|Publicidad|May Sponsor|Sponsorisée|Oipytyvôva|Ɗaukar Nayin|Sponzorirano|Uterwa inkunga|Sponsorizzato|Imedhaminiwa|Hirdetés|Misy Mpiantoka|Gesponsord|Sponset|Patrocinado|Patrocinado|Sponsorizat|Sponzorované|Sponsoroitu|Sponsrat|Được tài trợ|Χορηγούμενη|Спонсорирано|Спонзорирано|Ивээн тэтгэсэн|Реклама|Спонзорисано|במימון|سپانسرڈ|دارای پشتیبانی مالی|ስፖንሰር የተደረገ|प्रायोजित|ተደረገ|प|प्रायोजित|স্পনসর্ড|ਪ੍ਰਯੋਜਿਤ|પ્રાયોજિત|ପ୍ରାୟୋଜିତ|செய்யப்பட்ட செய்யப்பட்ட|చేయబడినది చేయబడినది|ಪ್ರಾಯೋಜಿಸಲಾಗಿದೆ|ചെയ്‌തത് ചെയ്‌തത്|ලද ලද ලද|สนับสนุน สนับสนุน รับ สนับสนุน สนับสนุน|ကြော်ငြာ ကြော်ငြာ|ឧបត្ថម្ភ ឧបត្ថម្ភ ឧបត្ថម្ភ|광고|贊助|赞助内容|広告|സ്‌പോൺസർ ചെയ്‌തത്)/)):not(:has([data-tracking-duration-id])) + .m:is(.bg-s2, .bg-s3, .bg-s4) + .m:is(.bg-s2, .bg-s3, .bg-s4) + .m:not(:has(.m:empty)) -facebook.com#?#div[data-status-bar-color] > div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"]:has(> div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"] div[data-mcomponent="TextArea"] .native-text > span:contains(/(Sponsored|Gesponsert|Sponsorlu|Sponsorowane|Ispoonsara godhameera|Geborg|Bersponsor|Ditaja|Disponsori|Giisponsoran|Sponzorováno|Sponsoreret|Publicidad|May Sponsor|Sponsorisée|Oipytyvôva|Ɗaukar Nayin|Sponzorirano|Uterwa inkunga|Sponsorizzato|Imedhaminiwa|Hirdetés|Misy Mpiantoka|Gesponsord|Sponset|Patrocinado|Patrocinado|Sponsorizat|Sponzorované|Sponsoroitu|Sponsrat|Được tài trợ|Χορηγούμενη|Спонсорирано|Спонзорирано|Ивээн тэтгэсэн|Реклама|Спонзорисано|במימון|سپانسرڈ|دارای پشتیبانی مالی|ስፖንሰር የተደረገ|प्रायोजित|ተደረገ|प|प्रायोजित|স্পনসর্ড|ਪ੍ਰਯੋਜਿਤ|પ્રાયોજિત|ପ୍ରାୟୋଜିତ|செய்யப்பட்ட செய்யப்பட்ட|చేయబడినది చేయబడినది|ಪ್ರಾಯೋಜಿಸಲಾಗಿದೆ|ചെയ്‌തത് ചെയ്‌തത്|ලද ලද ලද|สนับสนุน สนับสนุน รับ สนับสนุน สนับสนุน|ကြော်ငြာ ကြော်ငြာ|ឧបត្ថម្ភ ឧបត្ថម្ភ ឧបត្ថម្ភ|광고|贊助|赞助内容|広告|സ്‌പോൺസർ ചെയ്‌തത്)/)):not(:has([data-tracking-duration-id])) + .m:is(.bg-s2, .bg-s3, .bg-s4) + .m:is(.bg-s2, .bg-s3, .bg-s4) + .m:not(:has(.m:empty)) + .m:not(:has(.m:empty)):has(+ .m .m[data-mcomponent$="TextArea"]:empty) -! complementary rules when has-text stopped working -m.facebook.com,www.facebook.com##:matches-path(/^\/(\?locale=[a-z]+_[A-Z]+)?$/) #screen-root > :not(.bg-s2) .m[data-type="vscroller"] > :is(.bg-s2, .bg-s3, .bg-s4):has(+ .m + :is(.bg-s2, .bg-s3, .bg-s4) > .m > .m .nb[style*="inset(0"] > .m[style*="margin-top:1px;"][style*="margin-left:1px;"]:is([style*="height:32px;"], [style*="height:35px;"]) div[data-mcomponent$="TextArea"]:not(:empty)) -m.facebook.com,www.facebook.com##:matches-path(/^\/(\?locale=[a-z]+_[A-Z]+)?$/) #screen-root > :not(.bg-s2) .m[data-type="vscroller"] > :is(.bg-s2, .bg-s3, .bg-s4):has(+ :is(.bg-s2, .bg-s3, .bg-s4) > .m > .m .nb[style*="inset(0"] > .m[style*="margin-top:1px;"][style*="margin-left:1px;"]:is([style*="height:32px;"], [style*="height:35px;"]):not(:empty)) -m.facebook.com,www.facebook.com##:matches-path(/^\/(\?locale=[a-z]+_[A-Z]+)?$/) #screen-root > :not(.bg-s2) .m[data-type="vscroller"] > :is(.bg-s2, .bg-s3, .bg-s4):has(> .m > .m .nb[style*="inset(0"] > .m[style*="margin-top:1px;"][style*="margin-left:1px;"]:is([style*="height:32px;"], [style*="height:35px;"])) -m.facebook.com,www.facebook.com##:matches-path(/^\/(\?locale=[a-z]+_[A-Z]+)?$/) #screen-root > :not(.bg-s2) .m[data-type="vscroller"] > :is(.bg-s2, .bg-s3, .bg-s4):has(> .m > .m .nb[style*="inset(0"] > .m[style*="margin-top:1px;"][style*="margin-left:1px;"]:is([style*="height:32px;"], [style*="height:35px;"])) + .m:not(:has(.m:empty)) -m.facebook.com,www.facebook.com##:matches-path(/^\/(\?locale=[a-z]+_[A-Z]+)?$/) #screen-root > :not(.bg-s2) .m[data-type="vscroller"] > :is(.bg-s2, .bg-s3, .bg-s4):has(> .m > .m .nb[style*="inset(0"] > .m[style*="margin-top:1px;"][style*="margin-left:1px;"]:is([style*="height:32px;"], [style*="height:35px;"])) + .m:not(:has(.m:empty)) + .m:has(div[data-mcomponent$="TextArea"]:not(:empty)):has(+ .m .m[data-mcomponent$="TextArea"]:empty) -lookmovie2.to##div[class^="native-ad-"] -m.timesofindia.com##[href*="app.goo.gl"] -xda-developers.com##.ad-current -forum.xda-developers.com###xdadevelopers_leaderboard_atf -xe.com##.advertSlot -investing.com##[class^="ad_ad-sticky_"] -zdnet.com##.c-adDisplay_container -zdnet.com##.c-adSkyBox -nytimes.com###acm-wrapper -*##.ads_all > .ads_w -liquipedia.net##.mobile-sticky-ad -liquipedia.net##body.mobile-sticky-ad-is-active:style(padding: 3.125rem 0 0 0 !important;) -liquipedia.net##body.mobile-sticky-ad-is-active .main-nav:style(top: 0 !important;) -liquipedia.net##body.mobile-sticky-ad-is-active .main-nav .brand-menu:style(top: 3.125rem !important;) -m.dcinside.com,upload.dcinside.com##+js(set-cookie, _ga, OK, , reload, 1) -@@||securepubads.g.doubleclick.net/tag/js/gpt.js$script,domain=thedailybeast.com -thedailybeast.com##^html > head > meta[name="template"]:not([content="cheat"]):upward(1) > script[src*="doubleclick"] -! interstitial if views >= interstitial.counter -pornhub.com##+js(set-cookie, views, 1) -! Ignore generic cosmetic filters mitigation -apnews.com##.SovrnAd -zaim.net##.ad-footer -avclub.com,clickhole.com,deadspin.com,gizmodo.com,jalopnik.com,jezebel.com,kotaku.com,lifehacker.com,qz.com,splinternews.com,theinventory.com,theonion.com,theroot.com,thetakeout.com###splashy-ad-container-top -huffpost.com,huffingtonpost.jp##.advertisement-holder -4wank.com###pause-ads -javpop.link##[href^="https://rapidgator.net/article/premium/ref/"] -senzuri.tube##.video-page__adv -tr.ign.com##.articleBody:style(margin-top: 80px !important;) -m.apkpure.com##.ad-adsense.js-ad-slot -fxstreet.com##.fxs_stickyAd-mobile -apkpure.com##.ad-box-auto -*##.ez-video-wrap -correiobraziliense.com.br##.publi -poder360.com.br##.box-advertising -4hu.tv##.wrap > #btmBox -wunderground.com##.ad-wrap -mmtv01.xyz,spankbang.mov###pop.div_pop -pages.lazada.co.id##.lzd-call-app-download-popup -speedtest.net###modal-overlay -speedtest.net##div[data-view-name="mobile"] div.mobile-pretest -okezone.com###app:style(margin-top: 0px !important;) -mercurynews.com###mobile-adhesion -!#endif -! *** uAssets:filters/filters-2020.txt *** -*$script,redirect-rule=noopjs,domain=arcai.com -arcai.com##+js(set, pubAdsService, trueFunc) -@@||doubleclick.net^$script,xhr,domain=arcai.com -@@||fundingchoicesmessages.google.com^$script,domain=arcai.com -@@||googletagservices.com/tag/js/gpt.js$script,domain=arcai.com -@@*$ghide,domain=arcai.com -de-baystars.doorblog.jp##+js(acs, document.addEventListener, google_ad_client) -azm.to##+js(aopr, mm) -*$script,3p,denyallow=jquery.com|hwcdn.net|plyr.io|fastly.net|jwpcdn.com|googleapis.com|zencdn.net|hcaptcha.com,domain=azm.to -||commentsengine.com^$3p,script,redirect=noopjs -mysflink.blogspot.com##+js(set, safelink.adblock, false) -mysflink.blogspot.com##+js(nano-sib) -sofwaremania.blogspot.com##+js(nano-stb) -jav1080.com##div.boxzilla, .boxzilla-overlay, [href^="https://adsxyz.com/"] -jav1080.com###custom_html-3 -jav1080.com###custom_html-4 -/300x250.html|$frame,3p -l2db.info##+js(nowoif) -||l2db.info/uploads/banners/$image -l2db.info##.branding -l2db.info##[href^="https://overworld.pro/"] -l2db.info###wrapper-content:style(margin-top:0px !important) -l2db.info##[href*="adv"] -l2db.info##[href^="https://castle-town.net/ru"] -psychic.de##+js(nostif, offsetHeight) -10convert.com##+js(aopr, HTMLIFrameElement) -my-code4you.blogspot.com##+js(nostif, offsetLeft) -my-code4you.blogspot.com##+js(set, config.pauseInspect, false) -*$script,redirect-rule=noopjs,domain=my-code4you.blogspot.com -made-by.org##+js(nostif, ads) -*$xhr,redirect-rule=nooptext,domain=made-by.org -made-by.org###overlay -ilovephd.com##+js(set, adsbygoogle, null) -@@||notepad.pw^$ghide -gosemut.*##+js(nowoif) -rexdlfile.com##+js(aopr, require) -! art sites redirections, ads -opisanie-kartin.com,painting-planet.com##+js(aopr, LieDetector) -||edugrampromo.com^$3p -||terrout9.biz^ -*/?pu=$script -1plus1plus1equals1.net,cooksinfo.com,heatherdisarro.com,thesassyslowcooker.com##+js(aopr, Date.prototype.toUTCString) -25yearslatersite.com##+js(set, jQuery.adblock, false) -helpnetsecurity.com##+js(acs, jQuery, Object) -thepiratebay.org##+js(aopr, exoJsPop101) -kollhong.com##+js(aopr, adBlockDetected) -||cointiply.com^$3p -||reingod.com^ -! rppk13baru.blogspot.com anti-adb -rppk13baru.blogspot.com##+js(acs, addEventListener, blocker) -! arabamob.blogspot.com anti-adb -arabamob.blogspot.com##+js(acs, addEventListener, blocker) -*$script,redirect-rule=noopjs,domain=akunssh.net -videosection.com##+js(aopr, exoJsPop101) -techieway.blogspot.com##+js(acs, addEventListener, AdBlock) -pornfd.com##+js(nostif, innerText, 2000) -pornfd.com##+js(aopr, console.clear) -pornfd.com##+js(aeld, , bi()) -pornfd.com##.bannerImage -pornfd.com##.sponsor -||pornfd.com/*.php -flickr.com##+js(set, appContext.adManager.context.current.adFriendly, false) -flickr.com##.sub-photo-submoola-view -flickr.com##section:has([href*="istockphoto.com"]) -flickr.com##.sub-photo-right-view [href^="/account/upgrade"]:upward(.sub-photo-right-view > div) -! fastpeoplesearch.com popups -fastpeoplesearch.com##+js(nowoif) -fastpeoplesearch.com##.sponsored, .ad-widget-container -*$media,3p,domain=hdd.moviefun24.com,redirect=noopmp3-0.1s -pornky.com##+js(aopr, exoJsPop101) -rexporn.*##+js(aeld, , pop) -pleated-jeans.com##+js(aopr, HTMLIFrameElement) -@@||onbox.me^$ghide -onbox.me##+js(nowoif) -flash-firmware.blogspot.com##+js(noeval-if, replace) -getmega.net##+js(aopr, adBlockDetected) -desktophut.com##+js(acs, document.getElementById, .style) -blademaster666.com,hot2k.com,luchoedu.org,lupaste.com,pornovenezolano.com.ve,romnation.net,venezporn.com##+js(aopr, TID) -/sw.js$script,domain=desktophut.com|luchoedu.org|lupaste.com|pornovenezolano.com.ve|qeylo.net|seriale-po-polsku.pl|blademaster666.com|venezporn.com|culonas.com.ve -||cdnstaticpr.com^$3p -##[href^="https://fireads.online/"] -desktophut.com###loading-ad -*$frame,redirect-rule=noopframe,domain=desktophut.com -*$xhr,redirect-rule=nooptext,domain=desktophut.com -!!! -a-ads.com##.size300x250 -googlesyndication.com##.GoogleActiveViewElement:not(:has(> #reward_close_button_widget)) -googlesyndication.com##.GoogleActiveViewElement > div:not(#reward_close_button_widget) -googlesyndication.com###abgb -memoriadatv.com##+js(nano-stb) -@@||memoriadatv.com^$ghide -memoriadatv.com##ins.adsbygoogle -@@||myzyia.com^$ghide -zone-annuaire.*##+js(aopr, mdpDeBlocker) -zone-annuaire.*##[style^="font-weight"]:has-text(PREMIUM) -||zone-annuaire.bond/main.js?v=$script,1p -zone-annuaire.*##+js(nowoif) -||zone-annuaire.hair/main.js?v=$script -notube.*,~notube.com##+js(nowoif) -*$script,redirect-rule=noopjs,domain=runmods.com -runmods.com##+js(nano-sib) -gal-dem.com##+js(aopr, dsanity_ad_block_vars) -*$xhr,3p,domain=gayforit.eu -||bestcontenttechnology.top^$3p -forumconstruire.com#?#.post_simple:has(.postsimple_pseudo:has-text(/promo/i)) -bleachmx.fr##+js(aopr, mdpDeBlocker) -latitude.to##+js(nostif, show) -reifenrechner.at,tire-size-calculator.info##+js(aeld, load, nextFunction) -apkmb.com##+js(nano-sib, show_download_links) -uploadking.net##+js(nano-stb, downloadbtn) -||pub.network^$script,redirect-rule=noopjs,domain=vrcmods.com -vrcmods.com##+js(nano-sib, timeLeft) -vrcmods.com##+js(nostif, height) -vrcmods.com##+js(nosiif, height) -vrcmods.com###download-form:style(display: initial !important;) -vrcmods.com###app:style(display: none !important;) -vrcmods.com###app_msg:style(display: none !important;) -vrcmods.com##.show.fade.modal -vrcmods.com##.show.fade.modal-backdrop -leolist.cc##+js(nowoif) -! teachersguidetn.blogspot.com/bayaningfilipino.blogspot.com/fileandsharing.com anti-adb -teachersguidetn.blogspot.com,bayaningfilipino.blogspot.com##+js(acs, addEventListener, blocker) -firefile.cc##+js(set, blockAdBlock._options.baitClass, null) -@@||manhwa18.com^$ghide -uploadhub.*##+js(nowoif) -uploadhub.to##center -*$script,3p,denyallow=bootstrapcdn.com|cloudflare.com,domain=uploadhub.* -||birdconnection.site^ -||curverainstorm.website^ -verteleseriesonline.com##+js(aopr, adBlockDetected) -verteleseriesonline.com##+js(nosiif, visibility, 1000) -! flight-report .com anti adb -flight-report.com##+js(nostif, offsetHeight) -! ievaphone .com anti adb -ievaphone.com##+js(acs, onload) -obsev.com##+js(aopr, HTMLIFrameElement) -pentruea.com##+js(nostif, mdp_deblocker) -pentruea.com##+js(nostif, charAt) -akbardwi.my.id##+js(nosiif, visibility, 1000) -@@||heypikachu.com^$ghide -mchacks.net##+js(nostif, checkAds) -uplink.my.id##+js(acs, document.getElementById, alert) -smutty.com##+js(nowoif) -smutty.com##+js(rmnt, script, window.open) -smutty.com##+js(ra, href, [href^="https://aj2218.online/"], stay) -why-tech.it##+js(nostif, fadeIn, 0) -@@||why-tech.it^$ghide -why-tech.it##ins.adsbygoogle -techably.com##+js(acs, document.getElementById, adsbygoogle) -imintweb.com##+js(aopr, adBlockDetected) -@@||minorpatch.com^$ghide -*$image,redirect-rule=1x1.gif,domain=minorpatch.com -minorpatch.com##ins.adsbygoogle -minorpatch.com##+js(acs, decodeURIComponent, checkAD) -kropic.com##+js(aopr, decodeURI) -kropic.com##+js(aopr, LieDetector) -kropic.com##+js(aeld, , _0x) -kropic.com##^script:has-text('shift') -kropic.com##^script:has-text(\'shift\') -kropic.com##+js(acs, String.fromCharCode, 'shift') -kropic.com##+js(nowoif) -kropic.com##.newsbar_blue -kvador.com##+js(aeld, , _0x) -kvador.com##+js(aopr, open) -kvador.com##.newsbar_blue -||kvador.com/images/*.gif$image -kvador.com###fadeinbox -kvador.com##+js(aopr, loadTool) -##[src^="https://forum.picbaron.com/Banner"] -@@||debrid-file.com^$ghide -||nexusbytes.com^$3p -servedez.com##[id^="ad_"] -maccanismi.it##+js(noeval-if, show) -manytoon.com##+js(aopr, decodeURI) -*$script,3p,denyallow=cloudflare.net|disqus.com|disquscdn.com|fastlylb.net,domain=manytoon.com -||fzj3v7sch2xg5gosh60vpkrth5c6cngvj5ivd9kg5ajcdl2vlp2ocj5fjbto.me^ -manytoon.com##.ad -compsmag.com##+js(nostif, jQuery) -vulture.com##+js(aeld, /^(?:click|mousedown)$/, latest!==) -ilmeteo.it##+js(nostif, google_jobrunner) -ilmeteo.it###banner-mnz-topleft:style(height: 80px !important) -rangerboard.com##+js(acs, $, btoa) -beermoneyforum.com##+js(acs, $, Adblock) -beermoneyforum.com##.is-active.overlay-container:has(div[data-position] > center > a) -beermoneyforum.com##.samBackground:style(background-image:none !important) -beermoneyforum.com##.samBackgroundItem.samItem -beermoneyforum.com##body:style(overflow: auto !important) -bg-gledai.*##+js(nosiif, visibility, 1000) -bg-gledai.*##+js(aopr, chp_adblock_browser) -@@||bg-gledai.*^$ghide -/binance-banner.jpg$domain=bg-gledai.* -bg-gledai.*##+js(acs, document.getElementById, adblock) -bg-gledai.*###casing > center -bg-gledai.*##+js(no-fetch-if, googlesyndication) -@@||lesechos.fr^$ghide -coinxfaucet.com##+js(aopr, adBlockDetected) -@@||ploudos.com^$ghide -beegsexxx.com##+js(aopr, document.dispatchEvent) -beegsexxx.com##.preview:has(> .prev > script[data-ad_sub]) -||tds.pornvideotop.com/general/exoclick- -beeg.party##+js(nowoif) -spankbang.cc,spank-and-bang.com##+js(acs, decodeURI, decodeURIComponent) -tubxporn.com##+js(aopr, exoJsPop101) -pornone.com##+js(acs, $, adblock) -pornone.com##.vjs-paused > .warp -pornone.com##a[href*="//prtord.com/"] -pornone.com##.vjs-info-top -! sythe.org anti adb -sythe.org##+js(acs, $, adblocker) -sythe.org##+js(acs, document.getElementsByTagName, adblocker) -/?referral=sythe$all -||sythe.org/*.php$3p -/sytheb$all -/^https:\/\/([a-z]+\.)?sythe\.org\/[\w\W]{30,}/$image -*$image,redirect-rule=1x1.gif,domain=sythe.org -@@||sythe.org/*.png|$image,1p -@@||sythe.org/*.jpg?$image,1p -||i.imgur.com/*.mp4$media,domain=sythe.org -sythe.org##div[style="width: 100%; display: block; text-align: center;"] -sythe.org###topadplaceholder -wg-gesucht.de##+js(acs, $, detectAdBlocker) -hdmp4mania1.net##+js(nosiif, visibility, 1000) -mp4mania1.net##+js(aopr, LieDetector) -mp4mania1.net##.advert -mp4mania1.net,hdmp4mania1.net##.prop_native1 -||undefined^$script,redirect=noopjs -||d3g5ovfngjw9bw.cloudfront.net^$script,redirect=noopjs -mm9842.com,mm9844.*##+js(nowoif) -mm9842.com,mm9844.*,mm9846.com##+js(aopr, __Y) -khatrimaza.*##+js(aeld, , 0x) -khatrimaza.*##+js(acs, puShown, /doOpen|popundr/) -khatrimaza.*##+js(no-xhr-if, ads) -okhatrimaza.*##+js(acs, Object.defineProperty, XMLHttpRequest) -khatrimaza.*##+js(nostif, showModal) -tapetus.pl##+js(nostif, /^/) -*$script,redirect-rule=noopjs,domain=tapetus.pl -tapetus.pl##+js(acs, $, setTimeout) -tapetus.pl##div[style="box-sizing: border-box; padding:0px 5px 0px 0px; text-align:center;"] -adblockeronstape.*,adblockplustape.*,adblockstreamtape.*,adblockstrtape.*,adblockstrtech.*,adblocktape.*,antiadtape.*,gettapeads.com,noblocktape.*,stapadblockuser.*,stape.*,strcloud.*,streamadblocker.*,streamadblockplus.*,streamnoads.com,streamta.*,streamtape.*,streamtapeadblockuser.*,strtape.*,strtapeadblock.*,strtapeadblocker.*,strtpe.*,tapeadsenjoyer.com,tapeadvertisement.com,tapeantiads.com,tapeblocker.com,tapelovesads.org,tapenoads.com,tapewithadblock.org##+js(nosiif, adblock) -adblockeronstape.*,adblockplustape.*,adblockstreamtape.*,adblockstrtape.*,adblockstrtech.*,antiadtape.*,gettapeads.com,noblocktape.*,shavetape.*,stapadblockuser.*,stape.*,strcloud.*,streamadblocker.*,streamadblockplus.*,streamnoads.com,streamta.*,streamtape.*,streamtapeadblock.*,streamtapeadblockuser.*,strtape.*,strtapeadblock.*,strtapeadblocker.*,strtapewithadblock.*,strtpe.*,tapeadsenjoyer.com,tapeadvertisement.com,tapeantiads.com,tapeblocker.com,tapelovesads.org,tapenoads.com,tapewithadblock.org##+js(nowoif) -strcloud.*,streamtape.*,streamta.*,strtape.*,strtapeadblock.*##+js(ra, target, #downloadvideo) -adblockeronstape.*,adblockplustape.*,adblocktape.*,antiadtape.*,gettapeads.com,noblocktape.*,shavetape.*,stapadblockuser.*,strcloud.*,streamadblockplus.*,streamnoads.com,streamta.*,streamtape.*,streamtapeadblockuser.*,strtape.*,strtapeadblock.*,tapeadsenjoyer.com,tapeadvertisement.com,tapeantiads.com,tapeblocker.com,tapelovesads.org,tapenoads.com,tapewithadblock.org##+js(nano-stb, counter) -adblockstreamtape.*,adblockstrtape.*,adblockstrtech.*,antiadtape.*,stape.*,strcloud.*,streamtape.*,streamta.*,strtape.*,strtpe.*,strtapeadblock.*#@#.google-ad -adblockstreamtape.*,adblockstrtape.*,adblockstrtech.*,antiadtape.*,shavetape.*,stape.*,strcloud.*,streamtape.*,streamta.*,strtape.*,strtpe.*,strtapeadblock.*##[class*="bn-container"], div[style*="z-index: 300000;"] -@@*$ghide,domain=adblockstreamtape.*|adblockstrtape.*|adblockstrtech.*|antiadtape.*|shavetape.cash|stape.*|strcloud.*|streamta.*|streamtape.*|streamtapeadblock.*|strtape.*|strtpe.* -strcloud.*,streamtape.*,streamta.*,strtape.*,strtpe.*,strtapeadblock.*##iframe[src^="data:"] -/sw.js$script,1p,domain=strcloud.*|streamtape.*|streamta.*|strtape.*|strtpe.*|strtapeadblock.* -streamadblocker.*##+js(acs, setTimeout, admc) -*$popup,3p,from=tapewithadblock.org,badfilter -streamnoads.com##+js(rmnt, script, FingerprintJS) -||dzhzp0zlnyoe8.cloudfront.net^ -tapeadsenjoyer.com,tapeadvertisement.com,tapeantiads.com,tapelovesads.org,tapenoads.com#@#.skyscraper.ad -||9l3s3fnhl.com^ -yabiladi.com##+js(set, adBlockDetected, null) -livegore.com##+js(acs, atob, decodeURIComponent) -livegore.com##+js(aopr, LieDetector) -megaplayer.bokracdn.run##+js(aeld, DOMContentLoaded, .ready) -megaplayer.bokracdn.run##.blockingAd, .popBannerTeaser -pestleanalysis.com##+js(set, blockAdBlock._options.baitClass, null) -ouo.*,mirrorace.com,7starhd.*##+js(acs, String.fromCharCode, /'shift'|break;/) -shortenlinks.top##[href="javascript:void(0);"] -*$media,redirect-rule=noopmp3-0.1s,domain=eroasmr.com -eroasmr.com##.elite_vp_videoPlayerAD -||eroasmr.com/preroll$xhr,1p -||eroasmr.com/postroll$xhr,1p -eroasmr.com##+js(trusted-rpnt, script, vastTag, v) -gaystream.pw##+js(aopr, adsbyjuicy) -gaystream.online##+js(nowoif) -gaystream.online##+js(nostif, afterOpen) -gaystream.cloud##+js(aopr, __Y) -gaystream.pw##.a-block -! twistedporn .com popup -twistedporn.com##+js(nowoif) -@@||paypou.com^$ghide -||paypou.com/newbanner -||oklivetv.com^$xhr,1p,redirect-rule=nooptext -*$script,redirect-rule=noopjs,domain=oklivetv.com -!#if env_firefox -@@||oklivetv.com^$xhr,script,css,1p -!#endif -arabnaar.com##+js(nosiif, visibility, 1000) -@@||althub.club^$ghide -sukidesuost.info##+js(nosiif, visibility, 1000) -@@||extremeoverclocking.com^$ghide -@@||burzowo.info^$1p,script -globes.co.il##+js(set, document.blocked_var, 1) -globes.co.il##+js(set, ____ads_js_blocked, false) -jardiner-malin.fr##+js(set, wIsAdBlocked, false) -! ricettafitness.com popads -ricettafitness.com##+js(acs, String.fromCharCode, 'shift') -ricettafitness.com##+js(nosiif, visibility, 1000) -*$script,3p,denyallow=google.com|gstatic.com,domain=skidrowcodex.net -ymp4.download##+js(nowoif) -ymp4.download###mp3button -eoreuni.com##+js(aopr, adBlockDetected) -eoreuni.com##a[href^="https://iherb.co/"] -! webcreator-journal.com anti adb -webcreator-journal.com##+js(acs, document.addEventListener, google_ad_client) -shinden.pl##+js(acs, document.createElement, shift) -@@||reklama.shinden.eu^$frame,domain=shinden.pl -! freenote .biz anti adb -freenote.biz##+js(nosiif, visibility, 1000) -tw-calc.net##+js(set, WebSite.plsDisableAdBlock, null) -tw-calc.net##.horizontal_large.container -tw-calc.net##.vertical.container -tw-calc.net##.vertical_large.container -tw-calc.net##.vertical_large_2.container -pornomoll.*##+js(nostif, innerText, 2000) -pornomoll.*##+js(aeld, , _blank) -/clc?aid=$all -hentaisaturn.com,italydownload.com,leggenditalia.com,oasidownload.com,semprehawk.com##+js(nowebrtc) -xxxonlinegames.com##+js(nowoif) -supermarches.ca##+js(acs, $, css) -watchpornx.com##+js(aopr, document.dispatchEvent) -watchpornx.com##+js(aopr, jsUnda) -watchpornx.com##+js(nowoif) -watchpornx.com##+js(acs, puShown, /doOpen|popundr/) -watchpornx.com###execphp-2 -watchpornx.com###overlays -||wiztube.xyz/cdn-cgi/trace^$xhr -vidop.*,wiztube.xyz##+js(nowoif) -! lagacetadesalamanca.es video ads -lagacetadesalamanca.es##+js(aopr, videootv) -sakaiplus.com##+js(acs, addEventListener, google_ad_client) -seriemega.*##+js(nowoif) -seriemega.*##.bnr -swame.com##+js(set, is_adblocked, false) -settlersonlinemaps.com##+js(nostif, _0x) -ohmybrush.com##+js(set, ads_blocked, false) -@@||pigy.cz^$ghide -thatav.net##+js(aopr, decodeURI) -digjav.com##+js(aeld, , Pop) -digjav.com##+js(nowoif) -||thatav.net/sw.js$script,1p -se-ed.com##+js(aopr, adBlockDetected) -se-ed.com##[id^="banner"] -phpscripttr.com##+js(noeval-if, ads) -pugam.com##+js(acs, jQuery, ai_adb) -@@||top10newgames.com^$ghide -@@||25cineframes.com^$ghide -25cineframes.com##ins.adsbygoogle -televisiongratishd.com,rojadirecta-tv-en-vivo.blogspot.com##+js(acs, String.fromCharCode, atob) -legendaoficial.net##+js(acs, String.fromCharCode, 'shift') -legendaoficial.net##^script:has-text('shift') -legendaoficial.net##^script:has-text(\'shift\') -talkceltic.net##+js(set, samDetected, false) -@@||splitshire.com^$ghide -splitshire.com##.adsbygoogle:upward(.row-container) -splitshire.com##.ezoic-ad -@@||kwamkidhen.com^$ghide -kwamkidhen.com##[id*="ScriptRoot"] -kwamkidhen.com##ins.adsbygoogle -pdfindir.net##+js(aeld, , _0x) -autoroad.cz##+js(nostif, check) -! 1stcollegescholarship .net anti adb -@@||1stcollegescholarship.net^$ghide -! 3dmonitortips .com anti adb -@@||3dmonitortips.com^$ghide -womenreality.com##+js(nosiif, visibility, 1000) -@@||starbits.io^$ghide -comousarzararadio.blogspot.com##+js(aopr, adBlockDetected) -comousarzararadio.blogspot.com###HTML10, #HTML9 -infocorp.io##+js(aopr, detectAdBlocker) -popsplit.us##+js(aopr, adBlockDetected) -cuitandokter.com##+js(nostif, mdp) -! isohunt2 .net / isohunt. nz popups ads -isohunt.*##+js(nowoif) -||isohunt*.*/nordvpn/$frame -guncelkaynak.com##+js(acs, jQuery, ai_adb) -addictinggames.com##+js(aopr, Drupal.behaviors.agBlockAdBlock) -addictinggames.com#@#.ad_container -addictinggames.com#@#.add-bx -addictinggames.com##.add-bx:style(height: 0px !important; min-height: 0px !important;) -@@*$ghide,domain=4bigv.com|5278cc.co|5278.cool|accountingplus786.blogspot.com|aetools.blogspot.com|antenadosnaskyecia.com|apprendrelekabyle.com|aramosalsal.tv|asianexpress.co.uk|awomanafoot.com|bookmarksway.com|buxearn.com|coinrotation.com|comparatif-logiciels.fr|cours-de-droit.net|dicionarioconceitos.blogspot.com|edukalife.blogspot.com|engquimicasantossp.com.br|firefiles.us|football-highlight.com|gastroepato.it|gozd-les.com|granadaesnoticia.com|hayastantv.me|hunter.fm|info-desk.co.za|l2top.co|letras2.com|logaritmo.org|lootdb.com|metalymetal.com|mtabrasil.com.br|mysavenshare.com|nekomeowmeow.com|nonude.site|numbersinwords.net|overwatch-teamup.com|oztoml.com|pelispedia.net|porngayonline.com|printerprojects.com|promipool.com|rcbinfo.com|redheadpassions.com|remixsear.ch|remixsearch.es|rendaclix.com|sandalwoodking.rocks|seriesonline.one|simplybox.net|tamilfunda.com|teknolojiprojeleri.com|tercihiniyap.net|theinnews.com|top100golfcourses.com|transpassions.com|tripolicastle.com|viewster.co|vww.yggtorrent.fr|walkingenglishman.com|wikihandbk.com|zikloud.com -letras2.com##+js(nostif, nextFunction, 450) -bookmarksway.com,cours-de-droit.net,football-highlight.com,gastroepato.it,granadaesnoticia.com,hayastantv.me,hunter.fm,info-desk.co.za,logaritmo.org,lootdb.com,mtabrasil.com.br,mysavenshare.com,nekomeowmeow.com,numbersinwords.net,oztoml.com,printerprojects.com,redheadpassions.com,sandalwoodking.rocks,teknolojiprojeleri.com,tercihiniyap.net,theinnews.com,tripolicastle.com,vww.yggtorrent.fr,walkingenglishman.com,wikihandbk.com,zikloud.com##ins.adsbygoogle -nekomeowmeow.com###text-6 -nekomeowmeow.com###text-5 -hunter.fm##.pwby_hiper -l2top.co##.main-top-ads -l2top.co##.rightBarAd -l2top.co##div.leftBarAd -l2top.co###bannerads-background -mtabrasil.com.br##.banner -redheadpassions.com,transpassions.com###header_ad_banner -viewster.co##.ads -! sonline .pro popups -sonline.pro##+js(nowoif) -xda-developers.com##+js(rc, twig-body) -@@||hiphopa.net^$ghide -||d10ydmitx7crxz.cloudfront.net^ -||extra69.net^$3p -@@||imedikament.de^$ghide -vosfemmes.com,voyeurfrance.net##+js(set, is_adblocked, false) -sms-anonyme.net##+js(nowebrtc) -@@||sms-anonyme.net^$ghide -sms-anonyme.net##ins.adsbygoogle -portable4pc.com##+js(nosiif, visibility, 1000) -portable4pc.com##+js(aost, document.getElementById, adsBlocked) -! other exoclick crap https://github.com/uBlockOrigin/uAssets/issues/6151#issuecomment-629804631 -*.php$script,1p,domain=18teenporno.tv|3teentube.com|4gaycocks.com|50yearoldsluts.com|adult-home-videos.com|amateur-cougar.com|amateur-nude.com|amateurmaturewives.com|babeswp.com|bannedbdsm.com|bdsmaz.com|bdsmsecrets.net|bigtitsgallery.net|bizarre-club.com|bondage-club.net|bondagevideo.org|bondagewaytube.com|celebritytubeporn.com|celebxvideo.com|cidertube.com|crazygayporn.com|dailygayvideo.com|desimms.co|digisesso.com|dusktube.com|elmtube.com|enterfreegaysex.com|etitz.com|experiences-gay.com|femdomdaily.com|fieldstube.com|footfetish-slave.com|freebesttwinks.com|freegranny6.com|freematurelovers.com|freematureswomen.com|gay-place.com|gayfuckingtube.com|gaypornxxxtube.com|goodtgp.net|grannysfucking.net|hdbbwmovies.com|helloshemale.com|hiddencamsluts.com|homevoyeurvideo.net|hornygrannytube.net|hqvintagetube.net|hugeboobswomen.com|indiancunts.net|indianporndaily.com|indiansexfree.net|javbobo.com|kuboys.net|latinaxxxvideos.com|matures-loving-sex.com|maturesandnylon.com|meporno.com|momsfuckboys.com|moreasiansex.com|mybbwtube.com|mygrannyporn.com|myowntits.com|nakedolders.com|naughtyjapaneseteens.com|nicegrannys.com|nudemilfwomen.com|nudeteenshub.com|nylonbabez.net|nyloncunts.com|nylonglamourlegs.com|nylonpornpictures.net|older-wives.com|pantyhoseminx.com|porncore.net|porngoeshd.com|pornoplum.com|pornvideoh.com|pornvideos.host|raventube.com|retropornzone.com|ritzyamateursex.com|sexrura.com|sexytwinkcock.com|stockingspornpics.com|teen18tube.com|teen-tube-18.com|teen-tube-19.com|teen-tube-21.com|teen-tube-porn.com|teenporn.ws|teenpornvideo.me|teensexvideos.xxx|teensonporn.com|teentube-18.com|thevintagemovies.com|timetoteens.com|tube-teen-18.com|tubebikini.com|tubehd.xxx|ultragranny.com|uniformcunts.com|videosexyteen.com|videosmadeathome.com|vintagesextapes.com|vipoldies.net|wildfemdom.com|wildretroporn.com|wowpornlist.xyz|xxx-hd-teens.com|xxx-hd-tube.com|xxxmegaboobs.com|yatranny.com|yourbdsmmovie.com|yourfreepantyhosegalleries.com|girlsfucking.net|hairy-amateurs.com|maturevideos.site|milfera.com|onlylesbianvids.com|teen-porn-tube.com -thumbnails.porncore.net##div[id][style$="height:200px;width:800px;"] -kochamjp.pl##+js(set, blockAdBlock._options.baitClass, null) -||doubleclick.net^$frame,redirect-rule=noopframe,domain=cpu-world.com -@@||pagead2.googlesyndication.com/pagead/managed/js/adsense/*/show_ads_impl$script,domain=cpu-world.com -@@||cpu-world.com^$ghide -cpu-world.com##ins.adsbygoogle -comparteunclic.com##+js(aopr, NoAdBlock) -localizaagencia.com##+js(nosiif, visibility, 1000) -tech-blogs.com##+js(nostif, mdp) -sexcamfreeporn.com##+js(nostif, Adblocker) -downloaderzone.com##+js(nosiif, visibility, 1000) -themes-dl.com##+js(nosiif, visibility, 1000) -themes-dl.com##+js(nostif, innerHTML) -freegetdownloader.com##+js(nosiif, visibility, 1000) -pghk.blogspot.com##+js(acs, addEventListener, google_ad_client) -upnewsinfo.com##+js(aopr, mMCheckAgainBlock) -punisoku.blogo.jp##+js(acs, url, Math.random) -@@||eska.pl^$ghide -oncam.me##+js(nosiif, visibility, 1000) -oncam.me##+js(acs, window.onload, open) -resetoff.pl##+js(set, ads_unblocked, true) -logi.im##+js(nostif, adsbygoogle) -yourporngod.com##+js(acs, String.fromCharCode, 'shift') -yourporngod.com##+js(set, flashvars.adv_pre_vast, '') -yourporngod.com##+js(set, flashvars.adv_pre_vast_alt, '') -@@||yourporngod.com^$ghide -*$script,3p,denyallow=gstatic.com,domain=yourporngod.com -bussyhunter.com##+js(rpnt, script, /protect_block.*?\,/) -! smdailyjournal.com anti adb -smdailyjournal.com##+js(aopr, __tnt) -mentalfloss.com##+js(set, countClicks, 0) -/wp-content/plugins/eazy-ad-unblocker/*$script,css -adala-news.fr###eazy_ad_unblocker_dialog-message -thehill.com##+js(acs, atob) -anomize.xyz##+js(nano-sib) -anomize.xyz##+js(nosiif, visibility, 1000) -medebooks.xyz##+js(nostif, ai_adb) -anonymousceviri.com##+js(acs, addEventListener, nextFunction) -lavozdigital.es##+js(aopr, NREUM) -bedavapdf.com##+js(acs, addEventListener, google_ad_client) -bedavapdf.com##.Image.widget, #footer-sec1, #footer-sec3 -digitalstudiome.com##+js(aopr, adBlockDetected) -bollyflix.*##+js(rmnt, script, popundersPerIP) -freepornhdonlinegay.com##+js(aopw, decodeURI) -minemods.com.br##+js(acs, addEventListener, google_ad_client) -tutorialforlinux.com##+js(set, blockAdBlock._options.baitClass, null) -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noop.js:10,domain=nsspot.herokuapp.com -uprafa.com##+js(set, settings.adBlockerDetection, false) -uprafa.com###stickyFooterBoxColseBtn -choq.fm##+js(aopr, mdpDeBlocker) -@@||gratisvps.net^$ghide -breatheheavy.com##+js(nostif, eabdModal) -megaflix.*##+js(nowoif) -||sexoland.net^ -wenxuecity.com##+js(acs, onload, adsbygoogle) -wenxuecity.com##+js(nostif, ab_root.show) -wenxuecity.com##+js(no-fetch-if, googlesyndication) -casos-aislados.com##+js(nosiif, visibility, 1000) -! supergoku.com popup -supergoku.com##+js(aopw, atOptions) -supergoku.com##+js(ra, href, #clickfakeplayer) -supergoku.com###link:style(display: block !important;) -2conv.com,flvto.biz##.content-right-bar -2conv.com,flvto.biz##.horizontal-area -flvto.biz,flv2mp3.by##.push-offer -||2conv.com^$csp=script-src * -||flvto.biz^$csp=script-src * -2conv.com,flvto.biz,flv2mp3.by##+js(nowoif) -! docker.events.cube365.net -cube365.net##+js(set, mixpanel.get_distinct_id, true) -zipi.com##.ad -toolforge.org##+js(aopr, noAdBlockers) -! brstej .com ads + popups -brstej.com##+js(aeld, , _0x) -! ads, popups -topwwnews.com##+js(aeld, , _0x) -*$script,3p,domain=topwwnews.com -smartwebsolutions.org##+js(acs, $, .show) -jootc.com##+js(aost, String.prototype.charCodeAt, ai_) -jootc.com##.ai_widget -freeomovie.to##+js(nosiif, visibility, 1000) -freeomovie.to##+js(acs, String.fromCharCode, 'shift') -pasteit.*##+js(noeval-if, AdBlock) -*$xhr,redirect-rule=nooptext,domain=freebinchecker.com -@@||geekprank.com^$ghide -freshstuff4u.info##+js(acs, addEventListener, google_ad_client) -freshstuff4u.info##div.widget_list_mag_wp_300px, .img-200 -anoboy.*##+js(acs, addEventListener, google_ad_client) -anoboy.*##div#judi2, #coloma, [href^="//kokipoker.net"] -anoboy.*##[href^="https://bit.ly/"] -anoboy.*##[href^="http://click2go.me/"] -anoboy.*###popup_box -anoboy.*###popup_bawah -turkrock.com##+js(acs, $, .show) -||c.amazon-adsystem.com/aax2/apstag.js$script,domain=foxnews.com,important -||googletagmanager.com^$script,domain=foxnews.com,important -||imasdk.googleapis.com/js/sdkloader/ima3_debug.js$domain=foxnews.com,important -foxnews.com##.site-header:style(min-height: 90px !important) -@@||85videos.com^$ghide -85videos.com##.sponsor -85videos.com###pop -85videos.com##.haha-body -hamakei.com###topBnr, #recBanner, .partner -myviptuto.com##+js(nosiif, visibility, 1000) -youlikeboys.com##+js(aopr, ExoLoader.serve) -youlikeboys.com##+js(aopr, AdservingModule) -uploadroot.com##+js(aopr, open) -uploadroot.com##.buttonDownload -key-hub.eu##+js(no-fetch-if, ads) -key-hub.eu##+js(nostif, gaData) -@@||key-hub.eu^$ghide -key-hub.eu##ins.adsbygoogle -@@||key-hub.eu/$1p,script -*$script,redirect-rule=noopjs,domain=bandab.com.br -bandab.com.br##.widget_publicidade -gtamaxprofit.com##+js(acs, $, wrapfabtest) -@@||myuploadedpremium.de^$ghide -myuploadedpremium.de##+js(aost, $, /(?=^(?!.*(https)))/) -myuploadedpremium.de##ins.adsbygoogle -myuploadedpremium.de###babasbmsgx -myuploadedpremium.de##.copyright > .card -@@||souqsky.net^$ghide -file4.net,souqsky.net##+js(aopw, Fingerprint2) -@@||ubeat.tv^$ghide -123europix.*##+js(aopr, AaDetector) -123europix.*##+js(aopr, InstallTrigger) -123europix.*##+js(aopr, LieDetector) -123europix.*##[target="_blank"][onclick] -||tracktraf.com^$all -nightfallnews.com##+js(set, bannersLoaded, 4) -nightfallnews.com##+js(set, notEmptyBanners, 4) -nightfallnews.com##+js(nano-sib, timer) -nightfallnews.com##.top_banner_container -nightfallnews.com##+js(aopr, adBlockDetected) -nightfallnews.com##.bottom_sticky_banner_container -@@||animesanka.*^$ghide -*$image,redirect-rule=1x1.gif,domain=animesanka.* -animesanka.*##[id*="-ads-"] -@@||napolitoday.it^$ghide -! jetanimes .com popups -jetanimes.*##+js(ra, href, #clickfakeplayer) -down-paradise.com##+js(aopr, LieDetector) -down-paradise.com##+js(nowoif) -down-paradise.com##+js(aopr, __Y) -novelasligera.com##+js(nosiif, visibility, 1000) -ephoto360.com##+js(acs, $, Adblock) -hightqualityshop.com##+js(nosiif, visibility, 1000) -! movies07. art / .live anti adb -movies07.*##+js(aeld, , pop) -hpaudiobooks.*##+js(acs, String.fromCharCode, 'shift') -hpaudiobooks.*##^script:has-text('shift') -hpaudiobooks.*##^script:has-text(\'shift\') -gaydelicious.com##+js(aost, String.prototype.charCodeAt, ai_) -mondainai.moe##+js(nosiif, visibility, 1000) -mondainai.moe##+js(aopr, app_vars.force_disable_adblock) -##[href^="//mellowads.com/"] -wwwfotografgotlin.blogspot.com##+js(set, fuckAdBlock._options.baitClass, null) -*$script,3p,denyallow=blogger.com|bootstrapcdn.com|cloudflare.com|cloudflare.net|gitcdn.link|githack.com|google.com|googleapis.com|gstatic.com|recaptcha.net,domain=wwwfotografgotlin.blogspot.com -||cpmlink.net^$3p -||unbrick.id^$3p -@@||viralfeed.*^$ghide -viralfeed.*##.admania-widgettit -! pornhail .com ads -*$script,3p,denyallow=cloudflare.com,domain=pornhail.com -pornhail.com##.bottom-blocks -! 3naked .com ads -*$script,3p,denyallow=cloudflare.net|googleapis.com|jsdelivr.net|cloudflare.com,domain=3naked.com -*.php$script,frame,domain=3naked.com -3naked.com###bnclose -3naked.com##.bns-block -! sonorousporn .com ads -*$script,3p,denyallow=cloudflare.com|cloudflare.net|googleapis.com|hwcdn.net|jquery.com|jsdelivr.net|rawgit.com,domain=sonorousporn.com -*.php$script,frame,domain=sonorousporn.com -sonorousporn.com###bnclose -sonorousporn.com##.vid-ave-pl -sonorousporn.com##.on-player-pl -! reamporn .com ads -*$script,3p,denyallow=cloudflare.com|cloudflare.net|googleapis.com|jquery.com|jsdelivr.net|netdna-cdn.com|rawgit.com,domain=reamporn.com -*.php$script,frame,domain=reamporn.com -reamporn.com##.vid-ave-ins -reamporn.com###bnclose -xxxmax.net##^script:has-text('shift') -xxxmax.net##^script:has-text(\'shift\') -xxxmax.net##+js(acs, String.fromCharCode, 'shift') -rahim-soft.com##+js(nosiif, visibility, 1000) -damndelicious.net,simplywhisked.com##+js(aopr, __eiPb) -@@||weibomiaopai.com^$ghide -linksly.co##+js(aopr, app_vars.force_disable_adblock) -@@||linksly.co^$ghide -linksly.co##.fixed-rightSd -linksly.co##.fixed-leftSd -linksly.co##[id*="ScriptRoot"] -linksly.co##+js(nowoif) -linksly.co##+js(set, blurred, false) -*$script,3p,denyallow=cloudflare.com|google.com|gstatic.com|hwcdn.net|jquery.com|recaptcha.net,domain=linksly.co -||linksly.co/sw.js$script,1p -linfoweb.com##+js(acs, Math.floor, document.write) -linfoweb.com##ins.adsbygoogle-wrapper -||texto.click^$3p -||contextbar.ru^$3p -*$script,3p,denyallow=cloudflare.com,domain=storieswatch.com -sexodi.com##+js(set, ads_unblocked, true) -sexodi.com##.background-cloud:style(display: none !important;) -sexodi.com###video_reklamy -upxin.net##+js(aeld, load, onload) -dayoftheweek.org##+js(nosiif, visibility, 1000) -geeksweb.net##+js(aopr, mdpDeBlocker) -geeksweb.net###mdp-deblocker-js-disabled -@@||world-sms.org/get-ad/$xhr,1p -world-sms.org##.promoBlock -mypussydischarge.com##+js(aopr, adBlockDetected) -mypussydischarge.com##+js(aopr, decodeURI) -@@||arab4load.com^$ghide -sms24.*##body > div[style^="position: fixed; z-index: 1000"] -sms24.*##+js(aost, $ado, /ado/i) -sms24.*##+js(aost, document.createElement, app.js) -sms24.*##.ado-header -sms24.*##.ado-content -sms24.*##.placeholder:remove-class(placeholder) -*$script,redirect-rule=noopjs,domain=sms24.* -@@||sms24.*^$ghide -hentaistream.com##+js(aeld, load, script) -hentaistream.com##+js(noeval-if, popUnderStage) -whatsaero.com##+js(set, blockAdBlock._options.baitClass, null) -hhkungfu.tv##+js(acs, addEventListener, google_ad_client) -*$script,redirect-rule=noopjs,domain=hhkungfu.tv -*$xhr,redirect-rule=nooptext,domain=pricez.co.il -@@||fark.com/js/$1p,script -||sexy-egirls.com/sexy-egirls.com.mp4$media,1p,redirect=noopmp3-0.1s -@@||metro.co.uk^$ghide -metro.co.uk###we-need-monies -metro.co.uk##.ad-slot-container -metro.co.uk###connatix_placeholder_desktop -metro.co.uk##.metro__ad_area_left -metro.co.uk##.metro__ad_area_right -metro.co.uk###taboola-feed-container -metro.co.uk###taboola-below-article-thumbnails -javmvp.com##+js(aopr, __Y) -cracking.org##+js(acs, $, samAdBlockAction) -cracking.org##+js(acs, RegExp, googlebot) -labelotaku.com##+js(acs, eval, ignielAdBlock) -softwaresde.com##+js(acs, $, advert) -! Amazon Music ads -||cloudfront.net^*.mp3|$media,redirect=noopmp3-0.1s,domain=music.amazon.com|music.amazon.ca|music.amazon.co.uk|music.amazon.fr|music.amazon.de|music.amazon.it|music.amazon.es|music.amazon.co.jp|music.amazon.com.au|music.amazon.com.mx -badassdownloader.com##+js(set, bscheck.adblocker, noopFunc) -badassdownloader.com,badasshardcore.com,badassoftcore.com##+js(nostif, innerHTML) -quickporn.net##+js(set, qpcheck.ads, noopFunc) -badassoftcore.com,badassdownloader.com,badasshardcore.com,quickporn.net###ban-cont -camarchive.tv##+js(no-fetch-if, popunder) -@@||pikwizard.com^$ghide -pikwizard.com##.sponsor-text -pikwizard.com##[href*="tradedoubler"] -! As of 2016-12-02, found site uses WebRTC to deliver ads -tomshardware.*##+js(aopw, tmnramp) -@@||teleboy.ch/assets/js/*$xhr,1p -teleboy.ch##a[href*="BrandingDay"] -ddownr.com##+js(nowoif) -||curioushingefast.com^ -keepv.id##+js(nowoif) -savethevideo.com##+js(nowoif) -savefrom.net##+js(nowoif) -arponag.xyz##+js(acs, eval, replace) -audiostereo.pl##div[style="margin-bottom: 10px;"] > a[href][target="_blank"], [href^="https://salony.nautilus.net.pl/"] -pcprogramasymas.*##+js(acs, String.fromCharCode, .join('')) -pcprogramasymas.*##+js(aopr, app_vars.force_disable_adblock) -pcprogramasymas.*##+js(set, blurred, false) -pcprogramasymas.*##.box-main > .blog-item -*$script,redirect-rule=noopjs,domain=pcprogramasymas.* -freelistenonline.com##+js(set, fuckAdBlock._options.baitClass, null) -freedeepweb.blogspot.com##+js(nosiif, visibility, 1000) -freedeepweb.blogspot.com##+js(nostif, nextFunction) -fabioambrosi.it##+js(nostif, ad) -@@||fulltip.net^$ghide -fulltip.net##ins.adsbygoogle -fulltip.net##.penci-adsense-below-slider -fulltip.net##.penci-google-adsense -fulltip.net##.penci-google-adsense-2 -fulltip.net###ad-slot -iseekgirls.com##+js(nowoif) -iseekgirls.com##+js(ra, data-item, a[href='']) -iseekgirls.com##.fv-cva-time -iseekgirls.com##.elementor-swiper -iseekgirls.com##.elementor-widget-html.elementor-widget.elementor-element-8fe21fe.elementor-element > .elementor-widget-container > div -iseekgirls.com##[href="https://www.iseekgirls.com/af/webcam"], [href^="https://www.iseekgirls.com/adultfriendfinder/"] -iseekgirls.com##.flowplayer.is-cva .fp-controls:style(display: flex !important) -iseekgirls.com##.flowplayer.is-cva .fp-fullscreen:style(display: flex !important) -iseekgirls.com##[href^="https://www.iseekgirls.com/"][target="_blank"] -iseekgirls.com##[href="https://www.iseekgirls.com/isg/header-ads"] -cshort.org##+js(nowoif, onclickmega) -||cshort.org/themes/cshort_theme/assets/js/vanta.birds.min.js$script,1p -cshort.org##+js(set, adblock, false) -text2voice.org##+js(nosiif, visibility, 1000) -! fullcinema. xyz -fullcinema.*,fullreal.*##.mobile-btn -fullcinema.*,fullreal.*##.mvic-btn -fullcinema.*,fullreal.*##div.content-kuss -bondibeachau.com##+js(nano-sib) -! Appears related to uponit.com -! Somehow, websocket requests are behind-the-scene with Firefox. Pending -! further investigation, this fixes the issue. -||4chan.org^$csp=connect-src https: http: -*$script,3p,denyallow=4cdn.org|4chan.org|cloudflare.com|google.com|gstatic.com|hcaptcha.com|mathjax.org,domain=boards.4channel.org -*$script,3p,denyallow=4cdn.org|4channel.org|cloudflare.com|google.com|gstatic.com|hcaptcha.com|mathjax.org,domain=4chan.org -milapercia.com##+js(nowoif) -@@||brazzers3x.org^$ghide -brazzers3x.org##.ads -artesacro.org##+js(acs, onload, adb) -! windows-1 .com popups -windows-1.com##+js(nowoif) -curto.win##+js(aopr, app_vars.force_disable_adblock) -curto.win##+js(aeld, click, trigger) -*$frame,3p,domain=curto.win -||avantajados.com^$3p -kontrolkalemi.com##+js(aopr, adBlockDetected) -@@||chinapost-track.com/$xhr,1p -@@||gamebrew.org^$ghide -gamebrew.org##ins.adsbygoogle -gamebrew.org##+js(no-fetch-if, method:HEAD) -drtuber.*##+js(nowoif) -drtuber.*###video_list_banner -drtuber.*##.abtext -drtuber.*##.drt-spot-box -drtuber.*##.f_width.footer > .item_box -drtuber.*##.fh.heading -drtuber.*##.item_spots -drtuber.*##.livecams_main -drtuber.*##.puFloatLine -drtuber.*##.title-sponsored -||drtuber.*/footer_tiz.php -||drtst.com/promo/banners/ -drtuber.*###spot_video_partner_banner -m.drtuber.com###banner_overlay-postitial-video:remove() -takimag.com##+js(acs, document.getElementById, show_ads) -xsanime.com##+js(nosiif, _0x) -xsanime.com##+js(aeld, , _0x) -xsanime.com##+js(aopr, console.clear) -*$script,domain=xsanime.com,3p,denyallow=chatango.com|cloudflare.com|disqus.com|disquscdn.com|onesignal.com -ytboob.com##+js(aopr, document.dispatchEvent) -gsmfirmware.net##+js(acs, eval, ignielAdBlock) -! uploadraja .com ads -uploadraja.com##+js(acs, getCookie) -||uploadraja.com/sw.js$script,1p -||gamezop.com^$domain=uploadraja.com -||postimg.cc^$image,domain=uploadraja.com -||eriegentsfse.info^ -@@||f1countdown.com^$ghide -@@||stgeorgeutah.com^$ghide -stgeorgeutah.com##.main-top-ad -@@||distro.tv^$ghide -lookimg.com##+js(nosiif, visibility, 1000) -yellowbridge.com##+js(nostif, blocker) -yellowbridge.com##+js(set, isContentBlocked, falseFunc) -usb-antivirus.com##+js(aopr, mdpDeBlocker) -graphicdesignresources.net##+js(nosiif, visibility, 1000) -! ||spotify.com/storage-resolve/files/audio/interactive/*$xhr,domain=open.spotify.com -||akamaized.net/audio/$media,redirect=noop-1s.mp4:10,from=open.spotify.com -||scdn.co/audio/$media,redirect=noop-1s.mp4:10,domain=open.spotify.com -||scdn.co/mp3-ad/$media,redirect=noop-1s.mp4:10,domain=open.spotify.com -||spotifycdn.com/audio/$media,redirect=noop-1s.mp4:10,domain=open.spotify.com -||amillionads.com^$media,redirect=noop-1s.mp4:10,from=open.spotify.com -||2mdn.net^$media,redirect=noop-1s.mp4:10,domain=open.spotify.com -*$media,3p,redirect-rule=noop-1s.mp4:10,domain=open.spotify.com -ilgeniodellostreaming.*##+js(aopr, AaDetector) -ilgeniodellostreaming.*##+js(nowoif) -ilgeniodellostreaming.*##.opbtn.bnnr1 -ilgeniodellostreaming.*##.opbtn.bnnr2 -ilgeniodellostreaming.*##.opbtn.wp-content -ilgeniodellostreaming.*##[href*=".php"] -ilgeniodellostreaming.*##.alert-warning -safevideo.click##[meta-link="/video.html"] -v1.safevideo.click##.butt -v1.safevideo.click##.hov -v1.safevideo.click###register-overlay -v1.safevideo.click###custom-video -v1.safevideo.click###video-container -arabianbusiness.com##+js(aopr, adBlockDetected) -||intergient.com^$script,domain=emoji.gg,redirect-rule=noopjs -emoji.gg##+js(no-xhr-if, adsbygoogle) -tattle.life##+js(nostif, prompt, 1000) -tattle.life##.visitorAdPost -tutorials-technology.info##+js(nostif, ai_adb) -veryfiles.com##+js(nosiif, visibility, 1000) -||dezf3o8j9jdt6.cloudfront.net^$3p -eskiceviri.blogspot.com##+js(aopr, adBlockDetected) -eskiceviri.blogspot.com##+js(acs, puShown, /doOpen|popundr/) -siteunblocked.info,theproxy.app##+js(nowoif) -/app14.js$domain=siteunblocked.info|theproxy.app -/g12.js$domain=siteunblocked.info|theproxy.app -siteunblocked.info,theproxy.app##.all-linked -siteunblocked.info##+js(aopr, GetWindowHeight) -siteunblocked.info##+js(aopr, decodeURIComponent) -/hy.js$script,domain=siteunblocked.info -||siteunblocked.info/zpp/*$script,domain=siteunblocked.info -siteunblocked.info##+js(aeld, , /pop|wm|forceClick/) -siteunblocked.info##.antoic -siteunblocked.info##[id^="cookieConsent"] -||declk.com^$all -||outwhirlipedeer.com^$all -animeblkom.net##+js(set, blockAdBlock._options.baitClass, null) -animeblkom.net##+js(set, CloudflareApps.installs.Ik7rmQ4t95Qk.options.measureDomain, undefined) -vid4up.*###aoverlay -vid4up.*##+js(nowoif) -convert2mp3.tv##[href="/banner.html"] -cardiagn.com##+js(nostif, mdp) -@@||aosmark.com^$ghide -aosmark.com##+js(set, detectAB1, noopFunc) -@@||legrandrex.com^$ghide -@@||trueid.net^$ghide -@@||konstantinova.net^$ghide -konstantinova.net##+js(nano-sib) -konstantinova.net##[href^="//mellowads.com/"] -baritoday.it##+js(nostif, bADBlock) -earncash.*##+js(aopr, app_vars.force_disable_adblock) -mashtips.com##+js(nostif, ai_adb) -ministryofsolutions.com##+js(acs, addEventListener, google_ad_client) -dj-figo.com##+js(aopr, adBlockDetected) -xiaomitools.com##+js(acs, addEventListener, google_ad_client) -link1s.*##+js(aopr, app_vars.force_disable_adblock) -link1s.*##+js(aopr, open) -link1s.*##.banner-inner -kiemlua.com,link1s.*###baolink1s -anhdep24.com,asideway.com##+js(acs, eval, replace) -anhdep24.com,asideway.com##.popup-container, .text-center h2~*, .text-center h2, .site-logo -anhdep24.com#@##link1s-wait1 -aemenstore.com,byboe.com,cazzette.com,dreamcheeky.com,fidlarmusic.com,hookeaudio.com,jncojeans.com,kiemlua.com,kingsleynyc.com,lucidcam.com,nguyenvanbao.com,nousdecor.com,pennbookcenter.com,publicananker.com,restorbio.com,rezence.com,staaker.com,uebnews.online,thegoneapp.com##+js(nano-sib, counter, *) -aemenstore.com,byboe.com,cazzette.com,dataf.pro,hookeaudio.com,jncojeans.com,kiemlua.com,kingsleynyc.com,link1s.*,lucidcam.com,marharo.com,medcpu.com,nguyenvanbao.com,nousdecor.com,pennbookcenter.com,restorbio.com,staaker.com,thegoneapp.com,uebnews.online##+js(nosiif, visibility, 1000) -link1s.*##+js(set, blurred, false) -aemenstore.com,byboe.com,cazzette.com,dreamcheeky.com,fidlarmusic.com,hookeaudio.com,jncojeans.com,kiemlua.com,kingsleynyc.com,lucidcam.com,nguyenvanbao.com,nousdecor.com,pennbookcenter.com,publicananker.com,restorbio.com,rezence.com,staaker.com,uebnews.online,thegoneapp.com###link1s-link -aemenstore.com,byboe.com,cazzette.com,dreamcheeky.com,fidlarmusic.com,hookeaudio.com,jncojeans.com,kiemlua.com,kingsleynyc.com,lucidcam.com,nguyenvanbao.com,nousdecor.com,pennbookcenter.com,publicananker.com,restorbio.com,rezence.com,staaker.com,uebnews.online,thegoneapp.com###link1s-wait1 -aemenstore.com,byboe.com,cazzette.com,dreamcheeky.com,fidlarmusic.com,hookeaudio.com,jncojeans.com,kiemlua.com,kingsleynyc.com,lucidcam.com,nguyenvanbao.com,nousdecor.com,pennbookcenter.com,publicananker.com,restorbio.com,rezence.com,staaker.com,uebnews.online,thegoneapp.com###link1s-generate -aemenstore.com,byboe.com,cazzette.com,dreamcheeky.com,fidlarmusic.com,hookeaudio.com,jncojeans.com,kiemlua.com,kingsleynyc.com,lucidcam.com,nguyenvanbao.com,nousdecor.com,pennbookcenter.com,publicananker.com,restorbio.com,rezence.com,staaker.com,uebnews.online,thegoneapp.com###link1s-snp:style(display:block!important) -*$3p,denyallow=bootstrapcdn.com|cloudflare.com|consensu.org|google.com|googleapis.com|gstatic.com|hcaptcha.com|jquery.com|jsdelivr.net|recaptcha.net,domain=link1s.* -||i.imgur.com^$image,domain=anhdep24.com|dreamcheeky.com|fidlarmusic.com|kiemlua.com|lucidcam.com|nousdecor.com|publicananker.com|rezence.com -kiemlua.com,link1s.com##+js(noeval-if, /chp_?ad/) -kiemlua.com##^script:has-text(Adblock) -!#if !cap_html_filtering -kiemlua.com##+js(rmnt, script, Adblock) -!#endif -mynet.com##+js(nostif, googlefc) -dropshipin.id##+js(acs, $, ads) -haddoz.net##+js(set, adBlockDetected, noopFunc) -||static.adsafeprotected.com/vans-adapter-google-ima.js$script,redirect-rule=noopjs,domain=motortrend.com -necksdesign.com##+js(nosiif, visibility, 1000) -hollywoodpq.com##+js(acs, document.querySelector, adb) -hollywoodpq.com##div.oboxads -@@||vanis.io/$xhr,1p -vanis.io###player-data > div:nth-of-type(1) -! mdpDeBlocker -dcleakers.com,esgeeks.com,pugliain.net,uplod.net,worldfreeware.com##+js(nostif, mdp) -*$script,redirect-rule=noopjs,domain=siamblockchain.com -||pugliain.net/wp-content/uploads/*.gif$image -siamblockchain.com##.headerad-desk -! vidlo .us popups -vidlo.us##+js(aeld, , _0x) -brofist.io##.menuOverlay -larvelfaucet.com##+js(acs, addEventListener, nextFunction) -larvelfaucet.com##+js(nosiif, visibility, 1000) -larvelfaucet.com##+js(aeld, load, block) -larvelfaucet.com##[class^="bmadblock"] -larvelfaucet.com###bottomRightFloatingAd -larvelfaucet.com##ins[style] -larvelfaucet.com##.col-12 > div[style="display: inline-block"] -larvelfaucet.com###ptcAdIframe -larvelfaucet.com##[href^="https://larvelfaucet.com/ads-"] -*$object,redirect-rule=noopframe,domain=larvelfaucet.com -@@||larvelfaucet.com/images/ad_$image,1p -getdogecoins.com##+js(aopr, show_ads) -getdogecoins.com##[class^="bmadblock"] -youranshare.com##+js(acs, $, .init) -forumdz.com##+js(nostif, offsetHeight) -momzr.com##.item:has(> iframe) -*$script,3p,denyallow=fluidplayer.com|google.com|gstatic.com|googleapis.com|recaptcha.net|hcaptcha.com|hwcdn.net,domain=momzr.com -depo-program.blogspot.com##+js(acs, addEventListener, google_ad_client) -gototub.*##+js(nowoif) -quicasting.it##+js(nosiif, visibility, 1000) -blasianluvforever.com##+js(aopr, adBlockDetected) -wcoforever.com##+js(nostif, google_jobrunner) -wcoforever.com###sidebar_r1 -wcoforever.com##.anti-ad -freewatchserialonline.com##+js(acs, XMLHttpRequest, ActiveXObject) -@@||freewatchserialonline.com^$ghide -freewatchserialonline.com##[data-zone] -*$script,3p,domain=freewatchserialonline.com,denyallow=tvlogy.to|bootstrapcdn.com|disquscdn.com|disqus.com|fbcdn.net|facebook.net|fastly.net|fastlylb.net|jquery.com|hwcdn.net|hcaptcha.com|recaptcha.net|cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com|jwpcdn.com -creatur.io##+js(set, canRunAds, true) -@@||robofight.io/*/ads.js$script,1p -robofight.io##div.side-loadout-item:nth-of-type(3) -robofight.io##.home-banner -! put-locker .com popups -put-locker.com##+js(aeld, , _0x) -captureflag.io###dAB -*$script,redirect-rule=noopjs,domain=booogle.net -ihaxk.com##+js(nosiif, visibility, 1000) -ihaxk.com##+js(acs, document.write) -watch-jav-english.live##+js(nowoif) -watch-jav-english.live##+js(aopr, __Y) -@@||watch-jav-english.live^$ghide -tricksplit.io##+js(set, blockAdBlock, trueFunc) -tricksplit.io##p:has-text(Advertisement) -tricksplit.io##div:has(> .adsbygoogle) -tricksplit.io##div[class^="ads_longAd_"] -*$script,redirect-rule=noopjs,domain=dcode.fr -@@||dcode.fr^$ghide -dcode.fr##ins.adsbygoogle -dcode.fr##div[id^="div-gpt-ad"] -@@||dcode.fr^$xhr,1p -*$xhr,redirect-rule=nooptext,domain=ctrlv.* -ctrlv.*##a.download[target="_blank"]:not(a[href*="ctrlv."]):remove() -ctrlv.*##+js(set, uBlockOriginDetected, false) -fikiri.net##+js(nostif, mdp) -@@||librevpn.org^$script,1p -@@||mhktricks.org^$ghide -||mhktricks.org/sw.js$script,1p -racaty.*##+js(aopw, Fingerprint2) -racaty.*##+js(nowebrtc) -iptunnels.com##+js(nosiif, visibility, 1000) -dramahd.me##+js(aost, String.prototype.charCodeAt, ai_) -planet-streaming1.com##+js(nowoif) -! imgcredit.xyz popunder -imgcredit.xyz##+js(aopr, exoJsPop101) -appsfullversion.com##+js(nosiif, visibility, 1000) -davidgalaxia.com##+js(nosiif, visibility, 1000) -anonymous-links.com##+js(nosiif, visibility, 1000) -pagalmovies.*,7starhd.*,jalshamoviez.*,moviesyug.net,9xupload.*,bdupload.*,desiupload.*,rdxhd1.*,w4files.ws##+js(aeld, , /_0x|localStorage\.getItem/) -@@||couponcabin.com^$ghide -||video-ads-module.ad-tech.nbcuni.com/$xhr,redirect=nooptext,domain=peacocktv.com -peacocktv.com##.adsbox:remove() -malaysiastock.biz##+js(aopr, google_ad_status) -malaysiastock.biz##.RightPanel_Rectangle1 -*$xhr,redirect-rule=nooptext,domain=katholisches.info -biopills.net##+js(aost, encodeURIComponent, inlineScript) -@@||atozmath.com^$ghide -@@||atozmath.com/Scripts/advertisement.js$xhr,1p -atozmath.com##.videoDiscovery -@@||services.bilsyndication.com/adv1/*$script,domain=atozmath.com -@@||biltag.bilsyndication.com^$script,domain=atozmath.com -@@||assets.bilsyndication.com/prebid/default/*$script,domain=atozmath.com -||assets.bilsyndication.com/plugins/*$script,redirect=noopjs,domain=atozmath.com -||a-mx.com^ -@@||ssl.google-analytics.com/ga.js$script,domain=atozmath.com -*$image,redirect-rule=2x2.png,domain=atozmath.com -*$script,redirect-rule=noopjs,domain=atozmath.com -@@||assets.bilsyndication.com/plugins/cmptcf2/cmp-v2.0.1.js$script,domain=atozmath.com -@@||services.bilsyndication.com/passback/?t=$script,domain=atozmath.com -@@||services.bilsyndication.com^$xhr,domain=atozmath.com -@@||amazon-adsystem.com/aax2/apstag.js$script,domain=atozmath.com -atozmath.com###vi-smartbanner -atozmath.com##.adsbyvli:style(opacity: 0 !important; pointer-events: none !important;) -atozmath.com##+js(set, googletag._vars_, {}) -atozmath.com##+js(set, googletag._loadStarted_, true) -atozmath.com##+js(set, googletag._loaded_, true) -atozmath.com##+js(set, google_unique_id, 1) -atozmath.com##+js(set, google.javascript, {}) -atozmath.com##+js(set, google.javascript.ads, {}) -atozmath.com##+js(set, google_global_correlator, 1) -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js:5,domain=atozmath.com -planet-streaming1.com##+js(nosiif, visibility, 1000) -@@||translatoruser-int.com^$ghide -kangkimin.com##+js(nofab) -kangkimin.com##+js(nano-sib) -! fix anti adb -domoplus.pl,kuchniaplus.pl,miniminiplus.pl,teletoonplus.pl##+js(json-prune, ads.servers.[].apiAddress) -loadsamusicsarchives.blogspot.com##+js(aopr, AaDetector) -||weatherforecastmap.com^$3p -xxxfiles.com##+js(aopr, AaDetector) -toppng.com##+js(nostif, nextFunction, 250) -panjiachen.gitee.io##+js(nofab) -@@||ninja.io^$ghide -battleboats.io##+js(nofab) -battleboats.io##+js(set, adBlocker, false) -||battleboats.io/menu-overlay.html^$frame -! Foil blocker-sniffer code on Condé Nast sites. -architecturaldigest.com,arstechnica.com,bonappetit.com,brides.com,cntraveler.com,epicurious.com,golfdigest.com,newyorker.com,pitchfork.com,self.com,teenvogue.com,vanityfair.com,vogue.com,wmagazine.com##+js(nofab) -newyorker.com##+js(set, paywallGateway.truncateContent, noopFunc) -newyorker.com##.journey-unit -newyorker.com##.paywall-registration-gate -kavgle.com##[href^="https://go.vrbangers.com/"], [href^="https://asiafriendfinder.com/"] -@@||chelseafc.com^$ghide -rumahit.id##+js(acs, eval, ignielAdBlock) -@@||hexagame.io^$ghide -1bitspace.com##+js(acs, setTimeout, Constant) -1bit.space,1bitspace.com##+js(aopr, u_cfg) -@@||1bit.space/default/public/assets/*$script,1p -1bit.space##.active.bnsLayers.is-block-touch.is-grid -1bit.space##.bounceIn.animated.bnsLayers.is-block-touch.is-grid -friendproject.net##+js(set, adblock, false) -parispi.net##+js(aeld, DOMContentLoaded, adblock) -wirralglobe.co.uk##+js(aopr, _sp_._networkListenerData) -pervertgirlsvideos.com##+js(aopr, mdp_deblocker) -texte.work##+js(acs, addEventListener, google_ad_client) -*$script,redirect-rule=noopjs,domain=supreme-gamers.com -kioven.com##+js(aopr, LieDetector) -cointelegraph.com##[href^="javascript:void(0)"] -cointelegraph.com##div[class*="componentAdbutler_"] -||mercurial.cointelegraph.com^$xhr -t-rocforum.de##+js(acs, $, prompt) -hyundaitucson.info##+js(aopr, adBlockEnabled) -hyundaitucson.info##.display_ads -*$script,redirect-rule=noopjs,domain=puressh.net -ciudadblogger.com##+js(aeld, load, onload) -cidade.iol.pt##+js(nostif, adblock detection) -telemporio4.blogspot.com##+js(noeval-if, debugger) -telemporio4.blogspot.com##+js(acs, addEventListener, google_ad_client) -@@||tel-emporio10.blogspot.com^$ghide -*$image,redirect-rule=2x2.png,domain=tel-emporio10.blogspot.com -exambd.net##+js(acs, addEventListener, google_ad_client) -! quizglobal.com anti-adblock -@@||quizglobal.com^$ghide -quizglobal.com##div[ng-if="vm.showAds"] -quizglobal.com##ins.adsbygoogle -! ke-1 .com anti adb -ke-1.com##+js(aeld, load, onload) -! husseinezzat .com anti adb -@@||husseinezzat.com^$ghide -abukabir.fawrye.com##+js(acs, addEventListener, nextFunction) -@@||indianwebseries.*^$ghide -*$xhr,domain=indianwebseries.*,redirect-rule=nooptext -indianwebseries.*##^script:has-text(detect) -@@||inews.co.uk^$ghide -inews.co.uk##.thanks-3xsWr -dosya.co##+js(nano-stb) -*$xhr,redirect-rule=nooptext,domain=dynast.io -deepfakeporn.net##+js(aopr, open) -deepfakeporn.net##.highlight ~ li > a[target="_blank"] -||deepfakeporn.net/contents/rest/player/deepswap_japanese -brighteon.com##+js(set, adBlockDisabled, true) -iklandb.com##+js(acs, $, .width) -iklandb.com##+js(nano-sib) -iklandb.com##.black-overlay -iklandb.com##.whitecontent -*$script,3p,domain=elsfile.org -@@||simply-debrid.com^$ghide -simply-debrid.com##.adsbygoogle:remove() -fantacalcio.it##+js(nostif, .offsetHeight, 100) -wgzimmer.ch##+js(aopr, adBlockDetected) -! eroticmv.com anti-adblock -eroticmv.com##+js(aopr, mdpDeBlocker) -eroticmv.com###mdp-deblocker-js-disabled -w3schools.com###tryitLeaderboard -!#if !env_mobile -w3schools.com###breadcrumb + .trytopnav:style(top: 36px!important;) -w3schools.com###tryitLeaderboard + .trytopnav:style(top: 0!important;) -w3schools.com###tryitLeaderboard + #breadcrumb ~ #container:style(top: 84px!important;) -w3schools.com###tryitLeaderboard + .trytopnav ~ #dragbar + #container:style(top: 48px!important;) -!#endif -!#if env_mobile -w3schools.com##.trytopnav:style(top: 0!important;) -w3schools.com###tryitLeaderboard ~ #container:style(top: 48px!important;) -!#endif -unionmanga.xyz##+js(nosiif, visibility, 1000) -vviruslove.com##+js(nosiif, visibility, 1000) -linksaya.com##+js(acs, addEventListener, google_ad_client) -more.tv##+js(set, blockedElement, noopFunc) -more.tv##[class^=Banner_] -! onlinetvrecorder .com anti adb -@@||onlinetvrecorder.com^$xhr,1p -*$xhr,3p,domain=movieston.com -@@||gamejop.com/ads.js$xhr,domain=gamezop.com -gamezop.com##+js(nosiif, debugger) -gamezop.com##[data-native-ad] -vieon.vn##div.pub_300x250.pub_300x250m.pub_728x90.text-ad.textAd.text_ad.text_ads.text-ads:style(display:block !important) -! youx .xxx popups ads -youx.xxx##+js(aeld, , _0x) -youx.xxx##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -youx.xxx##+js(set, flashvars.adv_pause_html, '') -youx.xxx##.thumb_banner -||youx.xxx/*.php| -*$script,domain=outerspace.com.br,redirect-rule=noopjs -aksensei.com##+js(acs, eval, ignielAdBlock) -! awdescargas.com fake button -awdescargas.com##+js(aopw, smrtSB) -deseneledublate.com##+js(acs, Math, XMLHttpRequest) -deseneledublate.com##+js(aopr, AaDetector) -deseneledublate.com##+js(nowoif) -||i.imgur.com^$domain=deseneledublate.com -pasend.*##+js(nosiif, visibility, 1000) -pasend.*##+js(aost, String.prototype.charCodeAt, ai_) -pasend.link##+js(no-xhr-if, /^/) -unity3diy.blogspot.com##+js(nosiif, visibility, 1000) -anongamez.com##+js(aopr, scriptwz_url) -anongamez.com##.vc_row-fluid.wpb_row.vc_row:has(.vc_btn3-icon.fa.fa-gamepad):has(.vc_btn3-icon.fa.fa-download) -anongamez.com##[href^="https://descargarjuegospc.net/"] -! sportbar .biz popups -sportbar.*##+js(nowoif) -politico.com##.gallery-carousel-ad -fighter.stream##+js(nostif, mdpDeBlocker) -! heavy-r .com popunder / ads -heavy-r.com##+js(acs, document.createElement, insertBefore) -heavy-r.com##[class^="adzone"] -youtubetomp3.*##+js(nowoif) -youtubetomp3.*##a[href="/button.php"] -*$script,3p,denyallow=cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.net|fastlylb.net|fbcdn.net|fluidplayer.com|google.com|googleapis.com|gravatar.com|gstatic.com|hwcdn.net|jsdelivr.net|wp.com,domain=veranime.*|verhentai.* -marriedgames.com.br##+js(nostif, ai_adb) -marriedgames.com.br##.show-prompt -marriedgames.com.br##._ning_cont:has(.adsbygoogle) -hakie.net##+js(nosiif, visibility, 1000) -healthline.com##aside:has(div:matches-css-before(content:/ADVERTISEMENT/)) -healthline.com##div[data-empty^="true"]:matches-css-before(content:/ADVERTISEMENT/) -healthline.com##[class*="css"]:matches-css-before(content:/ADVERTISEMENT/) -healthline.com##[href*="redirect"]:upward(section) -healthline.com##hl-adsense -video1tube.com##+js(set, popit, false) -video1tube.com##+js(acs, btoa) -@@||mercedesclub.cz^$ghide -mercedesclub.cz##ins.adsbygoogle, [class^="side_ad_"] -! reddit adb tracking -@@||redditstatic.com^*/xads.js$script,domain=reddit.com -@@||overtakefans.com^$ghide -brawlhalla.fr##+js(nostif, check) -informaxonline.com##+js(no-xhr-if, googlesyndication) -informaxonline.com##+js(no-xhr-if, /ad) -informaxonline.com###wpsafe-generate, #wpsafe-link:style(display: block !important;) -informaxonline.com###wpsafe-generate, #wpsafe-link:others() -familyrenders.com##+js(aopr, adBlockDetected) -hentaifreak.org##+js(aopr, decodeURI) -hentaifreak.org##+js(aopw, onpopstate) -hentaifreak.org##+js(nostif, popState) -*.gif$image,domain=hentaifreak.org -@@||orangeobserver.com^$ghide -pimylifeup.com##+js(aopr, adthrive.config) -@@||chronicle.com/dg/default/rest/$xhr,1p -chronicle.com##.GoogleDfpAd-container -@@||vix.com^$ghide -vix.com##+js(json-prune, breaks interstitials info, interstitials) -vix.com##+js(xml-prune, xpath(//*[name()="Period"][.//*[name()="AdaptationSet"][@contentType="video"][not(@bitstreamSwitching="true")]]), , .mpd) -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,3p,redirect-rule=google-ima.js,domain=vix.com -@@||imasdk.googleapis.com/js/sdkloader/ima3_dai.js$script,3p,domain=vix.com -animepahe.*##+js(aopw, __C) -wordcounter.icu##+js(nowoif) -@@||wordcounter.icu^$ghide -wordcounter.icu##center -wordcounter.icu##div[style*="z-index:99999"] > div[style*="width:300px"] -*$script,3p,denyallow=google.com|gstatic.com|hcaptcha.com|jsdelivr.net|recaptcha.net|googleapis.com,domain=wordcounter.icu -||uii.io^$3p -tecnotutoshd.net##+js(aopw, adBlockDetected) -@@||chiasenhac.vn/test_ads.html^$frame,1p -daburosubs.com##+js(aopr, adBlockDetected) -moneywar2.blogspot.com##+js(acs, addEventListener, google_ad_client) -*$script,redirect-rule=noop.js,domain=flowsoft7.com -checkfiletype.com##+js(nosiif, visibility, 1000) -@@||scrapbox.io^$xhr,1p -santoinferninho.com##+js(nosiif, visibility, 1000) -@@||articlesmania.me^$ghide -articlesmania.me###load-cycle -articlesmania.me##.demand-supply -articlesmania.me##ins.adsbygoogle -articlesmania.me##.widget_text.widget -hypebeast.com##+js(nostif, ad-block-popup) -izismile.com###banner_code_rotator -izismile.com##.js-banner-top -dafideff.com##+js(acs, addEventListener, google_ad_client) -gurl.pw##+js(nosiif, visibility, 1000) -4players.de##+js(set, adBlockerDetected, false) -@@||visitmama.com^$ghide -! world4ufree. plus antiadblock -world4ufree.*##+js(aeld, , _0x) -world4ufree.*##+js(acs, eval, replace) -krankheiten-simulieren.de##+js(nostif, exitTimer) -! venusarchives .com popups + anti adb -venusarchives.com##+js(aeld, , bi()) -venusarchives.com##+js(aopr, b2a) -errotica-archives.com##+js(ra, href, [href*="ccbill"]) -*$script,3p,denyallow=aechannel.com|ahacdn.me|rncdn7.com|disqus.com|jsdelivr.net|jwpcdn.com|fastly.net|fastlylb.net|jquery.com|hwcdn.net|recaptcha.net|cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com,domain=gayporno.fm -simkl.com##+js(aeld, load, head) -*$xhr,3p,redirect-rule=nooptext,domain=simkl.com -*$script,3p,redirect-rule=noopjs,domain=simkl.com -catholic.com##+js(nostif, innerHTML.replace) -trentotoday.it##+js(nostif, bADBlock) -sociadrive.com##+js(nosiif, visibility, 1000) -@@||prinxy.app^$ghide -prinxy.app##.native-ads-wrapper -prinxy.app##.sticky-banner -@@||googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=onepiecex.xyz -onepiecex.xyz##+js(nano-sib) -angeloyeo.github.io##+js(nosiif, visibility, 1000) -@@||thehacktoday.com^$ghide -thehacktoday.com##ins.adsbygoogle -annabelle.ch##+js(aopr, _sp_._networkListenerData) -csgo-ranks.com##+js(nosiif, visibility, 1000) -androidgreek.com##+js(aopr, adBlockDetected) -sshagan.net##+js(acs, addEventListener, google_ad_client) -*$script,domain=ad-doge.com,redirect-rule=noopjs -ad-doge.com##+js(nostif, ab, 2000) -fshost.me##+js(acs, onload, ajax) -fshost.me##+js(set, abu, falseFunc) -tutoganga.blogspot.com##+js(acs, addEventListener, google_ad_client) -pkr.pw##+js(aopr, app_vars.force_disable_adblock) -pkr.pw##+js(aopr, open) -pkr.pw##+js(set, blurred, false) -pkr.pw##.banner -*$script,3p,denyallow=bootstrapcdn.com|cloudflare.net|fontawesome.com|google.com|gstatic.com|hwcdn.net|jquery.com|jsdelivr.net|recaptcha.net,domain=pkr.pw -royalkom.com##+js(nosiif, visibility, 1000) -super-ethanol.com##+js(nosiif, visibility, 1000) -dl.3dmodelshare.org##+js(acs, document.addEventListener, google_ad_client) -3dmodelshare.org##+js(nostif, data?, 4000) -3dmodelshare.org##+js(rmnt, script, deblocker) -3dmodelshare.org##div[class=""][data-locker-id]:style(display:block !important) -3dmodelshare.org##.mts-cl-wrapper -3dmodelshare.org##div.widget_anthemes_300px -3dmodelshare.org##.single-box -3dmodelshare.org##.single-728 -thingiverse.com##+js(nano-sib) -thingiverse.com##[class*="ThingPage__topAd"] -thingiverse.com##[class^="ItemCardContainer__itemCard"]:has(> [title="Advertisement"]) -surf-trx.com##+js(nosiif, visibility, 1000) -responsivevoice.org##.cp-modal-popup-container:remove() -samapkstore.com##+js(nosiif, visibility, 1000) -samapkstore.com##+js(nano-sib, countDown) -th-cam.com##+js(aopw, HTMLElement.prototype.insertAdjacentHTML) -th-cam.com##pp -jacksorrell.tv##+js(acs, jQuery, adblocker) -||tinypass.com^$domain=thechive.com -9xmovies.*##+js(nowoif) -satoshiquiz.com##+js(nosiif, visibility, 1000) -satoshiquiz.com##.ad -satoshiquiz.com##.slideshow-container -link.cgtips.org##+js(acs, addEventListener, google_ad_client) -link.cgtips.org##+js(set, countdown, 0) -cgtips.org##+js(nostif, css_class.show) -cgtips.org##div[class*="better-ads-listitemad"]:remove() -cgtips.org##+js(nostif, .data?) -saradahentai.com,hentaiarena.com##+js(aopr, document.dispatchEvent) -eddiekidiw.com##+js(acs, $, _ads) -blkom.com##+js(set, blockAdBlock._options.baitClass, null) -kabel-tv-plus.blogspot.com##+js(acs, addEventListener, google_ad_client) -! gratispaste.com popup -gratispaste.com##+js(aopr, AdservingModule) -gratispaste.com##+js(aopr, _pop) -gratispaste.com##.content > center -9xlinks.site##+js(aeld, DOMContentLoaded, adlinkfly) -||za.gl^$script,3p -*$script,3p,denyallow=googleapis.com,domain=gratispaste.com -clipartmax.com##+js(nano-stb) -imagenesderopaparaperros.com##+js(acs, String.fromCharCode, 'shift') -imagenesderopaparaperros.com##+js(aopr, app_vars.force_disable_adblock) -imagenesderopaparaperros.com##+js(set, blurred, false) -shortenbuddy.com##+js(nosiif, visibility, 1000) -shortenbuddy.com##+js(nano-sib, downloadTimer) -shortenbuddy.com##+js(aopr, app_vars.force_disable_adblock) -shortenbuddy.com##+js(nowoif) -shortenbuddy.com##+js(set, blurred, false) -shortenbuddy.com##.banner -shortenbuddy.com##.cus-dalert -shortenbuddy.com##.custom-adbox -shortenbuddy.com##.custom-shadow.custom-border-color.alert-danger.alert -shortenbuddy.com###noNeed,#noNeedTwo -shortenbuddy.com###nextBTNH:style(display: block !important;) -*$script,3p,denyallow=bootstrapcdn.com|cloudflare.net|fontawesome.com|google.com|gstatic.com|hwcdn.net|jquery.com|jsdelivr.net|recaptcha.net,domain=shortenbuddy.com -@@||shortenbuddy.com^$script,1p -||mylead.global^$3p,domain=shortenbuddy.com -freewebcart.com##+js(aost, Math, showModal) -wootly.ch##+js(disable-newtab-links) -javhdporn.net###player_3x2_container_inner -javhdporn.net##+js(set, clientSide.adbDetect, noopFunc) -techinferno.com##+js(nostif, eabpDialog) -gibit.xyz##+js(aopr, app_vars.force_disable_adblock) -gibit.xyz##+js(set, blurred, false) -gibit.xyz##+js(aopr, open) -*$frame,script,3p,denyallow=google.com|gstatic.com|hcaptcha.com|recaptcha.net,domain=gibit.xyz -xup.in##+js(nostif, clientHeight) -xup.in##div[style="width:728px; overflow:hidden; height:90px;"] -xup.in##div[style="width:300px;height:250px;position:relative;overflow:hidden;"] -xup.in##fieldset#option:nth-of-type(1) > [href^="https://www.xup.in/blog/"] -||sexei.net^$3p -adeth.cc##+js(nosiif, visibility, 1000) -! comicbook.com header-banner -comicbook.com##body > header:style(top:0 !important) -comicbook.com##body.pcm-public:style(margin-top: 84px !important;) -submitclimb.com##+js(nosiif, visibility, 1000) -nulleb.com##+js(rmnt, script, deblocker) -*$xhr,redirect-rule=nooptext,domain=nulleb.com -! voe.sx -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,3p,redirect=google-ima.js,domain=bradleyviewdoctor.com|brookethoughi.com|brucevotewithin.com|cindyeyefinal.com|edwardarriveoften.com|erikcoldperson.com|graceaddresscommunity.com|heatherdiscussionwhen.com|housecardsummerbutton.com|jamesstartstudent.com|jamiesamewalk.com|jasminetesttry.com|jasonresponsemeasure.com|jayservicestuff.com|johntryopen.com|kathleenmemberhistory.com|kennethofficialitem.com|loriwithinfamily.com|lukecomparetwo.com|markstyleall.com|michaelapplysome.com|morganoperationface.com|nonesnanking.com|paulkitchendark.com|phenomenalityuniform.com|prefulfilloverdoor.com|rebeccaneverbase.com|roberteachfinal.com|robertplacespace.com|ryanagoinvolve.com|sandrataxeight.com|seanshowcould.com|sethniceletter.com|shannonpersonalcost.com|sharonwhiledemocratic.com|vincentincludesuccessful.com,important -bradleyviewdoctor.com,brookethoughi.com,brucevotewithin.com,cindyeyefinal.com,edwardarriveoften.com,erikcoldperson.com,graceaddresscommunity.com,heatherdiscussionwhen.com,housecardsummerbutton.com,jamesstartstudent.com,jamiesamewalk.com,jasminetesttry.com,jasonresponsemeasure.com,jayservicestuff.com,johntryopen.com,kathleenmemberhistory.com,kennethofficialitem.com,loriwithinfamily.com,lukecomparetwo.com,markstyleall.com,michaelapplysome.com,morganoperationface.com,nonesnanking.com,paulkitchendark.com,phenomenalityuniform.com,prefulfilloverdoor.com,rebeccaneverbase.com,roberteachfinal.com,robertplacespace.com,ryanagoinvolve.com,sandrataxeight.com,seanshowcould.com,sethniceletter.com,shannonpersonalcost.com,sharonwhiledemocratic.com,vincentincludesuccessful.com##+js(nowoif) -apinchcaseation.com,bigclatterhomesguideservice.com,bradleyviewdoctor.com,brookethoughi.com,brucevotewithin.com,cindyeyefinal.com,denisegrowthwide.com,edwardarriveoften.com,erikcoldperson.com,graceaddresscommunity.com,heatherdiscussionwhen.com,housecardsummerbutton.com,jamesstartstudent.com,jamiesamewalk.com,jasminetesttry.com,jasonresponsemeasure.com,jayservicestuff.com,johntryopen.com,kennethofficialitem.com,loriwithinfamily.com,lukecomparetwo.com,markstyleall.com,michaelapplysome.com,morganoperationface.com,nectareousoverelate.com,paulkitchendark.com,paulkitchendark.com,rebeccaneverbase.com,roberteachfinal.com,robertplacespace.com,ryanagoinvolve.com,sandrataxeight.com,seanshowcould.com,sethniceletter.com,shannonpersonalcost.com,sharonwhiledemocratic.com,stevenimaginelittle.com,strawberriesporail.com,timberwoodanotia.com,tinycat-voe-fashion.com,troyyourlead.com,uptodatefinishconference.com,uptodatefinishconferenceroom.com,vincentincludesuccessful.com,voe.sx##+js(set, console.clear, undefined) -||badshores.com^$all -||best2020-games-web1.com^$all -||facesnotebook.com^$all -||highrevenuecpm.com^$all -ladsnbastands.com##+js(aopr, LieDetector) -@@||ladsnbastands.com^$ghide -ladsnbastands.com##ins.adsbygoogle -ladsnbastands.com##.widget_custom_html -ladsnbastands.com##.row-hover -*$script,3p,redirect-rule=noopjs,domain=staples.ca -! ohentai.org popup ads -ohentai.org##[class^="detail"][class*="iframecontainer"] -ohentai.org##[class^="listleaderboardcontainer"] -ohentai.org##.videobrick:has(> .videoadintro) -ohentai.org##+js(nowoif) -! youngpornvideos.com popup ads -youngpornvideos.com##+js(acs, url) -youngpornvideos.com##.ads -youngpornvideos.com##.ads-mobile -youngpornvideos.com##.ads-thumb-list:upward(.outer-item) -hentaicloud.com##+js(set, decodeURI, noopFunc) -hentaicloud.com##+js(aopr, TotemToolsObject) -hentaicloud.com##+js(aopr, AaDetector) -hentaicloud.com##.vertical-ads-content -hentaicloud.com##.ad:upward(.horizontal-ads-content) -hentaicloud.com##section.videos-content:has(.thumbnail > a[href^="https://www.nutaku.net/signup/landing/"]) -! javdoe.to/javtc.fun popup ads -player.javtc.*###preroll -javfree.la,javfree.sh,javtc.*,javthe.com##[style^="height: 250px;overflow"] -*$script,3p,denyallow=cdndoe.xyz|cloudflare.com|doecdn.me|googleapis.com,domain=javthe.com|javfree.* -*$script,3p,domain=javdoe.to|javtc.* -||pub.javwide.com^ -javbangers.com##+js(acs, document.addEventListener, initBCPopunder) -javbangers.com##+js(acs, readCookieDelit) -javbangers.com##+js(acs, onload, puHref) -javbangers.com##+js(set, flashvars.adv_pre_vast, '') -javbangers.com##+js(set, flashvars.adv_postpause_vast, '') -javbangers.com##div.opt -*$script,3p,denyallow=fastly.net|google.com|googleapis.com|gstatic.com|h-cdn.com,domain=javbangers.com -netfapx.com##+js(set, univresalP, noopFunc) -netfapx.com##[id^="ads-position"] -bikemania.org##[id^="blocker-modal-"] -apksvip.com##+js(aopr, app_vars.force_disable_adblock) -apksvip.com##+js(set, blurred, false) -linuxsecurity.com##+js(aeld, load, nextFunction) -linuxsecurity.com##.ad_prev_main -loader.to##+js(aopr, open) -lookcam.*##+js(set, canRunAds, true) -lookcam.*##div.prefix-adlabel -*$script,3p,denyallow=cloudflare.com|cloudflare.net|fastly.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|jsdelivr.net|recaptcha.net,domain=manga4life.com -*$frame,script,3p,denyallow=cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|jsdelivr.net|fastly.net|recaptcha.net,domain=mangasee123.com -realityblurb.com##+js(aopr, HTMLIFrameElement) -drphil.com##+js(set, canRunAds, true) -drphil.com##.adBanner:style(height:1px !important) -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect-rule=google-ima.js,domain=drphil.com -iade.com##+js(aopr, adBlockDetected) -masihbelajar.com##[id*="ScriptRoot"] -||unknowncheats.me/forum/images/*ban$image -unknowncheats.me##center:has-text(sponsored) -*$script,3p,denyallow=bootstrapcdn.com|disqus.com|jsdelivr.net|jwpcdn.com|fastly.net|fastlylb.net|jquery.com|hwcdn.net|recaptcha.net|cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com|facebook.net,domain=pendujatt.net -4allprograms.me##+js(nostif, ai_adb) -||bitfun.co^$3p -||bitsroll.com^$3p -||btcclicks.com^$3p -||moremoney.io^$3p -softairbay.com##+js(nosiif, visibility, 1000) -@@||softairbay.com^$script,1p -softairbay.com##.brave -softairbay.com##.xc449bad4854773ff -softairbay.com##[class^="bmadblock"] -swift4claim.com##+js(nosiif, visibility, 1000) -swift4claim.com##.overlay2 -swift4claim.com##.overlay -swift4claim.com##ins[class][style="display:inline-block;width:728px;height:90px;"] -swift4claim.com##ins[class][style="display:inline-block;width:300px;height:250px;"] -swift4claim.com##div[style="width:300px; height: 250px;"] -swift4claim.com##.overflow -best-shopme.com##+js(nosiif, visibility, 1000) -best-shopme.com##+js(aopr, noAdBlock) -newsbomb.gr##.banner-area -ibeconomist.com##+js(nostif, adsense) -getitfree.cn##+js(acs, document.getElementById, .style) -*$script,3p,domain=webmusic.* -/^https:\/\/(?:cdn77\.)?aj[0-9a-z]{2}\d{2}\.online\/[0-9a-z]{8}\.js$/$script,3p,to=online -/^https:\/\/(?:cdn77\.)?aj[0-9a-z]{2}\d{2}\.bid\/[0-9a-z]{8}\.js$/$script,3p,to=bid -/^https:\/\/(?:cdn77\.)?aj[0-9a-z]{2}\d{2}\.online\/[-_0-9A-Za-z]{70,}$/$frame,3p,to=online -/^https:\/\/(?:cdn77\.)?aj\d{4}\.bid\/[-_0-9A-Za-z]{80,}\?/$xhr,3p,to=bid -smallpocketlibrary.com##+js(aopr, adBlockDetected) -! iinbinlist.com/osqa.net/vanhawks.com anti-adb -*$xhr,redirect-rule=nooptext,domain=iinbinlist.com|osqa.net|vanhawks.com -@@||pixel.adsafeprotected.com^$xhr,domain=teleboy.ch -texture-packs.com##+js(no-xhr-if, adsbygoogle) -allywebsite.com##+js(aopr, mdpDeBlocker) -bookriot.com##+js(nostif, /Adblock|_ad_/) -bookriot.com###top_fold[style="display:flex !important;"]:style(min-height: 0px !important; transition: all 0s ease 0s !important;) -bookriot.com##.inside-content-promo-container -@@||databaseitalia.it^$ghide -||cdn.rawgit.com^*/wdbloogablock.js$script -@@||ufreegames.com^$ghide -||imasdk.googleapis.com/js/sdkloader/ima3.js$domain=ufreegames.com,redirect-rule=google-ima.js -ufreegames.com##.spo -ufreegames.com##+js(nano-sib) -pngio.com##+js(aopr, LieDetector) -*$script,3p,denyallow=cleanpng.com|kisspng.com|disqus.com|disquscdn.com|jsdelivr.net|jwpcdn.com|fastly.net|fastlylb.net|jquery.com|hwcdn.net|hcaptcha.com|recaptcha.net|cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com|facebook.net,domain=pngio.com -cpomagazine.com##+js(aopr, advads_passive_groups) -pholder.com##.AdSenseAboveFoldResponsive -pholder.com##section:has(.OUTBRAIN) -pholder.com##div[style$="margin-bottom:10px"]:has(.OUTBRAIN) -pholder.com##div[class]:has(div[class] > iframe[src^="https://chaturbate.com/in/"]) -pholder.com##section:has(div[href^="https://chaturbate.com/in/"]) -tw-hkt.blogspot.com##+js(nosiif, visibility, 1000) -*$script,redirect-rule=noopjs,domain=speedtesting.herokuapp.com|excelviewer.herokuapp.com|exifviewer.herokuapp.com|pdfrecover.herokuapp.com -hugo3c.tw##+js(nosiif, visibility, 1000) -4cash.me##+js(aopr, app_vars.force_disable_adblock) -4cash.me##+js(set, blurred, false) -4cash.me##.banner -*$frame,denyallow=google.com|recaptcha.net,domain=4cash.me -*$script,3p,denyallow=google.com|googleapis.com|gstatic.com|recaptcha.net,domain=4cash.me -saungfirmware.id##+js(aopr, short_url_app_vars.force_disable_adblock) -saungfirmware.id##+js(nano-sib) -cookpad.com###modals -cookpad.com##body:style(overflow:auto !important) -namaidani.com##+js(aopr, app_vars.force_disable_adblock) -namaidani.com##+js(aopr, open) -namaidani.com##+js(set, blurred, false) -namaidani.com##.blog-item -*$3p,frame,script,denyallow=google.com|gstatic.com|recaptcha.net|hcaptcha.com,domain=namaidani.com -recordonline.com##+js(set, _sp_.msg.displayMessage, noopFunc) -! doramasyt.com monoschinos.com ads -doramasyt.com,monoschinos.com##+js(aopr, GLX_GLOBAL_UUID_RESULT) -*$script,3p,denyallow=cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|gstatic.com|jwpcdn.com|jwplatform.com,domain=doramasyt.com|monoschinos.com -ktm2day.com##+js(aopr, mdpDeBlocker) -xxxdan.com##+js(aopr, document.head.appendChild) -xxxdan.com##*:matches-css-after(content:/Advertisement/i) -linuxhint.com,thekitchenmagpie.com##+js(acs, Math, adthrive) -bonobono.com##.custom-html-widget -makefreecallsonline.com##+js(rmnt, script, onerror) -businesstimes.com.sg##.overlayWhite -businesstimes.com.sg##html:style(overflow-y: auto !important;) -camclips.tv##+js(acs, onload) -camclips.tv##+js(aopr, console.clear) -camclips.tv##+js(aeld, , pop) -camclips.tv##+js(aeld, , Pop) -camclips.tv##+js(set, flashvars.adv_pause_html, '') -camclips.tv##+js(set, flashvars.popunder_url, undefined) -camclips.tv##[href^="https://go.strpjmp.com"] -camclips.tv##[src^="https://camclips.tv/player/html.php?aid"] -camclips.tv##div.cbchat -camclips.tv##.box.rltd -camclips.tv##.table -shortzzy.*##+js(aopr, app_vars.force_disable_adblock) -shortzzy.*##+js(nowoif) -shortzzy.*##+js(nostif, ai_adb) -shortzzy.*##+js(nosiif, visibility, 1000) -shortzzy.*##+js(set, blurred, false) -shortzzy.*##.banner -shortzzy.*##.box-main > center > a[href][target="_blank"] -shortzzy.*##.navbar-right.navbar-nav.nav -shortzzy.*##.btnlink -*$script,3p,denyallow=cloudflare.com|codepen.io|consensu.org|google.com|googleapis.com|gstatic.com|hcaptcha.com|recaptcha.net,domain=shortzzy.* -rojadirecta.*##+js(nowoif) -shazysport.pro,streamhd247.info##+js(json-prune, *, *.adserverDomain) -streamhd247.info##+js(rmnt, script, popundersPerIP) -forgepattern.net,sportsonline.si##+js(acs, JSON.parse, atob) -dosya.tc##+js(nowoif, !dosya, 1) -! jocooks .com nasty ads -jocooks.com##+js(aopw, HTMLElement.prototype.insertAdjacentHTML) -@@||cartoonbrew.com^$ghide -cartoonbrew.com##.ad-inner -cartoonbrew.com##.cb-ad -purposegames.com##+js(nostif, googletag) -*$script,redirect-rule=noopjs,domain=purposegames.com -purposegames.com##.adlabel -##[href^="//cadsecs.com/"] -##[href^="//clk.afftracks.online/"] -##[href^="https://wap4dollar.com/ad/nonadult/serve.php"] -##[href^="//ad.jetx.info/"] -*$script,3p,denyallow=fbcdn.net|facebook.net|fastly.net|fastlylb.net|jquery.com|hwcdn.net|hcaptcha.com|recaptcha.net|cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com|wp.com|chatango.com,domain=fullmatchtv.com -fullmatchtv.com##.belowpost -highporn.net##+js(acs, addEventListener, -0x) -highporn.net##+js(aopr, jsUnda) -*$script,3p,denyallow=chatango.com|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|jsdelivr.net|jwpcdn.com|recaptcha.net|wp.com,domain=highporn.net -highporn.net##.in-video-1 -highporn.net##.fel-playclose -highporn.net##.banner-a -||highporn.net/js/aapp.js -! megadede. mobi, movidy. net popups, ads -megadede.*##.fake_player, #tab-ad -megadede.*##.les-title:has-text(HD) -megadede.*##[href="#tab-ad"] -movidy.*,nuuuppp.online##+js(nowoif) -conservativeus.com##+js(aopw, gothamBatAdblock) -! asiansex.life ads -asiansex.life##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -asiansex.life###spot-holder -! manga-raw.club ads -manga-raw.club##+js(acs, document.createElement, '+d+') -! etcscrs .to popups -etcscrs.to##+js(aopr, LieDetector) -sinfoniarossini.com##+js(nowoif) -thepoorcoder.com##+js(aopr, adblockDetector) -@@||citytv.com^$ghide -@@||citytv.com/wp-json/rsm-adutil/v1/get_ad_targets_by_url/$xhr,1p -citytv.com##+js(json-prune, *, ad_unit_path) -!#if ext_devbuild -||citytv.com/wp-json/rsm-adutil/v1/get_ad_targets_by_url/$xhr,1p,important -citytv.com#@#+js(json-prune, *, ad_unit_path) -citytv.com##+js(no-xhr-if, wp-json/rsm-adutil, true) -!#endif -! brave issue google funding -globo.com,latimes.com##+js(nostif, f.parentNode.removeChild(f), 100) -@@||googletagmanager.com/gtm.js$script,domain=globo.com -globo.com##+js(trusted-set-cookie, _ga, GA1.1.000000000.1900000000, , , domain, globo.com) -*$script,3p,denyallow=fastly.net|fastlylb.net|jquery.com|hwcdn.net|hcaptcha.com|recaptcha.net|cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com,domain=13x4.com -camsclips.*##+js(nostif, innerText, 2000) -camsclips.*##.place -claimrbx.gg##+js(nostif, swal, 500) -perelki.net##+js(nostif, keepChecking, 1000) -gomaainfo.com##+js(acs, addEventListener, google_ad_client) -||exe.io^$3p -robot-forum.com##+js(acs, $, offsetHeight) -@@||homedecoratione.com^$ghide -homedecoratione.com##ins.adsbygoogle -! liveonscore.tv popups -liveonscore.tv##+js(nowoif) -androidtunado.com.br##+js(nosiif, visibility, 1000) -wristreview.com##+js(aopw, ai_front) -standardmedia.co.ke##+js(aopr, canRunAds) -*$script,redirect-rule=noopjs,domain=downloadrepack.com -downloadrepack.com###footer-widgets > .container-inner > .group.hu-pad -vpn-anbieter-vergleich-test.de##+js(nowoif) -||vpn-anbieter-vergleich-test.de/link/$frame,1p -vpn-anbieter-vergleich-test.de##+js(nostif, openPopup) -midiextreme.com##+js(nosiif, visibility, 1000) -@@||thedelimagazine.com^$ghide -tecnobillo.com##+js(nostif, check) -tecnobillo.com##.tecnobillo-ad-wrapper-wrapper -! xtits.com/xxx pre-roll ads -xtits.*##+js(set, flashvars.adv_start_html, '') -xtits.*##+js(set, flashvars.adv_pause_html, '') -xtits.*##.adv-title -xtits.*##.table -xtits.*##.spot-holder -*$frame,script,3p,denyallow=ahacdn.me|bimbolive.com|cloudflare.net,domain=xtits.* -||xtits.*^$csp=script-src * 'unsafe-inline' -||xtits.*/static/js/custom.js$script,1p -kpopstan.com##+js(nano-sib) -acapellas.eu##+js(acs, addEventListener, google_ad_client) -! descarga.xyz popup ads -descarga.xyz##+js(aopr, AaDetector) -descarga.xyz##+js(aopw, atOptions) -descarga.xyz##+js(aopw, smrtSB) -descarga.xyz##.code-block-1.code-block -*$script,3p,domain=descarga.xyz,denyallow=arc.io -file-converter-online.com##.lead-responsive -file-converter-online.com##.clearfix.entry > small -file-converter-online.com##div[style^="margin-top:10px;min-height:250px"] -urbanmilwaukee.com##+js(set, canRunAds, true) -urbanmilwaukee.com###fancybox-container-1 -urbanmilwaukee.com##body:style(overflow:auto !important) -tellygossips.net##+js(nosiif, visibility, 1000) -ilclubdellericette.it##+js(nostif, mdpDeBlocker) -emuenzen.de##+js(nostif, prompt, 1000) -emuenzen.de##+js(acs, eval, replace) -emuenzen.de##a[href*="sjv.io"] -epidemia-koronawirus.pl###sgpb-popup-dialog-main-div-wrapper -epidemia-koronawirus.pl##.sgpb-popup-overlay -*$script,redirect-rule=noopjs,domain=seotechman.com -nurgsm.com##+js(nostif, ai_adb) -newsiqra.com##+js(nosiif, visibility, 1000) -newsiqra.com##+js(acs, XMLHttpRequest, null) -teknomuda.com##+js(aopr, app_vars.force_disable_adblock) -teknomuda.com##+js(set, blurred, false) -teknomuda.com##+js(acs, addEventListener, google_ad_client) -teknomuda.com##p > a[href][target="_blank"] -teknomuda.com###wpsafe-snp:style(display: block !important;) -teknomuda.com###wpsafe-generate:style(display: block !important;) -teknomuda.com##*:has(#wpsafe-wait1):not(:has(#wpsafe-snp)) -teknomuda.com##*:has(+ div[align="center"] button.btn) -! nsfw popups gayvidsclub .com -gayvidsclub.com##+js(nowoif) -||facilitategovernor.com^$all -*$script,redirect-rule=noopjs,domain=markiza.sk -infomaniakos.*##+js(set, btoa, null) -shorttey.*##+js(aopr, app_vars.force_disable_adblock) -shorttey.*##+js(aopr, open) -shorttey.*##+js(aopw, adcashMacros) -shorttey.*##+js(aost, Math.random, t.pt) -shorttey.*##+js(json-prune, clickAnywhere urls) -shorttey.*##+js(set, blurred, false) -shorttey.*##+js(set, canRunAds, true) -shorttey.*##.short -shorttey.*###link-view > center > [href] -*$script,3p,denyallow=cloudflare.com|cloudflare.net|google.com|gstatic.com|jsdelivr.net|hcaptcha.com|recaptcha.net,domain=shorttey.* -||shorttey.*/sw.js$script,1p -*$script,3p,denyallow=cdn77.org|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|instagram.com|ishort.in|jquery.com|jsdelivr.net|jwpsrv.com|plyr.io|twimg.com|twitter.com|recaptcha.net|wp.com|x.com,domain=hdmovieplus.* -||ishort.in^$script,3p -*$script,redirect-rule=noopjs,domain=linuxgizmos.com -grab.tc##+js(aopr, NoAdBlock) -grab.tc##[href^="https://youhodler.g2afse.com/"] -grab.tc##.brave -dota2freaks.com##+js(nosiif, visibility, 1000) -kurofansubs.xyz##+js(acs, eval, ignielAdBlock) -how2pc.com##+js(nosiif, visibility, 1000) -livingincebuforums.com##+js(nostif, .offsetHeight) -livingincebuforums.com##[id^="nbAdWidget"] -livingincebuforums.com##[data-blockid*="AdsWidget"] -tio.ch##+js(aeld, error) -tio.ch##+js(ra, href, a[href*="/ads.php"][target="_blank"]) -@@||tio.ch^$ghide -tio.ch##.ad -! shrinkhere.xyz anti adb popup -shrinkhere.xyz##+js(acs, String.fromCharCode, atob) -shrinkhere.xyz##+js(aopr, app_vars.force_disable_adblock) -*$frame,script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=shrinkhere.xyz -||shrinkhere.xyz/sw.js$script,1p -javfull.net##+js(nosiif, _0x) -javfull.net###wrapfabtest:style(height:1px !important;width:1px !important) -! nsfw xxgasm .com popups ads -xxgasm.com##+js(aopr, decodeURI) -*$script,3p,denyallow=cdn77.org|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|fluidplayer.com|google.com|googleapis.com|gstatic.com|hwcdn.net|hcaptcha.com|instagram.com|jquery.com|jsdelivr.net|jwpcdn.com|jwpsrv.com|plyr.io|twimg.com|twitter.com|recaptcha.net|wankgod.com|wp.com|x.com,domain=xxgasm.com -! nsfw kfapfakes .com popups ads -kfapfakes.com##+js(aopr, decodeURI) -kfapfakes.com##+js(acs, document.createElement, /l\.parentNode\.insertBefore\(s/) -! nsfw xsober .com ads popups -xsober.com##+js(aopr, decodeURI) -*$script,3p,denyallow=bootstrapcdn.com|cdn77.org|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|fluidplayer.com|google.com|googleapis.com|gstatic.com|hwcdn.net|hcaptcha.com|instagram.com|jquery.com|jsdelivr.net|jwpcdn.com|jwpsrv.com|plyr.io|twimg.com|twitter.com|recaptcha.net|wp.com|x.com,domain=xsober.com -! nsfw sexsaoy .com ads popups -sexsaoy.com##+js(aopr, decodeURI) -*$script,3p,denyallow=cdn77.org|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|fluidplayer.com|google.com|googleapis.com|gstatic.com|hwcdn.net|hcaptcha.com|instagram.com|jquery.com|jsdelivr.net|jwpcdn.com|jwpsrv.com|plyr.io|twimg.com|twitter.com|recaptcha.net|wp.com|x.com,domain=sexsaoy.com -##[href^="https://go.rdrjmp.com/"] -! img4fap. club popups ads -img4fap.*##+js(aopr, decodeURI) -*$script,3p,denyallow=cdn77.org|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|fluidplayer.com|google.com|googleapis.com|gstatic.com|hwcdn.net|hcaptcha.com|instagram.com|jquery.com|jsdelivr.net|jwpcdn.com|jwpsrv.com|plyr.io|twimg.com|twitter.com|recaptcha.net|wp.com|x.com,domain=img4fap.* -/tghr.js$script -abandonmail.com##+js(nostif, offsetHeight) -abandonmail.com##+js(aopr, indexedDB.open) -! kissanime. nz scammy 3p scripts -kissanime.*###upgrade_pop -embed.streamx.me##+js(noeval-if, debugger) -||kissanime.*/api/pop*$xhr,1p -||kissasian.*/api/pop.php$xhr,1p -||ad.kissasian.*^$script,1p -||kisscartoon.*/api/pop.php$xhr,1p -||ad.kisscartoon.*^$script,1p -@@||illink.net^$ghide -illink.net##+js(aopr, app_vars.force_disable_adblock) -illink.net##+js(set, blurred, false) -illink.net##.banner -*$3p,denyallow=cloudflare.com|consensu.org|google.com|googleapis.com|gstatic.com|ibb.co|hcaptcha.com|recaptcha.net,domain=illink.net -##[href^="https://www.safestcontentgate.com/"] -filmyzilla.*##[href^="https://ak.hetadinh.com/"] -weviral.org##+js(nosiif, visibility, 1000) -paperzonevn.com##+js(set, xv_ad_block, 0) -paperzonevn.com##+js(aeld, visibilitychange) -paperzonevn.com##+js(nostif, ()=>{) -! popups tits-guru .com -tits-guru.com##+js(nowoif) -lomcn.org##+js(acs, $, samAdBlockAction) -popno-tour.net##+js(nostif, innerText, 2000) -@@||asianbookie.com^$script,1p -forums.asianbookie.com##.topics > table > tbody > tr > td > table > tbody > tr > .topicrowdate -||asianbookie.com/displaytable.cfm?tablename=cslodds$frame -asianbookie.com##a[href^="/cgi-bin/to.cgi"] -! elitetorrent.com popup -elitetorrent.*##+js(aopw, adcashMacros) -*$script,3p,denyallow=cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|fastlylb.net|google.com|googleapis.com|gstatic.com|fontawesome.com|jsdelivr.net,domain=elitetorrent.* -siz.tv##+js(set, koddostu_com_adblock_yok, null) -molll.mobi##+js(nostif, innerText, 2000) -motorantik.store##+js(acs, addEventListener, google_ad_client) -motorantik.store###wpsafe-snp:style(display: block !important;) -motorantik.store###wpsafe-generate:style(display: block !important;) -motorantik.store##*:has(#wpsafe-wait1):not(:has(#wpsafe-snp)) -! e-wok.tv anti-adb -@@||e-wok.tv/js/new/advertisment.js$script,1p -! several sites using the same popunder script -ashemaletv.com,beurettekeh.com,celibook.com,gourmandix.com,sexetag.com##+js(aopr, decodeURI) -ashemaletv.com###playerOverlay -||str.sexetag.com/voir.php$frame,1p -alltechnerd.com##+js(nosiif, visibility, 1000) -alltechnerd.com##+js(nostif, nitroAds) -alltechnerd.com##.ai_widget -alltechnerd.com##.code-block:has-text(ADV) -iobit.com##+js(aopr, LieDetector) -! hentaisea. com popunder -hentaisea.com##+js(aost, Math.random, stackDepth:4) -malaysianwireless.com##+js(nostif, class.scroll, 1000) -||malaysianwireless.com/wp-content/banners/*$image,1p -! iammagnus.com/dailyvideoreports.net anti-adb -dailyvideoreports.net##+js(aeld, load, /showModal|isBlanketFound/) -iammagnus.com,dailyvideoreports.net##+js(set, adsbygoogle.loaded, true) -*$script,redirect-rule=noopjs,domain=iammagnus.com|dailyvideoreports.net -*$script,redirect-rule=noopjs,domain=youneed.win -! estrenosgo.site yadixv.com popup -estrenosflux.*##+js(acs, JSON.parse, atob) -estrenosflix.*,estrenosflux.*,estrenosgo.*##+js(aopw, adcashMacros) -||adservice.google.com/adsid/integrator.js$script,redirect=noopjs,domain=ultimateclassicrock.com -comprovendolibri.it##+js(nostif, google_jobrunner) -universegunz.net##+js(nostif, adb) -citynews.ca##body:style(padding-top:0px !important) -miuiku.com##+js(acs, eval, ignielAdBlock) -miuiku.com##+js(nowoif) -miuiku.com##+js(set, blurred, false) -miuiku.com##[style="text-align: center;"] > a[href] -miuiku.com##.content:has(#invisibleCaptchaShortlink) > p -miuiku.com##a[href^="https://poptival.com/"] -forum.lolesporte.com##+js(aopr, onload) -shoppinglys.blogspot.com##+js(nosiif, visibility, 1000) -shoppinglys.blogspot.com##iframe[src^="data:"] -erinsakura.com##+js(nostif, disableDeveloperTools) -erinsakura.com##.herald-fa-grid -@@||fzmovies.*^$ghide -@@||fzm.*^$ghide -fzm.*,fzmovies.*##+js(ra, onclick, [onclick*="window.open"]) -fzm.*,fzmovies.*##+js(nosiif, visibility, 1000) -*$image,redirect-rule=1x1.gif,domain=freesslvpn.us|robotvpn.com -fritidsmarkedet.dk,maskinbladet.dk##+js(nostif, Check) -*$image,redirect-rule=1x1.gif,domain=maskinbladet.dk|fritidsmarkedet.dk -fritidsmarkedet.dk,maskinbladet.dk##.skybanner, .megaboard-inner -bdlink.pw##+js(nano-sib) -! yourtechnology.online/Download/MIqVV anti-adb -yourtechnology.online##+js(aopr, app_vars.force_disable_adblock) -yourtechnology.online##+js(set, blurred, false) -yourtechnology.online##.banner -savelink.site##+js(aopr, app_vars.force_disable_adblock) -savelink.site##+js(nowoif) -savelink.site##+js(set, blurred, false) -*$frame,script,3p,denyallow=google.com|googleapis.com|gstatic.com|hcaptcha.com|recaptcha.net,domain=savelink.site -komiktap.in##+js(nosiif, visibility, 1000) -torresette.news##+js(acs, document.addEventListener, adsBlocked) -||torresette.news/img/banner/$image,1p -torresette.news##.content-banner-right -torresette.news###skinlink -hubstream.in##+js(nostif, mdpDeBlocker) -downloadhub.*,hubstream.*##+js(nowoif) -ultimasnoticias.com.ve##pp -adultasianporn.com##+js(aeld, getexoloader) -adultasianporn.com##+js(cookie-remover, /^/) -adultasianporn.com##[class^="abra"] -adultasianporn.com##[href^="http://adultasianporn.com/out.php"] -adultasianporn.com##.banner -adultasianporn.com##[src*=".php"] -||adultasianporn.com^$frame -! gamesrepacks.com anti-adb -gamesrepacks.com##+js(noeval-if, show) -@@||firenzetoday.it^$ghide -! SSAI Video ads on ABC Owned TV station sites https://github.com/uBlockOrigin/uBlock-issues/issues/760#issuecomment-715702997 -||content.uplynk.com/api/*&ad=$xhr,removeparam=/^ad/,domain=abc7ny.com|abc7.com|abc7chicago.com|6abc.com|abc7news.com|abc13.com|abc11.com|abc30.com -! SSAI Video ads on Discovery TV sites https://github.com/uBlockOrigin/uBlock-issues/issues/760#issuecomment-715926907 -||api.discovery.com/v1/streaming/video/*&adNetworkId=$xhr,removeparam=/^ad/,domain=ahctv.com|animalplanet.com|cookingchanneltv.com|destinationamerica.com|discovery.com|discoverylife.com|diynetwork.com|foodnetwork.com|hgtv.com|investigationdiscovery.com|motortrend.com|sciencechannel.com|tlc.com|travelchannel.com -adobezii.com##+js(nosiif, visibility, 1000) -walkthrough-indo.blogspot.com##+js(acs, addEventListener, google_ad_client) -@@||letmeread.net^$ghide -letmeread.net##ins.adsbygoogle -! polska-ie.com anti-adb -polska-ie.com##+js(aeld, load, isBlanketFound) -*$script,redirect-rule=noopjs,domain=polska-ie.com -videohelp.com##div[id] :has(> a[href]:has-text(/^Try (?:D.?V.?D.?F.?a.?b|StreamFab)/) + a[href]) -! hentaitube ads -hentais.tube,hentaitube.online##+js(aopr, checkCookieClick) -hentais.tube,hentaitube.online##[href^="https://tm-offers.gamingadult.com/"] -! hentaidude.com ads -hentaidude.com##+js(aopr, mnpw) -hentaidude.com##+js(nowoif) -hentaidude.com###homebn -hentaidude.com###idtop -hentaidude.com###videoOverAd -hentaidude.com###vid > .main-vip -hentaidude.com#@#.adsArea -||hentaidude.com/wp-admin/admin-ajax.php?action=geocheck$xhr,redirect=noop.txt -!#if env_mobile -hentaidude.com###ft-trig.ft-home, .vip-c -hentaidude.com##.mobile-il:style(visibility: hidden !important; height: 1px !important) -!#endif -fairyanime.com##+js(nano-sib) -fairyanime.com##.overlay -fairyanime.com###kosana.bounce.animated.kosana.concise -*$media,redirect=noopmp3-0.1s,domain=fairyanime.com -pg-wuming.com##+js(acs, $, .test) -proxybit.*##+js(acs, adcashMacros) -proxybit.*##+js(nowoif) -proxybit.*##+js(aopr, mm) -proxybit.*##[id*="banner"] -hdss.*##.homi -hdss.*##.widget_media_image -hdss.plus###pub -hdss.plus##center -opvid.net##+js(nowoif) -@@||top.gg/js/$script,1p -top.gg###vote-root:style(display:block !important) -top.gg###video-root -top.gg##+js(nano-stb, readyToVote, 12000) -top.gg##article[data-testid="promoted-product"] -top.gg##.chakra-popover__content .chakra-link[href*="/click?targetUrl="] -top.gg###rewarded-video -top.gg###parent_nn_player -top.gg##.chakra-stack[data-testid="p-p"] -top.gg##div[class^="css-"]:not(.chakra-stack):has(> #parent_nn_player) -top.gg##body:style(overflow: auto !important;) -top.gg##div[class^="chakra-modal__overlay"][style="opacity: 1;"]:style(display: none !important;) -top.gg##div[class^="chakra-modal__overlay"][style="opacity: 1;"] ~ div[data-focus-lock-disabled]:style(display: none !important;) -@@||arrowos.net/js/*$script,1p -arrowos.net##body:style(visibility:visible !important) -@@||arrowos.net^$ghide -arrowos.net##.card-content:has(> .adsbygoogle) -arrowos.net##ins.adsbygoogle -arrowos.net###babasbmsgx -3hiidude.*##+js(aopr, String.fromCharCode) -*$script,redirect-rule=noopjs,domain=vidmoly.me|vidmoly.net|vidmoly.to -||vidmoly.to/static/vastAD.js$script -||vastz.b-cdn.net/*.mp4$media,domain=vidmoly.to,redirect=noopmp3-0.1s -vidmoly.*###adsblock -lite-link.*##+js(aopr, app_vars.force_disable_adblock) -lite-link.*##+js(ra, target|href, a[href^="//"]) -lite-link.*##+js(set, blurred, false) -lite-link.*##.banner -*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=lite-link.* -openloadmov.*##+js(nowoif) -! wawacity. work | moe | tokyo -wawacity.*##+js(aost, String.prototype.charCodeAt, _0x) -wawacity.*##+js(nowoif) -wawacity.*##+js(rmnt, script, adserverDomain) -##[href^="https://dl-protect.net/get-premium-url"] -aegeanews.gr,batterypoweronline.com,brezovycukr.cz,centrocommercialevulcano.com,cieonline.co.uk,commsbusiness.co.uk,dailygrindonline.net,delo.bg,dynastyseries.com,fabmx1.com,fat-bike.com,fmj.co.uk,localemagazine.com,loveourweddingmag.com,metaforespress.gr,myvalley.it,niestatystyczny.pl,primapaginamarsala.it,ringelnatz.net,schoolsweek.co.uk,sikkenscolore.it,sportbet.gr,stadtstudenten.de,stagemilk.com,tautasdziesmas.lv,thetoneking.com,toplickevesti.com,zeroradio.co.uk##+js(aopr, wpsite_clickable_data) -*/wp-content/plugins/wpsite-background-takeover*/js/wpsite_clickable.js$script -8tm.net##+js(nosiif, visibility, 1000) -8tm.net##+js(acs, addEventListener, google_ad_client) -@@||8tm.net/stylesheets/$css,1p -certbyte.com##+js(nostif, ai_adb) -||ads.exoclick.com/ads.js$script,redirect=noop.js -/teo4.$script -ondebaixo.com,ondebaixa.com,ondeeubaixo.org,torrentool.org##+js(ra, onclick, a[href^="magnet:"][onclick]) -myhackingworld.com##+js(nostif, mdp) -vipr.im##+js(acs, document.addEventListener, initBCPopunder) -vipr.im###rang2 -afasiaarchzine.com##+js(nosiif, visibility, 1000) -afasiaarchzine.com##.afasia_sidebar_ad_group -hidefninja.com##+js(aopr, adBlockDetected) -! egao.in popunder -egao.in##+js(ra, target, #SafelinkGenerate) -exbulletin.com##+js(aost, String.prototype.charCodeAt, ai_) -hindisub.com##+js(nofab) -15min.lt##+js(nostif, insertBefore) -@@||multicoinads.com^$ghide -multicoinads.com##.ads -br0wsers.com##+js(acs, document.getElementsByClassName, offsetParent) -br0wsers.com###show_ag:style(display:block !important) -downloadcursos.net##+js(aopr, mdpDeBlocker) -unityassets4free.com##+js(set, adsbygoogle.loaded, true) -*$script,redirect-rule=noopjs,domain=unityassets4free.com -unityassets4free.com##.AdWidget_HTMLWidget -unityassets4free.com##img[src^="https://unityassets4free.com/wp-content/uploads/"][src$="/best-url-shortner-for-unityassets4free.jpg"] -! vlive.tv pre-roll ads -vlive.tv##+js(json-prune, meta.advertise) -*$xhr,redirect-rule=nooptext,domain=lewdninja.com|new.lewd.ninja -lewdninja.com,new.lewd.ninja##a.navbar-item.is-hidden-desktop-only -@@||a.trk-imps.com/oauth2$script,domain=lewdninja.com|new.lewd.ninja -@@||a.trk-imps.com/loader?$frame,domain=lewdninja.com|new.lewd.ninja -@@||trk-imps.com^$frame,csp,domain=new.lewd.ninja -||advertserve.com/servlet/view/banner/$frame,redirect-rule=noop.html,domain=trk-imps.com -@@*$document,csp=worker-src 'none',domain=new.lewd.ninja -*$popunder,domain=new.lewd.ninja -lewd.ninja##+js(aeld, click, shouldShow) -@@||recaptcha.net^$frame,csp=worker-src 'none',domain=lewd.ninja -hentaienglish.com,hentaiporno.xxx##+js(set, vidorev_jav_plugin_video_ads_object.vid_ads_m_video_ads, '') -progameguides.com##[id^="sideAd-"] -progameguides.com##[id^="content_dynamicAd-"] -discoveryplus.*##.bmpui-seekbar-markers -discoveryplus.*##.bmpui-ui-ads-status -discoveryplus.*##+js(json-prune, data.attributes.config.freewheel data.attributes.config.featureFlags.dPlayer) -@@||identity.mparticle.com/v1/login$xhr,domain=discoveryplus.* -*$media,redirect=noopmp3-0.1s,domain=discoveryplus.* -||doubleclick.net^$xhr,domain=discoveryplus.*,important -!#if !env_firefox -||h264.io/a/x-goog-token=Expires$xhr,redirect=nooptext,domain=discoveryplus.*,important -!#endif -discoveryplus.*,go.discovery.com,investigationdiscovery.com##+js(json-prune, data.attributes.ssaiInfo.forecastTimeline data.attributes.ssaiInfo.vendorAttributes.nonLinearAds data.attributes.ssaiInfo.vendorAttributes.videoView data.attributes.ssaiInfo.vendorAttributes.breaks.[].ads.[].adMetadata data.attributes.ssaiInfo.vendorAttributes.breaks.[].ads.[].adParameters data.attributes.ssaiInfo.vendorAttributes.breaks.[].timeOffset) -discoveryplus.*,go.discovery.com,investigationdiscovery.com,go.tlc.com,sciencechannel.com##+js(xml-prune, xpath(//*[name()="MPD"][.//*[name()="BaseURL" and contains(text()\,'dash_clear_fmp4') and contains(text()\,'/a/')]]/@mediaPresentationDuration | //*[name()="Period"][./*[name()="BaseURL" and contains(text()\,'dash_clear_fmp4') and contains(text()\,'/a/')]]), , .mpd) -venge.io##+js(nofab) -venge.io##+js(set, adsProvider.init, noopFunc) -venge.io##+js(set, SDKLoaded, true) -@@||akwams.*^$ghide -akwams.*##ins.adsbygoogle -akwams.*##.ads -orangeptc.com##+js(aopr, adBlockDetected) -@@||orangeptc.com^$ghide -btcbux.io##+js(set, blockAdBlock._creatBait, null) -starbux.io##+js(aopr, NoAdBlock) -starbux.io###wcfloatDiv4 -starbux.io##ins[style="display:inline-block;width:728px;height:90px;"] -! tvmd .info ads -##.fints-block__row -@@||cdn.trafficdok.com/libs/e.js$script,domain=tvmd.info -tvmd.info###crosscol-overflow -mytoolz.net##+js(aopr, onload) -! pngtosvg.com anti-adb -||googlesyndication.com^$script,redirect-rule=googlesyndication_adsbygoogle.js,domain=pngtosvg.com -pics4you.net##+js(aopr, loadTool) -*$script,3p,domain=pics4you.net -||imgbaron.com/banner2.gif -||imgbaron.com/pornindian.gif -moozpussy.com,zoompussy.com##+js(aopr, loadTool) -moozpussy.com,zoompussy.com##[href^="/go/desire"] -videa.hu##.top-video-container-banner -systemnews24.com##+js(aeld, , /ads|Modal/) -sitarchive.com##+js(nostif, css_class.show) -||googlesyndication.com^$script,redirect-rule=googlesyndication_adsbygoogle.js,domain=sitarchive.com -sitarchive.com##[id^="aswift_"] -share1223.com##+js(aopr, adBlockDetected) -*$script,redirect-rule=noopjs,domain=telek.top -baddiehub.com##+js(nostif, css_class.scroll) -! chochox.com popup -chochox.com##+js(acs, String.fromCharCode, atob) -! miohentai.com popup ads -miohentai.com##+js(aopr, mnpwclone) -miohentai.com###idtop -miohentai.com##.in.paused-ad-container -*$script,3p,denyallow=cloudflare.com|google.com|gstatic.com,domain=miohentai.com -! familyporn.tv popup -familyporn.tv##+js(set, console.clear, noopFunc) -familyporn.tv##+js(aopr, AaDetector) -familyporn.tv##.media_spot -familyporn.tv##.textlink -familyporn.tv###player_adv -familyporn.tv##.adv -familyporn.tv##.col-last:has(> :is(.player-adverts, .place)) -familyporn.tv##.sponsor -! tabooporn.tv popup -tabooporn.tv##.table -tabooporn.tv##.textlink -! kaplog.com popup -kaplog.com##+js(nowoif) -*$script,3p,denyallow=google.com|gstatic.com,domain=iyotvideos.com|kaplog.com -! sluttyrat.com popup -sluttyrat.com##+js(aopr, SluttyPops) -sluttyrat.com##.ad-container -sluttyrat.com##.topRightSquare -sluttyrat.com###under_player_button -! morritastube.xxx popop -morritastube.xxx##+js(aopr, scriptwz_url) -morritastube.xxx##+js(aopr, sites_urls_pops) -! emulatorgames.net boost countdown timer -emulatorgames.net##+js(nano-sib, , , 0.3) -emulatorgames.net##+js(nano-stb, , 7000, 0) -emulatorgames.net##[class*="-label"] -! nightlifeporn.com popup -nightlifeporn.com##.wps-player__happy-inside--pause.wps-player__happy-inside -! incestvidz.com ads -incestvidz.com##+js(aeld, DOMContentLoaded, init) -! apkshrt.com popup ads -apkshrt.com##+js(aopr, app_vars.force_disable_adblock) -apkshrt.com##+js(set, blurred, false) -*$script,3p,denyallow=consensu.org|google.com|gstatic.com|recaptcha.net,domain=apkshrt.com -getpczone.com##+js(nosiif, visibility, 1000) -getpczone.com###breadcrumb-ads-links -! kissmanga. nl popups -kissmanga.*###myModal -secretsdeepweb.blogspot.com##+js(nosiif, visibility, 1000) -secretsdeepweb.blogspot.com##+js(aeld, load, onload) -sssam.com##+js(set, ads, true) -*$script,redirect-rule=noopjs,domain=codimth.com -! fiyaplatform.com anti-adb -*$script,redirect-rule=noopjs,domain=fiyaplatform.com -! downloadtwittervideo.com popup -downloadtwittervideo.com##+js(nowoif) -kiwiexploits.com##+js(nowoif) -kiwiexploits.com##+js(nosiif, visibility, 1000) -kiwiexploits.com##+js(no-fetch-if, googlesyndication) -*$xhr,3p,domain=kiwiexploits.com -*$script,3p,domain=kiwiexploits.com -||eadvertisingd.biz^ -/nab.js$script,domain=kiwiexploits.com|shortearn.net -*$script,redirect-rule=noopjs,domain=taufiqhdyt.com -taufiqhdyt.com###big-ads -@@||gdrivelinks.me^$ghide -beverfood.com##+js(nosiif, adblock) -beverfood.com###backy -beverfood.com##.switchabig -||beverfood.com/immagini/*1920$image -freemiumaccounts.net##+js(nosiif, visibility, 1000) -freemiumaccounts.net##+js(aopw, adcashMacros) -! camthots.tv pre-roll ads -camfox.com,camthots.tv##+js(set, flashvars.adv_pre_vast, '') -camthots.tv##+js(set, hasPoped, true) -camfox.com,camthots.tv##.table -javtrailers.com###cta -javtrailers.com###popunderLink -! Foxella Blockadblock -@@||foxella.com^$ghide -foxella.com##ins.adsbygoogle -crockotube.com##div[class*="vision"] -crockotube.com##div[class^="vis-"] -! wetpussy.sexy popunder, ads -wetpussy.sexy##.mansonry-item -||wetpussy.sexy/js/index-nb.js -lootlinks.*##+js(set, canRunAds, true) -lootlinks.*##+js(nano-sib) -||htagpa.tech^ -||aghtag.tech^ -/^https:\/\/[a-z0-9]{4,10}\.tech\/c\/(?:[-a-z0-9]+\.){1,3}js$/$script,3p,strict3p,to=tech -! jaysndees.com anti-adb -jaysndees.com##+js(nosiif, visibility, 1000) -jaysndees.com##+js(nofab) -jaysndees.com##div[class][style^="width: 728px; height: 90px;"] -jaysndees.com###topshow -jaysndees.com##center:nth-of-type(3) -jaysndees.com###cust_btn2_random -jaysndees.com###block2 -jaysndees.com###block1 -mr9soft.com##+js(nostif, /null|Error/, 10000) -||googlesyndication.com^$script,redirect-rule=googlesyndication_adsbygoogle.js,domain=mr9soft.com -@@||famfonts.com^$ghide -famfonts.com##ins.adsbygoogle -nifteam.info##+js(acs, document.getElementById, undefined) -nifteam.info###wtf:style(visibility:visible!important;display:block!important;) -! babeporn .net popunder => .org -babeporn.*##+js(aopr, decodeURI) -paidtomoney.com##+js(nosiif, visibility, 1000) -paidtomoney.com##+js(aopr, app_vars.force_disable_adblock) -paidtomoney.com##+js(aopr, open) -paidtomoney.com##.banner -doctor-groups.com##+js(nano-sib, sec--) -doctor-groups.com##+js(nosiif, visibility, 1000) -doctor-groups.com##+js(aopr, app_vars.force_disable_adblock) -doctor-groups.com##+js(aopr, open) -doctor-groups.com##.banner -doctor-groups.com###float -doctor-groups.com##.box-main > center > div -doctor-groups.com##div[class][style="width:728px;height:90px;display: inline-block;margin: 0 auto"] -doctor-groups.com##div[class][style="width:300px;height:250px;display: inline-block;margin: 0 auto"] -doctor-groups.com##div[class][style="width:468px;height:60px;display: inline-block;margin: 0 auto"] -! livemint anti-adblock -! livemint.com##+js(aeld, DOMContentLoaded, nrWrapper) -livemint.com###adfreeDeskSpace -livemint.com###dekBudgetAd -||adconfigproxy.azurewebsites.net/Adurl$xhr -srts.me##+js(aopr, app_vars.force_disable_adblock) -srts.me##+js(set, blurred, false) -livenewsof.com##+js(nostif, css_class.show) -! rapbhe.com popups -rapbhe.com##+js(acs, String.fromCharCode, atob) -niusdiario.es##+js(aeld, load, Adblock) -multics.eu##+js(acs, $, .test) -forums.lostmediawiki.com###ad1 -forums.lostmediawiki.com###remove_ads_link -forums.lostmediawiki.com##[id^="ad-"] -thejournal.ie##+js(nowoif) -thejournal.ie##html:style(background-image:none !important) -techoreels.com##+js(noeval-if, debugger) -@@||techoreels.com^$ghide -techoreels.com##.ads-placment -nandetribune.com##+js(acs, document.addEventListener, google_ad_client) -! iulive .blogspot.com popups -iulive.blogspot.com##+js(nowebrtc) -! livehere. one popups -livehere.*##+js(nowebrtc) -mailocal2.xyz##+js(nosiif, visibility, 1000) -toonvideos.net.in##+js(acs, document.addEventListener, nextFunction) -! wonporn .com popunder -wonporn.com##td[style][width="360"] -adcorto.*##+js(aopr, app_vars.force_disable_adblock) -adcorto.*##+js(aopw, atOptions) -adcorto.*##+js(set, blurred, false) -adcorto.*##.banner -adcorto.*##.box-main > table -*$3p,script,denyallow=facebook.net|fbcdn.net|googleapis.com|google.com|gstatic.com|recaptcha.net|hcaptcha.com,domain=adcorto.* -camflow.tv,camhoes.tv##+js(acs, onload, onclick) -camflow.tv,camhoes.tv##+js(set, flashvars.adv_pause_html, '') -camflow.tv,camhoes.tv##+js(set, flashvars.adv_start_html, '') -camflow.tv,camhoes.tv##+js(set, flashvars.logo_text, '') -camflow.tv,camhoes.tv##+js(set, flashvars.mlogo, '') -camflow.tv,camhoes.tv##+js(set, flashvars.popunder_url, '') -camhoes.tv##+js(set, hasPoped, true) -camflow.tv,camhoes.tv##.box.rltd -camflow.tv,camhoes.tv##.table -playporngames.com##+js(aeld, DOMContentLoaded, window.open) -playsexgames.xxx##+js(acs, bannersRequest) -||saddlegirls.com/saddlegirls/ph/v/*_video.mp4$1p -saddlegirls.com##.image-link[href^="//www.zagvee.com"] -||playporngames.com/*.gif| -||playporngames.com/fuck_dolls_online.jpg -playporngames.com##.sidebarcont > .widget_text:not(#text-2) -/xxx\/(?:[a-z]+[_-]){1,2}[a-z]+\.(?:gif|jpg)$/$image,1p,domain=playsexgames.xxx -playsexgames.xxx##.widget:not(#text-2) -||lifeselector.com/banners/js/banner-controller. -||static.zhihu.com/heifetz/main.signflow.*.js$script,domain=www.zhihu.com -needgayporn.com#@#.is-ad-visible -needgayporn.com##+js(aopr, ExoLoader.serve) -needgayporn.com##[href="https://www.onlyhentaistuff.com/"] -needgayporn.com##.table -needgayporn.com##[src^="https://www.needgayporn.com/player/html.php"] -needgayporn.com##.fp-brand -needgayporn.com##^script:has-text('script') -||needgayporn.com/ohs-180x800.gif -forexforum.co##+js(acs, $, .test) -||21pron.com/21porno.com/$frame -21porno.com###s-container -21porno.com###s-title -21porno.com##+js(nostif, window.location.href, 50) -! rule34.paheal.net PH -rule34.paheal.net##script[src$="ads.js"]:upward(section[id]) -! palcomix.com ads -palcomix.com##center > font[size="3"][face="ARIAL"]:has-text(ADVERTISING):upward(td) -palcomix.com##table[width="800"]:has(img[src^="../ads/"]) -/\.com\/(full)?ad[0-9a-z]+\.(?:gif|jpg)$/$image,1p,domain=palcomix.com -freemagazines.top##+js(aopr, b2a) -freemagazines.top##+js(nostif, showModal) -freemagazines.top##+js(acs, eval, replace) -*$xhr,redirect-rule=nooptext,domain=freemagazines.top -dl-protect.*##+js(nowoif) -||dl-protect.net/main.js?v=$script,1p -cryptowin.io##+js(acs, document.getElementById, 'body') -@@||cryptowin.io^$ghide -cryptowin.io##.panel-body > p[style=" color:#818181; background-color: #fffdc4; text-align: center; font-size: 14px; border-radius: 2px; width: 320px; max-width: 100%; margin: auto; margin-top: 15px; "] -cryptowin.io##.hidden-xs -0gomovies.*,cdnqq.net,cdn1.fastvid.co,movi.pk,ncdn22.xyz,netu.ac,player.msmini.*,player.sbnmp.*,netuplayer.*,vapley.*##+js(nowoif) -0gogle.com##+js(aopr, __Y) -movi.pk##+js(aeld, , vads) -movi.pk##+js(acs, eval, replace) -ncdn22.xyz,netu.ac,vapley.*##+js(aopr, doSecondPop) -movi.pk###vads -/cdn-cgi/trace$xhr,1p,domain=0gomovies.*|cdnqq.net|cdn1.fastvid.co|movi.pk|ncdn22.xyz|netu.ac|player.msmini.*|player.sbnmp.*|vapley.* -plugincrack.com##+js(nostif, ai_adb) -pikkado.com###googletop:remove() -pikkado.com###dest_rev -||gartic.io/videos/*$media,1p,redirect=noopmp4-1s -hindustantimes.com##+js(no-fetch-if, adsbygoogle.js) -hindustantimes.com##+js(ra, onclick, a[href][onclick^="getFullStory"]) -hindustantimes.com##.adBlocker -hindustantimes.com##.blackOverlay -hindustantimes.com##.desktopAd -hindustantimes.com##.epaper-ad -hindustantimes.com##.ht-ad-v1 -hindustantimes.com##.ht_outbrain -hindustantimes.com##.m_ads_unit -hindustantimes.com##.storyAd -hindustantimes.com##.topAd -hindustantimes.com##.widget-ad -hindustantimes.com##[class^="adHeight"] -hindustantimes.com##[class^="adMinHeight"] -hindustantimes.com##body:style(overflow: auto !important;) -hindustantimes.com##div[id^="div-gpt-ad"] -tech.hindustantimes.com##.header-ad -tech.hindustantimes.com##div.mobileNone -tech.hindustantimes.com##.centerAd768 -hindustantimes.com##.new_ads_unit -hindustantimes.com##.i-amphtml-unresolved -hindustantimes.com##.top250Ad -hindustantimes.com##[amp-access^="NOT"] -hindustantimes.com##.headerAds250 -hindustantimes.com##.FirstAd -hindustantimes.com##[class*="adsHeight"] -!https://github.com/uBlockOrigin/uAssets/issues/22748 -hindustantimes.com##[class^="TopStoriesAd_storyAd__"] -hindustantimes.com##[class^="QuizComponent_smallAds300__"] -! popups https://elitegoltv. es/canal-1.php -newdmn.*##+js(nowoif, !newdmn, 1) -newdmn.*###overlay -kitchennovel.com##+js(nostif, show) -! mp4hentai.com ads -||mp4hentai.com/holy-cell-feb3/ -mp4hentai.com###custom_html-5 -! hentaihd.net player overlay -hentaihd.net##.active-item -*$script,redirect-rule=noopjs,domain=konnoznet.xyz -! nypost.com PH -nypost.com##img[src$="/knewz_300x250.png"]:upward(.widget_text) -fappee.com##+js(acs, doMyStuff) -||googletagmanager.com/gtag/$script,redirect=googletagmanager_gtm.js,domain=fappee.com -! xmegadrive.com popup -xmegadrive.com##+js(acs, document.createElement, /l\.parentNode\.insertBefore\(s/) -xmegadrive.com##+js(set, flashvars.adv_pause_html, '') -xmegadrive.com##.table -xmegadrive.com##^script:has-text(l.parentNode.insertBefore(s, l);) -! nsfwmonster.com popup -nsfwmonster.com##+js(aeld, getexoloader) -kutmoney.com##+js(acs, Math, btoa) -kutmoney.com##+js(aopr, app_vars.force_disable_adblock) -kutmoney.com##+js(aopw, adcashMacros) -kutmoney.com##+js(set, blurred, false) -*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=kutmoney.com -moviehdf.*##+js(aopr, popUp) -moviehdf.*##+js(nowoif) -||bitlk.com^$3p -! popups, devtools detection https://moviessources .cf/embed/38700 -moviessources.*##+js(aeld, devtoolschange) -moviessources.*##+js(aopr, console.clear) -! citynews sites .it anti adb in video -agrigentonotizie.it,anconatoday.it,arezzonotizie.it,avellinotoday.it,bresciatoday.it,brindisireport.it,casertanews.it,cataniatoday.it,cesenatoday.it,chietitoday.it,forlitoday.it,frosinonetoday.it,genovatoday.it,ilpescara.it,ilpiacenza.it,latinatoday.it,lecceprima.it,leccotoday.it,livornotoday.it,messinatoday.it,milanotoday.it,modenatoday.it,monzatoday.it,novaratoday.it,padovaoggi.it,parmatoday.it,perugiatoday.it,pisatoday.it,quicomo.it,ravennatoday.it,reggiotoday.it,riminitoday.it,romatoday.it,salernotoday.it,sondriotoday.it,sportpiacenza.it,ternitoday.it,today.it,torinotoday.it,trevisotoday.it,triesteprima.it,udinetoday.it,veneziatoday.it,vicenzatoday.it##+js(nostif, bADBlock) -flmods.com##+js(nostif, offsetHeight) -flmods.com##[href^="https://www.flmods.com/index.php"][target="_blank"] -booksrack.net##+js(noeval-if, adsbygoogle) -*$script,redirect-rule=noopjs,domain=examsnet.com -javfun.me###invideo_wrapper -tophentaicomics.com##+js(acs, pop_init) -tophentaicomics.com##.sidebar-wrapper.widget_text -tophentaicomics.com##.thumb-ad -||tophentaicomics.com/istrippers.jpg -||tophentaicomics.com/pop.js -k12reader.com##+js(aopr, rccbase_styles) -cachevalleydaily.com##+js(aopr, rccbase_styles) -cachevalleydaily.com##.main-top-ad -girlsofdesire.org##+js(aeld, getexoloader) -girlsofdesire.org##[href^="http://refer.ccbill.com/cgi-bin/clicks.cgi"] > div -girlsofdesire.org##a[class="pink"][href*="refer.ccbill.com"] -girlsofdesire.org##div[id$="_frame_content"][class="wide_boxcontent"]:has-text(Adblock) -girlsofdesire.org###box_896 -girlsofdesire.org###box_897 -girlsofdesire.org##+js(nosiif, /^/) -girlsofdesire.org##[href^="/click"]:remove-attr(href) -tqanime.com##+js(nosiif, visibility, 1000) -! popups animeindo .asia -animeindo.asia##+js(aeld, , _0x) -family-fuck.net##.plink -adultfun.net##+js(nowoif) -*$xhr,redirect-rule=nooptext,domain=hitbits.io -kayfanet.com##+js(acs, addEventListener, google_ad_client) -! kaomoji-cafe.web.app -> akuu-sflin.blogspot.com anti-adb & PH -akuu-sflin.blogspot.com##+js(acs, matchMedia, Adblocker) -akuu-sflin.blogspot.com##.text-center:has-text(Adv) -@@||videakid.hu^$ghide -videakid.hu##.ad-container -videakid.hu##.single-video-right-sidebar-ads -filezip.cc##style:has-text(#blockblock):remove() -filezip.cc###blockblockA -phoenixfansub.com##+js(nostif, mdp) -kutt.io##+js(aopr, app_vars.force_disable_adblock) -kutt.io##+js(set, blurred, false) -jzzo.com###embed:style(position: static!important; margin-top: 0!important;) -jzzo.com###embed-overlay -jzzo.com###parrot -jzzo.com##.ios_img -sanoybonito.club##+js(aopr, adBlockDetected) -sanoybonito.club##+js(aopr, app_vars.force_disable_adblock) -sanoybonito.club##+js(nowoif) -sanoybonito.club##+js(nano-sib, counter, 2000) -sanoybonito.club##+js(set, blurred, false) -@@||unilad.co.uk^$ghide -unilad.co.uk##div:has(> .dfp-ad-unit) -||adsafeprotected.com/vans-adapter-google-ima.js^$redirect-rule=noopjs,script,domain=unilad.co.uk -@@||micro.rubiconproject.com/prebid/dynamic/*$script,domain=unilad.co.uk -unilad.co.uk#@#div[class*="margin-Advert"] -topnewsshow.com##+js(nostif, css_class.show) -*$script,redirect-rule=noopjs,domain=topnewsshow.com -panel.skynode.pro##+js(aopr, adBlockerDetected) -rezkozpatch.xyz##+js(acs, eval, ignielAdBlock) -@@||animekuro.org^$ghide -animekuro.org##.mks_ads_widget -animekuro.org##+js(acs, document.write) -telesintese.com.br##+js(refresh-defuser) -devcourseweb.com##+js(nosiif, visibility, 1000) -devcourseweb.com##+js(nostif, brave_load_popup) -devcourseweb.com##.ovzeacm-float-center -devcourseweb.com##div.ovzeacm-loc-block-ad -! its.porn popunder pre-roll ads -its.porn##+js(set, POPUNDER_ENABLED, false) -its.porn##+js(set, plugins.preroll, noopFunc) -its.porn##aside -its.porn##.spot_large -its.porn##.desk-banners -*$frame,denyallow=google.com,domain=its.porn -! verdragonball.online anti adb -@@||verdragonball.online^$ghide -*$popunder,domain=r18hub.com,3p -||r18hub.com/assets/vast/videos/*$xhr,1p -samaa-pro.com##+js(aopr, app_vars.force_disable_adblock) -7misr4day.com,sama-pro.com##+js(nano-sib) -7misr4day.com##+js(aopr, adBlockDetected) -samaa-pro.com##+js(set, blurred, false) -7misr4day.com##+js(nowoif) -miklpro.com##+js(aopr, app_vars.force_disable_adblock) -miklpro.com##+js(set, blurred, false) -miklpro.com##.box-main > .blog-item -miklpro.com##.banner -*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=miklpro.com -sshconect.com.br##+js(acs, addEventListener, nextFunction) -! hd21 group sites -||zusepe.xyz^ -! hd21.com/net -hd21.*##+js(nowoif) -hd21.com##.ID-bottom-banner -hd21.com##.adv_middle -hd21.*##.aside_video -hd21.com##.drt-sponsor-block -||hd21.*/templates/base_master/js/jquery.shows.min.js -! iceporn.com/net -iceporn.*##+js(nowoif) -iceporn.com##.puFloatLine -iceporn.com###abmessage -iceporn.*###spot_video_livecams -iceporn.*##.furtherance -iceporn.*##.take_place + .take_place -iceporn.*###spot_video_partner_banner -iceporn.*###spot_video_partner_banner + span[style] -nuvid.*##+js(aeld, click, open) -nuvid.*##+js(nowoif) -nuvid.*##div[style^="height:477px"] -nuvid.*##footer > .rfix -nuvid.*##.aside > h2 -nuvid.*##.download_adv_text_photo -nuvid.*##.video-options -nuvid.*##.advertisement -||nuvid.*/player_right_$frame -! pornlib.com -pornlib.*##+js(nowoif) -! tubeon.com/net -tubeon.*##+js(nowoif) -tubeon.*##.spots -tubeon.*##.thr-rcol -! vivatube.com/net -vivatube.*##+js(nowoif) -vivatube.*##.livecams -vivatube.*##.clear + .mt15.container[style="margin-top:15px; border-bottom:0;"] -! winporn.com/net -winporn.*##+js(nowoif) -! yeptube.com/net -yeptube.*##+js(nowoif) -yeptube.com##.puFloatLine -yeptube.*##.spots -yeptube.*##.thr-rcol -gasngogeneralstores.com##[href="https://gasngogeneralstores.com/sexdating.php"] -gaytail.com##+js(aeld, getexoloader) -gaytail.com##+js(acs, onload, onclick) -gaytail.com##.happy-footer -||gaytail.com/fancy-mode-7abe/ -||datawav.club/*.php -game-owl.com##+js(aost, String.prototype.charCodeAt, ai_) -atv.at##+js(set, errcode, 0) -*&expires$media,redirect=noopmp3-0.1s,domain=atv.at -||zomap.de/*&expires=$script,domain=atv.at -atv.at##[data-oasis-id="midroll-marker"] -anime-saikou.com##+js(nosiif, visibility, 1000) -arkadiumhosted.com##+js(set, Adv_ab, false) -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=arkadiumhosted.com -streamsport.*##+js(aeld, , _0x) -streamsport.*##+js(nowoif) -@@||micro.rubiconproject.com/prebid/dynamic$script,domain=ladbible.com -ladbible.com#@#div[class*="margin-Advert"] -ladbible.com##span:has-text(Advert) -ladbible.com##[data-cypress="sticky-ads"] -@@||pub.doubleverify.com/signals/pub.js$xhr,script,domain=ladbible.com|gamingbible.*|tyla.com|unilad.com -@@||rubiconproject.com/prebid/$xhr,script,domain=ladbible.com|gamingbible.*|tyla.com|unilad.com -@@||static.adsafeprotected.com/vans-adapter-google-ima.js$xhr,domain=ladbible.com|gamingbible.*|tyla.com|unilad.com -@@||c.amazon-adsystem.com/aax2/apstag.js$xhr,domain=ladbible.com|gamingbible.*|tyla.com|unilad.com -ladbible.com##[data-cypress="sticky-header"] -*$image,redirect-rule=1x1.gif,domain=rollercoin.com -! windowmatters.com anti-adb -windowsmatters.com##+js(aeld, load, isBlanketFound) -*$script,redirect-rule=noopjs,domain=windowsmatters.com -windowsmatters.com##div[class$="-quick-adsense"] -! masbrooo.com/2ndrun.tv anti-adb -masbrooo.com,2ndrun.tv##+js(aeld, load, showModal) -*$script,redirect-rule=noopjs,domain=masbrooo.com|2ndrun.tv -2ndrun.tv##+js(set, DHAntiAdBlocker, true) -*$xhr,redirect-rule=nooptext,domain=fr.de -@@||fr.de^$ghide -fr.de##div[data-id-advertdfpconf] -hdpicsx.com##.ads -textbin.net##+js(set, isAdBlockActive, false) -timesnownews.com##.ad-section-one -timesnownews.com##.ad-section-three -timesnownews.com##.ad-panel-wrap -timesnownews.com##.add-wrap -timesnownews.com##.gutterAdContainer -timesnownews.com##.right-block > .section-six -timesnownews.com##.right-block > .section-one -||imasdk.googleapis.com/js/sdkloader/ima3.js^$script,redirect-rule=google-ima.js,domain=timesnownews.com -@@||imasdk.googleapis.com/js/sdkloader/ima3_dai.js^$script,domain=timesnownews.com -@@*$ghide,domain=timesnownews.com|timesnowhindi.com|timesnowmarathi.com|zoomtventertainment.com -timesnownews.com,timesnowhindi.com,timesnowmarathi.com,zoomtventertainment.com##.adunit -timesnownews.com,timesnowhindi.com,timesnowmarathi.com,zoomtventertainment.com##+js(nostif, Adblock) -!#if env_mobile -@@||onelinksmartscript.appsflyer.com/onelink-smart-script-latest.js$script,domain=timesnownews.com -!#endif -tormalayalam.*##+js(aopw, adcashMacros) -blograffo.net##+js(acs, addEventListener, nextFunction) -blograffo.net##[href^="https://amzn.to/"] -aquiyahorajuegos.net##+js(aopr, adBlockDetected) -aquiyahorajuegos.net##+js(nowoif) -imag-r.com##+js(aopr, adBlockerDetected) -/block-adblock.js$script -@@||bitent.com/lock_html5/adPlayer/*/adPlayer.js$script,1p -eropaste.net##+js(set, isAdBlockActive, false) -eropaste.net###banner-dl -adult-sex-gamess.com,hentaigames.app,mobilesexgamesx.com,mysexgamer.com,porngameshd.com,sexgamescc.com##+js(nostif, /out.php) -adult-sex-gamess.com,hentaigames.app,mobilesexgamesx.com,mysexgamer.com,porngameshd.com,sexgamescc.com##.a-th:first-child:has(iframe) -adult-sex-gamess.com,hentaigames.app,mobilesexgamesx.com,mysexgamer.com,porngameshd.com,sexgamescc.com##.alert-danger > .row -adult-sex-gamess.com,hentaigames.app,mobilesexgamesx.com,mysexgamer.com,porngameshd.com,sexgamescc.com##.ntkSides -adult-sex-gamess.com,hentaigames.app,mobilesexgamesx.com,mysexgamer.com,porngameshd.com,sexgamescc.com###modalegames -! d.pornxp.com/pornxp.org popup -pornxp.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -pornxp.com,pornxp.org##+js(aopr, AaDetector) -*$script,3p,domain=pornxp.com -||pornxp.*/sp/$subdocument -! generic AaDetector mitigation -##div[id][style^="position: fixed; inset: 0px; z-index: 2147483647; background: black"][style*="opacity: 0.01"] -/heyboy/com/*.js$script -/loadme/com/*.js$script -sexflashgame.org##+js(acs, ishop_codes) -||porngames.com/*.gif$image,1p -porngames.com##div[style^="display: block; position: fixed; z-index:"] -f2movies.to##+js(nostif, /0x|devtools/) -f2movies.to##+js(nosiif, _0x) -||awkljjaawerba.top^$3p -//images\/(?:Banner\d{1,2}\.|[a-z]{3}\/)/$image,1p,domain=thesquarshers.com -thesquarshers.com##a:has(img[src*="/Banner"]) -thesquarshers.com##.table -thesquarshers.com##.video-holder -! cutesexyteengirls.com exit prevention -cutesexyteengirls.com##+js(aeld, beforeunload) -@@||fssquad.com^$ghide -fssquad.com##+js(acs, $, /adbl/i) -fssquad.com##+js(nano-sib, , , 0) -fssquad.com##.banner-end.center-it > [href] -cablegratis.online###tme -@@||cdnjs.cloudflare.com/ajax/libs/fuckadblock$script -! wmoviesfree. com (.online) popups -wmoviesfree.*##.orange.big-color-btn -||wmoviesfree.*/themes/movies/img/banner_leaderboard$image -! dulu. to popups -hotflix.cc##+js(nowoif) -videobot.stream##+js(aopr, __Y) -ehotpics.com,upicsz.com##figure[style^="width: 310px;"] -@@||down.mdiaload.com^$ghide -down.mdiaload.com##div[style$="background-color:#ffffff; text-align:center"] -down.mdiaload.com##div[style="width:336px; height:280px"] -down.mdiaload.com##.btn-dow.btn[href$=".html"] -down.mdiaload.com##div.download-option-btn:nth-of-type(4) -ontiva.com##+js(set, canRunAds, true) -ontiva.com##+js(nowoif) -slideplayer.com##.bottom_comment_banners -slideplayer.com##.top_comment_banners -@@||securepubads.g.doubleclick.net^$script,domain=mope.io -@@||securepubads.g.doubleclick.net/gampad/ads$xhr,domain=mope.io -mope.io##[id^="google_ads_iframe"] -gaysearch.com##+js(nowoif) -gaysearch.com##.twocolumns > .aside -*$script,redirect-rule=noopjs,domain=kursors.lv -javbel.com##+js(acs, decodeURI, decodeURIComponent) -iframe2videos.xyz##+js(aopr, __Y) -javbix.com##.adsvideo -javbix.com##.content_movie > div[style="padding:10px; margin-top:15px; text-align:center"] -javbix.com##.letterLi:last-of-type -rawmanga.top##+js(aopr, AaDetector) -2adultflashgames.com##+js(aopr, loadTool) -||2adultflashgames.com/img/$1p -||sexsim2.com^$domain=2adultflashgames.com -javnow.net##+js(aost, String.prototype.charCodeAt, ai_) -javnow.net##div[style$="width:300px;height:250px;"] -||highwebmedia.com/ri/$domain=clubsarajay.com -clubsarajay.com###mgb -clubsarajay.com###mpc-container -gatcha.org##+js(nostif, css_class.show) -zilinak.sk##+js(nostif, offsetHeight) -loadout.tf##.header:has(> div[data-i18n^="#ad"]) -loadout.tf##.header:has(> div[data-i18n^="#ad"]) + div:empty:last-child -||raw.githack.com/Raqmedia/adblock/$script,3p -raqmedia.com##[href^="https://www.englezz.com"] -filtercams.com##+js(acs, $, #advVid) -filtercams.com##.table -! cryptofun .space anti adb -/adex.js$badfilter -@@||cryptofun.space^$script,1p -@@||shrink.icu/prebid.js$script -! anime47 .com popups -anime47.com##+js(aopr, open) -! various filters -/ajax/banner/list?page=$xhr,1p -hd44.net##+js(aopr, decodeURI) -javhd.today##+js(acs, document.createElement, 'script') -aniwatch.pro,ytc.*##+js(nowoif) -||cdn.ay.gy/js/$script,3p -hianime.to,shahid4u.*,watchonlinemoviespk.*,moviekids.tv##+js(nowoif) -megaupto.com##+js(nano-stb, seconds) -hihihaha1.xyz,rufiguta.com##+js(nowoif, /^/, 1) -projectfreetv.*,hdss.*,moviesflix.*,10starhd.*##^script:has-text(break;case) -||cdn.abysscdn.com/players/playhydraxb.min.js$script,domain=hihihaha1.xyz -www-y2mate.com##+js(nowoif) -||apimate.net/ad.js -||bonepa.com^ -||cetusbrooder.com^ -||cooperationmoth.com^ -||holdingwager.com^ -||crawlcoxed.com^ -||got-to-be.net^ -||hobbiesshame.online^ -||navigateembassy.com^ -||storehighlystrongtheproduct.vip^ -||trivial-girlfriend.com^ -||xads.top^ -xfile.store##.ads-btns -xfile.store##[href="https://is.gd/xdownload2024"] -filmyzilla.*##[href^="//"][rel="nofollow"] -streamhub.*##center > a[href][target="_blank"] -streamhub.*##+js(aopw, __aaZoneid) -streamhub.*##+js(nowoif) -streamingcommunity.*##+js(acs, decodeURI, decodeURIComponent) -*$script,3p,denyallow=streamhub.to,domain=streamhub.* -hdhub4u.*##.watch-hd -hdhub4u.*##.hd-links -superstream.*##+js(aopr, AaDetector) -$script,3p,denyallow=bootstrapcdn.com,domain=uploadflix.* -$script,3p,denyallow=translate.google.com|googleapis.com,domain=lrepacks.net -||receivedachest.com^ -moviezwap.*##+js(nowoif) -moviezwap.*##[style^=" width: 305px;"][type^="button"][onclick^="window.location.href"] -! pp_issues -! firefox html filtering -! ##^script:has-text(;}}};break;case $.) -!#if cap_html_filtering -11xmovies.*,123movies.*,123moviesla.*,123movieweb.*,2embed.*,3kmovies.*,6hiidude.art6movies.net,720pflix.*,720pstream.*,7starhd.*,9xflix.*,9xmovies.*,aagmaal.*,adsh.cc,adshort.*,afilmyhouse.blogspot.com,ak.sv,aliezstream.pro,allmovieshub.*,animesultra.net,antennasports.ru,api.webs.moe,apkmody.io,asianplay.*,atishmkv.*,atomixhq.*,attvideo.com,backfirstwo.site,bdnewszh.com,buffsports.me,ccurl.net,cloudvideo.tv,cloudvideotv.*,crazyblog.in,cricstream.*,crictime.*,cuervotv.me,cypherscans.xyz,daddylive.*,daddylivehd.*,databasegdriveplayer.*,defienietlynotme.com,divicast.com,dlhd.so,dood.*,dooood.*,dvdplay.*,egybest.*,embed.meomeo.pw,embedme.*,embedpk.net,embedstream.me,esportivos.site,extramovies.*,faselhd.*,faselhds.*,faselhdwatch.*,filemoon.*,filemooon.*,filmeserialeonline.org,filmesonlinexhd.biz,filmy.*,filmyhit.*,filmywap.*,filmyzilla.*,finfang.*,flexyhit.com,flixhq.*,fmembed.cc,fmoonembed.*,fmovies.*,focus4ca.com,footybite.to,footyhunter3.xyz,foreverwallpapers.com,french-streams.cc,fslinks.org,fstream365.com,gdplayer.*,gdrivelatinohd.net,gdriveplayer.*,gocast.pro,godzcast.com,goku.*,gomovies.*,gowatchseries.*,hdfungamezz.*,hdmovies23.*,hdmoviesfair.*,hdtoday.to,hellnaw.*,hianime.to,hinatasoul.com,hindilinks4u.*,hindimovies.to,hurawatch.*,hwnaturkya.com,hxfile.co,icelz.newsrade.com,igg-games.com,infinityscans.net,infinityscans.xyz,isaidub6.net,jalshamoviezhd.*,kaido.to,kerapoxy.*,kunmanga.com,linkshub.*,livecricket.*,lulustream.com,luluvdo.com,maxstream.*,membed.net,mgnetu.com,mhdsport.*,mkvcinemas.*,moonembed.*,movie4kto.net,moviekids.tv,movies2watch.*,moviesda9.co,moviespapa.*,mp3juice.info,mp3juices.cc,mp4moviez.*,mydownloadtube.*,myflixertv.to,myflixerz.to,mylivestream.pro,niaomea.me,nolive.me,novelssites.com,nowmetv.net,nowsportstv.com,nsw2u.*,nuroflix.*,nxbrew.com,o2tvseries.*,o2tvseriesz.*,oii.io,olympicstreams.co,paidshitforfree.com,pctfenix.*,pctnew.*,pepperlive.info,pirlotv.*,pkspeed.net,playertv.net,poclivetv.com,poscitech.*,poscitesch.com,primewire.*,putlocker68.com,radamel.icu,redecanais.*,rgeyyddl.*,roystream.com,rssing.com,s.to,sbnmp.bar,serienstream.*,sflix.*,shahed4u.*,shaheed4u.*,share.filesh.site,sharkfish.xyz,skidrowcodex.net,soccer100.shop,socceronline.*,speedostream.*,sportcast.*,sports-stream.site,sportshub.fan,sportskart.*,stream4free.live,streamadblocker.*,streamed.su,streamhub.*,streamingcommunity.*,streamnoads.com,sulleiman.com,tamilarasan.*,tamilfreemp3songs.*,tamilmobilemovies.in,tamilprinthd.*,tapeadsenjoyer.com,tapeadvertisement.com,tapelovesads.org,tgo-tv.co,thewatchseries.live,tnmusic.in,torrentdosfilmes.*,totalsportek.soccer,travelplanspro.com,tubemate.*,tusfiles.com,tutlehd4.com,twstalker.com,uploadrar.*,uqload.*,userscloud.com,vegamovie.*,vid-guard.com,vidcloud9.*,vidco.pro,video-leech.xyz,vido.*,vidoo.*,vidsaver.net,vidspeeds.com,vidsrc.*,vipbox.*,vipboxtv.*,viprow.*,viralitytoday.com,voiranime.stream,volokit2.com,vpcxz19p.xyz,vudeo.*,vumoo.*,watchdoctorwhoonline.com,watchomovies.*,watchserie.online,webhostingpost.com,woxikon.in,www-y2mate.com,yesmovies.*,ylink.bid,ytix.xyz,z12z0vla.*,zvision.link##^script:has-text(;}}};break;case $.) -!#else -! ##+js(rmnt, script, ;}}};break;case $.) -123movies.*,123moviesla.*,123movieweb.*,2embed.*,6movies.net,720pstream.*,9xmovies.*,aagmaal.*,adsh.cc,adshort.*,afilmyhouse.blogspot.com,ak.sv,allmovieshub.*,animesultra.com,api.webs.moe,apkmody.io,asianplay.*,atishmkv.*,atomixhq.*,attvideo.com,backfirstwo.site,bdnewszh.com,buffsports.me,ccurl.net,cloudvideo.tv,cloudvideotv.*,crazyblog.in,cricstream.*,crictime.*,cuervotv.me,cypherscans.xyz,daddylive.*,daddylivehd.*,databasegdriveplayer.*,divicast.com,dlhd.so,dood.*,dooood.*,dvdplay.*,embed.meomeo.pw,embedstream.me,extramovies.*,faselhd.*,faselhds.*,filemoon.*,filmeserialeonline.org,filmesonlinexhd.biz,filmy.*,filmyhit.*,filmywap.*,filmyzilla.*,flexyhit.com,fmovies.*,footyhunter3.xyz,foreverwallpapers.com,french-streams.cc,fslinks.org,fstream365.com,gdplayer.*,gdriveplayer.*,goku.*,gomovies.*,gowatchseries.*,hdfungamezz.*,hdmoviesfair.*,hdtoday.to,hinatasoul.com,hindilinks4u.*,hindimovies.to,hurawatch.*,hwnaturkya.com,hxfile.co,icelz.newsrade.com,igg-games.com,infinityscans.net,infinityscans.xyz,jalshamoviezhd.*,livecricket.*,lulustream.com,luluvdo.com,membed.net,mgnetu.com,mhdsport.*,mkvcinemas.*,movie4kto.net,movies2watch.*,moviespapa.*,mp3juice.info,mp3juices.cc,mp4moviez.*,mydownloadtube.*,myflixerz.to,niaomea.me,nolive.me,novelssites.com,nowmetv.net,nowsportstv.com,nsw2u.*,nuroflix.*,nxbrew.com,o2tvseries.*,o2tvseriesz.*,oii.io,olympicstreams.co,paidshitforfree.com,pctfenix.*,pctnew.*,pepperlive.info,pirlotv.*,playertv.net,poscitech.*,poscitesch.com,primewire.*,putlocker68.com,redecanais.*,roystream.com,rssing.com,s.to,serienstream.*,sflix.*,shahed4u.*,shaheed4u.*,share.filesh.site,sharkfish.xyz,skidrowcodex.net,socceronline.*,speedostream.*,sportcast.*,sports-stream.site,sportskart.*,stream4free.live,streamadblocker.*,streamed.su,streamingcommunity.*,streamnoads.com,tamilarasan.*,tamilfreemp3songs.*,tamilmobilemovies.in,tamilprinthd.*,tapeadsenjoyer.com,tgo-tv.co,thewatchseries.live,tnmusic.in,torrentdosfilmes.*,travelplanspro.com,tubemate.*,tusfiles.com,tutlehd4.com,twstalker.com,uploadrar.*,uqload.*,userscloud.com,vid-guard.com,vidcloud9.*,vidco.pro,video-leech.xyz,vido.*,vidoo.*,vidsaver.net,vidspeeds.com,vidsrc.*,vipbox.*,vipboxtv.*,viprow.*,viralitytoday.com,voiranime.stream,vudeo.*,vumoo.*,watchdoctorwhoonline.com,watchomovies.*,watchserie.online,webhostingpost.com,woxikon.in,www-y2mate.com,yesmovies.*,ylink.bid,ytix.xyz##+js(rmnt, script, ;}}};break;case $.) -!#endif -! ##+js(acs, Math, zfgloaded) -01fmovies.com,1movietv.com,33sk.*,3sk.*,4shared.com,allcalidad.*,anime-odcinki.pl,animesvision.*,bdcraft.net,best4hack.blogspot.com,biqle.com,bmovie.*,cinedetodo.*,cinetux.*,converto.io,descargas2020.*,extrafreetv.com,exyi.net,filmeonlinehd.biz,fmovie.*,hindilinks4u.*,hitokin.net,ipaste.pw,iptvdroid1.blogspot.com,ironysub.*,janjua.*,kstreaming.*,kwik.*,langitmovie.com,libertyvf.*,movieloversworld.com,nensaysubs.net,nflbite.com,onlinework4all.com,onlystream.tv,popcornstream.*,protect-mylinks.com,putlocker.*,saveshared.com,short.pe,shorten.*,solarmovie.*,storieswatch.com,streamango.*,streaming-one.com,streamloverx.com,televisiongratishd.com,turkanime.*,uploadev.*,upzone.cc,ur-files.com,vidoza.net,vidshare.tv,watchhowimetyourmother.online,watchmadmenonline.com,watchonceuponatimeonline.com,watchsexandthecity.com,watchtrailerparkboys.com,xmovies08.*##+js(acs, Math, zfgloaded) -! ##+js(acs, JSON.parse, break;case $.) -1111fullwise.*,111watcho.*,123-movies.*,123moviesc.*,123moviesla.*,1kmovies.*,1movieshd.com,2gomovies.*,4filmyzilla.*,69hoshudaana.*,a123movies.net,acervofilmes.com,adshort.*,airportseirosafar.com,ajkalerbarta.com,akmcloud.*,allmovieshub.*,altadefinizione01.*,animekaizoku.com,animepahe.*,animeshow.tv,animesonehd.xyz,animesonline22.com,animetak.*,animeworld.tv,api.webs.moe,appsfree4u.com,appvn.com,arenavision.*,askim-bg.com,attvideo.com,b-bmovies.com,baixedetudo.net.br,baramjak.com,batmanstream.*,bclikeqt.com,beastlyprints.com,bengalisite.com,bestfullmoviesinhd.org,birdurls.com,bmovies.*,bollymovies.*,bollywoodfilma.*,buffstream.*,cablegratis.online,ch-play.com,charexempire.com,clampschoolholic.*,comandotorrenthd.org,comofuncionaque.com,crackevil.com,crichd.*,cricplay2.xyz,crictime.*,cryptoforu.org,deportealdia.live,dflinks.*,downloadming.*,dramacool.*,e123movies.com,eio.io,essaysharkwriting.club,europix.*,exe.app,exee.io,extreme-down.*,f1stream.*,fbstream.*,fffmovies.*,filme-bune.biz,filmisongs.*,filmovi.ws,flixhq.ru,flixtor.video,foumovies.*,fullcinema.*,fullreal.*,fulltube.*,fzmoviesnet.com,getmega.net,givemenbastreams.com,givemeredditstreams.com,gnula.*,gogoplay.*,gomo.to,gyonlineng.com,hd44.net,hdmoviehubs.*,hdmovies23.com,hdonline.co,hdpopcorns.*,hdss-to.*,hdzone.org,healthnewsreel.com,i123movies.net,iegybest.co,ikindlebooks.com,illink.net,imagetot.com,imgdawgknuttz.com,isaimini.ca,iv-soft.com,jalshamoviezhd.*,janjua.tv,jewelry.com.my,jkanime.*,johnwardflighttraining.com,jujutsukaisen-manga.online,jujutsukaisenonline.net,kabarportal.com,katflys.com,keepv.id,keepvid.*,kiss-anime.*,kissanime.*,kissasians.org,kissmanga.*,klubsports.xyz,kora-online.tv,kshow123.net,kstorymedia.com,kumascans.com,la123movies.org,leet365.cc,lespassionsdechinouk.com,libertestreamvf.*,linkadshield.xyz,linkshere.*,linksmore.*,live7v.com,livestreamtv.pk,lmplayer.xyz,lodynet.*,lookmovie.*,lookmovie102.xyz,lookmovie103.xyz,lookmovie107.xyz,lookmovie108.xyz,lookmovie110.xyz,lookmovie113.xyz,lookmovie114.xyz,lookmovie115.xyz,lookmovie116.xyz,lookmovie117.xyz,lookmovie120.xyz,lookmovie121.xyz,lookmovie122.xyz,lookmovie123.xyz,lookmovie125.xyz,lookmovie127.xyz,lookmovie129.xyz,lookmovie130.xyz,lookmovie131.xyz,lookmovie132.xyz,lookmovie134.xyz,lookmovie135.xyz,lookmovie137.xyz,lookmovie138.xyz,lookmovie139.xyz,lookmovie140.xyz,lookmovie141.xyz,lookmovie142.xyz,lookmovie143.xyz,lookmovie186.*,lookmoviess.com,losmovies.*,manga4life.com,mangadna.com,mangahub.io,mangasco.com,mangceh.cc,masengwa.com,mcdlpit.com,mega-mkv.com,mega-p2p.net,megafilmeshd20.*,megashare-website.com,mettablog.com,mlbstream.*,momomesh.tv,motive213link.blogspot.com,motogpstream.*,moviebb.net,moviemasalahd.xyz,movierulzhd.*,movies7.to,moviesbaba.*,moviescounter.*,mp3-gratis.it,mp3juice.info,mp3spy.cc,my1ink.*,myegy.*,myfernweh.com,myl1nk.*,myli3k.*,mylink.*,naasongs.*,naasongsfree.*,nbastream.*,needrombd.com,nflstream.*,ngomik.net,nhlstream.*,novamovie.net,novelssites.com,noweconomy.live,oceanofmovies.*,onlinesubtitrat.com,onlinevideoconverter.*,oploverz.*,orangeink.pk,ostreaming.tv,pagalworld.*,peliculontube.net,pelismart.com,pelisstar.com,pirlotv.mx,playerfs.com,playlist-youtu.be,playtamil.*,plylive.*,primewire.*,projectfreetv.*,projectfreetv2.com,projectfreetv2022.com,putlocker-website.com,putlocker68.com,putlocker9.*,putlockers.*,querofilmehd.*,ragnaru.net,repelis.in,rojadirectahd.online,romfast.com,rugbystreams.*,s4p2.shingekinokyojin.tv,sampledrive.in,sdmoviespoint.*,serijefilmovi.com,serijehaha.com,sharkfish.xyz,shortlinkto.*,shr.cash,shrugemojis.com,simsdom.com,skidrow-games.com,soap2day.*,soap2dayto.org,sockshare.ac,sportstreamtv.*,srek.net,ssoap2day.*,st23q.com,stivandz.com,stream.pkayprek.com,streamingfrance.net,talaba.su,tamilyogi.best,tamilyogis.*,tatabrada.tv,tenies-online.*,tennisstreams.*,tgo-tv.co,thelinkbox.*,thesuperdownload.*,thetechzone.online,thingstomen.com,thripy.com,tlin.me,tomatomatela.com,turcasmania.com,tv96.cc,tvply.*,u123movies.com,ufcstream.*,ukmagazinesfree.com,uploadbox.cc,uppit.com,urdubolo.pk,usagoals.*,vedbom.*,vedshare.com,veryfastdownload.pw,vevioz.com,vidbeem.com,vidbm.com,vidcorn.to,vidembed.*,vidlo.us,vidsrc.*,vkmp3.*,wat32.tv,watchmovieshd.*,watchserieshd.*,watchseriesstream.com,watchtvch.club,wawacity.*,webhostingpost.com,wifi4games.com,wildwap.*,wmoviesfree.*,xmovies8.*,xn--mlaregvle-02af.nu,xxxwebdlxxx.top,yeshd.net,yesmovies.*,yodbox.com,yotrabajo.info,yt-api.com,yt-download.org,yt1s.com,ytix.xyz,ytsaver.*,zeidgh.com,ziperto.com##+js(acs, JSON.parse, break;case $.) -! ##+js(acs, parseInt, break;case $.) -123movies-official.net,123movies-official.site,123movies.net,123movies4u.xyz,123movies4up.*,123moviesfree.*,123moviesme.*,123moviesready.org,123moviesto.club,1movieshd.com,4stream.*,5xmovies.*,720pstream.*,7hitmovies.*,9kmovies.*,9tsu.*,9xmovie.*,9xupload.*,ajkalerbarta.com,allosoccer.com,altadefinizione01.*,anavidz.com,anidl.org,animasu.club,anime-sanka.com,anime4up.*,animefreak.*,animehditalia.it,animes.vision,animesanka.*,animesultra.com,animesup.*,anitube.*,apkmody.io,apkshrt.com,appsfree4u.com,asianembed.io,asianhdplay.net,asianplay.*,asianwatch.net,atdhe.pro,atomohd.*,bakotv.com,bbb.fm,bdmusic23.*,beastlyprints.com,bengalisite.com,bestfullmoviesinhd.org,bhplay.me,bx-zone.com,canonprintersdrivers.com,cat-a-cat.net,ccnworldtech.com,ch-play.com,cheat.hax4you.net,cima100fm.com,cimalina.me,cinevision.online,cinevision4.online,clipconverter.cc,crystal-launcher.pl,cuevanahd.net,distanta.net,dlpsgame.org,dtmaga.com,egyshare.cc,elevationmap.net,eplayvid.*,essaysharkwriting.club,exey.io,f1stream.*,fakazagods.com,fastilinks.*,fbox.to,fboxtv.com,fbstream.*,fightforthealliance.com,fileguru.net,files.im,filma1.*,filma24.*,filmy.*,filmyhit.*,filmyzilla.filmywap2021ganduworld.com,flixtor.*,fmovies.*,fmovies2.cx,freemoviesfull.com,freeromsdownload.com,fromhots.com,futemax.app,g3g.*,gameslay.net,gdplayer.*,gentlewasher.com,gofilmes.*,gogoplay1.com,gogoplay2.com,gogoplay4.com,gomoviz.*,govid.*,gum-gum-stream.com,hds-streaming-hd.com,hds-streaming.*,healthnewsreel.com,hentaizm.fun,hhdmovies.*,hikarinoakari.com,hilaryhahn.com,hindimovies.*,hothit.me,hotmasti.*,ilgeniodellostreaming.*,ilinks.in,imgspark.com,insurancebillpayment.net,intereseducation.com,iv-soft.com,jetanimes.*,jewelry.com.my,jockantv.com,johnwardflighttraining.com,joolinks.*,jpscan-vf.com,kabarportal.com,katlinks.*,katmoviehd4.com,kimoitv.com,kingdomfiles.com,kstorymedia.com,leet365.cc,lespassionsdechinouk.com,libertestreamvf.*,liflix.site,linkotes.com,linksfire.*,linksly.co,livestreamtv.pk,lustholic.com,mangahere.today,manganatos.com,mangas-raw.com,manhuascan.*,manhwa68.com,mcubd.host,megafilmeseseriesonline.com,melodelaa.*,messitv.net,mkvcage.*,mkvpapa.*,mlbstream.*,mobdropro.com,modsfire.com,moonblinkwifi.com,moshahda.net,motive213.com,motogpstream.*,moviedekho.in,moviefreak.*,movies2k.*,moviescounnter.com,moviesdaweb.*,movieskafanda.xyz,moviesland.*,moviestars.to,moviesverse.*,moviewr.com,mp3-now.com,mp3fromyou.tube,mp3fusion.net,mp3juices.su,mp3yeni.org,mycima.*,myfernweh.com,myflixer.*,myoplay.club,nbastream.*,networklovers.com,neymartv.net,nflstream.*,ngomik.net,nhlstream.*,nkiri.com,novelroom.net,nullpk.com,ogario.*,okamimiost.com,okanime.*,orangeink.pk,ovamusic.com,pahe.*,paidnaija.com,pelismarthd.com,pelismartv.com,pelisplus.uproxy.page,pelispoptv.com,pirate4all.com,plylive.*,plyvdo.*,poscitech.*,put-locker.com,putingfilm.com,putlocker.*,putlockers.*,quiltfusion.com,rawkuma.com,redowlanalytics.com,roms-download.com,roms-hub.com,roms-telecharger.com,rugbystreams.*,s.to,satoshi-win.xyz,serien.cam,serienstream.to,series9.*,serijehaha.com,sflix.pro,sflix.to,shadowrangers.*,shahed4u.*,shorterall.com,showbizbites.com,shrink.*,shrugemojis.com,southfreak.*,ssrmovies.*,stardima.*,stickerdeals.net,stopstreamtv.net,streambee.to,streamsport.*,strikeout.*,t7meel.*,talaba.su,tamilarasan.*,tamilfreemp3songs.*,tamilprint.*,tamilprinthd.*,tatabrada.tv,tcpermaculture.com,techmyntra.net,techsslash.com,tennisstreams.*,thelosmovies.com,thememypc.net,thetechzone.online,thetodaypost.com,thevideome.com,thewatchseries.live,thripy.com,topflix.*,totallyfuzzy.net,traveldesearch.com,tubidy.*,tudotecno.com,tuktukcinema.co,turcasmania.com,turkish123.com,tvhay.top,tvply.*,uctnew.com,ufcstream.*,up-load.io,up-load.one,upload-4ever.com,uploadmx.com,uploadrar.*,uploads.mobi,uptobhai.*,uptoimage.com,upvid.*,urdubolo.pk,uwatchfree.*,vanime.*,vbox7-mp3.info,vf-film.net,vibehubs.com,vikistream.com,vipstand.se,viralitytoday.com,voiranime.stream,waploaded.com,warefree01.com,watch4hd.*,watchdoctorwhoonline.com,watchimpracticaljokers.com,watchmovie.*,watchomovies.*,watchopm.net,watchseriess.net,watchtheofficetv.com,watchtvch.club,web.livecricket.is,webloadedmovie.com,whatshowto.com,wifimovies.net,wintub.com,world4ufree.*,world4ufree1.*,worldgreynews.com,wupfile.com,y-2mate.com,yomoviesnow.com,yoyofilmeys.*,yseries.tv,yt-convert.com,ytconverter.app,ytix.xyz,ytmp3cc.net,ytmp4.live,ytmp4converter.com,yts.*,yugen.to##+js(acs, parseInt, break;case $.) -! ##+js(aeld, , break;case $.) -0dramacool.net,0gomovie.*,0gomovies.*,185.53.88.104,185.53.88.204,185.53.88.15,123moviefree.*,123movies4k.net,1kmovies.*,1madrasdub.*,1movieshd.com,1primewire.*,1rowsports.com,2embed.*,2madrasdub.*,2umovies.*,4anime.*,4share-mp3.net,6movies.net,9animetv.to,720pstream.me,aagmaal.com,abysscdn.com,adblockplustape.*,ajkalerbarta.com,akstream.xyz,altadefinizione01.*,androidapks.biz,androidsite.net,animeonlinefree.org,animesite.net,animespank.com,anitube.*,aniworld.to,apkmody.io,appsfree4u.com,atomixhq.*,audioz.download,awafim.tv,bdnewszh.com,beastlyprints.com,beinmatch.*,bengalisite.com,bestfullmoviesinhd.org,betteranime.net,blacktiesports.live,brmovies.*,buffsports.stream,ch-play.com,cima4u.*,clickforhire.com,clicknupload.*,cloudy.pk,cmovies.*,computercrack.com,coolcast2.com,crackedsoftware.biz,crackfree.org,cracksite.info,cricfree.*,crichd.*,cryptoblog24.info,cuatrolatastv.blogspot.com,cydiasources.net,databasegdriveplayer.*,dirproxy.com,dood.*,dopebox.to,downloadapk.info,downloadapps.info,downloadgames.info,downloadmusic.info,downloadsite.org,downloadwella.com,ebooksite.org,educationtips213.blogspot.com,egyup.live,embed.meomeo.pw,embed.scdn.to,emulatorsite.com,essaysharkwriting.club,exploreera.net,extrafreetv.com,f1stream.*,fakedetail.com,faselhd.*,fbstream.*,fclecteur.com,file4go.*,filemoon.*,filepress.*,files.im,filmlinks4u.*,filmpertutti.*,filmyzilla.*,flexyhit.com,fmoviefree.net,fmovies24.com,fmovies.*,footyhunter3.xyz,freeflix.info,freemoviesu4.com,freeplayervideo.com,freesoccer.net,french-stream.*,fseries.org,fzlink.*,gamefast.org,gamesite.info,gdriveplayer.*,gettapeads.com,gmanga.me,gocast123.me,gofilms4u.*,gogoanime.*,gogohd.net,gogoplay5.com,gomoviz.*,gooplay.net,gostreamon.net,happy2hub.org,harimanga.com,hdmoviefair.*,hdmovies4u.*,hdmovies50.*,hdmoviesfair.*,healthnewsreel.com,hexupload.net,hh3dhay.*,hinatasoul.com,hindilinks4u.*,hindisite.net,holymanga.net,hotmasti.*,hurawatch.*,hxfile.co,isosite.org,iv-soft.com,januflix.expert,jewelry.com.my,johnwardflighttraining.com,kabarportal.com,klmanga.*,klubsports.*,kstorymedia.com,la123movies.org,lespassionsdechinouk.com,libertestreamvf.*,lilymanga.net,linksdegrupos.com.br,linkz.wiki,livetvon.*,livestreamtv.pk,macsite.info,manga1000.*,manga1001.*,mangapt.com,mangaraw.*,mangarawjp.*,mangasite.org,manhuascan.com,megafilmeshdseries.com,megamovies.org,membed.net,mlbstream.*,moddroid.com,motogpstream.*,movi.pk,moviefree2.com,movierulz.*,movies123.*,movies-watch.com.pk,movies2watch.*,moviesden.*,moviesite.app,moviesonline.fm,moviesx.org,moviezaddiction.*,msmoviesbd.com,musicsite.biz,myfernweh.com,myflixer.*,myviid.com,nazarickol.com,nbastream.*,netcine.*,nflstream.*,nhlstream.*,noob4cast.com,nsw2u.com,oko.sh,olympicstreams.me,onlinewatchmoviespk.*,orangeink.pk,owllink.net,pahaplayers.click,patchsite.net,pctfenix.*,pctnew.*,pdfsite.net,pksmovies.*,play1002.com,player-cdn.com,plyjam.*,plylive.*,pogolinks.*,popcorntime.*,poscitech.*,prmovies.*,productkeysite.com,projectfreetv.one,romsite.org,rufiguta.com,rugbystreams.*,rytmp3.io,send.cm,seriesite.net,seriezloaded.com.ng,serijehaha.com,shahed4u.*,sflix.*,shrugemojis.com,siteapk.net,siteflix.org,sitegames.net,sitekeys.net,sitepdf.com,sitesunblocked.*,sitetorrent.com,softwaresite.net,solarmovies.*,sportbar.live,sportcast.*,sportkart1.xyz,sportskart.*,sports-stream.*,ssyoutube.com,stardima.com,stream4free.live,streaming-french.*,streamers.*,streamingcommunity.*,strikeout.*,superapk.org,supermovies.org,t20cup.*,tainio-mania.online,talaba.su,tamilguns.org,tatabrada.tv,techtrendmakers.com,tennisstreams.*,theflixer.tv,thememypc.net,thetechzone.online,thripy.com,tonnestreamz.xyz,torrentdosfilmes.*,toonanime.*,travelplanspro.com,turcasmania.com,tusfiles.com,tvonlinesports.com,tvply.*,ufcstream.*,ultramovies.org,uploadbank.com,uptomega.*,uqload.*,urdubolo.pk,vudeo.*,vidoo.*,vidspeeds.com,vipbox.*,vipboxtv.*,vipleague.*,viprow.*,vumoo.to,warezsite.net,watchmovies2.com,watchmoviesforfree.org,watchofree.com,watchsite.net,watchsouthpark.tv,watchtvch.club,web.livecricket.is,webseries.club,worldcupstream.pm,y2mate.com,yesmovies.*,yomovies.*,yomovies1.*,youapk.net,youtube4kdownloader.com,yt2mp3s.*,yts-subs.com##+js(aeld, , break;case $.) -! ##+js(acs, Math, break;case $.) -01234movies.*,1234movies.*,123gostream.*,123moviesgo.*,123moviestoday.net,1link.club,1primewire.com,1stkissmanga.*,1tamilmv.*,8-ball-magic.com,adcorto.*,adsh.cc,afilmyhouse.blogspot.com,aii.sh,akwam.*,animehay.tv,animeheaven.ru,arnaqueinternet.com,asianload.*,ate9ni.com,bdiptv.*,beammeup.com.au,bitlinks.pw,bollyshare.*,casptv.xyz,ccurl.net,ceesty.com,cinen9.*,citpekalongan.com,claimcrypto.cc,clkmein.com,cllkme.com,comandotorrentshds.org,corneey.com,crazyblog.in,cuevana3.*,destyy.com,dogecoin.*,dramanice.*,earnload.*,eastream.net,ed-protect.org,enstreams.xyz,f1stream.*,fakaza.com,fbstream.*,festyy.com,filmesonlinex.*,filmy4wap1.*,filmyone.com,freelitecoin.vip,freeload.*,fzmovies.*,game3rb.com,gdirect.*,gestyy.com,gogoanimes.*,gulf-up.com,hd44.com,hdfilme.*,hdstreamss.club,hindimean.com,hindimoviesonline.*,hostxy.com,iiyoutube.com,imagenesderopaparaperros.com,inextmovies.*,japscan.ws,kinoger.to,linkflash.techipe.info,linkskat.*,liveonscore.tv,livesport24.net,mailnesia.com,mangaindo.web.id,mangastream.mobi,mazystreams.xyz,mega4up.*,megaup.net,mkvhub.*,mlbstream.*,mlsbd.*,motogpstream.*,movies4me.*,moviesmon.*,moviesshub.*,moviessquad.com,movieston.com,moviesub.is,movizland.*,mozkra.com,mp3cristianos.net,mp3songsdownloadf.blogspot.com,naijahits.com,naijal.com,nbastream.*,nbch.com.ar,nflstream.*,nhlstream.*,nowmovies.*,ocnpj.com,octanime.net,openload.*,otomi-games.com,pctfenix.*,pctnew.*,phc.web.id,plusupload.*,pregledaj.net,primeflix.website,prmovies.*,py.md,r2sa.net,racaty.*,readingbd.com,receitasoncaseiras.online,recetas.arrozconleche.info,revivelink.com,rojadirecta.*,rojadirectatv.*,romfast.com,rugbystreams.*,s2dfree.*,seriesflv.*,seriesly.*,seuseriado.*,sh.st,shavetape.*,shortpaid.com,stalkface.com,stream2watch.*,streamingworld.*,strtapeadblock.*,subtitlecat.com,summarynetworks.com,supervideo.tv,tajpoint.com,techrecur.com,tennisstreams.*,theismailiusa.org,thekingavatar.com,thenetnaija.co,tny.so,torrentfilmes4k.org,try2link.com,ufcstream.*,uhdstreams.club,upfiles.*,vdtgr.com,vedshar.com,vidcloud9.*,vidcloudpng.com,vidomo.xyz,vidsaver.net,vumoo.to,wildwap.com,worldgirlsportal.com,xmovies.*,xsanime.com,ymovies.*,ymp4.download,youtubeai.com,youtubetoany.com,youwatch.*,ytanime.tv,zone-annuaire.*,zpaste.net,zplayer.live##+js(acs, Math, break;case $.) -! ##+js(acs, String.fromCharCode, /btoa|break/) -0123movies.*,2conv.com,anonymous-links.com,bdupload.*,dl-protect.*,dl-protect1.*,doctor-groups.com,dubhappy.net,egyanime.com,filmesonlinehd1.org,firstonetv.*,flvto.biz,goalup.live,gomovieshub.io,gplinks.co,hdmovieplus.*,hdss.*,hydracdn.*,kissanime.*,linkshorts.*,manga-raw.club,mangamanga.*,modapkfile.com,movieshub.*,movs4u.*,multifaucet.org,nbaup.live,o2tvseries.website,pewgame.com,q1-tdsge.com,readm.org,shortearn.*,shrlink.top,shugraithou.com,sports24.*,url4cut.xyz,ustream.*,vexfile.com,vexmovies.*,vidlox.*,voe.sx,watchtvseries.video,yesmovies123.me,yifysubtitles.*##+js(acs, String.fromCharCode, /btoa|break/) -! ##+js(aost, Math.random, /\st\.[a-zA-Z]*\s/) -cablegratis.online,filmypur.*,kmo.to,nuroflix.*,onifile.com,oxanime.com,pelis28.*,pelisplusgo.*,pelisplusxd.*,pewgame.com,piraproxy.app,repelisgoo.*,repelisgooo.*,repelisgt.*,repelisxd.*,severeporn.com,sexphimhd.net,theproxy.*,tvply.*,updatesmovie.xyz,vidlox.*,voirseries.io,watchfree.*##+js(aost, Math.random, /\st\.[a-zA-Z]*\s/) -! ##+js(acs, globalThis, break;case) -10starhd.*,1337xx.to,alphagames4u.com,anysex.com,asianclub.*,cheatermad.com,downloadpirate.com,embed.casa,embedsito.com,exee.app,f2movies.to,fembed.com,fileone.tv,films5k.com,gcloud.live,hdss.*,imx.to,javideo.pw,javstream.top,just-upload.com,mavplay.*,moviesflix.*,ouo.*,playfinder.xyz,projectfreetv.*,qdembed.com,streamvid.net,svpri.xyz,ujav.me,videobb.*,voirseries.*##+js(acs, globalThis, break;case) -! ##+js(acs, JSON.parse, Promise) -adblockstreamtape.*,adblockstrtape.*,adblockstrtech.*,komikcast.*,mavanimes.*,stape.*,streamadblockplus.*,streamta.*,streamtape.*,streamtapeadblock.*,strtape.*,strtapeadblock.*,strtpe.*,vanime.*##+js(acs, JSON.parse, Promise) -! ##+js(acs, navigator, break;case $.) -123moviesonline.*,2embed.*,adblockeronstape.*,brbushare.*,cuatrolatastv.blogspot.com,cue-vana.com,direct-cloud.me,driveup.in,filmeseries.*,goved.org,hdmovies2.org,hdmovies50.*,letsupload.io,seriezloaded.com.ng,skymovieshd.*,slink.bid,stapewithadblock.*,streamers.watch,upbam.org,uplinkto.*,uppit.com,vadbam.com,vadbom.com,vedbam.*,vidbam.org,vidshar.org##+js(acs, navigator, break;case $.) -! ##+js(aost, Object, /(?=^(?!.*(https)))/) -songspk.*##+js(aost, Object, /(?=^(?!.*(https)))/) -! ##+js(acs, document.documentElement, break;case $.) including FingerprintJS variant -0123movie.*,10starhub.com,11xmovies.*,123chill.*,123mkv.*,123movies-free.*,123movies-org.*,123movies.*,123moviesfree.*,123movieshub.*,123movieweb.*,190.115.18.20,1cloudfile.com,1direct-cloud.*,1hd.to,1movieshd.*,1qwebplay.xyz,1stream.*,1todaypk.*,1vid1shar.space,2kmovie.*,3kmovies.*,4movierulz.*,4movierulz1.*,5movies.*,5moviess.com,6hiidude.art,720pflix.*,7moviesrulz.*,7starhd.*,7starmv.com,9anime.pe,9goals.live,9kmovies.*,9xflix.*,a8ix.*,acn.vin,adblocktape.*,adslink.pw,aflizmovies.com,ak4eg.*,algodaodocescan.com.br,aliezstream.pro,amsmotoresllc.com,andyday.tv,andydaytv.to,anihdplay.com,animecurse.cz,animeflv.*,animeonline.ninja,animesultra.net,animeunity.*,animixplay.*,aniwatch.*,aniwatchtv.to,antenasports.ru,antennasports.ru,arbsd.*,arc018.to,asianhdplay.*,atishmkv.*,b4ucast.com,backfirstwo.site,bdmusic28.*,blogesque.net,bolly2tolly.*,bollyflix.*,bowfile.com,buffsports.me,buffstreams.*,chrisellisonllc.xyz,cinemabaz.com,claplivehdplay.ru,clickndownload.*,comedyshow.to,cool-etv.net,couchtuner.*,crackstreamshd.click,crvsport.ru,cypherscans.xyz,d0000d.com,d000d.com,d0o0d.com,daddy-stream.xyz,daddylive1.*,daddylivehd.*,defienietlynotme.com,direct-cloud.*,divicast.com,divxfilmeonline.net,dlhd.*,do0od.com,dood.*,doods.pro,dooood.*,downloadhub.*,ds2play.com,ds2video.com,dwlinks.buzz,egybest.*,embed4u.xyz,embedme.*,embedpk.net,embedplayer.*,embedstream.me,embtaku.*,emovies.*,encurtandourl.com,engvideo.net,esportivos.*,ev01.sx,exee.app,explorosity.net,f123movies.com,faselhd-watch.*,faselhd.*,faselhdwatch.*,file-upload.com,filecrypt.*,filemooon.*,film4e.com,filmeserialeonline.org,filmy-hit.*,filmygod.*,filmyhitt.com.in,finfang.*,fiveyardlab.com,flashsports.org,flixhq.*,flostreams.xyz,flybid.net,fmembed.cc,fmoonembed.*,fmoonembed.pro,fmoviesfree.*,fmovieszfree.com,focus4ca.com,foot2live.cc,footybite.to,footyhunter.lol,forex-golds.com,forex-trnd.com,fr.streamon-sport.ru,freemovies.*,freetvsports.com,french-streams.cc,fsl-stream.lu,fslinks.org,fstream365.com,futemax.zip,game-2u.com,gamovideo.com,gdflix.*,gdrivelatino.net,gdrivelatinohd.net,gdtot.*,gembedhd.com,gocast.pro,gocast2.com,godzcast.com,gogohd.*,gokutv.*,gomovies.*,goone.pro,gotaku1.com,hamburgerinsult.com,harimanga.com,hdfriday.*,hdhub4u.*,hdmoviehub.*,hdmovies23.*,hdtoday.tv,hellnaw.*,hexload.com,hianime.*,hihihaha1.xyz,hitsports.pro,hollymoviehd.*,huboflink.in,hurawatchz.to,iflixmovies.*,isaidub6.net,itopmusic.com,itopmusics.com,japscan.lol,jockantv.com,jpopsingles.eu,kaido.to,kerapoxy.*,kickassanime.*,klubsports.*,koora.vip,kunmanga.com,kuttymovies1.com,lewblivehdplay.ru,ligaset.com,likemanga.io,ling-online.*,linkedmoviehub.top,linkupload.xyz,lrepacks.net,lulustream.com,luluvdo.com,mangaraw.*,mangareader.to,maxstream.*,mcrypto.club,medeberiyas.com,mega4upload.com,megadb.net,megafilmeshd50.com,megaupto.com,mhdsports.*,mhdsportstv.*,mhdtvsports.*,mkvcinemas.*,mkvmoviespoint.autos,mlwbd.*,mmastreams.me,moonembed.*,movembed.cc,moviebaaz.*,moviekids.tv,movielinkhub.xyz,movieplay.*,movies2k.*,movies4u.*,movies4u3.*,moviesda4.*,movieshd.watch,moviesjoy.*,moviesrulz.*,moviestowatch.tv,moviesverse.*,movieuniverse.*,moviezwap.*,mp3fusion.net,mp4upload.com,mreader.co,multicanais.*,mydownloadtube.*,myflixer.*,myflixertv.to,myflixerz.*,mylivestream.pro,mywatchseries.*,naijachoice.com.ng,naijanowell.com,netfilmes.org,netizensbuzz.com,nflstreams.me,niadd.com,niaomea.me,nizarstream.com,noblocktape.*,nolive.me,nowmaxtv.com,nowsports.me,nowsportv.nl,odiasia.sbs,ogomovies.*,oii.io,olalivehdplay.ru,olympicstreams.me,onepiecepower.com,optimizepics.com,pahe.plus,pesktop.com,pkspeed.net,pladrac.net,playgo1.cc,poclivetv.com,poscitechs.*,project-free-tv.*,projectfreetv.*,putlocker.*,qqwebplay.xyz,radamel.icu,rahim-soft.com,reddit-soccerstreams.com,repack-games.com,rgeyyddl.*,roystream.com,s.to,s3taku.com,sbnmp.bar,send.cm,serienstream.*,series2watch.*,seriesonline.*,seriestv.org,shadowrangers.live,shahed4u.*,shaheed4u.*,share.filesh.site,sharedisk.*,shavetape.*,shinden.pl,shoot-yalla.live,shortenlinks.top,sinvida.me,smoner.com,soap2day-online.com,soaper.tv,soccer100.shop,soccerstream100.to,sportsbuff.stream,sportshub.*,ssoap2day.*,stakes100.xyz,stfly.*,strcloud.*,streamadblocker.*,streambtw.com,streamcloud.*,streamhd247.*,streamhub.*,streamnoads.com,streamonsport99.*,streamtape.*,streamvid.net,strtapewithadblock.*,sulleiman.com,swatchseries.*,tamilprint25.com,tapeadsenjoyer.com,tapeadvertisement.com,tapeantiads.com,tapeblocker.com,tapelovesads.org,tapenoads.com,tapewithadblock.org,techgeek.digital,temp.modpro.co,tennisonline.me,theflixertv.to,thenextplanet1.*,tii.la,tnhitsda.net,todaypk.*,topcartoons.tv,torovalley.net,totalsportek.*,trendytalker.com,turcasmania.com,tvfutbol.info,tvpclive.com,up-4ever.net,upbaam.com,updown.cam,uploadhub.*,uproxy.*,uptomega.net,uupbom.com,vadbam.net,vavada5com.com,vdbtm.shop,veev.to,vegamovie.*,vid-guard.com,vidcloud9.*,video-seed.xyz,videoplayer.*,vido.*,vidspeed.cc,vidsrc.*,vidstreams.net,vidtube.one,viidshar.com,vikistream.com,vipbox.*,vipleague.*,vixcloud.co,volokit2.com,vpcxz19p.xyz,watch-free.tv,watchcartoononline.*,watchmovierulz.*,watchmovies.*,watchomovies.*,watchonlinemoviespk.*,watchop.live,watchseries1.*,watchseries.*,watchtvchh.xyz,wecast.to,worldstreams.click,xsportbox.com,yesmovies4u.*,yu2be.com,z12z0vla.*,zamundatv.com,zvision.link##+js(acs, document.documentElement, break;case $.) -! ##+js(acs, document.createElement, ;}}};break;case $.) -moviesnation.*##+js(acs, document.createElement, ;}}};break;case $.) -atlaq.com,bolly4umovies.*,douploads.net,moalm-qudwa.blogspot.com,shurt.pw##+js(aopr, zfgformats) -123movieshub.*,animeunity.*,bflix.*,cima-club.*,flixhq.*,hindilinks4u.*,mcloud.bz,t7meel.*,theflixer.tv,vidstream.pro##+js(aopr, zfgstorage) -01fmovies.com,123moviesfun.is,bmovies.*,bolly4umovies.*,putlocker.*##+js(acs, Math, XMLHttpRequest) -egydead.*##+js(acs, Promise, JSON.parse) -arabseed.*,liiivideo.com,seeeed.*##+js(acs, Promise, break;case $.) -adblockeronstreamtape.*,bowfile.com,cloudvideo.tv,cloudvideotv.*,embedstream.me,hiphopa.net,niaomea.me,noblocktape.*,nolive.me,send.cm,torrentmac.net,tusfiles.com,vipleague.*,ziperto.com##+js(acs, JSON, break;case) -isaimini.*##+js(aost, Object, inlineScript) -pepperlive.info##+js(acs, Object, break;case $.) -filmywap.*##+js(acs, Object, XMLHttpRequest) -coinfaucet.io##+js(acs, decodeURI, zfgloadedpopup) -bitfly.io,pelisplus.*,pelisplus2.*##+js(aost, Math.random, /\st\.[a-zA-Z]*\sinlineScript/) -shahiid-anime.net##+js(aost, Object, /(?=^(?!.*(https)))/) -||flixhq.*/loadme/ -! pp_blob -||filmovi.ws^$csp=script-src * 'unsafe-inline' -||serijefilmovi.com^$csp=script-src * 'unsafe-inline' -! pp server -/^https?:\/\/[a-z]{8,15}\.[a-z]{2,3}\/5\/\d{6,7}(?:\?_=\d+)?$/$script,xhr,3p -/^https?:\/\/[a-z]{8,15}\.[a-z]{3}\/5\/\d{7}\/\?/$xhr,3p -/^https?:\/\/[-a-z]{8,15}\.(?:com|net)\/400\/\d{7}$/$script,3p -/^https?:\/\/[-a-z]{8,15}\.(?:com|net)\/401\/\d{7}$/$script,3p -/^https?:\/\/[-a-z]{8,15}\.(?:com|net)\/500\/\d{7}\?/$xhr,3p -/^https?:\/\/[a-z]{8,15}\.(?:com|net)\/tag\.min\.js$/$script,3p -||go.bundlebyte.net^ -?oo=1^$xhr,3p -||ashacauhejoo.com^ -||eavefrom.net^ -||ouxourtoo.com^ -||reechoat.com^ -||rghptoxhai.com^ -!!! other filters for pp -*$3p,xhr,script,denyallow=arc.io|cdnjs.cloudflare.com|cloudflare.net|fastly.net|fontawesome.com|jwpcdn.com,domain=files.im -filmpertutti.*##.ads -filmpertutti.*##.no_pop -*$script,3p,denyallow=google.com|youtube.com,domain=nkiri.com -moviespapa.*##+js(aost, XMLHttpRequest, /inlineScript|stackDepth:1/) -/popunder.js$domain=linkbox.to -*$3p,denyallow=bootstrapcdn.com|cloudflare.com|faselhd.club|fastly.net|gstatic.com|jwpcdn.com,domain=embed.scdn.to -kuttymovies.*##+js(aost, XMLHttpRequest, inlineScript) -videoplayer.*##+js(aopr, open) -*$xhr,3p,domain=dropload.io -||pnd.tl/*.gif$image -french-stream.*###banning -aagmaal.*##+js(rpnt, script, break;case $.) -||linkspop.xyz^$csp=script-src 'self' -goku.sx##+js(aost, Object, inlineScript) -*$xhr,3p,domain=nxbrew.com -! *** uAssets:filters/filters-2021.txt *** -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=ottwow.com,redirect-rule=google-ima.js -@@||backlinkping.com^$ghide -@@||deine-tierwelt.de^$ghide -deine-tierwelt.de##.OUTBRAIN -deine-tierwelt.de##.header-leaderboard -deine-tierwelt.de##.js-sticky-ad -||sexgamefun.com/images/sex-games.gif -||sexgamefun.com/images/villa/ -sexgamefun.com##.footer_banner -sexgamefun.com##.hidden-xs > .well:has(> a > img) -haho.moe##+js(aeld, mouseup, decodeURIComponent) -haho.moe##div:has(> div[title="Click to Close the Ad"]) -haho.moe##[href^="//"][style*="position: fixed;"] -*$script,3p,denyallow=fluidplayer.com|cdn77.org|gstatic.com|hwcdn.net|recaptcha.net,domain=haho.moe -! freeporncave.com auto-redirect -freeporncave.com##+js(nostif, location.replace, 300) -! empregoestagios.com/everydayonsales.com anti-adb -empregoestagios.com,everydayonsales.com##+js(nostif, css_class.show) -vectogravic.com##+js(acs, eval, replace) -pornorips.com##+js(acs, puShown, /doOpen|popundr/) -kusonime.com##+js(rpnt, script, /\(window\.show[^\)]+\)/, (true), condition, classList.add) -kusonime.com##+js(nostif, css_class.show) -kusonime.com##+js(set, showada, true) -kusonime.com##+js(set, showax, true) -kusonime.com##+js(aopw, app_advert) -kusonime.com##.iklanads -@@||kusonime.com^$script,1p -@@||nyaa-tan.my.id/js/$script,3p,domain=kusonime.com -cararegistrasi.com##+js(nano-sib, timer) -cararegistrasi.com##+js(nowoif) -cararegistrasi.com##a[href="https://bahasteknologi.com/"] -pornhd8k.*###invideo_wrapper -pornhd8k.net##.content-kus -xxvideoss.org##+js(acs, String.fromCharCode, 'shift') -||xxvideoss.org/wp-content/uploads/*/bannerrtx.jpg$image,1p -/player/html.php?aid=post_roll_html^$redirect=noopframe,frame,1p -/player/html.php?aid=start_html&*&referer=$frame,1p -/player/html.php?aid=pause_html&*&referer=$frame,1p -/player/html.php?aid=pre_roll_html&*&referer=$frame,1p -xgirls.webcam###kt_player > div[style="position: absolute; inset: 0px; z-index: 170;"] -donghuanosekai.com##+js(nosiif, visibility, 1000) -! bitsfree.net/getdoge.io/qashbits.com anti-adb -qashbits.com##+js(aopr, NoAdBlock) -qashbits.com##.mx-auto -modapk.link##+js(aopr, app_vars.force_disable_adblock) -modapk.link##+js(set, blurred, false) -! e-sushi .fr popup -e-sushi.fr##+js(ra, onclick, body) -! encodinghub. com anti adb -encodinghub.com##+js(aeld, load, nextFunction) -freeindianporn.mobi##+js(aeld, /.?/, popMagic) -||xedo.me^$3p -radionylive.com,radioitalylive.com,radiolovelive.com,radiocountrylive.com,radiosymphony.com,miamibeachradio.com,radiorockon.com,radioitaliacanada.com,radioitalianmusic.com,radioamericalatina.com,radiosantaclaus.com,radionorthpole.com,radionatale.com##+js(aopr, adp) -radionylive.com,radioitalylive.com,radiolovelive.com,radiocountrylive.com,radiosymphony.com,miamibeachradio.com,radiorockon.com,radioitaliacanada.com,radioitalianmusic.com,radioamericalatina.com,radiosantaclaus.com,radionorthpole.com,radionatale.com##[id^="ads-"] -! absolugirl .com ads -absolugirl.com,absolutube.com##+js(aopr, document.dispatchEvent) -@@||chaturbate.com/*embed$frame,domain=absolugirl.com -! allafricangirls .net ads + popups -allafricangirls.net##+js(aopr, document.dispatchEvent) -allafricangirls.net##[id^="exo_"] -allafricangirls.net##[src*="/banner"] -elvocero.com##+js(acs, __tnt, compatibility) -! popups, popunders, ads -dirtyfox.net##+js(aopr, decodeURI) -booru.eu,borwap.xxx,centralboyssp.com.br,czxxx.org,filmdelisi.co,filmovitica.com,foxtube.com,hd-xxx.me,ipornxxx.net,itsfuck.com,javembed.*,javideo.pw,kissanime.*,lametrofitness.net,longporn.xyz,matureworld.ws,mp3-convert.org,sexy-games.*,stilltube.com,streamm4u.club,teenage-nudists.net,xvideos.name,xxx-videos.org,xxxputas.net,youpornfm.com,maxtubeporn.net,vidsvidsvids.com##+js(nowoif) -1youngteenporn.com##+js(aeld, popstate) -asianpornphoto.net,freexxxvideos.pro,videosxxxporno.gratis,nude-teen-18.com##+js(aopr, document.dispatchEvent) -123strippoker.com,babepedia.com,boobieblog.com,borwap.xxx,chicpussy.net,gamesofdesire.com,hd-xxx.me,hentaipins.com,longporn.xyz,picmoney.org,pornhd720p.com,sikwap.xyz,super-games.cz,xxx-videos.org,xxxputas.net##+js(aopr, loadTool) -blackpornhq.com,xsexpics.com,ulsex.net,wannafreeporn.com##+js(aeld, , pop) -camgirlbang.com,casting-porno-tube.com##+js(aopr, ExoLoader) -fetish-bb.com,rumporn.com,soyoungteens.com,zubby.com##+js(aeld, getexoloader) -hentaipins.com##+js(acs, pop_init) -hentaipins.com##+js(aopr, popundrCheck) -ekasiwap.com,pornbox.cc##+js(acs, decodeURI, decodeURIComponent) -pornvideoq.com##+js(aopr, history.replaceState) -rexxx.org##+js(aopr, rexxx.swp) -stvid.com##+js(noeval) -hypnohub.net,oldies.name,xnxxporn.video,xxxdessert.com,xxxshake.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -freepornxxxhd.com##+js(acs, String.fromCharCode, constructor) -hot-cartoon.com,richhioon.eu,wowstream.top##+js(aopr, BetterJsPop) -123movieshd.*##+js(aopr, mm) -123movieshd.*##+js(set, p18, undefined) -cfake.com###over -theyarehuge.com##+js(acs, Object.defineProperty, clickHandler) -*$script,3p,denyallow=bootstrapcdn.com,from=youdbox.* -! 123movies4u. site => player eplayvid. net popups -porntry.com##.js-mob-popup -erotic-beauties.com,hardsex.cc,sex-movies.biz,sikwap.xyz,tube18.sexy##+js(acs, pop_init) -itsfuck.com,stilltube.com##+js(ra, onclick, .previewhd > a) -nicy-spicy.pw##+js(aeld, /(?:click|touchend)/, _0x) -blackcunts.org,finderporn.com##+js(acs, onbeforeunload) -dansmovies.com##+js(aopr, popunder) -hentaianimedownloads.com##+js(acs, puShown, /doOpen|popundr/) -grosnews.com##+js(acs, adcashMacros) -xxxymovies.com##+js(set, flashvars.adv_pause_html, '') -dirtyship.com##+js(acs, onload) -hotscopes.*##+js(aopw, puShown) -afrodity.sk,brato.bg,cinema21fullmovie.com,cotannualconference.org.uk,couponsuniverse.com,cycraracing.com,dahh.net,dlhe-videa.sk,elmalajeno.com,extreme-board.com,free-famous-toons.com,istanbulescortnetworks.com,ok-th.com,payt.com,pcparsi.com,podkontrola.pl,redtubemov.com,shtab.su,spiritword.net##+js(acs, document.createElement, 'script') -elmalajeno.com##^script:has-text(d.createElement('script')) -elmalajeno.com##^script:has-text(d.createElement(\'script\')) -@@||onlinefetishporn.cc^$ghide -@@||streamextreme.cc^$ghide -shegotass.info##+js(aopr, popunder) -shegotass.info##+js(set, flashvars.adv_pre_vast, '') -xxxshake.com##+js(set, flashvars.adv_pause_html, '') -tubsxxx.com##+js(nostif, window.location.href) -animeplanet.cc##+js(aopw, __C) -camlovers.tv##+js(acs, crakPopInParams) -camlovers.tv##+js(set, flashvars.protect_block, '') -anybunny.com##td[width="360"] -babepedia.com##.sidebar_block > a[rel="nofollow noopener"] -borwap.xxx##.embedright -cartoonvideos247.com##.adv -cartoonvideos247.com##.sponsor -cartoonvideos247.com##.topad -cuckold-videos.org###v-ad -erotic-beauties.com##.sidebar > .widget_text -ezjav.com###preroll -ezjav.com##center -ezjav.com##div[style="overflow: hidden !important;margin-bottom:8px;"] -freexxxvideos.pro##.sidban -hd-xxx.me##.videoOverAdBig -hdjavonline.com##.happy-inside-player -hentaipins.com##.sidebar-wrapper.widget_text -hentaipins.com##.thumb-ad -hotntubes.com##td[width="360"] -hqporner.top##.box_b > small -instapornvideos.com##.container-sts-bl -javbest.xyz##.adsvideo -javrave.club,javraveclub.com##.leader_banner -kingcomix.com##[href^="//"][rel="nofollow norefferer noopener"] -longporn.xyz##[href="http://toplivesexcams.net"] -movies18.net##[href*="/go/"] -nude-teen-18.com##.cht6 -nude-teen-18.com##.rtrrtrlight-in-2 -pornteens.mobi##.fixx.chtrb -pornvideoq.com###playerOverlay -pornvideoq.com##.h250 -rumporn.com,stilltube.com###floaterRight -sexpuss.org##.bn1 -sexpuss.org##.tu-sexc3 -sexroom.xxx##.table -sissytube.net##a[href^="http://refer.ccbill.com/"] -thecartoonporntube.com##[href="/go/tube.php"] -thecartoonporntube.com###advertising [href] -vidsvidsvids.com##.zone -womennaked.net##.hrcht6 -pt.potwm.com##.pausedView -pt.potwm.com##.shown.visible.onlineIndicator -||protoawegw.com^$3p -tubsxxx.com##.aBlock -tubsxxx.com##.videoAd -pornez.net###cb00 -pornez.net###cb01 -cutscenes.net##.item:has(> div[id^="ts_ad_native"]) -cutscenes.net##.item:has(> iframe[src^="https://go."]) -gotocam.net,pornxday.com,twinkybf.com##.happy-sidebar -###playerOverlay[style="position:absolute; z-index:3"] -roshy.tv##.roshy-widget -roshy.tv##.beeteam368-player-sub-element -*$script,3p,denyallow=cloudflare.com|cloudflare.net|fastly.net|jsdelivr.net|unpkg.com|zencdn.net,domain=xxxfiles.com -*$script,domain=hoporno.net,3p,denyallow=googleapis.com -/istripper*$image,domain=hentaipins.com -/popup/exo-ads.$frame,1p -/xxx.js|$script,1p -||av-uncen.com/img/banner$image -||av-uncen.com/wp-content/uploads/*.gif$image -||brazz-girls.com/chaturbate/ -||brazz-girls.com/scripts/yall.*.js -||camgirlbang.com/sparkling-$script,1p -||camgirlbang.com/crimson-$script,1p -||casting-porno-tube.com/old-frog-d67e/ -||elitepaysites.com/photos/*.gif$image -||ezjav.com/p.js -||fapfappy.com/*.php$script,1p -||freepornxxxhd.com^*/exopop.js -||hentaipins.com/*.php$script,1p -||hentaipins.com/pop.js -||i.imgur.com^$domain=anime-hentai.jp.net|ezjav.com -||ibradome.com/ba/chargi.js -||imgbox.com/ae/$domain=matureworld.ws -||instapornvideos.com/back.js -||jav-xx.com/wp-content/uploads/*.gif$image -||jorpetz.com/kahitano/banner.gif -||jvembed.com/asset/bann.js -||katestube.com/jsb/js_script.js -||mixxporn.com/b1.php -||pornhex.com/nb/ -||pornofaps.com/frosty-bread-04ce/ -||seed69.com/wp-content/uploads/*.gif$image -||sexyaporno.com/chat_$script -||tb.fuckandcdn.com/tbstatic*/tryboobs/compiled/script. -||thecartoonporntube.com/*.gif$image -||vidsvidsvids.com/go/ -||xszav.club/nb/ -||xxxdessert.com/*_fe.js -||camlovers.tv^$script,1p -@@||camlovers.tv/player/kt_player.js -/flo.js| -||goryachie-foto.net^$3p -||pub.contexthub.net^ -||ptwmstc.com/npt/banner/ -||tabooporn.tv^$3p -||xmorex.com^$3p -||adbetnetwork.com^$3p -##.full-ave-pl -##.full-bns-block -##.vertbars -##.video-brs -/safu/safu.js -! exit prevention, redirect, popups -/tp/filter.php?pro= -/myvids/rek/*$frame,script,1p -/myvids/show.php$frame,1p -/myvids/click/*$script,1p -###plban -##div[class$="player-promo-col"] -##.player-bns-block -/zlk/zlk.js -/pop1.js|$script,1p -||easyads28.*^ -! adultsclips.com,cutewifes.com,sexenvelope.com,sexpun.com -.com/fr.js|$1p -.com/v.js?v=3|$1p -! www.xxxvideor.com -/static/js/abb.js|$script,1p -! sextubexxl.com -/common-js/exit/om2.min.js -||sextubexxl.com/includes/scripts/ -! wikiporn.tv etc. -/nb/thejsfile.js -m-hentai.net##div.leaderboardcontainer -m-hentai.net##div[class^="landingpageadcontainer_iframe"] -||m-hentai.net/JS/exoclick%20popunder.js -jetpunk.com##+js(no-xhr-if, prebid) -jetpunk.com##+js(cookie-remover, PageCount) -jetpunk.com##+js(set-local-storage-item, PageCount, $remove$) -jetpunk.com##+js(set, asc, 2) -@@||jetpunk.com^$script,1p -@@||jetpunk.com^$ghide -jetpunk.com##.banner-ad-outer -jetpunk.com##.box-ad-inner -jetpunk.com##.box-ad-outer -jetpunk.com##.banner-x-outer -jetpunk.com##.support-beg -imgur.com##+js(set, ADBLOCKED, false) -! reported -imgur.com,imgur-com.translate.goog##+js(set-cookie, WHITELISTED_CLOSED, 1) -! thodkyaat.com ad-reinsertion -thodkyaat.com##pp -@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$xhr,domain=comidoc.net -comidoc.net#@#.googlead -@@||doubleclick.net^$xhr,domain=comidoc.net -comidoc.net##div[style="text-align: center; margin-left: auto; margin-right: auto; min-height: 266px; max-width: 100vw;"] -comidoc.net##div:has(> .adsbygoogle) -comidoc.net##div[style="text-align:center;margin-left:auto;margin-right:auto;min-height:266px;max-width:90vw"] -forum.gigabyte.us###ad1 -forum.gigabyte.us##[id^="ad-desktop-bottom"] -forum.gigabyte.us###remove_ads_link -! 1primewire .com popups ads -||1primewire.com/addons/$image -1primewire.com##[id]:has(> [class="close ico"]) -*$script,domain=novelmultiverse.com,redirect-rule=noopjs -@@||novelmultiverse.com^$ghide -novelmultiverse.com##+js(no-xhr-if, ads) -novelmultiverse.com##+js(aeld, , removeChild) -novelmultiverse.com##.adace-slideup-slot-wrap -! cyberdefensemagazine.com anti-adb -cyberdefensemagazine.com##[href^="https://www.coresecurity.com/"] -cyberdefensemagazine.com###bsaIframe -! kisahdunia.com anti-adb -kisahdunia.com##+js(aeld, DOMContentLoaded, adsBlocked) -kisahdunia.com##+js(aost, setTimeout, adsBlocked) -kisahdunia.com##.textwidget -kisahdunia.com##[href^="https://mawaddahcinta.com/"] -kisahdunia.com##[href^="https://www.samsung.com/"] -hentai-party.com,hentaicomics.pro,xxx-comics.pro##+js(set, adb, 0) -hentaicomics.pro##+js(nowoif) -hentai-party.com,xxx-comics.pro##figure.mix > .tac -||hentai-party.com/*?view=$doc,other,removeparam=view -||hentaicomics.pro/*?code=$doc,other,removeparam=code -||xxx-comics.pro/*?view=$doc,other,removeparam=view -withukor.com##+js(acs, document.addEventListener, google_ad_client) -aagmaal.xyz##+js(nostif, css_class.show) -*.gif$domain=aagmaal.*,image -taming.io##+js(no-xhr-if, ads) -||api.adinplay.com^$redirect-rule=noopjs,script,domain=taming.io -taming.io###preroll -taming.io###main-box > #middle-wrap ~ div[id$="-left"] -taming.io###main-box > #middle-wrap ~ div[id$="-bottom"] -! y2mate.guru popups -y2mate.guru##+js(nowoif) -javstream.top##+js(set, clientSide.adbDetect, noopFunc) -javstream.top##+js(nowoif) -javstream.top##+js(aopr, jwplayer.utils.Timer) -javstream.top##+js(aopr, __Y) -! todaypk related -todaypk.*,todaypktv.*,1todaypk.*,watchtodaypk.com##+js(nowoif) -1todaypk.*,todaypk.*,watchtodaypk.com##[href="/watchnow.php"] -todaypk.*##[href="/watchfree.php"] -todaypktv.*##.ad_watch_now -todaypktv.*##.hd-buttons1 -||multipledrawers.com^ -faptitans.com,pussysaga.com##.cross-promo-bnr -||faptitans.com^*/rc/logo.jpg -||pussysaga.com^*/footer/logo_ps.jpg -||theonlygames.com/ps_banner/ -world4.eu##+js(aost, String.prototype.charCodeAt, ai_) -world4.eu##+js(aopr, ai_run_scripts) -||doubleclick.net/tag/js/gpt.js$object,redirect=noop.js,domain=world4.eu -*$image,3p,redirect-rule=1x1.gif,domain=world4.eu -laptrinhx.com##+js(nosiif, clearInterval(i), 1000) -laptrinhx.com##.ads -healthtune.site##+js(nostif, nextFunction, 2000) -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=bbcamerica.com -babestube.com,momvids.com,porndr.com##+js(aopr, decodeURI) -babestube.com,momvids.com,porndr.com##div[style="position: absolute; inset: 0px; overflow: hidden; z-index: 160; background: transparent none repeat scroll 0% 0%; display: block;"] -babestube.com##[src^="https://www.babestube.com/player/html.php"] -babestube.com,momvids.com##.aside -babestube.com,momvids.com##.spot > div -momvids.com##[src^="https://www.momvids.com/player/html.php"] -porndr.com##div.opt -porndr.com##.we_are_sorry -||porndr.com/*/*.php^ -||babestube.com/bt*/bt.js -||momvids.com/mm*/mv.js -! Mostly taken from AG and seen on various NSFW sites -/_a_ta/s/s/* -/a/ipn/js/* -/a/pop/js/* -/local_p.js^ -/local_ssu.js| -/s/js/ssu.v2.js?v= -/s/s/sui.php -/s/s/suo.php -/s/s/supc.php -/s/s/supv.php -/s/su.php?t= -/javascript/fropo.js -/s/s/js/m/custom.js? -/s/s/js/m/custom_advanced.js? -/s/s/js/m/im.js? -/s/s/js/ssu.v2. -/s/s/js/m/push.js? -/a/na/js/*$3p -deviants.com##+js(aopr, decodeURI) -deviants.com##div[style="position: absolute; inset: 0px; overflow: hidden; z-index: 160; background: transparent none repeat scroll 0% 0%; display: block;"] -deviants.com##.aside -deviants.com##.spot > div -||deviants.com/player/html.php^ -||deviants.com/dv*/dv.js -totv.org###ad -silverpic.com##+js(aopr, loadTool) -||imgbaron.com/banner.jpg -*$script,3p,domain=silverpic.com -manhwa18.cc##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -||a.realsrv.com/nativeads-v2.js$xhr,redirect=noop.txt -! healthelia .com anti adb -healthelia.com##+js(nostif, google_jobrunner) -! happypenguin.altervista .org anti adb -happypenguin.altervista.org##+js(nostif, adb) -! dudestream .com anti adb -dudestream.com#@#.adsBanner -dudestream.com##+js(norafif, style.opacity) -dudestream.com##body > div[id^="\30"][class^="popup0"][class$="wrap"] -elektrikmen.com##+js(aopr, b2a) -||wheelwheel.space^$3p -cybermania.ws##+js(acs, document.getElementById, showModal, /^data:text\/javascript/) -cybermania.ws##+js(no-xhr-if, /doubleclick|googlesyndication/) -cybermania.ws##+js(no-fetch-if, doubleclick.net/instream/ad_status.js, war:doubleclick_instream_ad_status.js) -cybermania.ws##+js(aost, document.getElementsByTagName, adsBlocked) -*$script,redirect-rule=noopjs,domain=cybermania.ws -love4porn.com##+js(set, flashvars.popunder_url, '') -love4porn.com##div[style="position: absolute; inset: 0px; overflow: hidden; z-index: 160; background: transparent none repeat scroll 0% 0%; display: block;"] -love4porn.com##.sponsor -love4porn.com##.table -crazyporn.xxx##div[style="position: absolute; inset: 0px; overflow: hidden; z-index: 160; background: transparent none repeat scroll 0% 0%; display: block;"] -crazyporn.xxx##.table -crazyporn.xxx##.sponsor -crazyporn.xxx##.item:has(> script[src^="/ai/"]) -freehardcore.com##+js(aopr, decodeURI) -||freehardcore.com/player/html.php^ -freehardcore.com##div[style="position: absolute; inset: 0px; overflow: hidden; z-index: 160; background: transparent none repeat scroll 0% 0%; display: block;"] -freehardcore.com##.aside -freehardcore.com##.spot -suicidepics.com##+js(nostif, css_class.show) -*$script,3p,domain=suicidepics.com -||adshort.tech^$3p -! down.fast-down.com anti adb -@@||down.fast-down.com^$ghide -down.fast-down.com##div[style="width:336px; height:280px; background-color:#ffffff; text-align:center"] -! Remove if fixed in VIE list -jav720.net,phimsexkhongche.net##.float-ck -phimsexkhongche.net##.under-video-block > center -jav720.net##.video-player-area > center -||i.pinimg.com/564x/$domain=jav720.net|phimsexkhongche.net -! jetseotools .com anti adb -@@||jetseotools.com^$ghide -jetseotools.com##ins.adsbygoogle -assia1.tv,usagoals.*##+js(nowoif) -||cdn777.net/site/binance-banner.jpg$image -||assia1.tv/*.html$frame,1p -assia1.tv##[class^="ban"] -@@||foxgreat.com^$ghide -haoweichi.com##+js(aopr, onload) -haoweichi.com##.ad2 -okteve.com##+js(acs, String.fromCharCode, marginheight) -squirtplus.com#@#.adsBanner -msubplix.com##+js(nowoif) -||msubplix.com/cdn-cgi/trace$xhr,1p -arab4media.com##+js(acs, addEventListener, nextFunction) -! myyouporn .com popups -myyouporn.com##+js(nowoif) -! pinoyalbums. com anti adb -*$script,redirect-rule=noopjs,domain=pinoyalbums.com -pinoyalbums.com##+js(aeld, , adb) -easylinkref.com##+js(nano-sib, , , 0) -easylinkref.com##center > a[href][target=_blank] > img -w3layouts.com##+js(nostif, show) -desishoot.fun##.islemag-content-right > .widget_custom_html -||getsexgames.com/templates/sexgames/$image,1p -getsexgames.com##.center > table[cellspacing="5"] > tbody > tr:last-child:has(> td > h1) -getsexgames.com##.center > table[cellspacing="0"]:last-child > tbody > tr:last-child -getsexgames.com##.leftMenu .menuHeadline:has-text(3D) -getsexgames.com##.menuAff -getsexgames.com##.menuPointPic -adultgamestop.bigtopsites.com##img[width="558"][height="149"]:upward(td[style]) -pornachi.com##.table -pornachi.com##.sponsor -##.wps-player__happy-inside -1shorten.com##+js(aopr, app_vars.force_disable_adblock) -1shorten.com,publicananker.com,rodjulian.com##+js(nosiif, visibility, 1000) -1shorten.com##+js(set, blurred, false) -dreamcheeky.com,fidlarmusic.com,publicananker.com,rezence.com,rodjulian.com##+js(nano-sib, counter, 2000) -rodjulian.com##+js(noeval) -1shorten.com##.banner -rodjulian.com###baolink1s -! hd-pornos. com => info -hd-pornos.*##.vjs-overlayed -hd-pornos.*###spezial_column -hd-pornos.*##div[id="wrapper_content"] > aside -pornojenny.com##+js(nostif, checkVisible) -pornojenny.com##.spc_height_80 -pornojenny.com##.vjs-overlay -||pornojenny.com/cpanel/*.php$xhr -||chatntr.com/widget?affiliate$frame,3p -pornojenny.com##div[id="wrapper_content"] > aside -pornojenny.com###wa_10 -@@||pornojenny.com^$ghide -pornojenny.com##[href^="https://www.handy-sextreffen.info/"]:upward(.grid_box) -! kickass sites -*$script,1p,domain=~kat.pink|~kat.computer|~kat.am|~kat.at|~kat.directory|~kat.rip|~kat.studio|~kickass.codes|~kickass.website|kat.*|katbay.*|kickass.*|kickasshydra.*|kickasskat.*|kickass2.*|kickasstorrents.*|kat2.*|kattracker.*|thekat.*|thekickass.*|kickassz.*|kickasstorrents2.*|topkickass.*|kickassgo.*|kkickass.*|kkat.*|kickasst.*|kick4ss.*|kickassbay.*|torrentkat.*|kickassuk.*|torrentskickass.*|kickasspk.*|kickasstrusty.*|katkickass.*|kickassindia.*|kickass-usa.*|kickassaustralia.*|kickassdb.*|kathydra.*|kickassminds.*|katkickass.*|kickassunlocked.*|kickassmovies.*|kickassfull.*|bigkickass.*|kickasstracker.*|katfreak.* -kat.*,kickass.*,kickass2.*,kickasstorrents.*,kat2.*,kattracker.*,thekat.*,thekickass.*,kickassz.*,kickasstorrents2.*,topkickass.*,kickassgo.*,kkickass.*,kkat.*,kickasst.*,kick4ss.*,katbay.*,kickasshydra.*,kickasskat.*,kickassbay.*,torrentkat.*,kickassuk.*,torrentskickass.*,kickasspk.*,kickasstrusty.*,katkickass.*,kickassindia.*,kickass-usa.*,kickassaustralia.*,kickassdb.*,kathydra.*,kickassminds.*,katkickass.*,kickassunlocked.*,kickassmovies.*,kickassfull.*,bigkickass.*,kickasstracker.*,katfreak.*##[style*="decoration"]:not([style^="width"]) -kat.*,katbay.*,kickass.*,kickasshydra.*,kickasskat.*,kickass2.*,kickasstorrents.*,kat2.*,kattracker.*,thekat.*,thekickass.*,kickassz.*,kickasstorrents2.*,topkickass.*,kickassgo.*,kkickass.*,kkat.*,kickasst.*,kick4ss.*##[href="/k.php?q=q"] -@@||kickasstorrents.*/static/js/all.js$script,1p -kickass.*###notification-bar -kickass.*##.alert -kickass.*##+js(rmnt, style, text-decoration) -kickass.*##[id]:matches-attr(id=/[a-zA-Z]{40,}/) -kat.*,katbay.*,kickass.*,kickasshydra.*,kickasskat.*,kickass2.*,kickasstorrents.*,kat2.*,kattracker.*,thekat.*,thekickass.*,kickassz.*,kickasstorrents2.*,topkickass.*,kickassgo.*,kkickass.*,kkat.*,kickasst.*,kick4ss.*##+js(aeld, , break;case $.) -kat.*,katbay.*,kickass.*,kickasshydra.*,kickasskat.*,kickass2.*,kickasstorrents.*,kat2.*,kattracker.*,thekat.*,thekickass.*,kickassz.*,kickasstorrents2.*,topkickass.*,kickassgo.*,kkickass.*,kkat.*,kickasst.*,kick4ss.*##+js(aopw, ospen) -*.js|$script,1p,domain=isohuntz.*|isohunt.*|isohunts.*|isohuntx.*|isohunthydra.*|isohunters.*|isohunting.*|myisohunt.* -*$csp=script-src *,domain=isohuntz.*|isohunt.*|isohunts.*|isohuntx.*|isohunthydra.*|isohunters.*|isohunting.*|myisohunt.* -*$frame,domain=isohuntz.*|isohunt.*|isohunts.*|isohuntx.*|isohunthydra.*|isohunters.*|isohunting.*|myisohunt.* -*$script,1p,domain=torrentproject2.* -*$csp=script-src *,domain=torrentproject2.* -*$frame,domain=torrentproject2.* -uproxy.*##+js(aeld, , Pop) -uproxy.*##+js(set, String.fromCharCode, trueFunc) -uproxy.*##+js(nowoif) -/istripper.js -convert2mp3.club##+js(nowoif) -convert2mp3.club###idIframe -! mylegalporno.com popup, ads -mylegalporno.com##+js(aeld, click, pu_count) -mylegalporno.com##.rmedia -mylegalporno.com##.zone -||mylegalporno.com^$frame,1p -! server.satunivers. tv anti adb -server.satunivers.tv##+js(aeld, load, 2000) -winaero.com#@#.entry-content > div > div -winaero.com##[href^="/idx.php"] -! taxidrivermovie.com PH -taxidrivermovie.com###scroll-div -taxidrivermovie.com##.adboard-top -taxidrivermovie.com##[href="/category/taxi-fares/"]:upward(.thumb) -embedstream.me##+js(nowebrtc) -embedstream.me,nolive.me##+js(nowoif) -embedstream.me##+js(nostif, (), 150) -embedstream.me##^script:has-text(FingerprintJS) -embedstream.me##^script:has-text("admc") -embedstream.me##^script:has-text(\"admc\") -*$script,3p,denyallow=cloudflare.net|fastly.net|gstatic.com|jsdelivr.net,domain=nolive.me -embedstream.me##body > .position-absolute -embedstream.me###aff-click -@@||embedstream.me/cash.min.js$script,1p -nolive.me,worldcupstream.pm##+js(acs, setTimeout, admc) -worldcupstream.pm##.position-absolute.bg-opacity-50.top-0[id] -worldcupstream.pm##.m-1.fw-bold.btn-danger.btn -javporn18.com##+js(acs, mypop) -javporn18.com###contentDiv -javporn18.com##.player_box -vrporngalaxy.com##+js(nowoif) -123unblock.*##+js(acs, atob, decodeURIComponent) -123unblock.*##+js(acs, adcashMacros) -123unblock.*##.alert-dismissible -||binomo.com/en/promo/*$doc -simply-hentai.com##+js(acs, document.createElement, /l\.parentNode\.insertBefore\(s/) -simply-hentai.com##.cam-container -simply-hentai.com##.reader > div.mb-3 > div.mt-3 -animesa.*##+js(set, adblock_use, false) -*$frame,3p,denyallow=cbox.ws,domain=animesa.* -! stem-cells-news. com popups -stem-cells-news.com##+js(nowoif) -ccurl.net##+js(aopr, app_vars.force_disable_adblock) -ccurl.net##+js(set, blurred, false) -ccurl.net##.banner -ccurl.net##.box-main > .blog-item -ccurl.net##[style*="width: 300px; height:250px"] -ccurl.net##.col-md-2 -*$script,3p,denyallow=bootstrapcdn.com|google.com|gstatic.com|hwcdn.net|jquery.com|recaptcha.net,domain=ccurl.net -||cryptocreed.com^$3p -||powr.io^$3p,script -subtitle.one##+js(nostif, _0x, 3000) -||wixstatic.com/media/*~mv2.gif$domain=taxi-point.co.uk -taxi-point.co.uk##div[id^="comp-"]:has(> a[data-testid="linkElement"] > wix-image[data-src$="~mv2.gif"]) -taxi-point.co.uk##div[id^="comp-"][class^="_"] > div[class^="_"][style^="padding-left"] -genshinimpactcalculator.com##+js(set, nitroAds.loaded, true) -genshinimpactcalculator.com##.damageGroup.artifactsContainer > .optimizerRow > .hasToolTip.gbutton > div.tooltip[style^="top: "] -genshinimpactcalculator.com###BannerBottom -! javynow.com popup -javynow.com##+js(nowoif) -javynow.com##.videos-ad__wrap:style(background-color: transparent !important) -st23q.com##+js(aopr, app_vars.force_disable_adblock) -st23q.com##+js(set, blurred, false) -beautyram.info,viraloc.com##+js(aopr, app_vars.force_disable_adblock) -beautyram.info,viraloc.com##+js(set, blurred, false) -@@||escapegames24.com^$ghide -escapegames24.com##ins.adsbygoogle -escapegames24.com###HTML13 -escapegames24.com###HTML3 -escapegames24.com###HTML2 -escapegames24.com###HTML11 -escapegames24.com###HTML6 > .widget-content b -escapegames24.com##div[id^="post-"] b -*$script,redirect-rule=noopjs,domain=jnckmedia.com -! zdravenportal. eu anti adb -zdravenportal.eu##+js(acs, jQuery, ads) -best18porn.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -best18porn.com##.banner -best18porn.com##.in-player-spot -||best18porn.com/best18.js -shooshtime.com##+js(acs, document.getElementsByTagName, adn) -! th-world. com anti adb -th-world.com##+js(nostif, nextFunction, 250) -*$3p,script,xhr,denyallow=cloudflare.net|google.com|gstatic.com|googleapis.com|hcaptcha.com|jsdelivr.net|pvvstream.pro|recaptcha.net|userapi.com,domain=noodlemagazine.com -actionviewphotography.com,exporntoons.net,mat6tube.com,noodlemagazine.com,tyler-brown.com,ukdevilz.com##div[style]:has(> ins) -actionviewphotography.com,exporntoons.net,mat6tube.com,noodlemagazine.com,tyler-brown.com,ukdevilz.com##noindex -actionviewphotography.com,exporntoons.net,mat6tube.com,noodlemagazine.com,tyler-brown.com,ukdevilz.com##+js(nano-stb, download, 1100) -||ipvertnet.com/clickunder/ -||binpartner.com^$3p -||olymptrade.com^$3p -mysexgames.com##+js(aopr, loadTool) -mysexgames.com##+js(set, createCanvas, noopFunc) -ebookbb.com##^script:has-text('shift') -ebookbb.com##^script:has-text(\'shift\') -*$3p,script,denyallow=google.com|gstatic.com|recaptcha.net|hcaptcha.com,domain=ebookbb.com -romaniataramea.com##.sgpb-popup-dialog-main-div-wrapper -romaniataramea.com##.sgpb-popup-overlay -romaniataramea.com##html:style(overflow: auto !important;) -romaniataramea.com##+js(aopr, bizpanda) -*/wp-content/plugins/sociallocker-next-premium/$script,css -techjunkie.com##.home-page.main-section, html > body:style(margin-top: 0px !important;) -techjunkie.com##.slideMenu:style(top: -7px !important;) -techjunkie.com##body:style(padding-top: 0px !important;) -techjunkie.com##header:style(top: 0px !important;) -celebritynakeds.com##.show-over-1000.async-reklam-placeholder -oyohd.*##+js(nowoif) -vidohd.com##+js(aopr, __Y) -||oyohd.*/cdn-cgi/trace$xhr,1p -bigtitslust.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -lesbian8.com##+js(aeld, getexoloader) -lesbian8.com##+js(aopr, decodeURI) -amateur8.com,bigtitslust.com,freeporn8.com,lesbian8.com,maturetubehere.com,sortporn.com##+js(aopr, Q433) -amateur8.com,bigtitslust.com,ebony8.com,freeporn8.com,lesbian8.com,maturetubehere.com,sortporn.com##+js(set, flashvars.adv_pre_vast, '') -amateur8.com,amateur8.com,bigtitslust.com,ebony8.com,lesbian8.com,sortporn.com###lotal -amateur8.com,bigtitslust.com,ebony8.com,maturetubehere.com,shemalesin.com,sortporn.com###player_add -amateur8.com,bigtitslust.com,freeporn8.com,lesbian8.com,maturetubehere.com,sortporn.com##.footer-margin -amateur8.com,ebony8.com,lesbian8.com,maturetubehere.com,shemalesin.com##.table -ebony8.com,lesbian8.com,maturetubehere.com,shemalesin.com##.sponsor -bigtitslust.com##[href^="https://www.bigtitslust.com/link/"] -lesbian8.com##[href^="https://www.lesbian8.com/link/"] -sortporn.com##[href^="https://www.sortporn.com/link/"] -||lesbian8.com/nb/ -amateur8.com###intt-layer -amateur8.com,bigtitslust.com,freeporn8.com,lesbian8.com,sortporn.com###int-over -bigtitslust.com,freeporn8.com,lesbian8.com,sortporn.com##.mitaru -amateur8.com,bigtitslust.com,freeporn8.com,lesbian8.com,sortporn.com##.calibro -amateur8.com,ebony8.com,maturetubehere.com,shemalesin.com##.top2.pignr -ebony8.com,freeporn8.com,maturetubehere.com,shemalesin.com##.item.pignr -amateur8.com,ebony8.com##li.pignr -/s/s/js/i-top.js?v= -/sum.js?i=*&v= -@@||services.brid.tv/player/$script,domain=babylonbee.com -boobsrealm.com##+js(acs, puShown, /doOpen|popundr/) -||boobsrealm.com/wp-content/uploads/*-banner$image,1p -||bustyporn.com/*.php?src=$frame,3p -boobsrealm.com##iframe[style$="height: 250px;"] -720pstream.*##+js(nowoif) -720pstream.*##+js(nostif, "admc") -*$script,3p,denyallow=chatango.com|cloudfront.net|sharethis.com,domain=720pstream.* -720pstream.*##.bg-dark.position-absolute -! ytanime.tv ads -ytanime.tv##^script:has-text(u_cfg) -ytanime.tv##+js(aopr, u_cfg) -ytanime.tv##+js(aopw, adcashMacros) -*$script,3p,denyallow=arc.io|bootstrapcdn.com|chatango.com|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|google.com|googleapis.com|gstatic.com|hwcdn.net|jquery.com|jsdelivr.net|jwplatform.com|jwpcdn.com|recaptcha.net,domain=ytanime.tv -! guardaserie. name popunder -||googletagmanager.com/gtag/js^$redirect-rule=google-analytics_analytics.js,domain=guardaserie.* -guardaserie.*##+js(aeld, , /pop|_blank/) -yifytorrentme.com##+js(nowoif) -!#if env_chromium -||doubleclick.net/gampad/ads?*&output=xml_vmap$xhr,redirect=noopvmap-1.0,important,domain=tver.jp -!#endif -unblocked.name##+js(aopr, GetWindowHeight) -unblocked.name##+js(aopr, decodeURIComponent) -unblocked.name##+js(acs, adcashMacros) -unblocked.name##[style*="decoration"]:not([style^="width"]) -unblocked.name##.cborz-bordered -unblocked.name##.durs-bordered -unblocked.name##+js(aost, Math.random, ) -unblocked.name##[id^="cookie"] -||unblocked.name/zpp/*$script,domain=unblocked.name -/hy.js$script,domain=unblocked.name -||icyporno.com/jss/external_pop.js -||icyporno.com/_ad -icyporno.com###parrot -icyporno.com###embed-overlay -blog.aming.info##+js(nowoif) -blog.aming.info##body:style(visibility:visible !important) -blog.aming.info###babasbmsgx -blog.aming.info##[href^="https://cdn.aming.info/"] -blog.aming.info##[href^="https://warp.plus/"] -blog.aming.info##[href="https://om.aming.info/cpmadsterra"] -blog.aming.info##[href="https://om.aming.info/free$100"] -tucsitupdate.blogspot.com##+js(acs, addEventListener, google_ad_client) -toopl.xyz##+js(nowoif) -*$script,3p,denyallow=cloudflare.com|cloudfront.net|fastly.net|googleapis.com|gstatic.com|jwpcdn.com|sharethis.com|sharethis.net,domain=toonanime.* -garrysmods.org##.blocker.jquery-modal -garrysmods.org##body[style="overflow: hidden;"]:style(overflow: auto!important;) -@@||gaming-style.com^$script,1p -freemc.host##+js(nosiif, length, 1000) -cryptojunkie.net##+js(nobab) -*$script,redirect-rule=noopjs,domain=cryptojunkie.net -jagoanssh.com##+js(nosiif, visibility, 1000) -*$image,redirect-rule=1x1.gif,domain=vpnstunnel.com -tyla.com#@#div[class*="margin-Advert"] -tyla.com##div[class$="-margin-Advert"]:style(height:1px !important;width:1px !important;position:absolute !important;left:-3000px !important) -! scnlog.me popups/ads -*$script,3p,denyallow=cloudflare.com|google.com|gstatic.com|recaptcha.net|hcaptcha.com,from=scnlog.me -youtubemp3.us##+js(nowoif) -ancient-origins.*##+js(set, document.bridCanRunAds, true) -! dekki.com ads -dekki.com##div[pb-serve-label*="advert"]:upward(2) -pcso-lottoresults.com##+js(nosiif, visibility, 1000) -bittools.net##+js(acs, onload, fetch) -otomi-games.com##+js(nano-sib) -otomi-games.com##+js(aopr, popns) -@@*$ghide,domain=fastcoin.ga|dropcoins.xyz|faucetbr.tk|is2btc.com -fastcoin.ga##div[style="height: 90px;"] -fastcoin.ga##div[style="width:728px;height:90px;display: inline-block;margin: 0 auto"] -fastcoin.ga##.justify-content-center.col-sm-12.row > .overflow > center > .slide.carousel -fastcoin.ga##center > .justify-content-center.row -is2btc.com##.text-center.col-sm-3 -is2btc.com##div.col-sm-3:first-child -is2btc.com##ins[class][style="display:inline-block;width:728px;height:90px;"] -is2btc.com##div[class][style="width:300px;height:600px;display: inline-block;margin: 0 auto"] -is2btc.com##div[class][style="width:300px;height:250px;display: inline-block;margin: 0 auto"] -is2btc.com##.overlay -is2btc.com##div.col-sm-3:nth-of-type(3) -is2btc.com##.text-center.col-sm-12 -*$script,3p,denyallow=bootstrapcdn.com|cloudflare.net|consensu.org|fontawesome.com|google.com|gstatic.com|hwcdn.net|jquery.com|jsdelivr.net,domain=dropcoins.xyz|fastcoin.ga|faucetbr.tk|is2btc.com|quickclaims.*|swift4claim.com -sunhope.it##+js(nosiif, document.getElementById, 10000) -! propeller crap -*$3p,denyallow=googleapis.com|gstatic.com,domain=filmyzillafullmovie.waystohunt.info -hindilinks4u.to##.btn.stream-hd -||shortlinkto.*^$csp=default-src 'self' *.favicon.cc *.google.com *.gstatic.com *.googleapis.com -fulltube.*##.mvic-btn -||wifi4games.com/sw.js$script,1p -! vibehubs. com antiadb and ads -vibehubs.com##+js(aost, jQuery, ai_adb) -vibehubs.com##[href^="https://www.star-clicks.com/"] -vibehubs.com##.code-block-4.code-block > [href] -! yt-api. com ads -yt-api.com##+js(nowoif) -||gyonlineng.com/sw.js$xhr,1p -||yoat.xyz/xyz.js -##[href^="https://cluttercallousstopped.com/"] -##[href^="https://www.highperformancecpm.com/"] -! convertitoremp3 .download ads -||expensivesurvey.online^$popup,3p -afilmyhouse.blogspot.com##+js(nowoif) -crackevil.com##.pop-ad-wrap -pcgamer.com##+js(aopr, _sp_._networkListenerData) -pcgamer.com##.onesignal-customlink-container -pcgamer.com##div[style="position: fixed; bottom: 0px; left: 0px; width: 100%; min-height: 90px; background-color: rgba(245, 245, 245, 0.8); z-index: 9995;"] -pcgamer.com##.listingResult:has(> div.sponsored-post) -gaminggorilla.com##+js(aopr, history.replaceState) -pagalworld.us##+js(nowoif) -@@||freecoursewebsite.com^$ghide -freecoursewebsite.com##ins.adsbygoogle -codesnail.com##+js(nostif, css_class.show) -codesnail.com##.widget_custom_html -! babytorrent. ms popups -babytorrent.*,eztv-torrent.net##+js(aopr, decodeURI) -! pops.tv anti-adb -pops.tv#@##adsContainer -! pirlotvonlinehd. me -rojadirectatvhd.*##+js(aeld, , _0x) -! anti adb + popups -*$script,3p,domain=tanix.net -tvn.pl##+js(json-prune, movie.advertising.ad_server playlist.movie.advertising.ad_server) -@@||cdntvn.pl/*/advert.js$xhr,domain=tvn.pl -tvn.pl##.on-top.ad-ph -@@||hcdn.online^$ghide -imginn.com,finchtechs.com##+js(acs, document.createElement, unblocker) -||copyrightcontent.org/unblocker/ -||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect-rule=noop.js,domain=anidraw.net -! torlook.info popup ads -torlook.info##+js(acs, document.createElement, 'script') -*$script,3p,denyallow=cloudflare.com|googleapis.com|yastatic.net,domain=torlook.info -fpo.xxx##+js(set, flashvars.adv_pause_html, '') -fpo.xxx##+js(set, flashvars.adv_pre_src, '') -rscripts.net##+js(nobab) -dogecoin.*##+js(aopr, app_vars.force_disable_adblock) -||coinad.*^$3p -gayforfans.com##+js(aeld, getexoloader) -! cinecalidad popups -cinecalidad.*##+js(set, playerAdSettings.adLink, '') -cinecalidad.*##+js(set, playerAdSettings.waitTime, 0) -cinecalidad2.com##+js(acs, document.getElementsByTagName, onclick) -cine-calidad.*##+js(aeld, click, allclick_Public) -cine-calidad.*##+js(aopw, adcashMacros) -cine-calidad.*##+js(ra, href, #opfk) -cine-calidad.*##.links -cambb.xxx##.thumb div.ad:upward(.thumb) -cambb.xxx##+js(no-xhr-if, googlesyndication) -embed.indavideo.hu##+js(set, AdHandler.adblocked, 0) -sexgames.xxx##+js(aopr, loadTool) -coinurl.net##+js(aopr, app_vars.force_disable_adblock) -coinurl.net##+js(nosiif, visibility, 1000) -coinurl.net##+js(nowoif) -coinurl.net##+js(set, adsHeight, 11) -coinurl.net##+js(set, checkCap, 0) -coinurl.net###ads-notice -coinurl.net##.row > .col-md-offset-1.col-md-10 [align="center"] > a[href] -||vexfile.com/sw.js$script,1p -||vexfile.com/img/cofksar.png -vexfile.com##.title-box > [href] > [src] -manga18fx.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -manga18fx.com##+js(nostif, fetch) -manga18fx.com##.kadx -||manga18fx.com/nmme2023/nmme_frend.js -@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js^$script,domain=sudoku-aktuell.de -sudoku-aktuell.de###ajax -sudoku-aktuell.de###billboard -sudoku-aktuell.de###blockdiv -! jexmovie. com => vidlink. org popup -vidlink.org##[target="_blank"] -! host2.jptorrent.org timer -jptorrent.org##+js(nano-stb) -!#if env_firefox -qub.ca##.jss2 -!#endif -incestflix.com##body > div[style*="z-index:"] -! xtube.com PH -xtube.com##.pageBanner -xtube.com##.panelBottomSpace > li.pull-right -xtube.com##.removeAds -xtube.com##body.desktopView.hasFooterAd .mainSection:style(margin-bottom: 0!important;padding-bottom: 0!important;) -##[href^="https://exi8ef83z9.com/"] -videowood.tv##+js(aopr, LieDetector) -videowood.tv##+js(aopr, PopURL) -videowood.tv##+js(aopr, _wm) -videowood.tv##+js(aopw, adcashMacros) -videowood.tv##+js(nowoif) -videowood.tv##+js(aeld, , dtnoppu) -||teste1eeeeess.blogspot.com^$frame,3p -||adstructor.com^ -||grapereward.website^ -||tabledestruction.hair^ -hideandseek.world##+js(set, canRunAds, true) -speedostream.*##+js(aost, JSON.parse, computed) -||s.speedostream.*^$script,1p -@@||nnaa66.xyz^$ghide -discovermagazine.com##a > img + div[class]:last-of-type:has-text(Sponsored):upward(div[sizes]) -discovermagazine.com##div[sizes] > span[class]:has-text(Sponsored):upward(div[sizes]) -sportbible.com#@#div[class*="margin-Advert"] -sportbible.com##div[class$="-margin-Advert"]:style(height:1px !important;width:1px !important;position:absolute !important;left:-3000px !important) -||static.adsafeprotected.com/vans-adapter-google-ima.js^$script,redirect-rule=noopjs,domain=sportbible.com -@@||aniview.com/api/adserver/spt?$script,domain=sportbible.com -@@||player.avplayer.com/script/*/avcplayer.js$domain=sportbible.com -spicyandventures.com##+js(aopr, decodeURI) -spicyandventures.com##+js(nowoif) -infofuge.com##+js(nostif, disableDeveloperTools) -! codingshiksha.com anti adb -codingshiksha.com##+js(nostif, css_class.show) -! graphicux.com anti adb -graphicux.com##+js(nostif, css_class.show) -pengantartidurkuh.blogspot.com##+js(acs, addEventListener, google_ad_client) -galaxy-link.space##+js(aopr, app_vars.force_disable_adblock) -galaxy-link.space##+js(set, blurred, false) -galaxy-link.space##.box-main > .blog-item -*$script,redirect-rule=noopjs,domain=telegraf.rs|telegraf.tv -traveldesearch.com##+js(aost, XMLHttpRequest, onreadystatechange) -vkspeed.com##div.jw-cue-type-ads -@@||acilissaati.com^$ghide -acilissaati.com##ins.adsbygoogle -whowantstuffs.blogspot.com##+js(acs, addEventListener, google_ad_client) -linkpoi.me##+js(acs, Math, replace) -linkpoi.me##+js(aopr, app_vars.force_disable_adblock) -linkpoi.me##+js(set, blurred, false) -linkpoi.me##+js(no-fetch-if, manager) -usdshort.com##+js(aopr, app_vars.force_disable_adblock) -usdshort.com##+js(set, blurred, false) -alohatube.xyz##+js(set, popit, false) -@@||asklaftananlamazinhindi.com^$ghide -solotrend.net##+js(aopr, b2a) -solotrend.net##[href^="https://www.hoster.co.id/"] -solotrend.net###text-9 > .textwidget > p -freevstplugins.net##+js(acs, document.getElementById, adsBlocked) -@@||freevstplugins.net^$ghide -freevstplugins.net##ins.adsbygoogle -freevstplugins.net##.advert-wrap -haes.tech##+js(aopr, BetterJsPop) -haes.tech##+js(nowoif) -||haes.tech/cdn-cgi/trace -@@||genelpara.com^$ghide -genelpara.com##ins.adsbygoogle -genelpara.com##[class^="rklm"] -goalup.live##+js(nosiif, 0x) -goalup.live##+js(ra, onclick) -freeuseporn.com##+js(aopr, encodeURIComponent) -*$script,3p,from=freeuseporn.com,to=~cloudflare.com -||freeuseporn.com/backdrop.js -||freeuseporn.com/*.php^$frame -freeuseporn.com##.homed li:has(iframe) -freeuseporn.com##canvas -||adsyou.pro^$3p -||bestcripto.xyz^$3p -! pastebr.xyz anti adb -pastebr.xyz##+js(set, isAdBlockActive, false) -elitepvpers.com##p > [href^="https://playorigin.com/"] -elitepvpers.com##[href="https://skyredirect1.com/"] -elitepvpers.com##a[href*="utm_medium=banner&utm_campaign=epvp"] -elitepvpers.com##div > .page > div > div[style]:has-text(/^Advertise/i) + a -elitepvpers.com##[href="https://www.skycheats.com/"] -elitepvpers.com##[href^="https://funpay.com/"] -||playorigin.com^$3p -||elitepvpers.com/123/oddeven_btc_de_4x.png$image,1p -@@||gats.io^$ghide -gats.io##+js(nosiif, 0x) -||foxhq.com/gabtab.webm$media,redirect=noop-1s.mp4 -*$script,redirect-rule=noopjs,domain=cozinha.minhasdelicias.com -decomaniacos.es##+js(acs, addEventListener, google_ad_client) -todoseriales1.blogspot.com##+js(nosiif, visibility, 1000) -dbsmanga.com,read7deadlysins.com,readdrstone.com,readfairytail.com,readhxh.com,readkaguyasama.com,readkingdom.com,readmha.com,readnaruto.com,readnoblesse.com,readonepiece.com,readopm.com,readsnk.com,readtowerofgod.com,readvinlandsaga.com,watchgoblinslayer.com,watchoverlord2.com,watchsao.tv##.js-a-container -dbsmanga.com,demonslayermanga.com,read7deadlysins.com,readdrstone.com,readfairytail.com,readhxh.com,readjujutsukaisen.com,readkaguyasama.com,readkingdom.com,readmha.com,readnaruto.com,readnoblesse.com,readonepiece.com,readopm.com,readsnk.com,readtowerofgod.com,readvinlandsaga.com,watchgoblinslayer.com,watchoverlord2.com,watchsao.tv##.justify-center > div > b:first-child, .justify-center > div > br:nth-of-type(-n+5), .justify-center > div > center -bitcoinly.in##+js(aopr, app_vars.force_disable_adblock) -bitcoinly.in##+js(set, blurred, false) -bitcoinly.in##.banner -bitcoinly.in##[href^="https://fairspin.me"] -bitcoinly.in###link-view > center -bitcoinly.in##[class^="bmadblock-"] -eturbonews.com##^responseheader(location) -@@||renault-club.cz^$ghide -renault-club.cz##ins.adsbygoogle -||googleads.g.doubleclick.net/pagead/$xhr,redirect-rule=nooptext,domain=danshort.com -||manhuascan.com^*/popads.js -||evolok.net/*/authorize/*$xhr,redirect-rule=nooptext,domain=nation.africa -||bohubrihi.com^$3p -bhaskar.com##[id^="Ad"]:upward([style]) -divyabhaskar.co.in##[id^="Ad"]:upward([style]) -! propeller crap/ads -livesport24.net##+js(acs, setTimeout, admc) -livesport24.net##[href^="https://b-partner.xyz/"] -123moviesme.*##+js(aopr, decodeURI) -jattmate.com,saveshared.com,simpledownload.net##+js(aopr, String.fromCharCode) -inextmovies.*##+js(nowoif) -asianembed.io##+js(aeld, click, 0x) -emb.apl236.me###ads -||livesport24.net/*.gif$image -emb.apl305.me##+js(nowoif, _blank) -apl284.me###ads -apl306.me###ads -hd44.com##+js(nowoif) -*$script,3p,domain=hwnaturkya.com,denyallow=gstatic.com|recaptcha.net -hindilinks4u.*##.mvic-btn -##[href^="//taghaugh.com/"] -||bhplay.me/player/assets/devtools-detector/*$script,1p -||aragontrack.com^$3p -copydev.com##+js(acs, addEventListener, google_ad_client) -otakudesu.*##.box_item_ads_popup -*.gif$domain=otakudesu.*,image -*$script,3p,denyallow=blocked.bltsel|facebook.net|fbcdn.net,domain=manganelo.com -insidertracking.com##+js(acs, jQuery, length) -*$popunder,3p,domain=mp4porn.space -mp4-porn.space##.href_ -playonlinux.com##h1:has-text(Ads) -latesthdmovies.*##+js(acs, eval, replace) -latesthdmovies.*##+js(acs, document.createElement, 'script') -latesthdmovies.*##[href^="https://bit.ly/"] -! news18. com ad leftovers ,video unblockade -||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=noopjs,domain=news18.com --contrib-ads.$script,redirect=noopjs,domain=news18.com -/videojs.ads.$script,redirect=noopjs,domain=news18.com -news18.com##[class="Article_article_mad__1sOil"] -news18.com##[style^="min-height:"]:has(.OUTBRAIN) -news18.com##[style^="min-height :90px"] -! popups -mp4moviez.*##+js(nowoif) -sextvx.com##+js(nostif, window.location.href=link) -m.sextvx.com###home_hor_top_ads -m.sextvx.com###home_hor_bot_ads -@@||menjelajahi.com^$ghide -menjelajahi.com##+js(nano-sib, time, , 0) -menjelajahi.com##+js(set, blurred, false) -menjelajahi.com##ins.adsbygoogle -menjelajahi.com##.alert-danger.alert-dismissable.alert -! ukrainesmodels. com popups -ukrainesmodels.com##+js(aopw, atOptions) -*$script,3p,domain=ukrainesmodels.com -! onlinepornhub. net popups -onlinepornhub.net##+js(acs, document.createElement, /l\.parentNode\.insertBefore\(s/) -*$script,3p,domain=onlinepornhub.net,denyallow=k2s.cc -onlinepornhub.net##.header-area -onlinepornhub.net###footer-widget -! nepaliputi. net popups -nepaliputi.net##+js(acs, document.createElement, /l\.parentNode\.insertBefore\(s/) -downloadcursos.top##+js(acs, eval, replace) -platform.adex.network##+js(no-fetch-if, moonicorn.network) -@@||uploadshare.net^$ghide -uploadshare.net##ins.adsbygoogle -uploadshare.net##.advert-wrapper -/js/static/header/sda/ppsuma*.js$script -xnxx.com##.videoad-title -@@||cache.marieclaire.fr/media/videojs/videojs.ads.min.js$script,domain=marieclaire.fr -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=marieclaire.fr -*$script,3p,denyallow=arc.io|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|fastlylb.net|unpkg.com,domain=hatsukimanga.com -hatsukimanga.com##.cookies -masfrandy.com##+js(acs, addEventListener, google_ad_client) -! android-apk.org -> aapks.com countdown -android-apk.org##+js(nano-sib, time) -aapks.com##+js(nano-stb, countDown) -forobasketcatala.com##+js(acs, XMLHttpRequest, onreadystatechange) -tny.so##+js(acs, atob, 'shift') -||tny.so/sw-$script -itsecuritynews.info##+js(aopr, b2a) -itsecuritynews.info###secondary > .widget_custom_html.widget.widget_text -||pagead2.googlesyndication.com/pagead/$redirect-rule=noopjs,script,domain=overbits.herokuapp.com -cimanow.*,cnvids.com###ad -uvnc.com##+js(acs, addEventListener, nextFunction) -thothub.*,thethothub.com##+js(aost, localStorage, inlineScript) -thothub.*,thethothub.com##.sponsor -thothub.*,thethothub.com##.table -textovisia.com##+js(aopr, isAdBlockActive) -cryptslice.com##+js(nosiif, visibility, 1000) -pewgame.com##+js(aopr, app_vars.force_disable_adblock) -pewgame.com##+js(set, blurred, false) -pewgame.com##section.short .content -pewgame.com##body.captcha-page > .short -||pewgame.com/sw.js^ -||pewgame.com/js/hre.js^ -*$script,redirect-rule=noopjs,domain=pewgame.com -dndsearch.in##+js(acs, $, height) -redhdtube.xxx##+js(aopr, popns) -||redhdtube.xxx/tmp/ -! nudeof.com anti-adb -nudeof.com##div[class^="d-none"] -nudeof.com##.col-xl-4.col-lg-6.col-md-8.col-12.order-xl-1.order-lg-1.order-md-1.order-sm-1.order-1 -nudeof.com##div.happy-section -||rawcdn.githack.com/*/adbdetect.packed.js^$script -@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$domain=skmedix.pl -@@||pagead2.googlesyndication.com/getconfig/sodar$xhr,domain=skmedix.pl -@@||pagead2.googlesyndication.com/pagead/$script,domain=skmedix.pl -@@||tpc.googlesyndication.com/sodar/sodar2.js$script,domain=skmedix.pl -@@||googleads.g.doubleclick.net/pagead/ads?*skmedix.pl&$frame,domain=skmedix.pl -@@||fundingchoicesmessages.google.com^$script,xhr,domain=skmedix.pl -@@||googleads.g.doubleclick.net/pagead/ads?$frame,domain=skmedix.pl -@@||skmedix.pl^$ghide,script,1p -||skmedix.pl/cdn-cgi/zaraz/$script,1p,important -*$frame,redirect-rule=noopframe,domain=skmedix.pl -yxoshort.com##+js(aopr, app_vars.force_disable_adblock) -yxoshort.com##+js(set, blurred, false) -yxoshort.com##.banner -kaotic.com##+js(nowoif) -kaotic.com##.video-image > .track_outbound_post:upward(2) -kaotic.com##div.hard-5.col-xs-12.col-sm-3:has(.track_outbound_post) -kaotic.com##.track_outbound_post.grid-item -cargurus.com##[data-cg-ft="sponsored-listing-badge"]:upward(3) -cargurus.com##div:has(> [id^="bannerAdLEADERBOARD_INLINE_"]) -! Anti-adblock https://community.brave.com/t/metro-style-anti-adblock/224281 -@@||metro.style^$ghide -1link.vip##+js(set, blurred, false) -1link.vip##[href^="https://1frozenthrone1.com"] -1link.vip##[href^="https://runreferences.com"] -thaitrieuvi.live##+js(nano-sib, counter) -thaitrieuvi.live##center ~ .mh-clearfix.mh-wrapper -||i.imgur.com^$domain=1link.vip -||youtube.com^$domain=1link.vip -haonguyen.top##+js(set, blurred, false) -haonguyen.top###tp-wait -haonguyen.top##[id^="tp-snp"]:style(display: block !important) -sitecuatui.xyz###gtelinkbtn, #wpsafe-generate, #wpsafe-link:style(display: block !important;) -sitecuatui.xyz##[id^="wpsafe-wait"] -@@||tekfiz.com^$ghide -tekfiz.com##ins.adsbygoogle -files.fm##+js(aopr, canRunAds) -||cdn.flashtalking.com^$media,redirect=noopmp3-0.1s,domain=app.plex.tv -app.plex.tv##+js(json-prune, MediaContainer.Metadata.[].Ad) -||neonime.*/wp-content/themes/grifus/images/donate/yunita/ -discoveryplus.in##+js(no-fetch-if, ads) -! androidhexzone.blogspot.com anti-adb -||appnext.hs.llnwd.net^ -! vipboxtv .se | .sk and sister sites popups -olympicstreams.me,vipboxtv.*##+js(nowoif, //) -vipboxtv.*##+js(aopr, Adcash) -||raw.githubusercontent.com/*/just-detect-adblock/*$3p,xhr,redirect-rule=nooptext -olympicstreams.me##.position-absolute -/vppdzdrw.js -! buffstreams. tv => sx popups -buffstreams.*##+js(nowoif) -buffstreams.*##+js(acs, setTimeout, admc) -buffstreams.*##+js(json-prune, *, *.adserverDomain) -!#if cap_html_filtering -buffstreams.*##^script:has-text(/aclib\.runPop|aclib/) -!#else -buffstreams.*##+js(acs, document.createElement, /aclib|runPop/) -!#endif -buffstreams.*##.position-absolute -buffstreams.*##.m-1.fw-bold.btn-danger.btn -nsfwyoutube.com##pp -*$xhr,3p,domain=nsfwyoutube.com -/t.js?i=*&cb=$script,3p -i-bits.io##+js(nano-sib, seconds) -i-bits.io##ins[class][style^="display:inline-block;width:"] -! seriesflv popup -seriesflv.*##.adx > a[href] -mcrypto.club###id-custom_banner -mcrypto.club##+js(nano-stb, countdown, 10000) -luckydice.net##+js(nano-sib, sec--) -mcrypto.club###wpsafe-generate:style(display: block !important) -mcrypto.club##div[id^="promo"] -mcrypto.club###wpsafelink-countdown -@@||cryptocoinsad.com/ads/js/slider.js$script,domain=mcrypto.club -mcrypto.club##+js(no-xhr-if, wpadmngr) -mcrypto.club,coinsparty.com##+js(no-fetch-if, ad) -mcrypto.club##table -mcrypto.club##+js(rpnt, script, redirectToErrorPage) -mcrypto.club##+js(aeld, click, _0x) -omgexploits.com##+js(nosiif, visibility, 1000) -secondlifetranslations.com##.ai-attributes -secondlifetranslations.com##.code-block-17 -freesoft.id,zcteam.id##+js(nostif, nextFunction) -freesoft.id,zcteam.id###btn-keren -freesoft.id,zcteam.id##.affiliate_download_imagebutton_container -freesoft.id,zcteam.id##button[id][class^="custom-btn"][onclick^="window.open"] -studydhaba.com##+js(nostif, ai_) -studydhaba.com##.widget_custom_html -claimbits.io##+js(nano-sib, seconds) -@@||claimbits.io^$ghide -claimbits.io##ins[class][style^="display:inline-block;width:"] -anonymz.com##+js(aost, _pop, _init) -ac24.cz##pp -garaveli.de##+js(acs, addEventListener, google_ad_client) -@@||yilmaztv.com^$ghide -||linkvertise.net^$3p -! linkvertise URL manipulation -||publisher.linkvertise.com^$3p,domain=~linkvertise.* -/cdn/linkvertise.js$script,1p -@@||linkvertise.*^$ghide -thumpertalk.com##+js(ra, href|target|data-ipshover-target|data-ipshover|data-autolink|rel, a[href^="https://thumpertalk.com/link/click/"][target="_blank"]) -thumpertalk.com##.ipsType_richText a:style(color:currentcolor !important) -zshort.*##+js(set, blurred, false) -zshort.*###fafsf2:style(display:block !important) -zshort.*###showContainer,.textfk -chapteria.com##+js(acs, document.createElement, ignielAdBlock) -*$script,3p,denyallow=cloudflare.net|gstatic.com|jsdelivr.net,domain=wolfstream.tv -wolfstream.*##+js(nowoif) -eschenker.dbschenker.com##[style*="pointer-events"]:style(pointer-events:auto !important) -highstream.tv##+js(nowoif) -highstream.tv##.tabs > button -highstream.tv###container > div > .hidden-xs -highstream.tv##.cover -highstream.tv###customAnnouncement -*$script,3p,denyallow=cloudflare.com,domain=myadultanimes.com -||chandrabindu.net^$3p -! cekip. site detection -cekip.site##+js(no-xhr-if, ads) -blog.receivefreesms.co.uk##+js(nostif, show) -||receivefreesms.co.uk^$3p -thecut.com##+js(aeld, /touchstart|mousedown|click/, latest) -realyplayonli.xyz##+js(aopr, BetterJsPop) -realyplayonli.xyz##+js(aopr, doSecondPop) -unityassetcollection.com##+js(nano-sib, secs) -! freeadultcomix.com ads popups -*$frame,script,3p,domain=freeadultcomix.com -freeadultcomix.com##+js(rmnt, script, window.open) -freeadultcomix.com##+js(nowoif) -*$script,redirect-rule=noopjs,domain=claimfreebits.com -claimfreebits.com##+js(aopr, NoAdBlock) -claimfreebits.com##.adnewos -claimfreebits.com##+js(aopr, app_vars.force_disable_adblock) -claimfreebits.com##+js(set, blurred, false) -ipa-apps.me##+js(nano-sib, timer) -ipa-apps.me##[src="https://ipa-apps.me/Download.GIF"] -jujmanga.com##.code-block -*$script,3p,denyallow=disqus.com|edgecastcdn.net|fastlylb.net|kxcdn.com|twitcount.com|twitter.com|onesignal.com|buymeacoffee.com|x.com,domain=jujmanga.com -coursewikia.com##+js(nostif, brave_load_popup) -novelism.jp##+js(aeld, blur, native code) -alphapolis.co.jp##+js(aeld, blur, event.simulate) -||tinypass.com^$domain=crosswalk.com -||tinypass.com^$domain=christianity.com -manyakan.com##+js(no-xhr-if, adsbygoogle) -nusantaraproject.my.id##+js(nosiif, visibility, 1000) -crazyblog.in##+js(nosiif, visibility, 1000) -crazyblog.in##+js(aopr, app_vars.force_disable_adblock) -crazyblog.in##+js(nowoif) -crazyblog.in##+js(set, blurred, false) -cblink.crazyblog.in##.banner -crazyblog.in##.floating-banner -crazyblog.in##.box-main > div > p -crazyblog.in,studyuo.com##iframe[width="300"] -crazyblog.in,studyuo.com##div[id*="_"][style^="min-width"] -*$script,3p,denyallow=ampproject.org|google.com|gstatic.com|recaptcha.net,domain=crazyblog.in -gtlink.co##+js(aopr, app_vars.force_disable_adblock) -gtlink.co##+js(set, blurred, false) -gtlink.co##.banner-inner -*$frame,denyallow=google.com,domain=gtlink.co -*$script,3p,denyallow=cloudflare.net|google.com|gstatic.com|jsdelivr.net|recaptcha.net,domain=gtlink.co -||xdowl0adxd0wnloadx.com^ -! okrzone.com/verify/?OuQR -okrzone.com##+js(aeld, click, _blank) -link.tokenoto.com##+js(set, blurred, false) -||cugiphepty.com^$popup -cutearn.net##+js(aopr, app_vars.force_disable_adblock) -cutearn.net##+js(aopr, open) -cutearn.net##+js(set, blurred, false) -cutearn.net##section.short -cutearn.net##[src^="https://i.ibb.co/"] -porntn.com##+js(set, flashvars.protect_block, '') -porntn.com#@#.banner_ad -porntn.com##^script[data-cfasync]:has-text(0x) -porntn.com##+js(acs, decodeURIComponent, 0x) -gdr-online.com##+js(set, isAdsLoaded, true) -gdr-online.com##.adv_barra_alto -gadgetguideonline.com##+js(aost, String.prototype.charCodeAt, ai_) -gadgetguideonline.com##.ai-track -@@||imsolo.pro^$ghide -imsolo.pro##.ads-main -imsolo.pro##.center.spacing.text -mmm.dk##+js(set, adblockerAlert, noopFunc) -rshrt.com##+js(aopr, app_vars.force_disable_adblock) -rshrt.com##+js(set, blurred, false) -rshrt.com###headlineatas -rtxkeeda.com##+js(nosiif, _0x) -@@*$ghide,domain=rtxkeeda.com -@@||googlesyndication.com/pagead/$script,domain=rtxkeeda.com -@@*$image,domain=rtxkeeda.com -@@||a2zapk.com^$frame,script,xhr,domain=rtxkeeda.com -rtxkeeda.com##ins.adsbygoogle -rtxkeeda.com##div[style="background:#ededed;"] -rtxkeeda.com###galax2 -rtxkeeda.com###vipada -samfw.com##[href^="https://samfw.com/clicks/"] -samfw.com##[href^="https://samfw.com/link/"] -||i.imgur.com^$domain=samfw.com -samfw.com##+js(acs, jQuery, banner) -lewdstars.com##.ads-muted-control -lewdstars.com##.widget_custom_html -romadd.com##+js(no-fetch-if, googlesyndication) -romadd.com##+js(nano-sib, download) -@@||romadd.com^$ghide -romadd.com##ins.adsbygoogle -romadd.com##.ads -romadd.com##.widget_custom_html -romadd.com###floating_ads_bottom_textcss_container -||biguz.net/vast$xhr,1p -therootdroid.com##+js(aost, String.prototype.charCodeAt, ai_) -therootdroid.com###wpsafe-generate:style(display: block !important) -therootdroid.com###wpsafe-link:style(display: block !important) -therootdroid.com###wpsafe-wait1 -therootdroid.com###wpsafe-wait2 -! extratorrents. it popups -extratorrents.*##+js(aopw, adcashMacros) -pythonmatplotlibtips.blogspot.com##+js(acs, addEventListener, nextFunction) -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=10play.com.au -10play.com.au##.content__ad__content -@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$xhr,domain=10play.com.au -@@||global.ssl.fastly.net^$domain=10play.com.au -@@||imasdk.googleapis.com/js/sdkloader/ima3_dai.js$script,domain=10play.com.au -@@||pubads.g.doubleclick.net/ondemand/hls/content/*/streams$xhr,domain=10play.com.au -10play.com.au##+js(m3u-prune, /^https?:\/\/redirector\.googlevideo\.com.*/, /.*m3u8/) -10play.com.au##+js(json-prune, cuepoints, cuepoints.[].start cuepoints.[].end cuepoints.[].start_float cuepoints.[].end_float) -||sered.net^$3p -||grab.tc^$3p -||ad-doge.com^$3p -||addoge.cc^$3p -||clicksgenie.com^$3p -||webmonetiser.com^$3p -! sabishare. com ads -##[href^="luvaihoo.com"] -||hallway.netnaija.app/deliver.1.5.js$script,3p -sabishare.com##.cmp-roll -freeiphone.fr,mobiletrip.net,safemodapk.com,threezly.com,truyenbanquyen.com,veganinja.hu##+js(acs, decodeURIComponent, ai_) -ibooks.to##+js(acs, String.fromCharCode, ai_) -! muztext.com auto redirect -muztext.com##+js(nostif, reachGoal) -naijaray.com.ng##+js(aost, Math.floor, ) -naijaray.com.ng##[href^="//ashoupsu.com/"] -hotcleaner.com##+js(aopr, Element.prototype.attachShadow) -hotcleaner.com##div[class]:matches-css-before(content:/Advertisements/) -pornohans.com###wrapper_content > aside[id] -pornohans.com##.spc_height_60 -pornohans.com##.vjs-overlay -pornohans.com###wa_10 -pornohans.com,pornoente.tv,nursexfilme.com,milffabrik.com,pornohirsch.net,pornozebra.com,xhamster-sexvideos.com,pornoschlange.com,xhamsterdeutsch.*,hdpornos.net,gutesexfilme.com,pornotom.com##+js(nostif, Adb) -@@*$ghide,domain=pornohans.com|pornoente.tv|nursexfilme.com|milffabrik.com|pornohirsch.net|pornozebra.com|xhamster-sexvideos.com|pornoschlange.com|xhamsterdeutsch.*|hdpornos.net|gutesexfilme.com|pornotom.com|beeg-pornos.com|hd-sexfilme.com|meinyouporn.com|tube8-pornos.com|momo-net.com -||xhamsterdeutsch.*^*.mp4|$media,1p -xhamster-sexvideos.com##.vjs-overlay -reifporn.de##+js(aeld, getexoloader) -||german-porno-deutsch.info/*.gif$image -german-porno-deutsch.info##[href="/acamateure.html"] -@@||trafficfabrik.com/mine.js$script,domain=movie.momo-net.com -momo-net.com##+js(aeld, contextmenu) -momo-net.com##+js(aopr, document.body.appendChild) -movie.momo-net.com##iframe:upward([style*="visibility"]) -deutschsex.mobi,1milf.com##+js(aost, Math.floor, randStr) -1milf.com##.desktop.aside_media.aside -1milf.com##.desctop.spot -deutschsex.mobi##.default__interest-block -hardwarezone.com.sg##+js(aopr, SPHMoverlay) -hardwarezone.com.sg##.ad -hardwarezone.com.sg###sponsored-links-alt -hardwarezone.com.sg##.hwz-ad-outstream -imagecolorpicker.com##[class^="leftAds-"] -imagecolorpicker.com##[class^="rightAds-"] -! redwap.me,redwap2.com,redwap3.com occasional popup -/realize.js$domain=redwap.me|redwap2.com|redwap3.com -! sextgem.com ads -sextgem.com##div[id][style*="z-index: 999999999;"] -desitab69.sextgem.com##+js(nowoif) -xxxtime.sextgem.com##^script[language="javascript"]:has-text(open) -||xtgem.com/images/influenza/ -||xtgem.com/images/xtvid/ -||sextgem.com^$removeparam=id -*$popup,domain=sextgem.com -rethmic.com##+js(nano-sib, _0x) -! bollyholic. icu antiadblock & dev tools detection -bollyholic.*##+js(nostif, mdpDeBlocker) -bollyholic.*##+js(aopr, disableDeveloperTools) -! influencersgonewild.com popunder -influencersgonewild.com##+js(aost, Math.round, onload) -influencersgonewild.com##.g1-advertisement-inside-grid:upward(li) -! xxxwebdlxxx.top anti-adb, popup -xxxwebdlxxx.top##a[href^="https://hotdating-near1.com/"] -*$frame,script,3p,domain=xxxwebdlxxx.top -krypto-trend.de###top_adspace -krypto-trend.de###captcha-adspace -krypto-trend.de###middle-adspace -courseboat.com,coursehulu.com##+js(nostif, brave_load_popup) -fantasyfootballgeek.co.uk##+js(acs, String.fromCharCode, ai_) -gledajcrtace.xyz###header-wrap-reklama -gledajcrtace.xyz###HTML8 -javquick.com##+js(nowoif) -lazytranslations.com##+js(aost, String.prototype.charCodeAt, ai_) -lazytranslations.com##.ad-after-postend -lazytranslations.com##.lazyt-adlabel -||interserver.net^$3p -game3rb.com##+js(aeld, DOMContentLoaded, 0x) -game3rb.com##+js(no-fetch-if, method:HEAD) -||game3rb.com/sw.js^$script,1p -game3rb.com##[href^="http://pityhostngco2.xyz/"] -game3rb.com###post-footer:has([href*="vpnatlas.com"]) -##a[href*=".click/?z="][href*="&n"] -*$all,domain=rarvinzp.click|ytrqcxat.click -*$script,3p,denyallow=bootstrapcdn.com|cloudflare.com|cloudfront.net|disqus.com|disquscdn.com|fastlylb.net|googleapis.com|wp.com,domain=game3rb.com -||googletagmanager.com/gtag/js$script,redirect-rule=noopjs,domain=rotana.net -getpaste.link##+js(set, isAdBlockActive, false) -! popups 4movierulz1. me / .co -4movierulz1.*,filmygod6.*##+js(nowoif) -4movierulz1.*##[href^="https://api.whatsapp.com/send"] -kitabmarkaz.xyz##+js(aopr, __Y) -@@||flipboard.com/webu/*-contrib-ads*.bundle.js$script,1p -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=flipboard.com -! short-zero.com bab -short-zero.com##+js(nosiif, visibility, 1000) -! adz7short.space,goldenfaucet.io,croclix.me anti-adb -@@/viewad.$css,script,domain=adz7short.space|short.croclix.me|short.goldenfaucet.io -adz7short.space##+js(ra, href, #continue) -@@||adz7short.space^$ghide -adz7short.space###banner_slider_right -adz7short.space,short.croclix.me##.leaderboard -short.croclix.me##.banner-container -short.goldenfaucet.io##.rectangles -||offers4all.net^$frame,3p -gay4porn.com##+js(set, flashvars.adv_start_html, '') -gay4porn.com##.exbanner -gay4porn.com###int-over:remove() -gay4porn.com###intt-layer:remove() -/s/s/sum.php -charbelnemnom.com##+js(nostif, ai) -@@||charbelnemnom.com^$ghide -charbelnemnom.com##ins.adsbygoogle -charbelnemnom.com##.ezoic-ad -charbelnemnom.com###custom_html-16 -! thotvids.com popups/ads -thotvids.com##+js(acs, onload) -thotvids.com##+js(set, flashvars.popunder_url, '') -thotvids.com##.fade.top.text.fp-logo -thotvids.com##.fp-brand -thotvids.com##[href^="https://go.mshago.com"] -thotvids.com##+js(aeld, click, overlay) -||thotvids.com/player/html.php$frame -! mizugigurabia.com anti-adb -mizugigurabia.com##+js(acs, document.addEventListener, google_ad_client) -! py.md popup -py.md##+js(nano-sib, countdown) -||joinads.me^$3p -cubehosting.me##+js(nosiif, visibility, 1000) -cubehosting.me##+js(noeval-if, _0x) -cubehosting.me##+js(acs, document.addEventListener, google_ad_client) -||affilixxl.de^$3p -lcpdfr.com##div.ipsMargin_bottom.ipsAreaBackground.ipsPadding\:half -lcpdfr.com##.adSpacing -rodude.com##+js(acs, onload) -! hds-streaming. tv / site popups -hds-streaming.*###fakeplayer -hds-streaming.*##.asgdc -#@#.display_ad -bleepingcomputer.com###bc-home-news-main-wrap > li:has(> a[href$="/deals/"]) -@@||getpaidstock.com^$ghide -getpaidstock.com##ins.adsbygoogle -||antiblock.b-cdn.net/banner_ad.png$image,redirect-rule=1x1.gif,domain=getpaidstock.com -*$frame,redirect-rule=noopframe,domain=getpaidstock.com -myabandonware.com##+js(set, canRunAds, true) -myabandonware.com##+js(nostif, AdBlock) -myabandonware.com##[href^="/visual/r-"] -myabandonware.com##.items > .item[id]:not(.itemListGame) -myabandonware.com##div[id*="myabandonware_leaderboard_btf_"]:upward(div[id]) -myabandonware.com##div[id*="myabandonware_medrec_right_"]:upward(div[id]) -myabandonware.com##[id*="myabandonware_"][id$="tf"] -myabandonware.com##a[href^="/visual/"]:upward(.menu > div[id]) -myabandonware.com##div:matches-css-after(content:/Ads/) -myabandonware.com##[onclick*="aff"] -myabandonware.com##style:has-text(justify-content):remove() -myabandonware.com##[src*="banner"] -gayck.com##+js(set, flashvars.adv_pause_html, '') -short.palmeratv.com##+js(aopr, app_vars.force_disable_adblock) -short.palmeratv.com##+js(aopr, open) -short.palmeratv.com##+js(set, blurred, false) -! romhustler.org timer -romhustler.org##+js(nano-sib, timer.remove) -romhustler.org##.tower_ad_desktop -! streampourvous. com popups -streampourvous.com##+js(aopr, LieDetector) -streampourvous.com##+js(ra, href, #clickfakeplayer) -frebieesforyou.net##+js(nowoif) -github.com##[src^="https://spotlights-feed.github.com/spotlights/octoprint/"]:upward(article[class]) -ergasiakanea.eu##+js(noeval-if, deblocker) -@@||filezipa.com^$ghide -filezipa.com##ins.adsbygoogle -filezipa.com##+js(aopr, app_vars.force_disable_adblock) -filezipa.com##+js(set, blurred, false) -filezipa.com##+js(aopr, open) -mrunblock.*##+js(acs, decodeURIComponent, atob) -mrunblock.*###lb-banner -mrunblock.*##[id^="cookieConsent"]:upward(1) -mrunblock.*##.alert-dismissible -addonbiz.com##+js(acs, addEventListener, nextFunction) -b2bhint.com##+js(aopr, google_jobrunner) -b2bhint.com##+js(aopr, popupBlocker) -b2bhint.com##[id^="ad--"] -@@||alrakoba.net^$ghide -alrakoba.net##.adsbygoogle:style(position:absolute !important;left:-3000px !important) -alrakoba.net##.stream-item-widget -akwam.*##+js(acs, addEventListener, blocker) -akwam.*,eg-akw.com,khsm.io,xn--mgba7fjn.cc##+js(aopw, afScript) -akwam.*##+js(nosiif, visibility, 1000) -akwam.*##.ads -eg-akw.com,xn--mgba7fjn.cc##+js(aeld, load, 2000) -coolsanime.org,toonvideos.me##+js(acs, document.addEventListener, nextFunction) -||toonvideos.me^$3p -netpornix.*##div#responseads:style(display:block !important) -netpornix.*###videoadsid -netpornix.*##[href^="https://bit.ly/"] -netpornix.*##.videoads -netxwatch.*##+js(aopr, __Y) -dz-linkk.com##+js(aopr, app_vars.force_disable_adblock) -dz-linkk.com##+js(set, blurred, false) -dz-linkk.com##.banner -iqiyi.com##+js(set, Object.prototype.parseXML, noopFunc) -iqiyi.com##+js(set, Object.prototype.blackscreenDuration, 1) -iqiyi.com##.black-screen[data-cupid="adblock-blackscreen"] -m.iqiyi.com##+js(set, Object.prototype.adPlayerId, '') -iqiyi.com##.iqp-player > iqpdiv[data-cupid="container"] > div[data-adzone][templatetype="common_pause"] -@@||simplebits.io^$ghide -@@||simplebits.io/$script,1p -*$script,redirect-rule=noopjs,domain=simplebits.io -*$xhr,redirect-rule=nooptext,domain=simplebits.io -simplebits.io##.placeholder -simplebits.io##div[class][style="min-height: 250px; height: 250px;"] -simplebits.io##div[class][style="min-height: 90px;"] -simplebits.io##div[class][style="min-height: 60px;"] -@@||satoshilabs.net^$ghide -@@||satoshilabs.net/$script,1p -||satoshilabs.net/sh/ads/$frame -||simplebits.io/sh/ads/ -||simplebits.io/ads/ -simplebits.io##+js(no-xhr-if, /ads) -simplebits.io##+js(no-fetch-if, /ads) -simplebits.io##+js(nostif, , 3000) -hayamimi-gunpla.com##+js(acs, document.addEventListener, google_ad_client) -||prairiemountainmedia.com^$3p -||dailycamera.com^$3p -watchmdh.to##+js(set, flashvars.popunder_url, '') -watchmdh.to##+js(nostif, innerText, 2000) -watchmdh.to##+js(acs, addEventListener, -0x) -watchmdh.to##+js(aopr, decodeURI) -watchmdh.to##a[style^="position: absolute; inset: 0px;"][target="_blank"] -watchmdh.to##.sponsor -watchmdh.to##.block-video > .table -watchmdh.to##.top -neos-easygames.com,synk-casualgames.com#@##ad_block -@@||animedevil.com^$ghide -||tny.so^$3p -hitproversion.com##.onp-sl-content:style(display:block !important) -hitproversion.com##.onp-sl-social-locker -! mavplay. xyz popups -mavplay.xyz##+js(aeld, , _blank) -math-drills.com#@#.ad-block -@@||allsmo.com^$ghide -allsmo.com##[id^="ezoic-pub-ad-placeholder"] -*$xhr,redirect-rule=nooptext,domain=costumbresmexico.com -shemalestube.com##+js(nowoif) -shemalestube.com##.cover:style(background-image: none!important;) -||shemalestube.com/templates/dark/ads/ -||shemalestube.com/templates/dark/js/pop/ -gamingbible.co.uk#@#div[class*="margin-Advert"] -gamingbible.co.uk##div[class$="-margin-Advert"]:style(height:1px !important;width:1px !important;position:absolute !important;left:-3000px !important) -gamingbible.co.uk##.css-1dgm0zi-Advert -||adsafeprotected.com/$script,redirect-rule=noopjs,domain=gamingbible.co.uk -! hxfile. co popups -hxfile.co##+js(nowoif) -hxfile.co##a.btn-block -||storage.de.cloud.ovh.net^*/sarsor/avikingdynamic.js$script,3p -go4kora.com###id-custom_banner -povaddict.com##.adv-square -/\.com\/[a-zA-Z]{10}\.js$/$script,1p,domain=povaddict.com -! blog.40ch.net anti-adb -blog.40ch.net##+js(acs, document.addEventListener, nextFunction) -pornissimo.org##+js(set, flashvars.protect_block, '') -pornissimo.org##.table -pornissimo.org##.fp-brand -upfiles.*##+js(aopr, app_vars.force_disable_adblock) -upfiles.*##+js(set, blurred, false) -edn.com###custom_html-3 -edn.com###custom_html-5 -edn.com###footerAdWrap -||omeda.com^$3p -||youtubex.top^$3p -||badana.me^ -sexywomeninlingerie.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -||wafflegirl.com/galleries/banner/$3p -sexywomeninlingerie.com##[href^="http://join.wearehairy.com/track/"] -baikin.net##+js(aopr, google_jobrunner) -/wp-content/plugins/simple-adblock-notice-pro/*$script,css -comixzilla.com##+js(acs, document.createElement, 'script') -unsurcoenlasombra.com##+js(aopr, google_jobrunner) -watchmovierulz.*##+js(nowoif) -! streamsb_galaxy -anigogo.net,animepl.xyz,arslanrocky.xyz,cloudemb.com,dlmovies.link,embedsb.com,faptiti.com,fbgo.*,goana.xyz,gomovizplay.com,hlsplayer.xyz,javplaya.com,oxl.one,playersb.com,sbanh.com,sbbrisk.com,sbchill.com,sbchip.*,sbcloud1.com,sbembed.com,sbembed1.com,sbembed2.com,sbembed3.com,sbembed4.com,sbfast.com,sbflix.*,sbfull.com,sbhight.com,sblanh.com,sblongvu.com,sbplay.*,sbplay1.com,sbplay2.*,sbplay3.*,sbrity.com,sbrulz.*,sbspeed.com,sbthe.com,sbvideo.*,ssbstream.net,streamsb.*,streamsss.net,subsb.net,tubesb.com,vidmovie.xyz,view345.com,viewsb.com,watchsb.com,xvideostream.net##+js(aopr, __Y) -anigogo.net,arslanrocky.xyz,cloudemb.com,dlmovies.link,embedsb.com,fbgo.*,gomovizplay.com,hlsplayer.xyz,kinoking.cc,lvturbo.com,oxl.one,playersb.com,sbanh.com,sbasian.pro,sbbrisk.com,sbchill.com,sbchip.*,sbcloud1.com,sbembed.com,sbembed1.com,sbembed2.com,sbembed3.com,sbembed4.com,sbface.com,sbfast.com,sbflix.*,sbfull.com,sbhight.com,sblanh.com,sblona.com,sblongvu.com,sbnet.one,sbplay.*,sbplay1.com,sbplay2.*,sbplay3.*,sbrity.com,sbrulz.*,sbspeed.com,sbthe.com,sbvideo.net,ssbstream.net,streamsb.*,streamsss.net,subsb.net,tubesb.com,vidmovie.xyz,view345.com,viewsb.com,watchsb.com##+js(aopr, mm) -sbembed1.com,sbvideo.*##+js(aopr, console.clear) -cloudemb.com##+js(nowoif, !/^\/d\//) -cloudemb.com##+js(set, console.clear, noopFunc) -streamsb.*##+js(nowoif) -sbfull.com,streamsb.*,view345.com##+js(aopr, DoodPop) -sbembed.com,streamsb.*##body > div[style*="z-index:"] -sbplay.*,sbplay1.com##+js(set, console.clear, noopFunc) -oxl.one,sbplay1.com,sbvideo.net##+js(nosiif, 0x) -sbplay.*##^script:has-text(debugger) -cloudemb.com##+js(set, isadb, false) -||app.adjust.net.in^ -||abusageqh.com^ -||eisasbeau.buzz^ -||linkspoint.xyz/sw.js$script,1p -||weakermumrespect.com^ -sbot.cf##[id^="parentframe"] -sbot.cf##+js(window.open-defuser) -||sbasian.pro/js/mainpc.js -sharetext.me##+js(set, isAdBlockActive, false) -theblissempire.com##+js(aopr, app_vars.force_disable_adblock) -theblissempire.com##+js(set, blurred, false) -theblissempire.com##+js(aopr, open) -kisscartoon.info##.offads -kisscartoon.info##.countdown -||max-adserv.com^$3p -! newsinlevels.com/videosinlevels.com anti-adb -newsinlevels.com,videosinlevels.com##+js(set, sgpbCanRunAds, true) -knightnoscanlation.com##+js(acs, eval, replace) -knightnoscanlation.com##.c-sidebar -m2list.com##+js(nostif, debugger) -*$script,3p,domain=m2list.com,denyallow=ajax.googleapis.com|cdnjs.cloudflare.com -@@||posttrack.com/$xhr,1p -freejav.guru##+js(nostif, disableDeveloperTools) -freejav.guru##+js(acs, eval, replace) -! sexuhot.com popup, redirect on back, ads -sexuhot.com##+js(aopw, atOptions) -sexuhot.com##+js(aopr, history.replaceState) -sexuhot.com###overlay > a -sexuhot.com###abox -||sexufly.com^$frame,domain=sexuhot.com -! pussy.org popup -pussy.org##+js(nowoif) -||pussy.org^$frame,1p -! analsexstars.com popup -analsexstars.com##+js(nowoif) -*$xhr,redirect-rule=nooptext,domain=chiemgau24.de|ovb-online.de|rosenheim24.de|bgland24.de|innsalzach24.de|mangfall24.de|wasserburg24.de -@@*$ghide,domain=chiemgau24.de|ovb-online.de|rosenheim24.de|bgland24.de|innsalzach24.de|mangfall24.de|wasserburg24.de -!pc-offer$script,domain=bgland24.de|chiemgau24.de|innsalzach24.de|mangfall24.de|rosenheim24.de|wasserburg24.de -bgland24.de,chiemgau24.de,innsalzach24.de,mangfall24.de,rosenheim24.de,wasserburg24.de##.wv_story_el_cleverPushWidget -bgland24.de,chiemgau24.de,innsalzach24.de,mangfall24.de,rosenheim24.de,wasserburg24.de##.id-Recommendation -bgland24.de,chiemgau24.de,innsalzach24.de,mangfall24.de,rosenheim24.de,wasserburg24.de##.wv_story_el_pinpoll -||2target.net^$3p -*$script,3p,denyallow=facebook.net|fbcdn.net,domain=sukidesuost.info -sukidesuost.info###custom_html-23 -||iclickcdn.com^$script,redirect-rule=noopjs,domain=gifans.com -gifans.com##+js(nosiif, visibility, 1000) -gifans.com##+js(acs, document.cookie, :visible) -gifans.com###wpsafe-generate, #wpsafe-link:style(display: block !important;) -gifans.com##div[id^="wpsafe-wait"] -berklee.edu##+js(aeld, scroll, undefined) -electricaltechnology.org###stream-item-widget-7 -electricaltechnology.org###stream-item-widget-2 -! uniquetutorialsnew.blogspot.com anti-adb -@@||uniquetutorialsnew.blogspot.com^$ghide -uniquetutorialsnew.blogspot.com##ins.adsbygoogle -theicongenerator.com,zentum.club##+js(nowoif) -theicongenerator.com,zentum.club##+js(nano-sib, timer) -foreca.com##main > div > div > div[class]:matches-css(width:350px) -!#if env_mobile -foreca.com##main > div > div > div > div[class]:matches-css(min-height:326px) -foreca.com##main > div > div > div > div > div[class]:matches-css(min-height:326px) -!#endif -/wp-content/plugins/noti-blocker/*$script -filmyhitlink.xyz##+js(acs, mMcreateCookie) -filmyhitlink.xyz##+js(nano-sib, downloadButton) -filmyhitlink.xyz###sidebar-primary > .widget_custom_html -filmyhitlink.xyz###sidebar-secondary > .widget_custom_html -id45.cyou##+js(set, console.clear, noopFunc) -cloudrls.com##+js(nowoif) -javtsunami.com##+js(aeld, getexoloader) -||javtsunami.com/crimson-unit-$script -descargaspcpro.net##+js(noeval-if, ads) -descargaspcpro.net###AdSense1 -descargaspcpro.net###HTML90 -descargaspcpro.net##.stickywrap -finanzas-vida.com##[href="https://zplayer.live/"] -finanzas-vida.com##+js(set, blurred, false) -! mettablog.com anti-adb + popups -mettablog.com##+js(aost, String.prototype.charCodeAt, ai_) -adurly.cc##+js(aopr, app_vars.force_disable_adblock) -adurly.cc##+js(set, blurred, false) -! ofilmywap. uno / kannadamasti. cc, buyjiocoin. club, filmygod13.in popup -filmywap.*,ofilmywap.*,kannadamasti.*,buyjiocoin.*,filmygod13.*##+js(nowoif) -! fiedrive. com antiadb -fiedrive.com##+js(aopr, app_vars.force_disable_adblock) -! verfastdownload .pw popups -veryfastdownload.pw##+js(aopr, SmartPopunder.make) -! ucanwatch. me ads -ucanwatch.*##+js(nowoif) -! sharegdrive.co popups -sharegdrive.com##+js(acs, adcashMacros) -! torrentdownloads.uproxy2.biz popups -uproxy2.biz##+js(aopr, GetWindowHeight) -||uproxy2.biz/zpp/*$script,domain=uproxy2.biz -||uproxy2.biz/helper-js/*$script,1p -uproxy2.biz##+js(aopr, decodeURIComponent) -/hy.js$script,domain=uproxy2.biz -uproxy2.biz##+js(acs, adcashMacros) -uproxy2.*##+js(aost, Math.floor, ) -*$script,3p,domain=uproxy2.biz -! 18tube. sex ads -18tube.sex##+js(aeld, getexoloader) -18tube.sex##.opt -! pix4link.com leave detection -pix4link.com##+js(set, blurred, false) -liveschauen.com##.banner -liveschauen.com###werbung -@@||therokuchannel.roku.com/$xhr,1p -nulljungle.com##+js(nostif, innerHTML) -naturalnews.com##.Header -||naturalnews.com^$script -@@||naturalnews.com/*=$script,1p -@@||naturalnews.com/wp-content/themes/$script,1p -civilenggforall.com##+js(aopr, blockAdBlock) -*$script,3p,denyallow=chatango.com|cloudflare.net|cloudfront.net|disqus.com|disquscdn.com|fastlylb.net,domain=rawkuma.com -rawkuma.com##+js(aeld, readystatechange, document.removeEventListener) -rawkuma.com##+js(aeld, mousedown, shown_at) -.com/btag.min.js|$3p -||sentry-cdn.com^$script,redirect-rule=noopjs,domain=freebitz.xyz -youwatch.*##[href^="https://minilink.id/"] -youwatch.*##.sgpb-popup-dialog-main-div-wrapper -youwatch.*##.sgpb-popup-overlay -youwatch.*###custom_html-65 -@@||vidomo.xyz^$script,1p -||vidomo.xyz/assets/js/devtools-detector.js$important -! fxstreet. com/jp/etc. PH -fxstreet.*##.fxs_leaderboard -forogore.com##+js(acs, document.addEventListener, google_ad_client) -waploaded.com,meetdownload.com##.advert -waploaded.com,meetdownload.com##a[href*="got-to-be.net"] -waploaded.com,meetdownload.com##a[href^="https://aeroplaneversion.com/"] -waploaded.com,meetdownload.com##a[href^="https://suftanzine.com/"] -waploaded.com##.ad -waploaded.*##+js(aopr, exoJsPop101) -waploaded.*##+js(ra, href, .button[href^="javascript"]) -ybm.pw##+js(nowoif) -meetdownload.com#@#.ad-slot:not(.adsbox):not(.adsbygoogle) -@@||motoroids.com^$ghide -motoroids.com##ins.adsbygoogle -motoroids.com##div.AM_SINGLE_STORY_BETWEEN_CONTENT_SECOND_PARAGRAPH_RESPONSIVE -nudeselfiespics.com##+js(noeval-if, popUnderStage) -! zlut.com ads, popup -||zlut.com/_ad$frame -||zlut.com/jss/external_pop.js -zlut.com##.add-bottom -xproxxx.org###custom_html-3 -xproxxx.org###custom_html-5 -! nyaa.unblocked.id + unblocked.id ad -unblocked.id##+js(rmnt, script, push) -unblocked.id,uproxy2.*,unblock2.*##[href^="https://vpnk.net/"] -unblocked.id,uproxy2.*,unblock2.*##[onclick*="vpnk.net/?vpn"] -||searchtv.net/vpn-$doc -||vpnk.net/?vpn$doc -codingnepalweb.com##+js(rpnt, script, (isAdblock), (false)) -codingnepalweb.com##+js(nano-stb, animation) -cozumpark.com##.adv-link -! lordhd. com popups -lordhd.com##+js(nowoif) -embed-channel.stream##+js(acs, document.addEventListener, nextFunction) -||juicebarads.com^$3p -drop.download##+js(acs, document.addEventListener, google_ad_client) -drop.download##.row > .col-md-8 -flightsim.to##+js(acs, fetch, status) -flightsim.to##+js(acs, document.getElementById, adsblock) -flightsim.to##+js(nano-sib, timer, 1000, 0.001) -flightsim.to##+js(no-xhr-if, pub.network) -@@||flightsim.to^$script,1p -@@||pub.network/flightsim-to/pubfig.min.js$script,xhr,domain=flightsim.to -@@||flightsim.to^$ghide -moviemakeronline.com##+js(nosiif, adsbygoogle) -moviemakeronline.com##.bbbOwner -cinemakottaga.*##+js(no-xhr-if, googlesyndication) -cinemakottaga.*##+js(aeld, DOMContentLoaded, adsBlocked) -cinemakottaga.*##+js(acs, document.addEventListener, adsbygoogle) -*$image,redirect-rule=1x1.gif,domain=cinemakottaga.* -cinemakottaga.*##+js(nano-sib, timePassed) -*$3p,script,denyallow=arc.io|cloudflare.com|hcaptcha.com|google.com|gstatic.com|recaptcha.net,domain=cinemakottaga.* -mysql2dumpcrypt.de,xn--stream-oe64e.*###abm -webdeyazilim.com##+js(aost, String.prototype.charCodeAt, ai_) -||api.vuukle.com/api/v1/getModal$xhr,3p -livescore.deccanchronicle.com##.cnitem_add_area_outer -devotag.com##+js(acs, document.addEventListener, nextFunction) -paid4.link##+js(nowoif) -paid4.link##+js(rc, get-link, .ybtn.get-link[target="_blank"], stay) -paid4.link##+js(set, blurred, false) -paid4.link##.banner-inner -paid4.link##.blog-content -paid4.link##.box > div[align="center"] > .card -! openloading.com popup fakeplayer -openloading.com##+js(ra, href, #clickfakeplayer) -openloading.com###clickfakeplayer -codare.fun##+js(acs, document.addEventListener, google_ad_client) -@@||explosivemenu.com^$ghide -explosivemenu.com##ins.adsbygoogle -||explosivemenu.com^$image,redirect-rule=1x1.gif,1p -serialeonline.biz##+js(nowoif) -serialeonline.biz###overlay -alocdn.co##+js(aopr, BetterJsPop) -alocdn.co##+js(aopr, doSecondPop) -alocdn.co##+js(nowoif) -@@||code2care.org^$ghide -code2care.org##ins.adsbygoogle -code2care.org##.right-content -allwpworld.com##+js(nano-sib, timeleft) -allwpworld.com##+js(ra, disabled, input[id="button1"][class="btn btn-primary"][disabled]) -wgod.co##+js(acs, $, test) -pajalusta.club##+js(nowoif) -pajalusta.club##div[style="position: fixed; display: block; width: 100%; height: 100%; inset: 0px; background-color: rgba(0, 0, 0, 0); z-index: 300000;"] -||pajalusta.club/cdn-cgi/trace^$xhr -serialeonlinesubtitrate.ro###text-6 -||filmeserialehd.biz^$3p -@@/wp-content/plugins/dh-new-anti-adblocker$script,1p -||javhd.icu/ads/ -lavanguardia.com##+js(aeld, error) -imeteo.sk##+js(aeld, scroll, detect) -imeteo.sk##.page-container__ad-container -sixsave.com##+js(no-fetch-if, method:HEAD) -fluttercampus.com##.widget > .card -fluttercampus.com##div[id^="ezoic-pub-ad-"] -freebulksmsonline.com##+js(aost, String.prototype.charCodeAt, ai_) -@@||univers-simu.com^$ghide -univers-simu.com##.adsbygoogle:style(max-height: 1px !important;) -univers-simu.com###tie-block_702 -univers-simu.com##.\35 f283c41912bf.widget.container-wrapper -univers-simu.com###stream-item-widget-6 -univers-simu.com###stream-item-widget-3 -kelasexcel.id##div.secret:style(display:block !important) -kelasexcel.id##.secret-share -tutflix.org##+js(acs, $, test) -@@||tutflix.org^$ghide -pussy-hub.com##+js(aeld, click, popundr) -||pussy-hub.com/*/stat1_$script,1p -@@||themosvagas.com.br^$ghide -themosvagas.com.br##ins.adsbygoogle -themosvagas.com.br##.ads300x600 -youtubemp3donusturucu.net##+js(aeld, click, t(a)) -novelmultiverse.com##+js(nostif, disableDeveloperTools) -maxstream.video,maxlinks.online##+js(nostif, alert) -maxstream.video,maxlinks.online##+js(nano-stb, .fadeIn(), 3000) -maxstream.video,maxlinks.online##+js(nowoif) -@@*$script,1p,domain=maxstream.video|maxlinks.online|maxstreams.site -@@||linkonclick.com/*/display.php$script,frame,domain=maxstream.video|maxlinks.online|maxstreams.site -@@||ads.host-cdn.net/*.js|$script,domain=maxstream.video|maxlinks.online|maxstreams.site -host-cdn.net^$image,redirect-rule=32x32.png,domain=maxstream.video|maxlinks.online|maxstreams.site -maxstream.video,maxlinks.online,maxstreams.site###adsads:style(height: 9px !important;) -maxstream.video,maxlinks.online,maxstreams.site##h1:has-text(/adblock|supporter/) -/*.php$doc,domain=maxstream.video|maxlinks.online|maxstreams.site -! maxstream.video,maxlinks.online,maxstreams.site##^responseheader(location) -@@||uprot.net^$ghide -uprot.net##*[style="display:none;"]:style(display:block !important) -@@||ads.host-cdn.net/ads2.js$script,domain=maxstream.video|maxlinks.online|maxstreams.site|uprot.net -videoseyred.in##+js(nowoif) -!#if !cap_html_filtering -listendata.com##+js(rmnt, script, AdBlocker) -!#else -listendata.com##^script:has-text(AdBlocker) -!#endif -spleaks.org##+js(acs, $, test) -! antiblock.org sites -ads-ti9ni4.blogspot.com,bouamra.blogspot.com,cintateknologi.com,este-walks.net,funnymadworld.blogspot.com,gfilex.blogspot.com,intest.tv,irasutoya.blogspot.com,laurasia.info,pramejarab.blogspot.com,thelibrarydigital.blogspot.com,tienganhedu.com,tienichdienthoai.net,xbox360torrent.com,xn--k9ja7fb0161b5jtgfm.jp##+js(acs, document.addEventListener, google_ad_client) -www-daftarharga.blogspot.com##+js(nostif, nextFunction) -www-daftarharga.blogspot.com##+js(nowoif) -www-daftarharga.blogspot.com##+js(aeld, popstate) -www-daftarharga.blogspot.com##+js(aeld, , focus) -xbox360torrent.com##+js(nowoif) -! arenaboard. xyz popups -arenaboard.xyz##+js(nowoif) -porno-japones.top##+js(acs, document.addEventListener, adsbygoogle) -aimasummd.blog.fc2.com,dokuo666.blog98.fc2.com,metamani.blog15.fc2.com,newssokuhou666.blog.fc2.com,touhoudougamatome.blog.fc2.com,xn--k9ja7fb0161b5jtgfm.jp,youkaiwatch2345.blog.fc2.com##+js(acs, document.addEventListener, google_ad_client) -newssokuhou666.blog.fc2.com,youkaiwatch2345.blog.fc2.com##^script:has-text(google_ad_client) -ygoprodeck.com###deck-content-ad -ygoprodeck.com##[id^="frontpage-ad-"] -ygoprodeck.com##[id^="front-ad-"] -! kabegamipuloh.web.app/kabegamisiji.web.app/urakamiblogjp.blogspot.com => mysafe.stisda.ac.id/link.technics-goods.info fake buttons, anti adb -*$script,3p,denyallow=bootstrapcdn.com|google.com|hwcdn.net|jquery.com,domain=kabegamipuloh.web.app -blogspot.com,web.app##img[onclick="kemana()"] -link.technics-goods.info,mysafe.stisda.ac.id##+js(acs, document.addEventListener, google_ad_client) -link.technics-goods.info,mysafe.stisda.ac.id##.text-center > h3 -ngprame.blogspot.com###AdsRyanAH -ngprame.blogspot.com###tombol -archpaper.com##+js(acs, fetch, result) -archpaper.com##.an-ads -! tripadvisor.jp, tripadvisor.com etc. placeholder -tripadvisor.*###component_2 > div[class^="_"]:has(> div > div[class^="iab_"][style="min-height:90px"]) -tripadvisor.*##.ui_container > div[class] > div[class^="_"]:has(> .iab_medRec:only-child) -javfull.pro##.happy-sidebar -javfull.pro##.SC_TBlock -nation.africa##+js(aopr, evolokParams.adblock) -techpowerup.com##body:not([data-template]) a[rel="nofollow"][href^="/reviyuu/b784/"]:style(pointer-events: none !important;) -techpowerup.com##body:not([data-template]) a[rel*="nofollow"][target="_blank"][href$="er/images/gmchjhj.png"] -||www.techpowerup.com/reviyuu/$image,1p -||delivery.sexyxxx.biz^ -@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$xhr,redirect-rule,domain=carousell.* -unblocknow.*##.adstg -unblocknow.*##.alert -unblocknow.*###cookieConsentVPN666 -veoplanet.com##+js(ra, type, [src*="SPOT"], asap stay) -veoplanet.com##^source[src*="SPOT"] -link.asiaon.top##+js(aopr, app_vars.force_disable_adblock) -link.asiaon.top##+js(set, blurred, false) -asiaon.top##+js(rmnt, script, deblocker) -bestgamehack.top,hackofgame.com##+js(aopr, open) -193.124.191.200##+js(acs, eval, replace) -! faptube.xyz popup -faptube.xyz##+js(acs, Math, _0x) -faptube.xyz##+js(aopr, popns) -go.gets4link.com##+js(rc, get-link, .btn-success.get-link[target="_blank"], stay) -go.gets4link.com##+js(nowoif) -go.gets4link.com##+js(set, blurred, false) -go.gets4link.com##.blog-item -go.gets4link.com##.banner -go.gets4link.com##.mx-auto > center -mangalek.com##+js(acs, String.fromCharCode, decodeURIComponent) -*$script,3p,denyallow=cloudflare.com|mangarc.com,domain=mangalek.com -trzpro.com##+js(nano-sib, counter--) -download.sharenulled.net##+js(aopr, app_vars.force_disable_adblock) -download.sharenulled.net##+js(set, blurred, false) -golinuxcloud.com##.golin-adlabel:upward([class^="golin-content"]) -golinuxcloud.com##.adtag_250 -golinuxcloud.com##.adtag_600 -! silenthub. net anti adb -@@||silenthub.net^$ghide -justin.mp3quack.lol##+js(aeld, click, open) -||sentry-cdn.com^$script,redirect-rule=noopjs,domain=proinfinity.fun -||proinfinity.fun/*.html$frame,1p -lightnovelpdf.com##+js(aopr, adsBlocked) -lightnovelpdf.com##+js(nowoif) -comandotorrentshds.org##+js(acs, document.addEventListener, google_ad_client) -*$script,3p,denyallow=cloudflare.net|jsdelivr.net|sc.gl|unpkg.com,domain=hitprn.com -openculture.com##+js(nosiif, daadb) -openculture.com##.no-framearound_ad_in_post -! celebwhore.com,sexcams-24.com,webcamvau.com ads,popunder -celebwhore.com,sexcams-24.com##+js(set, flashvars.popunder_url, '') -sexcams-24.com##+js(set, flashvars.protect_block, '') -webcamvau.com##+js(set, flashvars.adv_pre_vast, '') -celebwhore.com,sexcams-24.com##.table -||wmpics.pics^$domain=sexcams-24.com|webcamvau.com -zedge.net##+js(nano-sib, (i-1)) -zetporn.com##+js(aopr, ExoLoader.serve) -zetporn.com##+js(acs, addEventListener, -0x) -zetporn.com##.aside-itempage-col -/\.com\/[A-Za-z]{9,}\/[A-Za-z]{9,}\.js$/$script,1p,domain=zetporn.com -||zetporn.com/*/custom_vast/$xhr -||eighing.space^$3p -*$script,3p,denyallow=googleapis.com,domain=zetporn.com -blackenterprise.com##.penci-sidebar-widgets.penci-sticky-sidebar.widget-area-1.widget-area > .theiaStickySidebar -blackenterprise.com##.hdrbanart -hog.*##.content__info--vis -hog.*##.content__top -hog.*##.player-block__line -hog.*##.player-block__square -hog.*##.player__line -hog.*##.player__side -hog.*##.related-view > div.title--sm -*$script,3p,denyallow=cloudflare.com|gcdn.co|google.com|gstatic.com|videocdn.name,domain=hog.* -!#if env_mobile -||m.youtube.com/*/ad.js$script -!#endif -keepvid.pw##+js(nowoif) -@@||blogdatecnologia.net^$ghide -@@||diariodecasamento.com^$ghide -@@||modaestiloeafins.com^$ghide -@@||portalmundocurioso.com^$ghide -@@||receitasabores.com^$ghide -@@||turismoeviagem.com^$ghide -blogdatecnologia.net,diariodecasamento.com,eusaudavel.net,modaestiloeafins.com,portalmundocurioso.com,receitasabores.com,turismoeviagem.com##+js(ra, class, div#player) -justcastingporn.com,justfamilyporn.com##+js(acs, document.createElement, _htas) -@@||smallseo.tools^$ghide -smallseo.tools##.category_box > .col-md-6 > p -smallseo.tools##.category_box > p -smallseo.tools##.sidebar_adds -smallseo.tools##ins.adsbygoogle -smallseo.tools##.text-center.col-md-8 > p -smallseo.tools##[href^="https://grammarchecker.io/grammarly"] -smallseo.tools##.border.p25.tracktool_banner .text-center > p -itsguider.com##+js(aeld, load, nextFunction) -@@||itsguider.com^$ghide -*$script,3p,denyallow=cloudflare.com|google.com|gstatic.com,domain=itsguider.com -surfsees.com##+js(noeval-if, deblocker) -surfsees.com##+js(aeld, DOMContentLoaded, deblocker) -viserve.com##^responseheader(location) -@@||leaklinks.com^$script,1p -*.gif$domain=leaklinks.com,image -||lowendbox.com^$3p -||lowendbox.com/media/banner/$frame -lowendbox.com##a[href][rel=noreferrer] > img[height="250"][width="300"] -lowendbox.com##[href="https://vpsdime.com/"] -lowendbox.com##iframe -lowendbox.com##div.block:has([id^="bsa"]) -*$script,3p,denyallow=cloudflare.com,domain=reddit.tube -nbcolympics.com##+js(set, adblockDetect, noopFunc) -qz.com##.e76xF.bJlt-:style(padding-top:0px !important) -qz.com##.article-content-ad -qz.com###engage-1 -xanimehub.com##+js(nosiif, visibility, 1000) -! crackevil.com anti adb -crackevil.com##+js(acs, mMcreateCookie) -online-fix.me##+js(nostif, /width|innerHTML/) -buydekhke.com##+js(aost, String.prototype.charCodeAt, ai_) -mylinkconverter.com##a[href^="https://go.nordvpn.net/aff"] > img -asyadrama.com,bitcoinegypt.news,citychilli.com,talkjarvis.com##+js(nostif, css_class.show) -cardiagn.com,routech.ro##+js(acs, eval, replace) -privatemoviez.*##+js(aeld, DOMContentLoaded, adsBlocked) -privatemoviez.*##+js(nostif, magnificPopup) -routech.ro##+js(nostif, blur) -routech.ro##+js(no-xhr-if, googlesyndication) -msn.cn##msft-article[id^="native_ad_nativead"] -msn.cn##.eastday-post-article-container -@@||club-opel.com^$ghide -club-opel.com##.side_ad_left_160 -club-opel.com##.side_ad_right_160 -club-opel.com##ins.adsbygoogle -||nothingtoxic.com/aff/chaturbate/ -||painaltube.com/min/747b35c9/painaltube/p/ -||painaltube.com/widget/chaturbate_cam.php? -painaltube.com##.widget > div.widget -javsex.to##+js(aeld, DOMContentLoaded, adsBlocked) -@@||seir-sanduk.com/$script,1p -trueachievements.com,truesteamachievements.com,truetrophies.com##body:style(padding-top:0px !important) -techilife.com##+js(acs, jQuery, adblocker) -picdollar.com##+js(aopr, loadTool) -tyfloswiat.pl##^responseheader(location) -/demonoid\.is\/[a-z0-9]{24}\.jpg$/$image,1p,match-case,domain=demonoid.is -demonoid.is##+js(rpnt, style, visibility: visible !important;, display: none !important;) -send-anywhere.com##+js(nano-sib, skipOptions) -send-anywhere.com###transfer-reward-ad -||brightcove.com/playback/*/*?ad_config_id$removeparam=ad_config_id,xhr,domain=tvnz.co.nz -||brightcovecdn.com/playback/*/*?ad_config_id$removeparam=ad_config_id,xhr,domain=tvnz.co.nz -@@||pharmacyreviewer.com^$ghide -@@||pharmacyreviewer.com/forum/js/$script,1p -247sports.com##body:not(.skybox-loaded) .topnav:style(margin-top:0px !important) -247sports.com##.nav-bar:style(top:0px !important) -sextubefun.com###playerOverlay -sextubefun.com##.promo-sec -samehadaku.*###playVideo:style(display: block !important; visibility: visible !important;) -samehadaku.*###player_embed:style(display: block !important; visibility: visible !important;) -samehadaku.*###skipbtn -samehadaku.*##.box_item_berlangganan_popup -*$script,3p,denyallow=cloudfront.net|disqus.com|disquscdn.com|fastlylb.net,domain=samehadaku.* -||yimg.com/nn/lib/metro/g/sda/$domain=yahoo.com -mediapemersatubangsa.com##+js(acs, document.addEventListener, google_ad_client) -*$script,3p,denyallow=gstatic.com,domain=la123movies.com -pornofan.pl###inplayerADS -pornofan.pl##.PublicitaDestra -audiobookcup.com##+js(acs, document.addEventListener, google_ad_client) -gigacourse.com##+js(acs, eval, replace) -superonleech.biz##+js(acs, document.addEventListener, google_ad_client) -||imasdk.googleapis.com/js/sdkloader/ima3.js^$script,redirect-rule=noopjs,domain=howstuffworks.com -userload.*##+js(aeld, , _0x) -userload.*##+js(nowoif) -userload.*##+js(acs, document.getElementById, style.display) -||userload.*/maroc.js$script,1p -@@||userload.*/ad-banner.js -*$image,redirect-rule=1x1.gif,domain=userload.* -userload.*##div[style="position: fixed; display: block; width: 100%; height: 100%; inset: 0px; background-color: rgba(0, 0, 0, 0); z-index: 300000;"] -userload.*##.adp-underlay -||zetadeo.com^$all -||civadsoo.net^$all -||binomo.com^$3p -||0x01n2ptpuz3.com^$all -||imasdk.googleapis.com/js/sdkloader/$script,redirect-rule=noopjs,domain=timesnowhindi.com|timesnowmarathi.com|tvid.in -timesnowhindi.com##.ad-section-three -timesnowhindi.com##.ad-section-one -timesnowhindi.com##.right-block > .section-one -timesnowhindi.com##.add-wrap -timesnowhindi.com##div.square-adv -timesnowhindi.com##.right-block > .section-four -timesnowhindi.com##.ad-panel-wrap -timesnowhindi.com##.bggrayAd -timesnowhindi.com##div:not([class]) > div:has(> .atfAdContainer) -timesnowhindi.com##div:not([class]) > div:empty -timesnowhindi.com,timesnowmarathi.com,timesofindia.com##+js(no-fetch-if, tvid.in/log) -timesnowmarathi.com##[class^="section"]:has(> .ad-div) -isekaisubs.web.id##+js(aost, String.prototype.charCodeAt, ai_) -! blasensex.com popunder and ads -blasensex.com##+js(aopr, jsUnda) -blasensex.com##.w300 -@@||cheat.hax4you.net^$ghide -! manganelo. tv popups -manganelo.tv##+js(aopr, JSON.parse) -! movizland. top + players => popups -movizland.*##+js(aopr, open) -upstore.net##+js(nano-sib, countDown, 1150, 0.5) -player.stv.tv##+js(json-prune, testadtags ad) -player.stv.tv##div.vjs-cue-point -||sumologic.stv.tv^ -||brightcove.com^$removeparam=ad_config_id,domain=player.stv.tv -60mins.online##+js(acs, document.addEventListener, nextFunction) -@@||tvnation.me^$ghide -tvnation.me##.adsbyvli -tvnation.me##div[style="float:left;text-align:center; width:300px; height:300px"] -tvnation.me##td[style="width:165px;"] -tvnation.me##td[style="width:160px;"] -tvlogy.to##+js(nostif, 0x) -javhoho.com##+js(aost, String.prototype.charCodeAt, ai_) -javhoho.com###text-2 -javhoho.com###text-3 -javhoho.com###text-4 -javhoho.com###text-5 -javhoho.com###text-6 -javhoho.com###text-7 -javhoho.com##a[href="https://50per-cent.com/"] -! udoyoshi.com anti adb -udoyoshi.com##+js(aost, String.prototype.charCodeAt, ai_) -vermoegen.org##+js(aopr, document.referrer) -mobile.de##.sticky-billboard -m.mobile.de##[data-label="Anzeige"] -m.mobile.de##div.He1bX -pornsai.com##.table -! ai_front sites -adrianoluis.net,altevolkstrachten.de,animecast.net,armyranger.com,articletz.com,boxylucha.com,chibchat.com,descargasmix.xyz,duniailkom.com,enciclopediaonline.com,entano.jp,eyalo.com,fosslovers.com,fotopixel.es,hairstylesthatwork.com,hello-e1.com,ichberlin.com,ireez.com,keepkoding.com,latribunadeautomocion.es,linemarlin.com,lumpiastudio.com,miaandme.org,mobility.com.ng,mygardening411.com,newstvonline.com,organismes.org,papagiovannipaoloii.altervista.org,playlists.rocks,relatosdesexo.xxx,rencah.com,riverdesdelatribuna.com.ar,sarkarinaukry.com,seamanmemories.com,socialmediaverve.com,theorie-musik.de,topperpoint.com,travel-the-states.com,vozz.vn##+js(aost, String.prototype.charCodeAt, ai_) -@@||user.pnetlab.com/store/advs/check -oosex.net,theteensexy.com,xteensex.net##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -##div#spot-holder.spot-holder[style="display: block;"] -##.gallery-bns-bl -/askdrej/*$script,1p -/askrej/*$script,1p -imslp.org##+js(nano-sib, timer) -cover-addict.com##[href^="https://www.winxdvd.com/"] -nudes7.com##+js(acs, document.addEventListener, adsbygoogle) -technicalatg.xyz##+js(acs, document.addEventListener, adsbygoogle) -||d1q4kshf6f0axi.cloudfront.net/main/prebid-$script -apkdoze.com##+js(acs, $, samAdBlockAction) -fapnado.*##+js(acs, Math.floor, ExoLoader) -fapnado.*##.pause-ad-pullup -fapnado.*##[class^="zpot"] -||fapnado.*/bump/ -||oi.fapnado.xxx^ -||io.fapnado.com^ -pogolinks.*##+js(nostif, showModal) -pogolinks.*##+js(acs, setTimeout, admc) -!||cdn.applixir.com^$script,3p -ilifehacks.com##+js(aost, String.prototype.charCodeAt, ai_) -pclicious.net##+js(acs, quadsOptions) -pclicious.net###text-3 -85tube.com##+js(set, flashvars.protect_block, '') -85tube.com##+js(set, console.clear, noopFunc) -pastebin.com##div[style]:not([class]):not([id]):has(> .adsbyvli:first-child) -@@||feyorra.top^$ghide -feyorra.top##.ads -feyorra.top##+js(aeld, load, 'block') -@@||temporarymail.com^$script,1p -gamingsym.in##+js(aost, String.prototype.charCodeAt, ai_) -toolsolutions.top,wowstream.top##+js(nowoif) -motherporno.com##+js(set, flashvars.adv_start_html, '') -motherporno.com##+js(set, flashvars.adv_pause_html, '') -motherporno.com##+js(set, flashvars.adv_pre_vast, '') -motherporno.com##+js(set, flashvars.adv_pre_vast_alt, '') -motherporno.com##.aside -motherporno.com##.spot -@@||v.fwmrm.net/ad/$script,xhr,domain=viafree.* -! watchhouseonline/watchtheofficeonline ads -watchhouseonline.net,watchtheofficeonline.net##.h_content -watchhouseonline.net###custom_html-6 -watchtheofficeonline.net###custom_html-7 -watchhouseonline.net,watchtheofficeonline.net##.module_single_ads -apkhex.com##+js(set, style, noopFunc) -love-stoorey210.net##+js(acs, document.addEventListener, google_ad_client) -indiansexstories2.net,issstories.xyz##+js(set, history.pushState, noopFunc) -indiansexstories2.net##[href^="https://a.videobaba.xyz/geoip/link.php"] -indiansexstories2.net##[href="https://www.theporndude.com/"] -||dsccams.com^$3p -mypornhere.com##+js(acs, document.createElement, loadjscssfile) -mypornhere.com##.item > [href^="https://www.mrporngeek.com/"] -*$xhr,redirect-rule=nooptext,domain=shaalaa.com -shaalaa.com##div.zxc_wrap -@@||cyberbunkers.com^$ghide -cyberbunkers.com##ins.adsbygoogle -freeiphone.fr##+js(aost, Math, ai_) -eductin.com##+js(nostif, show) -*$xhr,removeparam=ad_config_id,domain=telequebec.tv -ear-phone-review.com##+js(nostif, nextFunction) -@@||ear-phone-review.com^$ghide -switch520.com##+js(acs, eval, replace) -||4u2movie.com^$3p,media,redirect=noopmp3-0.1s -embed.nana2play.com##.click_block -embed.nana2play.com##+js(nostif, debugger) -embed.nana2play.com##+js(nano-stb, load_ads) -||googles.video^ -||ad.mail.ru^$3p -ask4movie.*##+js(aopr, mm) -riotbits.com##+js(aost, String.prototype.charCodeAt, ai_) -easymp3converter.com##+js(nowoif, !yt2api) -easymp3converter.com##body > div[style$="z-index: 300000;"] -easymp3converter.com##div[id^="waldo-tag"] -semprot.com##.semprotnenenmontok_adalah_pujaan_hatiku -semprot.com##a[href^="/yum.php"] -||img.topddl.net^$image,domain=nanimex.com -||nanime.biz^$3p -nanimex.com##.iklan-tengah -elahmad.com##+js(nostif, debugger) -*$image,redirect-rule=1x1.gif,domain=elahmad.com -*$redirect-rule=noopjs,script,domain=elahmad.com -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=elahmad.com -elahmad.com###ad_asd -@@||imasdk.googleapis.com/js/sdkloader/ima3.js^$script,domain=newgames.com -kendam.com##+js(set, canRunAds, true) -1340kbbr.com,gorgeradio.com,kduk.com,kedoam.com,kejoam.com,kelaam.com,khsn1230.com,kjmx.rocks,kloo.com,klooam.com,klykradio.com,kmed.com,kmnt.com,kool991.com,kpnw.com,kppk983.com,krktcountry.com,ktee.com,kwro.com,kxbxfm.com,thevalley.fm##+js(set, google_unique_id, 6) -convert2mp3.cx##+js(nowoif) -isgfrm.com##+js(acs, $, test) -megawypas.com##+js(acs, document.addEventListener, google_ad_client) -sainsburys.co.uk#?#li:has(.product-header):has-text(Sponsored) -123moviesto.to###bar-player -123moviesto.to##.mvic-bmt -mp3dl.cc##+js(nowoif) -tryvaga.com##+js(acs, document.addEventListener, adsBlocked) -||tryvaga.com/wp-content/themes/retrotube/assets/img/banners$image -/images/ads.$image,redirect-rule=1x1.gif -wttw.com##+js(set, canRunAds, true) -@@||adsuite.io^$ghide -worldofbin.com##+js(aopr, adBlockDetected) -tamilbrahmins.com##+js(acs, $, test) -@@||panelist.cint.com/assets/embed.min.js^$script,domain=surveyrewardz.com -@@||panelist.cint.com/$frame,domain=surveyrewardz.com -gab.com##div[class] > span[class]:has-text(Sponsored):upward(5) -gab.com#?#:matches-path(/\/posts/) div[data-comment*="gab-ad"]:has(span[class]:has-text(Sponsored)) -quizlet.com##.SetPageTerms-embeddedDesktopAdWrapper -quizlet.com##.StickyAdz -quizlet.com##+js(rc, has-sidebar-adz|DashboardPage-inner, div[class^="DashboardPage-inner"], stay) -quizlet.com##+js(rc, hasStickyAd, div.hasStickyAd[class^="SetPage"], stay) -quizlet.com##+js(nano-stb) -quizlet.com##div.has-adz:not(.SetPage):remove-class(has-adz) -quizlet.com##+js(set, __NEXT_DATA__.props.pageProps.adsConfig, undefined) -vivo.st##+js(aeld, , preventDefault) -vivo.st##+js(aeld, click, tabunder) -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=vivo.st -oneotv.com##+js(acs, document.addEventListener, google_ad_client) -*$script,redirect-rule=noopjs,domain=rbxscripts.xyz -@@/wp-content/plugins/dh-anti-adblocker/*$script,1p -goldenmanga.top##+js(nosiif, visibility, 1000) -linkfly.*##+js(set, blurred, false) -@@||dinamalar.com^$ghide -dinamalar.com###taboola-below-article-thumbnails -dinamalar.com##.topadtxt300 -dinamalar.com##div[style=" color: #999999;font-family: arial;font-size:10px;padding-right: 5px;text-align: right;width:640px;"] -dinamalar.com##div[style^="width:728px; margin-right:2px; height:90px;"] -dinamalar.com##.topadtxt728 -dinamalar.com###rladvt -gagaltotal666.my.id##+js(acs, addEventListener, nextFunction) -@@||animet.tv^$ghide -animet.tv##ins.adsbygoogle -owlzo.com##+js(nostif, adblockEnabled) -kumparan.com##.adunitContainer:upward([data-qa-id]) -! DeBlocker sites -nulljungle.com,oyuncusoruyor.com,pbarecap.ph,sourds.net,teknobalta.com,tvinternetowa.info##+js(aeld, DOMContentLoaded, adsBlocked) -celebjared.net##[href^="https://minepi.com/"] -celebjared.net###text-10 -1tamilmv.*##+js(acs, document.createElement, cookie) -1tamilmv.*##+js(aopr, mm) -beingtek.com##+js(aopr, app_vars.force_disable_adblock) -beingtek.com##+js(set, blurred, false) -*$script,3p,denyallow=gstatic.com|recaptcha.net,domain=beingtek.com -pcbeta.com##+js(aost, document.createElement, make_rand_div) -sqlserveregitimleri.com##+js(aeld, DOMContentLoaded, adsBlocked) -sqlserveregitimleri.com##.ai_widget -*$3p,script,denyallow=cloudflare.com|cloudflare.net|hwcdn.net|jquery.com|fontawesome.com,domain=dekhobd.com -dsocker1234.blogspot.com##+js(acs, String.prototype.charCodeAt, 'replace') -dsocker1234.blogspot.com##+js(set, new_config.timedown, 0) -dsocker1234.blogspot.com##.mb-3.order-last.col-md-3.col-12 -dottech.org###Azadify -ttsfree.com##div[id^="ezoic-pub-ad-"] -stiflersmoms.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -||stiflersmoms.com/yes/ -stiflersmoms.com##.line3 -@@||wallpapers.ispazio.net^$ghide -wallpapers.ispazio.net##.box-apples_single_reclame -ispazio.net##.stream-item -ispazio.net##.stream-item-widget -/nb/f_ls.js -||bluffyporn.com^$3p -||quinporn.com^$3p -###stop_ad -###stop_ad2 -tutcourse.com##+js(aeld, DOMContentLoaded, adsBlocked) -tutcourse.com##.text-html -tutcourse.com##.ai-attributes -@@||videovard.*^$xhr,1p -videovard.*##+js(nowoif) -videovard.*##+js(aeld, mouseup, catch) -videovard.*##+js(nosiif, 0x) -videovard.*##.jw-reset.jw-wrapper:style(z-index:2147483647 !important) -videovard.*###nux > div > div > div[id] -videovard.*##+js(aopr, FuckAdBlock) -burakgoc.com##+js(aost, String.prototype.charCodeAt, ai_) -tvshows4mobile.*##+js(acs, String.prototype.charCodeAt, 'replace') -tvshows4mobile.*##body:style(visibility:visible !important) -tvshows4mobile.*###babasbmsgx -tvshows4mobile.*##[href="http://bit.ly/indianwebseriesv2"] -tvshows4mobile.*##.prop_native1 -alvinreports.com##.stream-item-above-post-content -||i.imgur.com/D6RfMoV.png^$3p -wcofun.*##+js(nostif, AdBlock) -wcofun.*##+js(set, isAdBlockActive, false) -wcofun.*##.anti-ad -wcofun.*##.reklam_kapat -q1003.com##+js(nostif, google_ad) -||adbox.lv^$script,redirect-rule=noop.js,domain=mail.ee -@@||automodeler.com^$ghide -automodeler.com##ins.adsbygoogle -automodeler.com##.banner -@@||armorama.com^$ghide -xemales.com##+js(aopr, document.dispatchEvent) -xemales.com##[href="https://myteenwebcam.com/"] -! cluset.com ads, popunder -cluset.com##+js(set, flashvars.popunder_url, '') -cluset.com##.item:has(> div.spot) -cluset.com##.table -tumblr.com##header[role="banner"] > div > a[href="/docs/en/relevantads"]:upward(3) -tumblr.com##a[href^="https://www.bonecoin.com/"] -tumblr.com##.Yc2Sp h1, .Yc2Sp a:style(font-size: 0 !important;) -tumblr.com##+js(json-prune-fetch-response, response.timeline.elements.[-].advertiserId, , propsToMatch, url:/api/v2/tabs/for_you) -||gazzettaobjects.it/rcs_anti-adblocker/$3p -rincondelsazon.com##+js(nano-sib, timercounter) -tattoosbeauty.com##+js(nano-sib, timercounter) -||i.imgur.com^$image,domain=myflixer.* -myflixer.*###gift-middle -myflixer.*##.premodal.modal -myflixer.*##.show.modal-backdrop -apfelpatient.de##+js(nostif, css_class) -myfirstname.rocks##.xcontent.container -shorturl.unityassets4free.com##+js(aopr, app_vars.force_disable_adblock) -shorturl.unityassets4free.com##+js(aopr, open) -shorturl.unityassets4free.com##+js(set, blurred, false) -go-mp3.com##+js(nowoif, !clickmp3) -szexkepek.net##+js(aopr, document.dispatchEvent) -szexkepek.net##div[style="display:inline;float:left;width:300px;height:250px;margin-left:15px;"] -szexkepek.net##div[style="width:728px;height:90px;"] -teensexvideos.me##+js(aopr, ExoLoader) -wife-home-videos.com##+js(aopr, document.dispatchEvent) -wife-home-videos.com##.happy-footer -pornicom.com##+js(aopr, document.dispatchEvent) -pornicom.com##.thumbs-holder > .thumb_aside -pornicom.com##.bottom.thumb_aside -pornicom.com##a[href^="https://s.zlinkm.com/"] -pornicom.com##a[href^="https://s.zlinkv.com/"] -pornicom.com##a[href^="https://claring-loccelkin.com/"] -sexmadeathome.com##+js(aopr, document.dispatchEvent) -sexmadeathome.com###dclm_modal_content -sexmadeathome.com##*:style(filter: none !important) -sexmadeathome.com###dclm_modal_screen -nylondolls.com##+js(aopr, document.dispatchEvent) -sidereel.com###netaktion_ad -techymedies.com##+js(acs, eval, replace) -techymedies.com###wpsafe-generate,#wpsafe-link,.bt-success:style(display: block !important;) -techymedies.com###wpsafe-time:upward([id^="wpsafe-wait"]) -disheye.com##+js(no-fetch-if, googlesyndication) -disheye.com##+js(nano-sib, count, *) -disheye.com,techymedies.com,techysuccess.com##+js(set, blurred, false) -blogpascher.com##+js(nostif, document.location) -za.gl##+js(set, blurred, false) -readytechflip.com##+js(aeld, DOMContentLoaded, adsBlocked) -readytechflip.com##+js(aost, Math.round, inlineScript) -readytechflip.com##^script:has-text(/eval[\s\S]*?decodeURIComponent/) -readytechflip.com##.widget_custom_html -onlylesbiantube.com##iframe:upward(.thumb) -onlylesbiantube.com##.hor_bs -onlylesbiantube.com##.video_av_bl -||ag.palmtube.net^ -milforia.com,onlylesbiantube.com,teensfuck.me##+js(aopr, document.dispatchEvent) -notformembersonly.com##+js(aost, _pop) -notformembersonly.com###post-separate > p > .local-link -@@||cdn.jsdelivr.net/npm/*/fuckadblock.min.js$script,3p -unsplash.com##div[style^="--row-gutter"] > div a[href="/brands"]:upward(div[style^="--row-gutter"] > div) -unsplash.com##div[data-test="SearchInFeedAd-AffiliateFallback-Container"] -unsplash.com##div:has(> div[data-affiliates-grid-container]) -unsplash.com##div[data-test^="masonry-grid"] > div[style^="--row"] > div:not([itemprop="image"]) -@@||samuraiscan.com^$ghide -samuraiscan.com##+js(acs, eval, replace) -milanworld.net##+js(acs, $, test) -chess.com##.board-layout-ad -chess.com##body.board-layout.with-und:style(margin-right:0px!important) -chess.com##.game-over-ad-legacy-component:style(height: 0 !important) -funker530.com##+js(rc, cnx-ad-container|cnx-ad-bid-slot) -||funker530-ads.azurewebsites.net^ -reset-scans.*##+js(rmnt, script, deblocker) -uyduportal.net##+js(acs, document.addEventListener, nextFunction) -businessinsider.fr##[id^="bin-ads"] -@@||cdnqq.net^$script,1p -testserver.pro##+js(nostif, google) -novinhastop.com,warddogs.com##+js(aeld, DOMContentLoaded, adsBlocked) -novinhastop.com##.single-right -novinhastop.com##.qpsocb -warddogs.com##.main-money-01 -warddogs.com##.single-aside > div.flex -telefullenvivo.com##+js(nostif, nextFunction) -lineageos18.com##+js(nowoif, bitcoins-update.blogspot.com) -gomoviz.*##.mvic-btn -gomoviz.*##.mobile-btn -gomoviz.*##div.content-kuss -embedsb.com##+js(nosiif, 0x) -! everyeye. it anti adb -everyeye.it##+js(nostif, adb) -nodejs.libhunt.com##[data-ref="saashub"]:upward(div.feed-item) -alueviesti.fi,kiuruvesilehti.fi,lempaala.ideapark.fi,olutposti.fi,urjalansanomat.fi##+js(aeld, scroll, innerHeight) -watashiwasugoidesu.com##.watas-adlabel -watashiwasugoidesu.com##.watas-bottom-vi -@@||freereceivesms.com^$script,1p -freereceivesms.com##+js(nosiif, 0x) -freereceivesms.com##a[href^="https://www.18sex.org/"] -! non-bait wp-banners.js -/wp-content/plugins/wp-banners/js/wp-banners.js -pobre.*###messageModal -pobre.*##.generalModal -||pobre.*/wp-banners.js -||cloclo60.datacloudmail.ru/public/view/*.mp4|$media,domain=pobre.*,redirect=noopmp3-0.1s -coinsparty.com##+js(nowoif) -coinsparty.com##+js(no-xhr-if, wpadmngr) -coinsparty.com###captchaShortlink:upward(form#coinsparty > div):style(display: block !important;) -coinsparty.com##form[action$="/links/popad"]:remove() -coinsparty.com##div[style="position: fixed; display: block; width: 100%; height: 100%; inset: 0px; background-color: rgba(0, 0, 0, 0); z-index: 300000;"] -||ad4point.nyc3.digitaloceanspaces.com^ -@@||windowsbulletin.com^$ghide -download.baominh.tech##+js(aopr, app_vars.force_disable_adblock) -download.baominh.tech##+js(set, blurred, false) -download.baominh.tech##+js(aopr, open) -fifaultimateteam.it##+js(aost, Math, inlineScript) -fifaultimateteam.it##+js(nowoif) -||fifaultimateteam.it/*skin$image -fifaultimateteam.it##.ai_widget -bshopme.site##+js(nosiif, visibility, 1000) -mikl4forex.com##+js(nano-sib, counter, 2000) -michaelemad.com##+js(nano-sib, timer) -reddit.com,reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad.onion##.adLinkBar:upward(article[style="z-index: 1;"]) -@@||xtremestream.co^$ghide -blick.ch##+js(set, Object.prototype.isAdDisabled, true) -blick.ch##.fKZLNI:style(width:120% !important) -bblink.com##+js(set, blurred, false) -bblink.com##.banner-img-promotion -! donpelis.com popup popunder -donpelis.com##+js(aost, localStorage, stackDepth:1) -donpelis.com##+js(ra, onclick, [onclick^="pop"]) -javhub.net##+js(aeld, DOMContentLoaded, 0x) -javhub.net##+js(aopr, cainPopUp) -javhub.net##+js(aopr, pURL) -javhub.net##.fel-playclose -javhub.net##[class^="banner-"] -novsport.com##+js(refresh-defuser) -yifysub.net##+js(nano-sib, #timer) -theloadout.com###nn_bfa_wrapper -theloadout.com##.legion_primiswrapper -theloadout.com##header:style(top:0 !important) -theloadout.com###nn_astro_wrapper:has(.ad) -theloadout.com##.nn_mobile_mpu_wrapper -ceylonssh.com##+js(acs, $, adsbygoogle) -bowfile.com##+js(nowoif) -*$script,redirect-rule=noopjs,domain=bowfile.com -*$frame,redirect-rule=noopframe,domain=bowfile.com -||d192r5l88wrng7.cloudfront.net^$frame,redirect=noopframe -bowfile.com##+js(no-fetch-if, cloudfront.net/?) -bowfile.com##+js(no-fetch-if, method:HEAD) -bowfile.com##+js(ra, href|target|data-onclick, a[id="dl"][data-onclick^="window.open"], stay) -bowfile.com##^script:has-text(FingerprintJS) -*$xhr,redirect-rule=nooptext,domain=bowfile.com -javfor.tv##+js(acs, addEventListener, -0x) -! adlinkweb.com,linkbr.xyz,myad.biz,vklinks.com ads, anti-adb, focus detection -adlinkweb.com,linkbr.xyz##+js(aopr, app_vars.force_disable_adblock) -linkbr.xyz,myad.biz##+js(set, blurred, false) -adlinkweb.com,vklinks.com##.banner-inner -||i.ibb.co^$image,domain=adlinkweb.com -||ad.lomadee.com^ -||myezads.com^$3p -streamingsites.com##.OUTBRAIN:upward(2) -schoolcheats.net##+js(nosiif, Adblocker) -schoolcheats.net##+js(nostif, googletag) -kisscos.net##+js(acs, addEventListener, -0x) -kisscos.net##span[id$="related"] > div[id^="container-"] -kisscos.net##[id$="-overlay"] -xxxjaa.xyz##+js(aopr, __Y) -eplayer.click##+js(aeld, error) -eplayer.click##+js(aopr, AaDetector) -ustream.click##+js(acs, RegExp, 'shift') -ustream.click##^script:has-text('shift') -ustream.click##^script:has-text(\'shift\') -! performance slowndown by site's antiadb code -1cloudfile.com##+js(nosiif, !display) -1cloudfile.com##+js(nowoif) -1cloudfile.com##+js(no-fetch-if, /googlesyndication|nerveheels/) -1cloudfile.com##+js(acs, navigator, FingerprintJS) -||1cloudfile.com/sw.js$script -1cloudfile.com#@#.advert-wrapper -1cloudfile.com##.advert-wrapper:style(clip-path: circle(0) !important;) -1cloudfile.com##.uk-text-center -1cloudfile.com##.preview-download-wrapper -1cloudfile.com##.content-preview-wrapper -||browsingcontredir.com^ -straatosphere.com##+js(nostif, showModal) -straatosphere.com##html:style(overflow: auto !important;) -animotvslashz.blogspot.com##+js(aopr, _pop) -liveonsat.com##+js(acs, document.getElementById, 'No') -liveonsat.com##td[width="100%"][height="50"] -4everproxy.com##+js(aost, foreverJQ, /document.createElement|stackDepth:2/) -1bitspace.com,mgnet.xyz##+js(acs, addEventListener, -0x) -mgnet.xyz##+js(acs, document.addEventListener, container.innerHTML) -mgnet.xyz##+js(nostif, top-right, 2000) -mgnet.xyz##+js(set, hiddenProxyDetected, false) -mgnet.xyz##+js(nano-stb, _0x, 15000) -1bitspace.com##+js(nano-stb, location.href, 8000) -1bitspace.com,mgnet.xyz##.modal__overlay -mgnet.xyz##.active.bnsLayers.is-block-touch.is-grid > .col_12.article-center -mgnet.xyz##.bounceIn.animated.bnsLayers.is-block-touch.is-grid -dealsfinders.blog##+js(no-fetch-if, method:HEAD) -dealsfinders.blog##+js(nostif, show) -dirproxy.com##+js(aost, Math, ) -*$3p,script,denyallow=cloudflare.com|jquery.com,domain=dirproxy.com -torrentdownloads.dirproxy.com##.left_shadow:has-text(Fast) -torrentdownload.info##.thleft:has-text(Fast):upward(2) -dirproxy.com##[src="/logo_d.jpg"] -dirproxy.com##[src="/logo_d3.jpg"] -electomania.es##+js(acs, eval, replace) -electomania.es##.td-pb-row.wpb_row.tdi_73.vc_row -5dwallpaper.com##.__fdw__adspot-title-container -5dwallpaper.com##.__fdw__adv-block -swzz.xyz##+js(aopr, app_vars.force_disable_adblock) -swzz.xyz##+js(set, blurred, false) -gayvl.net##+js(nowoif) -gayvl.net###HTML1 -japopav.tv##+js(aopr, __Y) -japopav.tv##+js(set, isadb, false) -expresscrypto.io##.content > center -@@||c.adsco.re/|$script,domain=hotfrog.* -! pirate4all.com popup -pirate4all.com##.e3lan-top.e3lan -pirate4all.com##.pirat-before-content -animenhentai.com##.post.has-post-thumbnail video#gump:upward(.post):remove() -animenhentai.com###custom_html-3 -||edge.api.brightcove.com^$xhr,removeparam=ad_config_id,domain=9now.com.au|mech-plus.com|threenow.co.nz -threenow.co.nz##.EpisodeAdBlockerWarning -9now.com.au##.vjs-cuepoint -egyshare.cc##.fakeplayer -kshow123.net###ads-top-player -kshow123.net###closeads -designtagebuch.de##+js(set, SteadyWidgetSettings.adblockActive, false) -@@*$xhr,domain=designtagebuch.de -designtagebuch.de##[id^="desig-"]:has-text(ANZEIGE) -designtagebuch.de##.zwischen-posts-wrapper -designtagebuch.de###desig-widget-59 -designtagebuch.de##.seitenende-wrapper -vfxdownload.net##+js(acs, eval, replace) -vfxdownload.net##[href^="https://aejuice.com"] -vfxdownload.net###custom_html-35 -vfxdownload.net###custom_html-40 -gatexplore.com###tie-block_640 -gatexplore.com###tie-block_669 -covrhub.com##+js(set, adblock, false) -covrhub.com##+js(nowoif) -nbcsportsedge.com##.edge-max-marketing-banner -audiobooks4soul.com##+js(nostif, show) -audiobooks4soul.com##[href^="https://ezaudiobooks.com/"] -||audiobooks4soul.com/*.custom-ads-block-detector. -azhar-c.info,concienciaradio.com,kontasas.gr##.stream-item -juazeiro.ba.gov.br###tie-block_1735 -juazeiro.ba.gov.br###tie-block_3287 -rtilinks.com##+js(acs, eval, replace) -mp3juices.*##+js(aost, Math.random, computed) -mp3juices.*##+js(nowoif) -mp3juices.*##[class^="result_two__"][target="_blank"] -||mp3juices.cc^$csp=default-src 'self' 'unsafe-inline' *.dropbox.com *.dropbox-dns.com *.gstatic.com *.googleapis.com *.google.com ytpp3.com *.youtube.com -mp3juices.icu##+js(nano-sib, temp) -fapguru.com##+js(aost, $, inlineScript) -##[href="https://clickaine.com"] -fapguru.com##.underplayer_banner -iphonechecker.herokuapp.com##+js(no-fetch-if, method:HEAD) -iphonechecker.herokuapp.com##.iad -systopedia.com##+js(aost, String.prototype.charCodeAt, ai_) -dofusports.xyz##+js(nostif, debugger) -muvibg.com##+js(set, noAdBlock, true) -inhumanity.com##+js(aopr, inhumanity_pop_var_name) -watchdoge.xyz##+js(nosiif, visibility, 1000) -watchdoge.xyz##+js(nano-sib, sec) -fapcat.com##+js(nowoif) -fapcat.com##.fade.top -fapcat.com##.spot-horizontal -fapcat.com##.spot-list -||a.fapcat.com^ -||gamefz.com/c.asp$frame -rp5.*##+js(nostif, 0x) -rp5.*##.adsbygoogle:upward(1) -bangsaku.web.id##+js(acs, document.addEventListener, google_ad_client) -||cdn.rawgit.com/nikoarisandi/newbangsaku/$script,3p -5ggyan.com##+js(acs, document.addEventListener, google_ad_client) -5ggyan.com##^script:has-text(google_ad_client) -5ggyan.com###sidebar1 > .HTML:has(> .widget-content > .adsbygoogle) -5ggyan.com##+js(nano-sib, countDown) -5ggyan.com##.progress -5ggyan.com##button:style(display: inline-block !important) -freetutorialsudemy.com##.freeu-sidebar -freetutorialsudemy.com##.freeu-widget -coursesghar.com##+js(rmnt, script, deblocker) -coursesghar.com###custom_html-6 -mydramalist.com##.is-desktop-ads -mydramalist.com##.ad-removal-info:has-text(ads):upward([class]) -stardeos.com##+js(no-xhr-if, url:googlesyndication) -stooq.*##div[style="position:relative;width:970px;height:250px"] -stooq.*##div[style="position:relative;width:300px;height:250px"] -stooq.*###f13 > table > tbody > tr > td > .f13 -stooq.*###f13 > b:has-text(Sponsor):upward(4) -stooq.*##td#f13:nth-of-type(3) > table:nth-of-type(4):has(> tbody > tr > td) -myshopify.com##+js(acs, document.addEventListener, adsBlocked) -pcwarehub.com,taregna.com##+js(acs, eval, replace) -moddedguru.com##+js(acs, eval, replace) -moddedguru.com##div.banner -crazytechgo.com##+js(acs, eval, replace) -*$image,redirect-rule=1x1.gif,domain=freevpn4you.net -freevpn4you.net##*:has(> .adsbygoogle) -@@||freevpn4you.net^$ghide -vevioz.com##+js(aopr, app_vars.force_disable_adblock) -vevioz.com##+js(aopr, open) -vevioz.com##+js(set, blurred, false) -pelis-online.net##.adv -advertiserandtimes.co.uk##+js(nostif, enforceAdStatus) -advertiserandtimes.co.uk###nagBG -advertiserandtimes.co.uk##body:style(overflow: auto !important;) -advertiserandtimes.co.uk##.advert -advertiserandtimes.co.uk##.MPU -advertiserandtimes.co.uk##.TaboolaSide -! projectfreetv. stream anti adb -projectfreetv.stream##+js(nostif, offsetHeight) -milfnut.*##+js(set, console.clear, noopFunc) -milfnut.*##+js(aeld, contextmenu) -milfnut.*##+js(aopr, __Y) -milfnut.*##+js(acs, onload, onclick) -milfnut.*##+js(nowoif) -streamm4u.club##+js(aopr, __Y) -charexempire.com##+js(aopr, app_vars.please_disable_adblock) -charexempire.com##+js(aopr, open) -charexempire.com##+js(set, blurred, false) -||i.imgur.com/*.gif$image,domain=charexempire.com -charexempire.com##.banner -xn--swqq1zt9i.net##+js(acs, document.addEventListener, nextFunction) -! xvideos2020.me popup -xvideos2020.me##+js(nostif, loadScripts) -mejoresmodsminecraft.site##+js(acs, decodeURIComponent, ai_adb) -watchdoctorwhoonline.com##+js(aopr, mm) -watchdoctorwhoonline.com##.custom-html-widget.textwidget > .close -watchdoctorwhoonline.com##.sidebar_episodes2 -synonyms.com##+js(set, canRunAds, true) -pcgamesn.com##header:style(top:0 !important) -pcgamesn.com##.legion_primiswrapper -animenewsnetwork.com##[href^="/advertorial/"]:upward(2) -! anxcinema. com / website popups -anxcinema.*##+js(ra, href, #clickfakeplayer) -anxcinema.*##+js(aopr, __Y) -definitions.net##+js(set, canRunAds, true) -pixroute.com##+js(nowoif) -pixroute.com##+js(set, proclayer, noopFunc) -uploady.io##+js(set, timeleft, 0) -uploady.io##+js(nowoif) -uploady.io##+js(noeval-if, replace) -uploady.io###downloadbtn[style$="z-index: 99999;"] -ravenmanga.xyz##+js(acs, addEventListener, onerror) -ravenmanga.xyz##[href^="https://a-ads.com"] -||i.imgur.com/niNoP1F.gif^$3p -||cdn777.net/site/usagoals/sitelinks/xpopme_in.js^ -toxicwap.us##+js(aost, Math, https) -toxicwap.us##+js(aopr, mm) -||babup.com^$3p -||toxicwap.us/sw.js$script,1p -dvdgayonline.com##+js(aost, setTimeout, ads) -dotadostube.com,taradinhos.com##+js(noeval-if, ads) -dvdgayporn.com##+js(aeld, DOMContentLoaded, adsBlocked) -dvdgayporn.com##+js(ra, href, #clickfakeplayer) -dotadostube.com,taradinhos.com##div:has(> .video-block-happy) -dotadostube.com##.happy-player-beside -dvdgayporn.com,taradinhos.com##.widget_custom_html -taradinhos.com##.under-player-ad -||dvdgayonline.com^$3p -||taradinhos.com^$3p -! parked domains anti adb -/px.gif?$image,redirect-rule=1x1.gif -! buffstream. io/fun popups -buffstream.*##+js(aopr, mm) -*$script,3p,denyallow=cloudflare.com,domain=ytmp3eu.net -subedlc.com##+js(acs, document.addEventListener, nextFunction) -avjamack.com,avjamak.net##+js(nostif, nextFunction, 250) -avjamack.com,avjamak.net##.widget-img -||avjamack.com/data/by_banner/ -||avjamak.net/data/by_banner/ -iimanga.com##+js(aeld, DOMContentLoaded, adsBlocked) -iimanga.com##div[id^="teaser"] -@@||thevideome.com^$ghide -rontechtips.com##+js(acs, eval, replace, /^data:/) -rontechtips.com##+js(no-xhr-if, googlesyndication) -! sites anti adb "interfering with this page" -chicksonright.com,moneyversed.com##+js(aost, Math.random, inlineScript) -curseforge.com##+js(nano-sib) -deckbandit.com##+js(refresh-defuser) -deckbandit.com##^meta[http-equiv="refresh"] -kinas.tv##+js(nowoif) -||kinas.tv/info.mp4$media,1p,redirect=noopmp3-0.1s -1stream.*##+js(acs, setTimeout, admc) -1stream.*##+js(acs, document.createElement, "script") -1stream.*##+js(nostif, "admc") -1stream.*##^script[type]:has-text(c=document.createElement) -stocktwits.com##div[class*="AdBanner_"] -stocktwits.com##.LazyLoad.is-visible:has([data-aa-adunit]) -stocktwits.com##p[class^="Disclosure_disclosure"]:has(a[href="https://stocktwits.com/about/legal/disclosures/3rd-party-ads/"]) -! genius.com PH -genius.com##div:has(> div[class^="TopContentdesktop__PromoContainer-"]) -xxxdl.net##.banners -||xxxdl.net/nothing.aspx? -thienhatruyen.com##+js(nowoif) -@@||futbolfullenvivo.com^$ghide -shuajota.com##+js(acs, document.addEventListener, nextFunction) -shuajota.com###HTML8 -shuajota.com###HTML10 -shuajota.com###HTML9 -shuajota.com###HTML14 -shuajota.com###HTML16 -witanime.com##+js(nowoif) -@@||thetruedefender.com^$ghide -thetruedefender.com##.adsbyvli -thetruedefender.com###text-4 -asiaon.*##+js(no-xhr-if, googlesyndication) -/aot-content/assets/*/cb-ads/*$domain=asiaon.top|asiaontop.com -m4news.com##.demand-supply -m4news.com###id-custom_banner -@@||tv247.us^$ghide -tv247.us##.afc_popup -calculator-online.net##+js(no-fetch-if, ads) -calculator-online.net##+js(set, load_ads, trueFunc) -calculator-online.net##.sticky_ad -calculator-online.net##.related_box:has(.adds):style(height: 1px !important;) -onionplay.*##+js(ra, href, a#clickfkplayer) -! afScript popups -iguarras.com,iputitas.net##+js(aopr, afScript) -messitv.net##+js(aopw, atOptions) -||clk.asia/sw.js$script,1p -clk.asia,imperialstudy.com,skincarie.com##+js(nosiif, visibility, 1000) -clk.asia##+js(nowoif) -clk.asia##+js(set, blurred, false) -||clk.asia/ads/*$frame -||clicksfly.com/img/ref/clicksglygifbanner2.gif -yifysubtitles.vip##+js(acs, document.createElement, /l\.parentNode\.insertBefore\(s/) -bigwank.com###mobile_pop -bigwank.com##.underplayer_banner -||bigwank.com/extension/aine/ -||bigwank.com/sw.js$script,1p -*$frame,script,3p,domain=crownimg.com -coloringpage.eu,conocimientoshackers.com,juegosdetiempolibre.org,karaokegratis.com.ar,mammaebambini.it,riazor.org,rinconpsicologia.com,sempredirebanzai.it,vectogravic.com##+js(no-fetch-if, method:HEAD) -! pxrnxx.xyz popunder -pxrnxx.xyz##+js(set, dclm_ajax_var.disclaimer_redirect_url, '') -tutorial.siberuang.com##+js(no-fetch-if, ads) -googledrivelinks.com##+js(aost, String.prototype.charCodeAt, ai_) -googledrivelinks.com##+js(aopr, adBlockDetected) -luckydice.net##+js(acs, Math.imul, charCodeAt) -luckydice.net##+js(nosiif, afStorage) -luckydice.net##+js(nowoif, !coinsearns.com) -luckydice.net##div[style="position: fixed; display: block; width: 100%; height: 100%; inset: 0px; background-color: rgba(0, 0, 0, 0); z-index: 300000;"] -luckydice.net##div[style="width:300px;height:250px;display: inline-block;margin: 0 auto"] -luckydice.net##ins[class] -luckydice.net,adarima.org##+js(set, detectAdBlock, noopFunc) -mcrypto.club,luckydice.net,adarima.org###wpsafe-generate, #wpsafe-link:style(display: block !important;) -mcrypto.club##.safelink-recatpcha:upward(div):style(display: block !important;) -mcrypto.club##div[style="display: none;"]:style(display: block !important;) -shinchu.*##.g-recaptcha:upward(form > div):style(display: block !important;) -egfly.xyz,linka.click##+js(set, blurred, false) -linka.click##+js(nowoif) -*$script,domain=miraculous.to,redirect-rule=noopjs -@@||miraculous.to/global_data/gtag/js$xhr,1p -miraculous.to##+js(aeld, hashchange) -miraculous.to##+js(aeld, popstate) -miraculous.to##+js(aopw, Fingerprint2) -miraculous.to##+js(aopr, history.back) -miraculous.to##+js(nowoif) -porngames.club,sexgames.xxx##+js(set, starPop, 1) -bit-shares.com##+js(aeld, load, onload) -mytoolz.net##+js(acs, document.createElement, adb) -gamingdeputy.com##+js(nostif, ai_adb) -alphagames4u.com##+js(acs, addEventListener, ai_) -wikirise.com##+js(acs, decodeURIComponent, ai_) -filesus.com,gotxx.*,sturls.com##+js(nostif, getComputedStyle, 250) -gotxx.*##+js(aost, Element.prototype.matches, litespeed) -sturls.com##+js(acs, decodeURI, decodeURIComponent) -gotxx.*##div[class][style^="position: absolute; cursor: pointer; z-index: 2147483646"] -sturls.com##+js(set, blurred, false) -sturls.com###cc:style(display: block !important;) -sturls.com###timer -edealinfo.com##+js(acs, $, offsetHeight) -edealinfo.com##+js(no-xhr-if, googlesyndication) -! popups https://forums.lanik.us/viewtopic.php?t=46951 -mlsbd.shop##+js(aost, Math, inlineScript) -mlsbd.*##+js(nowoif) -tinytranslation.xyz###HTML5 -*$xhr,redirect-rule=nooptext,domain=paraphrasetool.com -paraphraser.io##body > .justify-content-center -@@||paraphraser.io^$ghide -paraphraser.io##.adsenbox:not(#detect) -rephrase.info##.text-center:not([id]) [id^="adngin-"]:upward(.text-center:not([id])) -wouterplanet.com##+js(rmnt, script, clicky) -freexcafe.com##+js(acs, __PoSettings) -freexcafe.com##.left-col-gal-br -freexcafe.com###rightcolumn -freexcafe.com###banner -freexcafe.com###join -freexcafe.com##.hotdeal -freexcafe.com##div.bottom-300x250 -freexcafe.com###txtbanner -! paramountnetwork video ads -||mtvnservices.com/aria/bentojs.js -*$media,redirect=noopmp3-0.1s,domain=paramountnetwork.com -pcworld.es##.stickyAdWrapper -*$popunder,domain=ouo.io -nowtolove.com.au##.page__content-header:style(height: 50px !important) -@@||anime-king.com^$ghide -! cdnondemand.org variants -/^https?:\/\/[a-z]{5,7}\.com\/script\/[-_0-9A-Za-z]+(\.min)?\.js$/$script,3p,match-case,from=~edu|~gov,header=x-guploader-uploadid -.php?*&sadbl=1&$xhr,3p -##a[dontfo=""][style$="position: absolute; z-index: 2147483647;"] -sexlist.tv##+js(disable-newtab-links) -sexlist.tv##.link-premium -sexlist.tv##.camitems -||sexlist.tv/player/html.php$frame -readgraphicnovels.blogspot.com##+js(nobab) -@@||washingtoninformer.com^$ghide -washingtoninformer.com##.widget a.gofollow:upward(.widget) -washingtoninformer.com##.a-772 -xozilla.xxx##+js(aost, HTMLSelectElement, Object) -||xozilla.xxx/player/html.php$frame,1p -||xxxbule.com^$csp=script-src -mobitool.net##+js(acs, decodeURIComponent, ai_) -letsmakeiteasy.tech###quads-myModal -||ytsubme.com/assets/adblock/ -ytsubme.com##+js(nowoif, youtube) -ytsubme.com##+js(nano-stb, aTagChange, 12000) -@@||filmpertutti.*^$ghide -dragontranslation.com##+js(aost, String.prototype.charCodeAt, https) -dragontranslation.com###teaser2 -dragontranslation.com##div[style$="position: fixed;"][style*="z-index: 2147483647;"] -thecustomrom.com##+js(acs, eval, replace) -thecustomrom.com##.ai_widget -thecustomrom.com##+js(acs, decodeURIComponent, ai_) -thecustomrom.com##+js(rmnt, script, deblocker) -thecustomrom.com##+js(nano-stb, window.location.href, *) -111.90.159.132##+js(nostif, mfp) -111.90.159.132##+js(set, Object.prototype.ads, noopFunc) -/wp-content/plugins/catfish-advert-banner/*$script -111.90.159.132##[href="http://buaksib.in/"] -111.90.159.132###catfish -111.90.159.132##.mfp-ready -||111.90.159.132/*.gif$image -phsensei.com##+js(acs, String.fromCharCode, decodeURIComponent) -homeairquality.org,techtrim.tech##+js(no-fetch-if, googlesyndication) -homeairquality.org,techtrim.tech##+js(no-xhr-if, googlesyndication) -techsolveprac.com##+js(nostif, display, 5000) -fileborder.com##+js(acs, String.fromCharCode, decodeURIComponent) -! insider.com PH -insider.com##.in-post-sticky:has(> .ad-wrapper) -myshrinker.com##+js(set, blurred, false) -myshrinker.com##.banner-inner -cricstream.*##.w-100.position-absolute.h-100 -watch.cricstream.*##button:has-text(/Watch|🎟|👉/) -! wishanimes.com popup -wishanimes.com##+js(acs, JSON.parse) -onlineporno.cc##.spot-box -onlineporno.cc##.w-spots -downloadfreecourse.com##+js(aost, fetch, inlineScript) -@@||downloadfreecourse.com^$ghide -phanmemmaytinh.net##+js(acs, eval, replace) -phanmemmaytinh.net###custom_html-10 -phanmemmaytinh.net###custom_html-2 -phanmemmaytinh.net###custom_html-3 -tinhocdongthap.com##+js(aeld, DOMContentLoaded, adsBlocked) -tinhocdongthap.com##+js(nostif, show) -! popmagic crap (classic popmagic filter does not work => blocking videos) -pornpapa.com,videojav.com##+js(aost, $, inlineScript) -pornpapa.com##.underplayer_banner -||surinenglish.com/adbd^ -av01.tv##+js(nowoif) -av01.tv##+js(ra, onclick, a[onclick^="setTimeout"]) -av01.tv##.row > div:has(> #tile-ad) -av01.tv##div[style="width: 100%; height: 100%; top: 0px; position: fixed; z-index: 1; background-color: rgba(0, 0, 0, 0.8); overflow-x: hidden; transition: all 0.2s ease 0s; padding: 5%;"] -av01.tv##+js(rc, vjs-hidden, .vjs-control-bar, stay) -av01.tv##iframe[width="728"] -freewp.io##+js(no-xhr-if, /^/) -universalfreecourse.com##+js(acs, addEventListener, "No") -strdef.world###stream-banner -strdef.world##div[style^="z-index: 999999; background-image: url(\"data:image/gif;base64,"][style$="position: absolute;"] -||strdef.world/js/acheck.js -||gospeljingle.com^$csp=default-src 'unsafe-inline' 'self' data: *.ytimg.com *.facebook.com *.google.com *.gstatic.com *.youtube.com *.googleapis.com *.wp.com *.gospeljingle.com *.googletagmanager.com -studybullet.com##+js(set, adsBlocked, false) -studybullet.com##+js(acs, b2a) -! bigyshare .com popups -bigyshare.com##+js(nowoif) -@@||dlink.mobilejsr.com^$ghide -dlink.mobilejsr.com##[src*="png"] -@@||driveup.in^$ghide -driveup.in##+js(nowoif, /^/, 0) -@@||scatfap.com/scat-porn/modules/vids/misc_static/adverts.js -freecourse.tech##+js(nostif, ai_) -latest-files.com##+js(acs, document.addEventListener, offsetParent) -@@||onuploads.com^$ghide -onuploads.com##ins.adsbygoogle -onuploads.com##+js(nano-stb, seconds) -weszlo.com##+js(no-fetch-if, ad) -@@||weszlo.com^$ghide -weszlo.com##.ad-placeholder-bg -! moviemad. vip popups -moviemad.*##+js(nowoif) -cotravinh.blogspot.com##+js(aeld, load, nextFunction) -chicagobearshq.com,chicagobullshq.com,chicagosportshq.com,cubshq.com,tigernet.com##+js(acs, document.getElementById, JSON) -! ytube2dl. com popups -ytube2dl.com##+js(aeld, , pop) -xenvn.com##+js(nostif, ads) -@@||xenvn.com^$ghide -xenvn.com##.ad_block:style(visibility: hidden !important;) -tvhai.org##+js(aeld, , open) -plhqtvhay.xyz##+js(nosiif, 0x) -! glotorrents.* ads, popups -glotorrents.fr-proxy.com##+js(aopw, decodeURI) -glotorrents.fr-proxy.com##+js(aopw, adcashMacros) -glotorrents.fr-proxy.com,glotorrents.theproxy.ws##+js(nowoif) -glotorrents.fr-proxy.com,glotorrents.theproxy.ws##+js(aopr, String.prototype.charCodeAt) -tutele.sx##+js(aopr, Overlayer) -tutele.sx##+js(nostif, "admc") -/script/ncsu.js$3p -/script/nbsu.js$3p -/script/ndsu.js$3p -/^https?:\/\/[a-z]{6,12}\.com\/script\/n[a-z]su\.js$/$script,3p -luotphimzz.com##.fakeplayer -luotphim.net##.fakeplayer -luotphim.cc##.fakeplayer -luotphim.cc##.adsphim-popup-center -arabincest.com##+js(acs, $, test) -||krunkercentral.com^$csp=default-src 'unsafe-inline' 'self' *.google.com *.gstatic.com *.googleapis.com *.wp.com *.googletagmanager.com *.jquery.com -isi7.net##+js(no-fetch-if, adsbygoogle) -isi7.net###wpsafe-wait1 -isi7.net###wpsafe-generate:style(display: block !important;) -camwhores.tv##+js(nostif, innerText, 2000) -wapsing.com##+js(nowoif) -wapsing.com##a[href*="panchaxumbilic.com"],a[href*="trustedcpmrevenue.com"] -||just-upload.com^$doc,csp=default-src 'unsafe-inline' 'unsafe-eval' 'self' *.google.com *.gstatic.com *.googleapis.com *.googletagmanager.com *.jquery.com *.bootstrapcdn.com *.jsdelivr.net *.cloudflare.com -||d1t4ekjh9ps4ob.cloudfront.net^ -hotdesimms.com##+js(nostif, offsetHeight) -@@||animesaria.com^$ghide -@@||coinpayz.xyz^$ghide -coinpayz.xyz##.ads -||coinpayz.xyz/*.php$frame -apiyt.com,masstamilans.com,mymp3song.*,okmusi.com##+js(nowoif) -xnxx-sex-videos.com##+js(nostif, /out.php) -wpking.in##+js(acs, eval, replace) -#@#.Ad-Container -#@#.sidebar-ad -##.Ad-Container:not(.adsbygoogle) -~ekitan.com,~kissanadu.com##.sidebar-ad:not(.adsbygoogle) -##.stream-item-widget -@@||printablebricks.com^$ghide -! orgasmatrix. com popmagic -orgasmatrix.com##.card.post:has([href*="landing."]) -@@||loot.tv^$ghide -gifhq.com##+js(acs, document.dispatchEvent, myEl) -gifhq.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -gifhq.com##+js(acs, $, open) -||gifhq.com/d2.js -ibomma.*##[style="display:none"]:style(display: block !important;) -ibomma.*###abEnabled-note -! torpedogratis.org -torpedogratis.org###ads -teevee.asia##+js(nostif, innerHTML) -itdmusics.com##+js(aeld, load, onload) -itdmusics.com##+js(acs, eval, replace) -@@||itopmusic.org^$ghide -bullfrag.com##+js(acs, eval, replace) -pdfaid.com##+js(nostif, offsetHeight) -persianhive.com##+js(no-xhr-if, adsbygoogle) -lootup.me##+js(acs, document.getElementById, stop) -||mobile-tracker-free.com/dashboard/scripts/detectBlockAds/isPremiumDemo.php -mobile-tracker-free.com##+js(set, detectBlockAds, noopFunc) -motphimtv.com##+js(set, console.clear, undefined) -wyze.com##+js(no-fetch-if, analytics) -*$script,domain=wyze.com,redirect-rule=noopjs -studyflix.de##.huge-notification -camstreams.tv##div[style="position: absolute; inset: 0px; overflow: hidden; z-index: 160; background: transparent none repeat scroll 0% 0%; display: block;"] -||camplethora.com^ -camstreams.tv###sliderBox -burnbutt.com##+js(acs, document.addEventListener, google_ad_client) -||filma24.*/*.gif$image -filma24.*###vidad -filma24.*##[href^="https://bit.ly/"] -filma24.*##[href="https://codeit.al/services/"] -/reclama/ads.js$script,redirect-rule=prebid-ads.js -! casamireasa. biz anti adb -casamireasa.biz##+js(acs, document.write, Adb) -! fembed-hd. com popups -fembed-hd.com##+js(aopr, __Y) -mconverter.eu##+js(nostif, offsetHeight) -joomlabeginner.com##+js(nostif, eb) -joomlabeginner.com##.bannergroup -learnclax.com##+js(acs, $, fetch) -ytmp3x.com##+js(nowoif) -newsmondo.it##+js(acs, document.getElementById, "detect") -*$xhr,redirect-rule=nooptext,domain=zwielkopolski24.pl -go.adinsurance.xyz##+js(set, blurred, false) -goduke.com##+js(no-xhr-if, /analytics|livestats/) -hyipstats.net##+js(no-fetch-if, adsbygoogle) -hyipstats.net##.w-125px -cutp.in##+js(aopr, app_vars.force_disable_adblock) -mobitaak.com##+js(nano-sib) -@@*$script,1p,domain=mobitaak.com -itudong.com##+js(aeld, load, nextFunction) -tainhanhvn.com##+js(aeld, load, /nextFunction|2000/) -pfps.gg##+js(set, ga, trueFunc) -arhplyrics.in##+js(nano-sib) -claimtrx.com##+js(aeld, load, 'block') -claimtrx.com##.ads -! 4kporn. xxx popunder -4kporn.xxx##+js(set, flashvars.popunder_url, '') -arhplyrics.in##+js(no-fetch-if, googlesyndication) -scrolller.com##.ad-block-popup:upward(2) -scrolller.com##.native-ad-item-panel:upward(.vertical-view__item) -||photon.scrolller.com/categories/$image,media -||photon.scrolller.com/scrolller/$media -scrolller.com##+js(no-fetch-if, doubleclick) -||dirp.me^$csp=default-src 'unsafe-inline' 'self' https://extraimage.net *.extraimage.info *.imgur.com *.wikimedia.org *.dyncdn.cc *.picturedent.org https://checkmy.pictures *.dirp.me *.googleapis.com *.gstatic.com -dirp.me##+js(aopr, puShown) -dirp.me##[data-href^="/vpn"] -dirp.me##[id]:has-text(Provider) -boainformacao.com.br##+js(no-xhr-if, adsbygoogle) -pinterest.*##a[href*="&epik="]:upward([data-grid-item]) -!pinterest.*##[data-grid-item]:has([aria-label]:not([aria-label*="pinterest"])[href^="http"]) -!#if !env_mobile -pinterest.*##[data-grid-item]:has([data-test-pin-id] [data-test-id^="one-tap-desktop"] > a[href^="http"][rel="nofollow"]) -!#else -pinterest.*##[data-grid-item]:has([data-test-pin-id] a[href^="http"][rel] [data-test-id="pincard-oneTap-with-link"]) -!#endif -pinterest.*##+js(json-prune, resource_response.data.[-].pin_promotion_id) -@@*$ghide,domain=pinterest.* -distrowatch.org##[href*="3cx"]:upward(tbody) -distrowatch.org##[href^="https://pbxinaflash.com/"] -! ubuntudde.com anti-adb -ubuntudde.com##+js(aopw, b2a) -@@||elwood.io^$ehide -pigeonburger.xyz##+js(no-xhr-if, googlesyndication) -dl.apkmb.com##.btnDownload:has-text(SHARE) -dash-free.com##+js(set, go_popup, {}) -dash-free.com##+js(set, blurred, false) -dash-free.com##+js(aopr, app_vars.force_disable_adblock) -autofaucet.dutchycorp.space##[href^="https://enicyvys.xyz/"] -autofaucet.dutchycorp.space##[href*="banner"] -autofaucet.dutchycorp.space##[src^="blob:https://autofaucet.dutchycorp.space/"]:remove() -@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$xhr,domain=coin-free.com|kienthucrangmieng.com|chinhnhacoban.com|tremamnon.com|95news.com|vnpttelle.com -*$script,3p,domain=coin-free.com|kienthucrangmieng.com|chinhnhacoban.com|95news.com|vnpttelle.com,denyallow=iconify.design|cloudflare.com -coin-free.com,kienthucrangmieng.com##[id^="wpsafe-wait"] -coin-free.com,kienthucrangmieng.com###wpsafe-generate, #wpsafe-link:style(display: block !important) -*$script,redirect-rule=noopjs,domain=coin-free.com|kienthucrangmieng.com|chinhnhacoban.com|95news.com|vnpttelle.com -snowurl.com##+js(nowoif) -snowurl.com##+js(set, blurred, false) -snowurl.com##+js(set, go_popup, {}) -tremamnon.com##+js(aeld, DOMContentLoaded, adsBlocked) -chinhnhacoban.com,tremamnon.com,vnpttelle.com##[id^="wpsafe-generate"], #continue:style(display: block !important;) -kienthucrangmieng.com,coin-free.com,tremamnon.com##^script:has-text(htmls) -!#if !cap_html_filtering -kienthucrangmieng.com,coin-free.com,tremamnon.com##+js(rmnt, script, htmls) -!#endif -actresstoday.com##+js(acs, eval, replace) -! fastream. to popups + anti adb -fastream.to##+js(aopr, afScript) -@@||fastream.to^$script,1p -sakarnewz.com##+js(nostif, show) -sakarnewz.com###custom_html-2 -! telenord. it videos -telenord.it##+js(nano-sib) -snlookup.com##+js(no-xhr-if, ads) -snlookup.com##+js(rmnt, script, deblocker) -mundotec.pro##+js(nano-sib, seconds) -epainfo.pl##+js(acs, document.addEventListener, adsBlocked) -freedownloadvideo.net##+js(aost, setTimeout, adsBlocked) -! raky. in antiadb -raky.in##+js(no-fetch-if, googlesyndication) -raky.in##+js(nano-sib) -titantv.com##+js(aeld, load, player) -@@||ntv.io/serve/load.js$script,domain=titantv.com -titantv.com###sidebox -1apple.xyz##+js(no-xhr-if, mahimeta) -helpdice.com##+js(acs, onload, "iframe") -forum.admiregirls.com##+js(acs, $, test) -gomoviefree.*##.mobile-btn -vidoo.org##.banner -3cinfo.net##+js(aeld, , document.oncontextmenu) -otakukan.com##+js(nostif, innerHTML) -otakukan.com##.ai-attributes -latinohentai.com##+js(ra, href, #clickfakeplayer) -latinohentai.com##+js(acs, document.createElement, __htas) -! mangastream.mobi popup -mangastream.mobi###myModal -||adclixx.net^$script,3p,redirect=nobab2.js:10 -||adnetasia.com^$script,3p,redirect=nobab2.js:10 -||adtrackers.net^$script,3p,redirect=nobab2.js:10 -||bannertrack.net^$script,3p,redirect=nobab2.js:10 -||ads.twitter.com/favicon.ico$image,3p,redirect-rule=32x32.png -||advertising.yahoo.com/favicon.ico$image,3p,redirect-rule=32x32.png -||doubleclickbygoogle.com/favicon.ico$image,3p,redirect-rule=32x32.png -||google.com/adsense/start/images/favicon.ico$image,3p,redirect-rule=32x32.png -||gstatic.com/adx/doubleclick.ico$image,3p,redirect-rule=32x32.png -#@##AdLayer1 -#@##ad_300 -#@##ad_728 -#@##ad_area -#@##ad_big -#@##ad_box -#@##ad_footer -#@##ad_slot -#@##ad_space -#@##adframe:not(frameset) -#@##adheader -#@##ads-1 -#@##ads-banner -#@##ads-footer -#@##adspace -#@##adsquare -#@##banner468 -#@##banner728x90 -###AdLayer1:not([style^="position: absolute; left: -5000px"]) -###ad_300:not([style^="position: absolute; left: -5000px"]) -###ad_728:not([style^="position: absolute; left: -5000px"]) -###ad_area:not([style^="position: absolute; left: -5000px"]) -###ad_big:not([style^="position: absolute; left: -5000px"]) -~zunda.site###ad_box:not([style^="position: absolute; left: -5000px"]) -###ad_footer:not([style^="position: absolute; left: -5000px"]) -###ad_slot:not([style^="position: absolute; left: -5000px"]) -~musmus.main.jp,~streetinsider.com###ad_space:not([style^="position: absolute; left: -5000px"]) -~hatenablog.com,~puzzle-ch.com###adframe:not(frameset):not([style^="position: absolute; left: -5000px"]) -###adheader:not([style^="position: absolute; left: -5000px"]) -###ads-1:not([style^="position: absolute; left: -5000px"]) -###ads-banner:not([style^="position: absolute; left: -5000px"]) -###ads-footer:not([style^="position: absolute; left: -5000px"]) -~ma-bank.net,~rxlife.net,~video.tv-tokyo.co.jp###adspace:not([style^="position: absolute; left: -5000px"]) -###adsquare:not([style^="position: absolute; left: -5000px"]) -###banner468:not([style^="position: absolute; left: -5000px"]) -###banner728x90:not([style^="position: absolute; left: -5000px"]) -! temp specific rules -xnxx.com,xvideos.*###ad-footer -live.cricket.com.au##.ad-placement, .yes -#@#.google-ad -~mmiyue.com##.google-ad:not(.testAd) -/ads-prebid.js$script,redirect-rule=prebid-ads.js -/prebid-ads.js$script,redirect-rule=prebid-ads.js,domain=~exey.io -! www.gamedeveloper.com -/prebid-ads/adsensebase.js$script,redirect-rule=prebid-ads.js -! www.hero-wars.com -/prebid-article-ad-ad-300x250.js$script,redirect-rule=prebid-ads.js -@@/js/prebid-ads.js$script,1p -! CHP Ads Block Detector -#@#.ad-link -##.ad-link:not(.adsbox) -#@#.ad-unit -#@#.ad_unit -~lamire.jp##.ad-unit:not(.text-ad):not(.textads) -##.ad_unit:not(.text-ad) -#@#[data-ad-module] -#@#[data-ad-width] -#@#[data-adblockkey] -#@#[data-advadstrackid] -#@#[data-ad-manager-id] -##[data-ad-module]:not([style$="left: -10000px !important; top: -1000px !important;"]):not(.adsbygoogle) -##[data-ad-width]:not([style$="left: -10000px !important; top: -1000px !important;"]):not(.adsbygoogle) -##[data-adblockkey]:not([style$="left: -10000px !important; top: -1000px !important;"]):not(html):not(.adsbygoogle) -##[data-advadstrackid]:not([style$="left: -10000px !important; top: -1000px !important;"]):not(.adsbygoogle) -##[data-ad-manager-id]:not([style$="left: -10000px !important; top: -1000px !important;"]):not(.adsbygoogle) -#@#.ad-slot -##.ad-slot:not(.adsbox):not(.adsbygoogle) -#@#.ad-300x250 -##.ad-300x250:not(.ads) -||doubleclick.net^$xhr,redirect=noop.txt -||media.fastclick.net/|$xhr,3p,redirect-rule=noop.txt -||ads.facebook.com/|$xhr,3p,redirect-rule=noop.txt -||advice-ads.s3.amazonaws.com/|$xhr,3p,redirect-rule=noop.txt -||ads.youtube.com/|$xhr,3p,redirect-rule=noop.txt -||ads.reddit.com/|$xhr,3p,redirect-rule=noop.txt -||ads-api.twitter.com/|$xhr,3p,redirect-rule=nooptext -||ads.pinterest.com/|$xhr,3p,redirect-rule=noop.txt -||adversal.com/|$xhr,3p,redirect-rule=noop.txt -||sovrn.com/|$xhr,3p,redirect-rule=noop.txt -||ads.tiktok.com/|$xhr,3p,redirect-rule=noop.txt -||propellerads.com/|$xhr,3p,redirect-rule=noop.txt -||infolinks.com/|$xhr,3p,redirect-rule=noop.txt -||realsrv.com/popunder1000.js$xhr,3p,redirect=noop.txt -||exdynsrv.com/video-slider.js$xhr,3p,redirect=noop.txt -mymusicreviews.com,thechat.cafe##+js(aopr, chp_adblock_browser) -nj.com##.ad-unit[id] -kiplinger.com##.ad-unit, .fake -livescience.com##.widget-ads -globfone.com##+js(no-xhr-if, ads) -donugdee.com##.ad-overlay-click -donugdee.com##.moviePlayer -donugdee.com###second-rowiframe -fztvseries.mobi##+js(nosiif, visibility, 1000) -desiflixindia.com##+js(no-fetch-if, ads) -desiflixindia.com##+js(nano-sib) -! tv-sport-hd. com ads popups -tv-sport-hd.com##[src="/rcl/reclama.php"] -tv-sport-hd.com###reklama1 -||tvs-widget.com/sticker.jpg$image -||tvs-widget.com/rcl/ -androidacy.com##+js(no-fetch-if, method:HEAD) -@@||pagead2.googlesyndication.com/pagead/$script,xhr,domain=androidacy.com -@@||androidacy.com^$ghide -androidacy.com##+js(rmnt, script, charCodeAt) -@@||fundingchoicesmessages.google.com^$domain=androidacy.com -@@||production-api.androidacy.com^$script,1p -film01stream.ws##+js(ra, href, .mvi-cover) -film01stream.ws##.f-inner -m4ufree.*##+js(aopr, BetterJsPop) -glosbe.com###topBannerContainer -||www.sfr.fr^$script,redirect-rule=noop.js,domain=red-by-sfr.fr -t18cv.com##+js(aopr, remove_adblock_html) -publicflashing.me##+js(aost, console, onload) -@@||cdn.dqst.pl/assets/ads.js$xhr,domain=tko.pl -plotaroute.com###RightPanelAds -plotaroute.com###AdPanelRight -plotaroute.com###Page:style(right: 0px !important;) -! javgg.net streamsb popup -javside.com##+js(aopr, __Y) -javside.com##+js(aopr, AaDetector) -katmoviefix.*##+js(aopr, Request) -katmoviefix.*##+js(noeval-if, ads) -! livesexporn. net popunder -livesexporn.net##+js(acs, onload, Math) -g3g.*##.text-center.alert-danger.alert-dismissible.alert -webpornblog.com##+js(nowoif) -freetohell.com##+js(no-fetch-if, method:HEAD) -sanet.st##+js(aost, document.createElement, onerror) -sanet.st##.lsB -sportsdark.com##+js(acs, eval, replace) -pornstargold.com##+js(aopr, loadTool) -pornstargold.com##.et_bloom_popup -pornstargold.com##canvas -pornstargold.com###popup -askpaccosi.com,crypto4tun.com##+js(no-fetch-if, googlesyndication) -askpaccosi.com,crypto4tun.com##+js(no-xhr-if, googlesyndication) -askpaccosi.com,crypto4tun.com##[id^="wpsafe-wait"] -askpaccosi.com,crypto4tun.com###wpsafe-generate, #wpsafe-link:style(display: block !important) -askpaccosi.com###wcfloatDiv4 -askpaccosi.com##.av_pop_modals_1 -techsignin.com##+js(acs, document.getElementsByTagName, tdBlock) -techsignin.com###td-outer-wrap:style(cursor: default !important) -cam-video.xxx##+js(nowoif) -cam-video.xxx###float-video -! ads -##[href^="https://buycheaprdp.com/"] -##[href^="https://bestbuyrdp.com/"] -##[href^="https://buycheaphost.net/"] -! antiadb insurance. iptvsetupguide. com -insurance.iptvsetupguide.com##+js(no-fetch-if, ads) -insurance.iptvsetupguide.com##+js(nano-sib) -! antiadb bitcoinslink. site -@@||bitcoinslink.site^$ghide -codecap.org##+js(aopr, Request) -fusedgt.com##+js(no-xhr-if, googlesyndication) -firstpost.com##+js(ra, href, .t-out-span [href*="utm_source"], stay) -firstpost.com##+js(ra, src, .t-out-span [src*=".gif"], stay) -transportationlies.org##+js(aeld, , about:blank) -||transportationlies.org/images/*.gif$image -/apis-2.js^$1p -/pub/js_min.js| -@@||daihatsu-club.net^$ghide -daihatsu-club.net##[class^="side_ad_left_"] -daihatsu-club.net##[class^="side_ad_right_"] -vaa.jp,yonelabo.com###nankafix -svetserialu.to##+js(nowoif) -onlytech.com##+js(acs, $, test) -/fret/meow4/*$script,3p -! *** uAssets:filters/filters-2022.txt *** -akoam.*##+js(nowoif) -javhdfree.icu##+js(aopr, __Y) -porner.tv##.sources -porner.tv##.show.mobileSources -porner.tv##[href^="https://a.medfoodsafety.com/loader"] -porner.tv##.container > .HeaderLinks -porner.tv##.HeaderBanner -porner.tv##.defaultAd -pornocomics.*###dclm_modal_screen -pornocomics.*###dclm_modal_content -pornocomics.*##*:style(filter: none !important) -pornocomics.*##+js(aeld, , pop) -techkaran.co.in##+js(acs, decodeURIComponent, ai_) -@@||dosgamezone.com^$image,1p -423down.com##+js(aeld, DOMContentLoaded, adsBlocked) -blu-ray.com##+js(nowoif) -rosefile.net##+js(acs, document.addEventListener, nextFunction) -ac-illust.com,photo-ac.com##+js(set, enable_dl_after_countdown, true) -ac-illust.com,photo-ac.com##+js(set, isGGSurvey, true) -ac-illust.com,photo-ac.com###eachDownloadedModal:has(.ac-btn[href^="https://premium."]) -ac-illust.com,photo-ac.com##.modal-backdrop -ac-illust.com,photo-ac.com##body.modal-open *:style(filter: none!important;) -! PopAds-sites -!#if cap_html_filtering -123-movies.*,123movies4u.site,123movieshd.*,123movieshub.*,123moviesme.*,1337x.*,1337xporn.com,141jav.com,1bit.space,1bitspace.com,1stream.*,1tamilmv.*,2ddl.*,2umovies.*,38dh2.top,3dporndude.com,3hiidude.*,4archive.org,4horlover.com,4stream.*,560pmovie.com,5movies.*,60fps.xyz,7hitmovies.*,85tube.com,85videos.com,8xlinks.click,9xmovie.*##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -a2zcrackworld.com,aagmaal.*,aazzz.xyz,acefile.co,actusports.eu,adblockeronstape.*,adblockeronstreamtape.*,adblockplustape.*,adblockstreamtape.*,adblockstrtape.*,adblockstrtech.*,adblocktape.*,adclickersbot.com,adcorto.*,adricami.com,adslink.pw,adultstvlive.com,adz7short.space,aeblender.com,ahdafnews.blogspot.com,ak47sports.com,akuma.moe,alexsports.*,alexsports.*,alexsportss.*,alexsportz.*,allplayer.tk,allstreaming.online,amadoras.cf,amadorasdanet.shop,amateurblog.tv,amateurblog.tv,androidadult.com,anhsexjav.xyz,anidl.org,anime-loads.org,animeblkom.net,animefire.plus,animelek.me,animepahe.*,animesanka.*,animespire.net,animestotais.xyz,animeyt.es,animixplay.*,aniplay.*,anroll.net,antiadtape.*,anymoviess.xyz,aotonline.org,asenshu.com,asialiveaction.com,asianclipdedhd.net,asianclub.*,ask4movie.*,askim-bg.com,asumsikedaishop.com,atomixhq.*,atomohd.*,avcrempie.com,avseesee.com,gettapeads.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -backfirstwo.com,bajarjuegospcgratis.com,balkanportal.net,balkanteka.net,bdnewszh.com,beinmatch.*,belowporn.com,bestclaimtrx.xyz,bestgirlsexy.com,bestnhl.com,bestporn4free.com,bestporncomix.com,bet36.es,bhaai.*,bikinitryon.net,birdurls.com,bitsearch.to,blackcockadventure.com,blackcockchurch.org,blackporncrazy.com,blizzboygames.net,blizzpaste.com,blkom.com,blog-peliculas.com,blogtrabalhista.com,blurayufr.xyz,bobsvagene.club,bolly4umovies.click,bonusharian.pro,brilian-news.id,brupload.net,bucitana.com,buffstreams.*##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -cablegratis.online,camchickscaps.com,camgirlcum.com,camgirls.casa,canalesportivo.*,cashurl.in,castingx.net,ccurl.net,celebrity-leaks.net,cgpelis.net,charexempire.com,choosingnothing.com,clasico.tv,clickndownload.*,clicknupload.*,clik.pw,coin-free.com,coins100s.fun,comicsmanics.com,compucalitv.com,coolcast2.com,cosplaytab.com,countylocalnews.com,cpmlink.net,crackstreamshd.click,crespomods.com,crisanimex.com,crunchyscan.fr,cuevana3.fan,cuevana3hd.com,cumception.com,curvaweb.com,cutpaid.com,cypherscans.xyz##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -daddylive.*,daddylivehd.*,datawav.club,daughtertraining.com,ddrmovies.*,deepgoretube.site,deltabit.co,depvailon.com,derleta.com,desiremovies.*,desivdo.com,desixx.net,detikkebumen.com,deutschepornos.me,devlib.*,diasoft.xyz,directupload.net,diskusscan.com,divxtotal.*,divxtotal1.*,dixva.com,dlhd.*,doctormalay.com,dofusports.xyz,dogemate.com,doods.cam,doodskin.lat,downloadrips.com,downvod.com,dphunters.mom,dragontranslation.com,duddes.xyz,dvdfullestrenos.com,dvdplay.*##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -ebookbb.com,ebookhunter.net,egyanime.com,egygost.com,egyshare.cc,ekasiwap.com,electro-torrent.pl,elil.cc,elixx.*,embed4u.xyz,embedstream.me,enjoy4k.*,eplayer.click,erovoice.us,eroxxx.us,estrenosdoramas.net,estrenosflix.*,estrenosflux.*,estrenosgo.*,everia.club,everythinginherenet.blogspot.com,extrafreetv.com,extremotvplay.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -f1stream.*,fapinporn.com,fapptime.com,fashionblog.tv,fashionblog.tv,fastreams.live,faucethero.com,fbstream.*,fembed.com,femdom-joi.com,file4go.*,fileone.tv,film1k.com,filmeonline2023.net,filmesonlinex.org,filmesonlinexhd.biz,filmovitica.com,filmymaza.blogspot.com,filmyzilla.*,filthy.family,findav.*,findporn.*,fixfinder.click,flixmaza.*,flizmovies.*,flostreams.xyz,flyfaucet.com,footyhunter.lol,footyhunter3.xyz,forex-golds.com,forex-trnd.com,forumchat.club,forumlovers.club,freemoviesonline.biz,freeomovie.co.in,freeomovie.co.in,freeomovie.to,freeporncomic.net,freepornhdonlinegay.com,freeproxy.io,freetvsports.*,freeuse.me,freeusexporn.com,fsicomics.com,fullymaza.*##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -g3g.*,gambarbogel.xyz,gamepcfull.com,gameronix.com,gamesfullx.com,gameshdlive.net,gameshdlive.xyz,gamesmountain.com,gamesrepacks.com,gamingguru.fr,gamovideo.com,garota.cf,gaydelicious.com,gaypornmasters.com,gaysex69.net,gemstreams.com,get-to.link,girlscanner.org,giurgiuveanul.ro,gledajcrtace.xyz,gocast2.com,gomo.to,gostosa.cf,gotxx.*,grantorrent.*,gtlink.co,gwiazdypornosow.pl##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -haho.moe,hatsukimanga.com,hayhd.net,hdmoviesfair.*,hdmoviesflix.*,hdsaprevodom.com,hdstreamss.club,hentais.tube,hentaistream.co,hentaitk.net,hentaitube.online,hentaiworld.tv,hesgoal.tv,hexupload.net,hhkungfu.tv,highlanderhelp.com,hiidudemoviez.*,hindimean.com,hindimovies.to,hiperdex.com,hiphopa.net,hispasexy.org,hitprn.com,hoca4u.com,hollymoviehd.cc,hoodsite.com,hopepaste.download,hornylips.com,hotgranny.live,hotmama.live,hqcelebcorner.net,huren.best,hwnaturkya.com,hxfile.co##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -igfap.com,ihdstreams.xyz,iklandb.com,illink.net,imgkings.com,imgsen.*,imgsex.xyz,imgsto.*,imx.to,incest.*,incestflix.*,influencersgonewild.org,infosgj.free.fr,investnewsbrazil.com,itdmusics.com,itopmusic.*,itsuseful.site,itunesfre.com,iwatchfriendsonline.net##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -jackstreams.com,jatimupdate24.com,jav-fun.cc,jav-scvp.com,javcl.com,javf.net,javhay.net,javhoho.com,javhun.com,javleak.com,javmost.*,javporn.best,javsex.to,javtiful.com,jimdofree.com,jiofiles.org,jorpetz.com,journalyc.online,jp-films.com,jpop80ss3.blogspot.com,jpopsingles.eu##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -kantotflix.net,kantotinyo.com,kaoskrew.org,kaplog.com,keeplinks.*,keepvid.*,keralahd.*,keralatvbox.com,khatrimazaful.*,khatrimazafull.*,kickassanimes.io,kimochi.info,kimochi.tv,kinemania.tv,konstantinova.net,koora-online.live,kunmanga.com,kutmoney.com,kwithsub.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -ladangreceh.xyz,lat69.me,latinblog.tv,latinblog.tv,latinomegahd.net,lazyfaucet.com,leechall.*,leechpremium.link,legendas.dev,legendei.net,legendei.net,lightdlmovies.blogspot.com,lighterlegend.com,linclik.com,linkebr.com,linkrex.net,links.worldfree4u-lol.online,linksfy.co,linkshorts.*,lody.ink,lovesomecommunity.com,lulustream.com,luluvdo.com,luzcameraeacao.shop##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -manga-oni.com,mangaboat.com,mangagenki.me,mangahere.onl,mangaweb.xyz,mangoporn.net,mangovideo.*,manhwahentai.me,masahub.com,masahub.net,masaporn.*,maturegrannyfuck.com,mdfx9dc8n.net,mdy48tn97.com,mediapemersatubangsa.com,mega-mkv.com,megapastes.com,megapornpics.com,messitv.net,meusanimes.net,milfmoza.com,milfzr.com,millionscast.com,mimaletamusical.blogspot.com,miniurl.*,mirrorace.*,mitly.us,mixdroop.*,mixdrop.*,mkv-pastes.com,mkvcage.*,mlbstream.*,mlsbd.*,mmsbee.*,modb.xyz,monaskuliner.ac.id,moredesi.com,motogpstream.*,movgotv.net,movi.pk,movieplex.*,movierulzlink.*,movies123.*,moviesflix.*,moviesmeta.*,moviessources.*,moviesverse.*,movieswbb.com,moviewatch.com.pk,moviezwaphd.*,mp4upload.com,mrskin.live,mrunblock.*,multicanaistv.com,mundowuxia.com,myeasymusic.ir,myonvideo.com,myyouporn.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -narutoget.info,naughtypiss.com,nbastream.*,nerdiess.com,new-fs.eu,newmovierulz.*,newtorrentgame.com,nflstream.*,nflstreams.me,nhlstream.*,niaomea.me,nicekkk.com,nicesss.com,nlegs.com,noblocktape.*,nocensor.*,nolive.me,nopay.info,nopay2.info,notformembersonly.com,novamovie.net,novelpdf.xyz,novelssites.com,novelup.top,nsfwr34.com,nu6i-bg-net.com,nudebabesin3d.com,nukedfans.com,nuoga.eu,nzbstars.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -ohjav.com,ojearnovelas.com,okanime.xyz,olarixas.xyz,oldbox.cloud,olweb.tv,olympicstreams.me,on9.stream,oncast.xyz,onepiece-mangaonline.com,onifile.com,onionstream.live,onlinesaprevodom.net,onlyfams.*,onlyfullporn.video,onplustv.live,originporn.com,ouo.*,ovagames.com,ovamusic.com,owllink.net##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -packsporn.com,pahaplayers.click,pahe.*,palimas.org,pandafiles.com,papahd.club,papahd1.xyz,password69.com,pastemytxt.com,payskip.org,pctfenix.*,pctnew.*,peeplink.in,peliculas24.*,peliculasmx.net,pelisplus.*,pervertgirlsvideos.com,pervyvideos.com,phim12h.com,picdollar.com,pickteenz.com,pics4you.net,picsxxxporn.com,pinayscandalz.com,pinkueiga.net,piratebay.*,piratefast.xyz,piratehaven.xyz,pirateiro.com,pirlotvonline.org,playtube.co.za,plugintorrent.com,plyjam.*,plylive.*,plyvdo.*,pmvzone.com,porndish.com,pornez.net,pornfetishbdsm.com,pornfits.com,pornhd720p.com,pornhoarder.*,pornobr.club,pornobr.ninja,pornodominicano.net,pornofaps.com,pornoflux.com,pornotorrent.com.br,pornredit.com,pornstarsyfamosas.es,pornstreams.co,porntn.com,pornxbit.com,pornxday.com,portaldasnovinhas.shop,portugues-fcr.blogspot.com,poscishd.online,poscitesch.com,poseyoung.com,pover.org,prbay.*,projectfreetv.*,proxybit.*,proxyninja.org,psarips.*,pubfilmz.com,publicsexamateurs.com,punanihub.com,putlocker5movies.org,pxxbay.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -r18.best,racaty.*,ragnaru.net,rapbeh.net,rapelust.com,rapload.org,read-onepiece.net,remaxhd.*,retro-fucking.com,retrotv.org,rintor.*,rnbxclusive.*,rnbxclusive0.*,rnbxclusive1.*,robaldowns.com,rockdilla.com,rojadirecta.*,rojadirectaenvivo.*,rojadirectatvenvivo.com,rojitadirecta.blogspot.com,romancetv.site,rugbystreams.*,rule34.club,rule34hentai.net,rumahbokep-id.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -safego.cc,safetxt.*,sakurafile.com,satoshi-win.xyz,scat.gold,scatfap.com,scatkings.com,scnlog.me,scripts-webmasters.net,serie-turche.com,serijefilmovi.com,sexcomics.me,sexdicted.com,sexgay18.com,sexofilm.co,sextgem.com,sextgem.com,sextubebbw.com,sgpics.net,shadowrangers.*,shadowrangers.live,shahee4u.cam,shahi4u.*,shahid4u1.*,shahid4uu.*,shahiid-anime.net,shavetape.*,shemale6.com,shinden.pl,short.es,shortearn.*,shorten.*,shorttey.*,shortzzy.*,showmanga.blog.fc2.com,shrt10.com,shurt.pw,sideplusleaks.net,silverblog.tv,silverblog.tv,silverpic.com,sinhalasub.life,sinsitio.site,sinvida.me,skidrowcpy.com,skidrowfull.com,skidrowreloaded.com,skymovieshd.*,slut.mom,smallencode.me,smoner.com,smplace.com,soccerinhd.com,socceron.name,socceronline.*,softairbay.com,softarchive.*,sokobj.com,songsio.com,souexatasmais.com,sportbar.live,sportea.online,sports-stream.*,sportskart.xyz,sportstream1.cfd,sporttuna.site,srt.am,srts.me,sshhaa.*,stakes100.xyz,stapadblockuser.*,stape.*,stapewithadblock.*,starmusiq.*,stbemuiptv.com,stockingfetishvideo.com,strcloud.*,stream.crichd.vip,stream.lc,stream25.xyz,streamadblocker.*,streamadblockplus.*,streambee.to,streamcdn.*,streamcenter.pro,streamers.watch,streamgo.to,streamhub.*,streamkiste.tv,streamnoads.com,streamoporn.xyz,streamoupload.xyz,streamservicehd.click,streamsport.*,streamta.*,streamtape.*,streamtapeadblockuser.*,streamvid.net,strikeout.*,strtape.*,strtapeadblock.*,strtapeadblocker.*,strtapewithadblock.*,strtpe.*,subtitleporn.com,subtitles.cam,suicidepics.com,supertelevisionhd.com,supexfeeds.com,swatchseries.*,swzz.xyz,sxnaar.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -tabooflix.*,tabooporns.com,taboosex.club,tapeantiads.com,tapeblocker.com,tapenoads.com,tapewithadblock.org,teamos.xyz,teen-wave.com,teenporncrazy.com,telegramgroups.xyz,telenovelasweb.com,tennisstreams.*,tensei-shitara-slime-datta-ken.com,tfp.is,tgo-tv.co,thaihotmodels.com,theblueclit.com,thebussybandit.com,theicongenerator.com,thelastdisaster.vip,themoviesflix.*,thepiratebay.*,thepiratebay.*,thepiratebay0.org,thepiratebay0.org,thepiratebay10.info,thesexcloud.com,thisav.*,thothub.today,tightsexteens.com,tmearn.*,tojav.net,tokyoblog.tv,tokyoblog.tv,tonnestreamz.xyz,toonanime.*,top16.net,topvideosgay.com,torlock.*,tormalayalam.*,torrage.info,torrents.vip,torrentz2eu.*,torrsexvid.com,tpb-proxy.xyz,trannyteca.com,trendytalker.com,tumanga.net,turbogvideos.com,turbovid.me,turkishseriestv.org,turksub24.net,tutele.sx,tutelehd.*,tutelehd3.xyz,tv247.us,tvglobe.me,tvpclive.com,tvply.*,tvs-widget.com,tvseries.video##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -u4m.*,ucptt.com,ufaucet.online,ufcfight.online,ufcstream.*,uhdgames.xyz,ultrahorny.com,ultraten.net,unblocknow.*,unblockweb.me,underhentai.net,uniqueten.net,upbaam.com,uploadbuzz.*,upstream.to,usagoals.*##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -valeriabelen.com,verdragonball.online,vexmoviex.*,vfxmed.com,vidclouds.*,video.az,videostreaming.rocks,videowood.tv,vidlox.*,vidorg.net,vidtapes.com,vidz7.com,vikistream.com,vikv.net,vipbox.*,vipboxtv.*,vipleague.*,viprow.*,virpe.cc,visifilmai.org,viveseries.com,vladrustov.sx,volokit2.com,volokit2.com,vstorrent.org##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -w-hentai.com,watch-series.*,watchaccordingtojimonline.com,watchbrooklynnine-nine.com,watchdowntonabbeyonline.com,watchelementaryonline.com,watcheronline.net,watchgleeonline.com,watchhowimetyourmother.online,watchjavidol.com,watchkobestreams.info,watchlostonline.net,watchlouieonline.com,watchmadmenonline.com,watchmonkonline.com,watchonceuponatimeonline.com,watchparksandrecreation.net,watchprettylittleliarsonline.com,watchrulesofengagementonline.com,watchseries.*,watchthekingofqueens.com,watchthemiddleonline.com,watchtvchh.xyz,webcamrips.com,wickedspot.org,wincest.xyz,witanime.best,wolverdon.fun,wolverdonx.com,wordcounter.icu,worldcupstream.pm,worldmovies.store,worldstreams.click,wpdeployit.com,wqstreams.tk,wwwsct.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -xanimeporn.com,xblog.tv,xblog.tv,xclusivejams.*,xmoviesforyou.*,xn--verseriesespaollatino-obc.online,xn--xvideos-espaol-1nb.com,xpornium.net,xsober.com,xvip.lat,xxgasm.com,xxvideoss.org,xxx18.uno,xxxdominicana.com,xxxfree.watch,xxxmax.net,xxxwebdlxxx.top,xxxxvideo.uno,xxxxvideo.uno##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -y2b.wiki,yabai.si,yadixv.com,yayanimes.net,yeshd.net,yodbox.com,youdbox.*,youjax.com,youpits.xyz,yourdailypornvideos.ws,yourupload.com,ytmp3eu.*,yts-subs.*,yts.*,ytstv.me,ytstvmovies.co,ytstvmovies.xyz,ytsyify.co,ytsyifymovie.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -zerion.cc,zerocoin.top,zitss.xyz,zooqle.*,zpaste.net,zplayer.live##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) -pillowcase.su##^script[data-cfasync]:has-text(/h=decodeURIComponent|"popundersPerIP"/) -!#else -123-movies.*,123movies4u.site,123movieshd.*,123movieshub.*,123moviesme.*,1337x.*,1337xporn.com,141jav.com,1bit.space,1bitspace.com,1stream.*,1tamilmv.*,2ddl.*,2umovies.*,38dh2.top,3dporndude.com,3hiidude.*,4archive.org,4horlover.com,4stream.*,560pmovie.com,5movies.*,60fps.xyz,7hitmovies.*,85tube.com,85videos.com,8xlinks.click,9xmovie.*,9xlinks.*##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -a2zcrackworld.com,aagmaal.*,aazzz.xyz,acefile.co,actusports.eu,adblockeronstape.*,adblockeronstreamtape.*,adblockplustape.*,adblockstreamtape.*,adblockstrtape.*,adblockstrtech.*,adblocktape.*,adclickersbot.com,adcorto.*,adricami.com,adslink.pw,adultstvlive.com,adz7short.space,aeblender.com,ahdafnews.blogspot.com,ak47sports.com,akuma.moe,alexsports.*,alexsports.*,alexsportss.*,alexsportz.*,allplayer.tk,allstreaming.online,amadoras.cf,amadorasdanet.shop,amateurblog.tv,amateurblog.tv,androidadult.com,anhsexjav.xyz,anidl.org,anime-loads.org,animeblkom.net,animefire.plus,animelek.me,animepahe.*,animesanka.*,animespire.net,animestotais.xyz,animeyt.es,animixplay.*,aniplay.*,anroll.net,antiadtape.*,anymoviess.xyz,aotonline.org,asenshu.com,asialiveaction.com,asianclipdedhd.net,asianclub.*,ask4movie.*,askim-bg.com,asumsikedaishop.com,atomixhq.*,atomohd.*,avcrempie.com,avseesee.com,gettapeads.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -backfirstwo.com,bajarjuegospcgratis.com,balkanportal.net,balkanteka.net,bdnewszh.com,beinmatch.*,belowporn.com,bestclaimtrx.xyz,bestgirlsexy.com,bestnhl.com,bestporn4free.com,bestporncomix.com,bet36.es,bhaai.*,bikinitryon.net,birdurls.com,bitsearch.to,blackcockadventure.com,blackcockchurch.org,blackporncrazy.com,blizzboygames.net,blizzpaste.com,blkom.com,blog-peliculas.com,blogtrabalhista.com,blurayufr.xyz,bobsvagene.club,bolly4umovies.click,bonusharian.pro,brilian-news.id,brupload.net,bucitana.com,buffstreams.*##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -cablegratis.online,camchickscaps.com,camgirlcum.com,camgirls.casa,canalesportivo.*,cashurl.in,castingx.net,ccurl.net,celebrity-leaks.net,cgpelis.net,charexempire.com,choosingnothing.com,clasico.tv,clickndownload.*,clicknupload.*,clik.pw,coin-free.com,coins100s.fun,comicsmanics.com,compucalitv.com,coolcast2.com,cosplaytab.com,countylocalnews.com,cpmlink.net,crackstreamshd.click,crespomods.com,crisanimex.com,crunchyscan.fr,cuevana3.fan,cuevana3hd.com,cumception.com,curvaweb.com,cutpaid.com,cypherscans.xyz##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -daddylive.*,daddylivehd.*,datawav.club,daughtertraining.com,ddrmovies.*,deepgoretube.site,deltabit.co,depvailon.com,derleta.com,desiremovies.*,desivdo.com,desixx.net,detikkebumen.com,deutschepornos.me,devlib.*,diasoft.xyz,directupload.net,diskusscan.com,divxtotal.*,divxtotal1.*,dixva.com,dlhd.*,doctormalay.com,dofusports.xyz,dogemate.com,doods.cam,doodskin.lat,downloadrips.com,downvod.com,dphunters.mom,dragontranslation.com,duddes.xyz,dvdfullestrenos.com,dvdplay.*##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -easylinks.in,ebookbb.com,ebookhunter.net,egyanime.com,egygost.com,egyshare.cc,ekasiwap.com,electro-torrent.pl,elil.cc,elixx.*,embed4u.xyz,embedstream.me,enjoy4k.*,eplayer.click,erovoice.us,eroxxx.us,estrenosdoramas.net,estrenosflix.*,estrenosflux.*,estrenosgo.*,everia.club,everythinginherenet.blogspot.com,extrafreetv.com,extremotvplay.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -f1stream.*,fapinporn.com,fapptime.com,fashionblog.tv,fashionblog.tv,fastreams.live,faucethero.com,fbstream.*,fembed.com,femdom-joi.com,file4go.*,fileone.tv,film1k.com,filmeonline2023.net,filmesonlinex.org,filmesonlinexhd.biz,filmovitica.com,filmymaza.blogspot.com,filmymeet.*,filmyzilla.*,filthy.family,findav.*,findporn.*,firstmovies.to,fixfinder.click,flixmaza.*,flizmovies.*,flostreams.xyz,flyfaucet.com,footyhunter.lol,footyhunter3.xyz,forex-golds.com,forex-trnd.com,forumchat.club,forumlovers.club,freemoviesonline.biz,freeomovie.co.in,freeomovie.co.in,freeomovie.to,freeporncomic.net,freepornhdonlinegay.com,freeproxy.io,freetvsports.*,freeuse.me,freeusexporn.com,fsicomics.com,fullymaza.*##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -g3g.*,gambarbogel.xyz,gamepcfull.com,gameronix.com,gamesfullx.com,gameshdlive.net,gameshdlive.xyz,gamesmountain.com,gamesrepacks.com,gamingguru.fr,gamovideo.com,garota.cf,gaydelicious.com,gaypornmasters.com,gaysex69.net,gemstreams.com,get-to.link,girlscanner.org,giurgiuveanul.ro,gledajcrtace.xyz,gocast2.com,gomo.to,gostosa.cf,gotxx.*,grantorrent.*,gtlink.co,gwiazdypornosow.pl##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -haho.moe,hatsukimanga.com,hayhd.net,hdmoviesfair.*,hdmoviesflix.*,hdsaprevodom.com,hdstreamss.club,hentais.tube,hentaistream.co,hentaitk.net,hentaitube.online,hentaiworld.tv,hesgoal.tv,hexupload.net,hhkungfu.tv,highlanderhelp.com,hiidudemoviez.*,hindimean.com,hindimovies.to,hiperdex.com,hiphopa.net,hispasexy.org,hitprn.com,hoca4u.com,hollymoviehd.cc,hoodsite.com,hopepaste.download,hornylips.com,hotgranny.live,hotmama.live,hqcelebcorner.net,huren.best,hwnaturkya.com,hxfile.co##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -igfap.com,ihdstreams.xyz,iklandb.com,illink.net,imgkings.com,imgsen.*,imgsex.xyz,imgsto.*,imx.to,incest.*,incestflix.*,influencersgonewild.org,infosgj.free.fr,investnewsbrazil.com,itdmusics.com,itopmusic.*,itsuseful.site,itunesfre.com,iwatchfriendsonline.net##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -jackstreams.com,jatimupdate24.com,jav-fun.cc,jav-scvp.com,javcl.com,javf.net,javhay.net,javhoho.com,javhun.com,javleak.com,javmost.*,javporn.best,javsex.to,javtiful.com,jimdofree.com,jiofiles.org,jorpetz.com,journalyc.online,jp-films.com,jpop80ss3.blogspot.com,jpopsingles.eu##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -kantotflix.net,kantotinyo.com,kaoskrew.org,kaplog.com,keeplinks.*,keepvid.*,keralahd.*,keralatvbox.com,khatrimazaful.*,khatrimazafull.*,kickassanimes.io,kimochi.info,kimochi.tv,kinemania.tv,konstantinova.net,koora-online.live,kunmanga.com,kutmoney.com,kwithsub.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -ladangreceh.xyz,lat69.me,latinblog.tv,latinblog.tv,latinomegahd.net,lazyfaucet.com,leechall.*,leechpremium.link,legendas.dev,legendei.net,legendei.net,lightdlmovies.blogspot.com,lighterlegend.com,linclik.com,linkebr.com,linkrex.net,links.worldfree4u-lol.online,linksfy.co,linkshorts.*,lody.ink,lovesomecommunity.com,lulustream.com,luluvdo.com,luzcameraeacao.shop##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -manga-oni.com,mangaboat.com,mangagenki.me,mangahere.onl,mangaweb.xyz,mangoporn.net,mangovideo.*,manhwahentai.me,masahub.com,masahub.net,masaporn.*,maturegrannyfuck.com,mdfx9dc8n.net,mdy48tn97.com,mediapemersatubangsa.com,mega-mkv.com,megapastes.com,megapornpics.com,messitv.net,meusanimes.net,milfmoza.com,milfzr.com,millionscast.com,mimaletamusical.blogspot.com,miniurl.*,mirrorace.*,mitly.us,mixdroop.*,mixdrop.*,mkv-pastes.com,mkvcage.*,mlbstream.*,mlsbd.*,mmsbee.*,modb.xyz,monaskuliner.ac.id,moredesi.com,motogpstream.*,movgotv.net,movi.pk,movieplex.*,movierr.online,movierulzlink.*,movies123.*,moviesflix.*,moviesmeta.*,moviessources.*,moviesverse.*,movieswbb.com,moviewatch.com.pk,moviezwaphd.*,mp4upload.com,mrskin.live,mrunblock.*,multicanaistv.com,mundowuxia.com,myeasymusic.ir,myonvideo.com,myyouporn.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -narutoget.info,naughtypiss.com,nbastream.*,nerdiess.com,new-fs.eu,newmovierulz.*,newtorrentgame.com,nflstream.*,nflstreams.me,nhlstream.*,niaomea.me,nicekkk.com,nicesss.com,nlegs.com,noblocktape.*,nocensor.*,nolive.me,nopay.info,nopay2.info,notformembersonly.com,novamovie.net,novelpdf.xyz,novelssites.com,novelup.top,nsfwr34.com,nu6i-bg-net.com,nudebabesin3d.com,nukedfans.com,nuoga.eu,nzbstars.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -ohjav.com,ojearnovelas.com,okanime.xyz,olarixas.xyz,oldbox.cloud,olweb.tv,olympicstreams.me,on9.stream,oncast.xyz,onepiece-mangaonline.com,onifile.com,onionstream.live,onlinesaprevodom.net,onlyfams.*,onlyfullporn.video,onplustv.live,originporn.com,ouo.*,ovagames.com,ovamusic.com,owllink.net##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -packsporn.com,pahaplayers.click,pahe.*,palimas.org,pandafiles.com,papahd.club,papahd1.xyz,password69.com,pastemytxt.com,payskip.org,pctfenix.*,pctnew.*,peeplink.in,peliculas24.*,peliculasmx.net,pelisplus.*,pervertgirlsvideos.com,pervyvideos.com,phim12h.com,picdollar.com,pickteenz.com,pics4you.net,picsxxxporn.com,pinayscandalz.com,pinkueiga.net,piratebay.*,piratefast.xyz,piratehaven.xyz,pirateiro.com,pirlotvonline.org,playtube.co.za,plugintorrent.com,plyjam.*,plylive.*,plyvdo.*,pmvzone.com,porndish.com,pornez.net,pornfetishbdsm.com,pornfits.com,pornhd720p.com,pornhoarder.*,pornobr.club,pornobr.ninja,pornodominicano.net,pornofaps.com,pornoflux.com,pornotorrent.com.br,pornredit.com,pornstarsyfamosas.es,pornstreams.co,porntn.com,pornxbit.com,pornxday.com,portaldasnovinhas.shop,portugues-fcr.blogspot.com,poscishd.online,poscitesch.com,poseyoung.com,pover.org,prbay.*,projectfreetv.*,proxybit.*,proxyninja.org,psarips.*,pubfilmz.com,publicsexamateurs.com,punanihub.com,putlocker5movies.org,pxxbay.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -r18.best,racaty.*,ragnaru.net,rapbeh.net,rapelust.com,rapload.org,read-onepiece.net,remaxhd.*,retro-fucking.com,retrotv.org,rintor.*,rnbxclusive.*,rnbxclusive0.*,rnbxclusive1.*,robaldowns.com,rockdilla.com,rojadirecta.*,rojadirectaenvivo.*,rojadirectatvenvivo.com,rojitadirecta.blogspot.com,romancetv.site,rugbystreams.*,rule34.club,rule34hentai.net,rumahbokep-id.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -sadisflix.*,safego.cc,safestream.cc,safetxt.*,sakurafile.com,satoshi-win.xyz,scat.gold,scatfap.com,scatkings.com,scnlog.me,scripts-webmasters.net,serie-turche.com,serijefilmovi.com,sexcomics.me,sexdicted.com,sexgay18.com,sexofilm.co,sextgem.com,sextgem.com,sextubebbw.com,sgpics.net,shadowrangers.*,shadowrangers.live,shahee4u.cam,shahi4u.*,shahid4u1.*,shahid4uu.*,shahiid-anime.net,shavetape.*,shemale6.com,shinden.pl,short.es,shortearn.*,shorten.*,shorttey.*,shortzzy.*,showmanga.blog.fc2.com,shrt10.com,shurt.pw,sideplusleaks.net,silverblog.tv,silverblog.tv,silverpic.com,sinhalasub.life,sinsitio.site,sinvida.me,skidrowcpy.com,skidrowfull.com,skidrowreloaded.com,skymovieshd.*,slut.mom,smallencode.me,smoner.com,smplace.com,soccerinhd.com,socceron.name,socceronline.*,softairbay.com,softarchive.*,sokobj.com,songsio.com,souexatasmais.com,sportbar.live,sportea.online,sports-stream.*,sportskart.xyz,sportstream1.cfd,sporttuna.site,srt.am,srts.me,sshhaa.*,stakes100.xyz,stapadblockuser.*,stape.*,stapewithadblock.*,starmusiq.*,stbemuiptv.com,stockingfetishvideo.com,strcloud.*,stream.crichd.vip,stream.lc,stream25.xyz,streamadblocker.*,streamadblockplus.*,streambee.to,streamcdn.*,streamcenter.pro,streamers.watch,streamgo.to,streamhub.*,streamkiste.tv,streamnoads.com,streamoporn.xyz,streamoupload.xyz,streamservicehd.click,streamsport.*,streamta.*,streamtape.*,streamtapeadblockuser.*,streamvid.net,strikeout.*,strtape.*,strtapeadblock.*,strtapeadblocker.*,strtapewithadblock.*,strtpe.*,subtitleporn.com,subtitles.cam,suicidepics.com,supertelevisionhd.com,supexfeeds.com,swatchseries.*,swzz.xyz,sxnaar.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -tabooflix.*,tabooporns.com,taboosex.club,tapeantiads.com,tapeblocker.com,tapenoads.com,tapewithadblock.org,teamos.xyz,teen-wave.com,teenporncrazy.com,telegramgroups.xyz,telenovelasweb.com,tennisstreams.*,tensei-shitara-slime-datta-ken.com,tfp.is,tgo-tv.co,thaihotmodels.com,theblueclit.com,thebussybandit.com,theicongenerator.com,thelastdisaster.vip,themoviesflix.*,thepiratebay.*,thepiratebay.*,thepiratebay0.org,thepiratebay0.org,thepiratebay10.info,thesexcloud.com,thisav.*,thothub.today,tightsexteens.com,tmearn.*,tojav.net,tokyoblog.tv,tokyoblog.tv,tonnestreamz.xyz,toonanime.*,top16.net,topvideosgay.com,torlock.*,tormalayalam.*,torrage.info,torrents.vip,torrentz2eu.*,torrsexvid.com,tpb-proxy.xyz,trannyteca.com,trendytalker.com,tumanga.net,turbogvideos.com,turbovid.me,turkishseriestv.org,turksub24.net,tutele.sx,tutelehd.*,tutelehd3.xyz,tv247.us,tvglobe.me,tvpclive.com,tvply.*,tvs-widget.com,tvseries.video##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -u4m.*,ucptt.com,ufaucet.online,ufcfight.online,ufcstream.*,uhdgames.xyz,ultrahorny.com,ultraten.net,unblocknow.*,unblockweb.me,underhentai.net,uniqueten.net,upbaam.com,uploadbuzz.*,upstream.to,usagoals.*##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -valeriabelen.com,verdragonball.online,vexmoviex.*,vfxmed.com,vidclouds.*,video.az,videostreaming.rocks,videowood.tv,vidlox.*,vidorg.net,vidtapes.com,vidz7.com,vikistream.com,vikv.net,vipbox.*,vipboxtv.*,vipleague.*,viprow.*,virpe.cc,visifilmai.org,viveseries.com,vladrustov.sx,volokit2.com,volokit2.com,vstorrent.org##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -w-hentai.com,watch-series.*,watchaccordingtojimonline.com,watchbrooklynnine-nine.com,watchdowntonabbeyonline.com,watchelementaryonline.com,watcheronline.net,watchgleeonline.com,watchhowimetyourmother.online,watchkobestreams.info,watchlostonline.net,watchlouieonline.com,watchjavidol.com,watchmadmenonline.com,watchmonkonline.com,watchonceuponatimeonline.com,watchparksandrecreation.net,watchprettylittleliarsonline.com,watchrulesofengagementonline.com,watchseries.*,watchthekingofqueens.com,watchthemiddleonline.com,watchtvchh.xyz,webcamrips.com,wickedspot.org,wincest.xyz,witanime.best,wolverdon.fun,wolverdonx.com,wordcounter.icu,worldcupstream.pm,worldmovies.store,worldstreams.click,wpdeployit.com,wqstreams.tk,wwwsct.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -xanimeporn.com,xblog.tv,xblog.tv,xclusivejams.*,xmoviesforyou.*,xn--verseriesespaollatino-obc.online,xn--xvideos-espaol-1nb.com,xpornium.net,xsober.com,xvip.lat,xxgasm.com,xxvideoss.org,xxx18.uno,xxxdominicana.com,xxxfree.watch,xxxmax.net,xxxwebdlxxx.top,xxxxvideo.uno,xxxxvideo.uno##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -y2b.wiki,yabai.si,yadixv.com,yayanimes.net,yeshd.net,yodbox.com,youdbox.*,youjax.com,youpits.xyz,yourdailypornvideos.ws,yourupload.com,ytmp3eu.*,yts-subs.*,yts.*,ytstv.me,ytstvmovies.co,ytstvmovies.xyz,ytsyify.co,ytsyifymovie.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -zerion.cc,zerocoin.top,zitss.xyz,zooqle.*,zpaste.net,zplayer.live##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) -pillowcase.su##+js(remove-node-text, script, /h=decodeURIComponent|"popundersPerIP"/) -!#endif -*$script,domain=gamesmountain.com,3p,denyallow=fbcdn.net|facebook.net -*$script,domain=mangagenki.me,3p,denyallow=disqus.com|disquscdn.com|fastlylb.net -*$script,domain=masaporn.xyz,3p -*$script,domain=megapornpics.com,3p,denyallow=wankgod.com -*$script,domain=onlyfullporn.video,3p,denyallow=facebook.net|fastly.net|fbcdn.net|twitter.com|unpkg.com|vk.com|x.com|zencdn.net -*$script,3p,domain=moredesi.com,denyallow=disqus.com|google.com|fastly.net|fastlylb.net|pinterest.com|wp.com -/^https:\/\/www\.[a-z]{8,14}\.com\/[a-z]{1,4}\.js$/$script,3p,match-case,header=x-powered-by:Express,from=~edu|~gov,to=com|~exploretock.com|~photopea.com -/^https:\/\/www\.[a-z]{8,16}\.com\/(?:[A-Za-z]+\/)*(?:[_0-9A-Za-z]{1,20}[-.])*[_0-9A-Za-z]{1,20}\.js$/$script,3p,match-case,to=com,header=popads-node -/^https:\/\/www\.[a-z]{8,16}\.com\/(?:[A-Za-z]+\/)*(?:[_0-9A-Za-z]{1,20}[-.])*[_0-9A-Za-z]{1,20}\.js$/$script,3p,match-case,to=com,header=link:/adsco\.re\/>;rel=preconnect/ -://www.*.css|$script,3p,to=com,header=link:/\/>;rel=preconnect/ -://www.*/images/*.min.js|$script,3p,to=com,header=link:/\/>;rel=preconnect/ -://www.*.com/css/$script,3p,to=com|~principalcdn.com,header=link:/\/>;rel=preconnect/ -://www.*.com/js/css/$script,3p,header=link:/\/>;rel=preconnect/ -=e3&*,0|$script,3p,to=com -=e3&*,1|$script,3p,to=com -=3&*,0|$script,3p,to=com -=3&*,1|$script,3p,to=com -||pushtoast-a.akamaihd.net^$script,3p -||nsfwr34.com/ad_schedule/ -||bmwuuztry.com^ -mdy48tn97.com##+js(nowoif) -mdy48tn97.com##div[style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; z-index: 2147483646;"] -*$script,xhr,3p,denyallow=b-cdn.net,domain=everia.club -! ##+js(acs, atob, /popundersPerIP[\s\S]*?Date[\s\S]*?getElementsByTagName[\s\S]*?insertBefore/) -roshy.tv,soccerstream100.to##+js(acs, atob, /popundersPerIP[\s\S]*?Date[\s\S]*?getElementsByTagName[\s\S]*?insertBefore/) -! popMagic-sites -141tube.com,18porncomic.com,19-days-manga.com,1piecemanga.com,1punchman-manga.com,1teentubeporn.com,1youngteenporn.com,3dhentai.club,3gaytube.com,3prn.com,3xamatorszex.hu,3xfaktor.hu,4archive.org,4fans.gay,4porn4.com,560pmovie.com,6indianporn.com,7mmtv.sx,85tube.com,8muses.xxx##+js(acs, document.querySelectorAll, popMagic) -a-hentai.tv,aagmaal.com,aav.digital,ablefast.com,adltc.cc,adslink.pw,adultoffline.com,adultporn.com.es,aflamsexnek.com,ahri8.*,akatsuki-no-yona.com,akutsu-san.com,al4a.com,algodaodocescan.com.br,allafricangirls.net,allcelebs.club,allporncartoons.com,allpussynow.com,allteensnude.net,allureamateurs.net,alotporn.com,amateur-mature.net,amateurandreal.com,amateurbeachspy.com,amateurfapper.com,amateurfun.net,amateurporn.co,amazingtrannies.com,animecast.net,animeidhentai.com,animekage.net,animesex.me,animetoast.cc,annoncesescorts.com,anusling.info,anybunny.com,anynude.net,aoashimanga.com,arabxd.com,arabxforum.com,arabxnx.com,archivebate.com,arcjav.com,asianpornfilms.com,asianpornphoto.net,asianstubefuck.com,asianteenagefucking.com,asiaon.*,asiaontop.com,assesphoto.com,av-uncen.com,axporn.com##+js(acs, document.querySelectorAll, popMagic) -b4watch.com,babesexpress.com,babesvagina.com,babesxworld.com,banglachoti-story.com,bangx.org,bbw.com.es,bbw6.com,bbwfest.com,bbwfuckpic.com,bcmanga.com,bdsm-fuck.com,bdsm-photos.com,bdsmporn.cc,bdsmstreak.com,beegsexxx.com,beemtube.com,beginningmanga.com,belloporno.com,best18teens.com,bestblackgay.com,bestcam.tv,bestgrannies.com,besthdgayporn.com,bestlist.top,bestpornflix.com,bestpussypics.net,bestsextoons.com,bestshemaleclips.com,bigboobs.com.es,bigwank.com,birdurls.com,bjhub.me,black-matures.com,black-porn-pics.org,blackamateursnaked.com,blackchubbymovies.com,blackcunts.org,blackedtube.com,blackmaturevideos.com,blackpornhq.com,blacksexmix.com,blackteen.link,blowjobamateur.net,bobolike.com,bokepxv.com,bolly-tube.com,bollywoodx.org,boobs-mania.com,boolwowgirls.com,booru.eu,bootyexpo.net,borwap.xxx,boxporn.net,boystube.link,brazzersbabes.com,bucetaspeludas.com.br,bunkr.*,bunkrr.*,buondua.com,bustmonkey.com,bustyfats.com,bustyshemaleporn.com##+js(acs, document.querySelectorAll, popMagic) -caitlin.top,callofnight.com,camcam.cc,camgirlfap.com,camgreat.com,cartoonporncomics.info,cartoonvideos247.com,cat3movie.org,cbt-tube.net,cdimg.blog.2nt.com,celebjared.net,celebrityleakednudes.com,celebritynakeds.com,celebsnudeworld.com,celebwhore.com,centralboyssp.com.br,cerdas.com,cervezaporno.com,cfake.com,chicasdesnudas.xxx,chinesesexmovie.net,chopris.com,chubbyelders.com,chubbypornmpegs.com,cine-calidad.*,classicxmovies.com,clicporn.com,clothing-mania.com,comicsarmy.com,comicsporno.xxx,comicspornos.com,comicspornoxxx.com,comicsvalley.com,comicsxxxgratis.com,comicxxx.eu,crazyporn.xxx,crockotube.com,crossdresserhub.com,csrevo.com,cuckold-videos.org,cuckold.it,cutiecomics.com,czechsex.net,czechvideo.org##+js(acs, document.querySelectorAll, popMagic) -daftporn.com,daftsex.net,daftsex.org,dailyjav.co,danmachimanga.com,darknessporn.com,dataporn.pro,dbs-manga.online,deathistheonlyendingforthevillainess.online,debridup.com,deepfucks.com,deepthroat-porn.com,depvailon.com,descargaranimes.com,desihoes.com,desijugar.net,desimms.co,digitalbeautybabes.com,dikgames.com,dirtybadger.com,dirtyfox.net,dirtygangbangs.com,dirtyporn.cc,dirtytamil.com,dirtytamil.com,dlgal.com,dlouha-videa.cz,domahatv.com,domahi.net,donna-cerca-uomo.com,dorohedoro.online,doujindesu.*,douxporno.com,drsnysvet.cz,dumpz.net##+js(acs, document.querySelectorAll, popMagic) -eahentai.com,ebonyamateurphoto.com,ebonyassclips.com,ebuxxx.net,ehotpics.com,epornstore.com,ero18.cc,eroasmr.com,eroclips.org,erogarga.com,erotichun.com,erotichunter.com,eroticmv.com,eroticteensphoto.net,eroxxx.us,escort-in-italia.com,escortconrecensione.com,eshentai.tv,everia.club,everysextube.com,ex-foary.com,eztvtorrent.co##+js(acs, document.querySelectorAll, popMagic) -familyporner.com,famosas-desnudas.org,famousnipple.com,fap16.net,fapcat.com,fapdrop.com,faperplace.com,fapset.com,faptube.com,fapxl.com,fatblackmatures.com,fattubevideos.net,fatwhitebutt.com,fatxxxtube.com,felizporno.com,femdomworld.com,femjoybabes.com,fetish-bb.com,fetish-tv.com,fetishburg.com,ffjav.com,fileone.tv,film1k.com,filmpertutti.*,filmpornoitaliano.org,filmyporno.tv,finderporn.com,finding-camellia.com,findtranny.com,finevids.xxx,folgenporno.com,footfetishvid.com,free-gay-clips.com,free-trannyporn.com,freeadultvideos.cc,freefatpornmovies.com,freegayporn.me,freegrannypornmovies.com,freehdvideos.xxx,freeomovie.to,freepdfcomic.com,freepornhdonlinegay.com,freepornjpg.com,freepublicporn.com,freesex-1.com,freexxxvideos.pro,freshscat.com,freshshemaleporn.com,frprn.com,ftopx.com,fuckingsession.com,fuckmilf.net,fucktube4k.com,fuxnxx.com##+js(acs, document.querySelectorAll, popMagic) -gatasdatv.com,gay-streaming.com,gay-tubes.cc,gay4porn.com,gayboyshd.com,gayboystube.top,gayfor.us,gayforfans.com,gaypornhdfree.com,gaypornlove.net,gaystream.pw,gayteam.club,gayvideo.me,gayxxxtube.net,gekkouscans.com.br,generalpornmovies.com,ggbases.com,ghettopearls.com,gifcandy.net,girlfriendsexphoto.com,girlfuckgalleries.com,girlnude.link,glavmatures.com,gonewild.co,gonzoporn.cc,good-babes.com,goodporn.to,goshow.tv,gotporn.com,gotxx.*,grannyxxxtube.net,gravuregirlz.com,greatestshemales.com,greatnass.com,greensmut.com,grigtube.com##+js(acs, document.querySelectorAll, popMagic) -hachiraw.net,haho.moe,hanime.space,hanimesubth.com,hardfacefuck.com,hcbdsm.com,hd-xxx.me,hdgayporn.net,hdjavonline.com,hdpicsx.com,hdporn-movies.com,hdpornzap.com,hdtubesex.net,hentai-asia.com,hentai-cosplays.com,hentai-for.net,hentai-hot.com,hentai-senpai.*,hentai.tv,hentai20.com,hentai20.io,hentai3z.com,hentaiarena.com,hentaiasmr.moe,hentaibrasil.info,hentaibros.com,hentaicity.com,hentaicore.org,hentaidays.com,hentaienglish.com,hentaihaven.com,hentaihaven.red,hentaihd.xyz,hentaila.com,hentaila.tv,hentaipins.com,hentaiporno.xxx,hentaisenpai.*,hentaiteca.net,hentaitk.net,hentaitube1.lol,hentaiworld.tv,hentaiyes.com,herexxx.com,heroine-xxx.com,highporn.net,hindilinks4u.*,hiperdex.com,hit-erotic.com,hitprn.com,hmanga.asia,ho6ho.com,holaporno.xxx,hoporno.net,hornbunny.com,hornyfanz.com,hotgirl.biz,hotgirlhub.com,hotleak.vip,hotleaks.tv,hotmarathistories.com,hotmaturegirlfriends.com,hotmirrorpics.com,hotntubes.com,hotsexstory.xyz,hotshag.com,house.porn,hqporner.top,hqpornero.com,hqpornstream.com,huyamba.*##+js(acs, document.querySelectorAll, popMagic) -ibecamethewifeofthemalelead.com,ibradome.com,iceporn.tv,ideal-teens.com,ilikecomix.com,imagetwist.netlify.app,imgflare.com,in91vip.win,incontri-in-italia.com,indiansexbazar.com,indianxxx.us,influencersgonewild.com,ingyenszexvideok.hu,iporntoo.com,iusedtobeaboss.com##+js(acs, document.querySelectorAll, popMagic) -j-pussy.com,j91.asia,japaneseasmr.com,japanfuck.com.es,japantaboo.com,japanxxxmovie.com,japteenx.com,jasmr.net,jav-torrent.org,jav-xx.com,jav.one,jav101.online,jav380.com,javbake.com,javbest.xyz,javbix.com,javbob.co,javbull.tv,javcensored.net,javdoge.com,javenspanish.com,javfav.com,javfullmovie.com,javfun.me,javgrab.com,javhd.*,javhoho.com,javhun.com,javjavhd.com,javmelon.com,javmilf.xyz,javmobile.net,javmoviexxx.com,javneon.tv,javnew.net,javopen.co,javpan.net,javpool.com,javporn.tv,javpornfull.com,javprime.net,javpro.cc,javrave.club,javraveclub.com,javrip.net,javroi.com,javsaga.ninja,javsex.guru,javsexfree.com,javstor.com,javstream.com,javsub-english.top,javtsunami.com,javtv.to,javuncensored.watch,javvideo.xyz,javxxxporn.com,jizz.us,jotea.cl,jojolandsmanga.com,jpeg.pet,jpg.fishing,jpg2.su,jpvhub.com,juicy3dsex.com,jujmanga.com,jujustu-kaisen.com,justsexpictures.com##+js(acs, document.querySelectorAll, popMagic) -kaoskrew.org,kenzato.uk,kiaporn.com,kill-the-hero.com,kinkyporn.cc,kissjav.*,klikmanga.com,klmanga.*,komikstation.com,komisanwamanga.com,kropic.com,krx18.com,kubo-san.com,kvador.com##+js(acs, document.querySelectorAll, popMagic) -latino69.fun,latinohentai.com,ldkmanga.com,leakedzone.com,leaktube.net,lesbiansex.best,lesbiantube.club,lesboluvin.com,lewdstars.com,lewdweb.net,likuoo.video,linkbr.xyz,ljcam.net,lnk2.cc,longporn.xyz,lovelynudez.com,luscious.net,lustteens.net##+js(acs, document.querySelectorAll, popMagic) -m.sextvx.com,madouqu.com,mainporno.com,mamochki.info,manga-dbs.com,manga-scantrad.*,manga18.club,manga18fx.com,mangadass.com,mangadna.com,mangahatachi.com,mangahub.io,mangakio.com,mangaonline.fun,mangarawjp.asia,mangarussia.com,manhwa18.cc,manhwaid.org,manhwas.*,manhwaus.net,manyakan.com,mature-tube.sexy,mature4.net,maturepornjungle.com,maturepornphoto.com,maturexxxclips.com,maxjizztube.com,maxtubeporn.net,mdtaiwan.com,meetdownload.com,meetimgz.com,megadede.*,megapornfreehd.com,mercenarymanga.online,mespornogratis.com,micmicidol.*,migliori-escort.com,milf300.com,milftoon.xxx,milkporntube.com,mlookalporno.com,mobifuq.com,mobileporn.cam,mom-pussy.com,mommy-pussy.com,mommyporntube.com,momspost.com,momtubeporn.xxx,momxxx.video,momzr.com,moregirls.org,movies18.net,moviesxxx.cc,mp4-porn.net,mrjav.net,mrpeepers.net,muchfap.com,multporn.net,mushoku-tensei.online,musvozimbabwenews.com,mydesibaba.com,mydesiboobs.com,myfreevintageporn.com,mygalls.com,mypornhere.com,mypornstarbook.net,mypussydischarge.com,myvintageporntube.com,mywatchseries.*,myxclip.com,myyoungbabe.com,myyouporn.com##+js(acs, document.querySelectorAll, popMagic) -nakedamateurs.link,nakedmature.sexy,nangiphotos.com,nanime.us,napiszar.com,naughtyza.co.za,needgayporn.com,nhentai.*,nicheporno.com,nightlifeporn.com,nocfsb.com,novinhassafadinhas.com,novojoy.com,novoporn.com,nsfw247.to,nsfwalbum.com,nude-beach-tube.com,nude-teen-18.com,nudebeachpussy.com,nudeblackgirlfriend.com,nudedxxx.com,nudemomshots.com,nudevista.*,nudismteens.com,nudistic.com,nukedfans.com,nuoga.eu,nyaatorrent.com##+js(acs, document.querySelectorAll, popMagic) -ok.xxx,oncam.me,onejav.online,onepiece-manga-online.net,onepiecemangafree.com,onepunch-manga.com,onepunch.*,onlinefetishporn.cc,onlineporn24.com,onlineporno.cc,onlinepornushka.com,onlinesextube.com,onlinexxx.cc,onlygangbang.com,onlygayvideo.com,onlyhotleaks.com,onscreens.me,oosex.net,opomanga.com,orgasmatrix.com,otakuraw.net,otomi-games.com,overhentai.net##+js(acs, document.querySelectorAll, popMagic) -palimas.*,parnuhahome.com,pasend.*,pbangels.com,peetube.cc,peliculasmx.net,pelisandseries.net,pelispedia.net,penis-milking.com,penisbuyutucum.net,perfectgirls.*,perfektdamen.co,pervertium.com,petitegirlsnude.com,phim85.com,phonerotica.com,pianmanga.*,picmoney.org,picsfuck.org,picspornamateur.com,pictoa.com,pinayviralsexx.com,pinkporno.*,pinsexygirls.com,pisshamster.com,pissingporn.com,pixhost.*,plumpxxxtube.com,plusone8.com,porn-image.net,porn-sexypics.com,porn0.tv,porn00.org,porn0video.com,porn3dx.com,porn720.*,porn77.info,porn78.info,pornabcd.com,pornachi.com,pornbimbo.com,pornbox.cc,pornchaos.org,pornchimp.com,porncomics.to,porndaa.com,pornditt.com,porndollz.com,porner.tv,pornfuzzy.com,porngayclips.com,porngirlstube.com,porngq.com,porngun.net,pornhat.*,pornhd8k.*,pornhdin.com,pornhegemon.com,pornhex.com,pornhub-teen.com,porninblack.com,pornissimo.org,pornken.com,pornktube.*,pornloupe.com,pornmam.com,pornmom.net,pornmoms.org,pornmonde.com,porno-japones.top,porno-porno.net,porno-rolik.com,pornocolegialas.org,pornocolombiano.net,pornoman.pl,pornomanoir.com,pornone.com,pornonline.cc,pornoperra.com,pornopics.site,pornoreino.com,pornotrack.net,pornpaw.com,pornrabbit.com,pornrewind.com,pornrusskoe.com,pornsai.com,pornsearchengine.com,pornsex-pics.com,pornstargold.com,pornstarsadvice.com,pornteens.mobi,porntin.com,porntrex.pro,porntry.com,porntube18.cc,pornuj.cz,pornvibe.org,pornwatchers.com,pornxp.com,pornxp.org,pornxxxvideos.net,pornyeah.com,pornyeah.com,pornzone.com,povaddict.com,prothots.com,pulpo69.com,punishworld.com,pussy3dporn.com,pussymaturephoto.com,pussymaturephoto.com,pvip.gratis,pygodblog.com##+js(acs, document.querySelectorAll, popMagic) -qcock.com,queerdiary.com##+js(acs, document.querySelectorAll, popMagic) -raccontivietati.com,ragnarokmanga.com,randomarchive.com,rapidzona.tv,rawofficethumbs.com,readfireforce.com,realitybrazzers.com,recordbate.com,redamateurtube.com,reddflix.com,redgay.net,rednowtube.com,redpornnow.com,reifporn.de,rentagirlfriendmanga.online,repicsx.com,risefromrubble.com,rphangx.net,rranime.com,rubias19.com,rule34.art,rule34.paheal.net,rule34porn.net,rushporn.xxx,russkoevideoonline.com,rusteensex.com##+js(acs, document.querySelectorAll, popMagic) -saint.to,sankakucomplex.com,santoinferninho.com,saradahentai.com,savelink.site,scallyguy.com,scat.gold,scatkings.com,scatnetwork.com,screenhumor.com,secondcomingofgluttony.com,see-xxx.com,seed69.com,sekaikomik.live,seksrura.net,seksualios.com,seneporno.com,seoul-station-druid.com,seriesyonkis.*,serverxfans.com,sesso-escort.com,severeporn.com,sex-babki.com,sex-pic.info,sex-torrent.net,sexbixbox.com,sexgay18.com,sexkbj.com,sexmutant.com,sexmv.com,sexoverdose.com,sexpornasian.com,sexpox.com,sexpuss.org,sexrura.com,sexrura.pl,sextor.org,sextubefun.com,sextubeset.com,sexvideos.host,sexvideos.host,sexy-games.*,sexy-parade.com,sexy-youtubers.com,sexyaporno.com,sexyasianteenspics.com,sexybabespictures.com,sexyebonyteen.com,sexyerotica.net,sexyfreepussy.com,sexyhive.com,sexyteengirlfriends.net,shelovesporn.com,shemalemovies.us,shlink.net,short.croclix.me,simply-hentai.com,sissytube.net,sitarchive.com,skinnyhq.com,sleazedepot.com,smotret-porno-onlain.com,solomax-levelnewbie.*,solomaxlevelnewbie.*,solopornoitaliani.xxx,somulhergostosa.com,sousou-no-frieren.*,spy-x-family.*,spycock.com,spyvoyeur.net,stileproject.com,str8ongay.com,stream-69.com,streamextreme.cc,streamhub.*,streamporn.cc,subdivx.com,submissive-wife.net,supremebabes.com,sweetgirl.org,sxyprn.*,szexvideok.hu##+js(acs, document.querySelectorAll, popMagic) -tabooporn.tv,tabooporns.com,tabootube.xxx,tamilsexstory.net,taxi69.com,teenage-nudists.net,teenamateurphoto.com,teenbabe.link,teencamx.com,teenpornjpg.com,teenxxxporn.pro,telugusexkathalu.com,tenseishitaraslimedattaken-manga.com,thaihotmodels.com,thatav.net,thebarchive.com,thebeginningaftertheend.*,thecartoonporntube.com,theeminenceinshadowmanga.com,thehentaiworld.com,thelesbianporn.com,thematurexxx.com,theyarehuge.com,thothd.com,thotporn.tv,thotsbay.tv,thotslife.com,tioanime.com,titsintops.com,tittykings.com,tmohentai.com,tojav.net,tok-thots.com,tokyo-ghoul.online,tokyomotion.com,tokyomotion.net,tokyorevengersmanga.com,tomatespodres.com,tomb-raider-king.com,toon69.com,toonanime.*,topwebgirls.eu,torrent-pirat.com,torture1.net,tpornstars.com,trahino.net,trahodom.com,tranny6.com,trannylibrary.com,trannysexmpegs.com,trannyxxxtube.net,transexuales.gratis,truyenhentai18.net,ts-mpegs.com,tsmovies.com,tubegaytube.com,tubepornnow.com,tuberzporn.com,tubexo.tv,tuhentaionline.com,turbogvideos.com,turboimagehost.com,tvporn.cc,twink-hub.com##+js(acs, document.querySelectorAll, popMagic) -ulsex.net,ultraten.net,uncensoredleak.com,uniqueten.net,up-load.io,upicsz.com,uporn.icu,upskirt.tv,urgayporn.com,usaxtube.com##+js(acs, document.querySelectorAll, popMagic) -vcp.xxx,ver-mangas-porno.com,verhentai.top,vermangasporno.com,verpeliculasporno.gratis,videodotados.com,videos-xxx.*,videosputas.xxx,videosxxxporno.gratis,videosxxxputas.com,videoxxx.cc,viewmature.com,vintageporntubes.com,vipporns.com,viralxvideos.es,vkrovatku.com,voyeurblog.net,voyeurxxxsex.com,vzrosliedamy.com##+js(acs, document.querySelectorAll, popMagic) -wannafreeporn.com,wantmature.com,waploaded.com,watchfreejavonline.co,watchfreekav.com,watchhentai.net,watchporn.cc,watchporninpublic.com,watchseries1.*,webcams.casa,webtoonscan.com,westmanga.info,wetpussy.sexy,wetsins.com,womennaked.net,wonporn.com,worldsex.com,wow-mature.com,wowxxxtube.com##+js(acs, document.querySelectorAll, popMagic) -x-movie7.com,x-videos.name,x18.xxx,x24.video,xanimehub.com,xanimu.com,xasiat.com,xculitos.com,xemales.com,xexle.com,xfantazy.org,xforum.live,xfreehd.com,xfreepornsite.com,xhamsterteen.com,xkeezmovies.com,xnxx-downloader.net,xnxx.party,xnxxhamster.net,xnxxvideo.pro,xpicse.com,xpornzo.com,xsexpics.com,xsexpics.com,xspiel.com,xsportshd.com,xszav.club,xvideis.cc,xvideos.name,xvideosxporn.com,xxf.mobi,xxr.mobi,xxu.mobi,xxx-videos.org,xxxcomics.org,xxxfiles.*,xxxhub.cc,xxxonline.cc,xxxopenload.com,xxxputas.net,xxxrip.net,xxxtor.com,xxxxselfie.com##+js(acs, document.querySelectorAll, popMagic) -y-porn.com,yaoiscan.com,yona-yethu.co.za,yongfucknaked.com,youngbelle.net,youngerasiangirl.net,youngerporn.mobi,youngleak.com,youngsexygfs.com,youpornfm.com,youramateurporn.com,yporn.tv,ytanime.tv,yy1024.net##+js(acs, document.querySelectorAll, popMagic) -zonavideosx.com,zthots.com##+js(acs, document.querySelectorAll, popMagic) -6indianporn.com,aiimgvlog.fun,amateurebonypics.com,amateuryoungpics.com,cinemabg.net,coomer.su,desimmshd.com,frauporno.com,givemeaporn.com,hitomi.la,jav-asia.top,javf.net,javideo.net,kemono.su,kr18plus.com,luscious.net,picbaron.com,pilibook.com,pornborne.com,porngrey.com,pornktube.*,qqxnxx.com,sexvideos.host,submilf.com,subtaboo.com,tktube.com,watchseries.*,xfrenchies.com##+js(aeld, , popMagic) -allcalidad.*,camarchive.tv,crownimg.com,freejav.guru,gntai.*,grantorrent.*,hentai2read.com,hentai2w.com,icyporno.com,illink.net,javtiful.com,m-hentai.net,mejortorrent.*,mejortorrento.*,mejortorrents.*,mejortorrents1.*,mejortorrentt.*,pornblade.com,pornfelix.com,pornxxxxtube.net,redwap.me,redwap2.com,redwap3.com,sunporno.com,tubxporn.xxx,ver-comics-porno.com,ver-mangas-porno.com,xanimeporn.com,xxxvideohd.net,zetporn.com##+js(aeld, click, popMagic) -gaygo.tv##+js(acs, $, popMagic) -!#if cap_html_filtering -cine-calidad.*,veryfreeporn.com##^script:has-text(popMagic) -!#else -cine-calidad.*,veryfreeporn.com##+js(rmnt, script, popMagic) -!#endif -||n4m5x60.com^ -simpcity.su##+js(aeld, , open) -||xsportshd.com/bet.gif$image -manhwaid.org##.c-top-sidebar -familyporner.com##.inside-list-boxes:upward(1) -sexoverdose.com##.table -3sexporn.com,momxxxsex.com,myfreevintageporn.com,penisbuyutucum.net##+js(set, open, undefined) -porntrex.pro##.happy-footer -||javideo.net/js/popup.js -||javf.net/js/popup.js -||watchfreejavonline.co/*.gif$image,1p -||wp.com/*.gif$image,domain=watchfreejavonline.co -watchfreejavonline.co##[href*="affpa.top"] -javbull.tv,javsaga.ninja##.pb-3.text-center -xxxfiles.*##.underplayer_banner -javbake.com,javcensored.net,javdoge.com,javsexfree.com,javuncensored.watch##.adstrick > .video-item:style(clear: none !important;) -javbake.com,javcensored.net,javdoge.com,javsexfree.com,javuncensored.watch##.itemads -cat3movie.org###ads-preload -cat3movie.org##.float-ck-center-lt -asianpornfilms.com##.underplayer_banner -pussymaturephoto.com##div[class^="mikex"]:upward(1) -hentaiasmr.moe###inPlayerGGzone -hentaiasmr.moe##.happy-header -||clenchedyouthmatching.com^ -||porngrey.com/js/KVShare.js -jpvhub.com##div[style="position: relative; display: flex; flex: 1 1 0%;"] > div[class^="jss"]:has(.exoclick-popunder-trigger) -jpvhub.com##iframe ~ .MuiBox-root -jpvhub.com##.MuiGrid-item div[style^="position"] > div:has-text(Skip Ad) -jpvhub.com##+js(rpnt, script, /.*adConfig.*frequency_period.*/, (async () => {const a=location.href;if(!a.includes("/download?link="))return;const b=new URL(a)\,c=b.searchParams.get("link");try{location.assign(`${location.protocol}//${c}`)}catch(a){}} )();) -otomi-games.com##.otomi-widget -||kaguraserver.com/wp-content/uploads/*-Ad-300- -||kaguraserver.com/wp-content/uploads/*-Ad-728- -givemeaporn.com,pornborne.com##.sources -givemeaporn.com,pornborne.com##.JoinChannel -a-hentai.tv###text-2 -a-hentai.tv##.support-frame -daftsex.net##.videos > div:not([id]) -||pilixiaoshuo.com^ -||kinkbook.com/ad_media/ -fap16.net##.adsplx300 -tktube.com##+js(set, flashvars.adv_pre_vast, '') -! TODO: change to ##+js(aeld, { "type": "click", "pattern": "popMagic", "runAt": "idle" }) -fitnakedgirls.com##+js(nowoif) -javporn.tv##.floating-banner -javporn.tv###text-6 -bunkr.*##+js(aopr, popMagic.init) -bunkr.*##+js(acs, String.fromCharCode, /btoa|break;case/) -bunkr.*##^script:has-text(WebAssembly) -||bunkr-cache.se/js/script.js$script,domain=bunkr.* -||qakzfubfozaj.com^ -manhwaus.net##.my2023 -! D4zz-sites -alluretube.com,anyxvideos.com,fetishtube.cc,fucktheporn.com,italianporn.com.es,japanporn.tv,javsub.buzz,lovefap.com,mommysucks.com,mzansinudes.com,napiszar.com,of-model.com,onlineporn24.com,onlyfansleaks.tv,porntube15.com,pornvdoxxx.com,sexavgo.com,sexdiaryz.*,store-of-beats.ru,vlxxs.net##+js(acs, decodeURI, decodeURIComponent) -vlxxs.net##+js(set, D4zz, noopFunc) -japanporn.tv##+js(acs, Math.floor, ExoLoader) -##div[style^="z-index: 999999; background-image: url(\"data:image/gif;base64,"][style$="position: absolute;"] -.com/f_lo.js|$script,1p -||a.b.napiszar.com^ -||japanporn.tv/rg3y/*$script -! from pp moved to filters 2020 -yodbox.com##+js(aopr, mm) -9xmovie.*##+js(nowoif) -roms-download.com,roms-hub.com###ads -kingdomfiles.com##.col-sm-12 > li -! hilltopads-sites -10convert.com,besthdgayporn.com,bigojav.com,drivenime.com,fucksporn.com,fullxcinema1.com,gigmature.com,homemoviestube.com,javchill.com,javup.org,kisscos.net,kmansin09.com,leermanga.net,mangamovil.net,naijauncut.com,nudeslegion.com,porn00.org,pornohubonline.com,pornxp.com,readwebtoononline.net,sexdiaryz.*,shemaleup.net,tatli.biz,teenager365.com,weloma.*##+js(acs, document.createElement, /l\.parentNode\.insertBefore\(s/) -!#if cap_html_filtering -besthdgayporn.com,drivenime.com,javup.org,shemaleup.net##^script:has-text(/popMagic|pop1stp/) -!#else -besthdgayporn.com,drivenime.com,javup.org,shemaleup.net##+js(rmnt, script, /popMagic|pop1stp/) -!#endif -fucksporn.com###FloatingLayer -fucksporn.com##.adv_banners -fucksporn.com##.prefix-player-out -drivenime.com###stickyb -! AaDetector-sites -123movies-org.*,aniwave.to,gayteam.club,sflix.*##+js(aopr, AaDetector) -lavanguardia.com##+js(no-xhr-if, notifier) -apkowner.org,appsmodz.com##+js(no-xhr-if, googlesyndication) -appsmodz.com##.sticky-ads -appsmodz.com##+js(rc, hidden, button) -appsmodz.com##+js(ra, disabled, button) -appsmodz.com###timer -bingotingo.com##+js(rmnt, script, deblocker) -bingotingo.com##+js(no-xhr-if, googlesyndication) -bingotingo.com##+js(nano-sib, counter, , 0.02) -bingotingo.com###please-wait -@@||kuronime.tv^$ghide -||watchporn.to/banners.php -watchporn.to##.table -watchporn.to##+js(set, flashvars.protect_block, '') -watchporn.to##+js(set, flashvars.popunder_url, '') -watchporn.to##[href^="https://go.gkrtmc.com/"] -dotabuff.com##+js(no-fetch-if, ads) -dotabuff.com##.retaliate.mana-void -social-unlock.com##+js(set, ad_link, '') -! mrgay. com popunder, popups, ads -mrgay.com##+js(aopr, mz) -mrgay.com##+js(nowoif) -mrgay.com##.headline.wrapper:has-text(Advertisement) -mrgay.com##.headline.wrapper:has-text(Advertisement) + div -mrgay.com###und_ban -mrgay.com##.video-info > section:has-text(Adv) -mrgay.com##article > .headline:has-text(Suggested) -mrgay.com##article > .headline:has-text(Suggested) + section -nekolink.site##+js(aopr, __Y) -@@||crackturkey.com^$ghide -||revive.3wayint.com^ -cdn.gamemonetize.com###imaContainer -superpsx.com##+js(no-xhr-if, googlesyndication) -superpsx.com##+js(aost, document.getElementById, adsBlocked) -so1.asia##+js(nano-stb, , , 0.02) -so1.asia##+js(nano-sib, , , 0.02) -so1.asia##+js(rc, hidden, .panel-body > .text-center > button) -so1.asia##+js(ra, disabled, .panel-body > .text-center > button) -so1.asia##.pietimer -*$image,redirect-rule=2x2.png,domain=searchenginereports.net -searchenginereports.net##[id^="adboxx"] -osmanonline.co.uk##.is-sticky -osmanonline.co.uk##.adfoxly-wrapper -osmanonline.co.uk##+js(acs, $, modal-window) -quizack.com##+js(no-fetch-if, googlesyndication) -quizack.com##+js(nano-stb, isScrexed, 5000) -quizack.com##[class*="_mosori"] -netfile.cc##+js(set, blurred, false) -ninja.io##+js(set, App.AdblockDetected, false) -@@||niftyfutures.org^$ghide -goshow.tv##+js(aopr, ExoLoader) -cocomanga.com##+js(aeld, load, popMagic) -@@||cocomanga.com^$xhr,1p -primeos.in##.elementor-popup-modal -primeos.in##body:style(overflow: auto !important;) -||primeos.in/wp-content/uploads/*/Sidebar-Ad*$image -sarapbabe.com##+js(acs, document.querySelector, _0x) -sarapbabe.com##+js(aopr, decodeURI) -@@||sarapbabe.com^$ghide -sarapbabe.com##.has-text-danger -sarapbabe.com##.navbar-start > a.navbar-item:nth-of-type(4) -sarapbabe.com##.porn_sites_list -sarapbabe.com##.is-3.column -integral-calculator.com##+js(aopr, fallbackAds) -victor-mochere.com##+js(nostif, ai_) -! buondua.com leftover -buondua.com##.main-body > div > div[class]:not([class^="item"]):not([class^="article"]):has-text(/^Sponsored ads$/) -buondua.com##.main-body div[class]:has(> .adsbyexoclick) -buondua.com##.pagination + br + div[class] -buondua.com##div[class*="article"] > div:not([class]) > div[class]:has-text(/^Sponsored ads$/) -link.insurglobal.xyz,theconomy.me##+js(set, blurred, false) -1apple.xyz###wpsafe-generate, #wpsafe-link:style(display: block !important;) -1apple.xyz##div[id^="wpsafe-wait"] -theconomy.me###wpsafe-generate:style(display: block !important;) -theconomy.me##div[id^="wpsafe-wait"] -@@||webhostingpost.com^$ghide -webhostingpost.com###overlay -best-cpm.com,webhostingpost.com##+js(nowoif) -webhostingpost.com##+js(acs, $, modal) -webhostingpost.com##iframe[src="about:blank"] -insurglobal.xyz###yuidea-snp:style(display: block !important) -insurglobal.xyz##.yuidea-top -||rat.xxx/xdman/* -rat.xxx##+js(aopr, popns) -rat.xxx##+js(acs, document.write, iframe) -@@||lablue.de^$ghide -sourceforge.net##+js(set, SF.adblock, true) -sourceforge.net##+js(nano-stb) -sourceforge.net##.can-truncate -sourceforge.net###mirror -sourceforge.net###nels -sourceforge.net##.sterling -||a.slashdotmedia.com^ -brizzynovel.com##+js(aeld, DOMContentLoaded, adsBlocked) -@@||urbharat.xyz^$ghide -proviralhost.com,urbharat.xyz##+js(nano-sib, timePassed, 1300) -proviralhost.com##.inst > div.text-left -urbharat.xyz##iframe[width="300"] -nova.cz##div.vjs-marker-ad -||ads-twitter.com^$frame,redirect-rule=noopframe,domain=media.cms.nova.cz -! Slow starting -media.cms.nova.cz##+js(nano-stb, () => n(t), *) -moddingzone.in##+js(no-fetch-if, googlesyndication) -moddingzone.in###wpsafe-generate:style(display: block !important) -moddingzone.in###wpsafe-link:style(display: block !important) -moddingzone.in###wpsafe-wait1 -moddingzone.in###wpsafe-wait2 -moddingzone.in##.wpsafe-top:style(margin-top: 50px !important) -wplink.*##+js(set, blurred, false) -av4asia.com##+js(aopr, __Y) -samfirms.com##+js(set, startfrom, 0) -lbprate.com##^script:has-text(Math.imul) -lbprate.com##+js(acs, Math.imul) -lbprate.com##[id^="Ad"] -cefirates.com##.most-top-bar -||geoplugin.net^$xhr,redirect-rule=noop.txt,domain=taotronics.com -||raw.githack.com/*/SpiderBlogging/main/antiadblock/$3p -virpe.cc##+js(acs, document.write) -suzihaza.com##+js(aopr, __Y) -||static.sunmedia.tv/AdBlockDetection/$script -freecoursesites.com##+js(acs, eval, replace) -freecoursesites.com##.herald_adsense_widget -derivative-calculator.net##+js(aopr, fallbackAds) -vcdn-stream.xyz##+js(aopr, __Y) -apkandroidhub.in,babymodz.com,deezloaded.com,mad.gplpalace.one,studyis.xyz##+js(no-fetch-if, googlesyndication) -apkandroidhub.in,babymodz.com##.g-recaptcha:style(margin-top:60px !important) -babymodz.com###footer #wpsafe-link:style(display: block !important;) -apkandroidhub.in,babymodz.com,deezloaded.com,mad.gplpalace.one,studyis.xyz###wpsafe-generate:style(display: block !important;) -apkandroidhub.in,babymodz.com,deezloaded.com,mad.gplpalace.one,studyis.xyz##div[id^="wpsafe-wait"] -apkandroidhub.in,deezloaded.com,mad.gplpalace.one,studyis.xyz###wpsafe-link:style(display: block !important;) -rocklink.in##+js(set, blurred, false) -techyreviewx.com##+js(nano-sib, timer, 1800) -techyreviewx.com##.get-link:remove-attr(disabled) -techyreviewx.com##.get-link:remove-class(disabled) -@@||noviny.sk^$xhr,1p -*$frame,domain=noviny.sk,redirect-rule=noopframe -! piracy.moe ads -piracy.moe##main > h2:nth-of-type(1):has-text(Sponsored) -piracy.moe##[class*="Card_sponsored__"] -piracy.moe##[class^="SupportBanner_banner__"] -digminecraft.com##div > [id$="_slot"]:upward(div) -rabbitstream.net##+js(set, console.clear, undefined) -himovies.*##+js(nowoif) -||ezzmmvzleavnj.top^ -||i.imgur.com/*.gif$image,domain=rabbitstream.net -rockmods.net##+js(acs, String.prototype.charCodeAt, protected_links) -! pastemytxt.com popup, ad -||pastemytxt.com/downloadad.jpg -||imgbox.com^$domain=pastemytxt.com -hispasexy.org##+js(acs, decodeURI, decodeURIComponent) -hispasexy.org##+js(aopr, _cpp) -hispasexy.org##+js(aopr, popns) -mp3juices.yt##+js(nowoif, !ytcutter.net) -@@||plg.ovakode.com^$ghide -plg.ovakode.com##ins.adsbygoogle -plg.ovakode.com##.x300bnx -javplaya.com##+js(aopr, __Y) -javfindx.com###previewBox -mycloudzz.com##+js(aopr, __Y) -||javfindx.com/sw.js -javguru.top##+js(nano-sib) -javguru.top##.ad-parent -javguru.top##a[href^="https://media.r18.com/"] -||javevil.com^$3p -masterduelmeta.com##:xpath('//*[contains(text(),"allow ads")]'):upward(3) -masterduelmeta.com##html,body:style(overflow: auto !important;) -*$xhr,redirect-rule=nooptext,domain=masterduelmeta.com -@@||delfi.lv^$ghide -gcertificationcourse.com##+js(acs, eval, replace) -gcertificationcourse.com##[id*="PAds_"] -gcertificationcourse.com##[id*="PAds-"] -gcertificationcourse.com##+js(no-xhr-if, adsbygoogle) -@@||getfree.co.in^$script,1p -sampledrive.in##+js(acs, eval, replace) -sampledrive.in###block-4 -sampledrive.in###block-6 -*$script,3p,redirect=noop.js,domain=sampledrive.in|shorttrick.in -sampledrive.in##+js(acs, document.createElement, onerror) -||d3plnp2f9sfye5.cloudfront.net^$script,redirect-rule=noopjs -shorttrick.in###wpsafe-generate, #wpsafe-link:style(display: block !important;) -@@||shorttrick.in^$ghide -||sampledrive.in/wp-content/uploads/*.js?ver=$script,1p -sampledrive.in##+js(aeld, DOMContentLoaded, adsSrc) -sampledrive.in##+js(aost, document.getElementById, adsBlocked) -shorttrick.in##+js(aost, fetch, https) -shorttrick.in##+js(aopr, checkAdsStatus) -projectfreetv.one##+js(set, console.clear, undefined) -diglink.blogspot.com##+js(nano-sib) -re.two.re##+js(nostif, getComputedStyle, 250) -re.two.re##.ads -gamingvital.com##+js(acs, decodeURIComponent, ai_) -gamingvital.com###tdi_132 -blindhypnosis.com##.abcd -blindhypnosis.com##.asdf:style(display: block !important;) -javpoll.com##+js(aopr, __Y) -vivercomsaude.online##.demand-supply -pornoborshch.com##+js(ra, onclick) -pornoborshch.com##.on-player-wrap3 -jojo-themes.net##+js(acs, eval, replace) -jojo-themes.net##+js(nano-sib, download_delay) -allstreaming.online##+js(acs, eval, replace) -allstreaming.online###tab-ad -allstreaming.online##.les-title:has-text(Sponsor) -allstreaming.online##.selected:has-text(Sponsor) -btcadspace.com##+js(acs, document.getElementById, AdBlock) -@@||seopolarity.com^$ghide -seopolarity.com##ins.adsbygoogle -seopolarity.com##.sidebar_adds -mmorpg.org.pl##+js(no-fetch-if, wtg-ads) -mmorpg.org.pl##div.bABcMb.sc-5odcub-0 -hostmath.com##+js(set, canRunAds, true) -hdmovie20.com##+js(ra, href, #clickfakeplayer) -playmyopinion.com##+js(acs, $, modal) -! xvideos.wptri.com popup -xvideos.wptri.com##+js(nowoif) -foodsdictionary.co.il##+js(no-xhr-if, /ad-) -mcleaks.net##+js(aeld, np.detect) -mcleaks.net##div.col-lg-12[style="margin-bottom: 30px;"] -pherotruth.com##+js(acs, setTimeout, void 0) -exey.app##+js(aost, document.getElementById, disable) -*$xhr,redirect-rule=nooptext,domain=stol.it -@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$xhr,domain=yhocdata.com -yhocdata.com##+js(nano-stb, /__ez|window.location.href/, *) -@@||base64.online/ads.txt -rapelust.com##+js(set, D4zz, noopFunc) -vidstreamz.online##[target="_blank"][style]:upward([style]) -vidstreamz.online##.xad-wrapper -vidstreamz.online##+js(aopr, open) -logikfx.com##.wix-blog-print-in-full-width[data-testid="mesh-container-content"] > div[class^="_"] > div[style="padding-left: 30px;"] -logikfx.com##p[style="font-size:12px; text-align:center;"] > span:has-text(Advertisement) -logikfx.com##section.wix-blog-hide-in-print p[style="font-size:12px; text-align:center;"] > span:has-text(Advertisement):upward(section) -logikfx.com##div[style="width:740px"] -javplay.me##+js(aopr, popns) -! note.sieuthuthuat.com anti-adb -note.sieuthuthuat.com##+js(set, isAdBlockActive, false) -tutorialspots.com##+js(nowoif) -||faststream.xyz^$3p -myflixertv.to##.modal -myflixertv.to##.modal-backdrop -etsy.com##body.no-touch li.wt-list-unstyled div.v2-listing-card__info > div.wt-text-caption.wt-text-grey > span:not(.wt-icon):not([aria-role]):matches-css(display:inline-block):has-text(/^Ad/i):upward(li):remove() -etsy.com##li:not(#ad-ubo) .listing-link[href*="ref=sc_gallery"]:upward(li) -www.etsy.com##ol[data-results-grid-container] > li > div:not([data-appears-event-data*="listing_ids"]):not([data-appears-component-name="search2_organic_listings_group"]) -techhelpbd.com##+js(nano-sib, counter--) -techhelpbd.com##.THBD-Ads -techhelpbd.com##.pum-overlay -techhelpbd.com##html:style(overflow: auto !important) -techhelpbd.com##+js(no-xhr-if, /doubleclick|googlesyndication/) -techhelpbd.com##+js(noeval-if, show) -hackingfather.com##+js(acs, $, test) -*$script,redirect-rule=noopjs,domain=pinoyfaucet.com -pinoyfaucet.com##+js(no-fetch-if, /^/) -pinoyfaucet.com###wcfloatDiv4 -phica.net##.overlay -phica.net##.overlay-container -phica.net##body:style(overflow:auto !important) -phica.net##+js(nowoif) -javleaked.com,pornhole.club##+js(aopr, __Y) -ffem.club##+js(aopr, __Y) -jvembed.com##+js(aopr, __Y) -drydenwire.com##.modal -drydenwire.com##.modal-backdrop -drydenwire.com##[data-track-category="Sponsors"] -drydenwire.com##.promogrid -chillx.top##+js(nowoif, !/d/) -chillx.top,playerx.stream##+js(aeld, click, Popup) -chillx.top###theotherads -chillx.top##[style][href][target="_blank"] -chillx.top##+js(no-fetch-if, googlesyndication) -adinsurance.xyz,insurglobal.xyz##+js(set, blurred, false) -adinsurance.xyz,insurglobal.xyz##div[id^="bsa-zone_"] -banned.video,madmaxworld.tv##+js(set, Object.prototype.ads.nopreroll_, true) -faselhd.*##.alert-danger.alert -faselhd.*###popup -@@||mittelhessen.de^$ghide -mittelhessen.de##[class*="banner"] -mittelhessen.de##[class*="Banner"] -mittelhessen.de##.adSlot -getcopy.link##+js(aopr, lck) -getcopy.link##+js(refresh-defuser) -rule34porn.net##+js(acs, Math.random, ExoLoader) -rule34porn.net##+js(aopr, decodeURI) -rule34porn.net##+js(nostif, showModal) -largescaleforums.com##+js(nostif, ).show()) -crunchyscan.fr##+js(acs, document.write, detect) -crunchyscan.fr##+js(acs, eval, replace) -crunchyscan.fr##.col-sm-8.col-md-8.main-col > .c-sidebar -crunchyscan.fr##.widget_custom_html -*$script,redirect-rule=noopjs,domain=crunchyscan.fr -crunchyscan.fr##+js(aopr, open) -! 4stream.*, streambee. to popups -4stream.*,streambee.to,streamers.watch##+js(nowoif) -emb.x179759.apl123.me,emb.x187106.apl152.me##+js(nowoif) -emb.x179759.apl123.me,emb.x187106.apl152.me###ads -techgeek.digital##+js(aopr, adblockDetector) -techgeek.digital##+js(nowoif) -techgeek.digital##+js(set, blurred, false) -techgeek.digital##.espaciodos -*$script,redirect-rule=noopjs,domain=gainbtc.click|multiclaim.net|proinfinity.fun -multiclaim.net###wcfloatDiv4 -multiclaim.net##.home_banner -gainbtc.click##ins[class][style="display:inline-block;width:728px;height:90px;"] -||raw.githubusercontent.com/expertad^$3p -||firebasestorage.googleapis.com/v0/b/gosyndication.appspot.com^ -||gainbtc.click^$3p -bestpornflix.com,4porn4.com##.table -! megafilmeseseriesonline. com + player megafilmeshdonline. org popups -megafilmeshdonline.org##+js(aopr, __Y) -beastx.top,playerx.stream###theotherads -beastx.top,playerx.stream##+js(nowoif, !/d/) -playerx.stream##[style][href]:upward([style]) -supersextube.pro##+js(nowoif) -supersextube.pro##.ad -h-flash.com##+js(nowoif) -@@||h-flash.com^$ghide -h-flash.com##[href^="https://chaturbate.com/in/"] -h-flash.com###topzone -*$popunder,domain=h-flash.com -*$frame,redirect-rule=noopframe,domain=h-flash.com -h-flash.com##[href^="https://t.aagm.link/"] -h-flash.com#@#.google-ads -||imobileporn.com/premium/ -||h-flash.com/data/image/mcs/chat*$image,1p -||h-flash.com/data/image/mcs/*.gif$image,1p -||h-flash.com/data/image/candyai/$frame,1p -||mediacandy.ai^$3p -h-flash.com##div[style$="overflow:hidden"]:has(> a[alt="CandyAI"]) -h-flash.com##a[style*="/data/image/mcs/chat"] -h-flash.com##.pagebody:style(height: auto !important;) -h-flash.com##div[id^="randomzone"] -||gratisbitcoin.my.id^$3p -clickscoin.com##.d-sm-block.d-none -clickscoin.com##a[href^="https://albeitinflame.com/"] -milf300.com##.bottom_space -milf300.com##.container > .text-center[style="height: 100px;"] -milf300.com##div[style="width: 300px;height: 250px;"] -milf300.com##div[style="width: 300px; height: 250px;"] -safe.elektroupdate.com#@#ins.adsbygoogle[data-ad-slot] -safe.elektroupdate.com#@#ins.adsbygoogle[data-ad-client] -safe.elektroupdate.com##.adsbygoogle:style(height: 1px !important;) -eroticity.net##+js(aopr, loadTool) -||eroticity.net/clientscript/popcode_ -||eroticity.net/clientscript/poptrigger_ -live.dragaoconnect.net###yx-sli1 -live.dragaoconnect.net###yx-sli2 -live.dragaoconnect.net##a[href^="ad/link.php"] -live.dragaoconnect.net##+js(nostif, 0x) -live.dragaoconnect.net##+js(nosiif, 0x) -dev2qa.com##+js(acs, decodeURIComponent, ai_) -worldappsstore.xyz##+js(no-fetch-if, googlesyndication) -worldappsstore.xyz###wpsafe-generate:style(display: block !important) -worldappsstore.xyz###wpsafe-link:style(display: block !important) -worldappsstore.xyz###wpsafe-wait1 -worldappsstore.xyz###wpsafe-wait2 -ponselharian.com##+js(nowoif) -||ponselharian.com/img/download_ -! nsfw fullxxxporn. net popups -fullxxxporn.net##+js(aopr, decodeURI) -*$script,redirect-rule=noopjs,domain=faucetpot.me -faucetpot.me##.text-center.p-0.order-md-1.col-lg-3.col-md-2.col-6 -faucetpot.me###middle-adspace -faucetpot.me##.p-0.text-center.col-12 -koreanpornmovie.xyz##+js(aopr, BetterJsPop) -||koreanpornmovie.xyz/cdn-cgi/trace$1p -check-plagiarism.com##[id^="topads_"] -broflix.club##+js(noeval-if, show) -broflix.club##.idmuvi-topplayer -broflix.club##[href^="https://shope.ee/"] -! cine. to popups -cine.to##+js(aeld, , /open.*_blank/) -thebharatexpressnews.com##+js(aopr, b2a) -hakie.net##+js(nowoif) -jav247.top##+js(aopr, __Y) -! vtube .to/vtplay .net ads -vtube.to##+js(nowoif) -vtube.to##+js(acs, RegExp, debugger) -vtube.to##+js(aeld, popstate) -vtube.to,vtplay.net##+js(set, D4zz, noopFunc) -/vtu_*.js$script,domain=vtbe.*|vtube.to|vtube.network|vtplay.net|vtplayer.net -||flirtmeet.life^$3p -98zero.com##+js(aopr, adBlockDetected) -! ninjashare. to ads/popups -ninjashare.to##+js(aopr, console.clear) -! vumoo.cc fake player -vumoo.cc##+js(ra, href, #clickfakeplayer) -! vumoo.vip propeller -vumoo.vip##+js(aost, XMLHttpRequest, injectedScript) -fashionunited.*##.adunitContainer:upward(3) -jugomobile.com##+js(aeld, DOMContentLoaded, adsBlocked) -m.liputan6.com##+js(aeld, scroll) -! papunika. com anti adb -papunika.com##+js(nostif, ai_) -basic-tutorials.de##+js(aopr, advanced_ads_ready) -! xxxvideohd.net popup -||xxxvideohd.net/js/main.course.js -||xxxvideohd.net/js/sellito.js -vidplaystream.top##+js(nowoif) -vidplaystream.top##div[style="position: fixed; display: block; width: 100%; height: 100%; inset: 0px; background-color: rgba(0, 0, 0, 0); z-index: 300000;"] -nashstream.top##+js(aopr, __Y) -||solutions.playernetca.top^ -yuistream.xyz##+js(aopr, __Y) -*$xhr,redirect-rule=noop.txt,domain=thingiverse.com -coverapi.store,tenies-online.*##+js(aopr, mm) -tubeload.co##+js(nowoif) -coverapi.store##.close00 -*$script,redirect-rule=noopjs,domain=mrlabtest.com -infinityblogger.in##+js(acs, eval, replace) -! health-and.me anti-adb, timer https://foofly.xyz/EYwC -health-and.me##+js(acs, document.addEventListener, google_ad_client) -health-and.me##^script:has-text(google_ad_client) -forexeen.us,health-and.me##+js(nano-sib, counter) -forexeen.us##+js(nostif, getComputedStyle) -magdownload.org##+js(nostif, _0x) -magdownload.org##.home-jumbotron -*$script,domain=multiclaim.net,redirect-rule=noopjs -prepostseo.com##+js(acs, loadAdBlocker) -prepostseo.com##+js(no-fetch-if, googlesyndication) -prepostseo.com###top-head-ad -prepostseo.com###after_button_ad_desktop_2 -prepostseo.com###after_title_ad -prepostseo.com###after_title_ad_2 -prepostseo.com###above_button_ad -prepostseo.com###sidebar_ad_big -prepostseo.com###floorad-wrapper -prepostseo.com##div[id^="bsa-zone_"] -bluemoon-mcfc.co.uk##div.stickyContainer -bluemoon-mcfc.co.uk##[id^="snack_"] -worldtravelling.com##+js(nostif, ads) -! bdnewszh. com popups, ads -bdnewszh.com,rainostreams.com##.billboard-banner -bdnewszh.com,rainostreams.com##.left-sticky-banner -bdnewszh.com,rainostreams.com##.right-sticky-banner -bdnewszh.com,rainostreams.com##.content-banner -bdnewszh.com##.vpn-wrapper -! http://rainostreams.com/soccer/stream10/?moment= popups, ads -bdnewszh.com##+js(set, path, '') -bdnewszh.com##^script:has-text("admc") -bdnewszh.com##^script:has-text(\"admc\") -bdnewszh.com##^script:has-text(push) -embed4u.xyz##.smartlink -embed4u.xyz###_vliadb83 -order-order.com##+js(acs, Math.random, bait) -order-order.com###stickyfooterad -azoraworld.com##+js(acs, String.fromCharCode, ai_adb) -cacfutures.org,comexlive.org,daxfutures.org,dollarindex.org,dowfutures.org,ftsefutures.org,mcxlive.org,nasdaqfutures.org,ncdexlive.org,niftyfutures.org,nikkeifutures.org,sgxnifty.org,spfutures.org##+js(acs, jQuery, "No") -cacfutures.org,comexlive.org,daxfutures.org,dollarindex.org,dowfutures.org,ftsefutures.org,mcxlive.org,nasdaqfutures.org,ncdexlive.org,niftyfutures.org,nikkeifutures.org,sgxnifty.org,spfutures.org##.ads -huffpost.com##+js(set, HP_Scout.adBlocked, false) -ingles.com,spanishdict.com##+js(set, SD_IS_BLOCKING, false) -ingles.com,spanishdict.com##+js(aeld, , isBlocking) -ingles.com,spanishdict.com###adTopLarge-container -ingles.com,spanishdict.com##[id^="adSide"] -@@||d1q4kshf6f0axi.cloudfront.net/main/prebid-min-2022.js$script,domain=spanishdict.com -ikuhentai.net##div[style="position: fixed; display: block; width: 100%; height: 100%; inset: 0px; background-color: rgba(0, 0, 0, 0); z-index: 300000;"] -zeroupload.com##+js(rmnt, script, adblock) -*$script,redirect-rule=noopjs,domain=vimm.net -surfline.com##+js(nano-stb, adFreePopup, 15000, 0.02) -surfline.com##+js(set, Object.prototype.isPremium, true) -*$script,domain=surfline.com,redirect-rule=noopjs -surfline.com##+js(set, __BACKPLANE_API__.renderOptions.showAdBlock, '') -surfline.com#@#.ad-box:not(#ad-banner):not(:empty) -surfline.com###sl-header-ad -surfline.com##+js(aeld, timeupdate, , elements, .quiver-cam-player--ad-not-running.quiver-cam-player--free video) -||cdn-surfline.com/*/preroll_$image,3p,domain=surfline.com -||cdn-surfline.com/*/preroll_$media,3p,redirect=noopmp3-0.1s,domain=surfline.com -! NSFW faps. club - popunder -faps.club##+js(acs, onload, open) -chineseanime.co.in##+js(acs, String.fromCharCode, ai_adb) -aspdotnet-suresh.com,tudo-para-android.com,urdulibrarypk.blogspot.com##+js(aeld, load, onload) -*.png#$image,redirect-rule=1x1.gif -*.gif#$image,redirect-rule=1x1.gif -*.jpg#$image,redirect-rule=1x1.gif -*.svg#$image,redirect-rule=1x1.gif -! thedigitalfix .com PH -thedigitalfix.com###nn_bfa_wrapper:remove() -thedigitalfix.com##+js(nosiif, debug) -thedigitalfix.com##.sticky_rail600:remove() -! moviewatchonline. com.pk ads -moviewatchonline.com.pk##+js(aopw, atOptions) -moviewatchonline.com.pk##[href^="https://angularconstitution.com/"] -moviewatchonline.com.pk##[href*="?key="] -||bigpixel.cn/libs/plugins/blocker.js^ -bigpixel.cn##.portal_ad -! nsfw hdvideosporn. com popups -hdvideosporn.com##+js(aopr, decodeURI) -! uptobhai. com/info ads -||uptobhai.*^$csp=default-src 'self' *.favicon.cc *.google.com *.gstatic.com *.googleapis.com -masahub.net##+js(aopr, decodeURI) -masahub.net##+js(aopr, mm) -masahub.net##+js(aeld, , _0x) -||gifyu.com/*.gif$image,domain=masahub.net -striptube.net##+js(aopr, loadTool) -dulichkhanhhoa.net,noithatmyphu.vn##+js(no-fetch-if, googlesyndication) -dulichkhanhhoa.net,noithatmyphu.vn###wpsafe-generate:style(display: block !important;) -dulichkhanhhoa.net,noithatmyphu.vn###wpsafe-link:style(display: block !important;) -dulichkhanhhoa.net,noithatmyphu.vn##div[id^="wpsafe-wait"] -chiangraitimes.com##+js(acs, eval, replace) -! exo ads -desixxxtube.org,dirtyindianporn.*,freeindianporn2.com,indianpornvideos.*,kashtanka.*,kashtanka2.com,kompoz2.com,onlyindianporn.*,pakistaniporn2.com,porno18.*,xxnx.*,xxxindianporn.*##+js(aopr, exoJsPop101) -xxxhdvideo.*##+js(aopr, decodeURI) -indianporn365.net##+js(acs, document.createElement, 'script') -||dirtyindianporn.info/js/friends.sv.js -||pakistaniporn2.com/js/friends.minz.js -! amateur-couples.com,slutdump.com popunder, ads -amateur-couples.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -amateur-couples.com,slutdump.com##+js(set, dclm_ajax_var.disclaimer_redirect_url, '') -learnmania.org##+js(acs, $, RegExp) -@@||learnmania.org^$ghide -@@||learnmania.org/js/*.js?_v=$script,1p -boombj.com##+js(aost, Math, _0x) -||easyads29.*^ -! xxxextreme.org popup -xxxextreme.org##+js(aeld, getexoloader) -! anti adb uploadmx. com -@@||uploadmx.com^$ghide -uploadmx.com##ins.adsbygoogle -whcp4.com##+js(nowoif) -! download3s.net focus detection -download3s.net##+js(set, blurred, false) -! desitelugusex. com ads -desitelugusex.com##+js(set, D4zz, noopFunc) -aresmanga.com##+js(acs, eval, replace) -||doubleclick.net^$xhr,redirect-rule=nooptext,domain=soccerstreams-100.* -mobilanyheter.net##+js(nostif, ai_) -! a8ix .live/atishmkv aliases -*$script,3p,denyallow=jsdelivr.net|facebook.net|fastly.net|fbcdn.net|marathimovies.online|tawk.to,domain=marathi.love|marathimovies.online|vipmarathi.xyz -*$script,3p,denyallow=wp.com,domain=atishmkv1.in -||rotf.lol^ -a8ix.*,atishmkv.*,atishmkv.marathi.vip,marathi.love,marathimovies.online,mkv.*,vipmarathi.xyz##.idmuvi-bannerplayer -a8ix.*,atishmkv.marathi.vip,atishmkv.*,mkv.*##.idmuvi-center-ads -a8ix.*,atishmkv.marathi.vip,atishmkv.*##.idmuvi-topbanner-aftermenu -a8ix.*,atishmkv.*##.inner-floatbanner-bottom -a8ix.*,atishmkv.*##.idmuvi-footerbanner -a8ix.*,atishmkv.*###custom_html-21 -! flixtor. stream ads -flixtor.stream##+js(nowoif) -xcity.org##+js(aopr, loadTool) -xcity.org##+js(set-cookie, popunder, 1) -portaliz.site##+js(no-xhr-if, adsbygoogle) -! Counter ads and requests inside doubleclick. net iFrames (general fix) -googleads.g.doubleclick.net###google-center-div -googleads.g.doubleclick.net###abgc -googleads.g.doubleclick.net##html[i-amphtml-no-boilerplate][amp4ads][class="i-amphtml-inabox"] -googleads.g.doubleclick.net###mys-wrapper -googleads.g.doubleclick.net##.jar -*$domain=googleads.g.doubleclick.net -stringreveals.com##+js(no-xhr-if, googlesyndication) -! mavavid. com popups -mavavid.com##+js(aopr, __Y) -porn-images-xxx.com###display_image_detail > span -! dvdplay. guru|sbs popups -*$script,3p,domain=dvdplay.* -dvdplay.*##+js(set, D4zz, noopFunc) -dvdplay.*##^script[data-cfasync]:has-text(decodeURIComponent) -flinsetyadi.com##+js(aopr, ai_run_scripts) -! xnxx-downloader - qqxnxx popups -qqxnxx.com,xnxx-downloader.net##+js(aopr, decodeURI) -@@||dubznetwork.com^$ghide -dubznetwork.com##+js(acs, $, adb-btn) -dubznetwork.com##+js(nostif, , 1000) -dubznetwork.com##+js(acs, eval, replace) -dubznetwork.com##.aoa_overlay:style(height: 0px !important) -dubznetwork.com##[class^="clpr-emre"] -dubznetwork.com###id-custom_banner -@@||cricketgames.club^$ghide -@@||dubznetwork.com^$css,1p -@@||dubsmovies.cc^$ghide -@@||tapisa.online^$ghide -tapisa.online##.aoa_overlay -acervodaputaria.com.br##+js(acs, decodeURI, decodeURIComponent) -! NSFW comicspornow. com popup -comicspornow.com##+js(aopr, decodeURI) -||comicspornow.com/*.php$script,1p -diampokusy.com##+js(aopr, __Y) -@@||shortx.net^$ghide -shortx.net##+js(aeld, load, nextFunction) -shortx.net##+js(set, blurred, false) -! mmopeon.ru popup -mmopeon.ru##+js(acs, decodeURI, decodeURIComponent) -! needrombd.com -needrombd.com##+js(acs, eval, replace) -! 9xbdlink. xyz antiadb -@@||9xbdlink.xyz^$ghide -! teluguonlinemovies. me popups -teluguonlinemovies.*##+js(nowoif) -galaxyfirmware.*#@#.textad -norton.com##+js(window-close-if, /protect?) -@@||play.tv3.lv^$script,1p -*$image,domain=play.tv3.lv,redirect-rule=1x1.gif -*$script,domain=play.tv3.lv,redirect-rule=noopjs -@@||play.tv3.lt^$script,1p -*$image,domain=play.tv3.lt,redirect-rule=1x1.gif -*$media,domain=play.tv3.lt,redirect=noopmp3-0.1s -*$script,domain=play.tv3.lt,redirect-rule=noopjs -*$image,domain=play.tv3.ee,redirect-rule=1x1.gif -*$script,domain=play.tv3.ee,redirect-rule=noopjs -play.tv3.ee,play.tv3.lt,play.tv3.lv,tv3play.skaties.lv##+js(set, Object.prototype.isNoAds, {}) -@@||play.tv3.ee^$script,1p -@@*$ghide,domain=play.tv3.* -! jalshamoviezhd. beauty ads -jalshamoviezhd.*##[href^="https://usounoul.com/"] -! dafontvn.com timer -redirect.dafontvn.com##.progress -redirect.dafontvn.com###btngetlink:style(display: inline-block !important) -redirect.dafontvn.com##+js(nano-sib, distance) -@@||gsmware.com^$ghide -gsmware.com##.adtester-container -gsmware.com##.HTML.widget .adsbygoogle:upward(.widget) -gsmware.com##.kabaradd -gsmware.com##+js(noeval-if, adblock) -gamingforecast.com##+js(acs, addEventListener, popunder) -@@||a.poki.com/prebid/$script,domain=poki-gdn.com|repuls.io -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=poki-gdn.com|repuls.io -@@||g.doubleclick.net/gampad/ads?*&url=https%3A%2F%2Fgames.poki.com$xhr,domain=imasdk.googleapis.com -@@||g.doubleclick.net/gampad/ads?*&url=https%3A%2F%2Frepuls.io$xhr,domain=imasdk.googleapis.com -||redirector.gvt1.com/videoplayback/id/*/source/gfp_video_ads/$media,redirect=noop-1s.mp4,domain=poki-gdn.com|repuls.io -poki.*##div[class*="_AdvertisementContainer"] -repuls.io###partnerAd_letter -poki.*##div[width="300"][height="250"]:upward(1) -poki.*##div[width="728"][height="90"]:upward(1) -prajwaldesai.com##+js(nostif, ai_) -prajwaldesai.com##+js(nostif, site-access) -@@||sub-short.link^$ghide -||vlitag.com^$script,redirect-rule=noopjs,domain=mangasco.com -downloadr.in##+js(nostif, show) -downloadr.in##+js(nano-stb, countdown) -@@||urdutimesdaily.com^$ghide -topcomicporno.com##+js(nostif, show) -bithub.win,freeshib.biz##+js(acs, eval, replace) -bithub.win###wcfloatDiv4 -bithub.win##ins -dzeko11.net##+js(nostif, offsetHeight) -drawize.com##+js(acs, chAdblock) -! musicc.xyz focus detection -musicc.xyz##+js(set, blurred, false) -@@||mycinema.pro^$ghide -mycinema.pro##[fdo] -! xvideos-downloader.net popup -xvideos-downloader.net##+js(set, D4zz, noopFunc) -xvideos-downloader.net##+js(aeld, /^(?:load|click)$/, popMagic) -battleplan.news##+js(set, Object.prototype.ads, noopFunc) -! fotodovana.com timer -model-tas-terbaru.com###wpsafe-generate:style(display: block !important) -model-tas-terbaru.com###wpsafe-link:style(display: block !important) -model-tas-terbaru.com###wpsafe-wait1 -model-tas-terbaru.com###wpsafe-wait2 -! benzin-preis.ch -@@||benzin-preis.ch^$ghide -! vidmedia.top popup -vidmedia.top##+js(aopr, __Y) -methodspoint.com##+js(ra, href, [onclick], stay) -saveearning.com##.e3lan -saveearning.com##.theiaStickySidebar -! cricfree. io / live popups -cricfree.*,cricplay2.*,primetubsub.*,yourtehzeeb.com##+js(nowoif) -primetubsub.*##+js(aopr, AaDetector) -*.gif$image,domain=cricfree.* -onlymp3.to##+js(nowoif) -||onlymp3.to/ad_request.js$script,1p,redirect-rule=noopjs -||ublockpop.com^$all -||drectsearch.com^$all -||worektobe.co^$all -figurehunter.net##+js(no-fetch-if, google) -||sumfaucet.com/adblock.php$xhr,redirect-rule=nooptext,1p -! hindimovies. to propeller ads -hindimovies.to##+js(acs, Math, String.fromCharCode) -hindimovies.to##+js(nowoif) -hdmovie5.*##+js(ra, href, #clickfakeplayer) -@@||bootdey.com^$ghide -! clickyfly.com timer -audiencepool.com,techysnap.com###interstetial-container -audiencepool.com,techysnap.com###wpsafe-time -audiencepool.com,techysnap.com###wpsafe-wait1 -audiencepool.com,techysnap.com###wpsafe-generate:style(display: block !important) -audiencepool.com,techysnap.com###wpsafe-snp:style(display: block !important) -techysnap.com##body:style(overflow: auto !important) -! mult34. com popunder -mult34.com##+js(aopr, decodeURI) -valuable.hatenablog.com##+js(acs, document.addEventListener, google_ad_client) -! www.visflakes.com timer -visflakes.com###wpsafe-generate:style(display: block !important;) -visflakes.com###wpsafe-link:style(display: block !important;) -visflakes.com##div[id^="wpsafe-wait"] -! cutw.in timer -chooyomi.com##+js(nano-sib, timer) -animesuge.to##+js(aost, document.createElement, _0x) -kissasians.org##.btn-success[href*="?key="] -||berangkasilmu.com^$3p -hentaispark.com##+js(aost, Math.random, inlineScript) -journaldemontreal.com,tvanouvelles.ca##+js(no-fetch-if, doubleclick) -journaldemontreal.com##+js(no-xhr-if, doubleclick) -||quebecormedia.com/infojdem/lib/cheezwhiz/$script -||rubiconproject.com^$xhr,3p,redirect-rule=nooptext,domain=journaldemontreal.com -@@||ads.rubiconproject.com/prebid/*_JournalDeMontreal.js$script,3p,domain=journaldemontreal.com -@@||securepubads.g.doubleclick.net/tag/js/gpt.js$script,3p,domain=journaldemontreal.com -@@||securepubads.g.doubleclick.net/pagead/managed/js/gpt/*/pubads_impl.js$script,3p,domain=journaldemontreal.com -journaldemontreal.com###banner -journaldemontreal.com##.bigbox-container -! jardima.com timer -jardima.com###wpsafe-generate:style(display: block !important;) -jardima.com###wpsafe-link:style(display: block !important;) -jardima.com##div[id^="wpsafe-wait"] -jardima.com##.g1-slideup-wrap -! for-ad-inserter-sites -||media.net^$object,redirect-rule=noopjs -||google-analytics.com^$object,redirect-rule=noopjs -||doubleclick.net^$object,redirect-rule=noopjs -||secure.quantserve.com^$object,redirect-rule=noopjs -||amazon-adsystem.com^$object,redirect-rule=noopjs -||ezodn.com^$object,redirect-rule=noopjs -fox.com##+js(no-xhr-if, googlesyndication) -fox.com,foxsports.com##+js(json-prune, ads) -fox.com,foxsports.com##+js(m3u-prune, /\,ad\n.+?(?=#UPLYNK-SEGMENT)/gm, /uplynk\.com\/.*?\.m3u8/) -||link.theplatform.com/s/*/media/*=m3u&*_webdesktop_vod*$xhr,domain=foxsports.com,removeparam=/^((?!formats|profile).)*$/ -://foxvideo-sports$xhr,3p,removeparam=ad.prof,domain=foxsports.com -! movieswatch24.pk,watchonlinemovies15.pk popup -movieswatch24.pk,watchonlinemovies15.pk##+js(nowoif) -cue-vana.com##+js(nano-sib, count) -@@||wintub.com^$ghide -poki-gdn.com##+js(aopr, alert) -lalastreams.me##+js(aopr, mm) -! uploadingsite. com intermediate ads skip -uploadever.in,uploadingsite.com##+js(acs, getCookie, onload) -||gamezop.com^$frame,3p -||static.gamezop.com/creatives^$image,3p -||uploadingsite.info/sw.js$script,1p -||postimg.cc^$image,domain=uploadingsite.info -uploadever.in##.adownload-button -chimicamo.org##+js(no-xhr-if, ads) -chimicamo.org##.widget:has-text(Adv) -hentaidexy.com##+js(nostif, atob) -filmy-hit.stream##.dwn-btn -fiilmy-hit.stream##.btn-dwn:not([href*="Hd?d"]) -xhand.com##+js(set, flashvars.adv_start_html, '') -xhand.com##+js(set, flashvars.adv_pause_html, '') -/js/ppndr. -! rureka. com anti adb -rureka.com##+js(aeld, , $) -inwepo.co##+js(aopr, b2a) -! anti adb initBlocked -! forfun.ist,mayclub.com.tw,sheikhjee.com,hauswirt.com,houseofcharizma.com -||ssl.geoplugin.net/javascript.gp$xhr,redirect-rule=noopjs -earnme.club,jrlinks.in,usanewstoday.club##[id^="tp-wait"] -earnme.club,jrlinks.in,usanewstoday.club###tp-generate,[id^="tp-snp"]:style(display: block !important) -xxvideoss.net##+js(aopr, BetterJsPop) -@@||trendyoum.com^$ghide -trendyoum.com###countdown -trendyoum.com###download_link:style(display: inline-block !important) -trendyoum.com##+js(set, countDownDate, 0) -shortawy.com##+js(set, blurred, false) -*#*/ad/$image,redirect-rule=1x1.gif -webforefront.com##+js(no-xhr-if, ads) -xubster.com##+js(nano-stb, remaining, 1000, 0.001) -xubster.com###countdown -! ghior. com anti adblock -ghior.com##+js(rmnt, script, deblocker) -! sexlivesex. net popups -sexlivesex.net##+js(acs, onload, open) -obutecodanet.ig.com.br##+js(no-xhr-if, googlesyndication) -eztv.*##+js(nowoif) -eztv.*##+js(nostif, adb) -eztv.*##table:has-text(VPN) -eztv.*##^script:has-text(admc) -||wherat.com^ -! viet69. org popunder -viet69.org##+js(aopr, decodeURI) -firmwarex.net##+js(no-xhr-if, googlesyndication) -firmwarex.net##+js(aost, setTimeout, adsBlocked) -loadx.ws##+js(nowoif) -*$script,3p,denyallow=cloudflare.com|cloudflare.net|hwcdn.net|jquery.com|jsdelivr.net,domain=wuxiarealm.com -ricettafitness.com,yts-subs.dev##+js(refresh-defuser) -ricettafitness.com###colunas:style(display: block !important;) -ricettafitness.com###saudacao -ricettafitness.com##body > p > span:has-text(adblock) -! proxy torrent sites popups -piraproxy.app,theproxy.*##+js(nowoif) -piraproxy.app,theproxy.*##+js(aopr, _wm) -unblocksite.pw##+js(aopr, XMLHttpRequest) -unblocksite.pw##+js(aopr, open) -unblocksite.pw##div[id][onclick^="window.open('https://vpn-offers.com/"] -unblocksite.pw##.antoic -unblocksite.pw##.all-linked -*$script,denyallow=cloudflare.com|hwcdn.net|jquery.com,domain=piraproxy.app|theproxy.*|unblocksite.pw -||adblockultra.com^$all -/j/m/qqqq.js? -.com/1?z=$script,3p -.com/2?z=$script,3p -.net/1?z=$script,3p -.net/2?z=$script,3p -/app/apx14.js -/app/x12.js -/hy.js?q22q2q2 -/zpp/zpp4.js -! xxxvideotube. net popunder -xxxvideotube.net##+js(aopr, decodeURI) -xxxvideotube.net##+js(set, D4zz, noopFunc) -! whats-on-netflix.com anti adb -whats-on-netflix.com##+js(acs, eval, replace) -dongknows.com##+js(no-fetch-if, /ads|doubleclick/) -dongknows.com##+js(nostif, show) -dongknows.com##+js(acs, document.getElementById, adsRequest) -dongknows.com###amz-deals -@@||dongknows.com^$ghide -tlin.me##+js(set, blurred, false) -tlin.me##[href*="mauchopt.net"] -! beststremo.com##+js(aost, Math, /(?=^(?!.*(https)))/) -beststremo.com##+js(nostif, 0x) -! mypornhere.com popup, ads -mypornhere.com##+js(set, flashvars.adv_start_html, '') -mypornhere.com##.item[style="text-align:center !important;"] -welt.de##[id^="outbrain_widget_"]:has-text(/anzeige/i) -welt.de##+js(ra, onmousedown, .ob-dynamic-rec-link, stay) -welt.de##.q-advertisement-banner -driveplayer.net##+js(nowoif) -apprepack.com##+js(set, blurred, false) -bunkr.is##+js(aeld, , exoJsPop101) -bulbagarden.net##+js(set, setupSkin, noopFunc) -filmeserialegratis.*,fsplayer.*##+js(nowoif) -filessrc.com,srcimdb.com##+js(nano-sib, counter) -! jav.re popup -jav.re##+js(aost, onload, /app.js) -##.adsbyrunactive -mangahub.io###adblock-notice -mangahub.io##.ads-container -*$script,3p,denyallow=cloudfront.net|disqus.com|disquscdn.com|facebook.net|fastlylb.net|fbcdn.net|google.com,domain=mangahub.io -||blocksly.org^$all -||induedabusive.casa^$all -forsal.pl##+js(no-fetch-if, dqst.pl) -note1s.com,paste1s.com##.countdown -note1s.com,paste1s.com##+js(ra, disabled, button) -rintor.*##+js(aopr, loadTool) -ytmp3cut.com##+js(aopr, _conf.pops) -alycia-debnam-carey.com,christinaricci.net,emmy-rossum.com,natalie-portman.org,rachel-brosnahan.org##+js(acs, setTimeout, .click()) -! nsfw watchomovies. life ads -!#if env_chromium -*$script,3p,denyallow=ajax.googleapis.com|gstatic.com|twitter.com|x.com,domain=watchomovies.* -!#endif -watchomovies.*##+js(rmnt, script, popunder) -||a.streamoupload.$script -###tabVideo > .rmedia -/go/*?ident=$frame,1p -/api/popv2.php$xhr,1p -pornwhite.com##.bottom-banners -pornwhite.com##.player-spots -||pornwhite.com/js/customscript.js -hindimoviestv.com,onlinewatchmoviespk.*,watchpk.live##+js(nowoif) -hindimoviestv.com##.mobile-btn -hindimoviestv.com##.mvic-btn -||boltx.stream^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation -top1iq.com##+js(nano-stb, run) -top1iq.com##+js(ra, disabled, a#redirect-btn) -top1iq.com##+js(rc, disabled, a#redirect-btn) -top1iq.com###post-body > p -! playtamil. tube ads -!#if env_mobile -||playtamil.*^$csp=default-src 'self' *.imgur.com -!#endif -! antiadb iptvjournal. com -iptvjournal.com##+js(no-fetch-if, googlesyndication) -iptvjournal.com###wpsafe-generate, #wpsafe-link:style(display: block !important;) -iptvjournal.com##div[id^="wpsafe-wait"] -moviestars.to##+js(set, count, 1) -coloredmanga.com##+js(aost, Math.random, inlineScript) -softwaretotal.net##+js(no-xhr-if, googlesyndication) -||desirefx.com^$frame,redirect=noopframe,domain=uploadcloud.pro -uploadcloud.pro##+js(nano-stb, show, 4000) -moviepl.xyz##+js(aopr, __Y) -! coolmoviez. skin ads -||coolmoviez.*^$csp=default-src 'self' -akumanimes.com##+js(acs, eval, replace) -m4uhd.*##+js(aopr, mm) -superplayxyz.club##+js(aopr, __Y) -depvailon.com##+js(aopr, PvVideoSlider) -depvailon.com##+js(aopw, _chjeuHenj) -depvailon.com##.spots -depvailon.com##.c-normdenomination-output -*$script,redirect-rule=noopjs,domain=elkjop.no -younetu.*##+js(nowoif) -younetu.*##+js(aopr, doSecondPop) -younetu.*##+js(set, adblockcheck, false) -||younetu.co/cdn-cgi/trace$xhr,1p -! animehub.ac,animeflv.ac popup -||animehub.ac/api/pop.php -autotrader.co.uk##.search-page__products > [data-is-promoted-listing] -autotrader.co.uk##.search-page__result .listings-standout:upward(.search-page__result) -autotrader.co.uk##.searchResults .product-card__ad-copy:upward(li) -7apple.net###wpsafe-generate, #wpsafe-link:style(display: block !important;) -7apple.net##div[id^="wpsafe-wait"] -! tiki.vn search ads -tiki.vn##div[class^="SearchAutocomplete"] > div[class^="style__StyledSuggestion"] > div:has(> a.brand-ad) -||111.90.150.10/wp-content/uploads/*.gif$image,1p -111.90.150.10##+js(acs, $, noConflict) -111.90.150.10##+js(aopr, preroll_helper.advs) -111.90.150.10###secondary > .widget_custom_html -@@||pikafile.com^$ghide -! repelishd. cx popups -repelishd.*##+js(nowoif) -hdhub4u.*,hblinks.pro##+js(aopr, mm) -hdhub4u.*##+js(nowoif) -sushi-scan.*##+js(nostif, show) -traderepublic.community##+js(nostif, show) -! emovies.si popup -||emovies.si/api/pop.php -hdthevid.online,vidhdthe.online##+js(aopr, JSON.parse) -||hdthevid.online/mavennofile.js -! watchseries9. cc popups -watchseries9.*##+js(aopr, mm) -coromon.wiki.gg##+js(aost, document.createElement, create_ad) -#@##adContext -#@##ad_img -#@##downloadAd -#@##topBannerAd -#@##topbannerad -#@##weatherad -###adContext:not(:empty) -###ad_img:not(:empty) -###downloadAd:not(:empty) -###topBannerAd:not(:empty) -###topbannerad:not(:empty) -###weatherad:not(:empty) -||bitfly.io/js/nt.js -||i.imgur.com^$image,domain=up-load.one -up-load.one##+js(set, blurred, false) -up-load.one###overlay -up-load.one##.iframe_id -k1nk.co##+js(aeld, click, popunder) -k1nk.co##+js(nowoif) -k1nk.co##+js(set, console.clear, noopFunc) -||k1nk.co/videos/*/_.pagespeed.$script,1p -! mangaraw.org ads,popup -mangaraw.org##+js(acs, decodeURI, decodeURIComponent) -mangaraw.org##+js(aopr, AaDetector) -mangaraw.org##^script[data-cfasync]:has-text(D4zz.) -mangaraw.org,rawmanga.top##.banner-block -mangaraw.org,rawmanga.top##.banner-landscape -*$script,3p,domain=mangaraw.org -*$script,3p,denyallow=cloudflare.com,domain=rawmanga.top -y2mate.com##+js(aopr, open) -||y2mate.com/themes/js/pn.js -! ad overlay + broken scroll -theblockcrypto.com##.modal-bg -theblockcrypto.com##body,html:style(height: auto !important; overflow: auto !important) -@@||anonigviewer.com/assets/js/peelad.js$script,1p -claimfey.com###tp-generate,#getlinkbtn:style(display: block !important;) -claimfey.com##div[id^="wpsafe-wait"] -zuba.link##+js(set, blurred, false) -@@||cutt.net^$ghide -cutt.net##.aspace -khsm.io##+js(nostif, getComputedStyle) -dramaworldhd.co##+js(no-fetch-if, googlesyndication) -dramaworldhd.co##+js(nano-sib, timeLeft) -||amazon-adsystem.com/aax2/apstag.js$domain=tasteofhome.com,important -descargatepelis.com##+js(nano-sib, contador) -teen-hd-sex.com,tube-teen-18.com,xxx-asian-tube.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) -/\.com\/[0-9a-z]{12,}\/[0-9a-z]{12,}\.js$/$script,1p,domain=tube-teen-18.com|teen-hd-sex.com|xxx-asian-tube.com -viplayer.cc##+js(aopr, __Y) -streamempire.cc###custom_html-4 -! watchonlinehd123. sbs ads -watchonlinehd123.sbs##+js(nowoif) -||watchonlinehd123.sbs/cdn-cgi/trace$xhr,1p -||decemberpedalunfair.com^$all -||refpamjeql.top^$all -! videofilms /prosongs .link popups -videofilms.*,prosongs.*##+js(aopr, __Y) -*$script,redirect-rule=noopjs,domain=madtrx.fun -madtrx.fun##.ads -hollywoodlife.com##+js(set, Object.prototype.enableInterstitial, false) -entireweb.com##+js(acs, setInterval, addAds) -tudaydeals.com##+js(no-fetch-if, googlesyndication) -tudaydeals.com###wpsafe-generate, #wpsafe-link:style(display: block !important;) -tudaydeals.com##div[id^="wpsafe-wait"] -! acrackstreams. com popups -acrackstreams.com##+js(nowoif) -||mathwarehouse.com/sitefiles/*/js/fixblock.js?$script,1p -babia.to##+js(acs, $, adsBlocked) -babia.to##+js(nostif, show) -! amateurs-fuck. com / sex-amateur-clips.com => exo ads + popups -amateurs-fuck.com,sex-amateur-clips.com##+js(acs, document.querySelectorAll, popMagic) -amateurs-fuck.com,sex-amateur-clips.com##+js(aeld, getexoloader) -amateurs-fuck.com,sex-amateur-clips.com###dclm_modal_content -amateurs-fuck.com,sex-amateur-clips.com##*:style(filter: none !important) -amateurs-fuck.com,sex-amateur-clips.com###dclm_modal_screen -dropmms.com##+js(aost, document.createElement, /^(?!.*(jquery|setDocument|inlineScript|gstatic|google|root|cgi).*)/) -! javqis. com popunder -javqis.com##+js(aopr, decodeURI) -/vast-new/src/videojs-preroll.js$script -nsfwzone.xyz##+js(aopr, __Y) -sdefx.cloud##+js(set, D4zz, noopFunc) -||p.jwpcdn.com/*/vast.js$script -edufileshare.com##+js(nano-sib, display) -xhomealone.com##+js(set, flashvars.popunder_url, '') -watchasians.cc##+js(aeld, click, popunder) -watchasians.cc##+js(set, console.clear, noopFunc) -@@||3dpchip.com^$ghide -! afdah2. com ads -afdah2.com##+js(aopr, mm) -@@||thinktibits.blogspot.com^$ghide -! proxy site ads -androidapks.biz,androidsite.net,animeonlinefree.org,animesite.net,computercrack.com,crackedsoftware.biz,crackfree.org,cracksite.info,downloadapk.info,downloadapps.info,downloadgames.info,downloadmusic.info,downloadsite.org,ebooksite.org,emulatorsite.com,fmovies24.com,freeflix.info,freemoviesu4.com,freesoccer.net,fseries.org,gamefast.org,gamesite.info,gostreamon.net,hindisite.net,isosite.org,macsite.info,mangasite.org,megamovies.org,moviefree2.com,moviesite.app,moviesx.org,musicsite.biz,patchsite.net,pdfsite.net,play1002.com,productkeysite.com,romsite.org,seriesite.net,siteapk.net,siteflix.org,sitegames.net,sitekeys.net,sitepdf.com,sitesunblocked.*,sitetorrent.com,softwaresite.net,superapk.org,supermovies.org,tvonlinesports.com,ultramovies.org,warezsite.net,watchmovies2.com,watchmoviesforfree.org,watchsite.net,youapk.net##+js(aopr, open) -/sw.js$script,domain=androidapks.biz|androidsite.net|animeonlinefree.org|animesite.net|computercrack.com|crackedsoftware.biz|crackfree.org|cracksite.info|downloadapk.info|downloadapps.info|downloadgames.info|downloadmusic.info|downloadsite.org|ebooksite.org|emulatorsite.com|fmovies24.com|freeflix.info|freemoviesu4.com|freesoccer.net|fseries.org|gamefast.org|gamesite.info|gostreamon.net|hindisite.net|isosite.org|macsite.info|mangasite.org|megamovies.org|moviefree2.com|moviesite.app|moviesx.org|musicsite.biz|patchsite.net|pdfsite.net|play1002.com|productkeysite.com|romsite.org|seriesite.net|siteapk.net|siteflix.org|sitegames.net|sitekeys.net|sitepdf.com|sitesunblocked.*|sitetorrent.com|softwaresite.net|superapk.org|supermovies.org|tvonlinesports.com|ultramovies.org|warezsite.net|watchmovies2.com|watchmoviesforfree.org|watchsite.net|youapk.net -/oho.js$script,domain=androidapks.biz|androidsite.net|animeonlinefree.org|animesite.net|computercrack.com|crackedsoftware.biz|crackfree.org|cracksite.info|downloadapk.info|downloadapps.info|downloadgames.info|downloadmusic.info|downloadsite.org|ebooksite.org|emulatorsite.com|fmovies24.com|freeflix.info|freemoviesu4.com|freesoccer.net|fseries.org|gamefast.org|gamesite.info|gostreamon.net|hindisite.net|isosite.org|macsite.info|mangasite.org|megamovies.org|moviefree2.com|moviesite.app|moviesx.org|musicsite.biz|patchsite.net|pdfsite.net|play1002.com|productkeysite.com|romsite.org|seriesite.net|siteapk.net|siteflix.org|sitegames.net|sitekeys.net|sitepdf.com|sitesunblocked.*|sitetorrent.com|softwaresite.net|superapk.org|supermovies.org|tvonlinesports.com|ultramovies.org|warezsite.net|watchmovies2.com|watchmoviesforfree.org|watchsite.net|youapk.net -mat6tube.com##+js(set, ads, undefined) -! multiup. us popups -multiup.us##+js(aeld, , pop) -multiup.us##+js(set, adblockcheck, false) -||unpkg.com/videojs-vast-vpaid@2.0.2/bin/videojs_5.vast.vpaid.min.js$script,domain=multiup.us -||multiup.us/cdn-cgi/trace$xhr,1p -multiup.us##[href="https://t.me/Russia_Vs_Ukraine_War3"] -||vbcdn.com/cdn/video_advt/*$media,redirect=noopmp3-0.1s -veblr.com###advt_click_href_link_upper -veblr.com##.advt-content -hotabis.com##+js(set, td_ad_background_click_link, undefined) -hotabis.com##[href^="https://axiadata.co.id"] -||hotabis.com/*/ads$image -||cxm-api.fifa.com/fifaplusweb/api/video/*$xhr,removeparam=adConfig -fifa.com##.theoplayer-ad-overlay-component -fifa.com##[href^="https://pubads.g.doubleclick.net/"] -||imasdk.googleapis.com/js/sdkloader/ima3.js$redirect-rule=google-ima.js,domain=fifa.com -||fifa.com/api/v*/ad-manager/$redirect=nooptext -66ccff.work##+js(alert-buster) -! popunder-sites -4rkinggame.com,phimmoiaz.cc##+js(aopr, popunder) -/wonderfarm68.js?v=$script,1p -||storage.googleapis.com/*&GoogleAccessId=firebase-adminsdk$media,redirect=noop-1s.mp4,domain=moviehdkh.com -||backblazeb2.com/*.gif$image,domain=moviehdkh.com -||moviehdkh.com/assets/*.gif$image,1p -moviehdkh.com###adsss -moviehdkh.com##.player-servers -moviehdkh.com##[href^="https://sss789.com/"] -mangahentai.xyz##+js(aopr, loadXMLDoc) -antifake-funko.fr##+js(aeld, DOMContentLoaded, AdBlock) -javenspanish.com##+js(acs, document.createElement, /l\.parentNode\.insertBefore\(s/) -player.subespanolvip.com##+js(aopr, BetterJsPop) -racedepartment.com##+js(acs, $, adsBlocked) -! freeporncomics.me popup -freeporncomics.me##+js(acs, Date, 'shift') -||images.outbrainimg.com^$image -||theswagsports.com/can/*.htm$script,1p -theswagsports.com##.colombiaoneinvalid -theswagsports.com##a[rel*="sponsored"] -theswagsports.com###btm-widget img[onload]:upward(#btm-widget > .colombiaonesuccess > div) -pkpics.club###countdown -pkpics.club##img[onclick]:upward(.wait):style(display: block !important) -! hentaimoe.me popup -hentaimoe.me##+js(acs, Date, 'shift') -! uploadbaz. me ads -uploadbaz.*##+js(acs, onload) -uploadbaz.*##+js(acs, Math.imul) -||finchtechie.com^$3p -freecodezilla.net##+js(aeld, DOMContentLoaded, adsBlocked) -freecodezilla.net##+js(no-xhr-if, googlesyndication) -! hdmoviesmaza. pw popups -hdmoviesmaza.*##+js(nowoif) -@@||textstudio.co^$ghide -textstudio.co##+js(set, ADBLOCK, false) -||111.90.150.149/wp-content/uploads/*.gif$image,1p -111.90.150.149##+js(acs, jQuery, magnificPopup) -111.90.150.149##+js(aopr, preroll_helper.advs) -111.90.150.149##.idmuvi-topbanner-aftermenu -111.90.150.149##[href*="buaksib.in"] -inbbotlist.com##+js(no-fetch-if, googlesyndication) -inbbotlist.com###wpsafe-generate, #wpsafe-link:style(display: block !important;) -inbbotlist.com##div[id^="wpsafe-wait"] -apkmagic.com.ar##+js(no-xhr-if, ads) -@@||gamaniak.com^$script,1p -@@||gamaniak.com^$ghide -! moviesjoy. pw/.best/.plus/ .to /. is popunders -moviesjoy.*##+js(acs, document.createElement, /l\.parentNode\.insertBefore\(s/) -moviesjoy.*##+js(aopr, mm) -moviesjoy.*##+js(nowoif) -moviesjoy.*###fcnbox -moviesjoy.*##[href*="moviesflix4k"] -moviesjoy.*##.premodal.modal -moviesjoy.*##.show.modal-backdrop -moviesjoy.*##body:style(overflow: auto !important;) -currencyconverterx.com##+js(acs, document.createElement, register) -currencyconverterx.com##.block-after-head -currencyconverterx.com##.block-inside-blocks -||imasdk.googleapis.com/js/core/bridge*.html$frame,domain=html5.gamemonetize.co,important -/\/img\/(?!new).+\.gif/$image,1p,domain=jennylist.xyz -xxxxvideo.uno##.sticky-elem -xxxxvideo.uno##.place-wink -boxingstreams100.com,mlbstreams100.com,mmastreams-100.tv,nbastreams-100.tv,soccerstreams-100.tv##+js(no-fetch-if, doubleclick) -r3owners.net##+js(acs, $, adsBlocked) -apkmodhub.in##+js(acs, String.fromCharCode, ai_adb) -apkmodhub.in##.sdl_text -apkmodhub.in##.show_download_links:style(display: block !important) -@@||digilibraries.com^$ghide -digilibraries.com##.adsbygoogle:style(height: 0px !important; visibility: collapse;) -@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=hidive.com -3hentai.net##+js(nowoif) -3hentai.net###header-ban-agsy -! vidcdn. co ads -vidcdn.co##+js(aopr, BetterJsPop) -vidcdn.co##+js(aopr, arrvast) -||vidcdn.co/cdn-cgi/trace$xhr,1p -thetodaypost.com##+js(acs, PopFocus) -newtumbl.com##+js(set, POSTPART_prototype.ADKEY, noopFunc) -newtumbl.com##.broughtby -newtumbl.com##.nt_holder_of_promoish_content -gaget.hatenablog.com##+js(acs, document.addEventListener, google_ad_client) -celtadigital.com##+js(nostif, show) -droidmirror.com##+js(nano-sib, counter) -slidesgo.com##.ssm_adunit_container:upward([id^="list_ads"]) -apkmaven.*##+js(no-xhr-if, googlesyndication) -apkmaven.*##+js(aeld, DOMContentLoaded, adsBlocked) -apkmaven.*##+js(set, adBlockDetected, falseFunc) -apkmaven.*###wpsafe-generate, #wpsafe-link:style(display: block !important;) -apkmaven.*##div[id^="wpsafe-wait"] -apkmaven.*###countdown -apkmaven.*###download_link:style(display: block !important;) -photopea.com##div[style]:has(> a[href*="photopea.com"][href*="ads"]) -||photopea.com^$doc,replace=// - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/cloud-ui.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/cloud-ui.html deleted file mode 100644 index 366cf72..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/cloud-ui.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - -
-
- - - - -
-
cog
-
-   -
-
-
-
- - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/code-viewer.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/code-viewer.html deleted file mode 100644 index 4b699fe..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/code-viewer.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - -Code viewer - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/1p-filters.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/1p-filters.css deleted file mode 100644 index 6e44948..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/1p-filters.css +++ /dev/null @@ -1,33 +0,0 @@ -html { - height: 100vh; - height: 100svh; - overflow: hidden; - width: 100vw; - } -body { - display: flex; - flex-direction: column; - height: 100%; - justify-content: stretch; - overflow: hidden; - overflow-y: auto; - width: 100%; - } -.body { - flex-shrink: 0; - } -/* https://github.com/uBlockOrigin/uBlock-issues/issues/3058 */ -:root.mobile body { - min-height: unset; - } -html:not(.mobile) [data-i18n="1pTrustWarning"] { - font-weight: bold; - } -.codeMirrorContainer { - flex-grow: 1; - } -#userFilters { - min-height: 8em; - text-align: left; - word-wrap: normal; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/3p-filters.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/3p-filters.css deleted file mode 100644 index f5bed6b..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/3p-filters.css +++ /dev/null @@ -1,237 +0,0 @@ -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } - } -body { - margin-bottom: 6rem; - } -#actions { - background-color: var(--surface-1); - position: sticky; - top: 0; - z-index: 10; - } -#buttonUpdate.active { - pointer-events: none; - } -#buttonUpdate.active .fa-icon svg, -body.working #buttonUpdate:not(.disabled) .fa-icon svg { - animation: spin 1s linear infinite; - transform-origin: 50%; - } - -body.updating #actions, -body.working #actions { - cursor: progress; - } -body.updating #actions #buttonUpdate, -body.working #actions button { - pointer-events: none; - } - -.listExpander { - font-size: 18px; - padding: 0; - } -.listExpander:first-child { - justify-content: flex-start; - min-width: 20px; - } -.listExpander:not(:first-child) { - color: var(--checkbox-checked-ink); - fill: var(--checkbox-checked-ink); - } -.listExpander svg { - transform: rotate(90deg); - transform-origin: 50%; - } - -#lists .fa-icon:hover { - transform: scale(1.25); - } - -#lists .rootstats.expanded .listExpander svg { - transform: rotate(180deg); - } - -#lists .searchfield { - margin-block-start: calc(var(--font-size) * 0.75); - margin-inline-start: var(--checkbox-size); - } -#lists.searchMode > .listEntries .listEntries, -#lists.searchMode > .listEntries .listEntry.searchMatch { - display: flex !important; - } -#lists.searchMode > .listEntries .listEntry { - display: none; - } -#lists.searchMode > .listEntries .listExpander { - visibility: hidden; - } - -#listsOfBlockedHostsPrompt { - cursor: pointer; - } - -#lists .listEntries { - display: flex; - flex-direction: column; - margin-inline-start: var(--checkbox-size); - } -#lists > .listEntries { - margin-inline-start: 0; - } -#lists .listEntry { - align-items: flex-start; - flex-direction: column; - margin-bottom: 0; - margin-inline-start: 0; - white-space: nowrap; - } -#lists .listEntry[data-key="user"] { - margin-top: 0; - } -#lists .listEntry > .detailbar { - column-gap: calc(var(--default-gap-xxsmall) + 2px); - display: inline-flex; - } -#lists .listEntry[data-key="user"] > .detailbar { - display: none; - } -#lists .listEntry[data-role="node"].expanded > .detailbar .listExpander svg { - transform: rotate(180deg); - } -#lists .listEntry[data-parent="root"]:not(.expanded) > .listEntries > .listEntry:not(.checked):not(.isDefault):not(.stickied) { - display: none; - } -#lists .listEntry:not([data-parent="root"]):not(.expanded) > .listEntries > .listEntry { - display: none; - } -#lists .nodestats { - align-self: flex-end; - color: var(--info0-ink); - fill: var(--info0-ink); - cursor: default; - font-size: var(--font-size-smaller); -} -#lists .iconbar { - column-gap: var(--default-gap-xxsmall); - color: var(--info0-ink); - fill: var(--info0-ink); - display: inline-flex; - flex-direction: row; - font-size: 120%; - } -#lists .iconbar a { - color: var(--info0-ink); - fill: var(--info0-ink); - } -#lists .iconbar .fa-icon { - display: none; - } -#lists .iconbar .content { - display: inline-flex; - } -#lists .iconbar a.towiki { - display: inline-flex; - } -#lists .listEntry > .detailbar .iconbar a.support { - display: inline-flex; - } -#lists .listEntry > .detailbar .iconbar a.support[href="#"] { - display: none; - } -#lists .iconbar .remove, -#lists .iconbar .unsecure, -#lists .iconbar .failed { - color: var(--info3-ink); - fill: var(--info3-ink); - cursor: pointer; - } -#lists .listEntry.external > .detailbar .iconbar .remove { - display: inline-flex; - } -#lists .listEntry > .detailbar .iconbar a.mustread { - color: var(--info1-ink); - fill: var(--info1-ink); - display: inline-flex; - } -#lists .listEntry > .detailbar .iconbar a.mustread[href="#"] { - display: none; - } -#lists .listEntry .leafstats { - align-items: flex-end; - color: var(--info0-ink); - fill: var(--info0-ink); - display: none; - font-size: var(--font-size-xsmall); - margin-inline-start: calc(var(--checkbox-size) + var(--checkbox-margin-end)); -} -#lists .listEntry > .detailbar .leafstats { - margin-inline-start: 0; - } -#lists .listEntry.checked > .leafstats, -#lists .listEntry.checked > .detailbar .leafstats { - display: inline-flex; -} -#lists .iconbar .status { - cursor: default; - display: none; -} -#lists .listEntry.checked.unsecure > .detailbar .iconbar .unsecure { - display: inline-flex; - } -#lists .listEntry.failed > .detailbar .iconbar .failed { - display: inline-flex; - } -#lists .iconbar .cache { - cursor: pointer; - } -#lists .listEntry.checked.cached:not(.obsolete) > .detailbar .iconbar .cache { - display: inline-flex; - } -#lists .listEntry.cached.recent:not(.obsolete) > .detailbar .iconbar .cache { - color: var(--dashboard-happy-green); - fill: var(--dashboard-happy-green); - } -#lists .iconbar .obsolete { - color: var(--info2-ink); - fill: var(--info2-ink); - } -body:not(.updating,.working) #lists .listEntry.checked.obsolete > .detailbar .iconbar .obsolete { - display: inline-flex; - } -#lists .iconbar .updating { - transform-origin: 50%; - } -body.updating #lists .listEntry.checked.obsolete > .detailbar .iconbar .updating, -body.working #lists .listEntry.checked.obsolete:not(.cached) > .detailbar .iconbar .updating { - animation: spin 1s steps(8) infinite; - display: inline-flex; - } - -#lists .listEntry.toRemove .checkbox { - visibility: hidden; - } -#lists .listEntry.toRemove .listname { - text-decoration: line-through; - } - -#lists .listEntry[data-role="import"].expanded .listExpander svg { - transform: rotate(180deg); - } -#lists .listEntry[data-role="import"].expanded textarea { - visibility: visible; - } -#lists .listEntry[data-role="import"] textarea { - border: 1px solid #ccc; - box-sizing: border-box; - display: block; - font-size: smaller; - height: 6em; - margin: 0; - resize: vertical; - visibility: hidden; - white-space: pre; - width: 100%; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/about.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/about.css deleted file mode 100644 index 8c3afcd..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/about.css +++ /dev/null @@ -1,3 +0,0 @@ -body { - margin-bottom: 6rem; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/advanced-settings.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/advanced-settings.css deleted file mode 100644 index 10225dd..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/advanced-settings.css +++ /dev/null @@ -1,27 +0,0 @@ -html { - height: 100vh; - height: 100svh; - overflow: hidden; - width: 100vw; - } -body { - display: flex; - flex-direction: column; - height: 100%; - justify-content: stretch; - overflow: hidden; - width: 100%; - } -.body { - flex-shrink: 0; - } -.codeMirrorContainer { - flex-grow: 1; - } -#advancedSettings { - border: var(--default-gap-xxsmall) solid var(--surface-2); - text-align: left; - } -.CodeMirror-wrap pre { - word-break: break-all; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/asset-viewer.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/asset-viewer.css deleted file mode 100644 index d2df68a..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/asset-viewer.css +++ /dev/null @@ -1,80 +0,0 @@ -/** - uBlock Origin - a browser extension to block requests. - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -body { - border: 0; - display: flex; - flex-direction: column; - height: 100vh; - height: 100svh; - margin: 0; - overflow: hidden; - padding: 0; - width: 100vw; - } -#subscribe { - display: flex; - flex-shrink: 0; - justify-content: space-between; - max-height: 6em; - padding-inline-end: 0.5em; - } -#subscribe.hide { - display: none; - } -.logo { - background-color: #fffa; - flex-shrink: 0; - width: 2em; - } -#subscribePrompt { - display: inline-flex; - flex-direction: column; - padding: 0.5em; - } -#subscribePrompt > span { - font-weight: bold; - } -#subscribePrompt > a { - font-size: 14px; - word-break: break-all; - } -#subscribe > button { - align-self: center; - } -#subscribe > .fa-icon { - color: var(--accent-ink-1); - fill: var(--accent-ink-1); - font-size: 20px; - } -body.loading #subscribe > button, -body:not(.loading) #subscribe > .fa-icon { - display: none; - } -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } - } -body.loading #subscribe > .fa-icon > svg { - animation: spin 1s steps(8) infinite; - } -#content { - flex-grow: 1; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/click2load.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/click2load.css deleted file mode 100644 index b6d3924..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/click2load.css +++ /dev/null @@ -1,53 +0,0 @@ -/** - uBlock Origin - a browser extension to block requests. - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -body { - align-items: center; - border: 1px solid var(--ubo-red); - box-sizing: border-box; - display: flex; - flex-direction: column; - height: 100vh; - padding: 0 2px; - position: relative; - width: 100vw; - } - -.logo { - left: 0; - padding: 2px 1px; - position: absolute; - top: 0; - } - -#frameURL { - font-family: monospace; - font-size: 90%; - overflow-y: auto; - word-break: break-all; - } -#frameURL > a { - font-size: 1rem; - } - -#clickToLoad { - cursor: default; - margin-bottom: 1em; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/cloud-ui.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/cloud-ui.css deleted file mode 100644 index 1891a1d..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/cloud-ui.css +++ /dev/null @@ -1,104 +0,0 @@ -#cloudWidget { - background-color: var(--surface-2); - margin: 0.5em 0; - min-width: max-content; - position: relative; - } -#cloudWidget.hide { - display: none; - } -#cloudWidget div { - display: flex; - } -#cloudToolbar { - align-items: flex-start; - flex-wrap: nowrap; - justify-content: space-between; - } -#cloudToolbar > div:first-of-type { - margin: 0.5em; - } -#cloudToolbar button { - padding: 0 0.25em; - position: relative; - } -#cloudToolbar button .fa-icon { - font-size: 180%; - } -#cloudToolbar button[disabled] { - visibility: hidden; - } -#cloudToolbar button.error { - color: var(--info3-ink); - } -#cloudPullAndMerge { - margin-left: 0.25em; - } -#cloudPullAndMerge > span:nth-of-type(2) { - font-size: 90%; - position: absolute; - right: 0; - top: 0; - } -#cloudInfo { - flex-shrink: 0; - font-size: 90%; - margin: 0 1em; - overflow: hidden; - padding: 0; - white-space: pre-line; - } -#cloudCapacity { - background-color: var(--surface-3); - height: 4px; - } -#cloudCapacity > div { - background-color: var(--cloud-total-used-surface); - } -#cloudCapacity > div > div { - background-color: var(--cloud-used-surface); - } -#cloudError { - color: var(--info3-ink); - flex-grow: 1; - flex-shrink: 2; - font-size: small; - margin: 0 0.5em 0.5em 0.5em; - } -#cloudError:empty { - display: none; - } -#cloudCog { - color: var(--ink-3); - fill: var(--ink-3); - cursor: pointer; - font-size: 110%; - justify-content: flex-end; - padding: 0.4em; - } -#cloudCog:hover { - color: inherit; - fill: inherit; - } -#cloudWidget #cloudOptions { - align-items: center; - background-color: var(--surface-1); - bottom: 2px; - display: none; - font-size: small; - padding: 0.5em; - position: absolute; - right: 2px; - text-align: center; - top: 2px; - z-index: 10; - } -#cloudWidget #cloudOptions label { - display: inline-flex; - flex-direction: column; - align-items: flex-start; - } -#cloudWidget #cloudOptions.show { - display: flex; - white-space: nowrap; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/code-viewer.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/code-viewer.css deleted file mode 100644 index 40b5114..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/code-viewer.css +++ /dev/null @@ -1,68 +0,0 @@ -body { - border: 0; - display: flex; - flex-direction: column; - height: 100vh; - height: 100svh; - margin: 0; - overflow: hidden; - padding: 0; - width: 100vw; - } -#header { - background-color: var(--cm-gutter-surface); - border-bottom: 1px solid var(--surface-1); - padding: var(--default-gap-xsmall); - position: relative; - z-index: 1000000; - } -#header input[type="url"] { - box-sizing: border-box; - font-size: var(--font-size-smaller); - width: 100%; - } -#header:focus-within #pastURLs { - display: flex; - } -#currentURL { - display: flex; - gap: 0.5rem; - } -#currentURL > .fa-icon { - padding: 0 0.5rem; - } -#currentURL > .fa-icon:hover { - background-color: var(--surface-3); - } -#pastURLs { - background-color: var(--surface-0); - border: 1px solid var(--border-1); - display: none; - flex-direction: column; - font-size: var(--font-size-smaller); - position: absolute; - } -#pastURLs > span { - cursor: pointer; - overflow: hidden; - padding: 2px 4px; - text-overflow: ellipsis; - white-space: nowrap; - width: 75vw; - } -#pastURLs > span.selected { - font-weight: bold; - } -#pastURLs > span:hover { - background-color: var(--surface-1); - } -#content { - flex-grow: 1; - } - -.cm-href { - cursor: pointer; - } -.cm-href:hover { - text-decoration: underline; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/codemirror.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/codemirror.css deleted file mode 100644 index 9036acc..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/codemirror.css +++ /dev/null @@ -1,354 +0,0 @@ -.codeMirrorContainer { - line-height: 1.25; - overflow: hidden; - position: relative; - } -.codeMirrorContainer.cm-maximized { - bottom: 0; - left: 0; - position: absolute; - right: 0; - top: 0; - } -.CodeMirror { - background-color: var(--surface-0); - box-sizing: border-box; - color: var(--ink-1); - flex-grow: 1; - font-size: var(--monospace-size); - height: 100%; - width: 100%; - } -.CodeMirror-cursor { - border-color: var(--cm-cursor); - } -.CodeMirror-selected { - background-color: var(--cm-selection-surface); - } -.CodeMirror-focused .CodeMirror-selected { - background-color: var(--cm-selection-focused-surface); - } -.CodeMirror-foldmarker { - color: var(--cm-foldmarker-ink); - cursor: pointer; - font-family: sans-serif; - font-weight: bold; - } -.CodeMirror-foldgutter-folded::after { - content: '\25B6'; - } -.CodeMirror-foldgutter-open::after { - content: '\25BC'; - } -.CodeMirror-gutters { - background-color: var(--cm-gutter-surface); - border-color: var(--cm-gutter-border); - } -.CodeMirror-line::selection, -.CodeMirror-line > span::selection, -.CodeMirror-line > span > span::selection { - background-color: var(--cm-selection-focused-surface); - } -.CodeMirror-linenumber { - color: var(--cm-gutter-ink); - } -.CodeMirror-lines { - padding-bottom: 6rem; - } -.CodeMirror-matchingbracket { - color: unset; - } -.CodeMirror-matchingbracket { - background-color: var(--cm-matchingbracket) !important; - color: inherit !important; - font-weight: bold; - } - -.CodeMirror-search-match { - background: none; - background-color: var(--cm-search-match-surface); - border: 0; - opacity: 1; - } - -/* For when panels are used */ -.codeMirrorContainer > div:not([class^="CodeMirror"]) { - display: flex; - flex-direction: column; - height: 100%; - } - -.codeMirrorContainer.codeMirrorBreakAll .CodeMirror-wrap pre { - word-break: break-all; - } - -.cm-theme-override .cm-s-default .cm-comment { - color: var(--sf-comment-ink); - } -.cm-theme-override .cm-s-default .cm-def { - color: var(--sf-def-ink); - } -.cm-theme-override .cm-s-default .cm-directive { - color: var(--sf-directive-ink); - font-weight: bold; - } -.cm-theme-override .cm-s-default .cm-error { - color: inherit; - } -.cm-theme-override .cm-s-default .cm-error, -.CodeMirror-linebackground.error { - background-color: var(--sf-error-surface); - text-decoration: var(--sf-error-ink) dashed underline; - } -.cm-theme-override .cm-s-default .cm-link { - text-decoration: none; - } -.cm-theme-override .cm-s-default .cm-link:hover { - color: var(--link-ink); - } -.cm-theme-override .cm-s-default .cm-keyword { - color: var(--sf-keyword-ink); - } -.cm-theme-override .cm-s-default .cm-negative { - color: var(--cm-negative); - } -.cm-theme-override .cm-s-default .cm-positive { - color: var(--cm-positive); - } -.cm-theme-override .cm-s-default .cm-notice { - text-decoration-color: var(--sf-notice-ink); - text-decoration-style: solid; - text-decoration-line: underline; - } -.cm-theme-override .cm-s-default .cm-unicode { - text-decoration-color: var(--sf-unicode-ink); - text-decoration-style: dashed; - text-decoration-line: underline; - } -.cm-theme-override .cm-s-default .cm-tag { - color: var(--sf-tag-ink); - } -.cm-theme-override .cm-s-default .cm-value { - color: var(--sf-value-ink); - } -.cm-theme-override .cm-s-default .cm-variable { - color: var(--sf-variable-ink); - } -.cm-theme-override .cm-s-default .cm-warning { - background-color: var(--sf-warning-surface); - text-decoration: underline var(--sf-warning-ink); - } -.cm-theme-override .cm-s-default .cm-readonly { - color: var(--sf-readonly-ink); - } - -/* Rules */ -.cm-s-default .cm-allowrule { - color: var(--df-allow-ink); - font-weight: bold; - } -.cm-s-default .cm-blockrule { - color: var(--df-block-ink); - font-weight: bold; - } -.cm-s-default .cm-nooprule { - color: var(--df-noop-ink); - font-weight: bold; - } -.cm-s-default .cm-sortkey { - color: var(--sf-keyword-ink); - } - -.cm-search-widget { - background-color: var(--cm-gutter-surface); - border-bottom: 1px solid var(--cm-gutter-border); - cursor: default; - direction: ltr; - display: flex; - flex-shrink: 0; - flex-wrap: wrap; - justify-content: space-between; - line-height: 1.5; - padding: var(--default-gap-xsmall); - row-gap: var(--default-gap-xsmall); - user-select: none; - -moz-user-select: none; - -webkit-user-select: none; - z-index: 1000; - } -.cm-search-widget > * { - flex-grow: 1; - } -.cm-search-widget > :last-child { - text-align: end; - } - -.cm-search-widget .cm-maximize { - fill: none; - flex-grow: 0; - font-size: 130%; - height: 1em; - stroke-width: 3px; - stroke: var(--ink-0); - width: 1em; - } -.cm-search-widget .cm-maximize * { - pointer-events: none; - } -.codeMirrorContainer[data-maximizable="false"] .cm-search-widget .cm-maximize { - display: none; - } -.codeMirrorContainer .cm-search-widget .cm-maximize svg > path:nth-child(2), -.codeMirrorContainer.cm-maximized .cm-search-widget .cm-maximize svg > path:nth-child(1) { - display: none; - } -.codeMirrorContainer.cm-maximized .cm-search-widget .cm-maximize svg > path:nth-child(2) { - display: initial; - } -html:not(.mobile) .cm-search-widget .cm-maximize:hover { - transform: scale(1.2); - } - -.cm-search-widget-input { - display: inline-flex; - flex-grow: 1; - flex-wrap: nowrap; - } -.cm-search-widget .fa-icon { - font-size: 140%; - } -html:not(.mobile) .cm-search-widget .fa-icon:not(.fa-icon-ro):hover { - transform: scale(1.2); - } -.cm-search-widget-input input { - flex-grow: 1; - max-width: min(16em, 40svw); - } -.cm-search-widget-count { - align-items: center; - display: inline-flex; - flex-grow: 0; - font-size: var(--font-size-smaller); - visibility: hidden; - } -.cm-search-widget[data-query] .cm-search-widget-count { - visibility: visible; - } -.cm-search-widget[data-query] .cm-search-widget-count:empty { - visibility: hidden; - } -.cm-search-widget .sourceURL[href=""] { - display: none; - } -:root.mobile .cm-search-widget .sourceURL[href=""] { - display: none; - } - -.cm-linter-widget { - align-items: center; - display: none; - flex-grow: 1; - } -.cm-linter-widget:not([data-lint="0"]) { - display: inline-flex; - } -.cm-linter-widget .cm-linter-widget-count { - color: var(--accent-surface-1); - fill: var(--accent-surface-1); - font-size: var(--font-size-smaller); - } - -.cm-searching.cm-overlay { - background-color: var(--cm-searching-surface) !important; - border: 0; - color: var(--cm-searching-ink) !important; - } - -.CodeMirror-merge { - border-color: var(--cm-gutter-border); - } -.CodeMirror-merge-copy, -.CodeMirror-merge-copy-reverse { - color: var(--cm-merge-copy-ink); - } -.CodeMirror-merge-l-chunk { - background-color: var(--cm-merge-chunk-surface); - } -.CodeMirror-merge-l-chunk-start, -.CodeMirror-merge-l-chunk-end { - border-color: var(--cm-merge-chunk-border); - } -.CodeMirror-merge-l-deleted { - background-image: none; - } -.CodeMirror-merge-l-inserted { - background-image: none; - } -/* This probably needs to be added to CodeMirror repo */ -.CodeMirror-merge-gap { - background-color: var(--cm-gutter-surface); - border-color: var(--cm-gutter-border); - vertical-align: top; - } -.CodeMirror-merge-scrolllock { - color: var(--cm-merge-copy-ink); - } -.CodeMirror-merge-spacer { - background-color: var(--cm-merge-chunk-surface); - } - -.CodeMirror-hints { - z-index: 10000; - } - -/* Must appear after other background color declarations to be sure it - * overrides them - * */ -.CodeMirror-activeline-background { - background-color: var(--cm-active-line); - } - -.CodeMirror-lintmarker { - height: calc(var(--font-size) - 2px); - margin-top: 1px; - position: relative; - } -.CodeMirror-lintmarker > * { - position: absolute; - } -.CodeMirror-lintmarker[data-error="y"] { - background-color: var(--sf-error-ink); - } -.CodeMirror-lintmarker .msg { - background-color: var(--surface-0); - border: 1px solid var(--sf-error-ink); - color: var(--ink-1); - display: none; - filter: drop-shadow(2px 2px 4px #0008); - left: 100%; - padding: var(--default-gap-xsmall); - top: -2px; - white-space: pre; - } -.CodeMirror-lintmarker svg { - height: 70%; - left: 15%; - top: 15%; - width: 70%; - } -.CodeMirror-lintmarker[data-error="y"] svg { - display: none; - } -.CodeMirror-lintmarker[data-fold="start"] { - fill: var(--cm-foldmarker-ink); - } -.CodeMirror-lintmarker[data-fold="start"].folded svg { - transform: rotate(-90deg); - } -.CodeMirror-lintmarker[data-fold="end"] { - fill: var(--border-2); - } -.CodeMirror-lintmarker[data-error="y"]:hover > span, -.CodeMirror-lintmarker[data-error="y"] > span:hover { - display: initial; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/common.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/common.css deleted file mode 100644 index fae4bb5..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/common.css +++ /dev/null @@ -1,381 +0,0 @@ -@charset "UTF-8"; -/* https://protocol.mozilla.org/assets/docs/css/protocol.css */ -@font-face { - font-family: Inter; - font-style: normal; - font-weight: normal; - src: url('fonts/Inter/Inter-Regular.woff2') format('woff2'); -} -@font-face { - font-family: Inter; - font-style: normal; - font-weight: 600; - src: url('fonts/Inter/Inter-SemiBold.woff2') format('woff2'); -} -@font-face { - font-family: Metropolis; - font-style: normal; - font-weight: normal; - src: url('fonts/Metropolis/Metropolis-Regular.woff2') format('woff2'); -} -@font-face { - font-family: Metropolis; - font-style: normal; - font-weight: 600; - src: url('fonts/Metropolis/Metropolis-SemiBold.woff2') format('woff2'); -} - -/** - Common uBO spacing. - Ref: https://github.com/uBlockOrigin/uBlock-issues/issues/1005 -*/ -:root { - --default-gap-xxlarge: 40px; - --default-gap-xlarge: 32px; - --default-gap-large: 24px; - --default-gap: 16px; - --default-gap-small: 12px; - --default-gap-xsmall: 8px; - --default-gap-xxsmall: 4px; - } - -/* Common uBO styles */ -body { - background-color: var(--surface-1); - border: 0; - box-sizing: border-box; - color: var(--ink-1); - fill: var(--ink-1); - font-family: var(--font-family); - font-size: var(--font-size); - line-height: 1.5; - margin: 0; - padding: 0; - } -a:not(.fa-icon) { - color: var(--link-ink); - fill: var(--link-ink); - } -a:not(.fa-icon):hover { - color: var(--link-hover-ink); - fill: var(--link-hover-ink); - } -code, .code { - background-color: var(--surface-2); - font-family: monospace; - font-size: var(--monospace-size); - padding: 2px 4px; - } -hr { - border: 0; - border-top: 1px solid var(--surface-2); - margin: 1em 0; - } -textarea { - font-size: 90%; - } -button { - align-items: center; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; - border: 0; - border-radius: var(--button-border-radius); - background-color: var(--button-surface); - color: var(--button-ink); - display: inline-flex; - fill: var(--button-ink); - font-size: max(calc(var(--font-size) * 0.875), 14px); - justify-content: center; - min-height: 36px; - padding: 0 var(--font-size); - position: relative; - vertical-align: middle; - } -button.vflex { - height: 100%; - min-height: unset; - padding-bottom: 0; - padding-top: 0; - } -button > .hover { - background-color: var(--elevation-up-surface); - border-radius: var(--button-border-radius); - height: 100%; - left: 0; - opacity: 0; - pointer-events: none; - position: absolute; - top: 0; - width: 100%; - z-index: 100; - } -button:not(.disabled):not([disabled]):hover > .hover { - opacity: var(--elevation-up1-opacity); - } -button.notext:not(.disabled):not([disabled]):hover > .hover { - opacity: var(--elevation-up2-opacity); - } -button.active { - } -button.disabled, -button[disabled] { - background-color: var(--button-disabled-surface); - color: var(--button-ink); - fill: var(--button-ink); - filter: var(--button-disabled-filter); - pointer-events: none; - } -button.preferred:not(.disabled):not([disabled]) { - background-color: var(--button-preferred-surface); - color: var(--button-preferred-ink); - fill: var(--button-preferred-ink); - } -button.preferred:not(.disabled):not([disabled]):hover > .hover { - background-color: var(--elevation-down-surface); - opacity: var(--elevation-down1-opacity); - } -button.iconified.notext { - background-color: transparent; - } -button.iconified > .fa-icon { - font-size: 120%; - padding-left: 0; - padding-right: 0; - } -button.iconified > .fa-icon + [data-i18n] { - padding-right: 0; - padding-left: 0.4em; - } -body[dir="rtl"] button.iconified > .fa-icon + [data-i18n] { - padding-right: 0.4em; - padding-left: 0; - } -label { - align-items: center; - display: inline-flex; - position: relative; - } -section.notice { - background-color: var(--notice-surface); - box-shadow: var(--notice-surface-shadow); - color: var(--notice-ink); - } -:root:not(.classic) section.notice a { - color: var(--surface-2); - } - -/** - Checkbox design borrowed from: - - https://material.io/components/selection-controls - Motivation: - - To comply with design suggestions to make uBO comply with - Firefox Preview design guidelines. - - To have a single checkbox design across all platforms. -*/ -.checkbox { - box-sizing: border-box; - display: inline-flex; - flex-shrink: 0; - height: var(--checkbox-size); - margin: 0; - margin-inline-end: var(--checkbox-margin-end); - -webkit-margin-end: var(--checkbox-margin-end); - position: relative; - width: var(--checkbox-size); - } -label:hover .checkbox:not([disabled]) { - background-color: var(--surface-2); - } -.checkbox > input[type="checkbox"] { - box-sizing: border-box; - height: 100%; - margin: 0; - min-width: var(--checkbox-size); - opacity: 0; - position: absolute; - width: 100%; - } -.checkbox > input[type="checkbox"] + svg { - background-color: transparent; - border: 2px solid var(--checkbox-ink); - border-radius: 2px; - box-sizing: border-box; - fill: none; - height: 100%; - pointer-events: none; - position: absolute; - stroke: none; - stroke-width: 3.12px; - width: 100%; - } -.checkbox > input[type="checkbox"]:checked + svg { - background-color: var(--checkbox-checked-ink); - border-color: var(--checkbox-checked-ink); - stroke: var(--surface-1); - } -.checkbox[disabled], -.checkbox[disabled] ~ span { - filter: var(--checkbox-disabled-filter); - } -.checkbox.partial > input[type="checkbox"]:checked + svg { - background-color: var(--surface-1); - border-color: var(--checkbox-checked-ink); - stroke: var(--checkbox-checked-ink); - } - -.radio { - --margin-end: calc(var(--font-size) * 0.75); - box-sizing: border-box; - display: inline-flex; - flex-shrink: 0; - height: calc(var(--checkbox-size) + 2px); - margin: 0; - margin-inline-end: var(--margin-end); - -webkit-margin-end: var(--margin-end); - position: relative; - width: calc(var(--checkbox-size) + 2px); - } -.radio > input[type="radio"] { - box-sizing: border-box; - height: 100%; - margin: 0; - min-width: var(--checkbox-size); - opacity: 0; - position: absolute; - width: 100%; - } -.radio > input[type="radio"] + svg { - background-color: transparent; - box-sizing: border-box; - height: 100%; - pointer-events: none; - position: absolute; - width: 100%; - } -.radio > input[type="radio"] + svg > path { - fill: var(--checkbox-ink); - } -.radio > input[type="radio"] + svg > circle { - fill: transparent; - } -label:hover .radio > input[type="radio"]:not(:checked) + svg > circle { - fill: var(--surface-3); - } -.radio > input[type="radio"]:checked + svg > path, -.radio > input[type="radio"]:checked + svg > circle { - fill: var(--checkbox-checked-ink); - } - -select { - padding: 2px; - } - -.searchfield { - align-items: center; - column-gap: var(--default-gap-xxsmall); - display: inline-flex; - position: relative; - } -.searchfield .fa-icon { - color: var(--ink-4); - fill: var(--ink-4); - font-size: 1em !important; - left: 2px; - position: absolute; - transform: none; - } -.searchfield input:not(:placeholder-shown) ~ .fa-icon { - display: none; - } - -.hidden { - display: none; - height: 0; - visibility: hidden; - width: 0; - } -.subtil { - color: var(--subtil-ink); - cursor: default; - opacity: 66%; - } -.fieldset { - margin: var(--font-size); - } -.fieldset-header { - color: var(--fieldset-header-ink); - font-size: 14px; - font-weight: 600; - letter-spacing: 0.5px; - } -.ul { - margin: 1em 0; - } -.li { - align-items: center; - display: flex; - margin: calc(var(--font-size) * 0.75) 0; - } -.liul { - margin: 0.5em 0; - margin-inline-start: 2em; - -webkit-margin-start: 2em; - } -@media (max-width: 640px) { - button.iconified > .fa-icon { - font-size: 1.2rem; - padding: 0; - } - button.iconified:not(.dontshrink) > [data-i18n] { - display: none; - } - } - -.countryFlag { - height: var(--font-size); - position: relative; - top: calc(var(--font-size) / 7); - max-width: calc(var(--font-size) * 1.5); - } - -.logo { - align-items: center; - display: inline-flex; - padding: 0 0.5em; - width: 1.25em; - } -.logo > img { - width: 100%; - } - -.wikilink[href=""] { - display: none; - } -.wikilink.fa-icon { - color: var(--info0-ink); - fill: var(--info0-ink); - padding: var(--default-gap-xxsmall) var(--default-gap-xsmall); - } -.wikilink.fa-icon:hover { - transform: scale(1.2); - } -.wikilink.fa-icon > svg { - height: 1.25rem; - width: 1.25rem; - } - -/* high dpi devices */ -:root.hidpi button { - font-family: Metropolis, sans-serif; - font-weight: 600; - letter-spacing: 0.5px; - } -:root.hidpi .fieldset-header { - font-family: Metropolis, sans-serif; - } - -/* touch-screen devices */ -:root.mobile label { - flex-grow: 1 - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/dashboard-common.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/dashboard-common.css deleted file mode 100644 index 261aa9a..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/dashboard-common.css +++ /dev/null @@ -1,55 +0,0 @@ -body > div.body { - padding: 0 0.5em; - } -h2, h3 { - margin: 1em 0; - } -h2 { - font-size: 18px; - } -h3 { - font-size: 16px; - } -a { - text-decoration: none; - } -.fa-icon.info { - color: var(--info0-ink); - fill: var(--info0-ink); - font-size: 115%; - } -.fa-icon.info:hover { - transform: scale(1.25); - } -.fa-icon.info.important { - color: var(--info2-ink); - fill: var(--info2-ink); - } -.info.very-important { - color: var(--info3-ink); - fill: var(--info3-ink); - } -input[type="number"] { - width: 5em; - } -@media (max-height: 640px), (max-height: 800px) and (max-width: 480px) { - .body > p, - .body > ul { - margin: 0.5em 0; - } - .vverbose { - display: none !important; - } - } -/** - On mobile device, the on-screen keyboard may take up - so much space that it overlaps the content being edited. - The rule below makes it possible to scroll the edited - content within view. -*/ -:root.mobile { - overflow: auto; - } -:root.mobile body { - min-height: 600px; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/dashboard.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/dashboard.css deleted file mode 100644 index 20b35e5..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/dashboard.css +++ /dev/null @@ -1,118 +0,0 @@ -html, body { - display: flex; - flex-direction: column; - height: 100vh; - height: 100svh; - justify-content: stretch; - overflow: hidden; - position: relative; - width: 100vw; - } -body.notReady { - display: none; - } -#dashboard-nav { - align-items: center; - border: 0; - border-bottom: 1px solid var(--border-1); - display: flex; - flex-shrink: 0; - justify-content: space-between; - overflow-x: hidden; - padding: 0; - position: sticky; - top: 0; - width: 100%; - z-index: 10; - } -#dashboard-nav > span { - display: flex; - flex-wrap: nowrap; - overflow-x: auto; - } -.tabButton { - background-color: transparent; - border: 0; - border-bottom: 3px solid transparent; - border-radius: 0; - color: var(--dashboard-tab-ink); - fill: var(--dashboard-tab-ink); - font-family: var(--font-family); - font-size: var(--font-size); - padding: 0.7em 1.4em calc(0.7em - 3px); - text-decoration: none; - white-space: nowrap; - } -.tabButton:focus { - outline: 0; - } -/* - * TODO: support keyboard-driven navigation - * -.tabButton:not(:active):focus { - background-color: var(--dashboard-tab-focus-surface); - } - */ -.tabButton.selected { - background-color: var(--dashboard-tab-active-surface); - border-bottom: 3px solid var(--dashboard-tab-active-ink); - color: var(--dashboard-tab-active-ink); - fill: var(--dashboard-tab-active-ink); - } -iframe { - background-color: transparent; - border: 0; - flex-grow: 1; - margin: 0; - padding: 0; - width: 100%; - } -#unsavedWarning { - display: none; - left: 0; - position: absolute; - width: 100%; - z-index: 20; - } -#unsavedWarning.on { - display: initial; - } -#unsavedWarning > div:first-of-type { - padding: 0.5em; - } -#unsavedWarning > div:last-of-type { - height: 100vh; - height: 100svh; - position: absolute; - width: 100vw; - } - -body .tabButton[data-pane="no-dashboard.html"] { - display: none; - } -body.noDashboard #dashboard-nav { - display: none; - } - -/* high dpi devices */ -:root.hidpi .tabButton { - font-family: Metropolis, sans-serif; - font-weight: 600; - letter-spacing: 0.5px; - } - -/* hover-able devices */ -:root.desktop .tabButton { - cursor: default; - } -:root.desktop .tabButton:not(.selected) { - cursor: pointer; - } -:root.desktop .tabButton:not(.selected):hover { - background-color: var(--dashboard-tab-hover-surface); - border-bottom-color: var(--dashboard-tab-hover-border); - } - -:root.mobile #dashboard-nav .logo { - display: none; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/devtools.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/devtools.css deleted file mode 100644 index bb4c40d..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/devtools.css +++ /dev/null @@ -1,23 +0,0 @@ -html { - height: 100vh; - height: 100svh; - overflow: hidden; - width: 100vw; - } -body { - display: flex; - flex-direction: column; - height: 100%; - justify-content: stretch; - overflow: hidden; - width: 100%; - } -.body { - flex-shrink: 0; - } -.codeMirrorContainer { - flex-grow: 1; - } -#console { - text-align: left; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/document-blocked.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/document-blocked.css deleted file mode 100644 index 62d4921..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/document-blocked.css +++ /dev/null @@ -1,146 +0,0 @@ -/** - uBlock Origin - a browser extension to block requests. - Copyright (C) 2018-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -body { - display: flex; - padding: var(--default-gap-xxlarge) var(--default-gap-small); - justify-content: center; - } -:root.mobile body { - padding: var(--default-gap-small); - } - -#rootContainer { - width: min(100vw, 640px); - } -#rootContainer > * { - margin: 0 0 var(--default-gap-xxlarge) 0; - } - -a { - text-decoration: none; - } -.code { - font-size: 13px; - word-break: break-all; - } -#warningSign { - color: var(--accent-surface-1); - fill: var(--accent-surface-1); - font-size: 96px; - width: 100%; - } -#theURL { - color: var(--ink-2); - padding: 0; - } -#theURL > * { - margin: 0; - } -#theURL > p { - position: relative; - z-index: 10; - } -#theURL #toggleParse { - background-color: transparent; - top: 100%; - box-sizing: border-box; - color: var(--ink-3); - fill: var(--ink-3); - cursor: pointer; - font-size: 1.2rem; - padding: var(--default-gap-xxsmall); - position: absolute; - transform: translate(0, -50%); - } -#theURL:not(.collapsed) #toggleParse > span:first-of-type { - display: none; - } -#theURL.collapsed #toggleParse > span:last-of-type { - display: none; - } -body[dir="ltr"] #toggleParse { - right: 0; - } -body[dir="rtl"] #toggleParse { - left: 0; - } -#theURL > p:hover #toggleParse { - transform: translate(0, -50%) scale(1.15); - } -#parsed { - background-color: var(--surface-1); - border: 4px solid var(--surface-2); - font-size: small; - overflow-x: auto; - padding: var(--default-gap-xxsmall); - text-align: initial; - text-overflow: ellipsis; - } -#theURL.collapsed > #parsed { - display: none; - } -#parsed ul, #parsed li { - list-style-type: none; - } -#parsed li { - white-space: nowrap; - } -#parsed span { - display: inline-block; - } -#parsed span:first-of-type { - font-weight: bold; - } - -#whyex a { - white-space: nowrap; -} -#whyex ul { - display: flex; - flex-direction: column; - margin: 0; - padding-inline-start: var(--default-gap-xsmall); - } - -#actionContainer { - display: flex; - justify-content: space-between; - } -:root.mobile #actionContainer { - justify-content: center; - display: flex; - flex-direction: column; - } -#actionContainer > button { - margin-bottom: 2rem - } - -.filterList { - display: flex; -} -.filterList .filterListSupport[href=""] { - display: none; - } - -/* Small-screen devices */ -:root.mobile button { - width: 100%; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/dom-inspector.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/dom-inspector.css deleted file mode 100644 index 2f2ca14..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/dom-inspector.css +++ /dev/null @@ -1,41 +0,0 @@ -html#ublock0-inspector, -#ublock0-inspector body { - background: transparent; - box-sizing: border-box; - height: 100vh; - height: 100svh; - margin: 0; - overflow: hidden; - width: 100vw; -} -#ublock0-inspector :focus { - outline: none; -} -#ublock0-inspector svg { - box-sizing: border-box; - height: 100%; - left: 0; - pointer-events: none; - position: fixed; - top: 0; - width: 100%; -} -#ublock0-inspector svg > path { - stroke-width: 1px; - } -#ublock0-inspector svg > path:nth-of-type(1) { - fill: rgba(255,0,0,0.2); - stroke: #F00; -} -#ublock0-inspector svg > path:nth-of-type(2) { - fill: rgba(0,255,0,0.2); - stroke: #0F0; -} -#ublock0-inspector svg > path:nth-of-type(3) { - fill: rgba(255,0,0,0.2); - stroke: #F00; -} -#ublock0-inspector svg > path:nth-of-type(4) { - fill: rgba(0,0,255,0.1); - stroke: #00F; -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/dyna-rules.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/dyna-rules.css deleted file mode 100644 index 9a6bd8d..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/dyna-rules.css +++ /dev/null @@ -1,80 +0,0 @@ -html { - height: 100vh; - height: 100svh; - overflow: hidden; - width: 100vw; - } -body { - display: flex; - flex-direction: column; - height: 100%; - justify-content: stretch; - overflow: hidden; - width: 100%; - } -.body { - flex-shrink: 0; - } -#diff { - border: 0; - white-space: nowrap; -} -#diff .tools > * { - margin-bottom: 1em; - } -#diff .ruleActions { - border: 0; - box-sizing: border-box; - display: inline-block; - padding: 0; - text-align: center; - vertical-align: top; - width: 50%; - white-space: nowrap; - } -#diff .ruleActions .fieldset-header { - margin: 0.5em 0; - } - -#ruleFilter { - align-items: center; - background-color: var(--surface-2); - direction: ltr; - display: flex; - justify-content: center; - padding: 0.5em 0; - } -#ruleFilter #diffCollapse { - padding: 0 0.5em; - font-size: 150%; - } -#ruleFilter #diffCollapse.active { - transform: scale(1, -1); - } - -.codeMirrorContainer { - flex-grow: 1; - } -.codeMirrorContainer .CodeMirror { - background-color: var(--surface-1); - } -.CodeMirror-merge, .CodeMirror-merge-pane, .CodeMirror-merge .CodeMirror { - box-sizing: border-box; - height: 100%; - } -body.editing .CodeMirror-merge-copy, -body.editing .CodeMirror-merge-copy-reverse { - display: none; - } -body.editing .CodeMirror-merge-editor .CodeMirror { - background-color: var(--surface-0); - } -body[dir="rtl"] .CodeMirror-merge-pane-rightmost { - right: unset; - left: 0; -} - -/* mobile devices */ -:root.mobile #diff .tools { - overflow: auto; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/epicker-ui.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/epicker-ui.css deleted file mode 100644 index 1923142..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/epicker-ui.css +++ /dev/null @@ -1,280 +0,0 @@ -html#ublock0-epicker, -#ublock0-epicker body { - background: transparent; - cursor: not-allowed; - height: 100vh; - height: 100svh; - margin: 0; - overflow: hidden; - width: 100vw; -} -#ublock0-epicker :focus { - outline: none; -} -#ublock0-epicker aside { - background-color: var(--surface-1); - border: 1px solid var(--border-2); - box-sizing: border-box; - cursor: default; - display: none; - flex-direction: column; - max-width: min(32rem, 100vw - 4px); - min-width: min(24rem, 100vw - 4px); - overflow-y: auto; - position: fixed; - width: min(32rem, 100vw - 4px); - z-index: 100; -} -#ublock0-epicker:not(.zap) aside { - display: flex; -} -#ublock0-epicker:not(.paused) aside, -#ublock0-epicker.minimized aside { - min-width: min(16rem, 100vw - 4px); - overflow: hidden; - width: min(16rem, 100vw - 4px); -} -#ublock0-epicker:not(.paused) aside > *:not(#windowbar), -#ublock0-epicker.minimized aside > *:not(#windowbar) { - display: none; -} -#ublock0-epicker aside > *:not(:first-child) { - padding: 0 2px; -} - -#ublock0-epicker #toolbar { - display: flex; - justify-content: space-between; -} -#ublock0-epicker #toolbar button { - min-width: 5em; - } -#ublock0-epicker ul { - margin: 0.25em 0 0 0; -} -#ublock0-epicker.preview #preview { - background-color: var(--button-preferred-surface); - color: var(--button-preferred-ink); -} -#ublock0-epicker section { - border: 0; - box-sizing: border-box; - display: inline-block; - width: 100%; -} -#ublock0-epicker section > div:first-child { - border: 1px solid var(--surface-3); - margin: 0; - position: relative; -} -#ublock0-epicker section.invalidFilter > div:first-child { - border-color: var(--error-surface); -} -#ublock0-epicker section .codeMirrorContainer { - border: none; - box-sizing: border-box; - height: 10em; - max-height: min(10em, 10vh); - min-height: 1em; - padding: 2px; - width: 100%; - } -.CodeMirror-lines, -.CodeMirror pre { - padding: 0; - } - -#ublock0-epicker section .resultsetWidgets { - display: flex; - font-size: var(--font-size-smaller); - } -#resultsetModifiers { - align-items: flex-end; - display: inline-flex; - flex-grow: 1; - justify-content: space-evenly; - } -#resultsetModifiers.hide > * { - visibility: hidden; - } -.resultsetModifier { - border: 0; - pointer-events: auto; - position: relative; - width: 40%; - } -.resultsetModifier > span { - align-items: flex-end; - display: flex; - height: 100%; - pointer-events: none; - width: 100%; - } -.resultsetModifier > span > span { - margin: 2px 0; - } -.resultsetModifier > span > span:nth-of-type(1) { - background-color: var(--checkbox-checked-ink); - border-inline-end: 1px solid var(--surface-3); - display: inline-block; - flex-shrink: 0; - height: 6px; - } -.resultsetModifier > span > span:nth-of-type(2) { - background-color: var(--checkbox-checked-ink); - clip-path: polygon( - calc(50% - 2px) 0%, - 0% calc(100% - 6px), - 0% 100%, - 100% 100%, - 100% calc(100% - 6px), - calc(50% + 2px) 0% - ); - display: inline-block; - flex-shrink: 0; - height: 20px; - width: 20px; - } -.resultsetModifier > span > span:nth-of-type(3) { - background-color: var(--surface-3); - border-inline-start: 1px solid var(--surface-3); - display: inline-block; - flex-grow: 1; - height: 6px; - } -.resultsetModifier input { - border: 0; - height: 100%; - left: 0; - margin: 0; - opacity: 0; - padding: 0; - position: absolute; - top: 0; - width: 100%; - } -#resultsetCount { - align-items: center; - background-color: var(--surface-3); - color: var(--ink-1); - display: inline-flex; - justify-content: center; - min-width: 2.2em; - } -#ublock0-epicker section.invalidFilter #resultsetCount { - background-color: var(--error-surface); - color: var(--ink-100); -} -#ublock0-epicker section > div:first-child + div { - direction: ltr; - margin: 2px 0; - text-align: right; -} -#ublock0-epicker ul { - padding: 0; - list-style-type: none; - text-align: left; - overflow: hidden; -} -#ublock0-epicker #candidateFilters { - max-height: min(18em, 18vh); - overflow-y: auto; -} -#ublock0-epicker .changeFilter > li > span:nth-of-type(1) { - font-weight: bold; -} -#ublock0-epicker .changeFilter > li > span:nth-of-type(2) { - font-size: smaller; - color: gray; -} -#ublock0-epicker #candidateFilters [data-i18n] { - font-size: 90%; -} -#ublock0-epicker #candidateFilters .changeFilter { - list-style-type: none; - margin: 0 0 0 1em; - overflow: hidden; - text-align: left; -} -#ublock0-epicker #candidateFilters .changeFilter li { - border: 1px solid transparent; - cursor: pointer; - direction: ltr; - font: 12px monospace; - white-space: nowrap; -} -#ublock0-epicker #candidateFilters .changeFilter li.active { - border: 1px dotted rgb(var(--blue-50)); - } -#ublock0-epicker #candidateFilters .changeFilter li:hover { - background-color: var(--surface-2); -} - -#ublock0-epicker svg#sea { - cursor: crosshair; - box-sizing: border-box; - height: 100%; - left: 0; - position: absolute; - top: 0; - width: 100%; -} -#ublock0-epicker.paused svg#sea { - cursor: not-allowed; -} -#ublock0-epicker svg#sea > path:first-child { - fill: rgba(0,0,0,0.5); - fill-rule: evenodd; -} -#ublock0-epicker svg#sea > path + path { - stroke: #F00; - stroke-width: 0.5px; - fill: rgba(255,63,63,0.20); -} -#ublock0-epicker.zap svg#sea > path + path { - stroke: #FF0; - stroke-width: 0.5px; - fill: rgba(255,255,63,0.20); -} -#ublock0-epicker.preview svg#sea > path { - fill: rgba(0,0,0,0.10); -} -#ublock0-epicker.preview svg#sea > path + path { - stroke: none; -} - - -#ublock0-epicker #windowbar { - display: flex; -} -#ublock0-epicker #windowbar svg { - fill: none; - pointer-events: none; - stroke: var(--ink-1); - stroke-width: 3px; -} -#ublock0-epicker #windowbar #move { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAFElEQVQI12NgwAfKy8v/M5ANYLoBshgEyQo6H9UAAAAASUVORK5CYII='); - cursor: grab; - flex-grow: 1; - opacity: 0.8; -} -#ublock0-epicker aside.moving #windowbar #move { - cursor: grabbing; -} -#windowbar #quit, -#windowbar #minimize { - height: 2em; - width: 2em; -} -#windowbar #quit:hover, -#windowbar #minimize:hover { - background-color: var(--surface-2) -} -#ublock0-epicker.minimized #windowbar #minimize svg > path, -#windowbar #minimize svg > rect { - display: none; -} -#ublock0-epicker.minimized #windowbar #minimize svg > rect { - display: initial; -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fa-icons.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fa-icons.css deleted file mode 100644 index 639811f..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fa-icons.css +++ /dev/null @@ -1,154 +0,0 @@ -.fa-icon { - align-items: center; - background-color: transparent; - border: 0; - display: inline-flex; - justify-content: center; - margin: 0; - padding: 0 0.1em; - position: relative; - user-select: none; - vertical-align: text-bottom; - -webkit-user-select: none; - } -.fa-icon > * { - pointer-events: none; - } -/* -.fa-icon.disabled, -.fa-icon[disabled] { - color: var(--button-disabled-ink); - fill: var(--button-disabled-ink); - filter: var(--button-disabled-filter); - stroke: var(--button-disabled-ink); - pointer-events: none; - } -*/ -.fa-icon > .fa-icon-badge, -.fa-icon.disabled > .fa-icon-badge { - visibility: hidden; - } -.fa-icon.fa-icon-badged > .fa-icon-badge { - bottom: -20%; - display: inline-block; - font: 60% sans-serif; - left: calc(100% - 0.2em); - position: absolute; - visibility: visible; - } -.fa-icon.fa-icon-hflipped > svg { - transform: scale(-1, 1); - transform-origin: 50%; - } -.fa-icon.fa-icon-vflipped > svg { - transform: scale(1, -1); - transform-origin: 50%; - } -.fa-icon.fa-icon-rotright > svg { - transform: rotate(90deg); - transform-origin: 50%; - } -.fa-icon.fa-icon-rotleft > svg { - transform: rotate(-90deg); - transform-origin: 50%; - } - -.fa-icon > svg { - height: 1em; - overflow: visible; - width: 1em; - } - -.fa-icon > .fa-icon_bar-chart { - width: calc(1em * 2048 / 1792); - } -.fa-icon > .fa-icon_cloud-download, -.fa-icon > .fa-icon_cloud-upload, -.fa-icon > .fa-icon_cogs, -.fa-icon > .fa-icon_eraser, -.fa-icon > .fa-icon_film { - width: calc(1em * 1920 / 1792); - } -.fa-icon > .fa-icon_code { - width: calc(1em * 1830 / 1792); - } -.fa-icon > .fa-icon_exclamation-triangle { - width: calc(1em * 1794 / 1792); - } -.fa-icon > .fa-icon_clipboard, -.fa-icon > .fa-icon_comment-alt, -.fa-icon > .fa-icon_external-link, -.fa-icon > .fa-icon_eye-dropper, -.fa-icon > .fa-icon_eye-open, -.fa-icon > .fa-icon_eye-slash, -.fa-icon > .fa-icon_files-o, -.fa-icon > .fa-icon_list-alt { - width: calc(1em * 1792 / 1792); - } -.fa-icon > .fa-icon_sun, -.fa-icon > .fa-icon_sun-o { - width: calc(1em * 1708 / 1792); - } -.fa-icon > .fa-icon_book, -.fa-icon > .fa-icon_download-alt, -.fa-icon > .fa-icon_font, -.fa-icon > .fa-icon_search, -.fa-icon > .fa-icon_spinner, -.fa-icon > .fa-icon_unlink, -.fa-icon > .fa-icon_upload-alt, -.fa-icon > .fa-icon_volume-up, -.fa-icon > .fa-icon_zoom-in, -.fa-icon > .fa-icon_zoom-out { - width: calc(1em * 1664 / 1792); - } -.fa-icon > .fa-icon_terminal { - width: calc(1em * 1651 / 1792); - } -.fa-icon > .fa-icon_magic { - width: calc(1em * 1637 / 1792); - } -.fa-icon > .fa-icon_home { - width: calc(1em * 1612 / 1792); - } -.fa-icon > .fa-icon_check { - width: calc(1em * 1550 / 1792); - } -.fa-icon > .fa-icon_cog, -.fa-icon > .fa-icon_clock-o, -.fa-icon > .fa-icon_floppy-o, -.fa-icon > .fa-icon_info-circle, -.fa-icon > .fa-icon_pause-circle-o, -.fa-icon > .fa-icon_play-circle-o, -.fa-icon > .fa-icon_power-off, -.fa-icon > .fa-icon_question-circle, -.fa-icon > .fa-icon_refresh, -.fa-icon > .fa-icon_save, -.fa-icon > .fa-icon_sliders, -.fa-icon > .fa-icon_undo { - width: calc(1em * 1536 / 1792); - } -.fa-icon > .fa-icon_arrow-right { - width: calc(1em * 1472 / 1792); - } -.fa-icon > .fa-icon_filter { - width: calc(1em * 1410 / 1792); - } -.fa-icon > .fa-icon_plus, -.fa-icon > .fa-icon_trash-o { - width: calc(1em * 1408 / 1792); - } -.fa-icon > .fa-icon_times { - width: calc(1em * 1188 / 1792); - } -.fa-icon > .fa-icon_angle-up, -.fa-icon > .fa-icon_double-angle-up, -.fa-icon > .fa-icon_lock, -.fa-icon > .fa-icon_unlock-alt { - width: calc(1em * 1152 / 1792); - } -.fa-icon > .fa-icon_double-angle-left { - width: calc(1em * 966 / 1792); - } -.fa-icon > .fa-icon_bolt { - width: calc(1em * 896 / 1792); - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Inter/Inter-Regular.woff2 b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Inter/Inter-Regular.woff2 deleted file mode 100644 index d5ffd2a..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Inter/Inter-Regular.woff2 and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Inter/Inter-SemiBold.woff2 b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Inter/Inter-SemiBold.woff2 deleted file mode 100644 index df746af..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Inter/Inter-SemiBold.woff2 and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Inter/LICENSE.txt b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Inter/LICENSE.txt deleted file mode 100644 index d688280..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Inter/LICENSE.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright (c) 2016-2020 The Inter Project Authors -https://github.com/rsms/inter - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION AND CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Metropolis/Metropolis-Regular.woff2 b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Metropolis/Metropolis-Regular.woff2 deleted file mode 100644 index f50bf34..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Metropolis/Metropolis-Regular.woff2 and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Metropolis/Metropolis-SemiBold.woff2 b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Metropolis/Metropolis-SemiBold.woff2 deleted file mode 100644 index fad6dfd..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Metropolis/Metropolis-SemiBold.woff2 and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Metropolis/README.md b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Metropolis/README.md deleted file mode 100644 index ce01464..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Metropolis/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Metropolis - -A modern, geometric typeface. Influenced by other popular geometric, minimalist sans-serif typefaces of the new millennium. Designed for optimal readability at small point sizes while beautiful at large point sizes. - -![Metropolis](./Specimens/Metro-1.png) - ---- - -![Metropolis](./Specimens/Metro-2.png) - -### Where am I? - -See [Documentation](./Documentation/Documentation.md). - -### The Unlicense - -Contributions welcome. - -### Contact - -Reachable via chris.m.simpson [at] icloud.com or tweet @ChrisMSimpson. - -### Support - -There is none. Oh, you meant support me? I dare you to click the sponsor button above. diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Metropolis/UNLICENSE b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Metropolis/UNLICENSE deleted file mode 100644 index 68a49da..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/fonts/Metropolis/UNLICENSE +++ /dev/null @@ -1,24 +0,0 @@ -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. - -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -For more information, please refer to diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/logger-ui-inspector.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/logger-ui-inspector.css deleted file mode 100644 index 3d5dc77..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/logger-ui-inspector.css +++ /dev/null @@ -1,123 +0,0 @@ -#domInspector { - display: none; - overflow: hidden; - } -#inspectors.dom #domInspector { - display: flex; - } -#domInspector .permatoolbar .highlightMode.invert { - transform: rotate(180deg); - } -#domInspector button.vExpandToggler > .fa-icon { - transform: scaleY(-1) - } -#domInspector button.vCompactToggler > .fa-icon { - transform: scaleY(1) - } -#domInspector .vscrollable { - overflow-x: auto; - } -#domInspector > ul:first-of-type { - padding-left: 0.5em; - } -#domInspector ul { - background-color: var(--surface-1); - margin: 0; - padding-left: 1em; - } -#domInspector li { - list-style-type: none; - white-space: nowrap; - } -#domInspector li.isCosmeticHide, -#domInspector li.isCosmeticHide ul, -#domInspector li.isCosmeticHide li { - background-color: var(--surface-2); - } -#domInspector li > * { - display: inline-block; - line-height: 1.2; - margin-right: 1em; - vertical-align: middle; - } -#domInspector li > span { - color: #aaa; - } -#domInspector li > span:first-child { - color: var(--ink-1); - cursor: default; - font-size: 1rem; - margin-right: 0; - opacity: 0.5; - padding: 0 4px 0 1px; - visibility: hidden; - } -#domInspector li > span:first-child:hover { - opacity: 1; - } -#domInspector li > *:last-child { - margin-right: 0; - } -#domInspector li > span:first-child:before { - content: '\a0'; - } -#domInspector li.branch > span:first-child:before { - content: '\25b8'; - visibility: visible; - } -#domInspector li.branch.show > span:first-child:before { - content: '\25be'; - } -#domInspector li.branch.hasCosmeticHide > span:first-child:before { - color: red; - } -#domInspector li > code { - cursor: pointer; - font-family: monospace; - overflow: hidden; - text-overflow: ellipsis; - } -#domInspector li > code.off { - text-decoration: line-through; - } -#domInspector li > code.filter { - color: var(--cm-negative); - } - -#domInspector li > ul { - display: block; - } -#domInspector li:not(.hasCosmeticHide):not(.isCosmeticHide):not(.show) > ul { - display: none; - } - -#domInspector li:not(.hasCosmeticHide):not(.isCosmeticHide):not(.show) { - display: none; - } -#domInspector #domTree > li { - display: block; - } -#domInspector:not(.vExpanded) ul { - display: block; - } -#domInspector li > ul > li:not(.hasCosmeticHide):not(.isCosmeticHide) { - display: none; - } -#domInspector li.show > ul > li:not(.hasCosmeticHide):not(.isCosmeticHide) { - display: block; - } -#domInspector li:not(.hasCosmeticHide):not(.isCosmeticHide) { - display: block; - } -#domInspector.hCompact li > code:first-of-type { - max-width: 12em; - } - -#cosmeticFilteringDialog .dialog { - text-align: center; - } -#cosmeticFilteringDialog .dialog textarea { - height: 40vh; - white-space: pre; - word-wrap: normal; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/logger-ui.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/logger-ui.css deleted file mode 100644 index 38e434f..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/logger-ui.css +++ /dev/null @@ -1,1019 +0,0 @@ -body { - display: flex; - flex-direction: column; - height: 100vh; - height: 100svh; - overflow-y: hidden; - width: 100vw; - } -textarea { - box-sizing: border-box; - direction: ltr; - min-height: 6rem; - resize: vertical; - width: 100%; - } -.permatoolbar { - background-color: var(--surface-1); - border: 0; - box-sizing: border-box; - display: flex; - flex-shrink: 0; - font-size: 120%; - justify-content: space-between; - margin: 0; - padding: 0.25em; - } -.permatoolbar > div { - display: flex; - } -.permatoolbar button.iconified { - padding-left: var(--default-gap-xsmall); - padding-right: var(--default-gap-xsmall); - } -.permatoolbar button.active { - fill: rgb(var(--primary-50)); - } -.permatoolbar button > .fa-icon { - font-size: 180%; - } -#pageSelector { - min-width: 10em; - padding: 0.25em 0; - width: 50vw; - } -#showpopup { - display: inline-flex; - align-items: center; - } -#showpopup img { - filter: grayscale(100%); - height: auto; - width: 1em; - } -#info { - fill: #ccc; - } -#info:hover { - fill: #000; - } - -/* - https://github.com/gorhill/uBlock/issues/3293 - => https://devhints.io/css-system-font-stack -*/ -#inspectors { - display: flex; - flex-direction: column; - flex-grow: 1; - flex-wrap: nowrap; - font-family: "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; - overflow: hidden; - position: relative; - } -.inspector { - border-top: 1px solid var(--border-4); - display: flex; - flex-direction: column; - height: 100%; - } -.inspector .permatoolbar { - border-bottom: 1px solid var(--border-1); - } -.vscrollable { - direction: ltr; - flex-grow: 1; - font-size: var(--font-size-smaller); - height: 1px; /* necessary for proper space allocation by flex boxes */ - overflow-x: hidden; - overflow-y: auto; -} - -#domInspector button.vExpandToggler > .fa-icon { - transform: scaleY(1) - } -.inspector:not(.vExpanded) button.vCompactToggler > .fa-icon { - transform: scaleY(-1) - } -.hCompact button.hCompactToggler > .fa-icon { - transform: scaleX(-1) - } - -#inspectors.dom #netInspector { - display: none; - } - -#netInspector #pause > .fa-icon[data-i18n-title="loggerUnpauseTip"] { - display: none; -} -#netInspector.paused #pause > .fa-icon[data-i18n-title="loggerPauseTip"] { - display: none; -} -#netInspector.paused #pause > .fa-icon[data-i18n-title="loggerUnpauseTip"] { - display: inline-flex; - fill: #5F9EA0; -} -#netInspector #filterExprGroup { - display: flex; - position: relative; - } -#netInspector #filterButton { - opacity: 0.25; - } -#netInspector.f #filterButton { - opacity: 1; - } -#netInspector #filterInput { - border: 1px solid gray; - display: inline-flex; - } -#netInspector #filterInput > input { - border: 0; - min-width: 16em; - } -#netInspector #filterExprButton { - transform: scaleY(-1); - } -#netInspector #filterExprButton:hover { - background-color: transparent; - } -#netInspector #filterExprButton.expanded { - transform: scaleY(1); - } -#netInspector #filterExprPicker { - background-color: var(--surface-0); - border: 1px solid gray; - display: none; - position: absolute; - flex-direction: column; - font-size: small; - top: 100%; - z-index: 100; - } -body[dir="ltr"] #netInspector #filterExprPicker { - right: 0; - } -body[dir="rtl"] #netInspector #filterExprPicker { - left: 0; - } - -#netInspector #filterExprGroup:hover #filterExprButton.expanded ~ #filterExprPicker { - display: flex; - } -#netInspector #filterExprPicker > div { - border: 1px dotted #ddd; - border-left: 0; - border-right: 0; - display: flex; - padding: 0.5em; - } -#netInspector #filterExprPicker > div:first-of-type { - border-top: 0; - } -#netInspector #filterExprPicker > div:last-of-type { - border-bottom: 0; - } -#netInspector #filterExprPicker div { - display: flex; - } -#netInspector #filterExprPicker span[data-filtex] { - align-items: center; - border: 1px solid transparent; - cursor: pointer; - display: inline-flex; - margin: 0 0.5em 0 0; - padding: 0.25em; - white-space: nowrap; - } -#netInspector #filterExprPicker span[data-filtex]:last-of-type { - margin: 0; - } -#netInspector #filterExprPicker span[data-filtex]:hover { - background-color: rgb(var(--primary-70) / 25%); - border: 1px solid rgb(var(--primary-70)); - } -#netInspector #filterExprPicker span.on[data-filtex], -#filterExprButton.active { - background-color: rgb(var(--primary-70) / 40%); - } -#netInspector #filterExprPicker span.on[data-filtex] { - border: 1px solid rgb(var(--primary-70)); - } - -#netInspector .vscrollable { - overflow: hidden; - } -#vwRenderer { - box-sizing: border-box; - height: 100%; - overflow: hidden; - position: relative; - width: 100%; - } -#vwRenderer #vwScroller { - height: 100%; - overflow-x: hidden; - overflow-y: auto; - position: absolute; - width: 100%; - } -#vwRenderer #vwScroller #vwVirtualContent { - overflow: hidden; - } -#vwRenderer #vwContent { - left: 0; - overflow: hidden; - position: absolute; - width: 100%; - } -#vwRenderer .logEntry { - background-color: var(--surface-1); - display: block; - left: 0; - overflow: hidden; - position: absolute; - width: 100%; - } -#vwRenderer .logEntry:empty { - display: none; - } -#vwRenderer .logEntry > div { - border-bottom: 1px dotted var(--border-1); - box-sizing: border-box; - display: flex; - height: 100%; - max-height: 200px; - white-space: nowrap; - } -#vwRenderer .logEntry > div[data-status="1"], -.netFilteringDialog > .panes > .details > div[data-status="1"] { - background-color: rgb(var(--popup-cell-block-surface-rgb) / 50%); - } -#vwRenderer .logEntry > div[data-status="1"][data-modifier], -.netFilteringDialog > .panes > .details > div[data-status="1"][data-modifier] { - background-color: var(--logger-modified-surface); - } -#vwRenderer .logEntry > div[data-status="3"] { - background-color: rgba(108, 108, 108, 0.1); - } -:root.colorBlind #vwRenderer .logEntry > div[data-status="3"] { - background-color: rgba(96, 96, 96, 0.1); - } -#vwRenderer .logEntry > div[data-status="2"], -.netFilteringDialog > .panes > .details > div[data-status="2"] { - background-color: rgb(var(--popup-cell-allow-surface-rgb) / 50%); - } -#vwRenderer .logEntry > div[data-tabid="-1"] { - text-shadow: 0 0.2em 0.4em #aaa; - } -#vwRenderer .logEntry > div.extendedRealm, -#vwRenderer .logEntry > div.redirect { - background-color: var(--logger-redirected-surface); - } -#vwRenderer .logEntry > div.extendedRealm.scriptlet { - background-color: var(--logger-scriptlet-surface); - } -:root.colorBlind #vwRenderer .logEntry > div.extendedRealm, -:root.colorBlind #vwRenderer .logEntry > div.redirect { - background-color: rgba(0, 19, 110, 0.1); - } -#vwRenderer .logEntry > div[data-aliasid] { - color: var(--popup-cell-cname-ink); - } -#vwRenderer .logEntry > div[data-type="tabLoad"] { - background-color: #666; - color: white; - } -#vwRenderer .logEntry > div[data-type="error"] { - color: var(--cm-negative); - } -#vwRenderer .logEntry > div[data-type="info"] { - color: var(--sf-def-ink); - } -#vwRenderer .logEntry > div.voided { - opacity: 0.5; - } -#vwRenderer .logEntry > div.voided:hover { - opacity: 0.7; - } - -#vwRenderer .logEntry > .fields > span { - border-left: 1px dotted var(--border-1); - box-sizing: border-box; - display: inline-block; - height: 100%; - overflow: hidden; - padding: 2px; - vertical-align: middle; - white-space: nowrap; - word-break: break-all; - } -#vwRenderer .logEntry > div:hover > span { - background-color: rgba(0,0,0,0.04); - } -body[dir="ltr"] #vwRenderer .logEntry > .fields > span:first-child { - border-left: 0; - } -body[dir="rtl"] #vwRenderer .logEntry > .fields > span:first-child { - border-right: 0; - } -#vwRenderer .logEntry > div > span:nth-of-type(1) { - } -#vwRenderer .logEntry > div > span:nth-of-type(2) { - } -#vwRenderer .logEntry > .fields > span:nth-of-type(2) { - text-overflow: ellipsis; - } -#vwRenderer .logEntry > .fields.messageRealm > span:nth-of-type(2) ~ span { - display: none; - } -.vExpanded #vwRenderer #vwContent .logEntry > .fields > span:nth-of-type(2) { - overflow-y: auto; - white-space: pre-line; - } -#vwRenderer .logEntry > .fields.messageRealm[data-type="tabLoad"] > span:nth-of-type(2) { - text-align: center; - } -#vwRenderer .logEntry > .fields.extendedRealm > span:nth-of-type(2) > span:first-of-type { - display: none; - } -#vwRenderer .logEntry > .fields.extendedRealm.isException > span:nth-of-type(2) > span:last-of-type { - text-decoration: line-through rgba(0,0,255,0.7); - } -#vwRenderer .logEntry > .fields > span:nth-of-type(3) { - font-family: monospace; - padding-left: 0.3em; - padding-right: 0.3em; - text-align: center; - } -#netInspector:not(.vExpanded) #vwRenderer .logEntry > .fields > span:nth-of-type(4) { - text-align: right; - } -#vwRenderer #vwContent .logEntry > .fields > span:nth-of-type(4) { - text-overflow: ellipsis; - } -.vExpanded #vwRenderer #vwContent .logEntry > .fields > span:nth-of-type(4) { - overflow-y: auto; - text-overflow: clip; - white-space: pre-line; - } -#vwRenderer .logEntry > .fields > span:nth-of-type(5) { - text-align: center; - } -#vwRenderer .logEntry > .fields > span:nth-of-type(3), -#vwRenderer .logEntry > .fields > span:nth-of-type(5), -#vwRenderer .logEntry > .fields > span:nth-of-type(7) { - white-space: nowrap !important; - } -#vwRenderer .logEntry > .fields > span:nth-of-type(8) { - position: relative; - } -#vwRenderer #vwContent .logEntry > .fields > span:nth-of-type(8) { - text-overflow: ellipsis; - } -.vExpanded #vwRenderer #vwContent .logEntry > .fields > span:nth-of-type(8) { - overflow-y: auto; - white-space: pre-line; - } -#vwRenderer .logEntry > .fields > span:nth-of-type(8) b { - font-weight: bold; - } -#vwRenderer .logEntry > div[data-status="1"] > span:nth-of-type(8) b, -.netFilteringDialog > .panes > .details > div[data-status="1"] b { - background-color: rgb(var(--popup-cell-block-surface-rgb) / 100%); - } -#vwRenderer .logEntry > div[data-status="1"][data-modifier] > span:nth-of-type(8) b, -.netFilteringDialog > .panes > .details > div[data-status="1"][data-modifier] b { - background-color: var(--logger-modified-em-surface); - } -#vwRenderer .logEntry > div[data-status="3"] > span:nth-of-type(8) b { - background-color: rgba(108, 108, 108, 0.2); - } -:root.colorBlind #vwRenderer .logEntry > div[data-status="3"] > span:nth-of-type(8) b { - background-color: rgba(96, 96, 96, 0.2); - } -#vwRenderer .logEntry > div[data-status="2"] > span:nth-of-type(8) b, -.netFilteringDialog > .panes > .details > div[data-status="2"] b { - background-color: rgb(var(--popup-cell-allow-surface-rgb) / 100%); - } -#vwRenderer .logEntry > .fields > span:nth-of-type(8) a { - align-items: center; - background-color: dimgray; - color: white; - display: none; - height: min(100%, 1.5em); - justify-content: center; - padding: 0.1em; - opacity: 0.4; - position: absolute; - right: 0; - text-decoration: none; - top: 0; - width: 1.5em; - } -#netInspector.vExpanded #vwRenderer .logEntry > .fields > span:nth-of-type(8) a { - bottom: 0px; - height: unset; - padding: 0.2em; - top: unset; - } -#vwRenderer .logEntry > .fields > span:nth-of-type(8) a::after { - content: '\2197'; - } -#vwRenderer .logEntry > .fields.networkRealm > span:nth-of-type(8):hover a { - display: inline-flex; - } -#vwRenderer .logEntry > .fields > span:nth-of-type(8) a:hover { - opacity: 1; - } - -@keyframes unrollRow { - to { - box-shadow: 0 2px 3px 0 #444; - height: auto; - max-height: 200px; - z-index: 1; - } -} -@keyframes unrollRowCell { - to { - height: auto; - overflow-y: auto; - white-space: pre-wrap; - } -} -#netInspector:not(.vExpanded) #vwRenderer .logEntry:hover { - animation-delay: 0.8s; - animation-fill-mode: forwards; - animation-name: unrollRow; - animation-timing-function: step-start; - } -#netInspector:not(.vExpanded) #vwRenderer .logEntry:hover > .fields > span { - animation-delay: 0.8s; - animation-fill-mode: forwards; - animation-name: unrollRowCell; - animation-timing-function: step-start; - } - -#vwRenderer #vwBottom { - background-color: #00F; - height: 0; - overflow: hidden; - width: 100%; - } -#vwRenderer #vwLineSizer { - left: 0; - pointer-events: none; - position: absolute; - top: 0; - visibility: hidden; - width: 100%; - } - -#inspectors .entryTools { - background-color: var(--surface-0); - flex-basis: 50%; - } -#inspectors .entryTools:empty { - display: none; - } - -.closeButton { - stroke: var(--ink-1); - stroke-width: 3px; - width: 1.6em; - height: 1.6em; - bottom: calc(100% + 2px); - } -body[dir="ltr"] .closeButton { - right: 0; - } -body[dir="rtl"] .closeButton { - left: 0; - } -.closeButton:hover { - background-color: var(--surface-2) !important; - } -.closeButton > * { - pointer-events: none; - } - -#inspectors #infoInspector { - flex-basis: 200%; - } -#inspectors:not(.console) #infoInspector { - display: none; - } -#inspectors #infoInspector .vscrollable { - font-family: monospace; - font-size: small; - } -#inspectors #infoInspector .vscrollable > div { - border-bottom: 1px dotted gray; - padding: 0.2em; - white-space: pre-wrap; - word-break: break-all; - } -#inspectors #infoInspector .vscrollable > div:first-of-type { - } -#inspectors #infoInspector .vscrollable > div[data-type="error"] { - color: var(--cm-negative); - } - -#popupContainer { - background-color: var(--surface-1); - border: 1px solid gray; - bottom: 0; - display: none; - max-height: min(800px, calc(100vh - 2rem)); - max-height: min(800px, calc(100svh - 2rem)); - min-width: 360px; - overflow: hidden; - position: fixed; - right: 0; - z-index: 200; - } -#inspectors.popupOn #popupContainer { - display: block; - } - -#modalOverlay { - align-items: center; - background-color: rgba(0, 0, 0, 0.5); - border: 0; - bottom: 0; - display: none; - justify-content: center; - left: 0; - margin: 0; - position: fixed; - right: 0; - top: 0; - z-index: 400; - } -#modalOverlay.on { - display: flex; - } -#modalOverlay > div { - position: relative; - } -#modalOverlay .closeButton { - background-color: var(--surface-1); - position: absolute; - } - -#modalOverlayContainer { - background-color: var(--surface-1); - border: 0; - box-sizing: border-box; - padding: 1em; - max-height: 90vh; - overflow-y: auto; - width: 90vw; - } - -.netFilteringDialog { - font-size: var(--font-size-smaller); - } -.netFilteringDialog a { - text-decoration: none; - } -.netFilteringDialog select { - max-width: 50vw; - outline: none; - text-overflow: ellipsis; -} -.netFilteringDialog > .preview { - align-items: center; - /* http://lea.verou.me/css3patterns/ */ - background-color: #aaa; - background-image: - linear-gradient( - 45deg, - #666 25%, - transparent 25%, - transparent 75%, - #666 75%, - #666 - ), - linear-gradient( - 45deg, - #666 25%, - transparent 25%, - transparent 75%, - #666 75%, - #666 - ); - background-position:0 0, 9px 9px; - background-size: 18px 18px; - display: flex; - justify-content: center; - margin-bottom: 1em; - padding: 0.5em; - text-align: center; - } -.netFilteringDialog > .preview > * { - max-width: 100%; - max-height: 20vh; - } -.netFilteringDialog > .preview > span { - background-color: var(--surface-3); - cursor: pointer; - padding: 1em; - } - -.netFilteringDialog > .headers { - align-items: center; - border-bottom: 1px solid var(--border-4); - display: flex; - justify-content: space-between; - line-height: 2; - } -.netFilteringDialog > .headers .header { - border: 1px solid var(--border-2); - border-bottom: 1px solid var(--border-4); - border-top-left-radius: 4px; - border-top-right-radius: 4px; - color: var(--border-2); - cursor: pointer; - display: inline-block; - margin-inline-end: 4px; - padding: 0 1em; - position: relative; - top: 1px; - } -.netFilteringDialog[data-pane="details"] > .headers [data-pane="details"], -.netFilteringDialog[data-pane="dynamic"] > .headers [data-pane="dynamic"], -.netFilteringDialog[data-pane="static"] > .headers [data-pane="static"] { - background-color: var(--surface-0); - border-color: var(--border-4); - border-bottom: 1px solid transparent; - color: var(--ink-1); - } -.netFilteringDialog > .headers > .tools { - bottom: 0; - display: flex; - height: 100%; - margin-inline-start: 2rem; - } -.netFilteringDialog > .headers > .tools > span { - color: var(--ink-3); - fill: var(--ink-3); - cursor: pointer; - font-size: 1.5em; - padding: 0 0.25em; - text-align: center; - } -.netFilteringDialog > .headers > .tools > span:hover { - color: var(--ink-1); - fill: var(--ink-1); - } -.netFilteringDialog.extendedRealm > .headers .dynamic, -.netFilteringDialog.extendedRealm > .panes > .dynamic { - display: none; - } -.netFilteringDialog.extendedRealm > .headers .static, -.netFilteringDialog.extendedRealm > .panes > .static { - display: none; - } -.netFilteringDialog > div.panes { - overflow: hidden; - overflow-y: auto; - padding-top: 1em; - } -.netFilteringDialog > div.panes > div { - display: none; - } -.netFilteringDialog[data-pane="details"] > .panes > [data-pane="details"], -.netFilteringDialog[data-pane="dynamic"] > .panes > [data-pane="dynamic"], -.netFilteringDialog[data-pane="static"] > .panes > [data-pane="static"] { - display: flex; - flex-direction: column; - padding: 0 var(--default-gap-xsmall) var(--default-gap-xsmall) var(--default-gap-xsmall); - } -.netFilteringDialog > .panes > .details > div { - align-items: stretch; - background-color: var(--surface-2); - border: 0; - border-bottom: 1px solid var(--surface-0); - display: flex; - } -.netFilteringDialog > .panes > .details > div > span { - padding: 0.5em; - } -.netFilteringDialog > .panes > .details > div > span:nth-of-type(1) { - border: 0; - flex-grow: 0; - flex-shrink: 0; - text-align: right; - width: 8em; - } -body[dir="ltr"] .netFilteringDialog > .panes > .details > div > span:nth-of-type(1) { - border-right: 1px solid var(--surface-0); - } -body[dir="rtl"] .netFilteringDialog > .panes > .details > div > span:nth-of-type(1) { - border-left: 1px solid var(--surface-0); - } -.netFilteringDialog > .panes > .details > div > span:nth-of-type(2) { - flex-grow: 1; - max-height: 10vh; - overflow: hidden auto; - white-space: pre-line - } -.netFilteringDialog > .panes > .details > div > span:nth-of-type(2):not(.prose) { - word-break: break-all; - } -.netFilteringDialog > .panes > .details > div > span:nth-of-type(2) .listEntry { - display: inline-flex; - } -.netFilteringDialog > .panes > .details > div > span:nth-of-type(2) .fa-icon { - font-size: 110%; - opacity: 0.5; - } -.netFilteringDialog > .panes > .details > div > span:nth-of-type(2) .fa-icon:hover { - opacity: 1; - } -.netFilteringDialog > .panes > .details .exceptor { - align-items: center; - border-left: 1px solid var(--surface-0); - cursor: pointer; - display: inline-flex; - font-family: monospace; - opacity: 0.8; - } -.netFilteringDialog > .panes > .details .exceptor:hover { - opacity: 1; - } -.netFilteringDialog > .panes > .details .exceptored .filter { - text-decoration: line-through; - } -.netFilteringDialog > .panes > .details .exceptored .exceptor { - background-color: rgb(var(--primary-50) / 50%); - } -.netFilteringDialog > .panes > .details .exceptor::before { - content: '@@'; - } -.netFilteringDialog.extendedRealm > .panes > .details .exceptor::before { - content: '#@#'; - } -.netFilteringDialog > div.panes > .dynamic > .toolbar { - padding-bottom: 1em; - } -.netFilteringDialog > div.panes > .dynamic .row { - display: flex; - min-height: 2.2em; - } -.netFilteringDialog > div.panes > .dynamic .row > span:nth-of-type(1) { - align-self: stretch; - border: 0; - display: inline-flex; - flex-grow: 0; - flex-shrink: 0; - text-align: center; - width: 4.5em; - } -body[dir="ltr"] .netFilteringDialog > div.panes > .dynamic .row > span:nth-of-type(1) { - border-right: 1px solid var(--surface-0); - } -body[dir="rtl"] .netFilteringDialog > div.panes > .dynamic .row > span:nth-of-type(1) { - border-left: 1px solid var(--surface-0); - } -.netFilteringDialog > div.panes > .dynamic .row > span:nth-of-type(2) { - align-self: center; - padding: 0 0.5em; - } -.netFilteringDialog > div.panes > .dynamic > .toolbar #saveRules { - background-color: #ffe; - border: 1px solid #ddc; - border-radius: 4px; - fill: #888; - cursor: pointer; - font-size: 2em; - visibility: hidden; - width: 100%; - } -body.dirty .netFilteringDialog > div.panes > .dynamic > .toolbar #saveRules { - visibility: visible; - } -.netFilteringDialog > div.panes > .dynamic > .toolbar #saveRules:hover { - fill: black; - } -.netFilteringDialog > div.panes > .dynamic > .toolbar .entry { - display: none; - } -.netFilteringDialog > div.panes > .dynamic .entry { - background-color: var(--surface-2); - border: 0; - border-bottom: 1px solid var(--surface-0); - } -.netFilteringDialog > div.panes > .dynamic .entry:hover { - background-color: var(--surface-3); - } -.netFilteringDialog > div.panes > .dynamic .entry > .action { - background-color: transparent; - border: 0; - cursor: pointer; - } -.netFilteringDialog > div.panes > .dynamic .entry > .action > span { - background-color: transparent; - border: 0; - display: inline-block; - height: 100%; - opacity: 0.2; - visibility: hidden; - width: 33.33%; - } -.netFilteringDialog > div.panes > .dynamic .entry > .action.allow { - background-color: rgba(0, 160, 0, 0.3); - } -:root.colorBlind .netFilteringDialog > div.panes > .dynamic .entry > .action.allow { - background-color: rgba(255, 194, 57, 0.4); - } -.netFilteringDialog > div.panes > .dynamic .entry > .action.noop { - background-color: rgba(108, 108, 108, 0.3); - } -:root.colorBlind .netFilteringDialog > div.panes > .dynamic .entry > .action.noop { - background-color: rgba(96, 96, 96, 0.4); - } -.netFilteringDialog > div.panes > .dynamic .entry > .action.block { - background-color: rgba(192, 0, 0, 0.3); - } -:root.colorBlind .netFilteringDialog > div.panes > .dynamic .entry > .action.block { - background-color: rgba(0, 19, 110, 0.4); - } -.netFilteringDialog > div.panes > .dynamic .entry > .action.own.allow { - background-color: rgba(0, 160, 0, 1); - } -:root.colorBlind .netFilteringDialog > div.panes > .dynamic .entry > .action.own.allow { - background-color: rgba(255, 194, 57, 1); - } -.netFilteringDialog > div.panes > .dynamic .entry > .action.own.noop, -:root.colorBlind .netFilteringDialog > div.panes > .dynamic .entry > .action.own.noop { - background-color: rgba(108, 108, 108, 1); - } -.netFilteringDialog > div.panes > .dynamic .entry > .action.own.block { - background-color: rgba(192, 0, 0, 1); - } -:root.colorBlind .netFilteringDialog > div.panes > .dynamic .entry > .action.own.block { - background-color: rgba(0, 19, 110, 1); - } -.netFilteringDialog > div.panes > .dynamic .entry > .action:not(.own):hover > span { - opacity: 0.2; - visibility: visible; - } -.netFilteringDialog > div.panes > .dynamic .entry > .action:not(.own):hover > span:hover { - opacity: 0.75; - } -.netFilteringDialog > div.panes > .dynamic .entry > .action > .allow { - background-color: rgb(0, 160, 0); - } -:root.colorBlind .netFilteringDialog > div.panes > .dynamic .entry > .action > .allow { - background-color: rgb(255, 194, 57); - } -.netFilteringDialog > div.panes > .dynamic .entry > .action > .noop { - background-color: rgb(108, 108, 108); - } -.netFilteringDialog > div.panes > .dynamic .entry > .action > .block { - background-color: rgb(192, 0, 0); - } -:root.colorBlind .netFilteringDialog > div.panes > .dynamic .entry > .action > .block { - background-color: rgb(0, 19, 110); - } -.netFilteringDialog > div.panes > .dynamic .entry > .url { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } -.netFilteringDialog > div.panes > div.static > div { - line-height: 2; - } -.netFilteringDialog > div.panes > div.static textarea { - height: 6em; - word-break: break-all; - } -.netFilteringDialog > div.panes > div.static > div:nth-of-type(2) { - text-align: center; - } - -#filterFinderDialog { - word-break: break-all; - } -#filterFinderDialog code { - background: #eee; - font-size: 85%; - padding: 3px; - unicode-bidi: plaintext; - white-space: pre-wrap; - } -#filterFinderDialog ul { - font-size: larger; - } -#filterFinderDialog .filterFinderListEntry { - align-items: flex-end; - display: flex; - } -#filterFinderDialog .filterFinderListEntry a { - text-decoration: none; - } -#filterFinderDialog .filterFinderListEntry a.fa-icon { - margin: 0 0.5em; - opacity: 0.6; - } -#filterFinderDialog .filterFinderListEntry a.fa-icon:hover { - opacity: 1; - } -#filterFinderDialog .filterFinderListEntry a.fa-icon[href=""] { - display: none; - } -#filterFinderDialog > *:first-child { - margin-top: 0; - } -#filterFinderDialog > *:last-child { - margin-bottom: 0; - } - -#loggerStatsDialog .sortedEntries { - display: flex; - flex-direction: column; - font-size: smaller; - } -#loggerStatsDialog .sortedEntries > div { - display: flex; - } -#loggerStatsDialog .sortedEntries > div > span:first-of-type { - flex-grow: 0; - flex-shrink: 0; - padding: 0 2em 0 0; - text-align: right; - width: 3em; - } -#loggerStatsDialog .sortedEntries > div > span:last-of-type { - flex-grow: 1; - flex-shrink: 1; - white-space: pre; - } - -#loggerExportDialog { - display: flex; - flex-direction: column; - } -#loggerExportDialog .options { - display: flex; - justify-content: space-between; - margin-bottom: 1em; - } -#loggerExportDialog .options > div { - display: inline-flex; - } -#loggerExportDialog .options span[data-i18n] { - border: 1px solid rgb(var(--primary-70)); - cursor: pointer; - font-size: 90%; - margin: 0; - padding: 0.5em; - white-space: nowrap; - } -#loggerExportDialog .options span[data-i18n]:hover { - background-color: rgb(var(--primary-70) / 40%); - } -#loggerExportDialog .options span.on[data-i18n], -#loggerExportDialog .options span.pushbutton:active { - background-color: rgb(var(--primary-70) / 40%); - } -#loggerExportDialog .output { - font-size: small; - height: 80vh; - padding: 0.5em; - white-space: pre-wrap; - } - -#loggerSettingsDialog { - display: flex; - flex-direction: column; - } -#loggerSettingsDialog > div { - padding-bottom: 1em; - } -#loggerSettingsDialog > div:last-of-type { - padding-bottom: 0; - } -#loggerSettingsDialog ul { - padding: 0; - } -body[dir="ltr"] #loggerSettingsDialog ul { - padding-left: 2em; - } -body[dir="rtl"] #loggerSettingsDialog ul { - padding-right: 2em; - } -#loggerSettingsDialog li { - list-style-type: none; - margin: 0.5em 0 0 0; - } -#loggerSettingsDialog input { - max-width: 6em; - } - -.hide { - display: none !important; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/popup-fenix.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/popup-fenix.css deleted file mode 100644 index b845562..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/popup-fenix.css +++ /dev/null @@ -1,779 +0,0 @@ - /* External CSS values override */ -.fa-icon.fa-icon-badged > .fa-icon-badge { - bottom: auto; - top: -20%; - } - -/* Internal CSS values */ -:root body { - overflow: hidden; - } -:root body, -:root.mobile body { - --font-size: 14px; - --popup-gap: var(--font-size); - --popup-gap-thin: calc(0.5 * var(--popup-gap)); - --popup-gap-extra-thin: calc(0.25 * var(--popup-gap)); - --popup-main-min-width: 18em; - --popup-firewall-min-width: 30em; - --popup-rule-cell-width: 5em; - font-size: var(--font-size); - line-height: 20px; - } -:root body.loading { - opacity: 0; - } -a { - color: var(--ink-1); - fill: var(--ink-1); - text-decoration: none; - } -:focus { - outline: 0; - } - -#panes { - align-items: stretch; - display: flex; - flex-direction: row-reverse; - padding: 0; - position: relative; - } -#main { - align-self: flex-start; - max-width: 340px; - min-width: var(--popup-main-min-width); - } -:root.portrait #main { - align-self: inherit; - } -hr { - border: 0; - border-top: 1px solid var(--hr-ink); - margin: 0; - padding: 0; - } - -#sticky { - background-color: var(--surface-1); - position: sticky; - top: 0; - z-index: 100; - } -#stickyTools { - align-items: stretch; - display: flex; - justify-content: space-between; - margin: var(--popup-gap-extra-thin) 0; - } -#switch { - color: var(--popup-power-ink); - cursor: pointer; - display: flex; - fill: var(--popup-power-ink); - flex-grow: 1; - font-size: 96px; - justify-content: center; - margin: var(--popup-gap) 0; - padding: 0; - stroke: none; - stroke-width: 64; - } -body.off #switch { - fill: var(--surface-1); - stroke: var(--checkbox-ink); - } -.rulesetTools { - background-color: transparent; - border: 0; - box-sizing: border-box; - display: flex; - flex-direction: column; - justify-content: space-between; - width: 25%; - } -.rulesetTools [id] { - background-color: var(--popup-ruleset-tool-surface); - border-radius: 4px; - cursor: pointer; - fill: var(--popup-ruleset-tool-ink); - flex-grow: 1; - font-size: 2.2em; - padding: 0; - visibility: hidden; - } -.rulesetTools [id]:not(:first-of-type) { - margin-block-start: 1px; - } -.rulesetTools [id] > svg { - fill: var(--ink-4); - } -body.needReload #refresh, -body.needSave #saveRules, -body.needSave #revertRules { - visibility: visible; - } -#hostname { - background-color: var(--popup-toolbar-surface); - margin: 0; - padding: var(--popup-gap-thin) 0; - text-align: center; - white-space: normal; - - } -#hostname > span { - word-break: break-all; - } -#hostname > span + span { - font-weight: 600; - } - -#basicStats { - column-gap: var(--popup-gap); - display: grid; - grid-template: auto / auto; - margin: var(--popup-gap) var(--popup-gap) var(--popup-gap-thin) var(--popup-gap); - } -#basicStats > span { - justify-self: center; - white-space: nowrap; - } -#basicStats > [data-i18n] { - font-size: 95%; - } -#basicStats > [data-i18n] + span { - font-size: 105%; - margin-bottom: var(--popup-gap-thin); - } -:root.portrait #basicStats { - grid-template: auto / auto auto; - margin-bottom: 0; - } -:root.portrait #basicStats > span { - font-size: inherit; - justify-self: stretch; - margin-bottom: var(--popup-gap); - white-space: unset; - } -:root.portrait #basicStats > [data-i18n] { - } -:root.portrait #basicStats > [data-i18n] + span { - text-align: end; - } - -.itemRibbon { - column-gap: var(--popup-gap); - display: grid; - grid-auto-columns: 1fr; - grid-auto-flow: column; - grid-template: auto / 1fr 1fr; - margin: var(--popup-gap); - } -.itemRibbon > span + span { - text-align: end; - } - -.toolRibbon { - align-items: start; - background-color: var(--popup-toolbar-surface); - display: grid; - grid-auto-columns: 1fr; - grid-auto-flow: column; - grid-template: auto / repeat(4, 1fr); - justify-items: center; - margin: 0; - white-space: normal; - } -.toolRibbon .tool { - cursor: pointer; - display: flex; - flex-direction: column; - font-size: 1.4em; - min-width: 32px; - padding: var(--popup-gap) - var(--popup-gap-thin); - unicode-bidi: embed; - visibility: hidden; - } -.toolRibbon .tool:hover { - color: var(--ink-1); - fill: var(--ink-1); - } -.toolRibbon .tool.enabled { - visibility: visible; - } -.toolRibbon .tool .caption { - font: 10px/12px sans-serif; - margin-top: 6px; - text-align: center; - } -:root.mobile.no-tooltips .toolRibbon .tool { - font-size: 1.6em; - } - -#basicTools .needPick:not(.canPick) { - visibility: hidden; - } - -#extraTools .fa-icon { - align-self: center; - position: relative; - } -#extraTools .fa-icon > .nope { - height: 1.1em; - left: 50%; - position: absolute; - stroke: var(--popup-icon-x-ink); - stroke-width: 2; - transform: translateX(-50%); - visibility: hidden; - width: 1.1em; - } -#extraTools > span.on .fa-icon >.nope { - visibility: visible; - } - -#unprocessedRequestWarning { - align-items: center; - background-color: #fc0; - color: rgb(var(--ink-80)); - stroke: rgb(var(--ink-80)); - display: none; - font-size: var(--font-size-smaller); - padding: var(--popup-gap-thin); - } -:root.warn #unprocessedRequestWarning { - display: flex; - } -#unprocessedRequestWarning > .dismiss { - flex-shrink: 0; - width: calc(var(--font-size) - 2px); - } -#unprocessedRequestWarning > .dismiss > svg { - width: 100%; - } - -#moreOrLess { - column-gap: 0; - display: grid; - grid-template: auto / 1fr 1fr; - justify-items: stretch; - margin: 1px 0 0 0; - } -#moreOrLess > span { - cursor: pointer; - margin: 0; - padding: var(--popup-gap-thin) var(--popup-gap); - user-select: none; - white-space: nowrap; - } -:root.mobile #moreOrLess > span { - padding: var(--popup-gap); - } -#moreButton .fa-icon { - transform: rotate(180deg); - } -#lessButton { - border-inline-start: 1px solid var(--surface-1); - text-align: end; - } -#moreButton.disabled, -#lessButton.disabled { - pointer-events: none; - visibility: hidden; - } - -#firewall { - border: 0; - flex-shrink: 1; - font-size: 90%; - margin: 0; - max-height: 600px; - max-width: 460px; - min-width: var(--popup-firewall-min-width); - padding: 0; - position: relative; - overflow-y: auto; - } -:root.desktop #firewall { - margin-inline-start: 1px; - } -:root.desktop body.vMin #firewall { - max-height: 100vh; - max-height: 100svh; - } -#firewall > * { - direction: ltr; - } -#firewall > section { - align-items: flex-start; - display: flex; - left: 0; - position: absolute; - z-index: 50; - } -#firewall > section .fa-icon { - color: var(--ink-4); - fill: var(--ink-4); - font-size: 150%; - padding: var(--popup-gap-thin); - } -#firewall > section:hover .fa-icon { - color: var(--ink-1); - fill: var(--ink-1); - } -#firewall.showBlocked > section .fa-icon, -#firewall.showAllowed > section .fa-icon, -#firewall.hideBlocked > section .fa-icon, -#firewall.hideAllowed > section .fa-icon, -#firewall.show3pScript > section .fa-icon, -#firewall.show3pFrame > section .fa-icon, -#firewall.hide3pScript > section .fa-icon, -#firewall.hide3pFrame > section .fa-icon { - color: rgb(var(--primary-70)); - fill: rgb(var(--primary-70)); - } -#firewall > section .filterExpressions { - background-color: var(--surface-0); - border: 1px solid var(--border-4); - display: none; - } -#firewall > section:hover .filterExpressions { - display: flex; - flex-direction: column; - } -#firewall > section .filterExpressions div { - border-bottom: 1px dotted #ddd; - padding: 0.25em; - } -#firewall > section .filterExpressions div:last-of-type { - border-bottom: 0; - } -#firewall > section .filterExpressions span { - cursor: default; - display: inline-flex; - margin: 0 0.25em 0 0; - padding: 0.5em; - white-space: nowrap; - border: 1px solid var(--surface-0); - } -#firewall > section .filterExpressions span:last-of-type { - margin: 0; - } -:root:not(.mobile) #firewall > section .filterExpressions span:not(.on):hover { - background-color: rgb(var(--primary-70) / 15%); - border: 1px solid rgb(var(--primary-70)); - } -#firewall > section .filterExpressions span.on { - background-color: rgb(var(--primary-70) / 40%); - border: 1px solid rgb(var(--primary-70)); - } -#firewall > div { - border: 0; - display: flex; - margin: 0; - margin-top: 1px; - padding: 0; - } -#firewall > div:first-of-type { - margin-top: 0; - } -#firewall > div:first-of-type ~ div[data-des="*"] { - display: none; - } -#firewall:not(.expanded) > div.isSubdomain:not(.expandException):not(.isRootContext), -#firewall.expanded > div.isSubdomain.expandException:not(.isRootContext) { - display: none; - } -#firewall > div > span, -#actionSelector > #dynaCounts { - background-color: var(--popup-cell-surface); - border: none; - box-sizing: border-box; - display: inline-flex; - padding: 0.4em 0; - position: relative; - } -#firewall > div:first-of-type span[data-i18n] { - cursor: pointer; - flex-direction: unset; - flex-grow: 1; - } -#firewall > div:first-of-type span[data-i18n]::before { - color: var(--ink-3); - content: '+'; - padding-right: 0.25em; - } -#firewall.expanded > div:first-of-type span[data-i18n]::before { - content: '\2012'; - } -#firewall > div > span:first-of-type { - flex-direction: column; - flex-grow: 1; - justify-content: flex-end; - padding-right: 2px; - text-align: right; - white-space: normal; - width: calc(100% - var(--popup-rule-cell-width)); - word-break: break-word; - } -#firewall > div[data-des="*"] > span:first-of-type { - flex-direction: row; - } -#firewall.show3pScript:not(.show3pFrame) > div:not([data-des="*"]).is3p:not(.hasScript), -#firewall.show3pFrame:not(.show3pScript) > div:not([data-des="*"]).is3p:not(.hasFrame), -#firewall.show3pScript.show3pFrame > div:not([data-des="*"]).is3p:not(.hasScript):not(.hasFrame), -#firewall.hide3pScript > div:not([data-des="*"]).is3p.hasScript, -#firewall.hide3pFrame > div:not([data-des="*"]).is3p.hasFrame, -#firewall.showBlocked > div:not([data-des="*"]).is3p:not(.totalBlocked):not(.blocked), -#firewall.showAllowed > div:not([data-des="*"]).is3p:not(.totalAllowed):not(.allowed), -#firewall.hideBlocked > div:not([data-des="*"]).is3p.totalBlocked, -#firewall.hideBlocked > div:not([data-des="*"]).is3p.blocked, -#firewall.hideAllowed > div:not([data-des="*"]).is3p.totalAllowed, -#firewall.hideAllowed > div:not([data-des="*"]).is3p.allowed { - max-height: 4px; - overflow-y: hidden; - pointer-events: none; - user-select: none; - } -#firewall.show3pScript:not(.show3pFrame) > div:not([data-des="*"]).is3p:not(.hasScript) *, -#firewall.show3pFrame:not(.show3pScript) > div:not([data-des="*"]).is3p:not(.hasFrame) *, -#firewall.show3pScript.show3pFrame > div:not([data-des="*"]).is3p:not(.hasScript):not(.hasFrame) *, -#firewall.hide3pScript > div:not([data-des="*"]).is3p.hasScript *, -#firewall.hide3pFrame > div:not([data-des="*"]).is3p.hasFrame *, -#firewall.showBlocked > div:not([data-des="*"]).is3p:not(.totalBlocked):not(.blocked) *, -#firewall.showAllowed > div:not([data-des="*"]).is3p:not(.totalAllowed):not(.allowed) *, -#firewall.hideBlocked > div:not([data-des="*"]).is3p.totalBlocked *, -#firewall.hideBlocked > div:not([data-des="*"]).is3p.blocked *, -#firewall.hideAllowed > div:not([data-des="*"]).is3p.totalAllowed *, -#firewall.hideAllowed > div:not([data-des="*"]).is3p.allowed * { - color: transparent !important; - } -#firewall > div.isCname > span:first-of-type { - color: var(--popup-cell-cname-ink); - } -#firewall > div > span:first-of-type > sub { - display: inline-block; - font-size: 85%; - font-weight: normal; - padding: 0.25em 0 0 0; - } -#firewall > div > span:first-of-type > sub:empty { - display: none; - } -#firewall > div > span:first-of-type ~ span { - flex-shrink: 0; - margin-left: 1px; - width: var(--popup-rule-cell-width); - } -#firewall > div > span:nth-of-type(2) { - display: none; - } -#firewall > div > span:nth-of-type(3), -#firewall > div > span:nth-of-type(4) { - color: var(--ink-2); - display: none; - font-family: monospace; - text-align: center; - } -#firewall > div.isDomain > span:first-of-type > span { - pointer-events: none; - } -#firewall > div.isDomain > span:first-of-type > span > span { - font-weight: 600; - pointer-events: auto; - } -#firewall > div.isDomain.hasSubdomains > span:first-of-type > span::before { - content: '\2026\A0'; - opacity: 0.6; - } -#firewall > div[data-des="*"] > span:nth-of-type(3), -#firewall > div.isSubdomain > span:nth-of-type(3), -#firewall > div.isSubdomain.isRootContext > span:nth-of-type(3), -#firewall.expanded > div:not(.expandException) > span:nth-of-type(3), -#firewall:not(.expanded) > div.expandException > span:nth-of-type(3), -#firewall:not(.expanded) > div.isDomain:not(.expandException) > span:nth-of-type(4), -#firewall.expanded > div.isDomain.expandException > span:nth-of-type(4), -#actionSelector > #dynaCounts { - display: inline-flex; - justify-content: space-between; - } -#firewall > div > span[data-acount]::before, -#firewall > div > span[data-bcount]::after, -#firewall > div > span[data-acount] > #actionSelector > #dynaCounts::before, -#firewall > div > span[data-acount] > #actionSelector > #dynaCounts::after { - content: ' '; - } -#firewall > div > span[data-acount]::before, -#firewall > div > span[data-acount] > #actionSelector > #dynaCounts::before { - padding-left: 0.1em; - } -#firewall > div > span[data-acount="1"]::before, -#firewall > div > span[data-acount="1"] > #actionSelector > #dynaCounts::before { - content: '+'; - } -#firewall > div > span[data-acount="2"]::before, -#firewall > div > span[data-acount="2"] > #actionSelector > #dynaCounts::before { - content: '++'; - } -#firewall > div > span[data-acount="3"]::before, -#firewall > div > span[data-acount="3"] > #actionSelector > #dynaCounts::before { - content: '+++'; - } -#firewall > div > span[data-bcount]::after, -#firewall > div > span[data-bcount] > #actionSelector > #dynaCounts::after { - padding-right: 0.1em; - } -#firewall > div > span[data-bcount="1"]::after, -#firewall > div > span[data-bcount="1"] > #actionSelector > #dynaCounts::after { - content: '\2212'; - } -#firewall > div > span[data-bcount="2"]::after, -#firewall > div > span[data-bcount="2"] > #actionSelector > #dynaCounts::after { - content: '\2212\2212'; - } -#firewall > div > span[data-bcount="3"]::after, -#firewall > div > span[data-bcount="3"] > #actionSelector > #dynaCounts::after { - content: '\2212\2212\2212'; - } - -body.advancedUser #firewall > div > span:first-of-type { - width: calc(100% - 2 * var(--popup-rule-cell-width)); - } -body.advancedUser #firewall > div > span:nth-of-type(2) { - display: inline-flex; - } -body.advancedUser #firewall > div:first-of-type ~ div[data-des="*"] { - display: flex; - } -body.advancedUser #firewall > div > span:first-of-type ~ span { - cursor: pointer; - } - -/** - Small coloured label at the left of a row - */ -#firewall > div.isRootContext > span:first-of-type::before, -#firewall > div.allowed > span:first-of-type::before, -#firewall > div.blocked > span:first-of-type::before, -#firewall:not(.expanded) > div.isDomain.totalAllowed:not(.expandException) > span:first-of-type::before, -#firewall:not(.expanded) > div.isDomain.totalBlocked:not(.expandException) > span:first-of-type::before, -#firewall.expanded > div.isDomain.totalAllowed.expandException > span:first-of-type::before, -#firewall.expanded > div.isDomain.totalBlocked.expandException > span:first-of-type::before { - box-sizing: border-box; - content: ''; - display: inline-block; - filter: var(--popup-cell-label-filter); - height: 100%; - left: 0; - position: absolute; - top: 0; - width: 7px; - } -#firewall > div.isRootContext > span:first-of-type::before { - background: var(--ink-3); - width: 14px !important; - } -#firewall > div.allowed > span:first-of-type::before, -#firewall > div.isDomain.totalAllowed > span:first-of-type::before { - background: var(--popup-cell-allow-own-surface); - } -#firewall > div.blocked > span:first-of-type::before, -#firewall > div.isDomain.totalBlocked > span:first-of-type::before { - background: var(--popup-cell-block-own-surface); - } -#firewall > div.allowed.blocked > span:first-of-type::before, -#firewall > div.isDomain.totalAllowed.totalBlocked > span:first-of-type::before { - background: var(--popup-cell-label-mixed-surface); - } -/* Rule cells */ -body.advancedUser #firewall > div > span.allowRule, -#actionSelector > #dynaAllow { - background: var(--popup-cell-allow-surface); - } -body.advancedUser #firewall > div > span.blockRule, -#actionSelector > #dynaBlock { - background: var(--popup-cell-block-surface); - } -body.advancedUser #firewall > div > span.noopRule, -#actionSelector > #dynaNoop { - background: var(--popup-cell-noop-surface); - } -body.advancedUser #firewall > div > span.ownRule, -#firewall > div > span.ownRule { - color: var(--surface-1); - } -body.advancedUser #firewall > div > span.allowRule.ownRule, -:root:not(.mobile) #actionSelector > #dynaAllow:hover { - background: var(--popup-cell-allow-own-surface); - } -body.advancedUser #firewall > div > span.blockRule.ownRule, -:root:not(.mobile) #actionSelector > #dynaBlock:hover { - background: var(--popup-cell-block-own-surface); - } -body.advancedUser #firewall > div > span.noopRule.ownRule, -:root:not(.mobile) #actionSelector > #dynaNoop:hover { - background: var(--popup-cell-noop-own-surface); - } - -#actionSelector { - box-sizing: border-box; - display: flex; - height: 100%; - justify-items: stretch; - left: 0; - overflow: hidden; - position: absolute; - top: 0; - width: 100%; - z-index: 1; - } -#actionSelector > span { - display: inline-block; - flex-grow: 1; - } -#actionSelector > #dynaAllow { - display: none; - } -body.godMode #actionSelector > #dynaAllow { - display: inline-block; - } -#actionSelector > #dynaNoop { - } -#actionSelector > #dynaBlock { - } -#actionSelector > #dynaCounts { - background-color: transparent; - height: 100%; - left: 0; - pointer-events: none; - position: absolute; - top: 0; - width: 100%; - } - -/* configurable UI elements */ -:root:not(.mobile) .toolRibbon .caption, -:root.mobile body.no-tooltips .toolRibbon .caption, -:root.mobile body[data-ui~="-captions"] .toolRibbon .caption { - display: none; - } -:root.mobile .toolRibbon .caption, -:root:not(.mobile) body[data-ui~="+captions"] .toolRibbon .caption { - display: inherit; - } -:root:not(.mobile) .toolRibbon .tool, -:root.mobile body.no-tooltips .toolRibbon .tool, -:root.mobile body[data-ui~="-captions"] .toolRibbon .tool { - padding: var(--popup-gap) var(--popup-gap-thin); - } -:root.mobile #no-popups, -:root body[data-ui~="-no-popups"] #no-popups { - display: none; - } -:root:not(.mobile) #no-popups, -:root body[data-ui~="+no-popups"] #no-popups { - display: flex; - } -:root.mobile [href="logger-ui.html#_"], -:root body[data-ui~="-logger"] [href="logger-ui.html#_"] { - display: none; - } -:root:not(.mobile) [href="logger-ui.html#_"], -:root body[data-ui~="+logger"] [href="logger-ui.html#_"] { - display: flex; - } -body:not([data-more*="a"]) [data-more="a"], -body:not([data-more*="b"]) [data-more="b"], -body:not([data-more*="c"]) [data-more="c"], -body:not([data-more*="d"]) [data-more="d"], -body:not([data-more*="f"]) [data-more="f"] { - height: 0; - margin-bottom: 0 !important; - margin-top: 0 !important; - overflow-y: hidden; - visibility: hidden; - } -body[data-more*="d"] hr[data-more="a"] { - display: none; - } -body[data-more*="c"] hr[data-more="f"] { - display: none; - } -body[data-more*="c"]:not([data-more*="f"]) hr[data-more="g"] { - display: none; - } -body:not([data-more*="e"]) [data-more="e"] { - display: none; - } - -:root #firewall-vspacer { - display: none; - height: calc(6 * var(--popup-gap)); - } - -/* popup-in-tab mode, useful for screenshots */ -:root.desktop.intab body { - overflow: auto; - } -:root.desktop.intab #firewall { - max-height: none; - } - -/* horizontally-constrained viewport */ -:root.portrait:not(.desktop) body { - overflow-y: auto; - width: 100%; - } -:root.portrait #panes { - flex-direction: column; - } -:root.portrait #main { - max-width: unset; - } -:root.portrait #firewall { - max-height: unset; - max-width: unset; - min-width: unset; - overflow-y: hidden; - } -:root.portrait body[data-more*="e"] #firewall-vspacer { - display: block; - } - -/* touch-driven devices */ -:root.mobile #firewall { - line-height: 20px; - } - -/* mouse-driven devices */ -:root.desktop { - display: flex; - justify-content: flex-end; - } -:root.desktop body { - --popup-gap: calc(var(--font-size) * 0.875); - } -:root.desktop body:not(.off) #switch:hover { - fill: rgb(var(--popup-power-ink-rgb) / 90%); - } -:root.desktop body.off #switch:hover { - stroke: var(--popup-power-ink); - } -:root.desktop .rulesetTools [id]:hover { - background-color: var(--popup-ruleset-tool-surface-hover); - } -:root.desktop .rulesetTools [id]:hover > svg { - fill: var(--ink-2); - } -:root.desktop #firewall { - direction: rtl; - line-height: 1.4; - } -:root.desktop .tool:hover { - background-color: var(--popup-toolbar-surface-hover); - } -:root.desktop #moreOrLess > span:hover { - background-color: var(--surface-2); - /* background-color: var(--popup-toolbar-surface-hover); */ - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/settings.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/settings.css deleted file mode 100644 index 61a8c0e..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/settings.css +++ /dev/null @@ -1,74 +0,0 @@ -body { - margin-bottom: 6rem; - } - -.synopsis { - color: var(--ink-0); - font-size: var(--font-size-smaller); - opacity: var(--medium-em); - } - -/* surface/ink */ -#themeMood { - align-items: stretch; - align-self: stretch; - display: inline-flex; - justify-content: stretch; - user-select: none; - } -#themeMood > span { - border: 1px solid var(--ink-1); - color: var(--ink-1); - display: inline-flex; - background-color: var(--surface-1); - display: inline-block; - padding: 0 0.5em; - text-align: center; - user-select: none; - } - -/* primary color */ -#themePrimary { - align-items: stretch; - align-self: stretch; - display: inline-flex; - justify-content: stretch; - position: relative; - } -#themePrimary > span { - background-color: rgb(var(--primary-50)); - display: inline-flex; - width: 2em; - } - -[href="advanced-settings.html"] { - display: none; - } -body.advancedUser [href="advanced-settings.html"] { - display: inline-flex; - } - -#localData > div { - margin-bottom: var(--default-gap-small); - } -#localData > div:last-of-type { - align-items: flex-start; - display: flex; - flex-direction: column; - } -#localData > div:last-of-type > button { - margin-bottom: var(--default-gap-small); - min-width: 280px; - } - -/* Mobile devices */ - -:root.mobile #localData { - max-width: 100vw; - } -:root.mobile #localData > div:last-of-type { - align-items: stretch; - } -:root.mobile #localData > div:last-of-type > button { - min-width: unset; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/support.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/support.css deleted file mode 100644 index 0afd740..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/support.css +++ /dev/null @@ -1,110 +0,0 @@ -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } - } - -body { - margin-bottom: 6rem; - } - -.body > div { - max-width: 800px; - } -h3 { - color: var(--fieldset-header-ink); - margin-bottom: 0; - } -.supportEntry { - display: flex; - margin-block: 1em; - } -:root.mobile .supportEntry { - flex-direction: column; - } -.supportEntry > * { - min-width: 6em; - } -.supportEntry > div:first-of-type { - flex-grow: 1; - } -:root:not(.mobile) .supportEntry > div:first-of-type { - margin-inline-end: 2em; - } -.supportEntry h3 { - margin: 1em 0; - } - -.e > .supportEntry { - flex-direction: column; - } -.e > .supportEntry > div:not(:first-of-type) { - margin-top: 1em; - } -.e > .supportEntry select { - min-width: 50%; - max-width: calc(100% - 1em); - } -body:not(.filterIssue) .body > div.e { - display: none; -} -body.filterIssue .body > div:not(.e) { - display: none; -} -body.filterIssue #moreButton { - display: none; -} - -body[data-should-update-lists]:not(.updated) .e .createEntry { - opacity: 0.25; - pointer-events: none; -} - -body:not([data-should-update-lists]) .shouldUpdate { - display: none; - } -body.updating { - pointer-events: none; - } -body.updating button { - filter: grayscale(1); - opacity: 0.5; - } -body.updated .shouldUpdate button { - display: none; - } -body.updating .shouldUpdate button .fa-icon svg { - animation: spin 1s linear infinite; - transform-origin: 50%; - } -body .shouldUpdate .updated { - align-self: center; - } -body:not(.updated) .shouldUpdate .updated { - display: none; - } - -button { - align-self: center; - } -span[data-url] { - color: var(--link-ink); - cursor: pointer; - } - -#showSupportInfo { - cursor: pointer; - } - -body.redacted #redactButton { - display: none; - } -#unredactButton { - display: none; - } -body.redacted #unredactButton { - display: inline; - } - -.cm-string.cm-property { - color: black; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/themes/default.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/themes/default.css deleted file mode 100644 index c37bd28..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/themes/default.css +++ /dev/null @@ -1,526 +0,0 @@ -/** - - References: - https://protocol.mozilla.org/ - https://material.io/ - - Color names from: - https://protocol.mozilla.org/docs/fundamentals/color.html - - Tools: - Lightness validator: https://www.hsluv.org/ - Contrast validator: https://bernaferrari.github.io/color-studio/#/ -*/ -:root { - --blue-5: 170 242 255; - --blue-10: 128 235 255; - --blue-20: 0 221 255; - --blue-30: 0 179 244; - --blue-40: 0 144 237; - --blue-50: 0 96 223; - --blue-60: 2 80 187; - --blue-70: 5 64 150; - --blue-80: 7 48 114; - --blue-90: 9 32 77; - --dark-gray-10: 82 82 94; - --dark-gray-20: 74 74 85; - --dark-gray-30: 66 65 77; - --dark-gray-40: 58 57 68; - --dark-gray-50: 50 49 60; - --dark-gray-60: 43 42 51; - --dark-gray-70: 35 34 43; - --dark-gray-80: 28 27 34; - --dark-gray-90: 21 20 26; - --green-30: 136 255 209; - --green-40: 84 255 189; - --green-50: 63 225 176; - --green-60: 42 195 162; - --green-65: 21 165 149; - --green-70: 0 135 135; - --green-80: 0 94 94; - --ink-10: 57 52 115; - --ink-80: 32 18 58; - --light-gray-10: 249 249 251; - --light-gray-20: 240 240 244; - --light-gray-30: 224 224 230; - --light-gray-40: 207 207 216; - --light-gray-50: 191 191 201; - --light-gray-60: 175 175 186; - --light-gray-70: 159 159 173; - --light-gray-80: 143 143 158; - --light-gray-90: 128 128 143; - --orange-5: 255 244 222; - --orange-10: 255 213 178; - --orange-20: 255 181 135; - --orange-30: 255 162 102; - --orange-40: 255 138 80; - --orange-50: 255 113 57; - --orange-60: 226 89 32; - --orange-70: 204 61 0; - --orange-80: 158 40 11; - --orange-90: 124 21 4; - --purple-5: 247 226 255; - --purple-10: 246 184 255; - --purple-20: 246 143 255; - --purple-30: 247 112 255; - --purple-40: 215 76 240; - --purple-50: 184 51 225; - --purple-60: 149 43 185; - --purple-70: 114 34 145; - --purple-80: 78 26 105; - --purple-90: 43 17 65; - --red-20: 255 154 162; - --red-30: 255 132 139; - --red-40: 255 106 117; - --red-50: 255 79 94; - --red-60: 226 40 80; - --red-70: 197 0 66; - --violet-5: 231 223 255; - --violet-10: 217 191 255; - --violet-20: 203 158 255; - --violet-30: 198 137 255; - --violet-40: 171 113 255; - --violet-50: 144 89 255; - --violet-60: 117 66 229; - --violet-70: 89 42 203; - --violet-80: 69 39 141; - --violet-90: 50 28 100; - --yellow-5: 255 255 204; - --yellow-10: 255 255 152; - --yellow-20: 255 234 128; - --yellow-30: 255 213 103; - --yellow-40: 255 189 79; - --yellow-50: 255 164 54; - --yellow-60: 226 127 46; - --yellow-70: 196 90 39; - --yellow-80: 167 52 31; - --yellow-90: 150 14 24; - - /* - * Reference gray: -light-gray-90, then calibrated with hsluv.org, where - * the number is Luv. - * - * */ - --gray-5: 16 16 22; - --gray-10: 27 27 35; - --gray-15: 37 37 47; - --gray-20: 47 47 59; - --gray-25: 58 58 72; - --gray-30: 69 69 85; - --gray-35: 81 81 98; - --gray-40: 93 93 110; - --gray-45: 105 105 121; - --gray-50: 118 118 133; - --gray-55: 131 131 145; - --gray-60: 144 144 156; - --gray-65: 157 157 168; - --gray-70: 170 170 180; - --gray-75: 184 184 192; - --gray-80: 198 198 204; - --gray-85: 212 212 217; - --gray-90: 226 226 229; - --gray-95: 240 240 242; -} - -/* - * Font - * - * */ -:root { - --font-size: 14px; - --font-size-smaller: calc(var(--font-size) - 1px); - --font-size-xsmall: calc(var(--font-size) - 3px); - --font-size-larger: 15px; - --font-family: Inter, sans-serif; - --monospace-size: 12px; -} - -:root.mobile { - --font-size: 16px; - --font-size-smaller: 14px; - --monospace-size: 13px; -} - -/* - * Default color theme - * - * Tool: hsluv.org - * - * */ -:root /* h255 */ { - --primary-5: 3 16 40; /* S:90 Luv:5 */ - --primary-10: 5 27 59; /* S:90 Luv:10 */ - --primary-20: 14 47 95; /* S:90 Luv:20 */ - --primary-30: 24 69 134; /* S:90 Luv:30 */ - --primary-40: 34 93 176; /* S:90 Luv:40 */ - --primary-50: 45 117 219; /* S:90 Luv:50 */ - --primary-60: 86 143 244; /* S:90 Luv:60 */ - --primary-70: 137 170 247; /* S:90 Luv:70 */ - --primary-80: 179 198 250; /* S:90 Luv:80 */ - --primary-90: 218 226 252; /* S:90 Luv:90 */ - --primary-95: 236 240 254; /* S:90 Luv:95 */ - } - -/* - * Default dark theme starts here - * - * https://github.com/uBlockOrigin/uBlock-issues/issues/1027#issuecomment-629641072 - * Assign a default background color if dark mode is enabled -- hopefully - * this will avoid flashes of white background until the document's own CSS - * overrides the default color value below. - * - * */ -@media (prefers-color-scheme: light) { - :root { - --surface-0-rgb: 255 255 255; - --surface-1: rgb(var(--gray-95)); - --surface-2: rgb(var(--gray-90)); - --surface-3: rgb(var(--gray-80)); - } -} -@media (prefers-color-scheme: dark) { - :root { - --surface-0-rgb: 0 0 0; - --surface-1: rgb(var(--gray-10)); - --surface-2: rgb(var(--gray-20)); - --surface-3: rgb(var(--gray-30)); - } -} - -:root.light { - --surface-0-rgb: 255 255 255; - --surface-1: rgb(var(--gray-95)); - --surface-2: rgb(var(--gray-90)); - --surface-3: rgb(var(--gray-80)); -} - -:root.dark { - --surface-0-rgb: 0 0 0; - --surface-1: rgb(var(--gray-10)); - --surface-2: rgb(var(--gray-20)); - --surface-3: rgb(var(--gray-30)); -} - -/* - * Components - * - * */ -:root { - --font-size: 14px; - - --ubo-red: #800000; - - --elevation-up-surface: black; - --elevation-up1-opacity: 4%; - --elevation-up2-opacity: 8%; - --elevation-down-surface: white; - --elevation-down1-opacity: 16%; - --elevation-down2-opacity: 32%; - - /* https://material.io/design/color/text-legibility.html#text-backgrounds */ - --ink-rgb: var(--ink-80); - --ink-0: black; - --ink-100: white; - - --border-1: rgb(var(--gray-75)); - --border-2: rgb(var(--gray-70)); - --border-3: rgb(var(--gray-65)); - --border-4: rgb(var(--gray-60)); - - --accent-ink-3: var(--ink-1); - --accent-surface-1: rgb(var(--primary-40)); - - --link-ink: rgb(var(--primary-40)); - --link-hover-ink: rgb(var(--primary-30)); - - /* buttons */ - --button-surface-rgb: var(--gray-80); - - --dashboard-tab-active-ink-rgb: var(--primary-40); - --dashboard-tab-focus-surface-rgb: var(--primary-90); - --dashboard-highlight-surface-rgb: var(--primary-90); - - --dashboard-happy-green: rgb(var(--green-65)); - - /* popup panel */ - --popup-cell-cname-ink: #0054d7; /* h260 S:100 Luv:40 */; - --popup-cell-label-mixed-surface: #c29100; /* TODO: fix */ - --popup-icon-x-ink: rgb(var(--red-60)); - --popup-power-ink-rgb: var(--primary-50); - - /* horizontal line separator */ - --hr-ink: var(--surface-2); - - /* cloud widget */ - --cloud-total-used-surface: rgb(var(--violet-60) / 25%); - --cloud-used-surface: rgb(var(--violet-60)); - - /* misc */ - --error-surface: #c00004; /* h:12 S:100 Luv:40 */ - - /* codemirror */ - --cm-active-line: rgb(var(--gray-90)); - --cm-cursor: var(--ink-0); - --cm-foldmarker-ink: rgb(var(--blue-40)); - --cm-gutter-border: var(--surface-1); - --cm-gutter-ink: var(--ink-3); - --cm-gutter-surface: var(--surface-2); - --cm-matchingbracket: rgb(var(--green-30)); - --cm-merge-copy-ink: rgb(var(--blue-50)); - --cm-merge-chunk-border: rgb(var(--surface-0-rgb) / 40%); - --cm-merge-chunk-surface: rgb(var(--surface-0-rgb) / 40%); - --cm-negative: #e32f00; /* h:15 S:100 Luv:50 */ - --cm-positive: #008a21; /* h:130 S:100 Luv:50 */ - --cm-selection-surface: rgb(var(--gray-80)); - --cm-selection-focused-surface: rgb(var(--primary-80)); - --cm-searching-ink: black; - --cm-searching-surface: #fee300cc /* h75 S:100 Luv:90 a:80% */; - --cm-search-match-surface: rgb(var(--yellow-40) / 50%); - - /* syntax highlight: static filtering */ - --sf-comment-ink: var(--ink-3); - --sf-def-ink: #3c3aff; /* h:266 S:100 Luv:40 */ - --sf-directive-ink: var(--ink-1); - --sf-error-ink: #ff8981; /* h15 S:100 Luv:70 */ - --sf-error-surface: #ff898133; /* h15 S:100 Luv:70 @ 20% */ - --sf-keyword-ink: #9b00ca; /* h:290 S:100 Luv:40 */ - --sf-notice-ink: var(--ink-4); - --sf-readonly-ink: var(--ink-3); - --sf-tag-ink: #006e2e /* h:135 S:100 Luv:40 */; - --sf-unicode-ink: var(--ink-1); - --sf-value-ink: #974900 /* h:30 S:100 Luv:40 */; - --sf-variable-ink: var(--ink-1); - --sf-warning-ink: #e49d00; /* h:50 S:100 Luv:70 */ - --sf-warning-surface: #e49d0033; /* h:50 S:100 Luv:70 @ 20% */ - - /* syntax highlight: dynamic filtering */ - --df-allow-ink: var(--cm-positive); - --df-block-ink: var(--cm-negative); - --df-noop-ink: rgb(var(--dark-gray-10)); - - /* logger */ - --logger-modified-surface: #0000c010; - --logger-modified-em-surface: #0000c028; - --logger-redirected-surface: rgb(var(--yellow-5) / 50%); - --logger-scriptlet-surface: rgb(var(--yellow-30) / 50%); -} - -/* https://material.io/design/color/dark-theme.html */ -:root.dark { - --elevation-down-surface: black; - --elevation-down1-opacity: 16%; - --elevation-down2-opacity: 32%; - --elevation-up-surface: white; - --elevation-up1-opacity: 12%; - --elevation-up2-opacity: 24%; - - --ink-rgb: var(--gray-95); - --ink-0: white; - --ink-100: black; - - --border-1: rgb(var(--gray-35)); - --border-2: rgb(var(--gray-40)); - --border-3: rgb(var(--gray-45)); - --border-4: rgb(var(--gray-50)); - - --accent-surface-1: rgb(var(--primary-70)); - - --link-ink: rgb(var(--primary-70)); - --link-hover-ink: rgb(var(--primary-80)); - - /* buttons */ - --button-surface-rgb: var(--gray-30); - - --dashboard-tab-active-ink-rgb: var(--primary-70); - --dashboard-tab-focus-surface-rgb: var(--primary-20); - --dashboard-highlight-surface-rgb: var(--primary-20); - - /* popup panel */ - --popup-cell-cname-ink: #93a6ff; /* h260 S:100 Luv:70 */; - --popup-cell-label-mixed-surface: hsla(45, 100%, 38%, 1); /* TODO: fix */ - --popup-icon-x-ink: rgb(var(--red-50)); - --popup-power-ink-rgb: var(--primary-60); - - /* cloud widget */ - --cloud-total-used-surface: rgb(var(--violet-20) / 25%); - --cloud-used-surface: rgb(var(--violet-20)); - - /* misc */ - --error-surface: #ff5354; /* h:12 S:100 Luv:60 */ - - /* codemirror */ - --cm-active-line: rgb(var(--gray-20)); - --cm-merge-copy-ink: rgb(var(--blue-30)); - --cm-foldmarker-ink: rgb(var(--blue-20)); - --cm-matchingbracket: rgb(var(--green-30) / 50%); - --cm-negative: #ff8982; /* h:15 S:100 Luv:70 */ - --cm-positive: #00c634; /* h:130 S:100 Luv:70 */ - --cm-selection-surface: rgb(var(--gray-40)); - --cm-selection-focused-surface: rgb(var(--primary-40)); - --cm-searching-ink: black; - --cm-searching-surface: #fee300cc /* h75 S:100 Luv:90 a:80% */; - - /* syntax highlight: static filtering */ - --sf-comment-ink: var(--ink-3); - --sf-def-ink: #a2a2ff; /* h:266 S:100 Luv:70 */ - --sf-error-ink: #ff8981; /* h15 S:100 Luv:70 */ - --sf-error-surface: #ff898166; /* h15 S:100 Luv:70 @ 40% */ - --sf-keyword-ink: #d78dff; /* h:290 S:100 Luv:70 */ - --sf-tag-ink: #00c559 /* h:135 S:100 Luv:70 */; - --sf-value-ink: #ff8d48 /* h:30 S:100 Luv:70 */; - --sf-variable-ink: var(--ink-1); - --sf-warning-ink: #e49d00; /* h:50 S:100 Luv:70 */ - --sf-warning-surface: #e49d0066; /* h:50 S:100 Luv:50 @ 40% */ - - /* syntax highlight: dynamic filtering */ - --df-noop-ink: var(--ink-3); - - /* logger */ - --logger-modified-surface: #663efd60; - --logger-redirected-surface: rgb(var(--yellow-5) / 40%); - --logger-scriptlet-surface: rgb(var(--yellow-30) / 40%); -} - -:root.dark input, -:root.dark select, -:root.dark textarea { - color-scheme: dark; -} - -/* - * Shared declarations - * */ -:root { - --high-em: 87%; - --medium-em: 60%; - --low-em: 38%; - - --surface-0: rgb(var(--surface-0-rgb)); - - --ink-1: rgb(var(--ink-rgb)); - --ink-2: rgb(var(--ink-rgb) / var(--high-em)); - --ink-3: rgb(var(--ink-rgb) / var(--medium-em)); - --ink-4: rgb(var(--ink-rgb) / var(--low-em)); - - --accent-ink-1: var(--surface-0); - --accent-ink-3: var(--ink-1); - - --subtil-ink: var(--accent-surface-1); - - --fieldset-header-surface: transparent; - --fieldset-header-ink: var(--ink-2); - - --button-ink: var(--ink-1); - --button-surface: rgb(var(--button-surface-rgb)); - --button-border-radius: 5px; - --button-preferred-ink: var(--accent-ink-1); - --button-preferred-surface: var(--accent-surface-1); - --button-disabled-surface: var(--surface-3); - --button-disabled-filter: opacity(50%); - - --checkbox-size: calc(var(--font-size) + 2px); - --checkbox-ink: var(--ink-3); - --checkbox-checked-ink: var(--accent-surface-1); - --checkbox-disabled-filter: opacity(50%); - --checkbox-margin-end: calc(var(--font-size) * 0.75); - - --notice-ink: var(--accent-ink-1); - --notice-surface: var(--accent-surface-1); - --notice-surface-shadow: #000 0 2px 8px; - - --dashboard-tab-ink: var(--ink-1); - --dashboard-tab-active-ink: rgb(var(--dashboard-tab-active-ink-rgb)); - --dashboard-tab-active-surface: transparent; - --dashboard-tab-focus-surface: rgb(var(--dashboard-tab-focus-surface-rgb)); - --dashboard-tab-hover-surface: var(--surface-2); - --dashboard-tab-hover-border: var(--surface-3); - - /* info levels: normal, fyi, warn, error -- we want same Luv */ - --info0-ink-rgb: 119 119 119; /* h: 0 S: 0 Luv:60 */ - --info1-ink-rgb: 72 143 255; /* h:255 S:100 Luv:60 */ - --info2-ink-rgb: 208 125 0; /* h: 40 S:100 Luv:60 */ - --info3-ink-rgb: 255 82 94; /* h: 10 S:100 Luv:60 */ - --info0-ink: rgb(var(--info0-ink-rgb)); - --info1-ink: rgb(var(--info1-ink-rgb)); - --info2-ink: rgb(var(--info2-ink-rgb)); - --info3-ink: rgb(var(--info3-ink-rgb)); - - --popup-cell-surface: var(--surface-2); - --popup-cell-label-filter: opacity(40%); - --popup-cell-allow-own-surface: rgb(var(--popup-cell-allow-own-surface-rgb)); - --popup-cell-allow-surface: rgb(var(--popup-cell-allow-surface-rgb)); - --popup-cell-noop-own-surface: rgb(var(--popup-cell-noop-own-surface-rgb)); - --popup-cell-noop-surface: rgb(var(--popup-cell-noop-surface-rgb)); - --popup-cell-block-own-surface: rgb(var(--popup-cell-block-own-surface-rgb)); - --popup-cell-block-surface: rgb(var(--popup-cell-block-surface-rgb)); - --popup-power-ink: rgb(var(--popup-power-ink-rgb)); - --popup-toolbar-surface: rgb(var(--primary-80) / 15%); - --popup-toolbar-surface-hover: rgb(var(--primary-80) / 20%); - --popup-ruleset-tool-ink: var(--ink-1); - --popup-ruleset-tool-surface: rgb(var(--primary-80) / 15%); - --popup-ruleset-tool-surface-hover: rgb(var(--primary-80) / 20%); - --popup-ruleset-tool-shadow: transparent; -} - -/* - * Rule colors - * */ -:root:not(.dark):not(.colorBlind) { - --popup-cell-allow-own-surface-rgb: 0 127 0; /* h:127.7 S:100 Luv:45 */ - --popup-cell-allow-surface-rgb: 129 202 129; /* h:127.7 S:50 Luv:75 */ - --popup-cell-block-own-surface-rgb: 216 0 0; /* h:12.2 S:100 Luv:45 */ - --popup-cell-block-surface-rgb: 224 172 172; /* h:12.2 S:50 Luv:75 */ - --popup-cell-noop-own-surface-rgb: 107 107 107; /* h:0 S:0 Luv:45 */ - --popup-cell-noop-surface-rgb: 185 185 185; /* h:0 S:0 Luv:75 */ -} - -:root.dark:not(.colorBlind) { - --popup-cell-allow-own-surface-rgb: 0 153 0; /* h:127.7 S:100 Luv:55 */ - --popup-cell-allow-surface-rgb: 73 117 73; /* h:127.7 S:50 Luv:45 */ - --popup-cell-block-own-surface-rgb: 255 40 40; /* h:12.2 S:100 Luv:55 */ - --popup-cell-block-surface-rgb: 175 74 74; /* h:12.2 S:50 Luv:45 */ - --popup-cell-noop-own-surface-rgb: 132 132 132; /* h:0 S:0 Luv:55 */ - --popup-cell-noop-surface-rgb: 94 94 94; /* h:0 S:0 Luv:40 */ -} - -/* - * Source for color-blind color scheme: - * https://davidmathlogic.com/colorblind/ - * First pair in "Accessible palettes" - * - * */ -:root.colorBlind { - --popup-cell-allow-own-surface-rgb: 151 113 0; /* h:58.5 S:100 Luv:50 */ - --popup-cell-block-own-surface-rgb: 0 120 216; /* h:252 S:100 Luv:50 */ - --popup-cell-noop-own-surface-rgb: 119 119 119; /* h:0 S:0 Luv:50 */ - --popup-cell-label-mixed-surface: #ff6a00; /* TODO: fix */ -} -:root.colorBlind:not(.dark) { - --popup-cell-allow-surface-rgb: 223 178 92; /* h:58.5 S:75 Luv:75 */ - --popup-cell-block-surface-rgb: 159 185 238; /* h:252 S:75 Luv:75 */ - --popup-cell-noop-surface-rgb: 185 185 185; /* h:0 S:0 Luv:75 */ -} -:root.dark.colorBlind { - --popup-cell-allow-surface-rgb: 115 91 44; /* h:58.5 S:75 Luv:40 */ - --popup-cell-block-surface-rgb: 53 95 154; /* h:252 S:75 Luv:40 */ - --popup-cell-noop-surface-rgb: 94 94 94; /* h:0 S:0 Luv:40 */ -} - -:root.classic:not(.dark) { - --notice-ink: rgb(var(--ink-80)); - --notice-surface: rgb(var(--yellow-5)); - --popup-power-ink-rgb: 0 110 254; - --popup-ruleset-tool-ink: var(--ink-1); - --popup-ruleset-tool-surface: rgb(var(--yellow-5) / 50%); - --popup-ruleset-tool-surface-hover: rgb(var(--yellow-5) / 75%); - --popup-ruleset-tool-shadow: rgb(var(--gray-85)); -} - -/* - * Experiment: use Firefox for Android dark theme colors -:root.mobile.dark { - --gray-10: 43 42 51; - --gray-20: 66 65 77; - --ink-rgb: 251 251 254; -} -*/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/whitelist.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/whitelist.css deleted file mode 100644 index 3248a77..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/css/whitelist.css +++ /dev/null @@ -1,23 +0,0 @@ -html { - height: 100vh; - height: 100svh; - overflow: hidden; - width: 100vw; - } -body { - display: flex; - flex-direction: column; - height: 100%; - justify-content: stretch; - overflow: hidden; - width: 100%; - } -.body { - flex-shrink: 0; - } -.codeMirrorContainer { - flex-grow: 1; - } -#whitelist { - text-align: left; - } diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/dashboard.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/dashboard.html deleted file mode 100644 index b62813b..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/dashboard.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - -
- - - - book -
-
-
-   -   - -
-
-
- - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/devtools.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/devtools.html deleted file mode 100644 index 8f66827..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/devtools.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - -uBlock — Dev tools - - - - - - - - - - - - - - - - -
-

- - - - - - - - - - -

-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/document-blocked.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/document-blocked.html deleted file mode 100644 index 80a4546..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/document-blocked.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - -
- - -
-

_

- -
- -
-

_

-

 

- -
- -
- -
- -
- - - -
- - -
- - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/dyna-rules.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/dyna-rules.html deleted file mode 100644 index 451f858..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/dyna-rules.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -uBlock — Dynamic filtering rules - - - - - - - - - - - - - - -
-
-

-
-
-
-
- - -
-
-
- - - -
-
-
-
-
- filter  double-angle-up -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/cloud.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/cloud.png deleted file mode 100644 index 6c78dde..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/cloud.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/README b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/README deleted file mode 100644 index d388796..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/README +++ /dev/null @@ -1,9 +0,0 @@ -Source of all images in this folder: - https://flagpedia.net/ - -Licence: - https://flagpedia.net/about - -> Flag images are in the public domain (exempt from copyright). -> They are completely free for non-commercial and even commercial use. -> You can also download all flags." diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ad.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ad.png deleted file mode 100644 index 4df2966..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ad.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ae.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ae.png deleted file mode 100644 index c182e95..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ae.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/af.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/af.png deleted file mode 100644 index a8fc95d..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/af.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ag.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ag.png deleted file mode 100644 index 4b54da8..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ag.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ai.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ai.png deleted file mode 100644 index c536a35..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ai.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/al.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/al.png deleted file mode 100644 index 6d70fe9..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/al.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/am.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/am.png deleted file mode 100644 index 2d9be46..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/am.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ao.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ao.png deleted file mode 100644 index 0b4e533..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ao.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/aq.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/aq.png deleted file mode 100644 index 1f1f14a..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/aq.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ar.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ar.png deleted file mode 100644 index 394ac6a..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ar.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/as.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/as.png deleted file mode 100644 index 0a2075e..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/as.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/at.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/at.png deleted file mode 100644 index f89b8b4..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/at.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/au.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/au.png deleted file mode 100644 index e44d53e..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/au.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/aw.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/aw.png deleted file mode 100644 index 50cd2e8..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/aw.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ax.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ax.png deleted file mode 100644 index 9f49dcc..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ax.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/az.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/az.png deleted file mode 100644 index 5eb5088..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/az.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ba.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ba.png deleted file mode 100644 index 31ae9f6..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ba.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bb.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bb.png deleted file mode 100644 index a754379..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bb.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bd.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bd.png deleted file mode 100644 index 9cd5932..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bd.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/be.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/be.png deleted file mode 100644 index 5c72923..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/be.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bf.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bf.png deleted file mode 100644 index ff6d6d2..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bf.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bg.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bg.png deleted file mode 100644 index 699d315..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bg.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bh.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bh.png deleted file mode 100644 index 025124d..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bh.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bi.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bi.png deleted file mode 100644 index 2153878..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bi.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bj.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bj.png deleted file mode 100644 index ffc7c29..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bj.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bl.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bl.png deleted file mode 100644 index 6a9d436..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bl.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bm.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bm.png deleted file mode 100644 index 9646117..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bm.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bn.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bn.png deleted file mode 100644 index 0e0cd68..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bn.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bo.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bo.png deleted file mode 100644 index 9fb5a4e..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bo.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bq.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bq.png deleted file mode 100644 index 3d7bc43..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bq.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/br.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/br.png deleted file mode 100644 index 42a6e99..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/br.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bs.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bs.png deleted file mode 100644 index a3bdaeb..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bs.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bt.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bt.png deleted file mode 100644 index 85deabd..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bt.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bv.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bv.png deleted file mode 100644 index ae72a77..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bv.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bw.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bw.png deleted file mode 100644 index ee7ba62..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bw.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/by.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/by.png deleted file mode 100644 index bd52949..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/by.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bz.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bz.png deleted file mode 100644 index 8165ea0..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/bz.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ca.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ca.png deleted file mode 100644 index 8f7c4a8..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ca.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cc.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cc.png deleted file mode 100644 index 1f6c7dc..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cc.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cd.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cd.png deleted file mode 100644 index 1d554fa..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cd.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cf.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cf.png deleted file mode 100644 index 214a4fb..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cf.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cg.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cg.png deleted file mode 100644 index 8349522..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cg.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ch.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ch.png deleted file mode 100644 index 635de7b..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ch.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ci.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ci.png deleted file mode 100644 index 1093fb9..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ci.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ck.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ck.png deleted file mode 100644 index 6387808..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ck.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cl.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cl.png deleted file mode 100644 index 4b9e866..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cl.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cm.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cm.png deleted file mode 100644 index 5de502c..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cm.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cn.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cn.png deleted file mode 100644 index e5b1554..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cn.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/co.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/co.png deleted file mode 100644 index cc189b9..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/co.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cr.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cr.png deleted file mode 100644 index fcf6783..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cr.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cu.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cu.png deleted file mode 100644 index 3907e7c..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cu.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cv.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cv.png deleted file mode 100644 index 35564a2..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cv.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cw.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cw.png deleted file mode 100644 index 81397ce..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cw.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cx.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cx.png deleted file mode 100644 index bc52786..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cx.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cy.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cy.png deleted file mode 100644 index f8d39ab..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cy.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cz.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cz.png deleted file mode 100644 index 7f36814..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/cz.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/de.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/de.png deleted file mode 100644 index 4d311cc..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/de.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/dj.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/dj.png deleted file mode 100644 index 806cfdd..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/dj.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/dk.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/dk.png deleted file mode 100644 index c5e3711..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/dk.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/dm.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/dm.png deleted file mode 100644 index 281e48a..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/dm.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/do.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/do.png deleted file mode 100644 index d933f8a..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/do.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/dz.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/dz.png deleted file mode 100644 index 7d1253b..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/dz.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ec.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ec.png deleted file mode 100644 index 6c88f1f..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ec.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ee.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ee.png deleted file mode 100644 index 6fcf8cf..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ee.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/eg.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/eg.png deleted file mode 100644 index 5fb759e..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/eg.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/eh.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/eh.png deleted file mode 100644 index c25436d..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/eh.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/er.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/er.png deleted file mode 100644 index d921f3f..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/er.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/es.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/es.png deleted file mode 100644 index 2e01ce9..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/es.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/et.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/et.png deleted file mode 100644 index 211bb9c..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/et.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/fi.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/fi.png deleted file mode 100644 index 551de7c..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/fi.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/fj.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/fj.png deleted file mode 100644 index 8f6d8bf..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/fj.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/fk.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/fk.png deleted file mode 100644 index 12d316c..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/fk.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/fm.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/fm.png deleted file mode 100644 index e5aefda..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/fm.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/fo.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/fo.png deleted file mode 100644 index 56a99a9..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/fo.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/fr.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/fr.png deleted file mode 100644 index 8fe5ea4..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/fr.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ga.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ga.png deleted file mode 100644 index ffb3f72..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ga.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gb-eng.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gb-eng.png deleted file mode 100644 index 13c606d..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gb-eng.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gb-nir.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gb-nir.png deleted file mode 100644 index a633386..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gb-nir.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gb-sct.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gb-sct.png deleted file mode 100644 index 95dd4f4..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gb-sct.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gb-wls.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gb-wls.png deleted file mode 100644 index a10fe43..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gb-wls.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gb.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gb.png deleted file mode 100644 index 8bffe4e..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gb.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gd.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gd.png deleted file mode 100644 index 3d1dc86..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gd.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ge.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ge.png deleted file mode 100644 index e19f689..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ge.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gf.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gf.png deleted file mode 100644 index 03b92f9..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gf.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gg.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gg.png deleted file mode 100644 index 7eb8b17..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gg.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gh.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gh.png deleted file mode 100644 index 9031733..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gh.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gi.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gi.png deleted file mode 100644 index d96bfdb..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gi.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gl.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gl.png deleted file mode 100644 index c9f2504..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gl.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gm.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gm.png deleted file mode 100644 index 5c4f1e7..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gm.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gn.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gn.png deleted file mode 100644 index bd100e9..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gn.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gp.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gp.png deleted file mode 100644 index 404b667..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gp.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gq.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gq.png deleted file mode 100644 index 159cee8..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gq.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gr.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gr.png deleted file mode 100644 index 7d782b1..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gr.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gs.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gs.png deleted file mode 100644 index f17c180..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gs.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gt.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gt.png deleted file mode 100644 index 463b40d..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gt.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gu.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gu.png deleted file mode 100644 index d7c8b85..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gu.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gw.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gw.png deleted file mode 100644 index 9f5266f..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gw.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gy.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gy.png deleted file mode 100644 index 0ad22a7..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/gy.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/hk.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/hk.png deleted file mode 100644 index 375395c..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/hk.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/hm.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/hm.png deleted file mode 100644 index 90cce12..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/hm.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/hn.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/hn.png deleted file mode 100644 index 3bedc54..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/hn.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/hr.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/hr.png deleted file mode 100644 index cfee4e4..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/hr.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ht.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ht.png deleted file mode 100644 index 048d613..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ht.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/hu.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/hu.png deleted file mode 100644 index 93d8a8f..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/hu.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/id.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/id.png deleted file mode 100644 index 3efe836..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/id.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ie.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ie.png deleted file mode 100644 index ae04602..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ie.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/il.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/il.png deleted file mode 100644 index 0728e1b..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/il.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/im.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/im.png deleted file mode 100644 index 7cd7bfa..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/im.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/in.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/in.png deleted file mode 100644 index c0fd2a0..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/in.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/io.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/io.png deleted file mode 100644 index 71c045a..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/io.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/iq.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/iq.png deleted file mode 100644 index 2e529ab..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/iq.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ir.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ir.png deleted file mode 100644 index 6af8d63..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ir.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/is.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/is.png deleted file mode 100644 index e01f3da..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/is.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/it.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/it.png deleted file mode 100644 index c313486..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/it.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/je.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/je.png deleted file mode 100644 index 8f049c6..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/je.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/jm.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/jm.png deleted file mode 100644 index ad9acd9..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/jm.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/jo.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/jo.png deleted file mode 100644 index 7ba2ecc..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/jo.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/jp.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/jp.png deleted file mode 100644 index c1b2f26..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/jp.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ke.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ke.png deleted file mode 100644 index 4c8ae0b..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ke.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kg.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kg.png deleted file mode 100644 index a65c900..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kg.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kh.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kh.png deleted file mode 100644 index 55268b9..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kh.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ki.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ki.png deleted file mode 100644 index f000d34..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ki.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/km.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/km.png deleted file mode 100644 index bdd89a0..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/km.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kn.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kn.png deleted file mode 100644 index 5bdd1bd..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kn.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kp.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kp.png deleted file mode 100644 index 10bc580..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kp.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kr.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kr.png deleted file mode 100644 index d8642ca..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kr.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kw.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kw.png deleted file mode 100644 index e9f283a..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kw.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ky.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ky.png deleted file mode 100644 index ec337e4..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ky.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kz.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kz.png deleted file mode 100644 index ac3c0eb..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/kz.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/la.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/la.png deleted file mode 100644 index 5fc6bdf..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/la.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lb.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lb.png deleted file mode 100644 index f8bd972..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lb.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lc.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lc.png deleted file mode 100644 index f901fa7..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lc.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/li.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/li.png deleted file mode 100644 index 8d9246c..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/li.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lk.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lk.png deleted file mode 100644 index e5a30da..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lk.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lr.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lr.png deleted file mode 100644 index 6b4e8de..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lr.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ls.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ls.png deleted file mode 100644 index 257632f..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ls.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lt.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lt.png deleted file mode 100644 index d62b622..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lt.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lu.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lu.png deleted file mode 100644 index 0659461..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lu.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lv.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lv.png deleted file mode 100644 index 892b6d0..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/lv.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ly.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ly.png deleted file mode 100644 index 4ed1fec..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ly.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ma.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ma.png deleted file mode 100644 index 6dc87a6..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ma.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mc.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mc.png deleted file mode 100644 index a1ea537..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mc.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/md.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/md.png deleted file mode 100644 index 0c440b4..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/md.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/me.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/me.png deleted file mode 100644 index e591899..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/me.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mf.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mf.png deleted file mode 100644 index 8fe5ea4..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mf.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mg.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mg.png deleted file mode 100644 index c181ece..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mg.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mh.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mh.png deleted file mode 100644 index 8b38bc0..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mh.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mk.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mk.png deleted file mode 100644 index bb0c488..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mk.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ml.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ml.png deleted file mode 100644 index 70b7e8a..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ml.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mm.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mm.png deleted file mode 100644 index d533d86..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mm.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mn.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mn.png deleted file mode 100644 index dcecc72..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mn.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mo.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mo.png deleted file mode 100644 index cbf0a02..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mo.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mp.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mp.png deleted file mode 100644 index b2b13f2..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mp.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mq.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mq.png deleted file mode 100644 index 1e339f8..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mq.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mr.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mr.png deleted file mode 100644 index ccd0edf..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mr.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ms.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ms.png deleted file mode 100644 index 95c4d61..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ms.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mt.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mt.png deleted file mode 100644 index 7ca7378..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mt.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mu.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mu.png deleted file mode 100644 index 8dee394..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mu.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mv.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mv.png deleted file mode 100644 index 2850def..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mv.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mw.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mw.png deleted file mode 100644 index 8a43fd6..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mw.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mx.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mx.png deleted file mode 100644 index e04b9d7..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mx.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/my.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/my.png deleted file mode 100644 index 2d23b89..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/my.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mz.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mz.png deleted file mode 100644 index c360800..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/mz.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/na.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/na.png deleted file mode 100644 index 9a15ee1..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/na.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/nc.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/nc.png deleted file mode 100644 index 0e935d7..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/nc.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ne.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ne.png deleted file mode 100644 index 9b602d2..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ne.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/nf.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/nf.png deleted file mode 100644 index 05e5089..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/nf.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ng.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ng.png deleted file mode 100644 index 30ddc5f..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ng.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ni.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ni.png deleted file mode 100644 index 4bd0475..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ni.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/nl.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/nl.png deleted file mode 100644 index 724ae2f..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/nl.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/no.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/no.png deleted file mode 100644 index ae72a77..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/no.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/np.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/np.png deleted file mode 100644 index 3ecd78d..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/np.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/nr.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/nr.png deleted file mode 100644 index 983c5c1..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/nr.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/nu.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/nu.png deleted file mode 100644 index 13771aa..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/nu.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/nz.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/nz.png deleted file mode 100644 index d3ecec6..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/nz.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/om.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/om.png deleted file mode 100644 index a874081..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/om.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pa.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pa.png deleted file mode 100644 index 5d7efde..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pa.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pe.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pe.png deleted file mode 100644 index b64ad9c..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pe.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pf.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pf.png deleted file mode 100644 index 9828f06..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pf.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pg.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pg.png deleted file mode 100644 index db8ee16..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pg.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ph.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ph.png deleted file mode 100644 index 1c532d7..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ph.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pk.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pk.png deleted file mode 100644 index 1bc8e64..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pk.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pl.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pl.png deleted file mode 100644 index 9937d81..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pl.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pm.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pm.png deleted file mode 100644 index 986d041..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pm.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pn.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pn.png deleted file mode 100644 index da91edb..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pn.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pr.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pr.png deleted file mode 100644 index bdd1c9d..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pr.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ps.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ps.png deleted file mode 100644 index 0fd4a8f..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ps.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pt.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pt.png deleted file mode 100644 index ec73093..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pt.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pw.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pw.png deleted file mode 100644 index 8f97c9b..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/pw.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/py.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/py.png deleted file mode 100644 index f852e0b..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/py.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/qa.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/qa.png deleted file mode 100644 index a4e3f73..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/qa.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/re.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/re.png deleted file mode 100644 index 7607946..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/re.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ro.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ro.png deleted file mode 100644 index fde2356..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ro.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/rs.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/rs.png deleted file mode 100644 index 94980fd..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/rs.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ru.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ru.png deleted file mode 100644 index d24f786..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ru.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/rw.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/rw.png deleted file mode 100644 index ea08fbe..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/rw.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sa.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sa.png deleted file mode 100644 index caa18a5..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sa.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sb.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sb.png deleted file mode 100644 index 21b93e8..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sb.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sc.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sc.png deleted file mode 100644 index 3a1e558..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sc.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sd.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sd.png deleted file mode 100644 index 6234ed3..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sd.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/se.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/se.png deleted file mode 100644 index 1156f2f..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/se.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sg.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sg.png deleted file mode 100644 index 4a6e94b..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sg.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sh.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sh.png deleted file mode 100644 index 6590d02..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sh.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/si.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/si.png deleted file mode 100644 index 274cd50..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/si.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sj.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sj.png deleted file mode 100644 index ae72a77..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sj.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sk.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sk.png deleted file mode 100644 index 72b8f4a..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sk.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sl.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sl.png deleted file mode 100644 index 1010c07..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sl.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sm.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sm.png deleted file mode 100644 index 30c9a7e..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sm.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sn.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sn.png deleted file mode 100644 index a2f8197..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sn.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/so.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/so.png deleted file mode 100644 index 25b1e1e..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/so.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sr.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sr.png deleted file mode 100644 index daaf01b..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sr.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ss.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ss.png deleted file mode 100644 index 95c375c..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ss.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/st.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/st.png deleted file mode 100644 index caca63c..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/st.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sv.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sv.png deleted file mode 100644 index e5ca956..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sv.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sx.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sx.png deleted file mode 100644 index 4041b21..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sx.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sy.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sy.png deleted file mode 100644 index 4b9583a..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sy.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sz.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sz.png deleted file mode 100644 index 515edc6..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/sz.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tc.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tc.png deleted file mode 100644 index f66e54f..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tc.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/td.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/td.png deleted file mode 100644 index a1c978a..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/td.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tf.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tf.png deleted file mode 100644 index 72d7a9d..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tf.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tg.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tg.png deleted file mode 100644 index 5ccbeaf..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tg.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/th.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/th.png deleted file mode 100644 index 8a8153a..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/th.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tj.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tj.png deleted file mode 100644 index 1e43ecf..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tj.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tk.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tk.png deleted file mode 100644 index 939ebd8..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tk.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tl.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tl.png deleted file mode 100644 index 528bc82..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tl.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tm.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tm.png deleted file mode 100644 index 65ba21e..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tm.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tn.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tn.png deleted file mode 100644 index 836bbfe..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tn.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/to.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/to.png deleted file mode 100644 index af3c66e..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/to.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tr.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tr.png deleted file mode 100644 index 3848398..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tr.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tt.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tt.png deleted file mode 100644 index 76e5e84..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tt.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tv.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tv.png deleted file mode 100644 index 9c52a93..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tv.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tw.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tw.png deleted file mode 100644 index ea1c4bc..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tw.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tz.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tz.png deleted file mode 100644 index 9fa7dbc..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/tz.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ua.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ua.png deleted file mode 100644 index a2e58d1..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ua.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ug.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ug.png deleted file mode 100644 index 72e9898..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ug.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/um.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/um.png deleted file mode 100644 index 2083ae3..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/um.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/us.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/us.png deleted file mode 100644 index 2083ae3..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/us.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/uy.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/uy.png deleted file mode 100644 index 460cc88..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/uy.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/uz.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/uz.png deleted file mode 100644 index a4124a6..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/uz.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/va.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/va.png deleted file mode 100644 index b543bd2..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/va.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/vc.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/vc.png deleted file mode 100644 index 6ec6077..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/vc.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ve.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ve.png deleted file mode 100644 index 3de0f72..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ve.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/vg.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/vg.png deleted file mode 100644 index 39cc85d..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/vg.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/vi.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/vi.png deleted file mode 100644 index b186225..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/vi.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/vn.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/vn.png deleted file mode 100644 index 9ba2e9e..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/vn.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/vu.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/vu.png deleted file mode 100644 index 0bc8fa2..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/vu.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/wf.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/wf.png deleted file mode 100644 index db3b768..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/wf.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ws.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ws.png deleted file mode 100644 index 8003387..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ws.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/xk.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/xk.png deleted file mode 100644 index 1a6038d..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/xk.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ye.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ye.png deleted file mode 100644 index 1be6876..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/ye.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/yt.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/yt.png deleted file mode 100644 index 529ea74..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/yt.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/za.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/za.png deleted file mode 100644 index 994a276..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/za.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/zm.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/zm.png deleted file mode 100644 index 3c28da4..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/zm.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/zw.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/zw.png deleted file mode 100644 index ef397b5..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/flags-of-the-world/zw.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/fontawesome/LICENSE.txt b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/fontawesome/LICENSE.txt deleted file mode 100644 index 2784b8c..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/fontawesome/LICENSE.txt +++ /dev/null @@ -1,25 +0,0 @@ -# [Font Awesome v4.7.0](http://fontawesome.io) -### The iconic font and CSS framework - -Font Awesome is a full suite of 675 pictographic icons for easy scalable vector graphics on websites, -created and maintained by [Dave Gandy](https://twitter.com/davegandy). -Stay up to date with the latest release and announcements on Twitter: -[@fontawesome](http://twitter.com/fontawesome). - -Get started at http://fontawesome.io! - -## License -- The Font Awesome font is licensed under the SIL OFL 1.1: - - http://scripts.sil.org/OFL -- Font Awesome CSS, LESS, and Sass files are licensed under the MIT License: - - https://opensource.org/licenses/mit-license.html -- The Font Awesome documentation is licensed under the CC BY 3.0 License: - - http://creativecommons.org/licenses/by/3.0/ -- Attribution is no longer required as of Font Awesome 3.0, but much appreciated: - - `Font Awesome by Dave Gandy - http://fontawesome.io` -- Full details: http://fontawesome.io/license/ - -## Author -- Email: dave@fontawesome.io -- Twitter: http://twitter.com/davegandy -- GitHub: https://github.com/davegandy diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/fontawesome/fontawesome-defs.svg b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/fontawesome/fontawesome-defs.svg deleted file mode 100644 index 4e82bab..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/fontawesome/fontawesome-defs.svg +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/help16.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/help16.png deleted file mode 100644 index 32a8b44..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/help16.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_128.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_128.png deleted file mode 100644 index 8e97d69..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_128.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_16-loading.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_16-loading.png deleted file mode 100644 index 54d274e..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_16-loading.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_16-off.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_16-off.png deleted file mode 100644 index 28a7a2a..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_16-off.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_16.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_16.png deleted file mode 100644 index 2a175e9..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_16.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_32-loading.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_32-loading.png deleted file mode 100644 index ca3db7e..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_32-loading.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_32-off.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_32-off.png deleted file mode 100644 index 260df42..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_32-off.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_32.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_32.png deleted file mode 100644 index 6129518..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_32.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_64-loading.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_64-loading.png deleted file mode 100644 index abd0fba..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_64-loading.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_64-off.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_64-off.png deleted file mode 100644 index bbd881b..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_64-off.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_64.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_64.png deleted file mode 100644 index 139cb9d..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/icon_64.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/material-design.svg b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/material-design.svg deleted file mode 100644 index 3b5e727..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/material-design.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/photon.svg b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/photon.svg deleted file mode 100644 index e6c42d5..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/photon.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/ublock-defs.svg b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/ublock-defs.svg deleted file mode 100644 index dbc59a3..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/ublock-defs.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/ublock.svg b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/ublock.svg deleted file mode 100644 index ea2ffd3..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/img/ublock.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/is-webrtc-supported.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/is-webrtc-supported.html deleted file mode 100644 index d30b674..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/is-webrtc-supported.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/1p-filters.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/1p-filters.js deleted file mode 100644 index 70ce256..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/1p-filters.js +++ /dev/null @@ -1,386 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/* global CodeMirror, uBlockDashboard */ - -import './codemirror/ubo-static-filtering.js'; -import { dom, qs$ } from './dom.js'; -import { i18n$ } from './i18n.js'; -import { onBroadcast } from './broadcast.js'; - -/******************************************************************************/ - -const cmEditor = new CodeMirror(qs$('#userFilters'), { - autoCloseBrackets: true, - autofocus: true, - extraKeys: { - 'Ctrl-Space': 'autocomplete', - 'Tab': 'toggleComment', - }, - foldGutter: true, - gutters: [ - 'CodeMirror-linenumbers', - { className: 'CodeMirror-lintgutter', style: 'width: 11px' }, - ], - lineNumbers: true, - lineWrapping: true, - matchBrackets: true, - maxScanLines: 1, - styleActiveLine: { - nonEmpty: true, - }, -}); - -uBlockDashboard.patchCodeMirrorEditor(cmEditor); - -/******************************************************************************/ - -// Add auto-complete ability to the editor. Polling is used as the suggested -// hints also depend on the tabs currently opened. - -{ - let hintUpdateToken = 0; - - const getHints = async function() { - const hints = await vAPI.messaging.send('dashboard', { - what: 'getAutoCompleteDetails', - hintUpdateToken - }); - if ( hints instanceof Object === false ) { return; } - if ( hints.hintUpdateToken !== undefined ) { - cmEditor.setOption('uboHints', hints); - hintUpdateToken = hints.hintUpdateToken; - } - timer.on(2503); - }; - - const timer = vAPI.defer.create(( ) => { - getHints(); - }); - - getHints(); -} - -vAPI.messaging.send('dashboard', { - what: 'getTrustedScriptletTokens', -}).then(tokens => { - cmEditor.setOption('trustedScriptletTokens', tokens); -}); - -/******************************************************************************/ - -let originalState = { - enabled: true, - trusted: false, - filters: '', -}; - -function getCurrentState() { - const enabled = qs$('#enableMyFilters input').checked; - return { - enabled, - trusted: enabled && qs$('#trustMyFilters input').checked, - filters: getEditorText(), - }; -} - -function rememberCurrentState() { - originalState = getCurrentState(); -} - -function currentStateChanged() { - return JSON.stringify(getCurrentState()) !== JSON.stringify(originalState); -} - -function getEditorText() { - const text = cmEditor.getValue().replace(/\s+$/, ''); - return text === '' ? text : `${text}\n`; -} - -function setEditorText(text) { - cmEditor.setValue(text.replace(/\s+$/, '') + '\n\n'); -} - -/******************************************************************************/ - -function userFiltersChanged(details = {}) { - const changed = typeof details.changed === 'boolean' - ? details.changed - : self.hasUnsavedData(); - qs$('#userFiltersApply').disabled = !changed; - qs$('#userFiltersRevert').disabled = !changed; - const enabled = qs$('#enableMyFilters input').checked; - dom.attr('#trustMyFilters .input.checkbox', 'disabled', enabled ? null : ''); - const trustedbefore = cmEditor.getOption('trustedSource'); - const trustedAfter = enabled && qs$('#trustMyFilters input').checked; - if ( trustedAfter === trustedbefore ) { return; } - cmEditor.startOperation(); - cmEditor.setOption('trustedSource', trustedAfter); - const doc = cmEditor.getDoc(); - const history = doc.getHistory(); - const selections = doc.listSelections(); - doc.replaceRange(doc.getValue(), - { line: 0, ch: 0 }, - { line: doc.lineCount(), ch: 0 } - ); - doc.setSelections(selections); - doc.setHistory(history); - cmEditor.endOperation(); - cmEditor.focus(); -} - -/******************************************************************************/ - -// https://github.com/gorhill/uBlock/issues/3704 -// Merge changes to user filters occurring in the background with changes -// made in the editor. The code assumes that no deletion occurred in the -// background. - -function threeWayMerge(newContent) { - const prvContent = originalState.filters.trim().split(/\n/); - const differ = new self.diff_match_patch(); - const newChanges = differ.diff( - prvContent, - newContent.trim().split(/\n/) - ); - const usrChanges = differ.diff( - prvContent, - getEditorText().trim().split(/\n/) - ); - const out = []; - let i = 0, j = 0, k = 0; - while ( i < prvContent.length ) { - for ( ; j < newChanges.length; j++ ) { - const change = newChanges[j]; - if ( change[0] !== 1 ) { break; } - out.push(change[1]); - } - for ( ; k < usrChanges.length; k++ ) { - const change = usrChanges[k]; - if ( change[0] !== 1 ) { break; } - out.push(change[1]); - } - if ( k === usrChanges.length || usrChanges[k][0] !== -1 ) { - out.push(prvContent[i]); - } - i += 1; j += 1; k += 1; - } - for ( ; j < newChanges.length; j++ ) { - const change = newChanges[j]; - if ( change[0] !== 1 ) { continue; } - out.push(change[1]); - } - for ( ; k < usrChanges.length; k++ ) { - const change = usrChanges[k]; - if ( change[0] !== 1 ) { continue; } - out.push(change[1]); - } - return out.join('\n'); -} - -/******************************************************************************/ - -async function renderUserFilters(merge = false) { - const details = await vAPI.messaging.send('dashboard', { - what: 'readUserFilters', - }); - if ( details instanceof Object === false || details.error ) { return; } - - cmEditor.setOption('trustedSource', details.trusted); - - qs$('#enableMyFilters input').checked = details.enabled; - qs$('#trustMyFilters input').checked = details.trusted; - - const newContent = details.content.trim(); - - if ( merge && self.hasUnsavedData() ) { - setEditorText(threeWayMerge(newContent)); - userFiltersChanged({ changed: true }); - } else { - setEditorText(newContent); - userFiltersChanged({ changed: false }); - } - - rememberCurrentState(); -} - -/******************************************************************************/ - -function handleImportFilePicker(ev) { - const file = ev.target.files[0]; - if ( file === undefined || file.name === '' ) { return; } - if ( file.type.indexOf('text') !== 0 ) { return; } - const fr = new FileReader(); - fr.onload = function() { - if ( typeof fr.result !== 'string' ) { return; } - const content = uBlockDashboard.mergeNewLines(getEditorText(), fr.result); - cmEditor.operation(( ) => { - const cmPos = cmEditor.getCursor(); - setEditorText(content); - cmEditor.setCursor(cmPos); - cmEditor.focus(); - }); - }; - fr.readAsText(file); -} - -dom.on('#importFilePicker', 'change', handleImportFilePicker); - -function startImportFilePicker() { - const input = qs$('#importFilePicker'); - // Reset to empty string, this will ensure an change event is properly - // triggered if the user pick a file, even if it is the same as the last - // one picked. - input.value = ''; - input.click(); -} - -dom.on('#importUserFiltersFromFile', 'click', startImportFilePicker); - -/******************************************************************************/ - -function exportUserFiltersToFile() { - const val = getEditorText(); - if ( val === '' ) { return; } - const filename = i18n$('1pExportFilename') - .replace('{{datetime}}', uBlockDashboard.dateNowToSensibleString()) - .replace(/ +/g, '_'); - vAPI.download({ - 'url': `data:text/plain;charset=utf-8,${encodeURIComponent(val)}`, - 'filename': filename - }); -} - -/******************************************************************************/ - -async function applyChanges() { - const state = getCurrentState(); - const details = await vAPI.messaging.send('dashboard', { - what: 'writeUserFilters', - content: state.filters, - enabled: state.enabled, - trusted: state.trusted, - }); - if ( details instanceof Object === false || details.error ) { return; } - rememberCurrentState(); - userFiltersChanged({ changed: false }); - vAPI.messaging.send('dashboard', { - what: 'reloadAllFilters', - }); -} - -function revertChanges() { - qs$('#enableMyFilters input').checked = originalState.enabled; - qs$('#trustMyFilters input').checked = originalState.trusted; - setEditorText(originalState.filters); - userFiltersChanged(); -} - -/******************************************************************************/ - -function getCloudData() { - return getEditorText(); -} - -function setCloudData(data, append) { - if ( typeof data !== 'string' ) { return; } - if ( append ) { - data = uBlockDashboard.mergeNewLines(getEditorText(), data); - } - cmEditor.setValue(data); -} - -self.cloud.onPush = getCloudData; -self.cloud.onPull = setCloudData; - -/******************************************************************************/ - -self.wikilink = 'https://github.com/gorhill/uBlock/wiki/Dashboard:-My-filters'; - -self.hasUnsavedData = function() { - return currentStateChanged(); -}; - -/******************************************************************************/ - -// Handle user interaction -dom.on('#exportUserFiltersToFile', 'click', exportUserFiltersToFile); -dom.on('#userFiltersApply', 'click', ( ) => { applyChanges(); }); -dom.on('#userFiltersRevert', 'click', revertChanges); -dom.on('#enableMyFilters input', 'change', userFiltersChanged); -dom.on('#trustMyFilters input', 'change', userFiltersChanged); - -(async ( ) => { - await renderUserFilters(); - - cmEditor.clearHistory(); - - // https://github.com/gorhill/uBlock/issues/3706 - // Save/restore cursor position - { - const line = await vAPI.localStorage.getItemAsync('myFiltersCursorPosition'); - if ( typeof line === 'number' ) { - cmEditor.setCursor(line, 0); - } - cmEditor.focus(); - } - - // https://github.com/gorhill/uBlock/issues/3706 - // Save/restore cursor position - { - let curline = 0; - cmEditor.on('cursorActivity', ( ) => { - if ( timer.ongoing() ) { return; } - if ( cmEditor.getCursor().line === curline ) { return; } - timer.on(701); - }); - const timer = vAPI.defer.create(( ) => { - curline = cmEditor.getCursor().line; - vAPI.localStorage.setItem('myFiltersCursorPosition', curline); - }); - } - - // https://github.com/gorhill/uBlock/issues/3704 - // Merge changes to user filters occurring in the background - onBroadcast(msg => { - switch ( msg.what ) { - case 'userFiltersUpdated': { - cmEditor.startOperation(); - const scroll = cmEditor.getScrollInfo(); - const selections = cmEditor.listSelections(); - renderUserFilters(true).then(( ) => { - cmEditor.clearHistory(); - cmEditor.setSelection(selections[0].anchor, selections[0].head); - cmEditor.scrollTo(scroll.left, scroll.top); - cmEditor.endOperation(); - }); - break; - } - default: - break; - } - }); -})(); - -cmEditor.on('changes', userFiltersChanged); -CodeMirror.commands.save = applyChanges; - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/3p-filters.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/3p-filters.js deleted file mode 100644 index e551dcf..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/3p-filters.js +++ /dev/null @@ -1,906 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -import { dom, qs$, qsa$ } from './dom.js'; -import { i18n, i18n$ } from './i18n.js'; -import { onBroadcast } from './broadcast.js'; - -/******************************************************************************/ - -const lastUpdateTemplateString = i18n$('3pLastUpdate'); -const obsoleteTemplateString = i18n$('3pExternalListObsolete'); -const reValidExternalList = /^[a-z-]+:\/\/(?:\S+\/\S*|\/\S+)/m; -const recentlyUpdated = 1 * 60 * 60 * 1000; // 1 hour - -// https://eslint.org/docs/latest/rules/no-prototype-builtins -const hasOwnProperty = (o, p) => - Object.prototype.hasOwnProperty.call(o, p); - -let listsetDetails = {}; - -/******************************************************************************/ - -onBroadcast(msg => { - switch ( msg.what ) { - case 'assetUpdated': - updateAssetStatus(msg); - break; - case 'assetsUpdated': - dom.cl.remove(dom.body, 'updating'); - renderWidgets(); - break; - case 'staticFilteringDataChanged': - renderFilterLists(); - break; - default: - break; - } -}); - -/******************************************************************************/ - -const renderNumber = value => { - return value.toLocaleString(); -}; - -const listStatsTemplate = i18n$('3pListsOfBlockedHostsPerListStats'); - -const renderLeafStats = (used, total) => { - if ( isNaN(used) || isNaN(total) ) { return ''; } - return listStatsTemplate - .replace('{{used}}', renderNumber(used)) - .replace('{{total}}', renderNumber(total)); -}; - -const renderNodeStats = (used, total) => { - if ( isNaN(used) || isNaN(total) ) { return ''; } - return `${used.toLocaleString()}/${total.toLocaleString()}`; -}; - -const i18nGroupName = name => { - const groupname = i18n$('3pGroup' + name.charAt(0).toUpperCase() + name.slice(1)); - if ( groupname !== '' ) { return groupname; } - return `${name.charAt(0).toLocaleUpperCase}${name.slice(1)}`; -}; - -/******************************************************************************/ - -const renderFilterLists = ( ) => { - // Assemble a pretty list name if possible - const listNameFromListKey = listkey => { - const list = listsetDetails.current[listkey] || listsetDetails.available[listkey]; - const title = list && list.title || ''; - if ( title !== '' ) { return title; } - return listkey; - }; - - const initializeListEntry = (listDetails, listEntry) => { - const listkey = listEntry.dataset.key; - const groupkey = listDetails.group2 || listDetails.group; - const listEntryPrevious = - qs$(`[data-key="${groupkey}"] [data-key="${listkey}"]`); - if ( listEntryPrevious !== null ) { - if ( dom.cl.has(listEntryPrevious, 'checked') ) { - dom.cl.add(listEntry, 'checked'); - } - if ( dom.cl.has(listEntryPrevious, 'stickied') ) { - dom.cl.add(listEntry, 'stickied'); - } - if ( dom.cl.has(listEntryPrevious, 'toRemove') ) { - dom.cl.add(listEntry, 'toRemove'); - } - if ( dom.cl.has(listEntryPrevious, 'searchMatch') ) { - dom.cl.add(listEntry, 'searchMatch'); - } - } else { - dom.cl.toggle(listEntry, 'checked', listDetails.off !== true); - } - const on = dom.cl.has(listEntry, 'checked'); - dom.prop(qs$(listEntry, ':scope > .detailbar input'), 'checked', on); - let elem = qs$(listEntry, ':scope > .detailbar a.content'); - dom.attr(elem, 'href', 'asset-viewer.html?url=' + encodeURIComponent(listkey)); - dom.attr(elem, 'type', 'text/html'); - dom.cl.remove(listEntry, 'toRemove'); - if ( listDetails.supportName ) { - elem = qs$(listEntry, ':scope > .detailbar a.support'); - dom.attr(elem, 'href', listDetails.supportURL || '#'); - dom.attr(elem, 'title', listDetails.supportName); - } - if ( listDetails.external ) { - dom.cl.add(listEntry, 'external'); - } else { - dom.cl.remove(listEntry, 'external'); - } - if ( listDetails.instructionURL ) { - elem = qs$(listEntry, ':scope > .detailbar a.mustread'); - dom.attr(elem, 'href', listDetails.instructionURL || '#'); - } - dom.cl.toggle(listEntry, 'isDefault', - listDetails.isDefault === true || - listDetails.isImportant === true || - listkey === 'user-filters' - ); - elem = qs$(listEntry, '.leafstats'); - dom.text(elem, renderLeafStats(on ? listDetails.entryUsedCount : 0, listDetails.entryCount)); - // https://github.com/chrisaljoudi/uBlock/issues/104 - const asset = listsetDetails.cache[listkey] || {}; - const remoteURL = asset.remoteURL; - dom.cl.toggle(listEntry, 'unsecure', - typeof remoteURL === 'string' && remoteURL.lastIndexOf('http:', 0) === 0 - ); - dom.cl.toggle(listEntry, 'failed', asset.error !== undefined); - dom.cl.toggle(listEntry, 'obsolete', asset.obsolete === true); - const lastUpdateString = lastUpdateTemplateString.replace('{{ago}}', - i18n.renderElapsedTimeToString(asset.writeTime || 0) - ); - if ( asset.obsolete === true ) { - let title = obsoleteTemplateString; - if ( asset.cached && asset.writeTime !== 0 ) { - title += '\n' + lastUpdateString; - } - dom.attr(qs$(listEntry, ':scope > .detailbar .status.obsolete'), 'title', title); - } - if ( asset.cached === true ) { - dom.cl.add(listEntry, 'cached'); - dom.attr(qs$(listEntry, ':scope > .detailbar .status.cache'), 'title', lastUpdateString); - const timeSinceLastUpdate = Date.now() - asset.writeTime; - dom.cl.toggle(listEntry, 'recent', timeSinceLastUpdate < recentlyUpdated); - } else { - dom.cl.remove(listEntry, 'cached'); - } - }; - - const createListEntry = (listDetails, depth) => { - if ( listDetails.lists === undefined ) { - return dom.clone('#templates .listEntry[data-role="leaf"]'); - } - if ( depth !== 0 ) { - return dom.clone('#templates .listEntry[data-role="node"]'); - } - return dom.clone('#templates .listEntry[data-role="node"][data-parent="root"]'); - }; - - const createListEntries = (parentkey, listTree, depth = 0) => { - const listEntries = dom.clone('#templates .listEntries'); - const treeEntries = Object.entries(listTree); - if ( depth !== 0 ) { - const reEmojis = /\p{Emoji}+/gu; - treeEntries.sort((a ,b) => { - const ap = a[1].preferred === true; - const bp = b[1].preferred === true; - if ( ap !== bp ) { return ap ? -1 : 1; } - const as = (a[1].title || a[0]).replace(reEmojis, ''); - const bs = (b[1].title || b[0]).replace(reEmojis, ''); - return as.localeCompare(bs); - }); - } - for ( const [ listkey, listDetails ] of treeEntries ) { - const listEntry = createListEntry(listDetails, depth); - if ( dom.cl.has(dom.root, 'mobile') ) { - const leafStats = qs$(listEntry, '.leafstats'); - if ( leafStats ) { - listEntry.append(leafStats); - } - } - listEntry.dataset.key = listkey; - listEntry.dataset.parent = parentkey; - qs$(listEntry, ':scope > .detailbar .listname').append( - i18n.patchUnicodeFlags(listDetails.title) - ); - if ( listDetails.lists !== undefined ) { - listEntry.append(createListEntries(listEntry.dataset.key, listDetails.lists, depth+1)); - dom.cl.toggle(listEntry, 'expanded', listIsExpanded(listkey)); - updateListNode(listEntry); - } else { - initializeListEntry(listDetails, listEntry); - } - listEntries.append(listEntry); - } - return listEntries; - }; - - const onListsReceived = response => { - // Store in global variable - listsetDetails = response; - hashFromListsetDetails(); - - // Build list tree - const listTree = {}; - const groupKeys = [ - 'user', - 'default', - 'ads', - 'privacy', - 'malware', - 'multipurpose', - 'cookies', - 'social', - 'annoyances', - 'regions', - 'unknown', - 'custom' - ]; - for ( const key of groupKeys ) { - listTree[key] = { - title: i18nGroupName(key), - lists: {}, - }; - } - for ( const [ listkey, listDetails ] of Object.entries(response.available) ) { - let groupkey = listDetails.group2 || listDetails.group; - if ( hasOwnProperty(listTree, groupkey) === false ) { - groupkey = 'unknown'; - } - const groupDetails = listTree[groupkey]; - if ( listDetails.parent !== undefined ) { - let lists = groupDetails.lists; - for ( const parent of listDetails.parent.split('|') ) { - if ( lists[parent] === undefined ) { - lists[parent] = { title: parent, lists: {} }; - } - if ( listDetails.preferred === true ) { - lists[parent].preferred = true; - } - lists = lists[parent].lists; - } - lists[listkey] = listDetails; - } else { - listDetails.title = listNameFromListKey(listkey); - groupDetails.lists[listkey] = listDetails; - } - } - // https://github.com/uBlockOrigin/uBlock-issues/issues/3154#issuecomment-1975413427 - // Remove empty sections - for ( const groupkey of groupKeys ) { - const groupDetails = listTree[groupkey]; - if ( groupDetails === undefined ) { continue; } - if ( Object.keys(groupDetails.lists).length !== 0 ) { continue; } - delete listTree[groupkey]; - } - - const listEntries = createListEntries('root', listTree); - qs$('#lists .listEntries').replaceWith(listEntries); - - qs$('#autoUpdate').checked = listsetDetails.autoUpdate === true; - dom.text( - '#listsOfBlockedHostsPrompt', - i18n$('3pListsOfBlockedHostsPrompt') - .replace('{{netFilterCount}}', renderNumber(response.netFilterCount)) - .replace('{{cosmeticFilterCount}}', renderNumber(response.cosmeticFilterCount)) - ); - qs$('#parseCosmeticFilters').checked = - listsetDetails.parseCosmeticFilters === true; - qs$('#ignoreGenericCosmeticFilters').checked = - listsetDetails.ignoreGenericCosmeticFilters === true; - qs$('#suspendUntilListsAreLoaded').checked = - listsetDetails.suspendUntilListsAreLoaded === true; - - // https://github.com/gorhill/uBlock/issues/2394 - dom.cl.toggle(dom.body, 'updating', listsetDetails.isUpdating); - - renderWidgets(); - }; - - return vAPI.messaging.send('dashboard', { - what: 'getLists', - }).then(response => { - onListsReceived(response); - }); -}; - -/******************************************************************************/ - -const renderWidgets = ( ) => { - const updating = dom.cl.has(dom.body, 'updating'); - const hasObsolete = qs$('#lists .listEntry.checked.obsolete:not(.toRemove)') !== null; - dom.cl.toggle('#buttonApply', 'disabled', - filteringSettingsHash === hashFromCurrentFromSettings() - ); - dom.cl.toggle('#buttonUpdate', 'active', updating); - dom.cl.toggle('#buttonUpdate', 'disabled', - updating === false && hasObsolete === false - ); -}; - -/******************************************************************************/ - -const updateAssetStatus = details => { - const listEntry = qs$(`#lists .listEntry[data-key="${details.key}"]`); - if ( listEntry === null ) { return; } - dom.cl.toggle(listEntry, 'failed', !!details.failed); - dom.cl.toggle(listEntry, 'obsolete', !details.cached); - dom.cl.toggle(listEntry, 'cached', !!details.cached); - if ( details.cached ) { - dom.attr(qs$(listEntry, '.status.cache'), 'title', - lastUpdateTemplateString.replace('{{ago}}', i18n.renderElapsedTimeToString(Date.now())) - ); - dom.cl.add(listEntry, 'recent'); - } - updateAncestorListNodes(listEntry, ancestor => { - updateListNode(ancestor); - }); - renderWidgets(); -}; - -/******************************************************************************* - - Compute a hash from all the settings affecting how filter lists are loaded - in memory. - -**/ - -let filteringSettingsHash = ''; - -const hashFromListsetDetails = ( ) => { - const hashParts = [ - listsetDetails.parseCosmeticFilters === true, - listsetDetails.ignoreGenericCosmeticFilters === true, - ]; - const listHashes = []; - for ( const [ listkey, listDetails ] of Object.entries(listsetDetails.available) ) { - if ( listDetails.off === true ) { continue; } - listHashes.push(listkey); - } - hashParts.push( listHashes.sort().join(), '', false); - filteringSettingsHash = hashParts.join(); -}; - -const hashFromCurrentFromSettings = ( ) => { - const hashParts = [ - qs$('#parseCosmeticFilters').checked, - qs$('#ignoreGenericCosmeticFilters').checked, - ]; - const listHashes = []; - const listEntries = qsa$('#lists .listEntry[data-key]:not(.toRemove)'); - for ( const liEntry of listEntries ) { - if ( liEntry.dataset.role !== 'leaf' ) { continue; } - if ( dom.cl.has(liEntry, 'checked') === false ) { continue; } - listHashes.push(liEntry.dataset.key); - } - const textarea = qs$('#lists .listEntry[data-role="import"].expanded textarea'); - hashParts.push( - listHashes.sort().join(), - textarea !== null && textarea.value.trim() || '', - qs$('#lists .listEntry.toRemove') !== null - ); - return hashParts.join(); -}; - -/******************************************************************************/ - -const onListsetChanged = ev => { - const input = ev.target.closest('input'); - if ( input === null ) { return; } - toggleFilterList(input, input.checked, true); -}; - -dom.on('#lists', 'change', '.listEntry > .detailbar input', onListsetChanged); - -const toggleFilterList = (elem, on, ui = false) => { - const listEntry = elem.closest('.listEntry'); - if ( listEntry === null ) { return; } - if ( listEntry.dataset.parent === 'root' ) { return; } - const searchMode = dom.cl.has('#lists', 'searchMode'); - const input = qs$(listEntry, ':scope > .detailbar input'); - if ( on === undefined ) { - on = input.checked === false; - } - input.checked = on; - dom.cl.toggle(listEntry, 'checked', on); - dom.cl.toggle(listEntry, 'stickied', ui && !on && !searchMode); - // Select/unselect descendants. Twist: if in search-mode, select only - // search-matched descendants. - const childListEntries = searchMode - ? qsa$(listEntry, '.listEntry.searchMatch') - : qsa$(listEntry, '.listEntry'); - for ( const descendantList of childListEntries ) { - dom.cl.toggle(descendantList, 'checked', on); - qs$(descendantList, ':scope > .detailbar input').checked = on; - } - updateAncestorListNodes(listEntry, ancestor => { - updateListNode(ancestor); - }); - onFilteringSettingsChanged(); -}; - -const updateListNode = listNode => { - if ( listNode === null ) { return; } - if ( listNode.dataset.role !== 'node' ) { return; } - const checkedListLeaves = qsa$(listNode, '.listEntry[data-role="leaf"].checked'); - const allListLeaves = qsa$(listNode, '.listEntry[data-role="leaf"]'); - dom.text(qs$(listNode, '.nodestats'), - renderNodeStats(checkedListLeaves.length, allListLeaves.length) - ); - dom.cl.toggle(listNode, 'searchMatch', - qs$(listNode, ':scope > .listEntries > .listEntry.searchMatch') !== null - ); - if ( listNode.dataset.parent === 'root' ) { return; } - let usedFilterCount = 0; - let totalFilterCount = 0; - let isCached = false; - let isObsolete = false; - let latestWriteTime = 0; - let oldestWriteTime = Number.MAX_SAFE_INTEGER; - for ( const listLeaf of checkedListLeaves ) { - const listkey = listLeaf.dataset.key; - const listDetails = listsetDetails.available[listkey]; - usedFilterCount += listDetails.off ? 0 : listDetails.entryUsedCount || 0; - totalFilterCount += listDetails.entryCount || 0; - const assetCache = listsetDetails.cache[listkey] || {}; - isCached = isCached || dom.cl.has(listLeaf, 'cached'); - isObsolete = isObsolete || dom.cl.has(listLeaf, 'obsolete'); - latestWriteTime = Math.max(latestWriteTime, assetCache.writeTime || 0); - oldestWriteTime = Math.min(oldestWriteTime, assetCache.writeTime || Number.MAX_SAFE_INTEGER); - } - dom.cl.toggle(listNode, 'checked', checkedListLeaves.length !== 0); - dom.cl.toggle(qs$(listNode, ':scope > .detailbar .checkbox'), - 'partial', - checkedListLeaves.length !== allListLeaves.length - ); - dom.prop(qs$(listNode, ':scope > .detailbar input'), - 'checked', - checkedListLeaves.length !== 0 - ); - dom.text(qs$(listNode, '.leafstats'), - renderLeafStats(usedFilterCount, totalFilterCount) - ); - const firstLeaf = qs$(listNode, '.listEntry[data-role="leaf"]'); - if ( firstLeaf !== null ) { - dom.attr(qs$(listNode, ':scope > .detailbar a.support'), 'href', - dom.attr(qs$(firstLeaf, ':scope > .detailbar a.support'), 'href') || '#' - ); - dom.attr(qs$(listNode, ':scope > .detailbar a.mustread'), 'href', - dom.attr(qs$(firstLeaf, ':scope > .detailbar a.mustread'), 'href') || '#' - ); - } - dom.cl.toggle(listNode, 'cached', isCached); - dom.cl.toggle(listNode, 'obsolete', isObsolete); - if ( isCached ) { - dom.attr(qs$(listNode, ':scope > .detailbar .cache'), 'title', - lastUpdateTemplateString.replace('{{ago}}', i18n.renderElapsedTimeToString(latestWriteTime)) - ); - dom.cl.toggle(listNode, 'recent', (Date.now() - oldestWriteTime) < recentlyUpdated); - } - if ( qs$(listNode, '.listEntry.isDefault') !== null ) { - dom.cl.add(listNode, 'isDefault'); - } - if ( qs$(listNode, '.listEntry.stickied') !== null ) { - dom.cl.add(listNode, 'stickied'); - } -}; - -const updateAncestorListNodes = (listEntry, fn) => { - while ( listEntry !== null ) { - fn(listEntry); - listEntry = qs$(`.listEntry[data-key="${listEntry.dataset.parent}"]`); - } -}; - -/******************************************************************************/ - -const onFilteringSettingsChanged = ( ) => { - renderWidgets(); -}; - -dom.on('#parseCosmeticFilters', 'change', onFilteringSettingsChanged); -dom.on('#ignoreGenericCosmeticFilters', 'change', onFilteringSettingsChanged); -dom.on('#lists', 'input', '[data-role="import"] textarea', onFilteringSettingsChanged); - -/******************************************************************************/ - -const onRemoveExternalList = ev => { - const listEntry = ev.target.closest('[data-key]'); - if ( listEntry === null ) { return; } - dom.cl.toggle(listEntry, 'toRemove'); - renderWidgets(); -}; - -dom.on('#lists', 'click', '.listEntry .remove', onRemoveExternalList); - -/******************************************************************************/ - -const onPurgeClicked = ev => { - const liEntry = ev.target.closest('[data-key]'); - const listkey = liEntry.dataset.key || ''; - if ( listkey === '' ) { return; } - - const assetKeys = [ listkey ]; - for ( const listLeaf of qsa$(liEntry, '[data-role="leaf"]') ) { - assetKeys.push(listLeaf.dataset.key); - dom.cl.add(listLeaf, 'obsolete'); - dom.cl.remove(listLeaf, 'cached'); - } - - vAPI.messaging.send('dashboard', { - what: 'listsUpdateNow', - assetKeys, - preferOrigin: ev.shiftKey, - }); - - // If the cached version is purged, the installed version must be assumed - // to be obsolete. - // https://github.com/gorhill/uBlock/issues/1733 - // An external filter list must not be marked as obsolete, they will - // always be fetched anyways if there is no cached copy. - dom.cl.add(dom.body, 'updating'); - dom.cl.add(liEntry, 'obsolete'); - - if ( qs$(liEntry, 'input[type="checkbox"]').checked ) { - renderWidgets(); - } -}; - -dom.on('#lists', 'click', 'span.cache', onPurgeClicked); - -/******************************************************************************/ - -const selectFilterLists = async ( ) => { - // External filter lists to import - // Find stock list matching entries in lists to import - const toImport = (( ) => { - const textarea = qs$('#lists .listEntry[data-role="import"].expanded textarea'); - if ( textarea === null ) { return ''; } - const lists = listsetDetails.available; - const lines = textarea.value.split(/\s+/); - const after = []; - for ( const line of lines ) { - after.push(line); - if ( /^https?:\/\//.test(line) === false ) { continue; } - for ( const [ listkey, list ] of Object.entries(lists) ) { - if ( list.content !== 'filters' ) { continue; } - if ( list.contentURL === undefined ) { continue; } - if ( list.contentURL.includes(line) === false ) { continue; } - const groupkey = list.group2 || list.group; - const listEntry = qs$(`[data-key="${groupkey}"] [data-key="${listkey}"]`); - if ( listEntry === null ) { break; } - toggleFilterList(listEntry, true); - after.pop(); - break; - } - } - dom.cl.remove(textarea.closest('.expandable'), 'expanded'); - textarea.value = ''; - return after.join('\n'); - })(); - - // Cosmetic filtering switch - let checked = qs$('#parseCosmeticFilters').checked; - vAPI.messaging.send('dashboard', { - what: 'userSettings', - name: 'parseAllABPHideFilters', - value: checked, - }); - listsetDetails.parseCosmeticFilters = checked; - - checked = qs$('#ignoreGenericCosmeticFilters').checked; - vAPI.messaging.send('dashboard', { - what: 'userSettings', - name: 'ignoreGenericCosmeticFilters', - value: checked, - }); - listsetDetails.ignoreGenericCosmeticFilters = checked; - - // Filter lists to remove/select - const toSelect = []; - const toRemove = []; - for ( const liEntry of qsa$('#lists .listEntry[data-role="leaf"]') ) { - const listkey = liEntry.dataset.key; - if ( hasOwnProperty(listsetDetails.available, listkey) === false ) { - continue; - } - const listDetails = listsetDetails.available[listkey]; - if ( dom.cl.has(liEntry, 'toRemove') ) { - toRemove.push(listkey); - listDetails.off = true; - continue; - } - if ( dom.cl.has(liEntry, 'checked') ) { - toSelect.push(listkey); - listDetails.off = false; - } else { - listDetails.off = true; - } - } - - hashFromListsetDetails(); - - await vAPI.messaging.send('dashboard', { - what: 'applyFilterListSelection', - toSelect, - toImport, - toRemove, - }); -}; - -/******************************************************************************/ - -const buttonApplyHandler = async ( ) => { - await selectFilterLists(); - dom.cl.add(dom.body, 'working'); - dom.cl.remove('#lists .listEntry.stickied', 'stickied'); - renderWidgets(); - await vAPI.messaging.send('dashboard', { what: 'reloadAllFilters' }); - dom.cl.remove(dom.body, 'working'); -}; - -dom.on('#buttonApply', 'click', ( ) => { buttonApplyHandler(); }); - -/******************************************************************************/ - -const buttonUpdateHandler = async ( ) => { - dom.cl.remove('#lists .listEntry.stickied', 'stickied'); - await selectFilterLists(); - dom.cl.add(dom.body, 'updating'); - renderWidgets(); - vAPI.messaging.send('dashboard', { what: 'updateNow' }); -}; - -dom.on('#buttonUpdate', 'click', ( ) => { buttonUpdateHandler(); }); - -/******************************************************************************/ - -const userSettingCheckboxChanged = ( ) => { - const target = event.target; - vAPI.messaging.send('dashboard', { - what: 'userSettings', - name: target.id, - value: target.checked, - }); - listsetDetails[target.id] = target.checked; -}; - -dom.on('#autoUpdate', 'change', userSettingCheckboxChanged); -dom.on('#suspendUntilListsAreLoaded', 'change', userSettingCheckboxChanged); - -/******************************************************************************/ - -const searchFilterLists = ( ) => { - const pattern = dom.prop('.searchfield input', 'value') || ''; - dom.cl.toggle('#lists', 'searchMode', pattern !== ''); - if ( pattern === '' ) { return; } - const reflectSearchMatches = listEntry => { - if ( listEntry.dataset.role !== 'node' ) { return; } - dom.cl.toggle(listEntry, 'searchMatch', - qs$(listEntry, ':scope > .listEntries > .listEntry.searchMatch') !== null - ); - }; - const toI18n = tags => { - if ( tags === '' ) { return ''; } - return tags.toLowerCase().split(/\s+/).reduce((a, v) => { - let s = i18n$(v); - if ( s === '' ) { - s = i18nGroupName(v); - if ( s === '' ) { return a; } - } - return `${a} ${s}`.trim(); - }, ''); - }; - const re = new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'i'); - for ( const listEntry of qsa$('#lists [data-role="leaf"]') ) { - const listkey = listEntry.dataset.key; - const listDetails = listsetDetails.available[listkey]; - if ( listDetails === undefined ) { continue; } - let haystack = perListHaystack.get(listDetails); - if ( haystack === undefined ) { - const groupkey = listDetails.group2 || listDetails.group || ''; - haystack = [ - listDetails.title, - groupkey, - i18nGroupName(groupkey), - listDetails.tags || '', - toI18n(listDetails.tags || ''), - ].join(' ').trim(); - perListHaystack.set(listDetails, haystack); - } - dom.cl.toggle(listEntry, 'searchMatch', re.test(haystack)); - updateAncestorListNodes(listEntry, reflectSearchMatches); - } -}; - -const perListHaystack = new WeakMap(); - -dom.on('.searchfield input', 'input', searchFilterLists); - -/******************************************************************************/ - -const expandedListSet = new Set([ - 'cookies', - 'social', -]); - -const listIsExpanded = which => { - return expandedListSet.has(which); -}; - -const applyListExpansion = listkeys => { - if ( listkeys === undefined ) { - listkeys = Array.from(expandedListSet); - } - expandedListSet.clear(); - dom.cl.remove('#lists [data-role="node"]', 'expanded'); - listkeys.forEach(which => { - expandedListSet.add(which); - dom.cl.add(`#lists [data-key="${which}"]`, 'expanded'); - }); -}; - -const toggleListExpansion = which => { - const isExpanded = expandedListSet.has(which); - if ( which === '*' ) { - if ( isExpanded ) { - expandedListSet.clear(); - dom.cl.remove('#lists .expandable', 'expanded'); - dom.cl.remove('#lists .stickied', 'stickied'); - } else { - expandedListSet.clear(); - expandedListSet.add('*'); - dom.cl.add('#lists .rootstats', 'expanded'); - for ( const expandable of qsa$('#lists > .listEntries .expandable') ) { - const listkey = expandable.dataset.key || ''; - if ( listkey === '' ) { continue; } - expandedListSet.add(listkey); - dom.cl.add(expandable, 'expanded'); - } - } - } else { - if ( isExpanded ) { - expandedListSet.delete(which); - const listNode = qs$(`#lists > .listEntries [data-key="${which}"]`); - dom.cl.remove(listNode, 'expanded'); - if ( listNode.dataset.parent === 'root' ) { - dom.cl.remove(qsa$(listNode, '.stickied'), 'stickied'); - } - } else { - expandedListSet.add(which); - dom.cl.add(`#lists > .listEntries [data-key="${which}"]`, 'expanded'); - } - } - vAPI.localStorage.setItem('expandedListSet', Array.from(expandedListSet)); - vAPI.localStorage.removeItem('hideUnusedFilterLists'); -}; - -dom.on('#listsOfBlockedHostsPrompt', 'click', ( ) => { - toggleListExpansion('*'); -}); - -dom.on('#lists', 'click', '.listExpander', ev => { - const expandable = ev.target.closest('.expandable'); - if ( expandable === null ) { return; } - const which = expandable.dataset.key; - if ( which !== undefined ) { - toggleListExpansion(which); - } else { - dom.cl.toggle(expandable, 'expanded'); - if ( expandable.dataset.role === 'import' ) { - onFilteringSettingsChanged(); - } - } - ev.preventDefault(); -}); - -dom.on('#lists', 'click', '[data-parent="root"] > .detailbar .listname', ev => { - const listEntry = ev.target.closest('.listEntry'); - if ( listEntry === null ) { return; } - const listkey = listEntry.dataset.key; - if ( listkey === undefined ) { return; } - toggleListExpansion(listkey); - ev.preventDefault(); -}); - -dom.on('#lists', 'click', '[data-role="import"] > .detailbar .listname', ev => { - const expandable = ev.target.closest('.listEntry'); - if ( expandable === null ) { return; } - dom.cl.toggle(expandable, 'expanded'); - ev.preventDefault(); -}); - -dom.on('#lists', 'click', '.listEntry > .detailbar .nodestats', ev => { - const listEntry = ev.target.closest('.listEntry'); - if ( listEntry === null ) { return; } - const listkey = listEntry.dataset.key; - if ( listkey === undefined ) { return; } - toggleListExpansion(listkey); - ev.preventDefault(); -}); - -// Initialize from saved state. -vAPI.localStorage.getItemAsync('expandedListSet').then(listkeys => { - if ( Array.isArray(listkeys) === false ) { return; } - applyListExpansion(listkeys); -}); - -/******************************************************************************/ - -// Cloud storage-related. - -self.cloud.onPush = function toCloudData() { - const bin = { - parseCosmeticFilters: qs$('#parseCosmeticFilters').checked, - ignoreGenericCosmeticFilters: qs$('#ignoreGenericCosmeticFilters').checked, - selectedLists: [] - }; - - const liEntries = qsa$('#lists .listEntry.checked[data-role="leaf"]'); - for ( const liEntry of liEntries ) { - bin.selectedLists.push(liEntry.dataset.key); - } - - return bin; -}; - -self.cloud.onPull = function fromCloudData(data, append) { - if ( typeof data !== 'object' || data === null ) { return; } - - let elem = qs$('#parseCosmeticFilters'); - let checked = data.parseCosmeticFilters === true || append && elem.checked; - elem.checked = listsetDetails.parseCosmeticFilters = checked; - - elem = qs$('#ignoreGenericCosmeticFilters'); - checked = data.ignoreGenericCosmeticFilters === true || append && elem.checked; - elem.checked = listsetDetails.ignoreGenericCosmeticFilters = checked; - - const selectedSet = new Set(data.selectedLists); - for ( const listEntry of qsa$('#lists .listEntry[data-role="leaf"]') ) { - const listkey = listEntry.dataset.key; - const mustEnable = selectedSet.has(listkey); - selectedSet.delete(listkey); - if ( mustEnable === false && append ) { continue; } - toggleFilterList(listEntry, mustEnable); - } - - // If there are URL-like list keys left in the selected set, import them. - for ( const listkey of selectedSet ) { - if ( reValidExternalList.test(listkey) ) { continue; } - selectedSet.delete(listkey); - } - if ( selectedSet.size !== 0 ) { - const textarea = qs$('#lists .listEntry[data-role="import"] textarea'); - const lines = append - ? textarea.value.split(/[\n\r]+/) - : []; - lines.push(...selectedSet); - if ( lines.length !== 0 ) { lines.push(''); } - textarea.value = lines.join('\n'); - dom.cl.toggle('#lists .listEntry[data-role="import"]', 'expanded', textarea.value !== ''); - } - - renderWidgets(); -}; - -/******************************************************************************/ - -self.wikilink = 'https://github.com/gorhill/uBlock/wiki/Dashboard:-Filter-lists'; - -self.hasUnsavedData = function() { - return hashFromCurrentFromSettings() !== filteringSettingsHash; -}; - -/******************************************************************************/ - -renderFilterLists().then(( ) => { - const buttonUpdate = qs$('#buttonUpdate'); - if ( dom.cl.has(buttonUpdate, 'active') ) { return; } - if ( dom.cl.has(buttonUpdate, 'disabled') ) { return; } - if ( listsetDetails.autoUpdate !== true ) { return; } - buttonUpdateHandler(); -}); - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/about.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/about.js deleted file mode 100644 index 680fab1..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/about.js +++ /dev/null @@ -1,34 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -import { dom } from './dom.js'; - -/******************************************************************************/ - -(async ( ) => { - const appData = await vAPI.messaging.send('dashboard', { - what: 'getAppData', - }); - - dom.text('#aboutNameVer', appData.name + ' ' + appData.version); -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/advanced-settings.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/advanced-settings.js deleted file mode 100644 index c21346f..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/advanced-settings.js +++ /dev/null @@ -1,194 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2016-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/* global CodeMirror, uBlockDashboard */ - -'use strict'; - -import { dom, qs$ } from './dom.js'; - -/******************************************************************************/ - -let defaultSettings = new Map(); -let adminSettings = new Map(); -let beforeHash = ''; - -/******************************************************************************/ - -CodeMirror.defineMode('raw-settings', function() { - let lastSetting = ''; - - return { - token: function(stream) { - if ( stream.sol() ) { - stream.eatSpace(); - const match = stream.match(/\S+/); - if ( match !== null && defaultSettings.has(match[0]) ) { - lastSetting = match[0]; - return adminSettings.has(match[0]) - ? 'readonly keyword' - : 'keyword'; - } - stream.skipToEnd(); - return 'line-cm-error'; - } - stream.eatSpace(); - const match = stream.match(/.*$/); - if ( match !== null ) { - if ( match[0].trim() !== defaultSettings.get(lastSetting) ) { - return 'line-cm-strong'; - } - if ( adminSettings.has(lastSetting) ) { - return 'readonly'; - } - } - stream.skipToEnd(); - return null; - } - }; -}); - -const cmEditor = new CodeMirror(qs$('#advancedSettings'), { - autofocus: true, - lineNumbers: true, - lineWrapping: false, - styleActiveLine: true -}); - -uBlockDashboard.patchCodeMirrorEditor(cmEditor); - -/******************************************************************************/ - -const hashFromAdvancedSettings = function(raw) { - const aa = typeof raw === 'string' - ? arrayFromString(raw) - : arrayFromObject(raw); - aa.sort((a, b) => a[0].localeCompare(b[0])); - return JSON.stringify(aa); -}; - -/******************************************************************************/ - -const arrayFromObject = function(o) { - const out = []; - for ( const k in o ) { - if ( o.hasOwnProperty(k) === false ) { continue; } - out.push([ k, `${o[k]}` ]); - } - return out; -}; - -const arrayFromString = function(s) { - const out = []; - for ( let line of s.split(/[\n\r]+/) ) { - line = line.trim(); - if ( line === '' ) { continue; } - const pos = line.indexOf(' '); - let k, v; - if ( pos !== -1 ) { - k = line.slice(0, pos); - v = line.slice(pos + 1); - } else { - k = line; - v = ''; - } - out.push([ k.trim(), v.trim() ]); - } - return out; -}; - -/******************************************************************************/ - -const advancedSettingsChanged = (( ) => { - const handler = ( ) => { - const changed = hashFromAdvancedSettings(cmEditor.getValue()) !== beforeHash; - qs$('#advancedSettingsApply').disabled = !changed; - CodeMirror.commands.save = changed ? applyChanges : function(){}; - }; - - const timer = vAPI.defer.create(handler); - - return function() { - timer.offon(200); - }; -})(); - -cmEditor.on('changes', advancedSettingsChanged); - -/******************************************************************************/ - -const renderAdvancedSettings = async function(first) { - const details = await vAPI.messaging.send('dashboard', { - what: 'readHiddenSettings', - }); - defaultSettings = new Map(arrayFromObject(details.default)); - adminSettings = new Map(arrayFromObject(details.admin)); - beforeHash = hashFromAdvancedSettings(details.current); - const pretty = []; - const roLines = []; - const entries = arrayFromObject(details.current); - let max = 0; - for ( const [ k ] of entries ) { - if ( k.length > max ) { max = k.length; } - } - for ( let i = 0; i < entries.length; i++ ) { - const [ k, v ] = entries[i]; - pretty.push(' '.repeat(max - k.length) + `${k} ${v}`); - if ( adminSettings.has(k) ) { - roLines.push(i); - } - } - pretty.push(''); - cmEditor.setValue(pretty.join('\n')); - if ( first ) { - cmEditor.clearHistory(); - } - for ( const line of roLines ) { - cmEditor.markText( - { line, ch: 0 }, - { line: line + 1, ch: 0 }, - { readOnly: true } - ); - } - advancedSettingsChanged(); - cmEditor.focus(); -}; - -/******************************************************************************/ - -const applyChanges = async function() { - await vAPI.messaging.send('dashboard', { - what: 'writeHiddenSettings', - content: cmEditor.getValue(), - }); - renderAdvancedSettings(); -}; - -/******************************************************************************/ - -dom.on('#advancedSettings', 'input', advancedSettingsChanged); -dom.on('#advancedSettingsApply', 'click', ( ) => { - applyChanges(); -}); - -renderAdvancedSettings(true); - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/asset-viewer.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/asset-viewer.js deleted file mode 100644 index 351531b..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/asset-viewer.js +++ /dev/null @@ -1,113 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/* global CodeMirror, uBlockDashboard */ - -'use strict'; - -/******************************************************************************/ - -import { dom, qs$ } from './dom.js'; -import './codemirror/ubo-static-filtering.js'; - -/******************************************************************************/ - -(async ( ) => { - const subscribeURL = new URL(document.location); - const subscribeParams = subscribeURL.searchParams; - const assetKey = subscribeParams.get('url'); - if ( assetKey === null ) { return; } - - const subscribeElem = subscribeParams.get('subscribe') !== null - ? qs$('#subscribe') - : null; - if ( subscribeElem !== null && subscribeURL.hash !== '#subscribed' ) { - const title = subscribeParams.get('title'); - const promptElem = qs$('#subscribePrompt'); - dom.text(promptElem.children[0], title); - const a = promptElem.children[1]; - dom.text(a, assetKey); - dom.attr(a, 'href', assetKey); - dom.cl.remove(subscribeElem, 'hide'); - } - - const cmEditor = new CodeMirror(qs$('#content'), { - autofocus: true, - foldGutter: true, - gutters: [ - 'CodeMirror-linenumbers', - { className: 'CodeMirror-lintgutter', style: 'width: 11px' }, - ], - lineNumbers: true, - lineWrapping: true, - matchBrackets: true, - maxScanLines: 1, - maximizable: false, - readOnly: true, - styleActiveLine: { - nonEmpty: true, - }, - }); - - uBlockDashboard.patchCodeMirrorEditor(cmEditor); - - vAPI.messaging.send('dashboard', { - what: 'getAutoCompleteDetails' - }).then(hints => { - if ( hints instanceof Object === false ) { return; } - cmEditor.setOption('uboHints', hints); - }); - - vAPI.messaging.send('dashboard', { - what: 'getTrustedScriptletTokens', - }).then(tokens => { - cmEditor.setOption('trustedScriptletTokens', tokens); - }); - - const details = await vAPI.messaging.send('default', { - what : 'getAssetContent', - url: assetKey, - }); - cmEditor.setOption('trustedSource', details.trustedSource === true); - cmEditor.setValue(details && details.content || ''); - - if ( subscribeElem !== null ) { - dom.on('#subscribeButton', 'click', ( ) => { - dom.cl.add(subscribeElem, 'hide'); - vAPI.messaging.send('scriptlets', { - what: 'applyFilterListSelection', - toImport: assetKey, - }).then(( ) => { - vAPI.messaging.send('scriptlets', { - what: 'reloadAllFilters' - }); - }); - }, { once: true }); - } - - if ( details.sourceURL ) { - const a = qs$('.cm-search-widget .sourceURL'); - dom.attr(a, 'href', details.sourceURL); - dom.attr(a, 'title', details.sourceURL); - } - - dom.cl.remove(dom.body, 'loading'); -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/assets.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/assets.js deleted file mode 100644 index e1bc4e6..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/assets.js +++ /dev/null @@ -1,1475 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -import µb from './background.js'; -import { broadcast } from './broadcast.js'; -import cacheStorage from './cachestorage.js'; -import { ubolog } from './console.js'; -import { i18n$ } from './i18n.js'; -import logger from './logger.js'; -import * as sfp from './static-filtering-parser.js'; -import { orphanizeString, } from './text-utils.js'; - -/******************************************************************************/ - -const reIsExternalPath = /^(?:[a-z-]+):\/\//; -const reIsUserAsset = /^user-/; -const errorCantConnectTo = i18n$('errorCantConnectTo'); -const MS_PER_HOUR = 60 * 60 * 1000; -const MS_PER_DAY = 24 * MS_PER_HOUR; -const MINUTES_PER_DAY = 24 * 60; -const EXPIRES_DEFAULT = 7; - -const assets = {}; - -// A hint for various pieces of code to take measures if possible to save -// bandwidth of remote servers. -let remoteServerFriendly = false; - -/******************************************************************************/ - -const stringIsNotEmpty = s => typeof s === 'string' && s !== ''; - -const parseExpires = s => { - const matches = s.match(/(\d+)\s*([wdhm]?)/i); - if ( matches === null ) { return; } - let updateAfter = parseInt(matches[1], 10); - if ( updateAfter === 0 ) { return; } - if ( matches[2] === 'w' ) { - updateAfter *= 7 * 24; - } else if ( matches[2] === 'h' ) { - updateAfter = Math.max(updateAfter, 4) / 24; - } else if ( matches[2] === 'm' ) { - updateAfter = Math.max(updateAfter, 240) / 1440; - } - return updateAfter; -}; - -const extractMetadataFromList = (content, fields) => { - const out = {}; - const head = content.slice(0, 1024); - for ( let field of fields ) { - field = field.replace(/\s+/g, '-'); - const re = new RegExp(`^(?:! *|# +)${field.replace(/-/g, '(?: +|-)')}: *(.+)$`, 'im'); - const match = re.exec(head); - let value = match && match[1].trim() || undefined; - if ( value !== undefined && value.startsWith('%') ) { - value = undefined; - } - field = field.toLowerCase().replace( - /-[a-z]/g, s => s.charAt(1).toUpperCase() - ); - out[field] = value && orphanizeString(value); - } - // Pre-process known fields - if ( out.lastModified ) { - out.lastModified = (new Date(out.lastModified)).getTime() || 0; - } - if ( out.expires ) { - out.expires = parseExpires(out.expires); - } - if ( out.diffExpires ) { - out.diffExpires = parseExpires(out.diffExpires); - } - return out; -}; -assets.extractMetadataFromList = extractMetadataFromList; - -const resourceTimeFromXhr = xhr => { - if ( typeof xhr.response !== 'string' ) { return 0; } - const metadata = extractMetadataFromList(xhr.response, [ - 'Last-Modified' - ]); - return metadata.lastModified || 0; -}; - -const resourceTimeFromParts = (parts, time) => { - const goodParts = parts.filter(part => typeof part === 'object'); - return goodParts.reduce((acc, part) => - ((part.resourceTime || 0) > acc ? part.resourceTime : acc), - time - ); -}; - -const resourceIsStale = (networkDetails, cacheDetails) => { - if ( typeof networkDetails.resourceTime !== 'number' ) { return false; } - if ( networkDetails.resourceTime === 0 ) { return false; } - if ( typeof cacheDetails.resourceTime !== 'number' ) { return false; } - if ( cacheDetails.resourceTime === 0 ) { return false; } - if ( networkDetails.resourceTime < cacheDetails.resourceTime ) { - ubolog(`Skip ${networkDetails.url}\n\tolder than ${cacheDetails.remoteURL}`); - return true; - } - return false; -}; - -const getUpdateAfterTime = (assetKey, diff = false) => { - const entry = assetCacheRegistry[assetKey]; - if ( entry ) { - if ( diff && typeof entry.diffExpires === 'number' ) { - return entry.diffExpires * MS_PER_DAY; - } - if ( typeof entry.expires === 'number' ) { - return entry.expires * MS_PER_DAY; - } - } - if ( assetSourceRegistry ) { - const entry = assetSourceRegistry[assetKey]; - if ( entry && typeof entry.updateAfter === 'number' ) { - return entry.updateAfter * MS_PER_DAY; - } - } - return EXPIRES_DEFAULT * MS_PER_DAY; // default to 7-day -}; - -const getWriteTime = assetKey => { - const entry = assetCacheRegistry[assetKey]; - if ( entry ) { return entry.writeTime || 0; } - return 0; -}; - -const isDiffUpdatableAsset = content => { - if ( typeof content !== 'string' ) { return false; } - const data = extractMetadataFromList(content, [ - 'Diff-Path', - ]); - return typeof data.diffPath === 'string' && - data.diffPath.startsWith('%') === false; -}; - -const computedPatchUpdateTime = assetKey => { - const entry = assetCacheRegistry[assetKey]; - if ( entry === undefined ) { return 0; } - if ( typeof entry.diffPath !== 'string' ) { return 0; } - if ( typeof entry.diffExpires !== 'number' ) { return 0; } - const match = /(\d+)\.(\d+)\.(\d+)\.(\d+)/.exec(entry.diffPath); - if ( match === null ) { return getWriteTime(); } - const date = new Date(); - date.setUTCFullYear( - parseInt(match[1], 10), - parseInt(match[2], 10) - 1, - parseInt(match[3], 10) - ); - date.setUTCHours(0, parseInt(match[4], 10) + entry.diffExpires * MINUTES_PER_DAY, 0, 0); - return date.getTime(); -}; - -/******************************************************************************/ - -// favorLocal: avoid making network requests whenever possible -// favorOrigin: avoid using CDN URLs whenever possible - -const getContentURLs = (assetKey, options = {}) => { - const contentURLs = []; - const entry = assetSourceRegistry[assetKey]; - if ( entry instanceof Object === false ) { return contentURLs; } - if ( typeof entry.contentURL === 'string' ) { - contentURLs.push(entry.contentURL); - } else if ( Array.isArray(entry.contentURL) ) { - contentURLs.push(...entry.contentURL); - } else if ( reIsExternalPath.test(assetKey) ) { - contentURLs.push(assetKey); - } - if ( options.favorLocal ) { - contentURLs.sort((a, b) => { - if ( reIsExternalPath.test(a) ) { return 1; } - if ( reIsExternalPath.test(b) ) { return -1; } - return 0; - }); - } - if ( options.favorOrigin !== true && Array.isArray(entry.cdnURLs) ) { - const cdnURLs = entry.cdnURLs.slice(); - for ( let i = 0, n = cdnURLs.length; i < n; i++ ) { - const j = Math.floor(Math.random() * n); - if ( j === i ) { continue; } - [ cdnURLs[j], cdnURLs[i] ] = [ cdnURLs[i], cdnURLs[j] ]; - } - if ( options.favorLocal ) { - contentURLs.push(...cdnURLs); - } else { - contentURLs.unshift(...cdnURLs); - } - } - return contentURLs; -}; - -/******************************************************************************/ - -const observers = []; - -assets.addObserver = function(observer) { - if ( observers.indexOf(observer) === -1 ) { - observers.push(observer); - } -}; - -assets.removeObserver = function(observer) { - let pos; - while ( (pos = observers.indexOf(observer)) !== -1 ) { - observers.splice(pos, 1); - } -}; - -const fireNotification = function(topic, details) { - let result; - for ( const observer of observers ) { - const r = observer(topic, details); - if ( r !== undefined ) { result = r; } - } - return result; -}; - -/******************************************************************************/ - -assets.fetch = function(url, options = {}) { - return new Promise((resolve, reject) => { - // Start of executor - - const timeoutAfter = µb.hiddenSettings.assetFetchTimeout || 30; - const xhr = new XMLHttpRequest(); - let contentLoaded = 0; - - const cleanup = function() { - xhr.removeEventListener('load', onLoadEvent); - xhr.removeEventListener('error', onErrorEvent); - xhr.removeEventListener('abort', onErrorEvent); - xhr.removeEventListener('progress', onProgressEvent); - timeoutTimer.off(); - }; - - const fail = function(details, msg) { - logger.writeOne({ - realm: 'message', - type: 'error', - text: msg, - }); - details.content = ''; - details.error = msg; - reject(details); - }; - - // https://github.com/gorhill/uMatrix/issues/15 - const onLoadEvent = function() { - cleanup(); - // xhr for local files gives status 0, but actually succeeds - const details = { - url, - statusCode: this.status || 200, - statusText: this.statusText || '' - }; - if ( details.statusCode < 200 || details.statusCode >= 300 ) { - return fail(details, `${url}: ${details.statusCode} ${details.statusText}`); - } - details.content = this.response; - details.resourceTime = resourceTimeFromXhr(this); - resolve(details); - }; - - const onErrorEvent = function() { - cleanup(); - fail({ url }, errorCantConnectTo.replace('{{msg}}', url)); - }; - - const onTimeout = function() { - xhr.abort(); - }; - - // https://github.com/gorhill/uBlock/issues/2526 - // - Timeout only when there is no progress. - const onProgressEvent = function(ev) { - if ( ev.loaded === contentLoaded ) { return; } - contentLoaded = ev.loaded; - timeoutTimer.offon({ sec: timeoutAfter }); - }; - - const timeoutTimer = vAPI.defer.create(onTimeout); - - // Be ready for thrown exceptions: - // I am pretty sure it used to work, but now using a URL such as - // `file:///` on Chromium 40 results in an exception being thrown. - try { - xhr.open('get', url, true); - xhr.addEventListener('load', onLoadEvent); - xhr.addEventListener('error', onErrorEvent); - xhr.addEventListener('abort', onErrorEvent); - xhr.addEventListener('progress', onProgressEvent); - xhr.responseType = options.responseType || 'text'; - xhr.send(); - timeoutTimer.on({ sec: timeoutAfter }); - } catch (e) { - onErrorEvent.call(xhr); - } - - // End of executor - }); -}; - -/******************************************************************************/ - -assets.fetchText = async function(url) { - const isExternal = reIsExternalPath.test(url); - let actualUrl = isExternal ? url : vAPI.getURL(url); - - // https://github.com/gorhill/uBlock/issues/2592 - // Force browser cache to be bypassed, but only for resources which have - // been fetched more than one hour ago. - // https://github.com/uBlockOrigin/uBlock-issues/issues/682#issuecomment-515197130 - // Provide filter list authors a way to completely bypass - // the browser cache. - // https://github.com/gorhill/uBlock/commit/048bfd251c9b#r37972005 - // Use modulo prime numbers to avoid generating the same token at the - // same time across different days. - // Do not bypass browser cache if we are asked to be gentle on remote - // servers. - if ( isExternal && remoteServerFriendly !== true ) { - const cacheBypassToken = - µb.hiddenSettings.updateAssetBypassBrowserCache - ? Math.floor(Date.now() / 1000) % 86413 - : Math.floor(Date.now() / 3600000) % 13; - const queryValue = `_=${cacheBypassToken}`; - if ( actualUrl.indexOf('?') === -1 ) { - actualUrl += '?'; - } else { - actualUrl += '&'; - } - actualUrl += queryValue; - } - - let details = { content: '' }; - try { - details = await assets.fetch(actualUrl); - - // Consider an empty result to be an error - if ( stringIsNotEmpty(details.content) === false ) { - details.content = ''; - } - - // We never download anything else than plain text: discard if - // response appears to be a HTML document: could happen when server - // serves some kind of error page for example. - const text = details.content.trim(); - if ( text.startsWith('<') && text.endsWith('>') ) { - details.content = ''; - details.error = 'assets.fetchText(): Not a text file'; - } - } catch(ex) { - details = ex; - } - - // We want to return the caller's URL, not our internal one which may - // differ from the caller's one. - details.url = url; - - return details; -}; - -/******************************************************************************/ - -// https://github.com/gorhill/uBlock/issues/3331 -// Support the seamless loading of sublists. - -assets.fetchFilterList = async function(mainlistURL) { - const toParsedURL = url => { - try { - return new URL(url.trim()); - } catch (ex) { - } - }; - - // https://github.com/NanoAdblocker/NanoCore/issues/239 - // Anything under URL's root directory is allowed to be fetched. The - // URL of a sublist will always be relative to the URL of the parent - // list (instead of the URL of the root list). - let rootDirectoryURL = toParsedURL( - reIsExternalPath.test(mainlistURL) - ? mainlistURL - : vAPI.getURL(mainlistURL) - ); - if ( rootDirectoryURL !== undefined ) { - const pos = rootDirectoryURL.pathname.lastIndexOf('/'); - if ( pos !== -1 ) { - rootDirectoryURL.pathname = - rootDirectoryURL.pathname.slice(0, pos + 1); - } else { - rootDirectoryURL = undefined; - } - } - - const sublistURLs = new Set(); - - // https://github.com/uBlockOrigin/uBlock-issues/issues/1113 - // Process only `!#include` directives which are not excluded by an - // `!#if` directive. - const processIncludeDirectives = function(results) { - const out = []; - const reInclude = /^!#include +(\S+)[^\n\r]*(?:[\n\r]+|$)/gm; - for ( const result of results ) { - if ( typeof result === 'string' ) { - out.push(result); - continue; - } - if ( result instanceof Object === false ) { continue; } - const content = result.content.trimEnd() + '\n'; - const slices = sfp.utils.preparser.splitter( - content, - vAPI.webextFlavor.env - ); - for ( let i = 0, n = slices.length - 1; i < n; i++ ) { - const slice = content.slice(slices[i+0], slices[i+1]); - if ( (i & 1) !== 0 ) { - out.push(slice); - continue; - } - let lastIndex = 0; - for (;;) { - if ( rootDirectoryURL === undefined ) { break; } - const match = reInclude.exec(slice); - if ( match === null ) { break; } - if ( toParsedURL(match[1]) !== undefined ) { continue; } - if ( match[1].indexOf('..') !== -1 ) { continue; } - // Compute nested list path relative to parent list path - const pos = result.url.lastIndexOf('/'); - if ( pos === -1 ) { continue; } - const subURL = result.url.slice(0, pos + 1) + match[1].trim(); - if ( sublistURLs.has(subURL) ) { continue; } - sublistURLs.add(subURL); - out.push( - slice.slice(lastIndex, match.index + match[0].length), - `! >>>>>>>> ${subURL}\n`, - assets.fetchText(subURL), - `! <<<<<<<< ${subURL}\n` - ); - lastIndex = reInclude.lastIndex; - } - out.push(lastIndex === 0 ? slice : slice.slice(lastIndex)); - } - } - return out; - }; - - // https://github.com/AdguardTeam/FiltersRegistry/issues/82 - // Not checking for `errored` status was causing repeated notifications - // to the caller. This can happen when more than one out of multiple - // sublists can't be fetched. - - let allParts = [ - this.fetchText(mainlistURL) - ]; - // Abort processing `include` directives if at least one included sublist - // can't be fetched. - let resourceTime = 0; - do { - allParts = await Promise.all(allParts); - const part = allParts - .find(part => typeof part === 'object' && part.error !== undefined); - if ( part !== undefined ) { - return { url: mainlistURL, content: '', error: part.error }; - } - resourceTime = resourceTimeFromParts(allParts, resourceTime); - // Skip pre-parser directives for diff-updatable assets - if ( allParts.length === 1 && allParts[0] instanceof Object ) { - if ( isDiffUpdatableAsset(allParts[0].content) ) { - allParts[0] = allParts[0].content; - break; - } - } - allParts = processIncludeDirectives(allParts); - } while ( allParts.some(part => typeof part !== 'string') ); - // If we reach this point, this means all fetches were successful. - return { - url: mainlistURL, - resourceTime, - content: allParts.length === 1 - ? allParts[0] - : allParts.join('') - }; -}; - -/******************************************************************************* - - The purpose of the asset source registry is to keep key detail information - about an asset: - - Where to load it from: this may consist of one or more URLs, either local - or remote. - - After how many days an asset should be deemed obsolete -- i.e. in need of - an update. - - The origin and type of an asset. - - The last time an asset was registered. - -**/ - -let assetSourceRegistryPromise; -let assetSourceRegistry = Object.create(null); - -function getAssetSourceRegistry() { - if ( assetSourceRegistryPromise === undefined ) { - assetSourceRegistryPromise = cacheStorage.get( - 'assetSourceRegistry' - ).then(bin => { - if ( bin instanceof Object ) { - if ( bin.assetSourceRegistry instanceof Object ) { - assetSourceRegistry = bin.assetSourceRegistry; - ubolog('Loaded assetSourceRegistry'); - return assetSourceRegistry; - } - } - return assets.fetchText( - µb.assetsBootstrapLocation || µb.assetsJsonPath - ).then(details => { - return details.content !== '' - ? details - : assets.fetchText(µb.assetsJsonPath); - }).then(details => { - updateAssetSourceRegistry(details.content, true); - ubolog('Loaded assetSourceRegistry'); - return assetSourceRegistry; - }); - }); - } - - return assetSourceRegistryPromise; -} - -function registerAssetSource(assetKey, newDict) { - const currentDict = assetSourceRegistry[assetKey] || {}; - for ( const [ k, v ] of Object.entries(newDict) ) { - if ( v === undefined || v === null ) { - delete currentDict[k]; - } else { - currentDict[k] = newDict[k]; - } - } - let contentURL = newDict.contentURL; - if ( contentURL !== undefined ) { - if ( typeof contentURL === 'string' ) { - contentURL = currentDict.contentURL = [ contentURL ]; - } else if ( Array.isArray(contentURL) === false ) { - contentURL = currentDict.contentURL = []; - } - let remoteURLCount = 0; - for ( let i = 0; i < contentURL.length; i++ ) { - if ( reIsExternalPath.test(contentURL[i]) ) { - remoteURLCount += 1; - } - } - currentDict.hasLocalURL = remoteURLCount !== contentURL.length; - currentDict.hasRemoteURL = remoteURLCount !== 0; - } else if ( currentDict.contentURL === undefined ) { - currentDict.contentURL = []; - } - if ( currentDict.submitter ) { - currentDict.submitTime = Date.now(); // To detect stale entries - } - assetSourceRegistry[assetKey] = currentDict; -} - -function unregisterAssetSource(assetKey) { - assetCacheRemove(assetKey); - delete assetSourceRegistry[assetKey]; -} - -const saveAssetSourceRegistry = (( ) => { - const save = ( ) => { - timer.off(); - cacheStorage.set({ assetSourceRegistry }); - }; - const timer = vAPI.defer.create(save); - return function(lazily) { - if ( lazily ) { - timer.offon(500); - } else { - save(); - } - }; -})(); - -async function assetSourceGetDetails(assetKey) { - await getAssetSourceRegistry(); - const entry = assetSourceRegistry[assetKey]; - if ( entry === undefined ) { return; } - return entry; -} - -function updateAssetSourceRegistry(json, silent = false) { - let newDict; - try { - newDict = JSON.parse(json); - newDict['assets.json'].defaultListset = - Array.from(Object.entries(newDict)) - .filter(a => a[1].content === 'filters' && a[1].off === undefined) - .map(a => a[0]); - } catch (ex) { - } - if ( newDict instanceof Object === false ) { return; } - - const oldDict = assetSourceRegistry; - - fireNotification('assets.json-updated', { newDict, oldDict }); - - // Remove obsolete entries (only those which were built-in). - for ( const assetKey in oldDict ) { - if ( - newDict[assetKey] === undefined && - oldDict[assetKey].submitter === undefined - ) { - unregisterAssetSource(assetKey); - } - } - // Add/update existing entries. Notify of new asset sources. - for ( const assetKey in newDict ) { - if ( oldDict[assetKey] === undefined && !silent ) { - fireNotification( - 'builtin-asset-source-added', - { assetKey: assetKey, entry: newDict[assetKey] } - ); - } - registerAssetSource(assetKey, newDict[assetKey]); - } - saveAssetSourceRegistry(); -} - -assets.registerAssetSource = async function(assetKey, details) { - await getAssetSourceRegistry(); - registerAssetSource(assetKey, details); - saveAssetSourceRegistry(true); -}; - -assets.unregisterAssetSource = async function(assetKey) { - await getAssetSourceRegistry(); - unregisterAssetSource(assetKey); - saveAssetSourceRegistry(true); -}; - -/******************************************************************************* - - The purpose of the asset cache registry is to keep track of all assets - which have been persisted into the local cache. - -**/ - -const assetCacheRegistryStartTime = Date.now(); -let assetCacheRegistryPromise; -let assetCacheRegistry = {}; - -function getAssetCacheRegistry() { - if ( assetCacheRegistryPromise !== undefined ) { - return assetCacheRegistryPromise; - } - assetCacheRegistryPromise = cacheStorage.get( - 'assetCacheRegistry' - ).then(bin => { - if ( bin instanceof Object === false ) { return; } - if ( bin.assetCacheRegistry instanceof Object === false ) { return; } - if ( Object.keys(assetCacheRegistry).length !== 0 ) { - return console.error('getAssetCacheRegistry(): assetCacheRegistry reassigned!'); - } - ubolog('Loaded assetCacheRegistry'); - assetCacheRegistry = bin.assetCacheRegistry; - }).then(( ) => - assetCacheRegistry - ); - return assetCacheRegistryPromise; -} - -const saveAssetCacheRegistry = (( ) => { - const save = ( ) => { - timer.off(); - return cacheStorage.set({ assetCacheRegistry }); - }; - const timer = vAPI.defer.create(save); - return (throttle = 0) => { - if ( throttle === 0 ) { - return save(); - } - timer.offon({ sec: throttle }); - }; -})(); - -async function assetCacheRead(assetKey, updateReadTime = false) { - const t0 = Date.now(); - const internalKey = `cache/${assetKey}`; - - const reportBack = function(content) { - if ( content instanceof Blob ) { content = ''; } - const details = { assetKey, content }; - if ( content === '' || content === undefined ) { - details.error = 'ENOTFOUND'; - } - return details; - }; - - const [ , bin ] = await Promise.all([ - getAssetCacheRegistry(), - cacheStorage.get(internalKey), - ]); - - if ( µb.readyToFilter !== true ) { - µb.supportStats.maxAssetCacheWait = Math.max( - Date.now() - t0, - parseInt(µb.supportStats.maxAssetCacheWait, 10) || 0 - ) + ' ms'; - } - - if ( bin instanceof Object === false ) { return reportBack(''); } - if ( bin.hasOwnProperty(internalKey) === false ) { return reportBack(''); } - - const entry = assetCacheRegistry[assetKey]; - if ( entry === undefined ) { return reportBack(''); } - - entry.readTime = Date.now(); - if ( updateReadTime ) { - saveAssetCacheRegistry(23); - } - - return reportBack(bin[internalKey]); -} - -async function assetCacheWrite(assetKey, content, options = {}) { - if ( content === '' || content === undefined ) { - return assetCacheRemove(assetKey); - } - - const cacheDict = await getAssetCacheRegistry(); - - const { resourceTime, url } = options; - const entry = cacheDict[assetKey] || {}; - entry.writeTime = entry.readTime = Date.now(); - entry.resourceTime = resourceTime || 0; - if ( typeof url === 'string' ) { - entry.remoteURL = url; - } - cacheDict[assetKey] = entry; - - await cacheStorage.set({ [`cache/${assetKey}`]: content }); - - saveAssetCacheRegistry(3); - - const result = { assetKey, content }; - // https://github.com/uBlockOrigin/uBlock-issues/issues/248 - if ( options.silent !== true ) { - fireNotification('after-asset-updated', result); - } - return result; -} - -async function assetCacheRemove(pattern, options = {}) { - const cacheDict = await getAssetCacheRegistry(); - const removedEntries = []; - const removedContent = []; - for ( const assetKey in cacheDict ) { - if ( pattern instanceof RegExp ) { - if ( pattern.test(assetKey) === false ) { continue; } - } else if ( typeof pattern === 'string' ) { - if ( assetKey !== pattern ) { continue; } - } - removedEntries.push(assetKey); - removedContent.push(`cache/${assetKey}`); - delete cacheDict[assetKey]; - } - if ( options.janitor && pattern instanceof RegExp ) { - const re = new RegExp( - pattern.source.replace(/^\^/, '^cache\\/'), - pattern.flags - ); - const keys = await cacheStorage.keys(re); - for ( const key of keys ) { - removedContent.push(key); - ubolog(`Removing stray ${key}`); - } - } - if ( removedContent.length !== 0 ) { - await Promise.all([ - cacheStorage.remove(removedContent), - cacheStorage.set({ assetCacheRegistry }), - ]); - } - for ( let i = 0; i < removedEntries.length; i++ ) { - fireNotification('after-asset-updated', { - assetKey: removedEntries[i] - }); - } -} - -async function assetCacheGetDetails(assetKey) { - const cacheDict = await getAssetCacheRegistry(); - const entry = cacheDict[assetKey]; - if ( entry === undefined ) { return; } - return entry; -} - -async function assetCacheSetDetails(assetKey, details) { - const cacheDict = await getAssetCacheRegistry(); - const entry = cacheDict[assetKey]; - if ( entry === undefined ) { return; } - let modified = false; - for ( const [ k, v ] of Object.entries(details) ) { - if ( v === undefined ) { - if ( entry[k] !== undefined ) { - delete entry[k]; - modified = true; - continue; - } - } - if ( v !== entry[k] ) { - entry[k] = v; - modified = true; - } - } - if ( modified ) { - saveAssetCacheRegistry(3); - } -} - -async function assetCacheMarkAsDirty(pattern, exclude) { - const cacheDict = await getAssetCacheRegistry(); - let mustSave = false; - for ( const assetKey in cacheDict ) { - if ( pattern instanceof RegExp ) { - if ( pattern.test(assetKey) === false ) { continue; } - } else if ( typeof pattern === 'string' ) { - if ( assetKey !== pattern ) { continue; } - } else if ( Array.isArray(pattern) ) { - if ( pattern.indexOf(assetKey) === -1 ) { continue; } - } - if ( exclude instanceof RegExp ) { - if ( exclude.test(assetKey) ) { continue; } - } else if ( typeof exclude === 'string' ) { - if ( assetKey === exclude ) { continue; } - } else if ( Array.isArray(exclude) ) { - if ( exclude.indexOf(assetKey) !== -1 ) { continue; } - } - const cacheEntry = cacheDict[assetKey]; - if ( !cacheEntry.writeTime ) { continue; } - cacheDict[assetKey].writeTime = 0; - mustSave = true; - } - if ( mustSave ) { - cacheStorage.set({ assetCacheRegistry }); - } -} - -/******************************************************************************* - - User assets are NOT persisted in the cache storage. User assets are - recognized by the asset key which always starts with 'user-'. - - TODO(seamless migration): - Can remove instances of old user asset keys when I am confident all users - are using uBO v1.11 and beyond. - -**/ - -/******************************************************************************* - - User assets are NOT persisted in the cache storage. User assets are - recognized by the asset key which always starts with 'user-'. - -**/ - -const readUserAsset = async function(assetKey) { - const bin = await vAPI.storage.get(assetKey); - const content = - bin instanceof Object && typeof bin[assetKey] === 'string' - ? bin[assetKey] - : ''; - return { assetKey, content }; -}; - -const saveUserAsset = function(assetKey, content) { - return vAPI.storage.set({ [assetKey]: content }).then(( ) => { - return { assetKey, content }; - }); -}; - -/******************************************************************************/ - -assets.get = async function(assetKey, options = {}) { - if ( assetKey === µb.userFiltersPath ) { - return readUserAsset(assetKey); - } - - let assetDetails = {}; - - const reportBack = (content, url = '', err = undefined) => { - const details = { assetKey, content }; - if ( err !== undefined ) { - details.error = assetDetails.lastError = err; - } else { - assetDetails.lastError = undefined; - } - if ( options.needSourceURL ) { - if ( - url === '' && - assetCacheRegistry instanceof Object && - assetCacheRegistry[assetKey] instanceof Object - ) { - details.sourceURL = assetCacheRegistry[assetKey].remoteURL; - } - if ( reIsExternalPath.test(url) ) { - details.sourceURL = url; - } - } - return details; - }; - - // Skip read-time property for non-updatable assets: the property is - // completely unused for such assets and thus there is no point incurring - // storage write overhead at launch when reading compiled or selfie assets. - const updateReadTime = /^(?:compiled|selfie)\//.test(assetKey) === false; - - const details = await assetCacheRead(assetKey, updateReadTime); - if ( details.content !== '' ) { - return reportBack(details.content); - } - - const assetRegistry = await getAssetSourceRegistry(); - - assetDetails = assetRegistry[assetKey] || {}; - - const contentURLs = getContentURLs(assetKey, options); - if ( contentURLs.length === 0 && reIsExternalPath.test(assetKey) ) { - assetDetails.content = 'filters'; - contentURLs.push(assetKey); - } - - let error = 'ENOTFOUND'; - for ( const contentURL of contentURLs ) { - const details = assetDetails.content === 'filters' - ? await assets.fetchFilterList(contentURL) - : await assets.fetchText(contentURL); - if ( details.error !== undefined ) { - error = details.error; - } - if ( details.content === '' ) { continue; } - if ( reIsExternalPath.test(contentURL) && options.dontCache !== true ) { - assetCacheWrite(assetKey, details.content, { - url: contentURL, - silent: options.silent === true, - }); - registerAssetSource(assetKey, { error: undefined }); - if ( assetDetails.content === 'filters' ) { - const metadata = extractMetadataFromList(details.content, [ - 'Last-Modified', - 'Expires', - 'Diff-Name', - 'Diff-Path', - 'Diff-Expires', - ]); - metadata.diffUpdated = undefined; - assetCacheSetDetails(assetKey, metadata); - } - } - return reportBack(details.content, contentURL); - } - if ( assetRegistry[assetKey] !== undefined ) { - registerAssetSource(assetKey, { - error: { time: Date.now(), error } - }); - } - return reportBack('', '', error); -}; - -/******************************************************************************/ - -async function getRemote(assetKey, options = {}) { - const [ - assetDetails = {}, - cacheDetails = {}, - ] = await Promise.all([ - assetSourceGetDetails(assetKey), - assetCacheGetDetails(assetKey), - ]); - - let error; - let stale = false; - - const reportBack = function(content, url = '', err = '') { - const details = { assetKey, content, url }; - if ( err !== '') { - details.error = assetDetails.lastError = err; - } else { - assetDetails.lastError = undefined; - } - return details; - }; - - for ( const contentURL of getContentURLs(assetKey, options) ) { - if ( reIsExternalPath.test(contentURL) === false ) { continue; } - - const result = assetDetails.content === 'filters' - ? await assets.fetchFilterList(contentURL) - : await assets.fetchText(contentURL); - - // Failure - if ( stringIsNotEmpty(result.content) === false ) { - error = result.statusText; - if ( result.statusCode === 0 ) { - error = 'network error'; - } - continue; - } - - error = undefined; - - // If fetched resource is older than cached one, ignore - if ( options.favorOrigin !== true ) { - stale = resourceIsStale(result, cacheDetails); - if ( stale ) { continue; } - } - - // Success - assetCacheWrite(assetKey, result.content, { - url: contentURL, - resourceTime: result.resourceTime || 0, - }); - - if ( assetDetails.content === 'filters' ) { - const metadata = extractMetadataFromList(result.content, [ - 'Last-Modified', - 'Expires', - 'Diff-Name', - 'Diff-Path', - 'Diff-Expires', - ]); - metadata.diffUpdated = undefined; - assetCacheSetDetails(assetKey, metadata); - } - - registerAssetSource(assetKey, { birthtime: undefined, error: undefined }); - return reportBack(result.content, contentURL); - } - - if ( error !== undefined ) { - registerAssetSource(assetKey, { error: { time: Date.now(), error } }); - return reportBack('', '', 'ENOTFOUND'); - } - - if ( stale ) { - assetCacheSetDetails(assetKey, { writeTime: cacheDetails.resourceTime }); - } - - return reportBack(''); -} - -/******************************************************************************/ - -assets.put = async function(assetKey, content) { - return reIsUserAsset.test(assetKey) - ? await saveUserAsset(assetKey, content) - : await assetCacheWrite(assetKey, content); -}; - -/******************************************************************************/ - -assets.toCache = async function(assetKey, content) { - return assetCacheWrite(assetKey, content); -}; - -assets.fromCache = async function(assetKey) { - const details = await assetCacheRead(assetKey); - return details && details.content; -}; - -/******************************************************************************/ - -assets.metadata = async function() { - await Promise.all([ - getAssetSourceRegistry(), - getAssetCacheRegistry(), - ]); - - const assetDict = JSON.parse(JSON.stringify(assetSourceRegistry)); - const cacheDict = assetCacheRegistry; - const now = Date.now(); - for ( const assetKey in assetDict ) { - const assetEntry = assetDict[assetKey]; - const cacheEntry = cacheDict[assetKey]; - if ( - assetEntry.content === 'filters' && - assetEntry.external !== true - ) { - assetEntry.isDefault = - assetEntry.off === undefined || - assetEntry.off === true && - µb.listMatchesEnvironment(assetEntry); - } - if ( cacheEntry ) { - assetEntry.cached = true; - assetEntry.writeTime = cacheEntry.writeTime; - const obsoleteAfter = cacheEntry.writeTime + getUpdateAfterTime(assetKey); - assetEntry.obsolete = obsoleteAfter < now; - assetEntry.remoteURL = cacheEntry.remoteURL; - if ( cacheEntry.diffUpdated ) { - assetEntry.diffUpdated = cacheEntry.diffUpdated; - } - } else if ( - assetEntry.contentURL && - assetEntry.contentURL.length !== 0 - ) { - assetEntry.writeTime = 0; - assetEntry.obsolete = true; - } - } - - return assetDict; -}; - -/******************************************************************************/ - -assets.purge = assetCacheMarkAsDirty; - -assets.remove = function(...args) { - return assetCacheRemove(...args); -}; - -assets.rmrf = function() { - return assetCacheRemove(/./); -}; - -/******************************************************************************/ - -assets.getUpdateAges = async function(conditions = {}) { - const assetDict = await assets.metadata(); - const now = Date.now(); - const out = []; - for ( const [ assetKey, asset ] of Object.entries(assetDict) ) { - if ( asset.hasRemoteURL !== true ) { continue; } - const tokens = conditions[asset.content]; - if ( Array.isArray(tokens) === false ) { continue; } - if ( tokens.includes('*') === false ) { - if ( tokens.includes(assetKey) === false ) { continue; } - } - const age = now - (asset.writeTime || 0); - out.push({ - assetKey, - age, - ageNormalized: age / Math.max(1, getUpdateAfterTime(assetKey)), - }); - } - return out; -}; - -/******************************************************************************/ - -// Asset updater area. -const updaterAssetDelayDefault = 120000; -const updaterUpdated = []; -const updaterFetched = new Set(); - -let updaterStatus; -let updaterAssetDelay = updaterAssetDelayDefault; -let updaterAuto = false; - -const getAssetDiffDetails = assetKey => { - const out = { assetKey }; - const cacheEntry = assetCacheRegistry[assetKey]; - if ( cacheEntry === undefined ) { return; } - out.patchPath = cacheEntry.diffPath; - if ( out.patchPath === undefined ) { return; } - const match = /#.+$/.exec(out.patchPath); - if ( match !== null ) { - out.diffName = match[0].slice(1); - } else { - out.diffName = cacheEntry.diffName; - } - if ( out.diffName === undefined ) { return; } - out.diffExpires = getUpdateAfterTime(assetKey, true); - out.lastModified = cacheEntry.lastModified; - out.writeTime = cacheEntry.writeTime; - const assetEntry = assetSourceRegistry[assetKey]; - if ( assetEntry === undefined ) { return; } - if ( assetEntry.content !== 'filters' ) { return; } - if ( Array.isArray(assetEntry.cdnURLs) ) { - out.cdnURLs = assetEntry.cdnURLs.slice(); - } else if ( reIsExternalPath.test(assetKey) ) { - out.cdnURLs = [ assetKey ]; - } else if ( typeof assetEntry.contentURL === 'string' ) { - out.cdnURLs = [ assetEntry.contentURL ]; - } else if ( Array.isArray(assetEntry.contentURL) ) { - out.cdnURLs = assetEntry.contentURL.slice(0).filter(url => - reIsExternalPath.test(url) - ); - } - if ( Array.isArray(out.cdnURLs) === false ) { return; } - if ( out.cdnURLs.length === 0 ) { return; } - return out; -}; - -async function diffUpdater() { - if ( updaterAuto === false ) { return; } - if ( µb.hiddenSettings.differentialUpdate === false ) { return; } - const toUpdate = await getUpdateCandidates(); - const now = Date.now(); - const toHardUpdate = []; - const toSoftUpdate = []; - while ( toUpdate.length !== 0 ) { - const assetKey = toUpdate.shift(); - const assetDetails = getAssetDiffDetails(assetKey); - if ( assetDetails === undefined ) { continue; } - assetDetails.what = 'update'; - const computedUpdateTime = computedPatchUpdateTime(assetKey); - if ( computedUpdateTime !== 0 && computedUpdateTime <= now ) { - assetDetails.fetch = true; - toHardUpdate.push(assetDetails); - } else { - assetDetails.fetch = false; - toSoftUpdate.push(assetDetails); - } - } - if ( toHardUpdate.length === 0 ) { return; } - ubolog('Diff updater: cycle start'); - return new Promise(resolve => { - let pendingOps = 0; - const bc = new globalThis.BroadcastChannel('diffUpdater'); - const terminate = error => { - worker.terminate(); - bc.close(); - resolve(); - if ( typeof error !== 'string' ) { return; } - ubolog(`Diff updater: terminate because ${error}`); - }; - const checkAndCorrectDiffPath = data => { - if ( typeof data.text !== 'string' ) { return; } - if ( data.text === '' ) { return; } - const metadata = extractMetadataFromList(data.text, [ 'Diff-Path' ]); - if ( metadata instanceof Object === false ) { return; } - if ( metadata.diffPath === data.patchPath ) { return; } - assetCacheSetDetails(data.assetKey, metadata); - }; - bc.onmessage = ev => { - const data = ev.data || {}; - if ( data.what === 'ready' ) { - ubolog('Diff updater: hard updating', toHardUpdate.map(v => v.assetKey).join()); - while ( toHardUpdate.length !== 0 ) { - const assetDetails = toHardUpdate.shift(); - assetDetails.fetch = true; - bc.postMessage(assetDetails); - pendingOps += 1; - } - return; - } - if ( data.what === 'broken' ) { - terminate(data.error); - return; - } - if ( data.status === 'needtext' ) { - ubolog('Diff updater: need text for', data.assetKey); - assetCacheRead(data.assetKey).then(result => { - data.text = result.content; - data.status = undefined; - checkAndCorrectDiffPath(data); - bc.postMessage(data); - }); - return; - } - if ( data.status === 'updated' ) { - ubolog(`Diff updater: successfully patched ${data.assetKey} using ${data.patchURL} (${data.patchSize})`); - const metadata = extractMetadataFromList(data.text, [ - 'Last-Modified', - 'Expires', - 'Diff-Name', - 'Diff-Path', - 'Diff-Expires', - ]); - assetCacheWrite(data.assetKey, data.text, { - resourceTime: metadata.lastModified || 0, - }); - metadata.diffUpdated = true; - assetCacheSetDetails(data.assetKey, metadata); - updaterUpdated.push(data.assetKey); - } else if ( data.error ) { - ubolog(`Diff updater: failed to update ${data.assetKey} using ${data.patchPath}\n\treason: ${data.error}`); - } else if ( data.status === 'nopatch-yet' || data.status === 'nodiff' ) { - ubolog(`Diff updater: skip update of ${data.assetKey} using ${data.patchPath}\n\treason: ${data.status}`); - assetCacheSetDetails(data.assetKey, { writeTime: data.writeTime }); - broadcast({ - what: 'assetUpdated', - key: data.assetKey, - cached: true, - }); - } else { - ubolog(`Diff updater: ${data.assetKey} / ${data.patchPath} / ${data.status}`); - } - pendingOps -= 1; - if ( pendingOps === 0 && toSoftUpdate.length !== 0 ) { - ubolog('Diff updater: soft updating', toSoftUpdate.map(v => v.assetKey).join()); - while ( toSoftUpdate.length !== 0 ) { - bc.postMessage(toSoftUpdate.shift()); - pendingOps += 1; - } - } - if ( pendingOps !== 0 ) { return; } - ubolog('Diff updater: cycle complete'); - terminate(); - }; - const worker = new Worker('js/diff-updater.js'); - }).catch(reason => { - ubolog(`Diff updater: ${reason}`); - }); -} - -function updateFirst() { - ubolog('Updater: cycle start'); - ubolog('Updater: prefer', updaterAuto ? 'CDNs' : 'origin'); - updaterStatus = 'updating'; - updaterFetched.clear(); - updaterUpdated.length = 0; - diffUpdater().catch(reason => { - ubolog(reason); - }).finally(( ) => { - updateNext(); - }); -} - -async function getUpdateCandidates() { - const [ assetDict, cacheDict ] = await Promise.all([ - getAssetSourceRegistry(), - getAssetCacheRegistry(), - ]); - const toUpdate = []; - for ( const assetKey in assetDict ) { - const assetEntry = assetDict[assetKey]; - if ( assetEntry.hasRemoteURL !== true ) { continue; } - if ( updaterFetched.has(assetKey) ) { continue; } - const cacheEntry = cacheDict[assetKey]; - if ( - fireNotification('before-asset-updated', { - assetKey, - type: assetEntry.content - }) === true - ) { - toUpdate.push(assetKey); - continue; - } - // This will remove a cached asset when it's no longer in use. - if ( cacheEntry && cacheEntry.readTime < assetCacheRegistryStartTime ) { - assetCacheRemove(assetKey); - } - } - // https://github.com/uBlockOrigin/uBlock-issues/issues/1165 - // Update most obsolete asset first. - toUpdate.sort((a, b) => { - const ta = cacheDict[a] !== undefined ? cacheDict[a].writeTime : 0; - const tb = cacheDict[b] !== undefined ? cacheDict[b].writeTime : 0; - return ta - tb; - }); - return toUpdate; -} - -async function updateNext() { - const toUpdate = await getUpdateCandidates(); - const now = Date.now(); - const toHardUpdate = []; - - while ( toUpdate.length !== 0 ) { - const assetKey = toUpdate.shift(); - const writeTime = getWriteTime(assetKey); - const updateDelay = getUpdateAfterTime(assetKey); - if ( (writeTime + updateDelay) > now ) { continue; } - toHardUpdate.push(assetKey); - } - if ( toHardUpdate.length === 0 ) { - return updateDone(); - } - - const assetKey = toHardUpdate.pop(); - updaterFetched.add(assetKey); - - // In auto-update context, be gentle on remote servers. - remoteServerFriendly = updaterAuto; - - let result; - if ( assetKey !== 'assets.json' || µb.hiddenSettings.debugAssetsJson !== true ) { - result = await getRemote(assetKey, { favorOrigin: updaterAuto === false }); - } else { - result = await assets.fetchText(µb.assetsJsonPath); - result.assetKey = 'assets.json'; - } - - remoteServerFriendly = false; - - if ( result.error ) { - ubolog(`Full updater: failed to update ${assetKey}`); - fireNotification('asset-update-failed', { assetKey: result.assetKey }); - } else { - ubolog(`Full updater: successfully updated ${assetKey}`); - updaterUpdated.push(result.assetKey); - if ( result.assetKey === 'assets.json' && result.content !== '' ) { - updateAssetSourceRegistry(result.content); - } - } - - updaterTimer.on(updaterAssetDelay); -} - -const updaterTimer = vAPI.defer.create(updateNext); - -function updateDone() { - const assetKeys = updaterUpdated.slice(0); - updaterFetched.clear(); - updaterUpdated.length = 0; - updaterStatus = undefined; - updaterAuto = false; - updaterAssetDelay = updaterAssetDelayDefault; - ubolog('Updater: cycle end'); - if ( assetKeys.length ) { - ubolog(`Updater: ${assetKeys.join()} were updated`); - } - fireNotification('after-assets-updated', { assetKeys }); -} - -assets.updateStart = function(details) { - const oldUpdateDelay = updaterAssetDelay; - const newUpdateDelay = typeof details.fetchDelay === 'number' - ? details.fetchDelay - : updaterAssetDelayDefault; - updaterAssetDelay = Math.min(oldUpdateDelay, newUpdateDelay); - updaterAuto = details.auto === true; - if ( updaterStatus !== undefined ) { - if ( newUpdateDelay < oldUpdateDelay ) { - updaterTimer.offon(updaterAssetDelay); - } - return; - } - updateFirst(); -}; - -assets.updateStop = function() { - updaterTimer.off(); - if ( updaterStatus !== undefined ) { - updateDone(); - } -}; - -assets.isUpdating = function() { - return updaterStatus === 'updating' && - updaterAssetDelay <= µb.hiddenSettings.manualUpdateAssetFetchPeriod; -}; - -/******************************************************************************/ - -export default assets; - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/background.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/background.js deleted file mode 100644 index edeac08..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/background.js +++ /dev/null @@ -1,401 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/******************************************************************************/ - -import { - domainFromHostname, - hostnameFromURI, - originFromURI, -} from './uri-utils.js'; - -import { FilteringContext } from './filtering-context.js'; -import logger from './logger.js'; -import { ubologSet } from './console.js'; - -/******************************************************************************/ - -// Not all platforms may have properly declared vAPI.webextFlavor. - -if ( vAPI.webextFlavor === undefined ) { - vAPI.webextFlavor = { major: 0, soup: new Set([ 'ublock' ]) }; -} - -/******************************************************************************/ - -const hiddenSettingsDefault = { - allowGenericProceduralFilters: false, - assetFetchTimeout: 30, - autoCommentFilterTemplate: '{{date}} {{origin}}', - autoUpdateAssetFetchPeriod: 5, - autoUpdateDelayAfterLaunch: 37, - autoUpdatePeriod: 1, - benchmarkDatasetURL: 'unset', - blockingProfiles: '11111/#F00 11010/#C0F 11001/#00F 00001', - cacheStorageCompression: true, - cacheStorageCompressionThreshold: 65536, - cacheStorageMultithread: 2, - cacheControlForFirefox1376932: 'no-cache, no-store, must-revalidate', - cloudStorageCompression: true, - cnameIgnoreList: 'unset', - cnameIgnore1stParty: true, - cnameIgnoreExceptions: true, - cnameIgnoreRootDocument: true, - cnameMaxTTL: 120, - cnameReplayFullURL: false, - cnameUncloakProxied: false, - consoleLogLevel: 'unset', - debugAssetsJson: false, - debugScriptlets: false, - debugScriptletInjector: false, - differentialUpdate: true, - disableWebAssembly: false, - extensionUpdateForceReload: false, - filterAuthorMode: false, - loggerPopupType: 'popup', - manualUpdateAssetFetchPeriod: 500, - modifyWebextFlavor: 'unset', - popupFontSize: 'unset', - popupPanelDisabledSections: 0, - popupPanelHeightMode: 0, - popupPanelLockedSections: 0, - popupPanelOrientation: 'unset', - requestJournalProcessPeriod: 1000, - requestStatsDisabled: false, - selfieDelayInSeconds: 53, - strictBlockingBypassDuration: 120, - toolbarWarningTimeout: 60, - trustedListPrefixes: 'ublock-', - uiPopupConfig: 'unset', - uiStyles: 'unset', - updateAssetBypassBrowserCache: false, - userResourcesLocation: 'unset', -}; - -if ( vAPI.webextFlavor.soup.has('devbuild') ) { - hiddenSettingsDefault.consoleLogLevel = 'info'; - hiddenSettingsDefault.cacheStorageAPI = 'unset'; - ubologSet(true); -} - -const userSettingsDefault = { - advancedUserEnabled: false, - alwaysDetachLogger: true, - autoUpdate: true, - cloudStorageEnabled: false, - cnameUncloakEnabled: true, - collapseBlocked: true, - colorBlindFriendly: false, - contextMenuEnabled: true, - uiAccentCustom: false, - uiAccentCustom0: '#aca0f7', - uiTheme: 'auto', - externalLists: '', - firewallPaneMinimized: true, - hyperlinkAuditingDisabled: true, - ignoreGenericCosmeticFilters: false, - importedLists: [], - largeMediaSize: 50, - parseAllABPHideFilters: true, - popupPanelSections: 0b111, - prefetchingDisabled: true, - requestLogMaxEntries: 1000, - showIconBadge: true, - suspendUntilListsAreLoaded: vAPI.Net.canSuspend(), - tooltipsDisabled: false, - userFiltersTrusted: false, - webrtcIPAddressHidden: false, -}; - -const dynamicFilteringDefault = [ - 'behind-the-scene * * noop', - 'behind-the-scene * image noop', - 'behind-the-scene * 3p noop', - 'behind-the-scene * inline-script noop', - 'behind-the-scene * 1p-script noop', - 'behind-the-scene * 3p-script noop', - 'behind-the-scene * 3p-frame noop', -]; - -const hostnameSwitchesDefault = [ - 'no-large-media: behind-the-scene false', -]; -// https://github.com/LiCybora/NanoDefenderFirefox/issues/196 -if ( vAPI.webextFlavor.soup.has('firefox') ) { - hostnameSwitchesDefault.push('no-csp-reports: * true'); -} - -const µBlock = { // jshint ignore:line - alarmQueue: [], - - userSettingsDefault, - userSettings: Object.assign({}, userSettingsDefault), - - hiddenSettingsDefault, - hiddenSettingsAdmin: {}, - hiddenSettings: Object.assign({}, hiddenSettingsDefault), - - dynamicFilteringDefault, - hostnameSwitchesDefault, - - noDashboard: false, - - // Features detection. - privacySettingsSupported: vAPI.browserSettings instanceof Object, - cloudStorageSupported: vAPI.cloud instanceof Object, - canFilterResponseData: typeof browser.webRequest.filterResponseData === 'function', - - // https://github.com/chrisaljoudi/uBlock/issues/180 - // Whitelist directives need to be loaded once the PSL is available - netWhitelist: new Map(), - netWhitelistModifyTime: 0, - netWhitelistDefault: [ - 'chrome-extension-scheme', - 'moz-extension-scheme', - ], - - requestStats: { - blockedCount: 0, - allowedCount: 0, - }, - - // Read-only - systemSettings: { - compiledMagic: 57, // Increase when compiled format changes - selfieMagic: 58, // Increase when selfie format changes - }, - - // https://github.com/uBlockOrigin/uBlock-issues/issues/759#issuecomment-546654501 - // The assumption is that cache storage state reflects whether - // compiled or selfie assets are available or not. The properties - // below is to no longer rely on this assumption -- though it's still - // not clear how the assumption could be wrong, and it's still not - // clear whether relying on those properties will really solve the - // issue. It's just an attempt at hardening. - compiledFormatChanged: false, - selfieIsInvalid: false, - - restoreBackupSettings: { - lastRestoreFile: '', - lastRestoreTime: 0, - lastBackupFile: '', - lastBackupTime: 0, - }, - - commandShortcuts: new Map(), - - // Allows to fully customize uBO's assets, typically set through admin - // settings. The content of 'assets.json' will also tell which filter - // lists to enable by default when uBO is first installed. - assetsBootstrapLocation: undefined, - - assetsJsonPath: vAPI.webextFlavor.soup.has('devbuild') - ? '/assets/assets.dev.json' - : '/assets/assets.json', - userFiltersPath: 'user-filters', - pslAssetKey: 'public_suffix_list.dat', - - selectedFilterLists: [], - availableFilterLists: {}, - badLists: new Map(), - - inMemoryFilters: [], - inMemoryFiltersCompiled: '', - - // https://github.com/uBlockOrigin/uBlock-issues/issues/974 - // This can be used to defer filtering decision-making. - readyToFilter: false, - - supportStats: { - allReadyAfter: '?', - maxAssetCacheWait: '?', - }, - - pageStores: new Map(), - pageStoresToken: 0, - - storageQuota: vAPI.storage.QUOTA_BYTES, - storageUsed: 0, - - noopFunc: function(){}, - - apiErrorCount: 0, - - maybeGoodPopup: { - tabId: 0, - url: '', - }, - - epickerArgs: { - eprom: null, - mouse: false, - target: '', - zap: false, - }, - - scriptlets: {}, - - cspNoInlineScript: "script-src 'unsafe-eval' * blob: data:", - cspNoScripting: 'script-src http: https:', - cspNoInlineFont: 'font-src *', - - liveBlockingProfiles: [], - blockingProfileColorCache: new Map(), - parsedTrustedListPrefixes: [], - uiAccentStylesheet: '', -}; - -µBlock.isReadyPromise = new Promise(resolve => { - µBlock.isReadyResolve = resolve; -}); - -µBlock.domainFromHostname = domainFromHostname; -µBlock.hostnameFromURI = hostnameFromURI; - -µBlock.FilteringContext = class extends FilteringContext { - duplicate() { - return (new µBlock.FilteringContext(this)); - } - - fromTabId(tabId) { - const tabContext = µBlock.tabContextManager.mustLookup(tabId); - this.tabOrigin = tabContext.origin; - this.tabHostname = tabContext.rootHostname; - this.tabDomain = tabContext.rootDomain; - this.tabId = tabContext.tabId; - return this; - } - - maybeFromDocumentURL(documentUrl) { - if ( documentUrl === undefined ) { return; } - if ( documentUrl.startsWith(this.tabOrigin) ) { return; } - this.tabOrigin = originFromURI(µBlock.normalizeTabURL(0, documentUrl)); - this.tabHostname = hostnameFromURI(this.tabOrigin); - this.tabDomain = domainFromHostname(this.tabHostname); - } - - // https://github.com/uBlockOrigin/uBlock-issues/issues/459 - // In case of a request for frame and if ever no context is specified, - // assume the origin of the context is the same as the request itself. - fromWebrequestDetails(details) { - const tabId = details.tabId; - this.type = details.type; - const isMainFrame = this.itype === this.MAIN_FRAME; - if ( isMainFrame && tabId > 0 ) { - µBlock.tabContextManager.push(tabId, details.url); - } - this.fromTabId(tabId); // Must be called AFTER tab context management - this.realm = ''; - this.setMethod(details.method); - this.setURL(details.url); - this.aliasURL = details.aliasURL || undefined; - this.redirectURL = undefined; - this.filter = undefined; - if ( this.itype !== this.SUB_FRAME ) { - this.docId = details.frameId; - this.frameId = -1; - } else { - this.docId = details.parentFrameId; - this.frameId = details.frameId; - } - if ( this.tabId > 0 ) { - if ( this.docId === 0 ) { - if ( isMainFrame === false ) { - this.maybeFromDocumentURL(details.documentUrl); - } - this.docOrigin = this.tabOrigin; - this.docHostname = this.tabHostname; - this.docDomain = this.tabDomain; - return this; - } - if ( details.documentUrl !== undefined ) { - this.setDocOriginFromURL(details.documentUrl); - return this; - } - const pageStore = µBlock.pageStoreFromTabId(this.tabId); - const docStore = pageStore && pageStore.getFrameStore(this.docId); - if ( docStore ) { - this.setDocOriginFromURL(docStore.rawURL); - } else { - this.setDocOrigin(this.tabOrigin); - } - return this; - } - if ( details.documentUrl !== undefined ) { - const origin = originFromURI( - µBlock.normalizeTabURL(0, details.documentUrl) - ); - this.setDocOrigin(origin).setTabOrigin(origin); - return this; - } - const origin = (this.itype & this.FRAME_ANY) !== 0 - ? originFromURI(this.url) - : this.tabOrigin; - this.setDocOrigin(origin).setTabOrigin(origin); - return this; - } - - getTabOrigin() { - if ( this.tabOrigin === undefined ) { - const tabContext = µBlock.tabContextManager.mustLookup(this.tabId); - this.tabOrigin = tabContext.origin; - this.tabHostname = tabContext.rootHostname; - this.tabDomain = tabContext.rootDomain; - } - return super.getTabOrigin(); - } - - toLogger() { - const details = { - tstamp: 0, - realm: this.realm, - method: this.getMethodName(), - type: this.stype, - tabId: this.tabId, - tabDomain: this.getTabDomain(), - tabHostname: this.getTabHostname(), - docDomain: this.getDocDomain(), - docHostname: this.getDocHostname(), - domain: this.getDomain(), - hostname: this.getHostname(), - url: this.url, - aliasURL: this.aliasURL, - filter: undefined, - }; - // Many filters may have been applied to the current context - if ( Array.isArray(this.filter) === false ) { - details.filter = this.filter; - return logger.writeOne(details); - } - for ( const filter of this.filter ) { - details.filter = filter; - logger.writeOne(details); - } - } -}; - -µBlock.filteringContext = new µBlock.FilteringContext(); - -self.µBlock = µBlock; - -/******************************************************************************/ - -export default µBlock; diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/base64-custom.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/base64-custom.js deleted file mode 100644 index 0d9a43f..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/base64-custom.js +++ /dev/null @@ -1,145 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -// Custom base64 codecs. These codecs are meant to encode/decode typed arrays -// to/from strings. - -// https://github.com/uBlockOrigin/uBlock-issues/issues/461 -// Provide a fallback encoding for Chromium 59 and less by issuing a plain -// JSON string. The fallback can be removed once min supported version is -// above 59. - -// TODO: rename µBlock.base64 to µBlock.SparseBase64, now that -// µBlock.DenseBase64 has been introduced. -// TODO: Should no longer need to test presence of TextEncoder/TextDecoder. - -const valToDigit = new Uint8Array(64); -const digitToVal = new Uint8Array(128); -{ - const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz@%'; - for ( let i = 0, n = chars.length; i < n; i++ ) { - const c = chars.charCodeAt(i); - valToDigit[i] = c; - digitToVal[c] = i; - } -} - -// The dense base64 codec is best for typed buffers which values are -// more random. For example, buffer contents as a result of compression -// contain less repetitive values and thus the content is more -// random-looking. - -// TODO: Investigate that in Firefox, creating a new Uint8Array from the -// ArrayBuffer fails, the content of the resulting Uint8Array is -// non-sensical. WASM-related? - -export const denseBase64 = { - magic: 'DenseBase64_1', - - encode: function(input) { - const m = input.length % 3; - const n = input.length - m; - let outputLength = n / 3 * 4; - if ( m !== 0 ) { - outputLength += m + 1; - } - const output = new Uint8Array(outputLength); - let j = 0; - for ( let i = 0; i < n; i += 3) { - const i1 = input[i+0]; - const i2 = input[i+1]; - const i3 = input[i+2]; - output[j+0] = valToDigit[ i1 >>> 2]; - output[j+1] = valToDigit[i1 << 4 & 0b110000 | i2 >>> 4]; - output[j+2] = valToDigit[i2 << 2 & 0b111100 | i3 >>> 6]; - output[j+3] = valToDigit[i3 & 0b111111 ]; - j += 4; - } - if ( m !== 0 ) { - const i1 = input[n]; - output[j+0] = valToDigit[i1 >>> 2]; - if ( m === 1 ) { // 1 value - output[j+1] = valToDigit[i1 << 4 & 0b110000]; - } else { // 2 values - const i2 = input[n+1]; - output[j+1] = valToDigit[i1 << 4 & 0b110000 | i2 >>> 4]; - output[j+2] = valToDigit[i2 << 2 & 0b111100 ]; - } - } - const textDecoder = new TextDecoder(); - const b64str = textDecoder.decode(output); - return this.magic + b64str; - }, - - decode: function(instr, arrbuf) { - if ( instr.startsWith(this.magic) === false ) { - throw new Error('Invalid µBlock.denseBase64 encoding'); - } - const outputLength = this.decodeSize(instr); - const outbuf = arrbuf instanceof ArrayBuffer === false - ? new Uint8Array(outputLength) - : new Uint8Array(arrbuf); - const inputLength = instr.length - this.magic.length; - let i = this.magic.length; - let j = 0; - const m = inputLength & 3; - const n = i + inputLength - m; - while ( i < n ) { - const i1 = digitToVal[instr.charCodeAt(i+0)]; - const i2 = digitToVal[instr.charCodeAt(i+1)]; - const i3 = digitToVal[instr.charCodeAt(i+2)]; - const i4 = digitToVal[instr.charCodeAt(i+3)]; - i += 4; - outbuf[j+0] = i1 << 2 | i2 >>> 4; - outbuf[j+1] = i2 << 4 & 0b11110000 | i3 >>> 2; - outbuf[j+2] = i3 << 6 & 0b11000000 | i4; - j += 3; - } - if ( m !== 0 ) { - const i1 = digitToVal[instr.charCodeAt(i+0)]; - const i2 = digitToVal[instr.charCodeAt(i+1)]; - outbuf[j+0] = i1 << 2 | i2 >>> 4; - if ( m === 3 ) { - const i3 = digitToVal[instr.charCodeAt(i+2)]; - outbuf[j+1] = i2 << 4 & 0b11110000 | i3 >>> 2; - } - } - return outbuf; - }, - - decodeSize: function(instr) { - if ( instr.startsWith(this.magic) === false ) { return 0; } - const inputLength = instr.length - this.magic.length; - const m = inputLength & 3; - const n = inputLength - m; - let outputLength = (n >>> 2) * 3; - if ( m !== 0 ) { - outputLength += m - 1; - } - return outputLength; - }, -}; - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/benchmarks.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/benchmarks.js deleted file mode 100644 index 9fdc6ec..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/benchmarks.js +++ /dev/null @@ -1,437 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -import cosmeticFilteringEngine from './cosmetic-filtering.js'; -import io from './assets.js'; -import scriptletFilteringEngine from './scriptlet-filtering.js'; -import staticNetFilteringEngine from './static-net-filtering.js'; -import µb from './background.js'; -import webRequest from './traffic.js'; -import { FilteringContext } from './filtering-context.js'; -import { LineIterator } from './text-utils.js'; -import { sessionFirewall } from './filtering-engines.js'; - -import { - domainFromHostname, - entityFromDomain, - hostnameFromURI, -} from './uri-utils.js'; - -/******************************************************************************/ - -// The requests.json.gz file can be downloaded from: -// https://cdn.cliqz.com/adblocking/requests_top500.json.gz -// -// Which is linked from: -// https://whotracks.me/blog/adblockers_performance_study.html -// -// Copy the file into ./tmp/requests.json.gz -// -// If the file is present when you build uBO using `make-[target].sh` from -// the shell, the resulting package will have `./assets/requests.json`, which -// will be looked-up by the method below to launch a benchmark session. -// -// From uBO's dev console, launch the benchmark: -// µBlock.staticNetFilteringEngine.benchmark(); -// -// The usual browser dev tools can be used to obtain useful profiling -// data, i.e. start the profiler, call the benchmark method from the -// console, then stop the profiler when it completes. -// -// Keep in mind that the measurements at the blog post above where obtained -// with ONLY EasyList. The CPU reportedly used was: -// https://www.cpubenchmark.net/cpu.php?cpu=Intel+Core+i7-6600U+%40+2.60GHz&id=2608 -// -// Rename ./tmp/requests.json.gz to something else if you no longer want -// ./assets/requests.json in the build. - -const loadBenchmarkDataset = (( ) => { - let datasetPromise; - - const ttlTimer = vAPI.defer.create(( ) => { - datasetPromise = undefined; - }); - - return async function() { - ttlTimer.offon({ min: 2 }); - - if ( datasetPromise !== undefined ) { - return datasetPromise; - } - - const datasetURL = µb.hiddenSettings.benchmarkDatasetURL; - if ( datasetURL === 'unset' ) { - console.info(`No benchmark dataset available.`); - return; - } - console.info(`Loading benchmark dataset...`); - datasetPromise = io.fetchText(datasetURL).then(details => { - console.info(`Parsing benchmark dataset...`); - let requests = []; - if ( details.content.startsWith('[') ) { - try { - requests = JSON.parse(details.content); - } catch(ex) { - } - } else { - const lineIter = new LineIterator(details.content); - const parsed = []; - while ( lineIter.eot() === false ) { - const line = lineIter.next().trim(); - if ( line === '' ) { continue; } - try { - parsed.push(JSON.parse(line)); - } catch(ex) { - parsed.length = 0; - break; - } - } - requests = parsed; - } - if ( requests.length === 0 ) { return; } - const out = []; - for ( const request of requests ) { - if ( request instanceof Object === false ) { continue; } - if ( !request.frameUrl || !request.url ) { continue; } - if ( request.cpt === 'document' ) { - request.cpt = 'main_frame'; - } else if ( request.cpt === 'xhr' ) { - request.cpt = 'xmlhttprequest'; - } - out.push(request); - } - return out; - }).catch(details => { - console.info(`Not found: ${details.url}`); - datasetPromise = undefined; - }); - - return datasetPromise; - }; -})(); - -/******************************************************************************/ - -// action: 1=test - -export async function benchmarkStaticNetFiltering(options = {}) { - const { target, redirectEngine } = options; - - const requests = await loadBenchmarkDataset(); - if ( Array.isArray(requests) === false || requests.length === 0 ) { - const text = 'No dataset found to benchmark'; - console.info(text); - return text; - } - - console.info(`Benchmarking staticNetFilteringEngine.matchRequest()...`); - - const fctxt = new FilteringContext(); - - if ( typeof target === 'number' ) { - const request = requests[target]; - fctxt.setURL(request.url); - fctxt.setDocOriginFromURL(request.frameUrl); - fctxt.setType(request.cpt); - const r = staticNetFilteringEngine.matchRequest(fctxt); - console.info(`Result=${r}:`); - console.info(`\ttype=${fctxt.type}`); - console.info(`\turl=${fctxt.url}`); - console.info(`\tdocOrigin=${fctxt.getDocOrigin()}`); - if ( r !== 0 ) { - console.info(staticNetFilteringEngine.toLogData()); - } - return; - } - - const t0 = performance.now(); - let matchCount = 0; - let blockCount = 0; - let allowCount = 0; - let redirectCount = 0; - let removeparamCount = 0; - let cspCount = 0; - let permissionsCount = 0; - let replaceCount = 0; - for ( let i = 0; i < requests.length; i++ ) { - const request = requests[i]; - fctxt.setURL(request.url); - fctxt.setDocOriginFromURL(request.frameUrl); - fctxt.setType(request.cpt); - staticNetFilteringEngine.redirectURL = undefined; - const r = staticNetFilteringEngine.matchRequest(fctxt); - matchCount += 1; - if ( r === 1 ) { blockCount += 1; } - else if ( r === 2 ) { allowCount += 1; } - if ( r !== 1 ) { - if ( staticNetFilteringEngine.transformRequest(fctxt) ) { - redirectCount += 1; - } - if ( fctxt.redirectURL !== undefined && staticNetFilteringEngine.hasQuery(fctxt) ) { - if ( staticNetFilteringEngine.filterQuery(fctxt, 'removeparam') ) { - removeparamCount += 1; - } - } - if ( fctxt.type === 'main_frame' || fctxt.type === 'sub_frame' ) { - if ( staticNetFilteringEngine.matchAndFetchModifiers(fctxt, 'csp') ) { - cspCount += 1; - } - if ( staticNetFilteringEngine.matchAndFetchModifiers(fctxt, 'permissions') ) { - permissionsCount += 1; - } - } - staticNetFilteringEngine.matchHeaders(fctxt, []); - if ( staticNetFilteringEngine.matchAndFetchModifiers(fctxt, 'replace') ) { - replaceCount += 1; - } - } else if ( redirectEngine !== undefined ) { - if ( staticNetFilteringEngine.redirectRequest(redirectEngine, fctxt) ) { - redirectCount += 1; - } - } - } - const t1 = performance.now(); - const dur = t1 - t0; - - const output = [ - 'Benchmarked static network filtering engine:', - `\tEvaluated ${matchCount} match calls in ${dur.toFixed(0)} ms`, - `\tAverage: ${(dur / matchCount).toFixed(3)} ms per request`, - `\tNot blocked: ${matchCount - blockCount - allowCount}`, - `\tBlocked: ${blockCount}`, - `\tUnblocked: ${allowCount}`, - `\tredirect=: ${redirectCount}`, - `\tremoveparam=: ${removeparamCount}`, - `\tcsp=: ${cspCount}`, - `\tpermissions=: ${permissionsCount}`, - `\treplace=: ${replaceCount}`, - ]; - const s = output.join('\n'); - console.info(s); - return s; -} - -/******************************************************************************/ - -export async function tokenHistogramsfunction() { - const requests = await loadBenchmarkDataset(); - if ( Array.isArray(requests) === false || requests.length === 0 ) { - console.info('No requests found to benchmark'); - return; - } - - console.info(`Computing token histograms...`); - - const fctxt = new FilteringContext(); - const missTokenMap = new Map(); - const hitTokenMap = new Map(); - const reTokens = /[0-9a-z%]{2,}/g; - - for ( let i = 0; i < requests.length; i++ ) { - const request = requests[i]; - fctxt.setURL(request.url); - fctxt.setDocOriginFromURL(request.frameUrl); - fctxt.setType(request.cpt); - const r = staticNetFilteringEngine.matchRequest(fctxt); - for ( let [ keyword ] of request.url.toLowerCase().matchAll(reTokens) ) { - const token = keyword.slice(0, 7); - if ( r === 0 ) { - missTokenMap.set(token, (missTokenMap.get(token) || 0) + 1); - } else if ( r === 1 ) { - hitTokenMap.set(token, (hitTokenMap.get(token) || 0) + 1); - } - } - } - const customSort = (a, b) => b[1] - a[1]; - const topmisses = Array.from(missTokenMap).sort(customSort).slice(0, 100); - for ( const [ token ] of topmisses ) { - hitTokenMap.delete(token); - } - const tophits = Array.from(hitTokenMap).sort(customSort).slice(0, 100); - console.info('Misses:', JSON.stringify(topmisses)); - console.info('Hits:', JSON.stringify(tophits)); -} - -/******************************************************************************/ - -export async function benchmarkDynamicNetFiltering() { - const requests = await loadBenchmarkDataset(); - if ( Array.isArray(requests) === false || requests.length === 0 ) { - console.info('No requests found to benchmark'); - return; - } - console.info(`Benchmarking sessionFirewall.evaluateCellZY()...`); - const fctxt = new FilteringContext(); - const t0 = performance.now(); - for ( const request of requests ) { - fctxt.setURL(request.url); - fctxt.setTabOriginFromURL(request.frameUrl); - fctxt.setType(request.cpt); - sessionFirewall.evaluateCellZY( - fctxt.getTabHostname(), - fctxt.getHostname(), - fctxt.type - ); - } - const t1 = performance.now(); - const dur = t1 - t0; - console.info(`Evaluated ${requests.length} requests in ${dur.toFixed(0)} ms`); - console.info(`\tAverage: ${(dur / requests.length).toFixed(3)} ms per request`); -} - -/******************************************************************************/ - -export async function benchmarkCosmeticFiltering() { - const requests = await loadBenchmarkDataset(); - if ( Array.isArray(requests) === false || requests.length === 0 ) { - console.info('No requests found to benchmark'); - return; - } - const output = [ - 'Benchmarking cosmeticFilteringEngine.retrieveSpecificSelectors()...', - ]; - const details = { - tabId: undefined, - frameId: undefined, - hostname: '', - domain: '', - entity: '', - }; - const options = { - noSpecificCosmeticFiltering: false, - noGenericCosmeticFiltering: false, - dontInject: true, - }; - let count = 0; - const t0 = performance.now(); - for ( let i = 0; i < requests.length; i++ ) { - const request = requests[i]; - if ( request.cpt !== 'main_frame' ) { continue; } - count += 1; - details.hostname = hostnameFromURI(request.url); - details.domain = domainFromHostname(details.hostname); - details.entity = entityFromDomain(details.domain); - void cosmeticFilteringEngine.retrieveSpecificSelectors(details, options); - } - const t1 = performance.now(); - const dur = t1 - t0; - output.push( - `Evaluated ${count} retrieval in ${dur.toFixed(0)} ms`, - `\tAverage: ${(dur / count).toFixed(3)} ms per document` - ); - const s = output.join('\n'); - console.info(s); - return s; -} - -/******************************************************************************/ - -export async function benchmarkScriptletFiltering() { - const requests = await loadBenchmarkDataset(); - if ( Array.isArray(requests) === false || requests.length === 0 ) { - console.info('No requests found to benchmark'); - return; - } - const output = [ - 'Benchmarking scriptletFilteringEngine.retrieve()...', - ]; - const details = { - domain: '', - entity: '', - hostname: '', - tabId: 0, - url: '', - nocache: true, - }; - let count = 0; - const t0 = performance.now(); - for ( let i = 0; i < requests.length; i++ ) { - const request = requests[i]; - if ( request.cpt !== 'main_frame' ) { continue; } - count += 1; - details.url = request.url; - details.hostname = hostnameFromURI(request.url); - details.domain = domainFromHostname(details.hostname); - details.entity = entityFromDomain(details.domain); - void scriptletFilteringEngine.retrieve(details); - } - const t1 = performance.now(); - const dur = t1 - t0; - output.push( - `Evaluated ${count} retrieval in ${dur.toFixed(0)} ms`, - `\tAverage: ${(dur / count).toFixed(3)} ms per document` - ); - const s = output.join('\n'); - console.info(s); - return s; -} - -/******************************************************************************/ - -export async function benchmarkOnBeforeRequest() { - const requests = await loadBenchmarkDataset(); - if ( Array.isArray(requests) === false || requests.length === 0 ) { - console.info('No requests found to benchmark'); - return; - } - const mappedTypes = new Map([ - [ 'document', 'main_frame' ], - [ 'subdocument', 'sub_frame' ], - ]); - console.info('webRequest.onBeforeRequest()...'); - const t0 = self.performance.now(); - const promises = []; - const details = { - documentUrl: '', - tabId: -1, - parentFrameId: -1, - frameId: 0, - type: '', - url: '', - }; - for ( const request of requests ) { - details.documentUrl = request.frameUrl; - details.tabId = -1; - details.parentFrameId = -1; - details.frameId = 0; - details.type = mappedTypes.get(request.cpt) || request.cpt; - details.url = request.url; - if ( details.type === 'main_frame' ) { continue; } - promises.push(webRequest.onBeforeRequest(details)); - } - return Promise.all(promises).then(results => { - let blockCount = 0; - for ( const r of results ) { - if ( r !== undefined ) { blockCount += 1; } - } - const t1 = self.performance.now(); - const dur = t1 - t0; - console.info(`Evaluated ${requests.length} requests in ${dur.toFixed(0)} ms`); - console.info(`\tBlocked ${blockCount} requests`); - console.info(`\tAverage: ${(dur / requests.length).toFixed(3)} ms per request`); - }); -} - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/biditrie.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/biditrie.js deleted file mode 100644 index 06566d2..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/biditrie.js +++ /dev/null @@ -1,937 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/******************************************************************************* - - A BidiTrieContainer is mostly a large buffer in which distinct but related - tries are stored. The memory layout of the buffer is as follow: - - 0-2047: haystack section - 2048-2051: number of significant characters in the haystack - 2052-2055: offset to start of trie data section (=> trie0) - 2056-2059: offset to end of trie data section (=> trie1) - 2060-2063: offset to start of character data section (=> char0) - 2064-2067: offset to end of character data section (=> char1) - 2068: start of trie data section - - +--------------+ - Normal cell: | And | If "Segment info" matches: - (aka CELL) +--------------+ Goto "And" - | Or | Else - +--------------+ Goto "Or" - | Segment info | - +--------------+ - - +--------------+ - Boundary cell: | Right And | "Right And" and/or "Left And" - (aka BCELL) +--------------+ can be 0 in last-segment condition. - | Left And | - +--------------+ - | 0 | - +--------------+ - - Given following filters and assuming token is "ad" for all of them: - - -images/ad- - /google_ad. - /images_ad. - _images/ad. - - We get the following internal representation: - - +-----------+ +-----------+ +---+ - | |---->| |---->| 0 | - +-----------+ +-----------+ +---+ +-----------+ - | 0 | +--| | | |---->| 0 | - +-----------+ | +-----------+ +---+ +-----------+ - | ad | | | - | | 0 | | 0 | - +-----------+ | +-----------+ +---+ +-----------+ - | | -images/ | - | +-----------+ +---+ +-----------+ - +->| |---->| 0 | - +-----------+ +---+ +-----------+ +-----------+ - | 0 | | |---->| |---->| 0 | - +-----------+ +---+ +-----------+ +-----------+ - | . | | 0 | +--| | +--| | - +-----------+ +---+ | +-----------+ | +-----------+ - | | _ | | | /google | - | +-----------+ | +-----------+ - | | - | | +-----------+ - | +->| 0 | - | +-----------+ - | | 0 | - | +-----------+ - | | /images | - | +-----------+ - | - | +-----------+ - +->| 0 | - +-----------+ - | 0 | - +-----------+ - | _images/ | - +-----------+ - -*/ - -const PAGE_SIZE = 65536*2; -const HAYSTACK_START = 0; -const HAYSTACK_SIZE = 2048; // i32 / i8 -const HAYSTACK_SIZE_SLOT = HAYSTACK_SIZE >>> 2; // 512 / 2048 -const TRIE0_SLOT = HAYSTACK_SIZE_SLOT + 1; // 513 / 2052 -const TRIE1_SLOT = HAYSTACK_SIZE_SLOT + 2; // 514 / 2056 -const CHAR0_SLOT = HAYSTACK_SIZE_SLOT + 3; // 515 / 2060 -const CHAR1_SLOT = HAYSTACK_SIZE_SLOT + 4; // 516 / 2064 -const RESULT_L_SLOT = HAYSTACK_SIZE_SLOT + 5; // 517 / 2068 -const RESULT_R_SLOT = HAYSTACK_SIZE_SLOT + 6; // 518 / 2072 -const RESULT_IU_SLOT = HAYSTACK_SIZE_SLOT + 7; // 519 / 2076 -const TRIE0_START = HAYSTACK_SIZE_SLOT + 8 << 2; // 2080 - -const CELL_BYTE_LENGTH = 12; -const MIN_FREE_CELL_BYTE_LENGTH = CELL_BYTE_LENGTH * 8; - -const CELL_AND = 0; -const CELL_OR = 1; -const SEGMENT_INFO = 2; -const BCELL_NEXT_AND = 0; -const BCELL_ALT_AND = 1; -const BCELL_EXTRA = 2; -const BCELL_EXTRA_MAX = 0x00FFFFFF; - -const toSegmentInfo = (aL, l, r) => ((r - l) << 24) | (aL + l); -const roundToPageSize = v => (v + PAGE_SIZE-1) & ~(PAGE_SIZE-1); - -// http://www.cse.yorku.ca/~oz/hash.html#djb2 -const i32Checksum = (buf32) => { - const n = buf32.length; - let hash = 177573 ^ n; - for ( let i = 0; i < n; i++ ) { - hash = (hash << 5) + hash ^ buf32[i]; - } - return hash; -}; - -class BidiTrieContainer { - - constructor(extraHandler) { - const len = PAGE_SIZE * 4; - this.buf8 = new Uint8Array(len); - this.buf32 = new Uint32Array(this.buf8.buffer); - this.buf32[TRIE0_SLOT] = TRIE0_START; - this.buf32[TRIE1_SLOT] = this.buf32[TRIE0_SLOT]; - this.buf32[CHAR0_SLOT] = len >>> 1; - this.buf32[CHAR1_SLOT] = this.buf32[CHAR0_SLOT]; - this.haystack = this.buf8.subarray( - HAYSTACK_START, - HAYSTACK_START + HAYSTACK_SIZE - ); - this.extraHandler = extraHandler; - this.textDecoder = null; - this.wasmMemory = null; - - this.lastStored = ''; - this.lastStoredLen = this.lastStoredIndex = 0; - } - - //-------------------------------------------------------------------------- - // Public methods - //-------------------------------------------------------------------------- - - get haystackLen() { - return this.buf32[HAYSTACK_SIZE_SLOT]; - } - - set haystackLen(v) { - this.buf32[HAYSTACK_SIZE_SLOT] = v; - } - - reset(details) { - if ( - details instanceof Object && - typeof details.byteLength === 'number' && - typeof details.char0 === 'number' - ) { - if ( details.byteLength > this.buf8.byteLength ) { - this.reallocateBuf(details.byteLength); - } - this.buf32[CHAR0_SLOT] = details.char0; - } - this.buf32[TRIE1_SLOT] = this.buf32[TRIE0_SLOT]; - this.buf32[CHAR1_SLOT] = this.buf32[CHAR0_SLOT]; - - this.lastStored = ''; - this.lastStoredLen = this.lastStoredIndex = 0; - } - - createTrie() { - // grow buffer if needed - if ( (this.buf32[CHAR0_SLOT] - this.buf32[TRIE1_SLOT]) < CELL_BYTE_LENGTH ) { - this.growBuf(CELL_BYTE_LENGTH, 0); - } - const iroot = this.buf32[TRIE1_SLOT] >>> 2; - this.buf32[TRIE1_SLOT] += CELL_BYTE_LENGTH; - this.buf32[iroot+CELL_OR] = 0; - this.buf32[iroot+CELL_AND] = 0; - this.buf32[iroot+SEGMENT_INFO] = 0; - return iroot; - } - - matches(icell, ai) { - const buf32 = this.buf32; - const buf8 = this.buf8; - const char0 = buf32[CHAR0_SLOT]; - const aR = buf32[HAYSTACK_SIZE_SLOT]; - let al = ai, x = 0, y = 0; - for (;;) { - x = buf8[al]; - al += 1; - // find matching segment - for (;;) { - y = buf32[icell+SEGMENT_INFO]; - let bl = char0 + (y & 0x00FFFFFF); - if ( buf8[bl] === x ) { - y = (y >>> 24) - 1; - if ( y !== 0 ) { - x = al + y; - if ( x > aR ) { return 0; } - for (;;) { - bl += 1; - if ( buf8[bl] !== buf8[al] ) { return 0; } - al += 1; - if ( al === x ) { break; } - } - } - break; - } - icell = buf32[icell+CELL_OR]; - if ( icell === 0 ) { return 0; } - } - // next segment - icell = buf32[icell+CELL_AND]; - x = buf32[icell+BCELL_EXTRA]; - if ( x <= BCELL_EXTRA_MAX ) { - if ( x !== 0 && this.matchesExtra(ai, al, x) !== 0 ) { - return 1; - } - x = buf32[icell+BCELL_ALT_AND]; - if ( x !== 0 && this.matchesLeft(x, ai, al) !== 0 ) { - return 1; - } - icell = buf32[icell+BCELL_NEXT_AND]; - if ( icell === 0 ) { return 0; } - } - if ( al === aR ) { return 0; } - } - return 0; // eslint-disable-line no-unreachable - } - - matchesLeft(icell, ar, r) { - const buf32 = this.buf32; - const buf8 = this.buf8; - const char0 = buf32[CHAR0_SLOT]; - let x = 0, y = 0; - for (;;) { - if ( ar === 0 ) { return 0; } - ar -= 1; - x = buf8[ar]; - // find first segment with a first-character match - for (;;) { - y = buf32[icell+SEGMENT_INFO]; - let br = char0 + (y & 0x00FFFFFF); - y = (y >>> 24) - 1; - br += y; - if ( buf8[br] === x ) { // all characters in segment must match - if ( y !== 0 ) { - x = ar - y; - if ( x < 0 ) { return 0; } - for (;;) { - ar -= 1; br -= 1; - if ( buf8[ar] !== buf8[br] ) { return 0; } - if ( ar === x ) { break; } - } - } - break; - } - icell = buf32[icell+CELL_OR]; - if ( icell === 0 ) { return 0; } - } - // next segment - icell = buf32[icell+CELL_AND]; - x = buf32[icell+BCELL_EXTRA]; - if ( x <= BCELL_EXTRA_MAX ) { - if ( x !== 0 && this.matchesExtra(ar, r, x) !== 0 ) { - return 1; - } - icell = buf32[icell+BCELL_NEXT_AND]; - if ( icell === 0 ) { return 0; } - } - } - return 0; // eslint-disable-line no-unreachable - } - - matchesExtra(l, r, ix) { - let iu = 0; - if ( ix !== 1 ) { - iu = this.extraHandler(l, r, ix); - if ( iu === 0 ) { return 0; } - } else { - iu = -1; - } - this.buf32[RESULT_IU_SLOT] = iu; - this.buf32[RESULT_L_SLOT] = l; - this.buf32[RESULT_R_SLOT] = r; - return 1; - } - - get $l() { return this.buf32[RESULT_L_SLOT] | 0; } - get $r() { return this.buf32[RESULT_R_SLOT] | 0; } - get $iu() { return this.buf32[RESULT_IU_SLOT] | 0; } - - add(iroot, aL0, n, pivot = 0) { - const aR = n; - if ( aR === 0 ) { return 0; } - // Grow buffer if needed. The characters are already in our character - // data buffer, so we do not need to grow character data buffer. - if ( - (this.buf32[CHAR0_SLOT] - this.buf32[TRIE1_SLOT]) < - MIN_FREE_CELL_BYTE_LENGTH - ) { - this.growBuf(MIN_FREE_CELL_BYTE_LENGTH, 0); - } - const buf32 = this.buf32; - const char0 = buf32[CHAR0_SLOT]; - let icell = iroot; - let aL = char0 + aL0; - // special case: first node in trie - if ( buf32[icell+SEGMENT_INFO] === 0 ) { - buf32[icell+SEGMENT_INFO] = toSegmentInfo(aL0, pivot, aR); - return this.addLeft(icell, aL0, pivot); - } - const buf8 = this.buf8; - let al = pivot; - let inext; - // find a matching cell: move down - for (;;) { - const binfo = buf32[icell+SEGMENT_INFO]; - // length of segment - const bR = binfo >>> 24; - // skip boundary cells - if ( bR === 0 ) { - icell = buf32[icell+BCELL_NEXT_AND]; - continue; - } - let bl = char0 + (binfo & 0x00FFFFFF); - // if first character is no match, move to next descendant - if ( buf8[bl] !== buf8[aL+al] ) { - inext = buf32[icell+CELL_OR]; - if ( inext === 0 ) { - inext = this.addCell(0, 0, toSegmentInfo(aL0, al, aR)); - buf32[icell+CELL_OR] = inext; - return this.addLeft(inext, aL0, pivot); - } - icell = inext; - continue; - } - // 1st character was tested - let bi = 1; - al += 1; - // find 1st mismatch in rest of segment - if ( bR !== 1 ) { - for (;;) { - if ( bi === bR ) { break; } - if ( al === aR ) { break; } - if ( buf8[bl+bi] !== buf8[aL+al] ) { break; } - bi += 1; - al += 1; - } - } - // all segment characters matched - if ( bi === bR ) { - // needle remainder: no - if ( al === aR ) { - return this.addLeft(icell, aL0, pivot); - } - // needle remainder: yes - inext = buf32[icell+CELL_AND]; - if ( buf32[inext+CELL_AND] !== 0 ) { - icell = inext; - continue; - } - // add needle remainder - icell = this.addCell(0, 0, toSegmentInfo(aL0, al, aR)); - buf32[inext+CELL_AND] = icell; - return this.addLeft(icell, aL0, pivot); - } - // some characters matched - // split current segment - bl -= char0; - buf32[icell+SEGMENT_INFO] = bi << 24 | bl; - inext = this.addCell( - buf32[icell+CELL_AND], 0, bR - bi << 24 | bl + bi - ); - buf32[icell+CELL_AND] = inext; - // needle remainder: no = need boundary cell - if ( al === aR ) { - return this.addLeft(icell, aL0, pivot); - } - // needle remainder: yes = need new cell for remaining characters - icell = this.addCell(0, 0, toSegmentInfo(aL0, al, aR)); - buf32[inext+CELL_OR] = icell; - return this.addLeft(icell, aL0, pivot); - } - } - - addLeft(icell, aL0, pivot) { - const buf32 = this.buf32; - const char0 = buf32[CHAR0_SLOT]; - let aL = aL0 + char0; - // fetch boundary cell - let iboundary = buf32[icell+CELL_AND]; - // add boundary cell if none exist - if ( - iboundary === 0 || - buf32[iboundary+SEGMENT_INFO] > BCELL_EXTRA_MAX - ) { - const inext = iboundary; - iboundary = this.allocateCell(); - buf32[icell+CELL_AND] = iboundary; - buf32[iboundary+BCELL_NEXT_AND] = inext; - if ( pivot === 0 ) { return iboundary; } - } - // shortest match with no extra conditions will always win - if ( buf32[iboundary+BCELL_EXTRA] === 1 ) { - return iboundary; - } - // bail out if no left segment - if ( pivot === 0 ) { return iboundary; } - // fetch root cell of left segment - icell = buf32[iboundary+BCELL_ALT_AND]; - if ( icell === 0 ) { - icell = this.allocateCell(); - buf32[iboundary+BCELL_ALT_AND] = icell; - } - // special case: first node in trie - if ( buf32[icell+SEGMENT_INFO] === 0 ) { - buf32[icell+SEGMENT_INFO] = toSegmentInfo(aL0, 0, pivot); - iboundary = this.allocateCell(); - buf32[icell+CELL_AND] = iboundary; - return iboundary; - } - const buf8 = this.buf8; - let ar = pivot, inext; - // find a matching cell: move down - for (;;) { - const binfo = buf32[icell+SEGMENT_INFO]; - // skip boundary cells - if ( binfo <= BCELL_EXTRA_MAX ) { - inext = buf32[icell+CELL_AND]; - if ( inext !== 0 ) { - icell = inext; - continue; - } - iboundary = this.allocateCell(); - buf32[icell+CELL_AND] = - this.addCell(iboundary, 0, toSegmentInfo(aL0, 0, ar)); - // TODO: boundary cell might be last - // add remainder + boundary cell - return iboundary; - } - const bL = char0 + (binfo & 0x00FFFFFF); - const bR = bL + (binfo >>> 24); - let br = bR; - // if first character is no match, move to next descendant - if ( buf8[br-1] !== buf8[aL+ar-1] ) { - inext = buf32[icell+CELL_OR]; - if ( inext === 0 ) { - iboundary = this.allocateCell(); - inext = this.addCell( - iboundary, 0, toSegmentInfo(aL0, 0, ar) - ); - buf32[icell+CELL_OR] = inext; - return iboundary; - } - icell = inext; - continue; - } - // 1st character was tested - br -= 1; - ar -= 1; - // find 1st mismatch in rest of segment - if ( br !== bL ) { - for (;;) { - if ( br === bL ) { break; } - if ( ar === 0 ) { break; } - if ( buf8[br-1] !== buf8[aL+ar-1] ) { break; } - br -= 1; - ar -= 1; - } - } - // all segment characters matched - // a: ...vvvvvvv - // b: vvvvvvv - if ( br === bL ) { - inext = buf32[icell+CELL_AND]; - // needle remainder: no - // a: vvvvvvv - // b: vvvvvvv - // r: 0 & vvvvvvv - if ( ar === 0 ) { - // boundary cell already present - if ( buf32[inext+BCELL_EXTRA] <= BCELL_EXTRA_MAX ) { - return inext; - } - // need boundary cell - iboundary = this.allocateCell(); - buf32[iboundary+CELL_AND] = inext; - buf32[icell+CELL_AND] = iboundary; - return iboundary; - } - // needle remainder: yes - // a: yyyyyyyvvvvvvv - // b: vvvvvvv - else { - if ( inext !== 0 ) { - icell = inext; - continue; - } - // TODO: we should never reach here because there will - // always be a boundary cell. - // eslint-disable-next-line no-debugger - debugger; // jshint ignore:line - // boundary cell + needle remainder - inext = this.addCell(0, 0, 0); - buf32[icell+CELL_AND] = inext; - buf32[inext+CELL_AND] = - this.addCell(0, 0, toSegmentInfo(aL0, 0, ar)); - } - } - // some segment characters matched - // a: ...vvvvvvv - // b: yyyyyyyvvvvvvv - else { - // split current cell - buf32[icell+SEGMENT_INFO] = (bR - br) << 24 | (br - char0); - inext = this.addCell( - buf32[icell+CELL_AND], - 0, - (br - bL) << 24 | (bL - char0) - ); - // needle remainder: no = need boundary cell - // a: vvvvvvv - // b: yyyyyyyvvvvvvv - // r: yyyyyyy & 0 & vvvvvvv - if ( ar === 0 ) { - iboundary = this.allocateCell(); - buf32[icell+CELL_AND] = iboundary; - buf32[iboundary+CELL_AND] = inext; - return iboundary; - } - // needle remainder: yes = need new cell for remaining - // characters - // a: wwwwvvvvvvv - // b: yyyyyyyvvvvvvv - // r: (0 & wwww | yyyyyyy) & vvvvvvv - else { - buf32[icell+CELL_AND] = inext; - iboundary = this.allocateCell(); - buf32[inext+CELL_OR] = this.addCell( - iboundary, 0, toSegmentInfo(aL0, 0, ar) - ); - return iboundary; - } - } - //debugger; // jshint ignore:line - } - } - - getExtra(iboundary) { - return this.buf32[iboundary+BCELL_EXTRA]; - } - - setExtra(iboundary, v) { - this.buf32[iboundary+BCELL_EXTRA] = v; - } - - optimize(shrink = false) { - if ( shrink ) { - this.shrinkBuf(); - } - return { - byteLength: this.buf8.byteLength, - char0: this.buf32[CHAR0_SLOT], - }; - } - - toSelfie() { - const buf32 = this.buf32.subarray(0, this.buf32[CHAR1_SLOT] + 3 >>> 2); - return { buf32, checksum: i32Checksum(buf32) }; - } - - fromSelfie(selfie) { - if ( selfie instanceof Object === false ) { return false; } - if ( selfie.buf32 instanceof Uint32Array === false ) { return false; } - if ( selfie.checksum !== i32Checksum(selfie.buf32) ) { return false; } - const byteLength = selfie.buf32.length << 2; - if ( byteLength === 0 ) { return false; } - this.reallocateBuf(byteLength); - this.buf32.set(selfie.buf32); - return true; - } - - storeString(s) { - const n = s.length; - if ( n === this.lastStoredLen && s === this.lastStored ) { - return this.lastStoredIndex; - } - this.lastStored = s; - this.lastStoredLen = n; - if ( (this.buf8.length - this.buf32[CHAR1_SLOT]) < n ) { - this.growBuf(0, n); - } - const offset = this.buf32[CHAR1_SLOT]; - this.buf32[CHAR1_SLOT] = offset + n; - const buf8 = this.buf8; - for ( let i = 0; i < n; i++ ) { - buf8[offset+i] = s.charCodeAt(i); - } - return (this.lastStoredIndex = offset - this.buf32[CHAR0_SLOT]); - } - - extractString(i, n) { - if ( this.textDecoder === null ) { - this.textDecoder = new TextDecoder(); - } - const offset = this.buf32[CHAR0_SLOT] + i; - return this.textDecoder.decode( - this.buf8.subarray(offset, offset + n) - ); - } - - // WASMable. - startsWith(haystackLeft, haystackRight, needleLeft, needleLen) { - if ( haystackLeft < 0 || (haystackLeft + needleLen) > haystackRight ) { - return 0; - } - const charCodes = this.buf8; - needleLeft += this.buf32[CHAR0_SLOT]; - const needleRight = needleLeft + needleLen; - while ( charCodes[haystackLeft] === charCodes[needleLeft] ) { - needleLeft += 1; - if ( needleLeft === needleRight ) { return 1; } - haystackLeft += 1; - } - return 0; - } - - // Find the left-most instance of substring in main string - // WASMable. - indexOf(haystackLeft, haystackEnd, needleLeft, needleLen) { - if ( needleLen === 0 ) { return haystackLeft; } - haystackEnd -= needleLen; - if ( haystackEnd < haystackLeft ) { return -1; } - needleLeft += this.buf32[CHAR0_SLOT]; - const needleRight = needleLeft + needleLen; - const charCodes = this.buf8; - for (;;) { - let i = haystackLeft; - let j = needleLeft; - while ( charCodes[i] === charCodes[j] ) { - j += 1; - if ( j === needleRight ) { return haystackLeft; } - i += 1; - } - haystackLeft += 1; - if ( haystackLeft > haystackEnd ) { break; } - } - return -1; - } - - // Find the right-most instance of substring in main string. - // WASMable. - lastIndexOf(haystackBeg, haystackEnd, needleLeft, needleLen) { - if ( needleLen === 0 ) { return haystackBeg; } - let haystackLeft = haystackEnd - needleLen; - if ( haystackLeft < haystackBeg ) { return -1; } - needleLeft += this.buf32[CHAR0_SLOT]; - const needleRight = needleLeft + needleLen; - const charCodes = this.buf8; - for (;;) { - let i = haystackLeft; - let j = needleLeft; - while ( charCodes[i] === charCodes[j] ) { - j += 1; - if ( j === needleRight ) { return haystackLeft; } - i += 1; - } - if ( haystackLeft === haystackBeg ) { break; } - haystackLeft -= 1; - } - return -1; - } - - dumpTrie(iroot) { - for ( const s of this.trieIterator(iroot) ) { - console.log(s); - } - } - - trieIterator(iroot) { - return { - value: undefined, - done: false, - next() { - if ( this.icell === 0 ) { - if ( this.forks.length === 0 ) { - this.value = undefined; - this.done = true; - return this; - } - this.pattern = this.forks.pop(); - this.dir = this.forks.pop(); - this.icell = this.forks.pop(); - } - const buf32 = this.container.buf32; - const buf8 = this.container.buf8; - for (;;) { - const ialt = buf32[this.icell+CELL_OR]; - const v = buf32[this.icell+SEGMENT_INFO]; - const offset = v & 0x00FFFFFF; - let i0 = buf32[CHAR0_SLOT] + offset; - const len = v >>> 24; - for ( let i = 0; i < len; i++ ) { - this.charBuf[i] = buf8[i0+i]; - } - if ( len !== 0 && ialt !== 0 ) { - this.forks.push(ialt, this.dir, this.pattern); - } - const inext = buf32[this.icell+CELL_AND]; - if ( len !== 0 ) { - const s = this.textDecoder.decode( - new Uint8Array(this.charBuf.buffer, 0, len) - ); - if ( this.dir > 0 ) { - this.pattern += s; - } else if ( this.dir < 0 ) { - this.pattern = s + this.pattern; - } - } - this.icell = inext; - if ( len !== 0 ) { continue; } - // boundary cell - if ( ialt !== 0 ) { - if ( inext === 0 ) { - this.icell = ialt; - this.dir = -1; - } else { - this.forks.push(ialt, -1, this.pattern); - } - } - if ( offset !== 0 ) { - this.value = { pattern: this.pattern, iextra: offset }; - return this; - } - } - }, - container: this, - icell: iroot, - charBuf: new Uint8Array(256), - pattern: '', - dir: 1, - forks: [], - textDecoder: new TextDecoder(), - [Symbol.iterator]() { return this; }, - }; - } - - async enableWASM(wasmModuleFetcher, path) { - if ( typeof WebAssembly !== 'object' ) { return false; } - if ( this.wasmMemory instanceof WebAssembly.Memory ) { return true; } - const module = await getWasmModule(wasmModuleFetcher, path); - if ( module instanceof WebAssembly.Module === false ) { return false; } - const memory = new WebAssembly.Memory({ - initial: roundToPageSize(this.buf8.length) >>> 16 - }); - const instance = await WebAssembly.instantiate(module, { - imports: { memory, extraHandler: this.extraHandler } - }); - if ( instance instanceof WebAssembly.Instance === false ) { - return false; - } - this.wasmMemory = memory; - const curPageCount = memory.buffer.byteLength >>> 16; - const newPageCount = roundToPageSize(this.buf8.byteLength) >>> 16; - if ( newPageCount > curPageCount ) { - memory.grow(newPageCount - curPageCount); - } - const buf8 = new Uint8Array(memory.buffer); - buf8.set(this.buf8); - this.buf8 = buf8; - this.buf32 = new Uint32Array(this.buf8.buffer); - this.haystack = this.buf8.subarray( - HAYSTACK_START, - HAYSTACK_START + HAYSTACK_SIZE - ); - this.matches = instance.exports.matches; - this.startsWith = instance.exports.startsWith; - this.indexOf = instance.exports.indexOf; - this.lastIndexOf = instance.exports.lastIndexOf; - return true; - } - - dumpInfo() { - return [ - `Buffer size (Uint8Array): ${this.buf32[CHAR1_SLOT].toLocaleString('en')}`, - `WASM: ${this.wasmMemory === null ? 'disabled' : 'enabled'}`, - ].join('\n'); - } - - //-------------------------------------------------------------------------- - // Private methods - //-------------------------------------------------------------------------- - - allocateCell() { - let icell = this.buf32[TRIE1_SLOT]; - this.buf32[TRIE1_SLOT] = icell + CELL_BYTE_LENGTH; - icell >>>= 2; - this.buf32[icell+0] = 0; - this.buf32[icell+1] = 0; - this.buf32[icell+2] = 0; - return icell; - } - - addCell(iand, ior, v) { - const icell = this.allocateCell(); - this.buf32[icell+CELL_AND] = iand; - this.buf32[icell+CELL_OR] = ior; - this.buf32[icell+SEGMENT_INFO] = v; - return icell; - } - - growBuf(trieGrow, charGrow) { - const char0 = Math.max( - roundToPageSize(this.buf32[TRIE1_SLOT] + trieGrow), - this.buf32[CHAR0_SLOT] - ); - const char1 = char0 + this.buf32[CHAR1_SLOT] - this.buf32[CHAR0_SLOT]; - const bufLen = Math.max( - roundToPageSize(char1 + charGrow), - this.buf8.length - ); - if ( bufLen > this.buf8.length ) { - this.reallocateBuf(bufLen); - } - if ( char0 !== this.buf32[CHAR0_SLOT] ) { - this.buf8.copyWithin( - char0, - this.buf32[CHAR0_SLOT], - this.buf32[CHAR1_SLOT] - ); - this.buf32[CHAR0_SLOT] = char0; - this.buf32[CHAR1_SLOT] = char1; - } - } - - shrinkBuf() { - const char0 = this.buf32[TRIE1_SLOT] + MIN_FREE_CELL_BYTE_LENGTH; - const char1 = char0 + this.buf32[CHAR1_SLOT] - this.buf32[CHAR0_SLOT]; - const bufLen = char1 + 256; - if ( char0 !== this.buf32[CHAR0_SLOT] ) { - this.buf8.copyWithin( - char0, - this.buf32[CHAR0_SLOT], - this.buf32[CHAR1_SLOT] - ); - this.buf32[CHAR0_SLOT] = char0; - this.buf32[CHAR1_SLOT] = char1; - } - if ( bufLen < this.buf8.length ) { - this.reallocateBuf(bufLen); - } - } - - reallocateBuf(newSize) { - newSize = roundToPageSize(newSize); - if ( newSize === this.buf8.length ) { return; } - if ( this.wasmMemory === null ) { - const newBuf = new Uint8Array(newSize); - newBuf.set( - newBuf.length < this.buf8.length - ? this.buf8.subarray(0, newBuf.length) - : this.buf8 - ); - this.buf8 = newBuf; - } else { - const growBy = - ((newSize + 0xFFFF) >>> 16) - (this.buf8.length >>> 16); - if ( growBy <= 0 ) { return; } - this.wasmMemory.grow(growBy); - this.buf8 = new Uint8Array(this.wasmMemory.buffer); - } - this.buf32 = new Uint32Array(this.buf8.buffer); - this.haystack = this.buf8.subarray( - HAYSTACK_START, - HAYSTACK_START + HAYSTACK_SIZE - ); - } -} - -/******************************************************************************/ - -// Code below is to attempt to load a WASM module which implements: -// -// - BidiTrieContainer.startsWith() -// -// The WASM module is entirely optional, the JS implementations will be -// used should the WASM module be unavailable for whatever reason. - -const getWasmModule = (( ) => { - let wasmModulePromise; - - return async function(wasmModuleFetcher, path) { - if ( wasmModulePromise instanceof Promise ) { - return wasmModulePromise; - } - - if ( typeof WebAssembly !== 'object' ) { return; } - - // Soft-dependency on vAPI so that the code here can be used outside of - // uBO (i.e. tests, benchmarks) - if ( typeof vAPI === 'object' && vAPI.canWASM !== true ) { return; } - - // The wasm module will work only if CPU is natively little-endian, - // as we use native uint32 array in our js code. - const uint32s = new Uint32Array(1); - const uint8s = new Uint8Array(uint32s.buffer); - uint32s[0] = 1; - if ( uint8s[0] !== 1 ) { return; } - - wasmModulePromise = wasmModuleFetcher(`${path}biditrie`).catch(reason => { - console.info(reason); - }); - - return wasmModulePromise; - }; -})(); - -/******************************************************************************/ - -export default BidiTrieContainer; diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/broadcast.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/broadcast.js deleted file mode 100644 index 61d647f..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/broadcast.js +++ /dev/null @@ -1,85 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -import webext from './webext.js'; - -/******************************************************************************/ - -// Broadcast a message to all uBO contexts - -let broadcastChannel; - -export function broadcast(message) { - if ( broadcastChannel === undefined ) { - broadcastChannel = new self.BroadcastChannel('uBO'); - } - broadcastChannel.postMessage(message); -} - -/******************************************************************************/ - -// Broadcast a message to all uBO contexts and all uBO's content scripts - -export async function broadcastToAll(message) { - broadcast(message); - const tabs = await vAPI.tabs.query({ - discarded: false, - }); - const bcmessage = Object.assign({ broadcast: true }, message); - for ( const tab of tabs ) { - webext.tabs.sendMessage(tab.id, bcmessage).catch(( ) => { }); - } -} - -/******************************************************************************/ - -export function onBroadcast(listener) { - const bc = new self.BroadcastChannel('uBO'); - bc.onmessage = ev => listener(ev.data || {}); - return bc; -} - -/******************************************************************************/ - -export function filteringBehaviorChanged(details = {}) { - if ( typeof details.direction !== 'number' || details.direction >= 0 ) { - filteringBehaviorChanged.throttle.offon(727); - } - broadcast(Object.assign({ what: 'filteringBehaviorChanged' }, details)); -} - -filteringBehaviorChanged.throttle = vAPI.defer.create(( ) => { - const { history, max } = filteringBehaviorChanged; - const now = (Date.now() / 1000) | 0; - if ( history.length >= max ) { - if ( (now - history[0]) <= (10 * 60) ) { return; } - history.shift(); - } - history.push(now); - vAPI.net.handlerBehaviorChanged(); -}); -filteringBehaviorChanged.history = []; -filteringBehaviorChanged.max = Math.min( - browser.webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES - 1, - 19 -); - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/cachestorage.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/cachestorage.js deleted file mode 100644 index f946bc7..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/cachestorage.js +++ /dev/null @@ -1,731 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2016-present The uBlock Origin authors - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/******************************************************************************/ - -import * as s14e from './s14e-serializer.js'; - -import { ubolog } from './console.js'; -import webext from './webext.js'; -import µb from './background.js'; - -/******************************************************************************/ - -const STORAGE_NAME = 'uBlock0CacheStorage'; -const extensionStorage = webext.storage.local; -const pendingWrite = new Map(); - -const keysFromGetArg = arg => { - if ( arg === null || arg === undefined ) { return []; } - const type = typeof arg; - if ( type === 'string' ) { return [ arg ]; } - if ( Array.isArray(arg) ) { return arg; } - if ( type !== 'object' ) { return; } - return Object.keys(arg); -}; - -let fastCache = 'indexedDB'; - -// https://eslint.org/docs/latest/rules/no-prototype-builtins -const hasOwnProperty = (o, p) => - Object.prototype.hasOwnProperty.call(o, p); - -/******************************************************************************* - * - * Extension storage - * - * Always available. - * - * */ - -const cacheStorage = (( ) => { - - const exGet = async (api, wanted, outbin) => { - ubolog('cacheStorage.get:', api.name || 'storage.local', wanted.join()); - const missing = []; - for ( const key of wanted ) { - if ( pendingWrite.has(key) ) { - outbin[key] = pendingWrite.get(key); - } else { - missing.push(key); - } - } - if ( missing.length === 0 ) { return; } - return api.get(missing).then(inbin => { - inbin = inbin || {}; - const found = Object.keys(inbin); - Object.assign(outbin, inbin); - if ( found.length === wanted.length ) { return; } - const missing = []; - for ( const key of wanted ) { - if ( hasOwnProperty(outbin, key) ) { continue; } - missing.push(key); - } - return missing; - }); - }; - - const compress = async (bin, key, data) => { - const µbhs = µb.hiddenSettings; - const after = await s14e.serializeAsync(data, { - compress: µbhs.cacheStorageCompression, - compressThreshold: µbhs.cacheStorageCompressionThreshold, - multithreaded: µbhs.cacheStorageMultithread, - }); - bin[key] = after; - }; - - const decompress = async (bin, key) => { - const data = bin[key]; - if ( s14e.isSerialized(data) === false ) { return; } - const µbhs = µb.hiddenSettings; - const isLarge = data.length >= µbhs.cacheStorageCompressionThreshold; - bin[key] = await s14e.deserializeAsync(data, { - multithreaded: isLarge && µbhs.cacheStorageMultithread || 1, - }); - }; - - const api = { - get(argbin) { - const outbin = {}; - return exGet( - cacheAPIs[fastCache], - keysFromGetArg(argbin), - outbin - ).then(wanted => { - if ( wanted === undefined ) { return; } - return exGet(extensionStorage, wanted, outbin); - }).then(wanted => { - if ( wanted === undefined ) { return; } - if ( argbin instanceof Object === false ) { return; } - if ( Array.isArray(argbin) ) { return; } - for ( const key of wanted ) { - if ( hasOwnProperty(argbin, key) === false ) { continue; } - outbin[key] = argbin[key]; - } - }).then(( ) => { - const promises = []; - for ( const key of Object.keys(outbin) ) { - promises.push(decompress(outbin, key)); - } - return Promise.all(promises).then(( ) => outbin); - }).catch(reason => { - ubolog(reason); - }); - }, - - async keys(regex) { - const results = await Promise.all([ - cacheAPIs[fastCache].keys(regex), - extensionStorage.get(null).catch(( ) => {}), - ]); - const keys = new Set(results[0]); - const bin = results[1] || {}; - for ( const key of Object.keys(bin) ) { - if ( regex && regex.test(key) === false ) { continue; } - keys.add(key); - } - return keys; - }, - - async set(rawbin) { - const keys = Object.keys(rawbin); - if ( keys.length === 0 ) { return; } - ubolog('cacheStorage.set:', keys.join()); - for ( const key of keys ) { - pendingWrite.set(key, rawbin[key]); - } - try { - const serializedbin = {}; - const promises = []; - for ( const key of keys ) { - promises.push(compress(serializedbin, key, rawbin[key])); - } - await Promise.all(promises); - await Promise.all([ - cacheAPIs[fastCache].set(rawbin, serializedbin), - extensionStorage.set(serializedbin), - ]); - } catch(reason) { - ubolog(reason); - } - for ( const key of keys ) { - pendingWrite.delete(key); - } - }, - - remove(...args) { - cacheAPIs[fastCache].remove(...args); - return extensionStorage.remove(...args).catch(reason => { - ubolog(reason); - }); - }, - - clear(...args) { - cacheAPIs[fastCache].clear(...args); - return extensionStorage.clear(...args).catch(reason => { - ubolog(reason); - }); - }, - - select(api) { - if ( hasOwnProperty(cacheAPIs, api) === false ) { return fastCache; } - fastCache = api; - for ( const k of Object.keys(cacheAPIs) ) { - if ( k === api ) { continue; } - cacheAPIs[k]['clear'](); - } - return fastCache; - }, - }; - - // Not all platforms support getBytesInUse - if ( extensionStorage.getBytesInUse instanceof Function ) { - api.getBytesInUse = function(...args) { - return extensionStorage.getBytesInUse(...args).catch(reason => { - ubolog(reason); - }); - }; - } - - return api; -})(); - -/******************************************************************************* - * - * Cache API - * - * Purpose is to mirror cache-related items from extension storage, as its - * read/write operations are faster. May not be available/populated in - * private/incognito mode. - * - * */ - -const cacheAPI = (( ) => { - const caches = globalThis.caches; - let cacheStoragePromise; - - const getAPI = ( ) => { - if ( cacheStoragePromise !== undefined ) { return cacheStoragePromise; } - cacheStoragePromise = new Promise(resolve => { - if ( typeof caches !== 'object' || caches === null ) { - ubolog('CacheStorage API not available'); - resolve(null); - return; - } - resolve(caches.open(STORAGE_NAME)); - }).catch(reason => { - ubolog(reason); - return null; - }); - return cacheStoragePromise; - }; - - const urlPrefix = 'https://ublock0.invalid/'; - - const keyToURL = key => - `${urlPrefix}${encodeURIComponent(key)}`; - - const urlToKey = url => - decodeURIComponent(url.slice(urlPrefix.length)); - - // Cache API is subject to quota so we will use it only for what is key - // performance-wise - const shouldCache = bin => { - const out = {}; - for ( const key of Object.keys(bin) ) { - if ( key.startsWith('cache/' ) ) { - if ( /^cache\/(compiled|selfie)\//.test(key) === false ) { continue; } - } - out[key] = bin[key]; - } - if ( Object.keys(out).length !== 0 ) { return out; } - }; - - const getOne = async key => { - const cache = await getAPI(); - if ( cache === null ) { return; } - return cache.match(keyToURL(key)).then(response => { - if ( response === undefined ) { return; } - return response.text(); - }).then(text => { - if ( text === undefined ) { return; } - return { key, text }; - }).catch(reason => { - ubolog(reason); - }); - }; - - const getAll = async ( ) => { - const cache = await getAPI(); - if ( cache === null ) { return; } - return cache.keys().then(requests => { - const promises = []; - for ( const request of requests ) { - promises.push(getOne(urlToKey(request.url))); - } - return Promise.all(promises); - }).then(responses => { - const bin = {}; - for ( const response of responses ) { - if ( response === undefined ) { continue; } - bin[response.key] = response.text; - } - return bin; - }).catch(reason => { - ubolog(reason); - }); - }; - - const setOne = async (key, text) => { - if ( text === undefined ) { return removeOne(key); } - const blob = new Blob([ text ], { type: 'text/plain;charset=utf-8'}); - const cache = await getAPI(); - if ( cache === null ) { return; } - return cache - .put(keyToURL(key), new Response(blob)) - .catch(reason => { - ubolog(reason); - }); - }; - - const removeOne = async key => { - const cache = await getAPI(); - if ( cache === null ) { return; } - return cache.delete(keyToURL(key)).catch(reason => { - ubolog(reason); - }); - }; - - return { - name: 'cacheAPI', - async get(arg) { - const keys = keysFromGetArg(arg); - if ( keys === undefined ) { return; } - if ( keys.length === 0 ) { - return getAll(); - } - const bin = {}; - const toFetch = keys.slice(); - const hasDefault = typeof arg === 'object' && Array.isArray(arg) === false; - for ( let i = 0; i < toFetch.length; i++ ) { - const key = toFetch[i]; - if ( hasDefault && arg[key] !== undefined ) { - bin[key] = arg[key]; - } - toFetch[i] = getOne(key); - } - const responses = await Promise.all(toFetch); - for ( const response of responses ) { - if ( response === undefined ) { continue; } - const { key, text } = response; - if ( typeof key !== 'string' ) { continue; } - if ( typeof text !== 'string' ) { continue; } - bin[key] = text; - } - if ( Object.keys(bin).length === 0 ) { return; } - return bin; - }, - - async keys(regex) { - const cache = await getAPI(); - if ( cache === null ) { return []; } - return cache.keys().then(requests => - requests.map(r => urlToKey(r.url)) - .filter(k => regex === undefined || regex.test(k)) - ).catch(( ) => []); - }, - - async set(rawbin, serializedbin) { - const bin = shouldCache(serializedbin); - if ( bin === undefined ) { return; } - const keys = Object.keys(bin); - const promises = []; - for ( const key of keys ) { - promises.push(setOne(key, bin[key])); - } - return Promise.all(promises); - }, - - remove(keys) { - const toRemove = []; - if ( typeof keys === 'string' ) { - toRemove.push(removeOne(keys)); - } else if ( Array.isArray(keys) ) { - for ( const key of keys ) { - toRemove.push(removeOne(key)); - } - } - return Promise.all(toRemove); - }, - - async clear() { - if ( typeof caches !== 'object' || caches === null ) { return; } - return globalThis.caches.delete(STORAGE_NAME).catch(reason => { - ubolog(reason); - }); - }, - - shutdown() { - cacheStoragePromise = undefined; - return this.clear(); - }, - }; -})(); - -/******************************************************************************* - * - * In-memory storage - * - * */ - -const memoryStorage = (( ) => { - - const sessionStorage = vAPI.sessionStorage; - - // This should help speed up loading from suspended state in Firefox for - // Android. - // 20240228 Observation: Slows down loading from suspended state in - // Firefox desktop. Could be different in Firefox for Android. - const shouldCache = bin => { - const out = {}; - for ( const key of Object.keys(bin) ) { - if ( key.startsWith('cache/compiled/') ) { continue; } - out[key] = bin[key]; - } - if ( Object.keys(out).length !== 0 ) { return out; } - }; - - return { - name: 'memoryStorage', - get(...args) { - return sessionStorage.get(...args).then(bin => { - return bin; - }).catch(reason => { - ubolog(reason); - }); - }, - - async keys(regex) { - const bin = await this.get(null); - const keys = []; - for ( const key of Object.keys(bin || {}) ) { - if ( regex && regex.test(key) === false ) { continue; } - keys.push(key); - } - return keys; - }, - - async set(rawbin, serializedbin) { - const bin = shouldCache(serializedbin); - if ( bin === undefined ) { return; } - return sessionStorage.set(bin).catch(reason => { - ubolog(reason); - }); - }, - - remove(...args) { - return sessionStorage.remove(...args).catch(reason => { - ubolog(reason); - }); - }, - - clear(...args) { - return sessionStorage.clear(...args).catch(reason => { - ubolog(reason); - }); - }, - - shutdown() { - return this.clear(); - }, - }; -})(); - -/******************************************************************************* - * - * IndexedDB - * - * Deprecated, exists only for the purpose of migrating from older versions. - * - * */ - -const idbStorage = (( ) => { - let dbPromise; - - const getDb = function() { - if ( dbPromise !== undefined ) { return dbPromise; } - dbPromise = new Promise(resolve => { - const req = indexedDB.open(STORAGE_NAME, 1); - req.onupgradeneeded = ev => { - if ( ev.oldVersion === 1 ) { return; } - try { - const db = ev.target.result; - db.createObjectStore(STORAGE_NAME, { keyPath: 'key' }); - } catch(ex) { - req.onerror(); - } - }; - req.onsuccess = ev => { - if ( resolve === undefined ) { return; } - resolve(ev.target.result || null); - resolve = undefined; - }; - req.onerror = req.onblocked = ( ) => { - if ( resolve === undefined ) { return; } - ubolog(req.error); - resolve(null); - resolve = undefined; - }; - vAPI.defer.once(10000).then(( ) => { - if ( resolve === undefined ) { return; } - resolve(null); - resolve = undefined; - }); - }).catch(reason => { - ubolog(`idbStorage() / getDb() failed: ${reason}`); - return null; - }); - return dbPromise; - }; - - // Cache API is subject to quota so we will use it only for what is key - // performance-wise - const shouldCache = key => { - if ( key.startsWith('cache/') === false ) { return true; } - return /^cache\/(compiled|selfie)\//.test(key); - }; - - const getAllEntries = async function() { - const db = await getDb(); - if ( db === null ) { return []; } - return new Promise(resolve => { - const entries = []; - const transaction = db.transaction(STORAGE_NAME, 'readonly'); - transaction.oncomplete = - transaction.onerror = - transaction.onabort = ( ) => { - resolve(Promise.all(entries)); - }; - const table = transaction.objectStore(STORAGE_NAME); - const req = table.openCursor(); - req.onsuccess = ev => { - const cursor = ev.target && ev.target.result; - if ( !cursor ) { return; } - const { key, value } = cursor.value; - if ( value instanceof Blob === false ) { - entries.push({ key, value }); - } - cursor.continue(); - }; - }).catch(reason => { - ubolog(`idbStorage() / getAllEntries() failed: ${reason}`); - return []; - }); - }; - - const getAllKeys = async function(regex) { - const db = await getDb(); - if ( db === null ) { return []; } - return new Promise(resolve => { - const keys = []; - const transaction = db.transaction(STORAGE_NAME, 'readonly'); - transaction.oncomplete = - transaction.onerror = - transaction.onabort = ( ) => { - resolve(keys); - }; - const table = transaction.objectStore(STORAGE_NAME); - const req = table.openCursor(); - req.onsuccess = ev => { - const cursor = ev.target && ev.target.result; - if ( !cursor ) { return; } - if ( regex && regex.test(cursor.key) === false ) { return; } - keys.push(cursor.key); - cursor.continue(); - }; - }).catch(reason => { - ubolog(`idbStorage() / getAllKeys() failed: ${reason}`); - return []; - }); - }; - - const getEntries = async function(keys) { - const db = await getDb(); - if ( db === null ) { return []; } - return new Promise(resolve => { - const entries = []; - const gotOne = ev => { - const { result } = ev.target; - if ( typeof result !== 'object' ) { return; } - if ( result === null ) { return; } - const { key, value } = result; - if ( value instanceof Blob ) { return; } - entries.push({ key, value }); - }; - const transaction = db.transaction(STORAGE_NAME, 'readonly'); - transaction.oncomplete = - transaction.onerror = - transaction.onabort = ( ) => { - resolve(Promise.all(entries)); - }; - const table = transaction.objectStore(STORAGE_NAME); - for ( const key of keys ) { - const req = table.get(key); - req.onsuccess = gotOne; - req.onerror = ( ) => { }; - } - }).catch(reason => { - ubolog(`idbStorage() / getEntries() failed: ${reason}`); - return []; - }); - }; - - const getAll = async ( ) => { - const entries = await getAllEntries(); - const outbin = {}; - for ( const { key, value } of entries ) { - outbin[key] = value; - } - return outbin; - }; - - const setEntries = async inbin => { - const keys = Object.keys(inbin); - if ( keys.length === 0 ) { return; } - const db = await getDb(); - if ( db === null ) { return; } - return new Promise(resolve => { - const entries = []; - for ( const key of keys ) { - entries.push({ key, value: inbin[key] }); - } - const transaction = db.transaction(STORAGE_NAME, 'readwrite'); - transaction.oncomplete = - transaction.onerror = - transaction.onabort = ( ) => { - resolve(); - }; - const table = transaction.objectStore(STORAGE_NAME); - for ( const entry of entries ) { - table.put(entry); - } - }).catch(reason => { - ubolog(`idbStorage() / setEntries() failed: ${reason}`); - }); - }; - - const deleteEntries = async arg => { - const keys = Array.isArray(arg) ? arg.slice() : [ arg ]; - if ( keys.length === 0 ) { return; } - const db = await getDb(); - if ( db === null ) { return; } - return new Promise(resolve => { - const transaction = db.transaction(STORAGE_NAME, 'readwrite'); - transaction.oncomplete = - transaction.onerror = - transaction.onabort = ( ) => { - resolve(); - }; - const table = transaction.objectStore(STORAGE_NAME); - for ( const key of keys ) { - table.delete(key); - } - }).catch(reason => { - ubolog(`idbStorage() / deleteEntries() failed: ${reason}`); - }); - }; - - return { - name: 'idbStorage', - async get(argbin) { - const keys = keysFromGetArg(argbin); - if ( keys === undefined ) { return; } - if ( keys.length === 0 ) { return getAll(); } - const entries = await getEntries(keys); - const outbin = {}; - const toRemove = []; - for ( const { key, value } of entries ) { - if ( shouldCache(key) === false ) { - toRemove.push(key); - continue; - } - outbin[key] = value; - } - if ( argbin instanceof Object && Array.isArray(argbin) === false ) { - for ( const key of keys ) { - if ( hasOwnProperty(outbin, key) ) { continue; } - outbin[key] = argbin[key]; - } - } - if ( toRemove.length !== 0 ) { - deleteEntries(toRemove); - } - return outbin; - }, - - async set(rawbin) { - const bin = {}; - for ( const key of Object.keys(rawbin) ) { - if ( shouldCache(key) === false ) { continue; } - bin[key] = rawbin[key]; - } - return setEntries(bin); - }, - - keys(...args) { - return getAllKeys(...args); - }, - - remove(...args) { - return deleteEntries(...args); - }, - - clear() { - return getDb().then(db => { - if ( db === null ) { return; } - db.close(); - indexedDB.deleteDatabase(STORAGE_NAME); - }).catch(reason => { - ubolog(`idbStorage.clear() failed: ${reason}`); - }); - }, - - async shutdown() { - await this.clear(); - dbPromise = undefined; - }, - }; -})(); - -/******************************************************************************/ - -const cacheAPIs = { - 'indexedDB': idbStorage, - 'cacheAPI': cacheAPI, - 'browser.storage.session': memoryStorage, -}; - -/******************************************************************************/ - -export default cacheStorage; - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/click2load.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/click2load.js deleted file mode 100644 index b441d97..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/click2load.js +++ /dev/null @@ -1,59 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ -/******************************************************************************/ - -(( ) => { - -/******************************************************************************/ - -if ( typeof vAPI !== 'object' ) { return; } - -const url = new URL(self.location.href); -const actualURL = url.searchParams.get('url'); -const frameURL = url.searchParams.get('aliasURL') || actualURL; -const frameURLElem = document.getElementById('frameURL'); - -frameURLElem.children[0].textContent = actualURL; - -frameURLElem.children[1].href = frameURL; -frameURLElem.children[1].title = frameURL; - -document.body.setAttribute('title', actualURL); - -document.body.addEventListener('click', ev => { - if ( ev.isTrusted === false ) { return; } - if ( ev.target.closest('#frameURL') !== null ) { return; } - vAPI.messaging.send('default', { - what: 'clickToLoad', - frameURL, - }).then(ok => { - if ( ok !== true ) { return; } - self.location.replace(frameURL); - }); -}); - -/******************************************************************************/ - -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/cloud-ui.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/cloud-ui.js deleted file mode 100644 index 228f114..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/cloud-ui.js +++ /dev/null @@ -1,238 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/* global faIconsInit */ - -'use strict'; - -import { i18n, i18n$ } from './i18n.js'; -import { dom, qs$ } from './dom.js'; -import { faIconsInit } from './fa-icons.js'; - -/******************************************************************************/ - -(( ) => { - -/******************************************************************************/ - -self.cloud = { - options: {}, - datakey: '', - data: undefined, - onPush: null, - onPull: null, -}; - -/******************************************************************************/ - -const widget = qs$('#cloudWidget'); -if ( widget === null ) { return; } - -self.cloud.datakey = dom.attr(widget, 'data-cloud-entry') || ''; -if ( self.cloud.datakey === '' ) { return; } - -/******************************************************************************/ - -const fetchStorageUsed = async function() { - let elem = qs$(widget, '#cloudCapacity'); - if ( dom.cl.has(elem, 'hide') ) { return; } - const result = await vAPI.messaging.send('cloudWidget', { - what: 'cloudUsed', - datakey: self.cloud.datakey, - }); - if ( result instanceof Object === false ) { - dom.cl.add(elem, 'hide'); - return; - } - const units = ' ' + i18n$('genericBytes'); - elem.title = result.max.toLocaleString() + units; - const total = (result.total / result.max * 100).toFixed(1); - elem = elem.firstElementChild; - elem.style.width = `${total}%`; - elem.title = result.total.toLocaleString() + units; - const used = (result.used / result.total * 100).toFixed(1); - elem = elem.firstElementChild; - elem.style.width = `${used}%`; - elem.title = result.used.toLocaleString() + units; -}; - -/******************************************************************************/ - -const fetchCloudData = async function() { - const info = qs$(widget, '#cloudInfo'); - - const entry = await vAPI.messaging.send('cloudWidget', { - what: 'cloudPull', - datakey: self.cloud.datakey, - }); - - const hasData = entry instanceof Object; - if ( hasData === false ) { - dom.attr('#cloudPull', 'disabled', ''); - dom.attr('#cloudPullAndMerge', 'disabled', ''); - info.textContent = '...\n...'; - return entry; - } - - self.cloud.data = entry.data; - - dom.attr('#cloudPull', 'disabled', null); - dom.attr('#cloudPullAndMerge', 'disabled', null); - - const timeOptions = { - weekday: 'short', - year: 'numeric', - month: 'short', - day: 'numeric', - hour: 'numeric', - minute: 'numeric', - second: 'numeric', - timeZoneName: 'short' - }; - - const time = new Date(entry.tstamp); - info.textContent = - entry.source + '\n' + - time.toLocaleString('fullwide', timeOptions); -}; - -/******************************************************************************/ - -const pushData = async function() { - if ( typeof self.cloud.onPush !== 'function' ) { return; } - - const error = await vAPI.messaging.send('cloudWidget', { - what: 'cloudPush', - datakey: self.cloud.datakey, - data: self.cloud.onPush(), - }); - const failed = typeof error === 'string'; - dom.cl.toggle('#cloudPush', 'error', failed); - dom.text('#cloudError', failed ? error : ''); - if ( failed ) { return; } - fetchCloudData(); - fetchStorageUsed(); -}; - -/******************************************************************************/ - -const pullData = function() { - if ( typeof self.cloud.onPull === 'function' ) { - self.cloud.onPull(self.cloud.data, false); - } - dom.cl.remove('#cloudPush', 'error'); - dom.text('#cloudError', ''); -}; - -/******************************************************************************/ - -const pullAndMergeData = function() { - if ( typeof self.cloud.onPull === 'function' ) { - self.cloud.onPull(self.cloud.data, true); - } -}; - -/******************************************************************************/ - -const openOptions = function() { - const input = qs$('#cloudDeviceName'); - input.value = self.cloud.options.deviceName; - dom.attr(input, 'placeholder', self.cloud.options.defaultDeviceName); - dom.cl.add('#cloudOptions', 'show'); -}; - -/******************************************************************************/ - -const closeOptions = function(ev) { - const root = qs$('#cloudOptions'); - if ( ev.target !== root ) { return; } - dom.cl.remove(root, 'show'); -}; - -/******************************************************************************/ - -const submitOptions = async function() { - dom.cl.remove('#cloudOptions', 'show'); - - const options = await vAPI.messaging.send('cloudWidget', { - what: 'cloudSetOptions', - options: { - deviceName: qs$('#cloudDeviceName').value - }, - }); - if ( options instanceof Object ) { - self.cloud.options = options; - } -}; - -/******************************************************************************/ - -const onInitialize = function(options) { - if ( options instanceof Object === false ) { return; } - if ( options.enabled !== true ) { return; } - self.cloud.options = options; - - const xhr = new XMLHttpRequest(); - xhr.open('GET', 'cloud-ui.html', true); - xhr.overrideMimeType('text/html;charset=utf-8'); - xhr.responseType = 'text'; - xhr.onload = function() { - this.onload = null; - const parser = new DOMParser(), - parsed = parser.parseFromString(this.responseText, 'text/html'), - fromParent = parsed.body; - while ( fromParent.firstElementChild !== null ) { - widget.appendChild( - document.adoptNode(fromParent.firstElementChild) - ); - } - - faIconsInit(widget); - - i18n.render(widget); - dom.cl.remove(widget, 'hide'); - - dom.on('#cloudPush', 'click', ( ) => { pushData(); }); - dom.on('#cloudPull', 'click', pullData); - dom.on('#cloudPullAndMerge', 'click', pullAndMergeData); - dom.on('#cloudCog', 'click', openOptions); - dom.on('#cloudOptions', 'click', closeOptions); - dom.on('#cloudOptionsSubmit', 'click', ( ) => { submitOptions(); }); - - fetchCloudData().then(result => { - if ( typeof result !== 'string' ) { return; } - dom.cl.add('#cloudPush', 'error'); - dom.text('#cloudError', result); - }); - fetchStorageUsed(); - }; - xhr.send(); -}; - -vAPI.messaging.send('cloudWidget', { - what: 'cloudGetOptions', -}).then(options => { - onInitialize(options); -}); - -/******************************************************************************/ - -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/code-viewer.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/code-viewer.js deleted file mode 100644 index f11289a..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/code-viewer.js +++ /dev/null @@ -1,311 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2023-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/* globals CodeMirror, uBlockDashboard, beautifier */ - -'use strict'; - -/******************************************************************************/ - -import { dom, qs$ } from './dom.js'; -import { getActualTheme } from './theme.js'; - -/******************************************************************************/ - -const urlToDocMap = new Map(); -const params = new URLSearchParams(document.location.search); -let currentURL = ''; - -const cmEditor = new CodeMirror(qs$('#content'), { - autofocus: true, - gutters: [ 'CodeMirror-linenumbers' ], - lineNumbers: true, - lineWrapping: true, - matchBrackets: true, - styleActiveLine: { - nonEmpty: true, - }, -}); - -uBlockDashboard.patchCodeMirrorEditor(cmEditor); - -vAPI.messaging.send('dom', { what: 'uiStyles' }).then(response => { - if ( typeof response !== 'object' || response === null ) { return; } - if ( getActualTheme(response.uiTheme) === 'dark' ) { - dom.cl.add('#content .cm-s-default', 'cm-s-night'); - dom.cl.remove('#content .cm-s-default', 'cm-s-default'); - } -}); - -// Convert resource URLs into clickable links to code viewer -cmEditor.addOverlay({ - re: /\b(?:href|src)=["']([^"']+)["']/g, - match: null, - token: function(stream) { - if ( stream.sol() ) { - this.re.lastIndex = 0; - this.match = this.re.exec(stream.string); - } - if ( this.match === null ) { - stream.skipToEnd(); - return null; - } - const end = this.re.lastIndex - 1; - const beg = end - this.match[1].length; - if ( stream.pos < beg ) { - stream.pos = beg; - return null; - } - if ( stream.pos < end ) { - stream.pos = end; - return 'href'; - } - if ( stream.pos < this.re.lastIndex ) { - stream.pos = this.re.lastIndex; - this.match = this.re.exec(stream.string); - return null; - } - stream.skipToEnd(); - return null; - }, -}); - -urlToDocMap.set('', cmEditor.getDoc()); - -/******************************************************************************/ - -async function fetchResource(url) { - let response, text; - const fetchOptions = { - method: 'GET', - referrer: '', - }; - if ( urlToDocMap.has(url) ) { - fetchOptions.cache = 'reload'; - } - try { - response = await fetch(url, fetchOptions); - text = await response.text(); - } catch(reason) { - text = String(reason); - } - let mime = response && response.headers.get('Content-Type') || ''; - mime = mime.replace(/\s*;.*$/, '').trim(); - const beautifierOptions = { - end_with_newline: true, - indent_size: 3, - js: { - max_preserve_newlines: 3, - } - }; - switch ( mime ) { - case 'text/css': - text = beautifier.css(text, beautifierOptions); - break; - case 'text/html': - case 'application/xhtml+xml': - case 'application/xml': - case 'image/svg+xml': - text = beautifier.html(text, beautifierOptions); - break; - case 'text/javascript': - case 'application/javascript': - case 'application/x-javascript': - text = beautifier.js(text, beautifierOptions); - break; - case 'application/json': - text = beautifier.js(text, beautifierOptions); - break; - default: - break; - } - return { mime, text }; -} - -/******************************************************************************/ - -function addPastURLs(url) { - const list = qs$('#pastURLs'); - let current; - for ( let i = 0; i < list.children.length; i++ ) { - const span = list.children[i]; - dom.cl.remove(span, 'selected'); - if ( span.textContent !== url ) { continue; } - current = span; - } - if ( url === '' ) { return; } - if ( current === undefined ) { - current = document.createElement('span'); - current.textContent = url; - list.prepend(current); - } - dom.cl.add(current, 'selected'); -} - -/******************************************************************************/ - -function setInputURL(url) { - const input = qs$('#header input[type="url"]'); - if ( url === input.value ) { return; } - dom.attr(input, 'value', url); - input.value = url; -} - -/******************************************************************************/ - -async function setURL(resourceURL) { - // For convenience, remove potentially existing quotes around the URL - if ( /^(["']).+\1$/.test(resourceURL) ) { - resourceURL = resourceURL.slice(1, -1); - } - let afterURL; - if ( resourceURL !== '' ) { - try { - const url = new URL(resourceURL, currentURL || undefined); - url.hash = ''; - afterURL = url.href; - } catch(ex) { - } - if ( afterURL === undefined ) { return; } - } else { - afterURL = ''; - } - if ( afterURL !== '' && /^https?:\/\/./.test(afterURL) === false ) { - return; - } - if ( afterURL === currentURL ) { - if ( afterURL !== resourceURL ) { - setInputURL(afterURL); - } - return; - } - let afterDoc = urlToDocMap.get(afterURL); - if ( afterDoc === undefined ) { - const r = await fetchResource(afterURL) || { mime: '', text: '' }; - afterDoc = new CodeMirror.Doc(r.text, r.mime || ''); - urlToDocMap.set(afterURL, afterDoc); - } - swapDoc(afterDoc); - currentURL = afterURL; - setInputURL(afterURL); - const a = qs$('.cm-search-widget .sourceURL'); - dom.attr(a, 'href', afterURL); - dom.attr(a, 'title', afterURL); - addPastURLs(afterURL); - // For unknown reasons, calling focus() synchronously does not work... - vAPI.defer.once(1).then(( ) => { cmEditor.focus(); }); -} - -/******************************************************************************/ - -function removeURL(url) { - if ( url === '' ) { return; } - const list = qs$('#pastURLs'); - let foundAt = -1; - for ( let i = 0; i < list.children.length; i++ ) { - const span = list.children[i]; - if ( span.textContent !== url ) { continue; } - foundAt = i; - } - if ( foundAt === -1 ) { return; } - list.children[foundAt].remove(); - if ( foundAt >= list.children.length ) { - foundAt = list.children.length - 1; - } - const afterURL = foundAt !== -1 - ? list.children[foundAt].textContent - : ''; - setURL(afterURL); - urlToDocMap.delete(url); -} - -/******************************************************************************/ - -function swapDoc(doc) { - const r = cmEditor.swapDoc(doc); - if ( self.searchThread ) { - self.searchThread.setHaystack(cmEditor.getValue()); - } - const input = qs$('.cm-search-widget-input input[type="search"]'); - if ( input.value !== '' ) { - qs$('.cm-search-widget').dispatchEvent(new Event('input')); - } - return r; -} - -/******************************************************************************/ - -async function start() { - await setURL(params.get('url')); - - dom.on('#header input[type="url"]', 'change', ev => { - setURL(ev.target.value); - }); - - dom.on('#reloadURL', 'click', ( ) => { - const input = qs$('#header input[type="url"]'); - const url = input.value; - const beforeDoc = swapDoc(new CodeMirror.Doc('', '')); - fetchResource(url).then(r => { - if ( urlToDocMap.has(url) === false ) { return; } - const afterDoc = r !== undefined - ? new CodeMirror.Doc(r.text, r.mime || '') - : beforeDoc; - urlToDocMap.set(url, afterDoc); - if ( currentURL !== url ) { return; } - swapDoc(afterDoc); - }); - }); - - dom.on('#removeURL', 'click', ( ) => { - removeURL(qs$('#header input[type="url"]').value); - }); - - dom.on('#pastURLs', 'mousedown', 'span', ev => { - setURL(ev.target.textContent); - }); - - dom.on('#content', 'click', '.cm-href', ev => { - const target = ev.target; - const urlParts = [ target.textContent ]; - let previous = target; - for (;;) { - previous = previous.previousSibling; - if ( previous === null ) { break; } - if ( previous.nodeType !== 1 ) { break; } - if ( previous.classList.contains('cm-href') === false ) { break; } - urlParts.unshift(previous.textContent); - } - let next = target; - for (;;) { - next = next.nextSibling; - if ( next === null ) { break; } - if ( next.nodeType !== 1 ) { break; } - if ( next.classList.contains('cm-href') === false ) { break; } - urlParts.push(next.textContent); - } - setURL(urlParts.join('')); - }); -} - -start(); - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/codemirror/search-thread.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/codemirror/search-thread.js deleted file mode 100644 index 3a4416f..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/codemirror/search-thread.js +++ /dev/null @@ -1,199 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2020-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -(( ) => { -// >>>>> start of local scope - -/******************************************************************************/ - -// Worker context - -if ( - self.WorkerGlobalScope instanceof Object && - self instanceof self.WorkerGlobalScope -) { - let content = ''; - - const doSearch = function(details) { - const reEOLs = /\n\r|\r\n|\n|\r/g; - const t1 = Date.now() + 750; - - let reSearch; - try { - reSearch = new RegExp(details.pattern, details.flags); - } catch(ex) { - return; - } - - const response = []; - const maxOffset = content.length; - let iLine = 0; - let iOffset = 0; - let size = 0; - while ( iOffset < maxOffset ) { - // Find next match - const match = reSearch.exec(content); - if ( match === null ) { break; } - // Find number of line breaks between last and current match. - reEOLs.lastIndex = 0; - const eols = content.slice(iOffset, match.index).match(reEOLs); - if ( Array.isArray(eols) ) { - iLine += eols.length; - } - // Store line - response.push(iLine); - size += 1; - // Find next line break. - reEOLs.lastIndex = reSearch.lastIndex; - const eol = reEOLs.exec(content); - iOffset = eol !== null - ? reEOLs.lastIndex - : content.length; - reSearch.lastIndex = iOffset; - iLine += 1; - // Quit if this takes too long - if ( (size & 0x3FF) === 0 && Date.now() >= t1 ) { break; } - } - - return response; - }; - - self.onmessage = function(e) { - const msg = e.data; - - switch ( msg.what ) { - case 'setHaystack': - content = msg.content; - break; - - case 'doSearch': - const response = doSearch(msg); - self.postMessage({ id: msg.id, response }); - break; - } - }; - - return; -} - -/******************************************************************************/ - -// Main context - -{ - const workerTTL = { min: 5 }; - const pendingResponses = new Map(); - const workerTTLTimer = vAPI.defer.create(( ) => { - shutdown(); - }); - - let worker; - let messageId = 1; - - const onWorkerMessage = function(e) { - const msg = e.data; - const resolver = pendingResponses.get(msg.id); - if ( resolver === undefined ) { return; } - pendingResponses.delete(msg.id); - resolver(msg.response); - }; - - const cancelPendingTasks = function() { - for ( const resolver of pendingResponses.values() ) { - resolver(); - } - pendingResponses.clear(); - }; - - const destroy = function() { - shutdown(); - self.searchThread = undefined; - }; - - const shutdown = function() { - if ( worker === undefined ) { return; } - workerTTLTimer.off(); - worker.terminate(); - worker.onmessage = undefined; - worker = undefined; - cancelPendingTasks(); - }; - - const init = function() { - if ( self.searchThread instanceof Object === false ) { return; } - if ( worker === undefined ) { - worker = new Worker('js/codemirror/search-thread.js'); - worker.onmessage = onWorkerMessage; - } - workerTTLTimer.offon(workerTTL); - }; - - const needHaystack = function() { - return worker instanceof Object === false; - }; - - const setHaystack = function(content) { - init(); - worker.postMessage({ what: 'setHaystack', content }); - }; - - const search = function(query, overwrite = true) { - init(); - if ( worker instanceof Object === false ) { - return Promise.resolve(); - } - if ( overwrite ) { - cancelPendingTasks(); - } - const id = messageId++; - worker.postMessage({ - what: 'doSearch', - id, - pattern: query.source, - flags: query.flags, - isRE: query instanceof RegExp - }); - return new Promise(resolve => { - pendingResponses.set(id, resolve); - }); - }; - - self.addEventListener( - 'beforeunload', - ( ) => { destroy(); }, - { once: true } - ); - - self.searchThread = { needHaystack, setHaystack, search, shutdown }; -} - -/******************************************************************************/ - -// <<<<< end of local scope -})(); - -/******************************************************************************/ - -void 0; diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/codemirror/search.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/codemirror/search.js deleted file mode 100644 index 7ee5b33..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/codemirror/search.js +++ /dev/null @@ -1,516 +0,0 @@ -// The following code is heavily based on the standard CodeMirror -// search addon found at: https://codemirror.net/addon/search/search.js -// I added/removed and modified code in order to get a closer match to a -// browser's built-in find-in-page feature which are just enough for -// uBlock Origin. -// -// This file was originally wholly imported from: -// https://github.com/codemirror/CodeMirror/blob/3e1bb5fff682f8f6cbfaef0e56c61d62403d4798/addon/search/search.js -// -// And has been modified over time to better suit uBO's usage and coding style: -// https://github.com/gorhill/uBlock/commits/master/src/js/codemirror/search.js -// -// The original copyright notice is reproduced below: - -// ===== -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: http://codemirror.net/LICENSE - -// Define search commands. Depends on dialog.js or another -// implementation of the openDialog method. - -// Replace works a little oddly -- it will do the replace on the next -// Ctrl-G (or whatever is bound to findNext) press. You prevent a -// replace by making sure the match is no longer selected when hitting -// Ctrl-G. -// ===== - -import { dom, qs$ } from '../dom.js'; -import { i18n$ } from '../i18n.js'; - -{ - const CodeMirror = self.CodeMirror; - - CodeMirror.defineOption('maximizable', true, (cm, maximizable) => { - if ( typeof maximizable !== 'boolean' ) { return; } - const wrapper = cm.getWrapperElement(); - if ( wrapper === null ) { return; } - const container = wrapper.closest('.codeMirrorContainer'); - if ( container === null ) { return; } - container.dataset.maximizable = `${maximizable}`; - }); - - const searchOverlay = function(query, caseInsensitive) { - if ( typeof query === 'string' ) - query = new RegExp( - query.replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&'), - caseInsensitive ? 'gi' : 'g' - ); - else if ( !query.global ) - query = new RegExp(query.source, query.ignoreCase ? 'gi' : 'g'); - - return { - token: function(stream) { - query.lastIndex = stream.pos; - const match = query.exec(stream.string); - if ( match && match.index === stream.pos ) { - stream.pos += match[0].length || 1; - return 'searching'; - } else if ( match ) { - stream.pos = match.index; - } else { - stream.skipToEnd(); - } - } - }; - }; - - const searchWidgetKeydownHandler = function(cm, ev) { - const keyName = CodeMirror.keyName(ev); - if ( !keyName ) { return; } - CodeMirror.lookupKey( - keyName, - cm.getOption('keyMap'), - function(command) { - if ( widgetCommandHandler(cm, command) ) { - ev.preventDefault(); - ev.stopPropagation(); - } - } - ); - }; - - const searchWidgetInputHandler = function(cm, ev) { - const state = getSearchState(cm); - if ( ev.isTrusted !== true ) { - if ( state.queryText === '' ) { - clearSearch(cm); - } else { - cm.operation(function() { - startSearch(cm, state); - }); - } - return; - } - if ( queryTextFromSearchWidget(cm) === state.queryText ) { return; } - state.queryTimer.offon(350); - }; - - const searchWidgetClickHandler = (ev, cm) => { - if ( ev.button !== 0 ) { return; } - const target = ev.target; - const tcl = target.classList; - if ( tcl.contains('cm-search-widget-up') ) { - findNext(cm, -1); - } else if ( tcl.contains('cm-search-widget-down') ) { - findNext(cm, 1); - } else if ( tcl.contains('cm-linter-widget-up') ) { - findNextError(cm, -1); - } else if ( tcl.contains('cm-linter-widget-down') ) { - findNextError(cm, 1); - } else if ( tcl.contains('cm-maximize') ) { - const container = target.closest('.codeMirrorContainer'); - if ( container !== null ) { - container.classList.toggle('cm-maximized'); - } - } - if ( target.localName !== 'input' ) { - cm.focus(); - } - }; - - const queryTextFromSearchWidget = function(cm) { - return getSearchState(cm).widget.querySelector('input[type="search"]').value; - }; - - const queryTextToSearchWidget = function(cm, q) { - const input = getSearchState(cm).widget.querySelector('input[type="search"]'); - if ( typeof q === 'string' && q !== input.value ) { - input.value = q; - } - input.setSelectionRange(0, input.value.length); - input.focus(); - }; - - const SearchState = function(cm) { - this.query = null; - this.panel = null; - const widgetParent = document.querySelector('.cm-search-widget-template').cloneNode(true); - this.widget = widgetParent.children[0]; - this.widget.addEventListener('keydown', searchWidgetKeydownHandler.bind(null, cm)); - this.widget.addEventListener('input', searchWidgetInputHandler.bind(null, cm)); - this.widget.addEventListener('click', ev => { - searchWidgetClickHandler(ev, cm); - }); - if ( typeof cm.addPanel === 'function' ) { - this.panel = cm.addPanel(this.widget); - } - this.queryText = ''; - this.dirty = true; - this.lines = []; - cm.on('changes', (cm, changes) => { - for ( const change of changes ) { - if ( change.text.length !== 0 || change.removed !== 0 ) { - this.dirty = true; - break; - } - } - }); - cm.on('cursorActivity', cm => { - updateCount(cm); - }); - this.queryTimer = vAPI.defer.create(( ) => { - findCommit(cm, 0); - }); - }; - - // We want the search widget to behave as if the focus was on the - // CodeMirror editor. - - const reSearchCommands = /^(?:find|findNext|findPrev|newlineAndIndent)$/; - - const widgetCommandHandler = function(cm, command) { - if ( reSearchCommands.test(command) === false ) { return false; } - const queryText = queryTextFromSearchWidget(cm); - if ( command === 'find' ) { - queryTextToSearchWidget(cm); - return true; - } - if ( queryText.length !== 0 ) { - findNext(cm, command === 'findPrev' ? -1 : 1); - } - return true; - }; - - const getSearchState = function(cm) { - return cm.state.search || (cm.state.search = new SearchState(cm)); - }; - - const queryCaseInsensitive = function(query) { - return typeof query === 'string' && query === query.toLowerCase(); - }; - - // Heuristic: if the query string is all lowercase, do a case insensitive search. - const getSearchCursor = function(cm, query, pos) { - return cm.getSearchCursor( - query, - pos, - { caseFold: queryCaseInsensitive(query), multiline: false } - ); - }; - - // https://github.com/uBlockOrigin/uBlock-issues/issues/658 - // Modified to backslash-escape ONLY widely-used control characters. - const parseString = function(string) { - return string.replace(/\\[nrt\\]/g, match => { - if ( match === '\\n' ) { return '\n'; } - if ( match === '\\r' ) { return '\r'; } - if ( match === '\\t' ) { return '\t'; } - if ( match === '\\\\' ) { return '\\'; } - return match; - }); - }; - - const reEscape = /[.*+\-?^${}()|[\]\\]/g; - - // Must always return a RegExp object. - // - // Assume case-sensitivity if there is at least one uppercase in plain - // query text. - const parseQuery = function(query) { - let flags = 'i'; - let reParsed = query.match(/^\/(.+)\/([iu]*)$/); - if ( reParsed !== null ) { - try { - const re = new RegExp(reParsed[1], reParsed[2]); - query = re.source; - flags = re.flags; - } - catch (e) { - reParsed = null; - } - } - if ( reParsed === null ) { - if ( /[A-Z]/.test(query) ) { flags = ''; } - query = parseString(query).replace(reEscape, '\\$&'); - } - if ( typeof query === 'string' ? query === '' : query.test('') ) { - query = 'x^'; - } - return new RegExp(query, 'gm' + flags); - }; - - let intlNumberFormat; - - const formatNumber = function(n) { - if ( intlNumberFormat === undefined ) { - intlNumberFormat = null; - if ( Intl.NumberFormat instanceof Function ) { - const intl = new Intl.NumberFormat(undefined, { - notation: 'compact', - maximumSignificantDigits: 3 - }); - if ( intl.resolvedOptions().notation ) { - intlNumberFormat = intl; - } - } - } - return n > 10000 && intlNumberFormat instanceof Object - ? intlNumberFormat.format(n) - : n.toLocaleString(); - }; - - const updateCount = function(cm) { - const state = getSearchState(cm); - const lines = state.lines; - const current = cm.getCursor().line; - let l = 0; - let r = lines.length; - let i = -1; - while ( l < r ) { - i = l + r >>> 1; - const candidate = lines[i]; - if ( current === candidate ) { break; } - if ( current < candidate ) { - r = i; - } else /* if ( current > candidate ) */ { - l = i + 1; - } - } - let text = ''; - if ( i !== -1 ) { - text = formatNumber(i + 1); - if ( lines[i] !== current ) { - text = '~' + text; - } - text = text + '\xA0/\xA0'; - } - const count = lines.length; - text += formatNumber(count); - const span = state.widget.querySelector('.cm-search-widget-count'); - span.textContent = text; - span.title = count.toLocaleString(); - }; - - const startSearch = function(cm, state) { - state.query = parseQuery(state.queryText); - if ( state.overlay !== undefined ) { - cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query)); - } - state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query)); - cm.addOverlay(state.overlay); - if ( state.dirty || self.searchThread.needHaystack() ) { - self.searchThread.setHaystack(cm.getValue()); - state.dirty = false; - } - self.searchThread.search(state.query).then(lines => { - if ( Array.isArray(lines) === false ) { return; } - state.lines = lines; - const count = lines.length; - updateCount(cm); - if ( state.annotate !== undefined ) { - state.annotate.clear(); - state.annotate = undefined; - } - if ( count === 0 ) { return; } - state.annotate = cm.annotateScrollbar('CodeMirror-search-match'); - const annotations = []; - let lineBeg = -1; - let lineEnd = -1; - for ( const line of lines ) { - if ( lineBeg === -1 ) { - lineBeg = line; - lineEnd = line + 1; - continue; - } else if ( line === lineEnd ) { - lineEnd = line + 1; - continue; - } - annotations.push({ - from: { line: lineBeg, ch: 0 }, - to: { line: lineEnd, ch: 0 } - }); - lineBeg = -1; - } - if ( lineBeg !== -1 ) { - annotations.push({ - from: { line: lineBeg, ch: 0 }, - to: { line: lineEnd, ch: 0 } - }); - } - state.annotate.update(annotations); - }); - state.widget.setAttribute('data-query', state.queryText); - }; - - const findNext = function(cm, dir, callback) { - cm.operation(function() { - const state = getSearchState(cm); - if ( !state.query ) { return; } - let cursor = getSearchCursor( - cm, - state.query, - dir <= 0 ? cm.getCursor('from') : cm.getCursor('to') - ); - const previous = dir < 0; - if (!cursor.find(previous)) { - cursor = getSearchCursor( - cm, - state.query, - previous - ? CodeMirror.Pos(cm.lastLine()) - : CodeMirror.Pos(cm.firstLine(), 0) - ); - if (!cursor.find(previous)) return; - } - cm.setSelection(cursor.from(), cursor.to()); - const { clientHeight } = cm.getScrollInfo(); - cm.scrollIntoView( - { from: cursor.from(), to: cursor.to() }, - clientHeight >>> 1 - ); - if (callback) callback(cursor.from(), cursor.to()); - }); - }; - - const findNextError = function(cm, dir) { - const doc = cm.getDoc(); - const cursor = cm.getCursor('from'); - const cursorLine = cursor.line; - const start = dir < 0 ? 0 : cursorLine + 1; - const end = dir < 0 ? cursorLine : doc.lineCount(); - let found = -1; - doc.eachLine(start, end, lineHandle => { - const markers = lineHandle.gutterMarkers || null; - if ( markers === null ) { return; } - const marker = markers['CodeMirror-lintgutter']; - if ( marker === undefined ) { return; } - if ( marker.dataset.error !== 'y' ) { return; } - const line = lineHandle.lineNo(); - if ( dir < 0 ) { - found = line; - return; - } - found = line; - return true; - }); - if ( found === -1 || found === cursorLine ) { return; } - cm.getDoc().setCursor(found); - const { clientHeight } = cm.getScrollInfo(); - cm.scrollIntoView({ line: found, ch: 0 }, clientHeight >>> 1); - }; - - const clearSearch = function(cm, hard) { - cm.operation(function() { - const state = getSearchState(cm); - if ( state.query ) { - state.query = state.queryText = null; - } - state.lines = []; - if ( state.overlay !== undefined ) { - cm.removeOverlay(state.overlay); - state.overlay = undefined; - } - if ( state.annotate ) { - state.annotate.clear(); - state.annotate = undefined; - } - state.widget.removeAttribute('data-query'); - if ( hard ) { - state.panel.clear(); - state.panel = null; - state.widget = null; - cm.state.search = null; - } - }); - }; - - const findCommit = function(cm, dir) { - const state = getSearchState(cm); - state.queryTimer.off(); - const queryText = queryTextFromSearchWidget(cm); - if ( queryText === state.queryText ) { return; } - state.queryText = queryText; - if ( state.queryText === '' ) { - clearSearch(cm); - } else { - cm.operation(function() { - startSearch(cm, state); - findNext(cm, dir); - }); - } - }; - - const findCommand = function(cm) { - let queryText = cm.getSelection() || undefined; - if ( !queryText ) { - const word = cm.findWordAt(cm.getCursor()); - queryText = cm.getRange(word.anchor, word.head); - if ( /^\W|\W$/.test(queryText) ) { - queryText = undefined; - } - cm.setCursor(word.anchor); - } - queryTextToSearchWidget(cm, queryText); - findCommit(cm, 1); - }; - - const findNextCommand = function(cm) { - const state = getSearchState(cm); - if ( state.query ) { return findNext(cm, 1); } - }; - - const findPrevCommand = function(cm) { - const state = getSearchState(cm); - if ( state.query ) { return findNext(cm, -1); } - }; - - { - const searchWidgetTemplate = [ - '', - ].join('\n'); - const domParser = new DOMParser(); - const doc = domParser.parseFromString(searchWidgetTemplate, 'text/html'); - const widgetTemplate = document.adoptNode(doc.body.firstElementChild); - document.body.appendChild(widgetTemplate); - } - - CodeMirror.commands.find = findCommand; - CodeMirror.commands.findNext = findNextCommand; - CodeMirror.commands.findPrev = findPrevCommand; - - CodeMirror.defineInitHook(function(cm) { - getSearchState(cm); - cm.on('linterDone', details => { - const linterWidget = qs$('.cm-linter-widget'); - const count = details.errorCount; - if ( linterWidget.dataset.lint === `${count}` ) { return; } - linterWidget.dataset.lint = `${count}`; - dom.text( - qs$(linterWidget, '.cm-linter-widget-count'), - i18n$('linterMainReport').replace('{{count}}', count.toLocaleString()) - ); - }); - }); -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/codemirror/ubo-dynamic-filtering.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/codemirror/ubo-dynamic-filtering.js deleted file mode 100644 index d0709a4..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/codemirror/ubo-dynamic-filtering.js +++ /dev/null @@ -1,239 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/* global CodeMirror */ - -'use strict'; - -CodeMirror.defineMode('ubo-dynamic-filtering', ( ) => { - - const validSwitches = new Set([ - 'no-strict-blocking:', - 'no-popups:', - 'no-cosmetic-filtering:', - 'no-remote-fonts:', - 'no-large-media:', - 'no-csp-reports:', - 'no-scripting:', - ]); - const validSwitcheStates = new Set([ - 'true', - 'false', - ]); - const validHnRuleTypes = new Set([ - '*', - '3p', - 'image', - 'inline-script', - '1p-script', - '3p-script', - '3p-frame', - ]); - const invalidURLRuleTypes = new Set([ - 'doc', - 'main_frame', - ]); - const validActions = new Set([ - 'block', - 'allow', - 'noop', - ]); - const hnValidator = new URL(self.location.href); - const reBadHn = /[%]|^\.|\.$/; - const slices = []; - let sliceIndex = 0; - let sliceCount = 0; - let hostnameToDomainMap = new Map(); - let psl; - - const isValidHostname = hnin => { - if ( hnin === '*' ) { return true; } - hnValidator.hostname = '_'; - try { - hnValidator.hostname = hnin; - } catch(_) { - return false; - } - const hnout = hnValidator.hostname; - return hnout !== '_' && hnout !== '' && reBadHn.test(hnout) === false; - }; - - const addSlice = (len, style = null) => { - let i = sliceCount; - if ( i === slices.length ) { - slices[i] = { len: 0, style: null }; - } - const entry = slices[i]; - entry.len = len; - entry.style = style; - sliceCount += 1; - }; - - const addMatchSlice = (match, style = null) => { - const len = match !== null ? match[0].length : 0; - addSlice(len, style); - return match !== null ? match.input.slice(len) : ''; - }; - - const addMatchHnSlices = (match, style = null) => { - const hn = match[0]; - if ( hn === '*' ) { - return addMatchSlice(match, style); - } - let dn = hostnameToDomainMap.get(hn) || ''; - if ( dn === '' && psl !== undefined ) { - dn = /(\d|\])$/.test(hn) ? hn : (psl.getDomain(hn) || hn); - } - const entityBeg = hn.length - dn.length; - if ( entityBeg !== 0 ) { - addSlice(entityBeg, style); - } - let entityEnd = dn.indexOf('.'); - if ( entityEnd === -1 ) { entityEnd = dn.length; } - addSlice(entityEnd, style !== null ? `${style} strong` : 'strong'); - if ( entityEnd < dn.length ) { - addSlice(dn.length - entityEnd, style); - } - return match.input.slice(hn.length); - }; - - const makeSlices = (stream, opts) => { - sliceIndex = 0; - sliceCount = 0; - let { string } = stream; - if ( string === '...' ) { return; } - const { sortType } = opts; - const reNotToken = /^\s+/; - const reToken = /^\S+/; - const tokens = []; - // leading whitespaces - let match = reNotToken.exec(string); - if ( match !== null ) { - string = addMatchSlice(match); - } - // first token - match = reToken.exec(string); - if ( match === null ) { return; } - tokens.push(match[0]); - // hostname or switch - const isSwitchRule = validSwitches.has(match[0]); - if ( isSwitchRule ) { - string = addMatchSlice(match, sortType === 0 ? 'sortkey' : null); - } else if ( isValidHostname(match[0]) ) { - if ( sortType === 1 ) { - string = addMatchHnSlices(match, 'sortkey'); - } else { - string = addMatchHnSlices(match, null); - } - } else { - string = addMatchSlice(match, 'error'); - } - // whitespaces before second token - match = reNotToken.exec(string); - if ( match === null ) { return; } - string = addMatchSlice(match); - // second token - match = reToken.exec(string); - if ( match === null ) { return; } - tokens.push(match[0]); - // hostname or url - const isURLRule = isSwitchRule === false && match[0].indexOf('://') > 0; - if ( isURLRule ) { - string = addMatchSlice(match, sortType === 2 ? 'sortkey' : null); - } else if ( isValidHostname(match[0]) === false ) { - string = addMatchSlice(match, 'error'); - } else if ( sortType === 1 && isSwitchRule || sortType === 2 ) { - string = addMatchHnSlices(match, 'sortkey'); - } else { - string = addMatchHnSlices(match, null); - } - // whitespaces before third token - match = reNotToken.exec(string); - if ( match === null ) { return; } - string = addMatchSlice(match); - // third token - match = reToken.exec(string); - if ( match === null ) { return; } - tokens.push(match[0]); - // rule type or switch state - if ( isSwitchRule ) { - string = validSwitcheStates.has(match[0]) - ? addMatchSlice(match, match[0] === 'true' ? 'blockrule' : 'allowrule') - : addMatchSlice(match, 'error'); - } else if ( isURLRule ) { - string = invalidURLRuleTypes.has(match[0]) - ? addMatchSlice(match, 'error') - : addMatchSlice(match); - } else if ( tokens[1] === '*' ) { - string = validHnRuleTypes.has(match[0]) - ? addMatchSlice(match) - : addMatchSlice(match, 'error'); - } else { - string = match[0] === '*' - ? addMatchSlice(match) - : addMatchSlice(match, 'error'); - } - // whitespaces before fourth token - match = reNotToken.exec(string); - if ( match === null ) { return; } - string = addMatchSlice(match); - // fourth token - match = reToken.exec(string); - if ( match === null ) { return; } - tokens.push(match[0]); - string = isSwitchRule || validActions.has(match[0]) === false - ? addMatchSlice(match, 'error') - : addMatchSlice(match, `${match[0]}rule`); - // whitespaces before end of line - match = reNotToken.exec(string); - if ( match === null ) { return; } - string = addMatchSlice(match); - // any token beyond fourth token is invalid - match = reToken.exec(string); - if ( match !== null ) { - string = addMatchSlice(null, 'error'); - } - }; - - const token = function(stream) { - if ( stream.sol() ) { - makeSlices(stream, this); - } - if ( sliceIndex >= sliceCount ) { - stream.skipToEnd(stream); - return null; - } - const { len, style } = slices[sliceIndex++]; - if ( len === 0 ) { - stream.skipToEnd(); - } else { - stream.pos += len; - } - return style; - }; - - return { - token, - sortType: 1, - setHostnameToDomainMap: a => { hostnameToDomainMap = a; }, - setPSL: a => { psl = a; }, - }; -}); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/codemirror/ubo-static-filtering.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/codemirror/ubo-static-filtering.js deleted file mode 100644 index 2aaf85b..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/codemirror/ubo-static-filtering.js +++ /dev/null @@ -1,1219 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2018-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/* global CodeMirror */ - -/******************************************************************************/ - -import * as sfp from '../static-filtering-parser.js'; -import { dom, qs$ } from '../dom.js'; - -/******************************************************************************/ - -const redirectNames = new Map(); -const scriptletNames = new Map(); -const preparseDirectiveEnv = []; -const preparseDirectiveHints = []; -const originHints = []; -let hintHelperRegistered = false; - -/******************************************************************************/ - -CodeMirror.defineOption('trustedSource', false, (cm, trusted) => { - if ( typeof trusted !== 'boolean' ) { return; } - self.dispatchEvent(new CustomEvent('trustedSource', { - detail: { cm, trusted }, - })); -}); - -CodeMirror.defineOption('trustedScriptletTokens', undefined, (cm, tokens) => { - if ( tokens === undefined || tokens === null ) { return; } - if ( typeof tokens[Symbol.iterator] !== 'function' ) { return; } - self.dispatchEvent(new CustomEvent('trustedScriptletTokens', { - detail: new Set(tokens), - })); -}); - -/******************************************************************************/ - -const uBOStaticFilteringMode = (( ) => { - const redirectTokenStyle = (mode, node) => { - const rawToken = mode.astParser.getNodeString(node || mode.currentWalkerNode); - const { token } = sfp.parseRedirectValue(rawToken); - return redirectNames.has(token) ? 'value' : 'value warning'; - }; - - const nodeHasError = (mode, node) => { - return mode.astParser.getNodeFlags( - node || mode.currentWalkerNode, sfp.NODE_FLAG_ERROR - ) !== 0; - }; - - const colorFromAstNode = mode => { - if ( mode.astParser.nodeIsEmptyString(mode.currentWalkerNode) ) { return '+'; } - if ( nodeHasError(mode) ) { return 'error'; } - const nodeType = mode.astParser.getNodeType(mode.currentWalkerNode); - switch ( nodeType ) { - case sfp.NODE_TYPE_WHITESPACE: - return ''; - case sfp.NODE_TYPE_COMMENT: - if ( mode.astWalker.canGoDown() ) { break; } - return 'comment'; - case sfp.NODE_TYPE_COMMENT_URL: - return 'comment link'; - case sfp.NODE_TYPE_IGNORE: - return 'comment'; - case sfp.NODE_TYPE_PREPARSE_DIRECTIVE: - case sfp.NODE_TYPE_PREPARSE_DIRECTIVE_VALUE: - return 'directive'; - case sfp.NODE_TYPE_PREPARSE_DIRECTIVE_IF_VALUE: { - const raw = mode.astParser.getNodeString(mode.currentWalkerNode); - const state = sfp.utils.preparser.evaluateExpr(raw, preparseDirectiveEnv); - return state ? 'positive strong' : 'negative strong'; - } - case sfp.NODE_TYPE_EXT_OPTIONS_ANCHOR: - return mode.astParser.getFlags(sfp.AST_FLAG_IS_EXCEPTION) - ? 'tag strong' - : 'def strong'; - case sfp.NODE_TYPE_EXT_DECORATION: - return 'def'; - case sfp.NODE_TYPE_EXT_PATTERN_RAW: - if ( mode.astWalker.canGoDown() ) { break; } - return 'variable'; - case sfp.NODE_TYPE_EXT_PATTERN_COSMETIC: - case sfp.NODE_TYPE_EXT_PATTERN_HTML: - return 'variable'; - case sfp.NODE_TYPE_EXT_PATTERN_RESPONSEHEADER: - case sfp.NODE_TYPE_EXT_PATTERN_SCRIPTLET: - if ( mode.astWalker.canGoDown() ) { break; } - return 'variable'; - case sfp.NODE_TYPE_EXT_PATTERN_SCRIPTLET_TOKEN: { - const token = mode.astParser.getNodeString(mode.currentWalkerNode); - if ( scriptletNames.has(token) === false ) { - return 'warning'; - } - return 'variable'; - } - case sfp.NODE_TYPE_EXT_PATTERN_SCRIPTLET_ARG: - return 'variable'; - case sfp.NODE_TYPE_NET_EXCEPTION: - return 'tag strong'; - case sfp.NODE_TYPE_NET_PATTERN: - if ( mode.astWalker.canGoDown() ) { break; } - if ( mode.astParser.isRegexPattern() ) { - if ( mode.astParser.getNodeFlags(mode.currentWalkerNode, sfp.NODE_FLAG_PATTERN_UNTOKENIZABLE) !== 0 ) { - return 'variable warning'; - } - return 'variable notice'; - } - return 'variable'; - case sfp.NODE_TYPE_NET_PATTERN_PART: - return 'variable'; - case sfp.NODE_TYPE_NET_PATTERN_PART_SPECIAL: - return 'keyword strong'; - case sfp.NODE_TYPE_NET_PATTERN_PART_UNICODE: - return 'variable unicode'; - case sfp.NODE_TYPE_NET_PATTERN_LEFT_HNANCHOR: - case sfp.NODE_TYPE_NET_PATTERN_LEFT_ANCHOR: - case sfp.NODE_TYPE_NET_PATTERN_RIGHT_ANCHOR: - case sfp.NODE_TYPE_NET_OPTION_NAME_NOT: - return 'keyword strong'; - case sfp.NODE_TYPE_NET_OPTIONS_ANCHOR: - case sfp.NODE_TYPE_NET_OPTION_SEPARATOR: - mode.lastNetOptionType = 0; - return 'def strong'; - case sfp.NODE_TYPE_NET_OPTION_NAME_UNKNOWN: - mode.lastNetOptionType = 0; - return 'error'; - case sfp.NODE_TYPE_NET_OPTION_NAME_1P: - case sfp.NODE_TYPE_NET_OPTION_NAME_STRICT1P: - case sfp.NODE_TYPE_NET_OPTION_NAME_3P: - case sfp.NODE_TYPE_NET_OPTION_NAME_STRICT3P: - case sfp.NODE_TYPE_NET_OPTION_NAME_ALL: - case sfp.NODE_TYPE_NET_OPTION_NAME_BADFILTER: - case sfp.NODE_TYPE_NET_OPTION_NAME_CNAME: - case sfp.NODE_TYPE_NET_OPTION_NAME_CSP: - case sfp.NODE_TYPE_NET_OPTION_NAME_CSS: - case sfp.NODE_TYPE_NET_OPTION_NAME_DENYALLOW: - case sfp.NODE_TYPE_NET_OPTION_NAME_DOC: - case sfp.NODE_TYPE_NET_OPTION_NAME_EHIDE: - case sfp.NODE_TYPE_NET_OPTION_NAME_EMPTY: - case sfp.NODE_TYPE_NET_OPTION_NAME_FONT: - case sfp.NODE_TYPE_NET_OPTION_NAME_FRAME: - case sfp.NODE_TYPE_NET_OPTION_NAME_FROM: - case sfp.NODE_TYPE_NET_OPTION_NAME_GENERICBLOCK: - case sfp.NODE_TYPE_NET_OPTION_NAME_GHIDE: - case sfp.NODE_TYPE_NET_OPTION_NAME_HEADER: - case sfp.NODE_TYPE_NET_OPTION_NAME_IMAGE: - case sfp.NODE_TYPE_NET_OPTION_NAME_IMPORTANT: - case sfp.NODE_TYPE_NET_OPTION_NAME_INLINEFONT: - case sfp.NODE_TYPE_NET_OPTION_NAME_INLINESCRIPT: - case sfp.NODE_TYPE_NET_OPTION_NAME_MATCHCASE: - case sfp.NODE_TYPE_NET_OPTION_NAME_MEDIA: - case sfp.NODE_TYPE_NET_OPTION_NAME_METHOD: - case sfp.NODE_TYPE_NET_OPTION_NAME_MP4: - case sfp.NODE_TYPE_NET_OPTION_NAME_NOOP: - case sfp.NODE_TYPE_NET_OPTION_NAME_OBJECT: - case sfp.NODE_TYPE_NET_OPTION_NAME_OTHER: - case sfp.NODE_TYPE_NET_OPTION_NAME_PING: - case sfp.NODE_TYPE_NET_OPTION_NAME_POPUNDER: - case sfp.NODE_TYPE_NET_OPTION_NAME_POPUP: - case sfp.NODE_TYPE_NET_OPTION_NAME_REDIRECT: - case sfp.NODE_TYPE_NET_OPTION_NAME_REDIRECTRULE: - case sfp.NODE_TYPE_NET_OPTION_NAME_REMOVEPARAM: - case sfp.NODE_TYPE_NET_OPTION_NAME_SCRIPT: - case sfp.NODE_TYPE_NET_OPTION_NAME_SHIDE: - case sfp.NODE_TYPE_NET_OPTION_NAME_TO: - case sfp.NODE_TYPE_NET_OPTION_NAME_URLTRANSFORM: - case sfp.NODE_TYPE_NET_OPTION_NAME_XHR: - case sfp.NODE_TYPE_NET_OPTION_NAME_WEBRTC: - case sfp.NODE_TYPE_NET_OPTION_NAME_WEBSOCKET: - mode.lastNetOptionType = nodeType; - return 'def'; - case sfp.NODE_TYPE_NET_OPTION_ASSIGN: - return 'def'; - case sfp.NODE_TYPE_NET_OPTION_VALUE: - if ( mode.astWalker.canGoDown() ) { break; } - switch ( mode.lastNetOptionType ) { - case sfp.NODE_TYPE_NET_OPTION_NAME_REDIRECT: - case sfp.NODE_TYPE_NET_OPTION_NAME_REDIRECTRULE: - return redirectTokenStyle(mode); - default: - break; - } - return 'value'; - case sfp.NODE_TYPE_OPTION_VALUE_NOT: - return 'keyword strong'; - case sfp.NODE_TYPE_OPTION_VALUE_DOMAIN: - return 'value'; - case sfp.NODE_TYPE_OPTION_VALUE_SEPARATOR: - return 'def'; - default: - break; - } - return '+'; - }; - - class ModeState { - constructor() { - this.astParser = new sfp.AstFilterParser({ - interactive: true, - nativeCssHas: vAPI.webextFlavor.env.includes('native_css_has'), - }); - this.astWalker = this.astParser.getWalker(); - this.currentWalkerNode = 0; - this.lastNetOptionType = 0; - self.addEventListener('trustedSource', ev => { - const { trusted } = ev.detail; - this.astParser.options.trustedSource = trusted; - }); - self.addEventListener('trustedScriptletTokens', ev => { - this.astParser.options.trustedScriptletTokens = ev.detail; - }); - } - } - - return { - state: null, - startState() { - if ( this.state === null ) { - this.state = new ModeState(); - } - return this.state; - }, - copyState(other) { - return other; - }, - token(stream, state) { - if ( stream.sol() ) { - state.astParser.parse(stream.string); - if ( state.astParser.getFlags(sfp.AST_FLAG_UNSUPPORTED) !== 0 ) { - stream.skipToEnd(); - return 'error'; - } - if ( state.astParser.getType() === sfp.AST_TYPE_NONE ) { - stream.skipToEnd(); - return 'comment'; - } - state.currentWalkerNode = state.astWalker.reset(); - } else if ( nodeHasError(state) ) { - state.currentWalkerNode = state.astWalker.right(); - } else { - state.currentWalkerNode = state.astWalker.next(); - } - let style = ''; - while ( state.currentWalkerNode !== 0 ) { - style = colorFromAstNode(state, stream); - if ( style !== '+' ) { break; } - state.currentWalkerNode = state.astWalker.next(); - } - if ( style === '+' ) { - stream.skipToEnd(); - return null; - } - stream.pos = state.astParser.getNodeStringEnd(state.currentWalkerNode); - if ( state.astParser.isNetworkFilter() ) { - return style ? `line-cm-net ${style}` : 'line-cm-net'; - } - if ( state.astParser.isExtendedFilter() ) { - let flavor = ''; - if ( state.astParser.isCosmeticFilter() ) { - flavor = 'line-cm-ext-dom'; - } else if ( state.astParser.isScriptletFilter() ) { - flavor = 'line-cm-ext-js'; - } else if ( state.astParser.isHtmlFilter() ) { - flavor = 'line-cm-ext-html'; - } - if ( flavor !== '' ) { - style = `${flavor} ${style}`; - } - } - style = style.trim(); - return style !== '' ? style : null; - }, - lineComment: '!', - }; -})(); - -CodeMirror.defineMode('ubo-static-filtering', ( ) => uBOStaticFilteringMode); - -/******************************************************************************/ - -// Following code is for auto-completion. Reference: -// https://codemirror.net/demo/complete.html - -CodeMirror.defineOption('uboHints', null, (cm, hints) => { - if ( hints instanceof Object === false ) { return; } - if ( Array.isArray(hints.redirectResources) ) { - for ( const [ name, desc ] of hints.redirectResources ) { - const displayText = desc.aliasOf !== '' - ? `${name} (${desc.aliasOf})` - : ''; - if ( desc.canRedirect ) { - redirectNames.set(name, displayText); - } - if ( desc.canInject && name.endsWith('.js') ) { - scriptletNames.set(name.slice(0, -3), displayText); - } - } - } - if ( Array.isArray(hints.preparseDirectiveEnv)) { - preparseDirectiveEnv.length = 0; - preparseDirectiveEnv.push(...hints.preparseDirectiveEnv); - } - if ( Array.isArray(hints.preparseDirectiveHints)) { - preparseDirectiveHints.push(...hints.preparseDirectiveHints); - } - if ( Array.isArray(hints.originHints) ) { - originHints.length = 0; - for ( const hint of hints.originHints ) { - originHints.push(hint); - } - } - if ( hintHelperRegistered ) { return; } - hintHelperRegistered = true; - initHints(); -}); - -function initHints() { - const astParser = new sfp.AstFilterParser({ - interactive: true, - nativeCssHas: vAPI.webextFlavor.env.includes('native_css_has'), - }); - const proceduralOperatorNames = new Map( - Array.from(sfp.proceduralOperatorTokens) - .filter(item => (item[1] & 0b01) !== 0) - ); - const excludedHints = new Set([ - 'genericblock', - 'object-subrequest', - 'rewrite', - 'webrtc', - ]); - - const pickBestHints = function(cursor, seedLeft, seedRight, hints) { - const seed = (seedLeft + seedRight).trim(); - const out = []; - // First, compare against whole seed - for ( const hint of hints ) { - const text = hint instanceof Object - ? hint.displayText || hint.text - : hint; - if ( text.startsWith(seed) === false ) { continue; } - out.push(hint); - } - if ( out.length !== 0 ) { - return { - from: { line: cursor.line, ch: cursor.ch - seedLeft.length }, - to: { line: cursor.line, ch: cursor.ch + seedRight.length }, - list: out, - }; - } - // If no match, try again with a different heuristic: valid hints are - // those matching left seed, not matching right seed but right seed is - // found to be a valid hint. This is to take care of cases like: - // - // *$script,redomain=example.org - // ^ - // + cursor position - // - // In such case, [ redirect=, redirect-rule= ] should be returned - // as valid hints. - for ( const hint of hints ) { - const text = hint instanceof Object - ? hint.displayText || hint.text - : hint; - if ( seedLeft.length === 0 ) { continue; } - if ( text.startsWith(seedLeft) === false ) { continue; } - if ( hints.includes(seedRight) === false ) { continue; } - out.push(hint); - } - if ( out.length !== 0 ) { - return { - from: { line: cursor.line, ch: cursor.ch - seedLeft.length }, - to: { line: cursor.line, ch: cursor.ch }, - list: out, - }; - } - // If no match, try again with a different heuristic: valid hints are - // those containing seed as a substring. This is to take care of cases - // like: - // - // *$script,redirect=gif - // ^ - // + cursor position - // - // In such case, [ 1x1.gif, 1x1-transparent.gif ] should be returned - // as valid hints. - for ( const hint of hints ) { - const text = hint instanceof Object - ? hint.displayText || hint.text - : hint; - if ( seedLeft.length === 1 ) { - if ( text.startsWith(seedLeft) === false ) { continue; } - } else if ( text.includes(seed) === false ) { continue; } - out.push(hint); - } - if ( out.length !== 0 ) { - return { - from: { line: cursor.line, ch: cursor.ch - seedLeft.length }, - to: { line: cursor.line, ch: cursor.ch + seedRight.length }, - list: out, - }; - } - // If still no match, try again with a different heuristic: valid hints - // are those containing left seed as a substring. This is to take care - // of cases like: - // - // *$script,redirect=gifdomain=example.org - // ^ - // + cursor position - // - // In such case, [ 1x1.gif, 1x1-transparent.gif ] should be returned - // as valid hints. - for ( const hint of hints ) { - const text = hint instanceof Object - ? hint.displayText || hint.text - : hint; - if ( text.includes(seedLeft) === false ) { continue; } - out.push(hint); - } - if ( out.length !== 0 ) { - return { - from: { line: cursor.line, ch: cursor.ch - seedLeft.length }, - to: { line: cursor.line, ch: cursor.ch }, - list: out, - }; - } - }; - - const getOriginHints = function(cursor, line, suffix = '') { - const beg = cursor.ch; - const matchLeft = /[^,|=~]*$/.exec(line.slice(0, beg)); - const matchRight = /^[^#,|]*/.exec(line.slice(beg)); - if ( matchLeft === null || matchRight === null ) { return; } - const hints = []; - for ( const text of originHints ) { - hints.push(text + suffix); - } - return pickBestHints(cursor, matchLeft[0], matchRight[0], hints); - }; - - const getNetPatternHints = function(cursor, line) { - if ( /\|\|[\w.-]*$/.test(line.slice(0, cursor.ch)) ) { - return getOriginHints(cursor, line, '^'); - } - // Maybe a static extended filter is meant to be crafted. - if ( /[^\w\x80-\xF4#,.-]/.test(line) === false ) { - return getOriginHints(cursor, line); - } - }; - - const getNetOptionHints = function(cursor, seedLeft, seedRight) { - const isNegated = seedLeft.startsWith('~'); - if ( isNegated ) { - seedLeft = seedLeft.slice(1); - } - const assignPos = seedRight.indexOf('='); - if ( assignPos !== -1 ) { seedRight = seedRight.slice(0, assignPos); } - const isException = astParser.isException(); - const hints = []; - for ( let [ text, desc ] of sfp.netOptionTokenDescriptors ) { - if ( excludedHints.has(text) ) { continue; } - if ( isNegated && desc.canNegate !== true ) { continue; } - if ( isException ) { - if ( desc.blockOnly ) { continue; } - } else { - if ( desc.allowOnly ) { continue; } - if ( (assignPos === -1) && desc.mustAssign ) { - text += '='; - } - } - hints.push(text); - } - return pickBestHints(cursor, seedLeft, seedRight, hints); - }; - - const getNetRedirectHints = function(cursor, seedLeft, seedRight) { - const hints = []; - for ( const text of redirectNames.keys() ) { - if ( text.startsWith('abp-resource:') ) { continue; } - hints.push(text); - } - return pickBestHints(cursor, seedLeft, seedRight, hints); - }; - - const getNetHints = function(cursor, line) { - const patternNode = astParser.getBranchFromType(sfp.NODE_TYPE_NET_PATTERN_RAW); - if ( patternNode === 0 ) { return; } - const patternEnd = astParser.getNodeStringEnd(patternNode); - const beg = cursor.ch; - if ( beg <= patternEnd ) { - return getNetPatternHints(cursor, line); - } - const lineBefore = line.slice(0, beg); - const lineAfter = line.slice(beg); - let matchLeft = /[^$,]*$/.exec(lineBefore); - let matchRight = /^[^,]*/.exec(lineAfter); - if ( matchLeft === null || matchRight === null ) { return; } - const assignPos = matchLeft[0].indexOf('='); - if ( assignPos === -1 ) { - return getNetOptionHints(cursor, matchLeft[0], matchRight[0]); - } - if ( /^(redirect(-rule)?|rewrite)=/.test(matchLeft[0]) ) { - return getNetRedirectHints( - cursor, - matchLeft[0].slice(assignPos + 1), - matchRight[0] - ); - } - if ( /^(domain|from)=/.test(matchLeft[0]) ) { - return getOriginHints(cursor, line); - } - }; - - const getExtSelectorHints = function(cursor, line) { - const beg = cursor.ch; - // Special selector case: `^responseheader` - { - const match = /#\^([a-z]+)$/.exec(line.slice(0, beg)); - if ( - match !== null && - 'responseheader'.startsWith(match[1]) && - line.slice(beg) === '' - ) { - return pickBestHints( - cursor, - match[1], - '', - [ 'responseheader()' ] - ); - } - } - // Procedural operators - const matchLeft = /#\^?.*:([^:]*)$/.exec(line.slice(0, beg)); - const matchRight = /^([a-z-]*)\(?/.exec(line.slice(beg)); - if ( matchLeft === null || matchRight === null ) { return; } - const isStaticDOM = matchLeft[0].indexOf('^') !== -1; - const hints = []; - for ( let [ text, bits ] of proceduralOperatorNames ) { - if ( isStaticDOM && (bits & 0b10) !== 0 ) { continue; } - hints.push(text); - } - return pickBestHints(cursor, matchLeft[1], matchRight[1], hints); - }; - - const getExtHeaderHints = function(cursor, line) { - const beg = cursor.ch; - const matchLeft = /#\^responseheader\((.*)$/.exec(line.slice(0, beg)); - const matchRight = /^([^)]*)/.exec(line.slice(beg)); - if ( matchLeft === null || matchRight === null ) { return; } - const hints = []; - for ( const hint of sfp.removableHTTPHeaders ) { - hints.push(hint); - } - return pickBestHints(cursor, matchLeft[1], matchRight[1], hints); - }; - - const getExtScriptletHints = function(cursor, line) { - const beg = cursor.ch; - const matchLeft = /#\+js\(([^,]*)$/.exec(line.slice(0, beg)); - const matchRight = /^([^,)]*)/.exec(line.slice(beg)); - if ( matchLeft === null || matchRight === null ) { return; } - const hints = []; - for ( const [ text, displayText ] of scriptletNames ) { - const hint = { text }; - if ( displayText !== '' ) { - hint.displayText = displayText; - } - hints.push(hint); - } - return pickBestHints(cursor, matchLeft[1], matchRight[1], hints); - }; - - const getCommentHints = function(cursor, line) { - const beg = cursor.ch; - if ( line.startsWith('!#if ') ) { - const matchLeft = /^!#if !?(\w*)$/.exec(line.slice(0, beg)); - const matchRight = /^\w*/.exec(line.slice(beg)); - if ( matchLeft === null || matchRight === null ) { return; } - return pickBestHints( - cursor, - matchLeft[1], - matchRight[0], - preparseDirectiveHints - ); - } - if ( line.startsWith('!#') && line !== '!#endif' ) { - const matchLeft = /^!#(\w*)$/.exec(line.slice(0, beg)); - const matchRight = /^\w*/.exec(line.slice(beg)); - if ( matchLeft === null || matchRight === null ) { return; } - const hints = [ 'if ', 'endif\n', 'include ' ]; - return pickBestHints(cursor, matchLeft[1], matchRight[0], hints); - } - }; - - CodeMirror.registerHelper('hint', 'ubo-static-filtering', function(cm) { - const cursor = cm.getCursor(); - const line = cm.getLine(cursor.line); - astParser.parse(line); - if ( astParser.isExtendedFilter() ) { - const anchorNode = astParser.getBranchFromType(sfp.NODE_TYPE_EXT_OPTIONS_ANCHOR); - if ( anchorNode === 0 ) { return; } - let hints; - if ( cursor.ch <= astParser.getNodeStringBeg(anchorNode) ) { - hints = getOriginHints(cursor, line); - } else if ( astParser.isScriptletFilter() ) { - hints = getExtScriptletHints(cursor, line); - } else if ( astParser.isResponseheaderFilter() ) { - hints = getExtHeaderHints(cursor, line); - } else { - hints = getExtSelectorHints(cursor, line); - } - return hints; - } - if ( astParser.isNetworkFilter() ) { - return getNetHints(cursor, line); - } - if ( astParser.isComment() ) { - return getCommentHints(cursor, line); - } - return getOriginHints(cursor, line); - }); -} - -/******************************************************************************/ - -CodeMirror.registerHelper('fold', 'ubo-static-filtering', (( ) => { - const foldIfEndif = function(startLineNo, startLine, cm) { - const lastLineNo = cm.lastLine(); - let endLineNo = startLineNo; - let depth = 1; - while ( endLineNo < lastLineNo ) { - endLineNo += 1; - const line = cm.getLine(endLineNo); - if ( line.startsWith('!#endif') ) { - depth -= 1; - if ( depth === 0 ) { - return { - from: CodeMirror.Pos(startLineNo, startLine.length), - to: CodeMirror.Pos(endLineNo, 0) - }; - } - } - if ( line.startsWith('!#if') ) { - depth += 1; - } - } - }; - - const foldInclude = function(startLineNo, startLine, cm) { - const lastLineNo = cm.lastLine(); - let endLineNo = startLineNo + 1; - if ( endLineNo >= lastLineNo ) { return; } - if ( cm.getLine(endLineNo).startsWith('! >>>>>>>> ') === false ) { - return; - } - while ( endLineNo < lastLineNo ) { - endLineNo += 1; - const line = cm.getLine(endLineNo); - if ( line.startsWith('! <<<<<<<< ') ) { - return { - from: CodeMirror.Pos(startLineNo, startLine.length), - to: CodeMirror.Pos(endLineNo, line.length) - }; - } - } - }; - - return function(cm, start) { - const startLineNo = start.line; - const startLine = cm.getLine(startLineNo); - if ( startLine.startsWith('!#if') ) { - return foldIfEndif(startLineNo, startLine, cm); - } - if ( startLine.startsWith('!#include ') ) { - return foldInclude(startLineNo, startLine, cm); - } - }; -})()); - -/******************************************************************************/ - -// Linter - -{ - const astParser = new sfp.AstFilterParser({ - interactive: true, - nativeCssHas: vAPI.webextFlavor.env.includes('native_css_has'), - }); - - const changeset = []; - let changesetTimer; - - const includeset = new Set(); - let errorCount = 0; - - const ifendifSet = new Set(); - let ifendifSetChanged = false; - - const extractMarkerDetails = (doc, lineHandle) => { - if ( astParser.isUnsupported() ) { - return { lint: 'error', msg: 'Unsupported filter syntax' }; - } - if ( astParser.hasError() ) { - let msg = 'Invalid filter'; - switch ( astParser.astError ) { - case sfp.AST_ERROR_UNSUPPORTED: - msg = `${msg}: Unsupported filter syntax`; - break; - case sfp.AST_ERROR_REGEX: - msg = `${msg}: Bad regular expression`; - break; - case sfp.AST_ERROR_PATTERN: - msg = `${msg}: Bad pattern`; - break; - case sfp.AST_ERROR_DOMAIN_NAME: - msg = `${msg}: Bad domain name`; - break; - case sfp.AST_ERROR_OPTION_BADVALUE: - msg = `${msg}: Bad value assigned to a valid option`; - break; - case sfp.AST_ERROR_OPTION_DUPLICATE: - msg = `${msg}: Duplicate filter option`; - break; - case sfp.AST_ERROR_OPTION_UNKNOWN: - msg = `${msg}: Unsupported filter option`; - break; - case sfp.AST_ERROR_IF_TOKEN_UNKNOWN: - msg = `${msg}: Unknown preparsing token`; - break; - case sfp.AST_ERROR_UNTRUSTED_SOURCE: - msg = `${msg}: Filter requires trusted source`; - break; - default: - if ( astParser.isCosmeticFilter() && astParser.result.error ) { - msg = `${msg}: ${astParser.result.error}`; - } - break; - } - return { lint: 'error', msg }; - } - if ( astParser.astType !== sfp.AST_TYPE_COMMENT ) { return; } - if ( astParser.astTypeFlavor !== sfp.AST_TYPE_COMMENT_PREPARSER ) { - if ( astParser.raw.startsWith('! <<<<<<<< ') === false ) { return; } - for ( const include of includeset ) { - if ( astParser.raw.endsWith(include) === false ) { continue; } - includeset.delete(include); - return { lint: 'include-end' }; - } - return; - } - if ( /^\s*!#if \S+/.test(astParser.raw) ) { - return { - lint: 'if-start', - data: { - state: sfp.utils.preparser.evaluateExpr( - astParser.getTypeString(sfp.NODE_TYPE_PREPARSE_DIRECTIVE_IF_VALUE), - preparseDirectiveEnv - ) ? 'y' : 'n' - } - }; - } - if ( /^\s*!#endif\b/.test(astParser.raw) ) { - return { lint: 'if-end' }; - } - const match = /^\s*!#include\s*(\S+)/.exec(astParser.raw); - if ( match === null ) { return; } - const nextLineHandle = doc.getLineHandle(lineHandle.lineNo() + 1); - if ( nextLineHandle === undefined ) { return; } - if ( nextLineHandle.text.startsWith('! >>>>>>>> ') === false ) { return; } - const includeToken = `/${match[1]}`; - if ( nextLineHandle.text.endsWith(includeToken) === false ) { return; } - includeset.add(includeToken); - return { lint: 'include-start' }; - }; - - const extractMarker = lineHandle => { - const markers = lineHandle.gutterMarkers || null; - return markers !== null - ? markers['CodeMirror-lintgutter'] || null - : null; - }; - - const markerTemplates = { - 'error': { - node: null, - html: [ - '
 ', - '', - '
', - ], - }, - 'if-start': { - node: null, - html: [ - '
 ', - '', - '', - '', - 'Mismatched if-endif directive', - '
', - ], - }, - 'if-end': { - node: null, - html: [ - '
 ', - '', - '', - '', - 'Mismatched if-endif directive', - '
', - ], - }, - 'include-start': { - node: null, - html: [ - '
 ', - '', - '', - '', - '
', - ], - }, - 'include-end': { - node: null, - html: [ - '
 ', - '', - '', - '', - '
', - ], - }, - }; - - const markerFromTemplate = details => { - const template = markerTemplates[details.lint]; - if ( template.node === null ) { - const domParser = new DOMParser(); - const doc = domParser.parseFromString(template.html.join(''), 'text/html'); - template.node = document.adoptNode(qs$(doc, '.CodeMirror-lintmarker')); - } - const node = template.node.cloneNode(true); - if ( details.data instanceof Object ) { - for ( const [ k, v ] of Object.entries(details.data) ) { - node.dataset[k] = `${v}`; - } - } - return node; - }; - - const addMarker = (doc, lineHandle, marker, details) => { - if ( marker && marker.dataset.lint !== details.lint ) { - doc.setGutterMarker(lineHandle, 'CodeMirror-lintgutter', null); - if ( marker.dataset.error === 'y' ) { - errorCount -= 1; - } - if ( marker.dataset.lint === 'if' ) { - ifendifSet.delete(lineHandle); - ifendifSetChanged = true; - } - marker = null; - } - if ( marker === null ) { - marker = markerFromTemplate(details); - doc.setGutterMarker(lineHandle, 'CodeMirror-lintgutter', marker); - if ( marker.dataset.error === 'y' ) { - errorCount += 1; - } - if ( marker.dataset.lint === 'if' ) { - ifendifSet.add(lineHandle); - ifendifSetChanged = true; - } - } else if ( marker.dataset.lint === 'error' ) { - if ( marker.dataset.error !== 'y' ) { - marker.dataset.error = 'y'; - errorCount += 1; - } - } - if ( typeof details.msg !== 'string' || details.msg === '' ) { return; } - const msgElem = qs$(marker, '.msg'); - if ( msgElem === null ) { return; } - msgElem.textContent = details.msg; - }; - - const removeMarker = (doc, lineHandle, marker) => { - doc.setGutterMarker(lineHandle, 'CodeMirror-lintgutter', null); - if ( marker.dataset.error === 'y' ) { - errorCount -= 1; - } - if ( marker.dataset.lint === 'if' ) { - ifendifSet.delete(lineHandle); - ifendifSetChanged = true; - } - }; - - // Analyze whether all if-endif are properly paired - const processIfendifs = ( ) => { - if ( ifendifSet.size === 0 ) { return; } - if ( ifendifSetChanged !== true ) { return; } - const sortFn = (a, b) => a.lineNo() - b.lineNo(); - const sorted = Array.from(ifendifSet).sort(sortFn); - const bad = []; - const stack = []; - for ( const line of sorted ) { - const marker = extractMarker(line); - const fold = marker.dataset.fold; - if ( fold === 'start' ) { - stack.push(line); - } else if ( fold === 'end' ) { - if ( stack.length !== 0 ) { - if ( marker.dataset.error === 'y' ) { - marker.dataset.error = ''; - errorCount -= 1; - } - const ifstart = extractMarker(stack.pop()); - if ( ifstart.dataset.error === 'y' ) { - ifstart.dataset.error = ''; - errorCount -= 1; - } - } else { - bad.push(line); - } - } - } - bad.push(...stack); - for ( const line of bad ) { - const marker = extractMarker(line); - marker.dataset.error = 'y'; - errorCount += 1; - } - ifendifSetChanged = false; - }; - - const processDeletion = (doc, change) => { - let { from, to } = change; - doc.eachLine(from.line, to.line, lineHandle => { - const marker = extractMarker(lineHandle); - if ( marker === null ) { return; } - if ( marker.dataset.error === 'y' ) { - marker.dataset.error = ''; - errorCount -= 1; - } - ifendifSet.delete(lineHandle); - ifendifSetChanged = true; - }); - }; - - const processInsertion = (doc, deadline, change) => { - let { from, to } = change; - doc.eachLine(from, to, lineHandle => { - astParser.parse(lineHandle.text); - const markerDetails = extractMarkerDetails(doc, lineHandle); - const marker = extractMarker(lineHandle); - if ( markerDetails !== undefined ) { - addMarker(doc, lineHandle, marker, markerDetails); - } else if ( marker !== null ) { - removeMarker(doc, lineHandle, marker); - } - from += 1; - if ( (from & 0x0F) !== 0 ) { return; } - if ( deadline.timeRemaining() !== 0 ) { return; } - return true; - }); - if ( from !== to ) { - return { from, to }; - } - }; - - const processChangeset = (doc, deadline) => { - const cm = doc.getEditor(); - cm.startOperation(); - while ( changeset.length !== 0 ) { - const change = processInsertion(doc, deadline, changeset.shift()); - if ( change === undefined ) { continue; } - changeset.unshift(change); - break; - } - cm.endOperation(); - if ( changeset.length !== 0 ) { - return processChangesetAsync(doc); - } - includeset.clear(); - processIfendifs(doc); - CodeMirror.signal(doc.getEditor(), 'linterDone', { errorCount }); - }; - - const processChangesetAsync = doc => { - if ( changesetTimer !== undefined ) { return; } - changesetTimer = self.requestIdleCallback(deadline => { - changesetTimer = undefined; - processChangeset(doc, deadline); - }); - }; - - const onChanges = (cm, changes) => { - if ( changes.length === 0 ) { return; } - const doc = cm.getDoc(); - for ( const change of changes ) { - const from = change.from.line; - const to = from + change.text.length; - changeset.push({ from, to }); - } - processChangesetAsync(doc); - }; - - const onBeforeChanges = (cm, change) => { - const doc = cm.getDoc(); - processDeletion(doc, change); - }; - - const foldRangeFinder = (cm, from) => { - const lineNo = from.line; - const lineHandle = cm.getDoc().getLineHandle(lineNo); - const marker = extractMarker(lineHandle); - if ( marker === null ) { return; } - if ( marker.dataset.fold === undefined ) { return; } - const foldName = marker.dataset.lint; - from.ch = lineHandle.text.length; - const to = { line: 0, ch: 0 }; - const doc = cm.getDoc(); - let depth = 0; - doc.eachLine(from.line, doc.lineCount(), lineHandle => { - const marker = extractMarker(lineHandle); - if ( marker === null ) { return; } - if ( marker.dataset.lint === foldName && marker.dataset.fold === 'start' ) { - depth += 1; - return; - } - if ( marker.dataset.lint !== foldName ) { return; } - if ( marker.dataset.fold !== 'end' ) { return; } - depth -= 1; - if ( depth !== 0 ) { return; } - to.line = lineHandle.lineNo(); - return true; - }); - return { from, to }; - }; - - const onGutterClick = (cm, lineNo, gutterId, ev) => { - if ( ev.button !== 0 ) { return; } - if ( gutterId !== 'CodeMirror-lintgutter' ) { return; } - const doc = cm.getDoc(); - const lineHandle = doc.getLineHandle(lineNo); - const marker = extractMarker(lineHandle); - if ( marker === null ) { return; } - if ( marker.dataset.fold === 'start' ) { - if ( ev.ctrlKey ) { - if ( dom.cl.has(marker, 'folded') ) { - CodeMirror.commands.unfoldAll(cm); - } else { - CodeMirror.commands.foldAll(cm); - } - doc.setCursor(lineNo); - return; - } - cm.foldCode(lineNo, { - widget: '\u00A0\u22EF\u00A0', - rangeFinder: foldRangeFinder, - }); - return; - } - if ( marker.dataset.fold === 'end' ) { - let depth = 1; - let lineNo = lineHandle.lineNo(); - while ( lineNo-- ) { - const prevLineHandle = doc.getLineHandle(lineNo); - const markerFrom = extractMarker(prevLineHandle); - if ( markerFrom === null ) { continue; } - if ( markerFrom.dataset.fold === 'end' ) { - depth += 1; - } else if ( markerFrom.dataset.fold === 'start' ) { - depth -= 1; - if ( depth === 0 ) { - doc.setCursor(lineNo); - break; - } - } - } - return; - } - }; - - self.addEventListener('trustedSource', ev => { - const { trusted } = ev.detail; - astParser.options.trustedSource = trusted; - }); - - self.addEventListener('trustedScriptletTokens', ev => { - astParser.options.trustedScriptletTokens = ev.detail; - }); - - CodeMirror.defineInitHook(cm => { - cm.on('changes', onChanges); - cm.on('beforeChange', onBeforeChanges); - cm.on('gutterClick', onGutterClick); - cm.on('fold', function(cm, from) { - const doc = cm.getDoc(); - const lineHandle = doc.getLineHandle(from.line); - const marker = extractMarker(lineHandle); - dom.cl.add(marker, 'folded'); - }); - cm.on('unfold', function(cm, from) { - const doc = cm.getDoc(); - const lineHandle = doc.getLineHandle(from.line); - const marker = extractMarker(lineHandle); - dom.cl.remove(marker, 'folded'); - }); - }); -} - -/******************************************************************************/ - -// Enhanced word selection - -{ - const selectWordAt = function(cm, pos) { - const { line, ch } = pos; - const s = cm.getLine(line); - const { type: token } = cm.getTokenAt(pos); - let beg, end; - - // Select URL in comments - if ( /\bcomment\b/.test(token) && /\blink\b/.test(token) ) { - const l = /\S+$/.exec(s.slice(0, ch)); - if ( l && /^https?:\/\//.test(s.slice(l.index)) ) { - const r = /^\S+/.exec(s.slice(ch)); - if ( r ) { - beg = l.index; - end = ch + r[0].length; - } - } - } - - // Better word selection for extended filters: prefix - else if ( - /\bline-cm-ext-(?:dom|html|js)\b/.test(token) && - /\bvalue\b/.test(token) - ) { - const l = /[^,.]*$/i.exec(s.slice(0, ch)); - const r = /^[^#,]*/i.exec(s.slice(ch)); - if ( l && r ) { - beg = l.index; - end = ch + r[0].length; - } - } - - // Better word selection for cosmetic and HTML filters: suffix - else if ( /\bline-cm-ext-(?:dom|html)\b/.test(token) ) { - const l = /[#.]?[a-z0-9_-]+$/i.exec(s.slice(0, ch)); - const r = /^[a-z0-9_-]+/i.exec(s.slice(ch)); - if ( l && r ) { - beg = l.index; - end = ch + r[0].length; - if ( /\bdef\b/.test(cm.getTokenTypeAt({ line, ch: beg + 1 })) ) { - beg += 1; - } - } - } - - // Better word selection for network filters - else if ( /\bline-cm-net\b/.test(token) ) { - if ( /\bvalue\b/.test(token) ) { - const l = /[^ ,.=|]*$/i.exec(s.slice(0, ch)); - const r = /^[^ #,|]*/i.exec(s.slice(ch)); - if ( l && r ) { - beg = l.index; - end = ch + r[0].length; - } - } else if ( /\bdef\b/.test(token) ) { - const l = /[a-z0-9-]+$/i.exec(s.slice(0, ch)); - const r = /^[^,]*=[^,]+/i.exec(s.slice(ch)); - if ( l && r ) { - beg = l.index; - end = ch + r[0].length; - } - } - } - - if ( beg === undefined ) { - const { anchor, head } = cm.findWordAt(pos); - return { from: anchor, to: head }; - } - - return { - from: { line, ch: beg }, - to: { line, ch: end }, - }; - }; - - CodeMirror.defineInitHook(cm => { - cm.setOption('configureMouse', function(cm, repeat) { - return { - unit: repeat === 'double' ? selectWordAt : null, - }; - }); - }); -} - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/commands.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/commands.js deleted file mode 100644 index 2f29b23..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/commands.js +++ /dev/null @@ -1,191 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2017-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -import µb from './background.js'; -import { hostnameFromURI } from './uri-utils.js'; - -/******************************************************************************/ - -(( ) => { - -// ***************************************************************************** -// start of local namespace - -if ( vAPI.commands instanceof Object === false ) { return; } - -const relaxBlockingMode = (( ) => { - const reloadTimers = new Map(); - - return function(tab) { - if ( tab instanceof Object === false || tab.id <= 0 ) { return; } - - const normalURL = µb.normalizeTabURL(tab.id, tab.url); - - if ( µb.getNetFilteringSwitch(normalURL) === false ) { return; } - - const hn = hostnameFromURI(normalURL); - const curProfileBits = µb.blockingModeFromHostname(hn); - let newProfileBits; - for ( const profile of µb.liveBlockingProfiles ) { - if ( (curProfileBits & profile.bits & ~1) !== curProfileBits ) { - newProfileBits = profile.bits; - break; - } - } - - // TODO: Reset to original blocking profile? - if ( newProfileBits === undefined ) { return; } - - const noReload = (newProfileBits & 0b00000001) === 0; - - if ( - (curProfileBits & 0b00000010) !== 0 && - (newProfileBits & 0b00000010) === 0 - ) { - µb.toggleHostnameSwitch({ - name: 'no-scripting', - hostname: hn, - state: false, - }); - } - if ( µb.userSettings.advancedUserEnabled ) { - if ( - (curProfileBits & 0b00000100) !== 0 && - (newProfileBits & 0b00000100) === 0 - ) { - µb.toggleFirewallRule({ - tabId: noReload ? tab.id : undefined, - srcHostname: hn, - desHostname: '*', - requestType: '3p', - action: 3, - }); - } - if ( - (curProfileBits & 0b00001000) !== 0 && - (newProfileBits & 0b00001000) === 0 - ) { - µb.toggleFirewallRule({ - srcHostname: hn, - desHostname: '*', - requestType: '3p-script', - action: 3, - }); - } - if ( - (curProfileBits & 0b00010000) !== 0 && - (newProfileBits & 0b00010000) === 0 - ) { - µb.toggleFirewallRule({ - srcHostname: hn, - desHostname: '*', - requestType: '3p-frame', - action: 3, - }); - } - } - - // Reload the target tab? - if ( noReload ) { return; } - - // Reload: use a timer to coalesce bursts of reload commands. - const timer = reloadTimers.get(tab.id) || (( ) => { - const t = vAPI.defer.create(tabId => { - reloadTimers.delete(tabId); - vAPI.tabs.reload(tabId); - }); - reloadTimers.set(tab.id, t); - return t; - })(); - timer.offon(547, tab.id); - }; -})(); - -vAPI.commands.onCommand.addListener(async command => { - // Generic commands - if ( command === 'open-dashboard' ) { - µb.openNewTab({ - url: 'dashboard.html', - select: true, - index: -1, - }); - return; - } - // Tab-specific commands - const tab = await vAPI.tabs.getCurrent(); - if ( tab instanceof Object === false ) { return; } - - switch ( command ) { - case 'launch-element-picker': - if ( µb.userFiltersAreEnabled() === false ) { break; } - /* fall through */ - case 'launch-element-zapper': { - µb.epickerArgs.mouse = false; - µb.elementPickerExec( - tab.id, - 0, - undefined, - command === 'launch-element-zapper' - ); - break; - } - case 'launch-logger': { - const hash = tab.url.startsWith(vAPI.getURL('')) - ? '' - : `#_+${tab.id}`; - µb.openNewTab({ - url: `logger-ui.html${hash}`, - select: true, - index: -1, - }); - break; - } - case 'relax-blocking-mode': - relaxBlockingMode(tab); - break; - case 'toggle-cosmetic-filtering': - µb.toggleHostnameSwitch({ - name: 'no-cosmetic-filtering', - hostname: hostnameFromURI(µb.normalizeTabURL(tab.id, tab.url)), - }); - break; - case 'toggle-javascript': - µb.toggleHostnameSwitch({ - name: 'no-scripting', - hostname: hostnameFromURI(µb.normalizeTabURL(tab.id, tab.url)), - }); - vAPI.tabs.reload(tab.id); - break; - default: - break; - } -}); - -// end of local namespace -// ***************************************************************************** - -})(); - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/console.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/console.js deleted file mode 100644 index 410abbd..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/console.js +++ /dev/null @@ -1,59 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -function ubologSet(state = false) { - if ( state ) { - if ( ubolog.process instanceof Function ) { - ubolog.process(); - } - ubolog = ubologDo; - } else { - ubolog = ubologIgnore; - } -} - -function ubologDo(...args) { - console.info('[uBO]', ...args); -} - -function ubologIgnore() { -} - -let ubolog = (( ) => { - const pending = []; - const store = function(...args) { - pending.push(args); - }; - store.process = function() { - for ( const args of pending ) { - ubologDo(...args); - } - }; - return store; -})(); - -/******************************************************************************/ - -export { ubolog, ubologSet }; diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/contentscript-extra.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/contentscript-extra.js deleted file mode 100644 index 21feb1d..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/contentscript-extra.js +++ /dev/null @@ -1,717 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -if ( - typeof vAPI === 'object' && - typeof vAPI.DOMProceduralFilterer !== 'object' -) { -// >>>>>>>> start of local scope - -/******************************************************************************/ - -const nonVisualElements = { - head: true, - link: true, - meta: true, - script: true, - style: true, -}; - -const regexFromString = (s, exact = false) => { - if ( s === '' ) { return /^/; } - const match = /^\/(.+)\/([imu]*)$/.exec(s); - if ( match !== null ) { - return new RegExp(match[1], match[2] || undefined); - } - const reStr = s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - return new RegExp(exact ? `^${reStr}$` : reStr); -}; - -// 'P' stands for 'Procedural' - -class PSelectorTask { - begin() { - } - end() { - } -} - -class PSelectorVoidTask extends PSelectorTask { - constructor(task) { - super(); - console.info(`uBO: :${task[0]}() operator does not exist`); - } - transpose() { - } -} - -class PSelectorHasTextTask extends PSelectorTask { - constructor(task) { - super(); - this.needle = regexFromString(task[1]); - } - transpose(node, output) { - if ( this.needle.test(node.textContent) ) { - output.push(node); - } - } -} - -class PSelectorIfTask extends PSelectorTask { - constructor(task) { - super(); - this.pselector = new PSelector(task[1]); - } - transpose(node, output) { - if ( this.pselector.test(node) === this.target ) { - output.push(node); - } - } -} -PSelectorIfTask.prototype.target = true; - -class PSelectorIfNotTask extends PSelectorIfTask { -} -PSelectorIfNotTask.prototype.target = false; - -class PSelectorMatchesAttrTask extends PSelectorTask { - constructor(task) { - super(); - this.reAttr = regexFromString(task[1].attr, true); - this.reValue = regexFromString(task[1].value, true); - } - transpose(node, output) { - const attrs = node.getAttributeNames(); - for ( const attr of attrs ) { - if ( this.reAttr.test(attr) === false ) { continue; } - if ( this.reValue.test(node.getAttribute(attr)) === false ) { continue; } - output.push(node); - } - } -} - -class PSelectorMatchesCSSTask extends PSelectorTask { - constructor(task) { - super(); - this.name = task[1].name; - this.pseudo = task[1].pseudo ? `::${task[1].pseudo}` : null; - let arg0 = task[1].value, arg1; - if ( Array.isArray(arg0) ) { - arg1 = arg0[1]; arg0 = arg0[0]; - } - this.value = new RegExp(arg0, arg1); - } - transpose(node, output) { - const style = window.getComputedStyle(node, this.pseudo); - if ( style !== null && this.value.test(style[this.name]) ) { - output.push(node); - } - } -} -class PSelectorMatchesCSSAfterTask extends PSelectorMatchesCSSTask { - constructor(task) { - super(task); - this.pseudo = '::after'; - } -} - -class PSelectorMatchesCSSBeforeTask extends PSelectorMatchesCSSTask { - constructor(task) { - super(task); - this.pseudo = '::before'; - } -} - -class PSelectorMatchesMediaTask extends PSelectorTask { - constructor(task) { - super(); - this.mql = window.matchMedia(task[1]); - if ( this.mql.media === 'not all' ) { return; } - this.mql.addEventListener('change', ( ) => { - if ( typeof vAPI !== 'object' ) { return; } - if ( vAPI === null ) { return; } - const filterer = vAPI.domFilterer && vAPI.domFilterer.proceduralFilterer; - if ( filterer instanceof Object === false ) { return; } - filterer.onDOMChanged([ null ]); - }); - } - transpose(node, output) { - if ( this.mql.matches === false ) { return; } - output.push(node); - } -} - -class PSelectorMatchesPathTask extends PSelectorTask { - constructor(task) { - super(); - this.needle = regexFromString( - task[1].replace(/\P{ASCII}/gu, s => encodeURIComponent(s)) - ); - } - transpose(node, output) { - if ( this.needle.test(self.location.pathname + self.location.search) ) { - output.push(node); - } - } -} - -class PSelectorMatchesPropTask extends PSelectorTask { - constructor(task) { - super(); - this.props = task[1].attr.split('.'); - this.reValue = task[1].value !== '' - ? regexFromString(task[1].value, true) - : null; - } - transpose(node, output) { - let value = node; - for ( const prop of this.props ) { - if ( value === undefined ) { return; } - if ( value === null ) { return; } - value = value[prop]; - } - if ( this.reValue === null ) { - if ( value === undefined ) { return; } - } else if ( this.reValue.test(value) === false ) { - return; - } - output.push(node); - } -} - -class PSelectorMinTextLengthTask extends PSelectorTask { - constructor(task) { - super(); - this.min = task[1]; - } - transpose(node, output) { - if ( node.textContent.length >= this.min ) { - output.push(node); - } - } -} - -class PSelectorOthersTask extends PSelectorTask { - constructor() { - super(); - this.targets = new Set(); - } - begin() { - this.targets.clear(); - } - end(output) { - const toKeep = new Set(this.targets); - const toDiscard = new Set(); - const body = document.body; - const head = document.head; - let discard = null; - for ( let keep of this.targets ) { - while ( keep !== null && keep !== body && keep !== head ) { - toKeep.add(keep); - toDiscard.delete(keep); - discard = keep.previousElementSibling; - while ( discard !== null ) { - if ( nonVisualElements[discard.localName] !== true ) { - if ( toKeep.has(discard) === false ) { - toDiscard.add(discard); - } - } - discard = discard.previousElementSibling; - } - discard = keep.nextElementSibling; - while ( discard !== null ) { - if ( nonVisualElements[discard.localName] !== true ) { - if ( toKeep.has(discard) === false ) { - toDiscard.add(discard); - } - } - discard = discard.nextElementSibling; - } - keep = keep.parentElement; - } - } - for ( discard of toDiscard ) { - output.push(discard); - } - this.targets.clear(); - } - transpose(candidate) { - for ( const target of this.targets ) { - if ( target.contains(candidate) ) { return; } - if ( candidate.contains(target) ) { - this.targets.delete(target); - } - } - this.targets.add(candidate); - } -} - -class PSelectorShadowTask extends PSelectorTask { - constructor(task) { - super(); - this.selector = task[1]; - } - transpose(node, output) { - const root = this.openOrClosedShadowRoot(node); - if ( root === null ) { return; } - const nodes = root.querySelectorAll(this.selector); - output.push(...nodes); - } - get openOrClosedShadowRoot() { - if ( PSelectorShadowTask.openOrClosedShadowRoot !== undefined ) { - return PSelectorShadowTask.openOrClosedShadowRoot; - } - if ( typeof chrome === 'object' && chrome !== null ) { - if ( chrome.dom instanceof Object ) { - if ( typeof chrome.dom.openOrClosedShadowRoot === 'function' ) { - PSelectorShadowTask.openOrClosedShadowRoot = - chrome.dom.openOrClosedShadowRoot; - return PSelectorShadowTask.openOrClosedShadowRoot; - } - } - } - PSelectorShadowTask.openOrClosedShadowRoot = node => - node.openOrClosedShadowRoot || null; - return PSelectorShadowTask.openOrClosedShadowRoot; - } -} - -// https://github.com/AdguardTeam/ExtendedCss/issues/31#issuecomment-302391277 -// Prepend `:scope ` if needed. -class PSelectorSpathTask extends PSelectorTask { - constructor(task) { - super(); - this.spath = task[1]; - this.nth = /^(?:\s*[+~]|:)/.test(this.spath); - if ( this.nth ) { return; } - if ( /^\s*>/.test(this.spath) ) { - this.spath = `:scope ${this.spath.trim()}`; - } - } - transpose(node, output) { - const nodes = this.nth - ? PSelectorSpathTask.qsa(node, this.spath) - : node.querySelectorAll(this.spath); - for ( const node of nodes ) { - output.push(node); - } - } - // Helper method for other operators. - static qsa(node, selector) { - const parent = node.parentElement; - if ( parent === null ) { return []; } - let pos = 1; - for (;;) { - node = node.previousElementSibling; - if ( node === null ) { break; } - pos += 1; - } - return parent.querySelectorAll( - `:scope > :nth-child(${pos})${selector}` - ); - } -} - -class PSelectorUpwardTask extends PSelectorTask { - constructor(task) { - super(); - const arg = task[1]; - if ( typeof arg === 'number' ) { - this.i = arg; - } else { - this.s = arg; - } - } - transpose(node, output) { - if ( this.s !== '' ) { - const parent = node.parentElement; - if ( parent === null ) { return; } - node = parent.closest(this.s); - if ( node === null ) { return; } - } else { - let nth = this.i; - for (;;) { - node = node.parentElement; - if ( node === null ) { return; } - nth -= 1; - if ( nth === 0 ) { break; } - } - } - output.push(node); - } -} -PSelectorUpwardTask.prototype.i = 0; -PSelectorUpwardTask.prototype.s = ''; - -class PSelectorWatchAttrs extends PSelectorTask { - constructor(task) { - super(); - this.observer = null; - this.observed = new WeakSet(); - this.observerOptions = { - attributes: true, - subtree: true, - }; - const attrs = task[1]; - if ( Array.isArray(attrs) && attrs.length !== 0 ) { - this.observerOptions.attributeFilter = task[1]; - } - } - // TODO: Is it worth trying to re-apply only the current selector? - handler() { - const filterer = - vAPI.domFilterer && vAPI.domFilterer.proceduralFilterer; - if ( filterer instanceof Object ) { - filterer.onDOMChanged([ null ]); - } - } - transpose(node, output) { - output.push(node); - if ( this.observed.has(node) ) { return; } - if ( this.observer === null ) { - this.observer = new MutationObserver(this.handler); - } - this.observer.observe(node, this.observerOptions); - this.observed.add(node); - } -} - -class PSelectorXpathTask extends PSelectorTask { - constructor(task) { - super(); - this.xpe = document.createExpression(task[1], null); - this.xpr = null; - } - transpose(node, output) { - this.xpr = this.xpe.evaluate( - node, - XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, - this.xpr - ); - let j = this.xpr.snapshotLength; - while ( j-- ) { - const node = this.xpr.snapshotItem(j); - if ( node.nodeType === 1 ) { - output.push(node); - } - } - } -} - -class PSelector { - constructor(o) { - this.selector = o.selector; - this.tasks = []; - const tasks = []; - if ( Array.isArray(o.tasks) === false ) { return; } - for ( const task of o.tasks ) { - const ctor = this.operatorToTaskMap.get(task[0]) || PSelectorVoidTask; - tasks.push(new ctor(task)); - } - this.tasks = tasks; - } - prime(input) { - const root = input || document; - if ( this.selector === '' ) { return [ root ]; } - if ( input !== document ) { - const c0 = this.selector.charCodeAt(0); - if ( c0 === 0x2B /* + */ || c0 === 0x7E /* ~ */ ) { - return Array.from(PSelectorSpathTask.qsa(input, this.selector)); - } else if ( c0 === 0x3E /* > */ ) { - return Array.from(input.querySelectorAll(`:scope ${this.selector}`)); - } - } - return Array.from(root.querySelectorAll(this.selector)); - } - exec(input) { - let nodes = this.prime(input); - for ( const task of this.tasks ) { - if ( nodes.length === 0 ) { break; } - const transposed = []; - task.begin(); - for ( const node of nodes ) { - task.transpose(node, transposed); - } - task.end(transposed); - nodes = transposed; - } - return nodes; - } - test(input) { - const nodes = this.prime(input); - for ( const node of nodes ) { - let output = [ node ]; - for ( const task of this.tasks ) { - const transposed = []; - task.begin(); - for ( const node of output ) { - task.transpose(node, transposed); - } - task.end(transposed); - output = transposed; - if ( output.length === 0 ) { break; } - } - if ( output.length !== 0 ) { return true; } - } - return false; - } -} -PSelector.prototype.operatorToTaskMap = new Map([ - [ 'has', PSelectorIfTask ], - [ 'has-text', PSelectorHasTextTask ], - [ 'if', PSelectorIfTask ], - [ 'if-not', PSelectorIfNotTask ], - [ 'matches-attr', PSelectorMatchesAttrTask ], - [ 'matches-css', PSelectorMatchesCSSTask ], - [ 'matches-css-after', PSelectorMatchesCSSAfterTask ], - [ 'matches-css-before', PSelectorMatchesCSSBeforeTask ], - [ 'matches-media', PSelectorMatchesMediaTask ], - [ 'matches-path', PSelectorMatchesPathTask ], - [ 'matches-prop', PSelectorMatchesPropTask ], - [ 'min-text-length', PSelectorMinTextLengthTask ], - [ 'not', PSelectorIfNotTask ], - [ 'others', PSelectorOthersTask ], - [ 'shadow', PSelectorShadowTask ], - [ 'spath', PSelectorSpathTask ], - [ 'upward', PSelectorUpwardTask ], - [ 'watch-attr', PSelectorWatchAttrs ], - [ 'xpath', PSelectorXpathTask ], -]); - -class PSelectorRoot extends PSelector { - constructor(o) { - super(o); - this.budget = 200; // I arbitrary picked a 1/5 second - this.raw = o.raw; - this.cost = 0; - this.lastAllowanceTime = 0; - this.action = o.action; - } - prime(input) { - try { - return super.prime(input); - } catch (ex) { - } - return []; - } -} -PSelectorRoot.prototype.hit = false; - -class ProceduralFilterer { - constructor(domFilterer) { - this.domFilterer = domFilterer; - this.mustApplySelectors = false; - this.selectors = new Map(); - this.masterToken = vAPI.randomToken(); - this.styleTokenMap = new Map(); - this.styledNodes = new Set(); - if ( vAPI.domWatcher instanceof Object ) { - vAPI.domWatcher.addListener(this); - } - } - - addProceduralSelectors(selectors) { - const addedSelectors = []; - let mustCommit = false; - for ( const selector of selectors ) { - if ( this.selectors.has(selector.raw) ) { continue; } - const pselector = new PSelectorRoot(selector); - this.primeProceduralSelector(pselector); - this.selectors.set(selector.raw, pselector); - addedSelectors.push(pselector); - mustCommit = true; - } - if ( mustCommit === false ) { return; } - this.mustApplySelectors = this.selectors.size !== 0; - this.domFilterer.commit(); - if ( this.domFilterer.hasListeners() ) { - this.domFilterer.triggerListeners({ - procedural: addedSelectors - }); - } - } - - // This allows to perform potentially expensive initialization steps - // before the filters are ready to be applied. - primeProceduralSelector(pselector) { - if ( pselector.action === undefined ) { - this.styleTokenFromStyle(vAPI.hideStyle); - } else if ( pselector.action[0] === 'style' ) { - this.styleTokenFromStyle(pselector.action[1]); - } - return pselector; - } - - commitNow() { - if ( this.selectors.size === 0 ) { return; } - - this.mustApplySelectors = false; - - // https://github.com/uBlockOrigin/uBlock-issues/issues/341 - // Be ready to unhide nodes which no longer matches any of - // the procedural selectors. - const toUnstyle = this.styledNodes; - this.styledNodes = new Set(); - - let t0 = Date.now(); - - for ( const pselector of this.selectors.values() ) { - const allowance = Math.floor((t0 - pselector.lastAllowanceTime) / 2000); - if ( allowance >= 1 ) { - pselector.budget += allowance * 50; - if ( pselector.budget > 200 ) { pselector.budget = 200; } - pselector.lastAllowanceTime = t0; - } - if ( pselector.budget <= 0 ) { continue; } - const nodes = pselector.exec(); - const t1 = Date.now(); - pselector.budget += t0 - t1; - if ( pselector.budget < -500 ) { - console.info('uBO: disabling %s', pselector.raw); - pselector.budget = -0x7FFFFFFF; - } - t0 = t1; - if ( nodes.length === 0 ) { continue; } - pselector.hit = true; - this.processNodes(nodes, pselector.action); - } - - this.unprocessNodes(toUnstyle); - } - - styleTokenFromStyle(style) { - if ( style === undefined ) { return; } - let styleToken = this.styleTokenMap.get(style); - if ( styleToken !== undefined ) { return styleToken; } - styleToken = vAPI.randomToken(); - this.styleTokenMap.set(style, styleToken); - this.domFilterer.addCSS( - `[${this.masterToken}][${styleToken}]\n{${style}}`, - { silent: true, mustInject: true } - ); - return styleToken; - } - - processNodes(nodes, action) { - const op = action && action[0] || ''; - const arg = op !== '' ? action[1] : ''; - switch ( op ) { - case '': - /* fall through */ - case 'style': { - const styleToken = this.styleTokenFromStyle( - arg === '' ? vAPI.hideStyle : arg - ); - for ( const node of nodes ) { - node.setAttribute(this.masterToken, ''); - node.setAttribute(styleToken, ''); - this.styledNodes.add(node); - } - break; - } - case 'remove': { - for ( const node of nodes ) { - node.remove(); - node.textContent = ''; - } - break; - } - case 'remove-attr': { - const reAttr = regexFromString(arg, true); - for ( const node of nodes ) { - for ( const name of node.getAttributeNames() ) { - if ( reAttr.test(name) === false ) { continue; } - node.removeAttribute(name); - } - } - break; - } - case 'remove-class': { - const reClass = regexFromString(arg, true); - for ( const node of nodes ) { - const cl = node.classList; - for ( const name of cl.values() ) { - if ( reClass.test(name) === false ) { continue; } - cl.remove(name); - } - } - break; - } - default: - break; - } - } - - // TODO: Current assumption is one style per hit element. Could be an - // issue if an element has multiple styling and one styling is - // brought back. Possibly too rare to care about this for now. - unprocessNodes(nodes) { - for ( const node of nodes ) { - if ( this.styledNodes.has(node) ) { continue; } - node.removeAttribute(this.masterToken); - } - } - - createProceduralFilter(o) { - return this.primeProceduralSelector( - new PSelectorRoot(typeof o === 'string' ? JSON.parse(o) : o) - ); - } - - onDOMCreated() { - } - - onDOMChanged(addedNodes, removedNodes) { - if ( this.selectors.size === 0 ) { return; } - this.mustApplySelectors = - this.mustApplySelectors || - addedNodes.length !== 0 || - removedNodes; - this.domFilterer.commit(); - } -} - -vAPI.DOMProceduralFilterer = ProceduralFilterer; - -/******************************************************************************/ - -// >>>>>>>> end of local scope -} - - - - - - - - -/******************************************************************************* - - DO NOT: - - Remove the following code - - Add code beyond the following code - Reason: - - https://github.com/gorhill/uBlock/pull/3721 - - uBO never uses the return value from injected content scripts - -**/ - -void 0; diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/contentscript.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/contentscript.js deleted file mode 100644 index 46df837..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/contentscript.js +++ /dev/null @@ -1,1330 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/******************************************************************************* - - +--> domCollapser - | - | - domWatcher--+ - | +-- domSurveyor - | | - +--> domFilterer --+-- [domLogger] - | | - | +-- [domInspector] - | - [domProceduralFilterer] - - domWatcher: - Watches for changes in the DOM, and notify the other components about these - changes. - - domCollapser: - Enforces the collapsing of DOM elements for which a corresponding - resource was blocked through network filtering. - - domFilterer: - Enforces the filtering of DOM elements, by feeding it cosmetic filters. - - domProceduralFilterer: - Enforce the filtering of DOM elements through procedural cosmetic filters. - Loaded on demand, only when needed. - - domSurveyor: - Surveys the DOM to find new cosmetic filters to apply to the current page. - - domLogger: - Surveys the page to find and report the injected cosmetic filters blocking - actual elements on the current page. This component is dynamically loaded - IF AND ONLY IF uBO's logger is opened. - - If page is whitelisted: - - domWatcher: off - - domCollapser: off - - domFilterer: off - - domSurveyor: off - - domLogger: off - - I verified that the code in this file is completely flushed out of memory - when a page is whitelisted. - - If cosmetic filtering is disabled: - - domWatcher: on - - domCollapser: on - - domFilterer: off - - domSurveyor: off - - domLogger: off - - If generic cosmetic filtering is disabled: - - domWatcher: on - - domCollapser: on - - domFilterer: on - - domSurveyor: off - - domLogger: on if uBO logger is opened - - If generic cosmetic filtering is enabled: - - domWatcher: on - - domCollapser: on - - domFilterer: on - - domSurveyor: on - - domLogger: on if uBO logger is opened - - Additionally, the domSurveyor can turn itself off once it decides that - it has become pointless (repeatedly not finding new cosmetic filters). - - The domFilterer makes use of platform-dependent user stylesheets[1]. - - [1] "user stylesheets" refer to local CSS rules which have priority over, - and can't be overridden by a web page's own CSS rules. - -*/ - -// Abort execution if our global vAPI object does not exist. -// https://github.com/chrisaljoudi/uBlock/issues/456 -// https://github.com/gorhill/uBlock/issues/2029 - -// >>>>>>>> start of HUGE-IF-BLOCK -if ( typeof vAPI === 'object' && !vAPI.contentScript ) { - -/******************************************************************************/ -/******************************************************************************/ -/******************************************************************************/ - -vAPI.contentScript = true; - -/******************************************************************************/ -/******************************************************************************/ -/******************************************************************************/ - -// https://github.com/uBlockOrigin/uBlock-issues/issues/688#issuecomment-663657508 -{ - let context = self; - try { - while ( - context !== self.top && - context.location.href.startsWith('about:blank') && - context.parent.location.href - ) { - context = context.parent; - } - } catch(ex) { - } - vAPI.effectiveSelf = context; -} - -/******************************************************************************/ -/******************************************************************************/ -/******************************************************************************/ - -vAPI.userStylesheet = { - added: new Set(), - removed: new Set(), - apply: function(callback) { - if ( this.added.size === 0 && this.removed.size === 0 ) { return; } - vAPI.messaging.send('vapi', { - what: 'userCSS', - add: Array.from(this.added), - remove: Array.from(this.removed), - }).then(( ) => { - if ( callback instanceof Function === false ) { return; } - callback(); - }); - this.added.clear(); - this.removed.clear(); - }, - add: function(cssText, now) { - if ( cssText === '' ) { return; } - this.added.add(cssText); - if ( now ) { this.apply(); } - }, - remove: function(cssText, now) { - if ( cssText === '' ) { return; } - this.removed.add(cssText); - if ( now ) { this.apply(); } - } -}; - -/******************************************************************************/ -/******************************************************************************/ -/******************************************************************************* - - The purpose of SafeAnimationFrame is to take advantage of the behavior of - window.requestAnimationFrame[1]. If we use an animation frame as a timer, - then this timer is described as follow: - - - time events are throttled by the browser when the viewport is not visible -- - there is no point for uBO to play with the DOM if the document is not - visible. - - time events are micro tasks[2]. - - time events are synchronized to monitor refresh, meaning that they can fire - at most 1/60 (typically). - - If a delay value is provided, a plain timer is first used. Plain timers are - macro-tasks, so this is good when uBO wants to yield to more important tasks - on a page. Once the plain timer elapse, an animation frame is used to trigger - the next time at which to execute the job. - - [1] https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame - [2] https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/ - -*/ - -// https://github.com/gorhill/uBlock/issues/2147 - -vAPI.SafeAnimationFrame = class { - constructor(callback) { - this.fid = this.tid = undefined; - this.callback = callback; - } - start(delay) { - if ( self.vAPI instanceof Object === false ) { return; } - if ( delay === undefined ) { - if ( this.fid === undefined ) { - this.fid = requestAnimationFrame(( ) => { this.onRAF(); } ); - } - if ( this.tid === undefined ) { - this.tid = vAPI.setTimeout(( ) => { this.onSTO(); }, 20000); - } - return; - } - if ( this.fid === undefined && this.tid === undefined ) { - this.tid = vAPI.setTimeout(( ) => { this.macroToMicro(); }, delay); - } - } - clear() { - if ( this.fid !== undefined ) { - cancelAnimationFrame(this.fid); - this.fid = undefined; - } - if ( this.tid !== undefined ) { - clearTimeout(this.tid); - this.tid = undefined; - } - } - macroToMicro() { - this.tid = undefined; - this.start(); - } - onRAF() { - if ( this.tid !== undefined ) { - clearTimeout(this.tid); - this.tid = undefined; - } - this.fid = undefined; - this.callback(); - } - onSTO() { - if ( this.fid !== undefined ) { - cancelAnimationFrame(this.fid); - this.fid = undefined; - } - this.tid = undefined; - this.callback(); - } -}; - -/******************************************************************************/ -/******************************************************************************/ -/******************************************************************************/ - -// https://github.com/uBlockOrigin/uBlock-issues/issues/552 -// Listen and report CSP violations so that blocked resources through CSP -// are properly reported in the logger. - -{ - const newEvents = new Set(); - const allEvents = new Set(); - let timer; - - const send = function() { - if ( self.vAPI instanceof Object === false ) { return; } - vAPI.messaging.send('scriptlets', { - what: 'securityPolicyViolation', - type: 'net', - docURL: document.location.href, - violations: Array.from(newEvents), - }).then(response => { - if ( response === true ) { return; } - stop(); - }); - for ( const event of newEvents ) { - allEvents.add(event); - } - newEvents.clear(); - }; - - const sendAsync = function() { - if ( timer !== undefined ) { return; } - timer = self.requestIdleCallback( - ( ) => { timer = undefined; send(); }, - { timeout: 2063 } - ); - }; - - const listener = function(ev) { - if ( ev.isTrusted !== true ) { return; } - if ( ev.disposition !== 'enforce' ) { return; } - const json = JSON.stringify({ - url: ev.blockedURL || ev.blockedURI, - policy: ev.originalPolicy, - directive: ev.effectiveDirective || ev.violatedDirective, - }); - if ( allEvents.has(json) ) { return; } - newEvents.add(json); - sendAsync(); - }; - - const stop = function() { - newEvents.clear(); - allEvents.clear(); - if ( timer !== undefined ) { - self.cancelIdleCallback(timer); - timer = undefined; - } - document.removeEventListener('securitypolicyviolation', listener); - if ( vAPI ) { vAPI.shutdown.remove(stop); } - }; - - document.addEventListener('securitypolicyviolation', listener); - vAPI.shutdown.add(stop); - - // We need to call at least once to find out whether we really need to - // listen to CSP violations. - sendAsync(); -} - -/******************************************************************************/ -/******************************************************************************/ -/******************************************************************************/ - -// vAPI.domWatcher - -{ - vAPI.domMutationTime = Date.now(); - - const addedNodeLists = []; - const removedNodeLists = []; - const addedNodes = []; - const ignoreTags = new Set([ 'br', 'head', 'link', 'meta', 'script', 'style' ]); - const listeners = []; - - let domLayoutObserver; - let listenerIterator = []; - let listenerIteratorDirty = false; - let removedNodes = false; - let safeObserverHandlerTimer; - - const safeObserverHandler = function() { - let i = addedNodeLists.length; - while ( i-- ) { - const nodeList = addedNodeLists[i]; - let iNode = nodeList.length; - while ( iNode-- ) { - const node = nodeList[iNode]; - if ( node.nodeType !== 1 ) { continue; } - if ( ignoreTags.has(node.localName) ) { continue; } - if ( node.parentElement === null ) { continue; } - addedNodes.push(node); - } - } - addedNodeLists.length = 0; - i = removedNodeLists.length; - while ( i-- && removedNodes === false ) { - const nodeList = removedNodeLists[i]; - let iNode = nodeList.length; - while ( iNode-- ) { - if ( nodeList[iNode].nodeType !== 1 ) { continue; } - removedNodes = true; - break; - } - } - removedNodeLists.length = 0; - if ( addedNodes.length === 0 && removedNodes === false ) { return; } - for ( const listener of getListenerIterator() ) { - try { listener.onDOMChanged(addedNodes, removedNodes); } - catch (ex) { } - } - addedNodes.length = 0; - removedNodes = false; - vAPI.domMutationTime = Date.now(); - }; - - // https://github.com/chrisaljoudi/uBlock/issues/205 - // Do not handle added node directly from within mutation observer. - const observerHandler = function(mutations) { - let i = mutations.length; - while ( i-- ) { - const mutation = mutations[i]; - let nodeList = mutation.addedNodes; - if ( nodeList.length !== 0 ) { - addedNodeLists.push(nodeList); - } - nodeList = mutation.removedNodes; - if ( nodeList.length !== 0 ) { - removedNodeLists.push(nodeList); - } - } - if ( addedNodeLists.length !== 0 || removedNodeLists.length !== 0 ) { - safeObserverHandlerTimer.start( - addedNodeLists.length < 100 ? 1 : undefined - ); - } - }; - - const startMutationObserver = function() { - if ( domLayoutObserver !== undefined ) { return; } - domLayoutObserver = new MutationObserver(observerHandler); - domLayoutObserver.observe(document, { - //attributeFilter: [ 'class', 'id' ], - //attributes: true, - childList: true, - subtree: true - }); - safeObserverHandlerTimer = new vAPI.SafeAnimationFrame(safeObserverHandler); - vAPI.shutdown.add(cleanup); - }; - - const stopMutationObserver = function() { - if ( domLayoutObserver === undefined ) { return; } - cleanup(); - vAPI.shutdown.remove(cleanup); - }; - - const getListenerIterator = function() { - if ( listenerIteratorDirty ) { - listenerIterator = listeners.slice(); - listenerIteratorDirty = false; - } - return listenerIterator; - }; - - const addListener = function(listener) { - if ( listeners.indexOf(listener) !== -1 ) { return; } - listeners.push(listener); - listenerIteratorDirty = true; - if ( domLayoutObserver === undefined ) { return; } - try { listener.onDOMCreated(); } - catch (ex) { } - startMutationObserver(); - }; - - const removeListener = function(listener) { - const pos = listeners.indexOf(listener); - if ( pos === -1 ) { return; } - listeners.splice(pos, 1); - listenerIteratorDirty = true; - if ( listeners.length === 0 ) { - stopMutationObserver(); - } - }; - - const cleanup = function() { - if ( domLayoutObserver !== undefined ) { - domLayoutObserver.disconnect(); - domLayoutObserver = undefined; - } - if ( safeObserverHandlerTimer !== undefined ) { - safeObserverHandlerTimer.clear(); - safeObserverHandlerTimer = undefined; - } - }; - - const start = function() { - for ( const listener of getListenerIterator() ) { - try { listener.onDOMCreated(); } - catch (ex) { } - } - startMutationObserver(); - }; - - vAPI.domWatcher = { start, addListener, removeListener }; -} - -/******************************************************************************/ -/******************************************************************************/ -/******************************************************************************* - - The DOM filterer is the heart of uBO's cosmetic filtering. - - DOMFilterer: adds procedural cosmetic filtering - -*/ - -vAPI.hideStyle = 'display:none!important;'; - -vAPI.DOMFilterer = class { - constructor() { - this.commitTimer = new vAPI.SafeAnimationFrame( - ( ) => { this.commitNow(); } - ); - this.disabled = false; - this.listeners = []; - this.stylesheets = []; - this.exceptedCSSRules = []; - this.exceptions = []; - this.convertedProceduralFilters = []; - this.proceduralFilterer = null; - } - - explodeCSS(css) { - const out = []; - const cssHide = `{${vAPI.hideStyle}}`; - const blocks = css.trim().split(/\n\n+/); - for ( const block of blocks ) { - if ( block.endsWith(cssHide) === false ) { continue; } - out.push(block.slice(0, -cssHide.length).trim()); - } - return out; - } - - addCSS(css, details = {}) { - if ( typeof css !== 'string' || css.length === 0 ) { return; } - if ( this.stylesheets.includes(css) ) { return; } - this.stylesheets.push(css); - if ( details.mustInject && this.disabled === false ) { - vAPI.userStylesheet.add(css); - } - if ( this.hasListeners() === false ) { return; } - if ( details.silent ) { return; } - this.triggerListeners({ declarative: this.explodeCSS(css) }); - } - - exceptCSSRules(exceptions) { - if ( exceptions.length === 0 ) { return; } - this.exceptedCSSRules.push(...exceptions); - if ( this.hasListeners() ) { - this.triggerListeners({ exceptions }); - } - } - - addListener(listener) { - if ( this.listeners.indexOf(listener) !== -1 ) { return; } - this.listeners.push(listener); - } - - removeListener(listener) { - const pos = this.listeners.indexOf(listener); - if ( pos === -1 ) { return; } - this.listeners.splice(pos, 1); - } - - hasListeners() { - return this.listeners.length !== 0; - } - - triggerListeners(changes) { - for ( const listener of this.listeners ) { - listener.onFiltersetChanged(changes); - } - } - - toggle(state, callback) { - if ( state === undefined ) { state = this.disabled; } - if ( state !== this.disabled ) { return; } - this.disabled = !state; - const uss = vAPI.userStylesheet; - for ( const css of this.stylesheets ) { - if ( this.disabled ) { - uss.remove(css); - } else { - uss.add(css); - } - } - uss.apply(callback); - } - - // Here we will deal with: - // - Injecting low priority user styles; - // - Notifying listeners about changed filterset. - // https://www.reddit.com/r/uBlockOrigin/comments/9jj0y1/no_longer_blocking_ads/ - // Ensure vAPI is still valid -- it can go away by the time we are - // called, since the port could be force-disconnected from the main - // process. Another approach would be to have vAPI.SafeAnimationFrame - // register a shutdown job: to evaluate. For now I will keep the fix - // trivial. - commitNow() { - this.commitTimer.clear(); - if ( vAPI instanceof Object === false ) { return; } - vAPI.userStylesheet.apply(); - if ( this.proceduralFilterer instanceof Object ) { - this.proceduralFilterer.commitNow(); - } - } - - commit(commitNow) { - if ( commitNow ) { - this.commitTimer.clear(); - this.commitNow(); - } else { - this.commitTimer.start(); - } - } - - proceduralFiltererInstance() { - if ( this.proceduralFilterer instanceof Object === false ) { - if ( vAPI.DOMProceduralFilterer instanceof Object === false ) { - return null; - } - this.proceduralFilterer = new vAPI.DOMProceduralFilterer(this); - } - return this.proceduralFilterer; - } - - addProceduralSelectors(selectors) { - const procedurals = []; - for ( const raw of selectors ) { - procedurals.push(JSON.parse(raw)); - } - if ( procedurals.length === 0 ) { return; } - const pfilterer = this.proceduralFiltererInstance(); - if ( pfilterer !== null ) { - pfilterer.addProceduralSelectors(procedurals); - } - } - - createProceduralFilter(o) { - const pfilterer = this.proceduralFiltererInstance(); - if ( pfilterer === null ) { return; } - return pfilterer.createProceduralFilter(o); - } - - getAllSelectors(bits = 0) { - const out = { - declarative: [], - exceptions: this.exceptedCSSRules, - }; - const hasProcedural = this.proceduralFilterer instanceof Object; - const includePrivateSelectors = (bits & 0b01) !== 0; - const masterToken = hasProcedural - ? `[${this.proceduralFilterer.masterToken}]` - : undefined; - for ( const css of this.stylesheets ) { - for ( const block of this.explodeCSS(css) ) { - if ( - includePrivateSelectors === false && - masterToken !== undefined && - block.startsWith(masterToken) - ) { - continue; - } - out.declarative.push(block); - } - } - const excludeProcedurals = (bits & 0b10) !== 0; - if ( excludeProcedurals === false ) { - out.procedural = []; - if ( hasProcedural ) { - out.procedural.push( - ...this.proceduralFilterer.selectors.values() - ); - } - const proceduralFilterer = this.proceduralFiltererInstance(); - if ( proceduralFilterer !== null ) { - for ( const json of this.convertedProceduralFilters ) { - const pfilter = proceduralFilterer.createProceduralFilter(json); - pfilter.converted = true; - out.procedural.push(pfilter); - } - } - } - return out; - } - - getAllExceptionSelectors() { - return this.exceptions.join(',\n'); - } -}; - -/******************************************************************************/ -/******************************************************************************/ -/******************************************************************************/ - -// vAPI.domCollapser - -{ - const messaging = vAPI.messaging; - const toCollapse = new Map(); - const src1stProps = { - audio: 'currentSrc', - embed: 'src', - iframe: 'src', - img: 'currentSrc', - object: 'data', - video: 'currentSrc', - }; - const src2ndProps = { - audio: 'src', - img: 'src', - video: 'src', - }; - const tagToTypeMap = { - audio: 'media', - embed: 'object', - iframe: 'sub_frame', - img: 'image', - object: 'object', - video: 'media', - }; - let requestIdGenerator = 1, - processTimer, - cachedBlockedSet, - cachedBlockedSetHash, - cachedBlockedSetTimer, - toProcess = [], - toFilter = [], - netSelectorCacheCount = 0; - - const cachedBlockedSetClear = function() { - cachedBlockedSet = - cachedBlockedSetHash = - cachedBlockedSetTimer = undefined; - }; - - // https://github.com/chrisaljoudi/uBlock/issues/399 - // https://github.com/gorhill/uBlock/issues/2848 - // Use a user stylesheet to collapse placeholders. - const getCollapseToken = ( ) => { - if ( collapseToken === undefined ) { - collapseToken = vAPI.randomToken(); - vAPI.userStylesheet.add( - `[${collapseToken}]\n{display:none!important;}`, - true - ); - } - return collapseToken; - }; - let collapseToken; - - // https://github.com/chrisaljoudi/uBlock/issues/174 - // Do not remove fragment from src URL - const onProcessed = function(response) { - // This happens if uBO is disabled or restarted. - if ( response instanceof Object === false ) { - toCollapse.clear(); - return; - } - - const targets = toCollapse.get(response.id); - if ( targets === undefined ) { return; } - - toCollapse.delete(response.id); - if ( cachedBlockedSetHash !== response.hash ) { - cachedBlockedSet = new Set(response.blockedResources); - cachedBlockedSetHash = response.hash; - if ( cachedBlockedSetTimer !== undefined ) { - clearTimeout(cachedBlockedSetTimer); - } - cachedBlockedSetTimer = vAPI.setTimeout(cachedBlockedSetClear, 30000); - } - if ( cachedBlockedSet === undefined || cachedBlockedSet.size === 0 ) { - return; - } - - const selectors = []; - let netSelectorCacheCountMax = response.netSelectorCacheCountMax; - - for ( const target of targets ) { - const tag = target.localName; - let prop = src1stProps[tag]; - if ( prop === undefined ) { continue; } - let src = target[prop]; - if ( typeof src !== 'string' || src.length === 0 ) { - prop = src2ndProps[tag]; - if ( prop === undefined ) { continue; } - src = target[prop]; - if ( typeof src !== 'string' || src.length === 0 ) { continue; } - } - if ( cachedBlockedSet.has(tagToTypeMap[tag] + ' ' + src) === false ) { - continue; - } - target.setAttribute(getCollapseToken(), ''); - // https://github.com/chrisaljoudi/uBlock/issues/1048 - // Use attribute to construct CSS rule - if ( netSelectorCacheCount > netSelectorCacheCountMax ) { continue; } - const value = target.getAttribute(prop); - if ( value ) { - selectors.push(`${tag}[${prop}="${CSS.escape(value)}"]`); - netSelectorCacheCount += 1; - } - } - - if ( selectors.length === 0 ) { return; } - messaging.send('contentscript', { - what: 'cosmeticFiltersInjected', - type: 'net', - hostname: window.location.hostname, - selectors, - }); - }; - - const send = function() { - processTimer = undefined; - toCollapse.set(requestIdGenerator, toProcess); - messaging.send('contentscript', { - what: 'getCollapsibleBlockedRequests', - id: requestIdGenerator, - frameURL: window.location.href, - resources: toFilter, - hash: cachedBlockedSetHash, - }).then(response => { - onProcessed(response); - }); - toProcess = []; - toFilter = []; - requestIdGenerator += 1; - }; - - const process = function(delay) { - if ( toProcess.length === 0 ) { return; } - if ( delay === 0 ) { - if ( processTimer !== undefined ) { - clearTimeout(processTimer); - } - send(); - } else if ( processTimer === undefined ) { - processTimer = vAPI.setTimeout(send, delay || 20); - } - }; - - const add = function(target) { - toProcess[toProcess.length] = target; - }; - - const addMany = function(targets) { - for ( const target of targets ) { - add(target); - } - }; - - const iframeSourceModified = function(mutations) { - for ( const mutation of mutations ) { - addIFrame(mutation.target, true); - } - process(); - }; - const iframeSourceObserver = new MutationObserver(iframeSourceModified); - const iframeSourceObserverOptions = { - attributes: true, - attributeFilter: [ 'src' ] - }; - - // https://github.com/gorhill/uBlock/issues/162 - // Be prepared to deal with possible change of src attribute. - const addIFrame = function(iframe, dontObserve) { - if ( dontObserve !== true ) { - iframeSourceObserver.observe(iframe, iframeSourceObserverOptions); - } - const src = iframe.src; - if ( typeof src !== 'string' || src === '' ) { return; } - if ( src.startsWith('http') === false ) { return; } - toFilter.push({ type: 'sub_frame', url: iframe.src }); - add(iframe); - }; - - const addIFrames = function(iframes) { - for ( const iframe of iframes ) { - addIFrame(iframe); - } - }; - - const onResourceFailed = function(ev) { - if ( tagToTypeMap[ev.target.localName] !== undefined ) { - add(ev.target); - process(); - } - }; - - const stop = function() { - document.removeEventListener('error', onResourceFailed, true); - if ( processTimer !== undefined ) { - clearTimeout(processTimer); - } - if ( vAPI.domWatcher instanceof Object ) { - vAPI.domWatcher.removeListener(domWatcherInterface); - } - vAPI.shutdown.remove(stop); - vAPI.domCollapser = null; - }; - - const start = function() { - if ( vAPI.domWatcher instanceof Object ) { - vAPI.domWatcher.addListener(domWatcherInterface); - } - }; - - const domWatcherInterface = { - onDOMCreated: function() { - if ( self.vAPI instanceof Object === false ) { return; } - if ( vAPI.domCollapser instanceof Object === false ) { - if ( vAPI.domWatcher instanceof Object ) { - vAPI.domWatcher.removeListener(domWatcherInterface); - } - return; - } - // Listener to collapse blocked resources. - // - Future requests not blocked yet - // - Elements dynamically added to the page - // - Elements which resource URL changes - // https://github.com/chrisaljoudi/uBlock/issues/7 - // Preferring getElementsByTagName over querySelectorAll: - // http://jsperf.com/queryselectorall-vs-getelementsbytagname/145 - const elems = document.images || - document.getElementsByTagName('img'); - for ( const elem of elems ) { - if ( elem.complete ) { - add(elem); - } - } - addMany(document.embeds || document.getElementsByTagName('embed')); - addMany(document.getElementsByTagName('object')); - addIFrames(document.getElementsByTagName('iframe')); - process(0); - - document.addEventListener('error', onResourceFailed, true); - - vAPI.shutdown.add(stop); - }, - onDOMChanged: function(addedNodes) { - if ( addedNodes.length === 0 ) { return; } - for ( const node of addedNodes ) { - if ( node.localName === 'iframe' ) { - addIFrame(node); - } - if ( node.firstElementChild === null ) { continue; } - const iframes = node.getElementsByTagName('iframe'); - if ( iframes.length !== 0 ) { - addIFrames(iframes); - } - } - process(); - } - }; - - vAPI.domCollapser = { start }; -} - -/******************************************************************************/ -/******************************************************************************/ -/******************************************************************************/ - -// vAPI.domSurveyor - -{ - // http://www.cse.yorku.ca/~oz/hash.html#djb2 - // Must mirror cosmetic filtering compiler's version - const hashFromStr = (type, s) => { - const len = s.length; - const step = len + 7 >>> 3; - let hash = (type << 5) + type ^ len; - for ( let i = 0; i < len; i += step ) { - hash = (hash << 5) + hash ^ s.charCodeAt(i); - } - return hash & 0xFFFFFF; - }; - - const addHashes = hashes => { - for ( const hash of hashes ) { - queriedHashes.add(hash); - } - }; - - const queriedHashes = new Set(); - const maxSurveyNodes = 65536; - const pendingLists = []; - const pendingNodes = []; - const processedSet = new Set(); - let domFilterer; - let hostname = ''; - let domChanged = false; - let scannedCount = 0; - let stopped = false; - - const addPendingList = list => { - if ( list.length === 0 ) { return; } - pendingLists.push(Array.from(list)); - }; - - const nextPendingNodes = ( ) => { - if ( pendingLists.length === 0 ) { return 0; } - const bufferSize = 256; - let j = 0; - do { - const nodeList = pendingLists[0]; - let n = bufferSize - j; - if ( n > nodeList.length ) { - n = nodeList.length; - } - for ( let i = 0; i < n; i++ ) { - pendingNodes[j+i] = nodeList[i]; - } - j += n; - if ( n !== nodeList.length ) { - pendingLists[0] = nodeList.slice(n); - break; - } - pendingLists.shift(); - } while ( j < bufferSize && pendingLists.length !== 0 ); - return j; - }; - - const hasPendingNodes = ( ) => { - return pendingLists.length !== 0; - }; - - // Extract all classes/ids: these will be passed to the cosmetic - // filtering engine, and in return we will obtain only the relevant - // CSS selectors. - - // https://github.com/gorhill/uBlock/issues/672 - // http://www.w3.org/TR/2014/REC-html5-20141028/infrastructure.html#space-separated-tokens - // http://jsperf.com/enumerate-classes/6 - - const idFromNode = (node, out) => { - const raw = node.id; - if ( typeof raw !== 'string' || raw.length === 0 ) { return; } - const hash = hashFromStr(0x23 /* '#' */, raw.trim()); - if ( queriedHashes.has(hash) ) { return; } - queriedHashes.add(hash); - out.push(hash); - }; - - // https://github.com/uBlockOrigin/uBlock-issues/discussions/2076 - // Performance: avoid using Element.classList - const classesFromNode = (node, out) => { - const s = node.getAttribute('class'); - if ( typeof s !== 'string' ) { return; } - const len = s.length; - for ( let beg = 0, end = 0; beg < len; beg += 1 ) { - end = s.indexOf(' ', beg); - if ( end === beg ) { continue; } - if ( end === -1 ) { end = len; } - const token = s.slice(beg, end).trimEnd(); - beg = end; - if ( token.length === 0 ) { continue; } - const hash = hashFromStr(0x2E /* '.' */, token); - if ( queriedHashes.has(hash) ) { continue; } - queriedHashes.add(hash); - out.push(hash); - } - }; - - const getSurveyResults = (hashes, safeOnly) => { - if ( self.vAPI.messaging instanceof Object === false ) { - stop(); return; - } - const promise = hashes.length === 0 - ? Promise.resolve(null) - : self.vAPI.messaging.send('contentscript', { - what: 'retrieveGenericCosmeticSelectors', - hostname, - hashes, - exceptions: domFilterer.exceptions, - safeOnly, - }); - promise.then(response => { - processSurveyResults(response); - }); - }; - - const doSurvey = ( ) => { - if ( self.vAPI instanceof Object === false ) { return; } - const t0 = performance.now(); - const hashes = []; - const nodes = pendingNodes; - const deadline = t0 + 4; - let scanned = 0; - for (;;) { - const n = nextPendingNodes(); - if ( n === 0 ) { break; } - for ( let i = 0; i < n; i++ ) { - const node = nodes[i]; nodes[i] = null; - if ( domChanged ) { - if ( processedSet.has(node) ) { continue; } - processedSet.add(node); - } - idFromNode(node, hashes); - classesFromNode(node, hashes); - scanned += 1; - } - if ( performance.now() >= deadline ) { break; } - } - scannedCount += scanned; - if ( scannedCount >= maxSurveyNodes ) { - stop(); - } - processedSet.clear(); - getSurveyResults(hashes); - }; - - const surveyTimer = new vAPI.SafeAnimationFrame(doSurvey); - - // This is to shutdown the surveyor if result of surveying keeps being - // fruitless. This is useful on long-lived web page. I arbitrarily - // picked 5 minutes before the surveyor is allowed to shutdown. I also - // arbitrarily picked 256 misses before the surveyor is allowed to - // shutdown. - let canShutdownAfter = Date.now() + 300000; - let surveyResultMissCount = 0; - - // Handle main process' response. - - const processSurveyResults = response => { - if ( stopped ) { return; } - const result = response && response.result; - let mustCommit = false; - if ( result ) { - const css = result.injectedCSS; - if ( typeof css === 'string' && css.length !== 0 ) { - domFilterer.addCSS(css); - mustCommit = true; - } - const selectors = result.excepted; - if ( Array.isArray(selectors) && selectors.length !== 0 ) { - domFilterer.exceptCSSRules(selectors); - } - } - if ( hasPendingNodes() ) { - surveyTimer.start(1); - } - if ( mustCommit ) { - surveyResultMissCount = 0; - canShutdownAfter = Date.now() + 300000; - return; - } - surveyResultMissCount += 1; - if ( surveyResultMissCount < 256 || Date.now() < canShutdownAfter ) { - return; - } - //console.info(`[domSurveyor][${hostname}] Shutting down, too many misses`); - stop(); - self.vAPI.messaging.send('contentscript', { - what: 'disableGenericCosmeticFilteringSurveyor', - hostname, - }); - }; - - const domWatcherInterface = { - onDOMCreated: function() { - domFilterer = vAPI.domFilterer; - // https://github.com/uBlockOrigin/uBlock-issues/issues/1692 - // Look-up safe-only selectors to mitigate probability of - // html/body elements of erroneously being targeted. - const hashes = []; - if ( document.documentElement !== null ) { - idFromNode(document.documentElement, hashes); - classesFromNode(document.documentElement, hashes); - } - if ( document.body !== null ) { - idFromNode(document.body, hashes); - classesFromNode(document.body, hashes); - } - if ( hashes.length !== 0 ) { - getSurveyResults(hashes, true); - } - addPendingList(document.querySelectorAll( - '[id]:not(html):not(body),[class]:not(html):not(body)' - )); - if ( hasPendingNodes() ) { - surveyTimer.start(); - } - }, - onDOMChanged: function(addedNodes) { - if ( addedNodes.length === 0 ) { return; } - domChanged = true; - for ( const node of addedNodes ) { - addPendingList([ node ]); - if ( node.firstElementChild === null ) { continue; } - addPendingList( - node.querySelectorAll( - '[id]:not(html):not(body),[class]:not(html):not(body)' - ) - ); - } - if ( hasPendingNodes() ) { - surveyTimer.start(1); - } - } - }; - - const start = details => { - if ( self.vAPI instanceof Object === false ) { return; } - if ( self.vAPI.domFilterer instanceof Object === false ) { return; } - if ( self.vAPI.domWatcher instanceof Object === false ) { return; } - hostname = details.hostname; - self.vAPI.domWatcher.addListener(domWatcherInterface); - }; - - const stop = ( ) => { - stopped = true; - pendingLists.length = 0; - surveyTimer.clear(); - if ( self.vAPI instanceof Object === false ) { return; } - if ( self.vAPI.domWatcher instanceof Object ) { - self.vAPI.domWatcher.removeListener(domWatcherInterface); - } - self.vAPI.domSurveyor = null; - }; - - self.vAPI.domSurveyor = { start, addHashes }; -} - -/******************************************************************************/ -/******************************************************************************/ -/******************************************************************************/ - -// vAPI.bootstrap: -// Bootstrapping allows all components of the content script -// to be launched if/when needed. - -{ - const onDomReady = ( ) => { - // This can happen on Firefox. For instance: - // https://github.com/gorhill/uBlock/issues/1893 - if ( window.location === null ) { return; } - if ( self.vAPI instanceof Object === false ) { return; } - - vAPI.messaging.send('contentscript', { - what: 'shouldRenderNoscriptTags', - }); - - if ( vAPI.domFilterer instanceof Object ) { - vAPI.domFilterer.commitNow(); - } - - if ( vAPI.domWatcher instanceof Object ) { - vAPI.domWatcher.start(); - } - - // Element picker works only in top window for now. - if ( - window !== window.top || - vAPI.domFilterer instanceof Object === false - ) { - return; - } - - // To be used by element picker/zapper. - vAPI.mouseClick = { x: -1, y: -1 }; - - const onMouseClick = function(ev) { - if ( ev.isTrusted === false ) { return; } - vAPI.mouseClick.x = ev.clientX; - vAPI.mouseClick.y = ev.clientY; - - // https://github.com/chrisaljoudi/uBlock/issues/1143 - // Find a link under the mouse, to try to avoid confusing new tabs - // as nuisance popups. - // https://github.com/uBlockOrigin/uBlock-issues/issues/777 - // Mind that href may not be a string. - const elem = ev.target.closest('a[href]'); - if ( elem === null || typeof elem.href !== 'string' ) { return; } - vAPI.messaging.send('contentscript', { - what: 'maybeGoodPopup', - url: elem.href || '', - }); - }; - - document.addEventListener('mousedown', onMouseClick, true); - - // https://github.com/gorhill/uMatrix/issues/144 - vAPI.shutdown.add(function() { - document.removeEventListener('mousedown', onMouseClick, true); - }); - }; - - // https://github.com/uBlockOrigin/uBlock-issues/issues/403 - // If there was a spurious port disconnection -- in which case the - // response is expressly set to `null`, rather than undefined or - // an object -- let's stay around, we may be given the opportunity - // to try bootstrapping again later. - - const onResponseReady = response => { - if ( response instanceof Object === false ) { return; } - vAPI.bootstrap = undefined; - - // cosmetic filtering engine aka 'cfe' - const cfeDetails = response && response.specificCosmeticFilters; - if ( !cfeDetails || !cfeDetails.ready ) { - vAPI.domWatcher = vAPI.domCollapser = vAPI.domFilterer = - vAPI.domSurveyor = vAPI.domIsLoaded = null; - return; - } - - vAPI.domCollapser.start(); - - const { - noSpecificCosmeticFiltering, - noGenericCosmeticFiltering, - } = response; - - vAPI.noSpecificCosmeticFiltering = noSpecificCosmeticFiltering; - vAPI.noGenericCosmeticFiltering = noGenericCosmeticFiltering; - - if ( noSpecificCosmeticFiltering && noGenericCosmeticFiltering ) { - vAPI.domFilterer = null; - vAPI.domSurveyor = null; - } else { - const domFilterer = vAPI.domFilterer = new vAPI.DOMFilterer(); - if ( noGenericCosmeticFiltering || cfeDetails.disableSurveyor ) { - vAPI.domSurveyor = null; - } - domFilterer.exceptions = cfeDetails.exceptionFilters; - domFilterer.addCSS(cfeDetails.injectedCSS); - domFilterer.addProceduralSelectors(cfeDetails.proceduralFilters); - domFilterer.exceptCSSRules(cfeDetails.exceptedFilters); - domFilterer.convertedProceduralFilters = cfeDetails.convertedProceduralFilters; - vAPI.userStylesheet.apply(); - } - - if ( vAPI.domSurveyor ) { - if ( Array.isArray(cfeDetails.genericCosmeticHashes) ) { - vAPI.domSurveyor.addHashes(cfeDetails.genericCosmeticHashes); - } - vAPI.domSurveyor.start(cfeDetails); - } - - const readyState = document.readyState; - if ( readyState === 'interactive' || readyState === 'complete' ) { - return onDomReady(); - } - document.addEventListener('DOMContentLoaded', onDomReady, { once: true }); - }; - - vAPI.bootstrap = function() { - vAPI.messaging.send('contentscript', { - what: 'retrieveContentScriptParameters', - url: vAPI.effectiveSelf.location.href, - needScriptlets: typeof self.uBO_scriptletsInjected !== 'string', - }).then(response => { - onResponseReady(response); - }); - }; -} - -// This starts bootstrap process. -vAPI.bootstrap(); - -/******************************************************************************/ -/******************************************************************************/ -/******************************************************************************/ - -} -// <<<<<<<< end of HUGE-IF-BLOCK diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/contextmenu.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/contextmenu.js deleted file mode 100644 index 788b62b..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/contextmenu.js +++ /dev/null @@ -1,274 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -import µb from './background.js'; -import { i18n$ } from './i18n.js'; - -/******************************************************************************/ - -const contextMenu = (( ) => { - -/******************************************************************************/ - -if ( vAPI.contextMenu === undefined ) { - return { - update: function() {} - }; -} - -/******************************************************************************/ - -const BLOCK_ELEMENT_BIT = 0b00001; -const BLOCK_RESOURCE_BIT = 0b00010; -const TEMP_ALLOW_LARGE_MEDIA_BIT = 0b00100; -const SUBSCRIBE_TO_LIST_BIT = 0b01000; -const VIEW_SOURCE_BIT = 0b10000; - -/******************************************************************************/ - -const onBlockElement = function(details, tab) { - if ( tab === undefined ) { return; } - if ( /^https?:\/\//.test(tab.url) === false ) { return; } - let tagName = details.tagName || ''; - let src = details.frameUrl || details.srcUrl || details.linkUrl || ''; - - if ( !tagName ) { - if ( typeof details.frameUrl === 'string' ) { - tagName = 'iframe'; - } else if ( typeof details.srcUrl === 'string' ) { - if ( details.mediaType === 'image' ) { - tagName = 'img'; - } else if ( details.mediaType === 'video' ) { - tagName = 'video'; - } else if ( details.mediaType === 'audio' ) { - tagName = 'audio'; - } - } else if ( typeof details.linkUrl === 'string' ) { - tagName = 'a'; - } - } - - µb.epickerArgs.mouse = true; - µb.elementPickerExec(tab.id, 0, `${tagName}\t${src}`); -}; - -/******************************************************************************/ - -const onBlockElementInFrame = function(details, tab) { - if ( tab === undefined ) { return; } - if ( /^https?:\/\//.test(details.frameUrl) === false ) { return; } - µb.epickerArgs.mouse = false; - µb.elementPickerExec(tab.id, details.frameId); -}; - -/******************************************************************************/ - -const onSubscribeToList = function(details) { - let parsedURL; - try { - parsedURL = new URL(details.linkUrl); - } - catch(ex) { - } - if ( parsedURL instanceof URL === false ) { return; } - const url = parsedURL.searchParams.get('location'); - if ( url === null ) { return; } - const title = parsedURL.searchParams.get('title') || '?'; - const hash = µb.selectedFilterLists.indexOf(parsedURL) !== -1 - ? '#subscribed' - : ''; - vAPI.tabs.open({ - url: - `/asset-viewer.html` + - `?url=${encodeURIComponent(url)}` + - `&title=${encodeURIComponent(title)}` + - `&subscribe=1${hash}`, - select: true, - }); -}; - -/******************************************************************************/ - -const onTemporarilyAllowLargeMediaElements = function(details, tab) { - if ( tab === undefined ) { return; } - const pageStore = µb.pageStoreFromTabId(tab.id); - if ( pageStore === null ) { return; } - pageStore.temporarilyAllowLargeMediaElements(true); -}; - -/******************************************************************************/ - -const onViewSource = function(details, tab) { - if ( tab === undefined ) { return; } - const url = details.linkUrl || details.frameUrl || details.pageUrl || ''; - if ( /^https?:\/\//.test(url) === false ) { return; } - µb.openNewTab({ - url: `code-viewer.html?url=${self.encodeURIComponent(url)}`, - select: true, - }); -}; - -/******************************************************************************/ - -const onEntryClicked = function(details, tab) { - if ( details.menuItemId === 'uBlock0-blockElement' ) { - return onBlockElement(details, tab); - } - if ( details.menuItemId === 'uBlock0-blockElementInFrame' ) { - return onBlockElementInFrame(details, tab); - } - if ( details.menuItemId === 'uBlock0-blockResource' ) { - return onBlockElement(details, tab); - } - if ( details.menuItemId === 'uBlock0-subscribeToList' ) { - return onSubscribeToList(details); - } - if ( details.menuItemId === 'uBlock0-temporarilyAllowLargeMediaElements' ) { - return onTemporarilyAllowLargeMediaElements(details, tab); - } - if ( details.menuItemId === 'uBlock0-viewSource' ) { - return onViewSource(details, tab); - } -}; - -/******************************************************************************/ - -const menuEntries = { - blockElement: { - id: 'uBlock0-blockElement', - title: i18n$('pickerContextMenuEntry'), - contexts: [ 'all' ], - documentUrlPatterns: [ 'http://*/*', 'https://*/*' ], - }, - blockElementInFrame: { - id: 'uBlock0-blockElementInFrame', - title: i18n$('contextMenuBlockElementInFrame'), - contexts: [ 'frame' ], - documentUrlPatterns: [ 'http://*/*', 'https://*/*' ], - }, - blockResource: { - id: 'uBlock0-blockResource', - title: i18n$('pickerContextMenuEntry'), - contexts: [ 'audio', 'frame', 'image', 'video' ], - documentUrlPatterns: [ 'http://*/*', 'https://*/*' ], - }, - subscribeToList: { - id: 'uBlock0-subscribeToList', - title: i18n$('contextMenuSubscribeToList'), - contexts: [ 'link' ], - targetUrlPatterns: [ 'abp:*', 'https://subscribe.adblockplus.org/*' ], - }, - temporarilyAllowLargeMediaElements: { - id: 'uBlock0-temporarilyAllowLargeMediaElements', - title: i18n$('contextMenuTemporarilyAllowLargeMediaElements'), - contexts: [ 'all' ], - documentUrlPatterns: [ 'http://*/*', 'https://*/*' ], - }, - viewSource: { - id: 'uBlock0-viewSource', - title: i18n$('contextMenuViewSource'), - contexts: [ 'page', 'frame', 'link' ], - documentUrlPatterns: [ 'http://*/*', 'https://*/*' ], - }, -}; - -/******************************************************************************/ - -let currentBits = 0; - -const update = function(tabId = undefined) { - let newBits = 0; - if ( - µb.userSettings.contextMenuEnabled && - µb.userFiltersAreEnabled() && - tabId !== undefined - ) { - const pageStore = µb.pageStoreFromTabId(tabId); - if ( pageStore && pageStore.getNetFilteringSwitch() ) { - if ( pageStore.shouldApplySpecificCosmeticFilters(0) ) { - newBits |= BLOCK_ELEMENT_BIT; - } else { - newBits |= BLOCK_RESOURCE_BIT; - } - if ( pageStore.largeMediaCount !== 0 ) { - newBits |= TEMP_ALLOW_LARGE_MEDIA_BIT; - } - } - newBits |= SUBSCRIBE_TO_LIST_BIT; - } - if ( µb.hiddenSettings.filterAuthorMode ) { - newBits |= VIEW_SOURCE_BIT; - } - if ( newBits === currentBits ) { return; } - currentBits = newBits; - const usedEntries = []; - if ( (newBits & BLOCK_ELEMENT_BIT) !== 0 ) { - usedEntries.push(menuEntries.blockElement); - usedEntries.push(menuEntries.blockElementInFrame); - } - if ( (newBits & BLOCK_RESOURCE_BIT) !== 0 ) { - usedEntries.push(menuEntries.blockResource); - } - if ( (newBits & TEMP_ALLOW_LARGE_MEDIA_BIT) !== 0 ) { - usedEntries.push(menuEntries.temporarilyAllowLargeMediaElements); - } - if ( (newBits & SUBSCRIBE_TO_LIST_BIT) !== 0 ) { - usedEntries.push(menuEntries.subscribeToList); - } - if ( (newBits & VIEW_SOURCE_BIT) !== 0 ) { - usedEntries.push(menuEntries.viewSource); - } - vAPI.contextMenu.setEntries(usedEntries, onEntryClicked); -}; - -/******************************************************************************/ - -// https://github.com/uBlockOrigin/uBlock-issues/issues/151 -// For unknown reasons, the currently active tab will not be successfully -// looked up after closing a window. - -vAPI.contextMenu.onMustUpdate = async function(tabId = undefined) { - if ( µb.userSettings.contextMenuEnabled === false ) { - return update(); - } - if ( tabId !== undefined ) { - return update(tabId); - } - const tab = await vAPI.tabs.getCurrent(); - if ( tab instanceof Object === false ) { return; } - update(tab.id); -}; - -return { update: vAPI.contextMenu.onMustUpdate }; - -/******************************************************************************/ - -})(); - -/******************************************************************************/ - -export default contextMenu; - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/cosmetic-filtering.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/cosmetic-filtering.js deleted file mode 100644 index 9a07809..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/cosmetic-filtering.js +++ /dev/null @@ -1,986 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/******************************************************************************/ - -import { MRUCache } from './mrucache.js'; -import { StaticExtFilteringHostnameDB } from './static-ext-filtering-db.js'; -import logger from './logger.js'; -import µb from './background.js'; - -/******************************************************************************/ -/******************************************************************************/ - -const SelectorCacheEntry = class { - constructor() { - this.reset(); - } - - reset() { - this.cosmetic = new Set(); - this.cosmeticHashes = new Set(); - this.disableSurveyor = false; - this.net = new Map(); - this.accessId = SelectorCacheEntry.accessId++; - return this; - } - - dispose() { - this.cosmetic = this.cosmeticHashes = this.net = null; - if ( SelectorCacheEntry.junkyard.length < 25 ) { - SelectorCacheEntry.junkyard.push(this); - } - } - - addCosmetic(details) { - const selectors = details.selectors.join(',\n'); - if ( selectors.length !== 0 ) { - this.cosmetic.add(selectors); - } - for ( const hash of details.hashes ) { - this.cosmeticHashes.add(hash); - } - } - - addNet(selectors) { - if ( typeof selectors === 'string' ) { - this.net.set(selectors, this.accessId); - } else { - this.net.set(selectors.join(',\n'), this.accessId); - } - // Net request-derived selectors: I limit the number of cached - // selectors, as I expect cases where the blocked network requests - // are never the exact same URL. - if ( this.net.size < SelectorCacheEntry.netHighWaterMark ) { return; } - const keys = Array.from(this.net) - .sort((a, b) => b[1] - a[1]) - .slice(SelectorCacheEntry.netLowWaterMark) - .map(a => a[0]); - for ( const key of keys ) { - this.net.delete(key); - } - } - - addNetOne(selector, token) { - this.net.set(selector, token); - } - - add(details) { - this.accessId = SelectorCacheEntry.accessId++; - if ( details.type === 'cosmetic' ) { - this.addCosmetic(details); - } else { - this.addNet(details.selectors); - } - } - - // https://github.com/chrisaljoudi/uBlock/issues/420 - remove(type) { - this.accessId = SelectorCacheEntry.accessId++; - if ( type === undefined || type === 'cosmetic' ) { - this.cosmetic.clear(); - } - if ( type === undefined || type === 'net' ) { - this.net.clear(); - } - } - - retrieveToArray(iterator, out) { - for ( const selector of iterator ) { - out.push(selector); - } - } - - retrieveToSet(iterator, out) { - for ( const selector of iterator ) { - out.add(selector); - } - } - - retrieveNet(out) { - this.accessId = SelectorCacheEntry.accessId++; - if ( this.net.size === 0 ) { return false; } - this.retrieveToArray(this.net.keys(), out); - return true; - } - - retrieveCosmetic(selectors, hashes) { - this.accessId = SelectorCacheEntry.accessId++; - if ( this.cosmetic.size === 0 ) { return false; } - this.retrieveToSet(this.cosmetic, selectors); - this.retrieveToArray(this.cosmeticHashes, hashes); - return true; - } - - static factory() { - const entry = SelectorCacheEntry.junkyard.pop(); - return entry - ? entry.reset() - : new SelectorCacheEntry(); - } -}; - -SelectorCacheEntry.accessId = 1; -SelectorCacheEntry.netLowWaterMark = 20; -SelectorCacheEntry.netHighWaterMark = 30; -SelectorCacheEntry.junkyard = []; - -/******************************************************************************/ -/******************************************************************************/ - -// http://www.cse.yorku.ca/~oz/hash.html#djb2 -// Must mirror content script surveyor's version - -const hashFromStr = (type, s) => { - const len = s.length; - const step = len + 7 >>> 3; - let hash = (type << 5) + type ^ len; - for ( let i = 0; i < len; i += step ) { - hash = (hash << 5) + hash ^ s.charCodeAt(i); - } - return hash & 0xFFFFFF; -}; - -// https://github.com/gorhill/uBlock/issues/1668 -// The key must be literal: unescape escaped CSS before extracting key. -// It's an uncommon case, so it's best to unescape only when needed. - -const keyFromSelector = selector => { - let matches = reSimplestSelector.exec(selector); - if ( matches !== null ) { return matches[0]; } - let key = ''; - matches = rePlainSelector.exec(selector); - if ( matches !== null ) { - key = matches[0]; - } else { - matches = rePlainSelectorEx.exec(selector); - if ( matches === null ) { return; } - key = matches[1] || matches[2]; - } - if ( selector.includes(',') ) { return; } - if ( key.includes('\\') === false ) { return key; } - matches = rePlainSelectorEscaped.exec(selector); - if ( matches === null ) { return; } - key = ''; - const escaped = matches[0]; - let beg = 0; - reEscapeSequence.lastIndex = 0; - for (;;) { - matches = reEscapeSequence.exec(escaped); - if ( matches === null ) { - return key + escaped.slice(beg); - } - key += escaped.slice(beg, matches.index); - beg = reEscapeSequence.lastIndex; - if ( matches[1].length === 1 ) { - key += matches[1]; - } else { - key += String.fromCharCode(parseInt(matches[1], 16)); - } - } -}; - -const reSimplestSelector = /^[#.][\w-]+$/; -const rePlainSelector = /^[#.][\w\\-]+/; -const rePlainSelectorEx = /^[^#.[(]+([#.][\w-]+)|([#.][\w-]+)$/; -const rePlainSelectorEscaped = /^[#.](?:\\[0-9A-Fa-f]+ |\\.|\w|-)+/; -const reEscapeSequence = /\\([0-9A-Fa-f]+ |.)/g; - -/******************************************************************************/ -/******************************************************************************/ - -// Cosmetic filter family tree: -// -// Generic -// Low generic simple: class or id only -// Low generic complex: class or id + extra stuff after -// High generic: -// High-low generic: [alt="..."],[title="..."] -// High-medium generic: [href^="..."] -// High-high generic: everything else -// Specific -// Specific hostname -// Specific entity -// Generic filters can only be enforced once the main document is loaded. -// Specific filers can be enforced before the main document is loaded. - -const CosmeticFilteringEngine = function() { - this.reSimpleHighGeneric = /^(?:[a-z]*\[[^\]]+\]|\S+)$/; - - this.selectorCache = new Map(); - this.selectorCachePruneDelay = 10; // 10 minutes - this.selectorCacheCountMin = 40; - this.selectorCacheCountMax = 50; - this.selectorCacheTimer = vAPI.defer.create(( ) => { - this.pruneSelectorCacheAsync(); - }); - - // specific filters - this.specificFilters = new StaticExtFilteringHostnameDB(2); - - // low generic cosmetic filters: map of hash => stringified selector list - this.lowlyGeneric = new Map(); - - // highly generic selectors sets - this.highlyGeneric = Object.create(null); - this.highlyGeneric.simple = { - canonical: 'highGenericHideSimple', - dict: new Set(), - str: '', - mru: new MRUCache(16) - }; - this.highlyGeneric.complex = { - canonical: 'highGenericHideComplex', - dict: new Set(), - str: '', - mru: new MRUCache(16) - }; - - // Short-lived: content is valid only during one function call. These - // is to prevent repeated allocation/deallocation overheads -- the - // constructors/destructors of javascript Set/Map is assumed to be costlier - // than just calling clear() on these. - this.$specificSet = new Set(); - this.$exceptionSet = new Set(); - this.$proceduralSet = new Set(); - this.$dummySet = new Set(); - - this.reset(); -}; - -/******************************************************************************/ - -// Reset all, thus reducing to a minimum memory footprint of the context. - -CosmeticFilteringEngine.prototype.reset = function() { - this.frozen = false; - this.acceptedCount = 0; - this.discardedCount = 0; - this.duplicateBuster = new Set(); - - this.selectorCache.clear(); - this.selectorCacheTimer.off(); - - // hostname, entity-based filters - this.specificFilters.clear(); - - // low generic cosmetic filters - this.lowlyGeneric.clear(); - - // highly generic selectors sets - this.highlyGeneric.simple.dict.clear(); - this.highlyGeneric.simple.str = ''; - this.highlyGeneric.simple.mru.reset(); - this.highlyGeneric.complex.dict.clear(); - this.highlyGeneric.complex.str = ''; - this.highlyGeneric.complex.mru.reset(); - - this.selfieVersion = 2; -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.freeze = function() { - this.duplicateBuster.clear(); - this.specificFilters.collectGarbage(); - - this.highlyGeneric.simple.str = Array.from(this.highlyGeneric.simple.dict).join(',\n'); - this.highlyGeneric.simple.mru.reset(); - this.highlyGeneric.complex.str = Array.from(this.highlyGeneric.complex.dict).join(',\n'); - this.highlyGeneric.complex.mru.reset(); - - this.frozen = true; -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.compile = function(parser, writer) { - if ( parser.hasOptions() === false ) { - this.compileGenericSelector(parser, writer); - return true; - } - - // https://github.com/chrisaljoudi/uBlock/issues/151 - // Negated hostname means the filter applies to all non-negated hostnames - // of same filter OR globally if there is no non-negated hostnames. - let applyGlobally = true; - for ( const { hn, not, bad } of parser.getExtFilterDomainIterator() ) { - if ( bad ) { continue; } - if ( not === false ) { - applyGlobally = false; - } - this.compileSpecificSelector(parser, hn, not, writer); - } - if ( applyGlobally ) { - this.compileGenericSelector(parser, writer); - } - - return true; -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.compileGenericSelector = function(parser, writer) { - if ( parser.isException() ) { - this.compileGenericUnhideSelector(parser, writer); - } else { - this.compileGenericHideSelector(parser, writer); - } -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.compileGenericHideSelector = function( - parser, - writer -) { - const { raw, compiled } = parser.result; - if ( compiled === undefined ) { - const who = writer.properties.get('name') || '?'; - logger.writeOne({ - realm: 'message', - type: 'error', - text: `Invalid generic cosmetic filter in ${who}: ${raw}` - }); - return; - } - - writer.select('COSMETIC_FILTERS:GENERIC'); - - // https://github.com/uBlockOrigin/uBlock-issues/issues/131 - // Support generic procedural filters as per advanced settings. - if ( compiled.charCodeAt(0) === 0x7B /* '{' */ ) { - if ( µb.hiddenSettings.allowGenericProceduralFilters === true ) { - return this.compileSpecificSelector(parser, '', false, writer); - } - const who = writer.properties.get('name') || '?'; - logger.writeOne({ - realm: 'message', - type: 'error', - text: `Invalid generic cosmetic filter in ${who}: ##${raw}` - }); - return; - } - - const key = keyFromSelector(compiled); - if ( key !== undefined ) { - writer.push([ - 0, - hashFromStr(key.charCodeAt(0), key.slice(1)), - compiled, - ]); - return; - } - - // Pass this point, we are dealing with highly-generic cosmetic filters. - // - // For efficiency purpose, we will distinguish between simple and complex - // selectors. - - if ( this.reSimpleHighGeneric.test(compiled) ) { - writer.push([ 4 /* simple */, compiled ]); - } else { - writer.push([ 5 /* complex */, compiled ]); - } -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.compileGenericUnhideSelector = function( - parser, - writer -) { - // Procedural cosmetic filters are acceptable as generic exception filters. - const { raw, compiled } = parser.result; - if ( compiled === undefined ) { - const who = writer.properties.get('name') || '?'; - logger.writeOne({ - realm: 'message', - type: 'error', - text: `Invalid cosmetic filter in ${who}: #@#${raw}` - }); - return; - } - - writer.select('COSMETIC_FILTERS:SPECIFIC'); - - // https://github.com/chrisaljoudi/uBlock/issues/497 - // All generic exception filters are stored as hostname-based filter - // whereas the hostname is the empty string (which matches all - // hostnames). No distinction is made between declarative and - // procedural selectors, since they really exist only to cancel - // out other cosmetic filters. - writer.push([ 8, '', 0b001, compiled ]); -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.compileSpecificSelector = function( - parser, - hostname, - not, - writer -) { - const { raw, compiled, exception } = parser.result; - if ( compiled === undefined ) { - const who = writer.properties.get('name') || '?'; - logger.writeOne({ - realm: 'message', - type: 'error', - text: `Invalid cosmetic filter in ${who}: ##${raw}` - }); - return; - } - - writer.select('COSMETIC_FILTERS:SPECIFIC'); - - // https://github.com/chrisaljoudi/uBlock/issues/145 - let unhide = exception ? 1 : 0; - if ( not ) { unhide ^= 1; } - - let kind = 0; - if ( unhide === 1 ) { - kind |= 0b001; // Exception - } - if ( compiled.charCodeAt(0) === 0x7B /* '{' */ ) { - kind |= 0b010; // Procedural - } - if ( hostname === '*' ) { - kind |= 0b100; // Applies everywhere - } - - writer.push([ 8, hostname, kind, compiled ]); -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.fromCompiledContent = function(reader, options) { - if ( options.skipCosmetic ) { - this.skipCompiledContent(reader, 'SPECIFIC'); - this.skipCompiledContent(reader, 'GENERIC'); - return; - } - - // Specific cosmetic filter section - reader.select('COSMETIC_FILTERS:SPECIFIC'); - while ( reader.next() ) { - this.acceptedCount += 1; - const fingerprint = reader.fingerprint(); - if ( this.duplicateBuster.has(fingerprint) ) { - this.discardedCount += 1; - continue; - } - this.duplicateBuster.add(fingerprint); - const args = reader.args(); - switch ( args[0] ) { - // hash, example.com, .promoted-tweet - // hash, example.*, .promoted-tweet - // - // https://github.com/uBlockOrigin/uBlock-issues/issues/803 - // Handle specific filters meant to apply everywhere, i.e. selectors - // not to be injected conditionally through the DOM surveyor. - // hash, *, .promoted-tweet - case 8: - if ( args[2] === 0b100 ) { - if ( this.reSimpleHighGeneric.test(args[3]) ) - this.highlyGeneric.simple.dict.add(args[3]); - else { - this.highlyGeneric.complex.dict.add(args[3]); - } - break; - } - this.specificFilters.store(args[1], args[2] & 0b011, args[3]); - break; - default: - this.discardedCount += 1; - break; - } - } - - if ( options.skipGenericCosmetic ) { - this.skipCompiledContent(reader, 'GENERIC'); - return; - } - - // Generic cosmetic filter section - reader.select('COSMETIC_FILTERS:GENERIC'); - while ( reader.next() ) { - this.acceptedCount += 1; - const fingerprint = reader.fingerprint(); - if ( this.duplicateBuster.has(fingerprint) ) { - this.discardedCount += 1; - continue; - } - this.duplicateBuster.add(fingerprint); - const args = reader.args(); - switch ( args[0] ) { - // low generic - case 0: { - if ( this.lowlyGeneric.has(args[1]) ) { - const selector = this.lowlyGeneric.get(args[1]); - this.lowlyGeneric.set(args[1], `${selector},\n${args[2]}`); - } else { - this.lowlyGeneric.set(args[1], args[2]); - } - break; - } - // High-high generic hide/simple selectors - // div[id^="allo"] - case 4: - this.highlyGeneric.simple.dict.add(args[1]); - break; - // High-high generic hide/complex selectors - // div[id^="allo"] > span - case 5: - this.highlyGeneric.complex.dict.add(args[1]); - break; - default: - this.discardedCount += 1; - break; - } - } -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.skipCompiledContent = function(reader, sectionId) { - reader.select(`COSMETIC_FILTERS:${sectionId}`); - while ( reader.next() ) { - this.acceptedCount += 1; - this.discardedCount += 1; - } -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.toSelfie = function() { - return { - version: this.selfieVersion, - acceptedCount: this.acceptedCount, - discardedCount: this.discardedCount, - specificFilters: this.specificFilters.toSelfie(), - lowlyGeneric: this.lowlyGeneric, - highSimpleGenericHideDict: this.highlyGeneric.simple.dict, - highSimpleGenericHideStr: this.highlyGeneric.simple.str, - highComplexGenericHideDict: this.highlyGeneric.complex.dict, - highComplexGenericHideStr: this.highlyGeneric.complex.str, - }; -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.fromSelfie = function(selfie) { - if ( selfie.version !== this.selfieVersion ) { - throw new Error( - `cosmeticFilteringEngine: mismatched selfie version, ${selfie.version}, expected ${this.selfieVersion}` - ); - } - this.acceptedCount = selfie.acceptedCount; - this.discardedCount = selfie.discardedCount; - this.specificFilters.fromSelfie(selfie.specificFilters); - this.lowlyGeneric = selfie.lowlyGeneric; - this.highlyGeneric.simple.dict = selfie.highSimpleGenericHideDict; - this.highlyGeneric.simple.str = selfie.highSimpleGenericHideStr; - this.highlyGeneric.complex.dict = selfie.highComplexGenericHideDict; - this.highlyGeneric.complex.str = selfie.highComplexGenericHideStr; - this.frozen = true; -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.addToSelectorCache = function(details) { - const hostname = details.hostname; - if ( typeof hostname !== 'string' || hostname === '' ) { return; } - const selectors = details.selectors; - if ( Array.isArray(selectors) === false ) { return; } - let entry = this.selectorCache.get(hostname); - if ( entry === undefined ) { - entry = SelectorCacheEntry.factory(); - this.selectorCache.set(hostname, entry); - if ( this.selectorCache.size > this.selectorCacheCountMax ) { - this.selectorCacheTimer.on({ min: this.selectorCachePruneDelay }); - } - } - entry.add(details); -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.removeFromSelectorCache = function( - targetHostname = '*', - type = undefined -) { - const targetHostnameLength = targetHostname.length; - for ( let entry of this.selectorCache ) { - let hostname = entry[0]; - let item = entry[1]; - if ( targetHostname !== '*' ) { - if ( hostname.endsWith(targetHostname) === false ) { continue; } - if ( - hostname.length !== targetHostnameLength && - hostname.charAt(hostname.length - targetHostnameLength - 1) !== '.' - ) { - continue; - } - } - item.remove(type); - } -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.pruneSelectorCacheAsync = function() { - if ( this.selectorCache.size <= this.selectorCacheCountMax ) { return; } - const cache = this.selectorCache; - const hostnames = Array.from(cache.keys()) - .sort((a, b) => cache.get(b).accessId - cache.get(a).accessId) - .slice(this.selectorCacheCountMin); - for ( const hn of hostnames ) { - cache.get(hn).dispose(); - cache.delete(hn); - } -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.disableSurveyor = function(details) { - const hostname = details.hostname; - if ( typeof hostname !== 'string' || hostname === '' ) { return; } - const cacheEntry = this.selectorCache.get(hostname); - if ( cacheEntry === undefined ) { return; } - cacheEntry.disableSurveyor = true; -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.cssRuleFromProcedural = function(pfilter) { - if ( pfilter.cssable !== true ) { return; } - const { tasks, action } = pfilter; - let mq, selector; - if ( Array.isArray(tasks) ) { - if ( tasks[0][0] !== 'matches-media' ) { return; } - mq = tasks[0][1]; - if ( tasks.length > 2 ) { return; } - if ( tasks.length === 2 ) { - if ( tasks[1][0] !== 'spath' ) { return; } - selector = tasks[1][1]; - } - } - let style; - if ( Array.isArray(action) ) { - if ( action[0] !== 'style' ) { return; } - selector = selector || pfilter.selector; - style = action[1]; - } - if ( mq === undefined && style === undefined && selector === undefined ) { return; } - if ( mq === undefined ) { - return `${selector}\n{${style}}`; - } - if ( style === undefined ) { - return `@media ${mq} {\n${selector}\n{display:none!important;}\n}`; - } - return `@media ${mq} {\n${selector}\n{${style}}\n}`; -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.retrieveGenericSelectors = function(request) { - if ( this.lowlyGeneric.size === 0 ) { return; } - if ( Array.isArray(request.hashes) === false ) { return; } - if ( request.hashes.length === 0 ) { return; } - - const selectorsSet = new Set(); - const hashes = []; - const safeOnly = request.safeOnly === true; - for ( const hash of request.hashes ) { - const bucket = this.lowlyGeneric.get(hash); - if ( bucket === undefined ) { continue; } - for ( const selector of bucket.split(',\n') ) { - if ( safeOnly && selector === keyFromSelector(selector) ) { continue; } - selectorsSet.add(selector); - } - hashes.push(hash); - } - - // Apply exceptions: it is the responsibility of the caller to provide - // the exceptions to be applied. - const excepted = []; - if ( selectorsSet.size !== 0 && Array.isArray(request.exceptions) ) { - for ( const exception of request.exceptions ) { - if ( selectorsSet.delete(exception) ) { - excepted.push(exception); - } - } - } - - if ( selectorsSet.size === 0 && excepted.length === 0 ) { return; } - - const out = { injectedCSS: '', excepted, }; - const selectors = Array.from(selectorsSet); - - if ( typeof request.hostname === 'string' && request.hostname !== '' ) { - this.addToSelectorCache({ - hostname: request.hostname, - selectors, - hashes, - type: 'cosmetic', - }); - } - - if ( selectors.length === 0 ) { return out; } - - out.injectedCSS = `${selectors.join(',\n')}\n{display:none!important;}`; - vAPI.tabs.insertCSS(request.tabId, { - code: out.injectedCSS, - frameId: request.frameId, - matchAboutBlank: true, - runAt: 'document_start', - }); - - return out; -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.retrieveSpecificSelectors = function( - request, - options -) { - const hostname = request.hostname; - const cacheEntry = this.selectorCache.get(hostname); - - // https://github.com/chrisaljoudi/uBlock/issues/587 - // out.ready will tell the content script the cosmetic filtering engine is - // up and ready. - - // https://github.com/chrisaljoudi/uBlock/issues/497 - // Generic exception filters are to be applied on all pages. - - const out = { - ready: this.frozen, - hostname: hostname, - domain: request.domain, - exceptionFilters: [], - exceptedFilters: [], - proceduralFilters: [], - convertedProceduralFilters: [], - disableSurveyor: this.lowlyGeneric.size === 0, - }; - const injectedCSS = []; - - if ( - options.noSpecificCosmeticFiltering !== true || - options.noGenericCosmeticFiltering !== true - ) { - const specificSet = this.$specificSet; - const proceduralSet = this.$proceduralSet; - const exceptionSet = this.$exceptionSet; - const dummySet = this.$dummySet; - - // Cached cosmetic filters: these are always declarative. - if ( cacheEntry !== undefined ) { - cacheEntry.retrieveCosmetic(specificSet, out.genericCosmeticHashes = []); - if ( cacheEntry.disableSurveyor ) { - out.disableSurveyor = true; - } - } - - // Retrieve filters with a non-empty hostname - const retrieveSets = [ specificSet, exceptionSet, proceduralSet, exceptionSet ]; - const discardSets = [ dummySet, exceptionSet ]; - this.specificFilters.retrieve( - hostname, - options.noSpecificCosmeticFiltering ? discardSets : retrieveSets, - 1 - ); - // Retrieve filters with a regex-based hostname value - this.specificFilters.retrieve( - hostname, - options.noSpecificCosmeticFiltering ? discardSets : retrieveSets, - 3 - ); - // Retrieve filters with a entity-based hostname value - if ( request.entity !== '' ) { - this.specificFilters.retrieve( - `${hostname.slice(0, -request.domain.length)}${request.entity}`, - options.noSpecificCosmeticFiltering ? discardSets : retrieveSets, - 1 - ); - } - // Retrieve filters with an empty hostname - this.specificFilters.retrieve( - hostname, - options.noGenericCosmeticFiltering ? discardSets : retrieveSets, - 2 - ); - - // Apply exceptions to specific filterset - if ( exceptionSet.size !== 0 ) { - out.exceptionFilters = Array.from(exceptionSet); - for ( const selector of specificSet ) { - if ( exceptionSet.has(selector) === false ) { continue; } - specificSet.delete(selector); - out.exceptedFilters.push(selector); - } - } - - if ( specificSet.size !== 0 ) { - injectedCSS.push( - `${Array.from(specificSet).join(',\n')}\n{display:none!important;}` - ); - } - - // Apply exceptions to procedural filterset. - // Also, some procedural filters are really declarative cosmetic - // filters, so we extract and inject them immediately. - if ( proceduralSet.size !== 0 ) { - for ( const json of proceduralSet ) { - const pfilter = JSON.parse(json); - if ( exceptionSet.has(json) ) { - proceduralSet.delete(json); - out.exceptedFilters.push(json); - continue; - } - if ( exceptionSet.has(pfilter.raw) ) { - proceduralSet.delete(json); - out.exceptedFilters.push(pfilter.raw); - continue; - } - const cssRule = this.cssRuleFromProcedural(pfilter); - if ( cssRule === undefined ) { continue; } - injectedCSS.push(cssRule); - proceduralSet.delete(json); - out.convertedProceduralFilters.push(json); - } - out.proceduralFilters.push(...proceduralSet); - } - - // Highly generic cosmetic filters: sent once along with specific ones. - // A most-recent-used cache is used to skip computing the resulting set - // of high generics for a given set of exceptions. - // The resulting set of high generics is stored as a string, ready to - // be used as-is by the content script. The string is stored - // indirectly in the mru cache: this is to prevent duplication of the - // string in memory, which I have observed occurs when the string is - // stored directly as a value in a Map. - if ( options.noGenericCosmeticFiltering !== true ) { - const exceptionSetHash = out.exceptionFilters.join(); - for ( const key in this.highlyGeneric ) { - const entry = this.highlyGeneric[key]; - let str = entry.mru.lookup(exceptionSetHash); - if ( str === undefined ) { - str = { s: entry.str, excepted: [] }; - let genericSet = entry.dict; - let hit = false; - for ( const exception of exceptionSet ) { - if ( (hit = genericSet.has(exception)) ) { break; } - } - if ( hit ) { - genericSet = new Set(entry.dict); - for ( const exception of exceptionSet ) { - if ( genericSet.delete(exception) ) { - str.excepted.push(exception); - } - } - str.s = Array.from(genericSet).join(',\n'); - } - entry.mru.add(exceptionSetHash, str); - } - if ( str.excepted.length !== 0 ) { - out.exceptedFilters.push(...str.excepted); - } - if ( str.s.length !== 0 ) { - injectedCSS.push(`${str.s}\n{display:none!important;}`); - } - } - } - - // Important: always clear used registers before leaving. - specificSet.clear(); - proceduralSet.clear(); - exceptionSet.clear(); - dummySet.clear(); - } - - const details = { - code: '', - frameId: request.frameId, - matchAboutBlank: true, - runAt: 'document_start', - }; - - // Inject all declarative-based filters as a single stylesheet. - if ( injectedCSS.length !== 0 ) { - out.injectedCSS = injectedCSS.join('\n\n'); - details.code = out.injectedCSS; - if ( request.tabId !== undefined && options.dontInject !== true ) { - vAPI.tabs.insertCSS(request.tabId, details); - } - } - - // CSS selectors for collapsible blocked elements - if ( cacheEntry ) { - const networkFilters = []; - if ( cacheEntry.retrieveNet(networkFilters) ) { - details.code = `${networkFilters.join('\n')}\n{display:none!important;}`; - if ( request.tabId !== undefined && options.dontInject !== true ) { - vAPI.tabs.insertCSS(request.tabId, details); - } - } - } - - return out; -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.getFilterCount = function() { - return this.acceptedCount - this.discardedCount; -}; - -/******************************************************************************/ - -CosmeticFilteringEngine.prototype.dump = function() { - const lowlyGenerics = []; - for ( const selectors of this.lowlyGeneric.values() ) { - lowlyGenerics.push(...selectors.split(',\n')); - } - lowlyGenerics.sort(); - const highlyGenerics = Array.from(this.highlyGeneric.simple.dict).sort(); - highlyGenerics.push(...Array.from(this.highlyGeneric.complex.dict).sort()); - return [ - 'Cosmetic Filtering Engine internals:', - `specific: ${this.specificFilters.size}`, - `generic: ${lowlyGenerics.length + highlyGenerics.length}`, - `+ lowly generic: ${lowlyGenerics.length}`, - ...lowlyGenerics.map(a => ` ${a}`), - `+ highly generic: ${highlyGenerics.length}`, - ...highlyGenerics.map(a => ` ${a}`), - ].join('\n'); -}; - -/******************************************************************************/ - -const cosmeticFilteringEngine = new CosmeticFilteringEngine(); - -export default cosmeticFilteringEngine; - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/dashboard-common.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/dashboard-common.js deleted file mode 100644 index feceb1f..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/dashboard-common.js +++ /dev/null @@ -1,215 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -import { dom } from './dom.js'; - -/******************************************************************************/ - -self.uBlockDashboard = self.uBlockDashboard || {}; - -/******************************************************************************/ - -// Helper for client panes: -// Remove literal duplicate lines from a set based on another set. - -self.uBlockDashboard.mergeNewLines = function(text, newText) { - // Step 1: build dictionary for existing lines. - const fromDict = new Map(); - let lineBeg = 0; - let textEnd = text.length; - while ( lineBeg < textEnd ) { - let lineEnd = text.indexOf('\n', lineBeg); - if ( lineEnd === -1 ) { - lineEnd = text.indexOf('\r', lineBeg); - if ( lineEnd === -1 ) { - lineEnd = textEnd; - } - } - const line = text.slice(lineBeg, lineEnd).trim(); - lineBeg = lineEnd + 1; - if ( line.length === 0 ) { continue; } - const hash = line.slice(0, 8); - const bucket = fromDict.get(hash); - if ( bucket === undefined ) { - fromDict.set(hash, line); - } else if ( typeof bucket === 'string' ) { - fromDict.set(hash, [ bucket, line ]); - } else /* if ( Array.isArray(bucket) ) */ { - bucket.push(line); - } - } - - // Step 2: use above dictionary to filter out duplicate lines. - const out = [ '' ]; - lineBeg = 0; - textEnd = newText.length; - while ( lineBeg < textEnd ) { - let lineEnd = newText.indexOf('\n', lineBeg); - if ( lineEnd === -1 ) { - lineEnd = newText.indexOf('\r', lineBeg); - if ( lineEnd === -1 ) { - lineEnd = textEnd; - } - } - const line = newText.slice(lineBeg, lineEnd).trim(); - lineBeg = lineEnd + 1; - if ( line.length === 0 ) { - if ( out[out.length - 1] !== '' ) { - out.push(''); - } - continue; - } - const bucket = fromDict.get(line.slice(0, 8)); - if ( bucket === undefined ) { - out.push(line); - continue; - } - if ( typeof bucket === 'string' && line !== bucket ) { - out.push(line); - continue; - } - if ( bucket.indexOf(line) === -1 ) { - out.push(line); - /* continue; */ - } - } - - const append = out.join('\n').trim(); - if ( text !== '' && append !== '' ) { - text += '\n\n'; - } - return text + append; -}; - -/******************************************************************************/ - -self.uBlockDashboard.dateNowToSensibleString = function() { - const now = new Date(Date.now() - (new Date()).getTimezoneOffset() * 60000); - return now.toISOString().replace(/\.\d+Z$/, '') - .replace(/:/g, '.') - .replace('T', '_'); -}; - -/******************************************************************************/ - -self.uBlockDashboard.patchCodeMirrorEditor = (function() { - let grabFocusTarget; - - const grabFocus = function() { - grabFocusTarget.focus(); - grabFocusTarget = undefined; - }; - - const grabFocusTimer = vAPI.defer.create(grabFocus); - - const grabFocusAsync = function(cm) { - grabFocusTarget = cm; - grabFocusTimer.on(1); - }; - - // https://github.com/gorhill/uBlock/issues/3646 - const patchSelectAll = function(cm, details) { - var vp = cm.getViewport(); - if ( details.ranges.length !== 1 ) { return; } - var range = details.ranges[0], - lineFrom = range.anchor.line, - lineTo = range.head.line; - if ( lineTo === lineFrom ) { return; } - if ( range.head.ch !== 0 ) { lineTo += 1; } - if ( lineFrom !== vp.from || lineTo !== vp.to ) { return; } - details.update([ - { - anchor: { line: 0, ch: 0 }, - head: { line: cm.lineCount(), ch: 0 } - } - ]); - grabFocusAsync(cm); - }; - - let lastGutterClick = 0; - let lastGutterLine = 0; - - const onGutterClicked = function(cm, line, gutter) { - if ( gutter !== 'CodeMirror-linenumbers' ) { return; } - grabFocusAsync(cm); - const delta = Date.now() - lastGutterClick; - // Single click - if ( delta >= 500 || line !== lastGutterLine ) { - cm.setSelection( - { line, ch: 0 }, - { line: line + 1, ch: 0 } - ); - lastGutterClick = Date.now(); - lastGutterLine = line; - return; - } - // Double click: select fold-able block or all - let lineFrom = 0; - let lineTo = cm.lineCount(); - const foldFn = cm.getHelper({ line, ch: 0 }, 'fold'); - if ( foldFn instanceof Function ) { - const range = foldFn(cm, { line, ch: 0 }); - if ( range !== undefined ) { - lineFrom = range.from.line; - lineTo = range.to.line + 1; - } - } - cm.setSelection( - { line: lineFrom, ch: 0 }, - { line: lineTo, ch: 0 }, - { scroll: false } - ); - lastGutterClick = 0; - }; - - return function(cm) { - if ( cm.options.inputStyle === 'contenteditable' ) { - cm.on('beforeSelectionChange', patchSelectAll); - } - cm.on('gutterClick', onGutterClicked); - }; -})(); - -/******************************************************************************/ - -self.uBlockDashboard.openOrSelectPage = function(url, options = {}) { - let ev; - if ( url instanceof MouseEvent ) { - ev = url; - url = dom.attr(ev.target, 'href'); - } - const details = Object.assign({ url, select: true, index: -1 }, options); - vAPI.messaging.send('default', { - what: 'gotoURL', - details, - }); - if ( ev ) { - ev.preventDefault(); - } -}; - -/******************************************************************************/ - -// Open links in the proper window -dom.attr('a', 'target', '_blank'); -dom.attr('a[href*="dashboard.html"]', 'target', '_parent'); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/dashboard.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/dashboard.js deleted file mode 100644 index 3ba16f0..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/dashboard.js +++ /dev/null @@ -1,170 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -import { dom, qs$ } from './dom.js'; - -/******************************************************************************/ - -function discardUnsavedData(synchronous = false) { - const paneFrame = qs$('#iframe'); - const paneWindow = paneFrame.contentWindow; - if ( - typeof paneWindow.hasUnsavedData !== 'function' || - paneWindow.hasUnsavedData() === false - ) { - return true; - } - - if ( synchronous ) { - return false; - } - - return new Promise(resolve => { - const modal = qs$('#unsavedWarning'); - dom.cl.add(modal, 'on'); - modal.focus(); - - const onDone = status => { - dom.cl.remove(modal, 'on'); - dom.off(document, 'click', onClick, true); - resolve(status); - }; - - const onClick = ev => { - const target = ev.target; - if ( target.matches('[data-i18n="dashboardUnsavedWarningStay"]') ) { - return onDone(false); - } - if ( target.matches('[data-i18n="dashboardUnsavedWarningIgnore"]') ) { - return onDone(true); - } - if ( qs$(modal, '[data-i18n="dashboardUnsavedWarning"]').contains(target) ) { - return; - } - onDone(false); - }; - - dom.on(document, 'click', onClick, true); - }); -} - -function loadDashboardPanel(pane, first) { - const tabButton = qs$(`[data-pane="${pane}"]`); - if ( tabButton === null || dom.cl.has(tabButton, 'selected') ) { return; } - const loadPane = ( ) => { - self.location.replace(`#${pane}`); - dom.cl.remove('.tabButton.selected', 'selected'); - dom.cl.add(tabButton, 'selected'); - tabButton.scrollIntoView(); - const iframe = qs$('#iframe'); - iframe.contentWindow.location.replace(pane); - if ( pane !== 'no-dashboard.html' ) { - iframe.addEventListener('load', ( ) => { - qs$('.wikilink').href = iframe.contentWindow.wikilink || ''; - }, { once: true }); - vAPI.localStorage.setItem('dashboardLastVisitedPane', pane); - } - }; - if ( first ) { - return loadPane(); - } - const r = discardUnsavedData(); - if ( r === false ) { return; } - if ( r === true ) { return loadPane(); } - r.then(status => { - if ( status === false ) { return; } - loadPane(); - }); -} - -function onTabClickHandler(ev) { - loadDashboardPanel(dom.attr(ev.target, 'data-pane')); -} - -if ( self.location.hash.slice(1) === 'no-dashboard.html' ) { - dom.cl.add(dom.body, 'noDashboard'); -} - -(async ( ) => { - // Wait for uBO's main process to be ready - await new Promise(resolve => { - const check = async ( ) => { - try { - const response = await vAPI.messaging.send('dashboard', { - what: 'readyToFilter' - }); - if ( response ) { return resolve(true); } - const iframe = qs$('#iframe'); - if ( iframe.src !== '' ) { - iframe.src = ''; - } - } catch(ex) { - } - vAPI.defer.once(250).then(( ) => check()); - }; - check(); - }); - - dom.cl.remove(dom.body, 'notReady'); - - const results = await Promise.all([ - // https://github.com/uBlockOrigin/uBlock-issues/issues/106 - vAPI.messaging.send('dashboard', { what: 'dashboardConfig' }), - vAPI.localStorage.getItemAsync('dashboardLastVisitedPane'), - ]); - - { - const details = results[0] || {}; - if ( details.noDashboard ) { - self.location.hash = '#no-dashboard.html'; - dom.cl.add(dom.body, 'noDashboard'); - } else if ( self.location.hash === '#no-dashboard.html' ) { - self.location.hash = ''; - } - } - - { - let pane = results[1] || null; - if ( self.location.hash !== '' ) { - pane = self.location.hash.slice(1) || null; - } - loadDashboardPanel(pane !== null ? pane : 'settings.html', true); - - dom.on('.tabButton', 'click', onTabClickHandler); - - // https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event - dom.on(self, 'beforeunload', ( ) => { - if ( discardUnsavedData(true) ) { return; } - event.preventDefault(); - event.returnValue = ''; - }); - - // https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event - dom.on(self, 'hashchange', ( ) => { - const pane = self.location.hash.slice(1); - if ( pane === '' ) { return; } - loadDashboardPanel(pane); - }); - - } -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/devtools.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/devtools.js deleted file mode 100644 index 0763b0b..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/devtools.js +++ /dev/null @@ -1,214 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/* global CodeMirror, uBlockDashboard */ - -'use strict'; - -import { dom, qs$ } from './dom.js'; - -/******************************************************************************/ - -const reFoldable = /^ *(?=\+ \S)/; - -/******************************************************************************/ - -CodeMirror.registerGlobalHelper( - 'fold', - 'ubo-dump', - ( ) => true, - (cm, start) => { - const startLineNo = start.line; - const startLine = cm.getLine(startLineNo); - let endLineNo = startLineNo; - let endLine = startLine; - const match = reFoldable.exec(startLine); - if ( match === null ) { return; } - const foldCandidate = ' ' + match[0]; - const lastLineNo = cm.lastLine(); - let nextLineNo = startLineNo + 1; - while ( nextLineNo < lastLineNo ) { - const nextLine = cm.getLine(nextLineNo); - // TODO: use regex to find folding end - if ( nextLine.startsWith(foldCandidate) === false && nextLine !== ']' ) { - if ( startLineNo >= endLineNo ) { return; } - return { - from: CodeMirror.Pos(startLineNo, startLine.length), - to: CodeMirror.Pos(endLineNo, endLine.length) - }; - } - endLine = nextLine; - endLineNo = nextLineNo; - nextLineNo += 1; - } - } -); - -const cmEditor = new CodeMirror(qs$('#console'), { - autofocus: true, - foldGutter: true, - gutters: [ 'CodeMirror-linenumbers', 'CodeMirror-foldgutter' ], - lineNumbers: true, - lineWrapping: true, - mode: 'ubo-dump', - styleActiveLine: true, - undoDepth: 5, -}); - -uBlockDashboard.patchCodeMirrorEditor(cmEditor); - -/******************************************************************************/ - -function log(text) { - cmEditor.replaceRange(text.trim() + '\n\n', { line: 0, ch: 0 }); -} - -/******************************************************************************/ - -dom.on('#console-clear', 'click', ( ) => { - cmEditor.setValue(''); -}); - -dom.on('#console-fold', 'click', ( ) => { - const unfolded = []; - let maxUnfolded = -1; - cmEditor.eachLine(handle => { - const match = reFoldable.exec(handle.text); - if ( match === null ) { return; } - const depth = match[0].length; - const line = handle.lineNo(); - const isFolded = cmEditor.isFolded({ line, ch: handle.text.length }); - if ( isFolded === true ) { return; } - unfolded.push({ line, depth }); - maxUnfolded = Math.max(maxUnfolded, depth); - }); - if ( maxUnfolded === -1 ) { return; } - cmEditor.startOperation(); - for ( const details of unfolded ) { - if ( details.depth !== maxUnfolded ) { continue; } - cmEditor.foldCode(details.line, null, 'fold'); - } - cmEditor.endOperation(); -}); - -dom.on('#console-unfold', 'click', ( ) => { - const folded = []; - let minFolded = Number.MAX_SAFE_INTEGER; - cmEditor.eachLine(handle => { - const match = reFoldable.exec(handle.text); - if ( match === null ) { return; } - const depth = match[0].length; - const line = handle.lineNo(); - const isFolded = cmEditor.isFolded({ line, ch: handle.text.length }); - if ( isFolded !== true ) { return; } - folded.push({ line, depth }); - minFolded = Math.min(minFolded, depth); - }); - if ( minFolded === Number.MAX_SAFE_INTEGER ) { return; } - cmEditor.startOperation(); - for ( const details of folded ) { - if ( details.depth !== minFolded ) { continue; } - cmEditor.foldCode(details.line, null, 'unfold'); - } - cmEditor.endOperation(); -}); - -dom.on('#snfe-dump', 'click', ev => { - const button = ev.target; - dom.attr(button, 'disabled', ''); - vAPI.messaging.send('devTools', { - what: 'snfeDump', - }).then(result => { - log(result); - dom.attr(button, 'disabled', null); - }); -}); - -dom.on('#snfe-todnr', 'click', ev => { - const button = ev.target; - dom.attr(button, 'disabled', ''); - vAPI.messaging.send('devTools', { - what: 'snfeToDNR', - }).then(result => { - log(result); - dom.attr(button, 'disabled', null); - }); -}); - -dom.on('#cfe-dump', 'click', ev => { - const button = ev.target; - dom.attr(button, 'disabled', ''); - vAPI.messaging.send('devTools', { - what: 'cfeDump', - }).then(result => { - log(result); - dom.attr(button, 'disabled', null); - }); -}); - -dom.on('#purge-all-caches', 'click', ( ) => { - vAPI.messaging.send('devTools', { - what: 'purgeAllCaches' - }).then(result => { - log(result); - }); -}); - -vAPI.messaging.send('dashboard', { - what: 'getAppData', -}).then(appData => { - if ( appData.canBenchmark !== true ) { return; } - dom.attr('#snfe-benchmark', 'disabled', null); - dom.on('#snfe-benchmark', 'click', ev => { - const button = ev.target; - dom.attr(button, 'disabled', ''); - vAPI.messaging.send('devTools', { - what: 'snfeBenchmark', - }).then(result => { - log(result); - dom.attr(button, 'disabled', null); - }); - }); - dom.attr('#cfe-benchmark', 'disabled', null); - dom.on('#cfe-benchmark', 'click', ev => { - const button = ev.target; - dom.attr(button, 'disabled', ''); - vAPI.messaging.send('devTools', { - what: 'cfeBenchmark', - }).then(result => { - log(result); - dom.attr(button, 'disabled', null); - }); - }); - dom.attr('#sfe-benchmark', 'disabled', null); - dom.on('#sfe-benchmark', 'click', ev => { - const button = ev.target; - dom.attr(button, 'disabled', ''); - vAPI.messaging.send('devTools', { - what: 'sfeBenchmark', - }).then(result => { - log(result); - dom.attr(button, 'disabled', null); - }); - }); -}); - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/diff-updater.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/diff-updater.js deleted file mode 100644 index 4e6ece1..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/diff-updater.js +++ /dev/null @@ -1,288 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -// This module can be dynamically loaded or spun off as a worker. - -/******************************************************************************/ - -const patches = new Map(); -const encoder = new TextEncoder(); -const reFileName = /([^\/]+?)(?:#.+)?$/; -const EMPTYLINE = ''; - -/******************************************************************************/ - -const suffleArray = arr => { - const out = arr.slice(); - for ( let i = 0, n = out.length; i < n; i++ ) { - const j = Math.floor(Math.random() * n); - if ( j === i ) { continue; } - [ out[j], out[i] ] = [ out[i], out[j] ]; - } - return out; -}; - -const basename = url => { - const match = reFileName.exec(url); - return match && match[1] || ''; -}; - -const resolveURL = (path, url) => { - try { - return new URL(path, url); - } - catch(_) { - } -}; - -const expectedTimeFromPatch = assetDetails => { - const match = /(\d+)\.(\d+)\.(\d+)\.(\d+)/.exec(assetDetails.patchPath); - if ( match === null ) { return 0; } - const date = new Date(); - date.setUTCFullYear( - parseInt(match[1], 10), - parseInt(match[2], 10) - 1, - parseInt(match[3], 10) - ); - date.setUTCHours(0, parseInt(match[4], 10), 0, 0); - return date.getTime() + assetDetails.diffExpires; -}; - -function parsePatch(patch) { - const patchDetails = new Map(); - const diffLines = patch.split('\n'); - let i = 0, n = diffLines.length; - while ( i < n ) { - const line = diffLines[i++]; - if ( line.startsWith('diff ') === false ) { continue; } - const fields = line.split(/\s+/); - const diffBlock = {}; - for ( let j = 0; j < fields.length; j++ ) { - const field = fields[j]; - const pos = field.indexOf(':'); - if ( pos === -1 ) { continue; } - const name = field.slice(0, pos); - if ( name === '' ) { continue; } - const value = field.slice(pos+1); - switch ( name ) { - case 'name': - case 'checksum': - diffBlock[name] = value; - break; - case 'lines': - diffBlock.lines = parseInt(value, 10); - break; - default: - break; - } - } - if ( diffBlock.name === undefined ) { return; } - if ( isNaN(diffBlock.lines) || diffBlock.lines <= 0 ) { return; } - if ( diffBlock.checksum === undefined ) { return; } - patchDetails.set(diffBlock.name, diffBlock); - diffBlock.diff = diffLines.slice(i, i + diffBlock.lines).join('\n'); - i += diffBlock.lines; - } - if ( patchDetails.size === 0 ) { return; } - return patchDetails; -} - -function applyPatch(text, diff) { - // Inspired from (Perl) "sub _patch" at: - // https://twiki.org/p/pub/Codev/RcsLite/RcsLite.pm - // Apparently authored by John Talintyre in Jan. 2002 - // https://twiki.org/cgi-bin/view/Codev/RcsLite - const lines = text.split('\n'); - const diffLines = diff.split('\n'); - let iAdjust = 0; - let iDiff = 0, nDiff = diffLines.length; - while ( iDiff < nDiff ) { - const diffLine = diffLines[iDiff++]; - if ( diffLine === '' ) { break; } - const diffParsed = /^([ad])(\d+) (\d+)$/.exec(diffLine); - if ( diffParsed === null ) { return; } - const op = diffParsed[1]; - const iOp = parseInt(diffParsed[2], 10); - const nOp = parseInt(diffParsed[3], 10); - const iOpAdj = iOp + iAdjust; - if ( iOpAdj > lines.length ) { return; } - // Delete lines - if ( op === 'd' ) { - lines.splice(iOpAdj-1, nOp); - iAdjust -= nOp; - continue; - } - // Add lines: Don't use splice() to avoid stack limit issues - for ( let i = 0; i < nOp; i++ ) { - lines.push(EMPTYLINE); - } - lines.copyWithin(iOpAdj+nOp, iOpAdj); - for ( let i = 0; i < nOp; i++ ) { - lines[iOpAdj+i] = diffLines[iDiff+i]; - } - iAdjust += nOp; - iDiff += nOp; - } - return lines.join('\n'); -} - -function hasPatchDetails(assetDetails) { - const { patchPath } = assetDetails; - const patchFile = basename(patchPath); - return patchFile !== '' && patches.has(patchFile); -} - -/******************************************************************************/ - -// Async - -async function applyPatchAndValidate(assetDetails, diffDetails) { - const { text } = assetDetails; - const { diff, checksum } = diffDetails; - const textAfter = applyPatch(text, diff); - if ( typeof textAfter !== 'string' ) { - assetDetails.error = 'baddiff'; - return false; - } - const crypto = globalThis.crypto; - if ( typeof crypto !== 'object' ) { - assetDetails.error = 'nocrypto'; - return false; - } - const arrayin = encoder.encode(textAfter); - const arraybuffer = await crypto.subtle.digest('SHA-1', arrayin); - const arrayout = new Uint8Array(arraybuffer); - const sha1Full = Array.from(arrayout).map(i => - i.toString(16).padStart(2, '0') - ).join(''); - if ( sha1Full.startsWith(checksum) === false ) { - assetDetails.error = `badchecksum: expected ${checksum}, computed ${sha1Full.slice(0, checksum.length)}`; - return false; - } - assetDetails.text = textAfter; - return true; -} - -async function fetchPatchDetailsFromCDNs(assetDetails) { - const { patchPath, cdnURLs } = assetDetails; - if ( Array.isArray(cdnURLs) === false ) { return null; } - if ( cdnURLs.length === 0 ) { return null; } - for ( const cdnURL of suffleArray(cdnURLs) ) { - const patchURL = resolveURL(patchPath, cdnURL); - if ( patchURL === undefined ) { continue; } - const response = await fetch(patchURL).catch(reason => { - console.error(reason, patchURL); - }); - if ( response === undefined ) { continue; } - if ( response.status === 404 ) { break; } - if ( response.ok !== true ) { continue; } - const patchText = await response.text(); - const patchDetails = parsePatch(patchText); - if ( patchURL.hash.length > 1 ) { - assetDetails.diffName = patchURL.hash.slice(1); - patchURL.hash = ''; - } - return { - patchURL: patchURL.href, - patchSize: `${(patchText.length / 1000).toFixed(1)} KB`, - patchDetails, - }; - } - return null; -} - -async function fetchPatchDetails(assetDetails) { - const { patchPath } = assetDetails; - const patchFile = basename(patchPath); - if ( patchFile === '' ) { return null; } - if ( patches.has(patchFile) ) { - return patches.get(patchFile); - } - const patchDetailsPromise = fetchPatchDetailsFromCDNs(assetDetails); - patches.set(patchFile, patchDetailsPromise); - return patchDetailsPromise; -} - -async function fetchAndApplyAllPatches(assetDetails) { - if ( assetDetails.fetch === false ) { - if ( hasPatchDetails(assetDetails) === false ) { - assetDetails.status = 'nodiff'; - return assetDetails; - } - } - // uBO-specific, to avoid pointless fetches which are likely to fail - // because the patch has not yet been created - const patchTime = expectedTimeFromPatch(assetDetails); - if ( patchTime > Date.now() ) { - assetDetails.status = 'nopatch-yet'; - return assetDetails; - } - const patchData = await fetchPatchDetails(assetDetails); - if ( patchData === null ) { - assetDetails.status = (Date.now() - patchTime) < (4 * assetDetails.diffExpires) - ? 'nopatch-yet' - : 'nopatch'; - return assetDetails; - } - const { patchDetails } = patchData; - if ( patchDetails instanceof Map === false ) { - assetDetails.status = 'nodiff'; - return assetDetails; - } - const diffDetails = patchDetails.get(assetDetails.diffName); - if ( diffDetails === undefined ) { - assetDetails.status = 'nodiff'; - return assetDetails; - } - if ( assetDetails.text === undefined ) { - assetDetails.status = 'needtext'; - return assetDetails; - } - const outcome = await applyPatchAndValidate(assetDetails, diffDetails); - if ( outcome !== true ) { return assetDetails; } - assetDetails.status = 'updated'; - assetDetails.patchURL = patchData.patchURL; - assetDetails.patchSize = patchData.patchSize; - return assetDetails; -} - -/******************************************************************************/ - -const bc = new globalThis.BroadcastChannel('diffUpdater'); - -bc.onmessage = ev => { - const message = ev.data || {}; - switch ( message.what ) { - case 'update': - fetchAndApplyAllPatches(message).then(response => { - bc.postMessage(response); - }).catch(error => { - bc.postMessage({ what: 'broken', error }); - }); - break; - } -}; - -bc.postMessage({ what: 'ready' }); - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/document-blocked.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/document-blocked.js deleted file mode 100644 index 59a6bc8..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/document-blocked.js +++ /dev/null @@ -1,230 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -import { i18n, i18n$ } from './i18n.js'; -import { dom, qs$ } from './dom.js'; - -/******************************************************************************/ - -const messaging = vAPI.messaging; -let details = {}; - -{ - const matches = /details=([^&]+)/.exec(window.location.search); - if ( matches !== null ) { - details = JSON.parse(decodeURIComponent(matches[1])); - } -} - -/******************************************************************************/ - -(async ( ) => { - const response = await messaging.send('documentBlocked', { - what: 'listsFromNetFilter', - rawFilter: details.fs, - }); - if ( response instanceof Object === false ) { return; } - - let lists; - for ( const rawFilter in response ) { - if ( response.hasOwnProperty(rawFilter) ) { - lists = response[rawFilter]; - break; - } - } - - if ( Array.isArray(lists) === false || lists.length === 0 ) { - qs$('#whyex').style.setProperty('visibility', 'collapse'); - return; - } - - const parent = qs$('#whyex > ul'); - parent.firstElementChild.remove(); // remove placeholder element - for ( const list of lists ) { - const listElem = dom.clone('#templates .filterList'); - const sourceElem = qs$(listElem, '.filterListSource'); - sourceElem.href += encodeURIComponent(list.assetKey); - sourceElem.append(i18n.patchUnicodeFlags(list.title)); - if ( typeof list.supportURL === 'string' && list.supportURL !== '' ) { - const supportElem = qs$(listElem, '.filterListSupport'); - dom.attr(supportElem, 'href', list.supportURL); - dom.cl.remove(supportElem, 'hidden'); - } - parent.appendChild(listElem); - } - qs$('#whyex').style.removeProperty('visibility'); -})(); - -/******************************************************************************/ - -dom.text('#theURL > p > span:first-of-type', details.url); -dom.text('#why', details.fs); - -/******************************************************************************/ - -// https://github.com/gorhill/uBlock/issues/691 -// Parse URL to extract as much useful information as possible. This is -// useful to assist the user in deciding whether to navigate to the web page. -(( ) => { - if ( typeof URL !== 'function' ) { return; } - - const reURL = /^https?:\/\//; - - const liFromParam = function(name, value) { - if ( value === '' ) { - value = name; - name = ''; - } - const li = dom.create('li'); - let span = dom.create('span'); - dom.text(span, name); - li.appendChild(span); - if ( name !== '' && value !== '' ) { - li.appendChild(document.createTextNode(' = ')); - } - span = dom.create('span'); - if ( reURL.test(value) ) { - const a = dom.create('a'); - dom.attr(a, 'href', value); - dom.text(a, value); - span.appendChild(a); - } else { - dom.text(span, value); - } - li.appendChild(span); - return li; - }; - - // https://github.com/uBlockOrigin/uBlock-issues/issues/1649 - // Limit recursion. - const renderParams = function(parentNode, rawURL, depth = 0) { - let url; - try { - url = new URL(rawURL); - } catch(ex) { - return false; - } - - const search = url.search.slice(1); - if ( search === '' ) { return false; } - - url.search = ''; - const li = liFromParam(i18n$('docblockedNoParamsPrompt'), url.href); - parentNode.appendChild(li); - - const params = new self.URLSearchParams(search); - for ( const [ name, value ] of params ) { - const li = liFromParam(name, value); - if ( depth < 2 && reURL.test(value) ) { - const ul = dom.create('ul'); - renderParams(ul, value, depth + 1); - li.appendChild(ul); - } - parentNode.appendChild(li); - } - - return true; - }; - - if ( renderParams(qs$('#parsed'), details.url) === false ) { - return; - } - - dom.cl.remove('#toggleParse', 'hidden'); - - dom.on('#toggleParse', 'click', ( ) => { - dom.cl.toggle('#theURL', 'collapsed'); - vAPI.localStorage.setItem( - 'document-blocked-expand-url', - (dom.cl.has('#theURL', 'collapsed') === false).toString() - ); - }); - - vAPI.localStorage.getItemAsync('document-blocked-expand-url').then(value => { - dom.cl.toggle('#theURL', 'collapsed', value !== 'true' && value !== true); - }); -})(); - -/******************************************************************************/ - -// https://www.reddit.com/r/uBlockOrigin/comments/breeux/close_this_window_doesnt_work_on_firefox/ - -if ( window.history.length > 1 ) { - dom.on('#back', 'click', ( ) => { - window.history.back(); - }); - qs$('#bye').style.display = 'none'; -} else { - dom.on('#bye', 'click', ( ) => { - messaging.send('documentBlocked', { - what: 'closeThisTab', - }); - }); - qs$('#back').style.display = 'none'; -} - -/******************************************************************************/ - -const getTargetHostname = function() { - return details.hn; -}; - -const proceedToURL = function() { - window.location.replace(details.url); -}; - -const proceedTemporary = async function() { - await messaging.send('documentBlocked', { - what: 'temporarilyWhitelistDocument', - hostname: getTargetHostname(), - }); - proceedToURL(); -}; - -const proceedPermanent = async function() { - await messaging.send('documentBlocked', { - what: 'toggleHostnameSwitch', - name: 'no-strict-blocking', - hostname: getTargetHostname(), - deep: true, - state: true, - persist: true, - }); - proceedToURL(); -}; - -dom.on('#disableWarning', 'change', ev => { - const checked = ev.target.checked; - dom.cl.toggle('[data-i18n="docblockedBack"]', 'disabled', checked); - dom.cl.toggle('[data-i18n="docblockedClose"]', 'disabled', checked); -}); - -dom.on('#proceed', 'click', ( ) => { - if ( qs$('#disableWarning').checked ) { - proceedPermanent(); - } else { - proceedTemporary(); - } -}); - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/dom-inspector.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/dom-inspector.js deleted file mode 100644 index a0d334b..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/dom-inspector.js +++ /dev/null @@ -1,68 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ -/******************************************************************************/ - -const svgRoot = document.querySelector('svg'); -let inspectorContentPort; - -const shutdown = ( ) => { - inspectorContentPort.close(); - inspectorContentPort.onmessage = inspectorContentPort.onmessageerror = null; - inspectorContentPort = undefined; -}; - -const contentInspectorChannel = ev => { - const msg = ev.data || {}; - switch ( msg.what ) { - case 'quitInspector': { - shutdown(); - break; - } - case 'svgPaths': { - const paths = svgRoot.children; - paths[0].setAttribute('d', msg.paths[0]); - paths[1].setAttribute('d', msg.paths[1]); - paths[2].setAttribute('d', msg.paths[2]); - paths[3].setAttribute('d', msg.paths[3]); - break; - } - default: - break; - } -}; - -// Wait for the content script to establish communication -globalThis.addEventListener('message', ev => { - const msg = ev.data || {}; - if ( msg.what !== 'startInspector' ) { return; } - if ( Array.isArray(ev.ports) === false ) { return; } - if ( ev.ports.length === 0 ) { return; } - inspectorContentPort = ev.ports[0]; - inspectorContentPort.onmessage = contentInspectorChannel; - inspectorContentPort.onmessageerror = shutdown; - inspectorContentPort.postMessage({ what: 'startInspector' }); -}, { once: true }); - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/dom.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/dom.js deleted file mode 100644 index 241af9d..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/dom.js +++ /dev/null @@ -1,217 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/******************************************************************************/ - -const normalizeTarget = target => { - if ( typeof target === 'string' ) { return Array.from(qsa$(target)); } - if ( target instanceof Element ) { return [ target ]; } - if ( target === null ) { return []; } - if ( Array.isArray(target) ) { return target; } - return Array.from(target); -}; - -const makeEventHandler = (selector, callback) => { - return function(event) { - const dispatcher = event.currentTarget; - if ( - dispatcher instanceof HTMLElement === false || - typeof dispatcher.querySelectorAll !== 'function' - ) { - return; - } - const receiver = event.target; - const ancestor = receiver.closest(selector); - if ( - ancestor === receiver && - ancestor !== dispatcher && - dispatcher.contains(ancestor) - ) { - callback.call(receiver, event); - } - }; -}; - -/******************************************************************************/ - -class dom { - static attr(target, attr, value = undefined) { - for ( const elem of normalizeTarget(target) ) { - if ( value === undefined ) { - return elem.getAttribute(attr); - } - if ( value === null ) { - elem.removeAttribute(attr); - } else { - elem.setAttribute(attr, value); - } - } - } - - static clear(target) { - for ( const elem of normalizeTarget(target) ) { - while ( elem.firstChild !== null ) { - elem.removeChild(elem.firstChild); - } - } - } - - static clone(target) { - const elements = normalizeTarget(target); - if ( elements.length === 0 ) { return null; } - return elements[0].cloneNode(true); - } - - static create(a) { - if ( typeof a === 'string' ) { - return document.createElement(a); - } - } - - static prop(target, prop, value = undefined) { - for ( const elem of normalizeTarget(target) ) { - if ( value === undefined ) { return elem[prop]; } - elem[prop] = value; - } - } - - static text(target, text) { - const targets = normalizeTarget(target); - if ( text === undefined ) { - return targets.length !== 0 ? targets[0].textContent : undefined; - } - for ( const elem of targets ) { - elem.textContent = text; - } - } - - static remove(target) { - for ( const elem of normalizeTarget(target) ) { - elem.remove(); - } - } - - static empty(target) { - for ( const elem of normalizeTarget(target) ) { - while ( elem.firstElementChild !== null ) { - elem.firstElementChild.remove(); - } - } - } - - // target, type, callback, [options] - // target, type, subtarget, callback, [options] - - static on(target, type, subtarget, callback, options) { - if ( typeof subtarget === 'function' ) { - options = callback; - callback = subtarget; - subtarget = undefined; - if ( typeof options === 'boolean' ) { - options = { capture: true }; - } - } else { - callback = makeEventHandler(subtarget, callback); - if ( options === undefined || typeof options === 'boolean' ) { - options = { capture: true }; - } else { - options.capture = true; - } - } - const targets = target instanceof Window || target instanceof Document - ? [ target ] - : normalizeTarget(target); - for ( const elem of targets ) { - elem.addEventListener(type, callback, options); - } - } - - static off(target, type, callback, options) { - if ( typeof callback !== 'function' ) { return; } - if ( typeof options === 'boolean' ) { - options = { capture: true }; - } - const targets = target instanceof Window || target instanceof Document - ? [ target ] - : normalizeTarget(target); - for ( const elem of targets ) { - elem.removeEventListener(type, callback, options); - } - } -} - -dom.cl = class { - static add(target, name) { - for ( const elem of normalizeTarget(target) ) { - elem.classList.add(name); - } - } - - static remove(target, ...names) { - for ( const elem of normalizeTarget(target) ) { - elem.classList.remove(...names); - } - } - - static toggle(target, name, state) { - let r; - for ( const elem of normalizeTarget(target) ) { - r = elem.classList.toggle(name, state); - } - return r; - } - - static has(target, name) { - for ( const elem of normalizeTarget(target) ) { - if ( elem.classList.contains(name) ) { - return true; - } - } - return false; - } -}; - -/******************************************************************************/ - -function qs$(a, b) { - if ( typeof a === 'string') { - return document.querySelector(a); - } - if ( a === null ) { return null; } - return a.querySelector(b); -} - -function qsa$(a, b) { - if ( typeof a === 'string') { - return document.querySelectorAll(a); - } - if ( a === null ) { return []; } - return a.querySelectorAll(b); -} - -dom.root = qs$(':root'); -dom.html = document.documentElement; -dom.head = document.head; -dom.body = document.body; - -/******************************************************************************/ - -export { dom, qs$, qsa$ }; diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/dyna-rules.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/dyna-rules.js deleted file mode 100644 index 69eef85..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/dyna-rules.js +++ /dev/null @@ -1,710 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/* global CodeMirror, diff_match_patch, uBlockDashboard */ - -'use strict'; - -import publicSuffixList from '../lib/publicsuffixlist/publicsuffixlist.js'; - -import { hostnameFromURI } from './uri-utils.js'; -import { i18n$ } from './i18n.js'; -import { dom, qs$, qsa$ } from './dom.js'; - -import './codemirror/ubo-dynamic-filtering.js'; - -/******************************************************************************/ - -const hostnameToDomainMap = new Map(); - -const mergeView = new CodeMirror.MergeView( - qs$('.codeMirrorMergeContainer'), - { - allowEditingOriginals: true, - connect: 'align', - inputStyle: 'contenteditable', - lineNumbers: true, - lineWrapping: false, - origLeft: '', - revertButtons: true, - value: '', - } -); -mergeView.editor().setOption('styleActiveLine', true); -mergeView.editor().setOption('lineNumbers', false); -mergeView.leftOriginal().setOption('readOnly', 'nocursor'); - -uBlockDashboard.patchCodeMirrorEditor(mergeView.editor()); - -const thePanes = { - orig: { - doc: mergeView.leftOriginal(), - original: [], - modified: [], - }, - edit: { - doc: mergeView.editor(), - original: [], - modified: [], - }, -}; - -let cleanEditToken = 0; -let cleanEditText = ''; - -/******************************************************************************/ - -// The following code is to take care of properly internationalizing -// the tooltips of the arrows used by the CodeMirror merge view. These -// are hard-coded by CodeMirror ("Push to left", "Push to right"). An -// observer is necessary because there is no hook for uBO to overwrite -// reliably the default title attribute assigned by CodeMirror. - -{ - const i18nCommitStr = i18n$('rulesCommit'); - const i18nRevertStr = i18n$('rulesRevert'); - const commitArrowSelector = '.CodeMirror-merge-copybuttons-left .CodeMirror-merge-copy-reverse:not([title="' + i18nCommitStr + '"])'; - const revertArrowSelector = '.CodeMirror-merge-copybuttons-left .CodeMirror-merge-copy:not([title="' + i18nRevertStr + '"])'; - - dom.attr('.CodeMirror-merge-scrolllock', 'title', i18n$('genericMergeViewScrollLock')); - - const translate = function() { - let elems = qsa$(commitArrowSelector); - for ( const elem of elems ) { - dom.attr(elem, 'title', i18nCommitStr); - } - elems = qsa$(revertArrowSelector); - for ( const elem of elems ) { - dom.attr(elem, 'title', i18nRevertStr); - } - }; - - const mergeGapObserver = new MutationObserver(translate); - - mergeGapObserver.observe( - qs$('.CodeMirror-merge-copybuttons-left'), - { attributes: true, attributeFilter: [ 'title' ], subtree: true } - ); -} - -/******************************************************************************/ - -const getDiffer = (( ) => { - let differ; - return ( ) => { - if ( differ === undefined ) { differ = new diff_match_patch(); } - return differ; - }; -})(); - -/******************************************************************************/ - -// Borrowed from... -// https://github.com/codemirror/CodeMirror/blob/3e1bb5fff682f8f6cbfaef0e56c61d62403d4798/addon/search/search.js#L22 -// ... and modified as needed. - -const updateOverlay = (( ) => { - let reFilter; - const mode = { - token: function(stream) { - if ( reFilter !== undefined ) { - reFilter.lastIndex = stream.pos; - let match = reFilter.exec(stream.string); - if ( match !== null ) { - if ( match.index === stream.pos ) { - stream.pos += match[0].length || 1; - return 'searching'; - } - stream.pos = match.index; - return; - } - } - stream.skipToEnd(); - } - }; - return function() { - const f = presentationState.filter; - reFilter = typeof f === 'string' && f !== '' - ? new RegExp(f.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gi') - : undefined; - return mode; - }; -})(); - -const toggleOverlay = (( ) => { - let overlay = null; - - return function() { - if ( overlay !== null ) { - mergeView.leftOriginal().removeOverlay(overlay); - mergeView.editor().removeOverlay(overlay); - overlay = null; - } - if ( presentationState.filter !== '' ) { - overlay = updateOverlay(); - mergeView.leftOriginal().addOverlay(overlay); - mergeView.editor().addOverlay(overlay); - } - rulesToDoc(true); - savePresentationState(); - }; -})(); - -/******************************************************************************/ - -// Incrementally update text in a CodeMirror editor for best user experience: -// - Scroll position preserved -// - Minimum amount of text updated - -function rulesToDoc(clearHistory) { - const orig = thePanes.orig.doc; - const edit = thePanes.edit.doc; - orig.startOperation(); - edit.startOperation(); - - for ( const key in thePanes ) { - if ( thePanes.hasOwnProperty(key) === false ) { continue; } - const doc = thePanes[key].doc; - const rules = filterRules(key); - if ( - clearHistory || - doc.lineCount() === 1 && doc.getValue() === '' || - rules.length === 0 - ) { - doc.setValue(rules.length !== 0 ? rules.join('\n') + '\n' : ''); - continue; - } - // https://github.com/uBlockOrigin/uBlock-issues/issues/593 - // Ensure the text content always ends with an empty line to avoid - // spurious diff entries. - // https://github.com/uBlockOrigin/uBlock-issues/issues/657 - // Diff against unmodified beforeText so that the last newline can - // be reported in the diff and thus appended if needed. - let beforeText = doc.getValue(); - let afterText = rules.join('\n').trim(); - if ( afterText !== '' ) { afterText += '\n'; } - const diffs = getDiffer().diff_main(beforeText, afterText); - let i = diffs.length; - let iedit = beforeText.length; - while ( i-- ) { - const diff = diffs[i]; - if ( diff[0] === 0 ) { - iedit -= diff[1].length; - continue; - } - const end = doc.posFromIndex(iedit); - if ( diff[0] === 1 ) { - doc.replaceRange(diff[1], end, end); - continue; - } - /* diff[0] === -1 */ - iedit -= diff[1].length; - const beg = doc.posFromIndex(iedit); - doc.replaceRange('', beg, end); - } - } - - // Mark ellipses as read-only - const marks = edit.getAllMarks(); - for ( const mark of marks ) { - if ( mark.uboEllipsis !== true ) { continue; } - mark.clear(); - } - if ( presentationState.isCollapsed ) { - for ( let iline = 0, n = edit.lineCount(); iline < n; iline++ ) { - if ( edit.getLine(iline) !== '...' ) { continue; } - const mark = edit.markText( - { line: iline, ch: 0 }, - { line: iline + 1, ch: 0 }, - { atomic: true, readOnly: true } - ); - mark.uboEllipsis = true; - } - } - - orig.endOperation(); - edit.endOperation(); - cleanEditText = mergeView.editor().getValue().trim(); - cleanEditToken = mergeView.editor().changeGeneration(); - - if ( clearHistory !== true ) { return; } - - mergeView.editor().clearHistory(); - const chunks = mergeView.leftChunks(); - if ( chunks.length === 0 ) { return; } - const ldoc = thePanes.orig.doc; - const { clientHeight } = ldoc.getScrollInfo(); - const line = Math.min(chunks[0].editFrom, chunks[0].origFrom); - ldoc.setCursor(line, 0); - ldoc.scrollIntoView( - { line, ch: 0 }, - (clientHeight - ldoc.defaultTextHeight()) / 2 - ); -} - -/******************************************************************************/ - -function filterRules(key) { - const filter = qs$('#ruleFilter input').value; - const rules = thePanes[key].modified; - if ( filter === '' ) { return rules; } - const out = []; - for ( const rule of rules ) { - if ( rule.indexOf(filter) === -1 ) { continue; } - out.push(rule); - } - return out; -} - -/******************************************************************************/ - -async function applyDiff(permanent, toAdd, toRemove) { - const details = await vAPI.messaging.send('dashboard', { - what: 'modifyRuleset', - permanent: permanent, - toAdd: toAdd, - toRemove: toRemove, - }); - thePanes.orig.original = details.permanentRules; - thePanes.edit.original = details.sessionRules; - onPresentationChanged(); -} - -/******************************************************************************/ - -// CodeMirror quirk: sometimes fromStart.ch and/or toStart.ch is undefined. -// When this happens, use 0. - -mergeView.options.revertChunk = function( - mv, - from, fromStart, fromEnd, - to, toStart, toEnd -) { - // https://github.com/gorhill/uBlock/issues/3611 - if ( dom.attr(dom.body, 'dir') === 'rtl' ) { - let tmp = from; from = to; to = tmp; - tmp = fromStart; fromStart = toStart; toStart = tmp; - tmp = fromEnd; fromEnd = toEnd; toEnd = tmp; - } - if ( typeof fromStart.ch !== 'number' ) { fromStart.ch = 0; } - if ( fromEnd.ch !== 0 ) { fromEnd.line += 1; } - const toAdd = from.getRange( - { line: fromStart.line, ch: 0 }, - { line: fromEnd.line, ch: 0 } - ); - if ( typeof toStart.ch !== 'number' ) { toStart.ch = 0; } - if ( toEnd.ch !== 0 ) { toEnd.line += 1; } - const toRemove = to.getRange( - { line: toStart.line, ch: 0 }, - { line: toEnd.line, ch: 0 } - ); - applyDiff(from === mv.editor(), toAdd, toRemove); -}; - -/******************************************************************************/ - -function handleImportFilePicker() { - const fileReaderOnLoadHandler = function() { - if ( typeof this.result !== 'string' || this.result === '' ) { return; } - // https://github.com/chrisaljoudi/uBlock/issues/757 - // Support RequestPolicy rule syntax - let result = this.result; - let matches = /\[origins-to-destinations\]([^\[]+)/.exec(result); - if ( matches && matches.length === 2 ) { - result = matches[1].trim() - .replace(/\|/g, ' ') - .replace(/\n/g, ' * noop\n'); - } - applyDiff(false, result, ''); - }; - const file = this.files[0]; - if ( file === undefined || file.name === '' ) { return; } - if ( file.type.indexOf('text') !== 0 ) { return; } - const fr = new FileReader(); - fr.onload = fileReaderOnLoadHandler; - fr.readAsText(file); -} - -/******************************************************************************/ - -function startImportFilePicker() { - const input = qs$('#importFilePicker'); - // Reset to empty string, this will ensure an change event is properly - // triggered if the user pick a file, even if it is the same as the last - // one picked. - input.value = ''; - input.click(); -} - -/******************************************************************************/ - -function exportUserRulesToFile() { - const filename = i18n$('rulesDefaultFileName') - .replace('{{datetime}}', uBlockDashboard.dateNowToSensibleString()) - .replace(/ +/g, '_'); - vAPI.download({ - url: 'data:text/plain,' + encodeURIComponent( - mergeView.leftOriginal().getValue().trim() + '\n' - ), - filename: filename, - saveAs: true - }); -} - -/******************************************************************************/ - -{ - let timer; - - dom.on('#ruleFilter input', 'input', ( ) => { - if ( timer !== undefined ) { self.cancelIdleCallback(timer); } - timer = self.requestIdleCallback(( ) => { - timer = undefined; - if ( mergeView.editor().isClean(cleanEditToken) === false ) { return; } - const filter = qs$('#ruleFilter input').value; - if ( filter === presentationState.filter ) { return; } - presentationState.filter = filter; - toggleOverlay(); - }, { timeout: 773 }); - }); -} - -/******************************************************************************/ - -const onPresentationChanged = (( ) => { - const reSwRule = /^([^/]+): ([^/ ]+) ([^ ]+)/; - const reRule = /^([^ ]+) ([^/ ]+) ([^ ]+ [^ ]+)/; - const reUrlRule = /^([^ ]+) ([^ ]+) ([^ ]+ [^ ]+)/; - - const sortNormalizeHn = function(hn) { - let domain = hostnameToDomainMap.get(hn); - if ( domain === undefined ) { - domain = /(\d|\])$/.test(hn) - ? hn - : publicSuffixList.getDomain(hn); - hostnameToDomainMap.set(hn, domain); - } - let normalized = domain || hn; - if ( hn.length !== domain.length ) { - const subdomains = hn.slice(0, hn.length - domain.length - 1); - normalized += '.' + ( - subdomains.includes('.') - ? subdomains.split('.').reverse().join('.') - : subdomains - ); - } - return normalized; - }; - - const slotFromRule = rule => { - let type, srcHn, desHn, extra; - let match = reSwRule.exec(rule); - if ( match !== null ) { - type = ' ' + match[1]; - srcHn = sortNormalizeHn(match[2]); - desHn = srcHn; - extra = match[3]; - } else if ( (match = reRule.exec(rule)) !== null ) { - type = '\x10FFFE'; - srcHn = sortNormalizeHn(match[1]); - desHn = sortNormalizeHn(match[2]); - extra = match[3]; - } else if ( (match = reUrlRule.exec(rule)) !== null ) { - type = '\x10FFFF'; - srcHn = sortNormalizeHn(match[1]); - desHn = sortNormalizeHn(hostnameFromURI(match[2])); - extra = match[3]; - } - if ( presentationState.sortType === 0 ) { - return { rule, token: `${type} ${srcHn} ${desHn} ${extra}` }; - } - if ( presentationState.sortType === 1 ) { - return { rule, token: `${srcHn} ${type} ${desHn} ${extra}` }; - } - return { rule, token: `${desHn} ${type} ${srcHn} ${extra}` }; - }; - - const sort = rules => { - const slots = []; - for ( let i = 0; i < rules.length; i++ ) { - slots.push(slotFromRule(rules[i], 1)); - } - slots.sort((a, b) => a.token.localeCompare(b.token)); - for ( let i = 0; i < rules.length; i++ ) { - rules[i] = slots[i].rule; - } - }; - - const collapse = ( ) => { - if ( presentationState.isCollapsed !== true ) { return; } - const diffs = getDiffer().diff_main( - thePanes.orig.modified.join('\n'), - thePanes.edit.modified.join('\n') - ); - const ll = []; let il = 0, lellipsis = false; - const rr = []; let ir = 0, rellipsis = false; - for ( let i = 0; i < diffs.length; i++ ) { - const diff = diffs[i]; - if ( diff[0] === 0 ) { - lellipsis = rellipsis = true; - il += 1; ir += 1; - continue; - } - if ( diff[0] < 0 ) { - if ( lellipsis ) { - ll.push('...'); - if ( rellipsis ) { rr.push('...'); } - lellipsis = rellipsis = false; - } - ll.push(diff[1].trim()); - il += 1; - continue; - } - /* diff[0] > 0 */ - if ( rellipsis ) { - rr.push('...'); - if ( lellipsis ) { ll.push('...'); } - lellipsis = rellipsis = false; - } - rr.push(diff[1].trim()); - ir += 1; - } - if ( lellipsis ) { ll.push('...'); } - if ( rellipsis ) { rr.push('...'); } - thePanes.orig.modified = ll; - thePanes.edit.modified = rr; - }; - - dom.on('#ruleFilter select', 'input', ev => { - presentationState.sortType = parseInt(ev.target.value, 10) || 0; - savePresentationState(); - onPresentationChanged(true); - }); - dom.on('#ruleFilter #diffCollapse', 'click', ev => { - presentationState.isCollapsed = dom.cl.toggle(ev.target, 'active'); - savePresentationState(); - onPresentationChanged(true); - }); - - return function onPresentationChanged(clearHistory) { - const origPane = thePanes.orig; - const editPane = thePanes.edit; - origPane.modified = origPane.original.slice(); - editPane.modified = editPane.original.slice(); - { - const mode = origPane.doc.getMode(); - mode.sortType = presentationState.sortType; - mode.setHostnameToDomainMap(hostnameToDomainMap); - mode.setPSL(publicSuffixList); - } - { - const mode = editPane.doc.getMode(); - mode.sortType = presentationState.sortType; - mode.setHostnameToDomainMap(hostnameToDomainMap); - mode.setPSL(publicSuffixList); - } - sort(origPane.modified); - sort(editPane.modified); - collapse(); - rulesToDoc(clearHistory); - onTextChanged(clearHistory); - }; -})(); - -/******************************************************************************/ - -const onTextChanged = (( ) => { - let timer; - - const process = details => { - timer = undefined; - const diff = qs$('#diff'); - let isClean = mergeView.editor().isClean(cleanEditToken); - if ( - details === undefined && - isClean === false && - mergeView.editor().getValue().trim() === cleanEditText - ) { - cleanEditToken = mergeView.editor().changeGeneration(); - isClean = true; - } - const isDirty = mergeView.leftChunks().length !== 0; - dom.cl.toggle(dom.body, 'editing', isClean === false); - dom.cl.toggle(diff, 'dirty', isDirty); - dom.cl.toggle('#editSaveButton', 'disabled', isClean); - dom.cl.toggle('#exportButton,#importButton', 'disabled', isClean === false); - dom.cl.toggle('#revertButton,#commitButton', 'disabled', isClean === false || isDirty === false); - const input = qs$('#ruleFilter input'); - if ( isClean ) { - dom.attr(input, 'disabled', null); - CodeMirror.commands.save = undefined; - } else { - dom.attr(input, 'disabled', ''); - CodeMirror.commands.save = editSaveHandler; - } - }; - - return function onTextChanged(now) { - if ( timer !== undefined ) { self.cancelIdleCallback(timer); } - timer = now ? process() : self.requestIdleCallback(process, { timeout: 57 }); - }; -})(); - -/******************************************************************************/ - -function revertAllHandler() { - const toAdd = [], toRemove = []; - const left = mergeView.leftOriginal(); - const edit = mergeView.editor(); - for ( const chunk of mergeView.leftChunks() ) { - const addedLines = left.getRange( - { line: chunk.origFrom, ch: 0 }, - { line: chunk.origTo, ch: 0 } - ); - const removedLines = edit.getRange( - { line: chunk.editFrom, ch: 0 }, - { line: chunk.editTo, ch: 0 } - ); - toAdd.push(addedLines.trim()); - toRemove.push(removedLines.trim()); - } - applyDiff(false, toAdd.join('\n'), toRemove.join('\n')); -} - -/******************************************************************************/ - -function commitAllHandler() { - const toAdd = [], toRemove = []; - const left = mergeView.leftOriginal(); - const edit = mergeView.editor(); - for ( const chunk of mergeView.leftChunks() ) { - const addedLines = edit.getRange( - { line: chunk.editFrom, ch: 0 }, - { line: chunk.editTo, ch: 0 } - ); - const removedLines = left.getRange( - { line: chunk.origFrom, ch: 0 }, - { line: chunk.origTo, ch: 0 } - ); - toAdd.push(addedLines.trim()); - toRemove.push(removedLines.trim()); - } - applyDiff(true, toAdd.join('\n'), toRemove.join('\n')); -} - -/******************************************************************************/ - -function editSaveHandler() { - const editor = mergeView.editor(); - const editText = editor.getValue().trim(); - if ( editText === cleanEditText ) { - onTextChanged(true); - return; - } - const toAdd = [], toRemove = []; - const diffs = getDiffer().diff_main(cleanEditText, editText); - for ( const diff of diffs ) { - if ( diff[0] === 1 ) { - toAdd.push(diff[1]); - } else if ( diff[0] === -1 ) { - toRemove.push(diff[1]); - } - } - applyDiff(false, toAdd.join(''), toRemove.join('')); -} - -/******************************************************************************/ - -self.cloud.onPush = function() { - return thePanes.orig.original.join('\n'); -}; - -self.cloud.onPull = function(data, append) { - if ( typeof data !== 'string' ) { return; } - applyDiff( - false, - data, - append ? '' : mergeView.editor().getValue().trim() - ); -}; - -/******************************************************************************/ - -self.wikilink = 'https://github.com/gorhill/uBlock/wiki/Dashboard:-My-rules'; - -self.hasUnsavedData = function() { - return mergeView.editor().isClean(cleanEditToken) === false; -}; - -/******************************************************************************/ - -const presentationState = { - sortType: 0, - isCollapsed: false, - filter: '', -}; - -const savePresentationState = ( ) => { - vAPI.localStorage.setItem('dynaRulesPresentationState', presentationState); -}; - -vAPI.localStorage.getItemAsync('dynaRulesPresentationState').then(details => { - if ( details instanceof Object === false ) { return; } - if ( typeof details.sortType === 'number' ) { - presentationState.sortType = details.sortType; - qs$('#ruleFilter select').value = `${details.sortType}`; - } - if ( typeof details.isCollapsed === 'boolean' ) { - presentationState.isCollapsed = details.isCollapsed; - dom.cl.toggle('#ruleFilter #diffCollapse', 'active', details.isCollapsed); - } - if ( typeof details.filter === 'string' ) { - presentationState.filter = details.filter; - qs$('#ruleFilter input').value = details.filter; - toggleOverlay(); - } -}); - -/******************************************************************************/ - -vAPI.messaging.send('dashboard', { - what: 'getRules', -}).then(details => { - thePanes.orig.original = details.permanentRules; - thePanes.edit.original = details.sessionRules; - publicSuffixList.fromSelfie(details.pslSelfie); - onPresentationChanged(true); -}); - -// Handle user interaction -dom.on('#importButton', 'click', startImportFilePicker); -dom.on('#importFilePicker', 'change', handleImportFilePicker); -dom.on('#exportButton', 'click', exportUserRulesToFile); -dom.on('#revertButton', 'click', revertAllHandler); -dom.on('#commitButton', 'click', commitAllHandler); -dom.on('#editSaveButton', 'click', editSaveHandler); - -// https://groups.google.com/forum/#!topic/codemirror/UQkTrt078Vs -mergeView.editor().on('updateDiff', ( ) => { - onTextChanged(); -}); - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/dynamic-net-filtering.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/dynamic-net-filtering.js deleted file mode 100644 index ec7a7c9..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/dynamic-net-filtering.js +++ /dev/null @@ -1,488 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -import punycode from '../lib/punycode.js'; - -import { LineIterator } from './text-utils.js'; - -import { - decomposeHostname, - domainFromHostname, -} from './uri-utils.js'; - -/******************************************************************************/ - -// Object.create(null) is used below to eliminate worries about unexpected -// property names in prototype chain -- and this way we don't have to use -// hasOwnProperty() to avoid this. - -const supportedDynamicTypes = Object.create(null); -Object.assign(supportedDynamicTypes, { - '3p': true, - 'image': true, -'inline-script': true, - '1p-script': true, - '3p-script': true, - '3p-frame': true -}); - -const typeBitOffsets = Object.create(null); -Object.assign(typeBitOffsets, { - '*': 0, -'inline-script': 2, - '1p-script': 4, - '3p-script': 6, - '3p-frame': 8, - 'image': 10, - '3p': 12 -}); - -const nameToActionMap = Object.create(null); -Object.assign(nameToActionMap, { - 'block': 1, - 'allow': 2, - 'noop': 3 -}); - -const intToActionMap = new Map([ - [ 1, 'block' ], - [ 2, 'allow' ], - [ 3, 'noop' ] -]); - -// For performance purpose, as simple tests as possible -const reBadHostname = /[^0-9a-z_.\[\]:%-]/; -const reNotASCII = /[^\x20-\x7F]/; -const decomposedSource = []; -const decomposedDestination = []; - -/******************************************************************************/ - -function is3rdParty(srcHostname, desHostname) { - // If at least one is party-less, the relation can't be labelled - // "3rd-party" - if ( desHostname === '*' || srcHostname === '*' || srcHostname === '' ) { - return false; - } - - // No domain can very well occurs, for examples: - // - localhost - // - file-scheme - // etc. - const srcDomain = domainFromHostname(srcHostname) || srcHostname; - - if ( desHostname.endsWith(srcDomain) === false ) { - return true; - } - // Do not confuse 'example.com' with 'anotherexample.com' - return desHostname.length !== srcDomain.length && - desHostname.charAt(desHostname.length - srcDomain.length - 1) !== '.'; -} - -/******************************************************************************/ - -class DynamicHostRuleFiltering { - - constructor() { - this.reset(); - } - - reset() { - this.r = 0; - this.type = ''; - this.y = ''; - this.z = ''; - this.rules = new Map(); - this.changed = false; - } - - assign(other) { - // Remove rules not in other - for ( const k of this.rules.keys() ) { - if ( other.rules.has(k) === false ) { - this.rules.delete(k); - this.changed = true; - } - } - // Add/change rules in other - for ( const entry of other.rules ) { - if ( this.rules.get(entry[0]) !== entry[1] ) { - this.rules.set(entry[0], entry[1]); - this.changed = true; - } - } - } - - copyRules(from, srcHostname, desHostnames) { - // Specific types - let thisBits = this.rules.get('* *'); - let fromBits = from.rules.get('* *'); - if ( fromBits !== thisBits ) { - if ( fromBits !== undefined ) { - this.rules.set('* *', fromBits); - } else { - this.rules.delete('* *'); - } - this.changed = true; - } - - let key = `${srcHostname} *`; - thisBits = this.rules.get(key); - fromBits = from.rules.get(key); - if ( fromBits !== thisBits ) { - if ( fromBits !== undefined ) { - this.rules.set(key, fromBits); - } else { - this.rules.delete(key); - } - this.changed = true; - } - - // Specific destinations - for ( const desHostname in desHostnames ) { - key = `* ${desHostname}`; - thisBits = this.rules.get(key); - fromBits = from.rules.get(key); - if ( fromBits !== thisBits ) { - if ( fromBits !== undefined ) { - this.rules.set(key, fromBits); - } else { - this.rules.delete(key); - } - this.changed = true; - } - key = `${srcHostname} ${desHostname}` ; - thisBits = this.rules.get(key); - fromBits = from.rules.get(key); - if ( fromBits !== thisBits ) { - if ( fromBits !== undefined ) { - this.rules.set(key, fromBits); - } else { - this.rules.delete(key); - } - this.changed = true; - } - } - - return this.changed; - } - - // - * * type - // - from * type - // - * to * - // - from to * - - hasSameRules(other, srcHostname, desHostnames) { - // Specific types - let key = '* *'; - if ( this.rules.get(key) !== other.rules.get(key) ) { return false; } - key = `${srcHostname} *`; - if ( this.rules.get(key) !== other.rules.get(key) ) { return false; } - // Specific destinations - for ( const desHostname in desHostnames ) { - key = `* ${desHostname}`; - if ( this.rules.get(key) !== other.rules.get(key) ) { - return false; - } - key = `${srcHostname} ${desHostname}`; - if ( this.rules.get(key) !== other.rules.get(key) ) { - return false; - } - } - return true; - } - - setCell(srcHostname, desHostname, type, state) { - const bitOffset = typeBitOffsets[type]; - const k = `${srcHostname} ${desHostname}`; - const oldBitmap = this.rules.get(k) || 0; - const newBitmap = oldBitmap & ~(3 << bitOffset) | (state << bitOffset); - if ( newBitmap === oldBitmap ) { return false; } - if ( newBitmap === 0 ) { - this.rules.delete(k); - } else { - this.rules.set(k, newBitmap); - } - this.changed = true; - return true; - } - - unsetCell(srcHostname, desHostname, type) { - this.evaluateCellZY(srcHostname, desHostname, type); - if ( this.r === 0 ) { return false; } - this.setCell(srcHostname, desHostname, type, 0); - this.changed = true; - return true; - } - - evaluateCell(srcHostname, desHostname, type) { - const key = `${srcHostname} ${desHostname}`; - const bitmap = this.rules.get(key); - if ( bitmap === undefined ) { return 0; } - return bitmap >> typeBitOffsets[type] & 3; - } - - clearRegisters() { - this.r = 0; - this.type = this.y = this.z = ''; - return this; - } - - evaluateCellZ(srcHostname, desHostname, type) { - decomposeHostname(srcHostname, decomposedSource); - this.type = type; - const bitOffset = typeBitOffsets[type]; - for ( const srchn of decomposedSource ) { - this.z = srchn; - let v = this.rules.get(`${srchn} ${desHostname}`); - if ( v === undefined ) { continue; } - v = v >>> bitOffset & 3; - if ( v === 0 ) { continue; } - return (this.r = v); - } - // srcHostname is '*' at this point - this.r = 0; - return 0; - } - - evaluateCellZY(srcHostname, desHostname, type) { - // Pathological cases. - if ( desHostname === '' ) { - this.r = 0; - return 0; - } - - // Precedence: from most specific to least specific - - // Specific-destination, any party, any type - decomposeHostname(desHostname, decomposedDestination); - for ( const deshn of decomposedDestination ) { - if ( deshn === '*' ) { break; } - this.y = deshn; - if ( this.evaluateCellZ(srcHostname, deshn, '*') !== 0 ) { - return this.r; - } - } - - const thirdParty = is3rdParty(srcHostname, desHostname); - - // Any destination - this.y = '*'; - - // Specific party - if ( thirdParty ) { - // 3rd-party, specific type - if ( type === 'script' ) { - if ( this.evaluateCellZ(srcHostname, '*', '3p-script') !== 0 ) { - return this.r; - } - } else if ( type === 'sub_frame' || type === 'object' ) { - if ( this.evaluateCellZ(srcHostname, '*', '3p-frame') !== 0 ) { - return this.r; - } - } - // 3rd-party, any type - if ( this.evaluateCellZ(srcHostname, '*', '3p') !== 0 ) { - return this.r; - } - } else if ( type === 'script' ) { - // 1st party, specific type - if ( this.evaluateCellZ(srcHostname, '*', '1p-script') !== 0 ) { - return this.r; - } - } - - // Any destination, any party, specific type - if ( supportedDynamicTypes[type] !== undefined ) { - if ( this.evaluateCellZ(srcHostname, '*', type) !== 0 ) { - return this.r; - } - if ( type.startsWith('3p-') ) { - if ( this.evaluateCellZ(srcHostname, '*', '3p') !== 0 ) { - return this.r; - } - } - } - - // Any destination, any party, any type - if ( this.evaluateCellZ(srcHostname, '*', '*') !== 0 ) { - return this.r; - } - - this.type = ''; - return 0; - } - - mustAllowCellZY(srcHostname, desHostname, type) { - return this.evaluateCellZY(srcHostname, desHostname, type) === 2; - } - - mustBlockOrAllow() { - return this.r === 1 || this.r === 2; - } - - mustBlock() { - return this.r === 1; - } - - mustAbort() { - return this.r === 3; - } - - lookupRuleData(src, des, type) { - const r = this.evaluateCellZY(src, des, type); - if ( r === 0 ) { return; } - return `${this.z} ${this.y} ${this.type} ${r}`; - } - - toLogData() { - if ( this.r === 0 || this.type === '' ) { return; } - return { - source: 'dynamicHost', - result: this.r, - raw: `${this.z} ${this.y} ${this.type} ${intToActionMap.get(this.r)}` - }; - } - - srcHostnameFromRule(rule) { - return rule.slice(0, rule.indexOf(' ')); - } - - desHostnameFromRule(rule) { - return rule.slice(rule.indexOf(' ') + 1); - } - - toArray() { - const out = []; - for ( const key of this.rules.keys() ) { - const srchn = this.srcHostnameFromRule(key); - const deshn = this.desHostnameFromRule(key); - const srchnPretty = srchn.includes('xn--') && punycode - ? punycode.toUnicode(srchn) - : srchn; - const deshnPretty = deshn.includes('xn--') && punycode - ? punycode.toUnicode(deshn) - : deshn; - for ( const type in typeBitOffsets ) { - if ( typeBitOffsets[type] === undefined ) { continue; } - const val = this.evaluateCell(srchn, deshn, type); - if ( val === 0 ) { continue; } - const action = intToActionMap.get(val); - if ( action === undefined ) { continue; } - out.push(`${srchnPretty} ${deshnPretty} ${type} ${action}`); - } - } - return out; - } - - toString() { - return this.toArray().join('\n'); - } - - fromString(text, append) { - const lineIter = new LineIterator(text); - if ( append !== true ) { this.reset(); } - while ( lineIter.eot() === false ) { - this.addFromRuleParts(lineIter.next().trim().split(/\s+/)); - } - } - - validateRuleParts(parts) { - if ( parts.length < 4 ) { return; } - - // Ignore hostname-based switch rules - if ( parts[0].endsWith(':') ) { return; } - - // Ignore URL-based rules - if ( parts[1].includes('/') ) { return; } - - if ( typeBitOffsets[parts[2]] === undefined ) { return; } - - if ( nameToActionMap[parts[3]] === undefined ) { return; } - - // https://github.com/chrisaljoudi/uBlock/issues/840 - // Discard invalid rules - if ( parts[1] !== '*' && parts[2] !== '*' ) { return; } - - // Performance: avoid punycoding when only ASCII chars - if ( punycode !== undefined ) { - if ( reNotASCII.test(parts[0]) ) { - parts[0] = punycode.toASCII(parts[0]); - } - if ( reNotASCII.test(parts[1]) ) { - parts[1] = punycode.toASCII(parts[1]); - } - } - - // https://github.com/chrisaljoudi/uBlock/issues/1082 - // Discard rules with invalid hostnames - if ( - (parts[0] !== '*' && reBadHostname.test(parts[0])) || - (parts[1] !== '*' && reBadHostname.test(parts[1])) - ) { - return; - } - - return parts; - } - - addFromRuleParts(parts) { - if ( this.validateRuleParts(parts) !== undefined ) { - this.setCell(parts[0], parts[1], parts[2], nameToActionMap[parts[3]]); - return true; - } - return false; - } - - removeFromRuleParts(parts) { - if ( this.validateRuleParts(parts) !== undefined ) { - this.setCell(parts[0], parts[1], parts[2], 0); - return true; - } - return false; - } - - toSelfie() { - return { - magicId: this.magicId, - rules: Array.from(this.rules) - }; - } - - fromSelfie(selfie) { - if ( selfie.magicId !== this.magicId ) { return false; } - this.rules = new Map(selfie.rules); - this.changed = true; - return true; - } -} - -DynamicHostRuleFiltering.prototype.magicId = 1; - -/******************************************************************************/ - -export default DynamicHostRuleFiltering; - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/epicker-ui.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/epicker-ui.js deleted file mode 100644 index d2b14df..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/epicker-ui.js +++ /dev/null @@ -1,917 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/* global CodeMirror */ - -import './codemirror/ubo-static-filtering.js'; - -import * as sfp from './static-filtering-parser.js'; - -import { dom } from './dom.js'; -import { hostnameFromURI } from './uri-utils.js'; -import punycode from '../lib/punycode.js'; - -/******************************************************************************/ -/******************************************************************************/ - -(( ) => { - -/******************************************************************************/ - -if ( typeof vAPI !== 'object' ) { return; } - -const $id = id => document.getElementById(id); -const $stor = selector => document.querySelector(selector); -const $storAll = selector => document.querySelectorAll(selector); - -const pickerRoot = document.documentElement; -const dialog = $stor('aside'); -let staticFilteringParser; - -const svgRoot = $stor('svg#sea'); -const svgOcean = svgRoot.children[0]; -const svgIslands = svgRoot.children[1]; -const NoPaths = 'M0 0'; - -const reCosmeticAnchor = /^#(\$|\?|\$\?)?#/; - -{ - const url = new URL(self.location.href); - if ( url.searchParams.has('zap') ) { - pickerRoot.classList.add('zap'); - } -} - -const docURL = new URL(vAPI.getURL('')); - -const computedSpecificityCandidates = new Map(); -let resultsetOpt; -let cosmeticFilterCandidates = []; -let computedCandidate = ''; -let needBody = false; - -/******************************************************************************/ - -const cmEditor = new CodeMirror(document.querySelector('.codeMirrorContainer'), { - autoCloseBrackets: true, - autofocus: true, - extraKeys: { - 'Ctrl-Space': 'autocomplete', - }, - lineWrapping: true, - matchBrackets: true, - maxScanLines: 1, -}); - -vAPI.messaging.send('dashboard', { - what: 'getAutoCompleteDetails' -}).then(hints => { - // For unknown reasons, `instanceof Object` does not work here in Firefox. - if ( hints instanceof Object === false ) { return; } - cmEditor.setOption('uboHints', hints); -}); - -/******************************************************************************/ - -const rawFilterFromTextarea = function() { - const text = cmEditor.getValue(); - const pos = text.indexOf('\n'); - return pos === -1 ? text : text.slice(0, pos); -}; - -/******************************************************************************/ - -const filterFromTextarea = function() { - const filter = rawFilterFromTextarea(); - if ( filter === '' ) { return ''; } - const parser = staticFilteringParser; - parser.parse(filter); - if ( parser.isFilter() === false ) { return '!'; } - if ( parser.isExtendedFilter() ) { - if ( parser.isCosmeticFilter() === false ) { return '!'; } - } else if ( parser.isNetworkFilter() === false ) { - return '!'; - } - return filter; -}; - -/******************************************************************************/ - -const renderRange = function(id, value, invert = false) { - const input = $stor(`#${id} input`); - const max = parseInt(input.max, 10); - if ( typeof value !== 'number' ) { - value = parseInt(input.value, 10); - } - if ( invert ) { - value = max - value; - } - input.value = value; - const slider = $stor(`#${id} > span`); - const lside = slider.children[0]; - const thumb = slider.children[1]; - const sliderWidth = slider.offsetWidth; - const maxPercent = (sliderWidth - thumb.offsetWidth) / sliderWidth * 100; - const widthPercent = value / max * maxPercent; - lside.style.width = `${widthPercent}%`; -}; - -/******************************************************************************/ - -const userFilterFromCandidate = function(filter) { - if ( filter === '' || filter === '!' ) { return; } - - let hn = hostnameFromURI(docURL.href); - if ( hn.startsWith('xn--') ) { - hn = punycode.toUnicode(hn); - } - - // Cosmetic filter? - if ( reCosmeticAnchor.test(filter) ) { - return hn + filter; - } - - // Assume net filter - const opts = []; - - // If no domain included in filter, we need domain option - if ( filter.startsWith('||') === false ) { - opts.push(`domain=${hn}`); - } - - if ( resultsetOpt !== undefined ) { - opts.push(resultsetOpt); - } - - if ( opts.length ) { - filter += '$' + opts.join(','); - } - - return filter; -}; - -/******************************************************************************/ - -const candidateFromFilterChoice = function(filterChoice) { - let { slot, filters } = filterChoice; - let filter = filters[slot]; - - // https://github.com/uBlockOrigin/uBlock-issues/issues/47 - for ( const elem of $storAll('#candidateFilters li') ) { - elem.classList.remove('active'); - } - - computedCandidate = ''; - - if ( filter === undefined ) { return ''; } - - // For net filters there no such thing as a path - if ( filter.startsWith('##') === false ) { - $stor(`#netFilters li:nth-of-type(${slot+1})`) - .classList.add('active'); - return filter; - } - - // At this point, we have a cosmetic filter - - $stor(`#cosmeticFilters li:nth-of-type(${slot+1})`) - .classList.add('active'); - - return cosmeticCandidatesFromFilterChoice(filterChoice); -}; - -/******************************************************************************/ - -const cosmeticCandidatesFromFilterChoice = function(filterChoice) { - let { slot, filters } = filterChoice; - - renderRange('resultsetDepth', slot, true); - renderRange('resultsetSpecificity'); - - if ( computedSpecificityCandidates.has(slot) ) { - onCandidatesOptimized({ slot }); - return; - } - - const specificities = [ - 0b0000, // remove hierarchy; remove id, nth-of-type, attribute values - 0b0010, // remove hierarchy; remove id, nth-of-type - 0b0011, // remove hierarchy - 0b1000, // trim hierarchy; remove id, nth-of-type, attribute values - 0b1010, // trim hierarchy; remove id, nth-of-type - 0b1100, // remove id, nth-of-type, attribute values - 0b1110, // remove id, nth-of-type - 0b1111, // keep all = most specific - ]; - - const candidates = []; - - let filter = filters[slot]; - - for ( const specificity of specificities ) { - // Return path: the target element, then all siblings prepended - const paths = []; - for ( let i = slot; i < filters.length; i++ ) { - filter = filters[i].slice(2); - // Remove id, nth-of-type - // https://github.com/uBlockOrigin/uBlock-issues/issues/162 - // Mind escaped periods: they do not denote a class identifier. - if ( (specificity & 0b0001) === 0 ) { - filter = filter.replace(/:nth-of-type\(\d+\)/, ''); - if ( - filter.charAt(0) === '#' && ( - (specificity & 0b1000) === 0 || i === slot - ) - ) { - const pos = filter.search(/[^\\]\./); - if ( pos !== -1 ) { - filter = filter.slice(pos + 1); - } - } - } - // Remove attribute values. - if ( (specificity & 0b0010) === 0 ) { - const match = /^\[([^^*$=]+)[\^*$]?=.+\]$/.exec(filter); - if ( match !== null ) { - filter = `[${match[1]}]`; - } - } - // Remove all classes when an id exists. - // https://github.com/uBlockOrigin/uBlock-issues/issues/162 - // Mind escaped periods: they do not denote a class identifier. - if ( filter.charAt(0) === '#' ) { - filter = filter.replace(/([^\\])\..+$/, '$1'); - } - if ( paths.length !== 0 ) { - filter += ' > '; - } - paths.unshift(filter); - // Stop at any element with an id: these are unique in a web page - if ( (specificity & 0b1000) === 0 || filter.startsWith('#') ) { - break; - } - } - - // Trim hierarchy: remove generic elements from path - if ( (specificity & 0b1100) === 0b1000 ) { - let i = 0; - while ( i < paths.length - 1 ) { - if ( /^[a-z0-9]+ > $/.test(paths[i+1]) ) { - if ( paths[i].endsWith(' > ') ) { - paths[i] = paths[i].slice(0, -2); - } - paths.splice(i + 1, 1); - } else { - i += 1; - } - } - } - - if ( - needBody && - paths.length !== 0 && - paths[0].startsWith('#') === false && - paths[0].startsWith('body ') === false && - (specificity & 0b1100) !== 0 - ) { - paths.unshift('body > '); - } - - candidates.push(paths); - } - - pickerContentPort.postMessage({ - what: 'optimizeCandidates', - candidates, - slot, - }); -}; - -/******************************************************************************/ - -const onCandidatesOptimized = function(details) { - $id('resultsetModifiers').classList.remove('hide'); - const i = parseInt($stor('#resultsetSpecificity input').value, 10); - if ( Array.isArray(details.candidates) ) { - computedSpecificityCandidates.set(details.slot, details.candidates); - } - const candidates = computedSpecificityCandidates.get(details.slot); - computedCandidate = candidates[i]; - cmEditor.setValue(computedCandidate); - cmEditor.clearHistory(); - onCandidateChanged(); -}; - -/******************************************************************************/ - -const onSvgClicked = function(ev) { - // If zap mode, highlight element under mouse, this makes the zapper usable - // on touch screens. - if ( pickerRoot.classList.contains('zap') ) { - pickerContentPort.postMessage({ - what: 'zapElementAtPoint', - mx: ev.clientX, - my: ev.clientY, - options: { - stay: ev.shiftKey || ev.type === 'touch', - highlight: ev.target !== svgIslands, - }, - }); - return; - } - // https://github.com/chrisaljoudi/uBlock/issues/810#issuecomment-74600694 - // Unpause picker if: - // - click outside dialog AND - // - not in preview mode - if ( pickerRoot.classList.contains('paused') ) { - if ( pickerRoot.classList.contains('preview') === false ) { - unpausePicker(); - } - return; - } - // Force dialog to always be visible when using a touch-driven device. - if ( ev.type === 'touch' ) { - pickerRoot.classList.add('show'); - } - pickerContentPort.postMessage({ - what: 'filterElementAtPoint', - mx: ev.clientX, - my: ev.clientY, - broad: ev.ctrlKey, - }); -}; - -/******************************************************************************* - - Swipe right: - If picker not paused: quit picker - If picker paused and dialog visible: hide dialog - If picker paused and dialog not visible: quit picker - - Swipe left: - If picker paused and dialog not visible: show dialog - -*/ - -const onSvgTouch = (( ) => { - let startX = 0, startY = 0; - let t0 = 0; - return ev => { - if ( ev.type === 'touchstart' ) { - startX = ev.touches[0].screenX; - startY = ev.touches[0].screenY; - t0 = ev.timeStamp; - return; - } - if ( startX === undefined ) { return; } - const stopX = ev.changedTouches[0].screenX; - const stopY = ev.changedTouches[0].screenY; - const angle = Math.abs(Math.atan2(stopY - startY, stopX - startX)); - const distance = Math.sqrt( - Math.pow(stopX - startX, 2) + - Math.pow(stopY - startY, 2) - ); - // Interpret touch events as a tap if: - // - Swipe is not valid; and - // - The time between start and stop was less than 200ms. - const duration = ev.timeStamp - t0; - if ( distance < 32 && duration < 200 ) { - onSvgClicked({ - type: 'touch', - target: ev.target, - clientX: ev.changedTouches[0].pageX, - clientY: ev.changedTouches[0].pageY, - }); - ev.preventDefault(); - return; - } - if ( distance < 64 ) { return; } - const angleUpperBound = Math.PI * 0.25 * 0.5; - const swipeRight = angle < angleUpperBound; - if ( swipeRight === false && angle < Math.PI - angleUpperBound ) { - return; - } - if ( ev.cancelable ) { - ev.preventDefault(); - } - // Swipe left. - if ( swipeRight === false ) { - if ( pickerRoot.classList.contains('paused') ) { - pickerRoot.classList.remove('hide'); - pickerRoot.classList.add('show'); - } - return; - } - // Swipe right. - if ( - pickerRoot.classList.contains('zap') && - svgIslands.getAttribute('d') !== NoPaths - ) { - pickerContentPort.postMessage({ - what: 'unhighlight' - }); - return; - } - else if ( - pickerRoot.classList.contains('paused') && - pickerRoot.classList.contains('show') - ) { - pickerRoot.classList.remove('show'); - pickerRoot.classList.add('hide'); - return; - } - quitPicker(); - }; -})(); - -/******************************************************************************/ - -const onCandidateChanged = function() { - const filter = filterFromTextarea(); - const bad = filter === '!'; - $stor('section').classList.toggle('invalidFilter', bad); - if ( bad ) { - $id('resultsetCount').textContent = 'E'; - $id('create').setAttribute('disabled', ''); - } - const text = rawFilterFromTextarea(); - $id('resultsetModifiers').classList.toggle( - 'hide', text === '' || text !== computedCandidate - ); - pickerContentPort.postMessage({ - what: 'dialogSetFilter', - filter, - compiled: reCosmeticAnchor.test(filter) - ? staticFilteringParser.result.compiled - : undefined, - }); -}; - -/******************************************************************************/ - -const onPreviewClicked = function() { - const state = pickerRoot.classList.toggle('preview'); - pickerContentPort.postMessage({ - what: 'togglePreview', - state, - }); -}; - -/******************************************************************************/ - -const onCreateClicked = function() { - const candidate = filterFromTextarea(); - const filter = userFilterFromCandidate(candidate); - if ( filter !== undefined ) { - vAPI.messaging.send('elementPicker', { - what: 'createUserFilter', - autoComment: true, - filters: filter, - docURL: docURL.href, - killCache: reCosmeticAnchor.test(candidate) === false, - }); - } - pickerContentPort.postMessage({ - what: 'dialogCreate', - filter: candidate, - compiled: reCosmeticAnchor.test(candidate) - ? staticFilteringParser.result.compiled - : undefined, - }); -}; - -/******************************************************************************/ - -const onPickClicked = function() { - unpausePicker(); -}; - -/******************************************************************************/ - -const onQuitClicked = function() { - quitPicker(); -}; - -/******************************************************************************/ - -const onDepthChanged = function() { - const input = $stor('#resultsetDepth input'); - const max = parseInt(input.max, 10); - const value = parseInt(input.value, 10); - const text = candidateFromFilterChoice({ - filters: cosmeticFilterCandidates, - slot: max - value, - }); - if ( text === undefined ) { return; } - cmEditor.setValue(text); - cmEditor.clearHistory(); - onCandidateChanged(); -}; - -/******************************************************************************/ - -const onSpecificityChanged = function() { - renderRange('resultsetSpecificity'); - if ( rawFilterFromTextarea() !== computedCandidate ) { return; } - const depthInput = $stor('#resultsetDepth input'); - const slot = parseInt(depthInput.max, 10) - parseInt(depthInput.value, 10); - const i = parseInt($stor('#resultsetSpecificity input').value, 10); - const candidates = computedSpecificityCandidates.get(slot); - computedCandidate = candidates[i]; - cmEditor.setValue(computedCandidate); - cmEditor.clearHistory(); - onCandidateChanged(); -}; - -/******************************************************************************/ - -const onCandidateClicked = function(ev) { - let li = ev.target.closest('li'); - if ( li === null ) { return; } - const ul = li.closest('.changeFilter'); - if ( ul === null ) { return; } - const choice = { - filters: Array.from(ul.querySelectorAll('li')).map(a => a.textContent), - slot: 0, - }; - while ( li.previousElementSibling !== null ) { - li = li.previousElementSibling; - choice.slot += 1; - } - const text = candidateFromFilterChoice(choice); - if ( text === undefined ) { return; } - cmEditor.setValue(text); - cmEditor.clearHistory(); - onCandidateChanged(); -}; - -/******************************************************************************/ - -const onKeyPressed = function(ev) { - // Delete - if ( - (ev.key === 'Delete' || ev.key === 'Backspace') && - pickerRoot.classList.contains('zap') - ) { - pickerContentPort.postMessage({ - what: 'zapElementAtPoint', - options: { stay: true }, - }); - return; - } - // Esc - if ( ev.key === 'Escape' || ev.which === 27 ) { - onQuitClicked(); - return; - } -}; - -/******************************************************************************/ - -const onStartMoving = (( ) => { - let isTouch = false; - let mx0 = 0, my0 = 0; - let mx1 = 0, my1 = 0; - let pw = 0, ph = 0; - let dw = 0, dh = 0; - let cx0 = 0, cy0 = 0; - let timer; - - const eatEvent = function(ev) { - ev.stopPropagation(); - ev.preventDefault(); - }; - - const move = ( ) => { - timer = undefined; - const cx1 = cx0 + mx1 - mx0; - const cy1 = cy0 + my1 - my0; - if ( cx1 < pw / 2 ) { - dialog.style.setProperty('left', `${Math.max(cx1-dw/2,2)}px`); - dialog.style.removeProperty('right'); - } else { - dialog.style.removeProperty('left'); - dialog.style.setProperty('right', `${Math.max(pw-cx1-dw/2,2)}px`); - } - if ( cy1 < ph / 2 ) { - dialog.style.setProperty('top', `${Math.max(cy1-dh/2,2)}px`); - dialog.style.removeProperty('bottom'); - } else { - dialog.style.removeProperty('top'); - dialog.style.setProperty('bottom', `${Math.max(ph-cy1-dh/2,2)}px`); - } - }; - - const moveAsync = ev => { - if ( timer !== undefined ) { return; } - if ( isTouch ) { - const touch = ev.touches[0]; - mx1 = touch.pageX; - my1 = touch.pageY; - } else { - mx1 = ev.pageX; - my1 = ev.pageY; - } - timer = self.requestAnimationFrame(move); - }; - - const stop = ev => { - if ( dialog.classList.contains('moving') === false ) { return; } - dialog.classList.remove('moving'); - if ( isTouch ) { - self.removeEventListener('touchmove', moveAsync, { capture: true }); - } else { - self.removeEventListener('mousemove', moveAsync, { capture: true }); - } - eatEvent(ev); - }; - - return ev => { - const target = dialog.querySelector('#move'); - if ( ev.target !== target ) { return; } - if ( dialog.classList.contains('moving') ) { return; } - isTouch = ev.type.startsWith('touch'); - if ( isTouch ) { - const touch = ev.touches[0]; - mx0 = touch.pageX; - my0 = touch.pageY; - } else { - mx0 = ev.pageX; - my0 = ev.pageY; - } - const rect = dialog.getBoundingClientRect(); - dw = rect.width; - dh = rect.height; - cx0 = rect.x + dw / 2; - cy0 = rect.y + dh / 2; - pw = pickerRoot.clientWidth; - ph = pickerRoot.clientHeight; - dialog.classList.add('moving'); - if ( isTouch ) { - self.addEventListener('touchmove', moveAsync, { capture: true }); - self.addEventListener('touchend', stop, { capture: true, once: true }); - } else { - self.addEventListener('mousemove', moveAsync, { capture: true }); - self.addEventListener('mouseup', stop, { capture: true, once: true }); - } - eatEvent(ev); - }; -})(); - -/******************************************************************************/ - -const svgListening = (( ) => { - let on = false; - let timer; - let mx = 0, my = 0; - - const onTimer = ( ) => { - timer = undefined; - pickerContentPort.postMessage({ - what: 'highlightElementAtPoint', - mx, - my, - }); - }; - - const onHover = ev => { - mx = ev.clientX; - my = ev.clientY; - if ( timer === undefined ) { - timer = self.requestAnimationFrame(onTimer); - } - }; - - return state => { - if ( state === on ) { return; } - on = state; - if ( on ) { - document.addEventListener('mousemove', onHover, { passive: true }); - return; - } - document.removeEventListener('mousemove', onHover, { passive: true }); - if ( timer !== undefined ) { - self.cancelAnimationFrame(timer); - timer = undefined; - } - }; -})(); - -/******************************************************************************/ - -// Create lists of candidate filters. This takes into account whether the -// current mode is narrow or broad. - -const populateCandidates = function(candidates, selector) { - const root = dialog.querySelector(selector); - const ul = root.querySelector('ul'); - while ( ul.firstChild !== null ) { - ul.firstChild.remove(); - } - for ( let i = 0; i < candidates.length; i++ ) { - const li = document.createElement('li'); - li.textContent = candidates[i]; - ul.appendChild(li); - } - if ( candidates.length !== 0 ) { - root.style.removeProperty('display'); - } else { - root.style.setProperty('display', 'none'); - } -}; - -/******************************************************************************/ - -const showDialog = function(details) { - pausePicker(); - - const { netFilters, cosmeticFilters, filter } = details; - - needBody = - cosmeticFilters.length !== 0 && - cosmeticFilters[cosmeticFilters.length - 1] === '##body'; - if ( needBody ) { - cosmeticFilters.pop(); - } - cosmeticFilterCandidates = cosmeticFilters; - - docURL.href = details.url; - - populateCandidates(netFilters, '#netFilters'); - populateCandidates(cosmeticFilters, '#cosmeticFilters'); - computedSpecificityCandidates.clear(); - - const depthInput = $stor('#resultsetDepth input'); - depthInput.max = cosmeticFilters.length - 1; - depthInput.value = depthInput.max; - - dialog.querySelector('ul').style.display = - netFilters.length || cosmeticFilters.length ? '' : 'none'; - $id('create').setAttribute('disabled', ''); - - // Auto-select a candidate filter - - // 2020-09-01: - // In Firefox, `details instanceof Object` resolves to `false` despite - // `details` being a valid object. Consequently, falling back to use - // `typeof details`. - // This is an issue which surfaced when the element picker code was - // revisited to isolate the picker dialog DOM from the page DOM. - if ( typeof filter !== 'object' || filter === null ) { - cmEditor.setValue(''); - return; - } - - const filterChoice = { - filters: filter.filters, - slot: filter.slot, - }; - - const text = candidateFromFilterChoice(filterChoice); - if ( text === undefined ) { return; } - cmEditor.setValue(text); - onCandidateChanged(); -}; - -/******************************************************************************/ - -const pausePicker = function() { - dom.cl.add(pickerRoot, 'paused'); - dom.cl.remove(pickerRoot, 'minimized'); - svgListening(false); -}; - -/******************************************************************************/ - -const unpausePicker = function() { - dom.cl.remove(pickerRoot, 'paused', 'preview'); - dom.cl.add(pickerRoot, 'minimized'); - pickerContentPort.postMessage({ - what: 'togglePreview', - state: false, - }); - svgListening(true); -}; - -/******************************************************************************/ - -const startPicker = function() { - self.addEventListener('keydown', onKeyPressed, true); - const svg = $stor('svg#sea'); - svg.addEventListener('click', onSvgClicked); - svg.addEventListener('touchstart', onSvgTouch); - svg.addEventListener('touchend', onSvgTouch); - - unpausePicker(); - - if ( pickerRoot.classList.contains('zap') ) { return; } - - cmEditor.on('changes', onCandidateChanged); - - $id('preview').addEventListener('click', onPreviewClicked); - $id('create').addEventListener('click', onCreateClicked); - $id('pick').addEventListener('click', onPickClicked); - $id('minimize').addEventListener('click', ( ) => { - if ( dom.cl.has(pickerRoot, 'paused') === false ) { - pausePicker(); - onCandidateChanged(); - } else { - dom.cl.toggle(pickerRoot, 'minimized'); - } - }); - $id('quit').addEventListener('click', onQuitClicked); - $id('move').addEventListener('mousedown', onStartMoving); - $id('move').addEventListener('touchstart', onStartMoving); - $id('candidateFilters').addEventListener('click', onCandidateClicked); - $stor('#resultsetDepth input').addEventListener('input', onDepthChanged); - $stor('#resultsetSpecificity input').addEventListener('input', onSpecificityChanged); - staticFilteringParser = new sfp.AstFilterParser({ - interactive: true, - nativeCssHas: vAPI.webextFlavor.env.includes('native_css_has'), - }); -}; - -/******************************************************************************/ - -const quitPicker = function() { - pickerContentPort.postMessage({ what: 'quitPicker' }); - pickerContentPort.close(); - pickerContentPort = undefined; -}; - -/******************************************************************************/ - -const onPickerMessage = function(msg) { - switch ( msg.what ) { - case 'candidatesOptimized': - onCandidatesOptimized(msg); - break; - case 'showDialog': - showDialog(msg); - break; - case 'resultsetDetails': { - resultsetOpt = msg.opt; - $id('resultsetCount').textContent = msg.count; - if ( msg.count !== 0 ) { - $id('create').removeAttribute('disabled'); - } else { - $id('create').setAttribute('disabled', ''); - } - break; - } - case 'svgPaths': { - let { ocean, islands } = msg; - ocean += islands; - svgOcean.setAttribute('d', ocean); - svgIslands.setAttribute('d', islands || NoPaths); - break; - } - default: - break; - } -}; - -/******************************************************************************/ - -// Wait for the content script to establish communication - -let pickerContentPort; - -globalThis.addEventListener('message', ev => { - const msg = ev.data || {}; - if ( msg.what !== 'epickerStart' ) { return; } - if ( Array.isArray(ev.ports) === false ) { return; } - if ( ev.ports.length === 0 ) { return; } - pickerContentPort = ev.ports[0]; - pickerContentPort.onmessage = ev => { - const msg = ev.data || {}; - onPickerMessage(msg); - }; - pickerContentPort.onmessageerror = ( ) => { - quitPicker(); - }; - startPicker(); - pickerContentPort.postMessage({ what: 'start' }); -}, { once: true }); - -/******************************************************************************/ - -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/fa-icons.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/fa-icons.js deleted file mode 100644 index 08fee85..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/fa-icons.js +++ /dev/null @@ -1,132 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2018-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -'use strict'; - -/******************************************************************************/ - -export const faIconsInit = (( ) => { - - // https://github.com/uBlockOrigin/uBlock-issues/issues/1196 - const svgIcons = new Map([ - // See /img/fontawesome/fontawesome-defs.svg - [ 'angle-up', { viewBox: '0 0 998 582', path: 'm 998,499 q 0,13 -10,23 l -50,50 q -10,10 -23,10 -13,0 -23,-10 L 499,179 106,572 Q 96,582 83,582 70,582 60,572 L 10,522 Q 0,512 0,499 0,486 10,476 L 476,10 q 10,-10 23,-10 13,0 23,10 l 466,466 q 10,10 10,23 z' } ], - [ 'arrow-right', { viewBox: '0 0 1472 1558', path: 'm 1472,779 q 0,54 -37,91 l -651,651 q -39,37 -91,37 -51,0 -90,-37 l -75,-75 q -38,-38 -38,-91 0,-53 38,-91 L 821,971 H 117 Q 65,971 32.5,933.5 0,896 0,843 V 715 Q 0,662 32.5,624.5 65,587 117,587 H 821 L 528,293 q -38,-36 -38,-90 0,-54 38,-90 l 75,-75 q 38,-38 90,-38 53,0 91,38 l 651,651 q 37,35 37,90 z' } ], - [ 'bar-chart', { viewBox: '0 0 2048 1536', path: 'm 640,768 0,512 -256,0 0,-512 256,0 z m 384,-512 0,1024 -256,0 0,-1024 256,0 z m 1024,1152 0,128 L 0,1536 0,0 l 128,0 0,1408 1920,0 z m -640,-896 0,768 -256,0 0,-768 256,0 z m 384,-384 0,1152 -256,0 0,-1152 256,0 z' } ], - [ 'bolt', { viewBox: '0 0 896 1664', path: 'm 885.08696,438 q 18,20 7,44 l -540,1157 q -13,25 -42,25 -4,0 -14,-2 -17,-5 -25.5,-19 -8.5,-14 -4.5,-30 l 197,-808 -406,101 q -4,1 -12,1 -18,0 -31,-11 Q -3.9130435,881 1.0869565,857 L 202.08696,32 q 4,-14 16,-23 12,-9 28,-9 l 328,0 q 19,0 32,12.5 13,12.5 13,29.5 0,8 -5,18 l -171,463 396,-98 q 8,-2 12,-2 19,0 34,15 z' } ], - [ 'book', { viewBox: '0 0 1664 1536', path: 'm 1639.2625,350 c 25,36 32,83 18,129 l -275,906 c -25,85 -113,151 -199,151 H 260.26251 c -102,0 -211,-81 -248,-185 -16,-45 -16,-89 -2,-127 2,-20 6,-40 7,-64 1,-16 -8,-29 -6,-41 4,-24 25,-41 41,-68 30,-50 64,-131 75,-183 5,-19 -5,-41 0,-58 5,-19 24,-33 34,-51 27,-46 62,-135 67,-182 2,-21 -8,-44 -2,-60 7,-23 29,-33 44,-53 24,-33 64,-128 70,-181 2,-17 -8,-34 -5,-52 4,-19 28,-39 44,-62 42,-62 50,-199 177,-163 l -1,3 c 17,-4 34,-9 51,-9 h 761 c 47,0 89,21 114,56 26,36 32,83 18,130 l -274,906 c -47,154 -73,188 -200,188 H 156.26251 c -13,0 -29,3 -38,15 -8,12 -9,21 -1,43 20,58 89,70 144,70 h 923 c 37,0 80,-21 91,-57 l 300,-987 c 6,-19 6,-39 5,-57 23,9 44,23 59,43 z m -1064,2 c -6,18 4,32 22,32 h 608 c 17,0 36,-14 42,-32 l 21,-64 c 6,-18 -4,-32 -22,-32 H 638.26251 c -17,0 -36,14 -42,32 z m -83,256 c -6,18 4,32 22,32 h 608 c 17,0 36,-14 42,-32 l 21,-64 c 6,-18 -4,-32 -22,-32 H 555.26251 c -17,0 -36,14 -42,32 z' } ], - [ 'clipboard', { viewBox: '0 0 1792 1792', path: 'm 768,1664 896,0 0,-640 -416,0 q -40,0 -68,-28 -28,-28 -28,-68 l 0,-416 -384,0 0,1152 z m 256,-1440 0,-64 q 0,-13 -9.5,-22.5 Q 1005,128 992,128 l -704,0 q -13,0 -22.5,9.5 Q 256,147 256,160 l 0,64 q 0,13 9.5,22.5 9.5,9.5 22.5,9.5 l 704,0 q 13,0 22.5,-9.5 9.5,-9.5 9.5,-22.5 z m 256,672 299,0 -299,-299 0,299 z m 512,128 0,672 q 0,40 -28,68 -28,28 -68,28 l -960,0 q -40,0 -68,-28 -28,-28 -28,-68 l 0,-160 -544,0 Q 56,1536 28,1508 0,1480 0,1440 L 0,96 Q 0,56 28,28 56,0 96,0 l 1088,0 q 40,0 68,28 28,28 28,68 l 0,328 q 21,13 36,28 l 408,408 q 28,28 48,76 20,48 20,88 z' } ], - [ 'clock-o', { viewBox: '0 0 1536 1536', path: 'm 896,416 v 448 q 0,14 -9,23 -9,9 -23,9 H 544 q -14,0 -23,-9 -9,-9 -9,-23 v -64 q 0,-14 9,-23 9,-9 23,-9 H 768 V 416 q 0,-14 9,-23 9,-9 23,-9 h 64 q 14,0 23,9 9,9 9,23 z m 416,352 q 0,-148 -73,-273 -73,-125 -198,-198 -125,-73 -273,-73 -148,0 -273,73 -125,73 -198,198 -73,125 -73,273 0,148 73,273 73,125 198,198 125,73 273,73 148,0 273,-73 125,-73 198,-198 73,-125 73,-273 z m 224,0 q 0,209 -103,385.5 Q 1330,1330 1153.5,1433 977,1536 768,1536 559,1536 382.5,1433 206,1330 103,1153.5 0,977 0,768 0,559 103,382.5 206,206 382.5,103 559,0 768,0 977,0 1153.5,103 1330,206 1433,382.5 1536,559 1536,768 Z' } ], - [ 'cloud-download', { viewBox: '0 0 1920 1408', path: 'm 1280,800 q 0,-14 -9,-23 -9,-9 -23,-9 l -224,0 0,-352 q 0,-13 -9.5,-22.5 Q 1005,384 992,384 l -192,0 q -13,0 -22.5,9.5 Q 768,403 768,416 l 0,352 -224,0 q -13,0 -22.5,9.5 -9.5,9.5 -9.5,22.5 0,14 9,23 l 352,352 q 9,9 23,9 14,0 23,-9 l 351,-351 q 10,-12 10,-24 z m 640,224 q 0,159 -112.5,271.5 Q 1695,1408 1536,1408 l -1088,0 Q 263,1408 131.5,1276.5 0,1145 0,960 0,830 70,720 140,610 258,555 256,525 256,512 256,300 406,150 556,0 768,0 q 156,0 285.5,87 129.5,87 188.5,231 71,-62 166,-62 106,0 181,75 75,75 75,181 0,76 -41,138 130,31 213.5,135.5 Q 1920,890 1920,1024 Z' } ], - [ 'cloud-upload', { viewBox: '0 0 1920 1408', path: 'm 1280,736 q 0,-14 -9,-23 L 919,361 q -9,-9 -23,-9 -14,0 -23,9 L 522,712 q -10,12 -10,24 0,14 9,23 9,9 23,9 l 224,0 0,352 q 0,13 9.5,22.5 9.5,9.5 22.5,9.5 l 192,0 q 13,0 22.5,-9.5 9.5,-9.5 9.5,-22.5 l 0,-352 224,0 q 13,0 22.5,-9.5 9.5,-9.5 9.5,-22.5 z m 640,288 q 0,159 -112.5,271.5 Q 1695,1408 1536,1408 l -1088,0 Q 263,1408 131.5,1276.5 0,1145 0,960 0,830 70,720 140,610 258,555 256,525 256,512 256,300 406,150 556,0 768,0 q 156,0 285.5,87 129.5,87 188.5,231 71,-62 166,-62 106,0 181,75 75,75 75,181 0,76 -41,138 130,31 213.5,135.5 Q 1920,890 1920,1024 Z' } ], - [ 'check', { viewBox: '0 0 1550 1188', path: 'm 1550,232 q 0,40 -28,68 l -724,724 -136,136 q -28,28 -68,28 -40,0 -68,-28 L 390,1024 28,662 Q 0,634 0,594 0,554 28,526 L 164,390 q 28,-28 68,-28 40,0 68,28 L 594,685 1250,28 q 28,-28 68,-28 40,0 68,28 l 136,136 q 28,28 28,68 z' } ], - [ 'code', { viewBox: '0 0 1830 1373', path: 'm 572,1125.5 -50,50 q -10,10 -23,10 -13,0 -23,-10 l -466,-466 q -10,-10 -10,-23 0,-13 10,-23 l 466,-466 q 10,-10 23,-10 13,0 23,10 l 50,50 q 10,10 10,23 0,13 -10,23 l -393,393 393,393 q 10,10 10,23 0,13 -10,23 z M 1163,58.476203 790,1349.4762 q -4,13 -15.5,19.5 -11.5,6.5 -23.5,2.5 l -62,-17 q -13,-4 -19.5,-15.5 -6.5,-11.5 -2.5,-24.5 L 1040,23.5 q 4,-13 15.5,-19.5 11.5,-6.5 23.5,-2.5 l 62,17 q 13,4 19.5,15.5 6.5,11.5 2.5,24.5 z m 657,651 -466,466 q -10,10 -23,10 -13,0 -23,-10 l -50,-50 q -10,-10 -10,-23 0,-13 10,-23 l 393,-393 -393,-393 q -10,-10 -10,-23 0,-13 10,-23 l 50,-50 q 10,-10 23,-10 13,0 23,10 l 466,466 q 10,10 10,23 0,13 -10,23 z' } ], - [ 'cog', { viewBox: '0 0 1536 1536', path: 'm 1024,768 q 0,-106 -75,-181 -75,-75 -181,-75 -106,0 -181,75 -75,75 -75,181 0,106 75,181 75,75 181,75 106,0 181,-75 75,-75 75,-181 z m 512,-109 0,222 q 0,12 -8,23 -8,11 -20,13 l -185,28 q -19,54 -39,91 35,50 107,138 10,12 10,25 0,13 -9,23 -27,37 -99,108 -72,71 -94,71 -12,0 -26,-9 l -138,-108 q -44,23 -91,38 -16,136 -29,186 -7,28 -36,28 l -222,0 q -14,0 -24.5,-8.5 Q 622,1519 621,1506 l -28,-184 q -49,-16 -90,-37 l -141,107 q -10,9 -25,9 -14,0 -25,-11 -126,-114 -165,-168 -7,-10 -7,-23 0,-12 8,-23 15,-21 51,-66.5 36,-45.5 54,-70.5 -27,-50 -41,-99 L 29,913 Q 16,911 8,900.5 0,890 0,877 L 0,655 q 0,-12 8,-23 8,-11 19,-13 l 186,-28 q 14,-46 39,-92 -40,-57 -107,-138 -10,-12 -10,-24 0,-10 9,-23 26,-36 98.5,-107.5 Q 315,135 337,135 q 13,0 26,10 L 501,252 Q 545,229 592,214 608,78 621,28 628,0 657,0 L 879,0 Q 893,0 903.5,8.5 914,17 915,30 l 28,184 q 49,16 90,37 l 142,-107 q 9,-9 24,-9 13,0 25,10 129,119 165,170 7,8 7,22 0,12 -8,23 -15,21 -51,66.5 -36,45.5 -54,70.5 26,50 41,98 l 183,28 q 13,2 21,12.5 8,10.5 8,23.5 z' } ], - [ 'cogs', { viewBox: '0 0 1920 1761', path: 'm 896,880 q 0,-106 -75,-181 -75,-75 -181,-75 -106,0 -181,75 -75,75 -75,181 0,106 75,181 75,75 181,75 106,0 181,-75 75,-75 75,-181 z m 768,512 q 0,-52 -38,-90 -38,-38 -90,-38 -52,0 -90,38 -38,38 -38,90 0,53 37.5,90.5 37.5,37.5 90.5,37.5 53,0 90.5,-37.5 37.5,-37.5 37.5,-90.5 z m 0,-1024 q 0,-52 -38,-90 -38,-38 -90,-38 -52,0 -90,38 -38,38 -38,90 0,53 37.5,90.5 37.5,37.5 90.5,37.5 53,0 90.5,-37.5 Q 1664,421 1664,368 Z m -384,421 v 185 q 0,10 -7,19.5 -7,9.5 -16,10.5 l -155,24 q -11,35 -32,76 34,48 90,115 7,11 7,20 0,12 -7,19 -23,30 -82.5,89.5 -59.5,59.5 -78.5,59.5 -11,0 -21,-7 l -115,-90 q -37,19 -77,31 -11,108 -23,155 -7,24 -30,24 H 547 q -11,0 -20,-7.5 -9,-7.5 -10,-17.5 l -23,-153 q -34,-10 -75,-31 l -118,89 q -7,7 -20,7 -11,0 -21,-8 -144,-133 -144,-160 0,-9 7,-19 10,-14 41,-53 31,-39 47,-61 -23,-44 -35,-82 L 24,1000 Q 14,999 7,990.5 0,982 0,971 V 786 Q 0,776 7,766.5 14,757 23,756 l 155,-24 q 11,-35 32,-76 -34,-48 -90,-115 -7,-11 -7,-20 0,-12 7,-20 22,-30 82,-89 60,-59 79,-59 11,0 21,7 l 115,90 q 34,-18 77,-32 11,-108 23,-154 7,-24 30,-24 h 186 q 11,0 20,7.5 9,7.5 10,17.5 l 23,153 q 34,10 75,31 l 118,-89 q 8,-7 20,-7 11,0 21,8 144,133 144,160 0,8 -7,19 -12,16 -42,54 -30,38 -45,60 23,48 34,82 l 152,23 q 10,2 17,10.5 7,8.5 7,19.5 z m 640,533 v 140 q 0,16 -149,31 -12,27 -30,52 51,113 51,138 0,4 -4,7 -122,71 -124,71 -8,0 -46,-47 -38,-47 -52,-68 -20,2 -30,2 -10,0 -30,-2 -14,21 -52,68 -38,47 -46,47 -2,0 -124,-71 -4,-3 -4,-7 0,-25 51,-138 -18,-25 -30,-52 -149,-15 -149,-31 v -140 q 0,-16 149,-31 13,-29 30,-52 -51,-113 -51,-138 0,-4 4,-7 4,-2 35,-20 31,-18 59,-34 28,-16 30,-16 8,0 46,46.5 38,46.5 52,67.5 20,-2 30,-2 10,0 30,2 51,-71 92,-112 l 6,-2 q 4,0 124,70 4,3 4,7 0,25 -51,138 17,23 30,52 149,15 149,31 z m 0,-1024 v 140 q 0,16 -149,31 -12,27 -30,52 51,113 51,138 0,4 -4,7 -122,71 -124,71 -8,0 -46,-47 -38,-47 -52,-68 -20,2 -30,2 -10,0 -30,-2 -14,21 -52,68 -38,47 -46,47 -2,0 -124,-71 -4,-3 -4,-7 0,-25 51,-138 -18,-25 -30,-52 -149,-15 -149,-31 V 298 q 0,-16 149,-31 13,-29 30,-52 -51,-113 -51,-138 0,-4 4,-7 4,-2 35,-20 31,-18 59,-34 28,-16 30,-16 8,0 46,46.5 38,46.5 52,67.5 20,-2 30,-2 10,0 30,2 51,-71 92,-112 l 6,-2 q 4,0 124,70 4,3 4,7 0,25 -51,138 17,23 30,52 149,15 149,31 z' } ], - [ 'comment-alt', { viewBox: '0 0 1792 1536', path: 'M 896,128 Q 692,128 514.5,197.5 337,267 232.5,385 128,503 128,640 128,752 199.5,853.5 271,955 401,1029 l 87,50 -27,96 q -24,91 -70,172 152,-63 275,-171 l 43,-38 57,6 q 69,8 130,8 204,0 381.5,-69.5 Q 1455,1013 1559.5,895 1664,777 1664,640 1664,503 1559.5,385 1455,267 1277.5,197.5 1100,128 896,128 Z m 896,512 q 0,174 -120,321.5 -120,147.5 -326,233 -206,85.5 -450,85.5 -70,0 -145,-8 -198,175 -460,242 -49,14 -114,22 h -5 q -15,0 -27,-10.5 -12,-10.5 -16,-27.5 v -1 q -3,-4 -0.5,-12 2.5,-8 2,-10 -0.5,-2 4.5,-9.5 l 6,-9 q 0,0 7,-8.5 7,-8.5 8,-9 7,-8 31,-34.5 24,-26.5 34.5,-38 10.5,-11.5 31,-39.5 20.5,-28 32.5,-51 12,-23 27,-59 15,-36 26,-76 Q 181,1052 90.5,921 0,790 0,640 0,466 120,318.5 240,171 446,85.5 652,0 896,0 q 244,0 450,85.5 206,85.5 326,233 120,147.5 120,321.5 z' } ], - [ 'double-angle-left', { viewBox: '0 0 966 998', path: 'm 582,915 q 0,13 -10,23 l -50,50 q -10,10 -23,10 -13,0 -23,-10 L 10,522 Q 0,512 0,499 0,486 10,476 L 476,10 q 10,-10 23,-10 13,0 23,10 l 50,50 q 10,10 10,23 0,13 -10,23 L 179,499 572,892 q 10,10 10,23 z m 384,0 q 0,13 -10,23 l -50,50 q -10,10 -23,10 -13,0 -23,-10 L 394,522 q -10,-10 -10,-23 0,-13 10,-23 L 860,10 q 10,-10 23,-10 13,0 23,10 l 50,50 q 10,10 10,23 0,13 -10,23 L 563,499 956,892 q 10,10 10,23 z' } ], - [ 'double-angle-up', { viewBox: '0 0 998 966', path: 'm 998,883 q 0,13 -10,23 l -50,50 q -10,10 -23,10 -13,0 -23,-10 L 499,563 106,956 Q 96,966 83,966 70,966 60,956 L 10,906 Q 0,896 0,883 0,870 10,860 L 476,394 q 10,-10 23,-10 13,0 23,10 l 466,466 q 10,10 10,23 z m 0,-384 q 0,13 -10,23 l -50,50 q -10,10 -23,10 -13,0 -23,-10 L 499,179 106,572 Q 96,582 83,582 70,582 60,572 L 10,522 Q 0,512 0,499 0,486 10,476 L 476,10 q 10,-10 23,-10 13,0 23,10 l 466,466 q 10,10 10,23 z' } ], - [ 'download-alt', { viewBox: '0 0 1664 1536', path: 'm 1280,1344 q 0,-26 -19,-45 -19,-19 -45,-19 -26,0 -45,19 -19,19 -19,45 0,26 19,45 19,19 45,19 26,0 45,-19 19,-19 19,-45 z m 256,0 q 0,-26 -19,-45 -19,-19 -45,-19 -26,0 -45,19 -19,19 -19,45 0,26 19,45 19,19 45,19 26,0 45,-19 19,-19 19,-45 z m 128,-224 v 320 q 0,40 -28,68 -28,28 -68,28 H 96 q -40,0 -68,-28 -28,-28 -28,-68 v -320 q 0,-40 28,-68 28,-28 68,-28 h 465 l 135,136 q 58,56 136,56 78,0 136,-56 l 136,-136 h 464 q 40,0 68,28 28,28 28,68 z M 1339,551 q 17,41 -14,70 l -448,448 q -18,19 -45,19 -27,0 -45,-19 L 339,621 q -31,-29 -14,-70 17,-39 59,-39 H 640 V 64 Q 640,38 659,19 678,0 704,0 h 256 q 26,0 45,19 19,19 19,45 v 448 h 256 q 42,0 59,39 z' } ], - [ 'eraser', { viewBox: '0 0 1920 1280', path: 'M 896,1152 1232,768 l -768,0 -336,384 768,0 z M 1909,75 q 15,34 9.5,71.5 Q 1913,184 1888,212 L 992,1236 q -38,44 -96,44 l -768,0 q -38,0 -69.5,-20.5 -31.5,-20.5 -47.5,-54.5 -15,-34 -9.5,-71.5 5.5,-37.5 30.5,-65.5 L 928,44 Q 966,0 1024,0 l 768,0 q 38,0 69.5,20.5 Q 1893,41 1909,75 Z' } ], - [ 'exclamation-triangle', { viewBox: '0 0 1794 1664', path: 'm 1025.0139,1375 0,-190 q 0,-14 -9.5,-23.5 -9.5,-9.5 -22.5,-9.5 l -192,0 q -13,0 -22.5,9.5 -9.5,9.5 -9.5,23.5 l 0,190 q 0,14 9.5,23.5 9.5,9.5 22.5,9.5 l 192,0 q 13,0 22.5,-9.5 9.5,-9.5 9.5,-23.5 z m -2,-374 18,-459 q 0,-12 -10,-19 -13,-11 -24,-11 l -220,0 q -11,0 -24,11 -10,7 -10,21 l 17,457 q 0,10 10,16.5 10,6.5 24,6.5 l 185,0 q 14,0 23.5,-6.5 9.5,-6.5 10.5,-16.5 z m -14,-934 768,1408 q 35,63 -2,126 -17,29 -46.5,46 -29.5,17 -63.5,17 l -1536,0 q -34,0 -63.5,-17 -29.5,-17 -46.5,-46 -37,-63 -2,-126 L 785.01389,67 q 17,-31 47,-49 30,-18 65,-18 35,0 65,18 30,18 47,49 z' } ], - [ 'external-link', { viewBox: '0 0 1792 1536', path: 'm 1408,928 0,320 q 0,119 -84.5,203.5 Q 1239,1536 1120,1536 l -832,0 Q 169,1536 84.5,1451.5 0,1367 0,1248 L 0,416 Q 0,297 84.5,212.5 169,128 288,128 l 704,0 q 14,0 23,9 9,9 9,23 l 0,64 q 0,14 -9,23 -9,9 -23,9 l -704,0 q -66,0 -113,47 -47,47 -47,113 l 0,832 q 0,66 47,113 47,47 113,47 l 832,0 q 66,0 113,-47 47,-47 47,-113 l 0,-320 q 0,-14 9,-23 9,-9 23,-9 l 64,0 q 14,0 23,9 9,9 9,23 z m 384,-864 0,512 q 0,26 -19,45 -19,19 -45,19 -26,0 -45,-19 L 1507,445 855,1097 q -10,10 -23,10 -13,0 -23,-10 L 695,983 q -10,-10 -10,-23 0,-13 10,-23 L 1347,285 1171,109 q -19,-19 -19,-45 0,-26 19,-45 19,-19 45,-19 l 512,0 q 26,0 45,19 19,19 19,45 z' } ], - [ 'eye-dropper', { viewBox: '0 0 1792 1792', path: 'm 1698,94 q 94,94 94,226.5 0,132.5 -94,225.5 l -225,223 104,104 q 10,10 10,23 0,13 -10,23 l -210,210 q -10,10 -23,10 -13,0 -23,-10 l -105,-105 -603,603 q -37,37 -90,37 l -203,0 -256,128 -64,-64 128,-256 0,-203 q 0,-53 37,-90 L 768,576 663,471 q -10,-10 -10,-23 0,-13 10,-23 L 873,215 q 10,-10 23,-10 13,0 23,10 L 1023,319 1246,94 Q 1339,0 1471.5,0 1604,0 1698,94 Z M 512,1472 1088,896 896,704 l -576,576 0,192 192,0 z' } ], - [ 'eye-open', { viewBox: '0 0 1792 1152', path: 'm 1664,576 q -152,-236 -381,-353 61,104 61,225 0,185 -131.5,316.5 Q 1081,896 896,896 711,896 579.5,764.5 448,633 448,448 448,327 509,223 280,340 128,576 261,781 461.5,902.5 662,1024 896,1024 1130,1024 1330.5,902.5 1531,781 1664,576 Z M 944,192 q 0,-20 -14,-34 -14,-14 -34,-14 -125,0 -214.5,89.5 Q 592,323 592,448 q 0,20 14,34 14,14 34,14 20,0 34,-14 14,-14 14,-34 0,-86 61,-147 61,-61 147,-61 20,0 34,-14 14,-14 14,-34 z m 848,384 q 0,34 -20,69 -140,230 -376.5,368.5 Q 1159,1152 896,1152 633,1152 396.5,1013 160,874 20,645 0,610 0,576 0,542 20,507 160,278 396.5,139 633,0 896,0 q 263,0 499.5,139 236.5,139 376.5,368 20,35 20,69 z' } ], - [ 'eye-slash', { viewBox: '0 0 1792 1344', path: 'M 555,1047 633,906 Q 546,843 497,747 448,651 448,544 448,423 509,319 280,436 128,672 295,930 555,1047 Z M 944,288 q 0,-20 -14,-34 -14,-14 -34,-14 -125,0 -214.5,89.5 Q 592,419 592,544 q 0,20 14,34 14,14 34,14 20,0 34,-14 14,-14 14,-34 0,-86 61,-147 61,-61 147,-61 20,0 34,-14 14,-14 14,-34 z M 1307,97 q 0,7 -1,9 -106,189 -316,567 -210,378 -315,566 l -49,89 q -10,16 -28,16 -12,0 -134,-70 -16,-10 -16,-28 0,-12 44,-87 Q 349,1094 228.5,986 108,878 20,741 0,710 0,672 0,634 20,603 173,368 400,232 627,96 896,96 q 89,0 180,17 l 54,-97 q 10,-16 28,-16 5,0 18,6 13,6 31,15.5 18,9.5 33,18.5 15,9 31.5,18.5 16.5,9.5 19.5,11.5 16,10 16,27 z m 37,447 q 0,139 -79,253.5 Q 1186,912 1056,962 l 280,-502 q 8,45 8,84 z m 448,128 q 0,35 -20,69 -39,64 -109,145 -150,172 -347.5,267 -197.5,95 -419.5,95 l 74,-132 Q 1182,1098 1362.5,979 1543,860 1664,672 1549,493 1382,378 l 63,-112 q 95,64 182.5,153 87.5,89 144.5,184 20,34 20,69 z' } ], - [ 'files-o', { viewBox: '0 0 1792 1792', path: 'm 1696,384 q 40,0 68,28 28,28 28,68 l 0,1216 q 0,40 -28,68 -28,28 -68,28 l -960,0 q -40,0 -68,-28 -28,-28 -28,-68 l 0,-288 -544,0 Q 56,1408 28,1380 0,1352 0,1312 L 0,640 Q 0,600 20,552 40,504 68,476 L 476,68 Q 504,40 552,20 600,0 640,0 l 416,0 q 40,0 68,28 28,28 28,68 l 0,328 q 68,-40 128,-40 l 416,0 z m -544,213 -299,299 299,0 0,-299 z M 512,213 213,512 l 299,0 0,-299 z m 196,647 316,-316 0,-416 -384,0 0,416 q 0,40 -28,68 -28,28 -68,28 l -416,0 0,640 512,0 0,-256 q 0,-40 20,-88 20,-48 48,-76 z m 956,804 0,-1152 -384,0 0,416 q 0,40 -28,68 -28,28 -68,28 l -416,0 0,640 896,0 z' } ], - [ 'film', { viewBox: '0 0 1920 1664', path: 'm 384,1472 0,-128 q 0,-26 -19,-45 -19,-19 -45,-19 l -128,0 q -26,0 -45,19 -19,19 -19,45 l 0,128 q 0,26 19,45 19,19 45,19 l 128,0 q 26,0 45,-19 19,-19 19,-45 z m 0,-384 0,-128 q 0,-26 -19,-45 -19,-19 -45,-19 l -128,0 q -26,0 -45,19 -19,19 -19,45 l 0,128 q 0,26 19,45 19,19 45,19 l 128,0 q 26,0 45,-19 19,-19 19,-45 z m 0,-384 0,-128 q 0,-26 -19,-45 -19,-19 -45,-19 l -128,0 q -26,0 -45,19 -19,19 -19,45 l 0,128 q 0,26 19,45 19,19 45,19 l 128,0 q 26,0 45,-19 19,-19 19,-45 z m 1024,768 0,-512 q 0,-26 -19,-45 -19,-19 -45,-19 l -768,0 q -26,0 -45,19 -19,19 -19,45 l 0,512 q 0,26 19,45 19,19 45,19 l 768,0 q 26,0 45,-19 19,-19 19,-45 z M 384,320 384,192 q 0,-26 -19,-45 -19,-19 -45,-19 l -128,0 q -26,0 -45,19 -19,19 -19,45 l 0,128 q 0,26 19,45 19,19 45,19 l 128,0 q 26,0 45,-19 19,-19 19,-45 z m 1408,1152 0,-128 q 0,-26 -19,-45 -19,-19 -45,-19 l -128,0 q -26,0 -45,19 -19,19 -19,45 l 0,128 q 0,26 19,45 19,19 45,19 l 128,0 q 26,0 45,-19 19,-19 19,-45 z m -384,-768 0,-512 q 0,-26 -19,-45 -19,-19 -45,-19 l -768,0 q -26,0 -45,19 -19,19 -19,45 l 0,512 q 0,26 19,45 19,19 45,19 l 768,0 q 26,0 45,-19 19,-19 19,-45 z m 384,384 0,-128 q 0,-26 -19,-45 -19,-19 -45,-19 l -128,0 q -26,0 -45,19 -19,19 -19,45 l 0,128 q 0,26 19,45 19,19 45,19 l 128,0 q 26,0 45,-19 19,-19 19,-45 z m 0,-384 0,-128 q 0,-26 -19,-45 -19,-19 -45,-19 l -128,0 q -26,0 -45,19 -19,19 -19,45 l 0,128 q 0,26 19,45 19,19 45,19 l 128,0 q 26,0 45,-19 19,-19 19,-45 z m 0,-384 0,-128 q 0,-26 -19,-45 -19,-19 -45,-19 l -128,0 q -26,0 -45,19 -19,19 -19,45 l 0,128 q 0,26 19,45 19,19 45,19 l 128,0 q 26,0 45,-19 19,-19 19,-45 z m 128,-160 0,1344 q 0,66 -47,113 -47,47 -113,47 l -1600,0 Q 94,1664 47,1617 0,1570 0,1504 L 0,160 Q 0,94 47,47 94,0 160,0 l 1600,0 q 66,0 113,47 47,47 47,113 z' } ], - [ 'filter', { viewBox: '0 0 1410 1408', path: 'm 1404.0208,39 q 17,41 -14,70 l -493,493 0,742 q 0,42 -39,59 -13,5 -25,5 -27,0 -45,-19 l -256,-256 q -19,-19 -19,-45 l 0,-486 L 20.020833,109 q -31,-29 -14,-70 Q 23.020833,0 65.020833,0 L 1345.0208,0 q 42,0 59,39 z' } ], - [ 'floppy-o', { viewBox: '0 0 1536 1536', path: 'm 384,1408 768,0 0,-384 -768,0 0,384 z m 896,0 128,0 0,-896 q 0,-14 -10,-38.5 Q 1388,449 1378,439 L 1097,158 q -10,-10 -34,-20 -24,-10 -39,-10 l 0,416 q 0,40 -28,68 -28,28 -68,28 l -576,0 q -40,0 -68,-28 -28,-28 -28,-68 l 0,-416 -128,0 0,1280 128,0 0,-416 q 0,-40 28,-68 28,-28 68,-28 l 832,0 q 40,0 68,28 28,28 28,68 l 0,416 z M 896,480 896,160 q 0,-13 -9.5,-22.5 Q 877,128 864,128 l -192,0 q -13,0 -22.5,9.5 Q 640,147 640,160 l 0,320 q 0,13 9.5,22.5 9.5,9.5 22.5,9.5 l 192,0 q 13,0 22.5,-9.5 Q 896,493 896,480 Z m 640,32 0,928 q 0,40 -28,68 -28,28 -68,28 L 96,1536 Q 56,1536 28,1508 0,1480 0,1440 L 0,96 Q 0,56 28,28 56,0 96,0 l 928,0 q 40,0 88,20 48,20 76,48 l 280,280 q 28,28 48,76 20,48 20,88 z' } ], - [ 'font', { viewBox: '0 0 1664 1536', path: 'M 725,431 555,881 q 33,0 136.5,2 103.5,2 160.5,2 19,0 57,-2 Q 822,630 725,431 Z M 0,1536 2,1457 q 23,-7 56,-12.5 33,-5.5 57,-10.5 24,-5 49.5,-14.5 25.5,-9.5 44.5,-29 19,-19.5 31,-50.5 L 477,724 757,0 l 75,0 53,0 q 8,14 11,21 l 205,480 q 33,78 106,257.5 73,179.5 114,274.5 15,34 58,144.5 43,110.5 72,168.5 20,45 35,57 19,15 88,29.5 69,14.5 84,20.5 6,38 6,57 0,5 -0.5,13.5 -0.5,8.5 -0.5,12.5 -63,0 -190,-8 -127,-8 -191,-8 -76,0 -215,7 -139,7 -178,8 0,-43 4,-78 l 131,-28 q 1,0 12.5,-2.5 11.5,-2.5 15.5,-3.5 4,-1 14.5,-4.5 10.5,-3.5 15,-6.5 4.5,-3 11,-8 6.5,-5 9,-11 2.5,-6 2.5,-14 0,-16 -31,-96.5 -31,-80.5 -72,-177.5 -41,-97 -42,-100 l -450,-2 q -26,58 -76.5,195.5 Q 382,1336 382,1361 q 0,22 14,37.5 14,15.5 43.5,24.5 29.5,9 48.5,13.5 19,4.5 57,8.5 38,4 41,4 1,19 1,58 0,9 -2,27 -58,0 -174.5,-10 -116.5,-10 -174.5,-10 -8,0 -26.5,4 -18.5,4 -21.5,4 -80,14 -188,14 z' } ], - [ 'home', { viewBox: '0 0 1612 1283', path: 'm 1382.1111,739 v 480 q 0,26 -19,45 -19,19 -45,19 H 934.11111 V 899 h -256 v 384 h -384 q -26,0 -45,-19 -19,-19 -19,-45 V 739 q 0,-1 0.5,-3 0.5,-2 0.5,-3 l 575,-474 574.99999,474 q 1,2 1,6 z m 223,-69 -62,74 q -8,9 -21,11 h -3 q -13,0 -21,-7 l -691.99999,-577 -692,577 q -12,8 -23.999999,7 -13,-2 -21,-11 L 7.1111111,670 Q -0.88888889,660 0.11111111,646.5 1.1111111,633 11.111111,625 L 730.11111,26 q 32,-26 76,-26 44,0 76,26 L 1126.1111,230 V 35 q 0,-14 9,-23 9,-9 23,-9 h 192 q 14,0 23,9 9,9 9,23 v 408 l 219,182 q 10,8 11,21.5 1,13.5 -7,23.5 z' } ], - [ 'info-circle', { viewBox: '0 0 1536 1536', path: 'm 1024,1248 0,-160 q 0,-14 -9,-23 -9,-9 -23,-9 l -96,0 0,-512 q 0,-14 -9,-23 -9,-9 -23,-9 l -320,0 q -14,0 -23,9 -9,9 -9,23 l 0,160 q 0,14 9,23 9,9 23,9 l 96,0 0,320 -96,0 q -14,0 -23,9 -9,9 -9,23 l 0,160 q 0,14 9,23 9,9 23,9 l 448,0 q 14,0 23,-9 9,-9 9,-23 z M 896,352 896,192 q 0,-14 -9,-23 -9,-9 -23,-9 l -192,0 q -14,0 -23,9 -9,9 -9,23 l 0,160 q 0,14 9,23 9,9 23,9 l 192,0 q 14,0 23,-9 9,-9 9,-23 z m 640,416 q 0,209 -103,385.5 Q 1330,1330 1153.5,1433 977,1536 768,1536 559,1536 382.5,1433 206,1330 103,1153.5 0,977 0,768 0,559 103,382.5 206,206 382.5,103 559,0 768,0 977,0 1153.5,103 1330,206 1433,382.5 1536,559 1536,768 Z' } ], - [ 'list-alt', { viewBox: '0 0 1792 1408', path: 'm 384,1056 0,64 q 0,13 -9.5,22.5 -9.5,9.5 -22.5,9.5 l -64,0 q -13,0 -22.5,-9.5 Q 256,1133 256,1120 l 0,-64 q 0,-13 9.5,-22.5 9.5,-9.5 22.5,-9.5 l 64,0 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 z m 0,-256 0,64 q 0,13 -9.5,22.5 Q 365,896 352,896 l -64,0 q -13,0 -22.5,-9.5 Q 256,877 256,864 l 0,-64 q 0,-13 9.5,-22.5 Q 275,768 288,768 l 64,0 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 z m 0,-256 0,64 q 0,13 -9.5,22.5 Q 365,640 352,640 l -64,0 q -13,0 -22.5,-9.5 Q 256,621 256,608 l 0,-64 q 0,-13 9.5,-22.5 Q 275,512 288,512 l 64,0 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 z m 1152,512 0,64 q 0,13 -9.5,22.5 -9.5,9.5 -22.5,9.5 l -960,0 q -13,0 -22.5,-9.5 Q 512,1133 512,1120 l 0,-64 q 0,-13 9.5,-22.5 9.5,-9.5 22.5,-9.5 l 960,0 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 z m 0,-256 0,64 q 0,13 -9.5,22.5 -9.5,9.5 -22.5,9.5 l -960,0 q -13,0 -22.5,-9.5 Q 512,877 512,864 l 0,-64 q 0,-13 9.5,-22.5 Q 531,768 544,768 l 960,0 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 z m 0,-256 0,64 q 0,13 -9.5,22.5 -9.5,9.5 -22.5,9.5 l -960,0 q -13,0 -22.5,-9.5 Q 512,621 512,608 l 0,-64 q 0,-13 9.5,-22.5 Q 531,512 544,512 l 960,0 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 z m 128,704 0,-832 q 0,-13 -9.5,-22.5 Q 1645,384 1632,384 l -1472,0 q -13,0 -22.5,9.5 Q 128,403 128,416 l 0,832 q 0,13 9.5,22.5 9.5,9.5 22.5,9.5 l 1472,0 q 13,0 22.5,-9.5 9.5,-9.5 9.5,-22.5 z m 128,-1088 0,1088 q 0,66 -47,113 -47,47 -113,47 l -1472,0 Q 94,1408 47,1361 0,1314 0,1248 L 0,160 Q 0,94 47,47 94,0 160,0 l 1472,0 q 66,0 113,47 47,47 47,113 z' } ], - [ 'lock', { viewBox: '0 0 1152 1408', path: 'm 320,640 512,0 0,-192 q 0,-106 -75,-181 -75,-75 -181,-75 -106,0 -181,75 -75,75 -75,181 l 0,192 z m 832,96 0,576 q 0,40 -28,68 -28,28 -68,28 l -960,0 Q 56,1408 28,1380 0,1352 0,1312 L 0,736 q 0,-40 28,-68 28,-28 68,-28 l 32,0 0,-192 Q 128,264 260,132 392,0 576,0 q 184,0 316,132 132,132 132,316 l 0,192 32,0 q 40,0 68,28 28,28 28,68 z' } ], - [ 'magic', { viewBox: '0 0 1637 1637', path: 'M 1163,581 1456,288 1349,181 1056,474 Z m 447,-293 q 0,27 -18,45 L 306,1619 q -18,18 -45,18 -27,0 -45,-18 L 18,1421 Q 0,1403 0,1376 0,1349 18,1331 L 1304,45 q 18,-18 45,-18 27,0 45,18 l 198,198 q 18,18 18,45 z M 259,98 l 98,30 -98,30 -30,98 -30,-98 -98,-30 98,-30 30,-98 z M 609,260 805,320 609,380 549,576 489,380 293,320 489,260 549,64 Z m 930,478 98,30 -98,30 -30,98 -30,-98 -98,-30 98,-30 30,-98 z M 899,98 l 98,30 -98,30 -30,98 -30,-98 -98,-30 98,-30 30,-98 z' } ], - [ 'pause-circle-o', { viewBox: '0 0 1536 1536', path: 'M 768,0 Q 977,0 1153.5,103 1330,206 1433,382.5 1536,559 1536,768 1536,977 1433,1153.5 1330,1330 1153.5,1433 977,1536 768,1536 559,1536 382.5,1433 206,1330 103,1153.5 0,977 0,768 0,559 103,382.5 206,206 382.5,103 559,0 768,0 Z m 0,1312 q 148,0 273,-73 125,-73 198,-198 73,-125 73,-273 0,-148 -73,-273 -73,-125 -198,-198 -125,-73 -273,-73 -148,0 -273,73 -125,73 -198,198 -73,125 -73,273 0,148 73,273 73,125 198,198 125,73 273,73 z m 96,-224 q -14,0 -23,-9 -9,-9 -9,-23 l 0,-576 q 0,-14 9,-23 9,-9 23,-9 l 192,0 q 14,0 23,9 9,9 9,23 l 0,576 q 0,14 -9,23 -9,9 -23,9 l -192,0 z m -384,0 q -14,0 -23,-9 -9,-9 -9,-23 l 0,-576 q 0,-14 9,-23 9,-9 23,-9 l 192,0 q 14,0 23,9 9,9 9,23 l 0,576 q 0,14 -9,23 -9,9 -23,9 l -192,0 z' } ], - [ 'play-circle-o', { viewBox: '0 0 1536 1536', path: 'm 1184,768 q 0,37 -32,55 l -544,320 q -15,9 -32,9 -16,0 -32,-8 -32,-19 -32,-56 l 0,-640 q 0,-37 32,-56 33,-18 64,1 l 544,320 q 32,18 32,55 z m 128,0 q 0,-148 -73,-273 -73,-125 -198,-198 -125,-73 -273,-73 -148,0 -273,73 -125,73 -198,198 -73,125 -73,273 0,148 73,273 73,125 198,198 125,73 273,73 148,0 273,-73 125,-73 198,-198 73,-125 73,-273 z m 224,0 q 0,209 -103,385.5 Q 1330,1330 1153.5,1433 977,1536 768,1536 559,1536 382.5,1433 206,1330 103,1153.5 0,977 0,768 0,559 103,382.5 206,206 382.5,103 559,0 768,0 977,0 1153.5,103 1330,206 1433,382.5 1536,559 1536,768 Z' } ], - [ 'plus', { viewBox: '0 0 1408 1408', path: 'm 1408,608 0,192 q 0,40 -28,68 -28,28 -68,28 l -416,0 0,416 q 0,40 -28,68 -28,28 -68,28 l -192,0 q -40,0 -68,-28 -28,-28 -28,-68 l 0,-416 -416,0 Q 56,896 28,868 0,840 0,800 L 0,608 q 0,-40 28,-68 28,-28 68,-28 l 416,0 0,-416 Q 512,56 540,28 568,0 608,0 l 192,0 q 40,0 68,28 28,28 28,68 l 0,416 416,0 q 40,0 68,28 28,28 28,68 z' } ], - [ 'power-off', { viewBox: '0 0 1536 1664', path: 'm 1536,896 q 0,156 -61,298 -61,142 -164,245 -103,103 -245,164 -142,61 -298,61 -156,0 -298,-61 Q 328,1542 225,1439 122,1336 61,1194 0,1052 0,896 0,714 80.5,553 161,392 307,283 q 43,-32 95.5,-25 52.5,7 83.5,50 32,42 24.5,94.5 Q 503,455 461,487 363,561 309.5,668 256,775 256,896 q 0,104 40.5,198.5 40.5,94.5 109.5,163.5 69,69 163.5,109.5 94.5,40.5 198.5,40.5 104,0 198.5,-40.5 Q 1061,1327 1130,1258 1199,1189 1239.5,1094.5 1280,1000 1280,896 1280,775 1226.5,668 1173,561 1075,487 1033,455 1025.5,402.5 1018,350 1050,308 q 31,-43 84,-50 53,-7 95,25 146,109 226.5,270 80.5,161 80.5,343 z m -640,-768 0,640 q 0,52 -38,90 -38,38 -90,38 -52,0 -90,-38 -38,-38 -38,-90 l 0,-640 q 0,-52 38,-90 38,-38 90,-38 52,0 90,38 38,38 38,90 z' } ], - [ 'question-circle', { viewBox: '0 0 1536 1536', path: 'm 896,1248 v -192 q 0,-14 -9,-23 -9,-9 -23,-9 H 672 q -14,0 -23,9 -9,9 -9,23 v 192 q 0,14 9,23 9,9 23,9 h 192 q 14,0 23,-9 9,-9 9,-23 z m 256,-672 q 0,-88 -55.5,-163 Q 1041,338 958,297 875,256 788,256 q -243,0 -371,213 -15,24 8,42 l 132,100 q 7,6 19,6 16,0 25,-12 53,-68 86,-92 34,-24 86,-24 48,0 85.5,26 37.5,26 37.5,59 0,38 -20,61 -20,23 -68,45 -63,28 -115.5,86.5 Q 640,825 640,892 v 36 q 0,14 9,23 9,9 23,9 h 192 q 14,0 23,-9 9,-9 9,-23 0,-19 21.5,-49.5 Q 939,848 972,829 q 32,-18 49,-28.5 17,-10.5 46,-35 29,-24.5 44.5,-48 15.5,-23.5 28,-60.5 12.5,-37 12.5,-81 z m 384,192 q 0,209 -103,385.5 Q 1330,1330 1153.5,1433 977,1536 768,1536 559,1536 382.5,1433 206,1330 103,1153.5 0,977 0,768 0,559 103,382.5 206,206 382.5,103 559,0 768,0 977,0 1153.5,103 1330,206 1433,382.5 1536,559 1536,768 Z' } ], - [ 'refresh', { viewBox: '0 0 1536 1536', path: 'm 1511,928 q 0,5 -1,7 -64,268 -268,434.5 Q 1038,1536 764,1536 618,1536 481.5,1481 345,1426 238,1324 l -129,129 q -19,19 -45,19 -26,0 -45,-19 Q 0,1434 0,1408 L 0,960 q 0,-26 19,-45 19,-19 45,-19 l 448,0 q 26,0 45,19 19,19 19,45 0,26 -19,45 l -137,137 q 71,66 161,102 90,36 187,36 134,0 250,-65 116,-65 186,-179 11,-17 53,-117 8,-23 30,-23 l 192,0 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 z m 25,-800 0,448 q 0,26 -19,45 -19,19 -45,19 l -448,0 q -26,0 -45,-19 -19,-19 -19,-45 0,-26 19,-45 L 1117,393 Q 969,256 768,256 q -134,0 -250,65 -116,65 -186,179 -11,17 -53,117 -8,23 -30,23 L 50,640 Q 37,640 27.5,630.5 18,621 18,608 l 0,-7 Q 83,333 288,166.5 493,0 768,0 914,0 1052,55.5 1190,111 1297,212 L 1427,83 q 19,-19 45,-19 26,0 45,19 19,19 19,45 z' } ], - [ 'save', { viewBox: '0 0 1536 1536', path: 'm 384,1408 h 768 V 1024 H 384 Z m 896,0 h 128 V 512 q 0,-14 -10,-38.5 Q 1388,449 1378,439 L 1097,158 q -10,-10 -34,-20 -24,-10 -39,-10 v 416 q 0,40 -28,68 -28,28 -68,28 H 352 q -40,0 -68,-28 -28,-28 -28,-68 V 128 H 128 V 1408 H 256 V 992 q 0,-40 28,-68 28,-28 68,-28 h 832 q 40,0 68,28 28,28 28,68 z M 896,480 V 160 q 0,-13 -9.5,-22.5 Q 877,128 864,128 H 672 q -13,0 -22.5,9.5 Q 640,147 640,160 v 320 q 0,13 9.5,22.5 9.5,9.5 22.5,9.5 h 192 q 13,0 22.5,-9.5 Q 896,493 896,480 Z m 640,32 v 928 q 0,40 -28,68 -28,28 -68,28 H 96 Q 56,1536 28,1508 0,1480 0,1440 V 96 Q 0,56 28,28 56,0 96,0 h 928 q 40,0 88,20 48,20 76,48 l 280,280 q 28,28 48,76 20,48 20,88 z' } ], - [ 'search', { viewBox: '0 0 1664 1664', path: 'M 1152,704 Q 1152,519 1020.5,387.5 889,256 704,256 519,256 387.5,387.5 256,519 256,704 256,889 387.5,1020.5 519,1152 704,1152 889,1152 1020.5,1020.5 1152,889 1152,704 Z m 512,832 q 0,52 -38,90 -38,38 -90,38 -54,0 -90,-38 L 1103,1284 Q 924,1408 704,1408 561,1408 430.5,1352.5 300,1297 205.5,1202.5 111,1108 55.5,977.5 0,847 0,704 0,561 55.5,430.5 111,300 205.5,205.5 300,111 430.5,55.5 561,0 704,0 q 143,0 273.5,55.5 130.5,55.5 225,150 94.5,94.5 150,225 55.5,130.5 55.5,273.5 0,220 -124,399 l 343,343 q 37,37 37,90 z' } ], - [ 'sliders', { viewBox: '0 0 1536 1408', path: 'm 352,1152 0,128 -352,0 0,-128 352,0 z m 352,-128 q 26,0 45,19 19,19 19,45 l 0,256 q 0,26 -19,45 -19,19 -45,19 l -256,0 q -26,0 -45,-19 -19,-19 -19,-45 l 0,-256 q 0,-26 19,-45 19,-19 45,-19 l 256,0 z m 160,-384 0,128 -864,0 0,-128 864,0 z m -640,-512 0,128 -224,0 0,-128 224,0 z m 1312,1024 0,128 -736,0 0,-128 736,0 z M 576,0 q 26,0 45,19 19,19 19,45 l 0,256 q 0,26 -19,45 -19,19 -45,19 l -256,0 q -26,0 -45,-19 -19,-19 -19,-45 L 256,64 Q 256,38 275,19 294,0 320,0 l 256,0 z m 640,512 q 26,0 45,19 19,19 19,45 l 0,256 q 0,26 -19,45 -19,19 -45,19 l -256,0 q -26,0 -45,-19 -19,-19 -19,-45 l 0,-256 q 0,-26 19,-45 19,-19 45,-19 l 256,0 z m 320,128 0,128 -224,0 0,-128 224,0 z m 0,-512 0,128 -864,0 0,-128 864,0 z' } ], - [ 'spinner', { viewBox: '0 0 1664 1728', path: 'm 462,1394 q 0,53 -37.5,90.5 -37.5,37.5 -90.5,37.5 -52,0 -90,-38 -38,-38 -38,-90 0,-53 37.5,-90.5 37.5,-37.5 90.5,-37.5 53,0 90.5,37.5 37.5,37.5 37.5,90.5 z m 498,206 q 0,53 -37.5,90.5 Q 885,1728 832,1728 779,1728 741.5,1690.5 704,1653 704,1600 q 0,-53 37.5,-90.5 37.5,-37.5 90.5,-37.5 53,0 90.5,37.5 Q 960,1547 960,1600 Z M 256,896 q 0,53 -37.5,90.5 Q 181,1024 128,1024 75,1024 37.5,986.5 0,949 0,896 0,843 37.5,805.5 75,768 128,768 q 53,0 90.5,37.5 Q 256,843 256,896 Z m 1202,498 q 0,52 -38,90 -38,38 -90,38 -53,0 -90.5,-37.5 -37.5,-37.5 -37.5,-90.5 0,-53 37.5,-90.5 37.5,-37.5 90.5,-37.5 53,0 90.5,37.5 37.5,37.5 37.5,90.5 z M 494,398 q 0,66 -47,113 -47,47 -113,47 -66,0 -113,-47 -47,-47 -47,-113 0,-66 47,-113 47,-47 113,-47 66,0 113,47 47,47 47,113 z m 1170,498 q 0,53 -37.5,90.5 -37.5,37.5 -90.5,37.5 -53,0 -90.5,-37.5 Q 1408,949 1408,896 q 0,-53 37.5,-90.5 37.5,-37.5 90.5,-37.5 53,0 90.5,37.5 Q 1664,843 1664,896 Z M 1024,192 q 0,80 -56,136 -56,56 -136,56 -80,0 -136,-56 -56,-56 -56,-136 0,-80 56,-136 56,-56 136,-56 80,0 136,56 56,56 56,136 z m 530,206 q 0,93 -66,158.5 -66,65.5 -158,65.5 -93,0 -158.5,-65.5 Q 1106,491 1106,398 q 0,-92 65.5,-158 65.5,-66 158.5,-66 92,0 158,66 66,66 66,158 z' } ], - [ 'sun', { viewBox: '0 0 1708 1792', path: 'm 1706,1172.5 c -3,10 -11,17 -20,20 l -292,96 v 306 c 0,10 -5,20 -13,26 -9,6 -19,8 -29,4 l -292,-94 -180,248 c -6,8 -16,13 -26,13 -10,0 -20,-5 -26,-13 l -180,-248 -292,94 c -10,4 -20,2 -29,-4 -8,-6 -13,-16 -13,-26 v -306 l -292,-96 c -9,-3 -17,-10 -20,-20 -3,-10 -2,-21 4,-29 l 180,-248 -180,-248 c -6,-9 -7,-19 -4,-29 3,-10 11,-17 20,-20 l 292,-96 v -306 c 0,-10 5,-20 13,-26 9,-6 19,-8 29,-4 l 292,94 180,-248 c 12,-16 40,-16 52,0 L 1060,260.5 l 292,-94 c 10,-4 20,-2 29,4 8,6 13,16 13,26 v 306 l 292,96 c 9,3 17,10 20,20 3,10 2,20 -4,29 l -180,248 180,248 c 6,8 7,19 4,29 z' } ], - [ 'sun-o', { viewBox: '0 0 1708 1792', path: 'm 1430,895.5 c 0,-318 -258,-576 -576,-576 -318,0 -576,258 -576,576 0,318 258,576 576,576 C 1172,1471.5 1430,1213.5 1430,895.5 Z m 276,277 c -3,10 -11,17 -20,20 l -292,96 v 306 c 0,10 -5,20 -13,26 -9,6 -19,8 -29,4 l -292,-94 -180,248 c -6,8 -16,13 -26,13 -10,0 -20,-5 -26,-13 l -180,-248 -292,94 c -10,4 -20,2 -29,-4 -8,-6 -13,-16 -13,-26 v -306 l -292,-96 c -9,-3 -17,-10 -20,-20 -3,-10 -2,-21 4,-29 l 180,-248 -180,-248 c -6,-9 -7,-19 -4,-29 3,-10 11,-17 20,-20 l 292,-96 v -306 c 0,-10 5,-20 13,-26 9,-6 19,-8 29,-4 l 292,94 180,-248 c 12,-16 40,-16 52,0 L 1060,260.5 l 292,-94 c 10,-4 20,-2 29,4 8,6 13,16 13,26 v 306 l 292,96 c 9,3 17,10 20,20 3,10 2,20 -4,29 l -180,248 180,248 c 6,8 7,19 4,29 z' } ], - [ 'terminal', { viewBox: '0 0 1651 1075', path: 'm572 522-466 466q-10 10-23 10t-23-10l-50-50q-10-10-10-23t10-23l393-393-393-393q-10-10-10-23t10-23l50-50q10-10 23-10t23 10l466 466q10 10 10 23t-10 23zm1079 457v64q0 14-9 23t-23 9h-960q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h960q14 0 23 9t9 23z' } ], - [ 'times', { viewBox: '0 0 1188 1188', path: 'm 1188,956 q 0,40 -28,68 l -136,136 q -28,28 -68,28 -40,0 -68,-28 L 594,866 300,1160 q -28,28 -68,28 -40,0 -68,-28 L 28,1024 Q 0,996 0,956 0,916 28,888 L 322,594 28,300 Q 0,272 0,232 0,192 28,164 L 164,28 Q 192,0 232,0 272,0 300,28 L 594,322 888,28 q 28,-28 68,-28 40,0 68,28 l 136,136 q 28,28 28,68 0,40 -28,68 l -294,294 294,294 q 28,28 28,68 z' } ], - [ 'trash-o', { viewBox: '0 0 1408 1536', path: 'm 512,608 v 576 q 0,14 -9,23 -9,9 -23,9 h -64 q -14,0 -23,-9 -9,-9 -9,-23 V 608 q 0,-14 9,-23 9,-9 23,-9 h 64 q 14,0 23,9 9,9 9,23 z m 256,0 v 576 q 0,14 -9,23 -9,9 -23,9 h -64 q -14,0 -23,-9 -9,-9 -9,-23 V 608 q 0,-14 9,-23 9,-9 23,-9 h 64 q 14,0 23,9 9,9 9,23 z m 256,0 v 576 q 0,14 -9,23 -9,9 -23,9 h -64 q -14,0 -23,-9 -9,-9 -9,-23 V 608 q 0,-14 9,-23 9,-9 23,-9 h 64 q 14,0 23,9 9,9 9,23 z m 128,724 V 384 H 256 v 948 q 0,22 7,40.5 7,18.5 14.5,27 7.5,8.5 10.5,8.5 h 832 q 3,0 10.5,-8.5 7.5,-8.5 14.5,-27 7,-18.5 7,-40.5 z M 480,256 H 928 L 880,139 q -7,-9 -17,-11 H 546 q -10,2 -17,11 z m 928,32 v 64 q 0,14 -9,23 -9,9 -23,9 h -96 v 948 q 0,83 -47,143.5 -47,60.5 -113,60.5 H 288 q -66,0 -113,-58.5 Q 128,1419 128,1336 V 384 H 32 Q 18,384 9,375 0,366 0,352 v -64 q 0,-14 9,-23 9,-9 23,-9 H 341 L 411,89 Q 426,52 465,26 504,0 544,0 h 320 q 40,0 79,26 39,26 54,63 l 70,167 h 309 q 14,0 23,9 9,9 9,23 z' } ], - [ 'undo', { viewBox: '0 0 1536 1536', path: 'm 1536,768 q 0,156 -61,298 -61,142 -164,245 -103,103 -245,164 -142,61 -298,61 -172,0 -327,-72.5 Q 286,1391 177,1259 q -7,-10 -6.5,-22.5 0.5,-12.5 8.5,-20.5 l 137,-138 q 10,-9 25,-9 16,2 23,12 73,95 179,147 106,52 225,52 104,0 198.5,-40.5 Q 1061,1199 1130,1130 1199,1061 1239.5,966.5 1280,872 1280,768 1280,664 1239.5,569.5 1199,475 1130,406 1061,337 966.5,296.5 872,256 768,256 670,256 580,291.5 490,327 420,393 l 137,138 q 31,30 14,69 -17,40 -59,40 H 64 Q 38,640 19,621 0,602 0,576 V 128 Q 0,86 40,69 79,52 109,83 L 239,212 Q 346,111 483.5,55.5 621,0 768,0 q 156,0 298,61 142,61 245,164 103,103 164,245 61,142 61,298 z' } ], - [ 'unlink', { viewBox: '0 0 1664 1664', path: 'm 439,1271 -256,256 q -11,9 -23,9 -12,0 -23,-9 -9,-10 -9,-23 0,-13 9,-23 l 256,-256 q 10,-9 23,-9 13,0 23,9 9,10 9,23 0,13 -9,23 z m 169,41 v 320 q 0,14 -9,23 -9,9 -23,9 -14,0 -23,-9 -9,-9 -9,-23 v -320 q 0,-14 9,-23 9,-9 23,-9 14,0 23,9 9,9 9,23 z M 384,1088 q 0,14 -9,23 -9,9 -23,9 H 32 q -14,0 -23,-9 -9,-9 -9,-23 0,-14 9,-23 9,-9 23,-9 h 320 q 14,0 23,9 9,9 9,23 z m 1264,128 q 0,120 -85,203 l -147,146 q -83,83 -203,83 -121,0 -204,-85 L 675,1228 q -21,-21 -42,-56 l 239,-18 273,274 q 27,27 68,27.5 41,0.5 68,-26.5 l 147,-146 q 28,-28 28,-67 0,-40 -28,-68 l -274,-275 18,-239 q 35,21 56,42 l 336,336 q 84,86 84,204 z M 1031,492 792,510 519,236 q -28,-28 -68,-28 -39,0 -68,27 L 236,381 q -28,28 -28,67 0,40 28,68 l 274,274 -18,240 q -35,-21 -56,-42 L 100,652 Q 16,566 16,448 16,328 101,245 L 248,99 q 83,-83 203,-83 121,0 204,85 l 334,335 q 21,21 42,56 z m 633,84 q 0,14 -9,23 -9,9 -23,9 h -320 q -14,0 -23,-9 -9,-9 -9,-23 0,-14 9,-23 9,-9 23,-9 h 320 q 14,0 23,9 9,9 9,23 z M 1120,32 v 320 q 0,14 -9,23 -9,9 -23,9 -14,0 -23,-9 -9,-9 -9,-23 V 32 q 0,-14 9,-23 9,-9 23,-9 14,0 23,9 9,9 9,23 z m 407,151 -256,256 q -11,9 -23,9 -12,0 -23,-9 -9,-10 -9,-23 0,-13 9,-23 l 256,-256 q 10,-9 23,-9 13,0 23,9 9,10 9,23 0,13 -9,23 z' } ], - [ 'unlock-alt', { viewBox: '0 0 1152 1536', path: 'm 1056,768 q 40,0 68,28 28,28 28,68 v 576 q 0,40 -28,68 -28,28 -68,28 H 96 Q 56,1536 28,1508 0,1480 0,1440 V 864 q 0,-40 28,-68 28,-28 68,-28 h 32 V 448 Q 128,263 259.5,131.5 391,0 576,0 761,0 892.5,131.5 1024,263 1024,448 q 0,26 -19,45 -19,19 -45,19 h -64 q -26,0 -45,-19 -19,-19 -19,-45 0,-106 -75,-181 -75,-75 -181,-75 -106,0 -181,75 -75,75 -75,181 v 320 z' } ], - [ 'upload-alt', { viewBox: '0 0 1664 1600', path: 'm 1280,1408 q 0,-26 -19,-45 -19,-19 -45,-19 -26,0 -45,19 -19,19 -19,45 0,26 19,45 19,19 45,19 26,0 45,-19 19,-19 19,-45 z m 256,0 q 0,-26 -19,-45 -19,-19 -45,-19 -26,0 -45,19 -19,19 -19,45 0,26 19,45 19,19 45,19 26,0 45,-19 19,-19 19,-45 z m 128,-224 v 320 q 0,40 -28,68 -28,28 -68,28 H 96 q -40,0 -68,-28 -28,-28 -28,-68 v -320 q 0,-40 28,-68 28,-28 68,-28 h 427 q 21,56 70.5,92 49.5,36 110.5,36 h 256 q 61,0 110.5,-36 49.5,-36 70.5,-92 h 427 q 40,0 68,28 28,28 28,68 z M 1339,536 q -17,40 -59,40 h -256 v 448 q 0,26 -19,45 -19,19 -45,19 H 704 q -26,0 -45,-19 -19,-19 -19,-45 V 576 H 384 q -42,0 -59,-40 -17,-39 14,-69 L 787,19 q 18,-19 45,-19 27,0 45,19 l 448,448 q 31,30 14,69 z' } ], - [ 'volume-up', { viewBox: '0 0 1664 1422', path: 'm 768,167 v 1088 c 0,35 -29,64 -64,64 -17,0 -33,-7 -45,-19 L 326,967 H 64 C 29,967 0,938 0,903 V 519 C 0,484 29,455 64,455 H 326 L 659,122 c 12,-12 28,-19 45,-19 35,0 64,29 64,64 z m 384,544 c 0,100 -61,197 -155,235 -8,4 -17,5 -25,5 -35,0 -64,-28 -64,-64 0,-76 116,-55 116,-176 0,-121 -116,-100 -116,-176 0,-36 29,-64 64,-64 8,0 17,1 25,5 94,37 155,135 155,235 z m 256,0 c 0,203 -122,392 -310,471 -8,3 -17,5 -25,5 -36,0 -65,-29 -65,-64 0,-28 16,-47 39,-59 27,-14 52,-26 76,-44 99,-72 157,-187 157,-309 0,-122 -58,-237 -157,-309 -24,-18 -49,-30 -76,-44 -23,-12 -39,-31 -39,-59 0,-35 29,-64 64,-64 9,0 18,2 26,5 188,79 310,268 310,471 z m 256,0 c 0,307 -183,585 -465,706 -8,3 -17,5 -26,5 -35,0 -64,-29 -64,-64 0,-29 15,-45 39,-59 14,-8 30,-13 45,-21 28,-15 56,-32 82,-51 164,-121 261,-312 261,-516 0,-204 -97,-395 -261,-516 -26,-19 -54,-36 -82,-51 -15,-8 -31,-13 -45,-21 -24,-14 -39,-30 -39,-59 0,-35 29,-64 64,-64 9,0 18,2 26,5 282,121 465,399 465,706 z' } ], - [ 'zoom-in', { viewBox: '0 0 1664 1664', path: 'm 1024,672 v 64 q 0,13 -9.5,22.5 Q 1005,768 992,768 H 768 v 224 q 0,13 -9.5,22.5 -9.5,9.5 -22.5,9.5 h -64 q -13,0 -22.5,-9.5 Q 640,1005 640,992 V 768 H 416 q -13,0 -22.5,-9.5 Q 384,749 384,736 v -64 q 0,-13 9.5,-22.5 Q 403,640 416,640 H 640 V 416 q 0,-13 9.5,-22.5 Q 659,384 672,384 h 64 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 v 224 h 224 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 z m 128,32 Q 1152,519 1020.5,387.5 889,256 704,256 519,256 387.5,387.5 256,519 256,704 256,889 387.5,1020.5 519,1152 704,1152 889,1152 1020.5,1020.5 1152,889 1152,704 Z m 512,832 q 0,53 -37.5,90.5 -37.5,37.5 -90.5,37.5 -54,0 -90,-38 L 1103,1284 Q 924,1408 704,1408 561,1408 430.5,1352.5 300,1297 205.5,1202.5 111,1108 55.5,977.5 0,847 0,704 0,561 55.5,430.5 111,300 205.5,205.5 300,111 430.5,55.5 561,0 704,0 q 143,0 273.5,55.5 130.5,55.5 225,150 94.5,94.5 150,225 55.5,130.5 55.5,273.5 0,220 -124,399 l 343,343 q 37,37 37,90 z' } ], - [ 'zoom-out', { viewBox: '0 0 1664 1664', path: 'm 1024,672 v 64 q 0,13 -9.5,22.5 Q 1005,768 992,768 H 416 q -13,0 -22.5,-9.5 Q 384,749 384,736 v -64 q 0,-13 9.5,-22.5 Q 403,640 416,640 h 576 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 z m 128,32 Q 1152,519 1020.5,387.5 889,256 704,256 519,256 387.5,387.5 256,519 256,704 256,889 387.5,1020.5 519,1152 704,1152 889,1152 1020.5,1020.5 1152,889 1152,704 Z m 512,832 q 0,53 -37.5,90.5 -37.5,37.5 -90.5,37.5 -54,0 -90,-38 L 1103,1284 Q 924,1408 704,1408 561,1408 430.5,1352.5 300,1297 205.5,1202.5 111,1108 55.5,977.5 0,847 0,704 0,561 55.5,430.5 111,300 205.5,205.5 300,111 430.5,55.5 561,0 704,0 q 143,0 273.5,55.5 130.5,55.5 225,150 94.5,94.5 150,225 55.5,130.5 55.5,273.5 0,220 -124,399 l 343,343 q 37,37 37,90 z' } ], - // See /img/photon.svg - [ 'ph-popups', { viewBox: '0 0 20 20', path: 'm 3.146,1.8546316 a 0.5006316,0.5006316 0 0 0 0.708,-0.708 l -1,-1 a 0.5006316,0.5006316 0 0 0 -0.708,0.708 z m -0.836,2.106 a 0.406,0.406 0 0 0 0.19,0.04 0.5,0.5 0 0 0 0.35,-0.851 0.493,0.493 0 0 0 -0.54,-0.109 0.361,0.361 0 0 0 -0.16,0.109 0.485,0.485 0 0 0 0,0.7 0.372,0.372 0 0 0 0.16,0.111 z m 3,-3 a 0.406,0.406 0 0 0 0.19,0.04 0.513,0.513 0 0 0 0.5,-0.5 0.473,0.473 0 0 0 -0.15,-0.351 0.5,0.5 0 0 0 -0.7,0 0.485,0.485 0 0 0 0,0.7 0.372,0.372 0 0 0 0.16,0.111 z m 13.19,1.04 a 0.5,0.5 0 0 0 0.354,-0.146 l 1,-1 a 0.5006316,0.5006316 0 0 0 -0.708,-0.708 l -1,1 a 0.5,0.5 0 0 0 0.354,0.854 z m 1.35,1.149 a 0.361,0.361 0 0 0 -0.16,-0.109 0.5,0.5 0 0 0 -0.38,0 0.361,0.361 0 0 0 -0.16,0.109 0.485,0.485 0 0 0 0,0.7 0.372,0.372 0 0 0 0.16,0.11 0.471,0.471 0 0 0 0.38,0 0.372,0.372 0 0 0 0.16,-0.11 0.469,0.469 0 0 0 0.15,-0.349 0.43,0.43 0 0 0 -0.04,-0.19 0.358,0.358 0 0 0 -0.11,-0.161 z m -3.54,-2.189 a 0.406,0.406 0 0 0 0.19,0.04 0.469,0.469 0 0 0 0.35,-0.15 0.353,0.353 0 0 0 0.11,-0.161 0.469,0.469 0 0 0 0,-0.379 0.358,0.358 0 0 0 -0.11,-0.161 0.361,0.361 0 0 0 -0.16,-0.109 0.493,0.493 0 0 0 -0.54,0.109 0.358,0.358 0 0 0 -0.11,0.161 0.43,0.43 0 0 0 -0.04,0.19 0.469,0.469 0 0 0 0.15,0.35 0.372,0.372 0 0 0 0.16,0.11 z m 2.544,15.1860004 a 0.5006316,0.5006316 0 0 0 -0.708,0.708 l 1,1 a 0.5006316,0.5006316 0 0 0 0.708,-0.708 z m 0.3,-2 a 0.473,0.473 0 0 0 -0.154,0.354 0.4,0.4 0 0 0 0.04,0.189 0.353,0.353 0 0 0 0.11,0.161 0.469,0.469 0 0 0 0.35,0.15 0.406,0.406 0 0 0 0.19,-0.04 0.372,0.372 0 0 0 0.16,-0.11 0.454,0.454 0 0 0 0.15,-0.35 0.473,0.473 0 0 0 -0.15,-0.351 0.5,0.5 0 0 0 -0.7,0 z m -3,3 a 0.473,0.473 0 0 0 -0.154,0.354 0.454,0.454 0 0 0 0.15,0.35 0.372,0.372 0 0 0 0.16,0.11 0.406,0.406 0 0 0 0.19,0.04 0.469,0.469 0 0 0 0.35,-0.15 0.353,0.353 0 0 0 0.11,-0.161 0.4,0.4 0 0 0 0.04,-0.189 0.473,0.473 0 0 0 -0.15,-0.351 0.5,0.5 0 0 0 -0.7,0 z M 18,5.0006316 a 3,3 0 0 0 -3,-3 H 7 a 3,3 0 0 0 -3,3 v 8.0000004 a 3,3 0 0 0 3,3 h 8 a 3,3 0 0 0 3,-3 z m -2,8.0000004 a 1,1 0 0 1 -1,1 H 7 a 1,1 0 0 1 -1,-1 V 7.0006316 H 16 Z M 16,6.0006316 H 6 v -1 a 1,1 0 0 1 1,-1 h 8 a 1,1 0 0 1 1,1 z M 11,18.000632 H 3 a 1,1 0 0 1 -1,-1 v -6 h 1 v -1 H 2 V 9.0006316 a 1,1 0 0 1 1,-1 v -2 a 3,3 0 0 0 -3,3 v 8.0000004 a 3,3 0 0 0 3,3 h 8 a 3,3 0 0 0 3,-3 h -2 a 1,1 0 0 1 -1,1 z' } ], - [ 'ph-readermode-text-size', { viewBox: '0 0 20 12.5', path: 'M 10.422,11.223 A 0.712,0.712 0 0 1 10.295,11.007 L 6.581,0 H 4.68 L 0.933,11.309 0,11.447 V 12.5 H 3.594 V 11.447 L 2.655,11.325 A 0.3,0.3 0 0 1 2.468,11.211 0.214,0.214 0 0 1 2.419,10.974 L 3.341,8.387 h 3.575 l 0.906,2.652 a 0.18,0.18 0 0 1 -0.016,0.18 0.217,0.217 0 0 1 -0.139,0.106 L 6.679,11.447 V 12.5 h 4.62 V 11.447 L 10.663,11.325 A 0.512,0.512 0 0 1 10.422,11.223 Z M 3.659,7.399 5.063,2.57 6.5,7.399 Z M 19.27,11.464 A 0.406,0.406 0 0 1 19.009,11.337 0.368,0.368 0 0 1 18.902,11.072 V 6.779 A 3.838,3.838 0 0 0 18.67,5.318 1.957,1.957 0 0 0 18.01,4.457 2.48,2.48 0 0 0 16.987,4.044 7.582,7.582 0 0 0 15.67,3.938 a 6.505,6.505 0 0 0 -1.325,0.139 5.2,5.2 0 0 0 -1.2,0.4 2.732,2.732 0 0 0 -0.864,0.624 1.215,1.215 0 0 0 -0.331,0.833 0.532,0.532 0 0 0 0.119,0.383 0.665,0.665 0 0 0 0.257,0.172 0.916,0.916 0 0 0 0.375,0.041 h 1.723 V 4.942 A 4.429,4.429 0 0 1 14.611,4.91 2.045,2.045 0 0 1 14.836,4.885 c 0.09,0 0.192,-0.008 0.306,-0.008 a 1.849,1.849 0 0 1 0.808,0.151 1.247,1.247 0 0 1 0.71,0.89 2.164,2.164 0 0 1 0.049,0.51 c 0,0.076 -0.008,0.152 -0.008,0.228 0,0.076 -0.008,0.139 -0.008,0.221 v 0.2 q -1.152,0.252 -1.976,0.489 a 12.973,12.973 0 0 0 -1.391,0.474 4.514,4.514 0 0 0 -0.91,0.485 2.143,2.143 0 0 0 -0.527,0.523 1.594,1.594 0 0 0 -0.245,0.592 3.739,3.739 0 0 0 -0.061,0.693 2.261,2.261 0 0 0 0.171,0.9 2.024,2.024 0 0 0 0.469,0.682 2.084,2.084 0 0 0 0.693,0.432 2.364,2.364 0 0 0 0.852,0.151 3.587,3.587 0 0 0 1.068,-0.159 6.441,6.441 0 0 0 1.835,-0.877 l 0.22,0.832 H 20 v -0.783 z m -2.588,-0.719 a 4.314,4.314 0 0 1 -0.5,0.188 5.909,5.909 0 0 1 -0.493,0.123 2.665,2.665 0 0 1 -0.543,0.057 1.173,1.173 0 0 1 -0.861,-0.363 1.166,1.166 0 0 1 -0.245,-0.392 1.357,1.357 0 0 1 -0.086,-0.486 1.632,1.632 0 0 1 0.123,-0.657 1.215,1.215 0 0 1 0.432,-0.5 3.151,3.151 0 0 1 0.837,-0.392 12.429,12.429 0 0 1 1.334,-0.334 z' } ], - ]); - - return function(root) { - const icons = (root || document).querySelectorAll('.fa-icon'); - if ( icons.length === 0 ) { return; } - const svgNS = 'http://www.w3.org/2000/svg'; - for ( const icon of icons ) { - if ( icon.firstChild === null || icon.firstChild.nodeType !== 3 ) { - continue; - } - const name = icon.firstChild.nodeValue.trim(); - if ( name === '' ) { continue; } - const svg = document.createElementNS(svgNS, 'svg'); - svg.classList.add('fa-icon_' + name); - const details = svgIcons.get(name); - if ( details === undefined ) { - let file; - if ( name.startsWith('ph-') ) { - file = 'photon'; - } else if ( name.startsWith('md-') ) { - file = 'material-design'; - } else { - continue; - } - const use = document.createElementNS(svgNS, 'use'); - use.setAttribute('href', `/img/${file}.svg#${name}`); - svg.appendChild(use); - } else { - svg.setAttribute('viewBox', details.viewBox); - const path = document.createElementNS(svgNS, 'path'); - path.setAttribute('d', details.path); - svg.appendChild(path); - } - icon.replaceChild(svg, icon.firstChild); - if ( icon.classList.contains('fa-icon-badged') ) { - const badge = document.createElement('span'); - badge.className = 'fa-icon-badge'; - icon.insertBefore(badge, icon.firstChild.nextSibling); - } - } - }; -})(); - -faIconsInit(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/filtering-context.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/filtering-context.js deleted file mode 100644 index 6642050..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/filtering-context.js +++ /dev/null @@ -1,459 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2018-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -import { - hostnameFromURI, - domainFromHostname, - originFromURI, -} from './uri-utils.js'; - -/******************************************************************************/ - -// https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/ResourceType - -// Long term, convert code wherever possible to work with integer-based type -// values -- the assumption being that integer operations are faster than -// string operations. - -export const NO_TYPE = 0; -export const BEACON = 1 << 0; -export const CSP_REPORT = 1 << 1; -export const FONT = 1 << 2; -export const IMAGE = 1 << 4; -export const IMAGESET = 1 << 4; -export const MAIN_FRAME = 1 << 5; -export const MEDIA = 1 << 6; -export const OBJECT = 1 << 7; -export const OBJECT_SUBREQUEST = 1 << 7; -export const PING = 1 << 8; -export const SCRIPT = 1 << 9; -export const STYLESHEET = 1 << 10; -export const SUB_FRAME = 1 << 11; -export const WEBSOCKET = 1 << 12; -export const XMLHTTPREQUEST = 1 << 13; -export const INLINE_FONT = 1 << 14; -export const INLINE_SCRIPT = 1 << 15; -export const OTHER = 1 << 16; -export const FRAME_ANY = MAIN_FRAME | SUB_FRAME; -export const FONT_ANY = FONT | INLINE_FONT; -export const INLINE_ANY = INLINE_FONT | INLINE_SCRIPT; -export const PING_ANY = BEACON | CSP_REPORT | PING; -export const SCRIPT_ANY = SCRIPT | INLINE_SCRIPT; - -const typeStrToIntMap = { - 'no_type': NO_TYPE, - 'beacon': BEACON, - 'csp_report': CSP_REPORT, - 'font': FONT, - 'image': IMAGE, - 'imageset': IMAGESET, - 'main_frame': MAIN_FRAME, - 'media': MEDIA, - 'object': OBJECT, - 'object_subrequest': OBJECT_SUBREQUEST, - 'ping': PING, - 'script': SCRIPT, - 'stylesheet': STYLESHEET, - 'sub_frame': SUB_FRAME, - 'websocket': WEBSOCKET, - 'xmlhttprequest': XMLHTTPREQUEST, - 'inline-font': INLINE_FONT, - 'inline-script': INLINE_SCRIPT, - 'other': OTHER, -}; - -export const METHOD_NONE = 0; -export const METHOD_CONNECT = 1 << 1; -export const METHOD_DELETE = 1 << 2; -export const METHOD_GET = 1 << 3; -export const METHOD_HEAD = 1 << 4; -export const METHOD_OPTIONS = 1 << 5; -export const METHOD_PATCH = 1 << 6; -export const METHOD_POST = 1 << 7; -export const METHOD_PUT = 1 << 8; - -const methodStrToBitMap = { - '': METHOD_NONE, - 'connect': METHOD_CONNECT, - 'delete': METHOD_DELETE, - 'get': METHOD_GET, - 'head': METHOD_HEAD, - 'options': METHOD_OPTIONS, - 'patch': METHOD_PATCH, - 'post': METHOD_POST, - 'put': METHOD_PUT, - 'CONNECT': METHOD_CONNECT, - 'DELETE': METHOD_DELETE, - 'GET': METHOD_GET, - 'HEAD': METHOD_HEAD, - 'OPTIONS': METHOD_OPTIONS, - 'PATCH': METHOD_PATCH, - 'POST': METHOD_POST, - 'PUT': METHOD_PUT, -}; - -const methodBitToStrMap = new Map([ - [ METHOD_NONE, '' ], - [ METHOD_CONNECT, 'connect' ], - [ METHOD_DELETE, 'delete' ], - [ METHOD_GET, 'get' ], - [ METHOD_HEAD, 'head' ], - [ METHOD_OPTIONS, 'options' ], - [ METHOD_PATCH, 'patch' ], - [ METHOD_POST, 'post' ], - [ METHOD_PUT, 'put' ], -]); - -/******************************************************************************/ - -export const FilteringContext = class { - constructor(other) { - if ( other instanceof FilteringContext ) { - return this.fromFilteringContext(other); - } - this.tstamp = 0; - this.realm = ''; - this.method = 0; - this.itype = NO_TYPE; - this.stype = undefined; - this.url = undefined; - this.aliasURL = undefined; - this.hostname = undefined; - this.domain = undefined; - this.docId = -1; - this.frameId = -1; - this.docOrigin = undefined; - this.docHostname = undefined; - this.docDomain = undefined; - this.tabId = undefined; - this.tabOrigin = undefined; - this.tabHostname = undefined; - this.tabDomain = undefined; - this.redirectURL = undefined; - this.filter = undefined; - } - - get type() { - return this.stype; - } - - set type(a) { - this.itype = typeStrToIntMap[a] || NO_TYPE; - this.stype = a; - } - - isDocument() { - return (this.itype & FRAME_ANY) !== 0; - } - - isFont() { - return (this.itype & FONT_ANY) !== 0; - } - - fromFilteringContext(other) { - this.realm = other.realm; - this.type = other.type; - this.method = other.method; - this.url = other.url; - this.hostname = other.hostname; - this.domain = other.domain; - this.docId = other.docId; - this.frameId = other.frameId; - this.docOrigin = other.docOrigin; - this.docHostname = other.docHostname; - this.docDomain = other.docDomain; - this.tabId = other.tabId; - this.tabOrigin = other.tabOrigin; - this.tabHostname = other.tabHostname; - this.tabDomain = other.tabDomain; - this.redirectURL = other.redirectURL; - this.filter = undefined; - return this; - } - - fromDetails({ originURL, url, type }) { - this.setDocOriginFromURL(originURL) - .setURL(url) - .setType(type); - return this; - } - - duplicate() { - return (new FilteringContext(this)); - } - - setRealm(a) { - this.realm = a; - return this; - } - - setType(a) { - this.type = a; - return this; - } - - setURL(a) { - if ( a !== this.url ) { - this.hostname = this.domain = undefined; - this.url = a; - } - return this; - } - - getHostname() { - if ( this.hostname === undefined ) { - this.hostname = hostnameFromURI(this.url); - } - return this.hostname; - } - - setHostname(a) { - if ( a !== this.hostname ) { - this.domain = undefined; - this.hostname = a; - } - return this; - } - - getDomain() { - if ( this.domain === undefined ) { - this.domain = domainFromHostname(this.getHostname()); - } - return this.domain; - } - - setDomain(a) { - this.domain = a; - return this; - } - - getDocOrigin() { - if ( this.docOrigin === undefined ) { - this.docOrigin = this.tabOrigin; - } - return this.docOrigin; - } - - setDocOrigin(a) { - if ( a !== this.docOrigin ) { - this.docHostname = this.docDomain = undefined; - this.docOrigin = a; - } - return this; - } - - setDocOriginFromURL(a) { - return this.setDocOrigin(originFromURI(a)); - } - - getDocHostname() { - if ( this.docHostname === undefined ) { - this.docHostname = hostnameFromURI(this.getDocOrigin()); - } - return this.docHostname; - } - - setDocHostname(a) { - if ( a !== this.docHostname ) { - this.docDomain = undefined; - this.docHostname = a; - } - return this; - } - - getDocDomain() { - if ( this.docDomain === undefined ) { - this.docDomain = domainFromHostname(this.getDocHostname()); - } - return this.docDomain; - } - - setDocDomain(a) { - this.docDomain = a; - return this; - } - - // The idea is to minimize the amount of work done to figure out whether - // the resource is 3rd-party to the document. - is3rdPartyToDoc() { - let docDomain = this.getDocDomain(); - if ( docDomain === '' ) { docDomain = this.docHostname; } - if ( this.domain !== undefined && this.domain !== '' ) { - return this.domain !== docDomain; - } - const hostname = this.getHostname(); - if ( hostname.endsWith(docDomain) === false ) { return true; } - const i = hostname.length - docDomain.length; - if ( i === 0 ) { return false; } - return hostname.charCodeAt(i - 1) !== 0x2E /* '.' */; - } - - setTabId(a) { - this.tabId = a; - return this; - } - - getTabOrigin() { - return this.tabOrigin; - } - - setTabOrigin(a) { - if ( a !== this.tabOrigin ) { - this.tabHostname = this.tabDomain = undefined; - this.tabOrigin = a; - } - return this; - } - - setTabOriginFromURL(a) { - return this.setTabOrigin(originFromURI(a)); - } - - getTabHostname() { - if ( this.tabHostname === undefined ) { - this.tabHostname = hostnameFromURI(this.getTabOrigin()); - } - return this.tabHostname; - } - - setTabHostname(a) { - if ( a !== this.tabHostname ) { - this.tabDomain = undefined; - this.tabHostname = a; - } - return this; - } - - getTabDomain() { - if ( this.tabDomain === undefined ) { - this.tabDomain = domainFromHostname(this.getTabHostname()); - } - return this.tabDomain; - } - - setTabDomain(a) { - this.docDomain = a; - return this; - } - - // The idea is to minimize the amount of work done to figure out whether - // the resource is 3rd-party to the top document. - is3rdPartyToTab() { - let tabDomain = this.getTabDomain(); - if ( tabDomain === '' ) { tabDomain = this.tabHostname; } - if ( this.domain !== undefined && this.domain !== '' ) { - return this.domain !== tabDomain; - } - const hostname = this.getHostname(); - if ( hostname.endsWith(tabDomain) === false ) { return true; } - const i = hostname.length - tabDomain.length; - if ( i === 0 ) { return false; } - return hostname.charCodeAt(i - 1) !== 0x2E /* '.' */; - } - - setFilter(a) { - this.filter = a; - return this; - } - - pushFilter(a) { - if ( this.filter === undefined ) { - return this.setFilter(a); - } - if ( Array.isArray(this.filter) ) { - this.filter.push(a); - } else { - this.filter = [ this.filter, a ]; - } - return this; - } - - pushFilters(a) { - if ( this.filter === undefined ) { - return this.setFilter(a); - } - if ( Array.isArray(this.filter) ) { - this.filter.push(...a); - } else { - this.filter = [ this.filter, ...a ]; - } - return this; - } - - setMethod(a) { - this.method = methodStrToBitMap[a] || 0; - return this; - } - - getMethodName() { - return FilteringContext.getMethodName(this.method); - } - - static getMethod(a) { - return methodStrToBitMap[a] || 0; - } - - static getMethodName(a) { - return methodBitToStrMap.get(a) || ''; - } -}; - -/******************************************************************************/ - -FilteringContext.prototype.BEACON = FilteringContext.BEACON = BEACON; -FilteringContext.prototype.CSP_REPORT = FilteringContext.CSP_REPORT = CSP_REPORT; -FilteringContext.prototype.FONT = FilteringContext.FONT = FONT; -FilteringContext.prototype.IMAGE = FilteringContext.IMAGE = IMAGE; -FilteringContext.prototype.IMAGESET = FilteringContext.IMAGESET = IMAGESET; -FilteringContext.prototype.MAIN_FRAME = FilteringContext.MAIN_FRAME = MAIN_FRAME; -FilteringContext.prototype.MEDIA = FilteringContext.MEDIA = MEDIA; -FilteringContext.prototype.OBJECT = FilteringContext.OBJECT = OBJECT; -FilteringContext.prototype.OBJECT_SUBREQUEST = FilteringContext.OBJECT_SUBREQUEST = OBJECT_SUBREQUEST; -FilteringContext.prototype.PING = FilteringContext.PING = PING; -FilteringContext.prototype.SCRIPT = FilteringContext.SCRIPT = SCRIPT; -FilteringContext.prototype.STYLESHEET = FilteringContext.STYLESHEET = STYLESHEET; -FilteringContext.prototype.SUB_FRAME = FilteringContext.SUB_FRAME = SUB_FRAME; -FilteringContext.prototype.WEBSOCKET = FilteringContext.WEBSOCKET = WEBSOCKET; -FilteringContext.prototype.XMLHTTPREQUEST = FilteringContext.XMLHTTPREQUEST = XMLHTTPREQUEST; -FilteringContext.prototype.INLINE_FONT = FilteringContext.INLINE_FONT = INLINE_FONT; -FilteringContext.prototype.INLINE_SCRIPT = FilteringContext.INLINE_SCRIPT = INLINE_SCRIPT; -FilteringContext.prototype.OTHER = FilteringContext.OTHER = OTHER; -FilteringContext.prototype.FRAME_ANY = FilteringContext.FRAME_ANY = FRAME_ANY; -FilteringContext.prototype.FONT_ANY = FilteringContext.FONT_ANY = FONT_ANY; -FilteringContext.prototype.INLINE_ANY = FilteringContext.INLINE_ANY = INLINE_ANY; -FilteringContext.prototype.PING_ANY = FilteringContext.PING_ANY = PING_ANY; -FilteringContext.prototype.SCRIPT_ANY = FilteringContext.SCRIPT_ANY = SCRIPT_ANY; - -FilteringContext.prototype.METHOD_NONE = FilteringContext.METHOD_NONE = METHOD_NONE; -FilteringContext.prototype.METHOD_CONNECT = FilteringContext.METHOD_CONNECT = METHOD_CONNECT; -FilteringContext.prototype.METHOD_DELETE = FilteringContext.METHOD_DELETE = METHOD_DELETE; -FilteringContext.prototype.METHOD_GET = FilteringContext.METHOD_GET = METHOD_GET; -FilteringContext.prototype.METHOD_HEAD = FilteringContext.METHOD_HEAD = METHOD_HEAD; -FilteringContext.prototype.METHOD_OPTIONS = FilteringContext.METHOD_OPTIONS = METHOD_OPTIONS; -FilteringContext.prototype.METHOD_PATCH = FilteringContext.METHOD_PATCH = METHOD_PATCH; -FilteringContext.prototype.METHOD_POST = FilteringContext.METHOD_POST = METHOD_POST; -FilteringContext.prototype.METHOD_PUT = FilteringContext.METHOD_PUT = METHOD_PUT; - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/filtering-engines.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/filtering-engines.js deleted file mode 100644 index d72ff9d..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/filtering-engines.js +++ /dev/null @@ -1,50 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -import DynamicHostRuleFiltering from './dynamic-net-filtering.js'; -import DynamicSwitchRuleFiltering from './hnswitches.js'; -import DynamicURLRuleFiltering from './url-net-filtering.js'; - -/******************************************************************************/ - -const permanentFirewall = new DynamicHostRuleFiltering(); -const sessionFirewall = new DynamicHostRuleFiltering(); - -const permanentURLFiltering = new DynamicURLRuleFiltering(); -const sessionURLFiltering = new DynamicURLRuleFiltering(); - -const permanentSwitches = new DynamicSwitchRuleFiltering(); -const sessionSwitches = new DynamicSwitchRuleFiltering(); - -/******************************************************************************/ - -export { - permanentFirewall, - sessionFirewall, - permanentURLFiltering, - sessionURLFiltering, - permanentSwitches, - sessionSwitches, -}; diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/hnswitches.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/hnswitches.js deleted file mode 100644 index 9e94a8e..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/hnswitches.js +++ /dev/null @@ -1,289 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/* jshint bitwise: false */ - -'use strict'; - -/******************************************************************************/ - -import punycode from '../lib/punycode.js'; - -import { decomposeHostname } from './uri-utils.js'; -import { LineIterator } from './text-utils.js'; - -/******************************************************************************/ - -const decomposedSource = []; - -// Object.create(null) is used below to eliminate worries about unexpected -// property names in prototype chain -- and this way we don't have to use -// hasOwnProperty() to avoid this. - -const switchBitOffsets = Object.create(null); -Object.assign(switchBitOffsets, { - 'no-strict-blocking': 0, - 'no-popups': 2, - 'no-cosmetic-filtering': 4, - 'no-remote-fonts': 6, - 'no-large-media': 8, - 'no-csp-reports': 10, - 'no-scripting': 12, -}); - -const switchStateToNameMap = Object.create(null); -Object.assign(switchStateToNameMap, { - '1': 'true', - '2': 'false', -}); - -const nameToSwitchStateMap = Object.create(null); -Object.assign(nameToSwitchStateMap, { - 'true': 1, - 'false': 2, - 'on': 1, - 'off': 2, -}); - -/******************************************************************************/ - -// For performance purpose, as simple test as possible -const reNotASCII = /[^\x20-\x7F]/; - -// http://tools.ietf.org/html/rfc5952 -// 4.3: "MUST be represented in lowercase" -// Also: http://en.wikipedia.org/wiki/IPv6_address#Literal_IPv6_addresses_in_network_resource_identifiers - -/******************************************************************************/ - -class DynamicSwitchRuleFiltering { - constructor() { - this.reset(); - } - - reset() { - this.switches = new Map(); - this.n = ''; - this.z = ''; - this.r = 0; - this.changed = true; - } - - assign(from) { - // Remove rules not in other - for ( const hn of this.switches.keys() ) { - if ( from.switches.has(hn) === false ) { - this.switches.delete(hn); - this.changed = true; - } - } - // Add/change rules in other - for ( const [hn, bits] of from.switches ) { - if ( this.switches.get(hn) !== bits ) { - this.switches.set(hn, bits); - this.changed = true; - } - } - } - - copyRules(from, srcHostname) { - const thisBits = this.switches.get(srcHostname); - const fromBits = from.switches.get(srcHostname); - if ( fromBits !== thisBits ) { - if ( fromBits !== undefined ) { - this.switches.set(srcHostname, fromBits); - } else { - this.switches.delete(srcHostname); - } - this.changed = true; - } - return this.changed; - } - - hasSameRules(other, srcHostname) { - return this.switches.get(srcHostname) === other.switches.get(srcHostname); - } - - toggle(switchName, hostname, newVal) { - const bitOffset = switchBitOffsets[switchName]; - if ( bitOffset === undefined ) { return false; } - if ( newVal === this.evaluate(switchName, hostname) ) { return false; } - let bits = this.switches.get(hostname) || 0; - bits &= ~(3 << bitOffset); - bits |= newVal << bitOffset; - if ( bits === 0 ) { - this.switches.delete(hostname); - } else { - this.switches.set(hostname, bits); - } - this.changed = true; - return true; - } - - toggleOneZ(switchName, hostname, newState) { - const bitOffset = switchBitOffsets[switchName]; - if ( bitOffset === undefined ) { return false; } - let state = this.evaluateZ(switchName, hostname); - if ( newState === state ) { return false; } - if ( newState === undefined ) { - newState = !state; - } - let bits = this.switches.get(hostname) || 0; - bits &= ~(3 << bitOffset); - if ( bits === 0 ) { - this.switches.delete(hostname); - } else { - this.switches.set(hostname, bits); - } - state = this.evaluateZ(switchName, hostname); - if ( state !== newState ) { - this.switches.set(hostname, bits | ((newState ? 1 : 2) << bitOffset)); - } - this.changed = true; - return true; - } - - toggleBranchZ(switchName, targetHostname, newState) { - this.toggleOneZ(switchName, targetHostname, newState); - - // Turn off all descendant switches, they will inherit the state of the - // branch's origin. - const targetLen = targetHostname.length; - for ( const hostname of this.switches.keys() ) { - if ( hostname === targetHostname ) { continue; } - if ( hostname.length <= targetLen ) { continue; } - if ( hostname.endsWith(targetHostname) === false ) { continue; } - if ( hostname.charAt(hostname.length - targetLen - 1) !== '.' ) { - continue; - } - this.toggle(switchName, hostname, 0); - } - - return this.changed; - } - - toggleZ(switchName, hostname, deep, newState) { - if ( deep === true ) { - return this.toggleBranchZ(switchName, hostname, newState); - } - return this.toggleOneZ(switchName, hostname, newState); - } - - // 0 = inherit from broader scope, up to default state - // 1 = non-default state - // 2 = forced default state (to override a broader non-default state) - - evaluate(switchName, hostname) { - const bits = this.switches.get(hostname); - if ( bits === undefined ) { return 0; } - let bitOffset = switchBitOffsets[switchName]; - if ( bitOffset === undefined ) { return 0; } - return (bits >>> bitOffset) & 3; - } - - evaluateZ(switchName, hostname) { - const bitOffset = switchBitOffsets[switchName]; - if ( bitOffset === undefined ) { - this.r = 0; - return false; - } - this.n = switchName; - for ( const shn of decomposeHostname(hostname, decomposedSource) ) { - let bits = this.switches.get(shn); - if ( bits === undefined ) { continue; } - bits = bits >>> bitOffset & 3; - if ( bits === 0 ) { continue; } - this.z = shn; - this.r = bits; - return bits === 1; - } - this.r = 0; - return false; - } - - toLogData() { - return { - source: 'switch', - result: this.r, - raw: `${this.n}: ${this.z} true` - }; - } - - toArray() { - const out = []; - for ( const hostname of this.switches.keys() ) { - const prettyHn = hostname.includes('xn--') && punycode - ? punycode.toUnicode(hostname) - : hostname; - for ( const switchName in switchBitOffsets ) { - if ( switchBitOffsets[switchName] === undefined ) { continue; } - const val = this.evaluate(switchName, hostname); - if ( val === 0 ) { continue; } - out.push(`${switchName}: ${prettyHn} ${switchStateToNameMap[val]}`); - } - } - return out; - } - - toString() { - return this.toArray().join('\n'); - } - - fromString(text, append) { - const lineIter = new LineIterator(text); - if ( append !== true ) { this.reset(); } - while ( lineIter.eot() === false ) { - this.addFromRuleParts(lineIter.next().trim().split(/\s+/)); - } - } - - validateRuleParts(parts) { - if ( parts.length < 3 ) { return; } - if ( parts[0].endsWith(':') === false ) { return; } - if ( nameToSwitchStateMap[parts[2]] === undefined ) { return; } - if ( reNotASCII.test(parts[1]) && punycode !== undefined ) { - parts[1] = punycode.toASCII(parts[1]); - } - return parts; - } - - addFromRuleParts(parts) { - if ( this.validateRuleParts(parts) === undefined ) { return false; } - const switchName = parts[0].slice(0, -1); - if ( switchBitOffsets[switchName] === undefined ) { return false; } - this.toggle(switchName, parts[1], nameToSwitchStateMap[parts[2]]); - return true; - } - - removeFromRuleParts(parts) { - if ( this.validateRuleParts(parts) !== undefined ) { - this.toggle(parts[0].slice(0, -1), parts[1], 0); - return true; - } - return false; - } -} - -/******************************************************************************/ - -export default DynamicSwitchRuleFiltering; - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/hntrie.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/hntrie.js deleted file mode 100644 index 4f89a99..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/hntrie.js +++ /dev/null @@ -1,771 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2017-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/******************************************************************************* - - The original prototype was to develop an idea I had about using jump indices - in a TypedArray for quickly matching hostnames (or more generally strings)[1]. - Once I had a working, un-optimized prototype, I realized I had ended up - with something formally named a "trie": , - hence the name. I have no idea whether the implementation here or one - resembling it has been done elsewhere. - - "HN" in HNTrieContainer stands for "HostName", because the trie is - specialized to deal with matching hostnames -- which is a bit more - complicated than matching plain strings. - - For example, `www.abc.com` is deemed matching `abc.com`, because the former - is a subdomain of the latter. The opposite is of course not true. - - The resulting read-only tries created as a result of using HNTrieContainer - are simply just typed arrays filled with integers. The matching algorithm is - just a matter of reading/comparing these integers, and further using them as - indices in the array as a way to move around in the trie. - - [1] To solve - - Since this trie is specialized for matching hostnames, the stored - strings are reversed internally, because of hostname comparison logic: - - Correct matching: - index 0123456 - abc.com - | - www.abc.com - index 01234567890 - - Incorrect matching (typically used for plain strings): - index 0123456 - abc.com - | - www.abc.com - index 01234567890 - - ------------------------------------------------------------------------------ - - 1st iteration: - - https://github.com/gorhill/uBlock/blob/ff58107dac3a32607f8113e39ed5015584506813/src/js/hntrie.js - - Suitable for small to medium set of hostnames - - One buffer per trie - - 2nd iteration: goal was to make matches() method wasm-able - - https://github.com/gorhill/uBlock/blob/c3b0fd31f64bd7ffecdd282fb1208fe07aac3eb0/src/js/hntrie.js - - Suitable for small to medium set of hostnames - - Distinct tries all share same buffer: - - Reduced memory footprint - - https://stackoverflow.com/questions/45803829/memory-overhead-of-typed-arrays-vs-strings/45808835#45808835 - - Reusing needle character lookups for all tries - - This significantly reduce the number of String.charCodeAt() calls - - Slightly improved creation time - - This is the 3rd iteration: goal was to make add() method wasm-able and - further improve memory/CPU efficiency. - - This 3rd iteration has the following new traits: - - Suitable for small to large set of hostnames - - Support multiple trie containers (instanciable) - - Designed to hold large number of hostnames - - Hostnames can be added at any time (instead of all at once) - - This means pre-sorting is no longer a requirement - - The trie is always compact - - There is no longer a need for a `vacuum` method - - This makes the add() method wasm-able - - It can return the exact hostname which caused the match - - serializable/unserializable available for fast loading - - Distinct trie reference support the iteration protocol, thus allowing - to extract all the hostnames in the trie - - Its primary purpose is to replace the use of Set() as a mean to hold - large number of hostnames (ex. FilterHostnameDict in static filtering - engine). - - A HNTrieContainer is mostly a large buffer in which distinct but related - tries are stored. The memory layout of the buffer is as follow: - - 0-254: needle being processed - 255: length of needle - 256-259: offset to start of trie data section (=> trie0) - 260-263: offset to end of trie data section (=> trie1) - 264-267: offset to start of character data section (=> char0) - 268-271: offset to end of character data section (=> char1) - 272: start of trie data section - -*/ - -const PAGE_SIZE = 65536; -// i32 / i8 -const TRIE0_SLOT = 256 >>> 2; // 64 / 256 -const TRIE1_SLOT = TRIE0_SLOT + 1; // 65 / 260 -const CHAR0_SLOT = TRIE0_SLOT + 2; // 66 / 264 -const CHAR1_SLOT = TRIE0_SLOT + 3; // 67 / 268 -const TRIE0_START = TRIE0_SLOT + 4 << 2; // 272 - -const roundToPageSize = v => (v + PAGE_SIZE-1) & ~(PAGE_SIZE-1); - -// http://www.cse.yorku.ca/~oz/hash.html#djb2 -const i32Checksum = (buf32) => { - const n = buf32.length; - let hash = 177573 ^ n; - for ( let i = 0; i < n; i++ ) { - hash = (hash << 5) + hash ^ buf32[i]; - } - return hash; -}; - -class HNTrieContainer { - - constructor() { - const len = PAGE_SIZE * 2; - this.buf = new Uint8Array(len); - this.buf32 = new Uint32Array(this.buf.buffer); - this.needle = ''; - this.buf32[TRIE0_SLOT] = TRIE0_START; - this.buf32[TRIE1_SLOT] = this.buf32[TRIE0_SLOT]; - this.buf32[CHAR0_SLOT] = len >>> 1; - this.buf32[CHAR1_SLOT] = this.buf32[CHAR0_SLOT]; - this.wasmMemory = null; - - this.lastStored = ''; - this.lastStoredLen = this.lastStoredIndex = 0; - } - - //-------------------------------------------------------------------------- - // Public methods - //-------------------------------------------------------------------------- - - reset(details) { - if ( - details instanceof Object && - typeof details.byteLength === 'number' && - typeof details.char0 === 'number' - ) { - if ( details.byteLength > this.buf.byteLength ) { - this.reallocateBuf(details.byteLength); - } - this.buf32[CHAR0_SLOT] = details.char0; - } - this.buf32[TRIE1_SLOT] = this.buf32[TRIE0_SLOT]; - this.buf32[CHAR1_SLOT] = this.buf32[CHAR0_SLOT]; - - this.lastStored = ''; - this.lastStoredLen = this.lastStoredIndex = 0; - } - - setNeedle(needle) { - if ( needle !== this.needle ) { - const buf = this.buf; - let i = needle.length; - if ( i > 255 ) { i = 255; } - buf[255] = i; - while ( i-- ) { - buf[i] = needle.charCodeAt(i); - } - this.needle = needle; - } - return this; - } - - matchesJS(iroot) { - const buf32 = this.buf32; - const buf8 = this.buf; - const char0 = buf32[CHAR0_SLOT]; - let ineedle = buf8[255]; - let icell = buf32[iroot+0]; - if ( icell === 0 ) { return -1; } - let c = 0, v = 0, i0 = 0, n = 0; - for (;;) { - if ( ineedle === 0 ) { return -1; } - ineedle -= 1; - c = buf8[ineedle]; - // find first segment with a first-character match - for (;;) { - v = buf32[icell+2]; - i0 = char0 + (v >>> 8); - if ( buf8[i0] === c ) { break; } - icell = buf32[icell+0]; - if ( icell === 0 ) { return -1; } - } - // all characters in segment must match - n = v & 0x7F; - if ( n > 1 ) { - n -= 1; - if ( n > ineedle ) { return -1; } - i0 += 1; - const i1 = i0 + n; - do { - ineedle -= 1; - if ( buf8[i0] !== buf8[ineedle] ) { return -1; } - i0 += 1; - } while ( i0 < i1 ); - } - // boundary at end of segment? - if ( (v & 0x80) !== 0 ) { - if ( ineedle === 0 || buf8[ineedle-1] === 0x2E /* '.' */ ) { - return ineedle; - } - } - // next segment - icell = buf32[icell+1]; - if ( icell === 0 ) { break; } - } - return -1; - } - - createTrie() { - // grow buffer if needed - if ( (this.buf32[CHAR0_SLOT] - this.buf32[TRIE1_SLOT]) < 12 ) { - this.growBuf(12, 0); - } - const iroot = this.buf32[TRIE1_SLOT] >>> 2; - this.buf32[TRIE1_SLOT] += 12; - this.buf32[iroot+0] = 0; - this.buf32[iroot+1] = 0; - this.buf32[iroot+2] = 0; - return iroot; - } - - createTrieFromIterable(hostnames) { - const itrie = this.createTrie(); - for ( const hn of hostnames ) { - if ( hn === '' ) { continue; } - this.setNeedle(hn).add(itrie); - } - return itrie; - } - - createTrieFromStoredDomainOpt(i, n) { - const itrie = this.createTrie(); - const jend = i + n; - let j = i, offset = 0, k = 0, c = 0; - while ( j !== jend ) { - offset = this.buf32[CHAR0_SLOT]; // Important - k = 0; - for (;;) { - if ( j === jend ) { break; } - c = this.buf[offset+j]; - j += 1; - if ( c === 0x7C /* '|' */ ) { break; } - if ( k === 255 ) { continue; } - this.buf[k] = c; - k += 1; - } - if ( k !== 0 ) { - this.buf[255] = k; - this.add(itrie); - } - } - this.needle = ''; // Important - this.buf[255] = 0; // Important - return itrie; - } - - dumpTrie(iroot) { - let hostnames = Array.from(this.trieIterator(iroot)); - if ( String.prototype.padStart instanceof Function ) { - const maxlen = Math.min( - hostnames.reduce((maxlen, hn) => Math.max(maxlen, hn.length), 0), - 64 - ); - hostnames = hostnames.map(hn => hn.padStart(maxlen)); - } - for ( const hn of hostnames ) { - console.log(hn); - } - } - - trieIterator(iroot) { - return { - value: undefined, - done: false, - next() { - if ( this.icell === 0 ) { - if ( this.forks.length === 0 ) { - this.value = undefined; - this.done = true; - return this; - } - this.charPtr = this.forks.pop(); - this.icell = this.forks.pop(); - } - for (;;) { - const idown = this.container.buf32[this.icell+0]; - if ( idown !== 0 ) { - this.forks.push(idown, this.charPtr); - } - const v = this.container.buf32[this.icell+2]; - let i0 = this.container.buf32[CHAR0_SLOT] + (v >>> 8); - const i1 = i0 + (v & 0x7F); - while ( i0 < i1 ) { - this.charPtr -= 1; - this.charBuf[this.charPtr] = this.container.buf[i0]; - i0 += 1; - } - this.icell = this.container.buf32[this.icell+1]; - if ( (v & 0x80) !== 0 ) { - return this.toHostname(); - } - } - }, - toHostname() { - this.value = this.textDecoder.decode( - new Uint8Array(this.charBuf.buffer, this.charPtr) - ); - return this; - }, - container: this, - icell: this.buf32[iroot], - charBuf: new Uint8Array(256), - charPtr: 256, - forks: [], - textDecoder: new TextDecoder(), - [Symbol.iterator]() { return this; }, - }; - } - - // TODO: - // Rework code to add from a string already present in the character - // buffer, i.e. not having to go through setNeedle() when adding a new - // hostname to a trie. This will require much work though, and probably - // changing the order in which string segments are stored in the - // character buffer. - addJS(iroot) { - let lhnchar = this.buf[255]; - if ( lhnchar === 0 ) { return 0; } - // grow buffer if needed - if ( - (this.buf32[CHAR0_SLOT] - this.buf32[TRIE1_SLOT]) < 24 || - (this.buf.length - this.buf32[CHAR1_SLOT]) < 256 - ) { - this.growBuf(24, 256); - } - let icell = this.buf32[iroot+0]; - // special case: first node in trie - if ( icell === 0 ) { - this.buf32[iroot+0] = this.addLeafCell(lhnchar); - return 1; - } - // - const char0 = this.buf32[CHAR0_SLOT]; - let isegchar, lsegchar, boundaryBit, inext; - // find a matching cell: move down - for (;;) { - const v = this.buf32[icell+2]; - let isegchar0 = char0 + (v >>> 8); - // if first character is no match, move to next descendant - if ( this.buf[isegchar0] !== this.buf[lhnchar-1] ) { - inext = this.buf32[icell+0]; - if ( inext === 0 ) { - this.buf32[icell+0] = this.addLeafCell(lhnchar); - return 1; - } - icell = inext; - continue; - } - // 1st character was tested - isegchar = 1; - lhnchar -= 1; - // find 1st mismatch in rest of segment - lsegchar = v & 0x7F; - if ( lsegchar !== 1 ) { - for (;;) { - if ( isegchar === lsegchar ) { break; } - if ( lhnchar === 0 ) { break; } - if ( this.buf[isegchar0+isegchar] !== this.buf[lhnchar-1] ) { break; } - isegchar += 1; - lhnchar -= 1; - } - } - boundaryBit = v & 0x80; - // all segment characters matched - if ( isegchar === lsegchar ) { - // needle remainder: no - if ( lhnchar === 0 ) { - // boundary: yes, already present - if ( boundaryBit !== 0 ) { return 0; } - // boundary: no, mark as boundary - this.buf32[icell+2] = v | 0x80; - } - // needle remainder: yes - else { - // remainder is at label boundary? if yes, no need to add - // the rest since the shortest match is always reported - if ( boundaryBit !== 0 ) { - if ( this.buf[lhnchar-1] === 0x2E /* '.' */ ) { return -1; } - } - inext = this.buf32[icell+1]; - if ( inext !== 0 ) { - icell = inext; - continue; - } - // add needle remainder - this.buf32[icell+1] = this.addLeafCell(lhnchar); - } - } - // some segment characters matched - else { - // split current cell - isegchar0 -= char0; - this.buf32[icell+2] = isegchar0 << 8 | isegchar; - inext = this.addCell( - 0, - this.buf32[icell+1], - isegchar0 + isegchar << 8 | boundaryBit | lsegchar - isegchar - ); - this.buf32[icell+1] = inext; - // needle remainder: yes, need new cell for remaining characters - if ( lhnchar !== 0 ) { - this.buf32[inext+0] = this.addLeafCell(lhnchar); - } - // needle remainder: no, need boundary cell - else { - this.buf32[icell+2] |= 0x80; - } - } - return 1; - } - } - - optimize() { - this.shrinkBuf(); - return { - byteLength: this.buf.byteLength, - char0: this.buf32[CHAR0_SLOT], - }; - } - - toSelfie() { - const buf32 = this.buf32.subarray(0, this.buf32[CHAR1_SLOT] + 3 >>> 2); - return { buf32, checksum: i32Checksum(buf32) }; - } - - fromSelfie(selfie) { - if ( selfie instanceof Object === false ) { return false; } - if ( selfie.buf32 instanceof Uint32Array === false ) { return false; } - if ( selfie.checksum !== i32Checksum(selfie.buf32) ) { return false; } - this.needle = ''; - let byteLength = selfie.buf32.length << 2; - if ( byteLength === 0 ) { return false; } - byteLength = roundToPageSize(byteLength); - if ( this.wasmMemory !== null ) { - const pageCountBefore = this.buf.length >>> 16; - const pageCountAfter = byteLength >>> 16; - if ( pageCountAfter > pageCountBefore ) { - this.wasmMemory.grow(pageCountAfter - pageCountBefore); - this.buf = new Uint8Array(this.wasmMemory.buffer); - this.buf32 = new Uint32Array(this.buf.buffer); - } - this.buf32.set(selfie.buf32); - } else { - this.buf32 = selfie.buf32; - this.buf = new Uint8Array(this.buf32.buffer); - } - // https://github.com/uBlockOrigin/uBlock-issues/issues/2925 - this.buf[255] = 0; - return true; - } - - // The following *Hostname() methods can be used to store hostname strings - // outside the trie. This is useful to store/match hostnames which are - // not part of a collection, and yet still benefit from storing the strings - // into a trie container's character buffer. - // TODO: WASM version of matchesHostname() - - storeHostname(hn) { - let n = hn.length; - if ( n > 255 ) { - hn = hn.slice(-255); - n = 255; - } - if ( n === this.lastStoredLen && hn === this.lastStored ) { - return this.lastStoredIndex; - } - this.lastStored = hn; - this.lastStoredLen = n; - if ( (this.buf.length - this.buf32[CHAR1_SLOT]) < n ) { - this.growBuf(0, n); - } - const offset = this.buf32[CHAR1_SLOT]; - this.buf32[CHAR1_SLOT] = offset + n; - const buf8 = this.buf; - for ( let i = 0; i < n; i++ ) { - buf8[offset+i] = hn.charCodeAt(i); - } - return (this.lastStoredIndex = offset - this.buf32[CHAR0_SLOT]); - } - - extractHostname(i, n) { - const textDecoder = new TextDecoder(); - const offset = this.buf32[CHAR0_SLOT] + i; - return textDecoder.decode(this.buf.subarray(offset, offset + n)); - } - - storeDomainOpt(s) { - let n = s.length; - if ( n === this.lastStoredLen && s === this.lastStored ) { - return this.lastStoredIndex; - } - this.lastStored = s; - this.lastStoredLen = n; - if ( (this.buf.length - this.buf32[CHAR1_SLOT]) < n ) { - this.growBuf(0, n); - } - const offset = this.buf32[CHAR1_SLOT]; - this.buf32[CHAR1_SLOT] = offset + n; - const buf8 = this.buf; - for ( let i = 0; i < n; i++ ) { - buf8[offset+i] = s.charCodeAt(i); - } - return (this.lastStoredIndex = offset - this.buf32[CHAR0_SLOT]); - } - - extractDomainOpt(i, n) { - const textDecoder = new TextDecoder(); - const offset = this.buf32[CHAR0_SLOT] + i; - return textDecoder.decode(this.buf.subarray(offset, offset + n)); - } - - matchesHostname(hn, i, n) { - this.setNeedle(hn); - const buf8 = this.buf; - const hr = buf8[255]; - if ( n > hr ) { return false; } - const hl = hr - n; - const nl = this.buf32[CHAR0_SLOT] + i; - for ( let j = 0; j < n; j++ ) { - if ( buf8[nl+j] !== buf8[hl+j] ) { return false; } - } - return n === hr || hn.charCodeAt(hl-1) === 0x2E /* '.' */; - } - - async enableWASM(wasmModuleFetcher, path) { - if ( typeof WebAssembly === 'undefined' ) { return false; } - if ( this.wasmMemory instanceof WebAssembly.Memory ) { return true; } - const module = await getWasmModule(wasmModuleFetcher, path); - if ( module instanceof WebAssembly.Module === false ) { return false; } - const memory = new WebAssembly.Memory({ initial: 2 }); - const instance = await WebAssembly.instantiate(module, { - imports: { - memory, - growBuf: this.growBuf.bind(this, 24, 256) - } - }); - if ( instance instanceof WebAssembly.Instance === false ) { return false; } - this.wasmMemory = memory; - const curPageCount = memory.buffer.byteLength >>> 16; - const newPageCount = roundToPageSize(this.buf.byteLength) >>> 16; - if ( newPageCount > curPageCount ) { - memory.grow(newPageCount - curPageCount); - } - const buf = new Uint8Array(memory.buffer); - buf.set(this.buf); - this.buf = buf; - this.buf32 = new Uint32Array(this.buf.buffer); - this.matches = this.matchesWASM = instance.exports.matches; - this.add = this.addWASM = instance.exports.add; - return true; - } - - dumpInfo() { - return [ - `Buffer size (Uint8Array): ${this.buf32[CHAR1_SLOT].toLocaleString('en')}`, - `WASM: ${this.wasmMemory === null ? 'disabled' : 'enabled'}`, - ].join('\n'); - } - - //-------------------------------------------------------------------------- - // Private methods - //-------------------------------------------------------------------------- - - addCell(idown, iright, v) { - let icell = this.buf32[TRIE1_SLOT]; - this.buf32[TRIE1_SLOT] = icell + 12; - icell >>>= 2; - this.buf32[icell+0] = idown; - this.buf32[icell+1] = iright; - this.buf32[icell+2] = v; - return icell; - } - - addLeafCell(lsegchar) { - const r = this.buf32[TRIE1_SLOT] >>> 2; - let i = r; - while ( lsegchar > 127 ) { - this.buf32[i+0] = 0; - this.buf32[i+1] = i + 3; - this.buf32[i+2] = this.addSegment(lsegchar, lsegchar - 127); - lsegchar -= 127; - i += 3; - } - this.buf32[i+0] = 0; - this.buf32[i+1] = 0; - this.buf32[i+2] = this.addSegment(lsegchar, 0) | 0x80; - this.buf32[TRIE1_SLOT] = i + 3 << 2; - return r; - } - - addSegment(lsegchar, lsegend) { - if ( lsegchar === 0 ) { return 0; } - let char1 = this.buf32[CHAR1_SLOT]; - const isegchar = char1 - this.buf32[CHAR0_SLOT]; - let i = lsegchar; - do { - this.buf[char1++] = this.buf[--i]; - } while ( i !== lsegend ); - this.buf32[CHAR1_SLOT] = char1; - return isegchar << 8 | lsegchar - lsegend; - } - - growBuf(trieGrow, charGrow) { - const char0 = Math.max( - roundToPageSize(this.buf32[TRIE1_SLOT] + trieGrow), - this.buf32[CHAR0_SLOT] - ); - const char1 = char0 + this.buf32[CHAR1_SLOT] - this.buf32[CHAR0_SLOT]; - const bufLen = Math.max( - roundToPageSize(char1 + charGrow), - this.buf.length - ); - this.resizeBuf(bufLen, char0); - } - - shrinkBuf() { - // Can't shrink WebAssembly.Memory - if ( this.wasmMemory !== null ) { return; } - const char0 = this.buf32[TRIE1_SLOT] + 24; - const char1 = char0 + this.buf32[CHAR1_SLOT] - this.buf32[CHAR0_SLOT]; - const bufLen = char1 + 256; - this.resizeBuf(bufLen, char0); - } - - resizeBuf(bufLen, char0) { - bufLen = roundToPageSize(bufLen); - if ( bufLen === this.buf.length && char0 === this.buf32[CHAR0_SLOT] ) { - return; - } - const charDataLen = this.buf32[CHAR1_SLOT] - this.buf32[CHAR0_SLOT]; - if ( this.wasmMemory !== null ) { - const pageCount = (bufLen >>> 16) - (this.buf.byteLength >>> 16); - if ( pageCount > 0 ) { - this.wasmMemory.grow(pageCount); - this.buf = new Uint8Array(this.wasmMemory.buffer); - this.buf32 = new Uint32Array(this.wasmMemory.buffer); - } - } else if ( bufLen !== this.buf.length ) { - const newBuf = new Uint8Array(bufLen); - newBuf.set( - new Uint8Array( - this.buf.buffer, - 0, - this.buf32[TRIE1_SLOT] - ), - 0 - ); - newBuf.set( - new Uint8Array( - this.buf.buffer, - this.buf32[CHAR0_SLOT], - charDataLen - ), - char0 - ); - this.buf = newBuf; - this.buf32 = new Uint32Array(this.buf.buffer); - this.buf32[CHAR0_SLOT] = char0; - this.buf32[CHAR1_SLOT] = char0 + charDataLen; - } - if ( char0 !== this.buf32[CHAR0_SLOT] ) { - this.buf.set( - new Uint8Array( - this.buf.buffer, - this.buf32[CHAR0_SLOT], - charDataLen - ), - char0 - ); - this.buf32[CHAR0_SLOT] = char0; - this.buf32[CHAR1_SLOT] = char0 + charDataLen; - } - } - - reallocateBuf(newSize) { - newSize = roundToPageSize(newSize); - if ( newSize === this.buf.length ) { return; } - if ( this.wasmMemory === null ) { - const newBuf = new Uint8Array(newSize); - newBuf.set( - newBuf.length < this.buf.length - ? this.buf.subarray(0, newBuf.length) - : this.buf - ); - this.buf = newBuf; - } else { - const growBy = - ((newSize + 0xFFFF) >>> 16) - (this.buf.length >>> 16); - if ( growBy <= 0 ) { return; } - this.wasmMemory.grow(growBy); - this.buf = new Uint8Array(this.wasmMemory.buffer); - } - this.buf32 = new Uint32Array(this.buf.buffer); - } -} - -HNTrieContainer.prototype.matches = HNTrieContainer.prototype.matchesJS; -HNTrieContainer.prototype.matchesWASM = null; - -HNTrieContainer.prototype.add = HNTrieContainer.prototype.addJS; -HNTrieContainer.prototype.addWASM = null; - -/******************************************************************************/ - -// Code below is to attempt to load a WASM module which implements: -// -// - HNTrieContainer.add() -// - HNTrieContainer.matches() -// -// The WASM module is entirely optional, the JS implementations will be -// used should the WASM module be unavailable for whatever reason. - -const getWasmModule = (( ) => { - let wasmModulePromise; - - return async function(wasmModuleFetcher, path) { - if ( wasmModulePromise instanceof Promise ) { - return wasmModulePromise; - } - - // The wasm module will work only if CPU is natively little-endian, - // as we use native uint32 array in our js code. - const uint32s = new Uint32Array(1); - const uint8s = new Uint8Array(uint32s.buffer); - uint32s[0] = 1; - if ( uint8s[0] !== 1 ) { return; } - - wasmModulePromise = wasmModuleFetcher(`${path}hntrie`).catch(reason => { - console.info(reason); - }); - - return wasmModulePromise; - }; -})(); - -/******************************************************************************/ - -export default HNTrieContainer; diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/html-filtering.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/html-filtering.js deleted file mode 100644 index 81d66ee..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/html-filtering.js +++ /dev/null @@ -1,465 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2017-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -import logger from './logger.js'; -import µb from './background.js'; -import { sessionFirewall } from './filtering-engines.js'; -import { StaticExtFilteringHostnameDB } from './static-ext-filtering-db.js'; -import { entityFromDomain } from './uri-utils.js'; - -/******************************************************************************/ - -const pselectors = new Map(); -const duplicates = new Set(); - -const filterDB = new StaticExtFilteringHostnameDB(2); - -let acceptedCount = 0; -let discardedCount = 0; -let docRegister; - -const htmlFilteringEngine = { - get acceptedCount() { - return acceptedCount; - }, - get discardedCount() { - return discardedCount; - }, - getFilterCount() { - return filterDB.size; - }, -}; - -const regexFromString = (s, exact = false) => { - if ( s === '' ) { return /^/; } - const match = /^\/(.+)\/([i]?)$/.exec(s); - if ( match !== null ) { - return new RegExp(match[1], match[2] || undefined); - } - const reStr = s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - return new RegExp(exact ? `^${reStr}$` : reStr, 'i'); -}; - -class PSelectorVoidTask { - constructor(task) { - console.info(`[uBO] HTML filtering: :${task[0]}() operator is not supported`); - } - transpose() { - } -} -class PSelectorHasTextTask { - constructor(task) { - this.needle = regexFromString(task[1]); - } - transpose(node, output) { - if ( this.needle.test(node.textContent) ) { - output.push(node); - } - } -} - -const PSelectorIfTask = class { - constructor(task) { - this.pselector = new PSelector(task[1]); - } - transpose(node, output) { - if ( this.pselector.test(node) === this.target ) { - output.push(node); - } - } -}; -PSelectorIfTask.prototype.target = true; - -class PSelectorIfNotTask extends PSelectorIfTask { -} -PSelectorIfNotTask.prototype.target = false; - -class PSelectorMinTextLengthTask { - constructor(task) { - this.min = task[1]; - } - transpose(node, output) { - if ( node.textContent.length >= this.min ) { - output.push(node); - } - } -} - -class PSelectorSpathTask { - constructor(task) { - this.spath = task[1]; - this.nth = /^(?:\s*[+~]|:)/.test(this.spath); - if ( this.nth ) { return; } - if ( /^\s*>/.test(this.spath) ) { - this.spath = `:scope ${this.spath.trim()}`; - } - } - transpose(node, output) { - const nodes = this.nth - ? PSelectorSpathTask.qsa(node, this.spath) - : node.querySelectorAll(this.spath); - for ( const node of nodes ) { - output.push(node); - } - } - // Helper method for other operators. - static qsa(node, selector) { - const parent = node.parentElement; - if ( parent === null ) { return []; } - let pos = 1; - for (;;) { - node = node.previousElementSibling; - if ( node === null ) { break; } - pos += 1; - } - return parent.querySelectorAll( - `:scope > :nth-child(${pos})${selector}` - ); - } -} - -class PSelectorUpwardTask { - constructor(task) { - const arg = task[1]; - if ( typeof arg === 'number' ) { - this.i = arg; - } else { - this.s = arg; - } - } - transpose(node, output) { - if ( this.s !== '' ) { - const parent = node.parentElement; - if ( parent === null ) { return; } - node = parent.closest(this.s); - if ( node === null ) { return; } - } else { - let nth = this.i; - for (;;) { - node = node.parentElement; - if ( node === null ) { return; } - nth -= 1; - if ( nth === 0 ) { break; } - } - } - output.push(node); - } -} -PSelectorUpwardTask.prototype.i = 0; -PSelectorUpwardTask.prototype.s = ''; - -class PSelectorXpathTask { - constructor(task) { - this.xpe = task[1]; - } - transpose(node, output) { - const xpr = docRegister.evaluate( - this.xpe, - node, - null, - XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, - null - ); - let j = xpr.snapshotLength; - while ( j-- ) { - const node = xpr.snapshotItem(j); - if ( node.nodeType === 1 ) { - output.push(node); - } - } - } -} - -class PSelector { - constructor(o) { - this.raw = o.raw; - this.selector = o.selector; - this.tasks = []; - if ( !o.tasks ) { return; } - for ( const task of o.tasks ) { - const ctor = this.operatorToTaskMap.get(task[0]) || PSelectorVoidTask; - const pselector = new ctor(task); - this.tasks.push(pselector); - } - } - prime(input) { - const root = input || docRegister; - if ( this.selector === '' ) { return [ root ]; } - if ( input !== docRegister && /^ ?[>+~]/.test(this.selector) ) { - return Array.from(PSelectorSpathTask.qsa(input, this.selector)); - } - return Array.from(root.querySelectorAll(this.selector)); - } - exec(input) { - let nodes = this.prime(input); - for ( const task of this.tasks ) { - if ( nodes.length === 0 ) { break; } - const transposed = []; - for ( const node of nodes ) { - task.transpose(node, transposed); - } - nodes = transposed; - } - return nodes; - } - test(input) { - const nodes = this.prime(input); - for ( const node of nodes ) { - let output = [ node ]; - for ( const task of this.tasks ) { - const transposed = []; - for ( const node of output ) { - task.transpose(node, transposed); - } - output = transposed; - if ( output.length === 0 ) { break; } - } - if ( output.length !== 0 ) { return true; } - } - return false; - } -} -PSelector.prototype.operatorToTaskMap = new Map([ - [ 'has', PSelectorIfTask ], - [ 'has-text', PSelectorHasTextTask ], - [ 'if', PSelectorIfTask ], - [ 'if-not', PSelectorIfNotTask ], - [ 'min-text-length', PSelectorMinTextLengthTask ], - [ 'not', PSelectorIfNotTask ], - [ 'nth-ancestor', PSelectorUpwardTask ], - [ 'spath', PSelectorSpathTask ], - [ 'upward', PSelectorUpwardTask ], - [ 'xpath', PSelectorXpathTask ], -]); - -function logOne(details, exception, selector) { - µb.filteringContext - .duplicate() - .fromTabId(details.tabId) - .setRealm('extended') - .setType('dom') - .setURL(details.url) - .setDocOriginFromURL(details.url) - .setFilter({ - source: 'extended', - raw: `${exception === 0 ? '##' : '#@#'}^${selector}` - }) - .toLogger(); -} - -function applyProceduralSelector(details, selector) { - let pselector = pselectors.get(selector); - if ( pselector === undefined ) { - pselector = new PSelector(JSON.parse(selector)); - pselectors.set(selector, pselector); - } - const nodes = pselector.exec(); - let modified = false; - for ( const node of nodes ) { - node.remove(); - modified = true; - } - if ( modified && logger.enabled ) { - logOne(details, 0, pselector.raw); - } - return modified; -} - -function applyCSSSelector(details, selector) { - const nodes = docRegister.querySelectorAll(selector); - let modified = false; - for ( const node of nodes ) { - node.remove(); - modified = true; - } - if ( modified && logger.enabled ) { - logOne(details, 0, selector); - } - return modified; -} - -function logError(writer, msg) { - logger.writeOne({ - realm: 'message', - type: 'error', - text: msg.replace('{who}', writer.properties.get('name') || '?') - }); -} - -htmlFilteringEngine.reset = function() { - filterDB.clear(); - pselectors.clear(); - duplicates.clear(); - acceptedCount = 0; - discardedCount = 0; -}; - -htmlFilteringEngine.freeze = function() { - duplicates.clear(); - filterDB.collectGarbage(); -}; - -htmlFilteringEngine.compile = function(parser, writer) { - const isException = parser.isException(); - const { raw, compiled } = parser.result; - if ( compiled === undefined ) { - return logError(writer, `Invalid HTML filter in {who}: ##${raw}`); - } - - writer.select('HTML_FILTERS'); - - // Only exception filters are allowed to be global. - if ( parser.hasOptions() === false ) { - if ( isException ) { - writer.push([ 64, '', 1, compiled ]); - } - return; - } - - const compiledFilters = []; - let hasOnlyNegated = true; - for ( const { hn, not, bad } of parser.getExtFilterDomainIterator() ) { - if ( bad ) { continue; } - let kind = isException ? 0b01 : 0b00; - if ( not ) { - kind ^= 0b01; - } else { - hasOnlyNegated = false; - } - if ( compiled.charCodeAt(0) === 0x7B /* '{' */ ) { - kind |= 0b10; - } - compiledFilters.push([ 64, hn, kind, compiled ]); - } - - // Not allowed since it's equivalent to forbidden generic HTML filters - if ( isException === false && hasOnlyNegated ) { - return logError(writer, `Invalid HTML filter in {who}: ##${raw}`); - } - - writer.pushMany(compiledFilters); -}; - -htmlFilteringEngine.fromCompiledContent = function(reader) { - // Don't bother loading filters if stream filtering is not supported. - if ( µb.canFilterResponseData === false ) { return; } - - reader.select('HTML_FILTERS'); - - while ( reader.next() ) { - acceptedCount += 1; - const fingerprint = reader.fingerprint(); - if ( duplicates.has(fingerprint) ) { - discardedCount += 1; - continue; - } - duplicates.add(fingerprint); - const args = reader.args(); - filterDB.store(args[1], args[2], args[3]); - } -}; - -htmlFilteringEngine.retrieve = function(fctxt) { - const plains = new Set(); - const procedurals = new Set(); - const exceptions = new Set(); - const retrieveSets = [ plains, exceptions, procedurals, exceptions ]; - - const hostname = fctxt.getHostname(); - filterDB.retrieve(hostname, retrieveSets); - - const domain = fctxt.getDomain(); - const entity = entityFromDomain(domain); - const hostnameEntity = entity !== '' - ? `${hostname.slice(0, -domain.length)}${entity}` - : '*'; - filterDB.retrieve(hostnameEntity, retrieveSets, 1); - - if ( plains.size === 0 && procedurals.size === 0 ) { return; } - - // https://github.com/gorhill/uBlock/issues/2835 - // Do not filter if the site is under an `allow` rule. - if ( - µb.userSettings.advancedUserEnabled && - sessionFirewall.evaluateCellZY(hostname, hostname, '*') === 2 - ) { - return; - } - - const out = { plains, procedurals }; - - if ( exceptions.size === 0 ) { - return out; - } - - for ( const selector of exceptions ) { - if ( plains.has(selector) ) { - plains.delete(selector); - logOne(fctxt, 1, selector); - continue; - } - if ( procedurals.has(selector) ) { - procedurals.delete(selector); - logOne(fctxt, 1, JSON.parse(selector).raw); - continue; - } - } - - if ( plains.size !== 0 || procedurals.size !== 0 ) { - return out; - } -}; - -htmlFilteringEngine.apply = function(doc, details, selectors) { - docRegister = doc; - let modified = false; - for ( const selector of selectors.plains ) { - if ( applyCSSSelector(details, selector) ) { - modified = true; - } - } - for ( const selector of selectors.procedurals ) { - if ( applyProceduralSelector(details, selector) ) { - modified = true; - } - } - docRegister = undefined; - return modified; -}; - -htmlFilteringEngine.toSelfie = function() { - return filterDB.toSelfie(); -}; - -htmlFilteringEngine.fromSelfie = function(selfie) { - filterDB.fromSelfie(selfie); - pselectors.clear(); -}; - -/******************************************************************************/ - -export default htmlFilteringEngine; - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/httpheader-filtering.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/httpheader-filtering.js deleted file mode 100644 index 522ea21..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/httpheader-filtering.js +++ /dev/null @@ -1,213 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2021-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -import logger from './logger.js'; -import µb from './background.js'; -import { entityFromDomain } from './uri-utils.js'; -import { sessionFirewall } from './filtering-engines.js'; -import { StaticExtFilteringHostnameDB } from './static-ext-filtering-db.js'; -import * as sfp from './static-filtering-parser.js'; - -/******************************************************************************/ - -const duplicates = new Set(); -const filterDB = new StaticExtFilteringHostnameDB(1); - -const $headers = new Set(); -const $exceptions = new Set(); - -let acceptedCount = 0; -let discardedCount = 0; - -const headerIndexFromName = function(name, headers, start = 0) { - for ( let i = start; i < headers.length; i++ ) { - if ( headers[i].name.toLowerCase() !== name ) { continue; } - return i; - } - return -1; -}; - -const logOne = function(isException, token, fctxt) { - fctxt.duplicate() - .setRealm('extended') - .setType('header') - .setFilter({ - modifier: true, - result: isException ? 2 : 1, - source: 'extended', - raw: `${(isException ? '#@#' : '##')}^responseheader(${token})` - }) - .toLogger(); -}; - -const httpheaderFilteringEngine = { - get acceptedCount() { - return acceptedCount; - }, - get discardedCount() { - return discardedCount; - } -}; - -httpheaderFilteringEngine.reset = function() { - filterDB.clear(); - duplicates.clear(); - acceptedCount = 0; - discardedCount = 0; -}; - -httpheaderFilteringEngine.freeze = function() { - duplicates.clear(); - filterDB.collectGarbage(); -}; - -httpheaderFilteringEngine.compile = function(parser, writer) { - writer.select('HTTPHEADER_FILTERS'); - - const isException = parser.isException(); - const root = parser.getBranchFromType(sfp.NODE_TYPE_EXT_PATTERN_RESPONSEHEADER); - const headerName = parser.getNodeString(root); - - // Tokenless is meaningful only for exception filters. - if ( headerName === '' && isException === false ) { return; } - - // Only exception filters are allowed to be global. - if ( parser.hasOptions() === false ) { - if ( isException ) { - writer.push([ 64, '', 1, headerName ]); - } - return; - } - - // https://github.com/gorhill/uBlock/issues/3375 - // Ignore instances of exception filter with negated hostnames, - // because there is no way to create an exception to an exception. - - for ( const { hn, not, bad } of parser.getExtFilterDomainIterator() ) { - if ( bad ) { continue; } - let kind = 0; - if ( isException ) { - if ( not ) { continue; } - kind |= 1; - } else if ( not ) { - kind |= 1; - } - writer.push([ 64, hn, kind, headerName ]); - } -}; - -// 01234567890123456789 -// responseheader(name) -// ^ ^ -// 15 -1 - -httpheaderFilteringEngine.fromCompiledContent = function(reader) { - reader.select('HTTPHEADER_FILTERS'); - - while ( reader.next() ) { - acceptedCount += 1; - const fingerprint = reader.fingerprint(); - if ( duplicates.has(fingerprint) ) { - discardedCount += 1; - continue; - } - duplicates.add(fingerprint); - const args = reader.args(); - if ( args.length < 4 ) { continue; } - filterDB.store(args[1], args[2], args[3]); - } -}; - -httpheaderFilteringEngine.apply = function(fctxt, headers) { - if ( filterDB.size === 0 ) { return; } - - const hostname = fctxt.getHostname(); - if ( hostname === '' ) { return; } - - const domain = fctxt.getDomain(); - let entity = entityFromDomain(domain); - if ( entity !== '' ) { - entity = `${hostname.slice(0, -domain.length)}${entity}`; - } else { - entity = '*'; - } - - $headers.clear(); - $exceptions.clear(); - - filterDB.retrieve(hostname, [ $headers, $exceptions ]); - filterDB.retrieve(entity, [ $headers, $exceptions ], 1); - if ( $headers.size === 0 ) { return; } - - // https://github.com/gorhill/uBlock/issues/2835 - // Do not filter response headers if the site is under an `allow` rule. - if ( - µb.userSettings.advancedUserEnabled && - sessionFirewall.evaluateCellZY(hostname, hostname, '*') === 2 - ) { - return; - } - - const hasGlobalException = $exceptions.has(''); - - let modified = false; - let i = 0; - - for ( const name of $headers ) { - const isExcepted = hasGlobalException || $exceptions.has(name); - if ( isExcepted ) { - if ( logger.enabled ) { - logOne(true, hasGlobalException ? '' : name, fctxt); - } - continue; - } - i = 0; - for (;;) { - i = headerIndexFromName(name, headers, i); - if ( i === -1 ) { break; } - headers.splice(i, 1); - if ( logger.enabled ) { - logOne(false, name, fctxt); - } - modified = true; - } - } - - return modified; -}; - -httpheaderFilteringEngine.toSelfie = function() { - return filterDB.toSelfie(); -}; - -httpheaderFilteringEngine.fromSelfie = function(selfie) { - filterDB.fromSelfie(selfie); -}; - -/******************************************************************************/ - -export default httpheaderFilteringEngine; - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/i18n.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/i18n.js deleted file mode 100644 index 18c7e14..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/i18n.js +++ /dev/null @@ -1,342 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -const i18n = - self.browser instanceof Object && - self.browser instanceof Element === false - ? self.browser.i18n - : self.chrome.i18n; - -const i18n$ = (...args) => i18n.getMessage(...args); - -/******************************************************************************/ - -const isBackgroundProcess = document.title === 'uBlock Origin Background Page'; - -if ( isBackgroundProcess !== true ) { - - // http://www.w3.org/International/questions/qa-scripts#directions - document.body.setAttribute( - 'dir', - ['ar', 'he', 'fa', 'ps', 'ur'].indexOf(i18n$('@@ui_locale')) !== -1 - ? 'rtl' - : 'ltr' - ); - - // https://github.com/gorhill/uBlock/issues/2084 - // Anything else than , , , , , and will - // be rendered as plain text. - // For , only href attribute must be present, and it MUST starts with - // `https://`, and includes no single- or double-quotes. - // No HTML entities are allowed, there is code to handle existing HTML - // entities already present in translation files until they are all gone. - - const allowedTags = new Set([ - 'a', - 'b', - 'code', - 'em', - 'i', - 'span', - 'u', - ]); - - const expandHtmlEntities = (( ) => { - const entities = new Map([ - // TODO: Remove quote entities once no longer present in translation - // files. Other entities must stay. - [ '­', '\u00AD' ], - [ '“', '“' ], - [ '”', '”' ], - [ '‘', '‘' ], - [ '’', '’' ], - [ '<', '<' ], - [ '>', '>' ], - ]); - const decodeEntities = match => { - return entities.get(match) || match; - }; - return function(text) { - if ( text.indexOf('&') !== -1 ) { - text = text.replace(/&[a-z]+;/g, decodeEntities); - } - return text; - }; - })(); - - const safeTextToTextNode = function(text) { - return document.createTextNode(expandHtmlEntities(text)); - }; - - const sanitizeElement = function(node) { - if ( allowedTags.has(node.localName) === false ) { return null; } - node.removeAttribute('style'); - let child = node.firstElementChild; - while ( child !== null ) { - const next = child.nextElementSibling; - if ( sanitizeElement(child) === null ) { - child.remove(); - } - child = next; - } - return node; - }; - - const safeTextToDOM = function(text, parent) { - if ( text === '' ) { return; } - - // Fast path (most common). - if ( text.indexOf('<') === -1 ) { - const toInsert = safeTextToTextNode(text); - let toReplace = parent.childCount !== 0 - ? parent.firstChild - : null; - while ( toReplace !== null ) { - if ( toReplace.nodeType === 3 && toReplace.nodeValue === '_' ) { - break; - } - toReplace = toReplace.nextSibling; - } - if ( toReplace !== null ) { - parent.replaceChild(toInsert, toReplace); - } else { - parent.appendChild(toInsert); - } - return; - } - - // Slow path. - // `

` no longer allowed. Code below can be removed once all

's are - // gone from translation files. - text = text.replace(/^

|<\/p>/g, '') - .replace(/

/g, '\n\n'); - // Parse allowed HTML tags. - const domParser = new DOMParser(); - const parsedDoc = domParser.parseFromString(text, 'text/html'); - let node = parsedDoc.body.firstChild; - while ( node !== null ) { - const next = node.nextSibling; - switch ( node.nodeType ) { - case 1: // element - if ( sanitizeElement(node) === null ) { break; } - parent.appendChild(node); - break; - case 3: // text - parent.appendChild(node); - break; - default: - break; - } - node = next; - } - }; - - i18n.safeTemplateToDOM = function(id, dict, parent) { - if ( parent === undefined ) { - parent = document.createDocumentFragment(); - } - let textin = i18n$(id); - if ( textin === '' ) { - return parent; - } - if ( textin.indexOf('{{') === -1 ) { - safeTextToDOM(textin, parent); - return parent; - } - const re = /\{\{\w+\}\}/g; - let textout = ''; - for (;;) { - let match = re.exec(textin); - if ( match === null ) { - textout += textin; - break; - } - textout += textin.slice(0, match.index); - let prop = match[0].slice(2, -2); - if ( dict.hasOwnProperty(prop) ) { - textout += dict[prop].replace(//g, '>'); - } else { - textout += prop; - } - textin = textin.slice(re.lastIndex); - } - safeTextToDOM(textout, parent); - return parent; - }; - - // Helper to deal with the i18n'ing of HTML files. - i18n.render = function(context) { - const docu = document; - const root = context || docu; - - for ( const elem of root.querySelectorAll('[data-i18n]') ) { - let text = i18n$(elem.getAttribute('data-i18n')); - if ( !text ) { continue; } - if ( text.indexOf('{{') === -1 ) { - safeTextToDOM(text, elem); - continue; - } - // Handle selector-based placeholders: these placeholders tell where - // existing child DOM element are to be positioned relative to the - // localized text nodes. - const parts = text.split(/(\{\{[^}]+\}\})/); - const fragment = document.createDocumentFragment(); - let textBefore = ''; - for ( let part of parts ) { - if ( part === '' ) { continue; } - if ( part.startsWith('{{') && part.endsWith('}}') ) { - // TODO: remove detection of ':' once it no longer appears - // in translation files. - const pos = part.indexOf(':'); - if ( pos !== -1 ) { - part = part.slice(0, pos) + part.slice(-2); - } - const selector = part.slice(2, -2); - let node; - // Ideally, the i18n strings explicitly refer to the - // class of the element to insert. However for now we - // will create a class from what is currently found in - // the placeholder and first try to lookup the resulting - // selector. This way we don't have to revisit all - // translations just for the sake of declaring the proper - // selector in the placeholder field. - if ( selector.charCodeAt(0) !== 0x2E /* '.' */ ) { - node = elem.querySelector(`.${selector}`); - } - if ( node instanceof Element === false ) { - node = elem.querySelector(selector); - } - if ( node instanceof Element ) { - safeTextToDOM(textBefore, fragment); - fragment.appendChild(node); - textBefore = ''; - continue; - } - } - textBefore += part; - } - if ( textBefore !== '' ) { - safeTextToDOM(textBefore, fragment); - } - elem.appendChild(fragment); - } - - for ( const elem of root.querySelectorAll('[data-i18n-title]') ) { - const text = i18n$(elem.getAttribute('data-i18n-title')); - if ( !text ) { continue; } - elem.setAttribute('title', expandHtmlEntities(text)); - } - - for ( const elem of root.querySelectorAll('[placeholder]') ) { - const text = i18n$(elem.getAttribute('placeholder')); - if ( text === '' ) { continue; } - elem.setAttribute('placeholder', text); - } - - for ( const elem of root.querySelectorAll('[data-i18n-tip]') ) { - const text = i18n$(elem.getAttribute('data-i18n-tip')) - .replace(/
/g, '\n') - .replace(/\n{3,}/g, '\n\n'); - elem.setAttribute('data-tip', text); - if ( elem.getAttribute('aria-label') === 'data-tip' ) { - elem.setAttribute('aria-label', text); - } - } - }; - - i18n.renderElapsedTimeToString = function(tstamp) { - let value = (Date.now() - tstamp) / 60000; - if ( value < 2 ) { - return i18n$('elapsedOneMinuteAgo'); - } - if ( value < 60 ) { - return i18n$('elapsedManyMinutesAgo').replace('{{value}}', Math.floor(value).toLocaleString()); - } - value /= 60; - if ( value < 2 ) { - return i18n$('elapsedOneHourAgo'); - } - if ( value < 24 ) { - return i18n$('elapsedManyHoursAgo').replace('{{value}}', Math.floor(value).toLocaleString()); - } - value /= 24; - if ( value < 2 ) { - return i18n$('elapsedOneDayAgo'); - } - return i18n$('elapsedManyDaysAgo').replace('{{value}}', Math.floor(value).toLocaleString()); - }; - - const unicodeFlagToImageSrc = new Map([ - [ '🇦🇱', 'al' ], [ '🇦🇷', 'ar' ], [ '🇦🇹', 'at' ], [ '🇧🇦', 'ba' ], - [ '🇧🇪', 'be' ], [ '🇧🇬', 'bg' ], [ '🇧🇷', 'br' ], [ '🇨🇦', 'ca' ], - [ '🇨🇭', 'ch' ], [ '🇨🇳', 'cn' ], [ '🇨🇴', 'co' ], [ '🇨🇾', 'cy' ], - [ '🇨🇿', 'cz' ], [ '🇩🇪', 'de' ], [ '🇩🇰', 'dk' ], [ '🇩🇿', 'dz' ], - [ '🇪🇪', 'ee' ], [ '🇪🇬', 'eg' ], [ '🇪🇸', 'es' ], [ '🇫🇮', 'fi' ], - [ '🇫🇴', 'fo' ], [ '🇫🇷', 'fr' ], [ '🇬🇷', 'gr' ], [ '🇭🇷', 'hr' ], - [ '🇭🇺', 'hu' ], [ '🇮🇩', 'id' ], [ '🇮🇱', 'il' ], [ '🇮🇳', 'in' ], - [ '🇮🇷', 'ir' ], [ '🇮🇸', 'is' ], [ '🇮🇹', 'it' ], [ '🇯🇵', 'jp' ], - [ '🇰🇷', 'kr' ], [ '🇰🇿', 'kz' ], [ '🇱🇰', 'lk' ], [ '🇱🇹', 'lt' ], - [ '🇱🇻', 'lv' ], [ '🇲🇦', 'ma' ], [ '🇲🇩', 'md' ], [ '🇲🇰', 'mk' ], - [ '🇲🇽', 'mx' ], [ '🇲🇾', 'my' ], [ '🇳🇱', 'nl' ], [ '🇳🇴', 'no' ], - [ '🇳🇵', 'np' ], [ '🇵🇱', 'pl' ], [ '🇵🇹', 'pt' ], [ '🇷🇴', 'ro' ], - [ '🇷🇸', 'rs' ], [ '🇷🇺', 'ru' ], [ '🇸🇦', 'sa' ], [ '🇸🇮', 'si' ], - [ '🇸🇰', 'sk' ], [ '🇸🇪', 'se' ], [ '🇸🇷', 'sr' ], [ '🇹🇭', 'th' ], - [ '🇹🇯', 'tj' ], [ '🇹🇼', 'tw' ], [ '🇹🇷', 'tr' ], [ '🇺🇦', 'ua' ], - [ '🇺🇿', 'uz' ], [ '🇻🇳', 'vn' ], [ '🇽🇰', 'xk' ], - ]); - const reUnicodeFlags = new RegExp( - Array.from(unicodeFlagToImageSrc).map(a => a[0]).join('|'), - 'gu' - ); - i18n.patchUnicodeFlags = function(text) { - const fragment = document.createDocumentFragment(); - let i = 0; - for (;;) { - const match = reUnicodeFlags.exec(text); - if ( match === null ) { break; } - if ( match.index > i ) { - fragment.append(text.slice(i, match.index)); - } - const img = document.createElement('img'); - const countryCode = unicodeFlagToImageSrc.get(match[0]); - img.src = `/img/flags-of-the-world/${countryCode}.png`; - img.title = countryCode; - img.classList.add('countryFlag'); - fragment.append(img, '\u200A'); - i = reUnicodeFlags.lastIndex; - } - if ( i < text.length ) { - fragment.append(text.slice(i)); - } - return fragment; - }; - - i18n.render(); -} - -/******************************************************************************/ - -export { i18n, i18n$ }; diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/is-webrtc-supported.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/is-webrtc-supported.js deleted file mode 100644 index 8841370..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/is-webrtc-supported.js +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -// https://github.com/gorhill/uBlock/issues/533#issuecomment-164292868 -// If WebRTC is supported, there won't be an exception if we -// try to instantiate a peer connection object. - -// https://github.com/gorhill/uBlock/issues/533#issuecomment-168097594 -// Because Chromium leaks WebRTC connections after they have been closed -// and forgotten, we need to test for WebRTC support inside an iframe, this -// way the closed and forgottetn WebRTC connections are properly garbage -// collected. - -(function() { - 'use strict'; - - var pc = null; - try { - var PC = self.RTCPeerConnection || self.webkitRTCPeerConnection; - if ( PC ) { - pc = new PC(null); - } - } catch (ex) { - console.error(ex); - } - if ( pc !== null ) { - pc.close(); - } - - window.top.postMessage( - pc !== null ? 'webRTCSupported' : 'webRTCNotSupported', - window.location.origin - ); -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/logger-ui-inspector.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/logger-ui-inspector.js deleted file mode 100644 index d90d44a..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/logger-ui-inspector.js +++ /dev/null @@ -1,703 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -import { dom, qs$, qsa$ } from './dom.js'; - -/******************************************************************************/ - -(( ) => { - -/******************************************************************************/ - -const logger = self.logger; -const showdomButton = qs$('#showdom'); -const inspector = qs$('#domInspector'); -const domTree = qs$('#domTree'); -const filterToIdMap = new Map(); - -let inspectedTabId = 0; -let inspectedHostname = ''; -let uidGenerator = 1; - -/******************************************************************************* - * - * How it works: - * - * 1. The logger/inspector is enabled from the logger window - * - * 2. The inspector content script is injected in the root frame of the tab - * currently selected in the logger - * - * 3. The inspector content script asks the logger/inspector to establish - * a two-way communication channel - * - * 3. The inspector content script embed an inspector frame in the document - * being inspected and waits for the inspector frame to be fully loaded - * - * 4. The inspector content script sends a messaging port object to the - * embedded inspector frame for a two-way communication channel between - * the inspector frame and the inspector content script - * - * 5. The inspector content script sends dom information to the - * logger/inspector - * - * */ - -const contentInspectorChannel = (( ) => { - let bcChannel; - let toContentPort; - - const start = ( ) => { - bcChannel = new globalThis.BroadcastChannel('contentInspectorChannel'); - bcChannel.onmessage = ev => { - const msg = ev.data || {}; - connect(msg.tabId, msg.frameId); - }; - browser.webNavigation.onDOMContentLoaded.addListener(onContentLoaded); - }; - - const shutdown = ( ) => { - browser.webNavigation.onDOMContentLoaded.removeListener(onContentLoaded); - disconnect(); - bcChannel.close(); - bcChannel.onmessage = null; - bcChannel = undefined; - }; - - const connect = (tabId, frameId) => { - disconnect(); - try { - toContentPort = browser.tabs.connect(tabId, { frameId }); - toContentPort.onMessage.addListener(onContentMessage); - toContentPort.onDisconnect.addListener(onContentDisconnect); - } catch(_) { - } - }; - - const disconnect = ( ) => { - if ( toContentPort === undefined ) { return; } - toContentPort.onMessage.removeListener(onContentMessage); - toContentPort.onDisconnect.removeListener(onContentDisconnect); - toContentPort.disconnect(); - toContentPort = undefined; - }; - - const send = msg => { - if ( toContentPort === undefined ) { return; } - toContentPort.postMessage(msg); - }; - - const onContentMessage = msg => { - if ( msg.what === 'domLayoutFull' ) { - inspectedHostname = msg.hostname; - renderDOMFull(msg); - } else if ( msg.what === 'domLayoutIncremental' ) { - renderDOMIncremental(msg); - } - }; - - const onContentDisconnect = ( ) => { - disconnect(); - }; - - const onContentLoaded = details => { - if ( details.tabId !== inspectedTabId ) { return; } - if ( details.frameId !== 0 ) { return; } - disconnect(); - injectInspector(); - }; - - return { start, disconnect, send, shutdown }; -})(); - -/******************************************************************************/ - -const nodeFromDomEntry = entry => { - const li = document.createElement('li'); - dom.attr(li, 'id', entry.nid); - // expander/collapser - li.appendChild(document.createElement('span')); - // selector - let node = document.createElement('code'); - node.textContent = entry.sel; - li.appendChild(node); - // descendant count - let value = entry.cnt || 0; - node = document.createElement('span'); - node.textContent = value !== 0 ? value.toLocaleString() : ''; - dom.attr(node, 'data-cnt', value); - li.appendChild(node); - // cosmetic filter - if ( entry.filter === undefined ) { - return li; - } - node = document.createElement('code'); - dom.cl.add(node, 'filter'); - value = filterToIdMap.get(entry.filter); - if ( value === undefined ) { - value = `${uidGenerator}`; - filterToIdMap.set(entry.filter, value); - uidGenerator += 1; - } - dom.attr(node, 'data-filter-id', value); - node.textContent = entry.filter; - li.appendChild(node); - dom.cl.add(li, 'isCosmeticHide'); - return li; -}; - -/******************************************************************************/ - -const appendListItem = (ul, li) => { - ul.appendChild(li); - // Ancestor nodes of a node which is affected by a cosmetic filter will - // be marked as "containing cosmetic filters", for user convenience. - if ( dom.cl.has(li, 'isCosmeticHide') === false ) { return; } - for (;;) { - li = li.parentElement.parentElement; - if ( li === null ) { break; } - dom.cl.add(li, 'hasCosmeticHide'); - } -}; - -/******************************************************************************/ - -const renderDOMFull = response => { - const domTreeParent = domTree.parentElement; - let ul = domTreeParent.removeChild(domTree); - logger.removeAllChildren(domTree); - - filterToIdMap.clear(); - - let lvl = 0; - let li; - for ( const entry of response.layout ) { - if ( entry.lvl === lvl ) { - li = nodeFromDomEntry(entry); - appendListItem(ul, li); - continue; - } - if ( entry.lvl > lvl ) { - ul = document.createElement('ul'); - li.appendChild(ul); - dom.cl.add(li, 'branch'); - li = nodeFromDomEntry(entry); - appendListItem(ul, li); - lvl = entry.lvl; - continue; - } - // entry.lvl < lvl - while ( entry.lvl < lvl ) { - ul = li.parentNode; - li = ul.parentNode; - ul = li.parentNode; - lvl -= 1; - } - li = nodeFromDomEntry(entry); - appendListItem(ul, li); - } - while ( ul.parentNode !== null ) { - ul = ul.parentNode; - } - dom.cl.add(ul.firstElementChild, 'show'); - - domTreeParent.appendChild(domTree); -}; - -/******************************************************************************/ - -const patchIncremental = (from, delta) => { - let li = from.parentElement.parentElement; - const patchCosmeticHide = delta >= 0 && - dom.cl.has(from, 'isCosmeticHide') && - dom.cl.has(li, 'hasCosmeticHide') === false; - // Include descendants count when removing a node - if ( delta < 0 ) { - delta -= countFromNode(from); - } - for ( ; li.localName === 'li'; li = li.parentElement.parentElement ) { - const span = li.children[2]; - if ( delta !== 0 ) { - const cnt = countFromNode(li) + delta; - span.textContent = cnt !== 0 ? cnt.toLocaleString() : ''; - dom.attr(span, 'data-cnt', cnt); - } - if ( patchCosmeticHide ) { - dom.cl.add(li, 'hasCosmeticHide'); - } - } -}; - -/******************************************************************************/ - -const renderDOMIncremental = response => { - // Process each journal entry: - // 1 = node added - // -1 = node removed - const nodes = new Map(response.nodes); - let li = null; - let ul = null; - for ( const entry of response.journal ) { - // Remove node - if ( entry.what === -1 ) { - li = qs$(`#${entry.nid}`); - if ( li === null ) { continue; } - patchIncremental(li, -1); - li.parentNode.removeChild(li); - continue; - } - // Modify node - if ( entry.what === 0 ) { - // TODO: update selector/filter - continue; - } - // Add node as sibling - if ( entry.what === 1 && entry.l ) { - const previous = qs$(`#${entry.l}`); - // This should not happen - if ( previous === null ) { - // throw new Error('No left sibling!?'); - continue; - } - ul = previous.parentElement; - li = nodeFromDomEntry(nodes.get(entry.nid)); - ul.insertBefore(li, previous.nextElementSibling); - patchIncremental(li, 1); - continue; - } - // Add node as child - if ( entry.what === 1 && entry.u ) { - li = qs$(`#${entry.u}`); - // This should not happen - if ( li === null ) { - // throw new Error('No parent!?'); - continue; - } - ul = qs$(li, 'ul'); - if ( ul === null ) { - ul = document.createElement('ul'); - li.appendChild(ul); - dom.cl.add(li, 'branch'); - } - li = nodeFromDomEntry(nodes.get(entry.nid)); - ul.appendChild(li); - patchIncremental(li, 1); - continue; - } - } -}; - -/******************************************************************************/ - -const countFromNode = li => { - const span = li.children[2]; - const cnt = parseInt(dom.attr(span, 'data-cnt'), 10); - return isNaN(cnt) ? 0 : cnt; -}; - -/******************************************************************************/ - -const selectorFromNode = node => { - let selector = ''; - while ( node !== null ) { - if ( node.localName === 'li' ) { - const code = qs$(node, 'code'); - if ( code !== null ) { - selector = `${code.textContent} > ${selector}`; - if ( selector.includes('#') ) { break; } - } - } - node = node.parentElement; - } - return selector.slice(0, -3); -}; - -/******************************************************************************/ - -const selectorFromFilter = node => { - while ( node !== null ) { - if ( node.localName === 'li' ) { - const code = qs$(node, 'code:nth-of-type(2)'); - if ( code !== null ) { - return code.textContent; - } - } - node = node.parentElement; - } - return ''; -}; - -/******************************************************************************/ - -const nidFromNode = node => { - let li = node; - while ( li !== null ) { - if ( li.localName === 'li' ) { - return li.id || ''; - } - li = li.parentElement; - } - return ''; -}; - -/******************************************************************************/ - -const startDialog = (( ) => { - let dialog; - let textarea; - let hideSelectors = []; - let unhideSelectors = []; - - const parse = function() { - hideSelectors = []; - unhideSelectors = []; - - const re = /^([^#]*)(#@?#)(.+)$/; - for ( let line of textarea.value.split(/\s*\n\s*/) ) { - line = line.trim(); - if ( line === '' || line.charAt(0) === '!' ) { continue; } - const matches = re.exec(line); - if ( matches === null || matches.length !== 4 ) { continue; } - if ( inspectedHostname.lastIndexOf(matches[1]) === -1 ) { - continue; - } - if ( matches[2] === '##' ) { - hideSelectors.push(matches[3]); - } else { - unhideSelectors.push(matches[3]); - } - } - - showCommitted(); - }; - - const inputTimer = vAPI.defer.create(parse); - - const onInputChanged = ( ) => { - inputTimer.on(743); - }; - - const onClicked = function(ev) { - const target = ev.target; - - ev.stopPropagation(); - - if ( target.id === 'createCosmeticFilters' ) { - vAPI.messaging.send('loggerUI', { - what: 'createUserFilter', - filters: textarea.value, - }); - // Force a reload for the new cosmetic filter(s) to take effect - vAPI.messaging.send('loggerUI', { - what: 'reloadTab', - tabId: inspectedTabId, - }); - return stop(); - } - }; - - const showCommitted = function() { - contentInspectorChannel.send({ - what: 'showCommitted', - hide: hideSelectors.join(',\n'), - unhide: unhideSelectors.join(',\n') - }); - }; - - const showInteractive = function() { - contentInspectorChannel.send({ - what: 'showInteractive', - hide: hideSelectors.join(',\n'), - unhide: unhideSelectors.join(',\n') - }); - }; - - const start = function() { - dialog = logger.modalDialog.create('#cosmeticFilteringDialog', stop); - textarea = qs$(dialog, 'textarea'); - hideSelectors = []; - for ( const node of qsa$(domTree, 'code.off') ) { - if ( dom.cl.has(node, 'filter') ) { continue; } - hideSelectors.push(selectorFromNode(node)); - } - const taValue = []; - for ( const selector of hideSelectors ) { - taValue.push(inspectedHostname + '##' + selector); - } - const ids = new Set(); - for ( const node of qsa$(domTree, 'code.filter.off') ) { - const id = dom.attr(node, 'data-filter-id'); - if ( ids.has(id) ) { continue; } - ids.add(id); - unhideSelectors.push(node.textContent); - taValue.push(inspectedHostname + '#@#' + node.textContent); - } - textarea.value = taValue.join('\n'); - textarea.addEventListener('input', onInputChanged); - dialog.addEventListener('click', onClicked, true); - showCommitted(); - logger.modalDialog.show(); - }; - - const stop = function() { - inputTimer.off(); - showInteractive(); - textarea.removeEventListener('input', onInputChanged); - dialog.removeEventListener('click', onClicked, true); - dialog = undefined; - textarea = undefined; - hideSelectors = []; - unhideSelectors = []; - }; - - return start; -})(); - -/******************************************************************************/ - -const onClicked = ev => { - ev.stopPropagation(); - - if ( inspectedTabId === 0 ) { return; } - - const target = ev.target; - const parent = target.parentElement; - - // Expand/collapse branch - if ( - target.localName === 'span' && - parent instanceof HTMLLIElement && - dom.cl.has(parent, 'branch') && - target === parent.firstElementChild - ) { - const state = dom.cl.toggle(parent, 'show'); - if ( !state ) { - for ( const node of qsa$(parent, '.branch') ) { - dom.cl.remove(node, 'show'); - } - } - return; - } - - // Not a node or filter - if ( target.localName !== 'code' ) { return; } - - // Toggle cosmetic filter - if ( dom.cl.has(target, 'filter') ) { - contentInspectorChannel.send({ - what: 'toggleFilter', - original: false, - target: dom.cl.toggle(target, 'off'), - selector: selectorFromNode(target), - filter: selectorFromFilter(target), - nid: nidFromNode(target) - }); - dom.cl.toggle( - qsa$(inspector, `[data-filter-id="${dom.attr(target, 'data-filter-id')}"]`), - 'off', - dom.cl.has(target, 'off') - ); - } - // Toggle node - else { - contentInspectorChannel.send({ - what: 'toggleNodes', - original: true, - target: dom.cl.toggle(target, 'off') === false, - selector: selectorFromNode(target), - nid: nidFromNode(target) - }); - } - - const cantCreate = qs$(domTree, '.off') === null; - dom.cl.toggle(qs$(inspector, '.permatoolbar .revert'), 'disabled', cantCreate); - dom.cl.toggle(qs$(inspector, '.permatoolbar .commit'), 'disabled', cantCreate); -}; - -/******************************************************************************/ - -const onMouseOver = (( ) => { - let mouseoverTarget = null; - - const mouseoverTimer = vAPI.defer.create(( ) => { - contentInspectorChannel.send({ - what: 'highlightOne', - selector: selectorFromNode(mouseoverTarget), - nid: nidFromNode(mouseoverTarget), - scrollTo: true - }); - }); - - return ev => { - if ( inspectedTabId === 0 ) { return; } - // Convenience: skip real-time highlighting if shift key is pressed. - if ( ev.shiftKey ) { return; } - // Find closest `li` - const target = ev.target.closest('li'); - if ( target === mouseoverTarget ) { return; } - mouseoverTarget = target; - mouseoverTimer.on(50); - }; -})(); - -/******************************************************************************/ - -const currentTabId = ( ) => { - if ( dom.cl.has(showdomButton, 'active') === false ) { return 0; } - return logger.tabIdFromPageSelector(); -}; - -/******************************************************************************/ - -const injectInspector = (( ) => { - const timer = vAPI.defer.create(( ) => { - const tabId = currentTabId(); - if ( tabId <= 0 ) { return; } - inspectedTabId = tabId; - vAPI.messaging.send('loggerUI', { - what: 'scriptlet', - tabId, - scriptlet: 'dom-inspector', - }); - }); - return ( ) => { - shutdownInspector(); - timer.offon(353); - }; -})(); - -/******************************************************************************/ - -const shutdownInspector = ( ) => { - contentInspectorChannel.disconnect(); - logger.removeAllChildren(domTree); - dom.cl.remove(inspector, 'vExpanded'); - inspectedTabId = 0; -}; - -/******************************************************************************/ - -const onTabIdChanged = ( ) => { - const tabId = currentTabId(); - if ( tabId <= 0 ) { - return toggleOff(); - } - if ( inspectedTabId !== tabId ) { - injectInspector(); - } -}; - -/******************************************************************************/ - -const toggleVExpandView = ( ) => { - const branches = qsa$('#domTree li.branch.show > ul > li.branch:not(.show)'); - for ( const branch of branches ) { - dom.cl.add(branch, 'show'); - } -}; - -const toggleVCompactView = ( ) => { - const branches = qsa$('#domTree li.branch.show > ul > li:not(.show)'); - const tohideSet = new Set(); - for ( const branch of branches ) { - const node = branch.closest('li.branch.show'); - if ( node.id === 'n1' ) { continue; } - tohideSet.add(node); - } - const tohideList = Array.from(tohideSet); - let i = tohideList.length - 1; - while ( i > 0 ) { - if ( tohideList[i-1].contains(tohideList[i]) ) { - tohideList.splice(i-1, 1); - } else if ( tohideList[i].contains(tohideList[i-1]) ) { - tohideList.splice(i, 1); - } - i -= 1; - } - for ( const node of tohideList ) { - dom.cl.remove(node, 'show'); - } -}; - -const toggleHCompactView = ( ) => { - dom.cl.toggle(inspector, 'hCompact'); -}; - -/******************************************************************************/ - -const revert = ( ) => { - dom.cl.remove('#domTree .off', 'off'); - contentInspectorChannel.send({ what: 'resetToggledNodes' }); - dom.cl.add(qs$(inspector, '.permatoolbar .revert'), 'disabled'); - dom.cl.add(qs$(inspector, '.permatoolbar .commit'), 'disabled'); -}; - -/******************************************************************************/ - -const toggleOn = ( ) => { - dom.cl.add('#inspectors', 'dom'); - window.addEventListener('beforeunload', toggleOff); - dom.on(document, 'tabIdChanged', onTabIdChanged); - dom.on(domTree, 'click', onClicked, true); - dom.on(domTree, 'mouseover', onMouseOver, true); - dom.on('#domInspector .vExpandToggler', 'click', toggleVExpandView); - dom.on('#domInspector .vCompactToggler', 'click', toggleVCompactView); - dom.on('#domInspector .hCompactToggler', 'click', toggleHCompactView); - dom.on('#domInspector .permatoolbar .revert', 'click', revert); - dom.on('#domInspector .permatoolbar .commit', 'click', startDialog); - contentInspectorChannel.start(); - injectInspector(); -}; - -/******************************************************************************/ - -const toggleOff = ( ) => { - dom.cl.remove(showdomButton, 'active'); - dom.cl.remove('#inspectors', 'dom'); - shutdownInspector(); - window.removeEventListener('beforeunload', toggleOff); - dom.off(document, 'tabIdChanged', onTabIdChanged); - dom.off(domTree, 'click', onClicked, true); - dom.off(domTree, 'mouseover', onMouseOver, true); - dom.off('#domInspector .vExpandToggler', 'click', toggleVExpandView); - dom.off('#domInspector .vCompactToggler', 'click', toggleVCompactView); - dom.off('#domInspector .hCompactToggler', 'click', toggleHCompactView); - dom.off('#domInspector .permatoolbar .revert', 'click', revert); - dom.off('#domInspector .permatoolbar .commit', 'click', startDialog); - contentInspectorChannel.shutdown(); - inspectedTabId = 0; -}; - -/******************************************************************************/ - -const toggle = ( ) => { - if ( dom.cl.toggle(showdomButton, 'active') ) { - toggleOn(); - } else { - toggleOff(); - } -}; - -dom.on(showdomButton, 'click', toggle); - -/******************************************************************************/ - -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/logger-ui.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/logger-ui.js deleted file mode 100644 index db95f2e..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/logger-ui.js +++ /dev/null @@ -1,3080 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -import { dom, qs$, qsa$ } from './dom.js'; -import { i18n, i18n$ } from './i18n.js'; -import { broadcast } from './broadcast.js'; -import { hostnameFromURI } from './uri-utils.js'; - -/******************************************************************************/ - -// TODO: fix the inconsistencies re. realm vs. filter source which have -// accumulated over time. - -const messaging = vAPI.messaging; -const logger = self.logger = { ownerId: Date.now() }; -const logDate = new Date(); -const logDateTimezoneOffset = logDate.getTimezoneOffset() * 60; -const loggerEntries = []; - -const COLUMN_TIMESTAMP = 0; -const COLUMN_FILTER = 1; -const COLUMN_MESSAGE = 1; -const COLUMN_RESULT = 2; -const COLUMN_INITIATOR = 3; -const COLUMN_PARTYNESS = 4; -const COLUMN_METHOD = 5; -const COLUMN_TYPE = 6; -const COLUMN_URL = 7; - -let filteredLoggerEntries = []; -let filteredLoggerEntryVoidedCount = 0; - -let popupLoggerBox; -let popupLoggerTooltips; -let activeTabId = 0; -let selectedTabId = 0; -let netInspectorPaused = false; -let cnameOfEnabled = false; - -/******************************************************************************/ - -// Various helpers. - -const tabIdFromPageSelector = logger.tabIdFromPageSelector = function() { - const value = qs$('#pageSelector').value; - return value !== '_' ? (parseInt(value, 10) || 0) : activeTabId; -}; - -const tabIdFromAttribute = function(elem) { - const value = dom.attr(elem, 'data-tabid') || ''; - const tabId = parseInt(value, 10); - return isNaN(tabId) ? 0 : tabId; -}; - -const hasOwnProperty = (o, p) => - Object.prototype.hasOwnProperty.call(o, p); - -const dispatchTabidChange = vAPI.defer.create(( ) => { - document.dispatchEvent(new Event('tabIdChanged')); -}); - -const escapeRegexStr = s => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - -/******************************************************************************/ -/******************************************************************************/ - -// Current design allows for only one modal DOM-based dialog at any given time. -// -const modalDialog = (( ) => { - const overlay = qs$('#modalOverlay'); - const container = qs$('#modalOverlayContainer'); - const closeButton = qs$(overlay, ':scope .closeButton'); - let onDestroyed; - - const removeChildren = logger.removeAllChildren = function(node) { - while ( node.firstChild ) { - node.removeChild(node.firstChild); - } - }; - - const create = function(selector, destroyListener) { - const template = qs$(selector); - const dialog = dom.clone(template); - removeChildren(container); - container.appendChild(dialog); - onDestroyed = destroyListener; - return dialog; - }; - - const show = function() { - dom.cl.add(overlay, 'on'); - }; - - const destroy = function() { - dom.cl.remove(overlay, 'on'); - const dialog = container.firstElementChild; - removeChildren(container); - if ( typeof onDestroyed === 'function' ) { - onDestroyed(dialog); - } - onDestroyed = undefined; - }; - - const onClose = function(ev) { - if ( ev.target === overlay || ev.target === closeButton ) { - destroy(); - } - }; - dom.on(overlay, 'click', onClose); - dom.on(closeButton, 'click', onClose); - - return { create, show, destroy }; -})(); - -self.logger.modalDialog = modalDialog; - - -/******************************************************************************/ -/******************************************************************************/ - -const prettyRequestTypes = { - 'main_frame': 'doc', - 'stylesheet': 'css', - 'sub_frame': 'frame', - 'xmlhttprequest': 'xhr' -}; - -const uglyRequestTypes = { - 'doc': 'main_frame', - 'css': 'stylesheet', - 'frame': 'sub_frame', - 'xhr': 'xmlhttprequest' -}; - -let allTabIds = new Map(); -let allTabIdsToken; - -/******************************************************************************/ -/******************************************************************************/ - -const regexFromURLFilteringResult = function(result) { - const beg = result.indexOf(' '); - const end = result.indexOf(' ', beg + 1); - const url = result.slice(beg + 1, end); - if ( url === '*' ) { - return new RegExp('^.*$', 'gi'); - } - return new RegExp('^' + escapeRegexStr(url), 'gi'); -}; - -/******************************************************************************/ - -// Emphasize hostname in URL, as this is what matters in uMatrix's rules. - -const nodeFromURL = function(parent, url, re, type) { - const fragment = document.createDocumentFragment(); - if ( re === undefined ) { - fragment.textContent = url; - } else { - if ( typeof re === 'string' ) { - re = new RegExp(escapeRegexStr(re), 'g'); - } - const matches = re.exec(url); - if ( matches === null || matches[0].length === 0 ) { - fragment.textContent = url; - } else { - if ( matches.index !== 0 ) { - fragment.appendChild( - document.createTextNode(url.slice(0, matches.index)) - ); - } - const b = document.createElement('b'); - b.textContent = url.slice(matches.index, re.lastIndex); - fragment.appendChild(b); - if ( re.lastIndex !== url.length ) { - fragment.appendChild( - document.createTextNode(url.slice(re.lastIndex)) - ); - } - } - } - if ( /^https?:\/\//.test(url) ) { - const a = document.createElement('a'); - let href = url; - switch ( type ) { - case 'css': - case 'doc': - case 'frame': - case 'object': - case 'other': - case 'script': - case 'xhr': - href = `code-viewer.html?url=${encodeURIComponent(href)}`; - break; - default: - break; - } - dom.attr(a, 'href', href); - dom.attr(a, 'target', '_blank'); - fragment.appendChild(a); - } - parent.appendChild(fragment); -}; - -/******************************************************************************/ - -const padTo2 = function(v) { - return v < 10 ? '0' + v : v; -}; - -const normalizeToStr = function(s) { - return typeof s === 'string' && s !== '' ? s : ''; -}; - -/******************************************************************************/ - -class LogEntry { - static IdGenerator = 1; - constructor(details) { - this.aliased = false; - this.dead = false; - this.docDomain = ''; - this.docHostname = ''; - this.domain = ''; - this.filter = undefined; - this.id = LogEntry.IdGenerator++; - this.method = ''; - this.realm = ''; - this.tabDomain = ''; - this.tabHostname = ''; - this.tabId = undefined; - this.textContent = ''; - this.tstamp = 0; - this.type = ''; - this.voided = false; - if ( details instanceof Object === false ) { return; } - for ( const prop in this ) { - if ( hasOwnProperty(details, prop) === false ) { continue; } - this[prop] = details[prop]; - } - if ( details.aliasURL !== undefined ) { - this.aliased = true; - } - if ( this.tabDomain === '' ) { - this.tabDomain = this.tabHostname || ''; - } - if ( this.docDomain === '' ) { - this.docDomain = this.docHostname || ''; - } - if ( this.domain === '' ) { - this.domain = details.hostname || ''; - } - } -} - -/******************************************************************************/ - -const createLogSeparator = function(details, text) { - const separator = new LogEntry(); - separator.tstamp = details.tstamp; - separator.realm = 'message'; - separator.tabId = details.tabId; - separator.type = 'tabLoad'; - separator.textContent = ''; - - const textContent = []; - logDate.setTime((separator.tstamp - logDateTimezoneOffset) * 1000); - textContent.push( - // cell 0 - padTo2(logDate.getUTCHours()) + ':' + - padTo2(logDate.getUTCMinutes()) + ':' + - padTo2(logDate.getSeconds()), - // cell 1 - text - ); - separator.textContent = textContent.join('\x1F'); - - if ( details.voided ) { - separator.voided = true; - } - - return separator; -}; - -/******************************************************************************/ - -// TODO: once refactoring is mature, consider using push() instead of -// unshift(). This will require inverting the access logic -// throughout the code. -// -const processLoggerEntries = function(response) { - const entries = response.entries; - if ( entries.length === 0 ) { return; } - - const autoDeleteVoidedRows = qs$('#pageSelector').value === '_'; - const previousCount = filteredLoggerEntries.length; - - for ( const entry of entries ) { - const unboxed = JSON.parse(entry); - if ( unboxed.filter instanceof Object ){ - loggerStats.processFilter(unboxed.filter); - } - if ( netInspectorPaused ) { continue; } - const parsed = parseLogEntry(unboxed); - if ( - parsed.tabId !== undefined && - allTabIds.has(parsed.tabId) === false - ) { - if ( autoDeleteVoidedRows ) { continue; } - parsed.voided = true; - } - if ( - parsed.type === 'main_frame' && - parsed.aliased === false && ( - parsed.filter === undefined || - parsed.filter.modifier !== true - ) - ) { - const separator = createLogSeparator(parsed, unboxed.url); - loggerEntries.unshift(separator); - if ( rowFilterer.filterOne(separator) ) { - filteredLoggerEntries.unshift(separator); - if ( separator.voided ) { - filteredLoggerEntryVoidedCount += 1; - } - } - } - if ( cnameOfEnabled === false && parsed.aliased ) { - qs$('#filterExprCnameOf').style.display = ''; - cnameOfEnabled = true; - } - loggerEntries.unshift(parsed); - if ( rowFilterer.filterOne(parsed) ) { - filteredLoggerEntries.unshift(parsed); - if ( parsed.voided ) { - filteredLoggerEntryVoidedCount += 1; - } - } - } - - const addedCount = filteredLoggerEntries.length - previousCount; - if ( addedCount === 0 ) { return; } - viewPort.updateContent(addedCount); - rowJanitor.inserted(addedCount); - consolePane.updateContent(); -}; - -/******************************************************************************/ - -const parseLogEntry = function(details) { - // Patch realm until changed all over codebase to make this unnecessary - if ( details.realm === 'cosmetic' ) { - details.realm = 'extended'; - } - - const entry = new LogEntry(details); - - // Assemble the text content, i.e. the pre-built string which will be - // used to match logger output filtering expressions. - const textContent = []; - - // Cell 0 - logDate.setTime((details.tstamp - logDateTimezoneOffset) * 1000); - textContent.push( - padTo2(logDate.getUTCHours()) + ':' + - padTo2(logDate.getUTCMinutes()) + ':' + - padTo2(logDate.getSeconds()) - ); - - // Cell 1 - if ( details.realm === 'message' ) { - textContent.push(details.text); - if ( details.type ) { - textContent.push(details.type); - } - if ( details.keywords ) { - textContent.push(...details.keywords); - } - entry.textContent = textContent.join('\x1F') + '\x1F'; - return entry; - } - - // Cell 1, 2 - if ( entry.filter !== undefined ) { - textContent.push(entry.filter.raw); - if ( entry.filter.result === 1 ) { - textContent.push('--'); - } else if ( entry.filter.result === 2 ) { - textContent.push('++'); - } else if ( entry.filter.result === 3 ) { - textContent.push('**'); - } else if ( entry.filter.source === 'redirect' ) { - textContent.push('<<'); - } else { - textContent.push(''); - } - } else { - textContent.push('', ''); - } - - // Cell 3 - textContent.push(normalizeToStr(entry.docHostname)); - - // Cell 4: partyness - if ( - entry.realm === 'network' && - typeof entry.domain === 'string' && - entry.domain !== '' - ) { - let partyness = ''; - if ( entry.tabDomain !== undefined ) { - if ( entry.tabId < 0 ) { - partyness += '0,'; - } - partyness += entry.domain === entry.tabDomain ? '1' : '3'; - } else { - partyness += '?'; - } - if ( entry.docDomain !== entry.tabDomain ) { - partyness += ','; - if ( entry.docDomain !== undefined ) { - partyness += entry.domain === entry.docDomain ? '1' : '3'; - } else { - partyness += '?'; - } - } - textContent.push(partyness); - } else { - textContent.push(''); - } - - // Cell 5: method - textContent.push(entry.method || ''); - - // Cell 6 - textContent.push( - normalizeToStr(prettyRequestTypes[entry.type] || entry.type) - ); - - // Cell 7 - textContent.push(normalizeToStr(details.url)); - - // Hidden cells -- useful for row-filtering purpose - - // Cell 8 - if ( entry.aliased ) { - textContent.push(`aliasURL=${details.aliasURL}`); - } - - entry.textContent = textContent.join('\x1F'); - return entry; -}; - -/******************************************************************************/ - -const viewPort = (( ) => { - const vwRenderer = qs$('#vwRenderer'); - const vwScroller = qs$('#vwScroller'); - const vwVirtualContent = qs$('#vwVirtualContent'); - const vwContent = qs$('#vwContent'); - const vwLineSizer = qs$('#vwLineSizer'); - const vwLogEntryTemplate = qs$('#logEntryTemplate > div'); - const vwEntries = []; - - const detailableRealms = new Set([ 'network', 'extended' ]); - - let vwHeight = 0; - let lineHeight = 0; - let wholeHeight = 0; - let lastTopPix = 0; - let lastTopRow = 0; - - const ViewEntry = function() { - this.div = document.createElement('div'); - this.div.className = 'logEntry'; - vwContent.appendChild(this.div); - this.logEntry = undefined; - }; - ViewEntry.prototype = { - dispose: function() { - vwContent.removeChild(this.div); - }, - }; - - const rowFromScrollTopPix = function(px) { - return lineHeight !== 0 ? Math.floor(px / lineHeight) : 0; - }; - - // This is called when the browser fired scroll events - const onScrollChanged = function() { - const newScrollTopPix = vwScroller.scrollTop; - const delta = newScrollTopPix - lastTopPix; - if ( delta === 0 ) { return; } - lastTopPix = newScrollTopPix; - if ( filteredLoggerEntries.length <= 2 ) { return; } - // No entries were rolled = all entries keep their current details - if ( rollLines(rowFromScrollTopPix(newScrollTopPix)) ) { - fillLines(); - } - positionLines(); - vwContent.style.top = `${lastTopPix}px`; - }; - - // Coalesce scroll events - const scrollTimer = vAPI.defer.create(onScrollChanged); - const onScroll = ( ) => { - scrollTimer.onvsync(1000/32); - }; - dom.on(vwScroller, 'scroll', onScroll, { passive: true }); - - const onLayoutChanged = function() { - vwHeight = vwRenderer.clientHeight; - vwContent.style.height = `${vwScroller.clientHeight}px`; - - const vExpanded = - dom.cl.has('#netInspector .vCompactToggler', 'vExpanded'); - - let newLineHeight = qs$(vwLineSizer, '.oneLine').clientHeight; - - if ( vExpanded ) { - newLineHeight *= loggerSettings.linesPerEntry; - } - - const lineCount = newLineHeight !== 0 - ? Math.ceil(vwHeight / newLineHeight) + 1 - : 0; - if ( lineCount > vwEntries.length ) { - do { - vwEntries.push(new ViewEntry()); - } while ( lineCount > vwEntries.length ); - } else if ( lineCount < vwEntries.length ) { - do { - vwEntries.pop().dispose(); - } while ( lineCount < vwEntries.length ); - } - - const cellWidths = Array.from( - qsa$(vwLineSizer, '.oneLine span') - ).map((el, i) => { - return loggerSettings.columns[i] !== false - ? el.clientWidth + 1 - : 0; - }); - const reservedWidth = - cellWidths[COLUMN_TIMESTAMP] + - cellWidths[COLUMN_RESULT] + - cellWidths[COLUMN_PARTYNESS] + - cellWidths[COLUMN_METHOD] + - cellWidths[COLUMN_TYPE]; - cellWidths[COLUMN_URL] = 0.5; - if ( cellWidths[COLUMN_FILTER] === 0 && cellWidths[COLUMN_INITIATOR] === 0 ) { - cellWidths[COLUMN_URL] = 1; - } else if ( cellWidths[COLUMN_FILTER] === 0 ) { - cellWidths[COLUMN_INITIATOR] = 0.35; - cellWidths[COLUMN_URL] = 0.65; - } else if ( cellWidths[COLUMN_INITIATOR] === 0 ) { - cellWidths[COLUMN_FILTER] = 0.35; - cellWidths[COLUMN_URL] = 0.65; - } else { - cellWidths[COLUMN_FILTER] = 0.25; - cellWidths[COLUMN_INITIATOR] = 0.25; - cellWidths[COLUMN_URL] = 0.5; - } - const style = qs$('#vwRendererRuntimeStyles'); - const cssRules = [ - '#vwContent .logEntry {', - ` height: ${newLineHeight}px;`, - '}', - `#vwContent .logEntry > div > span:nth-of-type(${COLUMN_TIMESTAMP+1}) {`, - ` width: ${cellWidths[COLUMN_TIMESTAMP]}px;`, - '}', - `#vwContent .logEntry > div > span:nth-of-type(${COLUMN_FILTER+1}) {`, - ` width: calc(calc(100% - ${reservedWidth}px) * ${cellWidths[COLUMN_FILTER]});`, - '}', - `#vwContent .logEntry > div.messageRealm > span:nth-of-type(${COLUMN_MESSAGE+1}) {`, - ` width: calc(100% - ${cellWidths[COLUMN_TIMESTAMP]}px);`, - '}', - `#vwContent .logEntry > div > span:nth-of-type(${COLUMN_RESULT+1}) {`, - ` width: ${cellWidths[COLUMN_RESULT]}px;`, - '}', - `#vwContent .logEntry > div > span:nth-of-type(${COLUMN_INITIATOR+1}) {`, - ` width: calc(calc(100% - ${reservedWidth}px) * ${cellWidths[COLUMN_INITIATOR]});`, - '}', - `#vwContent .logEntry > div > span:nth-of-type(${COLUMN_PARTYNESS+1}) {`, - ` width: ${cellWidths[COLUMN_PARTYNESS]}px;`, - '}', - `#vwContent .logEntry > div > span:nth-of-type(${COLUMN_METHOD+1}) {`, - ` width: ${cellWidths[COLUMN_METHOD]}px;`, - '}', - `#vwContent .logEntry > div > span:nth-of-type(${COLUMN_TYPE+1}) {`, - ` width: ${cellWidths[COLUMN_TYPE]}px;`, - '}', - `#vwContent .logEntry > div > span:nth-of-type(${COLUMN_URL+1}) {`, - ` width: calc(calc(100% - ${reservedWidth}px) * ${cellWidths[COLUMN_URL]});`, - '}', - '', - ]; - for ( let i = 0; i < cellWidths.length; i++ ) { - if ( cellWidths[i] !== 0 ) { continue; } - cssRules.push( - `#vwContent .logEntry > div > span:nth-of-type(${i + 1}) {`, - ' display: none;', - '}' - ); - } - style.textContent = cssRules.join('\n'); - - lineHeight = newLineHeight; - positionLines(); - dom.cl.toggle('#netInspector', 'vExpanded', vExpanded); - - updateContent(0); - }; - - const resizeTimer = vAPI.defer.create(onLayoutChanged); - const updateLayout = ( ) => { - resizeTimer.onvsync(1000/8); - }; - const resizeObserver = new self.ResizeObserver(updateLayout); - resizeObserver.observe(qs$('#netInspector .vscrollable')); - - updateLayout(); - - const renderFilterToSpan = function(span, filter) { - if ( filter.charCodeAt(0) !== 0x23 /* '#' */ ) { return false; } - const match = /^#@?#/.exec(filter); - if ( match === null ) { return false; } - let child = document.createElement('span'); - child.textContent = match[0]; - span.appendChild(child); - child = document.createElement('span'); - child.textContent = filter.slice(match[0].length); - span.appendChild(child); - return true; - }; - - const renderToDiv = function(vwEntry, i) { - if ( i >= filteredLoggerEntries.length ) { - vwEntry.logEntry = undefined; - return null; - } - - const details = filteredLoggerEntries[i]; - if ( vwEntry.logEntry === details ) { - return vwEntry.div.firstElementChild; - } - - vwEntry.logEntry = details; - - const cells = details.textContent.split('\x1F'); - const div = dom.clone(vwLogEntryTemplate); - const divcl = div.classList; - let span; - - // Realm - if ( details.realm !== undefined ) { - divcl.add(details.realm + 'Realm'); - } - - // Timestamp - span = div.children[COLUMN_TIMESTAMP]; - span.textContent = cells[COLUMN_TIMESTAMP]; - - // Tab id - if ( details.tabId !== undefined ) { - dom.attr(div, 'data-tabid', details.tabId); - if ( details.voided ) { - divcl.add('voided'); - } - } - - if ( details.realm === 'message' ) { - if ( details.type !== undefined ) { - dom.attr(div, 'data-type', details.type); - } - span = div.children[COLUMN_MESSAGE]; - span.textContent = cells[COLUMN_MESSAGE]; - return div; - } - - if ( detailableRealms.has(details.realm) ) { - divcl.add('canDetails'); - } - - // Filter - const filter = details.filter || undefined; - let filteringType; - if ( filter !== undefined ) { - if ( typeof filter.source === 'string' ) { - filteringType = filter.source; - } - if ( filteringType === 'static' ) { - divcl.add('canLookup'); - } else if ( details.realm === 'extended' ) { - divcl.toggle('canLookup', /^#@?#/.test(filter.raw)); - divcl.toggle('isException', filter.raw.startsWith('#@#')); - } - if ( filter.modifier === true ) { - dom.attr(div, 'data-modifier', ''); - } - } - span = div.children[COLUMN_FILTER]; - if ( renderFilterToSpan(span, cells[COLUMN_FILTER]) ) { - if ( /^\+js\(.*\)$/.test(span.children[1].textContent) ) { - divcl.add('scriptlet'); - } - } else { - span.textContent = cells[COLUMN_FILTER]; - } - - // Event - if ( cells[COLUMN_RESULT] === '--' ) { - dom.attr(div, 'data-status', '1'); - } else if ( cells[COLUMN_RESULT] === '++' ) { - dom.attr(div, 'data-status', '2'); - } else if ( cells[COLUMN_RESULT] === '**' ) { - dom.attr(div, 'data-status', '3'); - } else if ( cells[COLUMN_RESULT] === '<<' ) { - divcl.add('redirect'); - } - span = div.children[COLUMN_RESULT]; - span.textContent = cells[COLUMN_RESULT]; - - // Origins - if ( details.tabHostname ) { - dom.attr(div, 'data-tabhn', details.tabHostname); - } - if ( details.docHostname ) { - dom.attr(div, 'data-dochn', details.docHostname); - } - span = div.children[COLUMN_INITIATOR]; - span.textContent = cells[COLUMN_INITIATOR]; - - // Partyness - if ( - cells[COLUMN_PARTYNESS] !== '' && - details.realm === 'network' && - details.domain !== undefined - ) { - let text = `${details.tabDomain}`; - if ( details.docDomain !== details.tabDomain ) { - text += ` \u22ef ${details.docDomain}`; - } - text += ` \u21d2 ${details.domain}`; - dom.attr(div, 'data-parties', text); - } - span = div.children[COLUMN_PARTYNESS]; - span.textContent = cells[COLUMN_PARTYNESS]; - - // Method - span = div.children[COLUMN_METHOD]; - span.textContent = cells[COLUMN_METHOD]; - - // Type - span = div.children[COLUMN_TYPE]; - span.textContent = cells[COLUMN_TYPE]; - - // URL - let re; - if ( filteringType === 'static' ) { - re = new RegExp(filter.regex, 'gi'); - } else if ( filteringType === 'dynamicUrl' ) { - re = regexFromURLFilteringResult(filter.rule.join(' ')); - } - nodeFromURL(div.children[COLUMN_URL], cells[COLUMN_URL], re, cells[COLUMN_TYPE]); - - // Alias URL (CNAME, etc.) - if ( cells.length > 8 ) { - const pos = details.textContent.lastIndexOf('\x1FaliasURL='); - if ( pos !== -1 ) { - div.dataset.aliasid = `${details.id}`; - } - } - - return div; - }; - - // The idea is that positioning DOM elements is faster than - // removing/inserting DOM elements. - const positionLines = function() { - if ( lineHeight === 0 ) { return; } - let y = -(lastTopPix % lineHeight); - for ( const vwEntry of vwEntries ) { - vwEntry.div.style.top = `${y}px`; - y += lineHeight; - } - }; - - const rollLines = function(topRow) { - let delta = topRow - lastTopRow; - let deltaLength = Math.abs(delta); - // No point rolling if no rows can be reused - if ( deltaLength > 0 && deltaLength < vwEntries.length ) { - if ( delta < 0 ) { // Move bottom rows to the top - vwEntries.unshift(...vwEntries.splice(delta)); - } else { // Move top rows to the bottom - vwEntries.push(...vwEntries.splice(0, delta)); - } - } - lastTopRow = topRow; - return delta; - }; - - const fillLines = function() { - let rowBeg = lastTopRow; - for ( const vwEntry of vwEntries ) { - const newDiv = renderToDiv(vwEntry, rowBeg); - const container = vwEntry.div; - const oldDiv = container.firstElementChild; - if ( newDiv !== null ) { - if ( oldDiv === null ) { - container.appendChild(newDiv); - } else if ( newDiv !== oldDiv ) { - container.removeChild(oldDiv); - container.appendChild(newDiv); - } - } else if ( oldDiv !== null ) { - container.removeChild(oldDiv); - } - rowBeg += 1; - } - }; - - const contentChanged = function(addedCount) { - lastTopRow += addedCount; - const newWholeHeight = Math.max( - filteredLoggerEntries.length * lineHeight, - vwRenderer.clientHeight - ); - if ( newWholeHeight !== wholeHeight ) { - vwVirtualContent.style.height = `${newWholeHeight}px`; - wholeHeight = newWholeHeight; - } - }; - - const updateContent = function(addedCount) { - contentChanged(addedCount); - // Content changed - if ( addedCount === 0 ) { - if ( - lastTopRow !== 0 && - lastTopRow + vwEntries.length > filteredLoggerEntries.length - ) { - lastTopRow = filteredLoggerEntries.length - vwEntries.length; - if ( lastTopRow < 0 ) { lastTopRow = 0; } - lastTopPix = lastTopRow * lineHeight; - vwContent.style.top = `${lastTopPix}px`; - vwScroller.scrollTop = lastTopPix; - positionLines(); - } - fillLines(); - return; - } - - // Content added - // Preserve scroll position - if ( lastTopPix === 0 ) { - rollLines(0); - positionLines(); - fillLines(); - return; - } - - // Preserve row position - lastTopPix += lineHeight * addedCount; - vwContent.style.top = `${lastTopPix}px`; - vwScroller.scrollTop = lastTopPix; - }; - - return { updateContent, updateLayout }; -})(); - -/******************************************************************************/ - -const updateCurrentTabTitle = (( ) => { - const i18nCurrentTab = i18n$('loggerCurrentTab'); - - return ( ) => { - const select = qs$('#pageSelector'); - if ( select.value !== '_' || activeTabId === 0 ) { return; } - const opt0 = qs$(select, '[value="_"]'); - const opt1 = qs$(select, `[value="${activeTabId}"]`); - let text = i18nCurrentTab; - if ( opt1 !== null ) { - text += ' / ' + opt1.textContent; - } - opt0.textContent = text; - }; -})(); - -/******************************************************************************/ - -const synchronizeTabIds = function(newTabIds) { - const select = qs$('#pageSelector'); - const selectedTabValue = select.value; - const oldTabIds = allTabIds; - - // Collate removed tab ids. - const toVoid = new Set(); - for ( const tabId of oldTabIds.keys() ) { - if ( newTabIds.has(tabId) ) { continue; } - toVoid.add(tabId); - } - allTabIds = newTabIds; - - // Mark as "void" all logger entries which are linked to now invalid - // tab ids. - // When an entry is voided without being removed, we re-create a new entry - // in order to ensure the entry has a new identity. A new identity ensures - // that identity-based associations elsewhere are automatically - // invalidated. - if ( toVoid.size !== 0 ) { - const autoDeleteVoidedRows = selectedTabValue === '_'; - let rowVoided = false; - for ( let i = 0, n = loggerEntries.length; i < n; i++ ) { - const entry = loggerEntries[i]; - if ( toVoid.has(entry.tabId) === false ) { continue; } - if ( entry.voided ) { continue; } - rowVoided = entry.voided = true; - if ( autoDeleteVoidedRows ) { - entry.dead = true; - } - loggerEntries[i] = new LogEntry(entry); - } - if ( rowVoided ) { - rowFilterer.filterAll(); - } - } - - // Remove popup if it is currently bound to a removed tab. - if ( toVoid.has(popupManager.tabId) ) { - popupManager.toggleOff(); - } - - const tabIds = Array.from(newTabIds.keys()).sort(function(a, b) { - return newTabIds.get(a).localeCompare(newTabIds.get(b)); - }); - let j = 3; - for ( const tabId of tabIds ) { - if ( tabId <= 0 ) { continue; } - if ( j === select.options.length ) { - select.appendChild(document.createElement('option')); - } - const option = select.options[j]; - // Truncate too long labels. - option.textContent = newTabIds.get(tabId).slice(0, 80); - dom.attr(option, 'value', tabId); - if ( option.value === selectedTabValue ) { - select.selectedIndex = j; - dom.attr(option, 'selected', ''); - } else { - dom.attr(option, 'selected', null); - } - j += 1; - } - while ( j < select.options.length ) { - select.removeChild(select.options[j]); - } - if ( select.value !== selectedTabValue ) { - select.selectedIndex = 0; - select.value = ''; - dom.attr(select.options[0], 'selected', ''); - pageSelectorChanged(); - } - - updateCurrentTabTitle(); -}; - -/******************************************************************************/ - -const onLogBufferRead = function(response) { - if ( !response || response.unavailable ) { return; } - - // Disable tooltips? - if ( - popupLoggerTooltips === undefined && - response.tooltips !== undefined - ) { - popupLoggerTooltips = response.tooltips; - if ( popupLoggerTooltips === false ) { - dom.attr('[data-i18n-title]', 'title', ''); - } - } - - // Tab id of currently active tab - let activeTabIdChanged = false; - if ( response.activeTabId ) { - activeTabIdChanged = response.activeTabId !== activeTabId; - activeTabId = response.activeTabId; - } - - if ( Array.isArray(response.tabIds) ) { - response.tabIds = new Map(response.tabIds); - } - - // List of tab ids has changed - if ( response.tabIds !== undefined ) { - synchronizeTabIds(response.tabIds); - allTabIdsToken = response.tabIdsToken; - } - - if ( activeTabIdChanged ) { - pageSelectorFromURLHash(); - } - - processLoggerEntries(response); - - // Synchronize DOM with sent logger data - dom.cl.toggle(dom.html, 'colorBlind', response.colorBlind === true); - dom.cl.toggle('#clean', 'disabled', filteredLoggerEntryVoidedCount === 0); - dom.cl.toggle('#clear', 'disabled', filteredLoggerEntries.length === 0); -}; - -/******************************************************************************/ - -const readLogBuffer = (( ) => { - let reading = false; - - const readLogBufferNow = async function() { - if ( logger.ownerId === undefined ) { return; } - if ( reading ) { return; } - - reading = true; - - const msg = { - what: 'readAll', - ownerId: logger.ownerId, - tabIdsToken: allTabIdsToken, - }; - - // This is to detect changes in the position or size of the logger - // popup window (if in use). - if ( - popupLoggerBox instanceof Object && - ( - self.screenX !== popupLoggerBox.x || - self.screenY !== popupLoggerBox.y || - self.outerWidth !== popupLoggerBox.w || - self.outerHeight !== popupLoggerBox.h - ) - ) { - popupLoggerBox.x = self.screenX; - popupLoggerBox.y = self.screenY; - popupLoggerBox.w = self.outerWidth; - popupLoggerBox.h = self.outerHeight; - msg.popupLoggerBoxChanged = true; - } - - const response = await vAPI.messaging.send('loggerUI', msg); - - onLogBufferRead(response); - - reading = false; - - timer.on(1200); - }; - - const timer = vAPI.defer.create(readLogBufferNow); - - readLogBufferNow(); - - return ( ) => { - timer.on(1200); - }; -})(); - -/******************************************************************************/ - -const pageSelectorChanged = function() { - const select = qs$('#pageSelector'); - window.location.replace('#' + select.value); - pageSelectorFromURLHash(); -}; - -const pageSelectorFromURLHash = (( ) => { - let lastHash; - let lastSelectedTabId; - - return function() { - let hash = window.location.hash.slice(1); - let match = /^([^+]+)\+(.+)$/.exec(hash); - if ( match !== null ) { - hash = match[1]; - activeTabId = parseInt(match[2], 10) || 0; - window.location.hash = '#' + hash; - } - - if ( hash !== lastHash ) { - const select = qs$('#pageSelector'); - let option = qs$(select, `option[value="${hash}"]`); - if ( option === null ) { - hash = '0'; - option = select.options[0]; - } - select.selectedIndex = option.index; - select.value = option.value; - lastHash = hash; - } - - selectedTabId = hash === '_' - ? activeTabId - : parseInt(hash, 10) || 0; - - if ( lastSelectedTabId === selectedTabId ) { return; } - - rowFilterer.filterAll(); - updateCurrentTabTitle(); - dom.cl.toggle('.needdom', 'disabled', selectedTabId <= 0); - dom.cl.toggle('.needscope', 'disabled', selectedTabId <= 0); - lastSelectedTabId = selectedTabId; - dispatchTabidChange.onric({ timeout: 1000 }); - }; -})(); - -/******************************************************************************/ - -const reloadTab = function(bypassCache = false) { - const tabId = tabIdFromPageSelector(); - if ( tabId <= 0 ) { return; } - messaging.send('loggerUI', { - what: 'reloadTab', - tabId, - bypassCache, - }); -}; - -dom.on('#refresh', 'click', ev => { - reloadTab(ev.ctrlKey || ev.metaKey || ev.shiftKey); -}); - -dom.on(document, 'keydown', ev => { - if ( ev.isComposing ) { return; } - let bypassCache = false; - switch ( ev.key ) { - case 'F5': - bypassCache = ev.ctrlKey || ev.metaKey || ev.shiftKey; - break; - case 'r': - if ( (ev.ctrlKey || ev.metaKey) !== true ) { return; } - break; - case 'R': - if ( (ev.ctrlKey || ev.metaKey) !== true ) { return; } - bypassCache = true; - break; - default: - return; - } - reloadTab(bypassCache); - ev.preventDefault(); - ev.stopPropagation(); -}, { capture: true }); - -/******************************************************************************/ -/******************************************************************************/ - -(( ) => { - const reRFC3986 = /^([^:/?#]+:)?(\/\/[^/?#]*)?([^?#]*)(\?[^#]*)?(#.*)?/; - const reSchemeOnly = /^[\w-]+:$/; - const staticFilterTypes = { - 'beacon': 'ping', - 'doc': 'document', - 'css': 'stylesheet', - 'frame': 'subdocument', - 'object_subrequest': 'object', - 'csp_report': 'other', - }; - const createdStaticFilters = {}; - const reIsExceptionFilter = /^@@|^[\w.-]*?#@#/; - - let dialog = null; - let targetRow = null; - let targetType; - let targetURLs = []; - let targetFrameHostname; - let targetPageHostname; - let targetTabId; - let targetDomain; - let targetPageDomain; - let targetFrameDomain; - - const uglyTypeFromSelector = pane => { - const prettyType = selectValue('select.type.' + pane); - if ( pane === 'static' ) { - return staticFilterTypes[prettyType] || prettyType; - } - return uglyRequestTypes[prettyType] || prettyType; - }; - - const selectNode = selector => { - return qs$(dialog, selector); - }; - - const selectValue = selector => { - return selectNode(selector).value || ''; - }; - - const staticFilterNode = ( ) => { - return qs$(dialog, 'div.panes > div.static textarea'); - }; - - const toExceptionFilter = (filter, extended) => { - if ( reIsExceptionFilter.test(filter) ) { return filter; } - return extended ? filter.replace('##', '#@#') : `@@${filter}`; - }; - - const onColorsReady = function(response) { - dom.cl.toggle(dom.body, 'dirty', response.dirty); - for ( const url in response.colors ) { - if ( hasOwnProperty(response.colors, url) === false ) { continue; } - const colorEntry = response.colors[url]; - const node = qs$(dialog, `.dynamic .entry .action[data-url="${url}"]`); - if ( node === null ) { continue; } - dom.cl.toggle(node, 'allow', colorEntry.r === 2); - dom.cl.toggle(node, 'noop', colorEntry.r === 3); - dom.cl.toggle(node, 'block', colorEntry.r === 1); - dom.cl.toggle(node, 'own', colorEntry.own); - } - }; - - const colorize = async function() { - const response = await messaging.send('loggerUI', { - what: 'getURLFilteringData', - context: selectValue('select.dynamic.origin'), - urls: targetURLs, - type: uglyTypeFromSelector('dynamic'), - }); - onColorsReady(response); - }; - - const parseStaticInputs = function() { - const options = []; - const block = selectValue('select.static.action') === ''; - let filter = ''; - if ( !block ) { - filter = '@@'; - } - let value = selectValue('select.static.url'); - if ( value !== '' ) { - if ( reSchemeOnly.test(value) ) { - value = `|${value}`; - } else { - if ( /[/?]/.test(value) === false ) { - value += '^'; - } - value = `||${value}`; - } - } - filter += value; - value = selectValue('select.static.type'); - if ( value !== '' ) { - options.push(uglyTypeFromSelector('static')); - } - value = selectValue('select.static.origin'); - if ( value !== '' ) { - if ( value === targetDomain ) { - options.push('1p'); - } else { - options.push('domain=' + value); - } - } - if ( block && selectValue('select.static.importance') !== '' ) { - options.push('important'); - } - if ( options.length ) { - filter += '$' + options.join(','); - } - staticFilterNode().value = filter; - updateWidgets(); - }; - - const updateWidgets = function() { - const value = staticFilterNode().value; - dom.cl.toggle( - qs$(dialog, '#createStaticFilter'), - 'disabled', - hasOwnProperty(createdStaticFilters, value) || value === '' - ); - }; - - const onClick = async function(ev) { - const target = ev.target; - const tcl = target.classList; - - // Close entry tools - if ( tcl.contains('closeButton') ) { - ev.stopPropagation(); - toggleOff(); - return; - } - - // Select a pane - if ( tcl.contains('header') ) { - ev.stopPropagation(); - dom.attr(dialog, 'data-pane', dom.attr(target, 'data-pane')); - return; - } - - // Toggle temporary exception filter - if ( tcl.contains('exceptor') ) { - ev.stopPropagation(); - const filter = filterFromTargetRow(); - const status = await messaging.send('loggerUI', { - what: 'toggleInMemoryFilter', - filter: toExceptionFilter(filter, dom.cl.has(targetRow, 'extendedRealm')), - }); - const row = target.closest('div'); - dom.cl.toggle(row, 'exceptored', status); - return; - } - - // Create static filter - if ( target.id === 'createStaticFilter' ) { - ev.stopPropagation(); - const value = staticFilterNode().value - .replace(/^((?:@@)?\/.+\/)(\$|$)/, '$1*$2'); - // Avoid duplicates - if ( hasOwnProperty(createdStaticFilters, value) ) { return; } - createdStaticFilters[value] = true; - // https://github.com/uBlockOrigin/uBlock-issues/issues/1281#issuecomment-704217175 - // TODO: - // Figure a way to use the actual document URL. Currently using - // a synthetic URL derived from the document hostname. - if ( value !== '' ) { - messaging.send('loggerUI', { - what: 'createUserFilter', - autoComment: true, - filters: value, - docURL: `https://${targetFrameHostname}/`, - }); - } - updateWidgets(); - return; - } - - // Save url filtering rule(s) - if ( target.id === 'saveRules' ) { - ev.stopPropagation(); - await messaging.send('loggerUI', { - what: 'saveURLFilteringRules', - context: selectValue('select.dynamic.origin'), - urls: targetURLs, - type: uglyTypeFromSelector('dynamic'), - }); - colorize(); - return; - } - - const persist = !!ev.ctrlKey || !!ev.metaKey; - - // Remove url filtering rule - if ( tcl.contains('action') ) { - ev.stopPropagation(); - await messaging.send('loggerUI', { - what: 'setURLFilteringRule', - context: selectValue('select.dynamic.origin'), - url: dom.attr(target, 'data-url'), - type: uglyTypeFromSelector('dynamic'), - action: 0, - persist: persist, - }); - colorize(); - return; - } - - // add "allow" url filtering rule - if ( tcl.contains('allow') ) { - ev.stopPropagation(); - await messaging.send('loggerUI', { - what: 'setURLFilteringRule', - context: selectValue('select.dynamic.origin'), - url: dom.attr(target.parentNode, 'data-url'), - type: uglyTypeFromSelector('dynamic'), - action: 2, - persist: persist, - }); - colorize(); - return; - } - - // add "block" url filtering rule - if ( tcl.contains('noop') ) { - ev.stopPropagation(); - await messaging.send('loggerUI', { - what: 'setURLFilteringRule', - context: selectValue('select.dynamic.origin'), - url: dom.attr(target.parentNode, 'data-url'), - type: uglyTypeFromSelector('dynamic'), - action: 3, - persist: persist, - }); - colorize(); - return; - } - - // add "block" url filtering rule - if ( tcl.contains('block') ) { - ev.stopPropagation(); - await messaging.send('loggerUI', { - what: 'setURLFilteringRule', - context: selectValue('select.dynamic.origin'), - url: dom.attr(target.parentNode, 'data-url'), - type: uglyTypeFromSelector('dynamic'), - action: 1, - persist: persist, - }); - colorize(); - return; - } - - // Highlight corresponding element in target web page - if ( tcl.contains('picker') ) { - ev.stopPropagation(); - messaging.send('loggerUI', { - what: 'launchElementPicker', - tabId: targetTabId, - targetURL: 'img\t' + targetURLs[0], - select: true, - }); - return; - } - - // Reload tab associated with event - if ( tcl.contains('reload') ) { - ev.stopPropagation(); - messaging.send('loggerUI', { - what: 'reloadTab', - tabId: targetTabId, - bypassCache: ev.ctrlKey || ev.metaKey || ev.shiftKey, - }); - return; - } - }; - - const onSelectChange = function(ev) { - const tcl = ev.target.classList; - - if ( tcl.contains('dynamic') ) { - colorize(); - return; - } - - if ( tcl.contains('static') ) { - parseStaticInputs(); - return; - } - }; - - const onInputChange = function() { - updateWidgets(); - }; - - const createPreview = function(type, url) { - const cantPreview = - type !== 'image' || - dom.cl.has(targetRow, 'networkRealm') === false || - dom.attr(targetRow, 'data-status') === '1'; - - // Whether picker can be used - dom.cl.toggle( - qs$(dialog, '.picker'), - 'hide', - targetTabId < 0 || cantPreview - ); - - // Whether the resource can be previewed - if ( cantPreview ) { return; } - - const container = qs$(dialog, '.preview'); - dom.on(qs$(container, 'span'), 'click', ( ) => { - const preview = dom.create('img'); - dom.attr(preview, 'src', url); - container.replaceChild(preview, container.firstElementChild); - }, { once: true }); - - dom.cl.remove(container, 'hide'); - }; - - // https://github.com/gorhill/uBlock/issues/1511 - const shortenLongString = function(url, max) { - const urlLen = url.length; - if ( urlLen <= max ) { - return url; - } - const n = urlLen - max - 1; - const i = (urlLen - n) / 2 | 0; - return url.slice(0, i) + '…' + url.slice(i + n); - }; - - // Build list of candidate URLs - const createTargetURLs = function(url) { - const matches = reRFC3986.exec(url); - if ( matches === null ) { return []; } - if ( typeof matches[2] !== 'string' || matches[2].length === 0 ) { - return [ matches[1] ]; - } - // Shortest URL for a valid URL filtering rule - const urls = []; - const rootURL = matches[1] + matches[2]; - urls.unshift(rootURL); - const path = matches[3] || ''; - let pos = path.charAt(0) === '/' ? 1 : 0; - while ( pos < path.length ) { - pos = path.indexOf('/', pos); - if ( pos === -1 ) { - pos = path.length; - } else { - pos += 1; - } - urls.unshift(rootURL + path.slice(0, pos)); - } - const query = matches[4] || ''; - if ( query !== '' ) { - urls.unshift(rootURL + path + query); - } - return urls; - }; - - const filterFromTargetRow = function() { - return dom.text(targetRow.children[COLUMN_FILTER]); - }; - - const aliasURLFromID = function(id) { - if ( id === '' ) { return ''; } - for ( const entry of loggerEntries ) { - if ( `${entry.id}` !== id ) { continue; } - const match = /\baliasURL=([^\x1F]+)/.exec(entry.textContent); - if ( match === null ) { return ''; } - return match[1]; - } - return ''; - }; - - const toSummaryPaneFilterNode = async function(receiver, filter) { - receiver.children[COLUMN_FILTER].textContent = filter; - if ( dom.cl.has(targetRow, 'canLookup') === false ) { return; } - const isException = reIsExceptionFilter.test(filter); - let isExcepted = false; - if ( isException ) { - isExcepted = await messaging.send('loggerUI', { - what: 'hasInMemoryFilter', - filter: toExceptionFilter(filter, dom.cl.has(targetRow, 'extendedRealm')), - }); - } - if ( isException && isExcepted === false ) { return; } - dom.cl.toggle(receiver, 'exceptored', isExcepted); - receiver.children[2].style.visibility = ''; - }; - - const fillSummaryPaneFilterList = async function(rows) { - const rawFilter = targetRow.children[COLUMN_FILTER].textContent; - - const nodeFromFilter = function(filter, lists) { - const fragment = document.createDocumentFragment(); - const template = qs$('#filterFinderListEntry > span'); - for ( const list of lists ) { - const span = dom.clone(template); - let a = qs$(span, 'a:nth-of-type(1)'); - a.href += encodeURIComponent(list.assetKey); - a.append(i18n.patchUnicodeFlags(list.title)); - a = qs$(span, 'a:nth-of-type(2)'); - if ( list.supportURL ) { - dom.attr(a, 'href', list.supportURL); - } else { - a.style.display = 'none'; - } - if ( fragment.childElementCount !== 0 ) { - fragment.appendChild(document.createTextNode('\n')); - } - fragment.appendChild(span); - } - return fragment; - }; - - const handleResponse = function(response) { - if ( response instanceof Object === false ) { - response = {}; - } - let bestMatchFilter = ''; - for ( const filter in response ) { - if ( filter.length > bestMatchFilter.length ) { - bestMatchFilter = filter; - } - } - if ( - bestMatchFilter !== '' && - Array.isArray(response[bestMatchFilter]) - ) { - toSummaryPaneFilterNode(rows[0], bestMatchFilter); - rows[1].children[1].appendChild(nodeFromFilter( - bestMatchFilter, - response[bestMatchFilter] - )); - } - // https://github.com/gorhill/uBlock/issues/2179 - if ( rows[1].children[1].childElementCount === 0 ) { - i18n.safeTemplateToDOM( - 'loggerStaticFilteringFinderSentence2', - { filter: rawFilter }, - rows[1].children[1] - ); - } - }; - - if ( dom.cl.has(targetRow, 'networkRealm') ) { - const response = await messaging.send('loggerUI', { - what: 'listsFromNetFilter', - rawFilter: rawFilter, - }); - handleResponse(response); - } else if ( dom.cl.has(targetRow, 'extendedRealm') ) { - const response = await messaging.send('loggerUI', { - what: 'listsFromCosmeticFilter', - url: targetRow.children[COLUMN_URL].textContent, - rawFilter: rawFilter, - }); - handleResponse(response); - } - }; - - const fillSummaryPane = function() { - const rows = qsa$(dialog, '.pane.details > div'); - const tr = targetRow; - const trcl = tr.classList; - const trch = tr.children; - let text; - // Filter and context - text = filterFromTargetRow(); - if ( - (text !== '') && - (trcl.contains('extendedRealm') || trcl.contains('networkRealm')) - ) { - toSummaryPaneFilterNode(rows[0], text); - } else { - rows[0].style.display = 'none'; - } - // Rule - if ( - (text !== '') && - ( - trcl.contains('dynamicHost') || - trcl.contains('dynamicUrl') || - trcl.contains('switchRealm') - ) - ) { - rows[2].children[1].textContent = text; - } else { - rows[2].style.display = 'none'; - } - // Filter list - if ( trcl.contains('canLookup') ) { - fillSummaryPaneFilterList(rows); - } else { - rows[1].style.display = 'none'; - } - // Root and immediate contexts - const tabhn = dom.attr(tr, 'data-tabhn') || ''; - const dochn = dom.attr(tr, 'data-dochn') || ''; - if ( tabhn !== '' && tabhn !== dochn ) { - rows[3].children[1].textContent = tabhn; - } else { - rows[3].style.display = 'none'; - } - if ( dochn !== '' ) { - rows[4].children[1].textContent = dochn; - } else { - rows[4].style.display = 'none'; - } - // Partyness - text = dom.attr(tr, 'data-parties') || ''; - if ( text !== '' ) { - rows[5].children[1].textContent = `(${trch[COLUMN_PARTYNESS].textContent})\u2002${text}`; - } else { - rows[5].style.display = 'none'; - } - // Type - text = trch[COLUMN_TYPE].textContent; - if ( text !== '' ) { - rows[6].children[1].textContent = text; - } else { - rows[6].style.display = 'none'; - } - // URL - const canonicalURL = trch[COLUMN_URL].textContent; - if ( canonicalURL !== '' ) { - const attr = dom.attr(tr, 'data-status') || ''; - if ( attr !== '' ) { - dom.attr(rows[7], 'data-status', attr); - if ( tr.hasAttribute('data-modifier') ) { - dom.attr(rows[7], 'data-modifier', ''); - } - } - rows[7].children[1].appendChild(dom.clone(trch[COLUMN_URL])); - } else { - rows[7].style.display = 'none'; - } - // Alias URL - text = tr.dataset.aliasid; - const aliasURL = text ? aliasURLFromID(text) : ''; - if ( aliasURL !== '' ) { - rows[8].children[1].textContent = - hostnameFromURI(aliasURL) + ' \u21d2\n\u2003' + - hostnameFromURI(canonicalURL); - rows[9].children[1].textContent = aliasURL; - } else { - rows[8].style.display = 'none'; - rows[9].style.display = 'none'; - } - }; - - // Fill dynamic URL filtering pane - const fillDynamicPane = function() { - if ( dom.cl.has(targetRow, 'extendedRealm') ) { return; } - - // https://github.com/uBlockOrigin/uBlock-issues/issues/662#issuecomment-509220702 - if ( targetType === 'doc' ) { return; } - - // https://github.com/gorhill/uBlock/issues/2469 - if ( targetURLs.length === 0 || reSchemeOnly.test(targetURLs[0]) ) { - return; - } - - // Fill context selector - let select = selectNode('select.dynamic.origin'); - fillOriginSelect(select, targetPageHostname, targetPageDomain); - const option = document.createElement('option'); - option.textContent = '*'; - dom.attr(option, 'value', '*'); - select.appendChild(option); - - // Fill type selector - select = selectNode('select.dynamic.type'); - select.options[0].textContent = targetType; - dom.attr(select.options[0], 'value', targetType); - select.selectedIndex = 0; - - // Fill entries - const menuEntryTemplate = qs$(dialog, '.dynamic .toolbar .entry'); - const tbody = qs$(dialog, '.dynamic .entries'); - for ( const targetURL of targetURLs ) { - const menuEntry = dom.clone(menuEntryTemplate); - dom.attr(menuEntry.children[0], 'data-url', targetURL); - menuEntry.children[1].textContent = shortenLongString(targetURL, 128); - tbody.appendChild(menuEntry); - } - - colorize(); - }; - - const fillOriginSelect = function(select, hostname, domain) { - const template = i18n$('loggerStaticFilteringSentencePartOrigin'); - let value = hostname; - for (;;) { - const option = document.createElement('option'); - dom.attr(option, 'value', value); - option.textContent = template.replace('{{origin}}', value); - select.appendChild(option); - if ( value === domain ) { break; } - const pos = value.indexOf('.'); - if ( pos === -1 ) { break; } - value = value.slice(pos + 1); - } - }; - - // Fill static filtering pane - const fillStaticPane = function() { - if ( dom.cl.has(targetRow, 'extendedRealm') ) { return; } - - const template = i18n$('loggerStaticFilteringSentence'); - const rePlaceholder = /\{\{[^}]+?\}\}/g; - const nodes = []; - let pos = 0; - for (;;) { - const match = rePlaceholder.exec(template); - if ( match === null ) { break; } - if ( pos !== match.index ) { - nodes.push(document.createTextNode(template.slice(pos, match.index))); - } - pos = rePlaceholder.lastIndex; - let select, option; - switch ( match[0] ) { - case '{{br}}': - nodes.push(document.createElement('br')); - break; - - case '{{action}}': - select = document.createElement('select'); - select.className = 'static action'; - option = document.createElement('option'); - dom.attr(option, 'value', ''); - option.textContent = i18n$('loggerStaticFilteringSentencePartBlock'); - select.appendChild(option); - option = document.createElement('option'); - dom.attr(option, 'value', '@@'); - option.textContent = i18n$('loggerStaticFilteringSentencePartAllow'); - select.appendChild(option); - nodes.push(select); - break; - - case '{{type}}': { - const filterType = staticFilterTypes[targetType] || targetType; - select = document.createElement('select'); - select.className = 'static type'; - option = document.createElement('option'); - dom.attr(option, 'value', filterType); - option.textContent = i18n$('loggerStaticFilteringSentencePartType').replace('{{type}}', filterType); - select.appendChild(option); - option = document.createElement('option'); - dom.attr(option, 'value', ''); - option.textContent = i18n$('loggerStaticFilteringSentencePartAnyType'); - select.appendChild(option); - nodes.push(select); - break; - } - case '{{url}}': - select = document.createElement('select'); - select.className = 'static url'; - for ( const targetURL of targetURLs ) { - const value = targetURL.replace(/^[a-z-]+:\/\//, ''); - option = document.createElement('option'); - dom.attr(option, 'value', value); - option.textContent = shortenLongString(value, 128); - select.appendChild(option); - } - nodes.push(select); - break; - - case '{{origin}}': - select = document.createElement('select'); - select.className = 'static origin'; - fillOriginSelect(select, targetFrameHostname, targetFrameDomain); - option = document.createElement('option'); - dom.attr(option, 'value', ''); - option.textContent = i18n$('loggerStaticFilteringSentencePartAnyOrigin'); - select.appendChild(option); - nodes.push(select); - break; - - case '{{importance}}': - select = document.createElement('select'); - select.className = 'static importance'; - option = document.createElement('option'); - dom.attr(option, 'value', ''); - option.textContent = i18n$('loggerStaticFilteringSentencePartNotImportant'); - select.appendChild(option); - option = document.createElement('option'); - dom.attr(option, 'value', 'important'); - option.textContent = i18n$('loggerStaticFilteringSentencePartImportant'); - select.appendChild(option); - nodes.push(select); - break; - - default: - break; - } - } - if ( pos < template.length ) { - nodes.push(document.createTextNode(template.slice(pos))); - } - const parent = qs$(dialog, 'div.panes > .static > div:first-of-type'); - for ( let i = 0; i < nodes.length; i++ ) { - parent.appendChild(nodes[i]); - } - parseStaticInputs(); - }; - - const fillDialog = function(domains) { - dialog = dom.clone('#templates .netFilteringDialog'); - dom.cl.toggle( - dialog, - 'extendedRealm', - dom.cl.has(targetRow, 'extendedRealm') - ); - targetDomain = domains[0]; - targetPageDomain = domains[1]; - targetFrameDomain = domains[2]; - createPreview(targetType, targetURLs[0]); - fillSummaryPane(); - fillDynamicPane(); - fillStaticPane(); - dom.on(dialog, 'click', ev => { onClick(ev); }, true); - dom.on(dialog, 'change', onSelectChange, true); - dom.on(dialog, 'input', onInputChange, true); - const container = qs$('#inspectors .entryTools'); - if ( container.firstChild ) { - container.replaceChild(dialog, container.firstChild); - } else { - container.append(dialog); - } - }; - - const toggleOn = async function(ev) { - const clickedRow = ev.target.closest('.canDetails'); - if ( clickedRow === null ) { return; } - if ( clickedRow === targetRow ) { - return toggleOff(); - } - targetRow = clickedRow; - ev.stopPropagation(); - targetTabId = tabIdFromAttribute(targetRow); - targetType = targetRow.children[COLUMN_TYPE].textContent.trim() || ''; - targetURLs = createTargetURLs(targetRow.children[COLUMN_URL].textContent); - targetPageHostname = dom.attr(targetRow, 'data-tabhn') || ''; - targetFrameHostname = dom.attr(targetRow, 'data-dochn') || ''; - - // We need the root domain names for best user experience. - const domains = await messaging.send('loggerUI', { - what: 'getDomainNames', - targets: [ - targetURLs[0], - targetPageHostname, - targetFrameHostname - ], - }); - fillDialog(domains); - }; - - const toggleOff = function() { - const container = qs$('#inspectors .entryTools'); - if ( container.firstChild ) { - container.firstChild.remove(); - } - targetURLs = []; - targetRow = null; - dialog = null; - }; - - // Restore position of entry tools dialog - vAPI.localStorage.removeItem('loggerUI.entryTools'); - - // This is to detect text selection, in which case the click won't be - // interpreted as a request to open the details of the entry. - let selectionAtMouseDown; - let selectionAtTimer; - dom.on('#netInspector', 'mousedown', '.canDetails *:not(a)', ev => { - if ( ev.button !== 0 ) { return; } - if ( selectionAtMouseDown !== undefined ) { return; } - selectionAtMouseDown = document.getSelection().toString(); - }); - - dom.on('#netInspector', 'click', '.canDetails *:not(a)', ev => { - if ( ev.button !== 0 ) { return; } - if ( selectionAtTimer !== undefined ) { - clearTimeout(selectionAtTimer); - } - selectionAtTimer = setTimeout(( ) => { - selectionAtTimer = undefined; - const selectionAsOfNow = document.getSelection().toString(); - const selectionHasChanged = selectionAsOfNow !== selectionAtMouseDown; - selectionAtMouseDown = undefined; - if ( selectionHasChanged && selectionAsOfNow !== '' ) { return; } - toggleOn(ev); - }, 333); - }); - - dom.on('#netInspector', 'click', '.logEntry > div > span:nth-of-type(8) a', ev => { - vAPI.messaging.send('codeViewer', { - what: 'gotoURL', - details: { - url: ev.target.getAttribute('href'), - select: true, - }, - }); - ev.preventDefault(); - ev.stopPropagation(); - } - ); -})(); - -/******************************************************************************/ -/******************************************************************************/ - -const consolePane = (( ) => { - let on = false; - - const lastInfoEntry = ( ) => { - let j = Number.MAX_SAFE_INTEGER; - let i = loggerEntries.length; - while ( i-- ) { - const entry = loggerEntries[i]; - if ( entry.tabId !== selectedTabId ) { continue; } - if ( entry.realm !== 'message' ) { continue; } - if ( entry.voided ) { continue; } - j = entry.id; - } - return j; - }; - - const filterExpr = { - not: true, - pattern: '', - }; - - const filterExprFromInput = ( ) => { - const raw = qs$('#infoInspector .permatoolbar input').value.trim(); - if ( raw.startsWith('-') && raw.length > 1 ) { - filterExpr.pattern = raw.slice(1); - filterExpr.not = true; - } else { - filterExpr.pattern = raw; - filterExpr.not = false; - } - if ( filterExpr.pattern !== '' ) { - filterExpr.pattern = new RegExp(escapeRegexStr(filterExpr.pattern), 'i'); - } - }; - - const addRows = ( ) => { - const { not, pattern } = filterExpr; - const topRow = qs$('#infoInspector .vscrollable > div'); - const topid = topRow !== null ? parseInt(topRow.dataset.id, 10) : 0; - const fragment = new DocumentFragment(); - for ( const entry of loggerEntries ) { - if ( entry.id <= topid ) { break; } - if ( entry.tabId !== selectedTabId ) { continue; } - if ( entry.realm !== 'message' ) { continue; } - if ( entry.voided ) { continue; } - const fields = entry.textContent.split('\x1F').slice(0, 2); - const textContent = fields.join('\xA0'); - if ( pattern instanceof RegExp ) { - if ( pattern.test(textContent) === not ) { continue; } - } - const div = document.createElement('div'); - div.dataset.id = `${entry.id}`; - div.dataset.type = entry.type; - div.textContent = textContent; - fragment.append(div); - } - const container = qs$('#infoInspector .vscrollable'); - container.prepend(fragment); - } - - const removeRows = (before = 0) => { - if ( before === 0 ) { - before = lastInfoEntry(); - } - const rows = qsa$('#infoInspector .vscrollable > div'); - let i = rows.length; - while ( i-- ) { - const div = rows[i]; - const id = parseInt(div.dataset.id, 10); - if ( id > before ) { break; } - div.remove(); - } - } - - const updateContent = ( ) => { - if ( on === false ) { return; } - removeRows(); - addRows(); - }; - - const onTabIdChanged = ( ) => { - if ( on === false ) { return; } - removeRows(Number.MAX_SAFE_INTEGER); - addRows(); - }; - - const toggleOn = ( ) => { - if ( on ) { return; } - addRows(); - dom.on(document, 'tabIdChanged', onTabIdChanged); - on = true; - }; - - const toggleOff = ( ) => { - removeRows(Number.MAX_SAFE_INTEGER); - dom.off(document, 'tabIdChanged', onTabIdChanged); - on = false; - }; - - const resizeObserver = new self.ResizeObserver(entries => { - if ( entries.length === 0 ) { return; } - const rect = entries[0].contentRect; - if ( rect.width > 0 && rect.height > 0 ) { - toggleOn(); - } else { - toggleOff(); - } - }); - resizeObserver.observe(qs$('#infoInspector')); - - dom.on('button.logConsole', 'click', ev => { - const active = dom.cl.toggle('#inspectors', 'console'); - dom.cl.toggle(ev.currentTarget, 'active', active); - }); - - dom.on('#infoInspector button#clearConsole', 'click', ( ) => { - const ids = []; - qsa$('#infoInspector .vscrollable > div').forEach(div => { - ids.push(parseInt(div.dataset.id, 10)); - }); - rowJanitor.removeSpecificRows(ids); - }); - - dom.on('#infoInspector button#logLevel', 'click', ev => { - const level = dom.cl.toggle(ev.currentTarget, 'active') ? 2 : 1; - broadcast({ what: 'loggerLevelChanged', level }); - }); - - const throttleFilter = vAPI.defer.create(( ) => { - filterExprFromInput(); - updateContent(); - }); - dom.on('#infoInspector .permatoolbar input', 'input', ( ) => { - throttleFilter.offon(517); - }); - - return { updateContent }; -})(); - -/******************************************************************************/ -/******************************************************************************/ - -const rowFilterer = (( ) => { - const userFilters = []; - const builtinFilters = []; - - let masterFilterSwitch = true; - let filters = []; - - const parseInput = function() { - userFilters.length = 0; - - const rawParts = qs$('#filterInput > input').value.trim().split(/\s+/); - const n = rawParts.length; - const reStrs = []; - let not = false; - for ( let i = 0; i < n; i++ ) { - let rawPart = rawParts[i]; - if ( rawPart.charAt(0) === '!' ) { - if ( reStrs.length === 0 ) { - not = true; - } - rawPart = rawPart.slice(1); - } - let reStr = ''; - if ( rawPart.startsWith('/') && rawPart.endsWith('/') ) { - reStr = rawPart.slice(1, -1); - try { - new RegExp(reStr); - } catch(ex) { - reStr = ''; - } - } - if ( reStr === '' ) { - const hardBeg = rawPart.startsWith('|'); - if ( hardBeg ) { - rawPart = rawPart.slice(1); - } - const hardEnd = rawPart.endsWith('|'); - if ( hardEnd ) { - rawPart = rawPart.slice(0, -1); - } - // https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions - reStr = escapeRegexStr(rawPart); - // https://github.com/orgs/uBlockOrigin/teams/ublock-issues-volunteers/discussions/51 - // Be more flexible when interpreting leading/trailing pipes, - // as leading/trailing pipes are often used in static filters. - if ( hardBeg ) { - reStr = reStr !== '' ? '(?:^|\\s|\\|)' + reStr : '\\|'; - } - if ( hardEnd ) { - reStr += '(?:\\||\\s|$)'; - } - } - if ( reStr === '' ) { continue; } - reStrs.push(reStr); - if ( i < (n - 1) && rawParts[i + 1] === '||' ) { - i += 1; - continue; - } - reStr = reStrs.length === 1 ? reStrs[0] : reStrs.join('|'); - userFilters.push({ - re: new RegExp(reStr, 'i'), - r: !not - }); - reStrs.length = 0; - not = false; - } - filters = builtinFilters.concat(userFilters); - }; - - const filterOne = logEntry => { - if ( logEntry.dead ) { return false; } - if ( selectedTabId !== 0 ) { - if ( logEntry.tabId !== undefined && logEntry.tabId > 0 ) { - if (logEntry.tabId !== selectedTabId ) { return false; } - } - } - - if ( masterFilterSwitch === false || filters.length === 0 ) { - return true; - } - - // Do not filter out tab load event, they help separate key sections - // of logger. - if ( logEntry.type === 'tabLoad' ) { return true; } - - for ( const f of filters ) { - if ( f.re.test(logEntry.textContent) !== f.r ) { return false; } - } - return true; - }; - - const filterAll = function() { - filteredLoggerEntries = []; - filteredLoggerEntryVoidedCount = 0; - for ( const entry of loggerEntries ) { - if ( filterOne(entry) === false ) { continue; } - filteredLoggerEntries.push(entry); - if ( entry.voided ) { - filteredLoggerEntryVoidedCount += 1; - } - } - viewPort.updateContent(0); - dom.cl.toggle('#filterButton', 'active', filters.length !== 0); - dom.cl.toggle('#clean', 'disabled', filteredLoggerEntryVoidedCount === 0); - dom.cl.toggle('#clear', 'disabled', filteredLoggerEntries.length === 0); - }; - - const onFilterChangedAsync = (( ) => { - const commit = ( ) => { - parseInput(); - filterAll(); - }; - const timer = vAPI.defer.create(commit); - return ( ) => { - timer.offon(750); - }; - })(); - - const onFilterButton = function() { - masterFilterSwitch = !masterFilterSwitch; - dom.cl.toggle('#netInspector', 'f', masterFilterSwitch); - filterAll(); - }; - - const onToggleExtras = function(ev) { - dom.cl.toggle(ev.target, 'expanded'); - }; - - const builtinFilterExpression = function() { - builtinFilters.length = 0; - const filtexElems = qsa$('#filterExprPicker [data-filtex]'); - const orExprs = []; - let not = false; - for ( const filtexElem of filtexElems ) { - const filtex = filtexElem.dataset.filtex; - const active = dom.cl.has(filtexElem, 'on'); - if ( filtex === '!' ) { - if ( orExprs.length !== 0 ) { - builtinFilters.push({ - re: new RegExp(orExprs.join('|')), - r: !not - }); - orExprs.length = 0; - } - not = active; - } else if ( active ) { - orExprs.push(filtex); - } - } - if ( orExprs.length !== 0 ) { - builtinFilters.push({ - re: new RegExp(orExprs.join('|')), - r: !not - }); - } - filters = builtinFilters.concat(userFilters); - dom.cl.toggle('#filterExprButton', 'active', builtinFilters.length !== 0); - filterAll(); - }; - - dom.on('#filterButton', 'click', onFilterButton); - dom.on('#filterInput > input', 'input', onFilterChangedAsync); - dom.on('#filterExprButton', 'click', onToggleExtras); - dom.on('#filterExprPicker', 'click', '[data-filtex]', ev => { - dom.cl.toggle(ev.target, 'on'); - builtinFilterExpression(); - }); - dom.on('#filterInput > input', 'drop', ev => { - const dropItem = item => { - if ( item.kind !== 'string' ) { return false; } - if ( item.type !== 'text/plain' ) { return false; } - item.getAsString(s => { - qs$('#filterInput > input').value = s; - parseInput(); - filterAll(); - }); - return true; - }; - for ( const item of ev.dataTransfer.items ) { - if ( dropItem(item) === false ) { continue; } - ev.preventDefault(); - break; - } - }); - - // https://github.com/gorhill/uBlock/issues/404 - // Ensure page state is in sync with the state of its various widgets. - parseInput(); - builtinFilterExpression(); - filterAll(); - - return { filterOne, filterAll }; -})(); - -/******************************************************************************/ - -// Discard logger entries to prevent undue memory usage growth. The criteria -// to discard are multiple and user configurable: -// -// - Max number of page load per distinct tab -// - Max number of entry per distinct tab -// - Max entry age - -const rowJanitor = (( ) => { - const tabIdToDiscard = new Set(); - const tabIdToLoadCountMap = new Map(); - const tabIdToEntryCountMap = new Map(); - - let rowIndex = 0; - - const discard = function(deadline) { - const opts = loggerSettings.discard; - const maxLoadCount = typeof opts.maxLoadCount === 'number' - ? opts.maxLoadCount - : 0; - const maxEntryCount = typeof opts.maxEntryCount === 'number' - ? opts.maxEntryCount - : 0; - const obsolete = typeof opts.maxAge === 'number' - ? Date.now() / 1000 - opts.maxAge * 60 - : 0; - - let i = rowIndex; - // TODO: below should not happen -- remove when confirmed. - if ( i >= loggerEntries.length ) { - i = 0; - } - - if ( i === 0 ) { - tabIdToDiscard.clear(); - tabIdToLoadCountMap.clear(); - tabIdToEntryCountMap.clear(); - } - - let idel = -1; - let bufferedTabId = 0; - let bufferedEntryCount = 0; - let modified = false; - - while ( i < loggerEntries.length ) { - - if ( i % 64 === 0 && deadline.timeRemaining() === 0 ) { break; } - - const entry = loggerEntries[i]; - const tabId = entry.tabId || 0; - - if ( entry.dead || tabIdToDiscard.has(tabId) ) { - if ( idel === -1 ) { idel = i; } - i += 1; - continue; - } - - if ( maxLoadCount !== 0 && entry.type === 'tabLoad' ) { - let count = (tabIdToLoadCountMap.get(tabId) || 0) + 1; - tabIdToLoadCountMap.set(tabId, count); - if ( count >= maxLoadCount ) { - tabIdToDiscard.add(tabId); - } - } - - if ( maxEntryCount !== 0 ) { - if ( bufferedTabId !== tabId ) { - if ( bufferedEntryCount !== 0 ) { - tabIdToEntryCountMap.set(bufferedTabId, bufferedEntryCount); - } - bufferedTabId = tabId; - bufferedEntryCount = tabIdToEntryCountMap.get(tabId) || 0; - } - bufferedEntryCount += 1; - if ( bufferedEntryCount >= maxEntryCount ) { - tabIdToDiscard.add(bufferedTabId); - } - } - - // Since entries in the logger are chronologically ordered, - // everything below obsolete is to be discarded. - if ( obsolete !== 0 && entry.tstamp <= obsolete ) { - if ( idel === -1 ) { idel = i; } - break; - } - - if ( idel !== -1 ) { - loggerEntries.copyWithin(idel, i); - loggerEntries.length -= i - idel; - idel = -1; - modified = true; - } - - i += 1; - } - - if ( idel !== -1 ) { - loggerEntries.length = idel; - modified = true; - } - - if ( i >= loggerEntries.length ) { i = 0; } - rowIndex = i; - - if ( rowIndex === 0 ) { - tabIdToDiscard.clear(); - tabIdToLoadCountMap.clear(); - tabIdToEntryCountMap.clear(); - } - - if ( modified === false ) { return; } - - rowFilterer.filterAll(); - consolePane.updateContent(); - }; - - const discardAsync = function(deadline) { - if ( deadline ) { - discard(deadline); - } - janitorTimer.onidle(1889); - }; - - const janitorTimer = vAPI.defer.create(discardAsync); - - // Clear voided entries from the logger's visible content. - // - // Voided entries should be visible only from the "All" option of the - // tab selector. - // - const clean = function() { - if ( filteredLoggerEntries.length === 0 ) { return; } - - let j = 0; - let targetEntry = filteredLoggerEntries[0]; - for ( const entry of loggerEntries ) { - if ( entry !== targetEntry ) { continue; } - if ( entry.voided ) { - entry.dead = true; - } - j += 1; - if ( j === filteredLoggerEntries.length ) { break; } - targetEntry = filteredLoggerEntries[j]; - } - rowFilterer.filterAll(); - }; - - // Clear the logger's visible content. - // - // "Unrelated" entries -- shown for convenience -- will be also cleared - // if and only if the filtered logger content is made entirely of unrelated - // entries. In effect, this means clicking a second time on the eraser will - // cause unrelated entries to also be cleared. - // - const clear = function() { - if ( filteredLoggerEntries.length === 0 ) { return; } - - let clearUnrelated = true; - if ( selectedTabId !== 0 ) { - for ( const entry of filteredLoggerEntries ) { - if ( entry.tabId === selectedTabId ) { - clearUnrelated = false; - break; - } - } - } - - let j = 0; - let targetEntry = filteredLoggerEntries[0]; - for ( const entry of loggerEntries ) { - if ( entry !== targetEntry ) { continue; } - if ( entry.tabId === selectedTabId || clearUnrelated ) { - entry.dead = true; - } - j += 1; - if ( j === filteredLoggerEntries.length ) { break; } - targetEntry = filteredLoggerEntries[j]; - } - rowFilterer.filterAll(); - }; - - discardAsync(); - - dom.on('#clean', 'click', clean); - dom.on('#clear', 'click', clear); - - return { - inserted(count) { - if ( rowIndex !== 0 ) { - rowIndex += count; - } - }, - removeSpecificRows(descendingIds) { - if ( descendingIds.length === 0 ) { return; } - let i = loggerEntries.length; - let id = descendingIds.pop(); - while ( i-- ) { - const entry = loggerEntries[i]; - if ( entry.id !== id ) { continue; } - loggerEntries.splice(i, 1); - if ( descendingIds.length === 0 ) { break; } - id = descendingIds.pop(); - } - rowFilterer.filterAll(); - consolePane.updateContent(); - }, - }; -})(); - -/******************************************************************************/ - -const pauseNetInspector = function() { - netInspectorPaused = dom.cl.toggle('#netInspector', 'paused'); -}; - -/******************************************************************************/ - -const toggleVCompactView = function() { - dom.cl.toggle('#netInspector .vCompactToggler', 'vExpanded'); - viewPort.updateLayout(); -}; - -/******************************************************************************/ - -const popupManager = (( ) => { - let realTabId = 0; - let popup = null; - let popupObserver = null; - - const resizePopup = function() { - if ( popup === null ) { return; } - const popupBody = popup.contentWindow.document.body; - if ( popupBody.clientWidth !== 0 && popup.clientWidth !== popupBody.clientWidth ) { - popup.style.setProperty('width', popupBody.clientWidth + 'px'); - } - if ( popupBody.clientHeight !== 0 && popup.clientHeight !== popupBody.clientHeight ) { - popup.style.setProperty('height', popupBody.clientHeight + 'px'); - } - }; - - const onLoad = function() { - resizePopup(); - popupObserver.observe(popup.contentDocument.body, { - subtree: true, - attributes: true - }); - }; - - const setTabId = function(tabId) { - if ( popup === null ) { return; } - dom.attr(popup, 'src', `popup-fenix.html?portrait=1&tabId=${tabId}`); - }; - - const onTabIdChanged = function() { - const tabId = tabIdFromPageSelector(); - if ( tabId === 0 ) { return toggleOff(); } - realTabId = tabId; - setTabId(realTabId); - }; - - const toggleOn = function() { - const tabId = tabIdFromPageSelector(); - if ( tabId === 0 ) { return; } - realTabId = tabId; - - popup = qs$('#popupContainer'); - - dom.on(popup, 'load', onLoad); - popupObserver = new MutationObserver(resizePopup); - - const parent = qs$('#inspectors'); - const rect = parent.getBoundingClientRect(); - popup.style.setProperty('right', `${rect.right - parent.clientWidth}px`); - dom.cl.add(parent, 'popupOn'); - - dom.on(document, 'tabIdChanged', onTabIdChanged); - - setTabId(realTabId); - dom.cl.add('#showpopup', 'active'); - }; - - const toggleOff = function() { - dom.cl.remove('#showpopup', 'active'); - dom.off(document, 'tabIdChanged', onTabIdChanged); - dom.cl.remove('#inspectors', 'popupOn'); - dom.off(popup, 'load', onLoad); - popupObserver.disconnect(); - popupObserver = null; - dom.attr(popup, 'src', ''); - - realTabId = 0; - }; - - const api = { - get tabId() { return realTabId || 0; }, - toggleOff: function() { - if ( realTabId !== 0 ) { - toggleOff(); - } - } - }; - - dom.on('#showpopup', 'click', ( ) => { - void (realTabId === 0 ? toggleOn() : toggleOff()); - }); - - return api; -})(); - -/******************************************************************************/ - -// Filter hit stats' MVP ("minimum viable product") -// -const loggerStats = (( ) => { - const enabled = false; - const filterHits = new Map(); - let dialog; - let timer; - const makeRow = function() { - const div = document.createElement('div'); - div.appendChild(document.createElement('span')); - div.appendChild(document.createElement('span')); - return div; - }; - - const fillRow = function(div, entry) { - div.children[0].textContent = entry[1].toLocaleString(); - div.children[1].textContent = entry[0]; - }; - - const updateList = function() { - const sortedHits = Array.from(filterHits).sort((a, b) => { - return b[1] - a[1]; - }); - - const doc = document; - const parent = qs$(dialog, '.sortedEntries'); - let i = 0; - - // Reuse existing rows - for ( let iRow = 0; iRow < parent.childElementCount; iRow++ ) { - if ( i === sortedHits.length ) { break; } - fillRow(parent.children[iRow], sortedHits[i]); - i += 1; - } - - // Append new rows - if ( i < sortedHits.length ) { - const list = doc.createDocumentFragment(); - for ( ; i < sortedHits.length; i++ ) { - const div = makeRow(); - fillRow(div, sortedHits[i]); - list.appendChild(div); - } - parent.appendChild(list); - } - - // Remove extraneous rows - // [Should never happen at this point in this current - // bare-bone implementation] - }; - - const toggleOn = function() { - dialog = modalDialog.create( - '#loggerStatsDialog', - ( ) => { - dialog = undefined; - if ( timer !== undefined ) { - self.cancelIdleCallback(timer); - timer = undefined; - } - } - ); - updateList(); - modalDialog.show(); - }; - - dom.on('#loggerStats', 'click', toggleOn); - - return { - processFilter: function(filter) { - if ( enabled !== true ) { return; } - if ( filter.source !== 'static' && filter.source !== 'cosmetic' ) { - return; - } - filterHits.set(filter.raw, (filterHits.get(filter.raw) || 0) + 1); - if ( dialog === undefined || timer !== undefined ) { return; } - timer = self.requestIdleCallback( - ( ) => { - timer = undefined; - updateList(); - }, - { timeout: 2001 } - ); - } - }; -})(); - -/******************************************************************************/ - -(( ) => { - const lines = []; - const options = { - format: 'list', - encoding: 'markdown', - time: 'anonymous', - }; - let dialog; - - const collectLines = function() { - lines.length = 0; - let t0 = filteredLoggerEntries.length !== 0 - ? filteredLoggerEntries[filteredLoggerEntries.length - 1].tstamp - : 0; - for ( const entry of filteredLoggerEntries ) { - const text = entry.textContent; - const fields = []; - let beg = text.indexOf('\x1F'); - if ( beg === 0 ) { continue; } - let timeField = text.slice(0, beg); - if ( options.time === 'anonymous' ) { - timeField = '+' + Math.round(entry.tstamp - t0).toString(); - } - fields.push(timeField); - beg += 1; - while ( beg < text.length ) { - let end = text.indexOf('\x1F', beg); - if ( end === -1 ) { end = text.length; } - fields.push(text.slice(beg, end)); - beg = end + 1; - } - lines.push(fields); - } - }; - - const formatAsPlainTextTable = function() { - const outputAll = []; - for ( const fields of lines ) { - outputAll.push(fields.join('\t')); - } - outputAll.push(''); - return outputAll.join('\n'); - }; - - const formatAsMarkdownTable = function() { - const outputAll = []; - let fieldCount = 0; - for ( const fields of lines ) { - if ( fields.length <= 2 ) { continue; } - if ( fields.length > fieldCount ) { - fieldCount = fields.length; - } - const outputOne = []; - for ( let i = 0; i < fields.length; i++ ) { - const field = fields[i]; - let code = /\b(?:www\.|https?:\/\/)/.test(field) ? '`' : ''; - outputOne.push(` ${code}${field.replace(/\|/g, '\\|')}${code} `); - } - outputAll.push(outputOne.join('|')); - } - if ( fieldCount !== 0 ) { - outputAll.unshift( - `${' |'.repeat(fieldCount-1)} `, - `${':--- |'.repeat(fieldCount-1)}:--- ` - ); - } - return `

Logger output\n\n|${outputAll.join('|\n|')}|\n
\n`; - }; - - const formatAsTable = function() { - if ( options.encoding === 'plain' ) { - return formatAsPlainTextTable(); - } - return formatAsMarkdownTable(); - }; - - const formatAsList = function() { - const outputAll = []; - for ( const fields of lines ) { - const outputOne = []; - for ( let i = 0; i < fields.length; i++ ) { - let str = fields[i]; - if ( str.length === 0 ) { continue; } - outputOne.push(str); - } - outputAll.push(outputOne.join('\n')); - } - let before, between, after; - if ( options.encoding === 'markdown' ) { - const code = '```'; - before = `
Logger output\n\n${code}\n`; - between = `\n${code}\n${code}\n`; - after = `\n${code}\n
\n`; - } else { - before = ''; - between = '\n\n'; - after = '\n'; - } - return `${before}${outputAll.join(between)}${after}`; - }; - - const format = function() { - const output = qs$(dialog, '.output'); - if ( options.format === 'list' ) { - output.textContent = formatAsList(); - } else { - output.textContent = formatAsTable(); - } - }; - - const setRadioButton = function(group, value) { - if ( hasOwnProperty(options, group) === false ) { return; } - const groupEl = qs$(dialog, `[data-radio="${group}"]`); - const buttonEls = qsa$(groupEl, '[data-radio-item]'); - for ( const buttonEl of buttonEls ) { - dom.cl.toggle( - buttonEl, - 'on', - dom.attr(buttonEl, 'data-radio-item') === value - ); - } - options[group] = value; - }; - - const onOption = function(ev) { - const target = ev.target.closest('span[data-i18n]'); - if ( target === null ) { return; } - - // Copy to clipboard - if ( target.matches('.pushbutton') ) { - const textarea = qs$(dialog, 'textarea'); - textarea.focus(); - if ( textarea.selectionEnd === textarea.selectionStart ) { - textarea.select(); - } - document.execCommand('copy'); - ev.stopPropagation(); - return; - } - - // Radio buttons - const group = target.closest('[data-radio]'); - if ( group === null ) { return; } - if ( target.matches('span.on') ) { return; } - const item = target.closest('[data-radio-item]'); - if ( item === null ) { return; } - setRadioButton( - dom.attr(group, 'data-radio'), - dom.attr(item, 'data-radio-item') - ); - format(); - ev.stopPropagation(); - }; - - const toggleOn = function() { - dialog = modalDialog.create( - '#loggerExportDialog', - ( ) => { - dialog = undefined; - lines.length = 0; - } - ); - - setRadioButton('format', options.format); - setRadioButton('encoding', options.encoding); - - collectLines(); - format(); - - dom.on(qs$(dialog, '.options'), 'click', onOption, { capture: true }); - - modalDialog.show(); - }; - - dom.on('#loggerExport', 'click', toggleOn); -})(); - -/******************************************************************************/ - -// TODO: -// - Give some thoughts to: -// - an option to discard immediately filtered out new entries -// - max entry count _per load_ -// -const loggerSettings = (( ) => { - const settings = { - discard: { - maxAge: 240, // global - maxEntryCount: 2000, // per-tab - maxLoadCount: 20, // per-tab - }, - columns: [ true, true, true, true, true, true, true, true, true ], - linesPerEntry: 4, - }; - - vAPI.localStorage.getItemAsync('loggerSettings').then(value => { - try { - const stored = JSON.parse(value); - if ( typeof stored.discard.maxAge === 'number' ) { - settings.discard.maxAge = stored.discard.maxAge; - } - if ( typeof stored.discard.maxEntryCount === 'number' ) { - settings.discard.maxEntryCount = stored.discard.maxEntryCount; - } - if ( typeof stored.discard.maxLoadCount === 'number' ) { - settings.discard.maxLoadCount = stored.discard.maxLoadCount; - } - if ( typeof stored.linesPerEntry === 'number' ) { - settings.linesPerEntry = stored.linesPerEntry; - } - if ( Array.isArray(stored.columns) ) { - settings.columns = stored.columns; - } - } catch(_) { - } - }); - - const valueFromInput = function(input, def) { - let value = parseInt(input.value, 10); - if ( isNaN(value) ) { value = def; } - const min = parseInt(dom.attr(input, 'min'), 10); - if ( isNaN(min) === false ) { - value = Math.max(value, min); - } - const max = parseInt(dom.attr(input, 'max'), 10); - if ( isNaN(max) === false ) { - value = Math.min(value, max); - } - return value; - }; - - const toggleOn = function() { - const dialog = modalDialog.create( - '#loggerSettingsDialog', - dialog => { - toggleOff(dialog); - } - ); - - // Number inputs - let inputs = qsa$(dialog, 'input[type="number"]'); - inputs[0].value = settings.discard.maxAge; - inputs[1].value = settings.discard.maxLoadCount; - inputs[2].value = settings.discard.maxEntryCount; - inputs[3].value = settings.linesPerEntry; - dom.on(inputs[3], 'input', ev => { - settings.linesPerEntry = valueFromInput(ev.target, 4); - viewPort.updateLayout(); - }); - - // Column checkboxs - const onColumnChanged = ev => { - const input = ev.target; - const i = parseInt(dom.attr(input, 'data-column'), 10); - settings.columns[i] = input.checked !== true; - viewPort.updateLayout(); - }; - inputs = qsa$(dialog, 'input[type="checkbox"][data-column]'); - for ( const input of inputs ) { - const i = parseInt(dom.attr(input, 'data-column'), 10); - input.checked = settings.columns[i] === false; - dom.on(input, 'change', onColumnChanged); - } - - modalDialog.show(); - }; - - const toggleOff = function(dialog) { - // Number inputs - let inputs = qsa$(dialog, 'input[type="number"]'); - settings.discard.maxAge = valueFromInput(inputs[0], 240); - settings.discard.maxLoadCount = valueFromInput(inputs[1], 25); - settings.discard.maxEntryCount = valueFromInput(inputs[2], 2000); - settings.linesPerEntry = valueFromInput(inputs[3], 4); - - // Column checkboxs - inputs = qsa$(dialog, 'input[type="checkbox"][data-column]'); - for ( const input of inputs ) { - const i = parseInt(dom.attr(input, 'data-column'), 10); - settings.columns[i] = input.checked !== true; - } - - vAPI.localStorage.setItem( - 'loggerSettings', - JSON.stringify(settings) - ); - - viewPort.updateLayout(); - }; - - dom.on('#loggerSettings', 'click', toggleOn); - - return settings; -})(); - -/******************************************************************************/ - -const grabView = function() { - if ( logger.ownerId === undefined ) { - logger.ownerId = Date.now(); - } - readLogBuffer(); -}; - -const releaseView = function() { - if ( logger.ownerId === undefined ) { return; } - vAPI.messaging.send('loggerUI', { - what: 'releaseView', - ownerId: logger.ownerId, - }); - logger.ownerId = undefined; -}; - -dom.on(window, 'pagehide', releaseView); -dom.on(window, 'pageshow', grabView); -// https://bugzilla.mozilla.org/show_bug.cgi?id=1398625 -dom.on(window, 'beforeunload', releaseView); - -/******************************************************************************/ - -dom.on('#pageSelector', 'change', pageSelectorChanged); -dom.on('#netInspector .vCompactToggler', 'click', toggleVCompactView); -dom.on('#pause', 'click', pauseNetInspector); - -dom.on('#netInspector #vwContent', 'copy', ev => { - const selection = document.getSelection(); - const text = selection.toString(); - if ( /\x1F|\u200B/.test(text) === false ) { return; } - ev.clipboardData.setData('text/plain', text.replace(/\x1F|\u200B/g, '\t')); - ev.preventDefault(); -}); - -// https://github.com/gorhill/uBlock/issues/507 -// Ensure tab selector is in sync with URL hash -pageSelectorFromURLHash(); -dom.on(window, 'hashchange', pageSelectorFromURLHash); - -// Start to watch the current window geometry 2 seconds after the document -// is loaded, to be sure no spurious geometry changes will be triggered due -// to the window geometry pontentially not settling fast enough. -if ( self.location.search.includes('popup=1') ) { - dom.on(window, 'load', ( ) => { - vAPI.defer.once(2000).then(( ) => { - popupLoggerBox = { - x: self.screenX, - y: self.screenY, - w: self.outerWidth, - h: self.outerHeight, - }; - }); - }, { once: true }); -} - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/logger.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/logger.js deleted file mode 100644 index 766188e..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/logger.js +++ /dev/null @@ -1,92 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -import { broadcast, broadcastToAll } from './broadcast.js'; - -/******************************************************************************/ - -let buffer = null; -let lastReadTime = 0; -let writePtr = 0; - -// After 30 seconds without being read, the logger buffer will be considered -// unused, and thus disabled. -const logBufferObsoleteAfter = 30 * 1000; - -const janitorTimer = vAPI.defer.create(( ) => { - if ( buffer === null ) { return; } - if ( lastReadTime >= (Date.now() - logBufferObsoleteAfter) ) { - return janitorTimer.on(logBufferObsoleteAfter); - } - logger.enabled = false; - buffer = null; - writePtr = 0; - logger.ownerId = undefined; - broadcastToAll({ what: 'loggerDisabled' }); -}); - -const boxEntry = details => { - details.tstamp = Date.now() / 1000 | 0; - return JSON.stringify(details); -}; - -const pushOne = box => { - if ( writePtr !== 0 && box === buffer[writePtr-1] ) { return; } - if ( writePtr === buffer.length ) { - buffer.push(box); - } else { - buffer[writePtr] = box; - } - writePtr += 1; -}; - -const logger = { - enabled: false, - ownerId: undefined, - writeOne(details) { - if ( buffer === null ) { return; } - pushOne(boxEntry(details)); - }, - readAll(ownerId) { - this.ownerId = ownerId; - if ( buffer === null ) { - this.enabled = true; - buffer = []; - janitorTimer.on(logBufferObsoleteAfter); - broadcast({ what: 'loggerEnabled' }); - } - const out = buffer.slice(0, writePtr); - buffer.fill('', 0, writePtr); - writePtr = 0; - lastReadTime = Date.now(); - return out; - }, -}; - -/******************************************************************************/ - -export default logger; - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/lz4.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/lz4.js deleted file mode 100644 index 608cdd8..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/lz4.js +++ /dev/null @@ -1,190 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2018-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/* global lz4BlockCodec */ - -'use strict'; - -/******************************************************************************/ - -import µb from './background.js'; - -/******************************************************************************* - - Experimental support for storage compression. - - For background information on the topic, see: - https://github.com/uBlockOrigin/uBlock-issues/issues/141#issuecomment-407737186 - -**/ - -/******************************************************************************/ - -let promisedInstance; -let textEncoder, textDecoder; -let ttlCount = 0; -let ttlDelay = 60000; - -const init = function() { - ttlDelay = µb.hiddenSettings.autoUpdateAssetFetchPeriod * 2 * 1000; - if ( promisedInstance === undefined ) { - let flavor; - if ( µb.hiddenSettings.disableWebAssembly === true ) { - flavor = 'js'; - } - promisedInstance = lz4BlockCodec.createInstance(flavor); - } - return promisedInstance; -}; - -// We can't shrink memory usage of lz4 codec instances, and in the -// current case memory usage can grow to a significant amount given -// that a single contiguous memory buffer is required to accommodate -// both input and output data. Thus a time-to-live implementation -// which will cause the wasm instance to be forgotten after enough -// time elapse without the instance being used. - -const destroy = function() { - //if ( lz4CodecInstance !== undefined ) { - // console.info( - // 'uBO: freeing lz4-block-codec instance (%s KB)', - // lz4CodecInstance.bytesInUse() >>> 10 - // ); - //} - promisedInstance = undefined; - textEncoder = textDecoder = undefined; - ttlCount = 0; -}; - -const ttlTimer = vAPI.defer.create(destroy); - -const ttlManage = function(count) { - ttlTimer.off(); - ttlCount += count; - if ( ttlCount > 0 ) { return; } - ttlTimer.on(ttlDelay); -}; - -const encodeValue = function(lz4CodecInstance, dataIn) { - if ( !lz4CodecInstance ) { return; } - //let t0 = window.performance.now(); - if ( textEncoder === undefined ) { - textEncoder = new TextEncoder(); - } - const inputArray = textEncoder.encode(dataIn); - const inputSize = inputArray.byteLength; - const outputArray = lz4CodecInstance.encodeBlock(inputArray, 8); - if ( outputArray instanceof Uint8Array === false ) { return; } - outputArray[0] = 0x18; - outputArray[1] = 0x4D; - outputArray[2] = 0x22; - outputArray[3] = 0x04; - outputArray[4] = (inputSize >>> 0) & 0xFF; - outputArray[5] = (inputSize >>> 8) & 0xFF; - outputArray[6] = (inputSize >>> 16) & 0xFF; - outputArray[7] = (inputSize >>> 24) & 0xFF; - //console.info( - // 'uBO: [%s] compressed %d KB => %d KB (%s%%) in %s ms', - // inputArray.byteLength >> 10, - // outputArray.byteLength >> 10, - // (outputArray.byteLength / inputArray.byteLength * 100).toFixed(0), - // (window.performance.now() - t0).toFixed(1) - //); - return outputArray; -}; - -const decodeValue = function(lz4CodecInstance, inputArray) { - if ( !lz4CodecInstance ) { return; } - //let t0 = window.performance.now(); - if ( - inputArray[0] !== 0x18 || inputArray[1] !== 0x4D || - inputArray[2] !== 0x22 || inputArray[3] !== 0x04 - ) { - console.error('decodeValue: invalid input array'); - return; - } - const outputSize = - (inputArray[4] << 0) | (inputArray[5] << 8) | - (inputArray[6] << 16) | (inputArray[7] << 24); - const outputArray = lz4CodecInstance.decodeBlock(inputArray, 8, outputSize); - if ( outputArray instanceof Uint8Array === false ) { return; } - if ( textDecoder === undefined ) { - textDecoder = new TextDecoder(); - } - const s = textDecoder.decode(outputArray); - //console.info( - // 'uBO: [%s] decompressed %d KB => %d KB (%s%%) in %s ms', - // inputArray.byteLength >>> 10, - // outputSize >>> 10, - // (inputArray.byteLength / outputSize * 100).toFixed(0), - // (window.performance.now() - t0).toFixed(1) - //); - return s; -}; - -const lz4Codec = { - // Arguments: - // dataIn: must be a string - // Returns: - // A Uint8Array, or the input string as is if compression is not - // possible. - encode: async function(dataIn, serialize = undefined) { - if ( typeof dataIn !== 'string' || dataIn.length < 4096 ) { - return dataIn; - } - ttlManage(1); - const lz4CodecInstance = await init(); - let dataOut = encodeValue(lz4CodecInstance, dataIn); - ttlManage(-1); - if ( serialize instanceof Function ) { - dataOut = await serialize(dataOut); - } - return dataOut || dataIn; - }, - // Arguments: - // dataIn: must be a Uint8Array - // Returns: - // A string, or the input argument as is if decompression is not - // possible. - decode: async function(dataIn, deserialize = undefined) { - if ( deserialize instanceof Function ) { - dataIn = await deserialize(dataIn); - } - if ( dataIn instanceof Uint8Array === false ) { - return dataIn; - } - ttlManage(1); - const lz4CodecInstance = await init(); - const dataOut = decodeValue(lz4CodecInstance, dataIn); - ttlManage(-1); - return dataOut || dataIn; - }, - relinquish: function() { - ttlDelay = 1; - ttlManage(0); - }, -}; - -/******************************************************************************/ - -export default lz4Codec; - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/messaging.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/messaging.js deleted file mode 100644 index 5f39af4..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/messaging.js +++ /dev/null @@ -1,2232 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/* globals browser */ - -'use strict'; - -/******************************************************************************/ - -import publicSuffixList from '../lib/publicsuffixlist/publicsuffixlist.js'; -import punycode from '../lib/punycode.js'; - -import { filteringBehaviorChanged } from './broadcast.js'; -import cacheStorage from './cachestorage.js'; -import cosmeticFilteringEngine from './cosmetic-filtering.js'; -import htmlFilteringEngine from './html-filtering.js'; -import logger from './logger.js'; -import lz4Codec from './lz4.js'; -import io from './assets.js'; -import scriptletFilteringEngine from './scriptlet-filtering.js'; -import staticFilteringReverseLookup from './reverselookup.js'; -import staticNetFilteringEngine from './static-net-filtering.js'; -import µb from './background.js'; -import webRequest from './traffic.js'; -import { denseBase64 } from './base64-custom.js'; -import { dnrRulesetFromRawLists } from './static-dnr-filtering.js'; -import { i18n$ } from './i18n.js'; -import { redirectEngine } from './redirect-engine.js'; -import * as sfp from './static-filtering-parser.js'; -import * as s14e from './s14e-serializer.js'; - -import { - permanentFirewall, - sessionFirewall, - permanentSwitches, - sessionSwitches, - permanentURLFiltering, - sessionURLFiltering, -} from './filtering-engines.js'; - -import { - domainFromHostname, - domainFromURI, - entityFromDomain, - hostnameFromURI, - isNetworkURI, -} from './uri-utils.js'; - -/******************************************************************************/ - -// https://github.com/uBlockOrigin/uBlock-issues/issues/710 -// Listeners have a name and a "privileged" status. -// The nameless default handler is always deemed "privileged". -// Messages from privileged ports must never relayed to listeners -// which are not privileged. - -/******************************************************************************/ -/******************************************************************************/ - -// Default handler -// privileged - -{ -// >>>>> start of local scope - -const clickToLoad = function(request, sender) { - const { tabId, frameId } = sender; - if ( tabId === undefined || frameId === undefined ) { return false; } - const pageStore = µb.pageStoreFromTabId(tabId); - if ( pageStore === null ) { return false; } - pageStore.clickToLoad(frameId, request.frameURL); - return true; -}; - -const getDomainNames = function(targets) { - return targets.map(target => { - if ( typeof target !== 'string' ) { return ''; } - return target.indexOf('/') !== -1 - ? domainFromURI(target) || '' - : domainFromHostname(target) || target; - }); -}; - -const onMessage = function(request, sender, callback) { - // Async - switch ( request.what ) { - case 'getAssetContent': - // https://github.com/chrisaljoudi/uBlock/issues/417 - io.get(request.url, { - dontCache: true, - needSourceURL: true, - }).then(result => { - result.trustedSource = µb.isTrustedList(result.assetKey); - callback(result); - }); - return; - - case 'listsFromNetFilter': - staticFilteringReverseLookup.fromNetFilter( - request.rawFilter - ).then(response => { - callback(response); - }); - return; - - case 'listsFromCosmeticFilter': - staticFilteringReverseLookup.fromExtendedFilter( - request - ).then(response => { - callback(response); - }); - return; - - case 'reloadAllFilters': - µb.loadFilterLists().then(( ) => { callback(); }); - return; - - case 'scriptlet': - vAPI.tabs.executeScript(request.tabId, { - file: `/js/scriptlets/${request.scriptlet}.js` - }).then(result => { - callback(result); - }); - return; - - default: - break; - } - - // Sync - let response; - - switch ( request.what ) { - case 'applyFilterListSelection': - response = µb.applyFilterListSelection(request); - break; - - case 'clickToLoad': - response = clickToLoad(request, sender); - break; - - case 'createUserFilter': - µb.createUserFilters(request); - break; - - case 'getAppData': - response = { - name: browser.runtime.getManifest().name, - version: vAPI.app.version, - canBenchmark: µb.hiddenSettings.benchmarkDatasetURL !== 'unset', - }; - break; - - case 'getDomainNames': - response = getDomainNames(request.targets); - break; - - case 'getTrustedScriptletTokens': - response = redirectEngine.getTrustedScriptletTokens(); - break; - - case 'getWhitelist': - response = { - whitelist: µb.arrayFromWhitelist(µb.netWhitelist), - whitelistDefault: µb.netWhitelistDefault, - reBadHostname: µb.reWhitelistBadHostname.source, - reHostnameExtractor: µb.reWhitelistHostnameExtractor.source - }; - break; - - case 'launchElementPicker': - // Launched from some auxiliary pages, clear context menu coords. - µb.epickerArgs.mouse = false; - µb.elementPickerExec(request.tabId, 0, request.targetURL, request.zap); - break; - - case 'loggerDisabled': - µb.clearInMemoryFilters(); - break; - - case 'gotoURL': - µb.openNewTab(request.details); - break; - - case 'readyToFilter': - response = µb.readyToFilter; - break; - - // https://github.com/uBlockOrigin/uBlock-issues/issues/1954 - // In case of document-blocked page, navigate to blocked URL instead - // of forcing a reload. - case 'reloadTab': { - if ( vAPI.isBehindTheSceneTabId(request.tabId) ) { break; } - const { tabId, bypassCache, url, select } = request; - vAPI.tabs.get(tabId).then(tab => { - if ( url && tab && url !== tab.url ) { - vAPI.tabs.replace(tabId, url); - } else { - vAPI.tabs.reload(tabId, bypassCache === true); - } - }); - if ( select && vAPI.tabs.select ) { - vAPI.tabs.select(tabId); - } - break; - } - case 'setWhitelist': - µb.netWhitelist = µb.whitelistFromString(request.whitelist); - µb.saveWhitelist(); - filteringBehaviorChanged(); - break; - - case 'toggleHostnameSwitch': - µb.toggleHostnameSwitch(request); - break; - - case 'uiAccentStylesheet': - µb.uiAccentStylesheet = request.stylesheet; - break; - - case 'uiStyles': - response = { - uiAccentCustom: µb.userSettings.uiAccentCustom, - uiAccentCustom0: µb.userSettings.uiAccentCustom0, - uiAccentStylesheet: µb.uiAccentStylesheet, - uiStyles: µb.hiddenSettings.uiStyles, - uiTheme: µb.userSettings.uiTheme, - }; - break; - - case 'userSettings': - response = µb.changeUserSettings(request.name, request.value); - if ( response instanceof Object ) { - if ( vAPI.net.canUncloakCnames !== true ) { - response.cnameUncloakEnabled = undefined; - } - response.canLeakLocalIPAddresses = - vAPI.browserSettings.canLeakLocalIPAddresses === true; - } - break; - - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -}; - -vAPI.messaging.setup(onMessage); - -// <<<<< end of local scope -} - -/******************************************************************************/ -/******************************************************************************/ - -// Channel: -// popupPanel -// privileged - -{ -// >>>>> start of local scope - -const createCounts = ( ) => { - return { - blocked: { any: 0, frame: 0, script: 0 }, - allowed: { any: 0, frame: 0, script: 0 }, - }; -}; - -const getHostnameDict = function(hostnameDetailsMap, out) { - const hnDict = Object.create(null); - const cnMap = []; - - const createDictEntry = (domain, hostname, details) => { - const cname = vAPI.net.canonicalNameFromHostname(hostname); - if ( cname !== undefined ) { - cnMap.push([ cname, hostname ]); - } - hnDict[hostname] = { domain, counts: details.counts }; - }; - - for ( const hnDetails of hostnameDetailsMap.values() ) { - const hostname = hnDetails.hostname; - if ( hnDict[hostname] !== undefined ) { continue; } - const domain = domainFromHostname(hostname) || hostname; - const dnDetails = - hostnameDetailsMap.get(domain) || { counts: createCounts() }; - if ( hnDict[domain] === undefined ) { - createDictEntry(domain, domain, dnDetails); - } - if ( hostname === domain ) { continue; } - createDictEntry(domain, hostname, hnDetails); - } - - out.hostnameDict = hnDict; - out.cnameMap = cnMap; -}; - -const firewallRuleTypes = [ - '*', - 'image', - '3p', - 'inline-script', - '1p-script', - '3p-script', - '3p-frame', -]; - -const getFirewallRules = function(src, out) { - const ruleset = out.firewallRules = {}; - const df = sessionFirewall; - - for ( const type of firewallRuleTypes ) { - const r = df.lookupRuleData('*', '*', type); - if ( r === undefined ) { continue; } - ruleset[`/ * ${type}`] = r; - } - if ( typeof src !== 'string' ) { return; } - - for ( const type of firewallRuleTypes ) { - const r = df.lookupRuleData(src, '*', type); - if ( r === undefined ) { continue; } - ruleset[`. * ${type}`] = r; - } - - const { hostnameDict } = out; - for ( const des in hostnameDict ) { - let r = df.lookupRuleData('*', des, '*'); - if ( r !== undefined ) { ruleset[`/ ${des} *`] = r; } - r = df.lookupRuleData(src, des, '*'); - if ( r !== undefined ) { ruleset[`. ${des} *`] = r; } - } -}; - -const popupDataFromTabId = function(tabId, tabTitle) { - const tabContext = µb.tabContextManager.mustLookup(tabId); - const rootHostname = tabContext.rootHostname; - const µbus = µb.userSettings; - const µbhs = µb.hiddenSettings; - const r = { - advancedUserEnabled: µbus.advancedUserEnabled, - appName: vAPI.app.name, - appVersion: vAPI.app.version, - colorBlindFriendly: µbus.colorBlindFriendly, - cosmeticFilteringSwitch: false, - firewallPaneMinimized: µbus.firewallPaneMinimized, - globalAllowedRequestCount: µb.requestStats.allowedCount, - globalBlockedRequestCount: µb.requestStats.blockedCount, - fontSize: µbhs.popupFontSize, - godMode: µbhs.filterAuthorMode, - netFilteringSwitch: false, - userFiltersAreEnabled: µb.userFiltersAreEnabled(), - rawURL: tabContext.rawURL, - pageURL: tabContext.normalURL, - pageHostname: rootHostname, - pageDomain: tabContext.rootDomain, - popupBlockedCount: 0, - popupPanelSections: µbus.popupPanelSections, - popupPanelDisabledSections: µbhs.popupPanelDisabledSections, - popupPanelLockedSections: µbhs.popupPanelLockedSections, - popupPanelHeightMode: µbhs.popupPanelHeightMode, - popupPanelOrientation: µbhs.popupPanelOrientation, - tabId, - tabTitle, - tooltipsDisabled: µbus.tooltipsDisabled, - hasUnprocessedRequest: vAPI.net && vAPI.net.hasUnprocessedRequest(tabId), - }; - - if ( µbhs.uiPopupConfig !== 'unset' ) { - r.uiPopupConfig = µbhs.uiPopupConfig; - } - - const pageStore = µb.pageStoreFromTabId(tabId); - if ( pageStore ) { - r.pageCounts = pageStore.counts; - r.netFilteringSwitch = pageStore.getNetFilteringSwitch(); - getHostnameDict(pageStore.getAllHostnameDetails(), r); - r.contentLastModified = pageStore.contentLastModified; - getFirewallRules(rootHostname, r); - r.canElementPicker = isNetworkURI(r.rawURL); - r.noPopups = sessionSwitches.evaluateZ( - 'no-popups', - rootHostname - ); - r.popupBlockedCount = pageStore.popupBlockedCount; - r.noCosmeticFiltering = sessionSwitches.evaluateZ( - 'no-cosmetic-filtering', - rootHostname - ); - r.noLargeMedia = sessionSwitches.evaluateZ( - 'no-large-media', - rootHostname - ); - r.largeMediaCount = pageStore.largeMediaCount; - r.noRemoteFonts = sessionSwitches.evaluateZ( - 'no-remote-fonts', - rootHostname - ); - r.remoteFontCount = pageStore.remoteFontCount; - r.noScripting = sessionSwitches.evaluateZ( - 'no-scripting', - rootHostname - ); - } else { - r.hostnameDict = {}; - getFirewallRules(undefined, r); - } - - r.matrixIsDirty = sessionFirewall.hasSameRules( - permanentFirewall, - rootHostname, - r.hostnameDict - ) === false; - if ( r.matrixIsDirty === false ) { - r.matrixIsDirty = sessionSwitches.hasSameRules( - permanentSwitches, - rootHostname - ) === false; - } - return r; -}; - -const popupDataFromRequest = async function(request) { - if ( request.tabId ) { - return popupDataFromTabId(request.tabId, ''); - } - - // Still no target tab id? Use currently selected tab. - const tab = await vAPI.tabs.getCurrent(); - let tabId = ''; - let tabTitle = ''; - if ( tab instanceof Object ) { - tabId = tab.id; - tabTitle = tab.title || ''; - } - return popupDataFromTabId(tabId, tabTitle); -}; - -const getElementCount = async function(tabId, what) { - const results = await vAPI.tabs.executeScript(tabId, { - allFrames: true, - file: `/js/scriptlets/dom-survey-${what}.js`, - runAt: 'document_end', - }); - - let total = 0; - for ( const count of results ) { - if ( typeof count !== 'number' ) { continue; } - if ( count === -1 ) { return -1; } - total += count; - } - - return total; -}; - -const launchReporter = async function(request) { - const pageStore = µb.pageStoreFromTabId(request.tabId); - if ( pageStore === null ) { return; } - if ( pageStore.hasUnprocessedRequest ) { - request.popupPanel.hasUnprocessedRequest = true; - } - - const entries = await io.getUpdateAges({ - filters: µb.selectedFilterLists.slice() - }); - const shouldUpdateLists = []; - for ( const entry of entries ) { - if ( entry.age < (2 * 60 * 60 * 1000) ) { continue; } - shouldUpdateLists.push(entry.assetKey); - } - - // https://github.com/gorhill/uBlock/commit/6efd8eb#commitcomment-107523558 - // Important: for whatever reason, not using `document_start` causes the - // Promise returned by `tabs.executeScript()` to resolve only when the - // associated tab is closed. - const cosmeticSurveyResults = await vAPI.tabs.executeScript(request.tabId, { - allFrames: true, - file: '/js/scriptlets/cosmetic-report.js', - matchAboutBlank: true, - runAt: 'document_start', - }); - - const filters = cosmeticSurveyResults.reduce((a, v) => { - if ( Array.isArray(v) ) { a.push(...v); } - return a; - }, []); - // Remove duplicate, truncate too long filters. - if ( filters.length !== 0 ) { - request.popupPanel.extended = Array.from( - new Set(filters.map(s => s.length <= 64 ? s : `${s.slice(0, 64)}…`)) - ); - } - - const supportURL = new URL(vAPI.getURL('support.html')); - supportURL.searchParams.set('pageURL', request.pageURL); - supportURL.searchParams.set('popupPanel', JSON.stringify(request.popupPanel)); - if ( shouldUpdateLists.length ) { - supportURL.searchParams.set('shouldUpdateLists', JSON.stringify(shouldUpdateLists)); - } - return supportURL.href; -}; - -const onMessage = function(request, sender, callback) { - // Async - switch ( request.what ) { - case 'getHiddenElementCount': - getElementCount(request.tabId, 'elements').then(count => { - callback(count); - }); - return; - - case 'getScriptCount': - getElementCount(request.tabId, 'scripts').then(count => { - callback(count); - }); - return; - - case 'getPopupData': - popupDataFromRequest(request).then(popupData => { - callback(popupData); - }); - return; - - default: - break; - } - - // Sync - let response; - - switch ( request.what ) { - case 'dismissUnprocessedRequest': - vAPI.net.removeUnprocessedRequest(request.tabId); - µb.updateToolbarIcon(request.tabId, 0b110); - break; - - case 'hasPopupContentChanged': { - const pageStore = µb.pageStoreFromTabId(request.tabId); - const lastModified = pageStore ? pageStore.contentLastModified : 0; - response = lastModified !== request.contentLastModified; - break; - } - - case 'launchReporter': { - launchReporter(request).then(url => { - if ( typeof url !== 'string' ) { return; } - µb.openNewTab({ url, select: true, index: -1 }); - }); - break; - } - - case 'revertFirewallRules': - // TODO: use Set() to message around sets of hostnames - sessionFirewall.copyRules( - permanentFirewall, - request.srcHostname, - Object.assign(Object.create(null), request.desHostnames) - ); - sessionSwitches.copyRules( - permanentSwitches, - request.srcHostname - ); - // https://github.com/gorhill/uBlock/issues/188 - cosmeticFilteringEngine.removeFromSelectorCache( - request.srcHostname, - 'net' - ); - µb.updateToolbarIcon(request.tabId, 0b100); - response = popupDataFromTabId(request.tabId); - break; - - case 'saveFirewallRules': - // TODO: use Set() to message around sets of hostnames - if ( - permanentFirewall.copyRules( - sessionFirewall, - request.srcHostname, - Object.assign(Object.create(null), request.desHostnames) - ) - ) { - µb.savePermanentFirewallRules(); - } - if ( - permanentSwitches.copyRules( - sessionSwitches, - request.srcHostname - ) - ) { - µb.saveHostnameSwitches(); - } - break; - - case 'toggleHostnameSwitch': - µb.toggleHostnameSwitch(request); - response = popupDataFromTabId(request.tabId); - break; - - case 'toggleFirewallRule': - µb.toggleFirewallRule(request); - response = popupDataFromTabId(request.tabId); - break; - - case 'toggleNetFiltering': { - const pageStore = µb.pageStoreFromTabId(request.tabId); - if ( pageStore ) { - pageStore.toggleNetFilteringSwitch( - request.url, - request.scope, - request.state - ); - µb.updateToolbarIcon(request.tabId, 0b111); - } - break; - } - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -}; - -vAPI.messaging.listen({ - name: 'popupPanel', - listener: onMessage, - privileged: true, -}); - -// <<<<< end of local scope -} - -/******************************************************************************/ -/******************************************************************************/ - -// Channel: -// contentscript -// unprivileged - -{ -// >>>>> start of local scope - -const retrieveContentScriptParameters = async function(sender, request) { - if ( µb.readyToFilter !== true ) { return; } - const { tabId, frameId } = sender; - if ( tabId === undefined || frameId === undefined ) { return; } - - const pageStore = µb.pageStoreFromTabId(tabId); - if ( pageStore === null || pageStore.getNetFilteringSwitch() === false ) { - return; - } - - // A content script may not always be able to successfully look up the - // effective context, hence in such case we try again to look up here - // using cached information about embedded frames. - if ( frameId !== 0 && request.url.startsWith('about:') ) { - request.url = pageStore.getEffectiveFrameURL(sender); - } - - const noSpecificCosmeticFiltering = - pageStore.shouldApplySpecificCosmeticFilters(frameId) === false; - const noGenericCosmeticFiltering = - pageStore.shouldApplyGenericCosmeticFilters(frameId) === false; - - const response = { - collapseBlocked: µb.userSettings.collapseBlocked, - noGenericCosmeticFiltering, - noSpecificCosmeticFiltering, - }; - - request.tabId = tabId; - request.frameId = frameId; - request.hostname = hostnameFromURI(request.url); - request.domain = domainFromHostname(request.hostname); - request.entity = entityFromDomain(request.domain); - - const scf = response.specificCosmeticFilters = - cosmeticFilteringEngine.retrieveSpecificSelectors(request, response); - - // The procedural filterer's code is loaded only when needed and must be - // present before returning response to caller. - if ( - scf.proceduralFilters.length !== 0 || ( - logger.enabled && ( - scf.convertedProceduralFilters.length !== 0 || - scf.exceptedFilters.length !== 0 - ) - ) - ) { - await vAPI.tabs.executeScript(tabId, { - allFrames: false, - file: '/js/contentscript-extra.js', - frameId, - matchAboutBlank: true, - runAt: 'document_start', - }); - } - - // https://github.com/uBlockOrigin/uBlock-issues/issues/688#issuecomment-748179731 - // For non-network URIs, scriptlet injection is deferred to here. The - // effective URL is available here in `request.url`. - if ( logger.enabled ) { - const scriptletDetails = scriptletFilteringEngine.retrieve(request); - if ( scriptletDetails !== undefined ) { - scriptletFilteringEngine.toLogger(request, scriptletDetails); - } - } - if ( request.needScriptlets ) { - scriptletFilteringEngine.injectNow(request); - } - - // https://github.com/NanoMeow/QuickReports/issues/6#issuecomment-414516623 - // Inject as early as possible to make the cosmetic logger code less - // sensitive to the removal of DOM nodes which may match injected - // cosmetic filters. - if ( logger.enabled ) { - if ( - noSpecificCosmeticFiltering === false || - noGenericCosmeticFiltering === false - ) { - vAPI.tabs.executeScript(tabId, { - allFrames: false, - file: '/js/scriptlets/cosmetic-logger.js', - frameId, - matchAboutBlank: true, - runAt: 'document_start', - }); - } - } - - return response; -}; - -const onMessage = function(request, sender, callback) { - // Async - switch ( request.what ) { - case 'retrieveContentScriptParameters': - return retrieveContentScriptParameters( - sender, - request - ).then(response => { - callback(response); - }); - default: - break; - } - - const pageStore = µb.pageStoreFromTabId(sender.tabId); - - // Sync - let response; - - switch ( request.what ) { - case 'cosmeticFiltersInjected': - cosmeticFilteringEngine.addToSelectorCache(request); - break; - - case 'disableGenericCosmeticFilteringSurveyor': - cosmeticFilteringEngine.disableSurveyor(request); - break; - - case 'getCollapsibleBlockedRequests': - response = { - id: request.id, - hash: request.hash, - netSelectorCacheCountMax: - cosmeticFilteringEngine.netSelectorCacheCountMax, - }; - if ( - µb.userSettings.collapseBlocked && - pageStore && pageStore.getNetFilteringSwitch() - ) { - pageStore.getBlockedResources(request, response); - } - break; - - case 'maybeGoodPopup': - µb.maybeGoodPopup.tabId = sender.tabId; - µb.maybeGoodPopup.url = request.url; - break; - - case 'messageToLogger': - if ( logger.enabled !== true ) { break; } - logger.writeOne({ - tabId: sender.tabId, - realm: 'message', - type: request.type || 'info', - keywords: [ 'scriptlet' ], - text: request.text, - }); - break; - - case 'shouldRenderNoscriptTags': - if ( pageStore === null ) { break; } - const fctxt = µb.filteringContext.fromTabId(sender.tabId); - if ( pageStore.filterScripting(fctxt, undefined) ) { - vAPI.tabs.executeScript(sender.tabId, { - file: '/js/scriptlets/noscript-spoof.js', - frameId: sender.frameId, - runAt: 'document_end', - }); - } - break; - - case 'retrieveGenericCosmeticSelectors': - request.tabId = sender.tabId; - request.frameId = sender.frameId; - response = { - result: cosmeticFilteringEngine.retrieveGenericSelectors(request), - }; - break; - - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -}; - -vAPI.messaging.listen({ - name: 'contentscript', - listener: onMessage, -}); - -// <<<<< end of local scope -} - -/******************************************************************************/ -/******************************************************************************/ - -// Channel: -// elementPicker -// unprivileged - -{ -// >>>>> start of local scope - -const onMessage = function(request, sender, callback) { - // Async - switch ( request.what ) { - // The procedural filterer must be present in case the user wants to - // type-in custom filters. - case 'elementPickerArguments': - return vAPI.tabs.executeScript(sender.tabId, { - allFrames: false, - file: '/js/contentscript-extra.js', - frameId: sender.frameId, - matchAboutBlank: true, - runAt: 'document_start', - }).then(( ) => { - callback({ - target: µb.epickerArgs.target, - mouse: µb.epickerArgs.mouse, - zap: µb.epickerArgs.zap, - eprom: µb.epickerArgs.eprom, - pickerURL: vAPI.getURL( - `/web_accessible_resources/epicker-ui.html?secret=${vAPI.warSecret.short()}` - ), - }); - µb.epickerArgs.target = ''; - }); - default: - break; - } - - // Sync - let response; - - switch ( request.what ) { - case 'elementPickerEprom': - µb.epickerArgs.eprom = request; - break; - - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -}; - -vAPI.messaging.listen({ - name: 'elementPicker', - listener: onMessage, -}); - -// <<<<< end of local scope -} - -/******************************************************************************/ -/******************************************************************************/ - -// Channel: -// cloudWidget -// privileged - -{ -// >>>>> start of local scope - -const fromBase64 = function(encoded) { - if ( typeof encoded !== 'string' ) { - return Promise.resolve(encoded); - } - let u8array; - try { - u8array = denseBase64.decode(encoded); - } catch(ex) { - } - return Promise.resolve(u8array !== undefined ? u8array : encoded); -}; - -const onMessage = function(request, sender, callback) { - // Cloud storage support is optional. - if ( µb.cloudStorageSupported !== true ) { - callback(); - return; - } - - // Async - switch ( request.what ) { - case 'cloudGetOptions': - vAPI.cloud.getOptions(function(options) { - options.enabled = µb.userSettings.cloudStorageEnabled === true; - callback(options); - }); - return; - - case 'cloudSetOptions': - vAPI.cloud.setOptions(request.options, callback); - return; - - case 'cloudPull': - request.decode = encoded => { - if ( s14e.isSerialized(encoded) ) { - return s14e.deserializeAsync(encoded, { thread: true }); - } - // Legacy decoding: needs to be kept around for the foreseeable future. - return lz4Codec.decode(encoded, fromBase64); - }; - return vAPI.cloud.pull(request).then(result => { - callback(result); - }); - - case 'cloudPush': - request.encode = data => { - const options = { - compress: µb.hiddenSettings.cloudStorageCompression, - thread: true, - }; - return s14e.serializeAsync(data, options); - }; - return vAPI.cloud.push(request).then(result => { - callback(result); - }); - - case 'cloudUsed': - return vAPI.cloud.used(request.datakey).then(result => { - callback(result); - }); - - default: - break; - } - - // Sync - let response; - - switch ( request.what ) { - // For when cloud storage is disabled. - case 'cloudPull': - // fallthrough - case 'cloudPush': - break; - - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -}; - -vAPI.messaging.listen({ - name: 'cloudWidget', - listener: onMessage, - privileged: true, -}); - -// <<<<< end of local scope -} - -/******************************************************************************/ -/******************************************************************************/ - -// Channel: -// dashboard -// privileged - -{ -// >>>>> start of local scope - -// Settings -const getLocalData = async function() { - const data = Object.assign({}, µb.restoreBackupSettings); - data.storageUsed = await µb.getBytesInUse(); - data.cloudStorageSupported = µb.cloudStorageSupported; - data.privacySettingsSupported = µb.privacySettingsSupported; - return data; -}; - -const backupUserData = async function() { - const userFilters = await µb.loadUserFilters(); - - const userData = { - timeStamp: Date.now(), - version: vAPI.app.version, - userSettings: - µb.getModifiedSettings(µb.userSettings, µb.userSettingsDefault), - selectedFilterLists: µb.selectedFilterLists, - hiddenSettings: - µb.getModifiedSettings(µb.hiddenSettings, µb.hiddenSettingsDefault), - whitelist: µb.arrayFromWhitelist(µb.netWhitelist), - dynamicFilteringString: permanentFirewall.toString(), - urlFilteringString: permanentURLFiltering.toString(), - hostnameSwitchesString: permanentSwitches.toString(), - userFilters: userFilters.content, - }; - - const filename = i18n$('aboutBackupFilename') - .replace('{{datetime}}', µb.dateNowToSensibleString()) - .replace(/ +/g, '_'); - µb.restoreBackupSettings.lastBackupFile = filename; - µb.restoreBackupSettings.lastBackupTime = Date.now(); - vAPI.storage.set(µb.restoreBackupSettings); - - const localData = await getLocalData(); - - return { localData, userData }; -}; - -const restoreUserData = async function(request) { - const userData = request.userData; - - // https://github.com/LiCybora/NanoDefenderFirefox/issues/196 - // Backup data could be from Chromium platform or from an older - // Firefox version. - if ( - vAPI.webextFlavor.soup.has('firefox') && - vAPI.app.intFromVersion(userData.version) <= 1031003011 - ) { - userData.hostnameSwitchesString += '\nno-csp-reports: * true'; - } - - // List of external lists is meant to be a string. - if ( Array.isArray(userData.externalLists) ) { - userData.externalLists = userData.externalLists.join('\n'); - } - - // https://github.com/chrisaljoudi/uBlock/issues/1102 - // Ensure all currently cached assets are flushed from storage AND memory. - io.rmrf(); - - // If we are going to restore all, might as well wipe out clean local - // storages - await Promise.all([ - cacheStorage.clear(), - vAPI.storage.clear(), - ]); - - // Restore block stats - µb.saveLocalSettings(); - - // Restore user data - vAPI.storage.set(userData.userSettings); - - // Restore advanced settings. - let hiddenSettings = userData.hiddenSettings; - if ( hiddenSettings instanceof Object === false ) { - hiddenSettings = µb.hiddenSettingsFromString( - userData.hiddenSettingsString || '' - ); - } - // Discard unknown setting or setting with default value. - for ( const key in hiddenSettings ) { - if ( - µb.hiddenSettingsDefault.hasOwnProperty(key) === false || - hiddenSettings[key] === µb.hiddenSettingsDefault[key] - ) { - delete hiddenSettings[key]; - } - } - - // Whitelist directives can be represented as an array or as a - // (eventually to be deprecated) string. - let whitelist = userData.whitelist; - if ( - Array.isArray(whitelist) === false && - typeof userData.netWhitelist === 'string' && - userData.netWhitelist !== '' - ) { - whitelist = userData.netWhitelist.split('\n'); - } - vAPI.storage.set({ - hiddenSettings, - netWhitelist: whitelist || [], - dynamicFilteringString: userData.dynamicFilteringString || '', - urlFilteringString: userData.urlFilteringString || '', - hostnameSwitchesString: userData.hostnameSwitchesString || '', - lastRestoreFile: request.file || '', - lastRestoreTime: Date.now(), - lastBackupFile: '', - lastBackupTime: 0 - }); - µb.saveUserFilters(userData.userFilters); - if ( Array.isArray(userData.selectedFilterLists) ) { - await µb.saveSelectedFilterLists(userData.selectedFilterLists); - } - - vAPI.app.restart(); -}; - -// Remove all stored data but keep global counts, people can become -// quite attached to numbers -const resetUserData = async function() { - await Promise.all([ - cacheStorage.clear(), - vAPI.storage.clear(), - ]); - - await µb.saveLocalSettings(); - - vAPI.app.restart(); -}; - -// Filter lists -const prepListEntries = function(entries) { - for ( const k in entries ) { - if ( entries.hasOwnProperty(k) === false ) { continue; } - const entry = entries[k]; - if ( typeof entry.supportURL === 'string' && entry.supportURL !== '' ) { - entry.supportName = hostnameFromURI(entry.supportURL); - } else if ( typeof entry.homeURL === 'string' && entry.homeURL !== '' ) { - const hn = hostnameFromURI(entry.homeURL); - entry.supportURL = `http://${hn}/`; - entry.supportName = domainFromHostname(hn); - } - } -}; - -const getLists = async function(callback) { - const r = { - autoUpdate: µb.userSettings.autoUpdate, - available: null, - cache: null, - cosmeticFilterCount: cosmeticFilteringEngine.getFilterCount(), - current: µb.availableFilterLists, - ignoreGenericCosmeticFilters: µb.userSettings.ignoreGenericCosmeticFilters, - isUpdating: io.isUpdating(), - netFilterCount: staticNetFilteringEngine.getFilterCount(), - parseCosmeticFilters: µb.userSettings.parseAllABPHideFilters, - suspendUntilListsAreLoaded: µb.userSettings.suspendUntilListsAreLoaded, - userFiltersPath: µb.userFiltersPath - }; - const [ lists, metadata ] = await Promise.all([ - µb.getAvailableLists(), - io.metadata(), - ]); - r.available = lists; - prepListEntries(r.available); - r.cache = metadata; - prepListEntries(r.cache); - callback(r); -}; - -// My filters - -// TODO: also return origin of embedded frames? -const getOriginHints = function() { - const out = new Set(); - for ( const tabId of µb.pageStores.keys() ) { - if ( tabId === -1 ) { continue; } - const tabContext = µb.tabContextManager.lookup(tabId); - if ( tabContext === null ) { continue; } - let { rootDomain, rootHostname } = tabContext; - if ( rootDomain.endsWith('-scheme') ) { continue; } - const isPunycode = rootHostname.includes('xn--'); - out.add(isPunycode ? punycode.toUnicode(rootDomain) : rootDomain); - if ( rootHostname === rootDomain ) { continue; } - out.add(isPunycode ? punycode.toUnicode(rootHostname) : rootHostname); - } - return Array.from(out); -}; - -// My rules -const getRules = function() { - return { - permanentRules: - permanentFirewall.toArray().concat( - permanentSwitches.toArray(), - permanentURLFiltering.toArray() - ), - sessionRules: - sessionFirewall.toArray().concat( - sessionSwitches.toArray(), - sessionURLFiltering.toArray() - ), - pslSelfie: publicSuffixList.toSelfie(), - }; -}; - -const modifyRuleset = function(details) { - let swRuleset, hnRuleset, urlRuleset; - if ( details.permanent ) { - swRuleset = permanentSwitches; - hnRuleset = permanentFirewall; - urlRuleset = permanentURLFiltering; - } else { - swRuleset = sessionSwitches; - hnRuleset = sessionFirewall; - urlRuleset = sessionURLFiltering; - } - let toRemove = new Set(details.toRemove.trim().split(/\s*[\n\r]+\s*/)); - for ( let rule of toRemove ) { - if ( rule === '' ) { continue; } - let parts = rule.split(/\s+/); - if ( hnRuleset.removeFromRuleParts(parts) === false ) { - if ( swRuleset.removeFromRuleParts(parts) === false ) { - urlRuleset.removeFromRuleParts(parts); - } - } - } - let toAdd = new Set(details.toAdd.trim().split(/\s*[\n\r]+\s*/)); - for ( let rule of toAdd ) { - if ( rule === '' ) { continue; } - let parts = rule.split(/\s+/); - if ( hnRuleset.addFromRuleParts(parts) === false ) { - if ( swRuleset.addFromRuleParts(parts) === false ) { - urlRuleset.addFromRuleParts(parts); - } - } - } - if ( details.permanent ) { - if ( swRuleset.changed ) { - µb.saveHostnameSwitches(); - swRuleset.changed = false; - } - if ( hnRuleset.changed ) { - µb.savePermanentFirewallRules(); - hnRuleset.changed = false; - } - if ( urlRuleset.changed ) { - µb.savePermanentURLFilteringRules(); - urlRuleset.changed = false; - } - } -}; - -// Support -const getSupportData = async function() { - const diffArrays = function(modified, original) { - const modifiedSet = new Set(modified); - const originalSet = new Set(original); - let added = []; - let removed = []; - for ( const item of modifiedSet ) { - if ( originalSet.has(item) ) { continue; } - added.push(item); - } - for ( const item of originalSet ) { - if ( modifiedSet.has(item) ) { continue; } - removed.push(item); - } - if ( added.length === 0 ) { - added = undefined; - } - if ( removed.length === 0 ) { - removed = undefined; - } - if ( added !== undefined || removed !== undefined ) { - return { added, removed }; - } - }; - - const modifiedUserSettings = µb.getModifiedSettings( - µb.userSettings, - µb.userSettingsDefault - ); - - const modifiedHiddenSettings = µb.getModifiedSettings( - µb.hiddenSettings, - µb.hiddenSettingsDefault - ); - - let filterset = []; - const userFilters = await µb.loadUserFilters(); - for ( const line of userFilters.content.split(/\s*\n+\s*/) ) { - if ( /^($|![^#])/.test(line) ) { continue; } - filterset.push(line); - } - - const now = Date.now(); - - const formatDelayFromNow = list => { - const time = list.writeTime; - if ( typeof time !== 'number' || time === 0 ) { return 'never'; } - if ( (time || 0) === 0 ) { return '?'; } - const delayInSec = (now - time) / 1000; - const days = (delayInSec / 86400) | 0; - const hours = (delayInSec % 86400) / 3600 | 0; - const minutes = (delayInSec % 3600) / 60 | 0; - const parts = []; - if ( days > 0 ) { parts.push(`${days}d`); } - if ( hours > 0 ) { parts.push(`${hours}h`); } - if ( minutes > 0 ) { parts.push(`${minutes}m`); } - if ( parts.length === 0 ) { parts.push('now'); } - const out = parts.join('.'); - if ( list.diffUpdated ) { return `${out} Δ`; } - return out; - }; - - const lists = µb.availableFilterLists; - let defaultListset = {}; - let addedListset = {}; - let removedListset = {}; - for ( const listKey in lists ) { - if ( lists.hasOwnProperty(listKey) === false ) { continue; } - const list = lists[listKey]; - if ( list.content !== 'filters' ) { continue; } - const used = µb.selectedFilterLists.includes(listKey); - const listDetails = []; - if ( used ) { - if ( typeof list.entryCount === 'number' ) { - listDetails.push(`${list.entryCount}-${list.entryCount-list.entryUsedCount}`); - } - listDetails.push(formatDelayFromNow(list)); - } - if ( list.isDefault || listKey === µb.userFiltersPath ) { - if ( used ) { - defaultListset[listKey] = listDetails.join(', '); - } else { - removedListset[listKey] = null; - } - } else if ( used ) { - addedListset[listKey] = listDetails.join(', '); - } - } - if ( Object.keys(defaultListset).length === 0 ) { - defaultListset = undefined; - } - if ( Object.keys(addedListset).length === 0 ) { - addedListset = undefined; - } else { - const added = Object.keys(addedListset); - const truncated = added.slice(12); - for ( const key of truncated ) { - delete addedListset[key]; - } - if ( truncated.length !== 0 ) { - addedListset[`[${truncated.length} lists not shown]`] = '[too many]'; - } - } - if ( Object.keys(removedListset).length === 0 ) { - removedListset = undefined; - } - - let browserFamily = (( ) => { - if ( vAPI.webextFlavor.soup.has('firefox') ) { return 'Firefox'; } - if ( vAPI.webextFlavor.soup.has('chromium') ) { return 'Chromium'; } - return 'Unknown'; - })(); - if ( vAPI.webextFlavor.soup.has('mobile') ) { - browserFamily += ' Mobile'; - } - - return { - [`${vAPI.app.name}`]: `${vAPI.app.version}`, - [`${browserFamily}`]: `${vAPI.webextFlavor.major}`, - 'filterset (summary)': { - network: staticNetFilteringEngine.getFilterCount(), - cosmetic: cosmeticFilteringEngine.getFilterCount(), - scriptlet: scriptletFilteringEngine.getFilterCount(), - html: htmlFilteringEngine.getFilterCount(), - }, - 'listset (total-discarded, last-updated)': { - removed: removedListset, - added: addedListset, - default: defaultListset, - }, - 'filterset (user)': filterset, - trustedset: diffArrays( - µb.arrayFromWhitelist(µb.netWhitelist), - µb.netWhitelistDefault - ), - switchRuleset: diffArrays( - sessionSwitches.toArray(), - µb.hostnameSwitchesDefault - ), - hostRuleset: diffArrays( - sessionFirewall.toArray(), - µb.dynamicFilteringDefault - ), - urlRuleset: diffArrays( - sessionURLFiltering.toArray(), - [] - ), - 'userSettings': modifiedUserSettings, - 'hiddenSettings': modifiedHiddenSettings, - supportStats: µb.supportStats, - }; -}; - -const onMessage = function(request, sender, callback) { - // Async - switch ( request.what ) { - case 'backupUserData': - return backupUserData().then(data => { - callback(data); - }); - - case 'getLists': - return µb.isReadyPromise.then(( ) => { - getLists(callback); - }); - - case 'getLocalData': - return getLocalData().then(localData => { - callback(localData); - }); - - case 'getSupportData': { - getSupportData().then(response => { - callback(response); - }); - return; - } - - case 'readUserFilters': - return µb.loadUserFilters().then(result => { - result.enabled = µb.selectedFilterLists.includes(µb.userFiltersPath); - result.trusted = µb.isTrustedList(µb.userFiltersPath); - callback(result); - }); - - case 'writeUserFilters': - if ( request.enabled ) { - µb.applyFilterListSelection({ - toSelect: [ µb.userFiltersPath ], - merge: true, - }); - } else { - µb.applyFilterListSelection({ - toRemove: [ µb.userFiltersPath ], - }); - } - µb.changeUserSettings('userFiltersTrusted', request.trusted || false); - return µb.saveUserFilters(request.content).then(result => { - callback(result); - }); - - default: - break; - } - - // Sync - let response; - - switch ( request.what ) { - case 'dashboardConfig': - response = { - noDashboard: µb.noDashboard, - }; - break; - - case 'getAutoCompleteDetails': - response = {}; - if ( (request.hintUpdateToken || 0) === 0 ) { - response.redirectResources = redirectEngine.getResourceDetails(); - response.preparseDirectiveEnv = vAPI.webextFlavor.env.slice(); - response.preparseDirectiveHints = sfp.utils.preparser.getHints(); - } - if ( request.hintUpdateToken !== µb.pageStoresToken ) { - response.originHints = getOriginHints(); - response.hintUpdateToken = µb.pageStoresToken; - } - break; - - case 'getRules': - response = getRules(); - break; - - case 'modifyRuleset': - // https://github.com/chrisaljoudi/uBlock/issues/772 - cosmeticFilteringEngine.removeFromSelectorCache('*'); - modifyRuleset(request); - response = getRules(); - break; - - case 'supportUpdateNow': { - const { assetKeys } = request; - if ( assetKeys.length === 0 ) { return; } - for ( const assetKey of assetKeys ) { - io.purge(assetKey); - } - µb.scheduleAssetUpdater({ now: true, fetchDelay: 100 }); - break; - } - - case 'listsUpdateNow': { - const { assetKeys, preferOrigin = false } = request; - if ( assetKeys.length === 0 ) { return; } - for ( const assetKey of assetKeys ) { - io.purge(assetKey); - } - µb.scheduleAssetUpdater({ now: true, fetchDelay: 100, auto: preferOrigin !== true }); - break; - } - - case 'readHiddenSettings': - response = { - 'default': µb.hiddenSettingsDefault, - 'admin': µb.hiddenSettingsAdmin, - 'current': µb.hiddenSettings, - }; - break; - - case 'restoreUserData': - restoreUserData(request); - break; - - case 'resetUserData': - resetUserData(); - break; - - case 'updateNow': - µb.scheduleAssetUpdater({ now: true, fetchDelay: 100, auto: true }); - break; - - case 'writeHiddenSettings': - µb.changeHiddenSettings(µb.hiddenSettingsFromString(request.content)); - break; - - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -}; - -vAPI.messaging.listen({ - name: 'dashboard', - listener: onMessage, - privileged: true, -}); - -// <<<<< end of local scope -} - -/******************************************************************************/ -/******************************************************************************/ - -// Channel: -// loggerUI -// privileged - -{ -// >>>>> start of local scope - -const extensionOriginURL = vAPI.getURL(''); -const documentBlockedURL = vAPI.getURL('document-blocked.html'); - -const getLoggerData = async function(details, activeTabId, callback) { - const response = { - activeTabId, - colorBlind: µb.userSettings.colorBlindFriendly, - entries: logger.readAll(details.ownerId), - tabIdsToken: µb.pageStoresToken, - tooltips: µb.userSettings.tooltipsDisabled === false - }; - if ( µb.pageStoresToken !== details.tabIdsToken ) { - response.tabIds = []; - for ( const [ tabId, pageStore ] of µb.pageStores ) { - const { rawURL, title } = pageStore; - if ( rawURL.startsWith(extensionOriginURL) ) { - if ( rawURL.startsWith(documentBlockedURL) === false ) { continue; } - } - response.tabIds.push([ tabId, title ]); - } - } - if ( activeTabId ) { - const pageStore = µb.pageStoreFromTabId(activeTabId); - const rawURL = pageStore && pageStore.rawURL; - if ( - rawURL === null || - rawURL.startsWith(extensionOriginURL) && - rawURL.startsWith(documentBlockedURL) === false - ) { - response.activeTabId = undefined; - } - } - if ( details.popupLoggerBoxChanged && vAPI.windows instanceof Object ) { - const tabs = await vAPI.tabs.query({ - url: vAPI.getURL('/logger-ui.html?popup=1') - }); - if ( tabs.length !== 0 ) { - const win = await vAPI.windows.get(tabs[0].windowId); - if ( win === null ) { return; } - vAPI.localStorage.setItem('popupLoggerBox', JSON.stringify({ - left: win.left, - top: win.top, - width: win.width, - height: win.height, - })); - } - } - callback(response); -}; - -const getURLFilteringData = function(details) { - const colors = {}; - const response = { - dirty: false, - colors: colors - }; - const suf = sessionURLFiltering; - const puf = permanentURLFiltering; - const urls = details.urls; - const context = details.context; - const type = details.type; - for ( const url of urls ) { - const colorEntry = colors[url] = { r: 0, own: false }; - if ( suf.evaluateZ(context, url, type).r !== 0 ) { - colorEntry.r = suf.r; - colorEntry.own = suf.r !== 0 && - suf.context === context && - suf.url === url && - suf.type === type; - } - if ( response.dirty ) { continue; } - puf.evaluateZ(context, url, type); - const pown = ( - puf.r !== 0 && - puf.context === context && - puf.url === url && - puf.type === type - ); - response.dirty = colorEntry.own !== pown || colorEntry.r !== puf.r; - } - return response; -}; - -const onMessage = function(request, sender, callback) { - // Async - switch ( request.what ) { - case 'readAll': - if ( logger.ownerId !== undefined && logger.ownerId !== request.ownerId ) { - return callback({ unavailable: true }); - } - vAPI.tabs.getCurrent().then(tab => { - getLoggerData(request, tab && tab.id, callback); - }); - return; - - case 'toggleInMemoryFilter': { - const promise = µb.hasInMemoryFilter(request.filter) - ? µb.removeInMemoryFilter(request.filter) - : µb.addInMemoryFilter(request.filter); - promise.then(status => { callback(status); }); - return; - } - default: - break; - } - - // Sync - let response; - - switch ( request.what ) { - case 'hasInMemoryFilter': - response = µb.hasInMemoryFilter(request.filter); - break; - - case 'releaseView': - if ( request.ownerId !== logger.ownerId ) { break; } - logger.ownerId = undefined; - µb.clearInMemoryFilters(); - break; - - case 'saveURLFilteringRules': - response = permanentURLFiltering.copyRules( - sessionURLFiltering, - request.context, - request.urls, - request.type - ); - if ( response ) { - µb.savePermanentURLFilteringRules(); - } - break; - - case 'setURLFilteringRule': - µb.toggleURLFilteringRule(request); - break; - - case 'getURLFilteringData': - response = getURLFilteringData(request); - break; - - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -}; - -vAPI.messaging.listen({ - name: 'loggerUI', - listener: onMessage, - privileged: true, -}); - -// <<<<< end of local scope -} - -/******************************************************************************/ -/******************************************************************************/ - -// Channel: -// domInspectorContent -// unprivileged - -{ -// >>>>> start of local scope - -const onMessage = (request, sender, callback) => { - // Async - switch ( request.what ) { - default: - break; - } - // Sync - let response; - switch ( request.what ) { - case 'getInspectorArgs': - const bc = new globalThis.BroadcastChannel('contentInspectorChannel'); - bc.postMessage({ - what: 'contentInspectorChannel', - tabId: sender.tabId || 0, - frameId: sender.frameId || 0, - }); - response = { - inspectorURL: vAPI.getURL( - `/web_accessible_resources/dom-inspector.html?secret=${vAPI.warSecret.short()}` - ), - }; - break; - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -}; - -vAPI.messaging.listen({ - name: 'domInspectorContent', - listener: onMessage, - privileged: false, -}); - -// <<<<< end of local scope -} - -/******************************************************************************/ -/******************************************************************************/ - -// Channel: -// documentBlocked -// privileged - -{ -// >>>>> start of local scope - -const onMessage = function(request, sender, callback) { - const tabId = sender.tabId || 0; - - // Async - switch ( request.what ) { - default: - break; - } - - // Sync - let response; - - switch ( request.what ) { - case 'closeThisTab': - vAPI.tabs.remove(tabId); - break; - - case 'temporarilyWhitelistDocument': - webRequest.strictBlockBypass(request.hostname); - break; - - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -}; - -vAPI.messaging.listen({ - name: 'documentBlocked', - listener: onMessage, - privileged: true, -}); - -// <<<<< end of local scope -} - -/******************************************************************************/ -/******************************************************************************/ - -// Channel: -// devTools -// privileged - -{ -// >>>>> start of local scope - -const onMessage = function(request, sender, callback) { - // Async - switch ( request.what ) { - case 'purgeAllCaches': - µb.getBytesInUse().then(bytesInUseBefore => - io.remove(/./).then(( ) => - µb.getBytesInUse().then(bytesInUseAfter => { - callback([ - `Storage used before: ${µb.formatCount(bytesInUseBefore)}B`, - `Storage used after: ${µb.formatCount(bytesInUseAfter)}B`, - ].join('\n')); - }) - ) - ); - return; - - case 'snfeBenchmark': - import('/js/benchmarks.js').then(module => { - module.benchmarkStaticNetFiltering({ redirectEngine }).then(result => { - callback(result); - }); - }); - return; - - case 'cfeBenchmark': - import('/js/benchmarks.js').then(module => { - module.benchmarkCosmeticFiltering().then(result => { - callback(result); - }); - }); - return; - - case 'sfeBenchmark': - import('/js/benchmarks.js').then(module => { - module.benchmarkScriptletFiltering().then(result => { - callback(result); - }); - }); - return; - - case 'snfeToDNR': { - const listPromises = []; - const listNames = []; - for ( const assetKey of µb.selectedFilterLists ) { - listPromises.push( - io.get(assetKey, { dontCache: true }).then(details => { - listNames.push(assetKey); - return { name: assetKey, text: details.content }; - }) - ); - } - const options = { - extensionPaths: redirectEngine.getResourceDetails().filter(e => - typeof e[1].extensionPath === 'string' && e[1].extensionPath !== '' - ).map(e => - [ e[0], e[1].extensionPath ] - ), - env: vAPI.webextFlavor.env, - }; - const t0 = Date.now(); - dnrRulesetFromRawLists(listPromises, options).then(result => { - const { network } = result; - const replacer = (k, v) => { - if ( k.startsWith('__') ) { return; } - if ( Array.isArray(v) ) { - return v.sort(); - } - if ( v instanceof Object ) { - const sorted = {}; - for ( const kk of Object.keys(v).sort() ) { - sorted[kk] = v[kk]; - } - return sorted; - } - return v; - }; - const isUnsupported = rule => - rule._error !== undefined; - const isRegex = rule => - rule.condition !== undefined && - rule.condition.regexFilter !== undefined; - const isRedirect = rule => - rule.action !== undefined && - rule.action.type === 'redirect' && - rule.action.redirect.extensionPath !== undefined; - const isCsp = rule => - rule.action !== undefined && - rule.action.type === 'modifyHeaders'; - const isRemoveparam = rule => - rule.action !== undefined && - rule.action.type === 'redirect' && - rule.action.redirect.transform !== undefined; - const runtime = Date.now() - t0; - const { ruleset } = network; - const good = ruleset.filter(rule => - isUnsupported(rule) === false && - isRegex(rule) === false && - isRedirect(rule) === false && - isCsp(rule) === false && - isRemoveparam(rule) === false - ); - const unsupported = ruleset.filter(rule => - isUnsupported(rule) - ); - const regexes = ruleset.filter(rule => - isUnsupported(rule) === false && - isRegex(rule) && - isRedirect(rule) === false && - isCsp(rule) === false && - isRemoveparam(rule) === false - ); - const redirects = ruleset.filter(rule => - isUnsupported(rule) === false && - isRedirect(rule) - ); - const headers = ruleset.filter(rule => - isUnsupported(rule) === false && - isCsp(rule) - ); - const removeparams = ruleset.filter(rule => - isUnsupported(rule) === false && - isRemoveparam(rule) - ); - const out = [ - `dnrRulesetFromRawLists(${JSON.stringify(listNames, null, 2)})`, - `Run time: ${runtime} ms`, - `Filters count: ${network.filterCount}`, - `Accepted filter count: ${network.acceptedFilterCount}`, - `Rejected filter count: ${network.rejectedFilterCount}`, - `Un-DNR-able filter count: ${unsupported.length}`, - `Resulting DNR rule count: ${ruleset.length}`, - ]; - out.push(`+ Good filters (${good.length}): ${JSON.stringify(good, replacer, 2)}`); - out.push(`+ Regex-based filters (${regexes.length}): ${JSON.stringify(regexes, replacer, 2)}`); - out.push(`+ 'redirect=' filters (${redirects.length}): ${JSON.stringify(redirects, replacer, 2)}`); - out.push(`+ 'csp=' filters (${headers.length}): ${JSON.stringify(headers, replacer, 2)}`); - out.push(`+ 'removeparam=' filters (${removeparams.length}): ${JSON.stringify(removeparams, replacer, 2)}`); - out.push(`+ Unsupported filters (${unsupported.length}): ${JSON.stringify(unsupported, replacer, 2)}`); - out.push(`+ generichide exclusions (${network.generichideExclusions.length}): ${JSON.stringify(network.generichideExclusions, replacer, 2)}`); - if ( result.specificCosmetic ) { - out.push(`+ Cosmetic filters: ${result.specificCosmetic.size}`); - for ( const details of result.specificCosmetic ) { - out.push(` ${JSON.stringify(details)}`); - } - } else { - out.push(' Cosmetic filters: 0'); - } - callback(out.join('\n')); - }); - return; - } - default: - break; - } - - // Sync - let response; - - switch ( request.what ) { - case 'snfeDump': - response = staticNetFilteringEngine.dump(); - break; - - case 'cfeDump': - response = cosmeticFilteringEngine.dump(); - break; - - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -}; - -vAPI.messaging.listen({ - name: 'devTools', - listener: onMessage, - privileged: true, -}); - -// <<<<< end of local scope -} - -/******************************************************************************/ -/******************************************************************************/ - -// Channel: -// scriptlets -// unprivileged - -{ -// >>>>> start of local scope - -const logCosmeticFilters = function(tabId, details) { - if ( logger.enabled === false ) { return; } - - const filter = { source: 'cosmetic', raw: '' }; - const fctxt = µb.filteringContext.duplicate(); - fctxt.fromTabId(tabId) - .setRealm('cosmetic') - .setType('dom') - .setURL(details.frameURL) - .setDocOriginFromURL(details.frameURL) - .setFilter(filter); - for ( const selector of details.matchedSelectors.sort() ) { - filter.raw = selector; - fctxt.toLogger(); - } -}; - -const logCSPViolations = function(pageStore, request) { - if ( logger.enabled === false || pageStore === null ) { - return false; - } - if ( request.violations.length === 0 ) { - return true; - } - - const fctxt = µb.filteringContext.duplicate(); - fctxt.fromTabId(pageStore.tabId) - .setRealm('network') - .setDocOriginFromURL(request.docURL) - .setURL(request.docURL); - - let cspData = pageStore.extraData.get('cspData'); - if ( cspData === undefined ) { - cspData = new Map(); - - const staticDirectives = - staticNetFilteringEngine.matchAndFetchModifiers(fctxt, 'csp'); - if ( staticDirectives !== undefined ) { - for ( const directive of staticDirectives ) { - if ( directive.result !== 1 ) { continue; } - cspData.set(directive.value, directive.logData()); - } - } - - fctxt.type = 'inline-script'; - fctxt.filter = undefined; - if ( pageStore.filterRequest(fctxt) === 1 ) { - cspData.set(µb.cspNoInlineScript, fctxt.filter); - } - - fctxt.type = 'script'; - fctxt.filter = undefined; - if ( pageStore.filterScripting(fctxt, true) === 1 ) { - cspData.set(µb.cspNoScripting, fctxt.filter); - } - - fctxt.type = 'inline-font'; - fctxt.filter = undefined; - if ( pageStore.filterRequest(fctxt) === 1 ) { - cspData.set(µb.cspNoInlineFont, fctxt.filter); - } - - if ( cspData.size === 0 ) { return false; } - - pageStore.extraData.set('cspData', cspData); - } - - const typeMap = logCSPViolations.policyDirectiveToTypeMap; - for ( const json of request.violations ) { - const violation = JSON.parse(json); - let type = typeMap.get(violation.directive); - if ( type === undefined ) { continue; } - const logData = cspData.get(violation.policy); - if ( logData === undefined ) { continue; } - if ( /^[\w.+-]+:\/\//.test(violation.url) === false ) { - violation.url = request.docURL; - if ( type === 'script' ) { type = 'inline-script'; } - else if ( type === 'font' ) { type = 'inline-font'; } - } - // The resource was blocked as a result of applying a CSP directive - // elsewhere rather than to the resource itself. - logData.modifier = undefined; - fctxt.setURL(violation.url) - .setType(type) - .setFilter(logData) - .toLogger(); - } - - return true; -}; - -logCSPViolations.policyDirectiveToTypeMap = new Map([ - [ 'img-src', 'image' ], - [ 'connect-src', 'xmlhttprequest' ], - [ 'font-src', 'font' ], - [ 'frame-src', 'sub_frame' ], - [ 'media-src', 'media' ], - [ 'object-src', 'object' ], - [ 'script-src', 'script' ], - [ 'script-src-attr', 'script' ], - [ 'script-src-elem', 'script' ], - [ 'style-src', 'stylesheet' ], - [ 'style-src-attr', 'stylesheet' ], - [ 'style-src-elem', 'stylesheet' ], -]); - -const onMessage = function(request, sender, callback) { - const tabId = sender.tabId || 0; - const pageStore = µb.pageStoreFromTabId(tabId); - - // Async - switch ( request.what ) { - default: - break; - } - - // Sync - let response; - - switch ( request.what ) { - case 'inlinescriptFound': - if ( logger.enabled && pageStore !== null ) { - const fctxt = µb.filteringContext.duplicate(); - fctxt.fromTabId(tabId) - .setType('inline-script') - .setURL(request.docURL) - .setDocOriginFromURL(request.docURL); - if ( pageStore.filterRequest(fctxt) === 0 ) { - fctxt.setRealm('network').toLogger(); - } - } - break; - - case 'logCosmeticFilteringData': - logCosmeticFilters(tabId, request); - break; - - case 'securityPolicyViolation': - response = logCSPViolations(pageStore, request); - break; - - case 'temporarilyAllowLargeMediaElement': - if ( pageStore !== null ) { - pageStore.allowLargeMediaElementsUntil = Date.now() + 5000; - } - break; - - case 'subscribeTo': - // https://github.com/uBlockOrigin/uBlock-issues/issues/1797 - if ( /^(file|https?):\/\//.test(request.location) === false ) { break; } - const url = encodeURIComponent(request.location); - const title = encodeURIComponent(request.title); - const hash = µb.selectedFilterLists.indexOf(request.location) !== -1 - ? '#subscribed' - : ''; - vAPI.tabs.open({ - url: `/asset-viewer.html?url=${url}&title=${title}&subscribe=1${hash}`, - select: true, - }); - break; - - case 'updateLists': - const listkeys = request.listkeys.split(',').filter(s => s !== ''); - if ( listkeys.length === 0 ) { return; } - if ( listkeys.includes('all') ) { - io.purge(/./, 'public_suffix_list.dat'); - } else { - for ( const listkey of listkeys ) { - io.purge(listkey); - } - } - µb.openNewTab({ - url: 'dashboard.html#3p-filters.html', - select: true, - }); - µb.scheduleAssetUpdater({ now: true, fetchDelay: 100, auto: request.auto }); - break; - - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -}; - -vAPI.messaging.listen({ - name: 'scriptlets', - listener: onMessage, -}); - -// <<<<< end of local scope -} - - -/******************************************************************************/ -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/mrucache.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/mrucache.js deleted file mode 100644 index 9a16047..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/mrucache.js +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -export class MRUCache { - constructor(maxSize) { - this.maxSize = maxSize; - this.array = []; - this.map = new Map(); - this.resetTime = Date.now(); - } - add(key, value) { - const found = this.map.has(key); - this.map.set(key, value); - if ( found ) { return; } - if ( this.array.length === this.maxSize ) { - this.map.delete(this.array.pop()); - } - this.array.unshift(key); - } - remove(key) { - if ( this.map.delete(key) === false ) { return; } - this.array.splice(this.array.indexOf(key), 1); - } - lookup(key) { - const value = this.map.get(key); - if ( value === undefined ) { return; } - if ( this.array[0] === key ) { return value; } - const i = this.array.indexOf(key); - this.array.copyWithin(1, 0, i); - this.array[0] = key; - return value; - } - reset() { - this.array = []; - this.map.clear(); - this.resetTime = Date.now(); - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/pagestore.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/pagestore.js deleted file mode 100644 index 227352d..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/pagestore.js +++ /dev/null @@ -1,1138 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/******************************************************************************/ - -import { - domainFromHostname, - hostnameFromURI, - isNetworkURI, -} from './uri-utils.js'; - -import { - sessionFirewall, - sessionSwitches, - sessionURLFiltering, -} from './filtering-engines.js'; - -import contextMenu from './contextmenu.js'; -import logger from './logger.js'; -import { orphanizeString } from './text-utils.js'; -import { redirectEngine } from './redirect-engine.js'; -import staticNetFilteringEngine from './static-net-filtering.js'; -import webext from './webext.js'; -import µb from './background.js'; - -/******************************************************************************* - -A PageRequestStore object is used to store net requests in two ways: - -To record distinct net requests -To create a log of net requests - -**/ - -/******************************************************************************/ - -const NetFilteringResultCache = class { - constructor() { - this.pruneTimer = vAPI.defer.create(( ) => { - this.prune(); - }); - this.init(); - } - - init() { - this.blocked = new Map(); - this.results = new Map(); - this.hash = 0; - return this; - } - - // https://github.com/gorhill/uBlock/issues/3619 - // Don't collapse redirected resources - rememberResult(fctxt, result) { - if ( fctxt.tabId <= 0 ) { return; } - if ( this.results.size === 0 ) { - this.pruneAsync(); - } - const key = `${fctxt.getDocHostname()} ${fctxt.type} ${fctxt.url}`; - this.results.set(key, { - result, - redirectURL: fctxt.redirectURL, - logData: fctxt.filter, - tstamp: Date.now() - }); - if ( result !== 1 || fctxt.redirectURL !== undefined ) { return; } - const now = Date.now(); - this.blocked.set(key, now); - this.hash = now; - } - - rememberBlock(fctxt) { - if ( fctxt.tabId <= 0 ) { return; } - if ( this.blocked.size === 0 ) { - this.pruneAsync(); - } - if ( fctxt.redirectURL !== undefined ) { return; } - const now = Date.now(); - this.blocked.set( - `${fctxt.getDocHostname()} ${fctxt.type} ${fctxt.url}`, - now - ); - this.hash = now; - } - - forgetResult(docHostname, type, url) { - const key = `${docHostname} ${type} ${url}`; - this.results.delete(key); - this.blocked.delete(key); - } - - empty() { - this.blocked.clear(); - this.results.clear(); - this.hash = 0; - this.pruneTimer.off(); - } - - prune() { - const obsolete = Date.now() - this.shelfLife; - for ( const entry of this.blocked ) { - if ( entry[1] <= obsolete ) { - this.results.delete(entry[0]); - this.blocked.delete(entry[0]); - } - } - for ( const entry of this.results ) { - if ( entry[1].tstamp <= obsolete ) { - this.results.delete(entry[0]); - } - } - if ( this.blocked.size !== 0 || this.results.size !== 0 ) { - this.pruneAsync(); - } - } - - pruneAsync() { - this.pruneTimer.on(this.shelfLife); - } - - lookupResult(fctxt) { - const entry = this.results.get( - fctxt.getDocHostname() + ' ' + - fctxt.type + ' ' + - fctxt.url - ); - if ( entry === undefined ) { return; } - // We need to use a new WAR secret if one is present since WAR secrets - // can only be used once. - if ( - entry.redirectURL !== undefined && - entry.redirectURL.startsWith(this.extensionOriginURL) - ) { - const redirectURL = new URL(entry.redirectURL); - redirectURL.searchParams.set('secret', vAPI.warSecret.short()); - entry.redirectURL = redirectURL.href; - } - return entry; - } - - lookupAllBlocked(hostname) { - const result = []; - for ( const entry of this.blocked ) { - const pos = entry[0].indexOf(' '); - if ( entry[0].slice(0, pos) === hostname ) { - result[result.length] = entry[0].slice(pos + 1); - } - } - return result; - } - - static factory() { - return new NetFilteringResultCache(); - } -}; - -NetFilteringResultCache.prototype.shelfLife = 15000; -NetFilteringResultCache.prototype.extensionOriginURL = vAPI.getURL('/'); - -/******************************************************************************/ - -// Frame stores are used solely to associate a URL with a frame id. - -const FrameStore = class { - constructor(frameURL, parentId) { - this.init(frameURL, parentId); - } - - init(frameURL, parentId) { - this.t0 = Date.now(); - this.parentId = parentId; - this.exceptCname = undefined; - this.clickToLoad = false; - this.rawURL = frameURL; - if ( frameURL !== undefined ) { - this.hostname = hostnameFromURI(frameURL); - this.domain = domainFromHostname(this.hostname) || this.hostname; - } - // Evaluated on-demand - // - 0b01: specific cosmetic filtering - // - 0b10: generic cosmetic filtering - this._cosmeticFilteringBits = undefined; - return this; - } - - dispose() { - this.rawURL = this.hostname = this.domain = ''; - if ( FrameStore.junkyard.length < FrameStore.junkyardMax ) { - FrameStore.junkyard.push(this); - } - return null; - } - - updateURL(url) { - if ( typeof url !== 'string' ) { return; } - this.rawURL = url; - this.hostname = hostnameFromURI(url); - this.domain = domainFromHostname(this.hostname) || this.hostname; - this._cosmeticFilteringBits = undefined; - } - - getCosmeticFilteringBits(tabId) { - if ( this._cosmeticFilteringBits !== undefined ) { - return this._cosmeticFilteringBits; - } - this._cosmeticFilteringBits = 0b11; - { - const result = staticNetFilteringEngine.matchRequestReverse( - 'specifichide', - this.rawURL - ); - if ( result !== 0 && logger.enabled ) { - µb.filteringContext - .duplicate() - .fromTabId(tabId) - .setURL(this.rawURL) - .setDocOriginFromURL(this.rawURL) - .setRealm('network') - .setType('specifichide') - .setFilter(staticNetFilteringEngine.toLogData()) - .toLogger(); - } - if ( result === 2 ) { - this._cosmeticFilteringBits &= ~0b01; - } - } - { - const result = staticNetFilteringEngine.matchRequestReverse( - 'generichide', - this.rawURL - ); - if ( result !== 0 && logger.enabled ) { - µb.filteringContext - .duplicate() - .fromTabId(tabId) - .setURL(this.rawURL) - .setDocOriginFromURL(this.rawURL) - .setRealm('network') - .setType('generichide') - .setFilter(staticNetFilteringEngine.toLogData()) - .toLogger(); - } - if ( result === 2 ) { - this._cosmeticFilteringBits &= ~0b10; - } - } - return this._cosmeticFilteringBits; - } - - shouldApplySpecificCosmeticFilters(tabId) { - return (this.getCosmeticFilteringBits(tabId) & 0b01) !== 0; - } - - shouldApplyGenericCosmeticFilters(tabId) { - return (this.getCosmeticFilteringBits(tabId) & 0b10) !== 0; - } - - static factory(frameURL, parentId = -1) { - const entry = FrameStore.junkyard.pop(); - if ( entry === undefined ) { - return new FrameStore(frameURL, parentId); - } - return entry.init(frameURL, parentId); - } -}; - -// To mitigate memory churning -FrameStore.junkyard = []; -FrameStore.junkyardMax = 50; - -/******************************************************************************/ - -const CountDetails = class { - constructor() { - this.allowed = { any: 0, frame: 0, script: 0 }; - this.blocked = { any: 0, frame: 0, script: 0 }; - } - reset() { - const { allowed, blocked } = this; - blocked.any = blocked.frame = blocked.script = - allowed.any = allowed.frame = allowed.script = 0; - } - inc(blocked, type = undefined) { - const stat = blocked ? this.blocked : this.allowed; - if ( type !== undefined ) { stat[type] += 1; } - stat.any += 1; - } -}; - -const HostnameDetails = class { - constructor(hostname) { - this.counts = new CountDetails(); - this.init(hostname); - } - init(hostname) { - this.hostname = hostname; - this.counts.reset(); - } - dispose() { - this.hostname = ''; - if ( HostnameDetails.junkyard.length < HostnameDetails.junkyardMax ) { - HostnameDetails.junkyard.push(this); - } - } -}; - -HostnameDetails.junkyard = []; -HostnameDetails.junkyardMax = 100; - -const HostnameDetailsMap = class extends Map { - reset() { - this.clear(); - } - dispose() { - for ( const item of this.values() ) { - item.dispose(); - } - this.reset(); - } -}; - -/******************************************************************************/ - -const PageStore = class { - constructor(tabId, details) { - this.extraData = new Map(); - this.journal = []; - this.journalLastCommitted = this.journalLastUncommitted = -1; - this.journalLastUncommittedOrigin = undefined; - this.netFilteringCache = NetFilteringResultCache.factory(); - this.hostnameDetailsMap = new HostnameDetailsMap(); - this.counts = new CountDetails(); - this.journalTimer = vAPI.defer.create(( ) => { - this.journalProcess(); - }); - this.largeMediaTimer = vAPI.defer.create(( ) => { - this.injectLargeMediaElementScriptlet(); - }); - this.init(tabId, details); - } - - static factory(tabId, details) { - let entry = PageStore.junkyard.pop(); - if ( entry === undefined ) { - entry = new PageStore(tabId, details); - } else { - entry.init(tabId, details); - } - return entry; - } - - // https://github.com/gorhill/uBlock/issues/3201 - // The context is used to determine whether we report behavior change - // to the logger. - - init(tabId, details) { - const tabContext = µb.tabContextManager.mustLookup(tabId); - this.tabId = tabId; - - // If we are navigating from-to same site, remember whether large - // media elements were temporarily allowed. - const now = Date.now(); - if ( typeof this.allowLargeMediaElementsUntil !== 'number' ) { - this.allowLargeMediaElementsUntil = now; - } else if ( tabContext.rootHostname !== this.tabHostname ) { - if ( this.tabHostname.endsWith('about-scheme') === false ) { - this.allowLargeMediaElementsUntil = now; - } - } - - this.tabHostname = tabContext.rootHostname; - this.rawURL = tabContext.rawURL; - this.hostnameDetailsMap.reset(); - this.contentLastModified = 0; - this.logData = undefined; - this.counts.reset(); - this.remoteFontCount = 0; - this.popupBlockedCount = 0; - this.largeMediaCount = 0; - this.allowLargeMediaElementsRegex = undefined; - this.extraData.clear(); - - this.frameAddCount = 0; - this.frames = new Map(); - this.setFrameURL({ url: tabContext.rawURL }); - - if ( this.titleFromDetails(details) === false ) { - this.title = tabContext.rawURL; - } - - // Evaluated on-demand - this._noCosmeticFiltering = undefined; - - // Remember if the webpage was potentially improperly filtered, for - // reporting purpose. - this.hasUnprocessedRequest = vAPI.net.hasUnprocessedRequest(tabId); - - return this; - } - - reuse(context, details) { - // When force refreshing a page, the page store data needs to be reset. - - // If the hostname changes, we can't merely just update the context. - const tabContext = µb.tabContextManager.mustLookup(this.tabId); - if ( tabContext.rootHostname !== this.tabHostname ) { - context = ''; - } - - // If URL changes without a page reload (more and more common), then - // we need to keep all that we collected for reuse. In particular, - // not doing so was causing a problem in `videos.foxnews.com`: - // clicking a video thumbnail would not work, because the frame - // hierarchy structure was flushed from memory, while not really being - // flushed on the page. - if ( context === 'tabUpdated' ) { - // As part of https://github.com/chrisaljoudi/uBlock/issues/405 - // URL changed, force a re-evaluation of filtering switch - this.rawURL = tabContext.rawURL; - this.setFrameURL({ url: this.rawURL }); - this.titleFromDetails(details); - return this; - } - - // A new page is completely reloaded from scratch, reset all. - this.largeMediaTimer.off(); - this.disposeFrameStores(); - this.init(this.tabId, details); - return this; - } - - dispose() { - this.tabHostname = ''; - this.title = ''; - this.rawURL = ''; - this.hostnameDetailsMap.dispose(); - this.netFilteringCache.empty(); - this.allowLargeMediaElementsUntil = Date.now(); - this.allowLargeMediaElementsRegex = undefined; - this.largeMediaTimer.off(); - this.disposeFrameStores(); - this.journalTimer.off(); - this.journal = []; - this.journalLastUncommittedOrigin = undefined; - this.journalLastCommitted = this.journalLastUncommitted = -1; - if ( PageStore.junkyard.length < PageStore.junkyardMax ) { - PageStore.junkyard.push(this); - } - return null; - } - - titleFromDetails(details) { - if ( - details instanceof Object === false || - details.title === undefined - ) { - return false; - } - this.title = orphanizeString(details.title.slice(0, 128)); - return true; - } - - disposeFrameStores() { - for ( const frameStore of this.frames.values() ) { - frameStore.dispose(); - } - this.frames.clear(); - } - - getFrameStore(frameId) { - return this.frames.get(frameId) || null; - } - - // https://github.com/uBlockOrigin/uBlock-issues/issues/1858 - // Mind that setFrameURL() can be called from navigation event handlers. - setFrameURL(details) { - let { frameId, url, parentFrameId } = details; - if ( frameId === undefined ) { frameId = 0; } - if ( parentFrameId === undefined ) { parentFrameId = -1; } - let frameStore = this.frames.get(frameId); - if ( frameStore !== undefined ) { - if ( url === frameStore.rawURL ) { - frameStore.parentId = parentFrameId; - } else { - frameStore.init(url, parentFrameId); - } - return frameStore; - } - frameStore = FrameStore.factory(url, parentFrameId); - this.frames.set(frameId, frameStore); - this.frameAddCount += 1; - if ( url.startsWith('about:') ) { - frameStore.updateURL(this.getEffectiveFrameURL({ frameId })); - } - if ( (this.frameAddCount & 0b111111) === 0 ) { - this.pruneFrames(); - } - return frameStore; - } - - getEffectiveFrameURL(sender) { - let { frameId } = sender; - for (;;) { - const frameStore = this.getFrameStore(frameId); - if ( frameStore === null ) { break; } - if ( frameStore.rawURL.startsWith('about:') === false ) { - return frameStore.rawURL; - } - frameId = frameStore.parentId; - if ( frameId === -1 ) { break; } - } - return sender.frameURL; - } - - // There is no event to tell us a specific subframe has been removed from - // the main document. The code below will remove subframes which are no - // longer present in the root document. Removing obsolete subframes is - // not a critical task, so this is executed just once on a while, to avoid - // bloated dictionary of subframes. - // A TTL is used to avoid race conditions when new iframes are added - // through the webRequest API but still not yet visible through the - // webNavigation API. - async pruneFrames() { - let entries; - try { - entries = await webext.webNavigation.getAllFrames({ - tabId: this.tabId - }); - } catch(ex) { - } - if ( Array.isArray(entries) === false ) { return; } - const toKeep = new Set(); - for ( const { frameId } of entries ) { - toKeep.add(frameId); - } - const obsolete = Date.now() - 60000; - for ( const [ frameId, { t0 } ] of this.frames ) { - if ( toKeep.has(frameId) || t0 >= obsolete ) { continue; } - this.frames.delete(frameId); - } - } - - getNetFilteringSwitch() { - return µb.tabContextManager - .mustLookup(this.tabId) - .getNetFilteringSwitch(); - } - - toggleNetFilteringSwitch(url, scope, state) { - µb.toggleNetFilteringSwitch(url, scope, state); - this.netFilteringCache.empty(); - } - - shouldApplyCosmeticFilters(frameId = 0) { - if ( this._noCosmeticFiltering === undefined ) { - this._noCosmeticFiltering = this.getNetFilteringSwitch() === false; - if ( this._noCosmeticFiltering === false ) { - this._noCosmeticFiltering = sessionSwitches.evaluateZ( - 'no-cosmetic-filtering', - this.tabHostname - ) === true; - if ( this._noCosmeticFiltering && logger.enabled ) { - µb.filteringContext - .duplicate() - .fromTabId(this.tabId) - .setURL(this.rawURL) - .setRealm('cosmetic') - .setType('dom') - .setFilter(sessionSwitches.toLogData()) - .toLogger(); - } - } - } - if ( this._noCosmeticFiltering ) { return false; } - if ( frameId === -1 ) { return true; } - // Cosmetic filtering can be effectively disabled when both specific - // and generic cosmetic filters are disabled. - return this.shouldApplySpecificCosmeticFilters(frameId) || - this.shouldApplyGenericCosmeticFilters(frameId); - } - - shouldApplySpecificCosmeticFilters(frameId) { - if ( this.shouldApplyCosmeticFilters(-1) === false ) { return false; } - const frameStore = this.getFrameStore(frameId); - if ( frameStore === null ) { return false; } - return frameStore.shouldApplySpecificCosmeticFilters(this.tabId); - } - - shouldApplyGenericCosmeticFilters(frameId) { - if ( this.shouldApplyCosmeticFilters(-1) === false ) { return false; } - const frameStore = this.getFrameStore(frameId); - if ( frameStore === null ) { return false; } - return frameStore.shouldApplyGenericCosmeticFilters(this.tabId); - } - - // https://github.com/gorhill/uBlock/issues/2105 - // Be sure to always include the current page's hostname -- it might not - // be present when the page itself is pulled from the browser's - // short-term memory cache. - getAllHostnameDetails() { - if ( - this.hostnameDetailsMap.has(this.tabHostname) === false && - isNetworkURI(this.rawURL) - ) { - this.hostnameDetailsMap.set( - this.tabHostname, - new HostnameDetails(this.tabHostname) - ); - } - return this.hostnameDetailsMap; - } - - injectLargeMediaElementScriptlet() { - vAPI.tabs.executeScript(this.tabId, { - file: '/js/scriptlets/load-large-media-interactive.js', - allFrames: true, - runAt: 'document_idle', - }); - contextMenu.update(this.tabId); - } - - temporarilyAllowLargeMediaElements(state) { - this.largeMediaCount = 0; - contextMenu.update(this.tabId); - if ( state ) { - this.allowLargeMediaElementsUntil = 0; - this.allowLargeMediaElementsRegex = undefined; - } else { - this.allowLargeMediaElementsUntil = Date.now(); - } - vAPI.tabs.executeScript(this.tabId, { - file: '/js/scriptlets/load-large-media-all.js', - allFrames: true, - }); - } - - // https://github.com/gorhill/uBlock/issues/2053 - // There is no way around using journaling to ensure we deal properly with - // potentially out of order navigation events vs. network request events. - journalAddRequest(fctxt, result) { - const hostname = fctxt.getHostname(); - if ( hostname === '' ) { return; } - this.journal.push(hostname, result, fctxt.itype); - this.journalTimer.on(µb.hiddenSettings.requestJournalProcessPeriod); - } - - journalAddRootFrame(type, url) { - if ( type === 'committed' ) { - this.journalLastCommitted = this.journal.length; - if ( - this.journalLastUncommitted !== -1 && - this.journalLastUncommitted < this.journalLastCommitted && - this.journalLastUncommittedOrigin === hostnameFromURI(url) - ) { - this.journalLastCommitted = this.journalLastUncommitted; - } - } else if ( type === 'uncommitted' ) { - const newOrigin = hostnameFromURI(url); - if ( - this.journalLastUncommitted === -1 || - this.journalLastUncommittedOrigin !== newOrigin - ) { - this.journalLastUncommitted = this.journal.length; - this.journalLastUncommittedOrigin = newOrigin; - } - } - this.journalTimer.offon(µb.hiddenSettings.requestJournalProcessPeriod); - } - - journalProcess() { - this.journalTimer.off(); - - const journal = this.journal; - const pivot = Math.max(0, this.journalLastCommitted); - const now = Date.now(); - const { SCRIPT, SUB_FRAME, OBJECT } = µb.FilteringContext; - let aggregateAllowed = 0; - let aggregateBlocked = 0; - - // Everything after pivot originates from current page. - for ( let i = pivot; i < journal.length; i += 3 ) { - const hostname = journal[i+0]; - let hnDetails = this.hostnameDetailsMap.get(hostname); - if ( hnDetails === undefined ) { - hnDetails = new HostnameDetails(hostname); - this.hostnameDetailsMap.set(hostname, hnDetails); - this.contentLastModified = now; - } - const blocked = journal[i+1] === 1; - const itype = journal[i+2]; - if ( itype === SCRIPT ) { - hnDetails.counts.inc(blocked, 'script'); - this.counts.inc(blocked, 'script'); - } else if ( itype === SUB_FRAME || itype === OBJECT ) { - hnDetails.counts.inc(blocked, 'frame'); - this.counts.inc(blocked, 'frame'); - } else { - hnDetails.counts.inc(blocked); - this.counts.inc(blocked); - } - if ( blocked ) { - aggregateBlocked += 1; - } else { - aggregateAllowed += 1; - } - } - this.journalLastUncommitted = this.journalLastCommitted = -1; - - // https://github.com/chrisaljoudi/uBlock/issues/905#issuecomment-76543649 - // No point updating the badge if it's not being displayed. - if ( aggregateBlocked !== 0 && µb.userSettings.showIconBadge ) { - µb.updateToolbarIcon(this.tabId, 0x02); - } - - // Everything before pivot does not originate from current page -- we - // still need to bump global blocked/allowed counts. - for ( let i = 0; i < pivot; i += 3 ) { - if ( journal[i+1] === 1 ) { - aggregateBlocked += 1; - } else { - aggregateAllowed += 1; - } - } - if ( aggregateAllowed || aggregateBlocked ) { - µb.incrementRequestStats(aggregateBlocked, aggregateAllowed); - } - journal.length = 0; - } - - filterRequest(fctxt) { - fctxt.filter = undefined; - fctxt.redirectURL = undefined; - - if ( this.getNetFilteringSwitch(fctxt) === false ) { - return 0; - } - - if ( - fctxt.itype === fctxt.CSP_REPORT && - this.filterCSPReport(fctxt) === 1 - ) { - return 1; - } - - if ( - (fctxt.itype & fctxt.FONT_ANY) !== 0 && - this.filterFont(fctxt) === 1 ) - { - return 1; - } - - if ( - fctxt.itype === fctxt.SCRIPT && - this.filterScripting(fctxt, true) === 1 - ) { - return 1; - } - - const cacheableResult = - this.cacheableResults.has(fctxt.itype) && - fctxt.aliasURL === undefined; - - if ( cacheableResult ) { - const entry = this.netFilteringCache.lookupResult(fctxt); - if ( entry !== undefined ) { - fctxt.redirectURL = entry.redirectURL; - fctxt.filter = entry.logData; - return entry.result; - } - } - - const requestType = fctxt.type; - const loggerEnabled = logger.enabled; - - // Dynamic URL filtering. - let result = sessionURLFiltering.evaluateZ( - fctxt.getTabHostname(), - fctxt.url, - requestType - ); - if ( result !== 0 && loggerEnabled ) { - fctxt.filter = sessionURLFiltering.toLogData(); - } - - // Dynamic hostname/type filtering. - if ( result === 0 && µb.userSettings.advancedUserEnabled ) { - result = sessionFirewall.evaluateCellZY( - fctxt.getTabHostname(), - fctxt.getHostname(), - requestType - ); - if ( result !== 0 && result !== 3 && loggerEnabled ) { - fctxt.filter = sessionFirewall.toLogData(); - } - } - - // Static filtering has lowest precedence. - const snfe = staticNetFilteringEngine; - if ( result === 0 || result === 3 ) { - result = snfe.matchRequest(fctxt); - if ( result !== 0 ) { - if ( loggerEnabled ) { - fctxt.setFilter(snfe.toLogData()); - } - // https://github.com/uBlockOrigin/uBlock-issues/issues/943 - // Blanket-except blocked aliased canonical hostnames? - if ( - result === 1 && - fctxt.aliasURL !== undefined && - snfe.isBlockImportant() === false && - this.shouldExceptCname(fctxt) - ) { - return 2; - } - } - } - - // Click-to-load? - // When frameId is not -1, the resource is always sub_frame. - if ( result === 1 && fctxt.frameId !== -1 ) { - const frameStore = this.getFrameStore(fctxt.frameId); - if ( frameStore !== null && frameStore.clickToLoad ) { - result = 2; - if ( loggerEnabled ) { - fctxt.pushFilter({ - result, - source: 'network', - raw: 'click-to-load', - }); - } - } - } - - // Modifier(s)? - // A modifier is an action which transform the original network request. - // https://github.com/gorhill/uBlock/issues/949 - // Redirect blocked request? - // https://github.com/uBlockOrigin/uBlock-issues/issues/760 - // Redirect non-blocked request? - if ( (fctxt.itype & fctxt.INLINE_ANY) === 0 ) { - if ( result === 1 ) { - this.redirectBlockedRequest(fctxt); - } else { - this.redirectNonBlockedRequest(fctxt); - } - } - - if ( cacheableResult ) { - this.netFilteringCache.rememberResult(fctxt, result); - } else if ( result === 1 && this.collapsibleResources.has(fctxt.itype) ) { - this.netFilteringCache.rememberBlock(fctxt); - } - - return result; - } - - filterOnHeaders(fctxt, headers) { - fctxt.filter = undefined; - - if ( this.getNetFilteringSwitch(fctxt) === false ) { return 0; } - - let result = staticNetFilteringEngine.matchHeaders(fctxt, headers); - if ( result === 0 ) { return 0; } - - const loggerEnabled = logger.enabled; - if ( loggerEnabled ) { - fctxt.filter = staticNetFilteringEngine.toLogData(); - } - - // Dynamic filtering allow rules - // URL filtering - if ( - result === 1 && - sessionURLFiltering.evaluateZ( - fctxt.getTabHostname(), - fctxt.url, - fctxt.type - ) === 2 - ) { - result = 2; - if ( loggerEnabled ) { - fctxt.filter = sessionURLFiltering.toLogData(); - } - } - // Hostname filtering - if ( - result === 1 && - µb.userSettings.advancedUserEnabled && - sessionFirewall.evaluateCellZY( - fctxt.getTabHostname(), - fctxt.getHostname(), - fctxt.type - ) === 2 - ) { - result = 2; - if ( loggerEnabled ) { - fctxt.filter = sessionFirewall.toLogData(); - } - } - - return result; - } - - redirectBlockedRequest(fctxt) { - const directives = staticNetFilteringEngine.redirectRequest(redirectEngine, fctxt); - if ( directives === undefined ) { return; } - if ( logger.enabled !== true ) { return; } - fctxt.pushFilters(directives.map(a => a.logData())); - if ( fctxt.redirectURL === undefined ) { return; } - fctxt.pushFilter({ - source: 'redirect', - raw: directives[directives.length-1].value - }); - } - - redirectNonBlockedRequest(fctxt) { - const transformDirectives = staticNetFilteringEngine.transformRequest(fctxt); - const pruneDirectives = fctxt.redirectURL === undefined && - staticNetFilteringEngine.hasQuery(fctxt) && - staticNetFilteringEngine.filterQuery(fctxt) || - undefined; - if ( transformDirectives === undefined && pruneDirectives === undefined ) { return; } - if ( logger.enabled !== true ) { return; } - if ( transformDirectives !== undefined ) { - fctxt.pushFilters(transformDirectives.map(a => a.logData())); - } - if ( pruneDirectives !== undefined ) { - fctxt.pushFilters(pruneDirectives.map(a => a.logData())); - } - if ( fctxt.redirectURL === undefined ) { return; } - fctxt.pushFilter({ - source: 'redirect', - raw: fctxt.redirectURL - }); - } - - filterCSPReport(fctxt) { - if ( - sessionSwitches.evaluateZ( - 'no-csp-reports', - fctxt.getHostname() - ) - ) { - if ( logger.enabled ) { - fctxt.filter = sessionSwitches.toLogData(); - } - return 1; - } - return 0; - } - - filterFont(fctxt) { - if ( fctxt.itype === fctxt.FONT ) { - this.remoteFontCount += 1; - } - if ( - sessionSwitches.evaluateZ( - 'no-remote-fonts', - fctxt.getTabHostname() - ) !== false - ) { - if ( logger.enabled ) { - fctxt.filter = sessionSwitches.toLogData(); - } - return 1; - } - return 0; - } - - filterScripting(fctxt, netFiltering) { - fctxt.filter = undefined; - if ( netFiltering === undefined ) { - netFiltering = this.getNetFilteringSwitch(fctxt); - } - if ( - netFiltering === false || - sessionSwitches.evaluateZ( - 'no-scripting', - fctxt.getTabHostname() - ) === false - ) { - return 0; - } - if ( logger.enabled ) { - fctxt.filter = sessionSwitches.toLogData(); - } - return 1; - } - - // The caller is responsible to check whether filtering is enabled or not. - filterLargeMediaElement(fctxt, size) { - fctxt.filter = undefined; - - if ( this.allowLargeMediaElementsUntil === 0 ) { - return 0; - } - // Disregard large media elements previously allowed: for example, to - // seek inside a previously allowed audio/video. - if ( - this.allowLargeMediaElementsRegex instanceof RegExp && - this.allowLargeMediaElementsRegex.test(fctxt.url) - ) { - return 0; - } - if ( Date.now() < this.allowLargeMediaElementsUntil ) { - const sources = this.allowLargeMediaElementsRegex instanceof RegExp - ? [ this.allowLargeMediaElementsRegex.source ] - : []; - sources.push('^' + µb.escapeRegex(fctxt.url)); - this.allowLargeMediaElementsRegex = new RegExp(sources.join('|')); - return 0; - } - if ( - sessionSwitches.evaluateZ( - 'no-large-media', - fctxt.getTabHostname() - ) !== true - ) { - this.allowLargeMediaElementsUntil = 0; - return 0; - } - if ( (size >>> 10) < µb.userSettings.largeMediaSize ) { - return 0; - } - - this.largeMediaCount += 1; - this.largeMediaTimer.on(500); - - if ( logger.enabled ) { - fctxt.filter = sessionSwitches.toLogData(); - } - - return 1; - } - - clickToLoad(frameId, frameURL) { - let frameStore = this.getFrameStore(frameId); - if ( frameStore === null ) { - frameStore = this.setFrameURL({ frameId, url: frameURL }); - } - this.netFilteringCache.forgetResult( - this.tabHostname, - 'sub_frame', - frameURL - ); - frameStore.clickToLoad = true; - } - - shouldExceptCname(fctxt) { - let exceptCname; - let frameStore; - if ( fctxt.docId !== undefined ) { - frameStore = this.getFrameStore(fctxt.docId); - if ( frameStore instanceof Object ) { - exceptCname = frameStore.exceptCname; - } - } - if ( exceptCname === undefined ) { - const result = staticNetFilteringEngine.matchRequestReverse( - 'cname', - frameStore instanceof Object - ? frameStore.rawURL - : fctxt.getDocOrigin() - ); - exceptCname = result === 2 - ? staticNetFilteringEngine.toLogData() - : false; - if ( frameStore instanceof Object ) { - frameStore.exceptCname = exceptCname; - } - } - if ( exceptCname === false ) { return false; } - if ( exceptCname instanceof Object ) { - fctxt.setFilter(exceptCname); - } - return true; - } - - getBlockedResources(request, response) { - const normalURL = µb.normalizeTabURL(this.tabId, request.frameURL); - const resources = request.resources; - const fctxt = µb.filteringContext; - fctxt.fromTabId(this.tabId) - .setDocOriginFromURL(normalURL); - // Force some resources to go through the filtering engine in order to - // populate the blocked-resources cache. This is required because for - // some resources it's not possible to detect whether they were blocked - // content script-side (i.e. `iframes` -- unlike `img`). - if ( Array.isArray(resources) && resources.length !== 0 ) { - for ( const resource of resources ) { - this.filterRequest( - fctxt.setType(resource.type).setURL(resource.url) - ); - } - } - if ( this.netFilteringCache.hash === response.hash ) { return; } - response.hash = this.netFilteringCache.hash; - response.blockedResources = - this.netFilteringCache.lookupAllBlocked(fctxt.getDocHostname()); - } -}; - -PageStore.prototype.cacheableResults = new Set([ - µb.FilteringContext.SUB_FRAME, -]); - -PageStore.prototype.collapsibleResources = new Set([ - µb.FilteringContext.IMAGE, - µb.FilteringContext.MEDIA, - µb.FilteringContext.OBJECT, - µb.FilteringContext.SUB_FRAME, -]); - -// To mitigate memory churning -PageStore.junkyard = []; -PageStore.junkyardMax = 10; - -/******************************************************************************/ - -export { PageStore }; diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/popup-fenix.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/popup-fenix.js deleted file mode 100644 index 9f2af08..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/popup-fenix.js +++ /dev/null @@ -1,1543 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -import punycode from '../lib/punycode.js'; -import { i18n$ } from './i18n.js'; -import { dom, qs$, qsa$ } from './dom.js'; - -/******************************************************************************/ - -let popupFontSize = 'unset'; -vAPI.localStorage.getItemAsync('popupFontSize').then(value => { - if ( typeof value !== 'string' || value === 'unset' ) { return; } - document.body.style.setProperty('--font-size', value); - popupFontSize = value; -}); - -// https://github.com/chrisaljoudi/uBlock/issues/996 -// Experimental: mitigate glitchy popup UI: immediately set the firewall -// pane visibility to its last known state. By default the pane is hidden. -vAPI.localStorage.getItemAsync('popupPanelSections').then(bits => { - if ( typeof bits !== 'number' ) { return; } - setSections(bits); -}); - -/******************************************************************************/ - -const messaging = vAPI.messaging; -const scopeToSrcHostnameMap = { - '/': '*', - '.': '' -}; -const hostnameToSortableTokenMap = new Map(); -const statsStr = i18n$('popupBlockedStats'); -const domainsHitStr = i18n$('popupHitDomainCount'); - -let popupData = {}; -let dfPaneBuilt = false; -let dfHotspots = null; -const allHostnameRows = []; -let cachedPopupHash = ''; - -// https://github.com/gorhill/uBlock/issues/2550 -// Solution inspired from -// - https://bugs.chromium.org/p/chromium/issues/detail?id=683314 -// - https://bugzilla.mozilla.org/show_bug.cgi?id=1332714#c17 -// Confusable character set from: -// - http://unicode.org/cldr/utility/list-unicodeset.jsp?a=%5B%D0%B0%D1%81%D4%81%D0%B5%D2%BB%D1%96%D1%98%D3%8F%D0%BE%D1%80%D4%9B%D1%95%D4%9D%D1%85%D1%83%D1%8A%D0%AC%D2%BD%D0%BF%D0%B3%D1%B5%D1%A1%5D&g=gc&i= -// Linked from: -// - https://www.chromium.org/developers/design-documents/idn-in-google-chrome -const reCyrillicNonAmbiguous = /[\u0400-\u042b\u042d-\u042f\u0431\u0432\u0434\u0436-\u043d\u0442\u0444\u0446-\u0449\u044b-\u0454\u0457\u0459-\u0460\u0462-\u0474\u0476-\u04ba\u04bc\u04be-\u04ce\u04d0-\u0500\u0502-\u051a\u051c\u051e-\u052f]/; -const reCyrillicAmbiguous = /[\u042c\u0430\u0433\u0435\u043e\u043f\u0440\u0441\u0443\u0445\u044a\u0455\u0456\u0458\u0461\u0475\u04bb\u04bd\u04cf\u0501\u051b\u051d]/; - -const hasOwnProperty = (o, p) => - Object.prototype.hasOwnProperty.call(o, p); - -/******************************************************************************/ - -const cachePopupData = function(data) { - popupData = {}; - scopeToSrcHostnameMap['.'] = ''; - hostnameToSortableTokenMap.clear(); - - if ( typeof data !== 'object' ) { - return popupData; - } - popupData = data; - popupData.cnameMap = new Map(popupData.cnameMap); - scopeToSrcHostnameMap['.'] = popupData.pageHostname || ''; - const hostnameDict = popupData.hostnameDict; - if ( typeof hostnameDict !== 'object' ) { - return popupData; - } - for ( const hostname in hostnameDict ) { - if ( hasOwnProperty(hostnameDict, hostname) === false ) { continue; } - let domain = hostnameDict[hostname].domain; - let prefix = hostname.slice(0, 0 - domain.length - 1); - // Prefix with space char for 1st-party hostnames: this ensure these - // will come first in list. - if ( domain === popupData.pageDomain ) { - domain = '\u0020'; - } - hostnameToSortableTokenMap.set( - hostname, - domain + ' ' + prefix.split('.').reverse().join('.') - ); - } - return popupData; -}; - -/******************************************************************************/ - -const hashFromPopupData = function(reset = false) { - // It makes no sense to offer to refresh the behind-the-scene scope - if ( popupData.pageHostname === 'behind-the-scene' ) { - dom.cl.remove(dom.body, 'needReload'); - return; - } - - const hasher = []; - const rules = popupData.firewallRules; - for ( const key in rules ) { - const rule = rules[key]; - if ( rule === undefined ) { continue; } - hasher.push(rule); - } - hasher.sort(); - hasher.push( - dom.cl.has('body', 'off'), - dom.cl.has('#no-large-media', 'on'), - dom.cl.has('#no-cosmetic-filtering', 'on'), - dom.cl.has('#no-remote-fonts', 'on'), - dom.cl.has('#no-scripting', 'on') - ); - - const hash = hasher.join(''); - if ( reset ) { - cachedPopupHash = hash; - } - dom.cl.toggle(dom.body, 'needReload', - hash !== cachedPopupHash || popupData.hasUnprocessedRequest === true - ); -}; - -/******************************************************************************/ - -// greater-than-zero test - -const gtz = n => typeof n === 'number' && n > 0; - -/******************************************************************************/ - -const formatNumber = function(count) { - if ( typeof count !== 'number' ) { return ''; } - if ( count < 1e6 ) { return count.toLocaleString(); } - - if ( - intlNumberFormat === undefined && - Intl.NumberFormat instanceof Function - ) { - const intl = new Intl.NumberFormat(undefined, { - notation: 'compact', - maximumSignificantDigits: 4 - }); - if ( - intl.resolvedOptions instanceof Function && - hasOwnProperty(intl.resolvedOptions(), 'notation') - ) { - intlNumberFormat = intl; - } - } - - if ( intlNumberFormat ) { - return intlNumberFormat.format(count); - } - - // https://github.com/uBlockOrigin/uBlock-issues/issues/1027#issuecomment-629696676 - // For platforms which do not support proper number formatting, use - // a poor's man compact form, which unfortunately is not i18n-friendly. - count /= 1000000; - if ( count >= 100 ) { - count = Math.floor(count * 10) / 10; - } else if ( count > 10 ) { - count = Math.floor(count * 100) / 100; - } else { - count = Math.floor(count * 1000) / 1000; - } - return (count).toLocaleString(undefined) + '\u2009M'; -}; - -let intlNumberFormat; - -/******************************************************************************/ - -const safePunycodeToUnicode = function(hn) { - const pretty = punycode.toUnicode(hn); - return pretty === hn || - reCyrillicAmbiguous.test(pretty) === false || - reCyrillicNonAmbiguous.test(pretty) - ? pretty - : hn; -}; - -/******************************************************************************/ - -const updateFirewallCellCount = function(cells, allowed, blocked) { - for ( const cell of cells ) { - if ( gtz(allowed) ) { - dom.attr(cell, 'data-acount', - Math.min(Math.ceil(Math.log(allowed + 1) / Math.LN10), 3) - ); - } else { - dom.attr(cell, 'data-acount', '0'); - } - if ( gtz(blocked) ) { - dom.attr(cell, 'data-bcount', - Math.min(Math.ceil(Math.log(blocked + 1) / Math.LN10), 3) - ); - } else { - dom.attr(cell, 'data-bcount', '0'); - } - } -}; - -/******************************************************************************/ - -const updateFirewallCellRule = function(cells, scope, des, type, rule) { - const ruleParts = rule !== undefined ? rule.split(' ') : undefined; - - for ( const cell of cells ) { - if ( ruleParts === undefined ) { - dom.attr(cell, 'class', null); - continue; - } - - const action = updateFirewallCellRule.actionNames[ruleParts[3]]; - dom.attr(cell, 'class', `${action}Rule`); - - // Use dark shade visual cue if the rule is specific to the cell. - if ( - (ruleParts[1] !== '*' || ruleParts[2] === type) && - (ruleParts[1] === des) && - (ruleParts[0] === scopeToSrcHostnameMap[scope]) - - ) { - dom.cl.add(cell, 'ownRule'); - } - } -}; - -updateFirewallCellRule.actionNames = { '1': 'block', '2': 'allow', '3': 'noop' }; - -/******************************************************************************/ - -const updateAllFirewallCells = function(doRules = true, doCounts = true) { - const { pageDomain } = popupData; - const rowContainer = qs$('#firewall'); - const rows = qsa$(rowContainer, '#firewall > [data-des][data-type]'); - - let a1pScript = 0, b1pScript = 0; - let a3pScript = 0, b3pScript = 0; - let a3pFrame = 0, b3pFrame = 0; - - for ( const row of rows ) { - const des = dom.attr(row, 'data-des'); - const type = dom.attr(row, 'data-type'); - if ( doRules ) { - updateFirewallCellRule( - qsa$(row, ':scope > span[data-src="/"]'), - '/', - des, - type, - popupData.firewallRules[`/ ${des} ${type}`] - ); - } - const cells = qsa$(row, ':scope > span[data-src="."]'); - if ( doRules ) { - updateFirewallCellRule( - cells, - '.', - des, - type, - popupData.firewallRules[`. ${des} ${type}`] - ); - } - if ( des === '*' || type !== '*' ) { continue; } - if ( doCounts === false ) { continue; } - const hnDetails = popupData.hostnameDict[des]; - if ( hnDetails === undefined ) { - updateFirewallCellCount(cells); - continue; - } - const { allowed, blocked } = hnDetails.counts; - updateFirewallCellCount([ cells[0] ], allowed.any, blocked.any); - const { totals } = hnDetails; - if ( totals !== undefined ) { - updateFirewallCellCount([ cells[1] ], totals.allowed.any, totals.blocked.any); - } - if ( hnDetails.domain === pageDomain ) { - a1pScript += allowed.script; b1pScript += blocked.script; - } else { - a3pScript += allowed.script; b3pScript += blocked.script; - a3pFrame += allowed.frame; b3pFrame += blocked.frame; - } - } - - if ( doCounts ) { - const fromType = type => - qsa$(`#firewall > [data-des="*"][data-type="${type}"] > [data-src="."]`); - updateFirewallCellCount(fromType('1p-script'), a1pScript, b1pScript); - updateFirewallCellCount(fromType('3p-script'), a3pScript, b3pScript); - dom.cl.toggle(rowContainer, 'has3pScript', a3pScript !== 0 || b3pScript !== 0); - updateFirewallCellCount(fromType('3p-frame'), a3pFrame, b3pFrame); - dom.cl.toggle(rowContainer, 'has3pFrame', a3pFrame !== 0 || b3pFrame !== 0); - } - - dom.cl.toggle(dom.body, 'needSave', popupData.matrixIsDirty === true); -}; - -/******************************************************************************/ - -// Compute statistics useful only to firewall entries -- we need to call -// this only when overview pane needs to be rendered. - -const expandHostnameStats = ( ) => { - let dnDetails; - for ( const des of allHostnameRows ) { - const hnDetails = popupData.hostnameDict[des]; - const { domain, counts } = hnDetails; - const isDomain = des === domain; - const { allowed: hnAllowed, blocked: hnBlocked } = counts; - if ( isDomain ) { - dnDetails = hnDetails; - dnDetails.totals = JSON.parse(JSON.stringify(dnDetails.counts)); - } else { - const { allowed: dnAllowed, blocked: dnBlocked } = dnDetails.totals; - dnAllowed.any += hnAllowed.any; - dnBlocked.any += hnBlocked.any; - } - hnDetails.hasScript = hnAllowed.script !== 0 || hnBlocked.script !== 0; - dnDetails.hasScript = dnDetails.hasScript || hnDetails.hasScript; - hnDetails.hasFrame = hnAllowed.frame !== 0 || hnBlocked.frame !== 0; - dnDetails.hasFrame = dnDetails.hasFrame || hnDetails.hasFrame; - } -}; - -/******************************************************************************/ - -const buildAllFirewallRows = function() { - // Do this before removing the rows - if ( dfHotspots === null ) { - dfHotspots = qs$('#actionSelector'); - dom.on(dfHotspots, 'click', setFirewallRuleHandler); - } - dfHotspots.remove(); - - // This must be called before we create the rows. - expandHostnameStats(); - - // Update incrementally: reuse existing rows if possible. - const rowContainer = qs$('#firewall'); - const toAppend = document.createDocumentFragment(); - const rowTemplate = qs$('#templates > div[data-des=""][data-type="*"]'); - const { cnameMap, hostnameDict, pageDomain, pageHostname } = popupData; - - let row = qs$(rowContainer, 'div[data-des="*"][data-type="3p-frame"] + div'); - - for ( const des of allHostnameRows ) { - if ( row === null ) { - row = dom.clone(rowTemplate); - toAppend.appendChild(row); - } - dom.attr(row, 'data-des', des); - - const hnDetails = hostnameDict[des] || {}; - const isDomain = des === hnDetails.domain; - const prettyDomainName = des.includes('xn--') - ? punycode.toUnicode(des) - : des; - const isPunycoded = prettyDomainName !== des; - - if ( isDomain && row.childElementCount < 4 ) { - row.append(dom.clone(row.children[2])); - } else if ( isDomain === false && row.childElementCount === 4 ) { - row.children[3].remove(); - } - - const span = qs$(row, 'span:first-of-type'); - dom.text(qs$(span, ':scope > span > span'), prettyDomainName); - - const classList = row.classList; - - let desExtra = ''; - if ( classList.toggle('isCname', cnameMap.has(des)) ) { - desExtra = punycode.toUnicode(cnameMap.get(des)); - } else if ( - isDomain && isPunycoded && - reCyrillicAmbiguous.test(prettyDomainName) && - reCyrillicNonAmbiguous.test(prettyDomainName) === false - ) { - desExtra = des; - } - dom.text(qs$(span, 'sub'), desExtra); - - classList.toggle('isRootContext', des === pageHostname); - classList.toggle('is3p', hnDetails.domain !== pageDomain); - classList.toggle('isDomain', isDomain); - classList.toggle('hasSubdomains', isDomain && hnDetails.hasSubdomains); - classList.toggle('isSubdomain', !isDomain); - const { counts } = hnDetails; - classList.toggle('allowed', gtz(counts.allowed.any)); - classList.toggle('blocked', gtz(counts.blocked.any)); - const { totals } = hnDetails; - classList.toggle('totalAllowed', gtz(totals && totals.allowed.any)); - classList.toggle('totalBlocked', gtz(totals && totals.blocked.any)); - classList.toggle('hasScript', hnDetails.hasScript === true); - classList.toggle('hasFrame', hnDetails.hasFrame === true); - classList.toggle('expandException', expandExceptions.has(hnDetails.domain)); - - row = row.nextElementSibling; - } - - // Remove unused trailing rows - if ( row !== null ) { - while ( row.nextElementSibling !== null ) { - row.nextElementSibling.remove(); - } - row.remove(); - } - - // Add new rows all at once - if ( toAppend.childElementCount !== 0 ) { - rowContainer.append(toAppend); - } - - if ( dfPaneBuilt !== true && popupData.advancedUserEnabled ) { - dom.on('#firewall', 'click', 'span[data-src]', unsetFirewallRuleHandler); - dom.on('#firewall', 'mouseenter', 'span[data-src]', mouseenterCellHandler); - dom.on('#firewall', 'mouseleave', 'span[data-src]', mouseleaveCellHandler); - dfPaneBuilt = true; - } - - updateAllFirewallCells(); -}; - -/******************************************************************************/ - -const hostnameCompare = function(a, b) { - let ha = a; - if ( !reIP.test(ha) ) { - ha = hostnameToSortableTokenMap.get(ha) || ' '; - } - let hb = b; - if ( !reIP.test(hb) ) { - hb = hostnameToSortableTokenMap.get(hb) || ' '; - } - const ca = ha.charCodeAt(0); - const cb = hb.charCodeAt(0); - return ca !== cb ? ca - cb : ha.localeCompare(hb); -}; - -const reIP = /(\d|\])$/; - -/******************************************************************************/ - -function filterFirewallRows() { - const firewallElem = qs$('#firewall'); - const elems = qsa$('#firewall .filterExpressions span[data-expr]'); - let not = false; - for ( const elem of elems ) { - const on = dom.cl.has(elem, 'on'); - switch ( elem.dataset.expr ) { - case 'not': - not = on; - break; - case 'blocked': - dom.cl.toggle(firewallElem, 'showBlocked', !not && on); - dom.cl.toggle(firewallElem, 'hideBlocked', not && on); - break; - case 'allowed': - dom.cl.toggle(firewallElem, 'showAllowed', !not && on); - dom.cl.toggle(firewallElem, 'hideAllowed', not && on); - break; - case 'script': - dom.cl.toggle(firewallElem, 'show3pScript', !not && on); - dom.cl.toggle(firewallElem, 'hide3pScript', not && on); - break; - case 'frame': - dom.cl.toggle(firewallElem, 'show3pFrame', !not && on); - dom.cl.toggle(firewallElem, 'hide3pFrame', not && on); - break; - default: - break; - } - } -} - -dom.on('#firewall .filterExpressions', 'click', 'span[data-expr]', ev => { - const target = ev.target; - dom.cl.toggle(target, 'on'); - switch ( target.dataset.expr ) { - case 'blocked': - if ( dom.cl.has(target, 'on') === false ) { break; } - dom.cl.remove('#firewall .filterExpressions span[data-expr="allowed"]', 'on'); - break; - case 'allowed': - if ( dom.cl.has(target, 'on') === false ) { break; } - dom.cl.remove('#firewall .filterExpressions span[data-expr="blocked"]', 'on'); - break; - } - filterFirewallRows(); - const elems = qsa$('#firewall .filterExpressions span[data-expr]'); - const filters = Array.from(elems) .map(el => dom.cl.has(el, 'on') ? '1' : '0'); - filters.unshift('00'); - vAPI.localStorage.setItem('firewallFilters', filters.join(' ')); -}); - -{ - vAPI.localStorage.getItemAsync('firewallFilters').then(v => { - if ( v === null ) { return; } - const filters = v.split(' '); - if ( filters.shift() !== '00' ) { return; } - if ( filters.every(v => v === '0') ) { return; } - const elems = qsa$('#firewall .filterExpressions span[data-expr]'); - for ( let i = 0; i < elems.length; i++ ) { - if ( filters[i] === '0' ) { continue; } - dom.cl.add(elems[i], 'on'); - } - filterFirewallRows(); - }); -} - -/******************************************************************************/ - -const renderPrivacyExposure = function() { - const allDomains = {}; - let allDomainCount = 0; - let touchedDomainCount = 0; - - allHostnameRows.length = 0; - - // Sort hostnames. First-party hostnames must always appear at the top - // of the list. - const { hostnameDict } = popupData; - const desHostnameDone = new Set(); - const keys = Object.keys(hostnameDict).sort(hostnameCompare); - for ( const des of keys ) { - // Specific-type rules -- these are built-in - if ( des === '*' || desHostnameDone.has(des) ) { continue; } - const hnDetails = hostnameDict[des]; - const { domain, counts } = hnDetails; - if ( hasOwnProperty(allDomains, domain) === false ) { - allDomains[domain] = false; - allDomainCount += 1; - } - if ( gtz(counts.allowed.any) ) { - if ( allDomains[domain] === false ) { - allDomains[domain] = true; - touchedDomainCount += 1; - } - } - const dnDetails = hostnameDict[domain]; - if ( dnDetails !== undefined ) { - if ( des !== domain ) { - dnDetails.hasSubdomains = true; - } else if ( dnDetails.hasSubdomains === undefined ) { - dnDetails.hasSubdomains = false; - } - } - allHostnameRows.push(des); - desHostnameDone.add(des); - } - - const summary = domainsHitStr - .replace('{{count}}', touchedDomainCount.toLocaleString()) - .replace('{{total}}', allDomainCount.toLocaleString()); - dom.text('[data-i18n^="popupDomainsConnected"] + span', summary); -}; - -/******************************************************************************/ - -const updateHnSwitches = function() { - dom.cl.toggle('#no-popups', 'on', popupData.noPopups === true); - dom.cl.toggle('#no-large-media', 'on', popupData.noLargeMedia === true); - dom.cl.toggle('#no-cosmetic-filtering', 'on',popupData.noCosmeticFiltering === true); - dom.cl.toggle('#no-remote-fonts', 'on', popupData.noRemoteFonts === true); - dom.cl.toggle('#no-scripting', 'on', popupData.noScripting === true); -}; - -/******************************************************************************/ - -// Assume everything has to be done incrementally. - -const renderPopup = function() { - if ( popupData.tabTitle ) { - document.title = popupData.appName + ' - ' + popupData.tabTitle; - } - - const isFiltering = popupData.netFilteringSwitch; - - dom.cl.toggle(dom.body, 'advancedUser', popupData.advancedUserEnabled === true); - dom.cl.toggle(dom.body, 'off', popupData.pageURL === '' || isFiltering !== true); - dom.cl.toggle(dom.body, 'needSave', popupData.matrixIsDirty === true); - - // The hostname information below the power switch - { - const [ elemHn, elemDn ] = qs$('#hostname').children; - const { pageDomain, pageHostname } = popupData; - if ( pageDomain !== '' ) { - dom.text(elemDn, safePunycodeToUnicode(pageDomain)); - dom.text(elemHn, pageHostname !== pageDomain - ? safePunycodeToUnicode(pageHostname.slice(0, -pageDomain.length - 1)) + '.' - : '' - ); - } else { - dom.text(elemDn, ''); - dom.text(elemHn, ''); - } - } - - const canPick = popupData.canElementPicker && isFiltering; - - dom.cl.toggle('#gotoZap', 'canPick', canPick); - dom.cl.toggle('#gotoPick', 'canPick', canPick && popupData.userFiltersAreEnabled); - dom.cl.toggle('#gotoReport', 'canPick', canPick); - - let blocked, total; - if ( popupData.pageCounts !== undefined ) { - const counts = popupData.pageCounts; - blocked = counts.blocked.any; - total = blocked + counts.allowed.any; - } else { - blocked = 0; - total = 0; - } - let text; - if ( total === 0 ) { - text = formatNumber(0); - } else { - text = statsStr.replace('{{count}}', formatNumber(blocked)) - .replace('{{percent}}', formatNumber(Math.floor(blocked * 100 / total))); - } - dom.text('[data-i18n^="popupBlockedOnThisPage"] + span', text); - - blocked = popupData.globalBlockedRequestCount; - total = popupData.globalAllowedRequestCount + blocked; - if ( total === 0 ) { - text = formatNumber(0); - } else { - text = statsStr.replace('{{count}}', formatNumber(blocked)) - .replace('{{percent}}', formatNumber(Math.floor(blocked * 100 / total))); - } - dom.text('[data-i18n^="popupBlockedSinceInstall"] + span', text); - - // This will collate all domains, touched or not - renderPrivacyExposure(); - - // Extra tools - updateHnSwitches(); - - // Report popup count on badge - total = popupData.popupBlockedCount; - dom.text( - '#no-popups .fa-icon-badge', - total ? Math.min(total, 99).toLocaleString() : '' - ); - - // Report large media count on badge - total = popupData.largeMediaCount; - dom.text( - '#no-large-media .fa-icon-badge', - total ? Math.min(total, 99).toLocaleString() : '' - ); - - // Report remote font count on badge - total = popupData.remoteFontCount; - dom.text( - '#no-remote-fonts .fa-icon-badge', - total ? Math.min(total, 99).toLocaleString() : '' - ); - - // Unprocessed request(s) warning - dom.cl.toggle(dom.root, 'warn', popupData.hasUnprocessedRequest === true); - - dom.cl.toggle(dom.html, 'colorBlind', popupData.colorBlindFriendly === true); - - setGlobalExpand(popupData.firewallPaneMinimized === false, true); - - // Build dynamic filtering pane only if in use - if ( (computedSections() & sectionFirewallBit) !== 0 ) { - buildAllFirewallRows(); - } - - renderTooltips(); -}; - -/******************************************************************************/ - -dom.on('.dismiss', 'click', ( ) => { - messaging.send('popupPanel', { - what: 'dismissUnprocessedRequest', - tabId: popupData.tabId, - }).then(( ) => { - popupData.hasUnprocessedRequest = false; - dom.cl.remove(dom.root, 'warn'); - }); -}); - -/******************************************************************************/ - -// https://github.com/gorhill/uBlock/issues/2889 -// Use tooltip for ARIA purpose. - -const renderTooltips = function(selector) { - for ( const [ key, details ] of tooltipTargetSelectors ) { - if ( selector !== undefined && key !== selector ) { continue; } - const elem = qs$(key); - if ( elem.hasAttribute('title') === false ) { continue; } - const text = i18n$( - details.i18n + - (qs$(details.state) === null ? '1' : '2') - ); - dom.attr(elem, 'aria-label', text); - dom.attr(elem, 'title', text); - } -}; - -const tooltipTargetSelectors = new Map([ - [ - '#switch', - { - state: 'body.off', - i18n: 'popupPowerSwitchInfo', - } - ], - [ - '#no-popups', - { - state: '#no-popups.on', - i18n: 'popupTipNoPopups' - } - ], - [ - '#no-large-media', - { - state: '#no-large-media.on', - i18n: 'popupTipNoLargeMedia' - } - ], - [ - '#no-cosmetic-filtering', - { - state: '#no-cosmetic-filtering.on', - i18n: 'popupTipNoCosmeticFiltering' - } - ], - [ - '#no-remote-fonts', - { - state: '#no-remote-fonts.on', - i18n: 'popupTipNoRemoteFonts' - } - ], - [ - '#no-scripting', - { - state: '#no-scripting.on', - i18n: 'popupTipNoScripting' - } - ], -]); - -/******************************************************************************/ - -// All rendering code which need to be executed only once. - -let renderOnce = function() { - renderOnce = function(){}; - - if ( popupData.fontSize !== popupFontSize ) { - popupFontSize = popupData.fontSize; - if ( popupFontSize !== 'unset' ) { - dom.body.style.setProperty('--font-size', popupFontSize); - vAPI.localStorage.setItem('popupFontSize', popupFontSize); - } else { - dom.body.style.removeProperty('--font-size'); - vAPI.localStorage.removeItem('popupFontSize'); - } - } - - dom.text('#version', popupData.appVersion); - - setSections(computedSections()); - - if ( popupData.uiPopupConfig !== undefined ) { - dom.attr(dom.body, 'data-ui', popupData.uiPopupConfig); - } - - dom.cl.toggle(dom.body, 'no-tooltips', popupData.tooltipsDisabled === true); - if ( popupData.tooltipsDisabled === true ) { - dom.attr('[title]', 'title', null); - } - - // https://github.com/uBlockOrigin/uBlock-issues/issues/22 - if ( popupData.advancedUserEnabled !== true ) { - dom.attr('#firewall [title][data-src]', 'title', null); - } - - // This must be done when the firewall is populated - if ( popupData.popupPanelHeightMode === 1 ) { - dom.cl.add(dom.body, 'vMin'); - } - - // Prevent non-advanced user opting into advanced user mode from harming - // themselves by disabling by default features generally suitable to - // filter list maintainers and actual advanced users. - if ( popupData.godMode ) { - dom.cl.add(dom.body, 'godMode'); - } -}; - -/******************************************************************************/ - -const renderPopupLazy = (( ) => { - let mustRenderCosmeticFilteringBadge = true; - - // https://github.com/uBlockOrigin/uBlock-issues/issues/756 - // Launch potentially expensive hidden elements-counting scriptlet on - // demand only. - { - const sw = qs$('#no-cosmetic-filtering'); - const badge = qs$(sw, ':scope .fa-icon-badge'); - dom.text(badge, '\u22EF'); - - const render = ( ) => { - if ( mustRenderCosmeticFilteringBadge === false ) { return; } - mustRenderCosmeticFilteringBadge = false; - if ( dom.cl.has(sw, 'hnSwitchBusy') ) { return; } - dom.cl.add(sw, 'hnSwitchBusy'); - messaging.send('popupPanel', { - what: 'getHiddenElementCount', - tabId: popupData.tabId, - }).then(count => { - let text; - if ( (count || 0) === 0 ) { - text = ''; - } else if ( count === -1 ) { - text = '?'; - } else { - text = Math.min(count, 99).toLocaleString(); - } - dom.text(badge, text); - dom.cl.remove(sw, 'hnSwitchBusy'); - }); - }; - - dom.on(sw, 'mouseenter', render, { passive: true }); - } - - return async function() { - const count = await messaging.send('popupPanel', { - what: 'getScriptCount', - tabId: popupData.tabId, - }); - dom.text( - '#no-scripting .fa-icon-badge', - (count || 0) !== 0 ? Math.min(count, 99).toLocaleString() : '' - ); - mustRenderCosmeticFilteringBadge = true; - }; -})(); - -/******************************************************************************/ - -const toggleNetFilteringSwitch = function(ev) { - if ( !popupData || !popupData.pageURL ) { return; } - messaging.send('popupPanel', { - what: 'toggleNetFiltering', - url: popupData.pageURL, - scope: ev.ctrlKey || ev.metaKey ? 'page' : '', - state: dom.cl.toggle(dom.body, 'off') === false, - tabId: popupData.tabId, - }); - renderTooltips('#switch'); - hashFromPopupData(); -}; - -/******************************************************************************/ - -const gotoZap = function() { - messaging.send('popupPanel', { - what: 'launchElementPicker', - tabId: popupData.tabId, - zap: true, - }); - - vAPI.closePopup(); -}; - -/******************************************************************************/ - -const gotoPick = function() { - messaging.send('popupPanel', { - what: 'launchElementPicker', - tabId: popupData.tabId, - }); - - vAPI.closePopup(); -}; - -/******************************************************************************/ - -const gotoReport = function() { - const popupPanel = { - blocked: popupData.pageCounts.blocked.any, - }; - const reportedStates = [ - { name: 'enabled', prop: 'netFilteringSwitch', expected: true }, - { name: 'no-cosmetic-filtering', prop: 'noCosmeticFiltering', expected: false }, - { name: 'no-large-media', prop: 'noLargeMedia', expected: false }, - { name: 'no-popups', prop: 'noPopups', expected: false }, - { name: 'no-remote-fonts', prop: 'noRemoteFonts', expected: false }, - { name: 'no-scripting', prop: 'noScripting', expected: false }, - { name: 'can-element-picker', prop: 'canElementPicker', expected: true }, - ]; - for ( const { name, prop, expected } of reportedStates ) { - if ( popupData[prop] === expected ) { continue; } - popupPanel[name] = !expected; - } - if ( hostnameToSortableTokenMap.size !== 0 ) { - const network = {}; - const hostnames = - Array.from(hostnameToSortableTokenMap.keys()).sort(hostnameCompare); - for ( const hostname of hostnames ) { - const entry = popupData.hostnameDict[hostname]; - const count = entry.counts.blocked.any; - if ( count === 0 ) { continue; } - const domain = entry.domain; - if ( network[domain] === undefined ) { - network[domain] = 0; - } - network[domain] += count; - } - if ( Object.keys(network).length !== 0 ) { - popupPanel.network = network; - } - } - messaging.send('popupPanel', { - what: 'launchReporter', - tabId: popupData.tabId, - pageURL: popupData.rawURL, - popupPanel, - }); - - vAPI.closePopup(); -}; - -/******************************************************************************/ - -const gotoURL = function(ev) { - if ( this.hasAttribute('href') === false ) { return; } - - ev.preventDefault(); - - let url = dom.attr(ev.target, 'href'); - if ( - url === 'logger-ui.html#_' && - typeof popupData.tabId === 'number' - ) { - url += '+' + popupData.tabId; - } - - messaging.send('popupPanel', { - what: 'gotoURL', - details: { - url: url, - select: true, - index: -1, - shiftKey: ev.shiftKey - }, - }); - - vAPI.closePopup(); -}; - -/******************************************************************************/ - -// The popup panel is made of sections. Visibility of sections can -// be toggled on/off. - -const maxNumberOfSections = 6; -const sectionFirewallBit = 0b10000; - -const computedSections = ( ) => - popupData.popupPanelSections & - ~popupData.popupPanelDisabledSections | - popupData.popupPanelLockedSections; - -const sectionBitsFromAttribute = function() { - const attr = document.body.dataset.more; - if ( attr === '' ) { return 0; } - let bits = 0; - for ( const c of attr ) { - bits |= 1 << (c.charCodeAt(0) - 97); - } - return bits; -}; - -const sectionBitsToAttribute = function(bits) { - const attr = []; - for ( let i = 0; i < maxNumberOfSections; i++ ) { - const bit = 1 << i; - if ( (bits & bit) === 0 ) { continue; } - attr.push(String.fromCharCode(97 + i)); - } - return attr.join(''); -}; - -const setSections = function(bits) { - const value = sectionBitsToAttribute(bits); - const min = sectionBitsToAttribute(popupData.popupPanelLockedSections); - const max = sectionBitsToAttribute( - (1 << maxNumberOfSections) - 1 & ~popupData.popupPanelDisabledSections - ); - document.body.dataset.more = value; - dom.cl.toggle('#lessButton', 'disabled', value === min); - dom.cl.toggle('#moreButton', 'disabled', value === max); -}; - -const toggleSections = function(more) { - const offbits = ~popupData.popupPanelDisabledSections; - const onbits = popupData.popupPanelLockedSections; - let currentBits = sectionBitsFromAttribute(); - let newBits = currentBits; - for ( let i = 0; i < maxNumberOfSections; i++ ) { - const bit = 1 << (more ? i : maxNumberOfSections - i - 1); - if ( more ) { - newBits |= bit; - } else { - newBits &= ~bit; - } - newBits = newBits & offbits | onbits; - if ( newBits !== currentBits ) { break; } - } - if ( newBits === currentBits ) { return; } - - setSections(newBits); - - popupData.popupPanelSections = newBits; - messaging.send('popupPanel', { - what: 'userSettings', - name: 'popupPanelSections', - value: newBits, - }); - - // https://github.com/chrisaljoudi/uBlock/issues/996 - // Remember the last state of the firewall pane. This allows to - // configure the popup size early next time it is opened, which means a - // less glitchy popup at open time. - vAPI.localStorage.setItem('popupPanelSections', newBits); - - // Dynamic filtering pane may not have been built yet - if ( (newBits & sectionFirewallBit) !== 0 && dfPaneBuilt === false ) { - buildAllFirewallRows(); - } -}; - -dom.on('#moreButton', 'click', ( ) => { toggleSections(true); }); -dom.on('#lessButton', 'click', ( ) => { toggleSections(false); }); - -/******************************************************************************/ - -const mouseenterCellHandler = function(ev) { - const target = ev.target; - if ( dom.cl.has(target, 'ownRule') ) { return; } - target.appendChild(dfHotspots); -}; - -const mouseleaveCellHandler = function() { - dfHotspots.remove(); -}; - -/******************************************************************************/ - -const setFirewallRule = async function(src, des, type, action, persist) { - // This can happen on pages where uBlock does not work - if ( - typeof popupData.pageHostname !== 'string' || - popupData.pageHostname === '' - ) { - return; - } - - const response = await messaging.send('popupPanel', { - what: 'toggleFirewallRule', - tabId: popupData.tabId, - pageHostname: popupData.pageHostname, - srcHostname: src, - desHostname: des, - requestType: type, - action: action, - persist: persist, - }); - - // Remove action widget if an own rule has been set, this allows to click - // again immediately to remove the rule. - if ( action !== 0 ) { - dfHotspots.remove(); - } - - cachePopupData(response); - updateAllFirewallCells(true, false); - hashFromPopupData(); -}; - -/******************************************************************************/ - -const unsetFirewallRuleHandler = function(ev) { - const cell = ev.target; - const row = cell.closest('[data-des]'); - setFirewallRule( - dom.attr(cell, 'data-src') === '/' ? '*' : popupData.pageHostname, - dom.attr(row, 'data-des'), - dom.attr(row, 'data-type'), - 0, - ev.ctrlKey || ev.metaKey - ); - cell.appendChild(dfHotspots); -}; - -/******************************************************************************/ - -const setFirewallRuleHandler = function(ev) { - const hotspot = ev.target; - const cell = hotspot.closest('[data-src]'); - if ( cell === null ) { return; } - const row = cell.closest('[data-des]'); - let action = 0; - if ( hotspot.id === 'dynaAllow' ) { - action = 2; - } else if ( hotspot.id === 'dynaNoop' ) { - action = 3; - } else { - action = 1; - } - setFirewallRule( - dom.attr(cell, 'data-src') === '/' ? '*' : popupData.pageHostname, - dom.attr(row, 'data-des'), - dom.attr(row, 'data-type'), - action, - ev.ctrlKey || ev.metaKey - ); - dfHotspots.remove(); -}; - -/******************************************************************************/ - -const reloadTab = function(bypassCache = false) { - // Preemptively clear the unprocessed-requests status since we know for sure - // the page is being reloaded in this code path. - if ( popupData.hasUnprocessedRequest === true ) { - messaging.send('popupPanel', { - what: 'dismissUnprocessedRequest', - tabId: popupData.tabId, - }).then(( ) => { - popupData.hasUnprocessedRequest = false; - dom.cl.remove(dom.root, 'warn'); - }); - } - - messaging.send('popupPanel', { - what: 'reloadTab', - tabId: popupData.tabId, - url: popupData.rawURL, - select: vAPI.webextFlavor.soup.has('mobile'), - bypassCache, - }); - - // Polling will take care of refreshing the popup content - // https://github.com/chrisaljoudi/uBlock/issues/748 - // User forces a reload, assume the popup has to be updated regardless - // if there were changes or not. - popupData.contentLastModified = -1; - - // Reset popup state hash to current state. - hashFromPopupData(true); -}; - -dom.on('#refresh', 'click', ev => { - reloadTab(ev.ctrlKey || ev.metaKey || ev.shiftKey); -}); - -// https://github.com/uBlockOrigin/uBlock-issues/issues/672 -dom.on(document, 'keydown', ev => { - if ( ev.isComposing ) { return; } - let bypassCache = false; - switch ( ev.key ) { - case 'F5': - bypassCache = ev.ctrlKey || ev.metaKey || ev.shiftKey; - break; - case 'r': - if ( (ev.ctrlKey || ev.metaKey) !== true ) { return; } - break; - case 'R': - if ( (ev.ctrlKey || ev.metaKey) !== true ) { return; } - bypassCache = true; - break; - default: - return; - } - reloadTab(bypassCache); - ev.preventDefault(); - ev.stopPropagation(); -}, { capture: true }); - -/******************************************************************************/ - -const expandExceptions = new Set(); - -vAPI.localStorage.getItemAsync('popupExpandExceptions').then(exceptions => { - try { - if ( Array.isArray(exceptions) === false ) { return; } - for ( const exception of exceptions ) { - expandExceptions.add(exception); - } - } - catch(ex) { - } -}); - -const saveExpandExceptions = function() { - vAPI.localStorage.setItem( - 'popupExpandExceptions', - Array.from(expandExceptions) - ); -}; - -const setGlobalExpand = function(state, internal = false) { - dom.cl.remove('.expandException', 'expandException'); - if ( state ) { - dom.cl.add('#firewall', 'expanded'); - } else { - dom.cl.remove('#firewall', 'expanded'); - } - if ( internal ) { return; } - popupData.firewallPaneMinimized = !state; - expandExceptions.clear(); - saveExpandExceptions(); - messaging.send('popupPanel', { - what: 'userSettings', - name: 'firewallPaneMinimized', - value: popupData.firewallPaneMinimized, - }); -}; - -const setSpecificExpand = function(domain, state, internal = false) { - const elems = qsa$(`[data-des="${domain}"],[data-des$=".${domain}"]`); - if ( state ) { - dom.cl.add(elems, 'expandException'); - } else { - dom.cl.remove(elems, 'expandException'); - } - if ( internal ) { return; } - if ( state ) { - expandExceptions.add(domain); - } else { - expandExceptions.delete(domain); - } - saveExpandExceptions(); -}; - -dom.on('[data-i18n="popupAnyRulePrompt"]', 'click', ev => { - // Special display mode: in its own tab/window, with no vertical restraint. - // Useful to take snapshots of the whole list of domains -- example: - // https://github.com/gorhill/uBlock/issues/736#issuecomment-178879944 - if ( ev.shiftKey && ev.ctrlKey ) { - messaging.send('popupPanel', { - what: 'gotoURL', - details: { - url: `popup-fenix.html?tabId=${popupData.tabId}&intab=1`, - select: true, - index: -1, - }, - }); - vAPI.closePopup(); - return; - } - - setGlobalExpand(dom.cl.has('#firewall', 'expanded') === false); -}); - -dom.on('#firewall', 'click', '.isDomain[data-type="*"] > span:first-of-type', ev => { - const div = ev.target.closest('[data-des]'); - if ( div === null ) { return; } - setSpecificExpand( - dom.attr(div, 'data-des'), - dom.cl.has(div, 'expandException') === false - ); -}); - -/******************************************************************************/ - -const saveFirewallRules = function() { - messaging.send('popupPanel', { - what: 'saveFirewallRules', - srcHostname: popupData.pageHostname, - desHostnames: popupData.hostnameDict, - }); - dom.cl.remove(dom.body, 'needSave'); -}; - -/******************************************************************************/ - -const revertFirewallRules = async function() { - dom.cl.remove(dom.body, 'needSave'); - const response = await messaging.send('popupPanel', { - what: 'revertFirewallRules', - srcHostname: popupData.pageHostname, - desHostnames: popupData.hostnameDict, - tabId: popupData.tabId, - }); - cachePopupData(response); - updateAllFirewallCells(true, false); - updateHnSwitches(); - hashFromPopupData(); -}; - -/******************************************************************************/ - -const toggleHostnameSwitch = async function(ev) { - const target = ev.currentTarget; - const switchName = dom.attr(target, 'id'); - if ( !switchName ) { return; } - // For touch displays, process click only if the switch is not "busy". - if ( - vAPI.webextFlavor.soup.has('mobile') && - dom.cl.has(target, 'hnSwitchBusy') - ) { - return; - } - dom.cl.toggle(target, 'on'); - renderTooltips(`#${switchName}`); - - const response = await messaging.send('popupPanel', { - what: 'toggleHostnameSwitch', - name: switchName, - hostname: popupData.pageHostname, - state: dom.cl.has(target, 'on'), - tabId: popupData.tabId, - persist: ev.ctrlKey || ev.metaKey, - }); - - cachePopupData(response); - hashFromPopupData(); - - dom.cl.toggle(dom.body, 'needSave', popupData.matrixIsDirty === true); -}; - -/******************************************************************************* - - Double tap ctrl key: toggle god mode - -*/ - -// https://github.com/uBlockOrigin/uBlock-issues/issues/2145 -// Ignore events from auto-repeating keys - -{ - let eventCount = 0; - let eventTime = 0; - - dom.on(document, 'keydown', ev => { - if ( ev.key !== 'Control' ) { - eventCount = 0; - return; - } - if ( ev.repeat ) { return; } - const now = Date.now(); - if ( (now - eventTime) >= 500 ) { - eventCount = 0; - } - eventCount += 1; - eventTime = now; - if ( eventCount < 2 ) { return; } - eventCount = 0; - dom.cl.toggle(dom.body, 'godMode'); - }); -} - - -/******************************************************************************/ - -// Poll for changes. -// -// I couldn't find a better way to be notified of changes which can affect -// popup content, as the messaging API doesn't support firing events accurately -// from the main extension process to a specific auxiliary extension process: -// -// - broadcasting() is not an option given there could be a lot of tabs opened, -// and maybe even many frames within these tabs, i.e. unacceptable overhead -// regardless of whether the popup is opened or not. -// -// - Modifying the messaging API is not an option, as this would require -// revisiting all platform-specific code to support targeted broadcasting, -// which who knows could be not so trivial for some platforms. -// -// A well done polling is a better anyways IMO, I prefer that data is pulled -// on demand rather than forcing the main process to assume a client may need -// it and thus having to push it all the time unconditionally. - -const pollForContentChange = (( ) => { - const pollCallback = async function() { - const response = await messaging.send('popupPanel', { - what: 'hasPopupContentChanged', - tabId: popupData.tabId, - contentLastModified: popupData.contentLastModified, - }); - if ( response ) { - await getPopupData(popupData.tabId); - return; - } - poll(); - }; - - const pollTimer = vAPI.defer.create(pollCallback); - - const poll = function() { - pollTimer.on(1500); - }; - - return poll; -})(); - -/******************************************************************************/ - -const getPopupData = async function(tabId, first = false) { - const response = await messaging.send('popupPanel', { - what: 'getPopupData', - tabId, - }); - - cachePopupData(response); - renderOnce(); - renderPopup(); - renderPopupLazy(); // low priority rendering - hashFromPopupData(first); - pollForContentChange(); -}; - -/******************************************************************************/ - -// Popup DOM is assumed to be loaded at this point -- because this script -// is loaded after everything else. - -{ - // Extract the tab id of the page for this popup. If there's no tab id - // specified in the query string, it will default to current tab. - const selfURL = new URL(self.location.href); - const tabId = parseInt(selfURL.searchParams.get('tabId'), 10) || null; - - const nextFrames = async n => { - for ( let i = 0; i < n; i++ ) { - await new Promise(resolve => { - self.requestAnimationFrame(( ) => { resolve(); }); - }); - } - }; - - const setOrientation = async ( ) => { - if ( dom.cl.has(dom.root, 'mobile') ) { - dom.cl.remove(dom.root, 'desktop'); - dom.cl.add(dom.root, 'portrait'); - return; - } - if ( selfURL.searchParams.get('portrait') !== null ) { - dom.cl.remove(dom.root, 'desktop'); - dom.cl.add(dom.root, 'portrait'); - return; - } - if ( popupData.popupPanelOrientation === 'landscape' ) { return; } - if ( popupData.popupPanelOrientation === 'portrait' ) { - dom.cl.remove(dom.root, 'desktop'); - dom.cl.add(dom.root, 'portrait'); - return; - } - if ( dom.cl.has(dom.root, 'desktop') === false ) { return; } - await nextFrames(8); - const main = qs$('#main'); - const firewall = qs$('#firewall'); - const minWidth = (main.offsetWidth + firewall.offsetWidth) / 1.1; - if ( window.innerWidth < minWidth ) { - dom.cl.add(dom.root, 'portrait'); - } - }; - - // The purpose of the following code is to reset to a vertical layout - // should the viewport not be enough wide to accommodate the horizontal - // layout. - // To avoid querying a spurious viewport width -- it happens sometimes, - // somehow -- we delay layout-changing operations to the next paint - // frames. - // Force a layout recalculation by querying the body width. To be - // honest, I have no clue if this makes a difference in the end. - // https://gist.github.com/paulirish/5d52fb081b3570c81e3a - // Use a tolerance proportional to the sum of the width of the panes - // when testing against viewport width. - const checkViewport = async function() { - await setOrientation(); - if ( dom.cl.has(dom.root, 'portrait') ) { - const panes = qs$('#panes'); - const sticky = qs$('#sticky'); - const stickyParent = sticky.parentElement; - if ( stickyParent !== panes ) { - panes.prepend(sticky); - } - } - if ( selfURL.searchParams.get('intab') !== null ) { - dom.cl.add(dom.root, 'intab'); - } - await nextFrames(1); - dom.cl.remove(dom.body, 'loading'); - }; - - getPopupData(tabId, true).then(( ) => { - if ( document.readyState !== 'complete' ) { - dom.on(self, 'load', ( ) => { checkViewport(); }, { once: true }); - } else { - checkViewport(); - } - }); -} - -/******************************************************************************/ - -dom.on('#switch', 'click', toggleNetFilteringSwitch); -dom.on('#gotoZap', 'click', gotoZap); -dom.on('#gotoPick', 'click', gotoPick); -dom.on('#gotoReport', 'click', gotoReport); -dom.on('.hnSwitch', 'click', ev => { toggleHostnameSwitch(ev); }); -dom.on('#saveRules', 'click', saveFirewallRules); -dom.on('#revertRules', 'click', ( ) => { revertFirewallRules(); }); -dom.on('a[href]', 'click', gotoURL); - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/redirect-engine.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/redirect-engine.js deleted file mode 100644 index 1edb376..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/redirect-engine.js +++ /dev/null @@ -1,479 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -import redirectableResources from './redirect-resources.js'; -import { LineIterator, orphanizeString } from './text-utils.js'; - -/******************************************************************************/ - -const extToMimeMap = new Map([ - [ 'css', 'text/css' ], - [ 'fn', 'fn/javascript' ], // invented mime type for internal use - [ 'gif', 'image/gif' ], - [ 'html', 'text/html' ], - [ 'js', 'text/javascript' ], - [ 'json', 'application/json' ], - [ 'mp3', 'audio/mp3' ], - [ 'mp4', 'video/mp4' ], - [ 'png', 'image/png' ], - [ 'txt', 'text/plain' ], - [ 'xml', 'text/xml' ], -]); - -const typeToMimeMap = new Map([ - [ 'main_frame', 'text/html' ], - [ 'other', 'text/plain' ], - [ 'script', 'text/javascript' ], - [ 'stylesheet', 'text/css' ], - [ 'sub_frame', 'text/html' ], - [ 'xmlhttprequest', 'text/plain' ], -]); - -const validMimes = new Set(extToMimeMap.values()); - -const mimeFromName = name => { - const match = /\.([^.]+)$/.exec(name); - if ( match === null ) { return ''; } - return extToMimeMap.get(match[1]); -}; - -const removeTopCommentBlock = text => { - return text.replace(/^\/\*[\S\s]+?\n\*\/\s*/, ''); -}; - -// vAPI.warSecret is optional, it could be absent in some environments, -// i.e. nodejs for example. Probably the best approach is to have the -// "web_accessible_resources secret" added outside by the client of this -// module, but for now I just want to remove an obstacle to modularization. -const warSecret = typeof vAPI === 'object' && vAPI !== null - ? vAPI.warSecret.short - : ( ) => ''; - -const RESOURCES_SELFIE_VERSION = 7; -const RESOURCES_SELFIE_NAME = 'selfie/redirectEngine/resources'; - -/******************************************************************************/ -/******************************************************************************/ - -class RedirectEntry { - constructor() { - this.mime = ''; - this.data = ''; - this.warURL = undefined; - this.params = undefined; - this.requiresTrust = false; - this.world = 'MAIN'; - this.dependencies = []; - } - - // Prevent redirection to web accessible resources when the request is - // of type 'xmlhttprequest', because XMLHttpRequest.responseURL would - // cause leakage of extension id. See: - // - https://stackoverflow.com/a/8056313 - // - https://bugzilla.mozilla.org/show_bug.cgi?id=998076 - // https://www.reddit.com/r/uBlockOrigin/comments/cpxm1v/ - // User-supplied resources may already be base64 encoded. - - toURL(fctxt, asDataURI = false) { - if ( - this.warURL !== undefined && - asDataURI !== true && - fctxt instanceof Object && - fctxt.type !== 'xmlhttprequest' - ) { - const params = []; - const secret = warSecret(); - if ( secret !== '' ) { params.push(`secret=${secret}`); } - if ( this.params !== undefined ) { - for ( const name of this.params ) { - const value = fctxt[name]; - if ( value === undefined ) { continue; } - params.push(`${name}=${encodeURIComponent(value)}`); - } - } - let url = `${this.warURL}`; - if ( params.length !== 0 ) { - url += `?${params.join('&')}`; - } - return url; - } - if ( this.data === undefined ) { return; } - // https://github.com/uBlockOrigin/uBlock-issues/issues/701 - if ( this.data === '' ) { - const mime = typeToMimeMap.get(fctxt.type); - if ( mime === '' ) { return; } - return `data:${mime},`; - } - if ( this.data.startsWith('data:') === false ) { - if ( this.mime.indexOf(';') === -1 ) { - this.data = `data:${this.mime};base64,${btoa(this.data)}`; - } else { - this.data = `data:${this.mime},${this.data}`; - } - } - return this.data; - } - - toContent() { - if ( this.data.startsWith('data:') ) { - const pos = this.data.indexOf(','); - const base64 = this.data.endsWith(';base64', pos); - this.data = this.data.slice(pos + 1); - if ( base64 ) { - this.data = atob(this.data); - } - } - return this.data; - } - - static fromDetails(details) { - const r = new RedirectEntry(); - Object.assign(r, details); - return r; - } -} - -/******************************************************************************/ -/******************************************************************************/ - -class RedirectEngine { - constructor() { - this.aliases = new Map(); - this.resources = new Map(); - this.reset(); - this.modifyTime = Date.now(); - } - - reset() { - } - - freeze() { - } - - tokenToURL( - fctxt, - token, - asDataURI = false - ) { - const entry = this.resources.get(this.aliases.get(token) || token); - if ( entry === undefined ) { return; } - return entry.toURL(fctxt, asDataURI); - } - - tokenToDNR(token) { - const entry = this.resources.get(this.aliases.get(token) || token); - if ( entry === undefined ) { return; } - if ( entry.warURL === undefined ) { return; } - return entry.warURL; - } - - hasToken(token) { - if ( token === 'none' ) { return true; } - const asDataURI = token.charCodeAt(0) === 0x25 /* '%' */; - if ( asDataURI ) { - token = token.slice(1); - } - return this.resources.get(this.aliases.get(token) || token) !== undefined; - } - - tokenRequiresTrust(token) { - const entry = this.resources.get(this.aliases.get(token) || token); - return entry && entry.requiresTrust === true || false; - } - - async toSelfie() { - } - - async fromSelfie() { - return true; - } - - contentFromName(name, mime = '') { - const entry = this.resources.get(this.aliases.get(name) || name); - if ( entry === undefined ) { return; } - if ( entry.mime.startsWith(mime) === false ) { return; } - return { - js: entry.toContent(), - world: entry.world, - dependencies: entry.dependencies.slice(), - }; - } - - // https://github.com/uBlockOrigin/uAssets/commit/deefe8755511 - // Consider 'none' a reserved keyword, to be used to disable redirection. - // https://github.com/uBlockOrigin/uBlock-issues/issues/1419 - // Append newlines to raw text to ensure processing of trailing resource. - - resourcesFromString(text) { - const lineIter = new LineIterator( - removeTopCommentBlock(text) + '\n\n' - ); - const reNonEmptyLine = /\S/; - let fields, encoded, details; - - while ( lineIter.eot() === false ) { - const line = lineIter.next(); - if ( line.startsWith('#') ) { continue; } - if ( line.startsWith('// ') ) { continue; } - - if ( fields === undefined ) { - if ( line === '' ) { continue; } - // Modern parser - if ( line.startsWith('/// ') ) { - const name = line.slice(4).trim(); - fields = [ name, mimeFromName(name) ]; - continue; - } - // Legacy parser - const head = line.trim().split(/\s+/); - if ( head.length !== 2 ) { continue; } - if ( head[0] === 'none' ) { continue; } - let pos = head[1].indexOf(';'); - if ( pos === -1 ) { pos = head[1].length; } - if ( validMimes.has(head[1].slice(0, pos)) === false ) { - continue; - } - encoded = head[1].indexOf(';') !== -1; - fields = head; - continue; - } - - if ( line.startsWith('/// ') ) { - if ( details === undefined ) { - details = []; - } - const [ prop, value ] = line.slice(4).trim().split(/\s+/); - if ( value !== undefined ) { - details.push({ prop, value }); - } - continue; - } - - if ( reNonEmptyLine.test(line) ) { - fields.push(encoded ? line.trim() : line); - continue; - } - - // No more data, add the resource. - const name = this.aliases.get(fields[0]) || fields[0]; - const mime = fields[1]; - const data = orphanizeString( - fields.slice(2).join(encoded ? '' : '\n') - ); - this.resources.set(name, RedirectEntry.fromDetails({ mime, data })); - if ( Array.isArray(details) ) { - const resource = this.resources.get(name); - for ( const { prop, value } of details ) { - switch ( prop ) { - case 'alias': - this.aliases.set(value, name); - break; - case 'world': - if ( /^isolated$/i.test(value) === false ) { break; } - resource.world = 'ISOLATED'; - break; - case 'dependency': - if ( this.resources.has(value) === false ) { break; } - resource.dependencies.push(value); - break; - default: - break; - } - } - } - - fields = undefined; - details = undefined; - } - - this.modifyTime = Date.now(); - } - - loadBuiltinResources(fetcher) { - this.resources = new Map(); - this.aliases = new Map(); - - const fetches = [ - import('/assets/resources/scriptlets.js').then(module => { - for ( const scriptlet of module.builtinScriptlets ) { - const details = {}; - details.mime = mimeFromName(scriptlet.name); - details.data = scriptlet.fn.toString(); - for ( const [ k, v ] of Object.entries(scriptlet) ) { - if ( k === 'fn' ) { continue; } - details[k] = v; - } - const entry = RedirectEntry.fromDetails(details); - this.resources.set(details.name, entry); - if ( Array.isArray(details.aliases) === false ) { continue; } - for ( const alias of details.aliases ) { - this.aliases.set(alias, details.name); - } - } - this.modifyTime = Date.now(); - }), - ]; - - const store = (name, data = undefined) => { - const details = redirectableResources.get(name); - const entry = RedirectEntry.fromDetails({ - mime: mimeFromName(name), - data, - warURL: `/web_accessible_resources/${name}`, - params: details.params, - }); - this.resources.set(name, entry); - if ( details.alias === undefined ) { return; } - if ( Array.isArray(details.alias) ) { - for ( const alias of details.alias ) { - this.aliases.set(alias, name); - } - } else { - this.aliases.set(details.alias, name); - } - }; - - const processBlob = (name, blob) => { - return new Promise(resolve => { - const reader = new FileReader(); - reader.onload = ( ) => { - store(name, reader.result); - resolve(); - }; - reader.onabort = reader.onerror = ( ) => { - resolve(); - }; - reader.readAsDataURL(blob); - }); - }; - - const processText = (name, text) => { - store(name, removeTopCommentBlock(text)); - }; - - const process = result => { - const match = /^\/web_accessible_resources\/([^?]+)/.exec(result.url); - if ( match === null ) { return; } - const name = match[1]; - return result.content instanceof Blob - ? processBlob(name, result.content) - : processText(name, result.content); - }; - - for ( const [ name, details ] of redirectableResources ) { - if ( typeof details.data !== 'string' ) { - store(name); - continue; - } - fetches.push( - fetcher(`/web_accessible_resources/${name}`, { - responseType: details.data - }).then( - result => process(result) - ) - ); - } - - return Promise.all(fetches); - } - - getResourceDetails() { - const out = new Map([ - [ 'none', { canInject: false, canRedirect: true, aliasOf: '' } ], - ]); - for ( const [ name, entry ] of this.resources ) { - out.set(name, { - canInject: typeof entry.data === 'string', - canRedirect: entry.warURL !== undefined, - aliasOf: '', - extensionPath: entry.warURL, - }); - } - for ( const [ alias, name ] of this.aliases ) { - const original = out.get(name); - if ( original === undefined ) { continue; } - const aliased = Object.assign({}, original); - aliased.aliasOf = name; - out.set(alias, aliased); - } - return Array.from(out).sort((a, b) => { - return a[0].localeCompare(b[0]); - }); - } - - getTrustedScriptletTokens() { - const out = []; - const isTrustedScriptlet = entry => { - if ( entry.requiresTrust !== true ) { return false; } - if ( entry.warURL !== undefined ) { return false; } - if ( typeof entry.data !== 'string' ) { return false; } - if ( entry.name.endsWith('.js') === false ) { return false; } - return true; - }; - for ( const [ name, entry ] of this.resources ) { - if ( isTrustedScriptlet(entry) === false ) { continue; } - out.push(name.slice(0, -3)); - } - for ( const [ alias, name ] of this.aliases ) { - if ( out.includes(name.slice(0, -3)) === false ) { continue; } - out.push(alias.slice(0, -3)); - } - return out; - } - - selfieFromResources(storage) { - return storage.toCache(RESOURCES_SELFIE_NAME, { - version: RESOURCES_SELFIE_VERSION, - aliases: this.aliases, - resources: this.resources, - }); - } - - async resourcesFromSelfie(storage) { - const selfie = await storage.fromCache(RESOURCES_SELFIE_NAME); - if ( selfie instanceof Object === false ) { return false; } - if ( selfie.version !== RESOURCES_SELFIE_VERSION ) { return false; } - if ( selfie.aliases instanceof Map === false ) { return false; } - if ( selfie.resources instanceof Map === false ) { return false; } - this.aliases = selfie.aliases; - this.resources = selfie.resources; - for ( const [ token, entry ] of this.resources ) { - this.resources.set(token, RedirectEntry.fromDetails(entry)); - } - return true; - } - - invalidateResourcesSelfie(storage) { - storage.remove(RESOURCES_SELFIE_NAME); - } -} - -/******************************************************************************/ - -const redirectEngine = new RedirectEngine(); - -export { redirectEngine }; - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/redirect-resources.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/redirect-resources.js deleted file mode 100644 index b8577e3..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/redirect-resources.js +++ /dev/null @@ -1,182 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -// The resources referenced below are found in ./web_accessible_resources/ -// -// The content of the resources which declare a `data` property will be loaded -// in memory, and converted to a suitable internal format depending on the -// type of the loaded data. The `data` property allows for manual injection -// through `+js(...)`, or for redirection to a data: URI when a redirection -// to a web accessible resource is not desirable. - -export default new Map([ - [ '1x1.gif', { - alias: '1x1-transparent.gif', - data: 'blob', - } ], - [ '2x2.png', { - alias: '2x2-transparent.png', - data: 'blob', - } ], - [ '3x2.png', { - alias: '3x2-transparent.png', - data: 'blob', - } ], - [ '32x32.png', { - alias: '32x32-transparent.png', - data: 'blob', - } ], - [ 'amazon_ads.js', { - alias: 'amazon-adsystem.com/aax2/amzn_ads.js', - data: 'text', - } ], - [ 'amazon_apstag.js', { - } ], - [ 'ampproject_v0.js', { - alias: 'ampproject.org/v0.js', - } ], - [ 'chartbeat.js', { - alias: 'static.chartbeat.com/chartbeat.js', - } ], - [ 'click2load.html', { - params: [ 'aliasURL', 'url' ], - } ], - [ 'doubleclick_instream_ad_status.js', { - alias: 'doubleclick.net/instream/ad_status.js', - data: 'text', - } ], - [ 'empty', { - data: 'text', // Important! - } ], - [ 'fingerprint2.js', { - data: 'text', - } ], - [ 'fingerprint3.js', { - data: 'text', - } ], - [ 'google-analytics_analytics.js', { - alias: [ - 'google-analytics.com/analytics.js', - 'googletagmanager_gtm.js', - 'googletagmanager.com/gtm.js' - ], - data: 'text', - } ], - [ 'google-analytics_cx_api.js', { - alias: 'google-analytics.com/cx/api.js', - } ], - [ 'google-analytics_ga.js', { - alias: 'google-analytics.com/ga.js', - data: 'text', - } ], - [ 'google-analytics_inpage_linkid.js', { - alias: 'google-analytics.com/inpage_linkid.js', - } ], - [ 'google-ima.js', { - alias: 'google-ima3', /* adguard compatibility */ - } ], - [ 'googlesyndication_adsbygoogle.js', { - alias: [ - 'googlesyndication.com/adsbygoogle.js', - 'googlesyndication-adsbygoogle', /* adguard compatibility */ - ], - data: 'text', - } ], - [ 'googletagservices_gpt.js', { - alias: [ - 'googletagservices.com/gpt.js', - 'googletagservices-gpt', /* adguard compatibility */ - ], - data: 'text', - } ], - [ 'hd-main.js', { - } ], - [ 'nobab.js', { - alias: [ 'bab-defuser.js', 'prevent-bab.js' ], - data: 'text', - } ], - [ 'nobab2.js', { - data: 'text', - } ], - [ 'noeval.js', { - data: 'text', - } ], - [ 'noeval-silent.js', { - alias: 'silent-noeval.js', - data: 'text', - } ], - [ 'nofab.js', { - alias: 'fuckadblock.js-3.2.0', - data: 'text', - } ], - [ 'noop-0.1s.mp3', { - alias: [ 'noopmp3-0.1s', 'abp-resource:blank-mp3' ], - data: 'blob', - } ], - [ 'noop-0.5s.mp3', { - } ], - [ 'noop-1s.mp4', { - alias: [ 'noopmp4-1s', 'abp-resource:blank-mp4' ], - data: 'blob', - } ], - [ 'noop.css', { - data: 'text', - } ], - [ 'noop.html', { - alias: 'noopframe', - } ], - [ 'noop.js', { - alias: [ 'noopjs', 'abp-resource:blank-js' ], - data: 'text', - } ], - [ 'noop.json', { - alias: [ 'noopjson' ], - data: 'text', - } ], - [ 'noop.txt', { - alias: 'nooptext', - data: 'text', - } ], - [ 'noop-vmap1.0.xml', { - alias: 'noopvmap-1.0', - data: 'text', - } ], - [ 'outbrain-widget.js', { - alias: 'widgets.outbrain.com/outbrain.js', - } ], - [ 'popads.js', { - alias: [ 'popads.net.js', 'prevent-popads-net.js' ], - data: 'text', - } ], - [ 'popads-dummy.js', { - data: 'text', - } ], - [ 'prebid-ads.js', { - data: 'text', - } ], - [ 'scorecardresearch_beacon.js', { - alias: 'scorecardresearch.com/beacon.js', - } ], -]); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/reverselookup-worker.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/reverselookup-worker.js deleted file mode 100644 index 37b8b65..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/reverselookup-worker.js +++ /dev/null @@ -1,287 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -let listEntries = Object.create(null); - -/******************************************************************************/ - -// https://github.com/uBlockOrigin/uBlock-issues/issues/2092 -// Order of ids matters - -const extractBlocks = function(content, ...ids) { - const out = []; - for ( const id of ids ) { - const pattern = `#block-start-${id}\n`; - let beg = content.indexOf(pattern); - if ( beg === -1 ) { continue; } - beg += pattern.length; - const end = content.indexOf(`#block-end-${id}`, beg); - out.push(content.slice(beg, end)); - } - return out.join('\n'); -}; - -/******************************************************************************/ - -// https://github.com/MajkiIT/polish-ads-filter/issues/14768#issuecomment-536006312 -// Avoid reporting badfilter-ed filters. - -const fromNetFilter = function(details) { - const lists = []; - const compiledFilter = details.compiledFilter; - - for ( const assetKey in listEntries ) { - const entry = listEntries[assetKey]; - if ( entry === undefined ) { continue; } - if ( entry.networkContent === undefined ) { - entry.networkContent = extractBlocks(entry.content, 'NETWORK_FILTERS:GOOD'); - } - const content = entry.networkContent; - let pos = 0; - for (;;) { - pos = content.indexOf(compiledFilter, pos); - if ( pos === -1 ) { break; } - // We need an exact match. - // https://github.com/gorhill/uBlock/issues/1392 - // https://github.com/gorhill/uBlock/issues/835 - const notFound = pos !== 0 && content.charCodeAt(pos - 1) !== 0x0A; - pos += compiledFilter.length; - if ( - notFound || - pos !== content.length && content.charCodeAt(pos) !== 0x0A - ) { - continue; - } - lists.push({ - assetKey: assetKey, - title: entry.title, - supportURL: entry.supportURL - }); - break; - } - } - - const response = {}; - response[details.rawFilter] = lists; - - self.postMessage({ id: details.id, response }); -}; - -/******************************************************************************/ - -// Looking up filter lists from a cosmetic filter is a bit more complicated -// than with network filters: -// -// The filter is its raw representation, not its compiled version. This is -// because the cosmetic filtering engine can't translate a live cosmetic -// filter into its compiled version. Reason is I do not want to burden -// cosmetic filtering with the resource overhead of being able to recompile -// live cosmetic filters. I want the cosmetic filtering code to be left -// completely unaffected by reverse lookup requirements. -// -// Mainly, given a CSS selector and a hostname as context, we will derive -// various versions of compiled filters and see if there are matches. This -// way the whole CPU cost is incurred by the reverse lookup code -- in a -// worker thread, and the cosmetic filtering engine incurs no cost at all. -// -// For this though, the reverse lookup code here needs some knowledge of -// the inners of the cosmetic filtering engine. -// FilterContainer.fromCompiledContent() is our reference code to create -// the various compiled versions. - -const fromExtendedFilter = function(details) { - const match = /^#@?#\^?/.exec(details.rawFilter); - const prefix = match[0]; - const exception = prefix.charAt(1) === '@'; - const selector = details.rawFilter.slice(prefix.length); - const isHtmlFilter = prefix.endsWith('^'); - const hostname = details.hostname; - - // The longer the needle, the lower the number of false positives. - // https://github.com/uBlockOrigin/uBlock-issues/issues/1139 - // Mind that there is no guarantee a selector has `\w` characters. - const needle = selector.match(/\w+|\*/g).reduce(function(a, b) { - return a.length > b.length ? a : b; - }); - - const regexFromLabels = (prefix, hn, suffix) => - new RegExp( - prefix + - hn.split('.').reduce((acc, item) => `(${acc}\\.)?${item}`) + - suffix - ); - - // https://github.com/uBlockOrigin/uBlock-issues/issues/803 - // Support looking up selectors of the form `*##...` - const reHostname = regexFromLabels('^', hostname, '$'); - let reEntity; - { - const domain = details.domain; - const pos = domain.indexOf('.'); - if ( pos !== -1 ) { - reEntity = regexFromLabels( - '^(', - hostname.slice(0, pos + hostname.length - domain.length), - '\\.)?\\*$' - ); - } - } - - const hostnameMatches = hn => { - if ( hn === '' ) { return true; } - if ( hn.charCodeAt(0) === 0x2F /* / */ ) { - return (new RegExp(hn.slice(1,-1))).test(hostname); - } - if ( reHostname.test(hn) ) { return true; } - if ( reEntity === undefined ) { return false; } - if ( reEntity.test(hn) ) { return true; } - return false; - }; - - const response = Object.create(null); - - for ( const assetKey in listEntries ) { - const entry = listEntries[assetKey]; - if ( entry === undefined ) { continue; } - if ( entry.extendedContent === undefined ) { - entry.extendedContent = extractBlocks( - entry.content, - 'COSMETIC_FILTERS:SPECIFIC', - 'COSMETIC_FILTERS:GENERIC', - 'SCRIPTLET_FILTERS', - 'HTML_FILTERS', - 'HTTPHEADER_FILTERS' - ); - } - const content = entry.extendedContent; - let found; - let pos = 0; - while ( (pos = content.indexOf(needle, pos)) !== -1 ) { - let beg = content.lastIndexOf('\n', pos); - if ( beg === -1 ) { beg = 0; } - let end = content.indexOf('\n', pos); - if ( end === -1 ) { end = content.length; } - pos = end; - const fargs = JSON.parse(content.slice(beg, end)); - const filterType = fargs[0]; - - // https://github.com/gorhill/uBlock/issues/2763 - if ( filterType === 0 && details.ignoreGeneric ) { continue; } - - // Do not confuse cosmetic filters with HTML ones. - if ( (filterType === 64) !== isHtmlFilter ) { continue; } - - switch ( filterType ) { - // Lowly generic cosmetic filters - case 0: - if ( exception ) { break; } - if ( fargs[2] !== selector ) { break; } - found = prefix + selector; - break; - // Highly generic cosmetic filters - case 4: // simple highly generic - case 5: // complex highly generic - if ( exception ) { break; } - if ( fargs[1] !== selector ) { break; } - found = prefix + selector; - break; - // Specific cosmetic filtering - // Generic exception - case 8: - // HTML filtering - // Response header filtering - case 64: { - if ( exception !== ((fargs[2] & 0b001) !== 0) ) { break; } - const isProcedural = (fargs[2] & 0b010) !== 0; - if ( - isProcedural === false && fargs[3] !== selector || - isProcedural && JSON.parse(fargs[3]).raw !== selector - ) { - break; - } - if ( hostnameMatches(fargs[1]) === false ) { break; } - // https://www.reddit.com/r/uBlockOrigin/comments/d6vxzj/ - // Ignore match if specific cosmetic filters are disabled - if ( - filterType === 8 && - exception === false && - details.ignoreSpecific - ) { - break; - } - found = fargs[1] + prefix + selector; - break; - } - // Scriptlet injection - case 32: - if ( exception !== ((fargs[2] & 0b001) !== 0) ) { break; } - if ( fargs[3] !== details.compiled ) { break; } - if ( hostnameMatches(fargs[1]) ) { - found = fargs[1] + prefix + selector; - } - break; - } - if ( found !== undefined ) { - if ( response[found] === undefined ) { - response[found] = []; - } - response[found].push({ - assetKey: assetKey, - title: entry.title, - supportURL: entry.supportURL - }); - break; - } - } - } - - self.postMessage({ id: details.id, response }); -}; - -/******************************************************************************/ - -self.onmessage = function(e) { - const msg = e.data; - - switch ( msg.what ) { - case 'resetLists': - listEntries = Object.create(null); - break; - - case 'setList': - listEntries[msg.details.assetKey] = msg.details; - break; - - case 'fromNetFilter': - fromNetFilter(msg); - break; - - case 'fromExtendedFilter': - fromExtendedFilter(msg); - break; - } -}; - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/reverselookup.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/reverselookup.js deleted file mode 100644 index e7bf24e..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/reverselookup.js +++ /dev/null @@ -1,223 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -import staticNetFilteringEngine from './static-net-filtering.js'; -import µb from './background.js'; -import { CompiledListWriter } from './static-filtering-io.js'; -import { i18n$ } from './i18n.js'; -import * as sfp from './static-filtering-parser.js'; - -import { - domainFromHostname, - hostnameFromURI, -} from './uri-utils.js'; - -/******************************************************************************/ - -const pendingResponses = new Map(); - -let worker = null; -let needLists = true; -let messageId = 1; - -const onWorkerMessage = function(e) { - const msg = e.data; - const resolver = pendingResponses.get(msg.id); - pendingResponses.delete(msg.id); - resolver(msg.response); -}; - -const stopWorker = function() { - workerTTLTimer.off(); - if ( worker === null ) { return; } - worker.terminate(); - worker = null; - needLists = true; - for ( const resolver of pendingResponses.values() ) { - resolver(); - } - pendingResponses.clear(); -}; - -const workerTTLTimer = vAPI.defer.create(stopWorker); -const workerTTL = { min: 1.5 }; - -const initWorker = function() { - if ( worker === null ) { - worker = new Worker('js/reverselookup-worker.js'); - worker.onmessage = onWorkerMessage; - } - - // The worker will be shutdown after n minutes without being used. - workerTTLTimer.offon(workerTTL); - - if ( needLists === false ) { - return Promise.resolve(); - } - needLists = false; - - const entries = new Map(); - - const onListLoaded = function(details) { - const entry = entries.get(details.assetKey); - - // https://github.com/gorhill/uBlock/issues/536 - // Use assetKey when there is no filter list title. - - worker.postMessage({ - what: 'setList', - details: { - assetKey: details.assetKey, - title: entry.title || details.assetKey, - supportURL: entry.supportURL, - content: details.content - } - }); - }; - - for ( const listKey in µb.availableFilterLists ) { - if ( µb.availableFilterLists.hasOwnProperty(listKey) === false ) { - continue; - } - const entry = µb.availableFilterLists[listKey]; - if ( entry.off === true ) { continue; } - entries.set(listKey, { - title: listKey !== µb.userFiltersPath ? - entry.title : - i18n$('1pPageName'), - supportURL: entry.supportURL || '' - }); - } - if ( entries.size === 0 ) { - return Promise.resolve(); - } - - const promises = []; - for ( const listKey of entries.keys() ) { - promises.push( - µb.getCompiledFilterList(listKey).then(details => { - onListLoaded(details); - }) - ); - } - return Promise.all(promises); -}; - -const fromNetFilter = async function(rawFilter) { - if ( typeof rawFilter !== 'string' || rawFilter === '' ) { return; } - - const writer = new CompiledListWriter(); - const parser = new sfp.AstFilterParser({ - trustedSource: true, - maxTokenLength: staticNetFilteringEngine.MAX_TOKEN_LENGTH, - nativeCssHas: vAPI.webextFlavor.env.includes('native_css_has'), - }); - parser.parse(rawFilter); - - const compiler = staticNetFilteringEngine.createCompiler(); - if ( compiler.compile(parser, writer) === false ) { return; } - - await initWorker(); - - const id = messageId++; - worker.postMessage({ - what: 'fromNetFilter', - id, - compiledFilter: writer.last(), - rawFilter, - }); - - return new Promise(resolve => { - pendingResponses.set(id, resolve); - }); -}; - -const fromExtendedFilter = async function(details) { - if ( - typeof details.rawFilter !== 'string' || - details.rawFilter === '' - ) { - return; - } - - await initWorker(); - - const id = messageId++; - const hostname = hostnameFromURI(details.url); - - const parser = new sfp.AstFilterParser({ - trustedSource: true, - nativeCssHas: vAPI.webextFlavor.env.includes('native_css_has'), - }); - parser.parse(details.rawFilter); - let compiled; - if ( parser.isScriptletFilter() ) { - compiled = JSON.stringify(parser.getScriptletArgs()); - } - - worker.postMessage({ - what: 'fromExtendedFilter', - id, - domain: domainFromHostname(hostname), - hostname, - ignoreGeneric: - staticNetFilteringEngine.matchRequestReverse( - 'generichide', - details.url - ) === 2, - ignoreSpecific: - staticNetFilteringEngine.matchRequestReverse( - 'specifichide', - details.url - ) === 2, - rawFilter: details.rawFilter, - compiled, - }); - - return new Promise(resolve => { - pendingResponses.set(id, resolve); - }); -}; - -// This tells the worker that filter lists may have changed. - -const resetLists = function() { - needLists = true; - if ( worker === null ) { return; } - worker.postMessage({ what: 'resetLists' }); -}; - -/******************************************************************************/ - -const staticFilteringReverseLookup = { - fromNetFilter, - fromExtendedFilter, - resetLists, - shutdown: stopWorker -}; - -export default staticFilteringReverseLookup; - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/s14e-serializer.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/s14e-serializer.js deleted file mode 100644 index 8ef715a..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/s14e-serializer.js +++ /dev/null @@ -1,1409 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2024-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/******************************************************************************* - * - * Structured-Cloneable to Unicode-Only SERIALIZER - * - * Purpose: - * - * Serialize/deserialize arbitrary JS data to/from well-formed Unicode strings. - * - * The browser does not expose an API to serialize structured-cloneable types - * into a single string. JSON.stringify() does not support complex JavaScript - * objects, and does not support references to composite types. Unless the - * data to serialize is only JS strings, it is difficult to easily switch - * from one type of storage to another. - * - * Serializing to a well-formed Unicode string allows to store structured- - * cloneable data to any storage. Not all storages support storing binary data, - * but all storages support storing Unicode strings. - * - * Structured-cloneable types: - * https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm#supported_types - * - * ----------------+------------------+------------------+---------------------- - * Data types | String | JSONable | structured-cloneable - * ================+============================================================ - * document.cookie | Yes | No | No - * ----------------+------------------+------------------+---------------------- - * localStorage | Yes | No | No - * ----------------+------------------+------------------+---------------------- - * IndexedDB | Yes | Yes | Yes - * ----------------+------------------+------------------+---------------------- - * browser.storage | Yes | Yes | No - * ----------------+------------------+------------------+---------------------- - * Cache API | Yes | No | No - * ----------------+------------------+------------------+---------------------- - * - * The above table shows that only JS strings can be persisted natively to all - * types of storage. The purpose of this library is to convert - * structure-cloneable data (which is a superset of JSONable data) into a - * single JS string. The resulting string is meant to be as small as possible. - * As a result, it is not human-readable, though it contains only printable - * ASCII characters -- and possibly Unicode characters beyond ASCII. - * - * The resulting JS string will not contain characters which require escaping - * should it be converted to a JSON value. However it may contain characters - * which require escaping should it be converted to a URI component. - * - * Characteristics: - * - * - Serializes/deserializes data to/from a single well-formed Unicode string - * - Strings do not require escaping, i.e. they are stored as-is - * - Supports multiple references to same object - * - Supports reference cycles - * - Supports synchronous and asynchronous API - * - Supports usage of Worker - * - Optionally supports LZ4 compression - * - * TODO: - * - * - Harden against unexpected conditions, such as corrupted string during - * deserialization. - * - Evaluate supporting checksum. - * - * */ - -const VERSION = 1; -const SEPARATORCHAR = ' '; -const SEPARATORCHARCODE = SEPARATORCHAR.charCodeAt(0); -const SENTINELCHAR = '!'; -const SENTINELCHARCODE = SENTINELCHAR.charCodeAt(0); -const MAGICPREFIX = `UOSC_${VERSION}${SEPARATORCHAR}`; -const MAGICLZ4PREFIX = `UOSC/lz4_${VERSION}${SEPARATORCHAR}`; -const FAILMARK = Number.MAX_SAFE_INTEGER; -// Avoid characters which require escaping when serialized to JSON: -const SAFECHARS = "&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~"; -const NUMSAFECHARS = SAFECHARS.length; -const BITS_PER_SAFECHARS = Math.log2(NUMSAFECHARS); - -const { intToChar, intToCharCode, charCodeToInt } = (( ) => { - const intToChar = []; - const intToCharCode = []; - const charCodeToInt = []; - for ( let i = 0; i < NUMSAFECHARS; i++ ) { - intToChar[i] = SAFECHARS.charAt(i); - intToCharCode[i] = SAFECHARS.charCodeAt(i); - charCodeToInt[i] = 0; - } - for ( let i = NUMSAFECHARS; i < 128; i++ ) { - intToChar[i] = ''; - intToCharCode[i] = 0; - charCodeToInt[i] = 0; - } - for ( let i = 0; i < SAFECHARS.length; i++ ) { - charCodeToInt[SAFECHARS.charCodeAt(i)] = i; - } - return { intToChar, intToCharCode, charCodeToInt }; -})(); - -let iota = 1; -const I_STRING_SMALL = iota++; -const I_STRING_LARGE = iota++; -const I_ZERO = iota++; -const I_INTEGER_SMALL_POS = iota++; -const I_INTEGER_SMALL_NEG = iota++; -const I_INTEGER_LARGE_POS = iota++; -const I_INTEGER_LARGE_NEG = iota++; -const I_BOOL_FALSE = iota++; -const I_BOOL_TRUE = iota++; -const I_NULL = iota++; -const I_UNDEFINED = iota++; -const I_FLOAT = iota++; -const I_REGEXP = iota++; -const I_DATE = iota++; -const I_REFERENCE = iota++; -const I_OBJECT_SMALL = iota++; -const I_OBJECT_LARGE = iota++; -const I_ARRAY_SMALL = iota++; -const I_ARRAY_LARGE = iota++; -const I_SET_SMALL = iota++; -const I_SET_LARGE = iota++; -const I_MAP_SMALL = iota++; -const I_MAP_LARGE = iota++; -const I_ARRAYBUFFER = iota++; -const I_INT8ARRAY = iota++; -const I_UINT8ARRAY = iota++; -const I_UINT8CLAMPEDARRAY = iota++; -const I_INT16ARRAY = iota++; -const I_UINT16ARRAY = iota++; -const I_INT32ARRAY = iota++; -const I_UINT32ARRAY = iota++; -const I_FLOAT32ARRAY = iota++; -const I_FLOAT64ARRAY = iota++; -const I_DATAVIEW = iota++; - -const C_STRING_SMALL = intToChar[I_STRING_SMALL]; -const C_STRING_LARGE = intToChar[I_STRING_LARGE]; -const C_ZERO = intToChar[I_ZERO]; -const C_INTEGER_SMALL_POS = intToChar[I_INTEGER_SMALL_POS]; -const C_INTEGER_SMALL_NEG = intToChar[I_INTEGER_SMALL_NEG]; -const C_INTEGER_LARGE_POS = intToChar[I_INTEGER_LARGE_POS]; -const C_INTEGER_LARGE_NEG = intToChar[I_INTEGER_LARGE_NEG]; -const C_BOOL_FALSE = intToChar[I_BOOL_FALSE]; -const C_BOOL_TRUE = intToChar[I_BOOL_TRUE]; -const C_NULL = intToChar[I_NULL]; -const C_UNDEFINED = intToChar[I_UNDEFINED]; -const C_FLOAT = intToChar[I_FLOAT]; -const C_REGEXP = intToChar[I_REGEXP]; -const C_DATE = intToChar[I_DATE]; -const C_REFERENCE = intToChar[I_REFERENCE]; -const C_OBJECT_SMALL = intToChar[I_OBJECT_SMALL]; -const C_OBJECT_LARGE = intToChar[I_OBJECT_LARGE]; -const C_ARRAY_SMALL = intToChar[I_ARRAY_SMALL]; -const C_ARRAY_LARGE = intToChar[I_ARRAY_LARGE]; -const C_SET_SMALL = intToChar[I_SET_SMALL]; -const C_SET_LARGE = intToChar[I_SET_LARGE]; -const C_MAP_SMALL = intToChar[I_MAP_SMALL]; -const C_MAP_LARGE = intToChar[I_MAP_LARGE]; -const C_ARRAYBUFFER = intToChar[I_ARRAYBUFFER]; -const C_INT8ARRAY = intToChar[I_INT8ARRAY]; -const C_UINT8ARRAY = intToChar[I_UINT8ARRAY]; -const C_UINT8CLAMPEDARRAY = intToChar[I_UINT8CLAMPEDARRAY]; -const C_INT16ARRAY = intToChar[I_INT16ARRAY]; -const C_UINT16ARRAY = intToChar[I_UINT16ARRAY]; -const C_INT32ARRAY = intToChar[I_INT32ARRAY]; -const C_UINT32ARRAY = intToChar[I_UINT32ARRAY]; -const C_FLOAT32ARRAY = intToChar[I_FLOAT32ARRAY]; -const C_FLOAT64ARRAY = intToChar[I_FLOAT64ARRAY]; -const C_DATAVIEW = intToChar[I_DATAVIEW]; - -// Just reuse already defined constants, we just need distinct values -const I_STRING = I_STRING_SMALL; -const I_NUMBER = I_FLOAT; -const I_BOOL = I_BOOL_FALSE; -const I_OBJECT = I_OBJECT_SMALL; -const I_ARRAY = I_ARRAY_SMALL; -const I_SET = I_SET_SMALL; -const I_MAP = I_MAP_SMALL; - -const typeToSerializedInt = { - 'string': I_STRING, - 'number': I_NUMBER, - 'boolean': I_BOOL, - 'object': I_OBJECT, -}; - -const xtypeToSerializedInt = { - '[object RegExp]': I_REGEXP, - '[object Date]': I_DATE, - '[object Array]': I_ARRAY, - '[object Set]': I_SET, - '[object Map]': I_MAP, - '[object ArrayBuffer]': I_ARRAYBUFFER, - '[object Int8Array]': I_INT8ARRAY, - '[object Uint8Array]': I_UINT8ARRAY, - '[object Uint8ClampedArray]': I_UINT8CLAMPEDARRAY, - '[object Int16Array]': I_INT16ARRAY, - '[object Uint16Array]': I_UINT16ARRAY, - '[object Int32Array]': I_INT32ARRAY, - '[object Uint32Array]': I_UINT32ARRAY, - '[object Float32Array]': I_FLOAT32ARRAY, - '[object Float64Array]': I_FLOAT64ARRAY, - '[object DataView]': I_DATAVIEW, -}; - -const xtypeToSerializedChar = { - '[object Int8Array]': C_INT8ARRAY, - '[object Uint8Array]': C_UINT8ARRAY, - '[object Uint8ClampedArray]': C_UINT8CLAMPEDARRAY, - '[object Int16Array]': C_INT16ARRAY, - '[object Uint16Array]': C_UINT16ARRAY, - '[object Int32Array]': C_INT32ARRAY, - '[object Uint32Array]': C_UINT32ARRAY, - '[object Float32Array]': C_FLOAT32ARRAY, - '[object Float64Array]': C_FLOAT64ARRAY, -}; - -const toArrayBufferViewConstructor = { - [`${I_INT8ARRAY}`]: Int8Array, - [`${I_UINT8ARRAY}`]: Uint8Array, - [`${I_UINT8CLAMPEDARRAY}`]: Uint8ClampedArray, - [`${I_INT16ARRAY}`]: Int16Array, - [`${I_UINT16ARRAY}`]: Uint16Array, - [`${I_INT32ARRAY}`]: Int32Array, - [`${I_UINT32ARRAY}`]: Uint32Array, - [`${I_FLOAT32ARRAY}`]: Float32Array, - [`${I_FLOAT64ARRAY}`]: Float64Array, - [`${I_DATAVIEW}`]: DataView, -}; - -/******************************************************************************/ - -const textDecoder = new TextDecoder(); -const textEncoder = new TextEncoder(); -const isInteger = Number.isInteger; - -const writeRefs = new Map(); -const writeBuffer = []; - -const readRefs = new Map(); -let readStr = ''; -let readPtr = 0; -let readEnd = 0; - -let refCounter = 1; - -let uint8Input = null; - -const uint8InputFromAsciiStr = s => { - if ( uint8Input === null || uint8Input.length < s.length ) { - uint8Input = new Uint8Array(s.length + 0x03FF & ~0x03FF); - } - textEncoder.encodeInto(s, uint8Input); - return uint8Input; -}; - -const isInstanceOf = (o, s) => { - return typeof o === 'object' && o !== null && ( - s === 'Object' || Object.prototype.toString.call(o) === `[object ${s}]` - ); -}; - -const shouldCompress = (s, options) => - options.compress === true && ( - options.compressThreshold === undefined || - options.compressThreshold <= s.length - ); - -const hasOwnProperty = (o, p) => - Object.prototype.hasOwnProperty.call(o, p); - -/******************************************************************************* - * - * A large Uint is always a positive integer (can be zero), assumed to be - * large, i.e. > NUMSAFECHARS -- but not necessarily. The serialized value has - * always at least one digit, and is always followed by a separator. - * - * */ - -const strFromLargeUint = i => { - let r = 0, s = ''; - for (;;) { - r = i % NUMSAFECHARS; - s += intToChar[r]; - i -= r; - if ( i === 0 ) { break; } - i /= NUMSAFECHARS; - } - return s + SEPARATORCHAR; -}; - -const deserializeLargeUint = ( ) => { - let c = readStr.charCodeAt(readPtr++); - let n = charCodeToInt[c]; - let m = 1; - while ( (c = readStr.charCodeAt(readPtr++)) !== SEPARATORCHARCODE ) { - m *= NUMSAFECHARS; - n += m * charCodeToInt[c]; - } - return n; -}; - -/******************************************************************************* - * - * Methods specific to ArrayBuffer objects to serialize optimally according to - * the content of the buffer. - * - * In sparse mode, number of output bytes per input int32 (4-byte) value: - * [v === zero]: 1 byte (separator) - * [v !== zero]: n digits + 1 byte (separator) - * - * */ - -const sparseValueLen = v => v !== 0 - ? (Math.log2(v) / BITS_PER_SAFECHARS | 0) + 2 - : 1; - -const analyzeArrayBuffer = arrbuf => { - const byteLength = arrbuf.byteLength; - const uint32len = byteLength >>> 2; - const uint32arr = new Uint32Array(arrbuf, 0, uint32len); - let notzeroCount = 0; - for ( let i = uint32len-1; i >= 0; i-- ) { - if ( uint32arr[i] === 0 ) { continue; } - notzeroCount = i + 1; - break; - } - const end = notzeroCount + 1 <= uint32len ? notzeroCount << 2 : byteLength; - const endUint32 = end >>> 2; - const remUint8 = end & 0b11; - const denseSize = endUint32 * 5 + (remUint8 ? remUint8 + 1 : 0); - let sparseSize = 0; - for ( let i = 0; i < endUint32; i++ ) { - sparseSize += sparseValueLen(uint32arr[i]); - if ( sparseSize > denseSize ) { - return { end, dense: true, denseSize }; - } - } - if ( remUint8 !== 0 ) { - sparseSize += 1; // sentinel - const uint8arr = new Uint8Array(arrbuf, endUint32 << 2); - for ( let i = 0; i < remUint8; i++ ) { - sparseSize += sparseValueLen(uint8arr[i]); - } - } - return { end, dense: false, sparseSize }; -}; - -const denseArrayBufferToStr = (arrbuf, details) => { - const end = details.end; - const m = end % 4; - const n = end - m; - const uin32len = n >>> 2; - const uint32arr = new Uint32Array(arrbuf, 0, uin32len); - const output = new Uint8Array(details.denseSize); - let j = 0, v = 0; - for ( let i = 0; i < uin32len; i++ ) { - v = uint32arr[i]; - output[j+0] = intToCharCode[v % NUMSAFECHARS]; - v = v / NUMSAFECHARS | 0; - output[j+1] = intToCharCode[v % NUMSAFECHARS]; - v = v / NUMSAFECHARS | 0; - output[j+2] = intToCharCode[v % NUMSAFECHARS]; - v = v / NUMSAFECHARS | 0; - output[j+3] = intToCharCode[v % NUMSAFECHARS]; - v = v / NUMSAFECHARS | 0; - output[j+4] = intToCharCode[v]; - j += 5; - } - if ( m !== 0 ) { - const uint8arr = new Uint8Array(arrbuf, n); - v = uint8arr[0]; - if ( m > 1 ) { - v += uint8arr[1] << 8; - if ( m > 2 ) { - v += uint8arr[2] << 16; - } - } - output[j+0] = intToCharCode[v % NUMSAFECHARS]; - v = v / NUMSAFECHARS | 0; - output[j+1] = intToCharCode[v % NUMSAFECHARS]; - if ( m > 1 ) { - v = v / NUMSAFECHARS | 0; - output[j+2] = intToCharCode[v % NUMSAFECHARS]; - if ( m > 2 ) { - v = v / NUMSAFECHARS | 0; - output[j+3] = intToCharCode[v % NUMSAFECHARS]; - } - } - } - return textDecoder.decode(output); -}; - -const BASE88_POW1 = NUMSAFECHARS; -const BASE88_POW2 = NUMSAFECHARS * BASE88_POW1; -const BASE88_POW3 = NUMSAFECHARS * BASE88_POW2; -const BASE88_POW4 = NUMSAFECHARS * BASE88_POW3; - -const denseArrayBufferFromStr = (denseStr, arrbuf) => { - const input = uint8InputFromAsciiStr(denseStr); - const end = denseStr.length; - const m = end % 5; - const n = end - m; - const uin32len = n / 5 * 4 >>> 2; - const uint32arr = new Uint32Array(arrbuf, 0, uin32len); - let j = 0, v = 0; - for ( let i = 0; i < n; i += 5 ) { - v = charCodeToInt[input[i+0]]; - v += charCodeToInt[input[i+1]] * BASE88_POW1; - v += charCodeToInt[input[i+2]] * BASE88_POW2; - v += charCodeToInt[input[i+3]] * BASE88_POW3; - v += charCodeToInt[input[i+4]] * BASE88_POW4; - uint32arr[j++] = v; - } - if ( m === 0 ) { return; } - v = charCodeToInt[input[n+0]] + - charCodeToInt[input[n+1]] * BASE88_POW1; - if ( m > 2 ) { - v += charCodeToInt[input[n+2]] * BASE88_POW2; - if ( m > 3 ) { - v += charCodeToInt[input[n+3]] * BASE88_POW3; - } - } - const uint8arr = new Uint8Array(arrbuf, j << 2); - uint8arr[0] = v & 255; - if ( v !== 0 ) { - v >>>= 8; - uint8arr[1] = v & 255; - if ( v !== 0 ) { - v >>>= 8; - uint8arr[2] = v & 255; - } - } -}; - -const sparseArrayBufferToStr = (arrbuf, details) => { - const end = details.end; - const uint8out = new Uint8Array(details.sparseSize); - const uint32len = end >>> 2; - const uint32arr = new Uint32Array(arrbuf, 0, uint32len); - let j = 0, n = 0, r = 0; - for ( let i = 0; i < uint32len; i++ ) { - n = uint32arr[i]; - if ( n !== 0 ) { - for (;;) { - r = n % NUMSAFECHARS; - uint8out[j++] = intToCharCode[r]; - n -= r; - if ( n === 0 ) { break; } - n /= NUMSAFECHARS; - } - } - uint8out[j++] = SEPARATORCHARCODE; - } - const uint8rem = end & 0b11; - if ( uint8rem !== 0 ) { - uint8out[j++] = SENTINELCHARCODE; - const uint8arr = new Uint8Array(arrbuf, end - uint8rem, uint8rem); - for ( let i = 0; i < uint8rem; i++ ) { - n = uint8arr[i]; - if ( n !== 0 ) { - for (;;) { - r = n % NUMSAFECHARS; - uint8out[j++] = intToCharCode[r]; - n -= r; - if ( n === 0 ) { break; } - n /= NUMSAFECHARS; - } - } - uint8out[j++] = SEPARATORCHARCODE; - } - } - return textDecoder.decode(uint8out); -}; - -const sparseArrayBufferFromStr = (sparseStr, arrbuf) => { - const sparseLen = sparseStr.length; - const input = uint8InputFromAsciiStr(sparseStr); - const end = arrbuf.byteLength; - const uint32len = end >>> 2; - const uint32arr = new Uint32Array(arrbuf, 0, uint32len); - let i = 0, j = 0, c = 0, n = 0, m = 0; - for ( ; j < sparseLen; i++ ) { - c = input[j++]; - if ( c === SEPARATORCHARCODE ) { continue; } - if ( c === SENTINELCHARCODE ) { break; } - n = charCodeToInt[c]; - m = 1; - for (;;) { - c = input[j++]; - if ( c === SEPARATORCHARCODE ) { break; } - m *= NUMSAFECHARS; - n += m * charCodeToInt[c]; - } - uint32arr[i] = n; - } - if ( c === SENTINELCHARCODE ) { - i <<= 2; - const uint8arr = new Uint8Array(arrbuf, i); - for ( ; j < sparseLen; i++ ) { - c = input[j++]; - if ( c === SEPARATORCHARCODE ) { continue; } - n = charCodeToInt[c]; - m = 1; - for (;;) { - c = input[j++]; - if ( c === SEPARATORCHARCODE ) { break; } - m *= NUMSAFECHARS; - n += m * charCodeToInt[c]; - } - uint8arr[i] = n; - } - } -}; - -/******************************************************************************/ - -const _serialize = data => { - // Primitive types - if ( data === 0 ) { - writeBuffer.push(C_ZERO); - return; - } - if ( data === null ) { - writeBuffer.push(C_NULL); - return; - } - if ( data === undefined ) { - writeBuffer.push(C_UNDEFINED); - return; - } - // Type name - switch ( typeToSerializedInt[typeof data] ) { - case I_STRING: { - const length = data.length; - if ( length < NUMSAFECHARS ) { - writeBuffer.push(C_STRING_SMALL + intToChar[length], data); - } else { - writeBuffer.push(C_STRING_LARGE + strFromLargeUint(length), data); - } - return; - } - case I_NUMBER: - if ( isInteger(data) ) { - if ( data >= NUMSAFECHARS ) { - writeBuffer.push(C_INTEGER_LARGE_POS + strFromLargeUint(data)); - } else if ( data > 0 ) { - writeBuffer.push(C_INTEGER_SMALL_POS + intToChar[data]); - } else if ( data > -NUMSAFECHARS ) { - writeBuffer.push(C_INTEGER_SMALL_NEG + intToChar[-data]); - } else { - writeBuffer.push(C_INTEGER_LARGE_NEG + strFromLargeUint(-data)); - } - } else { - const s = `${data}`; - writeBuffer.push(C_FLOAT + strFromLargeUint(s.length) + s); - } - return; - case I_BOOL: - writeBuffer.push(data ? C_BOOL_TRUE : C_BOOL_FALSE); - return; - case I_OBJECT: - break; - default: - return; - } - const xtypeName = Object.prototype.toString.call(data); - const xtypeInt = xtypeToSerializedInt[xtypeName]; - if ( xtypeInt === I_REGEXP ) { - writeBuffer.push(C_REGEXP); - _serialize(data.source); - _serialize(data.flags); - return; - } - if ( xtypeInt === I_DATE ) { - writeBuffer.push(C_DATE); - _serialize(data.getTime()); - return; - } - // Reference to composite types - const ref = writeRefs.get(data); - if ( ref !== undefined ) { - writeBuffer.push(C_REFERENCE + strFromLargeUint(ref)); - return; - } - // Remember reference - writeRefs.set(data, refCounter++); - // Extended type name - switch ( xtypeInt ) { - case I_ARRAY: { - const size = data.length; - if ( size < NUMSAFECHARS ) { - writeBuffer.push(C_ARRAY_SMALL + intToChar[size]); - } else { - writeBuffer.push(C_ARRAY_LARGE + strFromLargeUint(size)); - } - for ( const v of data ) { - _serialize(v); - } - return; - } - case I_SET: { - const size = data.size; - if ( size < NUMSAFECHARS ) { - writeBuffer.push(C_SET_SMALL + intToChar[size]); - } else { - writeBuffer.push(C_SET_LARGE + strFromLargeUint(size)); - } - for ( const v of data ) { - _serialize(v); - } - return; - } - case I_MAP: { - const size = data.size; - if ( size < NUMSAFECHARS ) { - writeBuffer.push(C_MAP_SMALL + intToChar[size]); - } else { - writeBuffer.push(C_MAP_LARGE + strFromLargeUint(size)); - } - for ( const [ k, v ] of data ) { - _serialize(k); - _serialize(v); - } - return; - } - case I_ARRAYBUFFER: { - const byteLength = data.byteLength; - writeBuffer.push(C_ARRAYBUFFER + strFromLargeUint(byteLength)); - _serialize(data.maxByteLength); - const arrbuffDetails = analyzeArrayBuffer(data); - _serialize(arrbuffDetails.dense); - const str = arrbuffDetails.dense - ? denseArrayBufferToStr(data, arrbuffDetails) - : sparseArrayBufferToStr(data, arrbuffDetails); - _serialize(str); - //console.log(`arrbuf size=${byteLength} content size=${arrbuffDetails.end} dense=${arrbuffDetails.dense} array size=${arrbuffDetails.dense ? arrbuffDetails.denseSize : arrbuffDetails.sparseSize} serialized size=${str.length}`); - return; - } - case I_INT8ARRAY: - case I_UINT8ARRAY: - case I_UINT8CLAMPEDARRAY: - case I_INT16ARRAY: - case I_UINT16ARRAY: - case I_INT32ARRAY: - case I_UINT32ARRAY: - case I_FLOAT32ARRAY: - case I_FLOAT64ARRAY: - writeBuffer.push( - xtypeToSerializedChar[xtypeName], - strFromLargeUint(data.byteOffset), - strFromLargeUint(data.length) - ); - _serialize(data.buffer); - return; - case I_DATAVIEW: - writeBuffer.push(C_DATAVIEW, strFromLargeUint(data.byteOffset), strFromLargeUint(data.byteLength)); - _serialize(data.buffer); - return; - default: { - const keys = Object.keys(data); - const size = keys.length; - if ( size < NUMSAFECHARS ) { - writeBuffer.push(C_OBJECT_SMALL + intToChar[size]); - } else { - writeBuffer.push(C_OBJECT_LARGE + strFromLargeUint(size)); - } - for ( const key of keys ) { - _serialize(key); - _serialize(data[key]); - } - break; - } - } -}; - -/******************************************************************************/ - -const _deserialize = ( ) => { - if ( readPtr >= readEnd ) { return; } - const type = charCodeToInt[readStr.charCodeAt(readPtr++)]; - switch ( type ) { - // Primitive types - case I_STRING_SMALL: - case I_STRING_LARGE: { - const size = type === I_STRING_SMALL - ? charCodeToInt[readStr.charCodeAt(readPtr++)] - : deserializeLargeUint(); - const beg = readPtr; - readPtr += size; - return readStr.slice(beg, readPtr); - } - case I_ZERO: - return 0; - case I_INTEGER_SMALL_POS: - return charCodeToInt[readStr.charCodeAt(readPtr++)]; - case I_INTEGER_SMALL_NEG: - return -charCodeToInt[readStr.charCodeAt(readPtr++)]; - case I_INTEGER_LARGE_POS: - return deserializeLargeUint(); - case I_INTEGER_LARGE_NEG: - return -deserializeLargeUint(); - case I_BOOL_FALSE: - return false; - case I_BOOL_TRUE: - return true; - case I_NULL: - return null; - case I_UNDEFINED: - return; - case I_FLOAT: { - const size = deserializeLargeUint(); - const beg = readPtr; - readPtr += size; - return parseFloat(readStr.slice(beg, readPtr)); - } - case I_REGEXP: { - const source = _deserialize(); - const flags = _deserialize(); - return new RegExp(source, flags); - } - case I_DATE: { - const time = _deserialize(); - return new Date(time); - } - case I_REFERENCE: { - const ref = deserializeLargeUint(); - return readRefs.get(ref); - } - case I_OBJECT_SMALL: - case I_OBJECT_LARGE: { - const out = {}; - readRefs.set(refCounter++, out); - const entries = []; - const size = type === I_OBJECT_SMALL - ? charCodeToInt[readStr.charCodeAt(readPtr++)] - : deserializeLargeUint(); - for ( let i = 0; i < size; i++ ) { - const k = _deserialize(); - const v = _deserialize(); - entries.push([ k, v ]); - } - Object.assign(out, Object.fromEntries(entries)); - return out; - } - case I_ARRAY_SMALL: - case I_ARRAY_LARGE: { - const out = []; - readRefs.set(refCounter++, out); - const size = type === I_ARRAY_SMALL - ? charCodeToInt[readStr.charCodeAt(readPtr++)] - : deserializeLargeUint(); - for ( let i = 0; i < size; i++ ) { - out.push(_deserialize()); - } - return out; - } - case I_SET_SMALL: - case I_SET_LARGE: { - const out = new Set(); - readRefs.set(refCounter++, out); - const size = type === I_SET_SMALL - ? charCodeToInt[readStr.charCodeAt(readPtr++)] - : deserializeLargeUint(); - for ( let i = 0; i < size; i++ ) { - out.add(_deserialize()); - } - return out; - } - case I_MAP_SMALL: - case I_MAP_LARGE: { - const out = new Map(); - readRefs.set(refCounter++, out); - const size = type === I_MAP_SMALL - ? charCodeToInt[readStr.charCodeAt(readPtr++)] - : deserializeLargeUint(); - for ( let i = 0; i < size; i++ ) { - const k = _deserialize(); - const v = _deserialize(); - out.set(k, v); - } - return out; - } - case I_ARRAYBUFFER: { - const byteLength = deserializeLargeUint(); - const maxByteLength = _deserialize(); - let options; - if ( maxByteLength !== 0 && maxByteLength !== byteLength ) { - options = { maxByteLength }; - } - const arrbuf = new ArrayBuffer(byteLength, options); - const dense = _deserialize(); - const str = _deserialize(); - if ( dense ) { - denseArrayBufferFromStr(str, arrbuf); - } else { - sparseArrayBufferFromStr(str, arrbuf); - } - readRefs.set(refCounter++, arrbuf); - return arrbuf; - } - case I_INT8ARRAY: - case I_UINT8ARRAY: - case I_UINT8CLAMPEDARRAY: - case I_INT16ARRAY: - case I_UINT16ARRAY: - case I_INT32ARRAY: - case I_UINT32ARRAY: - case I_FLOAT32ARRAY: - case I_FLOAT64ARRAY: - case I_DATAVIEW: { - const byteOffset = deserializeLargeUint(); - const length = deserializeLargeUint(); - const arrayBuffer = _deserialize(); - const ctor = toArrayBufferViewConstructor[`${type}`]; - const out = new ctor(arrayBuffer, byteOffset, length); - readRefs.set(refCounter++, out); - return out; - } - default: - break; - } - readPtr = FAILMARK; -}; - -/******************************************************************************* - * - * LZ4 block compression/decompression - * - * Imported from: - * https://github.com/gorhill/lz4-wasm/blob/8995cdef7b/dist/lz4-block-codec-js.js - * - * Customized to avoid external dependencies as I entertain the idea of - * spinning off the serializer as a standalone utility for all to use. - * - * */ - -class LZ4BlockJS { - constructor() { - this.hashTable = undefined; - this.outputBuffer = undefined; - } - reset() { - this.hashTable = undefined; - this.outputBuffer = undefined; - } - growOutputBuffer(size) { - if ( this.outputBuffer !== undefined ) { - if ( this.outputBuffer.byteLength >= size ) { return; } - } - this.outputBuffer = new ArrayBuffer(size + 0xFFFF & 0x7FFF0000); - } - encodeBound(size) { - return size > 0x7E000000 ? 0 : size + (size / 255 | 0) + 16; - } - encodeBlock(iBuf, oOffset) { - const iLen = iBuf.byteLength; - if ( iLen >= 0x7E000000 ) { throw new RangeError(); } - // "The last match must start at least 12 bytes before end of block" - const lastMatchPos = iLen - 12; - // "The last 5 bytes are always literals" - const lastLiteralPos = iLen - 5; - if ( this.hashTable === undefined ) { - this.hashTable = new Int32Array(65536); - } - this.hashTable.fill(-65536); - if ( isInstanceOf(iBuf, 'ArrayBuffer') ) { - iBuf = new Uint8Array(iBuf); - } - const oLen = oOffset + this.encodeBound(iLen); - this.growOutputBuffer(oLen); - const oBuf = new Uint8Array(this.outputBuffer, 0, oLen); - let iPos = 0; - let oPos = oOffset; - let anchorPos = 0; - // sequence-finding loop - for (;;) { - let refPos; - let mOffset; - let sequence = iBuf[iPos] << 8 | iBuf[iPos+1] << 16 | iBuf[iPos+2] << 24; - // match-finding loop - while ( iPos <= lastMatchPos ) { - sequence = sequence >>> 8 | iBuf[iPos+3] << 24; - const hash = (sequence * 0x9E37 & 0xFFFF) + (sequence * 0x79B1 >>> 16) & 0xFFFF; - refPos = this.hashTable[hash]; - this.hashTable[hash] = iPos; - mOffset = iPos - refPos; - if ( - mOffset < 65536 && - iBuf[refPos+0] === ((sequence ) & 0xFF) && - iBuf[refPos+1] === ((sequence >>> 8) & 0xFF) && - iBuf[refPos+2] === ((sequence >>> 16) & 0xFF) && - iBuf[refPos+3] === ((sequence >>> 24) & 0xFF) - ) { - break; - } - iPos += 1; - } - // no match found - if ( iPos > lastMatchPos ) { break; } - // match found - let lLen = iPos - anchorPos; - let mLen = iPos; - iPos += 4; refPos += 4; - while ( iPos < lastLiteralPos && iBuf[iPos] === iBuf[refPos] ) { - iPos += 1; refPos += 1; - } - mLen = iPos - mLen; - const token = mLen < 19 ? mLen - 4 : 15; - // write token, length of literals if needed - if ( lLen >= 15 ) { - oBuf[oPos++] = 0xF0 | token; - let l = lLen - 15; - while ( l >= 255 ) { - oBuf[oPos++] = 255; - l -= 255; - } - oBuf[oPos++] = l; - } else { - oBuf[oPos++] = (lLen << 4) | token; - } - // write literals - while ( lLen-- ) { - oBuf[oPos++] = iBuf[anchorPos++]; - } - if ( mLen === 0 ) { break; } - // write offset of match - oBuf[oPos+0] = mOffset; - oBuf[oPos+1] = mOffset >>> 8; - oPos += 2; - // write length of match if needed - if ( mLen >= 19 ) { - let l = mLen - 19; - while ( l >= 255 ) { - oBuf[oPos++] = 255; - l -= 255; - } - oBuf[oPos++] = l; - } - anchorPos = iPos; - } - // last sequence is literals only - let lLen = iLen - anchorPos; - if ( lLen >= 15 ) { - oBuf[oPos++] = 0xF0; - let l = lLen - 15; - while ( l >= 255 ) { - oBuf[oPos++] = 255; - l -= 255; - } - oBuf[oPos++] = l; - } else { - oBuf[oPos++] = lLen << 4; - } - while ( lLen-- ) { - oBuf[oPos++] = iBuf[anchorPos++]; - } - return new Uint8Array(oBuf.buffer, 0, oPos); - } - decodeBlock(iBuf, iOffset, oLen) { - const iLen = iBuf.byteLength; - this.growOutputBuffer(oLen); - const oBuf = new Uint8Array(this.outputBuffer, 0, oLen); - let iPos = iOffset, oPos = 0; - while ( iPos < iLen ) { - const token = iBuf[iPos++]; - // literals - let clen = token >>> 4; - // length of literals - if ( clen !== 0 ) { - if ( clen === 15 ) { - let l; - for (;;) { - l = iBuf[iPos++]; - if ( l !== 255 ) { break; } - clen += 255; - } - clen += l; - } - // copy literals - const end = iPos + clen; - while ( iPos < end ) { - oBuf[oPos++] = iBuf[iPos++]; - } - if ( iPos === iLen ) { break; } - } - // match - const mOffset = iBuf[iPos+0] | (iBuf[iPos+1] << 8); - if ( mOffset === 0 || mOffset > oPos ) { return; } - iPos += 2; - // length of match - clen = (token & 0x0F) + 4; - if ( clen === 19 ) { - let l; - for (;;) { - l = iBuf[iPos++]; - if ( l !== 255 ) { break; } - clen += 255; - } - clen += l; - } - // copy match - const end = oPos + clen; - let mPos = oPos - mOffset; - while ( oPos < end ) { - oBuf[oPos++] = oBuf[mPos++]; - } - } - return oBuf; - } - encode(input, outputOffset) { - if ( isInstanceOf(input, 'ArrayBuffer') ) { - input = new Uint8Array(input); - } else if ( isInstanceOf(input, 'Uint8Array') === false ) { - throw new TypeError(); - } - return this.encodeBlock(input, outputOffset); - } - decode(input, inputOffset, outputSize) { - if ( isInstanceOf(input, 'ArrayBuffer') ) { - input = new Uint8Array(input); - } else if ( isInstanceOf(input, 'Uint8Array') === false ) { - throw new TypeError(); - } - return this.decodeBlock(input, inputOffset, outputSize); - } -} - -/******************************************************************************* - * - * Synchronous APIs - * - * */ - -export const serialize = (data, options = {}) => { - refCounter = 1; - _serialize(data); - writeBuffer.unshift(MAGICPREFIX); - const s = writeBuffer.join(''); - writeRefs.clear(); - writeBuffer.length = 0; - if ( shouldCompress(s, options) === false ) { return s; } - const lz4Util = new LZ4BlockJS(); - const uint8ArrayBefore = textEncoder.encode(s); - const uint8ArrayAfter = lz4Util.encode(uint8ArrayBefore, 0); - const lz4 = { - size: uint8ArrayBefore.length, - data: new Uint8Array(uint8ArrayAfter), - }; - refCounter = 1; - _serialize(lz4); - writeBuffer.unshift(MAGICLZ4PREFIX); - const t = writeBuffer.join(''); - writeRefs.clear(); - writeBuffer.length = 0; - const ratio = t.length / s.length; - return ratio <= 0.85 ? t : s; -}; - -export const deserialize = s => { - if ( s.startsWith(MAGICLZ4PREFIX) ) { - refCounter = 1; - readStr = s; - readEnd = s.length; - readPtr = MAGICLZ4PREFIX.length; - const lz4 = _deserialize(); - readRefs.clear(); - readStr = ''; - const lz4Util = new LZ4BlockJS(); - const uint8ArrayAfter = lz4Util.decode(lz4.data, 0, lz4.size); - s = textDecoder.decode(new Uint8Array(uint8ArrayAfter)); - } - if ( s.startsWith(MAGICPREFIX) === false ) { return; } - refCounter = 1; - readStr = s; - readEnd = s.length; - readPtr = MAGICPREFIX.length; - const data = _deserialize(); - readRefs.clear(); - readStr = ''; - uint8Input = null; - if ( readPtr === FAILMARK ) { return; } - return data; -}; - -export const isSerialized = s => - typeof s === 'string' && - (s.startsWith(MAGICLZ4PREFIX) || s.startsWith(MAGICPREFIX)); - -export const isCompressed = s => - typeof s === 'string' && s.startsWith(MAGICLZ4PREFIX); - -/******************************************************************************* - * - * Configuration - * - * */ - -const defaultConfig = { - threadTTL: 3000, -}; - -const validateConfig = { - threadTTL: val => val > 0, -}; - -const currentConfig = Object.assign({}, defaultConfig); - -export const getConfig = ( ) => Object.assign({}, currentConfig); - -export const setConfig = config => { - for ( const key in Object.keys(config) ) { - if ( hasOwnProperty(defaultConfig, key) === false ) { continue; } - const val = config[key]; - if ( typeof val !== typeof defaultConfig[key] ) { continue; } - if ( (validateConfig[key])(val) === false ) { continue; } - currentConfig[key] = val; - } -}; - -/******************************************************************************* - * - * Asynchronous APIs - * - * Being asynchronous allows to support workers and future features such as - * checksums. - * - * */ - -const THREAD_AREYOUREADY = 1; -const THREAD_IAMREADY = 2; -const THREAD_SERIALIZE = 3; -const THREAD_DESERIALIZE = 4; - -class MainThread { - constructor() { - this.name = 'main'; - this.jobs = []; - this.workload = 0; - this.timer = undefined; - this.busy = 2; - } - - process() { - if ( this.jobs.length === 0 ) { return; } - const job = this.jobs.shift(); - this.workload -= job.size; - const result = job.what === THREAD_SERIALIZE - ? serialize(job.data, job.options) - : deserialize(job.data); - job.resolve(result); - this.processAsync(); - if ( this.jobs.length === 0 ) { - this.busy = 2; - } else if ( this.busy > 2 ) { - this.busy -= 1; - } - } - - processAsync() { - if ( this.timer !== undefined ) { return; } - if ( this.jobs.length === 0 ) { return; } - this.timer = globalThis.requestIdleCallback(deadline => { - this.timer = undefined; - globalThis.queueMicrotask(( ) => { - this.process(); - }); - if ( deadline.timeRemaining() === 0 ) { - this.busy += 1; - } - }, { timeout: 5 }); - } - - serialize(data, options) { - return new Promise(resolve => { - this.workload += 1; - this.jobs.push({ what: THREAD_SERIALIZE, data, options, size: 1, resolve }); - this.processAsync(); - }); - } - - deserialize(data, options) { - return new Promise(resolve => { - const size = data.length; - this.workload += size; - this.jobs.push({ what: THREAD_DESERIALIZE, data, options, size, resolve }); - this.processAsync(); - }); - } - - get queueSize() { - return this.jobs.length; - } - - get workSize() { - return this.workload * this.busy; - } -} - -class Thread { - constructor(gcer) { - this.name = 'worker'; - this.jobs = new Map(); - this.jobIdGenerator = 1; - this.workload = 0; - this.workerAccessTime = 0; - this.workerTimer = undefined; - this.gcer = gcer; - this.workerPromise = new Promise(resolve => { - let worker = null; - try { - worker = new Worker('js/s14e-serializer.js', { type: 'module' }); - worker.onmessage = ev => { - const msg = ev.data; - if ( isInstanceOf(msg, 'Object') === false ) { return; } - if ( msg.what === THREAD_IAMREADY ) { - worker.onmessage = ev => { this.onmessage(ev); }; - worker.onerror = null; - resolve(worker); - } - }; - worker.onerror = ( ) => { - worker.onmessage = worker.onerror = null; - resolve(null); - }; - worker.postMessage({ - what: THREAD_AREYOUREADY, - config: currentConfig, - }); - } catch(ex) { - console.info(ex); - worker.onmessage = worker.onerror = null; - resolve(null); - } - }); - } - - countdownWorker() { - if ( this.workerTimer !== undefined ) { return; } - this.workerTimer = setTimeout(async ( ) => { - this.workerTimer = undefined; - if ( this.jobs.size !== 0 ) { return; } - const idleTime = Date.now() - this.workerAccessTime; - if ( idleTime < currentConfig.threadTTL ) { - return this.countdownWorker(); - } - const worker = await this.workerPromise; - if ( this.jobs.size !== 0 ) { return; } - this.gcer(this); - if ( worker === null ) { return; } - worker.onmessage = worker.onerror = null; - worker.terminate(); - }, currentConfig.threadTTL); - } - - onmessage(ev) { - this.ondone(ev.data); - } - - ondone(job) { - const resolve = this.jobs.get(job.id); - if ( resolve === undefined ) { return; } - this.jobs.delete(job.id); - resolve(job.result); - this.workload -= job.size; - if ( this.jobs.size !== 0 ) { return; } - this.countdownWorker(); - } - - async serialize(data, options) { - return new Promise(resolve => { - const id = this.jobIdGenerator++; - this.workload += 1; - this.jobs.set(id, resolve); - return this.workerPromise.then(worker => { - this.workerAccessTime = Date.now(); - if ( worker === null ) { - this.ondone({ id, result: serialize(data, options), size: 1 }); - } else { - worker.postMessage({ what: THREAD_SERIALIZE, id, data, options, size: 1 }); - } - }); - }); - } - - async deserialize(data, options) { - return new Promise(resolve => { - const id = this.jobIdGenerator++; - const size = data.length; - this.workload += size; - this.jobs.set(id, resolve); - return this.workerPromise.then(worker => { - this.workerAccessTime = Date.now(); - if ( worker === null ) { - this.ondone({ id, result: deserialize(data, options), size }); - } else { - worker.postMessage({ what: THREAD_DESERIALIZE, id, data, options, size }); - } - }); - }); - } - - get queueSize() { - return this.jobs.size; - } - - get workSize() { - return this.workload; - } -} - -const threads = { - pool: [ new MainThread() ], - thread(maxPoolSize) { - const poolSize = this.pool.length; - if ( poolSize !== 0 && poolSize >= maxPoolSize ) { - if ( poolSize === 1 ) { return this.pool[0]; } - return this.pool.reduce((a, b) => { - //console.log(`${a.name}: q=${a.queueSize} w=${a.workSize} ${b.name}: q=${b.queueSize} w=${b.workSize}`); - if ( b.queueSize === 0 ) { return b; } - if ( a.queueSize === 0 ) { return a; } - return b.workSize < a.workSize ? b : a; - }); - } - const thread = new Thread(thread => { - const pos = this.pool.indexOf(thread); - if ( pos === -1 ) { return; } - this.pool.splice(pos, 1); - }); - this.pool.push(thread); - return thread; - }, -}; - -export async function serializeAsync(data, options = {}) { - const maxThreadCount = options.multithreaded || 0; - if ( maxThreadCount === 0 ) { - return serialize(data, options); - } - const thread = threads.thread(maxThreadCount); - //console.log(`serializeAsync: thread=${thread.name} workload=${thread.workSize}`); - const result = await thread.serialize(data, options); - if ( result !== undefined ) { return result; } - return serialize(data, options); -} - -export async function deserializeAsync(data, options = {}) { - if ( isSerialized(data) === false ) { return data; } - const maxThreadCount = options.multithreaded || 0; - if ( maxThreadCount === 0 ) { - return deserialize(data, options); - } - const thread = threads.thread(maxThreadCount); - //console.log(`deserializeAsync: thread=${thread.name} data=${data.length} workload=${thread.workSize}`); - const result = await thread.deserialize(data, options); - if ( result !== undefined ) { return result; } - return deserialize(data, options); -} - -/******************************************************************************* - * - * Worker-only code - * - * */ - -if ( isInstanceOf(globalThis, 'DedicatedWorkerGlobalScope') ) { - globalThis.onmessage = ev => { - const msg = ev.data; - switch ( msg.what ) { - case THREAD_AREYOUREADY: - setConfig(msg.config); - globalThis.postMessage({ what: THREAD_IAMREADY }); - break; - case THREAD_SERIALIZE: { - const result = serialize(msg.data, msg.options); - globalThis.postMessage({ id: msg.id, size: msg.size, result }); - break; - } - case THREAD_DESERIALIZE: { - const result = deserialize(msg.data); - globalThis.postMessage({ id: msg.id, size: msg.size, result }); - break; - } - default: - break; - } - }; -} - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlet-filtering-core.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlet-filtering-core.js deleted file mode 100644 index 907844f..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlet-filtering-core.js +++ /dev/null @@ -1,302 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2017-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -import { redirectEngine as reng } from './redirect-engine.js'; -import { StaticExtFilteringHostnameDB } from './static-ext-filtering-db.js'; - -/******************************************************************************/ - -// Increment when internal representation changes -const VERSION = 1; - -const $scriptlets = new Set(); -const $exceptions = new Set(); -const $mainWorldMap = new Map(); -const $isolatedWorldMap = new Map(); - -/******************************************************************************/ - -const normalizeRawFilter = (parser, sourceIsTrusted = false) => { - const args = parser.getScriptletArgs(); - if ( args.length !== 0 ) { - let token = `${args[0]}.js`; - if ( reng.aliases.has(token) ) { - token = reng.aliases.get(token); - } - if ( parser.isException() !== true ) { - if ( sourceIsTrusted !== true ) { - if ( reng.tokenRequiresTrust(token) ) { return; } - } - } - args[0] = token.slice(0, -3); - } - return JSON.stringify(args); -}; - -const lookupScriptlet = (rawToken, mainMap, isolatedMap, debug = false) => { - if ( mainMap.has(rawToken) || isolatedMap.has(rawToken) ) { return; } - const args = JSON.parse(rawToken); - const token = `${args[0]}.js`; - const details = reng.contentFromName(token, 'text/javascript'); - if ( details === undefined ) { return; } - const targetWorldMap = details.world !== 'ISOLATED' ? mainMap : isolatedMap; - const content = patchScriptlet(details.js, args.slice(1)); - const dependencies = details.dependencies || []; - while ( dependencies.length !== 0 ) { - const token = dependencies.shift(); - if ( targetWorldMap.has(token) ) { continue; } - const details = reng.contentFromName(token, 'fn/javascript') || - reng.contentFromName(token, 'text/javascript'); - if ( details === undefined ) { continue; } - targetWorldMap.set(token, details.js); - if ( Array.isArray(details.dependencies) === false ) { continue; } - dependencies.push(...details.dependencies); - } - targetWorldMap.set(rawToken, [ - 'try {', - '// >>>> scriptlet start', - content, - '// <<<< scriptlet end', - '} catch (e) {', - debug ? 'console.error(e);' : '', - '}', - ].join('\n')); -}; - -// Fill-in scriptlet argument placeholders. -const patchScriptlet = (content, arglist) => { - if ( content.startsWith('function') && content.endsWith('}') ) { - content = `(${content})({{args}});`; - } - for ( let i = 0; i < arglist.length; i++ ) { - content = content.replace(`{{${i+1}}}`, arglist[i]); - } - return content.replace('{{args}}', - JSON.stringify(arglist).slice(1,-1).replace(/\$/g, '$$$') - ); -}; - -const requote = s => { - if ( /^(["'`]).+\1$|,/.test(s) === false ) { return s; } - if ( s.includes("'") === false ) { return `'${s}'`; } - if ( s.includes('"') === false ) { return `"${s}"`; } - if ( s.includes('`') === false ) { return `\`${s}\``; } - return `'${s.replace(/'/g, "\\'")}'`; -}; - -const decompile = json => { - const args = JSON.parse(json); - if ( args.length === 0 ) { return '+js()'; } - return `+js(${args.map(s => requote(s)).join(', ')})`; -}; - -/******************************************************************************/ - -export class ScriptletFilteringEngine { - constructor() { - this.acceptedCount = 0; - this.discardedCount = 0; - this.scriptletDB = new StaticExtFilteringHostnameDB(1, VERSION); - this.duplicates = new Set(); - } - - getFilterCount() { - return this.scriptletDB.size; - } - - reset() { - this.scriptletDB.clear(); - this.duplicates.clear(); - this.acceptedCount = 0; - this.discardedCount = 0; - } - - freeze() { - this.duplicates.clear(); - this.scriptletDB.collectGarbage(); - } - - // parser: instance of AstFilterParser from static-filtering-parser.js - // writer: instance of CompiledListWriter from static-filtering-io.js - compile(parser, writer) { - writer.select('SCRIPTLET_FILTERS'); - - // Only exception filters are allowed to be global. - const isException = parser.isException(); - const normalized = normalizeRawFilter(parser, writer.properties.get('trustedSource')); - - // Can fail if there is a mismatch with trust requirement - if ( normalized === undefined ) { return; } - - // Tokenless is meaningful only for exception filters. - if ( normalized === '[]' && isException === false ) { return; } - - if ( parser.hasOptions() === false ) { - if ( isException ) { - writer.push([ 32, '', 1, normalized ]); - } - return; - } - - // https://github.com/gorhill/uBlock/issues/3375 - // Ignore instances of exception filter with negated hostnames, - // because there is no way to create an exception to an exception. - - for ( const { hn, not, bad } of parser.getExtFilterDomainIterator() ) { - if ( bad ) { continue; } - let kind = 0; - if ( isException ) { - if ( not ) { continue; } - kind |= 1; - } else if ( not ) { - kind |= 1; - } - writer.push([ 32, hn, kind, normalized ]); - } - } - - // writer: instance of CompiledListReader from static-filtering-io.js - fromCompiledContent(reader) { - reader.select('SCRIPTLET_FILTERS'); - - while ( reader.next() ) { - this.acceptedCount += 1; - const fingerprint = reader.fingerprint(); - if ( this.duplicates.has(fingerprint) ) { - this.discardedCount += 1; - continue; - } - this.duplicates.add(fingerprint); - const args = reader.args(); - if ( args.length < 4 ) { continue; } - this.scriptletDB.store(args[1], args[2], args[3]); - } - } - - toSelfie() { - return this.scriptletDB.toSelfie(); - } - - fromSelfie(selfie) { - if ( typeof selfie !== 'object' || selfie === null ) { return false; } - if ( selfie.version !== VERSION ) { return false; } - this.scriptletDB.fromSelfie(selfie); - return true; - } - - retrieve(request, options = {}) { - if ( this.scriptletDB.size === 0 ) { return; } - - $scriptlets.clear(); - $exceptions.clear(); - - const { hostname } = request; - - this.scriptletDB.retrieve(hostname, [ $scriptlets, $exceptions ]); - const entity = request.entity !== '' - ? `${hostname.slice(0, -request.domain.length)}${request.entity}` - : '*'; - this.scriptletDB.retrieve(entity, [ $scriptlets, $exceptions ], 1); - if ( $scriptlets.size === 0 ) { return; } - - // Wholly disable scriptlet injection? - if ( $exceptions.has('[]') ) { - return { filters: '#@#+js()' }; - } - - for ( const token of $exceptions ) { - if ( $scriptlets.has(token) ) { - $scriptlets.delete(token); - } else { - $exceptions.delete(token); - } - } - - for ( const token of $scriptlets ) { - lookupScriptlet(token, $mainWorldMap, $isolatedWorldMap, options.debug); - } - - const mainWorldCode = []; - for ( const js of $mainWorldMap.values() ) { - mainWorldCode.push(js); - } - - const isolatedWorldCode = []; - for ( const js of $isolatedWorldMap.values() ) { - isolatedWorldCode.push(js); - } - - const scriptletDetails = { - mainWorld: mainWorldCode.join('\n\n'), - isolatedWorld: isolatedWorldCode.join('\n\n'), - filters: [ - ...Array.from($scriptlets).map(s => `##${decompile(s)}`), - ...Array.from($exceptions).map(s => `#@#${decompile(s)}`), - ].join('\n'), - }; - $mainWorldMap.clear(); - $isolatedWorldMap.clear(); - - const scriptletGlobals = options.scriptletGlobals || {}; - - if ( options.debug ) { - scriptletGlobals.canDebug = true; - } - - return { - mainWorld: scriptletDetails.mainWorld === '' ? '' : [ - '(function() {', - '// >>>> start of private namespace', - '', - options.debugScriptlets ? 'debugger;' : ';', - '', - // For use by scriptlets to share local data among themselves - `const scriptletGlobals = ${JSON.stringify(scriptletGlobals, null, 4)}`, - '', - scriptletDetails.mainWorld, - '', - '// <<<< end of private namespace', - '})();', - ].join('\n'), - isolatedWorld: scriptletDetails.isolatedWorld === '' ? '' : [ - 'function() {', - '// >>>> start of private namespace', - '', - options.debugScriptlets ? 'debugger;' : ';', - '', - // For use by scriptlets to share local data among themselves - `const scriptletGlobals = ${JSON.stringify(scriptletGlobals, null, 4)}`, - '', - scriptletDetails.isolatedWorld, - '', - '// <<<< end of private namespace', - '}', - ].join('\n'), - filters: scriptletDetails.filters, - }; - } -} - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlet-filtering.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlet-filtering.js deleted file mode 100644 index 98f2a64..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlet-filtering.js +++ /dev/null @@ -1,418 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2017-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/******************************************************************************/ - -import { - domainFromHostname, - entityFromDomain, - hostnameFromURI, -} from './uri-utils.js'; - -import { MRUCache } from './mrucache.js'; -import { ScriptletFilteringEngine } from './scriptlet-filtering-core.js'; - -import logger from './logger.js'; -import { onBroadcast } from './broadcast.js'; -import { redirectEngine as reng } from './redirect-engine.js'; -import { sessionFirewall } from './filtering-engines.js'; -import µb from './background.js'; - -/******************************************************************************/ - -const contentScriptRegisterer = new (class { - constructor() { - this.hostnameToDetails = new Map(); - } - register(hostname, code) { - if ( browser.contentScripts === undefined ) { return false; } - if ( hostname === '' ) { return false; } - const details = this.hostnameToDetails.get(hostname); - if ( details !== undefined ) { - if ( code === details.code ) { - return details.handle instanceof Promise === false; - } - details.handle.unregister(); - this.hostnameToDetails.delete(hostname); - } - const promise = browser.contentScripts.register({ - js: [ { code } ], - allFrames: true, - matches: [ `*://*.${hostname}/*` ], - matchAboutBlank: true, - runAt: 'document_start', - }).then(handle => { - this.hostnameToDetails.set(hostname, { handle, code }); - }).catch(( ) => { - this.hostnameToDetails.delete(hostname); - }); - this.hostnameToDetails.set(hostname, { handle: promise, code }); - return false; - } - unregister(hostname) { - if ( hostname === '' ) { return; } - if ( this.hostnameToDetails.size === 0 ) { return; } - const details = this.hostnameToDetails.get(hostname); - if ( details === undefined ) { return; } - this.hostnameToDetails.delete(hostname); - this.unregisterHandle(details.handle); - } - flush(hostname) { - if ( hostname === '' ) { return; } - if ( hostname === '*' ) { return this.reset(); } - for ( const hn of this.hostnameToDetails.keys() ) { - if ( hn.endsWith(hostname) === false ) { continue; } - const pos = hn.length - hostname.length; - if ( pos !== 0 && hn.charCodeAt(pos-1) !== 0x2E /* . */ ) { continue; } - this.unregister(hn); - } - } - reset() { - if ( this.hostnameToDetails.size === 0 ) { return; } - for ( const details of this.hostnameToDetails.values() ) { - this.unregisterHandle(details.handle); - } - this.hostnameToDetails.clear(); - } - unregisterHandle(handle) { - if ( handle instanceof Promise ) { - handle.then(handle => { handle.unregister(); }); - } else { - handle.unregister(); - } - } -})(); - -/******************************************************************************/ - -const mainWorldInjector = (( ) => { - const parts = [ - '(', - function(injector, details) { - if ( typeof self.uBO_scriptletsInjected === 'string' ) { return; } - const doc = document; - if ( doc.location === null ) { return; } - const hostname = doc.location.hostname; - if ( hostname !== '' && details.hostname !== hostname ) { return; } - injector(doc, details); - return 0; - }.toString(), - ')(', - vAPI.scriptletsInjector, ', ', - 'json-slot', - ');', - ]; - const jsonSlot = parts.indexOf('json-slot'); - return { - assemble: function(hostname, details) { - parts[jsonSlot] = JSON.stringify({ - hostname, - scriptlets: details.mainWorld, - filters: details.filters, - }); - return parts.join(''); - }, - }; -})(); - -const isolatedWorldInjector = (( ) => { - const parts = [ - '(', - function(details) { - if ( self.uBO_isolatedScriptlets === 'done' ) { return; } - const doc = document; - if ( doc.location === null ) { return; } - const hostname = doc.location.hostname; - if ( hostname !== '' && details.hostname !== hostname ) { return; } - const isolatedScriptlets = function(){}; - isolatedScriptlets(); - self.uBO_isolatedScriptlets = 'done'; - return 0; - }.toString(), - ')(', - 'json-slot', - ');', - ]; - const jsonSlot = parts.indexOf('json-slot'); - return { - assemble(hostname, details) { - parts[jsonSlot] = JSON.stringify({ hostname }); - const code = parts.join(''); - // Manually substitute noop function with scriptlet wrapper - // function, so as to not suffer instances of special - // replacement characters `$`,`\` when using String.replace() - // with scriptlet code. - const match = /function\(\)\{\}/.exec(code); - return code.slice(0, match.index) + - details.isolatedWorld + - code.slice(match.index + match[0].length); - }, - }; -})(); - -const onScriptletMessageInjector = (( ) => { - const parts = [ - '(', - function(name) { - if ( self.uBO_bcSecret ) { return; } - const bcSecret = new self.BroadcastChannel(name); - bcSecret.onmessage = ev => { - const msg = ev.data; - switch ( typeof msg ) { - case 'string': - if ( msg !== 'areyouready?' ) { break; } - bcSecret.postMessage('iamready!'); - break; - case 'object': - if ( self.vAPI && self.vAPI.messaging ) { - self.vAPI.messaging.send('contentscript', msg); - } else { - console.log(`[uBO][${msg.type}]${msg.text}`); - } - break; - } - }; - bcSecret.postMessage('iamready!'); - self.uBO_bcSecret = bcSecret; - }.toString(), - ')(', - 'bcSecret-slot', - ');', - ]; - const bcSecretSlot = parts.indexOf('bcSecret-slot'); - return { - assemble(details) { - parts[bcSecretSlot] = JSON.stringify(details.bcSecret); - return parts.join('\n'); - }, - }; -})(); - -/******************************************************************************/ - -export class ScriptletFilteringEngineEx extends ScriptletFilteringEngine { - constructor() { - super(); - this.warOrigin = vAPI.getURL('/web_accessible_resources'); - this.warSecret = undefined; - this.scriptletCache = new MRUCache(32); - this.isDevBuild = undefined; - this.logLevel = 1; - this.bc = onBroadcast(msg => { - switch ( msg.what ) { - case 'filteringBehaviorChanged': { - const direction = msg.direction || 0; - if ( direction > 0 ) { return; } - if ( direction >= 0 && msg.hostname ) { - return contentScriptRegisterer.flush(msg.hostname); - } - contentScriptRegisterer.reset(); - break; - } - case 'hiddenSettingsChanged': - this.isDevBuild = undefined; - /* fall through */ - case 'loggerEnabled': - case 'loggerDisabled': - this.clearCache(); - break; - case 'loggerLevelChanged': - this.logLevel = msg.level; - vAPI.tabs.query({ - discarded: false, - url: [ 'http://*/*', 'https://*/*' ], - }).then(tabs => { - for ( const tab of tabs ) { - const { status } = tab; - if ( status !== 'loading' && status !== 'complete' ) { continue; } - vAPI.tabs.executeScript(tab.id, { - allFrames: true, - file: `/js/scriptlets/scriptlet-loglevel-${this.logLevel}.js`, - matchAboutBlank: true, - }); - } - }); - this.clearCache(); - break; - } - }); - } - - reset() { - super.reset(); - this.warSecret = vAPI.warSecret.long(this.warSecret); - this.clearCache(); - } - - freeze() { - super.freeze(); - this.warSecret = vAPI.warSecret.long(this.warSecret); - this.clearCache(); - } - - clearCache() { - this.scriptletCache.reset(); - contentScriptRegisterer.reset(); - } - - retrieve(request) { - const { hostname } = request; - - // https://github.com/gorhill/uBlock/issues/2835 - // Do not inject scriptlets if the site is under an `allow` rule. - if ( µb.userSettings.advancedUserEnabled ) { - if ( sessionFirewall.evaluateCellZY(hostname, hostname, '*') === 2 ) { - return; - } - } - - if ( this.scriptletCache.resetTime < reng.modifyTime ) { - this.clearCache(); - } - - let scriptletDetails = this.scriptletCache.lookup(hostname); - if ( scriptletDetails !== undefined ) { - return scriptletDetails || undefined; - } - - if ( this.isDevBuild === undefined ) { - this.isDevBuild = vAPI.webextFlavor.soup.has('devbuild') || - µb.hiddenSettings.filterAuthorMode; - } - - if ( this.warSecret === undefined ) { - this.warSecret = vAPI.warSecret.long(); - } - - const bcSecret = vAPI.generateSecret(3); - - const options = { - scriptletGlobals: { - warOrigin: this.warOrigin, - warSecret: this.warSecret, - }, - debug: this.isDevBuild, - debugScriptlets: µb.hiddenSettings.debugScriptlets, - }; - if ( logger.enabled ) { - options.scriptletGlobals.bcSecret = bcSecret; - options.scriptletGlobals.logLevel = this.logLevel; - } - - scriptletDetails = super.retrieve(request, options); - - if ( scriptletDetails === undefined ) { - if ( request.nocache !== true ) { - this.scriptletCache.add(hostname, null); - } - return; - } - - const contentScript = []; - if ( scriptletDetails.mainWorld ) { - contentScript.push(mainWorldInjector.assemble(hostname, scriptletDetails)); - } - if ( scriptletDetails.isolatedWorld ) { - contentScript.push(isolatedWorldInjector.assemble(hostname, scriptletDetails)); - } - - const cachedScriptletDetails = { - bcSecret, - code: contentScript.join('\n\n'), - filters: scriptletDetails.filters, - }; - - if ( request.nocache !== true ) { - this.scriptletCache.add(hostname, cachedScriptletDetails); - } - - return cachedScriptletDetails; - } - - injectNow(details) { - if ( typeof details.frameId !== 'number' ) { return; } - - const hostname = hostnameFromURI(details.url); - const domain = domainFromHostname(hostname); - - const scriptletDetails = this.retrieve({ - tabId: details.tabId, - frameId: details.frameId, - url: details.url, - hostname, - domain, - entity: entityFromDomain(domain), - }); - if ( scriptletDetails === undefined ) { - contentScriptRegisterer.unregister(hostname); - return; - } - if ( Boolean(scriptletDetails.code) === false ) { - return scriptletDetails; - } - - const contentScript = [ scriptletDetails.code ]; - if ( logger.enabled ) { - contentScript.unshift( - onScriptletMessageInjector.assemble(scriptletDetails) - ); - } - if ( µb.hiddenSettings.debugScriptletInjector ) { - contentScript.unshift('debugger'); - } - const code = contentScript.join('\n\n'); - - const isAlreadyInjected = contentScriptRegisterer.register(hostname, code); - if ( isAlreadyInjected !== true ) { - vAPI.tabs.executeScript(details.tabId, { - code, - frameId: details.frameId, - matchAboutBlank: true, - runAt: 'document_start', - }); - } - return scriptletDetails; - } - - toLogger(request, details) { - if ( details === undefined ) { return; } - if ( logger.enabled !== true ) { return; } - if ( typeof details.filters !== 'string' ) { return; } - const fctxt = µb.filteringContext - .duplicate() - .fromTabId(request.tabId) - .setRealm('extended') - .setType('scriptlet') - .setURL(request.url) - .setDocOriginFromURL(request.url); - for ( const raw of details.filters.split('\n') ) { - fctxt.setFilter({ source: 'extended', raw }).toLogger(); - } - } -} - -/******************************************************************************/ - -const scriptletFilteringEngine = new ScriptletFilteringEngineEx(); - -export default scriptletFilteringEngine; - -/******************************************************************************/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/cosmetic-logger.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/cosmetic-logger.js deleted file mode 100644 index 5d1f1b9..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/cosmetic-logger.js +++ /dev/null @@ -1,365 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/* globals browser */ - -'use strict'; - -/******************************************************************************/ - -(( ) => { -// >>>>>>>> start of private namespace - -/******************************************************************************/ - -if ( typeof vAPI !== 'object' ) { return; } -if ( vAPI.domWatcher instanceof Object === false ) { return; } - -const reHasCSSCombinators = /[ >+~]/; -const simpleDeclarativeSet = new Set(); -let simpleDeclarativeStr; -const complexDeclarativeSet = new Set(); -let complexDeclarativeStr; -const proceduralDict = new Map(); -const exceptionDict = new Map(); -let exceptionStr; -const proceduralExceptionDict = new Map(); -const nodesToProcess = new Set(); -const loggedSelectors = new Set(); - -/******************************************************************************/ - -const rePseudoElements = /:(?::?after|:?before|:[a-z-]+)$/; - -function hasSelector(selector, context = document) { - try { - return context.querySelector(selector) !== null; - } - catch(ex) { - } - return false; -} - -function safeMatchSelector(selector, context) { - const safeSelector = rePseudoElements.test(selector) - ? selector.replace(rePseudoElements, '') - : selector; - try { - return context.matches(safeSelector); - } - catch(ex) { - } - return false; -} - -function safeQuerySelector(selector, context = document) { - const safeSelector = rePseudoElements.test(selector) - ? selector.replace(rePseudoElements, '') - : selector; - try { - return context.querySelector(safeSelector); - } - catch(ex) { - } - return null; -} - -function safeGroupSelectors(selectors) { - const arr = Array.isArray(selectors) - ? selectors - : Array.from(selectors); - return arr.map(s => { - return rePseudoElements.test(s) - ? s.replace(rePseudoElements, '') - : s; - }).join(',\n'); -} - -/******************************************************************************/ - -function processDeclarativeSimple(node, out) { - if ( simpleDeclarativeSet.size === 0 ) { return; } - if ( simpleDeclarativeStr === undefined ) { - simpleDeclarativeStr = safeGroupSelectors(simpleDeclarativeSet); - } - if ( - (node === document || node.matches(simpleDeclarativeStr) === false) && - (hasSelector(simpleDeclarativeStr, node) === false) - ) { - return; - } - for ( const selector of simpleDeclarativeSet ) { - if ( - (node === document || safeMatchSelector(selector, node) === false) && - (safeQuerySelector(selector, node) === null) - ) { - continue; - } - out.push(`##${selector}`); - simpleDeclarativeSet.delete(selector); - simpleDeclarativeStr = undefined; - loggedSelectors.add(selector); - } -} - -/******************************************************************************/ - -function processDeclarativeComplex(out) { - if ( complexDeclarativeSet.size === 0 ) { return; } - if ( complexDeclarativeStr === undefined ) { - complexDeclarativeStr = safeGroupSelectors(complexDeclarativeSet); - } - if ( hasSelector(complexDeclarativeStr) === false ) { return; } - for ( const selector of complexDeclarativeSet ) { - if ( safeQuerySelector(selector) === null ) { continue; } - out.push(`##${selector}`); - complexDeclarativeSet.delete(selector); - complexDeclarativeStr = undefined; - loggedSelectors.add(selector); - } -} - -/******************************************************************************/ - -function processProcedural(out) { - if ( proceduralDict.size === 0 ) { return; } - for ( const [ raw, pselector ] of proceduralDict ) { - if ( pselector.converted ) { - if ( safeQuerySelector(pselector.selector) === null ) { continue; } - } else if ( pselector.hit === false && pselector.exec().length === 0 ) { - continue; - } - out.push(`##${raw}`); - proceduralDict.delete(raw); - } -} - -/******************************************************************************/ - -function processExceptions(out) { - if ( exceptionDict.size === 0 ) { return; } - if ( exceptionStr === undefined ) { - exceptionStr = safeGroupSelectors(exceptionDict.keys()); - } - if ( hasSelector(exceptionStr) === false ) { return; } - for ( const [ selector, raw ] of exceptionDict ) { - if ( safeQuerySelector(selector) === null ) { continue; } - out.push(`#@#${raw}`); - exceptionDict.delete(selector); - exceptionStr = undefined; - loggedSelectors.add(raw); - } -} - -/******************************************************************************/ - -function processProceduralExceptions(out) { - if ( proceduralExceptionDict.size === 0 ) { return; } - for ( const exception of proceduralExceptionDict.values() ) { - if ( exception.test() === false ) { continue; } - out.push(`#@#${exception.raw}`); - proceduralExceptionDict.delete(exception.raw); - } -} - -/******************************************************************************/ - -const processTimer = new vAPI.SafeAnimationFrame(( ) => { - //console.time('dom logger/scanning for matches'); - processTimer.clear(); - if ( nodesToProcess.size === 0 ) { return; } - - if ( nodesToProcess.size !== 1 && nodesToProcess.has(document) ) { - nodesToProcess.clear(); - nodesToProcess.add(document); - } - - const toLog = []; - if ( simpleDeclarativeSet.size !== 0 ) { - for ( const node of nodesToProcess ) { - processDeclarativeSimple(node, toLog); - } - } - - processDeclarativeComplex(toLog); - processProcedural(toLog); - processExceptions(toLog); - processProceduralExceptions(toLog); - - nodesToProcess.clear(); - - if ( toLog.length === 0 ) { return; } - - const location = vAPI.effectiveSelf.location; - - vAPI.messaging.send('scriptlets', { - what: 'logCosmeticFilteringData', - frameURL: location.href, - frameHostname: location.hostname, - matchedSelectors: toLog, - }); - //console.timeEnd('dom logger/scanning for matches'); -}); - -/******************************************************************************/ - -const attributeObserver = new MutationObserver(mutations => { - if ( nodesToProcess.has(document) ) { return; } - for ( const mutation of mutations ) { - const node = mutation.target; - if ( node.nodeType !== 1 ) { continue; } - nodesToProcess.add(node); - } - if ( nodesToProcess.size !== 0 ) { - processTimer.start(100); - } -}); - -/******************************************************************************/ - -const handlers = { - onFiltersetChanged: function(changes) { - //console.time('dom logger/filterset changed'); - for ( const block of (changes.declarative || []) ) { - for ( const selector of block.split(',\n') ) { - if ( loggedSelectors.has(selector) ) { continue; } - if ( reHasCSSCombinators.test(selector) ) { - complexDeclarativeSet.add(selector); - complexDeclarativeStr = undefined; - } else { - simpleDeclarativeSet.add(selector); - simpleDeclarativeStr = undefined; - } - } - } - if ( - Array.isArray(changes.procedural) && - changes.procedural.length !== 0 - ) { - for ( const selector of changes.procedural ) { - proceduralDict.set(selector.raw, selector); - } - } - if ( Array.isArray(changes.exceptions) ) { - for ( const selector of changes.exceptions ) { - if ( loggedSelectors.has(selector) ) { continue; } - if ( selector.charCodeAt(0) !== 0x7B /* '{' */ ) { - exceptionDict.set(selector, selector); - continue; - } - const details = JSON.parse(selector); - if ( - details.action !== undefined && - details.tasks === undefined && - details.action[0] === 'style' - ) { - exceptionDict.set(details.selector, details.raw); - continue; - } - proceduralExceptionDict.set( - details.raw, - vAPI.domFilterer.createProceduralFilter(details) - ); - } - exceptionStr = undefined; - } - nodesToProcess.clear(); - nodesToProcess.add(document); - processTimer.start(1); - //console.timeEnd('dom logger/filterset changed'); - }, - - onDOMCreated: function() { - if ( vAPI.domFilterer instanceof Object === false ) { - return shutdown(); - } - handlers.onFiltersetChanged(vAPI.domFilterer.getAllSelectors()); - vAPI.domFilterer.addListener(handlers); - attributeObserver.observe(document.body, { - attributes: true, - subtree: true - }); - }, - - onDOMChanged: function(addedNodes) { - if ( nodesToProcess.has(document) ) { return; } - for ( const node of addedNodes ) { - if ( node.parentNode === null ) { continue; } - nodesToProcess.add(node); - } - if ( nodesToProcess.size !== 0 ) { - processTimer.start(100); - } - } -}; - -vAPI.domWatcher.addListener(handlers); - -/******************************************************************************/ - -const broadcastHandler = msg => { - if ( msg.what === 'loggerDisabled' ) { - shutdown(); - } -}; - -browser.runtime.onMessage.addListener(broadcastHandler); - -/******************************************************************************/ - -function shutdown() { - browser.runtime.onMessage.removeListener(broadcastHandler); - processTimer.clear(); - attributeObserver.disconnect(); - if ( typeof vAPI !== 'object' ) { return; } - if ( vAPI.domFilterer instanceof Object ) { - vAPI.domFilterer.removeListener(handlers); - } - if ( vAPI.domWatcher instanceof Object ) { - vAPI.domWatcher.removeListener(handlers); - } -} - -/******************************************************************************/ - -// <<<<<<<< end of private namespace -})(); - - - - - - - - -/******************************************************************************* - - DO NOT: - - Remove the following code - - Add code beyond the following code - Reason: - - https://github.com/gorhill/uBlock/pull/3721 - - uBO never uses the return value from injected content scripts - -**/ - -void 0; - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/cosmetic-off.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/cosmetic-off.js deleted file mode 100644 index f1301e2..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/cosmetic-off.js +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -if ( typeof vAPI === 'object' && vAPI.domFilterer ) { - vAPI.domFilterer.toggle(false); -} - - - - - - - - -/******************************************************************************* - - DO NOT: - - Remove the following code - - Add code beyond the following code - Reason: - - https://github.com/gorhill/uBlock/pull/3721 - - uBO never uses the return value from injected content scripts - -**/ - -void 0; diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/cosmetic-on.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/cosmetic-on.js deleted file mode 100644 index 7b30976..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/cosmetic-on.js +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -if ( typeof vAPI === 'object' && vAPI.domFilterer ) { - vAPI.domFilterer.toggle(true); -} - - - - - - - - -/******************************************************************************* - - DO NOT: - - Remove the following code - - Add code beyond the following code - Reason: - - https://github.com/gorhill/uBlock/pull/3721 - - uBO never uses the return value from injected content scripts - -**/ - -void 0; diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/cosmetic-report.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/cosmetic-report.js deleted file mode 100644 index a968d4d..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/cosmetic-report.js +++ /dev/null @@ -1,142 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -(( ) => { -// >>>>>>>> start of private namespace - -/******************************************************************************/ - -if ( typeof vAPI !== 'object' ) { return; } -if ( typeof vAPI.domFilterer !== 'object' ) { return; } -if ( vAPI.domFilterer === null ) { return; } - -/******************************************************************************/ - -const rePseudoElements = /:(?::?after|:?before|:[a-z-]+)$/; - -const hasSelector = selector => { - try { - return document.querySelector(selector) !== null; - } - catch(ex) { - } - return false; -}; - -const safeQuerySelector = selector => { - const safeSelector = rePseudoElements.test(selector) - ? selector.replace(rePseudoElements, '') - : selector; - try { - return document.querySelector(safeSelector); - } - catch(ex) { - } - return null; -}; - -const safeGroupSelectors = selectors => { - const arr = Array.isArray(selectors) - ? selectors - : Array.from(selectors); - return arr.map(s => { - return rePseudoElements.test(s) - ? s.replace(rePseudoElements, '') - : s; - }).join(',\n'); -}; - -const allSelectors = vAPI.domFilterer.getAllSelectors(); -const matchedSelectors = []; - -if ( Array.isArray(allSelectors.declarative) ) { - const declarativeSet = new Set(); - for ( const block of allSelectors.declarative ) { - for ( const selector of block.split(',\n') ) { - declarativeSet.add(selector); - } - } - if ( hasSelector(safeGroupSelectors(declarativeSet)) ) { - for ( const selector of declarativeSet ) { - if ( safeQuerySelector(selector) === null ) { continue; } - matchedSelectors.push(`##${selector}`); - } - } -} - -if ( - Array.isArray(allSelectors.procedural) && - allSelectors.procedural.length !== 0 -) { - for ( const pselector of allSelectors.procedural ) { - if ( pselector.hit === false && pselector.exec().length === 0 ) { continue; } - matchedSelectors.push(`##${pselector.raw}`); - } -} - -if ( Array.isArray(allSelectors.exceptions) ) { - const exceptionDict = new Map(); - for ( const selector of allSelectors.exceptions ) { - if ( selector.charCodeAt(0) !== 0x7B /* '{' */ ) { - exceptionDict.set(selector, selector); - continue; - } - const details = JSON.parse(selector); - if ( - details.action !== undefined && - details.tasks === undefined && - details.action[0] === 'style' - ) { - exceptionDict.set(details.selector, details.raw); - continue; - } - const pselector = vAPI.domFilterer.createProceduralFilter(details); - if ( pselector.test() === false ) { continue; } - matchedSelectors.push(`#@#${pselector.raw}`); - } - if ( - exceptionDict.size !== 0 && - hasSelector(safeGroupSelectors(exceptionDict.keys())) - ) { - for ( const [ selector, raw ] of exceptionDict ) { - if ( safeQuerySelector(selector) === null ) { continue; } - matchedSelectors.push(`#@#${raw}`); - } - } -} - -if ( typeof self.uBO_scriptletsInjected === 'string' ) { - matchedSelectors.push(...self.uBO_scriptletsInjected.split('\n')); -} - -if ( matchedSelectors.length === 0 ) { return; } - -return matchedSelectors; - -/******************************************************************************/ - -// <<<<<<<< end of private namespace -})(); - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/dom-inspector.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/dom-inspector.js deleted file mode 100644 index a1be150..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/dom-inspector.js +++ /dev/null @@ -1,920 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/******************************************************************************/ -/******************************************************************************/ - -(async ( ) => { - -/******************************************************************************/ - -if ( typeof vAPI !== 'object' ) { return; } -if ( vAPI === null ) { return; } -if ( vAPI.domFilterer instanceof Object === false ) { return; } - -if ( vAPI.inspectorFrame ) { return; } -vAPI.inspectorFrame = true; - -const inspectorUniqueId = vAPI.randomToken(); - -const nodeToIdMap = new WeakMap(); // No need to iterate - -let blueNodes = []; -const roRedNodes = new Map(); // node => current cosmetic filter -const rwRedNodes = new Set(); // node => new cosmetic filter (toggle node) -const rwGreenNodes = new Set(); // node => new exception cosmetic filter (toggle filter) -//const roGreenNodes = new Map(); // node => current exception cosmetic filter (can't toggle) - -const reHasCSSCombinators = /[ >+~]/; - -/******************************************************************************/ - -const domLayout = (( ) => { - const skipTagNames = new Set([ - 'br', 'head', 'link', 'meta', 'script', 'style', 'title' - ]); - const resourceAttrNames = new Map([ - [ 'a', 'href' ], - [ 'iframe', 'src' ], - [ 'img', 'src' ], - [ 'object', 'data' ] - ]); - - let idGenerator = 1; - - // This will be used to uniquely identify nodes across process. - - const newNodeId = node => { - const nid = `n${(idGenerator++).toString(36)}`; - nodeToIdMap.set(node, nid); - return nid; - }; - - const selectorFromNode = node => { - const tag = node.localName; - let selector = CSS.escape(tag); - // Id - if ( typeof node.id === 'string' ) { - let str = node.id.trim(); - if ( str !== '' ) { - selector += `#${CSS.escape(str)}`; - } - } - // Class - const cl = node.classList; - if ( cl ) { - for ( let i = 0; i < cl.length; i++ ) { - selector += `.${CSS.escape(cl[i])}`; - } - } - // Tag-specific attributes - const attr = resourceAttrNames.get(tag); - if ( attr !== undefined ) { - let str = node.getAttribute(attr) || ''; - str = str.trim(); - const pos = str.startsWith('data:') ? 5 : str.search(/[#?]/); - let sw = ''; - if ( pos !== -1 ) { - str = str.slice(0, pos); - sw = '^'; - } - if ( str !== '' ) { - selector += `[${attr}${sw}="${CSS.escape(str, true)}"]`; - } - } - return selector; - }; - - function DomRoot() { - this.nid = newNodeId(document.body); - this.lvl = 0; - this.sel = 'body'; - this.cnt = 0; - this.filter = roRedNodes.get(document.body); - } - - function DomNode(node, level) { - this.nid = newNodeId(node); - this.lvl = level; - this.sel = selectorFromNode(node); - this.cnt = 0; - this.filter = roRedNodes.get(node); - } - - const domNodeFactory = (level, node) => { - const localName = node.localName; - if ( skipTagNames.has(localName) ) { return null; } - // skip uBlock's own nodes - if ( node === inspectorFrame ) { return null; } - if ( level === 0 && localName === 'body' ) { - return new DomRoot(); - } - return new DomNode(node, level); - }; - - // Collect layout data - - const getLayoutData = ( ) => { - const layout = []; - const stack = []; - let lvl = 0; - let node = document.documentElement; - if ( node === null ) { return layout; } - - for (;;) { - const domNode = domNodeFactory(lvl, node); - if ( domNode !== null ) { - layout.push(domNode); - } - // children - if ( domNode !== null && node.firstElementChild !== null ) { - stack.push(node); - lvl += 1; - node = node.firstElementChild; - continue; - } - // sibling - if ( node instanceof Element ) { - if ( node.nextElementSibling === null ) { - do { - node = stack.pop(); - if ( !node ) { break; } - lvl -= 1; - } while ( node.nextElementSibling === null ); - if ( !node ) { break; } - } - node = node.nextElementSibling; - } - } - - return layout; - }; - - // Descendant count for each node. - - const patchLayoutData = layout => { - const stack = []; - let ptr; - let lvl = 0; - let i = layout.length; - - while ( i-- ) { - const domNode = layout[i]; - if ( domNode.lvl === lvl ) { - stack[ptr] += 1; - continue; - } - if ( domNode.lvl > lvl ) { - while ( lvl < domNode.lvl ) { - stack.push(0); - lvl += 1; - } - ptr = lvl - 1; - stack[ptr] += 1; - continue; - } - // domNode.lvl < lvl - const cnt = stack.pop(); - domNode.cnt = cnt; - lvl -= 1; - ptr = lvl - 1; - stack[ptr] += cnt + 1; - } - return layout; - }; - - // Track and report mutations of the DOM - - let mutationObserver = null; - let mutationTimer; - let addedNodelists = []; - let removedNodelist = []; - - const previousElementSiblingId = node => { - let sibling = node; - for (;;) { - sibling = sibling.previousElementSibling; - if ( sibling === null ) { return null; } - if ( skipTagNames.has(sibling.localName) ) { continue; } - return nodeToIdMap.get(sibling); - } - }; - - const journalFromBranch = (root, newNodes, newNodeToIdMap) => { - let node = root.firstElementChild; - while ( node !== null ) { - const domNode = domNodeFactory(undefined, node); - if ( domNode !== null ) { - newNodeToIdMap.set(domNode.nid, domNode); - newNodes.push(node); - } - // down - if ( node.firstElementChild !== null ) { - node = node.firstElementChild; - continue; - } - // right - if ( node.nextElementSibling !== null ) { - node = node.nextElementSibling; - continue; - } - // up then right - for (;;) { - if ( node.parentElement === root ) { return; } - node = node.parentElement; - if ( node.nextElementSibling !== null ) { - node = node.nextElementSibling; - break; - } - } - } - }; - - const journalFromMutations = ( ) => { - mutationTimer = undefined; - - // This is used to temporarily hold all added nodes, before resolving - // their node id and relative position. - const newNodes = []; - const journalEntries = []; - const newNodeToIdMap = new Map(); - - for ( const nodelist of addedNodelists ) { - for ( const node of nodelist ) { - if ( node.nodeType !== 1 ) { continue; } - if ( node.parentElement === null ) { continue; } - cosmeticFilterMapper.incremental(node); - const domNode = domNodeFactory(undefined, node); - if ( domNode !== null ) { - newNodeToIdMap.set(domNode.nid, domNode); - newNodes.push(node); - } - journalFromBranch(node, newNodes, newNodeToIdMap); - } - } - addedNodelists = []; - for ( const nodelist of removedNodelist ) { - for ( const node of nodelist ) { - if ( node.nodeType !== 1 ) { continue; } - const nid = nodeToIdMap.get(node); - if ( nid === undefined ) { continue; } - journalEntries.push({ what: -1, nid }); - } - } - removedNodelist = []; - for ( const node of newNodes ) { - journalEntries.push({ - what: 1, - nid: nodeToIdMap.get(node), - u: nodeToIdMap.get(node.parentElement), - l: previousElementSiblingId(node) - }); - } - - if ( journalEntries.length === 0 ) { return; } - - contentInspectorChannel.toLogger({ - what: 'domLayoutIncremental', - url: window.location.href, - hostname: window.location.hostname, - journal: journalEntries, - nodes: Array.from(newNodeToIdMap) - }); - }; - - const onMutationObserved = mutationRecords => { - for ( const record of mutationRecords ) { - if ( record.addedNodes.length !== 0 ) { - addedNodelists.push(record.addedNodes); - } - if ( record.removedNodes.length !== 0 ) { - removedNodelist.push(record.removedNodes); - } - } - if ( mutationTimer === undefined ) { - mutationTimer = vAPI.setTimeout(journalFromMutations, 1000); - } - }; - - // API - - const getLayout = ( ) => { - cosmeticFilterMapper.reset(); - mutationObserver = new MutationObserver(onMutationObserved); - mutationObserver.observe(document.body, { - childList: true, - subtree: true - }); - - return { - what: 'domLayoutFull', - url: window.location.href, - hostname: window.location.hostname, - layout: patchLayoutData(getLayoutData()) - }; - }; - - const reset = ( ) => { - shutdown(); - }; - - const shutdown = ( ) => { - if ( mutationTimer !== undefined ) { - clearTimeout(mutationTimer); - mutationTimer = undefined; - } - if ( mutationObserver !== null ) { - mutationObserver.disconnect(); - mutationObserver = null; - } - addedNodelists = []; - removedNodelist = []; - }; - - return { - get: getLayout, - reset, - shutdown, - }; -})(); - -/******************************************************************************/ -/******************************************************************************/ - -const cosmeticFilterMapper = (( ) => { - const nodesFromStyleTag = rootNode => { - const filterMap = roRedNodes; - const details = vAPI.domFilterer.getAllSelectors(); - - // Declarative selectors. - for ( const block of (details.declarative || []) ) { - for ( const selector of block.split(',\n') ) { - let nodes; - if ( reHasCSSCombinators.test(selector) ) { - nodes = document.querySelectorAll(selector); - } else { - if ( - filterMap.has(rootNode) === false && - rootNode.matches(selector) - ) { - filterMap.set(rootNode, selector); - } - nodes = rootNode.querySelectorAll(selector); - } - for ( const node of nodes ) { - if ( filterMap.has(node) ) { continue; } - filterMap.set(node, selector); - } - } - } - - // Procedural selectors. - for ( const entry of (details.procedural || []) ) { - const nodes = entry.exec(); - for ( const node of nodes ) { - // Upgrade declarative selector to procedural one - filterMap.set(node, entry.raw); - } - } - }; - - const incremental = rootNode => { - nodesFromStyleTag(rootNode); - }; - - const reset = ( ) => { - roRedNodes.clear(); - if ( document.documentElement !== null ) { - incremental(document.documentElement); - } - }; - - const shutdown = ( ) => { - vAPI.domFilterer.toggle(true); - }; - - return { - incremental, - reset, - shutdown, - }; -})(); - -/******************************************************************************/ - -const elementsFromSelector = function(selector, context) { - if ( !context ) { - context = document; - } - if ( selector.indexOf(':') !== -1 ) { - const out = elementsFromSpecialSelector(selector); - if ( out !== undefined ) { return out; } - } - // plain CSS selector - try { - return context.querySelectorAll(selector); - } catch (ex) { - } - return []; -}; - -const elementsFromSpecialSelector = function(selector) { - const out = []; - let matches = /^(.+?):has\((.+?)\)$/.exec(selector); - if ( matches !== null ) { - let nodes; - try { - nodes = document.querySelectorAll(matches[1]); - } catch(ex) { - nodes = []; - } - for ( const node of nodes ) { - if ( node.querySelector(matches[2]) === null ) { continue; } - out.push(node); - } - return out; - } - - matches = /^:xpath\((.+?)\)$/.exec(selector); - if ( matches === null ) { return; } - const xpr = document.evaluate( - matches[1], - document, - null, - XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, - null - ); - let i = xpr.snapshotLength; - while ( i-- ) { - out.push(xpr.snapshotItem(i)); - } - return out; -}; - -/******************************************************************************/ - -const highlightElements = ( ) => { - const paths = []; - - const path = []; - for ( const elem of rwRedNodes.keys() ) { - if ( elem === inspectorFrame ) { continue; } - if ( rwGreenNodes.has(elem) ) { continue; } - if ( typeof elem.getBoundingClientRect !== 'function' ) { continue; } - const rect = elem.getBoundingClientRect(); - const xl = rect.left; - const w = rect.width; - const yt = rect.top; - const h = rect.height; - const ws = w.toFixed(1); - const poly = 'M' + xl.toFixed(1) + ' ' + yt.toFixed(1) + - 'h' + ws + - 'v' + h.toFixed(1) + - 'h-' + ws + - 'z'; - path.push(poly); - } - paths.push(path.join('') || 'M0 0'); - - path.length = 0; - for ( const elem of rwGreenNodes ) { - if ( typeof elem.getBoundingClientRect !== 'function' ) { continue; } - const rect = elem.getBoundingClientRect(); - const xl = rect.left; - const w = rect.width; - const yt = rect.top; - const h = rect.height; - const ws = w.toFixed(1); - const poly = 'M' + xl.toFixed(1) + ' ' + yt.toFixed(1) + - 'h' + ws + - 'v' + h.toFixed(1) + - 'h-' + ws + - 'z'; - path.push(poly); - } - paths.push(path.join('') || 'M0 0'); - - path.length = 0; - for ( const elem of roRedNodes.keys() ) { - if ( elem === inspectorFrame ) { continue; } - if ( rwGreenNodes.has(elem) ) { continue; } - if ( typeof elem.getBoundingClientRect !== 'function' ) { continue; } - const rect = elem.getBoundingClientRect(); - const xl = rect.left; - const w = rect.width; - const yt = rect.top; - const h = rect.height; - const ws = w.toFixed(1); - const poly = 'M' + xl.toFixed(1) + ' ' + yt.toFixed(1) + - 'h' + ws + - 'v' + h.toFixed(1) + - 'h-' + ws + - 'z'; - path.push(poly); - } - paths.push(path.join('') || 'M0 0'); - - path.length = 0; - for ( const elem of blueNodes ) { - if ( elem === inspectorFrame ) { continue; } - if ( typeof elem.getBoundingClientRect !== 'function' ) { continue; } - const rect = elem.getBoundingClientRect(); - const xl = rect.left; - const w = rect.width; - const yt = rect.top; - const h = rect.height; - const ws = w.toFixed(1); - const poly = 'M' + xl.toFixed(1) + ' ' + yt.toFixed(1) + - 'h' + ws + - 'v' + h.toFixed(1) + - 'h-' + ws + - 'z'; - path.push(poly); - } - paths.push(path.join('') || 'M0 0'); - - contentInspectorChannel.toFrame({ - what: 'svgPaths', - paths, - }); -}; - -/******************************************************************************/ - -const onScrolled = (( ) => { - let timer; - return ( ) => { - if ( timer ) { return; } - timer = window.requestAnimationFrame(( ) => { - timer = undefined; - highlightElements(); - }); - }; -})(); - -const onMouseOver = ( ) => { - if ( blueNodes.length === 0 ) { return; } - blueNodes = []; - highlightElements(); -}; - -/******************************************************************************/ - -const selectNodes = (selector, nid) => { - const nodes = elementsFromSelector(selector); - if ( nid === '' ) { return nodes; } - for ( const node of nodes ) { - if ( nodeToIdMap.get(node) === nid ) { - return [ node ]; - } - } - return []; -}; - -/******************************************************************************/ - -const nodesFromFilter = selector => { - const out = []; - for ( const entry of roRedNodes ) { - if ( entry[1] === selector ) { - out.push(entry[0]); - } - } - return out; -}; - -/******************************************************************************/ - -const toggleExceptions = (nodes, targetState) => { - for ( const node of nodes ) { - if ( targetState ) { - rwGreenNodes.add(node); - } else { - rwGreenNodes.delete(node); - } - } -}; - -const toggleFilter = (nodes, targetState) => { - for ( const node of nodes ) { - if ( targetState ) { - rwRedNodes.delete(node); - } else { - rwRedNodes.add(node); - } - } -}; - -const resetToggledNodes = ( ) => { - rwGreenNodes.clear(); - rwRedNodes.clear(); -}; - -/******************************************************************************/ - -const startInspector = ( ) => { - const onReady = ( ) => { - window.addEventListener('scroll', onScrolled, { - capture: true, - passive: true, - }); - window.addEventListener('mouseover', onMouseOver, { - capture: true, - passive: true, - }); - contentInspectorChannel.toLogger(domLayout.get()); - vAPI.domFilterer.toggle(false, highlightElements); - }; - if ( document.readyState === 'loading' ) { - document.addEventListener('DOMContentLoaded', onReady, { once: true }); - } else { - onReady(); - } -}; - -/******************************************************************************/ - -const shutdownInspector = ( ) => { - cosmeticFilterMapper.shutdown(); - domLayout.shutdown(); - window.removeEventListener('scroll', onScrolled, { - capture: true, - passive: true, - }); - window.removeEventListener('mouseover', onMouseOver, { - capture: true, - passive: true, - }); - contentInspectorChannel.shutdown(); - if ( inspectorFrame ) { - inspectorFrame.remove(); - inspectorFrame = null; - } - vAPI.userStylesheet.remove(inspectorCSS); - vAPI.userStylesheet.apply(); - vAPI.inspectorFrame = false; -}; - -/******************************************************************************/ -/******************************************************************************/ - -const onMessage = request => { - switch ( request.what ) { - case 'startInspector': - startInspector(); - break; - - case 'quitInspector': - shutdownInspector(); - break; - - case 'commitFilters': - highlightElements(); - break; - - case 'domLayout': - domLayout.get(); - highlightElements(); - break; - - case 'highlightMode': - break; - - case 'highlightOne': - blueNodes = selectNodes(request.selector, request.nid); - if ( blueNodes.length !== 0 ) { - blueNodes[0].scrollIntoView({ - behavior: 'smooth', - block: 'nearest', - inline: 'nearest', - }); - } - highlightElements(); - break; - - case 'resetToggledNodes': - resetToggledNodes(); - highlightElements(); - break; - - case 'showCommitted': - blueNodes = []; - // TODO: show only the new filters and exceptions. - highlightElements(); - break; - - case 'showInteractive': - blueNodes = []; - highlightElements(); - break; - - case 'toggleFilter': { - const nodes = selectNodes(request.selector, request.nid); - if ( nodes.length !== 0 ) { - nodes[0].scrollIntoView({ - behavior: 'smooth', - block: 'nearest', - inline: 'nearest', - }); - } - toggleExceptions(nodesFromFilter(request.filter), request.target); - highlightElements(); - break; - } - case 'toggleNodes': { - const nodes = selectNodes(request.selector, request.nid); - if ( nodes.length !== 0 ) { - nodes[0].scrollIntoView({ - behavior: 'smooth', - block: 'nearest', - inline: 'nearest', - }); - } - toggleFilter(nodes, request.target); - highlightElements(); - break; - } - default: - break; - } -}; - -/******************************************************************************* - * - * Establish two-way communication with logger/inspector window and - * inspector frame - * - * */ - -const contentInspectorChannel = (( ) => { - let toLoggerPort; - let toFramePort; - - const toLogger = msg => { - if ( toLoggerPort === undefined ) { return; } - try { - toLoggerPort.postMessage(msg); - } catch(_) { - shutdownInspector(); - } - }; - - const onLoggerMessage = msg => { - onMessage(msg); - }; - - const onLoggerDisconnect = ( ) => { - shutdownInspector(); - }; - - const onLoggerConnect = port => { - browser.runtime.onConnect.removeListener(onLoggerConnect); - toLoggerPort = port; - port.onMessage.addListener(onLoggerMessage); - port.onDisconnect.addListener(onLoggerDisconnect); - }; - - const toFrame = msg => { - if ( toFramePort === undefined ) { return; } - toFramePort.postMessage(msg); - }; - - const shutdown = ( ) => { - if ( toFramePort !== undefined ) { - toFrame({ what: 'quitInspector' }); - toFramePort.onmessage = null; - toFramePort.close(); - toFramePort = undefined; - } - if ( toLoggerPort !== undefined ) { - toLoggerPort.onMessage.removeListener(onLoggerMessage); - toLoggerPort.onDisconnect.removeListener(onLoggerDisconnect); - toLoggerPort.disconnect(); - toLoggerPort = undefined; - } - browser.runtime.onConnect.removeListener(onLoggerConnect); - }; - - const start = async ( ) => { - browser.runtime.onConnect.addListener(onLoggerConnect); - const inspectorArgs = await vAPI.messaging.send('domInspectorContent', { - what: 'getInspectorArgs', - }); - if ( typeof inspectorArgs !== 'object' ) { return; } - if ( inspectorArgs === null ) { return; } - return new Promise(resolve => { - const iframe = document.createElement('iframe'); - iframe.setAttribute(inspectorUniqueId, ''); - document.documentElement.append(iframe); - iframe.addEventListener('load', ( ) => { - iframe.setAttribute(`${inspectorUniqueId}-loaded`, ''); - const channel = new MessageChannel(); - toFramePort = channel.port1; - toFramePort.onmessage = ev => { - const msg = ev.data || {}; - if ( msg.what !== 'startInspector' ) { return; } - }; - iframe.contentWindow.postMessage( - { what: 'startInspector' }, - inspectorArgs.inspectorURL, - [ channel.port2 ] - ); - resolve(iframe); - }, { once: true }); - iframe.contentWindow.location = inspectorArgs.inspectorURL; - }); - }; - - return { start, toLogger, toFrame, shutdown }; -})(); - - -// Install DOM inspector widget -const inspectorCSSStyle = [ - 'background: transparent', - 'border: 0', - 'border-radius: 0', - 'box-shadow: none', - 'color-scheme: light dark', - 'display: block', - 'filter: none', - 'height: 100%', - 'left: 0', - 'margin: 0', - 'max-height: none', - 'max-width: none', - 'min-height: unset', - 'min-width: unset', - 'opacity: 1', - 'outline: 0', - 'padding: 0', - 'pointer-events: none', - 'position: fixed', - 'top: 0', - 'transform: none', - 'visibility: hidden', - 'width: 100%', - 'z-index: 2147483647', - '' -].join(' !important;\n'); - -const inspectorCSS = ` -:root > [${inspectorUniqueId}] { - ${inspectorCSSStyle} -} -:root > [${inspectorUniqueId}-loaded] { - visibility: visible !important; -} -`; - -vAPI.userStylesheet.add(inspectorCSS); -vAPI.userStylesheet.apply(); - -let inspectorFrame = await contentInspectorChannel.start(); -if ( inspectorFrame instanceof HTMLIFrameElement === false ) { - return shutdownInspector(); -} - -startInspector(); - -/******************************************************************************/ - -})(); - - - - - - - - -/******************************************************************************* - - DO NOT: - - Remove the following code - - Add code beyond the following code - Reason: - - https://github.com/gorhill/uBlock/pull/3721 - - uBO never uses the return value from injected content scripts - -**/ - -void 0; diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/dom-survey-elements.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/dom-survey-elements.js deleted file mode 100644 index 1582596..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/dom-survey-elements.js +++ /dev/null @@ -1,72 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -// https://github.com/uBlockOrigin/uBlock-issues/issues/756 -// Keep in mind CPU usage with large DOM and/or filterset. - -(( ) => { - if ( typeof vAPI !== 'object' ) { return; } - - const t0 = Date.now(); - - if ( vAPI.domSurveyElements instanceof Object === false ) { - vAPI.domSurveyElements = { - busy: false, - hiddenElementCount: Number.NaN, - surveyTime: t0, - }; - } - const surveyResults = vAPI.domSurveyElements; - - if ( surveyResults.busy ) { return; } - surveyResults.busy = true; - - if ( surveyResults.surveyTime < vAPI.domMutationTime ) { - surveyResults.hiddenElementCount = Number.NaN; - } - surveyResults.surveyTime = t0; - - if ( isNaN(surveyResults.hiddenElementCount) ) { - surveyResults.hiddenElementCount = (( ) => { - if ( vAPI.domFilterer instanceof Object === false ) { return 0; } - const details = vAPI.domFilterer.getAllSelectors(0b11); - if ( - Array.isArray(details.declarative) === false || - details.declarative.length === 0 - ) { - return 0; - } - return document.querySelectorAll( - details.declarative.join(',\n') - ).length; - })(); - } - - surveyResults.busy = false; - - // IMPORTANT: This is returned to the injector, so this MUST be - // the last statement. - return surveyResults.hiddenElementCount; -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/dom-survey-scripts.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/dom-survey-scripts.js deleted file mode 100644 index e5300ff..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/dom-survey-scripts.js +++ /dev/null @@ -1,126 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -// Scriptlets to count the number of script tags in a document. - -(( ) => { - if ( typeof vAPI !== 'object' ) { return; } - - const t0 = Date.now(); - - if ( vAPI.domSurveyScripts instanceof Object === false ) { - vAPI.domSurveyScripts = { - busy: false, - scriptCount: -1, - surveyTime: t0, - }; - } - const surveyResults = vAPI.domSurveyScripts; - - if ( surveyResults.busy ) { return; } - surveyResults.busy = true; - - if ( surveyResults.surveyTime < vAPI.domMutationTime ) { - surveyResults.scriptCount = -1; - } - surveyResults.surveyTime = t0; - - if ( surveyResults.scriptCount === -1 ) { - const reInlineScript = /^(data:|blob:|$)/; - let inlineScriptCount = 0; - let scriptCount = 0; - for ( const script of document.scripts ) { - if ( reInlineScript.test(script.src) ) { - inlineScriptCount = 1; - continue; - } - scriptCount += 1; - if ( scriptCount === 99 ) { break; } - } - scriptCount += inlineScriptCount; - if ( scriptCount !== 0 ) { - surveyResults.scriptCount = scriptCount; - } - } - - // https://github.com/uBlockOrigin/uBlock-issues/issues/756 - // Keep trying to find inline script-like instances but only if we - // have the time-budget to do so. - if ( surveyResults.scriptCount === -1 ) { - if ( document.querySelector('a[href^="javascript:"]') !== null ) { - surveyResults.scriptCount = 1; - } - } - - // https://github.com/uBlockOrigin/uBlock-issues/issues/1756 - // Mind that there might be no body element. - if ( surveyResults.scriptCount === -1 && document.body !== null ) { - surveyResults.scriptCount = 0; - const onHandlers = new Set([ - 'onabort', 'onblur', 'oncancel', 'oncanplay', - 'oncanplaythrough', 'onchange', 'onclick', 'onclose', - 'oncontextmenu', 'oncuechange', 'ondblclick', 'ondrag', - 'ondragend', 'ondragenter', 'ondragexit', 'ondragleave', - 'ondragover', 'ondragstart', 'ondrop', 'ondurationchange', - 'onemptied', 'onended', 'onerror', 'onfocus', - 'oninput', 'oninvalid', 'onkeydown', 'onkeypress', - 'onkeyup', 'onload', 'onloadeddata', 'onloadedmetadata', - 'onloadstart', 'onmousedown', 'onmouseenter', 'onmouseleave', - 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', - 'onwheel', 'onpause', 'onplay', 'onplaying', - 'onprogress', 'onratechange', 'onreset', 'onresize', - 'onscroll', 'onseeked', 'onseeking', 'onselect', - 'onshow', 'onstalled', 'onsubmit', 'onsuspend', - 'ontimeupdate', 'ontoggle', 'onvolumechange', 'onwaiting', - 'onafterprint', 'onbeforeprint', 'onbeforeunload', 'onhashchange', - 'onlanguagechange', 'onmessage', 'onoffline', 'ononline', - 'onpagehide', 'onpageshow', 'onrejectionhandled', 'onpopstate', - 'onstorage', 'onunhandledrejection', 'onunload', - 'oncopy', 'oncut', 'onpaste' - ]); - const nodeIter = document.createNodeIterator( - document.body, - NodeFilter.SHOW_ELEMENT - ); - for (;;) { - const node = nodeIter.nextNode(); - if ( node === null ) { break; } - if ( node.hasAttributes() === false ) { continue; } - for ( const attr of node.getAttributeNames() ) { - if ( onHandlers.has(attr) === false ) { continue; } - surveyResults.scriptCount = 1; - break; - } - } - } - - surveyResults.busy = false; - - // IMPORTANT: This is returned to the injector, so this MUST be - // the last statement. - if ( surveyResults.scriptCount !== -1 ) { - return surveyResults.scriptCount; - } -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/epicker.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/epicker.js deleted file mode 100644 index 106941a..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/epicker.js +++ /dev/null @@ -1,1359 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(async ( ) => { - -/******************************************************************************/ - -if ( typeof vAPI !== 'object' ) { return; } -if ( vAPI === null ) { return; } - -if ( vAPI.pickerFrame ) { return; } -vAPI.pickerFrame = true; - -const pickerUniqueId = vAPI.randomToken(); - -const reCosmeticAnchor = /^#(\$|\?|\$\?)?#/; - -const netFilterCandidates = []; -const cosmeticFilterCandidates = []; - -let targetElements = []; -let candidateElements = []; -let bestCandidateFilter = null; - -const lastNetFilterSession = window.location.host + window.location.pathname; -let lastNetFilterHostname = ''; -let lastNetFilterUnion = ''; - -const hideBackgroundStyle = 'background-image:none!important;'; - -/******************************************************************************/ - -const safeQuerySelectorAll = function(node, selector) { - if ( node !== null ) { - try { - return node.querySelectorAll(selector); - } catch (e) { - } - } - return []; -}; - -/******************************************************************************/ - -const getElementBoundingClientRect = function(elem) { - let rect = typeof elem.getBoundingClientRect === 'function' - ? elem.getBoundingClientRect() - : { height: 0, left: 0, top: 0, width: 0 }; - - // https://github.com/gorhill/uBlock/issues/1024 - // Try not returning an empty bounding rect. - if ( rect.width !== 0 && rect.height !== 0 ) { - return rect; - } - if ( elem.shadowRoot instanceof DocumentFragment ) { - return getElementBoundingClientRect(elem.shadowRoot); - } - - let left = rect.left, - right = left + rect.width, - top = rect.top, - bottom = top + rect.height; - - for ( const child of elem.children ) { - rect = getElementBoundingClientRect(child); - if ( rect.width === 0 || rect.height === 0 ) { continue; } - if ( rect.left < left ) { left = rect.left; } - if ( rect.right > right ) { right = rect.right; } - if ( rect.top < top ) { top = rect.top; } - if ( rect.bottom > bottom ) { bottom = rect.bottom; } - } - - return { - bottom, - height: bottom - top, - left, - right, - top, - width: right - left - }; -}; - -/******************************************************************************/ - -const highlightElements = function(elems, force) { - // To make mouse move handler more efficient - if ( - (force !== true) && - (elems.length === targetElements.length) && - (elems.length === 0 || elems[0] === targetElements[0]) - ) { - return; - } - targetElements = []; - - const ow = self.innerWidth; - const oh = self.innerHeight; - const islands = []; - - for ( const elem of elems ) { - if ( elem === pickerFrame ) { continue; } - targetElements.push(elem); - const rect = getElementBoundingClientRect(elem); - // Ignore offscreen areas - if ( - rect.left > ow || rect.top > oh || - rect.left + rect.width < 0 || rect.top + rect.height < 0 - ) { - continue; - } - islands.push( - `M${rect.left} ${rect.top}h${rect.width}v${rect.height}h-${rect.width}z` - ); - } - - pickerFramePort.postMessage({ - what: 'svgPaths', - ocean: `M0 0h${ow}v${oh}h-${ow}z`, - islands: islands.join(''), - }); -}; - -/******************************************************************************/ - -const mergeStrings = function(urls) { - if ( urls.length === 0 ) { return ''; } - if ( - urls.length === 1 || - self.diff_match_patch instanceof Function === false - ) { - return urls[0]; - } - const differ = new self.diff_match_patch(); - let merged = urls[0]; - for ( let i = 1; i < urls.length; i++ ) { - // The differ works at line granularity: we insert a linefeed after - // each character to trick the differ to work at character granularity. - const diffs = differ.diff_main( - urls[i].split('').join('\n'), - merged.split('').join('\n') - ); - const result = []; - for ( const diff of diffs ) { - if ( diff[0] !== 0 ) { - result.push('*'); - } else { - result.push(diff[1].replace(/\n+/g, '')); - } - merged = result.join(''); - } - } - // Keep usage of wildcards to a sane level, too many of them can cause - // high overhead filters - merged = merged.replace(/^\*+$/, '') - .replace(/\*{2,}/g, '*') - .replace(/([^*]{1,3}\*)(?:[^*]{1,3}\*)+/g, '$1'); - - // https://github.com/uBlockOrigin/uBlock-issues/issues/1494 - let pos = merged.indexOf('/'); - if ( pos === -1 ) { pos = merged.length; } - return merged.slice(0, pos).includes('*') ? urls[0] : merged; -}; - -/******************************************************************************/ - -// Remove fragment part from a URL. - -const trimFragmentFromURL = function(url) { - const pos = url.indexOf('#'); - return pos !== -1 ? url.slice(0, pos) : url; -}; - -/******************************************************************************/ - -// https://github.com/gorhill/uBlock/issues/1897 -// Ignore `data:` URI, they can't be handled by an HTTP observer. - -const backgroundImageURLFromElement = function(elem) { - const style = window.getComputedStyle(elem); - const bgImg = style.backgroundImage || ''; - const matches = /^url\((["']?)([^"']+)\1\)$/.exec(bgImg); - const url = matches !== null && matches.length === 3 ? matches[2] : ''; - return url.lastIndexOf('data:', 0) === -1 - ? trimFragmentFromURL(url.slice(0, 1024)) - : ''; -}; - -/******************************************************************************/ - -// https://github.com/gorhill/uBlock/issues/1725#issuecomment-226479197 -// Limit returned string to 1024 characters. -// Also, return only URLs which will be seen by an HTTP observer. -// https://github.com/uBlockOrigin/uBlock-issues/issues/2260 -// Maybe get to the actual URL indirectly. -const resourceURLsFromElement = function(elem) { - const urls = []; - const tagName = elem.localName; - const prop = netFilter1stSources[tagName]; - if ( prop === undefined ) { - const url = backgroundImageURLFromElement(elem); - if ( url !== '' ) { urls.push(url); } - return urls; - } - let s = elem[prop]; - if ( s instanceof SVGAnimatedString ) { - s = s.baseVal; - } - if ( typeof s === 'string' && /^https?:\/\//.test(s) ) { - urls.push(trimFragmentFromURL(s.slice(0, 1024))); - } - resourceURLsFromSrcset(elem, urls); - resourceURLsFromPicture(elem, urls); - return urls; -}; - -// https://html.spec.whatwg.org/multipage/images.html#parsing-a-srcset-attribute -// https://github.com/uBlockOrigin/uBlock-issues/issues/1071 -const resourceURLsFromSrcset = function(elem, out) { - let srcset = elem.srcset; - if ( typeof srcset !== 'string' || srcset === '' ) { return; } - for(;;) { - // trim whitespace - srcset = srcset.trim(); - if ( srcset.length === 0 ) { break; } - // abort in case of leading comma - if ( /^,/.test(srcset) ) { break; } - // collect and consume all non-whitespace characters - let match = /^\S+/.exec(srcset); - if ( match === null ) { break; } - srcset = srcset.slice(match.index + match[0].length); - let url = match[0]; - // consume descriptor, if any - if ( /,$/.test(url) ) { - url = url.replace(/,$/, ''); - if ( /,$/.test(url) ) { break; } - } else { - match = /^[^,]*(?:\(.+?\))?[^,]*(?:,|$)/.exec(srcset); - if ( match === null ) { break; } - srcset = srcset.slice(match.index + match[0].length); - } - const parsedURL = new URL(url, document.baseURI); - if ( parsedURL.pathname.length === 0 ) { continue; } - out.push(trimFragmentFromURL(parsedURL.href)); - } -}; - -// https://github.com/uBlockOrigin/uBlock-issues/issues/2069#issuecomment-1080600661 -// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture -const resourceURLsFromPicture = function(elem, out) { - if ( elem.localName === 'source' ) { return; } - const picture = elem.parentElement; - if ( picture === null || picture.localName !== 'picture' ) { return; } - const sources = picture.querySelectorAll(':scope > source'); - for ( const source of sources ) { - const urls = resourceURLsFromElement(source); - if ( urls.length === 0 ) { continue; } - out.push(...urls); - } -}; - -/******************************************************************************/ - -const netFilterFromUnion = function(patternIn, out) { - // Reset reference filter when dealing with unrelated URLs - const currentHostname = self.location.hostname; - if ( - lastNetFilterUnion === '' || - currentHostname === '' || - currentHostname !== lastNetFilterHostname - ) { - lastNetFilterHostname = currentHostname; - lastNetFilterUnion = patternIn; - vAPI.messaging.send('elementPicker', { - what: 'elementPickerEprom', - lastNetFilterSession, - lastNetFilterHostname, - lastNetFilterUnion, - }); - return; - } - - // Related URLs - lastNetFilterHostname = currentHostname; - let patternOut = mergeStrings([ patternIn, lastNetFilterUnion ]); - if ( patternOut !== '/*' && patternOut !== patternIn ) { - const filter = `||${patternOut}`; - if ( out.indexOf(filter) === -1 ) { - out.push(filter); - } - lastNetFilterUnion = patternOut; - } - - // Remember across element picker sessions - vAPI.messaging.send('elementPicker', { - what: 'elementPickerEprom', - lastNetFilterSession, - lastNetFilterHostname, - lastNetFilterUnion, - }); -}; - -/******************************************************************************/ - -// Extract the best possible net filter, i.e. as specific as possible. - -const netFilterFromElement = function(elem) { - if ( elem === null ) { return 0; } - if ( elem.nodeType !== 1 ) { return 0; } - const urls = resourceURLsFromElement(elem); - if ( urls.length === 0 ) { return 0; } - - if ( candidateElements.indexOf(elem) === -1 ) { - candidateElements.push(elem); - } - - const candidates = netFilterCandidates; - const len = candidates.length; - - for ( let i = 0; i < urls.length; i++ ) { - urls[i] = urls[i].replace(/^https?:\/\//, ''); - } - const pattern = mergeStrings(urls); - - - if ( bestCandidateFilter === null && elem.matches('html,body') === false ) { - bestCandidateFilter = { - type: 'net', - filters: candidates, - slot: candidates.length - }; - } - - candidates.push(`||${pattern}`); - - // Suggest a less narrow filter if possible - const pos = pattern.indexOf('?'); - if ( pos !== -1 ) { - candidates.push(`||${pattern.slice(0, pos)}`); - } - - // Suggest a filter which is a result of combining more than one URL. - netFilterFromUnion(pattern, candidates); - - return candidates.length - len; -}; - -const netFilter1stSources = { - 'audio': 'src', - 'embed': 'src', - 'iframe': 'src', - 'img': 'src', - 'image': 'href', - 'object': 'data', - 'source': 'src', - 'video': 'src' -}; - -const filterTypes = { - 'audio': 'media', - 'embed': 'object', - 'iframe': 'subdocument', - 'img': 'image', - 'object': 'object', - 'video': 'media', -}; - -/******************************************************************************/ - -// Extract the best possible cosmetic filter, i.e. as specific as possible. - -// https://github.com/gorhill/uBlock/issues/1725 -// Also take into account the `src` attribute for `img` elements -- and limit -// the value to the 1024 first characters. - -const cosmeticFilterFromElement = function(elem) { - if ( elem === null ) { return 0; } - if ( elem.nodeType !== 1 ) { return 0; } - if ( noCosmeticFiltering ) { return 0; } - - if ( candidateElements.indexOf(elem) === -1 ) { - candidateElements.push(elem); - } - - let selector = ''; - - // Id - let v = typeof elem.id === 'string' && CSS.escape(elem.id); - if ( v ) { - selector = '#' + v; - } - - // Class(es) - v = elem.classList; - if ( v ) { - let i = v.length || 0; - while ( i-- ) { - selector += '.' + CSS.escape(v.item(i)); - } - } - - // Tag name - const tagName = CSS.escape(elem.localName); - - // Use attributes if still no selector found. - // https://github.com/gorhill/uBlock/issues/1901 - // Trim attribute value, this may help in case of malformed HTML. - // - // https://github.com/uBlockOrigin/uBlock-issues/issues/1923 - // Escape unescaped `"` in attribute values - if ( selector === '' ) { - let attributes = [], attr; - switch ( tagName ) { - case 'a': - v = elem.getAttribute('href'); - if ( v ) { - v = v.trim().replace(/\?.*$/, ''); - if ( v.length ) { - attributes.push({ k: 'href', v: v }); - } - } - break; - case 'iframe': - case 'img': - v = elem.getAttribute('src'); - if ( v && v.length !== 0 ) { - v = v.trim(); - if ( v.startsWith('data:') ) { - let pos = v.indexOf(','); - if ( pos !== -1 ) { - v = v.slice(0, pos + 1); - } - } else if ( v.startsWith('blob:') ) { - v = new URL(v.slice(5)); - v.pathname = ''; - v = 'blob:' + v.href; - } - attributes.push({ k: 'src', v: v.slice(0, 256) }); - break; - } - v = elem.getAttribute('alt'); - if ( v && v.length !== 0 ) { - attributes.push({ k: 'alt', v: v }); - break; - } - break; - default: - break; - } - while ( (attr = attributes.pop()) ) { - if ( attr.v.length === 0 ) { continue; } - const w = attr.v.replace(/([^\\])"/g, '$1\\"'); - v = elem.getAttribute(attr.k); - if ( attr.v === v ) { - selector += `[${attr.k}="${w}"]`; - } else if ( v.startsWith(attr.v) ) { - selector += `[${attr.k}^="${w}"]`; - } else { - selector += `[${attr.k}*="${w}"]`; - } - } - } - - // https://github.com/uBlockOrigin/uBlock-issues/issues/17 - // If selector is ambiguous at this point, add the element name to - // further narrow it down. - const parentNode = elem.parentNode; - if ( - selector === '' || - safeQuerySelectorAll(parentNode, `:scope > ${selector}`).length > 1 - ) { - selector = tagName + selector; - } - - // https://github.com/chrisaljoudi/uBlock/issues/637 - // If the selector is still ambiguous at this point, further narrow using - // `nth-of-type`. It is preferable to use `nth-of-type` as opposed to - // `nth-child`, as `nth-of-type` is less volatile. - if ( safeQuerySelectorAll(parentNode, `:scope > ${selector}`).length > 1 ) { - let i = 1; - while ( elem.previousSibling !== null ) { - elem = elem.previousSibling; - if ( - typeof elem.localName === 'string' && - elem.localName === tagName - ) { - i++; - } - } - selector += `:nth-of-type(${i})`; - } - - if ( bestCandidateFilter === null ) { - bestCandidateFilter = { - type: 'cosmetic', - filters: cosmeticFilterCandidates, - slot: cosmeticFilterCandidates.length - }; - } - - cosmeticFilterCandidates.push(`##${selector}`); - - return 1; -}; - -/******************************************************************************/ - -const filtersFrom = function(x, y) { - bestCandidateFilter = null; - netFilterCandidates.length = 0; - cosmeticFilterCandidates.length = 0; - candidateElements.length = 0; - - // We need at least one element. - let first = null; - if ( typeof x === 'number' ) { - first = elementFromPoint(x, y); - } else if ( x instanceof HTMLElement ) { - first = x; - x = undefined; - } - - // https://github.com/gorhill/uBlock/issues/1545 - // Network filter candidates from all other elements found at [x,y]. - // https://www.reddit.com/r/uBlockOrigin/comments/qmjk36/ - // Extract network candidates first. - if ( typeof x === 'number' ) { - const magicAttr = `${pickerUniqueId}-clickblind`; - pickerFrame.setAttribute(magicAttr, ''); - const elems = document.elementsFromPoint(x, y); - pickerFrame.removeAttribute(magicAttr); - for ( const elem of elems ) { - netFilterFromElement(elem); - } - } else if ( first !== null ) { - netFilterFromElement(first); - } - - // Cosmetic filter candidates from ancestors. - // https://github.com/gorhill/uBlock/issues/2519 - // https://github.com/uBlockOrigin/uBlock-issues/issues/17 - // Prepend `body` if full selector is ambiguous. - let elem = first; - while ( elem && elem !== document.body ) { - cosmeticFilterFromElement(elem); - elem = elem.parentNode; - } - // The body tag is needed as anchor only when the immediate child - // uses `nth-of-type`. - let i = cosmeticFilterCandidates.length; - if ( i !== 0 ) { - const selector = cosmeticFilterCandidates[i-1].slice(2); - if ( safeQuerySelectorAll(document.body, selector).length > 1 ) { - cosmeticFilterCandidates.push('##body'); - } - } - - // https://github.com/gorhill/uBlock/commit/ebaa8a8bb28aef043a68c99965fe6c128a3fe5e4#commitcomment-63818019 - // If still no best candidate, just use whatever is available in network - // filter candidates -- which may have been previously skipped in favor - // of cosmetic filters. - if ( bestCandidateFilter === null && netFilterCandidates.length !== 0 ) { - bestCandidateFilter = { - type: 'net', - filters: netFilterCandidates, - slot: 0 - }; - } - - return netFilterCandidates.length + cosmeticFilterCandidates.length; -}; - -/******************************************************************************* - - filterToDOMInterface.queryAll - @desc Look-up all the HTML elements matching the filter passed in - argument. - @param string, a cosmetic or network filter. - @param function, called once all items matching the filter have been - collected. - @return array, or undefined if the filter is invalid. - - filterToDOMInterface.preview - @desc Apply/unapply filter to the DOM. - @param string, a cosmetic of network filter, or literal false to remove - the effects of the filter on the DOM. - @return undefined. - - TODO: need to be revised once I implement chained cosmetic operators. - -*/ - -const filterToDOMInterface = (( ) => { - const reHnAnchorPrefix = '^[\\w-]+://(?:[^/?#]+\\.)?'; - const reCaret = '(?:[^%.0-9a-z_-]|$)'; - const rePseudoElements = /:(?::?after|:?before|:[a-z-]+)$/; - - const matchElemToRegex = (elem, re) => { - const srcProp = netFilter1stSources[elem.localName]; - let src = elem[srcProp]; - if ( src instanceof SVGAnimatedString ) { - src = src.baseVal; - } - if ( typeof src === 'string' && /^https?:\/\//.test(src) ) { - if ( re.test(src) ) { return srcProp; } - } - src = elem.currentSrc; - if ( typeof src === 'string' && /^https?:\/\//.test(src) ) { - if ( re.test(src) ) { return srcProp; } - } - }; - - // Net filters: we need to lookup manually -- translating into a foolproof - // CSS selector is just not possible. - // - // https://github.com/chrisaljoudi/uBlock/issues/945 - // Transform into a regular expression, this allows the user to - // edit and insert wildcard(s) into the proposed filter. - // https://www.reddit.com/r/uBlockOrigin/comments/c5do7w/ - // Better handling of pure hostname filters. Also, discard single - // alphanumeric character filters. - const fromNetworkFilter = function(filter) { - const out = []; - if ( /^[0-9a-z]$/i.test(filter) ) { return out; } - let reStr = ''; - if ( - filter.length > 2 && - filter.startsWith('/') && - filter.endsWith('/') - ) { - reStr = filter.slice(1, -1); - } else if ( /^\w[\w.-]*[a-z]$/i.test(filter) ) { - reStr = reHnAnchorPrefix + - filter.toLowerCase().replace(/\./g, '\\.') + - reCaret; - } else { - let rePrefix = '', reSuffix = ''; - if ( filter.startsWith('||') ) { - rePrefix = reHnAnchorPrefix; - filter = filter.slice(2); - } else if ( filter.startsWith('|') ) { - rePrefix = '^'; - filter = filter.slice(1); - } - if ( filter.endsWith('|') ) { - reSuffix = '$'; - filter = filter.slice(0, -1); - } - reStr = rePrefix + - filter.replace(/[.+?${}()|[\]\\]/g, '\\$&') - .replace(/\*+/g, '.*') - .replace(/\^/g, reCaret) + - reSuffix; - } - let reFilter = null; - try { - reFilter = new RegExp(reStr, 'i'); - } - catch (e) { - return out; - } - - // Lookup by tag names. - // https://github.com/uBlockOrigin/uBlock-issues/issues/2260 - // Maybe get to the actual URL indirectly. - // - // https://github.com/uBlockOrigin/uBlock-issues/issues/3142 - // Don't try to match against non-network URIs. - const elems = document.querySelectorAll( - Object.keys(netFilter1stSources).join() - ); - for ( const elem of elems ) { - const srcProp = matchElemToRegex(elem, reFilter); - if ( srcProp === undefined ) { continue; } - out.push({ - elem, - src: srcProp, - opt: filterTypes[elem.localName], - style: vAPI.hideStyle, - }); - } - - // Find matching background image in current set of candidate elements. - for ( const elem of candidateElements ) { - if ( reFilter.test(backgroundImageURLFromElement(elem)) ) { - out.push({ - elem, - bg: true, - opt: 'image', - style: hideBackgroundStyle, - }); - } - } - - return out; - }; - - // Cosmetic filters: these are straight CSS selectors. - // - // https://github.com/uBlockOrigin/uBlock-issues/issues/389 - // Test filter using comma-separated list to better detect invalid CSS - // selectors. - // - // https://github.com/gorhill/uBlock/issues/2515 - // Remove trailing pseudo-element when querying. - const fromPlainCosmeticFilter = function(raw) { - let elems; - try { - document.documentElement.matches(`${raw},\na`); - elems = document.querySelectorAll( - raw.replace(rePseudoElements, '') - ); - } - catch (e) { - return; - } - const out = []; - for ( const elem of elems ) { - if ( elem === pickerFrame ) { continue; } - out.push({ elem, raw, style: vAPI.hideStyle }); - } - return out; - }; - - // https://github.com/gorhill/uBlock/issues/1772 - // Handle procedural cosmetic filters. - // - // https://github.com/gorhill/uBlock/issues/2515 - // Remove trailing pseudo-element when querying. - const fromCompiledCosmeticFilter = function(raw) { - if ( noCosmeticFiltering ) { return; } - if ( typeof raw !== 'string' ) { return; } - let elems, style; - try { - const o = JSON.parse(raw); - elems = vAPI.domFilterer.createProceduralFilter(o).exec(); - switch ( o.action && o.action[0] || '' ) { - case '': - case 'remove': - style = vAPI.hideStyle; - break; - case 'style': - style = o.action[1]; - break; - default: - break; - } - } catch(ex) { - return; - } - if ( !elems ) { return; } - const out = []; - for ( const elem of elems ) { - out.push({ elem, raw, style }); - } - return out; - }; - - vAPI.epickerStyleProxies = vAPI.epickerStyleProxies || new Map(); - - let lastFilter; - let lastResultset; - let previewing = false; - - const queryAll = function(details) { - let { filter, compiled } = details; - filter = filter.trim(); - if ( filter === lastFilter ) { return lastResultset; } - unapply(); - if ( filter === '' || filter === '!' ) { - lastFilter = ''; - lastResultset = undefined; - return; - } - lastFilter = filter; - if ( reCosmeticAnchor.test(filter) === false ) { - lastResultset = fromNetworkFilter(filter); - if ( previewing ) { apply(); } - return lastResultset; - } - lastResultset = fromPlainCosmeticFilter(compiled); - if ( lastResultset ) { - if ( previewing ) { apply(); } - return lastResultset; - } - // Procedural cosmetic filter - lastResultset = fromCompiledCosmeticFilter(compiled); - if ( previewing ) { apply(); } - return lastResultset; - }; - - const apply = function() { - unapply(); - if ( Array.isArray(lastResultset) === false ) { return; } - const rootElem = document.documentElement; - for ( const { elem, style } of lastResultset ) { - if ( elem === pickerFrame ) { continue; } - if ( style === undefined ) { continue; } - if ( elem === rootElem && style === vAPI.hideStyle ) { continue; } - let styleToken = vAPI.epickerStyleProxies.get(style); - if ( styleToken === undefined ) { - styleToken = vAPI.randomToken(); - vAPI.epickerStyleProxies.set(style, styleToken); - vAPI.userStylesheet.add(`[${styleToken}]\n{${style}}`, true); - } - elem.setAttribute(styleToken, ''); - } - }; - - const unapply = function() { - for ( const styleToken of vAPI.epickerStyleProxies.values() ) { - for ( const elem of document.querySelectorAll(`[${styleToken}]`) ) { - elem.removeAttribute(styleToken); - } - } - }; - - // https://www.reddit.com/r/uBlockOrigin/comments/c62irc/ - // Support injecting the cosmetic filters into the DOM filterer - // immediately rather than wait for the next page load. - const preview = function(state, permanent = false) { - previewing = state !== false; - if ( previewing === false ) { - return unapply(); - } - if ( Array.isArray(lastResultset) === false ) { return; } - if ( permanent === false || reCosmeticAnchor.test(lastFilter) === false ) { - return apply(); - } - if ( noCosmeticFiltering ) { return; } - const cssSelectors = new Set(); - const proceduralSelectors = new Set(); - for ( const { raw } of lastResultset ) { - if ( raw.startsWith('{') ) { - proceduralSelectors.add(raw); - } else { - cssSelectors.add(raw); - } - } - if ( cssSelectors.size !== 0 ) { - vAPI.domFilterer.addCSS( - `${Array.from(cssSelectors).join('\n')}\n{${vAPI.hideStyle}}`, - { mustInject: true } - ); - } - if ( proceduralSelectors.size !== 0 ) { - vAPI.domFilterer.addProceduralSelectors( - Array.from(proceduralSelectors) - ); - } - }; - - return { preview, queryAll }; -})(); - -/******************************************************************************/ - -const onOptimizeCandidates = function(details) { - const { candidates } = details; - const results = []; - for ( const paths of candidates ) { - let count = Number.MAX_SAFE_INTEGER; - let selector = ''; - for ( let i = 0, n = paths.length; i < n; i++ ) { - const s = paths.slice(n - i - 1).join(''); - const elems = document.querySelectorAll(s); - if ( elems.length < count ) { - selector = s; - count = elems.length; - } - } - results.push({ selector: `##${selector}`, count }); - } - // Sort by most match count and shortest selector to least match count and - // longest selector. - results.sort((a, b) => { - const r = b.count - a.count; - if ( r !== 0 ) { return r; } - return a.selector.length - b.selector.length; - }); - - pickerFramePort.postMessage({ - what: 'candidatesOptimized', - candidates: results.map(a => a.selector), - slot: details.slot, - }); -}; - -/******************************************************************************/ - -const showDialog = function(options) { - pickerFramePort.postMessage({ - what: 'showDialog', - url: self.location.href, - netFilters: netFilterCandidates, - cosmeticFilters: cosmeticFilterCandidates, - filter: bestCandidateFilter, - options, - }); -}; - -/******************************************************************************/ - -const elementFromPoint = (( ) => { - let lastX, lastY; - - return (x, y) => { - if ( x !== undefined ) { - lastX = x; lastY = y; - } else if ( lastX !== undefined ) { - x = lastX; y = lastY; - } else { - return null; - } - if ( !pickerFrame ) { return null; } - const magicAttr = `${pickerUniqueId}-clickblind`; - pickerFrame.setAttribute(magicAttr, ''); - let elem = document.elementFromPoint(x, y); - if ( - elem === null || /* to skip following tests */ - elem === document.body || - elem === document.documentElement || ( - pickerBootArgs.zap !== true && - noCosmeticFiltering && - resourceURLsFromElement(elem).length === 0 - ) - ) { - elem = null; - } - // https://github.com/uBlockOrigin/uBlock-issues/issues/380 - pickerFrame.removeAttribute(magicAttr); - return elem; - }; -})(); - -/******************************************************************************/ - -const highlightElementAtPoint = function(mx, my) { - const elem = elementFromPoint(mx, my); - highlightElements(elem ? [ elem ] : []); -}; - -/******************************************************************************/ - -const filterElementAtPoint = function(mx, my, broad) { - if ( filtersFrom(mx, my) === 0 ) { return; } - showDialog({ broad }); -}; - -/******************************************************************************/ - -// https://www.reddit.com/r/uBlockOrigin/comments/bktxtb/scrolling_doesnt_work/emn901o -// Override 'fixed' position property on body element if present. - -// With touch-driven devices, first highlight the element and remove only -// when tapping again the highlighted area. - -const zapElementAtPoint = function(mx, my, options) { - if ( options.highlight ) { - const elem = elementFromPoint(mx, my); - if ( elem ) { - highlightElements([ elem ]); - } - return; - } - - let elemToRemove = targetElements.length !== 0 && targetElements[0] || null; - if ( elemToRemove === null && mx !== undefined ) { - elemToRemove = elementFromPoint(mx, my); - } - - if ( elemToRemove instanceof Element === false ) { return; } - - const getStyleValue = (elem, prop) => { - const style = window.getComputedStyle(elem); - return style ? style[prop] : ''; - }; - - // Heuristic to detect scroll-locking: remove such lock when detected. - let maybeScrollLocked = elemToRemove.shadowRoot instanceof DocumentFragment; - if ( maybeScrollLocked === false ) { - let elem = elemToRemove; - do { - maybeScrollLocked = - parseInt(getStyleValue(elem, 'zIndex'), 10) >= 1000 || - getStyleValue(elem, 'position') === 'fixed'; - elem = elem.parentElement; - } while ( elem !== null && maybeScrollLocked === false ); - } - if ( maybeScrollLocked ) { - const doc = document; - if ( getStyleValue(doc.body, 'overflowY') === 'hidden' ) { - doc.body.style.setProperty('overflow', 'auto', 'important'); - } - if ( getStyleValue(doc.body, 'position') === 'fixed' ) { - doc.body.style.setProperty('position', 'initial', 'important'); - } - if ( getStyleValue(doc.documentElement, 'position') === 'fixed' ) { - doc.documentElement.style.setProperty('position', 'initial', 'important'); - } - if ( getStyleValue(doc.documentElement, 'overflowY') === 'hidden' ) { - doc.documentElement.style.setProperty('overflow', 'auto', 'important'); - } - } - elemToRemove.remove(); - highlightElementAtPoint(mx, my); -}; - -/******************************************************************************/ - -const onKeyPressed = function(ev) { - // Delete - if ( - (ev.key === 'Delete' || ev.key === 'Backspace') && - pickerBootArgs.zap - ) { - ev.stopPropagation(); - ev.preventDefault(); - zapElementAtPoint(); - return; - } - // Esc - if ( ev.key === 'Escape' || ev.which === 27 ) { - ev.stopPropagation(); - ev.preventDefault(); - filterToDOMInterface.preview(false); - quitPicker(); - return; - } -}; - -/******************************************************************************/ - -// https://github.com/chrisaljoudi/uBlock/issues/190 -// May need to dynamically adjust the height of the overlay + new position -// of highlighted elements. - -const onViewportChanged = function() { - highlightElements(targetElements, true); -}; - -/******************************************************************************/ - -// Auto-select a specific target, if any, and if possible - -const startPicker = function() { - pickerFrame.focus(); - - self.addEventListener('scroll', onViewportChanged, { passive: true }); - self.addEventListener('resize', onViewportChanged, { passive: true }); - self.addEventListener('keydown', onKeyPressed, true); - - // Try using mouse position - if ( - pickerBootArgs.mouse && - vAPI.mouseClick instanceof Object && - typeof vAPI.mouseClick.x === 'number' && - vAPI.mouseClick.x > 0 - ) { - if ( filtersFrom(vAPI.mouseClick.x, vAPI.mouseClick.y) !== 0 ) { - return showDialog(); - } - } - - // No mouse position available, use suggested target - const target = pickerBootArgs.target || ''; - const pos = target.indexOf('\t'); - if ( pos === -1 ) { return; } - - const srcAttrMap = { - 'a': 'href', - 'audio': 'src', - 'embed': 'src', - 'iframe': 'src', - 'img': 'src', - 'video': 'src', - }; - const tagName = target.slice(0, pos); - const url = target.slice(pos + 1); - const attr = srcAttrMap[tagName]; - if ( attr === undefined ) { return; } - const elems = document.getElementsByTagName(tagName); - for ( const elem of elems ) { - if ( elem === pickerFrame ) { continue; } - const srcs = resourceURLsFromElement(elem); - if ( - (srcs.length !== 0 && srcs.includes(url) === false) || - (srcs.length === 0 && url !== 'about:blank') - ) { - continue; - } - filtersFrom(elem); - if ( - netFilterCandidates.length !== 0 || - cosmeticFilterCandidates.length !== 0 - ) { - if ( pickerBootArgs.mouse !== true ) { - elem.scrollIntoView({ - behavior: 'smooth', - block: 'center', - inline: 'center' - }); - } - showDialog({ broad: true }); - } - return; - } - - // A target was specified, but it wasn't found: abort. - quitPicker(); -}; - -/******************************************************************************/ - -// Let's have the element picker code flushed from memory when no longer -// in use: to ensure this, release all local references. - -const quitPicker = function() { - self.removeEventListener('scroll', onViewportChanged, { passive: true }); - self.removeEventListener('resize', onViewportChanged, { passive: true }); - self.removeEventListener('keydown', onKeyPressed, true); - vAPI.shutdown.remove(quitPicker); - if ( pickerFramePort ) { - pickerFramePort.close(); - pickerFramePort = null; - } - if ( pickerFrame ) { - pickerFrame.remove(); - pickerFrame = null; - } - vAPI.userStylesheet.remove(pickerCSS); - vAPI.userStylesheet.apply(); - vAPI.pickerFrame = false; - self.focus(); -}; - -vAPI.shutdown.add(quitPicker); - -/******************************************************************************/ - -const onDialogMessage = function(msg) { - switch ( msg.what ) { - case 'start': - startPicker(); - if ( pickerFramePort === null ) { break; } - if ( targetElements.length === 0 ) { - highlightElements([], true); - } - break; - case 'optimizeCandidates': - onOptimizeCandidates(msg); - break; - case 'dialogCreate': - filterToDOMInterface.queryAll(msg); - filterToDOMInterface.preview(true, true); - quitPicker(); - break; - case 'dialogSetFilter': { - const resultset = filterToDOMInterface.queryAll(msg) || []; - highlightElements(resultset.map(a => a.elem), true); - if ( msg.filter === '!' ) { break; } - pickerFramePort.postMessage({ - what: 'resultsetDetails', - count: resultset.length, - opt: resultset.length !== 0 ? resultset[0].opt : undefined, - }); - break; - } - case 'quitPicker': - filterToDOMInterface.preview(false); - quitPicker(); - break; - case 'highlightElementAtPoint': - highlightElementAtPoint(msg.mx, msg.my); - break; - case 'unhighlight': - highlightElements([]); - break; - case 'filterElementAtPoint': - filterElementAtPoint(msg.mx, msg.my, msg.broad); - break; - case 'zapElementAtPoint': - zapElementAtPoint(msg.mx, msg.my, msg.options); - if ( msg.options.highlight !== true && msg.options.stay !== true ) { - quitPicker(); - } - break; - case 'togglePreview': - filterToDOMInterface.preview(msg.state); - if ( msg.state === false ) { - highlightElements(targetElements, true); - } - break; - default: - break; - } -}; - -/******************************************************************************/ - -// epicker-ui.html will be injected in the page through an iframe, and -// is a sandboxed so as to prevent the page from interfering with its -// content and behavior. -// -// The purpose of epicker.js is to: -// - Install the element picker UI, and wait for the component to establish -// a direct communication channel. -// - Lookup candidate filters from elements at a specific position. -// - Highlight element(s) at a specific position or according to whether -// they match candidate filters; -// - Preview the result of applying a candidate filter; -// -// When the element picker is installed on a page, the only change the page -// sees is an iframe with a random attribute. The page can't see the content -// of the iframe, and cannot interfere with its style properties. However the -// page can remove the iframe. - -// The DOM filterer will not be present when cosmetic filtering is disabled. -const noCosmeticFiltering = - vAPI.domFilterer instanceof Object === false || - vAPI.noSpecificCosmeticFiltering === true; - -// https://github.com/gorhill/uBlock/issues/1529 -// In addition to inline styles, harden the element picker styles by using -// dedicated CSS rules. -const pickerCSSStyle = [ - 'background: transparent', - 'border: 0', - 'border-radius: 0', - 'box-shadow: none', - 'color-scheme: light dark', - 'display: block', - 'filter: none', - 'height: 100vh', - ' height: 100svh', - 'left: 0', - 'margin: 0', - 'max-height: none', - 'max-width: none', - 'min-height: unset', - 'min-width: unset', - 'opacity: 1', - 'outline: 0', - 'padding: 0', - 'pointer-events: auto', - 'position: fixed', - 'top: 0', - 'transform: none', - 'visibility: hidden', - 'width: 100%', - 'z-index: 2147483647', - '' -].join(' !important;\n'); - - -const pickerCSS = ` -:root > [${pickerUniqueId}] { - ${pickerCSSStyle} -} -:root > [${pickerUniqueId}-loaded] { - visibility: visible !important; -} -:root [${pickerUniqueId}-clickblind] { - pointer-events: none !important; -} -`; - -vAPI.userStylesheet.add(pickerCSS); -vAPI.userStylesheet.apply(); - -let pickerBootArgs; -let pickerFramePort = null; - -const bootstrap = async ( ) => { - pickerBootArgs = await vAPI.messaging.send('elementPicker', { - what: 'elementPickerArguments', - }); - if ( typeof pickerBootArgs !== 'object' ) { return; } - if ( pickerBootArgs === null ) { return; } - // Restore net filter union data if origin is the same. - const eprom = pickerBootArgs.eprom || null; - if ( eprom !== null && eprom.lastNetFilterSession === lastNetFilterSession ) { - lastNetFilterHostname = eprom.lastNetFilterHostname || ''; - lastNetFilterUnion = eprom.lastNetFilterUnion || ''; - } - const url = new URL(pickerBootArgs.pickerURL); - if ( pickerBootArgs.zap ) { - url.searchParams.set('zap', '1'); - } - return new Promise(resolve => { - const iframe = document.createElement('iframe'); - iframe.setAttribute(pickerUniqueId, ''); - document.documentElement.append(iframe); - iframe.addEventListener('load', ( ) => { - iframe.setAttribute(`${pickerUniqueId}-loaded`, ''); - const channel = new MessageChannel(); - pickerFramePort = channel.port1; - pickerFramePort.onmessage = ev => { - onDialogMessage(ev.data || {}); - }; - pickerFramePort.onmessageerror = ( ) => { - quitPicker(); - }; - iframe.contentWindow.postMessage( - { what: 'epickerStart' }, - url.href, - [ channel.port2 ] - ); - resolve(iframe); - }, { once: true }); - iframe.contentWindow.location = url.href; - }); -}; - -let pickerFrame = await bootstrap(); -if ( Boolean(pickerFrame) === false ) { - quitPicker(); -} - -/******************************************************************************/ - -})(); - - - - - - - - -/******************************************************************************* - - DO NOT: - - Remove the following code - - Add code beyond the following code - Reason: - - https://github.com/gorhill/uBlock/pull/3721 - - uBO never uses the return value from injected content scripts - -**/ - -void 0; diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/load-3p-css.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/load-3p-css.js deleted file mode 100644 index bb7d542..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/load-3p-css.js +++ /dev/null @@ -1,67 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2020-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -(( ) => { - if ( typeof vAPI !== 'object' ) { return; } - - if ( vAPI.dynamicReloadToken === undefined ) { - vAPI.dynamicReloadToken = vAPI.randomToken(); - } - - for ( const sheet of Array.from(document.styleSheets) ) { - let loaded = false; - try { - loaded = sheet.rules.length !== 0; - } catch(ex) { - } - if ( loaded ) { continue; } - const link = sheet.ownerNode || null; - if ( link === null || link.localName !== 'link' ) { continue; } - if ( link.hasAttribute(vAPI.dynamicReloadToken) ) { continue; } - const clone = link.cloneNode(true); - clone.setAttribute(vAPI.dynamicReloadToken, ''); - link.replaceWith(clone); - } -})(); - - - - - - - - -/******************************************************************************* - - DO NOT: - - Remove the following code - - Add code beyond the following code - Reason: - - https://github.com/gorhill/uBlock/pull/3721 - - uBO never uses the return value from injected content scripts - -**/ - -void 0; diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/load-large-media-all.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/load-large-media-all.js deleted file mode 100644 index a44539e..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/load-large-media-all.js +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -(( ) => { - -/******************************************************************************/ - -if ( - typeof vAPI !== 'object' || - vAPI.loadAllLargeMedia instanceof Function === false -) { - return; -} - -vAPI.loadAllLargeMedia(); -vAPI.loadAllLargeMedia = undefined; - -/******************************************************************************/ - -})(); - - - - - - - - -/******************************************************************************* - - DO NOT: - - Remove the following code - - Add code beyond the following code - Reason: - - https://github.com/gorhill/uBlock/pull/3721 - - uBO never uses the return value from injected content scripts - -**/ - -void 0; diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/load-large-media-interactive.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/load-large-media-interactive.js deleted file mode 100644 index 57198e4..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/js/scriptlets/load-large-media-interactive.js +++ /dev/null @@ -1,299 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a comprehensive, efficient content blocker - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ - -(( ) => { - -/******************************************************************************/ - -// This can happen -if ( typeof vAPI !== 'object' || vAPI.loadAllLargeMedia instanceof Function ) { - return; -} - -/******************************************************************************/ - -const largeMediaElementAttribute = 'data-' + vAPI.sessionId; -const largeMediaElementSelector = - ':root audio[' + largeMediaElementAttribute + '],\n' + - ':root img[' + largeMediaElementAttribute + '],\n' + - ':root picture[' + largeMediaElementAttribute + '],\n' + - ':root video[' + largeMediaElementAttribute + ']'; - -/******************************************************************************/ - -const isMediaElement = function(elem) { - return /^(?:audio|img|picture|video)$/.test(elem.localName); -}; - -/******************************************************************************/ - -const mediaNotLoaded = function(elem) { - switch ( elem.localName ) { - case 'audio': - case 'video': { - const src = elem.src || ''; - if ( src.startsWith('blob:') ) { - elem.autoplay = false; - elem.pause(); - } - return elem.readyState === 0 || elem.error !== null; - } - case 'img': { - if ( elem.naturalWidth !== 0 || elem.naturalHeight !== 0 ) { - break; - } - const style = window.getComputedStyle(elem); - // For some reason, style can be null with Pale Moon. - return style !== null ? - style.getPropertyValue('display') !== 'none' : - elem.offsetHeight !== 0 && elem.offsetWidth !== 0; - } - default: - break; - } - return false; -}; - -/******************************************************************************/ - -// For all media resources which have failed to load, trigger a reload. - -//
- -
-
-
-
- - - - - -
-
-
-
    -
    -
    -
    -
    -
    - - - -   - - - - - angle-up -
    -
    -
    - -
    css/fontimagemediascript
    -
    xhrframedomscriptletother
    -
    -
    -
    tabless
    -
    getheadpost
    -
    - -
    csppermissionsredirect
    -
    removeparamuritransform
    -
    -
    - -
    - -
    infoerror
    -
    -
    -
    -
    -
    -
    -
    - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    00:00:00 ** 3,3optionsinline-script 
    -
    -
    -
    -
    -
    -
    -
    -
    - -   - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/managed_storage.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/managed_storage.json deleted file mode 100644 index 25614dd..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/managed_storage.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-03/schema#", - "type": "object", - "properties": { - "adminSettings": { - "title": "A valid JSON string compliant with uBO's backup format", - "description": "All entries present will overwrite local settings.", - "type": "string" - }, - "advancedSettings": { - "title": "A list of [name,value] pairs to populate advanced settings", - "type": "array", - "items": { - "title": "A [name,value] pair", - "type": "array", - "items": { "type": "string" } - } - }, - "userSettings": { - "title": "A list of [name,value] pairs to populate user settings", - "type": "array", - "items": { - "title": "A [name,value] pair", - "type": "array", - "items": { "type": "string" } - } - }, - "disableDashboard": { - "title": "Set to true to prevent access to configuration options", - "type": "boolean" - }, - "disabledPopupPanelParts": { - "title": "An array of strings used to remove parts of the popup panel", - "type": "array", - "items": { "type": "string" } - }, - "toAdd": { - "title": "Settings to add at launch time", - "type": "object", - "properties": { - "trustedSiteDirectives": { - "title": "A list of trusted-site directives", - "description": "Trusted-site directives to always add at launch time.", - "type": "array", - "items": { "type": "string" } - } - } - }, - "toOverwrite": { - "title": "Settings to overwrite at launch time", - "type": "object", - "properties": { - "filters": { - "title": "A collection of filters", - "description": "The set of user filters to use at launch time -- where each entry is a distinct line.", - "type": "array", - "items": { "type": "string" } - }, - "filterLists": { - "title": "A collection of list identifiers and/or list URLs", - "description": "The set of filter lists to use at launch time.", - "type": "array", - "items": { "type": "string" } - }, - "trustedSiteDirectives": { - "title": "A list of trusted-site directives", - "type": "array", - "items": { "type": "string" } - } - } - } - } -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/manifest.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/manifest.json deleted file mode 100644 index bcac289..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/manifest.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "author": "Raymond Hill & contributors", - "background": { - "page": "background.html" - }, - "browser_action": { - "default_icon": { - "16": "img/icon_16.png", - "32": "img/icon_32.png", - "64": "img/icon_64.png" - }, - "default_popup": "popup-fenix.html", - "default_title": "uBlock Origin" - }, - "commands": { - "launch-element-picker": { - "description": "__MSG_popupTipPicker__" - }, - "launch-element-zapper": { - "description": "__MSG_popupTipZapper__" - }, - "launch-logger": { - "description": "__MSG_popupTipLog__" - }, - "open-dashboard": { - "description": "__MSG_popupTipDashboard__" - }, - "relax-blocking-mode": { - "description": "__MSG_relaxBlockingMode__" - }, - "toggle-cosmetic-filtering": { - "description": "__MSG_toggleCosmeticFiltering__" - }, - "toggle-javascript": { - "description": "__MSG_toggleJavascript__" - } - }, - "content_scripts": [ { - "all_frames": true, - "js": [ "/js/vapi.js", "/js/vapi-client.js", "/js/contentscript.js" ], - "match_about_blank": true, - "matches": [ "http://*/*", "https://*/*" ], - "run_at": "document_start" - }, { - "all_frames": false, - "js": [ "/js/scriptlets/subscriber.js" ], - "matches": [ "https://easylist.to/*", "https://*.fanboy.co.nz/*", "https://filterlists.com/*", "https://forums.lanik.us/*", "https://github.com/*", "https://*.github.io/*" ], - "run_at": "document_idle" - }, { - "all_frames": false, - "js": [ "/js/scriptlets/updater.js" ], - "matches": [ "https://github.com/uBlockOrigin/*", "https://ublockorigin.github.io/*", "https://*.reddit.com/r/uBlockOrigin/*" ], - "run_at": "document_idle" - } ], - "content_security_policy": "script-src 'self'; object-src 'self'", - "default_locale": "en", - "description": "__MSG_extShortDesc__", - "icons": { - "128": "img/icon_128.png", - "16": "img/icon_16.png", - "32": "img/icon_32.png", - "64": "img/icon_64.png" - }, - "incognito": "split", - "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmJNzUNVjS6Q1qe0NRqpmfX/oSJdgauSZNdfeb5RV1Hji21vX0TivpP5gq0fadwmvmVCtUpOaNUopgejiUFm/iKHPs0o3x7hyKk/eX0t2QT3OZGdXkPiYpTEC0f0p86SQaLoA2eHaOG4uCGi7sxLJmAXc6IsxGKVklh7cCoLUgWEMnj8ZNG2Y8UKG3gBdrpES5hk7QyFDMraO79NmSlWRNgoJHX6XRoY66oYThFQad8KL8q3pf3Oe8uBLKywohU0ZrDPViWHIszXoE9HEvPTFAbHZ1umINni4W/YVs+fhqHtzRJcaKJtsTaYy+cholu5mAYeTZqtHf6bcwJ8t9i2afwIDAQAB", - "manifest_version": 2, - "minimum_chrome_version": "73.0", - "name": "uBlock Origin", - "options_ui": { - "open_in_tab": true, - "page": "dashboard.html" - }, - "permissions": [ "alarms", "contextMenus", "privacy", "storage", "tabs", "unlimitedStorage", "webNavigation", "webRequest", "webRequestBlocking", "\u003Call_urls>" ], - "short_name": "uBlock₀", - "storage": { - "managed_schema": "managed_storage.json" - }, - "update_url": "https://clients2.google.com/service/update2/crx", - "version": "1.59.0", - "web_accessible_resources": [ "/web_accessible_resources/*" ] -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/no-dashboard.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/no-dashboard.html deleted file mode 100644 index 35b27c9..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/no-dashboard.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - -uBlock — About - - - - - - - -
    - Your administrator removed the ability to access the dashboard -
    - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/popup-fenix.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/popup-fenix.html deleted file mode 100644 index 7c43e98..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/popup-fenix.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - - - - -
    -
    -
    -
    ­ 
    -
    -
    - lock - eraser -
    -
    - - - - - - - -
    -
    - refresh -
    -
    -
    -
    - ph-popups - film - eye-slash - ph-readermode-text-size - code -
    -
    -
    - __ - __ - __ -
    -
    - bolt - eye-dropper - comment-alt - list-alt - cogs -
    -
    - -
    -
    -
    - -
    -
    -
    - - angle-up - - - angle-up - -
    -
    -
    -
    filter
    ___
    ___
    -
    _
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/settings.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/settings.html deleted file mode 100644 index 92dfca3..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/settings.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -uBlock — Settings - - - - - - - - -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -   - - - -
    -
    -
    -
    -
    - -
    -
    -
    - - -
    -
    -
    -
    -
    - - -
    -
    - - - -
    -
    - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/support.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/support.html deleted file mode 100644 index 1232942..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/support.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - -uBlock Origin — Support - - - - - - - - - - - - - - -
    -
    -

    -
    -
    -

    -

    - -
    -
    -
    -
    -

    -
    -
    -

    -

    - -
    -
    -
    -
    -

    -
    -
    -

    -

    -

    -

    - -
    -
    -
    -
    -

    -
    -
    -

    -

    - -
    -
    -
    -
    -

    -

    -
    -
    -

    _

    - - _ -
    -
    -
    -

    - -
    -
    -
    -

    -
    - -

    -

    -
    - -

    -

    - -

    - -
    -
    -

    _ ▸

    -
    -
    -

    -

    -

    - - -

    -
    -
    - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/1x1.gif b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/1x1.gif deleted file mode 100644 index e565824..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/1x1.gif and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/2x2.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/2x2.png deleted file mode 100644 index 3639dc7..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/2x2.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/32x32.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/32x32.png deleted file mode 100644 index 7bee0a0..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/32x32.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/3x2.png b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/3x2.png deleted file mode 100644 index a056d86..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/3x2.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/README.txt b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/README.txt deleted file mode 100644 index f9ab5c3..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/README.txt +++ /dev/null @@ -1,11 +0,0 @@ -IMPORTANT - -Content of this folder cannot be accessed without the internal secret token -created for each request to any of the "web accessible resources". - -Any fetch operation made without uBlock Origin's internal secret will result -in failure. This means that despite the content of the folder here declared as -"web accessible resources", it still cannot be seen by the outside world. - -Only uBlock Origin knows the secret token at runtime and hence only -uBlock Origin can access the content of this folder. diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/amazon_ads.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/amazon_ads.js deleted file mode 100644 index 0b6e052..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/amazon_ads.js +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(function() { - 'use strict'; - if ( amznads ) { - return; - } - var w = window; - var noopfn = function() { - ; - }.bind(); - var amznads = { - appendScriptTag: noopfn, - appendTargetingToAdServerUrl: noopfn, - appendTargetingToQueryString: noopfn, - clearTargetingFromGPTAsync: noopfn, - doAllTasks: noopfn, - doGetAdsAsync: noopfn, - doTask: noopfn, - detectIframeAndGetURL: noopfn, - getAds: noopfn, - getAdsAsync: noopfn, - getAdForSlot: noopfn, - getAdsCallback: noopfn, - getDisplayAds: noopfn, - getDisplayAdsAsync: noopfn, - getDisplayAdsCallback: noopfn, - getKeys: noopfn, - getReferrerURL: noopfn, - getScriptSource: noopfn, - getTargeting: noopfn, - getTokens: noopfn, - getValidMilliseconds: noopfn, - getVideoAds: noopfn, - getVideoAdsAsync: noopfn, - getVideoAdsCallback: noopfn, - handleCallBack: noopfn, - hasAds: noopfn, - renderAd: noopfn, - saveAds: noopfn, - setTargeting: noopfn, - setTargetingForGPTAsync: noopfn, - setTargetingForGPTSync: noopfn, - tryGetAdsAsync: noopfn, - updateAds: noopfn - }; - w.amznads = amznads; - w.amzn_ads = w.amzn_ads || noopfn; - w.aax_write = w.aax_write || noopfn; - w.aax_render_ad = w.aax_render_ad || noopfn; -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/amazon_apstag.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/amazon_apstag.js deleted file mode 100644 index 1ddd5a4..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/amazon_apstag.js +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -// https://www.reddit.com/r/uBlockOrigin/comments/ghjqph/ -// https://github.com/NanoMeow/QuickReports/issues/3717 -// https://www.reddit.com/r/uBlockOrigin/comments/qyx7en/ - -// https://searchfox.org/mozilla-central/source/browser/extensions/webcompat/shims/apstag.js -// Import queue-related initialization code. - -(function() { - 'use strict'; - const w = window; - const noopfn = function() { - ; // jshint ignore:line - }.bind(); - const _Q = w.apstag && w.apstag._Q || []; - const apstag = { - _Q, - fetchBids: function(a, b) { - if ( typeof b === 'function' ) { - b([]); - } - }, - init: noopfn, - setDisplayBids: noopfn, - targetingKeys: noopfn, - }; - w.apstag = apstag; - _Q.push = function(prefix, args) { - try { - switch (prefix) { - case 'f': - apstag.fetchBids(...args); - break; - } - } catch (e) { - console.trace(e); - } - }; - for ( const cmd of _Q ) { - _Q.push(cmd); - } -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/ampproject_v0.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/ampproject_v0.js deleted file mode 100644 index e822f9d..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/ampproject_v0.js +++ /dev/null @@ -1,34 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(function() { - 'use strict'; - const head = document.head; - if ( !head ) { return; } - const style = document.createElement('style'); - style.textContent = [ - 'body {', - ' animation: none !important;', - ' overflow: unset !important;', - '}' - ].join('\n'); - head.appendChild(style); -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/chartbeat.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/chartbeat.js deleted file mode 100644 index 780d3dd..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/chartbeat.js +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(function() { - 'use strict'; - const noopfn = function() { - }; - window.pSUPERFLY = { - activity: noopfn, - virtualPage: noopfn - }; - for ( const hider of document.querySelectorAll('style[id^=chartbeat-flicker-control]') ) { - hider.remove(); - } -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/click2load.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/click2load.html deleted file mode 100644 index 7ec52b9..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/click2load.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - -uBlock Origin Click-to-Load - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/dom-inspector.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/dom-inspector.html deleted file mode 100644 index d338610..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/dom-inspector.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -uBlock Origin Inspector - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/doubleclick_instream_ad_status.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/doubleclick_instream_ad_status.js deleted file mode 100644 index dfec48c..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/doubleclick_instream_ad_status.js +++ /dev/null @@ -1 +0,0 @@ -window.google_ad_status = 1; diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/empty b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/empty deleted file mode 100644 index e69de29..0000000 diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/epicker-ui.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/epicker-ui.html deleted file mode 100644 index ef5e9d7..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/epicker-ui.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - -uBlock Origin Element Picker - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/fingerprint2.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/fingerprint2.js deleted file mode 100644 index 24a39b9..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/fingerprint2.js +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -// Reference: -// https://github.com/fingerprintjs/fingerprintjs/tree/v2 - -(function() { - 'use strict'; - const hex32 = len => { - return Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) - .toString(16) - .slice(-len) - .padStart(len, '0'); - }; - const browserId = `${hex32(8)}${hex32(8)}${hex32(8)}${hex32(8)}`; - const fp2 = function(){}; - fp2.get = function(opts, cb) { - if ( !cb ) { cb = opts; } - setTimeout(( ) => { cb([]); }, 1); - }; - fp2.getPromise = function() { - return Promise.resolve([]); - }; - fp2.getV18 = function() { - return browserId; - }; - fp2.x64hash128 = function() { - return browserId; - }; - fp2.prototype = { - get: function(opts, cb) { - if ( !cb ) { cb = opts; } - setTimeout(( ) => { cb(browserId, []); }, 1); - }, - }; - self.Fingerprint2 = fp2; -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/fingerprint3.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/fingerprint3.js deleted file mode 100644 index 1bf1529..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/fingerprint3.js +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2022-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(function() { - 'use strict'; - const visitorId = (( ) => { - let id = ''; - for ( let i = 0; i < 8; i++ ) { - id += (Math.random() * 0x10000 + 0x1000 | 0).toString(16).slice(-4); - } - return id; - })(); - const FingerprintJS = class { - static hashComponents() { - return visitorId; - } - static load() { - return Promise.resolve(new FingerprintJS()); - } - get() { - return Promise.resolve({ - visitorId, - }); - } - }; - window.FingerprintJS = FingerprintJS; -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/google-analytics_analytics.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/google-analytics_analytics.js deleted file mode 100644 index 6fdf396..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/google-analytics_analytics.js +++ /dev/null @@ -1,110 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(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 [new Tracker()]; - }; - 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(); - 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); - item.eventCallback = ()=>{}; - }; - dl.push = new Proxy(dl.push, { - apply: function(target, thisArg, args) { - doCallback(args[0]); - return Reflect.apply(target, thisArg, args); - } - }); - if ( Array.isArray(dl) ) { - 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/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/google-analytics_cx_api.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/google-analytics_cx_api.js deleted file mode 100644 index 9f63ebe..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/google-analytics_cx_api.js +++ /dev/null @@ -1,36 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(function() { - 'use strict'; - const noopfn = function() { - }; - window.cxApi = { - chooseVariation: function() { - return 0; - }, - getChosenVariation: noopfn, - setAllowHash: noopfn, - setChosenVariation: noopfn, - setCookiePath: noopfn, - setDomainName: noopfn - }; -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/google-analytics_ga.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/google-analytics_ga.js deleted file mode 100644 index c969b38..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/google-analytics_ga.js +++ /dev/null @@ -1,130 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(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://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiDomainDirectory#_gat.GA_Tracker_._link - // https://github.com/uBlockOrigin/uBlock-issues/issues/1807 - if ( - typeof a[0] === 'string' && - /(^|\.)_link$/.test(a[0]) && - typeof a[1] === 'string' - ) { - try { - window.location.assign(a[1]); - } catch(ex) { - } - } - // 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 _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+/); - for ( const method of api ) { - out[method] = noopfn; - } - out._getLinkerUrl = function(a) { - return a; - }; - // https://github.com/AdguardTeam/Scriptlets/issues/154 - out._link = function(a) { - if ( typeof a !== 'string' ) { return; } - try { - window.location.assign(a); - } catch(ex) { - } - }; - 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/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/google-analytics_inpage_linkid.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/google-analytics_inpage_linkid.js deleted file mode 100644 index e893ca9..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/google-analytics_inpage_linkid.js +++ /dev/null @@ -1,28 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(function() { - 'use strict'; - window._gaq = window._gaq || { - push: function() { - } - }; -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/google-ima.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/google-ima.js deleted file mode 100644 index 4556516..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/google-ima.js +++ /dev/null @@ -1,855 +0,0 @@ -/** - * - * Source below is based on Mozilla source code: - * https://searchfox.org/mozilla-central/rev/d317e93d9a59c9e4c06ada85fbff9f6a1ceaaad1/browser/extensions/webcompat/shims/google-ima.js - * - * Modifications to the original code below this comment: - * - Avoid JS syntax not supported by older browser versions - * - Add missing shim event - * - Modified to avoid jshint warnings as per uBO's config - * - Added `OmidVerificationVendor` to `ima` - * - Have `AdError.getInnerError()` return `null` - * - Have `AdDisplayContainer` constructor add DIV element to container - * - Added missing event dispatcher functionality - * - Corrected return type of `Ad.getUniversalAdIds()` - * - Corrected typo in `UniversalAdIdInfo.getAdIdValue()` method name - * - Corrected dispatch of LOAD event when preloading is enabled - * - Corrected dispatch of CONTENT_PAUSE/RESUME_REQUESTED events - * - * Related issue: - * - https://github.com/uBlockOrigin/uBlock-issues/issues/2158 - * -**/ - -'use strict'; - -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/** - * Bug 1713690 - Shim Google Interactive Media Ads ima3.js - * - * Many sites use ima3.js for ad bidding and placement, often in conjunction - * with Google Publisher Tags, Prebid.js and/or other scripts. This shim - * provides a stubbed-out version of the API which helps work around related - * site breakage, such as black bxoes where videos ought to be placed. - */ - -if (!window.google || !window.google.ima || !window.google.ima.VERSION) { - const VERSION = "3.517.2"; - - const CheckCanAutoplay = (function() { - // Sourced from: https://searchfox.org/mozilla-central/source/dom/media/gtest/negative_duration.mp4 - const TEST_VIDEO = new Blob( - [ - new Uint32Array([ - 469762048, - 1887007846, - 1752392036, - 0, - 913273705, - 1717987696, - 828601953, - -1878917120, - 1987014509, - 1811939328, - 1684567661, - 0, - 0, - 0, - -402456576, - 0, - 256, - 1, - 0, - 0, - 256, - 0, - 0, - 0, - 256, - 0, - 0, - 0, - 64, - 0, - 0, - 0, - 0, - 0, - 0, - 33554432, - -201261056, - 1801548404, - 1744830464, - 1684564852, - 251658241, - 0, - 0, - 0, - 0, - 16777216, - 0, - -1, - -1, - 0, - 0, - 0, - 0, - 256, - 0, - 0, - 0, - 256, - 0, - 0, - 0, - 64, - 5, - 53250, - -2080309248, - 1634296941, - 738197504, - 1684563053, - 1, - 0, - 0, - 0, - 0, - -2137614336, - -1, - -1, - 50261, - 754974720, - 1919706216, - 0, - 0, - 1701079414, - 0, - 0, - 0, - 1701079382, - 1851869295, - 1919249508, - 16777216, - 1852402979, - 102, - 1752004116, - 100, - 1, - 0, - 0, - 1852400676, - 102, - 1701995548, - 102, - 0, - 1, - 1819440396, - 32, - 1, - 1651799011, - 108, - 1937011607, - 100, - 0, - 1, - 1668702599, - 49, - 0, - 1, - 0, - 0, - 0, - 33555712, - 4718800, - 4718592, - 0, - 65536, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 16776984, - 1630601216, - 21193590, - -14745500, - 1729626337, - -1407254428, - 89161945, - 1049019, - 9453056, - -251611125, - 27269507, - -379058688, - -1329024392, - 268435456, - 1937011827, - 0, - 0, - 268435456, - 1668510835, - 0, - 0, - 335544320, - 2054386803, - 0, - 0, - 0, - 268435456, - 1868788851, - 0, - 0, - 671088640, - 2019915373, - 536870912, - 2019914356, - 0, - 16777216, - 16777216, - 0, - 0, - 0, - ]), - ], - { type: "video/mp4" } - ); - - let testVideo; - - return function() { - if (!testVideo) { - testVideo = document.createElement("video"); - testVideo.style = - "position:absolute; width:0; height:0; left:0; right:0; z-index:-1; border:0"; - testVideo.setAttribute("muted", "muted"); - testVideo.setAttribute("playsinline", "playsinline"); - testVideo.src = URL.createObjectURL(TEST_VIDEO); - document.body.appendChild(testVideo); - } - return testVideo.play(); - }; - })(); - - const ima = {}; - - class AdDisplayContainer { - constructor(containerElement) { - const divElement = document.createElement("div"); - divElement.style.setProperty("display", "none", "important"); - divElement.style.setProperty("visibility", "collapse", "important"); - containerElement.appendChild(divElement); - } - destroy() {} - initialize() {} - } - - class ImaSdkSettings { - constructor() { - this.c = true; - this.f = {}; - this.i = false; - this.l = ""; - this.p = ""; - this.r = 0; - this.t = ""; - this.v = ""; - } - getCompanionBackfill() {} - getDisableCustomPlaybackForIOS10Plus() { - return this.i; - } - getFeatureFlags() { - return this.f; - } - getLocale() { - return this.l; - } - getNumRedirects() { - return this.r; - } - getPlayerType() { - return this.t; - } - getPlayerVersion() { - return this.v; - } - getPpid() { - return this.p; - } - isCookiesEnabled() { - return this.c; - } - setAutoPlayAdBreaks() {} - setCompanionBackfill() {} - setCookiesEnabled(c) { - this.c = !!c; - } - setDisableCustomPlaybackForIOS10Plus(i) { - this.i = !!i; - } - setFeatureFlags(f) { - this.f = f; - } - setLocale(l) { - this.l = l; - } - setNumRedirects(r) { - this.r = r; - } - setPlayerType(t) { - this.t = t; - } - setPlayerVersion(v) { - this.v = v; - } - setPpid(p) { - this.p = p; - } - setSessionId(/*s*/) {} - setVpaidAllowed(/*a*/) {} - setVpaidMode(/*m*/) {} - - // https://github.com/uBlockOrigin/uBlock-issues/issues/2265#issuecomment-1637094149 - getDisableFlashAds() { - } - setDisableFlashAds() { - } - } - ImaSdkSettings.CompanionBackfillMode = { - ALWAYS: "always", - ON_MASTER_AD: "on_master_ad", - }; - ImaSdkSettings.VpaidMode = { - DISABLED: 0, - ENABLED: 1, - INSECURE: 2, - }; - - class EventHandler { - constructor() { - this.listeners = new Map(); - } - - _dispatch(e) { - let listeners = this.listeners.get(e.type); - listeners = listeners ? Array.from(listeners.values()) : []; - for (const listener of listeners) { - try { - listener(e); - } catch (r) { - console.error(r); - } - } - } - - addEventListener(types, c, options, context) { - if (!Array.isArray(types)) { - types = [types]; - } - - for (const t of types) { - if (!this.listeners.has(t)) { - this.listeners.set(t, new Map()); - } - this.listeners.get(t).set(c, c.bind(context || this)); - } - } - - removeEventListener(types, c) { - if (!Array.isArray(types)) { - types = [types]; - } - - for (const t of types) { - const typeSet = this.listeners.get(t); - if (typeSet) { - typeSet.delete(c); - } - } - } - } - - class AdsLoader extends EventHandler { - constructor() { - super(); - this.settings = new ImaSdkSettings(); - } - contentComplete() {} - destroy() {} - getSettings() { - return this.settings; - } - getVersion() { - return VERSION; - } - requestAds(/*r, c*/) { - // If autoplay is disabled and the page is trying to autoplay a tracking - // ad, then IMA fails with an error, and the page is expected to request - // ads again later when the user clicks to play. - CheckCanAutoplay().then( - () => { - const { ADS_MANAGER_LOADED } = AdsManagerLoadedEvent.Type; - this._dispatch(new ima.AdsManagerLoadedEvent(ADS_MANAGER_LOADED)); - }, - () => { - const e = new ima.AdError( - "adPlayError", - 1205, - 1205, - "The browser prevented playback initiated without user interaction." - ); - this._dispatch(new ima.AdErrorEvent(e)); - } - ); - } - } - - class AdsManager extends EventHandler { - constructor() { - super(); - this.volume = 1; - this._enablePreloading = false; - } - collapse() {} - configureAdsManager() {} - destroy() {} - discardAdBreak() {} - expand() {} - focus() {} - getAdSkippableState() { - return false; - } - getCuePoints() { - return [0]; - } - getCurrentAd() { - return currentAd; - } - getCurrentAdCuePoints() { - return []; - } - getRemainingTime() { - return 0; - } - getVolume() { - return this.volume; - } - init(/*w, h, m, e*/) { - if (this._enablePreloading) { - this._dispatch(new ima.AdEvent(AdEvent.Type.LOADED)); - } - } - isCustomClickTrackingUsed() { - return false; - } - isCustomPlaybackUsed() { - return false; - } - pause() {} - requestNextAdBreak() {} - resize(/*w, h, m*/) {} - resume() {} - setVolume(v) { - this.volume = v; - } - skip() {} - start() { - requestAnimationFrame(() => { - for (const type of [ - AdEvent.Type.LOADED, - AdEvent.Type.STARTED, - AdEvent.Type.CONTENT_PAUSE_REQUESTED, - AdEvent.Type.AD_BUFFERING, - AdEvent.Type.FIRST_QUARTILE, - AdEvent.Type.MIDPOINT, - AdEvent.Type.THIRD_QUARTILE, - AdEvent.Type.COMPLETE, - AdEvent.Type.ALL_ADS_COMPLETED, - AdEvent.Type.CONTENT_RESUME_REQUESTED, - ]) { - try { - this._dispatch(new ima.AdEvent(type)); - } catch (e) { - console.error(e); - } - } - }); - } - stop() {} - updateAdsRenderingSettings(/*s*/) {} - } - - class AdsRenderingSettings {} - - class AdsRequest { - setAdWillAutoPlay() {} - setAdWillPlayMuted() {} - setContinuousPlayback() {} - } - - class AdPodInfo { - getAdPosition() { - return 1; - } - getIsBumper() { - return false; - } - getMaxDuration() { - return -1; - } - getPodIndex() { - return 1; - } - getTimeOffset() { - return 0; - } - getTotalAds() { - return 1; - } - } - - class Ad { - constructor() { - this._pi = new AdPodInfo(); - } - getAdId() { - return ""; - } - getAdPodInfo() { - return this._pi; - } - getAdSystem() { - return ""; - } - getAdvertiserName() { - return ""; - } - getApiFramework() { - return null; - } - getCompanionAds() { - return []; - } - getContentType() { - return ""; - } - getCreativeAdId() { - return ""; - } - getCreativeId() { - return ""; - } - getDealId() { - return ""; - } - getDescription() { - return ""; - } - getDuration() { - return 8.5; - } - getHeight() { - return 0; - } - getMediaUrl() { - return null; - } - getMinSuggestedDuration() { - return -2; - } - getSkipTimeOffset() { - return -1; - } - getSurveyUrl() { - return null; - } - getTitle() { - return ""; - } - getTraffickingParameters() { - return {}; - } - getTraffickingParametersString() { - return ""; - } - getUiElements() { - return [""]; - } - getUniversalAdIdRegistry() { - return "unknown"; - } - getUniversalAdIds() { - return [new UniversalAdIdInfo()]; - } - getUniversalAdIdValue() { - return "unknown"; - } - getVastMediaBitrate() { - return 0; - } - getVastMediaHeight() { - return 0; - } - getVastMediaWidth() { - return 0; - } - getWidth() { - return 0; - } - getWrapperAdIds() { - return [""]; - } - getWrapperAdSystems() { - return [""]; - } - getWrapperCreativeIds() { - return [""]; - } - isLinear() { - return true; - } - isSkippable() { - return true; - } - } - - class CompanionAd { - getAdSlotId() { - return ""; - } - getContent() { - return ""; - } - getContentType() { - return ""; - } - getHeight() { - return 1; - } - getWidth() { - return 1; - } - } - - class AdError { - constructor(type, code, vast, message) { - this.errorCode = code; - this.message = message; - this.type = type; - this.vastErrorCode = vast; - } - getErrorCode() { - return this.errorCode; - } - getInnerError() { - return null; - } - getMessage() { - return this.message; - } - getType() { - return this.type; - } - getVastErrorCode() { - return this.vastErrorCode; - } - toString() { - return `AdError ${this.errorCode}: ${this.message}`; - } - } - AdError.ErrorCode = {}; - AdError.Type = {}; - - const isEngadget = () => { - try { - for (const ctx of Object.values(window.vidible._getContexts())) { - const player = ctx.getPlayer(); - if (!player) { continue;} - const div = player.div; - if (!div) { continue; } - if (div.innerHTML.includes("www.engadget.com")) { - return true; - } - } - } catch (_) {} - return false; - }; - - const currentAd = isEngadget() ? undefined : new Ad(); - - class AdEvent { - constructor(type) { - this.type = type; - } - getAd() { - return currentAd; - } - getAdData() { - return {}; - } - } - AdEvent.Type = { - AD_BREAK_READY: "adBreakReady", - AD_BUFFERING: "adBuffering", - AD_CAN_PLAY: "adCanPlay", - AD_METADATA: "adMetadata", - AD_PROGRESS: "adProgress", - ALL_ADS_COMPLETED: "allAdsCompleted", - CLICK: "click", - COMPLETE: "complete", - CONTENT_PAUSE_REQUESTED: "contentPauseRequested", - CONTENT_RESUME_REQUESTED: "contentResumeRequested", - DURATION_CHANGE: "durationChange", - EXPANDED_CHANGED: "expandedChanged", - FIRST_QUARTILE: "firstQuartile", - IMPRESSION: "impression", - INTERACTION: "interaction", - LINEAR_CHANGE: "linearChange", - LINEAR_CHANGED: "linearChanged", - LOADED: "loaded", - LOG: "log", - MIDPOINT: "midpoint", - PAUSED: "pause", - RESUMED: "resume", - SKIPPABLE_STATE_CHANGED: "skippableStateChanged", - SKIPPED: "skip", - STARTED: "start", - THIRD_QUARTILE: "thirdQuartile", - USER_CLOSE: "userClose", - VIDEO_CLICKED: "videoClicked", - VIDEO_ICON_CLICKED: "videoIconClicked", - VIEWABLE_IMPRESSION: "viewable_impression", - VOLUME_CHANGED: "volumeChange", - VOLUME_MUTED: "mute", - }; - - class AdErrorEvent { - constructor(error) { - this.type = "adError"; - this.error = error; - } - getError() { - return this.error; - } - getUserRequestContext() { - return {}; - } - } - AdErrorEvent.Type = { - AD_ERROR: "adError", - }; - - const manager = new AdsManager(); - - class AdsManagerLoadedEvent { - constructor(type) { - this.type = type; - } - getAdsManager(c, settings) { - if (settings && settings.enablePreloading) { - manager._enablePreloading = true; - } - return manager; - } - getUserRequestContext() { - return {}; - } - } - AdsManagerLoadedEvent.Type = { - ADS_MANAGER_LOADED: "adsManagerLoaded", - }; - - class CustomContentLoadedEvent {} - CustomContentLoadedEvent.Type = { - CUSTOM_CONTENT_LOADED: "deprecated-event", - }; - - class CompanionAdSelectionSettings {} - CompanionAdSelectionSettings.CreativeType = { - ALL: "All", - FLASH: "Flash", - IMAGE: "Image", - }; - CompanionAdSelectionSettings.ResourceType = { - ALL: "All", - HTML: "Html", - IFRAME: "IFrame", - STATIC: "Static", - }; - CompanionAdSelectionSettings.SizeCriteria = { - IGNORE: "IgnoreSize", - SELECT_EXACT_MATCH: "SelectExactMatch", - SELECT_NEAR_MATCH: "SelectNearMatch", - }; - - class AdCuePoints { - getCuePoints() { - return []; - } - } - - class AdProgressData {} - - class UniversalAdIdInfo { - getAdIdRegistry() { - return ""; - } - getAdIdValue() { - return ""; - } - } - - Object.assign(ima, { - AdCuePoints, - AdDisplayContainer, - AdError, - AdErrorEvent, - AdEvent, - AdPodInfo, - AdProgressData, - AdsLoader, - AdsManager: manager, - AdsManagerLoadedEvent, - AdsRenderingSettings, - AdsRequest, - CompanionAd, - CompanionAdSelectionSettings, - CustomContentLoadedEvent, - gptProxyInstance: {}, - ImaSdkSettings, - OmidAccessMode: { - DOMAIN: "domain", - FULL: "full", - LIMITED: "limited", - }, - OmidVerificationVendor: { - 1: "OTHER", - 2: "GOOGLE", - GOOGLE: 2, - OTHER: 1 - }, - settings: new ImaSdkSettings(), - UiElements: { - AD_ATTRIBUTION: "adAttribution", - COUNTDOWN: "countdown", - }, - UniversalAdIdInfo, - VERSION, - ViewMode: { - FULLSCREEN: "fullscreen", - NORMAL: "normal", - }, - }); - - if (!window.google) { - window.google = {}; - } - - window.google.ima = ima; -} diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/googlesyndication_adsbygoogle.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/googlesyndication_adsbygoogle.js deleted file mode 100644 index dec634b..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/googlesyndication_adsbygoogle.js +++ /dev/null @@ -1,56 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(function() { - 'use strict'; - const init = ( ) => { - window.adsbygoogle = { - loaded: true, - push: function() { - } - }; - const phs = document.querySelectorAll('.adsbygoogle'); - const css = 'height:1px!important;max-height:1px!important;max-width:1px!important;width:1px!important;'; - for ( let i = 0; i < phs.length; i++ ) { - const id = `aswift_${i}`; - if ( document.querySelector(`iframe#${id}`) !== null ) { continue; } - const fr = document.createElement('iframe'); - fr.id = id; - fr.style = css; - const cfr = document.createElement('iframe'); - cfr.id = `google_ads_frame${i}`; - fr.appendChild(cfr); - phs[i].appendChild(fr); - } - }; - if ( - document.querySelectorAll('.adsbygoogle').length === 0 && - document.readyState === 'loading' - ) { - window.addEventListener('DOMContentLoaded', init, { once: true }); - } else { - init(); - } -})(); - -/* -pagead2.googlesyndication.com/pagead/js/adsbygoogle.js,adsbygoogle-placeholder,adsbygoogleStatus,google_ad_channel,google_ad_client,google_ad_format,google_ad_frequency_hint,google_ad_height,google_ad_host,google_ad_host_channel,google_ad_modifications,google_ad_region,google_ad_resizable,google_ad_resize,google_ad_section,google_ad_semantic_area,google_ad_width,google_adbreak_test,google_ads_frame,google_ads_iframe,google_adtest,google_admob_interstitial_slot,google_admob_rewarded_slot,google_admob_ads_only,google-adsense-platform-account,google_adsense_settings,google_ama_config,google-ama-order-assurance,google_ama_settings,google_ama_state,google_apltlad,google_audio_sense,google-auto-placed-read-aloud-player-reserved,google_debug_params,google_full_width_responsive,google_full_width_responsive_allowed,google_image_requests,google_js_errors,google_js_reporting_queue,google_loader_features_used,google_llp,google_logging_queue,google_max_ad_content_rating,google_measure_js_timing,google_ml_rank,google_overlays,google_override_format,google_package,google_page_url,google_persistent_state_async,google_pgb_reactive,google_placement_id,google_prev_ad_formats_by_region,google_prev_ad_slotnames_by_region,google_reactive_ad_format,google_reactive_ads_global_state,google_resizing_height,google_resizing_width,google_responsive_auto_format,google_responsive_dummy_ad,google_responsive_formats,google_restrict_data_processing,google_rum_task_id_counter,google_safe_for_responsive_override,google_shadow_mode,google_srt,google_tag_for_under_age_of_consent,google_tag_origin,google_tag_partner,google_traffic_source,google_unique_id,googletag -*/ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/googletagmanager_gtm.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/googletagmanager_gtm.js deleted file mode 100644 index 09f4658..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/googletagmanager_gtm.js +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(function() { - 'use strict'; - const noopfn = function() { - }; - const w = window; - w.ga = w.ga || noopfn; - const dl = w.dataLayer; - if ( dl instanceof Object === false ) { return; } - if ( dl.hide instanceof Object && typeof dl.hide.end === 'function' ) { - dl.hide.end(); - } - if ( typeof dl.push === 'function' ) { - dl.push = function(o) { - if ( - o instanceof Object && - typeof o.eventCallback === 'function' - ) { - setTimeout(o.eventCallback, 1); - } - }; - } -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/googletagservices_gpt.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/googletagservices_gpt.js deleted file mode 100644 index b151936..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/googletagservices_gpt.js +++ /dev/null @@ -1,154 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(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, - enableLazyLoad: noopfn, - enableSingleRequest: noopfn, - enableSyncRendering: noopfn, - enableVideoAds: noopfn, - get: noopnullfn, - getAttributeKeys: nooparrayfn, - getTargeting: nooparrayfn, - getTargetingKeys: nooparrayfn, - getSlots: nooparrayfn, - refresh: noopfn, - removeEventListener: noopfn, - set: noopthisfn, - setCategoryExclusion: noopthisfn, - setCentering: noopfn, - setCookieOptions: noopthisfn, - setForceSafeFrame: noopthisfn, - setLocation: noopthisfn, - setPublisherProvidedId: noopthisfn, - setPrivacySettings: 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; - p.updateTargetingFromMap = 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/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/hd-main.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/hd-main.js deleted file mode 100644 index 149d603..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/hd-main.js +++ /dev/null @@ -1,46 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(function() { - 'use strict'; - const l = {}; - const noopfn = function() { - }; - const props = [ - "$j","Ad","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Nj","Oc","Pc","Pe", - "Qc","Qe","Rc","Re","Ri","Sc","Tc","Uc","Vc","Wc","Wg","Xc","Xg","Yc","Yd", - "ad","ae","bd","bf","cd","dd","ed","ef","ek","fd","fg","fh","fk","gd","hd", - "ig","ij","jd","kd","ke","ld","md","mi","nd","od","oh","pd","pf","qd","rd", - "sd","td","ud","vd","wd","wg","xd","xh","yd","zd", - "$d","$e","$k","Ae","Af","Aj","Be","Ce","De","Ee","Ek","Eo","Ep","Fe","Fo", - "Ge","Gh","Hk","Ie","Ip","Je","Ke","Kk","Kq","Le","Lh","Lk","Me","Mm","Ne", - "Oe","Pe","Qe","Re","Rp","Se","Te","Ue","Ve","Vp","We","Xd","Xe","Yd","Ye", - "Zd","Ze","Zf","Zk","ae","af","al","be","bf","bg","ce","cp","df","di","ee", - "ef","fe","ff","gf","gm","he","hf","ie","je","jf","ke","kf","kl","le","lf", - "lk","mf","mg","mn","nf","oe","of","pe","pf","pg","qe","qf","re","rf","se", - "sf","te","tf","ti","ue","uf","ve","vf","we","wf","wg","wi","xe","ye","yf", - "yk","yl","ze","zf","zk" - ]; - for ( let i = 0; i < props.length; i++ ) { - l[props[i]] = noopfn; - } - window.L = window.J = l; -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/nobab.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/nobab.js deleted file mode 100644 index 32a2983..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/nobab.js +++ /dev/null @@ -1,87 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(function() { - 'use strict'; - const signatures = [ - [ 'blockadblock' ], - [ 'babasbm' ], - [ /getItem\('babn'\)/ ], - [ - 'getElementById', - 'String.fromCharCode', - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', - 'charAt', - 'DOMContentLoaded', - 'AdBlock', - 'addEventListener', - 'doScroll', - 'fromCharCode', - '<<2|r>>4', - 'sessionStorage', - 'clientWidth', - 'localStorage', - 'Math', - 'random' - ], - ]; - const check = function(s) { - for ( let i = 0; i < signatures.length; i++ ) { - const tokens = signatures[i]; - let match = 0; - for ( let j = 0; j < tokens.length; j++ ) { - const token = tokens[j]; - const pos = token instanceof RegExp - ? s.search(token) - : s.indexOf(token); - if ( pos !== -1 ) { match += 1; } - } - if ( (match / tokens.length) >= 0.8 ) { return true; } - } - return false; - }; - window.eval = new Proxy(window.eval, { // jshint ignore: line - apply: function(target, thisArg, args) { - const a = args[0]; - if ( typeof a !== 'string' || !check(a) ) { - return target.apply(thisArg, args); - } - if ( document.body ) { - document.body.style.removeProperty('visibility'); - } - let el = document.getElementById('babasbmsgx'); - if ( el ) { - el.parentNode.removeChild(el); - } - } - }); - window.setTimeout = new Proxy(window.setTimeout, { - apply: function(target, thisArg, args) { - const a = args[0]; - if ( - typeof a !== 'string' || - /\.bab_elementid.$/.test(a) === false - ) { - return target.apply(thisArg, args); - } - } - }); -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/nobab2.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/nobab2.js deleted file mode 100644 index ea3b210..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/nobab2.js +++ /dev/null @@ -1,42 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2021-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(function() { - 'use strict'; - const script = document.currentScript; - if ( script === null ) { return; } - const src = script.src; - if ( typeof src !== 'string' ) { return; } - // The scriplet is meant to act ONLY when it's being used as a redirection - // for specific domains. - const re = new RegExp( - '^https?://[\\w-]+\\.(' + - [ - 'adclixx\\.net', - 'adnetasia\\.com', - 'adtrackers\\.net', - 'bannertrack\\.net', - ].join('|') + - ')/.' - ); - if ( re.test(src) === false ) { return; } - window.nH7eXzOsG = 858; -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noeval-silent.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noeval-silent.js deleted file mode 100644 index cfe6e3b..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noeval-silent.js +++ /dev/null @@ -1,28 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(function() { - 'use strict'; - window.eval = new Proxy(window.eval, { // jshint ignore: line - apply: function() { - } - }); -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noeval.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noeval.js deleted file mode 100644 index e1f2a74..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noeval.js +++ /dev/null @@ -1,30 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(function() { - 'use strict'; - const log = console.log.bind(console); - window.eval = new Proxy(window.eval, { // jshint ignore: line - apply: function(target, thisArg, args) { - log(`Document tried to eval... ${args[0]}\n`); - } - }); -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/nofab.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/nofab.js deleted file mode 100644 index 9e50e0b..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/nofab.js +++ /dev/null @@ -1,67 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(function() { - 'use strict'; - const noopfn = function() { - }; - const Fab = function() {}; - Fab.prototype.check = noopfn; - Fab.prototype.clearEvent = noopfn; - Fab.prototype.emitEvent = noopfn; - Fab.prototype.on = function(a, b) { - if ( !a ) { b(); } - return this; - }; - Fab.prototype.onDetected = function() { - return this; - }; - Fab.prototype.onNotDetected = function(a) { - a(); - return this; - }; - Fab.prototype.setOption = noopfn; - Fab.prototype.options = { - set: noopfn, - get: noopfn, - }; - const fab = new Fab(); - const getSetFab = { - get: function() { return Fab; }, - set: function() {} - }; - const getsetfab = { - get: function() { return fab; }, - set: function() {} - }; - if ( window.hasOwnProperty('FuckAdBlock') ) { window.FuckAdBlock = Fab; } - else { Object.defineProperty(window, 'FuckAdBlock', getSetFab); } - if ( window.hasOwnProperty('BlockAdBlock') ) { window.BlockAdBlock = Fab; } - else { Object.defineProperty(window, 'BlockAdBlock', getSetFab); } - if ( window.hasOwnProperty('SniffAdBlock') ) { window.SniffAdBlock = Fab; } - else { Object.defineProperty(window, 'SniffAdBlock', getSetFab); } - if ( window.hasOwnProperty('fuckAdBlock') ) { window.fuckAdBlock = fab; } - else { Object.defineProperty(window, 'fuckAdBlock', getsetfab); } - if ( window.hasOwnProperty('blockAdBlock') ) { window.blockAdBlock = fab; } - else { Object.defineProperty(window, 'blockAdBlock', getsetfab); } - if ( window.hasOwnProperty('sniffAdBlock') ) { window.sniffAdBlock = fab; } - else { Object.defineProperty(window, 'sniffAdBlock', getsetfab); } -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop-0.1s.mp3 b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop-0.1s.mp3 deleted file mode 100644 index 147d71b..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop-0.1s.mp3 and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop-0.5s.mp3 b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop-0.5s.mp3 deleted file mode 100644 index b82866b..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop-0.5s.mp3 and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop-1s.mp4 b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop-1s.mp4 deleted file mode 100644 index 5689d4a..0000000 Binary files a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop-1s.mp4 and /dev/null differ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop-vmap1.0.xml b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop-vmap1.0.xml deleted file mode 100644 index acd6fb8..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop-vmap1.0.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop.css b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop.css deleted file mode 100644 index 79a9626..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop.css +++ /dev/null @@ -1 +0,0 @@ -/* */ diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop.html deleted file mode 100644 index 8aaae14..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop.html +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop.js deleted file mode 100644 index b977b08..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() { - 'use strict'; -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop.json b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop.txt b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop.txt deleted file mode 100644 index 8b13789..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/noop.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/outbrain-widget.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/outbrain-widget.js deleted file mode 100644 index 10ba605..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/outbrain-widget.js +++ /dev/null @@ -1,72 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(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', - 'renderSpaWidgets', - '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; -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/popads-dummy.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/popads-dummy.js deleted file mode 100644 index 0ca0b1e..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/popads-dummy.js +++ /dev/null @@ -1,30 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(function() { - 'use strict'; - delete window.PopAds; - delete window.popns; - Object.defineProperties(window, { - PopAds: { value: {} }, - popns: { value: {} } - }); -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/popads.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/popads.js deleted file mode 100644 index df86e97..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/popads.js +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(function() { - 'use strict'; - const magic = String.fromCharCode(Date.now() % 26 + 97) + - Math.floor(Math.random() * 982451653 + 982451653).toString(36); - const oe = window.onerror; - window.onerror = function(msg, src, line, col, error) { - if ( typeof msg === 'string' && msg.indexOf(magic) !== -1 ) { return true; } - if ( oe instanceof Function ) { - return oe(msg, src, line, col, error); - } - }.bind(); - const throwMagic = function() { throw new ReferenceError(magic); }; - delete window.PopAds; - delete window.popns; - Object.defineProperties(window, { - PopAds: { set: throwMagic }, - popns: { set: throwMagic } - }); -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/prebid-ads.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/prebid-ads.js deleted file mode 100644 index f3b2dc6..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/prebid-ads.js +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2022-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(function() { - 'use strict'; - window.canRunAds = true; - window.isAdBlockActive = false; -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/scorecardresearch_beacon.js b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/scorecardresearch_beacon.js deleted file mode 100644 index 5ca7203..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/web_accessible_resources/scorecardresearch_beacon.js +++ /dev/null @@ -1,31 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2019-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -(function() { - 'use strict'; - window.COMSCORE = { - purge: function() { - window._comscore = []; - }, - beacon: function() { - } - }; -})(); diff --git a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/whitelist.html b/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/whitelist.html deleted file mode 100644 index 517c0f5..0000000 --- a/.config/chromium/Default/Extensions/cjpalhdlnbpafiamejdnhcphjbkeiagm/1.59.0_0/whitelist.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - -uBlock — Whitelist - - - - - - - - - - - - - - - -
    -
    -

    - - -   - - -

    -

    -

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/ar/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/ar/messages.json deleted file mode 100644 index 38f9031..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/ar/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "إضافة موقع إلى القائمة" - }, - "all_settings": { - "message": "جميع الإعدادات" - }, - "auto_day_at_location": { - "message": "تلقائي (اليوم في الموقع)" - }, - "auto_day_time": { - "message": "تلقائي (وقت النهار)" - }, - "auto_night_at_location": { - "message": "تلقائي (ليلاً في الموقع)" - }, - "auto_night_time": { - "message": "تلقائي (وقت الليل)" - }, - "auto_system_is_dark": { - "message": "تلقائي (النظام مظلم)" - }, - "auto_system_is_light": { - "message": "تلقائي (النظام خفيف)" - }, - "automation": { - "message": "التلقائية" - }, - "brightness": { - "message": "السطوع" - }, - "change_browser_theme": { - "message": "تغيير تنسيق المتصفح" - }, - "click_to_set_shortcut": { - "message": "انقر لتعيين الاختصار" - }, - "configure_automation": { - "message": "تكوين الأتمتة" - }, - "configure_site_toggle": { - "message": "تكوين تبديل موقع الويب" - }, - "contrast": { - "message": "التباين" - }, - "custom_browser_theme_off": { - "message": "الافتراضي" - }, - "custom_browser_theme_on": { - "message": "مخصص" - }, - "dark": { - "message": "مظلم" - }, - "dark_theme_detected": { - "message": "تم اكتشاف مظهر داكن" - }, - "detect_dark_theme": { - "message": "كشف المظهر الداكن" - }, - "detect_website_dark_theme": { - "message": "اكتشف المظهر المظلم لموقع الويب" - }, - "donate": { - "message": "التبرع" - }, - "enable_for_all_sites_by_default": { - "message": "ممكّن لجميع مواقع الويب بشكل افتراضي" - }, - "enabled_by_default": { - "message": "ممكّن افتراضيًا" - }, - "engine_dynamic": { - "message": "ديناميكي" - }, - "engine_filter": { - "message": "فلتر" - }, - "engine_filter_plus": { - "message": "فلتر+" - }, - "engine_static": { - "message": "ثابت" - }, - "extension_description": { - "message": "الوضع المظلم لجميع المواقع. اعتن بعينيك، استعمل التنسيق الداكن للتصفح اليومي في الليل." - }, - "extension_toggle_shortcut": { - "message": "تمديد تشغيل / إيقاف اختصار لوحة المفاتيح" - }, - "filter": { - "message": "الفلتر" - }, - "grayscale": { - "message": "التدرج الرمادي" - }, - "help": { - "message": "المساعدة" - }, - "invert_listed_only": { - "message": "عكس المدرجة فقط" - }, - "latitude": { - "message": "خط العرض" - }, - "light": { - "message": "فاتح" - }, - "loading_please_wait": { - "message": "جار التحميل، يرجى الانتظار" - }, - "local_files_forbidden": { - "message": "لا يسمح بالوصول\nملفات محلية" - }, - "longitude": { - "message": "خط الطول" - }, - "mobile_link": { - "message": "يتوفر قارئ الظلام المحمول. يتعلم أكثر" - }, - "mode": { - "message": "الوضع" - }, - "more": { - "message": "المزيد" - }, - "news": { - "message": "الأخبار" - }, - "not_invert_listed": { - "message": "عدم عكس المدرجة" - }, - "off": { - "message": "معطّل" - }, - "on": { - "message": "مفعّل" - }, - "only_for": { - "message": "فقط لـ" - }, - "only_for_description": { - "message": "تطبيق الإعدادات للموقع الحالي فقط" - }, - "open_dev_tools": { - "message": "أدوات المطور" - }, - "page_in_dark_list": { - "message": "هذه الصفحة موجودة في قائمة\nالمواقع المظلمة العامة" - }, - "page_protected": { - "message": "هذه الصفحة محمية\nمن قبل المتصفح" - }, - "pay_for_using": { - "message": "ادفع مقابل استخدام Dark Reader" - }, - "privacy": { - "message": "الخصوصية" - }, - "read_more": { - "message": "قراءة المزيد" - }, - "select_font": { - "message": "اختر الخط" - }, - "sepia": { - "message": "البني" - }, - "set_active_hours": { - "message": "تعيين الساعات النشطة" - }, - "set_location": { - "message": "تفعيل بعد غروب الشمس في الموقع" - }, - "setup_add_site_hotkey": { - "message": "تعيين مفتاح اختصار لإضافة المواقع" - }, - "setup_hotkey_toggle_extension": { - "message": "إعداد الإضافة\nمفتاح اختصار التبديل" - }, - "setup_hotkey_toggle_site": { - "message": "إعداد الموقع الحالي\nمفتاح اختصار التبديل" - }, - "site_list": { - "message": "قائمة المواقع" - }, - "site_toggle": { - "message": "تبديل الموقع" - }, - "store_listing": { - "message": "تقوم هذه الإضافة بتفعيل الوضع الليلي عن طريق إنشاء تنسيقات مظلمة للمواقع أثناء التنقل. يقوم Dark Reader بعكس الألوان الساطعة لجعلها عالية التباين وسهلة القراءة في الليل.\n\nبإمكانك ضبط السطوع، التباين، الفلتر البني، الوضع المظلم، إعدادات الخط وقائمة التجاهل.\n\nقد نطلب منك دعم تطوير التطبيق من خلال تبرع. قد ترى أخبارًا حول Dark Reader في قائمة الإعدادات المنبثقة. هناك أدوات المطور للمستخدمين ذوي الخبرة.\n\nلا يقوم Dark Reader بعرض إعلانات ولا يقوم بإرسال بيانات المستخدم إلى أي مكان. الإضافة مفتوحة المصدر بالكامل https://github.com/darkreader/darkreader\n\nقبل التثبيت قم بتعطيل الإضافات المماثلة. استمتع بالمشاهدة!" - }, - "support_out_work": { - "message": "ادعم عملنا" - }, - "system_dark_mode": { - "message": "استعمال نظام ألوان النظام" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "تفعيل عندما يكون الوضع المظلم للنظام مفعّلاً" - }, - "text_stroke": { - "message": "عرض النص" - }, - "theme_generation_mode": { - "message": "وضع توليد التنسيق" - }, - "toggle_current_site": { - "message": "تبديل الموقع الحالي" - }, - "toggle_extension": { - "message": "تبديل الإضافة" - }, - "try_experimental_theme_engines": { - "message": "قم بتجربة محركات التنسيقات **التجريبية**:\n**فلتر+** يحتفظ بتشبع الألوان، يستعمل GPU\n**التنسيق الثابت** يقوم بتوليد تنسيق بسيط وسريع\n**التنسيق الديناميكي** يقوم بتحليل الألوان والصور" - }, - "version": { - "message": "إصدار" - }, - "we_celebrate_10_years": { - "message": "يحتفل Dark Reader بمرور 10 سنوات.\nيرجى دعم عملنا." - }, - "website_toggle_shortcut": { - "message": "موقع ويب تبديل اختصار لوحة المفاتيح" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/be/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/be/messages.json deleted file mode 100644 index 8e241b0..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/be/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Дадаць сайт у спіс" - }, - "all_settings": { - "message": "Усе налады" - }, - "auto_day_at_location": { - "message": "Аўта (дзень на месцы)" - }, - "auto_day_time": { - "message": "Аўта (дзённы час)" - }, - "auto_night_at_location": { - "message": "Аўта (ноч на месцы)" - }, - "auto_night_time": { - "message": "Аўта (начны час)" - }, - "auto_system_is_dark": { - "message": "Аўта (сістэма цёмная)" - }, - "auto_system_is_light": { - "message": "Аўта (сістэма светлая)" - }, - "automation": { - "message": "Аўтаматызацыя" - }, - "brightness": { - "message": "Яркасць" - }, - "change_browser_theme": { - "message": "Змяніць тэму браўзэра" - }, - "click_to_set_shortcut": { - "message": "Націсніце, каб усталяваць спалучэнне" - }, - "configure_automation": { - "message": "Настройка аўтаматызацыі" - }, - "configure_site_toggle": { - "message": "Наладзьце пераключэнне вэб-сайтаў" - }, - "contrast": { - "message": "Кантраснасць" - }, - "custom_browser_theme_off": { - "message": "Агаданая" - }, - "custom_browser_theme_on": { - "message": "Асаблiвая" - }, - "dark": { - "message": "Цёмны" - }, - "dark_theme_detected": { - "message": "Выяўлена цёмная тэма" - }, - "detect_dark_theme": { - "message": "Выяўленне цёмнай тэмы" - }, - "detect_website_dark_theme": { - "message": "Выявіць уласную цёмную тэму вэб-сайта" - }, - "donate": { - "message": "Падтрымка" - }, - "enable_for_all_sites_by_default": { - "message": "Па змаўчанні ўключана для ўсіх вэб-сайтаў" - }, - "enabled_by_default": { - "message": "Уключана па змаўчанні" - }, - "engine_dynamic": { - "message": "Дынам." - }, - "engine_filter": { - "message": "Фільтр" - }, - "engine_filter_plus": { - "message": "Фільтр+" - }, - "engine_static": { - "message": "Стат." - }, - "extension_description": { - "message": "Цёмная Тэма для кожнага сайта. Беражыце свае вочы, карыстайцеся Дарк Рыдарам для начнога ці штодзённага прагляду вэб-старонак." - }, - "extension_toggle_shortcut": { - "message": "Спалучэнне клавіш для ўключэння/выключэння пашырэння" - }, - "filter": { - "message": "Фільтр" - }, - "grayscale": { - "message": "Адценні шэрага" - }, - "help": { - "message": "Даведка" - }, - "invert_listed_only": { - "message": "Інверт. толькі гэтыя" - }, - "latitude": { - "message": "Шырата" - }, - "light": { - "message": "Светлы" - }, - "loading_please_wait": { - "message": "Ідзе загрузка, пачакайце" - }, - "local_files_forbidden": { - "message": "Забаронены доступ\nлакальныя файлы" - }, - "longitude": { - "message": "Даўгата" - }, - "mobile_link": { - "message": "Мабільны Dark Reader даступны. Даведайцеся больш" - }, - "mode": { - "message": "Рэжым" - }, - "more": { - "message": "Яшчэ" - }, - "news": { - "message": "Навіны" - }, - "not_invert_listed": { - "message": "Ня інвертаваць" - }, - "off": { - "message": "Выкл." - }, - "on": { - "message": "Укл." - }, - "only_for": { - "message": "Толькі для" - }, - "only_for_description": { - "message": "Прымяніць налады толькі да гэтага сайта" - }, - "open_dev_tools": { - "message": "Прылады" - }, - "page_in_dark_list": { - "message": "Гэтая старонка ў глаб.\nспісе Цёмных Сайтаў" - }, - "page_protected": { - "message": "Гэтая старонка ахоўваецца\nбраўзэрам" - }, - "pay_for_using": { - "message": "Аплаціце карыстанне Dark Reader" - }, - "privacy": { - "message": "Пагад." - }, - "read_more": { - "message": "Чытаць яшчэ" - }, - "select_font": { - "message": "Выберыце шрыфт" - }, - "sepia": { - "message": "Сэпія" - }, - "set_active_hours": { - "message": "Усталюйце перыяд актыўнасці" - }, - "set_location": { - "message": "Уключыць пасля захода сонца" - }, - "setup_add_site_hotkey": { - "message": "Уст. спалуч. клавіш для даб. сайта ў спіс" - }, - "setup_hotkey_toggle_extension": { - "message": "Уст. спалучэнне\nклавіш" - }, - "setup_hotkey_toggle_site": { - "message": "Усталюйце спалучэнне\nклавіш" - }, - "site_list": { - "message": "Спіс" - }, - "site_toggle": { - "message": "Пераключэнне сайта" - }, - "store_listing": { - "message": "Гэта пашырэнне пераводзіць браўзэр у начны рэжым. Дарк Рыдар замяняе светлы фон цёмным, што зніжае стомленасць вачэй пры доўгай працы за кампутарам альбо пры праглядзе вэб-старонак ноччу.\n\nМаецца магчымасць наладжваць яркасць, кантраснасць, шрыфт, рэжым інверсіі, рэжым накладання жоўтага фільтра (сэпія).\n\nМы можам папрасіць вас падтрымаць распрацоўку прыкладання ахвяраваннем. Вы можаце ўбачыць навіны аб Dark Reader ва ўсплывальным акне налад. Ёсць інструменты распрацоўшчыка для вопытных карыстальнікаў.\n\nDark Reader ня ўбудоўвае рэкламу і не збірае дадзеныя карыстальніка, увесь зыходны код адкрыты https://github.com/darkreader/darkreader\n\nПерад усталёўкай адключыце падобныя пашырэнні. Прыемнага прагляду!" - }, - "support_out_work": { - "message": "Падтрымайце нашу працу" - }, - "system_dark_mode": { - "message": "Выкарыстоўваць сістэмныя колеры" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "Уключыць калі сістэмны начны рэжым актыўны" - }, - "text_stroke": { - "message": "Абводка тэксту" - }, - "theme_generation_mode": { - "message": "Рэжым генерацыi тэмы" - }, - "toggle_current_site": { - "message": "Пераключыць гэты сайт" - }, - "toggle_extension": { - "message": "Укл/выкл Дарк Рыдар" - }, - "try_experimental_theme_engines": { - "message": "Апрабуйце **эксперыментальныя** рэжымы:\n**Фільтр+** зах. яркасць колераў, выкарыстоўвае GPU\n**Статычны рэжым** стварае простую тэму\n**Дынамічны** аналізуе колеры і карцінкі" - }, - "version": { - "message": "Версія" - }, - "we_celebrate_10_years": { - "message": "Dark Reader святкуе 10-годдзе.\nКалі ласка, падтрымайце нашу працу." - }, - "website_toggle_shortcut": { - "message": "Спалучэнне клавіш для пераключэння вэб-сайта" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/bg/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/bg/messages.json deleted file mode 100644 index 7d16b47..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/bg/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Добавете сайт към списъка" - }, - "all_settings": { - "message": "Всички настройки" - }, - "auto_day_at_location": { - "message": "Автоматично (ден за региона)" - }, - "auto_day_time": { - "message": "Автоматично (денем)" - }, - "auto_night_at_location": { - "message": "Автоматично (нощ за региона)" - }, - "auto_night_time": { - "message": "Автоматично (нощем)" - }, - "auto_system_is_dark": { - "message": "Автоматично (системата е тъмна)" - }, - "auto_system_is_light": { - "message": "Автоматично (системата е светла)" - }, - "automation": { - "message": "Автоматично" - }, - "brightness": { - "message": "Яркост" - }, - "change_browser_theme": { - "message": "Променете темата на браузъра" - }, - "click_to_set_shortcut": { - "message": "Щракнете, за задаване на пряк път" - }, - "configure_automation": { - "message": "Настройте автоматизма" - }, - "configure_site_toggle": { - "message": "Конфиг. превкл. на уебсайтове" - }, - "contrast": { - "message": "Контраст" - }, - "custom_browser_theme_off": { - "message": "По подразбиране" - }, - "custom_browser_theme_on": { - "message": "Персонална" - }, - "dark": { - "message": "Тъмен" - }, - "dark_theme_detected": { - "message": "Открита е тъмна тема" - }, - "detect_dark_theme": { - "message": "Откриване на тъмна тема" - }, - "detect_website_dark_theme": { - "message": "Открийте тъмната тема на уебсайта" - }, - "donate": { - "message": "Дарете" - }, - "enable_for_all_sites_by_default": { - "message": "Активирано за всички уебсайтове по подразб." - }, - "enabled_by_default": { - "message": "Активирано по подразбиране" - }, - "engine_dynamic": { - "message": "Динамич." - }, - "engine_filter": { - "message": "Филтър" - }, - "engine_filter_plus": { - "message": "Филтър+" - }, - "engine_static": { - "message": "Статична" - }, - "extension_description": { - "message": "Тъмен режим за всеки уебсайт. Погрижете се за очите си, използвайте тъмна тема за нощно и ежедневно сърфиране." - }, - "extension_toggle_shortcut": { - "message": "Клавишна комб. за вкл./изкл. на разширение" - }, - "filter": { - "message": "Филтър" - }, - "grayscale": { - "message": "Скала на сивото" - }, - "help": { - "message": "Помощ" - }, - "invert_listed_only": { - "message": "Обърн. само от сп." - }, - "latitude": { - "message": "Геогр. ширина" - }, - "light": { - "message": "Светъл" - }, - "loading_please_wait": { - "message": "Зареждане, моля изчакайте" - }, - "local_files_forbidden": { - "message": "Неразрешен достъп\nдо локални файлове" - }, - "longitude": { - "message": "Геогр. дължина" - }, - "mobile_link": { - "message": "Mobile Dark Reader е наличен. Научете повече" - }, - "mode": { - "message": "Режим" - }, - "more": { - "message": "Още" - }, - "news": { - "message": "Новини" - }, - "not_invert_listed": { - "message": "Не обръщ. от сп." - }, - "off": { - "message": "Изкл." - }, - "on": { - "message": "Вкл." - }, - "only_for": { - "message": "Само за" - }, - "only_for_description": { - "message": "Прилагане на настр. само към текущия уебсайт" - }, - "open_dev_tools": { - "message": "Инстр. за разраб." - }, - "page_in_dark_list": { - "message": "Този сайт е в глобален\nТъмен списък" - }, - "page_protected": { - "message": "Тази страница е защитена\nчрез браузър" - }, - "pay_for_using": { - "message": "Платете за използването на Dark Reader" - }, - "privacy": { - "message": "Поверит." - }, - "read_more": { - "message": "Прочетете още" - }, - "select_font": { - "message": "Изберете шрифт" - }, - "sepia": { - "message": "Сепия" - }, - "set_active_hours": { - "message": "Задайте активни часове" - }, - "set_location": { - "message": "Активирайте след залез слънце на региона" - }, - "setup_add_site_hotkey": { - "message": "Настройте бърз клавиш за добавяне на сайт" - }, - "setup_hotkey_toggle_extension": { - "message": "Настройка на разширението\nпревключване на бърз клавиш" - }, - "setup_hotkey_toggle_site": { - "message": "Настройка на текущия сайт\nпревключване на бърз клавиш" - }, - "site_list": { - "message": "Списък" - }, - "site_toggle": { - "message": "Превключване на сайта" - }, - "store_listing": { - "message": "Това щадящо очите разширение позволява нощен режим чрез създаване на тъмни теми за уебсайтове в движение. Dark Reader обръща ярките цветове, правейки ги с висок контраст и лесни за четене през нощта.\n\nМожете да регулирате яркостта, контраста, сепия филтъра, тъмния режим, настройките на шрифта и списъка за игнориране.\n\nМолим ви да подкрепите развитието на приложението с дарение. Може да видите новини за Dark Reader в изскачащия прозорец с настройки. Има инструменти за разработчици за опитни потребители.\n\nDark Reader не показва реклами и не изпраща потребителски данни никъде. Той е с напълно отворен код: https://github.com/darkreader/darkreader\n\nПреди да го инсталирате, деактивирайте подобни разширения. Приятно гледане!" - }, - "support_out_work": { - "message": "Подкрепете нашата работа" - }, - "system_dark_mode": { - "message": "Изп. системната цветова схема" - }, - "system_dark_mode_chromium_warning": { - "message": "Тази опция може да не работи поради\nбъг във вашия браузър" - }, - "system_dark_mode_description": { - "message": "Акт., когато системният тъмен режим е включен" - }, - "text_stroke": { - "message": "Щрих на текста" - }, - "theme_generation_mode": { - "message": "Режим на генериране на тема" - }, - "toggle_current_site": { - "message": "Превключване на текущия сайт" - }, - "toggle_extension": { - "message": "Превключване на разширението" - }, - "try_experimental_theme_engines": { - "message": "Изпробвайте **експериментални** темат. машини:\n**Филтър+** зап. насит. на цветовете, изп. GPU\n**Статичната тема** генерира проста бърза тема\n**Динамичната тема** анализира цветове и изобр." - }, - "version": { - "message": "Версия" - }, - "we_celebrate_10_years": { - "message": "Dark Reader празнува 10 години.\nМоля, подкрепете нашата работа." - }, - "website_toggle_shortcut": { - "message": "Клавишна комб. за превключване на уебсайт" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/bn/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/bn/messages.json deleted file mode 100644 index 42d4eaf..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/bn/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "লিস্টে সাইট যোগ করুন" - }, - "all_settings": { - "message": "সব সেটিংস" - }, - "auto_day_at_location": { - "message": "স্বয়ংক্রিয় (স্থানে দিন)" - }, - "auto_day_time": { - "message": "অটো (দিনের সময়)" - }, - "auto_night_at_location": { - "message": "স্বয়ংক্রিয় (স্থানে রাত)" - }, - "auto_night_time": { - "message": "অটো (রাতের সময়)" - }, - "auto_system_is_dark": { - "message": "স্বয়ংক্রিয় (সিস্টেম অন্ধকার)" - }, - "auto_system_is_light": { - "message": "স্বয়ংক্রিয় (সিস্টেম হালকা)" - }, - "automation": { - "message": "স্বয়ংক্রিয়করণ" - }, - "brightness": { - "message": "উজ্জ্বলতা" - }, - "change_browser_theme": { - "message": "ব্রাউজার থিম পরিবর্তন করুন" - }, - "click_to_set_shortcut": { - "message": "শর্টকাট সেট করতে ক্লিক করুন" - }, - "configure_automation": { - "message": "অটোমেশন কনফিগার করুন" - }, - "configure_site_toggle": { - "message": "ওয়েবসাইট টগল কনফিগার করুন" - }, - "contrast": { - "message": "কনট্রাস্ট" - }, - "custom_browser_theme_off": { - "message": "ডিফল্ট" - }, - "custom_browser_theme_on": { - "message": "কাস্টম" - }, - "dark": { - "message": "ডার্ক" - }, - "dark_theme_detected": { - "message": "গাঢ় থিম শনাক্ত করা হয়েছে" - }, - "detect_dark_theme": { - "message": "অন্ধকার থিম সনাক্ত করুন" - }, - "detect_website_dark_theme": { - "message": "ওয়েবসাইটের নিজস্ব অন্ধকার থিম সনাক্ত করুন" - }, - "donate": { - "message": "অনুদান" - }, - "enable_for_all_sites_by_default": { - "message": "ডিফল্টরূপে সমস্ত ওয়েবসাইটের জন্য সক্ষম" - }, - "enabled_by_default": { - "message": "ডিফল্টরূপে সক্রিয়" - }, - "engine_dynamic": { - "message": "ডায়নামিক" - }, - "engine_filter": { - "message": "ফিল্টার" - }, - "engine_filter_plus": { - "message": "ফিল্টার+" - }, - "engine_static": { - "message": "স্ট্যাটিক" - }, - "extension_description": { - "message": "প্রত্যেক ওয়েবসাইটের জন্য ডার্কমোড। নিজ চোখের যত্ম নিন, নিত্যকার ব্রাউজিং এর জন্য ব্যবহার করুন ডার্ক থিম।" - }, - "extension_toggle_shortcut": { - "message": "এক্সটেনশন অন/অফ কীবোর্ড শর্টকাট" - }, - "filter": { - "message": "ফিল্টার" - }, - "grayscale": { - "message": "গ্রে-স্কেল" - }, - "help": { - "message": "সহায়তা" - }, - "invert_listed_only": { - "message": "কেবল ইনভার্ট লিস্টেড" - }, - "latitude": { - "message": "অক্ষাংশ" - }, - "light": { - "message": "লাইট" - }, - "loading_please_wait": { - "message": "লোড হচ্ছে, অনুগ্রহ করে অপেক্ষা করুন" - }, - "local_files_forbidden": { - "message": "প্রবেশের অনুমতি নেই\nস্থানীয় ফাইল" - }, - "longitude": { - "message": "দ্রাঘিমা" - }, - "mobile_link": { - "message": "মোবাইল ডার্ক রিডার উপলব্ধ। আরও জানুন" - }, - "mode": { - "message": "মোড" - }, - "more": { - "message": "আরও" - }, - "news": { - "message": "বার্তা" - }, - "not_invert_listed": { - "message": "ইনভার্ট লিস্টেড নয়" - }, - "off": { - "message": "অফ" - }, - "on": { - "message": "অন" - }, - "only_for": { - "message": "অনলি ফর" - }, - "only_for_description": { - "message": "শুধু বর্তমান ওয়েবসাইটের জন্য সেটিংস কার্যকর করুন" - }, - "open_dev_tools": { - "message": "ডেভেলপার টুলস" - }, - "page_in_dark_list": { - "message": "এই সাইটটি গ্লোবাল\nডার্ক লিস্টে আছে" - }, - "page_protected": { - "message": "এই পেজটি প্রোটেক্টেড\nব্রাউজার দ্বারা" - }, - "pay_for_using": { - "message": "ডার্ক রিডার ব্যবহার করার জন্য অর্থ প্রদান করুন" - }, - "privacy": { - "message": "গোপনীয়তা" - }, - "read_more": { - "message": "আরও পড়ুন" - }, - "select_font": { - "message": "ফন্ট বাছাই করুন" - }, - "sepia": { - "message": "সেপিয়া" - }, - "set_active_hours": { - "message": "সক্রিয় কাল সেট করুন" - }, - "set_location": { - "message": "সূর্যাস্তের পরে লোকেশনে সক্রিয় করুন" - }, - "setup_add_site_hotkey": { - "message": "সাইট অ্যাড করার হট-কী সেটাপ করুন" - }, - "setup_hotkey_toggle_extension": { - "message": "এক্সটেনসন ঠিক করুন\nটগল কী" - }, - "setup_hotkey_toggle_site": { - "message": "বর্তমান সাইট সেটাপ করুন\nটগল কী" - }, - "site_list": { - "message": "সাইট লিস্ট" - }, - "site_toggle": { - "message": "সাইট টগলিং" - }, - "store_listing": { - "message": "এই আই-কেয়ার এক্সটেনশান কোন ব্যাঘাত ছাড়া ওয়েবসাইটের জন্য ডার্ক থিম তৈরি করে নাইট মোড এনাবলে সহায়তা করে। ডার্ক রিডার উজ্জ্বল রঙগুলিকে পাল্টে এগুলোর মধ্যে হাই কনট্রাস্ট তৈরি করে এবং রাতে পঠন সহজ করে তোলে।\n\nআপনি উজ্জ্বলতা, কনট্রাস্ট, সেপিয়া ফিল্টার, ডার্ক মোড, ফন্ট সেটিংস এবং ইগনোর-লিস্ট সমন্বয় করতে পারেন।\n\nআমরা আপনাকে অনুদান দিয়ে অ্যাপটির বিকাশে সহায়তা করতে বলতে পারি। আপনি সেটিংস পপআপে ডার্ক রিডার সম্পর্কে খবর দেখতে পারেন। অভিজ্ঞ ব্যবহারকারীদের জন্য বিকাশকারী সরঞ্জাম রয়েছে।\n\nDark Reader বিজ্ঞাপন দেখায় না এবং ব্যবহারকারীর ডেটা কোথাও প্রেরণ করে না। এটি সম্পূর্ণ ওপেন সোর্স https://github.com/darkreader/darkreader\n\nইনস্টল করার আগে অনুরূপ এক্সটেনশন ডিজ্যাবল করুন এবং এক্সটেনশনটি উপভোগ করুন!" - }, - "support_out_work": { - "message": "আমাদের কাজ সমর্থন" - }, - "system_dark_mode": { - "message": "সিস্টেম কালার স্কিম ব্যবহার করুন" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "যখন সিস্টেম মোড চালু আছে তখন চালু করুন" - }, - "text_stroke": { - "message": "টেক্সট স্ট্রোক" - }, - "theme_generation_mode": { - "message": "থিম জেনারেশন মোড" - }, - "toggle_current_site": { - "message": "বর্তমান সাইটে টগল করুন" - }, - "toggle_extension": { - "message": "এক্সটেনশন টগল করুন" - }, - "try_experimental_theme_engines": { - "message": "**পরীক্ষামূলক** থিম ইঞ্জিন টেস্ট করুন:\n**ফিল্টার+** কালার স্যাচুরেশন রক্ষা করে, GPU ব্যবহার করে\n**স্ট্যাটিক থিম** দ্রুত একটি সিম্পল থিম তৈরি করে\n**ডায়নামিক থিম** রঙ ও ছবি বিশ্লেষণ করে" - }, - "version": { - "message": "সংস্করণ" - }, - "we_celebrate_10_years": { - "message": "ডার্ক রিডার 10 বছর উদযাপন করছে।\nআমাদের কাজ সমর্থন করুন." - }, - "website_toggle_shortcut": { - "message": "ওয়েবসাইট টগল কীবোর্ড শর্টকাট" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/cs/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/cs/messages.json deleted file mode 100644 index 071f280..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/cs/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Přidat stránku do seznamu" - }, - "all_settings": { - "message": "Všechna nastavení" - }, - "auto_day_at_location": { - "message": "Auto (den na místě)" - }, - "auto_day_time": { - "message": "Auto (denní čas)" - }, - "auto_night_at_location": { - "message": "Auto (noc na místě)" - }, - "auto_night_time": { - "message": "Auto (noční čas)" - }, - "auto_system_is_dark": { - "message": "Auto (systém je tmavý)" - }, - "auto_system_is_light": { - "message": "Auto (systém je lehký)" - }, - "automation": { - "message": "Automatizace" - }, - "brightness": { - "message": "Jas" - }, - "change_browser_theme": { - "message": "Změnit motiv prohlížeče" - }, - "click_to_set_shortcut": { - "message": "Kliknutím nastavíte zkratku" - }, - "configure_automation": { - "message": "Nakonfigurujte automatizaci" - }, - "configure_site_toggle": { - "message": "Nakonfigurujte přepínání webových stránek" - }, - "contrast": { - "message": "Kontrast" - }, - "custom_browser_theme_off": { - "message": "Původní nastavení" - }, - "custom_browser_theme_on": { - "message": "Vlastní nastavení" - }, - "dark": { - "message": "Tmavý" - }, - "dark_theme_detected": { - "message": "Byl zjištěn tmavý motiv" - }, - "detect_dark_theme": { - "message": "Detekce tmavého motivu" - }, - "detect_website_dark_theme": { - "message": "Zjistěte vlastní temné téma webu" - }, - "donate": { - "message": "Přispějte" - }, - "enable_for_all_sites_by_default": { - "message": "Ve výchozím nastavení povoleno pro všechny weby" - }, - "enabled_by_default": { - "message": "Ve výchozím nastavení povoleno" - }, - "engine_dynamic": { - "message": "Dynamic." - }, - "engine_filter": { - "message": "Filtr" - }, - "engine_filter_plus": { - "message": "Filtr+" - }, - "engine_static": { - "message": "Statický" - }, - "extension_description": { - "message": "Tmavý motiv pro každou stránku. Používejte Dark Reader pro celodenní prohlížení webu a šetřete tak své oči." - }, - "extension_toggle_shortcut": { - "message": "Klávesová zkratka pro zapnutí/vypnutí rozšíření" - }, - "filter": { - "message": "Filtr" - }, - "grayscale": { - "message": "Odstíny šedé" - }, - "help": { - "message": "Nápověda" - }, - "invert_listed_only": { - "message": "Invertovat stránky" - }, - "latitude": { - "message": "Zeměpisná šířka" - }, - "light": { - "message": "Světlý" - }, - "loading_please_wait": { - "message": "Načítání, prosím čekejte" - }, - "local_files_forbidden": { - "message": "Není povolen přístup\nmístní soubory" - }, - "longitude": { - "message": "Zeměpisná délka" - }, - "mobile_link": { - "message": "Mobile Dark Reader je k dispozici. Zjistěte více" - }, - "mode": { - "message": "Režim" - }, - "more": { - "message": "Více" - }, - "news": { - "message": "Novinky" - }, - "not_invert_listed": { - "message": "Neinvertovat" - }, - "off": { - "message": "Vyp" - }, - "on": { - "message": "Zap" - }, - "only_for": { - "message": "Pouze pro" - }, - "only_for_description": { - "message": "Aplikovat nastavení pouze pro současnou stránku" - }, - "open_dev_tools": { - "message": "Nástroje" - }, - "page_in_dark_list": { - "message": "Tato stránka je v seznamu\nstránek s tmavým motivem" - }, - "page_protected": { - "message": "Tato stránka je chráněna\nprohlížečem" - }, - "pay_for_using": { - "message": "Zaplaťte za používání Dark Reader" - }, - "privacy": { - "message": "Soukromí" - }, - "read_more": { - "message": "Více..." - }, - "select_font": { - "message": "Vybrat písmo" - }, - "sepia": { - "message": "Sépie" - }, - "set_active_hours": { - "message": "Změňte doby aktivního používání" - }, - "set_location": { - "message": "Aktivace po západu slunce na místě" - }, - "setup_add_site_hotkey": { - "message": "Nastavit klávesovou zkratku pro přidání stránky" - }, - "setup_hotkey_toggle_extension": { - "message": "Nastavit klávesovou\npro přepínání rozšíř." - }, - "setup_hotkey_toggle_site": { - "message": "Nastavit kláv. zkratku\npro přep. současné stránky" - }, - "site_list": { - "message": "Seznam" - }, - "site_toggle": { - "message": "Přepínání stránek" - }, - "store_listing": { - "message": "Toto k očím šetrné rozšíření přepíná stránky do nočního režimu tím, že je samo převádí do tmavého motivu. Dark Reader invertuje jasné barvy tak, aby byly kontrastní a lehce čitelné v noci.\n\nMůžete upravit jas, kontrast, sépiový filtr, tmavý mód, nastavení písma a seznam ignorovaných stránek.\n\nMůžeme vás požádat, abyste podpořili vývoj aplikace darem. Novinky o Dark Reader můžete vidět ve vyskakovacím okně nastavení. Pro zkušené uživatele existují nástroje pro vývojáře.\n\nDark Reader neobsahuje reklamy a nikam neodesílá data uživatele. Projekt je plně open-source a repositář je možné nalézt na https://github.com/darkreader/darkreader\n\nPřed instalací vypněte všechna podobná rozšíření. Přejeme příjemné surfování!" - }, - "support_out_work": { - "message": "Podpořte naši práci" - }, - "system_dark_mode": { - "message": "Použít barevný systém schéma" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "Aktivovat při zapnutém systému dark režim" - }, - "text_stroke": { - "message": "Tloušťka písma" - }, - "theme_generation_mode": { - "message": "Generátor motivů" - }, - "toggle_current_site": { - "message": "Přepnout současnou stránku" - }, - "toggle_extension": { - "message": "Přepnout rozšíření" - }, - "try_experimental_theme_engines": { - "message": "Vyzkoušejte **experimentální** generátory motivů:\n**Filter+** zachovává sytost barev, používá GPU\n**Statický motiv** generuje rychlý a jednoduchý motiv\n**Dynamický motiv** analyzuje barvy a obrázky" - }, - "version": { - "message": "Verze" - }, - "we_celebrate_10_years": { - "message": "Dark Reader slaví 10 let.\nPodpořte prosím naši práci." - }, - "website_toggle_shortcut": { - "message": "Klávesová zkratka pro přepínání webových stránek" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/da_DK/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/da_DK/messages.json deleted file mode 100644 index 7d7017f..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/da_DK/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Tilføj side til listen" - }, - "all_settings": { - "message": "Alle indstillinger" - }, - "auto_day_at_location": { - "message": "Auto (dag på stedet)" - }, - "auto_day_time": { - "message": "Auto (dagtid)" - }, - "auto_night_at_location": { - "message": "Auto (nat på stedet)" - }, - "auto_night_time": { - "message": "Auto (nattid)" - }, - "auto_system_is_dark": { - "message": "Auto (systemet er mørkt)" - }, - "auto_system_is_light": { - "message": "Auto (systemet er lyst)" - }, - "automation": { - "message": "Automatisering" - }, - "brightness": { - "message": "Lysstyrke" - }, - "change_browser_theme": { - "message": "Skift browser tema" - }, - "click_to_set_shortcut": { - "message": "Klik for at indstille genvejen" - }, - "configure_automation": { - "message": "Konfigurer automatisering" - }, - "configure_site_toggle": { - "message": "Konfigurer webstedsskift" - }, - "contrast": { - "message": "Kontrast" - }, - "custom_browser_theme_off": { - "message": "Standard" - }, - "custom_browser_theme_on": { - "message": "Brugerdefineret" - }, - "dark": { - "message": "Mørk" - }, - "dark_theme_detected": { - "message": "Mørkt tema registreret" - }, - "detect_dark_theme": { - "message": "Opdag mørkt tema" - }, - "detect_website_dark_theme": { - "message": "Opdag hjemmesidens eget mørke tema" - }, - "donate": { - "message": "Doner" - }, - "enable_for_all_sites_by_default": { - "message": "Aktiveret for alle websteder som standard" - }, - "enabled_by_default": { - "message": "Aktiveret som standard" - }, - "engine_dynamic": { - "message": "Dynamisk" - }, - "engine_filter": { - "message": "Filter" - }, - "engine_filter_plus": { - "message": "Filter+" - }, - "engine_static": { - "message": "Statisk" - }, - "extension_description": { - "message": "Mørk tilstand for alle hjemmesider. Beskyt dine øjne og brug mørke temaer for browsing on dagen og natten." - }, - "extension_toggle_shortcut": { - "message": "Udvidelse til/fra tastaturgenvej" - }, - "filter": { - "message": "Filter" - }, - "grayscale": { - "message": "Gråtoner" - }, - "help": { - "message": "Hjælp" - }, - "invert_listed_only": { - "message": "Inverter kun listede" - }, - "latitude": { - "message": "Breddegrad" - }, - "light": { - "message": "Lys" - }, - "loading_please_wait": { - "message": "Indlæser, vent venligst" - }, - "local_files_forbidden": { - "message": "Ikke tilladt at tilgå\nlokale filer" - }, - "longitude": { - "message": "Længdegrad" - }, - "mobile_link": { - "message": "Mobile Dark Reader er tilgængelig. Lær mere" - }, - "mode": { - "message": "Mode" - }, - "more": { - "message": "Mere" - }, - "news": { - "message": "Nyheder" - }, - "not_invert_listed": { - "message": "Ikke inverter listede" - }, - "off": { - "message": "Fra" - }, - "on": { - "message": "Til" - }, - "only_for": { - "message": "Kun for" - }, - "only_for_description": { - "message": "Anvend kun indstillingerne for den nuværende webside" - }, - "open_dev_tools": { - "message": "Udviklerværktøjer" - }, - "page_in_dark_list": { - "message": "Denne side er i den globale\nDark List" - }, - "page_protected": { - "message": "Denne side er beskyttet\naf browseren" - }, - "pay_for_using": { - "message": "Betal for at bruge Dark Reader" - }, - "privacy": { - "message": "Privatliv" - }, - "read_more": { - "message": "Læs mere" - }, - "select_font": { - "message": "Vælg en skrifttype" - }, - "sepia": { - "message": "Sepia" - }, - "set_active_hours": { - "message": "Indstil aktive timer" - }, - "set_location": { - "message": "Aktiver efter solnedgang på lokationen" - }, - "setup_add_site_hotkey": { - "message": "Indstil en genvejstasttil at tilføje en side" - }, - "setup_hotkey_toggle_extension": { - "message": "Indstil udvidelse\nskifte genvejstast" - }, - "setup_hotkey_toggle_site": { - "message": "Indstil aktuel side\nskifte genvejstast" - }, - "site_list": { - "message": "Side liste" - }, - "site_toggle": { - "message": "Skift af websted" - }, - "store_listing": { - "message": "Denne øjenplejeudvidelse aktiverer nattilstand ved at skabe mørke temaer til websteder i farten. Dark Reader inverterer lyse farver, hvilket gør dem høj kontrast og nemme at læse om natten.\n\nDu kan justere lysstyrke, kontrast, sepiafilter, mørk tilstand, skrifttypeindstillinger og ignoreringslisten.\n\nVi kan bede dig om at støtte udviklingen af appen med en donation. Du kan muligvis se nyheder om Dark Reader i popup-vinduet med indstillinger. Der er udviklerværktøjer til erfarne brugere.\n\nDark Reader viser ikke annoncer og sender ikke brugernes data nogen steder. Det er fuldt ud open source: https://github.com/darkreader/darkreader\n\nFør du installerer det, skal du deaktivere lignende udvidelser. Nyd at se!" - }, - "support_out_work": { - "message": "Støt vores arbejde" - }, - "system_dark_mode": { - "message": "Brug system farveskema" - }, - "system_dark_mode_chromium_warning": { - "message": "Denne indstilling virker muligvis ikke\ngrundet en fejl i din browser" - }, - "system_dark_mode_description": { - "message": "Aktiver når systemets mørk tilstand er til" - }, - "text_stroke": { - "message": "Tekst streg" - }, - "theme_generation_mode": { - "message": "Tema generator mode" - }, - "toggle_current_site": { - "message": "Skift den aktuelle side" - }, - "toggle_extension": { - "message": "Skift udvidelse" - }, - "try_experimental_theme_engines": { - "message": "Prøv **eksperimentelle** temamotorer:\n**Filter+** bevarer farvemætning, bruger GPU\n**Statisk tema** genererer et simpelt hurtigt tema\n**Dynamisk tema** analyserer farver og billeder" - }, - "version": { - "message": "Version" - }, - "we_celebrate_10_years": { - "message": "Dark Reader fejrer 10 år.\nStøt venligst vores arbejde." - }, - "website_toggle_shortcut": { - "message": "Skift tastaturgenvej til websted" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/de/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/de/messages.json deleted file mode 100644 index 484b823..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/de/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Webseite zur Liste hinzufügen" - }, - "all_settings": { - "message": "Alle Einstellungen" - }, - "auto_day_at_location": { - "message": "Auto (Tag am Standort)" - }, - "auto_day_time": { - "message": "Automatisch (tagsüber)" - }, - "auto_night_at_location": { - "message": "Auto (Nacht am Standort)" - }, - "auto_night_time": { - "message": "Automatisch (nachts)" - }, - "auto_system_is_dark": { - "message": "Auto (System ist dunkel)" - }, - "auto_system_is_light": { - "message": "Auto (System ist hell)" - }, - "automation": { - "message": "Automatisierung" - }, - "brightness": { - "message": "Helligkeit" - }, - "change_browser_theme": { - "message": "Ändere das Browsertheme" - }, - "click_to_set_shortcut": { - "message": "Klicken, um die Verknüpfung anzulegen" - }, - "configure_automation": { - "message": "Automatisierung konfigurieren" - }, - "configure_site_toggle": { - "message": "Websiteumschaltung konfigurieren" - }, - "contrast": { - "message": "Kontrast" - }, - "custom_browser_theme_off": { - "message": "Standard" - }, - "custom_browser_theme_on": { - "message": "Benutzerdefiniert" - }, - "dark": { - "message": "Dunkel" - }, - "dark_theme_detected": { - "message": "Dunkles Theme erkannt" - }, - "detect_dark_theme": { - "message": "Dunkles Theme erkennen" - }, - "detect_website_dark_theme": { - "message": "Dunkles Theme der Website erkennen" - }, - "donate": { - "message": "Spenden" - }, - "enable_for_all_sites_by_default": { - "message": "Standardmäßig für alle Websites aktiviert" - }, - "enabled_by_default": { - "message": "Standardmäßig aktiviert" - }, - "engine_dynamic": { - "message": "Dynamisch" - }, - "engine_filter": { - "message": "Filter" - }, - "engine_filter_plus": { - "message": "Filter+" - }, - "engine_static": { - "message": "Statisch" - }, - "extension_description": { - "message": "Dunkler Modus für jede Website. Schonen Sie Ihre Augen und verwenden Sie Dark Reader für die Nacht und das tägliche Surfen." - }, - "extension_toggle_shortcut": { - "message": "Tastenkombination zum Ein-/Ausschalten der Erweiterung" - }, - "filter": { - "message": "Filter" - }, - "grayscale": { - "message": "Graustufe" - }, - "help": { - "message": "Hilfe" - }, - "invert_listed_only": { - "message": "Nur gelistete invertieren" - }, - "latitude": { - "message": "Breitengrad" - }, - "light": { - "message": "Hell" - }, - "loading_please_wait": { - "message": "Lädt, bitte warten" - }, - "local_files_forbidden": { - "message": "Kein Zugriff auf lokale\nDateien erlaubt" - }, - "longitude": { - "message": "Längengrad" - }, - "mobile_link": { - "message": "Mobiler Dark Reader ist verfügbar. Erfahren Sie mehr" - }, - "mode": { - "message": "Modus" - }, - "more": { - "message": "Mehr" - }, - "news": { - "message": "Neuigkeiten" - }, - "not_invert_listed": { - "message": "Nicht gelistete invertieren" - }, - "off": { - "message": "Aus" - }, - "on": { - "message": "Ein" - }, - "only_for": { - "message": "Nur für" - }, - "only_for_description": { - "message": "Einstellungen nur auf aktuelle Webseite anwenden" - }, - "open_dev_tools": { - "message": "Entwicklerwerkzeuge" - }, - "page_in_dark_list": { - "message": "Seite befindet sich auf der\nglobalen Dunkel-Liste" - }, - "page_protected": { - "message": "Diese Seite ist durch\nden Browser geschützt" - }, - "pay_for_using": { - "message": "Bezahlen Sie für die Nutzung von Dark Reader" - }, - "privacy": { - "message": "Datenschutz" - }, - "read_more": { - "message": "Weiterlesen" - }, - "select_font": { - "message": "Schriftart auswählen" - }, - "sepia": { - "message": "Sepia" - }, - "set_active_hours": { - "message": "Aktive Zeit festlegen" - }, - "set_location": { - "message": "Nach lokalem Sonnenuntergang aktivieren" - }, - "setup_add_site_hotkey": { - "message": "Tastenkombination zum Hinzufügen einer Seite festlegen" - }, - "setup_hotkey_toggle_extension": { - "message": "Tastenkombination zum (de)aktivieren\nder Erweiterung" - }, - "setup_hotkey_toggle_site": { - "message": "Tastenkombination zum Umschalten der\naktuellen Webseite einrichten" - }, - "site_list": { - "message": "Webseite-Liste" - }, - "site_toggle": { - "message": "Websiteumschaltung" - }, - "store_listing": { - "message": "Zum Schutz der Augen ermöglicht diese Erweiterung das Erstellen dunkler Farblayouts für Webseiten. Dark Reader invertiert helle Farben, macht sie kontrastreich und nachts gut lesbar.\n\nHelligkeit, Kontrast, Sepia-Filter, Dark-Modus, Schrifteinstellungen und Ignorier-Liste können manuell verwaltet und individuell angepasst werden.\n\nWir bitten Sie, die Entwicklung mit einer Spende zu unterstützen. Im Einstellungs-Popup sehen Sie Neuigkeiten über Dark Reader. Für erfahrene Benutzer stehen Entwicklertools zur Verfügung.\n\nDark Reader zeigt keine Werbung an und sendet keine Benutzerdaten an Dritte. Es ist zu 100% OpenSource: https://github.com/darkreader/darkreader.\n\nBitte deaktivieren Sie vor der Installation ähnliche Erweiterungen. Viel Spaß beim Surfen!" - }, - "support_out_work": { - "message": "Unterstützen Sie unsere Arbeit" - }, - "system_dark_mode": { - "message": "Systemfarben verwenden" - }, - "system_dark_mode_chromium_warning": { - "message": "Diese Option könnte aufgrund eines Fehlers\nin Ihrem Browser nicht funktionieren" - }, - "system_dark_mode_description": { - "message": "Aktivieren, wenn der dunkle Modus des Systems aktiviert ist" - }, - "text_stroke": { - "message": "Textstärke" - }, - "theme_generation_mode": { - "message": "Theme-Generierungsmodus" - }, - "toggle_current_site": { - "message": "Aktuelle Seite umschalten" - }, - "toggle_extension": { - "message": "Erweiterung" - }, - "try_experimental_theme_engines": { - "message": "**Experimentelle** Style-Engines ausprobieren:\n**Filter+** erhält die Farbsättigung, nutzt die GPU\n**Statisches** generiert einfaches und schnelles Theme\n**Dynamisches Thema** analysiert Farben und Bilder" - }, - "version": { - "message": "Ausführung" - }, - "we_celebrate_10_years": { - "message": "Dark Reader feiert 10 Jahre.\nBitte unterstützen Sie unsere Arbeit." - }, - "website_toggle_shortcut": { - "message": "Tastenkombination zum Umschalten der Website" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/el/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/el/messages.json deleted file mode 100644 index 709408d..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/el/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Προσθήκη σελίδας στη λίστα" - }, - "all_settings": { - "message": "Όλες οι ρυθμίσεις" - }, - "auto_day_at_location": { - "message": "Αυτόματο (ημέρα στην τοποθεσία)" - }, - "auto_day_time": { - "message": "Αυτόματο (ημέρα)" - }, - "auto_night_at_location": { - "message": "Αυτόματο (νύχτα στην τοποθεσία)" - }, - "auto_night_time": { - "message": "Αυτόματο (νυχτερινή ώρα)" - }, - "auto_system_is_dark": { - "message": "Αυτόματο (το σύστημα είναι σκοτεινό)" - }, - "auto_system_is_light": { - "message": "Αυτόματο (το σύστημα είναι ελαφρύ)" - }, - "automation": { - "message": "Αυτοματοποίηση" - }, - "brightness": { - "message": "Φωτεινότητα" - }, - "change_browser_theme": { - "message": "Αλλαγή θέματος προγράμματος περιήγησης" - }, - "click_to_set_shortcut": { - "message": "Κάντε κλικ για να ορίσετε τη συντόμευση" - }, - "configure_automation": { - "message": "Διαμόρφωση αυτοματισμού" - }, - "configure_site_toggle": { - "message": "Διαμόρφωση εναλλαγής ιστότοπου" - }, - "contrast": { - "message": "Αντίθεση" - }, - "custom_browser_theme_off": { - "message": "Προεπιλογή" - }, - "custom_browser_theme_on": { - "message": "Προσαρμοσμένη" - }, - "dark": { - "message": "Σκούρα" - }, - "dark_theme_detected": { - "message": "Εντοπίστηκε σκούρο θέμα" - }, - "detect_dark_theme": { - "message": "Εντοπισμός σκοτεινού θέματος" - }, - "detect_website_dark_theme": { - "message": "Εντοπίστε το σκοτεινό θέμα του ιστότοπου" - }, - "donate": { - "message": "Δωρεά" - }, - "enable_for_all_sites_by_default": { - "message": "Ενεργοποιημένο για όλους τους ιστότοπους από προεπιλογή" - }, - "enabled_by_default": { - "message": "Ενεργοποιήθηκε από προεπιλογή" - }, - "engine_dynamic": { - "message": "Δυναμικό" - }, - "engine_filter": { - "message": "Φίλτρο" - }, - "engine_filter_plus": { - "message": "Φίλτρο+" - }, - "engine_static": { - "message": "Στατικό" - }, - "extension_description": { - "message": "Σκούρα εμφάνιση για όλες τις ιστοσελίδες. Φροντίστε τα μάτια σας κάνοντας χρήση σκούρας εμφάνισης στο καθημερινό σας σερφάρισμα." - }, - "extension_toggle_shortcut": { - "message": "Επέκταση on/off συντόμευση πληκτρολογίου" - }, - "filter": { - "message": "Φίλτρο" - }, - "grayscale": { - "message": "Ασπρόμαυρο" - }, - "help": { - "message": "Βοήθεια" - }, - "invert_listed_only": { - "message": "Αντίστροφη λίστα" - }, - "latitude": { - "message": "Γεωγραφικό πλάτος" - }, - "light": { - "message": "Φωτεινή" - }, - "loading_please_wait": { - "message": "Φόρτωση, παρακαλώ περιμένετε" - }, - "local_files_forbidden": { - "message": "Δεν επιτρέπεται η πρόσβαση\nτοπικά αρχεία" - }, - "longitude": { - "message": "Γεωγραφικό μήκος" - }, - "mobile_link": { - "message": "Το Mobile Dark Reader είναι διαθέσιμο. Μάθε περισσότερα" - }, - "mode": { - "message": "Εμφάνιση" - }, - "more": { - "message": "Περισσότερα" - }, - "news": { - "message": "Νέα" - }, - "not_invert_listed": { - "message": "Όχι αντίστροφη" - }, - "off": { - "message": "Off" - }, - "on": { - "message": "On" - }, - "only_for": { - "message": "Μόνο για" - }, - "only_for_description": { - "message": "Ενεργοποίηση μόνο στην τρέχουσα σελίδα" - }, - "open_dev_tools": { - "message": "Εργαλεία" - }, - "page_in_dark_list": { - "message": "Περιλαμβάνεται στην\nκαθολική Σκούρα Λίστα" - }, - "page_protected": { - "message": "Η σελίδα αυτή\nπροστατεύεται" - }, - "pay_for_using": { - "message": "Πληρώστε για τη χρήση του Dark Reader" - }, - "privacy": { - "message": "Ιδιωτικότητα" - }, - "read_more": { - "message": "Διαβάστε περισσότερα" - }, - "select_font": { - "message": "Επιλογή γραμματοσειράς" - }, - "sepia": { - "message": "Sepia" - }, - "set_active_hours": { - "message": "Ορισμός ενεργών ωρών" - }, - "set_location": { - "message": "Ενεργοποιήστε μετά το ηλιοβασίλεμα στη θέση" - }, - "setup_add_site_hotkey": { - "message": "Ρυθμίσεις hotkey για προσθήκη σελίδας" - }, - "setup_hotkey_toggle_extension": { - "message": "Ρυθμίσεις πρόσθετου\nαλλαγή hotkey" - }, - "setup_hotkey_toggle_site": { - "message": "Ρυθμίσεις τρέχουσας σελίδας\nαλλαγή hotkey" - }, - "site_list": { - "message": "Λίστα" - }, - "site_toggle": { - "message": "Εναλλαγή τοποθεσίας" - }, - "store_listing": { - "message": "Αυτό το θεαματικό πρόσθετο, μετατρέπει ζωντανά τις ιστοσελίδες που επισκέπτεστε σε σκούρες. Το Dark Reader αντιστρέφει τα χρώματα δημιουργώντας έντονη αντίθεση για ευκολότερη ανάγνωση κατά τις βραδυνές ώρες.\n\nΜπορείτε να προσαρμόσετε φωτεινότητα, αντίθεση, φίλτρο sepia, σκούρα εμφάνιση και λίστα ιστσελίδων στις οποίες το πρόσθετο δεν θα παρεμβαίνει.\n\nΜπορεί να σας ζητήσουμε να υποστηρίξετε την ανάπτυξη της εφαρμογής με μια δωρεά. Μπορεί να δείτε νέα σχετικά με το Dark Reader στο αναδυόμενο παράθυρο ρυθμίσεων. Υπάρχουν Εργαλεία προγραμματιστών για έμπειρους χρήστες.\n\nΤο Dark Reader δεν εμφανίζει διαφιμήσεις ούτε κάνει οποιαδήποτε αποστολή στατιστικών/πληροφορίών του χρήστη. Είναι 100% ανοικτού κώδικά https://github.com/darkreader/darkreader\n\nΠριν εγκαταστήσετε το πρόσθετο αυτό θα πρέπει να αφαιρέσετε παρόμοια πρόσθετα. Καλό σερφάρισμα!" - }, - "support_out_work": { - "message": "Υποστηρίξτε το έργο μας" - }, - "system_dark_mode": { - "message": "Χρησιμοποιήστε το συνδυασμό χρωμάτων του συστήματος" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "Ενεργοποιείται στη σκοτεινή λειτουργία συστήματος" - }, - "text_stroke": { - "message": "Σκιά γραμμάτων" - }, - "theme_generation_mode": { - "message": "Λειτουργία δημιουργίας θέματος" - }, - "toggle_current_site": { - "message": "Αλλαγή τρέχουσας σελίδας" - }, - "toggle_extension": { - "message": "Εναλλαγή πρόσθετου" - }, - "try_experimental_theme_engines": { - "message": "Δοκιμάστε τις **πειραματικές** μηχανές θεμάτων:\n**Φίλτρο+** διατήρηση κορεσμού χρωμάτων\n**Στατικό θέμα** χρήση απλού, γρήγορου θέματος\n**Δυναμικό θέμα** ανάλυση χρωμάτων και εικόνων" - }, - "version": { - "message": "Εκδοχή" - }, - "we_celebrate_10_years": { - "message": "Το Dark Reader γιορτάζει 10 χρόνια.\nΠαρακαλούμε υποστηρίξτε το έργο μας." - }, - "website_toggle_shortcut": { - "message": "Συντόμευση πληκτρολογίου εναλλαγής ιστότοπου" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/en/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/en/messages.json deleted file mode 100644 index 39254a8..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/en/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Add site to list" - }, - "all_settings": { - "message": "All settings" - }, - "auto_day_at_location": { - "message": "Auto (day at location)" - }, - "auto_day_time": { - "message": "Auto (daytime)" - }, - "auto_night_at_location": { - "message": "Auto (night at location)" - }, - "auto_night_time": { - "message": "Auto (nighttime)" - }, - "auto_system_is_dark": { - "message": "Auto (the system is dark)" - }, - "auto_system_is_light": { - "message": "Auto (the system is light)" - }, - "automation": { - "message": "Automation" - }, - "brightness": { - "message": "Brightness" - }, - "change_browser_theme": { - "message": "Change the browser theme" - }, - "click_to_set_shortcut": { - "message": "Click to set the shortcut" - }, - "configure_automation": { - "message": "Configure automation" - }, - "configure_site_toggle": { - "message": "Configure website toggling" - }, - "contrast": { - "message": "Contrast" - }, - "custom_browser_theme_off": { - "message": "Default" - }, - "custom_browser_theme_on": { - "message": "Custom" - }, - "dark": { - "message": "Dark" - }, - "dark_theme_detected": { - "message": "Dark theme detected" - }, - "detect_dark_theme": { - "message": "Detect dark theme" - }, - "detect_website_dark_theme": { - "message": "Detect the website's dark theme" - }, - "donate": { - "message": "Donate" - }, - "enable_for_all_sites_by_default": { - "message": "Enabled for all websites by default" - }, - "enabled_by_default": { - "message": "Enabled by Default" - }, - "engine_dynamic": { - "message": "Dynamic" - }, - "engine_filter": { - "message": "Filter" - }, - "engine_filter_plus": { - "message": "Filter+" - }, - "engine_static": { - "message": "Static" - }, - "extension_description": { - "message": "Dark mode for every website. Take care of your eyes, use dark theme for night and daily browsing." - }, - "extension_toggle_shortcut": { - "message": "Extension on/off keyboard shortcut" - }, - "filter": { - "message": "Filter" - }, - "grayscale": { - "message": "Grayscale" - }, - "help": { - "message": "Help" - }, - "invert_listed_only": { - "message": "Invert listed only" - }, - "latitude": { - "message": "Latitude" - }, - "light": { - "message": "Light" - }, - "loading_please_wait": { - "message": "Loading, please wait" - }, - "local_files_forbidden": { - "message": "Not allowed to access\nlocal files" - }, - "longitude": { - "message": "Longitude" - }, - "mobile_link": { - "message": "Mobile Dark Reader is available. Learn more" - }, - "mode": { - "message": "Mode" - }, - "more": { - "message": "More" - }, - "news": { - "message": "News" - }, - "not_invert_listed": { - "message": "Not invert listed" - }, - "off": { - "message": "Off" - }, - "on": { - "message": "On" - }, - "only_for": { - "message": "Only for" - }, - "only_for_description": { - "message": "Apply settings to current website only" - }, - "open_dev_tools": { - "message": "Dev tools" - }, - "page_in_dark_list": { - "message": "This site is in global\nDark List" - }, - "page_protected": { - "message": "This page is protected\nby browser" - }, - "pay_for_using": { - "message": "Pay for using Dark Reader" - }, - "privacy": { - "message": "Privacy" - }, - "read_more": { - "message": "Read more" - }, - "select_font": { - "message": "Select a font" - }, - "sepia": { - "message": "Sepia" - }, - "set_active_hours": { - "message": "Set active hours" - }, - "set_location": { - "message": "Activate after sunset at location" - }, - "setup_add_site_hotkey": { - "message": "Setup a hotkey for adding site" - }, - "setup_hotkey_toggle_extension": { - "message": "Setup extension\ntoggle hotkey" - }, - "setup_hotkey_toggle_site": { - "message": "Setup current site\ntoggle hotkey" - }, - "site_list": { - "message": "Site list" - }, - "site_toggle": { - "message": "Site Toggling" - }, - "store_listing": { - "message": "This eye-care extension enables night mode by creating dark themes for websites on the fly. Dark Reader inverts bright colors, making them high contrast and easy to read at night.\n\nYou can adjust the brightness, contrast, sepia filter, dark mode, font settings, and the ignore list.\n\nWe may ask you to support the app's development with a donation. You may see news about Dark Reader in the settings popup. There are Developer Tools for experienced users.\n\nDark Reader doesn't show ads or send users' data anywhere. It's fully open source: https://github.com/darkreader/darkreader\n\nBefore you install it, disable similar extensions. Enjoy watching!" - }, - "support_out_work": { - "message": "Support our work" - }, - "system_dark_mode": { - "message": "Use system color scheme" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "Activate when system dark mode is on" - }, - "text_stroke": { - "message": "Text stroke" - }, - "theme_generation_mode": { - "message": "Theme generation mode" - }, - "toggle_current_site": { - "message": "Toggle current site" - }, - "toggle_extension": { - "message": "Toggle extension" - }, - "try_experimental_theme_engines": { - "message": "Try out **experimental** theme engines:\n**Filter+** preserves colors saturation, uses GPU\n**Static theme** generates a simple fast theme\n**Dynamic theme** analyzes colors and images" - }, - "version": { - "message": "Version" - }, - "we_celebrate_10_years": { - "message": "Dark Reader celebrates 10 years.\nPlease support our work." - }, - "website_toggle_shortcut": { - "message": "Website toggle keyboard shortcut" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/en_GB/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/en_GB/messages.json deleted file mode 100644 index 0bc22f2..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/en_GB/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Add site to list" - }, - "all_settings": { - "message": "All settings" - }, - "auto_day_at_location": { - "message": "Auto (day at location)" - }, - "auto_day_time": { - "message": "Auto (daytime)" - }, - "auto_night_at_location": { - "message": "Auto (night at location)" - }, - "auto_night_time": { - "message": "Auto (nighttime)" - }, - "auto_system_is_dark": { - "message": "Auto (the system is dark)" - }, - "auto_system_is_light": { - "message": "Auto (the system is light)" - }, - "automation": { - "message": "Automation" - }, - "brightness": { - "message": "Brightness" - }, - "change_browser_theme": { - "message": "Change the browser theme" - }, - "click_to_set_shortcut": { - "message": "Click to set the shortcut" - }, - "configure_automation": { - "message": "Configure automation" - }, - "configure_site_toggle": { - "message": "Configure website toggling" - }, - "contrast": { - "message": "Contrast" - }, - "custom_browser_theme_off": { - "message": "Default" - }, - "custom_browser_theme_on": { - "message": "Custom" - }, - "dark": { - "message": "Dark" - }, - "dark_theme_detected": { - "message": "Dark theme detected" - }, - "detect_dark_theme": { - "message": "Detect dark theme" - }, - "detect_website_dark_theme": { - "message": "Detect the website's dark theme" - }, - "donate": { - "message": "Donate" - }, - "enable_for_all_sites_by_default": { - "message": "Enabled for all websites by default" - }, - "enabled_by_default": { - "message": "Enabled by Default" - }, - "engine_dynamic": { - "message": "Dynamic" - }, - "engine_filter": { - "message": "Filter" - }, - "engine_filter_plus": { - "message": "Filter+" - }, - "engine_static": { - "message": "Static" - }, - "extension_description": { - "message": "Dark mode for every website. Take care of your eyes, use dark theme for night and daily browsing." - }, - "extension_toggle_shortcut": { - "message": "Extension on/off keyboard shortcut" - }, - "filter": { - "message": "Filter" - }, - "grayscale": { - "message": "Grayscale" - }, - "help": { - "message": "Help" - }, - "invert_listed_only": { - "message": "Invert listed only" - }, - "latitude": { - "message": "Latitude" - }, - "light": { - "message": "Light" - }, - "loading_please_wait": { - "message": "Loading, please wait" - }, - "local_files_forbidden": { - "message": "Not allowed to access\nlocal files" - }, - "longitude": { - "message": "Longitude" - }, - "mobile_link": { - "message": "Mobile Dark Reader is available. Learn more" - }, - "mode": { - "message": "Mode" - }, - "more": { - "message": "More" - }, - "news": { - "message": "News" - }, - "not_invert_listed": { - "message": "Not invert listed" - }, - "off": { - "message": "Off" - }, - "on": { - "message": "On" - }, - "only_for": { - "message": "Only for" - }, - "only_for_description": { - "message": "Apply settings to current website only" - }, - "open_dev_tools": { - "message": "Dev tools" - }, - "page_in_dark_list": { - "message": "This site is in global\nDark List" - }, - "page_protected": { - "message": "This page is protected\nby browser" - }, - "pay_for_using": { - "message": "Pay for using Dark Reader" - }, - "privacy": { - "message": "Privacy" - }, - "read_more": { - "message": "Read more" - }, - "select_font": { - "message": "Select a font" - }, - "sepia": { - "message": "Sepia" - }, - "set_active_hours": { - "message": "Set active hours" - }, - "set_location": { - "message": "Activate after sunset at location" - }, - "setup_add_site_hotkey": { - "message": "Setup a hotkey for adding site" - }, - "setup_hotkey_toggle_extension": { - "message": "Setup extension\ntoggle hotkey" - }, - "setup_hotkey_toggle_site": { - "message": "Setup current site\ntoggle hotkey" - }, - "site_list": { - "message": "Site list" - }, - "site_toggle": { - "message": "Site Toggling" - }, - "store_listing": { - "message": "This eye-care extension enables night mode by creating dark themes for websites on the fly. Dark Reader inverts bright colours, making them high contrast and easy to read at night.\n\nYou can adjust the brightness, contrast, sepia filter, dark mode, font settings, and the ignore list.\n\nWe may ask you to support the app's development with a donation. You may see news about Dark Reader in the settings popup. There are Developer Tools for experienced users.\n\nDark Reader doesn't show ads or send users' data anywhere. It's fully open source: https://github.com/darkreader/darkreader\n\nBefore you install it, disable similar extensions. Enjoy watching!" - }, - "support_out_work": { - "message": "Support our work" - }, - "system_dark_mode": { - "message": "Use system colour scheme" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "Activate when system dark mode is on" - }, - "text_stroke": { - "message": "Text stroke" - }, - "theme_generation_mode": { - "message": "Theme generation mode" - }, - "toggle_current_site": { - "message": "Toggle current site" - }, - "toggle_extension": { - "message": "Toggle extension" - }, - "try_experimental_theme_engines": { - "message": "Try out **experimental** theme engines:\n**Filter+** preserves colours saturation, uses GPU\n**Static theme** generates a simple fast theme\n**Dynamic theme** analyzes colours and images" - }, - "version": { - "message": "Version" - }, - "we_celebrate_10_years": { - "message": "Dark Reader celebrates 10 years.\nPlease support our work." - }, - "website_toggle_shortcut": { - "message": "Website toggle keyboard shortcut" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/en_US/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/en_US/messages.json deleted file mode 100644 index 39254a8..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/en_US/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Add site to list" - }, - "all_settings": { - "message": "All settings" - }, - "auto_day_at_location": { - "message": "Auto (day at location)" - }, - "auto_day_time": { - "message": "Auto (daytime)" - }, - "auto_night_at_location": { - "message": "Auto (night at location)" - }, - "auto_night_time": { - "message": "Auto (nighttime)" - }, - "auto_system_is_dark": { - "message": "Auto (the system is dark)" - }, - "auto_system_is_light": { - "message": "Auto (the system is light)" - }, - "automation": { - "message": "Automation" - }, - "brightness": { - "message": "Brightness" - }, - "change_browser_theme": { - "message": "Change the browser theme" - }, - "click_to_set_shortcut": { - "message": "Click to set the shortcut" - }, - "configure_automation": { - "message": "Configure automation" - }, - "configure_site_toggle": { - "message": "Configure website toggling" - }, - "contrast": { - "message": "Contrast" - }, - "custom_browser_theme_off": { - "message": "Default" - }, - "custom_browser_theme_on": { - "message": "Custom" - }, - "dark": { - "message": "Dark" - }, - "dark_theme_detected": { - "message": "Dark theme detected" - }, - "detect_dark_theme": { - "message": "Detect dark theme" - }, - "detect_website_dark_theme": { - "message": "Detect the website's dark theme" - }, - "donate": { - "message": "Donate" - }, - "enable_for_all_sites_by_default": { - "message": "Enabled for all websites by default" - }, - "enabled_by_default": { - "message": "Enabled by Default" - }, - "engine_dynamic": { - "message": "Dynamic" - }, - "engine_filter": { - "message": "Filter" - }, - "engine_filter_plus": { - "message": "Filter+" - }, - "engine_static": { - "message": "Static" - }, - "extension_description": { - "message": "Dark mode for every website. Take care of your eyes, use dark theme for night and daily browsing." - }, - "extension_toggle_shortcut": { - "message": "Extension on/off keyboard shortcut" - }, - "filter": { - "message": "Filter" - }, - "grayscale": { - "message": "Grayscale" - }, - "help": { - "message": "Help" - }, - "invert_listed_only": { - "message": "Invert listed only" - }, - "latitude": { - "message": "Latitude" - }, - "light": { - "message": "Light" - }, - "loading_please_wait": { - "message": "Loading, please wait" - }, - "local_files_forbidden": { - "message": "Not allowed to access\nlocal files" - }, - "longitude": { - "message": "Longitude" - }, - "mobile_link": { - "message": "Mobile Dark Reader is available. Learn more" - }, - "mode": { - "message": "Mode" - }, - "more": { - "message": "More" - }, - "news": { - "message": "News" - }, - "not_invert_listed": { - "message": "Not invert listed" - }, - "off": { - "message": "Off" - }, - "on": { - "message": "On" - }, - "only_for": { - "message": "Only for" - }, - "only_for_description": { - "message": "Apply settings to current website only" - }, - "open_dev_tools": { - "message": "Dev tools" - }, - "page_in_dark_list": { - "message": "This site is in global\nDark List" - }, - "page_protected": { - "message": "This page is protected\nby browser" - }, - "pay_for_using": { - "message": "Pay for using Dark Reader" - }, - "privacy": { - "message": "Privacy" - }, - "read_more": { - "message": "Read more" - }, - "select_font": { - "message": "Select a font" - }, - "sepia": { - "message": "Sepia" - }, - "set_active_hours": { - "message": "Set active hours" - }, - "set_location": { - "message": "Activate after sunset at location" - }, - "setup_add_site_hotkey": { - "message": "Setup a hotkey for adding site" - }, - "setup_hotkey_toggle_extension": { - "message": "Setup extension\ntoggle hotkey" - }, - "setup_hotkey_toggle_site": { - "message": "Setup current site\ntoggle hotkey" - }, - "site_list": { - "message": "Site list" - }, - "site_toggle": { - "message": "Site Toggling" - }, - "store_listing": { - "message": "This eye-care extension enables night mode by creating dark themes for websites on the fly. Dark Reader inverts bright colors, making them high contrast and easy to read at night.\n\nYou can adjust the brightness, contrast, sepia filter, dark mode, font settings, and the ignore list.\n\nWe may ask you to support the app's development with a donation. You may see news about Dark Reader in the settings popup. There are Developer Tools for experienced users.\n\nDark Reader doesn't show ads or send users' data anywhere. It's fully open source: https://github.com/darkreader/darkreader\n\nBefore you install it, disable similar extensions. Enjoy watching!" - }, - "support_out_work": { - "message": "Support our work" - }, - "system_dark_mode": { - "message": "Use system color scheme" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "Activate when system dark mode is on" - }, - "text_stroke": { - "message": "Text stroke" - }, - "theme_generation_mode": { - "message": "Theme generation mode" - }, - "toggle_current_site": { - "message": "Toggle current site" - }, - "toggle_extension": { - "message": "Toggle extension" - }, - "try_experimental_theme_engines": { - "message": "Try out **experimental** theme engines:\n**Filter+** preserves colors saturation, uses GPU\n**Static theme** generates a simple fast theme\n**Dynamic theme** analyzes colors and images" - }, - "version": { - "message": "Version" - }, - "we_celebrate_10_years": { - "message": "Dark Reader celebrates 10 years.\nPlease support our work." - }, - "website_toggle_shortcut": { - "message": "Website toggle keyboard shortcut" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/es/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/es/messages.json deleted file mode 100644 index c0ec73e..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/es/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Agregar sitio a la lista" - }, - "all_settings": { - "message": "Todos los ajustes" - }, - "auto_day_at_location": { - "message": "Auto (día en el lugar)" - }, - "auto_day_time": { - "message": "Automático (hora del día)" - }, - "auto_night_at_location": { - "message": "Auto (noche en el lugar)" - }, - "auto_night_time": { - "message": "Automático (noche)" - }, - "auto_system_is_dark": { - "message": "Automático (el sistema está oscuro)" - }, - "auto_system_is_light": { - "message": "Automático (el sistema está claro)" - }, - "automation": { - "message": "Automatización" - }, - "brightness": { - "message": "Brillo" - }, - "change_browser_theme": { - "message": "Cambiar el tema del navegador" - }, - "click_to_set_shortcut": { - "message": "Haga clic para establecer el acceso directo" - }, - "configure_automation": { - "message": "Configurar la automatización" - }, - "configure_site_toggle": { - "message": "Configurar la alternancia del sitio web" - }, - "contrast": { - "message": "Contraste" - }, - "custom_browser_theme_off": { - "message": "Por defecto" - }, - "custom_browser_theme_on": { - "message": "Personalizado" - }, - "dark": { - "message": "Oscuro" - }, - "dark_theme_detected": { - "message": "Tema oscuro detectado" - }, - "detect_dark_theme": { - "message": "Detectar tema oscuro" - }, - "detect_website_dark_theme": { - "message": "Detectar el tema oscuro propio del sitio web" - }, - "donate": { - "message": "Donar" - }, - "enable_for_all_sites_by_default": { - "message": "Habilitado para todos los sitios web de forma predeterminada" - }, - "enabled_by_default": { - "message": "Habilitado por defecto" - }, - "engine_dynamic": { - "message": "Dinámico" - }, - "engine_filter": { - "message": "Filtro" - }, - "engine_filter_plus": { - "message": "Filtro+" - }, - "engine_static": { - "message": "Estático" - }, - "extension_description": { - "message": "Tema oscuro para todos los sitios. Cuide sus ojos, utilice Dark Reader para navegar durante el día y la noche." - }, - "extension_toggle_shortcut": { - "message": "Método abreviado de teclado para activar o desactivar la extensión" - }, - "filter": { - "message": "Filtro" - }, - "grayscale": { - "message": "Escala de grises" - }, - "help": { - "message": "Ayuda" - }, - "invert_listed_only": { - "message": "Invertir sólo listados" - }, - "latitude": { - "message": "Latitud" - }, - "light": { - "message": "Claro" - }, - "loading_please_wait": { - "message": "Cargando, espere por favor" - }, - "local_files_forbidden": { - "message": "No se permite el acceso\na los archivos locales" - }, - "longitude": { - "message": "Longitud" - }, - "mobile_link": { - "message": "Mobile Dark Reader está disponible. Aprende más" - }, - "mode": { - "message": "Modo" - }, - "more": { - "message": "Más" - }, - "news": { - "message": "Avisos" - }, - "not_invert_listed": { - "message": "No invertir listados" - }, - "off": { - "message": "No" - }, - "on": { - "message": "Sí" - }, - "only_for": { - "message": "Sólo para" - }, - "only_for_description": { - "message": "Aplicar configuración sólo al sitio actual" - }, - "open_dev_tools": { - "message": "Herramientas" - }, - "page_in_dark_list": { - "message": "Este sitio está en la\nlista global Dark List" - }, - "page_protected": { - "message": "Esta página está protegida\npor el navegador" - }, - "pay_for_using": { - "message": "Pagar por usar Dark Reader" - }, - "privacy": { - "message": "Privacidad" - }, - "read_more": { - "message": "Lea más" - }, - "select_font": { - "message": "Seleccione una fuente" - }, - "sepia": { - "message": "Sepia" - }, - "set_active_hours": { - "message": "Establece horas activas" - }, - "set_location": { - "message": "Activar después de la puesta del sol en la ubicación" - }, - "setup_add_site_hotkey": { - "message": "Configurar tecla de atajo para agregar un sitio" - }, - "setup_hotkey_toggle_extension": { - "message": "Configurar extensión\nTecla de atajo" - }, - "setup_hotkey_toggle_site": { - "message": "Configura tecla de alternancia\npara sitio actual" - }, - "site_list": { - "message": "Lista de sitios" - }, - "site_toggle": { - "message": "Cambio de sitio" - }, - "store_listing": { - "message": "Esta extensión que cuida los ojos habilita el modo nocturno, creando temas oscuros para sitios de internet en el momento. Dark Reader invierte los colores brillantes, haciéndolos contrastantes y fáciles de leer a la noche.\n\nPuede ajustar brillo, contraste, filtro sepia, modo oscuro, configuración de fuentes y lista de ignorados\n\nEs posible que le pidamos que apoye el desarrollo de la aplicación con una donación. Es posible que vea noticias sobre Dark Reader en la ventana emergente de configuración. Existen herramientas de desarrollo para usuarios experimentados.\n\nDark Reader no muestra publicidad y no envía la información del usuario a ningún lado. Es totalmente de código abierto https://github.com/darkreader/darkreader\n\nAntes de instalarlo, desactive extensiones similares. Disfrute mirando!" - }, - "support_out_work": { - "message": "Apoya nuestro trabajo" - }, - "system_dark_mode": { - "message": "Usar esquema de color del sistema" - }, - "system_dark_mode_chromium_warning": { - "message": "Esta opción podría no funcionar debido\na un bug en su navegador" - }, - "system_dark_mode_description": { - "message": "Activar cuando el modo oscuro del sistema está encendido" - }, - "text_stroke": { - "message": "Trazo del texto" - }, - "theme_generation_mode": { - "message": "Modo de generación del tema" - }, - "toggle_current_site": { - "message": "Alternar sitio actual" - }, - "toggle_extension": { - "message": "Alternar extensión" - }, - "try_experimental_theme_engines": { - "message": "Pruebe motores de temas **experimentales**:\n**Filtro+** preserva la saturación de colores, usa GPU\n**Tema Estático** genera un tema simple y rápido\n**Tema Dinámico** analiza colores e imágenes" - }, - "version": { - "message": "Versión" - }, - "we_celebrate_10_years": { - "message": "Dark Reader celebra 10 años.\nPor favor apoye nuestro trabajo." - }, - "website_toggle_shortcut": { - "message": "Método abreviado de teclado para alternar sitio web" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/es_419/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/es_419/messages.json deleted file mode 100644 index abdd9a2..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/es_419/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Agregar sitio a la lista" - }, - "all_settings": { - "message": "Todos los ajustes" - }, - "auto_day_at_location": { - "message": "Auto (día en el lugar)" - }, - "auto_day_time": { - "message": "Automático (hora del día)" - }, - "auto_night_at_location": { - "message": "Auto (noche en el lugar)" - }, - "auto_night_time": { - "message": "Automático (noche)" - }, - "auto_system_is_dark": { - "message": "Automático (el sistema está oscuro)" - }, - "auto_system_is_light": { - "message": "Automático (el sistema está claro)" - }, - "automation": { - "message": "Automatización" - }, - "brightness": { - "message": "Brillo" - }, - "change_browser_theme": { - "message": "Cambiar el tema del navegador" - }, - "click_to_set_shortcut": { - "message": "Haga clic para establecer el acceso directo" - }, - "configure_automation": { - "message": "Configurar la automatización" - }, - "configure_site_toggle": { - "message": "Configurar la alternancia del sitio web" - }, - "contrast": { - "message": "Contraste" - }, - "custom_browser_theme_off": { - "message": "Por defecto" - }, - "custom_browser_theme_on": { - "message": "Personalizado" - }, - "dark": { - "message": "Oscuro" - }, - "dark_theme_detected": { - "message": "Tema oscuro detectado" - }, - "detect_dark_theme": { - "message": "Detectar tema oscuro" - }, - "detect_website_dark_theme": { - "message": "Detectar el tema oscuro propio del sitio web" - }, - "donate": { - "message": "Donar" - }, - "enable_for_all_sites_by_default": { - "message": "Habilitado para todos los sitios web de forma predeterminada" - }, - "enabled_by_default": { - "message": "Habilitado por defecto" - }, - "engine_dynamic": { - "message": "Dinámico" - }, - "engine_filter": { - "message": "Filtrar" - }, - "engine_filter_plus": { - "message": "Filtrar+" - }, - "engine_static": { - "message": "Estático" - }, - "extension_description": { - "message": "Modo oscuro para cada sitio web. Cuide sus ojos, use el tema oscuro para la navegación nocturna y diaria." - }, - "extension_toggle_shortcut": { - "message": "Método abreviado de teclado para activar o desactivar la extensión" - }, - "filter": { - "message": "Filtrar" - }, - "grayscale": { - "message": "Escala de grises" - }, - "help": { - "message": "Ayuda" - }, - "invert_listed_only": { - "message": "Invertir solo listado" - }, - "latitude": { - "message": "Latitud" - }, - "light": { - "message": "Claro" - }, - "loading_please_wait": { - "message": "Cargando, por favor espere" - }, - "local_files_forbidden": { - "message": "No se permite el acceso\na los archivos locales" - }, - "longitude": { - "message": "Longitud" - }, - "mobile_link": { - "message": "Mobile Dark Reader está disponible. Aprende más" - }, - "mode": { - "message": "Modo" - }, - "more": { - "message": "Más" - }, - "news": { - "message": "Noticias" - }, - "not_invert_listed": { - "message": "No invertir listado" - }, - "off": { - "message": "Apagado" - }, - "on": { - "message": "Encendido" - }, - "only_for": { - "message": "Solo para" - }, - "only_for_description": { - "message": "Aplicar la configuración solo al sitio web actual" - }, - "open_dev_tools": { - "message": "Herramientas de desarrollo" - }, - "page_in_dark_list": { - "message": "Este sitio está en la\nLista Oscura global" - }, - "page_protected": { - "message": "Esta página está protegida\npor el navegador" - }, - "pay_for_using": { - "message": "Pagar por usar Dark Reader" - }, - "privacy": { - "message": "Privacidad" - }, - "read_more": { - "message": "Leer más" - }, - "select_font": { - "message": "Seleccione una fuente" - }, - "sepia": { - "message": "Sepia" - }, - "set_active_hours": { - "message": "Establecer horas activas" - }, - "set_location": { - "message": "Activar después del atardecer en la ubicación" - }, - "setup_add_site_hotkey": { - "message": "Configure una tecla de acceso rápido para agregar un sitio" - }, - "setup_hotkey_toggle_extension": { - "message": "Configurar acceso directo\npara alternar la extensión" - }, - "setup_hotkey_toggle_site": { - "message": "Configurar acceso directo\npara alternar el sitio actual" - }, - "site_list": { - "message": "Lista de sitios" - }, - "site_toggle": { - "message": "Cambio de sitio" - }, - "store_listing": { - "message": "Esta extensión para el cuidado de la vista habilita el modo nocturno al crear temas oscuros para sitios web sobre la marcha. Dark Reader invierte los colores brillantes, haciéndolos de alto contraste y fáciles de leer por la noche.\n\nPuede ajustar el brillo, el contraste, el filtro sepia, el modo oscuro, la configuración de fuente y la lista de ignorados.\n\nEs posible que le pidamos que apoye el desarrollo de la aplicación con una donación. Es posible que vea noticias sobre Dark Reader en la ventana emergente de configuración. Existen herramientas de desarrollo para usuarios experimentados.\n\nDark Reader no muestra anuncios y no envía datos de los usuarios a ninguna parte. Es completamente de código abierto: https://github.com/darkreader/darkreader\n\nAntes de instalarlo, deshabilite las extensiones similares. ¡Disfruta mirando!" - }, - "support_out_work": { - "message": "Apoya nuestro trabajo" - }, - "system_dark_mode": { - "message": "Usar el esquema de colores del sistema" - }, - "system_dark_mode_chromium_warning": { - "message": "Esta opción podría no funcionar debido\na un bug en su navegador" - }, - "system_dark_mode_description": { - "message": "Activar cuando el modo oscuro del sistema está encendido" - }, - "text_stroke": { - "message": "Trazo de texto" - }, - "theme_generation_mode": { - "message": "Modo de generación de temas" - }, - "toggle_current_site": { - "message": "Alternar sitio actual" - }, - "toggle_extension": { - "message": "Alternar extensión" - }, - "try_experimental_theme_engines": { - "message": "Pruebe motores de temas **experimentales**:\n**Filtro+** conserva la saturación de colores, usa GPU\n**Tema estático** genera un tema simple y rápido\n**Tema dinámico** analiza colores e imágenes" - }, - "version": { - "message": "Versión" - }, - "we_celebrate_10_years": { - "message": "Dark Reader celebra 10 años.\nPor favor apoye nuestro trabajo." - }, - "website_toggle_shortcut": { - "message": "Método abreviado de teclado para alternar sitio web" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/fa/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/fa/messages.json deleted file mode 100644 index af495ac..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/fa/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "اضافه کردن سایت به لیست" - }, - "all_settings": { - "message": "همه تنظیمات" - }, - "auto_day_at_location": { - "message": "خودکار (روز در محل)" - }, - "auto_day_time": { - "message": "خودکار (روزانه)" - }, - "auto_night_at_location": { - "message": "خودکار (شب در محل)" - }, - "auto_night_time": { - "message": "خودکار (شب)" - }, - "auto_system_is_dark": { - "message": "خودکار (سیستم تاریک است)" - }, - "auto_system_is_light": { - "message": "خودکار (سیستم سبک است)" - }, - "automation": { - "message": "تغییر وضعیت خودکار" - }, - "brightness": { - "message": "روشنایی" - }, - "change_browser_theme": { - "message": "طرح زمینه مرورگر را تغییر میدهد" - }, - "click_to_set_shortcut": { - "message": "برای تنظیم میانبر کلیک کنید" - }, - "configure_automation": { - "message": "پیکربندی اتوماسیون" - }, - "configure_site_toggle": { - "message": "پیکربندی جابجایی وب سایت" - }, - "contrast": { - "message": "کنتراست" - }, - "custom_browser_theme_off": { - "message": "پیش فرض" - }, - "custom_browser_theme_on": { - "message": "سفارشی" - }, - "dark": { - "message": "تاریک" - }, - "dark_theme_detected": { - "message": "طرح زمینه تیره شناسایی شد" - }, - "detect_dark_theme": { - "message": "تشخیص تم تیره" - }, - "detect_website_dark_theme": { - "message": "تم تاریک خود وب سایت را شناسایی کنید" - }, - "donate": { - "message": "کمک مالی" - }, - "enable_for_all_sites_by_default": { - "message": "به طور پیش فرض برای همه وب سایت ها فعال است" - }, - "enabled_by_default": { - "message": "به صورت پیش فرض فعال شده است" - }, - "engine_dynamic": { - "message": "پویا" - }, - "engine_filter": { - "message": "فیلتر" - }, - "engine_filter_plus": { - "message": "فیلتر+" - }, - "engine_static": { - "message": "ایستا" - }, - "extension_description": { - "message": "حالت تاریک برای همه سایت ها. مراقب چشمانتان باشید، برای وبگردی در شب یا روز از حالت تاریک استفاده کنید." - }, - "extension_toggle_shortcut": { - "message": "میانبر صفحه کلید روشن/خاموش برنامه افزودنی" - }, - "filter": { - "message": "فیلتر" - }, - "grayscale": { - "message": "مقیاس خاکستری" - }, - "help": { - "message": "کمک" - }, - "invert_listed_only": { - "message": "اعمال روی ذکرشده ها" - }, - "latitude": { - "message": "طول جغرافیایی" - }, - "light": { - "message": "روشن" - }, - "loading_please_wait": { - "message": "درحال بارگزاری، لطفا صبر کنید" - }, - "local_files_forbidden": { - "message": "اجازه دسترسی ندارد\nفایل های محلی" - }, - "longitude": { - "message": "عرض جغرافیایی" - }, - "mobile_link": { - "message": "Dark Reader موبایل در دسترس است. بیشتر بدانید" - }, - "mode": { - "message": "حالت" - }, - "more": { - "message": "بیشتر" - }, - "news": { - "message": "اخبار" - }, - "not_invert_listed": { - "message": "اعمال روی ذکرنشده ها" - }, - "off": { - "message": "غیرفعال" - }, - "on": { - "message": "فعال" - }, - "only_for": { - "message": "فقط برای" - }, - "only_for_description": { - "message": "اعمال تنظیمات تنها به سایت کنونی" - }, - "open_dev_tools": { - "message": "ابزار توسعه دهنده" - }, - "page_in_dark_list": { - "message": "این سایت در لیست تاریک\nسراسری قرار دارد" - }, - "page_protected": { - "message": "این صفحه بوسیله مرورگر\nمحافظت شده است" - }, - "pay_for_using": { - "message": "برای استفاده از Dark Reader پرداخت کنید" - }, - "privacy": { - "message": "حریم خصوصی" - }, - "read_more": { - "message": "بیشتر بخوانید" - }, - "select_font": { - "message": "انتخاب قلم" - }, - "sepia": { - "message": "قرمز قهوه ای" - }, - "set_active_hours": { - "message": "تنظیم ساعات فعال" - }, - "set_location": { - "message": "فعال کردن پس از غروب در این موقعیت" - }, - "setup_add_site_hotkey": { - "message": "تنظیم میانبر برای اضافه کردن سایت" - }, - "setup_hotkey_toggle_extension": { - "message": "تنظیم افزونه\nکلید میانبر تغییر وضعیت" - }, - "setup_hotkey_toggle_site": { - "message": "تنظیم برای سایت کنونی\nکلید میانبر تغییر وضعیت" - }, - "site_list": { - "message": "لیست سایت ها" - }, - "site_toggle": { - "message": "تغییر دادن سایت" - }, - "store_listing": { - "message": "این افزونه مراقبت از چشم، حالت تاریک را با ایجاد طرح تیره به صورت زنده برای سایت ها، فعال میکند. دارک ریدر رنگ های روشن را معکوس میکند، اختلاف تیره و روشن را بیشتر میکند و باعث ساده خوانی متون میشود.\n\nشما میتوانید میزان روشنایی، کنتراست، فیلتر قرمز قهوه ای، حالت تاریک، نوع قلم و لیست سایت های نادیده گرفته شده را تنظیم کنید.\n\nممکن است از شما بخواهیم با کمک مالی از توسعه برنامه حمایت کنید. ممکن است اخبار مربوط به Dark Reader را در پنجره بازشو ببینید. ابزارهای توسعه دهنده برای کاربران با تجربه وجود دارد.\n\nدارک ریدر تبلیغات نشان نمیدهد و اطلاعات کاربران را برای جایی ارسال نمیکند. همچنین بصورت کامل متن باز است https://github.com/darkreader/darkreader\n\nقبل از نصب افزونه های مشابه را حذف کنید. از تماشا کردن لذت ببرید!" - }, - "support_out_work": { - "message": "از کار ما حمایت کنید" - }, - "system_dark_mode": { - "message": "استفاده از طرح رنگ سیستم" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "فعال کردن زمانی که حالت تاریک سیستم روشن است" - }, - "text_stroke": { - "message": "حاشیه متن" - }, - "theme_generation_mode": { - "message": "حالت ایجاد طرح" - }, - "toggle_current_site": { - "message": "تغییر وضعیت سایت کنونی" - }, - "toggle_extension": { - "message": "تغییر وضعیت افزونه" - }, - "try_experimental_theme_engines": { - "message": "موتورهای **آزمایشی** طرح ها را امتحان کنید:\n**فیلتر+** خلوص رنگ ها را حفظ میکند، گرافیک مصرف میکند\n**طرح ایستا** طرح ساده و سریعی را ایجاد میکند\n**طرح پویا** رنگ ها و تصاویر را تحلیل میکند" - }, - "version": { - "message": "نسخه" - }, - "we_celebrate_10_years": { - "message": "دارک ریدر 10 سالگی را جشن می گیرد.\nلطفا از کار ما حمایت کنید" - }, - "website_toggle_shortcut": { - "message": "میانبر صفحه کلید تغییر وضعیت وب سایت" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/fa_IR/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/fa_IR/messages.json deleted file mode 100644 index af495ac..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/fa_IR/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "اضافه کردن سایت به لیست" - }, - "all_settings": { - "message": "همه تنظیمات" - }, - "auto_day_at_location": { - "message": "خودکار (روز در محل)" - }, - "auto_day_time": { - "message": "خودکار (روزانه)" - }, - "auto_night_at_location": { - "message": "خودکار (شب در محل)" - }, - "auto_night_time": { - "message": "خودکار (شب)" - }, - "auto_system_is_dark": { - "message": "خودکار (سیستم تاریک است)" - }, - "auto_system_is_light": { - "message": "خودکار (سیستم سبک است)" - }, - "automation": { - "message": "تغییر وضعیت خودکار" - }, - "brightness": { - "message": "روشنایی" - }, - "change_browser_theme": { - "message": "طرح زمینه مرورگر را تغییر میدهد" - }, - "click_to_set_shortcut": { - "message": "برای تنظیم میانبر کلیک کنید" - }, - "configure_automation": { - "message": "پیکربندی اتوماسیون" - }, - "configure_site_toggle": { - "message": "پیکربندی جابجایی وب سایت" - }, - "contrast": { - "message": "کنتراست" - }, - "custom_browser_theme_off": { - "message": "پیش فرض" - }, - "custom_browser_theme_on": { - "message": "سفارشی" - }, - "dark": { - "message": "تاریک" - }, - "dark_theme_detected": { - "message": "طرح زمینه تیره شناسایی شد" - }, - "detect_dark_theme": { - "message": "تشخیص تم تیره" - }, - "detect_website_dark_theme": { - "message": "تم تاریک خود وب سایت را شناسایی کنید" - }, - "donate": { - "message": "کمک مالی" - }, - "enable_for_all_sites_by_default": { - "message": "به طور پیش فرض برای همه وب سایت ها فعال است" - }, - "enabled_by_default": { - "message": "به صورت پیش فرض فعال شده است" - }, - "engine_dynamic": { - "message": "پویا" - }, - "engine_filter": { - "message": "فیلتر" - }, - "engine_filter_plus": { - "message": "فیلتر+" - }, - "engine_static": { - "message": "ایستا" - }, - "extension_description": { - "message": "حالت تاریک برای همه سایت ها. مراقب چشمانتان باشید، برای وبگردی در شب یا روز از حالت تاریک استفاده کنید." - }, - "extension_toggle_shortcut": { - "message": "میانبر صفحه کلید روشن/خاموش برنامه افزودنی" - }, - "filter": { - "message": "فیلتر" - }, - "grayscale": { - "message": "مقیاس خاکستری" - }, - "help": { - "message": "کمک" - }, - "invert_listed_only": { - "message": "اعمال روی ذکرشده ها" - }, - "latitude": { - "message": "طول جغرافیایی" - }, - "light": { - "message": "روشن" - }, - "loading_please_wait": { - "message": "درحال بارگزاری، لطفا صبر کنید" - }, - "local_files_forbidden": { - "message": "اجازه دسترسی ندارد\nفایل های محلی" - }, - "longitude": { - "message": "عرض جغرافیایی" - }, - "mobile_link": { - "message": "Dark Reader موبایل در دسترس است. بیشتر بدانید" - }, - "mode": { - "message": "حالت" - }, - "more": { - "message": "بیشتر" - }, - "news": { - "message": "اخبار" - }, - "not_invert_listed": { - "message": "اعمال روی ذکرنشده ها" - }, - "off": { - "message": "غیرفعال" - }, - "on": { - "message": "فعال" - }, - "only_for": { - "message": "فقط برای" - }, - "only_for_description": { - "message": "اعمال تنظیمات تنها به سایت کنونی" - }, - "open_dev_tools": { - "message": "ابزار توسعه دهنده" - }, - "page_in_dark_list": { - "message": "این سایت در لیست تاریک\nسراسری قرار دارد" - }, - "page_protected": { - "message": "این صفحه بوسیله مرورگر\nمحافظت شده است" - }, - "pay_for_using": { - "message": "برای استفاده از Dark Reader پرداخت کنید" - }, - "privacy": { - "message": "حریم خصوصی" - }, - "read_more": { - "message": "بیشتر بخوانید" - }, - "select_font": { - "message": "انتخاب قلم" - }, - "sepia": { - "message": "قرمز قهوه ای" - }, - "set_active_hours": { - "message": "تنظیم ساعات فعال" - }, - "set_location": { - "message": "فعال کردن پس از غروب در این موقعیت" - }, - "setup_add_site_hotkey": { - "message": "تنظیم میانبر برای اضافه کردن سایت" - }, - "setup_hotkey_toggle_extension": { - "message": "تنظیم افزونه\nکلید میانبر تغییر وضعیت" - }, - "setup_hotkey_toggle_site": { - "message": "تنظیم برای سایت کنونی\nکلید میانبر تغییر وضعیت" - }, - "site_list": { - "message": "لیست سایت ها" - }, - "site_toggle": { - "message": "تغییر دادن سایت" - }, - "store_listing": { - "message": "این افزونه مراقبت از چشم، حالت تاریک را با ایجاد طرح تیره به صورت زنده برای سایت ها، فعال میکند. دارک ریدر رنگ های روشن را معکوس میکند، اختلاف تیره و روشن را بیشتر میکند و باعث ساده خوانی متون میشود.\n\nشما میتوانید میزان روشنایی، کنتراست، فیلتر قرمز قهوه ای، حالت تاریک، نوع قلم و لیست سایت های نادیده گرفته شده را تنظیم کنید.\n\nممکن است از شما بخواهیم با کمک مالی از توسعه برنامه حمایت کنید. ممکن است اخبار مربوط به Dark Reader را در پنجره بازشو ببینید. ابزارهای توسعه دهنده برای کاربران با تجربه وجود دارد.\n\nدارک ریدر تبلیغات نشان نمیدهد و اطلاعات کاربران را برای جایی ارسال نمیکند. همچنین بصورت کامل متن باز است https://github.com/darkreader/darkreader\n\nقبل از نصب افزونه های مشابه را حذف کنید. از تماشا کردن لذت ببرید!" - }, - "support_out_work": { - "message": "از کار ما حمایت کنید" - }, - "system_dark_mode": { - "message": "استفاده از طرح رنگ سیستم" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "فعال کردن زمانی که حالت تاریک سیستم روشن است" - }, - "text_stroke": { - "message": "حاشیه متن" - }, - "theme_generation_mode": { - "message": "حالت ایجاد طرح" - }, - "toggle_current_site": { - "message": "تغییر وضعیت سایت کنونی" - }, - "toggle_extension": { - "message": "تغییر وضعیت افزونه" - }, - "try_experimental_theme_engines": { - "message": "موتورهای **آزمایشی** طرح ها را امتحان کنید:\n**فیلتر+** خلوص رنگ ها را حفظ میکند، گرافیک مصرف میکند\n**طرح ایستا** طرح ساده و سریعی را ایجاد میکند\n**طرح پویا** رنگ ها و تصاویر را تحلیل میکند" - }, - "version": { - "message": "نسخه" - }, - "we_celebrate_10_years": { - "message": "دارک ریدر 10 سالگی را جشن می گیرد.\nلطفا از کار ما حمایت کنید" - }, - "website_toggle_shortcut": { - "message": "میانبر صفحه کلید تغییر وضعیت وب سایت" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/fil/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/fil/messages.json deleted file mode 100644 index bfceef8..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/fil/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Idagdag ang site sa listahan" - }, - "all_settings": { - "message": "Lahat ng mga setting" - }, - "auto_day_at_location": { - "message": "Auto (araw sa lokasyon)" - }, - "auto_day_time": { - "message": "Auto (araw)" - }, - "auto_night_at_location": { - "message": "Auto (gabi sa lokasyon)" - }, - "auto_night_time": { - "message": "Auto (oras ng gabi)" - }, - "auto_system_is_dark": { - "message": "Auto (madilim ang system)" - }, - "auto_system_is_light": { - "message": "Auto (magaan ang system)" - }, - "automation": { - "message": "Awtomasyon" - }, - "brightness": { - "message": "Liwanag" - }, - "change_browser_theme": { - "message": "Palitan ang tema ng browser" - }, - "click_to_set_shortcut": { - "message": "I-click upang itakda ang shortcut" - }, - "configure_automation": { - "message": "I-configure ang automation" - }, - "configure_site_toggle": { - "message": "I-configure ang pag-toggle ng website" - }, - "contrast": { - "message": "Contrast" - }, - "custom_browser_theme_off": { - "message": "Default" - }, - "custom_browser_theme_on": { - "message": "Custom" - }, - "dark": { - "message": "Madilim" - }, - "dark_theme_detected": { - "message": "Natukoy ang madilim na tema" - }, - "detect_dark_theme": { - "message": "I-detect ang madilim na tema" - }, - "detect_website_dark_theme": { - "message": "Alamin ang sariling madilim na tema ng website" - }, - "donate": { - "message": "Mag-donate" - }, - "enable_for_all_sites_by_default": { - "message": "Pinagana para sa lahat ng mga website bilang default" - }, - "enabled_by_default": { - "message": "Pinagana sa pamamagitan ng Default" - }, - "engine_dynamic": { - "message": "Dynamiko" - }, - "engine_filter": { - "message": "Filter" - }, - "engine_filter_plus": { - "message": "Filter+" - }, - "engine_static": { - "message": "Static" - }, - "extension_description": { - "message": "Dark mode para sa lahat ng website. Alagaan ang iyong mga mata, gamitin ang dark theme para sa gabi at pang-araw-araw na browsing." - }, - "extension_toggle_shortcut": { - "message": "Extension on/off keyboard shortcut" - }, - "filter": { - "message": "Filter" - }, - "grayscale": { - "message": "Grayscale" - }, - "help": { - "message": "Tulong" - }, - "invert_listed_only": { - "message": "I-invert ang mga nakalista lamang" - }, - "latitude": { - "message": "Latitud" - }, - "light": { - "message": "Maliwanag" - }, - "loading_please_wait": { - "message": "Ikinakarga, mangyaring maghintay" - }, - "local_files_forbidden": { - "message": "Hindi pinapayagang ma-access\nmga lokal na file" - }, - "longitude": { - "message": "Longhitud" - }, - "mobile_link": { - "message": "Available ang Mobile Dark Reader. Matuto pa" - }, - "mode": { - "message": "Mode" - }, - "more": { - "message": "Higit pa" - }, - "news": { - "message": "Balita" - }, - "not_invert_listed": { - "message": "Huwag i-invert ang mga nakalista" - }, - "off": { - "message": "Sarado" - }, - "on": { - "message": "Bukas" - }, - "only_for": { - "message": "Para lang sa" - }, - "only_for_description": { - "message": "Ilapat ang mga setting sa kasalukuyang website lamang" - }, - "open_dev_tools": { - "message": "Mga kagamitan para sa mga developer" - }, - "page_in_dark_list": { - "message": "Ang site na ito ay nasa pandaigdigang\nDark List" - }, - "page_protected": { - "message": "Protektado ang pahinang ito\nng browser" - }, - "pay_for_using": { - "message": "Magbayad para sa paggamit ng Dark Reader" - }, - "privacy": { - "message": "Pagkapribado" - }, - "read_more": { - "message": "Magbasa ng higit pa" - }, - "select_font": { - "message": "Pumili ng font" - }, - "sepia": { - "message": "Sepia" - }, - "set_active_hours": { - "message": "Itakda ang mga aktibong oras" - }, - "set_location": { - "message": "Buksan pagkatapos ng paglubog ng araw sa lokasyon" - }, - "setup_add_site_hotkey": { - "message": "Magtakda ng hotkey para sa pagdadagdag ng isang site" - }, - "setup_hotkey_toggle_extension": { - "message": "I-setup ang ekstensyon\nhotkey sa pag-toggle" - }, - "setup_hotkey_toggle_site": { - "message": "I-setup ang kasalukuyang site\nhotkey sa pag-toggle" - }, - "site_list": { - "message": "Listahan ng mga site" - }, - "site_toggle": { - "message": "Pag-toggling ng Site" - }, - "store_listing": { - "message": "Mabilisang binubuksan ng ekstensyong ito ang night mode sa pamamagitan ng madilim na tema. Ini-invert ng Dark Reader ang matitingkad na kulay, ginagawa silang high contrast at madaling basahin sa gabi.\n\nPuwede mong i-adjust ang liwanag, contrast, sepia filter, dark mode, mga setting ng font at ang ignore-list.\n\nMaaari naming hilingin sa iyo na suportahan ang pagbuo ng app gamit ang isang donasyon. Maaari kang makakita ng mga balita tungkol sa Dark Reader sa popup ng mga setting. Mayroong Mga Tool ng Developer para sa mga may karanasang user.\n\nHindi nagpapakita ng mga ad ang Dark Reader o ipinapadala ang iyong data kung saan-saan. Open-source ito: https://github.com/darkreader/darkreader\n\nBago mo ikabit (i-install) ito, tanggalin muna ang mga katulad na ekstensyon. Magsaya sa panonood!" - }, - "support_out_work": { - "message": "Suportahan ang aming trabaho" - }, - "system_dark_mode": { - "message": "Gamitin ang iskema ng kulay ng system" - }, - "system_dark_mode_chromium_warning": { - "message": "Maaaring hindi gumana ang opsyong ito\ndahil sa isang problema sa iyong browser" - }, - "system_dark_mode_description": { - "message": "Buksan kapag nakabukas ang dark mode ng system" - }, - "text_stroke": { - "message": "Stroke ng teksto" - }, - "theme_generation_mode": { - "message": "Mode ng paggawa ng tema" - }, - "toggle_current_site": { - "message": "I-toggle ang kasalukuyang site" - }, - "toggle_extension": { - "message": "I-toggle ang ekstensyon" - }, - "try_experimental_theme_engines": { - "message": "Subukan ang mga **ekspermintal** na mga engine ng tema:\n**Filter+** pinapanatili ang saturation ng mga kulay, gumagamit ng GPU\n**Static na tema** gumagawa ng simple at mabilis na tema\n**Dynamikong tema** sinusuri ang mga kulay at larawan" - }, - "version": { - "message": "Bersyon" - }, - "we_celebrate_10_years": { - "message": "Ipinagdiriwang ng Dark Reader ang 10 taon.\nMangyaring suportahan ang aming trabaho." - }, - "website_toggle_shortcut": { - "message": "Website toggle keyboard shortcut" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/fr/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/fr/messages.json deleted file mode 100644 index 1580793..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/fr/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Ajouter un site à la liste" - }, - "all_settings": { - "message": "Tous les paramètres" - }, - "auto_day_at_location": { - "message": "Auto (jour sur place)" - }, - "auto_day_time": { - "message": "Auto (heure de jour)" - }, - "auto_night_at_location": { - "message": "Auto (nuit sur place)" - }, - "auto_night_time": { - "message": "Auto (nuit)" - }, - "auto_system_is_dark": { - "message": "Auto (le système est sombre)" - }, - "auto_system_is_light": { - "message": "Auto (le système est clair)" - }, - "automation": { - "message": "Automatisation" - }, - "brightness": { - "message": "Luminosité" - }, - "change_browser_theme": { - "message": "Modifier le thème du navigateur" - }, - "click_to_set_shortcut": { - "message": "Cliquez pour définir le raccourci" - }, - "configure_automation": { - "message": "Configurer l'automatisation" - }, - "configure_site_toggle": { - "message": "Configurer l'activation des sites" - }, - "contrast": { - "message": "Contraste" - }, - "custom_browser_theme_off": { - "message": "Défaut" - }, - "custom_browser_theme_on": { - "message": "Custom" - }, - "dark": { - "message": "Sombre" - }, - "dark_theme_detected": { - "message": "Thème sombre détecté" - }, - "detect_dark_theme": { - "message": "Détecter le thème sombre" - }, - "detect_website_dark_theme": { - "message": "Détecter le thème sombre du site" - }, - "donate": { - "message": "Dons" - }, - "enable_for_all_sites_by_default": { - "message": "Activé pour tous les sites par défaut" - }, - "enabled_by_default": { - "message": "Activé par défaut" - }, - "engine_dynamic": { - "message": "Dynamiq." - }, - "engine_filter": { - "message": "Filtre" - }, - "engine_filter_plus": { - "message": "Filtre+" - }, - "engine_static": { - "message": "Statiq." - }, - "extension_description": { - "message": "Thème sombre partout sur le net. Détendez vous et vos yeux, profitez d'un thème sombre sur internet jour et nuit." - }, - "extension_toggle_shortcut": { - "message": "Raccourci clavier d'activation/désactivation de l'extension" - }, - "filter": { - "message": "Filtrer" - }, - "grayscale": { - "message": "Niveaux de gris" - }, - "help": { - "message": "Aide" - }, - "invert_listed_only": { - "message": "Inverser uniquement" - }, - "latitude": { - "message": "Latitude" - }, - "light": { - "message": "Clair" - }, - "loading_please_wait": { - "message": "Chargement en cours, veuillez patienter" - }, - "local_files_forbidden": { - "message": "Accès interdit aux\nfichiers locaux" - }, - "longitude": { - "message": "Longitude" - }, - "mobile_link": { - "message": "Dark Reader pour mobile est disponible. En savoir plus" - }, - "mode": { - "message": "Mode" - }, - "more": { - "message": "Plus" - }, - "news": { - "message": "Actus" - }, - "not_invert_listed": { - "message": "Ne pas inverser" - }, - "off": { - "message": "Inactif" - }, - "on": { - "message": "Actif" - }, - "only_for": { - "message": "Uniquement" - }, - "only_for_description": { - "message": "Appliquer les paramètres sur ce site uniquement" - }, - "open_dev_tools": { - "message": "Outils de développement" - }, - "page_in_dark_list": { - "message": "Ce site est dans la\nliste noire de l'extension" - }, - "page_protected": { - "message": "Cette page est protégée\npar le navigateur" - }, - "pay_for_using": { - "message": "Payer pour utiliser Dark Reader" - }, - "privacy": { - "message": "Confidentialité" - }, - "read_more": { - "message": "Lire la suite" - }, - "select_font": { - "message": "Choisir une police" - }, - "sepia": { - "message": "Sépia" - }, - "set_active_hours": { - "message": "Définir les heures d’activité" - }, - "set_location": { - "message": "Activer après le coucher du soleil à cet emplacement" - }, - "setup_add_site_hotkey": { - "message": "Configurer un raccourci pour ajouter un site" - }, - "setup_hotkey_toggle_extension": { - "message": "Configurer le raccourci clavier\npour activer/désactiver l'extension" - }, - "setup_hotkey_toggle_site": { - "message": "Configurer le raccourci clavier\npour activer/désactiver sur ce site" - }, - "site_list": { - "message": "Liste des sites" - }, - "site_toggle": { - "message": "Activation des sites" - }, - "store_listing": { - "message": "Cette extension de navigateur implémente un thème sombre global en créant à la volée des thèmes sombres pour chaque site que vous visitez. Dark Reader augmente le contraste des couleurs vives pour les rendre plus agréables à la vue la nuit.\n\nVous pouvez également ajuster la luminosité, le contraste, le filtre sépia, le thème sombre, la police du texte ainsi que la liste des sites ignorés par l'extension.\n\nNous pouvons vous demander de soutenir le développement de l'application par un don. Vous pouvez voir des informations sur Dark Reader dans la fenêtre contextuelle des paramètres. Il existe des outils de développement pour les utilisateurs expérimentés.\n\nDark Reader n'intègre pas de publicités et ne partage vos données avec personne d'autre. Il est entièrement open-source. https://github.com/darkreader/darkreader\n\nIl est nécessaire de désactiver toute extension similaire à Dark Reader pour que celle-ci fonctionne correctement. Profitez-en et prenez soin de vos yeux!" - }, - "support_out_work": { - "message": "Soutenez notre travail" - }, - "system_dark_mode": { - "message": "Utiliser les couleurs du système" - }, - "system_dark_mode_chromium_warning": { - "message": "Cette option pourrait ne pas fonctionner\nà cause d'un bug dans votre navigateur" - }, - "system_dark_mode_description": { - "message": "Activer lorsque le mode sombre du système est actif" - }, - "text_stroke": { - "message": "Épaisseur du texte" - }, - "theme_generation_mode": { - "message": "Mode de génération de thème" - }, - "toggle_current_site": { - "message": "Activer/Désactiver sur ce site" - }, - "toggle_extension": { - "message": "Activer/Désactiver l'extension" - }, - "try_experimental_theme_engines": { - "message": "Essayez les moteurs de thème **expérimentaux**:\n**Filtre+** préserve la satur. des couleurs, utilise le GPU\n**Thème statique** génère un thème simple et rapide\n**Dynamique** analyse les couleurs et les images" - }, - "version": { - "message": "Version" - }, - "we_celebrate_10_years": { - "message": "Dark Reader fête ses 10 ans.\nVeuillez soutenir notre travail." - }, - "website_toggle_shortcut": { - "message": "Raccourci clavier pour activer/désactiver sur le site" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/he/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/he/messages.json deleted file mode 100644 index a2a7b81..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/he/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "הוסף אתר נוכחי לרשימה" - }, - "all_settings": { - "message": "כל ההגדרות" - }, - "auto_day_at_location": { - "message": "אוטומטי (יום במיקום)" - }, - "auto_day_time": { - "message": "אוטומטי (שעון יום)" - }, - "auto_night_at_location": { - "message": "אוטומטי (לילה במקום)" - }, - "auto_night_time": { - "message": "אוטומטי (שעון לילה)" - }, - "auto_system_is_dark": { - "message": "אוטומטי (המערכת חשוכה)" - }, - "auto_system_is_light": { - "message": "אוטומטי (המערכת קלה)" - }, - "automation": { - "message": "הפעלה אוטומטית:" - }, - "brightness": { - "message": "בהירות" - }, - "change_browser_theme": { - "message": "שנה את ערכת נושא הדפדפן" - }, - "click_to_set_shortcut": { - "message": "לחץ כדי להגדיר את קיצור הדרך" - }, - "configure_automation": { - "message": "הגדר אוטומציה" - }, - "configure_site_toggle": { - "message": "הגדר את החלפת האתר" - }, - "contrast": { - "message": "ניגודיות" - }, - "custom_browser_theme_off": { - "message": "ברירת מחדל" - }, - "custom_browser_theme_on": { - "message": "מותאם אישית" - }, - "dark": { - "message": "כהה" - }, - "dark_theme_detected": { - "message": "זוהה נושא כהה" - }, - "detect_dark_theme": { - "message": "זיהוי נושא כהה" - }, - "detect_website_dark_theme": { - "message": "גלה את הנושא האפל של האתר עצמו" - }, - "donate": { - "message": "תרומה" - }, - "enable_for_all_sites_by_default": { - "message": "מופעל עבור כל האתרים כברירת מחדל" - }, - "enabled_by_default": { - "message": "מופעל כברירת מחדל" - }, - "engine_dynamic": { - "message": "דינמי" - }, - "engine_filter": { - "message": "מסנן" - }, - "engine_filter_plus": { - "message": "מסנן+" - }, - "engine_static": { - "message": "סטטי" - }, - "extension_description": { - "message": "מצב אפל לכל אתר. תשמור על העיניים שלך, השתמש בעיצוב כהה לגלישה בלילה וגם ביום." - }, - "extension_toggle_shortcut": { - "message": "קיצור מקלדת להפעלה/כיבוי של הרחבה" - }, - "filter": { - "message": "מסנן" - }, - "grayscale": { - "message": "גווני אפור" - }, - "help": { - "message": "עזרה" - }, - "invert_listed_only": { - "message": "רק מה שברשימה" - }, - "latitude": { - "message": "קו רוחב" - }, - "light": { - "message": "בהיר" - }, - "loading_please_wait": { - "message": "טוען... נא המתן" - }, - "local_files_forbidden": { - "message": "אסור לגשת\nתיקים מקומיים" - }, - "longitude": { - "message": "קו אורך" - }, - "mobile_link": { - "message": "Mobile Dark Reader זמין. למד עוד" - }, - "mode": { - "message": "מצב" - }, - "more": { - "message": "עוד" - }, - "news": { - "message": "חדשות" - }, - "not_invert_listed": { - "message": "רק מה שלא ברשימה" - }, - "off": { - "message": "כבוי" - }, - "on": { - "message": "פעיל" - }, - "only_for": { - "message": "רק עבור" - }, - "only_for_description": { - "message": "החל הגדרות באתר הנוכחי בלבד" - }, - "open_dev_tools": { - "message": "Dev tools" - }, - "page_in_dark_list": { - "message": "אתר זה נמצא\nברשימת אתרים כהים" - }, - "page_protected": { - "message": "דף זה מוגן\nעל ידי הדפדפן" - }, - "pay_for_using": { - "message": "שלם עבור שימוש ב-Dark Reader" - }, - "privacy": { - "message": "פרטיות" - }, - "read_more": { - "message": "קרא עוד" - }, - "select_font": { - "message": "בחר גופן" - }, - "sepia": { - "message": "גווני חום-אדמדם" - }, - "set_active_hours": { - "message": "הגדר שעות פעילות" - }, - "set_location": { - "message": "הפעל לאחר השקיעה במיקום זה" - }, - "setup_add_site_hotkey": { - "message": "הגדר מקש קיצור להוספת אתר" - }, - "setup_hotkey_toggle_extension": { - "message": "הפעל/כבה את התוסף\nהגדר מקש קיצור" - }, - "setup_hotkey_toggle_site": { - "message": "הגדר מקש קיצור להוסיף/להסיר אתר נוכחי מהרשימה\nהגדר מקש קיצור" - }, - "site_list": { - "message": "רשימת אתרים" - }, - "site_toggle": { - "message": "החלפת אתר" - }, - "store_listing": { - "message": "תוסף טיפוח לעיניים זה מאפשר למצב לילה ליצור ערכות נושא כהות לאתרי אינטרנט גלישה. Dark Reader ממיר צבעים בהירים מה שהופך אותם לניגודיות גבוהה וקל לקריאה בלילה.\n\nניתן להתאים את הבהירות, הניגודיות, מסנן חום-אדמדם, מצב כהה, הגדרות גופן ורשימת אתרים להתעלמות.\n\nאנו עשויים לבקש ממך לתמוך בפיתוח האפליקציה בתרומה. ייתכן שתראה חדשות על Dark Reader בחלון הקופץ של ההגדרות. ישנם כלים למפתחים למשתמשים מנוסים.\n\nDark Reader אינו מציג מודעות ואינו שולח את נתוני המשתמש לשום מקום. זהו פרוייקט קוד פתוח לחלוטין https://github.com/darkreader/darkreader\n\nלצורך פעולה תקינה, בטל תוספים דומים." - }, - "support_out_work": { - "message": "תמכו בעבודה שלנו" - }, - "system_dark_mode": { - "message": "השתמש בערכת הצבעים של המערכת" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "הפעל כאשר מצב החשכה של המערכת פועל" - }, - "text_stroke": { - "message": "מריחת טקסט" - }, - "theme_generation_mode": { - "message": "מצב יצירת ערכת נושא" - }, - "toggle_current_site": { - "message": "הוסף/הסר את האתר נוכחי מהרשימה" - }, - "toggle_extension": { - "message": "הפעל/כבה את התוסף" - }, - "try_experimental_theme_engines": { - "message": "נסה מנועי ערכת נושא ניסיוניים:\nפילטר + שומר על רוויה בצבעים, משתמש ב- GPU\nנושא סטטי מייצר נושא מהיר פשוט\nנושא דינמי מנתח צבעים ותמונות" - }, - "version": { - "message": "גִרְסָה" - }, - "we_celebrate_10_years": { - "message": "Dark Reader חוגג 10 שנים.\nאנא תמכו בעבודתנו." - }, - "website_toggle_shortcut": { - "message": "החלפת מקשי קיצור באתר" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/hi/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/hi/messages.json deleted file mode 100644 index 0613588..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/hi/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "साइट को चलन सूची में दालें" - }, - "all_settings": { - "message": "सभी सेटिंग्स" - }, - "auto_day_at_location": { - "message": "ऑटो (स्थान पर दिन)" - }, - "auto_day_time": { - "message": "ऑटो (दिन का समय)" - }, - "auto_night_at_location": { - "message": "ऑटो (स्थान पर रात)" - }, - "auto_night_time": { - "message": "ऑटो (रात का समय)" - }, - "auto_system_is_dark": { - "message": "ऑटो (सिस्टम डार्क है)" - }, - "auto_system_is_light": { - "message": "ऑटो (सिस्टम हल्का है)" - }, - "automation": { - "message": "स्वचालन" - }, - "brightness": { - "message": "चमक" - }, - "change_browser_theme": { - "message": "ब्राउज़र थीम बदलें" - }, - "click_to_set_shortcut": { - "message": "शॉर्टकट सेट करने के लिए क्लिक करें" - }, - "configure_automation": { - "message": "स्वचालन कॉन्फ़िगर करें" - }, - "configure_site_toggle": { - "message": "वेबसाइट टॉगलिंग कॉन्फ़िगर करें" - }, - "contrast": { - "message": "कॉन्ट्रास्ट" - }, - "custom_browser_theme_off": { - "message": "डिफ़ॉल्ट द्वारा" - }, - "custom_browser_theme_on": { - "message": "बदला हुआ" - }, - "dark": { - "message": "अंधेरा" - }, - "dark_theme_detected": { - "message": "गहरे रंग वाली थीम का पता चला" - }, - "detect_dark_theme": { - "message": "डार्क थीम का पता लगाएं" - }, - "detect_website_dark_theme": { - "message": "वेबसाइट की अपनी डार्क थीम का पता लगाएं" - }, - "donate": { - "message": "दान" - }, - "enable_for_all_sites_by_default": { - "message": "डिफ़ॉल्ट रूप से सभी वेबसाइटों के लिए सक्षम" - }, - "enabled_by_default": { - "message": "डिफ़ॉल्ट रूप से सक्षम" - }, - "engine_dynamic": { - "message": "गतिशील" - }, - "engine_filter": { - "message": "फ़िल्टर" - }, - "engine_filter_plus": { - "message": "फ़िल्टर+" - }, - "engine_static": { - "message": "स्थिर" - }, - "extension_description": { - "message": "हर वेबसाइट के लिए डार्क थीम। अपनी आंखों की देखभाल करें, रात और हर रोज़ की ब्राउज़िंग के लिए डार्क रीडर का उपयोग करें।" - }, - "extension_toggle_shortcut": { - "message": "एक्सटेंशन ऑन/ऑफ कीबोर्ड शॉर्टकट" - }, - "filter": { - "message": "फ़िल्टर" - }, - "grayscale": { - "message": "ग्रेस्केल" - }, - "help": { - "message": "सहायता" - }, - "invert_listed_only": { - "message": "केवल चलन साइट की सूची" - }, - "latitude": { - "message": "अक्षांश" - }, - "light": { - "message": "रोशनी" - }, - "loading_please_wait": { - "message": "लोड हो रहा है, कृपया प्रतीक्षा करें" - }, - "local_files_forbidden": { - "message": "प्रवेश करने की अनुमति नहीं है\nस्थानीय फ़ाइलें" - }, - "longitude": { - "message": "देशान्तर" - }, - "mobile_link": { - "message": "मोबाइल डार्क रीडर उपलब्ध है. और अधिक जानें" - }, - "mode": { - "message": "स्थिति" - }, - "more": { - "message": "अधिक" - }, - "news": { - "message": "समाचार" - }, - "not_invert_listed": { - "message": "न चलन साइट की सूची" - }, - "off": { - "message": "बंद" - }, - "on": { - "message": "चालू" - }, - "only_for": { - "message": "केवल" - }, - "only_for_description": { - "message": "केवल मौजूदा वेबसाइट पर सेटिंग्स लागू हो" - }, - "open_dev_tools": { - "message": "डेवलपर टूल" - }, - "page_in_dark_list": { - "message": "यह साइट वैश्विक\nडार्क सूची में है" - }, - "page_protected": { - "message": "यह पृष्ठ ब्राउज़र\nके द्वारा संरक्षित है" - }, - "pay_for_using": { - "message": "डार्क रीडर का उपयोग करने के लिए भुगतान करें" - }, - "privacy": { - "message": "गोपनीयता" - }, - "read_more": { - "message": "और पढ़े" - }, - "select_font": { - "message": "फ़ॉन्ट का चयन करें" - }, - "sepia": { - "message": "सेपिया फ़िल्टर" - }, - "set_active_hours": { - "message": "उपयोग की अवधि को निश्चित करें" - }, - "set_location": { - "message": "सूर्यास्त के बाद उपयोग करने का स्थान निश्चित करें" - }, - "setup_add_site_hotkey": { - "message": "साइट को डालने के लिए हॉटकी सेटअप करें" - }, - "setup_hotkey_toggle_extension": { - "message": "एक्सटेंशन का उपयोग करने की हॉटकी\nसेटअप करें" - }, - "setup_hotkey_toggle_site": { - "message": "मौजूदा साइट के लिए उपयोग करने की हॉटकी\nसेटअप करें" - }, - "site_list": { - "message": "साइट की सूची" - }, - "site_toggle": { - "message": "साइट टॉगलिंग" - }, - "store_listing": { - "message": "यह आंख-सहायक ब्राउज़र-एक्सटेंशन रात्रि स्थिति को अधिकृत करके वेबसाइटों के लिए अंधेरे थीम को बनाने में सक्षम बनाता है। डार्क रीडर चमकदार रंगों को उच्च विपरीत बना देता है इसलिए रात में पढ़ने में आसान होता है।\n\nआप चमक, कंट्रास्ट, सेपिया फ़िल्टर, डार्क मोड, फ़ॉन्ट सेटिंग्स और न चलन-सूची समायोजित कर सकते हैं।\n\nहम आपसे दान के साथ ऐप के विकास का समर्थन करने के लिए कह सकते हैं। आप सेटिंग पॉपअप में डार्क रीडर के बारे में समाचार देख सकते हैं। अनुभवी उपयोगकर्ताओं के लिए डेवलपर टूल हैं।\n\nडार्क रीडर विज्ञापन नहीं दिखाता है और कहीं भी उपयोगकर्ता का डेटा नहीं भेजता है। यह पूरी तरह से मुक्त-स्रोत है https://github.com/darkreader/darkreader\n\nडार्क रीडर का उपयोग करने से पहले इसी तरह की एक्सटेंशन अक्षम करें। देखने का मज़ा लें!" - }, - "support_out_work": { - "message": "हमारे काम का समर्थन करें" - }, - "system_dark_mode": { - "message": "प्रणाली रंग योजना का उपयोग करें" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "उपयोग करें जब प्रणाली अंधेरे कि स्थिति में है" - }, - "text_stroke": { - "message": "पाठ स्ट्रोक" - }, - "theme_generation_mode": { - "message": "थीम निर्माण स्थिति" - }, - "toggle_current_site": { - "message": "वर्तमान साइट के लिए उपयोग" - }, - "toggle_extension": { - "message": "एक्सटेंशन का उपयोग" - }, - "try_experimental_theme_engines": { - "message": "**प्रयोगात्मक** थीम इंजन आज़माएं:\n**फ़िल्टर+** रंग संतृप्ति को संरक्षित करता है, जीपीयू का उपयोग करता है\n**स्थिर थीम** एक साधारण तेज़ थीम उत्पन्न करता है\n**गतिशील थीम** रंग और छवियों का विश्लेषण करता है" - }, - "version": { - "message": "संस्करण" - }, - "we_celebrate_10_years": { - "message": "डार्क रीडर ने 10 वर्ष पूरे होने का जश्न मनाया।\nकृपया हमारे काम का समर्थन करें।" - }, - "website_toggle_shortcut": { - "message": "वेबसाइट टॉगल कीबोर्ड शॉर्टकट" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/id/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/id/messages.json deleted file mode 100644 index 035f76e..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/id/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Tambahkan situs ke daftar" - }, - "all_settings": { - "message": "Semua pengaturan" - }, - "auto_day_at_location": { - "message": "Otomatis (hari di lokasi)" - }, - "auto_day_time": { - "message": "Otomatis (siang hari)" - }, - "auto_night_at_location": { - "message": "Otomatis (malam di lokasi)" - }, - "auto_night_time": { - "message": "Otomatis (waktu malam)" - }, - "auto_system_is_dark": { - "message": "Otomatis (sistem gelap)" - }, - "auto_system_is_light": { - "message": "Otomatis (sistem ringan)" - }, - "automation": { - "message": "Otomatisasi" - }, - "brightness": { - "message": "Kecerahan" - }, - "change_browser_theme": { - "message": "Ubah tema peramban" - }, - "click_to_set_shortcut": { - "message": "Klik untuk mengatur pintasan" - }, - "configure_automation": { - "message": "Konfigurasi otomatisasi" - }, - "configure_site_toggle": { - "message": "Konfigurasikan pengalihan situs web" - }, - "contrast": { - "message": "Kontras" - }, - "custom_browser_theme_off": { - "message": "Bawaan" - }, - "custom_browser_theme_on": { - "message": "Khusus" - }, - "dark": { - "message": "Malam" - }, - "dark_theme_detected": { - "message": "Tema gelap terdeteksi" - }, - "detect_dark_theme": { - "message": "Deteksi tema gelap" - }, - "detect_website_dark_theme": { - "message": "Mendeteksi tema gelap situs web itu sendiri" - }, - "donate": { - "message": "Donasi" - }, - "enable_for_all_sites_by_default": { - "message": "Diaktifkan untuk semua situs web secara default" - }, - "enabled_by_default": { - "message": "Diaktifkan secara Default" - }, - "engine_dynamic": { - "message": "Dinamis" - }, - "engine_filter": { - "message": "Filter" - }, - "engine_filter_plus": { - "message": "Filter+" - }, - "engine_static": { - "message": "Statis" - }, - "extension_description": { - "message": "Mode malam untuk semua situs web. Menjaga mata anda, menggunakan tema gelap untuk berselancar siang dan malam hari." - }, - "extension_toggle_shortcut": { - "message": "Pintasan keyboard aktif/nonaktif ekstensi" - }, - "filter": { - "message": "Filter" - }, - "grayscale": { - "message": "Abu-abu" - }, - "help": { - "message": "Bantuan" - }, - "invert_listed_only": { - "message": "Diterapkan" - }, - "latitude": { - "message": "Garis lintang" - }, - "light": { - "message": "Siang" - }, - "loading_please_wait": { - "message": "Sedang memuat, harap menunggu" - }, - "local_files_forbidden": { - "message": "Tidak diizinkan untuk mengakses\nfile lokal" - }, - "longitude": { - "message": "Garis bujur" - }, - "mobile_link": { - "message": "Pembaca Gelap Seluler tersedia. Belajarlah lagi" - }, - "mode": { - "message": "Mode" - }, - "more": { - "message": "Lainnya" - }, - "news": { - "message": "Berita" - }, - "not_invert_listed": { - "message": "Dikecualikan" - }, - "off": { - "message": "Off" - }, - "on": { - "message": "On" - }, - "only_for": { - "message": "Hanya untuk" - }, - "only_for_description": { - "message": "Terapkan hanya untuk situs yang terbuka" - }, - "open_dev_tools": { - "message": "Pengembang" - }, - "page_in_dark_list": { - "message": "Situs ini berada dalam daftar\nMode Malam" - }, - "page_protected": { - "message": "Halaman ini dilindungi\noleh peramban" - }, - "pay_for_using": { - "message": "Bayar untuk menggunakan Pembaca Gelap" - }, - "privacy": { - "message": "Privasi" - }, - "read_more": { - "message": "Baca lainnya" - }, - "select_font": { - "message": "Pilih fon" - }, - "sepia": { - "message": "Sepia" - }, - "set_active_hours": { - "message": "Ubah waktu aktif" - }, - "set_location": { - "message": "Aktifkan setelah matahari terbenam di lokasi" - }, - "setup_add_site_hotkey": { - "message": "Atur pintasan untuk menambahkan situs" - }, - "setup_hotkey_toggle_extension": { - "message": "Setelan ekstensi\nsaklar pintasan" - }, - "setup_hotkey_toggle_site": { - "message": "Setelan situs yang terbuka\nsaklar pintasan" - }, - "site_list": { - "message": "Daftar situs" - }, - "site_toggle": { - "message": "Beralih Situs" - }, - "store_listing": { - "message": "Ekstensi ini mengaktifkan mode malam dengan membuat halaman situs web menjadi gelap. Dark Reader bekerja dengan membalik warna cerah dengan warna kontras sehingga nyaman di mata.\n\nAnda bisa mengatur kecerahan, kontras, filter sepia, mode malam, setelan fon dan pengecualian situs web.\n\nKami mungkin meminta Anda untuk mendukung pengembangan aplikasi dengan donasi. Anda mungkin melihat berita tentang Pembaca Gelap di sembulan pengaturan. Ada Alat Pengembang untuk pengguna berpengalaman.\n\nDark Reader tidak menampilkan iklan dan tidak mengirimkan data penggunan ke manapun. Sepenuhnya bersumber terbuka: https://github.com/darkreader/darkreader\n\nSebelum memasang, silakan nonaktifkan ekstensi serupa. Selamat berselancar!" - }, - "support_out_work": { - "message": "Dukung pekerjaan kami" - }, - "system_dark_mode": { - "message": "Gunakan skema warna sistem" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "Aktif ketika mode gelap sistem diaktifkan" - }, - "text_stroke": { - "message": "Tebal teks" - }, - "theme_generation_mode": { - "message": "Mode penghasil tema" - }, - "toggle_current_site": { - "message": "Saklar situs yang terbuka" - }, - "toggle_extension": { - "message": "Saklar ekstensi" - }, - "try_experimental_theme_engines": { - "message": "Uji coba penghasil tema **eksperimental**:\n**Filter+** menjaga saturasi warna, mengggunakan GPU\n**Tema statis** menghasilkan tema cepat sederhana\n**Tema dinamis** menganalisa warna dan gambar" - }, - "version": { - "message": "Versi: kapan" - }, - "we_celebrate_10_years": { - "message": "Pembaca Gelap merayakan 10 tahun.\nTolong dukung pekerjaan kami." - }, - "website_toggle_shortcut": { - "message": "Pintasan keyboard beralih situs web" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/it/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/it/messages.json deleted file mode 100644 index 0d7500f..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/it/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Aggiungi sito all'elenco" - }, - "all_settings": { - "message": "Tutte le impostazioni" - }, - "auto_day_at_location": { - "message": "Automatico (giorno nella posizione)" - }, - "auto_day_time": { - "message": "Automatico (diurno)" - }, - "auto_night_at_location": { - "message": "Automatico (notte nella posizione)" - }, - "auto_night_time": { - "message": "Automatico (notturno)" - }, - "auto_system_is_dark": { - "message": "Automatico (il sistema è scuro)" - }, - "auto_system_is_light": { - "message": "Automatico (il sistema è chiaro)" - }, - "automation": { - "message": "Automazione" - }, - "brightness": { - "message": "Luminosità" - }, - "change_browser_theme": { - "message": "Cambia il tema del browser" - }, - "click_to_set_shortcut": { - "message": "Clicca per impostare la combinazione" - }, - "configure_automation": { - "message": "Configura automazione" - }, - "configure_site_toggle": { - "message": "Configura commutazioni dei siti" - }, - "contrast": { - "message": "Contrasto" - }, - "custom_browser_theme_off": { - "message": "Predefinito" - }, - "custom_browser_theme_on": { - "message": "Personalizzato" - }, - "dark": { - "message": "Scuro" - }, - "dark_theme_detected": { - "message": "Tema scuro rilevato" - }, - "detect_dark_theme": { - "message": "Rileva tema scuro" - }, - "detect_website_dark_theme": { - "message": "Rileva il tema scuro del sito" - }, - "donate": { - "message": "Dona" - }, - "enable_for_all_sites_by_default": { - "message": "Attivo per tutti i siti per impostazione predefinita" - }, - "enabled_by_default": { - "message": "Attivo per impostazione predefinita" - }, - "engine_dynamic": { - "message": "Dinamico" - }, - "engine_filter": { - "message": "Filtro" - }, - "engine_filter_plus": { - "message": "Filtro+" - }, - "engine_static": { - "message": "Statico" - }, - "extension_description": { - "message": "Tema scuro per tutti i siti. Prenditi cura dei tuoi occhi, usa il tema scuro per navigare giorno e notte." - }, - "extension_toggle_shortcut": { - "message": "Combinazione per attivare/disattivare l'estensione" - }, - "filter": { - "message": "Filtra" - }, - "grayscale": { - "message": "Scala di grigi" - }, - "help": { - "message": "Aiuto" - }, - "invert_listed_only": { - "message": "Inverti solo i siti elencati" - }, - "latitude": { - "message": "Latitudine" - }, - "light": { - "message": "Chiaro" - }, - "loading_please_wait": { - "message": "Sto caricando, attendere prego" - }, - "local_files_forbidden": { - "message": "Accesso a file locali\nnon consentito" - }, - "longitude": { - "message": "Longitudine" - }, - "mobile_link": { - "message": "Dark Reader Mobile è disponibile. Scopri di più" - }, - "mode": { - "message": "Modalità" - }, - "more": { - "message": "Altro" - }, - "news": { - "message": "Notizie" - }, - "not_invert_listed": { - "message": "Inverti tutti i siti tranne" - }, - "off": { - "message": "Inattivo" - }, - "on": { - "message": "Attivo" - }, - "only_for": { - "message": "Solo per" - }, - "only_for_description": { - "message": "Applica le impostazioni solo al sito attuale" - }, - "open_dev_tools": { - "message": "Strumenti di sviluppo" - }, - "page_in_dark_list": { - "message": "Questo sito è nella lista\nglobale dei temi scuri" - }, - "page_protected": { - "message": "Questa pagina è protetta\ndal browser" - }, - "pay_for_using": { - "message": "Paga per utilizzare Dark Reader" - }, - "privacy": { - "message": "Privacy" - }, - "read_more": { - "message": "Scopri di più" - }, - "select_font": { - "message": "Seleziona un font" - }, - "sepia": { - "message": "Seppia" - }, - "set_active_hours": { - "message": "Imposta orari di attività" - }, - "set_location": { - "message": "Attiva dopo il tramonto nella posizione" - }, - "setup_add_site_hotkey": { - "message": "Configura combinazione per aggiungere il sito" - }, - "setup_hotkey_toggle_extension": { - "message": "Configura combinazione per\nattivare/disattivare l'estensione" - }, - "setup_hotkey_toggle_site": { - "message": "Configura combinazione per\ncommutare il sito attuale" - }, - "site_list": { - "message": "Elenco dei siti" - }, - "site_toggle": { - "message": "Commutazioni dei siti" - }, - "store_listing": { - "message": "Questa estensione si prende cura dei tuoi occhi attivando il tema notturno e generando al volo temi scuri per tutti i siti. Dark Reader inverte i colori più luminosi, rendendoli ad alto contrasto e facili da leggere di notte.\n\nPuoi regolare luminosità, contrasto, filtro seppia, tema scuro, font e la lista dei siti da ignorare.\n\nPotremmo chiederti di supportare lo sviluppo dell'app con una donazione. Potresti vedere notizie riguardo a Dark Reader nel popup delle impostazioni. Sono disponibili Strumenti di Sviluppo per utenti esperti.\n\nDark Reader non mostra pubblicità e non invia i dati degli utenti a nessuno. È completamente open source: https://github.com/darkreader/darkreader\n\nPrima di installarlo, disattiva altre estensioni simili. Buona lettura!" - }, - "support_out_work": { - "message": "Sostieni il nostro lavoro" - }, - "system_dark_mode": { - "message": "Segui tema di sistema" - }, - "system_dark_mode_chromium_warning": { - "message": "Quest'opzione potrebbe non funzionare\na causa di un bug nel tuo browser" - }, - "system_dark_mode_description": { - "message": "Attiva quando il tema di sistema è scuro" - }, - "text_stroke": { - "message": "Tratto del testo" - }, - "theme_generation_mode": { - "message": "Modalità di generazione del tema" - }, - "toggle_current_site": { - "message": "Commuta il sito attuale" - }, - "toggle_extension": { - "message": "Attiva/Disattiva estensione" - }, - "try_experimental_theme_engines": { - "message": "Prova i motori **sperimentali** per i temi:\n**Filtro+** preserva la saturazione dei colori, usa la GPU\n**Tema statico** genera un tema semplice velocemente\n**Tema dinamico** analizza colori e immagini" - }, - "version": { - "message": "Versione" - }, - "we_celebrate_10_years": { - "message": "Dark Reader festeggia 10 anni.\nPer favore sostieni il nostro lavoro." - }, - "website_toggle_shortcut": { - "message": "Combinazione per commutare il sito" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/ja/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/ja/messages.json deleted file mode 100644 index e5c64f8..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/ja/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "サイトをリストに追加" - }, - "all_settings": { - "message": "すべての設定" - }, - "auto_day_at_location": { - "message": "自動 (指定場所は昼)" - }, - "auto_day_time": { - "message": "自動 (昼)" - }, - "auto_night_at_location": { - "message": "自動 (指定場所は夜)" - }, - "auto_night_time": { - "message": "自動 (夜)" - }, - "auto_system_is_dark": { - "message": "自動 (システムはダーク)" - }, - "auto_system_is_light": { - "message": "自動 (システムはライト)" - }, - "automation": { - "message": "自動化" - }, - "brightness": { - "message": "輝度" - }, - "change_browser_theme": { - "message": "ブラウザのテーマを変更" - }, - "click_to_set_shortcut": { - "message": "クリックでショートカットを設定" - }, - "configure_automation": { - "message": "自動化の設定" - }, - "configure_site_toggle": { - "message": "サイト上の切替を設定" - }, - "contrast": { - "message": "コントラスト" - }, - "custom_browser_theme_off": { - "message": "デフォルト" - }, - "custom_browser_theme_on": { - "message": "カスタム" - }, - "dark": { - "message": "ダーク" - }, - "dark_theme_detected": { - "message": "ダークテーマを検出" - }, - "detect_dark_theme": { - "message": "ダークテーマの検出" - }, - "detect_website_dark_theme": { - "message": "そのサイト自身のダークテーマを検出" - }, - "donate": { - "message": "寄付する" - }, - "enable_for_all_sites_by_default": { - "message": "すべてのサイトで最初は有効にします" - }, - "enabled_by_default": { - "message": "初期値は有効" - }, - "engine_dynamic": { - "message": "動的" - }, - "engine_filter": { - "message": "フィルタ" - }, - "engine_filter_plus": { - "message": "フィルタ+" - }, - "engine_static": { - "message": "静的" - }, - "extension_description": { - "message": "すべてのウェブサイトにダークテーマを適用します。夜間や毎日のブラウジングにDark Readerを使用し、あなたの目を気遣います。" - }, - "extension_toggle_shortcut": { - "message": "拡張機能のオン/オフのキーボード ショートカット" - }, - "filter": { - "message": "フィルタ" - }, - "grayscale": { - "message": "グレースケール" - }, - "help": { - "message": "ヘルプ" - }, - "invert_listed_only": { - "message": "反転リスト" - }, - "latitude": { - "message": "緯度" - }, - "light": { - "message": "ライト" - }, - "loading_please_wait": { - "message": "読み込み中…お待ちください" - }, - "local_files_forbidden": { - "message": "端末内のファイルへのアクセスは\n許可されていません" - }, - "longitude": { - "message": "経度" - }, - "mobile_link": { - "message": "モバイル端末でもDark Readerが使えます。詳細" - }, - "mode": { - "message": "モード" - }, - "more": { - "message": "その他" - }, - "news": { - "message": "ニュース" - }, - "not_invert_listed": { - "message": "非反転リスト" - }, - "off": { - "message": "オフ" - }, - "on": { - "message": "オン" - }, - "only_for": { - "message": "このサイトのみ適用" - }, - "only_for_description": { - "message": "現在のサイトのみに設定を適用" - }, - "open_dev_tools": { - "message": "開発ツール" - }, - "page_in_dark_list": { - "message": "このサイトは全員適用の\nダークリストに含まれます" - }, - "page_protected": { - "message": "このページはブラウザに\nよって保護されています" - }, - "pay_for_using": { - "message": "Dark Reader の使用料を支払う" - }, - "privacy": { - "message": "個人情報" - }, - "read_more": { - "message": "続きを読む" - }, - "select_font": { - "message": "フォントを選択" - }, - "sepia": { - "message": "セピア" - }, - "set_active_hours": { - "message": "アクティブ時間を設定" - }, - "set_location": { - "message": "現地での日没で切替" - }, - "setup_add_site_hotkey": { - "message": "サイト追加用のホットキーを設定" - }, - "setup_hotkey_toggle_extension": { - "message": "拡張機能の切替用の\nホットキーを設定" - }, - "setup_hotkey_toggle_site": { - "message": "現在のサイト切替用の\nホットキーを設定" - }, - "site_list": { - "message": "サイトリスト" - }, - "site_toggle": { - "message": "サイト上の切り替え" - }, - "store_listing": { - "message": "このアイ・ケアの拡張機能は、オンザフライでサイト用のダークテーマを作成しナイトモードを有効にします。 Dark Reader は明るい色を反転させてコントラストを高め、夜間でも読みやすくします。\n\n明るさ、コントラスト、セピアのフィルター、ダークモード、フォント設定、無視リストを調整することができます。\n\nアプリの開発を寄付によって支援してほしいとお願いする場合があります。設定のポップアップにて DarkReader に関するニュースが表示される場合があります。経験豊富なユーザー向けの開発ツールも備えます。\n\nDark Reader は広告を表示せず、ユーザーのデータをどこにも送信しません。また完全にオープンソースです https://github.com/darkreader/darkreader\n\nインストールする前に、同様の拡張機能を無効にしてください。サイト閲覧をお楽しみください!" - }, - "support_out_work": { - "message": "私たちの開発を支援" - }, - "system_dark_mode": { - "message": "システムの色のモードに従う" - }, - "system_dark_mode_chromium_warning": { - "message": "このオプションはこのブラウザのバグの\nため動作しない可能性があります" - }, - "system_dark_mode_description": { - "message": "システムがダークモードなら有効に" - }, - "text_stroke": { - "message": "文字の縁取り" - }, - "theme_generation_mode": { - "message": "テーマ生成法の切替" - }, - "toggle_current_site": { - "message": "現在のサイトの切替" - }, - "toggle_extension": { - "message": "拡張機能の切替" - }, - "try_experimental_theme_engines": { - "message": "**実験的な**テーマエンジンをお試しください:\n**フィルタ+**: 色の彩度を維持 (GPU 使用)\n**静的テーマ**: 簡単なテーマを高速で生成\n**動的テーマ**: 色と画像を分析" - }, - "version": { - "message": "バージョン" - }, - "we_celebrate_10_years": { - "message": "Dark Reader は 10 周年を迎えます。\n私たちの活動をサポートしてください。" - }, - "website_toggle_shortcut": { - "message": "サイト上で切り替えるキーボード ショートカット" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/ko/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/ko/messages.json deleted file mode 100644 index 7e3c0ed..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/ko/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "목록에 웹사이트 추가" - }, - "all_settings": { - "message": "모든 설정" - }, - "auto_day_at_location": { - "message": "자동(위치에서 요일)" - }, - "auto_day_time": { - "message": "자동(주간)" - }, - "auto_night_at_location": { - "message": "자동(위치에서 야간)" - }, - "auto_night_time": { - "message": "자동(야간)" - }, - "auto_system_is_dark": { - "message": "자동(시스템이 어두움)" - }, - "auto_system_is_light": { - "message": "자동(시스템이 밝음)" - }, - "automation": { - "message": "오토메이션" - }, - "brightness": { - "message": "밝기" - }, - "change_browser_theme": { - "message": "브라우저 테마 변경" - }, - "click_to_set_shortcut": { - "message": "바로 가기를 설정하려면 클릭하십시오." - }, - "configure_automation": { - "message": "자동화 구성" - }, - "configure_site_toggle": { - "message": "웹사이트 전환 구성" - }, - "contrast": { - "message": "대비" - }, - "custom_browser_theme_off": { - "message": "기본값" - }, - "custom_browser_theme_on": { - "message": "맞춤 테마" - }, - "dark": { - "message": "어두운 테마" - }, - "dark_theme_detected": { - "message": "어두운 테마 감지됨" - }, - "detect_dark_theme": { - "message": "어두운 테마 감지" - }, - "detect_website_dark_theme": { - "message": "웹사이트 자체의 어두운 테마 감지" - }, - "donate": { - "message": "기부" - }, - "enable_for_all_sites_by_default": { - "message": "기본적으로 모든 웹사이트에 대해 활성화됨" - }, - "enabled_by_default": { - "message": "기본적으로 활성화됨" - }, - "engine_dynamic": { - "message": "동적" - }, - "engine_filter": { - "message": "필터" - }, - "engine_filter_plus": { - "message": "필터+" - }, - "engine_static": { - "message": "정적" - }, - "extension_description": { - "message": "모든 웹사이트에 다크 모드를 적용합니다. 밤이나 일상적인 웹 브라우징을 할 때 어두운 테마를 사용하여 눈을 보호하십시오." - }, - "extension_toggle_shortcut": { - "message": "확장 기능 켜기/끄기 단축키" - }, - "filter": { - "message": "필터" - }, - "grayscale": { - "message": "흑백 필터" - }, - "help": { - "message": "도움말" - }, - "invert_listed_only": { - "message": "포함 사이트 목록" - }, - "latitude": { - "message": "위도" - }, - "light": { - "message": "밝은 테마" - }, - "loading_please_wait": { - "message": "로딩 중... 잠시만 기다려 주십시오." - }, - "local_files_forbidden": { - "message": "액세스가 허용되지 않음\n로컬 파일" - }, - "longitude": { - "message": "경도" - }, - "mobile_link": { - "message": "모바일 다크 리더를 사용할 수 있습니다. 더 알아보기" - }, - "mode": { - "message": "모드" - }, - "more": { - "message": "기타" - }, - "news": { - "message": "뉴스" - }, - "not_invert_listed": { - "message": "제외 사이트 목록" - }, - "off": { - "message": "끔" - }, - "on": { - "message": "켬" - }, - "only_for": { - "message": "해당 웹사이트에만 적용" - }, - "only_for_description": { - "message": "현재 웹사이트에만 설정을 적용함" - }, - "open_dev_tools": { - "message": "개발자 도구" - }, - "page_in_dark_list": { - "message": "이 사이트는 이미\n전체 목록에 있습니다" - }, - "page_protected": { - "message": "이 페이지는\n브라우저에 의해 보호되어 있습니다." - }, - "pay_for_using": { - "message": "Dark Reader 사용 비용 지불" - }, - "privacy": { - "message": "개인 정보" - }, - "read_more": { - "message": "더 읽기" - }, - "select_font": { - "message": "글꼴 선택" - }, - "sepia": { - "message": "세피아 필터" - }, - "set_active_hours": { - "message": "사용 시간 설정" - }, - "set_location": { - "message": "위치에서 일몰 후 활성화" - }, - "setup_add_site_hotkey": { - "message": "웹사이트를 추가하는 단축키 설정" - }, - "setup_hotkey_toggle_extension": { - "message": "확장 기능 설정하기\n바로 가기 전환" - }, - "setup_hotkey_toggle_site": { - "message": "현재 웹 사이트 설정\n단축키 전환" - }, - "site_list": { - "message": "사이트 목록" - }, - "site_toggle": { - "message": "사이트 전환" - }, - "store_listing": { - "message": "이 눈 건강을 위한 확장 기능은 실시간으로 각 웹사이트에 어두운 테마를 적용해 야간 모드를 가능케 합니다. 다크 리더는 밝은 색상을 반전해 고대비로 만들어 밤에 읽기가 쉽도록 만듭니다.\n\n밝기, 대비, 세피아 필터, 어두운 모드, 폰트와 예외 목록을 설정할 수 있습니다.\n\n기부로 앱 개발 지원을 요청할 수 있습니다. 설정 팝업에서 Dark Reader에 대한 뉴스를 볼 수 있습니다. 숙련된 사용자를 위한 개발자 도구가 있습니다.\n\n다크 리더는 광고를 보여주지 않으며 사용자의 데이터를 어디에도 보내지 않습니다. 완전히 오픈 소스입니다. https://github.com/darkreader/darkreader\n\n설치하기 전에 비슷한 기능을 가진 확장 기능을 사용 해제하시기 바랍니다. 편하게 읽으십시오!" - }, - "support_out_work": { - "message": "우리의 작업을 지원" - }, - "system_dark_mode": { - "message": "사용 시스템 색 구성표" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "시스템 어두운 모드가 켜져있을 때 활성화" - }, - "text_stroke": { - "message": "텍스트 획 굵기" - }, - "theme_generation_mode": { - "message": "테마 생성 모드" - }, - "toggle_current_site": { - "message": "현재 웹 사이트에 적용" - }, - "toggle_extension": { - "message": "확장 기능 적용" - }, - "try_experimental_theme_engines": { - "message": "**실험용** 테마 엔진들\n**필터+** 는 GPU를 사용하여 채도를 유지합니다\n**정적 테마** 는 간단하고 빠른 테마를 생성합니다\n**동적 테마** 는 색상 및 이미지를 분석합니다" - }, - "version": { - "message": "버전" - }, - "we_celebrate_10_years": { - "message": "다크 리더가 10주년을 맞이했습니다.\n우리의 일을 지지해주세요." - }, - "website_toggle_shortcut": { - "message": "웹사이트 토글 키보드 단축키" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/ms/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/ms/messages.json deleted file mode 100644 index 55d1faa..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/ms/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Tambahkan laman ke senarai" - }, - "all_settings": { - "message": "Semua tetapan" - }, - "auto_day_at_location": { - "message": "Auto (hari di lokasi)" - }, - "auto_day_time": { - "message": "Auto (waktu siang)" - }, - "auto_night_at_location": { - "message": "Auto (malam di lokasi)" - }, - "auto_night_time": { - "message": "Auto (waktu malam)" - }, - "auto_system_is_dark": { - "message": "Auto (sistem gelap)" - }, - "auto_system_is_light": { - "message": "Auto (sistem ringan)" - }, - "automation": { - "message": "Otomatisasi" - }, - "brightness": { - "message": "Kecerahan" - }, - "change_browser_theme": { - "message": "Tukar tema pelayar" - }, - "click_to_set_shortcut": { - "message": "Klik untuk menetapkan pintasan" - }, - "configure_automation": { - "message": "Konfigurasikan automasi" - }, - "configure_site_toggle": { - "message": "Konfigurasikan togol tapak web" - }, - "contrast": { - "message": "Kontras" - }, - "custom_browser_theme_off": { - "message": "Lalai" - }, - "custom_browser_theme_on": { - "message": "Adat" - }, - "dark": { - "message": "Gelap" - }, - "dark_theme_detected": { - "message": "Tema gelap dikesan" - }, - "detect_dark_theme": { - "message": "Kesan tema gelap" - }, - "detect_website_dark_theme": { - "message": "Kesan tema gelap tapak web itu sendiri" - }, - "donate": { - "message": "Derma" - }, - "enable_for_all_sites_by_default": { - "message": "Didayakan untuk semua tapak web secara lalai" - }, - "enabled_by_default": { - "message": "Didayakan secara Lalai" - }, - "engine_dynamic": { - "message": "Dinamis" - }, - "engine_filter": { - "message": "Penapis" - }, - "engine_filter_plus": { - "message": "Penapis+" - }, - "engine_static": { - "message": "Statis" - }, - "extension_description": { - "message": "Mod gelap untuk setiap laman web. Jaga mata anda, gunakan tema gelap untuk melayari laman web, malam dan siang." - }, - "extension_toggle_shortcut": { - "message": "Sambungan hidup/mati pintasan papan kekunci" - }, - "filter": { - "message": "Penapis" - }, - "grayscale": { - "message": "Skala kelabu" - }, - "help": { - "message": "Bantuan" - }, - "invert_listed_only": { - "message": "Senarai songsang sahaja" - }, - "latitude": { - "message": "Lintang" - }, - "light": { - "message": "Terang" - }, - "loading_please_wait": { - "message": "Sedang dimuatkan, sila tunggu" - }, - "local_files_forbidden": { - "message": "Tidak dibenarkan mengakses\nfail tempatan" - }, - "longitude": { - "message": "Tegak" - }, - "mobile_link": { - "message": "Pembaca Gelap Mudah Alih tersedia. Ketahui lebih lanjut" - }, - "mode": { - "message": "Mode" - }, - "more": { - "message": "Lebih" - }, - "news": { - "message": "Berita" - }, - "not_invert_listed": { - "message": "Senarai tidak songsang" - }, - "off": { - "message": "Tutup" - }, - "on": { - "message": "Buka" - }, - "only_for": { - "message": "Hanya untuk" - }, - "only_for_description": { - "message": "Gunakan tetapan pada laman web semasa sahaja" - }, - "open_dev_tools": { - "message": "Alat Developer" - }, - "page_in_dark_list": { - "message": "Halamn in dalam senarai\ngelap global" - }, - "page_protected": { - "message": "Halaman ini telah dilindungi\noleh pelayar" - }, - "pay_for_using": { - "message": "Bayar untuk menggunakan Pembaca Gelap" - }, - "privacy": { - "message": "Privasi" - }, - "read_more": { - "message": "Baca lagi" - }, - "select_font": { - "message": "Pilihkan fon" - }, - "sepia": { - "message": "Sepia" - }, - "set_active_hours": { - "message": "Sediakan waktu aktif" - }, - "set_location": { - "message": "Aktifkan selepas asar di lokasi" - }, - "setup_add_site_hotkey": { - "message": "Sediakan hotkey untuk menambah laman" - }, - "setup_hotkey_toggle_extension": { - "message": "Menyiapkan ekstensi\ntoggel hotkey" - }, - "setup_hotkey_toggle_site": { - "message": "Menyiapkan laman terkini\ntoggel hotkey" - }, - "site_list": { - "message": "Senarai laman" - }, - "site_toggle": { - "message": "Togol Tapak" - }, - "store_listing": { - "message": "Ekstensi penjagaan mata ini mendayakan mod malam dengan mencipta tema gelap untuk laman web dengan cepat. Dark Reader menyongsangkan warna terang, menjadikannya kontras tinggi dan mudah dibaca pada waktu malam.\n\nAnda boleh melaraskan kecerahan, kontras, penapis sepia, mod gelap, tetapan fon dan senarai abaikan.\n\nKami mungkin meminta anda menyokong pembangunan aplikasi dengan sumbangan. Anda mungkin melihat berita tentang Pembaca Gelap dalam pop timbul tetapan. Terdapat Alat Pembangun untuk pengguna berpengalaman.\n\nDark Reader tidak memaparkan iklan dan tidak menghantar data pengguna ke mana-mana sahaja. Ia adalah sumber terbuka sepenuhnya: https://github.com/darkreader/darkreader\n\nSebelum anda memasangnya, lumpuhkan sambungan yang serupa. Selamat menonton!" - }, - "support_out_work": { - "message": "Sokong kerja kami" - }, - "system_dark_mode": { - "message": "Gunakan skema warna sistem" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "Aktifkan semasa skema gelap sistem dibuka" - }, - "text_stroke": { - "message": "Lejang teks" - }, - "theme_generation_mode": { - "message": "Mod penjanaan tema" - }, - "toggle_current_site": { - "message": "Toggel laman terkini" - }, - "toggle_extension": { - "message": "Toggel ekstensi" - }, - "try_experimental_theme_engines": { - "message": "Cubakan enjin tema **percubaan**:\n**Penapis+** mengekalkan ketepuan warna, menggunakan GPU\n**Tema statik** menjana tema pantas yang ringkas\n**Tema dinamik** menganalisis warna dan imej" - }, - "version": { - "message": "Versi" - }, - "we_celebrate_10_years": { - "message": "Pembaca Gelap meraikan 10 tahun.\nTolong sokong kerja kami." - }, - "website_toggle_shortcut": { - "message": "Pintasan papan kekunci togol tapak web" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/nl/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/nl/messages.json deleted file mode 100644 index b9fff4f..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/nl/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Site aan lijst toevoegen" - }, - "all_settings": { - "message": "Alle instellingen" - }, - "auto_day_at_location": { - "message": "Auto (dag op locatie)" - }, - "auto_day_time": { - "message": "Automatisch (dagtijd)" - }, - "auto_night_at_location": { - "message": "Auto (nacht op locatie)" - }, - "auto_night_time": { - "message": "Automatisch (nacht)" - }, - "auto_system_is_dark": { - "message": "Auto (systeem is donker)" - }, - "auto_system_is_light": { - "message": "Auto (systeem is licht)" - }, - "automation": { - "message": "Automatisering" - }, - "brightness": { - "message": "Helderheid" - }, - "change_browser_theme": { - "message": "Browserthema wijzigen" - }, - "click_to_set_shortcut": { - "message": "Klik om de snelkoppeling in te stellen" - }, - "configure_automation": { - "message": "Automatisering configureren" - }, - "configure_site_toggle": { - "message": "Configureer schakelen tussen websites" - }, - "contrast": { - "message": "Contrast" - }, - "custom_browser_theme_off": { - "message": "Standaard" - }, - "custom_browser_theme_on": { - "message": "Aangepast" - }, - "dark": { - "message": "Donker" - }, - "dark_theme_detected": { - "message": "Donker thema gedetecteerd" - }, - "detect_dark_theme": { - "message": "Detecteer een donker thema" - }, - "detect_website_dark_theme": { - "message": "Detecteer het eigen donkere thema van de website" - }, - "donate": { - "message": "Doneren" - }, - "enable_for_all_sites_by_default": { - "message": "Standaard ingeschakeld voor alle websites" - }, - "enabled_by_default": { - "message": "Standaard ingeschakeld" - }, - "engine_dynamic": { - "message": "Dynamisch" - }, - "engine_filter": { - "message": "Filter" - }, - "engine_filter_plus": { - "message": "Filter+" - }, - "engine_static": { - "message": "Statisch" - }, - "extension_description": { - "message": "Donkere modus voor elke website. Zorg goed voor je ogen, gebruik donkere modus voor gebruik in de nacht of zelfs overdag." - }, - "extension_toggle_shortcut": { - "message": "Extensie aan/uit sneltoets" - }, - "filter": { - "message": "Filter" - }, - "grayscale": { - "message": "Grijswaarden" - }, - "help": { - "message": "Hulp" - }, - "invert_listed_only": { - "message": "Alleen deze omkeren" - }, - "latitude": { - "message": "Breedtegraad" - }, - "light": { - "message": "Licht" - }, - "loading_please_wait": { - "message": "Laden, even geduld" - }, - "local_files_forbidden": { - "message": "Geen toegang toegestaan\nlokale bestanden" - }, - "longitude": { - "message": "Lengtegraad" - }, - "mobile_link": { - "message": "Mobiele Dark Reader is beschikbaar. Kom meer te weten" - }, - "mode": { - "message": "Modus" - }, - "more": { - "message": "Meer" - }, - "news": { - "message": "Nieuws" - }, - "not_invert_listed": { - "message": "Deze niet omkeren" - }, - "off": { - "message": "Uit" - }, - "on": { - "message": "Aan" - }, - "only_for": { - "message": "Alleen op" - }, - "only_for_description": { - "message": "Instelling alleen voor deze site opslaan" - }, - "open_dev_tools": { - "message": "Tools" - }, - "page_in_dark_list": { - "message": "Deze site staat op\nde globale lijst" - }, - "page_protected": { - "message": "Deze pagina wordt beschermd\ndoor de browser" - }, - "pay_for_using": { - "message": "Betaal voor het gebruik van Dark Reader" - }, - "privacy": { - "message": "Privacy" - }, - "read_more": { - "message": "Meer hierover" - }, - "select_font": { - "message": "Lettertype selecteren" - }, - "sepia": { - "message": "Sepia" - }, - "set_active_hours": { - "message": "Actieve uren instellen" - }, - "set_location": { - "message": "Activeren na zonsondergang op locatie" - }, - "setup_add_site_hotkey": { - "message": "Sneltoets instellen voor site toevoegen" - }, - "setup_hotkey_toggle_extension": { - "message": "Sneltoets instellen voor\nextensie schakelen" - }, - "setup_hotkey_toggle_site": { - "message": "Sneltoets instellen voor\nhuidige site schakelen" - }, - "site_list": { - "message": "Sitelijst" - }, - "site_toggle": { - "message": "Site wisselen" - }, - "store_listing": { - "message": "Deze oogzorgextensie heeft een nachtstand die automatisch donkere thema's maakt voor websites. Donkere modus keert lichte kleuren om voor goede leesbaarheid 's nachts.\n\nJe kunt de helderheid, het contrast, het kleurenfilter, de donkere modus, het lettertype en de lijst van te negeren websites geheel instellen naar wens.\n\nWe kunnen je vragen om de ontwikkeling van de app te ondersteunen met een donatie. Mogelijk ziet u nieuws over Dark Reader in de pop-up met instellingen. Er zijn Developer Tools voor ervaren gebruikers.\n\nDark Reader laat nooit advertenties zien en gebruikt nooit je gegevens. Deze extensie is volledig open-source op https://github.com/darkreader/darkreader\n\nVoor de installatie is het aangeraden soortgelijke extensies eerst uit te schakelen. Veel kijkplezier!" - }, - "support_out_work": { - "message": "Steun ons werk" - }, - "system_dark_mode": { - "message": "Gebruik systeemkleurenschema" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "Activeren bij donker systeemthema" - }, - "text_stroke": { - "message": "Tekstomlijning" - }, - "theme_generation_mode": { - "message": "Themageneratiemodus" - }, - "toggle_current_site": { - "message": "Huidige site schakelen" - }, - "toggle_extension": { - "message": "Extensie schakelen" - }, - "try_experimental_theme_engines": { - "message": "Probeer **experimentele** themas\n**Filter+** behoudt saturatie, videokaart vereist\n**Statisch thema** genereert snel een simpel thema\n**Dynamisch thema** analyseert kleuren en foto's" - }, - "version": { - "message": "Versie" - }, - "we_celebrate_10_years": { - "message": "Dark Reader viert 10 jaar.\nSteun alstublieft ons werk." - }, - "website_toggle_shortcut": { - "message": "Sneltoets voor het wisselen van de website" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/no/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/no/messages.json deleted file mode 100644 index 5eab6fb..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/no/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Legg til en side" - }, - "all_settings": { - "message": "Alle innstillinger" - }, - "auto_day_at_location": { - "message": "Auto (dag på stedet)" - }, - "auto_day_time": { - "message": "Auto (dagtid)" - }, - "auto_night_at_location": { - "message": "Auto (natt på stedet)" - }, - "auto_night_time": { - "message": "Auto (natttid)" - }, - "auto_system_is_dark": { - "message": "Auto (systemet er mørkt)" - }, - "auto_system_is_light": { - "message": "Auto (systemet er lett)" - }, - "automation": { - "message": "Automasjon" - }, - "brightness": { - "message": "Lysstyrke" - }, - "change_browser_theme": { - "message": "Bytt nettleser tema" - }, - "click_to_set_shortcut": { - "message": "Klikk for å angi snarveien" - }, - "configure_automation": { - "message": "Konfigurer automatisering" - }, - "configure_site_toggle": { - "message": "Konfigurer nettstedsveksling" - }, - "contrast": { - "message": "Kontrast" - }, - "custom_browser_theme_off": { - "message": "Standard" - }, - "custom_browser_theme_on": { - "message": "Tilpasset" - }, - "dark": { - "message": "Mørk" - }, - "dark_theme_detected": { - "message": "Mørkt tema oppdaget" - }, - "detect_dark_theme": { - "message": "Oppdag mørkt tema" - }, - "detect_website_dark_theme": { - "message": "Oppdag nettstedets eget mørke tema" - }, - "donate": { - "message": "Donere" - }, - "enable_for_all_sites_by_default": { - "message": "Aktivert for alle nettsteder som standard" - }, - "enabled_by_default": { - "message": "Aktivert som standard" - }, - "engine_dynamic": { - "message": "Dynamisk" - }, - "engine_filter": { - "message": "Filter" - }, - "engine_filter_plus": { - "message": "Filter+" - }, - "engine_static": { - "message": "Statisk" - }, - "extension_description": { - "message": "Mørkt tema for alle nettsteder. Ta vare på øynene, bruk Dark Reader for nettleseren, dag og kveld." - }, - "extension_toggle_shortcut": { - "message": "Utvidelse av/på tastatursnarvei" - }, - "filter": { - "message": "Filter" - }, - "grayscale": { - "message": "Gråtone" - }, - "help": { - "message": "Hjelp" - }, - "invert_listed_only": { - "message": "Inverter bare" - }, - "latitude": { - "message": "Breddegrad" - }, - "light": { - "message": "Lys" - }, - "loading_please_wait": { - "message": "Laster, vennligst vent" - }, - "local_files_forbidden": { - "message": "Ikke tillatt tilgang\nlokale filer" - }, - "longitude": { - "message": "Lengdegrad" - }, - "mobile_link": { - "message": "Mobile Dark Reader er tilgjengelig. Lære mer" - }, - "mode": { - "message": "Modus" - }, - "more": { - "message": "Mer" - }, - "news": { - "message": "Nyheter" - }, - "not_invert_listed": { - "message": "Ikke inverter" - }, - "off": { - "message": "Av" - }, - "on": { - "message": "På" - }, - "only_for": { - "message": "Bare for" - }, - "only_for_description": { - "message": "Benytt instillingene bare for denne nettsiden" - }, - "open_dev_tools": { - "message": "Utvikler" - }, - "page_in_dark_list": { - "message": "Siden er i den globale\nmørk-modus listen" - }, - "page_protected": { - "message": "Denne siden er beskyttet\nav nettleseren" - }, - "pay_for_using": { - "message": "Betal for å bruke Dark Reader" - }, - "privacy": { - "message": "Personvern" - }, - "read_more": { - "message": "Les mer" - }, - "select_font": { - "message": "Velg en skrifttype" - }, - "sepia": { - "message": "Bruntone" - }, - "set_active_hours": { - "message": "Angi aktivitetsperiode" - }, - "set_location": { - "message": "Aktiver etter solnedgang på stedet" - }, - "setup_add_site_hotkey": { - "message": "Legg til en hurtigtast for å legge til sider" - }, - "setup_hotkey_toggle_extension": { - "message": "Sett opp hurtigtast for\nå slå utvidelsen på/av" - }, - "setup_hotkey_toggle_site": { - "message": "Sett opp hurtigtast\nfor å invertere sider" - }, - "site_list": { - "message": "Side liste" - }, - "site_toggle": { - "message": "Bytting av nettsted" - }, - "store_listing": { - "message": "Denne øye-beskyttelse utvidelsen aktiverer nattmodus og lager mørke temaer for nettsider. Dark Reader bytter ut lyse farger med mørke høy-kontrast farger og gjør lesing om kvelden enkelt.\n\nDu kan regulere lysstyrken, kontrasten, bruntone, nattmodus, skrifttype-instillinger og ignorer-liste.\n\nVi kan be deg om å støtte utviklingen av appen med en donasjon. Du kan se nyheter om Dark Reader i popup-vinduet for innstillinger. Det finnes utviklerverktøy for erfarne brukere.\n\nDark Reader viser ikke reklame og sender ikke ut brukerens data. Utvidelsen er åpen-kilde tilgjengelig på https://github.com/darkreader/darkreader\n\nDeaktiver lignende utvidelser før du installerer. Nyt opplevelsen!" - }, - "support_out_work": { - "message": "Støtt vårt arbeid" - }, - "system_dark_mode": { - "message": "Bruk systemfargevalg" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "Aktiveres når systemet mørk modus er på" - }, - "text_stroke": { - "message": "Tekst-tykkelse" - }, - "theme_generation_mode": { - "message": "Tema generering modus" - }, - "toggle_current_site": { - "message": "Inverter denne siden" - }, - "toggle_extension": { - "message": "Slå utvidelsen på/av" - }, - "try_experimental_theme_engines": { - "message": "Prøv ut **eksperimentell** tema motor:\n**Filter+** bevarer fargers metning og benytter GPUen\n**Statisk tema** genererer et enkelt, raskt tema\n**Dynamisk tema** analyserer farger og bilder" - }, - "version": { - "message": "Versjon" - }, - "we_celebrate_10_years": { - "message": "Dark Reader feirer 10 år.\nStøtt arbeidet vårt." - }, - "website_toggle_shortcut": { - "message": "Bytt tastatursnarvei for nettsted" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/pl/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/pl/messages.json deleted file mode 100644 index 1690702..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/pl/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Dodaj stronę do listy" - }, - "all_settings": { - "message": "Wszystkie ustawienia" - }, - "auto_day_at_location": { - "message": "Auto (dzień w lokalizacji)" - }, - "auto_day_time": { - "message": "Auto (czas dzienny)" - }, - "auto_night_at_location": { - "message": "Auto (noc w miejscu)" - }, - "auto_night_time": { - "message": "Auto (w nocy)" - }, - "auto_system_is_dark": { - "message": "Auto (system jest ciemny)" - }, - "auto_system_is_light": { - "message": "Auto (system jest lekki)" - }, - "automation": { - "message": "Automatyzacja" - }, - "brightness": { - "message": "Jasność" - }, - "change_browser_theme": { - "message": "Zmieniaj motyw przeglądarki" - }, - "click_to_set_shortcut": { - "message": "Kliknij, aby ustawić skrót" - }, - "configure_automation": { - "message": "Skonfiguruj automatyzację" - }, - "configure_site_toggle": { - "message": "Skonfiguruj przełączanie stron internetowych" - }, - "contrast": { - "message": "Kontrast" - }, - "custom_browser_theme_off": { - "message": "Domyślny" - }, - "custom_browser_theme_on": { - "message": "Niestandardowy" - }, - "dark": { - "message": "Ciemny" - }, - "dark_theme_detected": { - "message": "Wykryto ciemny motyw" - }, - "detect_dark_theme": { - "message": "Wykryj ciemny motyw" - }, - "detect_website_dark_theme": { - "message": "Wykryj własny ciemny motyw witryny" - }, - "donate": { - "message": "Wspomóż" - }, - "enable_for_all_sites_by_default": { - "message": "Domyślnie włączone dla wszystkich witryn" - }, - "enabled_by_default": { - "message": "Włączone domyślnie" - }, - "engine_dynamic": { - "message": "Dynamicz." - }, - "engine_filter": { - "message": "Filtr" - }, - "engine_filter_plus": { - "message": "Filtr+" - }, - "engine_static": { - "message": "Statyczny" - }, - "extension_description": { - "message": "Tryb ciemny dla wszystkich stron internetowych. Zadbaj o swój wzrok, używając ciemnego motywu do przeglądania w dzień i w nocy." - }, - "extension_toggle_shortcut": { - "message": "Skrót klawiaturowy włączania/wyłączania rozszerzenia" - }, - "filter": { - "message": "Filtr" - }, - "grayscale": { - "message": "Szarość" - }, - "help": { - "message": "Pomoc" - }, - "invert_listed_only": { - "message": "Odwróć tylko listę" - }, - "latitude": { - "message": "Szerokość" - }, - "light": { - "message": "Jasny" - }, - "loading_please_wait": { - "message": "Ładowanie, proszę czekać" - }, - "local_files_forbidden": { - "message": "Brak dostępu do\nplików lokalnych" - }, - "longitude": { - "message": "Długość" - }, - "mobile_link": { - "message": "Mobilny Dark Reader jest dostępny. Dowiedz się więcej" - }, - "mode": { - "message": "Tryb" - }, - "more": { - "message": "Więcej" - }, - "news": { - "message": "Aktualności" - }, - "not_invert_listed": { - "message": "Nie odwracaj listy" - }, - "off": { - "message": "Wyłącz." - }, - "on": { - "message": "Włącz." - }, - "only_for": { - "message": "Tylko dla" - }, - "only_for_description": { - "message": "Zastosuj ustawienia tylko dla bieżącej strony" - }, - "open_dev_tools": { - "message": "Narzędzia" - }, - "page_in_dark_list": { - "message": "Ta strona jest w globalnej\nczarnej liście" - }, - "page_protected": { - "message": "Ta strona jest chroniona\nprzez przeglądarkę" - }, - "pay_for_using": { - "message": "Zapłać za korzystanie z Dark Reader" - }, - "privacy": { - "message": "Prywatność" - }, - "read_more": { - "message": "Więcej" - }, - "select_font": { - "message": "Wybierz czcionkę" - }, - "sepia": { - "message": "Sepia" - }, - "set_active_hours": { - "message": "Ustaw godziny aktywności" - }, - "set_location": { - "message": "Aktywuj po zmierzchu w danej lokacji" - }, - "setup_add_site_hotkey": { - "message": "Ustaw skrót dodający stronę" - }, - "setup_hotkey_toggle_extension": { - "message": "Ustaw rozszerzenie\nprzełącz przycisk" - }, - "setup_hotkey_toggle_site": { - "message": "Ustaw obecną stronę\nprzełącz przycisk" - }, - "site_list": { - "message": "Lista stron" - }, - "site_toggle": { - "message": "Przełączanie witryny" - }, - "store_listing": { - "message": "To rozszerzenie dbające o zdrowie oczu aktywuje tryb nocny tworząc dynamiczne ciemne motywy dla stron internetowych. Dark Reader odwraca jasność kolorów, nadając im wysokiego kontrastu i ułatwiając czytanie w nocy.\n\nMożesz dopasować jasność, kontrast, filtr sepii, tryb ciemny, ustawienia czcionki i listę ignorowanych stron.\n\nMożemy poprosić Cię o wsparcie rozwoju aplikacji darowizną. Możesz zobaczyć wiadomości o Dark Reader w wyskakującym okienku ustawień. Istnieją narzędzia programistyczne dla doświadczonych użytkowników.\n\nDark reader nie wyświetla reklam ani nie wysyła nigdzie danych użytkowników. Jest oprogramowaniem o w pełni otwartym kodzie źródłowym https://github.com/darkreader/darkreader\n\nPrzed instalacją usuń podobne rozszerzenia. Miłego oglądania!" - }, - "support_out_work": { - "message": "Wesprzyj naszą pracę" - }, - "system_dark_mode": { - "message": "Użyj systemowego schematu kolorów" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "Aktywuj gdy systemowy tryb ciemny jest włączony" - }, - "text_stroke": { - "message": "Obrys tekstu" - }, - "theme_generation_mode": { - "message": "Tryb generowania motywu" - }, - "toggle_current_site": { - "message": "Przełącz dla bieżącej strony" - }, - "toggle_extension": { - "message": "Przełącz rozszerzenie" - }, - "try_experimental_theme_engines": { - "message": "Wypróbuj **eksperymentalne** silniki motywów:\n**Filtr+** zachowuje nasycenie kolorów, wykorzystuje GPU\n**Statyczny motyw** generuje prosty, szybki motyw\n**Dynamiczny motyw** analizuje kolory i obrazy" - }, - "version": { - "message": "Wersja" - }, - "we_celebrate_10_years": { - "message": "Dark Reader świętuje 10-lecie.\nProsimy o wsparcie naszej pracy." - }, - "website_toggle_shortcut": { - "message": "Skrót klawiaturowy przełączania witryny" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/pt_BR/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/pt_BR/messages.json deleted file mode 100644 index b001ca8..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/pt_BR/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Adicionar site à lista" - }, - "all_settings": { - "message": "Todas as configurações" - }, - "auto_day_at_location": { - "message": "Auto (dia no local)" - }, - "auto_day_time": { - "message": "Automático (dia)" - }, - "auto_night_at_location": { - "message": "Auto (noite no local)" - }, - "auto_night_time": { - "message": "Automático (noite)" - }, - "auto_system_is_dark": { - "message": "Automático (o sistema está escuro)" - }, - "auto_system_is_light": { - "message": "Auto (o sistema está leve)" - }, - "automation": { - "message": "Automatização" - }, - "brightness": { - "message": "Brilho" - }, - "change_browser_theme": { - "message": "Alterar o tema do navegador" - }, - "click_to_set_shortcut": { - "message": "Clique para definir o atalho" - }, - "configure_automation": { - "message": "Configurar automação" - }, - "configure_site_toggle": { - "message": "Configurar alternância de sites" - }, - "contrast": { - "message": "Contraste" - }, - "custom_browser_theme_off": { - "message": "Padrão" - }, - "custom_browser_theme_on": { - "message": "Personalizado" - }, - "dark": { - "message": "Escuro" - }, - "dark_theme_detected": { - "message": "Tema escuro detectado" - }, - "detect_dark_theme": { - "message": "Detectar tema escuro" - }, - "detect_website_dark_theme": { - "message": "Detectar o próprio tema escuro do site" - }, - "donate": { - "message": "Doar" - }, - "enable_for_all_sites_by_default": { - "message": "Ativado para todos os sites por padrão" - }, - "enabled_by_default": { - "message": "Ativado por padrão" - }, - "engine_dynamic": { - "message": "Dinâmico" - }, - "engine_filter": { - "message": "Filtro" - }, - "engine_filter_plus": { - "message": "Filtro+" - }, - "engine_static": { - "message": "Estático" - }, - "extension_description": { - "message": "Tema escuro para todos os sites. Mantenha os seus olhos relaxados usando o tema escuro em sua navegação diária." - }, - "extension_toggle_shortcut": { - "message": "Atalho de teclado ativado/desativado da extensão" - }, - "filter": { - "message": "Filtro" - }, - "grayscale": { - "message": "Tons de cinza" - }, - "help": { - "message": "Ajuda" - }, - "invert_listed_only": { - "message": "Inverter listados" - }, - "latitude": { - "message": "Latitude" - }, - "light": { - "message": "Claro" - }, - "loading_please_wait": { - "message": "Carregando, aguarde" - }, - "local_files_forbidden": { - "message": "Não é permitido acessar\narquivos locais" - }, - "longitude": { - "message": "Longitude" - }, - "mobile_link": { - "message": "O Mobile Dark Reader está disponível. Saber mais" - }, - "mode": { - "message": "Modo" - }, - "more": { - "message": "Extras" - }, - "news": { - "message": "Notícias" - }, - "not_invert_listed": { - "message": "Não inverter listados" - }, - "off": { - "message": "Des." - }, - "on": { - "message": "Ati." - }, - "only_for": { - "message": "Somente para" - }, - "only_for_description": { - "message": "Aplicar configurações somente ao site atual" - }, - "open_dev_tools": { - "message": "Ferramentas" - }, - "page_in_dark_list": { - "message": "Este site está na\nlista negra global" - }, - "page_protected": { - "message": "Esta página é protegida\npelo navegador" - }, - "pay_for_using": { - "message": "Pague pelo uso do Dark Reader" - }, - "privacy": { - "message": "Privac." - }, - "read_more": { - "message": "Saiba mais" - }, - "select_font": { - "message": "Selecione uma fonte" - }, - "sepia": { - "message": "Tons de sépia" - }, - "set_active_hours": { - "message": "Definir o horário ativo" - }, - "set_location": { - "message": "Ativação automática após o pôr do sol" - }, - "setup_add_site_hotkey": { - "message": "Configurar um atalho para adicionar um site" - }, - "setup_hotkey_toggle_extension": { - "message": "Configurar atalho de\nalternância (extensão)" - }, - "setup_hotkey_toggle_site": { - "message": "Configurar atalho de\nalternância (site atual)" - }, - "site_list": { - "message": "Lista de sites" - }, - "site_toggle": { - "message": "Alternância de sites" - }, - "store_listing": { - "message": "Esta extensão ajuda os seus olhos a relaxarem ao criar e aplicar o modo escuro aos sites que você visita. O Dark Reader inverte as cores brilhantes, tornando-as de alto contraste e deixando-as fáceis de serem lidas à noite.\n\nVocê pode ajustar o brilho, o contraste, os tons de sépia, o modo escuro, as configurações de fonte e a lista negra.\n\nPodemos pedir que você apoie o desenvolvimento do aplicativo com uma doação. Notícias relacionadas à extensão podem ser exibidas no menu de configurações. Disponibilizamos ferramentas de desenvolvedor para usuários experientes.\n\nO Dark Reader não exibe anúncios e não compartilha os dados de seus usuários. O código-fonte é totalmente aberto (open-source): https://github.com/darkreader/darkreader\n\nAntes de instalar esta extensão, desative extensões semelhantes. Aprecie a vista!" - }, - "support_out_work": { - "message": "Apoie nosso trabalho" - }, - "system_dark_mode": { - "message": "Usar o esquema de cores do sistema" - }, - "system_dark_mode_chromium_warning": { - "message": "Esta opção pode não funcionar\ndevido a um bug do navegador" - }, - "system_dark_mode_description": { - "message": "Ativar quando o sistema estiver no modo escuro" - }, - "text_stroke": { - "message": "Intensidade do texto" - }, - "theme_generation_mode": { - "message": "Modo de geração de tema" - }, - "toggle_current_site": { - "message": "Alternar (site atual)" - }, - "toggle_extension": { - "message": "Ativar/des. extensão" - }, - "try_experimental_theme_engines": { - "message": "Experimente os motores de temas **experimentais**:\n**Filtro+** preserva a saturação de cores (usa a GPU)\n**Tema estático** gera um tema simples rapidamente\n**Tema dinâmico** analisa cores e imagens" - }, - "version": { - "message": "Versão" - }, - "we_celebrate_10_years": { - "message": "Dark Reader comemora 10 anos.\nPor favor, apoie nosso trabalho." - }, - "website_toggle_shortcut": { - "message": "Atalho de teclado de alternância de site" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/pt_PT/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/pt_PT/messages.json deleted file mode 100644 index 12bf794..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/pt_PT/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Adicionar site à lista" - }, - "all_settings": { - "message": "Todas as configurações" - }, - "auto_day_at_location": { - "message": "Auto (dia no local)" - }, - "auto_day_time": { - "message": "Automático (dia)" - }, - "auto_night_at_location": { - "message": "Auto (noite no local)" - }, - "auto_night_time": { - "message": "Automático (noite)" - }, - "auto_system_is_dark": { - "message": "Automático (o sistema está escuro)" - }, - "auto_system_is_light": { - "message": "Auto (o sistema está leve)" - }, - "automation": { - "message": "Automatização" - }, - "brightness": { - "message": "Brilho" - }, - "change_browser_theme": { - "message": "Alterar o tema do navegador" - }, - "click_to_set_shortcut": { - "message": "Clique para definir o atalho" - }, - "configure_automation": { - "message": "Configurar automação" - }, - "configure_site_toggle": { - "message": "Configurar alternância de sites" - }, - "contrast": { - "message": "Contraste" - }, - "custom_browser_theme_off": { - "message": "Predefinido" - }, - "custom_browser_theme_on": { - "message": "Personalizado" - }, - "dark": { - "message": "Escuro" - }, - "dark_theme_detected": { - "message": "Tema escuro detectado" - }, - "detect_dark_theme": { - "message": "Detectar tema escuro" - }, - "detect_website_dark_theme": { - "message": "Detectar o próprio tema escuro do site" - }, - "donate": { - "message": "Doar" - }, - "enable_for_all_sites_by_default": { - "message": "Ativado para todos os sites por padrão" - }, - "enabled_by_default": { - "message": "Ativado por padrão" - }, - "engine_dynamic": { - "message": "Dinâmico" - }, - "engine_filter": { - "message": "Filtro" - }, - "engine_filter_plus": { - "message": "Filtro+" - }, - "engine_static": { - "message": "Estático" - }, - "extension_description": { - "message": "Tema escuro para todos os websites. Cuide dos seus olhos, use o Dark Reader para navegação noturna e diária." - }, - "extension_toggle_shortcut": { - "message": "Atalho de teclado ativado/desativado da extensão" - }, - "filter": { - "message": "Filtro" - }, - "grayscale": { - "message": "Tons de cinza" - }, - "help": { - "message": "Ajuda" - }, - "invert_listed_only": { - "message": "Inverter listado" - }, - "latitude": { - "message": "Latitude" - }, - "light": { - "message": "Claro" - }, - "loading_please_wait": { - "message": "A carregar, por favor aguarde" - }, - "local_files_forbidden": { - "message": "Não é permitido acessar\nficheiros locais" - }, - "longitude": { - "message": "Longitude" - }, - "mobile_link": { - "message": "O Mobile Dark Reader está disponível. Saber mais" - }, - "mode": { - "message": "Modo" - }, - "more": { - "message": "Mais" - }, - "news": { - "message": "Notícias" - }, - "not_invert_listed": { - "message": "Não inverter listado" - }, - "off": { - "message": "Des." - }, - "on": { - "message": "Ligar" - }, - "only_for": { - "message": "Apenas para" - }, - "only_for_description": { - "message": "Aplicar definições apenas ao website atual" - }, - "open_dev_tools": { - "message": "Ferramentas" - }, - "page_in_dark_list": { - "message": "Este site está na lista\nnegra global" - }, - "page_protected": { - "message": "Esta página é protegida\npelo navegador" - }, - "pay_for_using": { - "message": "Pague pelo uso do Dark Reader" - }, - "privacy": { - "message": "Privac." - }, - "read_more": { - "message": "Saiba mais" - }, - "select_font": { - "message": "Selecionar um tipo de letra" - }, - "sepia": { - "message": "Sépia" - }, - "set_active_hours": { - "message": "Defina as horas de atividade" - }, - "set_location": { - "message": "Ativar após o pôr-do-sol no local" - }, - "setup_add_site_hotkey": { - "message": "Configurar uma tecla de atalho para adicionar site" - }, - "setup_hotkey_toggle_extension": { - "message": "Tecla de atalho de alternância\nda extensão de configuração" - }, - "setup_hotkey_toggle_site": { - "message": "Configurar o atalho de\nalternância do site atual" - }, - "site_list": { - "message": "Lista de sites" - }, - "site_toggle": { - "message": "Alternância de sites" - }, - "store_listing": { - "message": "Esta extensão de cuidados com os olhos ativa o modo noturno ao criar temas escuros para sites. O Dark Reader inverte as cores brilhantes, tornando-as de alto contraste e fáceis de ler à noite.\n\nPode ajustar o brilho, o contraste, o filtro sépia, o modo escuro, as definições do tipo de letra e a lista de ignorados.\n\nPodemos pedir que você apoie o desenvolvimento do aplicativo com uma doação. Você pode ver notícias sobre o Dark Reader no pop-up de configurações. Existem Ferramentas de Desenvolvedor para usuários experientes.\n\nO Dark Reader não mostra anúncios e não envia os dados dos utilizadores para lado nenhum. É totalmente de código aberto: https://github.com/darkreader/darkreader\n\nAntes de o instalar, desative extensões semelhantes. Desfrute da visualização!" - }, - "support_out_work": { - "message": "Apoie nosso trabalho" - }, - "system_dark_mode": { - "message": "Usar esquema de cores do sistema" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "Ativar quando o modo escuro sistema está ligado" - }, - "text_stroke": { - "message": "Traço do texto" - }, - "theme_generation_mode": { - "message": "Modo de geração de tema" - }, - "toggle_current_site": { - "message": "Alternar o site atual" - }, - "toggle_extension": { - "message": "Alternar extensão" - }, - "try_experimental_theme_engines": { - "message": "Experimentar os motores de temas **experimental**:\n**Filtro+** preserva a saturação de cores, usa GPU\n**Tema estático** gera um tema rápido simples\n**Tema dinâmico** analisa cores e imagens" - }, - "version": { - "message": "Versão" - }, - "we_celebrate_10_years": { - "message": "Dark Reader comemora 10 anos.\nPor favor, apoie nosso trabalho." - }, - "website_toggle_shortcut": { - "message": "Atalho de teclado de alternância de site" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/ro/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/ro/messages.json deleted file mode 100644 index 55e32dd..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/ro/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Adaugă siteul la listă" - }, - "all_settings": { - "message": "Toate setările" - }, - "auto_day_at_location": { - "message": "Auto (zi la locație)" - }, - "auto_day_time": { - "message": "Auto (zi)" - }, - "auto_night_at_location": { - "message": "Auto (noapte la locație)" - }, - "auto_night_time": { - "message": "Auto (noapte)" - }, - "auto_system_is_dark": { - "message": "Auto (sistemul este întunecat)" - }, - "auto_system_is_light": { - "message": "Auto (sistemul este ușor)" - }, - "automation": { - "message": "Automatizare" - }, - "brightness": { - "message": "Luminozitate" - }, - "change_browser_theme": { - "message": "Schimbă tema navigatorului" - }, - "click_to_set_shortcut": { - "message": "Faceți clic pentru a seta comanda rapidă" - }, - "configure_automation": { - "message": "Configurați automatizarea" - }, - "configure_site_toggle": { - "message": "Configurați comutarea site-ului web" - }, - "contrast": { - "message": "Contrast" - }, - "custom_browser_theme_off": { - "message": "Implicită" - }, - "custom_browser_theme_on": { - "message": "Particularizată" - }, - "dark": { - "message": "Întunecat" - }, - "dark_theme_detected": { - "message": "Temă întunecată detectată" - }, - "detect_dark_theme": { - "message": "Detectează tema întunecată" - }, - "detect_website_dark_theme": { - "message": "Detectați propria temă întunecată a site-ului" - }, - "donate": { - "message": "Donează" - }, - "enable_for_all_sites_by_default": { - "message": "Activat pentru toate site-urile web în mod implicit" - }, - "enabled_by_default": { - "message": "Activat implicit" - }, - "engine_dynamic": { - "message": "Dinamic" - }, - "engine_filter": { - "message": "Filtru" - }, - "engine_filter_plus": { - "message": "Filtru+" - }, - "engine_static": { - "message": "Static" - }, - "extension_description": { - "message": "Temă întunecată pentru orice site. Ai grijă de ochii tăi, folosește Dark Reader pentru cititul noaptea și de zi cu zi." - }, - "extension_toggle_shortcut": { - "message": "Comandă rapidă de la tastatură activată/dezactivată pentru extensie" - }, - "filter": { - "message": "Filtru" - }, - "grayscale": { - "message": "Scară de gri" - }, - "help": { - "message": "Ajutor" - }, - "invert_listed_only": { - "message": "Inversez doar lista" - }, - "latitude": { - "message": "Latitudine" - }, - "light": { - "message": "Luminos" - }, - "loading_please_wait": { - "message": "Se încarcă, vă rog așteptați" - }, - "local_files_forbidden": { - "message": "Nu este permis accesul\nfisiere locale" - }, - "longitude": { - "message": "Longitudine" - }, - "mobile_link": { - "message": "Mobile Dark Reader este disponibil. Află mai multe" - }, - "mode": { - "message": "Mod" - }, - "more": { - "message": "Mai mult" - }, - "news": { - "message": "Știri" - }, - "not_invert_listed": { - "message": "Nu inversez lista" - }, - "off": { - "message": "Oprit" - }, - "on": { - "message": "Pornit" - }, - "only_for": { - "message": "Doar pentru" - }, - "only_for_description": { - "message": "Aplică setările doar pentru siteul curent" - }, - "open_dev_tools": { - "message": "Instrumente" - }, - "page_in_dark_list": { - "message": "Acest site este în\nLista Întunecată globală" - }, - "page_protected": { - "message": "Această pagină este protejată\nde navigator" - }, - "pay_for_using": { - "message": "Plătiți pentru utilizarea Dark Reader" - }, - "privacy": { - "message": "Confidenț." - }, - "read_more": { - "message": "Citește mai mult" - }, - "select_font": { - "message": "Selectează un font" - }, - "sepia": { - "message": "Sepia" - }, - "set_active_hours": { - "message": "Setați orele de activitate" - }, - "set_location": { - "message": "Activați după apusul soarelui în locația" - }, - "setup_add_site_hotkey": { - "message": "Setează scurtătura pentru adăugare site" - }, - "setup_hotkey_toggle_extension": { - "message": "Setează extensia\nscurtătură comutare" - }, - "setup_hotkey_toggle_site": { - "message": "Setează siteul curent\nscurtătura de comutare" - }, - "site_list": { - "message": "Listă siteuri" - }, - "site_toggle": { - "message": "Comutarea site-ului" - }, - "store_listing": { - "message": "Această extensie, care se îngrijește de ochii tăi, permite activarea modului de noapte creând pe loc o temă întunecată pentru siteuri. Dark Reader inversează culorile luminoase mărindu-le contrastul și făcându-le ușor de citit noptea.\n\nPoți ajusta luminozitatea, contrastul, filtrul sepia, modul întunecat, setările fontului si lista siteurilor de ignorat.\n\nVă putem cere să susțineți dezvoltarea aplicației printr-o donație. Este posibil să vedeți știri despre Dark Reader în fereastra pop-up de setări. Există instrumente pentru dezvoltatori pentru utilizatorii experimentați.\n\nDark Reader nu afișează reclame și nu trimite datele utilizatorului nicăieri. Este în întregime open-source https://github.com/darkreader/darkreader\n\nÎnainte de instalare dezactivează extensile similare. Vizionare plăcută!" - }, - "support_out_work": { - "message": "Sprijină-ne munca" - }, - "system_dark_mode": { - "message": "Utilizați schema de culori sistem" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "Activați când modul întunecat sistem este pornit" - }, - "text_stroke": { - "message": "Contur text" - }, - "theme_generation_mode": { - "message": "Modul de generare teme" - }, - "toggle_current_site": { - "message": "Comută siteul curent" - }, - "toggle_extension": { - "message": "Comută extensia" - }, - "try_experimental_theme_engines": { - "message": "Încearcă motoarele cu teme **experimentale**:\n**Filtru+** păstrează saturația culorilor, folosește GPU\n**Tema statică** generează o temă simplă si rapidă\n**Tema dinamică** analizeză culorile si imamginile" - }, - "version": { - "message": "Versiune" - }, - "we_celebrate_10_years": { - "message": "Dark Reader aniversează 10 ani.\nVă rugăm să ne susțineți munca." - }, - "website_toggle_shortcut": { - "message": "Comandă rapidă de la tastatură pentru comutarea site-ului" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/ru/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/ru/messages.json deleted file mode 100644 index 82ec91d..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/ru/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Добавить сайт в список" - }, - "all_settings": { - "message": "Все настройки" - }, - "auto_day_at_location": { - "message": "Авто (день на локации)" - }, - "auto_day_time": { - "message": "Авто (дневное время)" - }, - "auto_night_at_location": { - "message": "Авто (ночь на локации)" - }, - "auto_night_time": { - "message": "Авто (ночное время)" - }, - "auto_system_is_dark": { - "message": "Авто (система темная)" - }, - "auto_system_is_light": { - "message": "Авто (система светлая)" - }, - "automation": { - "message": "Автоматизация" - }, - "brightness": { - "message": "Яркость" - }, - "change_browser_theme": { - "message": "Изменить тему браузера" - }, - "click_to_set_shortcut": { - "message": "Нажмите, чтобы установить сочетание" - }, - "configure_automation": { - "message": "Настроить автоматизацию" - }, - "configure_site_toggle": { - "message": "Настроить переключение веб-сайтов" - }, - "contrast": { - "message": "Контрастность" - }, - "custom_browser_theme_off": { - "message": "По умолчанию" - }, - "custom_browser_theme_on": { - "message": "Изменённая" - }, - "dark": { - "message": "Тёмный" - }, - "dark_theme_detected": { - "message": "Обнаружена темная тема" - }, - "detect_dark_theme": { - "message": "Обнаружение темной темы" - }, - "detect_website_dark_theme": { - "message": "Обнаружение собственной темной темы веб-сайта" - }, - "donate": { - "message": "Поддержка" - }, - "enable_for_all_sites_by_default": { - "message": "Включено для всех веб-сайтов по умолчанию" - }, - "enabled_by_default": { - "message": "Включено по умолчанию" - }, - "engine_dynamic": { - "message": "Динам." - }, - "engine_filter": { - "message": "Фильтр" - }, - "engine_filter_plus": { - "message": "Фильтр+" - }, - "engine_static": { - "message": "Стат." - }, - "extension_description": { - "message": "Тёмная тема для каждого сайта. Берегите зрение, используйте Дарк Ридер для ночного или ежедневного просмотра веб-страниц." - }, - "extension_toggle_shortcut": { - "message": "Горячая клавиша включения/выключения расширения" - }, - "filter": { - "message": "Фильтр" - }, - "grayscale": { - "message": "Оттенки серого" - }, - "help": { - "message": "Справка" - }, - "invert_listed_only": { - "message": "Инверт. только эти" - }, - "latitude": { - "message": "широта" - }, - "light": { - "message": "Светлый" - }, - "loading_please_wait": { - "message": "Идёт загрузка, подождите" - }, - "local_files_forbidden": { - "message": "Нет разрешения на доступ\nк локальным файлам" - }, - "longitude": { - "message": "Долгота" - }, - "mobile_link": { - "message": "Доступен мобильный Dark Reader. Узнать больше" - }, - "mode": { - "message": "Режим" - }, - "more": { - "message": "Ещё" - }, - "news": { - "message": "Новости" - }, - "not_invert_listed": { - "message": "Не инвертировать" - }, - "off": { - "message": "Откл." - }, - "on": { - "message": "Вкл." - }, - "only_for": { - "message": "Только для" - }, - "only_for_description": { - "message": "Применить настройки только к тек. сайту" - }, - "open_dev_tools": { - "message": "Разраб." - }, - "page_in_dark_list": { - "message": "Эта страница в глоб\nсписке Тёмных Сайтов" - }, - "page_protected": { - "message": "Эта страница защищена\nбраузером" - }, - "pay_for_using": { - "message": "Оплатите использование Dark Reader" - }, - "privacy": { - "message": "Согл." - }, - "read_more": { - "message": "Читать ещё" - }, - "select_font": { - "message": "Выберите шрифт" - }, - "sepia": { - "message": "Сепия" - }, - "set_active_hours": { - "message": "Установите период активности" - }, - "set_location": { - "message": "Включить на закате" - }, - "setup_add_site_hotkey": { - "message": "Уст. сочет. клавиш для доб. сайта в список" - }, - "setup_hotkey_toggle_extension": { - "message": "Уст. сочетание\nклавиш" - }, - "setup_hotkey_toggle_site": { - "message": "Установите сочетание\nклавиш" - }, - "site_list": { - "message": "Список" - }, - "site_toggle": { - "message": "Переключение сайта" - }, - "store_listing": { - "message": "Это расширение переводит браузер в ночной режим. Дарк Ридер заменяет светлый фон тёмным, что снижает усталость глаз при долгой работе за компьютером либо при просмотре веб-страниц ночью.\n\nИмеется возможность настраивать яркость, контрастность, шрифт, режим инверсии, режим наложения жёлтого фильтра (сепия).\n\nМы можем попросить вас поддержать разработку приложения пожертвованием. Вы можете увидеть новости о Dark Reader во всплывающем окне настроек. Есть инструменты разработчика для опытных пользователей.\n\nДарк Ридер не встраивает рекламу и не собирает пользовательские данные. Весь исходный код открыт https://github.com/darkreader/darkreader\n\nПеред установкой отключите подобные расширения. Приятного просмотра!" - }, - "support_out_work": { - "message": "Поддержите нашу работу" - }, - "system_dark_mode": { - "message": "Использовать системную цветовую схему" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "Вкл., если системный ночной режим активен" - }, - "text_stroke": { - "message": "Обводка текста" - }, - "theme_generation_mode": { - "message": "Режим генерации темы" - }, - "toggle_current_site": { - "message": "Переключить тек. сайт" - }, - "toggle_extension": { - "message": "Вкл/откл расширен." - }, - "try_experimental_theme_engines": { - "message": "Попробуйте **экспериментальные** режимы:\n**Фильтр+** сохр. яркость цветов, использует GPU\n**Статический режим** создаёт простую тему\n**Динамический** анализирует цвета и картинки" - }, - "version": { - "message": "Версия" - }, - "we_celebrate_10_years": { - "message": "Dark Reader отмечает 10-летие.\nПожалуйста, поддержите нашу работу." - }, - "website_toggle_shortcut": { - "message": "Сочетание клавиш для переключения веб-сайтов" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/si/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/si/messages.json deleted file mode 100644 index f797ff3..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/si/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "අඩවිය ලේඛනයට දමන්න" - }, - "all_settings": { - "message": "සියලු සැකසුම්" - }, - "auto_day_at_location": { - "message": "ස්වයං (ස්ථානයේ දහවල)" - }, - "auto_day_time": { - "message": "ස්වයං (දිවා කාලය)" - }, - "auto_night_at_location": { - "message": "ස්වයං (ස්ථානයේ රාත්‍රිය)" - }, - "auto_night_time": { - "message": "ස්වයං (රාත්‍රී කාලය)" - }, - "auto_system_is_dark": { - "message": "ස්වයං (පද්ධතිය අඳුරුයි)" - }, - "auto_system_is_light": { - "message": "ස්වයං (පද්ධතිය දීප්තිමත්)" - }, - "automation": { - "message": "ස්වයංක්‍රියකරණය" - }, - "brightness": { - "message": "දීප්තිය" - }, - "change_browser_theme": { - "message": "අතිරික්සුවේ තේමාව වෙනස් කරන්න" - }, - "click_to_set_shortcut": { - "message": "කෙටිමග සැකසීමට ඔබන්න" - }, - "configure_automation": { - "message": "ස්වයංක්‍රියකරණය වින්‍යාස කරන්න" - }, - "configure_site_toggle": { - "message": "අඩවියට යෙදීම සකසන්න" - }, - "contrast": { - "message": "පිළිසැසඳුම" - }, - "custom_browser_theme_off": { - "message": "පෙරනිමි" - }, - "custom_browser_theme_on": { - "message": "අභිරුචි" - }, - "dark": { - "message": "අඳුර" - }, - "dark_theme_detected": { - "message": "අඳුරු තේමාව අනාවරණය විය" - }, - "detect_dark_theme": { - "message": "අඳුරු තේමාව හඳුනා ගන්න" - }, - "detect_website_dark_theme": { - "message": "අඩවියේම අඳුරු තේමාව හඳුනා ගන්න" - }, - "donate": { - "message": "පරිත්‍යාග" - }, - "enable_for_all_sites_by_default": { - "message": "පෙරනිමි පරිදි සියළුම අඩවි සඳහා සබලයි" - }, - "enabled_by_default": { - "message": "පෙරනිමි පරිදි සක්‍රියයි" - }, - "engine_dynamic": { - "message": "ගතික" - }, - "engine_filter": { - "message": "පෙරහන" - }, - "engine_filter_plus": { - "message": "පෙරහන+" - }, - "engine_static": { - "message": "ස්ථිතික" - }, - "extension_description": { - "message": "සියළුම අඩවි සදහා අඳුරු ප්‍රකාරය. ඔබගේ නෙත් රැකගන්න, රාත්‍රී සහ දිවා කාලයේ දී වියමන අඩවි පිරික්සීමට අඳුරු තේමාව භාවිතා කරන්න." - }, - "extension_toggle_shortcut": { - "message": "දිගුව සක්‍රිය/අක්‍රිය කරන කෙටිමග" - }, - "filter": { - "message": "පෙරහන" - }, - "grayscale": { - "message": "අළු පරිමාණය" - }, - "help": { - "message": "උදව්" - }, - "invert_listed_only": { - "message": "යටියන පමණි" - }, - "latitude": { - "message": "අක්ෂාංශ" - }, - "light": { - "message": "එළිය" - }, - "loading_please_wait": { - "message": "පූරණය වෙමින්, රැඳී සිටින්න" - }, - "local_files_forbidden": { - "message": "ස්ථානීය ගොනු වෙත\nප්‍රවේශයට ඉඩ නොදේ" - }, - "longitude": { - "message": "දේශාංශ" - }, - "mobile_link": { - "message": "Mobile Dark Reader ඇත. තවත් හදාරන්න" - }, - "mode": { - "message": "ප්‍රකාරය" - }, - "more": { - "message": "තව" - }, - "news": { - "message": "පුවත්" - }, - "not_invert_listed": { - "message": "යටියන රහිත" - }, - "off": { - "message": "අක්‍රියයි" - }, - "on": { - "message": "සක්‍රියයි" - }, - "only_for": { - "message": "හුදෙක්" - }, - "only_for_description": { - "message": "සැකසුම් අදාළ වන්නේ වත්මන් අඩවියට පමණි" - }, - "open_dev_tools": { - "message": "සං. මෙවලම්" - }, - "page_in_dark_list": { - "message": "මෙම අඩවිය ගෝලීය\nඅඳුරු ලේඛනයේ තිබේ" - }, - "page_protected": { - "message": "අතිරික්සුව මගින් මෙම පිටුව\nආරක්‍ෂා කර ඇත" - }, - "pay_for_using": { - "message": "Dark Reader භාවිතා කිරීම සඳහා ගෙවන්න" - }, - "privacy": { - "message": "රහස්‍යතාව" - }, - "read_more": { - "message": "තව කියවන්න" - }, - "select_font": { - "message": "අකුරක් තෝරන්න" - }, - "sepia": { - "message": "මද දුඹුරු" - }, - "set_active_hours": { - "message": "ක්‍රියාකාරී වේලාවන් සකසන්න" - }, - "set_location": { - "message": "ස්ථානයේ ඉර බැසීමෙන් පසු යොදන්න" - }, - "setup_add_site_hotkey": { - "message": "අඩවි එක් කිරීමට උණුසුම් යතුරක් සකසන්න" - }, - "setup_hotkey_toggle_extension": { - "message": "දිගුව සැකසීමේ\nඋණුසුම් යතුර පිහිටුවන්න" - }, - "setup_hotkey_toggle_site": { - "message": "වත්මන් අඩවියට සැකසීමේ\nඋණුසුම් යතුර පිහිටුවන්න" - }, - "site_list": { - "message": "අඩවි ලේඛනය" - }, - "site_toggle": { - "message": "අඩවියට යෙදීම" - }, - "store_listing": { - "message": "මෙම නේත්‍රාරක්‍ෂණ දිගුව ඉතා ඉක්මනින් වියමන අඩවි සඳහා අඳුරු තේමා සෑදීමෙන් රාත්‍රී ප්‍රකාරය සබල කරයි. Dark Reader ප්‍රභාවත් වර්ණ යටියන කිරිමෙන් ඒවා ඉහළ පිළිසැසඳුමකට ලක් කර රාත්‍රියේ දී කියවීමට පහසු කරයි.\n\nඔබට දීප්තිය, පිළිසැසඳුම, සෙපියා පෙරහන, අඳුරු ප්‍රකාරය, අකුරු සැකසුම් සහ නොසලකා හැරීමේ ලැයිස්තුව පිළියෙල කිරීමට හැකිය.\n\nපරිත්‍යාගයකින් යෙදුමේ සංවර්ධනයට සහාය වන ලෙස අප ඔබගෙන් ඉල්ලා සිටීමට ඉඩ තිබේ. සැකසුම් උත්පතන හරහා Dark Reader පිළිබඳව පුවත් දැක ගැනීමට හැකිවනු ඇත. පළපුරුදු පරිශ්‍රීලකයින් සඳහා සංවර්ධක මෙවලම් ද තිබේ.\n\nDark Reader දැන්වීම් නොපෙන්වන අතර පරිශ්‍රීලකයින්ගේ දත්ත කිසිදු තැනකට යවන්නේ නැත. මුළුමනින්ම විවෘත මූලාශ්‍ර ව්‍යාපෘතියකි https://github.com/darkreader/darkreader\n\nමෙය ස්ථාපනය කිරීමට පෙර මෙබඳු දිගු අබල කරන්න. සතුටින් අත්විඳින්න!" - }, - "support_out_work": { - "message": "අපට සහයෝගය දෙන්න" - }, - "system_dark_mode": { - "message": "පද්ධතියේ වර්ණ භාවිතා කරන්න" - }, - "system_dark_mode_chromium_warning": { - "message": "ඔබගේ අතිරික්සුවේ දෝෂයක් නිසා\nමෙම විකල්යය වැඩ නොකරනු ඇත" - }, - "system_dark_mode_description": { - "message": "පද්ධතියේ අඳුරු ප්‍රකාරය සක්‍රිය විට යොදන්න" - }, - "text_stroke": { - "message": "පෙළ තදබව" - }, - "theme_generation_mode": { - "message": "තේමා උත්පාදන ප්‍රකාරය" - }, - "toggle_current_site": { - "message": "මෙම අඩවියට යොදන්න" - }, - "toggle_extension": { - "message": "දිගුව සකසන්න" - }, - "try_experimental_theme_engines": { - "message": "**පරීක්‍ෂාත්මක** තේමා යන්ත්‍ර අත්හදා බලන්න:\n**පෙරහන+** වර්ණ සන්තෘප්තිය පවත්වා ගනියි, GPU භාවිතා වේ\n**ස්ථිතික තේමාව** සරල වේගවත් තේමාවක් උත්පාදන කරයි\n**ගතික තේමාව** වර්ණ හා රූප විශ්ලේෂණය කරයි" - }, - "version": { - "message": "පිටපත" - }, - "we_celebrate_10_years": { - "message": "Dark Reader වසර 10ක් සමරයි.\nකරුණාකර අපගේ කාර්යයට සහාය වන්න." - }, - "website_toggle_shortcut": { - "message": "අඩවියට යොදන යතුරුපුවරුවේ කෙටිමග" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/sk/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/sk/messages.json deleted file mode 100644 index 8dceebb..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/sk/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Pridať stránku na zoznam" - }, - "all_settings": { - "message": "Všetky nastavenia" - }, - "auto_day_at_location": { - "message": "Auto (deň na mieste)" - }, - "auto_day_time": { - "message": "Auto (denný čas)" - }, - "auto_night_at_location": { - "message": "Auto (noc na mieste)" - }, - "auto_night_time": { - "message": "Auto (nočný čas)" - }, - "auto_system_is_dark": { - "message": "Auto (systém je tmavý)" - }, - "auto_system_is_light": { - "message": "Auto (systém je svetlý)" - }, - "automation": { - "message": "Automatizácia" - }, - "brightness": { - "message": "Jas" - }, - "change_browser_theme": { - "message": "Zmeniť motív prehliadača" - }, - "click_to_set_shortcut": { - "message": "Kliknutím nastavíte skratku" - }, - "configure_automation": { - "message": "Nakonfigurujte automatizáciu" - }, - "configure_site_toggle": { - "message": "Nakonfigurujte prepínanie webových stránok" - }, - "contrast": { - "message": "Kontrast" - }, - "custom_browser_theme_off": { - "message": "Predvolený" - }, - "custom_browser_theme_on": { - "message": "Vlastný" - }, - "dark": { - "message": "Tmavý" - }, - "dark_theme_detected": { - "message": "Bol rozpoznaný tmavý motív" - }, - "detect_dark_theme": { - "message": "Rozpoznajte tmavý motív" - }, - "detect_website_dark_theme": { - "message": "Zistite vlastnú temnú tému webovej stránky" - }, - "donate": { - "message": "Prispejte" - }, - "enable_for_all_sites_by_default": { - "message": "Predvolene povolené pre všetky webové stránky" - }, - "enabled_by_default": { - "message": "Predvolene povolené" - }, - "engine_dynamic": { - "message": "Dynamický" - }, - "engine_filter": { - "message": "Filter" - }, - "engine_filter_plus": { - "message": "Filter+" - }, - "engine_static": { - "message": "Statický" - }, - "extension_description": { - "message": "Tmavý režim pre každú stránku. Šetrite svoje oči a používajte tmavý motív po celý deň." - }, - "extension_toggle_shortcut": { - "message": "Klávesová skratka pre zapnutie/vypnutie rozšírenia" - }, - "filter": { - "message": "Filter" - }, - "grayscale": { - "message": "Odtiene sivej" - }, - "help": { - "message": "Pomocník" - }, - "invert_listed_only": { - "message": "Invertovať len" - }, - "latitude": { - "message": "Zemepisná šírka" - }, - "light": { - "message": "Svetlý" - }, - "loading_please_wait": { - "message": "Načítava sa, čakajte, prosím" - }, - "local_files_forbidden": { - "message": "Prístup nie je povolený\nlokálne súbory" - }, - "longitude": { - "message": "Zemepisná dĺžka" - }, - "mobile_link": { - "message": "K dispozícii je mobilná temná čítačka. Uč sa viac" - }, - "mode": { - "message": "Režim" - }, - "more": { - "message": "Viac" - }, - "news": { - "message": "Novinky" - }, - "not_invert_listed": { - "message": "Neinvertovať" - }, - "off": { - "message": "Vyp." - }, - "on": { - "message": "Zap." - }, - "only_for": { - "message": "Len pre" - }, - "only_for_description": { - "message": "Použiť nastavenia len pre aktuálnu stránku" - }, - "open_dev_tools": { - "message": "Vývojárske nástroje" - }, - "page_in_dark_list": { - "message": "Táto stránka má\nvlastný tmavý režim" - }, - "page_protected": { - "message": "Táto stránka je nedostupná\npre toto rozlíšenie" - }, - "pay_for_using": { - "message": "Zaplaťte za používanie Dark Reader" - }, - "privacy": { - "message": "Súkromie" - }, - "read_more": { - "message": "Viac informácií" - }, - "select_font": { - "message": "Vybrať písmo" - }, - "sepia": { - "message": "Sépia" - }, - "set_active_hours": { - "message": "Nastaviť čas používania" - }, - "set_location": { - "message": "Aktivovať po západe slnka podľa polohy" - }, - "setup_add_site_hotkey": { - "message": "Nastaviť klávesovú skratku pre pridanie stránky" - }, - "setup_hotkey_toggle_extension": { - "message": "Nastaviť klávesovú skratku\npre prepnutie rozšírenia" - }, - "setup_hotkey_toggle_site": { - "message": "Nastaviť klávesovú skratku\npre prepnutie aktuálnej stránky" - }, - "site_list": { - "message": "Zoznam stránok" - }, - "site_toggle": { - "message": "Prepínanie stránok" - }, - "store_listing": { - "message": "Toto rozšírenie je šetrné k očiam, vytvára nočný režim pre stránky za pochodu. Dark Reader invertuje jasné farby a robí ich kontrastnejšími, čím sa zlepšuje ich čitateľnosť v noci.\n\nUpravovať môžete jas, kontrast, sépiový filter, tmavý režim, nastavenia písma a zoznam ignorovaných stránok.\n\nMôžeme vás požiadať, aby ste podporili vývoj aplikácie darom. Novinky o Dark Reader môžete vidieť vo vyskakovacom okne nastavení. Pre skúsených používateľov existujú nástroje pre vývojárov.\n\nDark Reader je bez reklám a nikam neodosiela žiadne dáta užívateľov. Má plne otvorený zdrojový kód https://github.com/darkreader/darkreader\n\nPred inštaláciou zakážte podobné rozšírenia. Užite si sledovanie!" - }, - "support_out_work": { - "message": "Podporte našu prácu" - }, - "system_dark_mode": { - "message": "Použiť farebnú schému systému" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "Aktivovať pri zapnutom systémovom tmavom režime" - }, - "text_stroke": { - "message": "Obrys písma" - }, - "theme_generation_mode": { - "message": "Generované motívy" - }, - "toggle_current_site": { - "message": "Prepnúť aktuálnu stránku" - }, - "toggle_extension": { - "message": "Zap./Vyp. rozšírenie" - }, - "try_experimental_theme_engines": { - "message": "Vyskúšajte **experimenálne** motívy:\n**Filter+** zachováva sýtosť farieb, využíva GPU\n**Statický motív** generuje jednoduchý a rýchly motív\n**Dynamický motív** analyzuje farby a obrázky" - }, - "version": { - "message": "Verzia" - }, - "we_celebrate_10_years": { - "message": "Dark Reader oslavuje 10 rokov.\nPodporte prosím našu prácu." - }, - "website_toggle_shortcut": { - "message": "Klávesová skratka na prepínanie webových stránok" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/sr/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/sr/messages.json deleted file mode 100644 index 0729343..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/sr/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Dodajte sajt na listu" - }, - "all_settings": { - "message": "Сва подешавања" - }, - "auto_day_at_location": { - "message": "Ауто (дан на локацији)" - }, - "auto_day_time": { - "message": "Аутоматски (дневно време)" - }, - "auto_night_at_location": { - "message": "Ауто (ноћ на локацији)" - }, - "auto_night_time": { - "message": "аутоматски (ноћно време)" - }, - "auto_system_is_dark": { - "message": "Аутоматски (систем је таман)" - }, - "auto_system_is_light": { - "message": "Аутоматски (систем је лаган)" - }, - "automation": { - "message": "Automatizacija" - }, - "brightness": { - "message": "Osvetljenje" - }, - "change_browser_theme": { - "message": "Promenite temu pregledača" - }, - "click_to_set_shortcut": { - "message": "Кликните да бисте поставили пречицу" - }, - "configure_automation": { - "message": "Конфигуришите аутоматизацију" - }, - "configure_site_toggle": { - "message": "Конфигуришите пребацивање веб локације" - }, - "contrast": { - "message": "Kontrast" - }, - "custom_browser_theme_off": { - "message": "Difolt" - }, - "custom_browser_theme_on": { - "message": "Podešena" - }, - "dark": { - "message": "Tamni" - }, - "dark_theme_detected": { - "message": "Откривена је тамна тема" - }, - "detect_dark_theme": { - "message": "Откријте тамну тему" - }, - "detect_website_dark_theme": { - "message": "Откријте сопствену мрачну тему веб локације" - }, - "donate": { - "message": "Donirajte" - }, - "enable_for_all_sites_by_default": { - "message": "Подразумевано омогућено за све веб локације" - }, - "enabled_by_default": { - "message": "Подразумевано омогућено" - }, - "engine_dynamic": { - "message": "Dinamično" - }, - "engine_filter": { - "message": "Filter" - }, - "engine_filter_plus": { - "message": "Filter+" - }, - "engine_static": { - "message": "Statično" - }, - "extension_description": { - "message": "Tamni mod za svaki sajt. Pazite na svoje oči, koristite tamnu temu danju i noću." - }, - "extension_toggle_shortcut": { - "message": "Пречица за укључивање/искључивање проширења" - }, - "filter": { - "message": "Filter" - }, - "grayscale": { - "message": "Sivi mod" - }, - "help": { - "message": "Pomoć" - }, - "invert_listed_only": { - "message": "Invertujte izlistane" - }, - "latitude": { - "message": "Geogr. širina" - }, - "light": { - "message": "Svetli" - }, - "loading_please_wait": { - "message": "Učitavanje, molimo sačekajte" - }, - "local_files_forbidden": { - "message": "Nije dozvoljen pristup\nlokalne datoteke" - }, - "longitude": { - "message": "Geogr. dužina" - }, - "mobile_link": { - "message": "Мобилни Дарк Реадер је доступан. Сазнајте више" - }, - "mode": { - "message": "Mod" - }, - "more": { - "message": "Više" - }, - "news": { - "message": "Vesti" - }, - "not_invert_listed": { - "message": "Ne invertujte izlistane" - }, - "off": { - "message": "Isklj." - }, - "on": { - "message": "Uklj." - }, - "only_for": { - "message": "Samo za" - }, - "only_for_description": { - "message": "Primenite podešavanja samo za trenutni sajt" - }, - "open_dev_tools": { - "message": "Alatke za razvoj" - }, - "page_in_dark_list": { - "message": "Ovaj sajt je u globalnoj\nlisti tamnih sajtova" - }, - "page_protected": { - "message": "Ovu stranicu štiti\nveb pregledač" - }, - "pay_for_using": { - "message": "Platite za korišćenje Dark Reader-a" - }, - "privacy": { - "message": "Privatnost" - }, - "read_more": { - "message": "Čitajte više" - }, - "select_font": { - "message": "Izaberite font" - }, - "sepia": { - "message": "Sepija" - }, - "set_active_hours": { - "message": "Podesite aktivne sate" - }, - "set_location": { - "message": "Aktivirajte po zalasku sunca" - }, - "setup_add_site_hotkey": { - "message": "Podesite dugme za dodavanje sajta" - }, - "setup_hotkey_toggle_extension": { - "message": "Podesite ekstenziju\nuklj. dugme" - }, - "setup_hotkey_toggle_site": { - "message": "Podesite trenutni sajt\nuklj. dugme" - }, - "site_list": { - "message": "Lista sajtova" - }, - "site_toggle": { - "message": "Site Toggling" - }, - "store_listing": { - "message": "Ova ekstenzija brine o vašim očima tako što omogućava tamnu temu za sajtove. Dark Reader invertuje svetle boje i pojačava kontrast, što omogućava lakše čitanje noću.\n\nMožete podesiti osvetljenje, kontrast, sepija filter, tamni mod, font i listu ignorisanih sajtova.\n\nMožemo vas zamoliti da podržite razvoj aplikacije donacijom. Možda ćete videti vesti o Dark Reader-u u iskačućem prozoru za podešavanja. Postoje alatke za programere za iskusne korisnike.\n\nDark Reader ne prikazuje reklame i nigde ne šalje podatke korisnika. Kod ekstenzije je u potpunosti otvoren: https://github.com/darkreader/darkreader\n\nPre instalacije, isključite druge slične ekstenzije. Uživajte!" - }, - "support_out_work": { - "message": "Подржите наш рад" - }, - "system_dark_mode": { - "message": "Koristite temu sistema" - }, - "system_dark_mode_chromium_warning": { - "message": "Ova opcija možda neće raditi zbog greške\nu vašem pregledaču" - }, - "system_dark_mode_description": { - "message": "Aktivacija kada sistem koristi tamni mod" - }, - "text_stroke": { - "message": "Debljina teksta" - }, - "theme_generation_mode": { - "message": "Mod generacije tema" - }, - "toggle_current_site": { - "message": "Uklj. trenutni sajt" - }, - "toggle_extension": { - "message": "Uklj. ekstenziju" - }, - "try_experimental_theme_engines": { - "message": "Probajte **eksperimentalne** teme:\n**Filter+** čuva saturaciju boja, koristi GPU\n**Statična tema** kreira prostu brzu temu\n**Dinamična tema** analizira boje i slike" - }, - "version": { - "message": "Верзија" - }, - "we_celebrate_10_years": { - "message": "Dark Reader slavi 10 godina.\nMolimo vas da podržite naš rad." - }, - "website_toggle_shortcut": { - "message": "Пречица на тастатури за пребацивање веб локације" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/sv/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/sv/messages.json deleted file mode 100644 index 96d14c5..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/sv/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Lägg till webbplats i listan" - }, - "all_settings": { - "message": "Alla inställningar" - }, - "auto_day_at_location": { - "message": "Auto (dag på plats)" - }, - "auto_day_time": { - "message": "Auto (dagtid)" - }, - "auto_night_at_location": { - "message": "Auto (natt på plats)" - }, - "auto_night_time": { - "message": "Auto (nattetid)" - }, - "auto_system_is_dark": { - "message": "Auto (systemet är mörkt)" - }, - "auto_system_is_light": { - "message": "Auto (systemet är lätt)" - }, - "automation": { - "message": "Automatisering" - }, - "brightness": { - "message": "Ljusstyrka" - }, - "change_browser_theme": { - "message": "Ändra webbläsarens tema" - }, - "click_to_set_shortcut": { - "message": "Klicka för att ställa in genvägen" - }, - "configure_automation": { - "message": "Konfigurera automatisering" - }, - "configure_site_toggle": { - "message": "Konfigurera webbplatsväxling" - }, - "contrast": { - "message": "Kontrast" - }, - "custom_browser_theme_off": { - "message": "Standard" - }, - "custom_browser_theme_on": { - "message": "Anpassad" - }, - "dark": { - "message": "Mörkt" - }, - "dark_theme_detected": { - "message": "Mörkt tema upptäcktes" - }, - "detect_dark_theme": { - "message": "Upptäck mörkt tema" - }, - "detect_website_dark_theme": { - "message": "Upptäck webbplatsens eget mörka tema" - }, - "donate": { - "message": "Donera" - }, - "enable_for_all_sites_by_default": { - "message": "Aktiverat för alla webbplatser som standard" - }, - "enabled_by_default": { - "message": "Aktiverad som standard" - }, - "engine_dynamic": { - "message": "Dynamisk" - }, - "engine_filter": { - "message": "Filter" - }, - "engine_filter_plus": { - "message": "Filter+" - }, - "engine_static": { - "message": "Statisk" - }, - "extension_description": { - "message": "Mörkt läge på alla webbplatser. Ta hand om dina ögon och använd ett mörkt tema för att surfa på natten och dagen." - }, - "extension_toggle_shortcut": { - "message": "Förlängning på/av kortkommandon" - }, - "filter": { - "message": "Filter" - }, - "grayscale": { - "message": "Gråskala" - }, - "help": { - "message": "Hjälp" - }, - "invert_listed_only": { - "message": "Invertera endast" - }, - "latitude": { - "message": "Latitud" - }, - "light": { - "message": "Ljust" - }, - "loading_please_wait": { - "message": "Laddar, var god vänta" - }, - "local_files_forbidden": { - "message": "Inte tillåtet att komma\nåt lokala filer" - }, - "longitude": { - "message": "Longitud" - }, - "mobile_link": { - "message": "Mobile Dark Reader är tillgänglig. Läs mer" - }, - "mode": { - "message": "Läge" - }, - "more": { - "message": "Mer" - }, - "news": { - "message": "Nyheter" - }, - "not_invert_listed": { - "message": "Invertera inte" - }, - "off": { - "message": "Av" - }, - "on": { - "message": "På" - }, - "only_for": { - "message": "Endast för" - }, - "only_for_description": { - "message": "Använd inställningarna bara för aktuell webbplats" - }, - "open_dev_tools": { - "message": "Verktyg" - }, - "page_in_dark_list": { - "message": "Den här webbplatsen finns\ni den globala listan" - }, - "page_protected": { - "message": "Den här webbplatsen\nskyddas av webbläsaren" - }, - "pay_for_using": { - "message": "Betala för att använda Dark Reader" - }, - "privacy": { - "message": "Integritet" - }, - "read_more": { - "message": "Läs mer" - }, - "select_font": { - "message": "Välj ett typsnitt" - }, - "sepia": { - "message": "Sepia" - }, - "set_active_hours": { - "message": "Ange aktiva timmar" - }, - "set_location": { - "message": "Aktivera vid solnedgång vid position" - }, - "setup_add_site_hotkey": { - "message": "Ange kortkommando för att lägga till webbplatser" - }, - "setup_hotkey_toggle_extension": { - "message": "Konfigurera tillägg\nslå på/av kortkommando" - }, - "setup_hotkey_toggle_site": { - "message": "Konfigurera aktuell webbplats\nslå på/av kortkommando" - }, - "site_list": { - "message": "Webbplatslista" - }, - "site_toggle": { - "message": "Webbplatsväxling" - }, - "store_listing": { - "message": "Detta ögonskonande tillägg aktiverar ett nattläge som skapar mörka teman på webbplatser. Dark Reader inverterar ljusa färger för att skapa hög kontrast och göra det enkelt att läsa på natten.\n\nDu kan justera ljusstyrkan, kontrasten, sepiafiltret, mörkerläget, typsnittet och ignoreringslistan.\n\nVi kan be dig att stödja utvecklingen av appen med en donation. Du kan se nyheter om Dark Reader i popup-fönstret för inställningar. Det finns utvecklarverktyg för erfarna användare.\n\nDark Reader visar inte reklam och skickar inte användardata någonstans. Den har helt öppen källkod https://github.com/darkreader/darkreader\n\nInaktivera liknande tillägg innan du installerar. Trevlig läsning!" - }, - "support_out_work": { - "message": "Stöd vårt arbete" - }, - "system_dark_mode": { - "message": "Använd systemets färgschema" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "Aktivera när systemets mörka läge är på" - }, - "text_stroke": { - "message": "Textkontur" - }, - "theme_generation_mode": { - "message": "Genereringsläge för tema" - }, - "toggle_current_site": { - "message": "Slå på/av denna webbplats" - }, - "toggle_extension": { - "message": "Slå på/av tillägg" - }, - "try_experimental_theme_engines": { - "message": "Testa **experimentella** temamotorer:\n**Filter+** bevarar färgmättnaden, använder grafikprocessorn\n**Statiskt tema** genererar ett snabbt och enkelt tema\n**Dynamiskt tema** analyserar färger och bilder" - }, - "version": { - "message": "Version" - }, - "we_celebrate_10_years": { - "message": "Dark Reader firar 10 år.\nStöd gärna vårt arbete." - }, - "website_toggle_shortcut": { - "message": "Webbplats växlar kortkommandon" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/te/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/te/messages.json deleted file mode 100644 index fc6c429..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/te/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "జాబితాకు సైట్‌ను జోడించండి" - }, - "all_settings": { - "message": "అన్ని సెట్టింగ్‌లు" - }, - "auto_day_at_location": { - "message": "ఆటో (స్థానంలో రోజు)" - }, - "auto_day_time": { - "message": "ఆటో (రోజు సమయం)" - }, - "auto_night_at_location": { - "message": "ఆటో (స్థానంలో రాత్రి)" - }, - "auto_night_time": { - "message": "ఆటో (రాత్రి సమయం)" - }, - "auto_system_is_dark": { - "message": "ఆటో (సిస్టమ్ చీకటిగా ఉంది)" - }, - "auto_system_is_light": { - "message": "ఆటో (సిస్టమ్ తేలికైనది)" - }, - "automation": { - "message": "స్వయంచాలకంగా పూర్తయింది" - }, - "brightness": { - "message": "ఎంత కాంతి" - }, - "change_browser_theme": { - "message": "బ్రౌజర్ థీమ్‌ను మార్చండి" - }, - "click_to_set_shortcut": { - "message": "సత్వరమార్గాన్ని సెట్ చేయడానికి క్లిక్ చేయండి" - }, - "configure_automation": { - "message": "ఆటోమేషన్‌ను కాన్ఫిగర్ చేయండి" - }, - "configure_site_toggle": { - "message": "వెబ్‌సైట్ టోగులింగ్‌ని కాన్ఫిగర్ చేయండి" - }, - "contrast": { - "message": "విరుద్ధంగా" - }, - "custom_browser_theme_off": { - "message": "డిఫాల్ట్" - }, - "custom_browser_theme_on": { - "message": "ఆచారం" - }, - "dark": { - "message": "నలుపు" - }, - "dark_theme_detected": { - "message": "ముదురు రంగు థీమ్ కనుగొనబడింది" - }, - "detect_dark_theme": { - "message": "చీకటి థీమ్‌ను గుర్తించండి" - }, - "detect_website_dark_theme": { - "message": "వెబ్‌సైట్ స్వంత డార్క్ థీమ్‌ను గుర్తించండి" - }, - "donate": { - "message": "దయచేసి దానం చేయండి" - }, - "enable_for_all_sites_by_default": { - "message": "డిఫాల్ట్‌గా అన్ని వెబ్‌సైట్‌ల కోసం ప్రారంభించబడింది" - }, - "enabled_by_default": { - "message": "డిఫాల్ట్‌గా ప్రారంభించబడింది" - }, - "engine_dynamic": { - "message": "చురుకుగా" - }, - "engine_filter": { - "message": "ఫిల్టర్" - }, - "engine_filter_plus": { - "message": "ఫిల్టర్+" - }, - "engine_static": { - "message": "స్థిరమైన" - }, - "extension_description": { - "message": "ప్రతి వెబ్‌సైట్‌కి ముదురు థీమ్. మీ కళ్లను కాపాడుకోండి, రాత్రి మరియు పగలు బ్రౌజింగ్ట్‌కి ముదురు థీమ్ ఉపయోగించండి." - }, - "extension_toggle_shortcut": { - "message": "పొడిగింపు ఆన్/ఆఫ్ కీబోర్డ్ సత్వరమార్గం" - }, - "filter": { - "message": "ఫిల్టర్" - }, - "grayscale": { - "message": "గ్రేస్కేల్" - }, - "help": { - "message": "సహాయం" - }, - "invert_listed_only": { - "message": "విలోమ జాబితా మాత్రమే" - }, - "latitude": { - "message": "అక్షాంశం" - }, - "light": { - "message": "కాంతి" - }, - "loading_please_wait": { - "message": "దయచేసి వేచి ఉండండి..." - }, - "local_files_forbidden": { - "message": "యాక్సెస్ చేయడానికి అనుమతి\nలేదు స్థానిక ఫైళ్లు" - }, - "longitude": { - "message": "రేఖాంశం" - }, - "mobile_link": { - "message": "మొబైల్ డార్క్ రీడర్ అందుబాటులో ఉంది. ఇంకా నేర్చుకో" - }, - "mode": { - "message": "మోడ్" - }, - "more": { - "message": "మరింత" - }, - "news": { - "message": "వార్తలు" - }, - "not_invert_listed": { - "message": "విలోమ జాబితా కాదు" - }, - "off": { - "message": "ఆపండి" - }, - "on": { - "message": "ఆన్" - }, - "only_for": { - "message": "దీని కోసం మాత్రమే" - }, - "only_for_description": { - "message": "ప్రస్తుత సైట్ కోసం మాత్రమే ఎంపికలను వర్తించండి" - }, - "open_dev_tools": { - "message": "ఓపెన్ దేవ్ టూల్స్" - }, - "page_in_dark_list": { - "message": "ఈ పేజీ\nచీకటి థీమ్ జాబితాలో ఉంది" - }, - "page_protected": { - "message": "ఈ పేజీ\nబ్రౌజర్ ద్వారా రక్షించబడింది" - }, - "pay_for_using": { - "message": "డార్క్ రీడర్‌ని ఉపయోగించడం కోసం చెల్లించండి" - }, - "privacy": { - "message": "గోప్యత" - }, - "read_more": { - "message": "ఇంకా చదవండి" - }, - "select_font": { - "message": "ఫాంట్ ఎంచుకోండి" - }, - "sepia": { - "message": "సెపియా" - }, - "set_active_hours": { - "message": "మేల్కొనే గంటలను మార్చండి" - }, - "set_location": { - "message": "సూర్యాస్తమయం వద్ద ప్రారంభించండి" - }, - "setup_add_site_hotkey": { - "message": "సైట్‌ను జోడించడానికి హాట్‌కీని సెటప్ చేయండి" - }, - "setup_hotkey_toggle_extension": { - "message": "పొడిగింపు సెట్టింగులు\nహాట్‌కీని ప్రారంభించండి" - }, - "setup_hotkey_toggle_site": { - "message": "సైట్ మార్చడానికి పొడిగింపు సెటప్\nహాట్‌కీని ప్రారంభించండి" - }, - "site_list": { - "message": "సైట్ జాబితా" - }, - "site_toggle": { - "message": "సైట్ టోగుల్ చేస్తోంది" - }, - "store_listing": { - "message": "ఈ కంటి-సంరక్షణ పొడిగింపు ఫ్లైలో వెబ్‌సైట్ల కోసం చీకటి ఇతివృత్తాలను సృష్టించడం ద్వారా నైట్ మోడ్‌ను అనుమతిస్తుంది. డార్క్ రీడర్ ప్రకాశవంతమైన రంగులను విలోమం చేస్తుంది, అవి అధిక విరుద్ధంగా మరియు రాత్రి చదవడం సులభం చేస్తాడు.\n\nమీరు ప్రకాశం, కాంట్రాస్ట్, సెపియా ఫిల్టర్, డార్క్ మోడ్, ఫాంట్ సెట్టింగులు మరియు విస్మరించే-జాబితాను సర్దుబాటు చేయవచ్చు.\n\nమేము విరాళంతో యాప్ అభివృద్ధికి మద్దతు ఇవ్వమని మిమ్మల్ని అడగవచ్చు. మీరు సెట్టింగ్‌ల పాప్‌అప్‌లో డార్క్ రీడర్ గురించిన వార్తలను చూడవచ్చు. అనుభవజ్ఞులైన వినియోగదారుల కోసం డెవలపర్ సాధనాలు ఉన్నాయి.\n\nడార్క్ రీడర్ ప్రకటనలను చూపించదు మరియు వినియోగదారుల డేటాను ఎక్కడా పంపదు. ఇది పూర్తిగా ఓపెన్-సోర్స్: https://github.com/darkreader/darkreader\n\nమీరు దీన్ని ఇన్‌స్టాల్ చేయడానికి ముందు, ఇలాంటి పొడిగింపులను నిలిపివేయండి. చూడటం ఆనందించండి!" - }, - "support_out_work": { - "message": "మా పనికి మద్దతు ఇవ్వండి" - }, - "system_dark_mode": { - "message": "సిస్టమ్ కలర్ స్కీమ్‌ను ఉపయోగించండి" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "సిస్టమ్ కలర్ స్కీమ్ ఎనేబుల్ లో ఉంది" - }, - "text_stroke": { - "message": "టెక్స్ట్ స్ట్రోక్" - }, - "theme_generation_mode": { - "message": "థీమ్ యొక్క మోడ్‌ను మార్చండి" - }, - "toggle_current_site": { - "message": "సైట్ కోసం సక్రియం చేయండి" - }, - "toggle_extension": { - "message": "పొడిగింపును ప్రారంభించండి" - }, - "try_experimental_theme_engines": { - "message": "ప్రయత్నించండి ** ప్రయోగాత్మక ** థీమ్ ఇంజన్లు:\n** ఫిల్టర్+** రంగుల సంతృప్తతను సంరక్షిస్తుంది, GPU ని ఉపయోగిస్తుంది\n** స్టాటిక్ థీమ్ ** సరళమైన వేగవంతమైన థీమ్‌ను ఉత్పత్తి చేస్తుంది\n** డైనమిక్ థీమ్ ** రంగులు మరియు చిత్రాలను విశ్లేషిస్తుంది" - }, - "version": { - "message": "సంస్కరణ: Telugu" - }, - "we_celebrate_10_years": { - "message": "డార్క్ రీడర్ 10 సంవత్సరాలు జరుపుకుంటుంది.\nదయచేసి మా పనికి మద్దతు ఇవ్వండి." - }, - "website_toggle_shortcut": { - "message": "వెబ్‌సైట్ టోగుల్ కీబోర్డ్ సత్వరమార్గం" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/th/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/th/messages.json deleted file mode 100644 index 1bcda4f..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/th/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "เพิ่มเว็บลงในรายการ" - }, - "all_settings": { - "message": "การตั้งค่าทั้งหมด" - }, - "auto_day_at_location": { - "message": "อัตโนมัติ (วันที่สถานที่)" - }, - "auto_day_time": { - "message": "อัตโนมัติ (เวลากลางวัน)" - }, - "auto_night_at_location": { - "message": "อัตโนมัติ (คืนที่สถานที่)" - }, - "auto_night_time": { - "message": "อัตโนมัติ (เวลากลางคืน)" - }, - "auto_system_is_dark": { - "message": "อัตโนมัติ (ระบบมืด)" - }, - "auto_system_is_light": { - "message": "อัตโนมัติ (ระบบเบา)" - }, - "automation": { - "message": "การทำงานอัตโนมัติ" - }, - "brightness": { - "message": "ความสว่าง" - }, - "change_browser_theme": { - "message": "เปลี่ยนธีมชองเบราเซอร์" - }, - "click_to_set_shortcut": { - "message": "คลิกเพื่อตั้งค่าทางลัด" - }, - "configure_automation": { - "message": "กำหนดค่าการทำงานอัตโนมัติ" - }, - "configure_site_toggle": { - "message": "กำหนดค่าการสลับเว็บไซต์" - }, - "contrast": { - "message": "คอนทราสต์" - }, - "custom_browser_theme_off": { - "message": "ค่าเริ่มต้น" - }, - "custom_browser_theme_on": { - "message": "ปรับเอง" - }, - "dark": { - "message": "มืด" - }, - "dark_theme_detected": { - "message": "ตรวจพบธีมมืด" - }, - "detect_dark_theme": { - "message": "ตรวจหาธีมมืด" - }, - "detect_website_dark_theme": { - "message": "ตรวจหาธีมมืดของเว็บไซต์" - }, - "donate": { - "message": "สนับสนุน" - }, - "enable_for_all_sites_by_default": { - "message": "เปิดใช้งานสำหรับทุกเว็บไซต์ตามค่าเริ่มต้น" - }, - "enabled_by_default": { - "message": "เปิดใช้งานโดยค่าเริ่มต้น" - }, - "engine_dynamic": { - "message": "ไดนามิค" - }, - "engine_filter": { - "message": "ฟิลเตอร์" - }, - "engine_filter_plus": { - "message": "ฟิลเตอร์+" - }, - "engine_static": { - "message": "คงที่" - }, - "extension_description": { - "message": "เปลี่ยนเป็นโหมดมืดให้กับทุกๆเว็บเพื่อปกป้องสายตาของคุณ ใช้ธีมสีมืดสำหรับตอนกลางคืนและการท่องเว็บในชีวิตประจำวัน" - }, - "extension_toggle_shortcut": { - "message": "แป้นพิมพ์ลัดส่วนขยายเปิด/ปิด" - }, - "filter": { - "message": "ฟิลเตอร์" - }, - "grayscale": { - "message": "สีเทา" - }, - "help": { - "message": "ช่วยเหลือ" - }, - "invert_listed_only": { - "message": "เว็บที่จะสลับสี" - }, - "latitude": { - "message": "ละติจูด" - }, - "light": { - "message": "สว่าง" - }, - "loading_please_wait": { - "message": "กำลังโหลด กรุณารอสักครู่" - }, - "local_files_forbidden": { - "message": "ไม่อนุญาตให้เข้าถึง\nไฟล์ในเครื่อง" - }, - "longitude": { - "message": "ลองจิจูด" - }, - "mobile_link": { - "message": "Mobile Dark Reader พร้อมใช้งานแล้ว เรียนรู้เพิ่มเติม" - }, - "mode": { - "message": "โหมด" - }, - "more": { - "message": "อื่นๆ" - }, - "news": { - "message": "ข่าว" - }, - "not_invert_listed": { - "message": "เว็บที่ไม่อยากสลับสี" - }, - "off": { - "message": "ปิด" - }, - "on": { - "message": "เปิด" - }, - "only_for": { - "message": "เฉพาะสำหรับ" - }, - "only_for_description": { - "message": "ใช้การตั้งค่ากับเว็บปัจจุบันเท่านั้น" - }, - "open_dev_tools": { - "message": "เครื่องมือนักพัฒนา" - }, - "page_in_dark_list": { - "message": "เว็บนี้อยู่ในรายชื่อ\nที่มีธีมมืดให้ใช้" - }, - "page_protected": { - "message": "หน้านี้ถูกป้องกัน\nโดยเว็บเบราเซอร์" - }, - "pay_for_using": { - "message": "ชำระค่าใช้ Dark Reader" - }, - "privacy": { - "message": "ความเป็นส่วนตัว" - }, - "read_more": { - "message": "อ่านเพิ่มเติม" - }, - "select_font": { - "message": "เลือกฟอนต์" - }, - "sepia": { - "message": "สีซีเปีย" - }, - "set_active_hours": { - "message": "ตั้งเวลาที่เริ่มทำงาน" - }, - "set_location": { - "message": "เปิดใช้งานหลังจากพระอาทิตย์ตกดินที่สถานที่" - }, - "setup_add_site_hotkey": { - "message": "ตั้งค่าคีย์ลัดเพื่อเพิ่มเว็บ" - }, - "setup_hotkey_toggle_extension": { - "message": "ตั้งค่าคีย์ลัดสำหรับ\nสลับโหมดเปิด-ปิด" - }, - "setup_hotkey_toggle_site": { - "message": "ตั้งค่าคีย์ลัดสำหรับ\nสลับโหมดเว็บนี้" - }, - "site_list": { - "message": "รายชื่อเว็บ" - }, - "site_toggle": { - "message": "การสลับไซต์" - }, - "store_listing": { - "message": "นี้เป็นส่วนเสริมที่คอยดูแลสายตาของคุณด้วยการเปิดโหมดกลางคืน และสร้างธีมมืดให้กับทุกๆเว็บ Dark Reader จะสลับสีสว่างๆให้เป็นสีดำหรือสีมืด และทำให้ง่ายต่อการอ่านตอนกลางคืน\n\nคุณสามารถปรับแต่งความสว่าง, คอนทราสต์, สีซีเปีย, โหมดมืด, ตั้งค่าฟอนต์ และทำรายการยกเว้นได้\n\nเราอาจขอให้คุณสนับสนุนการพัฒนาแอพด้วยการบริจาค คุณอาจเห็นข่าวเกี่ยวกับ Dark Reader ในป๊อปอัปการตั้งค่า มีเครื่องมือสำหรับนักพัฒนาสำหรับผู้ใช้ที่มีประสบการณ์\n\nDark Reader ไม่แสดงโฆษณา และไม่ส่งข้อมูลของผู้ใช้เด็ดขาด ตัวส่วนเสริมเป็นโอเพนซอร์สโดยสมบูรณ์ดูได้ที่ https://github.com/darkreader/darkreader\n\nก่อนที่จะติดตั้ง ปิดส่วนเสริมที่ทำหน้าที่เหมือนๆกันก่อนนะ ขอให้สนุกกับธีมสีมืดนะ!" - }, - "support_out_work": { - "message": "สนับสนุนผลงานของเรา" - }, - "system_dark_mode": { - "message": "ใช้โทนสีระบบ" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "เปิดใช้งานเมื่อระบบโหมดมืดอยู่บน" - }, - "text_stroke": { - "message": "ขอบตัวหนังสือ" - }, - "theme_generation_mode": { - "message": "โหมดการสร้างธีม" - }, - "toggle_current_site": { - "message": "สลับโหมดในเว็บนี้" - }, - "toggle_extension": { - "message": "สลับโหมดเปิด-ปิด" - }, - "try_experimental_theme_engines": { - "message": "ลองใช้ธีมที่**อยู่ในระหว่างพัฒนา**:\n**ฟิลเตอร์+** เพิ่มความเข้มของสี มีการใช้ GPU\n**ธีมแบบคงที่** สร้างธีมสีได้ง่ายและรวดเร็ว\n**ธีมแบบไดนามิค** วิเคราะห์สีและภาพ" - }, - "version": { - "message": "เวอร์ชัน" - }, - "we_celebrate_10_years": { - "message": "Dark Reader ฉลองครบรอบ 10 ปี\nกรุณาสนับสนุนการทำงานของเรา" - }, - "website_toggle_shortcut": { - "message": "แป้นพิมพ์ลัดสลับเว็บไซต์" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/tr/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/tr/messages.json deleted file mode 100644 index d8cc765..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/tr/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Siteyi listeye ekle" - }, - "all_settings": { - "message": "Tüm ayarlar" - }, - "auto_day_at_location": { - "message": "Otomatik (konumda gündüz)" - }, - "auto_day_time": { - "message": "Otomatik (gündüz)" - }, - "auto_night_at_location": { - "message": "Otomatik (konumda gece)" - }, - "auto_night_time": { - "message": "Otomatik (gece)" - }, - "auto_system_is_dark": { - "message": "Otomatik (sistem koyu)" - }, - "auto_system_is_light": { - "message": "Otomatik (sistem açık)" - }, - "automation": { - "message": "Otomasyon" - }, - "brightness": { - "message": "Parlaklık" - }, - "change_browser_theme": { - "message": "Tarayıcı temasını değiştir" - }, - "click_to_set_shortcut": { - "message": "Kısayolu ayarlamak için tıkla" - }, - "configure_automation": { - "message": "Otomasyonu yapılandır" - }, - "configure_site_toggle": { - "message": "Web sitesini aç/kapat yapılandır" - }, - "contrast": { - "message": "Kontrast" - }, - "custom_browser_theme_off": { - "message": "Varsayılan" - }, - "custom_browser_theme_on": { - "message": "Özel" - }, - "dark": { - "message": "Koyu" - }, - "dark_theme_detected": { - "message": "Koyu tema algılandı" - }, - "detect_dark_theme": { - "message": "Koyu temayı algıla" - }, - "detect_website_dark_theme": { - "message": "Web sitesinin koyu temasını algıla" - }, - "donate": { - "message": "Bağış yap" - }, - "enable_for_all_sites_by_default": { - "message": "Varsayılan olarak tüm web siteleri için etkindir" - }, - "enabled_by_default": { - "message": "Varsayılan Olarak Etkin" - }, - "engine_dynamic": { - "message": "Dinamik" - }, - "engine_filter": { - "message": "Filtre" - }, - "engine_filter_plus": { - "message": "Filtre+" - }, - "engine_static": { - "message": "Statik" - }, - "extension_description": { - "message": "Her web sitesi için koyu mod. Gözlerinize iyi bakın, gece ve günlük gezinti için koyu renk tema kullanın." - }, - "extension_toggle_shortcut": { - "message": "Uzantıyı aç/kapat klavye kısayolu" - }, - "filter": { - "message": "Filtre" - }, - "grayscale": { - "message": "Gri ton" - }, - "help": { - "message": "Yardım" - }, - "invert_listed_only": { - "message": "Sadece listedekiler" - }, - "latitude": { - "message": "Enlem" - }, - "light": { - "message": "Açık" - }, - "loading_please_wait": { - "message": "Yükleniyor, lütfen bekleyin" - }, - "local_files_forbidden": { - "message": "Yerel dosyalara erişime\nizin verilmiyor" - }, - "longitude": { - "message": "Boylam" - }, - "mobile_link": { - "message": "Mobil Karanlık Okuyucu mevcuttur. Daha fazla bilgi edin" - }, - "mode": { - "message": "Mod" - }, - "more": { - "message": "Daha fazla" - }, - "news": { - "message": "Haberler" - }, - "not_invert_listed": { - "message": "Hariç tutulanlar" - }, - "off": { - "message": "Kapalı" - }, - "on": { - "message": "Açık" - }, - "only_for": { - "message": "Sadece:" - }, - "only_for_description": { - "message": "Ayarları sadece şu anki site için uygula" - }, - "open_dev_tools": { - "message": "Geliş. araçları" - }, - "page_in_dark_list": { - "message": "Bu site genel\nKoyu Listesinde" - }, - "page_protected": { - "message": "Bu sayfa tarayıcı\ntarafından korunuyor" - }, - "pay_for_using": { - "message": "Dark Reader'ı kullanmak için ödeme yapın" - }, - "privacy": { - "message": "Gizlilik" - }, - "read_more": { - "message": "Daha fazla oku" - }, - "select_font": { - "message": "Yazı tipi seç" - }, - "sepia": { - "message": "Sepya" - }, - "set_active_hours": { - "message": "Etkin saatleri ayarla" - }, - "set_location": { - "message": "Güneş battıktan sonra etkinleştir" - }, - "setup_add_site_hotkey": { - "message": "Site eklemek için bir kısayol tuşu ayarla" - }, - "setup_hotkey_toggle_extension": { - "message": "Eklenti aç-kapat\nkısayol tuşu ayarla" - }, - "setup_hotkey_toggle_site": { - "message": "Şu anki site için\naç-kapat kısayol tuşu ayarla" - }, - "site_list": { - "message": "Site listesi" - }, - "site_toggle": { - "message": "Site Açma/Kapatma" - }, - "store_listing": { - "message": "Bu göz bakım eklentisi web siteleri için anında koyu temalar oluşturarak gece modunu etkinleştirir. Dark Reader parlak renkleri ters çevirerek yüksek kontrast oluşturur ve geceleri okumayı kolaylaştırır.\n\nParlaklığı, kontrastı, sepya filtresini, koyu modu, yazı tipi ayarlarını ve yoksayma listesini ayarlayabilirsiniz.\n\nUygulamanın gelişimini bir bağışla desteklemenizi isteyebiliriz. Ayarlar açılır penceresinde Dark Reader ile ilgili haberleri görebilirsiniz. Deneyimli kullanıcılar için Geliştirici Araçları bulunmaktadır.\n\nDark Reader, reklam göstermez ve kullanıcının verilerini hiçbir yere göndermez. Tamamen açık kaynak kodludur. https://github.com/darkreader/darkreader\n\nYüklemeden önce benzer uzantıları devre dışı bırakın. Gezintinin tadını çıkarın!" - }, - "support_out_work": { - "message": "Çalışmalarımızı destekleyin" - }, - "system_dark_mode": { - "message": "Sistem renk düzenini kullan" - }, - "system_dark_mode_chromium_warning": { - "message": "Bu seçenek, tarayıcınızdaki\nbir hata nedeniyle çalışmayabilir" - }, - "system_dark_mode_description": { - "message": "Sistem koyu modu açıkken etkinleştir" - }, - "text_stroke": { - "message": "Yazı çizgisi" - }, - "theme_generation_mode": { - "message": "Tema oluşturma modu" - }, - "toggle_current_site": { - "message": "Şu anki siteyi aç-kapat" - }, - "toggle_extension": { - "message": "Eklentiyi aç-kapat" - }, - "try_experimental_theme_engines": { - "message": "**Deneysel** tema motorlarını deneyin:\n**Filtre+** renk doygunluğunu korur, GPU kullanır\n**Statik tema** basit, hızlı bir tema oluşturur\n**Dinamik tema** renkleri ve görüntüleri analiz eder" - }, - "version": { - "message": "Sürüm" - }, - "we_celebrate_10_years": { - "message": "Dark Reader 10. yılını kutluyor.\nLütfen çalışmalarımızı destekleyin." - }, - "website_toggle_shortcut": { - "message": "Web sitesi aç/kapat klavye kısayolu" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/uk/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/uk/messages.json deleted file mode 100644 index fd4695b..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/uk/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Додати сайт до списку" - }, - "all_settings": { - "message": "Всі налаштування" - }, - "auto_day_at_location": { - "message": "Авто (день на місці)" - }, - "auto_day_time": { - "message": "Авто (денний час)" - }, - "auto_night_at_location": { - "message": "Авто (ніч на місці)" - }, - "auto_night_time": { - "message": "Авто (ніч)" - }, - "auto_system_is_dark": { - "message": "Авто (система темна)" - }, - "auto_system_is_light": { - "message": "Авто (система світла)" - }, - "automation": { - "message": "Автоматизація" - }, - "brightness": { - "message": "Яскравість" - }, - "change_browser_theme": { - "message": "Обрати вигляд браузера" - }, - "click_to_set_shortcut": { - "message": "Натисніть, щоб встановити комбінацію" - }, - "configure_automation": { - "message": "Налаштувати автоматизацію" - }, - "configure_site_toggle": { - "message": "Налаштувати перемикання веб-сайтів" - }, - "contrast": { - "message": "Контраст" - }, - "custom_browser_theme_off": { - "message": "За промовчанням" - }, - "custom_browser_theme_on": { - "message": "Користувацький" - }, - "dark": { - "message": "Темний" - }, - "dark_theme_detected": { - "message": "Виявлено темну тему" - }, - "detect_dark_theme": { - "message": "Виявлення темної теми" - }, - "detect_website_dark_theme": { - "message": "Визначити власну темну тему веб-сайту" - }, - "donate": { - "message": "Пожертвувати" - }, - "enable_for_all_sites_by_default": { - "message": "Увімкнено для всіх веб-сайтів за умовчанням" - }, - "enabled_by_default": { - "message": "Увімкнено за замовчуванням" - }, - "engine_dynamic": { - "message": "Змінний" - }, - "engine_filter": { - "message": "Фільтр" - }, - "engine_filter_plus": { - "message": "Фільтр+" - }, - "engine_static": { - "message": "Сталий" - }, - "extension_description": { - "message": "Темний вигляд для кожного мережевого сайту. Піклуйтеся про свої очі, використовуйте темний вид для нічного та щоденного перегляду." - }, - "extension_toggle_shortcut": { - "message": "Комбінація клавіш для ввімкнення/вимкнення розширення" - }, - "filter": { - "message": "Фільтр" - }, - "grayscale": { - "message": "Сірі відтінки" - }, - "help": { - "message": "Допомога" - }, - "invert_listed_only": { - "message": "Інвертувати лише у списку" - }, - "latitude": { - "message": "Широта" - }, - "light": { - "message": "Світлий" - }, - "loading_please_wait": { - "message": "Завантаження, будь ласка зачекайте..." - }, - "local_files_forbidden": { - "message": "Немає дозволу на обробку\nлокальних файлiв" - }, - "longitude": { - "message": "Довгота" - }, - "mobile_link": { - "message": "Доступний Mobile Dark Reader. Вивчайте більше" - }, - "mode": { - "message": "Вид" - }, - "more": { - "message": "Більше" - }, - "news": { - "message": "Новини" - }, - "not_invert_listed": { - "message": "Не інвертувати у списку" - }, - "off": { - "message": "Вимк" - }, - "on": { - "message": "Увімк" - }, - "only_for": { - "message": "Лише для" - }, - "only_for_description": { - "message": "Лише для поточного сайту" - }, - "open_dev_tools": { - "message": "Інструменти розробника" - }, - "page_in_dark_list": { - "message": "Цей сайт у глобальному\n\"Темному Списку\"" - }, - "page_protected": { - "message": "Ця сторінка захищена\nбраузером" - }, - "pay_for_using": { - "message": "Бажаємо виконання всіх мрій!" - }, - "privacy": { - "message": "Приватність" - }, - "read_more": { - "message": "Докладніше" - }, - "select_font": { - "message": "Обрати вид тексту" - }, - "sepia": { - "message": "Сепія" - }, - "set_active_hours": { - "message": "Встановити робочий час" - }, - "set_location": { - "message": "Активізувати після заходу сонця" - }, - "setup_add_site_hotkey": { - "message": "Встановити гарячу кнопку для додавання сайтів" - }, - "setup_hotkey_toggle_extension": { - "message": "Налаштувати гарячу клавішу\nдля розширення" - }, - "setup_hotkey_toggle_site": { - "message": "Налаштувати гарячу клавішу\nдля поточного сайту" - }, - "site_list": { - "message": "Список сайтів" - }, - "site_toggle": { - "message": "Перемикання сайту" - }, - "store_listing": { - "message": "Це розширення для догляду за очима дозволяє створювати темні вигляди для мережевих сайтів. Dark Reader інвертує яскраві барви, роблячи їх контрастними і такими що легко читаються вночі.\n\nВи можете налаштувати яскравість, контраст, сепію, темний вигляд, налаштування вигляду тексту та список нехтування.\n\nМи можемо попросити вас підтримати розробку програми пожертвуванням. Ви можете побачити новини про Dark Reader у спливаючому вікні налаштувань. Є інструменти розробника для досвідчених користувачів.\n\nDark Reader не містить рекламу і не надсилає дані користувача нікуди. Це розширення з відкритим кодом https://github.com/darkreader/darkreader\n\nПеред встановленням відімкніть подібні розширення. Насолоджуйтесь переглядом!" - }, - "support_out_work": { - "message": "Підтримайте нашу роботу" - }, - "system_dark_mode": { - "message": "Використовувати системну колірну схему" - }, - "system_dark_mode_chromium_warning": { - "message": "This option might not work due to\na bug in your browser" - }, - "system_dark_mode_description": { - "message": "Активізувати коли системний нічний режим включений" - }, - "text_stroke": { - "message": "Обведення тексту" - }, - "theme_generation_mode": { - "message": "Вид" - }, - "toggle_current_site": { - "message": "Перемкнути для поточного сайту" - }, - "toggle_extension": { - "message": "Перемкнути розширення" - }, - "try_experimental_theme_engines": { - "message": "Спробуйте **експериментальні** теми:\n**Фільтр+** зберігає насиченість барв, використовує GPU\n**Сталий** створює простий швидкмй вигляд\n**Змінний** розбирає барви та зображення" - }, - "version": { - "message": "Версія" - }, - "we_celebrate_10_years": { - "message": "Dark Reader святкує 10-річчя\nвід початку розробки." - }, - "website_toggle_shortcut": { - "message": "Комбінація клавіш для перемикання веб-сайту" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/vi/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/vi/messages.json deleted file mode 100644 index d5fd2f7..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/vi/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "Thêm trang vào danh sách" - }, - "all_settings": { - "message": "Tất cả các thiết lập" - }, - "auto_day_at_location": { - "message": "Tự động (ban ngày tại vị trí)" - }, - "auto_day_time": { - "message": "Tự động (ban ngày)" - }, - "auto_night_at_location": { - "message": "Tự động (ban đêm tại vị trí)" - }, - "auto_night_time": { - "message": "Tự động (ban đêm)" - }, - "auto_system_is_dark": { - "message": "Tự động (chế độ tối đang bật)" - }, - "auto_system_is_light": { - "message": "Tự động (chế độ sáng đang bật)" - }, - "automation": { - "message": "Tự động hóa" - }, - "brightness": { - "message": "Độ sáng" - }, - "change_browser_theme": { - "message": "Đổi chủ đề của trình duyệt" - }, - "click_to_set_shortcut": { - "message": "Bấm để đặt phím tắt" - }, - "configure_automation": { - "message": "Cài đặt tự động hóa" - }, - "configure_site_toggle": { - "message": "Cài đặt chuyển đổi chủ đề" - }, - "contrast": { - "message": "Độ tương phản" - }, - "custom_browser_theme_off": { - "message": "Mặc định" - }, - "custom_browser_theme_on": { - "message": "Tuỳ chỉnh" - }, - "dark": { - "message": "Tối" - }, - "dark_theme_detected": { - "message": "Đã phát hiện chủ đề tối" - }, - "detect_dark_theme": { - "message": "Phát hiện chủ đề tối" - }, - "detect_website_dark_theme": { - "message": "Phát hiện chủ đề tối của trang" - }, - "donate": { - "message": "Đóng góp" - }, - "enable_for_all_sites_by_default": { - "message": "Được bật cho tất cả các trang web theo mặc định" - }, - "enabled_by_default": { - "message": "Được bật theo mặc định" - }, - "engine_dynamic": { - "message": "Động" - }, - "engine_filter": { - "message": "Lọc" - }, - "engine_filter_plus": { - "message": "Lọc+" - }, - "engine_static": { - "message": "Tĩnh" - }, - "extension_description": { - "message": "Chế độ tối cho mọi trang web. Bảo vệ đôi mắt của bạn, sử dụng khi duyệt web vào ban đêm và hàng ngày." - }, - "extension_toggle_shortcut": { - "message": "Phím tắt để bật/tắt tiện ích" - }, - "filter": { - "message": "Bộ lọc" - }, - "grayscale": { - "message": "Độ xám" - }, - "help": { - "message": "Hỗ trợ" - }, - "invert_listed_only": { - "message": "Luôn bật với" - }, - "latitude": { - "message": "Vĩ độ" - }, - "light": { - "message": "Sáng" - }, - "loading_please_wait": { - "message": "Đang tải, xin hãy đợi" - }, - "local_files_forbidden": { - "message": "Không cho phép truy cập\ncác tệp cục bộ" - }, - "longitude": { - "message": "Kinh độ" - }, - "mobile_link": { - "message": "Mobile Dark Reader có sẵn. Tìm hiểu thêm" - }, - "mode": { - "message": "Chế độ" - }, - "more": { - "message": "Thêm" - }, - "news": { - "message": "Tin tức" - }, - "not_invert_listed": { - "message": "Không bật với" - }, - "off": { - "message": "Tắt" - }, - "on": { - "message": "Bật" - }, - "only_for": { - "message": "Chỉ dành cho" - }, - "only_for_description": { - "message": "Chỉ áp dụng cài đặt cho trang này" - }, - "open_dev_tools": { - "message": "Công cụ" - }, - "page_in_dark_list": { - "message": "Nằm trong danh sách\nđã ở chế độ tối" - }, - "page_protected": { - "message": "Trang này được bảo vệ\nbởi trình duyệt" - }, - "pay_for_using": { - "message": "Trả tiền để sử dụng Dark Reader" - }, - "privacy": { - "message": "Riêng tư" - }, - "read_more": { - "message": "Đọc thêm" - }, - "select_font": { - "message": "Chọn phông chữ" - }, - "sepia": { - "message": "Độ ấm" - }, - "set_active_hours": { - "message": "Đặt giờ hoạt động" - }, - "set_location": { - "message": "Hoạt động sau khi mặt trời lặn tại vị trí" - }, - "setup_add_site_hotkey": { - "message": "Đặt phím tắt để thêm trang" - }, - "setup_hotkey_toggle_extension": { - "message": "Đặt phím tắt để\nbật/tắt tiện ích" - }, - "setup_hotkey_toggle_site": { - "message": "Đặt phím tắt để\ntạo chủ đề cho trang" - }, - "site_list": { - "message": "Danh sách" - }, - "site_toggle": { - "message": "Đổi chủ đề của trang" - }, - "store_listing": { - "message": "Tiện ích này bảo vệ mắt bằng cách tạo ra chế độ tối cho các trang web đang hoạt động. Dark Reader đảo ngược màu sáng, làm cho chúng có độ tương phản cao và dễ đọc vào ban đêm.\n\nBạn có thể điều chỉnh độ sáng, độ tương phản, độ ấm, chế độ tối, phông chữ và danh sách bỏ qua.\n\nChúng tôi có thể yêu cầu bạn đóng góp để hỗ trợ phát triển tiện ích. Bạn có thể đọc tin tức về Dark Reader qua giao diện chính. Có công cụ dành cho người dùng có kinh nghiệm.\n\nDark Reader không hiện quảng cáo hay gửi dữ liệu người dùng đi đâu. Nó hoàn toàn mã nguồn mở: https://github.com/darkreader/darkreader\n\nXóa các tiện ích tương tự trước khi cài đặt. Hãy tận hưởng chế độ tối tuyệt đẹp nhé!" - }, - "support_out_work": { - "message": "Hỗ trợ công việc của chúng tôi" - }, - "system_dark_mode": { - "message": "Sử dụng chủ đề của hệ thống" - }, - "system_dark_mode_chromium_warning": { - "message": "Tuỳ chọn có thể không hoạt động do\nlỗi trong trình duyệt" - }, - "system_dark_mode_description": { - "message": "Hoạt động cùng chế độ tối của hệ thống" - }, - "text_stroke": { - "message": "Viền chữ" - }, - "theme_generation_mode": { - "message": "Các chế độ tạo chủ đề" - }, - "toggle_current_site": { - "message": "Tạo chủ đề cho trang" - }, - "toggle_extension": { - "message": "Bật/Tắt tiện ích" - }, - "try_experimental_theme_engines": { - "message": "Hãy thử công cụ chủ đề **thử nghiệm**:\n**Lọc+** giữ nguyên độ bão hòa màu, dùng GPU\n**Chủ đề tĩnh** tạo một chủ đề nhanh, đơn giản\n**Chủ đề động** phân tích màu sắc và hình ảnh" - }, - "version": { - "message": "Phiên bản" - }, - "we_celebrate_10_years": { - "message": "Dark Reader kỷ niệm 10 năm.\nHãy ủng hộ công việc của chúng tôi." - }, - "website_toggle_shortcut": { - "message": "Phím tắt đổi chủ đề của trang" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/zh_CN/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/zh_CN/messages.json deleted file mode 100644 index be11fbd..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/zh_CN/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "将网站添加到列表" - }, - "all_settings": { - "message": "所有设置" - }, - "auto_day_at_location": { - "message": "自动(当地白天)" - }, - "auto_day_time": { - "message": "自动(白天)" - }, - "auto_night_at_location": { - "message": "自动(当地夜间)" - }, - "auto_night_time": { - "message": "自动(夜间)" - }, - "auto_system_is_dark": { - "message": "自动(系统暗色)" - }, - "auto_system_is_light": { - "message": "自动(系统亮色)" - }, - "automation": { - "message": "自动化" - }, - "brightness": { - "message": "亮度" - }, - "change_browser_theme": { - "message": "更改浏览器主题" - }, - "click_to_set_shortcut": { - "message": "点击设置快捷方式" - }, - "configure_automation": { - "message": "配置自动化" - }, - "configure_site_toggle": { - "message": "配置网站切换" - }, - "contrast": { - "message": "对比度" - }, - "custom_browser_theme_off": { - "message": "默认" - }, - "custom_browser_theme_on": { - "message": "自定义" - }, - "dark": { - "message": "暗色" - }, - "dark_theme_detected": { - "message": "检测到深色主题" - }, - "detect_dark_theme": { - "message": "检测暗色主题" - }, - "detect_website_dark_theme": { - "message": "检测网站自己的深色主题" - }, - "donate": { - "message": "捐赠" - }, - "enable_for_all_sites_by_default": { - "message": "默认对所有网站启用" - }, - "enabled_by_default": { - "message": "默认启用" - }, - "engine_dynamic": { - "message": "动态" - }, - "engine_filter": { - "message": "过滤" - }, - "engine_filter_plus": { - "message": "过滤+" - }, - "engine_static": { - "message": "静态" - }, - "extension_description": { - "message": "适用于所有网站的暗色主题。关爱眼睛,就使用 Dark Reader 进行日常浏览。" - }, - "extension_toggle_shortcut": { - "message": "扩展开/关键盘快捷键" - }, - "filter": { - "message": "滤镜" - }, - "grayscale": { - "message": "灰度" - }, - "help": { - "message": "帮助" - }, - "invert_listed_only": { - "message": "反色列表" - }, - "latitude": { - "message": "纬度" - }, - "light": { - "message": "亮色" - }, - "loading_please_wait": { - "message": "加载中,请稍候" - }, - "local_files_forbidden": { - "message": "不允许访问\n本地文件" - }, - "longitude": { - "message": "经度" - }, - "mobile_link": { - "message": "Dark Reader 手机端可用。了解更多" - }, - "mode": { - "message": "模式" - }, - "more": { - "message": "更多" - }, - "news": { - "message": "新闻" - }, - "not_invert_listed": { - "message": "不反色列表" - }, - "off": { - "message": "关闭" - }, - "on": { - "message": "开启" - }, - "only_for": { - "message": "仅用于" - }, - "only_for_description": { - "message": "仅将设置应用于当前网站" - }, - "open_dev_tools": { - "message": "开发者工具" - }, - "page_in_dark_list": { - "message": "此网站位于全局\n暗色列表中" - }, - "page_protected": { - "message": "此页面受\n浏览器保护" - }, - "pay_for_using": { - "message": "支付 DARK READER 使用费,感谢支持!" - }, - "privacy": { - "message": "隐私政策" - }, - "read_more": { - "message": "阅读更多" - }, - "select_font": { - "message": "选择字体" - }, - "sepia": { - "message": "棕褐色滤镜" - }, - "set_active_hours": { - "message": "设置使用时段" - }, - "set_location": { - "message": "当地日落之后激活" - }, - "setup_add_site_hotkey": { - "message": "设置添加网站的快捷键" - }, - "setup_hotkey_toggle_extension": { - "message": "设置扩展的\n开关快捷键" - }, - "setup_hotkey_toggle_site": { - "message": "设置当前网站的\n切换快捷键" - }, - "site_list": { - "message": "网站列表" - }, - "site_toggle": { - "message": "站点切换" - }, - "store_listing": { - "message": "这是一个护眼扩展程序,通过实时生成暗色主题,为每一个网站启用夜间模式。 Dark Reader 通过反转明亮的颜色,使网页内容具有高对比度并易于在夜间阅读。\n\n您可以调整亮度、对比度,应用棕褐色滤镜、暗色模式,设置字体和忽略的网站列表。\n\n我们可能会要求您通过捐款来支持应用程序的开发。您可能会在设置弹出窗口中看到有关 Dark Reader 的新闻。有针对经验丰富的用户的开发人员工具。\n\nDark Reader 无广告,也不会向任何地方发送用户的数据。它完全开源 https://github.com/darkreader/darkreader\n\n安装前请禁用类似的扩展。冲浪愉快!" - }, - "support_out_work": { - "message": "支持我们的工作" - }, - "system_dark_mode": { - "message": "使用系统的配色方案" - }, - "system_dark_mode_chromium_warning": { - "message": "该选项可能由于您浏览器中\n的一个bug而无法生效" - }, - "system_dark_mode_description": { - "message": "系统暗色模式开启时激活" - }, - "text_stroke": { - "message": "文字描边" - }, - "theme_generation_mode": { - "message": "主题生成模式" - }, - "toggle_current_site": { - "message": "切换当前网站" - }, - "toggle_extension": { - "message": "开关扩展" - }, - "try_experimental_theme_engines": { - "message": "试用**实验**主题引擎:\n**滤镜+**保留颜色饱和度,使用 GPU\n**静态主题**快速生成一个简单的主题\n**动态主题**分析颜色和图像" - }, - "version": { - "message": "版本" - }, - "we_celebrate_10_years": { - "message": "庆祝 Dark Reader 成立十周年。\n点击此处支持我们的工作。" - }, - "website_toggle_shortcut": { - "message": "网站切换键盘快捷键" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/zh_TW/messages.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/zh_TW/messages.json deleted file mode 100644 index 098cf04..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_locales/zh_TW/messages.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "add_site_to_list": { - "message": "將網站新增到列表" - }, - "all_settings": { - "message": "所有設定" - }, - "auto_day_at_location": { - "message": "自動(地點為白天)" - }, - "auto_day_time": { - "message": "自動(白天)" - }, - "auto_night_at_location": { - "message": "自動(地點為夜間)" - }, - "auto_night_time": { - "message": "自動(夜間)" - }, - "auto_system_is_dark": { - "message": "自動(系統為深色模式)" - }, - "auto_system_is_light": { - "message": "自動(系統為淺色模式)" - }, - "automation": { - "message": "自動化" - }, - "brightness": { - "message": "亮度" - }, - "change_browser_theme": { - "message": "更改瀏覽器主題" - }, - "click_to_set_shortcut": { - "message": "點選以設定快捷鍵" - }, - "configure_automation": { - "message": "設定自動化" - }, - "configure_site_toggle": { - "message": "設定網站切換" - }, - "contrast": { - "message": "對比度" - }, - "custom_browser_theme_off": { - "message": "預設" - }, - "custom_browser_theme_on": { - "message": "自訂" - }, - "dark": { - "message": "深色" - }, - "dark_theme_detected": { - "message": "偵測到深色主題" - }, - "detect_dark_theme": { - "message": "偵測深色主題" - }, - "detect_website_dark_theme": { - "message": "偵測網站自己的深色主題" - }, - "donate": { - "message": "贊助" - }, - "enable_for_all_sites_by_default": { - "message": "預設對所有網站啟用" - }, - "enabled_by_default": { - "message": "預設啟用" - }, - "engine_dynamic": { - "message": "動態" - }, - "engine_filter": { - "message": "濾鏡" - }, - "engine_filter_plus": { - "message": "濾鏡+" - }, - "engine_static": { - "message": "靜態" - }, - "extension_description": { - "message": "為每個網站提供深色模式。保護您的眼睛,使用 Dark Reader 進行夜間和日間瀏覽。" - }, - "extension_toggle_shortcut": { - "message": "擴充套件開/關鍵盤快捷鍵" - }, - "filter": { - "message": "濾鏡" - }, - "grayscale": { - "message": "灰階" - }, - "help": { - "message": "說明" - }, - "invert_listed_only": { - "message": "僅反轉列出的網站" - }, - "latitude": { - "message": "緯度" - }, - "light": { - "message": "淺色" - }, - "loading_please_wait": { - "message": "載入中,請稍候" - }, - "local_files_forbidden": { - "message": "禁止存取\n本機檔案" - }, - "longitude": { - "message": "經度" - }, - "mobile_link": { - "message": "行動版 Dark Reader 已上線,了解更多" - }, - "mode": { - "message": "模式" - }, - "more": { - "message": "更多選項" - }, - "news": { - "message": "最新資訊" - }, - "not_invert_listed": { - "message": "不反轉列出的網站" - }, - "off": { - "message": "停用" - }, - "on": { - "message": "啟用" - }, - "only_for": { - "message": "僅適用於" - }, - "only_for_description": { - "message": "僅將設定套用於所在網站" - }, - "open_dev_tools": { - "message": "開發者工具" - }, - "page_in_dark_list": { - "message": "此網站在全域深\n色模式列表中" - }, - "page_protected": { - "message": "此頁面受\n瀏覽器保護" - }, - "pay_for_using": { - "message": "支付 DARK READER 使用費" - }, - "privacy": { - "message": "隱私權政策" - }, - "read_more": { - "message": "閱讀更多" - }, - "select_font": { - "message": "選擇字型" - }, - "sepia": { - "message": "棕色濾鏡" - }, - "set_active_hours": { - "message": "設定啟用時間" - }, - "set_location": { - "message": "日落後啟動" - }, - "setup_add_site_hotkey": { - "message": "設定新增網站的快捷鍵" - }, - "setup_hotkey_toggle_extension": { - "message": "設定擴充套件的\n開關快捷鍵" - }, - "setup_hotkey_toggle_site": { - "message": "設定所在網站的\n切換快捷鍵" - }, - "site_list": { - "message": "網站列表" - }, - "site_toggle": { - "message": "網站切換" - }, - "store_listing": { - "message": "這是一款護眼擴充套件,透過即時產生深色主題,為各式網站啟用夜間模式。Dark Reader 反轉明亮的顏色、提高對比,讓您在夜間也能舒適地閱讀。\n\n您可以調整亮度、對比、棕色濾鏡、深色模式、字型設定和忽略的網站清單。\n\n我們可能會邀請您透過贊助支持此應用程式的開發。您可以在設定選單中看到有關 Dark Reader 的最新資訊。對於經驗豐富的使用者,我們也提供開發者工具供您使用。\n\nDark Reader 沒有廣告,也不會蒐集使用者資料。它完全開源在 GitHub 上: https://github.com/darkreader/darkreader\n\n安裝前請先停用其他類似的擴充套件,以避免發生衝突。祝您瀏覽愉快!" - }, - "support_out_work": { - "message": "支持我們的工作" - }, - "system_dark_mode": { - "message": "使用系統設定" - }, - "system_dark_mode_chromium_warning": { - "message": "由於您的瀏覽器發生錯誤,\n此選項可能無效" - }, - "system_dark_mode_description": { - "message": "當系統啟用深色模式時,同步啟用" - }, - "text_stroke": { - "message": "文字描邊" - }, - "theme_generation_mode": { - "message": "主題產生模式" - }, - "toggle_current_site": { - "message": "切換目前網站的設定" - }, - "toggle_extension": { - "message": "切換擴充套件" - }, - "try_experimental_theme_engines": { - "message": "試用 **實驗性** 的主題引擎:\n**濾鏡+** 保留顏色飽和度,將會使用 GPU\n**靜態主題** 生成簡單快速的主題\n**動態主題** 分析顏色和影象" - }, - "version": { - "message": "版本" - }, - "we_celebrate_10_years": { - "message": "慶祝 Dark Reader 成立十週年。\n請支持我們的工作。" - }, - "website_toggle_shortcut": { - "message": "網站切換鍵盤快捷鍵" - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_metadata/verified_contents.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_metadata/verified_contents.json deleted file mode 100644 index 39ec853..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/_metadata/verified_contents.json +++ /dev/null @@ -1 +0,0 @@ -[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJfbG9jYWxlcy9hci9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiQ09YWERSc01sd0Rhb01xOXZweTgzRWRpX2ZzcklMeHdyanRNdGwtaF9DUSJ9LHsicGF0aCI6Il9sb2NhbGVzL2JlL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJkQk5NVzlkcENrWjNYczBfZUZpTWhiakJuOFZ2QWgzb0ItckN3cXRxQkRzIn0seyJwYXRoIjoiX2xvY2FsZXMvYmcvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IkRsT0xOQWoxamROTnhQcU1Bc3UwbXhoX084dmtQNUp6aFo2NUI4Z1JKbjAifSx7InBhdGgiOiJfbG9jYWxlcy9ibi9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiX2hWaHBDQWJlWXpvZnUyNW4xeVo0cVFZc0MyLVIya29ibTB6UkF4TjFNMCJ9LHsicGF0aCI6Il9sb2NhbGVzL2NzL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJKRjdMU2ozQmRlVy15U1hjOXM0cTY5V0VtTkVhYnhNNWU0c0pZdG5tWnJrIn0seyJwYXRoIjoiX2xvY2FsZXMvZGFfREsvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IjIycVdGTFIzcnhJQ2hEazhmY3ZqTE9PUnJ6T2FFN2pZZ1FpRUFKTF8wQVUifSx7InBhdGgiOiJfbG9jYWxlcy9kZS9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiRzkyWmI2V081Q2QzRnh5SFRZOVJmT0wxUnFGa1VJeTc5NXlTWTFMWU5jNCJ9LHsicGF0aCI6Il9sb2NhbGVzL2VsL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJWQ3NxQ2h5R1A5Z1E4Z2dwY0QyUFlNVFpsdEhzMWRXUExweHFTLThEdEI4In0seyJwYXRoIjoiX2xvY2FsZXMvZW4vbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6ImIydHA2b0dsazhlTjdhRFQtWVJKR1M5YWd6UEl0M0tjZlJSb0thQS12X0UifSx7InBhdGgiOiJfbG9jYWxlcy9lbl9HQi9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiUnVKekN2d0pYSTh0QnBwSkc2SEhualowSjZfT1owaWliSjE3M0Zqb1R5RSJ9LHsicGF0aCI6Il9sb2NhbGVzL2VuX1VTL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJiMnRwNm9HbGs4ZU43YURULVlSSkdTOWFnelBJdDNLY2ZSUm9LYUEtdl9FIn0seyJwYXRoIjoiX2xvY2FsZXMvZXMvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6Im5aLS1GcC1nLXRVZjlEZ1p2ekZSOXVPNHlRUWRVQWo0S0Rpb2tBLXVTR00ifSx7InBhdGgiOiJfbG9jYWxlcy9lc180MTkvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IjdBcGg0VjFuR3M0ZmRKU2RJQTA4cENEYVZrUGM1R3ZVc0wyOXpmd0FEdVUifSx7InBhdGgiOiJfbG9jYWxlcy9mYS9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiOURkMDdUUjgtdnFQRDdRRWN5S1dEbTItR1RNRHNRcnF4MkJLZXpwNlB6YyJ9LHsicGF0aCI6Il9sb2NhbGVzL2ZhX0lSL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiI5RGQwN1RSOC12cVBEN1FFY3lLV0RtMi1HVE1Ec1FycXgyQktlenA2UHpjIn0seyJwYXRoIjoiX2xvY2FsZXMvZmlsL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiI2cHY4anFtQnljbXlfaEZqeDBKRW1pLVg2LUVZcmNkTUJjVE12RlN2Mm40In0seyJwYXRoIjoiX2xvY2FsZXMvZnIvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6Ikg5X0xneC15YXNGZXFLdnc4UGlmTXhSMzU2WkxwRTJPY0l4NUV3SUswMDQifSx7InBhdGgiOiJfbG9jYWxlcy9oZS9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiZFJlSTRyTVpDYnRTYlFYT0R3bklFU21tUjBkMWwydDNIcnJ0VVdIVmlNdyJ9LHsicGF0aCI6Il9sb2NhbGVzL2hpL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiIySWthbkRfMjB3OENZZ3J5UXJQUkhHdkdDbUljS1ZlM2VwR1RMT09LNmNBIn0seyJwYXRoIjoiX2xvY2FsZXMvaWQvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IlA5ZThya2FIekdYQ3hjR0dfUXkxX2E0eXktWFZFc19OYzMtOXRuNklWR3cifSx7InBhdGgiOiJfbG9jYWxlcy9pdC9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiREJYdDBJcWlIU2t0QWhsX2NfbVBDRTlIaHlZV3p2ckwxZ3lMTE9Fb1VtMCJ9LHsicGF0aCI6Il9sb2NhbGVzL2phL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJPTWZfTmx2WFMycG1naUhFSlJfb3ZMM3VrZkpZOUN2aWdTSlRPdk90am93In0seyJwYXRoIjoiX2xvY2FsZXMva28vbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IjZpMFZKZlgwRVFmUEg5VXBGelFNNjhpUTA1bnp4MkJQSkl2bmtBaXJxcFUifSx7InBhdGgiOiJfbG9jYWxlcy9tcy9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiTVRmckhJN2lINm9vdUk2b2pUYl95d3UtOVBfUDU3UjNudEhZTjR1MDkyWSJ9LHsicGF0aCI6Il9sb2NhbGVzL25sL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJRdGJPRFRBRmdOVmVHLWRtUXZvNDNSOG0yM25WUW82MmpqY3JGb2liaFBJIn0seyJwYXRoIjoiX2xvY2FsZXMvbm8vbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6Im5xX2dKTWoteTdsNFB1U1pfQUxPbFhxczVjOW40ZFAtWGJpV1FaUU1MVWMifSx7InBhdGgiOiJfbG9jYWxlcy9wbC9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiZGRrVGxWQTM5bEVVa2Q4LWFORWlLOWRrSEd4UWNaRkZpYzFlQkphRGF0ayJ9LHsicGF0aCI6Il9sb2NhbGVzL3B0X0JSL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJBcXBkaTJuRkZkQlFwV2VibzRZRUlyX3J1ZGlITGFIMmJoNnhLdHVDVDRZIn0seyJwYXRoIjoiX2xvY2FsZXMvcHRfUFQvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IjRHQ2VzYzVKU1lDdUxxbWdmalVJcDh3UHowMFdVQndJczk4QXdONHQ3X1kifSx7InBhdGgiOiJfbG9jYWxlcy9yby9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiWUw1VjVQVW5sdEJUYnBLbEx3VWhTWGV3NzJMYm5TOU1HSDU0Ukc4eFZEMCJ9LHsicGF0aCI6Il9sb2NhbGVzL3J1L21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiIyMEdrcEdoUXR5Qkg3cjdaTjJiYXZwWHc3VFJMUVpSSUJSOXVKVTdPTFRFIn0seyJwYXRoIjoiX2xvY2FsZXMvc2kvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6InhXU2VQTXB2Z1hQNUdUSHl6V0E0N1lnOFBOOEdMWWYzTXYzSnVsY0tBYkUifSx7InBhdGgiOiJfbG9jYWxlcy9zay9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiUWtsMExqR1FnaFR4UGoyZ2pWRTI0eVBPSS1OS1p3QmRIUThnd052cG5wdyJ9LHsicGF0aCI6Il9sb2NhbGVzL3NyL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJUbHJxRTdmRTBLVXh1dm9lU3MzX0YwSng2eXN5TDBlM2QzMU94eGhPLWdVIn0seyJwYXRoIjoiX2xvY2FsZXMvc3YvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6IkRtUFR1MzNOVUxOZ2s0NTE2SmpWTHk0ckJwN3pGZWRhakJTaXJMQVViS3MifSx7InBhdGgiOiJfbG9jYWxlcy90ZS9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiZ3JVNWlESXF1OURQZ1hiNHRuNlJicnA1c3M0NGdLZGRpNXhsbHVsNF9nSSJ9LHsicGF0aCI6Il9sb2NhbGVzL3RoL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJEd1FIQlpaUkU5TTJGM0dMUkNyZ3kyejBtOGRhSFZZNVgxcUh3bkViUDVjIn0seyJwYXRoIjoiX2xvY2FsZXMvdHIvbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6ImNvLV9lNXotdVh6VU9PRzctUTBQR3dQT1dqWVJoem5lNTd2azVUNXNjdXcifSx7InBhdGgiOiJfbG9jYWxlcy91ay9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoia0pkaHgyelVTX204RE9MNFJUYjdEZ19EajBma0Iyek84bVhwZlF2UENXRSJ9LHsicGF0aCI6Il9sb2NhbGVzL3ZpL21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJlY2ppRS1rUVdLSU9TMjFLdlY4bm5tNTA0N2t5WXF0dWZDelFMR20tQmRzIn0seyJwYXRoIjoiX2xvY2FsZXMvemhfQ04vbWVzc2FnZXMuanNvbiIsInJvb3RfaGFzaCI6InFxdXRoNENfSkhOSmcxdk8zSXNXcTItX0FkckFaUEJYa2NDUkdvb1AzcmMifSx7InBhdGgiOiJfbG9jYWxlcy96aF9UVy9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoibkpCS1VEZ1JVdlJmQVB2dkJWZ3R3Z1lVd3VZdmxlSHhKNmFjRVc4UDA4WSJ9LHsicGF0aCI6ImJhY2tncm91bmQvaW5kZXguanMiLCJyb290X2hhc2giOiI1azUyYy02QjVSeF92ZldvRXBBRDlHYjlDNXlQa2plSVhaU3lVblJEOHhBIn0seyJwYXRoIjoiY29uZmlnL2NvbG9yLXNjaGVtZXMuZHJjb25mIiwicm9vdF9oYXNoIjoiTFlCb3Y1ZEdsVHRQdTJHQVgwVWxIeXUycHFvUVA4TjJSOEx4aVNBQ1BGcyJ9LHsicGF0aCI6ImNvbmZpZy9kYXJrLXNpdGVzLmNvbmZpZyIsInJvb3RfaGFzaCI6IkxjUGtreVg2VzFxQmk1UjVvUkdSeXpSQ1dLUXVlQk9Ca3lTWUV5V3NMYVEifSx7InBhdGgiOiJjb25maWcvZGV0ZWN0b3ItaGludHMuY29uZmlnIiwicm9vdF9oYXNoIjoiQTJDb0l2c1NKeFZIM0tkWW0zRWc0TmxnSVlZRzN4bkhtRVZxMjV1NUIxWSJ9LHsicGF0aCI6ImNvbmZpZy9keW5hbWljLXRoZW1lLWZpeGVzLmNvbmZpZyIsInJvb3RfaGFzaCI6InhKVWctQmxOVHM5alh5NmxsYVhwMS1BN09JNGlFY3lMUmo2OU5kbWtpRW8ifSx7InBhdGgiOiJjb25maWcvaW52ZXJzaW9uLWZpeGVzLmNvbmZpZyIsInJvb3RfaGFzaCI6Ing3bWt5MUVoT0oweEdqdDQxbGpIWWZ1SzlLVVJOaHY0QUdZVkRGcklZLUUifSx7InBhdGgiOiJjb25maWcvc3RhdGljLXRoZW1lcy5jb25maWciLCJyb290X2hhc2giOiJEMW5wcXU4ZVhvbFdSVnlpOS1JWklrOVJXVzR6V1hCZktHV25icGlJc2EwIn0seyJwYXRoIjoiaWNvbnMvZHJfMTI4LnBuZyIsInJvb3RfaGFzaCI6ImZVQ3cyeUJpZEVDX1dQejRETzJDajF0SkxJX3ZBdFRNXzRwOUZkMTZFTEUifSx7InBhdGgiOiJpY29ucy9kcl8xNi5wbmciLCJyb290X2hhc2giOiJaWU9KTHNRLUZJWDRSNlZPSTJzandmdWxzRjJ6a3h3Rm9Jd0otV0EzSTlzIn0seyJwYXRoIjoiaWNvbnMvZHJfNDgucG5nIiwicm9vdF9oYXNoIjoiTVU5RVJBd3RxT0pWc0NWNVRSNXZNdEtvZ2lyN2xiTnVoRzRtRnNwT0RoNCJ9LHsicGF0aCI6Imljb25zL2RyX2FjdGl2ZV8xOS5wbmciLCJyb290X2hhc2giOiJUS3lDVHNzZUhkMWtmRDVnejVzaEkwdVZ5Y01sdUcwdWNacXNiZWxHRXZRIn0seyJwYXRoIjoiaWNvbnMvZHJfYWN0aXZlXzM4LnBuZyIsInJvb3RfaGFzaCI6Im5TVHlSaTZELURla09SMkwyb2c2MXR2MmRKbEszekU3a1ZibzFnZnNJRWcifSx7InBhdGgiOiJpY29ucy9kcl9pbmFjdGl2ZV8xOS5wbmciLCJyb290X2hhc2giOiJrZVJBUWd0QlI1Yk1SUWhMTGxNSkdvYm9SVnJudjhmU0t0bzBzRzdfREY0In0seyJwYXRoIjoiaWNvbnMvZHJfaW5hY3RpdmVfMzgucG5nIiwicm9vdF9oYXNoIjoiLXdzMjhSRi02b2VuSVM1d2h2VGx3RF9mc3RPTlNQeHI5U21iMk43VXpzWSJ9LHsicGF0aCI6ImluamVjdC9jb2xvci1zY2hlbWUtd2F0Y2hlci5qcyIsInJvb3RfaGFzaCI6IkZmLXp6Mmw1Mm9ldXJnRS1KSVpqVjlmd2VXVG5Uc3doQWNpQXN6M1QwTEUifSx7InBhdGgiOiJpbmplY3QvZmFsbGJhY2suanMiLCJyb290X2hhc2giOiJMeFo5NkNucG5VMV9JOFdXR3RuV3VvTHVSR3FpSHhlbFZVSXJWYmJJM29RIn0seyJwYXRoIjoiaW5qZWN0L2luZGV4LmpzIiwicm9vdF9oYXNoIjoiUmNid3ZOazdlbllQSWt0Q3BmMWZ0QVMyU1diQUJLVVJ1X1pDN2VrbHI3NCJ9LHsicGF0aCI6ImluamVjdC9wcm94eS5qcyIsInJvb3RfaGFzaCI6Ikd4ZzZTZm81VHNNalUxMWNaMWxBRzlGT2VfRDdjYkhfTkpzTUFUbmVLTlUifSx7InBhdGgiOiJtYW5pZmVzdC5qc29uIiwicm9vdF9oYXNoIjoiNFJ5ZVN0MG9pTUd0YUxTbGhWSDBoTnh5cTBDQ2xubDZQcnpXNmJRWk1TNCJ9LHsicGF0aCI6InVpL2Fzc2V0cy9mb250cy9MSUNFTlNFLnR4dCIsInJvb3RfaGFzaCI6Im1KZGRpblhIR25vUUFIdnc5T0lyUGNuemw4YUg5ZmJaX2tWaVo4TnRNcW8ifSx7InBhdGgiOiJ1aS9hc3NldHMvZm9udHMvT3BlblNhbnMtTGlnaHQudHRmIiwicm9vdF9oYXNoIjoiUGd2S0ZuVzhKS3pwSF92dkNQclktVk1hNm11X1hxZGZYMFVmWHh4bHJuOCJ9LHsicGF0aCI6InVpL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1SZWd1bGFyLnR0ZiIsInJvb3RfaGFzaCI6InlxcXE2UFpqQVhvZWZTWEZEVmxFb0tlTFhpSm5ZbUNEWUlFSlJBRHNQNncifSx7InBhdGgiOiJ1aS9hc3NldHMvZm9udHMvT3BlblNhbnMtU2VtaUJvbGQudHRmIiwicm9vdF9oYXNoIjoiZGU5OV91UHJsaEZUWmxhWWozeEo3RkZUeUdUYjBqbTFGQ0hlYXJEMFRCQSJ9LHsicGF0aCI6InVpL2Fzc2V0cy9pbWFnZXMvYmlydGhkYXktaWNvbi5zdmciLCJyb290X2hhc2giOiJwY2gtaWFYQmVLQUdwSGdDbmNFUGpRd1o3a3RsMnRjaWF2bzJsaWRtLTA0In0seyJwYXRoIjoidWkvYXNzZXRzL2ltYWdlcy9kYXJrcmVhZGVyLWljb24tMjU2eDI1Ni5wbmciLCJyb290X2hhc2giOiI4WUg5NGE4b1gxR09Ta0FoVVNkYTd4UGRVLXhDNDN5ZHJqZmk0dDNlTmdzIn0seyJwYXRoIjoidWkvYXNzZXRzL2ltYWdlcy9kYXJrcmVhZGVyLXR5cGUuc3ZnIiwicm9vdF9oYXNoIjoiQ2NDNEtRUkYzVHNaeTdhakNSUmtsZDFyOW00VlBmVTRpdnNCUUJXaG1EOCJ9LHsicGF0aCI6InVpL2Fzc2V0cy9pbWFnZXMvbW9iaWxlLWljb24tNDB4NjQuc3ZnIiwicm9vdF9oYXNoIjoiWXA2dlpCUWlwSG5mWDFUa1NmVmJYTVhhZGs1Vkd4djJiaS1nOTdBTG9EayJ9LHsicGF0aCI6InVpL2Fzc2V0cy9pbWFnZXMvbW9kZS1kYXJrLTMyLnN2ZyIsInJvb3RfaGFzaCI6IlNlenNEMUNQcXh5cEo5RlI2XzZqc01IRzY4UGk5aUxiaUp3WFVjZ2ZweDAifSx7InBhdGgiOiJ1aS9hc3NldHMvaW1hZ2VzL21vZGUtbGlnaHQtMzIuc3ZnIiwicm9vdF9oYXNoIjoiSGs0YWRNbWttX0dyN0pQcnE2dno5eDFIcTlSRlBCRFJScFd0bjZyRXFyTSJ9LHsicGF0aCI6InVpL2RldnRvb2xzL2luZGV4Lmh0bWwiLCJyb290X2hhc2giOiJlZkR5TFFac0RrWXZYR3ZqNTlQbWtBWkg2UTgwOVJZbFV1M08zY21zcFFvIn0seyJwYXRoIjoidWkvZGV2dG9vbHMvaW5kZXguanMiLCJyb290X2hhc2giOiJXOFBHQWxaMFFSTXdqU1p5MzZaYnA5YldEaDF2SXp1bVFFVnkxNTJJMXljIn0seyJwYXRoIjoidWkvZGV2dG9vbHMvc3R5bGUuY3NzIiwicm9vdF9oYXNoIjoiMmtlcHNrcVFGSFhBSGlveVIyQ0h6cE5BWjFXRGYyZGcweFJiS0xyUTBScyJ9LHsicGF0aCI6InVpL29wdGlvbnMvaW5kZXguaHRtbCIsInJvb3RfaGFzaCI6IjVOeVBYVnFhYm5leXdvOHh5MlZrelFfS3YtTXZMaGozSXh3SExKMllobnMifSx7InBhdGgiOiJ1aS9vcHRpb25zL2luZGV4LmpzIiwicm9vdF9oYXNoIjoib21LR0NpeG90anBET3owSlN4c0dFVXo1OFczalEzN1dad1dzeWV0S1RnSSJ9LHsicGF0aCI6InVpL29wdGlvbnMvc3R5bGUuY3NzIiwicm9vdF9oYXNoIjoiWUt4SHY1VmRkQ3ZkQmc5YWh3SG5pRWFlMXp1UEJXQ2V3ZEZRRWI4TXVlYyJ9LHsicGF0aCI6InVpL3BvcHVwL2luZGV4Lmh0bWwiLCJyb290X2hhc2giOiJycGhqOVpUNC1nR0NUY1dBaDNOUGxPT0tiY2VSZC1UaWRMUlJ6SU5UYWpzIn0seyJwYXRoIjoidWkvcG9wdXAvaW5kZXguanMiLCJyb290X2hhc2giOiJ4QUd1TW85TDF5eTByamdNQ2J6TmR0LV84cGFwVGlNZVlQTWNKRzhucXpBIn0seyJwYXRoIjoidWkvcG9wdXAvc3R5bGUuY3NzIiwicm9vdF9oYXNoIjoiT0lVSXhVTWk5M1VzcmY1emp5RG9RX3Y1c2dad1Zld0pQcEhINkVWRXM4SSJ9LHsicGF0aCI6InVpL3N0eWxlc2hlZXQtZWRpdG9yL2luZGV4Lmh0bWwiLCJyb290X2hhc2giOiJfNXItWFVTMkxyYXNrb0NMUWJCVWZqcXc4VkxDc2g5TXk1OWhJUk5JYkM0In0seyJwYXRoIjoidWkvc3R5bGVzaGVldC1lZGl0b3IvaW5kZXguanMiLCJyb290X2hhc2giOiJtX0s5d2tMMVFCOGZXQ2tQVUp2TFZ2VjdqUGJOZE9aWDhzTEdMRkFRbXUwIn0seyJwYXRoIjoidWkvc3R5bGVzaGVldC1lZGl0b3Ivc3R5bGUuY3NzIiwicm9vdF9oYXNoIjoiMmtlcHNrcVFGSFhBSGlveVIyQ0h6cE5BWjFXRGYyZGcweFJiS0xyUTBScyJ9XSwiZm9ybWF0IjoidHJlZWhhc2giLCJoYXNoX2Jsb2NrX3NpemUiOjQwOTZ9XSwiaXRlbV9pZCI6ImVpbWFkcGJjYmZubWJrb3Bvb2pmZWtobmtoZGJpZWVoIiwiaXRlbV92ZXJzaW9uIjoiNC45LjkyIiwicHJvdG9jb2xfdmVyc2lvbiI6MX0","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"G7luL83TjWQRtkt9yCgM7wuHaIF3lbtOHzN92t9z3FhS7w-C0UjaT5195nNZajX9h3WyD4xvvlcoC3PgNJ-Yy52sPaW62YMzBPvXsMsPdsYE6aP0Px9i25eU-ofDKNwZdmdi7G2MaxLAU7Y5ma562OauBP5THvyLY6iMVwQtlT7M7XJmzxM301CUmzjBxReL71-i18Vy4e9zLYb1QyWW2tQHx-bM01TB49wAQY2a8W-sZqrnhM2OfgSznH7P2tLKss_FFnLHmh5rns8ZP-waVR7vxWCx1C4dg79ny_8sxEl_6Xjz_q3gzpGIGlxP6YSGXNkIHG3dyeuNXsj0tMalew"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"hvXlsohlM_njIRGFLD6pm_XYd_VK_IuBBzN2h568cUs_jtpbCZ72G_i13QFSk4Asi2ey_nqe1gxvi7b0L5zWgX6yswO6TUwHuvEQyc_KY3MtKH0ypa1JLdycdyqeEoCRUmIsQHuBEHswkKpgOwsn5YP_J1_VbRMY1hdbDbtSJJUE6ki_yvWfijYms8GsngGhgVlh_OfMVJgP5qL4Bqt2bBZevbiDuU7awyQ_K2kFaGYq_uQH2qp1IKGwZjKchKYgs90rDfRoFqMgGecc3IBlBTyguUFsDUaHQdZhqhdB4l253rkaiCCR6auzAMVcNQIOZcIOZ1IpCcD7juDrKYl2tA"}]}}] \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/background/index.js b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/background/index.js deleted file mode 100644 index c4e6f4e..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/background/index.js +++ /dev/null @@ -1,6853 +0,0 @@ -(function () { - "use strict"; - - const isNavigatorDefined = typeof navigator !== "undefined"; - const userAgent = isNavigatorDefined - ? navigator.userAgentData && - Array.isArray(navigator.userAgentData.brands) - ? navigator.userAgentData.brands - .map( - (brand) => `${brand.brand.toLowerCase()} ${brand.version}` - ) - .join(" ") - : navigator.userAgent.toLowerCase() - : "some useragent"; - const platform = isNavigatorDefined - ? navigator.userAgentData && - typeof navigator.userAgentData.platform === "string" - ? navigator.userAgentData.platform.toLowerCase() - : navigator.platform.toLowerCase() - : "some platform"; - userAgent.includes("vivaldi"); - userAgent.includes("yabrowser"); - const isOpera = userAgent.includes("opr") || userAgent.includes("opera"); - const isEdge = userAgent.includes("edg"); - const isWindows = platform.startsWith("win"); - const isMacOS = platform.startsWith("mac"); - const isMobile = - isNavigatorDefined && navigator.userAgentData - ? navigator.userAgentData.mobile - : userAgent.includes("mobile"); - (isNavigatorDefined && - navigator.userAgentData && - ["Linux", "Android"].includes(navigator.userAgentData.platform)) || - platform.startsWith("linux"); - (() => { - const m = userAgent.match(/chrom(?:e|ium)(?:\/| )([^ ]+)/); - if (m && m[1]) { - return m[1]; - } - return ""; - })(); - (() => { - const m = userAgent.match(/(?:firefox|librewolf)(?:\/| )([^ ]+)/); - if (m && m[1]) { - return m[1]; - } - return ""; - })(); - (() => { - try { - document.querySelector(":defined"); - return true; - } catch (err) { - return false; - } - })(); - const isXMLHttpRequestSupported = typeof XMLHttpRequest === "function"; - const isFetchSupported = typeof fetch === "function"; - - async function getOKResponse(url, mimeType, origin) { - const response = await fetch(url, { - cache: "force-cache", - credentials: "omit", - referrer: origin - }); - if ( - mimeType && - !response.headers.get("Content-Type").startsWith(mimeType) - ) { - throw new Error(`Mime type mismatch when loading ${url}`); - } - if (!response.ok) { - throw new Error( - `Unable to load ${url} ${response.status} ${response.statusText}` - ); - } - return response; - } - async function loadAsDataURL(url, mimeType) { - const response = await getOKResponse(url, mimeType); - return await readResponseAsDataURL(response); - } - async function readResponseAsDataURL(response) { - const blob = await response.blob(); - const dataURL = await new Promise((resolve) => { - const reader = new FileReader(); - reader.onloadend = () => resolve(reader.result); - reader.readAsDataURL(blob); - }); - return dataURL; - } - async function loadAsText(url, mimeType, origin) { - const response = await getOKResponse(url, mimeType, origin); - return await response.text(); - } - - function parseArray(text) { - return text - .replace(/\r/g, "") - .split("\n") - .map((s) => s.trim()) - .filter((s) => s); - } - function formatArray(arr) { - return arr.concat("").join("\n"); - } - function getStringSize(value) { - return value.length * 2; - } - function getParenthesesRange(input, searchStartIndex = 0) { - return getOpenCloseRange(input, searchStartIndex, "(", ")", []); - } - function getOpenCloseRange( - input, - searchStartIndex, - openToken, - closeToken, - excludeRanges - ) { - let indexOf; - if (excludeRanges.length === 0) { - indexOf = (token, pos) => input.indexOf(token, pos); - } else { - indexOf = (token, pos) => - indexOfExcluding(input, token, pos, excludeRanges); - } - const {length} = input; - let depth = 0; - let firstOpenIndex = -1; - for (let i = searchStartIndex; i < length; i++) { - if (depth === 0) { - const openIndex = indexOf(openToken, i); - if (openIndex < 0) { - break; - } - firstOpenIndex = openIndex; - depth++; - i = openIndex; - } else { - const closeIndex = indexOf(closeToken, i); - if (closeIndex < 0) { - break; - } - const openIndex = indexOf(openToken, i); - if (openIndex < 0 || closeIndex <= openIndex) { - depth--; - if (depth === 0) { - return {start: firstOpenIndex, end: closeIndex + 1}; - } - i = closeIndex; - } else { - depth++; - i = openIndex; - } - } - } - return null; - } - function indexOfExcluding(input, search, position, excludeRanges) { - const i = input.indexOf(search, position); - const exclusion = excludeRanges.find((r) => i >= r.start && i < r.end); - if (exclusion) { - return indexOfExcluding( - input, - search, - exclusion.end, - excludeRanges - ); - } - return i; - } - function splitExcluding(input, separator, excludeRanges) { - const parts = []; - let commaIndex = -1; - let currIndex = 0; - while ( - (commaIndex = indexOfExcluding( - input, - separator, - currIndex, - excludeRanges - )) >= 0 - ) { - parts.push(input.substring(currIndex, commaIndex).trim()); - currIndex = commaIndex + 1; - } - parts.push(input.substring(currIndex).trim()); - return parts; - } - - function parse24HTime(time) { - return time.split(":").map((x) => parseInt(x)); - } - function compareTime(time1, time2) { - if (time1[0] === time2[0] && time1[1] === time2[1]) { - return 0; - } - if ( - time1[0] < time2[0] || - (time1[0] === time2[0] && time1[1] < time2[1]) - ) { - return -1; - } - return 1; - } - function nextTimeInterval(time0, time1, date = new Date()) { - const a = parse24HTime(time0); - const b = parse24HTime(time1); - const t = [date.getHours(), date.getMinutes()]; - if (compareTime(a, b) > 0) { - return nextTimeInterval(time1, time0, date); - } - if (compareTime(a, b) === 0) { - return null; - } - if (compareTime(t, a) < 0) { - date.setHours(a[0]); - date.setMinutes(a[1]); - date.setSeconds(0); - date.setMilliseconds(0); - return date.getTime(); - } - if (compareTime(t, b) < 0) { - date.setHours(b[0]); - date.setMinutes(b[1]); - date.setSeconds(0); - date.setMilliseconds(0); - return date.getTime(); - } - return new Date( - date.getFullYear(), - date.getMonth(), - date.getDate() + 1, - a[0], - a[1] - ).getTime(); - } - function isInTimeIntervalLocal(time0, time1, date = new Date()) { - const a = parse24HTime(time0); - const b = parse24HTime(time1); - const t = [date.getHours(), date.getMinutes()]; - if (compareTime(a, b) > 0) { - return compareTime(a, t) <= 0 || compareTime(t, b) < 0; - } - return compareTime(a, t) <= 0 && compareTime(t, b) < 0; - } - function isInTimeIntervalUTC(time0, time1, timestamp) { - if (time1 < time0) { - return timestamp <= time1 || time0 <= timestamp; - } - return time0 < timestamp && timestamp < time1; - } - function getDuration(time) { - let duration = 0; - if (time.seconds) { - duration += time.seconds * 1000; - } - if (time.minutes) { - duration += time.minutes * 60 * 1000; - } - if (time.hours) { - duration += time.hours * 60 * 60 * 1000; - } - if (time.days) { - duration += time.days * 24 * 60 * 60 * 1000; - } - return duration; - } - function getDurationInMinutes(time) { - return getDuration(time) / 1000 / 60; - } - function getSunsetSunriseUTCTime(latitude, longitude, date) { - const dec31 = Date.UTC(date.getUTCFullYear(), 0, 0, 0, 0, 0, 0); - const oneDay = getDuration({days: 1}); - const dayOfYear = Math.floor((date.getTime() - dec31) / oneDay); - const zenith = 90.83333333333333; - const D2R = Math.PI / 180; - const R2D = 180 / Math.PI; - const lnHour = longitude / 15; - function getTime(isSunrise) { - const t = dayOfYear + ((isSunrise ? 6 : 18) - lnHour) / 24; - const M = 0.9856 * t - 3.289; - let L = - M + - 1.916 * Math.sin(M * D2R) + - 0.02 * Math.sin(2 * M * D2R) + - 282.634; - if (L > 360) { - L -= 360; - } else if (L < 0) { - L += 360; - } - let RA = R2D * Math.atan(0.91764 * Math.tan(L * D2R)); - if (RA > 360) { - RA -= 360; - } else if (RA < 0) { - RA += 360; - } - const Lquadrant = Math.floor(L / 90) * 90; - const RAquadrant = Math.floor(RA / 90) * 90; - RA += Lquadrant - RAquadrant; - RA /= 15; - const sinDec = 0.39782 * Math.sin(L * D2R); - const cosDec = Math.cos(Math.asin(sinDec)); - const cosH = - (Math.cos(zenith * D2R) - sinDec * Math.sin(latitude * D2R)) / - (cosDec * Math.cos(latitude * D2R)); - if (cosH > 1) { - return { - alwaysDay: false, - alwaysNight: true, - time: 0 - }; - } else if (cosH < -1) { - return { - alwaysDay: true, - alwaysNight: false, - time: 0 - }; - } - const H = - (isSunrise - ? 360 - R2D * Math.acos(cosH) - : R2D * Math.acos(cosH)) / 15; - const T = H + RA - 0.06571 * t - 6.622; - let UT = T - lnHour; - if (UT > 24) { - UT -= 24; - } else if (UT < 0) { - UT += 24; - } - return { - alwaysDay: false, - alwaysNight: false, - time: Math.round(UT * getDuration({hours: 1})) - }; - } - const sunriseTime = getTime(true); - const sunsetTime = getTime(false); - if (sunriseTime.alwaysDay || sunsetTime.alwaysDay) { - return { - alwaysDay: true, - alwaysNight: false, - sunriseTime: 0, - sunsetTime: 0 - }; - } else if (sunriseTime.alwaysNight || sunsetTime.alwaysNight) { - return { - alwaysDay: false, - alwaysNight: true, - sunriseTime: 0, - sunsetTime: 0 - }; - } - return { - alwaysDay: false, - alwaysNight: false, - sunriseTime: sunriseTime.time, - sunsetTime: sunsetTime.time - }; - } - function isNightAtLocation(latitude, longitude, date = new Date()) { - const time = getSunsetSunriseUTCTime(latitude, longitude, date); - if (time.alwaysDay) { - return false; - } else if (time.alwaysNight) { - return true; - } - const sunriseTime = time.sunriseTime; - const sunsetTime = time.sunsetTime; - const currentTime = - date.getUTCHours() * getDuration({hours: 1}) + - date.getUTCMinutes() * getDuration({minutes: 1}) + - date.getUTCSeconds() * getDuration({seconds: 1}) + - date.getUTCMilliseconds(); - return isInTimeIntervalUTC(sunsetTime, sunriseTime, currentTime); - } - function nextTimeChangeAtLocation(latitude, longitude, date = new Date()) { - const time = getSunsetSunriseUTCTime(latitude, longitude, date); - if (time.alwaysDay) { - return date.getTime() + getDuration({days: 1}); - } else if (time.alwaysNight) { - return date.getTime() + getDuration({days: 1}); - } - const [firstTimeOnDay, lastTimeOnDay] = - time.sunriseTime < time.sunsetTime - ? [time.sunriseTime, time.sunsetTime] - : [time.sunsetTime, time.sunriseTime]; - const currentTime = - date.getUTCHours() * getDuration({hours: 1}) + - date.getUTCMinutes() * getDuration({minutes: 1}) + - date.getUTCSeconds() * getDuration({seconds: 1}) + - date.getUTCMilliseconds(); - if (currentTime <= firstTimeOnDay) { - return Date.UTC( - date.getUTCFullYear(), - date.getUTCMonth(), - date.getUTCDate(), - 0, - 0, - 0, - firstTimeOnDay - ); - } - if (currentTime <= lastTimeOnDay) { - return Date.UTC( - date.getUTCFullYear(), - date.getUTCMonth(), - date.getUTCDate(), - 0, - 0, - 0, - lastTimeOnDay - ); - } - return Date.UTC( - date.getUTCFullYear(), - date.getUTCMonth(), - date.getUTCDate() + 1, - 0, - 0, - 0, - firstTimeOnDay - ); - } - - async function readText(params) { - return new Promise((resolve, reject) => { - if (isXMLHttpRequestSupported) { - const request = new XMLHttpRequest(); - request.overrideMimeType("text/plain"); - request.open("GET", params.url, true); - request.onload = () => { - if (request.status >= 200 && request.status < 300) { - resolve(request.responseText); - } else { - reject( - new Error( - `${request.status}: ${request.statusText}` - ) - ); - } - }; - request.onerror = () => - reject( - new Error(`${request.status}: ${request.statusText}`) - ); - if (params.timeout) { - request.timeout = params.timeout; - request.ontimeout = () => - reject( - new Error("File loading stopped due to timeout") - ); - } - request.send(); - } else if (isFetchSupported) { - let abortController; - let signal; - let timedOut = false; - if (params.timeout) { - abortController = new AbortController(); - signal = abortController.signal; - setTimeout(() => { - abortController.abort(); - timedOut = true; - }, params.timeout); - } - fetch(params.url, {signal}) - .then((response) => { - if (response.status >= 200 && response.status < 300) { - resolve(response.text()); - } else { - reject( - new Error( - `${response.status}: ${response.statusText}` - ) - ); - } - }) - .catch((error) => { - if (timedOut) { - reject( - new Error("File loading stopped due to timeout") - ); - } else { - reject(error); - } - }); - } else { - reject( - new Error( - `Neither XMLHttpRequest nor Fetch API are accessible!` - ) - ); - } - }); - } - class LimitedCacheStorage { - static QUOTA_BYTES = (navigator.deviceMemory || 4) * 16 * 1024 * 1024; - static TTL = getDuration({minutes: 10}); - static ALARM_NAME = "network"; - bytesInUse = 0; - records = new Map(); - static alarmIsActive = false; - constructor() { - chrome.alarms.onAlarm.addListener(async (alarm) => { - if (alarm.name === LimitedCacheStorage.ALARM_NAME) { - LimitedCacheStorage.alarmIsActive = false; - this.removeExpiredRecords(); - } - }); - } - static ensureAlarmIsScheduled() { - if (!this.alarmIsActive) { - chrome.alarms.create(LimitedCacheStorage.ALARM_NAME, { - delayInMinutes: 1 - }); - this.alarmIsActive = true; - } - } - has(url) { - return this.records.has(url); - } - get(url) { - if (this.records.has(url)) { - const record = this.records.get(url); - record.expires = Date.now() + LimitedCacheStorage.TTL; - this.records.delete(url); - this.records.set(url, record); - return record.value; - } - return null; - } - set(url, value) { - LimitedCacheStorage.ensureAlarmIsScheduled(); - const size = getStringSize(value); - if (size > LimitedCacheStorage.QUOTA_BYTES) { - return; - } - for (const [url, record] of this.records) { - if (this.bytesInUse + size > LimitedCacheStorage.QUOTA_BYTES) { - this.records.delete(url); - this.bytesInUse -= record.size; - } else { - break; - } - } - const expires = Date.now() + LimitedCacheStorage.TTL; - this.records.set(url, {url, value, size, expires}); - this.bytesInUse += size; - } - removeExpiredRecords() { - const now = Date.now(); - for (const [url, record] of this.records) { - if (record.expires < now) { - this.records.delete(url); - this.bytesInUse -= record.size; - } else { - break; - } - } - if (this.records.size !== 0) { - LimitedCacheStorage.ensureAlarmIsScheduled(); - } - } - } - function createFileLoader() { - const caches = { - "data-url": new LimitedCacheStorage(), - "text": new LimitedCacheStorage() - }; - const loaders = { - "data-url": loadAsDataURL, - "text": loadAsText - }; - async function get({url, responseType, mimeType, origin}) { - const cache = caches[responseType]; - const load = loaders[responseType]; - if (cache.has(url)) { - return cache.get(url); - } - const data = await load(url, mimeType, origin); - cache.set(url, data); - return data; - } - return {get}; - } - - function cachedFactory(factory, size) { - const cache = new Map(); - return (key) => { - if (cache.has(key)) { - return cache.get(key); - } - const value = factory(key); - cache.set(key, value); - if (cache.size > size) { - const first = cache.keys().next().value; - cache.delete(first); - } - return value; - }; - } - - function getURLHostOrProtocol($url) { - const url = new URL($url); - if (url.host) { - return url.host; - } else if (url.protocol === "file:") { - return url.pathname; - } - return url.protocol; - } - function compareURLPatterns(a, b) { - return a.localeCompare(b); - } - function isURLInList(url, list) { - for (let i = 0; i < list.length; i++) { - if (isURLMatched(url, list[i])) { - return true; - } - } - return false; - } - function isURLMatched(url, urlTemplate) { - if (isRegExp(urlTemplate)) { - const regexp = createRegExp(urlTemplate); - return regexp ? regexp.test(url) : false; - } - return matchURLPattern(url, urlTemplate); - } - const URL_CACHE_SIZE = 32; - const prepareURL = cachedFactory((url) => { - let parsed; - try { - parsed = new URL(url); - } catch (err) { - return null; - } - const {hostname, pathname, protocol, port} = parsed; - const hostParts = hostname.split(".").reverse(); - const pathParts = pathname.split("/").slice(1); - if (!pathParts[pathParts.length - 1]) { - pathParts.splice(pathParts.length - 1, 1); - } - return { - hostParts, - pathParts, - port, - protocol - }; - }, URL_CACHE_SIZE); - const URL_MATCH_CACHE_SIZE = 32 * 1024; - const preparePattern = cachedFactory((pattern) => { - if (!pattern) { - return null; - } - const exactStart = pattern.startsWith("^"); - const exactEnd = pattern.endsWith("$"); - if (exactStart) { - pattern = pattern.substring(1); - } - if (exactEnd) { - pattern = pattern.substring(0, pattern.length - 1); - } - let protocol = ""; - const protocolIndex = pattern.indexOf("://"); - if (protocolIndex > 0) { - protocol = pattern.substring(0, protocolIndex + 1); - pattern = pattern.substring(protocolIndex + 3); - } - const slashIndex = pattern.indexOf("/"); - const host = - slashIndex < 0 ? pattern : pattern.substring(0, slashIndex); - let hostName = host; - let isIPv6 = false; - let ipV6End = -1; - if (host.startsWith("[")) { - ipV6End = host.indexOf("]"); - if (ipV6End > 0) { - isIPv6 = true; - } - } - let port = "*"; - const portIndex = host.lastIndexOf(":"); - if (portIndex >= 0 && (!isIPv6 || ipV6End < portIndex)) { - hostName = host.substring(0, portIndex); - port = host.substring(portIndex + 1); - } - if (isIPv6) { - try { - const ipV6URL = new URL(`http://${hostName}`); - hostName = ipV6URL.hostname; - } catch (err) {} - } - const hostParts = hostName.split(".").reverse(); - const path = slashIndex < 0 ? "" : pattern.substring(slashIndex + 1); - const pathParts = path.split("/"); - if (!pathParts[pathParts.length - 1]) { - pathParts.splice(pathParts.length - 1, 1); - } - return { - hostParts, - pathParts, - port, - exactStart, - exactEnd, - protocol - }; - }, URL_MATCH_CACHE_SIZE); - function matchURLPattern(url, pattern) { - const u = prepareURL(url); - const p = preparePattern(pattern); - if ( - !(u && p) || - p.hostParts.length > u.hostParts.length || - (p.exactStart && p.hostParts.length !== u.hostParts.length) || - (p.exactEnd && p.pathParts.length !== u.pathParts.length) || - (p.port !== "*" && p.port !== u.port) || - (p.protocol && p.protocol !== u.protocol) - ) { - return false; - } - for (let i = 0; i < p.hostParts.length; i++) { - const pHostPart = p.hostParts[i]; - const uHostPart = u.hostParts[i]; - if (pHostPart !== "*" && pHostPart !== uHostPart) { - return false; - } - } - if ( - p.hostParts.length >= 2 && - p.hostParts.at(-1) !== "*" && - (p.hostParts.length < u.hostParts.length - 1 || - (p.hostParts.length === u.hostParts.length - 1 && - u.hostParts.at(-1) !== "www")) - ) { - return false; - } - if (p.pathParts.length === 0) { - return true; - } - if (p.pathParts.length > u.pathParts.length) { - return false; - } - for (let i = 0; i < p.pathParts.length; i++) { - const pPathPart = p.pathParts[i]; - const uPathPart = u.pathParts[i]; - if (pPathPart !== "*" && pPathPart !== uPathPart) { - return false; - } - } - return true; - } - function isRegExp(pattern) { - return ( - pattern.startsWith("/") && - pattern.endsWith("/") && - pattern.length > 2 - ); - } - const REGEXP_CACHE_SIZE = 1024; - const createRegExp = cachedFactory((pattern) => { - if (pattern.startsWith("/")) { - pattern = pattern.substring(1); - } - if (pattern.endsWith("/")) { - pattern = pattern.substring(0, pattern.length - 1); - } - try { - return new RegExp(pattern); - } catch (err) { - return null; - } - }, REGEXP_CACHE_SIZE); - function isPDF(url) { - try { - const {hostname, pathname} = new URL(url); - if (pathname.includes(".pdf")) { - if ( - (hostname.match(/(wikipedia|wikimedia)\.org$/i) && - pathname.match(/^\/.*\/[a-z]+\:[^\:\/]+\.pdf/i)) || - (hostname.match(/timetravel\.mementoweb\.org$/i) && - pathname.match(/^\/reconstruct/i) && - pathname.match(/\.pdf$/i)) || - (hostname.match(/dropbox\.com$/i) && - pathname.match(/^\/s\//i) && - pathname.match(/\.pdf$/i)) - ) { - return false; - } - if (pathname.endsWith(".pdf")) { - for (let i = pathname.length; i >= 0; i--) { - if (pathname[i] === "=") { - return false; - } else if (pathname[i] === "/") { - return true; - } - } - } else { - return false; - } - } - } catch (e) {} - return false; - } - function isURLEnabled( - url, - userSettings, - {isProtected, isInDarkList, isDarkThemeDetected}, - isAllowedFileSchemeAccess = true - ) { - if (isLocalFile(url) && !isAllowedFileSchemeAccess) { - return false; - } - if (isProtected && !userSettings.enableForProtectedPages) { - return false; - } - if (isPDF(url)) { - return userSettings.enableForPDF; - } - const isURLInDisabledList = isURLInList(url, userSettings.disabledFor); - const isURLInEnabledList = isURLInList(url, userSettings.enabledFor); - if (!userSettings.enabledByDefault) { - return isURLInEnabledList; - } - if (isURLInEnabledList) { - return true; - } - if ( - isInDarkList || - (userSettings.detectDarkTheme && isDarkThemeDetected) - ) { - return false; - } - return !isURLInDisabledList; - } - function isFullyQualifiedDomain(candidate) { - return ( - /^[a-z0-9\.\-]+$/i.test(candidate) && candidate.indexOf("..") === -1 - ); - } - function isFullyQualifiedDomainWildcard(candidate) { - if (!candidate.includes("*") || !/^[a-z0-9\.\-\*]+$/i.test(candidate)) { - return false; - } - const labels = candidate.split("."); - for (const label of labels) { - if (label !== "*" && !/^[a-z0-9\-]+$/i.test(label)) { - return false; - } - } - return true; - } - function fullyQualifiedDomainMatchesWildcard(wildcard, candidate) { - const wildcardLabels = wildcard.toLowerCase().split("."); - const candidateLabels = candidate.toLowerCase().split("."); - if (candidateLabels.length < wildcardLabels.length) { - return false; - } - while (wildcardLabels.length) { - const wildcardLabel = wildcardLabels.pop(); - const candidateLabel = candidateLabels.pop(); - if (wildcardLabel !== "*" && wildcardLabel !== candidateLabel) { - return false; - } - } - return true; - } - function isLocalFile(url) { - return Boolean(url) && url.startsWith("file:///"); - } - - const INDEX_CACHE_CLEANUP_INTERVAL_IN_MS = 60000; - function parseSitesFixesConfig(text, options) { - const sites = []; - const blocks = text.replace(/\r/g, "").split(/^\s*={2,}\s*$/gm); - blocks.forEach((block) => { - const lines = block.split("\n"); - const commandIndices = []; - lines.forEach((ln, i) => { - if (ln.match(/^[A-Z]+(\s[A-Z]+){0,2}$/)) { - commandIndices.push(i); - } - }); - if (commandIndices.length === 0) { - return; - } - const siteFix = { - url: parseArray(lines.slice(0, commandIndices[0]).join("\n")) - }; - commandIndices.forEach((commandIndex, i) => { - const command = lines[commandIndex].trim(); - const valueText = lines - .slice( - commandIndex + 1, - i === commandIndices.length - 1 - ? lines.length - : commandIndices[i + 1] - ) - .join("\n"); - const prop = options.getCommandPropName(command); - if (!prop) { - return; - } - const value = options.parseCommandValue(command, valueText); - siteFix[prop] = value; - }); - sites.push(siteFix); - }); - return sites; - } - function getDomain(url) { - try { - return new URL(url).hostname.toLowerCase(); - } catch (error) { - return url.split("/")[0].toLowerCase(); - } - } - function encodeOffsets(offsets) { - return offsets - .map(([offset, length]) => { - const stringOffset = offset.toString(36); - const stringLength = length.toString(36); - return ( - "0".repeat(4 - stringOffset.length) + - stringOffset + - "0".repeat(3 - stringLength.length) + - stringLength - ); - }) - .join(""); - } - function decodeOffset(offsets, index) { - const base = (4 + 3) * index; - const offset = parseInt(offsets.substring(base + 0, base + 4), 36); - const length = parseInt(offsets.substring(base + 4, base + 4 + 3), 36); - return [offset, offset + length]; - } - function addLabel(set, label, index) { - if (!set[label]) { - set[label] = [index]; - } else if (!set[label].includes(index)) { - set[label].push(index); - } - } - function extractDomainLabelsFromFullyQualifiedDomainWildcard( - fullyQualifiedDomainWildcard - ) { - const postfixStart = fullyQualifiedDomainWildcard.lastIndexOf("*"); - const postfix = fullyQualifiedDomainWildcard.substring( - postfixStart + 2 - ); - if (postfixStart < 0 || postfix.length === 0) { - return fullyQualifiedDomainWildcard.split("."); - } - const labels = [postfix]; - const prefix = fullyQualifiedDomainWildcard.substring(0, postfixStart); - prefix - .split(".") - .filter(Boolean) - .forEach((l) => labels.concat(l)); - return labels; - } - function indexConfigURLs(urls) { - const domains = {}; - const domainLabels = {}; - const nonstandard = []; - const domainLabelFrequencies = {}; - const domainLabelMembers = []; - for (let index = 0; index < urls.length; index++) { - const block = urls[index]; - const blockDomainLabels = new Set(); - for (const url of block) { - const domain = getDomain(url); - if (isFullyQualifiedDomain(domain)) { - addLabel(domains, domain, index); - } else if (isFullyQualifiedDomainWildcard(domain)) { - const labels = - extractDomainLabelsFromFullyQualifiedDomainWildcard( - domain - ); - domainLabelMembers.push({labels, index}); - labels.forEach((l) => blockDomainLabels.add(l)); - } else { - nonstandard.push(index); - break; - } - } - for (const label of blockDomainLabels) { - if (domainLabelFrequencies[label]) { - domainLabelFrequencies[label]++; - } else { - domainLabelFrequencies[label] = 1; - } - } - } - for (const {labels, index} of domainLabelMembers) { - let label = labels[0]; - for (const currLabel of labels) { - if ( - domainLabelFrequencies[currLabel] < - domainLabelFrequencies[label] - ) { - label = currLabel; - } - } - addLabel(domainLabels, label, index); - } - return {domains, domainLabels, nonstandard}; - } - function processSiteFixesConfigBlock( - text, - offsets, - recordStart, - recordEnd, - urls - ) { - const block = text.substring(recordStart, recordEnd); - const lines = block.split("\n"); - const commandIndices = []; - lines.forEach((ln, i) => { - if (ln.match(/^[A-Z]+(\s[A-Z]+){0,2}$/)) { - commandIndices.push(i); - } - }); - if (commandIndices.length === 0) { - return; - } - offsets.push([recordStart, recordEnd - recordStart]); - const urls_ = parseArray(lines.slice(0, commandIndices[0]).join("\n")); - urls.push(urls_); - } - function extractURLsFromSiteFixesConfig(text) { - const urls = []; - const offsets = []; - let recordStart = 0; - const delimiterRegex = /^\s*={2,}\s*$/gm; - let delimiter; - while ((delimiter = delimiterRegex.exec(text))) { - const nextDelimiterStart = delimiter.index; - const nextDelimiterEnd = delimiter.index + delimiter[0].length; - processSiteFixesConfigBlock( - text, - offsets, - recordStart, - nextDelimiterStart, - urls - ); - recordStart = nextDelimiterEnd; - } - processSiteFixesConfigBlock( - text, - offsets, - recordStart, - text.length, - urls - ); - return {urls, offsets}; - } - function indexSitesFixesConfig(text) { - const {urls, offsets} = extractURLsFromSiteFixesConfig(text); - const {domains, domainLabels, nonstandard} = indexConfigURLs(urls); - return { - offsets: encodeOffsets(offsets), - domains, - domainLabels, - nonstandard, - cacheDomainIndex: {}, - cacheSiteFix: {}, - cacheCleanupTimer: null - }; - } - function lookupConfigURLsInDomainLabels( - domain, - recordIds, - currRecordIds, - getAllRecordURLs - ) { - for (const recordId of currRecordIds) { - const recordURLs = getAllRecordURLs(recordId); - for (const ruleUrl of recordURLs) { - const wildcard = getDomain(ruleUrl); - if ( - isFullyQualifiedDomainWildcard(wildcard) && - fullyQualifiedDomainMatchesWildcard(wildcard, domain) - ) { - recordIds.push(recordId); - } - } - } - } - function lookupConfigURLs(domain, index, getAllRecordURLs) { - const labels = domain.split("."); - let recordIds = []; - if (index.domainLabels.hasOwnProperty("*")) { - recordIds = recordIds.concat(index.domainLabels["*"]); - } - for (const label of labels) { - if (index.domainLabels.hasOwnProperty(label)) { - const currRecordIds = index.domainLabels[label]; - lookupConfigURLsInDomainLabels( - domain, - recordIds, - currRecordIds, - getAllRecordURLs - ); - } - } - for (let i = 0; i < labels.length; i++) { - const substring = labels.slice(i).join("."); - if (index.domains.hasOwnProperty(substring)) { - recordIds = recordIds.concat(index.domains[substring]); - } - if (index.domainLabels.hasOwnProperty(substring)) { - const currRecordIds = index.domainLabels[substring]; - lookupConfigURLsInDomainLabels( - domain, - recordIds, - currRecordIds, - getAllRecordURLs - ); - } - } - if (index.nonstandard) { - for (const currRecordId of index.nonstandard) { - const urls = getAllRecordURLs(currRecordId); - if (urls.some((url) => isURLMatched(domain, getDomain(url)))) { - recordIds.push(currRecordId); - continue; - } - } - } - recordIds = Array.from(new Set(recordIds)); - return recordIds; - } - function getSiteFix(text, index, options, id) { - if (index.cacheSiteFix.hasOwnProperty(id)) { - return index.cacheSiteFix[id]; - } - const [blockStart, blockEnd] = decodeOffset(index.offsets, id); - const block = text.substring(blockStart, blockEnd); - const fix = parseSitesFixesConfig(block, options)[0]; - index.cacheSiteFix[id] = fix; - return fix; - } - function scheduleCacheCleanup(index) { - clearTimeout(index.cacheCleanupTimer); - index.cacheCleanupTimer = setTimeout(() => { - index.cacheCleanupTimer = null; - index.cacheDomainIndex = {}; - index.cacheSiteFix = {}; - }, INDEX_CACHE_CLEANUP_INTERVAL_IN_MS); - } - function getSitesFixesFor(url, text, index, options) { - const records = []; - const domain = getDomain(url); - if (!index.cacheDomainIndex[domain]) { - index.cacheDomainIndex[domain] = lookupConfigURLs( - domain, - index, - (recordId) => getSiteFix(text, index, options, recordId).url - ); - } - const recordIds = index.cacheDomainIndex[domain]; - for (const recordId of recordIds) { - const fix = getSiteFix(text, index, options, recordId); - records.push(fix); - } - scheduleCacheCleanup(index); - return records; - } - function indexSiteListConfig(text) { - const urls = parseArray(text); - const urls2D = urls.map((u) => [u]); - const {domains, domainLabels, nonstandard} = indexConfigURLs(urls2D); - return {domains, domainLabels, nonstandard, urls}; - } - function getSiteListFor(url, index) { - const domain = getDomain(url); - const recordIds = lookupConfigURLs(domain, index, (recordId) => [ - index.urls[recordId] - ]); - const result = []; - for (const recordId of recordIds) { - result.push(index.urls[recordId]); - } - return result; - } - function isURLInSiteList(url, index) { - if (index === null) { - return false; - } - const urls = getSiteListFor(url, index); - return isURLInList(url, urls); - } - - const SEPERATOR = "=".repeat(32); - const backgroundPropertyLength = "background: ".length; - const textPropertyLength = "text: ".length; - const humanizeNumber = (number) => { - if (number > 3) { - return `${number}th`; - } - switch (number) { - case 0: - return "0"; - case 1: - return "1st"; - case 2: - return "2nd"; - case 3: - return "3rd"; - } - }; - const isValidHexColor = (color) => { - return /^#([0-9a-fA-F]{3}){1,2}$/.test(color); - }; - function parseColorSchemeConfig(config) { - const sections = config.split(`${SEPERATOR}\n\n`); - const definedColorSchemeNames = new Set(); - let lastDefinedColorSchemeName = ""; - const definedColorSchemes = { - light: {}, - dark: {} - }; - let interrupt = false; - let error = null; - const throwError = (message) => { - if (!interrupt) { - interrupt = true; - error = message; - } - }; - sections.forEach((section) => { - if (interrupt) { - return; - } - const lines = section.split("\n"); - const name = lines[0]; - if (!name) { - throwError("No color scheme name was found."); - return; - } - if (definedColorSchemeNames.has(name)) { - throwError( - `The color scheme name "${name}" is already defined.` - ); - return; - } - if ( - lastDefinedColorSchemeName && - lastDefinedColorSchemeName !== "Default" && - name.localeCompare(lastDefinedColorSchemeName) < 0 - ) { - throwError( - `The color scheme name "${name}" is not in alphabetical order.` - ); - return; - } - lastDefinedColorSchemeName = name; - definedColorSchemeNames.add(name); - if (lines[1]) { - throwError( - `The second line of the color scheme "${name}" is not empty.` - ); - return; - } - const checkVariant = (lineIndex, isSecondVariant) => { - const variant = lines[lineIndex]; - if (!variant) { - throwError( - `The third line of the color scheme "${name}" is not defined.` - ); - return; - } - if ( - variant !== "LIGHT" && - variant !== "DARK" && - isSecondVariant && - variant === "Light" - ) { - throwError( - `The ${humanizeNumber(lineIndex)} line of the color scheme "${name}" is not a valid variant.` - ); - return; - } - const firstProperty = lines[lineIndex + 1]; - if (!firstProperty) { - throwError( - `The ${humanizeNumber(lineIndex + 1)} line of the color scheme "${name}" is not defined.` - ); - return; - } - if (!firstProperty.startsWith("background: ")) { - throwError( - `The ${humanizeNumber(lineIndex + 1)} line of the color scheme "${name}" is not background-color property.` - ); - return; - } - const backgroundColor = firstProperty.slice( - backgroundPropertyLength - ); - if (!isValidHexColor(backgroundColor)) { - throwError( - `The ${humanizeNumber(lineIndex + 1)} line of the color scheme "${name}" is not a valid hex color.` - ); - return; - } - const secondProperty = lines[lineIndex + 2]; - if (!secondProperty) { - throwError( - `The ${humanizeNumber(lineIndex + 2)} line of the color scheme "${name}" is not defined.` - ); - return; - } - if (!secondProperty.startsWith("text: ")) { - throwError( - `The ${humanizeNumber(lineIndex + 2)} line of the color scheme "${name}" is not text-color property.` - ); - return; - } - const textColor = secondProperty.slice(textPropertyLength); - if (!isValidHexColor(textColor)) { - throwError( - `The ${humanizeNumber(lineIndex + 2)} line of the color scheme "${name}" is not a valid hex color.` - ); - return; - } - return { - backgroundColor, - textColor, - variant - }; - }; - const firstVariant = checkVariant(2, false); - const isFirstVariantLight = firstVariant.variant === "LIGHT"; - delete firstVariant.variant; - if (interrupt) { - return; - } - let secondVariant = null; - let isSecondVariantLight = false; - if (lines[6]) { - secondVariant = checkVariant(6, true); - isSecondVariantLight = secondVariant.variant === "LIGHT"; - delete secondVariant.variant; - if (interrupt) { - return; - } - if (lines.length > 11 || lines[9] || lines[10]) { - throwError( - `The color scheme "${name}" doesn't end with 1 new line.` - ); - return; - } - } else if (lines.length > 7) { - throwError( - `The color scheme "${name}" doesn't end with 1 new line.` - ); - return; - } - if (secondVariant) { - if (isFirstVariantLight === isSecondVariantLight) { - throwError( - `The color scheme "${name}" has the same variant twice.` - ); - return; - } - if (isFirstVariantLight) { - definedColorSchemes.light[name] = firstVariant; - definedColorSchemes.dark[name] = secondVariant; - } else { - definedColorSchemes.light[name] = secondVariant; - definedColorSchemes.dark[name] = firstVariant; - } - } else if (isFirstVariantLight) { - definedColorSchemes.light[name] = firstVariant; - } else { - definedColorSchemes.dark[name] = firstVariant; - } - }); - return {result: definedColorSchemes, error: error}; - } - - function logInfo(...args) {} - function logWarn(...args) {} - - var ThemeEngine; - (function (ThemeEngine) { - ThemeEngine["cssFilter"] = "cssFilter"; - ThemeEngine["svgFilter"] = "svgFilter"; - ThemeEngine["staticTheme"] = "staticTheme"; - ThemeEngine["dynamicTheme"] = "dynamicTheme"; - })(ThemeEngine || (ThemeEngine = {})); - - var AutomationMode; - (function (AutomationMode) { - AutomationMode["NONE"] = ""; - AutomationMode["TIME"] = "time"; - AutomationMode["SYSTEM"] = "system"; - AutomationMode["LOCATION"] = "location"; - })(AutomationMode || (AutomationMode = {})); - - const DEFAULT_COLORS = { - darkScheme: { - background: "#181a1b", - text: "#e8e6e3" - }, - lightScheme: { - background: "#dcdad7", - text: "#181a1b" - } - }; - const DEFAULT_THEME = { - mode: 1, - brightness: 100, - contrast: 100, - grayscale: 0, - sepia: 0, - useFont: false, - fontFamily: isMacOS - ? "Helvetica Neue" - : isWindows - ? "Segoe UI" - : "Open Sans", - textStroke: 0, - engine: ThemeEngine.dynamicTheme, - stylesheet: "", - darkSchemeBackgroundColor: DEFAULT_COLORS.darkScheme.background, - darkSchemeTextColor: DEFAULT_COLORS.darkScheme.text, - lightSchemeBackgroundColor: DEFAULT_COLORS.lightScheme.background, - lightSchemeTextColor: DEFAULT_COLORS.lightScheme.text, - scrollbarColor: "", - selectionColor: "auto", - styleSystemControls: false, - lightColorScheme: "Default", - darkColorScheme: "Default", - immediateModify: false - }; - const DEFAULT_COLORSCHEME = { - light: { - Default: { - backgroundColor: DEFAULT_COLORS.lightScheme.background, - textColor: DEFAULT_COLORS.lightScheme.text - } - }, - dark: { - Default: { - backgroundColor: DEFAULT_COLORS.darkScheme.background, - textColor: DEFAULT_COLORS.darkScheme.text - } - } - }; - const filterModeSites = [ - "*.officeapps.live.com", - "*.sharepoint.com", - "docs.google.com", - "onedrive.live.com" - ]; - const DEFAULT_SETTINGS = { - schemeVersion: 0, - enabled: true, - fetchNews: true, - theme: DEFAULT_THEME, - presets: [], - customThemes: filterModeSites.map((url) => { - const engine = ThemeEngine.svgFilter; - return { - url: [url], - theme: {...DEFAULT_THEME, engine}, - builtIn: true - }; - }), - enabledByDefault: true, - enabledFor: [], - disabledFor: [], - changeBrowserTheme: false, - syncSettings: true, - syncSitesFixes: false, - automation: { - enabled: isEdge && isMobile ? true : false, - mode: - isEdge && isMobile - ? AutomationMode.SYSTEM - : AutomationMode.NONE, - behavior: "OnOff" - }, - time: { - activation: "18:00", - deactivation: "9:00" - }, - location: { - latitude: null, - longitude: null - }, - previewNewDesign: false, - previewNewestDesign: false, - enableForPDF: true, - enableForProtectedPages: false, - enableContextMenus: false, - detectDarkTheme: true - }; - - function debounce(delay, fn) { - let timeoutId = null; - return (...args) => { - if (timeoutId) { - clearTimeout(timeoutId); - } - timeoutId = setTimeout(() => { - timeoutId = null; - fn(...args); - }, delay); - }; - } - - function canInjectScript(url) { - if (url === "about:blank") { - return false; - } - if (isEdge) { - return Boolean( - url && - !url.startsWith("chrome") && - !url.startsWith("data") && - !url.startsWith("devtools") && - !url.startsWith("edge") && - !url.startsWith("https://chrome.google.com/webstore") && - !url.startsWith("https://chromewebstore.google.com/") && - !url.startsWith( - "https://microsoftedge.microsoft.com/addons" - ) && - !url.startsWith("view-source") - ); - } - return Boolean( - url && - !url.startsWith("chrome") && - !url.startsWith("https://chrome.google.com/webstore") && - !url.startsWith("https://chromewebstore.google.com/") && - !url.startsWith("data") && - !url.startsWith("devtools") && - !url.startsWith("view-source") - ); - } - async function readSyncStorage(defaults) { - return new Promise((resolve) => { - chrome.storage.sync.get(null, (sync) => { - if (chrome.runtime.lastError) { - console.error(chrome.runtime.lastError.message); - resolve(null); - return; - } - for (const key in sync) { - if (!sync[key]) { - continue; - } - const metaKeysCount = sync[key].__meta_split_count; - if (!metaKeysCount) { - continue; - } - let string = ""; - for (let i = 0; i < metaKeysCount; i++) { - string += sync[`${key}_${i.toString(36)}`]; - delete sync[`${key}_${i.toString(36)}`]; - } - try { - sync[key] = JSON.parse(string); - } catch (error) { - console.error( - `sync[${key}]: Could not parse record from sync storage: ${string}` - ); - resolve(null); - return; - } - } - sync = { - ...defaults, - ...sync - }; - resolve(sync); - }); - }); - } - async function readLocalStorage(defaults) { - return new Promise((resolve) => { - chrome.storage.local.get(defaults, (local) => { - if (chrome.runtime.lastError) { - console.error(chrome.runtime.lastError.message); - resolve(defaults); - return; - } - resolve(local); - }); - }); - } - function prepareSyncStorage(values) { - for (const key in values) { - const value = values[key]; - const string = JSON.stringify(value); - const totalLength = string.length + key.length; - if (totalLength > chrome.storage.sync.QUOTA_BYTES_PER_ITEM) { - const maxLength = - chrome.storage.sync.QUOTA_BYTES_PER_ITEM - - key.length - - 1 - - 2; - const minimalKeysNeeded = Math.ceil(string.length / maxLength); - for (let i = 0; i < minimalKeysNeeded; i++) { - values[`${key}_${i.toString(36)}`] = string.substring( - i * maxLength, - (i + 1) * maxLength - ); - } - values[key] = { - __meta_split_count: minimalKeysNeeded - }; - } - } - return values; - } - async function writeSyncStorage(values) { - return new Promise(async (resolve, reject) => { - const packaged = prepareSyncStorage(values); - chrome.storage.sync.set(packaged, () => { - if (chrome.runtime.lastError) { - reject(chrome.runtime.lastError); - return; - } - resolve(); - }); - }); - } - async function writeLocalStorage(values) { - return new Promise(async (resolve) => { - chrome.storage.local.set(values, () => { - resolve(); - }); - }); - } - async function removeSyncStorage(keys) { - return new Promise(async (resolve) => { - chrome.storage.sync.remove(keys, () => { - resolve(); - }); - }); - } - async function removeLocalStorage(keys) { - return new Promise(async (resolve) => { - chrome.storage.local.remove(keys, () => { - resolve(); - }); - }); - } - async function getCommands() { - return new Promise((resolve) => { - if (!chrome.commands) { - resolve([]); - return; - } - chrome.commands.getAll((commands) => { - if (commands) { - resolve(commands); - } else { - resolve([]); - } - }); - }); - } - function keepListeningToEvents() { - let intervalId = 0; - const keepHopeAlive = () => { - intervalId = setInterval( - chrome.runtime.getPlatformInfo, - getDuration({seconds: 10}) - ); - }; - chrome.runtime.onStartup.addListener(keepHopeAlive); - keepHopeAlive(); - const stopListening = () => { - clearInterval(intervalId); - chrome.runtime.onStartup.removeListener(keepHopeAlive); - }; - return stopListening; - } - - class PromiseBarrier { - resolves = []; - rejects = []; - wasResolved = false; - wasRejected = false; - resolution; - reason; - async entry() { - if (this.wasResolved) { - return Promise.resolve(this.resolution); - } - if (this.wasRejected) { - return Promise.reject(this.reason); - } - return new Promise((resolve, reject) => { - this.resolves.push(resolve); - this.rejects.push(reject); - }); - } - async resolve(value) { - if (this.wasRejected || this.wasResolved) { - return; - } - this.wasResolved = true; - this.resolution = value; - this.resolves.forEach((resolve) => resolve(value)); - this.resolves = []; - this.rejects = []; - return new Promise((resolve) => setTimeout(() => resolve())); - } - async reject(reason) { - if (this.wasRejected || this.wasResolved) { - return; - } - this.wasRejected = true; - this.reason = reason; - this.rejects.forEach((reject) => reject(reason)); - this.resolves = []; - this.rejects = []; - return new Promise((resolve) => setTimeout(() => resolve())); - } - isPending() { - return !this.wasResolved && !this.wasRejected; - } - isFulfilled() { - return this.wasResolved; - } - isRejected() { - return this.wasRejected; - } - } - - function isBoolean(x) { - return typeof x === "boolean"; - } - function isPlainObject(x) { - return typeof x === "object" && x != null && !Array.isArray(x); - } - function isArray(x) { - return Array.isArray(x); - } - function isString(x) { - return typeof x === "string"; - } - function isNonEmptyString(x) { - return x && isString(x); - } - function isNonEmptyArrayOfNonEmptyStrings(x) { - return ( - Array.isArray(x) && - x.length > 0 && - x.every((s) => isNonEmptyString(s)) - ); - } - function isRegExpMatch(regexp) { - return (x) => { - return isString(x) && x.match(regexp) != null; - }; - } - const isTime = isRegExpMatch( - /^((0?[0-9])|(1[0-9])|(2[0-3])):([0-5][0-9])$/ - ); - function isNumber(x) { - return typeof x === "number" && !isNaN(x); - } - function isNumberBetween(min, max) { - return (x) => { - return isNumber(x) && x >= min && x <= max; - }; - } - function isOneOf(...values) { - return (x) => values.includes(x); - } - function hasRequiredProperties(obj, keys) { - return keys.every((key) => obj.hasOwnProperty(key)); - } - function createValidator() { - const errors = []; - function validateProperty(obj, key, validator, fallback) { - if (!obj.hasOwnProperty(key) || validator(obj[key])) { - return; - } - errors.push( - `Unexpected value for "${key}": ${JSON.stringify(obj[key])}` - ); - obj[key] = fallback[key]; - } - function validateArray(obj, key, validator) { - if (!obj.hasOwnProperty(key)) { - return; - } - const wrongValues = new Set(); - const arr = obj[key]; - for (let i = 0; i < arr.length; i++) { - if (!validator(arr[i])) { - wrongValues.add(arr[i]); - arr.splice(i, 1); - i--; - } - } - if (wrongValues.size > 0) { - errors.push( - `Array "${key}" has wrong values: ${Array.from(wrongValues) - .map((v) => JSON.stringify(v)) - .join("; ")}` - ); - } - } - return {validateProperty, validateArray, errors}; - } - function validateSettings(settings) { - if (!isPlainObject(settings)) { - return { - errors: ["Settings are not a plain object"], - settings: DEFAULT_SETTINGS - }; - } - const {validateProperty, validateArray, errors} = createValidator(); - const isValidPresetTheme = (theme) => { - if (!isPlainObject(theme)) { - return false; - } - const {errors: themeErrors} = validateTheme(theme); - return themeErrors.length === 0; - }; - validateProperty(settings, "schemeVersion", isNumber, DEFAULT_SETTINGS); - validateProperty(settings, "enabled", isBoolean, DEFAULT_SETTINGS); - validateProperty(settings, "fetchNews", isBoolean, DEFAULT_SETTINGS); - validateProperty(settings, "theme", isPlainObject, DEFAULT_SETTINGS); - const {errors: themeErrors} = validateTheme(settings.theme); - errors.push(...themeErrors); - validateProperty(settings, "presets", isArray, DEFAULT_SETTINGS); - validateArray(settings, "presets", (preset) => { - const presetValidator = createValidator(); - if ( - !( - isPlainObject(preset) && - hasRequiredProperties(preset, [ - "id", - "name", - "urls", - "theme" - ]) - ) - ) { - return false; - } - presetValidator.validateProperty( - preset, - "id", - isNonEmptyString, - preset - ); - presetValidator.validateProperty( - preset, - "name", - isNonEmptyString, - preset - ); - presetValidator.validateProperty( - preset, - "urls", - isNonEmptyArrayOfNonEmptyStrings, - preset - ); - presetValidator.validateProperty( - preset, - "theme", - isValidPresetTheme, - preset - ); - return presetValidator.errors.length === 0; - }); - validateProperty(settings, "customThemes", isArray, DEFAULT_SETTINGS); - validateArray(settings, "customThemes", (custom) => { - if ( - !( - isPlainObject(custom) && - hasRequiredProperties(custom, ["url", "theme"]) - ) - ) { - return false; - } - const presetValidator = createValidator(); - presetValidator.validateProperty( - custom, - "url", - isNonEmptyArrayOfNonEmptyStrings, - custom - ); - presetValidator.validateProperty( - custom, - "theme", - isValidPresetTheme, - custom - ); - return presetValidator.errors.length === 0; - }); - validateProperty(settings, "enabledFor", isArray, DEFAULT_SETTINGS); - validateArray(settings, "enabledFor", isNonEmptyString); - validateProperty(settings, "disabledFor", isArray, DEFAULT_SETTINGS); - validateArray(settings, "disabledFor", isNonEmptyString); - validateProperty( - settings, - "enabledByDefault", - isBoolean, - DEFAULT_SETTINGS - ); - validateProperty( - settings, - "changeBrowserTheme", - isBoolean, - DEFAULT_SETTINGS - ); - validateProperty(settings, "syncSettings", isBoolean, DEFAULT_SETTINGS); - validateProperty( - settings, - "syncSitesFixes", - isBoolean, - DEFAULT_SETTINGS - ); - validateProperty( - settings, - "automation", - (automation) => { - if (!isPlainObject(automation)) { - return false; - } - const automationValidator = createValidator(); - automationValidator.validateProperty( - automation, - "enabled", - isBoolean, - automation - ); - automationValidator.validateProperty( - automation, - "mode", - isOneOf( - AutomationMode.SYSTEM, - AutomationMode.TIME, - AutomationMode.LOCATION, - AutomationMode.NONE - ), - automation - ); - automationValidator.validateProperty( - automation, - "behavior", - isOneOf("OnOff", "Scheme"), - automation - ); - return automationValidator.errors.length === 0; - }, - DEFAULT_SETTINGS - ); - validateProperty( - settings, - AutomationMode.TIME, - (time) => { - if (!isPlainObject(time)) { - return false; - } - const timeValidator = createValidator(); - timeValidator.validateProperty( - time, - "activation", - isTime, - time - ); - timeValidator.validateProperty( - time, - "deactivation", - isTime, - time - ); - return timeValidator.errors.length === 0; - }, - DEFAULT_SETTINGS - ); - validateProperty( - settings, - AutomationMode.LOCATION, - (location) => { - if (!isPlainObject(location)) { - return false; - } - const locValidator = createValidator(); - const isValidLoc = (x) => x === null || isNumber(x); - locValidator.validateProperty( - location, - "latitude", - isValidLoc, - location - ); - locValidator.validateProperty( - location, - "longitude", - isValidLoc, - location - ); - return locValidator.errors.length === 0; - }, - DEFAULT_SETTINGS - ); - validateProperty( - settings, - "previewNewDesign", - isBoolean, - DEFAULT_SETTINGS - ); - validateProperty( - settings, - "previewNewestDesign", - isBoolean, - DEFAULT_SETTINGS - ); - validateProperty(settings, "enableForPDF", isBoolean, DEFAULT_SETTINGS); - validateProperty( - settings, - "enableForProtectedPages", - isBoolean, - DEFAULT_SETTINGS - ); - validateProperty( - settings, - "enableContextMenus", - isBoolean, - DEFAULT_SETTINGS - ); - validateProperty( - settings, - "detectDarkTheme", - isBoolean, - DEFAULT_SETTINGS - ); - return {errors, settings}; - } - function validateTheme(theme) { - if (!isPlainObject(theme)) { - return { - errors: ["Theme is not a plain object"], - theme: DEFAULT_THEME - }; - } - const {validateProperty, errors} = createValidator(); - validateProperty(theme, "mode", isOneOf(0, 1), DEFAULT_THEME); - validateProperty( - theme, - "brightness", - isNumberBetween(0, 200), - DEFAULT_THEME - ); - validateProperty( - theme, - "contrast", - isNumberBetween(0, 200), - DEFAULT_THEME - ); - validateProperty( - theme, - "grayscale", - isNumberBetween(0, 100), - DEFAULT_THEME - ); - validateProperty( - theme, - "sepia", - isNumberBetween(0, 100), - DEFAULT_THEME - ); - validateProperty(theme, "useFont", isBoolean, DEFAULT_THEME); - validateProperty(theme, "fontFamily", isNonEmptyString, DEFAULT_THEME); - validateProperty( - theme, - "textStroke", - isNumberBetween(0, 1), - DEFAULT_THEME - ); - validateProperty( - theme, - "engine", - isOneOf("dynamicTheme", "staticTheme", "cssFilter", "svgFilter"), - DEFAULT_THEME - ); - validateProperty(theme, "stylesheet", isString, DEFAULT_THEME); - validateProperty( - theme, - "darkSchemeBackgroundColor", - isRegExpMatch(/^#[0-9a-f]{6}$/i), - DEFAULT_THEME - ); - validateProperty( - theme, - "darkSchemeTextColor", - isRegExpMatch(/^#[0-9a-f]{6}$/i), - DEFAULT_THEME - ); - validateProperty( - theme, - "lightSchemeBackgroundColor", - isRegExpMatch(/^#[0-9a-f]{6}$/i), - DEFAULT_THEME - ); - validateProperty( - theme, - "lightSchemeTextColor", - isRegExpMatch(/^#[0-9a-f]{6}$/i), - DEFAULT_THEME - ); - validateProperty( - theme, - "scrollbarColor", - (x) => x === "" || isRegExpMatch(/^(auto)|(#[0-9a-f]{6})$/i)(x), - DEFAULT_THEME - ); - validateProperty( - theme, - "selectionColor", - isRegExpMatch(/^(auto)|(#[0-9a-f]{6})$/i), - DEFAULT_THEME - ); - validateProperty( - theme, - "styleSystemControls", - isBoolean, - DEFAULT_THEME - ); - validateProperty( - theme, - "lightColorScheme", - isNonEmptyString, - DEFAULT_THEME - ); - validateProperty( - theme, - "darkColorScheme", - isNonEmptyString, - DEFAULT_THEME - ); - validateProperty(theme, "immediateModify", isBoolean, DEFAULT_THEME); - return {errors, theme}; - } - - const SAVE_TIMEOUT = 1000; - class UserStorage { - static loadBarrier; - static saveStorageBarrier; - static settings; - static async loadSettings() { - if (!UserStorage.settings) { - UserStorage.settings = - await UserStorage.loadSettingsFromStorage(); - } - } - static fillDefaults(settings) { - settings.theme = {...DEFAULT_THEME, ...settings.theme}; - settings.time = {...DEFAULT_SETTINGS.time, ...settings.time}; - settings.presets.forEach((preset) => { - preset.theme = {...DEFAULT_THEME, ...preset.theme}; - }); - settings.customThemes.forEach((site) => { - site.theme = {...DEFAULT_THEME, ...site.theme}; - }); - if (settings.customThemes.length === 0) { - settings.customThemes = DEFAULT_SETTINGS.customThemes; - } - } - static migrateAutomationSettings(settings) { - if (typeof settings.automation === "string") { - const automationMode = settings.automation; - const automationBehavior = settings.automationBehaviour; - if (settings.automation === "") { - settings.automation = { - enabled: false, - mode: automationMode, - behavior: automationBehavior - }; - } else { - settings.automation = { - enabled: true, - mode: automationMode, - behavior: automationBehavior - }; - } - delete settings.automationBehaviour; - } - } - static migrateSiteListsV2(deprecated) { - const settings = {}; - settings.enabledByDefault = !deprecated.applyToListedOnly; - if (settings.enabledByDefault) { - settings.disabledFor = deprecated.siteList ?? []; - settings.enabledFor = deprecated.siteListEnabled ?? []; - } else { - settings.disabledFor = []; - settings.enabledFor = deprecated.siteList ?? []; - } - return settings; - } - static async loadSettingsFromStorage() { - if (UserStorage.loadBarrier) { - return await UserStorage.loadBarrier.entry(); - } - UserStorage.loadBarrier = new PromiseBarrier(); - let local = await readLocalStorage(DEFAULT_SETTINGS); - if (local.schemeVersion < 2) { - const sync = await readSyncStorage({schemeVersion: 0}); - if (!sync || sync.schemeVersion < 2) { - const deprecatedDefaults = { - siteList: [], - siteListEnabled: [], - applyToListedOnly: false - }; - const localDeprecated = - await readLocalStorage(deprecatedDefaults); - const localTransformed = - UserStorage.migrateSiteListsV2(localDeprecated); - await writeLocalStorage({ - schemeVersion: 2, - ...localTransformed - }); - await removeLocalStorage(Object.keys(deprecatedDefaults)); - const syncDeprecated = - await readSyncStorage(deprecatedDefaults); - const syncTransformed = - UserStorage.migrateSiteListsV2(syncDeprecated); - await writeSyncStorage({ - schemeVersion: 2, - ...syncTransformed - }); - await removeSyncStorage(Object.keys(deprecatedDefaults)); - local = await readLocalStorage(DEFAULT_SETTINGS); - } - } - const {errors: localCfgErrors} = validateSettings(local); - localCfgErrors.forEach((err) => logWarn(err)); - if (local.syncSettings == null) { - local.syncSettings = DEFAULT_SETTINGS.syncSettings; - } - if (!local.syncSettings) { - UserStorage.migrateAutomationSettings(local); - UserStorage.fillDefaults(local); - UserStorage.loadBarrier.resolve(local); - return local; - } - const $sync = await readSyncStorage(DEFAULT_SETTINGS); - if (!$sync) { - local.syncSettings = false; - UserStorage.set({syncSettings: false}); - UserStorage.saveSyncSetting(false); - UserStorage.loadBarrier.resolve(local); - return local; - } - const {errors: syncCfgErrors} = validateSettings($sync); - syncCfgErrors.forEach((err) => logWarn(err)); - UserStorage.migrateAutomationSettings($sync); - UserStorage.fillDefaults($sync); - UserStorage.loadBarrier.resolve($sync); - return $sync; - } - static async saveSettings() { - if (!UserStorage.settings) { - return; - } - await UserStorage.saveSettingsIntoStorage(); - } - static async saveSyncSetting(sync) { - const obj = {syncSettings: sync}; - await writeLocalStorage(obj); - try { - await writeSyncStorage(obj); - } catch (err) { - logWarn( - "Settings synchronization was disabled due to error:", - chrome.runtime.lastError - ); - UserStorage.set({syncSettings: false}); - } - } - static saveSettingsIntoStorage = debounce(SAVE_TIMEOUT, async () => { - if (UserStorage.saveStorageBarrier) { - await UserStorage.saveStorageBarrier.entry(); - return; - } - UserStorage.saveStorageBarrier = new PromiseBarrier(); - const settings = UserStorage.settings; - if (settings.syncSettings) { - try { - await writeSyncStorage(settings); - } catch (err) { - logWarn( - "Settings synchronization was disabled due to error:", - chrome.runtime.lastError - ); - UserStorage.set({syncSettings: false}); - await UserStorage.saveSyncSetting(false); - await writeLocalStorage(settings); - } - } else { - await writeLocalStorage(settings); - } - UserStorage.saveStorageBarrier.resolve(); - UserStorage.saveStorageBarrier = null; - }); - static set($settings) { - if (!UserStorage.settings) { - return; - } - const filterSiteList = (siteList) => { - if (!Array.isArray(siteList)) { - const list = []; - for (const key in siteList) { - const index = Number(key); - if (!isNaN(index)) { - list[index] = siteList[key]; - } - } - siteList = list; - } - return siteList.filter((pattern) => { - let isOK = false; - try { - isURLMatched("https://google.com/", pattern); - isURLMatched("[::1]:1337", pattern); - isOK = true; - } catch (err) {} - return isOK && pattern !== "/"; - }); - }; - const {enabledFor, disabledFor} = $settings; - const updatedSettings = {...UserStorage.settings, ...$settings}; - if (enabledFor) { - updatedSettings.enabledFor = filterSiteList(enabledFor); - } - if (disabledFor) { - updatedSettings.disabledFor = filterSiteList(disabledFor); - } - UserStorage.settings = updatedSettings; - } - } - - function getUILanguage() { - let code; - if ( - "i18n" in chrome && - "getUILanguage" in chrome.i18n && - typeof chrome.i18n.getUILanguage === "function" - ) { - code = chrome.i18n.getUILanguage(); - } else { - code = navigator.language.split("-")[0]; - } - if (code.endsWith("-mac")) { - return code.substring(0, code.length - 4); - } - return code; - } - - const BLOG_URL = "https://darkreader.org/blog/"; - const NEWS_URL = "https://darkreader.org/blog/posts.json"; - const UNINSTALL_URL = "https://darkreader.org/goodluck/"; - const HELP_URL = "https://darkreader.org/help"; - const CONFIG_URL_BASE = - "https://raw.githubusercontent.com/darkreader/darkreader/main/src/config"; - const helpLocales = [ - "be", - "cs", - "de", - "en", - "es", - "fr", - "it", - "ja", - "nl", - "pt", - "ru", - "sr", - "tr", - "zh-CN", - "zh-TW" - ]; - function getHelpURL() { - const locale = getUILanguage(); - const matchLocale = - helpLocales.find((hl) => hl === locale) || - helpLocales.find((hl) => locale.startsWith(hl)) || - "en"; - return `${HELP_URL}/${matchLocale}/`; - } - function getBlogPostURL(postId) { - return `${BLOG_URL}${postId}/`; - } - - const CONFIG_URLs = { - darkSites: { - remote: `${CONFIG_URL_BASE}/dark-sites.config`, - local: "../config/dark-sites.config" - }, - dynamicThemeFixes: { - remote: `${CONFIG_URL_BASE}/dynamic-theme-fixes.config`, - local: "../config/dynamic-theme-fixes.config" - }, - inversionFixes: { - remote: `${CONFIG_URL_BASE}/inversion-fixes.config`, - local: "../config/inversion-fixes.config" - }, - staticThemes: { - remote: `${CONFIG_URL_BASE}/static-themes.config`, - local: "../config/static-themes.config" - }, - colorSchemes: { - remote: `${CONFIG_URL_BASE}/color-schemes.drconf`, - local: "../config/color-schemes.drconf" - }, - detectorHints: { - remote: `${CONFIG_URL_BASE}/detector-hints.config`, - local: "../config/detector-hints.config" - } - }; - const REMOTE_TIMEOUT_MS = getDuration({seconds: 10}); - class ConfigManager { - static DARK_SITES_INDEX; - static DETECTOR_HINTS_INDEX; - static DETECTOR_HINTS_RAW; - static DYNAMIC_THEME_FIXES_INDEX; - static DYNAMIC_THEME_FIXES_RAW; - static INVERSION_FIXES_INDEX; - static INVERSION_FIXES_RAW; - static STATIC_THEMES_INDEX; - static STATIC_THEMES_RAW; - static COLOR_SCHEMES_RAW; - static raw = { - darkSites: null, - detectorHints: null, - dynamicThemeFixes: null, - inversionFixes: null, - staticThemes: null, - colorSchemes: null - }; - static overrides = { - darkSites: null, - detectorHints: null, - dynamicThemeFixes: null, - inversionFixes: null, - staticThemes: null - }; - static async loadConfig({name, local, localURL, remoteURL}) { - let $config; - const loadLocal = async () => await readText({url: localURL}); - if (local) { - $config = await loadLocal(); - } else { - try { - $config = await readText({ - url: `${remoteURL}?nocache=${Date.now()}`, - timeout: REMOTE_TIMEOUT_MS - }); - } catch (err) { - console.error(`${name} remote load error`, err); - $config = await loadLocal(); - } - } - return $config; - } - static async loadColorSchemes({local}) { - const $config = await ConfigManager.loadConfig({ - name: "Color Schemes", - local, - localURL: CONFIG_URLs.colorSchemes.local, - remoteURL: CONFIG_URLs.colorSchemes.remote - }); - ConfigManager.raw.colorSchemes = $config; - ConfigManager.handleColorSchemes(); - } - static async loadDarkSites({local}) { - const sites = await ConfigManager.loadConfig({ - name: "Dark Sites", - local, - localURL: CONFIG_URLs.darkSites.local, - remoteURL: CONFIG_URLs.darkSites.remote - }); - ConfigManager.raw.darkSites = sites; - ConfigManager.handleDarkSites(); - } - static async loadDetectorHints({local}) { - const $config = await ConfigManager.loadConfig({ - name: "Detector Hints", - local, - localURL: CONFIG_URLs.detectorHints.local, - remoteURL: CONFIG_URLs.detectorHints.remote - }); - ConfigManager.raw.detectorHints = $config; - ConfigManager.handleDetectorHints(); - } - static async loadDynamicThemeFixes({local}) { - const fixes = await ConfigManager.loadConfig({ - name: "Dynamic Theme Fixes", - local, - localURL: CONFIG_URLs.dynamicThemeFixes.local, - remoteURL: CONFIG_URLs.dynamicThemeFixes.remote - }); - ConfigManager.raw.dynamicThemeFixes = fixes; - ConfigManager.handleDynamicThemeFixes(); - } - static async loadInversionFixes({local}) { - const fixes = await ConfigManager.loadConfig({ - name: "Inversion Fixes", - local, - localURL: CONFIG_URLs.inversionFixes.local, - remoteURL: CONFIG_URLs.inversionFixes.remote - }); - ConfigManager.raw.inversionFixes = fixes; - ConfigManager.handleInversionFixes(); - } - static async loadStaticThemes({local}) { - const themes = await ConfigManager.loadConfig({ - name: "Static Themes", - local, - localURL: CONFIG_URLs.staticThemes.local, - remoteURL: CONFIG_URLs.staticThemes.remote - }); - ConfigManager.raw.staticThemes = themes; - ConfigManager.handleStaticThemes(); - } - static async load(config) { - if (!config) { - await UserStorage.loadSettings(); - config = { - local: !UserStorage.settings.syncSitesFixes - }; - } - await Promise.all([ - ConfigManager.loadColorSchemes(config), - ConfigManager.loadDarkSites(config), - ConfigManager.loadDetectorHints(config), - ConfigManager.loadDynamicThemeFixes(config), - ConfigManager.loadInversionFixes(config), - ConfigManager.loadStaticThemes(config) - ]).catch((err) => console.error("Fatality", err)); - } - static handleColorSchemes() { - const $config = ConfigManager.raw.colorSchemes; - const {result, error} = parseColorSchemeConfig($config || ""); - if (error) { - ConfigManager.COLOR_SCHEMES_RAW = DEFAULT_COLORSCHEME; - return; - } - ConfigManager.COLOR_SCHEMES_RAW = result; - } - static handleDarkSites() { - const $sites = ConfigManager.raw.darkSites; - ConfigManager.DARK_SITES_INDEX = indexSiteListConfig($sites || ""); - } - static handleDetectorHints() { - const $hints = ConfigManager.raw.detectorHints || ""; - ConfigManager.DETECTOR_HINTS_INDEX = indexSitesFixesConfig($hints); - ConfigManager.DETECTOR_HINTS_RAW = $hints; - } - static handleDynamicThemeFixes() { - const $fixes = - ConfigManager.overrides.dynamicThemeFixes || - ConfigManager.raw.dynamicThemeFixes || - ""; - ConfigManager.DYNAMIC_THEME_FIXES_INDEX = - indexSitesFixesConfig($fixes); - ConfigManager.DYNAMIC_THEME_FIXES_RAW = $fixes; - } - static handleInversionFixes() { - const $fixes = - ConfigManager.overrides.inversionFixes || - ConfigManager.raw.inversionFixes || - ""; - ConfigManager.INVERSION_FIXES_INDEX = indexSitesFixesConfig($fixes); - ConfigManager.INVERSION_FIXES_RAW = $fixes; - } - static handleStaticThemes() { - const $themes = - ConfigManager.overrides.staticThemes || - ConfigManager.raw.staticThemes || - ""; - ConfigManager.STATIC_THEMES_INDEX = indexSitesFixesConfig($themes); - ConfigManager.STATIC_THEMES_RAW = $themes; - } - static isURLInDarkList(url) { - return isURLInSiteList(url, ConfigManager.DARK_SITES_INDEX); - } - } - - function isArrayLike(items) { - return items.length != null; - } - function forEach(items, iterator) { - if (isArrayLike(items)) { - for (let i = 0, len = items.length; i < len; i++) { - iterator(items[i]); - } - } else { - for (const item of items) { - iterator(item); - } - } - } - function push(array, addition) { - forEach(addition, (a) => array.push(a)); - } - - function formatSitesFixesConfig(fixes, options) { - const lines = []; - fixes.forEach((fix, i) => { - push(lines, fix.url); - options.props.forEach((prop) => { - const command = options.getPropCommandName(prop); - const value = fix[prop]; - if (options.shouldIgnoreProp(prop, value)) { - return; - } - lines.push(""); - lines.push(command); - const formattedValue = options.formatPropValue(prop, value); - if (formattedValue) { - lines.push(formattedValue); - } - }); - if (i < fixes.length - 1) { - lines.push(""); - lines.push("=".repeat(32)); - lines.push(""); - } - }); - lines.push(""); - return lines.join("\n"); - } - - function scale(x, inLow, inHigh, outLow, outHigh) { - return ((x - inLow) * (outHigh - outLow)) / (inHigh - inLow) + outLow; - } - function clamp(x, min, max) { - return Math.min(max, Math.max(min, x)); - } - function multiplyMatrices(m1, m2) { - const result = []; - for (let i = 0, len = m1.length; i < len; i++) { - result[i] = []; - for (let j = 0, len2 = m2[0].length; j < len2; j++) { - let sum = 0; - for (let k = 0, len3 = m1[0].length; k < len3; k++) { - sum += m1[i][k] * m2[k][j]; - } - result[i][j] = sum; - } - } - return result; - } - - function createFilterMatrix(config) { - let m = Matrix.identity(); - if (config.sepia !== 0) { - m = multiplyMatrices(m, Matrix.sepia(config.sepia / 100)); - } - if (config.grayscale !== 0) { - m = multiplyMatrices(m, Matrix.grayscale(config.grayscale / 100)); - } - if (config.contrast !== 100) { - m = multiplyMatrices(m, Matrix.contrast(config.contrast / 100)); - } - if (config.brightness !== 100) { - m = multiplyMatrices(m, Matrix.brightness(config.brightness / 100)); - } - if (config.mode === 1) { - m = multiplyMatrices(m, Matrix.invertNHue()); - } - return m; - } - function applyColorMatrix([r, g, b], matrix) { - const rgb = [[r / 255], [g / 255], [b / 255], [1], [1]]; - const result = multiplyMatrices(matrix, rgb); - return [0, 1, 2].map((i) => - clamp(Math.round(result[i][0] * 255), 0, 255) - ); - } - const Matrix = { - identity() { - return [ - [1, 0, 0, 0, 0], - [0, 1, 0, 0, 0], - [0, 0, 1, 0, 0], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - invertNHue() { - return [ - [0.333, -0.667, -0.667, 0, 1], - [-0.667, 0.333, -0.667, 0, 1], - [-0.667, -0.667, 0.333, 0, 1], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - brightness(v) { - return [ - [v, 0, 0, 0, 0], - [0, v, 0, 0, 0], - [0, 0, v, 0, 0], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - contrast(v) { - const t = (1 - v) / 2; - return [ - [v, 0, 0, 0, t], - [0, v, 0, 0, t], - [0, 0, v, 0, t], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - sepia(v) { - return [ - [ - 0.393 + 0.607 * (1 - v), - 0.769 - 0.769 * (1 - v), - 0.189 - 0.189 * (1 - v), - 0, - 0 - ], - [ - 0.349 - 0.349 * (1 - v), - 0.686 + 0.314 * (1 - v), - 0.168 - 0.168 * (1 - v), - 0, - 0 - ], - [ - 0.272 - 0.272 * (1 - v), - 0.534 - 0.534 * (1 - v), - 0.131 + 0.869 * (1 - v), - 0, - 0 - ], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - grayscale(v) { - return [ - [ - 0.2126 + 0.7874 * (1 - v), - 0.7152 - 0.7152 * (1 - v), - 0.0722 - 0.0722 * (1 - v), - 0, - 0 - ], - [ - 0.2126 - 0.2126 * (1 - v), - 0.7152 + 0.2848 * (1 - v), - 0.0722 - 0.0722 * (1 - v), - 0, - 0 - ], - [ - 0.2126 - 0.2126 * (1 - v), - 0.7152 - 0.7152 * (1 - v), - 0.0722 + 0.9278 * (1 - v), - 0, - 0 - ], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - } - }; - - const excludedSelectors = [ - "pre", - "pre *", - "code", - '[aria-hidden="true"]', - '[class*="fa-"]', - ".fa", - ".fab", - ".fad", - ".fal", - ".far", - ".fas", - ".fass", - ".fasr", - ".fat", - ".icofont", - '[style*="font-"]', - '[class*="icon"]', - '[class*="Icon"]', - '[class*="symbol"]', - '[class*="Symbol"]', - ".glyphicon", - '[class*="material-symbol"]', - '[class*="material-icon"]', - "mu", - '[class*="mu-"]', - ".typcn", - '[class*="vjs-"]' - ]; - function createTextStyle(config) { - const lines = []; - lines.push(`*:not(${excludedSelectors.join(", ")}) {`); - if (config.useFont && config.fontFamily) { - lines.push(` font-family: ${config.fontFamily} !important;`); - } - if (config.textStroke > 0) { - lines.push( - ` -webkit-text-stroke: ${config.textStroke}px !important;` - ); - lines.push(` text-stroke: ${config.textStroke}px !important;`); - } - lines.push("}"); - return lines.join("\n"); - } - - var FilterMode; - (function (FilterMode) { - FilterMode[(FilterMode["light"] = 0)] = "light"; - FilterMode[(FilterMode["dark"] = 1)] = "dark"; - })(FilterMode || (FilterMode = {})); - function createCSSFilterStyleSheet(config, url, isTopFrame, fixes, index) { - const filterValue = getCSSFilterValue(config); - const reverseFilterValue = "invert(100%) hue-rotate(180deg)"; - return cssFilterStyleSheetTemplate( - "html", - filterValue, - reverseFilterValue, - config, - url, - isTopFrame, - fixes, - index - ); - } - function cssFilterStyleSheetTemplate( - filterRoot, - filterValue, - reverseFilterValue, - config, - url, - isTopFrame, - fixes, - index - ) { - const fix = getInversionFixesFor(url, fixes, index); - const lines = []; - lines.push("@media screen {"); - if (filterValue && isTopFrame) { - lines.push(""); - lines.push("/* Leading rule */"); - lines.push(createLeadingRule(filterRoot, filterValue)); - } - if (config.mode === FilterMode.dark) { - lines.push(""); - lines.push("/* Reverse rule */"); - lines.push(createReverseRule(reverseFilterValue, fix)); - } - if (config.useFont || config.textStroke > 0) { - lines.push(""); - lines.push("/* Font */"); - lines.push(createTextStyle(config)); - } - lines.push(""); - lines.push("/* Text contrast */"); - lines.push("html {"); - lines.push(" text-shadow: 0 0 0 !important;"); - lines.push("}"); - lines.push(""); - lines.push("/* Full screen */"); - [":-webkit-full-screen", ":-moz-full-screen", ":fullscreen"].forEach( - (fullScreen) => { - lines.push(`${fullScreen}, ${fullScreen} * {`); - lines.push(" -webkit-filter: none !important;"); - lines.push(" filter: none !important;"); - lines.push("}"); - } - ); - if (isTopFrame) { - const light = [255, 255, 255]; - const bgColor = light; - lines.push(""); - lines.push("/* Page background */"); - lines.push("html {"); - lines.push(` background: rgb(${bgColor.join(",")}) !important;`); - lines.push("}"); - } - if (fix.css && fix.css.length > 0 && config.mode === FilterMode.dark) { - lines.push(""); - lines.push("/* Custom rules */"); - lines.push(fix.css); - } - lines.push(""); - lines.push("}"); - return lines.join("\n"); - } - function getCSSFilterValue(config) { - const filters = []; - if (config.mode === FilterMode.dark) { - filters.push("invert(100%) hue-rotate(180deg)"); - } - if (config.brightness !== 100) { - filters.push(`brightness(${config.brightness}%)`); - } - if (config.contrast !== 100) { - filters.push(`contrast(${config.contrast}%)`); - } - if (config.grayscale !== 0) { - filters.push(`grayscale(${config.grayscale}%)`); - } - if (config.sepia !== 0) { - filters.push(`sepia(${config.sepia}%)`); - } - if (filters.length === 0) { - return null; - } - return filters.join(" "); - } - function createLeadingRule(filterRoot, filterValue) { - return [ - `${filterRoot} {`, - ` -webkit-filter: ${filterValue} !important;`, - ` filter: ${filterValue} !important;`, - "}" - ].join("\n"); - } - function joinSelectors(selectors) { - return selectors.map((s) => s.replace(/\,$/, "")).join(",\n"); - } - function createReverseRule(reverseFilterValue, fix) { - const lines = []; - if (fix.invert.length > 0) { - lines.push(`${joinSelectors(fix.invert)} {`); - lines.push(` -webkit-filter: ${reverseFilterValue} !important;`); - lines.push(` filter: ${reverseFilterValue} !important;`); - lines.push("}"); - } - if (fix.noinvert.length > 0) { - lines.push(`${joinSelectors(fix.noinvert)} {`); - lines.push(" -webkit-filter: none !important;"); - lines.push(" filter: none !important;"); - lines.push("}"); - } - if (fix.removebg.length > 0) { - lines.push(`${joinSelectors(fix.removebg)} {`); - lines.push(" background: white !important;"); - lines.push("}"); - } - return lines.join("\n"); - } - function getInversionFixesFor(url, fixes, index) { - const inversionFixes = getSitesFixesFor(url, fixes, index, { - commands: Object.keys(inversionFixesCommands), - getCommandPropName: (command) => inversionFixesCommands[command], - parseCommandValue: (command, value) => { - if (command === "CSS") { - return value.trim(); - } - return parseArray(value); - } - }); - const common = { - url: inversionFixes[0].url, - invert: inversionFixes[0].invert || [], - noinvert: inversionFixes[0].noinvert || [], - removebg: inversionFixes[0].removebg || [], - css: inversionFixes[0].css || "" - }; - if (url) { - const matches = inversionFixes - .slice(1) - .filter((s) => isURLInList(url, s.url)) - .sort((a, b) => b.url[0].length - a.url[0].length); - if (matches.length > 0) { - const found = matches[0]; - return { - url: found.url, - invert: common.invert.concat(found.invert || []), - noinvert: common.noinvert.concat(found.noinvert || []), - removebg: common.removebg.concat(found.removebg || []), - css: [common.css, found.css].filter((s) => s).join("\n") - }; - } - } - return common; - } - const inversionFixesCommands = { - "INVERT": "invert", - "NO INVERT": "noinvert", - "REMOVE BG": "removebg", - "CSS": "css" - }; - function parseInversionFixes(text) { - return parseSitesFixesConfig(text, { - commands: Object.keys(inversionFixesCommands), - getCommandPropName: (command) => inversionFixesCommands[command], - parseCommandValue: (command, value) => { - if (command === "CSS") { - return value.trim(); - } - return parseArray(value); - } - }); - } - function formatInversionFixes(inversionFixes) { - const fixes = inversionFixes - .slice() - .sort((a, b) => compareURLPatterns(a.url[0], b.url[0])); - return formatSitesFixesConfig(fixes, { - props: Object.values(inversionFixesCommands), - getPropCommandName: (prop) => - Object.entries(inversionFixesCommands).find( - ([, p]) => p === prop - )[0], - formatPropValue: (prop, value) => { - if (prop === "css") { - return value.trim().replace(/\n+/g, "\n"); - } - return formatArray(value).trim(); - }, - shouldIgnoreProp: (prop, value) => { - if (prop === "css") { - return !value; - } - return !(Array.isArray(value) && value.length > 0); - } - }); - } - - const cssCommentsRegex = /\/\*[\s\S]*?\*\//g; - function removeCSSComments(cssText) { - return cssText.replace(cssCommentsRegex, ""); - } - - function parseCSS(cssText) { - cssText = removeCSSComments(cssText); - cssText = cssText.trim(); - if (!cssText) { - return []; - } - const rules = []; - const excludeRanges = getTokenExclusionRanges(cssText); - const bracketRanges = getAllOpenCloseRanges( - cssText, - "{", - "}", - excludeRanges - ); - let ruleStart = 0; - bracketRanges.forEach((brackets) => { - const key = cssText.substring(ruleStart, brackets.start).trim(); - const content = cssText.substring( - brackets.start + 1, - brackets.end - 1 - ); - if (key.startsWith("@")) { - const typeEndIndex = key.search(/[\s\(]/); - const rule = { - type: - typeEndIndex < 0 ? key : key.substring(0, typeEndIndex), - query: - typeEndIndex < 0 - ? "" - : key.substring(typeEndIndex).trim(), - rules: parseCSS(content) - }; - rules.push(rule); - } else { - const rule = { - selectors: parseSelectors(key), - declarations: parseDeclarations(content) - }; - rules.push(rule); - } - ruleStart = brackets.end; - }); - return rules; - } - function getAllOpenCloseRanges( - input, - openToken, - closeToken, - excludeRanges = [] - ) { - const ranges = []; - let i = 0; - let range; - while ( - (range = getOpenCloseRange( - input, - i, - openToken, - closeToken, - excludeRanges - )) - ) { - ranges.push(range); - i = range.end; - } - return ranges; - } - function getTokenExclusionRanges(cssText) { - const singleQuoteGoesFirst = - cssText.indexOf("'") < cssText.indexOf('"'); - const firstQuote = singleQuoteGoesFirst ? "'" : '"'; - const secondQuote = singleQuoteGoesFirst ? '"' : "'"; - const excludeRanges = getAllOpenCloseRanges( - cssText, - firstQuote, - firstQuote - ); - excludeRanges.push( - ...getAllOpenCloseRanges( - cssText, - secondQuote, - secondQuote, - excludeRanges - ) - ); - excludeRanges.push( - ...getAllOpenCloseRanges(cssText, "[", "]", excludeRanges) - ); - excludeRanges.push( - ...getAllOpenCloseRanges(cssText, "(", ")", excludeRanges) - ); - return excludeRanges; - } - function parseSelectors(selectorText) { - const excludeRanges = getTokenExclusionRanges(selectorText); - return splitExcluding(selectorText, ",", excludeRanges); - } - function parseDeclarations(cssDeclarationsText) { - const declarations = []; - const excludeRanges = getTokenExclusionRanges(cssDeclarationsText); - splitExcluding(cssDeclarationsText, ";", excludeRanges).forEach( - (part) => { - const colonIndex = part.indexOf(":"); - if (colonIndex > 0) { - const importantIndex = part.indexOf("!important"); - declarations.push({ - property: part.substring(0, colonIndex).trim(), - value: part - .substring( - colonIndex + 1, - importantIndex > 0 - ? importantIndex - : part.length - ) - .trim(), - important: importantIndex > 0 - }); - } - } - ); - return declarations; - } - function isParsedStyleRule(rule) { - return "selectors" in rule; - } - - function formatCSS(cssText) { - const parsed = parseCSS(cssText); - return formatParsedCSS(parsed); - } - function formatParsedCSS(parsed) { - const lines = []; - const tab = " "; - function formatRule(rule, indent) { - if (isParsedStyleRule(rule)) { - formatStyleRule(rule, indent); - } else { - formatAtRule(rule, indent); - } - } - function formatAtRule({type, query, rules}, indent) { - lines.push(`${indent}${type} ${query} {`); - rules.forEach((child) => formatRule(child, `${indent}${tab}`)); - lines.push(`${indent}}`); - } - function formatStyleRule({selectors, declarations}, indent) { - const lastSelectorIndex = selectors.length - 1; - selectors.forEach((selector, i) => { - lines.push( - `${indent}${selector}${i < lastSelectorIndex ? "," : " {"}` - ); - }); - const sorted = sortDeclarations(declarations); - sorted.forEach(({property, value, important}) => { - lines.push( - `${indent}${tab}${property}: ${value}${important ? " !important" : ""};` - ); - }); - lines.push(`${indent}}`); - } - clearEmptyRules(parsed); - parsed.forEach((rule) => formatRule(rule, "")); - return lines.join("\n"); - } - function sortDeclarations(declarations) { - const prefixRegex = /^-[a-z]-/; - return [...declarations].sort((a, b) => { - const aProp = a.property; - const bProp = b.property; - const aPrefix = aProp.match(prefixRegex)?.[0] ?? ""; - const bPrefix = bProp.match(prefixRegex)?.[0] ?? ""; - const aNorm = aPrefix ? aProp.replace(prefixRegex, "") : aProp; - const bNorm = bPrefix ? bProp.replace(prefixRegex, "") : bProp; - if (aNorm === bNorm) { - return aPrefix.localeCompare(bPrefix); - } - return aNorm.localeCompare(bNorm); - }); - } - function clearEmptyRules(rules) { - for (let i = rules.length - 1; i >= 0; i--) { - const rule = rules[i]; - if (isParsedStyleRule(rule)) { - if (rule.declarations.length === 0) { - rules.splice(i, 1); - } - } else { - clearEmptyRules(rule.rules); - if (rule.rules.length === 0) { - rules.splice(i, 1); - } - } - } - } - - const dynamicThemeFixesCommands = { - "INVERT": "invert", - "CSS": "css", - "IGNORE INLINE STYLE": "ignoreInlineStyle", - "IGNORE IMAGE ANALYSIS": "ignoreImageAnalysis" - }; - function parseDynamicThemeFixes(text) { - return parseSitesFixesConfig(text, { - commands: Object.keys(dynamicThemeFixesCommands), - getCommandPropName: (command) => dynamicThemeFixesCommands[command], - parseCommandValue: (command, value) => { - if (command === "CSS") { - return value.trim(); - } - return parseArray(value); - } - }); - } - function formatDynamicThemeFixes(dynamicThemeFixes) { - const fixes = dynamicThemeFixes - .slice() - .sort((a, b) => compareURLPatterns(a.url[0], b.url[0])); - return formatSitesFixesConfig(fixes, { - props: Object.values(dynamicThemeFixesCommands), - getPropCommandName: (prop) => - Object.entries(dynamicThemeFixesCommands).find( - ([, p]) => p === prop - )[0], - formatPropValue: (prop, value) => { - if (prop === "css") { - return formatCSS(value); - } - return formatArray(value).trim(); - }, - shouldIgnoreProp: (prop, value) => { - if (prop === "css") { - return !value; - } - return !(Array.isArray(value) && value.length > 0); - } - }); - } - function getDynamicThemeFixesFor( - url, - isTopFrame, - text, - index, - enabledForPDF - ) { - const fixes = getSitesFixesFor(url, text, index, { - commands: Object.keys(dynamicThemeFixesCommands), - getCommandPropName: (command) => dynamicThemeFixesCommands[command], - parseCommandValue: (command, value) => { - if (command === "CSS") { - return value.trim(); - } - return parseArray(value); - } - }); - if (fixes.length === 0 || fixes[0].url[0] !== "*") { - return null; - } - if (enabledForPDF) { - const fixes_ = [...fixes]; - fixes_[0] = {...fixes_[0]}; - { - fixes_[0].css += - '\nembed[type="application/pdf"][src="about:blank"] { filter: invert(100%) contrast(90%); }'; - } - if ( - ["drive.google.com", "mail.google.com"].includes(getDomain(url)) - ) { - fixes_[0].invert.push( - 'div[role="dialog"] div[role="document"]' - ); - } - return fixes_; - } - return fixes; - } - - const darkTheme = { - neutralBg: [16, 20, 23], - neutralText: [167, 158, 139], - redBg: [64, 12, 32], - redText: [247, 142, 102], - greenBg: [32, 64, 48], - greenText: [128, 204, 148], - blueBg: [32, 48, 64], - blueText: [128, 182, 204], - fadeBg: [16, 20, 23, 0.5], - fadeText: [167, 158, 139, 0.5] - }; - const lightTheme = { - neutralBg: [255, 242, 228], - neutralText: [0, 0, 0], - redBg: [255, 85, 170], - redText: [140, 14, 48], - greenBg: [192, 255, 170], - greenText: [0, 128, 0], - blueBg: [173, 215, 229], - blueText: [28, 16, 171], - fadeBg: [0, 0, 0, 0.5], - fadeText: [0, 0, 0, 0.5] - }; - function rgb([r, g, b, a]) { - if (typeof a === "number") { - return `rgba(${r}, ${g}, ${b}, ${a})`; - } - return `rgb(${r}, ${g}, ${b})`; - } - function mix(color1, color2, t) { - return color1.map((c, i) => Math.round(c * (1 - t) + color2[i] * t)); - } - function createStaticStylesheet( - config, - url, - isTopFrame, - staticThemes, - staticThemesIndex - ) { - const srcTheme = config.mode === 1 ? darkTheme : lightTheme; - const theme = Object.entries(srcTheme).reduce((t, [prop, color]) => { - const [r, g, b, a] = color; - t[prop] = applyColorMatrix( - [r, g, b], - createFilterMatrix({...config, mode: 0}) - ); - if (a !== undefined) { - t[prop].push(a); - } - return t; - }, {}); - const commonTheme = getCommonTheme(staticThemes, staticThemesIndex); - const siteTheme = getThemeFor(url, staticThemes, staticThemesIndex); - const lines = []; - if (!siteTheme || !siteTheme.noCommon) { - lines.push("/* Common theme */"); - lines.push(...ruleGenerators.map((gen) => gen(commonTheme, theme))); - } - if (siteTheme) { - lines.push(`/* Theme for ${siteTheme.url.join(" ")} */`); - lines.push(...ruleGenerators.map((gen) => gen(siteTheme, theme))); - } - if (config.useFont || config.textStroke > 0) { - lines.push("/* Font */"); - lines.push(createTextStyle(config)); - } - return lines.filter((ln) => ln).join("\n"); - } - function createRuleGen( - getSelectors, - generateDeclarations, - modifySelector = (s) => s - ) { - return (siteTheme, themeColors) => { - const selectors = getSelectors(siteTheme); - if (selectors == null || selectors.length === 0) { - return null; - } - const lines = []; - selectors.forEach((s, i) => { - let ln = modifySelector(s); - if (i < selectors.length - 1) { - ln += ","; - } else { - ln += " {"; - } - lines.push(ln); - }); - const declarations = generateDeclarations(themeColors); - declarations.forEach((d) => lines.push(` ${d} !important;`)); - lines.push("}"); - return lines.join("\n"); - }; - } - const mx = { - bg: { - hover: 0.075, - active: 0.1 - }, - fg: { - hover: 0.25, - active: 0.5 - }, - border: 0.5 - }; - const ruleGenerators = [ - createRuleGen( - (t) => t.neutralBg, - (t) => [`background-color: ${rgb(t.neutralBg)}`] - ), - createRuleGen( - (t) => t.neutralBgActive, - (t) => [`background-color: ${rgb(t.neutralBg)}`] - ), - createRuleGen( - (t) => t.neutralBgActive, - (t) => [ - `background-color: ${rgb(mix(t.neutralBg, [255, 255, 255], mx.bg.hover))}` - ], - (s) => `${s}:hover` - ), - createRuleGen( - (t) => t.neutralBgActive, - (t) => [ - `background-color: ${rgb(mix(t.neutralBg, [255, 255, 255], mx.bg.active))}` - ], - (s) => `${s}:active, ${s}:focus` - ), - createRuleGen( - (t) => t.neutralText, - (t) => [`color: ${rgb(t.neutralText)}`] - ), - createRuleGen( - (t) => t.neutralTextActive, - (t) => [`color: ${rgb(t.neutralText)}`] - ), - createRuleGen( - (t) => t.neutralTextActive, - (t) => [ - `color: ${rgb(mix(t.neutralText, [255, 255, 255], mx.fg.hover))}` - ], - (s) => `${s}:hover` - ), - createRuleGen( - (t) => t.neutralTextActive, - (t) => [ - `color: ${rgb(mix(t.neutralText, [255, 255, 255], mx.fg.active))}` - ], - (s) => `${s}:active, ${s}:focus` - ), - createRuleGen( - (t) => t.neutralBorder, - (t) => [ - `border-color: ${rgb(mix(t.neutralBg, t.neutralText, mx.border))}` - ] - ), - createRuleGen( - (t) => t.redBg, - (t) => [`background-color: ${rgb(t.redBg)}`] - ), - createRuleGen( - (t) => t.redBgActive, - (t) => [`background-color: ${rgb(t.redBg)}`] - ), - createRuleGen( - (t) => t.redBgActive, - (t) => [ - `background-color: ${rgb(mix(t.redBg, [255, 0, 64], mx.bg.hover))}` - ], - (s) => `${s}:hover` - ), - createRuleGen( - (t) => t.redBgActive, - (t) => [ - `background-color: ${rgb(mix(t.redBg, [255, 0, 64], mx.bg.active))}` - ], - (s) => `${s}:active, ${s}:focus` - ), - createRuleGen( - (t) => t.redText, - (t) => [`color: ${rgb(t.redText)}`] - ), - createRuleGen( - (t) => t.redTextActive, - (t) => [`color: ${rgb(t.redText)}`] - ), - createRuleGen( - (t) => t.redTextActive, - (t) => [ - `color: ${rgb(mix(t.redText, [255, 255, 0], mx.fg.hover))}` - ], - (s) => `${s}:hover` - ), - createRuleGen( - (t) => t.redTextActive, - (t) => [ - `color: ${rgb(mix(t.redText, [255, 255, 0], mx.fg.active))}` - ], - (s) => `${s}:active, ${s}:focus` - ), - createRuleGen( - (t) => t.redBorder, - (t) => [`border-color: ${rgb(mix(t.redBg, t.redText, mx.border))}`] - ), - createRuleGen( - (t) => t.greenBg, - (t) => [`background-color: ${rgb(t.greenBg)}`] - ), - createRuleGen( - (t) => t.greenBgActive, - (t) => [`background-color: ${rgb(t.greenBg)}`] - ), - createRuleGen( - (t) => t.greenBgActive, - (t) => [ - `background-color: ${rgb(mix(t.greenBg, [128, 255, 182], mx.bg.hover))}` - ], - (s) => `${s}:hover` - ), - createRuleGen( - (t) => t.greenBgActive, - (t) => [ - `background-color: ${rgb(mix(t.greenBg, [128, 255, 182], mx.bg.active))}` - ], - (s) => `${s}:active, ${s}:focus` - ), - createRuleGen( - (t) => t.greenText, - (t) => [`color: ${rgb(t.greenText)}`] - ), - createRuleGen( - (t) => t.greenTextActive, - (t) => [`color: ${rgb(t.greenText)}`] - ), - createRuleGen( - (t) => t.greenTextActive, - (t) => [ - `color: ${rgb(mix(t.greenText, [182, 255, 224], mx.fg.hover))}` - ], - (s) => `${s}:hover` - ), - createRuleGen( - (t) => t.greenTextActive, - (t) => [ - `color: ${rgb(mix(t.greenText, [182, 255, 224], mx.fg.active))}` - ], - (s) => `${s}:active, ${s}:focus` - ), - createRuleGen( - (t) => t.greenBorder, - (t) => [ - `border-color: ${rgb(mix(t.greenBg, t.greenText, mx.border))}` - ] - ), - createRuleGen( - (t) => t.blueBg, - (t) => [`background-color: ${rgb(t.blueBg)}`] - ), - createRuleGen( - (t) => t.blueBgActive, - (t) => [`background-color: ${rgb(t.blueBg)}`] - ), - createRuleGen( - (t) => t.blueBgActive, - (t) => [ - `background-color: ${rgb(mix(t.blueBg, [0, 128, 255], mx.bg.hover))}` - ], - (s) => `${s}:hover` - ), - createRuleGen( - (t) => t.blueBgActive, - (t) => [ - `background-color: ${rgb(mix(t.blueBg, [0, 128, 255], mx.bg.active))}` - ], - (s) => `${s}:active, ${s}:focus` - ), - createRuleGen( - (t) => t.blueText, - (t) => [`color: ${rgb(t.blueText)}`] - ), - createRuleGen( - (t) => t.blueTextActive, - (t) => [`color: ${rgb(t.blueText)}`] - ), - createRuleGen( - (t) => t.blueTextActive, - (t) => [ - `color: ${rgb(mix(t.blueText, [182, 224, 255], mx.fg.hover))}` - ], - (s) => `${s}:hover` - ), - createRuleGen( - (t) => t.blueTextActive, - (t) => [ - `color: ${rgb(mix(t.blueText, [182, 224, 255], mx.fg.active))}` - ], - (s) => `${s}:active, ${s}:focus` - ), - createRuleGen( - (t) => t.blueBorder, - (t) => [ - `border-color: ${rgb(mix(t.blueBg, t.blueText, mx.border))}` - ] - ), - createRuleGen( - (t) => t.fadeBg, - (t) => [`background-color: ${rgb(t.fadeBg)}`] - ), - createRuleGen( - (t) => t.fadeText, - (t) => [`color: ${rgb(t.fadeText)}`] - ), - createRuleGen( - (t) => t.transparentBg, - () => ["background-color: transparent"] - ), - createRuleGen( - (t) => t.noImage, - () => ["background-image: none"] - ), - createRuleGen( - (t) => t.invert, - () => ["filter: invert(100%) hue-rotate(180deg)"] - ) - ]; - const staticThemeCommands = { - "NO COMMON": "noCommon", - "NEUTRAL BG": "neutralBg", - "NEUTRAL BG ACTIVE": "neutralBgActive", - "NEUTRAL TEXT": "neutralText", - "NEUTRAL TEXT ACTIVE": "neutralTextActive", - "NEUTRAL BORDER": "neutralBorder", - "RED BG": "redBg", - "RED BG ACTIVE": "redBgActive", - "RED TEXT": "redText", - "RED TEXT ACTIVE": "redTextActive", - "RED BORDER": "redBorder", - "GREEN BG": "greenBg", - "GREEN BG ACTIVE": "greenBgActive", - "GREEN TEXT": "greenText", - "GREEN TEXT ACTIVE": "greenTextActive", - "GREEN BORDER": "greenBorder", - "BLUE BG": "blueBg", - "BLUE BG ACTIVE": "blueBgActive", - "BLUE TEXT": "blueText", - "BLUE TEXT ACTIVE": "blueTextActive", - "BLUE BORDER": "blueBorder", - "FADE BG": "fadeBg", - "FADE TEXT": "fadeText", - "TRANSPARENT BG": "transparentBg", - "NO IMAGE": "noImage", - "INVERT": "invert" - }; - function parseStaticThemes($themes) { - return parseSitesFixesConfig($themes, { - commands: Object.keys(staticThemeCommands), - getCommandPropName: (command) => staticThemeCommands[command], - parseCommandValue: (command, value) => { - if (command === "NO COMMON") { - return true; - } - return parseArray(value); - } - }); - } - function camelCaseToUpperCase(text) { - return text.replace(/([a-z])([A-Z])/g, "$1 $2").toUpperCase(); - } - function formatStaticThemes(staticThemes) { - const themes = staticThemes - .slice() - .sort((a, b) => compareURLPatterns(a.url[0], b.url[0])); - return formatSitesFixesConfig(themes, { - props: Object.values(staticThemeCommands), - getPropCommandName: camelCaseToUpperCase, - formatPropValue: (prop, value) => { - if (prop === "noCommon") { - return ""; - } - return formatArray(value).trim(); - }, - shouldIgnoreProp: (prop, value) => { - if (prop === "noCommon") { - return !value; - } - return !(Array.isArray(value) && value.length > 0); - } - }); - } - function getCommonTheme(staticThemes, staticThemesIndex) { - const length = parseInt( - staticThemesIndex.offsets.substring(4, 4 + 3), - 36 - ); - const staticThemeText = staticThemes.substring(0, length); - return parseStaticThemes(staticThemeText)[0]; - } - function getThemeFor(url, staticThemes, staticThemesIndex) { - const themes = getSitesFixesFor(url, staticThemes, staticThemesIndex, { - commands: Object.keys(staticThemeCommands), - getCommandPropName: (command) => staticThemeCommands[command], - parseCommandValue: (command, value) => { - if (command === "NO COMMON") { - return true; - } - return parseArray(value); - } - }); - const sortedBySpecificity = themes - .slice(1) - .map((theme) => { - return { - specificity: isURLInList(url, theme.url) - ? theme.url[0].length - : 0, - theme - }; - }) - .filter(({specificity}) => specificity > 0) - .sort((a, b) => b.specificity - a.specificity); - if (sortedBySpecificity.length === 0) { - return null; - } - return sortedBySpecificity[0].theme; - } - - class PersistentStorageWrapper { - cache = {}; - async get(key) { - if (key in this.cache) { - return this.cache[key]; - } - return new Promise((resolve) => { - chrome.storage.local.get(key, (result) => { - if (key in this.cache) { - resolve(this.cache[key]); - return; - } - if (chrome.runtime.lastError) { - console.error( - "Failed to query DevTools data", - chrome.runtime.lastError - ); - resolve(null); - return; - } - this.cache[key] = result[key]; - resolve(result[key]); - }); - }); - } - async set(key, value) { - this.cache[key] = value; - return new Promise((resolve) => - chrome.storage.local.set({[key]: value}, () => { - if (chrome.runtime.lastError) { - console.error( - "Failed to write DevTools data", - chrome.runtime.lastError - ); - } else { - resolve(); - } - }) - ); - } - async remove(key) { - this.cache[key] = null; - return new Promise((resolve) => - chrome.storage.local.remove(key, () => { - if (chrome.runtime.lastError) { - console.error( - "Failed to delete DevTools data", - chrome.runtime.lastError - ); - } else { - resolve(); - } - }) - ); - } - async has(key) { - return Boolean(await this.get(key)); - } - } - class TempStorage { - map = new Map(); - async get(key) { - return this.map.get(key) || null; - } - set(key, value) { - this.map.set(key, value); - } - remove(key) { - this.map.delete(key); - } - async has(key) { - return this.map.has(key); - } - } - class DevTools { - static onChange; - static store; - static init(onChange) { - if ( - typeof chrome.storage.local !== "undefined" && - chrome.storage.local !== null - ) { - DevTools.store = new PersistentStorageWrapper(); - } else { - DevTools.store = new TempStorage(); - } - DevTools.loadConfigOverrides(); - DevTools.onChange = onChange; - } - static KEY_DYNAMIC = "dev_dynamic_theme_fixes"; - static KEY_FILTER = "dev_inversion_fixes"; - static KEY_STATIC = "dev_static_themes"; - static async loadConfigOverrides() { - const [dynamicThemeFixes, inversionFixes, staticThemes] = - await Promise.all([ - DevTools.getSavedDynamicThemeFixes(), - DevTools.getSavedInversionFixes(), - DevTools.getSavedStaticThemes() - ]); - ConfigManager.overrides.dynamicThemeFixes = - dynamicThemeFixes || null; - ConfigManager.overrides.inversionFixes = inversionFixes || null; - ConfigManager.overrides.staticThemes = staticThemes || null; - } - static async getSavedDynamicThemeFixes() { - return DevTools.store.get(DevTools.KEY_DYNAMIC); - } - static saveDynamicThemeFixes(text) { - DevTools.store.set(DevTools.KEY_DYNAMIC, text); - } - static async getDynamicThemeFixesText() { - let rawFixes = await DevTools.getSavedDynamicThemeFixes(); - if (!rawFixes) { - await ConfigManager.load(); - rawFixes = ConfigManager.DYNAMIC_THEME_FIXES_RAW || ""; - } - const fixes = parseDynamicThemeFixes(rawFixes); - return formatDynamicThemeFixes(fixes); - } - static resetDynamicThemeFixes() { - DevTools.store.remove(DevTools.KEY_DYNAMIC); - ConfigManager.overrides.dynamicThemeFixes = null; - ConfigManager.handleDynamicThemeFixes(); - DevTools.onChange(); - } - static applyDynamicThemeFixes(text) { - try { - const formatted = formatDynamicThemeFixes( - parseDynamicThemeFixes(text) - ); - ConfigManager.overrides.dynamicThemeFixes = formatted; - ConfigManager.handleDynamicThemeFixes(); - DevTools.saveDynamicThemeFixes(formatted); - DevTools.onChange(); - return null; - } catch (err) { - return err; - } - } - static async getSavedInversionFixes() { - return this.store.get(DevTools.KEY_FILTER); - } - static saveInversionFixes(text) { - this.store.set(DevTools.KEY_FILTER, text); - } - static async getInversionFixesText() { - let rawFixes = await DevTools.getSavedInversionFixes(); - if (!rawFixes) { - await ConfigManager.load(); - rawFixes = ConfigManager.INVERSION_FIXES_RAW || ""; - } - const fixes = parseInversionFixes(rawFixes); - return formatInversionFixes(fixes); - } - static resetInversionFixes() { - DevTools.store.remove(DevTools.KEY_FILTER); - ConfigManager.overrides.inversionFixes = null; - ConfigManager.handleInversionFixes(); - DevTools.onChange(); - } - static applyInversionFixes(text) { - try { - const formatted = formatInversionFixes( - parseInversionFixes(text) - ); - ConfigManager.overrides.inversionFixes = formatted; - ConfigManager.handleInversionFixes(); - DevTools.saveInversionFixes(formatted); - DevTools.onChange(); - return null; - } catch (err) { - return err; - } - } - static async getSavedStaticThemes() { - return DevTools.store.get(DevTools.KEY_STATIC); - } - static saveStaticThemes(text) { - DevTools.store.set(DevTools.KEY_STATIC, text); - } - static async getStaticThemesText() { - let rawThemes = await DevTools.getSavedStaticThemes(); - if (!rawThemes) { - await ConfigManager.load(); - rawThemes = ConfigManager.STATIC_THEMES_RAW || ""; - } - const themes = parseStaticThemes(rawThemes); - return formatStaticThemes(themes); - } - static resetStaticThemes() { - DevTools.store.remove(DevTools.KEY_STATIC); - ConfigManager.overrides.staticThemes = null; - ConfigManager.handleStaticThemes(); - DevTools.onChange(); - } - static applyStaticThemes(text) { - try { - const formatted = formatStaticThemes(parseStaticThemes(text)); - ConfigManager.overrides.staticThemes = formatted; - ConfigManager.handleStaticThemes(); - DevTools.saveStaticThemes(formatted); - DevTools.onChange(); - return null; - } catch (err) { - return err; - } - } - } - - class IconManager { - static ICON_PATHS = { - active: { - 19: "../icons/dr_active_19.png", - 38: "../icons/dr_active_38.png" - }, - inactive: { - 19: "../icons/dr_inactive_19.png", - 38: "../icons/dr_inactive_38.png" - } - }; - static iconState = { - badgeText: "", - active: true - }; - static onStartup() {} - static handleUpdate() { - if ( - IconManager.iconState.badgeText !== "" || - !IconManager.iconState.active - ) { - chrome.runtime.onStartup.addListener(IconManager.onStartup); - } else { - chrome.runtime.onStartup.removeListener(IconManager.onStartup); - } - } - static setActive() { - if (!chrome.action.setIcon) { - return; - } - IconManager.iconState.active = true; - chrome.action.setIcon({ - path: IconManager.ICON_PATHS.active - }); - IconManager.handleUpdate(); - } - static setInactive() { - if (!chrome.action.setIcon) { - return; - } - IconManager.iconState.active = false; - chrome.action.setIcon({ - path: IconManager.ICON_PATHS.inactive - }); - IconManager.handleUpdate(); - } - static showBadge(text) { - IconManager.iconState.badgeText = text; - chrome.action.setBadgeBackgroundColor({color: "#e96c4c"}); - chrome.action.setBadgeText({text}); - IconManager.handleUpdate(); - } - static hideBadge() { - IconManager.iconState.badgeText = ""; - chrome.action.setBadgeText({text: ""}); - IconManager.handleUpdate(); - } - } - - var MessageTypeUItoBG; - (function (MessageTypeUItoBG) { - MessageTypeUItoBG["GET_DATA"] = "ui-bg-get-data"; - MessageTypeUItoBG["GET_DEVTOOLS_DATA"] = "ui-bg-get-devtools-data"; - MessageTypeUItoBG["SUBSCRIBE_TO_CHANGES"] = - "ui-bg-subscribe-to-changes"; - MessageTypeUItoBG["UNSUBSCRIBE_FROM_CHANGES"] = - "ui-bg-unsubscribe-from-changes"; - MessageTypeUItoBG["CHANGE_SETTINGS"] = "ui-bg-change-settings"; - MessageTypeUItoBG["SET_THEME"] = "ui-bg-set-theme"; - MessageTypeUItoBG["TOGGLE_ACTIVE_TAB"] = "ui-bg-toggle-active-tab"; - MessageTypeUItoBG["MARK_NEWS_AS_READ"] = "ui-bg-mark-news-as-read"; - MessageTypeUItoBG["MARK_NEWS_AS_DISPLAYED"] = - "ui-bg-mark-news-as-displayed"; - MessageTypeUItoBG["LOAD_CONFIG"] = "ui-bg-load-config"; - MessageTypeUItoBG["APPLY_DEV_DYNAMIC_THEME_FIXES"] = - "ui-bg-apply-dev-dynamic-theme-fixes"; - MessageTypeUItoBG["RESET_DEV_DYNAMIC_THEME_FIXES"] = - "ui-bg-reset-dev-dynamic-theme-fixes"; - MessageTypeUItoBG["APPLY_DEV_INVERSION_FIXES"] = - "ui-bg-apply-dev-inversion-fixes"; - MessageTypeUItoBG["RESET_DEV_INVERSION_FIXES"] = - "ui-bg-reset-dev-inversion-fixes"; - MessageTypeUItoBG["APPLY_DEV_STATIC_THEMES"] = - "ui-bg-apply-dev-static-themes"; - MessageTypeUItoBG["RESET_DEV_STATIC_THEMES"] = - "ui-bg-reset-dev-static-themes"; - MessageTypeUItoBG["COLOR_SCHEME_CHANGE"] = "ui-bg-color-scheme-change"; - MessageTypeUItoBG["HIDE_HIGHLIGHTS"] = "ui-bg-hide-highlights"; - })(MessageTypeUItoBG || (MessageTypeUItoBG = {})); - var MessageTypeBGtoUI; - (function (MessageTypeBGtoUI) { - MessageTypeBGtoUI["CHANGES"] = "bg-ui-changes"; - })(MessageTypeBGtoUI || (MessageTypeBGtoUI = {})); - var DebugMessageTypeBGtoUI; - (function (DebugMessageTypeBGtoUI) { - DebugMessageTypeBGtoUI["CSS_UPDATE"] = "debug-bg-ui-css-update"; - DebugMessageTypeBGtoUI["UPDATE"] = "debug-bg-ui-update"; - })(DebugMessageTypeBGtoUI || (DebugMessageTypeBGtoUI = {})); - var MessageTypeBGtoCS; - (function (MessageTypeBGtoCS) { - MessageTypeBGtoCS["ADD_CSS_FILTER"] = "bg-cs-add-css-filter"; - MessageTypeBGtoCS["ADD_DYNAMIC_THEME"] = "bg-cs-add-dynamic-theme"; - MessageTypeBGtoCS["ADD_STATIC_THEME"] = "bg-cs-add-static-theme"; - MessageTypeBGtoCS["ADD_SVG_FILTER"] = "bg-cs-add-svg-filter"; - MessageTypeBGtoCS["CLEAN_UP"] = "bg-cs-clean-up"; - MessageTypeBGtoCS["FETCH_RESPONSE"] = "bg-cs-fetch-response"; - MessageTypeBGtoCS["UNSUPPORTED_SENDER"] = "bg-cs-unsupported-sender"; - })(MessageTypeBGtoCS || (MessageTypeBGtoCS = {})); - var DebugMessageTypeBGtoCS; - (function (DebugMessageTypeBGtoCS) { - DebugMessageTypeBGtoCS["RELOAD"] = "debug-bg-cs-reload"; - })(DebugMessageTypeBGtoCS || (DebugMessageTypeBGtoCS = {})); - var MessageTypeCStoBG; - (function (MessageTypeCStoBG) { - MessageTypeCStoBG["COLOR_SCHEME_CHANGE"] = "cs-bg-color-scheme-change"; - MessageTypeCStoBG["DARK_THEME_DETECTED"] = "cs-bg-dark-theme-detected"; - MessageTypeCStoBG["DARK_THEME_NOT_DETECTED"] = - "cs-bg-dark-theme-not-detected"; - MessageTypeCStoBG["FETCH"] = "cs-bg-fetch"; - MessageTypeCStoBG["DOCUMENT_CONNECT"] = "cs-bg-document-connect"; - MessageTypeCStoBG["DOCUMENT_FORGET"] = "cs-bg-document-forget"; - MessageTypeCStoBG["DOCUMENT_FREEZE"] = "cs-bg-document-freeze"; - MessageTypeCStoBG["DOCUMENT_RESUME"] = "cs-bg-document-resume"; - })(MessageTypeCStoBG || (MessageTypeCStoBG = {})); - var DebugMessageTypeCStoBG; - (function (DebugMessageTypeCStoBG) { - DebugMessageTypeCStoBG["LOG"] = "debug-cs-bg-log"; - })(DebugMessageTypeCStoBG || (DebugMessageTypeCStoBG = {})); - var MessageTypeCStoUI; - (function (MessageTypeCStoUI) { - MessageTypeCStoUI["EXPORT_CSS_RESPONSE"] = "cs-ui-export-css-response"; - })(MessageTypeCStoUI || (MessageTypeCStoUI = {})); - var MessageTypeUItoCS; - (function (MessageTypeUItoCS) { - MessageTypeUItoCS["EXPORT_CSS"] = "ui-cs-export-css"; - })(MessageTypeUItoCS || (MessageTypeUItoCS = {})); - - class Messenger { - static adapter; - static changeListenerCount; - static init(adapter) { - Messenger.adapter = adapter; - Messenger.changeListenerCount = 0; - chrome.runtime.onMessage.addListener(Messenger.messageListener); - } - static messageListener(message, sender, sendResponse) { - const allowedSenderURL = [ - chrome.runtime.getURL("/ui/popup/index.html"), - chrome.runtime.getURL("/ui/devtools/index.html"), - chrome.runtime.getURL("/ui/options/index.html"), - chrome.runtime.getURL("/ui/stylesheet-editor/index.html") - ]; - if (allowedSenderURL.includes(sender.url)) { - Messenger.onUIMessage(message, sendResponse); - return [ - MessageTypeUItoBG.GET_DATA, - MessageTypeUItoBG.GET_DEVTOOLS_DATA - ].includes(message.type); - } - } - static firefoxPortListener(port) { - { - return; - } - } - static onUIMessage({type, data}, sendResponse) { - switch (type) { - case MessageTypeUItoBG.GET_DATA: - Messenger.adapter - .collect() - .then((data) => sendResponse({data})); - break; - case MessageTypeUItoBG.GET_DEVTOOLS_DATA: - Messenger.adapter - .collectDevToolsData() - .then((data) => sendResponse({data})); - break; - case MessageTypeUItoBG.SUBSCRIBE_TO_CHANGES: - Messenger.changeListenerCount++; - break; - case MessageTypeUItoBG.UNSUBSCRIBE_FROM_CHANGES: - Messenger.changeListenerCount--; - break; - case MessageTypeUItoBG.CHANGE_SETTINGS: - Messenger.adapter.changeSettings(data); - break; - case MessageTypeUItoBG.SET_THEME: - Messenger.adapter.setTheme(data); - break; - case MessageTypeUItoBG.TOGGLE_ACTIVE_TAB: - Messenger.adapter.toggleActiveTab(); - break; - case MessageTypeUItoBG.MARK_NEWS_AS_READ: - Messenger.adapter.markNewsAsRead(data); - break; - case MessageTypeUItoBG.MARK_NEWS_AS_DISPLAYED: - Messenger.adapter.markNewsAsDisplayed(data); - break; - case MessageTypeUItoBG.LOAD_CONFIG: - Messenger.adapter.loadConfig(data); - break; - case MessageTypeUItoBG.APPLY_DEV_DYNAMIC_THEME_FIXES: { - const error = - Messenger.adapter.applyDevDynamicThemeFixes(data); - sendResponse({error: error ? error.message : undefined}); - break; - } - case MessageTypeUItoBG.RESET_DEV_DYNAMIC_THEME_FIXES: - Messenger.adapter.resetDevDynamicThemeFixes(); - break; - case MessageTypeUItoBG.APPLY_DEV_INVERSION_FIXES: { - const error = - Messenger.adapter.applyDevInversionFixes(data); - sendResponse({error: error ? error.message : undefined}); - break; - } - case MessageTypeUItoBG.RESET_DEV_INVERSION_FIXES: - Messenger.adapter.resetDevInversionFixes(); - break; - case MessageTypeUItoBG.APPLY_DEV_STATIC_THEMES: { - const error = Messenger.adapter.applyDevStaticThemes(data); - sendResponse({error: error ? error.message : undefined}); - break; - } - case MessageTypeUItoBG.RESET_DEV_STATIC_THEMES: - Messenger.adapter.resetDevStaticThemes(); - break; - case MessageTypeUItoBG.HIDE_HIGHLIGHTS: - Messenger.adapter.hideHighlights(data); - break; - } - } - static reportChanges(data) { - if (Messenger.changeListenerCount > 0) { - chrome.runtime.sendMessage({ - type: MessageTypeBGtoUI.CHANGES, - data - }); - } - } - } - - var StateManagerImplState; - (function (StateManagerImplState) { - StateManagerImplState[(StateManagerImplState["INITIAL"] = 0)] = - "INITIAL"; - StateManagerImplState[(StateManagerImplState["LOADING"] = 1)] = - "LOADING"; - StateManagerImplState[(StateManagerImplState["READY"] = 2)] = "READY"; - StateManagerImplState[(StateManagerImplState["SAVING"] = 3)] = "SAVING"; - StateManagerImplState[(StateManagerImplState["SAVING_OVERRIDE"] = 4)] = - "SAVING_OVERRIDE"; - StateManagerImplState[(StateManagerImplState["ONCHANGE_RACE"] = 5)] = - "ONCHANGE_RACE"; - StateManagerImplState[(StateManagerImplState["RECOVERY"] = 6)] = - "RECOVERY"; - })(StateManagerImplState || (StateManagerImplState = {})); - class StateManagerImpl { - localStorageKey; - parent; - defaults; - logWarn; - meta; - barrier = null; - storage; - listeners; - constructor( - localStorageKey, - parent, - defaults, - storage, - addListener, - logWarn - ) { - this.localStorageKey = localStorageKey; - this.parent = parent; - this.defaults = defaults; - this.storage = storage; - addListener((change) => this.onChange(change)); - this.logWarn = logWarn; - this.meta = StateManagerImplState.INITIAL; - this.barrier = new PromiseBarrier(); - this.listeners = new Set(); - } - collectState() { - const state = {}; - for (const key of Object.keys(this.defaults)) { - state[key] = this.parent[key] || this.defaults[key]; - } - return state; - } - applyState(storage) { - Object.assign(this.parent, this.defaults, storage); - } - releaseBarrier() { - const barrier = this.barrier; - this.barrier = new PromiseBarrier(); - barrier.resolve(); - } - notifyListeners() { - this.listeners.forEach((listener) => listener()); - } - onChange(state) { - switch (this.meta) { - case StateManagerImplState.INITIAL: - this.meta = StateManagerImplState.READY; - case StateManagerImplState.READY: - this.applyState(state); - this.notifyListeners(); - return; - case StateManagerImplState.LOADING: - this.meta = StateManagerImplState.ONCHANGE_RACE; - return; - case StateManagerImplState.SAVING: - this.meta = StateManagerImplState.ONCHANGE_RACE; - return; - case StateManagerImplState.SAVING_OVERRIDE: - this.meta = StateManagerImplState.ONCHANGE_RACE; - break; - case StateManagerImplState.ONCHANGE_RACE: - break; - case StateManagerImplState.RECOVERY: - this.meta = StateManagerImplState.ONCHANGE_RACE; - break; - } - } - saveStateInternal() { - this.storage.set( - {[this.localStorageKey]: this.collectState()}, - () => { - switch (this.meta) { - case StateManagerImplState.INITIAL: - case StateManagerImplState.LOADING: - case StateManagerImplState.READY: - case StateManagerImplState.RECOVERY: - this.logWarn( - "Unexpected state. Possible data race!" - ); - this.meta = StateManagerImplState.ONCHANGE_RACE; - this.loadStateInternal(); - return; - case StateManagerImplState.SAVING: - this.meta = StateManagerImplState.READY; - this.releaseBarrier(); - return; - case StateManagerImplState.SAVING_OVERRIDE: - this.meta = StateManagerImplState.SAVING; - this.saveStateInternal(); - return; - case StateManagerImplState.ONCHANGE_RACE: - this.meta = StateManagerImplState.RECOVERY; - this.loadStateInternal(); - } - } - ); - } - async saveState() { - switch (this.meta) { - case StateManagerImplState.INITIAL: - this.logWarn( - "StateManager.saveState was called before StateManager.loadState(). Possible data race! Loading data instead." - ); - return this.loadState(); - case StateManagerImplState.LOADING: - this.logWarn( - "StateManager.saveState was called before StateManager.loadState() resolved. Possible data race! Loading data instead." - ); - return this.barrier.entry(); - case StateManagerImplState.READY: - this.meta = StateManagerImplState.SAVING; - const entry = this.barrier.entry(); - this.saveStateInternal(); - return entry; - case StateManagerImplState.SAVING: - this.meta = StateManagerImplState.SAVING_OVERRIDE; - return this.barrier.entry(); - case StateManagerImplState.SAVING_OVERRIDE: - return this.barrier.entry(); - case StateManagerImplState.ONCHANGE_RACE: - this.logWarn( - "StateManager.saveState was called during active read/write operation. Possible data race! Loading data instead." - ); - return this.barrier.entry(); - case StateManagerImplState.RECOVERY: - this.logWarn( - "StateManager.saveState was called during active read operation. Possible data race! Waiting for data load instead." - ); - return this.barrier.entry(); - } - } - loadStateInternal() { - this.storage.get(this.localStorageKey, (data) => { - switch (this.meta) { - case StateManagerImplState.INITIAL: - case StateManagerImplState.READY: - case StateManagerImplState.SAVING: - case StateManagerImplState.SAVING_OVERRIDE: - this.logWarn("Unexpected state. Possible data race!"); - return; - case StateManagerImplState.LOADING: - this.meta = StateManagerImplState.READY; - this.applyState(data[this.localStorageKey]); - this.releaseBarrier(); - return; - case StateManagerImplState.ONCHANGE_RACE: - this.meta = StateManagerImplState.RECOVERY; - this.loadStateInternal(); - case StateManagerImplState.RECOVERY: - this.meta = StateManagerImplState.READY; - this.applyState(data[this.localStorageKey]); - this.releaseBarrier(); - this.notifyListeners(); - } - }); - } - async loadState() { - switch (this.meta) { - case StateManagerImplState.INITIAL: - this.meta = StateManagerImplState.LOADING; - const entry = this.barrier.entry(); - this.loadStateInternal(); - return entry; - case StateManagerImplState.READY: - return; - case StateManagerImplState.SAVING: - return this.barrier.entry(); - case StateManagerImplState.SAVING_OVERRIDE: - return this.barrier.entry(); - case StateManagerImplState.LOADING: - return this.barrier.entry(); - case StateManagerImplState.ONCHANGE_RACE: - return this.barrier.entry(); - case StateManagerImplState.RECOVERY: - return this.barrier.entry(); - } - } - addChangeListener(callback) { - this.listeners.add(callback); - } - getStateForTesting() { - { - return ""; - } - } - } - - class StateManager { - stateManager; - constructor(localStorageKey, parent, defaults, logWarn) { - { - function addListener(listener) { - chrome.storage.local.onChanged.addListener((changes) => { - if (localStorageKey in changes) { - listener(changes[localStorageKey].newValue); - } - }); - } - this.stateManager = new StateManagerImpl( - localStorageKey, - parent, - defaults, - chrome.storage.local, - addListener, - logWarn - ); - } - } - async saveState() { - if (this.stateManager) { - return this.stateManager.saveState(); - } - } - async loadState() { - if (this.stateManager) { - return this.stateManager.loadState(); - } - } - } - - class Newsmaker { - static UPDATE_INTERVAL = getDurationInMinutes({hours: 4}); - static ALARM_NAME = "newsmaker"; - static LOCAL_STORAGE_KEY = "Newsmaker-state"; - static initialized; - static stateManager; - static latest; - static latestTimestamp; - static init() { - if (Newsmaker.initialized) { - return; - } - Newsmaker.initialized = true; - Newsmaker.stateManager = new StateManager( - Newsmaker.LOCAL_STORAGE_KEY, - this, - {latest: [], latestTimestamp: null}, - logWarn - ); - Newsmaker.latest = []; - Newsmaker.latestTimestamp = null; - } - static onUpdate() { - Newsmaker.init(); - const latestNews = - Newsmaker.latest.length > 0 && Newsmaker.latest[0]; - if ( - latestNews && - latestNews.badge && - !latestNews.read && - !latestNews.displayed - ) { - IconManager.showBadge(latestNews.badge); - return; - } - IconManager.hideBadge(); - } - static async getLatest() { - Newsmaker.init(); - await Newsmaker.stateManager.loadState(); - return Newsmaker.latest; - } - static alarmListener = (alarm) => { - Newsmaker.init(); - if (alarm.name === Newsmaker.ALARM_NAME) { - Newsmaker.updateNews(); - } - }; - static subscribe() { - Newsmaker.init(); - if ( - Newsmaker.latestTimestamp === null || - Newsmaker.latestTimestamp + Newsmaker.UPDATE_INTERVAL < - Date.now() - ) { - Newsmaker.updateNews(); - } - chrome.alarms.onAlarm.addListener(Newsmaker.alarmListener); - chrome.alarms.create(Newsmaker.ALARM_NAME, { - periodInMinutes: Newsmaker.UPDATE_INTERVAL - }); - } - static unSubscribe() { - chrome.alarms.onAlarm.removeListener(Newsmaker.alarmListener); - chrome.alarms.clear(Newsmaker.ALARM_NAME); - } - static async updateNews() { - Newsmaker.init(); - const news = await Newsmaker.getNews(); - if (Array.isArray(news)) { - Newsmaker.latest = news; - Newsmaker.latestTimestamp = Date.now(); - Newsmaker.onUpdate(); - await Newsmaker.stateManager.saveState(); - } - } - static async getReadNews() { - Newsmaker.init(); - const [sync, local] = await Promise.all([ - readSyncStorage({readNews: []}), - readLocalStorage({readNews: []}) - ]); - return Array.from( - new Set([ - ...(sync ? sync.readNews : []), - ...(local ? local.readNews : []) - ]) - ); - } - static async getDisplayedNews() { - Newsmaker.init(); - const [sync, local] = await Promise.all([ - readSyncStorage({displayedNews: []}), - readLocalStorage({displayedNews: []}) - ]); - return Array.from( - new Set([ - ...(sync ? sync.displayedNews : []), - ...(local ? local.displayedNews : []) - ]) - ); - } - static async getNews() { - Newsmaker.init(); - try { - const response = await fetch(NEWS_URL, {cache: "no-cache"}); - const $news = await response.json(); - const readNews = await Newsmaker.getReadNews(); - const displayedNews = await Newsmaker.getDisplayedNews(); - const news = $news.map((n) => { - const url = getBlogPostURL(n.id); - const read = Newsmaker.wasRead(n.id, readNews); - const displayed = Newsmaker.wasDisplayed( - n.id, - displayedNews - ); - return {...n, url, read, displayed}; - }); - for (let i = 0; i < news.length; i++) { - const date = new Date(news[i].date); - if (isNaN(date.getTime())) { - throw new Error(`Unable to parse date ${date}`); - } - } - return news; - } catch (err) { - console.error(err); - return null; - } - } - static async markAsRead(ids) { - Newsmaker.init(); - const readNews = await Newsmaker.getReadNews(); - const results = readNews.slice(); - let changed = false; - ids.forEach((id) => { - if (readNews.indexOf(id) < 0) { - results.push(id); - changed = true; - } - }); - if (changed) { - Newsmaker.latest = Newsmaker.latest.map((n) => { - const read = Newsmaker.wasRead(n.id, results); - return {...n, read}; - }); - Newsmaker.onUpdate(); - const obj = {readNews: results}; - await Promise.all([ - writeLocalStorage(obj), - writeSyncStorage(obj), - Newsmaker.stateManager.saveState() - ]); - } - } - static async markAsDisplayed(ids) { - Newsmaker.init(); - const displayedNews = await Newsmaker.getDisplayedNews(); - const results = displayedNews.slice(); - let changed = false; - ids.forEach((id) => { - if (displayedNews.indexOf(id) < 0) { - results.push(id); - changed = true; - } - }); - if (changed) { - Newsmaker.latest = Newsmaker.latest.map((n) => { - const displayed = Newsmaker.wasDisplayed(n.id, results); - return {...n, displayed}; - }); - Newsmaker.onUpdate(); - const obj = {displayedNews: results}; - await Promise.all([ - writeLocalStorage(obj), - writeSyncStorage(obj), - Newsmaker.stateManager.saveState() - ]); - } - } - static wasRead(id, readNews) { - return readNews.includes(id); - } - static wasDisplayed(id, displayedNews) { - return displayedNews.includes(id); - } - } - - function isPanel(sender) { - return ( - typeof sender === "undefined" || - typeof sender.tab === "undefined" || - (isOpera && sender.tab.index === -1) - ); - } - - async function queryTabs(query = {}) { - return new Promise((resolve) => chrome.tabs.query(query, resolve)); - } - async function getActiveTab() { - let tab = ( - await queryTabs({ - active: true, - lastFocusedWindow: true, - windowType: "normal" - }) - )[0]; - if (!tab) { - tab = ( - await queryTabs({ - active: true, - lastFocusedWindow: true, - windowType: "app" - }) - )[0]; - } - if (!tab) { - tab = ( - await queryTabs({ - active: true, - windowType: "normal" - }) - )[0]; - } - if (!tab) { - tab = ( - await queryTabs({ - active: true, - windowType: "app" - }) - )[0]; - } - return tab || null; - } - - var DocumentState; - (function (DocumentState) { - DocumentState[(DocumentState["ACTIVE"] = 0)] = "ACTIVE"; - DocumentState[(DocumentState["PASSIVE"] = 1)] = "PASSIVE"; - DocumentState[(DocumentState["HIDDEN"] = 2)] = "HIDDEN"; - DocumentState[(DocumentState["FROZEN"] = 3)] = "FROZEN"; - DocumentState[(DocumentState["TERMINATED"] = 4)] = "TERMINATED"; - DocumentState[(DocumentState["DISCARDED"] = 5)] = "DISCARDED"; - })(DocumentState || (DocumentState = {})); - class TabManager { - static tabs; - static stateManager; - static fileLoader = null; - static onColorSchemeChange; - static getTabMessage; - static timestamp; - static LOCAL_STORAGE_KEY = "TabManager-state"; - static init({ - getConnectionMessage, - onColorSchemeChange, - getTabMessage - }) { - TabManager.stateManager = new StateManager( - TabManager.LOCAL_STORAGE_KEY, - this, - {tabs: {}, timestamp: 0}, - logWarn - ); - TabManager.tabs = {}; - TabManager.onColorSchemeChange = onColorSchemeChange; - TabManager.getTabMessage = getTabMessage; - chrome.runtime.onMessage.addListener( - async (message, sender, sendResponse) => { - switch (message.type) { - case MessageTypeCStoBG.DOCUMENT_CONNECT: { - if (isPanel(sender)) { - sendResponse({ - type: MessageTypeBGtoCS.UNSUPPORTED_SENDER - }); - return; - } - TabManager.onColorSchemeMessage(message, sender); - await TabManager.stateManager.loadState(); - const reply = ( - tabURL, - url, - isTopFrame, - topFrameHasDarkTheme - ) => { - getConnectionMessage( - tabURL, - url, - isTopFrame, - topFrameHasDarkTheme - ).then((response) => { - if (!response) { - return; - } - response.scriptId = message.scriptId; - TabManager.sendDocumentMessage( - sender.tab.id, - sender.documentId, - response, - sender.frameId - ); - }); - }; - if (isPanel(sender)) { - { - sendResponse("unsupportedSender"); - } - return; - } - const {frameId} = sender; - const isTopFrame = - frameId === 0 || message.data.isTopFrame; - const url = sender.url; - const tabId = sender.tab.id; - const scriptId = message.scriptId; - const topFrameHasDarkTheme = isTopFrame - ? false - : TabManager.tabs[tabId]?.[0] - ?.darkThemeDetected; - const tabURL = isTopFrame ? url : sender.tab.url; - const documentId = sender.documentId; - TabManager.addFrame( - tabId, - frameId, - documentId, - scriptId, - url, - isTopFrame - ); - reply( - tabURL, - url, - isTopFrame, - topFrameHasDarkTheme - ); - TabManager.stateManager.saveState(); - break; - } - case MessageTypeCStoBG.DOCUMENT_FORGET: - if (!sender.tab) { - break; - } - TabManager.removeFrame( - sender.tab.id, - sender.frameId - ); - break; - case MessageTypeCStoBG.DOCUMENT_FREEZE: { - await TabManager.stateManager.loadState(); - const info = - TabManager.tabs[sender.tab.id][sender.frameId]; - info.state = DocumentState.FROZEN; - info.url = null; - TabManager.stateManager.saveState(); - break; - } - case MessageTypeCStoBG.DOCUMENT_RESUME: { - TabManager.onColorSchemeMessage(message, sender); - await TabManager.stateManager.loadState(); - const tabId = sender.tab.id; - const tabURL = sender.tab.url; - const frameId = sender.frameId; - const url = sender.url; - const documentId = sender.documentId; - const isTopFrame = - frameId === 0 || message.data.isTopFrame; - if ( - TabManager.tabs[tabId][frameId].timestamp < - TabManager.timestamp - ) { - const response = TabManager.getTabMessage( - tabURL, - url, - isTopFrame - ); - response.scriptId = message.scriptId; - TabManager.sendDocumentMessage( - tabId, - documentId, - response, - frameId - ); - } - TabManager.tabs[sender.tab.id][sender.frameId] = { - documentId, - scriptId: message.scriptId, - url, - isTop: isTopFrame || undefined, - state: DocumentState.ACTIVE, - darkThemeDetected: false, - timestamp: TabManager.timestamp - }; - TabManager.stateManager.saveState(); - break; - } - case MessageTypeCStoBG.DARK_THEME_DETECTED: - const tabId = sender.tab.id; - const frames = TabManager.tabs[tabId]; - if (!frames) { - break; - } - for (const entry of Object.entries(frames)) { - const frameId = Number(entry[0]); - const frame = entry[1]; - frame.darkThemeDetected = true; - const {documentId, scriptId} = frame; - if ( - sender.frameId === 0 && - !frame.isTop && - frameId && - documentId - ) { - const message = { - type: MessageTypeBGtoCS.CLEAN_UP, - scriptId - }; - TabManager.sendDocumentMessage( - tabId, - documentId, - message, - frameId - ); - } - } - break; - case MessageTypeCStoBG.FETCH: { - const id = message.id; - const sendResponse = (response) => { - TabManager.sendDocumentMessage( - sender.tab.id, - sender.documentId, - { - type: MessageTypeBGtoCS.FETCH_RESPONSE, - id, - ...response - }, - sender.frameId - ); - }; - try { - const {url, responseType, mimeType, origin} = - message.data; - if (!TabManager.fileLoader) { - TabManager.fileLoader = createFileLoader(); - } - const response = - await TabManager.fileLoader.get({ - url, - responseType, - mimeType, - origin - }); - sendResponse({data: response}); - } catch (err) { - sendResponse({ - error: - err && err.message ? err.message : err - }); - } - break; - } - case MessageTypeUItoBG.COLOR_SCHEME_CHANGE: - case MessageTypeCStoBG.COLOR_SCHEME_CHANGE: - TabManager.onColorSchemeMessage(message, sender); - break; - } - } - ); - chrome.tabs.onRemoved.addListener(async (tabId) => - TabManager.removeFrame(tabId, 0) - ); - } - static sendDocumentMessage(tabId, documentId, message, frameId) { - { - chrome.tabs - .sendMessage(tabId, message, {documentId}) - .catch(() => - chrome.tabs - .sendMessage(tabId, message, {frameId, documentId}) - .catch(() => - chrome.tabs - .sendMessage(tabId, message, {documentId}) - .catch(() => {}) - ) - ); - return; - } - } - static onColorSchemeMessage(message, sender) { - if (sender && sender.frameId === 0) { - TabManager.onColorSchemeChange(message.data.isDark); - } - } - static addFrame(tabId, frameId, documentId, scriptId, url, isTop) { - let frames; - if (TabManager.tabs[tabId]) { - frames = TabManager.tabs[tabId]; - } else { - frames = {}; - TabManager.tabs[tabId] = frames; - } - frames[frameId] = { - documentId, - scriptId, - url, - isTop: isTop || undefined, - state: DocumentState.ACTIVE, - darkThemeDetected: false, - timestamp: TabManager.timestamp - }; - } - static async removeFrame(tabId, frameId) { - await TabManager.stateManager.loadState(); - if (frameId === 0) { - delete TabManager.tabs[tabId]; - } - if (TabManager.tabs[tabId] && TabManager.tabs[tabId][frameId]) { - delete TabManager.tabs[tabId][frameId]; - } - TabManager.stateManager.saveState(); - } - static async getTabURL(tab) { - { - if (!tab) { - return "about:blank"; - } - try { - return (await chrome.tabs.get(tab.id)).url || "about:blank"; - } catch (e) { - try { - return ( - ( - await chrome.scripting.executeScript({ - target: { - tabId: tab.id, - frameIds: [0] - }, - world: "MAIN", - injectImmediately: true, - func: () => window.location.href - }) - )[0].result || "about:blank" - ); - } catch (e) { - const errMessage = String(e); - if ( - errMessage.includes("chrome://") || - errMessage.includes("chrome-extension://") || - errMessage.includes("gallery") - ) { - return "chrome://protected"; - } - return "about:blank"; - } - } - } - return (tab && tab.url) || "about:blank"; - } - static async updateContentScript(options) { - (await queryTabs({discarded: false})) - .filter((tab) => true) - .filter((tab) => !Boolean(TabManager.tabs[tab.id])) - .forEach((tab) => { - { - chrome.scripting.executeScript( - { - target: { - tabId: tab.id, - allFrames: true - }, - files: ["/inject/index.js"] - }, - () => - logInfo( - "Could not update content script in tab", - tab, - chrome.runtime.lastError - ) - ); - } - }); - } - static async registerMailDisplayScript() { - await chrome.messageDisplayScripts.register({ - js: [{file: "/inject/fallback.js"}, {file: "/inject/index.js"}] - }); - } - static async sendMessage(onlyUpdateActiveTab = false) { - TabManager.timestamp++; - const activeTabHostname = onlyUpdateActiveTab - ? getURLHostOrProtocol(await TabManager.getActiveTabURL()) - : null; - (await queryTabs({discarded: false})) - .filter((tab) => Boolean(TabManager.tabs[tab.id])) - .forEach((tab) => { - const frames = TabManager.tabs[tab.id]; - Object.entries(frames) - .filter( - ([, {state}]) => - state === DocumentState.ACTIVE || - state === DocumentState.PASSIVE - ) - .forEach( - async ([ - id, - {url, documentId, scriptId, isTop} - ]) => { - const frameId = Number(id); - const tabURL = await TabManager.getTabURL(tab); - if ( - onlyUpdateActiveTab && - getURLHostOrProtocol(tabURL) !== - activeTabHostname - ) { - return; - } - const message = TabManager.getTabMessage( - tabURL, - url, - isTop || false - ); - message.scriptId = scriptId; - if (tab.active && isTop) { - TabManager.sendDocumentMessage( - tab.id, - documentId, - message, - frameId - ); - } else { - setTimeout(() => { - TabManager.sendDocumentMessage( - tab.id, - documentId, - message, - frameId - ); - }); - } - if (TabManager.tabs[tab.id][frameId]) { - TabManager.tabs[tab.id][frameId].timestamp = - TabManager.timestamp; - } - } - ); - }); - } - static canAccessTab(tab) { - return (tab && Boolean(TabManager.tabs[tab.id])) || false; - } - static getTabDocumentId(tab) { - return ( - tab && - TabManager.tabs[tab.id] && - TabManager.tabs[tab.id][0] && - TabManager.tabs[tab.id][0].documentId - ); - } - static isTabDarkThemeDetected(tab) { - return ( - (tab && - TabManager.tabs[tab.id] && - TabManager.tabs[tab.id][0] && - TabManager.tabs[tab.id][0].darkThemeDetected) || - null - ); - } - static async getActiveTabURL() { - return TabManager.getTabURL(await getActiveTab()); - } - } - - function evalMath(expression) { - const rpnStack = []; - const workingStack = []; - let lastToken; - for (let i = 0, len = expression.length; i < len; i++) { - const token = expression[i]; - if (!token || token === " ") { - continue; - } - if (operators.has(token)) { - const op = operators.get(token); - while (workingStack.length) { - const currentOp = operators.get(workingStack[0]); - if (!currentOp) { - break; - } - if (op.lessOrEqualThan(currentOp)) { - rpnStack.push(workingStack.shift()); - } else { - break; - } - } - workingStack.unshift(token); - } else if (!lastToken || operators.has(lastToken)) { - rpnStack.push(token); - } else { - rpnStack[rpnStack.length - 1] += token; - } - lastToken = token; - } - rpnStack.push(...workingStack); - const stack = []; - for (let i = 0, len = rpnStack.length; i < len; i++) { - const op = operators.get(rpnStack[i]); - if (op) { - const args = stack.splice(0, 2); - stack.push(op.exec(args[1], args[0])); - } else { - stack.unshift(parseFloat(rpnStack[i])); - } - } - return stack[0]; - } - class Operator { - precendce; - execMethod; - constructor(precedence, method) { - this.precendce = precedence; - this.execMethod = method; - } - exec(left, right) { - return this.execMethod(left, right); - } - lessOrEqualThan(op) { - return this.precendce <= op.precendce; - } - } - const operators = new Map([ - ["+", new Operator(1, (left, right) => left + right)], - ["-", new Operator(1, (left, right) => left - right)], - ["*", new Operator(2, (left, right) => left * right)], - ["/", new Operator(2, (left, right) => left / right)] - ]); - - const isSystemDarkModeEnabled = () => - matchMedia("(prefers-color-scheme: dark)").matches; - - const hslaParseCache = new Map(); - const rgbaParseCache = new Map(); - function parseColorWithCache($color) { - $color = $color.trim(); - if (rgbaParseCache.has($color)) { - return rgbaParseCache.get($color); - } - if ($color.includes("calc(")) { - $color = lowerCalcExpression($color); - } - const color = parse($color); - color && rgbaParseCache.set($color, color); - return color; - } - function parseToHSLWithCache(color) { - if (hslaParseCache.has(color)) { - return hslaParseCache.get(color); - } - const rgb = parseColorWithCache(color); - if (!rgb) { - return null; - } - const hsl = rgbToHSL(rgb); - hslaParseCache.set(color, hsl); - return hsl; - } - function hslToRGB({h, s, l, a = 1}) { - if (s === 0) { - const [r, b, g] = [l, l, l].map((x) => Math.round(x * 255)); - return {r, g, b, a}; - } - const c = (1 - Math.abs(2 * l - 1)) * s; - const x = c * (1 - Math.abs(((h / 60) % 2) - 1)); - const m = l - c / 2; - const [r, g, b] = ( - h < 60 - ? [c, x, 0] - : h < 120 - ? [x, c, 0] - : h < 180 - ? [0, c, x] - : h < 240 - ? [0, x, c] - : h < 300 - ? [x, 0, c] - : [c, 0, x] - ).map((n) => Math.round((n + m) * 255)); - return {r, g, b, a}; - } - function rgbToHSL({r: r255, g: g255, b: b255, a = 1}) { - const r = r255 / 255; - const g = g255 / 255; - const b = b255 / 255; - const max = Math.max(r, g, b); - const min = Math.min(r, g, b); - const c = max - min; - const l = (max + min) / 2; - if (c === 0) { - return {h: 0, s: 0, l, a}; - } - let h = - (max === r - ? ((g - b) / c) % 6 - : max === g - ? (b - r) / c + 2 - : (r - g) / c + 4) * 60; - if (h < 0) { - h += 360; - } - const s = c / (1 - Math.abs(2 * l - 1)); - return {h, s, l, a}; - } - function toFixed(n, digits = 0) { - const fixed = n.toFixed(digits); - if (digits === 0) { - return fixed; - } - const dot = fixed.indexOf("."); - if (dot >= 0) { - const zerosMatch = fixed.match(/0+$/); - if (zerosMatch) { - if (zerosMatch.index === dot + 1) { - return fixed.substring(0, dot); - } - return fixed.substring(0, zerosMatch.index); - } - } - return fixed; - } - function rgbToString(rgb) { - const {r, g, b, a} = rgb; - if (a != null && a < 1) { - return `rgba(${toFixed(r)}, ${toFixed(g)}, ${toFixed(b)}, ${toFixed(a, 2)})`; - } - return `rgb(${toFixed(r)}, ${toFixed(g)}, ${toFixed(b)})`; - } - function rgbToHexString({r, g, b, a}) { - return `#${(a != null && a < 1 - ? [r, g, b, Math.round(a * 255)] - : [r, g, b] - ) - .map((x) => { - return `${x < 16 ? "0" : ""}${x.toString(16)}`; - }) - .join("")}`; - } - const rgbMatch = /^rgba?\([^\(\)]+\)$/; - const hslMatch = /^hsla?\([^\(\)]+\)$/; - const hexMatch = /^#[0-9a-f]+$/i; - function parse($color) { - const c = $color.trim().toLowerCase(); - if (c.match(rgbMatch)) { - return parseRGB(c); - } - if (c.match(hslMatch)) { - return parseHSL(c); - } - if (c.match(hexMatch)) { - return parseHex(c); - } - if (knownColors.has(c)) { - return getColorByName(c); - } - if (systemColors.has(c)) { - return getSystemColor(c); - } - if ($color === "transparent") { - return {r: 0, g: 0, b: 0, a: 0}; - } - if ( - (c.startsWith("color(") || c.startsWith("color-mix(")) && - c.endsWith(")") - ) { - return domParseColor(c); - } - if (c.startsWith("light-dark(") && c.endsWith(")")) { - const match = c.match( - /^light-dark\(\s*([a-z]+(\(.*\))?),\s*([a-z]+(\(.*\))?)\s*\)$/ - ); - if (match) { - const schemeColor = isSystemDarkModeEnabled() - ? match[3] - : match[1]; - return parse(schemeColor); - } - } - return null; - } - function getNumbers($color) { - const numbers = []; - let prevPos = 0; - let isMining = false; - const startIndex = $color.indexOf("("); - $color = $color.substring(startIndex + 1, $color.length - 1); - for (let i = 0; i < $color.length; i++) { - const c = $color[i]; - if ((c >= "0" && c <= "9") || c === "." || c === "+" || c === "-") { - isMining = true; - } else if (isMining && (c === " " || c === "," || c === "/")) { - numbers.push($color.substring(prevPos, i)); - isMining = false; - prevPos = i + 1; - } else if (!isMining) { - prevPos = i + 1; - } - } - if (isMining) { - numbers.push($color.substring(prevPos, $color.length)); - } - return numbers; - } - function getNumbersFromString(str, range, units) { - const raw = getNumbers(str); - const unitsList = Object.entries(units); - const numbers = raw - .map((r) => r.trim()) - .map((r, i) => { - let n; - const unit = unitsList.find(([u]) => r.endsWith(u)); - if (unit) { - n = - (parseFloat(r.substring(0, r.length - unit[0].length)) / - unit[1]) * - range[i]; - } else { - n = parseFloat(r); - } - if (range[i] > 1) { - return Math.round(n); - } - return n; - }); - return numbers; - } - const rgbRange = [255, 255, 255, 1]; - const rgbUnits = {"%": 100}; - function parseRGB($rgb) { - const [r, g, b, a = 1] = getNumbersFromString($rgb, rgbRange, rgbUnits); - return {r, g, b, a}; - } - const hslRange = [360, 1, 1, 1]; - const hslUnits = {"%": 100, "deg": 360, "rad": 2 * Math.PI, "turn": 1}; - function parseHSL($hsl) { - const [h, s, l, a = 1] = getNumbersFromString($hsl, hslRange, hslUnits); - return hslToRGB({h, s, l, a}); - } - function parseHex($hex) { - const h = $hex.substring(1); - switch (h.length) { - case 3: - case 4: { - const [r, g, b] = [0, 1, 2].map((i) => - parseInt(`${h[i]}${h[i]}`, 16) - ); - const a = - h.length === 3 ? 1 : parseInt(`${h[3]}${h[3]}`, 16) / 255; - return {r, g, b, a}; - } - case 6: - case 8: { - const [r, g, b] = [0, 2, 4].map((i) => - parseInt(h.substring(i, i + 2), 16) - ); - const a = - h.length === 6 ? 1 : parseInt(h.substring(6, 8), 16) / 255; - return {r, g, b, a}; - } - } - return null; - } - function getColorByName($color) { - const n = knownColors.get($color); - return { - r: (n >> 16) & 255, - g: (n >> 8) & 255, - b: (n >> 0) & 255, - a: 1 - }; - } - function getSystemColor($color) { - const n = systemColors.get($color); - return { - r: (n >> 16) & 255, - g: (n >> 8) & 255, - b: (n >> 0) & 255, - a: 1 - }; - } - function lowerCalcExpression(color) { - let searchIndex = 0; - const replaceBetweenIndices = (start, end, replacement) => { - color = - color.substring(0, start) + replacement + color.substring(end); - }; - while ((searchIndex = color.indexOf("calc(")) !== -1) { - const range = getParenthesesRange(color, searchIndex); - if (!range) { - break; - } - let slice = color.slice(range.start + 1, range.end - 1); - const includesPercentage = slice.includes("%"); - slice = slice.split("%").join(""); - const output = Math.round(evalMath(slice)); - replaceBetweenIndices( - range.start - 4, - range.end, - output + (includesPercentage ? "%" : "") - ); - } - return color; - } - const knownColors = new Map( - Object.entries({ - aliceblue: 0xf0f8ff, - antiquewhite: 0xfaebd7, - aqua: 0x00ffff, - aquamarine: 0x7fffd4, - azure: 0xf0ffff, - beige: 0xf5f5dc, - bisque: 0xffe4c4, - black: 0x000000, - blanchedalmond: 0xffebcd, - blue: 0x0000ff, - blueviolet: 0x8a2be2, - brown: 0xa52a2a, - burlywood: 0xdeb887, - cadetblue: 0x5f9ea0, - chartreuse: 0x7fff00, - chocolate: 0xd2691e, - coral: 0xff7f50, - cornflowerblue: 0x6495ed, - cornsilk: 0xfff8dc, - crimson: 0xdc143c, - cyan: 0x00ffff, - darkblue: 0x00008b, - darkcyan: 0x008b8b, - darkgoldenrod: 0xb8860b, - darkgray: 0xa9a9a9, - darkgrey: 0xa9a9a9, - darkgreen: 0x006400, - darkkhaki: 0xbdb76b, - darkmagenta: 0x8b008b, - darkolivegreen: 0x556b2f, - darkorange: 0xff8c00, - darkorchid: 0x9932cc, - darkred: 0x8b0000, - darksalmon: 0xe9967a, - darkseagreen: 0x8fbc8f, - darkslateblue: 0x483d8b, - darkslategray: 0x2f4f4f, - darkslategrey: 0x2f4f4f, - darkturquoise: 0x00ced1, - darkviolet: 0x9400d3, - deeppink: 0xff1493, - deepskyblue: 0x00bfff, - dimgray: 0x696969, - dimgrey: 0x696969, - dodgerblue: 0x1e90ff, - firebrick: 0xb22222, - floralwhite: 0xfffaf0, - forestgreen: 0x228b22, - fuchsia: 0xff00ff, - gainsboro: 0xdcdcdc, - ghostwhite: 0xf8f8ff, - gold: 0xffd700, - goldenrod: 0xdaa520, - gray: 0x808080, - grey: 0x808080, - green: 0x008000, - greenyellow: 0xadff2f, - honeydew: 0xf0fff0, - hotpink: 0xff69b4, - indianred: 0xcd5c5c, - indigo: 0x4b0082, - ivory: 0xfffff0, - khaki: 0xf0e68c, - lavender: 0xe6e6fa, - lavenderblush: 0xfff0f5, - lawngreen: 0x7cfc00, - lemonchiffon: 0xfffacd, - lightblue: 0xadd8e6, - lightcoral: 0xf08080, - lightcyan: 0xe0ffff, - lightgoldenrodyellow: 0xfafad2, - lightgray: 0xd3d3d3, - lightgrey: 0xd3d3d3, - lightgreen: 0x90ee90, - lightpink: 0xffb6c1, - lightsalmon: 0xffa07a, - lightseagreen: 0x20b2aa, - lightskyblue: 0x87cefa, - lightslategray: 0x778899, - lightslategrey: 0x778899, - lightsteelblue: 0xb0c4de, - lightyellow: 0xffffe0, - lime: 0x00ff00, - limegreen: 0x32cd32, - linen: 0xfaf0e6, - magenta: 0xff00ff, - maroon: 0x800000, - mediumaquamarine: 0x66cdaa, - mediumblue: 0x0000cd, - mediumorchid: 0xba55d3, - mediumpurple: 0x9370db, - mediumseagreen: 0x3cb371, - mediumslateblue: 0x7b68ee, - mediumspringgreen: 0x00fa9a, - mediumturquoise: 0x48d1cc, - mediumvioletred: 0xc71585, - midnightblue: 0x191970, - mintcream: 0xf5fffa, - mistyrose: 0xffe4e1, - moccasin: 0xffe4b5, - navajowhite: 0xffdead, - navy: 0x000080, - oldlace: 0xfdf5e6, - olive: 0x808000, - olivedrab: 0x6b8e23, - orange: 0xffa500, - orangered: 0xff4500, - orchid: 0xda70d6, - palegoldenrod: 0xeee8aa, - palegreen: 0x98fb98, - paleturquoise: 0xafeeee, - palevioletred: 0xdb7093, - papayawhip: 0xffefd5, - peachpuff: 0xffdab9, - peru: 0xcd853f, - pink: 0xffc0cb, - plum: 0xdda0dd, - powderblue: 0xb0e0e6, - purple: 0x800080, - rebeccapurple: 0x663399, - red: 0xff0000, - rosybrown: 0xbc8f8f, - royalblue: 0x4169e1, - saddlebrown: 0x8b4513, - salmon: 0xfa8072, - sandybrown: 0xf4a460, - seagreen: 0x2e8b57, - seashell: 0xfff5ee, - sienna: 0xa0522d, - silver: 0xc0c0c0, - skyblue: 0x87ceeb, - slateblue: 0x6a5acd, - slategray: 0x708090, - slategrey: 0x708090, - snow: 0xfffafa, - springgreen: 0x00ff7f, - steelblue: 0x4682b4, - tan: 0xd2b48c, - teal: 0x008080, - thistle: 0xd8bfd8, - tomato: 0xff6347, - turquoise: 0x40e0d0, - violet: 0xee82ee, - wheat: 0xf5deb3, - white: 0xffffff, - whitesmoke: 0xf5f5f5, - yellow: 0xffff00, - yellowgreen: 0x9acd32 - }) - ); - const systemColors = new Map( - Object.entries({ - "ActiveBorder": 0x3b99fc, - "ActiveCaption": 0x000000, - "AppWorkspace": 0xaaaaaa, - "Background": 0x6363ce, - "ButtonFace": 0xffffff, - "ButtonHighlight": 0xe9e9e9, - "ButtonShadow": 0x9fa09f, - "ButtonText": 0x000000, - "CaptionText": 0x000000, - "GrayText": 0x7f7f7f, - "Highlight": 0xb2d7ff, - "HighlightText": 0x000000, - "InactiveBorder": 0xffffff, - "InactiveCaption": 0xffffff, - "InactiveCaptionText": 0x000000, - "InfoBackground": 0xfbfcc5, - "InfoText": 0x000000, - "Menu": 0xf6f6f6, - "MenuText": 0xffffff, - "Scrollbar": 0xaaaaaa, - "ThreeDDarkShadow": 0x000000, - "ThreeDFace": 0xc0c0c0, - "ThreeDHighlight": 0xffffff, - "ThreeDLightShadow": 0xffffff, - "ThreeDShadow": 0x000000, - "Window": 0xececec, - "WindowFrame": 0xaaaaaa, - "WindowText": 0x000000, - "-webkit-focus-ring-color": 0xe59700 - }).map(([key, value]) => [key.toLowerCase(), value]) - ); - let canvas; - let context; - function domParseColor($color) { - if (!context) { - canvas = document.createElement("canvas"); - canvas.width = 1; - canvas.height = 1; - context = canvas.getContext("2d", {willReadFrequently: true}); - } - context.fillStyle = $color; - context.fillRect(0, 0, 1, 1); - const d = context.getImageData(0, 0, 1, 1).data; - const color = `rgba(${d[0]}, ${d[1]}, ${d[2]}, ${(d[3] / 255).toFixed(2)})`; - return parseRGB(color); - } - - function getBgPole(theme) { - const isDarkScheme = theme.mode === 1; - const prop = isDarkScheme - ? "darkSchemeBackgroundColor" - : "lightSchemeBackgroundColor"; - return theme[prop]; - } - function getFgPole(theme) { - const isDarkScheme = theme.mode === 1; - const prop = isDarkScheme - ? "darkSchemeTextColor" - : "lightSchemeTextColor"; - return theme[prop]; - } - const colorModificationCache = new Map(); - const rgbCacheKeys = ["r", "g", "b", "a"]; - const themeCacheKeys = [ - "mode", - "brightness", - "contrast", - "grayscale", - "sepia", - "darkSchemeBackgroundColor", - "darkSchemeTextColor", - "lightSchemeBackgroundColor", - "lightSchemeTextColor" - ]; - function getCacheId(rgb, theme) { - let resultId = ""; - rgbCacheKeys.forEach((key) => { - resultId += `${rgb[key]};`; - }); - themeCacheKeys.forEach((key) => { - resultId += `${theme[key]};`; - }); - return resultId; - } - function modifyColorWithCache( - rgb, - theme, - modifyHSL, - poleColor, - anotherPoleColor - ) { - let fnCache; - if (colorModificationCache.has(modifyHSL)) { - fnCache = colorModificationCache.get(modifyHSL); - } else { - fnCache = new Map(); - colorModificationCache.set(modifyHSL, fnCache); - } - const id = getCacheId(rgb, theme); - if (fnCache.has(id)) { - return fnCache.get(id); - } - const hsl = rgbToHSL(rgb); - const pole = poleColor == null ? null : parseToHSLWithCache(poleColor); - const anotherPole = - anotherPoleColor == null - ? null - : parseToHSLWithCache(anotherPoleColor); - const modified = modifyHSL(hsl, pole, anotherPole); - const {r, g, b, a} = hslToRGB(modified); - const matrix = createFilterMatrix(theme); - const [rf, gf, bf] = applyColorMatrix([r, g, b], matrix); - const color = - a === 1 - ? rgbToHexString({r: rf, g: gf, b: bf}) - : rgbToString({r: rf, g: gf, b: bf, a}); - fnCache.set(id, color); - return color; - } - function modifyLightSchemeColor(rgb, theme) { - const poleBg = getBgPole(theme); - const poleFg = getFgPole(theme); - return modifyColorWithCache( - rgb, - theme, - modifyLightModeHSL, - poleFg, - poleBg - ); - } - function modifyLightModeHSL({h, s, l, a}, poleFg, poleBg) { - const isDark = l < 0.5; - let isNeutral; - if (isDark) { - isNeutral = l < 0.2 || s < 0.12; - } else { - const isBlue = h > 200 && h < 280; - isNeutral = s < 0.24 || (l > 0.8 && isBlue); - } - let hx = h; - let sx = l; - if (isNeutral) { - if (isDark) { - hx = poleFg.h; - sx = poleFg.s; - } else { - hx = poleBg.h; - sx = poleBg.s; - } - } - const lx = scale(l, 0, 1, poleFg.l, poleBg.l); - return {h: hx, s: sx, l: lx, a}; - } - const MAX_BG_LIGHTNESS = 0.4; - function modifyBgHSL({h, s, l, a}, pole) { - const isDark = l < 0.5; - const isBlue = h > 200 && h < 280; - const isNeutral = s < 0.12 || (l > 0.8 && isBlue); - if (isDark) { - const lx = scale(l, 0, 0.5, 0, MAX_BG_LIGHTNESS); - if (isNeutral) { - const hx = pole.h; - const sx = pole.s; - return {h: hx, s: sx, l: lx, a}; - } - return {h, s, l: lx, a}; - } - let lx = scale(l, 0.5, 1, MAX_BG_LIGHTNESS, pole.l); - if (isNeutral) { - const hx = pole.h; - const sx = pole.s; - return {h: hx, s: sx, l: lx, a}; - } - let hx = h; - const isYellow = h > 60 && h < 180; - if (isYellow) { - const isCloserToGreen = h > 120; - if (isCloserToGreen) { - hx = scale(h, 120, 180, 135, 180); - } else { - hx = scale(h, 60, 120, 60, 105); - } - } - if (hx > 40 && hx < 80) { - lx *= 0.75; - } - return {h: hx, s, l: lx, a}; - } - function modifyBackgroundColor(rgb, theme) { - if (theme.mode === 0) { - return modifyLightSchemeColor(rgb, theme); - } - const pole = getBgPole(theme); - return modifyColorWithCache( - rgb, - {...theme, mode: 0}, - modifyBgHSL, - pole - ); - } - const MIN_FG_LIGHTNESS = 0.55; - function modifyBlueFgHue(hue) { - return scale(hue, 205, 245, 205, 220); - } - function modifyFgHSL({h, s, l, a}, pole) { - const isLight = l > 0.5; - const isNeutral = l < 0.2 || s < 0.24; - const isBlue = !isNeutral && h > 205 && h < 245; - if (isLight) { - const lx = scale(l, 0.5, 1, MIN_FG_LIGHTNESS, pole.l); - if (isNeutral) { - const hx = pole.h; - const sx = pole.s; - return {h: hx, s: sx, l: lx, a}; - } - let hx = h; - if (isBlue) { - hx = modifyBlueFgHue(h); - } - return {h: hx, s, l: lx, a}; - } - if (isNeutral) { - const hx = pole.h; - const sx = pole.s; - const lx = scale(l, 0, 0.5, pole.l, MIN_FG_LIGHTNESS); - return {h: hx, s: sx, l: lx, a}; - } - let hx = h; - let lx; - if (isBlue) { - hx = modifyBlueFgHue(h); - lx = scale(l, 0, 0.5, pole.l, Math.min(1, MIN_FG_LIGHTNESS + 0.05)); - } else { - lx = scale(l, 0, 0.5, pole.l, MIN_FG_LIGHTNESS); - } - return {h: hx, s, l: lx, a}; - } - function modifyForegroundColor(rgb, theme) { - if (theme.mode === 0) { - return modifyLightSchemeColor(rgb, theme); - } - const pole = getFgPole(theme); - return modifyColorWithCache( - rgb, - {...theme, mode: 0}, - modifyFgHSL, - pole - ); - } - function modifyBorderHSL({h, s, l, a}, poleFg, poleBg) { - const isDark = l < 0.5; - const isNeutral = l < 0.2 || s < 0.24; - let hx = h; - let sx = s; - if (isNeutral) { - if (isDark) { - hx = poleFg.h; - sx = poleFg.s; - } else { - hx = poleBg.h; - sx = poleBg.s; - } - } - const lx = scale(l, 0, 1, 0.5, 0.2); - return {h: hx, s: sx, l: lx, a}; - } - function modifyBorderColor(rgb, theme) { - if (theme.mode === 0) { - return modifyLightSchemeColor(rgb, theme); - } - const poleFg = getFgPole(theme); - const poleBg = getBgPole(theme); - return modifyColorWithCache( - rgb, - {...theme, mode: 0}, - modifyBorderHSL, - poleFg, - poleBg - ); - } - - const themeColorTypes = { - accentcolor: "bg", - button_background_active: "text", - button_background_hover: "text", - frame: "bg", - icons: "text", - icons_attention: "text", - ntp_background: "bg", - ntp_text: "text", - popup: "bg", - popup_border: "bg", - popup_highlight: "bg", - popup_highlight_text: "text", - popup_text: "text", - sidebar: "bg", - sidebar_border: "border", - sidebar_text: "text", - tab_background_text: "text", - tab_line: "bg", - tab_loading: "bg", - tab_selected: "bg", - textcolor: "text", - toolbar: "bg", - toolbar_bottom_separator: "border", - toolbar_field: "bg", - toolbar_field_border: "border", - toolbar_field_border_focus: "border", - toolbar_field_focus: "bg", - toolbar_field_separator: "border", - toolbar_field_text: "text", - toolbar_field_text_focus: "text", - toolbar_text: "text", - toolbar_top_separator: "border", - toolbar_vertical_separator: "border" - }; - const $colors = { - accentcolor: "#111111", - frame: "#111111", - ntp_background: "white", - ntp_text: "black", - popup: "#cccccc", - popup_text: "black", - sidebar: "#cccccc", - sidebar_border: "#333", - sidebar_text: "black", - tab_background_text: "white", - tab_loading: "#23aeff", - textcolor: "white", - toolbar: "#707070", - toolbar_field: "lightgray", - toolbar_field_text: "black" - }; - function setWindowTheme(theme) { - const colors = Object.entries($colors).reduce((obj, [key, value]) => { - const type = themeColorTypes[key]; - const modify = { - bg: modifyBackgroundColor, - text: modifyForegroundColor, - border: modifyBorderColor - }[type]; - const rgb = parseColorWithCache(value); - const modified = modify(rgb, theme); - obj[key] = modified; - return obj; - }, {}); - if ( - typeof browser !== "undefined" && - browser.theme && - browser.theme.update - ) { - browser.theme.update({colors}); - } - } - function resetWindowTheme() { - if ( - typeof browser !== "undefined" && - browser.theme && - browser.theme.reset - ) { - browser.theme.reset(); - } - } - - const detectorHintsCommands = { - "TARGET": "target", - "MATCH": "match", - "NO DARK THEME": "noDarkTheme", - "SYSTEM THEME": "systemTheme" - }; - const detectorParserOptions = { - commands: Object.keys(detectorHintsCommands), - getCommandPropName: (command) => detectorHintsCommands[command], - parseCommandValue: (command, value) => { - if (command === "TARGET") { - return value.trim(); - } - if (command === "NO DARK THEME" || command === "SYSTEM THEME") { - return true; - } - return parseArray(value); - } - }; - function getDetectorHintsFor(url, text, index) { - const fixes = getSitesFixesFor(url, text, index, detectorParserOptions); - if (fixes.length === 0) { - return null; - } - return fixes; - } - - function createSVGFilterStylesheet(config, url, isTopFrame, fixes, index) { - let filterValue; - let reverseFilterValue; - { - filterValue = "url(#dark-reader-filter)"; - reverseFilterValue = "url(#dark-reader-reverse-filter)"; - } - const filterRoot = "html"; - return cssFilterStyleSheetTemplate( - filterRoot, - filterValue, - reverseFilterValue, - config, - url, - isTopFrame, - fixes, - index - ); - } - function toSVGMatrix(matrix) { - return matrix - .slice(0, 4) - .map((m) => m.map((m) => m.toFixed(3)).join(" ")) - .join(" "); - } - function getSVGFilterMatrixValue(config) { - return toSVGMatrix(createFilterMatrix(config)); - } - function getSVGReverseFilterMatrixValue() { - return toSVGMatrix(Matrix.invertNHue()); - } - - const proposedHighlights = ["new-toggle-menus"]; - const KEY_UI_HIDDEN_HIGHLIGHTS = "ui-hidden-highlights"; - async function getHiddenHighlights() { - const options = await readLocalStorage({ - [KEY_UI_HIDDEN_HIGHLIGHTS]: [] - }); - return options[KEY_UI_HIDDEN_HIGHLIGHTS]; - } - async function getHighlightsToShow() { - const hiddenHighlights = await getHiddenHighlights(); - return proposedHighlights.filter((h) => !hiddenHighlights.includes(h)); - } - async function hideHighlights(keys) { - const hiddenHighlights = await getHiddenHighlights(); - const update = Array.from(new Set([...hiddenHighlights, ...keys])); - await writeLocalStorage({[KEY_UI_HIDDEN_HIGHLIGHTS]: update}); - } - var UIHighlights = { - getHighlightsToShow, - hideHighlights - }; - - class Extension { - static autoState = ""; - static wasEnabledOnLastCheck = null; - static registeredContextMenus = null; - static wasLastColorSchemeDark = null; - static startBarrier = null; - static stateManager = null; - static ALARM_NAME = "auto-time-alarm"; - static LOCAL_STORAGE_KEY = "Extension-state"; - static SYSTEM_COLOR_LOCAL_STORAGE_KEY = "system-color-state"; - static systemColorStateManager; - static initialized = false; - static isFirstLoad = false; - static init() { - if (Extension.initialized) { - return; - } - Extension.initialized = true; - DevTools.init(Extension.onSettingsChanged); - Messenger.init(Extension.getMessengerAdapter()); - TabManager.init({ - getConnectionMessage: Extension.getConnectionMessage, - getTabMessage: Extension.getTabMessage, - onColorSchemeChange: Extension.onColorSchemeChange - }); - Extension.startBarrier = new PromiseBarrier(); - Extension.stateManager = new StateManager( - Extension.LOCAL_STORAGE_KEY, - Extension, - { - autoState: "", - wasEnabledOnLastCheck: null, - registeredContextMenus: null - }, - logWarn - ); - chrome.alarms.onAlarm.addListener(Extension.alarmListener); - if (chrome.commands) { - { - chrome.commands.onCommand.addListener( - async (command, tab) => - Extension.onCommand( - command, - (tab && tab.id) || null, - 0, - null - ) - ); - } - } - if (chrome.permissions.onRemoved) { - chrome.permissions.onRemoved.addListener((permissions) => { - if (!permissions?.permissions?.includes("contextMenus")) { - Extension.registeredContextMenus = false; - } - }); - } - } - static async MV3syncSystemColorStateManager(isDark) { - if (!Extension.systemColorStateManager) { - Extension.systemColorStateManager = new StateManager( - Extension.SYSTEM_COLOR_LOCAL_STORAGE_KEY, - Extension, - { - wasLastColorSchemeDark: isDark - }, - logWarn - ); - } - if (isDark === null) { - return Extension.systemColorStateManager.loadState(); - } else if (Extension.wasLastColorSchemeDark !== isDark) { - Extension.wasLastColorSchemeDark = isDark; - return Extension.systemColorStateManager.saveState(); - } - } - static alarmListener = (alarm) => { - if (alarm.name === Extension.ALARM_NAME) { - Extension.loadData().then(() => - Extension.handleAutomationCheck() - ); - } - }; - static isExtensionSwitchedOn() { - return ( - Extension.autoState === "turn-on" || - Extension.autoState === "scheme-dark" || - Extension.autoState === "scheme-light" || - (Extension.autoState === "" && UserStorage.settings.enabled) - ); - } - static updateAutoState() { - const {mode, behavior, enabled} = UserStorage.settings.automation; - let isAutoDark; - let nextCheck; - switch (mode) { - case AutomationMode.TIME: { - const {time} = UserStorage.settings; - isAutoDark = isInTimeIntervalLocal( - time.activation, - time.deactivation - ); - nextCheck = nextTimeInterval( - time.activation, - time.deactivation - ); - break; - } - case AutomationMode.SYSTEM: { - isAutoDark = Extension.wasLastColorSchemeDark; - if (Extension.wasLastColorSchemeDark === null) { - isAutoDark = true; - } - break; - } - case AutomationMode.LOCATION: { - const {latitude, longitude} = UserStorage.settings.location; - if (latitude != null && longitude != null) { - isAutoDark = isNightAtLocation(latitude, longitude); - nextCheck = nextTimeChangeAtLocation( - latitude, - longitude - ); - } - break; - } - case AutomationMode.NONE: - break; - } - let state = ""; - if (enabled) { - if (behavior === "OnOff") { - state = isAutoDark ? "turn-on" : "turn-off"; - } else if (behavior === "Scheme") { - state = isAutoDark ? "scheme-dark" : "scheme-light"; - } - } - Extension.autoState = state; - if (nextCheck) { - if (nextCheck < Date.now()) { - logWarn( - `Alarm is set in the past: ${nextCheck}. The time is: ${new Date()}. ISO: ${new Date().toISOString()}` - ); - } else { - chrome.alarms.create(Extension.ALARM_NAME, { - when: nextCheck - }); - } - } - } - static wakeInterval = -1; - static runWakeDetector() { - const WAKE_CHECK_INTERVAL = getDuration({minutes: 1}); - const WAKE_CHECK_INTERVAL_ERROR = getDuration({seconds: 10}); - if (this.wakeInterval >= 0) { - clearInterval(this.wakeInterval); - } - let lastRun = Date.now(); - this.wakeInterval = setInterval(() => { - const now = Date.now(); - if ( - now - lastRun > - WAKE_CHECK_INTERVAL + WAKE_CHECK_INTERVAL_ERROR - ) { - Extension.handleAutomationCheck(); - } - lastRun = now; - }, WAKE_CHECK_INTERVAL); - } - static async start() { - Extension.init(); - await Promise.all([ - ConfigManager.load({local: true}), - Extension.MV3syncSystemColorStateManager(null), - UserStorage.loadSettings() - ]); - if ( - UserStorage.settings.enableContextMenus && - !Extension.registeredContextMenus - ) { - chrome.permissions.contains( - {permissions: ["contextMenus"]}, - (permitted) => { - if (permitted) { - Extension.registerContextMenus(); - } - } - ); - } - if (UserStorage.settings.syncSitesFixes) { - await ConfigManager.load({local: false}); - } - Extension.updateAutoState(); - Extension.runWakeDetector(); - Extension.onAppToggle(); - if (Extension.isFirstLoad) { - TabManager.updateContentScript({ - runOnProtectedPages: - UserStorage.settings.enableForProtectedPages - }); - } - UserStorage.settings.fetchNews && Newsmaker.subscribe(); - Extension.startBarrier.resolve(); - } - static getMessengerAdapter() { - return { - collect: async () => { - return await Extension.collectData(); - }, - collectDevToolsData: async () => { - return await Extension.collectDevToolsData(); - }, - changeSettings: Extension.changeSettings, - setTheme: Extension.setTheme, - toggleActiveTab: Extension.toggleActiveTab, - markNewsAsRead: Newsmaker.markAsRead, - markNewsAsDisplayed: Newsmaker.markAsDisplayed, - loadConfig: ConfigManager.load, - applyDevDynamicThemeFixes: DevTools.applyDynamicThemeFixes, - resetDevDynamicThemeFixes: DevTools.resetDynamicThemeFixes, - applyDevInversionFixes: DevTools.applyInversionFixes, - resetDevInversionFixes: DevTools.resetInversionFixes, - applyDevStaticThemes: DevTools.applyStaticThemes, - resetDevStaticThemes: DevTools.resetStaticThemes, - hideHighlights: UIHighlights.hideHighlights - }; - } - static onCommandInternal = async ( - command, - tabId, - frameId, - frameURL - ) => { - if (Extension.startBarrier.isPending()) { - await Extension.startBarrier.entry(); - } - Extension.stateManager.loadState(); - switch (command) { - case "toggle": - Extension.changeSettings({ - enabled: !Extension.isExtensionSwitchedOn(), - automation: { - ...UserStorage.settings.automation, - ...{enabled: false} - } - }); - break; - case "addSite": { - async function scriptPDF(tabId, frameId) { - if ( - !( - Number.isInteger(tabId) && - Number.isInteger(frameId) - ) - ) { - return false; - } - function detectPDF() { - if (document.body.childElementCount !== 1) { - return false; - } - const {nodeName, type} = - document.body.childNodes[0]; - return ( - nodeName === "EMBED" && - type === "application/pdf" - ); - } - { - return ( - ( - await chrome.scripting.executeScript({ - target: {tabId, frameIds: [frameId]}, - func: detectPDF - }) - )[0].result || false - ); - } - } - const pdf = async () => - isPDF(frameURL || (await TabManager.getActiveTabURL())); - if ((await scriptPDF(tabId, frameId)) || (await pdf())) { - Extension.changeSettings({ - enableForPDF: !UserStorage.settings.enableForPDF - }); - } else { - Extension.toggleActiveTab(); - } - break; - } - case "switchEngine": { - const engines = Object.values(ThemeEngine); - const index = engines.indexOf( - UserStorage.settings.theme.engine - ); - const next = engines[(index + 1) % engines.length]; - Extension.setTheme({engine: next}); - break; - } - } - }; - static onCommand = debounce(75, Extension.onCommandInternal); - static registerContextMenus() { - chrome.contextMenus.onClicked.addListener( - async ({menuItemId, frameId, frameUrl, pageUrl}, tab) => - Extension.onCommand( - menuItemId, - (tab && tab.id) || null, - frameId || null, - frameUrl || pageUrl - ) - ); - chrome.contextMenus.removeAll(() => { - Extension.registeredContextMenus = false; - chrome.contextMenus.create( - { - id: "DarkReader-top", - title: "Dark Reader" - }, - () => { - if (chrome.runtime.lastError) { - return; - } - const msgToggle = - chrome.i18n.getMessage("toggle_extension"); - const msgAddSite = chrome.i18n.getMessage( - "toggle_current_site" - ); - const msgSwitchEngine = chrome.i18n.getMessage( - "theme_generation_mode" - ); - chrome.contextMenus.create({ - id: "toggle", - parentId: "DarkReader-top", - title: msgToggle || "Toggle everywhere" - }); - chrome.contextMenus.create({ - id: "addSite", - parentId: "DarkReader-top", - title: msgAddSite || "Toggle for current site" - }); - chrome.contextMenus.create({ - id: "switchEngine", - parentId: "DarkReader-top", - title: msgSwitchEngine || "Switch engine" - }); - Extension.registeredContextMenus = true; - } - ); - }); - } - static async getShortcuts() { - const commands = await getCommands(); - return commands.reduce( - (map, cmd) => Object.assign(map, {[cmd.name]: cmd.shortcut}), - {} - ); - } - static async collectData() { - await Extension.loadData(); - const [ - news, - shortcuts, - activeTab, - isAllowedFileSchemeAccess, - uiHighlights - ] = await Promise.all([ - Newsmaker.getLatest(), - Extension.getShortcuts(), - Extension.getActiveTabInfo(), - new Promise((r) => - chrome.extension.isAllowedFileSchemeAccess(r) - ), - UIHighlights.getHighlightsToShow() - ]); - return { - isEnabled: Extension.isExtensionSwitchedOn(), - isReady: true, - isAllowedFileSchemeAccess, - settings: UserStorage.settings, - news, - shortcuts, - colorScheme: ConfigManager.COLOR_SCHEMES_RAW, - forcedScheme: - Extension.autoState === "scheme-dark" - ? "dark" - : Extension.autoState === "scheme-light" - ? "light" - : null, - activeTab, - uiHighlights - }; - } - static async collectDevToolsData() { - const [dynamicFixesText, filterFixesText, staticThemesText] = - await Promise.all([ - DevTools.getDynamicThemeFixesText(), - DevTools.getInversionFixesText(), - DevTools.getStaticThemesText() - ]); - return { - dynamicFixesText, - filterFixesText, - staticThemesText - }; - } - static async getActiveTabInfo() { - await Extension.loadData(); - const tab = await getActiveTab(); - const url = await TabManager.getTabURL(tab); - const {isInDarkList, isProtected} = Extension.getTabInfo(url); - const isInjected = TabManager.canAccessTab(tab); - const documentId = TabManager.getTabDocumentId(tab); - let isDarkThemeDetected = null; - if (UserStorage.settings.detectDarkTheme) { - isDarkThemeDetected = TabManager.isTabDarkThemeDetected(tab); - } - const id = (tab && tab.id) || null; - return { - id, - documentId, - url, - isInDarkList, - isProtected, - isInjected, - isDarkThemeDetected - }; - } - static async getConnectionMessage( - tabURL, - url, - isTopFrame, - topFrameHasDarkTheme - ) { - await Extension.loadData(); - return Extension.getTabMessage( - tabURL, - url, - isTopFrame, - topFrameHasDarkTheme - ); - } - static async loadData() { - Extension.init(); - await Promise.all([ - Extension.stateManager.loadState(), - UserStorage.loadSettings() - ]); - } - static onColorSchemeChange = async (isDark) => { - if (Extension.wasLastColorSchemeDark === isDark) { - return; - } - Extension.wasLastColorSchemeDark = isDark; - Extension.MV3syncSystemColorStateManager(isDark); - await Extension.loadData(); - if ( - UserStorage.settings.automation.mode !== AutomationMode.SYSTEM - ) { - return; - } - Extension.handleAutomationCheck(); - }; - static handleAutomationCheck = () => { - Extension.updateAutoState(); - const isSwitchedOn = Extension.isExtensionSwitchedOn(); - if ( - Extension.wasEnabledOnLastCheck === null || - Extension.wasEnabledOnLastCheck !== isSwitchedOn || - Extension.autoState === "scheme-dark" || - Extension.autoState === "scheme-light" - ) { - Extension.wasEnabledOnLastCheck = isSwitchedOn; - Extension.onAppToggle(); - TabManager.sendMessage(); - Extension.reportChanges(); - Extension.stateManager.saveState(); - } - }; - static async changeSettings($settings, onlyUpdateActiveTab = false) { - const promises = []; - const prev = {...UserStorage.settings}; - UserStorage.set($settings); - if ( - prev.enabled !== UserStorage.settings.enabled || - prev.automation.enabled !== - UserStorage.settings.automation.enabled || - prev.automation.mode !== UserStorage.settings.automation.mode || - prev.automation.behavior !== - UserStorage.settings.automation.behavior || - prev.time.activation !== UserStorage.settings.time.activation || - prev.time.deactivation !== - UserStorage.settings.time.deactivation || - prev.location.latitude !== - UserStorage.settings.location.latitude || - prev.location.longitude !== - UserStorage.settings.location.longitude - ) { - Extension.updateAutoState(); - Extension.onAppToggle(); - } - if (prev.syncSettings !== UserStorage.settings.syncSettings) { - const promise = UserStorage.saveSyncSetting( - UserStorage.settings.syncSettings - ); - promises.push(promise); - } - if ( - Extension.isExtensionSwitchedOn() && - $settings.changeBrowserTheme != null && - prev.changeBrowserTheme !== $settings.changeBrowserTheme - ) { - if ($settings.changeBrowserTheme) { - setWindowTheme(UserStorage.settings.theme); - } else { - resetWindowTheme(); - } - } - if (prev.fetchNews !== UserStorage.settings.fetchNews) { - UserStorage.settings.fetchNews - ? Newsmaker.subscribe() - : Newsmaker.unSubscribe(); - } - if ( - prev.enableContextMenus !== - UserStorage.settings.enableContextMenus - ) { - if (UserStorage.settings.enableContextMenus) { - Extension.registerContextMenus(); - } else { - chrome.contextMenus.removeAll(); - } - } - const promise = Extension.onSettingsChanged(onlyUpdateActiveTab); - promises.push(promise); - await Promise.all(promises); - } - static setTheme($theme) { - UserStorage.set({ - theme: {...UserStorage.settings.theme, ...$theme} - }); - if ( - Extension.isExtensionSwitchedOn() && - UserStorage.settings.changeBrowserTheme - ) { - setWindowTheme(UserStorage.settings.theme); - } - Extension.onSettingsChanged(); - } - static async reportChanges() { - const info = await Extension.collectData(); - Messenger.reportChanges(info); - } - static async toggleActiveTab() { - const settings = UserStorage.settings; - const tab = await Extension.getActiveTabInfo(); - if (!tab) { - return; - } - const {url} = tab; - const isInDarkList = ConfigManager.isURLInDarkList(url); - const host = getURLHostOrProtocol(url); - function getToggledList(sourceList) { - const list = sourceList.slice(); - let index = list.indexOf(host); - if (index < 0 && host.startsWith("www.")) { - const noWwwHost = host.substring(4); - index = list.indexOf(noWwwHost); - } - if (index < 0) { - list.push(host); - } else { - list.splice(index, 1); - } - return list; - } - const darkThemeDetected = - settings.enabledByDefault && - settings.detectDarkTheme && - tab.isDarkThemeDetected; - if ( - !settings.enabledByDefault || - isInDarkList || - darkThemeDetected - ) { - const toggledList = getToggledList(settings.enabledFor); - Extension.changeSettings({enabledFor: toggledList}, true); - return; - } - if ( - settings.enabledByDefault && - settings.enabledFor.includes(host) - ) { - const enabledFor = getToggledList(settings.enabledFor); - const disabledFor = getToggledList(settings.disabledFor); - Extension.changeSettings({enabledFor, disabledFor}, true); - return; - } - const toggledList = getToggledList(settings.disabledFor); - Extension.changeSettings({disabledFor: toggledList}, true); - } - static onAppToggle() { - if (Extension.isExtensionSwitchedOn()) { - IconManager.setActive(); - } else { - IconManager.setInactive(); - } - if (UserStorage.settings.changeBrowserTheme) { - if ( - Extension.isExtensionSwitchedOn() && - Extension.autoState !== "scheme-light" - ) { - setWindowTheme(UserStorage.settings.theme); - } else { - resetWindowTheme(); - } - } - } - static async onSettingsChanged(onlyUpdateActiveTab = false) { - await Extension.loadData(); - Extension.wasEnabledOnLastCheck = Extension.isExtensionSwitchedOn(); - TabManager.sendMessage(onlyUpdateActiveTab); - Extension.saveUserSettings(); - Extension.reportChanges(); - Extension.stateManager.saveState(); - } - static getTabInfo(tabURL) { - const isInDarkList = ConfigManager.isURLInDarkList(tabURL); - const isProtected = !canInjectScript(tabURL); - return { - isInDarkList, - isProtected - }; - } - static getTabMessage = ( - tabURL, - url, - isTopFrame, - topFrameHasDarkTheme - ) => { - const settings = UserStorage.settings; - const tabInfo = Extension.getTabInfo(tabURL); - if ( - Extension.isExtensionSwitchedOn() && - isURLEnabled(tabURL, settings, tabInfo) && - !topFrameHasDarkTheme - ) { - const custom = settings.customThemes.find(({url: urlList}) => - isURLInList(tabURL, urlList) - ); - const preset = custom - ? null - : settings.presets.find(({urls}) => - isURLInList(tabURL, urls) - ); - let theme = custom - ? custom.theme - : preset - ? preset.theme - : settings.theme; - if ( - Extension.autoState === "scheme-dark" || - Extension.autoState === "scheme-light" - ) { - const mode = Extension.autoState === "scheme-dark" ? 1 : 0; - theme = {...theme, mode}; - } - const detectDarkTheme = - isTopFrame && - settings.detectDarkTheme && - !isURLInList(tabURL, settings.enabledFor) && - !isPDF(tabURL); - const detectorHints = detectDarkTheme - ? getDetectorHintsFor( - url, - ConfigManager.DETECTOR_HINTS_RAW, - ConfigManager.DETECTOR_HINTS_INDEX - ) - : null; - logInfo(`Custom theme ${custom ? "was found" : "was not found"}, Preset theme ${preset ? "was found" : "was not found"} - The theme(${custom ? "custom" : preset ? "preset" : "global"} settings) used is: ${JSON.stringify(theme)}`); - switch (theme.engine) { - case ThemeEngine.cssFilter: { - return { - type: MessageTypeBGtoCS.ADD_CSS_FILTER, - data: { - css: createCSSFilterStyleSheet( - theme, - url, - isTopFrame, - ConfigManager.INVERSION_FIXES_RAW, - ConfigManager.INVERSION_FIXES_INDEX - ), - detectDarkTheme, - detectorHints - } - }; - } - case ThemeEngine.svgFilter: { - return { - type: MessageTypeBGtoCS.ADD_SVG_FILTER, - data: { - css: createSVGFilterStylesheet( - theme, - url, - isTopFrame, - ConfigManager.INVERSION_FIXES_RAW, - ConfigManager.INVERSION_FIXES_INDEX - ), - svgMatrix: getSVGFilterMatrixValue(theme), - svgReverseMatrix: - getSVGReverseFilterMatrixValue(), - detectDarkTheme, - detectorHints - } - }; - } - case ThemeEngine.staticTheme: { - return { - type: MessageTypeBGtoCS.ADD_STATIC_THEME, - data: { - css: - theme.stylesheet && theme.stylesheet.trim() - ? theme.stylesheet - : createStaticStylesheet( - theme, - url, - isTopFrame, - ConfigManager.STATIC_THEMES_RAW, - ConfigManager.STATIC_THEMES_INDEX - ), - detectDarkTheme: settings.detectDarkTheme, - detectorHints - } - }; - } - case ThemeEngine.dynamicTheme: { - const fixes = getDynamicThemeFixesFor( - url, - isTopFrame, - ConfigManager.DYNAMIC_THEME_FIXES_RAW, - ConfigManager.DYNAMIC_THEME_FIXES_INDEX, - UserStorage.settings.enableForPDF - ); - return { - type: MessageTypeBGtoCS.ADD_DYNAMIC_THEME, - data: { - theme, - fixes, - isIFrame: !isTopFrame, - detectDarkTheme, - detectorHints - } - }; - } - default: - throw new Error(`Unknown engine ${theme.engine}`); - } - } - return { - type: MessageTypeBGtoCS.CLEAN_UP - }; - }; - static async saveUserSettings() { - await UserStorage.saveSettings(); - } - } - - Extension.start(); - const welcome = ` /''''\\ - (0)==(0) -/__||||__\\ -Welcome to Dark Reader!`; - console.log(welcome); - { - chrome.runtime.onInstalled.addListener(async () => { - Extension.isFirstLoad = true; - }); - keepListeningToEvents(); - } - { - chrome.runtime.onInstalled.addListener(({reason}) => { - if (reason === "install") { - chrome.tabs.create({url: getHelpURL()}); - } - }); - chrome.runtime.setUninstallURL(UNINSTALL_URL); - } - function writeInstallationVersion(storage, details) { - storage.get({installation: {version: ""}}, (data) => { - if (data?.installation?.version) { - return; - } - storage.set({ - installation: { - date: Date.now(), - reason: details.reason, - version: - details.previousVersion ?? - chrome.runtime.getManifest().version - } - }); - }); - } - chrome.runtime.onInstalled.addListener((details) => { - writeInstallationVersion(chrome.storage.local, details); - writeInstallationVersion(chrome.storage.sync, details); - }); -})(); diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/config/color-schemes.drconf b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/config/color-schemes.drconf deleted file mode 100644 index 64944d2..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/config/color-schemes.drconf +++ /dev/null @@ -1,161 +0,0 @@ -Default - -DARK -background: #181a1b -text: #e8e6e3 - -LIGHT -background: #181a1b -text: #e8e6e3 - -================================ - -Catppuccin - -DARK -background: #1e1e2e -text: #cdd6f4 - -LIGHT -background: #eff1f5 -text: #4c4f69 - -================================ - -Deep Ocean - -DARK -background: #00222b -text: #a9b4b4 - -LIGHT -background: #cac5b6 -text: #cdd4d6 - -================================ - -Dracula - -DARK -background: #282b36 -text: #e8e6e3 - -================================ - -Everforest - -DARK -background: #2b3339 -text: #d1c4a9 - -LIGHT -background: #fdf9ed -text: #5b6971 - -================================ - -Gruvbox - -DARK -background: #282828 -text: #ebdbb2 - -LIGHT -background: #fbf1c7 -text: #3c3836 - -================================ - -Kanagawa - -DARK -background: #1f1f28 -text: #dcd7ba - -LIGHT -background: #f4ecca -text: #1e4887 - -================================ - -Nord - -DARK -background: #2e3440 -text: #eceff4 - -LIGHT -background: #eceff4 -text: #3b4252 - -================================ - -One Dark - -DARK -background: #282c34 -text: #abb2bf - -LIGHT -background: #fafafa -text: #383a42 - -================================ - -Oxocarbon - -DARK -background: #161616 -text: #f2f4f8 - -LIGHT -background: #f2f4f8 -text: #393939 - -================================ - -Rosé Pine - -DARK -background: #191724 -text: #e0def4 - -LIGHT -background: #faf4ed -text: #575279 - -================================ - -Selenized - -DARK -background: #103c48 -text: #adbcbc - -LIGHT -background: #fbf3db -text: #53676d - -================================ - -Solarized - -DARK -background: #002b36 -text: #93a1a1 - -LIGHT -background: #fdf6e3 -text: #586e75 - -================================ - -Tokyo Night - -DARK -background: #1a1b26 -text: #a9b1d6 - -LIGHT -background: #d5d6db -text: #343b58 diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/config/dark-sites.config b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/config/dark-sites.config deleted file mode 100644 index a9a3e9c..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/config/dark-sites.config +++ /dev/null @@ -1,1240 +0,0 @@ -*.cases.gg -*.clash.gg -*.comfig.app -*.furaffinity.net -*.iaas.store -*.iaasdev.ru -*.mastercomfig.com -*.newgrounds.com -*.rustclash.com -0bin.net -0x00sec.org -12bytes.org -1337x.*/$ -13willow.com -1lighty.github.io/BetterDiscordStuff -1maginary.online -1nf.me -2600.com -2bqueue.info -3072.vercel.app -314n.org -5stardata.info -9anime.gs -9anime.pl -9anime.to -aagaming.me -abletonbot.me -about.benjithatbluefox.eu -absolucy.moe -academy.hackthebox.com -account.bhvr.com -account.spoticord.com -aceship.github.io -acespace.love -addictinggames.com -adridoesthings.com -advanceds.me -adventofcode.com -agent-stats.com -ageofempires.com -agfy.co -ahwx.org -airconsole.com -ajay.app -akkoma.dev -albony.xyz -alecks.dev -alexkaehler.com -alfawal.dev -aliciasykes.com -ambr.top -ameliorated.info -amp-what.com -an3x.org -andrew-larson.dev -andrewleguay.com -andrewthedev.com -animepahe.com -animixplay.to -animk.info -anishde.dev -anitrack.co -annaaurora.eu -anon.sx -answeroverflow.com -antalbiztonsag.com -aonprd.com -app.destinyitemmanager.com -app.hackthebox.com -app.keeweb.info -app.mobalytics.gg -app.pianorhythm.io -app.plex.tv -app.pluralsight.com -app.revolt.chat -app.spacebar.chat -app.sqldbm.com -applesilicongames.com -application.security -aqtiongame.com -archive.ragtag.moe -archon.gg -arcturusmc.xyz -ardov.me -ari.lt -arialfx.com -arkenfox.github.io/TZP/ -armaforces.com -artixlinux.org -artlist.io -arweave.app -asciimation.co.nz -ashcam.xyz -ashishpanigrahi.com -asoftmurmur.com -assassins-creed.de -astronvim.github.io -atelier.net/virtual-economy -atelier801.com -atlasos.net -atresplayer.com -attackontitan.fandom.com -audiolove.club -audiomass.co -audioz.download -augmentedsteam.com -auth.tedomum.net -av9.dev -avengedsevenfold.com -axyl-os.github.io -azeria-labs.com -badboybill.com -baldursgate3.game -banfeed.com -based.cooking -battle.net -battlelog.battlefield.com/bf4 -bbc.co.uk/iplayer -bdeditor.dev -beastskills.com -beatleader.xyz -beatsaver.com -bedrocklinux.org -beepbox.co -benjidanecki.eu -bequiet.com -bestblackhatforum.com -beta.destinyitemmanager.com -betteranime.net -betterdiscord.app -betterttv.com -bg3.wiki -bherila.net -bidet.gg -bin.disroot.org -bin.veracry.pt -birdie0.github.io -bitcoinity.org/markets -bithatch.co.uk -bittube.video -blackarch.org -blackhat.com -blackhatsem.com -blackhatworld.com -blackhole.run -blackle.com -blackmod.net -blakthumb.com -blastpremier.com -blgn.dev -blink.sh -blizzard.com -blocks.pandadev.net -blog.aractus.com -blog.counter-strike.net -blog.ja-ke.tech -blog.pixelexperience.org -blox.link -blueagle.top -bocchilorenzo.github.io -bogleech.com -bondoer.fr -bonfirenetworks.org -bootstrap.academy -bot.noob.bio -botboy.snaz.in -bouncingdvdlogo.com -brawldb.com -brew.sh -bri.io -brianlovin.com -brianpmaher.com -briantakita.me -broadcasthe.net -brodierobertson.xyz -browserslist.vercel.app -brunotome.dev -bsodium.fr -bugmenot.com -buildbot.orphis.net -bultek.com.ua -bungie.net -bytebin.lucko.me -c-saccoccio.fr -caddy.community -cadence.moe -caesarshiba.com -canalplus.com -caniuse.com -caracal.club -carbon.now.sh -carl.gg -casaos.io -cascadr.co -catvibers.me -cc.com -cdkeys.com -cdn.minlor.net -cdnnow.pro -chat-gpt.org -chat.openai.com -chat.ryzom.com -chat.vote -cheat.sh -checkout.steampowered.com -checkra.in -chess.com -chesstempo.com -chitownhousemusic.com -chromatic-tuner.com -cider.sh -cinny.exozy.me -cjratliff.com -cl00e9ment.gitlab.io/kingdom-blazon-generator/ -clashofstats.com -clt.gg -cncnet.org -co.wukko.me -cobalt.tools -codeium.com -codelet.codes -codepen.io -coder.com -codesandbox.io -codestackr.com -codewars.com -colean.cc -colordesigner.io -comfig.app -comicextra.com -community.eveonline.com -connect-4.xyz -console.firebase.google.com -cookieplmonster.github.io -coolmathgames.com -coriolis.io -counter-strike.net -countermail.com -cp.minetro.com -cracked.to -craiyon.com -crazygames.com -create.roblox.com/docs -crontab.guru -cryptowat.ch -cs.rin.ru -csfail.link -cssbattle.dev -cswarzone.com -ctf.hackthebox.com -ctt.cx -cuibonobo.com -curiositystream.com -cxsecurity.com -cybercodeonline.com -cybercrime-tracker.net -cyberdrop.me -cyberpunk.net -cybersole.io -cyberspatial.com -cytu.be -daddyanity.com -daily-fire.com -daksh.eu.org -damnvulnerabledefi.xyz -danidev.net -darckrepacks.com -daringfireball.net -dark.diatr.us -darkmodelist.com -darkreader.org -dartpad.dev -dash.cavebot.xyz -dashy.to -datomatic.no-intro.org -davros.netlify.app -dbdicontoolbox.com/web -dblstatistics.com -dbzer0.com -dd-wrt.com -ddpe.androz2091.fr -deadbydaylight.com -deadbydaylight.fandom.com -deepswap.ai -deepweblinks.net -defcon.org -deidetected.com -deltarune.com -demo.photoprism.app -demonforums.net -denims.tv -denshi.org -desktop.github.com -desoroxxx.github.io/Portfolio/ -destiny.gg -destinytracker.com -devanbuggay.com -devart.withgoogle.com -developer.valvesoftware.com -developerinsider.co -developers.cloudflare.com -di.fm -diablogame.de -dicebear.com -diep.io -digi77.com -digikam.org -disasm.pro -disboard.org -discadia.com -discohook.org -discord-date.shyked.fr -discord.bots.gg -discord.com/app -discord.com/developers -discord.com/login -discord.com/register -discord.id -discordbotlist.com -discordpackage.com -discords.com -discordservers.com -discourse.automationgame.com -discourse.cataclysmdda.org -discourse.disneyheroesgame.com -discuss.logseq.com -discuss.noisebridge.info -disneyplus.com -distro.tube -djflame.tech -dlive.tv -docs.adonisjs.com -docs.gofiber.io -dodi-repacks.site -doesitarm.com -dominion.games -donk.link -doodstream.com -dota2.com -dota2.ru -dotabuff.com -dotapicker.com -draculatheme.com -dragonage-game.de -drakewars.com -droidify.eu.org -drunkenslug.com -drvortex.dev -dsa-drakensang.de -dsc.gg -dualshockers.com -duckychannel.com.tw -duelingnexus.com -dumpert.nl -dumpus.app -dungeon-lords.de -dustinbrett.com -dyinglight.fandom.com -dyno.gg -e-z.bio -e-z.host -easypastes.tk -ecosia.org -ecys.xyz -edit-csv.net -editor.method.ac -elderscrolls.fandom.com -eleaks.to -elitedangerous.com -ellie-app.com -elybeatmaker.com -emanuelemilella.com -emeraldchat.com/app -emkc.org -emoji.supply/kitchen/ -emuparadise.me -enig.ma.tum.de -enigame.de -enlightenment.org -enlisted.net -enterprise.hackthebox.com -entity.works -envs.net -epack.herokuapp.com -epack.js.org -epicgames.com/id -erai-raws.info -ericnl.com -escapefromtarkov.com -escapefromtarkov.fandom.com -esportal.com -etke.cc -etlegacy.com -eveonline.com -evewho.com -evokemusic.ai -evowars.io -excel-dna.net -exdigis.com -extrememusic.com -f.vision -f3bpodcast.com -faceit-enhancer.com -faceit.com -factorio.com -factoriobin.com -fakeupdate.net/apple -fakeupdate.net/steam -fakeupdate.net/vista -fakeupdate.net/win10 -fakeupdate.net/win10ue -fakeupdate.net/win7 -fakeupdate.net/win8 -fakeupdate.net/wnc -fakeupdate.net/xp -fallout-area.de -fanpage.fm -fastro.dev -fedidb.org -femto.dev -filegarden.com -filmmakermode.com -filterblade.xyz -filterlists.com -fireship.io -fishshell.com -flavibot.xyz -fleepy.tv -flipperhub.com -florr.io -fluxpoint.dev -fmovies.to -food-le.co -forgejo.org -forsen.horse -forum.atlasos.net -forum.cswarzone.com -forum.lastos.org -forum.tribler.org -forum.xda-developers.com -forumplayer.dev -forums.bhvr.com/dead-by-daylight/ -forums.eveonline.com -forums.launchbox-app.com -fox.com -fpn.firefox.com -fragment.com -framp.me -frankerfacez.com/$ -freecodecamp.org/$ -freecodecamp.org/learn/ -freeipa.org -freesearch.club -freespeechextremist.com -frozensand.com -funnyjunk.com -furt.app -fusengine.github.io/apaxy-v2 -gaijin.net -galacticabot.vercel.app -game.chronodivide.com -gamebanana.com -gamejolt.com -gamersnexus.net -gamescoper.com -gaming.amazon.com -garudalinux.org -geektyper.com -genshin-impact.fandom.com -genshin.gg -geocities.restorativland.org -gerrit.wikimedia.org -getaether.net -getdweb.net -gethalfmoon.com -getsharex.com -getwacup.com -gfl.matsuda.tips -gflcorner.com -ggapp.io -ghasemi.dev -ghidra-sre.org -gianmarco.gg -giantbomb.com -gibber.cc -gibbu.github.io/ThemePreview/ -gifrun.com -gifyourgame.com -giggl.app -gikken.co -giphy.com -git.gnous.eu -github1s.com -githubuniverse.com -gitkraken.com -gitmoji.kaki87.net -glow.phoesion.com -glowing-bear.org -glslsandbox.com -go4liftoff.com -gog.com/forum -gogalaxy.com -goodfirstissue.dev -goosegame.io -grapheneos.org -graydon2.dreamwidth.org -grayjay.app -grc.arikado.ru -greatview.video -greynoise.io -grim.ac -groovy.bot -gtaforums.com -guessr.tv -gunshipmusic.com -gusted.xyz -hachyderm.io -hack.chat -hackaday.com -hackaday.io -hackertyper.com -hackforums.net -hackthebox.com -hackthebox.eu -hackthissite.org -hacktoberfest-projects.vercel.app -halowaypoint.com -hardforum.com -hardstuck.gg -hardwaretimes.com -hbomax.com -hctiwt.tv -hdencode.com -heavybit.com -heckerbot.dev -hedgewars.org -heliotrope.dk -hellofromhe.re -help.steampowered.com -herodamage.com -hexiro.me -hidive.com -himovies.to -hiserod.github.io -hitnmix.com -hiveon.com -hiveon.net -hkamran.com -hostedtalk.net -hotstar.com -hpdevone.com -hqapps.org -hrmspms.sicorax.mu -hub.warframestat.us -humblebundle.com/$ -humblebundle.com/accessibility -humblebundle.com/charities -humblebundle.com/refer -humblegames.com -hyper.is -hyperbeam.dev -i3wm.org -iaas.store -iaasdev.ru -ieuan.xyz -ifkash.vercel.app -iipython.dev -imageglass.org -imgbox.com -imgur.com -impb.in -imperialb.in -imxnoobx.com -indiexpo.net -infinitezoom.net -infocon.org -inker.app -inker.co -intactphone.com -intothetrenches.1917.movie -iskdeusingqt6.org -isthereanydeal.com -isxander.dev -itsmeow.cat -jackdaniels.com -jakeroman.com -jakobneumann.com -jakopavouk.cz -jakubkaczor.com -jaxcore.app -jbzd.com.pl -jekyllrb.com -jellymar.io -jetify.com -jeusto.com -jhey.dev -jigsawpuzzles.io -jmoore.dev -joeydrewstudios.com -join-lemmy.org -jonahsnider.com -josephchataignon.github.io -jqbx.fm -jsben.ch -jsitor.com -json-diff.com -jsongoku.com -justfive.news -justwatch.com -kadantiscam.netlify.app -kaioken.dev -kalence2.github.io -kaoskrew.org -kazimagazine.com -kbh.games -kbhgames.com -keezersquest.nl -kernel.fish -kestra.io -kfocus.org -khor.store -khuwawa.com -kika.de/$ -kika.de/kika-live/* -kika.de/kummerkasten/* -kika.de/live/* -kika.de/selbermachen/* -kika.de/spiele/* -kika.de/suche/* -kika.de/ueber-kika/* -kika.de/videos/* -kilonova.ro -kimbatt.github.io/js-Z -kingdom-leaks.com -kittybot.de -kleckrelay.com -knockout.chat -kodenames.io -krisoneil.com/home -kristal.cc -krunker.io -ksenon.net -ksp.mff.cuni.cz -kuik.li -kulbachny.com -kwejk.pl -kyleggiero.me -kyun.host -labs.hackthebox.com -lagom.nl/lcd-test -lainchan.org -landchad.net -larbs.xyz -lazer.ppy.sh -lbrynomics.com -learn.microsoft.com -lecantiche.com -lemm.ee -lemmi.no -lemmy.world -lemmyverse.net -lichess.org -lightweightpdf.com -limeshark.dev/editor -linear.app -lingva.ml -linku.la -linux.org.ru -linuxgamingcentral.com -lipu-linku.github.io -liquidplus.com -lishogi.org -listen.moe -livesplit.org -liveweave.com -loadout.tf -login.eveonline.com -logseq.com -loldle.net -lolesports.com -lollilol.xyz -looskie.com -lospec.com -lucasmellof.com -luckyone-dev.com -luckyone.dev -lukesmith.xyz -lumina-desktop.org -lutris.net -m.daum.net -m2v.ru -macbb.org -madiator.com -mail.tutanota.com -mango.pdf.zone -marte.dev -marvil.co -maskbox.app -masseffect.fandom.com -mastercomfig.com -mastodon.online -mastodon.social -mastofeed.com -maximepinot.com -md.quad.codes -mechapower.eu -mednafen.github.io -megathread.pages.dev -melody.ml -melonds.kuribo64.net -memory-alpha.fandom.com -mempool.space -metronom.us -mewho.com/starfield47 -midnight.day -migueldemoura.com -mikemaximus.github.io/gbm-web -minehut.com -minetro.com/panel -minlor.net -misode.github.io -mit.gg -mixxx.org -mizik.eu -mmorpg.com -mnsr.win -monitoror.com -monkeytype.com -moonwiz.io -morethantech.it -motion-canvas.github.io -motioncanvas.io -motz.xyz -mouse-sensitivity.com -mrdemoapple.uk -mrms.cz -mrquantumoff.dev -mrtipson.github.io/otz-builds/ -ms-paint-i.de -mtv.com -mulv.tycrek.dev -musedash.moe -music.com -music.youtube.com -muttwizard.com -mwittrien.github.io -mwomercs.com -my00stv.com -my60stv.com -my70stv.com -my80stv.com -my90stv.com -mynoise.net -mypodficacademia.com -mystere.dev -n-o-d-e.net -n7hq.masseffect.com -nameslol.com -nanhu.ca -nanobun.tv -nationsglory.com -nationsglory.es -nationsglory.fr -neal.fun/size-of-space -nee.lv -nemanjadragun.com -nerimity.com -netflix.com -netzhack.de -neundex.com -neurocore.xyz -newgrounds.com -nextron.pandadev.net -nextts.org -nextui.org -nexusmods.com -nfs.fandom.com -nfspolska.pl -ngplus.net -nh-server.github.io/switch-guide/ -nheko-reborn.github.io -nicholasjohnson.ch -nicholemattera.com -nicholemattera.gay -nicholemattera.lgbt -niebezpiecznik.pl -nikse.dk -nitter.42l.fr -nitter.dark.fail -nitter.fdn.fr -nitter.kavin.rocks -nitter.nixnet.services -nitter.pussthecat.org -nitter.snopyta.org -nixos-and-flakes.thiscute.world -nohello.fr -nomanssky.com -noob.bio -northward.info -nostr.com -nostv.pt -notebooks.quantumstat.com -notiger.xyz -nowplayi.ng -nulledbb.com -nvstly.com -obsidian.md -oculus.com/experiences/quest/ -odysee.com -offshorecorptalk.com -okayeg.com -oldfag.org -omcar.pl -omgwtfnzbs.me -onionplay.co -onlyformats.netlify.app -onlyfors.com -open.spotify.com -opendota.com -openemu.org -openrazer.github.io -openrgb.org -orama-interactive.itch.io/pixelorama -orbstack.dev -orteil.dashnet.org/cookieclicker -osu.ppy.sh -osumatrix.me -otz-addon-tierlist.pages.dev -otz-opinions.pages.dev -otzdarva.com -ovagames.com -overcoder.dev -overdodactyl.github.io/ShadowFox -ovosimpatico.com -oxide.computer -pages.gay -pages.media -paimon.moe -pandadev.net -paniash.netlify.app -paper-io.com -parahumans.wordpress.com -paranoid.email -parrotbot.gg -parrotsec.org -passthepopcorn.me -pastes.dev -pathofexile.com -pathofexile.fandom.com -payday.fandom.com -pedrorok.com -perf.link -peterlindbergh.obys.agency -petersalomonsen.com/webassemblymusic/livecodev2 -phind.com -phineas.io -photomosh.com -photopea.com -pic.cleoold.com -pic8.co -ping.pe -pinia.vuejs.org -piped.kavin.rocks -piped.mha.fi -piped.mint.lgbt -piped.moomoo.me -piped.privacy.com.de -piped.tokhmi.xyz -piracybank.org -piskelapp.com -pitokmm.it -planetneverwinter.de -plasticuproject.com -platinumgod.co.uk -play.geforcenow.com -playclassic.games -pluto.tv -poal.co -poe-racing.com -poe.ninja -poeapp.com -poelab.com -poll.chat.vote -polsatboxgo.pl -polsatgo.pl -polychromatic.app -pony.tube -pool.pm -powercord.dev -ppluss.de -pr0gramm.com -pre.fyp.nl -premid.app -privacytools.io -progettosnaps.net -programsquared.com -projectdiscovery.io -projectevo.xyz -protondb.com -proxx.app -proxy.vulpes.one -psi.cynicaloptimist.me -psyoptions.io -ptdtw.fun -pvplegacy.net -pxseu.com -pylon.bot -qalculator.xyz -qvs.one -raidbots.com -raider.io -raidplan.io -rakowiecki.pl -rate.house -raunaksitoula.com -rawgiving.com -ray.so -razeenf.ca -razer.com -razorsecure.com -redacted.ch -redasm.io -redbox.com -redeclipse.net -reelgood.com -relay.firefox.com/faq -renderlab.net -reniguide.info -renkon.github.io/lolbacktracker-frontend -replit.com -replugged.dev -reposilite.com -restream4me.com -resurrectionremix.com -retromusic.app -returnyoutubedislike.com -revanced.app -reveddit.com -review.lineageos.org -rhwiki.net -richup.io -ripped.guide -ritsuka.moe -rl6mans.com -robinhood.com -roleypoly.com -roman.hn -roosterteeth.fandom.com -router.vuejs.org -rtbyte.xyz -rtech.support -ruben-p.com -runechanger.stirante.com -runicgames.com -rusherhack.org -rust.facepunch.com -rust.nolt.io -rythm.fm -sa-mp.com -sacred-legends.de -sadh.life -sadistic.pl -safereddit.com -saintsrow.com -saliven.com -sammcheese.net -sandervanderburg.blogspot.com -sauce420.github.io -sauce420.gitlab.io -save.tf -sb.ltn.fi -schildi.chat -science-news.co -scottgames.com -screfy.com -scriptkit.com -seaofthieves.fandom.com -search.biboumail.fr -search.brave.com -search.dr460nf1r3.org -search.nebulacentre.net -secrethitler.io -secure.eveonline.com -senkognito.com -senkuro.com -senpai.gg -septatrix.github.io/prefers-color-scheme-test/ -serebii.net -settings.gg -seximal.net -seyi.dev -sharkiller.ddns.net -shatteredpixel.com -sheet.host -shellshock.io -sherlock-project.github.io -shockbs.is-a.dev -showtimeanytime.com -shpposter.club -shrirambalaji.dev -shsh.host -shubhamprasad.vercel.app -siddharthray.com -siderite.dev -siliconlottery.com -simkl.com -sinister.ly -sites.google.com/site/igotdemthingsyoulike/ -sive.rs -skeld.net -skeptikon.fr -skidrowreloaded.com -skiftos.org -skinport.com -skinsmonkey.com -sky.lea.moe -skyblocknetwork.com -skylabmusic.com -skynetsimulator.com -slay.one -sleeplessbeastie.eu -slider.kz -slippi.gg -slither.io -smithed.dev -smithed.net -snazzah.com -snowsta.mp -somafm.com -spacestationgaming.com -spacex.com -spark.lucko.me -speedrun.com -speedtest.net -splatoon.nintendo.com -splatoon3.ink -sponsorshipshq.com -spotfy.one -spoticord.com -spyware.neocities.org -srrdb.com -star-made.org -starlink.com -starmadedock.net -statbot.net -stateofjs.com -status.codeberg.eu -status.kyun.host -status.pandadev.net -steamcharts.com -steamcommunity.com -steamdb.info -steamhunters.com -steamstat.us -steamtimeidler.com -stillu.cc -store.epicgames.com -store.gaijin.net -store.steampowered.com -storyfire.com -stray.game -studiomaertens.com -stylus-lang.com -suit.me -suitcheats.com -suitcheats.one -sunxdcc.com -supinic.com -supremacy1914.com -surrealdb.com -surviv.io -svtplay.se -sylvie.lgbt -sync-tube.de -szmarczak.com -tabby.sh -tabstats.com -tacoanon.github.io -talentbrick.com -tarkov-market.com -tautulli.com -teamfortress.com -techwithalext.com -teddit.zaggy.nl -telescope.org -teleseer.com -televizeseznam.cz -telex.hu -term.ooo -terminal.sexy -terminalroot.com -tetr.io -textfiles.com -tf2mart.net -tgw1916.net/bacteria_abis.html -thehomelab.wiki -thelastofus.fandom.com -thelinuxcast.org -theme-park.dev -themes.vscode.one -thespacedevs.com -thetatoken.org -thiscatdoesnotexist.com -thispersondoesnotexist.com -tilde.club -tilde.team -tilde.town -tildeverse.org -timharek.no -tinyzonetv.to -tio.run -title-case-converter.vercel.app -tmtheme-editor.herokuapp.com -tnixc.space -toito.in -tommytran.io -toneden.io -toolscord.com -top.gg -totems.me -tov.monster -tracker.gg -trblwlf.net -trigger.dev -trilon.io -tripleaughtdesign.com -trojansource.codes -trovo.live -truckersmp.com -tsssaver.1conan.com -tube.kdy.ch -tukui.org -tusharsadhwani.dev -tvnz.co.nz -tvplus.com.tr -twnft.vercel.app -tycrek.com -tygo-van-den-hurk.com -tylerpalko.github.io -tynker.com/ide -tyt.com -ufplanets.com -ukui.org -ultrajs.dev -undergroundcellar.com -underlords.com -undertale.com -universe.eveonline.com -unlimiter.github.io/pika -urbanlinker.com -userdiag.com -ussr.obys.agency -v3.wttr.in -v3rmillion.net -valvestore.forfansbyfans.com -vanillatweaks.net -vcjhwebdev.github.io/useless-translator/ -victordarras.fr/cssgame -vid.puffyan.us -viddit.red -villains.fandom.com -vimm.net -vinesauce.com -visualboxsite.com -visuallysynced.xyz -vivek9patel.github.io -vixeny.dev -vleer.app -vogons.org -volta.net -vrv.co -vscode.dev -vuecinemas.nl -w0rp.com -w41k3r.com -wago.io -wallhaven.cc -wannabuy.biz -waradu.dev -warcraftdaily.com -warcraftlogs.com -warezforums.com -warsow.net -warthunder.com -wasm.continuation-labs.com/d3demo/ -weavesilk.com -web-check.xyz -weichong.dev -whipcode.app -whirlxd.xyz -wickeditor.com/editor/ -widgetbot.io -wiki.eveuniversity.org -wiki.pixelexperience.org -wiktrek.xyz -windowsterminalthemes.dev -winget.run -wiocha.pl -wisehosting.com -worldofcyberpunk.de -worldofgothic.de -worldofplayers.de -worldofrisen.de -worldoftanks.asia -worldoftanks.eu -wormate.io -wormhole.app -wowaudit.com -wowhead.com -wowinterface.com -wtfast.com -wttr.in -wuemeli.com -x1337x.*/$ -x64dbg.com -xbins.org -xdaforums.com -xdox.me -xela.dev -xerolinux.xyz -xmission.com -xn--rpa.cc -xonotic.org -yande.re -yarmo.eu -yashsingh.us -you.dj -your.gg -yts.* -yuzu-emu.org -zaufanatrzeciastrona.pl -zee5.com -zerodayinitiative.com -zkillboard.com -zolika1351.pages.dev -zombsroyale.io -zt64.github.io -ztdp.ca -zunivers.zerator.com -zyrenth.dev diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/config/detector-hints.config b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/config/detector-hints.config deleted file mode 100644 index 00a37d3..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/config/detector-hints.config +++ /dev/null @@ -1,651 +0,0 @@ -*.autotask.net - -TARGET -html - -MATCH -link[href*="/Mvc/FrameworkContent/Styles/LandingMidnight.min.css?"] - -================================ - -*.gamer.com.tw - -TARGET -html - -MATCH -[data-theme="dark"] - -================================ - -activestate.com - -TARGET -body - -MATCH -.dark_bg - -================================ - -alarabiya.net - -TARGET -body - -MATCH -.night-theme - -================================ - -android-x86.org - -NO DARK THEME - -================================ - -anonymfile.com - -TARGET -html - -MATCH -.dark - -================================ - -app.pachca.com - -TARGET -html - -MATCH -.dark - -================================ - -app.raindrop.io - -TARGET -html - -MATCH -[data-theme="night"] - -================================ - -app.thestorygraph.com - -TARGET -html - -MATCH -.dark - -================================ - -app.todoist.com - -TARGET -html - -MATCH -.theme_dark - -================================ - -arstechnica.com - -NO DARK THEME - -================================ - -bard.google.com - -TARGET -body - -MATCH -.dark-theme - -================================ - -calendar.cron.com - -TARGET -html - -MATCH -.dark - -================================ - -cezarywalenciuk.pl - -NO DARK THEME - -================================ - -cia.gov - -NO DARK THEME - -================================ - -console.aws.amazon.com -*.console.aws.amazon.com - -TARGET -body - -MATCH -.awsui-polaris-dark-mode - -================================ - -cybenetics.com - -TARGET -body - -MATCH -.dark - -================================ - -dcard.tw - -NO DARK THEME - -================================ - -developer.chrome.com - -NO DARK THEME - -================================ - -dictionary.com - -NO DARK THEME - -================================ - -discord.com - -TARGET -html - -MATCH -.theme-dark - -================================ - -docs.piral.io -docs.piral.cloud - -TARGET -body - -MATCH -.dark - -================================ - -facebook.com - -TARGET -html - -MATCH -.__fb-dark-mode - -================================ - -fitgirl-repacks.site - -NO DARK THEME - -================================ - -flashscore.com - -TARGET -body - -MATCH -.theme--dark - -================================ - -flathub.org - -TARGET -html - -MATCH -.dark - -================================ - -gamedev.net - -NO DARK THEME - -================================ - -gimp.org - -NO DARK THEME - -================================ - -github.com - -TARGET -html - -MATCH -[data-color-mode="dark"] -[data-color-mode="auto"] - -================================ - -gotquestions.org - -NO DARK THEME - -================================ - -hdblog.it - -NO DARK THEME - -================================ - -inkscape.org - -NO DARK THEME - -================================ - -knightedgemedia.com - -NO DARK THEME - -================================ - -learn.standardresume.co - -TARGET -html - -MATCH -.dark - -================================ - -lingoblocks.com - -TARGET -html - -MATCH -.dark-mode - -================================ - -linkedin.com - -TARGET -html - -MATCH -.theme--dark -.theme--mercado-dark - -================================ - -majorgeeks.com - -NO DARK THEME - -================================ - -messages.google.com - -TARGET -body - -MATCH -.dark-theme - -================================ - -msn.com - -NO DARK THEME - -================================ - -next-episode.net - -NO DARK THEME - -================================ - -nomoremister.blogspot.com - -NO DARK THEME - -================================ - -notion.so - -TARGET -body - -MATCH -.dark - -================================ - -omnivore.app - -TARGET -html - -MATCH -.Dark - -================================ - -outlook.live.com -outlook.office.com - -TARGET -html - -MATCH -[style*="--black: #FFFFFF"] - -================================ - -philosophicaldisquisitions.blogspot.com - -NO DARK THEME - -================================ - -photopea.com - -TARGET -html - -MATCH -[style*="--base: #474747"] -[style*="--base: #404550"] -[style*="--base: #222531"] -[style*="--base: #4b3e51"] -[style*="--base: #353535"] - -================================ - -php.net - -NO DARK THEME - -================================ - -pkmer.cn - -TARGET -html - -MATCH -.theme-dark - -================================ - -psnprofiles.com - -NO DARK THEME - -================================ - -radboudumc.nl - -NO DARK THEME - -================================ - -reddit.com - -TARGET -html - -MATCH -.theme-dark - -================================ - -reduced.to - -TARGET -html - -MATCH -[data-theme="dracula"] - -================================ - -regex101.com - -TARGET -html - -MATCH -[data-theme="dark"] - -================================ - -regexr.com - -TARGET -link[href*="dark.css"] - -MATCH -* - -================================ - -scrumguides.org - -NO DARK THEME - -================================ - -search.brave.com - -TARGET -html - -MATCH -.dark - -================================ - -sevendistrictscoffee.com - -NO DARK THEME - -================================ - -si.edu - -NO DARK THEME - -================================ - -slack.com -*.slack.com - -TARGET -body - -MATCH -.sk-client-theme--dark - -================================ - -slightknack.github.io - -TARGET -html - -MATCH -.coal -.navy -.ayu - -================================ - -soccer24.com - -TARGET -body - -MATCH -.theme--dark - -================================ - -sojo.net - -NO DARK THEME - -================================ - -steamgifts.com - -NO DARK THEME - -================================ - -switchbacktravel.com - -NO DARK THEME - -================================ - -thefederalist.com - -NO DARK THEME - -================================ - -themoviedb.org - -NO DARK THEME - -================================ - -thetrevorproject.org - -NO DARK THEME - -================================ - -theverge.com - -TARGET -main - -MATCH -.dark - -================================ - -twitch.tv - -TARGET -body - -MATCH -.dark-theme - -================================ - -twitter.com - -TARGET -body - -MATCH -[style*="background-color: rgb(0, 0, 0)"] - -================================ - -vecernji.hr - -TARGET -html - -MATCH -[data-theme="dark"] - -================================ - -web.telegram.org/a - -TARGET -html - -MATCH -.theme-dark - -================================ - -web.telegram.org/k - -TARGET -html - -MATCH -.night - -================================ - -wiki.greasespot.net - -NO DARK THEME - -================================ - -x.com - -TARGET -body - -MATCH -[style*="background-color: rgb(0, 0, 0)"] - -================================ - -yandex.*/maps - -TARGET -body - -MATCH -._theme_dark - -================================ - -youtube.com - -TARGET -html - -MATCH -[dark] diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/config/dynamic-theme-fixes.config b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/config/dynamic-theme-fixes.config deleted file mode 100644 index c2effc2..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/config/dynamic-theme-fixes.config +++ /dev/null @@ -1,32078 +0,0 @@ -* - -INVERT -.jfk-bubble.gtx-bubble -.captcheck_answer_label > input + img -span#closed_text > img[src^="https://www.gstatic.com/images/branding/googlelogo"] -span[data-href^="https://www.hcaptcha.com/"] > #icon -img.Wirisformula - -CSS -.vimvixen-hint { - background-color: ${#ffd76e} !important; - border-color: ${#c59d00} !important; - color: ${#302505} !important; -} -#vimvixen-console-frame { - color-scheme: light !important; -} -::placeholder { - opacity: 0.5 !important; -} -#edge-translate-panel-body, -.MuiTypography-body1, -.nfe-quote-text { - color: var(--darkreader-neutral-text) !important; -} -gr-main-header { - background-color: ${lightblue} !important; -} -.tou-z65h9k, -.tou-mignzq, -.tou-1b6i2ox, -.tou-lnqlqk { - background-color: var(--darkreader-neutral-background) !important; -} -.tou-75mvi { - background-color: ${rgb(207, 236, 245)} !important; -} -.tou-ta9e87, -.tou-1w3fhi0, -.tou-1b8t2us, -.tou-py7lfi, -.tou-1lpmd9d, -.tou-1frrtv8, -.tou-17ezmgn { - background-color: ${rgb(245, 245, 245)} !important; -} -.tou-uknfeu { - background-color: ${rgb(250, 237, 218)} !important; -} -.tou-6i3zyv { - background-color: ${rgb(133, 195, 216)} !important; -} -div.mermaid-viewer-control-panel .btn { - background-color: var(--darkreader-neutral-background); - fill: var(--darkreader-neutral-text); -} -svg g rect.er { - fill: var(--darkreader-neutral-background) !important; -} -svg g rect.er.entityBox { - fill: var(--darkreader-neutral-background) !important; -} -svg g rect.er.attributeBoxOdd { - fill: var(--darkreader-neutral-background) !important; -} -svg g rect.er.attributeBoxEven { - fill: var(--darkreader-selection-background); - fill-opacity: 0.8 !important; -} -svg rect.er.relationshipLabelBox { - fill: var(--darkreader-neutral-background) !important; -} -svg g g.nodes rect, -svg g g.nodes polygon { - fill: var(--darkreader-neutral-background) !important; -} -svg g rect.task { - fill: var(--darkreader-selection-background) !important; -} -svg line.messageLine0, -svg line.messageLine1 { - stroke: var(--darkreader-neutral-text) !important; -} -div.mermaid .actor { - fill: var(--darkreader-neutral-background) !important; -} -mitid-authenticators-code-app > .code-app-container { - background-color: white !important; - padding-top: 1rem; -} -iframe#unpaywall[src$="unpaywall.html"] { - color-scheme: light !important; -} - -IGNORE INLINE STYLE -.sr-wrapper * -.sr-reader * -.diigoHighlight - -================================ - -*.abc.net.au - -INVERT -[data-component="ABCNewsLogo"] * - -IGNORE INLINE STYLE -[data-component="ABCLogo"] * - -================================ - -*.americanexpress.com - -CSS -select[aria-labelledby="bankAccount-label"] > option { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -*.archlinux.org - -INVERT -img[src*="icons/"] -img[src="/svg/calendar.svg"] - -CSS -.vector-sticky-pinned-container::after { - background: inherit; -} - -================================ - -*.bambulab.com - -CSS -.bannerTextWrap .title, -.bannerTextWrap .subtitle { - text-shadow: ${rgb(225, 212, 201)} 1px 1px 0px !important; -} - -================================ - -*.bitrix24.ru - -INVERT -#ws-canvas - -================================ - -*.cnrtl.fr - -CSS -.tlf_cdefinition { - background-color: ${rgb(255, 255, 0)} !important; -} -.tlf_cdomaine { - background-color: ${rgb(255, 176, 96)} !important; -} -.tlf_csyntagme { - background-color: ${rgb(192, 255, 192)} !important; -} - -================================ - -*.crm*.dynamics.com - -CSS -.ms-Label { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -*.discogs.com - -CSS -[class*="logo"] { - filter: invert(100%) hue-rotate(180deg) !important; -} -.swiper-pagination-bullet { - background: var(--swiper-pagination-bullet-inactive-color, #FFFFFF) !important; -} - -================================ - -*.galaxus.de - -INVERT -#logo - -CSS -#sidebarMenu div { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -*.gamer.com.tw - -CSS -body { - background-image: none !important; -} - -================================ - -*.globo.com - -CSS -.bar-scrubber .bar-scrubber-icon, -.bar-background .bar-fill-2 { - background-color: var(--darkreader-neutral-text) !important; -} -.bar-background .bar-fill-1 { - background-color: rgba(255, 255, 255, .3) !important; -} -.multicontent { - background-color: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} -span.bstn-hl-summary { - color: var(--darkreader-neutral-text) !important; -} -.glb-grid .tabela-body { - background-color: var(--darkreader-neutral-background) !important; -} -.bstn-hl.with-photo::before { - background-image: var(--bstn-hl-cover) !important; -} - -IGNORE INLINE STYLE -.poster__play-wrapper * - -================================ - -*.instructure.com - -INVERT -.tox-edit-area - -CSS -.css-vrgbjj-textArea { - background: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} - -================================ - -*.maricopa.edu - -CSS -#background-content { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -*.myworkday.com - -INVERT -.WIF3 -.WIF3:hover -.WIG3 -.WIG3:hover -.WFD3 .WGL3 -.WAJS -.WAJS:hover -.WJG3 -.WHL3 -.WKFP - -================================ - -*.service-now.com - -INVERT -.highcharts-legend-item text -.palette-content.trees .tree_spacer -.palette-content.trees img.tree -.palette-content.trees img.wf-list-icon - -CSS -.cm-s-snc span.cm-string { - color: #cf947b !important; -} -.cm-s-snc span.cm-def { - color: #60a4d8 !important; -} -.cm-s-snc span.cm-property { - color: white !important; -} -.cm-s-snc_readonly span.cm-string { - color: #cf947b !important; -} -#hierarchy-menu { - background-color: #797774 !important; -} -.sn-ng-bsm svg { - fill: #FFF !important; -} -.ui-refresh .btn-inline-form, -.ui-refresh .btn-inline-form-attached { - background-color: #797774; -} -.node-outline { - fill: #797774 !important; -} -.sn-polaris-nav { - background-color: #000 !important; - color: #FFF !important; -} -.snf-collapsible-list-header { - background-color: #000 !important; - color: #FFF !important; -} -.sn-polaris-nav-list-items a.item-label .item-icon { - background-color: #000 !important; - color: #FFF !important; -} -.snf-collapsible-list-items, -.snf-collapsible-list-items a { - background-color: #000 !important; - color: #FFF !important; -} -.sn-history-menu .menu-item > .menu-item-label > span.label { - background-color: #000 !important; - color: #FFF !important; -} -.sn-history-menu .menu-item > .menu-item-label > span.menu-item-description { - background-color: #000 !important; - color: #FFF !important; -} -div > .sn-history-menu mark.filter-match, -.sn-history-menu mark.filter-match-fuzzy { - color: #FFF !important; -} -div > .sn-history-menu .is-filtered .label { - color: #FFF !important; -} -span.is-filtered .label { - color: #FFF !important; -} -.is-filtered .item-icon .label { - color: #FFF !important; -} -span > mark.filter-match, -mark.filter-match-fuzzy { - color: #FFF !important; -} -.tox .tox-tbtn svg { - fill: #FFF !important; -} -.user-menu-label { - color: #FFF !important; -} - -================================ - -*.speedtestcustom.com - -CSS -.stroke-primary { - stroke: #003b5c !important; -} -.result-graph-svg { - fill: #003b5c !important; -} - -================================ - -*.webex.com - -CSS -body { - background: var(--darkreader-neutral-background) !important; -} -.wxp-chapter-bar-item-progress { - background: var(--mds-color-decorative-violet-50) !important; -} - -================================ - -*.wvu.edu - -CSS -.bg-dark { - background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important; -} -.bg-wvu-accent--blue { - background-color: rgba(var(--bs-wvu-accent--blue-rgb), var(--bs-bg-opacity)) !important; -} -.bg-wvu-accent--blue-dark { - background-color: rgba(var(--bs-wvu-accent--blue-dark-rgb), var(--bs-bg-opacity)) !important; -} -.bg-wvu-accent--blue-light { - background-color: rgba(var(--bs-wvu-accent--blue-light-rgb), var(--bs-bg-opacity)) !important; -} -.bg-wvu-accent--old-gold { - background-color: rgba(var(--bs-wvu-accent--old-gold-rgb), var(--bs-bg-opacity)) !important; -} -.bg-wvu-accent--sunset { - background-color: rgba(var(--bs-wvu-accent--sunset-rgb), var(--bs-bg-opacity)) !important; -} -.bg-wvu-accent--yellow { - background-color: rgba(var(--bs-wvu-accent--yellow-rgb), var(--bs-bg-opacity)) !important; -} -.bg-wvu-blue { - background-color: rgba(var(--bs-wvu-blue-rgb), var(--bs-bg-opacity)) !important; -} -.bg-wvu-gold { - background-color: rgba(var(--bs-wvu-gold-rgb), var(--bs-bg-opacity)) !important; -} -.bg-wvu-neutral--cream { - background-color: rgba(var(--bs-wvu-neutral--cream-rgb), var(--bs-bg-opacity)) !important; -} -.bg-wvu-neutral--off-white { - background-color: rgba(var(--bs-wvu-neutral--off-white-rgb), var(--bs-bg-opacity)) !important; -} -.bg-wvu-neutral--warm-gray-dark { - background-color: rgba(var(--bs-wvu-neutral--warm-gray-dark-rgb), var(--bs-bg-opacity)) !important; -} -.bg-wvu-neutral--warm-gray-light { - background-color: rgba(var(--bs-wvu-neutral--warm-gray-light-rgb), var(--bs-bg-opacity)) !important; -} -.bg-wvu-neutral--warm-gray-medium { - background-color: rgba(var(--bs-wvu-neutral--warm-gray-medium-rgb), var(--bs-bg-opacity)) !important; -} -.bg-wvu-neutral--tan { - background-color: rgba(var(--bs-wvu-neutral--tan-rgb), var(--bs-bg-opacity)) !important; -} -.btn-outline-wvu-blue, -.text-wvu-accent--blue, -.text-wvu-accent--blue-dark, -.text-wvu-accent--old-gold, -.text-wvu-blue, -.text-wvu-neutral--warm-gray-dark { - background-color: var(--bs-body-bg); -} -.text-wvu-accent--blue { - color: rgba(var(--bs-wvu-accent--blue-rgb), var(--bs-text-opacity)) !important; -} -.text-wvu-accent--blue-dark { - color: rgba(var(--bs-wvu-accent--blue-dark-rgb), var(--bs-text-opacity)) !important; -} -.text-wvu-accent--blue-light { - color: rgba(var(--bs-wvu-accent--blue-light-rgb), var(--bs-text-opacity)) !important; -} -.text-wvu-accent--old-gold { - color: rgba(var(--bs-wvu-accent--old-gold-rgb), var(--bs-text-opacity)) !important; -} -.text-wvu-accent--sunset { - color: rgba(var(--bs-wvu-accent--sunset-rgb), var(--bs-text-opacity)) !important; -} -.text-wvu-accent--yellow { - color: rgba(var(--bs-wvu-accent--yellow-rgb), var(--bs-text-opacity)) !important; -} -.text-wvu-blue { - color: rgba(var(--bs-wvu-blue-rgb), var(--bs-text-opacity)) !important; -} -.text-wvu-gold { - color: rgba(var(--bs-wvu-gold-rgb), var(--bs-text-opacity)) !important; -} -.text-wvu-neutral--cream { - color: rgba(var(--bs-wvu-neutral--cream-rgb), var(--bs-text-opacity)) !important; -} -.text-wvu-neutral--off-white { - color: rgba(var(--bs-wvu-neutral--off-white-rgb), var(--bs-text-opacity)) !important; -} -.text-wvu-neutral--warm-gray-dark { - color: rgba(var(--bs-wvu-neutral--warm-gray-dark-rgb), var(--bs-text-opacity)) !important; -} -.text-wvu-neutral--warm-gray-light { - color: rgba(var(--bs-wvu-neutral--warm-gray-light-rgb), var(--bs-text-opacity)) !important; -} -.text-wvu-neutral--warm-gray-medium { - color: rgba(var(--bs-wvu-neutral--warm-gray-medium-rgb), var(--bs-text-opacity)) !important; -} -.text-wvu-neutral--tan { - color: rgba(var(--bs-wvu-neutral--tan-rgb), var(--bs-text-opacity)) !important; -} -.wvu-overflow-hidden { - color: var(--bs-body-color); -} - -================================ - -01net.com - -CSS -html, -body { - color: ${#090702} !important; -} - -================================ - -10fastfingers.com - -CSS -#speedtest-main .hide-time { - color: transparent !important; -} -#inputfield { - background: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} -body, -.container-modified > .row, -#practice-main, -#top1000-index-container, -#text-practice, -#content-bg { - background: var(--darkreader-neutral-background) !important; -} -#main-content-trenner { - background: var(--darkreader-neutral-background) !important; - border-bottom: 1px solid rgb(151, 141, 127) !important; -} - -================================ - -10minutemail.com - -CSS -#main_content { - background-image: none !important; -} - -================================ - -123-3d.nl -123accu.nl -123inkt.nl -123led.nl -123schoon.nl - -CSS -.main-panel-left, -.main-panel-right { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -123mathe.de - -INVERT -.entry-content img - -CSS -body, -.post-inner, -ul.sub-menu { - background-color: var(--darkreader-neutral-background) !important; -} -ul.sub-menu::after { - border-bottom-color: var(--darkreader-neutral-background) !important; -} -.progress-wrap { - box-shadow: var(--darkreader-neutral-background) 0px 0px 0px 3px inset !important; -} - -================================ - -1337x.st -1337x.to -x1337x.eu -x1337x.se -x1337x.ws - -CSS -.torrent-tabs .tab-nav { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; - border-bottom-color: var(--darkreader-neutral-background) !important; -} - -================================ - -1917.com - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -1fichier.com - -CSS -body { - background-image: none !important; -} - -================================ - -2700chess.com - -INVERT -.cg-wrap piece.queen.black -.cg-wrap piece.bishop.black -.cg-wrap piece.rook.black -.cg-wrap piece.knight.black -.cg-wrap piece.pawn.black - -================================ - -2gis.* - -INVERT -#map -path[d^="M34.8"] -._oow7vi -path[d^="M15.759"] - -CSS -a, -abbr, -acronym, -address, -applet, -article, -aside, -audio, -b, -big, -blockquote, -body, -canvas, -caption, -center, -cite, -code, -dd, -del, -details, -dfn, -div, -dl, -dt, -em, -embed, -fieldset, -figcaption, -figure, -footer, -form, -h1, -h2, -h3, -h4, -h5, -h6, -header, -hgroup, -html, -i, -iframe, -img, -ins, -kbd, -label, -legend, -li, -main, -mark, -menu, -nav, -object, -ol, -output, -p, -pre, -q, -ruby, -s, -samp, -section, -small, -span, -strike, -strong, -sub, -summary, -sup, -table, -tbody, -td, -tfoot, -th, -thead, -time, -tr, -tt, -u, -ul, -var, -video { - color: var(--darkreader-neutral-text) !important; -} -div[style^="--bg-color"] { - --bg-color: var(--darkreader-neutral-background) !important; -} -div[style="transform:rotateX(0deg)"] > svg[width="38"] path { - fill: ${black} !important; -} -button[data-hamburger] span { - background-color: ${black} !important; -} - -IGNORE INLINE STYLE -a[href="/"] > svg * - -================================ - -3.basecamp.com - -CSS -body, -.nav__main { - background-color: ${white}; -} -@media screen and (min-width: 768px) { - .panel--perma, - .panel--project { - box-shadow: rgba(0, 0, 0, 0.05) 0px -1px 10px, rgba(0, 0, 0, 0.1) 0px 1px 4px, rgb(24, 26, 27) 0px 10px 30px; - } -} - -================================ - -300gospodarka.pl -300polityka.pl - -INVERT -#logo -img[alt="300Gospodarka"] -img[alt="Zespół 300Gospodarki"] - -================================ - -350.org -map.350.org - -INVERT -.dark\:bg-gray-700 -.dark\:bg-gray-700::after -.dark\:text-gray-300 -.mapboxgl-canvas -.mapboxgl-ctrl-compass > .mapboxgl-ctrl-icon -.mapboxgl-ctrl-logo -.mapboxgl-marker - -CSS -mapbox-search-box > input { - --darkreader-bg--boxShadow: 0 0 10px 2px ${rgba(0, 0, 0, 0.05)}, 0 0 6px 1px ${rgba(0, 0, 0, 0.1)}, 0 0 0 1px ${rgba(0, 0, 0, 0.1)} !important; -} - -================================ - -37.com - -INVERT -.logo37 - -================================ - -3dmark.com - -INVERT -.logo - -================================ - -40ton.net - -INVERT -.td-main-logo - -================================ - -4t-niagara.com - -CSS -.download_link > h3, -.buy_link > h3 { - color: ${#88c1ff} !important; -} -.download_link li, -.buy_link li { - color: ${white} !important; -} - -================================ - -9game.cn - -INVERT -.logo9game - -================================ - -a11ywithlindsey.com - -INVERT -.logo - -CSS -:root { - --off-white: var(--darkreader-neutral-background) !important; -} - -================================ - -aad.org - -INVERT -.header-AAD-logo - -================================ - -abandonia.com - -CSS -.alt1G2 { - background-image: none !important; -} -.alt2G2 { - background-image: none !important; -} - -================================ - -abcnews.go.com - -INVERT -.navLogo -#sections -#search -#notifications - -================================ - -abiturma.de - -INVERT -div.formula -amp-img.latex-inline -img[src^="/assets/compiled-latex/"] - -================================ - -ableton.com - -INVERT -.main-nav__logo -.main-footer__basics__logo -.main-footer__secondary__signature__logo - -CSS -.body-text--manual figure img { - background-color: #DCDAD8 !important; -} - -================================ - -about.gitlab.com - -INVERT -div.customer-logos__companies a - -CSS -.progressbar { - background: black; -} - -================================ - -academy.abeka.com - -INVERT -.logo img -.center-align img - -================================ - -academy.dqlab.id - -INVERT -.menu img - -================================ - -access.ing.de - -CSS -.tile__info { - background-color: #fff !important; -} - -================================ - -access.wgu.edu -my.wgu.edu - -INVERT -img[alt="WGU Logo"] -.nav-hamburger - -================================ - -accessiblepalette.com - -INVERT -.swatch .hex - -IGNORE INLINE STYLE -.swatch - -================================ - -accesswire.com - -INVERT -.v2-nav-logo - -================================ - -account.live.com - -INVERT -.ms-Grid-col.ms-sm8.ms-lg4 -.ms-Grid-col.ms-sm4.ms-hiddenMdDown.pullout-textwrap -.ms-Grid-col.ms-sm2 img -.pullout-link-text -.pullout-icon:not(.ms-Icon--SkypeCircleCheck) -.pullout-textwrap span - -CSS -img[class="ShowMoreLoading"] { - filter: invert(93.7%) hue-rotate(180deg) contrast(90.6%) !important; -} - -================================ - -account.microsoft.com/profile - -INVERT -.ms-StackItem div div img[src*="svg?n"] - -================================ - -account.orchid.com - -INVERT -.walletconnect-qrcode__image - -================================ - -account.proton.me -account.protonvpn.com - -CSS -.qr-code { - border: 5px solid white !important; -} - -IGNORE INLINE STYLE -.logo * -.qr-code * - -================================ - -account.ui.com - -CSS -div[class^="Toggle-module_switcher"] { - background-color: var(--darkreader-neutral-text) !important; -} -input[class^="Toggle-module_input"] { - background-color: initial; -} -div[class^="Modal-module_content"] form > div > canvas { - border: 5px solid white !important; -} - -================================ - -account.xiaomi.com - -CSS -.mi-profile-layout__profile { - background-image: none !important; -} - -================================ - -accounts.fedoraproject.org - -INVERT -.navbar-brand - -================================ - -accounts.google.com - -INVERT -img[src$="signin_tapyes.gif"] - -CSS -#countryList div[role="option"][data-value] > div > div > div[style] { - background-image: url('//ssl.gstatic.com/i18n/flags/48x32/nobevel/66bdb7a1bbbdbf86a67de382fac49ecc/flags.png') !important; -} - -================================ - -accounts.hetzner.com -dns.hetzner.com -konsoleh.hetzner.com -robot.hetzner.com - -INVERT -.top-bar-link > img -.d-flex > img -#panel_dropdown_btn > img -#user_dropdown_btn > img - -================================ - -accounts.spotify.com - -INVERT -.spotify-logo - -================================ - -accounts.zoho.com - -INVERT -div#product_img.tfa_totp_mode -span.zoho_logo -.zwHDots - -================================ - -accuweather.com - -INVERT -.allergy-icon -.icon-search -img[src$="arrow-right-black.svg"] - -CSS -.today-label, -.y-axis-label, -.x-axis-day-label, -.x-axis-month-label { - fill: var(--darkreader-neutral-text) !important; -} - -================================ - -acer.com - -INVERT -.firstHeader .logos - -CSS -.contSectionBen img { - filter: brightness(50%) sepia(40%) !important; -} -.contSectionBen .textOverBen { - position: inherit !important; -} - -================================ - -acmicpc.net - -INVERT -.cm-s-lucario.CodeMirror - -================================ - -acorn.utoronto.ca - -CSS -.acorn-classic.page-container .academic-history .sessionHeader, -.acorn-classic.page-container .academic-history .credit-earned-section, -.acorn-classic.page-container .academic-history .average-section, -.acorn-classic.page-container .academic-history .courses, -.acorn-classic.page-container .academic-history .coursesHeader, -.acorn-classic.page-container .academic-history .academic-history-report .gpa-listing, -.acorn-classic.page-container .academic-history-recent table .emph { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -action.com - -CSS -.bg-black { - background-color: transparent !important; -} - -================================ - -actioncardapp.com - -INVERT -.logo - -================================ - -ad.nl - -CSS -.instanews-page-main-content { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -ada.org - -INVERT -.logo - -================================ - -adata.com - -INVERT -.logo-nav - -================================ - -addic7ed.com - -INVERT -.tablecorner img - -CSS -.NewsTitle { - background-color: rgb(0, 62, 81); -} -.language { - background-color: rgba(7, 73, 89); -} - -================================ - -addons.mozilla.org - -INVERT -div[class="Rating Rating--small"] -img.SecondaryHero-module-icon - -IGNORE IMAGE ANALYSIS -.Icon-youtube -span.Permission-description::before - -================================ - -adguard-dns.io - -INVERT -.animation__video -.footer__logo -.header__logo -.map__point-icon -.map__point-city -.servers-info__queries - -CSS -.animation__video { - z-index: 0 !important; -} -.map__point-city, -.servers-info__map { - filter: invert(1) hue-rotate(120deg) brightness(250%) !important; -} - -================================ - -adguard-vpn.com - -INVERT -.header__logo - -================================ - -adguard.com - -INVERT -a.header__logo -svg.reviews__icon-topic -.article__section--list-ico .md__list .md__img -.article__content--title-ico .article__section .md__title .md__img -.p-header-logo.p-header-logo--image img -.icon--gray-chrome -.icon--gray-edge -.icon--gray-opera -.icon--gray-firefox - -IGNORE IMAGE ANALYSIS -.icon--gray-opera -.icon--gray-firefox - -================================ - -admin.google.com - -INVERT -.qV6brd img - -================================ - -admin.migadu.com - -CSS -.container { - background-image: none !important; -} - -================================ - -afterpay.com - -INVERT -div[class^="navigation_logo"] - -================================ - -aftership.com - -CSS -#sapper div.multi-track-input { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -aftonbladet.se - -CSS -a[href$="plus_plusikon"] > :nth-child(1) { - color: ${white}; -} - -================================ - -ai2.appinventor.mit.edu - -CSS -.blocklyDraggable text { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -aiming.pro - -INVERT -#left_side_bar > div.logo > a > img - -================================ - -airbnb.* -airbnb.*.* - -INVERT -input[name="categoryScroller"] + div img - -================================ - -akademy.kde.org -edu.kde.org -dot.kde.org -forum.kde.org - -CSS -body, -#footer { - background: ${rgb(225, 227, 228)} !important; -} - -================================ - -akasa.com - -INVERT -.logo - -================================ - -akcemed.pl - -INVERT -.td-main-menu-logo -.footer-logo-wrap - -================================ - -akinator.com - -INVERT -.bubble -.bubble-body - -CSS -.bubble { - background-color: ${black} !important; - color: ${white} !important; -} -.bubble-body { - background-color: ${white} !important; - color: ${black} !important; -} -.question-number { - color: ${white} !important; -} - -================================ - -alamy.com - -CSS -.bg-opacity-0 { - background-color: transparent !important; -} - -================================ - -aldi.us - -IGNORE INLINE STYLE -.company-logo-content * - -================================ - -alertus.com - -INVERT -.Header-branding -[src^="https://images.squarespace-cdn.com"] - -================================ - -alexpage.de - -CSS -#page { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -alfies.at - -CSS -[class*="searchbox"] * { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -alfredapp.com - -INVERT -[src*="macworld.png"] -[src*="tuaw.png"] -[src*="eddy_awards.png"] -[src*="appstorm.png"] -[src*="tnw.png"] -[src*="search.jpg"] -[src*="clipboard.jpg"] -[src*="control.jpg"] -[src*="konami-code.png"] -[src*="oatmeal404.jpg"] -[src*="query-history.png"] - -================================ - -algorithm-wiki.org - -INVERT -.thumbimage - -CSS -.thumbimage { - background-color: ${rgb(1, 4, 5)} !important; - border-color: ${rgb(48, 54, 57)} !important; -} - -================================ - -aliexpress.* -aliexpress.*.* -*.aliexpress.* - -INVERT -.group-title-img -.EYoOU - -CSS -a[class^="SnowOrderDetails_Product__imageWrap"], -div[class^="SnowOrderList_ProductImage__imageWrapper"] { - background-color: #fff !important; -} -.comet-icon[class*="rating--top"] { - color: ${yellow} !important; -} -._2E4Wz { - background-color: ${yellow} !important; -} - -IGNORE INLINE STYLE -svg[class^="ali-kit_Rating__star"] - -================================ - -alipay.com - -INVERT -#J_logoHomeUrl -.global-logo - -CSS -.qrcode-detail-img { - background-color: white !important; -} -.authcenter-background { - z-index: 0 !important; -} -.authcenter-head, -.authcenter-foot, -.authcenter-body-login, -.authcenter-body-logo > a { - z-index: 1 !important; -} - -================================ - -aljazeera.com - -INVERT -#site-logo > img -.navbar-brand > img -#navbar-hamburger-mobile - -================================ - -allconnect.com - -INVERT -.mininav-header__logo-image - -================================ - -allegrolokalnie.pl - -INVERT -.mlc-masthead__branding -.mlc-site-footer__branding - -================================ - -allestoringen.* -downdetector.* -downdetector.*.* -xn--allestrungen-9ib.* - -INVERT -#map_container -#map-card - -================================ - -allmacworld.com - -INVERT -.logo -.tie-appear.post-thumbnail -.tie-appear.post-thumbnail > [href="https://allmacworld.com/blocs-free-download/"] -.tie-appear.post-thumbnail > [href="https://allmacworld.com/waves-v11-complete-download-free/"] -.tie-appear.post-thumbnail > [href="https://allmacworld.com/3dequalizer-4-for-mac-free-download/"] -.tie-appear.post-thumbnail > [href="https://allmacworld.com/sylenth1-for-mac-free-download/"] -.tie-appear.post-thumbnail > [href="https://allmacworld.com/synapse-audio-legend-free-download/"] - -================================ - -allrecipes.com - -INVERT -.checkbox-list-checkmark::before -.external-link-icon -.icon-ellipsis > svg -.icon-email-outline -.icon-search -.icon-share-favorite -.rating-bar-wrapper -img[src="/img/profile.png"] - -================================ - -allspice.io - -INVERT -[data-mesh-id="SITE_HEADERinlineContent"] img - -================================ - -alphacoders.com - -INVERT -.main -.main > * -#page_header -#page_header > * - -================================ - -alphashooters.com - -CSS -.site-container { - --darkreader-bg--site-container-background: var(--darkreader-neutral-background) !important; -} - -================================ - -alpine.com - -INVERT -.alpsalpineLogo - -================================ - -alt.hololive.tv - -INVERT -video[src*="bg.mp4"] -video[src*="first.mp4"] -img[src*="logo_2line_gradient_color.svg"] -svg - -================================ - -altlinux.org - -INVERT -.mw-wiki-logo - -================================ - -amalgamatedbank.com - -CSS -.page-banner .banner-image { - z-index: auto !important; -} - -================================ - -amap.com - -INVERT -.amap-info -.amap-menu -.imgfeed[style*="place_default.jpg"] -.logo-img -#subway-svg -#themap -.title01-logo > a > img - -================================ - -amazingmarvin.com - -INVERT -.header-title - -================================ - -amazon.* -amazon.*.* - -INVERT -#banner-image -#ordersContainer .a-box.order-attributes img -div.a-section.vse-lb-video-metadata -div.vse-video-content -div.vse-video-title -div.vse-video-labels -i.a-icon-search -img[src*="smile-logo"] -.a-icon-arrow.a-icon-small.arrow-icon -.a-icon-close -.a-icon-extender-expand -.a-icon-popover -.a-link-nav-icon -.currencyINR -.ssf-share-trigger -.utility-bar-icon - -CSS -.banner-border { - background-color: ${white} !important; - background-image: none !important; -} -div.milestone.notReached .milestone-marker::before { - border-color: var(--darkreader-neutral-text); -} -span.milestone-bar { - z-index: 0; -} -span.milestone-bar_foreground { - background-color: #4DC2B4; -} -span.milestone-bar_background { - background-image: linear-gradient(var(--darkreader-neutral-text) 40%, #181a1b00 0px); -} -[class*="image-display"], -.a-image-container img, -[class*="imageContainer"] img, -[class*="productImageContainer"] *, -[data-pf=DESKTOP] [class*="img"] * { - mix-blend-mode: unset !important; -} -.bg-no-repeat .color-squid-ink-dark { - color: #161e2d !important; -} - -IGNORE INLINE STYLE -.s-color-swatch-inner-circle-fill - -================================ - -amazon.cn - -INVERT -#nav-logo - -CSS -#nav-main, -.nav-search-scope { - background-image: none !important; -} - -================================ - -ametek.com - -INVERT -.ametek_logo - -================================ - -amfam.com - -INVERT -.SiteHeader__logo-img - -================================ - -amtrak.com - -INVERT -.farefinder-dash -img[alt="Click to add the number travelers and discount types"] -img[alt="Passenger"] -img[alt="Switch departure and arrival stations."] - -CSS -.hero-banner-and-slides .full-width-img, -.hero-banner-and-slides .hero-banners__img-container { - z-index: auto !important; -} - -================================ - -androidcentral.com - -INVERT -.site-logo - -CSS -.lazy-loaded { - mix-blend-mode: normal !important; -} - -================================ - -androidpolice.com - -INVERT -.header-logo svg - -================================ - -ang.pl - -CSS -body { - background-image: none !important; -} - -================================ - -angrymetalguy.com - -INVERT -.plbrand - -CSS -.thepage { - background-color: ${white} !important; -} -.content-pad { - background-color: ${white} !important; -} - -================================ - -anibrain.ai - -IGNORE INLINE STYLE -div[class^="style__HexagonDiv"] * -svg[class^="styles__SvgWithShadow"] * - -================================ - -anilibria.tv - -CSS -#oframeanilibriaPlayer pjsdiv:nth-child(12) pjsdiv:nth-child(2) pjsdiv, -#oframeanilibriaPlayer pjsdiv:nth-child(14) pjsdiv:nth-child(2) pjsdiv { - background-color: var(--darkreader-neutral-text) !important; -} - -================================ - -anilist.co - -CSS -:root { - --color-background: 39,44,56 !important; - --color-foreground: 31,35,45 !important; - --color-foreground-blue: 25,29,38 !important; - --color-foreground-blue-dark: 19,23,29 !important; - --color-foreground-grey: 25,29,38 !important; - --color-foreground-grey-dark: 16,20,25 !important; - --color-text: 159,173,189 !important; - --color-text-light: 129,140,153 !important; - --color-text-lighter: 133,150,165 !important; -} - -================================ - -ankiweb.net - -CSS -.sidebar { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -annas-archive.org - -CSS -.header-inner div[style$="rgba(0, 0, 0, 0.41) 0px 0px 3px;"] { - background-color: var(--darkreader-neutral-text) !important; -} - -================================ - -anon-co-eu.com - -INVERT -img[alt="Anon-Co Radios Europe"] - -================================ - -anon-co.com - -INVERT -img[alt="Anon-Co"] - -================================ - -answers.opencv.org - -CSS -#header, -body, -#question-list, -.short-summary, -#ground { - background-image: none !important; -} - -================================ - -answers.unity.com - -IGNORE IMAGE ANALYSIS -header.section-header div.shard::before - -================================ - -antagning.se - -INVERT -.a-logo -.burger -.uhrlogo -.expand-icon -.favourite-active - -CSS -select { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -antistorm.eu - -INVERT -#map-area -#map-controls-area -#controlPlayPauseIcon -#meteogram_temperature -#meteogram_dewPoint -#meteogram_cloudCover -#meteogram_precipitation -#meteogram_precipitationProbability -#meteogram_pressure -#meteogram_windSpeed -img[src*="data:image/png;base64,iVBORw"] - -================================ - -antywirus-nod32.pl - -CSS -.module.infolinia { - background-image: none !important; -} - -================================ - -anytype.io - -IGNORE IMAGE ANALYSIS -.img.home - -================================ - -aol.com - -INVERT -.logo - -================================ - -aosogrenci.anadolu.edu.tr - -CSS -.welcome { - background-image: none !important; -} - -================================ - -apartmentlist.com - -INVERT -div[class*="LogoContainer"] -div[class*="MenuButton"] - -================================ - -apartments.com - -INVERT -.logo - -================================ - -apclassroom.collegeboard.org - -INVERT -.overview-icon svg -.Zoom--expander svg -svg.icon--xmark -.RI_header__button svg.svg-icon - -CSS -.standalone_image img { - background-color: white; -} - -================================ - -api.kde.org - -INVERT -.center -.image - -CSS -.memdoc, -.memproto { - background-image: initial !important; -} - -================================ - -apidocs.snyk.io/ - -INVERT -#api-docs - -================================ - -apie.lrt.lt - -INVERT -img[alt="LRT"] -button[class^="Burger_burger"] - -================================ - -apkpure.com - -INVERT -img[src$="gp_logo.png"] - -================================ - -apnews.com - -INVERT -.hamburger-box -.sticky-part > div svg -.LeftRail > div svg - -================================ - -apolloautomation.com - -INVERT -button.pd-floating-icon__open > img -div.rating - -CSS -.chat-toggle > svg > path { - fill: var(--darkreader-neutral-text) !important; -} - -================================ - -app.betrybe.com - -INVERT -section.quiz-result__template summary -section.quiz-result__template summary .block-code - -CSS -.home-projects details, -.header button, -.header a, -.module-index-content { - background-color: transparent !important; -} -.header button:hover, -.header a:hover, -.module-index-content summary:active, -.quiz-question label { - background-color: var(--darkreader-neutral-background) !important; -} -.quiz-question label p { - color: rgb(180, 200, 255) !important; -} -.quiz-question__alternatives label:hover, -.quiz-question__alternatives input[type=radio]:checked + label { - background: initial !important; -} - -================================ - -app.circleci.com - -INVERT -div[role="button"] svg[viewBox="0 0 300 100"] - -================================ - -app.codesignal.com - -CSS -.monaco-editor .cursor { - background-color: var(--darkreader-selection-text) !important; -} - -================================ - -app.corellium.com - -INVERT -.brand -.logo - -================================ - -app.daily.dev - -IGNORE INLINE STYLE -.h-logo * - -================================ - -app.datadoghq.com - -INVERT -.HostMap-canvas - -CSS -.log-dt-event.active, -.log-dt-event.active:hover, -.log-dt-event:hover { - background-color: rgb(37, 45, 58) !important; -} -svg text.time_cursor { - fill: ${black} !important; -} - -================================ - -app.estuda.com - -INVERT -img[src*="latex"] - -================================ - -app.getport.io - -CSS -.ring-solid-gray-200 { - --tw-ring-color: var(--darkreader-selection-text) !important; - --tw-ring-opacity: 1; -} -.ring-1 { - box-shadow: var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 --darkreader-selection-text) !important; -} - -================================ - -app.grammarly.com - -CSS -use.valueCircle_f6otssy { - stroke: url(#pb-gradient-0); -} -:root { - --highlight-bg: ${rgba(0, 0, 0, 0.2)}; -} -.alerts-clarity { - --highlight-bg: ${rgba(57, 93, 207, 0.2)}; -} -.alerts-engagement { - --highlight-bg: ${rgba(29, 203, 162, 0.2)}; -} -.alerts-correctness { - --highlight-bg: ${rgba(255, 69, 103, 0.2)}; -} -.alerts-delivery { - --highlight-bg: ${rgba(124, 58, 172, 0.2)}; -} -[class*="-alerts-markSelectedHigh"], -span[class*="markSelectedFocused"] { - background-color: var(--highlight-bg) !important; -} -[class*="-navigation-counterWrapper"] [class*="-navigation-counterContent"], -[class*="-paidview-counter"] [class*="-paidview-counterContent"] { - fill: rgb(0, 0, 0, .9); -} - -IGNORE INLINE STYLE -use[class*="valueCircle_"] - -================================ - -app.intercom.com - -CSS -.embercom-prosemirror-composer-callout[style*="background-color: #e8e8e880"] { - background-color: ${#e8e8e880} !important; -} -.embercom-prosemirror-composer-callout[style*="border-color: #73737633"] { - border-color: ${#73737633} !important; -} - -IGNORE INLINE STYLE -.embercom-prosemirror-composer-callout - -================================ - -app.kognity.com - -INVERT -img.KogCalculator -.content-image-figure > img[src*="png"] - -CSS -body, -.KogDashboard-insideLoader { - background: none var(--darkreader-neutral-background) !important; -} -img:not([src*="png"]):not([src*="svg"]) { - background-color: white !important; -} - -================================ - -app.misaka.io - -INVERT -.login-cover -img[alt="logo"] - -================================ - -app.mysms.com - -CSS -.message a { - color: grey; -} - -================================ - -app.roll20.net - -INVERT -.sheet-hp -.sheet-ac -.sheet-textbox -.sheet-name-container -.sheet-attributes-container -.sheet-attr-container button -.sheet-hlabel-container -.sheet-vitals -.sheet-init button -.sheet-spell-level -.sheet-spell-level input -.sheet-textbox .sheet-options -.sheet-speed input -.sheet-part select -.sheet-resources .sheet-subcontainer -.sheet-resources .sheet-label -.sheet-subcontainer .sheet-top -.sheet-textbox .sheet-label -.sheet-attack .sheet-options - -CSS -.sheet-attributes-container, -.sheet-init, -.sheet-speed, -.sheet-trait, -.sheet-part, -.sheet-spell-level, -.sheet-details { - color: ${white} !important; -} - -================================ - -app.standardnotes.org - -INVERT -[aria-label="Challenge modal"] > svg > circle:first-child -input[id^="react-tag-"] - -CSS -search-options svg { - fill: var(--darkreader-neutral-text) !important; -} - -IGNORE INLINE STYLE -search-options svg - -================================ - -app.tandem.net - -INVERT -img[src="/static/icons/apple.svg"] -[data-tip-id=LanguageLevelIndicator] button div span - -CSS -div[class*="styles_qrCode"] { - background-color: white !important; -} - -================================ - -app.timelyapp.com - -INVERT -.Clock__clock_css_icon___LfBr6 -.Clock__stopwatch___2G-CB - -CSS -.Day__container___1Fpnl.Day__showBackground___3CXnw { - background-image: none; -} - -================================ - -app.traderepublic.com - -IGNORE INLINE STYLE -#chartPriceLine - -================================ - -app.univerusrec.com - -CSS -html { - background-color: #181a1b !important; -} -input, -select, -textarea { - color: --darkreader-selection-text !important; -} - -================================ - -app.ynab.com - -CSS -.ynab-checkbox-button-square { - color: transparent; -} - -================================ - -app.youneedabudget.com - -CSS -[data-darkreader-inline-fill] { - fill: ${black} !important; -} - -================================ - -apple.com - -INVERT -.ac-slider-ax-track -.controls-progress-indicator -.rf-ccard-content-info - -================================ - -apple.com/leadership/ - -IGNORE IMAGE ANALYSIS -* - -================================ - -apple.com/macos/sonoma/ - -INVERT -.section-hero-lockup - -================================ - -apple.com/shop/ - -INVERT -.as-localnav.as-localnav-scrim -.localnav-title -.as-localnav-menucta -.as-localnav-browseall-menucta -.as-localnav-browseall-list-title -.as-localnav-browseall-listitem - -CSS -#globalnav { - --globalnav-background: var(--darkreader-neutral-background) !important; -} - -================================ - -apps.apple.com -support.apple.com - -CSS -#globalnav { - --globalnav-background: var(--darkreader-neutral-background) !important; -} - -================================ - -apps.microsoft.com - -INVERT -.empty-star - -================================ - -aprs-map.info - -INVERT -img[src*="tile.openstreetmap.org/"] -img[src*="tile.opentopomap.org/"] - -================================ - -aprs.fi -*.aprs.fi - -INVERT -img[src*="maps.googleapis.com/maps/vt"] -img[src*="tile.openstreetmap.org"] - -CSS -#panel { - background-image: none !important; -} - -================================ - -apteka.ru - -INVERT -ymaps[class$="ground-pane"] -.icon--logo - -================================ - -aras.com - -CSS -.alternate_color.banner__title.display-2, -.alternate_color.banner__subtitle.display-5 { - color: var(--darkreader-neutral-text) !important; -} -.banner__title.display-2, -.banner__subtitle.display-5 { - color: ${white} !important; -} - -================================ - -archenoah-kelkheim.de - -IGNORE IMAGE ANALYSIS -.wsite-header - -================================ - -architekturaibiznes.pl - -INVERT -.icon-section -a span.image-rwd-dzial-logo - -================================ - -archive.org - -INVERT -p + fieldset a svg -.search-field svg -.ia-wordmark - -CSS -#search-input { - color: var(--darkreader-neutral-background) !important; -} - -================================ - -arelion.com - -INVERT -div.tc-navigation-main__text -div.tc-navigation-main__buttons -img.tc-testimonial-expand__logo - -================================ - -ario-player.sourceforge.net - -INVERT -div.header - -CSS -div.main, -#menu li a, -#menu li { - background-image: none !important; -} - -================================ - -ars.particify.de - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; -} -.mat-mini-fab { - box-shadow: none !important; -} -.mat-card { - background-color: #{gray} !important; - box-shadow: none !important; -} -.mat-chip { - background-color: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} - -================================ - -arstechnica.com - -CSS -.listing, -.video-thumbnail { - background-blend-mode: initial !important; -} -.article-single figure img { - mix-blend-mode: initial !important; -} - -================================ - -artofproblemsolving.com - -INVERT -.latex -.latexcenter - -================================ - -artsy.net - -CSS -[aria-checked="false"][role="checkbox"] svg path { - fill: transparent !important; -} - -IGNORE INLINE STYLE -[role="checkbox"] svg * - -================================ - -arxiv.org - -CSS -.abstract { - background-color: transparent !important; -} - -================================ - -asahichinese-j.com - -INVERT -#HeaderInner img -.SocialNav -.Tag li a - -CSS -.Tag li a { - color: ${grey} !important; -} -a, -.LastUpdated, -.Lead { - color: var(--darkreader-neutral-text) !important; -} -#Footer p, -#FooterInner { - background-color: var(--darkreader-neutral-background) !important; -} -h1, -.ArticleBody p, -.ImagesHeightMod { - background-color: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} - -================================ - -asahilinux.org - -INVERT -.header-logo - -================================ - -asana.com - -INVERT -.siteHeader__logo -.DatePickerCalendarDate--today .DatePickerCalendarDate-button::after - -CSS -.MultiColorIcon--unselected .MultiColorIcon-path--fadedBlack { - fill: var(--darkreader-bg--color-icon) !important; -} -.MultiColorIcon-path--white { - fill: var(--darkreader-text--color-icon-foreground) !important; -} -.DailySummaryInboxThread--selected, -.TaskAddedToPotInboxThread--selected, -.InboxExpandableThread.InboxExpandableThread--selected, -.PortfolioItemRow { - background: var(--darkreader-neutral-background) !important; -} -.PortfolioItemRow:hover { - background: ${#FFF} !important; -} -.HomePageContent { - background-image: none !important; -} -div.PeopleWidgetCarousel-gradient.PeopleWidgetCarousel-gradient--right { - display: none; -} - -================================ - -asciinema.org - -IGNORE INLINE STYLE -polygon -polyline - -================================ - -askjohnmackay.com - -INVERT -[src$="ask-john-mackay-logo.png"] -[src$="side-banner-05.gif"] -[src$="reasonwhy.jpg"] - -CSS -body, -header, -#site-footer, -#live-search { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -askvg.com - -INVERT -.site-header img - -================================ - -askwoody.com - -CSS -.banner, -.content { - background-image: none !important; -} - -================================ - -assetstore.unity.com - -CSS -div[style^="background-color:var(--color-bg-gray-5)"] { - --color-bg-gray-5: var(--darkreader-neutral-background) !important; -} -h2[style*="color:var(--color-font-header)"] { - --color-font-header: var(--darkreader-neutral-text) !important; -} - -================================ - -astro.build - -CSS -hero-card .card { - --darkreader-bg--tw-gradient-stops: var(--darkreader-bg--tw-gradient-from), var(--darkreader-neutral-background), var(--darkreader-bg--tw-gradient-to) !important; -} - -IGNORE INLINE STYLE -#navlogo svg path - -================================ - -astroproxy.com/dashboard/settings/profile/2fa - -CSS -.card-body .col-md-6 > div > svg > rect[width="200"] { - fill: var(--darkreader-neutral-text) !important; -} - -================================ - -asus.com - -INVERT -span.mobile-menu-toggle.mobile -em#searchopen.icon-search -#af-header .af-inner .logo - -IGNORE IMAGE ANALYSIS -#af-header .af-inner .logo -li.nav-Rog a - -================================ - -atcoder.jp - -CSS -#fixed-server-timer { - color: #333; -} -.ace-tm .ace_indent-guide { - opacity: .3; -} - -================================ - -athome.abeka.com - -INVERT -.logo img -.center-align img - -================================ - -atlas.herzen.spb.ru -guide.herzen.spb.ru -job.herzen.spb.ru - -INVERT -img[src="/images/logo.png"] -hr - -CSS -body, -.body, -table, -tbody, -tr, -td, -.corner_bottom { - background: none !important; -} - -================================ - -atlassian.net -*.atlassian.net - -INVERT -img[src*="https://github.githubassets.com/favicon.ico"].smart-link-icon -.sc-jTzLTM -img[src^="https://latexmath.bolo-app.com/render/"] -img[src*="MathJax-SVG"] -span[aria-label="Confluence"] - -CSS -span.code, -code.code { - background-color: rgba(240,246,252,0.15) !important; -} -.ghx-parent-group, -.ghx-issue { - background-color: rgba(119, 183, 255, 0.05) !important; -} -span.loader-wrapper a, -.css-s0tfqx, -.css-1vn31bx, -.css-1gx5gpx, -.css-wvfva4 { - background-color: rgba(240,246,252,0.1) !important; -} -.css-1yfnrso, -.aui-flag, -.aui-message { - box-shadow: 0 0 20px rgba(240,246,252,0.15) !important; -} -.css-1ua1xqz { - background-color: rgba(65, 65, 83, 0.6) !important; -} -code:first-of-type { - background-image: linear-gradient(to right, rgba(255,255,255,0.03),rgba(255,255,255,0.03) calc(1ch + 16px),transparent calc(1ch + 16px),transparent) !important; -} -.sc-1jjaulc-0 { - background-color: ${rgba(3, 9, 15, 0.02)} !important; - box-shadow: 0 0 4px ${rgba(3,9,15,0.15)} !important; -} -.sc-186t4q4-1 { - background-color: ${rgba(3, 9, 15, 0.02)} !important; -} -div.zgsxji-0.jMIyWM > div > div > div > div { - background-color: var(--darkreader-bg--ds-surface, #181a1b) !important; -} -#ak-main-content, -.pfb8c3-0.dpzKHj, -._11q7vuon { - background-color: var(--darkreader-neutral-background) !important; -} -#jira-issue-header, -#jira-issue-header-actions { - background-color: rgb(29, 32, 33) !important; -} -.ak-editor-panel[data-panel-type="note"] { - background-color: ${rgb(217, 200, 228)} !important; -} -.ak-editor-panel[data-panel-type="info"] { - background-color: ${rgb(172, 217, 242)} !important; -} -.ak-editor-panel[data-panel-type="error"] { - background-color: ${rgb(255, 220, 211)} !important; -} -.ak-editor-panel[data-panel-type="warning"] { - background-color: ${rgb(238, 229, 187)} !important; -} -.ak-renderer-document hr, -.ProseMirror hr { - background-color: rgb(69, 70, 72) !important; -} -.ProseMirror hr.ak-editor-selected-node { - background-color: rgb(0, 101, 255) !important; -} -.jira-issue-status-lozenge { - background-color: var(--darkreader-neutral-background) !important; -} -.fabric-text-color-mark { - --darkreader-text--custom-text-color: var(--custom-text-color); -} -#content-body { - --ds-surface: var(--darkreader-neutral-background) !important; -} - -IGNORE INLINE STYLE -.ak-editor-content-area * -span[aria-label="Jira Software"] * - -================================ - -audible.com/webplayer -audible.de - -INVERT -#adbl-cloud-player-controls -.hero-img > img - -CSS -.adbl-page > #center-0 { - background-color: #0e0d0c !important; -} -.adblCloudPlayerContainer { - height: 99999vh !important; -} -.adblCloudPlayerContainer .bc-range-progress, -.bc-range input[type="range"]::-moz-range-thumb, -.bc-range input[type="range"]::-webkit-slider-thumb { - background-color: #f7991c !important; -} -.bc-range input[type="range"]::-moz-range-track, -.bc-range input[type="range"]::-webkit-slider-runnable-track { - background: rgba(255,255,255,.5) !important; -} - -================================ - -audio-technica.com - -INVERT -.o-header__logo - -================================ - -audycje.tokfm.pl/widget - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -auth.adguard.com - -INVERT -.header__logo path[fill="#000"] - -================================ - -auth0.com - -INVERT -button[data-handler="authorise-github"] > img.icon.icon-default - -================================ - -autodesk.com - -INVERT -.uh-logo-container - -================================ - -autoweek.com - -INVERT -.nav-logo - -================================ - -avanti24.pl - -INVERT -.box-logo - -================================ - -avast.com - -INVERT -.avast-logo - -================================ - -avg.com - -INVERT -.bi-nav-toplink - -================================ - -avito.ru - -INVERT -a[class^="Logo-"] > svg > path -a[class^="header-logo"] -.item-extended-phone -.item-price-old::before -.contacts-phone-3KtSI -.button-content-phone_size_l-1O5VB -._39EVKDP-9p1BREJQ3fhILl._2sPEvPi-1aWpcq1ggVph1C._4wLX_6jxKYoWRyE1U1WcZ -[class^="suggest-graySuggestCategoryImg"] -ymaps[class$="ground-pane"] - -CSS -div[class^="item-preview-image"] { - z-index: 0 !important; -} - -================================ - -avlab.pl - -INVERT -img[src*="avlab-logo"] -img[alt*="logo"] -.elementor-widget-wrap div div a.elementor-icon svg -.elementor-social-icons-wrapper - -================================ - -aws.amazon.com - -INVERT -a.lb-trigger -.hover .axis-box rect -.img-wrapper -img[alt^="WEB_FreeTier"] -.lb-is-lazyloaded -.lb-none-v-margin.lb-img -.lb-tiny-iblock .cq-dd-image - -CSS -.header-background { - fill: none !important; -} - -================================ - -azure.microsoft.com - -INVERT -.card .ocr-img -.img-fluid -.section-master__image - -================================ - -azuresynapse.net - -INVERT -.cursor - -================================ - -azurlane.koumakan.jp - -INVERT -.mwe-math-element - -CSS -.rarity-1, -.rarity-2 { - background: #999 !important; -} -.rarity-3 { - background: #5fa8bf !important; -} -.rarity-4 { - background: #846dbf !important; -} -.rarity-5 { - background: #aa5 !important; -} -.rarity-6 { - background: linear-gradient(120deg,#bbbf8a,#7abf7f,#67afbf,#bf6bbf) !important; -} - -IGNORE IMAGE ANALYSIS -.mw-wiki-logo - -================================ - -bab.la - -INVERT -.logo-flash - -================================ - -babyem.co.uk - -INVERT -div.elementor-social-icons-wrapper a.elementor-icon -input::placeholder - -================================ - -babylonbee.com - -INVERT -.header-logo -.img-fluid.mb-2.d-none.d-sm-block - -================================ - -backblaze.com - -CSS -.rt-headingxlred-bodym > p, -a { - color: ${white} !important; -} -.nav2_link, -.footer_link, -.footer_textlink { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -bahnhof.net - -CSS -.contact-form_section { - background-image: none !important; -} - -================================ - -baike.baidu.com - -INVERT -.formula - -IGNORE IMAGE ANALYSIS -.wiki-lemma .lemmaWgt-posterBg - -================================ - -baitoru.com - -CSS -mark { - background-color: #cc4; - color: black; -} - -================================ - -bakabt.me - -INVERT -span.icon.hd -span.icon.lossless - -================================ - -balena.io - -INVERT -.Header__main-logo - -================================ - -bandcamp.com -allochiria.com - -INVERT -.bclogo.white -.vol-control -.progress -.buffer -.seek-control -#material-close - -CSS -.ui-dialog { - background-image: none !important; -} - -================================ - -bandshed.net - -CSS -#content { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -banki.ru - -INVERT -.header__logo - -CSS -.comment:nth-child(even) { - background-color: ${#f5f5f5} !important; -} - -================================ - -bankier.pl -bankier.tv - -INVERT -.o-home-smart-box__header > .a-anchor > .a-image > img[class="a-image__img"] -.hamburger -.icon > img -.menu-sidebar__close-menu > img -img[class="menu-sidebar__logo-img"] -img[alt*="Bankier.pl"] -img[src*="logo-smart.svg"] -a[href="https://www.bankier.pl/"] -img[alt="Bankier.TV"] -.m-quote-list__anchor img.a-image__img - -================================ - -bankofamerica.com - -INVERT -.main-nav-top-logo img - -CSS -.fsdnav-sub-nav-left { - background-color: var(--darkreader-neutral-background) !important; -} -.ad-acct-layout, -.ad-acct-detail-card-layout, -.thrfwl-body, -.ad-summary-container, -.olb-summary-widget-container { - background-image: none !important; -} - -================================ - -barnesandnoble.com - -INVERT -.logo-img - -================================ - -basecamp.com - -INVERT -.top-nav__logo - -================================ - -baselinker.com - -CSS -.form-control { - background-color: var(--darkreader-neutral-background) !important; - color: ${black} !important; -} - -================================ - -battlelog.battlefield.com/bf3 - -INVERT -:not(.active) > .serverguide-cell-ranked-wrapper > div -:not(.active) > .serverguide-cell-pb-wrapper > div -:not(.active) > .serverguide-cell-type-wrapper > div -.common-button-medium-grey -.common-kittimes-overlay -.serverguide-headercells -table.common-table > thead > tr > th -.leaderboard-venice-specific > thead > tr > th -#selected-server-settings .selected-server-setting -.sodaSlider-arrow-left -.sodaSlider-arrow-right - -CSS -.common-button-medium-grey > p { - color: #000 !important; -} -.base-button-arrow-almost-gigantic, -.base-button-arrow-gigantic, -.base-button-arrow-large, -.btn.btn-primary, -.base-button-arrow-large-drop { - color: #000 !important; -} -.common-button-medium > p, -.common-button-large > p { - color: #000 !important; -} -.common-selector-alt li.selected { - color: #262626 !important; -} -.progress-bar .progress-bar-inner, -.common-percentbar-container div { - background-color: ${#353535} !important; -} -#selected-server-settings .selected-server-setting { - color: ${#888} !important; -} - -IGNORE IMAGE ANALYSIS -.serverguide-headercells -table.common-table > thead > tr > th -.leaderboard-venice-specific thead tr th -.base-item-ribbon-small - -================================ - -bayfiles.com - -INVERT -.img-responsive -.kopimi - -================================ - -bbb.* - -CSS -div[class^='scrollableList'] { - background: none !important; - box-shadow: none !important; -} - -================================ - -bbc.co.uk -bbc.co.uk/weather -bbc.com/weather - -INVERT -.orb-nav-section .orb-nav-blocks -.orb-icon .orb-icon-arrow -span[class*="LogoIconWrapper"] - -CSS -.wr-icon-weather-type__svg-background, -.wr-icon-rain__svg-background, -.wr-icon-wind-direction__svg-background, -.wr-icon-gel__svg-background { - opacity: 0% !important; -} -.wr-value--windspeed { - color: ${#dad7d2} !important; -} -.wr-c-environmental-data__icon-text { - color: ${#dcd9d4} !important; -} -.haCQWq, -.fFEZuA { - filter: invert(90%) !important; -} - -================================ - -bbc.com - -CSS -.haCQWq, -.fFEZuA { - filter: invert(90%) !important; -} - -================================ - -bbc.com/news -bbc.com/sport -bbc.com/travel -bbc.com/capital -bbc.com/autos -bbc.com/culture -bbc.com/future -bbc.com/sounds -bbc.com/food -bbc.com/bitesize -bbc.com/earth - -INVERT -.orb-nav-section .orb-nav-blocks -.orb-icon .orb-icon-arrow -[class*="NavigationLink-LogoLink"] > span > svg -span[class*="LogoIconWrapper"] - -CSS -.haCQWq, -.fFEZuA { - filter: invert(90%) !important; -} - -================================ - -bbs.chinauos.com -bbs.deepin.org - -INVERT -.post_tip - -CSS -.post_edit p { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -bbs.thinkpad.com -club.lenovo.com.cn - -CSS -body[style] { - box-shadow: inset 0px 0px 0px 9999px var(--darkreader-neutral-background); -} - -================================ - -bbs.wenxuecity.com - -INVERT -.logo - -================================ - -behance.net - -INVERT -div[class^="PrimaryNav-logoWrap"] - -================================ - -benevity.com - -INVERT -.header_logo - -================================ - -berlingske.dk - -INVERT -.site-header__logo - -================================ - -bestbuy.ca - -INVERT -.centerContainer -[class^="facetName"] -[class^="title"] -[class^="sortLabel"] -[class^="headerText"] -[class^="subTitle"] -[class^="price"] -[class^="soldByBestBuy"] -[class^="availabilityMessage"] -[class^="deliveryDate"] -[class^="storesNearCity"] -svg[class*="availabilityHeaderIcon"] - -CSS -div[class*="backgroundContainer"] { - z-index: 0 !important; -} -body { - background-image: initial !important; -} - -================================ - -bestbuy.com - -CSS -input[type="radio" i] { - background-color: initial; -} - -================================ - -bestchange.ru - -INVERT -.tabs li a - -CSS -body, -.c-inner, -.c-block .c-wrap, -#content_table thead td, -.content .intro, -.c-block, -#content_table tbody td, -#content_reviews, -.review_header, -.review_middle, -.review_bottom { - background-image: none !important; -} - -================================ - -bet.com -cmt.com -logotv.com -paramountnetwork.com -southpark.cc.com -vh1.com - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -betanews.com - -CSS -.sectionTop, -.editorial .header, -.tabbed .tabs li:not(.active), -.tabbed .tabs li:not(.active) a { - background-image: none !important; -} -.tabbed .tabs li:not(.active) a { - background-color: ${#d9d9ff} !important; -} - -================================ - -bettercap.org - -INVERT -.copy-to-clipboard -[src$="mitm.jpg"] -[src$="proxy.png"] -[src$="with-hsts.png"] -[src$="sslstrip2.png"] - -CSS -.copy-to-clipboard { - background-color: var(--darkreader-neutral-text) !important; -} - -================================ - -bfi.org.uk - -INVERT -img[src$="bfi_logo_transp.png"] -img[src$="national-lottery-logo-color.png"] -img[src*="sight-and-sound-logo-280x69.png"] - -CSS -body { - background-image: none !important; -} - -================================ - -bgp.he.net - -INVERT -img[src="/helogo.gif"] -img[src*="chart.googleapis.com"] -img[src^="/graphs/"] - -================================ - -bible.optina.ru - -CSS -body, -#left, -#right { - background-image: none !important; -} - -================================ - -bibleref.com - -CSS -.scripture, -.content, -.content-commentary .expand { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -bibliotecapleyades.net - -CSS -body { - background-image: none !important; -} - -================================ - -bienici.com - -INVERT -.section-header -.bv-form -.hpFeaturesRow -.hpContent -#searchSideView -.searchFilterViewContainer -.searchItemPhoto -#map -.animatedSideContent -#detailedSheetsNavigation - -================================ - -bigberthaoriginal.* - -CSS -.product-card-figure { - background-color: #f9f9f9 !important; -} - -================================ - -bigocheatsheet.com - -INVERT -.gray - -CSS -.green, -.orange, -.yellow, -.yellow-green { - color: black !important; -} - -================================ - -biletywielkopolskie.pl - -INVERT -.kw-logo - -================================ - -biliomask.com - -INVERT -div.header-title-logo - -================================ - -binance.com - -CSS -div.qr-code > canvas { - outline: solid 10px white !important; -} -div > input[type="checkbox"] + svg { - fill: transparent !important; -} -div > input[type="checkbox"]:checked + svg { - fill: var(--darkreader-neutral-text) !important; -} -label > svg circle { - fill: rgb(37, 40, 42) !important; -} - -================================ - -bing.com - -INVERT -canvas[id^="Microsoft.Maps"] -button[is="cib-button"] svg-icon - -CSS -.options-list-container, -.b_wlcmTileWrap > *, -cib-shared, -cib-serp-feedback, -cib-typing-indicator ~ .main-container, -cib-see-more-container { - background: var(--darkreader-neutral-background) !important; -} -.option > *, -cib-shared, -cib-tooltip, -cib-message, -.disclaimer, -.b_wlcmDesc, -.b_vfly_b, -.container>fieldset>legend { - color: var(--darkreader-neutral-text) !important; -} -.b_searchboxForm, -.b_searchboxForm:hover, -.b_focus .b_searchboxForm, -#sw_as #sa_ul:not(:empty), -cib-typing-indicator ~ .main-container, -cib-see-more-container { - box-shadow: ${rgba(0, 0, 0, 0.1)} 0px 0px 0px 1px !important; -} -#b_results > li.b_ans.b_topborder, -#b_results > li.b_ans.b_topborder.b_tophb.b_topshad { - box-shadow: ${rgba(13, 13, 13, 0.05)} 0px 0px 0px 1px !important; -} -.l_ecrd_imcolheader.gradient { - z-index: 2 !important; -} -#b_content { - background-image: none !important; -} -cib-tooltip, -.attributions > .attribution-item > .background { - background: var(--darkreader-neutral-background) !important; -} -cib-message[type="text"]:not([serp-slot="right-rail"]), -button.container > .item-content, -button.container > .item-content:before, -.container > .options-list-container, -.container > .options-list-container li.option button:not([selected]):before, -button.container[serp-slot="none"], -button.container[serp-slot="right-rail"], -#fbpgbt, -#stop-responding-button, -cib-feedback { - background: ${rgba(50, 50, 50, 0.1)} !important; -} -cib-message[type="text"]:not([serp-slot="right-rail"]), -cib-shared > .content > .ac-container > .ac-textBlock { - color: var(--darkreader-text--cib-color-neutral-foreground) !important; -} -button.container[serp-slot="right-rail"]:hover { - background: ${rgba(0, 0, 0, 0.3)} !important; -} -button.container[serp-slot="none"] { - border: 1px solid var(--cib-color-brand-secondary-stroke) !important; -} -.attribution-container > .attribution-items > .attribution-item, -.attribution-container > .attribution-items > button.expand-button, -.ac-container.ac-adaptiveCard > .ac-textBlock > p > .tooltip-target + a > sup { - background: #050F2E !important; - color: #A2B7F4 !important; -} -div.icon > svg > g:nth-child(1) > path:nth-child(1) { - opacity: 0 !important; -} -.ac-container.ac-adaptiveCard > .ac-textBlock > p > .tooltip-target.hover { - background: var(--cib-color-stealth-primary-foreground-hover) !important; - color: var(--cib-color-brand-text-highlight-background) !important; - text-decoration-color: var(--cib-color-brand-text-highlight-background) !important; -} -.ac-container.ac-adaptiveCard > .ac-textBlock > p code { - background: rgba(255,255,255,0.2) !important; -} -.container > button:hover > svg-icon { - fill: var(--cib-color-neutral-primary-background) !important; -} -.content > .ac-container { - color: var(--darkreader-neutral-text); -} -#b_results .b_algo.b_deeplinks_bg_color_kc { - background-image: none !important; -} -:root { - --cib-color-background-serp-neutral: ${#FFFFFF} !important; - --cib-color-background-serp-primary: ${#F5F5F5} !important; - --cib-color-background-surface-app-primary: ${#FFFFFF} !important; - --cib-color-background-surface-app-quaternary: ${#FFFFFF} !important; - --cib-color-background-surface-app-secondary: ${#FFFFFF} !important; - --cib-color-background-surface-app-tertiary: ${#F0F0F0} !important; - --cib-color-background-surface-card-disabled: ${rgba(255, 255, 255, 0.4)} !important; - --cib-color-background-surface-card-primary: ${rgba(255, 255, 255, 0.7)} !important; - --cib-color-background-surface-card-secondary: ${rgba(255, 255, 255, 0.4)} !important; - --cib-color-background-surface-card-tertiary: ${#FFFFFF} !important; - --cib-color-background-surface-solid-base: ${#F5F5F5} !important; - --cib-color-background-surface-solid-primary: ${#F7F7F7} !important; - --cib-color-background-surface-solid-quaternary: ${#FFFFFF} !important; - --cib-color-background-surface-solid-secondary: ${#EEEEEE} !important; - --cib-color-background-surface-solid-tertiary: ${#F9F9F9} !important; - --cib-color-background-system-attention-primary: ${rgba(255, 255, 255, 0.5)} !important; - --cib-color-background-system-caution-primary: ${#FFF4CE} !important; - --cib-color-background-system-critical-primary: ${#FDE7E9} !important; - --cib-color-background-system-success-primary: ${#DFF6DD} !important; - --cib-color-foreground-accent-balanced-primary: ${#174AE4} !important; - --cib-color-foreground-accent-balanced-secondary: ${#1543CD} !important; - --cib-color-foreground-accent-creative-primary: ${#75306C} !important; - --cib-color-foreground-accent-creative-secondary: ${#692B61} !important; - --cib-color-foreground-accent-disabled: ${rgba(23, 74, 228, 0.3)} !important; - --cib-color-foreground-accent-precise-primary: ${#006880} !important; - --cib-color-foreground-accent-precise-secondary: ${#005E73} !important; - --cib-color-foreground-accent-primary: ${#174AE4} !important; - --cib-color-foreground-accent-quaternary: ${#3B3FB2} !important; - --cib-color-foreground-accent-secondary: ${#1543CD} !important; - --cib-color-foreground-accent-tertiary: ${#123BB6} !important; - --cib-color-foreground-neutral-disabled: ${rgba(17, 17, 17, 0.4)} !important; - --cib-color-foreground-neutral-quaternary: ${#616161} !important; - --cib-color-foreground-neutral-secondary: ${#666666} !important; - --cib-color-foreground-neutral-tertiary: ${#919191} !important; - --cib-color-foreground-system-attention-primary: ${#106EBE} !important; - --cib-color-foreground-system-attribution-primary: ${#006621} !important; - --cib-color-foreground-system-caution-primary: ${#9D5D00} !important; - --cib-color-foreground-system-critical-primary: ${#C42B1C} !important; - --cib-color-foreground-system-error-primary: ${#B10E1C} !important; - --cib-color-foreground-system-link-primary: ${#4007A2} !important; - --cib-color-foreground-system-neutral-primary: ${rgba(0, 0, 0, 0.45)} !important; - --cib-color-foreground-system-neutral-strong: ${rgba(0, 0, 0, 0.8)} !important; - --cib-color-foreground-system-success-primary: ${#0F7B0F} !important; -} - -IGNORE INLINE STYLE -.b_header_bg -.sp-tpwebicons.WIKI * - -================================ - -biorxiv.org - -INVERT -.blood_logo -.logo-img -#czilogo - -CSS -body { - background-image: none !important; -} - -================================ - -bitbay.net - -INVERT -.navbar-brand -.logo -.full-page-preloader - -================================ - -bitbucket.org - -INVERT -a[href="/product"] -.registration-hero .form-prompt - -CSS -div[data-testid="file-header"] { - background-color: ${rgba(33, 53, 89, 0.08)} !important; -} -span[data-testid="file-tree-file__comments"] > span { - color: var(--darkreader-neutral-text) !important; -} -span > svg { - color: var(--icon-primary-color) !important; -} -[type="button"][tabindex="0"], -[data-testid="settingsButton"] { - background-color: ${rgba(33, 53, 89, 0.04)} !important; -} -code.code, -[type="button"][tabindex="0"]:hover, -[data-testid="settingsButton"]:hover { - background-color: ${rgba(33, 53, 89, 0.08)} !important; -} -.ak-navigation-resize-button { - box-shadow: ${rgba(33, 53, 89, 0.08)} 0px 0px 0px 1px, - ${rgba(33, 53, 89, 0.08)} 0px 2px 4px 1px !important; -} -[data-testid="pipeline-row"]:hover { - background: var(--darkreader-neutral-background) !important; - box-shadow: -4px 0 0 0 var(--darkreader-neutral-background), 4px 0 0 0 var(--darkreader-neutral-background) !important; -} -[data-testid="result-page"]>div>div:nth-child(3), -[data-testid="result-page"]>div>div:nth-child(3)>div { - background: var(--darkreader-neutral-background) !important; -} - -IGNORE INLINE STYLE -[role="presentation"] svg * -[aria-label="Bitbucket"] * - -================================ - -bitcoinprice.com - -CSS -.highcharts-button-box { - fill: var(--darkreader-neutral-background) !important; -} - -================================ - -bitcoinwisdom.com - -INVERT -.site-branding - -================================ - -bitly.com - -CSS -.hero-content { - background-image: none !important; -} - -================================ - -bitwarden.com - -INVERT -img[alt="Github Logo"] -img[src$="forbes.png"] -app-login img.logo - -IGNORE IMAGE ANALYSIS -blockquote .blockquote-header - -================================ - -bitwit.tech - -CSS -.svg-primary { - fill: #375D69 !important; -} -.svg-primary-light { - fill: #4A7F8F !important; -} -.svg-primary-dark { - fill: #28444D !important; -} -.svg-secondary { - fill: #B88399 !important; -} -.svg-secondary-light { - fill: #E8A9C4 !important; -} -.svg-secondary-dark { - fill: #825F6E !important; -} -.svg-light { - fill: #ADCED9 !important; -} -.svg-outline { - fill: none !important; - stroke: #000000 !important; -} -.svg-primary-outline { - fill: none !important; - stroke: #ADCED9 !important; -} -.svg-secondary-outline { - fill: none !important; - stroke: #375D69 !important; -} -.theme-light { - display: none !important; -} -.theme-dark { - display: none !important; -} -.theme-darkreader { - display: block !important; -} - -================================ - -biznes.pap.pl - -CSS -body, -#copy { - background-image: none !important; -} - -================================ - -blablacar.* -blablacar.*.* - -INVERT -.kirk-topBar-left - -================================ - -blackboard.com - -INVERT -li[class^="js-multiple-answer-answer"][class$="selected-answer"] -li[class^="js-answer"][class~="is-selected"][class$="answer-selected"]::before -.true-false-answer.selected-answer - -CSS -li[class^="js-multiple-answer-answer"][class$="selected-answer"]::before { - border-color: $var(--darkreader-neutral-background) !important; -} -li[class^="js-answer"][class~="is-selected"][class$="answer-selected"]::before { - border-color: $var(--darkreader-neutral-background) !important; -} -.true-false-answer.selected-answer::before { - border-color: $var(--darkreader-neutral-background) !important; -} - -================================ - -blahdns.com - -INVERT -[src="https://cdn.blahdns.com/logo.png"] -[src="https://cdn.blahdns.com/kofi4.png"] -.liberapay-btn > span -svg - -================================ - -blaupunkt.com - -INVERT -.fusion-standard-logo - -================================ - -blog.arelion.com - -INVERT -img[src="https://blog.arelion.com/wp-content/themes/arelion-blog-theme-kopia/public/images/logo.svg"] -img[src="https://blog.arelion.com/wp-content/themes/arelion-blog-theme-kopia/public/images/ico/search-icon.svg"] -img[src="https://blog.arelion.com/wp-content/themes/arelion-blog-theme-kopia/public/images/ico/right-arrow.png"] - -================================ - -blog.cloudflare.com - -CSS -body#main-body { - background-color: ${white} !important; - color: ${black} !important; -} -.dn { - color: ${white} !important; -} -#nav { - background-color: ${white} !important; -} -main#post { - background-color: ${white} !important; -} -article.post-full { - background-color: ${white} !important; -} -article p { - color: ${gray} !important; -} -code { - color: ${black} !important; -} -nav.pagination { - background-color: ${white} !important; -} - -================================ - -blog.csdn.net - -CSS -html { - height: inherit !important; -} -.main_father { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -blog.documentfoundation.org - -INVERT -img[alt*="The Document Foundation Blog"] - -================================ - -blog.doist.com - -INVERT -.db-header__logo-img - -================================ - -blog.mozilla.org - -INVERT -.content > .logo > [href^="https://www.mozilla.org/"] -.nav-global-donate > [href^="https://donate.mozilla.org/"] - -CSS -.nav-global-donate > [href^="https://donate.mozilla.org/"] { - color: ${white} !important; -} -#page { - background-image: none !important; -} - -================================ - -blog.nightly.mozilla.org - -INVERT -.content > .logo > [href^="https://www.mozilla.org/"] -.nav-global-twitter a::before -.nav-global-join a::before - -CSS -.nav-util-search .fm-search input { - border-color: ${#999} !important; -} - -================================ - -blog.scssoft.com - -CSS -body { - background: none !important; -} - -================================ - -blogger.com - -INVERT -.gb_ua -.feedflare - -================================ - -blogs.windows.com - -CSS -.c-video__icon::before { - color: ${white} !important; -} -.item-single__content ::before { - background-color: var(--darkreader-text--wp--preset--color--black) !important; -} - -================================ - -bloomberg.com - -INVERT -.navi-bar__button-icon -.navi-sections__item--LiveNow::before -.navi-sections__link--current::after - -CSS -.navi { - border-color: var(--darkreader-border--color-black) !important; -} - -================================ - -blueberryroasters.pl - -INVERT -div#logo - -================================ - -bluemic.com - -INVERT -.blue-logo - -================================ - -boardgamearena.com - -INVERT -.bgagame-kingoftokyo .player-board .player-hand-card - -CSS -body { - background: none; -} -.bga-dropdown__list.bg-bga-whitebg { - background-color: rgb(35, 38, 39); -} -.bg-bga-gray-204 { - background-color: rgb(57, 61, 62); -} -.bgagame-agricola .game-content, -.bgagame-agricola #right-side, -.agricola_popin_container, -.dijitTooltip .action-holder, -.dijitTooltip .player-card { - color: #000; -} -:is(.bgagame-agricola, .dijitTooltip .action-component-tooltip) .action-card-holder .action-card .action-header, -:is(.bgagame-agricola, .dijitTooltip .action-component-tooltip) .action-card-holder .action-card .action-desc, -:is(.bgagame-agricola, .dijitTooltip .action-component-tooltip) .action-card-holder .action-card .action-footer { - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/agricola/230120-1146/img/action_frame.png"); -} -:is(.bgagame-agricola, .dijitTooltip .action-component-tooltip) .action-card-holder .action-s .action-header, -:is(.bgagame-agricola, .dijitTooltip .action-component-tooltip) .action-card-holder .action-s .action-desc, -:is(.bgagame-agricola, .dijitTooltip .action-component-tooltip) .action-card-holder .action-s .action-footer { - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/agricola/230120-1146/img/action_frame_s.png"); -} -.bgagame-bandada .cardontable, -.bgagame-bandada .playercard { - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/bandada/221108-1032/img/birds312.png"); -} -.bgagame-bandada #dicearea { - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/bandada/221108-1032/img/dicecard.png"); -} -.bgagame-carnegie .cng_timeline_image { - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/carnegie/210812-1806/img/timelines.png"); -} -.bgagame-catcafe .ctc_player_board { - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/catcafe/221108-0942/img/catcafe_sheet.jpg"); -} -.bgagame-catcafe .ctc_square { - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/catcafe/221108-0942/img/drawings_black.png"); -} -.bgagame-catcafe .ctc_cat_footprint { - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/catcafe/221108-0942/img/catfootprint.png"); -} -.bgagame-catcafe .ctc_column_scoring { - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/catcafe/221108-0942/img/column_scoring.png"); -} -.bgagame-catcafe .ctc_txt_flash { - color: #007f37; -} -.bgagame-catcafe .ctc_sub_scoring { - color: #000; -} -:is(.bgagame-doglover, .dijitTooltip) .DOG-card-name, -:is(.bgagame-doglover, .dijitTooltip) .DOG-card-type-text, -:is(.bgagame-doglover, .dijitTooltip) .DOG-card-bottom-text, -:is(.bgagame-doglover, .dijitTooltip) .DOG-card-dog-bonus-text, -:is(.bgagame-doglover, .dijitTooltip) .DOG-card-trick-cost-text, -:is(.bgagame-doglover, .dijitTooltip) .DOG-card-back-text { - color: #000; -} -:is(.bgagame-doglover, .dijitTooltip) .DOG-card-trait-warning-text { - color: maroon; -} -.bgagame-doglover .DOG-unfed .DOG-played-dog-card .DOG-card-placeholder .DOG-unfed-border { - border-color: #7e0000; -} -.bgagame-evergreen .eve_remaining-actions .stockitem { - filter: invert(100%); -} -.bgagame-kingoftokyo .player-evolution-card { - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/kingoftokyo/230710-1229/img/evolution-cards.jpg"); -} -.bgagame-kingoftokyo .kot-evolution { - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/kingoftokyo/230710-1229/img/evolution-cards.jpg"); -} -.bgagame-kingoftokyo .kot-evolution .description-wrapper { - color: #000; -} -.bgagame-kingoftokyo #table .player-table .player-name .outline { - -webkit-text-stroke: 4px #000; -} -.bgagame-legendraiders #bag { - background-image: url("https://i.imgur.com/ptX6Fv7.png"); -} -.bgagame-littlefactory .cardClay, -.dijitTooltip .cardClay { - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/littlefactory/220227-0736/img/Card2.jpg"); -} -.bgagame-littlefactory .cardCotton, -.dijitTooltip .cardCotton { - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/littlefactory/220227-0736/img/Card4.jpg"); -} -.bgagame-littlefactory .cardGrain, -.dijitTooltip .cardGrain { - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/littlefactory/220227-0736/img/Card1.jpg"); -} -.bgagame-littlefactory .cardStone, -.dijitTooltip .cardStone { - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/littlefactory/220227-0736/img/Card5.jpg"); -} -.bgagame-littlefactory .cardWood, -.dijitTooltip .cardWood { - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/littlefactory/220227-0736/img/Card3.jpg"); -} -.bgagame-littlefactory .cell3 { - color: #000; -} -.bgagame-lox :is( - .coinCountA, .coinCountB, .coinCountC, .coinCountD, - .figurineCountA, .figurineCountB, .figurineCountC, .figurineCountD, - .guildCountA, .guildCountB, .guildCountC, .guildCountD, - .reputationCountA, .reputationCountB, .reputationCountC, .reputationCountD -) { - color: #000; -} -.bgagame-microdojo .barrak { - background-image: url(https://x.boardgamearena.net/data/themereleases/current/games/microdojo/221116-1802/img/barraks.png); -} -.bgagame-microdojo :is(.barrak, .Objname) { - color: #000; -} -.bgagame-patchwork .cost-label { - color: #222; -} -.bgagame-rainforest .token { - background-image: url(https://x.boardgamearena.net/data/themereleases/current/games/rainforest/230403-1628/img/Tokens.png); -} -.bgagame-riftvalleyreserve #rvr-score-ref-holder { - background-image: url(https://x.boardgamearena.net/data/themereleases/current/games/riftvalleyreserve/221228-1440/img/score_ref_vert.png); -} -.bgagame-riichimahjong :is(.JMJ_tile_other_annot, .JMJ_tile_self_annot) { - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/riichimahjong/220818-0132/img/mahjongg_japan_annot.png"); -} -:is(.bgagame-sevenwondersduel, .dijitTooltip) :is(.swd_title, .coin > span) { - color: #000; -} -.bgagame-sixtyone :is(.sxt_leave, .sxt_location) { - color: #000; -} -.bgagame-splashdown .sd_playerinfo_icon, -.bgagame-splashdown .lilypad, -.bgagame-splashdown .fly, -.bgagame-splashdown .frog, -.bgagame-splashdown .possibleMove { - background-image: url(https://x.boardgamearena.net/data/themereleases/current/games/splashdown/230808-1947/img/tokens.png); -} -.bgagame-takaraisland .woundtoken { - background-image: url(https://x.boardgamearena.net/data/themereleases/current/games/takaraisland/170709-1847/img/wound.png); -} -:is(.bgagame-thegnomesofzavandor, .dijitTooltip) :is(.helper, .helper2) { - color: #000; -} -.bgagame-tickettoride .train-car-group-counter { - -webkit-text-stroke: 3px #000; -} -.bgagame-tobago .clue_card { - background-image: url(https://x.boardgamearena.net/data/themereleases/current/games/tobago/190401-1859/img/clue_cards.png); -} -.bgagame-tobago .hut { - background-image: url(https://x.boardgamearena.net/data/themereleases/current/games/tobago/190401-1859/img/hut.png); -} -.nex_plname { - color: #000; -} -.nex_metropad { - background-blend-mode: multiply; - background-color: #b0b0b0; - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/nextstation/220831-1241/img/mainpad_back.jpg"); -} -.nex_scorepad { - background-image: url("https://x.boardgamearena.net/data/themereleases/current/games/nextstation/221221-2031/img/scorepad.jpg"); -} -.tactic-card .card-text { - color: #404040; -} -.tundra .dijitTooltipContainer { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAYAAAA7zJfaAAAAIklEQVQIW2OQl5f/zwAm5OTkyCFkZWX/MxBByMjI/GeAEwB0riA1hmHf7AAAAABJRU5ErkJggg=="); -} - -IGNORE INLINE STYLE -.bgagame-riftvalleyreserve :is(.rvr-rift, .rvr-stop, .rvr-svg-border) - -================================ - -boardgamegeek.com - -CSS -.legacy button, -.legacy input, -.legacy optgroup, -.legacy select, -.legacy textarea { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -boincstats.com - -CSS -#sidebar { - background-image: none !important; -} - -================================ - -bol.com - -CSS -.skeleton-image[loaded] .skeleton-image__img, -.subcategory-entrances .image-card__image img, -.day-deal__image .img { - mix-blend-mode: normal !important; -} - -================================ - -bol.de - -CSS -.tm-artikelbild-wrapper { - z-index: 0 !important; -} - -================================ - -bonfire.com - -INVERT -.sw-Logo - -================================ - -book.douban.com - -IGNORE IMAGE ANALYSIS -.bigstar50 -.bigstar45 -.bigstar40 -.bigstar35 -.bigstar30 -.bigstar25 -.bigstar20 -.bigstar15 -.bigstar10 -.bigstar05 -.bigstar00 -.allstar50 -.allstar45 -.allstar40 -.allstar35 -.allstar30 -.allstar25 -.allstar20 -.allstar15 -.allstar10 -.allstar05 -.allstar00 -.rating -.starb -.collectors - -================================ - -booking.com -*.booking.com - -INVERT -span[data-testid="header-logo"] -.bui-calendar__control -.-iconset-close -.-iconset-navarrow_left -.-iconset-navarrow_right -.security-popup_close -.sort_more_options__button -.mb-ico -.-iconset-review_great -.-iconset-review_poor -.-iconset-chat_bubbles -.location_section_icon -.hp-date-picker-icon -.-streamline-info_sign -.-streamline-person -.-streamline-chat_bubbles -.hp-policies-calendar-icon -.-iconset-moon_crescent - -CSS -#ss { - background-position: 16px center !important; - background-repeat: no-repeat !important; - background-size: 20px !important; -} - -================================ - -booking.uz.gov.ua - -CSS -td:has(img[alt=QR]) { - background-color: white !important; -} - -================================ - -books.google.* -books.google.*.* - -INVERT -.jfk-button-img - -================================ - -books.googleusercontent.com - -INVERT -reader-rendered-page.-gb-image > img - -CSS -reader-rendered-page.-gb-text { - filter: none !important; -} - -================================ - -books.zoho.eu - -CSS -.scrollbox { - background: none !important; -} - -================================ - -boredpanda.com - -INVERT -.logotype - -================================ - -boringcompany.com - -CSS -.tweak-overlay-parallax-enabled .Parallax-item { - z-index: 1 !important; -} - -================================ - -bostonacoustics.com - -INVERT -img[alt="logo"] - -================================ - -bowerswilkins.com - -INVERT -.logo - -================================ - -boxberry.ru - -INVERT -.slider__image -img[src$="cancel.png"] -.box_img_block -img[src$="Vector.png"] -ymaps[class$="ground-pane"] -ymaps[class$="svg-icon-content"] > ymaps - -================================ - -bpmn.io - -IGNORE INLINE STYLE -.djs-visual > *:not(text:not(rect + text)) - -================================ - -br.de - -CSS -article h4, -article h3, -article p, -article .css-lip0i6, -article h5, -.asso-gtm, -.css-18ckx31 { - color: ${#323232} !important; -} -article, -article section, -article footer, -.css-1fzo8jw, -.css-efdc07, -article .css-fhbsai, -main h3, -section.css-3copat section { - background-color: ${white} !important; -} - -================================ - -brack.ch - -CSS -body, -body > header, -.popover, -.popover-body { - background: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} -.list-group-item, -.modal-content { - background: var(--darkreader-neutral-background) !important; -} -a:not(.product__category):not(:hover) { - color: var(--darkreader-neutral-text) !important; -} -.bhaal1Vl:hover, -.bhauyhAt:hover { - color: ${black} !important; -} - -================================ - -brainly.com - -INVERT -.brn-rich-content > p > img - -================================ - -brainly.pl - -INVERT -[id^="TexFormula"] -div.brn-qpage-next-answer-box__content > div > div > div img:not(.brn-qpage-next-attachments-viewer-image-preview__image) - -================================ - -brave.com - -CSS -section + img { - display: none !important; -} - -================================ - -breadfinancial.com - -INVERT -.header-wrapper__logo - -================================ - -breitbart.com - -INVERT -#FootW #FWI p .parler - -================================ - -brightspace.avans.nl - -CSS -:root { - --darkreader-bg--d2l-dropdown-background-color: #1D1F20; -} - -================================ - -brightspace.rug.nl -brightspace.com -brightspace.algonquincollege.com - -CSS -:root { - --d2l-dropdown-background-color: var(--darkreader-neutral-background) !important; - --d2l-menu-background-color: var(--darkreader-neutral-background) !important; - --darkreader-bg--d2l-dropdown-background-color: var(--darkreader-neutral-background) !important; - --darkreader-bg--d2l-menu-background-color-hover: var(--darkreader-selection-background) !important; - --darkreader-border--d2l-menu-border-color: var(--d2l-color-tungsten) !important; -} -d2l-card { - background-color: var(--darkreader-neutral-background) !important; - border-color: var(--d2l-color-tungsten) !important; - color: var(--darkreader-neutral-text) !important; -} -.d2l-msg-container { - border: none !important; -} - -================================ - -brilliant.org - -INVERT -[class*="b-sprite-landing"] -[class*="b-sprite-publishers"] -.logo - -================================ - -broadcom.com - -INVERT -#header .navBrand .navbar-brand - -================================ - -browser.kagi.com - -INVERT -img[src="public/images/checkmark.svg"] -img[src="public/images/cross.svg"] - -================================ - -browserleaks.com - -CSS -body { - background-image: none !important; -} - -================================ - -brucebase.wikidot.com - -CSS -.yui-nav li em { - background-color: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} -.yui-nav .selected a em { - background-color: var(--darkreader-selection-background) !important; - color: var(--darkreader-selection-text) !important; -} - -================================ - -bsi.bund.de - -INVERT -.c-branding__logo - -CSS -.c-intro { - z-index: 0 !important; -} - -================================ - -buffer.com - -IGNORE INLINE STYLE -div[class^="style__LogoWrapper"] * - -================================ - -bugreplay.com - -INVERT -.br-logo - -================================ - -bugs.chromium.org - -INVERT -hr -canvas -.dialog-content -input[type="date"] -div[class$="MuiMobileStepper-dot"]:not(div[class*="MuiMobileStepper-dotActive"]) - -CSS -:root { - --chops-accessible-border: var(--chops-normal-border) !important; - --chops-blue-50: #032742 !important; - --chops-blue-75: #021524 !important; - --chops-blue-gray-25: #1f1f1f !important; - --chops-card-details-bg: #1a1a1a !important; - --chops-choice-bg: #242628 !important; - --chops-gray-200: #1e1e1e !important; - --chops-gray-300: #4a4a4a !important; - --chops-gray-400: #3f3f3f75 !important; - --chops-gray-700: #989898 !important; - --chops-gray-700-alpha: hsla(0, 0%, 100%, 0.62) !important; - --chops-gray-900: var(--chops-primary-font-color) !important; - --chops-normal-border: 1px solid #3f3f3f75 !important; - --chops-orange-200: #6f4106 !important; - --chops-orange-50: #342213 !important; - --chops-primary-font-color: var(--darkreader-selection-text) !important; - --chops-table-header-bg: #1c1c1c !important; - --chops-white: #161616 !important; - --darkreader-bg--chops-active-choice-bg: #06243b !important; - --darkreader-bg--chops-blue-gray-25: var(--chops-blue-gray-25) !important; - --darkreader-bg--chops-page-bg: var(--chops-white) !important; - --darkreader-bg--chops-primary-button-bg: #003078 !important; - --darkreader-bg--chops-white: var(--chops-white) !important; - --darkreader-border--chops-accessible-border: var(--chops-normal-border) !important; - --darkreader-border--chops-blue-100: #1b6099 !important; - --darkreader-border--chops-checkbox-color: transparent !important; - --darkreader-border--chops-gray-200: var(--chops-blue-gray-25) !important; - --darkreader-border--chops-normal-border: var(--chops-normal-border) !important; - --darkreader-border--mr-search-bar-border: var(--chops-normal-border) !important; - --darkreader-text--chops-blue-700: var(--chops-blue-700) !important; - --darkreader-text--chops-link-color: var(--chops-blue-700) !important; - --darkreader-text--chops-primary-icon-color: #909090 !important; -} -body { - background: none !important; -} -html { - background-color: var(--chops-white) !important; -} -.metadata-container, -mr-issue-header { - background: #141c14 !important; -} -#maincol > h3, -#maincol > div > h3 { - background: #252525 !important; -} -.results th { - border-color: var(--chops-white) !important; -} -input#searchq:not(input[name="member_default_query"]) { - border-bottom: 1px solid #292929 !important; - border-top: 1px solid #292929 !important; -} -input, -select, -textarea, -fieldset, -.MuiOutlinedInput-root:hover > fieldset { - border-color: #3f3f3f75 !important; - color: var(--darkreader-neutral-text) !important; -} -select:not(select[aria-label="Search scope"]), -select > *, -textarea:not(.css-66dh3a-MuiInputBase-input-MuiInput-input), -input[type="text"]:not(*:is(input[placeholder$="issues..."], input[name*="Hotlist"])) { - background-color: #262626 !important; -} -#wordmark { - color: #822 !important; -} -#editForm > .star-line { - border: 1px solid var(--chops-orange-200) !important; -} -#star, -.jss24, -.jss12 > div > span, -.jss63.jss64, -.jss61 > span:nth-child(2), -div[class^="MuiDialogActions-root"] > button { - color: var(--chops-blue-700) !important; -} -.__crdxFeedbackButton::after { - color: #afafaf !important; -} -img[title="chromium"], -img[title="v8"] { - filter: invert(100%) hue-rotate(180deg) contrast(83%) !important; -} -img[title="skia"] { - filter: invert(100%) hue-rotate(180deg) contrast(87.5%) !important; -} -.select-container i { - z-index: 4 !important; -} -.select-container select { - background: #1e1e1e !important; -} -.dialog-content { - background: #f5f5f5 !important; - box-shadow: rgba(255, 255, 255, 0.4) 0px 3px 20px 0px !important; -} -button[title^="Don't show"] { - color: var(--darkreader-text--chops-primary-font-color) !important; -} -chops-dialog *:is(i, th, td) { - border-color: transparent !important; - color: #22201f !important; -} -.preview { - border: 2px solid rgb(24, 58, 114) !important; -} -.preview:hover { - border-color: #034587 !important; -} -table > tbody:not(:has(tr[draggable="false"])) th { - border-color: #161616 !important; -} -input#filter, -input[name="newHotlistName"], -input[type="date"] { - background-color: #e3e3e3 !important; - border: 1px solid #d9d9d9 !important; - border-radius: 2px !important; - color: black !important; -} -#issueHotlistsForm label { - color: black !important; -} -#issueHotlistsForm chops-button[class="emphasized"] { - background-color: #70a9fe !important; -} -#issueHotlistsForm chops-button[class*="de-"] { - background: transparent !important; -} - -IGNORE INLINE STYLE -.star -#user_star - -================================ - -bugs.mojang.com - -INVERT -#logo - -================================ - -bugs.python.org - -INVERT -img[title="has PR"] -img[title="GitHub"] - -================================ - -build-electronic-circuits.com - -INVERT -.tutorial-intro -.tutorial-intro > * - -CSS -.page-todo-list { - background-color: rgb(109, 85, 9) !important; -} - -================================ - -bulbagarden.net - -CSS -body { - background-image: none !important; -} - -================================ - -bulk.com - -INVERT -.swatch-attribute.bp_size .swatch-option::before - -CSS -.swatch-attribute.bp_size .swatch-option.selected::after { - filter: none !important; -} - -================================ - -bulldogjob.pl - -INVERT -img[alt~="Bulldogjob"] -img[src="/bulldog.guide.svg"] -img[src="/bulldog.tte.icon.svg"] - -================================ - -bulldogjob.pl/proxied/job-offers - -IGNORE IMAGE ANALYSIS -* - -================================ - -burmester.de - -INVERT -.header-logo - -================================ - -burnaware.com - -INVERT -img[alt="Burnaware"] - -================================ - -businessinsider.com -businessinsider.com.au -businessinsider.com.pl -businessinsider.co.za -businessinsider.es -businessinsider.jp -businessinsider.mx -insider.com -it.businessinsider.com - -INVERT -.account-text-not-logged-in -.article-share_buttons -.brand -.brands-logo -.drawer-heading.headline-bold -.f-footer-logo -.f-header-logo -.f-header-editionLabel -.footer_logo-bi -.footer_social-links -.header-logo -.ins-drawer-button-area -.ins-drawer-vertical-link -.loginbar-icon-people svg -.logo -.logo-primary -.logo-pair-wrapper -.masthead-icon -.menu-search-icon -.menu-lang-icon -.navSocial-item -.navbar-brand -.net-social -.network-toggle -.new-menu-logo -.p-post-contentPrimeEntryPrice -.search-btn -.site-logo -.social-container -.social-icons > .social -.socialmedia-icon-list -.verticals-listitem-label -a[title="Business Insider España"] -a[id="menu-hamburger-button"] -a[href="/szukaj"] -button[class*="drawer-dropdown-button"] -button[class="unbutton"] > img -div[class*="footer__LogoWrapper"] -div[class*="footer__SocialWrapper"] -div[class*="header__Wrapper"] -section[class*="brands-social"] - -================================ - -businesswire.com - -INVERT -body > header div:first-child - -CSS -#bw-home { - background-image: none !important; -} - -================================ - -buy.stripe.com - -INVERT -img.Icon - -CSS -:root { - --darkreader-bg--border-box-shadow: 0 0 0 1px ${#c0c0c0}, 0 2px 4px 0 ${rgba(0,0,0,0.07)}, 0 1px 1.5px 0 ${rgba(0,0,0,0.05)}; - --darkreader-bg--border-box-shadowless: 0 0 0 1px ${#c0c0c0}; - --darkreader-bg--checkout-gray800: ${hsla(0,0%,10%,0.9)}; -} -[style*="background-color: rgb(18, 26, 31)"], -.App-Container:has(.App-Background[style*="background-color: rgb(18, 26, 31)"]) { - background-color: black !important; -} - -================================ - -buzzsprout.com - -INVERT -.icon_edit -.icon_stats -.icon_share - -================================ - -byte.com - -CSS -.description.show { - z-index: 0 !important; -} - -================================ - -c60.la.coocan.jp - -CSS -body { - background-image: none !important; -} - -================================ - -cabinet.tax.gov.ua - -INVERT -cb-header-public div.logo-add a div.icon - -================================ - -cad.onshape.com - -INVERT -.os-svg-icon -.os-form-field-container - -CSS -.os-svg-icon { - filter: grayscale(1) brightness(0.6) contrast(5) brightness(1.5) !important; -} -.os-panel-selector-button { - border-color: transparent !important; -} - -================================ - -caddy.community - -INVERT -.logo-big - -================================ - -caddyserver.com - -INVERT -#logo -#zerossl-logo -#footer-logo - -CSS -.hero { - background-image: none !important; -} - -================================ - -cadence.com - -INVERT -.logo - -================================ - -caf.fr - -CSS -#theme-contenu-cnaf .row[class*="conteneur-"][class*="-cnaf"] > [class*="col-"], -#theme-contenu-menu-background-cnaf { - background-image: none !important; -} - -================================ - -caiyunapp.com - -INVERT -#icon_current -#logo-name[src="/imgs/logo/logo-website.png"] -#map_canvas - -================================ - -cake.avris.it - -CSS -line[style*="stroke: black"], -polygon[style*="stroke: black"] { - --box-a: 0.1 !important; - stroke: white !important; -} -text { - fill: white !important; -} - -IGNORE INLINE STYLE -* - -================================ - -caldigit.com - -CSS -.elementor-widget-heading .elementor-heading-title[class*="elementor-size-"] > a { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -calendar.google.com - -INVERT -div[style*="gm_add_black"] -img[src$="google_gsuite"] -.wRfGxb > svg > path:first-child - -CSS -div[role="checkbox"] > div > div > div { - border: 1px solid ${black} !important; -} -div[role="dialog"] div[role="slider"][data-saturation] div:nth-child(2) { - background-image: linear-gradient(to right,#fff 0%,rgba(255,255,255,0) 100%) !important; -} - -IGNORE INLINE STYLE -div[role="checkbox"] -div[role="dialog"] div[role="slider"] -div[role="dialog"] div[role="slider"] div[style] -div[role="dialog"] div[role="button"][data-contrast] - -================================ - -calibre-ebook.com - -IGNORE IMAGE ANALYSIS -.tooltip -#content-wrapper - -================================ - -calvinklein.us - -INVERT -.star:not(.star-active) -.star-half - -================================ - -canakit.com - -INVERT -#homePageIcon - -================================ - -candidates.ibo.org - -INVERT -img#ibLogo - -================================ - -canva.com - -INVERT -#__next > div > section > div[style^="background-color"] -img[src*="category-public.canva.com/icons/"] - -CSS -._8aslVA svg path { - fill: ${black} !important; -} - -================================ - -canvas.*.edu - -INVERT -.file_download_btn -.ic-DashboardCard__action-badge - -CSS -textarea[class*="-textArea"], -[class*="numberInput_input"] { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -canvas.usask.ca - -CSS -#questions .text img { - background-color: currentColor !important; -} - -================================ - -caramba-switcher.com - -INVERT -.t996__cover - -================================ - -cargurus.com - -CSS -select > option, -select > optgroup, -select > optgroup > option { - background-color: var(--darkreader-neutral-background) !important; -} -.homepage.redesign .ddC2dBanner .ddBannerSection .ddBannerSectionFigure .ddBannerSectionFigureWrapper { - background-image: url(https://static-assets.cargurus.com/images/site-p2p/homePageBanner/DD_Mobile_606bb2f4286d575e9a21b2f3ac776e8dd33d0deccf409fe1598859361ce63c05.png) !important; -} - -================================ - -carmax.com - -CSS -.recall__placeholder, -.vehicle-history__placeholder { - background-color: ${yellow} !important; -} -#recall .recall__header *, -#recall .recall--link span { - color: #2a343d !important; -} -#recall svg, -.vehicle-history__placeholder .vehicle-history a svg { - fill: #053361 !important; -} -#recall a, -.vehicle-history__placeholder .vehicle-history a { - color: #004487 !important; -} - -================================ - -castbox.fm - -INVERT -.nav-item.right.msg -.nav-item.right.upload -.nav-item.right.search -.userNav-img[src="https://s3.castbox.fm/webstatic/images/userIcon.06c408dc.png"] -.heart -.playbackRate.timing.icon - -================================ - -castos.com/player/ - -INVERT -.playback__controls -button[class="player-btn__speed"][aria-label="Playback Speed"] -.play-pause-controls - -================================ - -catalog.update.microsoft.com - -CSS -#headerBox, -#searchButtonBox, -#searchGlowBottomBox, -#searchGlowPart4aBox, -#searchGlowPart4bBox, -#searchGlowPart8aBox, -#searchGlowPart8bBox, -#searchGlowTopBox, -.ResultsHeaderTD, -.dialogBody, -.mainBody, -.mainBodyHome, -.tabInactive { - background-image: none !important; -} - -================================ - -catit.com - -CSS -.gb-inside-container { - text-shadow: ${white} 1px 1px 0px !important; -} - -================================ - -catt.rs/en/latest - -CSS -code.literal { - background-color: unset !important; -} - -================================ - -cbpp.org - -INVERT -.navbar-brand - -================================ - -cbsnews.com - -CSS -.content__read-more { - color: var(--darkreader-neutral-color) !important; -} - -================================ - -cdaction.pl - -INVERT -a[href="/"] svg -footer > div > svg - -================================ - -cdc.gov - -INVERT -.cdc-logo path[fill="#000"] -img[src="/niosh/images/si-no-left-vp4.png"] - -================================ - -cdimage.ubuntu.com - -INVERT -.p-navigation__logo - -CSS -#main { - background-image: none !important; -} - -================================ - -cdn5.dcbstatic.com - -CSS -#image942Img { - display: none !important; -} -li { - list-style-image: none !important; - list-style-type: circle !important; -} - -================================ - -cdn77.com - -INVERT -a[class^="Nav_logo"] - -================================ - -cdp.contentdelivery.nu - -CSS -body { - background-image: none !important; -} - -================================ - -cdrtools.sourceforge.net - -CSS -body { - background-image: none !important; -} - -================================ - -celio.com - -INVERT -.ec_account__user -.ec_header__logo -.ec_minicart__user -.ec_search__link -.ec_store__locator - -================================ - -celum.ssg-service.com - -CSS -body:hover { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -ceneo.pl - -INVERT -[data-new-icon]::before -.cat-prod-row__product-link::after -.add-to-favorite::after - -IGNORE IMAGE ANALYSIS -[data-new-icon="basket"]::before -[data-new-icon="heart"]::before -[data-new-icon="user"]::before - -================================ - -center-pf.kakao.com - -CSS -.box_bubble .txt_chat { - color: rgb(255 255 255); -} - -================================ - -central.proxyvote.com - -INVERT -.custom-control-label::after - -================================ - -centrum24.pl - -INVERT -#mobile-applications .jumbotron -.headerLogo.bankLogo -img[src*="close-black.svg"] -img[src*="GOALS.png"] -.mc-close-x-button-svg - -================================ - -centrumxp.pl - -INVERT -.badge-partner -.img-responsive - -================================ - -cfos-emobility.de - -CSS -.navbar { - background-image: none !important; -} - -================================ - -cfos.de - -CSS -div[style*="keyboard-light.jpg"], -div[style*="organizer-light.jpg"], -div[style*="data-center-light.jpg"], -div[style*="speed-dial-light.jpg"] { - background-image: none !important; -} - -================================ - -changkun.de - -CSS -.content h2, -h3 { - z-index: 0 !important; -} - -================================ - -charitynavigator.org - -INVERT -img[alt="Charity Navigator Logo"] - -================================ - -chase.com - -INVERT -.single-logo-icon - -CSS -.menu-button-item { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -chat.google.com - -CSS -:root { - --pkw-background: var(--darkreader-neutral-background) !important; -} - -================================ - -cheapshark.com - -CSS -.header { - border-top: 10px solid #000 !important; -} - -================================ - -check.spamhaus.org - -INVERT -.gradient-yellow -header .curve -header .logo - -================================ - -checkout.minecraft.net - -IGNORE INLINE STYLE -symbol#esrb [fill="#000"] -symbol#esrb [fill="#fff"] - -================================ - -chem.libretexts.org - -INVERT -.internal - -================================ - -chess-results.com - -INVERT -.FarbewT - -================================ - -chessprogramming.org - -INVERT -.mw-parser-output div[class^='float'] > a > img:not(.thumbimage):not(.thumbborder) -.mw-wiki-logo - -IGNORE IMAGE ANALYSIS -.mw-wiki-logo - -================================ - -chilkatsoft.com - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -chinadigitaltimes.net - -INVERT -.show-menu-button span - -CSS -#main-header-wrapper { - background-image: none !important; -} - -================================ - -chinauos.com - -INVERT -.brand - -CSS -.choose { - background-image: none !important; -} - -================================ - -chipotle.com - -INVERT -.banner-title -.banner-subtitle -.banner-legal - -================================ - -christinamin9-ancientromancivilisation.weebly.com - -CSS -.landing-page #main-wrap, -.tall-header-page #main-wrap, -.short-header-page #main-wrap, -.no-header-page #main-wrap { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -chromeenterprise.google - -INVERT -#post-linkedin -.ce-accordion--caret -.glue-carousel__navigation > li -.ce-device-card__details-title--icon -img[src*="hackerone"] -img[src*="blackberry"] -img[src*="samsung-knox"] -img[src*="paloalto"] -img[src*="onelogin"] -img[src*="splunk"] -img[src*="climate"] -img[src*="topcoder"] -img[src*="bailey-nelson"] -img[src*="colgate"] -img[src*="square"] -img[src*="getty-image"] -img[alt*="romevo"] -img[alt="Pythian"] -img[alt="Amazon"] -img[alt="Softbank"] -img[alt="Cameyo"] -img[alt="Citrix"] -img[alt="Nutanix Frame"] -img[alt="Dustin"] - -CSS -img[alt="Onix"], -img[alt="USEN"], -img[alt="Inmac"], -img[src*="first-ipo"], -img[src*="compass-group"], -img[src*="doctor-dot-com"], -img[src*="devoted-health"], -img[alt*="See how people"] { - filter: invert(15%) !important; -} -#how-to-buy { - background-color: var(--darkreader-background-neutral) !important; -} - -================================ - -chromestatus.com - -INVERT -sl-icon - -CSS -* { - --button-color: ${black} !important; - --card-background: --darkreader-background-neutral !important; - --md-gray-700-alpha: var(--darkreader-text--default-color) !important; -} -header > aside > hgroup > a > h1, -section.card, -header#header[part=header], -p.description { - color: var(--darkreader-text--default-color) !important; -} -chromedash-roadmap-milestone-card { - background-color: var(--darkreader-background-neutral) !important; -} -section.release { - background-color: transparent; -} -div.nav-dropdown-container > ul { - background: grey !important; -} - -================================ - -chtoes.li - -INVERT -.illustration -.menu-page -.menu-item - -================================ - -churchofjesuschrist.org - -INVERT -svg - -CSS -.container, -#PFmainFooter { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -ci.appveyor.com - -CSS -select { - background-image: none !important; -} - -================================ - -cinedrome.ch - -CSS -body { - background-image: none !important; -} - -================================ - -circleci.com/docs - -CSS -body { - background-image: none !important; -} - -================================ - -circuit-diagram.org - -INVERT -.components-list .item .image - -================================ - -cisce.org - -INVERT -.nav-wrapper -hgroup - -================================ - -citilink.ru - -INVERT -div[class$="RatingDetail__progress_active"] - -CSS -.OldPageLayout { - color: var(--darkreader-neutral-text) !important; -} - -IGNORE INLINE STYLE -.Icon - -================================ - -cityam.com - -INVERT -.site-logo__image -.menu-item a::before - -================================ - -citybuzz.pl - -INVERT -img[alt="CityBuzz"] - -================================ - -citymapper.com - -INVERT -#map - -================================ - -classroom.google.com - -INVERT -img[src$="dark_create_class_arrow.svg"] -img[aria-label="YouTube"] -div[role="dialog"] ~ div[role="menu"] > div[role="menuitem"] > div > div:not([style*="background-image"]) - -CSS -div[role="toolbar"] div[role="button"] > div[class*='-']:not([onclick]):not(:link):not(:visited):not([style*="background-image"]):first-child, -div[role="toolbar"] div[role="button"] > div[class*='-']:not([onclick]):not(:link):not(:visited) > :nth-child(2) > div, -div[style="bottom: 0px;"] > div[style^="opacity:"] div[role="button"] > div:not([onclick]):not(:link):not(:visited), -li[guidedhelpid="classworkTopicListGh"]:not(hover) > div { - opacity: 99% !important; -} - -================================ - -claude.ai - -INVERT -img[src="/anthropic_app_icon.png"] - -CSS -.bg-gradient-to-b { - background-image: linear-gradient(to bottom, hsl(var(--darkreader-neutral-background)/1), hsl(var(--darkreader-neutral-background)/0)) !important; -} - -================================ - -cleantechnica.com - -CSS -body { - background-color: #1d1e1f !important; - background-image: none !important; -} - -================================ - -clever.com - -CSS -img[alt="i-Ready icon"], -img[alt="Google Meet icon"], -img[alt="Google icon"] { - background-color: white !important; -} -.background-container { - z-index: 1 !important; -} - -================================ - -click.endnote.com - -INVERT -img[src="/static/images/settings/web-of-science.png"] - -================================ - -click.endnote.com/viewer?doi= - -INVERT -canvas - -================================ - -clients.servarica.com - -INVERT -.logo - -================================ - -cloud.databricks.com -pages.databricks.com -*.azuredatabricks.net - -INVERT -.figure -#sparkui-iframe-body #plan-viz-graph svg g.cluster rect -#sparkui-iframe-body #plan-viz-graph svg g.node rect -.monaco-editor .cursors-layer .cursor - -CSS -text { - fill: ${black}; -} -.cm-string { - color: rgb(132, 179, 235) !important; -} -.cm-keyword { - color: rgb(232, 121, 172) !important; -} -.cm-variable-2 { - color: rgb(97, 215, 255) !important; -} -li.CodeMirror-hint { - font-family: Source Code Pro, Menlo, monospace; -} -span[role="presentation"] { - color: ${black} !important; -} -.CodeMirror-cursor { - border-left-color: ${black} !important; -} -.ansiout { - color: ${rgb(85, 85, 85)} !important; -} -.rm-modal { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -cloud.digitalocean.com - -CSS -.sc-cwHptR, -.sc-eBMEME, -.sc-tNXst, -.sc-kOPcWz, -.sc-DRugm, -.sc-dtBdUo, -.sc-dJiZtA, -.sc-bMCYpw, -.js-input, -.ember-text-field { - background-color: inherit !important; -} -.sc-uVWWZ { - background-color: ${#dfe0e0} !important; -} -input[type="text"], -input[type="text"]::placeholder { - color: var(--darkreader-neutral-text) !important; -} -.action-item { - color: var(--darkreader-neutral-text) !important; -} -.sc-cbPlza::before, -.sc-gHCuMn::before, -.sc-itktkY::before, -.sc-dnreFw::before, -.sc-hnCoju::before, -.sc-eRdibt::before, -.sc-jcdlHQ::before { - background: none !important; - background-color: var(--darkreader-neutral-background) !important; -} -.sc-hmdomO[data-active-item=""] { - background-color: ${#d0d3d3} !important; -} -.sc-gRtvSG { - background-color: ${#e2e3e3} !important; -} - -================================ - -cloudflare.com - -CSS -.cover { - background-image: none !important; -} - -IGNORE INLINE STYLE -.footer-bottom-row-margin > div > a > svg > path - -================================ - -cloudhostnews.com - -INVERT -.site-title - -================================ - -cloudinfrastructuremap.com - -INVERT -canvas.mapboxgl-canvas - -================================ - -cloudlinux.com - -INVERT -img.mega-menu-logo - -================================ - -cloudways.com - -INVERT -.md-button.md-primary.md-raised - -================================ - -cnbc.com - -INVERT -.RenderKeyPoints-list li::before -.WatchLiveRightRail-logo - -CSS -div[class^="FeaturedStories-styles-makeit-background"]::before { - opacity: 0.1 !important; -} - -================================ - -cnki.net - -INVERT -.hello-yx-box -.klogin_header_Logo -.search-main > .input-box > .search-btn -.Logo - -CSS -.foot-top { - background-image: none !important; -} -.hello-yx-box { - color: var(--darkreader-neutral-background) !important; -} - -================================ - -cnn.com - -INVERT -[data-test="section-link"] > svg:not(.business-logo-icon) -img.metadata-header__logo - -CSS -#header-nav-container::before { - border-bottom-color: transparent !important; -} - -IGNORE INLINE STYLE -svg.cnn-badge-icon -svg.cnn-badge-icon > rect -svg.politics-logo-icon -svg.business-logo-icon - -================================ - -cnnews.chosun.com - -INVERT -.logo - -================================ - -cobaltstrike.com -cobalt-strike.github.io - -INVERT -.navbar-brand - -================================ - -code.qt.io - -INVERT -td[class="logo"] -select -input - -================================ - -code.visual -io.com - -INVERT -img[src="/assets/icons/download_dark.svg"] - -CSS -.home.linux .jumbotron .screenshot { - background-image: url("/assets/home/home-screenshot-linux.png"); - padding-bottom: 82.65802%; -} -@media only screen and (min-width: 1200px) { - .home.linux .jumbotron .screenshot { - background-image: url("/assets/home/home-screenshot-linux-lg.png"); - padding-bottom: 68%; - } -} - -================================ - -codeberg.org -codeberg-test.org - -CSS -main header .header-background-image { - filter: brightness(50%) sepia(40%) !important; -} -main header .header-title { - z-index: 1 !important; -} - -================================ - -codecademy.com - -INVERT -.CodeMirror-cursors -.CodeMirror-selected -span[class^="burger"] -.cursor-solid - -================================ - -codeforces.com - -INVERT -#header > div:first-child img -#userActivityGraph rect[data-items=""] -.delete-resource-link -.action-link img -.non-decorated img[src$="tablesorter-bg.gif"] -.tex-formula - -CSS -.datatable, -.datatable > div, -.roundbox { - border-radius: 6px; -} -.lt, -.rt, -.lb, -.rb, -.ilt, -.irt, -.roundbox-lt, -.roundbox-rt, -.roundbox-lb, -.roundbox-rb { - display: none; -} -.backLava, -.leftLava { - border-radius: 4.5px; -} -.backLava, -.leftLava, -.bottomLava, -.cornerLava { - background: ${#BEBEBE} !important; -} -.sidebar-menu ul li { - border-color: transparent !important; -} -.highlighted-row td, -.highlighted-row th { - background-color: ${rgb(195, 205, 215)} !important; -} -#footer img[alt="TON"] { - border-radius: 50%; -} - -IGNORE INLINE STYLE -#userActivityGraph rect - -================================ - -codewars.com - -INVERT -.logo - -================================ - -codingame.com/ide - -CSS -.cg-statement .statement-body span.var, -.cg-statement .statement-body var { - color: var(--darkreader-neutral-background) !important; -} - -================================ - -codio.com - -INVERT -.cursor - -================================ - -coinbase.com - -CSS -.hjbuvQ, -.kfQbHv { - fill: ${black} !important; -} - -================================ - -coindesk.com - -INVERT -svg[class^="desktop-navigationstyles__StyledLogo"] - -================================ - -coingecko.com - -INVERT -.highcharts-background - -================================ - -colasoft.com - -INVERT -img[alt="Colasoft"] - -================================ - -coliss.com - -CSS -body, -#container3, -#sidebar { - background-image: none !important; -} - -================================ - -color-hex.com - -INVERT -img[src*="logo"] -.bgwhite -.bgwhite > .previewbox - -IGNORE INLINE STYLE -.colordvaline -.colordva -.palettecolordiv - -================================ - -colorhunt.co - -IGNORE INLINE STYLE -.palette > div - -================================ - -colorpicker.me - -IGNORE INLINE STYLE -html -body -button - -================================ - -colors.dopely.top - -INVERT -.footer -.color-selector-icon - -CSS -input.number-slider { - filter: invert(10%) saturate(0%) !important; -} -img[src*="svg"], -.title { - filter: invert(50%) !important; -} -.accountDopely__letter, -.editProfile__changeProfilePicture { - filter: saturate(0%) brightness(50%) !important; -} -div[class*="text"], -a[class*="header"], -.navbar-dropdown-item__logo, -.navbar__listItem__button { - filter: saturate(0%) !important; -} - -IGNORE INLINE STYLE -.ExpandPalette * -.toner-colors-container * -.color-picker - -================================ - -comenius.susqu.edu - -CSS -body, -table, -td { - background-image: none !important; -} - -================================ - -comicfury.com - -CSS -#wrapper { - background-color: inherit !important; - padding-bottom: 10px !important; -} -#footer { - margin-top: 0px !important; -} - -================================ - -comingsoon.net - -CSS -body, -main { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -comixology.com - -INVERT -.comixology-logo -.primary-heading -.heading-content -.try-now -.unlimited-disclaimer - -================================ - -comma.ai - -INVERT -.comma-header-logo -.comma-two-benefit-icon -.comma-landing-reviews-logo - -================================ - -commonvoice.mozilla.org - -INVERT -div:not(.logo-container) > .main-logo -.hero-box .fading -.waves -.mars + .screenshot -#help-links img -.button.outline.rounded.hidden-sm-down img -.text-button.contribute-more-button.secondary path - -CSS -.language-select .current { - --white: var(--darkreader-bg--white) !important; -} - -================================ - -commscope.com - -INVERT -.commscope-logo - -================================ - -community.cloudflare.com - -CSS -:root { - --darkreader-text--primary-medium: ${gray} !important; -} - -================================ - -community.mimecast.com - -CSS -.cb-section_background { - mix-blend-mode: multiply !important; -} - -================================ - -community.notepad-plus-plus.org - -INVERT -.forum-logo - -================================ - -community.ntppool.org - -INVERT -#site-logo - -================================ - -community.progress.com - -CSS -:root { - --lwc-colorContentAreaBackground: var(--darkreader-neutral-background) !important; - --lwc-pageHeaderColorBackground: ${rgb(243, 243, 243)} !important; -} - -================================ - -compass.pressekompass.net - -INVERT -.logo-holder .brand-logo - -IGNORE INLINE STYLE -text - -================================ - -computerhope.com - -INVERT -#text-tool > p > img - -================================ - -computeruniverse.net - -CSS -select.SortByBase_select__uXyP4, -button[class*="Button_headerLightBlue"] { - background-color: #092846 !important; - color: rgb(232, 230, 227) !important; -} -select.SortByBase_select__uXyP4 option { - background-color: rgb(24, 26, 27) !important; -} - -IGNORE IMAGE ANALYSIS -.SortByBase_select__uXyP4 - -================================ - -comsol.com - -INVERT -div.latex -div.Eqn - -================================ - -confectioneryproduction.com - -INVERT -#mainLogo img - -================================ - -confluence.* - -INVERT -.gliffy-text-with-shape-parent-primary -.gliffy-text-with-shape-parent-secondary -.gliffy-text-with-shape-parent-tertiary -.gliffy-text-with-shape-parent-highlight - -CSS -.geDiagramContainer rect, -.geDiagramContainer path { - filter: brightness(60%); -} - -================================ - -consent.yahoo.com - -INVERT -.consent-wizard-body > .image-container > .image.yahoo - -================================ - -console-openshift-console.* - -CSS -.pf-c-dropdown__menu { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -console.cloud.google.com - -CSS -.cfc-ng2-region .cfc-text-title-3 { - color: var(--darkreader-neutral-text) !important; -} -.cfc-color-text-secondary { - color: ${#333} !important; -} -input[type=text] { - color: var(--darkreader-neutral-text) !important; -} -.cfc-outline-focus-indicator { - background: var(--darkreader-neutral-background) !important; -} -.bq-results-table-header-cell { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -consumerlab.com - -INVERT -#overlay-toggle > .collapsed -.header-link-home - -CSS -span[style*="background-color: rgb(255, 255, 0)"] { - background-color: #550 !important; -} - -================================ - -contacts.google.com - -INVERT -img[src*="rotate"] -img[src$="google_gsuite"] - -CSS -img[src^="https://ssl.gstatic.com/social/contactsui/images/emptycontacts/emptycontacts_animation_"], -div > c-wiz[data-p^='%.@.[[1,3'] > div > div > div > div > div:first-child { - filter: invert(93.7%) hue-rotate(180deg) contrast(90.6%) !important; -} - -================================ - -containertoolbx.org - -CSS -body, -img, -video, -iframe { - filter: none !important; -} - -================================ - -convertio.co - -INVERT -.logo svg > :last-child -.api-cta-icon > svg -.logos.no-select > * - -CSS -.softobar.js-softobar, -.footer { - background-color: #1c1f20 !important; -} -.ct-tab { - border-bottom-color: #525252 !important; -} -.footer-sitemap { - border-bottom-color: #3e3e3e !important; -} -.col.copyright > p.logo > a { - color: #9D9488; -} -.col.copyright > p.logo > a > svg > use { - filter: none !important; -} - -================================ - -cookiepedia.co.uk - -INVERT -.main-logo -.footer-logo - -================================ - -coolblue.be -coolblue.nl -hotorangemedia.nl - -IGNORE INLINE STYLE -.header__logo-image > path - -================================ - -coolors.co - -CSS -.generator_color { - color: #fff !important; -} -.generator_color.is-light { - color: #000 !important; -} - -IGNORE INLINE STYLE -#generator * - -================================ - -coopgames.eu - -INVERT -img[alt="Online Co-Op"] -img[alt="Local Co-Op"] -img[title="PS2"] -img[title="PS3"] -img[title="PS4"] -img[title="PSP"] -img[title="PS Vita"] -img[title="DS"] -img[title="3DS"] -img[title="Switch"] - -================================ - -coosp.etr.u-szeged.hu - -INVERT -.latex - -================================ - -copilot.microsoft.com - -INVERT -button[is="cib-button"] svg-icon -button[class$="icon-button"] svg-icon - -================================ - -copitosystem.com - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -copytonotion.com - -INVERT -.inline - -CSS -svg.absolute { - visibility: hidden !important; -} - -================================ - -corriere.it - -INVERT -.footer__content div div img - -================================ - -corsair.com - -INVERT -img.desktop -img[src="/_ui/responsive/common/images/icon_cart_empty.png"] -a.cart-close -input#search-btn -.swatch-white - -================================ - -costplusdrugs.com - -INVERT -img[src$="MCCP-wordmark-denim.png"] - -================================ - -courses.fit.cvut.cz - -CSS -body { - color: #909090; -} -.App.in-search { - background-color: #212121 !important; -} -.UserMenu .user-initials { - background-color: #616161 !important; -} -.CoursesItem .column-info > a:hover { - color: #58c1ffba; -} -header { - background-color: #212121 !important; -} -pre { - color: #a8a6ab; -} -.header { - background: none; - border-bottom: 1px solid #676767; -} -main img { - opacity: 0.8; -} -a { - color: #58c1ffba; -} - -================================ - -covims.org - -INVERT -img[alt="Covims Logo.png"] - -================================ - -cowkrakowie.pl - -INVERT -.logo -.nav-logo - -================================ - -coze.com - -CSS -.semi-spin-children * { - background: none; - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -cplusplus.com - -CSS -#I_mid, -#I_top { - background-image: none; -} -img[src$=".png"] { - background-color: white; -} - -================================ - -cppm3144.itdhosting.de - -CSS -.ppm_button { - background: ${white} !important; -} -.tableContent img { - background-image: url("https://cppm3144.itdhosting.de/niku/ui/uitk/images/odf.png") !important; -} - -================================ - -cpulator.01xz.net - -INVERT -.terminal-cursor -.cm-s-neat span.cm-tag - -CSS -div.dev_uart_term .terminal-cursor { - background: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} -.cm-s-neat span.cm-tag { - color: #006000; -} - -================================ - -cqksy.cn - -INVERT -td[background="image/Index_QI_CenterBar.gif"] - -CSS -table { - background-color: var(--darkreader-neutral-background) !important; -} -td[background="image/Index_QI_CenterBar.gif"], -td[background="image/Index_QI_CenterBar.gif"] a { - color: ${white} !important; -} - -================================ - -crates.io - -IGNORE INLINE STYLE -svg[class^="_logo"] * - -================================ - -creative.com - -INVERT -div.small-logo img.creative-logo -body:not(body[class^="storepage"]) div#all img.creative-logo -.sb-upgrade > h3 -.sb-upgrade > p -.tws-series > h3 -.tws-series > p - -CSS -.input::placeholder { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -creativecommons.org - -CSS -main a { - --underline-background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -creditkarma.com - -INVERT -.navi-logo - -================================ - -crowdin.com - -INVERT -.crowdin-navbar__logo -svg.logo-icon-projects -.file_type -.file_type.file_folder.file_branch -[class*=static-icon] - -CSS -.main-menu-wrapper { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -crunchbase.com - -INVERT -.identifier-nav -.tab-label - -CSS -.mat-tab-label-active { - color: var(--darkreader-neutral-background) !important; -} - -================================ - -crutchfield.com - -INVERT -.logo-module svg - -================================ - -cryptostorm.is - -INVERT -img[src*="lock.png"] -img[src*="storm.png"] - -CSS -body > div { - background-image: none !important; -} - -================================ - -cs61a.org - -CSS -table#calendar td { - border-color: var(--darkreader-neutral-background) !important; -} - -================================ - -css-tricks.com - -CSS -.article-article { - background: ${white} !important; -} - -================================ - -cubawiki.com.ar - -INVERT -.mwe-math-fallback-image-inline -.mwe-math-fallback-image-display - -================================ - -curseforge.com - -IGNORE IMAGE ANALYSIS -.e-generic-header - -================================ - -cutlermaine.net - -CSS -.sqs-block-button-element--medium:hover, -.sqs-block-button-element--large:hover { - background: gray !important; -} - -================================ - -cxp.cengage.com - -INVERT -.owl_item_container img[src*=".gif"] -.ci-feedback img[src*=".gif"] -label img[src*=".gif"] -span.MathJax_SVG g[stroke="black"] - -CSS -.owl_item_container img[src*=".GIF"] { - background-color: ${black}; -} -font[color="white"] { - color: transparent !important; -} -div.tool-container.gradient > .controlButtons { - background-image: none; -} -div.tool-container.gradient { - box-shadow: none; -} - -IGNORE INLINE STYLE -span.MathJax_SVG g - -================================ - -cyberlink.com - -INVERT -.logo_pc - -================================ - -cybernews.com - -IGNORE INLINE STYLE -svg * - -================================ - -cynkra.com - -INVERT -.btn-outline-dark -.shadow -.navbar-dark .navbar-brand -.cynkra-logo-font - -CSS -.btn-outline-secondary { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -cyprus-mail.com - -INVERT -.custom-logo-link - -================================ - -cysgliad.com - -INVERT -img[src*="logo_cysill_arlein_cy.gif"] -img[src*="hysbyseb_arlein.gif"] -div > img.gwt-Image - -CSS -body { - background-image: none !important; -} -div[tabindex] > div { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} -textarea.cysilltextarea { - border: none !important; -} - -================================ - -czasnastopy.pl - -INVERT -.brandinglogo-wrap - -================================ - -czypada.pl - -INVERT -#map - -================================ - -czyztak.pl - -INVERT -img[alt*="Logo"] - -================================ - -d.hatena.ne.jp - -INVERT -img[alt="Hatena Blog Tags"] - -================================ - -d2l.ai - -INVERT -img[src$=".svg"] - -================================ - -daily.afisha.ru - -INVERT -svg[class^="Logo"] -.headline__open -.search-icon -.sprite-search-black-26 -mark - -================================ - -dailydot.com - -INVERT -h1.u-about-pitch - -CSS -svg.main-logo.inline-flex g g[fill="#110133"] { - --darkreader-inline-fill: ${#110133} !important; -} - -================================ - -dailyexpose.uk - -INVERT -.header-image - -================================ - -dailymotion.com - -IGNORE INLINE STYLE -div[class*="logoContainer"] a svg path - -================================ - -dailywritingtips.com - -CSS -blockquote { - z-index: 0 !important; -} - -================================ - -daltonmaag.com - -INVERT -#panel-3 img - -================================ - -danyk.cz - -CSS -body { - background-image: none !important; -} - -================================ - -darcs.net - -INVERT -#header > a > img - -================================ - -darksky.net - -INVERT -.currentLocationButton -.searchButton -span[class^="skycon swip"] -#right-arrow -#left-arrow - -================================ - -dash.cloudflare.com - -INVERT -a[data-testid^="link-homepage"] - -CSS -.monaco-editor-background, -.monaco-editor .margin { - background-color: ${rgb(226 229 231)} !important; -} - -================================ - -dashboard.stripe.com - -CSS -[data-auto-transform-background="true"] { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -dashboard.thechurchapp.org - -INVERT -#ember62 - -================================ - -datacamp.com -*.datacamp.com - -CSS -video#vjs_video_3_html5_api.vjs-tech { - background-color: rgb(175, 175, 175, 0.5); - transform: translate(0px, 0px) !important; -} -.css-hu6jey code { - color: var(--darkreader-neutral-text) !important; - mix-blend-mode: normal !important; -} -.css-hu6jey pre { - color: var(--darkreader-neutral-text) !important; - mix-blend-mode: normal !important; -} -.css-alxior code, -pre { - color: ${#0f0f0f} !important; - mix-blend-mode: difference !important; -} -.css-1ebl8to code, -pre { - color: ${#0f0f0f} !important; - mix-blend-mode: difference !important; -} - -================================ - -daum.net - -CSS -.txt_pctop, -.bg_login { - background-image: none !important; -} - -================================ - -dawn.com - -INVERT -img[alt="Dawn Logo"] - -================================ - -dc.sourceafrica.net - -CSS -body { - background-image: none !important; -} - -================================ - -deadpixeltest.org - -CSS -html { - background-color: transparent !important; -} - -IGNORE INLINE STYLE -body - -================================ - -deadroots.net - -INVERT -#header img - -================================ - -debian.org -*.debian.org -*.debian.net - -INVERT -.community img -img[src*="openlogo-100.jpg"] -img[src*="openlogo-50.png"] -img[src*="openlogo-50.svg"] -img[src*="openlogo-nd-75.png"] - -CSS -body { - background-image: none !important; -} -.header-logged-out { - background-color: transparent !important; -} - -IGNORE IMAGE ANALYSIS -#splash h1 - -================================ - -debijbel.nl - -INVERT -.siteLogo -.filter-item__link > img - -================================ - -decathlon.in - -CSS -img { - mix-blend-mode: normal !important; -} - -================================ - -decathlon.pl - -INVERT -.dkt_logo -.benefit-icon - -IGNORE IMAGE ANALYSIS -* - -================================ - -deccanchronicle.com - -INVERT -img[src$="logo.png"] - -================================ - -decisionproblem.com - -INVERT -.qChip - -CSS -#giftShopDiv { - color: ${white} !important; -} -.projectButton:disabled { - color: ${gray} !important; -} - -================================ - -deepl.com - -INVERT -.dl_translator_link_container > img -.dl_ad_pro__features_item::before -.dl_logo_text -img[class^="productNavigation-module--logoText"] -img#languageSelectorIcon -footer > div > div > div > div > a > img[alt="DeepL"] -div[class^="socialMediaLinks"] > a -div[class^="pageFooterV2-module--socialMediaLinks"] > a - -================================ - -deeplearningbook.org - -INVERT -.opened > img[src] - -CSS -body { - background-color: transparent !important; -} -#page-container { - background-image: none !important; -} - -================================ - -deew.dev - -CSS -[data-darkreader-inline-fill] { - fill: #dcdad7 !important; -} - -================================ - -deezer.com - -CSS -.slider-track .gradient-default { - background-image: linear-gradient(1deg, var(--color-dark-grey-800) 13%, var(--color-white)); -} - -================================ - -defectivebydesign.org - -INVERT -.block--views-repeat-offenders-block .views-row img -img[src*="DRM-free label"] - -CSS -.block--views-repeat-offenders-block { - background: none !important; -} -.site-name a { - background: url('https://www.defectivebydesign.org/sites/all/themes/dbd2/images/dbd-logo.png') top left no-repeat; -} -.l-region--navigation .menu li a, -.l-footer, -.l-footer .block__title { - color: black; -} - -================================ - -deftpdf.com - -INVERT -.header__logo - -================================ - -dell.com - -INVERT -.breadcrumbs -.cat-banner-text -.cfsf-ba-content-wrap -.hpg-cat-item-wrap svg - -================================ - -delphipraxis.net - -CSS -.ipsNavBar_secondary { - background-color: var(--darkreader-neutral-background) !important; -} -.ipsNavBar_secondary::before { - border-bottom-color: var(--darkreader-neutral-background) !important; -} - -================================ - -dennisbareis.com - -CSS -body { - background-image: none !important; -} - -================================ - -deno.land - -INVERT -img[src="/logo.svg"] - -================================ - -dependencywalker.com - -CSS -body { - background-image: none !important; -} - -================================ - -deraktionaer.de - -INVERT -.close-dark - -================================ - -designobserver.com - -INVERT -.dologo - -================================ - -deskmodder.de - -CSS -#secondary { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -desmos.com - -INVERT -.dcg-calculator-api-container .dcg-grapher-2d .dcg-graph-outer[role="img"] -.dcg-calculator-api-container .dcg-grapher-3d - -CSS -html[data-darkreader-scheme="dark"] .dcg-calculator-api-container :is(.dcg-graph-inner, .dcg-webgl-canvas) { - filter: contrast(90%) saturate(200%) !important; -} -.dcg-calculator-api-container .dcg-container.dcg-inverted-colors { - filter: hue-rotate(180deg) !important; -} -.dcg-calculator-api-container .dcg-grapher-3d .dcg-graph-outer { - z-index: 1; -} - -IGNORE INLINE STYLE -.dcg-calculator-api-container .dcg-colored-icon -.dcg-calculator-api-container .dcg-color-swatch - -================================ - -detexify.kirelabs.org - -INVERT -.symbol - -================================ - -dev.azure.com - -CSS -:root { - --nav-header-background: var(--darkreader-neutral-background) !important; -} - -================================ - -dev.dota2.com - -CSS -.navtabs li a.navtab:hover, -.navtabs li.selected a.navtab { - color: black !important; -} - -================================ - -dev.to - -INVERT -img[src$=".svg"] -path[d^="M19.099 23.508c0"] - -CSS -body, -h1, -h2, -h3, -h4, -h5, -h6, -a, -.content-classification-text { - color: $(#e8e6e3) !important; -} - -================================ - -developer.android.com -source.android.com -developer.android.google.cn -tensorflow.org -quantumai.google -cloud.google.com -webrtc.org - -INVERT -.devsite-site-logo - -CSS -:root { - --devsite-background-1: var(--darkreader-neutral-background) !important; - --devsite-background-3: ${#f1f3f4} !important; - --devsite-footer-background: var(--darkreader-neutral-background) !important; - --devsite-header-color-upper: var(--darkreader-neutral-background) !important; - --devsite-inline-code-background: ${#f1f3f4} !important; - --devsite-search-form-background-active: rgba(255, 255, 255, 0.05) !important; - --devsite-searchbox-active: rgba(255, 255, 255, 0.05) !important; - --devsite-searchbox-hover: rgba(255, 255, 255, 0.1) !important; - --devsite-searchbox-inactive: rgba(255, 255, 255, 0.05) !important; - --devsite-table-heading-background: var(--darkreader-neutral-background) !important; -} -devsite-search .devsite-searchbox::before { - background-color: unset !important; -} -.devsite-wrapper, -button { - background-color: inherit !important; - border-color: rgba(255, 255, 255, 0.1) !important; -} -devsite-header .devsite-top-logo-row-wrapper-wrapper, -.devsite-article { - border-color: rgba(255, 255, 255, 0.05) !important; -} -[role="menu"], -.toggle-button, -devsite-book-nav .devsite-book-nav-filter, -.devsite-nav-accordion, -tr, -code, -devsite-code, -devsite-selector, -devsite-selector devsite-tabs[connected], -devsite-recommendations, -devsite-footer-promos .devsite-footer-promos-list, -devsite-footer-utility .devsite-footer-sites, -devsite-footer-linkboxes .devsite-footer-linkboxes-list, -devsite-playlist .devsite-playlist--section-quiz, -devsite-footer-promos { - border-color: rgba(255, 255, 255, 0.1) !important; -} -.devsite-breadcrumb-list { - background: none !important; -} - -================================ - -developer.apple.com - -INVERT -.icon - -CSS -.disabled { - color: ${gray} !important; -} -pre, -.code-listing { - background-color: var(--darkreader-neutral-background) !important; -} - -IGNORE IMAGE ANALYSIS -.screen-hero -.screen-fonts -.screen-tabs -.screen-completion -.screen-swiftui - -================================ - -developer.chrome.com - -CSS -.featured-card__title-bar > svg, -.card-title-bar > svg, -.navigation-rail__icon > svg { - fill: ${black} !important; -} -.search-box__btn > svg { - fill: ${white} !important; -} - -================================ - -developer.mozilla.org - -INVERT -.copy-icon -.bc-browsers > th > span::before -.bc-platforms > th::before -a.external::after -.bc-has-history > .bc-history-link -.ic-footnote -.ic-non-standard -.breadcrumbs-container li .breadcrumb-penultimate::after -.breadcrumbs-container li .breadcrumb::after -ul.main-menu .top-level-entry::before -span.icon -#browser_compatibility + a + figure .icon -.bc-level -.legend-icons - -CSS -.logo-text, -.search-results-list mark { - color: var(--darkreader-neutral-text) !important; -} - -IGNORE IMAGE ANALYSIS -.main-page-content .code-example .copy-icon - -================================ - -developer.roblox.com - -INVERT -.logo - -================================ - -developer.salesforce.com - -CSS -.slds-tabs_card { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -developer.workday.com - -INVERT -.minimap - -CSS -.monaco-editor-background, -.margin { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -developers.arcgis.com - -CSS -a { - text-shadow: none !important; -} - -================================ - -developers.facebook.com - -INVERT -img[alt^="Follow us on "] -img[id="u_0_1e_Fc"] -img[src^="https://scontent.fiev25-1.fna.fbcdn.net/v/t39.2365-6/306317286_5514106962009770_3327930304024114088_n.jpg"] - -================================ - -developers.google.com - -INVERT -.devsite-google-wordmark - -CSS -:root { - --devsite-background-3: ${rgb(198, 198, 198)} !important; - --devsite-breadcrumb-list-background: var(--darkreader-neutral-background) !important; - --devsite-button-background: var(--darkreader-neutral-background) !important; - --devsite-footer-background: var(--darkreader-neutral-background) !important; - --devsite-header-color-upper: var(--darkreader-neutral-background) !important; - --devsite-searchbox-inactive: var(--darkreader-neutral-background) !important; -} -button, -a.button, -.devsite-landing-row-item { - border-color: var(--darkreader-border--devsite-select-border) !important; -} -.pre-style, -code, -pre { - background: var(--darkreader-neutral-background) !important; -} -.devsite-table-wrapper > table > thead > tr > th { - background-color: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} -devsite-selector { - background: var(--darkreader-neutral-background) !important; -} -devsite-book-nav .devsite-nav-title.devsite-nav-active { - background: var(--darkreader-bg--devsite-note-notice-background) !important; -} - -================================ - -devuan.org - -INVERT -#logo - -================================ - -dexie.org - -INVERT -a[href="Download"] -img[src$="logo-dexie-black.svg"] - -================================ - -dhmo.org - -CSS -body { - background-image: none !important; -} - -================================ - -di.com.pl - -INVERT -img[alt*="Dziennik Internautów"] - -CSS -div#naglowek { - background-image: none !important; -} - -================================ - -diamondsdirect.com - -INVERT -[alt="Diamonds Direct Logo"] - -================================ - -dianping.com - -INVERT -.logo - -================================ - -dice.com - -INVERT -dialog input -.seds-button - -CSS -.match-not-logged-in-outer, -.match-not-logged-in-row, -.chip_chip__cYJs6, -.sc-dhi-candidates-modal-2 { - background: var(--darkreader-neutral-background) !important; -} -a.link-label, -.match-not-logged-in-outer a, -.tertiary { - color: var(--darkreader-text--djv-color-dice-blue-dark) !important; -} -.location-display, -.job-employment-type, -.employment-type, -.card, -.time-stamp, -.seds p, -.seds h1, -.seds h2, -.seds h3, -.seds h4, -.seds h5, -.seds h6, -dialog :not(input) { - color: var(--darkreader-neutral-text) !important; -} -dialog input { - color: black !important; -} -.collapsed { - background: linear-gradient(rgba(24, 26, 27, 0) -7%, rgba(24, 26, 27, 0.58) 23%, rgb(24, 26, 27) 45%) !important; -} -.see-more-text { - background-color: #181a1b !important; -} - -================================ - -dicetower.com - -CSS -body { - background-image: none !important; -} - -================================ - -dict.cc - -CSS -#langbar { - background-image: none !important; -} - -================================ - -dictionary.cambridge.org - -INVERT -.cb.hao.lpt-2 -.cb.hv-2.lmr-10 - -================================ - -dictionary.com - -INVERT -.elu13lxtzrRO8E8WYUVn -.tFCOipZXVYJAiob7tOp0 - -================================ - -differencebetween.net - -CSS -body, -#page-wrapper { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -digg.com - -CSS -.digg-story__title-link { - color: ${black} !important; -} -.digg-story__description { - color: ${black} !important; -} - -================================ - -digi.hu - -INVERT -ol.flex-control-nav - -CSS -body.not-front { - background-image: none; -} - -================================ - -digitalextremes.zendesk.com - -INVERT -.logo - -================================ - -disconnect.me - -INVERT -img[src*="vpnCoverageMap"] -img[alt="Toolbar button"] -#press-strip > div > img - -CSS -#accordion { - background-image: none !important; -} - -================================ - -discord.com - -INVERT -div[class^="botPermissions"] > ul > li > div > div > span::after - -CSS -div[class^="pill"][class*="wrapper"] > span[class^="item"], -div[class*="modeUnread"] > div[class^="unread"] { - background-color: var(--darkreader-neutral-text) !important; -} -nav[aria-label="Servers sidebar"] foreignObject { - border-radius: 100% !important; - mask: none !important; - transition: all .5s; -} -nav[aria-label="Servers sidebar"] foreignObject:hover { - border-radius: 30% !important; -} -path[class^="wavePath"] { - fill: ${rgb(226, 224, 220)} !important; -} -:root { - --num-grid-columns: 4 !important; - --page-gutter: 24px !important; - --page-max-width: 1260px !important; - --section-spacing: 56px !important; -} -@media screen and (min-width: 768px) { - :root { - --num-grid-columns: 8 !important; - --page-gutter: 40px !important; - --section-spacing: 80px !important; - } -} -@media screen and (min-width: 1024px) { - :root { - --num-grid-columns: 12 !important; - --section-spacing: 120px !important; - } -} - -IGNORE INLINE STYLE -div[class*="blobContainer"] > div > svg > mask -div[class*="blobContainer"] > div > svg > mask > use -div[class*="wrapper"] > svg > mask -div[class*="wrapper"] > svg > mask > use -div[class*="wrapper"] > svg > circle -mask[id*="svg-mask-avatar-status"] > * -mask[id*="svg-mask-status"] > * - -================================ - -discourse.haskell.org - -INVERT -.logo-big - -================================ - -discover.com - -INVERT -img#flag -i.icon-help -i.icon-search -i.lock-icon -div.welcome-text-wrapper -div.slide--img.credit-card -div.slide--img.personal-loan -div.slide--img.home-loan - -================================ - -discover.forem.com - -INVERT -body > div:nth-child(1) > svg:nth-child(1) - -================================ - -discovermagazine.com - -INVERT -img[alt="Discover Magazine"] - -================================ - -discovery.endeavouros.com - -INVERT -.builder-item--logo .site-logo img - -================================ - -discuss.pixls.us - -INVERT -#site-logo.logo-big - -================================ - -discussions.apple.com - -CSS -#globalnav { - --globalnav-background: var(--darkreader-neutral-background) !important; -} - -================================ - -disk.yandex.* -docviewer.yandex.* - -INVERT -.logo -.create-resource-popup-with-anchor .ufo-icon__icon - -================================ - -disney.* - -INVERT -.disney-img - -================================ - -distrowatch.com - -INVERT -img[src="images/cpxtu/dwbanner.png"] - -CSS -input, -.NavMenu, -select, -td:not(.NewsDate):not(.NewsHeadline) { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -ditu.baidu.com -map.baidu.com -maps.baidu.com - -INVERT -#activity-banner-panel -.BMap_bubble_pop -.BMap_contextMenu -.BMap_cpyCtrl -.BMap_scaleBarBG -.BMap_scaleTxt -.BMap_simple_bubble_pop -.BMap_stdMpZoom -.BMapLabel -#bt_trafficCtrl -.cbtlinetop -.cbtToolBar -.icon -#iw_tool_icon -.jump_back -#map-operate -#maps -.message-banner -#message-panel -.more-device -#nearby-searchbox-hint -#nearby-searchbox-hint-center -.route-button -.tang-pass-qrcode-title -#userSignPanel - -CSS -#newuilogo { - filter: brightness(80%); -} -#sole-input { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -djrankings.org - -CSS -body, -li a, -.moduleContentInner { - background-image: none !important; -} - -================================ - -dlagentlemana.pl - -INVERT -div.f-grid-3.logo-column > a > img -div.opineo-side-slider-widget > button -.logo-bar img - -================================ - -dle.rae.es - -CSS -.bloque_publi DE, -.spr_fundacionlacaixa, -.spr_dle90x110, -.spr_logo-enclave-rae, -.spr_google-play-badge-100x39, -.spr_badge-appstore-lrg-96x28, -.spr_edtri, -.spr_ay, -.spr_cita, -.spr_unidrae, -.spr_consultas, -.spr_pnwe2, -img[src="/images/logos/ASALE2.png"], -img[src="/images/logos/rae.png"], -img[src="/images/LibroDeEstilo_300.jpg"], -img[src="/app/doc/es/img/dle.jpg"], -a[href="https://dej.rae.es"] > img.img-responsive.b-lazy.b-loaded, -img[src="/images/logos/BCRAEl.jpg"] { - filter: invert(93.7%) hue-rotate(180deg) contrast(90.6%) !important; -} - -================================ - -dmca.com - -INVERT -img[alt="DMCA Logo"] - -================================ - -dmit.io - -INVERT -.logo - -================================ - -dnd.su - -CSS -input, -select, -textarea, -.input-cast_time, -.input-style, -.input-select, -.button, -button:not(.lg-icon), -.workshop__checkbox .workshop__label::before, -.card-type, -.paper-1, -.desc .additionalInfo, -.subsection .additionalInfo, -.trumbowyg-editor .additionalInfo, -.social-menu ul, -#ya-site-form0 .ya-site-form__form .ya-site-form__input-text, -#ya-site-form0 .ya-site-form__submit { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -dnd5e.wikidot.com - -CSS -.feature { - background-color: var(--darkreader-neutral-background) !important; -} -.feature.offcolor { - background-color: ${rgb(255, 250, 180)} !important; -} -th { - background-color: ${rgb(230, 216, 170)} !important; -} - -================================ - -dndbeyond.com - -CSS -.mon-stat-block, -.mon-stat-block::before, -.mon-stat-block::after, -body { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} -.read-aloud-text, -.more-info::after, -.details-container::after { - border-image: none !important; -} -::selection { - background-color: var(--darkreader-selection-background) !important; -} - -================================ - -dns-shop.ru - -CSS -.star-rating__star svg g path { - --darkreader-inline-fill: #afafaf !important; - stroke: var(--darkreader-inline-fill) !important; -} -.star-rating__star[data-state="selected"] svg g path { - --darkreader-inline-fill: #ffa319 !important; -} - -================================ - -dnscrypt.pl - -INVERT -.logo - -================================ - -dnsleaktest.com - -INVERT -img[src$="logo.png"] -img[src$="what-is-a-dns-leak.png"] -img[src$="transparent-dns-proxy.png"] - -================================ - -dnslytics.com - -INVERT -img[src*="logo.png"] - -================================ - -doba.pl - -INVERT -.social -img[src*="logo.png"] -img[src*="/img/powiaty/"] - -================================ - -dobreprogramy.pl - -CSS -header a[href="/"] svg { - fill: #fff !important; -} - -================================ - -doc.qt.io - -CSS -:root { - --content-bg-color: var(--darkreader-neutral-background) !important; -} - -================================ - -doc.rust-lang.org - -CSS -mark { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -docs.asciidoctor.org - -CSS -.doc .admonitionblock td.content, -.doc pre > code, -.doc p code, -.doc .colist > table code { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -docs.codacy.com - -INVERT -div.footer-logo > img[alt="Codacy"] - -================================ - -docs.dagster.io - -INVERT -img[alt="Dagster logo"] - -CSS -#__next > div { - background-image: none !important; -} - -================================ - -docs.expo.dev - -IGNORE INLINE STYLE -tr svg * - -================================ - -docs.google.com - -INVERT -.docs-icon -.punch-filmstrip-controls-icon -#docs-editor canvas -.docs-homescreen-icon -.kix-equation-toolbar-icon -.kix-equation-toolbar-palette-icon -.cell-input -.formula-content -.docs-instant-button-bubble-icon-container -.docs-gm .docs-dialog .modal-dialog-title-close::after -.docs-preview-palette-item -.goog-menuitem-checkbox -.goog-dimension-picker-unhighlighted -.goog-dimension-picker-highlighted -#docs-star -.rs-role-icon -.toggle-link-icon -.link-management-drop-down-icon -.vs-icon -.vpc-icon -.docs-analytics-img -.share-butter-copy-icon -.doc-previews-indicator-popover .docs-link-bubble-mime-icon -img[src$="googlelogo_dark_clr_74x24px.svg"] -img[src$="google_gsuite"] -.exportUnderline -.freebirdMaterialIconIconEl -.quantumWizTogglePapercheckboxCheckMark -#docs-titlebar-share-client-button .scb-button-icon:not([class*="white"]) -body[itemtype*="PresentationObject"] #docs-titlebar-share-client-button .scb-button-icon -g.punch-filmstrip-indicator > image -.docs-gm .docos-icon-overflow-three-dots-size -.docs-grille-gm3 .docs-sheet-status-avs .goog-flat-menu-button-dropdown - -CSS -.docs-preview-palette-item { - border: transparent !important; -} -.cell-input { - background-color: ${black} !important; - color: ${white} !important; -} -.cell-input > span, -.cell-input > font { - --darkreader-inline-color: ${white} !important; -} -.kix-cursor-caret { - border-color: ${black} !important; -} -.kix-selection-overlay { - background-color: var(--darkreader-selection-background) !important; - border: var(--darkreader-selection-background) !important; -} -.ia-invite-controls-area { - background-color: transparent !important; -} -.docs-gm .docs-revisions-switch .apps-ui-material-slide-toggle-thumb { - background-color: rgb(43, 46, 48) !important; -} -.docs-gm .docs-revisions-switch.apps-ui-material-slide-toggle-container-checked .apps-ui-material-slide-toggle-thumb { - background-color: rgb(9, 64, 155) !important; -} -.docs-text-ui-cursor-blink { - fill: ${black} !important; -} -.docs-title-input-label:not([style*="pointer-events: auto"]) > #docs-title-input-label-inner { - visibility: hidden !important; -} -input.docs-title-input { - background-color: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} -.sketchy-text-background + g g rect { - fill: var(--darkreader-selection-background) !important; -} - -IGNORE INLINE STYLE -.cell-input > span - -================================ - -docs.google.com/picker - -INVERT -#doclist div > div + div div[style="user-select: none;"]:not([role="tab"]):not([role="listbox"]):not([role="menuitemradio"]):not([role^="menu"]) > div:not([aria-pressed]):not([role="tab"]):not([class$="highlightsgrid"]):first-of-type -#doclist div > div + div div[role="menu"] div[role="menuitem"][style="user-select: none;"] div[aria-label] div[data-tooltip] + div -#doclist div > div + div label + input + div[style] -img[src$="search-black.png"] - -================================ - -docs.gtk.org - -CSS -.emblem.deprecated { - background: var(--error-bg-color); - color: var(--darkreader-neutral-text); -} -a.current { - background: var(--darkreader-selection-background) !important; -} -svg .node a text { - fill: var(--darkreader-neutral-text); -} - -================================ - -docs.manim.community - -CSS -.toc-drawer { - background: var(--darkreader-bg--color-background-primary); -} -.sidebar-search-container { - background: var(--darkreader-bg--color-admonition-background); -} -.sidebar-tree .current > .reference { - background: var(--darkreader-bg--color-admonition-title-background--admonition-todo); -} - -================================ - -docs.nestjs.com - -CSS -:root { - --darkreader-bg--primary-accent-color: var(--primary-accent-color) !important; - --darkreader-bg--primary-color: var(--primary-color) !important; -} - -================================ - -docs.opencv.org - -CSS -#header, -.header, -.navpath ul, -.sm-dox, -body { - background-image: none !important; -} - -================================ - -docs.sentry.io - -INVERT -.index-logo > img -a.hover-card-link[href="/platforms/apple/"] > .image-frame -a.hover-card-link[href="/platforms/javascript/guides/nextjs/"] > .image-frame - -CSS -.document-wrapper, -.promo-banner { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -docs.soliditylang.org - -CSS -.wy-body-for-nav { - background-color: unset; -} - -================================ - -docs.vyos.io - -CSS -.wy-menu-vertical a { - background-color: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} - -================================ - -doctorswithoutborders.org - -INVERT -.site-logo - -================================ - -documentfoundation.org - -INVERT -.logo -img[alt*="LibreOffice Initial Artwork Logo ColorLogoBasic"] - -================================ - -documentliberation.org - -INVERT -img[src="assets/Uploads/dlp/images/logo-calligra.png"] -img[src="assets/Uploads/dlp/images/logo-libreoffice.png"] - -================================ - -docusign.com -*.docusign.com - -INVERT -a[data-context="nav-main-logo"] -img[data-qa="header-docusign-logo"] - -================================ - -dominos.* - -INVERT -.card--overlay > .card__header .card--overlay__close - -CSS -svg.trackerbarimage:not(.complete svg.trackerbarimage) { - fill: var(--darkreader-neutral-background) !important; -} -.stage:not(.complete) > .title > span { - color: var(--darkreader-neutral-background) !important; -} -.tracker-page-container div.tracker-module.pizza-tracker .tracker-container > div.stage.complete [class^="chevron-"] { - fill: #689d30 !important; -} -.tracker-page-container div.tracker-module.pizza-tracker .tracker-container > div.stage [class^="chevron"] { - stroke: var(--darkreader-neutral-text) !important; -} - -================================ - -donald.pl - -INVERT -a[href="/"] - -================================ - -doodle.com - -INVERT -svg.d-checkmark .d-background - -================================ - -doordash.com - -INVERT -input[kind="RADIO"][id^="Toggle"]::after - -================================ - -dotaunderlords.gamepedia.com -dota2.gamepedia.com -dota2.fandom.com - -CSS -#right-navigation { - background-image: none !important; -} - -IGNORE IMAGE ANALYSIS -#left-navigation - -================================ - -dou.ua - -CSS -.g-right-shadowed, -.img::before, -.img::after { - background-image: none !important; -} - -================================ - -downloads.khinsider.com - -CSS -body { - background: none !important; -} -#faux { - background-image: none !important; -} - -================================ - -dp.ru - -INVERT -.logo-image - -================================ - -dribbble.com - -INVERT -.site-nav-desktop-logo - -================================ - -drive.google.com - -INVERT -div[role="menuitem"] svg -div[role="dialog"][style^="width: 350px;"] div[role="button"][tabindex="0"] -div[role="dialog"] ~ div[role="menu"] > div[role="menuitem"] > div > div:not([style*="background-image"]) -img[src$="type/audio/mp3"] -div[role="listitem"] > div > div > div > svg[fill="#000000"] > path -div[role="menu"] > div > div[role="menuitem"] > div > div > div -div[data-label="nd"] > div > div > svg > path[fill="#000000"] -div[role="document"] > div[role="button"] .a-b-c -div > svg > circle[fill="white"] -img[src*="empty_state_trash"] -img[src$="google_gsuite"] -div[tabindex="-1"][role="toolbar"] > div > div > div > svg > path[d^="M10 18h4v-2h-4v2zM3"] -button[class="ao-search-infolder ao-hint"] -button[aria-checked="true"] > div > svg > path -button[aria-checked="true"] > div > span > svg > path - -CSS -span[data-type="spelling"] { - mix-blend-mode: normal !important; -} -div[role="menu"] div[role="menuitem"][class*=" "] > div > div > div, -div[role="button"][aria-disabled="true"] > div { - filter: invert(50%) !important; -} -#request-access-icon, -img[src="https://ssl.gstatic.com/docs/doclist/images/empty_state_details.png"] { - filter: invert(93.7%) hue-rotate(180deg) contrast(90.6%) !important; -} -:root { - --dt-secondary-container: ${#f1f3f4} !important; -} -button[guidedhelpid="new_menu_button"] { - background-color: ${#dbdde0} !important; -} -div[data-target="autopurgebanner"] > section { - background: ${#dbdde0} !important; -} -div[role="toolbar"] div[role="button"], -div[role="toolbar"] div[role="presentation"][data-active="true"] > div[role="presentation"] { - mix-blend-mode: normal !important; -} - -IGNORE INLINE STYLE -div[role="presentation"] svg -div[data-label="nd"] > div > div > svg > path[fill="#000000"] - -================================ - -drive.google.com/file - -INVERT -div[role="menu"] > div[role="menuitem"] > div > div > div -div[role="menu"] > div[role="menuitem"] > div > div - -CSS -#request-access-icon { - filter: invert(93.7%) hue-rotate(180deg) contrast(90.6%) !important; -} - -================================ - -drive.google.com/picker - -INVERT -div[role="menu"] div[role="menuitem"]:not([class*=" "]) > div > div > div -div[role="button"][tabindex="0"] - -CSS -div[role="menu"] div[role="menuitem"][class*=" "] > div > div > div, -div[role="button"][aria-disabled="true"] > div { - filter: invert(50%) !important; -} - -IGNORE INLINE STYLE -svg[class=""] -svg[class=""] * - -================================ - -droid-life.com - -CSS -.collection-posts__list .preview__picture { - mix-blend-mode: normal !important; -} - -================================ - -dropbox.com - -INVERT -.dl-dropbox -.drops-empty-page-header-image -.restorations-education__df-help__image -.search__view--empty img -.plan-status-section__icon img -.dropbox-logo__type -iframe[class^="previewhtml _previewContent"] -.toggle.toggle-block__toggle.dig-Toggle -.toggle.toggle-block__toggle.dig-Toggle.dig-Toggle--isToggled > span::after -.shared-with-members.audience-box.u-pad-top-xs.u-pad-bottom-s.u-mar-bottom-xs > .c-loader -.hp-card-carousel-dots -.loading-loading > .loading-img - -CSS -.rc-inline-action-bar-container.brws-file-row-inline-action-bar { - background: var(--darkreader-bg--color__core__secondary) !important; -} -svg.dig-GlyphLogo.dig-Waffle-row-logo path[fill="var(--color__glyph__accent)"] { - --darkreader-inline-fill: var(--color__glyph__accent) !important; -} -svg.dig-GlyphLogo.dig-Waffle-row-logo path[fill="var(--color__glyph__primary)"] { - --darkreader-inline-fill: var(--darkreader-text--color__standard__text) !important; -} -.dig-LabelGroup > div > input[aria-checked="false"] { - background-color: var(--darkreader-bg--color__core__secondary) !important; -} -.dig-LabelGroup > div > input[aria-checked="true"] { - background-color: var(--darkreader-text--color__core__secondary) !important; -} - -IGNORE INLINE STYLE -.home__suggest_image path -.selection-preview-pane__icon path -.dig-WordmarkLogo path - -================================ - -drupal.org - -CSS -input[type="image"] { - background: none; -} - -================================ - -drvhub.net - -INVERT -.vendors-block a img - -CSS -.hero { - background-color: ${white} !important; - background-image: none !important; -} - -================================ - -ds.163.com - -INVERT -.c-slogan--normal - -================================ - -dsausa.org - -INVERT -.navbar-toggler-icon -.swiper-container-horizontal .swiper-pagination-bullet - -================================ - -dspguide.com - -CSS -#divPage { - background-image: none !important; -} - -================================ - -dtf.ru - -INVERT -mark - -================================ - -duckduckgo.com - -INVERT -.is-active.js-tw-card.bg-clr--white.tw-card > .tw-card__footer > a.js-tweet-action.tw-card__action.tw-card__link > [src="/assets/common/slider/twitter-like.svg"] -[src="https://duckduckgo.com/assets/icons/thirdparty/wikipedia.svg"] - -CSS -.justify-content-center.align-items-center.flex-lg-column.flex-md-row.card-1.card > .card-body > h3, -.justify-content-center.align-items-center.flex-lg-column.flex-md-row.card-2.card > .card-body > h3, -.justify-content-center.align-items-center.flex-lg-column.flex-md-row.card-3.card > .card-body > h3, -.justify-content-center.align-items-center.flex-lg-column.flex-md-row.card-1.card > .card-body > p, -.justify-content-center.align-items-center.flex-lg-column.flex-md-row.card-2.card > .card-body > p, -.justify-content-center.align-items-center.flex-lg-column.flex-md-row.card-3.card > .card-body > p, -.js-hiring-open-pos.join__btn.mt-5.btn.col-sm-auto.col { - color: var(--darkreader-neutral-background) !important; -} -.logo_homepage { - background-image: url("https://duckduckgo.com/assets/logo_homepage.alt.v108.svg") !important; -} -.header__logo { - background: no-repeat center url("https://duckduckgo.com/assets/logo_header.alt.v108.svg") !important; -} - -IGNORE INLINE STYLE -#color_picker_container .sample -.zci--color_codes .circle - -================================ - -duo.google.com - -INVERT -.gb_se .gb_ye:not(.gb_Ae) - -================================ - -duolingo.com - -INVERT -.Z392z -._24NNT -[data-test="skill-icon"] + div img - -CSS -button[aria-disabled="true"] { - opacity: 0.3 !important; -} -button.WOZnx::before, -div._3C_oC::before { - background-color: transparent !important; -} - -IGNORE INLINE STYLE -div[data-test="challenge-translate-prompt"] svg * -div[data-test="challenge challenge-translate"] svg * - -================================ - -dvizhcom.ru - -INVERT -.mobile-header-icon:nth-last-of-type(3) -.mobile-header-icon:nth-last-of-type(2) -.mobile-header-icon:nth-last-of-type(1) - -================================ - -dw.com - -CSS -#bodyMover { - background-image: none !important; -} - -================================ - -dynadot.com - -INVERT -img[data-src="/tr/mainsite2023/navbar-logo-dark-2023.png"] -img[data-src="/tc/img/logo/navbar-logo.svg"] -.icons-line img - -================================ - -dziennik.pl - -INVERT -img[alt="Dziennik"] - -================================ - -dziennikbaltycki.pl -dzienniklodzki.pl -dziennikpolski24.pl -echodnia.eu -expressbydgoski.pl -expressilustrowany.pl -gazetakrakowska.pl -gazetalubuska.pl -gazetawroclawska.pl -gk24.pl -gloswielkopolski.pl -gol24.pl -gp24.pl -gra.pl -gs24.pl -i.pl -kurierlubelski.pl -motofakty.pl -naszemiasto.pl -nowiny24.pl -nowosci.com.pl -nto.pl -pomorska.pl -poranny.pl -sportowy24.pl -strefaagro.pl -strefabiznesu.pl -strefaedukacji.pl -stronakobiet.pl -stronazdrowia.pl -telemagazyn.pl -to.com.pl -wspolczesna.pl - -INVERT -.atomsArticleFoot__tools svg -.atomsCommentsExposition__icon svg -.atomsGalleryButtonsNavigation__left svg -.atomsGalleryButtonsNavigation__right svg -.atomsNavigationBreadcrumbs__content svg -.atomsNavigationFooterLinks__logo -.atomsSocialmediaExposition__content svg -.componentsGalleryNavbar__btn_close -.componentsGalleryNavbar__logo -.componentsNavigationMenu__logo -.componentsNavigationNavbar__logo -.componentsNavigationTopnavbar__icons div span svg -a[href="https://i.pl/firmy"] svg -a[href="https://i.pl/szukaj"] svg - -CSS -svg path[d^="M154.992 47.9999H128L13"], -svg path[d^="M64 28L68 24V15.9999H82"] { - fill: ${black} !important; -} - -================================ - -dzienniknaukowy.pl - -INVERT -.top-logo - -================================ - -dziennikprawny.pl - -INVERT -a[href="/"] -.fullba - -CSS -.fullba { - background-image: none !important; -} - -================================ - -e.foundation - -INVERT -img.attachment-full.size-full - -================================ - -ea.com - -INVERT -.left_context .context dl dd.select -.modifyMobilePhoneBtn - -CSS -img[src*="white-bg-ea-bg-global-white"] { - display: none !important; -} -body.origin-com, -.left_context .context { - background-image: none !important; -} -.body_foot .language .select_language .languageText, -.buttonstyle_3 span, -.origin-ux-drop-down-selection > span, -.origin-ux-button-primary > span, -.origin-ux-button-secondary > span { - color: var(--darkreader-neutral-background) !important; -} - -================================ - -eapteka.ru - -INVERT -ymaps[class$="ground-pane"] -ymaps[class$="svg-icon-content"] > ymaps - -================================ - -earthquake.usgs.gov - -INVERT -img[src*="services.arcgisonline.com"]:not([src*="World_Imagery"]) - -================================ - -easybib.com/guides - -INVERT -.hamburger-toggle svg - -================================ - -easypost.com - -INVERT -.logo -.progress-bar - -================================ - -eatthis.com - -INVERT -svg.site-logo - -CSS -.header-leading-authority { - background-color: var(--darkreader-neutral-background); -} - -================================ - -eblocker.org - -INVERT -.site-logo-img -figure[class="aligncenter size-large is-resized"] - -================================ - -ebok.pgnig.pl - -INVERT -img[src*="logo"] - -================================ - -ebok.vectra.pl - -CSS -.side-floater { - background-image: none !important; -} - -================================ - -ebooks.cpm.org - -INVERT -img[alt="Review and Preview problems below"] - -================================ - -economist.com - -INVERT -#ds-wordmark-1843 path:nth-child(5) - -CSS -.css-1xqo7ld { - color: transparent; -} - -IGNORE INLINE STYLE -#ds-economist-logo > path -.ds-share-link > svg > g > circle - -================================ - -eda.yandex.ru - -INVERT -.DesktopHeader_logo -.DesktopLiteHeaderLayout_desktopLogoImage -.UiKitOrderStep_icon -.DesktopHeaderBlock_linkIcon -.Profile_chevronIcon -.DesktopCatalogPageSort_sliderIcon -.DesktopHeader_menuIcon -ymaps > ymaps > ymaps > canvas - -================================ - -edmworldmagazine.com - -INVERT -.q_logo - -================================ - -edmworldshop.com - -INVERT -.site-nav__link--burger -.site-header__logo-image - -================================ - -edstem.org - -CSS -.tab-bar-dark .active .tbb-tab-side .fill { - fill: rgb(34, 37, 38) !important; -} -.tab-bar-dark .tbb-tab-side .fill { - fill: rgb(26, 28, 29) !important; -} - -================================ - -education.github.com - -INVERT -img[alt="GitHub Education"] -.octicon-logo-github - -================================ - -eduke32.com - -CSS -.main { - background-image: none !important; -} - -================================ - -edulastic.com - -INVERT -img.keyboardButton - -================================ - -eduserver.ru - -CSS -section.content { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -eevblog.com - -CSS -#main_content_section > div > span, -#quickModForm > div > span, -#main_content_section > span { - mix-blend-mode: color !important; -} -.frame, -.plainbox, -#header, -#content_section, -#footer_section { - background: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} - -================================ - -efa.mvv-muenchen.de -rad.mvv-muenchen.de - -INVERT -.personalization -.swap -.footer_btn -.footer_btn_main - -CSS -#incr_date, -#incr_time, -#decr_date, -#decr_time { - filter: invert(100%) hue-rotate(180deg) brightness(80%) !important; -} -#search_fields_wrap .no_a img, -.fav { - filter: invert(100%) hue-rotate(180deg) brightness(350%) !important; -} -#main_nav_wrap, -#mail_feedback, -#minimized_container, -.mined_ctr, -.ui-dialog .ui-dialog-titlebar, -.leaflet-popup-content-mdv-title, -.ui-widget-header { - background-color: rgb(59,59,59) !important; - border-bottom-color: rgb(123,123,123) !important; -} -#main_nav > li a { - border-color: rgb(59,59,59) !important; - color: rgb(123,123,123) !important; -} -p img { - filter: invert(100%) hue-rotate(180deg) brightness(100%) !important; -} -[title="Fussweg"] { - filter: invert(100%) hue-rotate(180deg) brightness(100%) !important; -} -.text_field { - background-color: rgb(11, 14, 15); - border-color: rgb(255 255 255); -} -input::placeholder { - color: rgb(255, 255, 255) !important; -} -.leaflet-tile-pane { - filter: invert(90%) hue-rotate(180deg) brightness(120%) !important; -} -.leaflet-marker-pane { - filter: brightness(75%) !important; -} -input[type=radio]:checked + label { - border-color: white !important; - border-width: 1px; -} -input::placeholder { - color: white !important; - font-weight: bold; -} -.historyitem { - color: white !important; -} - -================================ - -eff.org - -INVERT -#masthead .branding a -#masthead #main-menu-nav form.search-site button[type="submit"] - -CSS -select > optgroup, -select > optgroup > option { - background-color: var(--darkreader-neutral-background) !important; -} -#masthead #main-menu-nav .pane-main-nav-menu > ul > li a::before { - background-color: var(--darkreader-neutral-text) !important; -} - -================================ - -elearning.utdallas.edu - -INVERT -.contentBox.contentBox-edit -.content.clearfix - -================================ - -electrical-symbols.com - -INVERT -.table-striped img - -================================ - -electrical4u.com - -INVERT -img[src*="equation"] - -================================ - -electricitymap.org - -INVERT -.name -.circular-gauge -img[alt="logo"] -.capacity -.mapboxgl-canvas - -================================ - -elektronik-kompendium.de - -INVERT -img[src*="formel/"] -img[src*="schalt/"] - -================================ - -element.io - -INVERT -.header--logo--img -.ems-nav__logo - -================================ - -elementalmatter.info - -INVERT -[src$="atom.gif"] -[src$="periodic-atomic.gif"] - -CSS -td { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -elementary.io - -IGNORE INLINE STYLE -.logotype-svg - -================================ - -eletimes.com - -INVERT -.tdb-logo-img - -================================ - -elitepvpers.com - -INVERT -.inlineimg -img[src*="images/elitepvpers/buttons/"] - -CSS -body, -td[id="userbarbg"], -.alt1, -.alt1Active, -.alt2, -.alt2Active, -.panel, -.panelsurround, -.thead, -.vBulletin_editor, -.fieldset, -.ticker, -#contentshadowwhite, -td[id="navbg"], -td[id="navstart"], -.signature-preview, -.cwcontent, -.cwalt { - background-image: none !important; -} -.alt1, -.alt1Active, -.alt2, -.alt2Active, -.panel, -.panelsurround, -.thead, -.vBulletin_editor, -.fieldset, -.ticker, -#contentshadowwhite { - border-color: var(--darkreader-neutral-background) !important; -} -td[id="userbarbg"], -td[id="navbg"], -td[id="navstart"] { - background-color: color-mix(in srgb, var(--darkreader-neutral-text) 10%, var(--darkreader-neutral-background) 90%) !important; -} - -================================ - -elle.com - -INVERT -.css-lgctud .e1ccpyf90 - -================================ - -elp.northumbria.ac.uk - -INVERT -.selected-answer - -================================ - -emacswiki.org - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -eman-physics.net - -INVERT -.middle_area img - -CSS -.middle_area { - border-left-color: transparent !important; -} -.middle_area, -.maintxt, -.display { - background: none !important; -} -body { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -endeavouros.com - -INVERT -.navbar-brand - -================================ - -endoflife.date - -CSS -.bg-green-000, -.bg-yellow-200, -.bg-red-000 { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -endomondo.com - -INVERT -.header-shop-logo -.footer-shop-logo -.eoFeedWorkout-map-image -.workoutMap img[src*="maps"] - -CSS -.highcharts-background { - fill: rgb(24, 26, 27) !important; -} -.highcharts-data-labels text { - text-shadow: none !important; -} - -================================ - -enduhub.com - -CSS -.navbar .nav > li > a { - text-shadow: rgb(40, 43, 54) 0px 1px 0px !important; -} -.blurme, -.blurme a { - color: inherit; - filter: unset; -} - -================================ - -enea.pl - -INVERT -.menu__logo -.navbar-brand -.slider-content > .slider-title - -CSS -.col-lg-12.col-md-12 > div > div > p { - color: var(--darkreader-neutral-background) !important; -} -.bkg-icon, -.left-bkg-icon { - color: ${white} !important; -} - -================================ - -engines4ed.org/hyperbook/ - -CSS -body { - background-image: none !important; -} - -================================ - -enjen.net - -CSS -body { - background-image: none !important; -} -input.input-medium { - background-image: none !important; -} -select.input-small { - background-image: none !important; -} - -================================ - -eps.rs - -INVERT -.racun-wrapper - -================================ - -ernestjones.co.uk - -INVERT -.logo__img - -================================ - -esbuild.github.io - -CSS -.progress { - background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, #181a1b 25%, #181a1b 75%, rgba(255, 255, 255, 0) 100%); -} - -================================ - -eshop-switch.com - -INVERT -.logo - -================================ - -eshot.gov.tr - -CSS -a.navbar-brand img { - filter: hue-rotate(90deg) invert(1) hue-rotate(90deg) saturate(15); -} -#heading .left, -#heading .sub-menu .left-xs, -#heading .sub-menu .right-xs { - background-color: transparent !important; - background-image: none !important; -} -section#announcements-area .container { - background-image: none; -} - -================================ - -esphome.io - -INVERT -img.component-image - -================================ - -esquire.com - -INVERT -.nav-logo - -CSS -.marquee-logo-link > svg { - background-color: ${black} !important; -} - -================================ - -estadao.com.br - -INVERT -#puzzleHolder -.puzzleField - -================================ - -etherrag.blogspot.com - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -etsy.com - -INVERT -.banner-container -.secondary-banner-title -.wt-radio label::before -.review-star.rating:not(.lit) -div.rating.nolit:not(:hover) > .ss-star - -================================ - -eu.community.samsung.com - -INVERT -img[alt="search icon"] - -================================ - -eukhost.com - -INVERT -.navbar-brand - -================================ - -everdermlaser.hu - -INVERT -.icon-salient-cart -.icon-salient-m-user - -================================ - -evernote.com - -INVERT -.global-logo svg - -================================ - -evga.com - -INVERT -.evga-logo-box - -CSS -.product-specs .RadTabStrip .rtsLI .rtsLink { - background-image: none !important; -} - -================================ - -ewybory.eu - -INVERT -.navbar-brand - -================================ - -excel.officeapps.live.com -*.officeapps.live.com - -INVERT -.ewr-sheettable - -CSS -#ceROOT_ELEMENT-0 > path.MSChart-HighContrast, -#ceId6_ > path.MSChart-HighContrast { - fill: ${rgb(232, 230, 227)} !important; -} -.ewa-gridKeyHandler[style*="background-color: rgb(255, 255, 255)"] { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -exercism.org - -INVERT -.header-intro .c-icon -svg.rough-annotation - -CSS -header.c-header-with-bg { - background: var(--darkreader-neutral-background) !important; -} -.theme-light { - --darkreader-bg--page-dashboard-background-image: none; -} - -================================ - -exmo.me - -INVERT -canvas - -================================ - -expedia.com - -INVERT -.uitk-header-brand-logo - -================================ - -experian.com - -INVERT -.logo - -================================ - -experiencia.xpi.com.br - -INVERT -#yield-portal-header a.xpi__header__logo svg path -#yield-portal-header a.xpi__error__logo svg path -#chart-profitability > div:nth-child(2) > svg > g > g:nth-child(2) > g:nth-child(1) > g > g > g > g:nth-child(2) > g > g:nth-child(1) > g:nth-child(2) > g:nth-child(2) > g > text > tspan - -CSS -#chart-patrimony g[role='menu'] ~ g tspan { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -explainxkcd.com - -INVERT -.mwe-math-fallback-image-inline -.mwe-math-fallback-image-display -.mw-ext-score -.main-footer-menuToggle -img[src*="Loudspeaker.svg"] -img[alt="The Signpost"] - -CSS -.diff-addedline .diffchange { - background-color: ${lightblue} !important; -} -.diff-deletedline .diffchange { - background-color: ${#feeec8} !important; -} - -IGNORE INLINE STYLE -.legend-color -.infobox > tbody > tr > td[style*="background-color"] - -================================ - -expressjs.com - -CSS -body { - background-image: none !important; -} - -================================ - -extra.com.br - -CSS -.product-card__image { - mix-blend-mode: normal !important; -} - -================================ - -ezgif.com - -INVERT -#logo - -================================ - -ezschoolpay.com - -CSS -.menuSideLabelSubHeader, -.forgotPassword, -.rememberMeCell > label, -.rmText { - color: var(--darkreader-selection-text) !important; -} - -================================ - -f-droid.org - -INVERT -.anti-feature-icon - -================================ - -faasafety.gov - -CSS -#navigation .rightBorder, -#footer { - background: ${white} !important; -} -body { - background-image: none !important; -} - -================================ - -facebook.com - -INVERT -._2o89 -._2q08 -.sx_af7fe0 -.sx_7ed17e -.sx_a4a936 -.sx_4d607f -.sx_aca067 -.sx_77228a -.sx_51302f -._2yu5 -._3iiv -._3pao -.kv0qyzoi -.sx_426ea6 -.sx_b77acf -._2gb3 -._7sjb -.sx_b9f33b -.sx_2e7846 -.sx_6d18f4 -.monochrome -.repliedLast -.sx_73ef60 -._81u_ .img -._3ffs li -#profile_intro_card_bio i -.uiScrollableAreaWrap .uiList button[type="submit"] i._3-8_ -.editPhoto i._3-8_ -.sx_08856a -.sx_ac12f7 -.sp_hk4DJV_EEeW -.sp_V53xxlprDHX_1_5x -.sp_V53xxlprDHX_2x -#pagelet_ego_pane button .img._3-8_ -#homepage_panel_promote_footer_pagelet button .img._3-8_ -#event_tabs #reaction_units span img -.fbPlaceFlyoutWrap img -._83aj -._7xv1 -._83ak -._8g4q - -CSS -.fbNubButton { - background-image: none !important; -} -.jewelItemNew ._33e { - background-color: ${#d0d1d3} !important; -} -.sx_cf4e6b { - filter: brightness(250%) !important; -} -._34k2 { - filter: brightness(1000%) !important; -} -._3hx- ._4tdt, -._3hx- ._5wd4, -._3hx- ._6vu5 ._5w-5, -._3hx- ._1aa6::after, -._3hx- ._6vu5 ._31o4, -._3hx- ._2cnu:only-of-type ._5wdf, -._3hx- ._5w0o, -._3hx- ._5z-5, -._3hx- ._16ys._3e7u, -._3hx- ._49or .__6j, -._3hx- ._324d .__6j, -._llj { - border-color: ${#eee} !important; -} -._3hx- ._ua1, -._3hx- ._40qi, -._3hx- ._5ye6, -._3hx- ._llj, -._3hx- ._1a6y, -._31o4, -._3_bp, -._4gd0, -._49or, -._40fu { - background-color: ${#eee} !important; -} -.fbNub._50mz .fbNubFlyoutFooter::after { - background-color: ${rgba(0, 0, 0, .15)} !important; -} -.fbNub._50mz .fbNubFlyoutInner, -._4cd8 ._69pt, -._4mq3 .fbNubFlyout, -._4mq3 .fbNubButton { - box-shadow: 0 0 0 1px ${rgba(0, 0, 0, .15)} !important; -} -.__fb-light-mode { - --filter-blue-link-icon: invert(73%) sepia(29%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(103.25%) hue-rotate(189deg) brightness(101%) contrast(101%) !important; - --filter-disabled-icon: invert(100%) opacity(30%) !important; - --filter-negative: invert(25%) sepia(33%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(110%) hue-rotate(345deg) brightness(132%) contrast(96%) !important; - --filter-placeholder-icon: invert(59%) sepia(11%) saturate(200%) saturate(135%) hue-rotate(176deg) brightness(96%) contrast(94%) !important; - --filter-positive: invert(37%) sepia(61%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(115%) hue-rotate(91deg) brightness(97%) contrast(105%) !important; - --filter-primary-icon: invert(100%) !important; - --filter-secondary-icon: invert(62%) sepia(98%) saturate(12%) hue-rotate(175deg) brightness(90%) contrast(96%) !important; - --filter-warning-icon: invert(77%) sepia(29%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(128%) hue-rotate(359deg) brightness(102%) contrast(107%) !important; -} -.__fb-light-mode { - --darkreader-border--messenger-card-background: var(--darkreader-bg--messenger-card-background) !important; -} -.__fb-dark-mode { - --darkreader-border--messenger-card-background: #1c1e20 !important; -} -div[role=article] div.k4urcfbm[aria-hidden="true"] { - --darkreader-inline-bgcolor: none !important; - background-blend-mode: color; - background-color: rgba(0, 0, 0, 0.25); -} -div[data-pagelet="Stories"] .ha302278 { - background-color: rgba(0, 0, 0, 0.4) !important; -} -div[aria-label="Change volume"] .ha302278, -div[aria-label="Change Position"] .ha302278, -._3paq { - background-color: rgba(255, 255, 255, 0.4) !important; -} -.r4vyqqch { - background-color: var(--fds-white-alpha-50) !important; -} -.lyi53s4r { - background-color: rgba(88,144,255,.9) !important; -} -.tdjehn4e, -.oo1teu6h { - background-color: rgba(255, 255, 255, 0.1) !important; -} -.tdjehn4e:hover, -.ovq5dppa:hover { - background-color: rgba(255, 255, 255, 0.2) !important; -} -.k19f6yf2 { - background-color: var(--press-overlay) !important; -} -.cxbav39q { - background-color: rbga(0, 0, 0, 0.8) !important; -} -.rnr61an3 { - background-color: var(--hover-overlay) !important; -} -.qbubdy2e { - fill: none !important; -} -.s1i5eluu { - background-color: var(--primary-button-background) !important; -} -.q66pz984 { - color: var(--accent); -} -.esnais5j, -._8bb_ img, -._8bb_ i, -._8bb_ video, -._8bb_ ._w80, -._8bb_ ._7umt ._47yj, -._8bb_ [style*='background-image: url'] { - filter: none !important; -} -div[role="button"] > i.hu5pjgll:not(.sp_Jc8OKpJq5NW, .sp_T89CCTT7d9Z), -a[role="link"] > i.hu5pjgll, -._3w97, -svg[role="presentation"] { - filter: var(--filter-secondary-icon) !important; -} -._2yua, -._3pas { - background-color: #888 !important; -} -._2yu8 { - background-color: rgba(255, 255, 255, .5) !important; -} -.leaflet-map-pane img[src*="theme=default"], -[style*="map"][style*="theme=default"], -._8bb_ img[src*="/map"], -._8bb_ [style*="map"], -img[src*="mapy.cz"], -._8bb_ img[src*="mapy.cz"], -img[src*="%2Fmap"], -._8bb_ img[src*="%2Fmap"], -img[src*="map.php"], -._8bb_ img[src*="map.php"], -img[src*="www.traseo.pl%2Froute"], -._8bb_ img[src*="www.traseo.pl%2Froute"] { - filter: invert(100%) hue-rotate(180deg) !important; -} -.j7vl6m33 { - fill: var(--always-white) !important; -} -::after { - border-bottom-color: #1c1e20 !important; - border-left-color: #1c1e20 !important; - border-right-color: #1c1e20 !important; - border-top-color: #1c1e20 !important; -} -.x1g6sh6t { - fill: none !important; -} -div[style*="background-image"] { - text-shadow: rgb(40, 43, 54) 0px 0px 3px !important; -} -.x1qhmfi1 { - background-color: rgba(255,255,255,.1) !important; -} - -IGNORE INLINE STYLE -[role="button"] svg -[role="button"] svg line -div svg[viewBox="0 0 36 36"] mask path -mask > rect -mask > circle -g > rect -.html-div svg path - -IGNORE IMAGE ANALYSIS -* - -================================ - -fairhotel.org - -INVERT -.btn-close -.gm-ui-hover-effect > span -.navbar-brand > img - -================================ - -fairtradeoriginal.* - -INVERT -.SiteLayout -.SiteLayout > * -.Inset-image - -================================ - -fairvote.org - -CSS -.bg-dark-red { - background-color: rgb(229 89 80/var(--tw-bg-opacity)) !important; -} -.bg-primary, -.header-navigation > nav#desktop-nav .nav-backdrop, -.header-navigation > nav#desktop-nav > ul > li > .content-link:after { - background-color: rgb(71 24 120/var(--tw-bg-opacity)) !important; -} -.header-navigation > nav#desktop-nav .submenu ul.menu-list.third-level > li { - border-color: rgb(255 255 255/var(--tw-border-opacity)) !important; -} - -================================ - -fakespot.com - -INVERT -.fs-logo -.logo -.logo-click -.press-logo-container -.app-button > img -img[alt="Header menu"] - -================================ - -fakt.pl - -INVERT -.header-links - -================================ - -fallout.wiki - -INVERT -.cosmos-actions-talk svg -img[src*="Hat_arrow.png"] - -CSS -@media screen and (min-width: 850px) { - body::after { - z-index: 0 !important; - } -} -.user-anon #cosmos-banner { - position: sticky !important; -} -.k-player .control-bar { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -fanatical.com - -INVERT -.trustpilot > .logo-container > a > img - -IGNORE INLINE STYLE -div.drm-container svg g - -================================ - -fandom.com -*.fandom.com - -INVERT -.mobile-global-navigation__logo -.wds-global-navigation__logo-fandom -a[href^="https://auth.fandom.com/auth/redirect?redirect="][data-test="back-button"] -.mwe-math-element - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; -} -#mixed-content-footer, -.community-header-wrapper, -.top-ads-container, -.bottom-ads-container, -.global-footer { - z-index: 1 !important; -} -.fandom-community-header__background.cover { - z-index: 0 !important; -} -a[href^="https://auth.fandom.com/auth/redirect?redirect="][data-test="back-button"] { - color: ${white} !important; -} - -IGNORE INLINE STYLE -.wds-global-navigation__logo-image g path -.wds-global-footer__header-logo g path -.wds-global-footer__link svg g path -symbol[id^="wds-brand-other"] * - -================================ - -fanfiction.net - -CSS -#content_wrapper_inner, -#p_footer, -body, -.content_wrapper_inner, -.lc-left, -.lc, -.xcontrast_outer, -.zmenu { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} -.btn { - background-image: none !important; -} -#search_keywords, -select { - background-color: var(--darkreader-neutral-background) !important; -} - -IGNORE INLINE STYLE -body - -================================ - -fantasy.premierleague.com - -INVERT -.ism-table - -================================ - -farside.ph.utexas.edu -mathpages.com -mathprofi.ru -mathprofi.net -mathworld.wolfram.com -reference.wolfram.com -terrytao.wordpress.com -wolframalpha.com - -INVERT -img:not([src^="/_next/static/images/"]) - -================================ - -fast.com - -INVERT -div.logo -div.powered-by - -IGNORE IMAGE ANALYSIS -div.logo -div.powered-by - -================================ - -fastmail.com - -INVERT -.logo svg - -================================ - -fastmail.com/mail - -CSS -.app-listItem.is-focused, -.app-source.is-selected { - background-color: ${lightgray} !important; -} -.app-source.is-focused { - background-color: ${lightblue} !important; - color: ${black} !important; -} -.v-MailboxItem-unreadbadge { - background-color: ${darkblue} !important; -} -.v-Message-body { - border-color: transparent !important; -} - -================================ - -fatmap.com - -CSS -.activity-filter-single-click svg.icon { - fill: ${black} !important; -} -.stats-container-small svg.ruler-icon { - fill: ${#333} !important; -} - -IGNORE INLINE STYLE -svg.icon - -================================ - -fau.de - -INVERT -.baselogo - -CSS -.accordion-toggle:not(.active) { - background-color: ${lightgrey} !important; -} -.accordion-toggle.active, -.accordion-toggle:hover { - background-color: #032755 !important; -} - -================================ - -fax.plus - -INVERT -img[src$="_info.svg"] - -================================ - -fckng-serious.de - -INVERT -.logo - -================================ - -fcmed.pl - -INVERT -.mkd-logo-wrapper -a[href*="tel"] -.mkd-sidearea > .textwidget > a > img -.owl-wrapper - -================================ - -fedex.com - -CSS -.fx-global-prelog-link.fx-showlogin span { - background-image: none !important; -} - -================================ - -fedica.com -account.fedica.com - -INVERT -.topleftLogo - -================================ - -fedoraforum.org - -INVERT -.logo-image - -================================ - -feedly.com - -CSS -.entry.u0:hover, -.entry--selected.u0, -.entry--selected.u0:hover, -.entry--selected.u4, -.entry--selected.u5, -button.secondary:hover { - background-color: ${#ccc} !important; -} - -================================ - -feynmanlectures.caltech.edu - -INVERT -.figure > img[src$=".svgz"] - -================================ - -ffmpeg.zeranoe.com - -INVERT -.active - -================================ - -fgo.gamepress.gg - -CSS -.TLW-tier-charname { - color: ${black} !important; -} -#content-inner { - background-image: none !important; -} - -================================ - -fibermap.it - -INVERT -img[src$="assets/images/bg-cloud.png"] - -================================ - -figma.com - -CSS -:root, -.blog-body { - --darkreader-bg--global-bg-color: var(--darkreader-neutral-background) !important; - --darkreader-text--global-color: var(--darkreader-neutral-text) !important; - --global-bg-color: var(--darkreader-neutral-background) !important; - --global-color: var(--darkreader-neutral-text) !important; -} - -IGNORE INLINE STYLE -div[class*="paint_panels--chit"] -div[class*="modal--modalShadow"] div -.blog-body - -================================ - -fileformat.info - -INVERT -[src$="logo_wide.png"] -.thumbnail - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -filetransfer.io - -INVERT -a.logo - -================================ - -filmweb.pl - -INVERT -.ribbonLbl -.isInit.ribbon[data-state="1"]::after -.isInit.ribbon[data-state="2"]::after -.isInit.ribbon[data-state="3"]::after -.isInit.ribbon[data-state="4"]::after -.isInit.ribbon[data-state="5"]::after -.isInit.ribbon[data-state="6"]::after -.isInit.ribbon[data-state="7"]::after -.isInit.ribbon[data-state="8"]::after -.isInit.ribbon[data-state="9"]::after -.isInit.ribbon[data-state="10"]::after - -CSS -.filmInfo__info { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -filterlists.com - -IGNORE INLINE STYLE -header.ant-layout-header img - -================================ - -final-fantasy.ch - -CSS -nav ul li:first-child span, -h1 { - color: #000 !important; -} -input[type="submit" i], -input[type="file" i] { - background-color: ${#c7c7c7} !important; - color: var(--darkreader-neutral-text) !important; -} - -================================ - -finn.no - -INVERT -finn-footer -article.ads__unit overflowmenu-active - -IGNORE INLINE STYLE -svg * - -================================ - -fio.fnar.net - -INVERT -.chartjs-render-monitor - -================================ - -firebase.google.com - -INVERT -.devsite-site-logo - -CSS -.c5e-input-container input[type="text"], -.c5e-input-container input[type="password"], -.c5e-input-container input[type="url"], -.c5e-input-container input[type="number"], -.c5e-input-container input[type="email"], -.c5e-input-container input[type="search"], -.c5e-input-container input[type="time"], -.c5e-input-container input[type="tel"], -.c5e-input-container md-select, -.c5e-input-container mat-select, -.c5e-input-container textarea { - color: var(--darkreader-bg--fire-color-grey-primary) !important; -} - -================================ - -firefox.com - -INVERT -.fx-bento-app-link.fx-bento-link.fx-mobile > span::before - -================================ - -firefox.net.cn - -CSS -.btn, -.core_follow, -.pop_deep .ct dt.reward, -.pages a, -.pages strong, -.design_mode_edit, -.pop_showmsg { - background-image: none; -} - -================================ - -firstcontributions.github.io - -CSS -.App, -.topnav { - background-color: ${CornflowerBlue}; -} - -================================ - -fivepost.ru/o - -CSS -svg[class^="OrderQRCode__StyledQRCode"] { - background-color: var(--darkreader-neutral-text) !important; -} -svg[class^="OrderQRCode__StyledQRCode"] > path[fill="#000000"] { - fill: var(--darkreader-neutral-text) !important; -} - -================================ - -fiverr.com - -IGNORE INLINE STYLE -.site-logo * - -================================ - -fivethirtyeight.com -*.fivethirtyeight.com - -INVERT -.logo -.abclogo -.site-logo -#searchform -.header-espn-link - -CSS -.domain, -.win-prob, -.winSentText { - stroke: none !important; -} - -================================ - -flaggenlexikon.de - -INVERT -img[src="https://www.flaggenlexikon.de/pix/flaggenlexikon.gif"] - -CSS -body { - background-image: none; -} -[background="higru.gif"] { - background: var(--darkreader-neutral-background); -} - -================================ - -flashscore.com.tr - -INVERT -.header__logo - -================================ - -flatuicolors.com - -IGNORE INLINE STYLE -.color - -================================ - -flightfinder.fi - -INVERT -.logo - -================================ - -flipslibrary.com - -CSS -:root { - --main-background: var(--darkreader-neutral-background) !important; - --sidebar-background: var(--darkreader-neutral-background) !important; -} - -================================ - -flow.polar.com - -INVERT -.brand -.detail-data-panel__icon -.sleep-chart-yaxis.end -.supergraph-canvas - -CSS -.highcharts-container svg { - fill: ${#3f3f3f} !important; -} -.card__item-icon--rounded img { - background-blend-mode: color; - background-color: rgba(255, 255, 255, 0.15) !important; -} -.altitudetitle, -.altdescmax, -.altdescmin, -.zonedesctitle, -.zonedescmax, -.zonedesclight, -.maxhighlightval, -.maxhighlightname { - color: rgb(0, 0, 0) !important; -} -.highcharts-background { - fill: none !important; -} - -IGNORE INLINE STYLE -.zonebox -.zonestartbox -stop - -================================ - -flowkey.com - -INVERT -body.front #zone-branding-wrapper - -CSS -body.html #page.page #subslogan { - color: ${white} !important; -} - -================================ - -fly.io - -CSS -.post :not(a):not(pre):not(.changelog-item) > code { - mix-blend-mode: normal !important; -} - -================================ - -flyzipline.com - -INVERT -#logo - -IGNORE IMAGE ANALYSIS -#logo - -================================ - -foli.fi - -INVERT -a[title="Etusivu"] svg -a[title="Home"] svg -a[title="Huvudsida"] svg -button svg -nav g > g:nth-child(1) - -================================ - -follow.it - -INVERT -.header-logo -.logo - -================================ - -fontawesome.com - -CSS -#icons-header, -#docs-header, -#hero > div:not(.container), -.app-content.docs { - background-color: var(--darkreader-neutral-background) !important; -} -.doc-nav > div { - background-color: var(--darkreader-bg--background-norm) !important; -} -#search-header { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -fontsinuse.com - -INVERT -.fiu-header__branding -.fiu-sample-list__item img -.fiu-gallery-head__text img - -================================ - -fontspring.com - -INVERT -.grid6 .fullwidth - -================================ - -fontsquirrel.com - -INVERT -.fontlistitem - -CSS -#main_content_container { - background-image: none !important; -} - -================================ - -foobar2000.org - -INVERT -img[src="/foobarlogo.png"] - -================================ - -food4less.com - -INVERT -img[alt="Food4less logo"] - -================================ - -foolcontrol.org - -CSS -html { - background-color: transparent !important; -} - -================================ - -forem.com - -INVERT -nav a > img[alt="Home"] -#cta > section > div > div > img - -================================ - -forms.reform.app - -INVERT -.logo - -CSS -svg.text-white { - color: var(--darkreader-neutral-background); -} - -================================ - -forms.yandex.ru - -INVERT -.header2__service-logo -.header2__logo-wrap - -================================ - -forsal.pl - -INVERT -.serviceLogo -.homePageUrl - -CSS -.mini-tabs { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -forum.dobreprogramy.pl - -INVERT -#site-logo - -================================ - -forum.donanimhaber.com - -CSS -body { - background-color: var(--darkreader-neutral-background); -} - -================================ - -forum.eset.com -forum.ithardware.pl -forum.kaspersky.com -forums.getpaint.net -forums.laptopvideo2go.com -forums.warframe.com -nieidealny.pl/forum - -INVERT -.ipsBadge_highlightedGroup -.ipsBadge_icon -.ipsBadge_popular -.ipsComment_authorBadge -.ipsItemStatus.ipsItemStatus_custom.ipsItemStatus_read -.ipsReact_button -img[alt="Forum komputerowe ITHardware"] -img[alt="paint.net Forum"] - -CSS -.ipsBadge { - --darkreader-bg--badge--background: var(--darkreader-neutral-background) !important; -} -.ipsReact_reactCount > a, -.ipsReact_reactCount > span, -.elFullInbox_menu, -.ipsHovercard, -.ipsList_reset, -.ipsMenu_auto, -.ipsMenu_footerBar, -.ipsMenu_headerBar, -.ipsMenu_innerContent, -.ipsMenu_item, -.ipsMenu_sep, -.ipsMenu_title, -.ipsPadding, -.cUserHovercard, -a[data-mentionid] { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -forum.ivao.aero - -INVERT -.buttonlist - -CSS -.cat_bar, -.cat_bar > *, -.catbg > * { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; - color: var(--darkreader-neutral-text) !important; -} -:not(a) > span, -:not(a) > span > *, -#footer { - background: none !important; -} -.buttonlist a:not(.active) { - color: var(--darkreader-neutral-background) !important; -} -ul.dropmenu li { - background: var(--darkreader-neutral-background) !important; - border: none !important; -} -ul.dropmenu ul { - background: var(--darkreader-neutral-background) !important; - border: 1px solid var(--darkreader-neutral-text) !important; -} - -IGNORE INLINE STYLE -#header - -================================ - -forum.kaosx.us - -INVERT -.Header-logo - -CSS -.Dropdown-toggle, -.item-refresh > Button, -.DiscussionList-loadMore > Button, -.LogInButton--github, -.Button--icon { - background: ${#6f7f92} !important; - color: ${black} !important; -} - -================================ - -forum.manjaro.org - -CSS -.below-footer-outlet.custom-footer { - background-image: none !important; -} - -================================ - -forum.miranda-ng.org - -CSS -.firstlevel { - color: ${#666666} !important; -} - -================================ - -forum.p300.it - -CSS -.ipsReact_reactCount > a { - background-color: var(--darkreader-neutral-background); - border-color: var(--darkreader-neutral-text); -} -.ipsType_normal { - border-color: rgb(48,52,54); -} -.ipsMenu_headerBar, -.ipsMenu_footerBar, -.ipsEmoticons_category, -.ipsMenu_innerContent, -ul.ipsMenu, -.ipsMenu > ul, -a[data-mentionid], -.cUserHovercard { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -forums.ankiweb.net - -CSS -#user-content { - background: transparent; -} - -================================ - -forums.comodo.com - -INVERT -.windowbg span.topslice -.windowbg span.botslice -.windowbg2 span.topslice -.windowbg2 span.botslice - -CSS -body { - background-image: none !important; -} -.buttonlist ul li a span:not(:hover) { - color: ${white} !important; -} - -================================ - -forums.gearsofwar.com - -IGNORE IMAGE ANALYSIS -body - -================================ - -forums.mydigitallife.net - -IGNORE INLINE STYLE -#TotpQrCode - -================================ - -forums.opera.com - -INVERT -.forum-logo-wrapper - -================================ - -forums.operationsports.com - -INVERT -i -.smallfont -strong - -================================ - -forums.stardock.com - -IGNORE IMAGE ANALYSIS -.body .forum > .post .postcontainer .postinfo .menu .karma_badge - -================================ - -forums.tomshardware.com - -INVERT -img[src="/styles/tomshardware/tomshardware/toms-hardware-logo.png"] -div.trophyShowcase.trophyShowcase--postbit - -================================ - -forvo.com - -INVERT -img[src$="layout/logo.svg"] - -================================ - -fotor.com - -INVERT -div[style^="background-image: url(\"https://imgv3.fotor.com/images/background/background-image.png\");"] -div[style^="background-image: url(\"https://imgv3.fotor.com/images/background/background-image.png\");"] > * - -================================ - -fotw.info - -CSS -body { - background-image: none !important; -} - -================================ - -framatube.org - -INVERT -.vjs-load-progress -.vjs-play-progress -.vjs-play-progress::before - -================================ - -frame.work - -INVERT -a[title="Framework Home"] > img[alt="Framework"] -#site-logo -[type="checkbox"].checkbox-black:checked - -================================ - -fredmeyerjewelers.com - -INVERT -#header1_mainlogo -.mobileNavIcons img -.mobileNavIcons input:not(.searchdesktop) - -================================ - -freebsdfoundation.org - -CSS -.content-wrapper { - background-image: none !important; -} - -================================ - -freecodecamp.org - -CSS -.video-quiz-selected-input { - background-color: var(--darkreader-neutral-text) !important; -} -.progress-bar-percent { - background-color: ${gray} !important; -} -.map-title polygon { - fill: var(--darkreader-neutral-text) !important; -} -.map-badge circle { - fill: var(--darkreader-neutral-background) !important; -} - -================================ - -freecommander.com - -CSS -.am-body, -#subsilver-nav-topic { - background-image: none !important; -} -.forabg, -.forumbg, -.header > .row-item, -.body-blok-h3 h3 { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -freedom.press - -INVERT -.logo-heading-text - -================================ - -freelancer.com - -INVERT -.LogoImg[src*="freelancer-logo.svg"] - -================================ - -freemaptools.com - -INVERT -img[src="images/freemaptools-logo.jpg"] - -CSS -body { - background-image: none !important; -} - -================================ - -freesound.org - -CSS -#search input:not(#search_submit) { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -freetp.org - -CSS -html, -body, -.wmid, -.wfoot { - background-image: none !important; -} -html, -body { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -fritz.box - -INVERT -div.formular input[type="radio"] -div.formular input[type="checkbox"] - -CSS -div.formular input[type="radio"], -div.formular input[type="checkbox"] { - background-color: transparent !important; -} -#navigationMenu { - background: linear-gradient(--darkreader-bg--charcoal-gray-20: 30%, rgba(255, 255, 255, 0)) center top,linear-gradient(rgba(255, 255, 255, 0), #1b1e1f 70%) center bottom,linear-gradient(var(--charcoal-gray-30), transparent) center top,linear-gradient(transparent, --darkreader-bg--charcoal-gray-20:) center bottom !important; - background-attachment: local,local,scroll,scroll !important; - background-repeat: no-repeat !important; - background-size: 100% 1.2rem,100% 1.2rem,100% .5rem,100% .5rem !important; -} - -================================ - -fs.blog - -INVERT -.shared-counts-icon - -CSS -body, -.header-box { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -fsfe.org - -INVERT -#logo - -CSS -body { - background-image: none !important; -} - -================================ - -ftp.nluug.nl - -INVERT -img[alt="[NLUUG]"] - -================================ - -fullstackopen.com - -CSS -.gatsby-highlight-code-line { - background-color: ${hsla(0,0%,48.2%,.3)} !important; -} - -================================ - -funpay.ru - -INVERT -.logo-color -.logo - -================================ - -furrychina.com - -INVERT -.main_logo - -================================ - -fusoya.eludevisibility.org - -CSS -body { - background-image: none !important; -} -td { - background-image: none !important; - color: var(--darkreader-neutral-text) !important; -} - -================================ - -futar.bkk.hu - -INVERT -.mapboxgl-map - -================================ - -futureplc.com - -INVERT -img[src$="future-logo.svg"] - -================================ - -fyziklani.* -online.fyziklani.cz -physicsbrawl.org - -IGNORE IMAGE ANALYSIS -.flag-icon-bg -.flag-icon-co -.flag-icon-fi -.flag-icon-jp -.flag-icon-kr -.flag-icon-lt -.flag-icon-pl -.flag-icon-ru -.flag-icon-sk - -================================ - -fz-juelich.de - -CSS -body { - background-image: none !important; -} - -================================ - -gadzetomania.pl - -CSS -a svg path[d^="M12.881 14.785v-"] { - fill: #fff !important; -} - -================================ - -gain.tv - -CSS -.body-new-index .hero-img-container { - z-index: 0 !important; -} - -================================ - -gameinformer.com - -INVERT -.site-logo - -================================ - -gameranx.com - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; -} -.mai-toc__listitem, -.mai-toc__details, -.mai-toc-default .mai-toc__summary { - background-color: ${#f7f7f7} !important; -} - -================================ - -gamerevolution.com - -INVERT -.wp-block-xwp-curated-content__card-title -.wp-block-xwp-curated-content__card-excerpt -.wp-block-xwp-curated-content__card-footer -.wp-block-xwp-curated-content__title -.xe-footer-nav__menu -.xe-footer-social-nav__menu -.xe-site-footer__bottom-column-2 -#h-featured - -================================ - -gamesindustry.biz - -INVERT -.logo - -================================ - -gamestop.com - -INVERT -.nav-logo - -================================ - -garmin.com -*.garmin.com - -INVERT -.gh__logo -.map-controls.player .pause span -.recharts-dot - -CSS -.recharts-wrapper text { - fill: ${rgba(0, 0, 0, 0.75)} !important; -} -span[class*="Carousel_carouselHighlightedDot"] { - background-color: ${rgba(0, 0, 0, 0.75)} !important; -} -span[class*="Gc5ChallengesCard_progressBar"] div[class*="ProgressBar_bar__"], -span[class*="DayView_progressBar"] div[class*="ProgressBar_bar__"] { - background: ${black} !important; -} -.find-plan-filters button { - background-color: var(--darkreader-neutral-background) !important; -} -.plan-section-label { - color: var(--darkreader-neutral-text) !important; -} -.plan-info, -.plan-specs { - background-color: var(--darkreader-neutral-background) !important; - border-color: transparent !important; - color: var(--darkreader-neutral-text) !important; -} - -================================ - -gasbuddy.com - -INVERT -.pin -.pin-small - -================================ - -gat.no - -INVERT -figure.logo > img - -CSS -main.container .every_board > .row:not(.row--takeover) { - --front-background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -gatsbyjs.com - -INVERT -.ais-InfiniteHits-item - -CSS -.gatsby-highlight, -.language-text { - background-color: var(--darkreader-neutral-background); -} - -================================ - -gazeta.pl -plotek.pl -sport.pl -edziecko.pl -moto.pl -ukrayina.pl - -INVERT -img[alt^="logo"] -.vs__actions -a.item.noSwiper img - -CSS -.top_section_bg, -.bottom_section_bg { - background-color: ${#e5e5e5} !important; -} -svg [id="Group_242"], -svg [id="Path_9914"] { - fill: ${black} !important; -} - -================================ - -gazetaprawna.pl - -INVERT -.bubbleMenuHamburger -.homePageUrl -.serviceLogo -.servicesMenu #menuTrigger span - -================================ - -gazetaswietokrzyska.pl - -INVERT -.logo - -CSS -.elementor-column-wrap.elementor-element-populated { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -geekflare.com - -INVERT -.logo - -================================ - -geeksforgeeks.org - -CSS -.gsc-input-box { - box-shadow: ${rgba(0, 0, 0, 0.3)} 0px 0px 2px !important; -} - -================================ - -geizhals.* -skinflint.co.uk -cenowarka.pl - -CSS -img, -.mocat-item__image, -.primary-nav .nav-item-type-cat-image { - mix-blend-mode: normal !important; -} - -================================ - -genius.com - -INVERT -.texmath - -================================ - -genome-euro.ucsc.edu - -INVERT -td.tdData -.tdLeft - -================================ - -genshin-impact-map.appsample.com - -INVERT -.bg-secondary.px-1.py-0.input-group-text > .icon -.border-top2.text-center.w-100.sidebar-footer -.gm-ui-hover-effect - -================================ - -gentoo.org - -INVERT -.site-logo - -================================ - -geogebra.org - -INVERT -.icon-m -.elemText canvas -.gwt-Image -.gwt-StackPanelItem img -.GeoGebraMenuImage.menuImg -.menuImg -.buttonContent.stylebarButton -.EuclidianPanel > canvas -.stepTreeElem - -================================ - -get.google.* -get.google.*.* - -INVERT -a[href*="about/products"] -span[aria-label="Settings"][role="menuitem"] path -span[aria-label="About Album Archive"][role="menuitem"] path -span[aria-label="Download photo"][role="menuitem"] path -span[aria-label="Manage in Google Photos"][role="menuitem"] path - -================================ - -getalt.org - -INVERT -.site-title - -================================ - -getfedora.org - -INVERT -img[alt="globe"] - -================================ - -getlektor.com - -CSS -.body-wrapper .container { - background-color: var(--darkreader-neutral-background) !important; -} -pre { - background-image: none !important; -} - -================================ - -getmimo.com - -INVERT -a[title="Home"][href] > svg -div[class^="FifthSection___StyledDiv8"] > svg -div[class^="Footer__Row"] > :nth-child(1) svg - -CSS -login-container { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -getpocket.com - -CSS -p a[rel="noopener noreferrer"] { - background-image: linear-gradient(to top,transparent,transparent 1px,var(--darkreader-text--color-canvas) 1px,var(--darkreader-text--color-canvas) 2px,transparent 2px) !important; - text-shadow: none !important; -} - -================================ - -getsol.us - -INVERT -img[alt="Logo"] - -================================ - -getsuperpowers.app - -CSS -.bg-gradient-to-r { - background-image: linear-gradient(to right,var(--tw-gradient-stops)) !important; -} - -================================ - -gg.pl - -INVERT -.chat-btns -.profile-close i -.settings-close i - -CSS -.sr-contact-name span { - background-image: none !important; -} - -================================ - -ggmania.com - -CSS -body { - background-image: none !important; -} - -================================ - -ghisler.com - -INVERT -img[src$="bit.gif"] - -================================ - -gigabyte.com - -INVERT -.kf-vision -.kf-vision > * -.creator-vision -.creator-vision > * -.InnerGIGABYTEContent .scroll_bg_01 -.InnerGIGABYTEContent .scroll_bg_01 > * -.InnerGIGABYTEContent .eagle_build_strong -.InnerGIGABYTEContent .eagle_build_strong > * - -================================ - -git-scm.com - -INVERT -img[alt="Git"] - -CSS -body, -#masthead { - background-image: none !important; -} - -================================ - -github.com -github.*.* - -INVERT -[src="https://github.githubassets.com/images/modules/site/icons/footer/github-logo.svg"] -[src^="https://github.githubassets.com/images/modules/site/home/community-sponsor-"] -[src^="https://github.githubassets.com/images/modules/site/home/community-readme-"] -[src^="https://github.githubassets.com/images/modules/site/home/community-discussions-"] -[src="https://github.githubassets.com/images/modules/site/home/dependabot-merge.png"] -[src="https://github.githubassets.com/images/modules/site/home/dependabot-pr.png"] -[src="https://github.githubassets.com/images/modules/site/home/gh-desktop.png"] -[src="https://github.githubassets.com/images/modules/site/home/pr-merge.png"] -[src="https://github.githubassets.com/images/modules/site/home/pr-comment.png"] -[src="https://github.githubassets.com/images/modules/site/home/pr-description.png"] -[src="https://github.githubassets.com/images/modules/site/home/pr-screen.png"] -[src="https://github.githubassets.com/images/modules/site/home/enterprise-city-w-logos.jpg"] -[src="https://github.githubassets.com/images/modules/site/codespaces/codespaces-icon.png"] -[src="https://github.githubassets.com/images/modules/site/codespaces/dependency-rust.png"] -[src="https://github.githubassets.com/images/modules/site/codespaces/dependency-3.png"] -[src^="https://github.githubassets.com/images/modules/site/codespaces/dependencies-"] -[src="https://github.githubassets.com/images/modules/site/codespaces/commit-3.png"] -[src="https://github.githubassets.com/images/modules/site/codespaces/extensions-1.png"] -[src="https://github.githubassets.com/images/modules/site/codespaces/extensions-2.png"] -[src="https://github.githubassets.com/images/modules/site/codespaces/commit-workflow.png"] -[src="https://github.githubassets.com/images/modules/site/codespaces/workflow-view.png"] -[src="https://github.githubassets.com/images/modules/site/codespaces/code.png"] -[src="https://github.githubassets.com/images/email/explore/explore-gradient-icon.png"] -[src="https://raw.githubusercontent.com/github/explore/80688e429a7d4ef2fca1e82350fe8e3517d3494d/collections/learn-to-code/learn-to-code.png"] -.js-viewport-aware-video.color-bg-primary.width-full.d-block.codespaces-hero-video -.build-in-animate.position-relative.mb-6-fluid.box-shadow-active-mktg.mx-auto.home-mobile-iphone.build-in-slideY.js-build-in > .js-viewport-aware-video.width-full -.overflow-hidden.position-relative.box-shadow-active-border-mktg.rounded-2-fluid.color-bg-primary.build-in-scale-fade.js-build-in-item -.build-in-animate.overflow-hidden.box-shadow-active-border-mktg.rounded-2-fluid.position-relative.home-workflow-comp.js-build-in-item -.mx-lg-auto.col-lg-7.col-12 - -CSS -.blob-code-inner, -.blob-num, -.cm-s-github-light .CodeMirror-lines, -.CodeMirror pre > span, -.CodeMirror, -.CodeMirror-dialog input, -.CodeMirror-hints, -.CodeMirror-linenumber, -.CodeMirror-lines, -.commit .sha, -.commit .sha-block, -.commit-desc pre, -.commit-ref, -.commit-tease-sha, -.export-phrase pre, -.file-info, -.FormControl-input.FormControl-monospace, -.FormControl-select.FormControl-monospace, -.FormControl-textarea.FormControl-monospace, -.input-monospace, -.markdown-body .footnotes .data-footnote-backref g-emoji, -.pr-1 > code > a, -.react-blob-print-hide, -.react-code-text, -.react-code-view-edit .cm-s-github-light .CodeMirror-lines, -.text-mono *, -.text-mono, -.two-factor-recovery-codes, -[aria-labelledby*="codemirror"] *, -[class*="blob-code"] *, -code > a[class="Link--secondary"], -section[aria-labelledby*="file-name-id"] > div > div *, -span.commit-ref > a > *, -span.commit-ref > a { - font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace !important; -} -.markdown-body code, -.markdown-title code { - background-color: ${rgba(27, 31, 35, 0.1)} !important; -} -.markdown-body pre code { - background-color: transparent !important; -} -.refined-github .dashboard .js-all-activity-header + div { - background-color: ${#e4e5e9} !important; - border-color: ${#bbc1c9} !important; -} -.refined-github .dashboard-rollup-items .body { - border-top-color: ${#bbc1c9} !important; -} -.refined-github .reaction-summary-item a { - box-shadow: 0 0 0 2px ${white} !important; -} -.refined-github button.reaction-summary-item { - border-bottom: rgb(77, 172, 253) !important; - border-top-color: rgb(52, 59, 68) !important; -} -.js-site-search-form { - background-color: #ffffff1a !important; - border-radius: 2pt !important; -} -.blob-num:not(.cc-coverage-covered-border):not(.cc-coverage-missed-border) { - border-right: 0 !important; -} -.cc-issue-description { - color: #24292e !important; -} -.cc-readup-background { - background-color: rgb(28, 30, 31) !important; -} -.cc-readup-content { - border-left: 1px solid grey !important; - color: rgb(216, 214, 208) !important; -} -.cc-readup-content blockquote { - border-left: 3px solid dimgrey !important; -} -.cc-pr__link-text { - color: darkgrey !important; -} -.cc-pr__tooltip { - background-color: rgb(28, 30, 31) !important; - color: darkgrey !important; -} -.jfk-bubble, -.octotree-sidebar, -.cc-pr__logo, -.cc-octicon, -#network canvas, -img.network-tree { - filter: invert(94.4%) hue-rotate(180deg) contrast(90%) !important; -} -#commit-activity-detail > svg { - fill: ${black} !important; -} -.ContributionCalendar-day, -.ContributionCalendar-day[data-level="0"] { - fill: var(--color-calendar-graph-day-bg) !important; -} -.ContributionCalendar-day[data-level="1"] { - fill: var(--color-calendar-graph-day-L1-bg) !important; -} -.ContributionCalendar-day[data-level="2"] { - fill: var(--color-calendar-graph-day-L2-bg) !important; -} -.ContributionCalendar-day[data-level="3"] { - fill: var(--color-calendar-graph-day-L3-bg) !important; -} -.ContributionCalendar-day[data-level="4"] { - fill: var(--color-calendar-graph-day-L4-bg) !important; -} -.day, -.day[data-Count="0"] { - fill: var(--color-calendar-graph-day-bg) !important; -} -.day[data-Count="1"] { - fill: var(--color-calendar-graph-day-L1-bg) !important; -} -.day[data-Count="2"] { - fill: var(--color-calendar-graph-day-L2-bg) !important; -} -.day[data-Count="3"] { - fill: var(--color-calendar-graph-day-L3-bg) !important; -} -.day[data-Count="4"] { - fill: var(--color-calendar-graph-day-L4-bg) !important; -} -:root { - --color-calendar-graph-day-bg: ${#ebedf0} !important; - --color-calendar-graph-day-L1-bg: ${#9be9a8} !important; - --color-calendar-graph-day-L2-bg: ${#40c463} !important; - --color-calendar-graph-day-L3-bg: ${#30a14e} !important; - --color-calendar-graph-day-L4-bg: ${#216e39} !important; - --color-previewable-comment-form-bg: var(--darkreader-neutral-background) !important; -} -.Box-row--yellow { - background-color: ${#fffbdd} !important; -} -.merge-status-list { - border-color: ${#c0c5c7} !important; -} -.user-has-reacted { - background-color: rgba(17, 88, 199, 0.2) !important; -} -.hx_IssueLabel { - background: rgb(var(--label-r),var(--label-g),var(--label-b)) !important; - border-color: hsla(var(--label-h),calc(var(--label-s)*1%),calc((var(--label-l) - 25)*1%),var(--border-alpha)) !important; - color: hsl(0,0%,calc(var(--lightness-switch)*100%)) !important; -} -.header-search-input { - border: 0 !important; -} -.HeaderMenu-link--sign-in { - border: 0 !important; -} -.timeline-comment--caret.current-user::after { - --color-current-user-tip-bg: var(--darkreader-bg--color-box-bg-info) !important; -} -.timeline-comment--caret.current-user::before { - background-color: var(--darkreader-border--color-box-border-info) !important; -} -@media screen and (min-width: 1012px) { - markdown-toolbar.border-lg-top-0 { - border-top: 1px solid var(--darkreader-border--color-border-primary) !important; - } -} -@media screen and (max-width: 767px) { - div.tabnav--responsive button.tabnav-tab { - --color-border-primary: var(--darkreader-border--color-border-primary) !important; - } -} -.TimelineItem-badge[style^="background-color: var(--color-timeline-merged-bg)"] { - background-color: var(--color-timeline-merged-bg) !important; -} -.ContributionCalendar-label { - --color-text-primary: var(--darkreader-neutral-text) !important; -} -article div[style^="background: linear-gradient"] { - background: linear-gradient(to top, var(--darkreader-bg--color-bg-primary), transparent) !important; -} -.ͼ5 .cm-content, -.ͼ5 .cm-panel.cm-search > button { - background-color: var(--darkreader-neutral-background) !important; -} - -IGNORE INLINE STYLE -a[href^="https://apps.apple.com/app/"] g -a[href^="https://apps.apple.com/app/"] path -tracked-issues-progress svg * -div#user-repositories-list .tooltipped svg * -div#org-repositories .tooltipped svg * - -================================ - -github.myshopify.com - -INVERT -.site-header__logo-image -.column-gh.column-full>svg - -================================ - -githubstatus.com - -CSS -.illo-desktop-header { - z-index: 0 !important; -} - -================================ - -gitlab.com -gitlab.host -gitlab.*.* -gitlab.*.*.* -code.videolan.org -framagit.org -git.fairkom.net -repo1.dso.mil - -INVERT -.js-contrib-calendar - -CSS -:root { - --svg-status-bg: #181a1b; -} -.avatar, -.avatar-container { - border: none !important; -} -table.code .line_content *:not(pre), -.job-log *:not(pre) { - font-family: "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace !important; -} -.gl-drawer-close-button, -.js-reply-button, -.dropdown.more-actions > button, -.js-note-edit, -.btn-default-tertiary, -.btn-confirm-tertiary { - mix-blend-mode: unset !important; -} -.board-inner { - --darkreader-border--gray-100: ${#d1cdc7} !important; - --gray-10: ${#e1e3e4} !important; -} -.mr-tree-list:not(.tree-list-blobs) .tree-list-parent::before { - background-color: transparent !important; -} - -================================ - -gittigidiyor.com - -CSS -img[data-testid="productImage"] { - mix-blend-mode: normal !important; -} - -================================ - -giveawayoftheday.com - -INVERT -.header_lang .curr_lang::before -.header_logo -.header_nav_trig -.header_search -.header_search .button - -IGNORE IMAGE ANALYSIS -.countdown-amount .diggit - -================================ - -giveaways.cavebot.xyz - -CSS -.respon1.p-r-50.p-l-50.p-b-22.p-t-42.bor1.cd100.flex-sa-m.flex-w { - border: none !important; -} -.overlay1::after { - background: unset !important; -} -.overlay1::before { - background-color: unset !impotant; - background-image: unset !impotant; - opacity: 0.8 !important; -} -.overlay1::before { - background-color: unset !important; - background-image: unset !important; -} - -================================ - -gizmodo.com - -INVERT -[aria-label="Gizmodo logo"] - -================================ - -glasswire.com - -INVERT -.download-n-marks div img -.menu - -CSS -.head-menu .menu a { - color: var(--darkreader-neutral-background) !important; -} - -================================ - -global.gotomeeting.com/join/* - -IGNORE IMAGE ANALYSIS -body - -================================ - -gloswielkopolski.pl - -INVERT -.componentsNavigationNavbar__brand - -================================ - -gls-pakete.de - -CSS -.tracking--status .status-box::before, -.tracking--status .status-box::after { - z-index: 0 !important; -} -.tracking--status .status-box.status--complete.status--lastcomplete .status-box--tooltip, -.tracking--status .status-box.status--current .status-box--tooltip { - bottom: 0 !important; - margin-bottom: 0px !important; - margin-top: -10px !important; - position: absolute !important; - transform: none !important; -} - -================================ - -gnc.com - -IGNORE INLINE STYLE -a[id^="powered_by_pixlee"] - -================================ - -gnu.org - -INVERT -#gnu-banner img -#search-icon - -================================ - -godaddy.com - -INVERT -.logo-mark - -================================ - -godbolt.org - -CSS -div.view-lines * { - font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace !important; -} - -================================ - -godfathers.com - -INVERT -.header .top-bar .top-bar-wrapper .page-header-branding img - -================================ - -godoc.org - -CSS -.banner { - background-color: ${rgb(225, 190, 130)} !important; -} - -================================ - -godzinyotwarcia24.pl - -INVERT -.mbdtr -.mpktr -form[action="/szukaj"] -div[id="suchfeldlabels"] - -================================ - -gog-games.com/game - -INVERT -img[src*="hoster_logos"] -div.close - -CSS -#game-details > .container::before { - background-image: none !important; -} - -================================ - -gog.com - -INVERT -i.icn.icn--close -svg.icon-wrapper-icon -svg.big-spot__add-to-cart-icon -svg.ic-svg:not(.button__icon):not(.productcard-slider__nav-icon) -.productcard-thumbnails-slider-pagination -.carousel-pagination__page -.big-spot__carousel-pages-container -.big-spots__arrow-icon -.discover-games-more__icon - -CSS -.product-tile__info:hover { - background-color: var(--darkreader-neutral-background) !important; -} -a.product-tile__content { - background-color: var(--darkreader-neutral-background) !important; -} -.galaxy-tooltip__layer { - background: ${#d9d9d9} !important; - color: var(--darkreader-neutral-text) !important; -} -.big-spot__content, -.big-spot__text, -.big-spot__action { - backdrop-filter: brightness(50%) !important; -} -.big-spot__title, -.big-spot__super-title, -.big-spot__action { - filter: brightness(130%) !important; -} -.wishlist-button, -.review__read-more, -.review-new__add-button, -.review-new__guideline-button { - background-image: none !important; -} -.productcard-thumbnails-slider__play-btn { - border-color: rgb(220, 218, 215) !important; -} -.productcard-thumbnails-slider__play-btn::before { - border-left-color: rgb(220, 218, 215) !important; -} -.list--summary.shelf-skin--wood .product-row-wrapper:after { - background-image: url(/bundles/gogwebsiteaccount/img/shelf/wood.png); -} - -IGNORE IMAGE ANALYSIS -.menu-anonymous__shelf - -================================ - -gog.com/promo -gog.com/partner - -CSS -.wrapper.cf > .content.cf::before { - background-color: rgba(0,0,0,0.5); - height: 100%; - left: 0; - position: fixed; - top: 0; - width: 100%; -} -.container.promo-page-header.cf { - filter: brightness(100%) !important; -} - -================================ - -gokulv.netlify.app - -IGNORE IMAGE ANALYSIS -body - -================================ - -golang.org - -INVERT -.Footer-gopher -.gopher - -CSS -#file-editor .CodeMirror, -#file-editor .CodeMirror-lines, -#file-editor .CodeMirror-gutters, -#wrap { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -goodreads.com - -INVERT -.responsiveSiteFooter__socialLinkWrapper - -================================ - -google.*/chrome - -INVERT -[src$="slate.png"] -[src$="articles.png"] -[src$="phone_desktop.png"] -[src$="homepage_tools.png"] -[src$="chrome-ui-sync.png"] -[src$="password-check.png"] -[src$="big_pixel_phone.png"] -[src=$"homepage_privacy.png"] -[src$="big_phone_desktop.png"] -[src$="chrome-ui_desktop.png"] -[src$="pixel_slate_port_desktop.png"] -[src^="/chrome/static/images/productivity/"] -[src^="/chrome/static/images/be-more-productive/"] -[src^="/chrome/static/images/download-browser/pixel"] -[src^="/chrome/static/images/google-translate/screen-"] - -================================ - -google.*/maps -google.*.*/maps - -INVERT -#app-container.vasquette:not(.app-imagery-mode):not(.app-globe-mode) .widget-scene-canvas -#app-container.vasquette:not(.app-imagery-mode):not(.app-globe-mode) .canvas-container > canvas -#app-container.vasquette:not(.app-imagery-mode):not(.app-globe-mode) .full-screen > img -.widget-settings-button-icon -.searchbox-button -.searchbox-searchbutton -.searchbox-hamburger::before -.maps-sprite-settings-chevron-left -a.ita-kd-icon-button > span -li.ita-kd-menuitem > span.ita-kd-menuitem-inputtool-icon -li.ita-kd-menuitem > span.ita-kd-checkbox -div.maps-sprite-common-chevron-left -span.maps-sprite-common-chevron-right -span.section-destination-via-line-icon -div.section-directions-trip-travel-mode-icon -button.searchbox-hamburger.white-foreground -label.kd-radio-label::before -label.kd-checkbox-label::before -label.kd-checkbox-label::after -button.section-directions-details-action-button -div.section-loading-spinner -a.gb_b > div -a.gb_xc -.gm-style img[role="presentation"]:not([src*="v="]) -.i4ewOd-xl07Ob -.i4ewOd-LQLjdd li::before -.un1lmc-j4gsHd -.maps-sprite-settings-languages -a[href*="about/products"] -.google-logo -.watermark -.section-review-action-menu -.section-review-interaction-button -.section-directions-trip-travel-mode-icon -.renderable-component-icon -.cards-rating-star -.maps-sprite-common-chevron-right -[role="region"] button[jsaction^="pane.list-item.add"] [class*="icon-background"] [class*="icon"][src*="black"] -.top-activity-icon -.activity-icon -img[src$="menu_black_24dp.png"] -#assistive-chips .e2moi img -button[guidedhelpid="searchbutton"] -a[href^="//myaccount.google.com/yourdata/maps"] > div -img[src^="//www.google.com/images/branding/lockups/"][alt="Google Maps"] -div[role="checkbox"] > div -div[aria-label="Toggle star"][role="checkbox"] -#legendPanel > div > div > div > div > div > div > div > div > div[jsaction^="keydown"][jsshadow=""][role="checkbox"][style=""] -#legendPanel > div > div > div > div > div > div > div > div > div > div > div > div[jsaction^="keydown"][jsshadow=""][role="checkbox"] -#map-canvas > div > #watermark -body.vsc-initialized > #app > #map-container > #map > .map-outer.map-extent -body.vsc-initialized > #app > #map-container > #map > div > div > div > button[jsaction="map.toggle-map-control"] > img -body.vsc-initialized > #app > #map-container > #map > div > div > div > div > div > button[jsaction="map.zoom-out"] > img -body.vsc-initialized > #app > #map-container > #map > div > div > div > div > div > button[jsaction="map.zoom-in"] > img -#app-container > #modal-dialog > div > div > div > div > button[jsaction="modal.close"] -#map-canvas div[data-tooltip] -div[style="top: 0px;"] > div > div > div > :first-child -div[style="top: 0px;"] > div > :last-child > div > :nth-child(2) -div[style="top: 0px;"] > div:first-child:not([style^="background"]) > :last-child - -CSS -#app-container > #modal-dialog > div > div > div > div > button[jsaction="modal.close"] { - background-color: $var(--darkreader-neutral-background) !important; -} - -IGNORE IMAGE ANALYSIS -.widget-settings-map -.widget-settings-satellite -.widget-settings-terrain -.widget-settings-globe -.widget-settings-traffic -.widget-settings-transit -.widget-settings-bike -.widget-settings-street-view -.widget-settings-covid-info-icon -.widget-settings-location-sharing -.widget-settings-your-places -.widget-settings-rate-review -.widget-settings-timeline -.widget-settings-link -.widget-settings-print - -================================ - -googleprojectzero.blogspot.com - -CSS -.c5 a img { - background-color: white !important; -} - -================================ - -goplay.anontpp.com - -INVERT -img[src*="download.svg"] -img[src*="cast.png"] -img[src*="bookmark.png"] -.jw-slider-container -.jw-time-tip::after - -================================ - -goproblems.com - -INVERT -.navbar-brand - -IGNORE INLINE STYLE -
    - -================================ - -gorod.gov.spb.ru - -INVERT -.header__logo -.reason__icon -.map-with-address -.problem-details__map -.problem-map-page__map -.evtmap canvas - -================================ - -gorod.mos.ru - -INVERT -.scene__logo -div[id^="map"] > div > div > div -div[style^="text-align: center; margin"] > div > div:first-of-type - -CSS -#footer { - background: ${#CCECE8} !important; -} - -================================ - -gosuslugi.ru - -INVERT -ymaps[class$="ground-pane"] -ymaps[class$="places-pane"] span - -================================ - -gotquestions.org - -CSS -.gradient-to-b { - --color-end: var(--darkreader-neutral-background) !important; - --color-start: var(--darkreader-neutral-background) !important; -} - -================================ - -gov.pl/web/bip - -INVERT -.banner-promo -.banner-promo__text - -================================ - -gowork.pl - -INVERT -.city__img .city__text - -================================ - -gp.se - -CSS -header nav { - border-top: unset !important; -} -header nav::after { - background: linear-gradient( 90deg, hsl(0deg 0% 100% / 4%) 0, hsl(0deg 0% 30.39% / 40%) 25%, var(--darkreader-bg--white) ) !important; -} -article.teaser-article { - --teaser-background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -gptzero.me - -CSS -.bg-home-mobile-background { - background-image: none !important; -} -img[alt="background image"] { - display: none !important; -} - -================================ - -grammarly.com - -INVERT -img[alt="Grammarly logo"] - -IGNORE INLINE STYLE -div[data-qa="heroSectionAnimationContainer"] path - -================================ - -gramota.ru - -INVERT -img[src*="logo-gramota"] -.caret -td > strong - -================================ - -gravatar.com - -INVERT -a.g-home -.g-user-menu > svg -body#page > div > div > nav > ul > li > a > svg.g-logo.g-logo--name-gravatar - -CSS -a[class="g-sign-in"] > svg > path { - fill: white !important; -} -body { - background-image: none !important; -} - -================================ - -grc.com - -INVERT -img[src*="gif"] - -================================ - -greatergood.com - -INVERT -.ctg-logo -.logo-ggc-color -#site-logo - -================================ - -grocy.info - -INVERT -.navbar-brand -.carousel-control-prev-icon -.carousel-control-next-icon - -================================ - -grubhub.com - -CSS -.s-checkbox-filler { - color: rgb(24, 26, 27) !important; -} -label, -h5, -h6, -header, -.h5 { - color: ${black}; -} - -================================ - -gsmchoice.com -mgsm.pl - -INVERT -.promo-sticky__item--large -.promo-sticky__item--small -.social-fixed--infoline -img[alt="GSMchoice.com"] -img[alt="mGSM.pl"] -img[src*="card_ico"] -img[src*="short"] - -================================ - -gsuite.google.com - -INVERT -.header--logo img - -================================ - -gu.spb.ru - -INVERT -ymaps[class$="ground-pane"] - -CSS -.bg { - background-image: var(--darkreader-neutral-background) !important; -} - -================================ - -guancha.cn - -CSS -.dahui { - background-image: none !important; -} - -================================ - -guiott.com - -CSS -.Section1 > div { - background-image: none !important; -} - -================================ - -guitarcenter.pl - -INVERT -tr > td > img -p.standard_price -p.promo_price - -================================ - -guitarworld.com - -INVERT -.site-logo - -================================ - -gumroad.com - -INVERT -.mega-gum-logo - -================================ - -gurushots.com - -CSS -.c-challenges-speed-item__countdown > .round-progress-wrapper, -.challengesItemSuggested__timer .round-progress-wrapper { - background-color: transparent !important; -} -.modal-vote__exposure-meter__arrow, -.modal-vote__exposure-meter__arrow::after { - background-color: var(--darkreader-neutral-text) !important; -} - -================================ - -gutrad.com - -CSS -.g_parallex_bnr li .g_no_slider { - color: black !important; -} - -================================ - -habitica.com - -INVERT -.logo path:nth-child(2) - -IGNORE IMAGE ANALYSIS -* - -================================ - -habr.com - -INVERT -img[src*="//tex.s2cms.ru/"] -img[data-tex] -img.formula - -CSS -html { - text-shadow: none !important; -} -.main-navbar .icon-svg { - fill: ${#929ca5} !important; -} - -================================ - -hacdias.com - -CSS -:root { - --background: var(--darkreader-neutral-background) !important; -} - -================================ - -hackerone.com - -INVERT -.app__logo - -================================ - -hackerrank.com - -INVERT -.badge-icon -.CodeMirror-cursors -.CodeMirror-selected - -CSS -.monaco-editor .cursor { - background-color: ${black} !important; -} - -================================ - -hampage.hu - -CSS -body { - background-image: none !important; -} - -================================ - -handshake.org - -INVERT -[src*="logo-dark.svg"] -[src*="blocks.svg"] - -CSS -ul.notes li::before { - background-color: var(--darkreader-neutral-text) !important; -} - -================================ - -handwiki.org - -CSS -#mw-content { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -haokan.baidu.com - -INVERT -.header-logo-icon - -================================ - -hazi.ro - -CSS -:root { - --app-nav-top-bg: var(--darkreader-neutral-background); - --dropdown-bg: var(--darkreader-neutral-background); - --input-bg: var(--darkreader-neutral-background); - --input-disabled-bg: var(--darkreader-neutral-background); - --site-section-bg: ${#ddd}; - --ui-block-bg: var(--darkreader-neutral-background); -} -.main-footer-extended.main-footer-extended-gray { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -hbo.com - -INVERT -img[alt="HBO Logo"] - -================================ - -hbr.org - -INVERT -.hamburger-icon -.top-header--logo -.search-icon -.footer-logo - -================================ - -hbweb.hu - -CSS -[background] { - background-image: unset; -} - -================================ - -hdgo.cc -vio.to - -INVERT -.hdplayer .big_play_button div -.hdplayer .hdgo_controls div.hdgo_pause_control div -.hdplayer .hdgo_controls div.hdgo_play_control div - -================================ - -hdlbits.01xz.net - -CSS -img.image, -.image > img { - background-color: white !important; - filter: brightness(50%) sepia(40%) !important; -} - -================================ - -headphones.com - -INVERT -.header__heading-logo - -CSS -#MainContent, -.header__menu-container, -details > ul, -.search__input { - background-color: rgb(30, 33, 34) !important; -} -.search__input::placeholder { - color: rgb(30, 33, 34) !important; -} - -================================ - -heise.de - -INVERT -.heise-online-logo - -================================ - -helix.ru - -INVERT -.Site-Header-Logo - -================================ - -help.ea.com - -CSS -.app, -.app > div { - background-image: var(--darkreader-neutral-background) !important; -} - -================================ - -help.nextdns.io - -INVERT -.logo-desktop -.logo-mobile - -================================ - -helzberg.com - -INVERT -.logo -.footer.content -.footer.content > div -.footer__column--logo - -IGNORE INLINE STYLE -a[id^="powered_by_pixleee"] - -================================ - -heraldscotland.com - -INVERT -.brand - -================================ - -heritage.org/index - -INVERT -.bar - -CSS -.content-container { - background-image: none !important; -} - -================================ - -hex-rays.com - -INVERT -#logo -.footer-logo - -================================ - -hexos.com - -CSS -.fe-block { - text-shadow: ${white} 1px 1px 0px !important; -} - -================================ - -hh.ru - -CSS -html { - text-shadow: none !important; -} - -================================ - -hificompass.com - -CSS -.field-slideshow-slide img { - background-color: cornsilk !important; -} - -================================ - -high-minded.cx - -CSS -i[aria-hidden="true"] { - font: normal normal normal 18px/1 "Material Design Icons" !important; -} - -================================ - -hindustantimes.com - -INVERT -.menu.noti-dot -.searchHolder .search -img[src$="logo-big-cm.png"] -img[src$="logo-ht.png"] -img[src$="htlogo.png"] - -================================ - -hionnature.com - -INVERT -img.header__heading-logo -div.footer-block-image > img - -CSS -.gradient { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -history.state.gov - -CSS -body { - background-image: none !important; -} - -IGNORE IMAGE ANALYSIS -body - -================================ - -hktdc.com - -INVERT -.header-logo - -================================ - -hm.com - -INVERT -[class^="TurnToReviewsButton-module--ratingStars"] - -CSS -.review-answers .review-answer .average-score { - background-color: var(--darkreader-neutral-text) !important; -} - -IGNORE INLINE STYLE -.swatch - -================================ - -hmong.* -wikihmong.com - -INVERT -span.mwe-math-element - -================================ - -hoi4.paradoxwikis.com - -INVERT -.mwe-math-fallback-image-inline - -================================ - -home.gamer.com.tw - -CSS -body { - background-color: transparent !important; -} - -IGNORE IMAGE ANALYSIS -.MSG-mainpic -#BH-main_menu -#BH-master h4 -.BH-slave_btns .BH-slave_btnA -#BH-slave h5 - -================================ - -homebrewery.naturalcrit.com - -CSS -.CodeMirror-scroll { - background-color: #444; -} -span[role="presentation"] { - color: white; -} -span[role="presentation"] > .cm-header { - color: rgb(50, 150, 250); -} -span[role="presentation"] > .cm-variable-2 { - color: rgb(50, 150, 250); -} -.phb blockquote { - background-color: #e0e5c1 !important; -} -.phb h3, -.phb h2, -.phb h1 { - color: #58180D; -} -.phb p { - color: black; -} -.cm-link, -.cm-attribute { - color: rgb(90, 140, 255) !important; -} -.cm-url, -.cm-string { - color: rgb(200, 50, 50) !important; -} -.cm-quote, -.cm-tag { - color: rgb(50, 200, 50) !important; -} - -================================ - -hooktail.sub.jp -hooktail.org - -INVERT -#box img -.box img - -CSS -#box, -.box { - background-color: var(--darkreader-neutral-background) !important; -} -h2 { - background-image: none; -} -a { - color: rgb(157, 149, 237); -} - -================================ - -hootsuite.com - -INVERT -img[src$="hootsuite_white_form3.png"] - -================================ - -host-c.com - -INVERT -.logo - -================================ - -hotcrp.com - -CSS -select, -button, -.btn, -button.btn-t:hover { - color: silver; -} - -================================ - -hotel.meituan.com - -INVERT -.poi-hotellbs-map -.small-map - -================================ - -howbuy.com - -INVERT -.bottomStar -.cpBottomWord -.logo -.navList dt -.phCon -.title -#valuationChar - -================================ - -howstuffworks.com - -INVERT -a[data-track-gtm="Logo"] - -================================ - -hp.com -*.hp.com - -INVERT -#g-nav .c-logo -.w-100 -img[src*="CCLS_SSL_Icon.svg"] -.lia-img-powered-by-khoros -a[aria-label="Options"] -.myprofile-img -.solutions-img -.mykudo-img -.ikudo-img -.osDetectionWindows img -.hpsaImg - -CSS -.pdp-bg { - background-image: none !important; -} - -================================ - -hs.fi - -CSS -article, -article > article { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -hstechdocs.helpsystems.com - -CSS -.body-container { - background-color: var(--darkreader-neutral-background) !important; -} -ul.sidenav li a, -ul.sidenav ul > li > a { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -httpwg.org - -CSS -svg.diagram text { - fill: var(--darkreader-neutral-text) !important; -} - -================================ - -huawei.com - -INVERT -.logo - -================================ - -huba.news - -INVERT -img[alt="Huba"] -img[alt="INTERIA.PL"] -.most-interesting-topics-header::before - -================================ - -hubs.mozilla.com - -INVERT -svg.hmc-logo - -================================ - -huji.ac.il/dataj/controller/ - -CSS -body { - background-image: none !important; -} - -================================ - -hvdic.thivien.net - -INVERT -img.hvres-variant-img.lazy - -CSS -body { - background-image: none !important; -} - -================================ - -hyperphysics.phy-astr.gsu.edu - -INVERT -tbody td > img -tbody center > img -tbody center > a > img - -================================ - -hyperskill.org - -INVERT -.html-preview - -CSS -.monaco-editor .margin, -.monaco-editor-background { - background-color: #181A1B !important; -} -.monaco-editor .cursor { - background-color: ${#000000} !important; -} -.step-text[data-v-341d1caa] pre { - background-color: var(--darkreader-neutral-background); -} - -================================ - -hypixel.net - -INVERT -.p-nav-inner -.message-avatar::after - -CSS -.p-navEl-link, -.p-header-playNow .p-header-playNow-button, -.p-navgroup-link--search { - color: ${rgb(214, 210, 205)} !important; -} - -================================ - -hypothes.is - -INVERT -a[href="https://hypothes.is"] > svg[aria-labelledby="logo-title"] > g > path[fill-rule="nonzero"] -img[class="fusion-standard-logo"] - -================================ - -i-item.jd.com - -CSS -.itemInfo-wrap .summary-price-wrap .summary-top .summary-promotion { - background-image: none !important; -} - -================================ - -ica.coop - -INVERT -.main-header__logo - -================================ - -icloud.com - -INVERT -.rm-list-body -.note-list-item-attachment -.sc-iujRgT.jxLrRl -.icloud-text.image -.img.app-icon-icloud -#cloudos-loading-spinner -.editor-container -.light > svg -#.apple-icloud-logo > g > path:first-child -#.apple-icloud-logo.dark > g > path:last-child - -CSS -.cw-pane-container, -.reminders { - background-image: none !important; -} -.homepage-viewport .homepage-gradient-background { - filter: grayscale(0.8) !important; -} -.content > .title { - color: var(--darkreader-neutral-background) !important; -} -.content > .description { - color: var(--darkreader-neutral-background) !important; -} - -================================ - -icofont.com - -INVERT -.logo - -================================ - -iconfinder.com - -INVERT -.logo - -================================ - -iconify.design - -IGNORE INLINE STYLE -svg.iconify * -svg#footer-icon-name * -svg#icon-nav-prev * -svg#icon-nav-next * -.si-svg-wrapper svg * -.block-container .icons svg * - -================================ - -icons8.com - -CSS -.main-page .gradient { - background-image: none !important; -} - -================================ - -icrc.org - -CSS -.logo, -.logo img { - background-color: #fff !important; -} - -================================ - -id.fedoraproject.org - -INVERT -img[alt="logo"] - -================================ - -id.unity.com - -CSS -.qr-code { - border: calc(150px * 1/45) solid #f5f8f9; -} - -================================ - -identity.kde.org - -CSS -body, -.navbar-inner, -.navbar { - background-image: none !important; -} - -================================ - -ieee.org - -INVERT -.logo-left - -================================ - -iett.istanbul - -CSS -#routedesc p:nth-child(2) { - font-size: 0; -} -#routedesc p:nth-child(2)::after { - content: "Kırmızı renkli seferler ÖHO ve OAŞ; beyaz renkli seferler İETT’ye aittir."; - font-size: 20px; -} - -================================ - -ifixit.com - -INVERT -a[aria-label="home page"] > svg > path:first-child - -IGNORE IMAGE ANALYSIS -* - -================================ - -iflscience.com - -INVERT -.header-primary div a svg -.footer-branding a svg -.footer-subscribeBox div span a svg - -================================ - -ifood.com.br - -CSS -.responsive-header__logo svg { - --darkreader-inline-fill: rgb(212, 45, 58) !important; -} - -================================ - -igurublog.wordpress.com - -CSS -body, -.entry, -#content, -#container { - background-image: none !important; -} - -================================ - -ikea.* - -CSS -.range-revamp-ratings-bar__star--empty path, -.range-revamp-ratings-bar__star--half path:first-child { - fill: ${rgb(246, 245, 244)} !important; -} -.hnf-svg-icon { - fill: var(--darkreader-neutral-text) !important; -} -.card, -.card-header, -.card-footer { - background-color: var(--darkreader-neutral-background) !important; -} - -IGNORE INLINE STYLE -.gpr__color-dot - -================================ - -iliad.it - -IGNORE IMAGE ANALYSIS -.background - -================================ - -ilovepdf.com - -INVERT -.brand__logo -.ico--down -.ico--desk -.ico--hamburger - -================================ - -ilyabirman.* - -INVERT -img[src*="layout-win"] - -CSS -body { - background: none !important; -} - -================================ - -image-net.org - -INVERT -img[src="/static_files/index_files/logo.jpg"] - -================================ - -imap: -pop3: - -CSS -table[class|="moz-header"] { - background: none; -} - -================================ - -imdb.com - -INVERT -.a-icon -.jw-slider-volume - -CSS -#wrapper { - background: ${#e3e2dd} !important; -} -.ipc-page-section--base { - --ipc-pageSection-base-bg: var(--darkreader-neutral-background) !important; -} -:root: { - --darkreader-bg--ipt-baseAlt-shade1-bg: var(--darkreader-neutral-background) !important; -} -.imdb-header__nav-drawer div, -.ipc-menu--on-baseAlt, -.imdb-header__search-menu, -.ipc-promptable-base__panel { - background-color: var(--darkreader-neutral-background) !important; -} -.ipc-promptable-base__content { - background-color: #171a1b !important; -} -div[class^="SubNav__SubNavContainer"], -div[class^="Media__ButtonContainer"] > a, -div[class*="WatchlistButton__ButtonParent"] > button, -a[class*="EmptyState__FYWStateButton"], -a[class*="EmptyState__FromYourWatchlistRibbon"] > svg, -.ipc-poster-card, -.ipc-poster-card__actions > .ipc-button { - background: rgba( var(--ipt-on-baseAlt-rgb,255,255,255),var(--ipt-baseAlt-hover-opacity,0.08) ) !important; -} -div[class^="SubNav__ShareButtonWrapper"]::before, -div[class^="Root__Separator"] { - background: rgba(var(--ipt-base-rgb,255,255,255),0.2); -} -.ipc-title__text::before, -.ipc-tabs__indicator { - background: #f5c518 !important; -} -.ipc-signpost--accent1 { - background: var(--darkreader-bg--mdc-theme-ipt-accent1-color, #bb9508) !important; -} -hgroup[class*="ipc-title--category-title"] > .ipc-title__text, -.ipc-title-prompt__title { - color: #f5c518 !important; -} -.boxOfficeTitle:nth-of-type(2n) { - background: linear-gradient( to right,rgba(var(--ipt-on-baseAlt-rgb),0),rgba(var(--ipt-on-baseAlt-rgb),0.06) ) !important; -} -div[class^="VideoInfostyles__VideoDescriptionOverlay"] { - background: linear-gradient(transparent 50%,var(--ipt-baseAlt-bg)) !important; -} -main { - background: var(--ipc-pageSection-baseAlt-bg) !important; -} -.ipc-watchlist-ribbon__bg-ribbon { - fill: rgba(var(--ipt-baseAlt-shade1-rgb), 0.75) !important; -} -.ipc-watchlist-ribbon--inWatchlist .ipc-watchlist-ribbon__bg-ribbon { - fill: #BB9508 !important; -} -.ipc-switch__slider::before, -.ipc-switch__slider::after { - background: #5799ef !important; -} -.aux-content-widget-2 { - background: none !important; -} -.ipc-tabs--display-chip .ipc-tab--active, -.ipc-tabs--display-chip .ipc-tab--active:hover { - background: ${rgb(245,197,24)} !important; -} - -================================ - -immobilienscout24.de - -INVERT -img[alt^="ImmobilienScout24"] -.topnavigation__sso-login__plus-logo -.button-primary -.main-search__content--rent--from-0 -.result-list-entry__new-flag -.product-teaser__image -.no-of-results-highlighter - -CSS -.result-list__listing { - background-color: transparent !important; -} - -================================ - -imwithgeekarchive.weebly.com - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -inaturalist.org - -INVERT -.logolink - -================================ - -inc.com - -INVERT -svg[class*="logo"] - -================================ - -ind.ie - -INVERT -.three-rs .three-rs-list p - -================================ - -independent.co.uk - -INVERT -.logo-text -#MegaMenuButton -.search-toggle -.jw-slider-horizontal -.jw-slider-volume - -IGNORE INLINE STYLE -.logo-svg-cls-2 - -================================ - -inet.se - -INVERT -.h1yh8nho -a.item-button span[class*="icon"] - -CSS -:root { - --svg-icon-default-color: #e8e6e3 !important; -} - -================================ - -infinity-academies.com - -INVERT -img.bb-logo -img[src*="profile-avatar-buddyboss-50.png"] - -================================ - -infinitysearch.co - -INVERT -img[src$="github.ico"] -img[src$="unsplash.png"] -img[src$="boardreader.ico"] -#logo_img_home[src$="logo_text_black.png"] - -================================ - -info.wyborcza.biz - -INVERT -.imgw - -================================ - -infoq.com - -CSS -.bg-cover { - background-blend-mode: multiply; -} - -================================ - -inforlex.pl - -INVERT -div[class="content -dark"] -div[class="loginLogo"] -img[src*="infor-lex_2020.jpg"] -a[class="client-logo-entry"] - -================================ - -informa.com - -INVERT -.header-logo - -================================ - -informatech.com - -INVERT -.log-img - -================================ - -inibuilds.com - -INVERT -.header__heading-logo -.icon -img[alt="add icon"] -img[alt="plus"] -.footer-block__image-wrapper -.list-social__link - -IGNORE IMAGE ANALYSIS -.flagged .flags-AUD -.flagged .flags-EUR - -================================ - -inoreader.com - -CSS -.article_expanded { - background-color: rgb(31, 35, 38) !important; -} - -================================ - -inspirehep.net - -CSS -svg text { - fill: ${black} !important; -} - -================================ - -instagram.com - -INVERT -.s4Iyt -.coreSpriteActivityHeart -.coreSpriteAppStoreButton -.coreSpriteCall -.coreSpriteCheck -.coreSpriteCi -.coreSpriteClose -.coreSpriteDesktopNavDirect -.coreSpriteDesktopProfileSaveActive -.coreSpriteDesktopProfileTaggedActive -.coreSpriteDirectHeart -.coreSpriteDownload -.coreSpriteDropdownArrowGrey9 -.coreSpriteGallery -.coreSpriteGooglePlayButton -.coreSpriteKeyhole -.coreSpriteLockSmall -.coreSpriteLoggedOutWordmark -.coreSpriteMobileNavDirect -.coreSpriteMobileNavTypeLogo -.coreSpriteNavBack -.coreSpriteNotificationLeftChevron -.coreSpriteNullProfile -.coreSpriteOptionsEllipsis -.coreSpritePagingChevron -.coreSpriteProfileCamera -.coreSpriteReload -.coreSpriteSaveNull -.coreSpriteSpinstaStory -.coreSpriteStoryCreation -.coreSpriteTaggedNull -.coreSpriteVideoNux -.coreSpriteWindowsStoreButton -.coreSpriteWordmark -.glyphsSpriteAdd__outline__24__grey_9 -.glyphsSpriteAdd_friend__outline__96 -.glyphsSpriteApp_instagram__outline__24__grey_9 -.glyphsSpriteApp_messenger__outline__24__grey_9 -.glyphsSpriteApp_twitter__outline__24__grey_9 -.glyphsSpriteApp_whatsapp__outline__24__grey_9 -.glyphsSpriteCall__outline__24__grey_9 -.glyphsSpriteCamera__outline__24__grey_9 -.glyphsSpriteChevron_down__outline__24__grey_9 -.glyphsSpriteChevron_left__outline__24__grey_9 -.glyphsSpriteChevron_up__outline__24__grey_9 -.glyphsSpriteCircle_add__outline__24__grey_9 -.glyphsSpriteComment__outline__24__grey_9 -.glyphsSpriteContact_import -.glyphsSpriteContact_import_sm -.glyphsSpriteDirect__outline__24__grey_9 -.glyphsSpriteDirect__outline__96 -.glyphsSpriteDownload_2FAC -.glyphsSpriteError__outline__24__grey_9 -.glyphsSpriteError__outline__96 -.glyphsSpriteFacebook__outline__24__grey_9 -.glyphsSpriteFb_brand_center_grey -.glyphsSpriteForward__outline__24__grey_9 -.glyphsSpriteFriend_Follow -.glyphsSpriteGlyph_chevron_right -.glyphsSpriteHashtag__outline__24__grey_9 -.glyphsSpriteHeart__filled__16__grey_9 -.glyphsSpriteHeart__filled__24__grey_9 -.glyphsSpriteHeart__outline__24__grey_9 -.glyphsSpriteHome__filled__24__grey_9 -.glyphsSpriteHome__outline__24__grey_9 -.glyphsSpriteInfo__filled__16__grey_9 -.glyphsSpriteLink__outline__24__grey_9 -.glyphsSpriteLocation__outline__24__grey_9 -.glyphsSpriteLock__outline__24__grey_9 -.glyphsSpriteLock__outline__96 -.glyphsSpriteMail__outline__24__grey_9 -.glyphsSpriteMenu__outline__24__grey_9 -.glyphsSpriteMore_horizontal__outline__24__grey_9 -.glyphsSpriteNew_post__outline__24__grey_9 -.glyphsSpritePaging_chevron -.glyphsSpritePlay__filled__16__grey_9 -.glyphsSpriteSave__filled__24__grey_9 -.glyphsSpriteSave__outline__24__grey_9 -.glyphsSpriteSearch__filled__24__grey_9 -.glyphsSpriteSearch__outline__24__grey_9 -.glyphsSpriteSettings__outline__24__grey_9 -.glyphsSpriteShare__outline__24__grey_9 -.glyphsSpriteShopping__outline__16__grey_9 -.glyphsSpriteStar_filled_24 -.glyphsSpriteStar_half_filled_24 -.glyphsSpriteStory__outline__24__grey_9 -.glyphsSpriteUser__filled__24__grey_9 -.glyphsSpriteUser__outline__24__grey_9 -.glyphsSpriteUser_follow__filled__24__grey_9 -.glyphsSpriteUser_follow__outline__24__grey_9 -.glyphsSpriteUsers__outline__24__grey_9 -.glyphsSpriteVideo_chat__outline__24__grey_9 -.glyphsSpriteWhatsapp__outline__24__grey_9 -.glyphsSpriteX__outline__24__grey_9 -span.LikeSprite.embedSpriteHeartOpen -span.hideText.embedSpriteComment -span.hideText.embedSpriteShare -span.hideText.embedSpriteSaveOpen -span.Sprite.embedSpriteGlyph.hideText -.-Nmqg -svg[aria-label*="Facebook"] -a[role="link"][href="/"] i[role="img"] - -CSS -div > a[tabindex], -div > span > a[tabindex] { - border-color: transparent !important; -} -._ac3p { - background-color: rgb(180, 180, 180) !important; -} -._ac3o { - background-color: rgb(68, 68, 68) !important; -} - -================================ - -instructables.com - -INVERT -.site-logo - -================================ - -instructure.com - -INVERT -.equation_image -.Page-container - -================================ - -interaktywnie.com - -INVERT -img[alt="Interaktywnie.com"] -img[src*="companym/"] - -================================ - -interia.pl - -INVERT -.logo -.search-submit - -CSS -.calendar-date, -.calendar-body { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -internetexchangemap.com - -INVERT -div[aria-label="Map"] > div:first-child -div.fade - -================================ - -internetowa.tv - -INVERT -img[src*="/img/"] - -CSS -.star-on-png::before { - color: #FCAD03 !important; -} - -================================ - -interpride.org - -INVERT -.logo .img-responsive - -================================ - -investopedia.com - -INVERT -.widget-ticker-container -.mntl-dotdash-universal-nav__logo - -================================ - -invisioncommunity.com - -INVERT -img[src*="customer_logos.png"] -img[src*="logo_dark.png"] -img[src*="footer"] -.cDownloadsCategoryCount - -CSS -.ipsBadge { - --darkreader-bg--badge--background: var(--darkreader-neutral-background) !important; -} -.ipsReact_reactCount > a, -.ipsReact_reactCount > span, -.elFullInbox_menu, -.ipsMenu_auto, -.ipsMenu_footerBar, -.ipsMenu_headerBar, -.ipsMenu_innerContent, -.ipsMenu_item, -.ipsMenu_sep, -.ipsMenu_title, -.ipsPadding { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -inwestomat.eu - -CSS -main { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -iopscience.iop.org - -INVERT -.article-text img[alt^="$"] - -================================ - -ip-api.com - -INVERT -img[alt="logo"] - -================================ - -ipinfo.io - -INVERT -.navbar-brand - -================================ - -ipko.pl - -INVERT -._1vyn4 - -CSS -._1IGN3 { - background-size: 75px 56px !important; -} -._3cnGx::before { - background-size: 112px 80px !important; -} -._3o8il { - background-size: 48px 48px !important; -} -._2A4oT::before { - background-size: 36px 38px !important; -} - -================================ - -iplocation.net - -INVERT -img[src="/assets/images/logo.png"] - -================================ - -iqiyi.com - -INVERT -.qy-micro-bg - -================================ - -irishtimes.com - -INVERT -.masthead-block-logo img - -================================ - -is.muni.cz - -INVERT -.isElInput_label_latex -.se-tex-img - -================================ - -isbgpsafeyet.com - -CSS -h1, -h2, -h3, -h4, -h5, -h6 { - color: rgb(255, 255, 255) !important; -} -.Hero, -.Footer { - background: None !important; -} -.Button-is-primary { - background: var(--primary-background-color); -} - -================================ - -isharkieblanket.com - -CSS -.gradient { - background: var(--darkreader-neutral-background) !important; -} -h1, -h2, -h3, -h4, -h5, -.h0, -.h1, -.h2, -.h3, -.h4, -.h5, -.header__active-menu-item, -.header__menu-item, -.color-background-1, -.color-background-2, -.color-inverse, -.list-menu__item--link, -.localization-selector.link, -.price, -.rte a, -.shopify-payment-button__more-options, -.link { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -ising.pl - -CSS -body.grey-gui-bg #content, -div.grey-gui-bg, -.small-navy-heading, -.small-blue-heading, -.small-purple-heading, -.small-navy2-heading { - background-image: none !important; -} - -================================ - -isitdownrightnow.com - -CSS -.ts1, -.ts2, -.ts3, -.ts4, -.ts5, -.ts6, -.ts7, -.ts8, -.ts9, -.ts10, -.ts11, -.ts12, -.ts13, -.ts14, -.ts15, -.ts16, -.ts17, -.ts18, -.ts19, -.ts20, -.ts21, -.ts22, -.ts23, -.ts24, -.ts25, -.ts26, -.ts27, -.ts28, -.ts29, -.ts30, -.ts31, -.ts32, -.ts33, -.ts34, -.ts35, -.ts36, -.ts37, -.ts38 { - background-image: none !important; -} - -================================ - -istanbulfm.com.tr - -CSS -#jarallax-container-0 { - z-index: 0 !important; -} - -================================ - -italy-vms.ru - -INVERT -#main_logo - -================================ - -itbiznes.pl - -INVERT -.custom-logo - -================================ - -itch.io - -INVERT -.header_widget .mobile_nav_btn - -CSS -.index_page .app_banner .outline_button, -.youtube_game_promo_banner_widget .game_information .cta_button { - border-color: var(--darkreader-neutral-text) !important; -} - -================================ - -item.jd.com - -IGNORE IMAGE ANALYSIS -* - -================================ - -itemfix.com - -INVERT -.logo-outer -.footer-logo -a[href="ll"] - -================================ - -ithardware.pl - -INVERT -.navbar-brand -a[href*="uzywki.expert"] -a[href*="rankingi"] -a[href*="feed"] - -================================ - -iu-fernstudium.de - -INVERT -.cp-logo -.cp-contact-bubble__svg-open -svg[class$="transform"] - -================================ - -iubenda.com - -INVERT -img[alt="Iubenda logo"] - -================================ - -iupts.org - -CSS -body, -.loginbg { - background-image: none !important; -} - -================================ - -ixbt.com - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text); -} - -================================ - -jacobin.com - -INVERT -.hm-sd-b-ty -.hm-sd-b-ty > * -.po-cn .po-cn__intro -.po-cn .po-cn__intro > * -.po-cn .po-cn__rule -.po-hr-cn -.po-hr-cn > * -.pq::after -.pq::before -.si-hr-nv__icon--menu - -================================ - -jailbreak.fce365.info - -CSS -body { - background-image: none !important; -} - -================================ - -jakdojade.pl - -INVERT -#main-map - -================================ - -jamboard.google.com - -INVERT -.docs-icon-img-container -.jam-button-content -.jam-icon-palette-black -.jam-icon-sticky-note-black - -================================ - -jamendo.com - -INVERT -.player-volume_range_track -.player-volume_range_fill - -================================ - -japscan.lol - -CSS -body { - background-image: none !important; -} - -================================ - -jared.com -kay.com -banter.com -peoplesjewellers.com -zales.com - -INVERT -.company-logo - -================================ - -java.com - -INVERT -html #jvc0v2.bg1 .jvc0w1 -html #jvc0v2.bg3 .jvc0w1 -html #jvc0v2.bg5 .jvc0w1 - -================================ - -jbl.com - -CSS -.product-tile .product-image .thumb-link img { - mix-blend-mode: normal !important; -} -.search-refinement, -i[class^="icon"].hidden-xs { - color: var(--darkreader-neutral-text) !important; -} -.product-tile .product-image { - background-color: white !important; -} -.product-tile .product-swatches .swatch-list li.selected img, -.product-tile .product-swatches .swatch-list li.selected:hover img { - border-color: white !important; -} - -================================ - -jegy.mav.hu - -INVERT -.service-icon-container -.standard-icon-size - -CSS -.text-content .box { - color: black !important; -} -div[style='background-image: url("https://jegy.mav.hu//PlaceReservationIcons/Graphic/Cars/wagon_base-empty.svg");'] span { - color: black !important; -} - -IGNORE INLINE STYLE -g[id*="ules"] path -#seat-info-container svg path -span - -================================ - -jenkins.io - -IGNORE INLINE STYLE -.logo-jenkins * - -================================ - -jewishcurrents.org - -INVERT -img[alt="Jewish Currents"] - -================================ - -jira.*.com - -INVERT -.aui-dropdown2-trigger::after - -================================ - -jira.*.services - -CSS -.hstbad { - z-index: 1 !important; -} - -================================ - -jisho.org - -INVERT -h1.logo -.stage - -================================ - -jobs.github.com - -CSS -#page { - background-image: none !important; -} - -================================ - -joemonster.org - -INVERT -#commentHeader -.art-details span -.item-vote-down -.logo -.moderb -.mtv-item-not-working -.vote-down -.vote-up - -CSS -body { - background-image: none !important; -} - -================================ - -johnhorgan.org - -CSS -.column-sidebar-02 h4, -.column-sidebar-02 div, -.column-sidebar-02 a { - color: ${white} !important; -} - -================================ - -joincake.com - -INVERT -.theme-revamp .bg-wave -.theme-revamp .bg-wave > * - -CSS -.theme-revamp .bg-wave { - background-color: white !important; -} - -================================ - -joinhoney.com -*.joinhoney.com - -INVERT -img[src$="paypal-honey-logo-bl.svg"] -img[src$="star-honey-rating.svg"] - -CSS -#lp-pom-block-11 { - background-color: black; -} - -================================ - -joplinapp.org - -CSS -#in-the-press-section { - background-image: none !important; -} - -================================ - -journal.tinkoff.ru - -INVERT -._17-LK > span -._3aEco -._1Dhxk -.uVy35.V6dif::before -._38Vkx.FrrKu::after -._3LO60._4GqdT::after -.PwECA -.best-authors__arrow.best-authors__arrow--active -.best-authors__arrow -label[class^="hamburgerMenu"] - -================================ - -jpl.nasa.gov - -CSS -.brand_area { - background-image: url("https://www.jpl.nasa.gov/assets/images/logo_nasa_trio_white@2x.png") !important; -} - -================================ - -jpmorgan.com - -INVERT -.first-logo - -================================ - -jpost.com - -INVERT -img[alt*="The Jerusalem Post"] -img[class*="header"] -.btn-digital-library-header > img - -================================ - -jsdelivr.com - -INVERT -.navbar-brand > img - -================================ - -jsware.net - -INVERT -img[src="since.gif"] - -CSS -h5.H5Dex, -td.Dex { - background: unset !important; -} - -================================ - -juejin.cn - -INVERT -.equation - -================================ - -jumia.* -jumia.*.* -zando.co.za - -INVERT -svg.ic[role="img"]:not([aria-label="Zando logo"]) -.logo > a > img -.inbox > a:not(:nth-of-type(1)) > svg -img[src*="jumia-group-logo.png"] -img[src*="jumia_logo_small_checkout.png"] -img[src*="/Jumia-Pay"] -li.logo:nth-child(1) > .-i-jumia-logo -.-ecosystem > a.-category.-inlineblock.-vatop:not([href*="mall"]) > img -img[src*="empty-cart.png"] -.-header > img:nth-child(1) -.-gy5 > .-fs0 > .vent-link[title*="Rewards"] -.-gy5 > .-fs0 > .vent-link[title*="Pay"] -.-gy5 > .-fs0 > .vent-link[title*="Primo"] -.-gy5 > .-fs0 > .vent-link[title*="Food"] -.-gy5 > .-fs0 > .vent-link[title*="Party"] -.-gy5 > .-fs0 > .vent-link[title*="Now"] -.col4 > .s-menu > a:not(:nth-child(1)):not(:nth-child(3)):not(:nth-child(7)) > svg -div.-fw-w:nth-child(1) > a.-fs0 > img -article.-df > svg > use -svg.ic.xprss -div.-df.-d-co.-c-bet > h3.-fw > svg.ic -a.fk-cb.-me-start.-fsh0 > svg.ic.-h-24 - -================================ - -justhost.ru - -INVERT -.header__logo - -================================ - -justtherecipe.com - -INVERT -flt-glass-pane - -================================ - -juwai.com - -INVERT -.c-header__logo -.c-responsive-navigation__logo - -================================ - -jvc.net - -INVERT -img[src="img/logo.jpg"] - -================================ - -k-report.net - -CSS -.dfzlu1 div, -#diskuse_zahlavi a, -.dfprofil, -#diskuse_zahlavi td { - color: var(--darkreader-neutral-background) !important; -} - -================================ - -kaggle.com -kaggleusercontent.com - -CSS -div.output_png img { - background-color: ${black} !important; -} - -IGNORE INLINE STYLE -div.output_png img - -================================ - -kahoot.it - -INVERT -main[data-functional-selector="correct-answer"] > div > div > div > svg > g > path -main[data-functional-selector="incorrect-answer"] > div > div > div > svg > g > path -main[data-functional-selector="time-up-answer"] > div > div > div > svg > g > path -div[data-functional-selector="kahoot-settings__language-picker"] > div > div > div > div > img -.sc-iqxcLP.klWCeb -g#Background -g#Greyscale -span[data-functional-selector="kahoot-logo"] > svg > g > path - -IGNORE INLINE STYLE -[data-functional-selector^="answer"] -[data-functional-selector="intro-animation-animation_pre-question-animation"] * - -IGNORE IMAGE ANALYSIS -* - -================================ - -kaldata.com - -IGNORE IMAGE ANALYSIS -.tdi_112 .tdb-featured-image-bg - -================================ - -kali.org - -CSS -#kali-platforms .card > div { - background-image: none !important; -} - -IGNORE IMAGE ANALYSIS -#banner-logo - -================================ - -kamigame.jp - -CSS -article, -.article { - background-image: none !important; -} - -================================ - -kaos-community-packages.github.io - -INVERT -.Header-brand - -================================ - -kaosx.us - -INVERT -.Header-brand img - -================================ - -kapitanbomba.pl - -INVERT -.custom-logo - -================================ - -kartotekaonline.pl - -CSS -body { - background-image: none !important; -} - -================================ - -kasmedia.com - -CSS -.flex { - z-index: 1 !important; -} -.z-10 { - z-index: 0 !important; -} - -================================ - -katahiromz.web.fc2.com - -CSS -body { - background-image: none !important; -} - -================================ - -kaytrip.com - -INVERT -.date -.jd_ss -.liuchengt -.nApp -.nTel -.n_app -.tt_t -.wmap - -CSS -#imageField { - background-color: transparent !important; -} -.jd_xl { - filter: none !important; -} - -================================ - -kbb.com - -IGNORE INLINE STYLE -svg[class*="LogoText"] g - -================================ - -kcsoftwares.com - -CSS -.status-10-fg { - color: #FF14FF !important; -} -.status-20-fg { - color: #FF2190 !important; -} -.status-30-fg { - color: #FFF719 !important; -} -.status-40-fg { - color: #FF1919 !important; -} -.status-50-fg { - color: #0062FF !important; -} -.status-80-fg { - color: #47FF19 !important; -} -.status-90-fg { - color: #727985 !important; -} - -================================ - -keep.google.com - -INVERT -img[src$="google_gsuite"] -.gb_hc - -================================ - -keepa.com - -INVERT -div#loadingIcon -div.pLText - -================================ - -keepass.info - -INVERT -img[src="help/images/trans.png"] - -CSS -body { - background-image: none !important; -} - -================================ - -keepassxc.org - -CSS -.btn-primary { - color: var(--darkreader-neutral-background) !important; -} - -================================ - -kelkoo.it - -IGNORE INLINE STYLE -svg * - -================================ - -kenh14.vn - -CSS -.kbwcb-left, -.kbwcb-left::before { - background-image: none !important; -} - -================================ - -kenmore.com - -INVERT -.navbar-brand - -================================ - -kenwood.com - -INVERT -.logo01 - -================================ - -kernel.org - -INVERT -img[src*="understand"] - -================================ - -keychron.* - -INVERT -img[src*="keychron-logo-transparent"] -img[src*="keychron_600_V1.png"] -.btn--secondary - -CSS -body, -.header, -.product-info, -.footer { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -keyserver.pgp.com - -INVERT -a.button-text -#ImPGPComHelp -#ImPGPComHome -[src="images/crystal_button_left.gif"] -[src="images/crystal_button_left-dark.gif"] -[src="images/crystal_button_right.gif"] -[src="images/crystal_button_right-dark.gif"] -[src="images/global_dir_logo_web.gif"] -[background="images/crystal_button_fill.gif"] -[background="images/crystal_button_fill-dark.gif"] - -CSS -.card-top, -.card-top-left-corner, -.card-top-right-corner, -.divide-fill, -.header-bar-left, -.header-bar-right, -.title-left, -.title-right { - background-image: none !important; -} - -================================ - -kfccoupons.co.nz - -CSS -.img-container { - z-index: 0 !important; -} -.img-container > img { - filter: brightness(50%) sepia(40%) !important; -} - -================================ - -khronos.org - -INVERT -.navbar-brand - -================================ - -kiedyprzyjedzie.pl - -INVERT -.cluster-marker div -.leaflet-pane > .leaflet-layer - -CSS -.cluster-marker div span { - color: var(--darkreader-neutral-background) !important; -} - -================================ - -killedbygoogle.com - -INVERT -img[src*="e.svg"] -img[src*="-logo"] - -================================ - -kingston.com - -INVERT -.s-kt-navigation .nav-logo img - -================================ - -kinhmatanna.com - -INVERT -img[src$="/logo-anna.svg"] -img[src$="/anna-text.svg"] -i.eicon -.elementor-button-icon > svg -.elementor-button-icon > svg > g - -CSS -.elementor-button-icon::before { - z-index: 1 !important; -} -.elementor-icon svg { - fill: #f0f0f0 !important; -} -a[href="/danh-muc-san-pham/gong-kinh/"] { - background-color: black !important; - border-color: black !important; - color: white !important; -} -a[href="/danh-muc-san-pham/gong-kinh/"]:hover { - filter: invert(100%) contrast(90%) !important; -} -.product:not(div[data-elementor-type="product-archive"]) { - background-color: #121212 !important; -} -.ast-container > div > section:nth-child(4) > div > div:nth-child(2) > div > div:nth-child(4) { - z-index: 0 !important; -} - -================================ - -kinoart.ru - -INVERT -main > div > svg -header > a > svg -footer > div > svg -header > div > a > svg - -================================ - -kinopoisk.ru - -CSS -input[name="kp_query"]::placeholder { - background-image: linear-gradient(45deg, var(--darkreader-neutral-text) 70%, transparent 100%) !important; -} -input[name="kp_query"] { - background-color: ${lightgray}; -} -input[name="kp_query"]:focus { - background-color: ${rgb(195, 195, 195)}; -} - -================================ - -kinsta.com - -INVERT -.wp-block-kinsta-hero-title -.wp-block-kinsta-hero-title > * - -================================ - -kinzhal.media - -INVERT -img[src$="logo.svg"] -img[src$="search.svg"] -img[src$="close.svg"] -.footer-soc -.footer__18 -.kinzhal-icon - -================================ - -kioxia.com - -INVERT -.header__logo - -================================ - -klubjagiellonski.pl - -INVERT -.logo -.site_hamb svg - -================================ - -knaben.eu - -INVERT -a[href="https://matrix.to/#/#general:knaben.org"] - -CSS -form .text-darker, -div.text-bright, -div.text-darker, -pre.text-bright, -h3.text-darker, -h1.text-darker, -h2.text-bright, -button.text-darker { - color: var(--darkreader-text-netural) !important; -} - -================================ - -knife.media - -INVERT -svg[class$="logo-image"] -.explorer__header-close - -================================ - -knossos.sice.com - -CSS -#sidebar { - background: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} -input, -select, -textarea { - background: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} -.drdn-trigger, -tr.group td { - background: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} - -================================ - -knowyourmeme.com - -INVERT -.enlargeNavigation > #enlargeNav-prev -.enlargeNavigation > #enlargeNav-next - -================================ - -ko-fi.com - -INVERT -img[alt="Ko-fi Logo"] -.ui-mobile-nav-toggle - -================================ - -kohls.com - -INVERT -.top-global-header #logo - -================================ - -komorkomat.pl - -INVERT -.navbar-brand > img -.owl-wrapper -.result-item-logo - -================================ - -komputerswiat.pl - -INVERT -.serviceLogoImg -.serviceIcon -.secondaryLogoImg - -================================ - -konicaminolta.us - -INVERT -#km_Header .logo img - -================================ - -konkret24.tvn24.pl - -INVERT -.header-left-corner__logo -.menu-button__bars -.report-toggle-button__icon -.search-panel-toggle-button__icon - -================================ - -konto.onet.pl/signin - -INVERT -img[alt="Business Insider"] - -================================ - -kopalniawiedzy.pl - -INVERT -img[alt="Patronite"] - -================================ - -korso24.pl -korsosanockie.pl - -INVERT -img.weather-box__img -.nav-top__logo-wrapper -.nav-top__footer-burger > div > span -a.footer__logo - -================================ - -kort.foroyakort.fo - -INVERT -.header-section > a:first-child -.container-section > .icon-node - -================================ - -kraken.com - -CSS -header > nav > ul > li > a::after, -span[data-testid^="asset-pair"][data-testid$="-low"] + div > :last-child { - background-color: var(--darkreader-neutral-text) !important; -} - -================================ - -krew.info - -INVERT -a[class*="kropla"] - -================================ - -krita.org - -CSS -.container { - background: none !important; -} - -================================ - -krytykapolityczna.pl - -INVERT -img[src*="logo"] - -================================ - -ksiegowawsieci.pl - -INVERT -.logo - -================================ - -kubuntu.org - -INVERT -.logo - -================================ - -kulinarnyblog.pl - -INVERT -.logo-img - -================================ - -kwyk.fr - -CSS -body { - background-image: none !important; -} - -================================ - -kyivindependent.com - -INVERT -.custom-logo-link -.donate__patreon::before - -================================ - -l10n.kde.org - -CSS -body { - background-image: none !important; -} - -================================ - -labcorp.com - -INVERT -.logo - -================================ - -labfolder.com - -CSS -:root { - --secondary-color: ${#002b56} !important; -} - -================================ - -laczynasnapiecie.pl - -INVERT -.navbar-brand -.tim-power -.row-partners-logo a - -================================ - -ladybird.org - -INVERT -.text-black img - -CSS -.text-\[\#000\] { - text-shadow: ${rgb(225, 212, 201)} 1px 1px 0px !important; -} - -================================ - -lafibre.info - -CSS -.frame, -#header { - background-image: none !important; -} - -================================ - -lajtmobile.pl - -CSS -body > * { - --background: var(--darkreader-neutral-background) !important; -} -.ls-bg-wrap > img, -.generatorTemplate > .columnsBlockGeneratorBlock.mobileHide { - filter: brightness(50%) sepia(40%) !important; -} -.columnsBlockGeneratorBlock .offertBlock:not(.highlightOffert), -.generatorTemplate > .columnsBlockGeneratorBlock.mobileHide, -.summaryModule, -.formModule, -input[type="text"] { - background: var(--darkreader-neutral-background) !important; -} -.generatorTemplate > .columnsBlockGeneratorBlock.mobileHide > * { - background: ${#FEF} !important; -} - -================================ - -lambda-the-ultimate.org - -CSS -a { - color: #3391ff !important; -} - -================================ - -lambdalabs.com - -INVERT -.lambda-logo - -================================ - -lambdatest.com - -INVERT -.tools_logo a img - -================================ - -landscan.ornl.gov - -INVERT -img[src*="tile.openstreetmap.org"] -img[src*="landscan.ornl.gov/tiles"] - -CSS -.global-key-values .square1 { - background-color: ${${#15150d}}; -} -.global-key-values .square2 { - background-color: ${${#1f1f0d}}; -} -.global-key-values .square3 { - background-color: ${${#2e2e0d}}; -} -.global-key-values .square4 { - background-color: ${${#9b4e0d}}; -} -.global-key-values .square5 { - background-color: ${${#f2690e}}; -} -.global-key-values .square6 { - background-color: ${${#f29191}}; -} -.global-key-values .square7 { - background-color: ${${#f2a4a4}}; -} -.global-key-values .square8 { - background-color: ${${#f2c6c6}}; -} -.hd-us-key-values .square1 { - background-color: ${${#15150d}}; -} -.hd-us-key-values .square2 { - background-color: ${${#1f1f0d}}; -} -.hd-us-key-values .square3 { - background-color: ${${#2e2e0d}}; -} -.hd-us-key-values .square4 { - background-color: ${${#9b4e0d}}; -} -.hd-us-key-values .square5 { - background-color: ${${#f27c38}}; -} -.hd-us-key-values .square6 { - background-color: ${${#f29a9a}}; -} -.hd-us-key-values .square7 { - background-color: ${${#f2c6c6}}; -} - -================================ - -languagetool.org - -INVERT -#checktext_ifr - -================================ - -laptopmag.com - -INVERT -div#publisherDetails.logo -.qc-cmp-publisher-logo - -================================ - -laravel.com - -CSS -.bg-gray-100, -aside > div { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -last.fm - -INVERT -.resource-external-link--homepage::before -.share-option -.report-headline-share -.avatar-status-dot - -CSS -.user-dashboard-loved-tracks .user-dashboard-big-datapoint-value a { - color: ${#666666} !important; -} -.user-dashboard-catalogue-item-total a { - color: ${#666666} !important; -} -.highcharts-text-outline { - stroke: none !important; -} -.user-dashboard-scalable-content span { - color: ${#666666} !important; -} -.linkfire-button { - --darkreader-border--play-arrow-color: var(--gray-50) !important; -} -.promo-v3 .listening-report-promo-date::after { - filter: invert(0.5) !important; -} - -IGNORE INLINE STYLE -.highcharts-bar-series .highcharts-point -.highcharts-area-series .highcharts-point - -IGNORE IMAGE ANALYSIS -.masthead-logo-loading -.masthead-logo -.tag-label--average-daily-scrobbles::before -.report-headline-border - -================================ - -lastpass.com - -INVERT -.lp-header__logo--link - -================================ - -latex.wikia.org - -INVERT -.mwe-math-fallback-image-inline -.mwe-math-fallback-image-display - -================================ - -latimes.com - -INVERT -.page-logo -.page-header-logo - -================================ - -launchpad.net - -INVERT -.edit-controls -#launchpad-logo-and-name - -CSS -.footer .lp-arcana { - background-image: none !important; -} - -================================ - -laurelroad.key.com - -INVERT -img[src="images/logo-lrd.svg"] -.hds-header-logo__img - -CSS -.kds-layout__grid { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -leagueoflegends.com - -INVERT -[data-testid="featurednews"] div[class^="style__ItemWrapper"] div[class^="style__Container"] canvas -.bxrpQD - -CSS -article > div > canvas[class^="style__Canvas"] { - display: none !important; -} -div[class^="style__NavContent"] { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -lear.com - -INVERT -.logo - -================================ - -learn.inside.dtu.dk - -INVERT -.pdfViewer -svg -d2l-icon -d2l-button-icon - -CSS -a { - color: var(--darkreader-neutral-text) !important; -} -:html { - --d2l-color-celestine-plus-2: var(--darkreader-neutral-background) !important; -} -:host { - --d2l-dropdown-background-color: var(--darkreader-neutral-background) !important; - --d2l-input-background-color: var(--darkreader-neutral-background) !important; - --d2l-list-item-content-text-color: var(--darkreader-neutral-text) !important; - --d2l-menu-background-color: var(--darkreader-neutral-background) !important; - --d2l-menu-background-color-hover: var(--darkreader-neutral-background) !important; - --d2l-tabs-background-color: var(--darkreader-neutral-background) !important; -} -.d2l-navigation-s-personal-menu-text, -.d2l-menu-item-text, -.d2l-body-small, -.d2l-heading, -d2l-htmleditor-menu-item, -d2l-empty-state-simple, -button { - color: var(--darkreader-neutral-text) !important; -} -.d2l-card-link-container, -.d2l-card-footer, -.d2l-floating-buttons-container, -.d2l-htmleditor-container, -.d2l-dialog-outer, -d2l-card, -d2l-list-item-generic-layout { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -learn2.open.ac.uk - -CSS -.oucontent-quote p { - color: ${grey} !important; -} - -================================ - -learnopengl.com - -CSS -#hover { - background-image: none !important; - opacity: 1 !important; -} - -================================ - -learnroadrunner.com - -INVERT -img[src*="YouAreHere"] -img[src="/assets/advanced/termination-flow.svg"] -img[src="/assets/img/max-vel-latex-half.319e0372.png"] -.u-wrap - -================================ - -learnyouahaskell.com - -INVERT -.bgwrapper -.dp-highlighter - -================================ - -leetcode.com -leetcode-cn.com - -INVERT -img[alt="logo"] -.cursor -.CodeMirror-cursor -.user-story-chapter-base .companies-showcase-base .logo - -CSS -div[class^="data-structure-viewer"] g[class^="node"] > circle { - fill: var(--darkreader-neutral-background) !important; -} -[class^=question-picker-detail] { - background: none !important; -} -.monaco-editor, -.monaco-editor-background, -.monaco-editor .margin { - background-color: var(--darkreader-neutral-background) !important; -} -div#solution img { - background-color: ${black}; -} - -================================ - -legacy.com - -CSS -.Directory { - background-image: none !important; -} - -================================ - -lemonde.fr - -INVERT -.logo__lemonde - -================================ - -lenovo.com - -INVERT -.m-megaMenu - -CSS -.m-mastheadUtilityLinks { - background: none !important; -} - -================================ - -leroymerlin.* - -CSS -.kl-tile__group { - filter: invert(0%) !important; -} -.kl-tile .kl-blade--figure { - z-index: 0 !important; -} - -================================ - -lesbonscomptes.com - -CSS -.important { - background-color: rgb(92, 92, 61) !important; -} - -================================ - -letters.gov.spb.ru - -INVERT -.leaflet-map-pane - -================================ - -letyshops.com - -INVERT -.header-logo-image - -================================ - -lever.co - -INVERT -a.main-header-logo -div.site-branding - -================================ - -lexar.com - -INVERT -.page_header_wrapper a.logo img - -================================ - -lg.com - -INVERT -.logo -img[src*="/features/"] - -================================ - -liberte.pl -sklep.liberte.pl - -INVERT -img[src*="liberte_logo.svg"] -img[src*="libertesklep.svg"] -.hamburger - -================================ - -libravatar.org - -INVERT -footer::before -.hero::before - -================================ - -libretexts.org - -CSS -.mt-content-container img:hover { - background-blend-mode: normal; - background-color: rgba(255, 255, 255, 0.75) !important; -} - -================================ - -librewolf-community.gitlab.io - -INVERT -[src="/images/search.svg"] -[src="/images/no-looking.png"] - -================================ - -librewolf.com - -CSS -.docs-container .max-w-screen-md .screenshot + .inner { - background-image: linear-gradient( 180deg, rgba(255, 255, 255, 0) 0%, rgba(26, 24, 26, var(--darkreader-bg--tw-bg-opacity)) 50% ) !important; -} - -================================ - -librivox.org - -INVERT -.logo - -CSS -.main-content-home, -.homepage-main-wrap, -.homepage-main-block p span { - background-color: var(--darkreader-neutral-background) !important; - border-color: transparent !important; -} -.box_1 { - background-color: ${#eaefdf} !important; -} -.box_2 { - background-color: ${#e0eef1} !important; -} -.post-wrap, -.page-wrap { - background-color: ${#f8f8f5} !important; -} -.statistics-wrap { - background-color: unset !important; -} - -================================ - -licensing.biz - -INVERT -.logo - -================================ - -lichess.org - -CSS -.time { - z-index: 0 !important; -} - -IGNORE INLINE STYLE -cg-container > svg > line - -IGNORE IMAGE ANALYSIS -.is2d .bishop.black -.is2d .king.black -.is2d .knight.black -.is2d .pawn.black -.is2d .queen.black -.is2d .rook.black -.brown .is2d cg-board - -================================ - -life360.com - -INVERT -.site-header .header-brand img - -================================ - -lifelock.com - -INVERT -.c-topnav__logo-link - -================================ - -lightning.force.com -*.lightning.force.com - -INVERT -.chart -.legend - -CSS -.slds-brand-band, -.slds-brand-band::after, -.slds-brand-band_cover, -.slds-brand-band_medium, -.slds-page-header, -.slds-utility-bar, -.slds-tabs_card, -.slds-card-wrapper, -.slds-grid, -.slds-clearfix { - background-color: var(--darkreader-neutral-background) !important; -} -.slds-card { - background-color: ${rgb(201, 201, 201)} !important; -} -.slds-button_neutral, -.slds-button--neutral { - color: ${rgb(1, 118, 211)} !important; -} - -================================ - -lightningmaps.org - -INVERT -.bo_map_realtime -.live_ctrl > img -.tiles_radar - -================================ - -lingvoforum.net - -INVERT -div#header -div#header img.avatar -span.topslice -span.botslice - -CSS -body { - background-image: none !important; -} -div#header { - color: black !important; -} -div#header a:link, -div#header a:visited { - color: black !important; -} - -================================ - -link.springer.com - -INVERT -.c-header__brand -img[src$="logo_high_res.png"] - -================================ - -linkedin.com - -CSS -:root { - --color-text-low-emphasis: ${rgba(0,0,0,0.6)}; -} -.js-job-card-company-logo { - background-blend-mode: color; - background-color: rgba(255, 255, 255, 0.20); -} -.global-footer-compact__linkedin-logo, -li-icon[type="linkedin-logo"], -.bug-text-color { - fill: ${black} !important; -} -.pds-ge-entry-card__card { - background: linear-gradient(to bottom, var(--color-action, var(--blue-70, #0073b1)), var(--color-action, var(--blue-70, #0073b1)) 4px, var(--darkreader-neutral-background, #fff) 4px, var(--darkreader-neutral-background, #fff)) !important; -} -.vjs-load-progress { - background-color: hsla(0,0%,100%,.3) !important; -} -.vjs-play-progress, -.vjs-play-progress::before, -.vjs-volume-level::before, -.vjs-volume-level { - background-color: #fff !important; -} -.vjs-volume-bar { - background-color: hsla(0,0%,100%,.4) !important; -} -img[class*="ghost-"], -div[class*="ghost-"] { - background-size: 100% 100% !important; -} -.artdeco-pill { - background-color: ${#ccc} !important; -} -img { - background-color: transparent !important; -} -img[src*="logo"] { - filter: brightness(75%); -} -.card-layout { - background-color: var(---darkreader-neutral-background); -} -.member-analytics-addon-insight-v2 { - background: var(--darkreader-bg--voyager-color-background-brand-accent-1-tint) !important; -} - -================================ - -linode.com - -INVERT -.c-identity__image - -CSS -.o-form__input { - background-color: rgb(41, 44, 46) !important; - border-color: rgb(232, 230, 227) !important; - color: rgb(232, 230, 227) !important; -} -.o-form__input:hover { - background: transparent !important; -} -.o-form__icon::before { - color: rgb(232, 230, 227) !important; -} -.o-form__input::placeholder { - color: rgb(232, 230, 227) !important; -} -.o-button, -o-button--secondary { - background-color: rgb(41, 44, 46) !important; - border-color: rgb(232, 230, 227) !important; - color: rgb(232, 230, 227) !important; -} -.o-button:hover { - background: transparent !important; -} - -================================ - -linotype.com - -INVERT -#logo - -================================ - -linustechtips.com - -INVERT -.ipsMenu - -CSS -:root { - --darkreader-bg--badge--background: ${white} linear-gradient(rgba(0,0,0,0.9), rgba(0,0,0,0.9)) !important; -} -.ipsHovercard { - background-color: ${#fff} !important; -} - -================================ - -linux-hardware.org - -CSS -#ezcGraphChart > path:first-of-type { - fill: var(--darkreader-neutral-background) !important; -} - -================================ - -linuxfoundation.org - -INVERT -.logo img - -================================ - -linuxgrandma.blogspot.com - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -linuxuprising.com - -INVERT -.logo - -================================ - -lirc.org - -CSS -body { - background: none !important; -} - -================================ - -literia.pl - -INVERT -.icon-svg-pinterest -.icons-icon-facebook -.sec-logo -.slick-arrow -a::after -a#logo -span.as-label::before -img[alt="ringier axel springer"] - -================================ - -live.myvrspot.com - -INVERT -.img-logo - -CSS -.wrap { - background: var(--darkreader-neutral-background); -} - -================================ - -liveagent.com - -INVERT -.Header__logo - -================================ - -livemint.com - -INVERT -div.icoMenu -a.icoSearch.iconSprite -a.icoBell.iconSprite -a.icoBookmark2.iconSprite -a.icoBookmark3.iconSprite -a.icoTwit.iconSprite -div.icoShare.iconSprite - -================================ - -liveuamap.com - -INVERT -.comment-link::after -.leaflet-pane > .leaflet-layer -.logo -.top-bright > label::after - -CSS -.head-news { - background-image: none !important; -} - -================================ - -lkml.org - -INVERT -img[src*="corner"] - -CSS -body { - background-image: none !important; -} -td.c { - color: ${white} !important; -} -pre[itemprop="articleBody"] a { - color: ${lightblue}; -} - -================================ - -llvm.org -*.llvm.org - -CSS -header, -.www_sectiontitle, -.www_sidebar { - background: none !important; -} - -================================ - -loepenshop.com -bonjourfoto.nl - -CSS -body { - background-image: none !important; -} - -IGNORE IMAGE ANALYSIS -div.art-Header-jpeg - -================================ - -login-widget.privatbank.ua - -CSS -div[class*="qrContainer"] > div > div { - background-color: white !important; -} - -================================ - -login.assetpanda.com - -CSS -tr, -.main-container { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -login.docker.com - -INVERT -span[data-provider^="github"] - -CSS -body { - --page-background-color: var(--darkreader-neutral-background) !important; -} -:root { - --font-default-color: var(--darkreader-neutral-text) !important; - --input-background-color: var(--darkreader-neutral-background) !important; - --input-text-color: var(--darkreader-neutral-text) !important; - --secondary-button-text-color: var(--darkreader-neutral-text) !important; - --title-font-color: var(--darkreader-neutral-text) !important; - --widget-background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -login.live.com - -INVERT -div[id$="Proofs"] .tile-img -div.promoted-fed-cred-content > div > div > div > div > img -div#credentialList.form-group > div > div > div > div > div > img -div.pagination-view.has-identity-banner.animate.slide-in-next > div > div > div > img -span.help-button > img -button.backButton > img -img[data-testid="backgroundLogo"] - -CSS -[data-testid="backgroundImage"] { - background-image: none !important; -} - -================================ - -login.yahoo.com - -INVERT -.social-login -label[for=persistent]::before -#password-toggle-button - -IGNORE IMAGE ANALYSIS -.social-login - -================================ - -logowanie.edukacja.olsztyn.eu - -INVERT -img[alt="Nagłówek strony"] -img#logo -img[src="/Resources/wylogowano-plansza.jpg"] - -CSS -body { - background-image: none !important; -} - -================================ - -lol.fandom.com - -CSS -.bracket-line:not(.l-down)::after, -.bracket-line::before, -.bracket-spacer.horizontal::before { - border-width: 0 0 2px 0 !important; -} -.bracket-line.z-down::after { - border-width: 0 0 2px 2px !important; -} -.bracket-line.z-down::before { - border-width: 2px 2px 0 0 !important; -} -.bracket-line.z-up::before { - border-width: 0 2px 2px 0 !important; -} -.bracket-line.z-up::after { - border-width: 2px 0 0 2px !important; -} - -================================ - -lovekrakow.pl - -INVERT -.brand - -================================ - -lowendtalk.com - -INVERT -.MeMenu > :last-child -.SpBookmarks - -================================ - -lowes.com - -CSS -img { - mix-blend-mode: normal !important; -} - -================================ - -lrt.lt - -INVERT -img[src*="/images/logo/logo-"] - -================================ - -lsa.umich.edu - -IGNORE IMAGE ANALYSIS -.header-wrap -.giving-wrap - -================================ - -lunapic.com - -INVERT -.toolbar-button -.square-toolbar-button - -IGNORE INLINE STYLE -.color-well-color - -================================ - -luogu.com.cn - -IGNORE INLINE STYLE -.fa-group -.fa-secondary -.fa-primary -.lfe-caption tag status-name - -================================ - -lux.camera - -CSS -.u-content-background { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -lyx.org - -CSS -body, -#wrapper { - background-image: none !important; -} -#col-right { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -m.dianping.com - -INVERT -.flash-screen -.header-download-img - -================================ - -m.genk.vn - -CSS -.news .li { - background-image: none !important; -} - -================================ - -m.motonet.fi - -CSS -form#haku input[type="text"], -#select_my_motonet { - color: var(--darkreader-neutral-text); -} - -================================ - -m.slashdot.org - -CSS -.slashbar, -.story-prop, -#discussion, -#filler { - background-image: none !important; -} - -================================ - -mabi.tmpinc.io/numbers/ - -INVERT -button -img.lock -div.line - -CSS -.bit.blue, -.bit.red, -.bit.green { - border-bottom: 3px solid var(--bit-color) !important; -} -.bit.gray { - background-color: ${lightgray} !important; -} -label:first-of-type { - border-left: 1px solid var(--darkreader-neutral-text) !important; -} -label { - border-bottom: 1px solid var(--darkreader-neutral-text) !important; - border-right: 1px solid var(--darkreader-neutral-text) !important; - border-top: 1px solid var(--darkreader-neutral-text) !important; -} -.demo { - border-color: var(--darkreader-neutral-text) !important; -} -:root { - --darkreader-border--bit-color: var(--darkreader-neutral-text); -} - -================================ - -machinelearningmastery.com - -INVERT -img.size-full.wp-image-7676 - -================================ - -macrumors.com - -CSS -body, -.js-content, -.widget--3ewetJyi { - background-color: var(--darkreader-neutral-background) !important; -} -.textRow--3IWlPgCD { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -madshi.net - -CSS -body, -tr, -td { - background-image: none !important; -} - -================================ - -mafreebox.freebox.fr - -CSS -* { - filter: none !important; -} -.desktop-icon-outer { - color: #fff !important; -} -body { - background-image: linear-gradient(rgb(14 14 14 / 50%), rgb(40 40 40 / 50%)), url(../resources/images/fbx/bg_freeboxos.svg); -} -.setting-list-app .setting-app .setting-app-img, -.file-icon-inode_directory, -.x-tree-icon { - opacity: 1 !important; -} -.freeboxos-southbar .btn-start .x-btn-button { - background-color: #fff !important; -} - -IGNORE IMAGE ANALYSIS -.freeboxos-southbar .btn-start .x-btn-button -body - -================================ - -magazine.skyeng.ru - -INVERT -.header__logo__img - -================================ - -magazynbieganie.pl - -INVERT -.logo-box - -================================ - -magic.freizeitspieler.de - -INVERT -img[src="pics/MtG-Freizeitspieler.gif"] - -CSS -body { - background-image: none !important; -} - -================================ - -magister.net - -INVERT -.bottom > img - -CSS -.splash-container { - z-index: 0 !important; -} -.cijfers-k-grid.k-grid .grade.empty { - background-color: ${#cfcfcf} !important; - background-image: none !important; -} - -================================ - -mail.eni.it/owa - -IGNORE IMAGE ANALYSIS -.image-font-png -.image-font_size-png -.image-bold-png -.image-italic-png -.image-underline-png -.image-backcolor-png -.image-forecolor-png -.image-insertunorderedlist-png -.image-insertorderedlist-png -.image-outdent-png -.image-indent-png -.image-justifyleft-png -.image-justifycenter-png -.image-justifyright-png -.image-createlink-png -.image-unlink-png -.image-superscript-png -.image-subscript-png -.image-strikethrough-png -.image-alttext-png -.image-blockdirltr-png -.image-blockdirrtl-png -.image-undo-png -.image-redo-png -.image-removeformat-png -.image-table_icon-png -.image-insertpicture-png -.image-emoji-png -.image-format-png -.image-c_word-png -.image-c_powerpoint-png -.image-c_excel-png - -================================ - -mail.google.com - -INVERT -.asor_t0 -.asor_i1 > img -.asor_i4 -.d-Na-Jo.d-Na-N-ax3 -.RK-QJ-Jk -.RK-Mo.RK-Qq-LF -#ita-st-id-cs -.d-Na-N-M7-JX.d-Na-J3 -.gb_df -img[src$="google_gsuite"] -img[src$="profile_mask2.png"] -.rY>.sa -.buh -.asor -.mixmax-flyout__wrapper -div[aria-label="Hangouts"] > div[role="tablist"] > div[tabid="chat"] > div -form[method="POST"] ~ table div[style] > div > :first-child button:not([string]):not([id]) -img[src^="//ssl.gstatic.com/ui/v1/icons/common/x"] -div[style$="gm_add_black_24dp.png)"] - -CSS -@media (min-resolution: 144dpi), (-webkit-min-device-pixel-ratio: 1.5) { - .buk { - background-image: url(//ssl.gstatic.com/ui/v1/icons/mail/rfr/density_default_v1_2x.png) !important; - } - .bui { - background-image: url(//ssl.gstatic.com/ui/v1/icons/mail/rfr/density_comfortable_v1_2x.png) !important; - } - .buj { - background-image: url(//ssl.gstatic.com/ui/v1/icons/mail/rfr/density_compact_v1_2x.png) !important; - } -} -.buk { - background-image: url(//ssl.gstatic.com/ui/v1/icons/mail/rfr/density_default_v1_1x.png) !important; -} -.bui { - background-image: url(//ssl.gstatic.com/ui/v1/icons/mail/rfr/density_comfortable_v1_1x.png) !important; -} -.buj { - background-image: url(//ssl.gstatic.com/ui/v1/icons/mail/rfr/density_compact_v1_1x.png) !important; -} -div[class*="bym"][role="navigation"], -.afC, -.agJ { - background-color: var(--darkreader-neutral-background) !important; -} -.agJ:hover, -.ag5 { - background-color: ${#E8E6E5} !important; -} -.agJ.bjE { - background-color: ${#E3E1E0} !important; -} -.ain .TO, -.TO.ol { - background-color: rgba(255,255,255,0.05) !important; -} -.agh, -.afV, -.afA, -.bbV { - background-color: transparent !important; -} -.aRg, -.aRj { - color: ${white} !important; -} -.gb_3e { - color: ${white} !important; -} -table { - color: ${black} !important; -} -.agP, -.afx { - background: ${rgb(229, 228, 229)} !important; -} - -IGNORE INLINE STYLE -.at -.au -.av -.qj -.hU.hM -.hV.hM -.ajZ-Jt -.aH5 -.JA-Kn-Jr-Kw-Jt - -================================ - -mail.jwpub.org/owa - -IGNORE IMAGE ANALYSIS -.image-font-png -.image-font_size-png -.image-bold-png -.image-italic-png -.image-underline-png -.image-backcolor-png -.image-forecolor-png -.image-insertunorderedlist-png -.image-insertorderedlist-png -.image-outdent-png -.image-indent-png -.image-justifyleft-png -.image-justifycenter-png -.image-justifyright-png -.image-createlink-png -.image-unlink-png -.image-superscript-png -.image-subscript-png -.image-strikethrough-png -.image-alttext-png -.image-blockdirltr-png -.image-blockdirrtl-png -.image-undo-png -.image-redo-png -.image-removeformat-png -.image-table_icon-png -.image-insertpicture-png -.image-emoji-png -.image-format-png - -================================ - -mail.qq.com - -INVERT -.header_logo -.imglogo -.listbg -.navbar -.topline -.topbg -.todaybar_ad_bg -.navbottom -.search_subject .smartsearch -#searchIcon - -CSS -.fdbody, -.tipstitle { - background-color: ${#9bbb59} !important; -} -.fdbody { - border-left-color: var(--darkreader-neutral-background) !important; -} -.readmailinfo, -.settingtable, -.tabtitle td.selected, -.biginfo, -.tipstitle, -.colorsure { - background-color: ${#ebf4d8} !important; -} -.toolbgline, -.tabtitle td, -.readmailinfo, -.settingtd, -.addr_line, -.filtertd1, -.bartools { - border-bottom-color: ${#87a34d} !important; -} -.toolbg, -.toolbg1, -.tabtitle, -.addrsort { - background-color: ${#bed393}; -} -.attbg { - background-color: ${#dceac0} !important; -} -body[module="qmReadMail"] { - background-color: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-color) !important; -} -.selbar_bt { - background-color: var(--darkreader-neutral-background) !important; - border-bottom-color: var(--darkreader-neutral-background) !important; - border-top-color: var(--darkreader-neutral-background) !important; -} -table.O2 td { - border-bottom-color: ${#c1c8d2} !important; -} -body[accesskey], -.cpright { - background-color: var(--darkreader-neutral-background) !important; -} -.B, -.nomail, -.colortitle { - background-color: ${#a9b3b6} !important; -} -.settingTitle .selected { - color: ${#ebf4d8} !important; -} - -================================ - -mail.tutanota.com - -CSS -div.mb > div > svg > path { - fill: black !important; -} - -================================ - -mailbox.org - -CSS -body.bg-blog { - background-image: none !important; -} -.common .mod_article > .inside { - background-color: var(--darkreader-neutral-background) !important; -} - -IGNORE INLINE STYLE -.io-ox-sidepopup - -================================ - -make.com -*.make.com - -CSS -.switch.active::after { - color: var(--darkreader-bg--white) !important; -} -.switch:not(.active)::before { - color: var(--darkreader-bg--white) !important; -} -.switch:not(.active)::after { - color: var(--darkreader-text--white) !important; -} - -================================ - -makeuseof.com - -IGNORE IMAGE ANALYSIS -.header-logo - -================================ - -maltapost.com - -CSS -.multi-steps > li.is-active::before { - background-color: gray !important; -} - -================================ - -manage.buyvm.net - -INVERT -.legend-container - -================================ - -manjaro.org - -INVERT -img[alt="manjaro logo"] - -CSS -.bg-teal-accent-400, -.bg-teal-accent-400 path { - background-color: ${rgb(29,233,182)} !important; - fill: ${rgb(29,233,182)} !important; -} - -IGNORE INLINE STYLE -.bg-teal-accent-400 path - -================================ - -manualslib.com - -IGNORE IMAGE ANALYSIS -div.pdf - -================================ - -manytoon.com - -CSS -.profile-manga, -.c-breadcrumb-wrapper { - background-image: none !important; -} - -================================ - -map.qq.com - -INVERT -#FullScreen -#Logo -#Map -.MenuPanelCheckbox -.MenuPanelContent -.nextStep -.prevStep -.textInput -.titleText -.traffic_next -.traffic_rightbg_b2 -.traffic_rightbg_m -.traffic_rightbg_m3 -.traffic_rightbg_t2 - -================================ - -mapa-turystyczna.pl - -INVERT -.ts-map svg - -================================ - -maps.metager.de - -INVERT -.map canvas - -================================ - -mapy.cz -*.mapy.cz - -INVERT -img[src*="mapserver.mapy.cz"]:not([src*="bing"]) -.icon polygon - -CSS -.marker span.text { - color: black !important; -} - -================================ - -marginalrevolution.com - -INVERT -.logo-mobile -.logo-desktop -img[src$="mru-logo-450.png"] - -CSS -nav { - background-color: #288d73 !important; -} - -================================ - -mariadb.org - -INVERT -.featured-header-image - -================================ - -marinij.com - -INVERT -.custom-logo.logo > a > img - -================================ - -market.yandex.* - -INVERT -ymaps[class$="main-engine-container"] > canvas -ymaps[class$="marker"] > div > div > div - -CSS -a[data-zone-name="offerLink"]:has(img) { - background-color: #fff !important; -} -[data-baobab-name="picture"], -[data-zone-name="picture"] > div > div, -[data-zone-name="picture"] img { - mix-blend-mode: unset !important; -} -[data-zone-name="offer"] > div > div:nth-child(1) > div:nth-child(1) { - background-color: white; -} -[data-zone-name="cartButton"] button { - background-color: rgb(136, 109, 0) !important; -} - -IGNORE INLINE STYLE -[data-zone-name="offer"] > div > div:nth-child(1) > div:nth-child(1) - -================================ - -marketmarketmarket.com -marketstudios.com - -INVERT -img.header__heading-logo -button.is-active - -CSS -:root { - --gradient-background: rgb(24, 26, 27) !important; -} -sticky-header.header-wrapper { - background-color: rgb(24, 26, 27) !important; -} -::placeholder { - color: transparent !important; -} - -================================ - -marketplace.visualstudio.com - -CSS -.ux-updated-date { - color: ${rgb(55, 255, 0)} !important; -} -.ms-Grid-row { - color: ${rgba(0, 0, 0, .8)} !important; -} - -================================ - -markmcgranaghan.com - -CSS -body { - background-color: transparent !important; -} - -================================ - -marktplaats.nl - -INVERT -.mp-Header-logo -.mp-svg-messages -.mp-svg-notification -.mp-svg-profile -.svg-icon-block - -================================ - -mastarti.com -streamguard.cc - -INVERT -.fp-play-icon div -.fp-pause-icon .fp-pause-block div -.fp-volumebar em.fp-color -.fp-fullscreen-line -.fp-fullscreen-dot - -================================ - -math.semestr.ru - -INVERT -.img-online - -================================ - -math.tamu.edu - -INVERT -div[align="center"] > p + p > img - -================================ - -mathsisfun.com - -CSS -#searchFld { - background-color: var(--darkreader-neutral-background) !important; - border-color: black !important; -} -#searchBtn { - background-color: var(--darkreader-neutral-background) !important; - border-color: black !important; -} -#content h1 { - color: var(--darkreader-neutral-text) !important; -} -#hdr { - opacity: 0.2; -} -#menuWide li { - background-color: rgb(64, 99, 255) !important; - color: white !important; -} -#menuWide li:hover { - background-color: rgb(18, 35, 112) !important; -} - -================================ - -mathsolver.microsoft.com - -INVERT -img.light - -CSS -.page-header { - background: ${#e4e6e7} !important; -} -.page-layout-container { - background: ${#d1e1e1} !important; -} -.t1 { - color: ${#4f4941} !important; -} - -================================ - -matomo.org - -INVERT -img[alt*="WordPress"] -img[src*="Mailfence"] -img[src*="sampling"] -img[src*="logo"] -img.mega-menu-logo - -CSS -select, -.elementor-text-editor, -.elementor-text-editor *, -.elementor-blockquote *, -.elementor-testimonial *, -.elementor-price-table * { - color: var(--darkreader-neutral-text) !important; -} -.elementor-card-shadow-yes .elementor-post__card:hover { - box-shadow: rgb(76 75 75 / 42%) 0px 0px 30px 0px; -} -.elementor-card-shadow-yes .elementor-post__card { - box-shadow: rgb(0 0 0 / 23%) 0px 0px 10px 0px; -} - -================================ - -matrix.org - -INVERT -.mxnavbar__logo -.mxnavsection__icon -.mxgrid__item__bg__img -.mxblock__explore__item__img -a[aria-label="matrix live permalink"] > svg -a > svg - -================================ - -matrix.to - -INVERT -div.footer > p > img - -================================ - -matsci.org - -INVERT -.d-header #site-logo - -CSS -.category-logo.aspect-image img { - background-color: white !important; -} - -================================ - -matters.news - -INVERT -.splash-screen .icon -.logo .icon - -CSS -section[class$="container"][style^="background-image"] { - background-image: none !important; -} - -================================ - -mcbsys.com - -INVERT -.site-branding -.icon-image - -================================ - -mcdonalds.com - -INVERT -.cmp-global-header__logo - -================================ - -mediaexpert.pl - -INVERT -.euronics-logo -.sg-kategory-box-txt -.sg-new-btn-white -.sg_kat_txt -img[src*="kafelki_do_bran"] -svg > path[d^="M244.122 17.1023C244.122"] - -================================ - -medianauka.pl - -INVERT -img[src*="wzory"] - -================================ - -mediawiki.org -*.mediawiki.org -wikibooks.org -*.wikibooks.org -wikidata.org -*.wikidata.org -wikiless.org -*.wikiless.org -wikimedia.org -*.wikimedia.org -wikimediafoundation.org -*.wikimediafoundation.org -wikinews.org -*.wikinews.org -wikipedia.org -*.wikipedia.org -wikiquote.org -*.wikiquote.org -wikisource.org -*.wikisource.org -wikiversity.org -*.wikiversity.org -wikivoyage.org -*.wikivoyage.org -wikiwand.com -*.wikiwand.com -wiktionary.org -*.wiktionary.org - -INVERT -#main_menu > li:not(.lang_btn) > img.logo_img ~ i -#p-logo-text -.article_btn .drop_down li a > i -.bookend -.cdx-text-input__icon.cdx-text-input__start-icon -.central-featured-logo-text -.central-textlogo__image -.feedback_btn .drop_down li a > i -.licensetpl td[style^="width"] -.locmap .pl -.locmap .pr -.logo-container -.logo:not(td) -.main-footer-menuToggle -.mf-icon-close-gray -.mf-icon-expand -.mf-icon-expand-invert -.minerva-footer-logo img -.music-symbol img -.mw-ext-score -.mw-hiero-outer.mw-hiero-table -.mw-kartographer-map -.mw-kartographer-mapDialog-map -.mw-logo-tagline -.mw-logo-wordmark -.mw-mmv-filepage-buttons .mw-mmv-view-config .mw-ui-icon::before -.mw-mmv-filepage-buttons .mw-mmv-view-expanded .mw-ui-icon::before -.mw-ui-icon-wikimedia-expand -.mw-wiki-logo -.mwe-math-fallback-image-display -.mwe-math-fallback-image-inline -.nav-logo -.svg-Wikimedia-logo_black -.title_icon -.toc-title-icon -.tool.tool-button[src$="background-image:"] -.wd-mp-headerimage -.zh-glyph img -body > .oo-ui-windowManager .vega .marks -div.post-content.footer-content > h2 > img -header .branding-box > a > span > img -img.graphite-graph -img.immediate:not(.ntmb) -img.logo_img -img[alt="Video Camera Icon.svg"] -img[alt="audio speaker icon"] -img[alt="logo Wikisource"] -img[src*="Wiktionary-logo"] -img[src="images/black.png"] -li.menu-tooltip:not(.lang_btn) -td.icon -.mbox-image img.mw-file-element[src*="Crowned_Portcullis_redesign_2018.svg.png"] -.vector-dropdown .vector-dropdown-label:not(.cdx-button--icon-only)::after -.vector-page-titlebar .mw-portlet-lang .vector-dropdown-label.cdx-button--action-progressive.cdx-button--weight-quiet::after -img[src*="Wikipedia-logo-textonly.svg"] -img[src*="Unbalanced_scales.svg"] -td[style*="background: var(--background-color-"]:not([style*="var(--background-color-base, white)"]) -img.mw-file-element[src*="ignature.svg"] -img.mw-file-element[src*="Emblem_of_Iran.svg"] -.infobox [style*="background"]:not(.infobox tbody td[style*="background"]):not([style*="color: white"]):not(.mw-no-invert) -img[src*="Share_alt_square_font_awesome.svg"] -img[src*="Justice_scale_silhouette%2C_medium.svg"] -img[src*="Twemoji_1f464.svg"] -img[src*="Mp3.svg"] -img[src*="Globe_eye_icon.png"] -img[src*="Octicons-globe.svg"] -img[src*="Stylized_eye.svg"] - -CSS -:root { - --darkreader-border--border-color-base: ${#a2a9b1} !important; -} -.mwe-popups-discreet > img, -div .thumbimage[src$=".png"], -div .thumbimage img[src$=".png"], -.image-carousel .image-loaded { - background-color: white; -} -.mw-mmv-image .svg, -.fullImageLink [src*=".svg"], -a[href$=".svg"]:hover > img, -a[href*=".gif"]:hover > img { - background-blend-mode: color; - background-color: rgba(255, 255, 255, 0.75) !important; -} -.diff-addedline .diffchange { - background-color: ${lightblue} !important; -} -.diff-deletedline .diffchange { - background-color: ${#feeec8} !important; -} -@keyframes unseen-fadeout-to-unread { - from { - background-color: ${#dce8ff} !important; - } - to { - background-color: ${#ffffff} !important; - } -} -@keyframes unseen-fadeout-to-read { - from { - background-color: ${#dce8ff} !important; - } - to { - background-color: ${#eaecf0} !important; - } -} -.main-top { - background: none !important; -} -ol.references li:target, -sup.reference:target { - background-color: ${lightblue} !important; -} -.control-bar { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} -.k-player, -body.mediawiki, -#dialogEngineContainer #dialogEngineDialog { - background-color: var(--darkreader-neutral-background) !important; -} -.template-facttext { - background-color: ${#c8c6c3} !important; -} -#mw-page-base { - background-color: var(--darkreader-neutral-background); - background-image: linear-gradient(${rgb(231, 229, 228)} 50%, var(--darkreader-neutral-background) 100%) !important; -} -body.skin--responsive, -#menus-cover-background { - background-image: linear-gradient(${rgb(231, 229, 228)} 50%, var(--darkreader-neutral-background) 100%) !important; -} -.vector-sticky-pinned-container::after { - background: linear-gradient(transparent, var(--darkreader-neutral-background)) !important; -} -[style*="background: rgb(221, 221, 255)"], -[style*="background-color: rgb(221, 221, 255)"] { - background: ${rgb(221, 221, 255)} !important; -} -button[class*=mw-mmv-]:not(.cdx-button), -.cdx-button:enabled .cdx-button__icon, -a[role="button"][class*="mw-mmv-"]:not(.cdx-button), -.cdx-button::after, -span.mw-mmv-icon { - background-color: white !important; -} -div.mw-warning-with-logexcerpt, -div.mw-lag-warn-high, -div.mw-cascadeprotectedwarning, -div#mw-protect-cascadeon, -div.titleblacklist-warning, -div.locked-warning { - background-color: ${#ffa9a9} !important; - border-color: ${#ffa1a1} !important; -} -div.NavFrame div.NavHead { - background-image: none !important; -} -figure[typeof~="mw:File/Thumb"], -figure[typeof~="mw:File/Thumb"] > figcaption, -figure[typeof~="mw:File/Thumb"] > :not(figcaption) .mw-file-element, -div.thumbinner, -#filetoc, -.mw_metadata td, -div.flaggedrevs_short, -.wbmi-entityview-captionsPanel, -.page-actions-menu, -.content .mw-image-border .mw-file-element, -.mw-footer, -.last-modified-bar, -.minerva-footer-logo, -.cdx-card, -.cdx-thumbnail__placeholder, -.layouttemplate.licensetpl { - border-color: var(--darkreader-border--border-color-base) !important; -} -.mw-parser-output .sidebar { - background: var(--darkreader-bg--background-color-neutral-subtle) !important; -} -td[style*="border-bottom:"]:[style*="1px"] { - border-bottom: solid 1px var(--darkreader-border--border-color-base) !important; -} -td[style*="border-top:"]:[style*="1px"] { - border-top: solid 1px var(--darkreader-border--border-color-base) !important; -} -th[style*="border-left:"]:[style*="1px"], -td[style*="border-left:"]:[style*="1px"] { - border-left: solid 1px var(--darkreader-border--border-color-base) !important; -} -th[style*="border-right:"]:[style*="1px"], -td[style*="border-right:"]:[style*="1px"] { - border-right: solid 1px var(--darkreader-border--border-color-base) !important; -} -#normdaten > div > div { - background-color: ${#eeeeee} !important; -} -.infobox [style*="border-left:1px dotted #aaa"] { - border-left: 1px dotted ${#aaa} !important; -} -.infobox [style*="background"]:not([style*="color: white"]) { - color: #35312C !important; -} -.infobox tbody td { - color: ${#35312C} !important; -} - -IGNORE INLINE STYLE -#on_image_elements span -.infobox [style*="background"] -.infobox table td -.legend-color:not(table.wikitable .legend-color) -td[style*="background: var(--background-color-"] -.plainlinks table - -IGNORE IMAGE ANALYSIS -.k-player .k-menu-bar li a -.mf-icon-expand -.mw-wiki-logo -.toc-title-icon -.vector-dropdown .vector-dropdown-label:not(.cdx-button--icon-only)::after -.vector-page-titlebar .mw-portlet-lang .vector-dropdown-label.cdx-button--action-progressive.cdx-button--weight-quiet::after - -================================ - -medium.com - -INVERT -.svgIcon -.svgIcon-use -div[role="separator"] - -================================ - -medium.freecodecamp.org - -CSS -span.markup--quote.markup--p-quote.is-other { - background-image: linear-gradient(rgba(14, 255, 167, 0.2), rgba(14, 255, 167, 0.2)) !important; -} - -================================ - -medrxiv.org - -INVERT -.blood_logo -.logo-img - -================================ - -meduza.io - -CSS -mark { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -meet.google.com - -IGNORE INLINE STYLE -svg[preserveAspectRatio*="meet"] * - -================================ - -meet.jit.si - -IGNORE INLINE STYLE -.jitsi-icon * - -================================ - -mega.nz - -INVERT -a.fm-files-view-icon -a.top-icon.menu -div.checkdiv.megaapp-download.checkboxOff.switches -div.fm-dialog-close.medium -div.nw-tree-panel-arrows.icons-sprite -i.small-icon.context -i.small-icon.dialog-sprite.arrows-to-bottom -i.small-icon.dialog-sprite.arrows-to-top -i.small-icon.download-as-zip -i.small-icon.icons-sprite.tiny-grey-tick -i.small-icon.import-to-cloud -i.top-menu-icon.menus-sprite -i.transfer-progress-icon -span.top-icon.language - -CSS -.grid-wrapper { - outline-color: var(--darkreader-bg--surface-main); -} -.topbar-searcher { - background: var(--darkreader-bg--surface-grey-2) !important; -} -div.mega-dialog.dialog-template-action.two-factor-dialog.verify-two-factor-login { - background-color: var(--darkreader-bg--surface-main) !important; -} -#msgDialog { - background: var(--darkreader-bg--surface-grey-2) !important; -} - -================================ - -meijer.com - -CSS -[class*="bv-rnr_"] { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -meituan.com - -INVERT -.dpLogo -.header-title -.site-logo - -================================ - -memtest.org - -INVERT -.logo-default - -================================ - -mendeley.com - -INVERT -#pdfcontainerId > div[class^="PDFReaderWithAnnotations"] -.highlightLayer > * -div[class^="AnnotationMenuStyle"] -svg[class^="IconMendeley__Icon"] -a[class^="TabCloseButton__CloseTabLink"] -g#cross3 -svg[class^="ColourCircle"] - -CSS -.highlightLayer * { - background-color: var(--darkreader-selection-text) !important; -} - -================================ - -mercury.postlight.com - -INVERT -.SVGInline-svg path -#merc-logo -[src^="/_/src/components/images/reader_kindle_image"] -[href="https://postlight.com/"] > svg > g > path -[src^="/_/src/components/images/reader_tout_image"] -[src^="/_/src/components/images/phone"] -.w-0-m.db-l.dn.cover.w-50 - -================================ - -merriam-webster.com - -INVERT -circle.outline.Oval - -CSS -.logo-cnt path[fill="#004990"] { - fill: ${#0085e0} !important; -} - -================================ - -mersenneforum.org - -INVERT -img[src*="mimetex"] - -================================ - -messages.android.com - -INVERT -.x4Tquc -.QrWqSe -.XCHXxd -.pXeIKc - -================================ - -messages.google.com - -INVERT -.x4Tquc -.QrWqSe -.XCHXxd -.pXeIKc - -CSS -.input-background { - --input-bg-fade-color: #202124 !important; -} - -================================ - -messenger.com - -INVERT -._4rv6 -a._4ce_ -div[aria-label="Change Position"] -div[role="slider"] - -CSS -._8rsr { - fill: #0098ff !important; -} -._576q mask path { - fill: white !important; -} -._576q mask rect { - fill: black !important; -} -._576q div { - background-color: transparent !important; -} -.j7vl6m33, -.a8c37x1j, -.bp9cbjyn, -mask[id*="jsc_c"] > circle { - fill: var(--always-white) !important; -} -.a8c37x1j > rect { - fill: var(--darkreader-bg--fds-white) !important; -} -.__fb-light-mode { - --darkreader-border--messenger-card-background: var(--darkreader-bg--messenger-card-background) !important; - --filter-blue-link-icon: invert(73%) sepia(29%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(103.25%) hue-rotate(189deg) brightness(101%) contrast(101%) !important; - --filter-disabled-icon: invert(100%) opacity(30%) !important; - --filter-negative: invert(25%) sepia(33%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(110%) hue-rotate(345deg) brightness(132%) contrast(96%) !important; - --filter-placeholder-icon: invert(59%) sepia(11%) saturate(200%) saturate(135%) hue-rotate(176deg) brightness(96%) contrast(94%) !important; - --filter-positive: invert(37%) sepia(61%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(115%) hue-rotate(91deg) brightness(97%) contrast(105%) !important; - --filter-primary-icon: invert(100%) !important; - --filter-secondary-icon: invert(62%) sepia(98%) saturate(12%) hue-rotate(175deg) brightness(90%) contrast(96%) !important; - --filter-warning-icon: invert(77%) sepia(29%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(200%) saturate(128%) hue-rotate(359deg) brightness(102%) contrast(107%) !important; -} -.qbubdy2e { - fill: none !important; -} -.tdjehn4e, -.oo1teu6h { - background-color: rgba(255, 255, 255, 0.1) !important; -} -.tdjehn4e:hover, -.ovq5dppa:hover { - background-color: rgba(255, 255, 255, 0.2) !important; -} -i.eb18blue { - filter: none; -} -div[style][title] > div[style^="transform"] { - z-index: 0 !important; -} -.x1g6sh6t { - fill: none !important; -} -.x1g6sh6t { - fill: none !important; -} -.x1k4qllp { - outline: 10px solid var(--darkreader-bg--mwp-message-row-background) !important; -} - -IGNORE INLINE STYLE -[role="button"] svg -[role="button"] svg line -div svg[viewBox="0 0 36 36"] mask path -mask > rect -g > rect -mask > circle -.html-div svg path - -================================ - -metacareers.com - -INVERT -a[href="/"] img.img -#careersContentContainer div[style^="background-image: "] -#careersContentContainer div[style^="background-image: "] > * - -================================ - -metal.equinix.com - -INVERT -.tw-logo - -================================ - -meteo.imgw.pl - -INVERT -.meteo-chart > div > canvas -#map-container svg - -CSS -.menu-close img { - filter: none !important; -} - -IGNORE IMAGE ANALYSIS -.gory-imgw a - -================================ - -metrics.torproject.org - -INVERT -img[src^="/images/flags/"] -g > text -g > line - -CSS -.dot { - fill: var(--darkreader-neutral-background) !important; -} -div > img[src] { - filter: invert(90%) !important; -} - -================================ - -metro.co.uk - -INVERT -#masthead__logo-default - -================================ - -metrobyt-mobile.com - -INVERT -#digital-header-logo-img - -CSS -#Desktop-img { - z-index: 0 !important; -} - -================================ - -mewe.com - -CSS -body > .ember-view { - background-color: ${#ebf0f3} !important; -} -body > .ember-view.dialog_wrapper { - background-color: transparent !important; -} - -================================ - -microsoft.com - -INVERT -.m-updated-quicklinks .c-carousel.f-single-slide ul > li > a.c-hyperlink > img.large-icon -.carousel-inner .card-background -.key-message .card-background -.animated-hero-media - -CSS -#announce picture + div h3, -#announce picture + div p, -.edgeconsumer.features .m-hero h1, -.edgeconsumer.features .m-hero p { - color: var(--darkreader-neutral-background) !important; -} -div[aria-label="Download Microsoft Edge dialog"] { - background-color: #389fef !important; -} - -================================ - -microsoftedge.microsoft.com - -INVERT -rect[x="7.5"] -text[text-anchor="middle"] - -================================ - -midkar.com - -CSS -body { - background-image: unset !important; -} - -================================ - -mikanani.me - -INVERT -.an-res-row-bg - -================================ - -mikrotik.com - -INVERT -img[alt="MikroTik Logo"] -img[src*="down.png"] -img[src*="file.png"] -img[src*="md5.png"] - -CSS -img[src*="ros.jpg"] { - filter: invert(1) !important; - mix-blend-mode: exclusion !important; -} -img[src*="demo.png"] { - filter: invert(1) !important; - mix-blend-mode: exclusion !important; -} -img[src*="install.png"] { - filter: invert(1) !important; - mix-blend-mode: exclusion !important; -} -img[src*="cloud.png"] { - filter: invert(1) !important; - mix-blend-mode: exclusion !important; -} -img[src*="read.png"] { - filter: invert(1) !important; - mix-blend-mode: exclusion !important; -} -img[src*="buy.png"] { - filter: invert(1) !important; - mix-blend-mode: exclusion !important; -} -img[alt="MikroTik App"] { - filter: invert(1) hue-rotate(180deg) !important; - mix-blend-mode: difference !important; -} -img[alt="MikroTik Home App"] { - filter: invert(1) hue-rotate(180deg) !important; - mix-blend-mode: difference !important; -} -img[alt="Beacon Manager app"] { - filter: invert(1) hue-rotate(180deg) !important; - mix-blend-mode: difference !important; -} -img[src*="map_lv.jpg"] { - filter: invert(1) hue-rotate(180deg) saturate(5) !important; - mix-blend-mode: difference !important; -} - -================================ - -miktex.org - -INVERT -.icon-bar - -CSS -body, -.site-footer { - background-image: none !important; -} - -================================ - -mikufan.com - -IGNORE IMAGE ANALYSIS -#header-container - -================================ - -mindfactory.de - -INVERT -.col-icons -img[src*="icon_cart.svg"], img[src*="icon_gamepad.png"], img[src*="icon_schnaepp.png"], img[src*="schnaeppshop_logo_icon.webp"] -#dienst_montage, #dienst_montage .icons, img[src*="mindfactory_komplettsystemmontage.png"] -#ic_aboutus > div:nth-child(2), img[src*="ueberuns/middle.jpg"] -.ms_group_icon > a > img -.text-center > a > img - -CSS -.ms_product { - background-blend-mode: difference !important; -} -.itemhighlight > .ms_product { - background-color: var(--darkreader-selection-text) !important; -} -.p { - background-blend-mode: normal !important; -} -#dienst_montage > div > p { - color: var(--darkreader-neutral-background) !important; -} -body, -.ground-layer { - background-blend-mode: soft-light !important; -} - -================================ - -minecraftskins.com - -CSS -.farbtastic .overlay { - background-image: url("https://www.minecraftskins.com/bundles/app/images/mask.png") !important; -} -.header__menu-outer > ul > li > a { - color: black !important; -} - -IGNORE INLINE STYLE -.color -#color - -IGNORE IMAGE ANALYSIS -.farbtastic .overlay - -================================ - -minesweeper.online - -IGNORE IMAGE ANALYSIS -* - -================================ - -minsu.dianping.com - -INVERT -.zg-map - -================================ - -mint.intuit.com - -INVERT -.recharts-cartesian-axis-ticks - -CSS -[class*="ExpandableCard-wrapper"] { - background: none !important; -} -[class*=' TextField-TFInput'] { - background: var(--darkreader-neutral-background) !important; -} -[class*='BudgetCardstyle__ProgressLine'], -[class*='OverviewCardUIstyle__ProgressLine'] { - border-right-color: ${black} !important; - opacity: 1 !important; -} - -IGNORE INLINE STYLE -.recharts-sector - -================================ - -miro.com - -INVERT -#pixiCanvasContainer > :nth-child(1) -.b-icon - -================================ - -mit.edu - -INVERT -.mit-logo - -================================ - -mitx.* - -CSS -img { - background-color: white !important; -} - -================================ - -mixcloud.com - -INVERT -.cQABPj - -IGNORE INLINE STYLE -path[fill="none"] -path[fill-rule="evenodd"] - -================================ - -mjtnet.com - -INVERT -.navbar-brand - -================================ - -mlb.com - -CSS -#percentile-rank text, -.legend { - fill: var(--darkreader-neutral-text) !important; -} - -================================ - -mnt.ee - -CSS -#zone-content-wrapper { - color: var(--darkreader-neutral-text) !important; -} -#zone-content { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -mobiel.nl - -INVERT -.credit-warning__image -.dt-carousel-home__dots -.spec__network -img[alt="Tele2"] -img[alt="hollandsnieuwe"] -.header-main__icon -.spec__network-ready - -IGNORE INLINE STYLE -.version-without-subscription-row__color -.gEJLdA - -================================ - -mobile.bg - -CSS -table .tablereset { - background-image: none !important; -} - -================================ - -moegirl.org.cn - -CSS -span.heimu a.external, -span.heimu a.external:visited, -span.heimu a.extiw, -span.heimu a.extiw:visited { - color: #dadada !important; -} -.heimu, -.heimu a, -a .heimu, -.heimu a.new { - background-color: #dadada !important; - color: #dadada !important; -} -body:not(.heimu_toggle_on) .heimu:hover, -body:not(.heimu_toggle_on) .heimu:active, -body:not(.heimu_toggle_on) .heimu.off { - color: black !important; -} -body:not(.heimu_toggle_on) .heimu:hover a, -body:not(.heimu_toggle_on) a:hover .heimu, -body:not(.heimu_toggle_on) .heimu.off a, -body:not(.heimu_toggle_on) a:hover .heimu.off { - color: darkblue !important; -} -body:not(.heimu_toggle_on) .heimu.off .new, -body:not(.heimu_toggle_on) .heimu.off .new:hover, -body:not(.heimu_toggle_on) .new:hover .heimu.off, -body:not(.heimu_toggle_on) .heimu.off .new, -body:not(.heimu_toggle_on) .heimu.off .new:hover, -body:not(.heimu_toggle_on) .new:hover .heimu.off { - color: #BA0000 !important; -} - -================================ - -mojosoft.com.pl - -INVERT -img[src*="logo16"] -img[src*="img/iko"] -img[src*="img/ideabank"] -img[src*="img/logo"] -img[src*="img_logo"] -#searchbox - -CSS -#viewsh, -#view, -#szukajka, -header, -header.smaller #szukajka .inputsearch, -#search_query, -#mainMenusmall { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} -#searchbox, -select { - color: var(--darkreader-neutral-background) !important; -} - -IGNORE INLINE STYLE -header.smaller - -================================ - -moluch.ru - -INVERT -.logo - -CSS -body { - background-image: var(--darkreader-neutral-background) !important; -} - -================================ - -monde-diplomatique.fr - -INVERT -.logodiplo - -================================ - -money.pl - -CSS -.dynks { - color: ${#666666} !important; -} -a[href$="twitter.com/money_pl"] path:first-of-type { - --darkreader-inline-fill: transparent !important; -} - -================================ - -mongodb.com - -INVERT -img[alt="MongoDB logo"] - -================================ - -monitor.firefox.com - -INVERT -svg[class="Mozilla-logo"] > path[fill="#ffffff"] -.fx-bento-app-link.fx-bento-link.fx-mobile > span::before -img[src="/img/svg/laptop.svg"] -img[src="/img/svg/globe.svg"] -img[src="/img/svg/vpn.svg"] -button[class="vpn-banner-close"] - -================================ - -monokai.pro - -INVERT -.c-icon-process - -================================ - -monstercat.com - -CSS -.volume-slider-outer { - background-color: ${#4d4d4d} !important; - z-index: -99999999999; -} -.volume-slider-inner { - background-color: ${#1873cc} !important; -} -.volume-slider-handle { - background-color: ${#1d1d1d} !important; -} -.title, -h3, -.line-bottom, -.line-top, -a, -.one-line-ellipsis { - color: ${#4b4e50} !important; -} - -================================ - -monta.ir - -INVERT -.floatLeft -.formula-pack > img -.m--content-panel > div > div > canvas -.highcharts-background -.customized-field -.source -.choice > .layoutImageInline -.choice > img -.choice > div > img -.navbar-item > img -.empty_state_student -progress -td > img -.notice > div > img -td > div > img -.extrapractice > div > img -.extrapractice > div > div > img -.empty_teacher -.GO5O4PB-gc-b -.GO5O4PB-gc-i -.GO5O4PB-gc-e -.GO5O4PB-gc-i > div -.GO5O4PB-gc-Eb > div > a -img.is-rounded -img.is-128x128 - -CSS -.GO5O4PB-gc-n { - background-image: none !important; -} - -================================ - -moodle.herzen.spb.ru - -INVERT -.img-responsive - -================================ - -moodle.latech.edu - -CSS -#snap-home.logo, -.snap-logo-sitename { - background-image: url(//moodle.latech.edu/pluginfile.php/1/theme_snap/logo/1680805090/ltu-state-t-logo.png) !important; -} - -IGNORE IMAGE ANALYSIS -#snap-home.logo -.snap-logo-sitename - -================================ - -moovitapp.com - -INVERT -.map -.logo - -================================ - -morele.net - -INVERT -.h-logo.col -.h-control-btn > [src="/static/img/shop/icon-bezpieczna-dostawa.svg"] -.swiper-slide-visible.mx-auto.swiper-slide > .d-flex.img-container -div.cn-different-frontend.cn-menu-item-hover.cn-shop > .cn-main-name.cn-name > .cn-name-value > span:nth-of-type(1) - -================================ - -morningstar.com - -INVERT -.mbc-legend-top -.mbc-legend-bottom -.mbc-legend-item-date -.mdc-medal -.mdc-icon -.legend-group -.legend-box-text -.mbc-chart-group -.square-text -.min-max -.axis .tick -.axis .name -.mbc-axis .tick -.mbc-chart-legend-inner -.mbc-layers .tick - -================================ - -mos.ru - -INVERT -div[class^="src-components-Map-___styles-module__map_container"] -div[class^="src-components-Map-___styles-module__control"]::before -div[class^="src-components-Map-___styles-module__control"]::after -#map_div_container -#points_layer > text - -================================ - -motherjones.com - -INVERT -.logo -.footer-logo -.menu-button - -================================ - -moto.pl - -INVERT -img[src="https://bi.im-g.pl/im/0/24525/m24525630.png"] - -CSS -.main_wrapper, -.top_section_bg, -.bottom_section_bg { - background-color: ${#e5e5e5} !important; -} - -================================ - -motorsport.com - -CSS -.ms-schedule-table__cell { - background-color: var(--darkreader-neutral-dark) !important; -} - -================================ - -mozilla.net - -INVERT -.css-editor-container header h4::before - -================================ - -mp.weixin.qq.com - -INVERT -.audio_card_progress -.audio_card_progress_handle - -================================ - -msi.com - -INVERT -a.logo -.site-logo -.site-header-menu-toggle--button span -.flickity-button-icon -.homeLink__logo - -CSS -#MSI_Support .top-headBg, -#MSI_Support .top-head, -#MSI_Support .main-contact-support { - background-image: none !important; -} -.related__link > .related__title, -.service__link > .service__head { - z-index: 1 !important; -} - -================================ - -msmgtoolkit.in - -CSS -.cid-r89gzwx5mR .mbr-section-title { - color: ${white}; -} -.cid-r89gzwx5mR .mbr-section-subtitle { - color: ${white}; -} - -================================ - -msn.com - -INVERT -.logowrapper - -================================ - -msnbc.com - -CSS -.styles_progress__GFuLT::-moz-progress-bar { - background-color: var(--darkreader-neutral-text) !important; -} -.styles_progress__GFuLT { - background-color: #666 !important; -} -.styles_volume__peSyL::-moz-range-thumb { - background: var(--darkreader-neutral-text) !important; -} -.styles_volume__peSyL::-moz-range-track { - background: #666 !important; -} - -================================ - -msys2.org - -CSS -body { - background-image: none !important; -} - -================================ - -mt.lv - -CSS -.graph > text { - fill: var(--darkreader-neutral-text) !important; -} - -================================ - -mturk.com - -INVERT -[src="/assets/images/how-it-works.png"] -[src="/assets/images/requester_signup.svg"] -[src="/assets/images/worker_signup.svg"] -.lb-mid-8.lb-tiny-24.lb-col > .lb-img > div - -================================ - -mubi.com - -INVERT -.css-jd0r3a.e1kjxayp2 -.css-k7pew6.ef3qs2t4 img -.css-ywuexf -.css-19064tz -.css-1w8phor -.css-n1xrf1 -.css-1dev2nn.e18wowia1 .star -.css-ker29f.ed6irnx8 -img[src*="logo-small_black.png"] -img[src*="industry_event_logo_placeholder-small_black.png"] -.css-zj1tof - -CSS -.css-ztue73 { - filter: brightness(1) !important; -} -.css-1gez225.e1t0dj1j2 svg *, -.css-1gez225.e13p4uxl2 svg * { - --darkreader-inline-fill: #FFFFFF !important; -} -.css-1fdxz4i.e1f1mjpr0 svg *, -.css-15x1o6o.e19610x52 svg *, -.css-j9vvv8.e1gnvuk52 svg * { - --darkreader-inline-fill: ${#000000} !important; -} - -IGNORE INLINE STYLE -.star-ratings svg * - -================================ - -mullvad.net - -CSS -#bg { - fill: #192E45; -} - -================================ - -multitran.com - -INVERT -img[src="/gif/logoe.gif"] - -CSS -body { - background-image: none !important; -} - -================================ - -mumble.info - -INVERT -.os -.suggested-download-button-caption - -================================ - -muratordom.pl - -INVERT -.logo - -================================ - -murena.com - -INVERT -picture.wordmark--link - -================================ - -musclewiki.com - -INVERT -img[src="/static/images/logo.png"] - -================================ - -music.163.com - -INVERT -.btns -.cor -#g_backtop -#g_player -.hot -.logo -.m-playbar -.m-table thead -.u-btn2 -.u-lv -.u-btn -.m-tabs -.n-srch .pgsrch -.n-srch .pgsrch .btn -.n-srch .pgsrch .srch - -CSS -.n-myinfo { - background-image: none !important; -} - -================================ - -music.amazon.* -music.amazon.*.* - -CSS -.listViewStatusButtonInLibrary .add, -.listViewStatusButtonInLibrary .added { - background-color: ${black} !important; -} -.slider .scrubber, -.slider .scrubberHandle, -.slider .sliderTrackRemainder { - background-color: ${black} !important; -} - -================================ - -music.apple.com - -INVERT -body:not(.dark-mode) .web-navigation__logo-link.button-reset.ember-view -body:not(.dark-mode) .native-upsell__logo -body:not(.dark-mode) .native-upsell__action -body:not(.dark-mode) .dt-search-box__icon -.web-chrome-playback-controls -.dt-media-contextual-menu -.web-chrome-playback-lcd__contextual-badge--non-marquee.web-chrome-playback-lcd__contextual-badge -.love-or-popular__popular.love-or-popular__glyph -.web-chrome-playback-lcd__progress-bar-container -.web-chrome-playback-lcd__volume - -================================ - -musicmakers.ru - -INVERT -#menubtn > * - -================================ - -musictheory.net - -INVERT -[data-musictheory-id="lesson"] canvas - -================================ - -my.account.sony.com - -INVERT -img[class*="img-wallpaper"] - -================================ - -my.bible.com - -CSS -.nav-title { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -my.canadalife.com - -CSS -.nds-card { - background: inherit !important; -} - -================================ - -my.cofc.edu - -CSS -.container { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -my.contabo.com - -CSS -#mainmenu > div, -#submenu > div, -.button, -.ui-button { - background-image: none !important; -} -.ui-button { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -my.frantech.ca - -INVERT -.logo - -================================ - -my.home-assistant.io - -CSS -.ha-card { - background: ${white} !important; -} - -================================ - -my.nextdns.io - -INVERT -.mt-2.mb-4.text-center -img[src*="/static/media/logo-large"] -img[src*="/static/media/samsung"] -img[src*="/static/media/sonos"] -.d-md-inline > img -.settings-button -.stream-button -.tooltipParent > img -.list-group-item > div > img -.d-flex > .text-break > img -.d-flex > .flex-grow-1 > div > img -.d-flex.align-items-center.flex-wrap a img - -CSS -.text-right[style*="opacity: 0.3"] { - opacity: 0.6 !important; -} -g.rsm-geographies { - filter: invert(1) hue-rotate(180deg) brightness(130%) !important; -} -img[src*="/misc/flags/"] { - filter: revert !important; -} - -================================ - -my.nintendo.com - -CSS -.Layout-app, -.Modal_contentInner, -.signUpButton { - background-image: none !important; -} - -================================ - -my.remarkable.com - -INVERT -.menu-button -img[alt="desktop icon"] -img[alt="mobile icon"] - -================================ - -my.vega.ua - -INVERT -canvas#traffic_graph_canvas - -================================ - -my.volia.com - -CSS -body.signInPage { - background-image: none !important; -} -a.mainLogo { - background-color: ${grey} !important; -} - -================================ - -myabandonware.com - -INVERT -.sports -.duke2 -.heretic -.hexen -.strategy -.simulation -.blood -.driving -.keen -.playing-rpg -.jazz-jack -.war2 -.pitch - -CSS -.top { - background-image: var(--darkreader-neutral-background) !important; -} -body { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -myacademy.oracle.com - -INVERT -#logo -.login-logo -.logo--desktop -.nav-control-mobile span -.splide--container button -.dynamic-widget__result .list-view .completion-bar -.course-details__cta a.play::before -.thumb__background -.universal-side-panel__switcher button svg -.universal img -.slide-displays-root > div:nth-child(3) > div > :nth-child(2) > div > :nth-child(3) -.slide-displays-root div:nth-child(3) > div > :first-child > div > :last-child span -.slide-displays-root svg g path:nth-child(2) -.quiz-slide-visualizer -.slide-object-view-icon-placeholder -.quiz-session-view .choice-view__active-element-container .inline-border - -CSS -header, -#header { - background: ${#ccc} !important; -} -.quiz-slide-visualizer span { - color: #4e3629 !important; -} -.quiz-slide-visualizer .slide-layout > div > :nth-child(3) span, -.quiz-slide-visualizer .slide-layout > div > :nth-child(8) span { - color: #fed6af !important; -} -.message-box__icon, -.quiz-message-box__icon { - background-color: white !important; - border: 2px solid white !important; - border-radius: 50%; -} -.slide-displays-root div:has(div) > div :first-child > :first-child > :last-child > svg { - opacity: 0 !important; -} -#AssessmentForm :not(label) span { - color: ${black} !important; -} -#AssessmentForm label span { - color: ${#222} !important; -} - -================================ - -myaccount.google.com - -INVERT -c-wiz ul img - -================================ - -myaccount.suse.com - -INVERT -.auth-org-logo -.logo - -================================ - -myalmacoffee.com - -CSS -:root { - --gradient-base-background-1: var(--darkreader-neutral-background) !important; -} - -================================ - -myanimelist.net - -INVERT -.link-provider img -.theme-songs td[width="8%"]:first-child - -CSS -body:not(.ownlist) { - background-color: var(--darkreader-neutral-background) !important; -} -body { - background-color: var(--dakreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -mybrandnewlogo.com - -IGNORE INLINE STYLE -.b-logo-wrap * - -================================ - -myfood4less.com - -INVERT -.elementor-widget-theme-site-logo - -================================ - -mymenu.be - -INVERT -.close-icon - -CSS -.uix-steps .item.active .number { - color: ${darkred} !important; -} - -IGNORE INLINE STYLE -.uix-tracking .information .step .number - -================================ - -myorca.* - -INVERT -path.b - -CSS -.m-banner h1, -.m-banner p { - color: black !important; -} - -================================ - -myunidays.com - -INVERT -.title -.menu-btn-icon - -================================ - -mywikis.com - -INVERT -.heading-primary -.heading-subtext -.hero - -================================ - -n.maps.yandex.ru -mapeditor.yandex.com - -INVERT -span[class*="nk-icon_id_commit-"] > svg > g > path -span[class*="nk-icon_id_business-feedback-task"] > svg > g > path - -================================ - -na.myconnectwise.net - -CSS -.cwsvg { - fill: white; -} - -================================ - -nagatabi-p.jimdofree.com - -INVERT -.cc-imagewrapper > img - -================================ - -nalog.ru - -INVERT -.header__logo - -================================ - -namecheap.com - -INVERT -.whoisguard-img - -================================ - -naps2.com - -CSS -.os-icon[title="Linux"] { - background-color: white !important; -} - -================================ - -narimiran.github.io/nim-basics - -CSS -body, -#toc.toc2 { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -narrativ.com - -INVERT -img[alt="Narrativ Logo"] - -================================ - -nasa.gov - -IGNORE IMAGE ANALYSIS -.vjs-has-started .vjs-control-bar .vjs-control.vjs-logo-image - -================================ - -natemat.pl -aszdziennik.pl -innpoland.pl -dadhero.pl -mamadu.pl - -INVERT -img[src*="/static/media/"] -img[alt="close icon"] -a[href="#comments"] -.st1 - -CSS -img[class*="Footer--Logo"] { - background-color: #fff !important; -} - -================================ - -nation.cymru - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -nationalgeographic.com - -INVERT -.NavBar__Logo__Container - -================================ - -nature.com - -INVERT -.c-header__logo -[href="#search-menu"] > svg -.c-header__link--chevron > svg -img[alt="Nature Careers"] - -================================ - -naturemade.com - -INVERT -div.header-banner > svg -ul.main-nav-child-links > li > a > img - -CSS -:root { - --gradient-base-background-1: unset !important; -} -form[action="/search"] > div > label { - display: none; -} - -================================ - -nauka.rocks - -INVERT -.navigation-branding - -================================ - -navalnews.com - -INVERT -.logo - -================================ - -nba.com - -INVERT -.nlProgressBar - -================================ - -nbc12.com - -INVERT -div.logo.logo-slim -div.logo.logo-large.logo-footer - -IGNORE IMAGE ANALYSIS -.logo - -================================ - -nbcphiladelphia.com - -INVERT -.site-footer__social-list-item .icon - -================================ - -nbi.ku.dk - -CSS -.tile-link { - color: var(--darkreader-neutral-color) !important; -} - -================================ - -ncbi.nlm.nih.gov - -INVERT -.gene-genomic-context p.withnote img - -================================ - -nec.com - -INVERT -.logo - -================================ - -needymeds.org - -CSS -#header { - background: unset !important; -} - -================================ - -nejm.org - -INVERT -a[href="/"] svg - -================================ - -neonet.pl - -INVERT -div[class^="newsSingleBar"] > div[class^="newsSingleBarHeaderWidescreen-category"] - -CSS -div[class^="newsSingleBar"] > div[class^="newsSingleBarHeaderWidescreen-category"] { - color: ${white} !important; -} - -================================ - -neoseeker.com - -CSS -.hidden_text { - background-color: var(--darkreader-neutral-text) !important; - color: var(--darkreader-neutral-text) !important; -} -.hidden_text.shown { - background-color: transparent !important; - color: var(--darkreader-neutral-text) !important; -} - -================================ - -neowin.net - -INVERT -.comment-link -.news-view-switcher span -.author a.twitter-link -.meta-comments -.comment-link::before -.select-wrap::after -.report-article-button::before -#comment-help::before -.comment-button-report -.comment-interact a - -CSS -.select option { - background-color: #1c1e1f !important; - color: white !important; -} - -================================ - -nerdschalk.com - -INVERT -.logo-default - -================================ - -nerdwallet.com - -IGNORE INLINE STYLE -#global-nav * - -================================ - -nero.com - -INVERT -.navbar-brand - -================================ - -netbank.sparthy.dk - -CSS -select option { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -nethackwiki.com - -INVERT -.tex - -IGNORE IMAGE ANALYSIS -.mw-wiki-logo - -================================ - -netlify.com - -INVERT -.masthead-home-logo -.logo-wall -.input - -CSS -.root { - data-darkreader-inline-fill: var(--scrim-icon-color) !important; -} -.submenu, -.table-wrapper, -.table-header, -td { - background-color: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} -.menu, -.ntl-announcement-bar { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -netzpolitik.org - -INVERT -img[src*="/wp-content/themes/liebefeld/images/netzpolitik_logo.svg"] -img[src*="/wp-content/themes/liebefeld/images/palasthotel.svg"] -a.menu__canvas--toggle - -================================ - -neuralnetworksanddeeplearning.com - -INVERT -img[src$=".png"] -img[src^="images/KSH"] -img[src^="images/bump_function"] -img[src^="images/high_weight_function"] -canvas -svg -video - -================================ - -new.mta.info - -CSS -.services-container > .ss-header > #service-status-widget > .active > a:link { - background-color: #f2a900 !important; - color: #002d72 !important; -} -.services-container > .ss-header > #service-status-widget > .active > a:link::before { - color: #002d72 !important; -} -.ss-header { - border-bottom: 3px solid #f2a900 !important; -} - -IGNORE INLINE STYLE -a[title="MTA"] > svg > path - -IGNORE IMAGE ANALYSIS -.block-service-status-block .line-1 -.block-service-status-block .line-2 -.block-service-status-block .line-3 -.block-service-status-block .line-7 -.block-service-status-block .line-A -.block-service-status-block .line-C -.block-service-status-block .line-E -.block-service-status-block .line-SI - -================================ - -newegg.com - -CSS -.show-img-bg .goods-img:not(.bg-lightgray), -.show-img-bg .goods-img > img { - mix-blend-mode: normal !important; -} - -================================ - -news.mit.edu - -INVERT -.logo > .mit-news - -================================ - -news.mynavi.jp - -INVERT -.itsearch-head .logo -.site-header__bnr -.site-header__logo - -================================ - -news.yahoo.co.jp - -IGNORE IMAGE ANALYSIS -.QrZuR - -================================ - -news.yahoo.com - -INVERT -#uh-logo -.vp-handle - -================================ - -news.ycombinator.com - -INVERT -.votearrow - -CSS -#hnmain { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -newyorker.com - -INVERT -[data-testid="Logo"] -[class*="Logo__logo"] - -================================ - -nexojornal.com.br - -INVERT -.g-aiImg - -================================ - -nextdns.io - -CSS -.index .key-features .feature.blocklists { - background-image: none !important; -} - -IGNORE INLINE STYLE -path.rsm-geography - -IGNORE IMAGE ANALYSIS -.index .hero .content .logo - -================================ - -nextjs.org - -IGNORE INLINE STYLE -.banner * - -================================ - -nextron.no - -CSS -.configurator .summary__titles .resource-row { - border-color: var(--darkreader-neutral-text) !important; -} -.configurator .summary__titles .resource-row > .resource-shape { - border-color: var(--darkreader-neutral-text) !important; -} -.configurator .summary__titles .resource-row > .resource-filled { - background-color: var(--darkreader-neutral-text) !important; - border-color: var(--darkreader-neutral-text) !important; -} - -================================ - -ngrok.com - -INVERT -.customer-logos - -CSS -.browser path[fill="#BBB"], -.browser g[fill="#BBB"] { - fill: #BBB !important; -} -.terminal tspan[fill="#FFF"] { - fill: #FFF !important; -} -.terminal tspan[fill="#BBB"] { - fill: #BBB !important; -} - -================================ - -nicehash.com - -INVERT -.chart -img[src*="hashpower@2x] - -================================ - -nicovideo.jp - -INVERT -.NicoruIcon circle - -CSS -@media (prefers-color-scheme: dark) { - #IMALinearView iframe { - opacity: 0.1 !important; - } -} - -================================ - -niestatystyczny.pl - -INVERT -div#logo > h1 > a > img - -================================ - -nirsoft.net - -CSS -.menub1 a:link, -.menub1 a:visited { - color: #0040ff; -} -.menub1 a:hover { - color: #ffffd0; -} - -================================ - -niser.ac.in - -CSS -body, -#main-content, -#page { - background-image: none !important; -} - -================================ - -nixos.org - -INVERT -header a[href="/"]::after - -CSS -.demo-preview > .thumbnail svg .background { - fill: var(--darkreader-neutral-background) !important; -} -.packages-searchbox::before, -.packages-searchbox::after { - background-image: none !important; -} - -================================ - -nlnet.nl - -INVERT -.header_logo - -================================ - -nlopt.readthedocs.io - -CSS -.wy-nav-content-wrap { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -nnmclub.to -nnm-club.me - -INVERT -img[src$="images/icon_arrow.gif"] -img[src$="images/freeleech.gif"] - -CSS -div.ui-datepicker { - background: none !important; -} - -IGNORE IMAGE ANALYSIS -* - -================================ - -nodejs.org - -CSS -[data-theme="dark"] h1.special { - background-image: linear-gradient(180deg, #fff, hsla(0, 0%, 100%, .8)) !important; -} -[data-theme="light"] h1.special { - background-image: linear-gradient(180deg, ${#2c3437}, ${rgba(44, 52, 55, .8)}) !important; -} - -================================ - -nokia.com - -CSS -.pds-background-cover > .pds-background-image-set { - background-color: var(--darkreader-neutral-background) !important; -} -.pds-background-cover video { - filter: brightness(50%) sepia(40%) !important; -} - -================================ - -nomadgoods.com - -INVERT -header a[href="/"] > svg - -================================ - -nonograms.org - -CSS -.nonogram_table { - background-color: #404040 !important; -} - -================================ - -norton.com - -INVERT -.c-topnav__wrap a - -================================ - -nos.nl - -INVERT -.npo-button - -IGNORE IMAGE ANALYSIS -.npo-button - -================================ - -notebooks.githubusercontent.com/view/ipynb - -CSS -.jp-InputArea-editor, -.jp-CodeConsole .CodeMirror.cm-s-jupyter, -.jp-Notebook .CodeMirror.cm-s-jupyter, -.highlight { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -notion.so - -INVERT -img[alt="People using Notion"] -.global-margin-s .logos -.persona-grid > .persona-grid-item > .persona-grid-image -.desktop-illustration -.illustration .next-image -.api-section-image .next-image -.visual .next-image -.logo svg > :first-child - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; -} -* { - caret-color: ${gray} !important; -} -.notion-divider-block div div { - border-bottom: 1px solid ${rgba(55, 53, 47, 0.4)} !important; -} - -================================ - -novartis.com - -INVERT -#logo - -================================ - -novelgames.com - -CSS -a#commonLogo { - background-image: url("https://staticz.novelgames.com/style/default/common_e.5.png"), linear-gradient(rgb(255, 255, 255), rgb(255, 255, 255)), url("https://staticz.novelgames.com/style/default/common.8.png") !important; -} - -================================ - -novinky.cz -garaz.cz -seznamzpravy.cz - -CSS -.ribbon, -.szn-input-with-suggest-list { - background-color: var(--darkreader-neutral-background) !important; -} -.szn-input-with-suggest-list { - border-color: ${gray} !important; -} - -================================ - -nowafarmacja.pl - -INVERT -.icon-chevron-down -.payment-banners -.hheader::after - -================================ - -nowemedium.pl - -INVERT -.logo-tagline-group -.menu_toggle - -================================ - -nperf.com - -INVERT -.SpeedTest > .resultPanel - -CSS -.SpeedTest > .resultPanel { - background-color: transparent !important; -} - -================================ - -npmjs.com - -INVERT -header a[href="/"] svg -#orgs_panel img.h2 -#enterprise_detail_panel img.h2 -#customers_panel img[src*="adobe.full.png"] -#customers_panel img[src*="bbc.full.png"] -#customers_panel img[src*="conde-nast.full.png"] -#customers_panel img[src*="netflix.full.png"] -#customers_panel img[src*="visa.full.png"] -._5532dff2 -._93bbf0b4 - -CSS -a title + g[data-darkreader-inline-fill] { - fill: var(--darkreader-neutral-text) !important; -} - -================================ - -nrc.nl - -INVERT -.header__logo -.selections-bar__item__image -.header__button svg -.block__more-link__arrow path -.metabox__icon -.article__byline__icon -.footer__logo -.socialbuttons - -================================ - -ns.nl - -CSS -.section--nsYellow { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -ntlite.com - -CSS -.fr-wrapper *::selection { - background-color: dodgerblue !important; -} - -================================ - -nu.nl - -CSS -.app-figure--caption-overlay { - background: linear-gradient(0deg, var(--darkreader-neutral-background), #fff 40%) !important; -} -.main-nav__main { - border-top: inherit !important; -} - -================================ - -nvidia.com -nvidia.in - -INVERT -svg.global-footer__logo -a.brandLink -img[src*="Experience"] -a[href*="facebook"] -a[href*="twitter"] -a[href*="youtube"] -a[href*="flickr"] -img[src*="tao-toolkit-"] -img[src*="logo"] -img[alt*="Logo"] - -CSS -div.nvidia a svg { - fill: ${black} !important; -} -div.brand-container a svg { - fill: ${black} !important; -} -.taboff { - background-image: none !important; -} -.mid-gray { - background-color: #999 !important; - fill: #999 !important; -} -.dark .green40 { - background-color: #3b5d00 !important; - fill: #3b5d00 !important; -} -.green50 { - background-color: #598b00 !important; - fill: #598b00 !important; -} -.dark .green100 { - background-color: #76b900 !important; - fill: #76b900 !important; -} - -================================ - -nvidia.pl - -INVERT -.brand-container -img[src*="Experience"] -a[href*="facebook"] -a[href*="twitter"] - -CSS -body, -.taboff { - background-image: none !important; -} - -================================ - -nxos.org - -INVERT -#logo -a[href^="#sidewidgetarea"] - -================================ - -nymag.com - -INVERT -.article-feed-header svg -.article-nav-top-center -#latest-feed-title -.logo-svg -#site-feed-curbed-title > .feed-title-wrapper -.tab-trigger > svg -.tab-trigger > svg > circle -.tab-trigger > svg > g > circle -.title-logo -#vulture-trigger > svg > g > path:nth-child(1) -#wwwthecut-trigger > svg > .active > path - -CSS -.collection-articles-lede_first-featured .lede-item[data-track-index="0"] .lede-image-wrap { - z-index: 0 !important; -} -.collection-articles-lede_first-featured .lede-item[data-track-index="0"] .lede-text-wrap { - position: absolute !important; - z-index: 1 !important; -} - -================================ - -nytimes.com - -INVERT -#site_header_wrapper a[aria-label="Wirecutter"] -div#live-country-map.live-country-map-embed -div#live-us-map.live-us-map-embed -g > text -.svelte-1v1dl99 -.vmap-zoom-buttons -#xwd-board - -CSS -.css-oylsik, -.css-nhjhh0 svg, -.css-18z7m18 svg, -.css-1q2j1fr svg, -a[data-testid] > svg { - fill: ${black} !important; -} -.headline-link div { - color: ${black} !important; -} -.headline-link div:hover { - color: ${#555} !important; -} -.svelte-15nnlbj { - font-weight: bold !important; -} -#xwd-board rect[class^="Cell-block--"] { - fill: ${black} !important; -} -#xwd-board text[class^="Cell-hidden--"] { - color: ${black} !important; -} -#xwd-board rect[class^="Cell-cell--"] { - fill: ${darkgrey} !important; -} -#xwd-board rect[class^="Cell-highlighted--"] { - fill: ${lightgrey} !important; -} -#xwd-board rect[class^="Cell-selected--"] { - fill: ${white} !important; -} -#xwd-board rect[class^="Cell-related--"] { - fill: ${goldenrod} !important; -} -#xwd-board rect[class^="xwd__cell--cell"] { - fill: ${darkgrey} !important; -} -#xwd-board rect[class^="xwd__cell--highlighted"] { - fill: ${lightgrey} !important; -} -#xwd-board rect[class^="xwd__cell--selected"] { - fill: ${white} !important; -} -#xwd-board rect[class^="xwd__cell--related"] { - fill: ${khaki} !important; -} -#xwd-board rect[class*="xwd__cell--penciled"] ~ text[text-anchor^="middle"] { - fill: ${blue} !important; -} - -================================ - -nzbget.* - -INVERT -.icon-top -.icon-bottom -.icon-up -.icon-down - -================================ - -nzz.ch - -INVERT -.logo - -CSS -.logo { - background-color: unset !important; - color: ${white} !important; -} - -================================ - -o2.co.uk - -INVERT -.brandLogo - -================================ - -oalevelsolutions.com - -INVERT -p > span > img - -================================ - -objectclub.jp - -INVERT -#region-content > div.plain > table > tbody > tr > td > img:nth-child(2) - -CSS -body { - background-image: none !important; -} - -================================ - -obserwatorgospodarczy.pl - -INVERT -.logo-img - -================================ - -oclc.org - -IGNORE INLINE STYLE -.chart-key - -================================ - -odysee.com - -INVERT -.header__navigation-logo -[data-vjs-player] .vjs-control-bar > [title="Autoplay Next Off"] -[data-vjs-player] .vjs-control-bar > [title="Autoplay Next On"]::after - -CSS -.content__viewer { - border: none !important; -} - -================================ - -oed.com - -INVERT -img[alt="search"] - -CSS -.wordy { - color: var(--darkreader-neutral-text) !important; -} -#maincontainer { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -oeis.org - -INVERT -.mwe-math-fallback-image-inline -.mwe-math-fallback-image-display - -================================ - -oferteo.pl - -INVERT -img[src*="oferteo-color"] -ul.logo-box.text-center -span.icon-gray.quotation-mark - -================================ - -office.com -*.office.com - -INVERT -.ms-ohp-svg-Icon.ms-ohp-Icon--privacyLogo - -IGNORE IMAGE ANALYSIS -.ms-ohp-svg-Icon.ms-ohp-Icon--privacyLogo -.ms-ohp-svg-Icon.ms-ohp-Icon--calendarLogo::before -.ms-ohp-svg-Icon.ms-ohp-Icon--flowLogo::before - -================================ - -ogs.google.com - -CSS -body > div > c-wiz > div > div > c-wiz > div > div > div > div > div { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -oisd.nl - -INVERT -img[alt="logo"] - -================================ - -okonto.pl - -INVERT -.imageWidget - -================================ - -okta.com - -INVERT -.chiclet--container -.chiclet--article -.chiclet--footer -img[class="logo"] - -================================ - -old.reddit.com - -INVERT -.volume-slider-bar -.volume-slider-thumb -.reddit-video-seek-bar-root -.infobar.listingsignupbar - -CSS -.seek-bar-progress { - background-color: ${#004daa} !important; -} -body::before { - z-index: 0 !important; -} -.link .entry, -.link .usertext-body .md, -.side, -.commentarea, -.commentarea > .usertext.cloneable, -#sr-header-area, -#sr-more-link, -.tabmenu li.selected a, -input[type="text"], -textarea, -.comment, -.comment .flat-list li, -.title-button, -.linkinfo, -.titlebox form.toggle, -.side .md > blockquote:first-child, -body.loggedin .side .redditname::after, -.side .md > blockquote:first-child > h1 + p a, -.side .md h2:first-of-type ~ *, -.side .md > p:first-of-type ~ h2::before, -.side .sidecontentbox, -.flair::before, -.flair::after, -.linkflairlabel::before, -.linkflairlabel::after { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -oleole.pl - -INVERT -#logo::after -div[id="brands-carousel"] -div[id="footer-logo-brands"] -img[src*="main_menu"] -img[src*="SG/icon"] - -================================ - -olx.pl - -CSS -.searchmain { - background-color: var(--darkreader-inline-bgcolor) !important; -} -.wrapper, -.footer-bottom { - background-color: var(--darkreader-neutral-background) !important; -} - -IGNORE IMAGE ANALYSIS -.cat-icon.cat-cmt-icon-628 -.cat-icon.cat-cmt-icon-87 -.cat-icon.cat-cmt-icon-2433 -.maincategories .maincategories-list .li .item a[data-id="promo"] .category-1.cat-icon-promo -.maincategories .maincategories-list .li .item a[data-id="promo"] .category-6.cat-icon-promo -.maincategories .maincategories-list .li .item a[data-id="promo"] .category-8.cat-icon-promo -.maincategories .maincategories-list .li .item a[data-id="promo"] .category-7.cat-icon-promo -.maincategories .maincategories-list .li .item a[data-id="promo"] .category-2.cat-icon-promo -.maincategories .maincategories-list .li .item a[data-id="promo"] .category-5.cat-icon-promo -.maincategories .maincategories-list .li .item a[data-id="promo"] .category-4.cat-icon-promo -.maincategories .maincategories-list .li .item a[data-id="promo"] .category-3.cat-icon-promo - -================================ - -omarapollo.com - -INVERT -.header__heading-logo - -CSS -.gradient { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -omgubuntu.co.uk - -CSS -.header { - background: var(--header-background) !important; -} - -================================ - -omni.se - -CSS -.article, -.resource, -.component--storyLink, -.component--storyHeading, -.btn--secondary, -.starbox-star { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -omnicalculator.com - -CSS -.GenericText { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -omnivox.ca - -INVERT -td[style*="/cvir/UI"] -img[src^="/cvir/UI/Theme/Lea_Defaut/Images/Accueil_LEA"] -img[src="/cvir/UI/Theme/Lea_Defaut/Images/mesclasses_cg_subtop.jpg"] -img[src^="/cvir/UI/Theme/Lea_Defaut/Images/accueil_"] -img[src$="/bas_du_menu.jpg"] -img[src$="tile.jpg"] -.cgSelect -.mioLinks -.calendrier -.servLinks -.descSection - -CSS -.cgSelect > table > tbody > tr > td:nth-child(1) > a > font { - color: green !important; -} -.calendrier > table > tbody > tr, -.calendrier > table > tbody > tr > td > img, -.calendrier > table > tbody > tr > td > table > tbody > tr > td > img { - filter: invert(100%) hue-rotate(180deg) contrast(100%) !important; -} -table[style*="/cvir/UI"], -.cgBg { - background-image: none !important; -} - -================================ - -one.uf.edu - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -onedrive.live.com - -CSS -.ms-CommandBar { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -onelook.com - -INVERT -img[alt="OneLook"] - -================================ - -onepeterfive.com - -CSS -.gb-has-dynamic-bg { - background-image: var(--background-url) !important; -} - -================================ - -onet.pl -plejada.pl -*.onet.pl - -INVERT -[class*="WeatherDay_tempIcon"] -._3ZySwSLi_pur0unnAQO2No -.forecast img -.icon-shareIcon svg -.locationName svg -.logo-cls-1 -.logoImageRight -.serviceIcon -.sheet -.weatherBox .iconNow -[class*="weatherIcon"] -.websiteLogo -[class*="Logo_"] -a.serviceLogo img -img[alt="O!Konto"] -img[alt="Plejada.pl"] -ul.contentList img.icon -svg[class*="MenuIcon"] -svg[class*="LoginIcon"] -svg[class*="ProfileImage_imageSvg"] -.weatherExtrasWidget__category-image img -[class*="SponsorImage"] -.windDirectionArrow -.geoIcon -.regionsContentList .iconHolder img -.hSunChart img -.hMoonChart img - -CSS -.mainBoxBgHolder { - background-blend-mode: color; - background-color: rgba(0, 0, 0, 0.25); -} -.weatherMap .mapLayer .fil0, -#weatherChartsHolder .chartValue { - fill: rgb(128, 128, 128) !important; -} -svg path[d^="M50.315,89"], -path[d^="M15.757"], -path[d^="M14.989"], -path[d^="M8.935"], -path[d^="m14.05"] { - fill: ${white} !important; -} - -================================ - -online.noordhoff.nl - -INVERT -#EAGABA img - -================================ - -online.rbb.bg - -INVERT -.has-context:hover -.active -.btn - -================================ - -onlinelibrary.wiley.com - -INVERT -#mainLogo - -================================ - -onlinetrade.ru - -INVERT -.drawCats__item__name - -CSS -.drawCats__item__image { - filter: brightness(50%) sepia(40%) !important; -} - -================================ - -onlineuniversities.com - -CSS -body { - background-image: none !important; -} - -================================ - -onlyoffice.com - -INVERT -.logo - -================================ - -onnibus.com - -INVERT -.icon - -================================ - -op.gg - -INVERT -.Level -.ranking-highest__icon .ranking-highest__level - -================================ - -openai.com - -INVERT -figure.release-cover>div:first-of-type>img - -CSS -body { - background: initial !important; -} -header[style*="background-image"], -.bg-cover[style*="background-image"] { - background: none !important; -} -.is-below-fold .header--cover .nav, -.is-below-fold .post-header--cover .nav { - background: ${white} !important; - color: ${black} !important; -} -span.token.comment { - color: ${#aaa} !important; -} -span.token.punctuation { - color: ${#777} !important; -} -a.btn:not(.fade), -button.btn { - background: ${rgba(5, 5, 38, 0.05)} !important; - color: ${#050526} !important; -} -button.btn:hover { - color: ${#b0b0b0} !important; -} -figcaption, -.caption { - color: ${rgba(5,5,38,0.5)} !important; -} -.content .timeline > li::before, -.timeline > li::before { - color: ${black} !important; -} -.content .timeline > li::after, -.timeline > li::after { - background-color: ${black} !important; -} -.switch-input:checked + .switch-label { - color: ${rgba(0, 0, 0, 0.7)} !important; -} - -================================ - -openanolis.org - -INVERT -.logo - -================================ - -openbenchmarking.org - -INVERT -g[font-size]:not(g[font-size][fill^="#fff" i]:not(.oborg_expandable_result g)) -g[font-size]:not(g[font-size][fill^="#fff" i]) > text[fill="#005a00"] - -IGNORE INLINE STYLE -g[font-size][fill^="#fff" i] - -================================ - -opencollective.com - -INVERT -img[alt="Open Collective"] - -CSS -#section-contributors > div { - background-image: none !important; -} - -================================ - -openebooks.net - -INVERT -img[src="images/home_banner.png"] - -================================ - -openenglishbible.org - -INVERT -#logo -img[src="html-logo.png"] - -================================ - -opengeofiction.net -openstreetmap.org - -INVERT -.map-layout #map -.ideditor g.vertex .icon -.ideditor g.point .icon -.ideditor .icon.areaicon-halo - -CSS -div[dir="ltr", id="map"] { - background: #000 !important; - filter: none !important; -} -.ideditor .labels-group.halo text { - stroke: var(--darkreader-neutral-background) !important; -} -.map-layout #map { - background-color: ${#1b1b1b} !important; -} -img.loader { - filter: invert(93.7%) hue-rotate(180deg) contrast(90.6%) !important; -} - -IGNORE INLINE STYLE -.ideditor .main-content * - -================================ - -openoffice.org - -INVERT -#ooo-logo - -================================ - -openreview.net - -CSS -#__next { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -openspeedtest.com - -CSS -use.Cards { - fill: unset !important; -} - -================================ - -openstax.org - -CSS -input[data-testid$="-search-input"] { - background-color: transparent !important; -} - -================================ - -openvpn.net - -IGNORE INLINE STYLE -.navbar-brand > svg * - -================================ - -openwall.com - -INVERT -.logo - -================================ - -openweathermap.org - -INVERT -#chart-component -#y-axis -img.leaflet-tile - -================================ - -openwrt.org - -CSS -#dw__pagetools .menuitem svg { - fill: var(--darkreader-neutral-text) !important; -} - -================================ - -orf.at/corona/* - -INVERT -.bg -.annotation -.sparkline--fill - -================================ - -osu.edu -ohio-state.edu - -CSS -#osu_navbar { - background-image: linear-gradient(rgb(40, 43, 45) 0%, rgb(63, 69, 71) 100%); - border-bottom: 5px solid rgb(187, 0, 0); -} -body.sidebar-layout #page #content, -#page #content { - background-image: none; -} - -================================ - -otomoto.pl - -INVERT -.seller-card__links__link__icon - -================================ - -overleaf.com - -INVERT -.canvasWrapper - -================================ - -overreacted.io - -CSS -:root { - --bg: var(--darkreader-neutral-background) !important; -} - -================================ - -overwatchleague.com - -CSS -div[class^="dynamic-bracketstyles__Container"] .connector { - z-index: 0 !important; -} -body { - background-image: var(--darkreader-neutral-background) !important; -} - -================================ - -ovhcloud.com - -INVERT -.oof-content-group-line-item - -================================ - -owncube.com - -INVERT -[src="/assets/img/logo.png"] - -CSS -h1, -h2, -h3, -h4, -h5 { - color: var(--darkreader-neutral-color); -} - -================================ - -oxfordlearnersdictionaries.com - -INVERT -.logo-footer - -================================ - -ozbargain.com.au - -CSS -div.comment-op { - background-image: linear-gradient(#000000, #212121) !important; -} - -================================ - -ozon.ru - -INVERT -ymaps[class$="ground-pane"] - -================================ - -p30download.com - -CSS -.article-wrapper { - color: ${#090702} !important; -} - -================================ - -pa.gov - -INVERT -.nav .nav-trigger.nav-open .inner - -CSS -button { - border: 2px solid #003e51 !important; -} -.nav-trigger:hover { - box-shadow: inset 0 0 0 2px #003e51 !important; -} -.nav-wrapper { - background: #003e51 !important; -} - -================================ - -pacjent.gov.pl - -CSS -.hero-content { - color: var(--darkreader-neutral-background) !important; -} - -================================ - -packages.ubuntu.com - -CSS -body { - background-image: none !important; -} - -================================ - -pagerduty.com - -INVERT -.navbar-brand - -CSS -[class*="SearchBox_icon"] { - filter: invert(80%); -} - -================================ - -palemoon.org - -INVERT -img[src="images/goanna200x66.png"] -img[src="images/vpsserver.png"] - -================================ - -palshovon.wixsite.com - -INVERT -#BACKGROUND_GROUP -[alt="Marble Surface"] - -CSS -[data-mesh-id="SITE_FOOTERinlineContent-gridContainer"] { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -pan.baidu.com - -INVERT -.module-header-wrapper dt - -================================ - -pan.quark.cn - -INVERT -img[alt="夸克网盘"] -img[alt="夸克网盘 logo"] - -================================ - -panapply.org - -INVERT -.logo - -================================ - -panerabread.com - -INVERT -.pds-h-logo - -================================ - -panthema.net - -CSS -body { - background-image: none !important; -} - -================================ - -papaya.rocks - -INVERT -.favorite.js-open-login -.header__title -.js-logo -.js-logo-big -.js-menu-toggle -.js-open-search -.nav__item--profile -.search__button -.search__close - -================================ - -park-in.gr - -CSS -.div-background { - z-index: 0 !important; -} -.container { - position: relative !important; - z-index: 1 !important; -} - -================================ - -partitionwizard.com - -CSS -.pw-banner { - background-image: none !important; -} - -================================ - -passport.baidu.com - -INVERT -.pass-header-logo -.right-icon - -================================ - -passport.bilibili.com/login - -CSS -.qrcode-box { - background: white !important; - padding: 10px !important; -} - -================================ - -passport.jd.com - -CSS -.qrcode-img { - background: white !important; -} - -================================ - -passport.yandex.* - -CSS -.MagicField-qr { - background-color: white !important; -} - -IGNORE IMAGE ANALYSIS -* - -================================ - -paste.rs - -CSS -pre { - --darkreader-inline-bgcolor: var(--darkreader-neutral-background) !important; -} - -================================ - -pathfinderwiki.com - -CSS -body { - background-color: ${rgb(245,245,245)}; - background-image: none; -} -.mw-page-container-inner { - background-color: ${rgb(225,225,245)}; - background-image: none; -} -.fw-alignment-on { - --darkreader-inline-bgcolor: royalblue !important; -} -.fw-alignment-on a { - color: ${black} !important; -} - -================================ - -patreon.com - -INVERT -a[href^="https://docs.google.com"] img -a[href^="https://forms.gle"] img -button[data-tag="menuToggleDiv"] svg -[data-tag="creator-public-page-social-twitch"] -[data-tag="creator-public-page-social-twitter"] -[data-tag="pages-creator-public-page-Header-ShareCampaign"] - -CSS -div[data-tag="comment-actions"] svg, -div[data-tag="post-details"] svg { - fill: var(--darkreader-neutral-text) !important; -} - -IGNORE IMAGE ANALYSIS -* - -================================ - -patriotmemory.com - -INVERT -.w-nav a[href="/"] img -.w-nav-brand - -================================ - -patuscada.bar - -INVERT -.topo -.topo > * -.patuscada-logo -.botoes-topo a:last-child img -.logo - -IGNORE IMAGE ANALYSIS -.etiqueta-vermelha - -================================ - -paulgraham.com - -CSS -body { - background-image: none !important; -} - -================================ - -paypal-doladowania.pl - -INVERT -img[src*="/img/bank-logos/"] - -================================ - -paypal.com - -CSS -input.invoiceNumber, -input.transactionAmount { - border-style: solid !important; - border-width: 1px !important; -} -.cw_tile-promo-title-container_dw2.css-1cak51m-card_base { - background: none !important; -} -.tab_container, -.listing_bg { - background-color: ${#faf8f5} !important; -} -.listing_container, -.listing_container_background { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -payu.com - -CSS -img[src$="PayU-Map_Homepage_World.svg"] { - filter: invert(90%) hue-rotate(180deg) contrast(90%) !important; -} - -================================ - -pbs.org - -CSS -BODY.normal td.bodyarea, -body[background] { - background-image: none !important; -} - -IGNORE INLINE STYLE -.page-header__brand > svg > path - -================================ - -pcdiga.com - -CSS -.data { - background-color: var(--darkreader-neutral-background) !important; -} -input, -textarea { - background-color: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} -li.level0 > a { - color: var(--darkreader-neutral-text) !important; -} -li.level0 > a:hover { - color: #ff4d23 !important; -} - -================================ - -pcgamer.com - -INVERT -img[alt="Best Buy"] -img[alt="Amazon"] - -CSS -img { - mix-blend-mode: normal !important; -} - -IGNORE INLINE STYLE -path - -================================ - -pch24.pl - -INVERT -a[href="https://pch24.pl"] svg - -CSS -a[href="https://pch24.pl"] svg path[fill="#1d1e1d"] { - --darkreader-inline-fill: ${white} !important; -} - -================================ - -pcloud.com - -INVERT -.logo - -================================ - -pcpartpicker.com - -IGNORE INLINE STYLE -.price-history-legend-color - -================================ - -peardeck.com - -INVERT -.boxy-svg -.mc-answer__check-inner -.check-svg - -================================ - -pennylane.ai - -INVERT -div[style*="xanadu-background.png"] -div[style*="xanadu-background.png"] > div -div[style*="banner.png"] -div[style*="banner.png"] > div - -================================ - -peonaviveu.blogspot.com - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -perfekcyjnawdomu.pl - -INVERT -img[src*="logo"] - -================================ - -petco.com/shop/en/petcostore - -INVERT -a[class^="LogoAnchor__Container"] -button[class^="HamburgerButton"] -img.center-block.margin-top-sm -h1.pals-header - -================================ - -petri.com - -INVERT -.logo - -================================ - -pgatour.com - -CSS -.score-card tr td.birdie { - background-color: rgb(1, 76, 181); - background-image: initial; -} - -================================ - -pgp.net.nz - -INVERT -img[src*="DotNZ.svg"] -img[src*="InternetNZ.svg"] - -================================ - -phoenixframework.org - -CSS -.eva { - font-family: "Eva-Icons" !important; -} - -================================ - -phonescoop.com - -INVERT -#sitelogo - -CSS -div#outer.wide, -#socpage, -div#top.top-lg, -div#outer { - background-image: none !important; -} - -================================ - -photofeeler.com - -INVERT -.navbar-brand - -================================ - -phys.nagoya-u.ac.jp - -INVERT -img[src="img/top_94.gif"] - -CSS -#wrap table { - background-image: none !important; -} - -================================ - -physics.gmu.edu - -INVERT -img.math-display - -================================ - -pianistdiscography.com - -CSS -.bg_white { - background-image: none !important; -} - -================================ - -piazza.com - -CSS -.dashboard_toolbar, -.page_feed_bucket_header { - background: linear-gradient(to bottom, ${#c5c7cd} 0%, ${#dfe1e2} 100%) !important; -} - -================================ - -picknsave.com - -INVERT -.KrogerHeader-Logo--inner - -================================ - -picrew.me - -IGNORE INLINE STYLE -.imagemaker_colorpalette li - -================================ - -pilot.wp.pl - -INVERT -.logo -div > button > svg - -================================ - -ping.sx - -INVERT -.ring-0 - -CSS -#headlessui-switch-1 { - filter: brightness(70%) !important; -} - -================================ - -pipewire.org - -CSS -body, -img, -video, -iframe { - filter: none !important; -} - -================================ - -pipiwiki.com - -INVERT -.mwe-math-fallback-image-inline -.mwe-math-fallback-image-display -#logo_img - -================================ - -pir2.forumeiros.com - -INVERT -img[src*="latex"] - -================================ - -pirateship.com - -INVERT -.pdf-preview - -================================ - -pixabay.com - -INVERT -#logo - -================================ - -pixaful.com - -CSS -body { - background-image: none !important; -} - -================================ - -pixilart.com - -CSS -.dark-mode-visible { - display: inline-block; -} -.light-mode-visible { - display: none; -} -.navbar-nav > .nav-item > .navbar-brand > img { - content: url("/images/public/logo_pixilart_simple_white.png?v=1.1"); -} - -IGNORE IMAGE ANALYSIS -#image-art-modal - -================================ - -pixiv.net - -CSS -.jAENWx, -.iYRMgo { - color: ${aliceblue} !important; -} - -================================ - -pixlab.pl - -INVERT -img[src*="trust_us"] - -================================ - -pizzahut.com - -INVERT -.jss44 - -================================ - -pkg.go.dev - -CSS -.go-Select { - background-position: right center; - background-repeat: no-repeat; -} - -================================ - -pkgs.org - -CSS -.text-bg-light { - background-color: ${rgb(248, 249, 250)} !important; -} - -================================ - -pl.glosbe.com - -INVERT -footer > div > div > a > img - -================================ - -planet.gnome.org - -CSS -div.post { - background-image: none !important; -} - -================================ - -planetagracza.pl - -INVERT -p.site-title -#footer .site-title a - -================================ - -planetminecraft.com - -CSS -#container, -.forum_replies_container, -.forum_reply, -.contents, -.spoiler_header, -#resource-log, -.tag, -.view_more:not(:hover), -#popup, -code { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -plannedparenthood.org - -INVERT -a.top-level-nav-link::after -a.top-level-nav-link::before -a.top-level-nav-link > span::after - -================================ - -plantuml.com - -INVERT -.scale - -================================ - -play.google.com - -INVERT -.bUWb7c -.WF1WQd -img[src="https://www.gstatic.com/android/market_images/web/play_prism_hlock_2x.png"] -a[href*="about/products"] - -CSS -a:visited { - color: ${black} !important; -} -div { - color: var(--darkreader-neutral-text); -} - -================================ - -play.google.com/apps/publish - -INVERT -.IXNAUGB-u-e -.IXNAUGB-U-g img -.IXNAUGB-U-g -img[src^="data:image/png;"] -.LTMPNY-u-e - -================================ - -play.google.com/books/listen - -INVERT -a[href*="books/audiobooks"] - -CSS -.chapter-item:not(.iron-selected) .chapter-title { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -play.google.com/music - -INVERT -.music-logo -a[title="Google apps"] -.song-row .rating-container - -================================ - -play.google.com/store/paymentmethods - -CSS -body { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -playstation.com - -CSS -.pills__container { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -plotkibiznesowe.pl - -INVERT -#logo - -================================ - -plumbingforums.com - -INVERT -.node-icon::before - -CSS -div, -.node-icon { - background-color: var(--darkreader-neutral-background) !important; -} -.input:focus, -.input.is-focused::placeholder { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -plus.google.com - -INVERT -a.gb_b > div -a[href*="about/products"] - -================================ - -pochta.ru - -INVERT -ymaps[class$="ground-pane"] - -================================ - -pocketbase.io - -INVERT -.landing-hero - -CSS -.landing-hero div.wrapper:nth-child(2), -.page-header { - filter: inherit !important; -} -div.eye-socket { - background-color: #fff !important; -} - -================================ - -podcast.adobe.com - -INVERT -.bWTYPJ -.cylKGQ -sp-action-button > img -.track -footer > img - -CSS -sp-button.sc-eSNLA-D.joqRAB { - background-color: ${black} !important; -} -sp-button.sc-eSNLA-D.joqRAB > span { - color: ${white} !important; -} - -================================ - -podium.com - -INVERT -.logoWrap - -================================ - -poeditor.com - -INVERT -.chart img - -================================ - -polar.com - -INVERT -.logo - -================================ - -polarion.* -polarion.*.* -polarion.*.*.* - -INVERT -.polarion-dle-toolbar-Button img -.polarion-dle-toolbar-ButtonWithMenu img -.polarion-MenuButton img -.polarion-rp-column-configure-layout img - -================================ - -poll.utm.utoronto.ca - -CSS -.bg-background, -body { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -polsatnews.pl - -CSS -.news--over .news__category, -.news--over .news__time, -.news--over .news__title, -.sent__title { - filter: none !important; -} - -================================ - -polskabiega.sport.pl - -CSS -.main_wrapper { - background-color: #181a1b !important; -} - -================================ - -polskatimes.pl - -INVERT -.componentsNavigationNavbar__logo - -================================ - -polskiemarki.info - -INVERT -a[id="powrot"] > img -img[src*="logo_fakro"] - -CSS -#katalog .container { - background-image: none !important; -} - -================================ - -polymc.org -polymc.github.io - -IGNORE INLINE STYLE -svg.home * - -================================ - -poradnikzdrowie.pl - -INVERT -.logo - -================================ - -porkbun.com - -INVERT -img[src="/images/handshake-icon.svg"] - -CSS -.hsds-beacon .iNBOWp iframe[data-cy="FrameComponent"] { - color-scheme: initial !important; -} - -================================ - -portal-portail.apps.cic.gc.ca - -INVERT -footer > div > div > div > div > svg > :nth-child(2) -header > div > div > div > svg > :nth-child(3) -ircc-portal-application-status-item img.detailsIcon - -================================ - -portal.edukacja.olsztyn.eu - -INVERT -div.main -div#welcome-img -#pageheader -div#ctl00_TheFooter img -a.link-gray > p - -================================ - -portal.qiniu.com - -INVERT -.global-loading-content img - -================================ - -portal.saltyfish.io - -INVERT -.logo-img - -================================ - -portalsamorzadowy.pl - -INVERT -.p-logo -.footer-logo - -================================ - -portswigger.net - -INVERT -img[alt="Web Security Academy"] -img[alt="The Daily Swig"] - -================================ - -positiveintelligence.com - -INVERT -article.logos-grid__grid -img.footer__logo -img.homepage-hero__img -img.menu__logo - -================================ - -postani-student.hr - -CSS -body { - background-image: none !important; -} - -================================ - -postnauka.ru - -INVERT -.m-header__logo - -================================ - -poszukiwania.pl - -INVERT -.header-logo -.footer-logo-address - -================================ - -potplayer.daum.net - -INVERT -.promotion_potplayer - -================================ - -powerapps.com -*.powerapps.com - -CSS -.ag-cell .ms-Label { - color: var(--darkreader-text--white) !important; -} - -================================ - -pphosted.com - -CSS -#menu_items { - background-image: none !important; -} - -================================ - -praca.pl - -INVERT -img[alt="Praca.pl"] - -CSS -.app-offer__content { - background-color: rgb(25, 26, 27) !important; -} -.szcont .f1top, -.szcont .f1template_content { - background-blend-mode: color; - background-color: rgba(0, 0, 0, 0.25) !important; -} -.company__img { - padding: 0 0 !important; -} -.listing__logo, -.app-offer__logo-img, -.company__img, -.employer-profile-header .logo img, -.company-job-list .logo img, -.epc-other-employers .logo img, -.home__partner-logo { - filter: brightness(0.75); -} - -IGNORE IMAGE ANALYSIS -.szcont .f1top -.szcont .f1template_content - -================================ - -practicum.yandex.* - -INVERT -img[src$="?color=000"] -.progress-circle__shape -.burger -.lesson-progress__progress-bar -.scrollbar__control-line -input[aria-checked="true"] + .radio__control - -CSS -.quiz-task { - background-color: var(--darkreader-neutral-background) !important; -} -.icon-status-error > .shape2, -.icon-status-error > .shape3, -.icon-status-success > .shape2 { - fill: var(--darkreader-neutral-background) !important; -} - -================================ - -pracuj.pl -*.pracuj.pl - -CSS -[alt="background"] { - display: none !important; -} -[data-test="image-background"] { - display: none !important; -} -[data-test="section-positioned-offers"] { - background: ${White} !important; -} - -================================ - -prairielearn.com - -INVERT -.graph text - -CSS -.question-container img { - background: var(--darkreader-neutral-text) !important; -} -div[class="pl-code mb-3 "] { - --pl-code-background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -prajwalkoirala.com - -INVERT -svg - -================================ - -preply.com - -CSS -.styles_block__BmN2c { - background-color: ${rgb(232, 230, 227)}; -} - -================================ - -pressgazette.co.uk - -INVERT -.site-logo - -================================ - -primatelabs.com - -INVERT -.logo - -================================ - -printables.com - -INVERT -.navbar-brand .printables-text - -CSS -market-filter-item { - --line-color: var(--darkreader-border--line-color) !important; -} - -================================ - -privat24.ua - -CSS -div[class*=qrContainer] > div > div[class*=qr_] { - background-color: white; -} - -================================ - -pro-run.pl - -INVERT -.td-main-logo - -================================ - -processon.com - -INVERT -#view_container canvas - -================================ - -procyclingstats.com - -IGNORE IMAGE ANALYSIS -.flag -.flag.w32 -.flag.c16 - -================================ - -producthunt.com - -INVERT -[class="icon_f5f81"] - -================================ - -profile.gigabyte.com - -CSS -body { - background-image: var(--darkreader-neutral-background) !important; -} - -================================ - -profiler.firefox.com - -INVERT -.chartCanvas - -================================ - -projectstream.it - -CSS -body { - background: none !important; -} - -================================ - -pronote.toutatice.fr - -INVERT -.ObjetGrille -.Cours -.Insecable -.Calendrier_Jour_Selection - -CSS -body, -.ie-chips.tag-style { - background: linear-gradient(90deg, #282c2d 0, #282C2D calc(100% - 0.8rem), transparent calc(100% - 0.8rem), transparent 100%); -} - -================================ - -pronto.io - -CSS -input.btn-new-group.pointer { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -prospectmagazine.co.uk - -INVERT -.header__logo - -================================ - -prostovpn.org - -CSS -body { - background: none !important; -} - -================================ - -protect-eu.ismartlife.me/login - -CSS -div[class^=login_login] { - background-image: none !important; -} -div[class^=login_qc-code-content] { - background-color: white !important; -} - -================================ - -protocol.com - -INVERT -img.logo-icon.open -div#topbar-menu-toggle > svg.icon - -================================ - -proton.me -mail.proton.me - -INVERT -img[src$="hero-2x.png"] -iframe[data-testid="rooster-iframe"] - -================================ - -protonvpn.com - -INVERT -.navbar-brand -.protonmail-link -#page_home .parallax -#page_home .parallax > * - -================================ - -provantage.com - -CSS -body, -body.HOME { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -proxmox.com - -INVERT -#logo -.uix_logo - -================================ - -psemu.pl - -CSS -.menu-item { - text-shadow: rgb(40, 43, 54) 0px 1px 0px !important; -} - -================================ - -psprices.com - -INVERT -.store-logo -.highcharts-label text -.game--description::after - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -psychonautwiki.org - -INVERT -#mw-panel > a > svg -.mw-headline > a > svg -a[href="http://www.emcdda.europa.eu/about"] > svg -img[alt="Tasks.svg"] -img[alt="Star-o.svg"] -img[alt="Pencil.svg"] -#InfoTable > tbody > tr > .Image > div > div > .image -.dosechart - -CSS -.dosechart, -.thumbimage, -.mwe-popups-discreet > svg { - background-color: ${black} !important; -} - -================================ - -publica.fraunhofer.de - -INVERT -img[src="/pub09img/logo-fraunhofer.gif"] - -================================ - -publicwww.com - -CSS -body { - background-image: none !important; -} - -================================ - -pulumi.com - -CSS -:host { - --neutral-fill-stealth-rest: var(--darkreader-neutral-background) !important; -} - -================================ - -pureinfotech.com - -INVERT -.pureinfotech-logo - -CSS -.article-type-standard-css .entry-content::before { - color: ${gray} !important; -} - -================================ - -purerave.com - -CSS -:root { - --darkreader-border--border: 1px solid rgba(0, 90, 155, 1) !important; -} -div.form-buttons textarea { - background-color: var(--darkreader-neutral-background) !important; - border-color: #005a9b !important; -} -textarea { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -purevpn.com - -CSS -.inner_banner { - background-image: none !important; -} - -================================ - -pushsquare.com - -CSS -.page { - background-image: none !important; -} - -================================ - -pyszne.pl -lieferando.* -justeat.* -just-eat.* -takeaway.com -thuisbezorgd.nl - -INVERT -.gm-style - -CSS -.cover img, -.logowrapper, -.orderoverview__restaurant-image-container-inner, -div[data-qa="avatar"] { - background-blend-mode: color; - background-color: rgba(255, 255, 255, 0.5) !important; -} - -IGNORE INLINE STYLE -svg > circle -svg > text > tspan - -================================ - -pythonanywhere.com - -INVERT -#id_logo -img[src^="/static/glyphicons/"] - -================================ - -pytorch.org - -INVERT -#site-logo -.header-holder:not(.homepage-header) > div.container > div.header-container > .header-logo - -================================ - -pz.gov.pl - -CSS -.banner-text { - color: var(--darkreader-neutral-background) !important; -} - -================================ - -q.utoronto.ca - -INVERT -.ic-sidebar-logo__image -.instructure_file_link_holder > .file_download_btn -a.external > span > img:first-child - -CSS -:root { - --darkreader-bg--ic-brand-global-nav-bgd: var(--ic-brand-global-nav-bgd) !important; - --darkreader-bg--ic-brand-global-nav-logo-bgd: var(--ic-brand-global-nav-logo-bgd) !important; - --darkreader-border--ic-brand-global-nav-avatar-border: var(--ic-brand-global-nav-avatar-border) !important; - --ic-brand-global-nav-ic-icon-svg-fill--active: var(--darkreader-text--ic-link-color) !important; -} -.ic-app-header__menu-list-link:hover, -.ic-app-header__menu-list-link:focus { - background-color: ${rgba(0, 0, 0, 0.2)} !important; -} -.ic-DashboardCard { - box-shadow: ${rgba(0, 0, 0, 0.3)} 0px 1px 5px !important; -} - -================================ - -qcc.com - -INVERT -.app-login-insert -.logo -.pay-insert - -================================ - -quantrimang.com - -CSS -.taxonomyList .navigation a { - color: var(--darkreader-neutral-text) !important; -} -.taxonomyList .navigation a:hover { - color: ${orange} !important; -} - -================================ - -qubes-os.org - -INVERT -[src$="xen-logo.svg"] -[src$="whonix-tor.svg"] - -================================ - -quickbase.com - -CSS -td.cell, -td.label { - border-color: rgb(24, 26, 27) !important; -} - -================================ - -quirksmode.org - -INVERT -.logoPPK - -CSS -body { - background-image: none !important; -} - -================================ - -quizlet.com - -CSS -.UIKeyboardHint { - background-color: transparent !important; -} - -IGNORE INLINE STYLE -.FeedbackHeading-emoji > svg * - -================================ - -quora.com - -CSS -.logo_fill { - fill: rgb(219, 87, 83) !important; -} -body { - background-color: var(--darkreader-neutral-background) !important; -} -div.q-box.qu-bg--white { - background-color: #181a1b !important; - background-image: none !important; -} - -IGNORE INLINE STYLE -#upvote -#downvote - -================================ - -qwant.com - -INVERT -.background-home__logo -.home__logo__container .home__logo -canvas.mapboxgl-canvas - -================================ - -rachel53461.wordpress.com - -CSS -#grad { - background-image: none !important; -} - -================================ - -racketboy.com - -CSS -#rb-split, -#rb-split > div { - background-image: none !important; -} - -================================ - -radar-opadow.pl - -INVERT -#chase-map -.ro_tooltip - -================================ - -radareu.cz - -INVERT -#radarMap .leaflet-map-pane - -================================ - -radeonramdisk.com - -INVERT -#logo - -================================ - -radio17.pl - -INVERT -.main-title - -================================ - -radiokolor.pl - -INVERT -.nav-brand -.buttons-1 -a.logo-1 - -CSS -.content-box-1 { - background-image: none !important; -} - -================================ - -railpassengers.org - -INVERT -.navbar__list-search -.navbar__logo -.navbar__mobile-icons - -================================ - -railwaygazette.com - -INVERT -.mastheadLogo - -================================ - -rain.thecomicseries.com - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; - margin: 0px !important; - padding: 8px !important; -} -#comicimage { - background-color: #ffffff !important; -} - -================================ - -rakuten.com -*.rakuten.com - -INVERT -.chakra-image - -CSS -span[class*="Checkbox_checkmark"]::after { - border-color: rgb(207, 203, 201) !important; -} - -================================ - -rapidtables.com - -IGNORE INLINE STYLE -td[style^="background:"] - -================================ - -raspberrypi.com - -INVERT -.__rptl-header-logo path[fill="#000"] - -CSS -body { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -raspberrypi.org - -INVERT -.site-header__home-link - -IGNORE IMAGE ANALYSIS -.c-at-home__container - -================================ - -rateyourmusic.com - -IGNORE IMAGE ANALYSIS -* - -================================ - -rationalwiki.org - -INVERT -.mw-wiki-logo - -================================ - -read.amazon.* -read.amazon.*.* -lire.amazon.* - -INVERT -.header_bar_icon:not(#kindleReader_button_close) -.header_bar_button -#kindleReader_content -.kg-full-page-img -.side-menu-close -.fixed-book-title -ion-menu -ion-header -ion-title - -CSS -.kr-renderer-container, -.kr-renderer-container-fullpage { - z-index: 0 !important; -} - -================================ - -readme.io - -CSS -.rm-PlaygroundRequest, -.CodeTabs-toolbar { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -readpaper.com/pdf-annotate/note - -INVERT -.page - -================================ - -readthedocs.io - -CSS -.toc-drawer, -.sig, -code.literal, -.sidebar-search-container, -.sidebar-tree .current > .reference { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -real-debrid.com - -CSS -#wrapper_global { - background-image: none !important; -} -#header_img_right { - background-image: none !important; -} - -================================ - -realmadridfin.net - -CSS -body, -.botslice, -.botslice span, -.button_submit, -.catbg, -.cat_bar, -#content_section, -.frame, -#footer_section, -#header, -.lowerframe, -.lowerframe span, -#shoutbox_b, -#shoutbox_color, -#shoutbox_face, -#shoutbox_i, -#shoutbox_nosound, -#shoutbox_u, -#shoutbox_u + img, -.titlebg, -.title_barIC, -.topslice, -.topslice span, -.upperframe, -.upperframe span { - background-image: none !important; -} -#shoutbox_message { - background-color: none !important; -} - -================================ - -realmeye.com - -INVERT -img[src*="latex"] - -IGNORE IMAGE ANALYSIS -.character - -================================ - -realmicentral.com - -INVERT -img[itemprop="logo"] -div.fly-but-wrap.left.relative > span - -================================ - -redbubble.com - -INVERT -[data-testid="ds-wordmark"] - -================================ - -redcross.* -redcross.*.* - -CSS -.lecture-attachment img.is-loaded { - filter: brightness(50%) sepia(40%) !important; -} - -================================ - -reddit.com -new.reddit.com - -INVERT -video ~ div [style^="height"] -.snoo-cls-1 -.snoo-cls-2 -.snoo-cls-3 -.snoo-cls-8 - -CSS -[style^="--background"] { - --background: ${#FFFFFF} !important; -} -[style^="--canvas"] { - --canvas: ${#DAE0E6} !important; -} -[style^="--pseudo-before-background"] { - --pseudo-before-background: ${#DAE0E6} !important; -} -[style^="--comments-overlay-background"] { - --comments-overlay-background: ${#DAE0E6} !important; -} -[style^="--commentswrapper-gradient-color"] { - --comments-overlay-background: ${#DAE0E6} !important; -} -[style^="--fakelightbox-overlay-background"] { - --fakelightbox-overlay-background: ${#DAE0E6} !important; -} -.button:hover { - --button-color-background: var(--darkreader-bg--color-neutral-background-hover) !important; -} -.hover\:text-secondary:hover { - color: var(--darkreader-neutral-text) !important; -} -.hover\:bg-secondary-background-hover:hover { - background-color: var(--darkreader-bg--color-neutral-background-hover) !important; -} -.hover\:border-secondary-background-hover:hover { - border-color: var(--darkreader-border--color-neutral-border-medium) !important; -} -.before\:border-tone-4::before { - border-color: var(--color-tone-4) !important; -} -.button-shell { - color: var(--darkreader-neutral-text) !important; -} -.button-plain { - --button-color-text-default: var(--darkreader-neutral-text) !important; -} -.button-secondary { - --button-color-background-default: var(--darkreader-bg--color-neutral-background) !important; - --button-color-text-default: var(--darkreader-text--color-neutral-content-weak) !important; -} -.internalBackButton { - background-image: linear-gradient(to right,var(--plain-background) 0,var(--darkreader-bg--color-secondary-background) 30%) !important; -} -.internalForwardButton { - background-image: linear-gradient(to right,var(--plain-background) 0,var(--darkreader-bg--color-secondary-background) 30%) !important; -} -.label-container { - background: var(--darkreader-bg--color-neutral-background) !important; -} -.label-container:hover { - background: var(--darkreader-bg--color-neutral-background-hover) !important; -} -.md p>a[href="#s"]::after, -a[href="#s"]::after { - color: #000; -} -.text-neutral-content-strong { - color: var(--darkreader-text--color-neutral-content-strong) !important; -} -header a[aria-label="Home"] svg:last-child g, -header > div > div + div a[href] *, -header > div > div + div button[aria-label] * { - fill: var(--darkreader-neutral-text) !important; -} -#comment-tree { - background-color: var(--darkreader-bg--color-neutral-background) !important; -} -#COIN_PURCHASE_DROPDOWN_ID > div { - background: linear-gradient(180deg,hsla(0,0%,100%,.1) 45.96%,hsla(0,0%,100%,.57) 46%,hsla(0,0%,100%,0) 130%),${gold} !important; -} -#COIN_PURCHASE_DROPDOWN_ID > div > span { - color: ${white} !important; -} -#search-input-chip { - background: var(--darkreader-bg--color-secondary-background-selected) !important; -} -.md-spoiler-text:not([data-revealed])::selection { - background-color: var(--darkreader-bg--newCommunityTheme-metaText) !important; - color: transparent !important; -} -button[slot="forward-button"] { - background-color: var(--darkreader-border--color-neutral) !important; -} -button[slot="back-button"] { - background-color: var(--darkreader-border--color-neutral) !important; -} -div[slot="tabs"] { - background: var(--darkreader-bg--color-neutral-background) !important; -} -div[role="menu"][style^="position: fixed"] button button[role="switch"][aria-checked="false"] { - background-color: ${gray} !important; -} -div[role="menu"][style^="position: fixed"] button button[role="switch"] > div { - background-color: ${black} !important; -} -object[data="about:blank"] { - display: none !important; -} -span[class="inline-block mr-[calc(var(--size-button-sm-h)-var(--rem10)-var(--button-border-width-default))] overflow-hidden text-ellipsis"] { - color: var(--darkreader-text--color-neutral-content) !important; -} -shreddit-comment-tree { - background-color: var(--darkreader-bg--shreddit-content-background) !important; -} -.self-start { - background-color: var(--darkreader-bg--shreddit-content-background) !important; -} -#comment-fold-button { - background-color: var(--darkreader-bg--shreddit-content-background) !important; -} -button.w-lg { - background-color: var(--darkreader-bg--shreddit-content-background) !important; -} -.bg-neutral-background { - background-color: var(--darkreader-bg--shreddit-content-background) !important; -} -.text-secondary { - color: var(--darkreader-text--color-secondary) !important; -} -faceplate-tracker > li > a:hover { - background-color: var(--darkreader-bg--color-neutral-background-hover) !important; -} -faceplate-tracker > li > div:hover { - background-color: var(--darkreader-bg--color-neutral-background-hover) !important; -} -div#RECENT > li > a:hover { - background-color: var(--darkreader-bg--color-neutral-background-hover) !important; -} -span.input-container.stateful-input input { - color: var(--darkreader-text--color-tone-1) !important; -} -.reddit-search-bar { - background-color: var(--darkreader-bg--color-neutral-background) !important; -} -.reddit-search-bar .text-neutral-content { - color: var(--darkreader-text--color-tone-1) !important; -} -faceplate-tracker > li[rpl-selected] > a { - background-color: var(--darkreader-bg--color-tone-3) !important; -} -faceplate-menu { - background-color: var(--darkreader-bg--color-neutral-background-strong) !important; -} -faceplate-tracker > button[rpl-selected] { - background-color: var(--darkreader-bg--color-neutral-background-hover) !important; -} -faceplate-tracker a[data-testid]:hover { - background-color: unset !important; -} -faceplate-tracker[noun="trending"] div:hover { - background-color: unset !important; -} -faceplate-hovercard > div > div > div { - background-color: var(--darkreader-bg--color-neutral-background) !important; -} -faceplate-hovercard > div > div > div:hover { - background-color: var(--darkreader-bg--color-neutral-background) !important; -} -#faceplate-tooltip { - background-color: var(--darkreader-bg--color-neutral-background) !important; -} -faceplate-hovercard p { - color: var(--darkreader-text--color-neutral-content-strong) !important; -} -.text-secondary-weak { - color: var(--darkreader-text--color-secondary-weak) !important; -} -button.button-plain:hover { - color: var(--button-color-text-default) !important; -} -faceplate-menu > li > div { - background-color: var(--darkreader-bg--color-neutral-background-hover) !important; -} -.text-neutral-content-weak { - color: var(--darkreader-text--color-neutral-content-weak); -} -:host > #content { - background-color: var(--darkreader-neutral-background) !important; -} -.bg-neutral-background-weak { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -reddit.zendesk.com - -INVERT -header > div.logo > a > img -img.hero-inner-image - -================================ - -redditstatus.com - -INVERT -.logo-container - -================================ - -redgamingtech.com - -CSS -body { - background-image: none !important; -} - -================================ - -redhat.com - -CSS -p, -li { - color: ${black} !important; -} -.PFElement { - background-color: ${white} !important; -} - -IGNORE INLINE STYLE -.redhat-logo * - -================================ - -redis.io - -CSS -.bg-gradient-to-bl { - background-image: none !important; -} - -================================ - -redpenreviews.org - -CSS -header a { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -reebok.* - -CSS -div { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -refactoring.guru - -CSS -.recipe { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -referentiemateriaalvo.noordhoff.nl - -CSS -body { - background-image: none !important; -} - -================================ - -regex101.com - -INVERT -canvas - -================================ - -reheader.glitch.me - -INVERT -[src=$"GitHub-Mark.png"] -[src=*"header-image-readme-gen.gif] -[src=*"Screen%20Shot%202020-07-17%20at%205.19.18%20PM.png"] - -CSS -#add-to-github { - background-color: #96943f !important; -} -#upload-github { - border: 1px solid #dddddd; -} - -================================ - -rei.com - -INVERT -.logo__img - -================================ - -relay.firefox.com - -INVERT -img.c-landing-hero-brands -img.c-brand-title -.fx-bento-app-link.fx-bento-link.fx-mobile > span::before -.fx-bento-app-link.fx-bento-link.fx-vpn > span::before -div.glocal-site-options > a > img -div.glocal-site-options > form > button::before - -================================ - -relive.cc - -INVERT -img[src*="logo-relive"] - -IGNORE IMAGE ANALYSIS -.email-button i - -================================ - -rememberthemilk.com - -CSS -div[contenteditable="true"] { - border: transparent !important; -} - -================================ - -render.com - -INVERT -.rm-section.rm-hero -.rm-section.rm-hero > *:not(.rm-back-bottom) -.rm-back-top -.rm-back-large - -================================ - -render.githubusercontent.com/view/ipynb - -INVERT -img.math - -================================ - -replit.com - -CSS -.monaco-editor .cursor { - background-color: ${#000}; -} - -================================ - -repubblica.it - -INVERT -.page-header__logo - -================================ - -resetera.com - -CSS -.bbc-spoiler:not(:hover):not(:active), -.bbc-spoiler:not(:hover):not(:active) * { - background-color: ${black} !important; - color: ${black} !important; -} - -================================ - -resmigazete.gov.tr - -CSS -img[src="/assets/img/arma.png"] { - filter: hue-rotate(180deg) invert(1) brightness(2); -} - -================================ - -respekt.cz - -INVERT -.sitelogo-link - -================================ - -restaurantji.com - -INVERT -.logo_sticky - -================================ - -restoreprivacy.com - -CSS -body { - background-color: var(--darkreader-bg--color-body) !important; -} - -================================ - -retracmirrors.com - -CSS -body, -#app > div { - background-image: none !important; -} - -================================ - -reuters.com - -INVERT -path[d^="M121.865 50.29c0"] - -================================ - -revisioncentregcse.blogspot.com - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -revolut.com - -CSS -[class*="Text-rui"] { - text-shadow: rgb(40, 43, 54) 1px 1px 0px !important; -} - -================================ - -revolver.news - -INVERT -h2.title -h3.category - -================================ - -rfc-editor.org - -CSS -svg.diagram text { - fill: var(--darkreader-neutral-text) !important; -} - -================================ - -rfi.fr - -INVERT -.o-header__site-nav-link - -================================ - -rg-adguard.net - -INVERT -img[src*="info"] -img[src*="like"] -img[src*="donate"] -img[src*="faq"] - -CSS -body, -.tftable th { - background: none !important; -} - -================================ - -richie-bendall.ml - -CSS -.content--card { - background-color: #303030; -} -body { - background-color: #5c6bc0; -} -.app--bar, -.drawer--content :not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled) .mdc-list-item--activated::after, -:not(.mdc-list--non-interactive) > :not(.mdc-list-item--disabled) .mdc-list-item--activated::before { - background-color: #3f51b5; -} -.btc-dialog .mdc-button { - color: #3f51b5; -} -.btc-dialog svg { - fill: white; -} - -================================ - -richiebendallstatus.ml - -CSS -#page-container { - background-image: none; -} -.success-bg { - background-color: #80BA27; -} -.warning-bg { - background-color: #f7921e; -} -.success { - color: #80BA27; -} -.warning { - color: #f7921e; -} -.danger-bg { - background-color: #ff0000; -} -.paused-bg, -.info-bg, -.black-bg { - background-color: #17252e; -} - -================================ - -ring.com - -INVERT -span[alt="Ring Logo"] svg - -IGNORE INLINE STYLE -span[alt="Ring Logo"] svg * - -================================ - -riptutorial.com - -CSS -.whole-container { - background-image: none !important; -} - -================================ - -rmf24.pl - -INVERT -.mainContent3-left iframe -.belkaNew - -CSS -#twojezdrowieCont .page3, -#regionySection { - background-image: none !important; -} - -================================ - -roadmap.sh - -CSS -svg .done rect { - fill: var(--darkreader-neutral-background) !important; -} - -================================ - -roblox.com - -CSS -.checkbox input[type=checkbox]:checked + label::before { - background-color: var(--darkreader-neutral-text) !important; -} - -================================ - -rocksbox.com - -INVERT -.nav_logo - -================================ - -rockylinux.org - -INVERT -img[alt="Rocky Linux"] - -================================ - -rog.asus.com - -IGNORE IMAGE ANALYSIS -.rog-header .nav-menu .nav-bar - -================================ - -roland.com - -CSS -body { - background: none !important; -} - -================================ - -rollenspiel.monster - -CSS -body { - height: 100% !important; -} - -================================ - -ros.org - -CSS -.bg-ros-dots-grid { - background-image: none !important; -} - -================================ - -roscidus.com - -CSS -span.caption-wrapper img { - background-color: white !important; -} - -================================ - -rosepassion.com - -INVERT -.imgmap -.famille-content .image -.les_schemas img -.rpimage .follow-scroll - -CSS -#selectionner_voiture .bloc .image { - mix-blend-mode: normal !important; -} - -================================ - -roskomsvoboda.org - -INVERT -img[src="/static/core/images/logo.svg"] - -================================ - -rostov.tele2.ru - -INVERT -.header-navbar-logo - -================================ - -rottentomatoes.com - -IGNORE IMAGE ANALYSIS -.icon__fresh -.fresh -.icon - -================================ - -royalbank.com - -CSS -.rbc-select-input { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -rozetka.com.ua - -INVERT -div.cabinet-navigation__icon > svg -span.cabinet-navigation__icon > svg - -================================ - -rp.pl - -INVERT -a[href="/"] -.burger--menu span -.icon-logo::before -.footer--logo -.footer--copyright--content div - -================================ - -rpcs3.net - -CSS -p, -.compat-types, -.compat-hdr-left, -.compat-status-container { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -rpm.org - -IGNORE IMAGE ANALYSIS -body - -================================ - -rpo.gov.pl - -INVERT -.view-content .field-content > img -#etykieta_szukaj a - -IGNORE IMAGE ANALYSIS -#bip_kontener - -================================ - -rt.ru - -INVERT -#logo_text - -================================ - -rte.ie - -INVERT -.masthead .nav-btn.menu - -CSS -.masthead .weather-widget .icon { - filter: none !important; -} -.theoplayer-skin .theo-control-bar-shadow { - background-image: linear-gradient(transparent var(--darkreader-neutral-background)) !important; -} - -================================ - -rtlnieuws.nl - -CSS -section { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -rubenfixit.com - -CSS -.shape-top-left::after, -.nav-btn::after { - border-color: transparent transparent transparent var(--darkreader-neutral-background) !important; -} -.shape-top-right::after, -.nav-btn::before { - border-color: transparent transparent var(--darkreader-neutral-background) transparent !important; -} -.shape-bottom-left::after { - border-color: var(--darkreader-neutral-background) transparent transparent transparent !important; -} -.shape-bottom-right::after { - border-color: transparent var(--darkreader-neutral-background) transparent transparent !important; -} -#blog-isotope-masonry article, -.shape-top-left, -.shape-top-right, -.shape-bottom-left, -.shape-bottom-right { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -rubjo.github.io - -CSS -select { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -rudeiczarne.pl - -INVERT -#logo -#footer-logo - -================================ - -rumratings.com - -CSS -body { - background-image: none !important; -} - -================================ - -runkit.com - -INVERT -.CodeMirror div.CodeMirror-cursor - -================================ - -runtothefinish.com - -CSS -:root { - --body-background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -rynek-kolejowy.pl - -INVERT -.logoTK -.partnerNaglowka -.pasekbocznynaglowek span -.portalLogo -.tagLogo -.zawartoscPartner -img[alt="współpraca"] -img[class="wspolpraca"] -img[src*="img/firma"] -img[src*="katalogkolejowy"] - -================================ - -rynekzdrowia.pl - -INVERT -img[src*="rynekzdrowia.svg"] -img[alt*="partner"] -.search -.copyright > img - -================================ - -rytmy.pl - -INVERT -.logo-rytmy-a - -================================ - -s.weibo.com - -INVERT -.CopyRight_aria_13ebq -.ProfileHeader_statusCounterLayer_13mzC img -.hot-band-header-refresh img -#woo_svg_nav_logo > g > path:nth-child(5) - -CSS -#searchapps > div > div[role=navigation] > div.woo-panel-main { - --darkreader-bg--weibo-top-nav-panel-bgColor: var(--darkreader-bg--w-color-light); -} -:root { - --darkreader-bg--frame-background: var(--darkreader-bg--w-color-light); - --darkreader-bg--w-b-flat-default-bg: #FFFFFF11; - --darkreader-bg--w-color-gray-6: #FFFFFF11; - --darkreader-bg--w-retweet-background: #FFFFFF08; - --darkreader-border--w-card-border: #FFFFFF1E; - --darkreader-border--w-dividing-line: #FFFFFF11; - --darkreader-text--weibo-top-nav-line: #FFFFFF19; -} -.woo-divider-x { - border-bottom-color: #FFFFFF11; -} -.m-main-nav, -.card-wrap { - background-color: #FFFFFF08; - border-color: #FFFFFF11; -} -.hot-band-container { - background-color: #FFFFFF08 !important; - border-color: #FFFFFF11 !important; -} -.Nav_panel_YI3-j { - border-bottom-color: #FFFFFF1E !important; -} -.hot-band-tabs-item { - background-color: #FFFFFF11 !important; -} -.hot-band-footer-link { - background-color: #FFFFFF11 !important; - border-radius: 8px !important; -} -.wbpro-side-opt { - background-color: #FFFFFF11 !important; - border-radius: 8px; - color: rgb(143, 143, 143); -} -.m-adv-search dd [type="text"] { - background-color: #FFFFFF11 !important; - border: none; -} -.m-adv-search dd .txt { - background-color: #FFFFFF18 !important; - border: solid,1px,#FFFFFF11 !important; -} -.m-adv-search dd select { - background-color: #FFFFFF11; - border: none; -} -.card-feed .media { - background: #FFFFFF08 !important; -} -.vote-item_item_2egBf { - background-color: #FFFFFF08; -} -.card-together .card-more-a a { - background: none; -} -.wbp-video .wbpv-load-progress div { - background: #FFFFFF11 !important; -} -.wbp-video .wbpv-play-progress { - background-color: #FFFFFF88; -} -.woo-panel-main { - background-color: #FFFFFF08; - border: solid,1px,#FFFFFF11 !important; -} - -================================ - -sadanduseless.com - -INVERT -.logo1 - -================================ - -safetysign.com - -CSS -div[id*="RollUp-Aluminum-smalltext-preview"], -div[id*="RollUp-Aluminum-largetext-preview"], -#_HillGradeCustom-hillgradetext-preview { - color: rgb(0, 0, 0) !important; -} - -================================ - -safeweb.norton.com - -INVERT -.logo img - -================================ - -saladelcembalo.org - -INVERT -#PageDiv td - -CSS -html, -body, -input, -textarea, -select, -button { - background-color: transparent !important; - color: var(--darkreader-neutral-text) !important; -} - -================================ - -samcodes.co.uk - -INVERT -.logo - -================================ - -samsung.* - -INVERT -.icon -.gnb__logo - -CSS -.feature-full-bleed-text img { - filter: brightness(50%) sepia(40%) !important; -} -.feature-full-bleed-text__content { - z-index: 1 !important; -} - -================================ - -sanomapro.fi - -INVERT -.equation - -================================ - -santander.pl - -INVERT -img[src*="/santander/footer/"] -.topVisual__text span -.topVisual__content.topVisual__content--nobutton - -================================ - -savannah.gnu.org - -CSS -.boxtitle { - background-image: none !important; -} - -================================ - -sba.gov - -INVERT -.usa-header--extended .site-logo - -================================ - -sbb.ch -shop.sbb.ch - -CSS -#Von0, -#Nach1, -#From0, -#To1, -#De0, -#À1, -#Da0, -#A1 { - background: none !important; -} -.sbb-navigation__container:before { - background-color: var(--sbb-color-white-alpha-70) !important; -} -#sbb-logo__signet, -.mod_header_logo_content > * > path:not(path[fill='#EC0000']) { - fill: white !important; -} -.sbb-clock .face circle { - fill: ${#dcdad7} !important; -} -.sbb-clock .face, -.sbb-clock .sbb-clock__hand-hours, -.sbb-clock .sbb-clock__hand-minutes { - fill: ${black} !important; -} -.sbb-button, -.sbb-teaser-hero > * > * > * { - color: ${black} !important; -} -:root { - --sbb-color-aluminium-default: ${#d2d2d2} !important; - --sbb-color-anthracite-default: ${#5a5a5a} !important; - --sbb-color-autumn-default: ${#e84e10} !important; - --sbb-color-black-alpha-0: ${transparent} !important; - --sbb-color-black-alpha-10: ${rgba(0,0,0,.1)} !important; - --sbb-color-black-alpha-15: ${rgba(0,0,0,.15)} !important; - --sbb-color-black-alpha-20: ${rgba(0,0,0,.2)} !important; - --sbb-color-black-alpha-30: ${rgba(0,0,0,.3)} !important; - --sbb-color-black-alpha-40: ${rgba(0,0,0,.4)} !important; - --sbb-color-black-alpha-50: ${rgba(0,0,0,.5)} !important; - --sbb-color-black-alpha-60: ${rgba(0,0,0,.6)} !important; - --sbb-color-black-alpha-70: ${rgba(0,0,0,.7)} !important; - --sbb-color-black-default: ${#000} !important; - --sbb-color-brown-default: ${#b76000} !important; - --sbb-color-cement-alpha-0: ${hsla(0,0%,74%,0)} !important; - --sbb-color-cement-alpha-20: ${hsla(0,0%,74%,.2)} !important; - --sbb-color-cement-default: ${#bdbdbd} !important; - --sbb-color-charcoal-default: ${#212121} !important; - --sbb-color-cloud-default: ${#e5e5e5} !important; - --sbb-color-granite-default: ${#686868} !important; - --sbb-color-graphite-default: ${#b7b7b7} !important; - --sbb-color-green-default: ${#008a36} !important; - --sbb-color-iron-default: ${#444} !important; - --sbb-color-lemon-default: ${#ffde15} !important; - --sbb-color-metal-alpha-0: ${hsla(0,0%,46%,0)} !important; - --sbb-color-metal-alpha-20: ${hsla(0,0%,46%,.2)} !important; - --sbb-color-metal-default: ${#767676} !important; - --sbb-color-midnight-default: ${#151515} !important; - --sbb-color-milk-default: ${#f6f6f6} !important; - --sbb-color-night-default: ${#143a85} !important; - --sbb-color-orange-default: ${#f27e00} !important; - --sbb-color-peach-default: ${#fcbb00} !important; - --sbb-color-pink-default: ${#cf4082} !important; - --sbb-color-platinum-alpha-0: ${hsla(0,0%,80%,0)} !important; - --sbb-color-platinum-alpha-20: ${hsla(0,0%,80%,.2)} !important; - --sbb-color-platinum-default: ${#cdcdcd} !important; - --sbb-color-red-alpha-0: rgba(235,0,0,0) !important; - --sbb-color-red-alpha-20: rgba(235,0,0,.2) !important; - --sbb-color-red-alpha-90: rgba(235,0,0,.9) !important; - --sbb-color-red-default: #eb0000 !important; - --sbb-color-red-mode-dark: #ff3838 !important; - --sbb-color-red125-alpha-0: rgba(198,0,24,0) !important; - --sbb-color-red125-alpha-20: rgba(198,0,24,.2) !important; - --sbb-color-red125-default: #c60018 !important; - --sbb-color-red150-default: #a20013 !important; - --sbb-color-silver-default: ${#dcdcdc} !important; - --sbb-color-sky-default: ${#0079c7} !important; - --sbb-color-smoke-alpha-0: ${hsla(0,0%,55%,0)} !important; - --sbb-color-smoke-alpha-10: ${hsla(0,0%,55%,.1)} !important; - --sbb-color-smoke-alpha-20: ${hsla(0,0%,55%,.2)} !important; - --sbb-color-smoke-alpha-5: ${hsla(0,0%,55%,.05)} !important; - --sbb-color-smoke-default: ${#8d8d8d} !important; - --sbb-color-storm-default: ${#a8a8a8} !important; - --sbb-color-turquoise-default: ${#00a59b} !important; - --sbb-color-violet-default: ${#6f2282} !important; - --sbb-color-white-alpha-0: ${hsla(0,0%,100%,0)} !important; - --sbb-color-white-alpha-20: ${hsla(0,0%,100%,.2)} !important; - --sbb-color-white-alpha-30: ${hsla(0,0%,100%,.3)} !important; - --sbb-color-white-alpha-50: ${hsla(0,0%,100%,.5)} !important; - --sbb-color-white-alpha-60: ${hsla(0,0%,100%,.6)} !important; - --sbb-color-white-alpha-70: ${hsla(0,0%,100%,.7)} !important; - --sbb-color-white-default: ${#fff} !important; -} - -================================ - -sbermegamarket.ru - -INVERT -ymaps[class$="ground-pane"] - -================================ - -scholar.google.* -scholar.google.*.* - -INVERT -a[role="checkbox"] > :nth-child(2) -div[role="banner"] > a > span -a[aria-label="Homepage"] -.gs_ico -img[src*="scholar_logo"] -a#gs_hdr_lgo -a#gs_hdr_drw_lgo -span.gs_in_cb - -================================ - -schwab.com - -CSS -.highcharts-background { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -sci-hub.* - -IGNORE IMAGE ANALYSIS -#raven -#logo - -================================ - -science.org - -INVERT -.navbar-brand > .hidden-on-dark -.main-header__secondary__logo > img - -CSS -h1.news-article__hero__title { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -sciencebasedmedicine.org - -INVERT -.site-logo - -================================ - -sciencedirect.com - -CSS -body, -.gh-nav .gh-nav-action, -.search-button-link>.link-button.search-button-outline, -.link-button-secondary:not(.on-dark-background), -.button-link-primary, -.button-alternative-text, -.button-alternative-text:hover, -.bibliography, -.els-footer-content .anchor { - color: ${#1f1f1f} !important; -} -#gh-cnt, -.accessbar-sticky, -.search-button-link>.link-button.search-button-outline, -.link-button-secondary:not(.on-dark-background) { - background-color: var(--darkreader-neutral-background) !important; -} -.u-bg-grey1, -.u-bg-white, -.cookie-btn { - background-color: ${#f5f5f5} !important; -} -.authors, -.gh-nav-help-anchor, -.publication-title-link, -.pps-count, -.pps-label, -.u-margin-s-bottom { - color: var(--darkreader-neutral-text) !important; -} -.author-highlights, -#gh-drawer, -.popover-content-inner { - background-color: var(--darkreader-neutral-background) !important; -} -.popover-content { - background-color: rgba(50, 50, 50, .85) !important; -} -#gh-overlay { - background-color: rgba(20, 20, 20, .85) !important; -} -.article-textbox { - background-color: ${rgb(213, 211, 207)} !important; -} -.Article .topic-link { - color: ${rgb(46, 50, 52)} !important; - text-decoration-color: ${rgb(46, 50, 52)} !important; -} - -================================ - -scipy-lectures.org - -INVERT -img.math - -================================ - -scmp.com - -INVERT -.header-menu-container__menu-top-left-wrapper -.global-menu-features__menu-icon -.global-menu-features__search-icon -.global-menu-features__close-icon -.social-button__twitter--active -.social-button__email--active -.footer-wrapper__logo - -================================ - -scpclassic.wikidot.com -scpexplained.wikidot.com -scpfoundation.net -scp-wiki.net -scp-wiki.wikidot.com -scp-wiki-cn.wikidot.com -scpko.wikidot.com -scpwiki.com -scp-ru.wikidot.com -scpfoundation.net - -CSS -div#container-wrap, -.panel-body, -.content-panel { - background-image: none !important; -} -div#container-wrap::before { - background-image: url(https://scp-wiki.wdfiles.com/local--files/component:theme/body_bg.png) !important; - content: ""; - height: 162px; - left: 0; - position: absolute; - top: 0; - width: 100%; -} -.yui-navset .yui-nav a { - background-image: none !important; -} - -================================ - -scratch-wiki.info - -INVERT -.sb3-comment-label -.sb3-literal-string -.sb3-literal-number - -================================ - -scratch.mit.edu/projects/* - -CSS -path.blocklyFlyoutBackground { - fill: rgb(32, 32, 32); -} - -IGNORE INLINE STYLE -g[data-argument-type="colour"] > path -.scratchColourPickerLabel + .goog-slider-horizontal -.color-button_color-button-swatch_37evk -.color-picker_row-header_173LQ + div > .slider_container_o2aIb - -================================ - -screenconnect.com -*.screenconnect.com - -CSS -.OuterPanel .MainPanel .MasterPanel .MasterListContainer ul li.HasChildren > div > p { - filter: brightness(100%) !important; -} - -================================ - -scribd.com - -INVERT -.logo -.document_container - -================================ - -scribe.rip -scribe.nixnet.services -scribe.citizen4.eu -scribe.bus-hit.me -scribe.froth.zone - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -scribus.net - -INVERT -#site-header img - -================================ - -script.google.com - -INVERT -.docs-icon -.icon -.monaco-editor .cursors-layer > .cursor - -IGNORE INLINE STYLE -mask > * - -================================ - -scroll.com - -INVERT -#content > div > div > header > div > div > div > a.Titlebar__wordMark___2U8-r.display__desktop___1Cfo7 > div > div > svg -#content > div > div > footer > div > div > div > div.layout__column___diAE2.layout__span-12___2a4Fw.layout__span___31pR0.layout__portrait-span-3___A34nc.layout__span___31pR0.layout__landscape-span-2___30F_p.layout__order-3___3WFlS.layout__portrait-order-0___108js.space__stack-xl___1oKsQ.flex__column___JnBPu.flex__flex___1N4XU.flex__align-stretch___2HAV3.flex__direction-column___fSYwh > div > div > div > svg - -CSS -.Careers__logo___1kLq6 { - z-index: 1 !important; -} - -================================ - -scroll.morele.net - -INVERT -.navbar-logo -.social-link - -================================ - -se.pl - -INVERT -.mobile-bars - -================================ - -sea.playblackdesert.com - -INVERT -.original .characteristic .desc -.original .characteristic h3 -.original .characteristic .feature li span - -================================ - -sealegacy.org - -INVERT -.custom-logo - -================================ - -seamonkey-project.org - -INVERT -img[src*="logo.png"] - -CSS -#breadcrumbs { - background-image: none !important; -} - -================================ - -sec.sangfor.com -sec.sangfor.com.cn - -INVERT -.en-logo - -================================ - -secondlife.com - -INVERT -nav > div > div > div[class$=-line] - -CSS -div.hero-section.homepage.wf-section { - z-index: 0; -} - -================================ - -secure.ally.com - -INVERT -.nobd-aob-day -#lp_invite -#manageNonAllyAccountsFrame .third-party-iframe -#billPayFrame - -================================ - -secure.fanboy.co.nz - -CSS -html { - background-image: none !important; -} - -================================ - -secureage.com - -INVERT -.logo-block - -================================ - -security.org - -INVERT -.category-cards img -.featured-in img -.grid-x.stats img -.product-logo -a.brand -section[id="our-top-picks"] img - -================================ - -segmentfault.com - -INVERT -.sf-header-logo -.sf-header__logo -.sf-logo -.navbar-brand - -================================ - -sejm.gov.pl - -CSS -.main { - background-image: none !important; -} - -================================ - -sematext.com - -INVERT -#logo -.sematext-clients-gamma figure - -================================ - -sembr.org - -CSS -mark { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -seminka-chilli.cz -chilli-shop.sk - -CSS -#pannelWrapper { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -semmle.com - -CSS -#Header-logo * { - fill: #ffffff !important; -} - -================================ - -senscritique.com - -INVERT -.d-media-videos::before -.eins-wish.black -.eins-logo-small -.header-navigation-main-item a img -.eins-search-header -.eins-poll -.eins-compass -.eins-compass-xl -.eins-notification -.eins-tv -.eins-ticket -.eins-current.black -.eins-done.green -.eins-done.white -.eins-newspaper -.juyLRn - -CSS -.ecap-products-next, -.ecap-products-prev { - background-color: hsla(100, 20%, 50%, .8) !important; - color: ${black} !important; -} -.d-chevron3-b, -.d-chevron3-l, -.d-chevron3-r, -.d-chevron3-t { - background-image: -webkit-image-set(url(https://static.senscritique.com/img/layout/icons/chevrons/chevron-size3.png?201710121789416) 1x,url(https://static.senscritique.com/img/layout/icons/chevrons/chevron-size3@2x.png?201710121789416) 2x); -} - -================================ - -sephora.com - -INVERT -img[alt="Sephora"] -img[src="/img/ufe/icons/stores.svg"] -img[src="/img/ufe/icons/community.svg"] -img[src="/img/ufe/icons/me32.svg"] -svg[data-at="basket_icon_large"] -div[aria-label$="stars"] - -================================ - -septa.org - -INVERT -.checked > label > div > .switch-marker -.clear-btn -.leaflet-control-attribution -.leaflet-popup -.listbox-row[role="presentation"] > svg-icon -.map-container -.map-zoom-controls > button > i -.search-icon - -CSS -.bg-black, -.is-frequent { - background-color: var(--darkreader-neutral-text) !important; - color: var(--darkreader-neutral-background) !important; -} -.bus, -.circle { - border: 2px solid var(--darkreader-neutral-text) !important; -} -.leaflet-routes-pane > svg > g > path { - stroke: #000 !important; -} -.leaflet-stops-pane > svg > g > path, -.trip-icon-container > svg > path { - fill: #fff !important; - stroke: #000 !important; -} - -================================ - -server.pro - -INVERT -svg.server-pro-logo - -================================ - -servercat.net - -INVERT -.theme-header-logo - -================================ - -servercontrolpanel.de - -CSS -body { - background-color: transparent !important; -} - -================================ - -setupbits.com - -INVERT -.td-header-logo -.td-main-logo - -================================ - -sf-express.com - -INVERT -.home-icon -.map -.order-btn - -================================ - -shaneco.com - -INVERT -.logo-full - -================================ - -share.dmhy.org - -CSS -.jmd_base td a { - color: ${#3391ff}; -} -.jmd .today a { - color: ${#fff}; -} - -================================ - -sharedrop.io - -CSS -.qr-code img { - border: 10px solid white !important; -} - -================================ - -sharepoint.com -*.sharepoint.com - -INVERT -img.WACPageImg - -CSS -.ms-FocusZone, -.ms-DetailsRow-cell, -.ms-Button { - background-color: var(--darkreader-neutral-background) !important; -} -.ms-DetailsRow-cell, -.ms-FocusZone, -.ms-Button, -.od-ItemContent-title, -.ms-DetailsHeader-cellName { - color: var(--darkreader-neutral-text) !important; -} -.ms-Button { - border-color: ${#F0F0F0} !important; -} - -================================ - -shazam.com - -INVERT -.media.track::after - -CSS -.google, -.apple-app-store { - background-image: url(/resources/f6f457227917dcdfc9538fbbb5a931f111648b3d/sprite.png) !important; -} -button[data-shz-cmd="try"] { - background-color: rgba(232, 230, 227) !important; - color: rgb(29, 33, 34) !important; -} -.shz-frame-ux-playerbar-upsell-variant-b { - --darkreader-bg--background-color: #1d2122 !important; -} - -================================ - -shells.com - -INVERT -img[alt="Shells Logo"] - -================================ - -shields.io - -INVERT -#app a -object - -================================ - -shimadzu.com - -INVERT -.header-logo - -================================ - -shipstation.com -*.shipstation.com - -INVERT -[class*="sub-item-icon"] -[data-testid*="note-icon"] -[class*="pill-content"] -.quantity-3CkoKmy - -CSS -div[class*="status-text"] { - background-color: var(--darkreader-neutral-background) !important; -} - -IGNORE INLINE STYLE -[class*="pill"] -[class*="color-button"] -[class*="dropdown-toggler-color"] - -================================ - -shoecarnival.com - -INVERT -.jss140 - -================================ - -shop.dr-rath.com - -CSS -.colored-header-desktop { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -shop.surfboard.com - -INVERT -img.header-logo-image - -CSS -.homepage { - background-image: none !important; -} -.sb-searchpro .input-group .btn { - background-color: ${#fee9a4} !important; -} - -================================ - -shopify.com -shopify.dev - -INVERT -.marketing-nav--skin-light > .marketing-nav__logo -.shopify-logo -.header-country-select__trigger -.lia-message-count::before -.DateTime::before - -================================ - -shoppy.gg - -INVERT -.footer-profile__logo - -================================ - -shorthistory.org - -INVERT -.td-logo > .td-main-logo > .td-retina-data - -================================ - -signal.org - -INVERT -.navbar-item .icon -.signal-logo - -================================ - -signin.ea.com - -IGNORE INLINE STYLE -svg * - -================================ - -signin.nianticlabs.com - -INVERT -img[alt="Niantic"] - -================================ - -signulous.com - -INVERT -.checkbox input:checked - -CSS -.checkbox input:checked { - background-color: white; -} - -================================ - -simepar.br - -CSS -.highcharts-text-outline { - display: none !important; -} - -================================ - -similarweb.com - -INVERT -.app-header__logo - -================================ - -simplemachines.org - -INVERT -h1.forumtitle - -CSS -#header div.frame, -#header, -span.botslice span, -span.botslice, -span.topslice, -span.topslice span, -#content_section, -#content_section div.frame, -span.lowerframe, -span.lowerframe span, -div.title_bar, -h4.titlebg, -h3.titlebg, -h4.catbg, -h4.catbg2, -h3.catbg, -h3.catbg2, -.table_list tbody.header td.catbg { - background-image: none !important; -} - -================================ - -simply-v.de - -CSS -body { - background-image: none !important; -} - -================================ - -simracingmachines.com - -INVERT -slider-component div.media.media--transparent > img[class="multicolumn-card__image"][src*=".png" i] - -CSS -.gradient { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -singularlabs.com - -INVERT -img[alt="SingularLabs"] - -================================ - -sio2.staszic.waw.pl - -INVERT -.texmath - -================================ - -sitecheck.sucuri.net - -INVERT -.icon -.logo - -================================ - -sklepbiegacza.pl - -INVERT -.header__logo -.button__icon -.main-slider__nav-item -.homepage__brand-logo -.footer__list-image -img.footer__image[src*=cash] -.product__brand-logo -.paypo-info__button - -================================ - -skycash.com - -CSS -.c-hero__newsletter { - background-image: none !important; -} - -================================ - -skyscanner.* -skyscanner.*.* -backpack.github.io -tianxun.cn -whoflies.com - -CSS -body { - background: ${white} !important; -} -[class*=bpk-flare-bar__curve] { - fill: ${white} !important; -} - -================================ - -slack.com - -CSS -.c-slacklogo svg path:first-child { - fill: var(--darkreader-selection-text) !important; -} -.c-button:not(.v--primary, .v--secondary) { - background: inherit !important; - color: inherit !important; -} -.c-button:not(.v--primary, .v--secondary):hover { - text-decoration: underline !important; -} - -================================ - -slackware.com - -CSS -body { - background-image: none !important; -} -td[bgcolor="#000000"] { - border: 1px solid !important; -} - -================================ - -slader.com - -INVERT -.navigation__logo -.explanation -.solution-cell img -.solution-content img -.answer img - -================================ - -slashnet.wordpress.com - -CSS -#container, -.entry, -body { - background-image: none !important; -} - -================================ - -slazag.pl - -INVERT -.focus__portals__banner__single -.footer__title__wrapper -.logo__wrapper -.social-bar -.triangle-slazag-svg -img.section-bg-absolute - -================================ - -smallcultfollowing.com - -CSS -*:not(a) { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -smap.uthm.edu.my - -CSS -.slider-background { - background: none !important; -} -.backstretch { - opacity: 0.5 !important; -} - -================================ - -smcdsb.elearningontario.ca - -CSS -:host([no-padding-footer]) .d2l-dropdown-content-footer, -:host([no-padding-header]) .d2l-dropdown-content-header, -:host([no-padding]) .d2l-dropdown-content-container { - background: var(--darkreader-neutral-background); -} - -================================ - -smithsonianmag.com - -INVERT -.site-logo -.footerLogo > a > img -#mobile-icon > span - -================================ - -smoglab.pl - -CSS -.main-nav, -.footer, -.module-title .main-title { - background-image: none !important; -} - -================================ - -smokin-guns.org - -CSS -#page-body .smoke-grid-9 .inner { - background-image: none !important; -} - -================================ - -smtp2go.com - -INVERT -canvas - -================================ - -smzdm.com - -INVERT -#logo -.logo-left - -================================ - -snack.expo.io - -CSS -#root > div > div > div:nth-child(2) > div:nth-child(2) > div:nth-child(2) > div > div:nth-child(2) { - background-color: white !important; -} - -================================ - -snapcraft.io - -CSS -#search-docs { - background-image: none !important; -} - -================================ - -snapeda.com - -INVERT -img[title="SnapEDA"] -img.part-organization -canvas:not(#firstfootprint) - -================================ - -softorage.com - -CSS -.tg { - background-image: linear-gradient(36deg,#fc466b,#3f5efb) !important; -} - -================================ - -softpedia.com - -IGNORE IMAGE ANALYSIS -.menubar-hp span.logov -h1.logov - -================================ - -soha.vn - -INVERT -.page-head__right .head-hanhtrinh img - -CSS -.page-body .page-head, -.page-menu, -.page-top, -.sh_home20-wrapper, -.sh_home20-wrapper .shcategory.layout-bd-nonebg, -.sh_home20-wrapper .shnews_box .noticable-news, -.sh_home20-wrapper .shnews_box .reviewer .list-cmt .item-cmt, -.news-detail .share { - background-color: var(--darkreader-neutral-background) !important; -} -.sh_home20-wrapper .shnews_box .shnews_title, -.sh_home20-wrapper .sh_hotnews .hotnews-label a, -.news-detail .news-title, -.news-content p, -.list-topic-cate .item-news-cate .title-new-cate, -.itembigs .related-special-news .item-related-news:first-child, -.itembigs .related-special-news .item-related-news:first-child a, -.rowccm li.tincungmucfocus .info h4.ksclili-title a { - color: var(--darkreader-neutral-text) !important; -} -.page-head, -.page-top { - background-image: none !important; -} - -================================ - -sony.* - -IGNORE INLINE STYLE -.brand-logo-svg > g - -================================ - -soulsplanner.com - -CSS -.form-controls input[type="checkbox"]:not(:checked) + label::before { - color: transparent !important; -} - -================================ - -soundcloud.com - -INVERT -.notificationIcon.messages::before - -CSS -.listenEngagement, -.commentForm__wrapper { - border: none !important; -} -body, -.commentForm__wrapper, -.searchTitle { - background: none !important; -} -.sc-classic .header__navMenu > li > a { - border-right-color: #454545 !important; -} -.headerSearch__input { - background: ${#f1f4f6} !important; -} - -================================ - -souq.com - -INVERT -img[src*="/souqAmazon-logo-v2"] -li.fashion-menu-link[aria-expanded="false"] -.userNameField::after -.filter-icon.deals -.cart-icon - -================================ - -source.dot.net - -CSS -.r { - border-style: none !important; -} - -================================ - -sourceforge.net - -CSS -.intro, -.audience { - background-image: none !important; -} -.all-facets, -.m-project-search-results { - background-color: ${white} !important; -} - -================================ - -sourcegraph.com - -INVERT -.header__logo - -CSS -body { - background-image: none !important; -} - -================================ - -sourcing.hktdc.com - -INVERT -.logo - -================================ - -southparkstudios.com -southpark.de - -CSS -:root { - --page-background: var(--darkreader-neutral-background) !important; -} - -================================ - -soylent.com - -INVERT -.header-logo__image -.d-header #site-logo - -================================ - -space.bilibili.com - -INVERT -.count::before - -================================ - -spaceweather.com - -INVERT -[src$="current_conditions.jpg"] -[src$="center_tablebg_top_r2_c1.jpg"] - -CSS -[background] { - background-image: none !important; -} - -================================ - -spanish.kwiziq.com - -CSS -.bg-clouds { - background-image: none !important; -} -.table-scroll-shadow-wrapper table td, -.table-scroll-shadow-wrapper table th, -.table-scroll-shadow-wrapper table tr { - mix-blend-mode: normal !important; -} - -================================ - -spboms.ru - -CSS -body { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -spc.noaa.gov - -CSS -body { - background-image: none !important; -} - -================================ - -spdx.org/licenses - -INVERT -.gray-diagonal -#logo - -================================ - -spectrum.com - -INVERT -img[src$="spectrum-logo.svg"] - -CSS -.sp-background-image { - background-image: none !important; -} - -================================ - -spectrum.ieee.org - -INVERT -a[title="Spectrum Logo"] > svg - -================================ - -spectrum.net - -INVERT -.banner-wrapper > .image-container -img[src$="spectrum-logo.svg"] - -CSS -.unauthenticated-homepage { - background-image: none !important; -} - -================================ - -speed.cloudflare.com - -INVERT -img[src*="speedrabbit-animate.gif"] -img[src*="speedrabbit-static.png"] - -================================ - -speeddial2.com - -INVERT -img[src*="images/"] - -================================ - -spidersweb.pl - -INVERT -.amp-site-title -img[alt="logo bizBlog"] -img[alt="bizblog to ludzie"] - -================================ - -spidersweb.pl/plus - -INVERT -a[href="/plus"] svg - -================================ - -spidersweb.pl/rozrywka - -INVERT -a[href="/rozrywka"] svg - -CSS -a[href="/rozrywka"] svg path[fill="#211D26"] { - --darkreader-inline-fill: ${white} !important; -} - -================================ - -sports.ru - -INVERT -.nav-top-line__logo - -================================ - -sporza.be - -CSS -.sc-score, -.sc-score__away, -.bouton:hover { - color: ${#222} !important; -} -.sc-score__wrapper { - background-color: ${#BBB} !important; -} -.bouton { - color: ${#fff} !important; -} -.sc-epg--live .sc-epg__program { - background-color: ${#CCC} !important; -} -.vrt-newsletter { - background-color: ${#EEE} !important; -} -.vrt-site-footer .vrt-newsletter .vrt-link--newsletter { - background-color: ${#AAA} !important; -} -.logo__letters { - fill: var(--darkreader-neutral-background) !important; -} -.vrt-link { - background-color: ${rgba(255, 165, 0, 0)} !important; - color: ${rgba(50, 50, 50)} !important; -} -.vrt-link:hover { - background-color: ${rgb(100, 100, 100)} !important; -} -.vrt-site-footer__navigation--green { - background-color: ${#AAA} !important; - color: var(--darkreader-neutral-background) !important; -} - -================================ - -spreadprivacy.com - -INVERT -[src^="https://spreadprivacy.com/content/images/2017/07/linux"] -[src^="https://spreadprivacy.com/content/images/2017/11/Significant-Actions"] -[src^="https://spreadprivacy.com/content/images/2018/09/ddg-traffic"] -[src^="https://openclipart.org/image/24px/svg_to_png/28768/qubodup-Cubikopp-smilies"] -[src="https://spreadprivacy.com/content/images/2017/10/smiley.png"] -[src="https://spreadprivacy.com/content/images/2018/09/private-browsing4.png"] -[src="https://spreadprivacy.com/content/images/2017/10/https-in-address-bar26.png"] -[src="https://spreadprivacy.com/content/images/2018/01/private-browsing-reasons-1.png"] -[src="https://spreadprivacy.com/content/images/2020/05/search-preference-menu_heatmap.jpg"] -[src="https://spreadprivacy.com/content/images/2020/10/trilateral-invitation_header-1.png"] -[src="https://spreadprivacy.com/content/images/2020/05/search-preference-menu_comparison-1.jpg"] -[src="https://spreadprivacy.com/content/images/2020/05/search-preference-menu_screen-sizes-1.jpg"] -[src="https://spreadprivacy.com/content/images/2020/02/Awareness-of-Privacy-Risk-of-Public-USB-Charging-.jpg"] -[src="https://spreadprivacy.com/content/images/2018/02/DuckDuckGo-Extension_Desktop-OnDevice.jpg"] - -================================ - -sqlitebrowser.org/stats - -IGNORE INLINE STYLE -.plot-container.plotly * - -================================ - -squareup.com - -INVERT -.logo - -================================ - -src.fedoraproject.org -pagure.io - -IGNORE INLINE STYLE -#cal-heatmap svg rect - -================================ - -ssllabs.com - -INVERT -#logo - -================================ - -sso.qiniu.com - -INVERT -.navbar-brand - -================================ - -stablediffusionweb.com - -INVERT -img[src="https://r2.stablediffusionweb.com/images/background-faqs.jpg"] - -================================ - -stackage.org - -INVERT -.logo - -================================ - -stackexchange.com -askubuntu.com -mathoverflow.net -serverfault.com -stackapps.com -stackoverflow.com -superuser.com -*.stackexchange.com - -INVERT -._glyph:not(.top-bar .-logo ._glyph) -.favicon-mathoverflow -.favicon-mathoverflowmeta -.favicon-stackoverflowmeta -.h-auto[alt="Academia"] -.h-auto[alt="Anime & Manga"] -.h-auto[alt="Ask Different"] -.h-auto[alt="Aviation"] -.h-auto[alt="Code Review"] -.h-auto[alt="Electrical Engineering"] -.h-auto[alt="English Language Learners"] -.h-auto[alt="Japanese Language"] -.h-auto[alt="MathOverflow"] -.h-auto[alt="Mathematics"] -.h-auto[alt="Server Fault"] -.h-auto[alt="Skeptics"] -.h-auto[alt="Software Engineering"] -.h-auto[alt="Stack Apps"] -.h-auto[alt="Super User"] -.h-auto[alt="The Workplace"] -.h-auto[alt="Theoretical Computer Science"] -.h-auto[alt="Unix & Linux"] -.h-auto[alt="Web Applications"] -.h-auto[alt="Role-playing Games"] -a.js-gps-track::before -img[alt="The Stack Exchange Network"] -button[class^="js-vote"] - -CSS -body, -#content { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; - border-color: var(--darkreader-bg--theme-primary-custom) !important; -} -.profile-cards--graph { - background-image: repeating-linear-gradient(0deg, transparent, transparent 13px, ${#e4e6e8} -13px, ${#e4e6e8} 21px) !important; -} -.c-pointer { - color: grey; -} -.js-accepted-answer-indicator.fc-green-500 { - color: var(--green) !important; -} -#newuser-box { - background-color: ${#FFF8DC} !important; -} -.topbar .icon-site-switcher-bubble { - background-repeat: no-repeat !important; -} -div.h100.bar-lg.p-bs-wrapper:has(a[href="/questions"]) { - background: linear-gradient(0deg, #502502 30%, #FFFFFF) !important; -} -div.h100.bar-lg.p-bs-wrapper:has(a[href="https://stackoverflow.co/teams"]) { - background: linear-gradient(0deg, hsl(209,100%,26%) 30%, #FFFFFF) !important; -} -button[class^="js-vote"] { - border-color: var(--darkreader-dark-background) !important; -} - -IGNORE INLINE STYLE -.chess-replayer-board td - -IGNORE IMAGE ANALYSIS -.hero-background - -================================ - -standards.ieee.org - -INVERT -.logo-link - -================================ - -stardewvalleywiki.com - -CSS -html { - background: none !important; -} - -================================ - -stardock.com - -INVERT -.mid -.careers - -================================ - -start64.com - -INVERT -img[alt="logo"] - -================================ - -startech.com.bd - -INVERT -#nav-toggler - -================================ - -startpage.com - -INVERT -.hamburger-menu .hamburger-button - -IGNORE IMAGE ANALYSIS -.home__section__search-logo -.header__logo -.header-settings__logo -.hamburger-menu .hamburger-button - -================================ - -stat.utels.ua - -CSS -img[src="/i/btm_m1.gif"], -img[src="/i/top_m1.gif"] { - display: none !important; -} -[style*="background: url(\"/i/box"], -td[background="/i/cntr_m1.gif"] { - background-image: none !important; -} - -================================ - -station-drivers.com - -INVERT -img[src*="/topic_icons/"] -img[src*="/folder_icons/"] -img[src*="/images/bios_firmware"] -img[src*="/images/driver.jpg"] -img[src*="/images/utile"] -img[src*="/images/rating"] -img[src*="/images/star"] -img[src*="/images/downl"] -img[src*="/components/com_remository/images/file_icons/"] -img[src*="/images/gohome.gif"] - -================================ - -stats.arp242.net - -INVERT -.chart-line - -================================ - -stats.stackexchange.com - -CSS -.site-header { - background-image: none !important; -} - -================================ - -status.aws.amazon.com - -INVERT -.logo -.tabStandard -td > img -td > a > img -th > a > img -th > div > a > img - -CSS -.tabStandard a { - color: ${white} !important; -} -.tabStandard, -.selected a { - background-color: ${black} !important; - color: ${white} !important; -} -tbody > tr > th { - background: transparent !important; -} -table > tbody > tr > td { - background: transparent !important; -} -.gradient { - background: transparent !important; -} - -================================ - -status.epicgames.com - -INVERT -div.eg-shield.white - -================================ - -status.npmjs.org - -INVERT -.logo-container > a > img - -================================ - -statusinvest.com.br - -INVERT -div.indice-list div.ml-1 -div.indice-list div.mt-2 -i.ml-1 - -================================ - -steamdeck.com - -INVERT -section#available-now div.col_9 -section#experience div.col_8 -section#experience h2 -section#topfeature div.col_5 - -CSS -section#available-now { - background-color: ${#0f0f0f} !important; -} - -IGNORE INLINE STYLE -#header-logo-arc - -================================ - -stevendoesstuffs.dev - -INVERT -.post-img-wrapper img - -================================ - -stine.uni-hamburg.de - -CSS -.appointment { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -stm.info - -INVERT -.map-OSM - -================================ - -stockbit.com - -INVERT -#landing-logo img -.footer-logo img -.konvajs-content canvas - -CSS -.highlight { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -stolichki.ru - -INVERT -.logoBig__img -ymaps[class$="ground-pane"] -ymaps[class$="svg-icon-content"] > ymaps -ymaps[class$="placemark__content-inner"] > ymaps > ymaps - -================================ - -stooq.pl - -CSS -a[href="//stooq.pl"] path:not([fill]) { - fill: var(--darkreader-neutral-text) !important; -} - -================================ - -store.google.* -store.google.*.* - -CSS -[style*="background-image"] { - filter: brightness(50%) sepia(40%) !important; -} - -================================ - -store.playstation.com - -INVERT -.psw-brand-text--playstation-store - -================================ - -store.ubi.com - -INVERT -div.primary-logo - -CSS -.pt_storefront-homepage #main .homepage-slider-wrapper .homepage-custom-slide > a:not(a[href$="/deals"]) .homepage-custom-slide__content .custom-slide-inner h2, -.pt_storefront-homepage #main .homepage-slider-wrapper .homepage-custom-slide > a:not(a[href$="/deals"]) .homepage-custom-slide__content .custom-slide-inner h3, -.pt_storefront-homepage #main .homepage-slider-wrapper .homepage-custom-slide a { - color: var(--darkreader-neutral-background) !important; -} -.pt_storefront-homepage #main .homepage-slider-wrapper .homepage-custom-slide > a[href$="/deals"] .homepage-custom-slide__content .custom-slide-inner h3 { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -storyteller.fit - -INVERT -img[src*="icon"] - -================================ - -storytellphys.wordpress.com - -INVERT -img - -================================ - -straightdope.com - -CSS -body { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -strava.com -*.strava.com - -INVERT -.labelGroup -#effort-box -.week.clearfix svg -#compare-graph svg -#compare-graph canvas -.nav-item a::after -.weekly-goal svg .sport-type -footer img[alt="Strava"] -.activity-indicator -.icon-other -#open-global-search-button -.icon-caret-up -.icon-caret-down -.icon-share -.icon-kudo -.icon-comment -.icon-collapse -.icon-star -.icon-caret-right -.btn-icon.remove -.icon-private -.icon-group -text.label -.leaflet-control-zoom-in -.leaflet-control-zoom-out - -CSS -.base-chart .grid-line, -#athlete-history-chart .vgrid { - stroke: #555555; -} -#athlete-history-chart #effort-box { - fill: #3e3e3e; - stroke: black; -} -#basic-analysis .xaxis-container .background, -#basic-analysis rect.static-info-box, -#basic-analysis rect.static-label-box { - fill: #2c2c2c; -} -.base-chart rect.simple-bar.segmentbar { - opacity: 1; -} -.base-chart rect.simple-bar { - fill: #444444; - stroke: #252627; -} -.current-week-label { - fill: black; -} -.sum.no-rest { - fill: black; -} -.options img { - filter: invert(40%); -} -#infoBox text { - color: black; -} -.weekly-goal svg .sport-type { - opacity: 0.5 !important; -} -svg { - fill: currentColor; -} -[class*="sauce"]:not(.sauce-invoke) { - background: transparent !important; -} -[class*="sauce"] input, -.sauce-header { - color: inherit !important; -} -rect.static-label-box, -.xaxis-container text { - fill: inherit !important; -} -[class*="sauce"] tr:hover { - background: inherit !important; -} -#sauce-kudo-all button { - background-color: ${rgba(199, 198, 199, 0.5)}; -} - -IGNORE IMAGE ANALYSIS -.app-icon.icon-fb -.app-icon.icon-rowing - -================================ - -streamable.com - -INVERT -.customer-logos -.landing .features-pane .feature > span > svg -.landing .logo -.landing .start-pane .start-form .try-arrow > img -.swoosh -#player.container .actions-section .logo -#player-play-pause-button -#player-progress-track -#player-progress-value - -================================ - -student.ladok.se - -CSS -#sidomeny .middle { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -studeo.fi - -INVERT -.equation - -================================ - -studio.youtube.com - -INVERT -paper-radio-button -.ytcp-home-button - -================================ - -studip.uni-passau.de - -CSS -#layout_container > div { - background-image: none; -} - -================================ - -studyflix.de - -INVERT -img[title='Rendered by QuickLaTeX.com'] - -================================ - -subdivx.com - -INVERT -#cabecera img -#contenedor_foro .cita img -#contenedor_foro .datos img[src*="/img/"] -#perfil_izq img[src*="img/"] - -CSS -BODY * { - color: ${#333}; -} -A { - color: ${#0366d6} !important; -} -input[type="text"], -input[type="password"], -input[type="button"], -input[type="submit"] { - background: ${#bbb}; - border: 1px solid #999; -} -input[type="submit"]:hover { - background: ${#999}; - border: 1px solid #999; -} -mark { - background: ${#f00} !important; - color: ${#fff} !important; -} -#barra a, -#menu_largo a, -#menu_largo_chat a, -#foro_tema_menu a, -#ultimos_foros_renglon .link_foro_tema, -.titulo_menu_izq { - color: #ddd !important; -} -#wrapper { - background-image: none !important; -} -#contenedor_gral { - background: ${#e0e0e0} !important; - box-shadow: rgba(0, 0, 0, 0.7) 0px 0px 8px; - display: table; - height: -webkit-fill-available !important; - width: fit-content !important; -} -#cabecera { - background: ${#e4e4e4}; -} -#barra, -#menu_top, -#menu_detalle_buscador, -#menu_detalle, -#menu_largo, -#menu_largo_chat, -#prog_menu_detalle, -#primer_msg_voto, -#reg_menu_detalle, -#drdivx_menu_detalle, -#contenedor_foro .fecha, -#perfil_menu, -#foro_tema_menu { - background: ${rgb(153,173,206)} !important; - background: linear-gradient(to bottom, ${rgb(153,173,206)} 0%, ${rgb(75,110,171)} 100%) !important; -} -#foro_home, -#foro_home_renglon, -#cuadrados_izq, -#cuadrados_izq_reng, -#chat_reng, -#contenedor_foro, -#contenedor_foro .datos, -#contenedor_foro .cita, -#contenedor_foro .mensaje { - background: ${#fff} !important; -} -#foro_home_datos, -#cuadrados_izq { - color: ${#999} !important; -} -#foro_home_datos a { - color: ${#669} !important; -} - -================================ - -subiektywnieofinansach.pl - -INVERT -.logo - -================================ - -submarinecablemap.com - -INVERT -#map - -================================ - -subscene.com - -CSS -body { - background-image: none !important; -} - -================================ - -suckless.org - -INVERT -[src="dwm.svg"] -[src="st.svg"] -[src="core.svg"] -[src="surf.svg"] -[src="blind.svg"] -[src="farbfeld.svg"] -[src="quark.svg"] -[src="sent-bullets-s.png"] -[src="slstatus.svg"] - -================================ - -sugaroutfitters.com - -CSS -.clearfix { - display: none !important; -} - -================================ - -suggestions.momentumdash.help - -CSS -#__next > div { - --color-bg-body: var(--darkreader-neutral-background) !important; - --color-bg-default: var(--darkreader-neutral-background) !important; - --color-bg-emphasize: ${#ccc} !important; -} - -================================ - -suite.smarttech-prod.com - -INVERT -.smart-wbp-canvas-layer - -================================ - -suno.com.br - -INVERT -#logoSuno > a > svg - -================================ - -superbuy.com - -INVERT -.header-logo -.logo img - -================================ - -supercoach.heraldsun.com.au - -IGNORE INLINE STYLE -svg * - -================================ - -support.arkadium.com - -INVERT -img[alt="Logo"] - -================================ - -support.discord.com - -INVERT -.logo img -ol.breadcrumbs li:first-child::before - -================================ - -support.eset.com - -INVERT -i.table-icon.product - -================================ - -support.heymman.com - -INVERT -img[src*="logo.png"] - -================================ - -support.mozilla.org - -INVERT -.card--topic .card--icon -.card--icon-sm -div.sumo-nav--logo -.pencil -.thumbsup - -================================ - -surfboard.com - -INVERT -.site-logo - -================================ - -surveymonkey.com - -CSS -.is-high-contrast .radio-button-display, -.is-high-contrast .checkbox-button-display { - opacity: 1 !important; -} -.modern-browser .radio-button-display::after, -.modern-browser .checkbox-button-display::after { - border-color: var(--darkreader-neutral-text) !important; -} - -================================ - -sverigesradio.se - -INVERT -#sprite-check -#sprite-facebook -#sprite-instagram -#sprite-reddit -#sprite-twitter -#sprite-whatsapp -.circle -.cross -.default -.episode-list-item__controls svg -.external-link-with-icon__icon -.gallery-button .icon -.gallery-button svg g -.info-teaser-container__title h2 -.link-icon .icon -.local-weather-item__wind-icon -.logo -.menu-icon.icon -.play-icon__pause-symbol -.play-icon__play-symbol -.progress.queue-progress .bar -.sr-link__svg svg -.sr-logo-wrapper -.sound-bars .bar -.support-info__icon svg -[data-require="modules/custom-click-tracking"] svg -[data-require="modules/listen-later"] svg -[data-require="modules/share-button"] svg -button.reset -input[type="range"]::-moz-range-thumb -input[type="range"]::-moz-range-track -input[type="range"]::-webkit-slider-runnable-track -input[type="range"]::-webkit-slider-thumb - -CSS -.weather-icon { - filter: invert(1) hue-rotate(180deg) !important; -} -.live-marker .dot, -.live-label::before, -.active::before { - background-color: var(--darkreader-neutral-text) !important; -} -.search-page em, -.search-result em, -.info-teaser-container__title { - color: var(--darkreader-neutral-background) !important; -} -#sprite-home path, -#sprite-news path, -#sprite-podcast path, -#sprite-direct path, -#sprite-profile path { - fill: var(--darkreader-neutral-text); -} - -================================ - -svt.se - -INVERT -header img[src*=svt] -.nyh_navigation__menu-toggle -[class^="VideoPlayerTheme__play-pause-button-simple"]::before -[class^="_play-pause-button-simple"]::before - -CSS -.nyh_breaking__top-prefix, -.nyh_teaser__live-text { - color: var(--darkreader-neutral-background) !important; -} -button[class^="PaginationButton"], -a[class^="PaginationButton"], -.nyh_screamer, -[class^="_RightNowTeaser__title"], -[class^="_RightNowTeaser__root"] { - background: var(--darkreader-bg--nyh-color-white) !important; - border-left-color: var(--darkreader-bg--nyh-color-news); -} -button[class^="PaginationButton"]:hover, -a[class^="PaginationButton"]:hover { - background: var(--darkreader-border--color-play-white) !important; -} -.flexbox .nyh_teaser.nyh_teaser--group-secondary { - border-right: none !important; -} -[class*="GroupSecondaryTeasers__container___"], -.nyh_feedbox-item+.nyh_feedbox-item, -.nyh_teaser.nyh_teaser--no-border-top { - border-top: none !important; -} -.nyh_navigation .nyh_submenu::before { - border-bottom-color: var(--darkreader-bg--nyh-color-white) !important; -} -.nyh_teaser.nyh_teaser--story-grid, -.nyh_icons_caret--factbox { - border: none; -} -.nyh_submenu-menucard, -[class*="_Post__contentVisitor___"]::after { - border-right-color: var(--darkreader-bg--nyh-color-grey-lighter) !important; -} -[class*="CurrentTopics__item___"], -[class*="GroupSecondaryTeasers__showMoreButton___"], -.nyh_mobile-menu__list-item, -.nyh_menu-card__submenu-item, -.nyh_submenu-menucard, -.nyh_submenu { - border-color: var(--darkreader-border--nyh-color-grey-lighter) !important; -} -.nyh_fact-box { - border-bottom: 1px solid var(--darkreader-border--nyh-color-grey-lighter); - border-top: 1px solid var(--darkreader-border--nyh-color-grey-lighter); -} -.nyh_fact-box__body--closed::after { - background: linear-gradient(to bottom, #1e202180 0%, #1e2021 100%); -} -.nyh_regional-widget-regions { - background: var(--darkreader-bg--nyh-color-grey-lightest); -} -.nyh_submenu-menucard { - background-color: var(--darkreader-bg--nyh-color-white); -} - -================================ - -sw.kovidgoyal.net - -CSS -.sidebar-drawer, -.sidebar-search, -.toc-drawer { - background: var(--darkreader-neutral-background) !important; -} -.sidebar-tree a.current, -.sidebar-tree label:hover { - background: var(--darkreader-selection-background) !important; -} -code { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -swiatrolnika.info - -INVERT -img[alt*="logo"] -img[src*="/images/images2/icons/"] - -================================ - -system76.com - -INVERT -svg[class^="sys-logo"] - -================================ - -systemd.io - -INVERT -.page-logo img - -================================ - -t-mobile.pl - -INVERT -img[src*="quick-redirects"] -.text-base-black ::before - -CSS -.preview-image, -.inner-container, -.bg-base-secondary-10 { - background-image: none !important; -} - -================================ - -t.bilibili.com - -CSS -.bg, -.bgc { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -t.me -telegram.me - -INVERT -.tgme_logo - -================================ - -tableau.com - -INVERT -.feature-list__icon -.mobile-nav-button__icon -.site-logo - -CSS -section { - background-image: none !important; -} - -================================ - -tablesgenerator.com - -INVERT -.icon-all-borders.toolbar-icon -.icon-no-borders.toolbar-icon -.icon-edit-borders.toolbar-icon -.icon-merge-cells.toolbar-icon -.icon-split-cells.toolbar-icon -.icon-no-colors.toolbar-icon - -IGNORE INLINE STYLE -.sp-thumb-inner -.sp-preview-inner - -================================ - -tabletochki.org - -INVERT -.perekaz__list img - -================================ - -tabs.ultimate-guitar.com - -INVERT -.ddUoc -.JZg5a - -================================ - -tails.net - -INVERT -.blocks .block img -.laptop - -CSS -body { - background-image: none !important; -} -#donate-banner p { - color: var(--darkreader-neutral-background) !important; -} -#donate-banner u { - border-bottom-color: var(--darkreader-neutral-background) !important; -} - -IGNORE IMAGE ANALYSIS -#donate-banner - -================================ - -tailwindcss.com - -CSS -.bg-white:not(#docsearch), -.bg-gray-100 { - --bg-opacity: none !important; -} -.text-gray-900, -.hover\:text-gray-900:hover, -h1, -h2, -h3, -h4, -h5, -h6 { - --text-opacity: none !important; -} -.bg-center { - background: none !important; -} - -================================ - -tailwindui.com - -CSS -html > body > div > div > img { - opacity: 0 !important; -} - -================================ - -take-a-screenshot.org - -INVERT -.switch-window span::before - -================================ - -talishar.net - -CSS -._ourTurn_199aw_35 { - background-image: url("https://talishar.net/assets/turnWidget-Normal-89240b8d.png") !important; -} -._pitchBackground_1574e_15 { - background-image: url("https://talishar.net/assets/symbol-resource-bca42b67.png") !important; -} - -================================ - -taobao.com - -INVERT -#J_SearchIcon -.J_MyShopCoupon -.J_BtnEditSKU -.cart-checkbox - -CSS -.tbh-member.J_Module { - background-image: none !important; -} -#q.search-combobox-input { - background-color: var(--darkreader-neutral-background); -} -.qrcode-img { - background-color: white !important; -} - -================================ - -tapology.com - -INVERT -.logo -ul.feedCats - -CSS -ul.feedCats li a:link, -ul.feedCats li a:visited { - color: var(--darkreader-neutral-background) !important; -} - -================================ - -tarnogorski.info - -INVERT -.td-main-logo - -================================ - -tasks.google.com - -INVERT -div[role="listitem"] > div > div > div[role="presentation"] - -================================ - -tass.ru - -INVERT -div[class^="LogoImage_logo"] > svg > path -button[class^="Footer_icon_app_store"] > svg > g > path:last-of-type - -CSS -div[class^="ds_ext_carousel"] { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -tastoid.com/ - -CSS -.jumbotron.jumbotron-no-bg { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -tc39.es - -CSS -var { - color: ${#218379} !important; - mix-blend-mode: normal !important; -} - -================================ - -tcrf.net - -CSS -body { - background-image: none !important; -} - -================================ - -teamtrees.org - -CSS -.hypeTemplate_tano { - background-color: ${white} !important; -} - -================================ - -techmaniak.pl -activemaniak.pl -agdmaniak.pl -appmaniak.pl -blogomaniak.pl -fotomaniak.pl -gizmaniak.pl -gsmmaniak.pl -luxmaniak.pl -mobimaniak.pl -rtvmaniak.pl -tabletmaniak.pl - -CSS -body, -#headerNavBlogomaniak, -#header, -#top, -#bottom, -#footer, -#footer_menu, -.wrapper, -#search input.search { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -technologyreview.com - -INVERT -a[class^="headerTemplate__logo"] - -================================ - -techpowerup.com - -INVERT -.page-header__logo - -================================ - -techspot.com - -INVERT -svg#techspot-logo - -================================ - -telegeography.com - -INVERT -.map-tile-loaded -div#globe-start > canvas -div#globe-end > canvas -div.leaflet-map-pane -img.map-banner -div.mapboxgl-map -span.hamburger-box -a > img[src^="https://www2.telegeography.com/hubfs/"] -img[alt="TeleGeography"] - -================================ - -teleman.pl - -INVERT -.movieRank - -================================ - -telerik.com - -INVERT -a.TK-Aside-Menu-Link -a.TK-Aside-Menu-Button -#ContentPlaceholder1_C377_Col00 > img - -CSS -a.TK-TLRK-Logo svg path[fill="#7c878e"] { - --darkreader-inline-fill: ${black} !important; -} -a.TK-TLRK-Logo svg path[fill="#4b4e52"] { - --darkreader-inline-fill: ${black} !important; -} -a.TK-PRGS-Logo-Footer svg path[fill="#4b4e52"] { - --darkreader-inline-fill: ${black} !important; -} -#ContentPlaceholder1_C418_Col00 > footer { - background-image: none !important; -} - -================================ - -teltarif.de - -CSS -body, -.ttColBack, -#tthdrbox { - background: var(--darkreader-neutral-background); - color: var(--darkreader-neutral-text); -} - -================================ - -temu.com - -CSS -._2Fkk_bmp { - background-color: transparent !important; -} - -================================ - -tenforums.com - -CSS -.garhead { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; - border-left-color: var(--darkreader-neutral-background) !important; - border-right-color: var(--darkreader-neutral-background) !important; -} - -================================ - -tenor.com - -INVERT -.FlagIcon -.ShareIcon - -================================ - -terazwy.pl - -INVERT -img[src*="img/loga"] -img[src*="img/logotr.png"] - -================================ - -terraform.io - -IGNORE INLINE STYLE -.text - -================================ - -terraria.wiki.gg - -CSS -#mw-head { - background: var(--theme-navbar-background); -} -#mw-panel .portal h3::after { - border-color: var(--theme-sidebar-heading-arrow-color) transparent; -} -#mw-panel .portal h3:hover::after { - border-color: var(--theme-sidebar-heading-arrow-color-hover) transparent; -} -#simpleSearch::before, -#simpleSearch::after { - border-color: var(--theme-navbar-search-botton-text-color); -} -#simpleSearch:hover::before, -#simpleSearch:hover::after { - border-color: var(--theme-navbar-search-botton-text-color-active); -} - -================================ - -tesco.com - -CSS -.ui-components-library .nav-dropdown .dropdown a.nav-toggle h1, -.ui-components-library .nav-dropdown .dropdown a.nav-toggle h2, -.ui-components-library .nav-dropdown .dropdown a.nav-toggle h3, -.ui-components-library .nav-dropdown .dropdown a.nav-toggle h4, -.ui-components-library .nav-dropdown .dropdown a.nav-toggle h5, -.ui-components-library .nav-dropdown .dropdown a.nav-toggle h6 { - z-index: 0 !important; -} - -================================ - -tesla.com - -INVERT -.tds-modal-close-icon -.tds-menu-header-legacy [id*="tds-menu-header-main--trigger"]:checked ~ [for*="tds-menu-header-main--trigger"] .tds-menu-header-main--cross_hatch - -CSS -.tcl-hero-parallax__heading, -.tcl-hero-parallax__subheading a, -.tcl-hero-parallax__additional-link { - color: ${gray} !important; -} -#block-mainheadernavigation .tds-menu-header-nav--list_link { - color: var(--darkreader-neutral-background) !important; -} - -================================ - -testudo.umd.edu - -CSS -#secondary-side, -#widgetbox_widget_parent_0 { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -the-conjugation.com - -CSS -#gauche { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -the-race.com - -INVERT -.img-fluid - -================================ - -the5to9.xyz - -CSS -:root { - --wt-text-on-background-color: var(--darkreader-neutral-text) !important; -} - -================================ - -theatlantic.com - -INVERT -[class^="NavHamburgerButton_root"] -[class^="NudgeShared_chevron"] -[class^="NonMeteredNudge_desktopTextContainer"]::after - -================================ - -theatlas.com - -CSS -.d4 .axis .tick text { - fill: var(--darkreader-neutral-text) !important; -} -.d4 .axis .tick rect { - fill: var(--darkreader-neutral-background) !important; -} - -================================ - -thecamels.org - -INVERT -.block-tags -.block-client-group-list -.slider-content-list-item-opinion-logo -.slider-testimonials-list-item - -CSS -.slider-testimonials-content { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -thecanadianencyclopedia.ca - -INVERT -.edit -.citation -.share -.print -.dot-1.dot -.dot-2.dot -.dot-3.dot -.accordion-toggler.dropdown-toggler.nav-submenu-toggler - -================================ - -thecode.media - -INVERT -img[src$="/logo.svg"] -.post-item__arrow -li::before - -================================ - -thedailybeast.com - -INVERT -.Logo -.NavSubDesktop__hamburger-bars - -================================ - -thedispatch.com - -INVERT -li::before - -================================ - -thefreedictionary.com - -INVERT -strong.i.logo -a.i.keyboard-link.mobile-hidden -#regButton::before -ul.social-networks -a.i.icon-notif -div.box > a.i -div.cprh > span.i.A.cpr -a.i.popup-opener -ul.logos-list - -================================ - -thefreelibrary.com - -INVERT -div#logo - -CSS -div.main_content { - background-image: none !important; -} - -================================ - -theguardian.com - -INVERT -a[data-sponsor="guardian.org"] -div[data-link-name="Crosswords"] .crossword__cell-number -div[data-link-name="Crosswords"] .crossword__cell-text -div[data-link-name="most-popular"] > section > ol > li > a > span > svg -section[data-component="documentaries"] a[href="https://www.theguardian.com/documentaries"] > svg -section[data-component="headlines"] .dcr-d4xwbm > svg -section[data-component="olympic-medal-table"] img[alt="Multi-coloured sand texture"] -section[data-component="paralympic-medal-table"] img[alt="Multi-coloured sand texture"] - -CSS -section[data-component="documentaries"] p { - border-top: 1px solid #ffffff50 !important; -} -section[data-component="contact-the-guardian"] a { - color: #121212 !important; -} -section[data-component="contact-the-guardian"] .btn { - background-color: #fff !important; -} -section[data-component="contact-the-guardian"] .securedrop { - background-color: #ffe500 !important; -} -section[data-component="contact-the-guardian"] .securedrop__main > .eyes > .eye > .outside > svg > path { - stroke: rgba(230,207,0,.5) !important; -} -section[data-component="headlines"] .dcr-d4xwbm { - background-color: var(--darkreader-neutral-text) !important; -} -section[data-component="olympic-medal-table"] circle[r="6.6"], -section[data-component="paralympic-medal-table"] circle[r="6.6"] { - fill: var(--darkreader-bg--section-background) !important; -} -section[data-component="video"] button[data-link-name="video-container-next"], -section[data-component="video"] button[data-link-name="video-container-prev"] { - background-color: var(--carousel-arrow-background) !important; -} -section[data-component="video"] button[data-link-name="video-container-next"]:hover, -section[data-component="video"] button[data-link-name="video-container-prev"]:hover { - background-color: var(--carousel-arrow-background-hover) !important; -} -section[data-component="video"] button[data-link-name="video-container-next"]:hover svg, -section[data-component="video"] button[data-link-name="video-container-prev"]:hover svg { - fill: var(--carousel-arrow) !important; -} -section[data-component="video"] .dcr-192a2s8 { - background-color: rgba(0, 0, 0, 0.7) !important; -} -section[data-component="video"] .dcr-1n5sax3 { - background: linear-gradient( 180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.7) 25% ) !important; -} -section[data-component="video"] .dcr-1rvgcvp, -section[data-component="video"] .dcr-kcvdg { - background-color: #707070 !important; -} -section[data-component="video"] .dcr-6r6u10 { - background-color: var(--carousel-dot) !important; -} -section[data-component="video"] .dcr-zxdpfk { - background-color: var(--carousel-active-dot) !important; -} -section[data-component="video"] .play-icon { - background-color: rgba(18, 18, 18, 0.6) !important; -} -svg[stroke="var(--article-border)"], -svg[stroke="var(--straight-lines)"] { - stroke: var(--darkreader-border--article-border) !important; -} - -IGNORE INLINE STYLE -a[data-link-name="nav3 : logo"] svg -section[data-component="contact-the-guardian"] * -section[data-component="documentaries"] path[fill="#121212"] -section[data-component="headlines"] path -section[data-component="video"] path[fill="#FFFFFF"] - -================================ - -theinformation.com - -INVERT -.logo - -IGNORE IMAGE ANALYSIS -header.locked .logo - -================================ - -theins.ru - -INVERT -header > div > a > svg - -================================ - -thejakartapost.com - -INVERT -.logo-jakartapost - -================================ - -thelancet.com - -INVERT -.journal-logos -.footer__logo - -================================ - -themis.dk - -CSS -.content { - background-image: none !important; -} -.box { - background-image: none !important; -} - -================================ - -themoscowtimes.com -moscowtimes.ru - -INVERT -.site-header__logo -.footer__logo -.contribute-teaser__button - -================================ - -themoviedb.org - -INVERT -.glyphicons_v2.link -.glyphicons_v2.facebook -.glyphicons_v2.twitter -.glyphicons_v2.instagram -.glyphicons_v2.keyboard -.glyphicons_v2.speech-bubble-alert -.glyphicons_v2.arrow-thin-right -.glyphicons_v2.arrow-thin-left - -CSS -.card { - background-color: ${#dfe1e2} !important; -} - -================================ - -thenounproject.com - -INVERT -div[class^="styles__Image"] -a[class^="styles__HeaderLogoLink"] - -================================ - -theoatmeal.com - -INVERT -img.d-inline-block.align-bottom - -================================ - -theonion.com - -INVERT -a[href="//www.theonion.com"] .theonion - -================================ - -thepaper.cn - -INVERT -.head_logo - -================================ - -thepiratebay.org - -INVERT -img[src="https://torrindex.net/images/tpb.jpg"] -img[src="https://torrindex.net/images/tpbsmall_notext.jpg"] - -================================ - -thereader.mitpress.mit.edu - -INVERT -#logo - -================================ - -theregister.* -theregister.*.* - -INVERT -.row_label.title_rhs_line -.blocksandfiles_logo -.devclass_logo -#sitpub_logo - -================================ - -thetrainline.com - -CSS -.ot-sdk-row, -.ot-sdk-twelve, -.ot-sdk-columns { - background-color: ${#CDD5E2} !important; -} - -================================ - -thetruesize.com - -INVERT -map-compass -map-compass :is(circle, g, text) - -================================ - -theverge.com - -INVERT -.c-global-header__logo -.c-tab-bar__logo -.c-footer__logo-link - -================================ - -thewindowsclub.com - -INVERT -.custom-logo - -================================ - -thompsonstein.com - -INVERT -a.logo - -================================ - -thriftbooks.com - -INVERT -.DesktopHeader-logo - -================================ - -thronemaster.net - -INVERT -.head-info-wild - -================================ - -thunderbird.net - -INVERT -.w-48 -a[title="Thunderbird"] > svg - -================================ - -ti.com - -INVERT -.ti_p-responsiveHeader-top-logo - -================================ - -tianocore.org - -INVERT -.tcLogoArea - -================================ - -tieba.baidu.com - -INVERT -.add-more-forum -.all-wraper -.core_title_btns -.day_rcmd > .class_title -.fengchao-wrap-box span -.focus_btn -img[src*="sign_err.png"] -.save_face_bg -.search_bright .nav_wrap_add_border -.share_btn_wrapper -.sub_nav_wrap -.threadlist_rep_num -.u-f-item - -CSS -.card_banner { - filter: brightness(50%); -} -.class_title, -.content-sec, -.f-d-item, -.left-sec, -.page-container, -.pb_footer, -.sub_nav_wrap, -.tb_footer { - background-image: none !important; -} -.u-f-item { - color: var(--darkreader-neutral-background) !important; -} -.tang-pass-qrcode-imgWrapper { - background-color: white !important; -} - -================================ - -time.com - -INVERT -nav.main .menu-btn .menu-btn-box - -================================ - -timeanddate.com - -INVERT -.tad-logo - -CSS -#header { - background: ${#DCD9D8}; -} -.analog-clock__hands :not(.analog-clock__hand--seconds):not(.analog-clock__pin-inner) { - stroke: ${#181F2B}; -} - -================================ - -tinder.com - -CSS -svg > path[style*="--rewind"] { - fill: ${black} !important; -} -svg > path[style*="--nope"] { - fill: ${red} !important; -} -svg > path[style*="--super-like"] { - fill: ${cyan} !important; -} -svg > path[style*="--like"] { - fill: ${#22ebc0} !important; -} -svg > path[style*="--boost"] { - fill: ${purple} !important; -} - -================================ - -titantv.com - -INVERT -img[alt="Home"] - -================================ - -tizen.org - -INVERT -#header #logo - -================================ - -tjournal.ru - -INVERT -mark - -CSS -mark a { - color: ${#346eb8} !important; -} -.main.layout { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -tns-e.ru - -INVERT -img[title*="ТНС энерго"] -img[src="/img/refresh.png"] -img[src="/img/logout-black.png"] - -================================ - -to-do.live.com - -INVERT -span[class^="ms-Toggle-thumb"] - -CSS -.backgroundLines { - background-image: linear-gradient(180deg, var(--darkreader-bg--bg-primary), var(--darkreader-bg--bg-primary) 52px, var(--darkreader-bg--bg-separator) 52px, var(--darkreader-bg--bg-separator) 52px) !important; -} - -================================ - -todoist.com - -INVERT -.ist_button_apple > img -#td-help-logo_svg__a ~ g:last-of-type - -CSS -main > section:first-of-type > div { - z-index: 1 !important; -} -img[src^="/_next/static/images/"], -[style*="/_next/static/images/"] { - filter: brightness(50%) sepia(40%) !important; -} -option, -.oT9NU, -footer { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -tokfm.pl - -INVERT -.controls span.play svg - -CSS -div.top_section_bg, -div.bottom_section_bg { - background-color: ${#e7e5e4} !important; -} -body.desk #content { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -tonsky.me - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -torguard.net - -INVERT -img[src$="statusok.gif"] -img[src$="statusfailed.gif"] - -================================ - -tosdr.org - -INVERT -img[src*="tosdr-logo-128.svg"] -img[src*="/img/news/"] -img[src*="guidelines.svg"] - -================================ - -totylkoteoria.pl - -INVERT -.site-branding -.header__socials - -CSS -.hero { - background-image: none !important; -} - -================================ - -toutatice.fr - -INVERT -.img-responsive -.banner - -================================ - -towardsdatascience.com - -CSS -article picture > img { - background-color: ${black} !important; -} - -================================ - -towersemi.com - -INVERT -.Logo - -================================ - -towhee.io - -INVERT -.logo-wrapper - -================================ - -town-of-salem.fandom.com -breezewiki.com/town-of-salem/ -bw.artemislena.eu/town-of-salem/ - -IGNORE INLINE STYLE -span[style^="text-shadow"] - -================================ - -trac.ffmpeg.org - -INVERT -img[src$="trac_logo_mini.png"] -img[src="/ffmpeg-logo.png"] - -CSS -select option { - background-color: var(--darkreader-neutral-background); -} - -================================ - -tracfone.com - -INVERT -.navbar-container nav .navbar-brand - -================================ - -track.toggl.com - -CSS -#root, -.content-wrapper > * { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -trailhead.salesforce.com - -INVERT -lwc-tds-header - -CSS -.search-input__input { - background-color: var(--darkreader-neutral-background) !important; -} -.user-info__name { - color: inherit !important; -} -.progress-ring__content { - background-color: white !important; -} -[data-layout="desktop"] .nav-list-item__link:hover, -[data-layout="desktop"] .nav-list-item__button[aria-expanded="true"] { - background: inherit !important; -} - -================================ - -training.moodys.com - -CSS -body.frameless { - background-image: none; -} - -================================ - -transifex.com - -INVERT -img.close_image - -================================ - -translate.google.* -translate.google.*.* - -INVERT -.ttsbutton -.tlid-copy-translation-button -.starbutton -.speech-button -.clear -.swap > .jfk-button-img -.morebutton -.close-button -.ita-kd-icon-button -.ita-kd-menuitem-inputtool-icon -.ita-kd-checkbox -.vk-t-btn -.vk-sf-b -.ita-hwt-backspace-img -.ita-hwt-enter-img -.ita-hwt-grip -.gt-ex-quote - -CSS -.trans-verified-button { - background-size: cover; -} - -IGNORE IMAGE ANALYSIS -.ita-kd-img - -================================ - -translate.yandex.* - -INVERT -.button.button_tab.state-selected::before -#optionsButton::after -#clearButton::after -#textNativeSpeaker -#textSpeaker -#microphone::after -#keyboardButton::after -#spellerButton::after -.button.button_icon.button_icon_swap::after -#favButton::after -#translatorSpeaker -#translatorNativeSpeaker -#copyButton::after -#shareButton::after -#goodVoteButton::after -#badVoteButton::after -#editorButton::after -.toggler::after -.button.button_icon.button_icon_speaker -.dictionary-example_toggler::after -.dictionary-example_meta__vote-buttons -.icon.button.button_icon.button_icon_sync::after -.message.message_yellow.message_replace -.placeholder -.button.header-button.button_icon.button_icon_clear2::after -#shareCopyLink::after - -================================ - -translate.yandex.*/collections - -INVERT -.button.header-button.button_icon.button_icon_clear2::after -.record-line_speaker.button.button_icon.button_icon_speaker::after -.button.button_icon.button_icon_lines::after -.button.button_icon.button_icon_trash::after -#shareCollectionCopy::after - -================================ - -translate.yandex.*/doc - -INVERT -.button.button_tab.state-selected::before -.listbox-option::after - -================================ - -translate.yandex.*/ocr - -INVERT -.button.button_tab.state-selected::before -.button.button_icon.button_icon_swap::after -.button.button_icon.button_icon_plus::after -.button.button_icon.button_icon_minus::after -.button.button_icon.button_icon_lines::after -.button.button_icon.button_icon_words::after -.button button_icon.button_icon_blocks::after -.button.button_icon.button_icon_blocks::after -.button.button_icon.button_icon_reset::after - -================================ - -translate.yandex.*/translate - -INVERT -.button.button_tab.state-selected::before -#shareButton::after -.listbox-option::after -#shareCopyLink::after - -================================ - -translifeline.org - -INVERT -nav > ul > li > a > span > svg - -================================ - -transport.orgp.spb.ru - -INVERT -#map - -================================ - -transum.org - -INVERT -img[src*="Level"] - -================================ - -trello.com - -CSS -.checklist-item-checkbox { - background-color: #2f3234 !important; -} - -================================ - -trendmicro.com - -INVERT -.logo - -================================ - -trezor.io - -INVERT -.hero-image - -================================ - -tribunemag.co.uk - -INVERT -.si-hr-nv__toggle--menu -.si-hr-sm__item - -================================ - -trip101.com - -INVERT -.logo -.name -.partner-logo -img.partner-img - -================================ - -tripadvisor.com -tripadvisor.com.tw -*.tripadvisor.com - -INVERT -img[alt="Tripadvisor"] - -================================ - -trojmiasto.pl - -INVERT -img[alt*="Trojmiasto.pl"] - -================================ - -truestory.pl - -INVERT -.tdb-logo-img - -================================ - -truity.com - -INVERT -.navbar-btn.logo -.footer-logo.logo - -================================ - -tug.org/FontCatalogue - -INVERT -img - -================================ - -turbolab.it - -CSS -body, -.main-header, -footer { - background-blend-mode: multiply !important; - background-color: ${rgba(255,255,255,0.5)} !important; -} - -================================ - -tutorialspoint.com - -INVERT -i.fa -i.fab -i.fal -img.tp-logo -button.slick-prev.slick-arrow::before -button.slick-next.slick-arrow::before - -================================ - -tuwroclaw.com - -INVERT -.navigation i[class^="ico"] -.portal-logo -.partners a img -.hamburger-wrapper -img[src*="gfx/ico"] - -================================ - -tuxcare.com - -INVERT -.navbar__logo - -================================ - -tuxedocomputers.com - -INVERT -#logo - -================================ - -tv.yandex.* - -INVERT -.icon_location::after -.icon_location::before -.button_arrow_down::after - -IGNORE IMAGE ANALYSIS -.icon_location::after -.icon_location::before -.button_arrow_down::after - -================================ - -tvland.com - -CSS -body, -.header-container { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -tvn24.pl - -INVERT -.header-menu__more-button -.hamburger-icon - -================================ - -tvrain.ru - -INVERT -.menu3__logo - -================================ - -tvtropes.org - -INVERT -body.darthWiki > i -body.wmgWiki > i -.spi.darthwiki -.spi.sugarwiki -.spi.film -.spi.headscratchers -.spi.laconic-icon -.spi.lightnovel -.spi.manga -.spi.nightmarefuel -.spi.radar -.spi.recap -.spi.shoutout -.spi.webcomic -.spi.wmg -.spi.ymmv -img[src="/img/loading-alt.gif"] - -IGNORE IMAGE ANALYSIS -body.sugarWiki #header-spacer-left::after -body.sugarWiki #header-spacer-right::after - -================================ - -tweakers.net -*.tweakers.net - -INVERT -.infoBox > .title::before -#userbar li.icon.selected > a - -CSS -#logo a { - background: url("https://tweakers.net/g/if/v3/framework/tweakers_logo_full.svg") no-repeat center !important; -} -@media screen and (max-width: 1000px) { - #logo a { - background: url("https://tweakers.net/g/if/v3/framework/menu_icons_responsive_v6.png") no-repeat -8px -220px !important; - } -} -.ankeiler > a.commentCount { - background-image: url("https://tweakers.net/g/icons/commentcounter_small_bg.svg") !important; - text-decoration: none !important; -} -#userbar li.icon a { - background-image: url("https://tweakers.net/g/if/v3/framework/menu_icons_v2.png") !important; -} -#userbar li.icon.flag.nl::after { - background-color: #fff !important; - border-bottom-color: #014a93 !important; - border-top-color: #e7184c !important; -} -#userbar li.icon.flag.be::after { - background-color: #ffff1a !important; - border-left-color: #000 !important; - border-right-color: #e7184c !important; -} -.thumb.category { - border: none !important; -} -.ctaButton.play::after { - background-color: #FFF !important; -} -.relatedContentContainer .relatedContentItems .itemContainer { - border-bottom-color: ${#d9d9d9} !important; - border-top-color: ${#d9d9d9} !important; -} -#categoryBrowser li a { - background-color: initial !important; - background-image: none !important; -} -#categoryBrowser li.more { - background-image: url("https://tweakers.net/g/if/categories/arrows.png") !important; -} -#categoryBrowser li.more:not(li.active.more) { - background-position-y: -17px !important; -} -#categoryBrowser li.more.active { - background-image: url("https://tweakers.net/g/if/categories/arrows.png"), linear-gradient(rgb(131, 24, 46), rgb(148, 15, 49)) !important; -} -#tracker .fakeTop .toggleVisibility .corner::before, -#tracker .fakeTop .toggleVisibility .corner::after { - border-color: ${#ccc} !important; -} -@media screen and (max-width: 767px) { - #userbar li.icon a { - background-image: url("https://tweakers.net/g/if/v3/framework/menu_icons_responsive_v6.png") !important; - } - #categoryBrowser li.more.active { - background-image: none !important; - box-shadow: none !important; - } -} -#contentArea, -#categoryBrowser, -#categoryBrowser .sublist, -#categoryBrowser .mainlist, -#categoryBrowser ul, -#categoryBrowser li { - border-color: ${#b2b9bd} !important; -} - -IGNORE IMAGE ANALYSIS -#categoryBrowser li a -table.highlights .title a.showMoreItems - -================================ - -twit.tv - -INVERT -.logo-large - -================================ - -twitch.tv -*.ext-twitch.tv - -INVERT -.volume-slider__slider-container -.seekbar-bar -.mention-fragment--recipient -.reply-line--mentioned -.claimable-bonus__icon - -CSS -.seekbar-segment { - background-color: rgb(169, 112, 255) !important; -} -html, -iframe { - color-scheme: unset !important; -} - -================================ - -twitter.com - -INVERT -[role="slider"] -[style^="flex-grow"] - -CSS -main, -header { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -twosigma.com - -INVERT -.homepage-video-desktop video -.homepage-video-desktop img - -================================ - -tygodnikkrag.pl - -INVERT -#header-logo-image - -================================ - -typescriptlang.org - -CSS -.dark-theme .markdown pre { - filter: none !important; -} -:root { - --darkreader-bg--raised-background-color: #1c1f21 !important; -} - -================================ - -typst.app - -INVERT -img[src$=".svg"]:not([alt="Typst"]) - -================================ - -ubank.com.au - -CSS -.sp-envelope-item { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -ubereats.com - -INVERT -img[alt*='Home'] -div[class^='c5'] .gm-style -#main-content > h1 + div -#wrapper > div:nth-of-type(2) -#wrapper > div:nth-of-type(2) > header -#wrapper > div:nth-of-type(2) > footer -#wrapper > div:nth-of-type(2) > #main-content > div:first-child - -================================ - -ubisoft.com - -INVERT -.menu span - -CSS -global-navigation, -.menu { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -ubuntu.com - -INVERT -.cls-2 -.global-nav__header-logo-anchor - -CSS -header[style$="image-background-paper.png);"] { - background-image: none !important; -} -.chart-key text { - fill: var(--darkreader-neutral-text) !important; -} - -IGNORE INLINE STYLE -g#ubuntu-logo > path - -================================ - -ubuntubudgie.org - -INVERT -.custom-logo - -================================ - -udemy.com - -IGNORE INLINE STYLE -[data-purpose="star-rating-mask"] > rect - -================================ - -ultimate-guitar.com - -INVERT -form[action$="/search.php"] > button -form[action$="/search.php"] > button:not(:hover) > span -canvas[style^="height: 72px; width: 84px;"] -canvas[style^="height: 42px; width: 141px;"] - -================================ - -umweltinstitut.org - -CSS -.streifenBg { - background-image: none !important; -} - -================================ - -un.org - -INVERT -a.logo[title="United Nations"] -img[src*="UN-text-EN.svg"] - -================================ - -understandingwar.org - -CSS -#edit-search-block-form--2, -#nice-menu-1 > li > a { - color: var(--darkreader-neutral-background) !important; - text-shadow: none !important; -} -#mainwrap, -.secondarybox, -.content, -.view-filters { - background-image: none !important; -} -img[src*="ISW\%20LOGO"], -img[src*="ISW\%20Logo"] { - background-color: white !important; -} - -IGNORE IMAGE ANALYSIS -* - -================================ - -unsplash.com - -INVERT -svg[aria-labelledby="unsplash-home"] - -CSS -li > a[aria-current="page"] { - box-shadow: ${rgb(25,25,25)} 0px -2px inset; -} - -================================ - -uokik.gov.pl - -INVERT -.a-press-office -.abgLong -h1[id="logo"] -p a -p.nav img -span[class="number"] -ul[class="tabs"] - -CSS -#subpage, -.sWrapper1, -.sWrapper2, -.tabs, -body#page, -div#right, -div#top, -div.fWrapper, -div[class="b1"], -h2#here { - background-image: none !important; -} -#footer .active { - color: #000000 !important; -} - -================================ - -uol.com.br - -CSS -.text a { - text-decoration: underline; -} - -================================ - -uottawa.brightspace.com - -INVERT -.d2l-navigation-link-image-container - -CSS -:host { - --d2l-button-icon-background-color-hover: var(--darkreader-bg--d2l-color-gypsum) !important; -} -d2l-card { - background: var(--darkreader-neutral-background) !important; - border-color: var(--darkreader-border--d2l-color-gypsum) !important; -} -d2l-dropdown-content > div, -d2l-menu-item { - background-color: var(--darkreader-neutral-background) !important; - border-radius: 10px !important; -} -d2l-empty-state-simple { - border-color: var(--darkreader-border--d2l-color-mica) !important; -} -.d2l-button-filter > ul > li > a.vui-button { - border-color: var(--darkreader-border--d2l-color-mica) !important; -} -.d2l-label-text:has(.d2l-button-subtle-content):hover, -.d2l-label-text:has(.d2l-button-subtle-content):focus, -.d2l-label-text:has(.d2l-button-subtle-content):active { - background-color: var(--darkreader-bg--d2l-color-gypsum) !important; -} -.d2l-navigation-centerer { - color: inherit !important; -} -.d2l-tabs-layout { - border-color: var(--darkreader-border--d2l-color-gypsum) !important; -} - -================================ - -ups.com - -CSS -#ups-alertsWrap, -#ups-skipNav { - background: ${#FE9} !important; -} - -================================ - -uptimerobot.com - -INVERT -.normal-logo -.socialWrapper > ul > li -.feature-icon -[src$="godaddy-logo.svg"] -[src$="moodys-logo.svg"] -[src$="ibm-logo.svg"] -[src$="expedia-logo.svg"] -[src$="creditcards.svg"] - -CSS -.page-head, -.sidebar { - background-image: none !important; -} - -================================ - -upwork.com - -CSS -.profile-completeness-nudges-tiles-alternative .carousel-wrapper .up-icon svg { - filter: drop-shadow(0 0 0px var(--white)) drop-shadow(0 0 0px var(--white)); -} -.up-skill-container .up-btn.up-btn-next::before, -.up-skill-container .up-btn.up-btn-prev::before { - opacity: 0 !important; -} -.up-tab-scroll-hint::after { - background: none !important; -} -.up-d-skeleton { - background-color: var(--darkreader-bg--skeleton-color) !important; - background-image: linear-gradient(90deg, var(--darkreader-bg--skeleton-color), #24242400, var(--darkreader-bg--skeleton-color)) !important; - color: transparent !important; -} - -================================ - -urbandecay.com - -IGNORE INLINE STYLE -.c-select__icon -.c-swatch - -================================ - -urbandictionary.com - -INVERT -a.block.flex - -================================ - -urpredditodicittadinanza.lavoro.gov.it - -CSS -:root { - --lwc-colorContentAreaBackground: transparent !important; -} - -================================ - -usbank.com - -INVERT -.logo - -================================ - -userstyles.world - -INVERT -nav .menu-icon .i - -================================ - -usosweb.*.edu.pl -usosweb.*.pl -usosweb.*.*.pl -usos.*.*.pl -web.usos.*.edu.pl - -INVERT -.icons-fontcolor -.schedimg -.rejestracja-ikona -#titlebar > #close:hover -usos-module-link-tile-container > usos-module-link-tile > h2 -timetable-entry - -CSS -:root { - --background: var(--darkreader-bg--background) !important; - --background-secondary: var(--darkreader-bg--background-secondary) !important; - --font-color: var(--darkreader-neutral-text) !important; -} -#page-body { - background-color: var(--darkreader-bg--background) !important; -} -usos-module-link-tile:hover { - background-color: var(--darkreader-border--border) !important; -} -#close:hover { - background-color: var(--darkreader-text--on-primary) !important; -} -#close:focus { - background-color: #888 !important; -} -#layoutCopyright { - color: var(--darkreader-neutral-text) !important; -} -div > #icon { - background: rgb(94, 136, 213) !important; -} -timetable-day { - background-color: var(--darkreader-neutral-background) !important; -} -timetable-entry { - color: #111 !important; -} -#titlebar { - background-color: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} -body { - background: ${#d8d8d8} !important; -} - -================================ - -uspassporthelpguide.com - -CSS -body { - background: none !important; -} - -================================ - -usps.com - -INVERT -img[src$="hamburger.svg"] -img[src$="search.svg"] -ul.nav-list > li.menuheader::after -ul.nav-list > li.qt-nav > div > ul > li > a > img -#usps-logo - -================================ - -utas.hu - -INVERT -.mapboxgl-map - -================================ - -uteka.ru - -INVERT -img[src$="/static/img/logo.svg?v=12"] -ymaps[class$="ground-pane"] - -================================ - -v.qq.com - -INVERT -.page_user_center .link_logo - -================================ - -v2ex.com - -CSS -#Wrapper { - background-image: none !important; -} - -================================ - -vaccines.gov -vacunas.gov - -INVERT -.accIcon -.Button -img[src$="/images/bch-logo.svg"] -img[src$="/images/en-US/wcdt.svg"] -img[src$="/images/es-US/wcdt.svg"] -img[src$="/images/hhs-logo.svg"] - -================================ - -vaccines.procon.org - -INVERT -#right-sidebar > aside.widget_media_image > a > img - -================================ - -valgrind.org - -CSS -p { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -vandale.nl - -INVERT -#content-top.form - -================================ - -vanguard.com - -INVERT -.vgn-accordionIcon -.vgn-arrow::after -#vgn-searchToggleButtonButton--long-form -#vgn-searchToggleButtonButton--small-form -input[id^="buysellForm:"] -input[id^="HoldingDetailForm:"] - -CSS -.hidePageIfJSdisabled { - display: block !important; -} - -================================ - -vasp.at - -INVERT -.mwe-math-fallback-image-inline -.mwe-math-fallback-image-display - -IGNORE IMAGE ANALYSIS -.site_logo - -================================ - -vbulletin.com - -CSS -.std { - background-color: var(--darkreader-neutral-background) !important; -} -.hero-text, -#hometext li, -#hometext h4, -#hometext_buttons div p { - color: var(--darkreader-neutral-background) !important; -} - -================================ - -vc.ru - -INVERT -mark - -CSS -.main.layout, -#page_wrapper { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -vcalc.com - -INVERT -.navbar-brand > img - -CSS -.features-area { - background-image: none !important; -} - -================================ - -vcb-s.com - -CSS -html { - background-color: transparent !important; -} - -================================ - -vechevoikolokol.ru - -INVERT -.map -.main-page-about .img-responsive -.header-menu__mobile .img-responsive - -CSS -.main-page-about, -.main-suggestions, -.i-about, -.issues-page__content { - background: none !important; -} - -================================ - -vendors.paddle.com - -INVERT -svg.datamap - -CSS -:host(pui-tabs) { - background-color: var(--darkreader-neutral-background) !important; - border-bottom: var(--darkreader-neutral-background) !important; - color: ${black} !important; -} -:host(pui-tabs) ::slotted(button), -:host(pui-tabs) ::slotted(a) { - background-color: var(--darkreader-neutral-background) !important; - color: ${black} !important; -} -#line-chart .tick { - fill: ${black} !important; -} - -================================ - -venture.com/domains - -INVERT -ul.nav -div.domain-header-brand-authority - -================================ - -ventusky.com - -CSS -.qo { - color: ${white} !important; -} - -================================ - -vercel.com - -INVERT -[alt="optimized-frameworks"] -[class^="features_logo"] -button[class^="header_logo"] - -CSS -:root { - --geist-foreground: var(--darkreader-neutral-text) !important; -} -div[style="background:var(--accents-1);"] { - background-color: var(--darkreader-neutral-background) !important; -} -.geist-text-center { - color: ${#333} !important; -} - -================================ - -verstka.media - -INVERT -.wp-block-site-logo - -================================ - -versus.com - -INVERT -.searchIcon > span > svg -img[src="/img/amazon-logo.png"] -.catGroups > div:not(div:nth-child(14)) > span > svg -hr - -CSS -div[class^="RadarChart"] > svg:nth-child(2) > g > g:nth-child(1) > * { - fill: #181a1b !important; - stroke: #999 !important; -} -.langList, -div[class*="Sort__selectWrapper"], -div[class*="Filter__filter"] > *:is(div, ul), -div[class*="Property__helpBoxContainer"], -.catGroupsContainer { - box-shadow: rgb(22 22 22) 0px 4px 10px !important; -} -div > select { - background-color: #181a1b !important; - border-radius: .375rem !important; -} -div[class*="Comments__translateButton"] > button { - border-color: #1c1e1f !important; -} -div[class*="Login__icons"] > button, -div[class*="SuggestionsBox__element"], -div[class*="Comments__translateButton"] > button:hover { - border-color: rgb(66, 72, 75) !important; -} -div[class*="Search__inputWrapper"]::before { - background-color: #303436 !important; -} -.navSearch > input { - border-radius: .375rem !important; -} -.navSearch > input:focus-visible, -div[class*="Search__inputWrapper"] > input:nth-child(1):focus-visible { - outline: transparent !important; -} -div[class*="Login__illustration"] { - background-image: url('https://images.versus.io/login_background.png'),linear-gradient(298deg,#7600e0,#3c59fc) !important; -} - -IGNORE INLINE STYLE -.catGroups > div > span > svg > defs > style:nth-child(2) - -================================ - -vfsglobal.cn - -INVERT -.covid-icon -.logo - -================================ - -vg24.pl - -INVERT -img[alt="VG24.PL logo"] - -================================ - -vice.com - -INVERT -img[src*="article-logo"] -div.nav-bar__hamburger-button__hamburger -a.page-footer__logo-vice-link - -IGNORE INLINE STYLE -.logo-vice * - -================================ - -videogameschronicle.com - -CSS -.vgc-layout { - background-image: none !important; -} - -================================ - -videolan.org - -CSS -ul { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -videoman.gr - -INVERT -#logo-custom span -.logo-single - -================================ - -vimeo.com - -INVERT -svg[alt="Vimeo"] -#header-vimeo-logo -footer > div > div > a > svg > path[d^="M89.05 23.658a12.087 12.087"] - -================================ - -virtualbox.org - -CSS -body { - background-image: none !important; -} - -================================ - -virustotal.com - -CSS -:root { - --darkreader-bg--vt-grey-50: ${#eee} !important; - --darkreader-bg--vt-grey-700: ${#666} !important; - --vt-white: var(--darkreader-neutral-background) !important; -} -:host(.filled) .chip { - --vt-ui-chips-color: var(--darkreader-bg--vt-grey-200) !important; -} -.range-wrapper svg { - --vt-grey-200: var(--darkreader-bg--vt-grey-200) !important; -} -vt-ui-main-footer { - --darkreader-bg--vt-grey-700: ${#a0a6b4} !important; - --vt-grey-25: var(--darkreader-bg--vt-grey-200) !important; -} -.logo { - z-index: 1 !important; -} -:host > a:not(.item), -:host > span { - border: var(--vt-ui-button-border, 1px solid black) !important; - color: var(--vt-ui-button-color-text, var(--darkreader-text--vt-grey-800, #e8e6e3)) !important; -} -:host(vt-ui-text-input) { - border: var(--vt-ui-text-input-border, 1px solid var(--darkreader-border--vt-grey-200)) !important; -} -.detections[clean], -.detections[clean] svg { - color: var(--vt-green-500) !important; - fill: var(--vt-green-500) !important; -} -.detections { - color: var(--vt-red-500) !important; -} -#detections .detection, -#detections { - --darkreader-border--vt-grey-100: var(--darkreader-border--vt-grey-200) !important; -} -.avatar-section { - background: var(--darkreader-border--vt-grey-200) !important; -} - -IGNORE INLINE STYLE -.circle-progressbar circle - -================================ - -visa.vfsglobal.com - -INVERT -.logo-height - -================================ - -visortmo.com - -IGNORE IMAGE ANALYSIS -* - -================================ - -vitaexpress.ru - -INVERT -ymaps[class$="ground-pane"] -ymaps[class$="default-cluster"] > ymaps - -================================ - -vivaldi.com - -INVERT -.hero-cover -.hero-cover p - -================================ - -vivaldi.net - -INVERT -#vlogo - -================================ - -vjudge.net - -CSS -body { - background-image: none !important; -} -#contest-rank-table td.accepted { - background-color: ${#b8ffb8} !important; -} -#contest-rank-table td.prob.fb { - background-color: ${#c8ffc8} !important; -} - -================================ - -vk.com - -CSS -body[scheme="vkcom_dark"] ._im_dialog_unread_ct { - background: var(--counter_primary_background) !important; -} - -================================ - -vmware.com - -INVERT -h1.banner-title -div.banner - -================================ - -vnexpress.net - -INVERT -#vibeji-ham span -.sub-cate img -.swiper-pagination-bullet -img[src*="app_ico"] -img[src*="icon-empty-noti"] -img[src*="logo_sawaco"] -.wrap-slide-raovat > .swiper-button-box - -CSS -.wrap-titile-area, -.inner-section-video .item-news-common { - border-color: rgb(55, 60, 62) !important; -} -#myvne_apple_login { - border-color: rgb(67, 72, 75) !important; -} -.ads > svg { - background-image: url(https://s1.vnecdn.net/vnexpress/restruct/c/v1990/v2_2019/images/graphics/icon-eclick.svg) !important; -} - -IGNORE INLINE STYLE -symbol#letter-E > * - -================================ - -vod.tvp.pl - -INVERT -img[alt="serwisy tvp"] - -================================ - -voice.google.com - -CSS -.gb_sd.gb_ld { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -voltalbania.org -voltbelgium.org -voltdanmark.org -voltdeutschland.org -voltespana.org -volteuropa.org -voltfrance.org -voltluxembourg.org -voltmalta.org -voltnederland.org -voltoesterreich.org -voltportugal.org -voltromania.org -voltslovensko.org -voltsverige.org -voltswitzerland.org - -CSS -.hidden.lg\:block:not(.w-full):not(.absolute):not(.group):not(.theme-icon):not(.mx-3) { - display: none; -} - -================================ - -vonatinfo.mav-start.hu - -CSS -#right_panel, -#legend_panel { - background: none !important; - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -votecompass.mzalendo.com - -INVERT -.content_wrapper_2 -.content_wrapper_2 > * - -================================ - -vowi.fsinf.at - -INVERT -.mwe-math-fallback-image-inline -.mwe-math-fallback-image-display - -================================ - -vox.com - -INVERT -.c-app-nav__logo -.c-footer__logo-link - -================================ - -vpn.getadblock.com - -CSS -body { - background-image: none !important; -} - -================================ - -vrt.be/vrtnws - -INVERT -.vrt-header__logo -.vrt-nav-toggle-btn - -================================ - -vseinstrumenti.ru - -CSS -img[data-behavior="cart-product-image"] { - mix-blend-mode: unset; -} - -================================ - -vshojo.com - -CSS -.elementor-section, -.elementor-heading-title { - background: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-text) !important; -} - -================================ - -vtimes.io - -INVERT -.site-header__logo -.sticky-nav__logo -.article__block__disclaimer__close::after -.article__block__disclaimer__close::before - -================================ - -vultr.com - -CSS -.svg-banner-shape { - fill: var(--darkreader-neutral-background) !important; -} - -IGNORE INLINE STYLE -.icon-ui * -.icon-user * -.icon-sm * -.svg-logo * -.svg-illustration * -.svg-product * -.svg-shape * - -================================ - -w.atwiki.jp - -CSS -.atwiki-contents-shadow, -.main_wrapper { - background-color: var(--darkreader-neutral-background) !important; -} -.atwiki-jp-bg2 { - color: var(--darkreader-neutral-background) !important; -} - -================================ - -w3.org - -INVERT -img[alt*="equation" i] - -================================ - -wacom.com - -INVERT -img.full-size-logo -a.logo -div.minicart-wrapper -a.footer-brand - -CSS -img, -div.bg-layer, -div.flickity-viewport, -canvas { - filter: brightness(50%) sepia(40%) !important; -} - -================================ - -wakamaifondue.com - -CSS -.upload-button > strong, -.upload-button > span { - color: ${white} !important; -} - -================================ - -walbrzych24.com - -INVERT -a.social-icons__icon img -img.page-header__logo -img.page-footer__img - -================================ - -wallet.myalgo.com - -IGNORE INLINE STYLE -.export-qr-code > * - -================================ - -walmart.com - -CSS -.intro-banner__container { - z-index: 0 !important; -} -label.w_cA4b[data-automation-id="pickup-store"] > svg > circle { - fill: #9ca9cd !important; -} -label[data-automation-id="pickup-store"] > svg > circle { - fill: #404658 !important; -} - -================================ - -wanikani.com - -INVERT -[data-question-type="meaning"] - -CSS -.wk-hint, -.wk-hint__title, -.subject-character__meaning { - text-shadow: None; -} - -================================ - -warframe.com - -INVERT -.HeaderNavigationBar-logo - -CSS -.wrapper { - background-image: none !important; -} - -================================ - -warframe.huijiwiki.com - -CSS -#wiki-outer-body { - background-image: none !important; -} - -================================ - -wasd.tv - -INVERT -.volume-interaction-area > div -.stream-status-live-badge - -================================ - -washingtonpost.com - -INVERT -.hp-masthead -.switch -.switch::after - -CSS -.flex * { - border: none !important; -} -nav[data-qa="secondary-nav"] { - border-left-color: transparent; - border-right-color: transparent; - border-top-color: transparent; -} -span[data-testid="headline"] { - color: var(--darkreader-neutral-text-color); -} -footer, -div { - border-left-color: transparent !important; - border-right-color: transparent !important; -} -div[data-qa="desktop-copyright"] { - border-bottom-color: transparent !important; - border-left-color: transparent !important; - border-right-color: transparent !important; -} - -IGNORE INLINE STYLE -.center > svg > path[fill="white"] - -================================ - -wayfarer.nianticlabs.com - -INVERT -wf-logo - -================================ - -waze.com - -INVERT -.wm-map__leaflet -.leaflet-bottom -.leaflet-popup-content-wrapper - -================================ - -weather.com - -INVERT -div[class*="DynamicMap"] -svg[name="arrow-up"] -svg[name="arrow-down"] -text[class*="DonutChart"] - -IGNORE INLINE STYLE -[id^="svg-symbol"] * -svg[class*="alerts--"] * -#svg-symbol-sun - -================================ - -weather.com.cn - -INVERT -.w_logo -#hourHolder - -CSS -.lv1, -.lv2, -.weatherBg01, -.weatherBgAll, -.weatherBgAll01, -.weatherBgAll02, -.weatherBgAll03 { - background-image: none !important; -} - -================================ - -weather.gov -forecast.weather.gov - -INVERT -.header-content > .header-doc -.header-content > .header-nws -#page-header > #header-doc -#page-header > #header-noaa -#page-header > #header-nws - -================================ - -web.archive.org - -INVERT -.sparkline-canvas -.sparkline-mouse-highlight -.search-toolbar-logo -.ia-wordmark - -CSS -.measure { - z-index: 0 !important; -} - -IGNORE IMAGE ANALYSIS -.search-toolbar-logo - -================================ - -web.dev - -CSS -.w-aside--gotchas, -.w-aside--key-term { - color: #b98fff; -} -.w-aside--gotchas::after, -.w-aside--key-term::after { - background-color: #b98fff; -} - -================================ - -web.fulcrumapp.com - -INVERT -.scroll-indicator -.css-x2uwzm -.duplicate -.css-37fxgj svg -a[data-original-title="Edit App"] .icon -a[data-original-title="Import Data"] .icon -a[data-original-title="Export Data"] .icon -a[data-original-title="App Dashboard"] .icon -a[data-original-title="View Records"] .icon -.w14 -.css-212r4o -.css-7n901 -.css-w98cyk - -CSS -.css-1580o8k, -.css-1ew50hl, -.css-zn8522 { - border-style: solid !important; - border-width: 1px !important; -} -.css-1ee8v3h, -.css-5mtzen, -.css-16mp2t6, -.css-1o48rld, -.css-cf39a2, -.css-1lkowri, -.css-1gj6av8, -.css-vi0msm, -.icon:is(.edit, .delete), -.css-3o0h5k { - color: rgb(193, 187, 179) !important; - fill: rgb(193, 187, 179) !important; -} -.css-13dtodi { - border-color: rgb(53,58,60) !important; - border-style: none none solid none !important; - border-width: 1px !important; -} -.css-1btrp9o:hover, -.css-11bfl1m:hover { - background-color: rgb(70, 70, 70) !important; -} -.css-1btrp9o:hover span { - color: rgb(229, 134, 134) !important; -} -.css-1btrp9o[style*="color: rgb(235, 19, 0)"] { - background-color: rgb(70, 70, 70) !important; -} -.css-1btrp9o[style*="color: rgb(235, 19, 0)"] span { - color: #ff3d3d !important; -} -.css-1580o8k, -.css-1ew50hl { - border-style: solid !important; - border-width: 1px !important; -} -.monaco-editor .cursors-layer .cursor { - background-color: #aaa !important; - border-color: #aaa !important; - color: #fff !important; -} -.monaco-editor .wordHighlightStrong { - background-color: rgba(0, 73, 114, 0.72) !important; -} -.monaco-editor .selectionHighlight { - background-color: rgba(173, 214, 255, 0.10) !important; -} -.monaco-editor .view-overlays .current-line { - border: 2px solid #282828 !important; -} -.rt-td, -.rt-th { - border-color: rgb(53, 58, 60) !important; - border-style: none none solid solid !important; - border-width: 1px !important; -} -mark { - background-color: rgba(255, 255, 0, 0.5) !important; -} - -IGNORE INLINE STYLE -.css-1k0tbw6 -.css-13dtodi -.css-6tgf2j - -================================ - -web.microsoftstream.com - -INVERT -.vjs-progress-holder -.vjs-volume-bar - -================================ - -web.telegram.org - -INVERT -.composer_emoji_tooltip_category -.nano-slider -.divider - -CSS -.progress-bar { - background-color: rgba(255,255,255,.9) !important; -} - -================================ - -web.whatsapp.com - -CSS -.landing-main div>div>div>div:has(canvas[aria-label*="Scan this"]) { - border: 15px solid white !important; -} -span[data-icon="default-user"] path.primary { - fill: var(--avatar-placeholder-primary) !important; -} -[data-icon="tail-out"] { - color: var(--darkreader-bg--outgoing-background) !important; -} -[data-icon="tail-in"] { - color: var(--darkreader-bg--incoming-background) !important; -} - -================================ - -webaim.org - -CSS -body { - background-image: none !important; -} - -================================ - -webassign.net - -INVERT -img - -CSS -body { - color: var(--darkreader-neutral-text); -} -#webAssign { - background-color: var(--darkreader-neutral-background) !important; -} -#webAssignMain, -#webAssignContent { - background-color: var(--darkreader-neutral-background) !important; -} -img[alt="seenKey"] { - background-color: ${black} !important; - filter: unset !important; -} -#webAssign select { - background-color: var(--darkreader-neutral-background) !important; -} -.sButton { - background-image: unset; -} - -================================ - -webbrowsertools.com - -CSS -.tile { - background-color: var(--darkreader-neutral-background); -} - -================================ - -webdav.org - -CSS -body { - background: none !important; -} - -================================ - -webkitgtk.org - -CSS -#main_wrapper { - background-image: none !important; -} - -================================ - -weblate.org - -INVERT -h5.list-group-item-heading > svg -img[src="/static/state/lock.svg"] -img[src="/static/state/link.svg"] -img[src="/static/state/source.svg"] -img[src="/static/auth/password.svg"] -img[src="/static/auth/email.svg"] -img[src="/static/auth/github.svg"] -path[d^="M12,4V2A10,10"] -img[src="/static/state/link.svg"] - -================================ - -webmd.com - -INVERT -.blogs-webmd-logo-img -.global-nav-logo - -================================ - -webpagetest.org - -CSS -.scrollableTable table, -.results-filmstrip-container img, -div:not(.compare_contain_wrap) > div.waterfall-container img, -div.overflow-container > *, -.breakdownFrame_item > div > *, -.experiment_opportunities-resolved ol > *, -.experiments_details_desc > ul li { - mix-blend-mode: normal !important; -} - -================================ - -webroot.com - -INVERT -.logo - -================================ - -webstatus.dev - -CSS -.details { - background-color: var(--darkreader-bg--sl-color-neutral-0) !important; -} -.data-table th { - background: var(--darkreader-bg--table-header-background) !important; -} - -================================ - -webtoons.com - -CSS -.info { - color: rgb(0,0,0) !important; -} - -================================ - -wegmans.com - -INVERT -img[alt="home"] - -================================ - -wego.here.com - -INVERT -#map -.route_card_left -.route_tooltip_icon -.btn_directions - -================================ - -weibo.com - -INVERT -.CopyRight_aria_1Dnvr -.ProfileHeader_statusCounterLayer_13mzC img -#woo_svg_nav_logo > g > path:nth-child(5) - -CSS -#searchapps > div > div[role=navigation] > div.woo-panel-main { - --darkreader-bg--weibo-top-nav-panel-bgColor: rgb(24, 26, 27); - --darkreader-border--weibo-top-nav-panel-bd: rgb(52, 56, 58); -} -:root { - --darkreader-bg--frame-background: var(--darkreader-bg--w-color-light); - --darkreader-bg--w-b-flat-default-bg: #FFFFFF11; - --darkreader-bg--w-color-gray-6: #FFFFFF11; - --darkreader-bg--w-retweet-background: #FFFFFF08; - --darkreader-border--w-card-border: #FFFFFF00; - --darkreader-text--weibo-top-nav-line: #FFFFFF19; -} -.Home_split_2r3H7, -.Card_bottomGap_2Xjqi > div > .woo-divider-x, -.ALink_none_1w6rm .woo-divider-main, -.Feed_mar1_E_5ip { - color: #FFFFFF11; -} -.Nav_panel_YI3-j { - border-bottom-color: #FFFFFF22 !important; - border-left: solid !important; - border-left-color: black !important; - border-right: solid !important; - border-right-color: black !important; - border-top: solid !important; - border-top-color: black !important; -} -.woo-panel-bottom { - background-color: #FFFFFF08; - border: #FFFFFF11, 1px, solid; -} -.Tool_line_GFygz .woo-divider-shadow, -.Aria_box_3ZDlW .woo-divider-shadow { - color: #FFFFFF19; -} -.Nav_popcon__F1hb .woo-pop-ctrl { - border-left-color: #FFFFFF11; -} -.Nav_inner_1QCVO { - background-color: #FFFFFF08; - border-color: #FFFFFF11 !important; -} -.Feed_normal_12A98, -div > .wbpro-side, -.ALink_none_1w6rm .Card_bottomGap_2Xjqi { - background-color: #FFFFFF08; -} -.title_wrap_3e__u { - background-color: #FFFFFF00; -} -.title_titleBox_3bh5X { - border-bottom-color: #FFFFFF08; -} -.RepostCommentFeed_divider_3xqBq { - color: #FFFFFF08; -} -.wbpro-scrollbar { - scrollbar-color: #3a3a3a #FFFFFF11; -} -.Card_wrap_2ibWe .woo-divider-main { - color: #FFFFFF11; -} -.Card_wrap_2ibWe .woo-divider-main, -.woo-divider-x { - color: #FFFFFF11 !important; -} -.Viewer_prevList_11Q1N { - border-top-color: #FFFFFF11; -} -.woo-modal-main { - border: none; -} -body .wbpro-setup__box .multiselect__tags { - background-color: #FFFFFF11; -} -.wbpro-setup__box .woo-switch-shadow::after { - background: #555555; -} -.cardHotSearch_tab_24u_o, -.wbpro-datapicker input, -.IconBox_wrap_W3Oz_ { - background: #FFFFFF11; -} -.wbpro-side .clf { - background: #FFFFFF11; - border-radius: 8px; -} -.card-link_wrap_1ktKS, -.Feed_retweet_JqZJb, -.card-vote_original_2JeMZ { - background-color: #FFFFFF08; -} -.Bar_mid_2zgCp { - background-color: #FFFFFF1E; -} -.Detail_detail_3typT>article:first-child { - background: none; - border: none; -} -.Side_loading_3FKOe { - width: 0; -} -.cardHotSearch_tabItem_2GC1B.cardHotSearch_active_24AjL { - box-shadow: none; -} -.woo-input-wrap { - background-color: #FFFFFF19; - border-color: #FFFFFF11; -} -.SearchBar_noDataBox_3DYkR { - border: #FFFFFF29, solid, 1px; - border-radius: 8px; -} -.wbpro-layer .woo-panel-main { - border-left: none; - border-right: none; - border-top: none; -} - -================================ - -weightwatchers.com - -INVERT -span[class*="NavigationSlice_logo"] - -================================ - -wellandgood.com - -INVERT -.nav-trigger -.logo - -================================ - -wellrx.com - -INVERT -.logo - -================================ - -welsh-dictionary.ac.uk - -CSS -#donateButton { - background-color: var(--darkreader-neutral-background) !important; - color: var(--darkreader-neutral-color) !important; - text-shadow: none !important; -} - -================================ - -wenxuecity.com - -INVERT -.logo - -================================ - -wepe.com.cn - -INVERT -#u0_img - -================================ - -wesbos.com - -CSS -footer > div > div:not(.bottom) { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -westerndigital.com - -INVERT -.desktop-brand-logo - -================================ - -westlaw.com -*.westlaw.com -*.*.westlaw.com - -CSS -.co_hl.blue, -.highlightBox.blueBox { - background-color: ${lightblue} !important; -} -.co_hl.purple, -.highlightBox.purpleBox { - background-color: ${#bd73bd} !important; -} - -================================ - -wetteronline.de - -CSS -#searchstring { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -whambam3d.com - -INVERT -span.multis-svg -span.svgbg -summary.header__icon -svg.icon-search - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -what-if.xkcd.com - -INVERT -.illustration -.archive-image -.logo - -================================ - -whatruns.com - -INVERT -img[title="Buffer"] -img[alt*="hatruns"] - -================================ - -whatsapp.com - -INVERT -span[data-icon="audio-download"] -.landing-main .invisible-space > span -div.landing-header > span > svg -#wafaq_search_input - -CSS -[data-asset-intro-image], -[data-asset-intro-image-light] { - background-image: url(/img/intro-connection_c98cc75f2aa905314d74375a975d2cf2.jpg) !important; -} -html[dir] .landing-main > :first-child > :nth-child(2) > :first-child { - border: 16px solid white !important; -} -span[data-icon="tail-in"] { - color: rgb(30, 36, 39) !important; -} -span[data-icon="tail-out"] { - color: rgb(4, 57, 51) !important; -} -div#subheader { - background-image: url(https://static.whatsapp.net/rsrc.php/v1/yQ/r/dPFl9fRFF9u.jpg) !important; - background-size: 100% !important; -} - -IGNORE INLINE STYLE -path[fill="currentColor"] -path[fill="#FFFFFF"] -.landing-main svg path - -================================ - -whitemad.pl - -INVERT -#logo -#cb-nav-logo - -================================ - -who.int - -INVERT -.background-url-holder > picture > img - -================================ - -whois.arin.net/ui/advanced.jsp - -CSS -td, -div#content div#subcontent div.box ul li { - background-image: none !important; -} - -================================ - -whois.com - -INVERT -img[src^="logo.gif"] - -================================ - -wiadomoscihandlowe.pl - -INVERT -.dropdown-portal__link -.hamburger__button span -.search__icon - -================================ - -wielkopolskiebilety.pl - -INVERT -.KW__headerContainer -.logo -.map-container -img[src*="carriers/"] - -================================ - -wiemy.to - -INVERT -img.site-logo -.content-font__icon -.font-dropdown__item - -================================ - -wiesci24.pl - -INVERT -.tdb-logo-img - -================================ - -wiki.facepunch.com - -CSS -body { - background-color: transparent !important; -} -.content { - background-image: none !important; -} - -================================ - -wiki.mozilla.org - -CSS -body { - background-image: none !important; -} - -================================ - -wiki.teamfortress.com - -INVERT -.mw-wiki-logo - -CSS -body, -#mw-page-base, -#p-logo, -#content, -#footer { - background-image: none !important; -} -div.vectorTabs ul li.selected a, -#searchInput::placeholder { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -wiki.ubuntuusers.de - -CSS -table:not([class]), -table[class^="zebra"] { - background-image: none !important; -} - -================================ - -wiki.unity3d.com - -CSS -div#content, -#pt-login, -div.vectorTabs, -div.vectorTabs *, -.portal *, -div.vectorMenu, -div.vectorMenu h5 a, -div#footer, -div#footer * { - background-image: none !important; -} - -================================ - -wiki.wargaming.net - -INVERT -.l-description-img_price -.b-description-img_price - -CSS -.b-main { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -wikimapia.org - -INVERT -#map - -================================ - -wikimedia.de -*.wikimedia.de -wikimediastatus.net -*.wikimediastatus.net - -INVERT -.logo -.logo-container - -================================ - -wildberries.ru - -INVERT -ymaps[class$="ground-pane"] -ymaps[class$="svg-icon-content"] > ymaps - -CSS -.popup__close-btn.j-close, -.popup__close-btn.j-btn-close, -.tooltip.tooltip-btn-edit { - border: 1px solid rgb(59, 64, 66); -} -.popup__close-btn.j-close, -.popup__close-btn.j-btn-close, -.tooltip.tooltip-btn-edit .tooltip__content button { - color: var(--darkreader-neutral-text); -} -.dropdown-filter__btn { - color: var(--darkreader-neutral-text); -} -#Item_Text { - background: #181a1b; - color: #d1cdc7; -} - -================================ - -willthompson.co.uk - -INVERT -body -body > * - -================================ - -windows.php.net - -CSS -#content-columns .block, -#page-area .content { - background-image: none !important; -} -#content-columns .block .corners-top, -#content-columns .block .corners-bottom, -#page-area .content .corners-top, -#page-area .content .corners-bottom { - filter: invert(91%) !important; -} - -IGNORE IMAGE ANALYSIS -#content-columns .block .corners-top -#content-columns .block .corners-bottom -#page-area .content .corners-top -#page-area .content .corners-bottom -#content-columns .block .corners-top span -#content-columns .block .corners-bottom span -#page-area .content .corners-top span -#page-area .content .corners-bottom span -#main-column .innerbox .corners-top -#main-column .innerbox .corners-bottom -#mid-column .innerbox .corners-top -#mid-column .innerbox .corners-bottom -#main-column .innerbox .corners-top span -#main-column .innerbox .corners-bottom span -#mid-column .innerbox .corners-top span -#mid-column .innerbox .corners-bottom span - -================================ - -windscribe.com - -CSS -#body_wrap > div.blue-bg.blue-top > div.twinkling-blue { - background-image: none; -} - -================================ - -winehq.org -*.winehq.org - -CSS -.winehq_menu_item .winehq_badge .winehq_badge_inner { - color: maroon; -} -#whq-logo-glass { - z-index: 0; -} -div { - position: relative; - z-index: 1; -} -body { - height: auto !important; -} - -================================ - -winzip.com - -INVERT -.navbar-brand - -================================ - -wired.co.uk -wired.com - -INVERT -body a svg -a[data-testid="Logo"] -.c-nav__open-icon -.c-nav__close-icon -.standard-navigation__logo-image > img - -================================ - -wireshark.org - -INVERT -.navbar-brand - -================================ - -wirtualnemedia.pl - -INVERT -img[src$="logo-black.gif"] - -================================ - -wmar2news.com - -INVERT -.PageLogo-image -.wx-nav > img - -================================ - -wmata.com - -CSS -.icon-wmata-logo .path1::before { - color: #000 !important; -} - -IGNORE INLINE STYLE -.goog-te-gadget-simple > span > a > span - -================================ - -word-view.officeapps.live.com - -INVERT -img.WACPageImg - -================================ - -wordnik.com - -INVERT -img[alt="wordnik logo"] -.footer-logo - -================================ - -wordpress.com - -INVERT -svg.masterbar__wpcom-wordmark -div.wp-login__footer.wp-login__footer--jetpack > img - -CSS -svg.social-icons.social-icons__apple.social-icons--enabled { - fill: white !important; -} -.stats-card { - border-color: var(--darkreader-neutral-background) !important; -} -.p2020-sidebar { - background: var(--darkreader-neutral-background); - background-image: none !important; -} -.block-editor-rich-text__editable { - color: var(--darkreader-neutral-text); -} -.block-editor-block-list__layout .block-editor-block-list__block::after { - box-shadow: none !important; -} - -================================ - -workona.com - -INVERT -.style-module--unchecked--208a1 - -================================ - -worldcubeassociation.org - -CSS -.event-checkbox input[type="checkbox"] + i.cubing-icon, -.event-checkbox input[type="radio"] + i.cubing-icon, -.event-radio input[type="checkbox"] + i.cubing-icon, -.event-radio input[type="radio"] + i.cubing-icon { - color: rgba(0, 0, 0, 1) !important; -} - -IGNORE IMAGE ANALYSIS -.flag-icon-pl -.flag-icon-kr -.flag-icon-fi -.flag-icon-jp -.flag-icon-ru -.flag-icon-si -.flag-icon-co -.flag-icon-lt -.flag-icon-sk -.flag-icon-bg -.flag-icon-ve -.flag-icon-ge -.flag-icon-ec -.flag-icon-pk -.flag-icon-uy -.flag-icon-mg -.flag-icon-pa -.flag-icon-cy -.flag-icon-bh -.flag-icon-mt -.flag-icon-bt -.flag-icon-jm - -================================ - -worldometers.info - -INVERT -#coronavirus-cases-log.active .highcharts-background -#coronavirus-deaths-log.active .highcharts-background -#coronavirus-cases-linear.active .highcharts-background -#coronavirus-deaths-linear.active .highcharts-background - -================================ - -worldtimebuddy.com - -CSS -body, -.clientarea > :first-child { - background-image: none !important; -} - -================================ - -wowturkey.com - -CSS -body { - background: none !important; -} -.cevapButton { - background-image: none !important; -} -span.postdetails span.name a { - background: transparent !important; -} - -IGNORE INLINE STYLE -.cevapButton -span.name a - -================================ - -wpshout.com - -INVERT -a[rel="home"] > img - -CSS -.site-title { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -wrestlezone.com - -CSS -main, -footer, -body { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -writefreely.org - -INVERT -img[src*="writefreely.svg"] -img[src*="icon.svg"] -img[src*="i.snap.as/"] -span - -================================ - -wszystkoconajwazniejsze.pl - -CSS -#papier img { - mix-blend-mode: normal !important; -} - -================================ - -wuffs.org - -CSS -.heavyShower { - background-color: ${#e4b849} !important; -} -.lightShower { - background-color: ${#ff9} !important; -} -.wday-0, -.wday-6 { - background: ${#ccc} !important; -} -.wday-0 .mWeekday, -.wday-6 .mWeekday { - color: ${#000059} !important; -} -select:focus { - color: var(--darkreader-selection-text) !important; -} - -================================ - -wunderground.com - -CSS -.bar-on { - fill: rgba(0, 0, 0, 0.4) !important; -} - -================================ - -wvpublic.org - -INVERT -.Page-header-logo -.chevron - -================================ - -www.123cha.com - -INVERT -.logo - -================================ - -www.adjust.com - -INVERT -.homepage .a-section:first-child::before - -CSS -.a-section.bg-gradient { - --bg-gradient-end: ${white} !important; - --bg-gradient-start: var(--darkreader-neutral-background) !important; -} - -================================ - -www.androidauthority.com - -INVERT -header > a > svg -header > div > button > svg -footer > div > div > a > svg - -CSS -footer { - background-image: none !important; -} - -================================ - -www.bilibili.com - -CSS -.login-scan-box { - background: white !important; -} -.bili-mini-content-wp .login_qrcode_tip { - height: 173px !important; - left: 0px !important; - top: 0px !important; - width: 173px !important; -} -.qrcode { - background: white !important; -} -.button::before { - background-color: var(--_container-color) !important; -} -body { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -www.bromite.org - -CSS -body, -#container { - background-image: none !important; -} - -================================ - -www.dcard.tw - -CSS -#__next { - background-color: var(--color-main-dark) !important; -} -.atm_26_6oh0b4.atm_26_6oh0b4 { - background-color: var(--darkreader-bg--color-ui-background) !important; -} -.atm_leio7s_1647m0t svg { - fill: var(--darkreader-text--color-text-semi-light) !important; -} -.atm_2d_1nnff6z.atm_2d_1nnff6z { - background-color: var(--avatar-color) !important; -} - -================================ - -www.ebay.* -www.ebay.*.* - -CSS -html, -body { - background-image: none !important; -} -.ifh-container button.icon-btn > svg { - fill: ${#191919} !important; -} -:root { - --color-foreground-primary: ${#191919} !important; - --color-neutral-7: ${#191919} !important; -} - -================================ - -www.encyclopedia-titanica.org - -CSS -body { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} - -================================ - -www.federica.unina.it - -INVERT -img.latex - -================================ - -www.flickr.com - -IGNORE INLINE STYLE -#icon-flickr_logo_dots path - -================================ - -www.freepascal.org/docs-html - -INVERT -img - -================================ - -www.freeriderhd.com - -CSS -#game-container { - background-color: #cdcdcd !important; -} - -================================ - -www.google.* -www.google.*.* - -INVERT -.gb_hc -.gb_ec -.gb_x.gb_Vb -.gb_x.gb_Ub -.gb_0b -#dictionary-modules img[src*="png"] -a.gb_b > div -a[href*="about/products"][title] -.JOmIqc -.hLcKi -#EcMbV -#wrap a[href="/mobile/"] -.vk-sf-b -.vk-t-btn -.ChZgtd div::before -.ChZgtd div::after -.yPHXsc div -.mn-dwn-arw -img.act-icon-dark-gray -.YsGUOb -.tays_show_more_answer_button_hide -.tays_show_more_answer_button_show -#tays_add_more_answers_button_hide -#tays_add_more_answers_button -img[src^="https://www.google.com/maps"] -[data-attrid="formula-image"] -[data-attrid^="variable"] img -[src^="/chrome/static/images/thank-you/"] -[src^="/chrome/static/images/reversible/"] -[src="/chrome/static/images/gpay/slate.png"] -[src^="/chrome/static/images/productivity/"] -[src^="/chrome/static/images/features/phone"] -[src^="/chrome/static/images/features/big_phone"] -[src^="/chrome/static/images/be-more-productive/"] -[src^="/chrome/static/images/search-bar/chrome-ui"] -[src="/chrome/static/images/go-mobile/qr-code.png"] -[src^="/chrome/static/images/download-browser/pixel"] -[src^="/chrome/static/images/browser-by-google/pixel"] -[src^="/chrome/static/images/sync-incognito/chrome-ui"] -[src^="/chrome/static/images/download-browser/big_pixel"] -[src="/chrome/static/images/homepage/homepage_tools.png"] -[src="/chrome/static/images/homepage/homepage_privacy.png"] -[src="/chrome/static/images/google-translate/screen-english.png"] -#shield-ok-fill-shield - -CSS -.X6JNf, -.appbar, -.sfbg { - background: var(--darkreader-neutral-background) !important; -} -.RNNXgb, -.aajZCb { - box-shadow: 0 0 2px 0 ${rgba(0,0,0,0.16)}, 0 0 0 1px ${rgba(0,0,0,0.08)} !important; -} -.Gor6zc { - background-color: white !important; -} -img[id^="platop"] { - background-color: white !important; -} -.chr-full-bleed-hero { - background-image: none !important; -} -html, -body, -img, -[role="img"], -video, -iframe, -#gb, -a[href^="https://shopping.google.com"][href*="/lists"] > span { - filter: none !important; -} -.REySof { - color: rgba(255,255,255,0.1) !important; -} -:root { - --xhUGwc: var(--darkreader-neutral-background) !important; -} - -IGNORE INLINE STYLE -.kdPwrb -.rnt3Ze -.NYcQFd -#shield-ok-fill-shield - -================================ - -www.hapo.org - -INVERT -.section__overlap[style*="/new-site/background-swoosh.png"] - -================================ - -www.inu-manga.com - -CSS -.bs .bsx .limit .type.Manhwa, -.listupd .utao.styletwo .uta .imgu .type.Manhwa { - background-image: url("/wp-content/themes/mangareader/assets/images/manhwa.png") !important; -} -.bs .bsx .limit .type.Manga, -.listupd .utao.styletwo .uta .imgu .type.Manga { - background-image: url("/wp-content/themes/mangareader/assets/images/manga.png") !important; -} - -================================ - -www.iyingdi.com - -CSS -.header-area { - background-image: linear-gradient( - 180deg, - transparent, - color-mix(in srgb, var(--darkreader-neutral-background) 30%, transparent) 25%, - color-mix(in srgb, var(--darkreader-neutral-background) 60%, transparent) 44%, - color-mix(in srgb, var(--darkreader-neutral-background) 90%, transparent) 69%, - var(--darkreader-neutral-background) - ) !important; -} -.header-area .post-title, -.header-area .post-detail-info { - color: var(--darkreader-neutral-text) !important; -} -.post-main-content { - background-color: var(--darkreader-neutral-background) !important; -} -.author-info-bar { - background-color: var(--darkreader-neutral-background) !important; -} -.author-info-bar .user-name, -.author-info-bar .fans-and-follows .count { - color: rgb(200, 196, 189) !important; -} - -================================ - -www.jetbrains.com - -IGNORE INLINE STYLE -linearGradient[id*="svg"] > stop -radialGradient[id*="svg"] > stop -svg[class*="logo"] -#__SVG_SPRITE_NODE__ > symbol > path -#__SVG_SPRITE_NODE__ > symbol > g - -================================ - -www.jiqizhixin.com - -INVERT -.header__logo - -================================ - -www.khirevich.com - -INVERT -.fig > img - -================================ - -www.kleinanzeigen.de - -CSS -.Modal--Content, -.UserBadgesModal--Dialog { - background-color: var(--darkreader-bg--kds-sema-color-surface) !important; -} - -================================ - -www.linuxcollections.com - -INVERT -html -body - -CSS -body { - background-image: none !important; -} - -================================ - -www.liqpay.ua - -INVERT -div.qrcode > canvas - -================================ - -www.logitech.com - -INVERT -.locale-selector-bg - -================================ - -www.mayoclinic.org - -INVERT -.mc-logo -.logo > a > img[alt="Mayo Clinic"] -img[src="/-/media/images/mayologo.png"] -img[src="/styles/img/gbs/logo-mayoclinic-mobile.png"] - -CSS -ul#nav.nav > li.no-image > a, -ul#nav.nav > li.current > a { - background-image: url("/UniversalNav/Styles/img/sprite-globalnavarrows.png") !important; -} - -================================ - -www.menti.com - -INVERT -div#__next svg[role="img"] > title ~ g -img[src^="https://images.mentimeter.com/themes/832111/tyett7pf-brand-light.svg"] - -================================ - -www.minecraft.net - -INVERT -.feature-details img -.ms-accordion .shade -.ms-accordion td.platform-data -.nav-links__tab-icon - -CSS -.ms-accordion td.platform-data { - background-color: white !important; -} -div[style*="background-image: url("][style*="/background-images/bg-wool-white.png"], -.promo-area .bg-wool-light { - background-image: none !important; -} - -IGNORE IMAGE ANALYSIS -.promo-area .trans-top-dark - -================================ - -www.mozilla.org - -INVERT -img.sidebar-icon -h1.c-logo - -CSS -div.mzp-c-navigation-logo { - background: ${black} !important; -} - -IGNORE IMAGE ANALYSIS -.c-logo.t-browser-word-hor-white-xs -.c-logo.t-browser-word-hor-xs -.noodle-browser - -================================ - -www.msn.cn - -CSS -.heading span, -msft-attribution span { - color: var(--darkreader-neutral-background) !important; -} -.heading + .abstract { - color: ${rgb(247, 244, 241)} !important; -} - -IGNORE INLINE STYLE -.article -msft-ad-label - -================================ - -www.oschina.net - -INVERT -.logo > svg > g > path - -================================ - -www.phoronix.com - -CSS -img[src*="/benchmark/result/"] { - background-color: #348755 !important; -} - -================================ - -www.photopea.com - -CSS -.block .panelhead div .cross { - background-image: var(--icon_cross); -} -.window .whead .cross { - background-image: var(--icon_cross); -} -[data-darkreader-inline-fill] { - fill: ${white} !important; -} -* { - border-color: var(--darkreader-bg--bg-panel) !important; -} - -================================ - -www.physics.utoronto.ca/~aephraim/aephraim.html - -CSS -body { - --darkreader-inline-bgcolor: var(--darkreader-neutral-background) !important; -} - -================================ - -www.pixivision.net - -INVERT -.hdc__logo -.ghdsp__logo -.sidebar-visible-button -._search-field-visible-button - -================================ - -www.pravda.com.ua - -INVERT -div.war_img > img -div.footer_social_wrapper > a > img -div.interfax > a > img -div.footer_contacts > div.footer_img > img -div.main_logo > a.main_logo_link > svg -div.post_social > a > img -div.post_statistic > div.post_views > img -span.icon-menu - -================================ - -www.psytec.co.jp - -INVERT -[background$="images/square.gif"] -[background$="images/square.gif"] > * -td[background*="images/sep_b"] - -================================ - -www.qr-code-generator.com - -IGNORE INLINE STYLE -qrcg-generator-qr-code * - -================================ - -www.qt.io - -CSS -.b-background__wrapper .b-background__asset[style^="background-image"] { - filter: brightness(50%) sepia(40%) !important; -} -div[class*="frontpage"] .scheme--default p { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -www.rbc.ua - -INVERT -.h-inner > .logo - -================================ - -www.realtek.com - -CSS -#t3-header, -body > div.t3-wrapper > div > div.section-wrap.bg-wrap1 > div > div > div.custom > div > a { - background: var(--darkreader-neutral-background) !important; -} -#t3-header > div > div.col-xs-3.visible-xs-block > button.search-toggle, -#t3-header > div > div.col-xs-3.visible-xs-block > button.globe-toggle { - background-color: inherit !important; -} - -================================ - -www.scien.cx - -CSS -body.custom-background { - background-image: none !important; -} - -================================ - -www.searchenginejournal.com - -INVERT -.sej-footer-logo -.sej-mobile-logo -.whitelogo - -================================ - -www.sentienceinstitute.org - -CSS -div.parallax-mirror { - z-index: auto !important; -} - -================================ - -www.soepub.com/discuzx34 -www.soepub.net/discuzx34 - -CSS -.c_l, -.c_r, -.c_yb, -.c_yc, -.c_ycr, -.c_yt { - background-image: none !important; -} - -================================ - -www.songsterr.com - -INVERT -use[href^="#rest"] -use[href^="#dot"] - -CSS -#tablature svg text { - fill: var(--darkreader-neutral-text) !important; -} -#tablature svg path { - stroke: var(--darkreader-neutral-text) !important; -} -section[role="main"] div[style^="transform"] { - mix-blend-mode: normal !important; -} - -================================ - -www.sport5.co.il - -INVERT -.news-room-placeholder .container-message-in .newsroom-row .newsroom-spitz - -================================ - -www.statshunters.com - -INVERT -.logo - -CSS -.highcharts-background { - fill: none !important; -} -.highcharts-text-outline { - stroke: none !important; -} - -================================ - -www.stern.de - -CSS -.page { - --page-background: var(--darkreader-neutral-background) !important; -} -.slide-navigation { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -www.storm.mg - -INVERT -.footer_logo_img -#logo_img - -================================ - -www.tandfonline.com - -INVERT -img.no-mml-formula - -================================ - -www.thisoldhouse.com - -INVERT -.c-masthead__main[style^="background-image"] - -IGNORE INLINE STYLE -.c-footer__logo-link * - -================================ - -www.thivien.net - -CSS -body { - background-image: none !important; -} - -================================ - -www.tiktok.com - -INVERT -.like-container .icon -.logo-link -div[class*="DivSeekBarContainer"] -div[class*="DivVolumeControlCircle"] -div[class*="DivVolumeControlBar"] -div[class*="DivVolumeControlProgress"] -.video-control-container-browser -.volume-control-container-browser -.seek-bar-container -.volume-control-container -svg[class*="StyledLinkLogo"] -svg[class*="SvgPlayIcon"] -#svg-music-note > path - -CSS -[data-e2e="like-icon"] svg, -[data-e2e="comment-icon"] svg, -[data-e2e="share-icon"] svg { - fill: var(--darkreader-neutral-text) !important; -} - -================================ - -www.tinkoff.ru - -INVERT -a[title="Tinkoff"] - -================================ - -www.tumblr.com - -INVERT -.QnWzN > div -div[role="progressbar"] - -CSS -a[data-testid="google-login-button"], -a[data-testid="apple-login-button"] { - background-color: var(--darkreader-neutral-background) !important; -} -footer[role="contentinfo"] > ul > li > a { - filter: invert(0%) hue-rotate(180deg) contrast(200%) !important; -} -:root { - --darkreader-bg--secondary-accent: 31, 32, 34 !important; - --darkreader-bg--white: 23, 23, 23 !important; - --darkreader-text--black: 228, 224, 218 !important; -} - -================================ - -www.typingclub.com - -CSS -object { - color-scheme: initial !important; -} - -================================ - -www.w3schools.com - -IGNORE INLINE STYLE -.colorbox .innerbox - -================================ - -www.webofscience.com - -CSS -.hh, -.labl, -mark { - background-color: gray !important; - color: var(--darkreader-neutral-text) !important; -} - -================================ - -www.wikihow.com - -INVERT -.qa_obscured_answer_overlay :last-child:not(strong *) - -================================ - -www.windy.com - -INVERT -.data-table > .forecast-table.progress-bar > canvas - -CSS -#plugin-detail { - text-shadow: rgb(40, 43, 54) 0px 1px 0px !important; -} - -================================ - -www1.flightrising.com - -INVERT -#sitewide-effort-details -#sitewide-effort-description -#sitewide-effort-status -#sitewide-effort-current-milestone-title -#sitewide-effort-action -#big-login-form-button -img[src$="button-subtract-35.png"] -img[src$="turn-in-button.png"] -img[src*="effort/banner_overlays"] -img[src$="button_back.png"] -.dragontip div[style^="background-image"] -.dragontip div[style^="background-image"] * -#bbcode-tag-bar -.common-hub-item-button:not([href*="dig-sites"],[href*="database"],[id*="archaeology-muster"]) -.common-hub-item-button:not([href*="dig-sites"],[href*="database"],[id*="archaeology-muster"]) .common-hub-item-description -img[src*="edit."] -img[src*="feed."] -#usertab -.tabstat -#namespan -img[src*="down_arrow."] -#energybar -#target -#ltavtr -#element-banner -#statusboxcontext -#status-box-bottom -#lair-action-mode -img[src*="customize"] -img[src*="button-breed."] -img[src*="bond."] -img[src*="switch-familiar"] -img[src*="share"] -img[src*="predict-morphology"] -img[src*="add-35"] -img[src*="edit-bio"] -img[src*="scenic-mode"] -img[src*="pagination-previous."] -img[src*="pagination-next."] -img[src*="add-tabs"] -img[src*="add-slots"] -img[src*="move-to-tab"] -img[src*="move-to-lair"] -img[src*="move-to-den."] -img[src*="exit"] -#dragon-profile-scene[style*="11.jpg"] -#dragon-profile-scene[style*="10.jpg"] -#dragon-profile-scene[style*="9.jpg"] -#dragon-profile-scene[style*="8.jpg"] -#dragon-profile-scene[style*="7.jpg"] -#dragon-profile-scene[style*="6.jpg"] -#dragon-profile-scene[style*="5.jpg"] -#dragon-profile-scene[style*="4.jpg"] -#dragon-profile-scene[style*="3.jpg"] -#dragon-profile-scene[style*="2.jpg"] -#dragon-profile-scene[style*="1.jpg"] -#speech-bubble -#speech-bubble-content -.baldwin-create-instruct -img[src*="baldwincreate."] -img[src*="incubate."] -img[src*="icon_help."] -img[src*="filter"] -img[src*="mode-hoard"] -img[src*="function-vault"] -img[src*="function-ah"] -img[src*="function-sell"] -img[src*="function-convert"] -.hoard-stack-function-toggle-hoard-sell-lock -img[src*="favorite-off"] -img[src*="select-all"] -img[src*="purchase-den"] -.unlock-slots-dialog-button-remaining -#compose -.menu_content -.achievements-nav -.pursuits-nav -.market-actions -#ah-topright-tray -.ah-landing-button -.ah-landing-button p -.ah-search-tab-up -.ah-search-tab-down -img[src*="catalog."] -img[src*="swipptrade."] -#raffle-background -.raffle-winners -img[alt*="Transmute"] -img[alt*="Create New"] -img[src*="dig-sites."] -img[src*="muster-resources."] -.archaeology-dig-site-index-row-image -.archaeology-dig-site-index-row-focus-toggle -img[src*="rugged-work."] -img[src*="precise-work."] -#tradetype -img[src*="attachdragon."] -img[src*="tradedetails."] -.custom-shops-list-item -.custom-shops-list-item-description -.faire-tooltip .header -.faire-tooltip .header h1 -#dominance-background-image -img[src*="new_posts."] -#forum-pinglists -#forum-search -#toggle-subscribe -img[src*="icon-alert."] -img[src*="icon-quote."] -.wws-carousel-slide -.wws-carousel-slide-text -.wws-carousel-navigation-previous -.wws-carousel-navigation-next -#toggle_button -#dressing-room-landing-page -img[src*="loadoutfit."] -img[src*="saveoutfit."] -img[src*="importapparel."] -img[src*="clearall."] -#scrybanner > div -#assay-container -#assay-container > div -img[src*="bg_foreseeprogeny."] -img[src*="offspring_preview."] -#load-morphology -#save-morphology -.common-hub-item-button[href*="database"] img -#game-database-search-icon -img[src*="-auction-house."] -img[src*="suggest."] -img[src*="icon-help."] -.btn-restore -#ticker -#ticker > div -#lucky-streak -#lucky-streak > div -#fullscreen -.baldwin-create-instruct -.baldwin-create-instruct > div -.ah-listing-clear-button -.ah-clear-all-btn -.ah-listing-relist-button -div#status-box-mid -div#status-box-mid ol -div#status-box-mid div -.status-row-text img -img[src*="den-slot-unlock."] -.ah-collect-all-btn -img[src*="canceltrade."] -img[src*="newtopic."] -#dragtext -#manntext -#morphtext -img[src*="success_catch."] -.ah-listing-buy-button -#random-dragon -#random-dragon a -#baldwin #plus-button -#divcontrade - -CSS -.main:not([style*="familiar/background."],[style*="custom-shop-b"]) { - background-image: none !important; -} -.swipp-tradebox { - background-color: var(--darkreader-neutral-background) !important; -} -.lair-supply.lair-supply-meat.common-tooltip { - background-image: url("/static/layout/icon_meat.png") !important; -} -#trading-post-content { - background-image: none !important; -} -#crimswap { - background-image: none !important; -} -#predict-morphology { - background-image: none !important; -} -#random-dragon { - color: black !important; -} -.contentcontainer { - background-color: var(--darkreader-neutral-background) !important; - background-image: none !important; -} -.scry-image-rear { - background: url(https://i.imgur.com/1b5mZWZ.png) no-repeat !important; -} -.outfit-image-rear { - background: url(https://i.imgur.com/FrkDinQ.png) no-repeat !important; -} -img[src*="ss_scavenge."] { - display: none !important; -} -.itemmeat { - background-image: url(/static/layout/tooltips/food-meat.png) !important; -} -div#status-box-mid { - background-image: url(/static/layout/sitestatus_spacer.png) !important; -} -.status-row-text { - color: black !important; -} -#dragon-profile-likes[data-active="false"] .dragon-profile-likes-icon { - background-image: url(/static/layout/icon_star_disabled.png) !important; -} -.ah-listing-buy-button { - background-color: lighten(var(--darkreader-neutral-background), 50%) !important; -} -#baldwin #plus-button { - background-color: lighten(var(--darkreader-neutral-background), 50%) !important; -} - -IGNORE IMAGE ANALYSIS -#gem_pack_1 -#gem_pack_1:hover -#gem_pack_2 -#gem_pack_2:hover -#gem_pack_3 -#gem_pack_3:hover -#ah-topright-buy-button -#ah-topright-sell-button -#usertab -.baldwin-create-instruct -.archaeology-dig-plot-square -.scry-image-rear -.outfit-image-rear -#baldwin-xpbar-fill -.hoard-result-item-use[data-type="baldwin"]::after -.hoard-result-item-use[data-type="den"]::after -#ticker -.itemmeat -li[data-visible="true"] .dr-apparel-visibility -.lair-supply.lair-supply-meat.common-tooltip -.archaeology-supply-pickaxe -.ah-listing-clear-button -.ah-clear-all-btn -#archaeology-muster-resources -.ah-collect-all-btn -.ah-listing-buy-button -#baldwin #plus-button - -================================ - -wx.qq.com -wx2.qq.com - -CSS -body { - background-image: none !important; -} - -================================ - -wxwidgets.org - -INVERT -img[src$="header-logo.png"] - -================================ - -wyborcza.pl -wyborcza.biz - -INVERT -#wH_username_wrap img -.account-cap--logo -.cap-navigation--back -.cap-vignette--logo-image -.header-cap-holder a img -.nmk_avatar-icon -.partners-list-item -.partners-list-item-text -.podcast-player-control ::after -.podcast-player-time-progress -.return-back img -.wyborcza-logo -a[title="Aplikacja wyborcza.pl"] -img.logo -.button svg -.btn.pull-right.dismiss -.slider_nekrologi p::before -img[src*="WYBORCZA-NEKROLOGI.png"] - -================================ - -wysokieobcasy.pl - -INVERT -.vin-img-link-pic.vin-local-img-link-pic - -================================ - -x-kom.pl -*.x-kom.pl - -INVERT -a[href="/"] img -a[href="https://x-kom.pl"] img -a[href="https://www.x-kom.pl"] img -div[title*="panel"] svg -img[alt="Menu"] -img[alt*="Logo"] -img[src*="Logo_strefy_marek"] -img[src*="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iM"] -img[src*="data:image/svg+xml;base64,PHN2ZyB4bWxucz0ia"] -.geex a img -a[href="https://geex.x-kom.pl/"] img -img[alt="Geex logotyp"] - -CSS -[class*="parts__SlideContainer"] picture, -.ePVVIv { - filter: brightness(0.8); -} - -================================ - -xcite.com - -INVERT -li.xc-product-slider-item__actions-bar__express.xcf.xcf--Rocket3-012222 -li.xc-product-slider-item__actions-bar__express.xcf.xcf--express-delivery -li.xc-product-slider-item__actions-bar__pickup.xcf.xcf--bag -li.xc-product-slider-item__actions-bar__secret-deal.xcf.xcf--secret-deal -div > a.xc-product-slider-item__name -div.titleFyler > span.weeklyTitle - -CSS -div.algolia-instant-results-wrapper { - background-color: var(--darkreader-neutral-background); -} - -================================ - -xda-developers.com - -INVERT -.hb-trigger - -CSS -body.tag { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -xfree86.org - -INVERT -img[src*=".png"] - -================================ - -xiph.org - -INVERT -img[src$="fish_xiph_org.png"] - -================================ - -y.qq.com - -INVERT -.popup_guide__logo -.qqmusic_logo - -================================ - -yadi.sk - -INVERT -span.logo.burger-sidebar__logo -span.logo.burger-sidebar__sidebar-logo - -================================ - -yamicsoft.com - -CSS -.slider-wrapper .slide-secound-detail, -.slider-wrapper .slide-secound-title { - color: var(--darkreader-neutral-background) !important; -} - -================================ - -yandex.*/internet - -INVERT -a[href="/internet"] - -================================ - -yandex.*/maps -yandex.*/web-maps - -INVERT -.content-panel-header__logo path[d^="M39.64 22.32"] -.whats-here-preview__control-search-icon -.close-button._color_black._circle -.business-social-links-view__icon -.social-share-view_discovery-small -.social-share-view_discovery-large -.orgpage-social-links-view__icon -.promo-button__promo-image-container -.orgpage-photos-view__empty -.map-container > ymaps > ymaps > canvas - -CSS -span[class$="business-reactions-view__icon"], -div[class$="business-reactions-view__counter"], -span[class$="business-reactions-view__icon _dislike"] { - color: ${#aba8a8} !important; -} - -================================ - -yandex.*/pogoda - -INVERT -.maps-widget-nowcast__map-link -.weather-maps__map > ymaps > ymaps > ymaps > ymaps -.color-scale__line -.weather-table__wind-direction > .icon_wind -.icon_color_black - -================================ - -yandex.*/support - -INVERT -.header2__logo - -================================ - -yandex.eu/showcaptcha - -CSS -.AdvancedCaptcha-SilhouetteTask { - background-color: teal !important; -} - -================================ - -yandex.ru/blog/narod-karta - -INVERT -.y-header_club__logo -.y-header_club__service - -================================ - -yandex.ru/q - -INVERT -header a[href="/q/"] svg - -================================ - -yelp.com - -INVERT -#logo:not(.homepage-hero_logo) -img[src$="40x40_food_v2.svg"] -.gm-style img[role="presentation"]:not([src*="v="]) - -================================ - -yeniakit.com.tr - -CSS -.photo-news-detail-cover .article-header > .image { - z-index: 0 !important; -} -.photo-news-detail-cover .article-header > .black-shadow { - z-index: 1 !important; -} -.photo-news-detail-cover .article-header > .social-box, -.photo-news-detail-cover .article-header > .category { - z-index: 2 !important; -} - -================================ - -yettel.rs - -INVERT -.header-container - -================================ - -yle.fi - -INVERT -[class*="AreenaHeader"] -[class*="TheEndIsDelight__Svg"] - -IGNORE IMAGE ANALYSIS -.yle-header figure.yle-header-logo - -================================ - -yougetsignal.com - -INVERT -img[src^="img/"] - -================================ - -youla.ru - -INVERT -section[data-test-component="HeaderActionMenu"] a > svg > path:nth-child(2n+2) -#map-1 canvas - -================================ - -youmath.it -*.youmath.it - -INVERT -.ltximg - -================================ - -youtube.com - -INVERT -#tube-mount .b img -#ytd-player + .efyt-control-bar > button - -CSS -#search-icon-legacy.ytd-searchbox { - border: 1px solid var(--ytd-searchbox-legacy-border-color) !important; -} -html:not(.style-scope) { - --accent-color: ${#ff4081} !important; - --disabled-text-color: ${#9b9b9b} !important; - --divider-color: ${#dbdbdb} !important; - --error-color: ${#dd2c00} !important; - --primary-background-color: ${#ffffff} !important; - --primary-color: ${#3f51b5} !important; - --primary-text-color: ${#212121} !important; - --yt-alert-background: ${hsla(0, 0%, 93.3%, .4)} !important; - --yt-app-background: ${hsl(0, 0%, 100%)} !important; - --yt-border-color: ${hsl(0, 0%, 93.3%)} !important; - --yt-button-active-color: ${hsl(0, 0%, 6.7%)} !important; - --yt-channel-header-background: ${hsl(0, 0%, 98%)} !important; - --yt-chat-bubble-other-background-color: ${#F9F9F9} !important; - --yt-chat-bubble-other-border-color: ${#CCCCCC} !important; - --yt-chat-bubble-self-background-color: ${#EDEDED} !important; - --yt-chat-bubble-self-border-color: ${#CCCCCC} !important; - --yt-commentbox-border-active: ${hsla(0, 0%, 6.7%, .6)} !important; - --yt-commentbox-border-inactive: ${hsl(0, 0%, 93.3%)} !important; - --yt-copyright-text: ${hsla(0, 0%, 6.7%, .6)} !important; - --yt-dialog-background: ${hsl(0, 0%, 100%)} !important; - --yt-emoji-picker-search-background-color: ${hsla(0, 0%, 100%, .6)} !important; - --yt-emoji-picker-search-color: ${hsla(0, 0%, 6.7%, .8)} !important; - --yt-emoji-picker-search-placeholder-color: ${hsla(0, 0%, 6.7%, .6)} !important; - --yt-expand-color: ${hsla(0, 0%, 6.7%, .6)} !important; - --yt-featured-channel-title-text-color: ${hsla(0, 0%, 0%, .54)} !important; - --yt-formatted-string-deemphasize-color: ${hsl(0, 0%, 53.3%)} !important; - --yt-guide-background: ${hsl(0, 0%, 96%)} !important; - --yt-guide-entry-text-color: ${hsla(0, 0%, 6.7%, .8)} !important; - --yt-hovered-text-color: ${hsla(0, 0%, 6.7%, .8)} !important; - --yt-icon-active-color: ${hsl(0, 0%, 6.7%)} !important; - --yt-icon-color: ${hsla(0, 0%, 6.7%, .4)} !important; - --yt-icon-disabled-color: ${hsla(0, 0%, 6.7%, .6)} !important; - --yt-icon-hover-color: ${hsla(0, 0%, 6.7%, .8)} !important; - --yt-item-section-header-color: ${hsla(0, 0%, 6.7%, .6)} !important; - --yt-live-chat-action-panel-background-color: ${hsla(0, 0%, 93.3%, .4)} !important; - --yt-live-chat-action-panel-background-color-transparent: ${hsla(0, 0%, 97%, .8)} !important; - --yt-live-chat-background-color: ${hsl(0, 0%, 100%)} !important; - --yt-live-chat-disabled-icon-button-color: ${hsla(0, 0%, 6.7%, .2)} !important; - --yt-live-chat-picker-button-color: ${hsla(0, 0%, 6.7%, .4)} !important; - --yt-live-chat-primary-text-color: ${hsl(0, 0%, 6.7%)} !important; - --yt-live-chat-secondary-background-color: ${hsl(0, 0%, 93.3%)} !important; - --yt-live-chat-secondary-text-color: ${hsla(0, 0%, 6.7%, .6)} !important; - --yt-live-chat-tertiary-text-color: ${hsla(0, 0%, 6.7%, .4)} !important; - --yt-live-chat-text-input-field-suggestion-background-color: ${hsl(0, 0%, 100%)} !important; - --yt-live-chat-text-input-field-suggestion-background-color-hover: ${#eee} !important; - --yt-live-chat-text-input-field-suggestion-text-color: ${#666} !important; - --yt-live-chat-text-input-field-suggestion-text-color-hover: ${#333} !important; - --yt-live-chat-vem-background-color: ${hsl(0, 0, 93.3%)} !important; - --yt-main-app-background: ${hsl(0, 0%, 98%)} !important; - --yt-main-app-background-tmp: ${hsl(0, 0%, 100%)} !important; - --yt-material-searchbox-active: ${hsl(0, 0%, 100%)} !important; - --yt-material-searchbox-active-shadow: ${hsla(0, 0%, 0%, .26)} !important; - --yt-material-searchbox-inactive: ${hsla(0, 0%, 93.3%, .6)} !important; - --yt-material-searchbox-inactive-shadow: ${hsla(0, 0%, 53.3%, .2)} !important; - --yt-material-searchbox-inset: ${hsla(0, 0%, 0%, .04)} !important; - --yt-menu-focus-background-color: ${hsla(0, 0%, 6.7%, .2)} !important; - --yt-menu-hover-backgound-color: ${hsl(0, 0%, 93.3%)} !important; - --yt-paper-button-ink-color: ${hsl(0, 0%, 53.3%)} !important; - --yt-placeholder-text: ${hsla(0, 0%, 6.7%, .6)} !important; - --yt-placeholder-text-color: ${hsla(0, 0%, 6.7%, .6)} !important; - --yt-playlist-background-header: ${hsl(0, 0%, 93.3%)} !important; - --yt-playlist-background-item: ${hsla(0, 0%, 93.3%, .6)} !important; - --yt-playlist-message-text: ${hsla(0, 0%, 6.7%, .6)} !important; - --yt-playlist-message-text-hover: ${hsl(0, 0%, 6.7%)} !important; - --yt-playlist-title-text: ${hsl(0, 0%, 6.7%)} !important; - --yt-primary-color: ${hsl(0, 0%, 6.7%)} !important; - --yt-primary-disabled-button-text-color: ${hsl(0, 0%, 100%)} !important; - --yt-primary-text-color: ${hsl(0, 0%, 6.7%)} !important; - --yt-searchbox-background: ${hsl(0, 0%, 100%)} !important; - --yt-secondary-text-color: ${hsla(0, 0%, 6.7%, .8)} !important; - --yt-sidebar-background: ${hsl(0, 0%, 98%)} !important; - --yt-simple-menu-header-background: ${hsl(0, 0%, 93.3%)} !important; - --yt-spec-10-percent-layer: ${rgba(0, 0, 0, 0.10)} !important; - --yt-spec-badge-chip-background: ${rgba(0, 0, 0, 0.05)} !important; - --yt-spec-brand-background-primary: ${rgba(255, 255, 255, 0.98)} !important; - --yt-spec-brand-background-secondary: ${rgba(255, 255, 255, 0.95)} !important; - --yt-spec-brand-background-solid: ${#FFFFFF} !important; - --yt-spec-brand-icon-active: #{rgb(255, 0, 0)} !important; - --yt-spec-brand-icon-inactive: ${#606060} !important; - --yt-spec-brand-subscribe-button-background: ${#FF0000} !important; - --yt-spec-brand-text-button-focus-outline: ${rgba(204, 0, 0, 0.30)} !important; - --yt-spec-button-chip-background-hover: ${rgba(0, 0, 0, 0.10)} !important; - --yt-spec-call-to-action: ${#065FD4} !important; - --yt-spec-call-to-action-button-focus-outline: ${rgba(6, 95, 212, 0.30)} !important; - --yt-spec-call-to-action-inverse: ${#3EA6FF} !important; - --yt-spec-error-background: ${#1F1F1F} !important; - --yt-spec-feed-background-a: ${#F9F9F9} !important; - --yt-spec-feed-background-b: ${#F3F3F3} !important; - --yt-spec-feed-background-c: ${#EDEDED} !important; - --yt-spec-filled-button-focus-outline: ${rgba(0, 0, 0, 0.60)} !important; - --yt-spec-filled-button-text: ${#FFFFFF} !important; - --yt-spec-general-background-a: ${white} !important; - --yt-spec-general-background-b: ${#f1f1f1} !important; - --yt-spec-general-background-c: ${#e9e9e9} !important; - --yt-spec-icon-active-other: ${#606060} !important; - --yt-spec-icon-disabled: ${#CCCCCC} !important; - --yt-spec-icon-inactive: ${#909090} !important; - --yt-spec-inactive-text-button-focus-outline: ${#CCCCCC} !important; - --yt-spec-selected-nav-text: ${#CC0000} !important; - --yt-spec-suggested-action: ${#F2F8FF} !important; - --yt-spec-text-disabled: ${#909090} !important; - --yt-spec-text-primary: ${#0A0A0A} !important; - --yt-spec-text-primary-inverse: ${#FFFFFF} !important; - --yt-spec-text-secondary: ${#606060} !important; - --yt-spec-themed-blue: ${#065FD4} !important; - --yt-spec-themed-green: ${#107516} !important; - --yt-spec-touch-response: ${#000000} !important; - --yt-spec-wordmark-text: ${#282828} !important; - --yt-std-body-300: ${hsla(0, 0%, 0%, .54)} !important; - --yt-std-surface-200: ${hsl(0, 0%, 98%)} !important; - --yt-std-surface-300: ${hsl(0, 0%, 96%)} !important; - --yt-std-surface-400: ${hsl(0, 0%, 93%)} !important; - --yt-swatch-icon-color: ${hsla(0, 0%, 6.7%, .4)} !important; - --yt-swatch-input-text: ${hsl(0, 0%, 6.7%)} !important; - --yt-swatch-primary: ${hsl(0, 0%, 100%)} !important; - --yt-swatch-primary-darker: ${rgb(230, 230, 230)} !important; - --yt-swatch-text: ${hsla(0, 0%, 6.7%, .4)} !important; - --yt-swatch-textbox-bg: ${rgb(255, 255, 255)} !important; - --yt-tertiary-text-color: ${hsla(0, 0%, 6.7%, .6)} !important; - --yt-thumbnail-placeholder-color: ${hsl(0, 0%, 89%)} !important; - --yt-transcript-background: ${hsl(0, 0%, 100%)} !important; - --yt-video-secondary-info-description-background: ${hsla(0, 0%, 93.3%, .6)} !important; - --ytd-backstage-attachment-background-color: ${hsl(0, 0%, 100%)} !important; - --ytd-backstage-attachment-icon-hover-color: ${hsla(0, 0%, 0%, .74)} !important; - --ytd-backstage-cancel-background-color: ${hsl(0, 0%, 100%)} !important; - --ytd-backstage-cancel-color: ${hsla(0, 0%, 6.7%, .4)} !important; - --ytd-backstage-creationbox-background-color: ${hsl(0, 0%, 98%)} !important; - --ytd-backstage-creationbox-background-color-focus: ${hsl(0, 0%, 96%)} !important; - --ytd-backstage-creationbox-disabled-button-color: ${hsla(0, 0%, 0%, .04)} !important; - --ytd-backstage-creationbox-disabled-button-text-color: ${hsl(0, 0%, 100%)} !important; - --ytd-backstage-creationbox-inactive-color: ${hsla(0, 0%, 0%, .26)} !important; - --ytd-backstage-creationbox-input-text-color: ${hsla(0, 0%, 0%, .87)} !important; - --ytd-backstage-creationbox-text-color: ${hsla(0, 0%, 0%, .54)} !important; - --ytd-backstage-image-alert-color: ${hsla(0, 0%, 6.7%, .6)} !important; - --ytd-backstage-metadata-text-color: ${hsl(0, 0%, 53.3%)} !important; - --ytd-backstage-video-link-background-color: ${hsla(0, 0%, 93.3%, .4)} !important; - --ytd-badge-disabled-color: ${hsla(0, 0%, 53.3%, .4)} !important; - --ytd-collection-badge-color: ${hsla(0, 0%, 6.7%, .8)} !important; - --ytd-comment-text-color: ${hsl(0, 0%, 6.7%)} !important; - --ytd-moderation-icon-color: ${hsla(0, 0%, 6.7%, .6)} !important; - --ytd-moderation-icon-hover-color: ${hsl(0, 0%, 6.7%)} !important; - --ytd-moderation-panel-background: ${hsla(0, 0%, 93.3%, .6)} !important; - --ytd-moderation-panel-comment-metadata-text: ${hsla(0, 0%, 6.7%, .6)} !important; - --ytd-moderation-panel-comment-text: ${hsl(0, 0%, 6.7%)} !important; - --ytd-moderation-panel-hover: ${hsla(0, 0%, 93.3%, .8)} !important; - --ytd-offer-background-color: ${hsla(0, 0%, 93.3%, .4)} !important; - --ytd-owner-badge-color: ${hsla(0, 0%, 6.7%, .4)} !important; - --ytd-searchbox-border-color: ${hsla(0, 0%, 53.3%, .2)} !important; - --ytd-searchbox-legacy-border-color: ${#ccc} !important; - --ytd-searchbox-legacy-border-shadow-color: ${#eee} !important; - --ytd-searchbox-legacy-button-border-color: ${#d3d3d3} !important; - --ytd-searchbox-legacy-button-color: ${#f8f8f8} !important; - --ytd-searchbox-legacy-button-focus-color: ${#e9e9e9} !important; - --ytd-searchbox-legacy-button-hover-border-color: ${#c6c6c6} !important; - --ytd-searchbox-legacy-button-hover-color: ${#f0f0f0} !important; - --ytd-searchbox-legacy-button-icon-color: ${#333} !important; - --ytd-shopping-product-info: ${hsla(0, 0%, 6.7%, .8)} !important; - --ytd-simple-badge-color: ${hsla(0, 0%, 6.7%, .6)} !important; - --ytd-sponsorships-background-color-focus: ${hsla(0, 0%, 93.3%, .4)} !important; - --ytd-transcript-cue-hover-background-color: ${hsl(0, 0%, 93.3%)} !important; - --ytd-transcript-toolbar-background-color: ${hsl(0, 0%, 93.3%)} !important; - --ytd-transcript-toolbar-text: ${hsl(0, 0%, 6.7%)} !important; - --ytd-vat-notice-text: ${hsla(0, 0%, 6.7%, .6)} !important; - --ytd-video-game-watch-card-logo-color: ${hsl(0, 0%, 6.7%)} !important; - --ytd-video-publish-date-color: ${hsla(0, 0%, 6.7%, .6)} !important; - --ytd-watch-card-album-header-background: ${hsl(0, 0%, 100%)} !important; - --ytd-watch-card-secondary-text-color: ${hsl(0, 0%, 53.3%)} !important; - --ytd-watch-split-pane-sidebar-background-color: ${hsl(0, 0%, 98%)} !important; -} -.ytp-hover-progress-light { - background-color: rgba(255,255,255,.5) !important; -} -.ytp-progress-list { - background-color: rgba(255,255,255,.2) !important; -} -.ytp-volume-slider-handle { - background-color: white !important; -} -.ytp-volume-slider-handle::before { - background-color: white !important; -} -.ytp-volume-slider-handle::after { - background-color: rgba(255,255,255,.2) !important; -} -button[aria-pressed="true"] > yt-icon:not(#guide-icon.ytd-app):not(#guide-icon.ytd-masthead), -[id$="-replies"].ytd-comment-replies-renderer > .ytd-button-renderer > paper-button, -[id$="-replies"].ytd-comment-replies-renderer > .ytd-button-renderer > paper-button > yt-icon { - color: var(--yt-spec-call-to-action) !important; - fill: var(--yt-spec-call-to-action) !important; -} -.ytp-menuitem-toggle-checkbox { - background: rgba(255, 255, 255, 0.3) !important; -} -.ytp-menuitem[aria-checked="true"] .ytp-menuitem-toggle-checkbox { - background: #f00 !important; -} -.ytp-menuitem-toggle-checkbox::after { - background-color: #bdbdbd !important; -} -.ytp-menuitem[aria-checked="true"] .ytp-menuitem-toggle-checkbox::after { - background-color: white !important; -} -#date yt-formatted-string.ytd-video-primary-info-renderer, -.yt-view-count-renderer { - color: var(--yt-spec-text-secondary) !important; -} -.ytp-contextmenu .ytp-menuitem .ytp-menuitem-toggle-checkbox { - background: none !important; -} -.ytp-contextmenu .ytp-menuitem[aria-checked="true"] .ytp-menuitem-toggle-checkbox { - background: url('data:image/svg+xml;utf8,') !important; -} -#metadata-line.ytd-video-meta-block span.ytd-video-meta-block { - color: var(--ytd-metadata-line-color, var(--yt-spec-text-secondary)) !important; -} -yt-formatted-string[has-link-only_]:not([force-default-style]) a.yt-simple-endpoint.yt-formatted-string { - color: var(--yt-endpoint-color, var(--yt-spec-text-primary)) !important; -} -paper-button.ytd-subscribe-button-renderer[subscribed] { - background-color: var(--yt-spec-10-percent-layer) !important; -} -.badge-style-type-live-now.ytd-badge-supported-renderer { - border: 1px solid rgb(255, 78, 69) !important; -} -.ytp-load-progress { - background: rgba(255,255,255,0.3) !important; -} -yt-chip-cloud-chip-renderer[chip-style="STYLE_DEFAULT"] { - background-color: rgba(255,255,255,0.05); -} -yt-chip-cloud-chip-renderer[chip-style="STYLE_DEFAULT"].iron-selected { - background-color: rgba(255,255,255,0.2); -} -paper-item[aria-selected="true"] { - background-color: rgba(255,255,255,0.2) !important; -} -iron-input.paper-input > input.paper-input, -.input-content.paper-input-container > label, -.input-content.paper-input-container > .paper-input-label { - color: var(--paper-input-container-shared-input-style_-_color) !important; -} -ytd-compact-autoplay-renderer, -ytd-video-primary-info-renderer, -#sections.ytd-guide-renderer > .ytd-guide-renderer:not(first-child), -ytd-video-secondary-info-renderer, -#placeholder-area.ytd-comment-simplebox-renderer { - border-bottom-color: var(--yt-spec-10-percent-layer) !important; -} -ytd-guide-collapsible-section-entry-renderer.ytd-guide-section-renderer:not(:first-child), -ytd-metadata-row-header-renderer[has-divider-line] { - border-top-color: var(--yt-spec-10-percent-layer) !important; -} -ytd-guide-entry-renderer[active] .guide-icon.ytd-guide-entry-renderer { - fill: ${black} !important; -} -#hearted.ytd-creator-heart-renderer { - fill: var(--yt-spec-static-brand-red) !important; -} -#hearted-border.ytd-creator-heart-renderer { - fill: ${white} !important; -} -.guide-entry-badge.ytd-guide-entry-renderer { - fill: var(--yt-spec-static-brand-red) !important; -} -#endpoint.yt-simple-endpoint.ytd-guide-entry-renderer:hover, -#endpoint.yt-simple-endpoint.ytd-guide-entry-renderer:focus { - background-color: var(--yt-spec-badge-chip-background) !important; -} -a.yt-simple-endpoint.yt-formatted-string { - color: var(--yt-endpoint-color, var(--yt-spec-call-to-action)) !important; -} -a.yt-simple-endpoint.yt-formatted-string:hover { - color: var(--yt-endpoint-hover-color, var(--yt-spec-call-to-action)) !important; -} -.ytp-cards-button-icon .ytp-svg-shadow { - fill: var(--darkreader-neutral-background) !important; -} -.ytp-doubletap-ui-legacy[data-side="back"] .ytp-doubletap-base-arrow { - border-right-color: var(--darkreader-neutral-color) !important; -} -.ytp-doubletap-ui-legacy[data-side="forward"] .ytp-doubletap-base-arrow { - border-left-color: var(--darkreader-neutral-color) !important; -} -.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--tonal { - background-color: ${lightgray} !important; -} -.page-header-banner-image { - background-image: var(--yt-channel-banner) !important; -} - -IGNORE INLINE STYLE -yt-live-chat-ticker-paid-message-item-renderer * -yt-live-chat-ticker-sponsor-item-renderer * -#ytd-player + .efyt-control-bar > button path - -================================ - -yscec.yonsei.ac.kr - -INVERT -iframe -#page-sidebar - -================================ - -yume.wiki - -CSS -.spoiler { - background-color: ${black} !important; - color: ${black} !important; -} - -================================ - -yuque.com - -INVERT -.lake-math-content-preview-img > img -.lake-math-container > img -div[data-lake-card="mindmap"] > div > div > div - -================================ - -zacznijzyc.net - -INVERT -.logo_container - -================================ - -zadania.info - -INVERT -img.latex__math-inline -img.math -img.math-display - -================================ - -zaid-ajaj.github.io - -CSS -:root { - --main-background: var(--darkreader-neutral-background) !important; - --sidebar-background: var(--darkreader-neutral-background) !important; -} - -================================ - -zdic.net - -INVERT -li a img -.kxtimg -.zipic img -.zx img - -CSS -.nr-box-header { - background-image: none !important; -} - -================================ - -zdw.krakow.pl - -CSS -#kw-alert p, -#kw-alert a { - color: initial !important; -} - -================================ - -zendesk.com - -CSS -.zendesk-editor--rich-text-container { - background-image: none !important; -} - -================================ - -zenn.dev - -INVERT -a[class^="AppHeader_homeLink"] - -================================ - -zeptovm.com - -INVERT -.logo - -================================ - -zerossl.com - -INVERT -.logo - -================================ - -zfsbootmenu.org - -CSS -body { - background-image: none !important; -} - -================================ - -zhihu.com - -INVERT -img[eeimg="1"] - -CSS -div.css-vurnku > div > div.css-1bi2006 { - background-color: ${darkgray} !important; -} -div.css-vurnku button { - color: ${darkblue} !important; -} -div.css-vurnku button svg { - fill: ${darkblue} !important; -} -div.Popover-content .Menu { - background-color: var(--darkreader-neutral-background) !important; -} - -================================ - -zhihuishu.com - -INVERT -img[class="kfformula"] - -================================ - -zhixue.com - -INVERT -.analysis_html_new [src] -.hd2 -.hd3 -.ml15 [src] -.subject-info [src] -.subject-result [src] -div.analysis-content [src] -div.mt5 -#sideToolbar - -================================ - -zippyshare.com - -INVERT -img#browse - -CSS -.inner_main > table { - background-image: none !important; -} - -================================ - -zlidc.net - -INVERT -#nav-logo - -================================ - -znanium.com - -INVERT -.bookreadimgs - -================================ - -zorin.com - -INVERT -.logotype -.social -img[alt="GOG logo"] -img[alt="Windows to Zorin OS"] - -================================ - -zotero.org - -INVERT -.brand - -================================ - -zrzutka.pl - -INVERT -.navbar-logo -.rounded-circle - -================================ - -zybooks.com - -CSS -.image-content-resource img, -.zyimage { - background-color: var(--darkreader-neutral-text) !important; -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/config/inversion-fixes.config b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/config/inversion-fixes.config deleted file mode 100644 index bf04b80..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/config/inversion-fixes.config +++ /dev/null @@ -1,3177 +0,0 @@ -* - -INVERT -img -video -:not(object):not(body)>embed -object -svg image -[style*="background:url"] -[style*="background-image:url"] -[style*="background: url"] -[style*="background-image: url"] -[background] -twitterwidget -.sr-reader -.sr-backdrop -iframe:fullscreen -[class="opinary-iframe"] - -NO INVERT -[style*="background:url"] * -[style*="background-image:url"] * -[style*="background: url"] * -[style*="background-image: url"] * -input -[background] * -img[src^="https://s0.wp.com/latex.php"] -img.Wirisformula -twitterwidget .NaturalImage-image - -REMOVE BG -.compatibility-with-darkreader-below-4-3-3 - -CSS -.compatibility-with-darkreader-below-4-3-3 { - background: white !important; -} - -================================ - -1fichier.com - -INVERT -#oby_na -#mkdir -#rename -#rmdir -#share -.file_link -.file_info -.file_at -.file_export -.file_desc -.file_rename -.file_password -.file_acl -.file_ddl -.file_inline -.file_remove - -================================ - -airbnb.com - -INVERT -.background-cover -#footer -#photo-modal - -NO INVERT -#footer * -#photo-modal * - -================================ - -algassert.com - -NO INVERT -img - -================================ - -aliexpress.com - -CSS -#j-qrcode-img, #J_QRCodeImg { - background-color: white !important; -} - -================================ - -amazon.com - -INVERT -#navbar -#nav-subnav -#navFooter -.dv-storefront-page -.av-hero-background-size -.av-detail-bottom-bar -.webPlayerContainer -.avu-content -.avu-section-alt -.av-badges -.controlsOverlayTopRight -.pausedOverlay -.nav-flyout -.lists-desktop-rio-icons - -NO INVERT -.DigitalVideoWebNodeLists_Item__itemImage -.av-hero-background -.avu-content img -.dv-tile img -.vjs-tech video - -CSS -#nav-flyout-ewc { - margin-right: -220px; -} -.nav-flyout-body { - height: 100% !important; -} - -================================ - -anankeiot.com - -INVERT -#sidebar-left -.page-header -.add-button -.panel-footer - -================================ - -androidpolice.com - -INVERT -.ap-nav-wrapper -.footer -.logo - -NO INVERT -.ap-nav-wrapper * -.footer * - -================================ - -answers.unity.com - -INVERT -.header-wrapper -.navbar - -================================ - -app.snowflake.com - -INVERT -[data-testid="avatar-block"] -.cy -.fz - -================================ - -app.tray.io - -INVERT -img[alt="user-avatar"] - -NO INVERT -img -video -:not(object):not(body) > embed -object -svg image -[style*="background:url"] -[style*="background: url"] -[style*="background-image:url"] -[style*="background-image: url"] -[background] -twitterwidget -.sr-reader -.sr-backdrop -iframe:fullscreen - -================================ - -askubuntu.com - -REMOVE BG -body - -================================ - -atlassian.net - -INVERT -.EditPage_withPanels_3Hr -.aui-toolbar -.editor -.toolbar-item -.conf-macro.output-inline -.conf-macro.output-display -.latexmath-center.confluenceTd - -================================ - -audible.com - -NO INVERT -img.adbl-cp-cursor - -================================ - -avisendanmark.dk - -INVERT -.logo - -================================ - -aws.amazon.com - -INVERT -#consoleNavHeader -.m-nav-header -.m-nav-panel-wrapper - -================================ - -baike.baidu.com - -INVERT -.formula - -================================ - -bart.gov/schedules - -NO INVERT -img - -================================ - -basho.com - -INVERT -#site-navigation -footer -header -.featured-news-wrapper -:not(.lang):not(#foot-logo)>img - -================================ - -bbc.com - -INVERT -div.orb-nav-section.orb-nav-blocks > a > img - -================================ - -berlingske.dk - -INVERT -.site-header__logo - -================================ - -bestbuy.com - -INVERT -#None > div > section > div.comparison-container.comparison-container-l.legacy-variant -.product-container - -================================ - -betterexplained.com - -NO INVERT -img.tex - -================================ - -bit-tech.net -forums.bit-tech.net - -INVERT -div#subNav -div#anotherSubNav -.footerContainer -div.footer -#bitFooter -.nodeIcon -li.navTab.forums.selected -li.navTab.xengallery.selected -li.navTab.members.selected - -REMOVE BG -#blurBackground -.background-image -#headerMover -#loginBar - -================================ - -bremeneins.de - -INVERT -.ardplayer-footer -.page-header - -================================ - -buxfer.com - -INVERT -.UIDesktopAppHeader -.UISidebarDrawer -.UISidebar - -================================ - -bytesloader.com - -INVERT -.footer-distributed -.navbar-inverse - -================================ - -central.bitdefender.com - -INVERT -#left_nav -.top_nav -#user_avatar - -NO INVERT -.logo -#left_nav * -.top_nav * - -================================ - -chatgpt.com - -INVERT -pre .dark - -================================ - -circleci.com - -INVERT -.css-1ibtrcs -.css-1lflngw - -================================ - -claude.ai - -INVERT -pre .code-block__code - -================================ - -cloud-catcher.squiddev.cc - -INVERT -button[class*="styles_action-button"] - -CSS -button[title*="computer off"] svg path { - fill: green !important; -} - -================================ - -cloud.databricks.com -pages.databricks.com -*.azuredatabricks.net - -INVERT -.figure -#sparkui-iframe-body #plan-viz-graph svg g.cluster rect -#sparkui-iframe-body #plan-viz-graph svg g.node rect -.cursor -div.ansiout - -CSS -text { - fill: ${black} !important; -} -.cm-string { - color: rgb(132, 179, 235) !important; -} -.cm-keyword { - color: rgb(232, 121, 172) !important; -} -.cm-variable-2 { - color: rgb(97, 215, 255) !important; -} -li.CodeMirror-hint { - font-family: Source Code Pro, Menlo, monospace !important; -} -span[role="presentation"] { - color: ${black} !important; -} -.CodeMirror-cursor { - border-left-color: ${black} !important; -} -.ansiout { - color: ${rgb(85, 85, 85)} !important; -} -.rm-modal { - background: var(--darkreader-neutral-background) !important; -} - -================================ - -cloud.digitalocean.com - -INVERT -.aurora-container-left - -================================ - -codebasehq.com - -INVERT -a.Project__link - -================================ - -codecombat.com - -INVERT -.modal-content -.map-background -.game-controls -.level-content -.modal-backdrop - -================================ - -coursera.org - -NO INVERT -.vjs-tech -.js-video - -================================ - -dailymail.co.uk - -NO INVERT -.masthead #logo - -================================ - -dash.cloudflare.com - -NO INVERT -.c_bt > div:nth-child(1) > svg:nth-child(1) -.c_k - -================================ - -dedication.pl - -INVERT -.wwzing - -================================ - -deezer.com - -INVERT -.page-sidebar - -NO INVERT -.player-cover * - -================================ - -detexify.kirelabs.org - -INVERT -.symbol img - -================================ - -dev.to - -INVERT -.js-code-highlight - -================================ - -devdocs.io - -NO INVERT -._theme-dark - -================================ - -developer.chrome.com - -CSS -mark, pre b { - background-color: ${#fe7} !important; -} - -================================ - -developer.mozilla.org - -INVERT -#nav-footer -.highlight-span -.readOnlyInline -#nav-sec -#toc -.socialaccount-providers -.toggle-container .current - -================================ - -developer.playfab.com - -INVERT -header - -================================ - -deviantart.com - -INVERT -#navbar-menu -#overhead-collect -.text-wrap -.thumb > .info -.mobileMenuWrapper -.tv150-tag -.hero -.hero-thumb -.hero-thumb > .info -.loggedOut -.minibrowse-mobile-paddles-container - -NO INVERT -.extra-info .avatar -.tt-crop > .tinythumb - -================================ - -devterms.io - -INVERT -.dark .text-gradient - -================================ - -disqus.com/embed/ - -INVERT -body.dark - -NO INVERT -body.dark * - -================================ - -docs.gamesparks.com - -INVERT -.side-menu -.home-menu -.hljs - -================================ - -docs.google.com - -INVERT -.jfk-palette-colorswatch -[aria-label^="Google Account"] -div[title="Profile"] -.kix-embeddedobject-image - -================================ - -docs.microsoft.com - -NO INVERT -.theme-dark -.theme_night - -================================ - -docs.unity3d.com - -INVERT -.header -.navbar-inverse - -================================ - -doodle.com - -INVERT -.d-footerContentContainer - -================================ - -draw.io - -INVERT -text - -CSS -body { - background-color: #151515 !important; -} - -================================ - -drive.google.com - -INVERT -[aria-label^="Showing viewer"] > [aria-label^="Displaying"] -[aria-label^="Showing viewer"] > [role="toolbar"] -[aria-label^="Showing viewer"] [role="button"][data-tooltip="Previous"] -[aria-label^="Showing viewer"] [role="button"][data-tooltip="Next"] -[aria-label^="Showing viewer"] [aria-label^="Page"] -[aria-label^="Showing viewer"] [aria-label^="Page"] + div -[aria-label^="No preview available"] -[aria-label^="No preview available"] ~ div -[aria-label^="There was a problem previewing"] -[aria-label^="There was a problem previewing"] ~ div -[aria-label^="Google Account"] -div[title="Profile"] - -================================ - -dsl.sk - -NO INVERT -#header img -#title_bar img -#bg > table > tbody > tr:nth-of-type(1) > td:nth-of-type(1) -img[src="images/article_perex.gif"] -img[src="/images/design/feedback_pos.png"] -img[src="/images/design/feedback_neg.png"] - -REMOVE BG -#menu -#bg > table > tbody > tr:nth-of-type(1) > td:nth-of-type(1) - -================================ - -duckduckgo.com - -INVERT -html:not(.dark-bg) #logo_homepage_link -html:not(.dark-bg) span.header__logo.js-logo-ddg - -NO INVERT -html.dark-bg -html.dark-bg * - -================================ - -duolingo.com - -CSS -._1xgcT, ._1bkpY { - color: rgb(109,19,130); -} - -================================ - -ebay.* - -INVERT -body[style*="background-image: url"] img -body[style*="background-image: url"] video -body[style*="background-image: url"] [style*="background-image: url"] - -NO INVERT -body[style*="background-image: url"] - -================================ - -ecosia.* - -INVERT -[class^="image-preview"] - -================================ - -electronics-tutorials.ws - -REMOVE BG -img - -================================ - -electronjs.org - -INVERT -header -.jumbotron-home -.highlight-dark - -================================ - -eman-physics.net - -NO INVERT -.middle_area img - -================================ - -exhentai.org -e-hentai.org - -INVERT -#gd1 -.gdtm > div - -================================ - -facebook.com - -INVERT -._3ixn -._2teu -.userContentWrapper canvas -._4lqu -._4lqt -._24ws -._1z0- -._19eb -._5rpb -._5rpu -._3t54 -._1-h1 -._3pit -._5asn -._1e8c -._2b-0 -._2w_u -._4who -._4g9v -._3s6x -._5b-_ -._2r86 -._2r84 ._62jm -._3ekx -._3uzm -._4-lv -._6m3 -._2t_q -._4-lv [role="button"] -._2ph- -._39n -._3u15 -.snowliftOverlay -.coverNoImage -.fbTimelineProfilePicSelector -.uiTooltipX -body.UIPage_LoggedOut #blueBarDOMInspector -body.UIPage_LoggedOut #blueBarDOMInspector .inputtext -canvas - -NO INVERT -.uiStreamStory video -.inputtext - -REMOVE BG -._4d3w .stageWrapper -._4lpe -.stage -.videoStage - -CSS -._2s1x ._2s1y { - background: #9BB5E8 !important; - border-bottom-color: #92A6CA !important; - color: black !important; -} -.uiContextualLayerParent { - box-shadow: none !important; -} - -================================ - -farside.ph.utexas.edu - -NO INVERT -img - -================================ - -feedback.unity3d.com - -INVERT -.header-wrapper -.navbar -.bg-ud - -================================ - -feedly.com - -INVERT -.people .photo -#feedlyUndoSign -#feedlySignPart -.pinContainer -.visual-overlay - -CSS -.entry-overlay { - background-color: rgba(220,220,220,0.5); -} - -================================ - -feynmanlectures.caltech.edu - -NO INVERT -img - -================================ - -fontspring.com - -NO INVERT -.grid6 .fullwidth - -================================ - -fortune.com - -CSS -#content div div p, -#content div div h2 { - color: var(--darkreader-neutral-text) !important; -} - -================================ - -forum.unity.com - -INVERT -.main-navigation -.sub-nav -.unity-logo -.icon -.sub-nav - -================================ - -freenet.de - -INVERT -.frn-header -.x-container-frn-head-toolbar - -CSS -.frn-header { - margin: 0px auto 0 0 !important; -} - -================================ - -gadgety.co.il - -INVERT -iframe[src^="https://www.youtube.com/embed"] - -================================ - -gamesparks.com - -INVERT -.main_header -.block_compatibility -.grid_overlay -.block_insights -.main_footer -.docs-hero - -================================ - -genk.vn - -INVERT -.ghw-bottom-header -.ghw-top-header - -================================ - -gigaom.com - -INVERT -.bg - -================================ - -github.com - -INVERT -.jumbotron-codelines -.bg-gray-dark -.bg-gray-dark .form-group -.js-project-header -.header-logo-invertocat -.notification-indicator -.label -.label-color -.tooltipped:not(.notification-indicator)::before -.tooltipped:not(.notification-indicator)::after -.HeaderNavlink [data-ga-click*="(Logged out)"] - -CSS -header { - background-color: #dae1e7 !important; -} -.markdown-body img { - background-color: transparent !important; -} -.Header .header-search-wrapper { - background-color: rgba(0, 0, 0, 0.125) !important; -} -.js-selected-navigation-item { - color: rgba(0, 0, 0, 0.75) !important; -} -header, -.HeaderNavlink, -.Header .header-search-input, -.Header .header-search-input::placeholder { - color: rgba(0, 0, 0, 0.75) !important; -} -.Header .header-search-scope { - border-right-color: #ccd7e1 !important; - color: rgba(0, 0, 0, 0.75) !important; -} -.select-menu-item.navigation-focus, -.select-menu-item.navigation-focus.selected, -.select-menu-item.navigation-focus.select-menu-action, -.select-menu-item.navigation-focus .description-inline { - background: #93c6ff !important; - color: black !important; -} -.HeaderMenu-link, -.select-menu-item.navigation-focus > .octicon, -.select-menu-item.navigation-focus.selected > .octicon, -.select-menu-item.navigation-focus.select-menu-action > .octicon, -.select-menu-item.navigation-focus .description-inline > .octicon { - color: black !important; -} - -================================ - -gitlab.* - -INVERT -gl-emoji -.navbar -.code.dark -.code.dark .notes_holder -.code.solarized-dark -.code.solarized-dark .notes_holder -.code.monokai -.code.monokai .notes_holder -.blame-commit - -NO INVERT -.ui_light .navbar - -CSS -#build-trace { - background: rgba(255, 255, 255, 0.7) !important; -} -pre code { - color: #777777 !important; -} - -================================ - -gls-pakete.de - -CSS -.tracking--status .status-box::before, .tracking--status .status-box::after { - z-index: 0 !important; -} -.tracking--status .status-box.status--complete.status--lastcomplete .status-box--tooltip, .tracking--status .status-box.status--current .status-box--tooltip { - transform: none !important; - position: absolute !important; - margin-bottom: 0px !important; - margin-top: -10px !important; - bottom: 0 !important; -} - -================================ - -google.* -google.*.* - -INVERT -.gb_2 -.gb_M -.gsri_a -.gbii -.gbip -.azp -.aLF-aPX-KP -.irc_bg -.RY3tic -canvas.circle -#app-container.vasquette.app-imagery-mode .widget-scene-canvas -#app-container.vasquette.app-globe-mode .widget-scene-canvas - -NO INVERT -.irc_mi -.irc_rii -.irc_mut -.act-icon-dark-gray -.amI -.amJ -.adk -.adj -[src*="ic_"] -[src*="black"] -.mL -.ajT -.hB -.hA -.mK -.mI -input[style*="data:image"] -img[src*="/books/content?"] - -CSS -.pI { - background: rgba(255, 255, 255, 0.7) !important; -} -.eB { - background: rgba(255, 255, 255, 0.4) !important; -} - -================================ - -granttree.co.uk - -INVERT -img -video -embed -.photo - -================================ - -habitica.com - -INVERT -nav.navbar -#app-header -.header -.quest-boss -.character-sprites -.item-content -.drawer-container .item -.npc_matt -.npc -.seasonal .background -.image -.habitica-emoji -.daniel_front -.world-boss -.dropdown-menu -.dropdown-menu .notification -.fade.show -.modal-content -.drawer-container - -NO INVERT -#app-header .character-sprites -.seasonal .background .npc - -================================ - -habr.com - -NO INVERT -img[src*="//tex.s2cms.ru/"] - -================================ - -hangouts.google.com - -INVERT -.g-Ue-ad -.g-Ue-v0h5Oe -.bdXzDb .pTh3n -.gb_Hc -.Ik -.gbii -.vm -.Ce1Y1c -.mUbCce - -NO INVERT -#gbq1 - -REMOVE BG -.g-Qx-eb - -CSS -.kFx1Ae-xdwExf-eb-m, -.g-Qx-r4m2rf-wZVHld { - display: none; -} - -================================ - -hardwaretester.com - -INVERT -.css-18zdsro.en092cd1 -.css-1yi8w9s.ex43mx610 -.css-2n3ua2.ex43mx611 -.css-13i6n5b.en092cd9 div canvas -.css-1jxoetp.eezel420 svg g text - -CSS -.css-13i6n5b, .css-1gmvfms, .css-oi07q0 { - box-shadow: rgba(251, 229, 208, 0.1) 0px 2px 5px; -} -.css-oi07q0 { - box-shadow: rgba(255, 255, 255, 0.2) 0px 5px 10px; -} - -================================ - -homestuck.com - -INVERT -.read-link -body.scratch -body.sweet -body:not(.scratch):not(.sweet) #animation_container -body:not(.scratch):not(.sweet) .nav-btn--center -body:not(.scratch):not(.sweet) #nav-container -body:not(.scratch):not(.sweet) #game_overlay -body.scratch #overlay -body.sweet #overlay -body.sweet #gamenav-container -body.scratch #site-search -body.sweet #site-search -body.scratch .o_chat-log-btn - -NO INVERT -body.scratch img -body.sweet img - -REMOVE BG -body:not(.scratch):not(.sweet) -body:not(.scratch):not(.sweet) .o_site-footer - -================================ - -hooktail.sub.jp -hooktail.org - -NO INVERT -#box img -.box img - -================================ - -html5rocks.com - -INVERT -.prettyprint - -================================ - -hysterical-amusement.surge.sh - -INVERT -body -.instructionsContainer -#liveOutput - -================================ - -ign.com - -INVERT -.video_embed_content-poster -.video_embed_content-poster-play-button - -REMOVE BG -#review-promo - -================================ - -imdb.com - -INVERT -#nb20 > div -#navbar-suggestionsearch -.caption_overlay -.vital -.slate_wrapper > .poster -.slate -.slate_fade_top -.slate_fade_bottom -.ab_hero -.ab_hero .ninja_image -.sub_nav -.app-links -#navMenuPro img -#proAd -.rec_default_image -#photo-container -#video-container - -NO INVERT -#navMenuPro -#photo-container img -#video-container img -#video-container video - -REMOVE BG -#nb20 - -================================ - -immutables.github.io - -INVERT -.illustration -.documentation .highlight - -================================ - -instagram.com - -INVERT -._mli86 -._cqw45._2pnef - -CSS -[role="dialog"] { - background-color: rgba(255, 255, 255, 0.5) !important; -} -._sxolz { - background-color: #fff !important; -} - -================================ - -io9.com - -CSS -html { - height: auto !important; -} - -================================ - -iopscience.iop.org - -NO INVERT -img[alt*="Equation"] - -================================ - -jappy.com -jappy.de - -INVERT -[class^="header"] -[class^="counter"] -[class^="parts"] -.rankBadge > span:nth-child(2) -.genericBackendLayer -.layerContent - -CSS -.collectableUser .parts { - position: relative; !important; -} -.emosToRedeem .entry .button { - margin-top: inherit; !important; -} -.tickerLayer .zoom { - position: relative; !important; -} - -================================ - -java.com - -INVERT -html #jvc0v2.bg1 .jvc0w1 -html #jvc0v2.bg2 .jvc0w1 -html #jvc0v2.bg3 .jvc0w1 -html #jvc0v2.bg4 .jvc0w1 -html #jvc0v2.bg5 .jvc0w1 - -================================ - -javarepl.com - -INVERT -.terminal-content - -REMOVE BG -body - -================================ - -jcrew.com - -CSS -.c-filters__refinement--label .refinement--label__checkbox svg path { - fill: transparent !important -} -.c-filters__refinement--label.is-selected .refinement--label__checkbox svg path { - fill: #fff !important -} - -================================ - -jeremykun.com - -NO INVERT -img[src*=".gif"] -img[src*=".png"] - -================================ - -jira.* -jira.*.* - -INVERT -.chart img -#logo - -================================ - -journalisten.dk - -INVERT -.top-logo - -================================ - -juejin.im - -NO INVERT -.equation - -================================ - -jyllands-posten.dk - -INVERT -.c-icon:not(.c-icon--fill-white) - -================================ - -khanacademy.org - -INVERT -.task-container .modal-backdrop - -================================ - -kickstarter.com - -CSS -::selection, ::-moz-selection { - background-color: #06E584 !important; -} - -================================ - -kinopoisk.ru - -INVERT -#GOWrapper -#external_header_wrapper -.header-fresh-search-partial-component_theme_default -.header-fresh-partial-component_theme_light -.footer-v2-partial-component__navigation-wrapper -.footer-v2-partial-component__bottom-navigation -.header-fresh-partial-component_theme_default .header-fresh-partial-component__dropdown -.info_title .gradient -.info_title .gradient_director -.movie-ticket-button -.movie-trailer-button -.randomMovie .name -.picAndNums -.promo-special -.flag -.main_info__quote -.feedback_img -.main_slider_arrow -#top_3banners -.yearsBox -.bottom_bg -.insert -.trailer_descr -.arrow -.play -.kp2-authapi-overlay -.kp2-authapi-paranja -.app__sticky-header -.search-suggest__content -.video-snippet__inner:after -.video-snippet__content -.tabs__tab_selected - -NO INVERT -.right-slider p -#top_3banners img -.zod img -.peopleInfo table img -.date img -.rating img - -REMOVE BG -#content_block -.box_block table table * - -CSS -.discovery-trailers-overlay { - background: rgba(255, 255, 255, 0.8) !important; -} -#popup_info_wrapper * { - color: #bbb !important; -} - -================================ - -kort.foroyakort.fo - -INVERT -.header-section > a:first-child -.container-section > .icon-node - -================================ - -kubernetes.io - -INVERT -section.header-hero -footer - -================================ - -last.fm - -INVERT -div.masthead-logo -ul.navlist-items -div.navlist-more-wrap -div.header-title-label-wrap -div.grid-items-cover-image-image::after -div.grid-items-item-details -div.featured-item-details -div.top-bar -div.features-footer-cover-image::after -p.features-footer-content -button.btn-primary -a.btn-primary -footer - -================================ - -launchpad.net - -INVERT -body - -NO INVERT -html -#launchpad-logo-and-name - -================================ - -lazada.com.my - -INVERT -.lzd-logo-content - -================================ - -learningsuite.byu.edu - -INVERT -.sidebarCalendar -.calendarEmpty -.white - -================================ - -libretexts.org - -NO INVERT -img - -================================ - -lifehacker.com - -INVERT -.videoCube a .thumbBlock - -CSS -html { - height: auto !important; -} - -================================ - -linerad.io - -INVERT -.header h1 img - -================================ - -linkedin.com - -INVERT -#top-header -#responsive-nav-scrollable - -NO INVERT -#top-header * -#responsive-nav-scrollable * - -================================ - -linternaute.fr - -INVERT -.dico_liste.grid_line > li - -CSS -.dico_liste_greyandwhite .dico_liste li a { - color: var(--darkreader-neutral-background); -} - -================================ - -mail.google.com - -CSS -form#aso_search_form_anchor td > div > input { - background: none !important; - filter: none !important; -} - -================================ - -mail.live.com - -INVERT -img:not([src="https://a.gfx.ms/rte_metro2.png"]) -video -object -.ComposeContent - -REMOVE BG -.ComposeContent - -================================ - -mail.protonmail.com - -CSS -.angular-squire-iframe body, -.angular-squire-iframe body div { - background: #0D0E12 !important; - color: #fff !important; -} - -================================ - -mailchimp.com - -INVERT -svg - -NO INVERT -.cke_button_icon - -================================ - -mathpages.com - -NO INVERT -img - -================================ - -mathprofi.ru -mathprofi.net - -NO INVERT -p img - -================================ - -mathworld.wolfram.com - -NO INVERT -img - -================================ - -matsci.org - -NO INVERT -.d-header #site-logo - -CSS -.category-logo.aspect-image img { - background-color: white !important; -} - -================================ - -mediawiki.org -*.mediawiki.org -wikibooks.org -*.wikibooks.org -wikidata.org -*.wikidata.org -wikiless.org -*.wikiless.org -wikimedia.org -*.wikimedia.org -wikimediafoundation.org -*.wikimediafoundation.org -wikinews.org -*.wikinews.org -wikipedia.org -*.wikipedia.org -wikiquote.org -*.wikiquote.org -wikisource.org -*.wikisource.org -wikiversity.org -*.wikiversity.org -wikivoyage.org -*.wikivoyage.org -wikiwand.com -*.wikiwand.com - -INVERT -#Vorlage_Infobox_Chemikalie > tbody > tr:nth-child(2) > td > a -.mw-ext-score -.mw-mmv-overlay -.mwe-popups-discreet > svg - -NO INVERT -.mwe-math-fallback-image-display -.mwe-math-fallback-image-inline -.mwe-popups image -img[alt^="Skeletal" i] -img[alt^="Structural" i] -img[src*="svg.png"] -img[src^="https://wikimedia.org/api/rest_v1/media/math/render/svg"] - -================================ - -medium.com - -NO INVERT -.canvas-renderer - -================================ - -meduza.io - -INVERT -.Header-root -.Footer-root - -================================ - -messenger.com - -INVERT -._4tsk - -================================ - -minhaclaro.claro.com.br - -INVERT -.header-black -.header-red-desktop-logada -#txt-busca-header-desktop - -================================ - -mixtape.moe/$ - -INVERT -body -.top > .menu -#upload-filelist -.file-url - -================================ - -mspaintadventures.ru - -INVERT -.row -.row img -.row object -.mspa_content_inner > .mspa_page_pictures -.adv_content_inner > .adv_page_pictures -.sidebar -.content -.footer -.copyright -.row:nth-of-type(1) > .header -.row:nth-of-type(1) > .header > .banner -.row:nth-of-type(1)[style*='width:940px'] div:not(.nav) - -NO INVERT -.nav img -#page > .content -.row > .row -.content > .content -.mspa_content_inner > .mspa_page_text img -.adv_content_inner > .adv_page_text img - -CSS -body { - background-color: #fff !important; -} -.sidebar { - border-color: #fff !important; -} -html, -.banner, -.row:nth-of-type(2), -.row:nth-of-type(4) { - background-color: #000 !important; -} - -================================ - -mullvad.net - -INVERT -#Logo - -================================ - -musescore.com - -INVERT -img[src*="https://musescore.com/static/musescore/scoredata/"] -img[src*="https://s3.ultimate-guitar.com/musescore.scoredata/"] - -================================ - -my.mail.ru/(music|mail|vk|ok|bk|list|gmail.com|inbox) - -INVERT -.b-head-layer_music -.b-head__menu__logo -.b-head__portal-navigation-wrapper -.b-history-event__videoevent-name -.b-music__genre__header__info -.b-music__playlists--tile__item__controls -.b-music__playlists--tile__item__stats -.b-music__section__content -.b-music__section__footer -.b-music__section__row -.b-music__top-artists__item__cover -.b-music__top-artists__item__info -.b-music__user-header__content -.b-music__user-header__controls -.b-music__user-header__title -.b-popup__fade -.btn-import -.filed-images -.l-music__menu-main -.l-music__portal-navigation -.l-music__search-form -.l-music__sidebar__playlist-playing > .cover -.playlists-block -.smiles -.songs-table__row__col__cover -.ui-button-main - -NO INVERT -html -.b-music__artist-header__content -.b-music__artist-header__cover -.b-music__section__cell -.fixed-menu > .b-music__section__footer -.l-mm__avatar -.l-music__player__song__cover -.playlists-block - -REMOVE BG -.b-music__user-header__bg--no-profile-cover - -CSS -.l-music { - background: #111; -} - -================================ - -myaccounts.capitalone.com - -INVERT -c1-ease-core-features-hero-bar - -================================ - -mydealz.de - -INVERT -.nav -.search -.threadTempBadge-icon -.emoji -.comment-image -.avatar -#footer -#thread-comments -.cept-action-user-profile -.popover--mainNav -.supportImage -.profileHeader -.cept-thread-image-link -.cept-thread-image-clickout - -NO INVERT -.cept-userProfile-avatar -.imgFrame-img - -CSS -.cept-dealBtn, .btn--facebook{ - letter-spacing: 0.5px; -} -.twitter-share-button{ - letter-spacing: 1.5px; -} -.text--color-red, .vote-temp--hot, .vote-temp--burn, .icon--plus{ - color: #ff3d00; -} - -================================ - -myfitnesspal.com - -INVERT -#fancybox-overlay - -================================ - -nagatabi-p.jimdofree.com - -NO INVERT -.cc-imagewrapper > img - -================================ - -neopets.com - -INVERT -#ban -#header - -================================ - -nodejs.org - -INVERT -#column2 -footer -header - -CSS -#column2.interior { - background: #212121; -} -#column2 ul { - background-color: #212121; -} - -================================ - -nvidia.com - -INVERT -.sub-brand-nav -.brandLink - -================================ - -onedrive.live.com -*.*.live.com -sharepoint.com -*.sharepoint.com - -NO INVERT -svg[style*="left: 0px"][style*="top: 0px"] image - -================================ - -onliner.by - -INVERT -.b-tile-main -.b-teasers-2__teaser -.news-tiles__subtitle -.b-opinions-main-2__tile -.news-header__top > .news-header__title -.b-tile-grad - -NO INVERT -.b-opinions-main-2__tile * -.b-teasers-2__teaser-i - -================================ - -op.gg - -INVERT -.__sprite - -================================ - -openclassrooms.com - -INVERT -code.ace - -NO INVERT -[class*=ace] * - -================================ - -opencollective.com - -INVERT -.CollectiveCover -.Footer -.MailChimpInputSection -.PublicFooter - -NO INVERT -.CollectiveCover * -.Footer * -.MailChimpInputSection * -.PublicFooter * - -================================ - -otakumode.com - -INVERT -.c-slick-image-viewer__main-image img - -================================ - -outlook.live.com - -INVERT -#O365_NavHeader -span.ms-Pivot-text -span.ms-Pivot-icon -.ms-FocusZone.ms-CommandBar - -================================ - -pagerduty.com - -REMOVE BG -body - -================================ - -pandora.com - -INVERT -#body -.contentbox -#detailContainer -#mainContent -.slidesBackground -.slidesForeground - -CSS -.skinContainer, -.slidesBackground, -.slidesForeground, -#trackDetail, -.track_detail_close { - background-color: black !important; -} -.fxCol-cont-1, -.jspContainer, -#trackInfoButtons { - background-color: white !important; -} -#brandingBar, -.contentnav, -.top { - background-color: #3d4043 !important; -} -#playerBar { - background-color: #0d0d0d !important; -} - -================================ - -paper.dropbox.com - -INVERT -.attrcomment.attrcomment - -================================ - -perforce.com - -INVERT -.title-bar -.sidenav-wrapper - -================================ - -photos.google.com - -INVERT -.DwJIde .QtDoYb svg - -CSS -.ZSTBVb, .DwJIde .NRbSyd { - background: white !important; -} - -================================ - -play.afreecatv.com - -INVERT -#afreecatv_player - -================================ - -playfab.com - -INVERT -.hero - -================================ - -poeaffix.net - -INVERT -#header - -NO INVERT -img - -================================ - -politiken.dk - -INVERT -.pol-logo - -================================ - -practice.geeksforgeeks.org - -INVERT -.ace_dark - -================================ - -prntscr.com -prnt.sc - -INVERT -.header - -================================ - -producthunt.com - -INVERT -.backgroundImage_1hK9M -.v-image - -NO INVERT -.backgroundImage_1hK9M * -.v-image * - -CSS -.post-detail--body--gallery-fullscreen--image { - background-color: black; -} - -================================ - -python.org - -INVERT -nav ul li > a -nav .tier-2 -#site-navigation -header -.featured-news-wrapper -:not(.lang):not(#foot-logo) > img - -NO INVERT -:not(.lang):not(#foot-logo) > img -#content > div > section > div - -================================ - -quora.com - -INVERT -.section_photo - -================================ - -reactjs.org - -INVERT -.gatsby-highlight -.css-mlkfzr -.css-17t02fm - -================================ - -readthedocs.io - -INVERT -.wy-nav-side -.rst-versions -li.current - -================================ - -reddit.com/r/(homestuck|Undertale) - -INVERT -#header -#header-bottom-right -#sr-header-area -.md h4 - -NO INVERT -#header-img - -REMOVE BG -body - -================================ - -reddit.com/r/europe - -INVERT -.flair - -================================ - -reddit.com/r/firefox - -INVERT -#header -#header-bottom-right - -================================ - -reddit.com/r/GlobalOffensive - -INVERT -#header -.side - -NO INVERT -#header * -.side * - -CSS -#mail::before { - display: none !important; -} - -================================ - -reddit.com/r/grandorder - -INVERT -#header -.flair - -================================ - -reddit.com/r/Paranormal - -INVERT -#header -#sr-header-area -#header-bottom-right - -================================ - -reddit.com/r/skyrimmods - -INVERT -#header -.infobar - -================================ - -reference.wolfram.com - -NO INVERT -img - -================================ - -regexr.com - -INVERT -canvas.highlights - -================================ - -rijnijssel.elo.education-online.nl - -NO INVERT -.app-left-sidebar - -================================ - -roblox.com - -INVERT -.thumbnail-span -.color-dot -.avatar-back - -NO INVERT -.thumbnail-span * -.avatar-back * - -CSS -.avatar-thumbnail .enable-three-dee { - background-color: #000000; - color: #FFFFFF; -} - -================================ - -ruby.sketchup.com -rubydoc.info - -INVERT -#navbar - -NO INVERT -#navbar a > img -#nav - -================================ - -scotch.io - -INVERT -.language-js -.language-javascript - -================================ - -script.google.com - -INVERT -.docs-icon-img-container - -================================ - -sellercentral.amazon.com - -CSS -.sc-header { - background: #5c00ff !important; -} -.small,.account-switch-icon { - fill: black !important; -} -.locale-icon-wrapper { - color: black !important; -} -.logo-container { - filter: brightness(0%) !important; -} - -================================ - -semlar.com - -INVERT -.thumbnail -.col-sm-2 -.img-rounded -#alert-list -.background-texture - -NO INVERT -img - -================================ - -shadertoy.com - -INVERT -canvas#demogl - -================================ - -shiyanlou.com - -INVERT -#display - -================================ - -shop.ubi.com - -INVERT -#topNavbar -#UplayHeader - -================================ - -signin.aws.amazon.com/saml - -INVERT -body - -NO INVERT -html - -================================ - -slack.com - -INVERT -.client_channels_list_container -figure -.member_preview_link.member_image - -NO INVERT -.client_channels_list_container * -figure * - -CSS -.emoji { - background-color: white; -} - -================================ - -slushpool.com - -INVERT -.siteHeader -.contentHeader -.contentSlider - -================================ - -spotify.com - -INVERT -img -video -embed -.hero -.header-main -.search-bar -#bg-wrap -#main - -================================ - -stackexchange.com -*.stackexchange.com -askubuntu.com -mathoverflow.net -serverfault.com -stackapps.com -superuser.com - -INVERT -.top-bar -button[class^="js-vote"] - -CSS -body, -#content { - background-image: none !important; - background-color: var(--darkreader-neutral-background) !important; - border-color: var(--darkreader-bg--theme-primary-custom) !important; -} -button[class^="js-vote"] { - border-color: var(--darkreader-dark-background) !important; -} - -================================ - -stackexchange.com -askubuntu.com -mathoverflow.com -serverfault.com -stackapps.com -stackoverflow.com -superuser.com - -CSS -#hlogo a { - text-indent: -256em !important; -} - -================================ - -stash.*.* - -INVERT -#logo - -================================ - -statlect.com - -NO INVERT -span.displayed > img -span.inm > img -#lensDIV img -.gs-image-box img.gs-image -img[alt="Table of Contents"] - -================================ - -stiften.dk - -INVERT -.logo - -================================ - -storytellphys.wordpress.com - -NO INVERT -img - -================================ - -studio.restlet.com -cloud.rest-let.com - -INVERT -.left-panel -.header -.editor-ace - -NO INVERT -.avatar - -================================ - -subscene.com - -INVERT -#logo - -================================ - -subscription.packtpub.com - -INVERT -.sidebar -.navbar -.cover-info-overlay - -================================ - -symfony.com - -INVERT -#sln -.header__top :not(img) -.highlighttable - -NO INVERT -[class^="sln-visible-"] > img:first-child - -================================ - -systemuicons.com - -INVERT -img - -================================ - -tagesschau.de - -INVERT -.header__logo__wortmarke svg - -================================ - -techpowerup.com - -CSS -.page-is-loading { - display: none !important; -} - -================================ - -teddit.net -teddit.ggc-project.de -teddit.kavin.rocks - -INVERT -.preview - -================================ - -terraform.io - -INVERT -.mega-nav-banner - -================================ - -terrytao.wordpress.com - -NO INVERT -img - -================================ - -theguardian.com - -CSS -gu-island li div { - background-color: ${white} !important; -} -aside, -section, -article, -article gu-island li div, -section gu-island li div { - background-color: ${white} !important; -} - -================================ - -theverge.com - -CSS -.\[\&_a\]\:shadow-underline-black a { - --darkreader-bg--tw-shadow: inset 0 -1px 0 0 #E7E6E2; -} - -================================ - -thomann.de -thomann.ae -thomannmusic.ch -thomannmusic.com -thomannmusic.no - -CSS -.fx-mix-blend-mode--multiply, -.product__image, -.fx-ranked-product__image-wrapper, -.navigator__item-image, -.navigator__item, -.mythomann-order-teaser__item-image, -.order-item__image-wrapper { - mix-blend-mode: normal !important; -} -.fx-content-category .category-header { - background-size: 100% 100%; -} - -================================ - -tianchi.aliyun.com - -NO INVERT -img - -================================ - -tn.gov - -INVERT -img[src$="tn-seal.png"] - -================================ - -toggl.com - -INVERT -.left-nav - -================================ - -tpondemand.com - -INVERT -.tau-cover-view__overlay -.tau-app-secondary-pane -.app-header -.uv-popover-content - -NO INVERT -.tau-app-secondary-pane * -.app-header * - -================================ - -tproger.ru - -INVERT -.top-duft-punk -#colophon - -NO INVERT -.text_logo img -.tmenu_icon - -================================ - -translate.yandex.ru - -CSS -.application.state-new .container_main, -.application.state-new .container_main[style], -.application.state-new .header { - border-bottom-color: transparent; -} - -================================ - -travis-ci.org - -INVERT -.job-log - -================================ - -trip101.com - -INVERT -#homeaway-searchbox-searchtext -.footer -.hero-full-screen -.hero-section -.name -.tabs -.tabs-content - -NO INVERT -.banner-img * -.logo * -.partners * -.partner-logo * -.tab-carrental * -.tab-hotel * -.tab-pa * -.tab-skyscanner * - -================================ - -tvtime.com - -NO INVERT -.page-sidebar * -.page-left * - -================================ - -tweakers.net - -INVERT -#menubar -#bottom -#tracker -#imageOverlay -#thumbContainer -.button -.hr - -NO INVERT -#thumbContainer * -#bottom .button - -================================ - -twitch.tv - -INVERT -#site_footer -#carousel_background::after -#left_col -.player -.badge -.social-column -.top-nav -.anon-front__featured-section -.side-nav -.footer - -NO INVERT -.player * -.social-column * -.top-nav * -.anon-front__featured-section * -.side-nav * -.footer * - -REMOVE BG -#carousel -.chat-container -.conversations-list-header -.dark_wrapper ul -html -.nav -.js-conversations-list -.js-conversations-list-bottom-bar -.rightcol-content > .top - -CSS -.chat_text_input, -.colon, -.dark_wrapper *, -.message, -.room-title, -.selected > a { - color:black !important; -} -.chat_text_input { - border: 1px solid black !important; -} - -================================ - -twitter.com - -INVERT -.tcu-textEllipse--multiline -.GalleryTweet .tweet -.Gallery-media -.DashboardProfileCard-bg -.SummaryCard-content - -NO INVERT -.Gallery-media * - -CSS -.gallery-overlay, -#permalink-overlay { - background: rgba(255, 255, 255, 0.7) !important; -} - -================================ - -ubi.com - -REMOVE BG -html -body - -================================ - -unicode.org - -INVERT -.chars - -================================ - -unicodelookup.com - -CSS -body { - background-color: #FFF !important; -} - -================================ - -unity3d.com - -INVERT -.main-navigation -.sub-nav -.wrapper -.unity-logo -.icon -.main-footer - -================================ - -unity3d.com/learn - -INVERT -.main-navigation -.sub-nav -.wrapper -.unity-logo -.bg-instructors -.hero -.bg-workflow - -================================ - -unityhacks.com - -INVERT -#unityhacks_sidebar -#exposeMask -#logoBlock -#navigation -#moderatorBar -.xenOverlay .sectionMain .heading overlayOnly -.banner_owner -.banner_staff -.banner_supportleader -.banner_supporter -.banner_partner -.banner_designer -.banner_promoter -.banner_honorable -.banner_premium -.messageHeading -.subHeading -.ToggleTrigger -.prefix -.PopupOpen -.categoryStrip -.secondaryContent h3 -.LTR -.callToAction -.xenOverlay .section .heading -.xenTooltip -.redactor_dropdown -.errorOverlay -.sectionHeaders -.button -[title="Unread messages"] -footer - -NO INVERT -#logo * -#taigachat_toolbar * -.listItemText h3 -.pollBlock .pollResult div -.pollBlock .pollResult h3 - -================================ - -vergil.chemistry.gatech.edu/notes - -NO INVERT -img - -================================ - -virtua.speedtestcustom.com - -NO INVERT -.branding - -================================ - -vk.com - -INVERT -.videoplayer -.videoplayer_media -.videoplayer_timeline_preview -.mv_chat -.mv_playlist -.mv_playlist_controls -#VideoLayerInfo__topControls -.page_album_title -.article_snippet__fade -.article_snippet__info -.article_snippet__read_btn -#layer_bg -#box_layer_bg -#pv_more_acts_tt -.login_app_devices -.friends_import_icon -.articleSnippet__inner -.articleSnippet_button -#z_photoview -.vv_summary -.thumb_map:after -.input_back_wrap[style*=none] ~ #ts_input -.audio_page_player_play .icon -.page_video_play_icon -.apps_featured_thumb_content -[class^=apps_featured]:before -.apps_frtt_photo -.apps_frtt_level -.settings_separated_row_iconed:before -.owner_photo_bubble_wrap -.tt_black -.tt_w.tt_black -.box_title -.box_layer_wrap -#box_loader -.chat_tab_close -#notifiers_wrap -.notifier_image_wrap -.doc_ext -.doc_title -.like_tt::after -.audio_row__cover_back -.poster__text -.emoji_smiles_row -.Reaction - -NO INVERT -.mv_chat * -.mv_playlist * -#z_photoview img -.box_grey .box_title - -REMOVE BG -.mv_layer_bg -.pv_bottom_info -.pv_img_area_wrap -.vv_body -.like_tt - -CSS -.pv_bottom_info *, -.like_tt { - color: #000 !important; -} -#pv_more_acts_tt * { - color: #eee !important; -} -#top_notify_wrap, -#audio_layer_tt { - box-shadow: none; -} -.chat_onl_inner { - background-color: #dae1e8 !important; -} -.chat_tab_wrap:hover { - background-color: #ccd5de !important; -} -.photos_row { - background-color: #000 !important; - border-color: #000 !important; -} - -================================ - -vocabolario.sns.it - -INVERT -img[src] - -NO INVERT -body[background] - -================================ - -vuejs.org - -INVERT -.content -pre -h3 -p - -NO INVERT -img - -================================ - -w3schools.com - -INVERT -#topnav - -================================ - -wallet.trezor.io - -INVERT -.page-header -.qr-code - -REMOVE BG -.qr-code - -================================ - -web.telegram.org - -INVERT -.im_dialog_unread -.icon-message-status -.dropdown-toggle -.icon-tg-title - -================================ - -web.whatsapp.com - -INVERT -.qrcode .icon-logo - -CSS -.qrcode { - border: 8px solid black; -} - -================================ - -wikiwand.com - -REMOVE BG -img - -================================ - -wolfram.com - -NO INVERT -.numberedequation -.displayformula -.inlineformula - -================================ - -wolframalpha.com - -NO INVERT -img - -================================ - -wolfy.net - -NO INVERT -.Skin_avatarPreviewBox__nCPmC -.Categories_skin__in1J0 -.MenuElement_skin__pUf6L - -================================ - -xfree86.org - -NO INVERT -img[src*=".png"] - -================================ - -yandex.* - -INVERT -body.b-page_theme_pure_night -[class*="icon_moon_"] -.favicon -.weather__icon -.traffic__icon -.dist-popup__image -.footer_distro_yes -.serp-footer -.distro__icon -.services-big__item_icon -.services-all__icon -.popup2:before -html.i-ua_swipe_yes .informers7__icon -html.i-ua_swipe_yes .zen__item-domain -html.i-ua_swipe_yes .zen__item-title -html.i-ua_swipe_yes .teaser__service-bg -html.i-ua_swipe_yes .stream-intro -html.i-ua_swipe_yes .edadeal -html.i-ua_swipe_yes .afisha -html.i-ua_swipe_yes .services__icon -html.i-ua_swipe_yes .menu2__list - -NO INVERT -body.b-page_theme_pure_night * -html.i-ua_swipe_yes .stream-intro__vod-preview -html.i-ua_swipe_yes .edadeal__item-img -html.i-ua_swipe_yes .afisha__film-image - -REMOVE BG -html.i-ua_swipe_yes .mini-suggest__popup-spacer -html.i-ua_swipe_yes .menu2__container - -================================ - -youtube.com - -INVERT -html[dark=true] #scrim -.html5-video-player -.has-custom-banner -#theater-background -#watch-appbar-playlist -html:not([dark=true]) #header > #background -html:not([dark=true]) #links-holder yt-formatted-string -html:not([dark=true]) #subscribe-button -ytd-thumbnail-overlay-time-status-renderer -ytd-thumbnail-overlay-toggle-button-renderer -paper-toast -ytd-masthead[dark] -html:not([dark=true]) ytd-masthead[dark] #avatar-btn - -NO INVERT -html[dark=true] -html[dark=true] * -.html5-video-player * -.has-custom-banner * -#watch-appbar-playlist * - -CSS -#scrim.app-drawer { - background: rgba(255, 255, 255, 0.5); -} -#player-theater-container { - background: none !important; -} - -================================ - -yscec.yonsei.ac.kr - -INVERT -iframe -#page-sidebar diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/config/static-themes.config b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/config/static-themes.config deleted file mode 100644 index c8f3c17..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/config/static-themes.config +++ /dev/null @@ -1,174 +0,0 @@ -* - -NEUTRAL BG -html -body -:not([style*="background-color:"]):not(iframe) - -NEUTRAL TEXT -html -body -:not([style*="color:"]) -.sr-reader *:not([class*='sr-pivot']) - -RED TEXT -h1:not([style*="color:"]) -h2:not([style*="color:"]) -h3:not([style*="color:"]) -h4:not([style*="color:"]) -h5:not([style*="color:"]) -h6:not([style*="color:"]) - -GREEN TEXT -cite:not([style*="color:"]) - -BLUE BG ACTIVE -input:not([style*="background-color:"]) -textarea:not([style*="background-color:"]) -button:not([style*="background-color:"]) -[role="button"] - -BLUE TEXT ACTIVE -a:not([style*="color:"]) - -BLUE BORDER -:not([style*="border-color:"]) -::before -::after - -FADE BG -div:empty -.sr-reader * -.sr-backdrop - -FADE TEXT -input::placeholder -textarea::placeholder - -NO IMAGE -input:not([style*="background-image:"]) -textarea:not([style*="background-image:"]) - -================================ - -github.com - -RED TEXT -.pl-k - -GREEN BG ACTIVE -.btn-primary - -GREEN TEXT -.pl-c - -BLUE TEXT -.pl-s -.pl-pds -.pl-c1 - -NO IMAGE -.btn -.btn-primary - -================================ - -imdb.com - -RED BG -.jw-progress:empty -.jw-knob:empty - -FADE BG -.MediaSheetstyles__MediaContainer-sc-1warcg6-0 -.MediaSheetstyles__MediaContentContainer-sc-1warcg6-1 - -TRANSPARENT BG -.ipc-lockup-overlay -.ipc-lockup-overlay__content * -.jw-captions -.jw-controls -.jw-controls * -.jw-controls-backdrop:empty -.jw-overlays -.MediaSheetstyles__MediaContentContainer-sc-1warcg6-1 div -.Slate__VideoPreviewContainer-ss6ccs-3 -.styles__MediaViewerTouchHandler-sc-6t1jw8-5 - -================================ - -mail.google.com - -RED BG ACTIVE -.T-I-KE - -NO IMAGE -.T-I-KE - -================================ - -nationstates.net - -TRANSPARENT BG -.paperclip - -================================ - -opencollective.com - -BLUE BG ACTIVE -.TierCard .action - -TRANSPARENT BG -.CollectiveCover .content - -================================ - -reddit.com - -RED BG -.reddit-video-player-root .seek-bar-progress -.reddit-video-player-root .volume-slider-progress -.reddit-video-player-root .volume-slider-thumb - -BLUE BG -.reddit-video-player-root .seek-bar-buffered -.reddit-video-player-root .volume-slider-track - -FADE BG -.reddit-video-player-root .ended-controls -.reddit-video-player-root .playback-controls - -TRANSPARENT BG -.reddit-video-player-root video + div -.reddit-video-player-root .ended-controls :not(button) -.reddit-video-seek-bar-root -.reddit-video-player-root .playback-controls .control-button - -================================ - -youtube.com - -RED BG -.ytp-swatch-background-color.ytp-swatch-background-color - -BLUE BG -.ytp-load-progress:empty - -FADE BG -.ytp-chrome-top -.ytp-chrome-bottom -.ytp-pause-overlay - -TRANSPARENT BG -#previewbar -.ytp-button.ytp-button -.ytp-chrome-bottom * -.ytp-chrome-top * -.ytp-gradient-bottom:empty -.ytp-gradient-top:empty -.ytp-pause-overlay * -.ytp-progress-bar-padding:empty -.ytp-scrubber-container -.ytp-timed-markers-container:empty -.ytp-tooltip-text-wrapper diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_128.png b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_128.png deleted file mode 100644 index 576e864..0000000 Binary files a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_128.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_16.png b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_16.png deleted file mode 100644 index 1e2d1b7..0000000 Binary files a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_16.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_48.png b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_48.png deleted file mode 100644 index c2e3737..0000000 Binary files a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_48.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_active_19.png b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_active_19.png deleted file mode 100644 index 99184c8..0000000 Binary files a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_active_19.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_active_38.png b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_active_38.png deleted file mode 100644 index c684bb4..0000000 Binary files a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_active_38.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_inactive_19.png b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_inactive_19.png deleted file mode 100644 index 6f78e64..0000000 Binary files a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_inactive_19.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_inactive_38.png b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_inactive_38.png deleted file mode 100644 index 82d6951..0000000 Binary files a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/icons/dr_inactive_38.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/inject/color-scheme-watcher.js b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/inject/color-scheme-watcher.js deleted file mode 100644 index 60cf858..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/inject/color-scheme-watcher.js +++ /dev/null @@ -1,265 +0,0 @@ -(function () { - "use strict"; - - const isNavigatorDefined = typeof navigator !== "undefined"; - const userAgent = isNavigatorDefined - ? navigator.userAgentData && - Array.isArray(navigator.userAgentData.brands) - ? navigator.userAgentData.brands - .map( - (brand) => `${brand.brand.toLowerCase()} ${brand.version}` - ) - .join(" ") - : navigator.userAgent.toLowerCase() - : "some useragent"; - const platform = isNavigatorDefined - ? navigator.userAgentData && - typeof navigator.userAgentData.platform === "string" - ? navigator.userAgentData.platform.toLowerCase() - : navigator.platform.toLowerCase() - : "some platform"; - userAgent.includes("vivaldi"); - userAgent.includes("yabrowser"); - userAgent.includes("opr") || userAgent.includes("opera"); - userAgent.includes("edg"); - platform.startsWith("win"); - platform.startsWith("mac"); - isNavigatorDefined && navigator.userAgentData - ? navigator.userAgentData.mobile - : userAgent.includes("mobile"); - (isNavigatorDefined && - navigator.userAgentData && - ["Linux", "Android"].includes(navigator.userAgentData.platform)) || - platform.startsWith("linux"); - (() => { - const m = userAgent.match(/chrom(?:e|ium)(?:\/| )([^ ]+)/); - if (m && m[1]) { - return m[1]; - } - return ""; - })(); - (() => { - const m = userAgent.match(/(?:firefox|librewolf)(?:\/| )([^ ]+)/); - if (m && m[1]) { - return m[1]; - } - return ""; - })(); - (() => { - try { - document.querySelector(":defined"); - return true; - } catch (err) { - return false; - } - })(); - - let query = null; - const onChange = ({matches}) => - listeners.forEach((listener) => listener(matches)); - const listeners = new Set(); - function runColorSchemeChangeDetector(callback) { - listeners.add(callback); - if (query) { - return; - } - query = matchMedia("(prefers-color-scheme: dark)"); - { - query.addEventListener("change", onChange); - } - } - function stopColorSchemeChangeDetector() { - if (!query || !onChange) { - return; - } - { - query.removeEventListener("change", onChange); - } - listeners.clear(); - query = null; - } - const isSystemDarkModeEnabled = () => - (query || matchMedia("(prefers-color-scheme: dark)")).matches; - - var MessageTypeUItoBG; - (function (MessageTypeUItoBG) { - MessageTypeUItoBG["GET_DATA"] = "ui-bg-get-data"; - MessageTypeUItoBG["GET_DEVTOOLS_DATA"] = "ui-bg-get-devtools-data"; - MessageTypeUItoBG["SUBSCRIBE_TO_CHANGES"] = - "ui-bg-subscribe-to-changes"; - MessageTypeUItoBG["UNSUBSCRIBE_FROM_CHANGES"] = - "ui-bg-unsubscribe-from-changes"; - MessageTypeUItoBG["CHANGE_SETTINGS"] = "ui-bg-change-settings"; - MessageTypeUItoBG["SET_THEME"] = "ui-bg-set-theme"; - MessageTypeUItoBG["TOGGLE_ACTIVE_TAB"] = "ui-bg-toggle-active-tab"; - MessageTypeUItoBG["MARK_NEWS_AS_READ"] = "ui-bg-mark-news-as-read"; - MessageTypeUItoBG["MARK_NEWS_AS_DISPLAYED"] = - "ui-bg-mark-news-as-displayed"; - MessageTypeUItoBG["LOAD_CONFIG"] = "ui-bg-load-config"; - MessageTypeUItoBG["APPLY_DEV_DYNAMIC_THEME_FIXES"] = - "ui-bg-apply-dev-dynamic-theme-fixes"; - MessageTypeUItoBG["RESET_DEV_DYNAMIC_THEME_FIXES"] = - "ui-bg-reset-dev-dynamic-theme-fixes"; - MessageTypeUItoBG["APPLY_DEV_INVERSION_FIXES"] = - "ui-bg-apply-dev-inversion-fixes"; - MessageTypeUItoBG["RESET_DEV_INVERSION_FIXES"] = - "ui-bg-reset-dev-inversion-fixes"; - MessageTypeUItoBG["APPLY_DEV_STATIC_THEMES"] = - "ui-bg-apply-dev-static-themes"; - MessageTypeUItoBG["RESET_DEV_STATIC_THEMES"] = - "ui-bg-reset-dev-static-themes"; - MessageTypeUItoBG["COLOR_SCHEME_CHANGE"] = "ui-bg-color-scheme-change"; - MessageTypeUItoBG["HIDE_HIGHLIGHTS"] = "ui-bg-hide-highlights"; - })(MessageTypeUItoBG || (MessageTypeUItoBG = {})); - var MessageTypeBGtoUI; - (function (MessageTypeBGtoUI) { - MessageTypeBGtoUI["CHANGES"] = "bg-ui-changes"; - })(MessageTypeBGtoUI || (MessageTypeBGtoUI = {})); - var DebugMessageTypeBGtoUI; - (function (DebugMessageTypeBGtoUI) { - DebugMessageTypeBGtoUI["CSS_UPDATE"] = "debug-bg-ui-css-update"; - DebugMessageTypeBGtoUI["UPDATE"] = "debug-bg-ui-update"; - })(DebugMessageTypeBGtoUI || (DebugMessageTypeBGtoUI = {})); - var MessageTypeBGtoCS; - (function (MessageTypeBGtoCS) { - MessageTypeBGtoCS["ADD_CSS_FILTER"] = "bg-cs-add-css-filter"; - MessageTypeBGtoCS["ADD_DYNAMIC_THEME"] = "bg-cs-add-dynamic-theme"; - MessageTypeBGtoCS["ADD_STATIC_THEME"] = "bg-cs-add-static-theme"; - MessageTypeBGtoCS["ADD_SVG_FILTER"] = "bg-cs-add-svg-filter"; - MessageTypeBGtoCS["CLEAN_UP"] = "bg-cs-clean-up"; - MessageTypeBGtoCS["FETCH_RESPONSE"] = "bg-cs-fetch-response"; - MessageTypeBGtoCS["UNSUPPORTED_SENDER"] = "bg-cs-unsupported-sender"; - })(MessageTypeBGtoCS || (MessageTypeBGtoCS = {})); - var DebugMessageTypeBGtoCS; - (function (DebugMessageTypeBGtoCS) { - DebugMessageTypeBGtoCS["RELOAD"] = "debug-bg-cs-reload"; - })(DebugMessageTypeBGtoCS || (DebugMessageTypeBGtoCS = {})); - var MessageTypeCStoBG; - (function (MessageTypeCStoBG) { - MessageTypeCStoBG["COLOR_SCHEME_CHANGE"] = "cs-bg-color-scheme-change"; - MessageTypeCStoBG["DARK_THEME_DETECTED"] = "cs-bg-dark-theme-detected"; - MessageTypeCStoBG["DARK_THEME_NOT_DETECTED"] = - "cs-bg-dark-theme-not-detected"; - MessageTypeCStoBG["FETCH"] = "cs-bg-fetch"; - MessageTypeCStoBG["DOCUMENT_CONNECT"] = "cs-bg-document-connect"; - MessageTypeCStoBG["DOCUMENT_FORGET"] = "cs-bg-document-forget"; - MessageTypeCStoBG["DOCUMENT_FREEZE"] = "cs-bg-document-freeze"; - MessageTypeCStoBG["DOCUMENT_RESUME"] = "cs-bg-document-resume"; - })(MessageTypeCStoBG || (MessageTypeCStoBG = {})); - var DebugMessageTypeCStoBG; - (function (DebugMessageTypeCStoBG) { - DebugMessageTypeCStoBG["LOG"] = "debug-cs-bg-log"; - })(DebugMessageTypeCStoBG || (DebugMessageTypeCStoBG = {})); - var MessageTypeCStoUI; - (function (MessageTypeCStoUI) { - MessageTypeCStoUI["EXPORT_CSS_RESPONSE"] = "cs-ui-export-css-response"; - })(MessageTypeCStoUI || (MessageTypeCStoUI = {})); - var MessageTypeUItoCS; - (function (MessageTypeUItoCS) { - MessageTypeUItoCS["EXPORT_CSS"] = "ui-cs-export-css"; - })(MessageTypeUItoCS || (MessageTypeUItoCS = {})); - - let documentVisibilityListener = null; - let documentIsVisible_ = !document.hidden; - const listenerOptions = { - capture: true, - passive: true - }; - function watchForDocumentVisibility() { - document.addEventListener( - "visibilitychange", - documentVisibilityListener, - listenerOptions - ); - window.addEventListener( - "pageshow", - documentVisibilityListener, - listenerOptions - ); - window.addEventListener( - "focus", - documentVisibilityListener, - listenerOptions - ); - } - function stopWatchingForDocumentVisibility() { - document.removeEventListener( - "visibilitychange", - documentVisibilityListener, - listenerOptions - ); - window.removeEventListener( - "pageshow", - documentVisibilityListener, - listenerOptions - ); - window.removeEventListener( - "focus", - documentVisibilityListener, - listenerOptions - ); - } - function setDocumentVisibilityListener(callback) { - const alreadyWatching = Boolean(documentVisibilityListener); - documentVisibilityListener = () => { - if (!document.hidden) { - removeDocumentVisibilityListener(); - callback(); - documentIsVisible_ = true; - } - }; - if (!alreadyWatching) { - watchForDocumentVisibility(); - } - } - function removeDocumentVisibilityListener() { - stopWatchingForDocumentVisibility(); - documentVisibilityListener = null; - } - function documentIsVisible() { - return documentIsVisible_; - } - - function cleanup() { - stopColorSchemeChangeDetector(); - removeDocumentVisibilityListener(); - } - function sendMessage(message) { - const responseHandler = (response) => { - if (response === "unsupportedSender") { - cleanup(); - } - }; - try { - const promise = chrome.runtime.sendMessage(message); - promise.then(responseHandler).catch(cleanup); - } catch (error) { - if (error.message === "Extension context invalidated.") { - console.log( - "Dark Reader: instance of old CS detected, cleaning up." - ); - cleanup(); - } else { - console.log( - "Dark Reader: unexpected error during message passing." - ); - } - } - } - function notifyOfColorScheme(isDark) { - sendMessage({ - type: MessageTypeCStoBG.COLOR_SCHEME_CHANGE, - data: {isDark} - }); - } - function updateEventListeners() { - notifyOfColorScheme(isSystemDarkModeEnabled()); - if (documentIsVisible()) { - runColorSchemeChangeDetector(notifyOfColorScheme); - } else { - stopColorSchemeChangeDetector(); - } - } - setDocumentVisibilityListener(updateEventListeners); - updateEventListeners(); -})(); diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/inject/fallback.js b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/inject/fallback.js deleted file mode 100644 index e6c51e9..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/inject/fallback.js +++ /dev/null @@ -1,45 +0,0 @@ -(function () { - "use strict"; - - if ( - document.documentElement instanceof HTMLHtmlElement && - matchMedia("(prefers-color-scheme: dark)").matches && - !document.querySelector(".darkreader--fallback") && - !document.querySelector(".darkreader") - ) { - const css = [ - "html, body, body :not(iframe) {", - " background-color: #181a1b !important;", - " border-color: #776e62 !important;", - " color: #e8e6e3 !important;", - "}", - "html, body {", - " opacity: 1 !important;", - " transition: none !important;", - "}", - 'div[style*="background-color: rgb(135, 135, 135)"] {', - " background-color: #878787 !important;", - "}" - ].join("\n"); - const fallback = document.createElement("style"); - fallback.classList.add("darkreader"); - fallback.classList.add("darkreader--fallback"); - fallback.media = "screen"; - fallback.textContent = css; - if (document.head) { - document.head.append(fallback); - } else { - const root = document.documentElement; - root.append(fallback); - const observer = new MutationObserver(() => { - if (document.head) { - observer.disconnect(); - if (fallback.isConnected) { - document.head.append(fallback); - } - } - }); - observer.observe(root, {childList: true}); - } - } -})(); diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/inject/index.js b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/inject/index.js deleted file mode 100644 index 00000a6..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/inject/index.js +++ /dev/null @@ -1,7715 +0,0 @@ -(function () { - "use strict"; - - var MessageTypeUItoBG; - (function (MessageTypeUItoBG) { - MessageTypeUItoBG["GET_DATA"] = "ui-bg-get-data"; - MessageTypeUItoBG["GET_DEVTOOLS_DATA"] = "ui-bg-get-devtools-data"; - MessageTypeUItoBG["SUBSCRIBE_TO_CHANGES"] = - "ui-bg-subscribe-to-changes"; - MessageTypeUItoBG["UNSUBSCRIBE_FROM_CHANGES"] = - "ui-bg-unsubscribe-from-changes"; - MessageTypeUItoBG["CHANGE_SETTINGS"] = "ui-bg-change-settings"; - MessageTypeUItoBG["SET_THEME"] = "ui-bg-set-theme"; - MessageTypeUItoBG["TOGGLE_ACTIVE_TAB"] = "ui-bg-toggle-active-tab"; - MessageTypeUItoBG["MARK_NEWS_AS_READ"] = "ui-bg-mark-news-as-read"; - MessageTypeUItoBG["MARK_NEWS_AS_DISPLAYED"] = - "ui-bg-mark-news-as-displayed"; - MessageTypeUItoBG["LOAD_CONFIG"] = "ui-bg-load-config"; - MessageTypeUItoBG["APPLY_DEV_DYNAMIC_THEME_FIXES"] = - "ui-bg-apply-dev-dynamic-theme-fixes"; - MessageTypeUItoBG["RESET_DEV_DYNAMIC_THEME_FIXES"] = - "ui-bg-reset-dev-dynamic-theme-fixes"; - MessageTypeUItoBG["APPLY_DEV_INVERSION_FIXES"] = - "ui-bg-apply-dev-inversion-fixes"; - MessageTypeUItoBG["RESET_DEV_INVERSION_FIXES"] = - "ui-bg-reset-dev-inversion-fixes"; - MessageTypeUItoBG["APPLY_DEV_STATIC_THEMES"] = - "ui-bg-apply-dev-static-themes"; - MessageTypeUItoBG["RESET_DEV_STATIC_THEMES"] = - "ui-bg-reset-dev-static-themes"; - MessageTypeUItoBG["COLOR_SCHEME_CHANGE"] = "ui-bg-color-scheme-change"; - MessageTypeUItoBG["HIDE_HIGHLIGHTS"] = "ui-bg-hide-highlights"; - })(MessageTypeUItoBG || (MessageTypeUItoBG = {})); - var MessageTypeBGtoUI; - (function (MessageTypeBGtoUI) { - MessageTypeBGtoUI["CHANGES"] = "bg-ui-changes"; - })(MessageTypeBGtoUI || (MessageTypeBGtoUI = {})); - var DebugMessageTypeBGtoUI; - (function (DebugMessageTypeBGtoUI) { - DebugMessageTypeBGtoUI["CSS_UPDATE"] = "debug-bg-ui-css-update"; - DebugMessageTypeBGtoUI["UPDATE"] = "debug-bg-ui-update"; - })(DebugMessageTypeBGtoUI || (DebugMessageTypeBGtoUI = {})); - var MessageTypeBGtoCS; - (function (MessageTypeBGtoCS) { - MessageTypeBGtoCS["ADD_CSS_FILTER"] = "bg-cs-add-css-filter"; - MessageTypeBGtoCS["ADD_DYNAMIC_THEME"] = "bg-cs-add-dynamic-theme"; - MessageTypeBGtoCS["ADD_STATIC_THEME"] = "bg-cs-add-static-theme"; - MessageTypeBGtoCS["ADD_SVG_FILTER"] = "bg-cs-add-svg-filter"; - MessageTypeBGtoCS["CLEAN_UP"] = "bg-cs-clean-up"; - MessageTypeBGtoCS["FETCH_RESPONSE"] = "bg-cs-fetch-response"; - MessageTypeBGtoCS["UNSUPPORTED_SENDER"] = "bg-cs-unsupported-sender"; - })(MessageTypeBGtoCS || (MessageTypeBGtoCS = {})); - var DebugMessageTypeBGtoCS; - (function (DebugMessageTypeBGtoCS) { - DebugMessageTypeBGtoCS["RELOAD"] = "debug-bg-cs-reload"; - })(DebugMessageTypeBGtoCS || (DebugMessageTypeBGtoCS = {})); - var MessageTypeCStoBG; - (function (MessageTypeCStoBG) { - MessageTypeCStoBG["COLOR_SCHEME_CHANGE"] = "cs-bg-color-scheme-change"; - MessageTypeCStoBG["DARK_THEME_DETECTED"] = "cs-bg-dark-theme-detected"; - MessageTypeCStoBG["DARK_THEME_NOT_DETECTED"] = - "cs-bg-dark-theme-not-detected"; - MessageTypeCStoBG["FETCH"] = "cs-bg-fetch"; - MessageTypeCStoBG["DOCUMENT_CONNECT"] = "cs-bg-document-connect"; - MessageTypeCStoBG["DOCUMENT_FORGET"] = "cs-bg-document-forget"; - MessageTypeCStoBG["DOCUMENT_FREEZE"] = "cs-bg-document-freeze"; - MessageTypeCStoBG["DOCUMENT_RESUME"] = "cs-bg-document-resume"; - })(MessageTypeCStoBG || (MessageTypeCStoBG = {})); - var DebugMessageTypeCStoBG; - (function (DebugMessageTypeCStoBG) { - DebugMessageTypeCStoBG["LOG"] = "debug-cs-bg-log"; - })(DebugMessageTypeCStoBG || (DebugMessageTypeCStoBG = {})); - var MessageTypeCStoUI; - (function (MessageTypeCStoUI) { - MessageTypeCStoUI["EXPORT_CSS_RESPONSE"] = "cs-ui-export-css-response"; - })(MessageTypeCStoUI || (MessageTypeCStoUI = {})); - var MessageTypeUItoCS; - (function (MessageTypeUItoCS) { - MessageTypeUItoCS["EXPORT_CSS"] = "ui-cs-export-css"; - })(MessageTypeUItoCS || (MessageTypeUItoCS = {})); - - function logInfo(...args) {} - function logWarn(...args) {} - function logInfoCollapsed(title, ...args) {} - - function throttle(callback) { - let pending = false; - let frameId = null; - let lastArgs; - const throttled = (...args) => { - lastArgs = args; - if (frameId) { - pending = true; - } else { - callback(...lastArgs); - frameId = requestAnimationFrame(() => { - frameId = null; - if (pending) { - callback(...lastArgs); - pending = false; - } - }); - } - }; - const cancel = () => { - cancelAnimationFrame(frameId); - pending = false; - frameId = null; - }; - return Object.assign(throttled, {cancel}); - } - function createAsyncTasksQueue() { - const tasks = []; - let frameId = null; - function runTasks() { - let task; - while ((task = tasks.shift())) { - task(); - } - frameId = null; - } - function add(task) { - tasks.push(task); - if (!frameId) { - frameId = requestAnimationFrame(runTasks); - } - } - function cancel() { - tasks.splice(0); - cancelAnimationFrame(frameId); - frameId = null; - } - return {add, cancel}; - } - - function isArrayLike(items) { - return items.length != null; - } - function forEach(items, iterator) { - if (isArrayLike(items)) { - for (let i = 0, len = items.length; i < len; i++) { - iterator(items[i]); - } - } else { - for (const item of items) { - iterator(item); - } - } - } - function push(array, addition) { - forEach(addition, (a) => array.push(a)); - } - function toArray(items) { - const results = []; - for (let i = 0, len = items.length; i < len; i++) { - results.push(items[i]); - } - return results; - } - - function getDuration(time) { - let duration = 0; - if (time.seconds) { - duration += time.seconds * 1000; - } - if (time.minutes) { - duration += time.minutes * 60 * 1000; - } - if (time.hours) { - duration += time.hours * 60 * 60 * 1000; - } - if (time.days) { - duration += time.days * 24 * 60 * 60 * 1000; - } - return duration; - } - - function createNodeAsap({ - selectNode, - createNode, - updateNode, - selectTarget, - createTarget, - isTargetMutation - }) { - const target = selectTarget(); - if (target) { - const prev = selectNode(); - if (prev) { - updateNode(prev); - } else { - createNode(target); - } - } else { - const observer = new MutationObserver((mutations) => { - const mutation = mutations.find(isTargetMutation); - if (mutation) { - unsubscribe(); - const target = selectTarget(); - selectNode() || createNode(target); - } - }); - const ready = () => { - if (document.readyState !== "complete") { - return; - } - unsubscribe(); - const target = selectTarget() || createTarget(); - selectNode() || createNode(target); - }; - const unsubscribe = () => { - document.removeEventListener("readystatechange", ready); - observer.disconnect(); - }; - if (document.readyState === "complete") { - ready(); - } else { - document.addEventListener("readystatechange", ready); - observer.observe(document, {childList: true, subtree: true}); - } - } - } - function removeNode(node) { - node && node.parentNode && node.parentNode.removeChild(node); - } - function watchForNodePosition(node, mode, onRestore = Function.prototype) { - const MAX_ATTEMPTS_COUNT = 10; - const RETRY_TIMEOUT = getDuration({seconds: 2}); - const ATTEMPTS_INTERVAL = getDuration({seconds: 10}); - const prevSibling = node.previousSibling; - let parent = node.parentNode; - if (!parent) { - throw new Error( - "Unable to watch for node position: parent element not found" - ); - } - if (mode === "prev-sibling" && !prevSibling) { - throw new Error( - "Unable to watch for node position: there is no previous sibling" - ); - } - let attempts = 0; - let start = null; - let timeoutId = null; - const restore = throttle(() => { - if (timeoutId) { - return; - } - attempts++; - const now = Date.now(); - if (start == null) { - start = now; - } else if (attempts >= MAX_ATTEMPTS_COUNT) { - if (now - start < ATTEMPTS_INTERVAL) { - timeoutId = setTimeout(() => { - start = null; - attempts = 0; - timeoutId = null; - restore(); - }, RETRY_TIMEOUT); - return; - } - start = now; - attempts = 1; - } - if (mode === "head") { - if (prevSibling && prevSibling.parentNode !== parent) { - stop(); - return; - } - } - if (mode === "prev-sibling") { - if (prevSibling.parentNode == null) { - stop(); - return; - } - if (prevSibling.parentNode !== parent) { - updateParent(prevSibling.parentNode); - } - } - if (mode === "head" && !parent.isConnected) { - parent = document.head; - } - parent.insertBefore( - node, - prevSibling && prevSibling.isConnected - ? prevSibling.nextSibling - : parent.firstChild - ); - observer.takeRecords(); - onRestore && onRestore(); - }); - const observer = new MutationObserver(() => { - if ( - (mode === "head" && - (node.parentNode !== parent || - !node.parentNode.isConnected)) || - (mode === "prev-sibling" && - node.previousSibling !== prevSibling) - ) { - restore(); - } - }); - const run = () => { - observer.observe(parent, {childList: true}); - }; - const stop = () => { - clearTimeout(timeoutId); - observer.disconnect(); - restore.cancel(); - }; - const skip = () => { - observer.takeRecords(); - }; - const updateParent = (parentNode) => { - parent = parentNode; - stop(); - run(); - }; - run(); - return {run, stop, skip}; - } - function iterateShadowHosts(root, iterator) { - if (root == null) { - return; - } - const walker = document.createTreeWalker( - root, - NodeFilter.SHOW_ELEMENT, - { - acceptNode(node) { - return node.shadowRoot == null - ? NodeFilter.FILTER_SKIP - : NodeFilter.FILTER_ACCEPT; - } - } - ); - for ( - let node = root.shadowRoot ? walker.currentNode : walker.nextNode(); - node != null; - node = walker.nextNode() - ) { - if (node.classList.contains("surfingkeys_hints_host")) { - continue; - } - iterator(node); - iterateShadowHosts(node.shadowRoot, iterator); - } - } - let isDOMReady = () => { - return ( - document.readyState === "complete" || - document.readyState === "interactive" - ); - }; - function setIsDOMReady(newFunc) { - isDOMReady = newFunc; - } - const readyStateListeners = new Set(); - function addDOMReadyListener(listener) { - isDOMReady() ? listener() : readyStateListeners.add(listener); - } - function removeDOMReadyListener(listener) { - readyStateListeners.delete(listener); - } - function isReadyStateComplete() { - return document.readyState === "complete"; - } - const readyStateCompleteListeners = new Set(); - function addReadyStateCompleteListener(listener) { - isReadyStateComplete() - ? listener() - : readyStateCompleteListeners.add(listener); - } - function cleanReadyStateCompleteListeners() { - readyStateCompleteListeners.clear(); - } - if (!isDOMReady()) { - const onReadyStateChange = () => { - if (isDOMReady()) { - readyStateListeners.forEach((listener) => listener()); - readyStateListeners.clear(); - if (isReadyStateComplete()) { - document.removeEventListener( - "readystatechange", - onReadyStateChange - ); - readyStateCompleteListeners.forEach((listener) => - listener() - ); - readyStateCompleteListeners.clear(); - } - } - }; - document.addEventListener("readystatechange", onReadyStateChange); - } - const HUGE_MUTATIONS_COUNT = 1000; - function isHugeMutation(mutations) { - if (mutations.length > HUGE_MUTATIONS_COUNT) { - return true; - } - let addedNodesCount = 0; - for (let i = 0; i < mutations.length; i++) { - addedNodesCount += mutations[i].addedNodes.length; - if (addedNodesCount > HUGE_MUTATIONS_COUNT) { - return true; - } - } - return false; - } - function getElementsTreeOperations(mutations) { - const additions = new Set(); - const deletions = new Set(); - const moves = new Set(); - mutations.forEach((m) => { - forEach(m.addedNodes, (n) => { - if (n instanceof Element && n.isConnected) { - additions.add(n); - } - }); - forEach(m.removedNodes, (n) => { - if (n instanceof Element) { - if (n.isConnected) { - moves.add(n); - additions.delete(n); - } else { - deletions.add(n); - } - } - }); - }); - const duplicateAdditions = []; - const duplicateDeletions = []; - additions.forEach((node) => { - if (additions.has(node.parentElement)) { - duplicateAdditions.push(node); - } - }); - deletions.forEach((node) => { - if (deletions.has(node.parentElement)) { - duplicateDeletions.push(node); - } - }); - duplicateAdditions.forEach((node) => additions.delete(node)); - duplicateDeletions.forEach((node) => deletions.delete(node)); - return {additions, moves, deletions}; - } - const optimizedTreeObservers = new Map(); - const optimizedTreeCallbacks = new WeakMap(); - function createOptimizedTreeObserver(root, callbacks) { - let observer; - let observerCallbacks; - let domReadyListener; - if (optimizedTreeObservers.has(root)) { - observer = optimizedTreeObservers.get(root); - observerCallbacks = optimizedTreeCallbacks.get(observer); - } else { - let hadHugeMutationsBefore = false; - let subscribedForReadyState = false; - observer = new MutationObserver((mutations) => { - if (isHugeMutation(mutations)) { - if (!hadHugeMutationsBefore || isDOMReady()) { - observerCallbacks.forEach(({onHugeMutations}) => - onHugeMutations(root) - ); - } else if (!subscribedForReadyState) { - domReadyListener = () => - observerCallbacks.forEach(({onHugeMutations}) => - onHugeMutations(root) - ); - addDOMReadyListener(domReadyListener); - subscribedForReadyState = true; - } - hadHugeMutationsBefore = true; - } else { - const elementsOperations = - getElementsTreeOperations(mutations); - observerCallbacks.forEach(({onMinorMutations}) => - onMinorMutations(root, elementsOperations) - ); - } - }); - observer.observe(root, {childList: true, subtree: true}); - optimizedTreeObservers.set(root, observer); - observerCallbacks = new Set(); - optimizedTreeCallbacks.set(observer, observerCallbacks); - } - observerCallbacks.add(callbacks); - return { - disconnect() { - observerCallbacks.delete(callbacks); - if (domReadyListener) { - removeDOMReadyListener(domReadyListener); - } - if (observerCallbacks.size === 0) { - observer.disconnect(); - optimizedTreeCallbacks.delete(observer); - optimizedTreeObservers.delete(root); - } - } - }; - } - - function createOrUpdateStyle$1(css, type) { - createNodeAsap({ - selectNode: () => document.getElementById("dark-reader-style"), - createNode: (target) => { - document.documentElement.setAttribute( - "data-darkreader-mode", - type - ); - const style = document.createElement("style"); - style.id = "dark-reader-style"; - style.classList.add("darkreader"); - style.type = "text/css"; - style.textContent = css; - target.appendChild(style); - }, - updateNode: (existing) => { - if ( - css.replace(/^\s+/gm, "") !== - existing.textContent.replace(/^\s+/gm, "") - ) { - existing.textContent = css; - } - }, - selectTarget: () => document.head, - createTarget: () => { - const head = document.createElement("head"); - document.documentElement.insertBefore( - head, - document.documentElement.firstElementChild - ); - return head; - }, - isTargetMutation: (mutation) => - mutation.target.nodeName.toLowerCase() === "head" - }); - } - function removeStyle() { - removeNode(document.getElementById("dark-reader-style")); - document.documentElement.removeAttribute("data-darkreader-mode"); - } - - function createOrUpdateSVGFilter(svgMatrix, svgReverseMatrix) { - createNodeAsap({ - selectNode: () => document.getElementById("dark-reader-svg"), - createNode: (target) => { - const SVG_NS = "http://www.w3.org/2000/svg"; - const createMatrixFilter = (id, matrix) => { - const filter = document.createElementNS(SVG_NS, "filter"); - filter.id = id; - filter.style.colorInterpolationFilters = "sRGB"; - filter.setAttribute("x", "0"); - filter.setAttribute("y", "0"); - filter.setAttribute("width", "99999"); - filter.setAttribute("height", "99999"); - filter.appendChild(createColorMatrix(matrix)); - return filter; - }; - const createColorMatrix = (matrix) => { - const colorMatrix = document.createElementNS( - SVG_NS, - "feColorMatrix" - ); - colorMatrix.setAttribute("type", "matrix"); - colorMatrix.setAttribute("values", matrix); - return colorMatrix; - }; - const svg = document.createElementNS(SVG_NS, "svg"); - svg.id = "dark-reader-svg"; - svg.style.height = "0"; - svg.style.width = "0"; - svg.appendChild( - createMatrixFilter("dark-reader-filter", svgMatrix) - ); - svg.appendChild( - createMatrixFilter( - "dark-reader-reverse-filter", - svgReverseMatrix - ) - ); - target.appendChild(svg); - }, - updateNode: (existing) => { - const existingMatrix = existing.firstChild.firstChild; - if (existingMatrix.getAttribute("values") !== svgMatrix) { - existingMatrix.setAttribute("values", svgMatrix); - const style = document.getElementById("dark-reader-style"); - const css = style.textContent; - style.textContent = ""; - style.textContent = css; - } - }, - selectTarget: () => document.head, - createTarget: () => { - const head = document.createElement("head"); - document.documentElement.insertBefore( - head, - document.documentElement.firstElementChild - ); - return head; - }, - isTargetMutation: (mutation) => - mutation.target.nodeName.toLowerCase() === "head" - }); - } - function removeSVGFilter() { - removeNode(document.getElementById("dark-reader-svg")); - } - - function evalMath(expression) { - const rpnStack = []; - const workingStack = []; - let lastToken; - for (let i = 0, len = expression.length; i < len; i++) { - const token = expression[i]; - if (!token || token === " ") { - continue; - } - if (operators.has(token)) { - const op = operators.get(token); - while (workingStack.length) { - const currentOp = operators.get(workingStack[0]); - if (!currentOp) { - break; - } - if (op.lessOrEqualThan(currentOp)) { - rpnStack.push(workingStack.shift()); - } else { - break; - } - } - workingStack.unshift(token); - } else if (!lastToken || operators.has(lastToken)) { - rpnStack.push(token); - } else { - rpnStack[rpnStack.length - 1] += token; - } - lastToken = token; - } - rpnStack.push(...workingStack); - const stack = []; - for (let i = 0, len = rpnStack.length; i < len; i++) { - const op = operators.get(rpnStack[i]); - if (op) { - const args = stack.splice(0, 2); - stack.push(op.exec(args[1], args[0])); - } else { - stack.unshift(parseFloat(rpnStack[i])); - } - } - return stack[0]; - } - class Operator { - precendce; - execMethod; - constructor(precedence, method) { - this.precendce = precedence; - this.execMethod = method; - } - exec(left, right) { - return this.execMethod(left, right); - } - lessOrEqualThan(op) { - return this.precendce <= op.precendce; - } - } - const operators = new Map([ - ["+", new Operator(1, (left, right) => left + right)], - ["-", new Operator(1, (left, right) => left - right)], - ["*", new Operator(2, (left, right) => left * right)], - ["/", new Operator(2, (left, right) => left / right)] - ]); - - function getMatches(regex, input, group = 0) { - const matches = []; - let m; - while ((m = regex.exec(input))) { - matches.push(m[group]); - } - return matches; - } - function getHashCode(text) { - const len = text.length; - let hash = 0; - for (let i = 0; i < len; i++) { - const c = text.charCodeAt(i); - hash = ((hash << 5) - hash + c) & 4294967295; - } - return hash; - } - function escapeRegExpSpecialChars(input) { - return input.replaceAll(/[\^$.*+?\(\)\[\]{}|\-\\]/g, "\\$&"); - } - function getParenthesesRange(input, searchStartIndex = 0) { - return getOpenCloseRange(input, searchStartIndex, "(", ")", []); - } - function getOpenCloseRange( - input, - searchStartIndex, - openToken, - closeToken, - excludeRanges - ) { - let indexOf; - if (excludeRanges.length === 0) { - indexOf = (token, pos) => input.indexOf(token, pos); - } else { - indexOf = (token, pos) => - indexOfExcluding(input, token, pos, excludeRanges); - } - const {length} = input; - let depth = 0; - let firstOpenIndex = -1; - for (let i = searchStartIndex; i < length; i++) { - if (depth === 0) { - const openIndex = indexOf(openToken, i); - if (openIndex < 0) { - break; - } - firstOpenIndex = openIndex; - depth++; - i = openIndex; - } else { - const closeIndex = indexOf(closeToken, i); - if (closeIndex < 0) { - break; - } - const openIndex = indexOf(openToken, i); - if (openIndex < 0 || closeIndex <= openIndex) { - depth--; - if (depth === 0) { - return {start: firstOpenIndex, end: closeIndex + 1}; - } - i = closeIndex; - } else { - depth++; - i = openIndex; - } - } - } - return null; - } - function indexOfExcluding(input, search, position, excludeRanges) { - const i = input.indexOf(search, position); - const exclusion = excludeRanges.find((r) => i >= r.start && i < r.end); - if (exclusion) { - return indexOfExcluding( - input, - search, - exclusion.end, - excludeRanges - ); - } - return i; - } - function splitExcluding(input, separator, excludeRanges) { - const parts = []; - let commaIndex = -1; - let currIndex = 0; - while ( - (commaIndex = indexOfExcluding( - input, - separator, - currIndex, - excludeRanges - )) >= 0 - ) { - parts.push(input.substring(currIndex, commaIndex).trim()); - currIndex = commaIndex + 1; - } - parts.push(input.substring(currIndex).trim()); - return parts; - } - - const isNavigatorDefined = typeof navigator !== "undefined"; - const userAgent = isNavigatorDefined - ? navigator.userAgentData && - Array.isArray(navigator.userAgentData.brands) - ? navigator.userAgentData.brands - .map( - (brand) => `${brand.brand.toLowerCase()} ${brand.version}` - ) - .join(" ") - : navigator.userAgent.toLowerCase() - : "some useragent"; - const platform = isNavigatorDefined - ? navigator.userAgentData && - typeof navigator.userAgentData.platform === "string" - ? navigator.userAgentData.platform.toLowerCase() - : navigator.platform.toLowerCase() - : "some platform"; - userAgent.includes("vivaldi"); - userAgent.includes("yabrowser"); - userAgent.includes("opr") || userAgent.includes("opera"); - userAgent.includes("edg"); - platform.startsWith("win"); - platform.startsWith("mac"); - isNavigatorDefined && navigator.userAgentData - ? navigator.userAgentData.mobile - : userAgent.includes("mobile"); - const isShadowDomSupported = typeof ShadowRoot === "function"; - const isLayerRuleSupported = typeof CSSLayerBlockRule === "function"; - (isNavigatorDefined && - navigator.userAgentData && - ["Linux", "Android"].includes(navigator.userAgentData.platform)) || - platform.startsWith("linux"); - (() => { - const m = userAgent.match(/chrom(?:e|ium)(?:\/| )([^ ]+)/); - if (m && m[1]) { - return m[1]; - } - return ""; - })(); - (() => { - const m = userAgent.match(/(?:firefox|librewolf)(?:\/| )([^ ]+)/); - if (m && m[1]) { - return m[1]; - } - return ""; - })(); - const isDefinedSelectorSupported = (() => { - try { - document.querySelector(":defined"); - return true; - } catch (err) { - return false; - } - })(); - - let query = null; - const onChange = ({matches}) => - listeners.forEach((listener) => listener(matches)); - const listeners = new Set(); - function runColorSchemeChangeDetector(callback) { - listeners.add(callback); - if (query) { - return; - } - query = matchMedia("(prefers-color-scheme: dark)"); - { - query.addEventListener("change", onChange); - } - } - function stopColorSchemeChangeDetector() { - if (!query || !onChange) { - return; - } - { - query.removeEventListener("change", onChange); - } - listeners.clear(); - query = null; - } - const isSystemDarkModeEnabled = () => - (query || matchMedia("(prefers-color-scheme: dark)")).matches; - - const hslaParseCache = new Map(); - const rgbaParseCache = new Map(); - function parseColorWithCache($color) { - $color = $color.trim(); - if (rgbaParseCache.has($color)) { - return rgbaParseCache.get($color); - } - if ($color.includes("calc(")) { - $color = lowerCalcExpression($color); - } - const color = parse($color); - color && rgbaParseCache.set($color, color); - return color; - } - function parseToHSLWithCache(color) { - if (hslaParseCache.has(color)) { - return hslaParseCache.get(color); - } - const rgb = parseColorWithCache(color); - if (!rgb) { - return null; - } - const hsl = rgbToHSL(rgb); - hslaParseCache.set(color, hsl); - return hsl; - } - function clearColorCache() { - hslaParseCache.clear(); - rgbaParseCache.clear(); - } - function hslToRGB({h, s, l, a = 1}) { - if (s === 0) { - const [r, b, g] = [l, l, l].map((x) => Math.round(x * 255)); - return {r, g, b, a}; - } - const c = (1 - Math.abs(2 * l - 1)) * s; - const x = c * (1 - Math.abs(((h / 60) % 2) - 1)); - const m = l - c / 2; - const [r, g, b] = ( - h < 60 - ? [c, x, 0] - : h < 120 - ? [x, c, 0] - : h < 180 - ? [0, c, x] - : h < 240 - ? [0, x, c] - : h < 300 - ? [x, 0, c] - : [c, 0, x] - ).map((n) => Math.round((n + m) * 255)); - return {r, g, b, a}; - } - function rgbToHSL({r: r255, g: g255, b: b255, a = 1}) { - const r = r255 / 255; - const g = g255 / 255; - const b = b255 / 255; - const max = Math.max(r, g, b); - const min = Math.min(r, g, b); - const c = max - min; - const l = (max + min) / 2; - if (c === 0) { - return {h: 0, s: 0, l, a}; - } - let h = - (max === r - ? ((g - b) / c) % 6 - : max === g - ? (b - r) / c + 2 - : (r - g) / c + 4) * 60; - if (h < 0) { - h += 360; - } - const s = c / (1 - Math.abs(2 * l - 1)); - return {h, s, l, a}; - } - function toFixed(n, digits = 0) { - const fixed = n.toFixed(digits); - if (digits === 0) { - return fixed; - } - const dot = fixed.indexOf("."); - if (dot >= 0) { - const zerosMatch = fixed.match(/0+$/); - if (zerosMatch) { - if (zerosMatch.index === dot + 1) { - return fixed.substring(0, dot); - } - return fixed.substring(0, zerosMatch.index); - } - } - return fixed; - } - function rgbToString(rgb) { - const {r, g, b, a} = rgb; - if (a != null && a < 1) { - return `rgba(${toFixed(r)}, ${toFixed(g)}, ${toFixed(b)}, ${toFixed(a, 2)})`; - } - return `rgb(${toFixed(r)}, ${toFixed(g)}, ${toFixed(b)})`; - } - function rgbToHexString({r, g, b, a}) { - return `#${(a != null && a < 1 - ? [r, g, b, Math.round(a * 255)] - : [r, g, b] - ) - .map((x) => { - return `${x < 16 ? "0" : ""}${x.toString(16)}`; - }) - .join("")}`; - } - function hslToString(hsl) { - const {h, s, l, a} = hsl; - if (a != null && a < 1) { - return `hsla(${toFixed(h)}, ${toFixed(s * 100)}%, ${toFixed(l * 100)}%, ${toFixed(a, 2)})`; - } - return `hsl(${toFixed(h)}, ${toFixed(s * 100)}%, ${toFixed(l * 100)}%)`; - } - const rgbMatch = /^rgba?\([^\(\)]+\)$/; - const hslMatch = /^hsla?\([^\(\)]+\)$/; - const hexMatch = /^#[0-9a-f]+$/i; - function parse($color) { - const c = $color.trim().toLowerCase(); - if (c.match(rgbMatch)) { - return parseRGB(c); - } - if (c.match(hslMatch)) { - return parseHSL(c); - } - if (c.match(hexMatch)) { - return parseHex(c); - } - if (knownColors.has(c)) { - return getColorByName(c); - } - if (systemColors.has(c)) { - return getSystemColor(c); - } - if ($color === "transparent") { - return {r: 0, g: 0, b: 0, a: 0}; - } - if ( - (c.startsWith("color(") || c.startsWith("color-mix(")) && - c.endsWith(")") - ) { - return domParseColor(c); - } - if (c.startsWith("light-dark(") && c.endsWith(")")) { - const match = c.match( - /^light-dark\(\s*([a-z]+(\(.*\))?),\s*([a-z]+(\(.*\))?)\s*\)$/ - ); - if (match) { - const schemeColor = isSystemDarkModeEnabled() - ? match[3] - : match[1]; - return parse(schemeColor); - } - } - return null; - } - function getNumbers($color) { - const numbers = []; - let prevPos = 0; - let isMining = false; - const startIndex = $color.indexOf("("); - $color = $color.substring(startIndex + 1, $color.length - 1); - for (let i = 0; i < $color.length; i++) { - const c = $color[i]; - if ((c >= "0" && c <= "9") || c === "." || c === "+" || c === "-") { - isMining = true; - } else if (isMining && (c === " " || c === "," || c === "/")) { - numbers.push($color.substring(prevPos, i)); - isMining = false; - prevPos = i + 1; - } else if (!isMining) { - prevPos = i + 1; - } - } - if (isMining) { - numbers.push($color.substring(prevPos, $color.length)); - } - return numbers; - } - function getNumbersFromString(str, range, units) { - const raw = getNumbers(str); - const unitsList = Object.entries(units); - const numbers = raw - .map((r) => r.trim()) - .map((r, i) => { - let n; - const unit = unitsList.find(([u]) => r.endsWith(u)); - if (unit) { - n = - (parseFloat(r.substring(0, r.length - unit[0].length)) / - unit[1]) * - range[i]; - } else { - n = parseFloat(r); - } - if (range[i] > 1) { - return Math.round(n); - } - return n; - }); - return numbers; - } - const rgbRange = [255, 255, 255, 1]; - const rgbUnits = {"%": 100}; - function parseRGB($rgb) { - const [r, g, b, a = 1] = getNumbersFromString($rgb, rgbRange, rgbUnits); - return {r, g, b, a}; - } - const hslRange = [360, 1, 1, 1]; - const hslUnits = {"%": 100, "deg": 360, "rad": 2 * Math.PI, "turn": 1}; - function parseHSL($hsl) { - const [h, s, l, a = 1] = getNumbersFromString($hsl, hslRange, hslUnits); - return hslToRGB({h, s, l, a}); - } - function parseHex($hex) { - const h = $hex.substring(1); - switch (h.length) { - case 3: - case 4: { - const [r, g, b] = [0, 1, 2].map((i) => - parseInt(`${h[i]}${h[i]}`, 16) - ); - const a = - h.length === 3 ? 1 : parseInt(`${h[3]}${h[3]}`, 16) / 255; - return {r, g, b, a}; - } - case 6: - case 8: { - const [r, g, b] = [0, 2, 4].map((i) => - parseInt(h.substring(i, i + 2), 16) - ); - const a = - h.length === 6 ? 1 : parseInt(h.substring(6, 8), 16) / 255; - return {r, g, b, a}; - } - } - return null; - } - function getColorByName($color) { - const n = knownColors.get($color); - return { - r: (n >> 16) & 255, - g: (n >> 8) & 255, - b: (n >> 0) & 255, - a: 1 - }; - } - function getSystemColor($color) { - const n = systemColors.get($color); - return { - r: (n >> 16) & 255, - g: (n >> 8) & 255, - b: (n >> 0) & 255, - a: 1 - }; - } - function lowerCalcExpression(color) { - let searchIndex = 0; - const replaceBetweenIndices = (start, end, replacement) => { - color = - color.substring(0, start) + replacement + color.substring(end); - }; - while ((searchIndex = color.indexOf("calc(")) !== -1) { - const range = getParenthesesRange(color, searchIndex); - if (!range) { - break; - } - let slice = color.slice(range.start + 1, range.end - 1); - const includesPercentage = slice.includes("%"); - slice = slice.split("%").join(""); - const output = Math.round(evalMath(slice)); - replaceBetweenIndices( - range.start - 4, - range.end, - output + (includesPercentage ? "%" : "") - ); - } - return color; - } - const knownColors = new Map( - Object.entries({ - aliceblue: 0xf0f8ff, - antiquewhite: 0xfaebd7, - aqua: 0x00ffff, - aquamarine: 0x7fffd4, - azure: 0xf0ffff, - beige: 0xf5f5dc, - bisque: 0xffe4c4, - black: 0x000000, - blanchedalmond: 0xffebcd, - blue: 0x0000ff, - blueviolet: 0x8a2be2, - brown: 0xa52a2a, - burlywood: 0xdeb887, - cadetblue: 0x5f9ea0, - chartreuse: 0x7fff00, - chocolate: 0xd2691e, - coral: 0xff7f50, - cornflowerblue: 0x6495ed, - cornsilk: 0xfff8dc, - crimson: 0xdc143c, - cyan: 0x00ffff, - darkblue: 0x00008b, - darkcyan: 0x008b8b, - darkgoldenrod: 0xb8860b, - darkgray: 0xa9a9a9, - darkgrey: 0xa9a9a9, - darkgreen: 0x006400, - darkkhaki: 0xbdb76b, - darkmagenta: 0x8b008b, - darkolivegreen: 0x556b2f, - darkorange: 0xff8c00, - darkorchid: 0x9932cc, - darkred: 0x8b0000, - darksalmon: 0xe9967a, - darkseagreen: 0x8fbc8f, - darkslateblue: 0x483d8b, - darkslategray: 0x2f4f4f, - darkslategrey: 0x2f4f4f, - darkturquoise: 0x00ced1, - darkviolet: 0x9400d3, - deeppink: 0xff1493, - deepskyblue: 0x00bfff, - dimgray: 0x696969, - dimgrey: 0x696969, - dodgerblue: 0x1e90ff, - firebrick: 0xb22222, - floralwhite: 0xfffaf0, - forestgreen: 0x228b22, - fuchsia: 0xff00ff, - gainsboro: 0xdcdcdc, - ghostwhite: 0xf8f8ff, - gold: 0xffd700, - goldenrod: 0xdaa520, - gray: 0x808080, - grey: 0x808080, - green: 0x008000, - greenyellow: 0xadff2f, - honeydew: 0xf0fff0, - hotpink: 0xff69b4, - indianred: 0xcd5c5c, - indigo: 0x4b0082, - ivory: 0xfffff0, - khaki: 0xf0e68c, - lavender: 0xe6e6fa, - lavenderblush: 0xfff0f5, - lawngreen: 0x7cfc00, - lemonchiffon: 0xfffacd, - lightblue: 0xadd8e6, - lightcoral: 0xf08080, - lightcyan: 0xe0ffff, - lightgoldenrodyellow: 0xfafad2, - lightgray: 0xd3d3d3, - lightgrey: 0xd3d3d3, - lightgreen: 0x90ee90, - lightpink: 0xffb6c1, - lightsalmon: 0xffa07a, - lightseagreen: 0x20b2aa, - lightskyblue: 0x87cefa, - lightslategray: 0x778899, - lightslategrey: 0x778899, - lightsteelblue: 0xb0c4de, - lightyellow: 0xffffe0, - lime: 0x00ff00, - limegreen: 0x32cd32, - linen: 0xfaf0e6, - magenta: 0xff00ff, - maroon: 0x800000, - mediumaquamarine: 0x66cdaa, - mediumblue: 0x0000cd, - mediumorchid: 0xba55d3, - mediumpurple: 0x9370db, - mediumseagreen: 0x3cb371, - mediumslateblue: 0x7b68ee, - mediumspringgreen: 0x00fa9a, - mediumturquoise: 0x48d1cc, - mediumvioletred: 0xc71585, - midnightblue: 0x191970, - mintcream: 0xf5fffa, - mistyrose: 0xffe4e1, - moccasin: 0xffe4b5, - navajowhite: 0xffdead, - navy: 0x000080, - oldlace: 0xfdf5e6, - olive: 0x808000, - olivedrab: 0x6b8e23, - orange: 0xffa500, - orangered: 0xff4500, - orchid: 0xda70d6, - palegoldenrod: 0xeee8aa, - palegreen: 0x98fb98, - paleturquoise: 0xafeeee, - palevioletred: 0xdb7093, - papayawhip: 0xffefd5, - peachpuff: 0xffdab9, - peru: 0xcd853f, - pink: 0xffc0cb, - plum: 0xdda0dd, - powderblue: 0xb0e0e6, - purple: 0x800080, - rebeccapurple: 0x663399, - red: 0xff0000, - rosybrown: 0xbc8f8f, - royalblue: 0x4169e1, - saddlebrown: 0x8b4513, - salmon: 0xfa8072, - sandybrown: 0xf4a460, - seagreen: 0x2e8b57, - seashell: 0xfff5ee, - sienna: 0xa0522d, - silver: 0xc0c0c0, - skyblue: 0x87ceeb, - slateblue: 0x6a5acd, - slategray: 0x708090, - slategrey: 0x708090, - snow: 0xfffafa, - springgreen: 0x00ff7f, - steelblue: 0x4682b4, - tan: 0xd2b48c, - teal: 0x008080, - thistle: 0xd8bfd8, - tomato: 0xff6347, - turquoise: 0x40e0d0, - violet: 0xee82ee, - wheat: 0xf5deb3, - white: 0xffffff, - whitesmoke: 0xf5f5f5, - yellow: 0xffff00, - yellowgreen: 0x9acd32 - }) - ); - const systemColors = new Map( - Object.entries({ - "ActiveBorder": 0x3b99fc, - "ActiveCaption": 0x000000, - "AppWorkspace": 0xaaaaaa, - "Background": 0x6363ce, - "ButtonFace": 0xffffff, - "ButtonHighlight": 0xe9e9e9, - "ButtonShadow": 0x9fa09f, - "ButtonText": 0x000000, - "CaptionText": 0x000000, - "GrayText": 0x7f7f7f, - "Highlight": 0xb2d7ff, - "HighlightText": 0x000000, - "InactiveBorder": 0xffffff, - "InactiveCaption": 0xffffff, - "InactiveCaptionText": 0x000000, - "InfoBackground": 0xfbfcc5, - "InfoText": 0x000000, - "Menu": 0xf6f6f6, - "MenuText": 0xffffff, - "Scrollbar": 0xaaaaaa, - "ThreeDDarkShadow": 0x000000, - "ThreeDFace": 0xc0c0c0, - "ThreeDHighlight": 0xffffff, - "ThreeDLightShadow": 0xffffff, - "ThreeDShadow": 0x000000, - "Window": 0xececec, - "WindowFrame": 0xaaaaaa, - "WindowText": 0x000000, - "-webkit-focus-ring-color": 0xe59700 - }).map(([key, value]) => [key.toLowerCase(), value]) - ); - function getSRGBLightness(r, g, b) { - return (0.2126 * r + 0.7152 * g + 0.0722 * b) / 255; - } - let canvas$1; - let context$1; - function domParseColor($color) { - if (!context$1) { - canvas$1 = document.createElement("canvas"); - canvas$1.width = 1; - canvas$1.height = 1; - context$1 = canvas$1.getContext("2d", {willReadFrequently: true}); - } - context$1.fillStyle = $color; - context$1.fillRect(0, 0, 1, 1); - const d = context$1.getImageData(0, 0, 1, 1).data; - const color = `rgba(${d[0]}, ${d[1]}, ${d[2]}, ${(d[3] / 255).toFixed(2)})`; - return parseRGB(color); - } - - const COLOR_SCHEME_META_SELECTOR = 'meta[name="color-scheme"]'; - function hasBuiltInDarkTheme() { - const rootStyle = getComputedStyle(document.documentElement); - if (rootStyle.filter.includes("invert(1)")) { - return true; - } - const CELL_SIZE = 256; - const MAX_ROW_COUNT = 4; - const winWidth = innerWidth; - const winHeight = innerHeight; - const stepX = Math.floor( - winWidth / Math.min(MAX_ROW_COUNT, Math.ceil(winWidth / CELL_SIZE)) - ); - const stepY = Math.floor( - winHeight / - Math.min(MAX_ROW_COUNT, Math.ceil(winHeight / CELL_SIZE)) - ); - const processedElements = new Set(); - for (let y = Math.floor(stepY / 2); y < winHeight; y += stepY) { - for (let x = Math.floor(stepX / 2); x < winWidth; x += stepX) { - const element = document.elementFromPoint(x, y); - if (!element || processedElements.has(element)) { - continue; - } - processedElements.add(element); - const style = - element === document.documentElement - ? rootStyle - : getComputedStyle(element); - const bgColor = parseColorWithCache(style.backgroundColor); - if (bgColor.a === 1) { - const bgLightness = getSRGBLightness( - bgColor.r, - bgColor.g, - bgColor.b - ); - if (bgLightness > 0.5) { - return false; - } - } else { - const textColor = parseColorWithCache(style.color); - const textLightness = getSRGBLightness( - textColor.r, - textColor.g, - textColor.b - ); - if (textLightness < 0.5) { - return false; - } - } - } - } - const rootColor = parseColorWithCache(rootStyle.backgroundColor); - const bodyColor = document.body - ? parseColorWithCache( - getComputedStyle(document.body).backgroundColor - ) - : {r: 0, g: 0, b: 0, a: 0}; - const rootLightness = - 1 - - rootColor.a + - rootColor.a * - getSRGBLightness(rootColor.r, rootColor.g, rootColor.b); - const finalLightness = - (1 - bodyColor.a) * rootLightness + - bodyColor.a * - getSRGBLightness(bodyColor.r, bodyColor.g, bodyColor.b); - return finalLightness < 0.5; - } - function runCheck(callback) { - const colorSchemeMeta = document.querySelector( - COLOR_SCHEME_META_SELECTOR - ); - if (colorSchemeMeta) { - const isMetaDark = - colorSchemeMeta.content === "dark" || - (colorSchemeMeta.content.includes("dark") && - isSystemDarkModeEnabled()); - callback(isMetaDark); - return; - } - const drStyles = document.querySelectorAll(".darkreader"); - drStyles.forEach((style) => (style.disabled = true)); - const darkThemeDetected = hasBuiltInDarkTheme(); - drStyles.forEach((style) => (style.disabled = false)); - callback(darkThemeDetected); - } - function hasSomeStyle() { - if (document.querySelector(COLOR_SCHEME_META_SELECTOR) != null) { - return true; - } - if ( - document.documentElement.style.backgroundColor || - (document.body && document.body.style.backgroundColor) - ) { - return true; - } - for (const style of document.styleSheets) { - if ( - style && - style.ownerNode && - !( - style.ownerNode.classList && - style.ownerNode.classList.contains("darkreader") - ) - ) { - return true; - } - } - return false; - } - let observer$1; - let readyStateListener; - function canCheckForStyle() { - return ( - document.body && - document.body.scrollHeight > 0 && - document.body.clientHeight > 0 && - hasSomeStyle() - ); - } - function runDarkThemeDetector(callback, hints) { - stopDarkThemeDetector(); - if (hints && hints.length > 0) { - const hint = hints[0]; - if (hint.noDarkTheme) { - callback(false); - return; - } - if (hint.systemTheme && isSystemDarkModeEnabled()) { - callback(true); - return; - } - detectUsingHint(hint, () => callback(true)); - return; - } - if (canCheckForStyle()) { - runCheck(callback); - return; - } - observer$1 = new MutationObserver(() => { - if (canCheckForStyle()) { - stopDarkThemeDetector(); - runCheck(callback); - } - }); - observer$1.observe(document.documentElement, {childList: true}); - if (document.readyState !== "complete") { - readyStateListener = () => { - if (document.readyState === "complete") { - stopDarkThemeDetector(); - runCheck(callback); - } - }; - document.addEventListener("readystatechange", readyStateListener); - } - } - function stopDarkThemeDetector() { - if (observer$1) { - observer$1.disconnect(); - observer$1 = null; - } - if (readyStateListener) { - document.removeEventListener( - "readystatechange", - readyStateListener - ); - readyStateListener = null; - } - stopDetectingUsingHint(); - } - let hintTargetObserver; - let hintMatchObserver; - function detectUsingHint(hint, success) { - stopDetectingUsingHint(); - const matchSelector = (hint.match || []).join(", "); - function checkMatch(target) { - if (target.matches?.(matchSelector)) { - stopDetectingUsingHint(); - success(); - return true; - } - return false; - } - function setupMatchObserver(target) { - hintMatchObserver?.disconnect(); - if (checkMatch(target)) { - return; - } - hintMatchObserver = new MutationObserver(() => checkMatch(target)); - hintMatchObserver.observe(target, {attributes: true}); - } - const target = document.querySelector(hint.target); - if (target) { - setupMatchObserver(target); - } else { - hintTargetObserver = new MutationObserver((mutations) => { - const handledTargets = new Set(); - for (const mutation of mutations) { - if (handledTargets.has(mutation.target)) { - continue; - } - handledTargets.add(mutation.target); - if (mutation.target instanceof Element) { - const target = mutation.target.querySelector( - hint.target - ); - if (target) { - hintTargetObserver.disconnect(); - setupMatchObserver(target); - break; - } - } - } - }); - hintTargetObserver.observe(document.documentElement, { - childList: true, - subtree: true - }); - } - } - function stopDetectingUsingHint() { - hintTargetObserver?.disconnect(); - hintMatchObserver?.disconnect(); - } - - function cachedFactory(factory, size) { - const cache = new Map(); - return (key) => { - if (cache.has(key)) { - return cache.get(key); - } - const value = factory(key); - cache.set(key, value); - if (cache.size > size) { - const first = cache.keys().next().value; - cache.delete(first); - } - return value; - }; - } - - let anchor; - const parsedURLCache = new Map(); - function fixBaseURL($url) { - if (!anchor) { - anchor = document.createElement("a"); - } - anchor.href = $url; - return anchor.href; - } - function parseURL($url, $base = null) { - const key = `${$url}${$base ? `;${$base}` : ""}`; - if (parsedURLCache.has(key)) { - return parsedURLCache.get(key); - } - if ($base) { - const parsedURL = new URL($url, fixBaseURL($base)); - parsedURLCache.set(key, parsedURL); - return parsedURL; - } - const parsedURL = new URL(fixBaseURL($url)); - parsedURLCache.set($url, parsedURL); - return parsedURL; - } - function getAbsoluteURL($base, $relative) { - if ($relative.match(/^data\\?\:/)) { - return $relative; - } - if (/^\/\//.test($relative)) { - return `${location.protocol}${$relative}`; - } - const b = parseURL($base); - const a = parseURL($relative, b.href); - return a.href; - } - function isRelativeHrefOnAbsolutePath(href) { - if (href.startsWith("data:")) { - return true; - } - const url = parseURL(href); - if (url.protocol !== location.protocol) { - return false; - } - if (url.hostname !== location.hostname) { - return false; - } - if (url.port !== location.port) { - return false; - } - return url.pathname === location.pathname; - } - function isURLInList(url, list) { - for (let i = 0; i < list.length; i++) { - if (isURLMatched(url, list[i])) { - return true; - } - } - return false; - } - function isURLMatched(url, urlTemplate) { - if (isRegExp(urlTemplate)) { - const regexp = createRegExp(urlTemplate); - return regexp ? regexp.test(url) : false; - } - return matchURLPattern(url, urlTemplate); - } - const URL_CACHE_SIZE = 32; - const prepareURL = cachedFactory((url) => { - let parsed; - try { - parsed = new URL(url); - } catch (err) { - return null; - } - const {hostname, pathname, protocol, port} = parsed; - const hostParts = hostname.split(".").reverse(); - const pathParts = pathname.split("/").slice(1); - if (!pathParts[pathParts.length - 1]) { - pathParts.splice(pathParts.length - 1, 1); - } - return { - hostParts, - pathParts, - port, - protocol - }; - }, URL_CACHE_SIZE); - const URL_MATCH_CACHE_SIZE = 32 * 1024; - const preparePattern = cachedFactory((pattern) => { - if (!pattern) { - return null; - } - const exactStart = pattern.startsWith("^"); - const exactEnd = pattern.endsWith("$"); - if (exactStart) { - pattern = pattern.substring(1); - } - if (exactEnd) { - pattern = pattern.substring(0, pattern.length - 1); - } - let protocol = ""; - const protocolIndex = pattern.indexOf("://"); - if (protocolIndex > 0) { - protocol = pattern.substring(0, protocolIndex + 1); - pattern = pattern.substring(protocolIndex + 3); - } - const slashIndex = pattern.indexOf("/"); - const host = - slashIndex < 0 ? pattern : pattern.substring(0, slashIndex); - let hostName = host; - let isIPv6 = false; - let ipV6End = -1; - if (host.startsWith("[")) { - ipV6End = host.indexOf("]"); - if (ipV6End > 0) { - isIPv6 = true; - } - } - let port = "*"; - const portIndex = host.lastIndexOf(":"); - if (portIndex >= 0 && (!isIPv6 || ipV6End < portIndex)) { - hostName = host.substring(0, portIndex); - port = host.substring(portIndex + 1); - } - if (isIPv6) { - try { - const ipV6URL = new URL(`http://${hostName}`); - hostName = ipV6URL.hostname; - } catch (err) {} - } - const hostParts = hostName.split(".").reverse(); - const path = slashIndex < 0 ? "" : pattern.substring(slashIndex + 1); - const pathParts = path.split("/"); - if (!pathParts[pathParts.length - 1]) { - pathParts.splice(pathParts.length - 1, 1); - } - return { - hostParts, - pathParts, - port, - exactStart, - exactEnd, - protocol - }; - }, URL_MATCH_CACHE_SIZE); - function matchURLPattern(url, pattern) { - const u = prepareURL(url); - const p = preparePattern(pattern); - if ( - !(u && p) || - p.hostParts.length > u.hostParts.length || - (p.exactStart && p.hostParts.length !== u.hostParts.length) || - (p.exactEnd && p.pathParts.length !== u.pathParts.length) || - (p.port !== "*" && p.port !== u.port) || - (p.protocol && p.protocol !== u.protocol) - ) { - return false; - } - for (let i = 0; i < p.hostParts.length; i++) { - const pHostPart = p.hostParts[i]; - const uHostPart = u.hostParts[i]; - if (pHostPart !== "*" && pHostPart !== uHostPart) { - return false; - } - } - if ( - p.hostParts.length >= 2 && - p.hostParts.at(-1) !== "*" && - (p.hostParts.length < u.hostParts.length - 1 || - (p.hostParts.length === u.hostParts.length - 1 && - u.hostParts.at(-1) !== "www")) - ) { - return false; - } - if (p.pathParts.length === 0) { - return true; - } - if (p.pathParts.length > u.pathParts.length) { - return false; - } - for (let i = 0; i < p.pathParts.length; i++) { - const pPathPart = p.pathParts[i]; - const uPathPart = u.pathParts[i]; - if (pPathPart !== "*" && pPathPart !== uPathPart) { - return false; - } - } - return true; - } - function isRegExp(pattern) { - return ( - pattern.startsWith("/") && - pattern.endsWith("/") && - pattern.length > 2 - ); - } - const REGEXP_CACHE_SIZE = 1024; - const createRegExp = cachedFactory((pattern) => { - if (pattern.startsWith("/")) { - pattern = pattern.substring(1); - } - if (pattern.endsWith("/")) { - pattern = pattern.substring(0, pattern.length - 1); - } - try { - return new RegExp(pattern); - } catch (err) { - return null; - } - }, REGEXP_CACHE_SIZE); - - function iterateCSSRules(rules, iterate, onImportError) { - forEach(rules, (rule) => { - if (isStyleRule(rule)) { - iterate(rule); - } else if (isImportRule(rule)) { - try { - iterateCSSRules( - rule.styleSheet.cssRules, - iterate, - onImportError - ); - } catch (err) { - onImportError?.(); - } - } else if (isMediaRule(rule)) { - const media = Array.from(rule.media); - const isScreenOrAllOrQuery = media.some( - (m) => - m.startsWith("screen") || - m.startsWith("all") || - m.startsWith("(") - ); - const isPrintOrSpeech = media.some( - (m) => m.startsWith("print") || m.startsWith("speech") - ); - if (isScreenOrAllOrQuery || !isPrintOrSpeech) { - iterateCSSRules(rule.cssRules, iterate, onImportError); - } - } else if (isSupportsRule(rule)) { - if (CSS.supports(rule.conditionText)) { - iterateCSSRules(rule.cssRules, iterate, onImportError); - } - } else if (isLayerRule(rule)) { - iterateCSSRules(rule.cssRules, iterate, onImportError); - } else; - }); - } - const shorthandVarDependantProperties = [ - "background", - "border", - "border-color", - "border-bottom", - "border-left", - "border-right", - "border-top", - "outline", - "outline-color" - ]; - function iterateCSSDeclarations(style, iterate) { - forEach(style, (property) => { - const value = style.getPropertyValue(property).trim(); - if (!value) { - return; - } - iterate(property, value); - }); - const cssText = style.cssText; - if (cssText.includes("var(")) { - { - shorthandVarDependantProperties.forEach((prop) => { - const val = style.getPropertyValue(prop); - if (val && val.includes("var(")) { - iterate(prop, val); - } - }); - } - } - if ( - cssText.includes("background-color: ;") && - !style.getPropertyValue("background") - ) { - handleEmptyShorthand("background", style, iterate); - } - if ( - cssText.includes("border-") && - cssText.includes("-color: ;") && - !style.getPropertyValue("border") - ) { - handleEmptyShorthand("border", style, iterate); - } - } - function handleEmptyShorthand(shorthand, style, iterate) { - const parentRule = style.parentRule; - if (isStyleRule(parentRule)) { - const sourceCSSText = - parentRule.parentStyleSheet?.ownerNode?.textContent; - if (sourceCSSText) { - let escapedSelector = escapeRegExpSpecialChars( - parentRule.selectorText - ); - escapedSelector = escapedSelector.replaceAll(/\s+/g, "\\s*"); - escapedSelector = escapedSelector.replaceAll(/::/g, "::?"); - const regexp = new RegExp( - `${escapedSelector}\\s*{[^}]*${shorthand}:\\s*([^;}]+)` - ); - const match = sourceCSSText.match(regexp); - if (match) { - iterate(shorthand, match[1]); - } - } else if (shorthand === "background") { - iterate("background-color", "#ffffff"); - } - } - } - const cssURLRegex = /url\((('.*?')|(".*?")|([^\)]*?))\)/g; - const cssImportRegex = - /@import\s*(url\()?(('.+?')|(".+?")|([^\)]*?))\)? ?(screen)?;?/gi; - function getCSSURLValue(cssURL) { - return cssURL - .trim() - .replace(/[\n\r\\]+/g, "") - .replace(/^url\((.*)\)$/, "$1") - .trim() - .replace(/^"(.*)"$/, "$1") - .replace(/^'(.*)'$/, "$1") - .replace(/(?:\\(.))/g, "$1"); - } - function getCSSBaseBath(url) { - const cssURL = parseURL(url); - return `${cssURL.origin}${cssURL.pathname.replace(/\?.*$/, "").replace(/(\/)([^\/]+)$/i, "$1")}`; - } - function replaceCSSRelativeURLsWithAbsolute($css, cssBasePath) { - return $css.replace(cssURLRegex, (match) => { - try { - const url = getCSSURLValue(match); - const absoluteURL = getAbsoluteURL(cssBasePath, url); - const escapedURL = absoluteURL.replaceAll("'", "\\'"); - return `url('${escapedURL}')`; - } catch (err) { - return match; - } - }); - } - const fontFaceRegex = /@font-face\s*{[^}]*}/g; - function replaceCSSFontFace($css) { - return $css.replace(fontFaceRegex, ""); - } - const styleRules = new WeakSet(); - const importRules = new WeakSet(); - const mediaRules = new WeakSet(); - const supportsRules = new WeakSet(); - const layerRules = new WeakSet(); - function isStyleRule(rule) { - if (!rule) { - return false; - } - if (styleRules.has(rule)) { - return true; - } - if (rule.selectorText) { - styleRules.add(rule); - return true; - } - return false; - } - function isImportRule(rule) { - if (!rule) { - return false; - } - if (styleRules.has(rule)) { - return false; - } - if (importRules.has(rule)) { - return true; - } - if (rule.href) { - importRules.add(rule); - return true; - } - return false; - } - function isMediaRule(rule) { - if (!rule) { - return false; - } - if (styleRules.has(rule)) { - return false; - } - if (mediaRules.has(rule)) { - return true; - } - if (rule.media) { - mediaRules.add(rule); - return true; - } - return false; - } - function isSupportsRule(rule) { - if (!rule) { - return false; - } - if (styleRules.has(rule)) { - return false; - } - if (supportsRules.has(rule)) { - return true; - } - if (rule instanceof CSSSupportsRule) { - supportsRules.add(rule); - return true; - } - return false; - } - function isLayerRule(rule) { - if (!rule) { - return false; - } - if (styleRules.has(rule)) { - return false; - } - if (layerRules.has(rule)) { - return true; - } - if (isLayerRuleSupported && rule instanceof CSSLayerBlockRule) { - layerRules.add(rule); - return true; - } - return false; - } - - function scale(x, inLow, inHigh, outLow, outHigh) { - return ((x - inLow) * (outHigh - outLow)) / (inHigh - inLow) + outLow; - } - function clamp(x, min, max) { - return Math.min(max, Math.max(min, x)); - } - function multiplyMatrices(m1, m2) { - const result = []; - for (let i = 0, len = m1.length; i < len; i++) { - result[i] = []; - for (let j = 0, len2 = m2[0].length; j < len2; j++) { - let sum = 0; - for (let k = 0, len3 = m1[0].length; k < len3; k++) { - sum += m1[i][k] * m2[k][j]; - } - result[i][j] = sum; - } - } - return result; - } - - function createFilterMatrix(config) { - let m = Matrix.identity(); - if (config.sepia !== 0) { - m = multiplyMatrices(m, Matrix.sepia(config.sepia / 100)); - } - if (config.grayscale !== 0) { - m = multiplyMatrices(m, Matrix.grayscale(config.grayscale / 100)); - } - if (config.contrast !== 100) { - m = multiplyMatrices(m, Matrix.contrast(config.contrast / 100)); - } - if (config.brightness !== 100) { - m = multiplyMatrices(m, Matrix.brightness(config.brightness / 100)); - } - if (config.mode === 1) { - m = multiplyMatrices(m, Matrix.invertNHue()); - } - return m; - } - function applyColorMatrix([r, g, b], matrix) { - const rgb = [[r / 255], [g / 255], [b / 255], [1], [1]]; - const result = multiplyMatrices(matrix, rgb); - return [0, 1, 2].map((i) => - clamp(Math.round(result[i][0] * 255), 0, 255) - ); - } - const Matrix = { - identity() { - return [ - [1, 0, 0, 0, 0], - [0, 1, 0, 0, 0], - [0, 0, 1, 0, 0], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - invertNHue() { - return [ - [0.333, -0.667, -0.667, 0, 1], - [-0.667, 0.333, -0.667, 0, 1], - [-0.667, -0.667, 0.333, 0, 1], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - brightness(v) { - return [ - [v, 0, 0, 0, 0], - [0, v, 0, 0, 0], - [0, 0, v, 0, 0], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - contrast(v) { - const t = (1 - v) / 2; - return [ - [v, 0, 0, 0, t], - [0, v, 0, 0, t], - [0, 0, v, 0, t], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - sepia(v) { - return [ - [ - 0.393 + 0.607 * (1 - v), - 0.769 - 0.769 * (1 - v), - 0.189 - 0.189 * (1 - v), - 0, - 0 - ], - [ - 0.349 - 0.349 * (1 - v), - 0.686 + 0.314 * (1 - v), - 0.168 - 0.168 * (1 - v), - 0, - 0 - ], - [ - 0.272 - 0.272 * (1 - v), - 0.534 - 0.534 * (1 - v), - 0.131 + 0.869 * (1 - v), - 0, - 0 - ], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - }, - grayscale(v) { - return [ - [ - 0.2126 + 0.7874 * (1 - v), - 0.7152 - 0.7152 * (1 - v), - 0.0722 - 0.0722 * (1 - v), - 0, - 0 - ], - [ - 0.2126 - 0.2126 * (1 - v), - 0.7152 + 0.2848 * (1 - v), - 0.0722 - 0.0722 * (1 - v), - 0, - 0 - ], - [ - 0.2126 - 0.2126 * (1 - v), - 0.7152 - 0.7152 * (1 - v), - 0.0722 + 0.9278 * (1 - v), - 0, - 0 - ], - [0, 0, 0, 1, 0], - [0, 0, 0, 0, 1] - ]; - } - }; - - function getBgPole(theme) { - const isDarkScheme = theme.mode === 1; - const prop = isDarkScheme - ? "darkSchemeBackgroundColor" - : "lightSchemeBackgroundColor"; - return theme[prop]; - } - function getFgPole(theme) { - const isDarkScheme = theme.mode === 1; - const prop = isDarkScheme - ? "darkSchemeTextColor" - : "lightSchemeTextColor"; - return theme[prop]; - } - const colorModificationCache = new Map(); - function clearColorModificationCache() { - colorModificationCache.clear(); - } - const rgbCacheKeys = ["r", "g", "b", "a"]; - const themeCacheKeys$1 = [ - "mode", - "brightness", - "contrast", - "grayscale", - "sepia", - "darkSchemeBackgroundColor", - "darkSchemeTextColor", - "lightSchemeBackgroundColor", - "lightSchemeTextColor" - ]; - function getCacheId(rgb, theme) { - let resultId = ""; - rgbCacheKeys.forEach((key) => { - resultId += `${rgb[key]};`; - }); - themeCacheKeys$1.forEach((key) => { - resultId += `${theme[key]};`; - }); - return resultId; - } - function modifyColorWithCache( - rgb, - theme, - modifyHSL, - poleColor, - anotherPoleColor - ) { - let fnCache; - if (colorModificationCache.has(modifyHSL)) { - fnCache = colorModificationCache.get(modifyHSL); - } else { - fnCache = new Map(); - colorModificationCache.set(modifyHSL, fnCache); - } - const id = getCacheId(rgb, theme); - if (fnCache.has(id)) { - return fnCache.get(id); - } - const hsl = rgbToHSL(rgb); - const pole = poleColor == null ? null : parseToHSLWithCache(poleColor); - const anotherPole = - anotherPoleColor == null - ? null - : parseToHSLWithCache(anotherPoleColor); - const modified = modifyHSL(hsl, pole, anotherPole); - const {r, g, b, a} = hslToRGB(modified); - const matrix = createFilterMatrix(theme); - const [rf, gf, bf] = applyColorMatrix([r, g, b], matrix); - const color = - a === 1 - ? rgbToHexString({r: rf, g: gf, b: bf}) - : rgbToString({r: rf, g: gf, b: bf, a}); - fnCache.set(id, color); - return color; - } - function modifyLightSchemeColor(rgb, theme) { - const poleBg = getBgPole(theme); - const poleFg = getFgPole(theme); - return modifyColorWithCache( - rgb, - theme, - modifyLightModeHSL, - poleFg, - poleBg - ); - } - function modifyLightModeHSL({h, s, l, a}, poleFg, poleBg) { - const isDark = l < 0.5; - let isNeutral; - if (isDark) { - isNeutral = l < 0.2 || s < 0.12; - } else { - const isBlue = h > 200 && h < 280; - isNeutral = s < 0.24 || (l > 0.8 && isBlue); - } - let hx = h; - let sx = l; - if (isNeutral) { - if (isDark) { - hx = poleFg.h; - sx = poleFg.s; - } else { - hx = poleBg.h; - sx = poleBg.s; - } - } - const lx = scale(l, 0, 1, poleFg.l, poleBg.l); - return {h: hx, s: sx, l: lx, a}; - } - const MAX_BG_LIGHTNESS = 0.4; - function modifyBgHSL({h, s, l, a}, pole) { - const isDark = l < 0.5; - const isBlue = h > 200 && h < 280; - const isNeutral = s < 0.12 || (l > 0.8 && isBlue); - if (isDark) { - const lx = scale(l, 0, 0.5, 0, MAX_BG_LIGHTNESS); - if (isNeutral) { - const hx = pole.h; - const sx = pole.s; - return {h: hx, s: sx, l: lx, a}; - } - return {h, s, l: lx, a}; - } - let lx = scale(l, 0.5, 1, MAX_BG_LIGHTNESS, pole.l); - if (isNeutral) { - const hx = pole.h; - const sx = pole.s; - return {h: hx, s: sx, l: lx, a}; - } - let hx = h; - const isYellow = h > 60 && h < 180; - if (isYellow) { - const isCloserToGreen = h > 120; - if (isCloserToGreen) { - hx = scale(h, 120, 180, 135, 180); - } else { - hx = scale(h, 60, 120, 60, 105); - } - } - if (hx > 40 && hx < 80) { - lx *= 0.75; - } - return {h: hx, s, l: lx, a}; - } - function modifyBackgroundColor(rgb, theme) { - if (theme.mode === 0) { - return modifyLightSchemeColor(rgb, theme); - } - const pole = getBgPole(theme); - return modifyColorWithCache( - rgb, - {...theme, mode: 0}, - modifyBgHSL, - pole - ); - } - const MIN_FG_LIGHTNESS = 0.55; - function modifyBlueFgHue(hue) { - return scale(hue, 205, 245, 205, 220); - } - function modifyFgHSL({h, s, l, a}, pole) { - const isLight = l > 0.5; - const isNeutral = l < 0.2 || s < 0.24; - const isBlue = !isNeutral && h > 205 && h < 245; - if (isLight) { - const lx = scale(l, 0.5, 1, MIN_FG_LIGHTNESS, pole.l); - if (isNeutral) { - const hx = pole.h; - const sx = pole.s; - return {h: hx, s: sx, l: lx, a}; - } - let hx = h; - if (isBlue) { - hx = modifyBlueFgHue(h); - } - return {h: hx, s, l: lx, a}; - } - if (isNeutral) { - const hx = pole.h; - const sx = pole.s; - const lx = scale(l, 0, 0.5, pole.l, MIN_FG_LIGHTNESS); - return {h: hx, s: sx, l: lx, a}; - } - let hx = h; - let lx; - if (isBlue) { - hx = modifyBlueFgHue(h); - lx = scale(l, 0, 0.5, pole.l, Math.min(1, MIN_FG_LIGHTNESS + 0.05)); - } else { - lx = scale(l, 0, 0.5, pole.l, MIN_FG_LIGHTNESS); - } - return {h: hx, s, l: lx, a}; - } - function modifyForegroundColor(rgb, theme) { - if (theme.mode === 0) { - return modifyLightSchemeColor(rgb, theme); - } - const pole = getFgPole(theme); - return modifyColorWithCache( - rgb, - {...theme, mode: 0}, - modifyFgHSL, - pole - ); - } - function modifyBorderHSL({h, s, l, a}, poleFg, poleBg) { - const isDark = l < 0.5; - const isNeutral = l < 0.2 || s < 0.24; - let hx = h; - let sx = s; - if (isNeutral) { - if (isDark) { - hx = poleFg.h; - sx = poleFg.s; - } else { - hx = poleBg.h; - sx = poleBg.s; - } - } - const lx = scale(l, 0, 1, 0.5, 0.2); - return {h: hx, s: sx, l: lx, a}; - } - function modifyBorderColor(rgb, theme) { - if (theme.mode === 0) { - return modifyLightSchemeColor(rgb, theme); - } - const poleFg = getFgPole(theme); - const poleBg = getBgPole(theme); - return modifyColorWithCache( - rgb, - {...theme, mode: 0}, - modifyBorderHSL, - poleFg, - poleBg - ); - } - function modifyShadowColor(rgb, theme) { - return modifyBackgroundColor(rgb, theme); - } - function modifyGradientColor(rgb, theme) { - return modifyBackgroundColor(rgb, theme); - } - - const excludedSelectors = [ - "pre", - "pre *", - "code", - '[aria-hidden="true"]', - '[class*="fa-"]', - ".fa", - ".fab", - ".fad", - ".fal", - ".far", - ".fas", - ".fass", - ".fasr", - ".fat", - ".icofont", - '[style*="font-"]', - '[class*="icon"]', - '[class*="Icon"]', - '[class*="symbol"]', - '[class*="Symbol"]', - ".glyphicon", - '[class*="material-symbol"]', - '[class*="material-icon"]', - "mu", - '[class*="mu-"]', - ".typcn", - '[class*="vjs-"]' - ]; - function createTextStyle(config) { - const lines = []; - lines.push(`*:not(${excludedSelectors.join(", ")}) {`); - if (config.useFont && config.fontFamily) { - lines.push(` font-family: ${config.fontFamily} !important;`); - } - if (config.textStroke > 0) { - lines.push( - ` -webkit-text-stroke: ${config.textStroke}px !important;` - ); - lines.push(` text-stroke: ${config.textStroke}px !important;`); - } - lines.push("}"); - return lines.join("\n"); - } - - var FilterMode; - (function (FilterMode) { - FilterMode[(FilterMode["light"] = 0)] = "light"; - FilterMode[(FilterMode["dark"] = 1)] = "dark"; - })(FilterMode || (FilterMode = {})); - function getCSSFilterValue(config) { - const filters = []; - if (config.mode === FilterMode.dark) { - filters.push("invert(100%) hue-rotate(180deg)"); - } - if (config.brightness !== 100) { - filters.push(`brightness(${config.brightness}%)`); - } - if (config.contrast !== 100) { - filters.push(`contrast(${config.contrast}%)`); - } - if (config.grayscale !== 0) { - filters.push(`grayscale(${config.grayscale}%)`); - } - if (config.sepia !== 0) { - filters.push(`sepia(${config.sepia}%)`); - } - if (filters.length === 0) { - return null; - } - return filters.join(" "); - } - - function toSVGMatrix(matrix) { - return matrix - .slice(0, 4) - .map((m) => m.map((m) => m.toFixed(3)).join(" ")) - .join(" "); - } - function getSVGFilterMatrixValue(config) { - return toSVGMatrix(createFilterMatrix(config)); - } - - function hexify(number) { - return (number < 16 ? "0" : "") + number.toString(16); - } - function generateUID() { - if ("randomUUID" in crypto) { - const uuid = crypto.randomUUID(); - return ( - uuid.substring(0, 8) + - uuid.substring(9, 13) + - uuid.substring(14, 18) + - uuid.substring(19, 23) + - uuid.substring(24) - ); - } - if ("getRandomValues" in crypto) { - return Array.from(crypto.getRandomValues(new Uint8Array(16))) - .map((x) => hexify(x)) - .join(""); - } - return Math.floor(Math.random() * 2 ** 55).toString(36); - } - - const resolvers$1 = new Map(); - const rejectors = new Map(); - async function bgFetch(request) { - if (window.DarkReader?.Plugins?.fetch) { - return window.DarkReader.Plugins.fetch(request); - } - return new Promise((resolve, reject) => { - const id = generateUID(); - resolvers$1.set(id, resolve); - rejectors.set(id, reject); - chrome.runtime.sendMessage({ - type: MessageTypeCStoBG.FETCH, - data: request, - id - }); - }); - } - chrome.runtime.onMessage.addListener(({type, data, error, id}) => { - if (type === MessageTypeBGtoCS.FETCH_RESPONSE) { - const resolve = resolvers$1.get(id); - const reject = rejectors.get(id); - resolvers$1.delete(id); - rejectors.delete(id); - if (error) { - reject && reject(error); - } else { - resolve && resolve(data); - } - } - }); - - async function getOKResponse(url, mimeType, origin) { - const response = await fetch(url, { - cache: "force-cache", - credentials: "omit", - referrer: origin - }); - if ( - mimeType && - !response.headers.get("Content-Type").startsWith(mimeType) - ) { - throw new Error(`Mime type mismatch when loading ${url}`); - } - if (!response.ok) { - throw new Error( - `Unable to load ${url} ${response.status} ${response.statusText}` - ); - } - return response; - } - async function loadAsDataURL(url, mimeType) { - const response = await getOKResponse(url, mimeType); - return await readResponseAsDataURL(response); - } - async function loadAsBlob(url, mimeType) { - const response = await getOKResponse(url, mimeType); - return await response.blob(); - } - async function readResponseAsDataURL(response) { - const blob = await response.blob(); - const dataURL = await new Promise((resolve) => { - const reader = new FileReader(); - reader.onloadend = () => resolve(reader.result); - reader.readAsDataURL(blob); - }); - return dataURL; - } - async function loadAsText(url, mimeType, origin) { - const response = await getOKResponse(url, mimeType, origin); - return await response.text(); - } - - const MAX_FRAME_DURATION = 1000 / 60; - class AsyncQueue { - queue = []; - timerId = null; - addTask(task) { - this.queue.push(task); - this.scheduleFrame(); - } - stop() { - if (this.timerId !== null) { - cancelAnimationFrame(this.timerId); - this.timerId = null; - } - this.queue = []; - } - scheduleFrame() { - if (this.timerId) { - return; - } - this.timerId = requestAnimationFrame(() => { - this.timerId = null; - const start = Date.now(); - let cb; - while ((cb = this.queue.shift())) { - cb(); - if (Date.now() - start >= MAX_FRAME_DURATION) { - this.scheduleFrame(); - break; - } - } - }); - } - } - - const imageManager = new AsyncQueue(); - async function getImageDetails(url) { - return new Promise(async (resolve, reject) => { - try { - const dataURL = url.startsWith("data:") - ? url - : await getDataURL(url); - const blob = - tryConvertDataURLToBlobSync(dataURL) ?? - (await loadAsBlob(url)); - let image; - if (dataURL.startsWith("data:image/svg+xml")) { - image = await loadImage(dataURL); - } else { - image = - (await tryCreateImageBitmap(blob)) ?? - (await loadImage(dataURL)); - } - imageManager.addTask(() => { - const analysis = analyzeImage(image); - resolve({ - src: url, - dataURL: analysis.isLarge ? "" : dataURL, - width: image.width, - height: image.height, - ...analysis - }); - }); - } catch (error) { - reject(error); - } - }); - } - async function getDataURL(url) { - const parsedURL = new URL(url); - if (parsedURL.origin === location.origin) { - return await loadAsDataURL(url); - } - return await bgFetch({url, responseType: "data-url"}); - } - async function tryCreateImageBitmap(blob) { - try { - return await createImageBitmap(blob); - } catch (err) { - logWarn( - `Unable to create image bitmap for type ${blob.type}: ${String(err)}` - ); - return null; - } - } - const INCOMPLETE_DOC_LOADING_IMAGE_LIMIT = 256; - let loadingImagesCount = 0; - async function loadImage(url) { - return new Promise((resolve, reject) => { - const image = new Image(); - image.onload = () => resolve(image); - image.onerror = () => reject(`Unable to load image ${url}`); - if ( - ++loadingImagesCount <= INCOMPLETE_DOC_LOADING_IMAGE_LIMIT || - isReadyStateComplete() - ) { - image.src = url; - } else { - addReadyStateCompleteListener(() => (image.src = url)); - } - }); - } - const MAX_ANALYSIS_PIXELS_COUNT = 32 * 32; - let canvas; - let context; - function createCanvas() { - const maxWidth = MAX_ANALYSIS_PIXELS_COUNT; - const maxHeight = MAX_ANALYSIS_PIXELS_COUNT; - canvas = document.createElement("canvas"); - canvas.width = maxWidth; - canvas.height = maxHeight; - context = canvas.getContext("2d", {willReadFrequently: true}); - context.imageSmoothingEnabled = false; - } - function removeCanvas() { - canvas = null; - context = null; - } - const LARGE_IMAGE_PIXELS_COUNT = 512 * 512; - function analyzeImage(image) { - if (!canvas) { - createCanvas(); - } - let sw; - let sh; - if (image instanceof HTMLImageElement) { - sw = image.naturalWidth; - sh = image.naturalHeight; - } else { - sw = image.width; - sh = image.height; - } - if (sw === 0 || sh === 0) { - return { - isDark: false, - isLight: false, - isTransparent: false, - isLarge: false - }; - } - const isLarge = sw * sh > LARGE_IMAGE_PIXELS_COUNT; - const sourcePixelsCount = sw * sh; - const k = Math.min( - 1, - Math.sqrt(MAX_ANALYSIS_PIXELS_COUNT / sourcePixelsCount) - ); - const width = Math.ceil(sw * k); - const height = Math.ceil(sh * k); - context.clearRect(0, 0, width, height); - context.drawImage(image, 0, 0, sw, sh, 0, 0, width, height); - const imageData = context.getImageData(0, 0, width, height); - const d = imageData.data; - const TRANSPARENT_ALPHA_THRESHOLD = 0.05; - const DARK_LIGHTNESS_THRESHOLD = 0.4; - const LIGHT_LIGHTNESS_THRESHOLD = 0.7; - let transparentPixelsCount = 0; - let darkPixelsCount = 0; - let lightPixelsCount = 0; - let i, x, y; - let r, g, b, a; - let l; - for (y = 0; y < height; y++) { - for (x = 0; x < width; x++) { - i = 4 * (y * width + x); - r = d[i + 0]; - g = d[i + 1]; - b = d[i + 2]; - a = d[i + 3]; - if (a / 255 < TRANSPARENT_ALPHA_THRESHOLD) { - transparentPixelsCount++; - } else { - l = getSRGBLightness(r, g, b); - if (l < DARK_LIGHTNESS_THRESHOLD) { - darkPixelsCount++; - } - if (l > LIGHT_LIGHTNESS_THRESHOLD) { - lightPixelsCount++; - } - } - } - } - const totalPixelsCount = width * height; - const opaquePixelsCount = totalPixelsCount - transparentPixelsCount; - const DARK_IMAGE_THRESHOLD = 0.7; - const LIGHT_IMAGE_THRESHOLD = 0.7; - const TRANSPARENT_IMAGE_THRESHOLD = 0.1; - return { - isDark: darkPixelsCount / opaquePixelsCount >= DARK_IMAGE_THRESHOLD, - isLight: - lightPixelsCount / opaquePixelsCount >= LIGHT_IMAGE_THRESHOLD, - isTransparent: - transparentPixelsCount / totalPixelsCount >= - TRANSPARENT_IMAGE_THRESHOLD, - isLarge - }; - } - let isBlobURLSupported = null; - let canUseProxy = false; - let blobURLCheckRequested = false; - const blobURLCheckAwaiters = []; - document.addEventListener( - "__darkreader__inlineScriptsAllowed", - () => (canUseProxy = true), - {once: true} - ); - async function requestBlobURLCheck() { - if (!canUseProxy) { - return; - } - if (blobURLCheckRequested) { - return await new Promise((resolve) => - blobURLCheckAwaiters.push(resolve) - ); - } - blobURLCheckRequested = true; - await new Promise((resolve) => { - document.addEventListener( - "__darkreader__blobURLCheckResponse", - (e) => { - isBlobURLSupported = e.detail.blobURLAllowed; - resolve(); - blobURLCheckAwaiters.forEach((r) => r()); - blobURLCheckAwaiters.splice(0); - }, - {once: true} - ); - document.dispatchEvent( - new CustomEvent("__darkreader__blobURLCheckRequest") - ); - }); - } - function isBlobURLCheckResultReady() { - return isBlobURLSupported != null || !canUseProxy; - } - function onCSPError(err) { - if (err.blockedURI === "blob") { - isBlobURLSupported = false; - document.removeEventListener("securitypolicyviolation", onCSPError); - } - } - document.addEventListener("securitypolicyviolation", onCSPError); - const objectURLs = new Set(); - function getFilteredImageURL({dataURL, width, height}, theme) { - if (dataURL.startsWith("data:image/svg+xml")) { - dataURL = escapeXML(dataURL); - } - const matrix = getSVGFilterMatrixValue(theme); - const svg = [ - ``, - "", - '', - ``, - "", - "", - ``, - "" - ].join(""); - if (!isBlobURLSupported) { - return `data:image/svg+xml;base64,${btoa(svg)}`; - } - const bytes = new Uint8Array(svg.length); - for (let i = 0; i < svg.length; i++) { - bytes[i] = svg.charCodeAt(i); - } - const blob = new Blob([bytes], {type: "image/svg+xml"}); - const objectURL = URL.createObjectURL(blob); - objectURLs.add(objectURL); - return objectURL; - } - const xmlEscapeChars = { - "<": "<", - ">": ">", - "&": "&", - "'": "'", - '"': """ - }; - function escapeXML(str) { - return str.replace(/[<>&'"]/g, (c) => xmlEscapeChars[c] ?? c); - } - const dataURLBlobURLs = new Map(); - function tryConvertDataURLToBlobSync(dataURL) { - const colonIndex = dataURL.indexOf(":"); - const semicolonIndex = dataURL.indexOf(";", colonIndex + 1); - const commaIndex = dataURL.indexOf(",", semicolonIndex + 1); - const encoding = dataURL - .substring(semicolonIndex + 1, commaIndex) - .toLocaleLowerCase(); - const mediaType = dataURL.substring(colonIndex + 1, semicolonIndex); - if (encoding !== "base64" || !mediaType) { - return null; - } - const characters = atob(dataURL.substring(commaIndex + 1)); - const bytes = new Uint8Array(characters.length); - for (let i = 0; i < characters.length; i++) { - bytes[i] = characters.charCodeAt(i); - } - return new Blob([bytes], {type: mediaType}); - } - async function tryConvertDataURLToBlobURL(dataURL) { - if (!isBlobURLSupported) { - return null; - } - const hash = getHashCode(dataURL); - let blobURL = dataURLBlobURLs.get(hash); - if (blobURL) { - return blobURL; - } - let blob = tryConvertDataURLToBlobSync(dataURL); - if (!blob) { - const response = await fetch(dataURL); - blob = await response.blob(); - } - blobURL = URL.createObjectURL(blob); - dataURLBlobURLs.set(hash, blobURL); - return blobURL; - } - function cleanImageProcessingCache() { - imageManager && imageManager.stop(); - removeCanvas(); - objectURLs.forEach((u) => URL.revokeObjectURL(u)); - objectURLs.clear(); - dataURLBlobURLs.forEach((u) => URL.revokeObjectURL(u)); - dataURLBlobURLs.clear(); - } - - const gradientLength = "gradient".length; - const conicGradient = "conic-"; - const conicGradientLength = conicGradient.length; - const radialGradient = "radial-"; - const linearGradient = "linear-"; - function parseGradient(value) { - const result = []; - let index = 0; - let startIndex = conicGradient.length; - while ((index = value.indexOf("gradient", startIndex)) !== -1) { - let typeGradient; - [linearGradient, radialGradient, conicGradient].find( - (possibleType) => { - if (index - possibleType.length >= 0) { - const possibleGradient = value.substring( - index - possibleType.length, - index - ); - if (possibleGradient === possibleType) { - if ( - value.slice( - index - possibleType.length - 10, - index - possibleType.length - 1 - ) === "repeating" - ) { - typeGradient = `repeating-${possibleType}gradient`; - return true; - } - if ( - value.slice( - index - possibleType.length - 8, - index - possibleType.length - 1 - ) === "-webkit" - ) { - typeGradient = `-webkit-${possibleType}gradient`; - return true; - } - typeGradient = `${possibleType}gradient`; - return true; - } - } - } - ); - if (!typeGradient) { - break; - } - const {start, end} = getParenthesesRange( - value, - index + gradientLength - ); - const match = value.substring(start + 1, end - 1); - startIndex = end + 1 + conicGradientLength; - result.push({ - typeGradient, - match, - offset: typeGradient.length + 2, - index: index - typeGradient.length + gradientLength, - hasComma: true - }); - } - if (result.length) { - result[result.length - 1].hasComma = false; - } - return result; - } - - function getPriority(ruleStyle, property) { - return Boolean(ruleStyle && ruleStyle.getPropertyPriority(property)); - } - function getModifiableCSSDeclaration( - property, - value, - rule, - variablesStore, - ignoreImageSelectors, - isCancelled - ) { - let modifier = null; - if (property.startsWith("--")) { - modifier = getVariableModifier( - variablesStore, - property, - value, - rule, - ignoreImageSelectors, - isCancelled - ); - } else if (value.includes("var(")) { - modifier = getVariableDependantModifier( - variablesStore, - property, - value - ); - } else if (property === "color-scheme") { - modifier = getColorSchemeModifier(); - } else if (property === "scrollbar-color") { - modifier = getScrollbarColorModifier(value); - } else if ( - (property.includes("color") && - property !== "-webkit-print-color-adjust") || - property === "fill" || - property === "stroke" || - property === "stop-color" - ) { - if ( - property.startsWith("border") && - property !== "border-color" && - value === "initial" - ) { - const borderSideProp = property.substring( - 0, - property.length - 6 - ); - const borderSideVal = - rule.style.getPropertyValue(borderSideProp); - if ( - borderSideVal.startsWith("0px") || - borderSideVal === "none" - ) { - property = borderSideProp; - modifier = borderSideVal; - } else { - modifier = value; - } - } else { - modifier = getColorModifier(property, value, rule); - } - } else if ( - property === "background-image" || - property === "list-style-image" - ) { - modifier = getBgImageModifier( - value, - rule, - ignoreImageSelectors, - isCancelled - ); - } else if (property.includes("shadow")) { - modifier = getShadowModifier(value); - } - if (!modifier) { - return null; - } - return { - property, - value: modifier, - important: getPriority(rule.style, property), - sourceValue: value - }; - } - function joinSelectors(...selectors) { - return selectors.filter(Boolean).join(", "); - } - function getModifiedUserAgentStyle(theme, isIFrame, styleSystemControls) { - const lines = []; - if (!isIFrame) { - lines.push("html {"); - lines.push( - ` background-color: ${modifyBackgroundColor({r: 255, g: 255, b: 255}, theme)} !important;` - ); - lines.push("}"); - } - if (theme.mode === 1) { - lines.push("html {"); - lines.push(` color-scheme: dark !important;`); - lines.push("}"); - lines.push("iframe {"); - lines.push(` color-scheme: dark !important;`); - lines.push("}"); - } - const bgSelectors = joinSelectors( - isIFrame ? "" : "html, body", - styleSystemControls ? "input, textarea, select, button, dialog" : "" - ); - if (bgSelectors) { - lines.push(`${bgSelectors} {`); - lines.push( - ` background-color: ${modifyBackgroundColor({r: 255, g: 255, b: 255}, theme)};` - ); - lines.push("}"); - } - lines.push( - `${joinSelectors("html, body", styleSystemControls ? "input, textarea, select, button" : "")} {` - ); - lines.push( - ` border-color: ${modifyBorderColor({r: 76, g: 76, b: 76}, theme)};` - ); - lines.push( - ` color: ${modifyForegroundColor({r: 0, g: 0, b: 0}, theme)};` - ); - lines.push("}"); - lines.push("a {"); - lines.push( - ` color: ${modifyForegroundColor({r: 0, g: 64, b: 255}, theme)};` - ); - lines.push("}"); - lines.push("table {"); - lines.push( - ` border-color: ${modifyBorderColor({r: 128, g: 128, b: 128}, theme)};` - ); - lines.push("}"); - lines.push("mark {"); - lines.push( - ` color: ${modifyForegroundColor({r: 0, g: 0, b: 0}, theme)};` - ); - lines.push("}"); - lines.push("::placeholder {"); - lines.push( - ` color: ${modifyForegroundColor({r: 169, g: 169, b: 169}, theme)};` - ); - lines.push("}"); - lines.push("input:-webkit-autofill,"); - lines.push("textarea:-webkit-autofill,"); - lines.push("select:-webkit-autofill {"); - lines.push( - ` background-color: ${modifyBackgroundColor({r: 250, g: 255, b: 189}, theme)} !important;` - ); - lines.push( - ` color: ${modifyForegroundColor({r: 0, g: 0, b: 0}, theme)} !important;` - ); - lines.push("}"); - if (theme.scrollbarColor) { - lines.push(getModifiedScrollbarStyle(theme)); - } - if (theme.selectionColor) { - lines.push(getModifiedSelectionStyle(theme)); - } - if (isLayerRuleSupported) { - lines.unshift("@layer {"); - lines.push("}"); - } - return lines.join("\n"); - } - function getSelectionColor(theme) { - let backgroundColorSelection; - let foregroundColorSelection; - if (theme.selectionColor === "auto") { - backgroundColorSelection = modifyBackgroundColor( - {r: 0, g: 96, b: 212}, - {...theme, grayscale: 0} - ); - foregroundColorSelection = modifyForegroundColor( - {r: 255, g: 255, b: 255}, - {...theme, grayscale: 0} - ); - } else { - const rgb = parseColorWithCache(theme.selectionColor); - const hsl = rgbToHSL(rgb); - backgroundColorSelection = theme.selectionColor; - if (hsl.l < 0.5) { - foregroundColorSelection = "#FFF"; - } else { - foregroundColorSelection = "#000"; - } - } - return {backgroundColorSelection, foregroundColorSelection}; - } - function getModifiedSelectionStyle(theme) { - const lines = []; - const modifiedSelectionColor = getSelectionColor(theme); - const backgroundColorSelection = - modifiedSelectionColor.backgroundColorSelection; - const foregroundColorSelection = - modifiedSelectionColor.foregroundColorSelection; - ["::selection", "::-moz-selection"].forEach((selection) => { - lines.push(`${selection} {`); - lines.push( - ` background-color: ${backgroundColorSelection} !important;` - ); - lines.push(` color: ${foregroundColorSelection} !important;`); - lines.push("}"); - }); - return lines.join("\n"); - } - function getModifiedScrollbarStyle(theme) { - let colorTrack; - let colorThumb; - if (theme.scrollbarColor === "auto") { - colorTrack = modifyBackgroundColor({r: 241, g: 241, b: 241}, theme); - colorThumb = modifyBackgroundColor({r: 176, g: 176, b: 176}, theme); - } else { - const rgb = parseColorWithCache(theme.scrollbarColor); - const hsl = rgbToHSL(rgb); - const darken = (darker) => ({ - ...hsl, - l: clamp(hsl.l - darker, 0, 1) - }); - colorTrack = hslToString(darken(0.4)); - colorThumb = hslToString(hsl); - } - return [ - `* {`, - ` scrollbar-color: ${colorThumb} ${colorTrack};`, - `}` - ].join("\n"); - } - function getModifiedFallbackStyle(theme, {strict}) { - const factory = defaultFallbackFactory; - return factory(theme, {strict}); - } - function defaultFallbackFactory(theme, {strict}) { - const lines = []; - lines.push( - `html, body, ${strict ? "body :not(iframe)" : "body > :not(iframe)"} {` - ); - lines.push( - ` background-color: ${modifyBackgroundColor({r: 255, g: 255, b: 255}, theme)} !important;` - ); - lines.push( - ` border-color: ${modifyBorderColor({r: 64, g: 64, b: 64}, theme)} !important;` - ); - lines.push( - ` color: ${modifyForegroundColor({r: 0, g: 0, b: 0}, theme)} !important;` - ); - lines.push("}"); - lines.push(`div[style*="background-color: rgb(135, 135, 135)"] {`); - lines.push(` background-color: #878787 !important;`); - lines.push("}"); - return lines.join("\n"); - } - const unparsableColors = new Set([ - "inherit", - "transparent", - "initial", - "currentcolor", - "none", - "unset", - "auto" - ]); - function getColorModifier(prop, value, rule) { - if (unparsableColors.has(value.toLowerCase())) { - return value; - } - const rgb = parseColorWithCache(value); - if (!rgb) { - return null; - } - if (prop.includes("background")) { - if ( - (rule.style.webkitMaskImage && - rule.style.webkitMaskImage !== "none") || - (rule.style.webkitMask && - !rule.style.webkitMask.startsWith("none")) || - (rule.style.mask && rule.style.mask !== "none") || - (rule.style.getPropertyValue("mask-image") && - rule.style.getPropertyValue("mask-image") !== "none") - ) { - return (theme) => modifyForegroundColor(rgb, theme); - } - return (theme) => modifyBackgroundColor(rgb, theme); - } - if (prop.includes("border") || prop.includes("outline")) { - return (theme) => modifyBorderColor(rgb, theme); - } - return (theme) => modifyForegroundColor(rgb, theme); - } - const imageDetailsCache = new Map(); - const awaitingForImageLoading = new Map(); - function shouldIgnoreImage(selectorText, selectors) { - if (!selectorText || selectors.length === 0) { - return false; - } - if (selectors.some((s) => s === "*")) { - return true; - } - const ruleSelectors = selectorText.split(/,\s*/g); - for (let i = 0; i < selectors.length; i++) { - const ignoredSelector = selectors[i]; - if (ruleSelectors.some((s) => s === ignoredSelector)) { - return true; - } - } - return false; - } - function getBgImageModifier( - value, - rule, - ignoreImageSelectors, - isCancelled - ) { - try { - if (shouldIgnoreImage(rule.selectorText, ignoreImageSelectors)) { - return value; - } - const gradients = parseGradient(value); - const urls = getMatches(cssURLRegex, value); - if (urls.length === 0 && gradients.length === 0) { - return value; - } - const getIndices = (matches) => { - let index = 0; - return matches.map((match) => { - const valueIndex = value.indexOf(match, index); - index = valueIndex + match.length; - return {match, index: valueIndex}; - }); - }; - const matches = gradients - .map((i) => ({type: "gradient", ...i})) - .concat( - getIndices(urls).map((i) => ({ - type: "url", - offset: 0, - ...i - })) - ) - .sort((a, b) => (a.index > b.index ? 1 : -1)); - const getGradientModifier = (gradient) => { - const {typeGradient, match, hasComma} = gradient; - const partsRegex = - /([^\(\),]+(\([^\(\)]*(\([^\(\)]*\)*[^\(\)]*)?\))?([^\(\), ]|( (?!calc)))*),?/g; - const colorStopRegex = - /^(from|color-stop|to)\(([^\(\)]*?,\s*)?(.*?)\)$/; - const parts = getMatches(partsRegex, match, 1).map((part) => { - part = part.trim(); - let rgb = parseColorWithCache(part); - if (rgb) { - return (theme) => modifyGradientColor(rgb, theme); - } - const space = part.lastIndexOf(" "); - rgb = parseColorWithCache(part.substring(0, space)); - if (rgb) { - return (theme) => - `${modifyGradientColor(rgb, theme)} ${part.substring(space + 1)}`; - } - const colorStopMatch = part.match(colorStopRegex); - if (colorStopMatch) { - rgb = parseColorWithCache(colorStopMatch[3]); - if (rgb) { - return (theme) => - `${colorStopMatch[1]}(${colorStopMatch[2] ? `${colorStopMatch[2]}, ` : ""}${modifyGradientColor(rgb, theme)})`; - } - } - return () => part; - }); - return (theme) => { - return `${typeGradient}(${parts.map((modify) => modify(theme)).join(", ")})${hasComma ? ", " : ""}`; - }; - }; - const getURLModifier = (urlValue) => { - let url = getCSSURLValue(urlValue); - const isURLEmpty = url.length === 0; - const {parentStyleSheet} = rule; - const baseURL = - parentStyleSheet && parentStyleSheet.href - ? getCSSBaseBath(parentStyleSheet.href) - : parentStyleSheet?.ownerNode?.baseURI || - location.origin; - url = getAbsoluteURL(baseURL, url); - return async (theme) => { - if (isURLEmpty) { - return "url('')"; - } - let imageDetails = null; - if (imageDetailsCache.has(url)) { - imageDetails = imageDetailsCache.get(url); - } else { - try { - if (!isBlobURLCheckResultReady()) { - await requestBlobURLCheck(); - } - if (awaitingForImageLoading.has(url)) { - const awaiters = - awaitingForImageLoading.get(url); - imageDetails = await new Promise((resolve) => - awaiters.push(resolve) - ); - if (!imageDetails) { - return null; - } - } else { - awaitingForImageLoading.set(url, []); - imageDetails = await getImageDetails(url); - imageDetailsCache.set(url, imageDetails); - awaitingForImageLoading - .get(url) - .forEach((resolve) => - resolve(imageDetails) - ); - awaitingForImageLoading.delete(url); - } - if (isCancelled()) { - return null; - } - } catch (err) { - logWarn(err); - if (awaitingForImageLoading.has(url)) { - awaitingForImageLoading - .get(url) - .forEach((resolve) => resolve(null)); - awaitingForImageLoading.delete(url); - } - } - } - if (imageDetails) { - const bgImageValue = getBgImageValue( - imageDetails, - theme - ); - if (bgImageValue) { - return bgImageValue; - } - } - if (url.startsWith("data:")) { - const blobURL = await tryConvertDataURLToBlobURL(url); - if (blobURL) { - return `url("${blobURL}")`; - } - } - return `url("${url}")`; - }; - }; - const getBgImageValue = (imageDetails, theme) => { - const {isDark, isLight, isTransparent, isLarge, width} = - imageDetails; - let result; - const logSrc = imageDetails.src.startsWith("data:") - ? "data:" - : imageDetails.src; - if (isLarge && isLight && !isTransparent && theme.mode === 1) { - logInfo(`Hiding large light image ${logSrc}`); - result = "none"; - } else if ( - isDark && - isTransparent && - theme.mode === 1 && - width > 2 - ) { - logInfo(`Inverting dark image ${logSrc}`); - const inverted = getFilteredImageURL(imageDetails, { - ...theme, - sepia: clamp(theme.sepia + 10, 0, 100) - }); - result = `url("${inverted}")`; - } else if (isLight && !isTransparent && theme.mode === 1) { - logInfo(`Dimming light image ${logSrc}`); - const dimmed = getFilteredImageURL(imageDetails, theme); - result = `url("${dimmed}")`; - } else if (theme.mode === 0 && isLight) { - logInfo(`Applying filter to image ${logSrc}`); - const filtered = getFilteredImageURL(imageDetails, { - ...theme, - brightness: clamp(theme.brightness - 10, 5, 200), - sepia: clamp(theme.sepia + 10, 0, 100) - }); - result = `url("${filtered}")`; - } else { - logInfo(`Not modifying the image ${logSrc}`); - result = null; - } - return result; - }; - const modifiers = []; - let matchIndex = 0; - let prevHasComma = false; - matches.forEach( - ({type, match, index, typeGradient, hasComma, offset}, i) => { - const matchStart = index; - const prefixStart = matchIndex; - const matchEnd = matchStart + match.length + offset; - matchIndex = matchEnd; - if (prefixStart !== matchStart) { - if (prevHasComma) { - modifiers.push(() => { - let betweenValue = value.substring( - prefixStart, - matchStart - ); - if (betweenValue[0] === ",") { - betweenValue = betweenValue.substring(1); - } - return betweenValue; - }); - } else { - modifiers.push(() => - value.substring(prefixStart, matchStart) - ); - } - } - prevHasComma = hasComma || false; - if (type === "url") { - modifiers.push(getURLModifier(match)); - } else if (type === "gradient") { - modifiers.push( - getGradientModifier({ - match, - index, - typeGradient: typeGradient, - hasComma: hasComma || false, - offset - }) - ); - } - if (i === matches.length - 1) { - modifiers.push(() => value.substring(matchEnd)); - } - } - ); - return (theme) => { - const results = modifiers - .filter(Boolean) - .map((modify) => modify(theme)); - if (results.some((r) => r instanceof Promise)) { - return Promise.all(results).then((asyncResults) => { - return asyncResults.filter(Boolean).join(""); - }); - } - const combinedResult = results.join(""); - if (combinedResult.endsWith(", initial")) { - return combinedResult.slice(0, -9); - } - return combinedResult; - }; - } catch (err) { - return null; - } - } - function getShadowModifierWithInfo(value) { - try { - let index = 0; - const colorMatches = getMatches( - /(^|\s)(?!calc)([a-z]+\(.+?\)|#[0-9a-f]+|[a-z]+)(.*?(inset|outset)?($|,))/gi, - value, - 2 - ); - let notParsed = 0; - const modifiers = colorMatches.map((match, i) => { - const prefixIndex = index; - const matchIndex = value.indexOf(match, index); - const matchEnd = matchIndex + match.length; - index = matchEnd; - const rgb = parseColorWithCache(match); - if (!rgb) { - notParsed++; - return () => value.substring(prefixIndex, matchEnd); - } - return (theme) => - `${value.substring(prefixIndex, matchIndex)}${modifyShadowColor(rgb, theme)}${i === colorMatches.length - 1 ? value.substring(matchEnd) : ""}`; - }); - return (theme) => { - const modified = modifiers - .map((modify) => modify(theme)) - .join(""); - return { - matchesLength: colorMatches.length, - unparseableMatchesLength: notParsed, - result: modified - }; - }; - } catch (err) { - return null; - } - } - function getShadowModifier(value) { - const shadowModifier = getShadowModifierWithInfo(value); - if (!shadowModifier) { - return null; - } - return (theme) => shadowModifier(theme).result; - } - function getScrollbarColorModifier(value) { - const colorsMatch = value.match( - /^\s*([a-z]+(\(.*\))?)\s+([a-z]+(\(.*\))?)\s*$/ - ); - if (!colorsMatch) { - return value; - } - const thumb = parseColorWithCache(colorsMatch[1]); - const track = parseColorWithCache(colorsMatch[3]); - if (!thumb || !track) { - return null; - } - return (theme) => - `${modifyForegroundColor(thumb, theme)} ${modifyBackgroundColor(thumb, theme)}`; - } - function getColorSchemeModifier() { - return (theme) => (theme.mode === 0 ? "dark light" : "dark"); - } - function getVariableModifier( - variablesStore, - prop, - value, - rule, - ignoredImgSelectors, - isCancelled - ) { - return variablesStore.getModifierForVariable({ - varName: prop, - sourceValue: value, - rule, - ignoredImgSelectors, - isCancelled - }); - } - function getVariableDependantModifier(variablesStore, prop, value) { - return variablesStore.getModifierForVarDependant(prop, value); - } - function cleanModificationCache() { - clearColorModificationCache(); - imageDetailsCache.clear(); - cleanImageProcessingCache(); - awaitingForImageLoading.clear(); - } - - const VAR_TYPE_BGCOLOR = 1 << 0; - const VAR_TYPE_TEXTCOLOR = 1 << 1; - const VAR_TYPE_BORDERCOLOR = 1 << 2; - const VAR_TYPE_BGIMG = 1 << 3; - class VariablesStore { - varTypes = new Map(); - rulesQueue = new Set(); - inlineStyleQueue = []; - definedVars = new Set(); - varRefs = new Map(); - unknownColorVars = new Set(); - unknownBgVars = new Set(); - undefinedVars = new Set(); - initialVarTypes = new Map(); - changedTypeVars = new Set(); - typeChangeSubscriptions = new Map(); - unstableVarValues = new Map(); - onRootVariableDefined; - clear() { - this.varTypes.clear(); - this.rulesQueue.clear(); - this.inlineStyleQueue.splice(0); - this.definedVars.clear(); - this.varRefs.clear(); - this.unknownColorVars.clear(); - this.unknownBgVars.clear(); - this.undefinedVars.clear(); - this.initialVarTypes.clear(); - this.changedTypeVars.clear(); - this.typeChangeSubscriptions.clear(); - this.unstableVarValues.clear(); - } - isVarType(varName, typeNum) { - return ( - this.varTypes.has(varName) && - (this.varTypes.get(varName) & typeNum) > 0 - ); - } - addRulesForMatching(rules) { - this.rulesQueue.add(rules); - } - addInlineStyleForMatching(style) { - this.inlineStyleQueue.push(style); - } - matchVariablesAndDependents() { - if ( - this.rulesQueue.size === 0 && - this.inlineStyleQueue.length === 0 - ) { - return; - } - this.changedTypeVars.clear(); - this.initialVarTypes = new Map(this.varTypes); - this.collectRootVariables(); - this.collectVariablesAndVarDep(); - this.collectRootVarDependents(); - this.varRefs.forEach((refs, v) => { - refs.forEach((r) => { - if (this.varTypes.has(v)) { - this.resolveVariableType(r, this.varTypes.get(v)); - } - }); - }); - this.unknownColorVars.forEach((v) => { - if (this.unknownBgVars.has(v)) { - this.unknownColorVars.delete(v); - this.unknownBgVars.delete(v); - this.resolveVariableType(v, VAR_TYPE_BGCOLOR); - } else if ( - this.isVarType( - v, - VAR_TYPE_BGCOLOR | - VAR_TYPE_TEXTCOLOR | - VAR_TYPE_BORDERCOLOR - ) - ) { - this.unknownColorVars.delete(v); - } else { - this.undefinedVars.add(v); - } - }); - this.unknownBgVars.forEach((v) => { - const hasColor = - this.findVarRef(v, (ref) => { - return ( - this.unknownColorVars.has(ref) || - this.isVarType( - ref, - VAR_TYPE_BGCOLOR | - VAR_TYPE_TEXTCOLOR | - VAR_TYPE_BORDERCOLOR - ) - ); - }) != null; - if (hasColor) { - this.iterateVarRefs(v, (ref) => { - this.resolveVariableType(ref, VAR_TYPE_BGCOLOR); - }); - } else if ( - this.isVarType(v, VAR_TYPE_BGCOLOR | VAR_TYPE_BGIMG) - ) { - this.unknownBgVars.delete(v); - } else { - this.undefinedVars.add(v); - } - }); - this.changedTypeVars.forEach((varName) => { - if (this.typeChangeSubscriptions.has(varName)) { - this.typeChangeSubscriptions - .get(varName) - .forEach((callback) => { - callback(); - }); - } - }); - this.changedTypeVars.clear(); - } - getModifierForVariable(options) { - return (theme) => { - const { - varName, - sourceValue, - rule, - ignoredImgSelectors, - isCancelled - } = options; - const getDeclarations = () => { - const declarations = []; - const addModifiedValue = ( - typeNum, - varNameWrapper, - colorModifier - ) => { - if (!this.isVarType(varName, typeNum)) { - return; - } - const property = varNameWrapper(varName); - let modifiedValue; - if (isVarDependant(sourceValue)) { - if (isConstructedColorVar(sourceValue)) { - let value = insertVarValues( - sourceValue, - this.unstableVarValues - ); - if (!value) { - value = - typeNum === VAR_TYPE_BGCOLOR - ? "#ffffff" - : "#000000"; - } - modifiedValue = colorModifier(value, theme); - } else { - modifiedValue = replaceCSSVariablesNames( - sourceValue, - (v) => varNameWrapper(v), - (fallback) => colorModifier(fallback, theme) - ); - } - } else { - modifiedValue = colorModifier(sourceValue, theme); - } - declarations.push({ - property, - value: modifiedValue - }); - }; - addModifiedValue( - VAR_TYPE_BGCOLOR, - wrapBgColorVariableName, - tryModifyBgColor - ); - addModifiedValue( - VAR_TYPE_TEXTCOLOR, - wrapTextColorVariableName, - tryModifyTextColor - ); - addModifiedValue( - VAR_TYPE_BORDERCOLOR, - wrapBorderColorVariableName, - tryModifyBorderColor - ); - if (this.isVarType(varName, VAR_TYPE_BGIMG)) { - const property = wrapBgImgVariableName(varName); - let modifiedValue = sourceValue; - if (isVarDependant(sourceValue)) { - modifiedValue = replaceCSSVariablesNames( - sourceValue, - (v) => wrapBgColorVariableName(v), - (fallback) => tryModifyBgColor(fallback, theme) - ); - } - const bgModifier = getBgImageModifier( - modifiedValue, - rule, - ignoredImgSelectors, - isCancelled - ); - modifiedValue = - typeof bgModifier === "function" - ? bgModifier(theme) - : bgModifier; - declarations.push({ - property, - value: modifiedValue - }); - } - return declarations; - }; - const callbacks = new Set(); - const addListener = (onTypeChange) => { - const callback = () => { - const decs = getDeclarations(); - onTypeChange(decs); - }; - callbacks.add(callback); - this.subscribeForVarTypeChange(varName, callback); - }; - const removeListeners = () => { - callbacks.forEach((callback) => { - this.unsubscribeFromVariableTypeChanges( - varName, - callback - ); - }); - }; - return { - declarations: getDeclarations(), - onTypeChange: {addListener, removeListeners} - }; - }; - } - getModifierForVarDependant(property, sourceValue) { - const isConstructedColor = sourceValue.match(/^\s*(rgb|hsl)a?\(/); - const isSimpleConstructedColor = sourceValue.match( - /^rgba?\(var\(--[\-_A-Za-z0-9]+\)(\s*,?\/?\s*0?\.\d+)?\)$/ - ); - if (isConstructedColor && !isSimpleConstructedColor) { - const isBg = property.startsWith("background"); - const isText = isTextColorProperty(property); - return (theme) => { - let value = insertVarValues( - sourceValue, - this.unstableVarValues - ); - if (!value) { - value = isBg ? "#ffffff" : "#000000"; - } - const modifier = isBg - ? tryModifyBgColor - : isText - ? tryModifyTextColor - : tryModifyBorderColor; - return modifier(value, theme); - }; - } - if ( - property === "background-color" || - (isSimpleConstructedColor && property === "background") - ) { - return (theme) => { - const defaultFallback = tryModifyBgColor( - isConstructedColor ? "255, 255, 255" : "#ffffff", - theme - ); - return replaceCSSVariablesNames( - sourceValue, - (v) => wrapBgColorVariableName(v), - (fallback) => tryModifyBgColor(fallback, theme), - defaultFallback - ); - }; - } - if (isTextColorProperty(property)) { - return (theme) => { - const defaultFallback = tryModifyTextColor( - isConstructedColor ? "0, 0, 0" : "#000000", - theme - ); - return replaceCSSVariablesNames( - sourceValue, - (v) => wrapTextColorVariableName(v), - (fallback) => tryModifyTextColor(fallback, theme), - defaultFallback - ); - }; - } - if ( - property === "background" || - property === "background-image" || - property === "box-shadow" - ) { - return (theme) => { - const unknownVars = new Set(); - const modify = () => { - const variableReplaced = replaceCSSVariablesNames( - sourceValue, - (v) => { - if (this.isVarType(v, VAR_TYPE_BGCOLOR)) { - return wrapBgColorVariableName(v); - } - if (this.isVarType(v, VAR_TYPE_BGIMG)) { - return wrapBgImgVariableName(v); - } - unknownVars.add(v); - return v; - }, - (fallback) => tryModifyBgColor(fallback, theme) - ); - if (property === "box-shadow") { - const shadowModifier = - getShadowModifierWithInfo(variableReplaced); - const modifiedShadow = shadowModifier(theme); - if ( - modifiedShadow.unparseableMatchesLength !== - modifiedShadow.matchesLength - ) { - return modifiedShadow.result; - } - } - return variableReplaced; - }; - const modified = modify(); - if (unknownVars.size > 0) { - const isFallbackResolved = modified.match( - /^var\(.*?, (var\(--darkreader-bg--.*\))|(#[0-9A-Fa-f]+)|([a-z]+)|(rgba?\(.+\))|(hsla?\(.+\))\)$/ - ); - if (isFallbackResolved) { - return modified; - } - return new Promise((resolve) => { - for (const unknownVar of unknownVars.values()) { - const callback = () => { - this.unsubscribeFromVariableTypeChanges( - unknownVar, - callback - ); - const newValue = modify(); - resolve(newValue); - }; - this.subscribeForVarTypeChange( - unknownVar, - callback - ); - } - }); - } - return modified; - }; - } - if ( - property.startsWith("border") || - property.startsWith("outline") - ) { - return (theme) => { - return replaceCSSVariablesNames( - sourceValue, - (v) => wrapBorderColorVariableName(v), - (fallback) => tryModifyBorderColor(fallback, theme) - ); - }; - } - return null; - } - subscribeForVarTypeChange(varName, callback) { - if (!this.typeChangeSubscriptions.has(varName)) { - this.typeChangeSubscriptions.set(varName, new Set()); - } - const rootStore = this.typeChangeSubscriptions.get(varName); - if (!rootStore.has(callback)) { - rootStore.add(callback); - } - } - unsubscribeFromVariableTypeChanges(varName, callback) { - if (this.typeChangeSubscriptions.has(varName)) { - this.typeChangeSubscriptions.get(varName).delete(callback); - } - } - collectVariablesAndVarDep() { - this.rulesQueue.forEach((rules) => { - iterateCSSRules(rules, (rule) => { - if (rule.style) { - this.collectVarsFromCSSDeclarations(rule.style); - } - }); - }); - this.inlineStyleQueue.forEach((style) => { - this.collectVarsFromCSSDeclarations(style); - }); - this.rulesQueue.clear(); - this.inlineStyleQueue.splice(0); - } - collectVarsFromCSSDeclarations(style) { - iterateCSSDeclarations(style, (property, value) => { - if (isVariable(property)) { - this.inspectVariable(property, value); - } - if (isVarDependant(value)) { - this.inspectVarDependant(property, value); - } - }); - } - shouldProcessRootVariables() { - return ( - this.rulesQueue.size > 0 && - document.documentElement.getAttribute("style")?.includes("--") - ); - } - collectRootVariables() { - if (!this.shouldProcessRootVariables()) { - return; - } - iterateCSSDeclarations( - document.documentElement.style, - (property, value) => { - if (isVariable(property)) { - this.inspectVariable(property, value); - } - } - ); - } - inspectVariable(varName, value) { - this.unstableVarValues.set(varName, value); - if (isVarDependant(value) && isConstructedColorVar(value)) { - this.unknownColorVars.add(varName); - this.definedVars.add(varName); - } - if (this.definedVars.has(varName)) { - return; - } - this.definedVars.add(varName); - const isColor = Boolean( - value.match(rawRGBSpaceRegex) || - value.match(rawRGBCommaRegex) || - parseColorWithCache(value) - ); - if (isColor) { - this.unknownColorVars.add(varName); - } else if ( - value.includes("url(") || - value.includes("linear-gradient(") || - value.includes("radial-gradient(") - ) { - this.resolveVariableType(varName, VAR_TYPE_BGIMG); - } - } - resolveVariableType(varName, typeNum) { - const initialType = this.initialVarTypes.get(varName) || 0; - const currentType = this.varTypes.get(varName) || 0; - const newType = currentType | typeNum; - this.varTypes.set(varName, newType); - if (newType !== initialType || this.undefinedVars.has(varName)) { - this.changedTypeVars.add(varName); - this.undefinedVars.delete(varName); - } - this.unknownColorVars.delete(varName); - this.unknownBgVars.delete(varName); - } - collectRootVarDependents() { - if (!this.shouldProcessRootVariables()) { - return; - } - iterateCSSDeclarations( - document.documentElement.style, - (property, value) => { - if (isVarDependant(value)) { - this.inspectVarDependant(property, value); - } - } - ); - } - inspectVarDependant(property, value) { - if (isVariable(property)) { - this.iterateVarDeps(value, (ref) => { - if (!this.varRefs.has(property)) { - this.varRefs.set(property, new Set()); - } - this.varRefs.get(property).add(ref); - }); - } else if ( - property === "background-color" || - property === "box-shadow" - ) { - this.iterateVarDeps(value, (v) => - this.resolveVariableType(v, VAR_TYPE_BGCOLOR) - ); - } else if (isTextColorProperty(property)) { - this.iterateVarDeps(value, (v) => - this.resolveVariableType(v, VAR_TYPE_TEXTCOLOR) - ); - } else if ( - property.startsWith("border") || - property.startsWith("outline") - ) { - this.iterateVarDeps(value, (v) => - this.resolveVariableType(v, VAR_TYPE_BORDERCOLOR) - ); - } else if ( - property === "background" || - property === "background-image" - ) { - this.iterateVarDeps(value, (v) => { - if (this.isVarType(v, VAR_TYPE_BGCOLOR | VAR_TYPE_BGIMG)) { - return; - } - const isBgColor = - this.findVarRef(v, (ref) => { - return ( - this.unknownColorVars.has(ref) || - this.isVarType( - ref, - VAR_TYPE_BGCOLOR | - VAR_TYPE_TEXTCOLOR | - VAR_TYPE_BORDERCOLOR - ) - ); - }) != null; - this.iterateVarRefs(v, (ref) => { - if (isBgColor) { - this.resolveVariableType(ref, VAR_TYPE_BGCOLOR); - } else { - this.unknownBgVars.add(ref); - } - }); - }); - } - } - iterateVarDeps(value, iterator) { - const varDeps = new Set(); - iterateVarDependencies(value, (v) => varDeps.add(v)); - varDeps.forEach((v) => iterator(v)); - } - findVarRef(varName, iterator, stack = new Set()) { - if (stack.has(varName)) { - return null; - } - stack.add(varName); - const result = iterator(varName); - if (result) { - return varName; - } - const refs = this.varRefs.get(varName); - if (!refs || refs.size === 0) { - return null; - } - for (const ref of refs) { - const found = this.findVarRef(ref, iterator, stack); - if (found) { - return found; - } - } - return null; - } - iterateVarRefs(varName, iterator) { - this.findVarRef(varName, (ref) => { - iterator(ref); - return false; - }); - } - setOnRootVariableChange(callback) { - this.onRootVariableDefined = callback; - } - putRootVars(styleElement, theme) { - const sheet = styleElement.sheet; - if (sheet.cssRules.length > 0) { - sheet.deleteRule(0); - } - const declarations = new Map(); - iterateCSSDeclarations( - document.documentElement.style, - (property, value) => { - if (isVariable(property)) { - if (this.isVarType(property, VAR_TYPE_BGCOLOR)) { - declarations.set( - wrapBgColorVariableName(property), - tryModifyBgColor(value, theme) - ); - } - if (this.isVarType(property, VAR_TYPE_TEXTCOLOR)) { - declarations.set( - wrapTextColorVariableName(property), - tryModifyTextColor(value, theme) - ); - } - if (this.isVarType(property, VAR_TYPE_BORDERCOLOR)) { - declarations.set( - wrapBorderColorVariableName(property), - tryModifyBorderColor(value, theme) - ); - } - this.subscribeForVarTypeChange( - property, - this.onRootVariableDefined - ); - } - } - ); - const cssLines = []; - cssLines.push(":root {"); - for (const [property, value] of declarations) { - cssLines.push(` ${property}: ${value};`); - } - cssLines.push("}"); - const cssText = cssLines.join("\n"); - sheet.insertRule(cssText); - } - } - const variablesStore = new VariablesStore(); - function getVariableRange(input, searchStart = 0) { - const start = input.indexOf("var(", searchStart); - if (start >= 0) { - const range = getParenthesesRange(input, start + 3); - if (range) { - return {start, end: range.end}; - } - } - return null; - } - function getVariablesMatches(input) { - const ranges = []; - let i = 0; - let range; - while ((range = getVariableRange(input, i))) { - const {start, end} = range; - ranges.push({start, end, value: input.substring(start, end)}); - i = range.end + 1; - } - return ranges; - } - function replaceVariablesMatches(input, replacer) { - const matches = getVariablesMatches(input); - const matchesCount = matches.length; - if (matchesCount === 0) { - return input; - } - const inputLength = input.length; - const replacements = matches.map((m) => - replacer(m.value, matches.length) - ); - const parts = []; - parts.push(input.substring(0, matches[0].start)); - for (let i = 0; i < matchesCount; i++) { - parts.push(replacements[i]); - const start = matches[i].end; - const end = - i < matchesCount - 1 ? matches[i + 1].start : inputLength; - parts.push(input.substring(start, end)); - } - return parts.join(""); - } - function getVariableNameAndFallback(match) { - const commaIndex = match.indexOf(","); - let name; - let fallback; - if (commaIndex >= 0) { - name = match.substring(4, commaIndex).trim(); - fallback = match.substring(commaIndex + 1, match.length - 1).trim(); - } else { - name = match.substring(4, match.length - 1).trim(); - fallback = ""; - } - return {name, fallback}; - } - function replaceCSSVariablesNames( - value, - nameReplacer, - fallbackReplacer, - finalFallback - ) { - const matchReplacer = (match) => { - const {name, fallback} = getVariableNameAndFallback(match); - const newName = nameReplacer(name); - if (!fallback) { - if (finalFallback) { - return `var(${newName}, ${finalFallback})`; - } - return `var(${newName})`; - } - let newFallback; - if (isVarDependant(fallback)) { - newFallback = replaceCSSVariablesNames( - fallback, - nameReplacer, - fallbackReplacer - ); - } else if (fallbackReplacer) { - newFallback = fallbackReplacer(fallback); - } else { - newFallback = fallback; - } - return `var(${newName}, ${newFallback})`; - }; - return replaceVariablesMatches(value, matchReplacer); - } - function iterateVarDependencies(value, iterator) { - replaceCSSVariablesNames(value, (varName) => { - iterator(varName); - return varName; - }); - } - function wrapBgColorVariableName(name) { - return `--darkreader-bg${name}`; - } - function wrapTextColorVariableName(name) { - return `--darkreader-text${name}`; - } - function wrapBorderColorVariableName(name) { - return `--darkreader-border${name}`; - } - function wrapBgImgVariableName(name) { - return `--darkreader-bgimg${name}`; - } - function isVariable(property) { - return property.startsWith("--"); - } - function isVarDependant(value) { - return value.includes("var("); - } - function isConstructedColorVar(value) { - return ( - value.match(/^\s*(rgb|hsl)a?\(/) || - value.match(/^(((\d{1,3})|(var\([\-_A-Za-z0-9]+\))),?\s*?){3}$/) - ); - } - function isTextColorProperty(property) { - return ( - property === "color" || - property === "caret-color" || - property === "-webkit-text-fill-color" - ); - } - const rawRGBSpaceRegex = /^(\d{1,3})\s+(\d{1,3})\s+(\d{1,3})$/; - const rawRGBCommaRegex = /^(\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})$/; - function parseRawColorValue(input) { - const match = - input.match(rawRGBSpaceRegex) ?? input.match(rawRGBCommaRegex); - if (match) { - const color = `rgb(${match[1]}, ${match[2]}, ${match[3]})`; - return {isRaw: true, color}; - } - return {isRaw: false, color: input}; - } - function handleRawColorValue(input, theme, modifyFunction) { - const {isRaw, color} = parseRawColorValue(input); - const rgb = parseColorWithCache(color); - if (rgb) { - const outputColor = modifyFunction(rgb, theme); - if (isRaw) { - const outputInRGB = parseColorWithCache(outputColor); - return outputInRGB - ? `${outputInRGB.r}, ${outputInRGB.g}, ${outputInRGB.b}` - : outputColor; - } - return outputColor; - } - return color; - } - function tryModifyBgColor(color, theme) { - return handleRawColorValue(color, theme, modifyBackgroundColor); - } - function tryModifyTextColor(color, theme) { - return handleRawColorValue(color, theme, modifyForegroundColor); - } - function tryModifyBorderColor(color, theme) { - return handleRawColorValue(color, theme, modifyBorderColor); - } - function insertVarValues(source, varValues, fullStack = new Set()) { - let containsUnresolvedVar = false; - const matchReplacer = (match, count) => { - const {name, fallback} = getVariableNameAndFallback(match); - const stack = count > 1 ? new Set(fullStack) : fullStack; - if (stack.has(name)) { - containsUnresolvedVar = true; - return null; - } - stack.add(name); - const varValue = varValues.get(name) || fallback; - let inserted = null; - if (varValue) { - if (isVarDependant(varValue)) { - inserted = insertVarValues(varValue, varValues, stack); - } else { - inserted = varValue; - } - } - if (!inserted) { - containsUnresolvedVar = true; - return null; - } - return inserted; - }; - const replaced = replaceVariablesMatches(source, matchReplacer); - if (containsUnresolvedVar) { - return null; - } - return replaced; - } - - const overrides$1 = { - "background-color": { - customProp: "--darkreader-inline-bgcolor", - cssProp: "background-color", - dataAttr: "data-darkreader-inline-bgcolor" - }, - "background-image": { - customProp: "--darkreader-inline-bgimage", - cssProp: "background-image", - dataAttr: "data-darkreader-inline-bgimage" - }, - "border-color": { - customProp: "--darkreader-inline-border", - cssProp: "border-color", - dataAttr: "data-darkreader-inline-border" - }, - "border-bottom-color": { - customProp: "--darkreader-inline-border-bottom", - cssProp: "border-bottom-color", - dataAttr: "data-darkreader-inline-border-bottom" - }, - "border-left-color": { - customProp: "--darkreader-inline-border-left", - cssProp: "border-left-color", - dataAttr: "data-darkreader-inline-border-left" - }, - "border-right-color": { - customProp: "--darkreader-inline-border-right", - cssProp: "border-right-color", - dataAttr: "data-darkreader-inline-border-right" - }, - "border-top-color": { - customProp: "--darkreader-inline-border-top", - cssProp: "border-top-color", - dataAttr: "data-darkreader-inline-border-top" - }, - "box-shadow": { - customProp: "--darkreader-inline-boxshadow", - cssProp: "box-shadow", - dataAttr: "data-darkreader-inline-boxshadow" - }, - "color": { - customProp: "--darkreader-inline-color", - cssProp: "color", - dataAttr: "data-darkreader-inline-color" - }, - "fill": { - customProp: "--darkreader-inline-fill", - cssProp: "fill", - dataAttr: "data-darkreader-inline-fill" - }, - "stroke": { - customProp: "--darkreader-inline-stroke", - cssProp: "stroke", - dataAttr: "data-darkreader-inline-stroke" - }, - "outline-color": { - customProp: "--darkreader-inline-outline", - cssProp: "outline-color", - dataAttr: "data-darkreader-inline-outline" - }, - "stop-color": { - customProp: "--darkreader-inline-stopcolor", - cssProp: "stop-color", - dataAttr: "data-darkreader-inline-stopcolor" - } - }; - const shorthandOverrides = { - background: { - customProp: "--darkreader-inline-bg", - cssProp: "background", - dataAttr: "data-darkreader-inline-bg" - } - }; - const overridesList = Object.values(overrides$1); - const normalizedPropList = {}; - overridesList.forEach( - ({cssProp, customProp}) => (normalizedPropList[customProp] = cssProp) - ); - const INLINE_STYLE_ATTRS = [ - "style", - "fill", - "stop-color", - "stroke", - "bgcolor", - "color", - "background" - ]; - const INLINE_STYLE_SELECTOR = INLINE_STYLE_ATTRS.map( - (attr) => `[${attr}]` - ).join(", "); - function getInlineOverrideStyle() { - const allOverrides = overridesList.concat( - Object.values(shorthandOverrides) - ); - return allOverrides - .map(({dataAttr, customProp, cssProp}) => { - return [ - `[${dataAttr}] {`, - ` ${cssProp}: var(${customProp}) !important;`, - "}" - ].join("\n"); - }) - .concat([ - "[data-darkreader-inline-invert] {", - " filter: invert(100%) hue-rotate(180deg);", - "}" - ]) - .join("\n"); - } - function getInlineStyleElements(root) { - const results = []; - if (root instanceof Element && root.matches(INLINE_STYLE_SELECTOR)) { - results.push(root); - } - if ( - root instanceof Element || - (isShadowDomSupported && root instanceof ShadowRoot) || - root instanceof Document - ) { - push(results, root.querySelectorAll(INLINE_STYLE_SELECTOR)); - } - return results; - } - const treeObservers = new Map(); - const attrObservers = new Map(); - function watchForInlineStyles(elementStyleDidChange, shadowRootDiscovered) { - deepWatchForInlineStyles( - document, - elementStyleDidChange, - shadowRootDiscovered - ); - iterateShadowHosts(document.documentElement, (host) => { - deepWatchForInlineStyles( - host.shadowRoot, - elementStyleDidChange, - shadowRootDiscovered - ); - }); - } - function deepWatchForInlineStyles( - root, - elementStyleDidChange, - shadowRootDiscovered - ) { - if (treeObservers.has(root)) { - treeObservers.get(root).disconnect(); - attrObservers.get(root).disconnect(); - } - const discoveredNodes = new WeakSet(); - function discoverNodes(node) { - getInlineStyleElements(node).forEach((el) => { - if (discoveredNodes.has(el)) { - return; - } - discoveredNodes.add(el); - elementStyleDidChange(el); - }); - iterateShadowHosts(node, (n) => { - if (discoveredNodes.has(node)) { - return; - } - discoveredNodes.add(node); - shadowRootDiscovered(n.shadowRoot); - deepWatchForInlineStyles( - n.shadowRoot, - elementStyleDidChange, - shadowRootDiscovered - ); - }); - variablesStore.matchVariablesAndDependents(); - } - const treeObserver = createOptimizedTreeObserver(root, { - onMinorMutations: (_root, {additions}) => { - additions.forEach((added) => discoverNodes(added)); - }, - onHugeMutations: () => { - discoverNodes(root); - } - }); - treeObservers.set(root, treeObserver); - let attemptCount = 0; - let start = null; - const ATTEMPTS_INTERVAL = getDuration({seconds: 10}); - const RETRY_TIMEOUT = getDuration({seconds: 2}); - const MAX_ATTEMPTS_COUNT = 50; - let cache = []; - let timeoutId = null; - const handleAttributeMutations = throttle((mutations) => { - const handledTargets = new Set(); - mutations.forEach((m) => { - const target = m.target; - if (handledTargets.has(target)) { - return; - } - if (INLINE_STYLE_ATTRS.includes(m.attributeName)) { - handledTargets.add(target); - elementStyleDidChange(target); - } - }); - variablesStore.matchVariablesAndDependents(); - }); - const attrObserver = new MutationObserver((mutations) => { - if (timeoutId) { - cache.push(...mutations); - return; - } - attemptCount++; - const now = Date.now(); - if (start == null) { - start = now; - } else if (attemptCount >= MAX_ATTEMPTS_COUNT) { - if (now - start < ATTEMPTS_INTERVAL) { - timeoutId = setTimeout(() => { - start = null; - attemptCount = 0; - timeoutId = null; - const attributeCache = cache; - cache = []; - handleAttributeMutations(attributeCache); - }, RETRY_TIMEOUT); - cache.push(...mutations); - return; - } - start = now; - attemptCount = 1; - } - handleAttributeMutations(mutations); - }); - attrObserver.observe(root, { - attributes: true, - attributeFilter: INLINE_STYLE_ATTRS.concat( - overridesList.map(({dataAttr}) => dataAttr) - ), - subtree: true - }); - attrObservers.set(root, attrObserver); - } - function stopWatchingForInlineStyles() { - treeObservers.forEach((o) => o.disconnect()); - attrObservers.forEach((o) => o.disconnect()); - treeObservers.clear(); - attrObservers.clear(); - } - const inlineStyleCache = new WeakMap(); - const svgInversionCache = new WeakSet(); - const svgAnalysisConditionCache = new WeakMap(); - const themeProps = ["brightness", "contrast", "grayscale", "sepia", "mode"]; - function shouldAnalyzeSVGAsImage(svg) { - if (svgAnalysisConditionCache.has(svg)) { - return svgAnalysisConditionCache.get(svg); - } - const shouldAnalyze = Boolean( - svg && - (svg.getAttribute("class")?.includes("logo") || - svg.parentElement?.getAttribute("class")?.includes("logo")) - ); - svgAnalysisConditionCache.set(svg, shouldAnalyze); - return shouldAnalyze; - } - function getInlineStyleCacheKey(el, theme) { - return INLINE_STYLE_ATTRS.map( - (attr) => `${attr}="${el.getAttribute(attr)}"` - ) - .concat(themeProps.map((prop) => `${prop}="${theme[prop]}"`)) - .join(" "); - } - function shouldIgnoreInlineStyle(element, selectors) { - for (let i = 0, len = selectors.length; i < len; i++) { - const ingnoredSelector = selectors[i]; - if (element.matches(ingnoredSelector)) { - return true; - } - } - return false; - } - function overrideInlineStyle( - element, - theme, - ignoreInlineSelectors, - ignoreImageSelectors - ) { - const cacheKey = getInlineStyleCacheKey(element, theme); - if (cacheKey === inlineStyleCache.get(element)) { - return; - } - const unsetProps = new Set(Object.keys(overrides$1)); - function setCustomProp(targetCSSProp, modifierCSSProp, cssVal) { - const mod = getModifiableCSSDeclaration( - modifierCSSProp, - cssVal, - {style: element.style}, - variablesStore, - ignoreImageSelectors, - null - ); - if (!mod) { - return; - } - function setStaticValue(value) { - const {customProp, dataAttr} = - overrides$1[targetCSSProp] ?? - shorthandOverrides[targetCSSProp]; - element.style.setProperty(customProp, value); - if (!element.hasAttribute(dataAttr)) { - element.setAttribute(dataAttr, ""); - } - unsetProps.delete(targetCSSProp); - } - function setVarDeclaration(mod) { - let prevDeclarations = []; - function setProps(declarations) { - prevDeclarations.forEach(({property}) => { - element.style.removeProperty(property); - }); - declarations.forEach(({property, value}) => { - if (!(value instanceof Promise)) { - element.style.setProperty(property, value); - } - }); - prevDeclarations = declarations; - } - setProps(mod.declarations); - mod.onTypeChange.addListener(setProps); - } - function setAsyncValue(promise, sourceValue) { - promise.then((value) => { - if ( - value && - targetCSSProp === "background" && - value.startsWith("var(--darkreader-bg--") - ) { - setStaticValue(value); - } - if (value && targetCSSProp === "background-image") { - if ( - (element === document.documentElement || - element === document.body) && - value === sourceValue - ) { - value = "none"; - } - setStaticValue(value); - } - inlineStyleCache.set( - element, - getInlineStyleCacheKey(element, theme) - ); - }); - } - const value = - typeof mod.value === "function" ? mod.value(theme) : mod.value; - if (typeof value === "string") { - setStaticValue(value); - } else if (value instanceof Promise) { - setAsyncValue(value, cssVal); - } else if (typeof value === "object") { - setVarDeclaration(value); - } - } - if (ignoreInlineSelectors.length > 0) { - if (shouldIgnoreInlineStyle(element, ignoreInlineSelectors)) { - unsetProps.forEach((cssProp) => { - element.removeAttribute(overrides$1[cssProp].dataAttr); - }); - return; - } - } - const isSVGElement = element instanceof SVGElement; - const svg = isSVGElement - ? (element.ownerSVGElement ?? - (element instanceof SVGSVGElement ? element : null)) - : null; - if (isSVGElement && theme.mode === 1 && svg) { - if (svgInversionCache.has(svg)) { - return; - } - if (shouldAnalyzeSVGAsImage(svg)) { - svgInversionCache.add(svg); - const analyzeSVGAsImage = () => { - let svgString = svg.outerHTML; - svgString = svgString.replaceAll( - '', - "" - ); - const dataURL = `data:image/svg+xml;base64,${btoa(svgString)}`; - getImageDetails(dataURL).then((details) => { - if ( - (details.isDark && details.isTransparent) || - (details.isLarge && - details.isLight && - !details.isTransparent) - ) { - svg.setAttribute( - "data-darkreader-inline-invert", - "" - ); - } else { - svg.removeAttribute( - "data-darkreader-inline-invert" - ); - } - }); - }; - analyzeSVGAsImage(); - if (!isDOMReady()) { - addDOMReadyListener(analyzeSVGAsImage); - } - return; - } - } - if (element.hasAttribute("bgcolor")) { - let value = element.getAttribute("bgcolor"); - if ( - value.match(/^[0-9a-f]{3}$/i) || - value.match(/^[0-9a-f]{6}$/i) - ) { - value = `#${value}`; - } - setCustomProp("background-color", "background-color", value); - } - if ( - (element === document.documentElement || - element === document.body) && - element.hasAttribute("background") - ) { - const url = getAbsoluteURL( - location.href, - element.getAttribute("background") ?? "" - ); - const value = `url("${url}")`; - setCustomProp("background-image", "background-image", value); - } - if (element.hasAttribute("color") && element.rel !== "mask-icon") { - let value = element.getAttribute("color"); - if ( - value.match(/^[0-9a-f]{3}$/i) || - value.match(/^[0-9a-f]{6}$/i) - ) { - value = `#${value}`; - } - setCustomProp("color", "color", value); - } - if (isSVGElement) { - if (element.hasAttribute("fill")) { - const SMALL_SVG_LIMIT = 32; - const value = element.getAttribute("fill"); - if (value !== "none") { - if (!(element instanceof SVGTextElement)) { - const handleSVGElement = () => { - const {width, height} = - element.getBoundingClientRect(); - const isBg = - width > SMALL_SVG_LIMIT || - height > SMALL_SVG_LIMIT; - setCustomProp( - "fill", - isBg ? "background-color" : "color", - value - ); - }; - if (isReadyStateComplete()) { - handleSVGElement(); - } else { - addReadyStateCompleteListener(handleSVGElement); - } - } else { - setCustomProp("fill", "color", value); - } - } - } - if (element.hasAttribute("stop-color")) { - setCustomProp( - "stop-color", - "background-color", - element.getAttribute("stop-color") - ); - } - } - if (element.hasAttribute("stroke")) { - const value = element.getAttribute("stroke"); - setCustomProp( - "stroke", - element instanceof SVGLineElement || - element instanceof SVGTextElement - ? "border-color" - : "color", - value - ); - } - element.style && - iterateCSSDeclarations(element.style, (property, value) => { - if (property === "background-image" && value.includes("url")) { - if ( - element === document.documentElement || - element === document.body - ) { - setCustomProp(property, property, value); - } - return; - } - if ( - overrides$1.hasOwnProperty(property) || - (property.startsWith("--") && !normalizedPropList[property]) - ) { - setCustomProp(property, property, value); - } else if ( - property === "background" && - value.includes("var(") - ) { - setCustomProp("background", "background", value); - } else { - const overriddenProp = normalizedPropList[property]; - if ( - overriddenProp && - !element.style.getPropertyValue(overriddenProp) && - !element.hasAttribute(overriddenProp) - ) { - if ( - overriddenProp === "background-color" && - element.hasAttribute("bgcolor") - ) { - return; - } - element.style.setProperty(property, ""); - } - } - }); - if ( - element.style && - element instanceof SVGTextElement && - element.style.fill - ) { - setCustomProp( - "fill", - "color", - element.style.getPropertyValue("fill") - ); - } - if (element.getAttribute("style")?.includes("--")) { - variablesStore.addInlineStyleForMatching(element.style); - } - forEach(unsetProps, (cssProp) => { - element.removeAttribute(overrides$1[cssProp].dataAttr); - }); - inlineStyleCache.set(element, getInlineStyleCacheKey(element, theme)); - } - - const metaThemeColorName = "theme-color"; - const metaThemeColorSelector = `meta[name="${metaThemeColorName}"]`; - let srcMetaThemeColor = null; - let observer = null; - function changeMetaThemeColor(meta, theme) { - srcMetaThemeColor = srcMetaThemeColor || meta.content; - const color = parseColorWithCache(srcMetaThemeColor); - if (!color) { - return; - } - meta.content = modifyBackgroundColor(color, theme); - } - function changeMetaThemeColorWhenAvailable(theme) { - const meta = document.querySelector(metaThemeColorSelector); - if (meta) { - changeMetaThemeColor(meta, theme); - } else { - if (observer) { - observer.disconnect(); - } - observer = new MutationObserver((mutations) => { - loop: for (let i = 0; i < mutations.length; i++) { - const {addedNodes} = mutations[i]; - for (let j = 0; j < addedNodes.length; j++) { - const node = addedNodes[j]; - if ( - node instanceof HTMLMetaElement && - node.name === metaThemeColorName - ) { - observer.disconnect(); - observer = null; - changeMetaThemeColor(node, theme); - break loop; - } - } - } - }); - observer.observe(document.head, {childList: true}); - } - } - function restoreMetaThemeColor() { - if (observer) { - observer.disconnect(); - observer = null; - } - const meta = document.querySelector(metaThemeColorSelector); - if (meta && srcMetaThemeColor) { - meta.content = srcMetaThemeColor; - } - } - - const cssCommentsRegex = /\/\*[\s\S]*?\*\//g; - function removeCSSComments(cssText) { - return cssText.replace(cssCommentsRegex, ""); - } - - const themeCacheKeys = [ - "mode", - "brightness", - "contrast", - "grayscale", - "sepia", - "darkSchemeBackgroundColor", - "darkSchemeTextColor", - "lightSchemeBackgroundColor", - "lightSchemeTextColor" - ]; - function getThemeKey(theme) { - let resultKey = ""; - themeCacheKeys.forEach((key) => { - resultKey += `${key}:${theme[key]};`; - }); - return resultKey; - } - const asyncQueue = createAsyncTasksQueue(); - function createStyleSheetModifier() { - let renderId = 0; - function getStyleRuleHash(rule) { - let cssText = rule.cssText; - if (isMediaRule(rule.parentRule)) { - cssText = `${rule.parentRule.media.mediaText} { ${cssText} }`; - } - return getHashCode(cssText); - } - const rulesTextCache = new Set(); - const rulesModCache = new Map(); - const varTypeChangeCleaners = new Set(); - let prevFilterKey = null; - let hasNonLoadedLink = false; - let wasRebuilt = false; - function shouldRebuildStyle() { - return hasNonLoadedLink && !wasRebuilt; - } - function modifySheet(options) { - const rules = options.sourceCSSRules; - const { - theme, - ignoreImageAnalysis, - force, - prepareSheet, - isAsyncCancelled - } = options; - let rulesChanged = rulesModCache.size === 0; - const notFoundCacheKeys = new Set(rulesModCache.keys()); - const themeKey = getThemeKey(theme); - const themeChanged = themeKey !== prevFilterKey; - if (hasNonLoadedLink) { - wasRebuilt = true; - } - const modRules = []; - iterateCSSRules( - rules, - (rule) => { - const hash = getStyleRuleHash(rule); - let textDiffersFromPrev = false; - notFoundCacheKeys.delete(hash); - if (!rulesTextCache.has(hash)) { - rulesTextCache.add(hash); - textDiffersFromPrev = true; - } - if (textDiffersFromPrev) { - rulesChanged = true; - } else { - modRules.push(rulesModCache.get(hash)); - return; - } - if (rule.style.all === "revert") { - return; - } - const modDecs = []; - rule.style && - iterateCSSDeclarations( - rule.style, - (property, value) => { - const mod = getModifiableCSSDeclaration( - property, - value, - rule, - variablesStore, - ignoreImageAnalysis, - isAsyncCancelled - ); - if (mod) { - modDecs.push(mod); - } - } - ); - let modRule = null; - if (modDecs.length > 0) { - const parentRule = rule.parentRule; - modRule = { - selector: rule.selectorText, - declarations: modDecs, - parentRule - }; - modRules.push(modRule); - } - rulesModCache.set(hash, modRule); - }, - () => { - hasNonLoadedLink = true; - } - ); - notFoundCacheKeys.forEach((key) => { - rulesTextCache.delete(key); - rulesModCache.delete(key); - }); - prevFilterKey = themeKey; - if (!force && !rulesChanged && !themeChanged) { - return; - } - renderId++; - function setRule(target, index, rule) { - const {selector, declarations} = rule; - let selectorText = selector; - const emptyIsWhereSelector = - selector.startsWith(":is(") && - (selector.includes(":is()") || - selector.includes(":where()") || - (selector.includes(":where(") && - selector.includes(":-moz"))); - const viewTransitionSelector = - selector.includes("::view-transition-"); - if (emptyIsWhereSelector || viewTransitionSelector) { - selectorText = ".darkreader-unsupported-selector"; - } - let ruleText = `${selectorText} {`; - for (const dec of declarations) { - const {property, value, important} = dec; - if (value) { - ruleText += ` ${property}: ${value}${important ? " !important" : ""};`; - } - } - ruleText += " }"; - target.insertRule(ruleText, index); - } - const asyncDeclarations = new Map(); - const varDeclarations = new Map(); - let asyncDeclarationCounter = 0; - let varDeclarationCounter = 0; - const rootReadyGroup = {rule: null, rules: [], isGroup: true}; - const groupRefs = new WeakMap(); - function getGroup(rule) { - if (rule == null) { - return rootReadyGroup; - } - if (groupRefs.has(rule)) { - return groupRefs.get(rule); - } - const group = {rule, rules: [], isGroup: true}; - groupRefs.set(rule, group); - const parentGroup = getGroup(rule.parentRule); - parentGroup.rules.push(group); - return group; - } - varTypeChangeCleaners.forEach((clear) => clear()); - varTypeChangeCleaners.clear(); - modRules - .filter((r) => r) - .forEach(({selector, declarations, parentRule}) => { - const group = getGroup(parentRule); - const readyStyleRule = { - selector, - declarations: [], - isGroup: false - }; - const readyDeclarations = readyStyleRule.declarations; - group.rules.push(readyStyleRule); - function handleAsyncDeclaration( - property, - modified, - important, - sourceValue - ) { - const asyncKey = ++asyncDeclarationCounter; - const asyncDeclaration = { - property, - value: null, - important, - asyncKey, - sourceValue - }; - readyDeclarations.push(asyncDeclaration); - const currentRenderId = renderId; - modified.then((asyncValue) => { - if ( - !asyncValue || - isAsyncCancelled() || - currentRenderId !== renderId - ) { - return; - } - asyncDeclaration.value = asyncValue; - asyncQueue.add(() => { - if ( - isAsyncCancelled() || - currentRenderId !== renderId - ) { - return; - } - rebuildAsyncRule(asyncKey); - }); - }); - } - function handleVarDeclarations( - property, - modified, - important, - sourceValue - ) { - const {declarations: varDecs, onTypeChange} = modified; - const varKey = ++varDeclarationCounter; - const currentRenderId = renderId; - const initialIndex = readyDeclarations.length; - let oldDecs = []; - if (varDecs.length === 0) { - const tempDec = { - property, - value: sourceValue, - important, - sourceValue, - varKey - }; - readyDeclarations.push(tempDec); - oldDecs = [tempDec]; - } - varDecs.forEach((mod) => { - if (mod.value instanceof Promise) { - handleAsyncDeclaration( - mod.property, - mod.value, - important, - sourceValue - ); - } else { - const readyDec = { - property: mod.property, - value: mod.value, - important, - sourceValue, - varKey - }; - readyDeclarations.push(readyDec); - oldDecs.push(readyDec); - } - }); - onTypeChange.addListener((newDecs) => { - if ( - isAsyncCancelled() || - currentRenderId !== renderId - ) { - return; - } - const readyVarDecs = newDecs.map((mod) => { - return { - property: mod.property, - value: mod.value, - important, - sourceValue, - varKey - }; - }); - const index = readyDeclarations.indexOf( - oldDecs[0], - initialIndex - ); - readyDeclarations.splice( - index, - oldDecs.length, - ...readyVarDecs - ); - oldDecs = readyVarDecs; - rebuildVarRule(varKey); - }); - varTypeChangeCleaners.add(() => - onTypeChange.removeListeners() - ); - } - declarations.forEach( - ({property, value, important, sourceValue}) => { - if (typeof value === "function") { - const modified = value(theme); - if (modified instanceof Promise) { - handleAsyncDeclaration( - property, - modified, - important, - sourceValue - ); - } else if (property.startsWith("--")) { - handleVarDeclarations( - property, - modified, - important, - sourceValue - ); - } else { - readyDeclarations.push({ - property, - value: modified, - important, - sourceValue - }); - } - } else { - readyDeclarations.push({ - property, - value, - important, - sourceValue - }); - } - } - ); - }); - const sheet = prepareSheet(); - function buildStyleSheet() { - function createTarget(group, parent) { - const {rule} = group; - if (isMediaRule(rule)) { - const {media} = rule; - const index = parent.cssRules.length; - parent.insertRule( - `@media ${media.mediaText} {}`, - index - ); - return parent.cssRules[index]; - } - if (isLayerRule(rule)) { - const {name} = rule; - const index = parent.cssRules.length; - parent.insertRule(`@layer ${name} {}`, index); - return parent.cssRules[index]; - } - return parent; - } - function iterateReadyRules(group, target, styleIterator) { - group.rules.forEach((r) => { - if (r.isGroup) { - const t = createTarget(r, target); - iterateReadyRules(r, t, styleIterator); - } else { - styleIterator(r, target); - } - }); - } - iterateReadyRules(rootReadyGroup, sheet, (rule, target) => { - const index = target.cssRules.length; - rule.declarations.forEach(({asyncKey, varKey}) => { - if (asyncKey != null) { - asyncDeclarations.set(asyncKey, { - rule, - target, - index - }); - } - if (varKey != null) { - varDeclarations.set(varKey, {rule, target, index}); - } - }); - setRule(target, index, rule); - }); - } - function rebuildAsyncRule(key) { - const {rule, target, index} = asyncDeclarations.get(key); - target.deleteRule(index); - setRule(target, index, rule); - asyncDeclarations.delete(key); - } - function rebuildVarRule(key) { - const {rule, target, index} = varDeclarations.get(key); - target.deleteRule(index); - setRule(target, index, rule); - } - buildStyleSheet(); - } - return {modifySheet, shouldRebuildStyle}; - } - - let canUseSheetProxy$1 = false; - document.addEventListener( - "__darkreader__inlineScriptsAllowed", - () => (canUseSheetProxy$1 = true), - {once: true} - ); - function createSheetWatcher( - element, - safeGetSheetRules, - callback, - isCancelled - ) { - let rafSheetWatcher = null; - function watchForSheetChanges() { - watchForSheetChangesUsingProxy(); - if (!(canUseSheetProxy$1 && element.sheet)) { - rafSheetWatcher = createRAFSheetWatcher( - element, - safeGetSheetRules, - callback, - isCancelled - ); - rafSheetWatcher.start(); - } - } - let areSheetChangesPending = false; - function onSheetChange() { - canUseSheetProxy$1 = true; - rafSheetWatcher?.stop(); - if (areSheetChangesPending) { - return; - } - function handleSheetChanges() { - areSheetChangesPending = false; - if (isCancelled()) { - return; - } - callback(); - } - areSheetChangesPending = true; - queueMicrotask(handleSheetChanges); - } - function watchForSheetChangesUsingProxy() { - element.addEventListener( - "__darkreader__updateSheet", - onSheetChange - ); - } - function stopWatchingForSheetChangesUsingProxy() { - element.removeEventListener( - "__darkreader__updateSheet", - onSheetChange - ); - } - function stopWatchingForSheetChanges() { - stopWatchingForSheetChangesUsingProxy(); - rafSheetWatcher?.stop(); - } - return { - start: watchForSheetChanges, - stop: stopWatchingForSheetChanges - }; - } - function createRAFSheetWatcher( - element, - safeGetSheetRules, - callback, - isCancelled - ) { - let rulesChangeKey = null; - let rulesCheckFrameId = null; - function getRulesChangeKey() { - const rules = safeGetSheetRules(); - return rules ? rules.length : null; - } - function didRulesKeyChange() { - return getRulesChangeKey() !== rulesChangeKey; - } - function watchForSheetChangesUsingRAF() { - rulesChangeKey = getRulesChangeKey(); - stopWatchingForSheetChangesUsingRAF(); - const checkForUpdate = () => { - const cancelled = isCancelled(); - if (!cancelled && didRulesKeyChange()) { - rulesChangeKey = getRulesChangeKey(); - callback(); - } - if (cancelled || (canUseSheetProxy$1 && element.sheet)) { - stopWatchingForSheetChangesUsingRAF(); - return; - } - rulesCheckFrameId = requestAnimationFrame(checkForUpdate); - }; - checkForUpdate(); - } - function stopWatchingForSheetChangesUsingRAF() { - rulesCheckFrameId && cancelAnimationFrame(rulesCheckFrameId); - } - return { - start: watchForSheetChangesUsingRAF, - stop: stopWatchingForSheetChangesUsingRAF - }; - } - - const STYLE_SELECTOR = 'style, link[rel*="stylesheet" i]:not([disabled])'; - function isFontsGoogleApiStyle(element) { - if (!element.href) { - return false; - } - try { - const elementURL = new URL(element.href); - return elementURL.hostname === "fonts.googleapis.com"; - } catch (err) { - logInfo(`Couldn't construct ${element.href} as URL`); - return false; - } - } - const hostsBreakingOnSVGStyleOverride = ["www.onet.pl"]; - function shouldManageStyle(element) { - return ( - (element instanceof HTMLStyleElement || - (element instanceof SVGStyleElement && - !hostsBreakingOnSVGStyleOverride.includes( - location.hostname - )) || - (element instanceof HTMLLinkElement && - Boolean(element.rel) && - element.rel.toLowerCase().includes("stylesheet") && - Boolean(element.href) && - !element.disabled && - true && - !isFontsGoogleApiStyle(element))) && - !element.classList.contains("darkreader") && - element.media.toLowerCase() !== "print" && - !element.classList.contains("stylus") - ); - } - function getManageableStyles(node, results = [], deep = true) { - if (shouldManageStyle(node)) { - results.push(node); - } else if ( - node instanceof Element || - (isShadowDomSupported && node instanceof ShadowRoot) || - node === document - ) { - forEach(node.querySelectorAll(STYLE_SELECTOR), (style) => - getManageableStyles(style, results, false) - ); - if (deep) { - iterateShadowHosts(node, (host) => - getManageableStyles(host.shadowRoot, results, false) - ); - } - } - return results; - } - const syncStyleSet = new WeakSet(); - const corsStyleSet = new WeakSet(); - let loadingLinkCounter = 0; - const rejectorsForLoadingLinks = new Map(); - function cleanLoadingLinks() { - rejectorsForLoadingLinks.clear(); - } - function manageStyle(element, {update, loadingStart, loadingEnd}) { - const prevStyles = []; - let next = element; - while ( - (next = next.nextElementSibling) && - next.matches(".darkreader") - ) { - prevStyles.push(next); - } - let corsCopy = - prevStyles.find( - (el) => el.matches(".darkreader--cors") && !corsStyleSet.has(el) - ) || null; - let syncStyle = - prevStyles.find( - (el) => el.matches(".darkreader--sync") && !syncStyleSet.has(el) - ) || null; - let corsCopyPositionWatcher = null; - let syncStylePositionWatcher = null; - let cancelAsyncOperations = false; - let isOverrideEmpty = true; - const isAsyncCancelled = () => cancelAsyncOperations; - const sheetModifier = createStyleSheetModifier(); - const observer = new MutationObserver((mutations) => { - if ( - mutations.some((m) => m.type === "characterData") && - containsCSSImport() - ) { - const cssText = (element.textContent ?? "").trim(); - createOrUpdateCORSCopy(cssText, location.href).then(update); - } else { - update(); - } - }); - const observerOptions = { - attributes: true, - childList: true, - subtree: true, - characterData: true - }; - function containsCSSImport() { - if (!(element instanceof HTMLStyleElement)) { - return false; - } - const cssText = removeCSSComments(element.textContent ?? "").trim(); - return cssText.match(cssImportRegex); - } - function hasImports(cssRules, checkCrossOrigin) { - let result = false; - if (cssRules) { - let rule; - cssRulesLoop: for ( - let i = 0, len = cssRules.length; - i < len; - i++ - ) { - rule = cssRules[i]; - if (rule.href) { - if (checkCrossOrigin) { - if ( - !rule.href.startsWith( - "https://fonts.googleapis.com/" - ) && - rule.href.startsWith("http") && - !rule.href.startsWith(location.origin) - ) { - result = true; - break cssRulesLoop; - } - } else { - result = true; - break cssRulesLoop; - } - } - } - } - return result; - } - function getRulesSync() { - if (corsCopy) { - return corsCopy.sheet.cssRules; - } - if (containsCSSImport()) { - return null; - } - const cssRules = safeGetSheetRules(); - if ( - element instanceof HTMLLinkElement && - !isRelativeHrefOnAbsolutePath(element.href) && - hasImports(cssRules, false) - ) { - return null; - } - if (hasImports(cssRules, true)) { - return null; - } - return cssRules; - } - function insertStyle() { - if (corsCopy) { - if (element.nextSibling !== corsCopy) { - element.parentNode.insertBefore( - corsCopy, - element.nextSibling - ); - } - if (corsCopy.nextSibling !== syncStyle) { - element.parentNode.insertBefore( - syncStyle, - corsCopy.nextSibling - ); - } - } else if (element.nextSibling !== syncStyle) { - element.parentNode.insertBefore(syncStyle, element.nextSibling); - } - } - function createSyncStyle() { - syncStyle = - element instanceof SVGStyleElement - ? document.createElementNS( - "http://www.w3.org/2000/svg", - "style" - ) - : document.createElement("style"); - syncStyle.classList.add("darkreader"); - syncStyle.classList.add("darkreader--sync"); - syncStyle.media = "screen"; - if (element.title) { - syncStyle.title = element.title; - } - syncStyleSet.add(syncStyle); - } - let isLoadingRules = false; - let wasLoadingError = false; - const loadingLinkId = ++loadingLinkCounter; - async function getRulesAsync() { - let cssText; - let cssBasePath; - if (element instanceof HTMLLinkElement) { - let [cssRules, accessError] = getRulesOrError(); - if ( - (!cssRules && !accessError) || - isStillLoadingError(accessError) - ) { - try { - logInfo( - `Linkelement ${loadingLinkId} is not loaded yet and thus will be await for`, - element - ); - await linkLoading(element, loadingLinkId); - } catch (err) { - wasLoadingError = true; - } - if (cancelAsyncOperations) { - return null; - } - [cssRules, accessError] = getRulesOrError(); - } - if (cssRules) { - if (!hasImports(cssRules, false)) { - return cssRules; - } - } - cssText = await loadText(element.href); - cssBasePath = getCSSBaseBath(element.href); - if (cancelAsyncOperations) { - return null; - } - } else if (containsCSSImport()) { - cssText = element.textContent.trim(); - cssBasePath = getCSSBaseBath(location.href); - } else { - return null; - } - await createOrUpdateCORSCopy(cssText, cssBasePath); - if (corsCopy) { - return corsCopy.sheet.cssRules; - } - return null; - } - async function createOrUpdateCORSCopy(cssText, cssBasePath) { - if (cssText) { - try { - const fullCSSText = await replaceCSSImports( - cssText, - cssBasePath - ); - if (corsCopy) { - if ( - (corsCopy.textContent?.length ?? 0) < - fullCSSText.length - ) { - corsCopy.textContent = fullCSSText; - } - } else { - corsCopy = createCORSCopy(element, fullCSSText); - } - } catch (err) {} - if (corsCopy) { - corsCopyPositionWatcher = watchForNodePosition( - corsCopy, - "prev-sibling" - ); - } - } - } - function details(options) { - const rules = getRulesSync(); - if (!rules) { - if (options.secondRound) { - return null; - } - if (isLoadingRules || wasLoadingError) { - return null; - } - isLoadingRules = true; - loadingStart(); - getRulesAsync() - .then((results) => { - isLoadingRules = false; - loadingEnd(); - if (results) { - update(); - } - }) - .catch((err) => { - isLoadingRules = false; - loadingEnd(); - }); - return null; - } - return {rules}; - } - let forceRenderStyle = false; - function render(theme, ignoreImageAnalysis) { - const rules = getRulesSync(); - if (!rules) { - return; - } - cancelAsyncOperations = false; - function removeCSSRulesFromSheet(sheet) { - if (!sheet) { - return; - } - for (let i = sheet.cssRules.length - 1; i >= 0; i--) { - sheet.deleteRule(i); - } - } - function prepareOverridesSheet() { - if (!syncStyle) { - createSyncStyle(); - } - syncStylePositionWatcher && syncStylePositionWatcher.stop(); - insertStyle(); - if (syncStyle.sheet == null) { - syncStyle.textContent = ""; - } - const sheet = syncStyle.sheet; - removeCSSRulesFromSheet(sheet); - if (syncStylePositionWatcher) { - syncStylePositionWatcher.run(); - } else { - syncStylePositionWatcher = watchForNodePosition( - syncStyle, - "prev-sibling", - () => { - forceRenderStyle = true; - buildOverrides(); - } - ); - } - return syncStyle.sheet; - } - function buildOverrides() { - const force = forceRenderStyle; - forceRenderStyle = false; - sheetModifier.modifySheet({ - prepareSheet: prepareOverridesSheet, - sourceCSSRules: rules, - theme, - ignoreImageAnalysis, - force, - isAsyncCancelled - }); - isOverrideEmpty = syncStyle.sheet.cssRules.length === 0; - if (sheetModifier.shouldRebuildStyle()) { - addReadyStateCompleteListener(() => update()); - } - } - buildOverrides(); - } - function getRulesOrError() { - try { - if (element.sheet == null) { - return [null, null]; - } - return [element.sheet.cssRules, null]; - } catch (err) { - return [null, err]; - } - } - function isStillLoadingError(error) { - return error && error.message && error.message.includes("loading"); - } - function safeGetSheetRules() { - const [cssRules, err] = getRulesOrError(); - if (err) { - return null; - } - return cssRules; - } - const sheetChangeWatcher = createSheetWatcher( - element, - safeGetSheetRules, - update, - isAsyncCancelled - ); - function pause() { - observer.disconnect(); - cancelAsyncOperations = true; - corsCopyPositionWatcher && corsCopyPositionWatcher.stop(); - syncStylePositionWatcher && syncStylePositionWatcher.stop(); - sheetChangeWatcher.stop(); - } - function destroy() { - pause(); - removeNode(corsCopy); - removeNode(syncStyle); - loadingEnd(); - if (rejectorsForLoadingLinks.has(loadingLinkId)) { - const reject = rejectorsForLoadingLinks.get(loadingLinkId); - rejectorsForLoadingLinks.delete(loadingLinkId); - reject && reject(); - } - } - function watch() { - observer.observe(element, observerOptions); - if (element instanceof HTMLStyleElement) { - sheetChangeWatcher.start(); - } - } - const maxMoveCount = 10; - let moveCount = 0; - function restore() { - if (!syncStyle) { - return; - } - moveCount++; - if (moveCount > maxMoveCount) { - return; - } - insertStyle(); - corsCopyPositionWatcher && corsCopyPositionWatcher.skip(); - syncStylePositionWatcher && syncStylePositionWatcher.skip(); - if (!isOverrideEmpty) { - forceRenderStyle = true; - update(); - } - } - return { - details, - render, - pause, - destroy, - watch, - restore - }; - } - async function linkLoading(link, loadingId) { - return new Promise((resolve, reject) => { - const cleanUp = () => { - link.removeEventListener("load", onLoad); - link.removeEventListener("error", onError); - rejectorsForLoadingLinks.delete(loadingId); - }; - const onLoad = () => { - cleanUp(); - resolve(); - }; - const onError = () => { - cleanUp(); - reject( - `Linkelement ${loadingId} couldn't be loaded. ${link.href}` - ); - }; - rejectorsForLoadingLinks.set(loadingId, () => { - cleanUp(); - reject(); - }); - link.addEventListener("load", onLoad, {passive: true}); - link.addEventListener("error", onError, {passive: true}); - if (!link.href) { - onError(); - } - }); - } - function getCSSImportURL(importDeclaration) { - return getCSSURLValue( - importDeclaration - .substring(7) - .trim() - .replace(/;$/, "") - .replace(/screen$/, "") - ); - } - async function loadText(url) { - if (url.startsWith("data:")) { - return await (await fetch(url)).text(); - } - const parsedURL = new URL(url); - if (parsedURL.origin === location.origin) { - return await loadAsText(url, "text/css", location.origin); - } - return await bgFetch({ - url, - responseType: "text", - mimeType: "text/css", - origin: location.origin - }); - } - async function replaceCSSImports(cssText, basePath, cache = new Map()) { - cssText = removeCSSComments(cssText); - cssText = replaceCSSFontFace(cssText); - cssText = replaceCSSRelativeURLsWithAbsolute(cssText, basePath); - const importMatches = getMatches(cssImportRegex, cssText); - for (const match of importMatches) { - const importURL = getCSSImportURL(match); - const absoluteURL = getAbsoluteURL(basePath, importURL); - let importedCSS; - if (cache.has(absoluteURL)) { - importedCSS = cache.get(absoluteURL); - } else { - try { - importedCSS = await loadText(absoluteURL); - cache.set(absoluteURL, importedCSS); - importedCSS = await replaceCSSImports( - importedCSS, - getCSSBaseBath(absoluteURL), - cache - ); - } catch (err) { - importedCSS = ""; - } - } - cssText = cssText.split(match).join(importedCSS); - } - cssText = cssText.trim(); - return cssText; - } - function createCORSCopy(srcElement, cssText) { - if (!cssText) { - return null; - } - const cors = document.createElement("style"); - cors.classList.add("darkreader"); - cors.classList.add("darkreader--cors"); - cors.media = "screen"; - cors.textContent = cssText; - srcElement.parentNode.insertBefore(cors, srcElement.nextSibling); - cors.sheet.disabled = true; - corsStyleSet.add(cors); - return cors; - } - - const definedCustomElements = new Set(); - const undefinedGroups = new Map(); - let elementsDefinitionCallback; - function isCustomElement(element) { - if (element.tagName.includes("-") || element.getAttribute("is")) { - return true; - } - return false; - } - function recordUndefinedElement(element) { - let tag = element.tagName.toLowerCase(); - if (!tag.includes("-")) { - const extendedTag = element.getAttribute("is"); - if (extendedTag) { - tag = extendedTag; - } else { - return; - } - } - if (!undefinedGroups.has(tag)) { - undefinedGroups.set(tag, new Set()); - customElementsWhenDefined(tag).then(() => { - if (elementsDefinitionCallback) { - const elements = undefinedGroups.get(tag); - undefinedGroups.delete(tag); - elementsDefinitionCallback(Array.from(elements)); - } - }); - } - undefinedGroups.get(tag).add(element); - } - function collectUndefinedElements(root) { - if (!isDefinedSelectorSupported) { - return; - } - forEach( - root.querySelectorAll(":not(:defined)"), - recordUndefinedElement - ); - } - let canOptimizeUsingProxy = false; - document.addEventListener( - "__darkreader__inlineScriptsAllowed", - () => { - canOptimizeUsingProxy = true; - }, - {once: true, passive: true} - ); - const resolvers = new Map(); - function handleIsDefined(e) { - canOptimizeUsingProxy = true; - const tag = e.detail.tag; - definedCustomElements.add(tag); - if (resolvers.has(tag)) { - const r = resolvers.get(tag); - resolvers.delete(tag); - r.forEach((r) => r()); - } - } - async function customElementsWhenDefined(tag) { - if (definedCustomElements.has(tag)) { - return; - } - return new Promise((resolve) => { - if ( - window.customElements && - typeof customElements.whenDefined === "function" - ) { - customElements.whenDefined(tag).then(() => resolve()); - } else if (canOptimizeUsingProxy) { - if (resolvers.has(tag)) { - resolvers.get(tag).push(resolve); - } else { - resolvers.set(tag, [resolve]); - } - document.dispatchEvent( - new CustomEvent("__darkreader__addUndefinedResolver", { - detail: {tag} - }) - ); - } else { - const checkIfDefined = () => { - const elements = undefinedGroups.get(tag); - if (elements && elements.size > 0) { - if ( - elements.values().next().value.matches(":defined") - ) { - resolve(); - } else { - requestAnimationFrame(checkIfDefined); - } - } - }; - requestAnimationFrame(checkIfDefined); - } - }); - } - function watchWhenCustomElementsDefined(callback) { - elementsDefinitionCallback = callback; - } - function unsubscribeFromDefineCustomElements() { - elementsDefinitionCallback = null; - undefinedGroups.clear(); - document.removeEventListener( - "__darkreader__isDefined", - handleIsDefined - ); - } - - const observers = []; - let observedRoots; - function watchForStylePositions( - currentStyles, - update, - shadowRootDiscovered - ) { - stopWatchingForStylePositions(); - const prevStylesByRoot = new WeakMap(); - const getPrevStyles = (root) => { - if (!prevStylesByRoot.has(root)) { - prevStylesByRoot.set(root, new Set()); - } - return prevStylesByRoot.get(root); - }; - currentStyles.forEach((node) => { - let root = node; - while ((root = root.parentNode)) { - if ( - root === document || - root.nodeType === Node.DOCUMENT_FRAGMENT_NODE - ) { - const prevStyles = getPrevStyles(root); - prevStyles.add(node); - break; - } - } - }); - const prevStyleSiblings = new WeakMap(); - const nextStyleSiblings = new WeakMap(); - function saveStylePosition(style) { - prevStyleSiblings.set(style, style.previousElementSibling); - nextStyleSiblings.set(style, style.nextElementSibling); - } - function forgetStylePosition(style) { - prevStyleSiblings.delete(style); - nextStyleSiblings.delete(style); - } - function didStylePositionChange(style) { - return ( - style.previousElementSibling !== prevStyleSiblings.get(style) || - style.nextElementSibling !== nextStyleSiblings.get(style) - ); - } - currentStyles.forEach(saveStylePosition); - function handleStyleOperations(root, operations) { - const {createdStyles, removedStyles, movedStyles} = operations; - createdStyles.forEach((s) => saveStylePosition(s)); - movedStyles.forEach((s) => saveStylePosition(s)); - removedStyles.forEach((s) => forgetStylePosition(s)); - const prevStyles = getPrevStyles(root); - createdStyles.forEach((s) => prevStyles.add(s)); - removedStyles.forEach((s) => prevStyles.delete(s)); - if ( - createdStyles.size + removedStyles.size + movedStyles.size > - 0 - ) { - update({ - created: Array.from(createdStyles), - removed: Array.from(removedStyles), - moved: Array.from(movedStyles), - updated: [] - }); - } - } - function handleMinorTreeMutations(root, {additions, moves, deletions}) { - const createdStyles = new Set(); - const removedStyles = new Set(); - const movedStyles = new Set(); - additions.forEach((node) => - getManageableStyles(node).forEach((style) => - createdStyles.add(style) - ) - ); - deletions.forEach((node) => - getManageableStyles(node).forEach((style) => - removedStyles.add(style) - ) - ); - moves.forEach((node) => - getManageableStyles(node).forEach((style) => - movedStyles.add(style) - ) - ); - handleStyleOperations(root, { - createdStyles, - removedStyles, - movedStyles - }); - additions.forEach((n) => { - deepObserve(n); - collectUndefinedElements(n); - }); - additions.forEach( - (node) => isCustomElement(node) && recordUndefinedElement(node) - ); - } - function handleHugeTreeMutations(root) { - const styles = new Set(getManageableStyles(root)); - const createdStyles = new Set(); - const removedStyles = new Set(); - const movedStyles = new Set(); - const prevStyles = getPrevStyles(root); - styles.forEach((s) => { - if (!prevStyles.has(s)) { - createdStyles.add(s); - } - }); - prevStyles.forEach((s) => { - if (!styles.has(s)) { - removedStyles.add(s); - } - }); - styles.forEach((s) => { - if ( - !createdStyles.has(s) && - !removedStyles.has(s) && - didStylePositionChange(s) - ) { - movedStyles.add(s); - } - }); - handleStyleOperations(root, { - createdStyles, - removedStyles, - movedStyles - }); - deepObserve(root); - collectUndefinedElements(root); - } - function handleAttributeMutations(mutations) { - const updatedStyles = new Set(); - const removedStyles = new Set(); - mutations.forEach((m) => { - const {target} = m; - if (target.isConnected) { - if (shouldManageStyle(target)) { - updatedStyles.add(target); - } else if ( - target instanceof HTMLLinkElement && - target.disabled - ) { - removedStyles.add(target); - } - } - }); - if (updatedStyles.size + removedStyles.size > 0) { - update({ - updated: Array.from(updatedStyles), - created: [], - removed: Array.from(removedStyles), - moved: [] - }); - } - } - function observe(root) { - if (observedRoots.has(root)) { - return; - } - const treeObserver = createOptimizedTreeObserver(root, { - onMinorMutations: handleMinorTreeMutations, - onHugeMutations: handleHugeTreeMutations - }); - const attrObserver = new MutationObserver(handleAttributeMutations); - attrObserver.observe(root, { - attributeFilter: ["rel", "disabled", "media", "href"], - subtree: true - }); - observers.push(treeObserver, attrObserver); - observedRoots.add(root); - } - function subscribeForShadowRootChanges(node) { - const {shadowRoot} = node; - if (shadowRoot == null || observedRoots.has(shadowRoot)) { - return; - } - observe(shadowRoot); - shadowRootDiscovered(shadowRoot); - } - function deepObserve(node) { - iterateShadowHosts(node, subscribeForShadowRootChanges); - } - observe(document); - deepObserve(document.documentElement); - watchWhenCustomElementsDefined((hosts) => { - const newStyles = []; - hosts.forEach((host) => - push(newStyles, getManageableStyles(host.shadowRoot)) - ); - update({created: newStyles, updated: [], removed: [], moved: []}); - hosts.forEach((host) => { - const {shadowRoot} = host; - if (shadowRoot == null) { - return; - } - subscribeForShadowRootChanges(host); - deepObserve(shadowRoot); - collectUndefinedElements(shadowRoot); - }); - }); - document.addEventListener("__darkreader__isDefined", handleIsDefined); - collectUndefinedElements(document); - } - function resetObservers() { - observers.forEach((o) => o.disconnect()); - observers.splice(0, observers.length); - observedRoots = new WeakSet(); - } - function stopWatchingForStylePositions() { - resetObservers(); - unsubscribeFromDefineCustomElements(); - } - - function watchForStyleChanges(currentStyles, update, shadowRootDiscovered) { - watchForStylePositions(currentStyles, update, shadowRootDiscovered); - } - function stopWatchingForStyleChanges() { - stopWatchingForStylePositions(); - } - - let canUseSheetProxy = false; - document.addEventListener( - "__darkreader__inlineScriptsAllowed", - () => (canUseSheetProxy = true), - {once: true} - ); - const overrides = new WeakSet(); - const overridesBySource = new WeakMap(); - function canHaveAdoptedStyleSheets(node) { - return Array.isArray(node.adoptedStyleSheets); - } - function createAdoptedStyleSheetOverride(node) { - let cancelAsyncOperations = false; - function iterateSourceSheets(iterator) { - node.adoptedStyleSheets.forEach((sheet) => { - if (!overrides.has(sheet)) { - iterator(sheet); - } - }); - } - function injectSheet(sheet, override) { - const newSheets = [...node.adoptedStyleSheets]; - const sheetIndex = newSheets.indexOf(sheet); - const overrideIndex = newSheets.indexOf(override); - if (overrideIndex >= 0) { - newSheets.splice(overrideIndex, 1); - } - newSheets.splice(sheetIndex + 1, 0, override); - node.adoptedStyleSheets = newSheets; - } - function clear() { - const newSheets = [...node.adoptedStyleSheets]; - for (let i = newSheets.length - 1; i >= 0; i--) { - const sheet = newSheets[i]; - if (overrides.has(sheet)) { - newSheets.splice(i, 1); - } - } - if (node.adoptedStyleSheets.length !== newSheets.length) { - node.adoptedStyleSheets = newSheets; - } - sourceSheets = new WeakSet(); - sourceDeclarations = new WeakSet(); - } - const cleaners = []; - function destroy() { - cleaners.forEach((c) => c()); - cleaners.splice(0); - cancelAsyncOperations = true; - clear(); - if (frameId) { - cancelAnimationFrame(frameId); - frameId = null; - } - } - let rulesChangeKey = 0; - function getRulesChangeKey() { - let count = 0; - iterateSourceSheets((sheet) => { - count += sheet.cssRules.length; - }); - if (count === 1) { - const rule = node.adoptedStyleSheets[0].cssRules[0]; - return rule instanceof CSSStyleRule ? rule.style.length : count; - } - return count; - } - let sourceSheets = new WeakSet(); - let sourceDeclarations = new WeakSet(); - function render(theme, ignoreImageAnalysis) { - clear(); - for (let i = node.adoptedStyleSheets.length - 1; i >= 0; i--) { - const sheet = node.adoptedStyleSheets[i]; - if (overrides.has(sheet)) { - continue; - } - sourceSheets.add(sheet); - const readyOverride = overridesBySource.get(sheet); - if (readyOverride) { - rulesChangeKey = getRulesChangeKey(); - injectSheet(sheet, readyOverride); - continue; - } - const rules = sheet.cssRules; - const override = new CSSStyleSheet(); - overridesBySource.set(sheet, override); - iterateCSSRules(rules, (rule) => - sourceDeclarations.add(rule.style) - ); - const prepareSheet = () => { - for (let i = override.cssRules.length - 1; i >= 0; i--) { - override.deleteRule(i); - } - override.insertRule("#__darkreader__adoptedOverride {}"); - injectSheet(sheet, override); - overrides.add(override); - return override; - }; - const sheetModifier = createStyleSheetModifier(); - sheetModifier.modifySheet({ - prepareSheet, - sourceCSSRules: rules, - theme, - ignoreImageAnalysis, - force: false, - isAsyncCancelled: () => cancelAsyncOperations - }); - } - rulesChangeKey = getRulesChangeKey(); - } - let callbackRequested = false; - function handleArrayChange(callback) { - if (callbackRequested) { - return; - } - callbackRequested = true; - queueMicrotask(() => { - callbackRequested = false; - const sheets = node.adoptedStyleSheets.filter( - (s) => !overrides.has(s) - ); - sheets.forEach((sheet) => overridesBySource.delete(sheet)); - callback(sheets); - }); - } - function checkForUpdates() { - return getRulesChangeKey() !== rulesChangeKey; - } - let frameId = null; - function watchUsingRAF(callback) { - frameId = requestAnimationFrame(() => { - if (canUseSheetProxy) { - return; - } - if (checkForUpdates()) { - handleArrayChange(callback); - } - watchUsingRAF(callback); - }); - } - function addSheetChangeEventListener(type, listener) { - node.addEventListener(type, listener); - cleaners.push(() => node.removeEventListener(type, listener)); - } - function watch(callback) { - const onAdoptedSheetsChange = () => { - canUseSheetProxy = true; - handleArrayChange(callback); - }; - addSheetChangeEventListener( - "__darkreader__adoptedStyleSheetsChange", - onAdoptedSheetsChange - ); - addSheetChangeEventListener( - "__darkreader__adoptedStyleSheetChange", - onAdoptedSheetsChange - ); - addSheetChangeEventListener( - "__darkreader__adoptedStyleDeclarationChange", - onAdoptedSheetsChange - ); - if (canUseSheetProxy) { - return; - } - watchUsingRAF(callback); - } - return { - render, - destroy, - watch - }; - } - - let documentVisibilityListener = null; - let documentIsVisible_ = !document.hidden; - const listenerOptions = { - capture: true, - passive: true - }; - function watchForDocumentVisibility() { - document.addEventListener( - "visibilitychange", - documentVisibilityListener, - listenerOptions - ); - window.addEventListener( - "pageshow", - documentVisibilityListener, - listenerOptions - ); - window.addEventListener( - "focus", - documentVisibilityListener, - listenerOptions - ); - } - function stopWatchingForDocumentVisibility() { - document.removeEventListener( - "visibilitychange", - documentVisibilityListener, - listenerOptions - ); - window.removeEventListener( - "pageshow", - documentVisibilityListener, - listenerOptions - ); - window.removeEventListener( - "focus", - documentVisibilityListener, - listenerOptions - ); - } - function setDocumentVisibilityListener(callback) { - const alreadyWatching = Boolean(documentVisibilityListener); - documentVisibilityListener = () => { - if (!document.hidden) { - removeDocumentVisibilityListener(); - callback(); - documentIsVisible_ = true; - } - }; - if (!alreadyWatching) { - watchForDocumentVisibility(); - } - } - function removeDocumentVisibilityListener() { - stopWatchingForDocumentVisibility(); - documentVisibilityListener = null; - } - function documentIsVisible() { - return documentIsVisible_; - } - - function findRelevantFix(documentURL, fixes) { - if ( - !Array.isArray(fixes) || - fixes.length === 0 || - fixes[0].url[0] !== "*" - ) { - return null; - } - let maxSpecificity = 0; - let maxSpecificityIndex = null; - for (let i = 1; i < fixes.length; i++) { - if (isURLInList(documentURL, fixes[i].url)) { - const specificity = fixes[i].url[0].length; - if ( - maxSpecificityIndex === null || - maxSpecificity < specificity - ) { - maxSpecificity = specificity; - maxSpecificityIndex = i; - } - } - } - return maxSpecificityIndex; - } - function combineFixes(fixes) { - if (fixes.length === 0 || fixes[0].url[0] !== "*") { - return null; - } - function combineArrays(arrays) { - return arrays.filter(Boolean).flat(); - } - return { - url: [], - invert: combineArrays(fixes.map((fix) => fix.invert)), - css: fixes - .map((fix) => fix.css) - .filter(Boolean) - .join("\n"), - ignoreInlineStyle: combineArrays( - fixes.map((fix) => fix.ignoreInlineStyle) - ), - ignoreImageAnalysis: combineArrays( - fixes.map((fix) => fix.ignoreImageAnalysis) - ), - disableStyleSheetsProxy: fixes.some( - (fix) => fix.disableStyleSheetsProxy - ), - disableCustomElementRegistryProxy: fixes.some( - (fix) => fix.disableCustomElementRegistryProxy - ) - }; - } - - const INSTANCE_ID = generateUID(); - const styleManagers = new Map(); - const adoptedStyleManagers = []; - const adoptedStyleFallbacks = new Map(); - let theme = null; - let fixes = null; - let isIFrame = null; - let ignoredImageAnalysisSelectors = []; - let ignoredInlineSelectors = []; - function createOrUpdateStyle(className, root = document.head || document) { - let element = root.querySelector(`.${className}`); - if (!element) { - element = document.createElement("style"); - element.classList.add("darkreader"); - element.classList.add(className); - element.media = "screen"; - element.textContent = ""; - } - return element; - } - const nodePositionWatchers = new Map(); - function setupNodePositionWatcher(node, alias) { - nodePositionWatchers.has(alias) && - nodePositionWatchers.get(alias).stop(); - nodePositionWatchers.set(alias, watchForNodePosition(node, "head")); - } - function stopStylePositionWatchers() { - forEach(nodePositionWatchers.values(), (watcher) => watcher.stop()); - nodePositionWatchers.clear(); - } - function createStaticStyleOverrides() { - const fallbackStyle = createOrUpdateStyle( - "darkreader--fallback", - document - ); - fallbackStyle.textContent = getModifiedFallbackStyle(theme, { - strict: true - }); - document.head.insertBefore(fallbackStyle, document.head.firstChild); - setupNodePositionWatcher(fallbackStyle, "fallback"); - const userAgentStyle = createOrUpdateStyle("darkreader--user-agent"); - userAgentStyle.textContent = getModifiedUserAgentStyle( - theme, - isIFrame, - theme.styleSystemControls - ); - document.head.insertBefore(userAgentStyle, fallbackStyle.nextSibling); - setupNodePositionWatcher(userAgentStyle, "user-agent"); - const textStyle = createOrUpdateStyle("darkreader--text"); - if (theme.useFont || theme.textStroke > 0) { - textStyle.textContent = createTextStyle(theme); - } else { - textStyle.textContent = ""; - } - document.head.insertBefore(textStyle, fallbackStyle.nextSibling); - setupNodePositionWatcher(textStyle, "text"); - const invertStyle = createOrUpdateStyle("darkreader--invert"); - if (fixes && Array.isArray(fixes.invert) && fixes.invert.length > 0) { - invertStyle.textContent = [ - `${fixes.invert.join(", ")} {`, - ` filter: ${getCSSFilterValue({ - ...theme, - contrast: - theme.mode === 0 - ? theme.contrast - : clamp(theme.contrast - 10, 0, 100) - })} !important;`, - "}" - ].join("\n"); - } else { - invertStyle.textContent = ""; - } - document.head.insertBefore(invertStyle, textStyle.nextSibling); - setupNodePositionWatcher(invertStyle, "invert"); - const inlineStyle = createOrUpdateStyle("darkreader--inline"); - inlineStyle.textContent = getInlineOverrideStyle(); - document.head.insertBefore(inlineStyle, invertStyle.nextSibling); - setupNodePositionWatcher(inlineStyle, "inline"); - const overrideStyle = createOrUpdateStyle("darkreader--override"); - overrideStyle.textContent = - fixes && fixes.css ? replaceCSSTemplates(fixes.css) : ""; - document.head.appendChild(overrideStyle); - setupNodePositionWatcher(overrideStyle, "override"); - const variableStyle = createOrUpdateStyle("darkreader--variables"); - const selectionColors = theme?.selectionColor - ? getSelectionColor(theme) - : null; - const neutralBackgroundColor = modifyBackgroundColor( - parseColorWithCache("#ffffff"), - theme - ); - const neutralTextColor = modifyForegroundColor( - parseColorWithCache("#000000"), - theme - ); - variableStyle.textContent = [ - `:root {`, - ` --darkreader-neutral-background: ${neutralBackgroundColor};`, - ` --darkreader-neutral-text: ${neutralTextColor};`, - ` --darkreader-selection-background: ${selectionColors?.backgroundColorSelection ?? "initial"};`, - ` --darkreader-selection-text: ${selectionColors?.foregroundColorSelection ?? "initial"};`, - `}` - ].join("\n"); - document.head.insertBefore(variableStyle, inlineStyle.nextSibling); - setupNodePositionWatcher(variableStyle, "variables"); - const rootVarsStyle = createOrUpdateStyle("darkreader--root-vars"); - document.head.insertBefore(rootVarsStyle, variableStyle.nextSibling); - const enableStyleSheetsProxy = !( - fixes && fixes.disableStyleSheetsProxy - ); - const enableCustomElementRegistryProxy = !( - fixes && fixes.disableCustomElementRegistryProxy - ); - document.dispatchEvent(new CustomEvent("__darkreader__cleanUp")); - { - document.dispatchEvent( - new CustomEvent("__darkreader__stylesheetProxy__arg", { - detail: { - enableStyleSheetsProxy, - enableCustomElementRegistryProxy - } - }) - ); - } - } - const shadowRootsWithOverrides = new Set(); - function createShadowStaticStyleOverridesInner(root) { - const inlineStyle = createOrUpdateStyle("darkreader--inline", root); - inlineStyle.textContent = getInlineOverrideStyle(); - root.insertBefore(inlineStyle, root.firstChild); - const overrideStyle = createOrUpdateStyle("darkreader--override", root); - overrideStyle.textContent = - fixes && fixes.css ? replaceCSSTemplates(fixes.css) : ""; - root.insertBefore(overrideStyle, inlineStyle.nextSibling); - const invertStyle = createOrUpdateStyle("darkreader--invert", root); - if (fixes && Array.isArray(fixes.invert) && fixes.invert.length > 0) { - invertStyle.textContent = [ - `${fixes.invert.join(", ")} {`, - ` filter: ${getCSSFilterValue({ - ...theme, - contrast: - theme.mode === 0 - ? theme.contrast - : clamp(theme.contrast - 10, 0, 100) - })} !important;`, - "}" - ].join("\n"); - } else { - invertStyle.textContent = ""; - } - root.insertBefore(invertStyle, overrideStyle.nextSibling); - shadowRootsWithOverrides.add(root); - } - function delayedCreateShadowStaticStyleOverrides(root) { - const observer = new MutationObserver((mutations, observer) => { - observer.disconnect(); - for (const {type, removedNodes} of mutations) { - if (type === "childList") { - for (const {nodeName, className} of removedNodes) { - if ( - nodeName === "STYLE" && - [ - "darkreader darkreader--inline", - "darkreader darkreader--override", - "darkreader darkreader--invert" - ].includes(className) - ) { - createShadowStaticStyleOverridesInner(root); - return; - } - } - } - } - }); - observer.observe(root, {childList: true}); - } - function createShadowStaticStyleOverrides(root) { - const delayed = root.firstChild === null; - createShadowStaticStyleOverridesInner(root); - if (delayed) { - delayedCreateShadowStaticStyleOverrides(root); - } - } - function replaceCSSTemplates($cssText) { - return $cssText.replace(/\${(.+?)}/g, (_, $color) => { - const color = parseColorWithCache($color); - if (color) { - const lightness = getSRGBLightness(color.r, color.g, color.b); - if (lightness > 0.5) { - return modifyBackgroundColor(color, theme); - } - return modifyForegroundColor(color, theme); - } - return $color; - }); - } - function cleanFallbackStyle() { - const fallback = document.querySelector(".darkreader--fallback"); - if (fallback) { - fallback.textContent = ""; - } - } - function createDynamicStyleOverrides() { - cancelRendering(); - const allStyles = getManageableStyles(document); - const newManagers = allStyles - .filter((style) => !styleManagers.has(style)) - .map((style) => createManager(style)); - newManagers - .map((manager) => manager.details({secondRound: false})) - .filter((detail) => detail && detail.rules.length > 0) - .forEach((detail) => { - variablesStore.addRulesForMatching(detail.rules); - }); - variablesStore.matchVariablesAndDependents(); - variablesStore.setOnRootVariableChange(() => { - const rootVarsStyle = createOrUpdateStyle("darkreader--root-vars"); - variablesStore.putRootVars(rootVarsStyle, theme); - }); - const rootVarsStyle = createOrUpdateStyle("darkreader--root-vars"); - variablesStore.putRootVars(rootVarsStyle, theme); - styleManagers.forEach((manager) => - manager.render(theme, ignoredImageAnalysisSelectors) - ); - if (loadingStyles.size === 0) { - cleanFallbackStyle(); - } - newManagers.forEach((manager) => manager.watch()); - const inlineStyleElements = toArray( - document.querySelectorAll(INLINE_STYLE_SELECTOR) - ); - iterateShadowHosts(document.documentElement, (host) => { - createShadowStaticStyleOverrides(host.shadowRoot); - const elements = host.shadowRoot.querySelectorAll( - INLINE_STYLE_SELECTOR - ); - if (elements.length > 0) { - push(inlineStyleElements, elements); - } - }); - inlineStyleElements.forEach((el) => - overrideInlineStyle( - el, - theme, - ignoredInlineSelectors, - ignoredImageAnalysisSelectors - ) - ); - handleAdoptedStyleSheets(document); - variablesStore.matchVariablesAndDependents(); - } - let loadingStylesCounter = 0; - const loadingStyles = new Set(); - function createManager(element) { - const loadingStyleId = ++loadingStylesCounter; - function loadingStart() { - if (!isDOMReady() || !documentIsVisible()) { - loadingStyles.add(loadingStyleId); - logInfo( - `Current amount of styles loading: ${loadingStyles.size}` - ); - const fallbackStyle = document.querySelector( - ".darkreader--fallback" - ); - if (!fallbackStyle.textContent) { - fallbackStyle.textContent = getModifiedFallbackStyle( - theme, - {strict: false} - ); - } - } - } - function loadingEnd() { - loadingStyles.delete(loadingStyleId); - logInfo( - `Removed loadingStyle ${loadingStyleId}, now awaiting: ${loadingStyles.size}` - ); - if (loadingStyles.size === 0 && isDOMReady()) { - cleanFallbackStyle(); - } - } - function update() { - const details = manager.details({secondRound: true}); - if (!details) { - return; - } - variablesStore.addRulesForMatching(details.rules); - variablesStore.matchVariablesAndDependents(); - manager.render(theme, ignoredImageAnalysisSelectors); - } - const manager = manageStyle(element, { - update, - loadingStart, - loadingEnd - }); - styleManagers.set(element, manager); - return manager; - } - function removeManager(element) { - const manager = styleManagers.get(element); - if (manager) { - manager.destroy(); - styleManagers.delete(element); - } - } - const throttledRenderAllStyles = throttle((callback) => { - styleManagers.forEach((manager) => - manager.render(theme, ignoredImageAnalysisSelectors) - ); - adoptedStyleManagers.forEach((manager) => - manager.render(theme, ignoredImageAnalysisSelectors) - ); - callback && callback(); - }); - const cancelRendering = function () { - throttledRenderAllStyles.cancel(); - }; - function onDOMReady() { - if (loadingStyles.size === 0) { - cleanFallbackStyle(); - return; - } - } - function runDynamicStyle() { - createDynamicStyleOverrides(); - watchForUpdates(); - } - function createThemeAndWatchForUpdates() { - createStaticStyleOverrides(); - if (!documentIsVisible() && !theme.immediateModify) { - setDocumentVisibilityListener(runDynamicStyle); - } else { - runDynamicStyle(); - } - changeMetaThemeColorWhenAvailable(theme); - } - function handleAdoptedStyleSheets(node) { - if (canHaveAdoptedStyleSheets(node)) { - node.adoptedStyleSheets.forEach((s) => { - variablesStore.addRulesForMatching(s.cssRules); - }); - const newManger = createAdoptedStyleSheetOverride(node); - adoptedStyleManagers.push(newManger); - newManger.render(theme, ignoredImageAnalysisSelectors); - newManger.watch((sheets) => { - sheets.forEach((s) => { - variablesStore.addRulesForMatching(s.cssRules); - }); - variablesStore.matchVariablesAndDependents(); - newManger.render(theme, ignoredImageAnalysisSelectors); - }); - } - } - function watchForUpdates() { - const managedStyles = Array.from(styleManagers.keys()); - watchForStyleChanges( - managedStyles, - ({created, updated, removed, moved}) => { - const stylesToRemove = removed; - const stylesToManage = created - .concat(updated) - .concat(moved) - .filter((style) => !styleManagers.has(style)); - const stylesToRestore = moved.filter((style) => - styleManagers.has(style) - ); - stylesToRemove.forEach((style) => removeManager(style)); - const newManagers = stylesToManage.map((style) => - createManager(style) - ); - newManagers - .map((manager) => manager.details({secondRound: false})) - .filter((detail) => detail && detail.rules.length > 0) - .forEach((detail) => { - variablesStore.addRulesForMatching(detail.rules); - }); - variablesStore.matchVariablesAndDependents(); - newManagers.forEach((manager) => - manager.render(theme, ignoredImageAnalysisSelectors) - ); - newManagers.forEach((manager) => manager.watch()); - stylesToRestore.forEach((style) => - styleManagers.get(style).restore() - ); - }, - (shadowRoot) => { - createShadowStaticStyleOverrides(shadowRoot); - handleAdoptedStyleSheets(shadowRoot); - } - ); - watchForInlineStyles( - (element) => { - overrideInlineStyle( - element, - theme, - ignoredInlineSelectors, - ignoredImageAnalysisSelectors - ); - if (element === document.documentElement) { - const styleAttr = element.getAttribute("style") || ""; - if (styleAttr.includes("--")) { - variablesStore.matchVariablesAndDependents(); - const rootVarsStyle = createOrUpdateStyle( - "darkreader--root-vars" - ); - variablesStore.putRootVars(rootVarsStyle, theme); - } - } - }, - (root) => { - createShadowStaticStyleOverrides(root); - const inlineStyleElements = root.querySelectorAll( - INLINE_STYLE_SELECTOR - ); - if (inlineStyleElements.length > 0) { - forEach(inlineStyleElements, (el) => - overrideInlineStyle( - el, - theme, - ignoredInlineSelectors, - ignoredImageAnalysisSelectors - ) - ); - } - } - ); - addDOMReadyListener(onDOMReady); - } - function stopWatchingForUpdates() { - styleManagers.forEach((manager) => manager.pause()); - stopStylePositionWatchers(); - stopWatchingForStyleChanges(); - stopWatchingForInlineStyles(); - removeDOMReadyListener(onDOMReady); - cleanReadyStateCompleteListeners(); - } - let metaObserver; - function addMetaListener() { - metaObserver = new MutationObserver(() => { - if (document.querySelector('meta[name="darkreader-lock"]')) { - metaObserver.disconnect(); - removeDynamicTheme(); - } - }); - metaObserver.observe(document.head, {childList: true, subtree: true}); - } - function createDarkReaderInstanceMarker() { - const metaElement = document.createElement("meta"); - metaElement.name = "darkreader"; - metaElement.content = INSTANCE_ID; - document.head.appendChild(metaElement); - } - function isDRLocked() { - return document.querySelector('meta[name="darkreader-lock"]') != null; - } - function isAnotherDarkReaderInstanceActive() { - const meta = document.querySelector('meta[name="darkreader"]'); - if (meta) { - if (meta.content !== INSTANCE_ID) { - return true; - } - return false; - } - createDarkReaderInstanceMarker(); - addMetaListener(); - return false; - } - let interceptorAttempts = 2; - function interceptOldScript({success, failure}) { - if (--interceptorAttempts <= 0) { - failure(); - return; - } - const oldMeta = document.head.querySelector('meta[name="darkreader"]'); - if (!oldMeta || oldMeta.content === INSTANCE_ID) { - return; - } - const lock = document.createElement("meta"); - lock.name = "darkreader-lock"; - document.head.append(lock); - queueMicrotask(() => { - lock.remove(); - success(); - }); - } - function disableConflictingPlugins() { - if (document.documentElement.hasAttribute("data-wp-dark-mode-preset")) { - const disableWPDarkMode = () => { - document.dispatchEvent( - new CustomEvent("__darkreader__disableConflictingPlugins") - ); - document.documentElement.classList.remove( - "wp-dark-mode-active" - ); - document.documentElement.removeAttribute( - "data-wp-dark-mode-active" - ); - }; - disableWPDarkMode(); - const observer = new MutationObserver(() => { - if ( - document.documentElement.classList.contains( - "wp-dark-mode-active" - ) || - document.documentElement.hasAttribute( - "data-wp-dark-mode-active" - ) - ) { - disableWPDarkMode(); - } - }); - observer.observe(document.documentElement, { - attributes: true, - attributeFilter: ["class", "data-wp-dark-mode-active"] - }); - } - } - function selectRelevantFix(documentURL, fixes) { - if (!fixes) { - return null; - } - if (fixes.length === 0 || fixes[0].url[0] !== "*") { - return null; - } - const relevantFixIndex = findRelevantFix(documentURL, fixes); - return relevantFixIndex - ? combineFixes([fixes[0], fixes[relevantFixIndex]]) - : fixes[0]; - } - function createOrUpdateDynamicTheme(theme, dynamicThemeFixes, iframe) { - const dynamicThemeFix = selectRelevantFix( - document.location.href, - dynamicThemeFixes - ); - createOrUpdateDynamicThemeInternal(theme, dynamicThemeFix, iframe); - } - function createOrUpdateDynamicThemeInternal( - themeConfig, - dynamicThemeFixes, - iframe - ) { - theme = themeConfig; - fixes = dynamicThemeFixes; - if (fixes) { - ignoredImageAnalysisSelectors = Array.isArray( - fixes.ignoreImageAnalysis - ) - ? fixes.ignoreImageAnalysis - : []; - ignoredInlineSelectors = Array.isArray(fixes.ignoreInlineStyle) - ? fixes.ignoreInlineStyle - : []; - } else { - ignoredImageAnalysisSelectors = []; - ignoredInlineSelectors = []; - } - if (theme.immediateModify) { - setIsDOMReady(() => { - return true; - }); - } - isIFrame = iframe; - const ready = () => { - const success = () => { - disableConflictingPlugins(); - document.documentElement.setAttribute( - "data-darkreader-mode", - "dynamic" - ); - document.documentElement.setAttribute( - "data-darkreader-scheme", - theme.mode ? "dark" : "dimmed" - ); - createThemeAndWatchForUpdates(); - }; - const failure = () => { - removeDynamicTheme(); - }; - if (isDRLocked()) { - removeNode(document.querySelector(".darkreader--fallback")); - } else if (isAnotherDarkReaderInstanceActive()) { - interceptOldScript({ - success, - failure - }); - } else { - success(); - } - }; - if (document.head) { - ready(); - } else { - { - const fallbackStyle = createOrUpdateStyle( - "darkreader--fallback" - ); - document.documentElement.appendChild(fallbackStyle); - fallbackStyle.textContent = getModifiedFallbackStyle(theme, { - strict: true - }); - } - const headObserver = new MutationObserver(() => { - if (document.head) { - headObserver.disconnect(); - ready(); - } - }); - headObserver.observe(document, {childList: true, subtree: true}); - } - } - function removeProxy() { - document.dispatchEvent(new CustomEvent("__darkreader__cleanUp")); - removeNode(document.head.querySelector(".darkreader--proxy")); - } - const cleaners = []; - function removeDynamicTheme() { - document.documentElement.removeAttribute(`data-darkreader-mode`); - document.documentElement.removeAttribute(`data-darkreader-scheme`); - cleanDynamicThemeCache(); - removeNode(document.querySelector(".darkreader--fallback")); - if (document.head) { - restoreMetaThemeColor(); - removeNode(document.head.querySelector(".darkreader--user-agent")); - removeNode(document.head.querySelector(".darkreader--text")); - removeNode(document.head.querySelector(".darkreader--invert")); - removeNode(document.head.querySelector(".darkreader--inline")); - removeNode(document.head.querySelector(".darkreader--override")); - removeNode(document.head.querySelector(".darkreader--variables")); - removeNode(document.head.querySelector(".darkreader--root-vars")); - removeNode(document.head.querySelector('meta[name="darkreader"]')); - removeProxy(); - } - shadowRootsWithOverrides.forEach((root) => { - removeNode(root.querySelector(".darkreader--inline")); - removeNode(root.querySelector(".darkreader--override")); - }); - shadowRootsWithOverrides.clear(); - forEach(styleManagers.keys(), (el) => removeManager(el)); - loadingStyles.clear(); - cleanLoadingLinks(); - forEach(document.querySelectorAll(".darkreader"), removeNode); - adoptedStyleManagers.forEach((manager) => manager.destroy()); - adoptedStyleManagers.splice(0); - adoptedStyleFallbacks.forEach((fallback) => fallback.destroy()); - adoptedStyleFallbacks.clear(); - metaObserver && metaObserver.disconnect(); - cleaners.forEach((clean) => clean()); - cleaners.splice(0); - } - function cleanDynamicThemeCache() { - variablesStore.clear(); - parsedURLCache.clear(); - removeDocumentVisibilityListener(); - cancelRendering(); - stopWatchingForUpdates(); - cleanModificationCache(); - clearColorCache(); - } - - function parseCSS(cssText) { - cssText = removeCSSComments(cssText); - cssText = cssText.trim(); - if (!cssText) { - return []; - } - const rules = []; - const excludeRanges = getTokenExclusionRanges(cssText); - const bracketRanges = getAllOpenCloseRanges( - cssText, - "{", - "}", - excludeRanges - ); - let ruleStart = 0; - bracketRanges.forEach((brackets) => { - const key = cssText.substring(ruleStart, brackets.start).trim(); - const content = cssText.substring( - brackets.start + 1, - brackets.end - 1 - ); - if (key.startsWith("@")) { - const typeEndIndex = key.search(/[\s\(]/); - const rule = { - type: - typeEndIndex < 0 ? key : key.substring(0, typeEndIndex), - query: - typeEndIndex < 0 - ? "" - : key.substring(typeEndIndex).trim(), - rules: parseCSS(content) - }; - rules.push(rule); - } else { - const rule = { - selectors: parseSelectors(key), - declarations: parseDeclarations(content) - }; - rules.push(rule); - } - ruleStart = brackets.end; - }); - return rules; - } - function getAllOpenCloseRanges( - input, - openToken, - closeToken, - excludeRanges = [] - ) { - const ranges = []; - let i = 0; - let range; - while ( - (range = getOpenCloseRange( - input, - i, - openToken, - closeToken, - excludeRanges - )) - ) { - ranges.push(range); - i = range.end; - } - return ranges; - } - function getTokenExclusionRanges(cssText) { - const singleQuoteGoesFirst = - cssText.indexOf("'") < cssText.indexOf('"'); - const firstQuote = singleQuoteGoesFirst ? "'" : '"'; - const secondQuote = singleQuoteGoesFirst ? '"' : "'"; - const excludeRanges = getAllOpenCloseRanges( - cssText, - firstQuote, - firstQuote - ); - excludeRanges.push( - ...getAllOpenCloseRanges( - cssText, - secondQuote, - secondQuote, - excludeRanges - ) - ); - excludeRanges.push( - ...getAllOpenCloseRanges(cssText, "[", "]", excludeRanges) - ); - excludeRanges.push( - ...getAllOpenCloseRanges(cssText, "(", ")", excludeRanges) - ); - return excludeRanges; - } - function parseSelectors(selectorText) { - const excludeRanges = getTokenExclusionRanges(selectorText); - return splitExcluding(selectorText, ",", excludeRanges); - } - function parseDeclarations(cssDeclarationsText) { - const declarations = []; - const excludeRanges = getTokenExclusionRanges(cssDeclarationsText); - splitExcluding(cssDeclarationsText, ";", excludeRanges).forEach( - (part) => { - const colonIndex = part.indexOf(":"); - if (colonIndex > 0) { - const importantIndex = part.indexOf("!important"); - declarations.push({ - property: part.substring(0, colonIndex).trim(), - value: part - .substring( - colonIndex + 1, - importantIndex > 0 - ? importantIndex - : part.length - ) - .trim(), - important: importantIndex > 0 - }); - } - } - ); - return declarations; - } - function isParsedStyleRule(rule) { - return "selectors" in rule; - } - - function formatCSS(cssText) { - const parsed = parseCSS(cssText); - return formatParsedCSS(parsed); - } - function formatParsedCSS(parsed) { - const lines = []; - const tab = " "; - function formatRule(rule, indent) { - if (isParsedStyleRule(rule)) { - formatStyleRule(rule, indent); - } else { - formatAtRule(rule, indent); - } - } - function formatAtRule({type, query, rules}, indent) { - lines.push(`${indent}${type} ${query} {`); - rules.forEach((child) => formatRule(child, `${indent}${tab}`)); - lines.push(`${indent}}`); - } - function formatStyleRule({selectors, declarations}, indent) { - const lastSelectorIndex = selectors.length - 1; - selectors.forEach((selector, i) => { - lines.push( - `${indent}${selector}${i < lastSelectorIndex ? "," : " {"}` - ); - }); - const sorted = sortDeclarations(declarations); - sorted.forEach(({property, value, important}) => { - lines.push( - `${indent}${tab}${property}: ${value}${important ? " !important" : ""};` - ); - }); - lines.push(`${indent}}`); - } - clearEmptyRules(parsed); - parsed.forEach((rule) => formatRule(rule, "")); - return lines.join("\n"); - } - function sortDeclarations(declarations) { - const prefixRegex = /^-[a-z]-/; - return [...declarations].sort((a, b) => { - const aProp = a.property; - const bProp = b.property; - const aPrefix = aProp.match(prefixRegex)?.[0] ?? ""; - const bPrefix = bProp.match(prefixRegex)?.[0] ?? ""; - const aNorm = aPrefix ? aProp.replace(prefixRegex, "") : aProp; - const bNorm = bPrefix ? bProp.replace(prefixRegex, "") : bProp; - if (aNorm === bNorm) { - return aPrefix.localeCompare(bPrefix); - } - return aNorm.localeCompare(bNorm); - }); - } - function clearEmptyRules(rules) { - for (let i = rules.length - 1; i >= 0; i--) { - const rule = rules[i]; - if (isParsedStyleRule(rule)) { - if (rule.declarations.length === 0) { - rules.splice(i, 1); - } - } else { - clearEmptyRules(rule.rules); - if (rule.rules.length === 0) { - rules.splice(i, 1); - } - } - } - } - - const blobRegex = /url\(\"(blob\:.*?)\"\)/g; - async function replaceBlobs(text) { - const promises = []; - getMatches(blobRegex, text, 1).forEach((url) => { - const promise = loadAsDataURL(url); - promises.push(promise); - }); - const data = await Promise.all(promises); - return text.replace(blobRegex, () => `url("${data.shift()}")`); - } - const banner = `/* - _______ - / \\ - .==. .==. - (( ))==(( )) - / "==" "=="\\ - /____|| || ||___\\ - ________ ____ ________ ___ ___ - | ___ \\ / \\ | ___ \\ | | / / - | | \\ \\ / /\\ \\ | | \\ \\| |_/ / - | | ) / /__\\ \\ | |__/ /| ___ \\ - | |__/ / ______ \\| ____ \\| | \\ \\ -_______|_______/__/ ____ \\__\\__|___\\__\\__|___\\__\\____ -| ___ \\ | ____/ / \\ | ___ \\ | ____| ___ \\ -| | \\ \\| |___ / /\\ \\ | | \\ \\| |___| | \\ \\ -| |__/ /| ____/ /__\\ \\ | | ) | ____| |__/ / -| ____ \\| |__/ ______ \\| |__/ /| |___| ____ \\ -|__| \\__\\____/__/ \\__\\_______/ |______|__| \\__\\ - https://darkreader.org -*/ - -/*! Dark reader generated CSS | Licensed under MIT https://github.com/darkreader/darkreader/blob/main/LICENSE */ -`; - async function collectCSS() { - const css = [banner]; - function addStaticCSS(selector, comment) { - const staticStyle = document.querySelector(selector); - if (staticStyle && staticStyle.textContent) { - css.push(`/* ${comment} */`); - css.push(staticStyle.textContent); - css.push(""); - } - } - addStaticCSS(".darkreader--fallback", "Fallback Style"); - addStaticCSS(".darkreader--user-agent", "User-Agent Style"); - addStaticCSS(".darkreader--text", "Text Style"); - addStaticCSS(".darkreader--invert", "Invert Style"); - addStaticCSS(".darkreader--variables", "Variables Style"); - const modifiedCSS = []; - document.querySelectorAll(".darkreader--sync").forEach((element) => { - forEach(element.sheet.cssRules, (rule) => { - rule && rule.cssText && modifiedCSS.push(rule.cssText); - }); - }); - if (modifiedCSS.length) { - const formattedCSS = formatCSS(modifiedCSS.join("\n")); - css.push("/* Modified CSS */"); - css.push(await replaceBlobs(formattedCSS)); - css.push(""); - } - addStaticCSS(".darkreader--override", "Override Style"); - return css.join("\n"); - } - - let unloaded = false; - const scriptId = generateUID(); - function cleanup() { - unloaded = true; - removeEventListener("pagehide", onPageHide); - removeEventListener("freeze", onFreeze); - removeEventListener("resume", onResume); - cleanDynamicThemeCache(); - stopDarkThemeDetector(); - stopColorSchemeChangeDetector(); - } - function sendMessage(message) { - if (unloaded) { - return; - } - const responseHandler = (response) => { - if ( - response === "unsupportedSender" || - response?.type === MessageTypeBGtoCS.UNSUPPORTED_SENDER - ) { - removeStyle(); - removeSVGFilter(); - removeDynamicTheme(); - cleanup(); - } - }; - try { - if (true) { - const promise = chrome.runtime.sendMessage(message); - promise.then(responseHandler).catch(cleanup); - } - } catch (error) { - if (error.message === "Extension context invalidated.") { - console.log( - "Dark Reader: instance of old CS detected, cleaning up." - ); - cleanup(); - } else { - console.log( - "Dark Reader: unexpected error during message passing." - ); - } - } - } - function onMessage(message) { - if ( - message.scriptId !== scriptId && - message.type !== MessageTypeUItoCS.EXPORT_CSS - ) { - return; - } - logInfoCollapsed(`onMessage[${message.type}]`, message); - switch (message.type) { - case MessageTypeBGtoCS.ADD_CSS_FILTER: - case MessageTypeBGtoCS.ADD_STATIC_THEME: { - const {css, detectDarkTheme, detectorHints} = message.data; - removeDynamicTheme(); - createOrUpdateStyle$1( - css, - message.type === MessageTypeBGtoCS.ADD_STATIC_THEME - ? "static" - : "filter" - ); - if (detectDarkTheme) { - runDarkThemeDetector((hasDarkTheme) => { - if (hasDarkTheme) { - removeStyle(); - onDarkThemeDetected(); - } - }, detectorHints); - } - break; - } - case MessageTypeBGtoCS.ADD_SVG_FILTER: { - const { - css, - svgMatrix, - svgReverseMatrix, - detectDarkTheme, - detectorHints - } = message.data; - removeDynamicTheme(); - createOrUpdateSVGFilter(svgMatrix, svgReverseMatrix); - createOrUpdateStyle$1(css, "filter"); - if (detectDarkTheme) { - runDarkThemeDetector((hasDarkTheme) => { - if (hasDarkTheme) { - removeStyle(); - removeSVGFilter(); - onDarkThemeDetected(); - } - }, detectorHints); - } - break; - } - case MessageTypeBGtoCS.ADD_DYNAMIC_THEME: { - const {theme, fixes, isIFrame, detectDarkTheme, detectorHints} = - message.data; - removeStyle(); - createOrUpdateDynamicTheme(theme, fixes, isIFrame); - if (detectDarkTheme) { - runDarkThemeDetector((hasDarkTheme) => { - if (hasDarkTheme) { - removeDynamicTheme(); - onDarkThemeDetected(); - } - }, detectorHints); - } - break; - } - case MessageTypeUItoCS.EXPORT_CSS: - collectCSS().then((collectedCSS) => - sendMessage({ - type: MessageTypeCStoUI.EXPORT_CSS_RESPONSE, - data: collectedCSS - }) - ); - break; - case MessageTypeBGtoCS.UNSUPPORTED_SENDER: - case MessageTypeBGtoCS.CLEAN_UP: - removeStyle(); - removeSVGFilter(); - removeDynamicTheme(); - stopDarkThemeDetector(); - break; - } - } - function sendConnectionOrResumeMessage(type) { - sendMessage({ - type, - scriptId, - data: { - isDark: isSystemDarkModeEnabled(), - isTopFrame: window === window.top - } - }); - } - runColorSchemeChangeDetector((isDark) => - sendMessage({ - type: MessageTypeCStoBG.COLOR_SCHEME_CHANGE, - data: {isDark} - }) - ); - chrome.runtime.onMessage.addListener(onMessage); - sendConnectionOrResumeMessage(MessageTypeCStoBG.DOCUMENT_CONNECT); - function onPageHide(e) { - if (e.persisted === false) { - sendMessage({type: MessageTypeCStoBG.DOCUMENT_FORGET, scriptId}); - } - } - function onFreeze() { - sendMessage({type: MessageTypeCStoBG.DOCUMENT_FREEZE}); - } - function onResume() { - sendConnectionOrResumeMessage(MessageTypeCStoBG.DOCUMENT_RESUME); - } - function onDarkThemeDetected() { - sendMessage({type: MessageTypeCStoBG.DARK_THEME_DETECTED}); - } - { - addEventListener("pagehide", onPageHide, {passive: true}); - addEventListener("freeze", onFreeze, {passive: true}); - addEventListener("resume", onResume, {passive: true}); - } -})(); diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/inject/proxy.js b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/inject/proxy.js deleted file mode 100644 index 9c928e7..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/inject/proxy.js +++ /dev/null @@ -1,538 +0,0 @@ -(function () { - "use strict"; - - function injectProxy( - enableStyleSheetsProxy, - enableCustomElementRegistryProxy - ) { - document.dispatchEvent( - new CustomEvent("__darkreader__inlineScriptsAllowed") - ); - const cleaners = []; - function cleanUp() { - cleaners.forEach((clean) => clean()); - cleaners.splice(0); - } - function documentEventListener(type, listener, options) { - document.addEventListener(type, listener, options); - cleaners.push(() => document.removeEventListener(type, listener)); - } - function disableConflictingPlugins() { - const disableWPDarkMode = () => { - if (window?.WPDarkMode?.deactivate) { - window.WPDarkMode.deactivate(); - } - }; - disableWPDarkMode(); - } - documentEventListener("__darkreader__cleanUp", cleanUp); - documentEventListener( - "__darkreader__disableConflictingPlugins", - disableConflictingPlugins - ); - function overrideProperty(cls, prop, overrides) { - const proto = cls.prototype; - const oldDescriptor = Object.getOwnPropertyDescriptor(proto, prop); - const newDescriptor = {...oldDescriptor}; - Object.keys(overrides).forEach((key) => { - const factory = overrides[key]; - newDescriptor[key] = factory(oldDescriptor[key]); - }); - Object.defineProperty(proto, prop, newDescriptor); - cleaners.push(() => - Object.defineProperty(proto, prop, oldDescriptor) - ); - } - function override(cls, prop, factory) { - overrideProperty(cls, prop, {value: factory}); - } - function isDRElement(element) { - return element?.classList?.contains("darkreader"); - } - function isDRSheet(sheet) { - return isDRElement(sheet.ownerNode); - } - const updateSheetEvent = new CustomEvent("__darkreader__updateSheet"); - const adoptedSheetChangeEvent = new CustomEvent( - "__darkreader__adoptedStyleSheetChange" - ); - const adoptedSheetOwners = new WeakMap(); - const adoptedDeclarationSheets = new WeakMap(); - function onAdoptedSheetChange(sheet) { - const owners = adoptedSheetOwners.get(sheet); - owners?.forEach((node) => { - if (node.isConnected) { - node.dispatchEvent(adoptedSheetChangeEvent); - } else { - owners.delete(node); - } - }); - } - function reportSheetChange(sheet) { - if (sheet.ownerNode && !isDRSheet(sheet)) { - sheet.ownerNode.dispatchEvent(updateSheetEvent); - } - if (adoptedSheetOwners.has(sheet)) { - onAdoptedSheetChange(sheet); - } - } - function reportSheetChangeAsync(sheet, promise) { - const {ownerNode} = sheet; - if ( - ownerNode && - !isDRSheet(sheet) && - promise && - promise instanceof Promise - ) { - promise.then(() => ownerNode.dispatchEvent(updateSheetEvent)); - } - if (adoptedSheetOwners.has(sheet)) { - if (promise && promise instanceof Promise) { - promise.then(() => onAdoptedSheetChange(sheet)); - } - } - } - override( - CSSStyleSheet, - "addRule", - (native) => - function (selector, style, index) { - native.call(this, selector, style, index); - reportSheetChange(this); - return -1; - } - ); - override( - CSSStyleSheet, - "insertRule", - (native) => - function (rule, index) { - const returnValue = native.call(this, rule, index); - reportSheetChange(this); - return returnValue; - } - ); - override( - CSSStyleSheet, - "deleteRule", - (native) => - function (index) { - native.call(this, index); - reportSheetChange(this); - } - ); - override( - CSSStyleSheet, - "removeRule", - (native) => - function (index) { - native.call(this, index); - reportSheetChange(this); - } - ); - override( - CSSStyleSheet, - "replace", - (native) => - function (cssText) { - const returnValue = native.call(this, cssText); - reportSheetChangeAsync(this, returnValue); - return returnValue; - } - ); - override( - CSSStyleSheet, - "replaceSync", - (native) => - function (cssText) { - native.call(this, cssText); - reportSheetChange(this); - } - ); - const shouldWrapHTMLElement = - location.hostname === "baidu.com" || - location.hostname.endsWith(".baidu.com"); - if (shouldWrapHTMLElement) { - override( - Element, - "getElementsByTagName", - (native) => - function (tagName) { - if (tagName !== "style") { - return native.call(this, tagName); - } - const getCurrentElementValue = () => { - const elements = native.call(this, tagName); - return Object.setPrototypeOf( - [...elements].filter( - (element) => - element && !isDRElement(element) - ), - NodeList.prototype - ); - }; - let elements = getCurrentElementValue(); - const nodeListBehavior = { - get: function (_, property) { - return getCurrentElementValue()[ - Number(property) || property - ]; - } - }; - elements = new Proxy(elements, nodeListBehavior); - return elements; - } - ); - } - const shouldProxyChildNodes = ["brilliant.org", "www.vy.no"].includes( - location.hostname - ); - if (shouldProxyChildNodes) { - overrideProperty(Node, "childNodes", { - get: (native) => - function () { - const childNodes = native.call(this); - return Object.setPrototypeOf( - [...childNodes].filter((element) => { - return !isDRElement(element); - }), - NodeList.prototype - ); - } - }); - } - function resolveCustomElement(tag) { - customElements.whenDefined(tag).then(() => { - document.dispatchEvent( - new CustomEvent("__darkreader__isDefined", {detail: {tag}}) - ); - }); - } - documentEventListener("__darkreader__addUndefinedResolver", (e) => - resolveCustomElement(e.detail.tag) - ); - if (enableCustomElementRegistryProxy) { - override( - CustomElementRegistry, - "define", - (native) => - function (name, constructor, options) { - resolveCustomElement(name); - native.call(this, name, constructor, options); - } - ); - } - async function checkBlobURLSupport() { - const svg = - ''; - const bytes = new Uint8Array(svg.length); - for (let i = 0; i < svg.length; i++) { - bytes[i] = svg.charCodeAt(i); - } - const blob = new Blob([bytes], {type: "image/svg+xml"}); - const objectURL = URL.createObjectURL(blob); - let blobURLAllowed; - try { - const image = new Image(); - await new Promise((resolve, reject) => { - image.onload = () => resolve(); - image.onerror = () => reject(); - image.src = objectURL; - }); - blobURLAllowed = true; - } catch (err) { - blobURLAllowed = false; - } - document.dispatchEvent( - new CustomEvent("__darkreader__blobURLCheckResponse", { - detail: {blobURLAllowed} - }) - ); - } - documentEventListener( - "__darkreader__blobURLCheckRequest", - checkBlobURLSupport, - {once: true} - ); - if (enableStyleSheetsProxy) { - overrideProperty(Document, "styleSheets", { - get: (native) => - function () { - const getCurrentValue = () => { - const docSheets = native.call(this); - const filteredSheets = [...docSheets].filter( - (styleSheet) => - styleSheet.ownerNode && - !isDRSheet(styleSheet) - ); - filteredSheets.item = (item) => - filteredSheets[item]; - return Object.setPrototypeOf( - filteredSheets, - StyleSheetList.prototype - ); - }; - let elements = getCurrentValue(); - const styleSheetListBehavior = { - get: function (_, property) { - return getCurrentValue()[property]; - } - }; - elements = new Proxy(elements, styleSheetListBehavior); - return elements; - } - }); - } - { - const adoptedSheetsSourceProxies = new WeakMap(); - const adoptedSheetsProxySources = new WeakMap(); - const adoptedSheetsChangeEvent = new CustomEvent( - "__darkreader__adoptedStyleSheetsChange" - ); - const adoptedSheetOverrideCache = new WeakSet(); - const adoptedSheetsSnapshots = new WeakMap(); - const isDRAdoptedSheetOverride = (sheet) => { - if (!sheet || !sheet.cssRules) { - return false; - } - if (adoptedSheetOverrideCache.has(sheet)) { - return true; - } - if ( - sheet.cssRules.length > 0 && - sheet.cssRules[0].cssText.startsWith( - "#__darkreader__adoptedOverride" - ) - ) { - adoptedSheetOverrideCache.add(sheet); - return true; - } - return false; - }; - const areArraysEqual = (a, b) => { - return a.length === b.length && a.every((x, i) => x === b[i]); - }; - const onAdoptedSheetsChange = (node) => { - const prev = adoptedSheetsSnapshots.get(node); - const curr = (node.adoptedStyleSheets || []).filter( - (s) => !isDRAdoptedSheetOverride(s) - ); - adoptedSheetsSnapshots.set(node, curr); - if (!prev || !areArraysEqual(prev, curr)) { - curr.forEach((sheet) => { - if (!adoptedSheetOwners.has(sheet)) { - adoptedSheetOwners.set(sheet, new Set()); - } - adoptedSheetOwners.get(sheet).add(node); - for (const rule of sheet.cssRules) { - const declaration = rule.style; - if (declaration) { - adoptedDeclarationSheets.set( - declaration, - sheet - ); - } - } - }); - node.dispatchEvent(adoptedSheetsChangeEvent); - } - }; - const proxyAdoptedSheetsArray = (node, source) => { - if (adoptedSheetsProxySources.has(source)) { - return source; - } - if (adoptedSheetsSourceProxies.has(source)) { - return adoptedSheetsSourceProxies.get(source); - } - const proxy = new Proxy(source, { - deleteProperty(target, property) { - delete target[property]; - return true; - }, - set(target, property, value) { - target[property] = value; - if (property === "length") { - onAdoptedSheetsChange(node); - } - return true; - } - }); - adoptedSheetsSourceProxies.set(source, proxy); - adoptedSheetsProxySources.set(proxy, source); - return proxy; - }; - [Document, ShadowRoot].forEach((ctor) => { - overrideProperty(ctor, "adoptedStyleSheets", { - get: (native) => - function () { - const source = native.call(this); - return proxyAdoptedSheetsArray(this, source); - }, - set: (native) => - function (source) { - if (adoptedSheetsProxySources.has(source)) { - source = adoptedSheetsProxySources.get(source); - } - native.call(this, source); - onAdoptedSheetsChange(this); - } - }); - }); - const adoptedDeclarationChangeEvent = new CustomEvent( - "__darkreader__adoptedStyleDeclarationChange" - ); - ["setProperty", "removeProperty"].forEach((key) => { - override(CSSStyleDeclaration, key, (native) => { - return function (...args) { - const returnValue = native.apply(this, args); - const sheet = adoptedDeclarationSheets.get(this); - if (sheet) { - const owners = adoptedSheetOwners.get(sheet); - if (owners) { - owners.forEach((node) => { - node.dispatchEvent( - adoptedDeclarationChangeEvent - ); - }); - } - } - return returnValue; - }; - }); - }); - } - } - - var MessageTypeUItoBG; - (function (MessageTypeUItoBG) { - MessageTypeUItoBG["GET_DATA"] = "ui-bg-get-data"; - MessageTypeUItoBG["GET_DEVTOOLS_DATA"] = "ui-bg-get-devtools-data"; - MessageTypeUItoBG["SUBSCRIBE_TO_CHANGES"] = - "ui-bg-subscribe-to-changes"; - MessageTypeUItoBG["UNSUBSCRIBE_FROM_CHANGES"] = - "ui-bg-unsubscribe-from-changes"; - MessageTypeUItoBG["CHANGE_SETTINGS"] = "ui-bg-change-settings"; - MessageTypeUItoBG["SET_THEME"] = "ui-bg-set-theme"; - MessageTypeUItoBG["TOGGLE_ACTIVE_TAB"] = "ui-bg-toggle-active-tab"; - MessageTypeUItoBG["MARK_NEWS_AS_READ"] = "ui-bg-mark-news-as-read"; - MessageTypeUItoBG["MARK_NEWS_AS_DISPLAYED"] = - "ui-bg-mark-news-as-displayed"; - MessageTypeUItoBG["LOAD_CONFIG"] = "ui-bg-load-config"; - MessageTypeUItoBG["APPLY_DEV_DYNAMIC_THEME_FIXES"] = - "ui-bg-apply-dev-dynamic-theme-fixes"; - MessageTypeUItoBG["RESET_DEV_DYNAMIC_THEME_FIXES"] = - "ui-bg-reset-dev-dynamic-theme-fixes"; - MessageTypeUItoBG["APPLY_DEV_INVERSION_FIXES"] = - "ui-bg-apply-dev-inversion-fixes"; - MessageTypeUItoBG["RESET_DEV_INVERSION_FIXES"] = - "ui-bg-reset-dev-inversion-fixes"; - MessageTypeUItoBG["APPLY_DEV_STATIC_THEMES"] = - "ui-bg-apply-dev-static-themes"; - MessageTypeUItoBG["RESET_DEV_STATIC_THEMES"] = - "ui-bg-reset-dev-static-themes"; - MessageTypeUItoBG["COLOR_SCHEME_CHANGE"] = "ui-bg-color-scheme-change"; - MessageTypeUItoBG["HIDE_HIGHLIGHTS"] = "ui-bg-hide-highlights"; - })(MessageTypeUItoBG || (MessageTypeUItoBG = {})); - var MessageTypeBGtoUI; - (function (MessageTypeBGtoUI) { - MessageTypeBGtoUI["CHANGES"] = "bg-ui-changes"; - })(MessageTypeBGtoUI || (MessageTypeBGtoUI = {})); - var DebugMessageTypeBGtoUI; - (function (DebugMessageTypeBGtoUI) { - DebugMessageTypeBGtoUI["CSS_UPDATE"] = "debug-bg-ui-css-update"; - DebugMessageTypeBGtoUI["UPDATE"] = "debug-bg-ui-update"; - })(DebugMessageTypeBGtoUI || (DebugMessageTypeBGtoUI = {})); - var MessageTypeBGtoCS; - (function (MessageTypeBGtoCS) { - MessageTypeBGtoCS["ADD_CSS_FILTER"] = "bg-cs-add-css-filter"; - MessageTypeBGtoCS["ADD_DYNAMIC_THEME"] = "bg-cs-add-dynamic-theme"; - MessageTypeBGtoCS["ADD_STATIC_THEME"] = "bg-cs-add-static-theme"; - MessageTypeBGtoCS["ADD_SVG_FILTER"] = "bg-cs-add-svg-filter"; - MessageTypeBGtoCS["CLEAN_UP"] = "bg-cs-clean-up"; - MessageTypeBGtoCS["FETCH_RESPONSE"] = "bg-cs-fetch-response"; - MessageTypeBGtoCS["UNSUPPORTED_SENDER"] = "bg-cs-unsupported-sender"; - })(MessageTypeBGtoCS || (MessageTypeBGtoCS = {})); - var DebugMessageTypeBGtoCS; - (function (DebugMessageTypeBGtoCS) { - DebugMessageTypeBGtoCS["RELOAD"] = "debug-bg-cs-reload"; - })(DebugMessageTypeBGtoCS || (DebugMessageTypeBGtoCS = {})); - var MessageTypeCStoBG; - (function (MessageTypeCStoBG) { - MessageTypeCStoBG["COLOR_SCHEME_CHANGE"] = "cs-bg-color-scheme-change"; - MessageTypeCStoBG["DARK_THEME_DETECTED"] = "cs-bg-dark-theme-detected"; - MessageTypeCStoBG["DARK_THEME_NOT_DETECTED"] = - "cs-bg-dark-theme-not-detected"; - MessageTypeCStoBG["FETCH"] = "cs-bg-fetch"; - MessageTypeCStoBG["DOCUMENT_CONNECT"] = "cs-bg-document-connect"; - MessageTypeCStoBG["DOCUMENT_FORGET"] = "cs-bg-document-forget"; - MessageTypeCStoBG["DOCUMENT_FREEZE"] = "cs-bg-document-freeze"; - MessageTypeCStoBG["DOCUMENT_RESUME"] = "cs-bg-document-resume"; - })(MessageTypeCStoBG || (MessageTypeCStoBG = {})); - var DebugMessageTypeCStoBG; - (function (DebugMessageTypeCStoBG) { - DebugMessageTypeCStoBG["LOG"] = "debug-cs-bg-log"; - })(DebugMessageTypeCStoBG || (DebugMessageTypeCStoBG = {})); - var MessageTypeCStoUI; - (function (MessageTypeCStoUI) { - MessageTypeCStoUI["EXPORT_CSS_RESPONSE"] = "cs-ui-export-css-response"; - })(MessageTypeCStoUI || (MessageTypeCStoUI = {})); - var MessageTypeUItoCS; - (function (MessageTypeUItoCS) { - MessageTypeUItoCS["EXPORT_CSS"] = "ui-cs-export-css"; - })(MessageTypeUItoCS || (MessageTypeUItoCS = {})); - - function logInfo(...args) {} - - document.currentScript && document.currentScript.remove(); - const key = "darkreaderProxyInjected"; - const EVENT_DONE = "__darkreader__stylesheetProxy__done"; - const EVENT_ARG = "__darkreader__stylesheetProxy__arg"; - const registeredScriptPath = !document.currentScript; - function injectProxyAndCleanup(args) { - injectProxy( - args.enableStyleSheetsProxy, - args.enableCustomElementRegistryProxy - ); - doneReceiver(); - document.dispatchEvent(new CustomEvent(EVENT_DONE)); - } - function regularPath() { - const argString = document.currentScript.dataset.arg; - if (argString !== undefined) { - document.documentElement.dataset[key] = "true"; - const args = JSON.parse(argString); - injectProxyAndCleanup(args); - } - } - function dataReceiver(e) { - document.removeEventListener(EVENT_ARG, dataReceiver); - if (document.documentElement.dataset[key] !== undefined) { - return; - } - document.documentElement.dataset[key] = "true"; - logInfo( - `MV3 proxy injector: ${registeredScriptPath ? "registered" : "dedicated"} path runs injectProxy(${e.detail}).` - ); - injectProxyAndCleanup(e.detail); - } - function doneReceiver() { - document.removeEventListener(EVENT_ARG, dataReceiver); - document.removeEventListener(EVENT_DONE, doneReceiver); - } - function dedicatedPath() { - const listenerOptions = { - passive: true, - once: true - }; - document.addEventListener(EVENT_ARG, dataReceiver, listenerOptions); - document.addEventListener(EVENT_DONE, doneReceiver, listenerOptions); - } - function inject() { - if (document.documentElement.dataset[key] !== undefined) { - return; - } - document.currentScript && regularPath(); - dedicatedPath(); - } - inject(); -})(); diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/manifest.json b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/manifest.json deleted file mode 100644 index 64452ff..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/manifest.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "action": { - "default_icon": { - "19": "icons/dr_active_19.png", - "38": "icons/dr_active_38.png" - }, - "default_popup": "ui/popup/index.html", - "default_title": "Dark Reader" - }, - "author": "Alexander Shutau", - "background": { - "service_worker": "background/index.js" - }, - "commands": { - "addSite": { - "description": "__MSG_toggle_current_site__", - "suggested_key": { - "default": "Alt+Shift+A" - } - }, - "switchEngine": { - "description": "__MSG_theme_generation_mode__" - }, - "toggle": { - "description": "__MSG_toggle_extension__", - "suggested_key": { - "default": "Alt+Shift+D" - } - } - }, - "content_scripts": [ { - "all_frames": true, - "js": [ "inject/proxy.js" ], - "match_about_blank": true, - "matches": [ "\u003Call_urls>" ], - "run_at": "document_start", - "world": "MAIN" - }, { - "all_frames": true, - "js": [ "inject/fallback.js", "inject/index.js" ], - "match_about_blank": true, - "matches": [ "\u003Call_urls>" ], - "run_at": "document_start", - "world": "ISOLATED" - }, { - "all_frames": false, - "js": [ "inject/color-scheme-watcher.js" ], - "match_about_blank": false, - "matches": [ "\u003Call_urls>" ], - "run_at": "document_idle", - "world": "ISOLATED" - } ], - "content_security_policy": { - "extension_pages": "default-src 'none'; script-src 'self'; style-src 'self'; img-src * data:; connect-src *; navigate-to 'self' https://darkreader.org/* https://github.com/darkreader/darkreader/blob/main/CONTRIBUTING.md https://github.com/darkreader/darkreader https://twitter.com/darkreaderapp; media-src 'none'; child-src 'none'; worker-src 'none'; object-src 'none'" - }, - "default_locale": "en", - "description": "__MSG_extension_description__", - "host_permissions": [ "*://*/*" ], - "icons": { - "128": "icons/dr_128.png", - "16": "icons/dr_16.png", - "48": "icons/dr_48.png" - }, - "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqBY2tfTtJYiVMirbII2r3WofqCDaxS2zwPddSsgxUWKRm/MW/ymL2ZaP24MmwnegGIoxHkBVyi4cps4/q76c98ViyijoQvdJjAv3ZtUOwbWlYnZ5pU6gPCeZrScHxoTJdxxJJ30DZpMc6qsc3yJVQJlABG2FQFPrhPEGFLP9sCq/M7pY1xH++KsG+jYLB6cU3ItvZ4zntUXRwG2ZBx+XZelsd6FdkVXbDXj/47TNk2Qq8PAqyiK45GgQ+KJjuISAo89ip1xI4tONLCjSHPinD3nz6HiMikQzwn4L8SsB4Wy7rBhMhPRGIWbwHed+L+W3LXhB05Lhwk0YxuOb7QNWRQIDAQAB", - "manifest_version": 3, - "minimum_chrome_version": "106.0.0.0", - "name": "Dark Reader", - "optional_permissions": [ "contextMenus" ], - "options_ui": { - "page": "ui/popup/index.html" - }, - "permissions": [ "alarms", "fontSettings", "scripting", "storage" ], - "update_url": "https://clients2.google.com/service/update2/crx", - "version": "4.9.92" -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/fonts/LICENSE.txt b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/fonts/LICENSE.txt deleted file mode 100644 index d645695..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/fonts/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/fonts/OpenSans-Light.ttf b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/fonts/OpenSans-Light.ttf deleted file mode 100644 index 6580d3a..0000000 Binary files a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/fonts/OpenSans-Light.ttf and /dev/null differ diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/fonts/OpenSans-Regular.ttf b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/fonts/OpenSans-Regular.ttf deleted file mode 100644 index 29bfd35..0000000 Binary files a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/fonts/OpenSans-Regular.ttf and /dev/null differ diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/fonts/OpenSans-SemiBold.ttf b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/fonts/OpenSans-SemiBold.ttf deleted file mode 100644 index 54e7059..0000000 Binary files a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/fonts/OpenSans-SemiBold.ttf and /dev/null differ diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/images/birthday-icon.svg b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/images/birthday-icon.svg deleted file mode 100644 index c59234e..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/images/birthday-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/images/darkreader-icon-256x256.png b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/images/darkreader-icon-256x256.png deleted file mode 100644 index ab4ba5f..0000000 Binary files a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/images/darkreader-icon-256x256.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/images/darkreader-type.svg b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/images/darkreader-type.svg deleted file mode 100644 index 5b6fbf9..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/images/darkreader-type.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/images/mobile-icon-40x64.svg b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/images/mobile-icon-40x64.svg deleted file mode 100644 index e15bee0..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/images/mobile-icon-40x64.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/images/mode-dark-32.svg b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/images/mode-dark-32.svg deleted file mode 100644 index 29be670..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/images/mode-dark-32.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/images/mode-light-32.svg b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/images/mode-light-32.svg deleted file mode 100644 index 6374304..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/assets/images/mode-light-32.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/devtools/index.html b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/devtools/index.html deleted file mode 100644 index 6c1ef5a..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/devtools/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Dark Reader developer tools - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/devtools/index.js b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/devtools/index.js deleted file mode 100644 index 7bb6d49..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/devtools/index.js +++ /dev/null @@ -1,3712 +0,0 @@ -(function () { - "use strict"; - - /* malevic@0.20.2 - Aug 10, 2024 */ - function m$1(tagOrComponent, props, ...children) { - props = props || {}; - if (typeof tagOrComponent === "string") { - const tag = tagOrComponent; - return {type: tag, props, children}; - } - if (typeof tagOrComponent === "function") { - const component = tagOrComponent; - return {type: component, props, children}; - } - throw new Error("Unsupported spec type"); - } - - /* malevic@0.20.2 - Aug 10, 2024 */ - function createPluginsStore() { - const plugins = []; - return { - add(plugin) { - plugins.push(plugin); - return this; - }, - apply(props) { - let result; - let plugin; - const usedPlugins = new Set(); - for (let i = plugins.length - 1; i >= 0; i--) { - plugin = plugins[i]; - if (usedPlugins.has(plugin)) { - continue; - } - result = plugin(props); - if (result != null) { - return result; - } - usedPlugins.add(plugin); - } - return null; - }, - delete(plugin) { - for (let i = plugins.length - 1; i >= 0; i--) { - if (plugins[i] === plugin) { - plugins.splice(i, 1); - break; - } - } - return this; - }, - empty() { - return plugins.length === 0; - } - }; - } - function iterateComponentPlugins(type, pairs, iterator) { - pairs - .filter(([key]) => type[key]) - .forEach(([key, plugins]) => { - return type[key].forEach((plugin) => iterator(plugins, plugin)); - }); - } - function addComponentPlugins(type, pairs) { - iterateComponentPlugins(type, pairs, (plugins, plugin) => - plugins.add(plugin) - ); - } - function deleteComponentPlugins(type, pairs) { - iterateComponentPlugins(type, pairs, (plugins, plugin) => - plugins.delete(plugin) - ); - } - - const XHTML_NS = "http://www.w3.org/1999/xhtml"; - const SVG_NS = "http://www.w3.org/2000/svg"; - - const PLUGINS_CREATE_ELEMENT = Symbol(); - const pluginsCreateElement = createPluginsStore(); - function createElement(spec, parent) { - const result = pluginsCreateElement.apply({spec, parent}); - if (result) { - return result; - } - const tag = spec.type; - if (tag === "svg") { - return document.createElementNS(SVG_NS, "svg"); - } - const namespace = parent.namespaceURI; - if (namespace === XHTML_NS || namespace == null) { - return document.createElement(tag); - } - return document.createElementNS(namespace, tag); - } - - function classes$1(...args) { - const classes = []; - const process = (c) => { - if (!c) return; - if (typeof c === "string") { - classes.push(c); - } else if (Array.isArray(c)) { - c.forEach(process); - } else if (typeof c === "object") { - classes.push( - ...Object.keys(c).filter((key) => Boolean(c[key])) - ); - } - }; - args.forEach(process); - return classes.join(" "); - } - function setInlineCSSPropertyValue(element, prop, $value) { - if ($value != null && $value !== "") { - let value = String($value); - let important = ""; - if (value.endsWith("!important")) { - value = value.substring(0, value.length - 10); - important = "important"; - } - element.style.setProperty(prop, value, important); - } else { - element.style.removeProperty(prop); - } - } - - function isObject(value) { - return value != null && typeof value === "object"; - } - - const eventListeners = new WeakMap(); - function addEventListener(element, event, listener) { - let listeners; - if (eventListeners.has(element)) { - listeners = eventListeners.get(element); - } else { - listeners = new Map(); - eventListeners.set(element, listeners); - } - if (listeners.get(event) !== listener) { - if (listeners.has(event)) { - element.removeEventListener(event, listeners.get(event)); - } - element.addEventListener(event, listener); - listeners.set(event, listener); - } - } - function removeEventListener(element, event) { - if (!eventListeners.has(element)) { - return; - } - const listeners = eventListeners.get(element); - element.removeEventListener(event, listeners.get(event)); - listeners.delete(event); - } - - function setClassObject(element, classObj) { - const cls = Array.isArray(classObj) - ? classes$1(...classObj) - : classes$1(classObj); - if (cls) { - element.setAttribute("class", cls); - } else { - element.removeAttribute("class"); - } - } - function mergeValues(obj, old) { - const values = new Map(); - const newProps = new Set(Object.keys(obj)); - const oldProps = Object.keys(old); - oldProps - .filter((prop) => !newProps.has(prop)) - .forEach((prop) => values.set(prop, null)); - newProps.forEach((prop) => values.set(prop, obj[prop])); - return values; - } - function setStyleObject(element, styleObj, prev) { - let prevObj; - if (isObject(prev)) { - prevObj = prev; - } else { - prevObj = {}; - element.removeAttribute("style"); - } - const declarations = mergeValues(styleObj, prevObj); - declarations.forEach(($value, prop) => - setInlineCSSPropertyValue(element, prop, $value) - ); - } - function setEventListener(element, event, listener) { - if (typeof listener === "function") { - addEventListener(element, event, listener); - } else { - removeEventListener(element, event); - } - } - const specialAttrs = new Set([ - "key", - "oncreate", - "onupdate", - "onrender", - "onremove" - ]); - const PLUGINS_SET_ATTRIBUTE = Symbol(); - const pluginsSetAttribute = createPluginsStore(); - function getPropertyValue(obj, prop) { - return obj && obj.hasOwnProperty(prop) ? obj[prop] : null; - } - function syncAttrs(element, attrs, prev) { - const values = mergeValues(attrs, prev || {}); - values.forEach((value, attr) => { - if (!pluginsSetAttribute.empty()) { - const result = pluginsSetAttribute.apply({ - element, - attr, - value, - get prev() { - return getPropertyValue(prev, attr); - } - }); - if (result != null) { - return; - } - } - if (attr === "class" && isObject(value)) { - setClassObject(element, value); - } else if (attr === "style" && isObject(value)) { - const prevValue = getPropertyValue(prev, attr); - setStyleObject(element, value, prevValue); - } else if (attr.startsWith("on")) { - const event = attr.substring(2); - setEventListener(element, event, value); - } else if (specialAttrs.has(attr)); - else if (value == null || value === false) { - element.removeAttribute(attr); - } else { - element.setAttribute(attr, value === true ? "" : String(value)); - } - }); - } - - class LinkedList { - constructor(...items) { - this.nexts = new WeakMap(); - this.prevs = new WeakMap(); - this.first = null; - this.last = null; - items.forEach((item) => this.push(item)); - } - empty() { - return this.first == null; - } - push(item) { - if (this.empty()) { - this.first = item; - this.last = item; - } else { - this.nexts.set(this.last, item); - this.prevs.set(item, this.last); - this.last = item; - } - } - insertBefore(newItem, refItem) { - const prev = this.before(refItem); - this.prevs.set(newItem, prev); - this.nexts.set(newItem, refItem); - this.prevs.set(refItem, newItem); - prev && this.nexts.set(prev, newItem); - refItem === this.first && (this.first = newItem); - } - delete(item) { - const prev = this.before(item); - const next = this.after(item); - prev && this.nexts.set(prev, next); - next && this.prevs.set(next, prev); - item === this.first && (this.first = next); - item === this.last && (this.last = prev); - } - before(item) { - return this.prevs.get(item) || null; - } - after(item) { - return this.nexts.get(item) || null; - } - loop(iterator) { - if (this.empty()) { - return; - } - let current = this.first; - do { - if (iterator(current)) { - break; - } - } while ((current = this.after(current))); - } - copy() { - const list = new LinkedList(); - this.loop((item) => { - list.push(item); - return false; - }); - return list; - } - forEach(iterator) { - this.loop((item) => { - iterator(item); - return false; - }); - } - find(iterator) { - let result = null; - this.loop((item) => { - if (iterator(item)) { - result = item; - return true; - } - return false; - }); - return result; - } - map(iterator) { - const results = []; - this.loop((item) => { - results.push(iterator(item)); - return false; - }); - return results; - } - } - - function matchChildren(vnode, old) { - const oldChildren = old.children(); - const oldChildrenByKey = new Map(); - const oldChildrenWithoutKey = []; - oldChildren.forEach((v) => { - const key = v.key(); - if (key == null) { - oldChildrenWithoutKey.push(v); - } else { - oldChildrenByKey.set(key, v); - } - }); - const children = vnode.children(); - const matches = []; - const unmatched = new Set(oldChildren); - const keys = new Set(); - children.forEach((v) => { - let match = null; - let guess = null; - const key = v.key(); - if (key != null) { - if (keys.has(key)) { - throw new Error("Duplicate key"); - } - keys.add(key); - if (oldChildrenByKey.has(key)) { - guess = oldChildrenByKey.get(key); - } - } else if (oldChildrenWithoutKey.length > 0) { - guess = oldChildrenWithoutKey.shift(); - } - if (v.matches(guess)) { - match = guess; - } - matches.push([v, match]); - if (match) { - unmatched.delete(match); - } - }); - return {matches, unmatched}; - } - - function execute(vnode, old, vdom) { - const didMatch = vnode && old && vnode.matches(old); - if (didMatch && vnode.parent() === old.parent()) { - vdom.replaceVNode(old, vnode); - } else if (vnode) { - vdom.addVNode(vnode); - } - const context = vdom.getVNodeContext(vnode); - const oldContext = vdom.getVNodeContext(old); - if (old && !didMatch) { - old.detach(oldContext); - old.children().forEach((v) => execute(null, v, vdom)); - old.detached(oldContext); - } - if (vnode && !didMatch) { - vnode.attach(context); - vnode.children().forEach((v) => execute(v, null, vdom)); - vnode.attached(context); - } - if (didMatch) { - const result = vnode.update(old, context); - if (result !== vdom.LEAVE) { - const {matches, unmatched} = matchChildren(vnode, old); - unmatched.forEach((v) => execute(null, v, vdom)); - matches.forEach(([v, o]) => execute(v, o, vdom)); - vnode.updated(context); - } - } - } - - function m(tagOrComponent, props, ...children) { - props = props || {}; - if (typeof tagOrComponent === "string") { - const tag = tagOrComponent; - return {type: tag, props, children}; - } - if (typeof tagOrComponent === "function") { - const component = tagOrComponent; - return {type: component, props, children}; - } - throw new Error("Unsupported spec type"); - } - function isSpec(x) { - return isObject(x) && x.type != null && x.nodeType == null; - } - function isNodeSpec(x) { - return isSpec(x) && typeof x.type === "string"; - } - function isComponentSpec(x) { - return isSpec(x) && typeof x.type === "function"; - } - - class VNodeBase { - constructor(parent) { - this.parentVNode = parent; - } - key() { - return null; - } - parent(vnode) { - if (vnode) { - this.parentVNode = vnode; - return; - } - return this.parentVNode; - } - children() { - return []; - } - attach(context) {} - detach(context) {} - update(old, context) { - return null; - } - attached(context) {} - detached(context) {} - updated(context) {} - } - function nodeMatchesSpec(node, spec) { - return ( - node instanceof Element && - ((node.namespaceURI === XHTML_NS && - spec.type === node.tagName.toLocaleLowerCase()) || - (node.namespaceURI !== XHTML_NS && spec.type === node.tagName)) - ); - } - const refinedElements = new WeakMap(); - function markElementAsRefined(element, vdom) { - let refined; - if (refinedElements.has(vdom)) { - refined = refinedElements.get(vdom); - } else { - refined = new WeakSet(); - refinedElements.set(vdom, refined); - } - refined.add(element); - } - function isElementRefined(element, vdom) { - return ( - refinedElements.has(vdom) && refinedElements.get(vdom).has(element) - ); - } - class ElementVNode extends VNodeBase { - constructor(spec, parent) { - super(parent); - this.spec = spec; - } - matches(other) { - return ( - other instanceof ElementVNode && - this.spec.type === other.spec.type - ); - } - key() { - return this.spec.props.key; - } - children() { - return [this.child]; - } - getExistingElement(context) { - const parent = context.parent; - const existing = context.node; - let element; - if (nodeMatchesSpec(existing, this.spec)) { - element = existing; - } else if ( - !isElementRefined(parent, context.vdom) && - context.vdom.isDOMNodeCaptured(parent) - ) { - const sibling = context.sibling; - const guess = sibling - ? sibling.nextElementSibling - : parent.firstElementChild; - if (guess && !context.vdom.isDOMNodeCaptured(guess)) { - if (nodeMatchesSpec(guess, this.spec)) { - element = guess; - } else { - parent.removeChild(guess); - } - } - } - return element; - } - attach(context) { - let element; - const existing = this.getExistingElement(context); - if (existing) { - element = existing; - } else { - element = createElement(this.spec, context.parent); - markElementAsRefined(element, context.vdom); - } - syncAttrs(element, this.spec.props, null); - this.child = createDOMVNode( - element, - this.spec.children, - this, - false - ); - } - update(prev, context) { - const prevContext = context.vdom.getVNodeContext(prev); - const element = prevContext.node; - syncAttrs(element, this.spec.props, prev.spec.props); - this.child = createDOMVNode( - element, - this.spec.children, - this, - false - ); - } - attached(context) { - const {oncreate, onrender} = this.spec.props; - if (oncreate) { - oncreate(context.node); - } - if (onrender) { - onrender(context.node); - } - } - detached(context) { - const {onremove} = this.spec.props; - if (onremove) { - onremove(context.node); - } - } - updated(context) { - const {onupdate, onrender} = this.spec.props; - if (onupdate) { - onupdate(context.node); - } - if (onrender) { - onrender(context.node); - } - } - } - const symbols = { - CREATED: Symbol(), - REMOVED: Symbol(), - UPDATED: Symbol(), - RENDERED: Symbol(), - ACTIVE: Symbol(), - DEFAULTS_ASSIGNED: Symbol() - }; - const domPlugins = [ - [PLUGINS_CREATE_ELEMENT, pluginsCreateElement], - [PLUGINS_SET_ATTRIBUTE, pluginsSetAttribute] - ]; - class ComponentVNode extends VNodeBase { - constructor(spec, parent) { - super(parent); - this.lock = false; - this.spec = spec; - this.prev = null; - this.store = {}; - this.store[symbols.ACTIVE] = this; - } - matches(other) { - return ( - other instanceof ComponentVNode && - this.spec.type === other.spec.type - ); - } - key() { - return this.spec.props.key; - } - children() { - return [this.child]; - } - createContext(context) { - const {parent} = context; - const {spec, prev, store} = this; - return { - spec, - prev, - store, - get node() { - return context.node; - }, - get nodes() { - return context.nodes; - }, - parent, - onCreate: (fn) => (store[symbols.CREATED] = fn), - onUpdate: (fn) => (store[symbols.UPDATED] = fn), - onRemove: (fn) => (store[symbols.REMOVED] = fn), - onRender: (fn) => (store[symbols.RENDERED] = fn), - refresh: () => { - const activeVNode = store[symbols.ACTIVE]; - activeVNode.refresh(context); - }, - leave: () => context.vdom.LEAVE, - getStore: (defaults) => { - if (defaults && !store[symbols.DEFAULTS_ASSIGNED]) { - Object.entries(defaults).forEach(([prop, value]) => { - store[prop] = value; - }); - store[symbols.DEFAULTS_ASSIGNED] = true; - } - return store; - } - }; - } - unbox(context) { - const Component = this.spec.type; - const props = this.spec.props; - const children = this.spec.children; - this.lock = true; - const prevContext = ComponentVNode.context; - ComponentVNode.context = this.createContext(context); - let unboxed = null; - try { - unboxed = Component(props, ...children); - } finally { - ComponentVNode.context = prevContext; - this.lock = false; - } - return unboxed; - } - refresh(context) { - if (this.lock) { - throw new Error( - "Calling refresh during unboxing causes infinite loop" - ); - } - this.prev = this.spec; - const latestContext = context.vdom.getVNodeContext(this); - const unboxed = this.unbox(latestContext); - if (unboxed === context.vdom.LEAVE) { - return; - } - const prevChild = this.child; - this.child = createVNode(unboxed, this); - context.vdom.execute(this.child, prevChild); - this.updated(context); - } - addPlugins() { - addComponentPlugins(this.spec.type, domPlugins); - } - deletePlugins() { - deleteComponentPlugins(this.spec.type, domPlugins); - } - attach(context) { - this.addPlugins(); - const unboxed = this.unbox(context); - const childSpec = unboxed === context.vdom.LEAVE ? null : unboxed; - this.child = createVNode(childSpec, this); - } - update(prev, context) { - this.store = prev.store; - this.prev = prev.spec; - this.store[symbols.ACTIVE] = this; - const prevContext = context.vdom.getVNodeContext(prev); - this.addPlugins(); - const unboxed = this.unbox(prevContext); - let result = null; - if (unboxed === context.vdom.LEAVE) { - result = unboxed; - this.child = prev.child; - context.vdom.adoptVNode(this.child, this); - } else { - this.child = createVNode(unboxed, this); - } - return result; - } - handle(event, context) { - const fn = this.store[event]; - if (fn) { - const nodes = - context.nodes.length === 0 ? [null] : context.nodes; - fn(...nodes); - } - } - attached(context) { - this.deletePlugins(); - this.handle(symbols.CREATED, context); - this.handle(symbols.RENDERED, context); - } - detached(context) { - this.handle(symbols.REMOVED, context); - } - updated(context) { - this.deletePlugins(); - this.handle(symbols.UPDATED, context); - this.handle(symbols.RENDERED, context); - } - } - ComponentVNode.context = null; - function getComponentContext() { - return ComponentVNode.context; - } - class TextVNode extends VNodeBase { - constructor(text, parent) { - super(parent); - this.text = text; - } - matches(other) { - return other instanceof TextVNode; - } - children() { - return [this.child]; - } - getExistingNode(context) { - const {parent} = context; - let node; - if (context.node instanceof Text) { - node = context.node; - } else if ( - !isElementRefined(parent, context.vdom) && - context.vdom.isDOMNodeCaptured(parent) - ) { - const sibling = context.sibling; - const guess = sibling ? sibling.nextSibling : parent.firstChild; - if ( - guess && - !context.vdom.isDOMNodeCaptured(guess) && - guess instanceof Text - ) { - node = guess; - } - } - return node; - } - attach(context) { - const existing = this.getExistingNode(context); - let node; - if (existing) { - node = existing; - node.textContent = this.text; - } else { - node = document.createTextNode(this.text); - } - this.child = createVNode(node, this); - } - update(prev, context) { - const prevContext = context.vdom.getVNodeContext(prev); - const {node} = prevContext; - if (this.text !== prev.text) { - node.textContent = this.text; - } - this.child = createVNode(node, this); - } - } - class InlineFunctionVNode extends VNodeBase { - constructor(fn, parent) { - super(parent); - this.fn = fn; - } - matches(other) { - return other instanceof InlineFunctionVNode; - } - children() { - return [this.child]; - } - call(context) { - const fn = this.fn; - const inlineFnContext = { - parent: context.parent, - get node() { - return context.node; - }, - get nodes() { - return context.nodes; - } - }; - const result = fn(inlineFnContext); - this.child = createVNode(result, this); - } - attach(context) { - this.call(context); - } - update(prev, context) { - const prevContext = context.vdom.getVNodeContext(prev); - this.call(prevContext); - } - } - class NullVNode extends VNodeBase { - matches(other) { - return other instanceof NullVNode; - } - } - class DOMVNode extends VNodeBase { - constructor(node, childSpecs, parent, isNative) { - super(parent); - this.node = node; - this.childSpecs = childSpecs; - this.isNative = isNative; - } - matches(other) { - return other instanceof DOMVNode && this.node === other.node; - } - wrap() { - this.childVNodes = this.childSpecs.map((spec) => - createVNode(spec, this) - ); - } - insertNode(context) { - const {parent, sibling} = context; - const shouldInsert = !( - parent === this.node.parentElement && - sibling === this.node.previousSibling - ); - if (shouldInsert) { - const target = sibling - ? sibling.nextSibling - : parent.firstChild; - parent.insertBefore(this.node, target); - } - } - attach(context) { - this.wrap(); - this.insertNode(context); - } - detach(context) { - context.parent.removeChild(this.node); - } - update(prev, context) { - this.wrap(); - this.insertNode(context); - } - cleanupDOMChildren(context) { - const element = this.node; - for (let current = element.lastChild; current != null; ) { - if (context.vdom.isDOMNodeCaptured(current)) { - current = current.previousSibling; - } else { - const prev = current.previousSibling; - element.removeChild(current); - current = prev; - } - } - } - refine(context) { - if (!this.isNative) { - this.cleanupDOMChildren(context); - } - const element = this.node; - markElementAsRefined(element, context.vdom); - } - attached(context) { - const {node} = this; - if ( - node instanceof Element && - !isElementRefined(node, context.vdom) && - context.vdom.isDOMNodeCaptured(node) - ) { - this.refine(context); - } - } - children() { - return this.childVNodes; - } - } - function isDOMVNode(v) { - return v instanceof DOMVNode; - } - function createDOMVNode(node, childSpecs, parent, isNative) { - return new DOMVNode(node, childSpecs, parent, isNative); - } - class ArrayVNode extends VNodeBase { - constructor(items, key, parent) { - super(parent); - this.items = items; - this.id = key; - } - matches(other) { - return other instanceof ArrayVNode; - } - key() { - return this.id; - } - children() { - return this.childVNodes; - } - wrap() { - this.childVNodes = this.items.map((spec) => - createVNode(spec, this) - ); - } - attach() { - this.wrap(); - } - update() { - this.wrap(); - } - } - function createVNode(spec, parent) { - if (isNodeSpec(spec)) { - return new ElementVNode(spec, parent); - } - if (isComponentSpec(spec)) { - if (spec.type === Array) { - return new ArrayVNode(spec.children, spec.props.key, parent); - } - return new ComponentVNode(spec, parent); - } - if (typeof spec === "string") { - return new TextVNode(spec, parent); - } - if (spec == null) { - return new NullVNode(parent); - } - if (typeof spec === "function") { - return new InlineFunctionVNode(spec, parent); - } - if (spec instanceof Node) { - return createDOMVNode(spec, [], parent, true); - } - if (Array.isArray(spec)) { - return new ArrayVNode(spec, null, parent); - } - throw new Error("Unable to create virtual node for spec"); - } - - function createVDOM(rootNode) { - const contexts = new WeakMap(); - const hubs = new WeakMap(); - const parentNodes = new WeakMap(); - const passingLinks = new WeakMap(); - const linkedParents = new WeakSet(); - const LEAVE = Symbol(); - function execute$1(vnode, old) { - execute(vnode, old, vdom); - } - function creatVNodeContext(vnode) { - const parentNode = parentNodes.get(vnode); - contexts.set(vnode, { - parent: parentNode, - get node() { - const linked = passingLinks - .get(vnode) - .find((link) => link.node != null); - return linked ? linked.node : null; - }, - get nodes() { - return passingLinks - .get(vnode) - .map((link) => link.node) - .filter((node) => node); - }, - get sibling() { - if (parentNode === rootNode.parentElement) { - return passingLinks.get(vnode).first.node - .previousSibling; - } - const hub = hubs.get(parentNode); - let current = passingLinks.get(vnode).first; - while ((current = hub.links.before(current))) { - if (current.node) { - return current.node; - } - } - return null; - }, - vdom - }); - } - function createRootVNodeLinks(vnode) { - const parentNode = - rootNode.parentElement || document.createDocumentFragment(); - const node = rootNode; - const links = new LinkedList({ - parentNode, - node - }); - passingLinks.set(vnode, links.copy()); - parentNodes.set(vnode, parentNode); - hubs.set(parentNode, { - node: parentNode, - links - }); - } - function createVNodeLinks(vnode) { - const parent = vnode.parent(); - const isBranch = linkedParents.has(parent); - const parentNode = isDOMVNode(parent) - ? parent.node - : parentNodes.get(parent); - parentNodes.set(vnode, parentNode); - const vnodeLinks = new LinkedList(); - passingLinks.set(vnode, vnodeLinks); - if (isBranch) { - const newLink = { - parentNode, - node: null - }; - let current = vnode; - do { - passingLinks.get(current).push(newLink); - current = current.parent(); - } while (current && !isDOMVNode(current)); - hubs.get(parentNode).links.push(newLink); - } else { - linkedParents.add(parent); - const links = isDOMVNode(parent) - ? hubs.get(parentNode).links - : passingLinks.get(parent); - links.forEach((link) => vnodeLinks.push(link)); - } - } - function connectDOMVNode(vnode) { - if (isDOMVNode(vnode)) { - const {node} = vnode; - hubs.set(node, { - node, - links: new LinkedList({ - parentNode: node, - node: null - }) - }); - passingLinks.get(vnode).forEach((link) => (link.node = node)); - } - } - function addVNode(vnode) { - const parent = vnode.parent(); - if (parent == null) { - createRootVNodeLinks(vnode); - } else { - createVNodeLinks(vnode); - } - connectDOMVNode(vnode); - creatVNodeContext(vnode); - } - function getVNodeContext(vnode) { - return contexts.get(vnode); - } - function getAncestorsLinks(vnode) { - const parentNode = parentNodes.get(vnode); - const hub = hubs.get(parentNode); - const allLinks = []; - let current = vnode; - while ((current = current.parent()) && !isDOMVNode(current)) { - allLinks.push(passingLinks.get(current)); - } - allLinks.push(hub.links); - return allLinks; - } - function replaceVNode(old, vnode) { - if (vnode.parent() == null) { - addVNode(vnode); - return; - } - const oldContext = contexts.get(old); - const {parent: parentNode} = oldContext; - parentNodes.set(vnode, parentNode); - const oldLinks = passingLinks.get(old); - const newLink = { - parentNode, - node: null - }; - getAncestorsLinks(vnode).forEach((links) => { - const nextLink = links.after(oldLinks.last); - oldLinks.forEach((link) => links.delete(link)); - if (nextLink) { - links.insertBefore(newLink, nextLink); - } else { - links.push(newLink); - } - }); - const vnodeLinks = new LinkedList(newLink); - passingLinks.set(vnode, vnodeLinks); - creatVNodeContext(vnode); - } - function adoptVNode(vnode, parent) { - const vnodeLinks = passingLinks.get(vnode); - const parentLinks = passingLinks.get(parent).copy(); - vnode.parent(parent); - getAncestorsLinks(vnode).forEach((links) => { - vnodeLinks.forEach((link) => - links.insertBefore(link, parentLinks.first) - ); - parentLinks.forEach((link) => links.delete(link)); - }); - } - function isDOMNodeCaptured(node) { - return hubs.has(node) && node !== rootNode.parentElement; - } - const vdom = { - execute: execute$1, - addVNode, - getVNodeContext, - replaceVNode, - adoptVNode, - isDOMNodeCaptured, - LEAVE - }; - return vdom; - } - - const roots = new WeakMap(); - const vdoms = new WeakMap(); - function realize(node, vnode) { - const old = roots.get(node) || null; - roots.set(node, vnode); - let vdom; - if (vdoms.has(node)) { - vdom = vdoms.get(node); - } else { - vdom = createVDOM(node); - vdoms.set(node, vdom); - } - vdom.execute(vnode, old); - return vdom.getVNodeContext(vnode); - } - function render$1(element, spec) { - const vnode = createDOMVNode( - element, - Array.isArray(spec) ? spec : [spec], - null, - false - ); - realize(element, vnode); - return element; - } - function sync(node, spec) { - const vnode = createVNode(spec, null); - const context = realize(node, vnode); - const {nodes} = context; - if (nodes.length !== 1 || nodes[0] !== node) { - throw new Error("Spec does not match the node"); - } - return nodes[0]; - } - - function normalize(attrsOrChild, ...otherChildren) { - const attrs = - isObject(attrsOrChild) && !isSpec(attrsOrChild) - ? attrsOrChild - : null; - const children = - attrs == null - ? [attrsOrChild].concat(otherChildren) - : otherChildren; - return {attrs, children}; - } - function createTagFunction(tag) { - return (attrsOrChild, ...otherChildren) => { - const {attrs, children} = normalize(attrsOrChild, otherChildren); - return m(tag, attrs, children); - }; - } - new Proxy( - {}, - { - get: (_, tag) => { - return createTagFunction(tag); - } - } - ); - - const isNavigatorDefined = typeof navigator !== "undefined"; - const userAgent = isNavigatorDefined - ? navigator.userAgentData && - Array.isArray(navigator.userAgentData.brands) - ? navigator.userAgentData.brands - .map( - (brand) => `${brand.brand.toLowerCase()} ${brand.version}` - ) - .join(" ") - : navigator.userAgent.toLowerCase() - : "some useragent"; - const platform = isNavigatorDefined - ? navigator.userAgentData && - typeof navigator.userAgentData.platform === "string" - ? navigator.userAgentData.platform.toLowerCase() - : navigator.platform.toLowerCase() - : "some platform"; - userAgent.includes("vivaldi"); - userAgent.includes("yabrowser"); - userAgent.includes("opr") || userAgent.includes("opera"); - userAgent.includes("edg"); - platform.startsWith("win"); - platform.startsWith("mac"); - const isMobile = - isNavigatorDefined && navigator.userAgentData - ? navigator.userAgentData.mobile - : userAgent.includes("mobile"); - (isNavigatorDefined && - navigator.userAgentData && - ["Linux", "Android"].includes(navigator.userAgentData.platform)) || - platform.startsWith("linux"); - (() => { - const m = userAgent.match(/chrom(?:e|ium)(?:\/| )([^ ]+)/); - if (m && m[1]) { - return m[1]; - } - return ""; - })(); - (() => { - const m = userAgent.match(/(?:firefox|librewolf)(?:\/| )([^ ]+)/); - if (m && m[1]) { - return m[1]; - } - return ""; - })(); - (() => { - try { - document.querySelector(":defined"); - return true; - } catch (err) { - return false; - } - })(); - - function classes(...args) { - const classes = []; - args.filter((c) => Boolean(c)).forEach((c) => { - if (typeof c === "string") { - classes.push(c); - } else if (typeof c === "object") { - classes.push( - ...Object.keys(c).filter((key) => Boolean(c[key])) - ); - } - }); - return classes.join(" "); - } - function throttle(callback) { - let frameId = null; - return (...args) => { - if (!frameId) { - callback(...args); - frameId = requestAnimationFrame(() => (frameId = null)); - } - }; - } - function onSwipeStart(startEventObj, startHandler) { - const isTouchEvent = - typeof TouchEvent !== "undefined" && - startEventObj instanceof TouchEvent; - const touchId = isTouchEvent - ? startEventObj.changedTouches[0].identifier - : null; - const pointerMoveEvent = isTouchEvent ? "touchmove" : "mousemove"; - const pointerUpEvent = isTouchEvent ? "touchend" : "mouseup"; - if (!isTouchEvent) { - startEventObj.preventDefault(); - } - function getSwipeEventObject(e) { - const {clientX, clientY} = isTouchEvent ? getTouch(e) : e; - return {clientX, clientY}; - } - const startSE = getSwipeEventObject(startEventObj); - const {move: moveHandler, up: upHandler} = startHandler( - startSE, - startEventObj - ); - function getTouch(e) { - return Array.from(e.changedTouches).find( - ({identifier: id}) => id === touchId - ); - } - const onPointerMove = throttle((e) => { - const se = getSwipeEventObject(e); - moveHandler(se, e); - }); - function onPointerUp(e) { - unsubscribe(); - const se = getSwipeEventObject(e); - upHandler(se, e); - } - function unsubscribe() { - window.removeEventListener(pointerMoveEvent, onPointerMove); - window.removeEventListener(pointerUpEvent, onPointerUp); - } - window.addEventListener(pointerMoveEvent, onPointerMove, { - passive: true - }); - window.addEventListener(pointerUpEvent, onPointerUp, {passive: true}); - } - function createSwipeHandler(startHandler) { - return (e) => onSwipeStart(e, startHandler); - } - - function toArray(x) { - return Array.isArray(x) ? x : [x]; - } - function mergeClass(cls, propsCls) { - const normalized = toArray(cls).concat(toArray(propsCls)); - return classes(...normalized); - } - function omitAttrs(omit, attrs) { - const result = {}; - Object.keys(attrs).forEach((key) => { - if (omit.indexOf(key) < 0) { - result[key] = attrs[key]; - } - }); - return result; - } - function isElementHidden(element) { - return element.offsetParent === null; - } - - function Button(props, ...children) { - const cls = mergeClass("button", props.class); - const attrs = omitAttrs(["class"], props); - return m$1( - "button", - {class: cls, ...attrs}, - m$1("span", {class: "button__wrapper"}, ...children) - ); - } - - function ControlGroup(props, control, description) { - return m$1( - "span", - {class: ["control-group", props.class]}, - control, - description - ); - } - function Control(props, ...content) { - return m$1( - "span", - {class: ["control-group__control", props.class]}, - ...content - ); - } - function Description(props, ...content) { - return m$1( - "span", - {class: ["control-group__description", props.class]}, - ...content - ); - } - Object.assign(ControlGroup, {Control, Description}); - - function evalMath(expression) { - const rpnStack = []; - const workingStack = []; - let lastToken; - for (let i = 0, len = expression.length; i < len; i++) { - const token = expression[i]; - if (!token || token === " ") { - continue; - } - if (operators.has(token)) { - const op = operators.get(token); - while (workingStack.length) { - const currentOp = operators.get(workingStack[0]); - if (!currentOp) { - break; - } - if (op.lessOrEqualThan(currentOp)) { - rpnStack.push(workingStack.shift()); - } else { - break; - } - } - workingStack.unshift(token); - } else if (!lastToken || operators.has(lastToken)) { - rpnStack.push(token); - } else { - rpnStack[rpnStack.length - 1] += token; - } - lastToken = token; - } - rpnStack.push(...workingStack); - const stack = []; - for (let i = 0, len = rpnStack.length; i < len; i++) { - const op = operators.get(rpnStack[i]); - if (op) { - const args = stack.splice(0, 2); - stack.push(op.exec(args[1], args[0])); - } else { - stack.unshift(parseFloat(rpnStack[i])); - } - } - return stack[0]; - } - class Operator { - precendce; - execMethod; - constructor(precedence, method) { - this.precendce = precedence; - this.execMethod = method; - } - exec(left, right) { - return this.execMethod(left, right); - } - lessOrEqualThan(op) { - return this.precendce <= op.precendce; - } - } - const operators = new Map([ - ["+", new Operator(1, (left, right) => left + right)], - ["-", new Operator(1, (left, right) => left - right)], - ["*", new Operator(2, (left, right) => left * right)], - ["/", new Operator(2, (left, right) => left / right)] - ]); - - function parseArray(text) { - return text - .replace(/\r/g, "") - .split("\n") - .map((s) => s.trim()) - .filter((s) => s); - } - function formatArray(arr) { - return arr.concat("").join("\n"); - } - function getParenthesesRange(input, searchStartIndex = 0) { - return getOpenCloseRange(input, searchStartIndex, "(", ")", []); - } - function getOpenCloseRange( - input, - searchStartIndex, - openToken, - closeToken, - excludeRanges - ) { - let indexOf; - if (excludeRanges.length === 0) { - indexOf = (token, pos) => input.indexOf(token, pos); - } else { - indexOf = (token, pos) => - indexOfExcluding(input, token, pos, excludeRanges); - } - const {length} = input; - let depth = 0; - let firstOpenIndex = -1; - for (let i = searchStartIndex; i < length; i++) { - if (depth === 0) { - const openIndex = indexOf(openToken, i); - if (openIndex < 0) { - break; - } - firstOpenIndex = openIndex; - depth++; - i = openIndex; - } else { - const closeIndex = indexOf(closeToken, i); - if (closeIndex < 0) { - break; - } - const openIndex = indexOf(openToken, i); - if (openIndex < 0 || closeIndex <= openIndex) { - depth--; - if (depth === 0) { - return {start: firstOpenIndex, end: closeIndex + 1}; - } - i = closeIndex; - } else { - depth++; - i = openIndex; - } - } - } - return null; - } - function indexOfExcluding(input, search, position, excludeRanges) { - const i = input.indexOf(search, position); - const exclusion = excludeRanges.find((r) => i >= r.start && i < r.end); - if (exclusion) { - return indexOfExcluding( - input, - search, - exclusion.end, - excludeRanges - ); - } - return i; - } - function splitExcluding(input, separator, excludeRanges) { - const parts = []; - let commaIndex = -1; - let currIndex = 0; - while ( - (commaIndex = indexOfExcluding( - input, - separator, - currIndex, - excludeRanges - )) >= 0 - ) { - parts.push(input.substring(currIndex, commaIndex).trim()); - currIndex = commaIndex + 1; - } - parts.push(input.substring(currIndex).trim()); - return parts; - } - - const isSystemDarkModeEnabled = () => - matchMedia("(prefers-color-scheme: dark)").matches; - - const rgbaParseCache = new Map(); - function parseColorWithCache($color) { - $color = $color.trim(); - if (rgbaParseCache.has($color)) { - return rgbaParseCache.get($color); - } - if ($color.includes("calc(")) { - $color = lowerCalcExpression($color); - } - const color = parse($color); - color && rgbaParseCache.set($color, color); - return color; - } - function hslToRGB({h, s, l, a = 1}) { - if (s === 0) { - const [r, b, g] = [l, l, l].map((x) => Math.round(x * 255)); - return {r, g, b, a}; - } - const c = (1 - Math.abs(2 * l - 1)) * s; - const x = c * (1 - Math.abs(((h / 60) % 2) - 1)); - const m = l - c / 2; - const [r, g, b] = ( - h < 60 - ? [c, x, 0] - : h < 120 - ? [x, c, 0] - : h < 180 - ? [0, c, x] - : h < 240 - ? [0, x, c] - : h < 300 - ? [x, 0, c] - : [c, 0, x] - ).map((n) => Math.round((n + m) * 255)); - return {r, g, b, a}; - } - function rgbToHSL({r: r255, g: g255, b: b255, a = 1}) { - const r = r255 / 255; - const g = g255 / 255; - const b = b255 / 255; - const max = Math.max(r, g, b); - const min = Math.min(r, g, b); - const c = max - min; - const l = (max + min) / 2; - if (c === 0) { - return {h: 0, s: 0, l, a}; - } - let h = - (max === r - ? ((g - b) / c) % 6 - : max === g - ? (b - r) / c + 2 - : (r - g) / c + 4) * 60; - if (h < 0) { - h += 360; - } - const s = c / (1 - Math.abs(2 * l - 1)); - return {h, s, l, a}; - } - function toFixed(n, digits = 0) { - const fixed = n.toFixed(digits); - if (digits === 0) { - return fixed; - } - const dot = fixed.indexOf("."); - if (dot >= 0) { - const zerosMatch = fixed.match(/0+$/); - if (zerosMatch) { - if (zerosMatch.index === dot + 1) { - return fixed.substring(0, dot); - } - return fixed.substring(0, zerosMatch.index); - } - } - return fixed; - } - function rgbToHexString({r, g, b, a}) { - return `#${(a != null && a < 1 - ? [r, g, b, Math.round(a * 255)] - : [r, g, b] - ) - .map((x) => { - return `${x < 16 ? "0" : ""}${x.toString(16)}`; - }) - .join("")}`; - } - function hslToString(hsl) { - const {h, s, l, a} = hsl; - if (a != null && a < 1) { - return `hsla(${toFixed(h)}, ${toFixed(s * 100)}%, ${toFixed(l * 100)}%, ${toFixed(a, 2)})`; - } - return `hsl(${toFixed(h)}, ${toFixed(s * 100)}%, ${toFixed(l * 100)}%)`; - } - const rgbMatch = /^rgba?\([^\(\)]+\)$/; - const hslMatch = /^hsla?\([^\(\)]+\)$/; - const hexMatch = /^#[0-9a-f]+$/i; - function parse($color) { - const c = $color.trim().toLowerCase(); - if (c.match(rgbMatch)) { - return parseRGB(c); - } - if (c.match(hslMatch)) { - return parseHSL(c); - } - if (c.match(hexMatch)) { - return parseHex(c); - } - if (knownColors.has(c)) { - return getColorByName(c); - } - if (systemColors.has(c)) { - return getSystemColor(c); - } - if ($color === "transparent") { - return {r: 0, g: 0, b: 0, a: 0}; - } - if ( - (c.startsWith("color(") || c.startsWith("color-mix(")) && - c.endsWith(")") - ) { - return domParseColor(c); - } - if (c.startsWith("light-dark(") && c.endsWith(")")) { - const match = c.match( - /^light-dark\(\s*([a-z]+(\(.*\))?),\s*([a-z]+(\(.*\))?)\s*\)$/ - ); - if (match) { - const schemeColor = isSystemDarkModeEnabled() - ? match[3] - : match[1]; - return parse(schemeColor); - } - } - return null; - } - function getNumbers($color) { - const numbers = []; - let prevPos = 0; - let isMining = false; - const startIndex = $color.indexOf("("); - $color = $color.substring(startIndex + 1, $color.length - 1); - for (let i = 0; i < $color.length; i++) { - const c = $color[i]; - if ((c >= "0" && c <= "9") || c === "." || c === "+" || c === "-") { - isMining = true; - } else if (isMining && (c === " " || c === "," || c === "/")) { - numbers.push($color.substring(prevPos, i)); - isMining = false; - prevPos = i + 1; - } else if (!isMining) { - prevPos = i + 1; - } - } - if (isMining) { - numbers.push($color.substring(prevPos, $color.length)); - } - return numbers; - } - function getNumbersFromString(str, range, units) { - const raw = getNumbers(str); - const unitsList = Object.entries(units); - const numbers = raw - .map((r) => r.trim()) - .map((r, i) => { - let n; - const unit = unitsList.find(([u]) => r.endsWith(u)); - if (unit) { - n = - (parseFloat(r.substring(0, r.length - unit[0].length)) / - unit[1]) * - range[i]; - } else { - n = parseFloat(r); - } - if (range[i] > 1) { - return Math.round(n); - } - return n; - }); - return numbers; - } - const rgbRange = [255, 255, 255, 1]; - const rgbUnits = {"%": 100}; - function parseRGB($rgb) { - const [r, g, b, a = 1] = getNumbersFromString($rgb, rgbRange, rgbUnits); - return {r, g, b, a}; - } - const hslRange = [360, 1, 1, 1]; - const hslUnits = {"%": 100, "deg": 360, "rad": 2 * Math.PI, "turn": 1}; - function parseHSL($hsl) { - const [h, s, l, a = 1] = getNumbersFromString($hsl, hslRange, hslUnits); - return hslToRGB({h, s, l, a}); - } - function parseHex($hex) { - const h = $hex.substring(1); - switch (h.length) { - case 3: - case 4: { - const [r, g, b] = [0, 1, 2].map((i) => - parseInt(`${h[i]}${h[i]}`, 16) - ); - const a = - h.length === 3 ? 1 : parseInt(`${h[3]}${h[3]}`, 16) / 255; - return {r, g, b, a}; - } - case 6: - case 8: { - const [r, g, b] = [0, 2, 4].map((i) => - parseInt(h.substring(i, i + 2), 16) - ); - const a = - h.length === 6 ? 1 : parseInt(h.substring(6, 8), 16) / 255; - return {r, g, b, a}; - } - } - return null; - } - function getColorByName($color) { - const n = knownColors.get($color); - return { - r: (n >> 16) & 255, - g: (n >> 8) & 255, - b: (n >> 0) & 255, - a: 1 - }; - } - function getSystemColor($color) { - const n = systemColors.get($color); - return { - r: (n >> 16) & 255, - g: (n >> 8) & 255, - b: (n >> 0) & 255, - a: 1 - }; - } - function lowerCalcExpression(color) { - let searchIndex = 0; - const replaceBetweenIndices = (start, end, replacement) => { - color = - color.substring(0, start) + replacement + color.substring(end); - }; - while ((searchIndex = color.indexOf("calc(")) !== -1) { - const range = getParenthesesRange(color, searchIndex); - if (!range) { - break; - } - let slice = color.slice(range.start + 1, range.end - 1); - const includesPercentage = slice.includes("%"); - slice = slice.split("%").join(""); - const output = Math.round(evalMath(slice)); - replaceBetweenIndices( - range.start - 4, - range.end, - output + (includesPercentage ? "%" : "") - ); - } - return color; - } - const knownColors = new Map( - Object.entries({ - aliceblue: 0xf0f8ff, - antiquewhite: 0xfaebd7, - aqua: 0x00ffff, - aquamarine: 0x7fffd4, - azure: 0xf0ffff, - beige: 0xf5f5dc, - bisque: 0xffe4c4, - black: 0x000000, - blanchedalmond: 0xffebcd, - blue: 0x0000ff, - blueviolet: 0x8a2be2, - brown: 0xa52a2a, - burlywood: 0xdeb887, - cadetblue: 0x5f9ea0, - chartreuse: 0x7fff00, - chocolate: 0xd2691e, - coral: 0xff7f50, - cornflowerblue: 0x6495ed, - cornsilk: 0xfff8dc, - crimson: 0xdc143c, - cyan: 0x00ffff, - darkblue: 0x00008b, - darkcyan: 0x008b8b, - darkgoldenrod: 0xb8860b, - darkgray: 0xa9a9a9, - darkgrey: 0xa9a9a9, - darkgreen: 0x006400, - darkkhaki: 0xbdb76b, - darkmagenta: 0x8b008b, - darkolivegreen: 0x556b2f, - darkorange: 0xff8c00, - darkorchid: 0x9932cc, - darkred: 0x8b0000, - darksalmon: 0xe9967a, - darkseagreen: 0x8fbc8f, - darkslateblue: 0x483d8b, - darkslategray: 0x2f4f4f, - darkslategrey: 0x2f4f4f, - darkturquoise: 0x00ced1, - darkviolet: 0x9400d3, - deeppink: 0xff1493, - deepskyblue: 0x00bfff, - dimgray: 0x696969, - dimgrey: 0x696969, - dodgerblue: 0x1e90ff, - firebrick: 0xb22222, - floralwhite: 0xfffaf0, - forestgreen: 0x228b22, - fuchsia: 0xff00ff, - gainsboro: 0xdcdcdc, - ghostwhite: 0xf8f8ff, - gold: 0xffd700, - goldenrod: 0xdaa520, - gray: 0x808080, - grey: 0x808080, - green: 0x008000, - greenyellow: 0xadff2f, - honeydew: 0xf0fff0, - hotpink: 0xff69b4, - indianred: 0xcd5c5c, - indigo: 0x4b0082, - ivory: 0xfffff0, - khaki: 0xf0e68c, - lavender: 0xe6e6fa, - lavenderblush: 0xfff0f5, - lawngreen: 0x7cfc00, - lemonchiffon: 0xfffacd, - lightblue: 0xadd8e6, - lightcoral: 0xf08080, - lightcyan: 0xe0ffff, - lightgoldenrodyellow: 0xfafad2, - lightgray: 0xd3d3d3, - lightgrey: 0xd3d3d3, - lightgreen: 0x90ee90, - lightpink: 0xffb6c1, - lightsalmon: 0xffa07a, - lightseagreen: 0x20b2aa, - lightskyblue: 0x87cefa, - lightslategray: 0x778899, - lightslategrey: 0x778899, - lightsteelblue: 0xb0c4de, - lightyellow: 0xffffe0, - lime: 0x00ff00, - limegreen: 0x32cd32, - linen: 0xfaf0e6, - magenta: 0xff00ff, - maroon: 0x800000, - mediumaquamarine: 0x66cdaa, - mediumblue: 0x0000cd, - mediumorchid: 0xba55d3, - mediumpurple: 0x9370db, - mediumseagreen: 0x3cb371, - mediumslateblue: 0x7b68ee, - mediumspringgreen: 0x00fa9a, - mediumturquoise: 0x48d1cc, - mediumvioletred: 0xc71585, - midnightblue: 0x191970, - mintcream: 0xf5fffa, - mistyrose: 0xffe4e1, - moccasin: 0xffe4b5, - navajowhite: 0xffdead, - navy: 0x000080, - oldlace: 0xfdf5e6, - olive: 0x808000, - olivedrab: 0x6b8e23, - orange: 0xffa500, - orangered: 0xff4500, - orchid: 0xda70d6, - palegoldenrod: 0xeee8aa, - palegreen: 0x98fb98, - paleturquoise: 0xafeeee, - palevioletred: 0xdb7093, - papayawhip: 0xffefd5, - peachpuff: 0xffdab9, - peru: 0xcd853f, - pink: 0xffc0cb, - plum: 0xdda0dd, - powderblue: 0xb0e0e6, - purple: 0x800080, - rebeccapurple: 0x663399, - red: 0xff0000, - rosybrown: 0xbc8f8f, - royalblue: 0x4169e1, - saddlebrown: 0x8b4513, - salmon: 0xfa8072, - sandybrown: 0xf4a460, - seagreen: 0x2e8b57, - seashell: 0xfff5ee, - sienna: 0xa0522d, - silver: 0xc0c0c0, - skyblue: 0x87ceeb, - slateblue: 0x6a5acd, - slategray: 0x708090, - slategrey: 0x708090, - snow: 0xfffafa, - springgreen: 0x00ff7f, - steelblue: 0x4682b4, - tan: 0xd2b48c, - teal: 0x008080, - thistle: 0xd8bfd8, - tomato: 0xff6347, - turquoise: 0x40e0d0, - violet: 0xee82ee, - wheat: 0xf5deb3, - white: 0xffffff, - whitesmoke: 0xf5f5f5, - yellow: 0xffff00, - yellowgreen: 0x9acd32 - }) - ); - const systemColors = new Map( - Object.entries({ - "ActiveBorder": 0x3b99fc, - "ActiveCaption": 0x000000, - "AppWorkspace": 0xaaaaaa, - "Background": 0x6363ce, - "ButtonFace": 0xffffff, - "ButtonHighlight": 0xe9e9e9, - "ButtonShadow": 0x9fa09f, - "ButtonText": 0x000000, - "CaptionText": 0x000000, - "GrayText": 0x7f7f7f, - "Highlight": 0xb2d7ff, - "HighlightText": 0x000000, - "InactiveBorder": 0xffffff, - "InactiveCaption": 0xffffff, - "InactiveCaptionText": 0x000000, - "InfoBackground": 0xfbfcc5, - "InfoText": 0x000000, - "Menu": 0xf6f6f6, - "MenuText": 0xffffff, - "Scrollbar": 0xaaaaaa, - "ThreeDDarkShadow": 0x000000, - "ThreeDFace": 0xc0c0c0, - "ThreeDHighlight": 0xffffff, - "ThreeDLightShadow": 0xffffff, - "ThreeDShadow": 0x000000, - "Window": 0xececec, - "WindowFrame": 0xaaaaaa, - "WindowText": 0x000000, - "-webkit-focus-ring-color": 0xe59700 - }).map(([key, value]) => [key.toLowerCase(), value]) - ); - let canvas; - let context; - function domParseColor($color) { - if (!context) { - canvas = document.createElement("canvas"); - canvas.width = 1; - canvas.height = 1; - context = canvas.getContext("2d", {willReadFrequently: true}); - } - context.fillStyle = $color; - context.fillRect(0, 0, 1, 1); - const d = context.getImageData(0, 0, 1, 1).data; - const color = `rgba(${d[0]}, ${d[1]}, ${d[2]}, ${(d[3] / 255).toFixed(2)})`; - return parseRGB(color); - } - - function TextBox(props) { - const cls = mergeClass("textbox", props.class); - const attrs = omitAttrs(["class", "type"], props); - const type = props.type || "text"; - return m$1("input", { - class: cls, - type: type, - spellcheck: "false", - ...attrs - }); - } - - function scale(x, inLow, inHigh, outLow, outHigh) { - return ((x - inLow) * (outHigh - outLow)) / (inHigh - inLow) + outLow; - } - function clamp(x, min, max) { - return Math.min(max, Math.max(min, x)); - } - - const hsbPickerDefaults = { - wasPrevHidden: true, - hueCanvasRendered: false, - activeHSB: null, - activeChangeHandler: null, - hueTouchStartHandler: null, - sbTouchStartHandler: null - }; - function rgbToHSB({r, g, b}) { - const min = Math.min(r, g, b); - const max = Math.max(r, g, b); - return { - h: rgbToHSL({r, g, b}).h, - s: max === 0 ? 0 : 1 - min / max, - b: max / 255 - }; - } - function hsbToRGB({h: hue, s: sat, b: br}) { - let c; - if (hue < 60) { - c = [1, hue / 60, 0]; - } else if (hue < 120) { - c = [(120 - hue) / 60, 1, 0]; - } else if (hue < 180) { - c = [0, 1, (hue - 120) / 60]; - } else if (hue < 240) { - c = [0, (240 - hue) / 60, 1]; - } else if (hue < 300) { - c = [(hue - 240) / 60, 0, 1]; - } else { - c = [1, 0, (360 - hue) / 60]; - } - const max = Math.max(...c); - const [r, g, b] = c - .map((v) => v + (max - v) * (1 - sat)) - .map((v) => v * br) - .map((v) => Math.round(v * 255)); - return {r, g, b, a: 1}; - } - function hsbToString(hsb) { - const rgb = hsbToRGB(hsb); - return rgbToHexString(rgb); - } - function render(canvas, getPixel) { - const {width, height} = canvas; - const context = canvas.getContext("2d"); - const imageData = context.getImageData(0, 0, width, height); - const d = imageData.data; - for (let y = 0; y < height; y++) { - for (let x = 0; x < width; x++) { - const i = 4 * (y * width + x); - const c = getPixel(x, y); - for (let j = 0; j < 4; j++) { - d[i + j] = c[j]; - } - } - } - context.putImageData(imageData, 0, 0); - } - function renderHue(canvas) { - const {height} = canvas; - render(canvas, (_, y) => { - const hue = scale(y, 0, height, 0, 360); - const {r, g, b} = hsbToRGB({h: hue, s: 1, b: 1}); - return new Uint8ClampedArray([r, g, b, 255]); - }); - } - function renderSB(hue, canvas) { - const {width, height} = canvas; - render(canvas, (x, y) => { - const sat = scale(x, 0, width - 1, 0, 1); - const br = scale(y, 0, height - 1, 1, 0); - const {r, g, b} = hsbToRGB({h: hue, s: sat, b: br}); - return new Uint8ClampedArray([r, g, b, 255]); - }); - } - function HSBPicker(props) { - const context = getComponentContext(); - const store = context.getStore(hsbPickerDefaults); - store.activeChangeHandler = props.onChange; - const prevColor = context.prev && context.prev.props.color; - const prevActiveColor = store.activeHSB - ? hsbToString(store.activeHSB) - : null; - const didColorChange = - props.color !== prevColor && props.color !== prevActiveColor; - let activeHSB; - if (didColorChange) { - const rgb = parseColorWithCache(props.color); - activeHSB = rgbToHSB(rgb); - store.activeHSB = activeHSB; - } else { - activeHSB = store.activeHSB; - } - function onSBCanvasRender(canvas) { - if (isElementHidden(canvas)) { - return; - } - const hue = activeHSB.h; - const prevHue = - prevColor && rgbToHSB(parseColorWithCache(prevColor)).h; - if (store.wasPrevHidden || hue !== prevHue) { - renderSB(hue, canvas); - } - store.wasPrevHidden = false; - } - function onHueCanvasRender(canvas) { - if (store.hueCanvasRendered || isElementHidden(canvas)) { - return; - } - store.hueCanvasRendered = true; - renderHue(canvas); - } - function createHSBSwipeHandler(getEventHSB) { - return createSwipeHandler((startEvt, startNativeEvt) => { - const rect = - startNativeEvt.currentTarget.getBoundingClientRect(); - function onPointerMove(e) { - store.activeHSB = getEventHSB({...e, rect}); - props.onColorPreview(hsbToString(store.activeHSB)); - context.refresh(); - } - function onPointerUp(e) { - const hsb = getEventHSB({...e, rect}); - store.activeHSB = hsb; - props.onChange(hsbToString(hsb)); - } - store.activeHSB = getEventHSB({...startEvt, rect}); - context.refresh(); - return { - move: onPointerMove, - up: onPointerUp - }; - }); - } - const onSBPointerDown = createHSBSwipeHandler( - ({clientX, clientY, rect}) => { - const sat = clamp((clientX - rect.left) / rect.width, 0, 1); - const br = clamp(1 - (clientY - rect.top) / rect.height, 0, 1); - return {...activeHSB, s: sat, b: br}; - } - ); - const onHuePointerDown = createHSBSwipeHandler(({clientY, rect}) => { - const hue = clamp((clientY - rect.top) / rect.height, 0, 1) * 360; - return {...activeHSB, h: hue}; - }); - const hueCursorStyle = { - "background-color": hslToString({ - h: activeHSB.h, - s: 1, - l: 0.5, - a: 1 - }), - "left": "0%", - "top": `${(activeHSB.h / 360) * 100}%` - }; - const sbCursorStyle = { - "background-color": rgbToHexString(hsbToRGB(activeHSB)), - "left": `${activeHSB.s * 100}%`, - "top": `${(1 - activeHSB.b) * 100}%` - }; - return m$1( - "span", - {class: "hsb-picker"}, - m$1( - "span", - { - class: "hsb-picker__sb-container", - onmousedown: onSBPointerDown, - onupdate: (el) => { - if (store.sbTouchStartHandler) { - el.removeEventListener( - "touchstart", - store.sbTouchStartHandler - ); - } - el.addEventListener("touchstart", onSBPointerDown, { - passive: true - }); - store.sbTouchStartHandler = onSBPointerDown; - } - }, - m$1("canvas", { - class: "hsb-picker__sb-canvas", - onrender: onSBCanvasRender - }), - m$1("span", { - class: "hsb-picker__sb-cursor", - style: sbCursorStyle - }) - ), - m$1( - "span", - { - class: "hsb-picker__hue-container", - onmousedown: onHuePointerDown, - onupdate: (el) => { - if (store.hueTouchStartHandler) { - el.removeEventListener( - "touchstart", - store.hueTouchStartHandler - ); - } - el.addEventListener("touchstart", onHuePointerDown, { - passive: true - }); - store.hueTouchStartHandler = onHuePointerDown; - } - }, - m$1("canvas", { - class: "hsb-picker__hue-canvas", - onrender: onHueCanvasRender - }), - m$1("span", { - class: "hsb-picker__hue-cursor", - style: hueCursorStyle - }) - ) - ); - } - - function isValidColor(color) { - return Boolean(parseColorWithCache(color)); - } - const colorPickerFocuses = new WeakMap(); - function focusColorPicker(node) { - const focus = colorPickerFocuses.get(node); - focus(); - } - function ColorPicker(props) { - const context = getComponentContext(); - context.onRender((node) => colorPickerFocuses.set(node, focus)); - const store = context.store; - const isColorValid = isValidColor(props.color); - function onColorPreview(previewColor) { - store.previewNode.style.backgroundColor = previewColor; - store.textBoxNode.value = previewColor; - store.textBoxNode.blur(); - } - function onColorChange(rawValue) { - const value = rawValue.trim(); - if (isValidColor(value)) { - props.onChange(value); - } else { - props.onChange(props.color); - } - } - function focus() { - if (store.isFocused) { - return; - } - store.isFocused = true; - context.refresh(); - window.addEventListener("mousedown", onOuterClick, {passive: true}); - } - function blur() { - if (!store.isFocused) { - return; - } - window.removeEventListener("mousedown", onOuterClick); - store.isFocused = false; - context.refresh(); - } - function toggleFocus() { - if (store.isFocused) { - blur(); - } else { - focus(); - } - } - function onOuterClick(e) { - if (!e.composedPath().some((el) => el === context.node)) { - blur(); - } - } - const textBox = m$1(TextBox, { - class: "color-picker__input", - onrender: (el) => { - store.textBoxNode = el; - store.textBoxNode.value = isColorValid ? props.color : ""; - }, - onkeypress: (e) => { - const input = e.target; - if (e.key === "Enter") { - const {value} = input; - onColorChange(value); - blur(); - onColorPreview(value); - } - }, - onfocus: focus - }); - const previewElement = m$1("span", { - class: "color-picker__preview", - onclick: toggleFocus, - onrender: (el) => { - store.previewNode = el; - el.style.backgroundColor = isColorValid - ? props.color - : "transparent"; - } - }); - const resetButton = props.canReset - ? m$1("span", { - role: "button", - class: "color-picker__reset", - onclick: () => { - props.onReset(); - blur(); - } - }) - : null; - const textBoxLine = m$1( - "span", - {class: "color-picker__textbox-line"}, - textBox, - previewElement, - resetButton - ); - const hsbLine = isColorValid - ? m$1( - "span", - {class: "color-picker__hsb-line"}, - m$1(HSBPicker, { - color: props.color, - onChange: onColorChange, - onColorPreview: onColorPreview - }) - ) - : null; - return m$1( - "span", - { - class: [ - "color-picker", - store.isFocused && "color-picker--focused", - props.class - ] - }, - m$1("span", {class: "color-picker__wrapper"}, textBoxLine, hsbLine) - ); - } - Object.assign(ColorPicker, {focus: focusColorPicker}); - - const DEFAULT_OVERLAY_KEY = Symbol(); - const overlayNodes = new Map(); - const clickListeners = new WeakMap(); - function getOverlayDOMNode(key) { - if (key == null) { - key = DEFAULT_OVERLAY_KEY; - } - if (!overlayNodes.has(key)) { - const node = document.createElement("div"); - node.classList.add("overlay"); - node.addEventListener( - "click", - (e) => { - if (clickListeners.has(node) && e.currentTarget === node) { - const listener = clickListeners.get(node); - listener(); - } - }, - {passive: true} - ); - overlayNodes.set(key, node); - } - return overlayNodes.get(key); - } - function Overlay(props) { - return getOverlayDOMNode(props.key); - } - function Portal(props, ...content) { - const context = getComponentContext(); - context.onRender(() => { - const node = getOverlayDOMNode(props.key); - if (props.onOuterClick) { - clickListeners.set(node, props.onOuterClick); - } else { - clickListeners.delete(node); - } - render$1(node, content); - }); - context.onRemove(() => { - const container = getOverlayDOMNode(props.key); - render$1(container, null); - }); - return context.leave(); - } - var Overlay$1 = Object.assign(Overlay, {Portal}); - - function MessageBox(props) { - return m$1( - Overlay$1.Portal, - {key: props.portalKey, onOuterClick: props.onCancel}, - m$1( - "div", - {class: "message-box"}, - m$1("label", {class: "message-box__caption"}, props.caption), - m$1( - "div", - {class: "message-box__buttons"}, - m$1( - Button, - { - class: "message-box__button message-box__button-ok", - onclick: props.onOK - }, - "OK" - ), - props.hideCancel - ? null - : m$1( - Button, - { - class: "message-box__button message-box__button-cancel", - onclick: props.onCancel - }, - "Cancel" - ) - ) - ) - ); - } - - var ThemeEngine; - (function (ThemeEngine) { - ThemeEngine["cssFilter"] = "cssFilter"; - ThemeEngine["svgFilter"] = "svgFilter"; - ThemeEngine["staticTheme"] = "staticTheme"; - ThemeEngine["dynamicTheme"] = "dynamicTheme"; - })(ThemeEngine || (ThemeEngine = {})); - - function TabPanel(props, ...children) { - const {activeTabId} = props; - function createTabButton(tabSpec) { - const {id, label, icon, iconClass = ""} = tabSpec.props; - function onClick() { - props.onTabChange(id); - } - return m$1( - Button, - { - class: { - "settings-tab-panel__button": true, - "settings-tab-panel__button--active": activeTabId === id - }, - onclick: tabSpec.props.onClick ?? onClick - }, - m$1( - "span", - { - class: { - "settings-tab-panel__button__icon": true, - [iconClass]: Boolean(iconClass) - } - }, - icon - ), - label - ); - } - return m$1( - "div", - { - class: { - "settings-tab-panel": true, - "settings-tab-panel--vertical": props.isVertical - } - }, - m$1( - "div", - {class: "settings-tab-panel__buttons"}, - ...children.map(createTabButton) - ), - m$1( - "div", - {class: "settings-tab-panel__tabs"}, - ...children.map((child) => { - const {id} = child.props; - const spec = { - ...child, - props: { - ...child.props, - isActive: id === activeTabId - } - }; - return spec; - }) - ) - ); - } - function Tab(props, ...children) { - return m$1( - "div", - { - class: { - "settings-tab-panel__tab": true, - "settings-tab-panel__tab--active": props.isActive - } - }, - props.isActive ? children : null - ); - } - var TabPanel$1 = Object.assign(TabPanel, {Tab}); - - function cachedFactory(factory, size) { - const cache = new Map(); - return (key) => { - if (cache.has(key)) { - return cache.get(key); - } - const value = factory(key); - cache.set(key, value); - if (cache.size > size) { - const first = cache.keys().next().value; - cache.delete(first); - } - return value; - }; - } - - function compareURLPatterns(a, b) { - return a.localeCompare(b); - } - function isURLInList(url, list) { - for (let i = 0; i < list.length; i++) { - if (isURLMatched(url, list[i])) { - return true; - } - } - return false; - } - function isURLMatched(url, urlTemplate) { - if (isRegExp(urlTemplate)) { - const regexp = createRegExp(urlTemplate); - return regexp ? regexp.test(url) : false; - } - return matchURLPattern(url, urlTemplate); - } - const URL_CACHE_SIZE = 32; - const prepareURL = cachedFactory((url) => { - let parsed; - try { - parsed = new URL(url); - } catch (err) { - return null; - } - const {hostname, pathname, protocol, port} = parsed; - const hostParts = hostname.split(".").reverse(); - const pathParts = pathname.split("/").slice(1); - if (!pathParts[pathParts.length - 1]) { - pathParts.splice(pathParts.length - 1, 1); - } - return { - hostParts, - pathParts, - port, - protocol - }; - }, URL_CACHE_SIZE); - const URL_MATCH_CACHE_SIZE = 32 * 1024; - const preparePattern = cachedFactory((pattern) => { - if (!pattern) { - return null; - } - const exactStart = pattern.startsWith("^"); - const exactEnd = pattern.endsWith("$"); - if (exactStart) { - pattern = pattern.substring(1); - } - if (exactEnd) { - pattern = pattern.substring(0, pattern.length - 1); - } - let protocol = ""; - const protocolIndex = pattern.indexOf("://"); - if (protocolIndex > 0) { - protocol = pattern.substring(0, protocolIndex + 1); - pattern = pattern.substring(protocolIndex + 3); - } - const slashIndex = pattern.indexOf("/"); - const host = - slashIndex < 0 ? pattern : pattern.substring(0, slashIndex); - let hostName = host; - let isIPv6 = false; - let ipV6End = -1; - if (host.startsWith("[")) { - ipV6End = host.indexOf("]"); - if (ipV6End > 0) { - isIPv6 = true; - } - } - let port = "*"; - const portIndex = host.lastIndexOf(":"); - if (portIndex >= 0 && (!isIPv6 || ipV6End < portIndex)) { - hostName = host.substring(0, portIndex); - port = host.substring(portIndex + 1); - } - if (isIPv6) { - try { - const ipV6URL = new URL(`http://${hostName}`); - hostName = ipV6URL.hostname; - } catch (err) {} - } - const hostParts = hostName.split(".").reverse(); - const path = slashIndex < 0 ? "" : pattern.substring(slashIndex + 1); - const pathParts = path.split("/"); - if (!pathParts[pathParts.length - 1]) { - pathParts.splice(pathParts.length - 1, 1); - } - return { - hostParts, - pathParts, - port, - exactStart, - exactEnd, - protocol - }; - }, URL_MATCH_CACHE_SIZE); - function matchURLPattern(url, pattern) { - const u = prepareURL(url); - const p = preparePattern(pattern); - if ( - !(u && p) || - p.hostParts.length > u.hostParts.length || - (p.exactStart && p.hostParts.length !== u.hostParts.length) || - (p.exactEnd && p.pathParts.length !== u.pathParts.length) || - (p.port !== "*" && p.port !== u.port) || - (p.protocol && p.protocol !== u.protocol) - ) { - return false; - } - for (let i = 0; i < p.hostParts.length; i++) { - const pHostPart = p.hostParts[i]; - const uHostPart = u.hostParts[i]; - if (pHostPart !== "*" && pHostPart !== uHostPart) { - return false; - } - } - if ( - p.hostParts.length >= 2 && - p.hostParts.at(-1) !== "*" && - (p.hostParts.length < u.hostParts.length - 1 || - (p.hostParts.length === u.hostParts.length - 1 && - u.hostParts.at(-1) !== "www")) - ) { - return false; - } - if (p.pathParts.length === 0) { - return true; - } - if (p.pathParts.length > u.pathParts.length) { - return false; - } - for (let i = 0; i < p.pathParts.length; i++) { - const pPathPart = p.pathParts[i]; - const uPathPart = u.pathParts[i]; - if (pPathPart !== "*" && pPathPart !== uPathPart) { - return false; - } - } - return true; - } - function isRegExp(pattern) { - return ( - pattern.startsWith("/") && - pattern.endsWith("/") && - pattern.length > 2 - ); - } - const REGEXP_CACHE_SIZE = 1024; - const createRegExp = cachedFactory((pattern) => { - if (pattern.startsWith("/")) { - pattern = pattern.substring(1); - } - if (pattern.endsWith("/")) { - pattern = pattern.substring(0, pattern.length - 1); - } - try { - return new RegExp(pattern); - } catch (err) { - return null; - } - }, REGEXP_CACHE_SIZE); - - function getCurrentThemePreset(props) { - const custom = props.data.settings.customThemes.find(({url}) => - isURLInList(props.data.activeTab.url, url) - ); - const preset = custom - ? null - : props.data.settings.presets.find(({urls}) => - isURLInList(props.data.activeTab.url, urls) - ); - let theme = custom - ? custom.theme - : preset - ? preset.theme - : props.data.settings.theme; - if (props.data.forcedScheme) { - const mode = props.data.forcedScheme === "dark" ? 1 : 0; - theme = {...theme, mode}; - } - function setTheme(config) { - if (custom) { - custom.theme = {...custom.theme, ...config}; - props.actions.changeSettings({ - customThemes: props.data.settings.customThemes - }); - } else if (preset) { - preset.theme = {...preset.theme, ...config}; - props.actions.changeSettings({ - presets: props.data.settings.presets - }); - } else { - props.actions.setTheme(config); - } - if ( - config.mode != null && - props.data.settings.automation.behavior === "Scheme" - ) { - props.actions.changeSettings({ - automation: { - ...props.data.settings.automation, - ...{enabled: false} - } - }); - } - } - return { - theme, - change: setTheme - }; - } - - const DEVTOOLS_DOCS_URL = - "https://github.com/darkreader/darkreader/blob/main/CONTRIBUTING.md"; - - function ConfigEditor(props) { - const context = getComponentContext(); - const store = context.getStore({ - dialogMessage: "", - dialogAction: null, - errorText: "" - }); - let textNode; - function onTextRender(node) { - textNode = node; - if (!store.errorText) { - textNode.value = props.text; - } - node.addEventListener("keydown", ({key, preventDefault}) => { - if (key === "Tab") { - preventDefault(); - const indent = " ".repeat(4); - { - document.execCommand("insertText", false, indent); - } - } - }); - } - async function apply() { - const text = textNode.value; - try { - await props.apply(text); - store.errorText = ""; - } catch (err) { - store.errorText = String(err); - } - context.refresh(); - } - function showDialog(message, action) { - store.dialogMessage = message; - store.dialogAction = action; - context.refresh(); - } - function reset() { - store.dialogMessage = ""; - store.dialogAction = null; - store.errorText = ""; - props.reset(); - context.refresh(); - } - function showResetDialog() { - showDialog( - "Are you sure you want to remove the current changes? You cannot restore them later.", - reset - ); - } - function showDeleteDialog() { - showDialog( - "Are you sure you want to delete the fix?", - props.delete - ); - } - function hideDialog() { - store.dialogMessage = ""; - store.dialogAction = null; - context.refresh(); - } - const dialog = - store.dialogMessage && store.dialogAction - ? m$1(MessageBox, { - caption: store.dialogMessage, - onOK: store.dialogAction, - onCancel: hideDialog - }) - : null; - return m$1( - "div", - {class: "config-editor"}, - props.header ? m$1("h3", {class: "sub-title"}, props.header) : null, - m$1("textarea", { - class: "editor", - onrender: onTextRender, - spellcheck: "false", - autocorrect: "off", - autocomplete: "off", - autocapitalize: "off" - }), - m$1("label", {class: "error-text"}, store.errorText), - m$1( - "div", - {class: "buttons"}, - props.delete - ? m$1(Button, {onclick: showDeleteDialog}, "Delete") - : null, - props.reset - ? m$1(Button, {onclick: showResetDialog}, "Reset changes") - : null, - props.apply ? m$1(Button, {onclick: apply}, "Apply") : null - ), - m$1( - "p", - {class: "description"}, - "Read about this tool ", - m$1( - "strong", - null, - m$1( - "a", - { - href: DEVTOOLS_DOCS_URL, - target: "_blank", - rel: "noopener noreferrer" - }, - "here" - ) - ), - ". If a ", - m$1("strong", null, "popular"), - " website looks incorrect e-mail to ", - m$1("strong", null, "support@darkreader.org") - ), - dialog - ); - } - - function isArrayLike(items) { - return items.length != null; - } - function forEach(items, iterator) { - if (isArrayLike(items)) { - for (let i = 0, len = items.length; i < len; i++) { - iterator(items[i]); - } - } else { - for (const item of items) { - iterator(item); - } - } - } - function push(array, addition) { - forEach(addition, (a) => array.push(a)); - } - - function formatSitesFixesConfig(fixes, options) { - const lines = []; - fixes.forEach((fix, i) => { - push(lines, fix.url); - options.props.forEach((prop) => { - const command = options.getPropCommandName(prop); - const value = fix[prop]; - if (options.shouldIgnoreProp(prop, value)) { - return; - } - lines.push(""); - lines.push(command); - const formattedValue = options.formatPropValue(prop, value); - if (formattedValue) { - lines.push(formattedValue); - } - }); - if (i < fixes.length - 1) { - lines.push(""); - lines.push("=".repeat(32)); - lines.push(""); - } - }); - lines.push(""); - return lines.join("\n"); - } - - function parseSitesFixesConfig(text, options) { - const sites = []; - const blocks = text.replace(/\r/g, "").split(/^\s*={2,}\s*$/gm); - blocks.forEach((block) => { - const lines = block.split("\n"); - const commandIndices = []; - lines.forEach((ln, i) => { - if (ln.match(/^[A-Z]+(\s[A-Z]+){0,2}$/)) { - commandIndices.push(i); - } - }); - if (commandIndices.length === 0) { - return; - } - const siteFix = { - url: parseArray(lines.slice(0, commandIndices[0]).join("\n")) - }; - commandIndices.forEach((commandIndex, i) => { - const command = lines[commandIndex].trim(); - const valueText = lines - .slice( - commandIndex + 1, - i === commandIndices.length - 1 - ? lines.length - : commandIndices[i + 1] - ) - .join("\n"); - const prop = options.getCommandPropName(command); - if (!prop) { - return; - } - const value = options.parseCommandValue(command, valueText); - siteFix[prop] = value; - }); - sites.push(siteFix); - }); - return sites; - } - - const cssCommentsRegex = /\/\*[\s\S]*?\*\//g; - function removeCSSComments(cssText) { - return cssText.replace(cssCommentsRegex, ""); - } - - function parseCSS(cssText) { - cssText = removeCSSComments(cssText); - cssText = cssText.trim(); - if (!cssText) { - return []; - } - const rules = []; - const excludeRanges = getTokenExclusionRanges(cssText); - const bracketRanges = getAllOpenCloseRanges( - cssText, - "{", - "}", - excludeRanges - ); - let ruleStart = 0; - bracketRanges.forEach((brackets) => { - const key = cssText.substring(ruleStart, brackets.start).trim(); - const content = cssText.substring( - brackets.start + 1, - brackets.end - 1 - ); - if (key.startsWith("@")) { - const typeEndIndex = key.search(/[\s\(]/); - const rule = { - type: - typeEndIndex < 0 ? key : key.substring(0, typeEndIndex), - query: - typeEndIndex < 0 - ? "" - : key.substring(typeEndIndex).trim(), - rules: parseCSS(content) - }; - rules.push(rule); - } else { - const rule = { - selectors: parseSelectors(key), - declarations: parseDeclarations(content) - }; - rules.push(rule); - } - ruleStart = brackets.end; - }); - return rules; - } - function getAllOpenCloseRanges( - input, - openToken, - closeToken, - excludeRanges = [] - ) { - const ranges = []; - let i = 0; - let range; - while ( - (range = getOpenCloseRange( - input, - i, - openToken, - closeToken, - excludeRanges - )) - ) { - ranges.push(range); - i = range.end; - } - return ranges; - } - function getTokenExclusionRanges(cssText) { - const singleQuoteGoesFirst = - cssText.indexOf("'") < cssText.indexOf('"'); - const firstQuote = singleQuoteGoesFirst ? "'" : '"'; - const secondQuote = singleQuoteGoesFirst ? '"' : "'"; - const excludeRanges = getAllOpenCloseRanges( - cssText, - firstQuote, - firstQuote - ); - excludeRanges.push( - ...getAllOpenCloseRanges( - cssText, - secondQuote, - secondQuote, - excludeRanges - ) - ); - excludeRanges.push( - ...getAllOpenCloseRanges(cssText, "[", "]", excludeRanges) - ); - excludeRanges.push( - ...getAllOpenCloseRanges(cssText, "(", ")", excludeRanges) - ); - return excludeRanges; - } - function parseSelectors(selectorText) { - const excludeRanges = getTokenExclusionRanges(selectorText); - return splitExcluding(selectorText, ",", excludeRanges); - } - function parseDeclarations(cssDeclarationsText) { - const declarations = []; - const excludeRanges = getTokenExclusionRanges(cssDeclarationsText); - splitExcluding(cssDeclarationsText, ";", excludeRanges).forEach( - (part) => { - const colonIndex = part.indexOf(":"); - if (colonIndex > 0) { - const importantIndex = part.indexOf("!important"); - declarations.push({ - property: part.substring(0, colonIndex).trim(), - value: part - .substring( - colonIndex + 1, - importantIndex > 0 - ? importantIndex - : part.length - ) - .trim(), - important: importantIndex > 0 - }); - } - } - ); - return declarations; - } - function isParsedStyleRule(rule) { - return "selectors" in rule; - } - - function formatCSS(cssText) { - const parsed = parseCSS(cssText); - return formatParsedCSS(parsed); - } - function formatParsedCSS(parsed) { - const lines = []; - const tab = " "; - function formatRule(rule, indent) { - if (isParsedStyleRule(rule)) { - formatStyleRule(rule, indent); - } else { - formatAtRule(rule, indent); - } - } - function formatAtRule({type, query, rules}, indent) { - lines.push(`${indent}${type} ${query} {`); - rules.forEach((child) => formatRule(child, `${indent}${tab}`)); - lines.push(`${indent}}`); - } - function formatStyleRule({selectors, declarations}, indent) { - const lastSelectorIndex = selectors.length - 1; - selectors.forEach((selector, i) => { - lines.push( - `${indent}${selector}${i < lastSelectorIndex ? "," : " {"}` - ); - }); - const sorted = sortDeclarations(declarations); - sorted.forEach(({property, value, important}) => { - lines.push( - `${indent}${tab}${property}: ${value}${important ? " !important" : ""};` - ); - }); - lines.push(`${indent}}`); - } - clearEmptyRules(parsed); - parsed.forEach((rule) => formatRule(rule, "")); - return lines.join("\n"); - } - function sortDeclarations(declarations) { - const prefixRegex = /^-[a-z]-/; - return [...declarations].sort((a, b) => { - const aProp = a.property; - const bProp = b.property; - const aPrefix = aProp.match(prefixRegex)?.[0] ?? ""; - const bPrefix = bProp.match(prefixRegex)?.[0] ?? ""; - const aNorm = aPrefix ? aProp.replace(prefixRegex, "") : aProp; - const bNorm = bPrefix ? bProp.replace(prefixRegex, "") : bProp; - if (aNorm === bNorm) { - return aPrefix.localeCompare(bPrefix); - } - return aNorm.localeCompare(bNorm); - }); - } - function clearEmptyRules(rules) { - for (let i = rules.length - 1; i >= 0; i--) { - const rule = rules[i]; - if (isParsedStyleRule(rule)) { - if (rule.declarations.length === 0) { - rules.splice(i, 1); - } - } else { - clearEmptyRules(rule.rules); - if (rule.rules.length === 0) { - rules.splice(i, 1); - } - } - } - } - - const dynamicThemeFixesCommands = { - "INVERT": "invert", - "CSS": "css", - "IGNORE INLINE STYLE": "ignoreInlineStyle", - "IGNORE IMAGE ANALYSIS": "ignoreImageAnalysis" - }; - function parseDynamicThemeFixes(text) { - return parseSitesFixesConfig(text, { - commands: Object.keys(dynamicThemeFixesCommands), - getCommandPropName: (command) => dynamicThemeFixesCommands[command], - parseCommandValue: (command, value) => { - if (command === "CSS") { - return value.trim(); - } - return parseArray(value); - } - }); - } - function formatDynamicThemeFixes(dynamicThemeFixes) { - const fixes = dynamicThemeFixes - .slice() - .sort((a, b) => compareURLPatterns(a.url[0], b.url[0])); - return formatSitesFixesConfig(fixes, { - props: Object.values(dynamicThemeFixesCommands), - getPropCommandName: (prop) => - Object.entries(dynamicThemeFixesCommands).find( - ([, p]) => p === prop - )[0], - formatPropValue: (prop, value) => { - if (prop === "css") { - return formatCSS(value); - } - return formatArray(value).trim(); - }, - shouldIgnoreProp: (prop, value) => { - if (prop === "css") { - return !value; - } - return !(Array.isArray(value) && value.length > 0); - } - }); - } - - function DynamicPerSiteEditor(props) { - const context = getComponentContext(); - const store = context.getStore({ - errorText: "", - fixes: [], - fixesLength: 0, - search: "", - currentFix: null - }); - const fixesText = props.devtools.dynamicFixesText; - const didFixesChange = store.fixesLength !== fixesText.length; - if (didFixesChange) { - store.fixes = parseDynamicThemeFixes(fixesText); - store.fixesLength = fixesText.length; - } - if (store.currentFix && !store.fixes.includes(store.currentFix)) { - const u1 = store.currentFix.url; - const sameURLFix = store.fixes.find((f) => { - const u2 = f.url; - return ( - u1.length === u2.length && u1.every((u, i) => u === u2[i]) - ); - }); - if (sameURLFix) { - store.currentFix = sameURLFix; - } else { - store.currentFix = null; - } - } - function onSearchInput(e) { - const element = e.target; - store.search = element.value; - store.currentFix = null; - context.refresh(); - } - async function apply(text) { - const [change] = parseDynamicThemeFixes(text); - const index = store.fixes.indexOf(store.currentFix); - store.fixes[index] = change; - store.currentFix = change; - const config = formatDynamicThemeFixes(store.fixes); - await props.actions.applyDevDynamicThemeFixes(config); - } - function addNewFix() { - const newFixURL = store.search; - if (!newFixURL) { - context.node.querySelector(".js-search").focus(); - return; - } - const newFix = { - url: [newFixURL], - invert: [], - css: "", - ignoreImageAnalysis: [], - ignoreInlineStyle: [], - disableStyleSheetsProxy: false, - disableCustomElementRegistryProxy: false - }; - store.fixes.push(newFix); - store.currentFix = newFix; - const config = formatDynamicThemeFixes(store.fixes); - props.actions.applyDevDynamicThemeFixes(config); - } - const fixText = store.currentFix - ? formatDynamicThemeFixes([store.currentFix]) - : ""; - const filteredFixes = store.search - ? store.fixes.filter(({url}) => - url.some((u) => u.includes(store.search)) - ) - : store.fixes; - return m$1( - "div", - {class: "dynamic-per-site"}, - m$1( - "div", - {class: "dynamic-per-site__search-wrapper"}, - m$1(TextBox, { - class: "dynamic-per-site__search-input js-search", - type: "text", - oninput: onSearchInput, - placeholder: "Search by URL" - }) - ), - m$1( - "list", - {class: "dynamic-per-site__urls"}, - filteredFixes.map((fix) => { - const text = fix.url.join(" "); - return m$1( - "li", - null, - m$1( - Button, - { - class: { - "dynamic-per-site__url": true, - "dynamic-per-site__url--active": - fix === store.currentFix - }, - onclick: () => { - store.currentFix = - fix === store.currentFix ? null : fix; - context.refresh(); - } - }, - text - ) - ); - }) - ), - store.currentFix - ? m$1(ConfigEditor, { - text: fixText, - apply: apply, - reset: () => { - props.actions.resetDevDynamicThemeFixes(); - }, - delete: async () => { - const index = store.fixes.indexOf(store.currentFix); - store.fixes.splice(index, 1); - store.currentFix = null; - const config = formatDynamicThemeFixes(store.fixes); - await props.actions.applyDevDynamicThemeFixes(config); - } - }) - : m$1( - "div", - {class: "dynamic-per-site__add-fix"}, - m$1( - Button, - { - onclick: addNewFix, - class: "dynamic-per-site__add-fix__button" - }, - "Create new fix" - ), - m$1( - "p", - {class: "dynamic-per-site__add-fix__description"}, - "Search for an ", - m$1("strong", null, "existing fix"), - " or enter a ", - m$1("strong", null, "domain name"), - m$1("br", null), - "for a new fix and click ", - m$1("strong", null, "Create") - ) - ) - ); - } - - function DynamicModeEditor(props) { - const context = getComponentContext(); - const store = context.getStore({activeTabId: "full-editor"}); - function onTabChange(tabId) { - store.activeTabId = tabId; - context.refresh(); - } - return m$1( - "div", - {class: "dynamic-mode-editor"}, - m$1( - TabPanel$1, - { - isVertical: true, - activeTabId: store.activeTabId, - onTabChange: onTabChange - }, - m$1( - TabPanel$1.Tab, - {id: "full-editor", label: "Full Editor"}, - m$1(ConfigEditor, { - text: props.devtools.dynamicFixesText, - apply: (text) => - props.actions.applyDevDynamicThemeFixes(text), - reset: () => props.actions.resetDevDynamicThemeFixes() - }) - ), - m$1( - TabPanel$1.Tab, - {id: "per-site-editor", label: "Per Site Editor"}, - m$1(DynamicPerSiteEditor, {...props}) - ) - ) - ); - } - - function Body(props) { - const {data, actions, devtools} = props; - const context = getComponentContext(); - const {theme} = getCurrentThemePreset({data, actions}); - const defaultTabId = { - [ThemeEngine.dynamicTheme]: "dynamic-editor", - [ThemeEngine.staticTheme]: "static-editor", - [ThemeEngine.cssFilter]: "filter-editor", - [ThemeEngine.svgFilter]: "filter-editor" - }[theme.engine]; - const store = context.getStore({ - errorText: "", - activeTabId: defaultTabId - }); - function onTabChange(tabId) { - store.activeTabId = tabId; - context.refresh(); - } - const previewButtonText = data.settings.previewNewDesign - ? "Switch to old design" - : "Preview new design"; - data.settings.previewNewestDesign - ? "Switch to old design" - : "Preview newest design"; - function toggleDesign() { - actions.changeSettings({ - previewNewDesign: !data.settings.previewNewDesign, - previewNewestDesign: false - }); - } - return m$1( - "body", - null, - m$1( - "header", - null, - m$1("img", { - id: "logo", - src: "../assets/images/darkreader-type.svg", - alt: "Dark Reader" - }), - m$1("h1", {id: "title"}, "Developer Tools") - ), - m$1( - TabPanel$1, - {activeTabId: store.activeTabId, onTabChange: onTabChange}, - m$1( - TabPanel$1.Tab, - {id: "dynamic-editor", label: "Dynamic Theme Editor"}, - m$1(DynamicModeEditor, {...props}) - ), - m$1( - TabPanel$1.Tab, - {id: "static-editor", label: "Static Theme Editor"}, - m$1(ConfigEditor, { - header: "Static Theme Editor", - text: devtools.staticThemesText, - apply: (text) => actions.applyDevStaticThemes(text), - reset: () => actions.resetDevStaticThemes() - }) - ), - m$1( - TabPanel$1.Tab, - {id: "filter-editor", label: "Inversion Fix Editor"}, - m$1(ConfigEditor, { - header: "Inversion Fix Editor", - text: devtools.filterFixesText, - apply: (text) => actions.applyDevInversionFixes(text), - reset: () => actions.resetDevInversionFixes() - }) - ), - m$1( - TabPanel$1.Tab, - {id: "advanced", label: "Advanced"}, - m$1( - "div", - {class: "buttons"}, - isMobile - ? null - : m$1( - Button, - { - class: "preview-design-button", - onclick: toggleDesign - }, - previewButtonText - ), - null - ) - ) - ), - m$1(Overlay$1, null) - ); - } - - var MessageTypeUItoBG; - (function (MessageTypeUItoBG) { - MessageTypeUItoBG["GET_DATA"] = "ui-bg-get-data"; - MessageTypeUItoBG["GET_DEVTOOLS_DATA"] = "ui-bg-get-devtools-data"; - MessageTypeUItoBG["SUBSCRIBE_TO_CHANGES"] = - "ui-bg-subscribe-to-changes"; - MessageTypeUItoBG["UNSUBSCRIBE_FROM_CHANGES"] = - "ui-bg-unsubscribe-from-changes"; - MessageTypeUItoBG["CHANGE_SETTINGS"] = "ui-bg-change-settings"; - MessageTypeUItoBG["SET_THEME"] = "ui-bg-set-theme"; - MessageTypeUItoBG["TOGGLE_ACTIVE_TAB"] = "ui-bg-toggle-active-tab"; - MessageTypeUItoBG["MARK_NEWS_AS_READ"] = "ui-bg-mark-news-as-read"; - MessageTypeUItoBG["MARK_NEWS_AS_DISPLAYED"] = - "ui-bg-mark-news-as-displayed"; - MessageTypeUItoBG["LOAD_CONFIG"] = "ui-bg-load-config"; - MessageTypeUItoBG["APPLY_DEV_DYNAMIC_THEME_FIXES"] = - "ui-bg-apply-dev-dynamic-theme-fixes"; - MessageTypeUItoBG["RESET_DEV_DYNAMIC_THEME_FIXES"] = - "ui-bg-reset-dev-dynamic-theme-fixes"; - MessageTypeUItoBG["APPLY_DEV_INVERSION_FIXES"] = - "ui-bg-apply-dev-inversion-fixes"; - MessageTypeUItoBG["RESET_DEV_INVERSION_FIXES"] = - "ui-bg-reset-dev-inversion-fixes"; - MessageTypeUItoBG["APPLY_DEV_STATIC_THEMES"] = - "ui-bg-apply-dev-static-themes"; - MessageTypeUItoBG["RESET_DEV_STATIC_THEMES"] = - "ui-bg-reset-dev-static-themes"; - MessageTypeUItoBG["COLOR_SCHEME_CHANGE"] = "ui-bg-color-scheme-change"; - MessageTypeUItoBG["HIDE_HIGHLIGHTS"] = "ui-bg-hide-highlights"; - })(MessageTypeUItoBG || (MessageTypeUItoBG = {})); - var MessageTypeBGtoUI; - (function (MessageTypeBGtoUI) { - MessageTypeBGtoUI["CHANGES"] = "bg-ui-changes"; - })(MessageTypeBGtoUI || (MessageTypeBGtoUI = {})); - var DebugMessageTypeBGtoUI; - (function (DebugMessageTypeBGtoUI) { - DebugMessageTypeBGtoUI["CSS_UPDATE"] = "debug-bg-ui-css-update"; - DebugMessageTypeBGtoUI["UPDATE"] = "debug-bg-ui-update"; - })(DebugMessageTypeBGtoUI || (DebugMessageTypeBGtoUI = {})); - var MessageTypeBGtoCS; - (function (MessageTypeBGtoCS) { - MessageTypeBGtoCS["ADD_CSS_FILTER"] = "bg-cs-add-css-filter"; - MessageTypeBGtoCS["ADD_DYNAMIC_THEME"] = "bg-cs-add-dynamic-theme"; - MessageTypeBGtoCS["ADD_STATIC_THEME"] = "bg-cs-add-static-theme"; - MessageTypeBGtoCS["ADD_SVG_FILTER"] = "bg-cs-add-svg-filter"; - MessageTypeBGtoCS["CLEAN_UP"] = "bg-cs-clean-up"; - MessageTypeBGtoCS["FETCH_RESPONSE"] = "bg-cs-fetch-response"; - MessageTypeBGtoCS["UNSUPPORTED_SENDER"] = "bg-cs-unsupported-sender"; - })(MessageTypeBGtoCS || (MessageTypeBGtoCS = {})); - var DebugMessageTypeBGtoCS; - (function (DebugMessageTypeBGtoCS) { - DebugMessageTypeBGtoCS["RELOAD"] = "debug-bg-cs-reload"; - })(DebugMessageTypeBGtoCS || (DebugMessageTypeBGtoCS = {})); - var MessageTypeCStoBG; - (function (MessageTypeCStoBG) { - MessageTypeCStoBG["COLOR_SCHEME_CHANGE"] = "cs-bg-color-scheme-change"; - MessageTypeCStoBG["DARK_THEME_DETECTED"] = "cs-bg-dark-theme-detected"; - MessageTypeCStoBG["DARK_THEME_NOT_DETECTED"] = - "cs-bg-dark-theme-not-detected"; - MessageTypeCStoBG["FETCH"] = "cs-bg-fetch"; - MessageTypeCStoBG["DOCUMENT_CONNECT"] = "cs-bg-document-connect"; - MessageTypeCStoBG["DOCUMENT_FORGET"] = "cs-bg-document-forget"; - MessageTypeCStoBG["DOCUMENT_FREEZE"] = "cs-bg-document-freeze"; - MessageTypeCStoBG["DOCUMENT_RESUME"] = "cs-bg-document-resume"; - })(MessageTypeCStoBG || (MessageTypeCStoBG = {})); - var DebugMessageTypeCStoBG; - (function (DebugMessageTypeCStoBG) { - DebugMessageTypeCStoBG["LOG"] = "debug-cs-bg-log"; - })(DebugMessageTypeCStoBG || (DebugMessageTypeCStoBG = {})); - var MessageTypeCStoUI; - (function (MessageTypeCStoUI) { - MessageTypeCStoUI["EXPORT_CSS_RESPONSE"] = "cs-ui-export-css-response"; - })(MessageTypeCStoUI || (MessageTypeCStoUI = {})); - var MessageTypeUItoCS; - (function (MessageTypeUItoCS) { - MessageTypeUItoCS["EXPORT_CSS"] = "ui-cs-export-css"; - })(MessageTypeUItoCS || (MessageTypeUItoCS = {})); - - class Connector { - changeSubscribers; - constructor() { - this.changeSubscribers = new Set(); - } - async sendRequest(type, data) { - return new Promise((resolve, reject) => { - chrome.runtime.sendMessage({type, data}, ({data, error}) => { - if (error) { - reject(error); - } else { - resolve(data); - } - }); - }); - } - async firefoxSendRequestWithResponse(type, data) { - return new Promise((resolve, reject) => { - const dataPort = chrome.runtime.connect({name: type}); - dataPort.onDisconnect.addListener(() => reject()); - dataPort.onMessage.addListener(({data, error}) => { - if (error) { - reject(error); - } else { - resolve(data); - } - dataPort.disconnect(); - }); - data && dataPort.postMessage({data}); - }); - } - async getData() { - return await this.sendRequest(MessageTypeUItoBG.GET_DATA); - } - async getDevToolsData() { - return await this.sendRequest(MessageTypeUItoBG.GET_DEVTOOLS_DATA); - } - onChangesReceived = ({type, data}) => { - if (type === MessageTypeBGtoUI.CHANGES) { - this.changeSubscribers.forEach((callback) => callback(data)); - } - }; - subscribeToChanges(callback) { - this.changeSubscribers.add(callback); - if (this.changeSubscribers.size === 1) { - chrome.runtime.onMessage.addListener(this.onChangesReceived); - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.SUBSCRIBE_TO_CHANGES - }); - } - } - async setShortcut(command, shortcut) { - return null; - } - changeSettings(settings) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.CHANGE_SETTINGS, - data: settings - }); - } - setTheme(theme) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.SET_THEME, - data: theme - }); - } - toggleActiveTab() { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.TOGGLE_ACTIVE_TAB, - data: {} - }); - } - markNewsAsRead(ids) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.MARK_NEWS_AS_READ, - data: ids - }); - } - markNewsAsDisplayed(ids) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.MARK_NEWS_AS_DISPLAYED, - data: ids - }); - } - loadConfig(options) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.LOAD_CONFIG, - data: options - }); - } - async applyDevDynamicThemeFixes(text) { - return await this.sendRequest( - MessageTypeUItoBG.APPLY_DEV_DYNAMIC_THEME_FIXES, - text - ); - } - resetDevDynamicThemeFixes() { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.RESET_DEV_DYNAMIC_THEME_FIXES - }); - } - async applyDevInversionFixes(text) { - return await this.sendRequest( - MessageTypeUItoBG.APPLY_DEV_INVERSION_FIXES, - text - ); - } - resetDevInversionFixes() { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.RESET_DEV_INVERSION_FIXES - }); - } - async applyDevStaticThemes(text) { - return await this.sendRequest( - MessageTypeUItoBG.APPLY_DEV_STATIC_THEMES, - text - ); - } - resetDevStaticThemes() { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.RESET_DEV_STATIC_THEMES - }); - } - async hideHighlights(ids) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.HIDE_HIGHLIGHTS, - data: ids - }); - } - disconnect() { - if (this.changeSubscribers.size > 0) { - this.changeSubscribers.clear(); - chrome.runtime.onMessage.removeListener(this.onChangesReceived); - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.UNSUBSCRIBE_FROM_CHANGES - }); - } - } - } - - function renderBody(data, devToolsData, actions) { - sync( - document.body, - m$1(Body, {data: data, devtools: devToolsData, actions: actions}) - ); - } - async function start() { - const connector = new Connector(); - window.addEventListener("unload", () => connector.disconnect(), { - passive: true - }); - let [data, devToolsData] = await Promise.all([ - connector.getData(), - connector.getDevToolsData() - ]); - renderBody(data, devToolsData, connector); - connector.subscribeToChanges(async (data_) => { - data = data_; - devToolsData = await connector.getDevToolsData(); - renderBody(data, devToolsData, connector); - }); - } - start(); - { - chrome.runtime.onMessage.addListener((message, _, sendResponse) => { - if (message === "getExtensionPageTabMV3_ping") { - sendResponse("getExtensionPageTabMV3_pong"); - } - }); - } -})(); diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/devtools/style.css b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/devtools/style.css deleted file mode 100644 index bc5bde3..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/devtools/style.css +++ /dev/null @@ -1,1298 +0,0 @@ -@font-face { - font-family: "Open Sans"; - src: url("../assets/fonts/OpenSans-Regular.ttf") format("truetype"); - font-weight: normal; - font-style: normal; -} -@font-face { - font-family: "Open Sans"; - src: url("../assets/fonts/OpenSans-SemiBold.ttf") format("truetype"); - font-weight: bold; - font-style: normal; -} -@font-face { - font-family: "Open Sans"; - src: url("../assets/fonts/OpenSans-Light.ttf") format("truetype"); - font-weight: 100; - font-style: normal; -} -.button { - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - color: #ffffff; - cursor: pointer; - display: inline-block; - height: 1.5rem; - line-height: 0.75rem; - min-width: 1.5rem; - outline: none; - overflow: hidden; - padding: 0; - text-align: center; - transition: background-color 250ms; - -moz-user-select: none; - user-select: none; -} -.button:hover { - background-color: #193945; - transition: background-color 125ms; -} -.button:active { - background-color: #316e7d; -} -.button__wrapper { - height: 100%; - width: 100%; -} -.check-button .checkbox { - width: calc(100% - 2 * 0.125rem); -} -.check-button .checkbox__checkmark { - background-color: #316e7d; -} -.check-button .checkbox__checkmark::before, -.check-button .checkbox__checkmark::after { - display: none; -} -.check-button .checkbox__content { - align-items: center; - display: flex; - flex: auto; - height: 1.5rem; - justify-content: center; - -moz-user-select: none; - user-select: none; -} -.check-button .checkbox__input:checked ~ * { - color: #ffffff; -} -.check-button .checkbox__input:checked ~ .checkbox__checkmark { - background-image: url('data:image/svg+xml;utf8,'); - background-position: center; - background-repeat: no-repeat; - background-size: 1rem; -} -.check-button__description { - display: inline-block; - font-size: 0.625rem; - line-height: 0.875rem; - text-align: center; - -moz-user-select: none; - user-select: none; - width: 100%; -} -.checkbox { - align-items: stretch; - background-color: #141e24; - border: 0.125rem solid #316e7d; - cursor: pointer; - display: inline-flex; - flex: none; - flex-direction: row; - height: 1.5rem; - transition: background-color 250ms; - width: 1.5rem; -} -.checkbox:hover { - background-color: #193945; - transition: background-color 125ms; -} -.checkbox__input { - display: none; -} -.checkbox__checkmark { - display: inline-block; - height: 100%; - position: relative; - width: 1.5rem; -} -.checkbox__checkmark::before, -.checkbox__checkmark::after { - background-color: #316e7d; - content: ""; - display: inline-block; - height: 0.1875rem; - left: 0.1875rem; - position: absolute; - top: 0.6375rem; - transition: all 125ms; - width: 1.125rem; -} -.checkbox__checkmark::before { - transform: skewY(45deg); -} -.checkbox__checkmark::after { - transform: skewY(-45deg); -} -.checkbox__input:checked + .checkbox__checkmark::before, -.checkbox__input:checked + .checkbox__checkmark::after { - background-color: #ffffff; -} -.checkbox__input:checked + .checkbox__checkmark::before { - top: 0.825rem; - width: 0.375rem; -} -.checkbox__input:checked + .checkbox__checkmark::after { - left: 0.5625rem; - width: 0.75rem; -} -.control-group { - align-items: stretch; - display: inline-flex; - flex-direction: column; - width: 100%; -} -.control-group__control { - height: 1.75rem; -} -.control-group__description { - font-size: 0.625rem; - line-height: 0.875rem; - text-align: center; - -moz-user-select: none; - user-select: none; -} -.dropdown { - display: inline-block; - height: 1.5rem; - position: relative; - -moz-user-select: none; - user-select: none; - width: 100%; -} -.dropdown__selected { - align-items: center; - background-color: #316e7d; - background-image: url('data:image/svg+xml;utf8,'); - background-position: center right 0.25rem; - background-repeat: no-repeat; - background-size: 1rem; - color: #ffffff; - display: inline-flex; - height: 1.25rem; - justify-content: center; - line-height: 1.25rem; - margin-top: 0.125rem; - position: absolute; - text-align: center; - width: 100%; -} -.dropdown__selected__text { - display: inline-block; - max-width: calc(100% - 2.5rem); - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.dropdown__list { - background-color: #141e24; - border: 0.125rem solid #316e7d; - border-top: none; - box-shadow: 0 0 0.25rem black; - box-sizing: border-box; - display: none; - margin-top: 0.125rem; - overflow: hidden; - position: absolute; - width: 100%; -} -.dropdown__list__item { - align-items: center; - background-color: #141e24; - color: #ffffff; - display: inline-flex; - justify-content: center; - min-height: 1.25rem; - text-align: center; - width: 100%; -} -.dropdown__list__item:hover { - background-color: #193945; - transition: background-color 125ms; -} -.dropdown__list__item--selected { - overflow: hidden; - visibility: hidden; - white-space: nowrap; -} -.dropdown--open .dropdown__list { - display: inline-block; - margin-top: 0rem; - z-index: 1; -} -.dropdown--open .dropdown__list__item { - min-height: 1.5rem; -} -.dropdown--open .dropdown__selected { - height: 1.5rem; - margin-top: 0rem; - z-index: 2; -} -.preview .dropdown { - cursor: pointer; -} -.message-box { - background-color: #141e24; - border-bottom: 0.125rem solid #316e7d; - border-top: 0.125rem solid #316e7d; - display: flex; - flex-direction: column; - padding: 0.75rem; -} -.message-box__caption { - text-align: center; -} -.message-box__buttons { - display: flex; - flex-direction: row; - justify-content: center; - margin-top: 0.5rem; -} -.message-box__button { - min-width: 4rem; -} -.message-box__button:not(:first-child) { - margin-left: 0.5rem; -} -.message-box__button-ok { - border-color: gray; -} -.multi-switch { - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - color: #ffffff; - display: inline-flex; - height: 1.5rem; - position: relative; - -moz-user-select: none; - user-select: none; -} -.multi-switch__option { - align-items: center; - cursor: pointer; - display: inline-flex; - justify-content: center; - height: 100%; - overflow: hidden; - position: relative; - transition: background-color 250ms; - white-space: nowrap; - width: 50%; -} -.multi-switch__option:hover:not(.multi-switch__option--selected) { - background-color: #193945; -} -.multi-switch__highlight { - background-color: #316e7d; - display: inline-block; - height: 100%; - left: 0; - position: absolute; - top: 0; - transition: - left 125ms, - width 125ms; - width: 0; -} -.overlay { - align-items: center; - background-color: rgba(20, 30, 36, 0.5); - flex-direction: column; - display: inline-flex; - height: 100%; - justify-content: center; - left: 0; - position: fixed; - top: 0; - width: 100%; - z-index: 2; -} -.overlay:empty { - display: none; -} -.shortcut { - color: #53a1b3; - cursor: pointer; - display: inline-block; - font-size: 0.625rem; - line-height: 0.875rem; - outline: none; - text-align: center; - text-decoration: none; - white-space: pre; -} -.shortcut:hover { - text-decoration: underline; -} -.shortcut--edit { - color: #ffffff; -} -.shortcut::before { - content: "✎"; - direction: rtl; - display: inline-block; - line-height: 0.875rem; - visibility: hidden; - width: 0; -} -.shortcut:hover::before, -.shortcut--edit::before { - visibility: visible; -} -.tab-panel { - align-items: stretch; - display: flex; - flex-direction: column; - min-height: 0; -} -.tab-panel__button { - border-bottom: 0.125rem solid #316e7d; - border-left: none; - border-right: none; - border-top: none; - box-sizing: border-box; - color: #316e7d; - font-size: 0.875rem; - font-weight: bold; - height: 1.625rem; - padding: 0 0.625rem; - white-space: pre; -} -.tab-panel__button:hover { - color: #53a1b3; -} -.tab-panel__button:active { - background-color: #193945; -} -.tab-panel__button--active { - border-bottom: none; - border-left: 0.125rem solid #316e7d; - border-right: 0.125rem solid #316e7d; - border-top: 0.125rem solid #316e7d; - color: #e96c4c; - padding: 0 0.5rem; -} -.tab-panel__button--active:hover { - color: #e96c4c; -} -.tab-panel__buttons { - display: flex; - flex: none; - flex-direction: row; - justify-content: center; -} -.tab-panel__buttons::before, -.tab-panel__buttons::after { - border-bottom: 0.125rem solid #316e7d; - content: ""; - flex: auto; -} -.tab-panel__tabs { - display: flex; - flex: auto; - flex-direction: row; - margin-top: 0.75rem; - min-height: 0; -} -.tab-panel__tab { - background-color: #141e24; - display: flex; - opacity: 0; - overflow: hidden; - pointer-events: none; - transition: - width 250ms, - opacity 125ms; - width: 0; -} -.tab-panel__tab--active { - opacity: 1; - pointer-events: all; - transition: - width 250ms, - opacity 250ms; - width: 100%; -} -.select { - display: inline-flex; - flex-direction: column; - position: relative; -} -.select__line { - display: inline-flex; - flex-direction: row; -} -.select__textbox.textbox { - border-right: none; - flex: auto; - width: 100%; -} -.select__expand { - border-left: none; - flex: none; -} -.select__expand__icon { - display: inline-block; - height: 100%; - position: relative; - width: 100%; -} -.select__expand__icon::before, -.select__expand__icon::after { - background-color: #ffffff; - content: ""; - display: inline-block; - height: 0.1875rem; - position: absolute; - top: 0.75rem; - width: 0.5625rem; - z-index: 1; -} -.select__expand__icon::before { - left: 0.1875rem; - transform: skewY(45deg); -} -.select__expand__icon::after { - left: 0.75rem; - transform: skewY(-45deg); -} -.select__list { - background-color: #141e24; - border-bottom: 0.125rem solid #316e7d; - border-left: 0.125rem solid #316e7d; - border-right: 0.125rem solid #316e7d; - box-sizing: border-box; - left: 0; - max-height: 0; - overflow-x: hidden; - overflow-y: auto; - position: absolute; - top: calc(100% - 0.125rem); - transition: max-height 125ms; - width: 100%; - z-index: 999; -} -.select__list--expanded { - max-height: 12rem; - transition: max-height 500ms; -} -.select__list--short { - overflow: hidden; -} -.select__option { - align-items: center; - background-color: #141e24; - cursor: pointer; - display: flex; - flex: none; - height: 1.5rem; - flex-direction: row; - padding-left: 0.375rem; -} -.select__option:hover { - background-color: #193945; -} -.slider { - display: inline-block; - height: 1.5rem; - position: relative; - touch-action: none; - width: 100%; -} -.slider__track { - background-color: #193945; - display: inline-block; - height: 0.625rem; - margin-left: 0.25rem; - margin-top: 0.4375rem; - position: absolute; - width: calc(100% - 0.5rem); -} -.slider__track__fill { - background-color: #316e7d; - display: inline-block; - height: 100%; - position: absolute; -} -.slider__track__fill::before { - background-color: #316e7d; - content: ""; - height: 100%; - position: absolute; - right: 100%; - width: 0.25rem; -} -.slider__track::before, -.slider__track::after { - background-color: #193945; - content: ""; - height: 100%; - position: absolute; - width: 0.25rem; -} -.slider__track::before { - right: 100%; -} -.slider__track::after { - left: 100%; -} -.slider__thumb-wrapper { - margin-left: 0.25rem; - position: absolute; - width: calc(100% - 0.5rem); -} -.slider__thumb { - background-color: #ffffff; - cursor: pointer; - display: inline-block; - height: 1.25rem; - margin-left: -0.25rem; - margin-top: 0.125rem; - position: absolute; - width: 0.5rem; -} -.slider__thumb__value { - color: #ffffff; - cursor: default; - left: calc(100% + 0.75rem / 2); - line-height: 1.25rem; - position: absolute; - -moz-user-select: none; - user-select: none; -} -.slider__thumb__value--flip { - left: initial; - right: calc(100% + 0.75rem / 2); -} -.slider--active .slider__thumb { - box-shadow: 0 0 0.25rem black; - height: 1.5rem; - margin-top: 0rem; -} -.slider--active .slider__thumb__value { - line-height: 1.5rem; -} -.slider--active .slider__track { - height: 0.75rem; - margin-top: 0.375rem; -} -.slider__value { - display: none; -} -.text-list { - border-top: 0.125rem solid #316e7d; - margin-bottom: 0.0625rem; - min-width: 1.5rem; - overflow-x: hidden; - overflow-y: auto; -} -.text-list__textbox.textbox { - border-bottom: 0.0625rem solid #316e7d; - border-left: 0.125rem solid #316e7d; - border-right: 0.125rem solid #316e7d; - border-top: none; - box-sizing: border-box; - flex: none; - height: 1.5625rem; - width: 100%; -} -.text-list__textbox.textbox:last-child { - border-bottom: 0.125rem solid #316e7d; -} -.text-list::-webkit-scrollbar { - width: 1.25rem; -} -.text-list::-webkit-scrollbar-thumb { - border-left: 0.5rem solid #141e24; -} -.textbox { - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - color: #53a1b3; - height: 1.5rem; - line-height: 1.5rem; - outline: none; - overflow: hidden; - padding: 0; - text-indent: 0.375rem; - transition: background-color 250ms; -} -.textbox:hover, -.textbox:focus { - background-color: #193945; - transition: background-color 125ms; -} -.textbox:focus { - color: #ffffff; -} -.textbox::placeholder { - color: #316e7d; -} -input[type="time"]::-webkit-calendar-picker-indicator { - filter: invert(54%) sepia(3%) saturate(3931%) hue-rotate(153deg) - brightness(115%) contrast(75%); -} -.time-range-picker { - display: inline-flex; - flex: auto; -} -.time-range-picker__input { - text-align: center; - text-indent: 0; - width: 100%; - background-color: #141e24; -} -.time-range-picker__input--start { - border-right: none; -} -.time-range-picker__input--end { - border-left: 0.0625rem solid #316e7d; -} -.toggle { - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - color: #ffffff; - display: inline-flex; - height: 1.5rem; - position: relative; - -moz-user-select: none; - user-select: none; -} -.toggle__btn { - align-items: center; - cursor: pointer; - display: inline-flex; - justify-content: center; - height: 100%; - overflow: hidden; - position: relative; - transition: background-color 250ms; - white-space: nowrap; - width: 50%; -} -.toggle__btn:hover:not(.toggle__btn--active) { - background-color: #193945; -} -.toggle::before { - background-color: #316e7d; - content: ""; - display: inline-block; - height: 100%; - left: 50%; - position: absolute; - top: 0; - transition: left 125ms; - width: 50%; -} -.toggle--checked::before { - left: 0; -} -.updown { - align-items: stretch; - display: flex; - flex-direction: column; - -moz-user-select: none; - user-select: none; -} -.updown__line { - display: flex; - flex-direction: row; -} -.updown__line > :not(:first-child) { - margin-left: 0.5rem; -} -.updown__icon { - display: inline-block; - height: 100%; - position: relative; - width: 100%; -} -.updown__icon::before, -.updown__icon::after { - background-color: #ffffff; - content: ""; - display: inline-block; - height: 0.5625rem; - position: absolute; - width: 0.1875rem; -} -.updown__icon::before { - top: 0.1875rem; -} -.updown__icon::after { - top: 0.75rem; -} -.updown__icon-up::before { - left: 0.75rem; - transform: skewX(45deg); -} -.updown__icon-up::after { - left: 0.75rem; - transform: skewX(-45deg); -} -.updown__icon-down::before { - left: 0.5625rem; - transform: skewX(-45deg); -} -.updown__icon-down::after { - left: 0.5625rem; - transform: skewX(45deg); -} -.updown__button--disabled { - pointer-events: none; -} -.updown__button--disabled:hover, -.updown__button--disabled:active { - background-color: #141e24; -} -.updown__button--disabled .updown__icon::before, -.updown__button--disabled .updown__icon::after { - background-color: #316e7d; -} -.updown__value-text { - font-size: 0.625rem; - line-height: 0.875rem; - text-align: center; - white-space: nowrap; -} -.track { - align-items: center; - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - display: inline-flex; - flex: auto; - flex-direction: row; - height: 1.5rem; - justify-content: center; - overflow: hidden; - position: relative; - transition: background-color 250ms; - -moz-user-select: none; - user-select: none; -} -.track:hover { - background-color: #193945; - transition: background-color 125ms; -} -.track--clickable { - cursor: pointer; -} -.track__value { - background-color: #316e7d; - height: 100%; - left: 0; - position: absolute; - top: 0; - transition: width 125ms; -} -.track__label { - color: #ffffff; - display: inline-block; - line-height: 0.75rem; - pointer-events: none; - position: relative; - white-space: nowrap; - z-index: 1; -} -.hsb-picker { - display: flex; - flex-direction: row; - padding: 0.5rem; - touch-action: none; -} -.hsb-picker__sb-container { - cursor: pointer; - height: 7.5rem; - position: relative; - -webkit-tap-highlight-color: transparent; - width: 7.5rem; -} -.hsb-picker__hue-container { - cursor: pointer; - height: 7.5rem; - margin-left: 0.5rem; - position: relative; - -webkit-tap-highlight-color: transparent; - width: 0.75rem; -} -.hsb-picker__sb-canvas { - height: 100%; - width: 100%; -} -.hsb-picker__hue-canvas { - height: 100%; - width: 100%; -} -.hsb-picker__hue-cursor, -.hsb-picker__sb-cursor { - border-radius: 50%; - box-shadow: 0 0 0 0.125rem #ffffff; - display: inline-block; - height: 0.75rem; - margin-top: -0.375rem; - position: absolute; - width: 0.75rem; - z-index: 2; -} -.hsb-picker__sb-cursor { - margin-left: -0.375rem; -} -.color-picker { - height: 1.5rem; - position: relative; - width: 100%; -} -.color-picker__wrapper { - background-color: #141e24; - display: inline-flex; - flex-direction: column; - left: 0; - overflow: hidden; - position: absolute; - top: 0; - width: 100%; -} -.color-picker--focused .color-picker__wrapper { - border: 0.125rem solid #316e7d; - box-sizing: border-box; - z-index: 1; -} -.color-picker__input { - background-color: #316e7d; - border: none; - box-sizing: border-box; - color: #ffffff; - height: 1.25rem; - margin-top: 0.125rem; - text-align: center; - width: 100%; -} -.color-picker--focused .color-picker__input { - margin-top: 0; -} -.color-picker__preview { - cursor: pointer; - display: inline-block; - height: 1rem; - left: 0.25rem; - position: absolute; - top: 0.25rem; - width: 1rem; -} -.color-picker--focused .color-picker__preview { - left: 0.125rem; - top: 0.125rem; -} -.color-picker__reset { - background-image: url('data:image/svg+xml;utf8,'); - background-position: 0 0; - background-repeat: no-repeat; - background-size: 1rem; - cursor: pointer; - display: inline-block; - height: 1rem; - position: absolute; - right: 0.25rem; - top: 0.25rem; - width: 1rem; -} -.color-picker--focused .color-picker__reset { - right: 0.125rem; - top: 0.125rem; -} -.color-picker__textbox-line { - width: 100%; -} -.color-picker__hsb-line { - display: none; - width: 100%; -} -.color-picker--focused .color-picker__hsb-line { - border-color: #316e7d; - display: block; -} -.color-dropdown { - height: 1.5rem; - position: relative; - width: 100%; -} -.color-dropdown__options { - width: 100%; -} -.color-dropdown__picker { - height: 100%; - position: absolute; - right: 0; - top: 0; - width: 100%; -} -.color-dropdown__picker--hidden { - display: none; -} -.nav-button { - background-image: url('data:image/svg+xml;utf8,'); - background-position: center right 0.25rem; - background-repeat: no-repeat; - background-size: 1rem; - width: calc(100% - 2 * 0.125rem); -} -.nav-button__content { - align-items: center; - display: inline-flex; - flex-direction: row; - height: 100%; -} -.reset-button { - width: calc(100% - 2 * 0.125rem); -} -.reset-button__content { - align-items: center; - display: inline-flex; - flex-direction: row; - height: 100%; -} -.reset-button__icon { - background-image: url('data:image/svg+xml;utf8,'); - background-position: 0 0; - background-size: 1rem; - display: inline-block; - height: 1rem; - margin-right: 0.125rem; - width: 1rem; -} -html { - background-color: #141e24; - color: #53a1b3; - color-scheme: dark; - font-family: - Open Sans, - Segoe UI, - Helvetica Neue, - Ubuntu, - sans-serif; - font-size: 16px; -} -body { - font-family: - Open Sans, - Segoe UI, - Helvetica Neue, - Ubuntu, - sans-serif; - font-size: 0.75rem; -} -input, -button { - font-family: - Open Sans, - Segoe UI, - Helvetica Neue, - Ubuntu, - sans-serif; - font-size: 0.75rem; -} -::-moz-selection { - background-color: #e96c4c; - color: #ffffff; -} -::selection { - background-color: #e96c4c; - color: #ffffff; -} -::-webkit-scrollbar { - background-color: #141e24; - width: 0.75rem; -} -::-webkit-scrollbar-thumb { - background-color: #193945; -} -::-webkit-scrollbar-thumb:hover { - background-color: #255461; -} -::-webkit-scrollbar-thumb:active { - background-color: #316e7d; -} -::-webkit-scrollbar-corner { - background-color: #141e24; -} -* { - scrollbar-color: #193945 #141e24; -} -.settings-tab-panel { - display: flex; - flex-direction: row; - gap: 1rem; - height: 100%; -} -.settings-tab-panel__buttons { - display: flex; - flex-direction: column; - flex: none; - min-width: 10rem; -} -.settings-tab-panel__button { - border: none; - box-shadow: none; - color: #53a1b3; - height: 1.75rem; - text-align: left; -} -.settings-tab-panel__button--active { - color: #e96c4c; - font-weight: bold; -} -.settings-tab-panel__button__icon { - align-items: center; - display: inline-flex; - height: 1rem; - justify-content: center; - margin-right: 0.5rem; - width: 1rem; -} -.settings-tab-panel__button__icon svg { - display: inline-block; - height: 100%; - width: 100%; -} -.settings-tab-panel__button .button__wrapper { - align-items: center; - display: flex; - flex-direction: row; -} -.settings-tab-panel__tabs { - flex: auto; - overflow: hidden; -} -.settings-tab-panel__tab { - display: none; -} -.settings-tab-panel__tab--active { - display: block; -} -.settings-tab-panel--vertical { - flex-direction: column; -} -.settings-tab-panel--vertical .settings-tab-panel__buttons { - column-gap: 0.5rem; - display: flex; - flex-direction: row; - flex-wrap: wrap; - max-width: 16rem; -} -.settings-tab-panel--vertical .settings-tab-panel__button__icon { - display: none; -} -@media screen and (max-width: 30rem) { - .settings-tab-panel { - flex-direction: column; - } - .settings-tab-panel__buttons { - column-gap: 0.5rem; - display: flex; - flex-direction: row; - flex-wrap: wrap; - max-width: 16rem; - } - .settings-tab-panel__button__icon { - display: none; - } -} -html { - height: 100%; - margin: 0; -} -body { - align-items: flex-start; - box-sizing: border-box; - display: flex; - flex-direction: column; - gap: 0.5rem; - height: 100%; - margin: 0; - padding: 1rem; -} -header { - align-items: stretch; - box-sizing: content-box; - display: flex; - flex: none; - flex-direction: row; - flex-wrap: nowrap; - justify-content: flex-start; -} -#logo { - display: inline-block; - font-size: 0.875rem; - height: 1.5rem; - width: 15rem; -} -#title { - align-items: stretch; - display: inline-flex; - flex-direction: row; - font-size: 2rem; - font-weight: 100; - line-height: 1.5rem; - height: 1.5rem; - margin: 0 0 0 0.5rem; - text-transform: uppercase; - transform: translateY(-0.0625rem); -} -.config-editor { - display: flex; - flex-direction: column; - height: 100%; -} -.sub-title { - flex: none; - font-size: 0.75rem; - font-weight: normal; - margin: 0.3rem 0 0.75rem 0; - text-transform: uppercase; -} -.editor { - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: border-box; - color: #53a1b3; - flex: auto; - font-family: monospace; - font-size: 0.75rem; - min-width: 9rem; - outline: none; - padding: 0.375rem; - resize: none; - white-space: pre; - width: 100%; -} -.editor::placeholder { - color: #316e7d; -} -.editor:hover { - background-color: #15252c; -} -.editor:hover::-webkit-scrollbar, -.editor:hover::-webkit-scrollbar-corner { - background-color: #15252c; -} -.editor:focus { - background-color: #15252c; - color: #7eb9c6; -} -.editor:focus::-webkit-scrollbar, -.editor:focus::-webkit-scrollbar-corner { - background-color: #15252c; -} -.error-text { - color: #db4245; - flex: none; - font-family: monospace; - white-space: pre; -} -.buttons { - display: flex; - flex: none; - flex-direction: row; - justify-content: flex-start; - margin-top: 0.5rem; - width: 100%; -} -.buttons > :not(:first-child) { - margin-left: 0.5rem; -} -.buttons .button { - min-width: 3rem; - max-width: 6rem; - width: 100%; -} -.description { - flex: none; - margin: 0.75rem 0 0 0; - text-align: left; - white-space: wrap; -} -.description a { - color: #53a1b3; -} -@media screen and (max-width: 36rem) { - #title { - display: none; - } -} -@media screen and (max-height: 33rem) { - header, - .description { - display: none; - } - .sub-title { - margin-top: 0.5rem; - } -} -.message-box { - border: 0.125rem solid #316e7d; -} -.preview-design-button { - padding: 0 0.5rem; -} -.settings-tab-panel { - height: 100%; - overflow: hidden; - width: 100%; -} -.settings-tab-panel__tab { - height: 100%; -} -.settings-tab-panel__button__icon { - display: none; -} -.settings-tab-panel--vertical { - gap: 0; -} -.dynamic-mode-editor { - height: 100%; -} -.dynamic-per-site { - display: grid; - gap: 0.5rem; - grid: "search editor" 1.75rem "list editor" auto / 10rem auto; - height: 100%; - overflow: hidden; -} -.dynamic-per-site__search-wrapper { - grid-area: search; -} -.dynamic-per-site__search-input { - width: calc(100% - 2 * 0.125rem); -} -.dynamic-per-site__urls { - grid-area: list; - overflow: auto; -} -.dynamic-per-site__urls li { - list-style-type: none; -} -.dynamic-per-site__url { - border: none; - color: #53a1b3; - height: 1.5rem; - text-align: left; - width: 100%; -} -.dynamic-per-site__url--active { - color: #e96c4c; - font-weight: bold; -} -.dynamic-per-site .config-editor { - grid-area: editor; -} -.dynamic-per-site__add-fix__button { - padding: 0 0.5rem; -} -.dynamic-per-site__add-fix__description { - margin: 0.5rem 0 0 0; -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/options/index.html b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/options/index.html deleted file mode 100644 index ed1c49c..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/options/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Dark Reader settings - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/options/index.js b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/options/index.js deleted file mode 100644 index 06be6bd..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/options/index.js +++ /dev/null @@ -1,4907 +0,0 @@ -(function () { - "use strict"; - - /* malevic@0.20.2 - Aug 10, 2024 */ - function m$1(tagOrComponent, props, ...children) { - props = props || {}; - if (typeof tagOrComponent === "string") { - const tag = tagOrComponent; - return {type: tag, props, children}; - } - if (typeof tagOrComponent === "function") { - const component = tagOrComponent; - return {type: component, props, children}; - } - throw new Error("Unsupported spec type"); - } - - /* malevic@0.20.2 - Aug 10, 2024 */ - function createPluginsStore() { - const plugins = []; - return { - add(plugin) { - plugins.push(plugin); - return this; - }, - apply(props) { - let result; - let plugin; - const usedPlugins = new Set(); - for (let i = plugins.length - 1; i >= 0; i--) { - plugin = plugins[i]; - if (usedPlugins.has(plugin)) { - continue; - } - result = plugin(props); - if (result != null) { - return result; - } - usedPlugins.add(plugin); - } - return null; - }, - delete(plugin) { - for (let i = plugins.length - 1; i >= 0; i--) { - if (plugins[i] === plugin) { - plugins.splice(i, 1); - break; - } - } - return this; - }, - empty() { - return plugins.length === 0; - } - }; - } - function iterateComponentPlugins(type, pairs, iterator) { - pairs - .filter(([key]) => type[key]) - .forEach(([key, plugins]) => { - return type[key].forEach((plugin) => iterator(plugins, plugin)); - }); - } - function addComponentPlugins(type, pairs) { - iterateComponentPlugins(type, pairs, (plugins, plugin) => - plugins.add(plugin) - ); - } - function deleteComponentPlugins(type, pairs) { - iterateComponentPlugins(type, pairs, (plugins, plugin) => - plugins.delete(plugin) - ); - } - - const XHTML_NS = "http://www.w3.org/1999/xhtml"; - const SVG_NS = "http://www.w3.org/2000/svg"; - - const PLUGINS_CREATE_ELEMENT = Symbol(); - const pluginsCreateElement = createPluginsStore(); - function createElement(spec, parent) { - const result = pluginsCreateElement.apply({spec, parent}); - if (result) { - return result; - } - const tag = spec.type; - if (tag === "svg") { - return document.createElementNS(SVG_NS, "svg"); - } - const namespace = parent.namespaceURI; - if (namespace === XHTML_NS || namespace == null) { - return document.createElement(tag); - } - return document.createElementNS(namespace, tag); - } - - function classes$1(...args) { - const classes = []; - const process = (c) => { - if (!c) return; - if (typeof c === "string") { - classes.push(c); - } else if (Array.isArray(c)) { - c.forEach(process); - } else if (typeof c === "object") { - classes.push( - ...Object.keys(c).filter((key) => Boolean(c[key])) - ); - } - }; - args.forEach(process); - return classes.join(" "); - } - function setInlineCSSPropertyValue(element, prop, $value) { - if ($value != null && $value !== "") { - let value = String($value); - let important = ""; - if (value.endsWith("!important")) { - value = value.substring(0, value.length - 10); - important = "important"; - } - element.style.setProperty(prop, value, important); - } else { - element.style.removeProperty(prop); - } - } - - function isObject(value) { - return value != null && typeof value === "object"; - } - - const eventListeners = new WeakMap(); - function addEventListener(element, event, listener) { - let listeners; - if (eventListeners.has(element)) { - listeners = eventListeners.get(element); - } else { - listeners = new Map(); - eventListeners.set(element, listeners); - } - if (listeners.get(event) !== listener) { - if (listeners.has(event)) { - element.removeEventListener(event, listeners.get(event)); - } - element.addEventListener(event, listener); - listeners.set(event, listener); - } - } - function removeEventListener(element, event) { - if (!eventListeners.has(element)) { - return; - } - const listeners = eventListeners.get(element); - element.removeEventListener(event, listeners.get(event)); - listeners.delete(event); - } - - function setClassObject(element, classObj) { - const cls = Array.isArray(classObj) - ? classes$1(...classObj) - : classes$1(classObj); - if (cls) { - element.setAttribute("class", cls); - } else { - element.removeAttribute("class"); - } - } - function mergeValues(obj, old) { - const values = new Map(); - const newProps = new Set(Object.keys(obj)); - const oldProps = Object.keys(old); - oldProps - .filter((prop) => !newProps.has(prop)) - .forEach((prop) => values.set(prop, null)); - newProps.forEach((prop) => values.set(prop, obj[prop])); - return values; - } - function setStyleObject(element, styleObj, prev) { - let prevObj; - if (isObject(prev)) { - prevObj = prev; - } else { - prevObj = {}; - element.removeAttribute("style"); - } - const declarations = mergeValues(styleObj, prevObj); - declarations.forEach(($value, prop) => - setInlineCSSPropertyValue(element, prop, $value) - ); - } - function setEventListener(element, event, listener) { - if (typeof listener === "function") { - addEventListener(element, event, listener); - } else { - removeEventListener(element, event); - } - } - const specialAttrs = new Set([ - "key", - "oncreate", - "onupdate", - "onrender", - "onremove" - ]); - const PLUGINS_SET_ATTRIBUTE = Symbol(); - const pluginsSetAttribute = createPluginsStore(); - function getPropertyValue(obj, prop) { - return obj && obj.hasOwnProperty(prop) ? obj[prop] : null; - } - function syncAttrs(element, attrs, prev) { - const values = mergeValues(attrs, prev || {}); - values.forEach((value, attr) => { - if (!pluginsSetAttribute.empty()) { - const result = pluginsSetAttribute.apply({ - element, - attr, - value, - get prev() { - return getPropertyValue(prev, attr); - } - }); - if (result != null) { - return; - } - } - if (attr === "class" && isObject(value)) { - setClassObject(element, value); - } else if (attr === "style" && isObject(value)) { - const prevValue = getPropertyValue(prev, attr); - setStyleObject(element, value, prevValue); - } else if (attr.startsWith("on")) { - const event = attr.substring(2); - setEventListener(element, event, value); - } else if (specialAttrs.has(attr)); - else if (value == null || value === false) { - element.removeAttribute(attr); - } else { - element.setAttribute(attr, value === true ? "" : String(value)); - } - }); - } - - class LinkedList { - constructor(...items) { - this.nexts = new WeakMap(); - this.prevs = new WeakMap(); - this.first = null; - this.last = null; - items.forEach((item) => this.push(item)); - } - empty() { - return this.first == null; - } - push(item) { - if (this.empty()) { - this.first = item; - this.last = item; - } else { - this.nexts.set(this.last, item); - this.prevs.set(item, this.last); - this.last = item; - } - } - insertBefore(newItem, refItem) { - const prev = this.before(refItem); - this.prevs.set(newItem, prev); - this.nexts.set(newItem, refItem); - this.prevs.set(refItem, newItem); - prev && this.nexts.set(prev, newItem); - refItem === this.first && (this.first = newItem); - } - delete(item) { - const prev = this.before(item); - const next = this.after(item); - prev && this.nexts.set(prev, next); - next && this.prevs.set(next, prev); - item === this.first && (this.first = next); - item === this.last && (this.last = prev); - } - before(item) { - return this.prevs.get(item) || null; - } - after(item) { - return this.nexts.get(item) || null; - } - loop(iterator) { - if (this.empty()) { - return; - } - let current = this.first; - do { - if (iterator(current)) { - break; - } - } while ((current = this.after(current))); - } - copy() { - const list = new LinkedList(); - this.loop((item) => { - list.push(item); - return false; - }); - return list; - } - forEach(iterator) { - this.loop((item) => { - iterator(item); - return false; - }); - } - find(iterator) { - let result = null; - this.loop((item) => { - if (iterator(item)) { - result = item; - return true; - } - return false; - }); - return result; - } - map(iterator) { - const results = []; - this.loop((item) => { - results.push(iterator(item)); - return false; - }); - return results; - } - } - - function matchChildren(vnode, old) { - const oldChildren = old.children(); - const oldChildrenByKey = new Map(); - const oldChildrenWithoutKey = []; - oldChildren.forEach((v) => { - const key = v.key(); - if (key == null) { - oldChildrenWithoutKey.push(v); - } else { - oldChildrenByKey.set(key, v); - } - }); - const children = vnode.children(); - const matches = []; - const unmatched = new Set(oldChildren); - const keys = new Set(); - children.forEach((v) => { - let match = null; - let guess = null; - const key = v.key(); - if (key != null) { - if (keys.has(key)) { - throw new Error("Duplicate key"); - } - keys.add(key); - if (oldChildrenByKey.has(key)) { - guess = oldChildrenByKey.get(key); - } - } else if (oldChildrenWithoutKey.length > 0) { - guess = oldChildrenWithoutKey.shift(); - } - if (v.matches(guess)) { - match = guess; - } - matches.push([v, match]); - if (match) { - unmatched.delete(match); - } - }); - return {matches, unmatched}; - } - - function execute(vnode, old, vdom) { - const didMatch = vnode && old && vnode.matches(old); - if (didMatch && vnode.parent() === old.parent()) { - vdom.replaceVNode(old, vnode); - } else if (vnode) { - vdom.addVNode(vnode); - } - const context = vdom.getVNodeContext(vnode); - const oldContext = vdom.getVNodeContext(old); - if (old && !didMatch) { - old.detach(oldContext); - old.children().forEach((v) => execute(null, v, vdom)); - old.detached(oldContext); - } - if (vnode && !didMatch) { - vnode.attach(context); - vnode.children().forEach((v) => execute(v, null, vdom)); - vnode.attached(context); - } - if (didMatch) { - const result = vnode.update(old, context); - if (result !== vdom.LEAVE) { - const {matches, unmatched} = matchChildren(vnode, old); - unmatched.forEach((v) => execute(null, v, vdom)); - matches.forEach(([v, o]) => execute(v, o, vdom)); - vnode.updated(context); - } - } - } - - function m(tagOrComponent, props, ...children) { - props = props || {}; - if (typeof tagOrComponent === "string") { - const tag = tagOrComponent; - return {type: tag, props, children}; - } - if (typeof tagOrComponent === "function") { - const component = tagOrComponent; - return {type: component, props, children}; - } - throw new Error("Unsupported spec type"); - } - function isSpec(x) { - return isObject(x) && x.type != null && x.nodeType == null; - } - function isNodeSpec(x) { - return isSpec(x) && typeof x.type === "string"; - } - function isComponentSpec(x) { - return isSpec(x) && typeof x.type === "function"; - } - - class VNodeBase { - constructor(parent) { - this.parentVNode = parent; - } - key() { - return null; - } - parent(vnode) { - if (vnode) { - this.parentVNode = vnode; - return; - } - return this.parentVNode; - } - children() { - return []; - } - attach(context) {} - detach(context) {} - update(old, context) { - return null; - } - attached(context) {} - detached(context) {} - updated(context) {} - } - function nodeMatchesSpec(node, spec) { - return ( - node instanceof Element && - ((node.namespaceURI === XHTML_NS && - spec.type === node.tagName.toLocaleLowerCase()) || - (node.namespaceURI !== XHTML_NS && spec.type === node.tagName)) - ); - } - const refinedElements = new WeakMap(); - function markElementAsRefined(element, vdom) { - let refined; - if (refinedElements.has(vdom)) { - refined = refinedElements.get(vdom); - } else { - refined = new WeakSet(); - refinedElements.set(vdom, refined); - } - refined.add(element); - } - function isElementRefined(element, vdom) { - return ( - refinedElements.has(vdom) && refinedElements.get(vdom).has(element) - ); - } - class ElementVNode extends VNodeBase { - constructor(spec, parent) { - super(parent); - this.spec = spec; - } - matches(other) { - return ( - other instanceof ElementVNode && - this.spec.type === other.spec.type - ); - } - key() { - return this.spec.props.key; - } - children() { - return [this.child]; - } - getExistingElement(context) { - const parent = context.parent; - const existing = context.node; - let element; - if (nodeMatchesSpec(existing, this.spec)) { - element = existing; - } else if ( - !isElementRefined(parent, context.vdom) && - context.vdom.isDOMNodeCaptured(parent) - ) { - const sibling = context.sibling; - const guess = sibling - ? sibling.nextElementSibling - : parent.firstElementChild; - if (guess && !context.vdom.isDOMNodeCaptured(guess)) { - if (nodeMatchesSpec(guess, this.spec)) { - element = guess; - } else { - parent.removeChild(guess); - } - } - } - return element; - } - attach(context) { - let element; - const existing = this.getExistingElement(context); - if (existing) { - element = existing; - } else { - element = createElement(this.spec, context.parent); - markElementAsRefined(element, context.vdom); - } - syncAttrs(element, this.spec.props, null); - this.child = createDOMVNode( - element, - this.spec.children, - this, - false - ); - } - update(prev, context) { - const prevContext = context.vdom.getVNodeContext(prev); - const element = prevContext.node; - syncAttrs(element, this.spec.props, prev.spec.props); - this.child = createDOMVNode( - element, - this.spec.children, - this, - false - ); - } - attached(context) { - const {oncreate, onrender} = this.spec.props; - if (oncreate) { - oncreate(context.node); - } - if (onrender) { - onrender(context.node); - } - } - detached(context) { - const {onremove} = this.spec.props; - if (onremove) { - onremove(context.node); - } - } - updated(context) { - const {onupdate, onrender} = this.spec.props; - if (onupdate) { - onupdate(context.node); - } - if (onrender) { - onrender(context.node); - } - } - } - const symbols = { - CREATED: Symbol(), - REMOVED: Symbol(), - UPDATED: Symbol(), - RENDERED: Symbol(), - ACTIVE: Symbol(), - DEFAULTS_ASSIGNED: Symbol() - }; - const domPlugins = [ - [PLUGINS_CREATE_ELEMENT, pluginsCreateElement], - [PLUGINS_SET_ATTRIBUTE, pluginsSetAttribute] - ]; - class ComponentVNode extends VNodeBase { - constructor(spec, parent) { - super(parent); - this.lock = false; - this.spec = spec; - this.prev = null; - this.store = {}; - this.store[symbols.ACTIVE] = this; - } - matches(other) { - return ( - other instanceof ComponentVNode && - this.spec.type === other.spec.type - ); - } - key() { - return this.spec.props.key; - } - children() { - return [this.child]; - } - createContext(context) { - const {parent} = context; - const {spec, prev, store} = this; - return { - spec, - prev, - store, - get node() { - return context.node; - }, - get nodes() { - return context.nodes; - }, - parent, - onCreate: (fn) => (store[symbols.CREATED] = fn), - onUpdate: (fn) => (store[symbols.UPDATED] = fn), - onRemove: (fn) => (store[symbols.REMOVED] = fn), - onRender: (fn) => (store[symbols.RENDERED] = fn), - refresh: () => { - const activeVNode = store[symbols.ACTIVE]; - activeVNode.refresh(context); - }, - leave: () => context.vdom.LEAVE, - getStore: (defaults) => { - if (defaults && !store[symbols.DEFAULTS_ASSIGNED]) { - Object.entries(defaults).forEach(([prop, value]) => { - store[prop] = value; - }); - store[symbols.DEFAULTS_ASSIGNED] = true; - } - return store; - } - }; - } - unbox(context) { - const Component = this.spec.type; - const props = this.spec.props; - const children = this.spec.children; - this.lock = true; - const prevContext = ComponentVNode.context; - ComponentVNode.context = this.createContext(context); - let unboxed = null; - try { - unboxed = Component(props, ...children); - } finally { - ComponentVNode.context = prevContext; - this.lock = false; - } - return unboxed; - } - refresh(context) { - if (this.lock) { - throw new Error( - "Calling refresh during unboxing causes infinite loop" - ); - } - this.prev = this.spec; - const latestContext = context.vdom.getVNodeContext(this); - const unboxed = this.unbox(latestContext); - if (unboxed === context.vdom.LEAVE) { - return; - } - const prevChild = this.child; - this.child = createVNode(unboxed, this); - context.vdom.execute(this.child, prevChild); - this.updated(context); - } - addPlugins() { - addComponentPlugins(this.spec.type, domPlugins); - } - deletePlugins() { - deleteComponentPlugins(this.spec.type, domPlugins); - } - attach(context) { - this.addPlugins(); - const unboxed = this.unbox(context); - const childSpec = unboxed === context.vdom.LEAVE ? null : unboxed; - this.child = createVNode(childSpec, this); - } - update(prev, context) { - this.store = prev.store; - this.prev = prev.spec; - this.store[symbols.ACTIVE] = this; - const prevContext = context.vdom.getVNodeContext(prev); - this.addPlugins(); - const unboxed = this.unbox(prevContext); - let result = null; - if (unboxed === context.vdom.LEAVE) { - result = unboxed; - this.child = prev.child; - context.vdom.adoptVNode(this.child, this); - } else { - this.child = createVNode(unboxed, this); - } - return result; - } - handle(event, context) { - const fn = this.store[event]; - if (fn) { - const nodes = - context.nodes.length === 0 ? [null] : context.nodes; - fn(...nodes); - } - } - attached(context) { - this.deletePlugins(); - this.handle(symbols.CREATED, context); - this.handle(symbols.RENDERED, context); - } - detached(context) { - this.handle(symbols.REMOVED, context); - } - updated(context) { - this.deletePlugins(); - this.handle(symbols.UPDATED, context); - this.handle(symbols.RENDERED, context); - } - } - ComponentVNode.context = null; - function getComponentContext() { - return ComponentVNode.context; - } - class TextVNode extends VNodeBase { - constructor(text, parent) { - super(parent); - this.text = text; - } - matches(other) { - return other instanceof TextVNode; - } - children() { - return [this.child]; - } - getExistingNode(context) { - const {parent} = context; - let node; - if (context.node instanceof Text) { - node = context.node; - } else if ( - !isElementRefined(parent, context.vdom) && - context.vdom.isDOMNodeCaptured(parent) - ) { - const sibling = context.sibling; - const guess = sibling ? sibling.nextSibling : parent.firstChild; - if ( - guess && - !context.vdom.isDOMNodeCaptured(guess) && - guess instanceof Text - ) { - node = guess; - } - } - return node; - } - attach(context) { - const existing = this.getExistingNode(context); - let node; - if (existing) { - node = existing; - node.textContent = this.text; - } else { - node = document.createTextNode(this.text); - } - this.child = createVNode(node, this); - } - update(prev, context) { - const prevContext = context.vdom.getVNodeContext(prev); - const {node} = prevContext; - if (this.text !== prev.text) { - node.textContent = this.text; - } - this.child = createVNode(node, this); - } - } - class InlineFunctionVNode extends VNodeBase { - constructor(fn, parent) { - super(parent); - this.fn = fn; - } - matches(other) { - return other instanceof InlineFunctionVNode; - } - children() { - return [this.child]; - } - call(context) { - const fn = this.fn; - const inlineFnContext = { - parent: context.parent, - get node() { - return context.node; - }, - get nodes() { - return context.nodes; - } - }; - const result = fn(inlineFnContext); - this.child = createVNode(result, this); - } - attach(context) { - this.call(context); - } - update(prev, context) { - const prevContext = context.vdom.getVNodeContext(prev); - this.call(prevContext); - } - } - class NullVNode extends VNodeBase { - matches(other) { - return other instanceof NullVNode; - } - } - class DOMVNode extends VNodeBase { - constructor(node, childSpecs, parent, isNative) { - super(parent); - this.node = node; - this.childSpecs = childSpecs; - this.isNative = isNative; - } - matches(other) { - return other instanceof DOMVNode && this.node === other.node; - } - wrap() { - this.childVNodes = this.childSpecs.map((spec) => - createVNode(spec, this) - ); - } - insertNode(context) { - const {parent, sibling} = context; - const shouldInsert = !( - parent === this.node.parentElement && - sibling === this.node.previousSibling - ); - if (shouldInsert) { - const target = sibling - ? sibling.nextSibling - : parent.firstChild; - parent.insertBefore(this.node, target); - } - } - attach(context) { - this.wrap(); - this.insertNode(context); - } - detach(context) { - context.parent.removeChild(this.node); - } - update(prev, context) { - this.wrap(); - this.insertNode(context); - } - cleanupDOMChildren(context) { - const element = this.node; - for (let current = element.lastChild; current != null; ) { - if (context.vdom.isDOMNodeCaptured(current)) { - current = current.previousSibling; - } else { - const prev = current.previousSibling; - element.removeChild(current); - current = prev; - } - } - } - refine(context) { - if (!this.isNative) { - this.cleanupDOMChildren(context); - } - const element = this.node; - markElementAsRefined(element, context.vdom); - } - attached(context) { - const {node} = this; - if ( - node instanceof Element && - !isElementRefined(node, context.vdom) && - context.vdom.isDOMNodeCaptured(node) - ) { - this.refine(context); - } - } - children() { - return this.childVNodes; - } - } - function isDOMVNode(v) { - return v instanceof DOMVNode; - } - function createDOMVNode(node, childSpecs, parent, isNative) { - return new DOMVNode(node, childSpecs, parent, isNative); - } - class ArrayVNode extends VNodeBase { - constructor(items, key, parent) { - super(parent); - this.items = items; - this.id = key; - } - matches(other) { - return other instanceof ArrayVNode; - } - key() { - return this.id; - } - children() { - return this.childVNodes; - } - wrap() { - this.childVNodes = this.items.map((spec) => - createVNode(spec, this) - ); - } - attach() { - this.wrap(); - } - update() { - this.wrap(); - } - } - function createVNode(spec, parent) { - if (isNodeSpec(spec)) { - return new ElementVNode(spec, parent); - } - if (isComponentSpec(spec)) { - if (spec.type === Array) { - return new ArrayVNode(spec.children, spec.props.key, parent); - } - return new ComponentVNode(spec, parent); - } - if (typeof spec === "string") { - return new TextVNode(spec, parent); - } - if (spec == null) { - return new NullVNode(parent); - } - if (typeof spec === "function") { - return new InlineFunctionVNode(spec, parent); - } - if (spec instanceof Node) { - return createDOMVNode(spec, [], parent, true); - } - if (Array.isArray(spec)) { - return new ArrayVNode(spec, null, parent); - } - throw new Error("Unable to create virtual node for spec"); - } - - function createVDOM(rootNode) { - const contexts = new WeakMap(); - const hubs = new WeakMap(); - const parentNodes = new WeakMap(); - const passingLinks = new WeakMap(); - const linkedParents = new WeakSet(); - const LEAVE = Symbol(); - function execute$1(vnode, old) { - execute(vnode, old, vdom); - } - function creatVNodeContext(vnode) { - const parentNode = parentNodes.get(vnode); - contexts.set(vnode, { - parent: parentNode, - get node() { - const linked = passingLinks - .get(vnode) - .find((link) => link.node != null); - return linked ? linked.node : null; - }, - get nodes() { - return passingLinks - .get(vnode) - .map((link) => link.node) - .filter((node) => node); - }, - get sibling() { - if (parentNode === rootNode.parentElement) { - return passingLinks.get(vnode).first.node - .previousSibling; - } - const hub = hubs.get(parentNode); - let current = passingLinks.get(vnode).first; - while ((current = hub.links.before(current))) { - if (current.node) { - return current.node; - } - } - return null; - }, - vdom - }); - } - function createRootVNodeLinks(vnode) { - const parentNode = - rootNode.parentElement || document.createDocumentFragment(); - const node = rootNode; - const links = new LinkedList({ - parentNode, - node - }); - passingLinks.set(vnode, links.copy()); - parentNodes.set(vnode, parentNode); - hubs.set(parentNode, { - node: parentNode, - links - }); - } - function createVNodeLinks(vnode) { - const parent = vnode.parent(); - const isBranch = linkedParents.has(parent); - const parentNode = isDOMVNode(parent) - ? parent.node - : parentNodes.get(parent); - parentNodes.set(vnode, parentNode); - const vnodeLinks = new LinkedList(); - passingLinks.set(vnode, vnodeLinks); - if (isBranch) { - const newLink = { - parentNode, - node: null - }; - let current = vnode; - do { - passingLinks.get(current).push(newLink); - current = current.parent(); - } while (current && !isDOMVNode(current)); - hubs.get(parentNode).links.push(newLink); - } else { - linkedParents.add(parent); - const links = isDOMVNode(parent) - ? hubs.get(parentNode).links - : passingLinks.get(parent); - links.forEach((link) => vnodeLinks.push(link)); - } - } - function connectDOMVNode(vnode) { - if (isDOMVNode(vnode)) { - const {node} = vnode; - hubs.set(node, { - node, - links: new LinkedList({ - parentNode: node, - node: null - }) - }); - passingLinks.get(vnode).forEach((link) => (link.node = node)); - } - } - function addVNode(vnode) { - const parent = vnode.parent(); - if (parent == null) { - createRootVNodeLinks(vnode); - } else { - createVNodeLinks(vnode); - } - connectDOMVNode(vnode); - creatVNodeContext(vnode); - } - function getVNodeContext(vnode) { - return contexts.get(vnode); - } - function getAncestorsLinks(vnode) { - const parentNode = parentNodes.get(vnode); - const hub = hubs.get(parentNode); - const allLinks = []; - let current = vnode; - while ((current = current.parent()) && !isDOMVNode(current)) { - allLinks.push(passingLinks.get(current)); - } - allLinks.push(hub.links); - return allLinks; - } - function replaceVNode(old, vnode) { - if (vnode.parent() == null) { - addVNode(vnode); - return; - } - const oldContext = contexts.get(old); - const {parent: parentNode} = oldContext; - parentNodes.set(vnode, parentNode); - const oldLinks = passingLinks.get(old); - const newLink = { - parentNode, - node: null - }; - getAncestorsLinks(vnode).forEach((links) => { - const nextLink = links.after(oldLinks.last); - oldLinks.forEach((link) => links.delete(link)); - if (nextLink) { - links.insertBefore(newLink, nextLink); - } else { - links.push(newLink); - } - }); - const vnodeLinks = new LinkedList(newLink); - passingLinks.set(vnode, vnodeLinks); - creatVNodeContext(vnode); - } - function adoptVNode(vnode, parent) { - const vnodeLinks = passingLinks.get(vnode); - const parentLinks = passingLinks.get(parent).copy(); - vnode.parent(parent); - getAncestorsLinks(vnode).forEach((links) => { - vnodeLinks.forEach((link) => - links.insertBefore(link, parentLinks.first) - ); - parentLinks.forEach((link) => links.delete(link)); - }); - } - function isDOMNodeCaptured(node) { - return hubs.has(node) && node !== rootNode.parentElement; - } - const vdom = { - execute: execute$1, - addVNode, - getVNodeContext, - replaceVNode, - adoptVNode, - isDOMNodeCaptured, - LEAVE - }; - return vdom; - } - - const roots = new WeakMap(); - const vdoms = new WeakMap(); - function realize(node, vnode) { - const old = roots.get(node) || null; - roots.set(node, vnode); - let vdom; - if (vdoms.has(node)) { - vdom = vdoms.get(node); - } else { - vdom = createVDOM(node); - vdoms.set(node, vdom); - } - vdom.execute(vnode, old); - return vdom.getVNodeContext(vnode); - } - function render$1(element, spec) { - const vnode = createDOMVNode( - element, - Array.isArray(spec) ? spec : [spec], - null, - false - ); - realize(element, vnode); - return element; - } - function sync(node, spec) { - const vnode = createVNode(spec, null); - const context = realize(node, vnode); - const {nodes} = context; - if (nodes.length !== 1 || nodes[0] !== node) { - throw new Error("Spec does not match the node"); - } - return nodes[0]; - } - - function normalize(attrsOrChild, ...otherChildren) { - const attrs = - isObject(attrsOrChild) && !isSpec(attrsOrChild) - ? attrsOrChild - : null; - const children = - attrs == null - ? [attrsOrChild].concat(otherChildren) - : otherChildren; - return {attrs, children}; - } - function createTagFunction(tag) { - return (attrsOrChild, ...otherChildren) => { - const {attrs, children} = normalize(attrsOrChild, otherChildren); - return m(tag, attrs, children); - }; - } - new Proxy( - {}, - { - get: (_, tag) => { - return createTagFunction(tag); - } - } - ); - - var MessageTypeUItoBG; - (function (MessageTypeUItoBG) { - MessageTypeUItoBG["GET_DATA"] = "ui-bg-get-data"; - MessageTypeUItoBG["GET_DEVTOOLS_DATA"] = "ui-bg-get-devtools-data"; - MessageTypeUItoBG["SUBSCRIBE_TO_CHANGES"] = - "ui-bg-subscribe-to-changes"; - MessageTypeUItoBG["UNSUBSCRIBE_FROM_CHANGES"] = - "ui-bg-unsubscribe-from-changes"; - MessageTypeUItoBG["CHANGE_SETTINGS"] = "ui-bg-change-settings"; - MessageTypeUItoBG["SET_THEME"] = "ui-bg-set-theme"; - MessageTypeUItoBG["TOGGLE_ACTIVE_TAB"] = "ui-bg-toggle-active-tab"; - MessageTypeUItoBG["MARK_NEWS_AS_READ"] = "ui-bg-mark-news-as-read"; - MessageTypeUItoBG["MARK_NEWS_AS_DISPLAYED"] = - "ui-bg-mark-news-as-displayed"; - MessageTypeUItoBG["LOAD_CONFIG"] = "ui-bg-load-config"; - MessageTypeUItoBG["APPLY_DEV_DYNAMIC_THEME_FIXES"] = - "ui-bg-apply-dev-dynamic-theme-fixes"; - MessageTypeUItoBG["RESET_DEV_DYNAMIC_THEME_FIXES"] = - "ui-bg-reset-dev-dynamic-theme-fixes"; - MessageTypeUItoBG["APPLY_DEV_INVERSION_FIXES"] = - "ui-bg-apply-dev-inversion-fixes"; - MessageTypeUItoBG["RESET_DEV_INVERSION_FIXES"] = - "ui-bg-reset-dev-inversion-fixes"; - MessageTypeUItoBG["APPLY_DEV_STATIC_THEMES"] = - "ui-bg-apply-dev-static-themes"; - MessageTypeUItoBG["RESET_DEV_STATIC_THEMES"] = - "ui-bg-reset-dev-static-themes"; - MessageTypeUItoBG["COLOR_SCHEME_CHANGE"] = "ui-bg-color-scheme-change"; - MessageTypeUItoBG["HIDE_HIGHLIGHTS"] = "ui-bg-hide-highlights"; - })(MessageTypeUItoBG || (MessageTypeUItoBG = {})); - var MessageTypeBGtoUI; - (function (MessageTypeBGtoUI) { - MessageTypeBGtoUI["CHANGES"] = "bg-ui-changes"; - })(MessageTypeBGtoUI || (MessageTypeBGtoUI = {})); - var DebugMessageTypeBGtoUI; - (function (DebugMessageTypeBGtoUI) { - DebugMessageTypeBGtoUI["CSS_UPDATE"] = "debug-bg-ui-css-update"; - DebugMessageTypeBGtoUI["UPDATE"] = "debug-bg-ui-update"; - })(DebugMessageTypeBGtoUI || (DebugMessageTypeBGtoUI = {})); - var MessageTypeBGtoCS; - (function (MessageTypeBGtoCS) { - MessageTypeBGtoCS["ADD_CSS_FILTER"] = "bg-cs-add-css-filter"; - MessageTypeBGtoCS["ADD_DYNAMIC_THEME"] = "bg-cs-add-dynamic-theme"; - MessageTypeBGtoCS["ADD_STATIC_THEME"] = "bg-cs-add-static-theme"; - MessageTypeBGtoCS["ADD_SVG_FILTER"] = "bg-cs-add-svg-filter"; - MessageTypeBGtoCS["CLEAN_UP"] = "bg-cs-clean-up"; - MessageTypeBGtoCS["FETCH_RESPONSE"] = "bg-cs-fetch-response"; - MessageTypeBGtoCS["UNSUPPORTED_SENDER"] = "bg-cs-unsupported-sender"; - })(MessageTypeBGtoCS || (MessageTypeBGtoCS = {})); - var DebugMessageTypeBGtoCS; - (function (DebugMessageTypeBGtoCS) { - DebugMessageTypeBGtoCS["RELOAD"] = "debug-bg-cs-reload"; - })(DebugMessageTypeBGtoCS || (DebugMessageTypeBGtoCS = {})); - var MessageTypeCStoBG; - (function (MessageTypeCStoBG) { - MessageTypeCStoBG["COLOR_SCHEME_CHANGE"] = "cs-bg-color-scheme-change"; - MessageTypeCStoBG["DARK_THEME_DETECTED"] = "cs-bg-dark-theme-detected"; - MessageTypeCStoBG["DARK_THEME_NOT_DETECTED"] = - "cs-bg-dark-theme-not-detected"; - MessageTypeCStoBG["FETCH"] = "cs-bg-fetch"; - MessageTypeCStoBG["DOCUMENT_CONNECT"] = "cs-bg-document-connect"; - MessageTypeCStoBG["DOCUMENT_FORGET"] = "cs-bg-document-forget"; - MessageTypeCStoBG["DOCUMENT_FREEZE"] = "cs-bg-document-freeze"; - MessageTypeCStoBG["DOCUMENT_RESUME"] = "cs-bg-document-resume"; - })(MessageTypeCStoBG || (MessageTypeCStoBG = {})); - var DebugMessageTypeCStoBG; - (function (DebugMessageTypeCStoBG) { - DebugMessageTypeCStoBG["LOG"] = "debug-cs-bg-log"; - })(DebugMessageTypeCStoBG || (DebugMessageTypeCStoBG = {})); - var MessageTypeCStoUI; - (function (MessageTypeCStoUI) { - MessageTypeCStoUI["EXPORT_CSS_RESPONSE"] = "cs-ui-export-css-response"; - })(MessageTypeCStoUI || (MessageTypeCStoUI = {})); - var MessageTypeUItoCS; - (function (MessageTypeUItoCS) { - MessageTypeUItoCS["EXPORT_CSS"] = "ui-cs-export-css"; - })(MessageTypeUItoCS || (MessageTypeUItoCS = {})); - - const isNavigatorDefined = typeof navigator !== "undefined"; - const userAgent = isNavigatorDefined - ? navigator.userAgentData && - Array.isArray(navigator.userAgentData.brands) - ? navigator.userAgentData.brands - .map( - (brand) => `${brand.brand.toLowerCase()} ${brand.version}` - ) - .join(" ") - : navigator.userAgent.toLowerCase() - : "some useragent"; - const platform = isNavigatorDefined - ? navigator.userAgentData && - typeof navigator.userAgentData.platform === "string" - ? navigator.userAgentData.platform.toLowerCase() - : navigator.platform.toLowerCase() - : "some platform"; - const isFirefox = !true; - userAgent.includes("vivaldi"); - userAgent.includes("yabrowser"); - userAgent.includes("opr") || userAgent.includes("opera"); - const isEdge = userAgent.includes("edg"); - const isWindows = platform.startsWith("win"); - const isMacOS = platform.startsWith("mac"); - const isMobile = - isNavigatorDefined && navigator.userAgentData - ? navigator.userAgentData.mobile - : userAgent.includes("mobile"); - const isMatchMediaChangeEventListenerBuggy = - (isNavigatorDefined && - navigator.userAgentData && - ["Linux", "Android"].includes(navigator.userAgentData.platform)) || - platform.startsWith("linux"); - (() => { - const m = userAgent.match(/chrom(?:e|ium)(?:\/| )([^ ]+)/); - if (m && m[1]) { - return m[1]; - } - return ""; - })(); - (() => { - const m = userAgent.match(/(?:firefox|librewolf)(?:\/| )([^ ]+)/); - if (m && m[1]) { - return m[1]; - } - return ""; - })(); - (() => { - try { - document.querySelector(":defined"); - return true; - } catch (err) { - return false; - } - })(); - - function classes(...args) { - const classes = []; - args.filter((c) => Boolean(c)).forEach((c) => { - if (typeof c === "string") { - classes.push(c); - } else if (typeof c === "object") { - classes.push( - ...Object.keys(c).filter((key) => Boolean(c[key])) - ); - } - }); - return classes.join(" "); - } - function openFile(options, callback) { - const input = document.createElement("input"); - input.type = "file"; - input.style.display = "none"; - if (options.extensions && options.extensions.length > 0) { - input.accept = options.extensions.map((ext) => `.${ext}`).join(","); - } - const reader = new FileReader(); - reader.onloadend = () => callback(reader.result); - input.onchange = () => { - if (input.files[0]) { - reader.readAsText(input.files[0]); - document.body.removeChild(input); - } - }; - document.body.appendChild(input); - input.click(); - } - function saveFile(name, content) { - const a = document.createElement("a"); - a.href = URL.createObjectURL(new Blob([content])); - a.download = name; - a.click(); - } - function throttle(callback) { - let frameId = null; - return (...args) => { - if (!frameId) { - callback(...args); - frameId = requestAnimationFrame(() => (frameId = null)); - } - }; - } - function onSwipeStart(startEventObj, startHandler) { - const isTouchEvent = - typeof TouchEvent !== "undefined" && - startEventObj instanceof TouchEvent; - const touchId = isTouchEvent - ? startEventObj.changedTouches[0].identifier - : null; - const pointerMoveEvent = isTouchEvent ? "touchmove" : "mousemove"; - const pointerUpEvent = isTouchEvent ? "touchend" : "mouseup"; - if (!isTouchEvent) { - startEventObj.preventDefault(); - } - function getSwipeEventObject(e) { - const {clientX, clientY} = isTouchEvent ? getTouch(e) : e; - return {clientX, clientY}; - } - const startSE = getSwipeEventObject(startEventObj); - const {move: moveHandler, up: upHandler} = startHandler( - startSE, - startEventObj - ); - function getTouch(e) { - return Array.from(e.changedTouches).find( - ({identifier: id}) => id === touchId - ); - } - const onPointerMove = throttle((e) => { - const se = getSwipeEventObject(e); - moveHandler(se, e); - }); - function onPointerUp(e) { - unsubscribe(); - const se = getSwipeEventObject(e); - upHandler(se, e); - } - function unsubscribe() { - window.removeEventListener(pointerMoveEvent, onPointerMove); - window.removeEventListener(pointerUpEvent, onPointerUp); - } - window.addEventListener(pointerMoveEvent, onPointerMove, { - passive: true - }); - window.addEventListener(pointerUpEvent, onPointerUp, {passive: true}); - } - function createSwipeHandler(startHandler) { - return (e) => onSwipeStart(e, startHandler); - } - async function getExtensionPageTabMV3() { - return new Promise((resolve) => { - chrome.windows.getAll( - { - populate: true, - windowTypes: ["popup"] - }, - (w) => { - const responses = []; - let found = false; - for (const window of w) { - const response = chrome.tabs.sendMessage( - window.tabs[0].id, - "getExtensionPageTabMV3_ping", - {frameId: 0} - ); - response.then((response) => { - if (response === "getExtensionPageTabMV3_pong") { - found = true; - resolve(window.tabs[0]); - } - }); - responses.push(response); - } - Promise.all(responses).then(() => !found && resolve(null)); - } - ); - }); - } - async function getExtensionPageTab(url) { - { - return getExtensionPageTabMV3(); - } - } - async function openExtensionPage(page) { - const url = chrome.runtime.getURL(`/ui/${page}/index.html`); - if (isMobile || page === "options") { - const extensionPageTab = await getExtensionPageTab(); - if (extensionPageTab !== null) { - chrome.tabs.update(extensionPageTab.id, {active: true}); - window.close(); - } else { - chrome.tabs.create({url}); - window.close(); - } - } else { - const extensionPageTab = await getExtensionPageTab(); - if (extensionPageTab !== null) { - chrome.windows.update(extensionPageTab.windowId, { - focused: true - }); - window.close(); - } else { - chrome.windows.create({ - type: "popup", - url, - width: 800, - height: 600 - }); - window.close(); - } - } - } - - function toArray(x) { - return Array.isArray(x) ? x : [x]; - } - function mergeClass(cls, propsCls) { - const normalized = toArray(cls).concat(toArray(propsCls)); - return classes(...normalized); - } - function omitAttrs(omit, attrs) { - const result = {}; - Object.keys(attrs).forEach((key) => { - if (omit.indexOf(key) < 0) { - result[key] = attrs[key]; - } - }); - return result; - } - function isElementHidden(element) { - return element.offsetParent === null; - } - - function Button(props, ...children) { - const cls = mergeClass("button", props.class); - const attrs = omitAttrs(["class"], props); - return m$1( - "button", - {class: cls, ...attrs}, - m$1("span", {class: "button__wrapper"}, ...children) - ); - } - - function CheckBox(props, ...children) { - const cls = mergeClass("checkbox", props.class); - const attrs = omitAttrs(["class", "checked", "onchange"], props); - const check = (domNode) => (domNode.checked = Boolean(props.checked)); - return m$1( - "label", - {class: cls, ...attrs}, - m$1("input", { - class: "checkbox__input", - type: "checkbox", - checked: props.checked, - onchange: props.onchange, - onrender: check - }), - m$1("span", {class: "checkbox__checkmark"}), - m$1("span", {class: "checkbox__content"}, children) - ); - } - - function ControlGroup(props, control, description) { - return m$1( - "span", - {class: ["control-group", props.class]}, - control, - description - ); - } - function Control(props, ...content) { - return m$1( - "span", - {class: ["control-group__control", props.class]}, - ...content - ); - } - function Description(props, ...content) { - return m$1( - "span", - {class: ["control-group__description", props.class]}, - ...content - ); - } - var ControlGroup$1 = Object.assign(ControlGroup, {Control, Description}); - - function CheckButton(props) { - return m$1( - ControlGroup$1, - {class: "check-button"}, - m$1( - ControlGroup$1.Control, - null, - m$1( - CheckBox, - { - class: "check-button__checkbox", - checked: props.checked, - onchange: (e) => props.onChange(e.target.checked) - }, - props.label - ) - ), - m$1( - ControlGroup$1.Description, - {class: "check-button__description"}, - props.description - ) - ); - } - - function evalMath(expression) { - const rpnStack = []; - const workingStack = []; - let lastToken; - for (let i = 0, len = expression.length; i < len; i++) { - const token = expression[i]; - if (!token || token === " ") { - continue; - } - if (operators.has(token)) { - const op = operators.get(token); - while (workingStack.length) { - const currentOp = operators.get(workingStack[0]); - if (!currentOp) { - break; - } - if (op.lessOrEqualThan(currentOp)) { - rpnStack.push(workingStack.shift()); - } else { - break; - } - } - workingStack.unshift(token); - } else if (!lastToken || operators.has(lastToken)) { - rpnStack.push(token); - } else { - rpnStack[rpnStack.length - 1] += token; - } - lastToken = token; - } - rpnStack.push(...workingStack); - const stack = []; - for (let i = 0, len = rpnStack.length; i < len; i++) { - const op = operators.get(rpnStack[i]); - if (op) { - const args = stack.splice(0, 2); - stack.push(op.exec(args[1], args[0])); - } else { - stack.unshift(parseFloat(rpnStack[i])); - } - } - return stack[0]; - } - class Operator { - precendce; - execMethod; - constructor(precedence, method) { - this.precendce = precedence; - this.execMethod = method; - } - exec(left, right) { - return this.execMethod(left, right); - } - lessOrEqualThan(op) { - return this.precendce <= op.precendce; - } - } - const operators = new Map([ - ["+", new Operator(1, (left, right) => left + right)], - ["-", new Operator(1, (left, right) => left - right)], - ["*", new Operator(2, (left, right) => left * right)], - ["/", new Operator(2, (left, right) => left / right)] - ]); - - function getParenthesesRange(input, searchStartIndex = 0) { - return getOpenCloseRange(input, searchStartIndex, "(", ")", []); - } - function getOpenCloseRange( - input, - searchStartIndex, - openToken, - closeToken, - excludeRanges - ) { - let indexOf; - if (excludeRanges.length === 0) { - indexOf = (token, pos) => input.indexOf(token, pos); - } else { - indexOf = (token, pos) => - indexOfExcluding(input, token, pos, excludeRanges); - } - const {length} = input; - let depth = 0; - let firstOpenIndex = -1; - for (let i = searchStartIndex; i < length; i++) { - if (depth === 0) { - const openIndex = indexOf(openToken, i); - if (openIndex < 0) { - break; - } - firstOpenIndex = openIndex; - depth++; - i = openIndex; - } else { - const closeIndex = indexOf(closeToken, i); - if (closeIndex < 0) { - break; - } - const openIndex = indexOf(openToken, i); - if (openIndex < 0 || closeIndex <= openIndex) { - depth--; - if (depth === 0) { - return {start: firstOpenIndex, end: closeIndex + 1}; - } - i = closeIndex; - } else { - depth++; - i = openIndex; - } - } - } - return null; - } - function indexOfExcluding(input, search, position, excludeRanges) { - const i = input.indexOf(search, position); - const exclusion = excludeRanges.find((r) => i >= r.start && i < r.end); - if (exclusion) { - return indexOfExcluding( - input, - search, - exclusion.end, - excludeRanges - ); - } - return i; - } - - const isSystemDarkModeEnabled = () => - matchMedia("(prefers-color-scheme: dark)").matches; - - const rgbaParseCache = new Map(); - function parseColorWithCache($color) { - $color = $color.trim(); - if (rgbaParseCache.has($color)) { - return rgbaParseCache.get($color); - } - if ($color.includes("calc(")) { - $color = lowerCalcExpression($color); - } - const color = parse($color); - color && rgbaParseCache.set($color, color); - return color; - } - function hslToRGB({h, s, l, a = 1}) { - if (s === 0) { - const [r, b, g] = [l, l, l].map((x) => Math.round(x * 255)); - return {r, g, b, a}; - } - const c = (1 - Math.abs(2 * l - 1)) * s; - const x = c * (1 - Math.abs(((h / 60) % 2) - 1)); - const m = l - c / 2; - const [r, g, b] = ( - h < 60 - ? [c, x, 0] - : h < 120 - ? [x, c, 0] - : h < 180 - ? [0, c, x] - : h < 240 - ? [0, x, c] - : h < 300 - ? [x, 0, c] - : [c, 0, x] - ).map((n) => Math.round((n + m) * 255)); - return {r, g, b, a}; - } - function rgbToHSL({r: r255, g: g255, b: b255, a = 1}) { - const r = r255 / 255; - const g = g255 / 255; - const b = b255 / 255; - const max = Math.max(r, g, b); - const min = Math.min(r, g, b); - const c = max - min; - const l = (max + min) / 2; - if (c === 0) { - return {h: 0, s: 0, l, a}; - } - let h = - (max === r - ? ((g - b) / c) % 6 - : max === g - ? (b - r) / c + 2 - : (r - g) / c + 4) * 60; - if (h < 0) { - h += 360; - } - const s = c / (1 - Math.abs(2 * l - 1)); - return {h, s, l, a}; - } - function toFixed(n, digits = 0) { - const fixed = n.toFixed(digits); - if (digits === 0) { - return fixed; - } - const dot = fixed.indexOf("."); - if (dot >= 0) { - const zerosMatch = fixed.match(/0+$/); - if (zerosMatch) { - if (zerosMatch.index === dot + 1) { - return fixed.substring(0, dot); - } - return fixed.substring(0, zerosMatch.index); - } - } - return fixed; - } - function rgbToHexString({r, g, b, a}) { - return `#${(a != null && a < 1 - ? [r, g, b, Math.round(a * 255)] - : [r, g, b] - ) - .map((x) => { - return `${x < 16 ? "0" : ""}${x.toString(16)}`; - }) - .join("")}`; - } - function hslToString(hsl) { - const {h, s, l, a} = hsl; - if (a != null && a < 1) { - return `hsla(${toFixed(h)}, ${toFixed(s * 100)}%, ${toFixed(l * 100)}%, ${toFixed(a, 2)})`; - } - return `hsl(${toFixed(h)}, ${toFixed(s * 100)}%, ${toFixed(l * 100)}%)`; - } - const rgbMatch = /^rgba?\([^\(\)]+\)$/; - const hslMatch = /^hsla?\([^\(\)]+\)$/; - const hexMatch = /^#[0-9a-f]+$/i; - function parse($color) { - const c = $color.trim().toLowerCase(); - if (c.match(rgbMatch)) { - return parseRGB(c); - } - if (c.match(hslMatch)) { - return parseHSL(c); - } - if (c.match(hexMatch)) { - return parseHex(c); - } - if (knownColors.has(c)) { - return getColorByName(c); - } - if (systemColors.has(c)) { - return getSystemColor(c); - } - if ($color === "transparent") { - return {r: 0, g: 0, b: 0, a: 0}; - } - if ( - (c.startsWith("color(") || c.startsWith("color-mix(")) && - c.endsWith(")") - ) { - return domParseColor(c); - } - if (c.startsWith("light-dark(") && c.endsWith(")")) { - const match = c.match( - /^light-dark\(\s*([a-z]+(\(.*\))?),\s*([a-z]+(\(.*\))?)\s*\)$/ - ); - if (match) { - const schemeColor = isSystemDarkModeEnabled() - ? match[3] - : match[1]; - return parse(schemeColor); - } - } - return null; - } - function getNumbers($color) { - const numbers = []; - let prevPos = 0; - let isMining = false; - const startIndex = $color.indexOf("("); - $color = $color.substring(startIndex + 1, $color.length - 1); - for (let i = 0; i < $color.length; i++) { - const c = $color[i]; - if ((c >= "0" && c <= "9") || c === "." || c === "+" || c === "-") { - isMining = true; - } else if (isMining && (c === " " || c === "," || c === "/")) { - numbers.push($color.substring(prevPos, i)); - isMining = false; - prevPos = i + 1; - } else if (!isMining) { - prevPos = i + 1; - } - } - if (isMining) { - numbers.push($color.substring(prevPos, $color.length)); - } - return numbers; - } - function getNumbersFromString(str, range, units) { - const raw = getNumbers(str); - const unitsList = Object.entries(units); - const numbers = raw - .map((r) => r.trim()) - .map((r, i) => { - let n; - const unit = unitsList.find(([u]) => r.endsWith(u)); - if (unit) { - n = - (parseFloat(r.substring(0, r.length - unit[0].length)) / - unit[1]) * - range[i]; - } else { - n = parseFloat(r); - } - if (range[i] > 1) { - return Math.round(n); - } - return n; - }); - return numbers; - } - const rgbRange = [255, 255, 255, 1]; - const rgbUnits = {"%": 100}; - function parseRGB($rgb) { - const [r, g, b, a = 1] = getNumbersFromString($rgb, rgbRange, rgbUnits); - return {r, g, b, a}; - } - const hslRange = [360, 1, 1, 1]; - const hslUnits = {"%": 100, "deg": 360, "rad": 2 * Math.PI, "turn": 1}; - function parseHSL($hsl) { - const [h, s, l, a = 1] = getNumbersFromString($hsl, hslRange, hslUnits); - return hslToRGB({h, s, l, a}); - } - function parseHex($hex) { - const h = $hex.substring(1); - switch (h.length) { - case 3: - case 4: { - const [r, g, b] = [0, 1, 2].map((i) => - parseInt(`${h[i]}${h[i]}`, 16) - ); - const a = - h.length === 3 ? 1 : parseInt(`${h[3]}${h[3]}`, 16) / 255; - return {r, g, b, a}; - } - case 6: - case 8: { - const [r, g, b] = [0, 2, 4].map((i) => - parseInt(h.substring(i, i + 2), 16) - ); - const a = - h.length === 6 ? 1 : parseInt(h.substring(6, 8), 16) / 255; - return {r, g, b, a}; - } - } - return null; - } - function getColorByName($color) { - const n = knownColors.get($color); - return { - r: (n >> 16) & 255, - g: (n >> 8) & 255, - b: (n >> 0) & 255, - a: 1 - }; - } - function getSystemColor($color) { - const n = systemColors.get($color); - return { - r: (n >> 16) & 255, - g: (n >> 8) & 255, - b: (n >> 0) & 255, - a: 1 - }; - } - function lowerCalcExpression(color) { - let searchIndex = 0; - const replaceBetweenIndices = (start, end, replacement) => { - color = - color.substring(0, start) + replacement + color.substring(end); - }; - while ((searchIndex = color.indexOf("calc(")) !== -1) { - const range = getParenthesesRange(color, searchIndex); - if (!range) { - break; - } - let slice = color.slice(range.start + 1, range.end - 1); - const includesPercentage = slice.includes("%"); - slice = slice.split("%").join(""); - const output = Math.round(evalMath(slice)); - replaceBetweenIndices( - range.start - 4, - range.end, - output + (includesPercentage ? "%" : "") - ); - } - return color; - } - const knownColors = new Map( - Object.entries({ - aliceblue: 0xf0f8ff, - antiquewhite: 0xfaebd7, - aqua: 0x00ffff, - aquamarine: 0x7fffd4, - azure: 0xf0ffff, - beige: 0xf5f5dc, - bisque: 0xffe4c4, - black: 0x000000, - blanchedalmond: 0xffebcd, - blue: 0x0000ff, - blueviolet: 0x8a2be2, - brown: 0xa52a2a, - burlywood: 0xdeb887, - cadetblue: 0x5f9ea0, - chartreuse: 0x7fff00, - chocolate: 0xd2691e, - coral: 0xff7f50, - cornflowerblue: 0x6495ed, - cornsilk: 0xfff8dc, - crimson: 0xdc143c, - cyan: 0x00ffff, - darkblue: 0x00008b, - darkcyan: 0x008b8b, - darkgoldenrod: 0xb8860b, - darkgray: 0xa9a9a9, - darkgrey: 0xa9a9a9, - darkgreen: 0x006400, - darkkhaki: 0xbdb76b, - darkmagenta: 0x8b008b, - darkolivegreen: 0x556b2f, - darkorange: 0xff8c00, - darkorchid: 0x9932cc, - darkred: 0x8b0000, - darksalmon: 0xe9967a, - darkseagreen: 0x8fbc8f, - darkslateblue: 0x483d8b, - darkslategray: 0x2f4f4f, - darkslategrey: 0x2f4f4f, - darkturquoise: 0x00ced1, - darkviolet: 0x9400d3, - deeppink: 0xff1493, - deepskyblue: 0x00bfff, - dimgray: 0x696969, - dimgrey: 0x696969, - dodgerblue: 0x1e90ff, - firebrick: 0xb22222, - floralwhite: 0xfffaf0, - forestgreen: 0x228b22, - fuchsia: 0xff00ff, - gainsboro: 0xdcdcdc, - ghostwhite: 0xf8f8ff, - gold: 0xffd700, - goldenrod: 0xdaa520, - gray: 0x808080, - grey: 0x808080, - green: 0x008000, - greenyellow: 0xadff2f, - honeydew: 0xf0fff0, - hotpink: 0xff69b4, - indianred: 0xcd5c5c, - indigo: 0x4b0082, - ivory: 0xfffff0, - khaki: 0xf0e68c, - lavender: 0xe6e6fa, - lavenderblush: 0xfff0f5, - lawngreen: 0x7cfc00, - lemonchiffon: 0xfffacd, - lightblue: 0xadd8e6, - lightcoral: 0xf08080, - lightcyan: 0xe0ffff, - lightgoldenrodyellow: 0xfafad2, - lightgray: 0xd3d3d3, - lightgrey: 0xd3d3d3, - lightgreen: 0x90ee90, - lightpink: 0xffb6c1, - lightsalmon: 0xffa07a, - lightseagreen: 0x20b2aa, - lightskyblue: 0x87cefa, - lightslategray: 0x778899, - lightslategrey: 0x778899, - lightsteelblue: 0xb0c4de, - lightyellow: 0xffffe0, - lime: 0x00ff00, - limegreen: 0x32cd32, - linen: 0xfaf0e6, - magenta: 0xff00ff, - maroon: 0x800000, - mediumaquamarine: 0x66cdaa, - mediumblue: 0x0000cd, - mediumorchid: 0xba55d3, - mediumpurple: 0x9370db, - mediumseagreen: 0x3cb371, - mediumslateblue: 0x7b68ee, - mediumspringgreen: 0x00fa9a, - mediumturquoise: 0x48d1cc, - mediumvioletred: 0xc71585, - midnightblue: 0x191970, - mintcream: 0xf5fffa, - mistyrose: 0xffe4e1, - moccasin: 0xffe4b5, - navajowhite: 0xffdead, - navy: 0x000080, - oldlace: 0xfdf5e6, - olive: 0x808000, - olivedrab: 0x6b8e23, - orange: 0xffa500, - orangered: 0xff4500, - orchid: 0xda70d6, - palegoldenrod: 0xeee8aa, - palegreen: 0x98fb98, - paleturquoise: 0xafeeee, - palevioletred: 0xdb7093, - papayawhip: 0xffefd5, - peachpuff: 0xffdab9, - peru: 0xcd853f, - pink: 0xffc0cb, - plum: 0xdda0dd, - powderblue: 0xb0e0e6, - purple: 0x800080, - rebeccapurple: 0x663399, - red: 0xff0000, - rosybrown: 0xbc8f8f, - royalblue: 0x4169e1, - saddlebrown: 0x8b4513, - salmon: 0xfa8072, - sandybrown: 0xf4a460, - seagreen: 0x2e8b57, - seashell: 0xfff5ee, - sienna: 0xa0522d, - silver: 0xc0c0c0, - skyblue: 0x87ceeb, - slateblue: 0x6a5acd, - slategray: 0x708090, - slategrey: 0x708090, - snow: 0xfffafa, - springgreen: 0x00ff7f, - steelblue: 0x4682b4, - tan: 0xd2b48c, - teal: 0x008080, - thistle: 0xd8bfd8, - tomato: 0xff6347, - turquoise: 0x40e0d0, - violet: 0xee82ee, - wheat: 0xf5deb3, - white: 0xffffff, - whitesmoke: 0xf5f5f5, - yellow: 0xffff00, - yellowgreen: 0x9acd32 - }) - ); - const systemColors = new Map( - Object.entries({ - "ActiveBorder": 0x3b99fc, - "ActiveCaption": 0x000000, - "AppWorkspace": 0xaaaaaa, - "Background": 0x6363ce, - "ButtonFace": 0xffffff, - "ButtonHighlight": 0xe9e9e9, - "ButtonShadow": 0x9fa09f, - "ButtonText": 0x000000, - "CaptionText": 0x000000, - "GrayText": 0x7f7f7f, - "Highlight": 0xb2d7ff, - "HighlightText": 0x000000, - "InactiveBorder": 0xffffff, - "InactiveCaption": 0xffffff, - "InactiveCaptionText": 0x000000, - "InfoBackground": 0xfbfcc5, - "InfoText": 0x000000, - "Menu": 0xf6f6f6, - "MenuText": 0xffffff, - "Scrollbar": 0xaaaaaa, - "ThreeDDarkShadow": 0x000000, - "ThreeDFace": 0xc0c0c0, - "ThreeDHighlight": 0xffffff, - "ThreeDLightShadow": 0xffffff, - "ThreeDShadow": 0x000000, - "Window": 0xececec, - "WindowFrame": 0xaaaaaa, - "WindowText": 0x000000, - "-webkit-focus-ring-color": 0xe59700 - }).map(([key, value]) => [key.toLowerCase(), value]) - ); - let canvas; - let context; - function domParseColor($color) { - if (!context) { - canvas = document.createElement("canvas"); - canvas.width = 1; - canvas.height = 1; - context = canvas.getContext("2d", {willReadFrequently: true}); - } - context.fillStyle = $color; - context.fillRect(0, 0, 1, 1); - const d = context.getImageData(0, 0, 1, 1).data; - const color = `rgba(${d[0]}, ${d[1]}, ${d[2]}, ${(d[3] / 255).toFixed(2)})`; - return parseRGB(color); - } - - function TextBox(props) { - const cls = mergeClass("textbox", props.class); - const attrs = omitAttrs(["class", "type"], props); - const type = props.type || "text"; - return m$1("input", { - class: cls, - type: type, - spellcheck: "false", - ...attrs - }); - } - - function scale(x, inLow, inHigh, outLow, outHigh) { - return ((x - inLow) * (outHigh - outLow)) / (inHigh - inLow) + outLow; - } - function clamp(x, min, max) { - return Math.min(max, Math.max(min, x)); - } - - const hsbPickerDefaults = { - wasPrevHidden: true, - hueCanvasRendered: false, - activeHSB: null, - activeChangeHandler: null, - hueTouchStartHandler: null, - sbTouchStartHandler: null - }; - function rgbToHSB({r, g, b}) { - const min = Math.min(r, g, b); - const max = Math.max(r, g, b); - return { - h: rgbToHSL({r, g, b}).h, - s: max === 0 ? 0 : 1 - min / max, - b: max / 255 - }; - } - function hsbToRGB({h: hue, s: sat, b: br}) { - let c; - if (hue < 60) { - c = [1, hue / 60, 0]; - } else if (hue < 120) { - c = [(120 - hue) / 60, 1, 0]; - } else if (hue < 180) { - c = [0, 1, (hue - 120) / 60]; - } else if (hue < 240) { - c = [0, (240 - hue) / 60, 1]; - } else if (hue < 300) { - c = [(hue - 240) / 60, 0, 1]; - } else { - c = [1, 0, (360 - hue) / 60]; - } - const max = Math.max(...c); - const [r, g, b] = c - .map((v) => v + (max - v) * (1 - sat)) - .map((v) => v * br) - .map((v) => Math.round(v * 255)); - return {r, g, b, a: 1}; - } - function hsbToString(hsb) { - const rgb = hsbToRGB(hsb); - return rgbToHexString(rgb); - } - function render(canvas, getPixel) { - const {width, height} = canvas; - const context = canvas.getContext("2d"); - const imageData = context.getImageData(0, 0, width, height); - const d = imageData.data; - for (let y = 0; y < height; y++) { - for (let x = 0; x < width; x++) { - const i = 4 * (y * width + x); - const c = getPixel(x, y); - for (let j = 0; j < 4; j++) { - d[i + j] = c[j]; - } - } - } - context.putImageData(imageData, 0, 0); - } - function renderHue(canvas) { - const {height} = canvas; - render(canvas, (_, y) => { - const hue = scale(y, 0, height, 0, 360); - const {r, g, b} = hsbToRGB({h: hue, s: 1, b: 1}); - return new Uint8ClampedArray([r, g, b, 255]); - }); - } - function renderSB(hue, canvas) { - const {width, height} = canvas; - render(canvas, (x, y) => { - const sat = scale(x, 0, width - 1, 0, 1); - const br = scale(y, 0, height - 1, 1, 0); - const {r, g, b} = hsbToRGB({h: hue, s: sat, b: br}); - return new Uint8ClampedArray([r, g, b, 255]); - }); - } - function HSBPicker(props) { - const context = getComponentContext(); - const store = context.getStore(hsbPickerDefaults); - store.activeChangeHandler = props.onChange; - const prevColor = context.prev && context.prev.props.color; - const prevActiveColor = store.activeHSB - ? hsbToString(store.activeHSB) - : null; - const didColorChange = - props.color !== prevColor && props.color !== prevActiveColor; - let activeHSB; - if (didColorChange) { - const rgb = parseColorWithCache(props.color); - activeHSB = rgbToHSB(rgb); - store.activeHSB = activeHSB; - } else { - activeHSB = store.activeHSB; - } - function onSBCanvasRender(canvas) { - if (isElementHidden(canvas)) { - return; - } - const hue = activeHSB.h; - const prevHue = - prevColor && rgbToHSB(parseColorWithCache(prevColor)).h; - if (store.wasPrevHidden || hue !== prevHue) { - renderSB(hue, canvas); - } - store.wasPrevHidden = false; - } - function onHueCanvasRender(canvas) { - if (store.hueCanvasRendered || isElementHidden(canvas)) { - return; - } - store.hueCanvasRendered = true; - renderHue(canvas); - } - function createHSBSwipeHandler(getEventHSB) { - return createSwipeHandler((startEvt, startNativeEvt) => { - const rect = - startNativeEvt.currentTarget.getBoundingClientRect(); - function onPointerMove(e) { - store.activeHSB = getEventHSB({...e, rect}); - props.onColorPreview(hsbToString(store.activeHSB)); - context.refresh(); - } - function onPointerUp(e) { - const hsb = getEventHSB({...e, rect}); - store.activeHSB = hsb; - props.onChange(hsbToString(hsb)); - } - store.activeHSB = getEventHSB({...startEvt, rect}); - context.refresh(); - return { - move: onPointerMove, - up: onPointerUp - }; - }); - } - const onSBPointerDown = createHSBSwipeHandler( - ({clientX, clientY, rect}) => { - const sat = clamp((clientX - rect.left) / rect.width, 0, 1); - const br = clamp(1 - (clientY - rect.top) / rect.height, 0, 1); - return {...activeHSB, s: sat, b: br}; - } - ); - const onHuePointerDown = createHSBSwipeHandler(({clientY, rect}) => { - const hue = clamp((clientY - rect.top) / rect.height, 0, 1) * 360; - return {...activeHSB, h: hue}; - }); - const hueCursorStyle = { - "background-color": hslToString({ - h: activeHSB.h, - s: 1, - l: 0.5, - a: 1 - }), - "left": "0%", - "top": `${(activeHSB.h / 360) * 100}%` - }; - const sbCursorStyle = { - "background-color": rgbToHexString(hsbToRGB(activeHSB)), - "left": `${activeHSB.s * 100}%`, - "top": `${(1 - activeHSB.b) * 100}%` - }; - return m$1( - "span", - {class: "hsb-picker"}, - m$1( - "span", - { - class: "hsb-picker__sb-container", - onmousedown: onSBPointerDown, - onupdate: (el) => { - if (store.sbTouchStartHandler) { - el.removeEventListener( - "touchstart", - store.sbTouchStartHandler - ); - } - el.addEventListener("touchstart", onSBPointerDown, { - passive: true - }); - store.sbTouchStartHandler = onSBPointerDown; - } - }, - m$1("canvas", { - class: "hsb-picker__sb-canvas", - onrender: onSBCanvasRender - }), - m$1("span", { - class: "hsb-picker__sb-cursor", - style: sbCursorStyle - }) - ), - m$1( - "span", - { - class: "hsb-picker__hue-container", - onmousedown: onHuePointerDown, - onupdate: (el) => { - if (store.hueTouchStartHandler) { - el.removeEventListener( - "touchstart", - store.hueTouchStartHandler - ); - } - el.addEventListener("touchstart", onHuePointerDown, { - passive: true - }); - store.hueTouchStartHandler = onHuePointerDown; - } - }, - m$1("canvas", { - class: "hsb-picker__hue-canvas", - onrender: onHueCanvasRender - }), - m$1("span", { - class: "hsb-picker__hue-cursor", - style: hueCursorStyle - }) - ) - ); - } - - function isValidColor(color) { - return Boolean(parseColorWithCache(color)); - } - const colorPickerFocuses = new WeakMap(); - function focusColorPicker(node) { - const focus = colorPickerFocuses.get(node); - focus(); - } - function ColorPicker(props) { - const context = getComponentContext(); - context.onRender((node) => colorPickerFocuses.set(node, focus)); - const store = context.store; - const isColorValid = isValidColor(props.color); - function onColorPreview(previewColor) { - store.previewNode.style.backgroundColor = previewColor; - store.textBoxNode.value = previewColor; - store.textBoxNode.blur(); - } - function onColorChange(rawValue) { - const value = rawValue.trim(); - if (isValidColor(value)) { - props.onChange(value); - } else { - props.onChange(props.color); - } - } - function focus() { - if (store.isFocused) { - return; - } - store.isFocused = true; - context.refresh(); - window.addEventListener("mousedown", onOuterClick, {passive: true}); - } - function blur() { - if (!store.isFocused) { - return; - } - window.removeEventListener("mousedown", onOuterClick); - store.isFocused = false; - context.refresh(); - } - function toggleFocus() { - if (store.isFocused) { - blur(); - } else { - focus(); - } - } - function onOuterClick(e) { - if (!e.composedPath().some((el) => el === context.node)) { - blur(); - } - } - const textBox = m$1(TextBox, { - class: "color-picker__input", - onrender: (el) => { - store.textBoxNode = el; - store.textBoxNode.value = isColorValid ? props.color : ""; - }, - onkeypress: (e) => { - const input = e.target; - if (e.key === "Enter") { - const {value} = input; - onColorChange(value); - blur(); - onColorPreview(value); - } - }, - onfocus: focus - }); - const previewElement = m$1("span", { - class: "color-picker__preview", - onclick: toggleFocus, - onrender: (el) => { - store.previewNode = el; - el.style.backgroundColor = isColorValid - ? props.color - : "transparent"; - } - }); - const resetButton = props.canReset - ? m$1("span", { - role: "button", - class: "color-picker__reset", - onclick: () => { - props.onReset(); - blur(); - } - }) - : null; - const textBoxLine = m$1( - "span", - {class: "color-picker__textbox-line"}, - textBox, - previewElement, - resetButton - ); - const hsbLine = isColorValid - ? m$1( - "span", - {class: "color-picker__hsb-line"}, - m$1(HSBPicker, { - color: props.color, - onChange: onColorChange, - onColorPreview: onColorPreview - }) - ) - : null; - return m$1( - "span", - { - class: [ - "color-picker", - store.isFocused && "color-picker--focused", - props.class - ] - }, - m$1("span", {class: "color-picker__wrapper"}, textBoxLine, hsbLine) - ); - } - Object.assign(ColorPicker, {focus: focusColorPicker}); - - function DropDown(props) { - const context = getComponentContext(); - const store = context.store; - if (context.prev) { - const currOptions = props.options.map((o) => o.id); - const prevOptions = context.prev.props.options.map((o) => o.id); - if ( - currOptions.length !== prevOptions.length || - currOptions.some((o, i) => o !== prevOptions[i]) - ) { - store.isOpen = false; - } - } - function saveListNode(el) { - store.listNode = el; - } - function saveSelectedNode(el) { - store.selectedNode = el; - } - function onSelectedClick() { - store.isOpen = !store.isOpen; - context.refresh(); - if (store.isOpen) { - const onOuterClick = (e) => { - window.removeEventListener("mousedown", onOuterClick); - const listRect = store.listNode.getBoundingClientRect(); - const ex = e.clientX; - const ey = e.clientY; - if ( - ex < listRect.left || - ex > listRect.right || - ey < listRect.top || - ey > listRect.bottom - ) { - store.isOpen = false; - context.refresh(); - } - }; - window.addEventListener("mousedown", onOuterClick, { - passive: true - }); - } - } - function createListItem(value) { - return m$1( - "span", - { - class: { - "dropdown__list__item": true, - "dropdown__list__item--selected": - value.id === props.selected, - [props.class]: Boolean(props.class) - }, - onclick: () => { - store.isOpen = false; - context.refresh(); - props.onChange(value.id); - } - }, - value.content - ); - } - const selectedContent = props.options.find( - (value) => value.id === props.selected - ).content; - return m$1( - "span", - { - class: { - "dropdown": true, - "dropdown--open": store.isOpen, - [props.class]: Boolean(props.class) - } - }, - m$1( - "span", - {class: "dropdown__list", oncreate: saveListNode}, - props.options - .slice() - .sort((a, b) => - a.id === props.selected - ? -1 - : b.id === props.selected - ? 1 - : 0 - ) - .map(createListItem) - ), - m$1( - "span", - { - class: "dropdown__selected", - oncreate: saveSelectedNode, - onclick: onSelectedClick - }, - m$1( - "span", - {class: "dropdown__selected__text"}, - selectedContent - ) - ) - ); - } - - const DEFAULT_OVERLAY_KEY = Symbol(); - const overlayNodes = new Map(); - const clickListeners = new WeakMap(); - function getOverlayDOMNode(key) { - if (key == null) { - key = DEFAULT_OVERLAY_KEY; - } - if (!overlayNodes.has(key)) { - const node = document.createElement("div"); - node.classList.add("overlay"); - node.addEventListener( - "click", - (e) => { - if (clickListeners.has(node) && e.currentTarget === node) { - const listener = clickListeners.get(node); - listener(); - } - }, - {passive: true} - ); - overlayNodes.set(key, node); - } - return overlayNodes.get(key); - } - function Overlay(props) { - return getOverlayDOMNode(props.key); - } - function Portal(props, ...content) { - const context = getComponentContext(); - context.onRender(() => { - const node = getOverlayDOMNode(props.key); - if (props.onOuterClick) { - clickListeners.set(node, props.onOuterClick); - } else { - clickListeners.delete(node); - } - render$1(node, content); - }); - context.onRemove(() => { - const container = getOverlayDOMNode(props.key); - render$1(container, null); - }); - return context.leave(); - } - var Overlay$1 = Object.assign(Overlay, {Portal}); - - function MessageBox(props) { - return m$1( - Overlay$1.Portal, - {key: props.portalKey, onOuterClick: props.onCancel}, - m$1( - "div", - {class: "message-box"}, - m$1("label", {class: "message-box__caption"}, props.caption), - m$1( - "div", - {class: "message-box__buttons"}, - m$1( - Button, - { - class: "message-box__button message-box__button-ok", - onclick: props.onOK - }, - "OK" - ), - props.hideCancel - ? null - : m$1( - Button, - { - class: "message-box__button message-box__button-cancel", - onclick: props.onCancel - }, - "Cancel" - ) - ) - ) - ); - } - - function ResetButton$1(props, ...content) { - return m$1( - Button, - {class: ["nav-button", props.class], onclick: props.onClick}, - m$1("span", {class: "nav-button__content"}, ...content) - ); - } - - function ResetButton(props, ...content) { - return m$1( - Button, - {class: "reset-button", onclick: props.onClick}, - m$1( - "span", - {class: "reset-button__content"}, - m$1("span", {class: "reset-button__icon"}), - ...content - ) - ); - } - - function VirtualScroll(props) { - if (props.items.length === 0) { - return props.root; - } - const {store} = getComponentContext(); - function renderContent(root, scrollToIndex) { - if (root.clientWidth === 0) { - return; - } - if (store.itemHeight == null) { - const tempItem = { - ...props.items[0], - props: { - ...props.items[0].props, - oncreate: null, - onupdate: null, - onrender: null - } - }; - const tempNode = render$1(root, tempItem).firstElementChild; - store.itemHeight = tempNode.getBoundingClientRect().height; - } - const {itemHeight} = store; - const wrapper = render$1( - root, - m$1("div", { - style: { - flex: "none", - height: `${props.items.length * itemHeight}px`, - overflow: "hidden", - position: "relative" - } - }) - ).firstElementChild; - if (scrollToIndex >= 0) { - root.scrollTop = scrollToIndex * itemHeight; - } - const containerHeight = - document.documentElement.clientHeight - - root.getBoundingClientRect().top; - let focusedIndex = -1; - if (document.activeElement) { - let current = document.activeElement; - while (current && current.parentElement !== wrapper) { - current = current.parentElement; - } - if (current) { - focusedIndex = store.nodesIndices.get(current); - } - } - store.nodesIndices = store.nodesIndices || new WeakMap(); - const saveNodeIndex = (node, index) => - store.nodesIndices.set(node, index); - const items = props.items - .map((item, index) => { - return {item, index}; - }) - .filter(({index}) => { - const eTop = index * itemHeight; - const eBottom = (index + 1) * itemHeight; - const rTop = root.scrollTop; - const rBottom = root.scrollTop + containerHeight; - const isTopBoundVisible = eTop >= rTop && eTop <= rBottom; - const isBottomBoundVisible = - eBottom >= rTop && eBottom <= rBottom; - return ( - isTopBoundVisible || - isBottomBoundVisible || - focusedIndex === index - ); - }) - .map(({item, index}) => - m$1( - "div", - { - key: index, - onrender: (node) => saveNodeIndex(node, index), - style: { - left: "0", - position: "absolute", - top: `${index * itemHeight}px`, - width: "100%" - } - }, - item - ) - ); - render$1(wrapper, items); - } - let rootNode; - let prevScrollTop; - const rootDidMount = props.root.props.oncreate; - const rootDidUpdate = props.root.props.onupdate; - const rootDidRender = props.root.props.onrender; - return { - ...props.root, - props: { - ...props.root.props, - oncreate: rootDidMount, - onupdate: rootDidUpdate, - onrender: (node) => { - rootNode = node; - rootDidRender && rootDidRender(rootNode); - renderContent( - rootNode, - isNaN(props.scrollToIndex) ? -1 : props.scrollToIndex - ); - }, - onscroll: () => { - if (rootNode.scrollTop === prevScrollTop) { - return; - } - prevScrollTop = rootNode.scrollTop; - renderContent(rootNode, -1); - } - }, - children: [] - }; - } - - function ShortcutLink(props) { - const shortcut = props.shortcuts[props.commandName]; - const shortcutMessage = props.textTemplate(shortcut); - const cls = mergeClass("shortcut", [ - shortcut ? "shortcut--set" : null, - props.class - ]); - function onClick(e) { - e.preventDefault(); - if (isEdge) { - chrome.tabs.create({ - url: `edge://extensions/shortcuts`, - active: true - }); - return; - } - chrome.tabs.create({ - url: `chrome://extensions/configureCommands#command-${chrome.runtime.id}-${props.commandName}`, - active: true - }); - } - function onRender(node) { - node.textContent = shortcutMessage; - } - return m$1("a", { - class: cls, - href: "#", - onclick: onClick, - oncreate: onRender - }); - } - - function parseTime($time) { - const parts = $time.split(":").slice(0, 2); - const lowercased = $time.trim().toLowerCase(); - const isAM = lowercased.endsWith("am") || lowercased.endsWith("a.m."); - const isPM = lowercased.endsWith("pm") || lowercased.endsWith("p.m."); - let hours = parts.length > 0 ? parseInt(parts[0]) : 0; - if (isNaN(hours) || hours > 23) { - hours = 0; - } - if (isAM && hours === 12) { - hours = 0; - } - if (isPM && hours < 12) { - hours += 12; - } - let minutes = parts.length > 1 ? parseInt(parts[1]) : 0; - if (isNaN(minutes) || minutes > 59) { - minutes = 0; - } - return [hours, minutes]; - } - - function toLong24HTime($time) { - const [hours, minutes] = parseTime($time); - const hh = `${hours < 10 ? "0" : ""}${hours}`; - const mm = `${minutes < 10 ? "0" : ""}${minutes}`; - return `${hh}:${mm}`; - } - function to24HTime($time) { - const [hours, minutes] = parseTime($time); - const mm = `${minutes < 10 ? "0" : ""}${minutes}`; - return `${hours}:${mm}`; - } - function TimeRangePicker(props) { - function onStartTimeChange($startTime) { - props.onChange([to24HTime($startTime), props.endTime]); - } - function onEndTimeChange($endTime) { - props.onChange([props.startTime, to24HTime($endTime)]); - } - function setStartTime(node) { - node.value = toLong24HTime(props.startTime); - } - function setEndTime(node) { - node.value = toLong24HTime(props.endTime); - } - return m$1( - "span", - {class: "time-range-picker"}, - m$1(TextBox, { - class: "time-range-picker__input time-range-picker__input--start", - type: "time", - placeholder: "18:00", - onrender: setStartTime, - onchange: (e) => onStartTimeChange(e.target.value), - onkeypress: (e) => { - if (e.key === "Enter") { - const input = e.target; - input.blur(); - onStartTimeChange(input.value); - } - } - }), - m$1(TextBox, { - class: "time-range-picker__input time-range-picker__input--end", - type: "time", - placeholder: "09:00", - onrender: setEndTime, - onchange: (e) => onEndTimeChange(e.target.value), - onkeypress: (e) => { - if (e.key === "Enter") { - const input = e.target; - input.blur(); - onEndTimeChange(input.value); - } - } - }) - ); - } - - function getLocalMessage(messageName) { - return chrome.i18n.getMessage(messageName) || messageName; - } - function getUILanguage() { - let code; - if ( - "i18n" in chrome && - "getUILanguage" in chrome.i18n && - typeof chrome.i18n.getUILanguage === "function" - ) { - code = chrome.i18n.getUILanguage(); - } else { - code = navigator.language.split("-")[0]; - } - if (code.endsWith("-mac")) { - return code.substring(0, code.length - 4); - } - return code; - } - - function AdvancedIcon() { - return m$1( - "svg", - {viewBox: "0 0 16 16"}, - m$1( - "defs", - null, - m$1("path", {id: "cog", d: "M-1.25,-6.5 h2.5 l1,3 h-4.5 z"}), - m$1( - "g", - {id: "cogwheel"}, - m$1("path", { - d: "M0,-5 a5,5 0 0 1 0,10 a5,5 0 0 1 0,-10 z M0,-3 a3,3 0 0 0 0,6 a3,3 0 0 0 0,-6 z" - }), - m$1("use", {href: "#cog"}), - m$1("use", {href: "#cog", transform: "rotate(60)"}), - m$1("use", {href: "#cog", transform: "rotate(120)"}), - m$1("use", {href: "#cog", transform: "rotate(180)"}), - m$1("use", {href: "#cog", transform: "rotate(240)"}), - m$1("use", {href: "#cog", transform: "rotate(300)"}) - ) - ), - m$1( - "g", - {fill: "currentColor"}, - m$1("use", { - href: "#cogwheel", - transform: "translate(8 4) scale(0.5)" - }), - m$1("use", { - href: "#cogwheel", - transform: "translate(4 11) scale(0.5)" - }), - m$1("use", { - href: "#cogwheel", - transform: "translate(12 11) scale(0.5)" - }) - ) - ); - } - - function DeleteIcon() { - return m$1( - "svg", - {viewBox: "0 0 16 16"}, - m$1("path", { - fill: "currentColor", - d: "M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6z" - }), - m$1("path", { - "fill": "currentColor", - "fill-rule": "evenodd", - "d": "M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1zM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118zM2.5 3V2h11v1h-11z" - }) - ); - } - - function HelpIcon() { - return m$1( - "svg", - {viewBox: "0 0 16 16"}, - m$1("circle", { - "fill": "none", - "stroke": "currentColor", - "stroke-width": "1", - "cx": "8", - "cy": "8", - "r": "7" - }), - m$1( - "text", - { - "fill": "currentColor", - "x": "8", - "y": "12", - "text-anchor": "middle", - "font-size": "12", - "font-weight": "bold" - }, - "?" - ) - ); - } - - function KeyboardIcon() { - return m$1( - "svg", - {viewBox: "0 0 16 16"}, - m$1("rect", { - "fill": "none", - "stroke": "var(--icon-color, currentColor)", - "stroke-width": "1", - "x": "2", - "y": "4", - "width": "12", - "height": "8" - }), - m$1( - "g", - { - "stroke": "var(--icon-color, currentColor)", - "stroke-width": "1" - }, - m$1("line", {x1: "4", y1: "10", x2: "12", y2: "10"}), - m$1("line", {x1: "4", y1: "6", x2: "6", y2: "6"}), - m$1("line", {x1: "7", y1: "6", x2: "9", y2: "6"}), - m$1("line", {x1: "10", y1: "6", x2: "12", y2: "6"}), - m$1("line", {x1: "5.5", y1: "8", x2: "7.5", y2: "8"}), - m$1("line", {x1: "8.5", y1: "8", x2: "10.5", y2: "8"}) - ) - ); - } - - function ListIcon() { - return m$1( - "svg", - {viewBox: "0 0 8 8"}, - m$1("path", { - d: "M0,0 h1 v1 h-1 z m2,0 h6 v1 h-6 z m-2,3.25 h1 v1 h-1 z m2,0 h6 v1 h-6 z m-2,3.25 h1 v1 h-1 z m2,0 h6 v1 h-6 z", - fill: "currentColor" - }) - ); - } - - function SettingsIcon(props) { - return m$1( - "svg", - {viewBox: "0 0 16 16", class: props.class}, - m$1( - "defs", - null, - m$1("path", {id: "cog", d: "M-1.25,-6.5 h2.5 l1,3 h-4.5 z"}) - ), - m$1( - "g", - { - transform: "translate(8 8)", - fill: props.color ?? "currentColor" - }, - m$1("path", { - d: "M0,-5 a5,5 0 0 1 0,10 a5,5 0 0 1 0,-10 z M0,-3 a3,3 0 0 0 0,6 a3,3 0 0 0 0,-6 z" - }), - m$1("use", {href: "#cog"}), - m$1("use", {href: "#cog", transform: "rotate(60)"}), - m$1("use", {href: "#cog", transform: "rotate(120)"}), - m$1("use", {href: "#cog", transform: "rotate(180)"}), - m$1("use", {href: "#cog", transform: "rotate(240)"}), - m$1("use", {href: "#cog", transform: "rotate(300)"}) - ) - ); - } - - function WatchIcon(props) { - const {hours, minutes, color = "white"} = props; - const cx = 8; - const cy = 8.5; - const lenHour = 3; - const lenMinute = 4; - const clockR = 5.5; - const btnSize = 2; - const btnPad = 1.5; - const ah = - (((hours > 11 ? hours - 12 : hours) + minutes / 60) / 12) * - Math.PI * - 2; - const am = (minutes / 60) * Math.PI * 2; - const hx = cx + lenHour * Math.sin(ah); - const hy = cy - lenHour * Math.cos(ah); - const mx = cx + lenMinute * Math.sin(am); - const my = cy - lenMinute * Math.cos(am); - return m$1( - "svg", - {viewBox: "0 0 16 16"}, - m$1("circle", { - "fill": "none", - "stroke": color, - "stroke-width": "1.5", - "cx": cx, - "cy": cy, - "r": clockR - }), - m$1("line", { - "stroke": color, - "stroke-width": "1.5", - "x1": cx, - "y1": cy, - "x2": hx, - "y2": hy - }), - m$1("line", { - "stroke": color, - "stroke-width": "1.5", - "opacity": "0.67", - "x1": cx, - "y1": cy, - "x2": mx, - "y2": my - }), - [30, -30].map((angle) => { - return m$1("path", { - "fill": color, - "transform": `rotate(${angle})`, - "transform-origin": `${cx} ${cy}`, - "d": `M${cx - btnSize},${cy - clockR - btnPad} a${btnSize},${btnSize} 0 0 1 ${2 * btnSize},0 z` - }); - }) - ); - } - - const DONATE_URL = "https://darkreader.org/support-us/"; - const PRIVACY_URL = "https://darkreader.org/privacy/"; - const HELP_URL = "https://darkreader.org/help"; - const helpLocales = [ - "be", - "cs", - "de", - "en", - "es", - "fr", - "it", - "ja", - "nl", - "pt", - "ru", - "sr", - "tr", - "zh-CN", - "zh-TW" - ]; - function getHelpURL() { - const locale = getUILanguage(); - const matchLocale = - helpLocales.find((hl) => hl === locale) || - helpLocales.find((hl) => locale.startsWith(hl)) || - "en"; - return `${HELP_URL}/${matchLocale}/`; - } - - let appVersion; - function AppVersion() { - if (!appVersion) { - appVersion = chrome.runtime.getManifest().version; - } - return m$1( - "label", - {class: "darkreader-version"}, - getLocalMessage("version"), - " ", - appVersion - ); - } - - function AboutTab() { - return m$1( - "div", - {class: "settings-tab about-tab"}, - m$1(AppVersion, null), - m$1( - "div", - null, - m$1( - "a", - { - href: PRIVACY_URL, - target: "_blank", - rel: "noopener noreferrer" - }, - "Privacy Policy" - ) - ), - m$1( - "div", - null, - m$1( - "a", - { - href: getHelpURL(), - target: "_blank", - rel: "noopener noreferrer" - }, - getLocalMessage("help") - ) - ), - m$1( - "div", - null, - m$1( - "a", - { - href: DONATE_URL, - target: "_blank", - rel: "noopener noreferrer" - }, - getLocalMessage("pay_for_using") - ) - ) - ); - } - - function ContextMenus(props) { - function onContextMenusChange(checked) { - if (checked) { - chrome.permissions.request( - {permissions: ["contextMenus"]}, - (hasPermission) => { - if (hasPermission) { - props.actions.changeSettings({ - enableContextMenus: true - }); - } else { - console.warn( - "User declined contextMenus permission prompt." - ); - } - } - ); - } else { - props.actions.changeSettings({enableContextMenus: false}); - } - } - return isMobile - ? null - : m$1(CheckButton, { - checked: props.data.settings.enableContextMenus, - label: "Use context menus", - description: props.data.settings.enableContextMenus - ? "Context menu integration is enabled" - : "Context menu integration is disabled", - onChange: onContextMenusChange - }); - } - - async function openDevTools() { - await openExtensionPage("devtools"); - } - function DevTools() { - return m$1( - ControlGroup$1, - null, - m$1( - ControlGroup$1.Control, - null, - m$1( - ResetButton$1, - { - onClick: openDevTools, - class: "advanced__dev-tools-button" - }, - "\uD83D\uDEE0 ", - getLocalMessage("open_dev_tools") - ) - ), - m$1(ControlGroup$1.Description, null, "Make a fix for a website") - ); - } - - function EnableForProtectedPages(props) { - function onEnableForProtectedPages(value) { - props.actions.changeSettings({enableForProtectedPages: value}); - } - return m$1(CheckButton, { - checked: props.data.settings.enableForProtectedPages, - onChange: onEnableForProtectedPages, - label: "Enable on restricted pages", - description: props.data.settings.enableForProtectedPages - ? "You should enable it in browser flags too" - : "Disabled for web store and other pages" - }); - } - - function ExportSettings(props) { - function exportSettings() { - saveFile( - "Dark-Reader-Settings.json", - JSON.stringify(props.data.settings, null, 4) - ); - } - return m$1( - ControlGroup$1, - null, - m$1( - ControlGroup$1.Control, - null, - m$1( - Button, - { - onclick: exportSettings, - class: "advanced__export-settings-button" - }, - "Export Settings" - ) - ), - m$1( - ControlGroup$1.Description, - null, - "Save settings to a JSON file" - ) - ); - } - - var ThemeEngine; - (function (ThemeEngine) { - ThemeEngine["cssFilter"] = "cssFilter"; - ThemeEngine["svgFilter"] = "svgFilter"; - ThemeEngine["staticTheme"] = "staticTheme"; - ThemeEngine["dynamicTheme"] = "dynamicTheme"; - })(ThemeEngine || (ThemeEngine = {})); - - var AutomationMode; - (function (AutomationMode) { - AutomationMode["NONE"] = ""; - AutomationMode["TIME"] = "time"; - AutomationMode["SYSTEM"] = "system"; - AutomationMode["LOCATION"] = "location"; - })(AutomationMode || (AutomationMode = {})); - - const DEFAULT_COLORS = { - darkScheme: { - background: "#181a1b", - text: "#e8e6e3" - }, - lightScheme: { - background: "#dcdad7", - text: "#181a1b" - } - }; - const DEFAULT_THEME = { - mode: 1, - brightness: 100, - contrast: 100, - grayscale: 0, - sepia: 0, - useFont: false, - fontFamily: isMacOS - ? "Helvetica Neue" - : isWindows - ? "Segoe UI" - : "Open Sans", - textStroke: 0, - engine: ThemeEngine.dynamicTheme, - stylesheet: "", - darkSchemeBackgroundColor: DEFAULT_COLORS.darkScheme.background, - darkSchemeTextColor: DEFAULT_COLORS.darkScheme.text, - lightSchemeBackgroundColor: DEFAULT_COLORS.lightScheme.background, - lightSchemeTextColor: DEFAULT_COLORS.lightScheme.text, - scrollbarColor: "", - selectionColor: "auto", - styleSystemControls: false, - lightColorScheme: "Default", - darkColorScheme: "Default", - immediateModify: false - }; - const filterModeSites = [ - "*.officeapps.live.com", - "*.sharepoint.com", - "docs.google.com", - "onedrive.live.com" - ]; - const DEFAULT_SETTINGS = { - schemeVersion: 0, - enabled: true, - fetchNews: true, - theme: DEFAULT_THEME, - presets: [], - customThemes: filterModeSites.map((url) => { - const engine = ThemeEngine.svgFilter; - return { - url: [url], - theme: {...DEFAULT_THEME, engine}, - builtIn: true - }; - }), - enabledByDefault: true, - enabledFor: [], - disabledFor: [], - changeBrowserTheme: false, - syncSettings: true, - syncSitesFixes: false, - automation: { - enabled: isEdge && isMobile ? true : false, - mode: - isEdge && isMobile - ? AutomationMode.SYSTEM - : AutomationMode.NONE, - behavior: "OnOff" - }, - time: { - activation: "18:00", - deactivation: "9:00" - }, - location: { - latitude: null, - longitude: null - }, - previewNewDesign: false, - previewNewestDesign: false, - enableForPDF: true, - enableForProtectedPages: false, - enableContextMenus: false, - detectDarkTheme: true - }; - - function isBoolean(x) { - return typeof x === "boolean"; - } - function isPlainObject(x) { - return typeof x === "object" && x != null && !Array.isArray(x); - } - function isArray(x) { - return Array.isArray(x); - } - function isString(x) { - return typeof x === "string"; - } - function isNonEmptyString(x) { - return x && isString(x); - } - function isNonEmptyArrayOfNonEmptyStrings(x) { - return ( - Array.isArray(x) && - x.length > 0 && - x.every((s) => isNonEmptyString(s)) - ); - } - function isRegExpMatch(regexp) { - return (x) => { - return isString(x) && x.match(regexp) != null; - }; - } - const isTime = isRegExpMatch( - /^((0?[0-9])|(1[0-9])|(2[0-3])):([0-5][0-9])$/ - ); - function isNumber(x) { - return typeof x === "number" && !isNaN(x); - } - function isNumberBetween(min, max) { - return (x) => { - return isNumber(x) && x >= min && x <= max; - }; - } - function isOneOf(...values) { - return (x) => values.includes(x); - } - function hasRequiredProperties(obj, keys) { - return keys.every((key) => obj.hasOwnProperty(key)); - } - function createValidator() { - const errors = []; - function validateProperty(obj, key, validator, fallback) { - if (!obj.hasOwnProperty(key) || validator(obj[key])) { - return; - } - errors.push( - `Unexpected value for "${key}": ${JSON.stringify(obj[key])}` - ); - obj[key] = fallback[key]; - } - function validateArray(obj, key, validator) { - if (!obj.hasOwnProperty(key)) { - return; - } - const wrongValues = new Set(); - const arr = obj[key]; - for (let i = 0; i < arr.length; i++) { - if (!validator(arr[i])) { - wrongValues.add(arr[i]); - arr.splice(i, 1); - i--; - } - } - if (wrongValues.size > 0) { - errors.push( - `Array "${key}" has wrong values: ${Array.from(wrongValues) - .map((v) => JSON.stringify(v)) - .join("; ")}` - ); - } - } - return {validateProperty, validateArray, errors}; - } - function validateSettings(settings) { - if (!isPlainObject(settings)) { - return { - errors: ["Settings are not a plain object"], - settings: DEFAULT_SETTINGS - }; - } - const {validateProperty, validateArray, errors} = createValidator(); - const isValidPresetTheme = (theme) => { - if (!isPlainObject(theme)) { - return false; - } - const {errors: themeErrors} = validateTheme(theme); - return themeErrors.length === 0; - }; - validateProperty(settings, "schemeVersion", isNumber, DEFAULT_SETTINGS); - validateProperty(settings, "enabled", isBoolean, DEFAULT_SETTINGS); - validateProperty(settings, "fetchNews", isBoolean, DEFAULT_SETTINGS); - validateProperty(settings, "theme", isPlainObject, DEFAULT_SETTINGS); - const {errors: themeErrors} = validateTheme(settings.theme); - errors.push(...themeErrors); - validateProperty(settings, "presets", isArray, DEFAULT_SETTINGS); - validateArray(settings, "presets", (preset) => { - const presetValidator = createValidator(); - if ( - !( - isPlainObject(preset) && - hasRequiredProperties(preset, [ - "id", - "name", - "urls", - "theme" - ]) - ) - ) { - return false; - } - presetValidator.validateProperty( - preset, - "id", - isNonEmptyString, - preset - ); - presetValidator.validateProperty( - preset, - "name", - isNonEmptyString, - preset - ); - presetValidator.validateProperty( - preset, - "urls", - isNonEmptyArrayOfNonEmptyStrings, - preset - ); - presetValidator.validateProperty( - preset, - "theme", - isValidPresetTheme, - preset - ); - return presetValidator.errors.length === 0; - }); - validateProperty(settings, "customThemes", isArray, DEFAULT_SETTINGS); - validateArray(settings, "customThemes", (custom) => { - if ( - !( - isPlainObject(custom) && - hasRequiredProperties(custom, ["url", "theme"]) - ) - ) { - return false; - } - const presetValidator = createValidator(); - presetValidator.validateProperty( - custom, - "url", - isNonEmptyArrayOfNonEmptyStrings, - custom - ); - presetValidator.validateProperty( - custom, - "theme", - isValidPresetTheme, - custom - ); - return presetValidator.errors.length === 0; - }); - validateProperty(settings, "enabledFor", isArray, DEFAULT_SETTINGS); - validateArray(settings, "enabledFor", isNonEmptyString); - validateProperty(settings, "disabledFor", isArray, DEFAULT_SETTINGS); - validateArray(settings, "disabledFor", isNonEmptyString); - validateProperty( - settings, - "enabledByDefault", - isBoolean, - DEFAULT_SETTINGS - ); - validateProperty( - settings, - "changeBrowserTheme", - isBoolean, - DEFAULT_SETTINGS - ); - validateProperty(settings, "syncSettings", isBoolean, DEFAULT_SETTINGS); - validateProperty( - settings, - "syncSitesFixes", - isBoolean, - DEFAULT_SETTINGS - ); - validateProperty( - settings, - "automation", - (automation) => { - if (!isPlainObject(automation)) { - return false; - } - const automationValidator = createValidator(); - automationValidator.validateProperty( - automation, - "enabled", - isBoolean, - automation - ); - automationValidator.validateProperty( - automation, - "mode", - isOneOf( - AutomationMode.SYSTEM, - AutomationMode.TIME, - AutomationMode.LOCATION, - AutomationMode.NONE - ), - automation - ); - automationValidator.validateProperty( - automation, - "behavior", - isOneOf("OnOff", "Scheme"), - automation - ); - return automationValidator.errors.length === 0; - }, - DEFAULT_SETTINGS - ); - validateProperty( - settings, - AutomationMode.TIME, - (time) => { - if (!isPlainObject(time)) { - return false; - } - const timeValidator = createValidator(); - timeValidator.validateProperty( - time, - "activation", - isTime, - time - ); - timeValidator.validateProperty( - time, - "deactivation", - isTime, - time - ); - return timeValidator.errors.length === 0; - }, - DEFAULT_SETTINGS - ); - validateProperty( - settings, - AutomationMode.LOCATION, - (location) => { - if (!isPlainObject(location)) { - return false; - } - const locValidator = createValidator(); - const isValidLoc = (x) => x === null || isNumber(x); - locValidator.validateProperty( - location, - "latitude", - isValidLoc, - location - ); - locValidator.validateProperty( - location, - "longitude", - isValidLoc, - location - ); - return locValidator.errors.length === 0; - }, - DEFAULT_SETTINGS - ); - validateProperty( - settings, - "previewNewDesign", - isBoolean, - DEFAULT_SETTINGS - ); - validateProperty( - settings, - "previewNewestDesign", - isBoolean, - DEFAULT_SETTINGS - ); - validateProperty(settings, "enableForPDF", isBoolean, DEFAULT_SETTINGS); - validateProperty( - settings, - "enableForProtectedPages", - isBoolean, - DEFAULT_SETTINGS - ); - validateProperty( - settings, - "enableContextMenus", - isBoolean, - DEFAULT_SETTINGS - ); - validateProperty( - settings, - "detectDarkTheme", - isBoolean, - DEFAULT_SETTINGS - ); - return {errors, settings}; - } - function validateTheme(theme) { - if (!isPlainObject(theme)) { - return { - errors: ["Theme is not a plain object"], - theme: DEFAULT_THEME - }; - } - const {validateProperty, errors} = createValidator(); - validateProperty(theme, "mode", isOneOf(0, 1), DEFAULT_THEME); - validateProperty( - theme, - "brightness", - isNumberBetween(0, 200), - DEFAULT_THEME - ); - validateProperty( - theme, - "contrast", - isNumberBetween(0, 200), - DEFAULT_THEME - ); - validateProperty( - theme, - "grayscale", - isNumberBetween(0, 100), - DEFAULT_THEME - ); - validateProperty( - theme, - "sepia", - isNumberBetween(0, 100), - DEFAULT_THEME - ); - validateProperty(theme, "useFont", isBoolean, DEFAULT_THEME); - validateProperty(theme, "fontFamily", isNonEmptyString, DEFAULT_THEME); - validateProperty( - theme, - "textStroke", - isNumberBetween(0, 1), - DEFAULT_THEME - ); - validateProperty( - theme, - "engine", - isOneOf("dynamicTheme", "staticTheme", "cssFilter", "svgFilter"), - DEFAULT_THEME - ); - validateProperty(theme, "stylesheet", isString, DEFAULT_THEME); - validateProperty( - theme, - "darkSchemeBackgroundColor", - isRegExpMatch(/^#[0-9a-f]{6}$/i), - DEFAULT_THEME - ); - validateProperty( - theme, - "darkSchemeTextColor", - isRegExpMatch(/^#[0-9a-f]{6}$/i), - DEFAULT_THEME - ); - validateProperty( - theme, - "lightSchemeBackgroundColor", - isRegExpMatch(/^#[0-9a-f]{6}$/i), - DEFAULT_THEME - ); - validateProperty( - theme, - "lightSchemeTextColor", - isRegExpMatch(/^#[0-9a-f]{6}$/i), - DEFAULT_THEME - ); - validateProperty( - theme, - "scrollbarColor", - (x) => x === "" || isRegExpMatch(/^(auto)|(#[0-9a-f]{6})$/i)(x), - DEFAULT_THEME - ); - validateProperty( - theme, - "selectionColor", - isRegExpMatch(/^(auto)|(#[0-9a-f]{6})$/i), - DEFAULT_THEME - ); - validateProperty( - theme, - "styleSystemControls", - isBoolean, - DEFAULT_THEME - ); - validateProperty( - theme, - "lightColorScheme", - isNonEmptyString, - DEFAULT_THEME - ); - validateProperty( - theme, - "darkColorScheme", - isNonEmptyString, - DEFAULT_THEME - ); - validateProperty(theme, "immediateModify", isBoolean, DEFAULT_THEME); - return {errors, theme}; - } - - function ImportSettings(props) { - const context = getComponentContext(); - function showDialog(caption) { - context.store.caption = caption; - context.store.isDialogVisible = true; - context.refresh(); - } - function hideDialog() { - context.store.isDialogVisible = false; - context.refresh(); - } - const dialog = - context && context.store.isDialogVisible - ? m$1(MessageBox, { - caption: context.store.caption, - onOK: hideDialog, - onCancel: hideDialog, - hideCancel: true - }) - : null; - function importSettings() { - openFile({extensions: ["json"]}, (result) => { - try { - const content = JSON.parse(result); - const {settings, errors} = validateSettings(content); - const count = errors.length; - if (count) { - console.error( - "Could not validate imported settings", - errors, - result, - content - ); - showDialog( - `The given file has incorrect JSON: ${count > 1 ? `${count} errors, including ${errors[0]}` : errors[0]}` - ); - return; - } - props.actions.changeSettings(settings); - showDialog("Settings imported"); - } catch (err) { - console.error(err); - showDialog("Failed to read file"); - } - }); - } - return m$1( - ControlGroup$1, - null, - m$1( - ControlGroup$1.Control, - null, - m$1( - Button, - { - onclick: importSettings, - class: "advanced__import-settings-button" - }, - "Import Settings", - dialog - ) - ), - m$1( - ControlGroup$1.Description, - null, - "Open settings from a JSON file" - ) - ); - } - - function ResetSettings(props) { - const context = getComponentContext(); - function showDialog() { - context.store.isDialogVisible = true; - context.refresh(); - } - function hideDialog() { - context.store.isDialogVisible = false; - context.refresh(); - } - function reset() { - context.store.isDialogVisible = false; - props.actions.changeSettings(DEFAULT_SETTINGS); - } - const dialog = context.store.isDialogVisible - ? m$1(MessageBox, { - caption: - "Are you sure you want to remove all your settings? You cannot restore them later", - onOK: reset, - onCancel: hideDialog - }) - : null; - return m$1( - ControlGroup$1, - null, - m$1( - ControlGroup$1.Control, - null, - m$1( - ResetButton, - {onClick: showDialog}, - "Reset settings", - dialog - ) - ), - m$1( - ControlGroup$1.Description, - null, - "Restore settings to defaults" - ) - ); - } - - function SyncConfig(props) { - function syncConfig(syncSitesFixes) { - props.actions.changeSettings({syncSitesFixes}); - props.actions.loadConfig({local: !syncSitesFixes}); - } - return m$1(CheckButton, { - checked: props.data.settings.syncSitesFixes, - label: "Synchronize sites fixes", - description: "Load the latest sites fixes from a remote server", - onChange: syncConfig - }); - } - - function SyncSettings(props) { - function onSyncSettingsChange(checked) { - props.actions.changeSettings({syncSettings: checked}); - } - return m$1(CheckButton, { - checked: props.data.settings.syncSettings, - label: "Enable settings sync", - description: props.data.settings.syncSettings - ? "Synchronized across devices" - : "Not synchronized across devices", - onChange: onSyncSettingsChange - }); - } - - function AdvancedTab(props) { - return m$1( - "div", - {class: "settings-tab"}, - m$1(SyncSettings, {...props}), - m$1(SyncConfig, {...props}), - m$1(EnableForProtectedPages, {...props}), - m$1(ContextMenus, {...props}), - m$1(ImportSettings, {...props}), - m$1(ExportSettings, {...props}), - m$1(ResetSettings, {...props}), - m$1(DevTools, null) - ); - } - - function AutomationTab(props) { - const isSystemAutomation = - props.data.settings.automation.mode === AutomationMode.SYSTEM && - props.data.settings.automation.enabled; - const locationSettings = props.data.settings.location; - const values = { - latitude: { - min: -90, - max: 90 - }, - longitude: { - min: -180, - max: 180 - } - }; - function getLocationString(location) { - if (location == null) { - return ""; - } - return `${location}°`; - } - function locationChanged(inputElement, newValue, type) { - if (newValue.trim() === "") { - inputElement.value = ""; - props.actions.changeSettings({ - location: { - ...locationSettings, - [type]: null - } - }); - return; - } - const min = values[type].min; - const max = values[type].max; - newValue = newValue.replace(",", ".").replace("°", ""); - let num = Number(newValue); - if (isNaN(num)) { - num = 0; - } else if (num > max) { - num = max; - } else if (num < min) { - num = min; - } - inputElement.value = getLocationString(num); - props.actions.changeSettings({ - location: { - ...locationSettings, - [type]: num - } - }); - } - function changeAutomationMode(mode) { - props.actions.changeSettings({ - automation: { - ...props.data.settings.automation, - ...{mode, enabled: Boolean(mode)} - } - }); - } - function changeAutomationBehavior(behavior) { - props.actions.changeSettings({ - automation: {...props.data.settings.automation, ...{behavior}} - }); - } - return m$1( - "div", - {class: "settings-tab"}, - m$1( - ControlGroup$1, - null, - m$1( - ControlGroup$1.Control, - {class: "automation__time-picker-control"}, - m$1(CheckBox, { - checked: - props.data.settings.automation.mode === - AutomationMode.TIME, - onchange: (e) => - changeAutomationMode( - e.target.checked - ? AutomationMode.TIME - : AutomationMode.NONE - ) - }), - m$1(TimeRangePicker, { - startTime: props.data.settings.time.activation, - endTime: props.data.settings.time.deactivation, - onChange: ([start, end]) => - props.actions.changeSettings({ - time: {activation: start, deactivation: end} - }) - }) - ), - m$1( - ControlGroup$1.Description, - null, - getLocalMessage("set_active_hours") - ) - ), - m$1( - ControlGroup$1, - null, - m$1( - ControlGroup$1.Control, - {class: "automation__location-control"}, - m$1(CheckBox, { - checked: - props.data.settings.automation.mode === - AutomationMode.LOCATION, - onchange: (e) => - changeAutomationMode( - e.target.checked - ? AutomationMode.LOCATION - : AutomationMode.NONE - ) - }), - m$1(TextBox, { - class: "automation__location-control__latitude", - placeholder: getLocalMessage("latitude"), - onchange: (e) => - locationChanged( - e.target, - e.target.value, - "latitude" - ), - oncreate: (node) => - (node.value = getLocationString( - locationSettings.latitude - )), - onkeypress: (e) => { - if (e.key === "Enter") { - e.target.blur(); - } - } - }), - m$1(TextBox, { - class: "automation__location-control__longitude", - placeholder: getLocalMessage("longitude"), - onchange: (e) => - locationChanged( - e.target, - e.target.value, - "longitude" - ), - oncreate: (node) => - (node.value = getLocationString( - locationSettings.longitude - )), - onkeypress: (e) => { - if (e.key === "Enter") { - e.target.blur(); - } - } - }) - ), - m$1( - ControlGroup$1.Description, - null, - getLocalMessage("set_location") - ) - ), - m$1( - ControlGroup$1, - null, - m$1( - ControlGroup$1.Control, - {class: "automation__system-control"}, - m$1(CheckBox, { - class: "automation__system-control__checkbox", - checked: isSystemAutomation, - onchange: (e) => - changeAutomationMode( - e.target.checked - ? AutomationMode.SYSTEM - : AutomationMode.NONE - ) - }), - m$1( - Button, - { - class: { - "automation__system-control__button": true, - "automation__system-control__button--active": - isSystemAutomation - }, - onclick: () => { - { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.COLOR_SCHEME_CHANGE, - data: { - isDark: matchMedia( - "(prefers-color-scheme: dark)" - ).matches - } - }); - } - changeAutomationMode( - isSystemAutomation - ? AutomationMode.NONE - : AutomationMode.SYSTEM - ); - } - }, - getLocalMessage("system_dark_mode") - ) - ), - m$1( - ControlGroup$1.Description, - null, - getLocalMessage("system_dark_mode_description"), - !isMatchMediaChangeEventListenerBuggy - ? null - : [ - m$1("br", null), - getLocalMessage( - "system_dark_mode_chromium_warning" - ) - ] - ) - ), - m$1( - ControlGroup$1, - null, - m$1( - ControlGroup$1.Control, - {class: "automation__behavior"}, - m$1(DropDown, { - onChange: (selected) => - changeAutomationBehavior(selected), - selected: props.data.settings.automation.behavior, - options: [ - {id: "OnOff", content: "Toggle on/off"}, - {id: "Scheme", content: "Toggle dark/light"} - ] - }) - ), - m$1(ControlGroup$1.Description, null, "Automation behavior") - ) - ); - } - - function DetectDarkTheme(props) { - function onDetectDarkThemeChange(checked) { - props.actions.changeSettings({detectDarkTheme: checked}); - } - return m$1(CheckButton, { - checked: props.data.settings.detectDarkTheme, - label: "Detect dark theme", - description: props.data.settings.detectDarkTheme - ? `Will not override website's dark theme` - : `Will override website's dark theme`, - onChange: onDetectDarkThemeChange - }); - } - - function EnabledByDefault(props) { - function onEnabledByDefaultChange(checked) { - props.actions.changeSettings({enabledByDefault: checked}); - } - return m$1(CheckButton, { - checked: props.data.settings.enabledByDefault, - label: "Enable by default", - description: props.data.settings.enabledByDefault - ? "Enabled on all websites by default" - : "Disabled on all websites by default", - onChange: onEnabledByDefaultChange - }); - } - - function EnableForPDF(props) { - function onInvertPDFChange(checked) { - props.actions.changeSettings({enableForPDF: checked}); - } - return m$1(CheckButton, { - checked: props.data.settings.enableForPDF, - label: "Enable for PDF files", - description: props.data.settings.enableForPDF - ? "Enabled for PDF documents" - : "Disabled for PDF documents", - onChange: onInvertPDFChange - }); - } - - function GeneralTab(props) { - return m$1( - "div", - {class: "settings-tab"}, - m$1(EnabledByDefault, {...props}), - m$1(DetectDarkTheme, {...props}), - m$1(EnableForPDF, {...props}), - null - ); - } - - function HotkeysTab(props) { - const {data, actions} = props; - return m$1( - "div", - {class: "settings-tab"}, - m$1( - ControlGroup$1, - null, - m$1( - ControlGroup$1.Control, - null, - m$1(ShortcutLink, { - class: "hotkeys__control", - commandName: "toggle", - shortcuts: data.shortcuts, - textTemplate: (hotkey) => - hotkey - ? hotkey - : getLocalMessage("click_to_set_shortcut"), - onSetShortcut: (shortcut) => - actions.setShortcut("toggle", shortcut) - }) - ), - m$1( - ControlGroup$1.Description, - null, - "Enable/disable the extension" - ) - ), - m$1( - ControlGroup$1, - null, - m$1( - ControlGroup$1.Control, - null, - m$1(ShortcutLink, { - class: "hotkeys__control", - commandName: "addSite", - shortcuts: data.shortcuts, - textTemplate: (hotkey) => - hotkey - ? hotkey - : getLocalMessage("click_to_set_shortcut"), - onSetShortcut: (shortcut) => - actions.setShortcut("addSite", shortcut) - }) - ), - m$1( - ControlGroup$1.Description, - null, - "Toggle the current website" - ) - ) - ); - } - - function ClearSiteList(props) { - const context = getComponentContext(); - const store = context.getStore({isDialogVisible: false}); - function showDialog() { - store.isDialogVisible = true; - context.refresh(); - } - function hideDialog() { - store.isDialogVisible = false; - context.refresh(); - } - function reset() { - store.isDialogVisible = false; - props.actions.changeSettings({enabledFor: [], disabledFor: []}); - } - const dialog = store.isDialogVisible - ? m$1(MessageBox, { - caption: - "Are you sure you want to remove all your sites from the list? You cannot restore them later", - onOK: reset, - onCancel: hideDialog - }) - : null; - return m$1( - ControlGroup$1, - null, - m$1( - ControlGroup$1.Control, - null, - m$1( - Button, - {onclick: showDialog, class: "clear-site-list-button"}, - m$1( - "span", - {class: "clear-site-list-button__content"}, - m$1( - "span", - {class: "clear-site-list-button__icon"}, - m$1(DeleteIcon, null) - ), - "Clear site list" - ), - dialog - ) - ), - m$1( - ControlGroup$1.Description, - null, - "Remove all sites from the list" - ) - ); - } - - function SiteList(props) { - const context = getComponentContext(); - const store = context.store; - if (!context.prev) { - store.indices = new WeakMap(); - store.shouldFocusAtIndex = -1; - store.wasVisible = false; - } - context.onRender((node) => { - const isVisible = node.clientWidth > 0; - const {wasVisible} = store; - store.wasVisible = isVisible; - if (!wasVisible && isVisible) { - store.shouldFocusAtIndex = props.siteList.length; - context.refresh(); - } - }); - function onTextChange(e) { - const index = store.indices.get(e.target); - const values = props.siteList.slice(); - const value = e.target.value.trim(); - if (values.includes(value)) { - return; - } - if (!value) { - values.splice(index, 1); - store.shouldFocusAtIndex = index; - } else if (index === values.length) { - values.push(value); - store.shouldFocusAtIndex = index + 1; - } else { - values.splice(index, 1, value); - store.shouldFocusAtIndex = index + 1; - } - props.onChange(values); - } - function removeValue(event) { - const previousSibling = event.target.previousSibling; - const index = store.indices.get(previousSibling); - const filtered = props.siteList.slice(); - filtered.splice(index, 1); - store.shouldFocusAtIndex = index; - props.onChange(filtered); - } - function createTextBox(text, index) { - const onRender = (node) => { - store.indices.set(node, index); - if (store.shouldFocusAtIndex === index) { - store.shouldFocusAtIndex = -1; - node.focus(); - } - }; - return m$1( - "div", - {class: "site-list__item"}, - m$1(TextBox, { - class: "site-list__textbox", - value: text, - onrender: onRender, - placeholder: "google.com/maps" - }), - text - ? m$1("span", { - class: "site-list__item__remove", - role: "button", - onclick: removeValue - }) - : null - ); - } - const virtualScroll = m$1(VirtualScroll, { - root: m$1("div", { - class: "site-list__v-scroll-root", - onchange: onTextChange - }), - items: props.siteList - .map((site, index) => createTextBox(site, index)) - .concat(createTextBox("", props.siteList.length)), - scrollToIndex: store.shouldFocusAtIndex - }); - return m$1( - ControlGroup$1, - {class: "site-list-group"}, - m$1( - ControlGroup$1.Control, - {class: "site-list-group__control"}, - m$1("div", {class: "site-list"}, virtualScroll) - ), - m$1( - ControlGroup$1.Description, - {class: "site-list-group__description"}, - "Type in the domain name and press Enter" - ) - ); - } - - function SiteListTab(props) { - const {settings} = props.data; - const {enabledByDefault} = settings; - function onSiteListChange(sites) { - const changes = enabledByDefault - ? {disabledFor: sites} - : {enabledFor: sites}; - props.actions.changeSettings(changes); - } - const label = enabledByDefault - ? "Disable on these websites" - : "Enable on these websites"; - const sites = enabledByDefault - ? settings.disabledFor - : settings.enabledFor; - return m$1( - "div", - {class: "settings-tab site-list-tab"}, - m$1("label", {class: "site-list-tab__label"}, label), - m$1(SiteList, {siteList: sites, onChange: onSiteListChange}), - m$1(ClearSiteList, {...props}) - ); - } - - function TabPanel(props, ...children) { - const {activeTabId} = props; - function createTabButton(tabSpec) { - const {id, label, icon, iconClass = ""} = tabSpec.props; - function onClick() { - props.onTabChange(id); - } - return m$1( - Button, - { - class: { - "settings-tab-panel__button": true, - "settings-tab-panel__button--active": activeTabId === id - }, - onclick: tabSpec.props.onClick ?? onClick - }, - m$1( - "span", - { - class: { - "settings-tab-panel__button__icon": true, - [iconClass]: Boolean(iconClass) - } - }, - icon - ), - label - ); - } - return m$1( - "div", - { - class: { - "settings-tab-panel": true, - "settings-tab-panel--vertical": props.isVertical - } - }, - m$1( - "div", - {class: "settings-tab-panel__buttons"}, - ...children.map(createTabButton) - ), - m$1( - "div", - {class: "settings-tab-panel__tabs"}, - ...children.map((child) => { - const {id} = child.props; - const spec = { - ...child, - props: { - ...child.props, - isActive: id === activeTabId - } - }; - return spec; - }) - ) - ); - } - function Tab(props, ...children) { - return m$1( - "div", - { - class: { - "settings-tab-panel__tab": true, - "settings-tab-panel__tab--active": props.isActive - } - }, - props.isActive ? children : null - ); - } - var TabPanel$1 = Object.assign(TabPanel, {Tab}); - - function Body(props) { - const context = getComponentContext(); - const store = context.getStore({activeTabId: "general"}); - function onSettingsTabChange(tabId) { - store.activeTabId = tabId; - context.refresh(); - } - const now = new Date(); - const autoIcon = m$1(WatchIcon, { - hours: now.getHours(), - minutes: now.getMinutes(), - color: "currentColor" - }); - return m$1( - "body", - null, - m$1( - "header", - null, - m$1("img", { - id: "logo", - src: "../assets/images/darkreader-type.svg", - alt: "Dark Reader" - }), - m$1("h1", {id: "title"}, "Settings") - ), - m$1( - TabPanel$1, - { - activeTabId: store.activeTabId, - onTabChange: onSettingsTabChange - }, - m$1( - TabPanel$1.Tab, - { - id: "general", - label: "General", - icon: m$1(SettingsIcon, null), - iconClass: "settings-icon-general" - }, - m$1(GeneralTab, {...props}) - ), - m$1( - TabPanel$1.Tab, - { - id: "site-list", - label: "Site List", - icon: m$1(ListIcon, null), - iconClass: "settings-icon-list" - }, - m$1(SiteListTab, {...props}) - ), - m$1( - TabPanel$1.Tab, - { - id: "automation", - label: "Automation", - icon: autoIcon, - iconClass: "settings-icon-auto" - }, - m$1(AutomationTab, {...props}) - ), - m$1( - TabPanel$1.Tab, - { - id: "hotkeys", - label: "Hotkeys", - icon: m$1(KeyboardIcon, null), - iconClass: "settings-icon-hotkeys" - }, - m$1(HotkeysTab, {...props}) - ), - m$1( - TabPanel$1.Tab, - { - id: "advanced", - label: "Advanced", - icon: m$1(AdvancedIcon, null), - iconClass: "settings-icon-advanced" - }, - m$1(AdvancedTab, {...props}) - ), - m$1( - TabPanel$1.Tab, - { - id: "about", - label: "About", - icon: m$1(HelpIcon, null), - iconClass: "settings-icon-about" - }, - m$1(AboutTab, {...props}) - ) - ), - m$1(Overlay$1, null) - ); - } - - class Connector { - changeSubscribers; - constructor() { - this.changeSubscribers = new Set(); - } - async sendRequest(type, data) { - return new Promise((resolve, reject) => { - chrome.runtime.sendMessage({type, data}, ({data, error}) => { - if (error) { - reject(error); - } else { - resolve(data); - } - }); - }); - } - async firefoxSendRequestWithResponse(type, data) { - return new Promise((resolve, reject) => { - const dataPort = chrome.runtime.connect({name: type}); - dataPort.onDisconnect.addListener(() => reject()); - dataPort.onMessage.addListener(({data, error}) => { - if (error) { - reject(error); - } else { - resolve(data); - } - dataPort.disconnect(); - }); - data && dataPort.postMessage({data}); - }); - } - async getData() { - return await this.sendRequest(MessageTypeUItoBG.GET_DATA); - } - async getDevToolsData() { - return await this.sendRequest(MessageTypeUItoBG.GET_DEVTOOLS_DATA); - } - onChangesReceived = ({type, data}) => { - if (type === MessageTypeBGtoUI.CHANGES) { - this.changeSubscribers.forEach((callback) => callback(data)); - } - }; - subscribeToChanges(callback) { - this.changeSubscribers.add(callback); - if (this.changeSubscribers.size === 1) { - chrome.runtime.onMessage.addListener(this.onChangesReceived); - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.SUBSCRIBE_TO_CHANGES - }); - } - } - async setShortcut(command, shortcut) { - return null; - } - changeSettings(settings) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.CHANGE_SETTINGS, - data: settings - }); - } - setTheme(theme) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.SET_THEME, - data: theme - }); - } - toggleActiveTab() { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.TOGGLE_ACTIVE_TAB, - data: {} - }); - } - markNewsAsRead(ids) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.MARK_NEWS_AS_READ, - data: ids - }); - } - markNewsAsDisplayed(ids) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.MARK_NEWS_AS_DISPLAYED, - data: ids - }); - } - loadConfig(options) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.LOAD_CONFIG, - data: options - }); - } - async applyDevDynamicThemeFixes(text) { - return await this.sendRequest( - MessageTypeUItoBG.APPLY_DEV_DYNAMIC_THEME_FIXES, - text - ); - } - resetDevDynamicThemeFixes() { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.RESET_DEV_DYNAMIC_THEME_FIXES - }); - } - async applyDevInversionFixes(text) { - return await this.sendRequest( - MessageTypeUItoBG.APPLY_DEV_INVERSION_FIXES, - text - ); - } - resetDevInversionFixes() { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.RESET_DEV_INVERSION_FIXES - }); - } - async applyDevStaticThemes(text) { - return await this.sendRequest( - MessageTypeUItoBG.APPLY_DEV_STATIC_THEMES, - text - ); - } - resetDevStaticThemes() { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.RESET_DEV_STATIC_THEMES - }); - } - async hideHighlights(ids) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.HIDE_HIGHLIGHTS, - data: ids - }); - } - disconnect() { - if (this.changeSubscribers.size > 0) { - this.changeSubscribers.clear(); - chrome.runtime.onMessage.removeListener(this.onChangesReceived); - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.UNSUBSCRIBE_FROM_CHANGES - }); - } - } - } - - function renderBody(data, actions) { - sync(document.body, m$1(Body, {data: data, actions: actions})); - } - async function start() { - const connector = new Connector(); - window.addEventListener("unload", () => connector.disconnect(), { - passive: true - }); - const data = await connector.getData(); - renderBody(data, connector); - connector.subscribeToChanges(async (newData) => { - renderBody(newData, connector); - }); - } - document.documentElement.classList.toggle("mobile", isMobile); - document.documentElement.classList.toggle("firefox", isFirefox); - start(); - { - chrome.runtime.onMessage.addListener((message, _, sendResponse) => { - if (message === "getExtensionPageTabMV3_ping") { - sendResponse("getExtensionPageTabMV3_pong"); - } - }); - } -})(); diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/options/style.css b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/options/style.css deleted file mode 100644 index 97760df..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/options/style.css +++ /dev/null @@ -1,1379 +0,0 @@ -@font-face { - font-family: "Open Sans"; - src: url("../assets/fonts/OpenSans-Regular.ttf") format("truetype"); - font-weight: normal; - font-style: normal; -} -@font-face { - font-family: "Open Sans"; - src: url("../assets/fonts/OpenSans-SemiBold.ttf") format("truetype"); - font-weight: bold; - font-style: normal; -} -@font-face { - font-family: "Open Sans"; - src: url("../assets/fonts/OpenSans-Light.ttf") format("truetype"); - font-weight: 100; - font-style: normal; -} -.button { - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - color: #ffffff; - cursor: pointer; - display: inline-block; - height: 1.5rem; - line-height: 0.75rem; - min-width: 1.5rem; - outline: none; - overflow: hidden; - padding: 0; - text-align: center; - transition: background-color 250ms; - -moz-user-select: none; - user-select: none; -} -.button:hover { - background-color: #193945; - transition: background-color 125ms; -} -.button:active { - background-color: #316e7d; -} -.button__wrapper { - height: 100%; - width: 100%; -} -.check-button .checkbox { - width: calc(100% - 2 * 0.125rem); -} -.check-button .checkbox__checkmark { - background-color: #316e7d; -} -.check-button .checkbox__checkmark::before, -.check-button .checkbox__checkmark::after { - display: none; -} -.check-button .checkbox__content { - align-items: center; - display: flex; - flex: auto; - height: 1.5rem; - justify-content: center; - -moz-user-select: none; - user-select: none; -} -.check-button .checkbox__input:checked ~ * { - color: #ffffff; -} -.check-button .checkbox__input:checked ~ .checkbox__checkmark { - background-image: url('data:image/svg+xml;utf8,'); - background-position: center; - background-repeat: no-repeat; - background-size: 1rem; -} -.check-button__description { - display: inline-block; - font-size: 0.625rem; - line-height: 0.875rem; - text-align: center; - -moz-user-select: none; - user-select: none; - width: 100%; -} -.checkbox { - align-items: stretch; - background-color: #141e24; - border: 0.125rem solid #316e7d; - cursor: pointer; - display: inline-flex; - flex: none; - flex-direction: row; - height: 1.5rem; - transition: background-color 250ms; - width: 1.5rem; -} -.checkbox:hover { - background-color: #193945; - transition: background-color 125ms; -} -.checkbox__input { - display: none; -} -.checkbox__checkmark { - display: inline-block; - height: 100%; - position: relative; - width: 1.5rem; -} -.checkbox__checkmark::before, -.checkbox__checkmark::after { - background-color: #316e7d; - content: ""; - display: inline-block; - height: 0.1875rem; - left: 0.1875rem; - position: absolute; - top: 0.6375rem; - transition: all 125ms; - width: 1.125rem; -} -.checkbox__checkmark::before { - transform: skewY(45deg); -} -.checkbox__checkmark::after { - transform: skewY(-45deg); -} -.checkbox__input:checked + .checkbox__checkmark::before, -.checkbox__input:checked + .checkbox__checkmark::after { - background-color: #ffffff; -} -.checkbox__input:checked + .checkbox__checkmark::before { - top: 0.825rem; - width: 0.375rem; -} -.checkbox__input:checked + .checkbox__checkmark::after { - left: 0.5625rem; - width: 0.75rem; -} -.control-group { - align-items: stretch; - display: inline-flex; - flex-direction: column; - width: 100%; -} -.control-group__control { - height: 1.75rem; -} -.control-group__description { - font-size: 0.625rem; - line-height: 0.875rem; - text-align: center; - -moz-user-select: none; - user-select: none; -} -.dropdown { - display: inline-block; - height: 1.5rem; - position: relative; - -moz-user-select: none; - user-select: none; - width: 100%; -} -.dropdown__selected { - align-items: center; - background-color: #316e7d; - background-image: url('data:image/svg+xml;utf8,'); - background-position: center right 0.25rem; - background-repeat: no-repeat; - background-size: 1rem; - color: #ffffff; - display: inline-flex; - height: 1.25rem; - justify-content: center; - line-height: 1.25rem; - margin-top: 0.125rem; - position: absolute; - text-align: center; - width: 100%; -} -.dropdown__selected__text { - display: inline-block; - max-width: calc(100% - 2.5rem); - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.dropdown__list { - background-color: #141e24; - border: 0.125rem solid #316e7d; - border-top: none; - box-shadow: 0 0 0.25rem black; - box-sizing: border-box; - display: none; - margin-top: 0.125rem; - overflow: hidden; - position: absolute; - width: 100%; -} -.dropdown__list__item { - align-items: center; - background-color: #141e24; - color: #ffffff; - display: inline-flex; - justify-content: center; - min-height: 1.25rem; - text-align: center; - width: 100%; -} -.dropdown__list__item:hover { - background-color: #193945; - transition: background-color 125ms; -} -.dropdown__list__item--selected { - overflow: hidden; - visibility: hidden; - white-space: nowrap; -} -.dropdown--open .dropdown__list { - display: inline-block; - margin-top: 0rem; - z-index: 1; -} -.dropdown--open .dropdown__list__item { - min-height: 1.5rem; -} -.dropdown--open .dropdown__selected { - height: 1.5rem; - margin-top: 0rem; - z-index: 2; -} -.preview .dropdown { - cursor: pointer; -} -.message-box { - background-color: #141e24; - border-bottom: 0.125rem solid #316e7d; - border-top: 0.125rem solid #316e7d; - display: flex; - flex-direction: column; - padding: 0.75rem; -} -.message-box__caption { - text-align: center; -} -.message-box__buttons { - display: flex; - flex-direction: row; - justify-content: center; - margin-top: 0.5rem; -} -.message-box__button { - min-width: 4rem; -} -.message-box__button:not(:first-child) { - margin-left: 0.5rem; -} -.message-box__button-ok { - border-color: gray; -} -.multi-switch { - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - color: #ffffff; - display: inline-flex; - height: 1.5rem; - position: relative; - -moz-user-select: none; - user-select: none; -} -.multi-switch__option { - align-items: center; - cursor: pointer; - display: inline-flex; - justify-content: center; - height: 100%; - overflow: hidden; - position: relative; - transition: background-color 250ms; - white-space: nowrap; - width: 50%; -} -.multi-switch__option:hover:not(.multi-switch__option--selected) { - background-color: #193945; -} -.multi-switch__highlight { - background-color: #316e7d; - display: inline-block; - height: 100%; - left: 0; - position: absolute; - top: 0; - transition: - left 125ms, - width 125ms; - width: 0; -} -.overlay { - align-items: center; - background-color: rgba(20, 30, 36, 0.5); - flex-direction: column; - display: inline-flex; - height: 100%; - justify-content: center; - left: 0; - position: fixed; - top: 0; - width: 100%; - z-index: 2; -} -.overlay:empty { - display: none; -} -.shortcut { - color: #53a1b3; - cursor: pointer; - display: inline-block; - font-size: 0.625rem; - line-height: 0.875rem; - outline: none; - text-align: center; - text-decoration: none; - white-space: pre; -} -.shortcut:hover { - text-decoration: underline; -} -.shortcut--edit { - color: #ffffff; -} -.shortcut::before { - content: "✎"; - direction: rtl; - display: inline-block; - line-height: 0.875rem; - visibility: hidden; - width: 0; -} -.shortcut:hover::before, -.shortcut--edit::before { - visibility: visible; -} -.tab-panel { - align-items: stretch; - display: flex; - flex-direction: column; - min-height: 0; -} -.tab-panel__button { - border-bottom: 0.125rem solid #316e7d; - border-left: none; - border-right: none; - border-top: none; - box-sizing: border-box; - color: #316e7d; - font-size: 0.875rem; - font-weight: bold; - height: 1.625rem; - padding: 0 0.625rem; - white-space: pre; -} -.tab-panel__button:hover { - color: #53a1b3; -} -.tab-panel__button:active { - background-color: #193945; -} -.tab-panel__button--active { - border-bottom: none; - border-left: 0.125rem solid #316e7d; - border-right: 0.125rem solid #316e7d; - border-top: 0.125rem solid #316e7d; - color: #e96c4c; - padding: 0 0.5rem; -} -.tab-panel__button--active:hover { - color: #e96c4c; -} -.tab-panel__buttons { - display: flex; - flex: none; - flex-direction: row; - justify-content: center; -} -.tab-panel__buttons::before, -.tab-panel__buttons::after { - border-bottom: 0.125rem solid #316e7d; - content: ""; - flex: auto; -} -.tab-panel__tabs { - display: flex; - flex: auto; - flex-direction: row; - margin-top: 0.75rem; - min-height: 0; -} -.tab-panel__tab { - background-color: #141e24; - display: flex; - opacity: 0; - overflow: hidden; - pointer-events: none; - transition: - width 250ms, - opacity 125ms; - width: 0; -} -.tab-panel__tab--active { - opacity: 1; - pointer-events: all; - transition: - width 250ms, - opacity 250ms; - width: 100%; -} -.select { - display: inline-flex; - flex-direction: column; - position: relative; -} -.select__line { - display: inline-flex; - flex-direction: row; -} -.select__textbox.textbox { - border-right: none; - flex: auto; - width: 100%; -} -.select__expand { - border-left: none; - flex: none; -} -.select__expand__icon { - display: inline-block; - height: 100%; - position: relative; - width: 100%; -} -.select__expand__icon::before, -.select__expand__icon::after { - background-color: #ffffff; - content: ""; - display: inline-block; - height: 0.1875rem; - position: absolute; - top: 0.75rem; - width: 0.5625rem; - z-index: 1; -} -.select__expand__icon::before { - left: 0.1875rem; - transform: skewY(45deg); -} -.select__expand__icon::after { - left: 0.75rem; - transform: skewY(-45deg); -} -.select__list { - background-color: #141e24; - border-bottom: 0.125rem solid #316e7d; - border-left: 0.125rem solid #316e7d; - border-right: 0.125rem solid #316e7d; - box-sizing: border-box; - left: 0; - max-height: 0; - overflow-x: hidden; - overflow-y: auto; - position: absolute; - top: calc(100% - 0.125rem); - transition: max-height 125ms; - width: 100%; - z-index: 999; -} -.select__list--expanded { - max-height: 12rem; - transition: max-height 500ms; -} -.select__list--short { - overflow: hidden; -} -.select__option { - align-items: center; - background-color: #141e24; - cursor: pointer; - display: flex; - flex: none; - height: 1.5rem; - flex-direction: row; - padding-left: 0.375rem; -} -.select__option:hover { - background-color: #193945; -} -.slider { - display: inline-block; - height: 1.5rem; - position: relative; - touch-action: none; - width: 100%; -} -.slider__track { - background-color: #193945; - display: inline-block; - height: 0.625rem; - margin-left: 0.25rem; - margin-top: 0.4375rem; - position: absolute; - width: calc(100% - 0.5rem); -} -.slider__track__fill { - background-color: #316e7d; - display: inline-block; - height: 100%; - position: absolute; -} -.slider__track__fill::before { - background-color: #316e7d; - content: ""; - height: 100%; - position: absolute; - right: 100%; - width: 0.25rem; -} -.slider__track::before, -.slider__track::after { - background-color: #193945; - content: ""; - height: 100%; - position: absolute; - width: 0.25rem; -} -.slider__track::before { - right: 100%; -} -.slider__track::after { - left: 100%; -} -.slider__thumb-wrapper { - margin-left: 0.25rem; - position: absolute; - width: calc(100% - 0.5rem); -} -.slider__thumb { - background-color: #ffffff; - cursor: pointer; - display: inline-block; - height: 1.25rem; - margin-left: -0.25rem; - margin-top: 0.125rem; - position: absolute; - width: 0.5rem; -} -.slider__thumb__value { - color: #ffffff; - cursor: default; - left: calc(100% + 0.75rem / 2); - line-height: 1.25rem; - position: absolute; - -moz-user-select: none; - user-select: none; -} -.slider__thumb__value--flip { - left: initial; - right: calc(100% + 0.75rem / 2); -} -.slider--active .slider__thumb { - box-shadow: 0 0 0.25rem black; - height: 1.5rem; - margin-top: 0rem; -} -.slider--active .slider__thumb__value { - line-height: 1.5rem; -} -.slider--active .slider__track { - height: 0.75rem; - margin-top: 0.375rem; -} -.slider__value { - display: none; -} -.text-list { - border-top: 0.125rem solid #316e7d; - margin-bottom: 0.0625rem; - min-width: 1.5rem; - overflow-x: hidden; - overflow-y: auto; -} -.text-list__textbox.textbox { - border-bottom: 0.0625rem solid #316e7d; - border-left: 0.125rem solid #316e7d; - border-right: 0.125rem solid #316e7d; - border-top: none; - box-sizing: border-box; - flex: none; - height: 1.5625rem; - width: 100%; -} -.text-list__textbox.textbox:last-child { - border-bottom: 0.125rem solid #316e7d; -} -.text-list::-webkit-scrollbar { - width: 1.25rem; -} -.text-list::-webkit-scrollbar-thumb { - border-left: 0.5rem solid #141e24; -} -.textbox { - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - color: #53a1b3; - height: 1.5rem; - line-height: 1.5rem; - outline: none; - overflow: hidden; - padding: 0; - text-indent: 0.375rem; - transition: background-color 250ms; -} -.textbox:hover, -.textbox:focus { - background-color: #193945; - transition: background-color 125ms; -} -.textbox:focus { - color: #ffffff; -} -.textbox::placeholder { - color: #316e7d; -} -input[type="time"]::-webkit-calendar-picker-indicator { - filter: invert(54%) sepia(3%) saturate(3931%) hue-rotate(153deg) - brightness(115%) contrast(75%); -} -.time-range-picker { - display: inline-flex; - flex: auto; -} -.time-range-picker__input { - text-align: center; - text-indent: 0; - width: 100%; - background-color: #141e24; -} -.time-range-picker__input--start { - border-right: none; -} -.time-range-picker__input--end { - border-left: 0.0625rem solid #316e7d; -} -.toggle { - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - color: #ffffff; - display: inline-flex; - height: 1.5rem; - position: relative; - -moz-user-select: none; - user-select: none; -} -.toggle__btn { - align-items: center; - cursor: pointer; - display: inline-flex; - justify-content: center; - height: 100%; - overflow: hidden; - position: relative; - transition: background-color 250ms; - white-space: nowrap; - width: 50%; -} -.toggle__btn:hover:not(.toggle__btn--active) { - background-color: #193945; -} -.toggle::before { - background-color: #316e7d; - content: ""; - display: inline-block; - height: 100%; - left: 50%; - position: absolute; - top: 0; - transition: left 125ms; - width: 50%; -} -.toggle--checked::before { - left: 0; -} -.updown { - align-items: stretch; - display: flex; - flex-direction: column; - -moz-user-select: none; - user-select: none; -} -.updown__line { - display: flex; - flex-direction: row; -} -.updown__line > :not(:first-child) { - margin-left: 0.5rem; -} -.updown__icon { - display: inline-block; - height: 100%; - position: relative; - width: 100%; -} -.updown__icon::before, -.updown__icon::after { - background-color: #ffffff; - content: ""; - display: inline-block; - height: 0.5625rem; - position: absolute; - width: 0.1875rem; -} -.updown__icon::before { - top: 0.1875rem; -} -.updown__icon::after { - top: 0.75rem; -} -.updown__icon-up::before { - left: 0.75rem; - transform: skewX(45deg); -} -.updown__icon-up::after { - left: 0.75rem; - transform: skewX(-45deg); -} -.updown__icon-down::before { - left: 0.5625rem; - transform: skewX(-45deg); -} -.updown__icon-down::after { - left: 0.5625rem; - transform: skewX(45deg); -} -.updown__button--disabled { - pointer-events: none; -} -.updown__button--disabled:hover, -.updown__button--disabled:active { - background-color: #141e24; -} -.updown__button--disabled .updown__icon::before, -.updown__button--disabled .updown__icon::after { - background-color: #316e7d; -} -.updown__value-text { - font-size: 0.625rem; - line-height: 0.875rem; - text-align: center; - white-space: nowrap; -} -.track { - align-items: center; - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - display: inline-flex; - flex: auto; - flex-direction: row; - height: 1.5rem; - justify-content: center; - overflow: hidden; - position: relative; - transition: background-color 250ms; - -moz-user-select: none; - user-select: none; -} -.track:hover { - background-color: #193945; - transition: background-color 125ms; -} -.track--clickable { - cursor: pointer; -} -.track__value { - background-color: #316e7d; - height: 100%; - left: 0; - position: absolute; - top: 0; - transition: width 125ms; -} -.track__label { - color: #ffffff; - display: inline-block; - line-height: 0.75rem; - pointer-events: none; - position: relative; - white-space: nowrap; - z-index: 1; -} -.hsb-picker { - display: flex; - flex-direction: row; - padding: 0.5rem; - touch-action: none; -} -.hsb-picker__sb-container { - cursor: pointer; - height: 7.5rem; - position: relative; - -webkit-tap-highlight-color: transparent; - width: 7.5rem; -} -.hsb-picker__hue-container { - cursor: pointer; - height: 7.5rem; - margin-left: 0.5rem; - position: relative; - -webkit-tap-highlight-color: transparent; - width: 0.75rem; -} -.hsb-picker__sb-canvas { - height: 100%; - width: 100%; -} -.hsb-picker__hue-canvas { - height: 100%; - width: 100%; -} -.hsb-picker__hue-cursor, -.hsb-picker__sb-cursor { - border-radius: 50%; - box-shadow: 0 0 0 0.125rem #ffffff; - display: inline-block; - height: 0.75rem; - margin-top: -0.375rem; - position: absolute; - width: 0.75rem; - z-index: 2; -} -.hsb-picker__sb-cursor { - margin-left: -0.375rem; -} -.color-picker { - height: 1.5rem; - position: relative; - width: 100%; -} -.color-picker__wrapper { - background-color: #141e24; - display: inline-flex; - flex-direction: column; - left: 0; - overflow: hidden; - position: absolute; - top: 0; - width: 100%; -} -.color-picker--focused .color-picker__wrapper { - border: 0.125rem solid #316e7d; - box-sizing: border-box; - z-index: 1; -} -.color-picker__input { - background-color: #316e7d; - border: none; - box-sizing: border-box; - color: #ffffff; - height: 1.25rem; - margin-top: 0.125rem; - text-align: center; - width: 100%; -} -.color-picker--focused .color-picker__input { - margin-top: 0; -} -.color-picker__preview { - cursor: pointer; - display: inline-block; - height: 1rem; - left: 0.25rem; - position: absolute; - top: 0.25rem; - width: 1rem; -} -.color-picker--focused .color-picker__preview { - left: 0.125rem; - top: 0.125rem; -} -.color-picker__reset { - background-image: url('data:image/svg+xml;utf8,'); - background-position: 0 0; - background-repeat: no-repeat; - background-size: 1rem; - cursor: pointer; - display: inline-block; - height: 1rem; - position: absolute; - right: 0.25rem; - top: 0.25rem; - width: 1rem; -} -.color-picker--focused .color-picker__reset { - right: 0.125rem; - top: 0.125rem; -} -.color-picker__textbox-line { - width: 100%; -} -.color-picker__hsb-line { - display: none; - width: 100%; -} -.color-picker--focused .color-picker__hsb-line { - border-color: #316e7d; - display: block; -} -.color-dropdown { - height: 1.5rem; - position: relative; - width: 100%; -} -.color-dropdown__options { - width: 100%; -} -.color-dropdown__picker { - height: 100%; - position: absolute; - right: 0; - top: 0; - width: 100%; -} -.color-dropdown__picker--hidden { - display: none; -} -.nav-button { - background-image: url('data:image/svg+xml;utf8,'); - background-position: center right 0.25rem; - background-repeat: no-repeat; - background-size: 1rem; - width: calc(100% - 2 * 0.125rem); -} -.nav-button__content { - align-items: center; - display: inline-flex; - flex-direction: row; - height: 100%; -} -.reset-button { - width: calc(100% - 2 * 0.125rem); -} -.reset-button__content { - align-items: center; - display: inline-flex; - flex-direction: row; - height: 100%; -} -.reset-button__icon { - background-image: url('data:image/svg+xml;utf8,'); - background-position: 0 0; - background-size: 1rem; - display: inline-block; - height: 1rem; - margin-right: 0.125rem; - width: 1rem; -} -html { - background-color: #141e24; - color: #53a1b3; - color-scheme: dark; - font-family: - Open Sans, - Segoe UI, - Helvetica Neue, - Ubuntu, - sans-serif; - font-size: 16px; -} -body { - font-family: - Open Sans, - Segoe UI, - Helvetica Neue, - Ubuntu, - sans-serif; - font-size: 0.75rem; -} -input, -button { - font-family: - Open Sans, - Segoe UI, - Helvetica Neue, - Ubuntu, - sans-serif; - font-size: 0.75rem; -} -::-moz-selection { - background-color: #e96c4c; - color: #ffffff; -} -::selection { - background-color: #e96c4c; - color: #ffffff; -} -::-webkit-scrollbar { - background-color: #141e24; - width: 0.75rem; -} -::-webkit-scrollbar-thumb { - background-color: #193945; -} -::-webkit-scrollbar-thumb:hover { - background-color: #255461; -} -::-webkit-scrollbar-thumb:active { - background-color: #316e7d; -} -::-webkit-scrollbar-corner { - background-color: #141e24; -} -* { - scrollbar-color: #193945 #141e24; -} -.settings-tab-panel { - display: flex; - flex-direction: row; - gap: 1rem; - height: 100%; -} -.settings-tab-panel__buttons { - display: flex; - flex-direction: column; - flex: none; - min-width: 10rem; -} -.settings-tab-panel__button { - border: none; - box-shadow: none; - color: #53a1b3; - height: 1.75rem; - text-align: left; -} -.settings-tab-panel__button--active { - color: #e96c4c; - font-weight: bold; -} -.settings-tab-panel__button__icon { - align-items: center; - display: inline-flex; - height: 1rem; - justify-content: center; - margin-right: 0.5rem; - width: 1rem; -} -.settings-tab-panel__button__icon svg { - display: inline-block; - height: 100%; - width: 100%; -} -.settings-tab-panel__button .button__wrapper { - align-items: center; - display: flex; - flex-direction: row; -} -.settings-tab-panel__tabs { - flex: auto; - overflow: hidden; -} -.settings-tab-panel__tab { - display: none; -} -.settings-tab-panel__tab--active { - display: block; -} -.settings-tab-panel--vertical { - flex-direction: column; -} -.settings-tab-panel--vertical .settings-tab-panel__buttons { - column-gap: 0.5rem; - display: flex; - flex-direction: row; - flex-wrap: wrap; - max-width: 16rem; -} -.settings-tab-panel--vertical .settings-tab-panel__button__icon { - display: none; -} -@media screen and (max-width: 30rem) { - .settings-tab-panel { - flex-direction: column; - } - .settings-tab-panel__buttons { - column-gap: 0.5rem; - display: flex; - flex-direction: row; - flex-wrap: wrap; - max-width: 16rem; - } - .settings-tab-panel__button__icon { - display: none; - } -} -.about-tab .darkreader-version { - color: #ffffff; -} -.about-tab a { - color: #53a1b3; -} -.advanced__export-settings-button { - box-sizing: border-box; - width: 100%; -} -.advanced__import-settings-button { - box-sizing: border-box; - width: 100%; -} -.automation__time-picker-control { - display: flex; - flex-direction: row; -} -.automation__time-picker-control .checkbox { - border-right: none; - flex: none; -} -.automation__time-picker-control - .time-range-picker - .time-range-picker__input--start { - border-left: 0.0625rem solid #316e7d; -} -.automation__location-control { - display: flex; - flex-direction: row; -} -.automation__location-control .checkbox { - border-right: none; - flex: none; -} -.automation__location-control__latitude, -.automation__location-control__longitude { - flex: auto; - text-align: center; - text-indent: 0; - width: 100%; -} -.automation__location-control__latitude { - border-left: 0.0625rem solid #316e7d; - border-right: none; -} -.automation__location-control__longitude { - border-left: 0.0625rem solid #316e7d; -} -.automation__system-control { - display: flex; - flex-direction: row; -} -.automation__system-control__checkbox { - flex: none; - border-right: none; -} -.automation__system-control__button { - border-left-width: 0.0625rem; - flex: auto; -} -.automation__system-control__button:not( - .automation__system-control__button--active - ) { - color: #53a1b3; -} -.automation__system-control:hover .automation__system-control__button, -.automation__system-control:hover .automation__system-control__checkbox { - background-color: #193945; -} -.automation__behavior .dropdown { - background-color: transparent; - box-shadow: inset 0 0 0 0.125rem #316e7d; - cursor: pointer; - height: 1.75rem; - width: 100%; -} -.automation__behavior .dropdown__selected { - background-color: transparent; - background-position: center right 0.375rem; - height: 1.5rem; - margin-left: 0.125rem; - margin-top: 0.125rem; - transition: background-color 125ms; - width: calc(100% - 2 * 0.125rem); -} -.automation__behavior .dropdown__selected:hover { - background-color: #193945; -} -.automation__behavior .dropdown--open .dropdown__list { - border: 0.125rem solid #316e7d; - margin-top: 0; - padding-top: 0.125rem; -} -.automation__behavior .dropdown__list__item { - height: 1.5rem; -} -.hotkeys__control { - align-items: center; - border: 0.125rem solid #316e7d; - display: inline-flex; - flex-direction: row; - font-size: 0.75rem; - height: 1.5rem; - justify-content: center; - text-decoration: none; - transition: background-color 125ms; - width: calc(100% - 2 * 0.125rem); -} -.hotkeys__control.shortcut--set { - color: #ffffff; -} -.hotkeys__control:hover { - background-color: #193945; - text-decoration: none; -} -.hotkeys__control:hover:not(.shortcut--edit)::before { - display: none; -} -.site-list { - align-items: stretch; - border: 0.125rem solid #316e7d; - border-radius: 0.125rem; - display: flex; - flex-direction: column; - justify-content: flex-start; - max-height: 15rem; - overflow: hidden; - width: calc(100% - 2 * 0.125rem); -} -.site-list__v-scroll-root { - overflow-x: hidden; - overflow-y: auto; -} -.site-list__v-scroll-root::-webkit-scrollbar { - width: 0.75rem; -} -.site-list__textbox { - border: none; - position: relative; - width: 100%; -} -.site-list__textbox:focus { - box-shadow: 0 0 0 0.125rem #316e7d; - z-index: 1; -} -.site-list__item { - position: relative; -} -.site-list__item__remove { - background-color: transparent; - background-image: url('data:image/svg+xml;utf8,'); - background-position: center; - background-repeat: no-repeat; - background-size: 0.75rem; - border-radius: 50%; - cursor: pointer; - display: none; - height: 1.25rem; - position: absolute; - right: 0.125rem; - top: 0.125rem; - width: 1.25rem; - z-index: 1; -} -.site-list__item__remove:hover { - background-color: #316e7d; - background-image: url('data:image/svg+xml;utf8,'); -} -.site-list__item:hover .site-list__item__remove { - display: inline-block; -} -.site-list-tab__label { - color: #ffffff; - display: inline-block; - width: 100%; -} -.site-list-group__control { - height: auto; -} -.clear-site-list-button { - box-sizing: border-box; - height: 100%; - width: 100%; -} -.clear-site-list-button__content { - align-items: center; - display: flex; - flex-direction: row; - justify-content: center; -} -.clear-site-list-button__icon { - align-items: center; - display: flex; - height: 1rem; - justify-content: center; - margin-right: 0.25rem; - width: 1rem; -} -.clear-site-list-button__icon > svg { - display: inline-block; - height: 85%; - width: 85%; -} -html { - margin: 0; - padding: 0; -} -#logo { - display: inline-block; - font-size: 0.875rem; - height: 1.5rem; - width: 15rem; -} -#title { - align-items: stretch; - display: inline-flex; - flex-direction: row; - font-size: 2rem; - font-weight: 100; - line-height: 1.5rem; - height: 1.5rem; - margin: 0 0 0 0.5rem; - text-transform: uppercase; - transform: translateY(-0.0625rem); -} -body { - box-sizing: content-box; - display: flex; - flex-direction: column; - gap: 0.5rem; - margin: 0; - padding: 1rem; -} -main { - flex: none; -} -.settings-tab-panel { - flex: auto; -} -.settings-tab { - max-width: 16rem; -} -.settings-tab > :not(:first-child) { - margin-top: 0.5rem; -} -.settings-icon-list svg { - fill: currentColor; - height: 75%; - width: 75%; -} -@media screen and (max-width: 30rem) { - #title { - display: none; - } - body { - margin: 0 auto; - width: 15rem; - } -} -@media screen and (min-width: 21.25rem) { - .mobile { - font-size: 20px; - } -} -@media screen and (min-width: 25.5rem) { - .mobile { - font-size: 24px; - } -} -@media screen and (min-width: 29.75rem) { - .mobile { - font-size: 28px; - } -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/popup/index.html b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/popup/index.html deleted file mode 100644 index c6a6a51..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/popup/index.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Dark Reader settings - - - - - - - - -
    - -
    - - diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/popup/index.js b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/popup/index.js deleted file mode 100644 index 0b4c7de..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/popup/index.js +++ /dev/null @@ -1,7461 +0,0 @@ -(function () { - "use strict"; - - /* malevic@0.20.2 - Aug 10, 2024 */ - function m$1(tagOrComponent, props, ...children) { - props = props || {}; - if (typeof tagOrComponent === "string") { - const tag = tagOrComponent; - return {type: tag, props, children}; - } - if (typeof tagOrComponent === "function") { - const component = tagOrComponent; - return {type: component, props, children}; - } - throw new Error("Unsupported spec type"); - } - - /* malevic@0.20.2 - Aug 10, 2024 */ - function createPluginsStore() { - const plugins = []; - return { - add(plugin) { - plugins.push(plugin); - return this; - }, - apply(props) { - let result; - let plugin; - const usedPlugins = new Set(); - for (let i = plugins.length - 1; i >= 0; i--) { - plugin = plugins[i]; - if (usedPlugins.has(plugin)) { - continue; - } - result = plugin(props); - if (result != null) { - return result; - } - usedPlugins.add(plugin); - } - return null; - }, - delete(plugin) { - for (let i = plugins.length - 1; i >= 0; i--) { - if (plugins[i] === plugin) { - plugins.splice(i, 1); - break; - } - } - return this; - }, - empty() { - return plugins.length === 0; - } - }; - } - function iterateComponentPlugins(type, pairs, iterator) { - pairs - .filter(([key]) => type[key]) - .forEach(([key, plugins]) => { - return type[key].forEach((plugin) => iterator(plugins, plugin)); - }); - } - function addComponentPlugins(type, pairs) { - iterateComponentPlugins(type, pairs, (plugins, plugin) => - plugins.add(plugin) - ); - } - function deleteComponentPlugins(type, pairs) { - iterateComponentPlugins(type, pairs, (plugins, plugin) => - plugins.delete(plugin) - ); - } - function createPluginsAPI(key) { - const api = { - add(type, plugin) { - if (!type[key]) { - type[key] = []; - } - type[key].push(plugin); - return api; - } - }; - return api; - } - - const XHTML_NS = "http://www.w3.org/1999/xhtml"; - const SVG_NS = "http://www.w3.org/2000/svg"; - - const PLUGINS_CREATE_ELEMENT = Symbol(); - const pluginsCreateElement = createPluginsStore(); - function createElement(spec, parent) { - const result = pluginsCreateElement.apply({spec, parent}); - if (result) { - return result; - } - const tag = spec.type; - if (tag === "svg") { - return document.createElementNS(SVG_NS, "svg"); - } - const namespace = parent.namespaceURI; - if (namespace === XHTML_NS || namespace == null) { - return document.createElement(tag); - } - return document.createElementNS(namespace, tag); - } - - function classes$1(...args) { - const classes = []; - const process = (c) => { - if (!c) return; - if (typeof c === "string") { - classes.push(c); - } else if (Array.isArray(c)) { - c.forEach(process); - } else if (typeof c === "object") { - classes.push( - ...Object.keys(c).filter((key) => Boolean(c[key])) - ); - } - }; - args.forEach(process); - return classes.join(" "); - } - function setInlineCSSPropertyValue(element, prop, $value) { - if ($value != null && $value !== "") { - let value = String($value); - let important = ""; - if (value.endsWith("!important")) { - value = value.substring(0, value.length - 10); - important = "important"; - } - element.style.setProperty(prop, value, important); - } else { - element.style.removeProperty(prop); - } - } - - function isObject(value) { - return value != null && typeof value === "object"; - } - - const eventListeners = new WeakMap(); - function addEventListener$1(element, event, listener) { - let listeners; - if (eventListeners.has(element)) { - listeners = eventListeners.get(element); - } else { - listeners = new Map(); - eventListeners.set(element, listeners); - } - if (listeners.get(event) !== listener) { - if (listeners.has(event)) { - element.removeEventListener(event, listeners.get(event)); - } - element.addEventListener(event, listener); - listeners.set(event, listener); - } - } - function removeEventListener(element, event) { - if (!eventListeners.has(element)) { - return; - } - const listeners = eventListeners.get(element); - element.removeEventListener(event, listeners.get(event)); - listeners.delete(event); - } - - function setClassObject(element, classObj) { - const cls = Array.isArray(classObj) - ? classes$1(...classObj) - : classes$1(classObj); - if (cls) { - element.setAttribute("class", cls); - } else { - element.removeAttribute("class"); - } - } - function mergeValues(obj, old) { - const values = new Map(); - const newProps = new Set(Object.keys(obj)); - const oldProps = Object.keys(old); - oldProps - .filter((prop) => !newProps.has(prop)) - .forEach((prop) => values.set(prop, null)); - newProps.forEach((prop) => values.set(prop, obj[prop])); - return values; - } - function setStyleObject(element, styleObj, prev) { - let prevObj; - if (isObject(prev)) { - prevObj = prev; - } else { - prevObj = {}; - element.removeAttribute("style"); - } - const declarations = mergeValues(styleObj, prevObj); - declarations.forEach(($value, prop) => - setInlineCSSPropertyValue(element, prop, $value) - ); - } - function setEventListener(element, event, listener) { - if (typeof listener === "function") { - addEventListener$1(element, event, listener); - } else { - removeEventListener(element, event); - } - } - const specialAttrs = new Set([ - "key", - "oncreate", - "onupdate", - "onrender", - "onremove" - ]); - const PLUGINS_SET_ATTRIBUTE = Symbol(); - const pluginsSetAttribute = createPluginsStore(); - function getPropertyValue(obj, prop) { - return obj && obj.hasOwnProperty(prop) ? obj[prop] : null; - } - function syncAttrs(element, attrs, prev) { - const values = mergeValues(attrs, prev || {}); - values.forEach((value, attr) => { - if (!pluginsSetAttribute.empty()) { - const result = pluginsSetAttribute.apply({ - element, - attr, - value, - get prev() { - return getPropertyValue(prev, attr); - } - }); - if (result != null) { - return; - } - } - if (attr === "class" && isObject(value)) { - setClassObject(element, value); - } else if (attr === "style" && isObject(value)) { - const prevValue = getPropertyValue(prev, attr); - setStyleObject(element, value, prevValue); - } else if (attr.startsWith("on")) { - const event = attr.substring(2); - setEventListener(element, event, value); - } else if (specialAttrs.has(attr)); - else if (value == null || value === false) { - element.removeAttribute(attr); - } else { - element.setAttribute(attr, value === true ? "" : String(value)); - } - }); - } - - class LinkedList { - constructor(...items) { - this.nexts = new WeakMap(); - this.prevs = new WeakMap(); - this.first = null; - this.last = null; - items.forEach((item) => this.push(item)); - } - empty() { - return this.first == null; - } - push(item) { - if (this.empty()) { - this.first = item; - this.last = item; - } else { - this.nexts.set(this.last, item); - this.prevs.set(item, this.last); - this.last = item; - } - } - insertBefore(newItem, refItem) { - const prev = this.before(refItem); - this.prevs.set(newItem, prev); - this.nexts.set(newItem, refItem); - this.prevs.set(refItem, newItem); - prev && this.nexts.set(prev, newItem); - refItem === this.first && (this.first = newItem); - } - delete(item) { - const prev = this.before(item); - const next = this.after(item); - prev && this.nexts.set(prev, next); - next && this.prevs.set(next, prev); - item === this.first && (this.first = next); - item === this.last && (this.last = prev); - } - before(item) { - return this.prevs.get(item) || null; - } - after(item) { - return this.nexts.get(item) || null; - } - loop(iterator) { - if (this.empty()) { - return; - } - let current = this.first; - do { - if (iterator(current)) { - break; - } - } while ((current = this.after(current))); - } - copy() { - const list = new LinkedList(); - this.loop((item) => { - list.push(item); - return false; - }); - return list; - } - forEach(iterator) { - this.loop((item) => { - iterator(item); - return false; - }); - } - find(iterator) { - let result = null; - this.loop((item) => { - if (iterator(item)) { - result = item; - return true; - } - return false; - }); - return result; - } - map(iterator) { - const results = []; - this.loop((item) => { - results.push(iterator(item)); - return false; - }); - return results; - } - } - - function matchChildren(vnode, old) { - const oldChildren = old.children(); - const oldChildrenByKey = new Map(); - const oldChildrenWithoutKey = []; - oldChildren.forEach((v) => { - const key = v.key(); - if (key == null) { - oldChildrenWithoutKey.push(v); - } else { - oldChildrenByKey.set(key, v); - } - }); - const children = vnode.children(); - const matches = []; - const unmatched = new Set(oldChildren); - const keys = new Set(); - children.forEach((v) => { - let match = null; - let guess = null; - const key = v.key(); - if (key != null) { - if (keys.has(key)) { - throw new Error("Duplicate key"); - } - keys.add(key); - if (oldChildrenByKey.has(key)) { - guess = oldChildrenByKey.get(key); - } - } else if (oldChildrenWithoutKey.length > 0) { - guess = oldChildrenWithoutKey.shift(); - } - if (v.matches(guess)) { - match = guess; - } - matches.push([v, match]); - if (match) { - unmatched.delete(match); - } - }); - return {matches, unmatched}; - } - - function execute(vnode, old, vdom) { - const didMatch = vnode && old && vnode.matches(old); - if (didMatch && vnode.parent() === old.parent()) { - vdom.replaceVNode(old, vnode); - } else if (vnode) { - vdom.addVNode(vnode); - } - const context = vdom.getVNodeContext(vnode); - const oldContext = vdom.getVNodeContext(old); - if (old && !didMatch) { - old.detach(oldContext); - old.children().forEach((v) => execute(null, v, vdom)); - old.detached(oldContext); - } - if (vnode && !didMatch) { - vnode.attach(context); - vnode.children().forEach((v) => execute(v, null, vdom)); - vnode.attached(context); - } - if (didMatch) { - const result = vnode.update(old, context); - if (result !== vdom.LEAVE) { - const {matches, unmatched} = matchChildren(vnode, old); - unmatched.forEach((v) => execute(null, v, vdom)); - matches.forEach(([v, o]) => execute(v, o, vdom)); - vnode.updated(context); - } - } - } - - function m(tagOrComponent, props, ...children) { - props = props || {}; - if (typeof tagOrComponent === "string") { - const tag = tagOrComponent; - return {type: tag, props, children}; - } - if (typeof tagOrComponent === "function") { - const component = tagOrComponent; - return {type: component, props, children}; - } - throw new Error("Unsupported spec type"); - } - function isSpec(x) { - return isObject(x) && x.type != null && x.nodeType == null; - } - function isNodeSpec(x) { - return isSpec(x) && typeof x.type === "string"; - } - function isComponentSpec(x) { - return isSpec(x) && typeof x.type === "function"; - } - - class VNodeBase { - constructor(parent) { - this.parentVNode = parent; - } - key() { - return null; - } - parent(vnode) { - if (vnode) { - this.parentVNode = vnode; - return; - } - return this.parentVNode; - } - children() { - return []; - } - attach(context) {} - detach(context) {} - update(old, context) { - return null; - } - attached(context) {} - detached(context) {} - updated(context) {} - } - function nodeMatchesSpec(node, spec) { - return ( - node instanceof Element && - ((node.namespaceURI === XHTML_NS && - spec.type === node.tagName.toLocaleLowerCase()) || - (node.namespaceURI !== XHTML_NS && spec.type === node.tagName)) - ); - } - const refinedElements = new WeakMap(); - function markElementAsRefined(element, vdom) { - let refined; - if (refinedElements.has(vdom)) { - refined = refinedElements.get(vdom); - } else { - refined = new WeakSet(); - refinedElements.set(vdom, refined); - } - refined.add(element); - } - function isElementRefined(element, vdom) { - return ( - refinedElements.has(vdom) && refinedElements.get(vdom).has(element) - ); - } - class ElementVNode extends VNodeBase { - constructor(spec, parent) { - super(parent); - this.spec = spec; - } - matches(other) { - return ( - other instanceof ElementVNode && - this.spec.type === other.spec.type - ); - } - key() { - return this.spec.props.key; - } - children() { - return [this.child]; - } - getExistingElement(context) { - const parent = context.parent; - const existing = context.node; - let element; - if (nodeMatchesSpec(existing, this.spec)) { - element = existing; - } else if ( - !isElementRefined(parent, context.vdom) && - context.vdom.isDOMNodeCaptured(parent) - ) { - const sibling = context.sibling; - const guess = sibling - ? sibling.nextElementSibling - : parent.firstElementChild; - if (guess && !context.vdom.isDOMNodeCaptured(guess)) { - if (nodeMatchesSpec(guess, this.spec)) { - element = guess; - } else { - parent.removeChild(guess); - } - } - } - return element; - } - attach(context) { - let element; - const existing = this.getExistingElement(context); - if (existing) { - element = existing; - } else { - element = createElement(this.spec, context.parent); - markElementAsRefined(element, context.vdom); - } - syncAttrs(element, this.spec.props, null); - this.child = createDOMVNode( - element, - this.spec.children, - this, - false - ); - } - update(prev, context) { - const prevContext = context.vdom.getVNodeContext(prev); - const element = prevContext.node; - syncAttrs(element, this.spec.props, prev.spec.props); - this.child = createDOMVNode( - element, - this.spec.children, - this, - false - ); - } - attached(context) { - const {oncreate, onrender} = this.spec.props; - if (oncreate) { - oncreate(context.node); - } - if (onrender) { - onrender(context.node); - } - } - detached(context) { - const {onremove} = this.spec.props; - if (onremove) { - onremove(context.node); - } - } - updated(context) { - const {onupdate, onrender} = this.spec.props; - if (onupdate) { - onupdate(context.node); - } - if (onrender) { - onrender(context.node); - } - } - } - const symbols = { - CREATED: Symbol(), - REMOVED: Symbol(), - UPDATED: Symbol(), - RENDERED: Symbol(), - ACTIVE: Symbol(), - DEFAULTS_ASSIGNED: Symbol() - }; - const domPlugins = [ - [PLUGINS_CREATE_ELEMENT, pluginsCreateElement], - [PLUGINS_SET_ATTRIBUTE, pluginsSetAttribute] - ]; - class ComponentVNode extends VNodeBase { - constructor(spec, parent) { - super(parent); - this.lock = false; - this.spec = spec; - this.prev = null; - this.store = {}; - this.store[symbols.ACTIVE] = this; - } - matches(other) { - return ( - other instanceof ComponentVNode && - this.spec.type === other.spec.type - ); - } - key() { - return this.spec.props.key; - } - children() { - return [this.child]; - } - createContext(context) { - const {parent} = context; - const {spec, prev, store} = this; - return { - spec, - prev, - store, - get node() { - return context.node; - }, - get nodes() { - return context.nodes; - }, - parent, - onCreate: (fn) => (store[symbols.CREATED] = fn), - onUpdate: (fn) => (store[symbols.UPDATED] = fn), - onRemove: (fn) => (store[symbols.REMOVED] = fn), - onRender: (fn) => (store[symbols.RENDERED] = fn), - refresh: () => { - const activeVNode = store[symbols.ACTIVE]; - activeVNode.refresh(context); - }, - leave: () => context.vdom.LEAVE, - getStore: (defaults) => { - if (defaults && !store[symbols.DEFAULTS_ASSIGNED]) { - Object.entries(defaults).forEach(([prop, value]) => { - store[prop] = value; - }); - store[symbols.DEFAULTS_ASSIGNED] = true; - } - return store; - } - }; - } - unbox(context) { - const Component = this.spec.type; - const props = this.spec.props; - const children = this.spec.children; - this.lock = true; - const prevContext = ComponentVNode.context; - ComponentVNode.context = this.createContext(context); - let unboxed = null; - try { - unboxed = Component(props, ...children); - } finally { - ComponentVNode.context = prevContext; - this.lock = false; - } - return unboxed; - } - refresh(context) { - if (this.lock) { - throw new Error( - "Calling refresh during unboxing causes infinite loop" - ); - } - this.prev = this.spec; - const latestContext = context.vdom.getVNodeContext(this); - const unboxed = this.unbox(latestContext); - if (unboxed === context.vdom.LEAVE) { - return; - } - const prevChild = this.child; - this.child = createVNode(unboxed, this); - context.vdom.execute(this.child, prevChild); - this.updated(context); - } - addPlugins() { - addComponentPlugins(this.spec.type, domPlugins); - } - deletePlugins() { - deleteComponentPlugins(this.spec.type, domPlugins); - } - attach(context) { - this.addPlugins(); - const unboxed = this.unbox(context); - const childSpec = unboxed === context.vdom.LEAVE ? null : unboxed; - this.child = createVNode(childSpec, this); - } - update(prev, context) { - this.store = prev.store; - this.prev = prev.spec; - this.store[symbols.ACTIVE] = this; - const prevContext = context.vdom.getVNodeContext(prev); - this.addPlugins(); - const unboxed = this.unbox(prevContext); - let result = null; - if (unboxed === context.vdom.LEAVE) { - result = unboxed; - this.child = prev.child; - context.vdom.adoptVNode(this.child, this); - } else { - this.child = createVNode(unboxed, this); - } - return result; - } - handle(event, context) { - const fn = this.store[event]; - if (fn) { - const nodes = - context.nodes.length === 0 ? [null] : context.nodes; - fn(...nodes); - } - } - attached(context) { - this.deletePlugins(); - this.handle(symbols.CREATED, context); - this.handle(symbols.RENDERED, context); - } - detached(context) { - this.handle(symbols.REMOVED, context); - } - updated(context) { - this.deletePlugins(); - this.handle(symbols.UPDATED, context); - this.handle(symbols.RENDERED, context); - } - } - ComponentVNode.context = null; - function getComponentContext() { - return ComponentVNode.context; - } - class TextVNode extends VNodeBase { - constructor(text, parent) { - super(parent); - this.text = text; - } - matches(other) { - return other instanceof TextVNode; - } - children() { - return [this.child]; - } - getExistingNode(context) { - const {parent} = context; - let node; - if (context.node instanceof Text) { - node = context.node; - } else if ( - !isElementRefined(parent, context.vdom) && - context.vdom.isDOMNodeCaptured(parent) - ) { - const sibling = context.sibling; - const guess = sibling ? sibling.nextSibling : parent.firstChild; - if ( - guess && - !context.vdom.isDOMNodeCaptured(guess) && - guess instanceof Text - ) { - node = guess; - } - } - return node; - } - attach(context) { - const existing = this.getExistingNode(context); - let node; - if (existing) { - node = existing; - node.textContent = this.text; - } else { - node = document.createTextNode(this.text); - } - this.child = createVNode(node, this); - } - update(prev, context) { - const prevContext = context.vdom.getVNodeContext(prev); - const {node} = prevContext; - if (this.text !== prev.text) { - node.textContent = this.text; - } - this.child = createVNode(node, this); - } - } - class InlineFunctionVNode extends VNodeBase { - constructor(fn, parent) { - super(parent); - this.fn = fn; - } - matches(other) { - return other instanceof InlineFunctionVNode; - } - children() { - return [this.child]; - } - call(context) { - const fn = this.fn; - const inlineFnContext = { - parent: context.parent, - get node() { - return context.node; - }, - get nodes() { - return context.nodes; - } - }; - const result = fn(inlineFnContext); - this.child = createVNode(result, this); - } - attach(context) { - this.call(context); - } - update(prev, context) { - const prevContext = context.vdom.getVNodeContext(prev); - this.call(prevContext); - } - } - class NullVNode extends VNodeBase { - matches(other) { - return other instanceof NullVNode; - } - } - class DOMVNode extends VNodeBase { - constructor(node, childSpecs, parent, isNative) { - super(parent); - this.node = node; - this.childSpecs = childSpecs; - this.isNative = isNative; - } - matches(other) { - return other instanceof DOMVNode && this.node === other.node; - } - wrap() { - this.childVNodes = this.childSpecs.map((spec) => - createVNode(spec, this) - ); - } - insertNode(context) { - const {parent, sibling} = context; - const shouldInsert = !( - parent === this.node.parentElement && - sibling === this.node.previousSibling - ); - if (shouldInsert) { - const target = sibling - ? sibling.nextSibling - : parent.firstChild; - parent.insertBefore(this.node, target); - } - } - attach(context) { - this.wrap(); - this.insertNode(context); - } - detach(context) { - context.parent.removeChild(this.node); - } - update(prev, context) { - this.wrap(); - this.insertNode(context); - } - cleanupDOMChildren(context) { - const element = this.node; - for (let current = element.lastChild; current != null; ) { - if (context.vdom.isDOMNodeCaptured(current)) { - current = current.previousSibling; - } else { - const prev = current.previousSibling; - element.removeChild(current); - current = prev; - } - } - } - refine(context) { - if (!this.isNative) { - this.cleanupDOMChildren(context); - } - const element = this.node; - markElementAsRefined(element, context.vdom); - } - attached(context) { - const {node} = this; - if ( - node instanceof Element && - !isElementRefined(node, context.vdom) && - context.vdom.isDOMNodeCaptured(node) - ) { - this.refine(context); - } - } - children() { - return this.childVNodes; - } - } - function isDOMVNode(v) { - return v instanceof DOMVNode; - } - function createDOMVNode(node, childSpecs, parent, isNative) { - return new DOMVNode(node, childSpecs, parent, isNative); - } - class ArrayVNode extends VNodeBase { - constructor(items, key, parent) { - super(parent); - this.items = items; - this.id = key; - } - matches(other) { - return other instanceof ArrayVNode; - } - key() { - return this.id; - } - children() { - return this.childVNodes; - } - wrap() { - this.childVNodes = this.items.map((spec) => - createVNode(spec, this) - ); - } - attach() { - this.wrap(); - } - update() { - this.wrap(); - } - } - function createVNode(spec, parent) { - if (isNodeSpec(spec)) { - return new ElementVNode(spec, parent); - } - if (isComponentSpec(spec)) { - if (spec.type === Array) { - return new ArrayVNode(spec.children, spec.props.key, parent); - } - return new ComponentVNode(spec, parent); - } - if (typeof spec === "string") { - return new TextVNode(spec, parent); - } - if (spec == null) { - return new NullVNode(parent); - } - if (typeof spec === "function") { - return new InlineFunctionVNode(spec, parent); - } - if (spec instanceof Node) { - return createDOMVNode(spec, [], parent, true); - } - if (Array.isArray(spec)) { - return new ArrayVNode(spec, null, parent); - } - throw new Error("Unable to create virtual node for spec"); - } - - function createVDOM(rootNode) { - const contexts = new WeakMap(); - const hubs = new WeakMap(); - const parentNodes = new WeakMap(); - const passingLinks = new WeakMap(); - const linkedParents = new WeakSet(); - const LEAVE = Symbol(); - function execute$1(vnode, old) { - execute(vnode, old, vdom); - } - function creatVNodeContext(vnode) { - const parentNode = parentNodes.get(vnode); - contexts.set(vnode, { - parent: parentNode, - get node() { - const linked = passingLinks - .get(vnode) - .find((link) => link.node != null); - return linked ? linked.node : null; - }, - get nodes() { - return passingLinks - .get(vnode) - .map((link) => link.node) - .filter((node) => node); - }, - get sibling() { - if (parentNode === rootNode.parentElement) { - return passingLinks.get(vnode).first.node - .previousSibling; - } - const hub = hubs.get(parentNode); - let current = passingLinks.get(vnode).first; - while ((current = hub.links.before(current))) { - if (current.node) { - return current.node; - } - } - return null; - }, - vdom - }); - } - function createRootVNodeLinks(vnode) { - const parentNode = - rootNode.parentElement || document.createDocumentFragment(); - const node = rootNode; - const links = new LinkedList({ - parentNode, - node - }); - passingLinks.set(vnode, links.copy()); - parentNodes.set(vnode, parentNode); - hubs.set(parentNode, { - node: parentNode, - links - }); - } - function createVNodeLinks(vnode) { - const parent = vnode.parent(); - const isBranch = linkedParents.has(parent); - const parentNode = isDOMVNode(parent) - ? parent.node - : parentNodes.get(parent); - parentNodes.set(vnode, parentNode); - const vnodeLinks = new LinkedList(); - passingLinks.set(vnode, vnodeLinks); - if (isBranch) { - const newLink = { - parentNode, - node: null - }; - let current = vnode; - do { - passingLinks.get(current).push(newLink); - current = current.parent(); - } while (current && !isDOMVNode(current)); - hubs.get(parentNode).links.push(newLink); - } else { - linkedParents.add(parent); - const links = isDOMVNode(parent) - ? hubs.get(parentNode).links - : passingLinks.get(parent); - links.forEach((link) => vnodeLinks.push(link)); - } - } - function connectDOMVNode(vnode) { - if (isDOMVNode(vnode)) { - const {node} = vnode; - hubs.set(node, { - node, - links: new LinkedList({ - parentNode: node, - node: null - }) - }); - passingLinks.get(vnode).forEach((link) => (link.node = node)); - } - } - function addVNode(vnode) { - const parent = vnode.parent(); - if (parent == null) { - createRootVNodeLinks(vnode); - } else { - createVNodeLinks(vnode); - } - connectDOMVNode(vnode); - creatVNodeContext(vnode); - } - function getVNodeContext(vnode) { - return contexts.get(vnode); - } - function getAncestorsLinks(vnode) { - const parentNode = parentNodes.get(vnode); - const hub = hubs.get(parentNode); - const allLinks = []; - let current = vnode; - while ((current = current.parent()) && !isDOMVNode(current)) { - allLinks.push(passingLinks.get(current)); - } - allLinks.push(hub.links); - return allLinks; - } - function replaceVNode(old, vnode) { - if (vnode.parent() == null) { - addVNode(vnode); - return; - } - const oldContext = contexts.get(old); - const {parent: parentNode} = oldContext; - parentNodes.set(vnode, parentNode); - const oldLinks = passingLinks.get(old); - const newLink = { - parentNode, - node: null - }; - getAncestorsLinks(vnode).forEach((links) => { - const nextLink = links.after(oldLinks.last); - oldLinks.forEach((link) => links.delete(link)); - if (nextLink) { - links.insertBefore(newLink, nextLink); - } else { - links.push(newLink); - } - }); - const vnodeLinks = new LinkedList(newLink); - passingLinks.set(vnode, vnodeLinks); - creatVNodeContext(vnode); - } - function adoptVNode(vnode, parent) { - const vnodeLinks = passingLinks.get(vnode); - const parentLinks = passingLinks.get(parent).copy(); - vnode.parent(parent); - getAncestorsLinks(vnode).forEach((links) => { - vnodeLinks.forEach((link) => - links.insertBefore(link, parentLinks.first) - ); - parentLinks.forEach((link) => links.delete(link)); - }); - } - function isDOMNodeCaptured(node) { - return hubs.has(node) && node !== rootNode.parentElement; - } - const vdom = { - execute: execute$1, - addVNode, - getVNodeContext, - replaceVNode, - adoptVNode, - isDOMNodeCaptured, - LEAVE - }; - return vdom; - } - - const roots = new WeakMap(); - const vdoms = new WeakMap(); - function realize(node, vnode) { - const old = roots.get(node) || null; - roots.set(node, vnode); - let vdom; - if (vdoms.has(node)) { - vdom = vdoms.get(node); - } else { - vdom = createVDOM(node); - vdoms.set(node, vdom); - } - vdom.execute(vnode, old); - return vdom.getVNodeContext(vnode); - } - function render$1(element, spec) { - const vnode = createDOMVNode( - element, - Array.isArray(spec) ? spec : [spec], - null, - false - ); - realize(element, vnode); - return element; - } - function sync(node, spec) { - const vnode = createVNode(spec, null); - const context = realize(node, vnode); - const {nodes} = context; - if (nodes.length !== 1 || nodes[0] !== node) { - throw new Error("Spec does not match the node"); - } - return nodes[0]; - } - - function normalize(attrsOrChild, ...otherChildren) { - const attrs = - isObject(attrsOrChild) && !isSpec(attrsOrChild) - ? attrsOrChild - : null; - const children = - attrs == null - ? [attrsOrChild].concat(otherChildren) - : otherChildren; - return {attrs, children}; - } - function createTagFunction(tag) { - return (attrsOrChild, ...otherChildren) => { - const {attrs, children} = normalize(attrsOrChild, otherChildren); - return m(tag, attrs, children); - }; - } - new Proxy( - {}, - { - get: (_, tag) => { - return createTagFunction(tag); - } - } - ); - - const plugins = { - createElement: createPluginsAPI(PLUGINS_CREATE_ELEMENT), - setAttribute: createPluginsAPI(PLUGINS_SET_ATTRIBUTE) - }; - - const isNavigatorDefined = typeof navigator !== "undefined"; - const userAgent = isNavigatorDefined - ? navigator.userAgentData && - Array.isArray(navigator.userAgentData.brands) - ? navigator.userAgentData.brands - .map( - (brand) => `${brand.brand.toLowerCase()} ${brand.version}` - ) - .join(" ") - : navigator.userAgent.toLowerCase() - : "some useragent"; - const platform = isNavigatorDefined - ? navigator.userAgentData && - typeof navigator.userAgentData.platform === "string" - ? navigator.userAgentData.platform.toLowerCase() - : navigator.platform.toLowerCase() - : "some platform"; - const isFirefox = !true; - userAgent.includes("vivaldi"); - userAgent.includes("yabrowser"); - userAgent.includes("opr") || userAgent.includes("opera"); - const isEdge = userAgent.includes("edg"); - const isWindows = platform.startsWith("win"); - const isMacOS = platform.startsWith("mac"); - const isMobile = - isNavigatorDefined && navigator.userAgentData - ? navigator.userAgentData.mobile - : userAgent.includes("mobile"); - const isMatchMediaChangeEventListenerBuggy = - (isNavigatorDefined && - navigator.userAgentData && - ["Linux", "Android"].includes(navigator.userAgentData.platform)) || - platform.startsWith("linux"); - (() => { - const m = userAgent.match(/chrom(?:e|ium)(?:\/| )([^ ]+)/); - if (m && m[1]) { - return m[1]; - } - return ""; - })(); - (() => { - const m = userAgent.match(/(?:firefox|librewolf)(?:\/| )([^ ]+)/); - if (m && m[1]) { - return m[1]; - } - return ""; - })(); - (() => { - try { - document.querySelector(":defined"); - return true; - } catch (err) { - return false; - } - })(); - - var MessageTypeUItoBG; - (function (MessageTypeUItoBG) { - MessageTypeUItoBG["GET_DATA"] = "ui-bg-get-data"; - MessageTypeUItoBG["GET_DEVTOOLS_DATA"] = "ui-bg-get-devtools-data"; - MessageTypeUItoBG["SUBSCRIBE_TO_CHANGES"] = - "ui-bg-subscribe-to-changes"; - MessageTypeUItoBG["UNSUBSCRIBE_FROM_CHANGES"] = - "ui-bg-unsubscribe-from-changes"; - MessageTypeUItoBG["CHANGE_SETTINGS"] = "ui-bg-change-settings"; - MessageTypeUItoBG["SET_THEME"] = "ui-bg-set-theme"; - MessageTypeUItoBG["TOGGLE_ACTIVE_TAB"] = "ui-bg-toggle-active-tab"; - MessageTypeUItoBG["MARK_NEWS_AS_READ"] = "ui-bg-mark-news-as-read"; - MessageTypeUItoBG["MARK_NEWS_AS_DISPLAYED"] = - "ui-bg-mark-news-as-displayed"; - MessageTypeUItoBG["LOAD_CONFIG"] = "ui-bg-load-config"; - MessageTypeUItoBG["APPLY_DEV_DYNAMIC_THEME_FIXES"] = - "ui-bg-apply-dev-dynamic-theme-fixes"; - MessageTypeUItoBG["RESET_DEV_DYNAMIC_THEME_FIXES"] = - "ui-bg-reset-dev-dynamic-theme-fixes"; - MessageTypeUItoBG["APPLY_DEV_INVERSION_FIXES"] = - "ui-bg-apply-dev-inversion-fixes"; - MessageTypeUItoBG["RESET_DEV_INVERSION_FIXES"] = - "ui-bg-reset-dev-inversion-fixes"; - MessageTypeUItoBG["APPLY_DEV_STATIC_THEMES"] = - "ui-bg-apply-dev-static-themes"; - MessageTypeUItoBG["RESET_DEV_STATIC_THEMES"] = - "ui-bg-reset-dev-static-themes"; - MessageTypeUItoBG["COLOR_SCHEME_CHANGE"] = "ui-bg-color-scheme-change"; - MessageTypeUItoBG["HIDE_HIGHLIGHTS"] = "ui-bg-hide-highlights"; - })(MessageTypeUItoBG || (MessageTypeUItoBG = {})); - var MessageTypeBGtoUI; - (function (MessageTypeBGtoUI) { - MessageTypeBGtoUI["CHANGES"] = "bg-ui-changes"; - })(MessageTypeBGtoUI || (MessageTypeBGtoUI = {})); - var DebugMessageTypeBGtoUI; - (function (DebugMessageTypeBGtoUI) { - DebugMessageTypeBGtoUI["CSS_UPDATE"] = "debug-bg-ui-css-update"; - DebugMessageTypeBGtoUI["UPDATE"] = "debug-bg-ui-update"; - })(DebugMessageTypeBGtoUI || (DebugMessageTypeBGtoUI = {})); - var MessageTypeBGtoCS; - (function (MessageTypeBGtoCS) { - MessageTypeBGtoCS["ADD_CSS_FILTER"] = "bg-cs-add-css-filter"; - MessageTypeBGtoCS["ADD_DYNAMIC_THEME"] = "bg-cs-add-dynamic-theme"; - MessageTypeBGtoCS["ADD_STATIC_THEME"] = "bg-cs-add-static-theme"; - MessageTypeBGtoCS["ADD_SVG_FILTER"] = "bg-cs-add-svg-filter"; - MessageTypeBGtoCS["CLEAN_UP"] = "bg-cs-clean-up"; - MessageTypeBGtoCS["FETCH_RESPONSE"] = "bg-cs-fetch-response"; - MessageTypeBGtoCS["UNSUPPORTED_SENDER"] = "bg-cs-unsupported-sender"; - })(MessageTypeBGtoCS || (MessageTypeBGtoCS = {})); - var DebugMessageTypeBGtoCS; - (function (DebugMessageTypeBGtoCS) { - DebugMessageTypeBGtoCS["RELOAD"] = "debug-bg-cs-reload"; - })(DebugMessageTypeBGtoCS || (DebugMessageTypeBGtoCS = {})); - var MessageTypeCStoBG; - (function (MessageTypeCStoBG) { - MessageTypeCStoBG["COLOR_SCHEME_CHANGE"] = "cs-bg-color-scheme-change"; - MessageTypeCStoBG["DARK_THEME_DETECTED"] = "cs-bg-dark-theme-detected"; - MessageTypeCStoBG["DARK_THEME_NOT_DETECTED"] = - "cs-bg-dark-theme-not-detected"; - MessageTypeCStoBG["FETCH"] = "cs-bg-fetch"; - MessageTypeCStoBG["DOCUMENT_CONNECT"] = "cs-bg-document-connect"; - MessageTypeCStoBG["DOCUMENT_FORGET"] = "cs-bg-document-forget"; - MessageTypeCStoBG["DOCUMENT_FREEZE"] = "cs-bg-document-freeze"; - MessageTypeCStoBG["DOCUMENT_RESUME"] = "cs-bg-document-resume"; - })(MessageTypeCStoBG || (MessageTypeCStoBG = {})); - var DebugMessageTypeCStoBG; - (function (DebugMessageTypeCStoBG) { - DebugMessageTypeCStoBG["LOG"] = "debug-cs-bg-log"; - })(DebugMessageTypeCStoBG || (DebugMessageTypeCStoBG = {})); - var MessageTypeCStoUI; - (function (MessageTypeCStoUI) { - MessageTypeCStoUI["EXPORT_CSS_RESPONSE"] = "cs-ui-export-css-response"; - })(MessageTypeCStoUI || (MessageTypeCStoUI = {})); - var MessageTypeUItoCS; - (function (MessageTypeUItoCS) { - MessageTypeUItoCS["EXPORT_CSS"] = "ui-cs-export-css"; - })(MessageTypeUItoCS || (MessageTypeUItoCS = {})); - - class Connector { - changeSubscribers; - constructor() { - this.changeSubscribers = new Set(); - } - async sendRequest(type, data) { - return new Promise((resolve, reject) => { - chrome.runtime.sendMessage({type, data}, ({data, error}) => { - if (error) { - reject(error); - } else { - resolve(data); - } - }); - }); - } - async firefoxSendRequestWithResponse(type, data) { - return new Promise((resolve, reject) => { - const dataPort = chrome.runtime.connect({name: type}); - dataPort.onDisconnect.addListener(() => reject()); - dataPort.onMessage.addListener(({data, error}) => { - if (error) { - reject(error); - } else { - resolve(data); - } - dataPort.disconnect(); - }); - data && dataPort.postMessage({data}); - }); - } - async getData() { - return await this.sendRequest(MessageTypeUItoBG.GET_DATA); - } - async getDevToolsData() { - return await this.sendRequest(MessageTypeUItoBG.GET_DEVTOOLS_DATA); - } - onChangesReceived = ({type, data}) => { - if (type === MessageTypeBGtoUI.CHANGES) { - this.changeSubscribers.forEach((callback) => callback(data)); - } - }; - subscribeToChanges(callback) { - this.changeSubscribers.add(callback); - if (this.changeSubscribers.size === 1) { - chrome.runtime.onMessage.addListener(this.onChangesReceived); - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.SUBSCRIBE_TO_CHANGES - }); - } - } - async setShortcut(command, shortcut) { - return null; - } - changeSettings(settings) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.CHANGE_SETTINGS, - data: settings - }); - } - setTheme(theme) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.SET_THEME, - data: theme - }); - } - toggleActiveTab() { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.TOGGLE_ACTIVE_TAB, - data: {} - }); - } - markNewsAsRead(ids) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.MARK_NEWS_AS_READ, - data: ids - }); - } - markNewsAsDisplayed(ids) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.MARK_NEWS_AS_DISPLAYED, - data: ids - }); - } - loadConfig(options) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.LOAD_CONFIG, - data: options - }); - } - async applyDevDynamicThemeFixes(text) { - return await this.sendRequest( - MessageTypeUItoBG.APPLY_DEV_DYNAMIC_THEME_FIXES, - text - ); - } - resetDevDynamicThemeFixes() { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.RESET_DEV_DYNAMIC_THEME_FIXES - }); - } - async applyDevInversionFixes(text) { - return await this.sendRequest( - MessageTypeUItoBG.APPLY_DEV_INVERSION_FIXES, - text - ); - } - resetDevInversionFixes() { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.RESET_DEV_INVERSION_FIXES - }); - } - async applyDevStaticThemes(text) { - return await this.sendRequest( - MessageTypeUItoBG.APPLY_DEV_STATIC_THEMES, - text - ); - } - resetDevStaticThemes() { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.RESET_DEV_STATIC_THEMES - }); - } - async hideHighlights(ids) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.HIDE_HIGHLIGHTS, - data: ids - }); - } - disconnect() { - if (this.changeSubscribers.size > 0) { - this.changeSubscribers.clear(); - chrome.runtime.onMessage.removeListener(this.onChangesReceived); - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.UNSUBSCRIBE_FROM_CHANGES - }); - } - } - } - - /* malevic@0.20.2 - Aug 10, 2024 */ - - function withForms(type) { - plugins.setAttribute.add(type, ({element, attr, value}) => { - if (attr === "value" && element instanceof HTMLInputElement) { - const text = (element.value = value == null ? "" : value); - element.value = text; - return true; - } - return null; - }); - return type; - } - - /* malevic@0.20.2 - Aug 10, 2024 */ - - let currentUseStateFn = null; - function useState(initialState) { - if (!currentUseStateFn) { - throw new Error("`useState()` should be called inside a component"); - } - return currentUseStateFn(initialState); - } - function withState(type) { - const Stateful = (props, ...children) => { - const context = getComponentContext(); - const useState = (initial) => { - if (!context) { - return {state: initial, setState: null}; - } - const {store, refresh} = context; - store.state = store.state || initial; - const setState = (newState) => { - if (lock) { - throw new Error( - "Setting state during unboxing causes infinite loop" - ); - } - store.state = Object.assign( - Object.assign({}, store.state), - newState - ); - refresh(); - }; - return { - state: store.state, - setState - }; - }; - let lock = true; - const prevUseStateFn = currentUseStateFn; - currentUseStateFn = useState; - let result; - try { - result = type(props, ...children); - } finally { - currentUseStateFn = prevUseStateFn; - lock = false; - } - return result; - }; - return Stateful; - } - - function classes(...args) { - const classes = []; - args.filter((c) => Boolean(c)).forEach((c) => { - if (typeof c === "string") { - classes.push(c); - } else if (typeof c === "object") { - classes.push( - ...Object.keys(c).filter((key) => Boolean(c[key])) - ); - } - }); - return classes.join(" "); - } - function compose(type, ...wrappers) { - return wrappers.reduce((t, w) => w(t), type); - } - function saveFile(name, content) { - const a = document.createElement("a"); - a.href = URL.createObjectURL(new Blob([content])); - a.download = name; - a.click(); - } - function throttle$1(callback) { - let frameId = null; - return (...args) => { - if (!frameId) { - callback(...args); - frameId = requestAnimationFrame(() => (frameId = null)); - } - }; - } - function onSwipeStart(startEventObj, startHandler) { - const isTouchEvent = - typeof TouchEvent !== "undefined" && - startEventObj instanceof TouchEvent; - const touchId = isTouchEvent - ? startEventObj.changedTouches[0].identifier - : null; - const pointerMoveEvent = isTouchEvent ? "touchmove" : "mousemove"; - const pointerUpEvent = isTouchEvent ? "touchend" : "mouseup"; - if (!isTouchEvent) { - startEventObj.preventDefault(); - } - function getSwipeEventObject(e) { - const {clientX, clientY} = isTouchEvent ? getTouch(e) : e; - return {clientX, clientY}; - } - const startSE = getSwipeEventObject(startEventObj); - const {move: moveHandler, up: upHandler} = startHandler( - startSE, - startEventObj - ); - function getTouch(e) { - return Array.from(e.changedTouches).find( - ({identifier: id}) => id === touchId - ); - } - const onPointerMove = throttle$1((e) => { - const se = getSwipeEventObject(e); - moveHandler(se, e); - }); - function onPointerUp(e) { - unsubscribe(); - const se = getSwipeEventObject(e); - upHandler(se, e); - } - function unsubscribe() { - window.removeEventListener(pointerMoveEvent, onPointerMove); - window.removeEventListener(pointerUpEvent, onPointerUp); - } - window.addEventListener(pointerMoveEvent, onPointerMove, { - passive: true - }); - window.addEventListener(pointerUpEvent, onPointerUp, {passive: true}); - } - function createSwipeHandler(startHandler) { - return (e) => onSwipeStart(e, startHandler); - } - async function getFontList() { - return new Promise((resolve) => { - if (!chrome.fontSettings) { - resolve([ - "serif", - "sans-serif", - "monospace", - "cursive", - "fantasy", - "system-ui" - ]); - return; - } - chrome.fontSettings.getFontList((list) => { - const fonts = list.map((f) => f.fontId); - resolve(fonts); - }); - }); - } - async function getExtensionPageTabMV3() { - return new Promise((resolve) => { - chrome.windows.getAll( - { - populate: true, - windowTypes: ["popup"] - }, - (w) => { - const responses = []; - let found = false; - for (const window of w) { - const response = chrome.tabs.sendMessage( - window.tabs[0].id, - "getExtensionPageTabMV3_ping", - {frameId: 0} - ); - response.then((response) => { - if (response === "getExtensionPageTabMV3_pong") { - found = true; - resolve(window.tabs[0]); - } - }); - responses.push(response); - } - Promise.all(responses).then(() => !found && resolve(null)); - } - ); - }); - } - async function getExtensionPageTab(url) { - { - return getExtensionPageTabMV3(); - } - } - async function openExtensionPage(page) { - const url = chrome.runtime.getURL(`/ui/${page}/index.html`); - if (isMobile || page === "options") { - const extensionPageTab = await getExtensionPageTab(); - if (extensionPageTab !== null) { - chrome.tabs.update(extensionPageTab.id, {active: true}); - window.close(); - } else { - chrome.tabs.create({url}); - window.close(); - } - } else { - const extensionPageTab = await getExtensionPageTab(); - if (extensionPageTab !== null) { - chrome.windows.update(extensionPageTab.windowId, { - focused: true - }); - window.close(); - } else { - chrome.windows.create({ - type: "popup", - url, - width: 800, - height: 600 - }); - window.close(); - } - } - } - - function toArray(x) { - return Array.isArray(x) ? x : [x]; - } - function mergeClass(cls, propsCls) { - const normalized = toArray(cls).concat(toArray(propsCls)); - return classes(...normalized); - } - function omitAttrs(omit, attrs) { - const result = {}; - Object.keys(attrs).forEach((key) => { - if (omit.indexOf(key) < 0) { - result[key] = attrs[key]; - } - }); - return result; - } - function isElementHidden(element) { - return element.offsetParent === null; - } - - function Button(props, ...children) { - const cls = mergeClass("button", props.class); - const attrs = omitAttrs(["class"], props); - return m$1( - "button", - {class: cls, ...attrs}, - m$1("span", {class: "button__wrapper"}, ...children) - ); - } - - function CheckBox(props, ...children) { - const cls = mergeClass("checkbox", props.class); - const attrs = omitAttrs(["class", "checked", "onchange"], props); - const check = (domNode) => (domNode.checked = Boolean(props.checked)); - return m$1( - "label", - {class: cls, ...attrs}, - m$1("input", { - class: "checkbox__input", - type: "checkbox", - checked: props.checked, - onchange: props.onchange, - onrender: check - }), - m$1("span", {class: "checkbox__checkmark"}), - m$1("span", {class: "checkbox__content"}, children) - ); - } - - function ControlGroup(props, control, description) { - return m$1( - "span", - {class: ["control-group", props.class]}, - control, - description - ); - } - function Control(props, ...content) { - return m$1( - "span", - {class: ["control-group__control", props.class]}, - ...content - ); - } - function Description(props, ...content) { - return m$1( - "span", - {class: ["control-group__description", props.class]}, - ...content - ); - } - var ControlGroup$1 = Object.assign(ControlGroup, {Control, Description}); - - function evalMath(expression) { - const rpnStack = []; - const workingStack = []; - let lastToken; - for (let i = 0, len = expression.length; i < len; i++) { - const token = expression[i]; - if (!token || token === " ") { - continue; - } - if (operators.has(token)) { - const op = operators.get(token); - while (workingStack.length) { - const currentOp = operators.get(workingStack[0]); - if (!currentOp) { - break; - } - if (op.lessOrEqualThan(currentOp)) { - rpnStack.push(workingStack.shift()); - } else { - break; - } - } - workingStack.unshift(token); - } else if (!lastToken || operators.has(lastToken)) { - rpnStack.push(token); - } else { - rpnStack[rpnStack.length - 1] += token; - } - lastToken = token; - } - rpnStack.push(...workingStack); - const stack = []; - for (let i = 0, len = rpnStack.length; i < len; i++) { - const op = operators.get(rpnStack[i]); - if (op) { - const args = stack.splice(0, 2); - stack.push(op.exec(args[1], args[0])); - } else { - stack.unshift(parseFloat(rpnStack[i])); - } - } - return stack[0]; - } - class Operator { - precendce; - execMethod; - constructor(precedence, method) { - this.precendce = precedence; - this.execMethod = method; - } - exec(left, right) { - return this.execMethod(left, right); - } - lessOrEqualThan(op) { - return this.precendce <= op.precendce; - } - } - const operators = new Map([ - ["+", new Operator(1, (left, right) => left + right)], - ["-", new Operator(1, (left, right) => left - right)], - ["*", new Operator(2, (left, right) => left * right)], - ["/", new Operator(2, (left, right) => left / right)] - ]); - - function getParenthesesRange(input, searchStartIndex = 0) { - return getOpenCloseRange(input, searchStartIndex, "(", ")", []); - } - function getOpenCloseRange( - input, - searchStartIndex, - openToken, - closeToken, - excludeRanges - ) { - let indexOf; - if (excludeRanges.length === 0) { - indexOf = (token, pos) => input.indexOf(token, pos); - } else { - indexOf = (token, pos) => - indexOfExcluding(input, token, pos, excludeRanges); - } - const {length} = input; - let depth = 0; - let firstOpenIndex = -1; - for (let i = searchStartIndex; i < length; i++) { - if (depth === 0) { - const openIndex = indexOf(openToken, i); - if (openIndex < 0) { - break; - } - firstOpenIndex = openIndex; - depth++; - i = openIndex; - } else { - const closeIndex = indexOf(closeToken, i); - if (closeIndex < 0) { - break; - } - const openIndex = indexOf(openToken, i); - if (openIndex < 0 || closeIndex <= openIndex) { - depth--; - if (depth === 0) { - return {start: firstOpenIndex, end: closeIndex + 1}; - } - i = closeIndex; - } else { - depth++; - i = openIndex; - } - } - } - return null; - } - function indexOfExcluding(input, search, position, excludeRanges) { - const i = input.indexOf(search, position); - const exclusion = excludeRanges.find((r) => i >= r.start && i < r.end); - if (exclusion) { - return indexOfExcluding( - input, - search, - exclusion.end, - excludeRanges - ); - } - return i; - } - - const isSystemDarkModeEnabled = () => - matchMedia("(prefers-color-scheme: dark)").matches; - - const rgbaParseCache = new Map(); - function parseColorWithCache($color) { - $color = $color.trim(); - if (rgbaParseCache.has($color)) { - return rgbaParseCache.get($color); - } - if ($color.includes("calc(")) { - $color = lowerCalcExpression($color); - } - const color = parse($color); - color && rgbaParseCache.set($color, color); - return color; - } - function hslToRGB({h, s, l, a = 1}) { - if (s === 0) { - const [r, b, g] = [l, l, l].map((x) => Math.round(x * 255)); - return {r, g, b, a}; - } - const c = (1 - Math.abs(2 * l - 1)) * s; - const x = c * (1 - Math.abs(((h / 60) % 2) - 1)); - const m = l - c / 2; - const [r, g, b] = ( - h < 60 - ? [c, x, 0] - : h < 120 - ? [x, c, 0] - : h < 180 - ? [0, c, x] - : h < 240 - ? [0, x, c] - : h < 300 - ? [x, 0, c] - : [c, 0, x] - ).map((n) => Math.round((n + m) * 255)); - return {r, g, b, a}; - } - function rgbToHSL({r: r255, g: g255, b: b255, a = 1}) { - const r = r255 / 255; - const g = g255 / 255; - const b = b255 / 255; - const max = Math.max(r, g, b); - const min = Math.min(r, g, b); - const c = max - min; - const l = (max + min) / 2; - if (c === 0) { - return {h: 0, s: 0, l, a}; - } - let h = - (max === r - ? ((g - b) / c) % 6 - : max === g - ? (b - r) / c + 2 - : (r - g) / c + 4) * 60; - if (h < 0) { - h += 360; - } - const s = c / (1 - Math.abs(2 * l - 1)); - return {h, s, l, a}; - } - function toFixed(n, digits = 0) { - const fixed = n.toFixed(digits); - if (digits === 0) { - return fixed; - } - const dot = fixed.indexOf("."); - if (dot >= 0) { - const zerosMatch = fixed.match(/0+$/); - if (zerosMatch) { - if (zerosMatch.index === dot + 1) { - return fixed.substring(0, dot); - } - return fixed.substring(0, zerosMatch.index); - } - } - return fixed; - } - function rgbToHexString({r, g, b, a}) { - return `#${(a != null && a < 1 - ? [r, g, b, Math.round(a * 255)] - : [r, g, b] - ) - .map((x) => { - return `${x < 16 ? "0" : ""}${x.toString(16)}`; - }) - .join("")}`; - } - function hslToString(hsl) { - const {h, s, l, a} = hsl; - if (a != null && a < 1) { - return `hsla(${toFixed(h)}, ${toFixed(s * 100)}%, ${toFixed(l * 100)}%, ${toFixed(a, 2)})`; - } - return `hsl(${toFixed(h)}, ${toFixed(s * 100)}%, ${toFixed(l * 100)}%)`; - } - const rgbMatch = /^rgba?\([^\(\)]+\)$/; - const hslMatch = /^hsla?\([^\(\)]+\)$/; - const hexMatch = /^#[0-9a-f]+$/i; - function parse($color) { - const c = $color.trim().toLowerCase(); - if (c.match(rgbMatch)) { - return parseRGB(c); - } - if (c.match(hslMatch)) { - return parseHSL(c); - } - if (c.match(hexMatch)) { - return parseHex(c); - } - if (knownColors.has(c)) { - return getColorByName(c); - } - if (systemColors.has(c)) { - return getSystemColor(c); - } - if ($color === "transparent") { - return {r: 0, g: 0, b: 0, a: 0}; - } - if ( - (c.startsWith("color(") || c.startsWith("color-mix(")) && - c.endsWith(")") - ) { - return domParseColor(c); - } - if (c.startsWith("light-dark(") && c.endsWith(")")) { - const match = c.match( - /^light-dark\(\s*([a-z]+(\(.*\))?),\s*([a-z]+(\(.*\))?)\s*\)$/ - ); - if (match) { - const schemeColor = isSystemDarkModeEnabled() - ? match[3] - : match[1]; - return parse(schemeColor); - } - } - return null; - } - function getNumbers($color) { - const numbers = []; - let prevPos = 0; - let isMining = false; - const startIndex = $color.indexOf("("); - $color = $color.substring(startIndex + 1, $color.length - 1); - for (let i = 0; i < $color.length; i++) { - const c = $color[i]; - if ((c >= "0" && c <= "9") || c === "." || c === "+" || c === "-") { - isMining = true; - } else if (isMining && (c === " " || c === "," || c === "/")) { - numbers.push($color.substring(prevPos, i)); - isMining = false; - prevPos = i + 1; - } else if (!isMining) { - prevPos = i + 1; - } - } - if (isMining) { - numbers.push($color.substring(prevPos, $color.length)); - } - return numbers; - } - function getNumbersFromString(str, range, units) { - const raw = getNumbers(str); - const unitsList = Object.entries(units); - const numbers = raw - .map((r) => r.trim()) - .map((r, i) => { - let n; - const unit = unitsList.find(([u]) => r.endsWith(u)); - if (unit) { - n = - (parseFloat(r.substring(0, r.length - unit[0].length)) / - unit[1]) * - range[i]; - } else { - n = parseFloat(r); - } - if (range[i] > 1) { - return Math.round(n); - } - return n; - }); - return numbers; - } - const rgbRange = [255, 255, 255, 1]; - const rgbUnits = {"%": 100}; - function parseRGB($rgb) { - const [r, g, b, a = 1] = getNumbersFromString($rgb, rgbRange, rgbUnits); - return {r, g, b, a}; - } - const hslRange = [360, 1, 1, 1]; - const hslUnits = {"%": 100, "deg": 360, "rad": 2 * Math.PI, "turn": 1}; - function parseHSL($hsl) { - const [h, s, l, a = 1] = getNumbersFromString($hsl, hslRange, hslUnits); - return hslToRGB({h, s, l, a}); - } - function parseHex($hex) { - const h = $hex.substring(1); - switch (h.length) { - case 3: - case 4: { - const [r, g, b] = [0, 1, 2].map((i) => - parseInt(`${h[i]}${h[i]}`, 16) - ); - const a = - h.length === 3 ? 1 : parseInt(`${h[3]}${h[3]}`, 16) / 255; - return {r, g, b, a}; - } - case 6: - case 8: { - const [r, g, b] = [0, 2, 4].map((i) => - parseInt(h.substring(i, i + 2), 16) - ); - const a = - h.length === 6 ? 1 : parseInt(h.substring(6, 8), 16) / 255; - return {r, g, b, a}; - } - } - return null; - } - function getColorByName($color) { - const n = knownColors.get($color); - return { - r: (n >> 16) & 255, - g: (n >> 8) & 255, - b: (n >> 0) & 255, - a: 1 - }; - } - function getSystemColor($color) { - const n = systemColors.get($color); - return { - r: (n >> 16) & 255, - g: (n >> 8) & 255, - b: (n >> 0) & 255, - a: 1 - }; - } - function lowerCalcExpression(color) { - let searchIndex = 0; - const replaceBetweenIndices = (start, end, replacement) => { - color = - color.substring(0, start) + replacement + color.substring(end); - }; - while ((searchIndex = color.indexOf("calc(")) !== -1) { - const range = getParenthesesRange(color, searchIndex); - if (!range) { - break; - } - let slice = color.slice(range.start + 1, range.end - 1); - const includesPercentage = slice.includes("%"); - slice = slice.split("%").join(""); - const output = Math.round(evalMath(slice)); - replaceBetweenIndices( - range.start - 4, - range.end, - output + (includesPercentage ? "%" : "") - ); - } - return color; - } - const knownColors = new Map( - Object.entries({ - aliceblue: 0xf0f8ff, - antiquewhite: 0xfaebd7, - aqua: 0x00ffff, - aquamarine: 0x7fffd4, - azure: 0xf0ffff, - beige: 0xf5f5dc, - bisque: 0xffe4c4, - black: 0x000000, - blanchedalmond: 0xffebcd, - blue: 0x0000ff, - blueviolet: 0x8a2be2, - brown: 0xa52a2a, - burlywood: 0xdeb887, - cadetblue: 0x5f9ea0, - chartreuse: 0x7fff00, - chocolate: 0xd2691e, - coral: 0xff7f50, - cornflowerblue: 0x6495ed, - cornsilk: 0xfff8dc, - crimson: 0xdc143c, - cyan: 0x00ffff, - darkblue: 0x00008b, - darkcyan: 0x008b8b, - darkgoldenrod: 0xb8860b, - darkgray: 0xa9a9a9, - darkgrey: 0xa9a9a9, - darkgreen: 0x006400, - darkkhaki: 0xbdb76b, - darkmagenta: 0x8b008b, - darkolivegreen: 0x556b2f, - darkorange: 0xff8c00, - darkorchid: 0x9932cc, - darkred: 0x8b0000, - darksalmon: 0xe9967a, - darkseagreen: 0x8fbc8f, - darkslateblue: 0x483d8b, - darkslategray: 0x2f4f4f, - darkslategrey: 0x2f4f4f, - darkturquoise: 0x00ced1, - darkviolet: 0x9400d3, - deeppink: 0xff1493, - deepskyblue: 0x00bfff, - dimgray: 0x696969, - dimgrey: 0x696969, - dodgerblue: 0x1e90ff, - firebrick: 0xb22222, - floralwhite: 0xfffaf0, - forestgreen: 0x228b22, - fuchsia: 0xff00ff, - gainsboro: 0xdcdcdc, - ghostwhite: 0xf8f8ff, - gold: 0xffd700, - goldenrod: 0xdaa520, - gray: 0x808080, - grey: 0x808080, - green: 0x008000, - greenyellow: 0xadff2f, - honeydew: 0xf0fff0, - hotpink: 0xff69b4, - indianred: 0xcd5c5c, - indigo: 0x4b0082, - ivory: 0xfffff0, - khaki: 0xf0e68c, - lavender: 0xe6e6fa, - lavenderblush: 0xfff0f5, - lawngreen: 0x7cfc00, - lemonchiffon: 0xfffacd, - lightblue: 0xadd8e6, - lightcoral: 0xf08080, - lightcyan: 0xe0ffff, - lightgoldenrodyellow: 0xfafad2, - lightgray: 0xd3d3d3, - lightgrey: 0xd3d3d3, - lightgreen: 0x90ee90, - lightpink: 0xffb6c1, - lightsalmon: 0xffa07a, - lightseagreen: 0x20b2aa, - lightskyblue: 0x87cefa, - lightslategray: 0x778899, - lightslategrey: 0x778899, - lightsteelblue: 0xb0c4de, - lightyellow: 0xffffe0, - lime: 0x00ff00, - limegreen: 0x32cd32, - linen: 0xfaf0e6, - magenta: 0xff00ff, - maroon: 0x800000, - mediumaquamarine: 0x66cdaa, - mediumblue: 0x0000cd, - mediumorchid: 0xba55d3, - mediumpurple: 0x9370db, - mediumseagreen: 0x3cb371, - mediumslateblue: 0x7b68ee, - mediumspringgreen: 0x00fa9a, - mediumturquoise: 0x48d1cc, - mediumvioletred: 0xc71585, - midnightblue: 0x191970, - mintcream: 0xf5fffa, - mistyrose: 0xffe4e1, - moccasin: 0xffe4b5, - navajowhite: 0xffdead, - navy: 0x000080, - oldlace: 0xfdf5e6, - olive: 0x808000, - olivedrab: 0x6b8e23, - orange: 0xffa500, - orangered: 0xff4500, - orchid: 0xda70d6, - palegoldenrod: 0xeee8aa, - palegreen: 0x98fb98, - paleturquoise: 0xafeeee, - palevioletred: 0xdb7093, - papayawhip: 0xffefd5, - peachpuff: 0xffdab9, - peru: 0xcd853f, - pink: 0xffc0cb, - plum: 0xdda0dd, - powderblue: 0xb0e0e6, - purple: 0x800080, - rebeccapurple: 0x663399, - red: 0xff0000, - rosybrown: 0xbc8f8f, - royalblue: 0x4169e1, - saddlebrown: 0x8b4513, - salmon: 0xfa8072, - sandybrown: 0xf4a460, - seagreen: 0x2e8b57, - seashell: 0xfff5ee, - sienna: 0xa0522d, - silver: 0xc0c0c0, - skyblue: 0x87ceeb, - slateblue: 0x6a5acd, - slategray: 0x708090, - slategrey: 0x708090, - snow: 0xfffafa, - springgreen: 0x00ff7f, - steelblue: 0x4682b4, - tan: 0xd2b48c, - teal: 0x008080, - thistle: 0xd8bfd8, - tomato: 0xff6347, - turquoise: 0x40e0d0, - violet: 0xee82ee, - wheat: 0xf5deb3, - white: 0xffffff, - whitesmoke: 0xf5f5f5, - yellow: 0xffff00, - yellowgreen: 0x9acd32 - }) - ); - const systemColors = new Map( - Object.entries({ - "ActiveBorder": 0x3b99fc, - "ActiveCaption": 0x000000, - "AppWorkspace": 0xaaaaaa, - "Background": 0x6363ce, - "ButtonFace": 0xffffff, - "ButtonHighlight": 0xe9e9e9, - "ButtonShadow": 0x9fa09f, - "ButtonText": 0x000000, - "CaptionText": 0x000000, - "GrayText": 0x7f7f7f, - "Highlight": 0xb2d7ff, - "HighlightText": 0x000000, - "InactiveBorder": 0xffffff, - "InactiveCaption": 0xffffff, - "InactiveCaptionText": 0x000000, - "InfoBackground": 0xfbfcc5, - "InfoText": 0x000000, - "Menu": 0xf6f6f6, - "MenuText": 0xffffff, - "Scrollbar": 0xaaaaaa, - "ThreeDDarkShadow": 0x000000, - "ThreeDFace": 0xc0c0c0, - "ThreeDHighlight": 0xffffff, - "ThreeDLightShadow": 0xffffff, - "ThreeDShadow": 0x000000, - "Window": 0xececec, - "WindowFrame": 0xaaaaaa, - "WindowText": 0x000000, - "-webkit-focus-ring-color": 0xe59700 - }).map(([key, value]) => [key.toLowerCase(), value]) - ); - let canvas; - let context; - function domParseColor($color) { - if (!context) { - canvas = document.createElement("canvas"); - canvas.width = 1; - canvas.height = 1; - context = canvas.getContext("2d", {willReadFrequently: true}); - } - context.fillStyle = $color; - context.fillRect(0, 0, 1, 1); - const d = context.getImageData(0, 0, 1, 1).data; - const color = `rgba(${d[0]}, ${d[1]}, ${d[2]}, ${(d[3] / 255).toFixed(2)})`; - return parseRGB(color); - } - - function TextBox(props) { - const cls = mergeClass("textbox", props.class); - const attrs = omitAttrs(["class", "type"], props); - const type = props.type || "text"; - return m$1("input", { - class: cls, - type: type, - spellcheck: "false", - ...attrs - }); - } - - function scale(x, inLow, inHigh, outLow, outHigh) { - return ((x - inLow) * (outHigh - outLow)) / (inHigh - inLow) + outLow; - } - function clamp(x, min, max) { - return Math.min(max, Math.max(min, x)); - } - - const hsbPickerDefaults = { - wasPrevHidden: true, - hueCanvasRendered: false, - activeHSB: null, - activeChangeHandler: null, - hueTouchStartHandler: null, - sbTouchStartHandler: null - }; - function rgbToHSB({r, g, b}) { - const min = Math.min(r, g, b); - const max = Math.max(r, g, b); - return { - h: rgbToHSL({r, g, b}).h, - s: max === 0 ? 0 : 1 - min / max, - b: max / 255 - }; - } - function hsbToRGB({h: hue, s: sat, b: br}) { - let c; - if (hue < 60) { - c = [1, hue / 60, 0]; - } else if (hue < 120) { - c = [(120 - hue) / 60, 1, 0]; - } else if (hue < 180) { - c = [0, 1, (hue - 120) / 60]; - } else if (hue < 240) { - c = [0, (240 - hue) / 60, 1]; - } else if (hue < 300) { - c = [(hue - 240) / 60, 0, 1]; - } else { - c = [1, 0, (360 - hue) / 60]; - } - const max = Math.max(...c); - const [r, g, b] = c - .map((v) => v + (max - v) * (1 - sat)) - .map((v) => v * br) - .map((v) => Math.round(v * 255)); - return {r, g, b, a: 1}; - } - function hsbToString(hsb) { - const rgb = hsbToRGB(hsb); - return rgbToHexString(rgb); - } - function render(canvas, getPixel) { - const {width, height} = canvas; - const context = canvas.getContext("2d"); - const imageData = context.getImageData(0, 0, width, height); - const d = imageData.data; - for (let y = 0; y < height; y++) { - for (let x = 0; x < width; x++) { - const i = 4 * (y * width + x); - const c = getPixel(x, y); - for (let j = 0; j < 4; j++) { - d[i + j] = c[j]; - } - } - } - context.putImageData(imageData, 0, 0); - } - function renderHue(canvas) { - const {height} = canvas; - render(canvas, (_, y) => { - const hue = scale(y, 0, height, 0, 360); - const {r, g, b} = hsbToRGB({h: hue, s: 1, b: 1}); - return new Uint8ClampedArray([r, g, b, 255]); - }); - } - function renderSB(hue, canvas) { - const {width, height} = canvas; - render(canvas, (x, y) => { - const sat = scale(x, 0, width - 1, 0, 1); - const br = scale(y, 0, height - 1, 1, 0); - const {r, g, b} = hsbToRGB({h: hue, s: sat, b: br}); - return new Uint8ClampedArray([r, g, b, 255]); - }); - } - function HSBPicker(props) { - const context = getComponentContext(); - const store = context.getStore(hsbPickerDefaults); - store.activeChangeHandler = props.onChange; - const prevColor = context.prev && context.prev.props.color; - const prevActiveColor = store.activeHSB - ? hsbToString(store.activeHSB) - : null; - const didColorChange = - props.color !== prevColor && props.color !== prevActiveColor; - let activeHSB; - if (didColorChange) { - const rgb = parseColorWithCache(props.color); - activeHSB = rgbToHSB(rgb); - store.activeHSB = activeHSB; - } else { - activeHSB = store.activeHSB; - } - function onSBCanvasRender(canvas) { - if (isElementHidden(canvas)) { - return; - } - const hue = activeHSB.h; - const prevHue = - prevColor && rgbToHSB(parseColorWithCache(prevColor)).h; - if (store.wasPrevHidden || hue !== prevHue) { - renderSB(hue, canvas); - } - store.wasPrevHidden = false; - } - function onHueCanvasRender(canvas) { - if (store.hueCanvasRendered || isElementHidden(canvas)) { - return; - } - store.hueCanvasRendered = true; - renderHue(canvas); - } - function createHSBSwipeHandler(getEventHSB) { - return createSwipeHandler((startEvt, startNativeEvt) => { - const rect = - startNativeEvt.currentTarget.getBoundingClientRect(); - function onPointerMove(e) { - store.activeHSB = getEventHSB({...e, rect}); - props.onColorPreview(hsbToString(store.activeHSB)); - context.refresh(); - } - function onPointerUp(e) { - const hsb = getEventHSB({...e, rect}); - store.activeHSB = hsb; - props.onChange(hsbToString(hsb)); - } - store.activeHSB = getEventHSB({...startEvt, rect}); - context.refresh(); - return { - move: onPointerMove, - up: onPointerUp - }; - }); - } - const onSBPointerDown = createHSBSwipeHandler( - ({clientX, clientY, rect}) => { - const sat = clamp((clientX - rect.left) / rect.width, 0, 1); - const br = clamp(1 - (clientY - rect.top) / rect.height, 0, 1); - return {...activeHSB, s: sat, b: br}; - } - ); - const onHuePointerDown = createHSBSwipeHandler(({clientY, rect}) => { - const hue = clamp((clientY - rect.top) / rect.height, 0, 1) * 360; - return {...activeHSB, h: hue}; - }); - const hueCursorStyle = { - "background-color": hslToString({ - h: activeHSB.h, - s: 1, - l: 0.5, - a: 1 - }), - "left": "0%", - "top": `${(activeHSB.h / 360) * 100}%` - }; - const sbCursorStyle = { - "background-color": rgbToHexString(hsbToRGB(activeHSB)), - "left": `${activeHSB.s * 100}%`, - "top": `${(1 - activeHSB.b) * 100}%` - }; - return m$1( - "span", - {class: "hsb-picker"}, - m$1( - "span", - { - class: "hsb-picker__sb-container", - onmousedown: onSBPointerDown, - onupdate: (el) => { - if (store.sbTouchStartHandler) { - el.removeEventListener( - "touchstart", - store.sbTouchStartHandler - ); - } - el.addEventListener("touchstart", onSBPointerDown, { - passive: true - }); - store.sbTouchStartHandler = onSBPointerDown; - } - }, - m$1("canvas", { - class: "hsb-picker__sb-canvas", - onrender: onSBCanvasRender - }), - m$1("span", { - class: "hsb-picker__sb-cursor", - style: sbCursorStyle - }) - ), - m$1( - "span", - { - class: "hsb-picker__hue-container", - onmousedown: onHuePointerDown, - onupdate: (el) => { - if (store.hueTouchStartHandler) { - el.removeEventListener( - "touchstart", - store.hueTouchStartHandler - ); - } - el.addEventListener("touchstart", onHuePointerDown, { - passive: true - }); - store.hueTouchStartHandler = onHuePointerDown; - } - }, - m$1("canvas", { - class: "hsb-picker__hue-canvas", - onrender: onHueCanvasRender - }), - m$1("span", { - class: "hsb-picker__hue-cursor", - style: hueCursorStyle - }) - ) - ); - } - - function isValidColor(color) { - return Boolean(parseColorWithCache(color)); - } - const colorPickerFocuses = new WeakMap(); - function focusColorPicker(node) { - const focus = colorPickerFocuses.get(node); - focus(); - } - function ColorPicker(props) { - const context = getComponentContext(); - context.onRender((node) => colorPickerFocuses.set(node, focus)); - const store = context.store; - const isColorValid = isValidColor(props.color); - function onColorPreview(previewColor) { - store.previewNode.style.backgroundColor = previewColor; - store.textBoxNode.value = previewColor; - store.textBoxNode.blur(); - } - function onColorChange(rawValue) { - const value = rawValue.trim(); - if (isValidColor(value)) { - props.onChange(value); - } else { - props.onChange(props.color); - } - } - function focus() { - if (store.isFocused) { - return; - } - store.isFocused = true; - context.refresh(); - window.addEventListener("mousedown", onOuterClick, {passive: true}); - } - function blur() { - if (!store.isFocused) { - return; - } - window.removeEventListener("mousedown", onOuterClick); - store.isFocused = false; - context.refresh(); - } - function toggleFocus() { - if (store.isFocused) { - blur(); - } else { - focus(); - } - } - function onOuterClick(e) { - if (!e.composedPath().some((el) => el === context.node)) { - blur(); - } - } - const textBox = m$1(TextBox, { - class: "color-picker__input", - onrender: (el) => { - store.textBoxNode = el; - store.textBoxNode.value = isColorValid ? props.color : ""; - }, - onkeypress: (e) => { - const input = e.target; - if (e.key === "Enter") { - const {value} = input; - onColorChange(value); - blur(); - onColorPreview(value); - } - }, - onfocus: focus - }); - const previewElement = m$1("span", { - class: "color-picker__preview", - onclick: toggleFocus, - onrender: (el) => { - store.previewNode = el; - el.style.backgroundColor = isColorValid - ? props.color - : "transparent"; - } - }); - const resetButton = props.canReset - ? m$1("span", { - role: "button", - class: "color-picker__reset", - onclick: () => { - props.onReset(); - blur(); - } - }) - : null; - const textBoxLine = m$1( - "span", - {class: "color-picker__textbox-line"}, - textBox, - previewElement, - resetButton - ); - const hsbLine = isColorValid - ? m$1( - "span", - {class: "color-picker__hsb-line"}, - m$1(HSBPicker, { - color: props.color, - onChange: onColorChange, - onColorPreview: onColorPreview - }) - ) - : null; - return m$1( - "span", - { - class: [ - "color-picker", - store.isFocused && "color-picker--focused", - props.class - ] - }, - m$1("span", {class: "color-picker__wrapper"}, textBoxLine, hsbLine) - ); - } - var ColorPicker$1 = Object.assign(ColorPicker, {focus: focusColorPicker}); - - function DropDown(props) { - const context = getComponentContext(); - const store = context.store; - if (context.prev) { - const currOptions = props.options.map((o) => o.id); - const prevOptions = context.prev.props.options.map((o) => o.id); - if ( - currOptions.length !== prevOptions.length || - currOptions.some((o, i) => o !== prevOptions[i]) - ) { - store.isOpen = false; - } - } - function saveListNode(el) { - store.listNode = el; - } - function saveSelectedNode(el) { - store.selectedNode = el; - } - function onSelectedClick() { - store.isOpen = !store.isOpen; - context.refresh(); - if (store.isOpen) { - const onOuterClick = (e) => { - window.removeEventListener("mousedown", onOuterClick); - const listRect = store.listNode.getBoundingClientRect(); - const ex = e.clientX; - const ey = e.clientY; - if ( - ex < listRect.left || - ex > listRect.right || - ey < listRect.top || - ey > listRect.bottom - ) { - store.isOpen = false; - context.refresh(); - } - }; - window.addEventListener("mousedown", onOuterClick, { - passive: true - }); - } - } - function createListItem(value) { - return m$1( - "span", - { - class: { - "dropdown__list__item": true, - "dropdown__list__item--selected": - value.id === props.selected, - [props.class]: Boolean(props.class) - }, - onclick: () => { - store.isOpen = false; - context.refresh(); - props.onChange(value.id); - } - }, - value.content - ); - } - const selectedContent = props.options.find( - (value) => value.id === props.selected - ).content; - return m$1( - "span", - { - class: { - "dropdown": true, - "dropdown--open": store.isOpen, - [props.class]: Boolean(props.class) - } - }, - m$1( - "span", - {class: "dropdown__list", oncreate: saveListNode}, - props.options - .slice() - .sort((a, b) => - a.id === props.selected - ? -1 - : b.id === props.selected - ? 1 - : 0 - ) - .map(createListItem) - ), - m$1( - "span", - { - class: "dropdown__selected", - oncreate: saveSelectedNode, - onclick: onSelectedClick - }, - m$1( - "span", - {class: "dropdown__selected__text"}, - selectedContent - ) - ) - ); - } - - function ColorDropDown(props) { - const context = getComponentContext(); - const store = context.store; - const labels = { - DEFAULT: "Default", - AUTO: "Auto", - CUSTOM: "Custom" - }; - const dropDownOptions = [ - props.hasDefaultOption - ? {id: "default", content: labels.DEFAULT} - : null, - props.hasAutoOption ? {id: "auto", content: labels.AUTO} : null, - {id: "custom", content: labels.CUSTOM} - ].filter((v) => v); - const selectedDropDownValue = - props.value === "" - ? "default" - : props.value === "auto" - ? "auto" - : "custom"; - function onDropDownChange(value) { - const result = { - default: "", - auto: "auto", - custom: props.colorSuggestion - }[value]; - props.onChange(result); - } - const isPickerVisible = Boolean(parseColorWithCache(props.value)); - const prevValue = context.prev ? context.prev.props.value : null; - const shouldFocusOnPicker = - props.value !== "" && - props.value !== "auto" && - prevValue != null && - (prevValue === "" || prevValue === "auto"); - function onRootRender(root) { - if (shouldFocusOnPicker) { - const pickerNode = root.querySelector( - ".color-dropdown__picker" - ); - ColorPicker$1.focus(pickerNode); - } - } - return m$1( - "span", - { - class: { - "color-dropdown": true, - "color-dropdown--open": store.isOpen, - [props.class]: Boolean(props.class) - }, - onrender: onRootRender - }, - m$1(DropDown, { - class: "color-dropdown__options", - options: dropDownOptions, - selected: selectedDropDownValue, - onChange: onDropDownChange - }), - m$1(ColorPicker$1, { - class: { - "color-dropdown__picker": true, - "color-dropdown__picker--hidden": !isPickerVisible - }, - color: props.value, - onChange: props.onChange, - canReset: true, - onReset: props.onReset - }) - ); - } - - const DEFAULT_OVERLAY_KEY = Symbol(); - const overlayNodes = new Map(); - const clickListeners = new WeakMap(); - function getOverlayDOMNode(key) { - if (key == null) { - key = DEFAULT_OVERLAY_KEY; - } - if (!overlayNodes.has(key)) { - const node = document.createElement("div"); - node.classList.add("overlay"); - node.addEventListener( - "click", - (e) => { - if (clickListeners.has(node) && e.currentTarget === node) { - const listener = clickListeners.get(node); - listener(); - } - }, - {passive: true} - ); - overlayNodes.set(key, node); - } - return overlayNodes.get(key); - } - function Overlay(props) { - return getOverlayDOMNode(props.key); - } - function Portal(props, ...content) { - const context = getComponentContext(); - context.onRender(() => { - const node = getOverlayDOMNode(props.key); - if (props.onOuterClick) { - clickListeners.set(node, props.onOuterClick); - } else { - clickListeners.delete(node); - } - render$1(node, content); - }); - context.onRemove(() => { - const container = getOverlayDOMNode(props.key); - render$1(container, null); - }); - return context.leave(); - } - var Overlay$1 = Object.assign(Overlay, {Portal}); - - function MessageBox(props) { - return m$1( - Overlay$1.Portal, - {key: props.portalKey, onOuterClick: props.onCancel}, - m$1( - "div", - {class: "message-box"}, - m$1("label", {class: "message-box__caption"}, props.caption), - m$1( - "div", - {class: "message-box__buttons"}, - m$1( - Button, - { - class: "message-box__button message-box__button-ok", - onclick: props.onOK - }, - "OK" - ), - props.hideCancel - ? null - : m$1( - Button, - { - class: "message-box__button message-box__button-cancel", - onclick: props.onCancel - }, - "Cancel" - ) - ) - ) - ); - } - - function MultiSwitch(props, ...children) { - return m$1( - "span", - {class: ["multi-switch", props.class]}, - m$1("span", { - class: "multi-switch__highlight", - style: { - left: `${(props.options.indexOf(props.value) / props.options.length) * 100}%`, - width: `${(1 / props.options.length) * 100}%` - } - }), - props.options.map((option) => - m$1( - "span", - { - class: { - "multi-switch__option": true, - "multi-switch__option--selected": - option === props.value - }, - onclick: () => - option !== props.value && props.onChange(option) - }, - option - ) - ), - ...children - ); - } - - function ResetButton$1(props, ...content) { - return m$1( - Button, - {class: ["nav-button", props.class], onclick: props.onClick}, - m$1("span", {class: "nav-button__content"}, ...content) - ); - } - - function ResetButton(props, ...content) { - return m$1( - Button, - {class: "reset-button", onclick: props.onClick}, - m$1( - "span", - {class: "reset-button__content"}, - m$1("span", {class: "reset-button__icon"}), - ...content - ) - ); - } - - function VirtualScroll(props) { - if (props.items.length === 0) { - return props.root; - } - const {store} = getComponentContext(); - function renderContent(root, scrollToIndex) { - if (root.clientWidth === 0) { - return; - } - if (store.itemHeight == null) { - const tempItem = { - ...props.items[0], - props: { - ...props.items[0].props, - oncreate: null, - onupdate: null, - onrender: null - } - }; - const tempNode = render$1(root, tempItem).firstElementChild; - store.itemHeight = tempNode.getBoundingClientRect().height; - } - const {itemHeight} = store; - const wrapper = render$1( - root, - m$1("div", { - style: { - flex: "none", - height: `${props.items.length * itemHeight}px`, - overflow: "hidden", - position: "relative" - } - }) - ).firstElementChild; - if (scrollToIndex >= 0) { - root.scrollTop = scrollToIndex * itemHeight; - } - const containerHeight = - document.documentElement.clientHeight - - root.getBoundingClientRect().top; - let focusedIndex = -1; - if (document.activeElement) { - let current = document.activeElement; - while (current && current.parentElement !== wrapper) { - current = current.parentElement; - } - if (current) { - focusedIndex = store.nodesIndices.get(current); - } - } - store.nodesIndices = store.nodesIndices || new WeakMap(); - const saveNodeIndex = (node, index) => - store.nodesIndices.set(node, index); - const items = props.items - .map((item, index) => { - return {item, index}; - }) - .filter(({index}) => { - const eTop = index * itemHeight; - const eBottom = (index + 1) * itemHeight; - const rTop = root.scrollTop; - const rBottom = root.scrollTop + containerHeight; - const isTopBoundVisible = eTop >= rTop && eTop <= rBottom; - const isBottomBoundVisible = - eBottom >= rTop && eBottom <= rBottom; - return ( - isTopBoundVisible || - isBottomBoundVisible || - focusedIndex === index - ); - }) - .map(({item, index}) => - m$1( - "div", - { - key: index, - onrender: (node) => saveNodeIndex(node, index), - style: { - left: "0", - position: "absolute", - top: `${index * itemHeight}px`, - width: "100%" - } - }, - item - ) - ); - render$1(wrapper, items); - } - let rootNode; - let prevScrollTop; - const rootDidMount = props.root.props.oncreate; - const rootDidUpdate = props.root.props.onupdate; - const rootDidRender = props.root.props.onrender; - return { - ...props.root, - props: { - ...props.root.props, - oncreate: rootDidMount, - onupdate: rootDidUpdate, - onrender: (node) => { - rootNode = node; - rootDidRender && rootDidRender(rootNode); - renderContent( - rootNode, - isNaN(props.scrollToIndex) ? -1 : props.scrollToIndex - ); - }, - onscroll: () => { - if (rootNode.scrollTop === prevScrollTop) { - return; - } - prevScrollTop = rootNode.scrollTop; - renderContent(rootNode, -1); - } - }, - children: [] - }; - } - - function Select(props) { - const {state, setState} = useState({ - isExpanded: false, - focusedIndex: null - }); - const values = Object.keys(props.options); - const {store} = getComponentContext(); - const valueNodes = store.valueNodes || (store.valueNodes = new Map()); - const nodesValues = - store.nodesValues || (store.nodesValues = new WeakMap()); - function onRender(node) { - store.rootNode = node; - } - function onOuterClick(e) { - const r = store.rootNode.getBoundingClientRect(); - if ( - e.clientX < r.left || - e.clientX > r.right || - e.clientY < r.top || - e.clientY > r.bottom - ) { - window.removeEventListener("click", onOuterClick); - collapseList(); - } - } - function onTextInput(e) { - const text = e.target.value.toLowerCase().trim(); - expandList(); - values.some((value) => { - if (value.toLowerCase().indexOf(text) === 0) { - scrollToValue(value); - return true; - } - }); - } - function onKeyPress(e) { - const input = e.target; - if (e.key === "Enter") { - const value = input.value; - input.blur(); - collapseList(); - props.onChange(value); - } - } - function scrollToValue(value) { - setState({focusedIndex: values.indexOf(value)}); - } - function onExpandClick() { - if (state.isExpanded) { - collapseList(); - } else { - expandList(); - } - } - function expandList() { - setState({isExpanded: true}); - scrollToValue(props.value); - window.addEventListener("click", onOuterClick, {passive: true}); - } - function collapseList() { - setState({isExpanded: false}); - } - function onSelectOption(e) { - let current = e.target; - while (current && !nodesValues.has(current)) { - current = current.parentElement; - } - if (current) { - const value = nodesValues.get(current); - props.onChange(value); - } - collapseList(); - } - function saveValueNode(value, domNode) { - valueNodes.set(value, domNode); - nodesValues.set(domNode, value); - } - function removeValueNode(value) { - const el = valueNodes.get(value); - valueNodes.delete(value); - nodesValues.delete(el); - } - return m$1( - "span", - { - class: [ - "select", - state.isExpanded && "select--expanded", - props.class - ], - onrender: onRender - }, - m$1( - "span", - {class: "select__line"}, - m$1(TextBox, { - class: "select__textbox", - value: props.value, - oninput: onTextInput, - onkeypress: onKeyPress - }), - m$1( - Button, - {class: "select__expand", onclick: onExpandClick}, - m$1("span", {class: "select__expand__icon"}) - ) - ), - m$1(VirtualScroll, { - root: m$1("span", { - class: { - "select__list": true, - "select__list--expanded": state.isExpanded, - "select__list--short": - Object.keys(props.options).length <= 7 - }, - onclick: onSelectOption - }), - items: Object.entries(props.options).map(([value, content]) => - m$1( - "span", - { - class: "select__option", - data: value, - onrender: (domNode) => - saveValueNode(value, domNode), - onremove: () => removeValueNode(value) - }, - content - ) - ), - scrollToIndex: state.focusedIndex - }) - ); - } - var Select$1 = withState(Select); - - function ShortcutLink(props) { - const shortcut = props.shortcuts[props.commandName]; - const shortcutMessage = props.textTemplate(shortcut); - const cls = mergeClass("shortcut", [ - shortcut ? "shortcut--set" : null, - props.class - ]); - function onClick(e) { - e.preventDefault(); - if (isEdge) { - chrome.tabs.create({ - url: `edge://extensions/shortcuts`, - active: true - }); - return; - } - chrome.tabs.create({ - url: `chrome://extensions/configureCommands#command-${chrome.runtime.id}-${props.commandName}`, - active: true - }); - } - function onRender(node) { - node.textContent = shortcutMessage; - } - return m$1("a", { - class: cls, - href: "#", - onclick: onClick, - oncreate: onRender - }); - } - - function throttle(callback) { - let pending = false; - let frameId = null; - let lastArgs; - const throttled = (...args) => { - lastArgs = args; - if (frameId) { - pending = true; - } else { - callback(...lastArgs); - frameId = requestAnimationFrame(() => { - frameId = null; - if (pending) { - callback(...lastArgs); - pending = false; - } - }); - } - }; - const cancel = () => { - cancelAnimationFrame(frameId); - pending = false; - frameId = null; - }; - return Object.assign(throttled, {cancel}); - } - - function stickToStep(x, step) { - const s = Math.round(x / step) * step; - const exp = Math.floor(Math.log10(step)); - if (exp >= 0) { - const m = 10 ** exp; - return Math.round(s / m) * m; - } - const m = 10 ** -exp; - return Math.round(s * m) / m; - } - function Slider(props) { - const context = getComponentContext(); - const store = context.store; - store.activeProps = props; - function onRootCreate(rootNode) { - rootNode.addEventListener("touchstart", onPointerDown, { - passive: true - }); - } - function saveTrackNode(el) { - store.trackNode = el; - } - function getTrackNode() { - return store.trackNode; - } - function saveThumbNode(el) { - store.thumbNode = el; - } - function getThumbNode() { - return store.thumbNode; - } - function onPointerDown(startEvt) { - if (store.isActive) { - return; - } - const {getClientX, pointerMoveEvent, pointerUpEvent} = (() => { - const isTouchEvent = - typeof TouchEvent !== "undefined" && - startEvt instanceof TouchEvent; - const touchId = isTouchEvent - ? startEvt.changedTouches[0].identifier - : null; - function getTouch(e) { - const find = (touches) => - Array.from(touches).find( - (t) => t.identifier === touchId - ); - return find(e.changedTouches) || find(e.touches); - } - function getClientX(e) { - const {clientX} = isTouchEvent ? getTouch(e) : e; - return clientX; - } - const pointerMoveEvent = isTouchEvent - ? "touchmove" - : "mousemove"; - const pointerUpEvent = isTouchEvent ? "touchend" : "mouseup"; - return {getClientX, pointerMoveEvent, pointerUpEvent}; - })(); - const dx = (() => { - const thumbRect = getThumbNode().getBoundingClientRect(); - const startClientX = getClientX(startEvt); - const isThumbPressed = - startClientX >= thumbRect.left && - startClientX <= thumbRect.right; - return isThumbPressed - ? thumbRect.left + thumbRect.width / 2 - startClientX - : 0; - })(); - function getEventValue(e) { - const {min, max} = store.activeProps; - const clientX = getClientX(e); - const rect = getTrackNode().getBoundingClientRect(); - const scaled = scale( - clientX + dx, - rect.left, - rect.right, - min, - max - ); - const clamped = clamp(scaled, min, max); - return clamped; - } - function onPointerMove(e) { - const value = getEventValue(e); - store.activeValue = value; - context.refresh(); - } - function onPointerUp(e) { - unsubscribe(); - const value = getEventValue(e); - store.isActive = false; - context.refresh(); - store.activeValue = null; - const {onChange, step} = store.activeProps; - onChange(stickToStep(value, step)); - } - function onKeyPress(e) { - if (e.key === "Escape") { - unsubscribe(); - store.isActive = false; - store.activeValue = null; - context.refresh(); - } - } - function subscribe() { - window.addEventListener(pointerMoveEvent, onPointerMove, { - passive: true - }); - window.addEventListener(pointerUpEvent, onPointerUp, { - passive: true - }); - window.addEventListener("keypress", onKeyPress, { - passive: true - }); - } - function unsubscribe() { - window.removeEventListener(pointerMoveEvent, onPointerMove); - window.removeEventListener(pointerUpEvent, onPointerUp); - window.removeEventListener("keypress", onKeyPress); - } - subscribe(); - store.isActive = true; - store.activeValue = getEventValue(startEvt); - context.refresh(); - } - function getValue() { - return store.activeValue == null ? props.value : store.activeValue; - } - const percent = scale(getValue(), props.min, props.max, 0, 100); - const thumbPositionStyleValue = `${percent}%`; - const shouldFlipText = percent > 75; - const formattedValue = props.formatValue( - stickToStep(getValue(), props.step) - ); - function scaleWheelDelta(delta) { - return scale(delta, 0, -1000, 0, props.max - props.min); - } - const refreshOnWheel = throttle(() => { - store.activeValue = stickToStep(store.wheelValue, props.step); - store.wheelTimeoutId = setTimeout(() => { - const {onChange} = store.activeProps; - onChange(store.activeValue); - store.isActive = false; - store.activeValue = null; - store.wheelValue = null; - }, 400); - context.refresh(); - }); - function onWheel(event) { - if (store.wheelValue == null) { - store.wheelValue = getValue(); - } - store.isActive = true; - clearTimeout(store.wheelTimeoutId); - event.preventDefault(); - const accumulatedValue = - store.wheelValue + scaleWheelDelta(event.deltaY); - store.wheelValue = clamp(accumulatedValue, props.min, props.max); - refreshOnWheel(); - } - return m$1( - "span", - { - class: {"slider": true, "slider--active": store.isActive}, - oncreate: onRootCreate, - onmousedown: onPointerDown, - onwheel: onWheel - }, - m$1( - "span", - {class: "slider__track", oncreate: saveTrackNode}, - m$1("span", { - class: "slider__track__fill", - style: {width: thumbPositionStyleValue} - }) - ), - m$1( - "span", - {class: "slider__thumb-wrapper"}, - m$1( - "span", - { - class: "slider__thumb", - oncreate: saveThumbNode, - style: {left: thumbPositionStyleValue} - }, - m$1( - "span", - { - class: { - "slider__thumb__value": true, - "slider__thumb__value--flip": shouldFlipText - } - }, - formattedValue - ) - ) - ), - m$1("span", {class: "slider__value"}, formattedValue) - ); - } - - function Tab({isActive}, ...children) { - const tabCls = { - "tab-panel__tab": true, - "tab-panel__tab--active": isActive - }; - return m$1("div", {class: tabCls}, children); - } - - function TabPanel(props) { - const tabsNames = Object.keys(props.tabs); - function isActiveTab(name, index) { - return name == null ? index === 0 : name === props.activeTab; - } - const buttons = tabsNames.map((name, i) => { - const btnCls = { - "tab-panel__button": true, - "tab-panel__button--active": isActiveTab(name, i) - }; - return m$1( - Button, - {class: btnCls, onclick: () => props.onSwitchTab(name)}, - props.tabLabels[name] - ); - }); - const tabs = tabsNames.map((name, i) => - m$1(Tab, {isActive: isActiveTab(name, i)}, props.tabs[name]) - ); - return m$1( - "div", - {class: "tab-panel"}, - m$1("div", {class: "tab-panel__buttons"}, buttons), - m$1("div", {class: "tab-panel__tabs"}, tabs) - ); - } - - function TextList(props) { - const context = getComponentContext(); - context.store.indices = context.store.indices || new WeakMap(); - function onTextChange(e) { - const index = context.store.indices.get(e.target); - const values = props.values.slice(); - const value = e.target.value.trim(); - if (values.includes(value)) { - return; - } - if (!value) { - values.splice(index, 1); - } else if (index === values.length) { - values.push(value); - } else { - values.splice(index, 1, value); - } - props.onChange(values); - } - function createTextBox(text, index) { - const saveIndex = (node) => context.store.indices.set(node, index); - return m$1(TextBox, { - class: "text-list__textbox", - value: text, - onrender: saveIndex, - placeholder: props.placeholder - }); - } - let shouldFocus = false; - const node = context.node; - const prevProps = context.prev ? context.prev.props : null; - if ( - node && - props.isFocused && - (!prevProps || - !prevProps.isFocused || - prevProps.values.length < props.values.length) - ) { - focusLastNode(); - } - function didMount(node) { - context.store.node = node; - if (props.isFocused) { - focusLastNode(); - } - } - function focusLastNode() { - const node = context.store.node; - shouldFocus = true; - requestAnimationFrame(() => { - const inputs = node.querySelectorAll(".text-list__textbox"); - const last = inputs.item(inputs.length - 1); - last.focus(); - }); - } - return m$1(VirtualScroll, { - root: m$1("div", { - class: ["text-list", props.class], - onchange: onTextChange, - oncreate: didMount - }), - items: props.values - .map(createTextBox) - .concat(createTextBox("", props.values.length)), - scrollToIndex: shouldFocus ? props.values.length : -1 - }); - } - - function parseTime($time) { - const parts = $time.split(":").slice(0, 2); - const lowercased = $time.trim().toLowerCase(); - const isAM = lowercased.endsWith("am") || lowercased.endsWith("a.m."); - const isPM = lowercased.endsWith("pm") || lowercased.endsWith("p.m."); - let hours = parts.length > 0 ? parseInt(parts[0]) : 0; - if (isNaN(hours) || hours > 23) { - hours = 0; - } - if (isAM && hours === 12) { - hours = 0; - } - if (isPM && hours < 12) { - hours += 12; - } - let minutes = parts.length > 1 ? parseInt(parts[1]) : 0; - if (isNaN(minutes) || minutes > 59) { - minutes = 0; - } - return [hours, minutes]; - } - function isInTimeIntervalUTC(time0, time1, timestamp) { - if (time1 < time0) { - return timestamp <= time1 || time0 <= timestamp; - } - return time0 < timestamp && timestamp < time1; - } - function getDuration(time) { - let duration = 0; - if (time.seconds) { - duration += time.seconds * 1000; - } - if (time.minutes) { - duration += time.minutes * 60 * 1000; - } - if (time.hours) { - duration += time.hours * 60 * 60 * 1000; - } - if (time.days) { - duration += time.days * 24 * 60 * 60 * 1000; - } - return duration; - } - function getSunsetSunriseUTCTime(latitude, longitude, date) { - const dec31 = Date.UTC(date.getUTCFullYear(), 0, 0, 0, 0, 0, 0); - const oneDay = getDuration({days: 1}); - const dayOfYear = Math.floor((date.getTime() - dec31) / oneDay); - const zenith = 90.83333333333333; - const D2R = Math.PI / 180; - const R2D = 180 / Math.PI; - const lnHour = longitude / 15; - function getTime(isSunrise) { - const t = dayOfYear + ((isSunrise ? 6 : 18) - lnHour) / 24; - const M = 0.9856 * t - 3.289; - let L = - M + - 1.916 * Math.sin(M * D2R) + - 0.02 * Math.sin(2 * M * D2R) + - 282.634; - if (L > 360) { - L -= 360; - } else if (L < 0) { - L += 360; - } - let RA = R2D * Math.atan(0.91764 * Math.tan(L * D2R)); - if (RA > 360) { - RA -= 360; - } else if (RA < 0) { - RA += 360; - } - const Lquadrant = Math.floor(L / 90) * 90; - const RAquadrant = Math.floor(RA / 90) * 90; - RA += Lquadrant - RAquadrant; - RA /= 15; - const sinDec = 0.39782 * Math.sin(L * D2R); - const cosDec = Math.cos(Math.asin(sinDec)); - const cosH = - (Math.cos(zenith * D2R) - sinDec * Math.sin(latitude * D2R)) / - (cosDec * Math.cos(latitude * D2R)); - if (cosH > 1) { - return { - alwaysDay: false, - alwaysNight: true, - time: 0 - }; - } else if (cosH < -1) { - return { - alwaysDay: true, - alwaysNight: false, - time: 0 - }; - } - const H = - (isSunrise - ? 360 - R2D * Math.acos(cosH) - : R2D * Math.acos(cosH)) / 15; - const T = H + RA - 0.06571 * t - 6.622; - let UT = T - lnHour; - if (UT > 24) { - UT -= 24; - } else if (UT < 0) { - UT += 24; - } - return { - alwaysDay: false, - alwaysNight: false, - time: Math.round(UT * getDuration({hours: 1})) - }; - } - const sunriseTime = getTime(true); - const sunsetTime = getTime(false); - if (sunriseTime.alwaysDay || sunsetTime.alwaysDay) { - return { - alwaysDay: true, - alwaysNight: false, - sunriseTime: 0, - sunsetTime: 0 - }; - } else if (sunriseTime.alwaysNight || sunsetTime.alwaysNight) { - return { - alwaysDay: false, - alwaysNight: true, - sunriseTime: 0, - sunsetTime: 0 - }; - } - return { - alwaysDay: false, - alwaysNight: false, - sunriseTime: sunriseTime.time, - sunsetTime: sunsetTime.time - }; - } - function isNightAtLocation(latitude, longitude, date = new Date()) { - const time = getSunsetSunriseUTCTime(latitude, longitude, date); - if (time.alwaysDay) { - return false; - } else if (time.alwaysNight) { - return true; - } - const sunriseTime = time.sunriseTime; - const sunsetTime = time.sunsetTime; - const currentTime = - date.getUTCHours() * getDuration({hours: 1}) + - date.getUTCMinutes() * getDuration({minutes: 1}) + - date.getUTCSeconds() * getDuration({seconds: 1}) + - date.getUTCMilliseconds(); - return isInTimeIntervalUTC(sunsetTime, sunriseTime, currentTime); - } - - function toLong24HTime($time) { - const [hours, minutes] = parseTime($time); - const hh = `${hours < 10 ? "0" : ""}${hours}`; - const mm = `${minutes < 10 ? "0" : ""}${minutes}`; - return `${hh}:${mm}`; - } - function to24HTime($time) { - const [hours, minutes] = parseTime($time); - const mm = `${minutes < 10 ? "0" : ""}${minutes}`; - return `${hours}:${mm}`; - } - function TimeRangePicker(props) { - function onStartTimeChange($startTime) { - props.onChange([to24HTime($startTime), props.endTime]); - } - function onEndTimeChange($endTime) { - props.onChange([props.startTime, to24HTime($endTime)]); - } - function setStartTime(node) { - node.value = toLong24HTime(props.startTime); - } - function setEndTime(node) { - node.value = toLong24HTime(props.endTime); - } - return m$1( - "span", - {class: "time-range-picker"}, - m$1(TextBox, { - class: "time-range-picker__input time-range-picker__input--start", - type: "time", - placeholder: "18:00", - onrender: setStartTime, - onchange: (e) => onStartTimeChange(e.target.value), - onkeypress: (e) => { - if (e.key === "Enter") { - const input = e.target; - input.blur(); - onStartTimeChange(input.value); - } - } - }), - m$1(TextBox, { - class: "time-range-picker__input time-range-picker__input--end", - type: "time", - placeholder: "09:00", - onrender: setEndTime, - onchange: (e) => onEndTimeChange(e.target.value), - onkeypress: (e) => { - if (e.key === "Enter") { - const input = e.target; - input.blur(); - onEndTimeChange(input.value); - } - } - }) - ); - } - - function Toggle(props) { - const {checked, onChange} = props; - const cls = ["toggle", checked ? "toggle--checked" : null, props.class]; - const clsOn = { - "toggle__btn": true, - "toggle__on": true, - "toggle__btn--active": checked - }; - const clsOff = { - "toggle__btn": true, - "toggle__off": true, - "toggle__btn--active": !checked - }; - return m$1( - "span", - {class: cls}, - m$1( - "span", - { - class: clsOn, - onclick: onChange - ? () => !checked && onChange(true) - : undefined - }, - props.labelOn - ), - m$1( - "span", - { - class: clsOff, - onclick: onChange - ? () => checked && onChange(false) - : undefined - }, - props.labelOff - ) - ); - } - - function Track(props) { - const valueStyle = {width: `${props.value * 100}%`}; - const isClickable = Boolean(props.onChange); - function onMouseDown(e) { - const targetNode = e.currentTarget; - const valueNode = targetNode.firstElementChild; - targetNode.classList.add("track--active"); - function getValue(clientX) { - const rect = targetNode.getBoundingClientRect(); - return (clientX - rect.left) / rect.width; - } - function setWidth(value) { - valueNode.style.width = `${value * 100}%`; - } - function onMouseMove(e) { - const value = getValue(e.clientX); - setWidth(value); - } - function onMouseUp(e) { - const value = getValue(e.clientX); - props.onChange(value); - cleanup(); - } - function onKeyPress(e) { - if (e.key === "Escape") { - setWidth(props.value); - cleanup(); - } - } - function cleanup() { - window.removeEventListener("mousemove", onMouseMove); - window.removeEventListener("mouseup", onMouseUp); - window.removeEventListener("keypress", onKeyPress); - targetNode.classList.remove("track--active"); - } - window.addEventListener("mousemove", onMouseMove, {passive: true}); - window.addEventListener("mouseup", onMouseUp, {passive: true}); - window.addEventListener("keypress", onKeyPress, {passive: true}); - const value = getValue(e.clientX); - setWidth(value); - } - return m$1( - "span", - { - class: { - "track": true, - "track--clickable": Boolean(props.onChange) - }, - onmousedown: isClickable ? onMouseDown : undefined - }, - m$1("span", {class: "track__value", style: valueStyle}), - m$1("label", {class: "track__label"}, props.label) - ); - } - - function getLocalMessage(messageName) { - return chrome.i18n.getMessage(messageName) || messageName; - } - function getUILanguage() { - let code; - if ( - "i18n" in chrome && - "getUILanguage" in chrome.i18n && - typeof chrome.i18n.getUILanguage === "function" - ) { - code = chrome.i18n.getUILanguage(); - } else { - code = navigator.language.split("-")[0]; - } - if (code.endsWith("-mac")) { - return code.substring(0, code.length - 4); - } - return code; - } - - function UpDown(props) { - const buttonDownCls = { - "updown__button": true, - "updown__button--disabled": props.value === props.min - }; - const buttonUpCls = { - "updown__button": true, - "updown__button--disabled": props.value === props.max - }; - function normalize(x) { - const s = Math.round(x / props.step) * props.step; - const exp = Math.floor(Math.log10(props.step)); - if (exp >= 0) { - const m = 10 ** exp; - return Math.round(s / m) * m; - } - const m = 10 ** -exp; - return Math.round(s * m) / m; - } - function clamp(x) { - return Math.max(props.min, Math.min(props.max, x)); - } - function onButtonDownClick() { - props.onChange(clamp(normalize(props.value - props.step))); - } - function onButtonUpClick() { - props.onChange(clamp(normalize(props.value + props.step))); - } - function onTrackValueChange(trackValue) { - props.onChange( - clamp( - normalize(trackValue * (props.max - props.min) + props.min) - ) - ); - } - const trackValue = (props.value - props.min) / (props.max - props.min); - const valueText = - props.value === props.default - ? getLocalMessage("off").toLocaleLowerCase() - : props.value > props.default - ? `+${normalize(props.value - props.default)}` - : `-${normalize(props.default - props.value)}`; - return m$1( - "div", - {class: "updown"}, - m$1( - "div", - {class: "updown__line"}, - m$1( - Button, - {class: buttonDownCls, onclick: onButtonDownClick}, - m$1("span", {class: "updown__icon updown__icon-down"}) - ), - m$1(Track, { - value: trackValue, - label: props.name, - onChange: onTrackValueChange - }), - m$1( - Button, - {class: buttonUpCls, onclick: onButtonUpClick}, - m$1("span", {class: "updown__icon updown__icon-up"}) - ) - ), - m$1("label", {class: "updown__value-text"}, valueText) - ); - } - - function cachedFactory(factory, size) { - const cache = new Map(); - return (key) => { - if (cache.has(key)) { - return cache.get(key); - } - const value = factory(key); - cache.set(key, value); - if (cache.size > size) { - const first = cache.keys().next().value; - cache.delete(first); - } - return value; - }; - } - - function getURLHostOrProtocol($url) { - const url = new URL($url); - if (url.host) { - return url.host; - } else if (url.protocol === "file:") { - return url.pathname; - } - return url.protocol; - } - function isURLInList(url, list) { - for (let i = 0; i < list.length; i++) { - if (isURLMatched(url, list[i])) { - return true; - } - } - return false; - } - function isURLMatched(url, urlTemplate) { - if (isRegExp(urlTemplate)) { - const regexp = createRegExp(urlTemplate); - return regexp ? regexp.test(url) : false; - } - return matchURLPattern(url, urlTemplate); - } - const URL_CACHE_SIZE = 32; - const prepareURL = cachedFactory((url) => { - let parsed; - try { - parsed = new URL(url); - } catch (err) { - return null; - } - const {hostname, pathname, protocol, port} = parsed; - const hostParts = hostname.split(".").reverse(); - const pathParts = pathname.split("/").slice(1); - if (!pathParts[pathParts.length - 1]) { - pathParts.splice(pathParts.length - 1, 1); - } - return { - hostParts, - pathParts, - port, - protocol - }; - }, URL_CACHE_SIZE); - const URL_MATCH_CACHE_SIZE = 32 * 1024; - const preparePattern = cachedFactory((pattern) => { - if (!pattern) { - return null; - } - const exactStart = pattern.startsWith("^"); - const exactEnd = pattern.endsWith("$"); - if (exactStart) { - pattern = pattern.substring(1); - } - if (exactEnd) { - pattern = pattern.substring(0, pattern.length - 1); - } - let protocol = ""; - const protocolIndex = pattern.indexOf("://"); - if (protocolIndex > 0) { - protocol = pattern.substring(0, protocolIndex + 1); - pattern = pattern.substring(protocolIndex + 3); - } - const slashIndex = pattern.indexOf("/"); - const host = - slashIndex < 0 ? pattern : pattern.substring(0, slashIndex); - let hostName = host; - let isIPv6 = false; - let ipV6End = -1; - if (host.startsWith("[")) { - ipV6End = host.indexOf("]"); - if (ipV6End > 0) { - isIPv6 = true; - } - } - let port = "*"; - const portIndex = host.lastIndexOf(":"); - if (portIndex >= 0 && (!isIPv6 || ipV6End < portIndex)) { - hostName = host.substring(0, portIndex); - port = host.substring(portIndex + 1); - } - if (isIPv6) { - try { - const ipV6URL = new URL(`http://${hostName}`); - hostName = ipV6URL.hostname; - } catch (err) {} - } - const hostParts = hostName.split(".").reverse(); - const path = slashIndex < 0 ? "" : pattern.substring(slashIndex + 1); - const pathParts = path.split("/"); - if (!pathParts[pathParts.length - 1]) { - pathParts.splice(pathParts.length - 1, 1); - } - return { - hostParts, - pathParts, - port, - exactStart, - exactEnd, - protocol - }; - }, URL_MATCH_CACHE_SIZE); - function matchURLPattern(url, pattern) { - const u = prepareURL(url); - const p = preparePattern(pattern); - if ( - !(u && p) || - p.hostParts.length > u.hostParts.length || - (p.exactStart && p.hostParts.length !== u.hostParts.length) || - (p.exactEnd && p.pathParts.length !== u.pathParts.length) || - (p.port !== "*" && p.port !== u.port) || - (p.protocol && p.protocol !== u.protocol) - ) { - return false; - } - for (let i = 0; i < p.hostParts.length; i++) { - const pHostPart = p.hostParts[i]; - const uHostPart = u.hostParts[i]; - if (pHostPart !== "*" && pHostPart !== uHostPart) { - return false; - } - } - if ( - p.hostParts.length >= 2 && - p.hostParts.at(-1) !== "*" && - (p.hostParts.length < u.hostParts.length - 1 || - (p.hostParts.length === u.hostParts.length - 1 && - u.hostParts.at(-1) !== "www")) - ) { - return false; - } - if (p.pathParts.length === 0) { - return true; - } - if (p.pathParts.length > u.pathParts.length) { - return false; - } - for (let i = 0; i < p.pathParts.length; i++) { - const pPathPart = p.pathParts[i]; - const uPathPart = u.pathParts[i]; - if (pPathPart !== "*" && pPathPart !== uPathPart) { - return false; - } - } - return true; - } - function isRegExp(pattern) { - return ( - pattern.startsWith("/") && - pattern.endsWith("/") && - pattern.length > 2 - ); - } - const REGEXP_CACHE_SIZE = 1024; - const createRegExp = cachedFactory((pattern) => { - if (pattern.startsWith("/")) { - pattern = pattern.substring(1); - } - if (pattern.endsWith("/")) { - pattern = pattern.substring(0, pattern.length - 1); - } - try { - return new RegExp(pattern); - } catch (err) { - return null; - } - }, REGEXP_CACHE_SIZE); - function isPDF(url) { - try { - const {hostname, pathname} = new URL(url); - if (pathname.includes(".pdf")) { - if ( - (hostname.match(/(wikipedia|wikimedia)\.org$/i) && - pathname.match(/^\/.*\/[a-z]+\:[^\:\/]+\.pdf/i)) || - (hostname.match(/timetravel\.mementoweb\.org$/i) && - pathname.match(/^\/reconstruct/i) && - pathname.match(/\.pdf$/i)) || - (hostname.match(/dropbox\.com$/i) && - pathname.match(/^\/s\//i) && - pathname.match(/\.pdf$/i)) - ) { - return false; - } - if (pathname.endsWith(".pdf")) { - for (let i = pathname.length; i >= 0; i--) { - if (pathname[i] === "=") { - return false; - } else if (pathname[i] === "/") { - return true; - } - } - } else { - return false; - } - } - } catch (e) {} - return false; - } - function isURLEnabled( - url, - userSettings, - {isProtected, isInDarkList, isDarkThemeDetected}, - isAllowedFileSchemeAccess = true - ) { - if (isLocalFile(url) && !isAllowedFileSchemeAccess) { - return false; - } - if (isProtected && !userSettings.enableForProtectedPages) { - return false; - } - if (isPDF(url)) { - return userSettings.enableForPDF; - } - const isURLInDisabledList = isURLInList(url, userSettings.disabledFor); - const isURLInEnabledList = isURLInList(url, userSettings.enabledFor); - if (!userSettings.enabledByDefault) { - return isURLInEnabledList; - } - if (isURLInEnabledList) { - return true; - } - if ( - isInDarkList || - (userSettings.detectDarkTheme && isDarkThemeDetected) - ) { - return false; - } - return !isURLInDisabledList; - } - function isLocalFile(url) { - return Boolean(url) && url.startsWith("file:///"); - } - - function CustomSettingsToggle({data, actions}) { - const tab = data.activeTab; - const host = getURLHostOrProtocol(tab.url); - const isCustom = data.settings.customThemes.some(({url}) => - isURLInList(tab.url, url) - ); - const urlText = host - .split(".") - .reduce( - (elements, part, i) => - elements.concat( - m$1("wbr", null), - `${i > 0 ? "." : ""}${part}` - ), - [] - ); - return m$1( - Button, - { - class: { - "custom-settings-toggle": true, - "custom-settings-toggle--checked": isCustom, - "custom-settings-toggle--disabled": tab.isProtected - }, - onclick: (e) => { - if (isCustom) { - const filtered = data.settings.customThemes.filter( - ({url}) => !isURLInList(tab.url, url) - ); - actions.changeSettings({customThemes: filtered}); - } else { - const extended = data.settings.customThemes.concat({ - url: [host], - theme: {...data.settings.theme} - }); - actions.changeSettings({customThemes: extended}); - e.currentTarget.classList.add( - "custom-settings-toggle--checked" - ); - } - } - }, - m$1( - "span", - {class: "custom-settings-toggle__wrapper"}, - getLocalMessage("only_for"), - " ", - m$1("span", {class: "custom-settings-toggle__url"}, urlText) - ) - ); - } - - function ModeToggle({mode, onChange}) { - return m$1( - "div", - {class: "mode-toggle"}, - m$1( - "div", - {class: "mode-toggle__line"}, - m$1( - Button, - { - class: {"mode-toggle__button--active": mode === 1}, - onclick: () => onChange(1) - }, - m$1("span", {class: "icon icon--dark-mode"}) - ), - m$1(Toggle, { - checked: mode === 1, - labelOn: getLocalMessage("dark"), - labelOff: getLocalMessage("light"), - onChange: (checked) => onChange(checked ? 1 : 0) - }), - m$1( - Button, - { - class: {"mode-toggle__button--active": mode === 0}, - onclick: () => onChange(0) - }, - m$1("span", {class: "icon icon--light-mode"}) - ) - ), - m$1("label", {class: "mode-toggle__label"}, getLocalMessage("mode")) - ); - } - - function FilterSettings({data, actions}, ...children) { - const custom = data.settings.customThemes.find(({url}) => - isURLInList(data.activeTab.url, url) - ); - const theme = custom ? custom.theme : data.settings.theme; - function setConfig(config) { - if (custom) { - custom.theme = {...custom.theme, ...config}; - actions.changeSettings({ - customThemes: data.settings.customThemes - }); - } else { - actions.setTheme(config); - } - } - const brightness = m$1(UpDown, { - value: theme.brightness, - min: 50, - max: 150, - step: 5, - default: 100, - name: getLocalMessage("brightness"), - onChange: (value) => setConfig({brightness: value}) - }); - const contrast = m$1(UpDown, { - value: theme.contrast, - min: 50, - max: 150, - step: 5, - default: 100, - name: getLocalMessage("contrast"), - onChange: (value) => setConfig({contrast: value}) - }); - const grayscale = m$1(UpDown, { - value: theme.grayscale, - min: 0, - max: 100, - step: 5, - default: 0, - name: getLocalMessage("grayscale"), - onChange: (value) => setConfig({grayscale: value}) - }); - const sepia = m$1(UpDown, { - value: theme.sepia, - min: 0, - max: 100, - step: 5, - default: 0, - name: getLocalMessage("sepia"), - onChange: (value) => setConfig({sepia: value}) - }); - return m$1( - "section", - {class: "filter-settings"}, - m$1(ModeToggle, { - mode: theme.mode, - onChange: (mode) => setConfig({mode}) - }), - brightness, - contrast, - sepia, - grayscale, - m$1(CustomSettingsToggle, {data: data, actions: actions}), - m$1("div", {class: "filter-settings__content"}, ...children) - ); - } - - function KeyboardIcon() { - return m$1( - "svg", - {viewBox: "0 0 16 16"}, - m$1("rect", { - "fill": "none", - "stroke": "var(--icon-color, currentColor)", - "stroke-width": "1", - "x": "2", - "y": "4", - "width": "12", - "height": "8" - }), - m$1( - "g", - { - "stroke": "var(--icon-color, currentColor)", - "stroke-width": "1" - }, - m$1("line", {x1: "4", y1: "10", x2: "12", y2: "10"}), - m$1("line", {x1: "4", y1: "6", x2: "6", y2: "6"}), - m$1("line", {x1: "7", y1: "6", x2: "9", y2: "6"}), - m$1("line", {x1: "10", y1: "6", x2: "12", y2: "6"}), - m$1("line", {x1: "5.5", y1: "8", x2: "7.5", y2: "8"}), - m$1("line", {x1: "8.5", y1: "8", x2: "10.5", y2: "8"}) - ) - ); - } - - function SettingsIcon(props) { - return m$1( - "svg", - {viewBox: "0 0 16 16", class: props.class}, - m$1( - "defs", - null, - m$1("path", {id: "cog", d: "M-1.25,-6.5 h2.5 l1,3 h-4.5 z"}) - ), - m$1( - "g", - { - transform: "translate(8 8)", - fill: props.color ?? "currentColor" - }, - m$1("path", { - d: "M0,-5 a5,5 0 0 1 0,10 a5,5 0 0 1 0,-10 z M0,-3 a3,3 0 0 0 0,6 a3,3 0 0 0 0,-6 z" - }), - m$1("use", {href: "#cog"}), - m$1("use", {href: "#cog", transform: "rotate(60)"}), - m$1("use", {href: "#cog", transform: "rotate(120)"}), - m$1("use", {href: "#cog", transform: "rotate(180)"}), - m$1("use", {href: "#cog", transform: "rotate(240)"}), - m$1("use", {href: "#cog", transform: "rotate(300)"}) - ) - ); - } - - function SunMoonIcon({date, latitude, longitude}) { - if (latitude == null || longitude == null) { - return m$1( - "svg", - {viewBox: "0 0 16 16"}, - m$1( - "text", - { - "fill": "white", - "font-size": "16", - "font-weight": "bold", - "text-anchor": "middle", - "x": "8", - "y": "14" - }, - "?" - ) - ); - } - if (isNightAtLocation(latitude, longitude, date)) { - return m$1( - "svg", - {viewBox: "0 0 16 16"}, - m$1("path", { - fill: "white", - stroke: "none", - d: "M 6 3 Q 10 8 6 13 Q 12 13 12 8 Q 12 3 6 3" - }) - ); - } - return m$1( - "svg", - {viewBox: "0 0 16 16"}, - m$1("circle", { - fill: "white", - stroke: "none", - cx: "8", - cy: "8", - r: "3" - }), - m$1( - "g", - { - "fill": "none", - "stroke": "white", - "stroke-linecap": "round", - "stroke-width": "1.5" - }, - ...Array.from({length: 8}).map((_, i) => { - const cx = 8; - const cy = 8; - const angle = (i * Math.PI) / 4 + Math.PI / 8; - const pt = [5, 6].map((l) => [ - cx + l * Math.cos(angle), - cy + l * Math.sin(angle) - ]); - return m$1("line", { - x1: pt[0][0], - y1: pt[0][1], - x2: pt[1][0], - y2: pt[1][1] - }); - }) - ) - ); - } - - function SystemIcon() { - return m$1( - "svg", - {viewBox: "0 0 16 16"}, - m$1("path", { - fill: "white", - stroke: "none", - d: "M3,3 h10 v7 h-3 v2 h1 v1 h-6 v-1 h1 v-2 h-3 z M4.5,4.5 v4 h7 v-4 z" - }) - ); - } - - function WatchIcon(props) { - const {hours, minutes, color = "white"} = props; - const cx = 8; - const cy = 8.5; - const lenHour = 3; - const lenMinute = 4; - const clockR = 5.5; - const btnSize = 2; - const btnPad = 1.5; - const ah = - (((hours > 11 ? hours - 12 : hours) + minutes / 60) / 12) * - Math.PI * - 2; - const am = (minutes / 60) * Math.PI * 2; - const hx = cx + lenHour * Math.sin(ah); - const hy = cy - lenHour * Math.cos(ah); - const mx = cx + lenMinute * Math.sin(am); - const my = cy - lenMinute * Math.cos(am); - return m$1( - "svg", - {viewBox: "0 0 16 16"}, - m$1("circle", { - "fill": "none", - "stroke": color, - "stroke-width": "1.5", - "cx": cx, - "cy": cy, - "r": clockR - }), - m$1("line", { - "stroke": color, - "stroke-width": "1.5", - "x1": cx, - "y1": cy, - "x2": hx, - "y2": hy - }), - m$1("line", { - "stroke": color, - "stroke-width": "1.5", - "opacity": "0.67", - "x1": cx, - "y1": cy, - "x2": mx, - "y2": my - }), - [30, -30].map((angle) => { - return m$1("path", { - "fill": color, - "transform": `rotate(${angle})`, - "transform-origin": `${cx} ${cy}`, - "d": `M${cx - btnSize},${cy - clockR - btnPad} a${btnSize},${btnSize} 0 0 1 ${2 * btnSize},0 z` - }); - }) - ); - } - - function CheckmarkIcon({isChecked}) { - return m$1( - "svg", - {viewBox: "0 0 8 8"}, - m$1("path", { - d: isChecked - ? "M1,4 l2,2 l4,-4 v1 l-4,4 l-2,-2 Z" - : "M2,2 l4,4 v1 l-4,-4 Z M2,6 l4,-4 v1 l-4,4 Z" - }) - ); - } - - function getSiteToggleData(props) { - const {data, actions} = props; - const tab = data.activeTab; - function onSiteToggleClick() { - if (pdf) { - actions.changeSettings({ - enableForPDF: !data.settings.enableForPDF - }); - } else { - actions.toggleActiveTab(); - } - } - const pdf = isPDF(tab.url); - const toggleHasEffect = - data.settings.enableForProtectedPages || - (!tab.isProtected && !pdf) || - tab.isInjected; - const isSiteEnabled = - isURLEnabled( - tab.url, - data.settings, - tab, - data.isAllowedFileSchemeAccess - ) && Boolean(tab.isInjected); - const host = getURLHostOrProtocol(tab.url); - const displayHost = host.startsWith("www.") ? host.substring(4) : host; - const urlText = pdf - ? "PDF" - : displayHost - .split(".") - .reduce( - (elements, part, i) => - elements.concat( - i > 0 ? m$1("wbr", null) : null, - `${i > 0 ? "." : ""}${part}` - ), - [] - ); - return {urlText, onSiteToggleClick, toggleHasEffect, isSiteEnabled}; - } - function SiteToggleButton(props) { - const {urlText, onSiteToggleClick, toggleHasEffect, isSiteEnabled} = - getSiteToggleData(props); - return m$1( - Button, - { - class: { - "site-toggle": true, - "site-toggle--active": isSiteEnabled, - "site-toggle--disabled": !toggleHasEffect - }, - onclick: onSiteToggleClick - }, - m$1( - "span", - {class: "site-toggle__mark"}, - m$1(CheckmarkIcon, {isChecked: isSiteEnabled}) - ), - " ", - m$1("span", {class: "site-toggle__url"}, urlText) - ); - } - - const HOMEPAGE_URL = "https://darkreader.org"; - const BLOG_URL = "https://darkreader.org/blog/"; - const DONATE_URL = "https://darkreader.org/support-us/"; - const MOBILE_URL = "https://darkreader.org/tips/mobile/"; - const HELP_URL = "https://darkreader.org/help"; - const helpLocales = [ - "be", - "cs", - "de", - "en", - "es", - "fr", - "it", - "ja", - "nl", - "pt", - "ru", - "sr", - "tr", - "zh-CN", - "zh-TW" - ]; - function getHelpURL() { - const locale = getUILanguage(); - const matchLocale = - helpLocales.find((hl) => hl === locale) || - helpLocales.find((hl) => locale.startsWith(hl)) || - "en"; - return `${HELP_URL}/${matchLocale}/`; - } - - function MoreSiteSettings({data, actions, isExpanded, onClose}) { - function toggleEnabledByDefault() { - actions.changeSettings({ - enabledByDefault: !data.settings.enabledByDefault - }); - } - function toggleDetectDarkTheme() { - actions.changeSettings({ - detectDarkTheme: !data.settings.detectDarkTheme - }); - } - return m$1( - "div", - { - class: { - "header__more-site-settings": true, - "header__more-settings": true, - "header__more-settings--expanded": isExpanded - } - }, - m$1( - "div", - {class: "header__more-settings__top"}, - m$1( - "span", - {class: "header__more-settings__top__text"}, - getLocalMessage("site_toggle") - ), - m$1( - "span", - { - class: "header__more-settings__top__close", - role: "button", - onclick: onClose - }, - "\u2715" - ) - ), - m$1( - "div", - {class: "header__more-settings__content"}, - m$1( - "div", - { - class: [ - "header__more-settings__line", - "header__more-settings__enabled-by-default" - ] - }, - m$1(CheckBox, { - class: "header__more-settings__enabled-by-default__checkbox", - checked: data.settings.enabledByDefault, - onchange: toggleEnabledByDefault - }), - m$1( - Button, - { - class: { - "header__more-settings__enabled-by-default__button": true, - "header__more-settings__enabled-by-default__button--active": - data.settings.enabledByDefault - }, - onclick: toggleEnabledByDefault - }, - getLocalMessage("enabled_by_default") - ) - ), - m$1( - "p", - {class: "header__more-settings__description"}, - getLocalMessage("enable_for_all_sites_by_default") - ), - m$1( - "div", - { - class: [ - "header__more-settings__line", - "header__more-settings__detect-dark-theme" - ] - }, - m$1(CheckBox, { - class: "header__more-settings__detect-dark-theme__checkbox", - checked: data.settings.detectDarkTheme, - onchange: toggleDetectDarkTheme - }), - m$1( - Button, - { - class: { - "header__more-settings__detect-dark-theme__button": true, - "header__more-settings__detect-dark-theme__button--active": - data.settings.detectDarkTheme - }, - onclick: toggleDetectDarkTheme - }, - getLocalMessage("detect_dark_theme") - ) - ), - m$1( - "p", - {class: "header__more-settings__description"}, - getLocalMessage("detect_website_dark_theme") - ), - m$1( - "span", - { - class: { - "header__more-settings__shortcut-wrapper": true, - "header__more-settings__shortcut-wrapper--set": - data.shortcuts["toggle"] - } - }, - m$1(ShortcutLink, { - class: { - "header__more-settings__shortcut": true, - "header__more-settings__shortcut--set": - data.shortcuts["toggle"] - }, - commandName: "addSite", - shortcuts: data.shortcuts, - textTemplate: (hotkey) => - hotkey - ? hotkey - : getLocalMessage("click_to_set_shortcut"), - onSetShortcut: (shortcut) => - actions.setShortcut("addSite", shortcut) - }), - m$1(KeyboardIcon, null) - ), - m$1( - "p", - {class: "header__more-settings__description"}, - getLocalMessage("website_toggle_shortcut") - ), - m$1( - "div", - {class: "header__more-settings__donate"}, - m$1( - "a", - { - class: "donate-link", - href: DONATE_URL, - target: "_blank", - rel: "noopener noreferrer" - }, - m$1( - "span", - {class: "donate-link__text"}, - getLocalMessage("pay_for_using") - ) - ), - m$1( - "p", - {class: "header__more-settings__description"}, - getLocalMessage("support_out_work") - ) - ) - ) - ); - } - - var AutomationMode; - (function (AutomationMode) { - AutomationMode["NONE"] = ""; - AutomationMode["TIME"] = "time"; - AutomationMode["SYSTEM"] = "system"; - AutomationMode["LOCATION"] = "location"; - })(AutomationMode || (AutomationMode = {})); - - function MoreToggleSettings({data, actions, isExpanded, onClose}) { - const isSystemAutomation = - data.settings.automation.mode === AutomationMode.SYSTEM; - const locationSettings = data.settings.location; - const values = { - latitude: { - min: -90, - max: 90 - }, - longitude: { - min: -180, - max: 180 - } - }; - function getLocationString(location) { - if (location == null) { - return ""; - } - return `${location}°`; - } - function locationChanged(inputElement, newValue, type) { - if (newValue.trim() === "") { - inputElement.value = ""; - actions.changeSettings({ - location: { - ...locationSettings, - [type]: null - } - }); - return; - } - const min = values[type].min; - const max = values[type].max; - newValue = newValue.replace(",", ".").replace("°", ""); - let num = Number(newValue); - if (isNaN(num)) { - num = 0; - } else if (num > max) { - num = max; - } else if (num < min) { - num = min; - } - inputElement.value = getLocationString(num); - actions.changeSettings({ - location: { - ...locationSettings, - [type]: num - } - }); - } - function changeAutomationMode(mode) { - actions.changeSettings({ - automation: { - ...data.settings.automation, - ...{mode, enabled: Boolean(mode)} - } - }); - } - return m$1( - "div", - { - class: { - "header__more-toggle-settings": true, - "header__more-settings": true, - "header__more-settings--expanded": isExpanded - } - }, - m$1( - "div", - {class: "header__more-settings__top"}, - m$1( - "span", - {class: "header__more-settings__top__text"}, - getLocalMessage("automation") - ), - m$1( - "span", - { - class: "header__more-settings__top__close", - role: "button", - onclick: onClose - }, - "\u2715" - ) - ), - m$1( - "div", - {class: "header__more-settings__content"}, - m$1( - "div", - {class: "header__more-settings__line"}, - m$1(CheckBox, { - checked: - data.settings.automation.mode === - AutomationMode.TIME, - onchange: (e) => - changeAutomationMode( - e.target.checked - ? AutomationMode.TIME - : AutomationMode.NONE - ) - }), - m$1(TimeRangePicker, { - startTime: data.settings.time.activation, - endTime: data.settings.time.deactivation, - onChange: ([start, end]) => - actions.changeSettings({ - time: {activation: start, deactivation: end} - }) - }) - ), - m$1( - "p", - {class: "header__more-settings__description"}, - getLocalMessage("set_active_hours") - ), - m$1( - "div", - { - class: "header__more-settings__line header__more-settings__location" - }, - m$1(CheckBox, { - checked: - data.settings.automation.mode === - AutomationMode.LOCATION, - onchange: (e) => - changeAutomationMode( - e.target.checked - ? AutomationMode.LOCATION - : AutomationMode.NONE - ) - }), - m$1(TextBox, { - class: "header__more-settings__location__latitude", - placeholder: getLocalMessage("latitude"), - onchange: (e) => - locationChanged( - e.target, - e.target.value, - "latitude" - ), - oncreate: (node) => - (node.value = getLocationString( - locationSettings.latitude - )), - onkeypress: (e) => { - if (e.key === "Enter") { - e.target.blur(); - } - } - }), - m$1(TextBox, { - class: "header__more-settings__location__longitude", - placeholder: getLocalMessage("longitude"), - onchange: (e) => - locationChanged( - e.target, - e.target.value, - "longitude" - ), - oncreate: (node) => - (node.value = getLocationString( - locationSettings.longitude - )), - onkeypress: (e) => { - if (e.key === "Enter") { - e.target.blur(); - } - } - }) - ), - m$1( - "p", - {class: "header__more-settings__location-description"}, - getLocalMessage("set_location") - ), - m$1( - "div", - { - class: [ - "header__more-settings__line", - "header__more-settings__system-dark-mode" - ] - }, - m$1(CheckBox, { - class: "header__more-settings__system-dark-mode__checkbox", - checked: isSystemAutomation, - onchange: (e) => - changeAutomationMode( - e.target.checked - ? AutomationMode.SYSTEM - : AutomationMode.NONE - ) - }), - m$1( - Button, - { - class: { - "header__more-settings__system-dark-mode__button": true, - "header__more-settings__system-dark-mode__button--active": - isSystemAutomation - }, - onclick: () => - changeAutomationMode( - isSystemAutomation - ? AutomationMode.NONE - : AutomationMode.SYSTEM - ) - }, - getLocalMessage("system_dark_mode") - ) - ), - m$1( - "p", - {class: "header__more-settings__description"}, - getLocalMessage("system_dark_mode_description") - ), - !isMatchMediaChangeEventListenerBuggy - ? null - : m$1( - "p", - {class: "header__more-settings__warning"}, - getLocalMessage("system_dark_mode_chromium_warning") - ), - m$1( - "span", - { - class: { - "header__more-settings__shortcut-wrapper": true, - "header__more-settings__shortcut-wrapper--set": - data.shortcuts["toggle"] - } - }, - m$1(ShortcutLink, { - class: { - "header__more-settings__shortcut": true, - "header__more-settings__shortcut--set": - data.shortcuts["toggle"] - }, - commandName: "toggle", - shortcuts: data.shortcuts, - textTemplate: (hotkey) => - hotkey - ? hotkey - : getLocalMessage("click_to_set_shortcut"), - onSetShortcut: (shortcut) => - actions.setShortcut("toggle", shortcut) - }), - m$1(KeyboardIcon, null) - ), - m$1( - "p", - {class: "header__more-settings__description"}, - getLocalMessage("extension_toggle_shortcut") - ), - m$1( - "div", - {class: "header__more-settings__donate"}, - m$1( - "a", - { - class: "donate-link", - href: DONATE_URL, - target: "_blank", - rel: "noopener noreferrer" - }, - m$1( - "span", - {class: "donate-link__text"}, - getLocalMessage("pay_for_using") - ) - ), - m$1( - "p", - {class: "header__more-settings__description"}, - getLocalMessage("support_out_work") - ) - ) - ) - ); - } - - function getAutomationMessage(props) { - const {data} = props; - const isAutomation = data.settings.automation.enabled; - const isTimeAutomation = - data.settings.automation.mode === AutomationMode.TIME; - const isLocationAutomation = - data.settings.automation.mode === AutomationMode.LOCATION; - return isAutomation - ? isTimeAutomation - ? data.isEnabled - ? getLocalMessage("auto_night_time") - : getLocalMessage("auto_day_time") - : isLocationAutomation - ? data.isEnabled - ? getLocalMessage("auto_night_at_location") - : getLocalMessage("auto_day_at_location") - : data.isEnabled - ? getLocalMessage("auto_system_is_dark") - : getLocalMessage("auto_system_is_light") - : getLocalMessage("configure_automation"); - } - function toggleExtension(props, enabled) { - const {data, actions} = props; - actions.changeSettings({ - enabled, - automation: {...data.settings.automation, ...{enabled: false}} - }); - } - function getSiteToggleMessage(props) { - const {data} = props; - const tab = data.activeTab; - const isFile = isLocalFile(tab.url); - const isProtected = !isFile && tab.isProtected; - return isProtected - ? getLocalMessage("page_protected") - : isFile && !data.isAllowedFileSchemeAccess - ? getLocalMessage("local_files_forbidden") - : tab.isInDarkList - ? getLocalMessage("page_in_dark_list") - : tab.isDarkThemeDetected - ? getLocalMessage("dark_theme_detected") - : getLocalMessage("configure_site_toggle"); - } - function Header(props) { - const { - data, - actions, - onMoreSiteSettingsClick, - onMoreToggleSettingsClick - } = props; - function toggleApp(enabled) { - toggleExtension(props, enabled); - } - const tab = data.activeTab; - const isFile = isLocalFile(tab.url); - const isAutomation = data.settings.automation.enabled; - const isTimeAutomation = - data.settings.automation.mode === AutomationMode.TIME; - const isLocationAutomation = - data.settings.automation.mode === AutomationMode.LOCATION; - const now = new Date(); - const automationMessage = getAutomationMessage({data}); - const isProtected = !isFile && tab.isProtected; - const isProtectedFile = isFile && !data.isAllowedFileSchemeAccess; - const isSiteEnabled = !( - isProtected || - isProtectedFile || - tab.isInDarkList - ); - const siteToggleMessage = getSiteToggleMessage(props); - return m$1( - "header", - {class: "header"}, - m$1( - "a", - { - class: "header__logo", - href: HOMEPAGE_URL, - target: "_blank", - rel: "noopener noreferrer" - }, - "Dark Reader" - ), - m$1( - "div", - {class: "header__control header__site-toggle"}, - m$1(SiteToggleButton, {data: data, actions: actions}), - m$1( - "span", - { - class: { - "header__more-settings-button": true, - "header__more-settings-button--off": !isSiteEnabled - }, - onclick: onMoreSiteSettingsClick - }, - m$1(SettingsIcon, { - class: "header__more-settings-button__icon" - }), - siteToggleMessage - ) - ), - m$1( - "div", - {class: "header__control header__app-toggle"}, - m$1(Toggle, { - checked: data.isEnabled, - labelOn: getLocalMessage("on"), - labelOff: getLocalMessage("off"), - onChange: toggleApp - }), - m$1( - "span", - { - class: { - "header__more-settings-button": true, - "header__more-settings-button--off": !data.isEnabled - }, - onclick: onMoreToggleSettingsClick - }, - m$1(SettingsIcon, { - class: "header__more-settings-button__icon" - }), - automationMessage - ), - m$1( - "span", - { - class: { - "header__app-toggle__time": true, - "header__app-toggle__time--active": isAutomation - } - }, - isTimeAutomation - ? m$1(WatchIcon, { - hours: now.getHours(), - minutes: now.getMinutes() - }) - : isLocationAutomation - ? m$1(SunMoonIcon, { - date: now, - latitude: data.settings.location.latitude, - longitude: data.settings.location.longitude - }) - : m$1(SystemIcon, null) - ) - ) - ); - } - - function Loader({complete = false}) { - const context = getComponentContext(); - const {state, setState} = useState({ - finished: false, - errorOccured: false - }); - if (!state.errorOccured && !complete) { - context.store.loaderTimeoutID = setTimeout(() => { - setState({errorOccured: true}); - context.refresh(); - }, 3000); - } - if (complete) { - clearTimeout(context.store.loaderTimeoutID); - } - const labelMessage = state.errorOccured - ? "A unknown error has occured, the UI couldn't be loaded" - : getLocalMessage("loading_please_wait"); - return m$1( - "div", - { - class: { - "loader": true, - "loader--complete": complete, - "loader--transition-end": state.finished - }, - ontransitionend: () => setState({finished: true}) - }, - m$1( - "label", - { - class: { - loader__message: true, - loader__error: state.errorOccured - } - }, - labelMessage - ) - ); - } - var Loader$1 = withState(Loader); - - function AppSwitch(props) { - const isOn = - props.data.settings.enabled === true && - !props.data.settings.automation.enabled; - const isOff = - props.data.settings.enabled === false && - !props.data.settings.automation.enabled; - const isAutomation = props.data.settings.automation.enabled; - const isTimeAutomation = - props.data.settings.automation.mode === AutomationMode.TIME; - const isLocationAutomation = - props.data.settings.automation.mode === AutomationMode.LOCATION; - const now = new Date(); - const values = [getLocalMessage("on"), "Auto", getLocalMessage("off")]; - const value = isOn ? values[0] : isOff ? values[2] : values[1]; - function onSwitchChange(v) { - const index = values.indexOf(v); - if (index === 0) { - props.actions.changeSettings({ - enabled: true, - automation: { - ...props.data.settings.automation, - ...{enabled: false} - } - }); - } else if (index === 2) { - props.actions.changeSettings({ - enabled: false, - automation: { - ...props.data.settings.automation, - ...{enabled: false} - } - }); - } else if (index === 1) { - props.actions.changeSettings({ - automation: { - ...props.data.settings.automation, - ...{mode: AutomationMode.SYSTEM, enabled: true} - } - }); - } - } - const descriptionText = isOn - ? "Extension is enabled" - : isOff - ? "Extension is disabled" - : isTimeAutomation - ? "Switches according to specified time" - : isLocationAutomation - ? "Switched according to location" - : "Switches according to system dark mode"; - const description = m$1( - "span", - { - class: { - "app-switch__description": true, - "app-switch__description--on": props.data.isEnabled, - "app-switch__description--off": !props.data.isEnabled - } - }, - descriptionText - ); - return m$1( - ControlGroup$1, - {class: "app-switch"}, - m$1( - ControlGroup$1.Control, - null, - m$1( - MultiSwitch, - { - class: "app-switch__control", - options: values, - value: value, - onChange: onSwitchChange - }, - m$1( - "span", - { - class: { - "app-switch__time": true, - "app-switch__time--active": isAutomation - } - }, - isTimeAutomation - ? m$1(WatchIcon, { - hours: now.getHours(), - minutes: now.getMinutes() - }) - : isLocationAutomation - ? m$1(SunMoonIcon, { - date: now, - latitude: - props.data.settings.location.latitude, - longitude: - props.data.settings.location.longitude - }) - : m$1(SystemIcon, null) - ) - ) - ), - m$1(ControlGroup$1.Description, null, description) - ); - } - - function HelpGroup() { - return m$1( - ControlGroup$1, - null, - m$1( - ControlGroup$1.Control, - null, - m$1( - "a", - { - class: "m-help-button", - href: `${HELP_URL}/v5/`, - target: "_blank", - rel: "noopener noreferrer" - }, - m$1( - "span", - {class: "m-help-button__text"}, - getLocalMessage("help") - ) - ) - ) - ); - } - - function SiteToggleGroup(props) { - const tab = props.data.activeTab; - const isPageEnabled = isURLEnabled( - tab.url, - props.data.settings, - tab, - props.data.isAllowedFileSchemeAccess - ); - const isFile = isLocalFile(tab.url); - const {isDarkThemeDetected, isProtected, isInDarkList} = tab; - let descriptionText = ""; - if (isFile && !props.data.isAllowedFileSchemeAccess) { - descriptionText = getLocalMessage("local_files_forbidden"); - } else if (isPDF(tab.url)) { - descriptionText = isPageEnabled - ? "Enabled for PDF files" - : "Disabled for PDF files"; - } else if (isDarkThemeDetected) { - descriptionText = "Dark theme detected on page"; - } else if (isPageEnabled) { - descriptionText = "Enabled for current website"; - } else if (isProtected) { - descriptionText = getLocalMessage("page_protected"); - } else if (isInDarkList) { - descriptionText = getLocalMessage("page_in_dark_list"); - } else { - descriptionText = "Disabled for current website"; - } - const description = m$1( - "span", - { - class: { - "site-toggle-group__description": true, - "site-toggle-group__description--on": isPageEnabled, - "site-toggle-group__description--off": !isPageEnabled - } - }, - descriptionText - ); - return m$1( - ControlGroup$1, - {class: "site-toggle-group"}, - m$1( - ControlGroup$1.Control, - {class: "site-toggle-group__control"}, - m$1(SiteToggleButton, {...props}) - ), - m$1(ControlGroup$1.Description, null, description) - ); - } - - function ThemeControl(props, controls) { - return m$1( - "span", - {class: "theme-control"}, - m$1("label", {class: "theme-control__label"}, props.label), - controls - ); - } - - function BackgroundColorEditor(props) { - return m$1( - ThemeControl, - {label: "Background"}, - m$1(ColorPicker$1, { - color: props.value, - onChange: props.onChange, - canReset: props.canReset, - onReset: props.onReset - }) - ); - } - - function formatPercent(v) { - return `${v}%`; - } - - function Brightness(props) { - return m$1( - ThemeControl, - {label: getLocalMessage("brightness")}, - m$1(Slider, { - value: props.value, - min: 50, - max: 150, - step: 1, - formatValue: formatPercent, - onChange: props.onChange - }) - ); - } - - function Contrast(props) { - return m$1( - ThemeControl, - {label: getLocalMessage("contrast")}, - m$1(Slider, { - value: props.value, - min: 50, - max: 150, - step: 1, - formatValue: formatPercent, - onChange: props.onChange - }) - ); - } - - function ColorSchemeDropDown(props) { - function onColorSchemeChange(value) { - props.onChange(value); - } - return m$1( - ThemeControl, - {label: "Color Scheme"}, - m$1(DropDown, { - selected: props.selected, - options: props.values, - onChange: onColorSchemeChange - }) - ); - } - - function ExportTheme({data}) { - const documentId = data.activeTab.documentId; - const tabId = data.activeTab.id; - const listener = ({type, data}, sender) => { - if ( - type === MessageTypeCStoUI.EXPORT_CSS_RESPONSE && - sender.tab && - sender.tab.id === tabId && - sender.documentId === documentId - ) { - const url = getURLHostOrProtocol(sender.tab.url).replace( - /[^a-z0-1\-]/g, - "-" - ); - saveFile(`DarkReader-${url}.css`, data); - chrome.runtime.onMessage.removeListener(listener); - } - }; - async function exportCSS() { - if (!data.activeTab || !data.activeTab.id) { - return; - } - chrome.runtime.onMessage.addListener(listener); - chrome.tabs.sendMessage( - data.activeTab.id, - {type: MessageTypeUItoCS.EXPORT_CSS}, - {frameId: 0, documentId} - ); - } - return m$1( - Button, - {onclick: exportCSS, class: "export-theme-button"}, - "Export Dynamic Theme" - ); - } - - function FontPicker(props) { - return m$1( - ThemeControl, - {label: "Font name"}, - m$1(Select$1, { - class: { - "font-picker": true, - "font-picker--disabled": !props.theme.useFont - }, - value: props.theme.fontFamily, - onChange: props.onChange, - options: props.fonts.reduce((map, font) => { - map[font] = m$1( - "div", - {style: {"font-family": font}}, - font - ); - return map; - }, {}) - }) - ); - } - - function Grayscale(props) { - return m$1( - ThemeControl, - {label: getLocalMessage("grayscale")}, - m$1(Slider, { - value: props.value, - min: 0, - max: 100, - step: 1, - formatValue: formatPercent, - onChange: props.onChange - }) - ); - } - - function ImmediateModify(props) { - const options = [ - {id: true, content: "Yes"}, - {id: false, content: "No"} - ]; - return m$1( - ThemeControl, - {label: "Immediate modify"}, - m$1(DropDown, { - options: options, - onChange: props.onChange, - selected: props.value - }) - ); - } - - var ThemeEngine; - (function (ThemeEngine) { - ThemeEngine["cssFilter"] = "cssFilter"; - ThemeEngine["svgFilter"] = "svgFilter"; - ThemeEngine["staticTheme"] = "staticTheme"; - ThemeEngine["dynamicTheme"] = "dynamicTheme"; - })(ThemeEngine || (ThemeEngine = {})); - - function Mode(props) { - async function openCSSEditor() { - await openExtensionPage("stylesheet-editor"); - } - const modes = [ - { - id: ThemeEngine.dynamicTheme, - content: getLocalMessage("engine_dynamic") - }, - { - id: ThemeEngine.cssFilter, - content: getLocalMessage("engine_filter") - }, - { - id: ThemeEngine.svgFilter, - content: getLocalMessage("engine_filter_plus") - }, - { - id: ThemeEngine.staticTheme, - content: getLocalMessage("engine_static") - } - ]; - return m$1( - ThemeControl, - {label: "Mode"}, - m$1( - "div", - {class: "mode-control-container"}, - m$1(DropDown, { - selected: modes.find((m) => m.id === props.mode).id, - options: modes, - onChange: props.onChange - }), - m$1("span", { - class: { - "static-edit-button": true, - "static-edit-button--hidden": - props.mode !== ThemeEngine.staticTheme - }, - onclick: openCSSEditor - }) - ) - ); - } - - const DEFAULT_COLORS = { - darkScheme: { - background: "#181a1b", - text: "#e8e6e3" - }, - lightScheme: { - background: "#dcdad7", - text: "#181a1b" - } - }; - const DEFAULT_THEME = { - mode: 1, - brightness: 100, - contrast: 100, - grayscale: 0, - sepia: 0, - useFont: false, - fontFamily: isMacOS - ? "Helvetica Neue" - : isWindows - ? "Segoe UI" - : "Open Sans", - textStroke: 0, - engine: ThemeEngine.dynamicTheme, - stylesheet: "", - darkSchemeBackgroundColor: DEFAULT_COLORS.darkScheme.background, - darkSchemeTextColor: DEFAULT_COLORS.darkScheme.text, - lightSchemeBackgroundColor: DEFAULT_COLORS.lightScheme.background, - lightSchemeTextColor: DEFAULT_COLORS.lightScheme.text, - scrollbarColor: "", - selectionColor: "auto", - styleSystemControls: false, - lightColorScheme: "Default", - darkColorScheme: "Default", - immediateModify: false - }; - const filterModeSites = [ - "*.officeapps.live.com", - "*.sharepoint.com", - "docs.google.com", - "onedrive.live.com" - ]; - const DEFAULT_SETTINGS = { - schemeVersion: 0, - enabled: true, - fetchNews: true, - theme: DEFAULT_THEME, - presets: [], - customThemes: filterModeSites.map((url) => { - const engine = ThemeEngine.svgFilter; - return { - url: [url], - theme: {...DEFAULT_THEME, engine}, - builtIn: true - }; - }), - enabledByDefault: true, - enabledFor: [], - disabledFor: [], - changeBrowserTheme: false, - syncSettings: true, - syncSitesFixes: false, - automation: { - enabled: isEdge && isMobile ? true : false, - mode: - isEdge && isMobile - ? AutomationMode.SYSTEM - : AutomationMode.NONE, - behavior: "OnOff" - }, - time: { - activation: "18:00", - deactivation: "9:00" - }, - location: { - latitude: null, - longitude: null - }, - previewNewDesign: false, - previewNewestDesign: false, - enableForPDF: true, - enableForProtectedPages: false, - enableContextMenus: false, - detectDarkTheme: true - }; - - function ResetButtonGroup(props) { - function reset() { - props.actions.setTheme(DEFAULT_SETTINGS.theme); - } - return m$1( - ControlGroup$1, - null, - m$1( - ControlGroup$1.Control, - null, - m$1(ResetButton, {onClick: reset}, "Reset to defaults") - ), - m$1( - ControlGroup$1.Description, - null, - "Restore current theme values to defaults" - ) - ); - } - - function Scheme(props) { - return m$1( - ThemeControl, - {label: "Scheme"}, - m$1(DropDown, { - selected: props.isDark, - options: [ - {id: true, content: getLocalMessage("dark")}, - {id: false, content: getLocalMessage("light")} - ], - onChange: props.onChange - }) - ); - } - - function ScrollbarEditor(props) { - return m$1( - ThemeControl, - {label: "Scrollbar"}, - m$1(ColorDropDown, { - value: props.value, - colorSuggestion: "#959799", - onChange: props.onChange, - onReset: props.onReset, - hasAutoOption: true, - hasDefaultOption: true - }) - ); - } - - function SelectionColorEditor(props) { - return m$1( - ThemeControl, - {label: "Selection"}, - m$1(ColorDropDown, { - value: props.value, - colorSuggestion: "#005ccc", - onChange: props.onChange, - onReset: props.onReset, - hasAutoOption: true, - hasDefaultOption: true - }) - ); - } - - function Sepia(props) { - return m$1( - ThemeControl, - {label: getLocalMessage("sepia")}, - m$1(Slider, { - value: props.value, - min: 0, - max: 100, - step: 1, - formatValue: formatPercent, - onChange: props.onChange - }) - ); - } - - function StyleSystemControls(props) { - const options = [ - {id: true, content: "Yes"}, - {id: false, content: "No"} - ]; - return m$1( - ThemeControl, - {label: "Style system controls"}, - m$1(DropDown, { - options: options, - onChange: props.onChange, - selected: props.value - }) - ); - } - - function TextColorEditor(props) { - return m$1( - ThemeControl, - {label: "Text"}, - m$1(ColorPicker$1, { - color: props.value, - onChange: props.onChange, - canReset: props.canReset, - onReset: props.onReset - }) - ); - } - - function TextStroke(props) { - return m$1( - ThemeControl, - {label: "Text stroke"}, - m$1(Slider, { - value: props.value, - min: 0, - max: 1, - step: 0.1, - formatValue: String, - onChange: props.onChange - }) - ); - } - - function UseFont(props) { - const options = [ - {id: true, content: "Yes"}, - {id: false, content: "No"} - ]; - return m$1( - ThemeControl, - {label: "Change font"}, - m$1(DropDown, { - options: options, - onChange: props.onChange, - selected: props.value - }) - ); - } - - function hexify(number) { - return (number < 16 ? "0" : "") + number.toString(16); - } - function generateUID() { - if ("randomUUID" in crypto) { - const uuid = crypto.randomUUID(); - return ( - uuid.substring(0, 8) + - uuid.substring(9, 13) + - uuid.substring(14, 18) + - uuid.substring(19, 23) + - uuid.substring(24) - ); - } - if ("getRandomValues" in crypto) { - return Array.from(crypto.getRandomValues(new Uint8Array(16))) - .map((x) => hexify(x)) - .join(""); - } - return Math.floor(Math.random() * 2 ** 55).toString(36); - } - - function PresetItem(props) { - const context = getComponentContext(); - const store = context.store; - function onRemoveClick(e) { - e.stopPropagation(); - store.isConfirmationVisible = true; - context.refresh(); - } - function onConfirmRemoveClick() { - const filtered = props.data.settings.presets.filter( - (p) => p.id !== props.preset.id - ); - props.actions.changeSettings({presets: filtered}); - } - function onCancelRemoveClick() { - store.isConfirmationVisible = false; - context.refresh(); - } - const confirmation = store.isConfirmationVisible - ? m$1(MessageBox, { - caption: `Are you sure you want to remove ${props.preset.name}?`, - onOK: onConfirmRemoveClick, - onCancel: onCancelRemoveClick - }) - : null; - return m$1( - "span", - {class: "theme-preset-picker__preset"}, - m$1( - "span", - {class: "theme-preset-picker__preset__name"}, - props.preset.name - ), - m$1("span", { - class: "theme-preset-picker__preset__remove-button", - onclick: onRemoveClick - }), - confirmation - ); - } - const MAX_ALLOWED_PRESETS = 3; - function PresetPicker(props) { - const tab = props.data.activeTab; - const host = getURLHostOrProtocol(tab.url); - const preset = props.data.settings.presets.find(({urls}) => - isURLInList(tab.url, urls) - ); - const custom = props.data.settings.customThemes.find(({url}) => - isURLInList(tab.url, url) - ); - const selectedPresetId = custom - ? "custom" - : preset - ? preset.id - : "default"; - const defaultOption = { - id: "default", - content: "Theme for all websites" - }; - const addNewPresetOption = - props.data.settings.presets.length < MAX_ALLOWED_PRESETS - ? {id: "add-preset", content: "\uff0b Create new theme"} - : null; - const userPresetsOptions = props.data.settings.presets.map((preset) => { - if (preset.id === selectedPresetId) { - return {id: preset.id, content: preset.name}; - } - return { - id: preset.id, - content: m$1(PresetItem, {...props, preset: preset}) - }; - }); - const customSitePresetOption = { - id: "custom", - content: `${selectedPresetId === "custom" ? "\u2605" : "\u2606"} Theme for ${host}` - }; - const dropdownOptions = [ - defaultOption, - ...userPresetsOptions, - addNewPresetOption, - customSitePresetOption - ].filter(Boolean); - function onPresetChange(id) { - const filteredCustomThemes = - props.data.settings.customThemes.filter( - ({url}) => !isURLInList(tab.url, url) - ); - const filteredPresets = props.data.settings.presets.map( - (preset) => { - return { - ...preset, - urls: preset.urls.filter( - (template) => !isURLMatched(tab.url, template) - ) - }; - } - ); - if (id === "default") { - props.actions.changeSettings({ - customThemes: filteredCustomThemes, - presets: filteredPresets - }); - } else if (id === "custom") { - const extended = filteredCustomThemes.concat({ - url: [host], - theme: {...props.data.settings.theme} - }); - props.actions.changeSettings({ - customThemes: extended, - presets: filteredPresets - }); - } else if (id === "add-preset") { - let newPresetName; - for (let i = 0; i <= props.data.settings.presets.length; i++) { - newPresetName = `Theme ${i + 1}`; - if ( - props.data.settings.presets.every( - (p) => p.name !== newPresetName - ) - ) { - break; - } - } - const extended = filteredPresets.concat({ - id: `preset-${generateUID()}`, - name: newPresetName, - urls: [host], - theme: {...props.data.settings.theme} - }); - props.actions.changeSettings({ - customThemes: filteredCustomThemes, - presets: extended - }); - } else { - const chosenPresetId = id; - const extended = filteredPresets.map((preset) => { - if (preset.id === chosenPresetId) { - return { - ...preset, - urls: preset.urls.concat(host) - }; - } - return preset; - }); - props.actions.changeSettings({ - customThemes: filteredCustomThemes, - presets: extended - }); - } - } - return m$1(DropDown, { - class: "theme-preset-picker", - selected: selectedPresetId, - options: dropdownOptions, - onChange: onPresetChange - }); - } - - function getCurrentThemePreset(props) { - const custom = props.data.settings.customThemes.find(({url}) => - isURLInList(props.data.activeTab.url, url) - ); - const preset = custom - ? null - : props.data.settings.presets.find(({urls}) => - isURLInList(props.data.activeTab.url, urls) - ); - let theme = custom - ? custom.theme - : preset - ? preset.theme - : props.data.settings.theme; - if (props.data.forcedScheme) { - const mode = props.data.forcedScheme === "dark" ? 1 : 0; - theme = {...theme, mode}; - } - function setTheme(config) { - if (custom) { - custom.theme = {...custom.theme, ...config}; - props.actions.changeSettings({ - customThemes: props.data.settings.customThemes - }); - } else if (preset) { - preset.theme = {...preset.theme, ...config}; - props.actions.changeSettings({ - presets: props.data.settings.presets - }); - } else { - props.actions.setTheme(config); - } - if ( - config.mode != null && - props.data.settings.automation.behavior === "Scheme" - ) { - props.actions.changeSettings({ - automation: { - ...props.data.settings.automation, - ...{enabled: false} - } - }); - } - } - return { - theme, - change: setTheme - }; - } - - function ThemeControls(props) { - const {theme, onChange} = props; - return m$1( - "section", - {class: "m-section m-theme-controls"}, - m$1(Brightness, { - value: theme.brightness, - onChange: (v) => onChange({brightness: v}) - }), - m$1(Contrast, { - value: theme.contrast, - onChange: (v) => onChange({contrast: v}) - }), - m$1(Scheme, { - isDark: theme.mode === 1, - onChange: (isDark) => onChange({mode: isDark ? 1 : 0}) - }), - m$1(Mode, { - mode: theme.engine, - onChange: (mode) => onChange({engine: mode}) - }) - ); - } - function ThemeGroup(props) { - const preset = getCurrentThemePreset(props); - return m$1( - "div", - {class: "theme-group"}, - m$1( - "div", - {class: "theme-group__presets-wrapper"}, - m$1(PresetPicker, {...props}) - ), - m$1( - "div", - {class: "theme-group__controls-wrapper"}, - m$1(ThemeControls, { - theme: preset.theme, - onChange: preset.change - }), - m$1( - Button, - { - class: "theme-group__more-button", - onclick: props.onThemeNavClick - }, - "See all options" - ) - ), - m$1("label", {class: "theme-group__description"}, "Configure theme") - ); - } - - function SwitchGroup(props) { - return m$1( - Array, - null, - m$1(AppSwitch, {...props}), - m$1(SiteToggleGroup, {...props}) - ); - } - function SettingsNavButton(props) { - return m$1( - ResetButton$1, - {onClick: props.onClick}, - m$1("span", {class: "settings-button-icon"}), - "Settings" - ); - } - function MainPage(props) { - return m$1( - Array, - null, - m$1("section", {class: "m-section"}, m$1(SwitchGroup, {...props})), - m$1("section", {class: "m-section"}, m$1(ThemeGroup, {...props})), - m$1( - "section", - {class: "m-section"}, - m$1(SettingsNavButton, {onClick: props.onSettingsNavClick}), - m$1(HelpGroup, null) - ) - ); - } - - function isFresh(n) { - try { - const now = Date.now(); - const date = new Date(n.date).getTime(); - return now - date < getDuration({days: 30}); - } catch (err) { - return false; - } - } - function NewsLink(props) { - const {news} = props; - return m$1( - "a", - { - href: news.url, - class: { - "news-section__news": true, - "news-section__news--highlight": - !news.read && isFresh(news), - "news-section__news--has-icon": news.icon, - "news-section__news--small": props.isSmall - }, - onclick: props.onClick, - target: "_blank", - rel: "noopener noreferrer" - }, - news.icon - ? m$1("span", { - class: "news-section__news__icon", - style: {"background-image": `url('${news.icon}')`} - }) - : null, - m$1("span", {class: "news-section__news__text"}, news.headline) - ); - } - function NewsSection(props) { - const context = getComponentContext(); - const store = context.getStore({ - expanded: false, - didNewsSlideIn: false - }); - const {expanded, didNewsSlideIn} = store; - const news = props.data.news; - const latest = news && news.length > 0 ? news[0] : null; - function markLatestAsRead() { - if (latest) { - props.actions.markNewsAsRead([latest.id]); - } - } - function toggleNews() { - if (expanded) { - markLatestAsRead(); - } - store.expanded = !expanded; - store.didNewsSlideIn = didNewsSlideIn || !store.expanded; - context.refresh(); - } - context.onRender(() => { - if ( - latest && - !latest.read && - !store.expanded && - !store.didNewsSlideIn - ) { - setTimeout(toggleNews, 750); - } - }); - const birthdayExpired = new Date(2024, 7, 2).getTime(); - const birthdayNews = { - id: "birthday", - date: "2024-07-07T00:00:00Z", - url: `${HOMEPAGE_URL}/timeline/`, - headline: "On July 7th we celebrate 10 years!", - icon: "/ui/assets/images/birthday-icon.svg" - }; - const birthdayLink = m$1(NewsLink, {isSmall: true, news: birthdayNews}); - return m$1( - "div", - {class: {"news-section": true, "news-section--expanded": expanded}}, - Date.now() < birthdayExpired - ? birthdayLink - : latest - ? m$1(NewsLink, { - isSmall: true, - news: latest, - onClick: markLatestAsRead - }) - : null, - m$1( - "div", - {class: "news-section__popover"}, - m$1( - "div", - {class: "news-section__popover__top"}, - m$1("div", {class: "news-section__title"}, "What's New"), - m$1( - "span", - { - role: "button", - class: "news-section__close", - onclick: toggleNews - }, - "\u2715" - ) - ), - latest - ? m$1(NewsLink, {news: latest, onClick: markLatestAsRead}) - : null - ) - ); - } - - function Page(props, content) { - return m$1( - "div", - {class: {"page": true, "page--active": props.active}}, - m$1("div", {class: "page__content"}, content), - props.first - ? null - : m$1( - Button, - { - class: "page__back-button", - onclick: props.onBackButtonClick - }, - "Back" - ) - ); - } - function PageViewer(props, ...pages) { - return m$1( - "div", - {class: "page-viewer"}, - pages.map((pageSpec, i) => { - return { - ...pageSpec, - props: { - ...pageSpec.props, - active: props.activePage === pageSpec.props.id, - first: i === 0, - onBackButtonClick: props.onBackButtonClick - } - }; - }) - ); - } - - function CollapsiblePanel({}, ...groups) { - const context = getComponentContext(); - const store = context.store; - if (store.activeGroup == null) { - store.activeGroup = groups[0].props.id; - } - return m$1( - "div", - {class: "collapsible-panel"}, - ...groups.map((spec, i) => { - const activeIndex = groups.findIndex( - (g) => store.activeGroup === g.props.id - ); - const collapsed = i !== activeIndex; - const collapseTop = i < activeIndex; - const collapseBottom = i > activeIndex; - const onExpand = () => { - store.activeGroup = spec.props.id; - context.refresh(); - }; - return { - ...spec, - props: { - ...spec.props, - collapsed, - collapseBottom, - collapseTop, - onExpand - } - }; - }) - ); - } - function Group(props, content) { - return m$1( - "div", - { - class: { - "collapsible-panel__group": true, - "collapsible-panel__group--collapsed": props.collapsed, - "collapsible-panel__group--collapse-top": props.collapseTop, - "collapsible-panel__group--collapse-bottom": - props.collapseBottom - } - }, - m$1("div", {class: "collapsible-panel__group__content"}, content), - m$1( - "span", - { - role: "button", - class: "collapsible-panel__group__expand-button", - onclick: props.onExpand - }, - props.label - ) - ); - } - var Collapsible = Object.assign(CollapsiblePanel, {Group}); - - function MainGroup({theme, change}) { - return m$1( - Array, - null, - m$1(Brightness, { - value: theme.brightness, - onChange: (v) => change({brightness: v}) - }), - m$1(Contrast, { - value: theme.contrast, - onChange: (v) => change({contrast: v}) - }), - m$1(Sepia, { - value: theme.sepia, - onChange: (v) => change({sepia: v}) - }), - m$1(Grayscale, { - value: theme.grayscale, - onChange: (v) => change({grayscale: v}) - }), - m$1(Scheme, { - isDark: theme.mode === 1, - onChange: (isDark) => change({mode: isDark ? 1 : 0}) - }), - m$1(Mode, { - mode: theme.engine, - onChange: (mode) => change({engine: mode}) - }) - ); - } - function ColorsGroup({theme, change, colorSchemes}) { - const isDarkScheme = theme.mode === 1; - const csProp = isDarkScheme ? "darkColorScheme" : "lightColorScheme"; - const bgProp = isDarkScheme - ? "darkSchemeBackgroundColor" - : "lightSchemeBackgroundColor"; - const fgProp = isDarkScheme - ? "darkSchemeTextColor" - : "lightSchemeTextColor"; - const defaultSchemeColors = isDarkScheme - ? DEFAULT_COLORS.darkScheme - : DEFAULT_COLORS.lightScheme; - const defaultMatrixValues = { - brightness: DEFAULT_THEME.brightness, - contrast: DEFAULT_THEME.contrast, - sepia: DEFAULT_THEME.sepia, - grayscale: DEFAULT_THEME.grayscale - }; - const currentColorScheme = isDarkScheme - ? theme.darkColorScheme - : theme.lightColorScheme; - const currentSchemeColors = isDarkScheme - ? colorSchemes.dark - : colorSchemes.light; - const sortedColorSchemeValues = Object.keys(currentSchemeColors) - .sort((a, b) => a.localeCompare(b)) - .map((value) => { - return {id: value, content: value}; - }); - function onColorSchemeChange(newColor) { - change({[csProp]: newColor}); - change({[bgProp]: currentSchemeColors[newColor].backgroundColor}); - change({[fgProp]: currentSchemeColors[newColor].textColor}); - } - return m$1( - Array, - null, - m$1(BackgroundColorEditor, { - value: - theme[bgProp] === "auto" - ? defaultSchemeColors.background - : theme[bgProp], - onChange: (v) => - change({ - [bgProp]: v, - ...defaultMatrixValues, - [csProp]: "Default" - }), - canReset: theme[bgProp] !== defaultSchemeColors.background, - onReset: () => - change({ - [bgProp]: DEFAULT_SETTINGS.theme[bgProp], - [csProp]: "Default" - }) - }), - m$1(TextColorEditor, { - value: - theme[fgProp] === "auto" - ? defaultSchemeColors.text - : theme[fgProp], - onChange: (v) => - change({ - [fgProp]: v, - ...defaultMatrixValues, - [csProp]: "Default" - }), - canReset: theme[fgProp] !== defaultSchemeColors.text, - onReset: () => - change({ - [fgProp]: DEFAULT_SETTINGS.theme[fgProp], - [csProp]: "Default" - }) - }), - m$1(ScrollbarEditor, { - value: theme.scrollbarColor, - onChange: (v) => change({scrollbarColor: v}), - onReset: () => - change({ - scrollbarColor: DEFAULT_SETTINGS.theme.scrollbarColor - }) - }), - m$1(SelectionColorEditor, { - value: theme.selectionColor, - onChange: (v) => change({selectionColor: v}), - onReset: () => - change({ - selectionColor: DEFAULT_SETTINGS.theme.selectionColor - }) - }), - m$1(ColorSchemeDropDown, { - selected: currentColorScheme, - values: sortedColorSchemeValues, - onChange: (v) => onColorSchemeChange(v) - }) - ); - } - function FontGroup({theme, fonts, viewProps, change}) { - const {settings, activeTab, isAllowedFileSchemeAccess} = viewProps.data; - const {isDarkThemeDetected, isInDarkList, isInjected, isProtected} = - activeTab; - const custom = settings.customThemes.find((custom) => - isURLInList(activeTab.url, custom.url) - ); - const engine = custom ? custom.theme.engine : settings.theme.engine; - const canExportTheme = - engine === ThemeEngine.dynamicTheme && - activeTab.id && - !isDarkThemeDetected && - !isInDarkList && - !isProtected && - isInjected !== false && - isURLEnabled( - activeTab.url, - settings, - activeTab, - isAllowedFileSchemeAccess - ); - return m$1( - Array, - null, - m$1(UseFont, { - value: theme.useFont, - onChange: (useFont) => change({useFont}) - }), - m$1(FontPicker, { - theme: theme, - fonts: fonts, - onChange: (fontFamily) => change({fontFamily}) - }), - m$1(TextStroke, { - value: theme.textStroke, - onChange: (textStroke) => change({textStroke}) - }), - m$1(StyleSystemControls, { - value: theme.styleSystemControls, - onChange: (styleSystemControls) => change({styleSystemControls}) - }), - m$1(ImmediateModify, { - value: theme.immediateModify, - onChange: (immediateModify) => change({immediateModify}) - }), - canExportTheme ? m$1(ExportTheme, {...viewProps}) : null - ); - } - function ThemePage(props) { - const {theme, change} = getCurrentThemePreset(props); - return m$1( - "section", - {class: "m-section theme-page"}, - m$1(PresetPicker, {...props}), - m$1( - Collapsible, - null, - m$1( - Collapsible.Group, - {id: "main", label: "Brightness, contrast, mode"}, - m$1(MainGroup, {theme: theme, change: change}) - ), - m$1( - Collapsible.Group, - {id: "colors", label: "Colors"}, - m$1(ColorsGroup, { - theme: theme, - change: change, - colorSchemes: props.data.colorScheme - }) - ), - m$1( - Collapsible.Group, - {id: "font", label: "Font & more"}, - m$1(FontGroup, { - theme: theme, - fonts: props.fonts, - viewProps: props, - change: change - }) - ) - ), - m$1(ResetButtonGroup, {...props}) - ); - } - - function Logo() { - return m$1( - "a", - { - class: "m-logo", - href: HOMEPAGE_URL, - target: "_blank", - rel: "noopener noreferrer" - }, - "Dark Reader" - ); - } - let popstate = null; - isMobile && - window.addEventListener("popstate", () => popstate && popstate(), { - passive: true - }); - function Pages(props) { - const context = getComponentContext(); - const store = context.store; - if (store.activePage == null) { - store.activePage = "main"; - } - function onThemeNavClick() { - isMobile && history.pushState(undefined, ""); - store.activePage = "theme"; - context.refresh(); - } - function onSettingsNavClick() { - openExtensionPage("options"); - } - function goBack() { - const activePage = store.activePage; - const settingsPageSubpages = [ - "automation", - "manage-settings", - "site-list" - ]; - if (settingsPageSubpages.includes(activePage)) { - store.activePage = "settings"; - } else { - store.activePage = "main"; - } - context.refresh(); - } - popstate = goBack; - function onBackClick() { - if (isMobile) { - history.back(); - } else { - goBack(); - } - } - return m$1( - PageViewer, - {activePage: store.activePage, onBackButtonClick: onBackClick}, - m$1( - Page, - {id: "main"}, - m$1(MainPage, { - ...props, - onThemeNavClick: onThemeNavClick, - onSettingsNavClick: onSettingsNavClick - }) - ), - m$1(Page, {id: "theme"}, m$1(ThemePage, {...props})) - ); - } - function DonateGroup() { - return m$1( - "div", - {class: "m-donate-group"}, - m$1( - "a", - { - class: "m-donate-button", - href: DONATE_URL, - target: "_blank", - rel: "noopener noreferrer" - }, - m$1("span", {class: "m-donate-button__icon"}), - m$1( - "span", - {class: "m-donate-button__text"}, - getLocalMessage("donate") - ) - ), - m$1( - "label", - {class: "m-donate-description"}, - "This project is sponsored by you" - ) - ); - } - function Body$2(props) { - const context = getComponentContext(); - context.onCreate(() => { - if (isMobile) { - window.addEventListener("contextmenu", ({preventDefault}) => - preventDefault() - ); - } - }); - context.onRemove(() => { - document.documentElement.classList.remove("preview"); - }); - return m$1( - "body", - null, - m$1("section", {class: "m-section"}, m$1(Logo, null)), - m$1( - "section", - {class: "m-section pages-section"}, - m$1(Pages, {...props}) - ), - m$1("section", {class: "m-section"}, m$1(DonateGroup, null)), - m$1(NewsSection, {...props}), - m$1(Overlay$1, null) - ); - } - - const engineNames = [ - [ThemeEngine.dynamicTheme, getLocalMessage("engine_dynamic")], - [ThemeEngine.cssFilter, getLocalMessage("engine_filter")], - [ThemeEngine.svgFilter, getLocalMessage("engine_filter_plus")], - [ThemeEngine.staticTheme, getLocalMessage("engine_static")] - ]; - function openCSSEditor() { - openExtensionPage("stylesheet-editor"); - } - function EngineSwitch({engine, onChange}) { - return m$1( - "div", - {class: "engine-switch"}, - m$1(MultiSwitch, { - value: engineNames.find(([code]) => code === engine)[1], - options: engineNames.map(([, name]) => name), - onChange: (value) => - onChange(engineNames.find(([, name]) => name === value)[0]) - }), - m$1("span", { - class: { - "engine-switch__css-edit-button": true, - "engine-switch__css-edit-button_active": - engine === ThemeEngine.staticTheme - }, - onclick: openCSSEditor - }), - m$1( - "label", - {class: "engine-switch__description"}, - getLocalMessage("theme_generation_mode") - ) - ); - } - - function FontSettings({config, fonts, onChange}) { - return m$1( - "section", - {class: "font-settings"}, - m$1( - "div", - {class: "font-settings__font-select-container"}, - m$1( - "div", - {class: "font-settings__font-select-container__line"}, - m$1(CheckBox, { - checked: config.useFont, - onchange: (e) => onChange({useFont: e.target.checked}) - }), - m$1(Select$1, { - value: config.fontFamily, - onChange: (value) => onChange({fontFamily: value}), - options: fonts.reduce((map, font) => { - map[font] = m$1( - "div", - {style: {"font-family": font}}, - font - ); - return map; - }, {}) - }) - ), - m$1( - "label", - {class: "font-settings__font-select-container__label"}, - getLocalMessage("select_font") - ) - ), - m$1(UpDown, { - value: config.textStroke, - min: 0, - max: 1, - step: 0.1, - default: 0, - name: getLocalMessage("text_stroke"), - onChange: (value) => onChange({textStroke: value}) - }) - ); - } - - async function openSettings() { - await openExtensionPage("options"); - } - function MoreSettings({data, actions, fonts}) { - const tab = data.activeTab; - const custom = data.settings.customThemes.find(({url}) => - isURLInList(tab.url, url) - ); - const theme = custom ? custom.theme : data.settings.theme; - function setConfig(config) { - if (custom) { - custom.theme = {...custom.theme, ...config}; - actions.changeSettings({ - customThemes: data.settings.customThemes - }); - } else { - actions.setTheme(config); - } - } - return m$1( - "section", - {class: "more-settings"}, - m$1( - "div", - {class: "more-settings__section"}, - m$1(FontSettings, { - config: theme, - fonts: fonts, - onChange: setConfig - }) - ), - m$1( - "div", - {class: "more-settings__section"}, - m$1(EngineSwitch, { - engine: theme.engine, - onChange: (engine) => setConfig({engine}) - }) - ), - m$1( - "div", - {class: "more-settings__section"}, - m$1(CustomSettingsToggle, {data: data, actions: actions}), - tab.isProtected - ? m$1( - "p", - { - class: "more-settings__description more-settings__description--warning" - }, - getLocalMessage("page_protected").replace(/\n/g, " ") - ) - : tab.isInDarkList - ? m$1( - "p", - { - class: "more-settings__description more-settings__description--warning" - }, - getLocalMessage("page_in_dark_list").replace( - /\n/g, - " " - ) - ) - : m$1( - "p", - {class: "more-settings__description"}, - getLocalMessage("only_for_description") - ) - ), - null, - m$1( - "div", - {class: "more-settings__section"}, - m$1( - Button, - { - onclick: openSettings, - class: "more-settings__settings-button" - }, - m$1( - "span", - {class: "more-settings__settings-button__wrapper"}, - m$1( - "span", - {class: "more-settings__settings-button__icon"}, - m$1(SettingsIcon, null) - ), - m$1( - "span", - {class: "more-settings__settings-button__text"}, - getLocalMessage("all_settings") - ) - ) - ) - ) - ); - } - - const NEWS_COUNT = 2; - function NewsGroup({news, expanded, onNewsOpen, onClose}) { - return m$1( - "div", - {class: {"news": true, "news--expanded": expanded}}, - m$1( - "div", - {class: "news__header"}, - m$1( - "span", - {class: "news__header__text"}, - getLocalMessage("news") - ), - m$1( - "span", - {class: "news__close", role: "button", onclick: onClose}, - "\u2715" - ) - ), - m$1( - "div", - {class: "news__list"}, - news.slice(0, NEWS_COUNT).map((event) => { - const date = new Date(event.date); - let formattedDate; - try { - const locale = getUILanguage(); - formattedDate = date.toLocaleDateString(locale, { - month: "short", - day: "numeric" - }); - } catch (err) { - formattedDate = date.toISOString().substring(0, 10); - } - return m$1( - "div", - { - class: { - "news__event": true, - "news__event--unread": !event.read, - "news__event--has-icon": event.icon - } - }, - m$1( - "a", - { - class: "news__event__link", - onclick: () => onNewsOpen(event), - href: event.url, - target: "_blank", - rel: "noopener noreferrer" - }, - event.icon - ? m$1("span", { - class: "news__event__icon", - style: { - "background-image": `url('${event.icon}')` - } - }) - : null, - m$1( - "span", - {class: "news__event__date"}, - formattedDate - ), - event.headline - ) - ); - }), - news.length <= NEWS_COUNT - ? null - : m$1( - "a", - { - class: { - "news__read-more": true, - "news__read-more--unread": news - .slice(NEWS_COUNT) - .find(({read}) => !read) - }, - href: BLOG_URL, - target: "_blank", - onclick: () => onNewsOpen(...news), - rel: "noopener noreferrer" - }, - getLocalMessage("read_more") - ) - ) - ); - } - function NewsButton({active, count, onClick}) { - return m$1( - Button, - { - "class": {"news-button": true, "news-button--active": active}, - "href": "#news", - "data-count": count > 0 && !active ? count : null, - "onclick": (e) => { - e.currentTarget.blur(); - onClick(); - } - }, - getLocalMessage("news") - ); - } - - function SiteListSettings({data, actions, isFocused}) { - function isSiteUrlValid(value) { - return /^([^\.\s]+?\.?)+$/.test(value); - } - return m$1( - "section", - {class: "site-list-settings"}, - m$1(Toggle, { - class: "site-list-settings__toggle", - checked: !data.settings.enabledByDefault, - labelOn: getLocalMessage("invert_listed_only"), - labelOff: getLocalMessage("not_invert_listed"), - onChange: (value) => - actions.changeSettings({enabledByDefault: !value}) - }), - m$1(TextList, { - class: "site-list-settings__text-list", - placeholder: "google.com/maps", - values: data.settings.enabledByDefault - ? data.settings.disabledFor - : data.settings.enabledFor, - isFocused: isFocused, - onChange: (values) => { - const siteList = values.filter(isSiteUrlValid); - const changes = data.settings.enabledByDefault - ? {disabledFor: siteList} - : {enabledFor: siteList}; - actions.changeSettings(changes); - } - }), - m$1(ShortcutLink, { - class: "site-list-settings__shortcut", - commandName: "addSite", - shortcuts: data.shortcuts, - textTemplate: (hotkey) => - hotkey - ? `${getLocalMessage("add_site_to_list")}: ${hotkey}` - : getLocalMessage("setup_add_site_hotkey"), - onSetShortcut: (shortcut) => - actions.setShortcut("addSite", shortcut) - }) - ); - } - - function PlusBody() { - return m$1("body", null); - } - - async function openDevTools() { - await openExtensionPage("devtools"); - } - function Body(props) { - const context = getComponentContext(); - const {state, setState} = useState({ - activeTab: "Filter", - newsOpen: false, - didNewsSlideIn: false, - moreSiteSettingsOpen: false, - moreToggleSettingsOpen: false, - newToggleMenusHighlightHidden: false - }); - if (!props.data.isReady) { - return m$1("body", null, m$1(Loader$1, {complete: false})); - } - if (props.data.settings.previewNewestDesign && false) { - return m$1(PlusBody, {...props, fonts: props.fonts}); - } - if (isMobile || props.data.settings.previewNewDesign) { - return m$1(Body$2, {...props, fonts: props.fonts}); - } - const unreadNews = props.data.news.filter(({read}) => !read); - const latestNews = - props.data.news.length > 0 ? props.data.news[0] : null; - const isFirstNewsUnread = latestNews && !latestNews.read; - let newsWereLongTimeAgo = true; - if (unreadNews.length > 0) { - const latest = new Date(unreadNews[0].date); - const today = new Date(); - newsWereLongTimeAgo = - latest.getTime() < today.getTime() - getDuration({days: 30}); - } - const displayedNewsCount = newsWereLongTimeAgo ? 0 : unreadNews.length; - context.onRender(() => { - if ( - props.data.settings.fetchNews && - isFirstNewsUnread && - !state.newsOpen && - !state.didNewsSlideIn && - !newsWereLongTimeAgo - ) { - setTimeout(toggleNews, 750); - } - }); - function toggleNews() { - if (state.newsOpen && unreadNews.length > 0) { - props.actions.markNewsAsRead(unreadNews.map(({id}) => id)); - } - setState({ - newsOpen: !state.newsOpen, - didNewsSlideIn: state.didNewsSlideIn || !state.newsOpen - }); - } - function onNewsOpen(...news) { - const unread = news.filter(({read}) => !read); - if (unread.length > 0) { - props.actions.markNewsAsRead(unread.map(({id}) => id)); - } - } - function toggleMoreSiteSettings() { - setState({ - moreSiteSettingsOpen: !state.moreSiteSettingsOpen, - moreToggleSettingsOpen: false, - newToggleMenusHighlightHidden: true - }); - if (props.data.uiHighlights.includes("new-toggle-menus")) { - props.actions.hideHighlights(["new-toggle-menus"]); - } - } - function toggleMoreToggleSettings() { - setState({ - moreToggleSettingsOpen: !state.moreToggleSettingsOpen, - moreSiteSettingsOpen: false, - newToggleMenusHighlightHidden: true - }); - if (props.data.uiHighlights.includes("new-toggle-menus")) { - props.actions.hideHighlights(["new-toggle-menus"]); - } - } - const birthdayMessage = getLocalMessage("we_celebrate_10_years"); - let birthdayMessageSpec = m$1("span", null, birthdayMessage); - try { - const index10 = birthdayMessage.indexOf("10"); - const indexDot = birthdayMessage.indexOf(".", index10); - if (index10 >= 0 && indexDot > index10) { - birthdayMessageSpec = m$1( - "span", - null, - birthdayMessage.substring(0, index10), - m$1( - "a", - { - href: `${HOMEPAGE_URL}/timeline/`, - target: "_blank", - rel: "noopener noreferrer" - }, - birthdayMessage.substring(index10, indexDot) - ), - birthdayMessage.substring(indexDot) - ); - } - } catch (err) { - console.error(err); - } - const filterTab = m$1( - FilterSettings, - {data: props.data, actions: props.actions}, - m$1( - "div", - {class: "birthday-container"}, - m$1("i", {class: "birthday-icon"}, "\uD83C\uDF89"), - m$1("span", {class: "birthday-message"}, birthdayMessageSpec), - m$1( - "a", - { - class: "donate-link", - href: DONATE_URL, - target: "_blank", - rel: "noopener noreferrer" - }, - m$1( - "span", - {class: "donate-link__text"}, - getLocalMessage("pay_for_using") - ) - ) - ) - ); - const moreTab = m$1(MoreSettings, { - data: props.data, - actions: props.actions, - fonts: props.fonts - }); - return m$1( - "body", - {class: {"ext-disabled": !props.data.isEnabled}}, - m$1(Loader$1, {complete: true}), - m$1(Header, { - data: props.data, - actions: props.actions, - onMoreSiteSettingsClick: toggleMoreSiteSettings, - onMoreToggleSettingsClick: toggleMoreToggleSettings - }), - m$1(TabPanel, { - activeTab: state.activeTab, - onSwitchTab: (tab) => setState({activeTab: tab}), - tabs: { - "Filter": filterTab, - "Site list": m$1(SiteListSettings, { - data: props.data, - actions: props.actions, - isFocused: state.activeTab === "Site list" - }), - "More": moreTab - }, - tabLabels: { - "Filter": getLocalMessage("filter"), - "Site list": getLocalMessage("site_list"), - "More": getLocalMessage("more") - } - }), - m$1( - "div", - {class: "mobile-link-container"}, - m$1( - "a", - { - class: "mobile-link", - href: MOBILE_URL, - target: "_blank", - rel: "noopener noreferrer" - }, - m$1("span", {class: "mobile-link__icon"}), - m$1( - "span", - {class: "mobile-link__text"}, - getLocalMessage("mobile_link") - ) - ) - ), - m$1( - "footer", - null, - m$1( - "div", - {class: "footer-buttons"}, - m$1( - "a", - { - class: "footer-help-link", - href: getHelpURL(), - target: "_blank", - rel: "noopener noreferrer" - }, - getLocalMessage("help") - ), - m$1(NewsButton, { - active: state.newsOpen, - count: displayedNewsCount, - onClick: toggleNews - }), - m$1( - Button, - {onclick: openDevTools, class: "dev-tools-button"}, - "\uD83D\uDEE0 ", - getLocalMessage("open_dev_tools") - ) - ) - ), - m$1(NewsGroup, { - news: props.data.news, - expanded: state.newsOpen, - onNewsOpen: onNewsOpen, - onClose: toggleNews - }), - m$1(MoreSiteSettings, { - data: props.data, - actions: props.actions, - isExpanded: state.moreSiteSettingsOpen, - onClose: toggleMoreSiteSettings - }), - m$1(MoreToggleSettings, { - data: props.data, - actions: props.actions, - isExpanded: state.moreToggleSettingsOpen, - onClose: toggleMoreToggleSettings - }) - ); - } - var Body$1 = compose(Body, withState, withForms); - - function renderBody(data, fonts, actions) { - if (data.settings.previewNewDesign) { - if (!document.documentElement.classList.contains("preview")) { - document.documentElement.classList.add("preview"); - } - } else if (document.documentElement.classList.contains("preview")) { - document.documentElement.classList.remove("preview"); - } - if (data.news && data.news.length > 0) { - const latest = data.news[0]; - if (latest && !latest.displayed) { - actions.markNewsAsDisplayed([latest.id]); - } - } - sync( - document.body, - m$1(Body$1, {data: data, actions: actions, fonts: fonts}) - ); - } - async function start() { - const connector = new Connector(); - window.addEventListener("unload", () => connector.disconnect(), { - passive: true - }); - const [data, fonts] = await Promise.all([ - connector.getData(), - getFontList() - ]); - renderBody(data, fonts, connector); - connector.subscribeToChanges((data) => - renderBody(data, fonts, connector) - ); - } - addEventListener("load", start, {passive: true}); - document.documentElement.classList.toggle("mobile", isMobile); - document.documentElement.classList.toggle("firefox", isFirefox); -})(); diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/popup/style.css b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/popup/style.css deleted file mode 100644 index 5342e91..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/popup/style.css +++ /dev/null @@ -1,2872 +0,0 @@ -@font-face { - font-family: "Open Sans"; - src: url("../assets/fonts/OpenSans-Regular.ttf") format("truetype"); - font-weight: normal; - font-style: normal; -} -@font-face { - font-family: "Open Sans"; - src: url("../assets/fonts/OpenSans-SemiBold.ttf") format("truetype"); - font-weight: bold; - font-style: normal; -} -@font-face { - font-family: "Open Sans"; - src: url("../assets/fonts/OpenSans-Light.ttf") format("truetype"); - font-weight: 100; - font-style: normal; -} -.button { - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - color: #ffffff; - cursor: pointer; - display: inline-block; - height: 1.5rem; - line-height: 0.75rem; - min-width: 1.5rem; - outline: none; - overflow: hidden; - padding: 0; - text-align: center; - transition: background-color 250ms; - -moz-user-select: none; - user-select: none; -} -.button:hover { - background-color: #193945; - transition: background-color 125ms; -} -.button:active { - background-color: #316e7d; -} -.button__wrapper { - height: 100%; - width: 100%; -} -.check-button .checkbox { - width: calc(100% - 2 * 0.125rem); -} -.check-button .checkbox__checkmark { - background-color: #316e7d; -} -.check-button .checkbox__checkmark::before, -.check-button .checkbox__checkmark::after { - display: none; -} -.check-button .checkbox__content { - align-items: center; - display: flex; - flex: auto; - height: 1.5rem; - justify-content: center; - -moz-user-select: none; - user-select: none; -} -.check-button .checkbox__input:checked ~ * { - color: #ffffff; -} -.check-button .checkbox__input:checked ~ .checkbox__checkmark { - background-image: url('data:image/svg+xml;utf8,'); - background-position: center; - background-repeat: no-repeat; - background-size: 1rem; -} -.check-button__description { - display: inline-block; - font-size: 0.625rem; - line-height: 0.875rem; - text-align: center; - -moz-user-select: none; - user-select: none; - width: 100%; -} -.checkbox { - align-items: stretch; - background-color: #141e24; - border: 0.125rem solid #316e7d; - cursor: pointer; - display: inline-flex; - flex: none; - flex-direction: row; - height: 1.5rem; - transition: background-color 250ms; - width: 1.5rem; -} -.checkbox:hover { - background-color: #193945; - transition: background-color 125ms; -} -.checkbox__input { - display: none; -} -.checkbox__checkmark { - display: inline-block; - height: 100%; - position: relative; - width: 1.5rem; -} -.checkbox__checkmark::before, -.checkbox__checkmark::after { - background-color: #316e7d; - content: ""; - display: inline-block; - height: 0.1875rem; - left: 0.1875rem; - position: absolute; - top: 0.6375rem; - transition: all 125ms; - width: 1.125rem; -} -.checkbox__checkmark::before { - transform: skewY(45deg); -} -.checkbox__checkmark::after { - transform: skewY(-45deg); -} -.checkbox__input:checked + .checkbox__checkmark::before, -.checkbox__input:checked + .checkbox__checkmark::after { - background-color: #ffffff; -} -.checkbox__input:checked + .checkbox__checkmark::before { - top: 0.825rem; - width: 0.375rem; -} -.checkbox__input:checked + .checkbox__checkmark::after { - left: 0.5625rem; - width: 0.75rem; -} -.control-group { - align-items: stretch; - display: inline-flex; - flex-direction: column; - width: 100%; -} -.control-group__control { - height: 1.75rem; -} -.control-group__description { - font-size: 0.625rem; - line-height: 0.875rem; - text-align: center; - -moz-user-select: none; - user-select: none; -} -.dropdown { - display: inline-block; - height: 1.5rem; - position: relative; - -moz-user-select: none; - user-select: none; - width: 100%; -} -.dropdown__selected { - align-items: center; - background-color: #316e7d; - background-image: url('data:image/svg+xml;utf8,'); - background-position: center right 0.25rem; - background-repeat: no-repeat; - background-size: 1rem; - color: #ffffff; - display: inline-flex; - height: 1.25rem; - justify-content: center; - line-height: 1.25rem; - margin-top: 0.125rem; - position: absolute; - text-align: center; - width: 100%; -} -.dropdown__selected__text { - display: inline-block; - max-width: calc(100% - 2.5rem); - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.dropdown__list { - background-color: #141e24; - border: 0.125rem solid #316e7d; - border-top: none; - box-shadow: 0 0 0.25rem black; - box-sizing: border-box; - display: none; - margin-top: 0.125rem; - overflow: hidden; - position: absolute; - width: 100%; -} -.dropdown__list__item { - align-items: center; - background-color: #141e24; - color: #ffffff; - display: inline-flex; - justify-content: center; - min-height: 1.25rem; - text-align: center; - width: 100%; -} -.dropdown__list__item:hover { - background-color: #193945; - transition: background-color 125ms; -} -.dropdown__list__item--selected { - overflow: hidden; - visibility: hidden; - white-space: nowrap; -} -.dropdown--open .dropdown__list { - display: inline-block; - margin-top: 0rem; - z-index: 1; -} -.dropdown--open .dropdown__list__item { - min-height: 1.5rem; -} -.dropdown--open .dropdown__selected { - height: 1.5rem; - margin-top: 0rem; - z-index: 2; -} -.preview .dropdown { - cursor: pointer; -} -.message-box { - background-color: #141e24; - border-bottom: 0.125rem solid #316e7d; - border-top: 0.125rem solid #316e7d; - display: flex; - flex-direction: column; - padding: 0.75rem; -} -.message-box__caption { - text-align: center; -} -.message-box__buttons { - display: flex; - flex-direction: row; - justify-content: center; - margin-top: 0.5rem; -} -.message-box__button { - min-width: 4rem; -} -.message-box__button:not(:first-child) { - margin-left: 0.5rem; -} -.message-box__button-ok { - border-color: gray; -} -.multi-switch { - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - color: #ffffff; - display: inline-flex; - height: 1.5rem; - position: relative; - -moz-user-select: none; - user-select: none; -} -.multi-switch__option { - align-items: center; - cursor: pointer; - display: inline-flex; - justify-content: center; - height: 100%; - overflow: hidden; - position: relative; - transition: background-color 250ms; - white-space: nowrap; - width: 50%; -} -.multi-switch__option:hover:not(.multi-switch__option--selected) { - background-color: #193945; -} -.multi-switch__highlight { - background-color: #316e7d; - display: inline-block; - height: 100%; - left: 0; - position: absolute; - top: 0; - transition: - left 125ms, - width 125ms; - width: 0; -} -.overlay { - align-items: center; - background-color: rgba(20, 30, 36, 0.5); - flex-direction: column; - display: inline-flex; - height: 100%; - justify-content: center; - left: 0; - position: fixed; - top: 0; - width: 100%; - z-index: 2; -} -.overlay:empty { - display: none; -} -.shortcut { - color: #53a1b3; - cursor: pointer; - display: inline-block; - font-size: 0.625rem; - line-height: 0.875rem; - outline: none; - text-align: center; - text-decoration: none; - white-space: pre; -} -.shortcut:hover { - text-decoration: underline; -} -.shortcut--edit { - color: #ffffff; -} -.shortcut::before { - content: "✎"; - direction: rtl; - display: inline-block; - line-height: 0.875rem; - visibility: hidden; - width: 0; -} -.shortcut:hover::before, -.shortcut--edit::before { - visibility: visible; -} -.tab-panel { - align-items: stretch; - display: flex; - flex-direction: column; - min-height: 0; -} -.tab-panel__button { - border-bottom: 0.125rem solid #316e7d; - border-left: none; - border-right: none; - border-top: none; - box-sizing: border-box; - color: #316e7d; - font-size: 0.875rem; - font-weight: bold; - height: 1.625rem; - padding: 0 0.625rem; - white-space: pre; -} -.tab-panel__button:hover { - color: #53a1b3; -} -.tab-panel__button:active { - background-color: #193945; -} -.tab-panel__button--active { - border-bottom: none; - border-left: 0.125rem solid #316e7d; - border-right: 0.125rem solid #316e7d; - border-top: 0.125rem solid #316e7d; - color: #e96c4c; - padding: 0 0.5rem; -} -.tab-panel__button--active:hover { - color: #e96c4c; -} -.tab-panel__buttons { - display: flex; - flex: none; - flex-direction: row; - justify-content: center; -} -.tab-panel__buttons::before, -.tab-panel__buttons::after { - border-bottom: 0.125rem solid #316e7d; - content: ""; - flex: auto; -} -.tab-panel__tabs { - display: flex; - flex: auto; - flex-direction: row; - margin-top: 0.75rem; - min-height: 0; -} -.tab-panel__tab { - background-color: #141e24; - display: flex; - opacity: 0; - overflow: hidden; - pointer-events: none; - transition: - width 250ms, - opacity 125ms; - width: 0; -} -.tab-panel__tab--active { - opacity: 1; - pointer-events: all; - transition: - width 250ms, - opacity 250ms; - width: 100%; -} -.select { - display: inline-flex; - flex-direction: column; - position: relative; -} -.select__line { - display: inline-flex; - flex-direction: row; -} -.select__textbox.textbox { - border-right: none; - flex: auto; - width: 100%; -} -.select__expand { - border-left: none; - flex: none; -} -.select__expand__icon { - display: inline-block; - height: 100%; - position: relative; - width: 100%; -} -.select__expand__icon::before, -.select__expand__icon::after { - background-color: #ffffff; - content: ""; - display: inline-block; - height: 0.1875rem; - position: absolute; - top: 0.75rem; - width: 0.5625rem; - z-index: 1; -} -.select__expand__icon::before { - left: 0.1875rem; - transform: skewY(45deg); -} -.select__expand__icon::after { - left: 0.75rem; - transform: skewY(-45deg); -} -.select__list { - background-color: #141e24; - border-bottom: 0.125rem solid #316e7d; - border-left: 0.125rem solid #316e7d; - border-right: 0.125rem solid #316e7d; - box-sizing: border-box; - left: 0; - max-height: 0; - overflow-x: hidden; - overflow-y: auto; - position: absolute; - top: calc(100% - 0.125rem); - transition: max-height 125ms; - width: 100%; - z-index: 999; -} -.select__list--expanded { - max-height: 12rem; - transition: max-height 500ms; -} -.select__list--short { - overflow: hidden; -} -.select__option { - align-items: center; - background-color: #141e24; - cursor: pointer; - display: flex; - flex: none; - height: 1.5rem; - flex-direction: row; - padding-left: 0.375rem; -} -.select__option:hover { - background-color: #193945; -} -.slider { - display: inline-block; - height: 1.5rem; - position: relative; - touch-action: none; - width: 100%; -} -.slider__track { - background-color: #193945; - display: inline-block; - height: 0.625rem; - margin-left: 0.25rem; - margin-top: 0.4375rem; - position: absolute; - width: calc(100% - 0.5rem); -} -.slider__track__fill { - background-color: #316e7d; - display: inline-block; - height: 100%; - position: absolute; -} -.slider__track__fill::before { - background-color: #316e7d; - content: ""; - height: 100%; - position: absolute; - right: 100%; - width: 0.25rem; -} -.slider__track::before, -.slider__track::after { - background-color: #193945; - content: ""; - height: 100%; - position: absolute; - width: 0.25rem; -} -.slider__track::before { - right: 100%; -} -.slider__track::after { - left: 100%; -} -.slider__thumb-wrapper { - margin-left: 0.25rem; - position: absolute; - width: calc(100% - 0.5rem); -} -.slider__thumb { - background-color: #ffffff; - cursor: pointer; - display: inline-block; - height: 1.25rem; - margin-left: -0.25rem; - margin-top: 0.125rem; - position: absolute; - width: 0.5rem; -} -.slider__thumb__value { - color: #ffffff; - cursor: default; - left: calc(100% + 0.75rem / 2); - line-height: 1.25rem; - position: absolute; - -moz-user-select: none; - user-select: none; -} -.slider__thumb__value--flip { - left: initial; - right: calc(100% + 0.75rem / 2); -} -.slider--active .slider__thumb { - box-shadow: 0 0 0.25rem black; - height: 1.5rem; - margin-top: 0rem; -} -.slider--active .slider__thumb__value { - line-height: 1.5rem; -} -.slider--active .slider__track { - height: 0.75rem; - margin-top: 0.375rem; -} -.slider__value { - display: none; -} -.text-list { - border-top: 0.125rem solid #316e7d; - margin-bottom: 0.0625rem; - min-width: 1.5rem; - overflow-x: hidden; - overflow-y: auto; -} -.text-list__textbox.textbox { - border-bottom: 0.0625rem solid #316e7d; - border-left: 0.125rem solid #316e7d; - border-right: 0.125rem solid #316e7d; - border-top: none; - box-sizing: border-box; - flex: none; - height: 1.5625rem; - width: 100%; -} -.text-list__textbox.textbox:last-child { - border-bottom: 0.125rem solid #316e7d; -} -.text-list::-webkit-scrollbar { - width: 1.25rem; -} -.text-list::-webkit-scrollbar-thumb { - border-left: 0.5rem solid #141e24; -} -.textbox { - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - color: #53a1b3; - height: 1.5rem; - line-height: 1.5rem; - outline: none; - overflow: hidden; - padding: 0; - text-indent: 0.375rem; - transition: background-color 250ms; -} -.textbox:hover, -.textbox:focus { - background-color: #193945; - transition: background-color 125ms; -} -.textbox:focus { - color: #ffffff; -} -.textbox::placeholder { - color: #316e7d; -} -input[type="time"]::-webkit-calendar-picker-indicator { - filter: invert(54%) sepia(3%) saturate(3931%) hue-rotate(153deg) - brightness(115%) contrast(75%); -} -.time-range-picker { - display: inline-flex; - flex: auto; -} -.time-range-picker__input { - text-align: center; - text-indent: 0; - width: 100%; - background-color: #141e24; -} -.time-range-picker__input--start { - border-right: none; -} -.time-range-picker__input--end { - border-left: 0.0625rem solid #316e7d; -} -.toggle { - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - color: #ffffff; - display: inline-flex; - height: 1.5rem; - position: relative; - -moz-user-select: none; - user-select: none; -} -.toggle__btn { - align-items: center; - cursor: pointer; - display: inline-flex; - justify-content: center; - height: 100%; - overflow: hidden; - position: relative; - transition: background-color 250ms; - white-space: nowrap; - width: 50%; -} -.toggle__btn:hover:not(.toggle__btn--active) { - background-color: #193945; -} -.toggle::before { - background-color: #316e7d; - content: ""; - display: inline-block; - height: 100%; - left: 50%; - position: absolute; - top: 0; - transition: left 125ms; - width: 50%; -} -.toggle--checked::before { - left: 0; -} -.updown { - align-items: stretch; - display: flex; - flex-direction: column; - -moz-user-select: none; - user-select: none; -} -.updown__line { - display: flex; - flex-direction: row; -} -.updown__line > :not(:first-child) { - margin-left: 0.5rem; -} -.updown__icon { - display: inline-block; - height: 100%; - position: relative; - width: 100%; -} -.updown__icon::before, -.updown__icon::after { - background-color: #ffffff; - content: ""; - display: inline-block; - height: 0.5625rem; - position: absolute; - width: 0.1875rem; -} -.updown__icon::before { - top: 0.1875rem; -} -.updown__icon::after { - top: 0.75rem; -} -.updown__icon-up::before { - left: 0.75rem; - transform: skewX(45deg); -} -.updown__icon-up::after { - left: 0.75rem; - transform: skewX(-45deg); -} -.updown__icon-down::before { - left: 0.5625rem; - transform: skewX(-45deg); -} -.updown__icon-down::after { - left: 0.5625rem; - transform: skewX(45deg); -} -.updown__button--disabled { - pointer-events: none; -} -.updown__button--disabled:hover, -.updown__button--disabled:active { - background-color: #141e24; -} -.updown__button--disabled .updown__icon::before, -.updown__button--disabled .updown__icon::after { - background-color: #316e7d; -} -.updown__value-text { - font-size: 0.625rem; - line-height: 0.875rem; - text-align: center; - white-space: nowrap; -} -.track { - align-items: center; - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - display: inline-flex; - flex: auto; - flex-direction: row; - height: 1.5rem; - justify-content: center; - overflow: hidden; - position: relative; - transition: background-color 250ms; - -moz-user-select: none; - user-select: none; -} -.track:hover { - background-color: #193945; - transition: background-color 125ms; -} -.track--clickable { - cursor: pointer; -} -.track__value { - background-color: #316e7d; - height: 100%; - left: 0; - position: absolute; - top: 0; - transition: width 125ms; -} -.track__label { - color: #ffffff; - display: inline-block; - line-height: 0.75rem; - pointer-events: none; - position: relative; - white-space: nowrap; - z-index: 1; -} -.hsb-picker { - display: flex; - flex-direction: row; - padding: 0.5rem; - touch-action: none; -} -.hsb-picker__sb-container { - cursor: pointer; - height: 7.5rem; - position: relative; - -webkit-tap-highlight-color: transparent; - width: 7.5rem; -} -.hsb-picker__hue-container { - cursor: pointer; - height: 7.5rem; - margin-left: 0.5rem; - position: relative; - -webkit-tap-highlight-color: transparent; - width: 0.75rem; -} -.hsb-picker__sb-canvas { - height: 100%; - width: 100%; -} -.hsb-picker__hue-canvas { - height: 100%; - width: 100%; -} -.hsb-picker__hue-cursor, -.hsb-picker__sb-cursor { - border-radius: 50%; - box-shadow: 0 0 0 0.125rem #ffffff; - display: inline-block; - height: 0.75rem; - margin-top: -0.375rem; - position: absolute; - width: 0.75rem; - z-index: 2; -} -.hsb-picker__sb-cursor { - margin-left: -0.375rem; -} -.color-picker { - height: 1.5rem; - position: relative; - width: 100%; -} -.color-picker__wrapper { - background-color: #141e24; - display: inline-flex; - flex-direction: column; - left: 0; - overflow: hidden; - position: absolute; - top: 0; - width: 100%; -} -.color-picker--focused .color-picker__wrapper { - border: 0.125rem solid #316e7d; - box-sizing: border-box; - z-index: 1; -} -.color-picker__input { - background-color: #316e7d; - border: none; - box-sizing: border-box; - color: #ffffff; - height: 1.25rem; - margin-top: 0.125rem; - text-align: center; - width: 100%; -} -.color-picker--focused .color-picker__input { - margin-top: 0; -} -.color-picker__preview { - cursor: pointer; - display: inline-block; - height: 1rem; - left: 0.25rem; - position: absolute; - top: 0.25rem; - width: 1rem; -} -.color-picker--focused .color-picker__preview { - left: 0.125rem; - top: 0.125rem; -} -.color-picker__reset { - background-image: url('data:image/svg+xml;utf8,'); - background-position: 0 0; - background-repeat: no-repeat; - background-size: 1rem; - cursor: pointer; - display: inline-block; - height: 1rem; - position: absolute; - right: 0.25rem; - top: 0.25rem; - width: 1rem; -} -.color-picker--focused .color-picker__reset { - right: 0.125rem; - top: 0.125rem; -} -.color-picker__textbox-line { - width: 100%; -} -.color-picker__hsb-line { - display: none; - width: 100%; -} -.color-picker--focused .color-picker__hsb-line { - border-color: #316e7d; - display: block; -} -.color-dropdown { - height: 1.5rem; - position: relative; - width: 100%; -} -.color-dropdown__options { - width: 100%; -} -.color-dropdown__picker { - height: 100%; - position: absolute; - right: 0; - top: 0; - width: 100%; -} -.color-dropdown__picker--hidden { - display: none; -} -.nav-button { - background-image: url('data:image/svg+xml;utf8,'); - background-position: center right 0.25rem; - background-repeat: no-repeat; - background-size: 1rem; - width: calc(100% - 2 * 0.125rem); -} -.nav-button__content { - align-items: center; - display: inline-flex; - flex-direction: row; - height: 100%; -} -.reset-button { - width: calc(100% - 2 * 0.125rem); -} -.reset-button__content { - align-items: center; - display: inline-flex; - flex-direction: row; - height: 100%; -} -.reset-button__icon { - background-image: url('data:image/svg+xml;utf8,'); - background-position: 0 0; - background-size: 1rem; - display: inline-block; - height: 1rem; - margin-right: 0.125rem; - width: 1rem; -} -html { - background-color: #141e24; - color: #53a1b3; - color-scheme: dark; - font-family: - Open Sans, - Segoe UI, - Helvetica Neue, - Ubuntu, - sans-serif; - font-size: 16px; -} -body { - font-family: - Open Sans, - Segoe UI, - Helvetica Neue, - Ubuntu, - sans-serif; - font-size: 0.75rem; -} -input, -button { - font-family: - Open Sans, - Segoe UI, - Helvetica Neue, - Ubuntu, - sans-serif; - font-size: 0.75rem; -} -::-moz-selection { - background-color: #e96c4c; - color: #ffffff; -} -::selection { - background-color: #e96c4c; - color: #ffffff; -} -::-webkit-scrollbar { - background-color: #141e24; - width: 0.75rem; -} -::-webkit-scrollbar-thumb { - background-color: #193945; -} -::-webkit-scrollbar-thumb:hover { - background-color: #255461; -} -::-webkit-scrollbar-thumb:active { - background-color: #316e7d; -} -::-webkit-scrollbar-corner { - background-color: #141e24; -} -* { - scrollbar-color: #193945 #141e24; -} -.custom-settings-toggle { - color: #53a1b3; - white-space: normal; -} -.custom-settings-toggle--checked, -.custom-settings-toggle:active, -.custom-settings-toggle--checked:hover { - background-color: #316e7d; - color: #75b4c2; - transition: - background-color 125ms, - color 125ms; -} -.custom-settings-toggle--disabled { - opacity: 0.5; - pointer-events: none; -} -.custom-settings-toggle__url { - color: #ffffff; - -moz-user-select: none; - user-select: none; -} -.custom-settings-toggle .button__wrapper { - align-items: center; - display: inline-flex; - justify-content: center; - min-width: 14.75rem; -} -.engine-switch { - align-items: stretch; - display: flex; - flex-direction: column; - position: relative; -} -.engine-switch__description { - font-size: 0.625rem; - line-height: 0.875rem; - text-align: center; - white-space: nowrap; -} -.engine-switch__css-edit-button { - background-color: #e96c4c; - border-radius: 0.4375rem; - color: #ffffff; - cursor: pointer; - display: none; - font-size: 0.625rem; - line-height: 0.875rem; - min-width: 0.875rem; - position: absolute; - right: 0; - text-align: center; - top: -0.21875rem; -} -.engine-switch__css-edit-button_active { - display: inline-block; -} -.engine-switch__css-edit-button::before { - content: "✎"; - line-height: 0.875rem; -} -.engine-switch__css-edit-button:hover { - box-shadow: 0 0 0.75rem #ffffff; -} -.filter-settings { - align-items: stretch; - display: flex; - flex-direction: column; - width: 100%; -} -.filter-settings > :not(:first-child) { - margin-top: 0.5rem; -} -.filter-settings__content { - align-items: center; - display: flex; - flex: auto; - flex-direction: column; - justify-content: center; -} -.mode-toggle { - align-items: stretch; - display: flex; - flex-direction: column; - -moz-user-select: none; - user-select: none; -} -.mode-toggle__line { - display: flex; - flex-direction: row; -} -.mode-toggle__line > :not(:first-child) { - margin-left: 0.5rem; -} -.mode-toggle .toggle { - flex: auto; -} -.mode-toggle__label { - font-size: 0.625rem; - line-height: 0.875rem; - text-align: center; -} -.mode-toggle__button--active { - background: #316e7d; -} -.mode-toggle__button--active:hover { - background: #316e7d; -} -.icon { - background-size: contain; - display: inline-block; - height: 100%; - width: 100%; -} -.icon--dark-mode { - background-image: url(../assets/images/mode-dark-32.svg); -} -.icon--light-mode { - background-image: url(../assets/images/mode-light-32.svg); -} -.font-settings { - display: flex; - flex-direction: column; - width: 100%; -} -.font-settings__font-select-container { - display: flex; - flex-direction: column; -} -.font-settings__font-select-container__line { - display: flex; - flex-direction: row; -} -.font-settings__font-select-container__line > :not(:first-child) { - margin-left: 0.5rem; -} -.font-settings__font-select-container__line .select { - flex: auto; -} -.font-settings__font-select-container__label { - font-size: 0.625rem; - line-height: 0.875rem; - text-align: center; - white-space: nowrap; -} -.font-settings > :not(:first-child) { - margin-top: 0.5rem; -} -.header { - display: grid; - grid: "logo logo" "site-toggle app-toggle" / 5.5fr 4.5fr; - grid-gap: 0.5rem; - width: 100%; -} -.header__logo { - background-image: url("../assets/images/darkreader-type.svg"); - background-size: 100%; - grid-area: logo; - height: 1.5rem; - outline: none; - text-indent: -999rem; - width: 15rem; -} -.header__logo:hover { - filter: brightness(1.05); -} -.header__control { - display: flex; - flex-direction: column; -} -.header__site-toggle { - grid-area: site-toggle; - min-width: 0; -} -.header__app-toggle { - grid-area: app-toggle; - min-width: 0; - position: relative; -} -.header__app-toggle__time { - background-color: #e96c4c; - border-radius: 50%; - color: #ffffff; - cursor: pointer; - display: none; - height: 0.875rem; - pointer-events: none; - position: absolute; - right: -0.21875rem; - top: -0.21875rem; - transition: opacity 250ms 250ms; - width: 0.875rem; -} -.header__app-toggle__time--active { - display: inline-block; -} -.header__more-settings-button { - cursor: pointer; - font-size: 0.625rem; - line-height: 0.875rem; - text-align: center; - user-select: none; -} -.header__more-settings-button:hover { - text-decoration: underline; -} -.header__more-settings-button__icon { - height: 0.625rem; - margin-right: 0.125rem; - position: relative; - top: 0.0625rem; - width: 0.625rem; -} -.header__more-settings-button__icon g { - fill: #53a1b3; -} -.header__more-settings-button--off { - color: #e96c4c; -} -.header__more-settings-button--off .header__more-settings-button__icon g { - fill: #e96c4c; -} -.header__more-site-settings { - height: 14.5rem; -} -.header__more-toggle-settings { - height: 18rem; -} -.header__more-settings { - background-color: rgba(20, 30, 36, 0.9); - border-bottom: 0.125rem solid #316e7d; - border-top: 0.125rem solid #316e7d; - display: flex; - flex-direction: column; - left: 0; - position: absolute; - top: 6.875rem; - transition: all 250ms; - width: 100%; - z-index: 999; -} -.header__more-settings:not(.header__more-settings--expanded) { - height: 0; - opacity: 0; - pointer-events: none; -} -.header__more-settings__top { - align-items: center; - color: #e96c4c; - display: flex; - flex: auto; - font-size: 0.875rem; - height: 1.5rem; - justify-content: space-between; - overflow: hidden; - padding-left: 1rem; -} -.header__more-settings__top__text { - line-height: 1rem; -} -.header__more-settings__top__close { - color: #e96c4c; - cursor: pointer; - display: inline-block; - font-size: 1.125rem; - height: 1.5rem; - line-height: 1.5rem; - text-align: center; - user-select: none; - width: 1.5rem; -} -.header__more-settings__top__close:hover { - background-color: rgba(49, 110, 125, 0.25); -} -.header__more-settings__content { - flex: auto; - overflow: hidden; - padding: 0.75rem 1rem; - transition: padding 250ms; -} -.header__more-settings__line { - display: flex; - flex-direction: row; -} -.header__more-settings__line .checkbox { - border-right: none; - flex: none; -} -.header__more-settings__line - .time-range-picker - .time-range-picker__input--start { - border-left: 0.0625rem solid #316e7d; -} -.header__more-settings__description { - font-size: 0.625rem; - line-height: 0.875rem; - margin: 0; - text-align: center; - white-space: nowrap; -} -.header__more-settings__warning { - font-size: 0.625rem; - line-height: 0.875rem; - margin: 0; - text-align: center; - white-space: pre; - color: #e96c4c; -} -.header__more-settings__location-description { - font-size: 0.625rem; - line-height: 0.875rem; - margin: 0; - text-align: center; - white-space: nowrap; -} -.header__more-settings::after { - background-image: linear-gradient( - to bottom, - rgba(20, 30, 36, 0.9), - rgba(20, 30, 36, 0) - ); - content: ""; - display: block; - height: 1.5rem; - left: 0; - margin-top: 0.125rem; - pointer-events: none; - position: absolute; - top: 100%; - transition: height 250ms; - width: 100%; -} -.header__more-settings__location { - margin-top: 0.5rem; -} -.header__more-settings__location__latitude, -.header__more-settings__location__longitude { - flex: auto; - text-align: center; - text-indent: 0; - width: 100%; -} -.header__more-settings__location__latitude { - border-left: 0.0625rem solid #316e7d; - border-right: none; -} -.header__more-settings__location__longitude { - border-left: 0.0625rem solid #316e7d; -} -.header__more-settings__system-dark-mode { - display: flex; - flex-direction: row; - margin-top: 0.5rem; -} -.header__more-settings__system-dark-mode__checkbox { - flex: none; -} -.header__more-settings__system-dark-mode__button { - border-left-width: 0.0625rem; - flex: auto; -} -.header__more-settings__system-dark-mode__button:not( - .header__more-settings__system-dark-mode__button--active - ) { - color: #53a1b3; -} -.header__more-settings__system-dark-mode:hover - .header__more-settings__system-dark-mode__button, -.header__more-settings__system-dark-mode:hover - .header__more-settings__system-dark-mode__checkbox { - background-color: #193945; -} -.header__more-settings__shortcut-wrapper { - display: inline-block; - height: 1.75rem; - margin-top: 0.5rem; - position: relative; - width: 100%; -} -.header__more-settings__shortcut-wrapper svg { - --icon-color: #316e7d; - border-right: 0.0625rem solid #316e7d; - height: 1.5rem; - left: 0.125rem; - pointer-events: none; - position: absolute; - top: 0.125rem; - width: 1.5rem; -} -.header__more-settings__shortcut-wrapper--set svg { - --icon-color: #ffffff; -} -.header__more-settings__shortcut { - background-color: #141e24; - border: 0.125rem solid #316e7d; - font-size: 0.75rem; - height: 1.5rem; - line-height: 1.5rem; - padding-left: 1.5rem; - position: relative; - transition: all 125ms; - white-space: nowrap; - width: calc(100% - 2 * 0.125rem - 1.5rem); -} -.header__more-settings__shortcut:hover { - background-color: #193945; - text-decoration: none; -} -.header__more-settings__shortcut:hover::before { - display: none; -} -.header__more-settings__enabled-by-default { - display: flex; - flex-direction: row; -} -.header__more-settings__enabled-by-default__checkbox { - flex: none; -} -.header__more-settings__enabled-by-default__button { - border-left-width: 0.0625rem; - flex: auto; -} -.header__more-settings__enabled-by-default__button:not( - .header__more-settings__enabled-by-default__button--active - ) { - color: #53a1b3; -} -.header__more-settings__enabled-by-default:hover - .header__more-settings__enabled-by-default__button, -.header__more-settings__enabled-by-default:hover - .header__more-settings__enabled-by-default__checkbox { - background-color: #193945; -} -.header__more-settings__detect-dark-theme { - display: flex; - flex-direction: row; - margin-top: 0.5rem; -} -.header__more-settings__detect-dark-theme__checkbox { - flex: none; -} -.header__more-settings__detect-dark-theme__button { - border-left-width: 0.0625rem; - flex: auto; -} -.header__more-settings__detect-dark-theme__button:not( - .header__more-settings__detect-dark-theme__button--active - ) { - color: #53a1b3; -} -.header__more-settings__detect-dark-theme:hover - .header__more-settings__detect-dark-theme__button, -.header__more-settings__detect-dark-theme:hover - .header__more-settings__detect-dark-theme__checkbox { - background-color: #193945; -} -.header__more-settings__donate { - margin-top: 0.5rem; -} -.header__more-settings__donate .donate-link { - width: 100%; -} -.header .shortcut { - overflow: hidden; -} -.header__more-new-highlight { - height: 2rem; - pointer-events: none; - position: absolute; - right: 0rem; - top: 5.75rem; - width: 17rem; -} -.header__more-new-highlight__text { - background: #e96c4c; - bottom: 0; - color: #ffffff; - display: inline-block; - line-height: 0.75rem; - padding: 0.25rem; - position: absolute; - right: 0.5rem; -} -.header__more-new-highlight__lines path { - fill: none; - stroke: #e96c4c; - stroke-linecap: round; - stroke-linejoin: round; - stroke-width: 2; -} -.header__more-new-highlight__lines circle { - fill: #e96c4c; - stroke: none; -} -.loader { - background-color: #141e24; - height: 32rem; - left: 50%; - pointer-events: none; - position: fixed; - top: 50%; - transform: translate(-50%, -50%); - transition: background-color 125ms ease-out; - width: 17rem; - z-index: 999; -} -.loader--complete { - background-color: rgba(20, 30, 36, 0); -} -.loader--complete::before { - opacity: 0; - transition: opacity 125ms ease-in; -} -.loader--transition-end { - display: none; -} -.loader::before { - animation: - 2s loading-slide 500ms ease-in-out infinite, - 4s 500ms loading-color linear infinite; - background-color: #316e7d; - content: ""; - display: block; - height: 0.0625rem; - left: 0%; - position: absolute; - top: 3rem; - width: 0%; -} -.loader__message { - animation: 125ms loading-fade-in 500ms ease-in forwards; - color: #e96c4c; - font-size: 0.625rem; - opacity: 0; - position: absolute; - right: 1rem; - bottom: 29rem; -} -.loader__error { - font-size: 0.75rem; -} -.loader--complete .loader__message { - color: rgba(233, 108, 76, 0); - transition: color 125ms ease-out; -} -@keyframes loading-slide { - 0% { - left: 0%; - width: 0%; - } - 50% { - left: 0%; - width: 100%; - } - 100% { - left: 100%; - width: 0%; - } -} -@keyframes loading-color { - 0%, - 49% { - background-color: #316e7d; - } - 50%, - 100% { - background-color: #e96c4c; - } -} -@keyframes loading-fade-in { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -.more-settings { - display: flex; - flex-direction: column; - width: 100%; -} -.more-settings__description { - font-size: 0.625rem; - line-height: 0.875rem; - margin: 0 0 0.125rem 0; - min-width: 100%; - overflow: hidden; - text-align: center; - white-space: pre; -} -.more-settings__description--warning { - color: #e96c4c; -} -.more-settings__warning { - color: #e96c4c; - white-space: pre; -} -.more-settings__section { - align-items: stretch; - display: flex; - flex-direction: column; -} -.more-settings__section:not(:first-child) { - margin-top: 0.75rem; -} -.more-settings__settings-button__wrapper { - align-items: center; - display: inline-flex; - flex-direction: row; - flex-wrap: nowrap; - gap: 0.25rem; - justify-content: center; -} -.more-settings__settings-button__icon { - display: inline-block; - height: 1rem; - width: 1rem; -} -.more-settings__settings-button__text { - display: inline-block; - white-space: nowrap; -} -.news { - bottom: 2.625rem; - box-sizing: border-box; - display: flex; - flex-direction: column; - left: 0; - max-height: 0; - opacity: 0; - overflow: hidden; - pointer-events: none; - position: absolute; - text-align: left; - transition: all 250ms; - width: 100%; - z-index: 1; -} -.news--expanded { - max-height: 12rem; - opacity: 1; - pointer-events: initial; -} -.news::before { - background-image: linear-gradient(to top, #141e24, rgba(20, 30, 36, 0)); - content: ""; - display: block; - height: 1.5rem; - pointer-events: none; - width: 100%; -} -.news__header { - align-items: flex-end; - background-image: linear-gradient( - to bottom, - rgba(20, 30, 36, 0.9), - rgba(20, 30, 36, 0.95) - ); - border-top: 0.125rem solid #316e7d; - color: #e96c4c; - display: flex; - flex: none; - font-size: 0.875rem; - height: 1.5rem; - justify-content: space-between; - padding-left: 1rem; -} -.news__header__text { - line-height: 1rem; -} -.news__close { - color: #e96c4c; - cursor: pointer; - display: inline-block; - font-size: 1.125rem; - height: 1.5rem; - line-height: 1.5rem; - text-align: center; - user-select: none; - width: 1.5rem; -} -.news__close:hover { - background-color: rgba(49, 110, 125, 0.25); -} -.news__list { - background-color: rgba(20, 30, 36, 0.95); - border-bottom: 0.125rem solid #316e7d; - flex: auto; - padding: 0.75rem 1rem; - position: relative; -} -.news__list > :not(:first-child) { - margin-top: 0.5rem; -} -.news__event { - color: #53a1b3; - display: block; - flex: none; - position: relative; -} -.news__event__date { - display: block; - font-size: 0.625rem; -} -.news__event__link { - color: inherit; - display: inline-block; - text-decoration: none; -} -.news__event__link:hover { - text-decoration: underline; -} -.news__event__icon { - background-position: center; - background-repeat: no-repeat; - background-size: contain; - display: inline-block; - height: 2.5rem; - left: 0; - position: absolute; - top: calc(50% - 2.5rem / 2); - width: 2.5rem; -} -.news__event--has-icon { - padding-left: 3rem; -} -.news__event--unread { - font-weight: bold; -} -.news__event--unread:first-child { - color: #e96c4c; -} -.news__event--important { - color: #e96c4c; -} -.news__event--important.news__event--unread::before { - background-color: #e96c4c; - content: ""; - height: 100%; - position: absolute; - right: calc(100% + 0.75rem / 2); - text-align: center; - top: 0; - width: 0.125rem; -} -.news__read-more { - color: inherit; - display: block; - text-decoration: none; -} -.news__read-more:hover { - text-decoration: underline; -} -.news__read-more--unread { - font-weight: bold; -} -.news-button { - overflow: visible; - position: relative; -} -.news-button--active { - border-top: none; - padding-top: 0.125rem; - z-index: 2; -} -.news-button::after { - background-color: #e96c4c; - border-radius: 0.4375rem; - color: #ffffff; - content: attr(data-count); - font-size: 0.625rem; - line-height: 0.875rem; - min-width: 0.875rem; - position: absolute; - right: -0.29166667rem; - top: -0.29166667rem; - z-index: 3; -} -.site-list-settings { - align-items: stretch; - display: flex; - flex-direction: column; - min-height: 0; - width: 100%; -} -.site-list-settings__toggle { - border-bottom: none; - flex: none; -} -.site-list-settings__shortcut { - flex: none; - white-space: nowrap; -} -.site-list-settings__text-list { - flex: initial; -} -.site-toggle { - color: #53a1b3; - white-space: normal; -} -.site-toggle--disabled { - opacity: 0.5; - pointer-events: none; -} -.site-toggle__mark svg { - fill: currentColor; - height: 0.75rem; - vertical-align: bottom; - width: 0.75rem; -} -.site-toggle--active { - color: #ffffff; -} -body { - align-items: stretch; - box-sizing: content-box; - display: flex; - flex-direction: column; - height: 30rem; - margin: 0 auto; - padding: 1rem; - position: relative; - width: 15rem; -} -.header { - flex: none; -} -.tab-panel { - flex: auto; - margin-top: 0.75rem; -} -footer { - align-items: stretch; - display: flex; - flex: none; - flex-direction: column; - justify-content: center; - margin-top: 0.75rem; -} -footer p { - margin: 0 0 0.125rem 0; - text-align: center; - white-space: pre; -} -.footer-links { - align-items: stretch; - display: flex; - flex: none; - justify-content: center; - margin-bottom: 0.5rem; -} -.footer-links__link { - color: #53a1b3; - line-height: 1rem; - text-align: center; - text-decoration: none; -} -.footer-links__link:hover { - text-decoration: underline; -} -.footer-links > :not(:first-child) { - margin-left: 0.5rem; -} -.footer-buttons { - align-items: stretch; - display: flex; - flex-direction: row; - justify-content: stretch; - width: 100%; -} -.footer-buttons > * { - flex: auto; -} -.footer-buttons > :not(:first-child) { - margin-left: 0.5rem; -} -.donate-link { - align-items: center; - background-color: #316e7d; - color: #ffffff; - cursor: pointer; - display: inline-flex; - height: 1.75rem; - justify-content: center; - margin: 0; - position: relative; - text-decoration: none; - transition: all 125ms; -} -.donate-link:hover { - box-shadow: 0 0 0.75rem #316e7d; -} -.donate-link__text { - font-weight: bold; - line-height: 0.75rem; - text-align: center; - transform: skewX(-10deg); -} -.dev-tools-button { - overflow: visible; - position: relative; -} -.ext-disabled .site-toggle--disabled { - opacity: 1; -} -.ext-disabled .header__site-toggle, -.ext-disabled .tab-panel { - opacity: 0.5; - pointer-events: none; -} -.ext-disabled .tab-panel__tab--active { - pointer-events: none; -} -.mobile-link { - align-items: center; - background-color: #141e24; - border: 0.125rem solid #316e7d; - border-bottom-left-radius: 1rem; - border-top-left-radius: 1rem; - box-sizing: border-box; - cursor: pointer; - display: flex; - flex-direction: row; - justify-content: space-between; - margin-top: 0.75rem; - position: relative; - text-decoration: none; - user-select: none; -} -.mobile-link__icon { - background-image: url("../assets/images/mobile-icon-40x64.svg"); - background-position: center; - background-repeat: no-repeat; - background-size: cover; - border-radius: 0.4375rem; - display: inline-block; - flex: none; - height: 2.8rem; - left: -0.125rem; - overflow: hidden; - position: absolute; - width: 1.75rem; -} -.mobile-link__text { - color: #ffffff; - flex: auto; - font-weight: bold; - height: 2rem; - line-height: 1rem; - margin: 0.125rem 1rem 0.125rem 2rem; - text-align: center; - overflow: hidden; -} -.mobile-link__text::after { - content: " →"; - font-weight: bold; -} -.mobile-link:hover { - background-color: #193945; -} -.mobile-link:hover .mobile-link__icon { - box-shadow: 0 0 0.5rem #53a1b3; -} -.mobile-link:active { - background-color: #316e7d; -} -.mobile-link { - display: none; -} -.birthday-container { - align-items: stretch; - column-gap: 0.5rem; - display: grid; - grid: "icon message" auto "button button" 1.75rem / 2rem auto; - width: 15rem; -} -.birthday-container .birthday-icon { - background-image: url(../assets/images/birthday-icon.svg); - background-position: center; - background-repeat: no-repeat; - background-size: contain; - display: inline-block; - grid-area: icon; - height: 2rem; - line-height: 2rem; - margin: 0.5rem 0; - text-align: center; - text-indent: -999rem; - width: 2rem; -} -.birthday-container .birthday-message { - align-items: center; - color: #ffffff; - display: flex; - flex-direction: column; - grid-area: message; - height: 3rem; - line-height: 1rem; - justify-content: center; - text-align: left; -} -.birthday-container .birthday-message a { - color: #ffffff; -} -.birthday-container .donate-link { - background-color: #141e24; - background-image: linear-gradient( - 135deg, - #954d6d, - transparent 10%, - transparent 90%, - #31367d - ); - border: 0.125rem solid #316e7d; - box-shadow: none; - box-sizing: border-box; - grid-area: button; - transition: all 250ms; - width: 100%; -} -.birthday-container .donate-link:hover { - background-color: #193945; - box-shadow: none; -} -.footer-help-link { - align-items: center; - background-color: #316e7d; - color: #ffffff; - cursor: pointer; - display: inline-flex; - font-weight: bold; - justify-content: center; - margin: 0; - position: relative; - text-decoration: none; - transition: all 125ms; -} -.footer-help-link::before { - background-color: #ffffff; - border-radius: 50%; - box-sizing: border-box; - color: #316e7d; - content: "?"; - display: inline-block; - font-weight: bold; - height: 1rem; - margin-right: 0.125rem; - text-align: center; - -webkit-text-stroke: 0.0625rem; - width: 1rem; -} -.footer-help-link:hover { - box-shadow: 0 0 0.75rem #316e7d; -} -body { - border: 2px solid white; -} -html:not(.mobile):not(.preview) body { - height: 34rem; -} -.overlay { - height: calc(100% - 4px); - left: 2px; - top: 2px; - width: calc(100% - 4px); -} -.mobile body { - border: none; - height: auto; - position: relative; -} -.mobile .m-section, -.preview .m-section { - width: 100%; -} -.mobile .m-section:not(:first-child), -.preview .m-section:not(:first-child) { - margin-top: 0.75rem; -} -.mobile .m-section > :not(:first-child), -.preview .m-section > :not(:first-child) { - margin-top: 0.5rem; -} -.mobile .pages-section, -.preview .pages-section { - height: 24.4375rem; -} -.mobile .m-logo, -.preview .m-logo { - background-image: url("../assets/images/darkreader-type.svg"); - background-position: center; - background-size: 100%; - display: inline-block; - grid-area: logo; - height: 1.5rem; - margin: 0 auto; - outline: none; - text-indent: -999rem; - width: 15rem; -} -.mobile .m-help-button, -.preview .m-help-button { - align-items: center; - background-image: url('data:image/svg+xml;utf8,'); - background-position: center right 0.25rem; - background-repeat: no-repeat; - background-size: 1rem; - border: 0.125rem solid #316e7d; - display: inline-flex; - justify-content: center; - height: 1.5rem; - text-decoration: none; - width: calc(100% - 2 * 0.125rem); -} -.mobile .m-help-button:hover, -.preview .m-help-button:hover { - background-color: #193945; - transition: background-color 125ms; -} -.mobile .m-help-button__text, -.preview .m-help-button__text { - color: #ffffff; - display: inline-block; - line-height: 1.5rem; - height: 1.5rem; - -moz-user-select: none; - user-select: none; -} -.mobile .m-help-button__text::before, -.preview .m-help-button__text::before { - border: 0.0625rem solid #ffffff; - border-radius: 50%; - color: #ffffff; - content: "?"; - display: inline-block; - font-weight: bold; - height: 0.875rem; - left: 0; - line-height: 0.875rem; - margin-right: 0.25rem; - text-align: center; - top: 0; - width: 0.875rem; -} -.mobile .m-donate-group, -.preview .m-donate-group { - align-items: stretch; - display: flex; - flex-direction: column; -} -.mobile .m-donate-button, -.preview .m-donate-button { - align-items: center; - background-color: #316e7d; - display: inline-flex; - height: 1.75rem; - isolation: isolate; - justify-content: center; - text-decoration: none; - position: relative; - width: 100%; -} -.mobile .m-donate-button__text, -.preview .m-donate-button__text { - color: #ffffff; - display: inline-block; - font-weight: bold; - height: 1.5rem; - line-height: 1.5rem; - text-transform: uppercase; - transform: skewX(-10deg); - -moz-user-select: none; - user-select: none; -} -.mobile .m-donate-button__icon, -.preview .m-donate-button__icon { - display: none; - isolation: isolate; -} -.mobile .m-donate-button__icon::before, -.preview .m-donate-button__icon::before, -.mobile .m-donate-button__icon::after, -.preview .m-donate-button__icon::after { - border-radius: 50%; - content: ""; - display: inline-block; - height: 1rem; - mix-blend-mode: screen; - position: absolute; - top: 0.375rem; - width: 1rem; -} -.mobile .m-donate-button__icon::before, -.preview .m-donate-button__icon::before { - background-color: #e96c4c; - left: 0.375rem; -} -.mobile .m-donate-button__icon::after, -.preview .m-donate-button__icon::after { - background-color: #53a1b3; - left: 1rem; -} -.mobile .m-donate-button:hover, -.preview .m-donate-button:hover { - box-shadow: inset 0 0 0 1px #ffffff88; -} -.mobile .m-donate-description, -.preview .m-donate-description, -.mobile .darkreader-version, -.preview .darkreader-version { - display: inline-block; - font-size: 0.625rem; - line-height: 0.875rem; - text-align: center; - -moz-user-select: none; - user-select: none; - width: 100%; -} -.mobile .darkreader-version, -.preview .darkreader-version { - bottom: 0; - margin-bottom: 0.125rem; - position: absolute; - right: 0; -} -.mobile .darkreader-version { - position: relative; -} -.preview .dev-tools-button { - overflow: visible; - position: relative; - width: calc(100% - 2 * 0.125rem); -} -.mobile .app-switch__control, -.preview .app-switch__control { - width: calc(100% - 0.125rem * 2); -} -.mobile .app-switch__description--on, -.preview .app-switch__description--on { - color: #3bc077; -} -.mobile .app-switch__description--off, -.preview .app-switch__description--off { - color: #e96c4c; -} -.mobile .app-switch__time, -.preview .app-switch__time { - background-color: #e96c4c; - border-radius: 50%; - color: #ffffff; - cursor: pointer; - display: none; - height: 0.875rem; - pointer-events: none; - position: absolute; - right: calc(33% + 0.125rem / 3); - top: -0.21875rem; - transition: opacity 250ms 250ms; - width: 0.875rem; -} -.mobile .app-switch__time--active, -.preview .app-switch__time--active { - display: inline-block; -} -.mobile .settings-button-icon, -.preview .settings-button-icon { - background-image: url('data:image/svg+xml;utf8,'); - background-size: cover; - display: inline-block; - height: 1rem; - margin-right: 0.125rem; - width: 1rem; -} -.mobile .site-toggle-group .site-toggle, -.preview .site-toggle-group .site-toggle { - width: calc(100% - 0.125rem * 2); -} -.mobile .site-toggle-group__description--on, -.preview .site-toggle-group__description--on { - color: #3bc077; -} -.mobile .site-toggle-group__description--off, -.preview .site-toggle-group__description--off { - color: #e96c4c; -} -.mobile .theme-group, -.preview .theme-group { - align-items: stretch; - display: flex; - flex-direction: column; -} -.mobile .theme-group__presets-wrapper, -.preview .theme-group__presets-wrapper { - background-color: #316e7d; - border: 0.125rem solid #316e7d; - height: 1.5rem; - position: relative; -} -.mobile .theme-group__presets-wrapper::before, -.preview .theme-group__presets-wrapper::before { - border: 0.125rem solid #316e7d; - border-bottom: none; - content: ""; - display: inline-block; - height: 1.75rem; - left: -0.125rem; - position: absolute; - top: -0.125rem; - width: 100%; -} -.mobile .theme-group__controls-wrapper, -.preview .theme-group__controls-wrapper { - border-bottom: 0.125rem solid #316e7d; - border-left: 0.125rem solid #316e7d; - border-right: 0.125rem solid #316e7d; - padding: 0.5rem; -} -.mobile .theme-group__more-button, -.preview .theme-group__more-button { - background-color: #316e7d; - background-image: url('data:image/svg+xml;utf8,'); - background-position: center right 0.25rem; - background-repeat: no-repeat; - background-size: 1rem; - border: none; - height: 1.25rem; - margin-bottom: 0.125rem; - margin-top: 0.625rem; - width: 100%; -} -.mobile .theme-group__description, -.preview .theme-group__description { - display: inline-block; - font-size: 0.625rem; - line-height: 0.875rem; - text-align: center; - -moz-user-select: none; - user-select: none; - width: 100%; -} -.mobile .news-section, -.preview .news-section { - background-color: #141e24; - border-bottom-left-radius: 0.9375rem; - border-bottom-right-radius: 0.9375rem; - bottom: 0; - box-sizing: border-box; - display: flex; - flex-direction: column; - height: 1.875rem; - left: 0; - overflow: hidden; - padding: 0; - position: absolute; - text-align: center; - transition: height 250ms; - user-select: none; - white-space: nowrap; - width: 100%; -} -.mobile .news-section__popover, -.preview .news-section__popover { - align-items: stretch; - background-color: #141e24; - display: flex; - flex-direction: column; - left: 0; - height: 6rem; - opacity: 0; - pointer-events: none; - position: absolute; - top: 0; - transition: opacity 250ms; - width: 100%; -} -.mobile .news-section__popover__top, -.preview .news-section__popover__top { - border-top: 0.125rem solid #316e7d; - display: flex; - flex-direction: row; - justify-content: space-between; - margin-bottom: 0.5rem; -} -.mobile .news-section__title, -.preview .news-section__title { - color: #e96c4c; - font-size: 0.875rem; - line-height: 1.5rem; - margin-left: 1rem; -} -.mobile .news-section__news, -.preview .news-section__news { - align-items: center; - box-sizing: border-box; - color: #53a1b3; - display: flex; - flex-direction: row; - font-weight: normal; - justify-content: flex-start; - height: 2.5rem; - padding: 0 1rem; - width: 100%; -} -.mobile .news-section__news__icon, -.preview .news-section__news__icon { - background-position: center; - background-repeat: no-repeat; - background-size: contain; - display: inline-block; - flex: none; - height: 3rem; - margin-right: 0.5rem; - width: 3rem; -} -.mobile .news-section__news__text, -.preview .news-section__news__text { - flex: auto; - font-size: 0.875rem; - display: inline-block; - line-height: 0.875rem; - text-align: left; - white-space: normal; -} -.mobile .news-section__news--highlight, -.preview .news-section__news--highlight { - color: #e96c4c; - font-weight: bold; -} -.mobile .news-section__news:hover, -.preview .news-section__news:hover { - color: #ffffff; -} -.mobile .news-section__close, -.preview .news-section__close { - color: #e96c4c; - cursor: pointer; - display: inline-block; - font-size: 1.125rem; - height: 1.5rem; - line-height: 1.5rem; - text-align: center; - user-select: none; - width: 1.5rem; -} -.mobile .news-section__close:hover, -.preview .news-section__close:hover { - background-color: rgba(49, 110, 125, 0.25); -} -.mobile .news-section--expanded, -.preview .news-section--expanded { - height: 6rem; -} -.mobile .news-section--expanded .news-section__popover, -.preview .news-section--expanded .news-section__popover { - opacity: 1; - pointer-events: all; -} -.mobile .news-section__news--small, -.preview .news-section__news--small { - bottom: 0; - font-weight: bold; - height: 1.875rem; - padding: 0 1rem; -} -.mobile .news-section__news--small .news-section__news__icon, -.preview .news-section__news--small .news-section__news__icon { - height: 1.5rem; - margin-right: 0.25rem; - width: 1.5rem; -} -.mobile .news-section__news--small .news-section__news__text, -.preview .news-section__news--small .news-section__news__text { - font-size: 0.75rem; - line-height: 1rem; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.mobile .page-viewer, -.preview .page-viewer { - height: 100%; - position: relative; -} -.mobile .page, -.preview .page { - align-items: stretch; - background-color: #141e24; - display: none; - flex-direction: column; - height: 100%; - justify-content: stretch; - left: 0; - position: absolute; - top: 0; - width: 100%; -} -.mobile .page--active, -.preview .page--active { - display: flex; -} -.mobile .page__back-button, -.preview .page__back-button { - background-image: url('data:image/svg+xml;utf8,'); - background-position: center left 0.25rem; - background-repeat: no-repeat; - background-size: 1rem; - flex: none; - margin-top: 0.5rem; - width: calc(100% - 2 * 0.125rem); -} -.mobile .theme-control, -.preview .theme-control { - align-items: center; - display: flex; - flex-direction: row; - justify-content: center; - min-height: 1.5rem; - width: 100%; -} -.mobile .theme-control__label, -.preview .theme-control__label { - font-size: 0.75rem; - line-height: 0.75rem; - text-align: left; - -moz-user-select: none; - user-select: none; - width: 50%; -} -.mobile .export-theme-button, -.preview .export-theme-button { - background-color: #316e7d; - border: none; - height: 1.25rem; - margin-bottom: 0.25rem; - margin-top: 0.625rem; - width: 100%; -} -.mobile .static-edit-button, -.preview .static-edit-button { - background-color: #e96c4c; - border-radius: 0.4375rem; - color: #ffffff; - cursor: pointer; - font-size: 0.625rem; - line-height: 0.875rem; - left: 0.25rem; - min-width: 0.875rem; - position: absolute; - text-align: center; - top: 0.25rem; -} -.mobile .static-edit-button--hidden, -.preview .static-edit-button--hidden { - display: none; -} -.mobile .static-edit-button::before, -.preview .static-edit-button::before { - content: "\270E"; - line-height: 0.875rem; -} -.mobile .static-edit-button:hover, -.preview .static-edit-button:hover { - box-shadow: 0 0 0.75rem #ffffff; -} -.mobile .mode-control-container, -.preview .mode-control-container { - height: 1.5rem; - position: relative; - width: 100%; -} -.mobile .collapsible-panel__group__expand-button, -.preview .collapsible-panel__group__expand-button { - align-items: center; - background-color: #316e7d; - background-image: url('data:image/svg+xml;utf8,'); - background-position: center left 0.375rem; - background-repeat: no-repeat; - background-size: 0.5rem; - color: #ffffff; - cursor: pointer; - display: none; - height: 1.25rem; - justify-content: center; - line-height: 1.25rem; - text-align: center; - width: 100%; -} -.mobile - .collapsible-panel__group--collapsed - .collapsible-panel__group__expand-button, -.preview - .collapsible-panel__group--collapsed - .collapsible-panel__group__expand-button { - display: inline-flex; -} -.mobile .collapsible-panel__group--collapsed .collapsible-panel__group__content, -.preview - .collapsible-panel__group--collapsed - .collapsible-panel__group__content { - display: none; -} -.mobile - .collapsible-panel__group--collapse-top - .collapsible-panel__group__expand-button, -.preview - .collapsible-panel__group--collapse-top - .collapsible-panel__group__expand-button { - margin-bottom: 0.625rem; - margin-top: 0.125rem; -} -.mobile - .collapsible-panel__group--collapse-bottom - .collapsible-panel__group__expand-button, -.preview - .collapsible-panel__group--collapse-bottom - .collapsible-panel__group__expand-button { - margin-bottom: 0.125rem; - margin-top: 0.625rem; -} -.mobile .theme-page .theme-preset-picker.dropdown, -.preview .theme-page .theme-preset-picker.dropdown { - height: 1.75rem; -} -.mobile .theme-page .theme-preset-picker .dropdown__selected, -.preview .theme-page .theme-preset-picker .dropdown__selected { - height: 1.75rem; -} -.mobile .theme-page .theme-preset-picker .dropdown__list, -.preview .theme-page .theme-preset-picker .dropdown__list { - border: 0.125rem solid #316e7d; - border-top: none; - box-shadow: 0 0 0.25rem 0.0625rem black; - box-sizing: border-box; -} -.mobile .theme-page .theme-preset-picker .dropdown__list__item, -.preview .theme-page .theme-preset-picker .dropdown__list__item { - min-height: 1.75rem; -} -.mobile .theme-page .theme-control:not(:first-child), -.preview .theme-page .theme-control:not(:first-child) { - margin-top: 0.5rem; -} -.mobile .theme-page .font-picker, -.preview .theme-page .font-picker { - box-sizing: border-box; - height: 1.5rem; - padding-top: 0.125rem; - position: relative; - width: 100%; -} -.mobile .theme-page .font-picker--disabled, -.preview .theme-page .font-picker--disabled { - opacity: 0.5; - pointer-events: none; -} -.mobile .theme-page .font-picker .select__textbox, -.preview .theme-page .font-picker .select__textbox, -.mobile .theme-page .font-picker .select__expand, -.preview .theme-page .font-picker .select__expand, -.mobile .theme-page .font-picker .select__list, -.preview .theme-page .font-picker .select__list { - border: none; -} -.mobile .theme-page .font-picker .select__line, -.preview .theme-page .font-picker .select__line { - position: relative; -} -.mobile .theme-page .font-picker .select__textbox, -.preview .theme-page .font-picker .select__textbox { - background-color: #316e7d; - color: #ffffff; - height: 1.25rem; - line-height: 1.25rem; - text-align: center; - width: 100%; -} -.mobile .theme-page .font-picker .select__textbox:hover, -.preview .theme-page .font-picker .select__textbox:hover { - background-color: #193945; -} -.mobile .theme-page .font-picker .select__textbox:focus, -.preview .theme-page .font-picker .select__textbox:focus { - background-color: #193945; - border: 0.125rem solid #316e7d; - margin-top: -0.125rem; -} -.mobile .theme-page .font-picker .select__expand, -.preview .theme-page .font-picker .select__expand { - background-color: #316e7d; - height: 1.25rem; - min-width: 1.5rem; - position: absolute; - right: 0; - top: 0; - width: 1.5rem; -} -.mobile .theme-page .font-picker .select__expand__icon, -.preview .theme-page .font-picker .select__expand__icon { - background-image: url('data:image/svg+xml;utf8,'); - background-position: center; - background-repeat: no-repeat; - background-size: 1rem; -} -.mobile .theme-page .font-picker .select__expand__icon::before, -.preview .theme-page .font-picker .select__expand__icon::before, -.mobile .theme-page .font-picker .select__expand__icon::after, -.preview .theme-page .font-picker .select__expand__icon::after { - display: none; -} -.mobile .theme-page .font-picker .select__list, -.preview .theme-page .font-picker .select__list { - border-left: 0.125rem solid #316e7d; - border-right: 0.125rem solid #316e7d; - top: 100%; - width: 100%; -} -.mobile .theme-page .font-picker .select__list--expanded, -.preview .theme-page .font-picker .select__list--expanded { - border-bottom: 0.125rem solid #316e7d; -} -.mobile .theme-page .font-picker .select__list::-webkit-scrollbar, -.preview .theme-page .font-picker .select__list::-webkit-scrollbar { - background-color: transparent; -} -.mobile .theme-page .font-picker.select--expanded, -.preview .theme-page .font-picker.select--expanded { - background-color: #316e7d; - height: 1.5rem; - padding-top: 0; -} -.mobile .theme-page .font-picker.select--expanded .select__textbox, -.preview .theme-page .font-picker.select--expanded .select__textbox { - border: 0.125rem solid #316e7d; -} -.mobile .theme-page .font-picker.select--expanded .select__textbox:focus, -.preview .theme-page .font-picker.select--expanded .select__textbox:focus { - margin-top: 0; -} -.mobile .theme-page .font-picker.select--expanded .select__expand, -.preview .theme-page .font-picker.select--expanded .select__expand { - margin-top: 0.125rem; -} -.mobile .theme-page .font-picker.select--expanded::before, -.preview .theme-page .font-picker.select--expanded::before { - background-color: #141e24; - content: ""; - display: inline-block; - height: 0.75rem; - left: 0.125rem; - position: absolute; - top: 0.75rem; - width: calc(100% - 2 * 0.125rem); -} -.mobile .theme-preset-picker .dropdown__selected, -.preview .theme-preset-picker .dropdown__selected { - height: 1.5rem; - margin-top: 0; -} -.mobile .theme-preset-picker .dropdown__list, -.preview .theme-preset-picker .dropdown__list { - border: none; - box-shadow: - 0 0 0 0.125rem #316e7d, - 0 0 0.25rem 0.1875rem black; -} -.mobile .theme-preset-picker__preset, -.preview .theme-preset-picker__preset { - align-items: center; - display: inline-flex; - justify-content: center; - min-height: 1.5rem; - position: relative; - width: 100%; -} -.mobile .theme-preset-picker__preset__remove-button, -.preview .theme-preset-picker__preset__remove-button { - cursor: pointer; - display: inline-block; - height: 1.5rem; - position: absolute; - right: 0; - top: 0; - width: 1.5rem; -} -.mobile .theme-preset-picker__preset__remove-button::after, -.preview .theme-preset-picker__preset__remove-button::after { - content: "\2715"; - display: inline-block; - line-height: 1.5rem; - text-align: center; -} -.mobile .theme-preset-picker__preset__remove-button:hover, -.preview .theme-preset-picker__preset__remove-button:hover { - background-color: #316e7d; - color: #ffffff; -} -.mobile.firefox * { - font-family: - Inter, - Open Sans, - Segoe UI, - Helvetica Neue, - Ubuntu, - sans-serif; -} -.mobile.firefox a, -.mobile.firefox a *, -.mobile.firefox button, -.mobile.firefox button * { - font-family: - Metropolis, - Open Sans, - Segoe UI, - Helvetica Neue, - Ubuntu, - sans-serif; -} -@media screen and (min-width: 21.25rem) { - .mobile { - font-size: 20px; - } -} -@media screen and (min-width: 25.5rem) { - .mobile { - font-size: 24px; - } -} -@media screen and (min-resolution: 29.75rem) { - .mobile { - font-size: 28px; - } -} -@media screen and (min-width: 34rem) { - .mobile { - font-size: 32px; - } -} -.firefox .darkreader-version { - display: none; -} -.preview:not(.mobile) body { - border-color: #8a8f92; -} -html:not(.mobile) { - width: calc(15rem + 2 * 1rem + 4px); -} diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/stylesheet-editor/index.html b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/stylesheet-editor/index.html deleted file mode 100644 index 45e269d..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/stylesheet-editor/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Dark Reader CSS editor - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/stylesheet-editor/index.js b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/stylesheet-editor/index.js deleted file mode 100644 index f470490..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/stylesheet-editor/index.js +++ /dev/null @@ -1,2900 +0,0 @@ -(function () { - "use strict"; - - /* malevic@0.20.2 - Aug 10, 2024 */ - function m$1(tagOrComponent, props, ...children) { - props = props || {}; - if (typeof tagOrComponent === "string") { - const tag = tagOrComponent; - return {type: tag, props, children}; - } - if (typeof tagOrComponent === "function") { - const component = tagOrComponent; - return {type: component, props, children}; - } - throw new Error("Unsupported spec type"); - } - - /* malevic@0.20.2 - Aug 10, 2024 */ - function createPluginsStore() { - const plugins = []; - return { - add(plugin) { - plugins.push(plugin); - return this; - }, - apply(props) { - let result; - let plugin; - const usedPlugins = new Set(); - for (let i = plugins.length - 1; i >= 0; i--) { - plugin = plugins[i]; - if (usedPlugins.has(plugin)) { - continue; - } - result = plugin(props); - if (result != null) { - return result; - } - usedPlugins.add(plugin); - } - return null; - }, - delete(plugin) { - for (let i = plugins.length - 1; i >= 0; i--) { - if (plugins[i] === plugin) { - plugins.splice(i, 1); - break; - } - } - return this; - }, - empty() { - return plugins.length === 0; - } - }; - } - function iterateComponentPlugins(type, pairs, iterator) { - pairs - .filter(([key]) => type[key]) - .forEach(([key, plugins]) => { - return type[key].forEach((plugin) => iterator(plugins, plugin)); - }); - } - function addComponentPlugins(type, pairs) { - iterateComponentPlugins(type, pairs, (plugins, plugin) => - plugins.add(plugin) - ); - } - function deleteComponentPlugins(type, pairs) { - iterateComponentPlugins(type, pairs, (plugins, plugin) => - plugins.delete(plugin) - ); - } - - const XHTML_NS = "http://www.w3.org/1999/xhtml"; - const SVG_NS = "http://www.w3.org/2000/svg"; - - const PLUGINS_CREATE_ELEMENT = Symbol(); - const pluginsCreateElement = createPluginsStore(); - function createElement(spec, parent) { - const result = pluginsCreateElement.apply({spec, parent}); - if (result) { - return result; - } - const tag = spec.type; - if (tag === "svg") { - return document.createElementNS(SVG_NS, "svg"); - } - const namespace = parent.namespaceURI; - if (namespace === XHTML_NS || namespace == null) { - return document.createElement(tag); - } - return document.createElementNS(namespace, tag); - } - - function classes$1(...args) { - const classes = []; - const process = (c) => { - if (!c) return; - if (typeof c === "string") { - classes.push(c); - } else if (Array.isArray(c)) { - c.forEach(process); - } else if (typeof c === "object") { - classes.push( - ...Object.keys(c).filter((key) => Boolean(c[key])) - ); - } - }; - args.forEach(process); - return classes.join(" "); - } - function setInlineCSSPropertyValue(element, prop, $value) { - if ($value != null && $value !== "") { - let value = String($value); - let important = ""; - if (value.endsWith("!important")) { - value = value.substring(0, value.length - 10); - important = "important"; - } - element.style.setProperty(prop, value, important); - } else { - element.style.removeProperty(prop); - } - } - - function isObject(value) { - return value != null && typeof value === "object"; - } - - const eventListeners = new WeakMap(); - function addEventListener(element, event, listener) { - let listeners; - if (eventListeners.has(element)) { - listeners = eventListeners.get(element); - } else { - listeners = new Map(); - eventListeners.set(element, listeners); - } - if (listeners.get(event) !== listener) { - if (listeners.has(event)) { - element.removeEventListener(event, listeners.get(event)); - } - element.addEventListener(event, listener); - listeners.set(event, listener); - } - } - function removeEventListener(element, event) { - if (!eventListeners.has(element)) { - return; - } - const listeners = eventListeners.get(element); - element.removeEventListener(event, listeners.get(event)); - listeners.delete(event); - } - - function setClassObject(element, classObj) { - const cls = Array.isArray(classObj) - ? classes$1(...classObj) - : classes$1(classObj); - if (cls) { - element.setAttribute("class", cls); - } else { - element.removeAttribute("class"); - } - } - function mergeValues(obj, old) { - const values = new Map(); - const newProps = new Set(Object.keys(obj)); - const oldProps = Object.keys(old); - oldProps - .filter((prop) => !newProps.has(prop)) - .forEach((prop) => values.set(prop, null)); - newProps.forEach((prop) => values.set(prop, obj[prop])); - return values; - } - function setStyleObject(element, styleObj, prev) { - let prevObj; - if (isObject(prev)) { - prevObj = prev; - } else { - prevObj = {}; - element.removeAttribute("style"); - } - const declarations = mergeValues(styleObj, prevObj); - declarations.forEach(($value, prop) => - setInlineCSSPropertyValue(element, prop, $value) - ); - } - function setEventListener(element, event, listener) { - if (typeof listener === "function") { - addEventListener(element, event, listener); - } else { - removeEventListener(element, event); - } - } - const specialAttrs = new Set([ - "key", - "oncreate", - "onupdate", - "onrender", - "onremove" - ]); - const PLUGINS_SET_ATTRIBUTE = Symbol(); - const pluginsSetAttribute = createPluginsStore(); - function getPropertyValue(obj, prop) { - return obj && obj.hasOwnProperty(prop) ? obj[prop] : null; - } - function syncAttrs(element, attrs, prev) { - const values = mergeValues(attrs, prev || {}); - values.forEach((value, attr) => { - if (!pluginsSetAttribute.empty()) { - const result = pluginsSetAttribute.apply({ - element, - attr, - value, - get prev() { - return getPropertyValue(prev, attr); - } - }); - if (result != null) { - return; - } - } - if (attr === "class" && isObject(value)) { - setClassObject(element, value); - } else if (attr === "style" && isObject(value)) { - const prevValue = getPropertyValue(prev, attr); - setStyleObject(element, value, prevValue); - } else if (attr.startsWith("on")) { - const event = attr.substring(2); - setEventListener(element, event, value); - } else if (specialAttrs.has(attr)); - else if (value == null || value === false) { - element.removeAttribute(attr); - } else { - element.setAttribute(attr, value === true ? "" : String(value)); - } - }); - } - - class LinkedList { - constructor(...items) { - this.nexts = new WeakMap(); - this.prevs = new WeakMap(); - this.first = null; - this.last = null; - items.forEach((item) => this.push(item)); - } - empty() { - return this.first == null; - } - push(item) { - if (this.empty()) { - this.first = item; - this.last = item; - } else { - this.nexts.set(this.last, item); - this.prevs.set(item, this.last); - this.last = item; - } - } - insertBefore(newItem, refItem) { - const prev = this.before(refItem); - this.prevs.set(newItem, prev); - this.nexts.set(newItem, refItem); - this.prevs.set(refItem, newItem); - prev && this.nexts.set(prev, newItem); - refItem === this.first && (this.first = newItem); - } - delete(item) { - const prev = this.before(item); - const next = this.after(item); - prev && this.nexts.set(prev, next); - next && this.prevs.set(next, prev); - item === this.first && (this.first = next); - item === this.last && (this.last = prev); - } - before(item) { - return this.prevs.get(item) || null; - } - after(item) { - return this.nexts.get(item) || null; - } - loop(iterator) { - if (this.empty()) { - return; - } - let current = this.first; - do { - if (iterator(current)) { - break; - } - } while ((current = this.after(current))); - } - copy() { - const list = new LinkedList(); - this.loop((item) => { - list.push(item); - return false; - }); - return list; - } - forEach(iterator) { - this.loop((item) => { - iterator(item); - return false; - }); - } - find(iterator) { - let result = null; - this.loop((item) => { - if (iterator(item)) { - result = item; - return true; - } - return false; - }); - return result; - } - map(iterator) { - const results = []; - this.loop((item) => { - results.push(iterator(item)); - return false; - }); - return results; - } - } - - function matchChildren(vnode, old) { - const oldChildren = old.children(); - const oldChildrenByKey = new Map(); - const oldChildrenWithoutKey = []; - oldChildren.forEach((v) => { - const key = v.key(); - if (key == null) { - oldChildrenWithoutKey.push(v); - } else { - oldChildrenByKey.set(key, v); - } - }); - const children = vnode.children(); - const matches = []; - const unmatched = new Set(oldChildren); - const keys = new Set(); - children.forEach((v) => { - let match = null; - let guess = null; - const key = v.key(); - if (key != null) { - if (keys.has(key)) { - throw new Error("Duplicate key"); - } - keys.add(key); - if (oldChildrenByKey.has(key)) { - guess = oldChildrenByKey.get(key); - } - } else if (oldChildrenWithoutKey.length > 0) { - guess = oldChildrenWithoutKey.shift(); - } - if (v.matches(guess)) { - match = guess; - } - matches.push([v, match]); - if (match) { - unmatched.delete(match); - } - }); - return {matches, unmatched}; - } - - function execute(vnode, old, vdom) { - const didMatch = vnode && old && vnode.matches(old); - if (didMatch && vnode.parent() === old.parent()) { - vdom.replaceVNode(old, vnode); - } else if (vnode) { - vdom.addVNode(vnode); - } - const context = vdom.getVNodeContext(vnode); - const oldContext = vdom.getVNodeContext(old); - if (old && !didMatch) { - old.detach(oldContext); - old.children().forEach((v) => execute(null, v, vdom)); - old.detached(oldContext); - } - if (vnode && !didMatch) { - vnode.attach(context); - vnode.children().forEach((v) => execute(v, null, vdom)); - vnode.attached(context); - } - if (didMatch) { - const result = vnode.update(old, context); - if (result !== vdom.LEAVE) { - const {matches, unmatched} = matchChildren(vnode, old); - unmatched.forEach((v) => execute(null, v, vdom)); - matches.forEach(([v, o]) => execute(v, o, vdom)); - vnode.updated(context); - } - } - } - - function m(tagOrComponent, props, ...children) { - props = props || {}; - if (typeof tagOrComponent === "string") { - const tag = tagOrComponent; - return {type: tag, props, children}; - } - if (typeof tagOrComponent === "function") { - const component = tagOrComponent; - return {type: component, props, children}; - } - throw new Error("Unsupported spec type"); - } - function isSpec(x) { - return isObject(x) && x.type != null && x.nodeType == null; - } - function isNodeSpec(x) { - return isSpec(x) && typeof x.type === "string"; - } - function isComponentSpec(x) { - return isSpec(x) && typeof x.type === "function"; - } - - class VNodeBase { - constructor(parent) { - this.parentVNode = parent; - } - key() { - return null; - } - parent(vnode) { - if (vnode) { - this.parentVNode = vnode; - return; - } - return this.parentVNode; - } - children() { - return []; - } - attach(context) {} - detach(context) {} - update(old, context) { - return null; - } - attached(context) {} - detached(context) {} - updated(context) {} - } - function nodeMatchesSpec(node, spec) { - return ( - node instanceof Element && - ((node.namespaceURI === XHTML_NS && - spec.type === node.tagName.toLocaleLowerCase()) || - (node.namespaceURI !== XHTML_NS && spec.type === node.tagName)) - ); - } - const refinedElements = new WeakMap(); - function markElementAsRefined(element, vdom) { - let refined; - if (refinedElements.has(vdom)) { - refined = refinedElements.get(vdom); - } else { - refined = new WeakSet(); - refinedElements.set(vdom, refined); - } - refined.add(element); - } - function isElementRefined(element, vdom) { - return ( - refinedElements.has(vdom) && refinedElements.get(vdom).has(element) - ); - } - class ElementVNode extends VNodeBase { - constructor(spec, parent) { - super(parent); - this.spec = spec; - } - matches(other) { - return ( - other instanceof ElementVNode && - this.spec.type === other.spec.type - ); - } - key() { - return this.spec.props.key; - } - children() { - return [this.child]; - } - getExistingElement(context) { - const parent = context.parent; - const existing = context.node; - let element; - if (nodeMatchesSpec(existing, this.spec)) { - element = existing; - } else if ( - !isElementRefined(parent, context.vdom) && - context.vdom.isDOMNodeCaptured(parent) - ) { - const sibling = context.sibling; - const guess = sibling - ? sibling.nextElementSibling - : parent.firstElementChild; - if (guess && !context.vdom.isDOMNodeCaptured(guess)) { - if (nodeMatchesSpec(guess, this.spec)) { - element = guess; - } else { - parent.removeChild(guess); - } - } - } - return element; - } - attach(context) { - let element; - const existing = this.getExistingElement(context); - if (existing) { - element = existing; - } else { - element = createElement(this.spec, context.parent); - markElementAsRefined(element, context.vdom); - } - syncAttrs(element, this.spec.props, null); - this.child = createDOMVNode( - element, - this.spec.children, - this, - false - ); - } - update(prev, context) { - const prevContext = context.vdom.getVNodeContext(prev); - const element = prevContext.node; - syncAttrs(element, this.spec.props, prev.spec.props); - this.child = createDOMVNode( - element, - this.spec.children, - this, - false - ); - } - attached(context) { - const {oncreate, onrender} = this.spec.props; - if (oncreate) { - oncreate(context.node); - } - if (onrender) { - onrender(context.node); - } - } - detached(context) { - const {onremove} = this.spec.props; - if (onremove) { - onremove(context.node); - } - } - updated(context) { - const {onupdate, onrender} = this.spec.props; - if (onupdate) { - onupdate(context.node); - } - if (onrender) { - onrender(context.node); - } - } - } - const symbols = { - CREATED: Symbol(), - REMOVED: Symbol(), - UPDATED: Symbol(), - RENDERED: Symbol(), - ACTIVE: Symbol(), - DEFAULTS_ASSIGNED: Symbol() - }; - const domPlugins = [ - [PLUGINS_CREATE_ELEMENT, pluginsCreateElement], - [PLUGINS_SET_ATTRIBUTE, pluginsSetAttribute] - ]; - class ComponentVNode extends VNodeBase { - constructor(spec, parent) { - super(parent); - this.lock = false; - this.spec = spec; - this.prev = null; - this.store = {}; - this.store[symbols.ACTIVE] = this; - } - matches(other) { - return ( - other instanceof ComponentVNode && - this.spec.type === other.spec.type - ); - } - key() { - return this.spec.props.key; - } - children() { - return [this.child]; - } - createContext(context) { - const {parent} = context; - const {spec, prev, store} = this; - return { - spec, - prev, - store, - get node() { - return context.node; - }, - get nodes() { - return context.nodes; - }, - parent, - onCreate: (fn) => (store[symbols.CREATED] = fn), - onUpdate: (fn) => (store[symbols.UPDATED] = fn), - onRemove: (fn) => (store[symbols.REMOVED] = fn), - onRender: (fn) => (store[symbols.RENDERED] = fn), - refresh: () => { - const activeVNode = store[symbols.ACTIVE]; - activeVNode.refresh(context); - }, - leave: () => context.vdom.LEAVE, - getStore: (defaults) => { - if (defaults && !store[symbols.DEFAULTS_ASSIGNED]) { - Object.entries(defaults).forEach(([prop, value]) => { - store[prop] = value; - }); - store[symbols.DEFAULTS_ASSIGNED] = true; - } - return store; - } - }; - } - unbox(context) { - const Component = this.spec.type; - const props = this.spec.props; - const children = this.spec.children; - this.lock = true; - const prevContext = ComponentVNode.context; - ComponentVNode.context = this.createContext(context); - let unboxed = null; - try { - unboxed = Component(props, ...children); - } finally { - ComponentVNode.context = prevContext; - this.lock = false; - } - return unboxed; - } - refresh(context) { - if (this.lock) { - throw new Error( - "Calling refresh during unboxing causes infinite loop" - ); - } - this.prev = this.spec; - const latestContext = context.vdom.getVNodeContext(this); - const unboxed = this.unbox(latestContext); - if (unboxed === context.vdom.LEAVE) { - return; - } - const prevChild = this.child; - this.child = createVNode(unboxed, this); - context.vdom.execute(this.child, prevChild); - this.updated(context); - } - addPlugins() { - addComponentPlugins(this.spec.type, domPlugins); - } - deletePlugins() { - deleteComponentPlugins(this.spec.type, domPlugins); - } - attach(context) { - this.addPlugins(); - const unboxed = this.unbox(context); - const childSpec = unboxed === context.vdom.LEAVE ? null : unboxed; - this.child = createVNode(childSpec, this); - } - update(prev, context) { - this.store = prev.store; - this.prev = prev.spec; - this.store[symbols.ACTIVE] = this; - const prevContext = context.vdom.getVNodeContext(prev); - this.addPlugins(); - const unboxed = this.unbox(prevContext); - let result = null; - if (unboxed === context.vdom.LEAVE) { - result = unboxed; - this.child = prev.child; - context.vdom.adoptVNode(this.child, this); - } else { - this.child = createVNode(unboxed, this); - } - return result; - } - handle(event, context) { - const fn = this.store[event]; - if (fn) { - const nodes = - context.nodes.length === 0 ? [null] : context.nodes; - fn(...nodes); - } - } - attached(context) { - this.deletePlugins(); - this.handle(symbols.CREATED, context); - this.handle(symbols.RENDERED, context); - } - detached(context) { - this.handle(symbols.REMOVED, context); - } - updated(context) { - this.deletePlugins(); - this.handle(symbols.UPDATED, context); - this.handle(symbols.RENDERED, context); - } - } - ComponentVNode.context = null; - function getComponentContext() { - return ComponentVNode.context; - } - class TextVNode extends VNodeBase { - constructor(text, parent) { - super(parent); - this.text = text; - } - matches(other) { - return other instanceof TextVNode; - } - children() { - return [this.child]; - } - getExistingNode(context) { - const {parent} = context; - let node; - if (context.node instanceof Text) { - node = context.node; - } else if ( - !isElementRefined(parent, context.vdom) && - context.vdom.isDOMNodeCaptured(parent) - ) { - const sibling = context.sibling; - const guess = sibling ? sibling.nextSibling : parent.firstChild; - if ( - guess && - !context.vdom.isDOMNodeCaptured(guess) && - guess instanceof Text - ) { - node = guess; - } - } - return node; - } - attach(context) { - const existing = this.getExistingNode(context); - let node; - if (existing) { - node = existing; - node.textContent = this.text; - } else { - node = document.createTextNode(this.text); - } - this.child = createVNode(node, this); - } - update(prev, context) { - const prevContext = context.vdom.getVNodeContext(prev); - const {node} = prevContext; - if (this.text !== prev.text) { - node.textContent = this.text; - } - this.child = createVNode(node, this); - } - } - class InlineFunctionVNode extends VNodeBase { - constructor(fn, parent) { - super(parent); - this.fn = fn; - } - matches(other) { - return other instanceof InlineFunctionVNode; - } - children() { - return [this.child]; - } - call(context) { - const fn = this.fn; - const inlineFnContext = { - parent: context.parent, - get node() { - return context.node; - }, - get nodes() { - return context.nodes; - } - }; - const result = fn(inlineFnContext); - this.child = createVNode(result, this); - } - attach(context) { - this.call(context); - } - update(prev, context) { - const prevContext = context.vdom.getVNodeContext(prev); - this.call(prevContext); - } - } - class NullVNode extends VNodeBase { - matches(other) { - return other instanceof NullVNode; - } - } - class DOMVNode extends VNodeBase { - constructor(node, childSpecs, parent, isNative) { - super(parent); - this.node = node; - this.childSpecs = childSpecs; - this.isNative = isNative; - } - matches(other) { - return other instanceof DOMVNode && this.node === other.node; - } - wrap() { - this.childVNodes = this.childSpecs.map((spec) => - createVNode(spec, this) - ); - } - insertNode(context) { - const {parent, sibling} = context; - const shouldInsert = !( - parent === this.node.parentElement && - sibling === this.node.previousSibling - ); - if (shouldInsert) { - const target = sibling - ? sibling.nextSibling - : parent.firstChild; - parent.insertBefore(this.node, target); - } - } - attach(context) { - this.wrap(); - this.insertNode(context); - } - detach(context) { - context.parent.removeChild(this.node); - } - update(prev, context) { - this.wrap(); - this.insertNode(context); - } - cleanupDOMChildren(context) { - const element = this.node; - for (let current = element.lastChild; current != null; ) { - if (context.vdom.isDOMNodeCaptured(current)) { - current = current.previousSibling; - } else { - const prev = current.previousSibling; - element.removeChild(current); - current = prev; - } - } - } - refine(context) { - if (!this.isNative) { - this.cleanupDOMChildren(context); - } - const element = this.node; - markElementAsRefined(element, context.vdom); - } - attached(context) { - const {node} = this; - if ( - node instanceof Element && - !isElementRefined(node, context.vdom) && - context.vdom.isDOMNodeCaptured(node) - ) { - this.refine(context); - } - } - children() { - return this.childVNodes; - } - } - function isDOMVNode(v) { - return v instanceof DOMVNode; - } - function createDOMVNode(node, childSpecs, parent, isNative) { - return new DOMVNode(node, childSpecs, parent, isNative); - } - class ArrayVNode extends VNodeBase { - constructor(items, key, parent) { - super(parent); - this.items = items; - this.id = key; - } - matches(other) { - return other instanceof ArrayVNode; - } - key() { - return this.id; - } - children() { - return this.childVNodes; - } - wrap() { - this.childVNodes = this.items.map((spec) => - createVNode(spec, this) - ); - } - attach() { - this.wrap(); - } - update() { - this.wrap(); - } - } - function createVNode(spec, parent) { - if (isNodeSpec(spec)) { - return new ElementVNode(spec, parent); - } - if (isComponentSpec(spec)) { - if (spec.type === Array) { - return new ArrayVNode(spec.children, spec.props.key, parent); - } - return new ComponentVNode(spec, parent); - } - if (typeof spec === "string") { - return new TextVNode(spec, parent); - } - if (spec == null) { - return new NullVNode(parent); - } - if (typeof spec === "function") { - return new InlineFunctionVNode(spec, parent); - } - if (spec instanceof Node) { - return createDOMVNode(spec, [], parent, true); - } - if (Array.isArray(spec)) { - return new ArrayVNode(spec, null, parent); - } - throw new Error("Unable to create virtual node for spec"); - } - - function createVDOM(rootNode) { - const contexts = new WeakMap(); - const hubs = new WeakMap(); - const parentNodes = new WeakMap(); - const passingLinks = new WeakMap(); - const linkedParents = new WeakSet(); - const LEAVE = Symbol(); - function execute$1(vnode, old) { - execute(vnode, old, vdom); - } - function creatVNodeContext(vnode) { - const parentNode = parentNodes.get(vnode); - contexts.set(vnode, { - parent: parentNode, - get node() { - const linked = passingLinks - .get(vnode) - .find((link) => link.node != null); - return linked ? linked.node : null; - }, - get nodes() { - return passingLinks - .get(vnode) - .map((link) => link.node) - .filter((node) => node); - }, - get sibling() { - if (parentNode === rootNode.parentElement) { - return passingLinks.get(vnode).first.node - .previousSibling; - } - const hub = hubs.get(parentNode); - let current = passingLinks.get(vnode).first; - while ((current = hub.links.before(current))) { - if (current.node) { - return current.node; - } - } - return null; - }, - vdom - }); - } - function createRootVNodeLinks(vnode) { - const parentNode = - rootNode.parentElement || document.createDocumentFragment(); - const node = rootNode; - const links = new LinkedList({ - parentNode, - node - }); - passingLinks.set(vnode, links.copy()); - parentNodes.set(vnode, parentNode); - hubs.set(parentNode, { - node: parentNode, - links - }); - } - function createVNodeLinks(vnode) { - const parent = vnode.parent(); - const isBranch = linkedParents.has(parent); - const parentNode = isDOMVNode(parent) - ? parent.node - : parentNodes.get(parent); - parentNodes.set(vnode, parentNode); - const vnodeLinks = new LinkedList(); - passingLinks.set(vnode, vnodeLinks); - if (isBranch) { - const newLink = { - parentNode, - node: null - }; - let current = vnode; - do { - passingLinks.get(current).push(newLink); - current = current.parent(); - } while (current && !isDOMVNode(current)); - hubs.get(parentNode).links.push(newLink); - } else { - linkedParents.add(parent); - const links = isDOMVNode(parent) - ? hubs.get(parentNode).links - : passingLinks.get(parent); - links.forEach((link) => vnodeLinks.push(link)); - } - } - function connectDOMVNode(vnode) { - if (isDOMVNode(vnode)) { - const {node} = vnode; - hubs.set(node, { - node, - links: new LinkedList({ - parentNode: node, - node: null - }) - }); - passingLinks.get(vnode).forEach((link) => (link.node = node)); - } - } - function addVNode(vnode) { - const parent = vnode.parent(); - if (parent == null) { - createRootVNodeLinks(vnode); - } else { - createVNodeLinks(vnode); - } - connectDOMVNode(vnode); - creatVNodeContext(vnode); - } - function getVNodeContext(vnode) { - return contexts.get(vnode); - } - function getAncestorsLinks(vnode) { - const parentNode = parentNodes.get(vnode); - const hub = hubs.get(parentNode); - const allLinks = []; - let current = vnode; - while ((current = current.parent()) && !isDOMVNode(current)) { - allLinks.push(passingLinks.get(current)); - } - allLinks.push(hub.links); - return allLinks; - } - function replaceVNode(old, vnode) { - if (vnode.parent() == null) { - addVNode(vnode); - return; - } - const oldContext = contexts.get(old); - const {parent: parentNode} = oldContext; - parentNodes.set(vnode, parentNode); - const oldLinks = passingLinks.get(old); - const newLink = { - parentNode, - node: null - }; - getAncestorsLinks(vnode).forEach((links) => { - const nextLink = links.after(oldLinks.last); - oldLinks.forEach((link) => links.delete(link)); - if (nextLink) { - links.insertBefore(newLink, nextLink); - } else { - links.push(newLink); - } - }); - const vnodeLinks = new LinkedList(newLink); - passingLinks.set(vnode, vnodeLinks); - creatVNodeContext(vnode); - } - function adoptVNode(vnode, parent) { - const vnodeLinks = passingLinks.get(vnode); - const parentLinks = passingLinks.get(parent).copy(); - vnode.parent(parent); - getAncestorsLinks(vnode).forEach((links) => { - vnodeLinks.forEach((link) => - links.insertBefore(link, parentLinks.first) - ); - parentLinks.forEach((link) => links.delete(link)); - }); - } - function isDOMNodeCaptured(node) { - return hubs.has(node) && node !== rootNode.parentElement; - } - const vdom = { - execute: execute$1, - addVNode, - getVNodeContext, - replaceVNode, - adoptVNode, - isDOMNodeCaptured, - LEAVE - }; - return vdom; - } - - const roots = new WeakMap(); - const vdoms = new WeakMap(); - function realize(node, vnode) { - const old = roots.get(node) || null; - roots.set(node, vnode); - let vdom; - if (vdoms.has(node)) { - vdom = vdoms.get(node); - } else { - vdom = createVDOM(node); - vdoms.set(node, vdom); - } - vdom.execute(vnode, old); - return vdom.getVNodeContext(vnode); - } - function render$1(element, spec) { - const vnode = createDOMVNode( - element, - Array.isArray(spec) ? spec : [spec], - null, - false - ); - realize(element, vnode); - return element; - } - function sync(node, spec) { - const vnode = createVNode(spec, null); - const context = realize(node, vnode); - const {nodes} = context; - if (nodes.length !== 1 || nodes[0] !== node) { - throw new Error("Spec does not match the node"); - } - return nodes[0]; - } - - function normalize(attrsOrChild, ...otherChildren) { - const attrs = - isObject(attrsOrChild) && !isSpec(attrsOrChild) - ? attrsOrChild - : null; - const children = - attrs == null - ? [attrsOrChild].concat(otherChildren) - : otherChildren; - return {attrs, children}; - } - function createTagFunction(tag) { - return (attrsOrChild, ...otherChildren) => { - const {attrs, children} = normalize(attrsOrChild, otherChildren); - return m(tag, attrs, children); - }; - } - new Proxy( - {}, - { - get: (_, tag) => { - return createTagFunction(tag); - } - } - ); - - const isNavigatorDefined = typeof navigator !== "undefined"; - const userAgent = isNavigatorDefined - ? navigator.userAgentData && - Array.isArray(navigator.userAgentData.brands) - ? navigator.userAgentData.brands - .map( - (brand) => `${brand.brand.toLowerCase()} ${brand.version}` - ) - .join(" ") - : navigator.userAgent.toLowerCase() - : "some useragent"; - const platform = isNavigatorDefined - ? navigator.userAgentData && - typeof navigator.userAgentData.platform === "string" - ? navigator.userAgentData.platform.toLowerCase() - : navigator.platform.toLowerCase() - : "some platform"; - userAgent.includes("vivaldi"); - userAgent.includes("yabrowser"); - userAgent.includes("opr") || userAgent.includes("opera"); - userAgent.includes("edg"); - platform.startsWith("win"); - platform.startsWith("mac"); - isNavigatorDefined && navigator.userAgentData - ? navigator.userAgentData.mobile - : userAgent.includes("mobile"); - (isNavigatorDefined && - navigator.userAgentData && - ["Linux", "Android"].includes(navigator.userAgentData.platform)) || - platform.startsWith("linux"); - (() => { - const m = userAgent.match(/chrom(?:e|ium)(?:\/| )([^ ]+)/); - if (m && m[1]) { - return m[1]; - } - return ""; - })(); - (() => { - const m = userAgent.match(/(?:firefox|librewolf)(?:\/| )([^ ]+)/); - if (m && m[1]) { - return m[1]; - } - return ""; - })(); - (() => { - try { - document.querySelector(":defined"); - return true; - } catch (err) { - return false; - } - })(); - - function classes(...args) { - const classes = []; - args.filter((c) => Boolean(c)).forEach((c) => { - if (typeof c === "string") { - classes.push(c); - } else if (typeof c === "object") { - classes.push( - ...Object.keys(c).filter((key) => Boolean(c[key])) - ); - } - }); - return classes.join(" "); - } - function throttle(callback) { - let frameId = null; - return (...args) => { - if (!frameId) { - callback(...args); - frameId = requestAnimationFrame(() => (frameId = null)); - } - }; - } - function onSwipeStart(startEventObj, startHandler) { - const isTouchEvent = - typeof TouchEvent !== "undefined" && - startEventObj instanceof TouchEvent; - const touchId = isTouchEvent - ? startEventObj.changedTouches[0].identifier - : null; - const pointerMoveEvent = isTouchEvent ? "touchmove" : "mousemove"; - const pointerUpEvent = isTouchEvent ? "touchend" : "mouseup"; - if (!isTouchEvent) { - startEventObj.preventDefault(); - } - function getSwipeEventObject(e) { - const {clientX, clientY} = isTouchEvent ? getTouch(e) : e; - return {clientX, clientY}; - } - const startSE = getSwipeEventObject(startEventObj); - const {move: moveHandler, up: upHandler} = startHandler( - startSE, - startEventObj - ); - function getTouch(e) { - return Array.from(e.changedTouches).find( - ({identifier: id}) => id === touchId - ); - } - const onPointerMove = throttle((e) => { - const se = getSwipeEventObject(e); - moveHandler(se, e); - }); - function onPointerUp(e) { - unsubscribe(); - const se = getSwipeEventObject(e); - upHandler(se, e); - } - function unsubscribe() { - window.removeEventListener(pointerMoveEvent, onPointerMove); - window.removeEventListener(pointerUpEvent, onPointerUp); - } - window.addEventListener(pointerMoveEvent, onPointerMove, { - passive: true - }); - window.addEventListener(pointerUpEvent, onPointerUp, {passive: true}); - } - function createSwipeHandler(startHandler) { - return (e) => onSwipeStart(e, startHandler); - } - - function toArray(x) { - return Array.isArray(x) ? x : [x]; - } - function mergeClass(cls, propsCls) { - const normalized = toArray(cls).concat(toArray(propsCls)); - return classes(...normalized); - } - function omitAttrs(omit, attrs) { - const result = {}; - Object.keys(attrs).forEach((key) => { - if (omit.indexOf(key) < 0) { - result[key] = attrs[key]; - } - }); - return result; - } - function isElementHidden(element) { - return element.offsetParent === null; - } - - function Button(props, ...children) { - const cls = mergeClass("button", props.class); - const attrs = omitAttrs(["class"], props); - return m$1( - "button", - {class: cls, ...attrs}, - m$1("span", {class: "button__wrapper"}, ...children) - ); - } - - function ControlGroup(props, control, description) { - return m$1( - "span", - {class: ["control-group", props.class]}, - control, - description - ); - } - function Control(props, ...content) { - return m$1( - "span", - {class: ["control-group__control", props.class]}, - ...content - ); - } - function Description(props, ...content) { - return m$1( - "span", - {class: ["control-group__description", props.class]}, - ...content - ); - } - Object.assign(ControlGroup, {Control, Description}); - - function evalMath(expression) { - const rpnStack = []; - const workingStack = []; - let lastToken; - for (let i = 0, len = expression.length; i < len; i++) { - const token = expression[i]; - if (!token || token === " ") { - continue; - } - if (operators.has(token)) { - const op = operators.get(token); - while (workingStack.length) { - const currentOp = operators.get(workingStack[0]); - if (!currentOp) { - break; - } - if (op.lessOrEqualThan(currentOp)) { - rpnStack.push(workingStack.shift()); - } else { - break; - } - } - workingStack.unshift(token); - } else if (!lastToken || operators.has(lastToken)) { - rpnStack.push(token); - } else { - rpnStack[rpnStack.length - 1] += token; - } - lastToken = token; - } - rpnStack.push(...workingStack); - const stack = []; - for (let i = 0, len = rpnStack.length; i < len; i++) { - const op = operators.get(rpnStack[i]); - if (op) { - const args = stack.splice(0, 2); - stack.push(op.exec(args[1], args[0])); - } else { - stack.unshift(parseFloat(rpnStack[i])); - } - } - return stack[0]; - } - class Operator { - precendce; - execMethod; - constructor(precedence, method) { - this.precendce = precedence; - this.execMethod = method; - } - exec(left, right) { - return this.execMethod(left, right); - } - lessOrEqualThan(op) { - return this.precendce <= op.precendce; - } - } - const operators = new Map([ - ["+", new Operator(1, (left, right) => left + right)], - ["-", new Operator(1, (left, right) => left - right)], - ["*", new Operator(2, (left, right) => left * right)], - ["/", new Operator(2, (left, right) => left / right)] - ]); - - function getParenthesesRange(input, searchStartIndex = 0) { - return getOpenCloseRange(input, searchStartIndex, "(", ")", []); - } - function getOpenCloseRange( - input, - searchStartIndex, - openToken, - closeToken, - excludeRanges - ) { - let indexOf; - if (excludeRanges.length === 0) { - indexOf = (token, pos) => input.indexOf(token, pos); - } else { - indexOf = (token, pos) => - indexOfExcluding(input, token, pos, excludeRanges); - } - const {length} = input; - let depth = 0; - let firstOpenIndex = -1; - for (let i = searchStartIndex; i < length; i++) { - if (depth === 0) { - const openIndex = indexOf(openToken, i); - if (openIndex < 0) { - break; - } - firstOpenIndex = openIndex; - depth++; - i = openIndex; - } else { - const closeIndex = indexOf(closeToken, i); - if (closeIndex < 0) { - break; - } - const openIndex = indexOf(openToken, i); - if (openIndex < 0 || closeIndex <= openIndex) { - depth--; - if (depth === 0) { - return {start: firstOpenIndex, end: closeIndex + 1}; - } - i = closeIndex; - } else { - depth++; - i = openIndex; - } - } - } - return null; - } - function indexOfExcluding(input, search, position, excludeRanges) { - const i = input.indexOf(search, position); - const exclusion = excludeRanges.find((r) => i >= r.start && i < r.end); - if (exclusion) { - return indexOfExcluding( - input, - search, - exclusion.end, - excludeRanges - ); - } - return i; - } - - const isSystemDarkModeEnabled = () => - matchMedia("(prefers-color-scheme: dark)").matches; - - const rgbaParseCache = new Map(); - function parseColorWithCache($color) { - $color = $color.trim(); - if (rgbaParseCache.has($color)) { - return rgbaParseCache.get($color); - } - if ($color.includes("calc(")) { - $color = lowerCalcExpression($color); - } - const color = parse($color); - color && rgbaParseCache.set($color, color); - return color; - } - function hslToRGB({h, s, l, a = 1}) { - if (s === 0) { - const [r, b, g] = [l, l, l].map((x) => Math.round(x * 255)); - return {r, g, b, a}; - } - const c = (1 - Math.abs(2 * l - 1)) * s; - const x = c * (1 - Math.abs(((h / 60) % 2) - 1)); - const m = l - c / 2; - const [r, g, b] = ( - h < 60 - ? [c, x, 0] - : h < 120 - ? [x, c, 0] - : h < 180 - ? [0, c, x] - : h < 240 - ? [0, x, c] - : h < 300 - ? [x, 0, c] - : [c, 0, x] - ).map((n) => Math.round((n + m) * 255)); - return {r, g, b, a}; - } - function rgbToHSL({r: r255, g: g255, b: b255, a = 1}) { - const r = r255 / 255; - const g = g255 / 255; - const b = b255 / 255; - const max = Math.max(r, g, b); - const min = Math.min(r, g, b); - const c = max - min; - const l = (max + min) / 2; - if (c === 0) { - return {h: 0, s: 0, l, a}; - } - let h = - (max === r - ? ((g - b) / c) % 6 - : max === g - ? (b - r) / c + 2 - : (r - g) / c + 4) * 60; - if (h < 0) { - h += 360; - } - const s = c / (1 - Math.abs(2 * l - 1)); - return {h, s, l, a}; - } - function toFixed(n, digits = 0) { - const fixed = n.toFixed(digits); - if (digits === 0) { - return fixed; - } - const dot = fixed.indexOf("."); - if (dot >= 0) { - const zerosMatch = fixed.match(/0+$/); - if (zerosMatch) { - if (zerosMatch.index === dot + 1) { - return fixed.substring(0, dot); - } - return fixed.substring(0, zerosMatch.index); - } - } - return fixed; - } - function rgbToHexString({r, g, b, a}) { - return `#${(a != null && a < 1 - ? [r, g, b, Math.round(a * 255)] - : [r, g, b] - ) - .map((x) => { - return `${x < 16 ? "0" : ""}${x.toString(16)}`; - }) - .join("")}`; - } - function hslToString(hsl) { - const {h, s, l, a} = hsl; - if (a != null && a < 1) { - return `hsla(${toFixed(h)}, ${toFixed(s * 100)}%, ${toFixed(l * 100)}%, ${toFixed(a, 2)})`; - } - return `hsl(${toFixed(h)}, ${toFixed(s * 100)}%, ${toFixed(l * 100)}%)`; - } - const rgbMatch = /^rgba?\([^\(\)]+\)$/; - const hslMatch = /^hsla?\([^\(\)]+\)$/; - const hexMatch = /^#[0-9a-f]+$/i; - function parse($color) { - const c = $color.trim().toLowerCase(); - if (c.match(rgbMatch)) { - return parseRGB(c); - } - if (c.match(hslMatch)) { - return parseHSL(c); - } - if (c.match(hexMatch)) { - return parseHex(c); - } - if (knownColors.has(c)) { - return getColorByName(c); - } - if (systemColors.has(c)) { - return getSystemColor(c); - } - if ($color === "transparent") { - return {r: 0, g: 0, b: 0, a: 0}; - } - if ( - (c.startsWith("color(") || c.startsWith("color-mix(")) && - c.endsWith(")") - ) { - return domParseColor(c); - } - if (c.startsWith("light-dark(") && c.endsWith(")")) { - const match = c.match( - /^light-dark\(\s*([a-z]+(\(.*\))?),\s*([a-z]+(\(.*\))?)\s*\)$/ - ); - if (match) { - const schemeColor = isSystemDarkModeEnabled() - ? match[3] - : match[1]; - return parse(schemeColor); - } - } - return null; - } - function getNumbers($color) { - const numbers = []; - let prevPos = 0; - let isMining = false; - const startIndex = $color.indexOf("("); - $color = $color.substring(startIndex + 1, $color.length - 1); - for (let i = 0; i < $color.length; i++) { - const c = $color[i]; - if ((c >= "0" && c <= "9") || c === "." || c === "+" || c === "-") { - isMining = true; - } else if (isMining && (c === " " || c === "," || c === "/")) { - numbers.push($color.substring(prevPos, i)); - isMining = false; - prevPos = i + 1; - } else if (!isMining) { - prevPos = i + 1; - } - } - if (isMining) { - numbers.push($color.substring(prevPos, $color.length)); - } - return numbers; - } - function getNumbersFromString(str, range, units) { - const raw = getNumbers(str); - const unitsList = Object.entries(units); - const numbers = raw - .map((r) => r.trim()) - .map((r, i) => { - let n; - const unit = unitsList.find(([u]) => r.endsWith(u)); - if (unit) { - n = - (parseFloat(r.substring(0, r.length - unit[0].length)) / - unit[1]) * - range[i]; - } else { - n = parseFloat(r); - } - if (range[i] > 1) { - return Math.round(n); - } - return n; - }); - return numbers; - } - const rgbRange = [255, 255, 255, 1]; - const rgbUnits = {"%": 100}; - function parseRGB($rgb) { - const [r, g, b, a = 1] = getNumbersFromString($rgb, rgbRange, rgbUnits); - return {r, g, b, a}; - } - const hslRange = [360, 1, 1, 1]; - const hslUnits = {"%": 100, "deg": 360, "rad": 2 * Math.PI, "turn": 1}; - function parseHSL($hsl) { - const [h, s, l, a = 1] = getNumbersFromString($hsl, hslRange, hslUnits); - return hslToRGB({h, s, l, a}); - } - function parseHex($hex) { - const h = $hex.substring(1); - switch (h.length) { - case 3: - case 4: { - const [r, g, b] = [0, 1, 2].map((i) => - parseInt(`${h[i]}${h[i]}`, 16) - ); - const a = - h.length === 3 ? 1 : parseInt(`${h[3]}${h[3]}`, 16) / 255; - return {r, g, b, a}; - } - case 6: - case 8: { - const [r, g, b] = [0, 2, 4].map((i) => - parseInt(h.substring(i, i + 2), 16) - ); - const a = - h.length === 6 ? 1 : parseInt(h.substring(6, 8), 16) / 255; - return {r, g, b, a}; - } - } - return null; - } - function getColorByName($color) { - const n = knownColors.get($color); - return { - r: (n >> 16) & 255, - g: (n >> 8) & 255, - b: (n >> 0) & 255, - a: 1 - }; - } - function getSystemColor($color) { - const n = systemColors.get($color); - return { - r: (n >> 16) & 255, - g: (n >> 8) & 255, - b: (n >> 0) & 255, - a: 1 - }; - } - function lowerCalcExpression(color) { - let searchIndex = 0; - const replaceBetweenIndices = (start, end, replacement) => { - color = - color.substring(0, start) + replacement + color.substring(end); - }; - while ((searchIndex = color.indexOf("calc(")) !== -1) { - const range = getParenthesesRange(color, searchIndex); - if (!range) { - break; - } - let slice = color.slice(range.start + 1, range.end - 1); - const includesPercentage = slice.includes("%"); - slice = slice.split("%").join(""); - const output = Math.round(evalMath(slice)); - replaceBetweenIndices( - range.start - 4, - range.end, - output + (includesPercentage ? "%" : "") - ); - } - return color; - } - const knownColors = new Map( - Object.entries({ - aliceblue: 0xf0f8ff, - antiquewhite: 0xfaebd7, - aqua: 0x00ffff, - aquamarine: 0x7fffd4, - azure: 0xf0ffff, - beige: 0xf5f5dc, - bisque: 0xffe4c4, - black: 0x000000, - blanchedalmond: 0xffebcd, - blue: 0x0000ff, - blueviolet: 0x8a2be2, - brown: 0xa52a2a, - burlywood: 0xdeb887, - cadetblue: 0x5f9ea0, - chartreuse: 0x7fff00, - chocolate: 0xd2691e, - coral: 0xff7f50, - cornflowerblue: 0x6495ed, - cornsilk: 0xfff8dc, - crimson: 0xdc143c, - cyan: 0x00ffff, - darkblue: 0x00008b, - darkcyan: 0x008b8b, - darkgoldenrod: 0xb8860b, - darkgray: 0xa9a9a9, - darkgrey: 0xa9a9a9, - darkgreen: 0x006400, - darkkhaki: 0xbdb76b, - darkmagenta: 0x8b008b, - darkolivegreen: 0x556b2f, - darkorange: 0xff8c00, - darkorchid: 0x9932cc, - darkred: 0x8b0000, - darksalmon: 0xe9967a, - darkseagreen: 0x8fbc8f, - darkslateblue: 0x483d8b, - darkslategray: 0x2f4f4f, - darkslategrey: 0x2f4f4f, - darkturquoise: 0x00ced1, - darkviolet: 0x9400d3, - deeppink: 0xff1493, - deepskyblue: 0x00bfff, - dimgray: 0x696969, - dimgrey: 0x696969, - dodgerblue: 0x1e90ff, - firebrick: 0xb22222, - floralwhite: 0xfffaf0, - forestgreen: 0x228b22, - fuchsia: 0xff00ff, - gainsboro: 0xdcdcdc, - ghostwhite: 0xf8f8ff, - gold: 0xffd700, - goldenrod: 0xdaa520, - gray: 0x808080, - grey: 0x808080, - green: 0x008000, - greenyellow: 0xadff2f, - honeydew: 0xf0fff0, - hotpink: 0xff69b4, - indianred: 0xcd5c5c, - indigo: 0x4b0082, - ivory: 0xfffff0, - khaki: 0xf0e68c, - lavender: 0xe6e6fa, - lavenderblush: 0xfff0f5, - lawngreen: 0x7cfc00, - lemonchiffon: 0xfffacd, - lightblue: 0xadd8e6, - lightcoral: 0xf08080, - lightcyan: 0xe0ffff, - lightgoldenrodyellow: 0xfafad2, - lightgray: 0xd3d3d3, - lightgrey: 0xd3d3d3, - lightgreen: 0x90ee90, - lightpink: 0xffb6c1, - lightsalmon: 0xffa07a, - lightseagreen: 0x20b2aa, - lightskyblue: 0x87cefa, - lightslategray: 0x778899, - lightslategrey: 0x778899, - lightsteelblue: 0xb0c4de, - lightyellow: 0xffffe0, - lime: 0x00ff00, - limegreen: 0x32cd32, - linen: 0xfaf0e6, - magenta: 0xff00ff, - maroon: 0x800000, - mediumaquamarine: 0x66cdaa, - mediumblue: 0x0000cd, - mediumorchid: 0xba55d3, - mediumpurple: 0x9370db, - mediumseagreen: 0x3cb371, - mediumslateblue: 0x7b68ee, - mediumspringgreen: 0x00fa9a, - mediumturquoise: 0x48d1cc, - mediumvioletred: 0xc71585, - midnightblue: 0x191970, - mintcream: 0xf5fffa, - mistyrose: 0xffe4e1, - moccasin: 0xffe4b5, - navajowhite: 0xffdead, - navy: 0x000080, - oldlace: 0xfdf5e6, - olive: 0x808000, - olivedrab: 0x6b8e23, - orange: 0xffa500, - orangered: 0xff4500, - orchid: 0xda70d6, - palegoldenrod: 0xeee8aa, - palegreen: 0x98fb98, - paleturquoise: 0xafeeee, - palevioletred: 0xdb7093, - papayawhip: 0xffefd5, - peachpuff: 0xffdab9, - peru: 0xcd853f, - pink: 0xffc0cb, - plum: 0xdda0dd, - powderblue: 0xb0e0e6, - purple: 0x800080, - rebeccapurple: 0x663399, - red: 0xff0000, - rosybrown: 0xbc8f8f, - royalblue: 0x4169e1, - saddlebrown: 0x8b4513, - salmon: 0xfa8072, - sandybrown: 0xf4a460, - seagreen: 0x2e8b57, - seashell: 0xfff5ee, - sienna: 0xa0522d, - silver: 0xc0c0c0, - skyblue: 0x87ceeb, - slateblue: 0x6a5acd, - slategray: 0x708090, - slategrey: 0x708090, - snow: 0xfffafa, - springgreen: 0x00ff7f, - steelblue: 0x4682b4, - tan: 0xd2b48c, - teal: 0x008080, - thistle: 0xd8bfd8, - tomato: 0xff6347, - turquoise: 0x40e0d0, - violet: 0xee82ee, - wheat: 0xf5deb3, - white: 0xffffff, - whitesmoke: 0xf5f5f5, - yellow: 0xffff00, - yellowgreen: 0x9acd32 - }) - ); - const systemColors = new Map( - Object.entries({ - "ActiveBorder": 0x3b99fc, - "ActiveCaption": 0x000000, - "AppWorkspace": 0xaaaaaa, - "Background": 0x6363ce, - "ButtonFace": 0xffffff, - "ButtonHighlight": 0xe9e9e9, - "ButtonShadow": 0x9fa09f, - "ButtonText": 0x000000, - "CaptionText": 0x000000, - "GrayText": 0x7f7f7f, - "Highlight": 0xb2d7ff, - "HighlightText": 0x000000, - "InactiveBorder": 0xffffff, - "InactiveCaption": 0xffffff, - "InactiveCaptionText": 0x000000, - "InfoBackground": 0xfbfcc5, - "InfoText": 0x000000, - "Menu": 0xf6f6f6, - "MenuText": 0xffffff, - "Scrollbar": 0xaaaaaa, - "ThreeDDarkShadow": 0x000000, - "ThreeDFace": 0xc0c0c0, - "ThreeDHighlight": 0xffffff, - "ThreeDLightShadow": 0xffffff, - "ThreeDShadow": 0x000000, - "Window": 0xececec, - "WindowFrame": 0xaaaaaa, - "WindowText": 0x000000, - "-webkit-focus-ring-color": 0xe59700 - }).map(([key, value]) => [key.toLowerCase(), value]) - ); - let canvas; - let context; - function domParseColor($color) { - if (!context) { - canvas = document.createElement("canvas"); - canvas.width = 1; - canvas.height = 1; - context = canvas.getContext("2d", {willReadFrequently: true}); - } - context.fillStyle = $color; - context.fillRect(0, 0, 1, 1); - const d = context.getImageData(0, 0, 1, 1).data; - const color = `rgba(${d[0]}, ${d[1]}, ${d[2]}, ${(d[3] / 255).toFixed(2)})`; - return parseRGB(color); - } - - function TextBox(props) { - const cls = mergeClass("textbox", props.class); - const attrs = omitAttrs(["class", "type"], props); - const type = props.type || "text"; - return m$1("input", { - class: cls, - type: type, - spellcheck: "false", - ...attrs - }); - } - - function scale(x, inLow, inHigh, outLow, outHigh) { - return ((x - inLow) * (outHigh - outLow)) / (inHigh - inLow) + outLow; - } - function clamp(x, min, max) { - return Math.min(max, Math.max(min, x)); - } - - const hsbPickerDefaults = { - wasPrevHidden: true, - hueCanvasRendered: false, - activeHSB: null, - activeChangeHandler: null, - hueTouchStartHandler: null, - sbTouchStartHandler: null - }; - function rgbToHSB({r, g, b}) { - const min = Math.min(r, g, b); - const max = Math.max(r, g, b); - return { - h: rgbToHSL({r, g, b}).h, - s: max === 0 ? 0 : 1 - min / max, - b: max / 255 - }; - } - function hsbToRGB({h: hue, s: sat, b: br}) { - let c; - if (hue < 60) { - c = [1, hue / 60, 0]; - } else if (hue < 120) { - c = [(120 - hue) / 60, 1, 0]; - } else if (hue < 180) { - c = [0, 1, (hue - 120) / 60]; - } else if (hue < 240) { - c = [0, (240 - hue) / 60, 1]; - } else if (hue < 300) { - c = [(hue - 240) / 60, 0, 1]; - } else { - c = [1, 0, (360 - hue) / 60]; - } - const max = Math.max(...c); - const [r, g, b] = c - .map((v) => v + (max - v) * (1 - sat)) - .map((v) => v * br) - .map((v) => Math.round(v * 255)); - return {r, g, b, a: 1}; - } - function hsbToString(hsb) { - const rgb = hsbToRGB(hsb); - return rgbToHexString(rgb); - } - function render(canvas, getPixel) { - const {width, height} = canvas; - const context = canvas.getContext("2d"); - const imageData = context.getImageData(0, 0, width, height); - const d = imageData.data; - for (let y = 0; y < height; y++) { - for (let x = 0; x < width; x++) { - const i = 4 * (y * width + x); - const c = getPixel(x, y); - for (let j = 0; j < 4; j++) { - d[i + j] = c[j]; - } - } - } - context.putImageData(imageData, 0, 0); - } - function renderHue(canvas) { - const {height} = canvas; - render(canvas, (_, y) => { - const hue = scale(y, 0, height, 0, 360); - const {r, g, b} = hsbToRGB({h: hue, s: 1, b: 1}); - return new Uint8ClampedArray([r, g, b, 255]); - }); - } - function renderSB(hue, canvas) { - const {width, height} = canvas; - render(canvas, (x, y) => { - const sat = scale(x, 0, width - 1, 0, 1); - const br = scale(y, 0, height - 1, 1, 0); - const {r, g, b} = hsbToRGB({h: hue, s: sat, b: br}); - return new Uint8ClampedArray([r, g, b, 255]); - }); - } - function HSBPicker(props) { - const context = getComponentContext(); - const store = context.getStore(hsbPickerDefaults); - store.activeChangeHandler = props.onChange; - const prevColor = context.prev && context.prev.props.color; - const prevActiveColor = store.activeHSB - ? hsbToString(store.activeHSB) - : null; - const didColorChange = - props.color !== prevColor && props.color !== prevActiveColor; - let activeHSB; - if (didColorChange) { - const rgb = parseColorWithCache(props.color); - activeHSB = rgbToHSB(rgb); - store.activeHSB = activeHSB; - } else { - activeHSB = store.activeHSB; - } - function onSBCanvasRender(canvas) { - if (isElementHidden(canvas)) { - return; - } - const hue = activeHSB.h; - const prevHue = - prevColor && rgbToHSB(parseColorWithCache(prevColor)).h; - if (store.wasPrevHidden || hue !== prevHue) { - renderSB(hue, canvas); - } - store.wasPrevHidden = false; - } - function onHueCanvasRender(canvas) { - if (store.hueCanvasRendered || isElementHidden(canvas)) { - return; - } - store.hueCanvasRendered = true; - renderHue(canvas); - } - function createHSBSwipeHandler(getEventHSB) { - return createSwipeHandler((startEvt, startNativeEvt) => { - const rect = - startNativeEvt.currentTarget.getBoundingClientRect(); - function onPointerMove(e) { - store.activeHSB = getEventHSB({...e, rect}); - props.onColorPreview(hsbToString(store.activeHSB)); - context.refresh(); - } - function onPointerUp(e) { - const hsb = getEventHSB({...e, rect}); - store.activeHSB = hsb; - props.onChange(hsbToString(hsb)); - } - store.activeHSB = getEventHSB({...startEvt, rect}); - context.refresh(); - return { - move: onPointerMove, - up: onPointerUp - }; - }); - } - const onSBPointerDown = createHSBSwipeHandler( - ({clientX, clientY, rect}) => { - const sat = clamp((clientX - rect.left) / rect.width, 0, 1); - const br = clamp(1 - (clientY - rect.top) / rect.height, 0, 1); - return {...activeHSB, s: sat, b: br}; - } - ); - const onHuePointerDown = createHSBSwipeHandler(({clientY, rect}) => { - const hue = clamp((clientY - rect.top) / rect.height, 0, 1) * 360; - return {...activeHSB, h: hue}; - }); - const hueCursorStyle = { - "background-color": hslToString({ - h: activeHSB.h, - s: 1, - l: 0.5, - a: 1 - }), - "left": "0%", - "top": `${(activeHSB.h / 360) * 100}%` - }; - const sbCursorStyle = { - "background-color": rgbToHexString(hsbToRGB(activeHSB)), - "left": `${activeHSB.s * 100}%`, - "top": `${(1 - activeHSB.b) * 100}%` - }; - return m$1( - "span", - {class: "hsb-picker"}, - m$1( - "span", - { - class: "hsb-picker__sb-container", - onmousedown: onSBPointerDown, - onupdate: (el) => { - if (store.sbTouchStartHandler) { - el.removeEventListener( - "touchstart", - store.sbTouchStartHandler - ); - } - el.addEventListener("touchstart", onSBPointerDown, { - passive: true - }); - store.sbTouchStartHandler = onSBPointerDown; - } - }, - m$1("canvas", { - class: "hsb-picker__sb-canvas", - onrender: onSBCanvasRender - }), - m$1("span", { - class: "hsb-picker__sb-cursor", - style: sbCursorStyle - }) - ), - m$1( - "span", - { - class: "hsb-picker__hue-container", - onmousedown: onHuePointerDown, - onupdate: (el) => { - if (store.hueTouchStartHandler) { - el.removeEventListener( - "touchstart", - store.hueTouchStartHandler - ); - } - el.addEventListener("touchstart", onHuePointerDown, { - passive: true - }); - store.hueTouchStartHandler = onHuePointerDown; - } - }, - m$1("canvas", { - class: "hsb-picker__hue-canvas", - onrender: onHueCanvasRender - }), - m$1("span", { - class: "hsb-picker__hue-cursor", - style: hueCursorStyle - }) - ) - ); - } - - function isValidColor(color) { - return Boolean(parseColorWithCache(color)); - } - const colorPickerFocuses = new WeakMap(); - function focusColorPicker(node) { - const focus = colorPickerFocuses.get(node); - focus(); - } - function ColorPicker(props) { - const context = getComponentContext(); - context.onRender((node) => colorPickerFocuses.set(node, focus)); - const store = context.store; - const isColorValid = isValidColor(props.color); - function onColorPreview(previewColor) { - store.previewNode.style.backgroundColor = previewColor; - store.textBoxNode.value = previewColor; - store.textBoxNode.blur(); - } - function onColorChange(rawValue) { - const value = rawValue.trim(); - if (isValidColor(value)) { - props.onChange(value); - } else { - props.onChange(props.color); - } - } - function focus() { - if (store.isFocused) { - return; - } - store.isFocused = true; - context.refresh(); - window.addEventListener("mousedown", onOuterClick, {passive: true}); - } - function blur() { - if (!store.isFocused) { - return; - } - window.removeEventListener("mousedown", onOuterClick); - store.isFocused = false; - context.refresh(); - } - function toggleFocus() { - if (store.isFocused) { - blur(); - } else { - focus(); - } - } - function onOuterClick(e) { - if (!e.composedPath().some((el) => el === context.node)) { - blur(); - } - } - const textBox = m$1(TextBox, { - class: "color-picker__input", - onrender: (el) => { - store.textBoxNode = el; - store.textBoxNode.value = isColorValid ? props.color : ""; - }, - onkeypress: (e) => { - const input = e.target; - if (e.key === "Enter") { - const {value} = input; - onColorChange(value); - blur(); - onColorPreview(value); - } - }, - onfocus: focus - }); - const previewElement = m$1("span", { - class: "color-picker__preview", - onclick: toggleFocus, - onrender: (el) => { - store.previewNode = el; - el.style.backgroundColor = isColorValid - ? props.color - : "transparent"; - } - }); - const resetButton = props.canReset - ? m$1("span", { - role: "button", - class: "color-picker__reset", - onclick: () => { - props.onReset(); - blur(); - } - }) - : null; - const textBoxLine = m$1( - "span", - {class: "color-picker__textbox-line"}, - textBox, - previewElement, - resetButton - ); - const hsbLine = isColorValid - ? m$1( - "span", - {class: "color-picker__hsb-line"}, - m$1(HSBPicker, { - color: props.color, - onChange: onColorChange, - onColorPreview: onColorPreview - }) - ) - : null; - return m$1( - "span", - { - class: [ - "color-picker", - store.isFocused && "color-picker--focused", - props.class - ] - }, - m$1("span", {class: "color-picker__wrapper"}, textBoxLine, hsbLine) - ); - } - Object.assign(ColorPicker, {focus: focusColorPicker}); - - const DEFAULT_OVERLAY_KEY = Symbol(); - const overlayNodes = new Map(); - const clickListeners = new WeakMap(); - function getOverlayDOMNode(key) { - if (key == null) { - key = DEFAULT_OVERLAY_KEY; - } - if (!overlayNodes.has(key)) { - const node = document.createElement("div"); - node.classList.add("overlay"); - node.addEventListener( - "click", - (e) => { - if (clickListeners.has(node) && e.currentTarget === node) { - const listener = clickListeners.get(node); - listener(); - } - }, - {passive: true} - ); - overlayNodes.set(key, node); - } - return overlayNodes.get(key); - } - function Overlay(props) { - return getOverlayDOMNode(props.key); - } - function Portal(props, ...content) { - const context = getComponentContext(); - context.onRender(() => { - const node = getOverlayDOMNode(props.key); - if (props.onOuterClick) { - clickListeners.set(node, props.onOuterClick); - } else { - clickListeners.delete(node); - } - render$1(node, content); - }); - context.onRemove(() => { - const container = getOverlayDOMNode(props.key); - render$1(container, null); - }); - return context.leave(); - } - var Overlay$1 = Object.assign(Overlay, {Portal}); - - function MessageBox(props) { - return m$1( - Overlay$1.Portal, - {key: props.portalKey, onOuterClick: props.onCancel}, - m$1( - "div", - {class: "message-box"}, - m$1("label", {class: "message-box__caption"}, props.caption), - m$1( - "div", - {class: "message-box__buttons"}, - m$1( - Button, - { - class: "message-box__button message-box__button-ok", - onclick: props.onOK - }, - "OK" - ), - props.hideCancel - ? null - : m$1( - Button, - { - class: "message-box__button message-box__button-cancel", - onclick: props.onCancel - }, - "Cancel" - ) - ) - ) - ); - } - - function cachedFactory(factory, size) { - const cache = new Map(); - return (key) => { - if (cache.has(key)) { - return cache.get(key); - } - const value = factory(key); - cache.set(key, value); - if (cache.size > size) { - const first = cache.keys().next().value; - cache.delete(first); - } - return value; - }; - } - - function getURLHostOrProtocol($url) { - const url = new URL($url); - if (url.host) { - return url.host; - } else if (url.protocol === "file:") { - return url.pathname; - } - return url.protocol; - } - function isURLInList(url, list) { - for (let i = 0; i < list.length; i++) { - if (isURLMatched(url, list[i])) { - return true; - } - } - return false; - } - function isURLMatched(url, urlTemplate) { - if (isRegExp(urlTemplate)) { - const regexp = createRegExp(urlTemplate); - return regexp ? regexp.test(url) : false; - } - return matchURLPattern(url, urlTemplate); - } - const URL_CACHE_SIZE = 32; - const prepareURL = cachedFactory((url) => { - let parsed; - try { - parsed = new URL(url); - } catch (err) { - return null; - } - const {hostname, pathname, protocol, port} = parsed; - const hostParts = hostname.split(".").reverse(); - const pathParts = pathname.split("/").slice(1); - if (!pathParts[pathParts.length - 1]) { - pathParts.splice(pathParts.length - 1, 1); - } - return { - hostParts, - pathParts, - port, - protocol - }; - }, URL_CACHE_SIZE); - const URL_MATCH_CACHE_SIZE = 32 * 1024; - const preparePattern = cachedFactory((pattern) => { - if (!pattern) { - return null; - } - const exactStart = pattern.startsWith("^"); - const exactEnd = pattern.endsWith("$"); - if (exactStart) { - pattern = pattern.substring(1); - } - if (exactEnd) { - pattern = pattern.substring(0, pattern.length - 1); - } - let protocol = ""; - const protocolIndex = pattern.indexOf("://"); - if (protocolIndex > 0) { - protocol = pattern.substring(0, protocolIndex + 1); - pattern = pattern.substring(protocolIndex + 3); - } - const slashIndex = pattern.indexOf("/"); - const host = - slashIndex < 0 ? pattern : pattern.substring(0, slashIndex); - let hostName = host; - let isIPv6 = false; - let ipV6End = -1; - if (host.startsWith("[")) { - ipV6End = host.indexOf("]"); - if (ipV6End > 0) { - isIPv6 = true; - } - } - let port = "*"; - const portIndex = host.lastIndexOf(":"); - if (portIndex >= 0 && (!isIPv6 || ipV6End < portIndex)) { - hostName = host.substring(0, portIndex); - port = host.substring(portIndex + 1); - } - if (isIPv6) { - try { - const ipV6URL = new URL(`http://${hostName}`); - hostName = ipV6URL.hostname; - } catch (err) {} - } - const hostParts = hostName.split(".").reverse(); - const path = slashIndex < 0 ? "" : pattern.substring(slashIndex + 1); - const pathParts = path.split("/"); - if (!pathParts[pathParts.length - 1]) { - pathParts.splice(pathParts.length - 1, 1); - } - return { - hostParts, - pathParts, - port, - exactStart, - exactEnd, - protocol - }; - }, URL_MATCH_CACHE_SIZE); - function matchURLPattern(url, pattern) { - const u = prepareURL(url); - const p = preparePattern(pattern); - if ( - !(u && p) || - p.hostParts.length > u.hostParts.length || - (p.exactStart && p.hostParts.length !== u.hostParts.length) || - (p.exactEnd && p.pathParts.length !== u.pathParts.length) || - (p.port !== "*" && p.port !== u.port) || - (p.protocol && p.protocol !== u.protocol) - ) { - return false; - } - for (let i = 0; i < p.hostParts.length; i++) { - const pHostPart = p.hostParts[i]; - const uHostPart = u.hostParts[i]; - if (pHostPart !== "*" && pHostPart !== uHostPart) { - return false; - } - } - if ( - p.hostParts.length >= 2 && - p.hostParts.at(-1) !== "*" && - (p.hostParts.length < u.hostParts.length - 1 || - (p.hostParts.length === u.hostParts.length - 1 && - u.hostParts.at(-1) !== "www")) - ) { - return false; - } - if (p.pathParts.length === 0) { - return true; - } - if (p.pathParts.length > u.pathParts.length) { - return false; - } - for (let i = 0; i < p.pathParts.length; i++) { - const pPathPart = p.pathParts[i]; - const uPathPart = u.pathParts[i]; - if (pPathPart !== "*" && pPathPart !== uPathPart) { - return false; - } - } - return true; - } - function isRegExp(pattern) { - return ( - pattern.startsWith("/") && - pattern.endsWith("/") && - pattern.length > 2 - ); - } - const REGEXP_CACHE_SIZE = 1024; - const createRegExp = cachedFactory((pattern) => { - if (pattern.startsWith("/")) { - pattern = pattern.substring(1); - } - if (pattern.endsWith("/")) { - pattern = pattern.substring(0, pattern.length - 1); - } - try { - return new RegExp(pattern); - } catch (err) { - return null; - } - }, REGEXP_CACHE_SIZE); - - function Body({data, actions}) { - const context = getComponentContext(); - const host = getURLHostOrProtocol(data.activeTab.url); - const custom = data.settings.customThemes.find(({url}) => - isURLInList(data.activeTab.url, url) - ); - let textNode; - const placeholderText = [ - "* {", - " background-color: #234 !important;", - " color: #cba !important;", - "}" - ].join("\n"); - function onTextRender(node) { - textNode = node; - textNode.value = - (custom - ? custom.theme.stylesheet - : data.settings.theme.stylesheet) || ""; - if (document.activeElement !== textNode) { - textNode.focus(); - } - } - function applyStyleSheet(css) { - if (custom) { - custom.theme = {...custom.theme, ...{stylesheet: css}}; - actions.changeSettings({ - customThemes: data.settings.customThemes - }); - } else { - actions.setTheme({stylesheet: css}); - } - } - function showDialog() { - context.store.isDialogVisible = true; - context.refresh(); - } - function hideDialog() { - context.store.isDialogVisible = false; - context.refresh(); - } - const dialog = - context && context.store.isDialogVisible - ? m$1(MessageBox, { - caption: - "Are you sure you want to remove current changes? You cannot restore them later.", - onOK: reset, - onCancel: hideDialog - }) - : null; - function reset() { - context.store.isDialogVisible = false; - applyStyleSheet(""); - } - function apply() { - const css = textNode.value; - applyStyleSheet(css); - } - return m$1( - "body", - null, - m$1( - "header", - null, - m$1("img", { - id: "logo", - src: "../assets/images/darkreader-type.svg", - alt: "Dark Reader" - }), - m$1("h1", {id: "title"}, "CSS Editor") - ), - m$1("h3", {class: "sub-title"}, custom ? host : "All websites"), - m$1("textarea", { - class: "editor", - native: true, - placeholder: placeholderText, - onrender: onTextRender, - spellcheck: "false", - autocorrect: "off", - autocomplete: "off", - autocapitalize: "off" - }), - m$1( - "div", - {class: "buttons"}, - m$1(Button, {onclick: showDialog}, "Reset changes", dialog), - m$1(Button, {onclick: apply}, "Apply") - ), - m$1(Overlay$1, null) - ); - } - - var MessageTypeUItoBG; - (function (MessageTypeUItoBG) { - MessageTypeUItoBG["GET_DATA"] = "ui-bg-get-data"; - MessageTypeUItoBG["GET_DEVTOOLS_DATA"] = "ui-bg-get-devtools-data"; - MessageTypeUItoBG["SUBSCRIBE_TO_CHANGES"] = - "ui-bg-subscribe-to-changes"; - MessageTypeUItoBG["UNSUBSCRIBE_FROM_CHANGES"] = - "ui-bg-unsubscribe-from-changes"; - MessageTypeUItoBG["CHANGE_SETTINGS"] = "ui-bg-change-settings"; - MessageTypeUItoBG["SET_THEME"] = "ui-bg-set-theme"; - MessageTypeUItoBG["TOGGLE_ACTIVE_TAB"] = "ui-bg-toggle-active-tab"; - MessageTypeUItoBG["MARK_NEWS_AS_READ"] = "ui-bg-mark-news-as-read"; - MessageTypeUItoBG["MARK_NEWS_AS_DISPLAYED"] = - "ui-bg-mark-news-as-displayed"; - MessageTypeUItoBG["LOAD_CONFIG"] = "ui-bg-load-config"; - MessageTypeUItoBG["APPLY_DEV_DYNAMIC_THEME_FIXES"] = - "ui-bg-apply-dev-dynamic-theme-fixes"; - MessageTypeUItoBG["RESET_DEV_DYNAMIC_THEME_FIXES"] = - "ui-bg-reset-dev-dynamic-theme-fixes"; - MessageTypeUItoBG["APPLY_DEV_INVERSION_FIXES"] = - "ui-bg-apply-dev-inversion-fixes"; - MessageTypeUItoBG["RESET_DEV_INVERSION_FIXES"] = - "ui-bg-reset-dev-inversion-fixes"; - MessageTypeUItoBG["APPLY_DEV_STATIC_THEMES"] = - "ui-bg-apply-dev-static-themes"; - MessageTypeUItoBG["RESET_DEV_STATIC_THEMES"] = - "ui-bg-reset-dev-static-themes"; - MessageTypeUItoBG["COLOR_SCHEME_CHANGE"] = "ui-bg-color-scheme-change"; - MessageTypeUItoBG["HIDE_HIGHLIGHTS"] = "ui-bg-hide-highlights"; - })(MessageTypeUItoBG || (MessageTypeUItoBG = {})); - var MessageTypeBGtoUI; - (function (MessageTypeBGtoUI) { - MessageTypeBGtoUI["CHANGES"] = "bg-ui-changes"; - })(MessageTypeBGtoUI || (MessageTypeBGtoUI = {})); - var DebugMessageTypeBGtoUI; - (function (DebugMessageTypeBGtoUI) { - DebugMessageTypeBGtoUI["CSS_UPDATE"] = "debug-bg-ui-css-update"; - DebugMessageTypeBGtoUI["UPDATE"] = "debug-bg-ui-update"; - })(DebugMessageTypeBGtoUI || (DebugMessageTypeBGtoUI = {})); - var MessageTypeBGtoCS; - (function (MessageTypeBGtoCS) { - MessageTypeBGtoCS["ADD_CSS_FILTER"] = "bg-cs-add-css-filter"; - MessageTypeBGtoCS["ADD_DYNAMIC_THEME"] = "bg-cs-add-dynamic-theme"; - MessageTypeBGtoCS["ADD_STATIC_THEME"] = "bg-cs-add-static-theme"; - MessageTypeBGtoCS["ADD_SVG_FILTER"] = "bg-cs-add-svg-filter"; - MessageTypeBGtoCS["CLEAN_UP"] = "bg-cs-clean-up"; - MessageTypeBGtoCS["FETCH_RESPONSE"] = "bg-cs-fetch-response"; - MessageTypeBGtoCS["UNSUPPORTED_SENDER"] = "bg-cs-unsupported-sender"; - })(MessageTypeBGtoCS || (MessageTypeBGtoCS = {})); - var DebugMessageTypeBGtoCS; - (function (DebugMessageTypeBGtoCS) { - DebugMessageTypeBGtoCS["RELOAD"] = "debug-bg-cs-reload"; - })(DebugMessageTypeBGtoCS || (DebugMessageTypeBGtoCS = {})); - var MessageTypeCStoBG; - (function (MessageTypeCStoBG) { - MessageTypeCStoBG["COLOR_SCHEME_CHANGE"] = "cs-bg-color-scheme-change"; - MessageTypeCStoBG["DARK_THEME_DETECTED"] = "cs-bg-dark-theme-detected"; - MessageTypeCStoBG["DARK_THEME_NOT_DETECTED"] = - "cs-bg-dark-theme-not-detected"; - MessageTypeCStoBG["FETCH"] = "cs-bg-fetch"; - MessageTypeCStoBG["DOCUMENT_CONNECT"] = "cs-bg-document-connect"; - MessageTypeCStoBG["DOCUMENT_FORGET"] = "cs-bg-document-forget"; - MessageTypeCStoBG["DOCUMENT_FREEZE"] = "cs-bg-document-freeze"; - MessageTypeCStoBG["DOCUMENT_RESUME"] = "cs-bg-document-resume"; - })(MessageTypeCStoBG || (MessageTypeCStoBG = {})); - var DebugMessageTypeCStoBG; - (function (DebugMessageTypeCStoBG) { - DebugMessageTypeCStoBG["LOG"] = "debug-cs-bg-log"; - })(DebugMessageTypeCStoBG || (DebugMessageTypeCStoBG = {})); - var MessageTypeCStoUI; - (function (MessageTypeCStoUI) { - MessageTypeCStoUI["EXPORT_CSS_RESPONSE"] = "cs-ui-export-css-response"; - })(MessageTypeCStoUI || (MessageTypeCStoUI = {})); - var MessageTypeUItoCS; - (function (MessageTypeUItoCS) { - MessageTypeUItoCS["EXPORT_CSS"] = "ui-cs-export-css"; - })(MessageTypeUItoCS || (MessageTypeUItoCS = {})); - - class Connector { - changeSubscribers; - constructor() { - this.changeSubscribers = new Set(); - } - async sendRequest(type, data) { - return new Promise((resolve, reject) => { - chrome.runtime.sendMessage({type, data}, ({data, error}) => { - if (error) { - reject(error); - } else { - resolve(data); - } - }); - }); - } - async firefoxSendRequestWithResponse(type, data) { - return new Promise((resolve, reject) => { - const dataPort = chrome.runtime.connect({name: type}); - dataPort.onDisconnect.addListener(() => reject()); - dataPort.onMessage.addListener(({data, error}) => { - if (error) { - reject(error); - } else { - resolve(data); - } - dataPort.disconnect(); - }); - data && dataPort.postMessage({data}); - }); - } - async getData() { - return await this.sendRequest(MessageTypeUItoBG.GET_DATA); - } - async getDevToolsData() { - return await this.sendRequest(MessageTypeUItoBG.GET_DEVTOOLS_DATA); - } - onChangesReceived = ({type, data}) => { - if (type === MessageTypeBGtoUI.CHANGES) { - this.changeSubscribers.forEach((callback) => callback(data)); - } - }; - subscribeToChanges(callback) { - this.changeSubscribers.add(callback); - if (this.changeSubscribers.size === 1) { - chrome.runtime.onMessage.addListener(this.onChangesReceived); - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.SUBSCRIBE_TO_CHANGES - }); - } - } - async setShortcut(command, shortcut) { - return null; - } - changeSettings(settings) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.CHANGE_SETTINGS, - data: settings - }); - } - setTheme(theme) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.SET_THEME, - data: theme - }); - } - toggleActiveTab() { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.TOGGLE_ACTIVE_TAB, - data: {} - }); - } - markNewsAsRead(ids) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.MARK_NEWS_AS_READ, - data: ids - }); - } - markNewsAsDisplayed(ids) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.MARK_NEWS_AS_DISPLAYED, - data: ids - }); - } - loadConfig(options) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.LOAD_CONFIG, - data: options - }); - } - async applyDevDynamicThemeFixes(text) { - return await this.sendRequest( - MessageTypeUItoBG.APPLY_DEV_DYNAMIC_THEME_FIXES, - text - ); - } - resetDevDynamicThemeFixes() { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.RESET_DEV_DYNAMIC_THEME_FIXES - }); - } - async applyDevInversionFixes(text) { - return await this.sendRequest( - MessageTypeUItoBG.APPLY_DEV_INVERSION_FIXES, - text - ); - } - resetDevInversionFixes() { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.RESET_DEV_INVERSION_FIXES - }); - } - async applyDevStaticThemes(text) { - return await this.sendRequest( - MessageTypeUItoBG.APPLY_DEV_STATIC_THEMES, - text - ); - } - resetDevStaticThemes() { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.RESET_DEV_STATIC_THEMES - }); - } - async hideHighlights(ids) { - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.HIDE_HIGHLIGHTS, - data: ids - }); - } - disconnect() { - if (this.changeSubscribers.size > 0) { - this.changeSubscribers.clear(); - chrome.runtime.onMessage.removeListener(this.onChangesReceived); - chrome.runtime.sendMessage({ - type: MessageTypeUItoBG.UNSUBSCRIBE_FROM_CHANGES - }); - } - } - } - - function renderBody(data, actions) { - sync(document.body, m$1(Body, {data: data, actions: actions})); - } - async function start() { - const connector = new Connector(); - window.addEventListener("unload", () => connector.disconnect(), { - passive: true - }); - const data = await connector.getData(); - renderBody(data, connector); - connector.subscribeToChanges((data) => renderBody(data, connector)); - } - start(); -})(); diff --git a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/stylesheet-editor/style.css b/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/stylesheet-editor/style.css deleted file mode 100644 index bc5bde3..0000000 --- a/.config/chromium/Default/Extensions/eimadpbcbfnmbkopoojfekhnkhdbieeh/4.9.92_0/ui/stylesheet-editor/style.css +++ /dev/null @@ -1,1298 +0,0 @@ -@font-face { - font-family: "Open Sans"; - src: url("../assets/fonts/OpenSans-Regular.ttf") format("truetype"); - font-weight: normal; - font-style: normal; -} -@font-face { - font-family: "Open Sans"; - src: url("../assets/fonts/OpenSans-SemiBold.ttf") format("truetype"); - font-weight: bold; - font-style: normal; -} -@font-face { - font-family: "Open Sans"; - src: url("../assets/fonts/OpenSans-Light.ttf") format("truetype"); - font-weight: 100; - font-style: normal; -} -.button { - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - color: #ffffff; - cursor: pointer; - display: inline-block; - height: 1.5rem; - line-height: 0.75rem; - min-width: 1.5rem; - outline: none; - overflow: hidden; - padding: 0; - text-align: center; - transition: background-color 250ms; - -moz-user-select: none; - user-select: none; -} -.button:hover { - background-color: #193945; - transition: background-color 125ms; -} -.button:active { - background-color: #316e7d; -} -.button__wrapper { - height: 100%; - width: 100%; -} -.check-button .checkbox { - width: calc(100% - 2 * 0.125rem); -} -.check-button .checkbox__checkmark { - background-color: #316e7d; -} -.check-button .checkbox__checkmark::before, -.check-button .checkbox__checkmark::after { - display: none; -} -.check-button .checkbox__content { - align-items: center; - display: flex; - flex: auto; - height: 1.5rem; - justify-content: center; - -moz-user-select: none; - user-select: none; -} -.check-button .checkbox__input:checked ~ * { - color: #ffffff; -} -.check-button .checkbox__input:checked ~ .checkbox__checkmark { - background-image: url('data:image/svg+xml;utf8,'); - background-position: center; - background-repeat: no-repeat; - background-size: 1rem; -} -.check-button__description { - display: inline-block; - font-size: 0.625rem; - line-height: 0.875rem; - text-align: center; - -moz-user-select: none; - user-select: none; - width: 100%; -} -.checkbox { - align-items: stretch; - background-color: #141e24; - border: 0.125rem solid #316e7d; - cursor: pointer; - display: inline-flex; - flex: none; - flex-direction: row; - height: 1.5rem; - transition: background-color 250ms; - width: 1.5rem; -} -.checkbox:hover { - background-color: #193945; - transition: background-color 125ms; -} -.checkbox__input { - display: none; -} -.checkbox__checkmark { - display: inline-block; - height: 100%; - position: relative; - width: 1.5rem; -} -.checkbox__checkmark::before, -.checkbox__checkmark::after { - background-color: #316e7d; - content: ""; - display: inline-block; - height: 0.1875rem; - left: 0.1875rem; - position: absolute; - top: 0.6375rem; - transition: all 125ms; - width: 1.125rem; -} -.checkbox__checkmark::before { - transform: skewY(45deg); -} -.checkbox__checkmark::after { - transform: skewY(-45deg); -} -.checkbox__input:checked + .checkbox__checkmark::before, -.checkbox__input:checked + .checkbox__checkmark::after { - background-color: #ffffff; -} -.checkbox__input:checked + .checkbox__checkmark::before { - top: 0.825rem; - width: 0.375rem; -} -.checkbox__input:checked + .checkbox__checkmark::after { - left: 0.5625rem; - width: 0.75rem; -} -.control-group { - align-items: stretch; - display: inline-flex; - flex-direction: column; - width: 100%; -} -.control-group__control { - height: 1.75rem; -} -.control-group__description { - font-size: 0.625rem; - line-height: 0.875rem; - text-align: center; - -moz-user-select: none; - user-select: none; -} -.dropdown { - display: inline-block; - height: 1.5rem; - position: relative; - -moz-user-select: none; - user-select: none; - width: 100%; -} -.dropdown__selected { - align-items: center; - background-color: #316e7d; - background-image: url('data:image/svg+xml;utf8,'); - background-position: center right 0.25rem; - background-repeat: no-repeat; - background-size: 1rem; - color: #ffffff; - display: inline-flex; - height: 1.25rem; - justify-content: center; - line-height: 1.25rem; - margin-top: 0.125rem; - position: absolute; - text-align: center; - width: 100%; -} -.dropdown__selected__text { - display: inline-block; - max-width: calc(100% - 2.5rem); - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.dropdown__list { - background-color: #141e24; - border: 0.125rem solid #316e7d; - border-top: none; - box-shadow: 0 0 0.25rem black; - box-sizing: border-box; - display: none; - margin-top: 0.125rem; - overflow: hidden; - position: absolute; - width: 100%; -} -.dropdown__list__item { - align-items: center; - background-color: #141e24; - color: #ffffff; - display: inline-flex; - justify-content: center; - min-height: 1.25rem; - text-align: center; - width: 100%; -} -.dropdown__list__item:hover { - background-color: #193945; - transition: background-color 125ms; -} -.dropdown__list__item--selected { - overflow: hidden; - visibility: hidden; - white-space: nowrap; -} -.dropdown--open .dropdown__list { - display: inline-block; - margin-top: 0rem; - z-index: 1; -} -.dropdown--open .dropdown__list__item { - min-height: 1.5rem; -} -.dropdown--open .dropdown__selected { - height: 1.5rem; - margin-top: 0rem; - z-index: 2; -} -.preview .dropdown { - cursor: pointer; -} -.message-box { - background-color: #141e24; - border-bottom: 0.125rem solid #316e7d; - border-top: 0.125rem solid #316e7d; - display: flex; - flex-direction: column; - padding: 0.75rem; -} -.message-box__caption { - text-align: center; -} -.message-box__buttons { - display: flex; - flex-direction: row; - justify-content: center; - margin-top: 0.5rem; -} -.message-box__button { - min-width: 4rem; -} -.message-box__button:not(:first-child) { - margin-left: 0.5rem; -} -.message-box__button-ok { - border-color: gray; -} -.multi-switch { - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - color: #ffffff; - display: inline-flex; - height: 1.5rem; - position: relative; - -moz-user-select: none; - user-select: none; -} -.multi-switch__option { - align-items: center; - cursor: pointer; - display: inline-flex; - justify-content: center; - height: 100%; - overflow: hidden; - position: relative; - transition: background-color 250ms; - white-space: nowrap; - width: 50%; -} -.multi-switch__option:hover:not(.multi-switch__option--selected) { - background-color: #193945; -} -.multi-switch__highlight { - background-color: #316e7d; - display: inline-block; - height: 100%; - left: 0; - position: absolute; - top: 0; - transition: - left 125ms, - width 125ms; - width: 0; -} -.overlay { - align-items: center; - background-color: rgba(20, 30, 36, 0.5); - flex-direction: column; - display: inline-flex; - height: 100%; - justify-content: center; - left: 0; - position: fixed; - top: 0; - width: 100%; - z-index: 2; -} -.overlay:empty { - display: none; -} -.shortcut { - color: #53a1b3; - cursor: pointer; - display: inline-block; - font-size: 0.625rem; - line-height: 0.875rem; - outline: none; - text-align: center; - text-decoration: none; - white-space: pre; -} -.shortcut:hover { - text-decoration: underline; -} -.shortcut--edit { - color: #ffffff; -} -.shortcut::before { - content: "✎"; - direction: rtl; - display: inline-block; - line-height: 0.875rem; - visibility: hidden; - width: 0; -} -.shortcut:hover::before, -.shortcut--edit::before { - visibility: visible; -} -.tab-panel { - align-items: stretch; - display: flex; - flex-direction: column; - min-height: 0; -} -.tab-panel__button { - border-bottom: 0.125rem solid #316e7d; - border-left: none; - border-right: none; - border-top: none; - box-sizing: border-box; - color: #316e7d; - font-size: 0.875rem; - font-weight: bold; - height: 1.625rem; - padding: 0 0.625rem; - white-space: pre; -} -.tab-panel__button:hover { - color: #53a1b3; -} -.tab-panel__button:active { - background-color: #193945; -} -.tab-panel__button--active { - border-bottom: none; - border-left: 0.125rem solid #316e7d; - border-right: 0.125rem solid #316e7d; - border-top: 0.125rem solid #316e7d; - color: #e96c4c; - padding: 0 0.5rem; -} -.tab-panel__button--active:hover { - color: #e96c4c; -} -.tab-panel__buttons { - display: flex; - flex: none; - flex-direction: row; - justify-content: center; -} -.tab-panel__buttons::before, -.tab-panel__buttons::after { - border-bottom: 0.125rem solid #316e7d; - content: ""; - flex: auto; -} -.tab-panel__tabs { - display: flex; - flex: auto; - flex-direction: row; - margin-top: 0.75rem; - min-height: 0; -} -.tab-panel__tab { - background-color: #141e24; - display: flex; - opacity: 0; - overflow: hidden; - pointer-events: none; - transition: - width 250ms, - opacity 125ms; - width: 0; -} -.tab-panel__tab--active { - opacity: 1; - pointer-events: all; - transition: - width 250ms, - opacity 250ms; - width: 100%; -} -.select { - display: inline-flex; - flex-direction: column; - position: relative; -} -.select__line { - display: inline-flex; - flex-direction: row; -} -.select__textbox.textbox { - border-right: none; - flex: auto; - width: 100%; -} -.select__expand { - border-left: none; - flex: none; -} -.select__expand__icon { - display: inline-block; - height: 100%; - position: relative; - width: 100%; -} -.select__expand__icon::before, -.select__expand__icon::after { - background-color: #ffffff; - content: ""; - display: inline-block; - height: 0.1875rem; - position: absolute; - top: 0.75rem; - width: 0.5625rem; - z-index: 1; -} -.select__expand__icon::before { - left: 0.1875rem; - transform: skewY(45deg); -} -.select__expand__icon::after { - left: 0.75rem; - transform: skewY(-45deg); -} -.select__list { - background-color: #141e24; - border-bottom: 0.125rem solid #316e7d; - border-left: 0.125rem solid #316e7d; - border-right: 0.125rem solid #316e7d; - box-sizing: border-box; - left: 0; - max-height: 0; - overflow-x: hidden; - overflow-y: auto; - position: absolute; - top: calc(100% - 0.125rem); - transition: max-height 125ms; - width: 100%; - z-index: 999; -} -.select__list--expanded { - max-height: 12rem; - transition: max-height 500ms; -} -.select__list--short { - overflow: hidden; -} -.select__option { - align-items: center; - background-color: #141e24; - cursor: pointer; - display: flex; - flex: none; - height: 1.5rem; - flex-direction: row; - padding-left: 0.375rem; -} -.select__option:hover { - background-color: #193945; -} -.slider { - display: inline-block; - height: 1.5rem; - position: relative; - touch-action: none; - width: 100%; -} -.slider__track { - background-color: #193945; - display: inline-block; - height: 0.625rem; - margin-left: 0.25rem; - margin-top: 0.4375rem; - position: absolute; - width: calc(100% - 0.5rem); -} -.slider__track__fill { - background-color: #316e7d; - display: inline-block; - height: 100%; - position: absolute; -} -.slider__track__fill::before { - background-color: #316e7d; - content: ""; - height: 100%; - position: absolute; - right: 100%; - width: 0.25rem; -} -.slider__track::before, -.slider__track::after { - background-color: #193945; - content: ""; - height: 100%; - position: absolute; - width: 0.25rem; -} -.slider__track::before { - right: 100%; -} -.slider__track::after { - left: 100%; -} -.slider__thumb-wrapper { - margin-left: 0.25rem; - position: absolute; - width: calc(100% - 0.5rem); -} -.slider__thumb { - background-color: #ffffff; - cursor: pointer; - display: inline-block; - height: 1.25rem; - margin-left: -0.25rem; - margin-top: 0.125rem; - position: absolute; - width: 0.5rem; -} -.slider__thumb__value { - color: #ffffff; - cursor: default; - left: calc(100% + 0.75rem / 2); - line-height: 1.25rem; - position: absolute; - -moz-user-select: none; - user-select: none; -} -.slider__thumb__value--flip { - left: initial; - right: calc(100% + 0.75rem / 2); -} -.slider--active .slider__thumb { - box-shadow: 0 0 0.25rem black; - height: 1.5rem; - margin-top: 0rem; -} -.slider--active .slider__thumb__value { - line-height: 1.5rem; -} -.slider--active .slider__track { - height: 0.75rem; - margin-top: 0.375rem; -} -.slider__value { - display: none; -} -.text-list { - border-top: 0.125rem solid #316e7d; - margin-bottom: 0.0625rem; - min-width: 1.5rem; - overflow-x: hidden; - overflow-y: auto; -} -.text-list__textbox.textbox { - border-bottom: 0.0625rem solid #316e7d; - border-left: 0.125rem solid #316e7d; - border-right: 0.125rem solid #316e7d; - border-top: none; - box-sizing: border-box; - flex: none; - height: 1.5625rem; - width: 100%; -} -.text-list__textbox.textbox:last-child { - border-bottom: 0.125rem solid #316e7d; -} -.text-list::-webkit-scrollbar { - width: 1.25rem; -} -.text-list::-webkit-scrollbar-thumb { - border-left: 0.5rem solid #141e24; -} -.textbox { - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - color: #53a1b3; - height: 1.5rem; - line-height: 1.5rem; - outline: none; - overflow: hidden; - padding: 0; - text-indent: 0.375rem; - transition: background-color 250ms; -} -.textbox:hover, -.textbox:focus { - background-color: #193945; - transition: background-color 125ms; -} -.textbox:focus { - color: #ffffff; -} -.textbox::placeholder { - color: #316e7d; -} -input[type="time"]::-webkit-calendar-picker-indicator { - filter: invert(54%) sepia(3%) saturate(3931%) hue-rotate(153deg) - brightness(115%) contrast(75%); -} -.time-range-picker { - display: inline-flex; - flex: auto; -} -.time-range-picker__input { - text-align: center; - text-indent: 0; - width: 100%; - background-color: #141e24; -} -.time-range-picker__input--start { - border-right: none; -} -.time-range-picker__input--end { - border-left: 0.0625rem solid #316e7d; -} -.toggle { - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - color: #ffffff; - display: inline-flex; - height: 1.5rem; - position: relative; - -moz-user-select: none; - user-select: none; -} -.toggle__btn { - align-items: center; - cursor: pointer; - display: inline-flex; - justify-content: center; - height: 100%; - overflow: hidden; - position: relative; - transition: background-color 250ms; - white-space: nowrap; - width: 50%; -} -.toggle__btn:hover:not(.toggle__btn--active) { - background-color: #193945; -} -.toggle::before { - background-color: #316e7d; - content: ""; - display: inline-block; - height: 100%; - left: 50%; - position: absolute; - top: 0; - transition: left 125ms; - width: 50%; -} -.toggle--checked::before { - left: 0; -} -.updown { - align-items: stretch; - display: flex; - flex-direction: column; - -moz-user-select: none; - user-select: none; -} -.updown__line { - display: flex; - flex-direction: row; -} -.updown__line > :not(:first-child) { - margin-left: 0.5rem; -} -.updown__icon { - display: inline-block; - height: 100%; - position: relative; - width: 100%; -} -.updown__icon::before, -.updown__icon::after { - background-color: #ffffff; - content: ""; - display: inline-block; - height: 0.5625rem; - position: absolute; - width: 0.1875rem; -} -.updown__icon::before { - top: 0.1875rem; -} -.updown__icon::after { - top: 0.75rem; -} -.updown__icon-up::before { - left: 0.75rem; - transform: skewX(45deg); -} -.updown__icon-up::after { - left: 0.75rem; - transform: skewX(-45deg); -} -.updown__icon-down::before { - left: 0.5625rem; - transform: skewX(-45deg); -} -.updown__icon-down::after { - left: 0.5625rem; - transform: skewX(45deg); -} -.updown__button--disabled { - pointer-events: none; -} -.updown__button--disabled:hover, -.updown__button--disabled:active { - background-color: #141e24; -} -.updown__button--disabled .updown__icon::before, -.updown__button--disabled .updown__icon::after { - background-color: #316e7d; -} -.updown__value-text { - font-size: 0.625rem; - line-height: 0.875rem; - text-align: center; - white-space: nowrap; -} -.track { - align-items: center; - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: content-box; - display: inline-flex; - flex: auto; - flex-direction: row; - height: 1.5rem; - justify-content: center; - overflow: hidden; - position: relative; - transition: background-color 250ms; - -moz-user-select: none; - user-select: none; -} -.track:hover { - background-color: #193945; - transition: background-color 125ms; -} -.track--clickable { - cursor: pointer; -} -.track__value { - background-color: #316e7d; - height: 100%; - left: 0; - position: absolute; - top: 0; - transition: width 125ms; -} -.track__label { - color: #ffffff; - display: inline-block; - line-height: 0.75rem; - pointer-events: none; - position: relative; - white-space: nowrap; - z-index: 1; -} -.hsb-picker { - display: flex; - flex-direction: row; - padding: 0.5rem; - touch-action: none; -} -.hsb-picker__sb-container { - cursor: pointer; - height: 7.5rem; - position: relative; - -webkit-tap-highlight-color: transparent; - width: 7.5rem; -} -.hsb-picker__hue-container { - cursor: pointer; - height: 7.5rem; - margin-left: 0.5rem; - position: relative; - -webkit-tap-highlight-color: transparent; - width: 0.75rem; -} -.hsb-picker__sb-canvas { - height: 100%; - width: 100%; -} -.hsb-picker__hue-canvas { - height: 100%; - width: 100%; -} -.hsb-picker__hue-cursor, -.hsb-picker__sb-cursor { - border-radius: 50%; - box-shadow: 0 0 0 0.125rem #ffffff; - display: inline-block; - height: 0.75rem; - margin-top: -0.375rem; - position: absolute; - width: 0.75rem; - z-index: 2; -} -.hsb-picker__sb-cursor { - margin-left: -0.375rem; -} -.color-picker { - height: 1.5rem; - position: relative; - width: 100%; -} -.color-picker__wrapper { - background-color: #141e24; - display: inline-flex; - flex-direction: column; - left: 0; - overflow: hidden; - position: absolute; - top: 0; - width: 100%; -} -.color-picker--focused .color-picker__wrapper { - border: 0.125rem solid #316e7d; - box-sizing: border-box; - z-index: 1; -} -.color-picker__input { - background-color: #316e7d; - border: none; - box-sizing: border-box; - color: #ffffff; - height: 1.25rem; - margin-top: 0.125rem; - text-align: center; - width: 100%; -} -.color-picker--focused .color-picker__input { - margin-top: 0; -} -.color-picker__preview { - cursor: pointer; - display: inline-block; - height: 1rem; - left: 0.25rem; - position: absolute; - top: 0.25rem; - width: 1rem; -} -.color-picker--focused .color-picker__preview { - left: 0.125rem; - top: 0.125rem; -} -.color-picker__reset { - background-image: url('data:image/svg+xml;utf8,'); - background-position: 0 0; - background-repeat: no-repeat; - background-size: 1rem; - cursor: pointer; - display: inline-block; - height: 1rem; - position: absolute; - right: 0.25rem; - top: 0.25rem; - width: 1rem; -} -.color-picker--focused .color-picker__reset { - right: 0.125rem; - top: 0.125rem; -} -.color-picker__textbox-line { - width: 100%; -} -.color-picker__hsb-line { - display: none; - width: 100%; -} -.color-picker--focused .color-picker__hsb-line { - border-color: #316e7d; - display: block; -} -.color-dropdown { - height: 1.5rem; - position: relative; - width: 100%; -} -.color-dropdown__options { - width: 100%; -} -.color-dropdown__picker { - height: 100%; - position: absolute; - right: 0; - top: 0; - width: 100%; -} -.color-dropdown__picker--hidden { - display: none; -} -.nav-button { - background-image: url('data:image/svg+xml;utf8,'); - background-position: center right 0.25rem; - background-repeat: no-repeat; - background-size: 1rem; - width: calc(100% - 2 * 0.125rem); -} -.nav-button__content { - align-items: center; - display: inline-flex; - flex-direction: row; - height: 100%; -} -.reset-button { - width: calc(100% - 2 * 0.125rem); -} -.reset-button__content { - align-items: center; - display: inline-flex; - flex-direction: row; - height: 100%; -} -.reset-button__icon { - background-image: url('data:image/svg+xml;utf8,'); - background-position: 0 0; - background-size: 1rem; - display: inline-block; - height: 1rem; - margin-right: 0.125rem; - width: 1rem; -} -html { - background-color: #141e24; - color: #53a1b3; - color-scheme: dark; - font-family: - Open Sans, - Segoe UI, - Helvetica Neue, - Ubuntu, - sans-serif; - font-size: 16px; -} -body { - font-family: - Open Sans, - Segoe UI, - Helvetica Neue, - Ubuntu, - sans-serif; - font-size: 0.75rem; -} -input, -button { - font-family: - Open Sans, - Segoe UI, - Helvetica Neue, - Ubuntu, - sans-serif; - font-size: 0.75rem; -} -::-moz-selection { - background-color: #e96c4c; - color: #ffffff; -} -::selection { - background-color: #e96c4c; - color: #ffffff; -} -::-webkit-scrollbar { - background-color: #141e24; - width: 0.75rem; -} -::-webkit-scrollbar-thumb { - background-color: #193945; -} -::-webkit-scrollbar-thumb:hover { - background-color: #255461; -} -::-webkit-scrollbar-thumb:active { - background-color: #316e7d; -} -::-webkit-scrollbar-corner { - background-color: #141e24; -} -* { - scrollbar-color: #193945 #141e24; -} -.settings-tab-panel { - display: flex; - flex-direction: row; - gap: 1rem; - height: 100%; -} -.settings-tab-panel__buttons { - display: flex; - flex-direction: column; - flex: none; - min-width: 10rem; -} -.settings-tab-panel__button { - border: none; - box-shadow: none; - color: #53a1b3; - height: 1.75rem; - text-align: left; -} -.settings-tab-panel__button--active { - color: #e96c4c; - font-weight: bold; -} -.settings-tab-panel__button__icon { - align-items: center; - display: inline-flex; - height: 1rem; - justify-content: center; - margin-right: 0.5rem; - width: 1rem; -} -.settings-tab-panel__button__icon svg { - display: inline-block; - height: 100%; - width: 100%; -} -.settings-tab-panel__button .button__wrapper { - align-items: center; - display: flex; - flex-direction: row; -} -.settings-tab-panel__tabs { - flex: auto; - overflow: hidden; -} -.settings-tab-panel__tab { - display: none; -} -.settings-tab-panel__tab--active { - display: block; -} -.settings-tab-panel--vertical { - flex-direction: column; -} -.settings-tab-panel--vertical .settings-tab-panel__buttons { - column-gap: 0.5rem; - display: flex; - flex-direction: row; - flex-wrap: wrap; - max-width: 16rem; -} -.settings-tab-panel--vertical .settings-tab-panel__button__icon { - display: none; -} -@media screen and (max-width: 30rem) { - .settings-tab-panel { - flex-direction: column; - } - .settings-tab-panel__buttons { - column-gap: 0.5rem; - display: flex; - flex-direction: row; - flex-wrap: wrap; - max-width: 16rem; - } - .settings-tab-panel__button__icon { - display: none; - } -} -html { - height: 100%; - margin: 0; -} -body { - align-items: flex-start; - box-sizing: border-box; - display: flex; - flex-direction: column; - gap: 0.5rem; - height: 100%; - margin: 0; - padding: 1rem; -} -header { - align-items: stretch; - box-sizing: content-box; - display: flex; - flex: none; - flex-direction: row; - flex-wrap: nowrap; - justify-content: flex-start; -} -#logo { - display: inline-block; - font-size: 0.875rem; - height: 1.5rem; - width: 15rem; -} -#title { - align-items: stretch; - display: inline-flex; - flex-direction: row; - font-size: 2rem; - font-weight: 100; - line-height: 1.5rem; - height: 1.5rem; - margin: 0 0 0 0.5rem; - text-transform: uppercase; - transform: translateY(-0.0625rem); -} -.config-editor { - display: flex; - flex-direction: column; - height: 100%; -} -.sub-title { - flex: none; - font-size: 0.75rem; - font-weight: normal; - margin: 0.3rem 0 0.75rem 0; - text-transform: uppercase; -} -.editor { - background-color: #141e24; - border: 0.125rem solid #316e7d; - box-sizing: border-box; - color: #53a1b3; - flex: auto; - font-family: monospace; - font-size: 0.75rem; - min-width: 9rem; - outline: none; - padding: 0.375rem; - resize: none; - white-space: pre; - width: 100%; -} -.editor::placeholder { - color: #316e7d; -} -.editor:hover { - background-color: #15252c; -} -.editor:hover::-webkit-scrollbar, -.editor:hover::-webkit-scrollbar-corner { - background-color: #15252c; -} -.editor:focus { - background-color: #15252c; - color: #7eb9c6; -} -.editor:focus::-webkit-scrollbar, -.editor:focus::-webkit-scrollbar-corner { - background-color: #15252c; -} -.error-text { - color: #db4245; - flex: none; - font-family: monospace; - white-space: pre; -} -.buttons { - display: flex; - flex: none; - flex-direction: row; - justify-content: flex-start; - margin-top: 0.5rem; - width: 100%; -} -.buttons > :not(:first-child) { - margin-left: 0.5rem; -} -.buttons .button { - min-width: 3rem; - max-width: 6rem; - width: 100%; -} -.description { - flex: none; - margin: 0.75rem 0 0 0; - text-align: left; - white-space: wrap; -} -.description a { - color: #53a1b3; -} -@media screen and (max-width: 36rem) { - #title { - display: none; - } -} -@media screen and (max-height: 33rem) { - header, - .description { - display: none; - } - .sub-title { - margin-top: 0.5rem; - } -} -.message-box { - border: 0.125rem solid #316e7d; -} -.preview-design-button { - padding: 0 0.5rem; -} -.settings-tab-panel { - height: 100%; - overflow: hidden; - width: 100%; -} -.settings-tab-panel__tab { - height: 100%; -} -.settings-tab-panel__button__icon { - display: none; -} -.settings-tab-panel--vertical { - gap: 0; -} -.dynamic-mode-editor { - height: 100%; -} -.dynamic-per-site { - display: grid; - gap: 0.5rem; - grid: "search editor" 1.75rem "list editor" auto / 10rem auto; - height: 100%; - overflow: hidden; -} -.dynamic-per-site__search-wrapper { - grid-area: search; -} -.dynamic-per-site__search-input { - width: calc(100% - 2 * 0.125rem); -} -.dynamic-per-site__urls { - grid-area: list; - overflow: auto; -} -.dynamic-per-site__urls li { - list-style-type: none; -} -.dynamic-per-site__url { - border: none; - color: #53a1b3; - height: 1.5rem; - text-align: left; - width: 100%; -} -.dynamic-per-site__url--active { - color: #e96c4c; - font-weight: bold; -} -.dynamic-per-site .config-editor { - grid-area: editor; -} -.dynamic-per-site__add-fix__button { - padding: 0 0.5rem; -} -.dynamic-per-site__add-fix__description { - margin: 0.5rem 0 0 0; -} diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/LICENSE.txt b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/LICENSE.txt deleted file mode 100644 index f989218..0000000 --- a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/LICENSE.txt +++ /dev/null @@ -1,27 +0,0 @@ -END USER LICENSE AGREEMENT - -This End User License Agreement ("EULA") is between Unhook and you. Your use of Unhook (the "Software") is subject to this EULA. If you do not agree to these terms, do not install or use the Software. - -Restrictions -You may not assign or transfer your rights in the Software. You have no ownership interest in the Software. You may not (i) modify, create derivative works from, distribute, publicly display, publicly perform, or sublicense the Software; (ii) allow third parties to use the Software; or (iii) reverse engineer, decompile, disassemble, or otherwise attempt to derive any of the Software's source code. - -Privacy -No user information is collected, transmitted, or sold by the Software. - -Your Obligations -Your use of the Software must comply with this EULA, all applicable laws and the terms of use of the sites with which it is used. - -No Warranties Given -Unhook makes no warranties, either express or implied, including without limitation any implied warranties of merchantability or fitness for a particular purpose. Unhook does not warrant that the software will perform without error or that it will run without immaterial interruption. - -Limitation of liability -Unhook's maximum liability to you for any claim under this EULA, in tort or otherwise, is limited to the amount you paid to license the software in the previous 12 months. In no event shall Unhook be liable for any damages (including, without limitation, lost profits, business interruption or lost information) resulting from the use of or inability to use the software, loss of data or any other claim, even if Unhook has been advised of the possibility of such damages. - -Termination -Your right to use the Software will automatically terminate if you fail to comply with this EULA. Unhook may terminate your right to use the Software at any time. - -No Obligation to Develop or Offer Software -Unhook has no obligation to continue to develop, improve or upgrade the Software. Unhook may discontinue offering the Software at any time. Unhook has no obligation to provide support for the Software. Any updates to the Software become part of the Software subject to this EULA. - -General -This EULA is the entire agreement between you and Unhook with respect to the Software. Unhook may amend this EULA at any time and your continued subscription for the Software constitutes your acceptance of any changes. This EULA is governed by the laws of the state of New York in the United States of America. diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/_metadata/verified_contents.json b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/_metadata/verified_contents.json deleted file mode 100644 index 79744e5..0000000 --- a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/_metadata/verified_contents.json +++ /dev/null @@ -1 +0,0 @@ -[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJMSUNFTlNFLnR4dCIsInJvb3RfaGFzaCI6IlZ2TWFZLXpUN3RLbGQ3T0JPSll1Y2R4MTV3Z0VmWDROaWFIYklUMDZsYXMifSx7InBhdGgiOiJjc3MvY29udGVudC5jc3MiLCJyb290X2hhc2giOiJseWs1QThScDBGQWVHYnF2VW1JSGV5NGhDb0lpT28wbzhtUG5FdkFXeWtNIn0seyJwYXRoIjoiY3NzL2luZm8tcG9wdXAuY3NzIiwicm9vdF9oYXNoIjoiUzdGeWVhOXhILWdCbU1OY3JjU2loRlUzQlJaWWJ2SW91ZlpPWFlvYkFMQSJ9LHsicGF0aCI6ImNzcy9wb3B1cC5jc3MiLCJyb290X2hhc2giOiJkR2JneFJLUEJ1cDY2ZFJnd095aG5iLTNBYVFuQTZ6Nlh4ZUgycy1DWm5zIn0seyJwYXRoIjoiZG9uYXRlLmh0bWwiLCJyb290X2hhc2giOiJGdmxfNFFzaUlIUXNOSTZzOW1Eek9vQVVUWnVvQnZkTnZCUV9oakZ2a0JjIn0seyJwYXRoIjoiaW1hZ2VzL2ljb24tMTI4LnBuZyIsInJvb3RfaGFzaCI6InV0VVBhTVM2S3dENEJwS1oxanF3VWlhY3ZFRG9YMkNHZ3dXZGxmREFpblEifSx7InBhdGgiOiJpbWFnZXMvaWNvbi0xNi5wbmciLCJyb290X2hhc2giOiJZQktUR29LSmVmY3hYbEFkcE10Q2YyTTNKY1ZzcnNXeFlHSzdHNENMMk1vIn0seyJwYXRoIjoiaW1hZ2VzL2ljb24tMzIucG5nIiwicm9vdF9oYXNoIjoiaUhpa09wcW1TSFVLeDEwSHZNN3NtbzNpb1J1TDEzbTZVdjlsNGREWGF5cyJ9LHsicGF0aCI6ImltYWdlcy9pY29uLTQ4LnBuZyIsInJvb3RfaGFzaCI6IjVjYXRGWUU2MVNIZ2ZkTUlqNWRkY0RHQnBnVDBway1TamlHS0FQTmx5SjgifSx7InBhdGgiOiJpbWFnZXMvaWNvbi1vZmYtMTI4LnBuZyIsInJvb3RfaGFzaCI6Ik9UWG5Na2pDN1RwVGdHbDNaUnkzYWFoZmpsblZpUkdMNVBtR2lhczFmY28ifSx7InBhdGgiOiJpbWFnZXMvaWNvbi1vZmYtMTYucG5nIiwicm9vdF9oYXNoIjoicUdnTjlfTy1GcDhJdnY3eE9fQ196bnhMYk5ZeUZrNkZ5eFF3cDV4Z0pZYyJ9LHsicGF0aCI6ImltYWdlcy9pY29uLW9mZi0zMi5wbmciLCJyb290X2hhc2giOiJrVlVpMjFEOThDUXVNZXBMZWpCNDJ0b0NIMVdLM05xekp2VmZTTWVPM040In0seyJwYXRoIjoiaW1hZ2VzL2ljb24tb2ZmLTQ4LnBuZyIsInJvb3RfaGFzaCI6IkdLN1cwZzZTUVc1b3lSQjZCLTVubXVNZ1BWTHh1eXhXdVJITXBEUWNtTHMifSx7InBhdGgiOiJpbWFnZXMvc2l0ZXMvZmFjZWJvb2sucG5nIiwicm9vdF9oYXNoIjoiZjlyc3YxSWUzYnVuakt1UkpIQzg3RGJuYi1CakdONmpHR1JsXzk4NmxvOCJ9LHsicGF0aCI6ImltYWdlcy9zaXRlcy9pbnN0YWdyYW0ucG5nIiwicm9vdF9oYXNoIjoiX01fOGxSekxNMThvLVNwN05BeFB0VE9fLVgzVXd5MGVaUGY0a0Vhdl90RSJ9LHsicGF0aCI6ImltYWdlcy9zaXRlcy90d2l0Y2gucG5nIiwicm9vdF9oYXNoIjoiOTNPMWd1SUR2aE9IelpMUi1Pam1nU0pGN0VrX1oxbU5POEJSbS01T2c2USJ9LHsicGF0aCI6ImltYWdlcy9zaXRlcy90d2l0dGVyLnBuZyIsInJvb3RfaGFzaCI6IkhTaTN5MFRvMHpEVE5JZThrY2Y1T0NaeWhsbW5rSTJQYnIxXzQ3bms5TVUifSx7InBhdGgiOiJpbWFnZXMvc2l0ZXMveW91dHViZS5wbmciLCJyb290X2hhc2giOiI4MjVpd056UWlOT2FHOW9Zb2R4cEFqRUl6N1k4dWVIR1dRTFlUSUlCS3Q4In0seyJwYXRoIjoianMvYmFja2dyb3VuZC5qcyIsInJvb3RfaGFzaCI6IlJUbEtMQUVwM1VOQmh6Q0pnQzdYekU1SW9uVGZITjNmRnlqUF9mT1hpWjQifSx7InBhdGgiOiJqcy9jb250ZW50LmpzIiwicm9vdF9oYXNoIjoidjk2TmRrM1Zjc3hVeTVBQjZiMXhGS0tDYWpuSzJGaTJCY0hKdWpDbzZqZyJ9LHsicGF0aCI6ImpzL2luZm8tcG9wdXAuanMiLCJyb290X2hhc2giOiJoQlkwNEpXdGlDMnJGQ05RUGhkRHJJeGpwZWVwNjRLemlXWXZCZmx1bjVrIn0seyJwYXRoIjoianMvcG9wdXAuanMiLCJyb290X2hhc2giOiJSd0U2SzlOQ1ItREJrLTZPdkNvcmFPVnZxRWI0SjN0MmFvWE1BcV85Q3VRIn0seyJwYXRoIjoianMvdW5ob29rLXl0LmpzIiwicm9vdF9oYXNoIjoiM3hmLWJ4TmtCRWdyTFVoQ0FEUG9qYVVkc1doNVBSZmZpNHE2YXFhbjFhdyJ9LHsicGF0aCI6Im1hbmlmZXN0Lmpzb24iLCJyb290X2hhc2giOiJZOFhIN0dGQVgzUHp1Y2pnU19nZXV6bzB2QUduRktkUV9iU1JUNm9PdThnIn0seyJwYXRoIjoicG9wdXAuaHRtbCIsInJvb3RfaGFzaCI6IlI1VXJzU25iQUpDS0hNUExla284Qk1VM1VLMVRqOVVQM2FWenlDdUZxc00ifSx7InBhdGgiOiJ0cm91Ymxlc2hvb3QuaHRtbCIsInJvb3RfaGFzaCI6InBIS19RS2JYZU9rWWFYYThOTC1qd3hnZThPVWRvWDNxZ1ZVMzB6R0NoNGcifV0sImZvcm1hdCI6InRyZWVoYXNoIiwiaGFzaF9ibG9ja19zaXplIjo0MDk2fV0sIml0ZW1faWQiOiJraG5jZm9vaWNobWZqYmVwYWFhZWJtb21tZ2FlcG9pZCIsIml0ZW1fdmVyc2lvbiI6IjEuNi44IiwicHJvdG9jb2xfdmVyc2lvbiI6MX0","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"lac7yFxkm7nvH_X31Kcf2pwJiO0W1LiQNbLjTA516UV5AhhBsYSLWqbZnvRWpFwb4mrPA0YSzsUodJpFr1nNhL-H5qnNS8dNvE-vfCpo4I_nAFsGQQaFdIFtWJi3XthrVlPKuZggVuMeMl-h8DzDLxGGQju09vAAxO9ateguOWBDKunN-QR4g_l3rwJK-i_LIsulKXlhUZyEyD4KO5nyvJLtwg4OKRmxW4313mntKdxuGlXYeC9tnBjeLdnGyY9y3hKs9KjKrWE0j92VSLLzwvmHz_O16A5VfW2lgzpaRYBWLiO0LY0GBSZaHIA02YLjy7dko887mII2wfErySTOkA"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"eFk0k5V9QNBYySn476V_fJKGFefNjO23GR1JoKgpBIbPP_JbbFoOU_mZ2l36vGYKJ4f6dUC2EIbHLpXXv_p7Buk-yL1tBZZkb03OPsYdzhWjqz8S5kj2ZUSuY6yjoSAWnNrop6Ie1m9NWKp9C87cQXv0d1Ig61vLnyB23ZJq0tK5YN20rNDlM089EuUYjmI0YQUzCh2V4xAMPuONQzw4VOgtNl2mhFoJ3oaXuQO7YLu_4NDhkBg8fbSUpA9Vzy1cWFtPW7tmfohWLAAiBwpzqQm8QMzpHWmuHMUHX4guSWitovvsMO6HIAAKxsiAlM2FGzQRJRkT2WLfFNREGKiWZA"}]}}] \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/css/content.css b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/css/content.css deleted file mode 100644 index f32cda2..0000000 --- a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/css/content.css +++ /dev/null @@ -1 +0,0 @@ -#masthead-ad.ytd-rich-grid-renderer.style-scope,div#home-page-skeleton,html[hide_annotations=true] .annOption,html[hide_autoplay=true] .autonav-endscreen,html[hide_autoplay=true] button[data-tooltip-target-id=ytp-autonav-toggle-button],html[hide_autoplay=true] ytd-watch-flexy:not([playlist]) .ytp-chrome-controls .ytp-next-button,html[hide_bar=true] #actions.ytd-watch-metadata,html[hide_bar=true] #info>#menu-container,html[hide_cards=true] .ytp-ce-element,html[hide_channel=true] #owner.ytd-watch-metadata,html[hide_channel=true] #top-row.ytd-video-secondary-info-renderer,html[hide_channel=true][hide_desc=true] #primary-inner>#meta,html[hide_chat=true] ytd-live-chat-frame#chat,html[hide_comments=true] #comment-teaser,html[hide_comments=true] #comments,html[hide_desc=true] #description.ytd-watch-metadata,html[hide_desc=true] ytd-expander.ytd-video-secondary-info-renderer,html[hide_donate=true] #donation-shelf,html[hide_endscreen=true] .html5-endscreen:not(.mweb-endscreen),html[hide_feed=true] ytd-browse[page-subtype=home] .ytd-rich-grid-renderer,html[hide_feed=true] ytd-browse[role=main]:not([page-subtype]):not(:has(#header #page-header-container)):has(ytd-feed-filter-chip-bar-renderer) .ytd-rich-grid-renderer,html[hide_header=true] #guide-spacer,html[hide_header=true] #masthead-container,html[hide_merch=true] #clarify-box,html[hide_merch=true] #offer-module,html[hide_merch=true] #ticket-shelf,html[hide_merch=true] .ytp-drawer,html[hide_merch=true] yt-alert-with-actions-renderer,html[hide_merch=true] ytd-merch-shelf-renderer,html[hide_merch=true] ytd-metadata-row-container-renderer>#always-shown,html[hide_meta=true] #primary-inner>#info,html[hide_meta=true] ytd-watch-metadata,html[hide_mix=true] .ytp-videowall-still[data-is-mix=true],html[hide_mix=true] a[href*="start_radio=1"],html[hide_mix=true] ytd-browse[page-subtype=home] ytd-video-meta-block[radio-meta],html[hide_mix=true] ytd-compact-radio-renderer,html[hide_mix=true] ytd-radio-renderer,html[hide_mix=true] ytd-rich-item-renderer:has(a[href*="start_radio=1"]),html[hide_moreyt=true] #sections>ytd-guide-section-renderer:nth-last-child(2),html[hide_notifs=true] #buttons.ytd-masthead>ytd-notification-topbar-button-renderer.ytd-masthead,html[hide_notifs=true] ytd-notification-topbar-button-shape-renderer,html[hide_playlists=true] #playlist,html[hide_prof=true] .ytd-comment-renderer yt-img-shadow,html[hide_recommended=true] #items.ytd-watch-next-secondary-results-renderer,html[hide_recommended=true] .ytd-watch-grid>#contents,html[hide_recommended=true] .ytp-pause-overlay,html[hide_redirect_home=true][hide_feed=true][hide_subs=false] .yt-simple-endpoint[href="/"],html[hide_redirect_home=true][hide_feed=true][hide_subs=false] .yt-simple-endpoint[href^="/index"],html[hide_search=true] #primary>.ytd-two-column-search-results-renderer ytd-horizontal-card-list-renderer,html[hide_search=true] #primary>.ytd-two-column-search-results-renderer ytd-shelf-renderer,html[hide_shorts=true] .yt-simple-endpoint[title=Shorts],html[hide_sidebar=true] #secondary.ytd-watch-flexy,html[hide_subs=true] .yt-simple-endpoint[href^="/feed/subscriptions"],html[hide_subs=true]:not([yt-signed-out]) #sections>ytd-guide-section-renderer:nth-child(2),html[hide_subs=true] ytd-browse[page-subtype=subscriptions],html[hide_trending=true] .yt-simple-endpoint[href^="/feed/explore"],html[hide_trending=true] .yt-simple-endpoint[href^="/feed/trending"],html[hide_trending=true]:not([yt-signed-out]) #sections>ytd-guide-section-renderer:nth-child(3),html[hide_trending=true][yt-signed-out] #sections>ytd-guide-section-renderer:nth-child(4),html[hide_trending=true] ytd-browse[page-subtype=trending],paper-dialog>ytd-single-option-survey-renderer[dialog][dialog][dialog],ytd-mealbar-promo-renderer[dialog],ytd-primetime-promo-renderer{display:none!important}html[hide_header=true] #header.ytd-c4-tabbed-header-renderer,html[hide_header=true] #page-manager.ytd-app{margin-top:0!important}html[hide_header=true] ytd-mini-guide-renderer.ytd-app{top:0!important}html[hide_channel=true][hide_desc=false] ytd-video-primary-info-renderer{border:0!important}html[hide_sidebar=true] ytd-watch-flexy[flexy][is-two-columns_]:not([fullscreen]):not([theater]){--ytd-watch-flexy-max-player-width:calc(var(--ytd-watch-flexy-chat-max-height)*var(--ytd-watch-flexy-width-ratio)/var(--ytd-watch-flexy-height-ratio))!important}#content>#page-manager.ytd-app{overflow-y:hidden!important}#surveys,.mealbar-promo-renderer,html[hide_autoplay=true] .player-controls-middle>button:not(.player-control-play-pause-icon),html[hide_autoplay=true] .ytm-autonav-bar,html[hide_autoplay=true] .ytm-autonav-toggle-button-container,html[hide_bar=true] .slim-video-metadata-actions,html[hide_channel=true] ytm-slim-owner-renderer,html[hide_comments=true] ytm-comment-section-renderer,html[hide_comments=true] ytm-comments-entry-point-header-renderer,html[hide_comments=true] ytm-engagement-panel,html[hide_desc=true] .slim-video-metadata-header-content>c3-icon,html[hide_desc=true] .slim-video-metadata-info,html[hide_donate=true] ytm-donation-shelf-renderer-outer,html[hide_endscreen=true] .ytp-mweb-endscreen-play-next,html[hide_endscreen=true] .ytp-mweb-endscreen-play-previous,html[hide_feed=true] div[tab-identifier=FEwhat_to_watch],html[hide_header=true] .mobile-topbar-header,html[hide_merch=true] ytm-compact-offer-module-renderer,html[hide_meta=true] ytm-item-section-renderer[section-identifier=slim-video-metadata],html[hide_mix=true] ytm-compact-radio-renderer,html[hide_mix=true] ytm-radio-renderer,html[hide_playlists=true] ytm-playlist,html[hide_prof=true] .comment-icon-container,html[hide_recommended=true] ytm-item-section-renderer[section-identifier=related-items],html[hide_redirect_home=true][hide_feed=true][hide_subs=false] ytm-pivot-bar-renderer>ytm-pivot-bar-item-renderer:has(.pivot-w2w),html[hide_shorts=true] ytm-pivot-bar-renderer>ytm-pivot-bar-item-renderer:has(.pivot-shorts),html[hide_subs=true] div[tab-identifier=FEsubscriptions],html[hide_subs=true] ytm-pivot-bar-renderer>ytm-pivot-bar-item-renderer:has(.pivot-subs),html[hide_trending=true] div[tab-identifier=FEexplore],html[hide_trending=true] div[tab-identifier=FEtrending],html[hide_trending=true] ytm-pivot-bar-renderer>ytm-pivot-bar-item-renderer:has(.pivot-trending){display:none!important}html[hide_recommended=true] #secondary.ytd-watch-grid{overflow-x:hidden;overflow-y:auto;min-height:300px}html[hide_header=true] #player-container-id,html[hide_header=true] ytm-item-section-renderer[section-identifier=related-items]{top:0!important}html[hide_header=true] ytm-app.sticky-player{padding-top:0!important}html[hide_shorts=true] #player-shorts-container,html[hide_shorts=true] .ytd-shorts,html[hide_shorts=true] yt-chip-cloud-chip-renderer:has(yt-formatted-string[title=Shorts]),html[hide_shorts=true] yt-tab-shape[tab-title=Shorts],html[hide_shorts=true] ytd-compact-video-renderer:has(a[href*="/shorts/"]),html[hide_shorts=true] ytd-notification-renderer:has(>a[href^="/shorts/"]),html[hide_shorts=true] ytd-reel-shelf-renderer,html[hide_shorts=true] ytd-rich-grid-renderer[is-shorts-grid],html[hide_shorts=true] ytd-rich-item-renderer:has(a[href*="/shorts/"]),html[hide_shorts=true] ytd-rich-shelf-renderer[is-shorts],html[hide_shorts=true] ytd-video-renderer:has(a[href*="/shorts/"]),html[hide_shorts=true] ytm-reel-shelf-renderer,html[hide_shorts=true] ytm-rich-grid-renderer.is_shorts,html[hide_shorts=true] ytm-video-with-context-renderer:has(a[href*="/shorts/"]){display:none!important} \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/css/info-popup.css b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/css/info-popup.css deleted file mode 100644 index 845d9b1..0000000 --- a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/css/info-popup.css +++ /dev/null @@ -1 +0,0 @@ -:root{--body:#f8f8f8;--primary-blue:#3686e4;--secondary-blue:#2862a6}html[dark_mode=true]{--body:#1c1c1c;--body-color:#f8f8f8}body{font-size:1.125rem;font-family:Lato,Arial,Helvetica Neue,Helvetica,sans-serif;margin:0;color:var(--body-color);background:var(--body)}#container{width:22.7rem;margin:auto}:root{--link:#444;--link-hover:#555;--email-link:var(--primary-blue);--email-link-hover:var(--secondary-blue);--button-hover:#eee;--first-button-color:#fff}html[dark_mode=true]{--link:#ddd;--link-hover:#ccc;--email-link:#609ee6;--email-link-hover:#8eaed4;--button-hover:#222}a{text-decoration:none;color:var(--link)}a:hover{color:var(--link-hover)}.email-link{text-decoration:none;color:var(--email-link)}.email-link:hover{color:var(--email-link-hover)}#info{padding:0 1.3rem .5rem}header{margin-top:1rem;margin-left:1rem}.title{font-weight:700}.button,.title{margin-bottom:.5rem}.button{display:block;border-radius:.3rem;padding-top:.5rem;padding-bottom:.5rem;text-align:center}.border-btn{border:.15rem solid var(--primary-blue)}.border-btn:focus,.border-btn:hover{background-color:var(--button-hover)}.full-btn{background-color:var(--primary-blue);color:var(--first-button-color)}.full-btn:focus,.full-btn:hover{box-shadow:0 0 .5rem var(--primary-blue);color:var(--first-button-color)}#donate-btns{margin-bottom:.75rem} \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/css/popup.css b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/css/popup.css deleted file mode 100644 index 25b4b5e..0000000 --- a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/css/popup.css +++ /dev/null @@ -1 +0,0 @@ -:root{--body:#f8f8f8;--primary-blue:#3686e4;--secondary-blue:#2862a6}html[dark_mode=true]{--body:#1c1c1c;--body-color:#f8f8f8}body{font-size:1.125rem;font-family:Lato,Arial,Helvetica Neue,Helvetica,sans-serif;margin:0;color:var(--body-color);background:var(--body)}#container{width:22.7rem;margin:auto}#options::-webkit-scrollbar{width:.4rem}#options::-webkit-scrollbar-track{background:none}#options::-webkit-scrollbar-thumb{background:var(--scrollbar)}#options::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-hover)}:root{--icon-background:#c4c4c4;--icon-color:#fff;--icon-background-hover:#b4b4b4;--site-bar:#dfdfdf;--h-line:#dbdbdb;--check-off-border:#c4c4c4;--check-off-circle:#c4c4c4;--check-on-background:var(--primary-blue);--check-on-circle:#fff;--tree-switch:#bdbdbd;--sub-list-accent:#dbdbdb;--scrollbar:#c4c4c4;--scrollbar-hover:#b4b4b4;--footer-links:#555;--footer-links-hover:#343434;--big-off:#bbb;--big-off-hover:#bab5b5}html[dark_mode=true]{--icon-background:#5c5c5c;--icon-background-hover:#4f4f4f;--site-bar:#333;--h-line:#555;--check-off-border:#888;--check-on-background:var(--secondary-blue);--tree-switch:#888;--sub-list-accent:#555;--scrollbar:#444;--scrollbar-hover:#333;--footer-links:#ccc;--footer-links-hover:#ddd;--big-off:#888}#content{padding:.5rem 1.2rem 0}#footer,#header,#header>div,#header label{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center}#header{-webkit-justify-content:space-between;justify-content:space-between}#footer{font-size:1rem;padding:.2rem;-webkit-justify-content:space-around;justify-content:space-around}#footer>a{text-decoration:none;color:var(--footer-links)}#footer>a:hover{color:var(--footer-links-hover)}#logo{font-size:1.3rem}#logo>img{margin-right:.5rem}#icons svg,#logo>img{height:1.4rem;width:1.4rem}#icons svg{fill:var(--icon-background)}#icons svg:hover{cursor:pointer;fill:var(--icon-background-hover)}#icons>*{margin-left:.2rem}hr{border-width:0;background-color:var(--h-line);margin-bottom:0;margin-top:.625rem;height:.125rem}#footer-hr{height:.05rem;margin-top:0}.check~label{display:-webkit-inline-flex;display:inline-flex;-webkit-align-items:center;align-items:center}.check~label:after,.check~label:before,.tree-switch~label{cursor:pointer}.check~label:before{content:"";-webkit-box-shadow:inset 0 0 0 .1rem var(--check-off-border);box-shadow:inset 0 0 0 .1rem var(--check-off-border)}#options .check~label:before{width:1.9rem;height:1rem;margin-right:.8rem;-webkit-border-radius:.6rem;border-radius:.6rem}#options .suboption .check~label:before,#options li>ul .check~label:before{width:1.66rem;height:.875rem;margin-right:.7rem;-webkit-border-radius:.55rem;border-radius:.55rem}.check~label:after{content:"";position:absolute;background-color:var(--check-off-circle);margin-left:.15rem;-webkit-border-radius:50%;border-radius:50%;-webkit-transition:transform .15s ease-in-out;transition:transform .15s ease-in-out}#options .check~label:after{width:.75rem;height:.75rem}#options .suboption .check~label:after,#options li>ul .check~label:after{width:.63rem;height:.63rem}#container .check:checked~label:before{-webkit-box-shadow:none;box-shadow:none;background-color:var(--check-on-background)}#container .check:checked~label:after{background-color:var(--check-on-circle)}#options .check:checked~label:after{-webkit-transform:translateX(.81rem);transform:translateX(.81rem)}#options .suboption .check:checked~label:after,#options li>ul .check:checked~label:after{-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}#options .check:indeterminate~label:after{-webkit-transform:translateX(.4rem);transform:translateX(.4rem)}input[type=checkbox]{display:none}ul{list-style:none;position:relative}#options>ul{padding-left:.5rem;margin-top:.625rem;margin-bottom:.25rem}#options label{margin-bottom:.44rem}.suboption,li>ul{padding-left:1.06rem}.tree-switch~label{width:.875rem;height:.125rem;margin-left:18.5rem}.tree-switch~label,.tree-switch~label:before{position:absolute;background-color:var(--tree-switch)}.tree-switch~label:before{content:"";width:.125rem;height:.875rem;top:-.375rem;left:.375rem}.tree-switch:not(:checked)~label:before{display:none}.check-tree,.check-tree>span{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center}#options{overflow-y:scroll;height:23rem;padding:0 1.2rem}html[yt_on=false] #options,html[yt_on=true] #off{display:none}#off{fill:var(--big-off);height:23rem;display:flex;flex-direction:column;justify-content:center;align-items:center}#off svg:hover{cursor:pointer;fill:var(--big-off-hover)}li>ul:before{content:"";width:.2rem;height:calc(100% - .2rem);background-color:var(--sub-list-accent);position:absolute;left:.2rem;top:-.125rem}.hidden{display:none} \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/donate.html b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/donate.html deleted file mode 100644 index 67e6fa4..0000000 --- a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/donate.html +++ /dev/null @@ -1 +0,0 @@ - Donate - Unhook
    Back

    Donations

    If you find Unhook helpful, please consider making a contribution.

    If you can't contribute financially, I'd love if you could share Unhook with friends or leave a review on the Chrome, Firefox, or Edge stores.

    \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-128.png b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-128.png deleted file mode 100644 index 1dbb024..0000000 Binary files a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-128.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-16.png b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-16.png deleted file mode 100644 index e9e5403..0000000 Binary files a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-16.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-32.png b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-32.png deleted file mode 100644 index e5a1c14..0000000 Binary files a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-32.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-48.png b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-48.png deleted file mode 100644 index d00d883..0000000 Binary files a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-48.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-off-128.png b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-off-128.png deleted file mode 100644 index a248833..0000000 Binary files a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-off-128.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-off-16.png b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-off-16.png deleted file mode 100644 index 1678a08..0000000 Binary files a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-off-16.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-off-32.png b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-off-32.png deleted file mode 100644 index 0f17942..0000000 Binary files a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-off-32.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-off-48.png b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-off-48.png deleted file mode 100644 index 79c869e..0000000 Binary files a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/icon-off-48.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/sites/facebook.png b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/sites/facebook.png deleted file mode 100644 index 54effb6..0000000 Binary files a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/sites/facebook.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/sites/instagram.png b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/sites/instagram.png deleted file mode 100644 index d4e3765..0000000 Binary files a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/sites/instagram.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/sites/twitch.png b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/sites/twitch.png deleted file mode 100644 index a335f60..0000000 Binary files a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/sites/twitch.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/sites/twitter.png b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/sites/twitter.png deleted file mode 100644 index e3bbf58..0000000 Binary files a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/sites/twitter.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/sites/youtube.png b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/sites/youtube.png deleted file mode 100644 index 37464da..0000000 Binary files a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/images/sites/youtube.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/js/background.js b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/js/background.js deleted file mode 100644 index b8791b0..0000000 --- a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/js/background.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";let e,t=chrome;function o(o,s=null,n=[]){e.get(s,(r=>{t.runtime.lastError?(e=t.storage.local,e.get(s,(e=>{o(e,...n)}))):o(r,...n)}))}function s(o){e.set(o,(()=>{t.runtime.lastError&&(e=t.storage.local,e.set(o))}))}const n=("object"==typeof browser&&"object"==typeof browser.runtime&&(t=browser),e=t.storage.local,"object"==typeof t.storage.sync&&(e=t.storage.sync),t),r={hide_feed:!0,hide_redirect_home:!1,hide_sidebar:!0,hide_recommended:!0,hide_chat:!0,hide_playlists:!0,hide_donate:!0,hide_endscreen:!0,hide_cards:!0,hide_comments:!1,hide_prof:!1,hide_mix:!1,hide_merch:!0,hide_meta:!1,hide_bar:!1,hide_channel:!1,hide_desc:!1,hide_header:!1,hide_notifs:!0,hide_moreyt:!0,hide_search:!0,hide_trending:!1,hide_shorts:!1,hide_subs:!1,hide_autoplay:!0,hide_annotations:!0,yt_on:!0,popup_settings:{dark_mode:!1,sidebar_tree:!1,comment_tree:!0,meta_tree:!0,header_tree:!1}};function i(e){const t=e?"":"-off";n.action.setIcon({path:{16:`/images/icon${t}-16.png`,32:`/images/icon${t}-32.png`,48:`/images/icon${t}-48.png`,128:`/images/icon${t}-128.png`}})}n.runtime.onInstalled.addListener((({reason:e})=>{"install"===e&&n.tabs.create({url:"https://unhook.app/welcome"})})),n.runtime.setUninstallURL("https://unhook.app/uninstall");let c={hide_feed:!1,hide_redirect_home:!1,hide_trending:!1,hide_subs:!1,yt_on:!1};const d=Object.keys(c);function h(){o((e=>{c=e}),d)}function a(e,t){n.tabs.update(t,{url:e})}o((function(o){const n=Object.keys(o).length;0===n?s(r):function(e,t){return t!==Object.keys(r).length||Object.keys(r).some((t=>!Object.prototype.hasOwnProperty.call(e,t)))||Object.keys(e.popup_settings).length!==Object.keys(r.popup_settings).length}(o,n)&&(Object.keys(r).forEach((e=>{Object.prototype.hasOwnProperty.call(o,e)&&("boolean"==typeof r[e]?r[e]=o[e]:Object.keys(r[e]).forEach((t=>{Object.prototype.hasOwnProperty.call(o[e],t)&&(r[e][t]=o[e][t])})))})),e.clear((()=>{t.runtime.lastError&&(e=t.storage.local,e.clear())})),s(r)),i(o.yt_on||r.yt_on)})),h(),n.storage.onChanged.addListener((e=>{for(let t=0;t{c.yt_on&&((c.hide_trending&&/^https:\/\/.*\.youtube\.com\/feed\/(trending|explore)/.test(e)||c.hide_subs&&-1!==e.indexOf("subscriptions"))&&a("https://www.youtube.com",t),c.hide_redirect_home&&c.hide_feed&&!c.hide_subs&&/^https:\/\/.*\.youtube\.com\/(?:\?.*)?$/.test(e)&&a("https://www.youtube.com/feed/subscriptions",t))}),{urls:["https://*.youtube.com/","https://*.youtube.com/?*","https://*.youtube.com/feed/trending*","https://*.youtube.com/feed/explore*","https://*.youtube.com/feed/subscriptions*"],types:["main_frame","sub_frame","xmlhttprequest"]})})(); \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/js/content.js b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/js/content.js deleted file mode 100644 index 7717aa2..0000000 --- a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/js/content.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";(()=>{let e,t=chrome;function n(n,o=null,r=[]){e.get(o,(c=>{t.runtime.lastError?(e=t.storage.local,e.get(o,(e=>{n(e,...r)}))):n(c,...r)}))}const o=("object"==typeof browser&&"object"==typeof browser.runtime&&(t=browser),e=t.storage.local,"object"==typeof t.storage.sync&&(e=t.storage.sync),t),r=document.documentElement;function c(e){Object.keys(e).forEach((t=>{-1!==t.indexOf("hide")&&r.setAttribute(t,e[t])}))}function i(e){!0===e.yt_on&&c(e),function(){const e=document.createElement("script");e.src=o.runtime.getURL("js/unhook-yt.js"),e.id="unhook-yt",r.appendChild(e)}()}function u(e){Object.keys(e).forEach((e=>{-1!==e.indexOf("hide")&&r.removeAttribute(e)}))}function s(){n(i),o.storage.onChanged.addListener((e=>{Object.prototype.hasOwnProperty.call(e,"yt_on")?e.yt_on.newValue?n(c):n(u):Object.keys(e).forEach((t=>{-1!==t.indexOf("hide")&&r.setAttribute(t,e[t].newValue)}))}))}document.unhookRunning||(document.unhookRunning=!0,window===window.parent?s():window.addEventListener("DOMContentLoaded",(()=>{document.getElementById("player")&&s()})))})()})(); \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/js/info-popup.js b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/js/info-popup.js deleted file mode 100644 index 568c361..0000000 --- a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/js/info-popup.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";(()=>{let t,e=chrome;"object"==typeof browser&&"object"==typeof browser.runtime&&(e=browser),t=e.storage.local,"object"==typeof e.storage.sync&&(t=e.storage.sync),function(o,r=null,s=[]){t.get(r,(n=>{e.runtime.lastError?(t=e.storage.local,t.get(r,(t=>{o(t,...s)}))):o(n,...s)}))}((function(t){document.documentElement.setAttribute("dark_mode",t.popup_settings.dark_mode)}),["popup_settings"])})()})(); \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/js/popup.js b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/js/popup.js deleted file mode 100644 index 79b1d7d..0000000 --- a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/js/popup.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";(()=>{let e,t=chrome;function n(n,o=null,s=[]){e.get(o,(c=>{t.runtime.lastError?(e=t.storage.local,e.get(o,(e=>{n(e,...s)}))):n(c,...s)}))}function o(n){e.set(n,(()=>{t.runtime.lastError&&(e=t.storage.local,e.set(n))}))}"object"==typeof browser&&"object"==typeof browser.runtime&&(t=browser),e=t.storage.local,"object"==typeof t.storage.sync&&(e=t.storage.sync);const s=document.documentElement;function c(e){const t=e.getElementsByClassName("check"),n=t[0];if(n.checked)return;let o=!1;for(let e=1;!o&&e{if("boolean"==typeof e[t]){const n=document.getElementById(t);n&&(n.checked=e[t]),"yt_on"===t&&s.setAttribute(t,e[t])}else Object.keys(e[t]).forEach((n=>{const o=document.getElementById(n);if(o&&(o.checked=e[t][n]),"dark_mode"===n||"yt_on"===n)s.setAttribute(n,e[t][n]);else{const o=document.getElementById(n).parentNode.parentNode.parentNode.getElementsByTagName("ul")[0];e[t][n]?o.classList.add("hidden"):o.classList.remove("hidden")}}))})),d(e.hide_feed,e.hide_subs);const t=document.getElementById("options").getElementsByTagName("ul");for(let e=1;e{if("boolean"==typeof e[n]){const o=document.getElementById(n).checked;e[n]!==o&&(t[n]=o)}})),Object.prototype.hasOwnProperty.call(t,"hide_feed")?d(t.hide_feed,e.hide_subs):Object.prototype.hasOwnProperty.call(t,"hide_subs")&&d(e.hide_feed,t.hide_subs),o(t)}function u(){const e=this.checked,t=this.parentNode.parentNode;if(t.classList.contains("check-tree")){const n=t.parentNode.getElementsByClassName("check");for(let t=1;t{const e=document.documentElement,t=window.MutationObserver||window.WebKitMutationObserver,n={hide_feed:!1,hide_redirect_home:!1,hide_subs:!1,hide_notifs:!1},i=Object.keys(n),o="https://www.youtube.com/feed/subscriptions";let c,s,u=!1,r=!1,d=!1,l=!1,a=!1,m=!1,f=!1;function h(e,t,n){(n&&c||!n&&s)&&"true"===t.getAttribute("aria-checked")&&(t.click(),setTimeout(h.bind(null,e,t,n),e))}function g(e,t){"true"===e.getAttribute("aria-checked")?(e.click(),setTimeout(h.bind(null,t,e,!1),t)):document.getElementsByClassName("ytp-iv-video-content").length&&(e.click(),e.click())}function y(e){const t=e.getElementsByClassName("annOption");for(let e=0;e{t.click(),t.click(),b(e,n)}),n)}function p(e,n){new t((()=>{y(e)&&w(e,n)})).observe(e,{childList:!0})}function v(e,n){const i=e.getElementsByClassName("ytp-settings-button");if(i.length){const t=i[i.length-1];t.click(),t.click();const o=e.getElementsByClassName("ytp-panel-menu"),c=o[o.length-1];w(c,t),n?m||(p(c,t),m=!0):f||(p(c,t),f=!0)}else e.hidden||!document.body.contains(e)||e.getElementsByClassName("ytp-unmute").length||e.getElementsByClassName("watchThumbImageContainer").length||new t((function(){e.getElementsByClassName("ytp-unmute").length&&(v(e,n),this.disconnect())})).observe(e,{childList:!0,subtree:!0})}function E(e,t){y(e)&&v(e,t)}function _(e,t){const n=e.getElementsByClassName("ytp-autonav-toggle-button")[0];return!!n&&("true"===n.getAttribute("aria-checked")&&(n.click(),t&&setTimeout(h.bind(null,1500,n,!0),1500)),!0)}function k(e,n){if(!window.Polymer)return!1;const i=document.getElementsByTagName("ytd-watch-flexy")[0];if(i&&!i.hidden)e&&function(e){r||_(e,!1)||(r=!0,new t((function(){_(e,!0)&&(r=!1,this.disconnect())})).observe(e,{childList:!0,subtree:!0}))}(i),n&&E(i,!0);else if(n){const e=document.querySelector("ytd-browse[page-subtype=channels]");e&&!e.hidden&&e.getElementsByTagName("ytd-channel-video-player-renderer").length&&E(e,!1)}return!0}function N(e,t){if(!document.getElementById("player-container-id"))return!1;const n=document.getElementById("player");if(n&&!n.hidden){if(e){const e=document.getElementsByClassName("ytm-autonav-toggle-button-container")[0];e&&"true"===e.getAttribute("aria-pressed")&&e.click()}t&&E(n,!0)}return!0}function B(e){s&&E(e,!0)}function A(e){const t=e.getElementsByTagName("video")[0];return!!t&&(t.addEventListener("loadeddata",(()=>B(e))),B(e),!0)}function L(){if(window===window.parent)return!1;const e=document.getElementById("player");if(!e)return!1;if(d)B(e);else{d=!0;A(e)||new t((function(){A(e)&&this.disconnect()})).observe(e,{childList:!0})}return!0}function T(e){const t=/^\(\d+\) +/;t.test(e.innerText)&&(e.innerText=e.innerText.replace(t,""))}function C(){if(l)return;const e=document.getElementsByTagName("title")[0];e&&(T(e),function(e){new t((function(){n.hide_notifs?T(e):(l=!1,this.disconnect())})).observe(e,{childList:!0})}(e),l=!0)}function x(e){e.stopPropagation()}function P(e){e.href!==o&&(e.addEventListener("click",x,!0),e.addEventListener("touchend",x,!0),e.href=o)}function S(){return n.hide_feed&&n.hide_redirect_home&&!n.hide_subs}function I(){if(a)return;const e=document.querySelector("a#logo");e&&(P(e),function(e){new t((function(){u?P(e):(a=!1,this.disconnect())})).observe(e,{attributes:!0,attributeFilter:["href"]})}(e),a=!0)}function O(){const e=document.querySelector("a#logo");e&&e.href===o&&(e.removeEventListener("click",x,!0),e.removeEventListener("touchend",x,!0),e.href="/")}function q(t){if(null==s&&(c="true"===e.getAttribute("hide_autoplay"),s="true"===e.getAttribute("hide_annotations"),window.Polymer)){for(let t=0;t<=i.length;t+=1)n[i[t]]="true"===e.getAttribute(i[t]);u=S(),-1===document.cookie.indexOf("SAPISID=")&&e.setAttribute("yt-signed-out","")}if(window.Polymer&&(n.hide_notifs&&C(),u&&I()),c||s)if(window.Polymer)k(c,s);else if(1===t){!N(c,s)&&s&&L()}else 2===t&&N(c,s)}window.addEventListener("load",q.bind(null,1)),window.addEventListener("yt-page-data-updated",q),window.addEventListener("state-navigateend",q.bind(null,2)),"complete"===document.readyState&&q(1),new t((t=>{if(null!=s)for(let i=0;i Unhook

    Unhook is off.

    \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/troubleshoot.html b/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/troubleshoot.html deleted file mode 100644 index 3e26f3a..0000000 --- a/.config/chromium/Default/Extensions/khncfooichmfjbepaaaebmommgaepoid/1.6.8_0/troubleshoot.html +++ /dev/null @@ -1 +0,0 @@ - Troubleshooting - Unhook
    Back

    Unhook isn't working?

    First, try the following:
    - refresh the YouTube page
    - close all tabs and restart the browser
    - disable any other extensions
    - disable and re-enable Unhook
    - uninstall and reinstall Unhook

    If the problem persists, email me at .

    To help me help you faster, include the following:
    - description of the issue
    - screenshot or video
    - browser (ex: Chrome 88.0)
    - version of Unhook: 1.6.8

    \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/_metadata/verified_contents.json b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/_metadata/verified_contents.json deleted file mode 100644 index 3db56a1..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/_metadata/verified_contents.json +++ /dev/null @@ -1 +0,0 @@ -[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJhY3Rpb24tcG9wdXAuaHRtbCIsInJvb3RfaGFzaCI6Ikx4T0h2NWV6bGdlMkV0SDBOdlBTZEJMTkYxX2lRREdvUXdZVUdMeWlfMHMifSx7InBhdGgiOiJjc3MvYWN0aW9uLXBvcHVwLmNzcyIsInJvb3RfaGFzaCI6IjNHc1JGLXlLc2RKUmVBaUpMM1RUVWE4TkJnWUU4S2Rrdm5TQ1lISnlGaU0ifSx7InBhdGgiOiJjc3MvYmFja2dyb3VuZC5jc3MiLCJyb290X2hhc2giOiJCR1VEQ1diWkJlOURadmtWS3AyZHBCNmJlY1VUTGdqN25kcDRURWxuREI0In0seyJwYXRoIjoiY3NzL2Rpc3BsYXktcHJvbnVuY2lhdGlvbi5jc3MiLCJyb290X2hhc2giOiJELWNhcXJzaUV4ZXFUOW1RR2NnSlFCa0tIM0lpOXZQcjhOcE5zMkFjOXM4In0seyJwYXRoIjoiY3NzL2Rpc3BsYXkuY3NzIiwicm9vdF9oYXNoIjoia05oTHR3dHkzTi1EZHpMb2RwdjgweThEWHVUemdSWHdXRGkzaDU0MEFCZyJ9LHsicGF0aCI6ImNzcy9tYXRlcmlhbC5jc3MiLCJyb290X2hhc2giOiJzQWloSnZuVm5IZUcyNFA3SnRyS25BVlRJQ1RHS0FNOWdGWl9jUWh4cnNvIn0seyJwYXRoIjoiY3NzL3Blcm1pc3Npb25zLmNzcyIsInJvb3RfaGFzaCI6IlY3NVZ0cTNUSjR5OXJ6WUNCMjVYa3VwR1lzREVrLWFzZXU3VWp4RFIyY2sifSx7InBhdGgiOiJjc3MvcG9wdXAtb3V0ZXIuY3NzIiwicm9vdF9oYXNoIjoiMF9JaGliVG96c2Z5V0VPLVY5c2NQUUYwNFVkaERURHFydmFWNjMyQThrVSJ9LHsicGF0aCI6ImNzcy9wb3B1cC1wcmV2aWV3LmNzcyIsInJvb3RfaGFzaCI6IlVIWU5QcjBid3FYSWlNZDBOekQzLTNSR3FIdjJTLTdMYVJ6OGk3QzJ5ajAifSx7InBhdGgiOiJjc3Mvc2VhcmNoLXNldHRpbmdzLmNzcyIsInJvb3RfaGFzaCI6IjhBQ0RlSldxcEZDRGVlMkpUVEV4S1ZqbUdoSUNjdFJSZVVfVzg0WG81clkifSx7InBhdGgiOiJjc3Mvc2VhcmNoLmNzcyIsInJvb3RfaGFzaCI6Ii1lT1J5OFN4OFRpb3J1Y1dNQjZiMjNtakI0QU13amlWNmQ4dEdmLTl3WGcifSx7InBhdGgiOiJjc3Mvc2V0dGluZ3MuY3NzIiwicm9vdF9oYXNoIjoieG5GS19ZY24zMEstUE1ZY0xPQWtINEFobG4yYjJqeWZJY1N0V0lrNzY3RSJ9LHsicGF0aCI6ImNzcy9zdHJ1Y3R1cmVkLWNvbnRlbnQuY3NzIiwicm9vdF9oYXNoIjoibVlpMk5VZi00Tm5LVXZvTHh2dkpmbXNpeVN6QzRvV005Wk1rNTFPMnk3YyJ9LHsicGF0aCI6ImRhdGEvYXVkaW8vYnV0dG9uLm1wMyIsInJvb3RfaGFzaCI6Im54UjBkUWFFRi1XYXRYVVlQM19LOEZ2LXhsckhzdUE2TFVJWS0yT3pCZm8ifSx7InBhdGgiOiJkYXRhL2ZvbnRzL2thbmppLXN0cm9rZS1vcmRlcnMudHRmIiwicm9vdF9oYXNoIjoiaUhNV2NZQTNVMXdJMmNzWnl0VHRFeDhKSTdtbE9oX2xGbmMyemRjWHNTRSJ9LHsicGF0aCI6ImRhdGEvcHJvbnVuY2lhdGlvbi1zdHlsZS5qc29uIiwicm9vdF9oYXNoIjoiZjdna3VvWTgtaDdPS2lMRE43eUxMTmNLdEZ3THE3THFvcmxXczEyM0tsayJ9LHsicGF0aCI6ImRhdGEvcmVjb21tZW5kZWQtZGljdGlvbmFyaWVzLmpzb24iLCJyb290X2hhc2giOiJaVmNhNU90anBOWFNTQURBa3VHaE5oMmZiRzByUE9SODBlcXEyVTBxaldvIn0seyJwYXRoIjoiZGF0YS9zY2hlbWFzL2N1c3RvbS1hdWRpby1saXN0LXNjaGVtYS5qc29uIiwicm9vdF9oYXNoIjoidlVLMlptY2dyRGlFX2tLcGZiQjZUT3NoTU5QOGVPNU8wTDdLZ0Y1WDJ6NCJ9LHsicGF0aCI6ImRhdGEvc2NoZW1hcy9kaWN0aW9uYXJ5LWluZGV4LXNjaGVtYS5qc29uIiwicm9vdF9oYXNoIjoiVXB5cDBMczQ4MlJ3QlFVdUVYVTY1OTFnazg1bEdwS09ON0FJY0VReVg3SSJ9LHsicGF0aCI6ImRhdGEvc2NoZW1hcy9kaWN0aW9uYXJ5LWthbmppLWJhbmstdjEtc2NoZW1hLmpzb24iLCJyb290X2hhc2giOiJkSG1YWHgtWmEtZ2VCUjB3MWI5Z3RUdEoxeXBJUzNFa0RQcWV5T0NGcktJIn0seyJwYXRoIjoiZGF0YS9zY2hlbWFzL2RpY3Rpb25hcnkta2FuamktYmFuay12My1zY2hlbWEuanNvbiIsInJvb3RfaGFzaCI6IkE4RnBFM2N4U3VnTmhwZ3ZHdVJHMC1wNGJaaGstUHNpWGhKODJYQWR3Q2MifSx7InBhdGgiOiJkYXRhL3NjaGVtYXMvZGljdGlvbmFyeS1rYW5qaS1tZXRhLWJhbmstdjMtc2NoZW1hLmpzb24iLCJyb290X2hhc2giOiJJZnRQVGR1V21QaUlhRE1qdVlmS1pja0lsRVFIMjhrZHphSXFxaDFubWl3In0seyJwYXRoIjoiZGF0YS9zY2hlbWFzL2RpY3Rpb25hcnktdGFnLWJhbmstdjMtc2NoZW1hLmpzb24iLCJyb290X2hhc2giOiJUMU40R0xQVXZreEEtU3laRlhqM1RYUHlJNUFDdGdqckVCYWFzZFk2N2dzIn0seyJwYXRoIjoiZGF0YS9zY2hlbWFzL2RpY3Rpb25hcnktdGVybS1iYW5rLXYxLXNjaGVtYS5qc29uIiwicm9vdF9oYXNoIjoiZzhkOEZmVERSRW90SU5pYlBNNVpXR0hzMzdHM2wtVmdfWXFpOGVBc21iUSJ9LHsicGF0aCI6ImRhdGEvc2NoZW1hcy9kaWN0aW9uYXJ5LXRlcm0tYmFuay12My1zY2hlbWEuanNvbiIsInJvb3RfaGFzaCI6IjF4eVBvOVRqNXdmRHJ4cjV3cXM3a1VlUUFuN2JSMThCVjJGSE5tWDdUQ3MifSx7InBhdGgiOiJkYXRhL3NjaGVtYXMvZGljdGlvbmFyeS10ZXJtLW1ldGEtYmFuay12My1zY2hlbWEuanNvbiIsInJvb3RfaGFzaCI6ImxwZjNhMDEzdzQwRXZ4N0RHZnlydl9KUTI0NExaVW5qQURBY2R5cDgyZlkifSx7InBhdGgiOiJkYXRhL3NjaGVtYXMvb3B0aW9ucy1zY2hlbWEuanNvbiIsInJvb3RfaGFzaCI6InlSV1VKYUtLcXFOMGVfbjZMSUM4SWxyei10cUtJV05QYmkyR050YmdXcVUifSx7InBhdGgiOiJkYXRhL3NjaGVtYXMvcmVjb21tZW5kZWQtZGljdGlvbmFyaWVzLXNjaGVtYS5qc29uIiwicm9vdF9oYXNoIjoiQU5yeTFKMU41UWJjbzhod0lGTllXenVnSnA2SFV3by13Y0twTGtGOW5kbyJ9LHsicGF0aCI6ImRhdGEvc3RydWN0dXJlZC1jb250ZW50LXN0eWxlLmpzb24iLCJyb290X2hhc2giOiJpNlV5V3VvSzZhcFBjWDVvdzdja1Vkbk56R054Z2MzU0toWG1nV0s3SEtFIn0seyJwYXRoIjoiZGF0YS90ZW1wbGF0ZXMvYW5raS1maWVsZC10ZW1wbGF0ZXMtdXBncmFkZS12MTAuaGFuZGxlYmFycyIsInJvb3RfaGFzaCI6IjQxM1RLYmRwbVg0NmJxSlRuVElpMjQ1czZMOU10Tk84c2R3Wlk1QnVaSFkifSx7InBhdGgiOiJkYXRhL3RlbXBsYXRlcy9hbmtpLWZpZWxkLXRlbXBsYXRlcy11cGdyYWRlLXYxMi5oYW5kbGViYXJzIiwicm9vdF9oYXNoIjoiV0ZwRGhiSDd4eldrSFBETU8zX3ZLVDlNVmxFMGNNdFdaSDVfWGQ1Q1c2ZyJ9LHsicGF0aCI6ImRhdGEvdGVtcGxhdGVzL2Fua2ktZmllbGQtdGVtcGxhdGVzLXVwZ3JhZGUtdjEzLmhhbmRsZWJhcnMiLCJyb290X2hhc2giOiJUOWliS0t2cWhSS01qVmdIOTR0M3B5NGI2S2FPenZvcXI5T0hnTkVOS3NVIn0seyJwYXRoIjoiZGF0YS90ZW1wbGF0ZXMvYW5raS1maWVsZC10ZW1wbGF0ZXMtdXBncmFkZS12Mi5oYW5kbGViYXJzIiwicm9vdF9oYXNoIjoiX3ppM1JJVTVpYXV0WjdjQ2twV3lKTHNfd2lpOUhJb0JGckk4S2VsMDE2SSJ9LHsicGF0aCI6ImRhdGEvdGVtcGxhdGVzL2Fua2ktZmllbGQtdGVtcGxhdGVzLXVwZ3JhZGUtdjIxLmhhbmRsZWJhcnMiLCJyb290X2hhc2giOiJQZlRsNWNqNWNaYWdWbXdEalBMVmZ2TzBFTm5reXNYelZHUW1GZ1ptUFBrIn0seyJwYXRoIjoiZGF0YS90ZW1wbGF0ZXMvYW5raS1maWVsZC10ZW1wbGF0ZXMtdXBncmFkZS12MjQuaGFuZGxlYmFycyIsInJvb3RfaGFzaCI6Iml2Rkg0VmprWDJQZDQ3WHRuYUpjalhfVzhOM3NBSHplZjBKdjRHRVhLNWMifSx7InBhdGgiOiJkYXRhL3RlbXBsYXRlcy9hbmtpLWZpZWxkLXRlbXBsYXRlcy11cGdyYWRlLXYyNy5oYW5kbGViYXJzIiwicm9vdF9oYXNoIjoiajNGMENKNWVLanVNVHczY0F0NTVMZlJKQWMxWDVTQ3hsTnFMTjJqYWoxTSJ9LHsicGF0aCI6ImRhdGEvdGVtcGxhdGVzL2Fua2ktZmllbGQtdGVtcGxhdGVzLXVwZ3JhZGUtdjI4LmhhbmRsZWJhcnMiLCJyb290X2hhc2giOiJRTlBSajRLVmlYVWJhS3BYNnNXNjVwUDc4Wm95SDkzcWs4LV9rdGVBZl9ZIn0seyJwYXRoIjoiZGF0YS90ZW1wbGF0ZXMvYW5raS1maWVsZC10ZW1wbGF0ZXMtdXBncmFkZS12MjkuaGFuZGxlYmFycyIsInJvb3RfaGFzaCI6IlZwejF4MzhDa0ZnQ2xqcWItd04yRlZmaG9mZFVLajlnS09XWjdBMU0zS0UifSx7InBhdGgiOiJkYXRhL3RlbXBsYXRlcy9hbmtpLWZpZWxkLXRlbXBsYXRlcy11cGdyYWRlLXYzMy5oYW5kbGViYXJzIiwicm9vdF9oYXNoIjoiOE5GaHVFNjh3emxCZDlna2JsNHhkVmVMY0Jaa24yVDZVVXdoOXFBd3pEUSJ9LHsicGF0aCI6ImRhdGEvdGVtcGxhdGVzL2Fua2ktZmllbGQtdGVtcGxhdGVzLXVwZ3JhZGUtdjM0LmhhbmRsZWJhcnMiLCJyb290X2hhc2giOiJXcXRRVnlTclg5SERzNmZsY3B4QjJ1dVR0RWU1ZU56TjhfMGlqYlBxVjlvIn0seyJwYXRoIjoiZGF0YS90ZW1wbGF0ZXMvYW5raS1maWVsZC10ZW1wbGF0ZXMtdXBncmFkZS12MzUuaGFuZGxlYmFycyIsInJvb3RfaGFzaCI6IkxHdmg1M0JxU2ZTWkM3SC1NZEUyNzRfT01TSWlCZG8zX1F0VUZhdlBXVncifSx7InBhdGgiOiJkYXRhL3RlbXBsYXRlcy9hbmtpLWZpZWxkLXRlbXBsYXRlcy11cGdyYWRlLXYzNi5oYW5kbGViYXJzIiwicm9vdF9oYXNoIjoiZmd0LVBUSlh1dlVUZTBJWWpNSGNDeldDQ2JSV1pQOWNOcTNVc1R4VTA0ayJ9LHsicGF0aCI6ImRhdGEvdGVtcGxhdGVzL2Fua2ktZmllbGQtdGVtcGxhdGVzLXVwZ3JhZGUtdjM3LmhhbmRsZWJhcnMiLCJyb290X2hhc2giOiJqMUxFUmJ3Z24wci1rVWRZc0FJU3NCektWemZMN0ExaUhEVWg1ODR2WnhzIn0seyJwYXRoIjoiZGF0YS90ZW1wbGF0ZXMvYW5raS1maWVsZC10ZW1wbGF0ZXMtdXBncmFkZS12MzguaGFuZGxlYmFycyIsInJvb3RfaGFzaCI6IkFhaDdLTS10TjNyZ0I1a3VrYVRuNDB6TkhtSVprUmhHT3pfREFpY1ZUUUkifSx7InBhdGgiOiJkYXRhL3RlbXBsYXRlcy9hbmtpLWZpZWxkLXRlbXBsYXRlcy11cGdyYWRlLXY0LmhhbmRsZWJhcnMiLCJyb290X2hhc2giOiJBVEE1enBSMW1yaEEzdnU3MmtycGROUnFUSklKeFV2VVcxeUV3bF9CTW84In0seyJwYXRoIjoiZGF0YS90ZW1wbGF0ZXMvYW5raS1maWVsZC10ZW1wbGF0ZXMtdXBncmFkZS12NDEuaGFuZGxlYmFycyIsInJvb3RfaGFzaCI6ImVsQzEwTFhUQm04ZEtNTm9hZ1VSOXB0RE0xQ2Y4dzNwVzFmVUthREg3RVUifSx7InBhdGgiOiJkYXRhL3RlbXBsYXRlcy9hbmtpLWZpZWxkLXRlbXBsYXRlcy11cGdyYWRlLXY0NS5oYW5kbGViYXJzIiwicm9vdF9oYXNoIjoidVFxemVUb1NRZUJ4V2ZXUGhSNTJXV2NSYkk1THpZRVh0T2dycGNVOFBLcyJ9LHsicGF0aCI6ImRhdGEvdGVtcGxhdGVzL2Fua2ktZmllbGQtdGVtcGxhdGVzLXVwZ3JhZGUtdjQ5LmhhbmRsZWJhcnMiLCJyb290X2hhc2giOiJoSW5zSWx6S0hZRUFYd2VSN0htRTl0ZGo0RmwwUFprU0xhcm1PTFZhdnp3In0seyJwYXRoIjoiZGF0YS90ZW1wbGF0ZXMvYW5raS1maWVsZC10ZW1wbGF0ZXMtdXBncmFkZS12Ni5oYW5kbGViYXJzIiwicm9vdF9oYXNoIjoibTE0cGVaak4yX0lEZDJpQU5fMldNenBNa1pBalBMMU9GLXR4RnU2MVV2YyJ9LHsicGF0aCI6ImRhdGEvdGVtcGxhdGVzL2Fua2ktZmllbGQtdGVtcGxhdGVzLXVwZ3JhZGUtdjguaGFuZGxlYmFycyIsInJvb3RfaGFzaCI6IlhyTEFJREkyV2kzZk1EeG5Xd1o4Q21oRzVnUWJkVXI3aVY5RzRwUnRFM28ifSx7InBhdGgiOiJkYXRhL3RlbXBsYXRlcy9kZWZhdWx0LWFua2ktZmllbGQtdGVtcGxhdGVzLmhhbmRsZWJhcnMiLCJyb290X2hhc2giOiJseEhpLW1iZC1RajAzUGVEZGtrWVpuSVlyTE5KLUpBUG1KekNEVUo4X2xJIn0seyJwYXRoIjoiaW1hZ2VzL2FjY2Vzc2liaWxpdHkuc3ZnIiwicm9vdF9oYXNoIjoiSjBTSTRYNW93c09Zc2p6NGptUERXRXZva1lmd3lwMkpMSzVqMmo5RTlVRSJ9LHsicGF0aCI6ImltYWdlcy9hZGQtZHVwbGljYXRlLXRlcm0ta2FuYS1ibHVlLnN2ZyIsInJvb3RfaGFzaCI6Im5BWWtwaGRyaVMyWjNod3lkbC1EeElMbXF5SU5OVHV3UTZ4YkY0cklmTzQifSx7InBhdGgiOiJpbWFnZXMvYWRkLWR1cGxpY2F0ZS10ZXJtLWthbmEuc3ZnIiwicm9vdF9oYXNoIjoiZWl2T0tWNHpSd3diVnVObkZIN00xMGRWbWlfQzZSTXR5c1lDOGVJNldJNCJ9LHsicGF0aCI6ImltYWdlcy9hZGQtZHVwbGljYXRlLXRlcm0ta2FuamktYmx1ZS5zdmciLCJyb290X2hhc2giOiJuX1Fab1A4UE9oenVPNWZRc1RZNUhrZHFRNE41Yk5ZVjhuTG83YXZleHBvIn0seyJwYXRoIjoiaW1hZ2VzL2FkZC1kdXBsaWNhdGUtdGVybS1rYW5qaS5zdmciLCJyb290X2hhc2giOiJjWXRUd0NjbDd6VXI1X2t2STBOdzBtSE0tb3REcnFCVmkwT2RnVTVIM0xFIn0seyJwYXRoIjoiaW1hZ2VzL2FkZC10ZXJtLWthbmEuc3ZnIiwicm9vdF9oYXNoIjoicjcwRHA5Y0VyUVF0eE5nMExZR3JHUTNEUXBydGNRbmVaTGtUZEtIYzkyOCJ9LHsicGF0aCI6ImltYWdlcy9hZGQtdGVybS1rYW5qaS5zdmciLCJyb290X2hhc2giOiJQTHhxRTJ1TVZaQ2MzOGstY3FTYmR1S1B5WTQzanRNMG5DbU1meXZEaXA0In0seyJwYXRoIjoiaW1hZ2VzL2JhY2t1cC5zdmciLCJyb290X2hhc2giOiJOS1E5QnFBc19vYU91em1TVnlGWVBaTXVkb2pyZXh2eFV0Mzczdmpid3NjIn0seyJwYXRoIjoiaW1hZ2VzL2Jvb2suc3ZnIiwicm9vdF9oYXNoIjoiTmlpZ1c1eUdHUFJNX3gwWHJCVkZja2tmOXZ5RS00ZlhKbHRmbDdsZE1TZyJ9LHsicGF0aCI6ImltYWdlcy9jaGVja2JveC1ib3JkZXIuc3ZnIiwicm9vdF9oYXNoIjoic2U5YWs0dzBDcDliNW9HczAya2hxX1REaC00bl9wX3pTZXZ1dnZlQVB3byJ9LHsicGF0aCI6ImltYWdlcy9jaGVja2JveC1jaGVjay5zdmciLCJyb290X2hhc2giOiIxVWVBNWExZnpqVlVtZ0RsQXNkaXRVYWg2WEFSRkN1N0FjVzY4bE9XWDU0In0seyJwYXRoIjoiaW1hZ2VzL2NoZWNrYm94LWZpbGwuc3ZnIiwicm9vdF9oYXNoIjoibXBpaWhabXdTaWlsRXA4eDI4OGRrVEFXRDFwZmtmQ0VwVGJfRm5fS29DayJ9LHsicGF0aCI6ImltYWdlcy9jaGVja21hcmsuc3ZnIiwicm9vdF9oYXNoIjoiZzh2cDd6UjZsdFF1VEhYX0VEbC0yMk5kRmdOOEpHSjZqcFEzNV9TUzhGUSJ9LHsicGF0aCI6ImltYWdlcy9jbGlwYm9hcmQuc3ZnIiwicm9vdF9oYXNoIjoiUU9sNXZJR19kMHhrZjR4Rl9BeTh0dFFjUzhReFliZlpVSXVvWE02VllpVSJ9LHsicGF0aCI6ImltYWdlcy9jb2cuc3ZnIiwicm9vdF9oYXNoIjoiMTJXVWJldEg5aTBBY0pjLU5sV29MQUpSRVUyTDdBRW5wSEY4d2ZRMFlRTSJ9LHsicGF0aCI6ImltYWdlcy9jb2xsYXBzZS5zdmciLCJyb290X2hhc2giOiJKaEtiNzVoYVRUVXkwMHF5WjRvVzBlWmFQdW53Umx6WF9YRzEzYURvSDBZIn0seyJwYXRoIjoiaW1hZ2VzL2Nvbm5lY3Rpb24uc3ZnIiwicm9vdF9oYXNoIjoiRzRKVExQUmpoTXFab09iVGlEbWYzanI1LUN0dTFQZWtWX05PQms4V1d2cyJ9LHsicGF0aCI6ImltYWdlcy9jcm9zcy5zdmciLCJyb290X2hhc2giOiJmNy05SUlMa0hranFydGVBMGlVYkZDTHpkUXlsLVpxWE5XVV83MHpEZ1BRIn0seyJwYXRoIjoiaW1hZ2VzL2RvdWJsZS1kb3duLWNoZXZyb24uc3ZnIiwicm9vdF9oYXNoIjoiVXdQOVhJMzZXalJoQ2dOSElJMWdVZ3V5MnNRR3ZPdG9pYXd1d3lNbGk1WSJ9LHsicGF0aCI6ImltYWdlcy9kb3duLWNoZXZyb24uc3ZnIiwicm9vdF9oYXNoIjoiMThBUl9SbkhqYzlPbTRyYWdMMTdCcmU4b2NEV0pKdW5QWE1kUHNUQks2USJ9LHsicGF0aCI6ImltYWdlcy9lbnRyeS1jdXJyZW50LnN2ZyIsInJvb3RfaGFzaCI6IjVFX1cwYkNFaDlxNkhsX3JDNGFRc3JhQjExRjZ4dHEyXzBDMzFhRUIwRmMifSx7InBhdGgiOiJpbWFnZXMvZXhjbGFtYXRpb24tcG9pbnQtc2hvcnQuc3ZnIiwicm9vdF9oYXNoIjoiRHh0b3NBZVJnbVVnTzhzSjJaMlFTcDBYYXZKQTdrckRXMWUyRzY4bUpJUSJ9LHsicGF0aCI6ImltYWdlcy9leHBhbmQuc3ZnIiwicm9vdF9oYXNoIjoicjRieVlTdHNxbVNpV193by1XQzUxbjlJa1NCVVlGYXBCWDVQVVJMb3dPayJ9LHsicGF0aCI6ImltYWdlcy9leHRlcm5hbC1saW5rLnN2ZyIsInJvb3RfaGFzaCI6ImI4TmJMWm5ZSXlwNy1NeVpfYlRnMDcxdTZyemJQYVR1Z2hyVkJwVy1jNUkifSx7InBhdGgiOiJpbWFnZXMvaGFtYnVyZ2VyLW1lbnUuc3ZnIiwicm9vdF9oYXNoIjoiTm5UWnFtLVRSSDhHV2xVR1p6R3U0dHhLeHFZYlkzazV2RFA5ckdxRjVRcyJ9LHsicGF0aCI6ImltYWdlcy9oaXJhZ2FuYS1hLnN2ZyIsInJvb3RfaGFzaCI6Ik9ZbUtRMjFmd3IzdlhkUm9pTjBOb19xRmowZC1wVGJLc2trM0hQNnFvazgifSx7InBhdGgiOiJpbWFnZXMvaWNvbjEyOC5wbmciLCJyb290X2hhc2giOiJ4MDE3M1FhOXRqVFI2WGxyWHNoZThWSjhPVEMzcTNFbnZEelhaNElHeTZJIn0seyJwYXRoIjoiaW1hZ2VzL2ljb24xNi5wbmciLCJyb290X2hhc2giOiJBS1lydi1SWGlGbW5sTlF3VEQwRktsTnEzTTBaUGRGYlZsNE5SamZSNFRJIn0seyJwYXRoIjoiaW1hZ2VzL2ljb24xOS5wbmciLCJyb290X2hhc2giOiJxSUVHX2x3Ui1XeC1CZDFHaEFLbEYwT3NtcTZ2NmFwOFlpVTFPb2RaWUFVIn0seyJwYXRoIjoiaW1hZ2VzL2ljb24zMi5wbmciLCJyb290X2hhc2giOiJIemc1QXRzUEdFMDhBUm9nc2xsNFhka2RzQXBJYXh6eC1sdXpJZzdnRnM0In0seyJwYXRoIjoiaW1hZ2VzL2ljb24zOC5wbmciLCJyb290X2hhc2giOiJCV3FEUzhJQk02dHM0MWs1TVJSMG5uOE5RY1BtcENoVzZrYk5qMFNuZ0JVIn0seyJwYXRoIjoiaW1hZ2VzL2ljb240OC5wbmciLCJyb290X2hhc2giOiJuSG4xT0VHNWhveFNnSVRvZU5MNHRaQzFwOXJxMjBaYXJkaS02ZGVuVkFFIn0seyJwYXRoIjoiaW1hZ2VzL2ljb242NC5wbmciLCJyb290X2hhc2giOiJWT2QwdXRxX0tQaVFyU0NyTDV3TFA2ZFRkLU1rX3ROUS1EOHRXaHFNb01zIn0seyJwYXRoIjoiaW1hZ2VzL2tlYmFiLW1lbnUuc3ZnIiwicm9vdF9oYXNoIjoiLWVJWWdpbGx3WlhfYWQ1UUI0Vk12Y3N3cjZZSko2MTdiNWZKOGJyRWUtUSJ9LHsicGF0aCI6ImltYWdlcy9rZXkuc3ZnIiwicm9vdF9oYXNoIjoiY3lHaVpHMV9RLXhNWExsSU5vZmV1eWE3a09YblF0cHRVcGxOSE56U1g3TSJ9LHsicGF0aCI6ImltYWdlcy9rZXlib2FyZC5zdmciLCJyb290X2hhc2giOiJsZzNIS3ZTOVlPdFo1aXJKZmRvWkZqdkNiTlJzMXNfdnVxMHV1R3o0cW1BIn0seyJwYXRoIjoiaW1hZ2VzL2xlZnQtY2hldnJvbi5zdmciLCJyb290X2hhc2giOiJBc1JfbXQ2MWZZWnZqWU1KTkJOV2FUWVZKMHZISk1YNmxsRHFHY1VOLTRJIn0seyJwYXRoIjoiaW1hZ2VzL2xvY2suc3ZnIiwicm9vdF9oYXNoIjoiS0dPaGFlWW43U3RYSXZxMHowdkZHcjBzNlpIaDVQYWhOTUhvZGdGQnJqWSJ9LHsicGF0aCI6ImltYWdlcy9tYWduaWZ5aW5nLWdsYXNzLnN2ZyIsInJvb3RfaGFzaCI6ImJXODNYdnlqSEpXUDNLMEt3QlVfazdZRUk5ZnNPelloUHdJSmNRZnB3ZVkifSx7InBhdGgiOiJpbWFnZXMvbWF0ZXJpYWwtZG93bi1hcnJvdy5zdmciLCJyb290X2hhc2giOiI4cXZaZmI3MEZrOGZLQklOWXZfd3hXNjVFOU5BWnRRLWhnOG03S01STVNRIn0seyJwYXRoIjoiaW1hZ2VzL21hdGVyaWFsLXJpZ2h0LWFycm93LnN2ZyIsInJvb3RfaGFzaCI6IkdzeU8zY1NLdElPRHdiTEt0TTNlWjR0LWVrV01MQWNISVB1VzZxMm44RWcifSx7InBhdGgiOiJpbWFnZXMvbW9uaXRvci5zdmciLCJyb290X2hhc2giOiJwMUNFMW82WXA0emd0bVhIczFiTTM4X01wbi1Ud3V4MWtWeGc3bEJUaS0wIn0seyJwYXRoIjoiaW1hZ2VzL21vdXNlLnN2ZyIsInJvb3RfaGFzaCI6IjlxNk94Q21RZXNfRGhpY3lFTXdBdnR6U2VtX3ZWVEZyeTJLb3hqZjFMRDgifSx7InBhdGgiOiJpbWFnZXMvbm90ZS1jYXJkLnN2ZyIsInJvb3RfaGFzaCI6IlJueEdwdXVXT09mYUd0T09BM0l3M1N5ZVVLR2c4RUZSVjc2VVo0a0U1Z00ifSx7InBhdGgiOiJpbWFnZXMvb3ZlcndyaXRlLXRlcm0ta2FuYS5zdmciLCJyb290X2hhc2giOiJBdHBTM0gyMWt3WkVnZ3hZR0NzYy11bzdRRXpHT3ZZR1ZCaWxqMTRlWDRVIn0seyJwYXRoIjoiaW1hZ2VzL292ZXJ3cml0ZS10ZXJtLWthbmppLnN2ZyIsInJvb3RfaGFzaCI6IjJBNU13RUpzWEtpSFBPVnkxeThZdzlLZnNDOFJtWVB2dkVEUWZNRTFKR2sifSx7InBhdGgiOiJpbWFnZXMvcGFsZXR0ZS5zdmciLCJyb290X2hhc2giOiJYZjBaeldsbFFla3NObUk2bkhKRXpCakhUOEtZTm5iOGF5NVRSYVpKT2pJIn0seyJwYXRoIjoiaW1hZ2VzL3BsYXktYXVkaW8uc3ZnIiwicm9vdF9oYXNoIjoibmJTZGEtS2JnVjZ3eUhubUFlVVoyN0RrcTFuNlZfQnJoelRERUZJTHppVSJ9LHsicGF0aCI6ImltYWdlcy9wbHVzLWNpcmNsZS1sYXJnZS5zdmciLCJyb290X2hhc2giOiJTd2s2Vk1tMVI0WGx2Z1ZBclpUWUJKaUo1M213Ul96bGd0Z2hOSGpVcHUwIn0seyJwYXRoIjoiaW1hZ2VzL3BsdXMtY2lyY2xlLXNtYWxsLnN2ZyIsInJvb3RfaGFzaCI6Im5tVlVkd29VZEFEUDBPWVNWNF92WEwtZEtGc3JiT204enJKWFlsb3kwbjgifSx7InBhdGgiOiJpbWFnZXMvcGx1cy10aGljay5zdmciLCJyb290X2hhc2giOiJ2T0RLTHhLOENDRFdwV19MOXBmLWxJNk91VV9NdmwzWWpZZmdFV1ZGdXlvIn0seyJwYXRoIjoiaW1hZ2VzL3BvcHVwLXNpemUuc3ZnIiwicm9vdF9oYXNoIjoidlppOVZQWktaSmVDd09BTjY0cUptSXFpV0p4YTY5MVpybk9YODcwLWhRayJ9LHsicGF0aCI6ImltYWdlcy9wb3B1cC5zdmciLCJyb290X2hhc2giOiJHQ2NSdXg4cXRGOUhRdHV3Z1dOTVplR0ZtaUxoQkhTbDdQZEd6ZGFrOFlNIn0seyJwYXRoIjoiaW1hZ2VzL3Byb2ZpbGUuc3ZnIiwicm9vdF9oYXNoIjoiYmVwZlljdUdIamY4YXVoTW9NbEZndFRjWE1GQ3pDbjVTUnl3cDBBSlJJYyJ9LHsicGF0aCI6ImltYWdlcy9xdWVzdGlvbi1tYXJrLWNpcmNsZS5zdmciLCJyb290X2hhc2giOiJhamw3YVpuZFhSMjlvUmMtT3dDcjN0WTQzS2FZdHhxSU5UWld3XzBtMjVnIn0seyJwYXRoIjoiaW1hZ2VzL3F1ZXN0aW9uLW1hcmstdGhpY2suc3ZnIiwicm9vdF9oYXNoIjoiakZGSTZYcjFISWtlblFaNlp5LVduWG1DMU80VGlJVU9FbC1fa1o0UjhsYyJ9LHsicGF0aCI6ImltYWdlcy9xdWVzdGlvbi1tYXJrLnN2ZyIsInJvb3RfaGFzaCI6ImE3VjU5VzlFZklwc0VnazM2c3BNOV9xMEh2ekJOaDBZVF8weFQyUC1VdTAifSx7InBhdGgiOiJpbWFnZXMvcmFkaW8tYnV0dG9uLWRvdC5zdmciLCJyb290X2hhc2giOiJGVm4zeU5uNzRIREpqM2pWSEtzaF94a2RNNkJ3WS1CRG0weTRxQmI0OE5RIn0seyJwYXRoIjoiaW1hZ2VzL3JhZGlvLWJ1dHRvbi5zdmciLCJyb290X2hhc2giOiJsNlpjMlVhWWpZUXo3UmtUV3czYk5yN0d1T2Z1OWxlMDZhWmo1TDZ0QjhjIn0seyJwYXRoIjoiaW1hZ2VzL3JpZ2h0LWNoZXZyb24uc3ZnIiwicm9vdF9oYXNoIjoicm5kWlF2NE9HbFBudlNVM2xzeDhBRUw0eXRMMVlETDhIZUVCQ1R2V1dVSSJ9LHsicGF0aCI6ImltYWdlcy9zY2FubmluZy5zdmciLCJyb290X2hhc2giOiJrNHpzMU9MT1lJaEktZHVpSU5kLUhmQmdoZzBUdFd1Q1ZSSnJodFdmTTdzIn0seyJwYXRoIjoiaW1hZ2VzL3NlbnRlbmNlLXBhcnNpbmcuc3ZnIiwicm9vdF9oYXNoIjoiSHNBTDk0aHdhRTJhcWVyRnJzcUtSWXo4d0prS2FlNklRaHp1SWhzanFaNCJ9LHsicGF0aCI6ImltYWdlcy9zb3VyY2UtdGVybS5zdmciLCJyb290X2hhc2giOiIxbGNrcEd1MjdCYTBHMHltSno5ZkZ4UHVaMFlOZHVPWFdZSDhMblVfNnZFIn0seyJwYXRoIjoiaW1hZ2VzL3NwZWFrZXIuc3ZnIiwicm9vdF9oYXNoIjoiT3QzQ1lEZ1RzWkJDRzJ1RWdkQlJ6UEhYOEltbDh3WXFXNExMMHRlamNrbyJ9LHsicGF0aCI6ImltYWdlcy9zcGlubmVyLnN2ZyIsInJvb3RfaGFzaCI6IjlHb0Z4U2kwQnVMNHFmaDN3dWlwXzNwYU41anZSTlB2eHprSFp4b3QyWkEifSx7InBhdGgiOiJpbWFnZXMvdGFnLnN2ZyIsInJvb3RfaGFzaCI6ImdzcWt6VjMwTnNmMm1TeFAwR1NJZEJuRmlHUGt6ZnZGUGlSVWZFd2gxM2cifSx7InBhdGgiOiJpbWFnZXMvdGV4dC1wYXJzaW5nLnN2ZyIsInJvb3RfaGFzaCI6IlIxTHJ0UUJmX2VJQkxCcGtlWW9FWEtBTjlvV2s5T1VPQzdER1FNQ2tvX2cifSx7InBhdGgiOiJpbWFnZXMvdHJhbnNsYXRpb24uc3ZnIiwicm9vdF9oYXNoIjoiaUpmTXFpNEdYWmFEblFEcFFWVzN4Y3ozMjF0N1BLRWRqOWI1RGRXLXJVOCJ9LHsicGF0aCI6ImltYWdlcy91cC1hcnJvdy5zdmciLCJyb290X2hhc2giOiJsVkdValdYQ2Rwd1Y3Y1lOQ3c5YmhuSDFRUlJzcUZyWkh1LTZDSzMtcldvIn0seyJwYXRoIjoiaW1hZ2VzL3VwLWNoZXZyb24uc3ZnIiwicm9vdF9oYXNoIjoiaUFxLXVRODY2dDhkQnNNY05VRldrNHQtc3lpZEo4OVJENFlpd04ybEN4cyJ9LHsicGF0aCI6ImltYWdlcy92aWV3LW5vdGUuc3ZnIiwicm9vdF9oYXNoIjoidzd0cHViYTBLc2RDbXA5azRvV0dmSmhCNWtic0dVV2k1S3U0WU1lVGNTOCJ9LHsicGF0aCI6ImltYWdlcy93aW5kb3cuc3ZnIiwicm9vdF9oYXNoIjoiMGc3VnNkcW1NY005M2xuTndnMzVkaUduM09UY0ZPNXhuWHYtOVFGVUNjOCJ9LHsicGF0aCI6ImltYWdlcy95b21pdGFuLWljb24uc3ZnIiwicm9vdF9oYXNoIjoiSUYzZGZqNVlKeVROdVI5ejQtMHdKNGRqRkJtMmk5NVV1NUY5MDlabHJYayJ9LHsicGF0aCI6ImluZm8uaHRtbCIsInJvb3RfaGFzaCI6ImNrTk5vc2FZRnlmSnE3QzdueW1aeTZnNWpZalNaY2JUT09FMVhYRTJKUFEifSx7InBhdGgiOiJpc3N1ZXMuaHRtbCIsInJvb3RfaGFzaCI6IlotMTFYOXpWMzZ6M3RIckUxTHFTZzZIYUdNTE5yZUdyVEt5WE0tNTVxbzQifSx7InBhdGgiOiJqcy9hY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktY29udHJvbGxlci5qcyIsInJvb3RfaGFzaCI6Ind4QUNiM0szeTJSSGtKdUc0WEVNcGdZVWkxSEVjMG5qd2oyR2xfLXVLNHcifSx7InBhdGgiOiJqcy9hY2Nlc3NpYmlsaXR5L2dvb2dsZS1kb2NzLXV0aWwuanMiLCJyb290X2hhc2giOiIwTENFcjlkVTlQM2cxc3BZT1A3OVJLUEw0YWRiY3BFZWJTZ3hjNTdVN2h3In0seyJwYXRoIjoianMvYWNjZXNzaWJpbGl0eS9nb29nbGUtZG9jcy14cmF5LmpzIiwicm9vdF9oYXNoIjoiUEhhQnRIU1FtY3E1dW1BY01mN2ROeE1yMWR3SzhHdWpUYzg2dXlsMmlLMCJ9LHsicGF0aCI6ImpzL2FjY2Vzc2liaWxpdHkvZ29vZ2xlLWRvY3MuanMiLCJyb290X2hhc2giOiJSdDRNNi02SjJ5VmRod2VvUTFmbVoyOXZSN09nMUplZ2MyVnZtVi1jR3pZIn0seyJwYXRoIjoianMvYXBwL2NvbnRlbnQtc2NyaXB0LW1haW4uanMiLCJyb290X2hhc2giOiJ0Q1dsMnQ3bHdraEM1cHJzNkllbHBpZm4ya1Y5dlpqdmk1WFZhNm9WdmpZIn0seyJwYXRoIjoianMvYXBwL2NvbnRlbnQtc2NyaXB0LXdyYXBwZXIuanMiLCJyb290X2hhc2giOiJuNFp0VEtNaFRPS1ZfOWQtZE1GNHZBNng5TUFkQWtoR1RUa2dQeUdIaXlzIn0seyJwYXRoIjoianMvYXBwL2Zyb250ZW5kLmpzIiwicm9vdF9oYXNoIjoiZVZ2RnZSNDQxeUhuMXMtX3JGRndHRWlBa2U2LVNzWG5xYktUZW1iOEhRTSJ9LHsicGF0aCI6ImpzL2FwcC9wb3B1cC1mYWN0b3J5LmpzIiwicm9vdF9oYXNoIjoiUnZFUldJOXlWQ0JXVTdQa2pOM1NrUDJjRGJXM2NDU0JFb1hSeVVQZkJjcyJ9LHsicGF0aCI6ImpzL2FwcC9wb3B1cC1wcm94eS5qcyIsInJvb3RfaGFzaCI6InhqempMWkVWNHFWdHkwVmJHdXFUNzB5LW10a3ZFUWd2cFRwXzZ0YWJwWFUifSx7InBhdGgiOiJqcy9hcHAvcG9wdXAtd2luZG93LmpzIiwicm9vdF9oYXNoIjoiRjA5OFMwbWs0by1oMVRVanlwbGpLN0ZaMENRV2l4OUtidDJxUE01OURxYyJ9LHsicGF0aCI6ImpzL2FwcC9wb3B1cC5qcyIsInJvb3RfaGFzaCI6InBuM3VhcTJMQU1KYlNqUFc0QzVZUkdIellOOWhYQUpXUlFVaWV5R3l1R3MifSx7InBhdGgiOiJqcy9hcHAvdGhlbWUtY29udHJvbGxlci5qcyIsInJvb3RfaGFzaCI6IlhscUZ6eGhuLTNpOUJVTXBPR0h6VDBPbmVNQnJpQjFVbk1DcEEzQTR1U3cifSx7InBhdGgiOiJqcy9hcHBsaWNhdGlvbi5qcyIsInJvb3RfaGFzaCI6Il9LdE5CcUdZRUJZdC1Da3VuRHR4a1VzdGtWZnpmUWgzdVJlQ2otWHNDekkifSx7InBhdGgiOiJqcy9iYWNrZ3JvdW5kL2JhY2tlbmQuanMiLCJyb290X2hhc2giOiJrSjBKQTdseElQX1EteDJzaUYxTTBWczBlMkFnT204bktVX19lXzJ6MkNjIn0seyJwYXRoIjoianMvYmFja2dyb3VuZC9iYWNrZ3JvdW5kLW1haW4uanMiLCJyb290X2hhc2giOiI5d0xGN3JJUFhfNzJCaUVqcEJlU3N2dDE4RkdhLWdJdzdOVGZiVW5zNkZ3In0seyJwYXRoIjoianMvYmFja2dyb3VuZC9vZmZzY3JlZW4tbWFpbi5qcyIsInJvb3RfaGFzaCI6IkFVSUU0d1RDR0FqSnZHcFc5N3BlZXlxajE3UFp0NXZoV2xBRnpxNE80WGcifSx7InBhdGgiOiJqcy9iYWNrZ3JvdW5kL29mZnNjcmVlbi1wcm94eS5qcyIsInJvb3RfaGFzaCI6IjFDLVBaZVNqWjVicEtmVWxxVWRyZFdyRTB2MjViZWFOWlc4YnJMUThOZWcifSx7InBhdGgiOiJqcy9iYWNrZ3JvdW5kL29mZnNjcmVlbi5qcyIsInJvb3RfaGFzaCI6IktMOG9ncDBrc0UwZWFyR0hXMnVqR203emxWZHJiRENOWlJMVDRiZWRLWEUifSx7InBhdGgiOiJqcy9iYWNrZ3JvdW5kL3Byb2ZpbGUtY29uZGl0aW9ucy11dGlsLmpzIiwicm9vdF9oYXNoIjoieW1lR0RfTTBQaFhqMVU0RnRRb2dJMmJ6Ykl1U0F1WThaNGMtcDJrdWhTWSJ9LHsicGF0aCI6ImpzL2JhY2tncm91bmQvcmVxdWVzdC1idWlsZGVyLmpzIiwicm9vdF9oYXNoIjoiQ0RHLXBSM3RacXduWWt2SS1WeVRoei04ZkxQdTFpMXpCMU9Uczg0MUo3WSJ9LHsicGF0aCI6ImpzL2JhY2tncm91bmQvc2NyaXB0LW1hbmFnZXIuanMiLCJyb290X2hhc2giOiJMUExocGF3N1pIeUZUZ1pNeWluYkMxMmdsSU84YUxjc1V0cFI3dFQyUXc4In0seyJwYXRoIjoianMvY29tbS9hbmtpLWNvbm5lY3QuanMiLCJyb290X2hhc2giOiJGbDMtZEs3ZVI4NktTWkYweXR6WGdMaFlCWlpHaUxmbGp3MHR6aXJWUy1FIn0seyJwYXRoIjoianMvY29tbS9hcGkuanMiLCJyb290X2hhc2giOiJ5cjBOYzQ4enlPbExqQ19WZm5QSmhvVXh0Q29YS3RmRnJTVkh4TFM1NE9rIn0seyJwYXRoIjoianMvY29tbS9jbGlwYm9hcmQtbW9uaXRvci5qcyIsInJvb3RfaGFzaCI6ImJfaUM0WmxSTUUwbGJ6VVRRcGp3OXNIR1F3TGxOS0ZPODE5cHVsYVlUTmsifSx7InBhdGgiOiJqcy9jb21tL2NsaXBib2FyZC1yZWFkZXIuanMiLCJyb290X2hhc2giOiIxQUNoOTU0SVpFRUc0RnJyZG0tMnUzSm42d3I1SFd3UUFFbGtUbVBmeDJnIn0seyJwYXRoIjoianMvY29tbS9jcm9zcy1mcmFtZS1hcGkuanMiLCJyb290X2hhc2giOiJxZGR4NElvUE10WVJrdTY2RDN0M2h2THJQMzVzUHlwNWRWQ21yVS1IQ1AwIn0seyJwYXRoIjoianMvY29tbS9mcmFtZS1hbmNlc3RyeS1oYW5kbGVyLmpzIiwicm9vdF9oYXNoIjoibEFrenlZcXVDTDlFZTd4U245RDZmZGtxcWFFekJiQ3JwV201TkpCY3FRYyJ9LHsicGF0aCI6ImpzL2NvbW0vZnJhbWUtY2xpZW50LmpzIiwicm9vdF9oYXNoIjoiQm1COWRPQ192MUczU3NKZ0tNaDdsRVNMVmliZUpTYmxQc00zSGU5bEpXYyJ9LHsicGF0aCI6ImpzL2NvbW0vZnJhbWUtZW5kcG9pbnQuanMiLCJyb290X2hhc2giOiJhSVJiWjR2OGoyeC1iZUlaeWpDQ0RmenlyNnFDUFNYSkpyV3pKYU1xay13In0seyJwYXRoIjoianMvY29tbS9mcmFtZS1vZmZzZXQtZm9yd2FyZGVyLmpzIiwicm9vdF9oYXNoIjoicGZqZWM2Nmh1eG9MTkNCUWFqWXhra3RkdzVfZlhwaVMxNW5lLWdTb1NVMCJ9LHsicGF0aCI6ImpzL2NvbW0vbWVjYWIuanMiLCJyb290X2hhc2giOiJUM1lNYVJ6U3lNWHVfc2gzNUhGUlBYTEFYdjVOdktEOEZFRU96ZUdmTU5RIn0seyJwYXRoIjoianMvY29yZS9hcGktbWFwLmpzIiwicm9vdF9oYXNoIjoiRElfVDRNMEl1TmkyN1M3Vm9JSVBWSGhCWnNfdjNseXlDSnk1YlI5a2FtWSJ9LHsicGF0aCI6ImpzL2NvcmUvZHluYW1pYy1wcm9wZXJ0eS5qcyIsInJvb3RfaGFzaCI6ImZFQ2sxY2Z0S2g3dDRxdkZoQURWRnZYT0NDQ0h3NnA5VmFGX3YwMTFIRkUifSx7InBhdGgiOiJqcy9jb3JlL2V2ZW50LWRpc3BhdGNoZXIuanMiLCJyb290X2hhc2giOiJseXNraUotS2pmY1oyVzR3bUlxekhTTE9YMXczTzZYbVdOY1E4Q1YxaHpNIn0seyJwYXRoIjoianMvY29yZS9ldmVudC1saXN0ZW5lci1jb2xsZWN0aW9uLmpzIiwicm9vdF9oYXNoIjoiUUhrN0JDQzNyY0llRnltVWJkby1WQ1VQRmRwMU5SanRGTFNFaWJJc3FCSSJ9LHsicGF0aCI6ImpzL2NvcmUvZXh0ZW5zaW9uLWVycm9yLmpzIiwicm9vdF9oYXNoIjoiQm9YOWtWR1ZLV1ZOUFlvSlBMZ1JITmhOZi1EWmFKM3NMbDlzdFNUNHJBOCJ9LHsicGF0aCI6ImpzL2NvcmUvZmV0Y2gtdXRpbGl0aWVzLmpzIiwicm9vdF9oYXNoIjoiU2pIOVBoZFpraVBrZXRrYWxjRGhEM05ja0Z4bW43dnRXdkxqVjV5dW5mNCJ9LHsicGF0aCI6ImpzL2NvcmUvanNvbi5qcyIsInJvb3RfaGFzaCI6IksycGRiVEg5VVZjNHdKel9ia0JYWXZRMzV3cmdtV3hNSXZxa0pUczZzZ1EifSx7InBhdGgiOiJqcy9jb3JlL2xvZy11dGlsaXRpZXMuanMiLCJyb290X2hhc2giOiI5Vnd2M3k2Z3ZUYlFuTzFBU0FGZFltZ2dDeDJqSnNaSHdBZUYtdHAtcVFjIn0seyJwYXRoIjoianMvY29yZS9sb2cuanMiLCJyb290X2hhc2giOiI0a2ozTVdleWRfS0dTYjZtLU9xZkJzQ2tLRXg0Rk04QlNSOVl1X0FzV2JvIn0seyJwYXRoIjoianMvY29yZS9vYmplY3QtdXRpbGl0aWVzLmpzIiwicm9vdF9oYXNoIjoiUkZ0VlhDNFViekZ2cnFKd29CeHBxVUV3UVJpdW9JUEtCcTczaUs3Z1ZibyJ9LHsicGF0aCI6ImpzL2NvcmUvcHJvbWlzZS1hbmltYXRpb24tZnJhbWUuanMiLCJyb290X2hhc2giOiJFUW1RSzlTOHA2cEdrYVhaVkoyYVVFNm5UZnFmemdjQkZJS3BMMVRTOTMwIn0seyJwYXRoIjoianMvY29yZS90by1lcnJvci5qcyIsInJvb3RfaGFzaCI6IklaSEI3cUljWnlvTldYUHFvRGlCaWlRcHk3clhOU0J5bXBMZmtVNExjNTgifSx7InBhdGgiOiJqcy9jb3JlL3V0aWxpdGllcy5qcyIsInJvb3RfaGFzaCI6InJldTZpUDhzWGZ1djdMaVNBZ2NTSVIwOU1uVFdLX3E1eDBzUWZKUHNnaE0ifSx7InBhdGgiOiJqcy9kYXRhL2Fua2ktbm90ZS1idWlsZGVyLmpzIiwicm9vdF9oYXNoIjoiUUNEV3dGWE9fQ2w4NWN6bEo3TDZHWVJrcWJwRGRIOGdQMjh6X3ZQX3hVWSJ9LHsicGF0aCI6ImpzL2RhdGEvYW5raS1ub3RlLWRhdGEtY3JlYXRvci5qcyIsInJvb3RfaGFzaCI6InpZQk1QdzRhWndBZ1A5aTB2eWdIck02aV9jd3EzNHd4NE5qMDBDd1JRVFEifSx7InBhdGgiOiJqcy9kYXRhL2Fua2ktdGVtcGxhdGUtdXRpbC5qcyIsInJvb3RfaGFzaCI6Ing5ZVBaaWhDdFRHSE5jSDdEbDh5SURjMHp4dnI1bElLWEhmOTdvcTZSUGMifSx7InBhdGgiOiJqcy9kYXRhL2Fua2ktdXRpbC5qcyIsInJvb3RfaGFzaCI6IkNTTVJGc1BlUFVDT0owbFhSdktxdmNHR0x5QVk1VGRlUkEyc1FDVE12eXMifSx7InBhdGgiOiJqcy9kYXRhL2FycmF5LWJ1ZmZlci11dGlsLmpzIiwicm9vdF9oYXNoIjoiMXRDNE02NW91RHhTUUJvczJRVTNKdW9xMTg4VjVxbFBnOWNHbWRybmFUWSJ9LHsicGF0aCI6ImpzL2RhdGEvZGF0YWJhc2UuanMiLCJyb290X2hhc2giOiJ3c0VYZElzMzAzTEVxSVFmWWZaN1daOGhKZURPY3B1bEFIbFFEdWlnT3Y0In0seyJwYXRoIjoianMvZGF0YS9qc29uLXNjaGVtYS5qcyIsInJvb3RfaGFzaCI6IkFubUVEeHFqQ3VqNnAwcEk5MUVWWmp6cUhQUlpYREJEcjBsblV0akZrVEEifSx7InBhdGgiOiJqcy9kYXRhL29wdGlvbnMtdXRpbC5qcyIsInJvb3RfaGFzaCI6IjB5Tk1HMkxkZlJVLWZoNlI3bVF4aHdlQWRuc0NkVzNNZUFuWE9qODd0R2cifSx7InBhdGgiOiJqcy9kYXRhL3Blcm1pc3Npb25zLXV0aWwuanMiLCJyb290X2hhc2giOiJwQWMyZ1YtRXBOdEhpbUhZZlNGLTJ3bmFhaFRmUHRfRXZBZXowSlVUWVdnIn0seyJwYXRoIjoianMvZGF0YS9wcm9maWxlcy11dGlsLmpzIiwicm9vdF9oYXNoIjoiSnhyS1pYX0pLSExJX0VqMGcxVjUzd0t5WU52RXVPSjgxeUdoZElLZHVmQSJ9LHsicGF0aCI6ImpzL2RhdGEvc3RyaW5nLXV0aWwuanMiLCJyb290X2hhc2giOiJpUlduc2lCYm1UMVQtTmdfZUZ2ZndGZzVTRnpobkQ1T1NhczZybTR3dWZFIn0seyJwYXRoIjoianMvZGljdGlvbmFyeS9kaWN0aW9uYXJ5LWRhdGEtdXRpbC5qcyIsInJvb3RfaGFzaCI6InUyQmwteWFTVlRlMFVCUmxheERyTC1hMTlrMVRWRi01RVUtRTcySTFyem8ifSx7InBhdGgiOiJqcy9kaWN0aW9uYXJ5L2RpY3Rpb25hcnktZGF0YWJhc2UuanMiLCJyb290X2hhc2giOiJCTi1NUnFoclZrYXlYQVB1ZVo3dldhVzg1WTBsMVEwbHVPbjdrS0xQNW8wIn0seyJwYXRoIjoianMvZGljdGlvbmFyeS9kaWN0aW9uYXJ5LWltcG9ydGVyLW1lZGlhLWxvYWRlci5qcyIsInJvb3RfaGFzaCI6IlgzS29ERFp1NHFVbVlISVplUXE5dldjb29LVWFfc0NYcXR0UE1TM0dESVUifSx7InBhdGgiOiJqcy9kaWN0aW9uYXJ5L2RpY3Rpb25hcnktaW1wb3J0ZXIuanMiLCJyb290X2hhc2giOiJsVlBvMXNEQXJ3TUttVzFTVkJkTnJLN0dJUUdCNzBOMlJsM2xHbDhORlM0In0seyJwYXRoIjoianMvZGljdGlvbmFyeS9kaWN0aW9uYXJ5LXdvcmtlci1oYW5kbGVyLmpzIiwicm9vdF9oYXNoIjoieGpwWEJfbnMzVnQ3WFl4Z2lfeXNyZ0czdTVYMkx1MEhPcTB4bFdwZUMzOCJ9LHsicGF0aCI6ImpzL2RpY3Rpb25hcnkvZGljdGlvbmFyeS13b3JrZXItbWFpbi5qcyIsInJvb3RfaGFzaCI6Ilg0cUpXVWJRZkcxZW52UzRtMlVvSmU1LXBqNC1CUzVoZGpmaHlmWXJJcWcifSx7InBhdGgiOiJqcy9kaWN0aW9uYXJ5L2RpY3Rpb25hcnktd29ya2VyLW1lZGlhLWxvYWRlci5qcyIsInJvb3RfaGFzaCI6IldEQXlWMW9XZVNYS2o0bWhUZm96UFVoX1VjQkF2Q19JQ3FEeHctYnB1WjgifSx7InBhdGgiOiJqcy9kaWN0aW9uYXJ5L2RpY3Rpb25hcnktd29ya2VyLmpzIiwicm9vdF9oYXNoIjoib1BiSzl6UmtUVDZnbExyNmpFYV83RzlRbk9OUjBnUk9EWG5HeFRpQWR1RSJ9LHsicGF0aCI6ImpzL2Rpc3BsYXkvZGlzcGxheS1hbmtpLmpzIiwicm9vdF9oYXNoIjoiRDRoTGw3SWFxd3lBQXNyc3hVNmgwck1kMWxRSExwQ0tQTlJKUVhLaVpPayJ9LHsicGF0aCI6ImpzL2Rpc3BsYXkvZGlzcGxheS1hdWRpby5qcyIsInJvb3RfaGFzaCI6IjVYQll5aFNILWtvbFptUHM1NnpadXRTaDZNRmVvVXpNTzlGeTA5bUFpYTAifSx7InBhdGgiOiJqcy9kaXNwbGF5L2Rpc3BsYXktY29udGVudC1tYW5hZ2VyLmpzIiwicm9vdF9oYXNoIjoiSEYwRWxPYzRXellrRGpmLUNGRVR5bG1fZVVVaTRRTURUdThlSjI4ZnFYUSJ9LHsicGF0aCI6ImpzL2Rpc3BsYXkvZGlzcGxheS1nZW5lcmF0b3IuanMiLCJyb290X2hhc2giOiJJWjBkdDV1bmIwWHZ6aWdqM2h5cm5jYVlkRzlzSFM2VjFCUW9iY0JhQURFIn0seyJwYXRoIjoianMvZGlzcGxheS9kaXNwbGF5LWhpc3RvcnkuanMiLCJyb290X2hhc2giOiJaMlBnd2xEUVN0a2hUczd5Q2MwblRUb1F4VEpLcWdtY2RZQWlheUthdUVvIn0seyJwYXRoIjoianMvZGlzcGxheS9kaXNwbGF5LW5vdGlmaWNhdGlvbi5qcyIsInJvb3RfaGFzaCI6IkVfc0pqYzVfUjRVa19mc2pqY2paNEZSUFdUdjdiTzRXaEdPRFhmSC1LRkUifSx7InBhdGgiOiJqcy9kaXNwbGF5L2Rpc3BsYXktcHJvZmlsZS1zZWxlY3Rpb24uanMiLCJyb290X2hhc2giOiJJLXoyQ1hPSzI5THhuMV9GZ2RLd1RFOF9RMTRiZlJtQ0t6LW9tb1VZWEJBIn0seyJwYXRoIjoianMvZGlzcGxheS9kaXNwbGF5LXJlc2l6ZXIuanMiLCJyb290X2hhc2giOiJhZjFZb29tbjVsSk1mQTdwLUU3dmFUTTBybHJ6d25hRlN5c2N1LWx0aWRFIn0seyJwYXRoIjoianMvZGlzcGxheS9kaXNwbGF5LmpzIiwicm9vdF9oYXNoIjoiajFRemN5VXFUSWdWM2E0Y3F4c3hHeDBfVS0wOExGdW5LZWlEMU53b25KdyJ9LHsicGF0aCI6ImpzL2Rpc3BsYXkvZWxlbWVudC1vdmVyZmxvdy1jb250cm9sbGVyLmpzIiwicm9vdF9oYXNoIjoiU0YtX2FsZUFrazV1SHNEUG1FUVBHdnFVY01JNmtpSV8zVG1iWTE1eGk5YyJ9LHsicGF0aCI6ImpzL2Rpc3BsYXkvb3B0aW9uLXRvZ2dsZS1ob3RrZXktaGFuZGxlci5qcyIsInJvb3RfaGFzaCI6Illxa2pWRUJhbzA5WmtQbE9ScGlpcVJTd1FnLUJTVEhZeWN1dWQ5Q1pMMzgifSx7InBhdGgiOiJqcy9kaXNwbGF5L3BvcHVwLW1haW4uanMiLCJyb290X2hhc2giOiJNVGxPX3Qzc2pET1NITDFhYnJKRnBWX3JXRjBzbUt1VmZWQVpxVERoeTBZIn0seyJwYXRoIjoianMvZGlzcGxheS9wcm9udW5jaWF0aW9uLWdlbmVyYXRvci5qcyIsInJvb3RfaGFzaCI6ImI1S0RUNDhWeWtiZmZYYVkzcXRNNlNCbWxFTmdVRDM4TnVGNUpPMmxXSEUifSx7InBhdGgiOiJqcy9kaXNwbGF5L3F1ZXJ5LXBhcnNlci5qcyIsInJvb3RfaGFzaCI6Indyd09BRmdxZDVfMXlJYlpBRnBsS1hoankxeTFPcHNhOW5Ubk1yVy14czAifSx7InBhdGgiOiJqcy9kaXNwbGF5L3NlYXJjaC1hY3Rpb24tcG9wdXAtY29udHJvbGxlci5qcyIsInJvb3RfaGFzaCI6IjFsZWl5NDJhUEJ6N0dxbUMxTjN3UGZTMndObU9Dc1Q4MFZaTU9aZzR1RzgifSx7InBhdGgiOiJqcy9kaXNwbGF5L3NlYXJjaC1kaXNwbGF5LWNvbnRyb2xsZXIuanMiLCJyb290X2hhc2giOiJiaXF1dVR4TWZHYk9uSUtwN0dpb19LMU5MNlVwMFFHM052ZmtQX3pYOS1rIn0seyJwYXRoIjoianMvZGlzcGxheS9zZWFyY2gtbWFpbi5qcyIsInJvb3RfaGFzaCI6ImRPV1A4bjlHS3pHdUxvd3VjZkhfZ2RBYjd0VFRlbENIc1piR0ZSa3Q1bFkifSx7InBhdGgiOiJqcy9kaXNwbGF5L3NlYXJjaC1wZXJzaXN0ZW50LXN0YXRlLWNvbnRyb2xsZXIuanMiLCJyb290X2hhc2giOiJDUGZQUWxMXzBqakJHS3d4THNQSExDZkNXLVlrRWwtVWFLeEFQeWYxSG9VIn0seyJwYXRoIjoianMvZGlzcGxheS9zdHJ1Y3R1cmVkLWNvbnRlbnQtZ2VuZXJhdG9yLmpzIiwicm9vdF9oYXNoIjoiXzl5Vy01ZnFOcDE4UnRQZHhxRWhZQ19DVVY2X09nam5NTTV4cjNtZDZNVSJ9LHsicGF0aCI6ImpzL2RvbS9jc3Mtc3R5bGUtYXBwbGllci5qcyIsInJvb3RfaGFzaCI6IlViaFh6WlJaT2RvQlZzbVRvVmJNUmw4UTJvVWtWblRmTG1sS1ZJM2ZhUU0ifSx7InBhdGgiOiJqcy9kb20vZG9jdW1lbnQtZm9jdXMtY29udHJvbGxlci5qcyIsInJvb3RfaGFzaCI6ImZkM1pnczBCT3VmZlNCY3I0M09ZWHdxU1FIdHZudHRlel9HN0lZU0FNWjQifSx7InBhdGgiOiJqcy9kb20vZG9jdW1lbnQtdXRpbC5qcyIsInJvb3RfaGFzaCI6IjBibHV6UnJBX0ttdVdPcG1yc3kwMjN5SGlGcUJXazdlWklOZlZFUEExVjAifSx7InBhdGgiOiJqcy9kb20vZG9tLWRhdGEtYmluZGVyLmpzIiwicm9vdF9oYXNoIjoiUENYX0tIRDV0a01pek5GQk9uRV9BOVJOdGVZbDZYaFMwdjRTanRUSWpiZyJ9LHsicGF0aCI6ImpzL2RvbS9kb20tdGV4dC1zY2FubmVyLmpzIiwicm9vdF9oYXNoIjoidkVWcDdWSEdYcHhrVzJiNjJjbGRsRk5ld1JtdHd1dUNjaURFWDFEUGtwWSJ9LHsicGF0aCI6ImpzL2RvbS9odG1sLXRlbXBsYXRlLWNvbGxlY3Rpb24uanMiLCJyb290X2hhc2giOiJrT0YwalpqeHNwSXdLRlF2ZlF1NWJtMV9pV2JkcG1PYzJmMG41V0tlWExjIn0seyJwYXRoIjoianMvZG9tL25hdGl2ZS1zaW1wbGUtZG9tLXBhcnNlci5qcyIsInJvb3RfaGFzaCI6ImxOM2FFYzlZbDNuS3hweUlFS3VFVU1CRkozaW5TeFd1M0Noc0JzcGxMX1UifSx7InBhdGgiOiJqcy9kb20vcGFuZWwtZWxlbWVudC5qcyIsInJvb3RfaGFzaCI6IlFUdTJKQlNmdldPdUtMcVZsRk9tSDZDdTdtT05wazlOLXBGN1JSNnB1djgifSx7InBhdGgiOiJqcy9kb20vcG9wdXAtbWVudS5qcyIsInJvb3RfaGFzaCI6IkFJSlp6WmxOWmx6dllWbkhaLXB2UERJcmVqT0hQaGxEVTR3T3RfWWZzWlkifSx7InBhdGgiOiJqcy9kb20vcXVlcnktc2VsZWN0b3IuanMiLCJyb290X2hhc2giOiJaSXMweGdTNVJvNXI2NjY0TERNN3E4SXoxdFBtQUhEN2t5eFNjV0R0ZjlJIn0seyJwYXRoIjoianMvZG9tL3Njcm9sbC1lbGVtZW50LmpzIiwicm9vdF9oYXNoIjoiT2JUZTdkUEwzQmQ3eE1JQXFVWkdBTVViTlZHcnZYdmdIVGNBRWFZNEdPWSJ9LHsicGF0aCI6ImpzL2RvbS9zZWxlY3Rvci1vYnNlcnZlci5qcyIsInJvb3RfaGFzaCI6IkU2cWFjN1U2QzB3TjA5VTR2UWo4cnpEaU9Qa243NWpmcWNYeUx2dDBHYW8ifSx7InBhdGgiOiJqcy9kb20vc2ltcGxlLWRvbS1wYXJzZXIuanMiLCJyb290X2hhc2giOiJPY0l0QzRWQVlyV1JCUzVRcHVoclFKdHR5azRHbWxlSWlPZ0RhNmZsY3lnIn0seyJwYXRoIjoianMvZG9tL3N0eWxlLXV0aWwuanMiLCJyb290X2hhc2giOiJzYUVZMnV1NHN3OUlFV1FKU01KdzRvQUpnZnd6SlJxRFktaVI0SUt4amFJIn0seyJwYXRoIjoianMvZG9tL3RleHQtc291cmNlLWVsZW1lbnQuanMiLCJyb290X2hhc2giOiJuWHVZX2M5UWIwMEt3RjFtWWpWNXlSSmVyZGFYaUhiUElUYXV2WVZ4enRvIn0seyJwYXRoIjoianMvZG9tL3RleHQtc291cmNlLWdlbmVyYXRvci5qcyIsInJvb3RfaGFzaCI6InJYeUJNV1h0bXdfT2tEMFVzUDBrak5HTTN0U0lNdlhuOVFTT0laQ2YwNEUifSx7InBhdGgiOiJqcy9kb20vdGV4dC1zb3VyY2UtcmFuZ2UuanMiLCJyb290X2hhc2giOiJXZ2lEd3FpckZNLW82TmIwSUUtNkNEZV9KUVJXVVRWTDJkRDM0am1sNDZRIn0seyJwYXRoIjoianMvZXh0ZW5zaW9uL2Vudmlyb25tZW50LmpzIiwicm9vdF9oYXNoIjoiVTU3RFBRM1hINTV0NzU1aXRHNlpPS2hTSm01VDNHU1lPYVc1Qk5DaDE5OCJ9LHsicGF0aCI6ImpzL2V4dGVuc2lvbi93ZWItZXh0ZW5zaW9uLmpzIiwicm9vdF9oYXNoIjoiMUd4dmVwV0ZYR2UzbW51U2ZMNjBEOURQQnFfSUgxRU8yR2UxcF9WUmJ1USJ9LHsicGF0aCI6ImpzL2dlbmVyYWwvY2FjaGUtbWFwLmpzIiwicm9vdF9oYXNoIjoiakJsR2ZhVnAwM0dSWUJ6NjBINjJ2UzN2Z2lsYTdWcUZWNU1MMXQ1bHlvRSJ9LHsicGF0aCI6ImpzL2dlbmVyYWwvb2JqZWN0LXByb3BlcnR5LWFjY2Vzc29yLmpzIiwicm9vdF9oYXNoIjoiYnlFcV9rT040MEl4ZkRXcjJZMnBFcFV4Z08zbHgzdERkQlB3OXlSb19HVSJ9LHsicGF0aCI6ImpzL2dlbmVyYWwvcmVnZXgtdXRpbC5qcyIsInJvb3RfaGFzaCI6Ik01SGdQSWwxUFpHZVN5anhIdVcteXJNcTVPM01KVjBmNDhYY0tMQndEZU0ifSx7InBhdGgiOiJqcy9nZW5lcmFsL3Rhc2stYWNjdW11bGF0b3IuanMiLCJyb290X2hhc2giOiJxTy1adjV6Mzc4a0s3cWFrOUZyZXdSeTJjcXRaLXpmRnVSQ0JYS045aThZIn0seyJwYXRoIjoianMvaW5wdXQvaG90a2V5LWhhbmRsZXIuanMiLCJyb290X2hhc2giOiJneDV3MjZteFZ6SkdJY2VkOFlPQUtHTEF5NFVqQ3Job29rQVdrbGY4dllJIn0seyJwYXRoIjoianMvaW5wdXQvaG90a2V5LWhlbHAtY29udHJvbGxlci5qcyIsInJvb3RfaGFzaCI6IjI2TWZYVVdjYjRJZ2dtRWhQZk5PU1pnbGdNY3R5R1BFNGhiYlNYajVmNTQifSx7InBhdGgiOiJqcy9pbnB1dC9ob3RrZXktdXRpbC5qcyIsInJvb3RfaGFzaCI6IldDS09tMmt0dHJFVTMxeFpnRnk3QkxzeGV1UXU4UmljS2EyLVRPNFdIZzgifSx7InBhdGgiOiJqcy9sYW5ndWFnZS9DSkstdXRpbC5qcyIsInJvb3RfaGFzaCI6ImF1NkVSMVdyTFkycXlUeFZlOHIyWmZTcW5jN2FtVlIxRTQyWlFNTklxbHcifSx7InBhdGgiOiJqcy9sYW5ndWFnZS9hci9hcmFiaWMtdGV4dC1wcmVwcm9jZXNzb3JzLmpzIiwicm9vdF9oYXNoIjoiREFHczNiTTJoSXNaenhxX1dfMkFfQkd3bjBtYlgtX2NnWEtkU3gzUlQ2NCJ9LHsicGF0aCI6ImpzL2xhbmd1YWdlL2RlL2dlcm1hbi10ZXh0LXByZXByb2Nlc3NvcnMuanMiLCJyb290X2hhc2giOiJZSS16WEtxc3BFdHIyVW0tdkNDR0EydnBxcXd3ODVmLVk4c3VnM194djg4In0seyJwYXRoIjoianMvbGFuZ3VhZ2UvZGUvZ2VybWFuLXRyYW5zZm9ybXMuanMiLCJyb290X2hhc2giOiJ5dXdHSml1SGdFM2E2QUd6UUYwdEJGQm1OeDlha0tvemx6OWwyRUpfT1Y0In0seyJwYXRoIjoianMvbGFuZ3VhZ2UvZW4vZW5nbGlzaC10cmFuc2Zvcm1zLmpzIiwicm9vdF9oYXNoIjoiOThrU0FrZUJkOHRRdGFENHFwTEpGczlsRnJvb2hIa1JORlUzcl9fR21LOCJ9LHsicGF0aCI6ImpzL2xhbmd1YWdlL2VzL3NwYW5pc2gtdHJhbnNmb3Jtcy5qcyIsInJvb3RfaGFzaCI6ImNDMHhENXMzY3ZySVVrLWRWazNwa1BIYXpQdDBlQ0xsNkVMVmRXVHFlWlkifSx7InBhdGgiOiJqcy9sYW5ndWFnZS9qYS9qYXBhbmVzZS10ZXh0LXByZXByb2Nlc3NvcnMuanMiLCJyb290X2hhc2giOiIwbjh2WHp4bFhRVzU4S29jejd5aFVTX0k2SFZRS1hXX0M1am1jbGlwRVpVIn0seyJwYXRoIjoianMvbGFuZ3VhZ2UvamEvamFwYW5lc2UtdHJhbnNmb3Jtcy5qcyIsInJvb3RfaGFzaCI6InIzZktvb2hLTG1qck9zV0Rnb0tjSTFGUGZsaHJwdUFLQmVna1Jaei1US2cifSx7InBhdGgiOiJqcy9sYW5ndWFnZS9qYS9qYXBhbmVzZS13YW5ha2FuYS5qcyIsInJvb3RfaGFzaCI6IjloYUx5QkdDWnBnZHdWSDF4OVBUaGZmMzNpTHN0WlRRLW8tLWhwUXJ2UTgifSx7InBhdGgiOiJqcy9sYW5ndWFnZS9qYS9qYXBhbmVzZS5qcyIsInJvb3RfaGFzaCI6InZrd1VCZ2p2bWlVSTJCQUhFc3hFQ0J4eGhpeUlCVEtCX2FmMDFJZjlpRkUifSx7InBhdGgiOiJqcy9sYW5ndWFnZS9rby9rb3JlYW4tdGV4dC1wcm9jZXNzb3JzLmpzIiwicm9vdF9oYXNoIjoiUTlsMjNybzZ0bmE3RFRkRXMxSEttRlNzejc3R0x3S1pTbWNpMFVfOF9YNCJ9LHsicGF0aCI6ImpzL2xhbmd1YWdlL2tvL2tvcmVhbi10cmFuc2Zvcm1zLmpzIiwicm9vdF9oYXNoIjoiM0swSlF1OTBuOWZ5S3c4VTBKSk9EdEtBaVpMeWI0RDNiRkZKT2YxZjhDSSJ9LHsicGF0aCI6ImpzL2xhbmd1YWdlL2xhL2xhdGluLXRyYW5zZm9ybXMuanMiLCJyb290X2hhc2giOiJzX0ZQcFpnZVY0MUh3RGUyOEljdWoxOVVnV0xyaHhCX19JWEk5SUpEXzJnIn0seyJwYXRoIjoianMvbGFuZ3VhZ2UvbGFuZ3VhZ2UtZGVzY3JpcHRvcnMuanMiLCJyb290X2hhc2giOiJITXV6bjFORnYxcDZ1d3dxOWl0RXlzNkFKY3JCdldxYkl2QXJyLWxXVF9NIn0seyJwYXRoIjoianMvbGFuZ3VhZ2UvbGFuZ3VhZ2UtdHJhbnNmb3JtZXIuanMiLCJyb290X2hhc2giOiI1N0xFb0pUWFJESWF3YnJpWXpfMnBzS0hPbDlQdjdWZkpNeElKUUVNX0hFIn0seyJwYXRoIjoianMvbGFuZ3VhZ2UvbGFuZ3VhZ2UtdHJhbnNmb3Jtcy5qcyIsInJvb3RfaGFzaCI6IlFqM21mWlZ6S1ZaRkYwbzdmWE5GUUQwZy1PX2ZRT3JpRGNPalQ0d0ZQVTQifSx7InBhdGgiOiJqcy9sYW5ndWFnZS9sYW5ndWFnZXMuanMiLCJyb290X2hhc2giOiJQRkRyaTZiN3hjSGYtVkNpWDg1QS1STjNxU0xKWDY3cDNjWlhTMzNtQjBFIn0seyJwYXRoIjoianMvbGFuZ3VhZ2UvbXVsdGktbGFuZ3VhZ2UtdHJhbnNmb3JtZXIuanMiLCJyb290X2hhc2giOiJxb01sUndKTlQwdUZYX01nZTc0RW9DOWxwYmw1NjExaUFGdlN6cmdrXzRnIn0seyJwYXRoIjoianMvbGFuZ3VhZ2UvcnUvcnVzc2lhbi10ZXh0LXByZXByb2Nlc3NvcnMuanMiLCJyb290X2hhc2giOiJldG5CYjVDdndOTmRjTDQ5dnpfWUk2SFBMZ3JNUEhsRzN3ZFluZHgzUjlVIn0seyJwYXRoIjoianMvbGFuZ3VhZ2Uvc2dhL29sZC1pcmlzaC10cmFuc2Zvcm1zLmpzIiwicm9vdF9oYXNoIjoiYzhldUhCYm1HVHdXa1RMSEgxZUJfUG9EeFlYRmM4R3AwUXR4SURNanI0YyJ9LHsicGF0aCI6ImpzL2xhbmd1YWdlL3NoL3NlcmJvLWNyb2F0aWFuLXRleHQtcHJlcHJvY2Vzc29ycy5qcyIsInJvb3RfaGFzaCI6IkhzNzh0MzFuZnVubC1EWUd6R3pTZklIQzBENFlHMFFjb1F3RlR5REQ0UzQifSx7InBhdGgiOiJqcy9sYW5ndWFnZS9zcS9hbGJhbmlhbi10cmFuc2Zvcm1zLmpzIiwicm9vdF9oYXNoIjoibE1LNWhrdVp6Q1BuWDh1NTNfWm01RWJrMzlRUEVBS2t2MUx5SlBMT3MwMCJ9LHsicGF0aCI6ImpzL2xhbmd1YWdlL3RleHQtcHJvY2Vzc29ycy5qcyIsInJvb3RfaGFzaCI6InZ3cFlGSHIzMGRpVU54SUJadERLX3ZfeUk0a3lzRjd4YnpvdkRFX0ZjYkEifSx7InBhdGgiOiJqcy9sYW5ndWFnZS90ZXh0LXNjYW5uZXIuanMiLCJyb290X2hhc2giOiJWSlU5QTZZdDViTWhheVJldWZGd1BURlhxZUJxejloWnVKSUJUTTNoSDdvIn0seyJwYXRoIjoianMvbGFuZ3VhZ2UvdGV4dC11dGlsaXRpZXMuanMiLCJyb290X2hhc2giOiJIV1l6SDlJMUR1T01QRjdFMzBzWFcxTUdrZ2RDUU4zMmFRc1JBbEtvNURZIn0seyJwYXRoIjoianMvbGFuZ3VhZ2UvdGwvdGFnYWxvZy10cmFuc2Zvcm1zLmpzIiwicm9vdF9oYXNoIjoiLUUwdDBIbkN2UFBXWUVLbWVrbXRRVThyWEtTZ196aWV2R3ppRzRGUUMyUSJ9LHsicGF0aCI6ImpzL2xhbmd1YWdlL3RyYW5zbGF0b3IuanMiLCJyb290X2hhc2giOiJEM2VBTEYtMVFfRC1YU2x2SDNzS01rZGVGNDRDemtDalhuajRTNllRd2trIn0seyJwYXRoIjoianMvbGFuZ3VhZ2UvdmkvdmlldC10ZXh0LXByZXByb2Nlc3NvcnMuanMiLCJyb290X2hhc2giOiJCUWE0RklyYmJWMDhva2hpLXNHZHJFVWdCMXVqT2pLTGZxMFVQenNGZUF3In0seyJwYXRoIjoianMvbGFuZ3VhZ2UvemgvY2hpbmVzZS5qcyIsInJvb3RfaGFzaCI6IlNVbUtiZ1NOOXg2TlJVVTk0Vy1mWDRtV0ZtOFFpUld6d21RWV9QYUR6TUEifSx7InBhdGgiOiJqcy9tZWRpYS9hdWRpby1kb3dubG9hZGVyLmpzIiwicm9vdF9oYXNoIjoiZV9DRVBHUy1hX3dLM0VtczFjOGc3YXdwRWVGNy0wY2RtSHluS2xwOGFlZyJ9LHsicGF0aCI6ImpzL21lZGlhL2F1ZGlvLXN5c3RlbS5qcyIsInJvb3RfaGFzaCI6Ik9jRjBfN2FpMDRmd1FtVmxXNVk3dXJ1VVhJV2x2b0VEaXo4cmtxMGUyVnMifSx7InBhdGgiOiJqcy9tZWRpYS9tZWRpYS11dGlsLmpzIiwicm9vdF9oYXNoIjoiX2YwdTNZNDA0QWltdEpNa1hCcUQ3eExuVW5hWmNJaThIc0p6SFotY2c1SSJ9LHsicGF0aCI6ImpzL21lZGlhL3RleHQtdG8tc3BlZWNoLWF1ZGlvLmpzIiwicm9vdF9oYXNoIjoiUU5FSk1iRjkybC1QOFVObVRYVzB6U0dLaDZZSUVqOE04YVZRZzlRWk41YyJ9LHsicGF0aCI6ImpzL3BhZ2VzL2FjdGlvbi1wb3B1cC1tYWluLmpzIiwicm9vdF9oYXNoIjoiRkhvYXRxZjhMMEFNLUs0akROVzRrQlQxRS1fYU85OVB4QTI4RWhGUHlJYyJ9LHsicGF0aCI6ImpzL3BhZ2VzL2NvbW1vbi9leHRlbnNpb24tY29udGVudC1jb250cm9sbGVyLmpzIiwicm9vdF9oYXNoIjoib3J0WHpyOElRa0E2aFAyLXlNR3pUYlN6UnFKZ3l3SzNqY0VXbldUUndFUSJ9LHsicGF0aCI6ImpzL3BhZ2VzL2dlbmVyaWMtcGFnZS1tYWluLmpzIiwicm9vdF9oYXNoIjoiODdvQ1pvN2lfbndRMzB0VjJXWXJSeUN4ZTk5ZTZmbjhieVV5Mm9vNS1OWSJ9LHsicGF0aCI6ImpzL3BhZ2VzL2luZm8tbWFpbi5qcyIsInJvb3RfaGFzaCI6ImVJS0piWDJMclZrTHZiSjFubTFHRTdycURKMnBUN3Awa3pxSHpCTXFDXzgifSx7InBhdGgiOiJqcy9wYWdlcy9wZXJtaXNzaW9ucy1tYWluLmpzIiwicm9vdF9oYXNoIjoiYlctRkVTMVMtXzN0OHZyamRkS1dBd2V3WVI1eXcxaFdLdHFoVTJmYldJSSJ9LHsicGF0aCI6ImpzL3BhZ2VzL3NldHRpbmdzL2Fua2ktY29udHJvbGxlci5qcyIsInJvb3RfaGFzaCI6IjdEZzNmSV94YmxLLXBtY2U2X3pRS3B1ZEpuZjA3QUhvbW05TVZBUF9qSUkifSx7InBhdGgiOiJqcy9wYWdlcy9zZXR0aW5ncy9hbmtpLWRlY2stZ2VuZXJhdG9yLWNvbnRyb2xsZXIuanMiLCJyb290X2hhc2giOiJ2RFdvMVZGUnJGcXc3eWI2ZVBNSXVnc0ViTEx1MElELWs4WEVIZDkyV0RZIn0seyJwYXRoIjoianMvcGFnZXMvc2V0dGluZ3MvYW5raS10ZW1wbGF0ZXMtY29udHJvbGxlci5qcyIsInJvb3RfaGFzaCI6ImRPeEUzZlpqelFMV2c1dFpjdUxlclpENXdWeng2WG9na3lCQjBPWDVvaEUifSx7InBhdGgiOiJqcy9wYWdlcy9zZXR0aW5ncy9hdWRpby1jb250cm9sbGVyLmpzIiwicm9vdF9oYXNoIjoiN3dQZUF5eHRoRW1kZjF2Nmx0a21ZY3hURTdUTldxUEprZmw4TlhDTVVSWSJ9LHsicGF0aCI6ImpzL3BhZ2VzL3NldHRpbmdzL2JhY2t1cC1jb250cm9sbGVyLmpzIiwicm9vdF9oYXNoIjoiRWFjLVFqblNzTWNnLV9WZ0JjMU40dlpRNlJ6dkNJY3lpYVVqWDAzQXlQMCJ9LHsicGF0aCI6ImpzL3BhZ2VzL3NldHRpbmdzL2NvbGxhcHNpYmxlLWRpY3Rpb25hcnktY29udHJvbGxlci5qcyIsInJvb3RfaGFzaCI6IkdHRHZYOG90bHZUdmFOX0JtNHZwdFdsOTRyVVBrZ3FJTWJGQTh4eFFDcVkifSx7InBhdGgiOiJqcy9wYWdlcy9zZXR0aW5ncy9kaWN0aW9uYXJ5LWNvbnRyb2xsZXIuanMiLCJyb290X2hhc2giOiJnMUlIakZ6anZsbHJiWEt4ZEdnNTJkYkxELXdFQklncXZtUVE4cjd6dHZRIn0seyJwYXRoIjoianMvcGFnZXMvc2V0dGluZ3MvZGljdGlvbmFyeS1pbXBvcnQtY29udHJvbGxlci5qcyIsInJvb3RfaGFzaCI6IjhNN2YtbHZaTU1HVWJCaW5iTWRkTXJlQzlTMTk4clBILW9Wanh0bmZWNWcifSx7InBhdGgiOiJqcy9wYWdlcy9zZXR0aW5ncy9leHRlbnNpb24ta2V5Ym9hcmQtc2hvcnRjdXRzLWNvbnRyb2xsZXIuanMiLCJyb290X2hhc2giOiJxeWUyYWlKMFBBYmMybFVXT01sd2Jiajc4eGE5U1F3Tk8tOENoNTlrMklNIn0seyJwYXRoIjoianMvcGFnZXMvc2V0dGluZ3MvZ2VuZXJpYy1zZXR0aW5nLWNvbnRyb2xsZXIuanMiLCJyb290X2hhc2giOiJsT0s5OWI5aGhKbUhmQkZtMzlpM2VsM3FvRjFQVjdBVERxcWtQYnIzZ0k0In0seyJwYXRoIjoianMvcGFnZXMvc2V0dGluZ3Mva2V5Ym9hcmQtbW91c2UtaW5wdXQtZmllbGQuanMiLCJyb290X2hhc2giOiJITThxbGtXT2s4OXNtX2d5Ym9LakhXLUZURjFMR1dCdVgxTFVrZzN4RWNzIn0seyJwYXRoIjoianMvcGFnZXMvc2V0dGluZ3Mva2V5Ym9hcmQtc2hvcnRjdXRzLWNvbnRyb2xsZXIuanMiLCJyb290X2hhc2giOiIxX1NoSkdES2tkbnQzNnBGcXlrbVVjTEdVbkg5Q3JWaEY4eG04MWJ2REkwIn0seyJwYXRoIjoianMvcGFnZXMvc2V0dGluZ3MvbGFuZ3VhZ2VzLWNvbnRyb2xsZXIuanMiLCJyb290X2hhc2giOiJsT0xVOEpJTWpvNWRheW9pUFphTjBiQy1yOThQVGR6UlRpTTctbnFxQkJRIn0seyJwYXRoIjoianMvcGFnZXMvc2V0dGluZ3MvbWVjYWItY29udHJvbGxlci5qcyIsInJvb3RfaGFzaCI6ImYwR3J6QURpUGlPTGlETmd0azlFT2N5QWxGMEhDYlRiVlM0NWo5MjNBUlUifSx7InBhdGgiOiJqcy9wYWdlcy9zZXR0aW5ncy9tb2RhbC1jb250cm9sbGVyLmpzIiwicm9vdF9oYXNoIjoiNURmOUI0YjQ5d1N4aUdFdFNjNjdqbUtscUxvcVVPYzJfekRMVTlrd09xYyJ9LHsicGF0aCI6ImpzL3BhZ2VzL3NldHRpbmdzL21vZGFsLmpzIiwicm9vdF9oYXNoIjoicmpydFdqaVVFY2JjcTdmU2VEV2pHbkU2dkxfV0RhdmVIQVE1eTZLR3RIOCJ9LHsicGF0aCI6ImpzL3BhZ2VzL3NldHRpbmdzL25lc3RlZC1wb3B1cHMtY29udHJvbGxlci5qcyIsInJvb3RfaGFzaCI6IjhOVVdEdlR0a1hHLXdRQ2J0LVNiYzdtcDk2TWdhTGU5bnBzTTNyMG93bkkifSx7InBhdGgiOiJqcy9wYWdlcy9zZXR0aW5ncy9wZXJtaXNzaW9ucy1vcmlnaW4tY29udHJvbGxlci5qcyIsInJvb3RfaGFzaCI6IjJlY0xSdWo2amhSRUN3NmhnbGRJQXZFVEpBakk5d21nMGNaWE93QjlGRU0ifSx7InBhdGgiOiJqcy9wYWdlcy9zZXR0aW5ncy9wZXJtaXNzaW9ucy10b2dnbGUtY29udHJvbGxlci5qcyIsInJvb3RfaGFzaCI6IkpmMl9KVjdkcG5GV3gzLUdoLWpMaWZVNkNLbmNsSk5WNWZvRC1VMmdVMGcifSx7InBhdGgiOiJqcy9wYWdlcy9zZXR0aW5ncy9wZXJzaXN0ZW50LXN0b3JhZ2UtY29udHJvbGxlci5qcyIsInJvb3RfaGFzaCI6ImpVQWdfR1lubWtJdVdOQ2J3a1o3X1RYLURTbmRPeGFUSHg4Ny1xT2RuT1EifSx7InBhdGgiOiJqcy9wYWdlcy9zZXR0aW5ncy9wb3B1cC1wcmV2aWV3LWNvbnRyb2xsZXIuanMiLCJyb290X2hhc2giOiJWQXg3dDRtNTNBSXZ0WlNBR3FEVXZydWRWLW1iVFQzMFcwNHZWT05weERnIn0seyJwYXRoIjoianMvcGFnZXMvc2V0dGluZ3MvcG9wdXAtcHJldmlldy1mcmFtZS1tYWluLmpzIiwicm9vdF9oYXNoIjoiS0JONmdtbjJFend0VFZBc09KUjRCbDJzSFAyc0UteTA5TE1wLURiSUVRTSJ9LHsicGF0aCI6ImpzL3BhZ2VzL3NldHRpbmdzL3BvcHVwLXByZXZpZXctZnJhbWUuanMiLCJyb290X2hhc2giOiJXVUdLRUdNLTNud1d2OTJkNFZtSTlSZUNlclh1eEhHTF9laWMydnkwZ0FJIn0seyJwYXRoIjoianMvcGFnZXMvc2V0dGluZ3MvcG9wdXAtd2luZG93LWNvbnRyb2xsZXIuanMiLCJyb290X2hhc2giOiJuRTVmVE9zdFFxREYtUlFranh1blY3cE1sd05ZZENwT3h2WDM3VlJMcHRnIn0seyJwYXRoIjoianMvcGFnZXMvc2V0dGluZ3MvcHJvZmlsZS1jb25kaXRpb25zLXVpLmpzIiwicm9vdF9oYXNoIjoiUDBlSktSLVFsMjhWdjRsdWlWb19qOUxXOWlzMXRWRV9jdU9LcEJiQzdzRSJ9LHsicGF0aCI6ImpzL3BhZ2VzL3NldHRpbmdzL3Byb2ZpbGUtY29udHJvbGxlci5qcyIsInJvb3RfaGFzaCI6ImlDbEFKNXZkNEFoVVJjNmFCS19KTmxXTlVKTl9HNy04MDM0YVB4QTFYdzAifSx7InBhdGgiOiJqcy9wYWdlcy9zZXR0aW5ncy9yZWNvbW1lbmRlZC1wZXJtaXNzaW9ucy1jb250cm9sbGVyLmpzIiwicm9vdF9oYXNoIjoiZHh0Tm81ai1OZW1hNktFb191Nm5zYlRaU2JYQ1hTQkpMNVQzeFV1OWVKNCJ9LHsicGF0aCI6ImpzL3BhZ2VzL3NldHRpbmdzL3NjYW4taW5wdXRzLWNvbnRyb2xsZXIuanMiLCJyb290X2hhc2giOiI0bFMwVTN6NmtIcFNRSjJzLXFiSnY1QkhrTFJnc3JKdHhURDI1RVZjbXVjIn0seyJwYXRoIjoianMvcGFnZXMvc2V0dGluZ3Mvc2Nhbi1pbnB1dHMtc2ltcGxlLWNvbnRyb2xsZXIuanMiLCJyb290X2hhc2giOiJLcHpyekRQcWVhTW43S3ZvRW0tZXZMQkZBTzRYbVlKTk5LVjV6V285QnVBIn0seyJwYXRoIjoianMvcGFnZXMvc2V0dGluZ3Mvc2Vjb25kYXJ5LXNlYXJjaC1kaWN0aW9uYXJ5LWNvbnRyb2xsZXIuanMiLCJyb290X2hhc2giOiJoS19HYmR5bm5fR0ozR3NmdGthSTlINjUtYkM2cWNwNEtjQkhFbTIxZ3ZvIn0seyJwYXRoIjoianMvcGFnZXMvc2V0dGluZ3Mvc2VudGVuY2UtdGVybWluYXRpb24tY2hhcmFjdGVycy1jb250cm9sbGVyLmpzIiwicm9vdF9oYXNoIjoiZ0hWZWlKeXVvMkZVSE5PbzJhLUtReUQtaWRHU0FQdVZRbVoxN3h5M1NvNCJ9LHsicGF0aCI6ImpzL3BhZ2VzL3NldHRpbmdzL3NldHRpbmdzLWNvbnRyb2xsZXIuanMiLCJyb290X2hhc2giOiJsYy1hc0JrYS04U3dSNFZXY09SdzZkazkxZ18xM24yUWRvODFibG9yNjZFIn0seyJwYXRoIjoianMvcGFnZXMvc2V0dGluZ3Mvc2V0dGluZ3MtZGlzcGxheS1jb250cm9sbGVyLmpzIiwicm9vdF9oYXNoIjoiQUdIYmFyUHB0cVZzQ3F6bWo0dXNVV0FValdDWGR2UFVoOTdNM1F1QnlXUSJ9LHsicGF0aCI6ImpzL3BhZ2VzL3NldHRpbmdzL3NldHRpbmdzLW1haW4uanMiLCJyb290X2hhc2giOiJ6OHV3WV90TlQ0bDJKSDBQbUM4c0pUczVILV9mY2NIOGtoeURfdFA4UVBnIn0seyJwYXRoIjoianMvcGFnZXMvc2V0dGluZ3Mvc29ydC1mcmVxdWVuY3ktZGljdGlvbmFyeS1jb250cm9sbGVyLmpzIiwicm9vdF9oYXNoIjoiMEtpdXZMNXV0bXZLdVdUQ0NLV0JBVTlOemoyQU9yMTBhdGg4NEpXM2xVMCJ9LHsicGF0aCI6ImpzL3BhZ2VzL3NldHRpbmdzL3N0YXR1cy1mb290ZXIuanMiLCJyb290X2hhc2giOiItVlozcGZyZUtHM01oQVJLa3VORG5tcXMyZXhpcks0a0FzNzk0RC0yc0drIn0seyJwYXRoIjoianMvcGFnZXMvc2V0dGluZ3Mvc3RvcmFnZS1jb250cm9sbGVyLmpzIiwicm9vdF9oYXNoIjoiMHlIUWw2WGdZbDFOVWpGekxIbWVEZzJlMTN0ZWhhLXItYUJ1LUZRSGxFYyJ9LHsicGF0aCI6ImpzL3BhZ2VzL3NldHRpbmdzL3RyYW5zbGF0aW9uLXRleHQtcmVwbGFjZW1lbnRzLWNvbnRyb2xsZXIuanMiLCJyb290X2hhc2giOiJHRlcwN2FfZmpQMEEtZ1lfa0RlSnk4dHN4a1VRRXpLQnB6RmRIbXFTbFhjIn0seyJwYXRoIjoianMvcGFnZXMvd2VsY29tZS1tYWluLmpzIiwicm9vdF9oYXNoIjoiaElRTElDQTZ4NGN2Mi1Samd3MWNHWmN3TjhTUTd2SDVLNC1ObHBqRUd0QSJ9LHsicGF0aCI6ImpzL3RlbXBsYXRlcy9hbmtpLXRlbXBsYXRlLXJlbmRlcmVyLWNvbnRlbnQtbWFuYWdlci5qcyIsInJvb3RfaGFzaCI6ImIzQXZvX1pvVTlFcXk0b1ktX3I0MGVJLXZzVTc0TER0T2JqWjlzal8yYTgifSx7InBhdGgiOiJqcy90ZW1wbGF0ZXMvYW5raS10ZW1wbGF0ZS1yZW5kZXJlci5qcyIsInJvb3RfaGFzaCI6Imxra3NnM08wSWI4aUdpNWVmS3k2Z3JvSmJoV2VkWFktb3E0MUIzbkRabXMifSx7InBhdGgiOiJqcy90ZW1wbGF0ZXMvdGVtcGxhdGUtcGF0Y2hlci5qcyIsInJvb3RfaGFzaCI6Ilp2M3ZtTzJBbnZKd1FRRVhWOEJXSi14YXF3TVl6Zy13VVNaYUYyMnIwd0UifSx7InBhdGgiOiJqcy90ZW1wbGF0ZXMvdGVtcGxhdGUtcmVuZGVyZXItZnJhbWUtYXBpLmpzIiwicm9vdF9oYXNoIjoidV9lMVdqU1dXdWwxanUwTUZxWXdDaGRmVk9UYTJWN2hPTmg1Wld5Zi1kbyJ9LHsicGF0aCI6ImpzL3RlbXBsYXRlcy90ZW1wbGF0ZS1yZW5kZXJlci1mcmFtZS1tYWluLmpzIiwicm9vdF9oYXNoIjoiV05mV1VCUmZxZjZrSXFma2tPaTNrelRMNTFMczFxallWRUFiRFBNcHNaTSJ9LHsicGF0aCI6ImpzL3RlbXBsYXRlcy90ZW1wbGF0ZS1yZW5kZXJlci1tZWRpYS1wcm92aWRlci5qcyIsInJvb3RfaGFzaCI6IjQ5a25ocGlfekFSZlozSTlOenlJUEozRjJOcklVa004al9JTXpwWXRpdjgifSx7InBhdGgiOiJqcy90ZW1wbGF0ZXMvdGVtcGxhdGUtcmVuZGVyZXItcHJveHkuanMiLCJyb290X2hhc2giOiJwd2w0aEJIOWJoQ0FyemEySkNnU3NPOHBPQXk1WVd0SXE3X28zZk5FV0hnIn0seyJwYXRoIjoianMvdGVtcGxhdGVzL3RlbXBsYXRlLXJlbmRlcmVyLmpzIiwicm9vdF9oYXNoIjoiTERMMGFtUUFKa0tFSzk4MWdCRjRKWFdJV25hSFlIYW5PV0NWWmFaUks1RSJ9LHsicGF0aCI6ImxlZ2FsLW5wbS5odG1sIiwicm9vdF9oYXNoIjoiTXNWMWF5czYyZDR6UFZSLU5pRm9GT1U4c1VoSWZERWdHMWNINE5KVDhrNCJ9LHsicGF0aCI6ImxlZ2FsLmh0bWwiLCJyb290X2hhc2giOiJJaFpycldJSlIyNm1fUlBtLTBmWUlwMElTaEdsRzlUT3lQM0RIMUpFSlVZIn0seyJwYXRoIjoibGliL2RleGllLmpzIiwicm9vdF9oYXNoIjoibkNYbUdmU2RYMVJvMUJVZEVmMXQybGtDc3JubFk0MFc0M2dsVi1pbXRVYyJ9LHsicGF0aCI6ImxpYi9kZXhpZS5qcy5tYXAiLCJyb290X2hhc2giOiJoWXAzX19lRGl6M3diU0FJcnA4YVpkTTF5c0ZfUlNwWFV6R0swMUFBd1lZIn0seyJwYXRoIjoibGliL2hhbmRsZWJhcnMuanMiLCJyb290X2hhc2giOiJ6Q0tsWHc0M2UyZlIzR00tODFaQWhSbHlfSEliVlRFUjRfSjl0LVktR0JrIn0seyJwYXRoIjoibGliL2hhbmRsZWJhcnMuanMubWFwIiwicm9vdF9oYXNoIjoiRXVWYnhwb2RxVkR3NUJDOFVab2wzSkc4VFRLcXJRelczSHlDQWwwMktMdyJ9LHsicGF0aCI6ImxpYi9oYW5ndWwtanMuanMiLCJyb290X2hhc2giOiJWdkRFQnBkal9zSGhhbVdGMGhfYktYZFNYV0VsZnU0Uzd5X1hDbER1bWowIn0seyJwYXRoIjoibGliL2hhbmd1bC1qcy5qcy5tYXAiLCJyb290X2hhc2giOiJPTTJyQ3hmQWR2RkVBMFlFZVhJNVlSd3l2TnJva0hFZ2ZvQTJKSTF3eHlnIn0seyJwYXRoIjoibGliL3BhcnNlNS5qcyIsInJvb3RfaGFzaCI6InNUOHFNR3NpY2FKYnA2b2tKVUtBRFBieVpVQTNLaFg0T0lqc0tQNUZieDQifSx7InBhdGgiOiJsaWIvcGFyc2U1LmpzLm1hcCIsInJvb3RfaGFzaCI6ImhzV0FRVkU2VGlvdk9CemJwMFloaWJiZEh1REtWMmlqVVJxV1pCZHRjV2MifSx7InBhdGgiOiJsaWIvdWNzMmxlbmd0aC5qcyIsInJvb3RfaGFzaCI6Ik5NdWVUbHVqcEZnMUUzdEtIX1MxMjlYM0Nrd1BtX21FWlVXZlNvb2hSUk0ifSx7InBhdGgiOiJsaWIvdWNzMmxlbmd0aC5qcy5tYXAiLCJyb290X2hhc2giOiJBOG5SVkZ3dkE0NXpsRUtVeENnUUZLZklDb2k3SXdFd2F2TVRuTU1aQjNVIn0seyJwYXRoIjoibGliL3ZhbGlkYXRlLXNjaGVtYXMuanMiLCJyb290X2hhc2giOiJ4dk5paWFLOTJmbEhRMG1yUXRDc3pOQWZoQWtzUjFDWDlTV2RDTFZrSmpBIn0seyJwYXRoIjoibGliL3dhbmFrYW5hLmpzIiwicm9vdF9oYXNoIjoiRDBhQnh6am5tTVJQSFBUYU5lTkhWQldxdWZPYVQwNDN0VmNDaWdfaFdXdyJ9LHsicGF0aCI6ImxpYi93YW5ha2FuYS5qcy5tYXAiLCJyb290X2hhc2giOiJfTDA5ZEtoakpvUTZzWUZvUXhyRmR2U3FSR3JwRlVROVhTdDA4Z3RJa1prIn0seyJwYXRoIjoibGliL3otd29ya2VyLmpzIiwicm9vdF9oYXNoIjoidURCTjRFbW56UWczYVNRbWhOWE0xYUVYbUNyX3NHcll0LWxpWVBKR2JzcyJ9LHsicGF0aCI6ImxpYi96LXdvcmtlci5qcy5tYXAiLCJyb290X2hhc2giOiJGREpwUXBvTVlFbjN0U2IyV1U3VXNaZHUybmVvdkdsZ2F0b1lrS0pGM2cwIn0seyJwYXRoIjoibGliL3ppcC5qcyIsInJvb3RfaGFzaCI6IjVRWlZfbHJhVjhWc1BJazVzMVJhdE13YnRMNGxMdTZjTTZyZ1ZNSkw3X2MifSx7InBhdGgiOiJsaWIvemlwLmpzLm1hcCIsInJvb3RfaGFzaCI6IkhpblBkLUIxaDl5ZjZYRnMtWmpUWDcySEtDbV9OUmd0ZDZQR2tWZl9OVW8ifSx7InBhdGgiOiJtYW5pZmVzdC5qc29uIiwicm9vdF9oYXNoIjoiUDA3Y1lJdU1RWXVKMk5fSHJtbkszVC1fRUtyRnZYSmFraUJvVG1ibEluWSJ9LHsicGF0aCI6Im9mZnNjcmVlbi5odG1sIiwicm9vdF9oYXNoIjoidm5kcURsMmpKak1pVU9PenRZeDlQd3dQZXRtWEw5bWYyc2NhZTAyai1ObyJ9LHsicGF0aCI6InBlcm1pc3Npb25zLmh0bWwiLCJyb290X2hhc2giOiJiUzkxc18yRkZRNXppNFBjRXQ1c1pycmhQMF9VVzcyLXNDQ3JMcThEVUNNIn0seyJwYXRoIjoicG9wdXAtcHJldmlldy5odG1sIiwicm9vdF9oYXNoIjoiV3FQMHhLYy1hdHBha2s0bzNWeHkwWUJlbGIzdVZIWWUxbkM0NUhpUTBwcyJ9LHsicGF0aCI6InBvcHVwLmh0bWwiLCJyb290X2hhc2giOiJDSHF1T2RHZUlRSE1fUGdfeU5WNXlaLS1PRFcxNm42WE5wWEJfTGFLNTFnIn0seyJwYXRoIjoicXVpY2stc3RhcnQtZ3VpZGUuaHRtbCIsInJvb3RfaGFzaCI6IkZqdmg0VFpzU1lacmthTTNZel9fUWVjbEVhX0RkX1l6ajNBbUlNSFl2M0kifSx7InBhdGgiOiJzZWFyY2guaHRtbCIsInJvb3RfaGFzaCI6ImdVN2l2QmdvalFQNHhNcHJRd24xZFYzak5yeXhScWNsVHlxQ2lRWGV3NEkifSx7InBhdGgiOiJzZXR0aW5ncy5odG1sIiwicm9vdF9oYXNoIjoiQThPTU14RHcwQVhnLTVCUjR3d21JbDQyaVpiS1FUV1BPWGxEdVlxU3JkcyJ9LHsicGF0aCI6InN3LmpzIiwicm9vdF9oYXNoIjoibmF0dF9KekhCd2hISjBpN19BSVotd3RHUUMtUU0wdHZ6eUJHMU9GMzFRQSJ9LHsicGF0aCI6InRlbXBsYXRlLXJlbmRlcmVyLmh0bWwiLCJyb290X2hhc2giOiJ0VEh5ajdYYWxzeFp0QlV1WU5oYjhzdjZPTGg0ODJyMmU4bnR4cnl5aW1BIn0seyJwYXRoIjoidGVtcGxhdGVzLWRpc3BsYXkuaHRtbCIsInJvb3RfaGFzaCI6Im5PeVBJWE5TZzNYbzVHTDdrZFpXS1NBNkFhcDYxT1dKX0J2dGI0ZE1jUW8ifSx7InBhdGgiOiJ0ZW1wbGF0ZXMtc2V0dGluZ3MuaHRtbCIsInJvb3RfaGFzaCI6Iml1S1lwVTBaejFPcGNDSmtYSzhScjM1M0FpMXVQN0E0aFVlRUs5bEh5ZE0ifSx7InBhdGgiOiJ3ZWxjb21lLmh0bWwiLCJyb290X2hhc2giOiJuQ0hpZ214UGdBVFdiQUloM3FzUmNyekYwZUk2bXR0NGE3aUtZTzZ5T3djIn1dLCJmb3JtYXQiOiJ0cmVlaGFzaCIsImhhc2hfYmxvY2tfc2l6ZSI6NDA5Nn1dLCJpdGVtX2lkIjoibGlrZ2NjbWJpbWhqYmdramFtYmNsZmtobGRubGhibm4iLCJpdGVtX3ZlcnNpb24iOiIyNC45LjkuMCIsInByb3RvY29sX3ZlcnNpb24iOjF9","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"FRSgWqhgAq6edprRSDPuQ2fpcuKumvVIfkhXKiVRIRAANX7BqlxZIG2K4yjY7JTAaC6AE4jsXeYupaWeSxN4A7J1cJV1moKe9IQSDU5Vfdf7AooO0zH4CZxXcoWTZbAfaWVWt6O22GGpe96oB4i8r1ZlpaBM5O5aL3OEjuq8T0aOyECBsOtHHG-1GnhtiO7gN7BQkhFZ7nykYhot81XVyshbUeaxcgZmWyrNatrFelRCR15Ft6uo3Mcr1OpPF-9zT8OKiX2w4GYp8ym8f7JxBZL1GlDW0vkLQJVUFRvaJQfi34CVh6TZINRyYaUqKYOcGRSy_32I6xIlVcw33sH1CQ"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"YGKA3tHZGWYI05wCwhGLP7Pvy9aT_ia52CqD_r6LSCn1YTOIX3_G3AxiZYA8VDPW0hNfg17R5ZYjOrJS1xSmaU6jINfcujMaVnh7EaLLemLcVCuvbN1bk3svlTQZX6sFNrra7ZjE0YZuvgGXGaBKzT-DBNteH6E6hNtip5xLFRkily8nM5nSmTNk9S-unDxFRIwbdBzs_KKg0t8WmiIh_tzat7zXw-Zvu7I2yvxQnBXaPOzVyInTUb-eTzUJGVBVeJ4AMxmASYZuAhCRZK0KUodlfMnJSnVsZYRImeI7vE3g22tYrxXAbEZKTSBF0jxLn_tZeaTrHPNJBOcCPt0z_A"}]}}] \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/action-popup.html b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/action-popup.html deleted file mode 100644 index ddaec23..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/action-popup.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - Yomitan Action Popup - - - - - - - - - - - - -
    - Loading... -
    - -
    -
    - - -
    - - -
    - - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/action-popup.css b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/action-popup.css deleted file mode 100644 index 7723800..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/action-popup.css +++ /dev/null @@ -1,544 +0,0 @@ -/* - * Copyright (C) 2023-2024 Yomitan Authors - * Copyright (C) 2020-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 this program. If not, see . - */ - -:root { - --font-size-no-units: 14; - --font-size: calc(1px * var(--font-size-no-units)); - - --line-height-no-units: 20; - --line-height: calc(var(--line-height-no-units) / var(--font-size-no-units)); - - --badge-size: 16px; - - --warning-color: #96751c; - --warning-color-light: #edc75e; - - --nav-button-background-image: linear-gradient(#f8f8f8, #e0e0e0); - --nav-button-border-color: #cccccc; - --nav-button-background-image-focus: linear-gradient(#e8e8e8, #d0d0d0); - --nav-button-border-color-focus: #aaaaaa; - --nav-button-background-image-active-focus: linear-gradient(#c8c8c8, #e0e0e0); - --nav-button-border-color-active-focus: #808080; - --nav-button-icon-bg: #333333; - --background-color: #f8f9fa; - --text-color: #333333; - --svg-filter: 0; -} - -:root[data-theme=dark] { - --nav-button-background-image: linear-gradient(#464646, #444444); - --nav-button-border-color: #333333; - --nav-button-background-image-focus: linear-gradient(#171717, #2f2f2f); - --nav-button-border-color-focus: #555555; - --nav-button-background-image-active-focus: linear-gradient(#373737, #1f1f1f); - --nav-button-border-color-active-focus: #7f7f7f; - --nav-button-icon-bg: #fbfbfb; - --background-color: #1e1e1e; - --text-color: #cccccc; - --svg-filter: invert(100%); -} - -body { - padding: 10px; - margin: 0; - font-family: 'Segoe UI', Tahoma, sans-serif; - font-size: var(--font-size); - width: max-content; - height: max-content; - background-color: var(--background-color); -} - -h3 { - margin: 10px 0; - font-family: inherit; - font-weight: 500; - line-height: 1.1; - font-size: 24px; - color: var(--text-color); -} -label { - font-weight: normal; -} - -#mini { - display: flex; - flex-flow: column nowrap; - align-items: center; -} -#full { - display: none; -} -:root[data-mode=full] #mini { - display: none; -} -:root[data-mode=full] #full { - display: initial; -} - - -/* Icons */ -.icon { - --icon-image: none; - --icon-size: contain; - - -webkit-mask-repeat: no-repeat; - -webkit-mask-position: center center; - -webkit-mask-mode: alpha; - -webkit-mask-size: var(--icon-size); - -webkit-mask-image: var(--icon-image); - mask-repeat: no-repeat; - mask-position: center center; - mask-mode: alpha; - mask-size: var(--icon-size); - mask-image: var(--icon-image); -} -.icon[data-icon=profile] { --icon-image: url(/images/profile.svg); } -.icon[data-icon=cog] { --icon-image: url(/images/cog.svg); } -.icon[data-icon=key] { --icon-image: url(/images/key.svg); } -.icon[data-icon=magnifying-glass] { --icon-image: url(/images/magnifying-glass.svg); } -.icon[data-icon=exclamation-point-short] { --icon-image: url(/images/exclamation-point-short.svg); } -.icon[data-icon=question-mark-circle] { --icon-image: url(/images/question-mark-circle.svg); } - - -/* Page-specific styles */ -.link-group { - flex-flow: row nowrap; - align-items: center; - line-height: 1.5em; - margin: 0 -10px; - padding: 0.5em 10px; - cursor: pointer; - color: var(--text-color); - text-decoration: none; - background-color: transparent; - transition: background-color 0.125s linear 0s; - max-width: none; -} -.link-group:not([hidden]) { - display: flex; -} -.link-group:hover, -.link-group:active { - color: var(--text-color); - text-decoration: none; -} -.link-group:hover>.link-group-label, -.link-group:active>.link-group-label { - text-decoration: underline; -} -.link-group:hover { - background-color: rgba(0, 0, 0, 0.05); -} -.link-group:active { - background-color: rgba(0, 0, 0, 0.1); -} -.link-group-icon { - width: 26px; - height: 26px; - text-align: center; - vertical-align: middle; - display: inline-block; - margin-right: 0.25em; - background-repeat: no-repeat; - background-size: contain; -} -.link-group-icon>input { - margin: 0; - padding: 0; -} -.link-group-icon[data-icon=chevron] { background-image: url(/images/right-chevron.svg); filter: var(--svg-filter); } -.link-group-icon[data-icon=cog] { background-image: url(/images/cog.svg); filter: var(--svg-filter); } -.link-group-icon[data-icon=key] { background-image: url(/images/key.svg); filter: var(--svg-filter); } -.link-group-icon[data-icon=magnifying-glass] { background-image: url(/images/magnifying-glass.svg); filter: var(--svg-filter); } -.link-group-icon[data-icon=question-mark-circle] { background-image: url(/images/question-mark-circle.svg); filter: var(--svg-filter); } -.link-group-icon[data-icon=profile] { background-image: url(/images/profile.svg); filter: var(--svg-filter); } - -.link-group-label { - vertical-align: middle; -} -.link-group-badge { - margin-left: 0.5em; -} - -/* Toggle */ -.toggle>input[type=checkbox] { - width: 0; - height: 0; - opacity: 0; - display: block; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} -.toggle>input[type=checkbox]:not(:checked)~.toggle-group { - transform: translateX(-50%); -} -.toggle { - box-sizing: border-box; - width: 60px; - height: 34px; - position: relative; - overflow: hidden; - border: 1px solid #245580; - border-radius: 4px; - display: inline-block; -} -.toggle-group { - position: absolute; - width: 200%; - left: 0; - top: 0; - bottom: 0; - user-select: none; -} -body[data-loaded=true] .toggle-group { - transition: transform 0.35s; -} -body[data-loaded=true] #loading { - display: none; -} -body:not([data-loaded=true]) #action-popups { - display: none; -} - -.toggle-on, -.toggle-off, -.toggle-handle { - display: flex; - justify-content: center; - align-items: center; - padding: 6px 12px; - font-size: var(--font-size); - font-weight: normal; - line-height: var(--line-height); - text-align: center; - white-space: nowrap; - cursor: pointer; -} -.toggle-on, -.toggle-off { - position: absolute; - top: 0; - bottom: 0; - margin: 0; - border: 0; -} - -.toggle-on { - padding-right: 24px; - left: 0; - right: 50%; - color: #ffffff; - background-color: #337ab7; - border-color: #2e6da4; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), inset 0 3px 5px rgba(0, 0, 0, 0); - background-image: linear-gradient(#337ab7, #265a88); - background-repeat: repeat-x; -} -input[type=checkbox]:focus~.toggle-group>.toggle-on, -input[type=checkbox]~.toggle-group>.toggle-on:hover { - background-color: #265a88; - background-image: linear-gradient(#2d65a0, #265a88 50%); -} -input[type=checkbox]:focus:not(:focus-visible)~.toggle-group>.toggle-on:not(:hover) { - background-color: #337ab7; - background-image: linear-gradient(#337ab7, #265a88); -} -input[type=checkbox]:focus-visible~.toggle-group>.toggle-on { - background-color: #265a88; - background-image: linear-gradient(#2d65a0, #265a88 50%); -} -input[type=checkbox]~.toggle-group>.toggle-on:active, -input[type=checkbox]~.toggle-group>.toggle-on:active:focus { - background-color: #204d74; - background-image: none; - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} - -.toggle-off { - padding-left: 24px; - left: 50%; - right: 0; -} - -.toggle-handle { - position: relative; - margin: 0 auto; - padding-top: 0; - padding-bottom: 0; - height: 100%; - width: 0; - border-style: solid; - border-width: 0 1px; - border-radius: 4px; - border-color: #cccccc; -} - -.toggle-off, -.toggle-handle { - color: #333333; - text-shadow: 0 1px 0 #ffffff; - background-color: #ffffff; - background-image: linear-gradient(#ffffff, #e0e0e0); - background-repeat: repeat-x; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); -} -input[type=checkbox]:focus~.toggle-group>.toggle-off, -input[type=checkbox]~.toggle-group>.toggle-off:hover, -input[type=checkbox]~.toggle-group>.toggle-handle:hover { - background-color: #e6e6e6; - background-image: linear-gradient(#e0e0e0, #e6e6e6 50%); - border-color: #adadad; -} -input[type=checkbox]:focus:not(:focus-visible)~.toggle-group>.toggle-off:not(:hover) { - background-color: #ffffff; - background-image: linear-gradient(#ffffff, #e0e0e0); - border-color: #cccccc; -} -input[type=checkbox]:focus-visible~.toggle-group>.toggle-off, -input[type=checkbox]~.toggle-group>.toggle-off:hover { - background-color: #e6e6e6; - background-image: linear-gradient(#e0e0e0, #e6e6e6 50%); - border-color: #adadad; -} -input[type=checkbox]~.toggle-group>.toggle-off:active, -input[type=checkbox]~.toggle-group>.toggle-handle:active, -input[type=checkbox]~.toggle-group>.toggle-off:active:focus, -input[type=checkbox]~.toggle-group>.toggle-handle:active:focus { - background-color: #d4d4d4; - background-image: none; - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - border-color: #8c8c8c; -} - - -/* Navigation buttons and icons */ -.nav-button-container { - display: flex; - justify-content: center; - margin-top: 10px; - white-space: nowrap; -} -.nav-button { - background-image: var(--nav-button-background-image); - border: 1px solid var(--nav-button-border-color); - margin: 0; - padding: 2px 3px; - cursor: pointer; - position: relative; -} -.nav-button+.nav-button { - margin-left: -1px; -} -.nav-button:hover, -.nav-button:focus { - z-index: 1; - border-color: var(--nav-button-border-color-focus); - background-image: var(--nav-button-background-image-focus); - box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15); - outline: none; -} -.nav-button:focus:not(:focus-visible) { - background-image: var(--nav-button-background-image); - border-color: var(--nav-button-border-color); - box-shadow: none; -} -.nav-button:focus-visible { - z-index: 1; - border-color: var(--nav-button-border-color-focus); - background-image: var(--nav-button-background-image-focus); - box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15); -} -.nav-button:active, -.nav-button:active:focus { - z-index: 1; - border-color: var(--nav-button-border-color-active-focus); - background-image: var(--nav-button-background-image-active-focus); - box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15); -} -.nav-button>.icon { - --icon-size: 16px 16px; - display: block; - width: 16px; - height: 16px; - box-sizing: content-box; - background-color: var(--nav-button-icon-bg); -} -.nav-button:first-child, -.nav-button:first-child[hidden]+.nav-button { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; -} -.nav-button:last-child { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} - -.action-select-profile { - position: relative; -} -.profile-select-container { - position: absolute; - left: -1px; - top: -1px; - right: -1px; - bottom: -1px; -} -select.profile-select { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - box-sizing: border-box; - border: 0; - margin: 0; - padding: 0.375em; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; - opacity: 0; - outline: none; - cursor: pointer; - font-size: var(--font-size); -} -.profile-select optgroup { - color: #666666; - font-weight: normal; - font-style: normal; - background-color: #f2f2f2; -} -.profile-select option { - color: #333333; - font-weight: normal; - font-style: normal; - background-color: initial; -} - -.nav-button-warning-badge { - pointer-events: none; - width: 12px; - height: 6px; - position: absolute; - right: calc(50% - 6px); - top: -8px; - z-index: 1; -} -.nav-button-warning-badge-inner, -.nav-button-warning-badge-outer { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - background-color: #edc75e; - - --icon-image: url(/images/material-down-arrow.svg); - --icon-size: contain; - - -webkit-mask-repeat: no-repeat; - -webkit-mask-position: center center; - -webkit-mask-mode: alpha; - -webkit-mask-size: var(--icon-size); - -webkit-mask-image: var(--icon-image); - mask-repeat: no-repeat; - mask-position: center center; - mask-mode: alpha; - mask-size: var(--icon-size); - mask-image: var(--icon-image); -} -.nav-button-warning-badge-inner { - margin: 1px 2px; -} -.nav-button-warning-badge-outer { - animation: nav-button-warning-badge-animation ease-in-out 2s alternate infinite; -} -@keyframes nav-button-warning-badge-animation { - 0% { opacity: 1; background-color: #edc75e; } - 100% { opacity: 1; background-color: #333333; } -} - -.warning-badge { - position: relative; - width: var(--badge-size); - height: var(--badge-size); - margin: 0; - padding: 0; - background-color: var(--warning-color-light); - border-radius: 50%; - box-shadow: var(--shadow-vertical); -} -.warning-badge:not([hidden]) { - display: block; -} -.warning-badge>.icon { - display: block; - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - background-color: var(--warning-color); -} - -/* Mobile overrides */ - -/* Treat devices that can't hover as mobile devices */ -@media (hover: none) { - #full { - display: initial; - } - #mini { - display: none; - } - body { - min-width: 95%; - width: max-content; - font-size: calc(var(--font-size) * 2); - text-align: center; - } - h3 { - font-size: calc(var(--font-size) * 3.4); - } - .toggle-on, .toggle-off { - font-size: calc(var(--font-size) * 4); - } - .toggle-handle { - padding-left: 65px; - padding-right: 65px; - border-radius: 10px; - } - .toggle { - width: 100%; - padding-top: 37.7%; - } - #extension-info { - max-width: 95vw; - overflow-wrap: break-word; - } -} - -/* Dark mode before themes are applied - DO NOT use this for normal theming */ -@media (prefers-color-scheme: dark) { - body:not([data-loaded=true]) { - color: #cccccc; - background-color: #1e1e1e; - } -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/background.css b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/background.css deleted file mode 100644 index 0c8fe72..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/background.css +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (C) 2023-2024 Yomitan Authors - * Copyright (C) 2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 this program. If not, see . - */ - -/* stylelint-disable declaration-no-important */ -#clipboard-rich-content-paste-target * { - background-image: none !important; - list-style-image: none !important; - content: none !important; - cursor: auto !important; - border-image-source: none !important; - offset-path: none !important; - -webkit-mask-image: none !important; - mask-image: none !important; -} -/* stylelint-enable declaration-no-important */ diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/display-pronunciation.css b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/display-pronunciation.css deleted file mode 100644 index 6c4a801..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/display-pronunciation.css +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (C) 2023-2024 Yomitan Authors - * Copyright (C) 2021-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the entrys of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 this program. If not, see . - */ - -:root { - --pronunciation-annotation-color: #000000; -} -:root[data-theme=dark] { - --pronunciation-annotation-color: #ffffff; -} - -.pronunciation-downstep-notation { - display: inline; -} - -.pronunciation-text { - display: inline; -} -.pronunciation-mora { - display: inline-block; - position: relative; -} -.pronunciation-mora-line { - border-color: var(--pronunciation-annotation-color); -} -.pronunciation-mora[data-pitch=high]>.pronunciation-mora-line { - display: block; - user-select: none; - pointer-events: none; - position: absolute; - top: 0.1em; - left: 0; - right: 0; - height: 0; - border-top-width: 0.1em; - border-top-style: solid; -} -.pronunciation-mora[data-pitch=high][data-pitch-next=low]>.pronunciation-mora-line { - right: -0.1em; - height: 0.4em; - border-right-width: 0.1em; - border-right-style: solid; -} -.pronunciation-mora[data-pitch=high][data-pitch-next=low] { - padding-right: 0.1em; - margin-right: 0.1em; -} -.pronunciation-devoice-indicator { - display: block; - position: absolute; - left: 50%; - top: 50%; - width: 1.125em; - height: 1.125em; - border: calc(1.5em / var(--font-size-no-units)) dotted var(--danger-color); - border-radius: 50%; - box-sizing: border-box; - z-index: 1; - transform: translate(-50%, -50%); -} -.pronunciation-nasal-indicator { - display: block; - position: absolute; - right: -0.125em; - top: 0.125em; - width: 0.375em; - height: 0.375em; - border: calc(1.5em / var(--font-size-no-units)) solid var(--danger-color); - border-radius: 50%; - box-sizing: border-box; - z-index: 1; -} -.pronunciation-nasal-diacritic { - position: absolute; - width: 0; - height: 0; - opacity: 0; -} -.pronunciation-character { - display: inline; -} -.pronunciation-character-group { - display: inline-block; - position: relative; -} - -.pronunciation-graph { - display: inline-block; - vertical-align: middle; - height: 1.5em; -} -.pronunciation-graph-line, -.pronunciation-graph-line-tail { - fill: none; - stroke: var(--pronunciation-annotation-color); - stroke-width: 5; -} -.pronunciation-graph-line-tail { - stroke-dasharray: 5 5; -} -.pronunciation-graph-dot { - fill: var(--pronunciation-annotation-color); - stroke: var(--pronunciation-annotation-color); - stroke-width: 5; -} -.pronunciation-graph-dot-downstep1 { - fill: none; - stroke: var(--pronunciation-annotation-color); - stroke-width: 5; -} -.pronunciation-graph-dot-downstep2 { - fill: var(--pronunciation-annotation-color); -} -.pronunciation-graph-triangle { - fill: none; - stroke: var(--pronunciation-annotation-color); - stroke-width: 5; -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/display.css b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/display.css deleted file mode 100644 index 631c481..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/display.css +++ /dev/null @@ -1,1996 +0,0 @@ -/* - * Copyright (C) 2023-2024 Yomitan Authors - * Copyright (C) 2016-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the entrys of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 this program. If not, see . - */ - -/* Variables */ -:root { - /* Strings */ - --compact-list-separator: ' | '; - - --disambiguation-separator: ', '; - --disambiguation-reading-separator: ':'; - - --headword-separator: '\3001'; - - --inflection-separator: '\00AB'; - - /* Layout */ - --font-size-no-units: 14; - --font-size: calc(1px * var(--font-size-no-units)); - --query-parser-font-size-no-units: 2; - --query-parser-font-size: calc(1em * var(--query-parser-font-size-no-units)); - --h2-font-size-no-units: 1.25; - --h2-font-size: calc(1em * var(--h2-font-size-no-units)); - - --headword-font-size-no-units: 2; - --headword-font-size: calc(1em * var(--headword-font-size-no-units)); - --headword-reading-font-size-no-units: 0.75; - --headword-reading-font-size: calc(var(--headword-reading-font-size-no-units) * var(--headword-font-size)); - --headword-reading-space: 0.5em; - --headword-list-end-space: 0.5em; - --headword-thin-border-size: calc(1em / (var(--headword-font-size-no-units) * var(--font-size-no-units))); - - --line-height-no-units: 20; - --line-height: calc(var(--line-height-no-units) / var(--font-size-no-units)); - - --thin-border-size: calc(1em / var(--font-size-no-units)); - - --action-button-size-no-units: 16; - --action-button-size: calc(1em * (var(--action-button-size-no-units) / var(--font-size-no-units))); - --action-button-padding: 0.3em; - - --list-margin: 0.72em; - --content-width: 100%; - --main-content-vertical-padding: 0em; - --main-content-horizontal-padding: 0em; - --entry-horizontal-padding: 0.72em; - --entry-vertical-padding: 0.72em; - - --sidebar-width-no-units: 40; - --sidebar-width: calc(1em * (var(--sidebar-width-no-units) / var(--font-size-no-units))); - --sidebar-button-height-no-units: 30; - --sidebar-button-height: calc(1em * (var(--sidebar-button-height-no-units) / var(--font-size-no-units))); - --sidebar-button-icon-size-no-units: 16; - --sidebar-button-icon-size: calc(1em * (var(--sidebar-button-icon-size-no-units) / var(--font-size-no-units))); - - --progress-bar-height-no-units: 4; - --progress-bar-height: calc(1em * (var(--progress-bar-height-no-units) / var(--font-size-no-units))); - --progress-bar-active-transition-duration: 0.125s; - --progress-bar-active-transition-start-delay: 0.0625s; - --progress-bar-animation-duration: 2s; - - --entry-current-indicator-width-no-units: 4; - --entry-current-indicator-width: calc(1em * var(--entry-current-indicator-width-no-units) / var(--font-size-no-units)); - --entry-current-indicator-transition-duration: 0.125s; - - --tag-height-no-units: 20; - --tag-height: calc(1em * var(--tag-height-no-units) / var(--font-size-no-units)); - --tag-font-size-no-units: 11; - --tag-font-size: calc(1em * var(--tag-font-size-no-units) / var(--font-size-no-units)); - --tag-border-size-no-units: 1; - --tag-border-size: calc(1em * (var(--tag-border-size-no-units) / var(--font-size-no-units))); - --tag-border-style: solid; - --tag-font-weight: bold; - --tag-border-radius: 0.25em; - - --list-padding1: 1.4em; - --list-padding2: var(--list-padding1); - - --entry-current-indicator-triangle-size-no-units: 6; - --entry-current-indicator-triangle-size: calc(1em * (var(--entry-current-indicator-triangle-size-no-units) / var(--font-size-no-units))); - - --overlay-panel-translate-distance: 4em; - - --disambiguation-space: 0.25em; - - --animation-duration: 0.125s; - --animation-duration2: calc(2 * var(--animation-duration)); - - --collapsible-definition-line-count: 3; - --collapsible-definition-test-offset: 0.2em; - - /* Colors */ - --background-color: #ffffff; - --gloss-image-background-color: #eeeeee; - --link-color: var(--accent-color); - - --text-color: #000000; - --reason-text-color: var(--text-color-light3); - - --headword-text-color: var(--text-color); - --headword-text-color-popular: var(--accent-color); - --headword-text-color-rare: var(--text-color-light4); - --headword-furigana-text-color: var(--headword-text-color); - --headword-furigana-text-color-popular: var(--headword-text-color-popular); - --headword-furigana-text-color-rare: var(--headword-text-color-rare); - --headword-reading-text-color: var(--headword-furigana-text-color); - --headword-reading-text-color-popular: var(--headword-furigana-text-color-popular); - --headword-reading-text-color-rare: var(--headword-furigana-text-color-rare); - --headword-kanji-text-color: var(--headword-text-color); - --headword-kanji-text-color-popular: var(--headword-text-color-popular); - --headword-kanji-text-color-rare: var(--headword-text-color-rare); - --headword-kanji-border-color: var(--dark-border-color); - --headword-kanji-border-color-popular: var(--headword-kanji-border-color); - --headword-kanji-border-color-rare: var(--headword-kanji-border-color); - - --light-border-color: #eeeeee; - --medium-border-color: #dddddd; - --dark-border-color: #777777; - - --tag-text-color: #ffffff; - --tag-border-color: transparent; - --tag-default-background-color: #8a8a91; - --tag-name-background-color: #b6327a; - --tag-expression-background-color: #f0ad4e; - --tag-popular-background-color: #0275d8; - --tag-frequent-background-color: #5bc0de; - --tag-archaism-background-color: #d9534f; - --tag-dictionary-background-color: #aa66cc; - --tag-frequency-background-color: #5cb85c; - --tag-part-of-speech-background-color: #565656; - --tag-search-background-color: #8a8a91; - --tag-pronunciation-dictionary-background-color: #6640be; - - --sidebar-background-color: #f8f9fa; - - --sidebar-button-background-color: transparent; - --sidebar-button-background-color-hover: #cccccc; - --sidebar-button-background-color-active: #aaaaaa; - --sidebar-button-danger-background-color: transparent; - --sidebar-button-danger-background-color-hover: #dd2222; - --sidebar-button-danger-background-color-active: #bb2222; - --sidebar-button-icon-color: #333333; - --sidebar-button-disabled-icon-color: #888888; - --sidebar-button-danger-icon-color: #ffffff; - - --scrollbar-thumb-color: #c1c1c1; - --scrollbar-track-color: #f1f1f1; - --scrollbar-inverse-thumb-color: #444444; - --scrollbar-inverse-track-color: #2f2f2f; - - --progress-bar-track-color: #cccccc; - --progress-bar-indicator-color: var(--accent-color); - --entry-current-indicator-color: var(--accent-color); - - --notification-text-color: #2f2f2f; - --notification-background-color: #f1f1f1; - --notification-background-color-light: #e1e1e1; - --notification-background-color-lighter: #bbbbbb; - --notification-shadow-color: rgba(255, 255, 255, 0.25); - - --action-button-hover-color: #dddddd; - --action-button-active-color: #c1c1c1; -} -:root[data-theme=dark] { - /* Colors */ - --background-color: #1e1e1e; - --gloss-image-background-color: #2f2f2f; - --link-color: var(--accent-color); - - --text-color: #d4d4d4; - --reason-text-color: var(--text-color-light3); - - --headword-text-color: var(--text-color); - --headword-text-color-popular: var(--accent-color); - --headword-text-color-rare: var(--text-color-light4); - --headword-furigana-text-color: var(--headword-text-color); - --headword-furigana-text-color-popular: var(--headword-text-color-popular); - --headword-furigana-text-color-rare: var(--headword-text-color-rare); - --headword-reading-text-color: var(--headword-furigana-text-color); - --headword-reading-text-color-popular: var(--headword-furigana-text-color-popular); - --headword-reading-text-color-rare: var(--headword-furigana-text-color-rare); - --headword-kanji-border-color: var(--dark-border-color); - - --light-border-color: #2f2f2f; - --medium-border-color: #3f3f3f; - --dark-border-color: #888888; - - --tag-text-color: #f1f1f1; - --tag-border-color: transparent; - --tag-default-background-color: #69696e; - --tag-name-background-color: #992a67; - --tag-expression-background-color: #b07f39; - --tag-popular-background-color: #025caa; - --tag-frequent-background-color: #4490a7; - --tag-archaism-background-color: #b04340; - --tag-dictionary-background-color: #9057ad; - --tag-frequency-background-color: #489148; - --tag-part-of-speech-background-color: #565656; - --tag-search-background-color: #69696e; - --tag-pronunciation-dictionary-background-color: #6640be; - - --sidebar-background-color: #282828; - - --sidebar-button-background-color: transparent; - --sidebar-button-background-color-hover: #3a3a3a; - --sidebar-button-background-color-active: #5a5a5a; - --sidebar-button-danger-background-color: transparent; - --sidebar-button-danger-background-color-hover: #dd2222; - --sidebar-button-danger-background-color-active: #bb2222; - --sidebar-button-icon-color: #cccccc; - --sidebar-button-disabled-icon-color: #777777; - --sidebar-button-danger-icon-color: #ffffff; - - --scrollbar-thumb-color: #444444; - --scrollbar-track-color: #2f2f2f; - --scrollbar-inverse-thumb-color: #c1c1c1; - --scrollbar-inverse-track-color: #f1f1f1; - - --progress-bar-track-color: #3a3a3a; - --progress-bar-indicator-color: var(--accent-color); - --entry-current-indicator-color: var(--accent-color); - - --notification-text-color: #ffffff; - --notification-background-color: #333333; - --notification-background-color-light: #555555; - --notification-background-color-lighter: #666666; - --notification-shadow-color: rgba(0, 0, 0, 0.5); - - --action-button-hover-color: #282828; - --action-button-active-color: #444444; -} - - -/* Fonts */ -@font-face { - font-family: kanji-stroke-orders; - src: url('/data/fonts/kanji-stroke-orders.ttf'); -} - - -/* General */ -:root[data-page-type=popup]:not([data-theme]), -:root[data-page-type=popup]:not([data-theme]) body { - background-color: transparent; -} -body { - overflow: hidden; -} -ol, ul { - margin-top: 0; - margin-bottom: var(--list-padding); -} -h2 { - font-size: var(--h2-font-size); - font-weight: normal; - margin: 0.25em 0 0; - border-bottom: calc(1em / (var(--font-size-no-units) * var(--h2-font-size-no-units))) solid var(--light-border-color); -} -h3 { - font-size: 1em; - font-weight: bold; - margin: 0.25em 0 0.375em; - padding: 0; -} -h5 { - font-size: calc(12em / var(--font-size-no-units)); - margin: 0; - padding: 0; - font-weight: normal; -} -a { - color: var(--link-color); - text-decoration: underline; - cursor: pointer; - text-underline-offset: calc(4em / var(--font-size-no-units)); - text-decoration-thickness: calc(1em / var(--font-size-no-units)); -} -a:has(rt) { - text-decoration: none; - border-bottom: solid calc(1em / var(--font-size-no-units)) var(--link-color); -} - - -/* Selection */ -#content-scroll-focus { - opacity: 0; - margin: 0; - padding: 0; - outline: none; - background-color: transparent; - display: inline; - width: 0; - height: 0; - line-height: 0; - user-select: none; -} -#content-scroll-focus::-moz-focus-inner { - border: 0; -} - - -/* Scrollbars */ -:root:not([data-theme=light]) .scrollbar { - scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-track-color); -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar { - width: auto; -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-button { - height: 0; -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-thumb { - background-color: var(--scrollbar-thumb-color); -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-track { - background-color: var(--scrollbar-thumb-color); -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-track-piece { - background-color: var(--scrollbar-track-color); -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-corner { - background-color: var(--scrollbar-track-color); -} -:root .scrollbar-inverse { - scrollbar-color: var(--scrollbar-inverse-humb-color) var(--scrollbar-inverse-track-color); -} -:root .scrollbar-inverse::-webkit-scrollbar { - width: auto; -} -:root .scrollbar-inverse::-webkit-scrollbar-button { - height: 0; -} -:root .scrollbar-inverse::-webkit-scrollbar-thumb { - background-color: var(--scrollbar-inverse-thumb-color); -} -:root .scrollbar-inverse::-webkit-scrollbar-track { - background-color: var(--scrollbar-inverse-thumb-color); -} -:root .scrollbar-inverse::-webkit-scrollbar-track-piece { - background-color: var(--scrollbar-inverse-track-color); -} -:root .scrollbar-inverse::-webkit-scrollbar-corner { - background-color: var(--scrollbar-inverse-track-color); -} -.scrollbar-spacer { - display: inline-block; - overflow-x: hidden; - overflow-y: scroll; - visibility: hidden; - flex: 0 1 auto; -} - - -/* Main layout */ -.content { - flex: 1 1 auto; - position: relative; -} -.content-scroll { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - display: flex; - flex-flow: column nowrap; - overflow-x: hidden; - overflow-y: scroll; - align-items: stretch; - justify-content: flex-start; -} -.content-body { - flex: 1 1 auto; - position: relative; -} -.content-body-inner { - width: var(--content-width); - max-width: 100%; - box-sizing: border-box; - margin: 0 auto; - padding: var(--main-content-vertical-padding) var(--main-content-horizontal-padding); -} -.content-footer-container1 { - display: flex; - flex-flow: row nowrap; - position: absolute; - left: 0; - right: 0; - bottom: 0; - max-height: 100%; - pointer-events: none; - z-index: 5; -} -.content-footer-container2 { - display: flex; - flex-flow: row nowrap; - justify-content: center; - flex: 1 1 auto; - max-width: 100%; -} -.content-footer { - width: var(--content-width); - max-width: 100%; -} -.contain-overscroll { - overscroll-behavior: contain; -} - - -/* Sidebar layout */ -.content-outer { - width: 100%; - height: 100%; - display: flex; - flex-flow: row nowrap; - overflow: hidden; - align-items: stretch; - align-content: stretch; - justify-content: center; -} -.content-sidebar { - flex: 0 0 auto; - height: 100%; - overflow-x: hidden; - overflow-y: auto; - background-color: var(--sidebar-background-color); - z-index: 10; - position: relative; - display: none; -} -:root[data-has-navigation-previous=true] .content-sidebar, -:root[data-has-navigation-next=true] .content-sidebar, -:root[data-popup-action-bar-visibility=always] .content-sidebar, -:root[data-profile-panel-visible=true] .content-sidebar { - display: block; -} -.content-sidebar-inner { - display: flex; - flex-flow: column nowrap; - width: var(--sidebar-width); - height: 100%; -} -.content-sidebar-top-pre { - flex: 0 0 auto; - display: flex; - flex-flow: column nowrap; -} -.content-sidebar-top { - flex: 1 1 auto; - display: flex; - flex-flow: column nowrap; -} -.content-sidebar-bottom { - position: sticky; - bottom: 0; - background-color: var(--sidebar-background-color); - display: flex; - flex-flow: column nowrap; -} -:root[data-popup-action-bar-location=top] .content-outer, -:root[data-popup-action-bar-location=bottom] .content-outer { - flex-flow: column nowrap; -} -:root[data-popup-action-bar-location=top] .content-sidebar, -:root[data-popup-action-bar-location=bottom] .content-sidebar { - height: auto; - width: 100%; -} -:root[data-popup-action-bar-location=left] .content-sidebar, -:root[data-popup-action-bar-location=top] .content-sidebar { - order: -1; -} -:root[data-popup-action-bar-location=top] .content-sidebar-inner, -:root[data-popup-action-bar-location=bottom] .content-sidebar-inner { - flex-flow: row nowrap; - width: auto; - height: var(--sidebar-button-height); -} -:root[data-popup-action-bar-location=top] .content-sidebar-top-pre, -:root[data-popup-action-bar-location=bottom] .content-sidebar-top-pre { - flex-flow: row nowrap; - order: 1; -} -:root[data-popup-action-bar-location=top] .content-sidebar-top, -:root[data-popup-action-bar-location=bottom] .content-sidebar-top { - flex-flow: row nowrap; -} -:root[data-popup-action-bar-location=top] .content-sidebar-bottom, -:root[data-popup-action-bar-location=bottom] .content-sidebar-bottom { - flex-flow: row nowrap; -} - - -/* Sidebar buttons */ -button.sidebar-button { - --button-content-color: var(--sidebar-button-icon-color); - --button-border-color: transparent; - --button-background-color: var(--sidebar-button-background-color); - --button-shadow: none; - - --button-hover-border-color: transparent; - --button-hover-background-color: var(--sidebar-button-background-color-hover); - --button-hover-shadow: none; - - --button-active-border-color: transparent; - --button-active-background-color: var(--sidebar-button-background-color-active); - --button-active-shadow: none; - - --button-disabled-content-color: var(--sidebar-button-disabled-icon-color); - --button-disabled-border-color: transparent; - --button-disabled-background-color: var(--sidebar-button-background-color); - --button-disabled-shadow: none; - - width: 100%; - height: var(--sidebar-button-height); - margin: 0; - padding: 0; - border-style: none; - border-width: 0; - cursor: pointer; - display: block; - transition: background-color 0.125s ease-in-out; - outline: none; - font-size: inherit; - border-radius: 0; -} -:root[data-popup-action-bar-location=top] button.sidebar-button, -:root[data-popup-action-bar-location=bottom] button.sidebar-button { - width: var(--sidebar-width); - height: 100%; -} -button.sidebar-button.danger { - --button-content-color: var(--sidebar-button-icon-color); - --button-border-color: transparent; - --button-background-color: var(--sidebar-button-danger-background-color); - --button-shadow: none; - - --button-hover-content-color: var(--sidebar-button-danger-icon-color); - --button-hover-border-color: transparent; - --button-hover-background-color: var(--sidebar-button-danger-background-color-hover); - --button-hover-shadow: none; - - --button-active-content-color: var(--sidebar-button-danger-icon-color); - --button-active-border-color: transparent; - --button-active-background-color: var(--sidebar-button-danger-background-color-active); - --button-active-shadow: none; -} -.sidebar-button-icon { - --icon-size: var(--sidebar-button-icon-size) var(--sidebar-button-icon-size); - - display: block; - width: 100%; - height: 100%; - background-color: var(--button-current-content-color); - transition: background-color 0.125s ease-in-out; -} -button.sidebar-button.sidebar-button-highlight { - --button-content-color: var(--accent-color); - --button-hover-content-color: var(--accent-color); - --button-active-content-color: var(--accent-color); -} - - -/* Search page */ -.search-header-wrapper { - background-color: var(--background-color); - width: 100%; - display: flex; - justify-content: center; -} -.sticky-header { - position: sticky; - top: 0px; - z-index: 1000; -} -#sticky-search-header { - padding-top: 10px; -} -.sticky-header #query-parser-content { - max-height: calc(var(--query-parser-font-size) * 2); -} -.search-header { - width: var(--content-width); - display: flex; - flex-flow: column nowrap; - max-height: 100vh; - padding: var(--main-content-vertical-padding) var(--main-content-horizontal-padding); -} -#query-parser-container { - overflow-y: auto; - padding-left: var(--entry-horizontal-padding); - padding-right: var(--entry-horizontal-padding); - padding-bottom: 0.25em; - border-bottom: var(--headword-thin-border-size) solid var(--light-border-color); -} -#query-parser-content { - margin-top: 0.5em; - font-size: var(--query-parser-font-size); - white-space: pre-wrap; -} -#query-parser-content[data-term-spacing=true] .query-parser-term { - margin-right: 0.2em; -} - - -/* Action buttons */ -.actions { - display: flex; - flex-flow: row nowrap; - float: right; - margin: -0.25em; - position: relative; - z-index: 1; -} -.actions::after { - clear: both; - content: ''; - display: block; -} -button.action-button { - cursor: pointer; - display: block; - opacity: 1; - border: 0; - margin: 0; - padding: var(--action-button-padding); - background: transparent; - font-size: inherit; - box-shadow: none; - position: relative; - transition: - opacity var(--animation-duration) linear, - visibility 0s linear 0s, - filter var(--animation-duration) linear, - -webkit-filter var(--animation-duration) linear, - background-color var(--animation-duration) linear; -} -button.action-button[hidden] { - display: block; - visibility: hidden; - opacity: 0; - transition: - opacity var(--animation-duration) linear, - visibility 0s linear var(--animation-duration), - filter var(--animation-duration) linear, - -webkit-filter var(--animation-duration) linear, - background-color var(--animation-duration) linear; -} -button.action-button-collapsible[hidden] { - display: none; -} -button.action-button:disabled { - pointer-events: none; - cursor: default; - -webkit-filter: grayscale(100%); - filter: grayscale(100%); - background-color: transparent; -} -button.action-button:disabled:not([hidden]) { - opacity: 0.25; -} -button.action-button:hover, -button.action-button:focus { - background-color: transparent; - box-shadow: none; -} -button.action-button:focus-visible { - background-color: var(--action-button-hover-color); - box-shadow: none; -} -button.action-button:active { - background-color: var(--action-button-active-color); - box-shadow: none; -} -.icon[data-icon=view-note] { background-image: url('/images/view-note.svg'); } -.icon[data-icon=add-term-kanji] { background-image: url('/images/add-term-kanji.svg'); } -.icon[data-icon=add-term-kana] { background-image: url('/images/add-term-kana.svg'); } -.icon[data-icon=add-kanji] { background-image: url('/images/add-term-kanji.svg'); } -.icon[data-icon=overwrite-term-kanji] { background-image: url('/images/overwrite-term-kanji.svg'); } -.icon[data-icon=overwrite-term-kana] { background-image: url('/images/overwrite-term-kana.svg'); } -.icon[data-icon=overwrite-kanji] { background-image: url('/images/overwrite-term-kanji.svg'); } -.icon[data-icon=add-duplicate-term-kanji] { background-image: url('/images/add-duplicate-term-kanji.svg'); } -.icon[data-icon=add-duplicate-term-kana] { background-image: url('/images/add-duplicate-term-kana.svg'); } -.icon[data-icon=add-duplicate-kanji] { background-image: url('/images/add-duplicate-term-kanji.svg'); } -.icon[data-icon=play-audio] { background-image: url('/images/play-audio.svg'); } -.icon[data-icon=source-term] { background-image: url('/images/source-term.svg'); } -.icon[data-icon=entry-current] { background-image: url('/images/entry-current.svg'); } -.action-icon { - display: block; - width: var(--action-button-size); - height: var(--action-button-size); -} -.action-icon:not(.color-icon) { - background-color: var(--text-color); -} -:root[data-result-output-mode=merge] .entry[data-type=term] .actions>button.action-button[data-action=play-audio] { - display: none; -} -.action-button-badge { - pointer-events: none; - position: absolute; - display: block; - right: 0; - top: 0; - width: calc(8em / var(--font-size-no-units)); - height: calc(8em / var(--font-size-no-units)); -} -.action-button-badge[data-icon=cross] { - background-color: var(--danger-color); -} -.action-button-badge[data-icon=plus-thick] { - background-color: var(--success-color); -} - - -/* Tags */ -.tag { - --tag-color: var(--tag-default-background-color); - - display: inline-flex; - flex-flow: row nowrap; - align-items: stretch; - border: none; - border-right: none; - font-size: 1em; - min-height: var(--tag-height); - margin: calc(1em / var(--font-size-no-units)) 0.375em calc(1em / var(--font-size-no-units)) 0; -} -.tag-label { - display: flex; - flex-flow: row nowrap; - align-items: center; - background-color: var(--tag-color); - border-radius: var(--tag-border-radius); - padding: calc(2.5em / var(--font-size-no-units)) 0.375em calc(2.5em / var(--font-size-no-units)) 0.375em; - color: var(--tag-text-color); - cursor: pointer; -} -.tag-label-content { - display: block; - font-size: var(--tag-font-size); - font-weight: var(--tag-font-weight); -} -.tag-body { - display: flex; - flex-flow: row nowrap; - align-items: center; - position: relative; - padding: 0 0.375em 0 0.375em; - border-radius: var(--tag-border-radius); - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.tag-body::before { - content: ''; - display: block; - position: absolute; - left: 0; - top: 0; - bottom: 0; - right: 0; - border-radius: var(--tag-border-radius); - border-top-left-radius: 0; - border-bottom-left-radius: 0; - border: var(--tag-border-size) var(--tag-border-style) var(--tag-color); - border-left: none; - pointer-events: none; -} -.tag-body-content { - display: block; - position: relative; -} -.tag:not(.tag-has-body)>.tag-body { - display: none; -} -.tag.tag-has-body>.tag-label { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.tag[data-category=name] { - --tag-color: var(--tag-name-background-color); -} -.tag[data-category=expression] { - --tag-color: var(--tag-expression-background-color); -} -.tag[data-category=popular] { - --tag-color: var(--tag-popular-background-color); -} -.tag[data-category=frequent] { - --tag-color: var(--tag-frequent-background-color); -} -.tag[data-category=archaism] { - --tag-color: var(--tag-archaism-background-color); -} -.tag[data-category=dictionary] { - --tag-color: var(--tag-dictionary-background-color); -} -.tag[data-category=frequency] { - --tag-color: var(--tag-frequency-background-color); -} -.tag[data-category=partOfSpeech] { - --tag-color: var(--tag-part-of-speech-background-color); -} -.tag[data-category=search] { - --tag-color: var(--tag-search-background-color); -} -.tag[data-category=pronunciation-dictionary] { - --tag-color: var(--tag-pronunciation-dictionary-background-color); -} - - -/* Entries */ -.entry { - padding: var(--entry-vertical-padding) var(--entry-horizontal-padding); - position: relative; -} -.entry+.entry { - border-top: var(--thin-border-size) solid var(--light-border-color); -} -.entry-body { - clear: both; -} -.entry[data-definition-count='0'] .entry-body-section[data-section-type=definitions], -.entry[data-frequency-count='0'] .entry-body-section[data-section-type=frequencies], -.entry[data-pronunciation-count='0'] .entry-body-section[data-section-type=pronunciations] { - display: none; -} - - -/* Inflections */ -.inflection-rule-chains { - padding-inline-start: 0; - list-style-type: none; -} -.inflection-rule-chain { - color: var(--reason-text-color); -} -.inflection-rule-chain:empty { - display: none; -} -.inflection-rule-chain>.inflection+.inflection-separator+.inflection::before { - content: var(--inflection-separator); - padding: 0 0.25em; -} -.inflection-source-icon { - display: inline-block; - white-space: nowrap; - text-align: center; - width: 1.4em; - margin-right: 0.2em; -} -.inflection-source-icon[data-inflection-source='dictionary']::after { - content: '📖'; -} -.inflection-source-icon[data-inflection-source='algorithm']::after { - content: '🧩'; -} -.inflection-source-icon[data-inflection-source='both'] { - width: 2.8em; -} -.inflection-source-icon[data-inflection-source='both']::after { - content: '🧩📖'; -} -.inflection[title] { - cursor: pointer; -} - - -/* Headwords */ -.headword-list { - display: inline; - margin-right: var(--headword-list-end-space); -} -.headword { - --headword-current-text-color: var(--headword-text-color); - --headword-current-reading-text-color: var(--headword-reading-text-color); - --headword-current-furigana-text-color: var(--headword-furigana-text-color); - --headword-current-kanji-text-color: var(--headword-kanji-text-color); - --headword-current-kanji-border-color: var(--headword-kanji-border-color); - - display: inline-block; -} -:root[data-result-output-mode=merge] .headword[data-frequency=popular] { - --headword-current-text-color: var(--headword-text-color-popular); - --headword-current-reading-text-color: var(--headword-reading-text-color-popular); - --headword-current-furigana-text-color: var(--headword-furigana-text-color-popular); - --headword-current-kanji-text-color: var(--headword-kanji-text-color-popular); - --headword-current-kanji-border-color: var(--headword-kanji-border-color-popular); -} -:root[data-result-output-mode=merge] .headword[data-frequency=rare] { - --headword-current-text-color: var(--headword-text-color-rare); - --headword-current-reading-text-color: var(--headword-reading-text-color-rare); - --headword-current-furigana-text-color: var(--headword-furigana-text-color-rare); - --headword-current-kanji-text-color: var(--headword-kanji-text-color-rare); - --headword-current-kanji-border-color: var(--headword-kanji-border-color-rare); -} -.headword-details { - display: inline; -} -.headword-list-details { - display: inline; -} -.headword-list-tag-list { - display: inline; -} -.headword-text-container { - display: inline-block; - margin-left: calc(-1 * var(--headword-reading-space)); -} -.headword-term-outer { - display: inline-block; - position: relative; - margin-left: var(--headword-reading-space); -} -.headword-reading-outer { - display: none; - position: relative; - margin-left: var(--headword-reading-space); -} -.headword-term { - color: var(--headword-current-text-color); - font-size: var(--headword-font-size); -} -.headword-reading { - color: var(--headword-current-reading-text-color); - font-size: var(--headword-reading-font-size); -} -.headword-list>.headword:not(:last-of-type)>.headword-text-container>.headword-term-outer::after { - content: var(--headword-separator); - font-size: var(--headword-font-size); -} -.headword-list>.headword:not(:last-of-type)>.headword-text-container>.headword-reading-outer::after { - content: var(--headword-separator); - font-size: var(--headword-reading-font-size); -} -.headword-term>ruby>rt { - color: var(--headword-current-furigana-text-color); -} -.headword-kanji-link { - border-bottom: var(--headword-thin-border-size) dashed var(--headword-current-kanji-border-color); - color: var(--headword-current-kanji-text-color); - text-decoration: none; - cursor: pointer; -} -:root[data-result-output-mode=merge] .headword-list-details { - display: block; -} -:root[data-term-display-mode=ruby-and-reading] .headword-term-outer::after, -:root[data-term-display-mode=term-and-reading] .headword-term-outer::after { - display: none; -} -:root[data-term-display-mode=ruby-and-reading] .headword-reading-outer, -:root[data-term-display-mode=term-and-reading] .headword-reading-outer { - display: inline-block; -} -:root[data-term-display-mode=ruby-and-reading] .headword[data-reading-is-same=true] .headword-term-outer::after, -:root[data-term-display-mode=term-and-reading] .headword[data-reading-is-same=true] .headword-term-outer::after { - display: inline-block; -} -:root[data-term-display-mode=ruby-and-reading] .headword[data-reading-is-same=true] .headword-reading-outer, -:root[data-term-display-mode=term-and-reading] .headword[data-reading-is-same=true] .headword-reading-outer { - display: none; -} -:root[data-term-display-mode=term-and-reading] .headword-term>ruby>rt, -:root[data-term-display-mode=term-only] .headword-term>ruby>rt { - display: none; -} - - -/* Entry indicator */ -.entry-current-indicator { - display: block; - position: absolute; - left: calc(-1 * var(--main-content-horizontal-padding)); - top: 0; - bottom: 0; - width: 0; - background-color: var(--entry-current-indicator-color); - visibility: hidden; - transition: - width var(--entry-current-indicator-transition-duration) linear, - visibility 0s linear var(--entry-current-indicator-transition-duration); -} -.entry.entry-current .entry-current-indicator { - width: var(--entry-current-indicator-width); - visibility: visible; - transition: - width var(--entry-current-indicator-transition-duration) linear, - visibility 0s linear 0s; -} -:root[data-popup-current-indicator-mode=bar-right] .entry-current-indicator, -:root[data-popup-current-indicator-mode=dot-right] .entry-current-indicator { - left: auto; - right: 0; -} -.entry-current-indicator-inner { - display: none; - pointer-events: auto; - width: 100%; - height: 0; - top: 0; - background-color: var(--entry-current-indicator-color); - transition: none; -} -.entry.entry-current .entry-current-indicator-inner { - height: var(--entry-current-indicator-width); - transition: height var(--entry-current-indicator-transition-duration) linear; -} -:root[data-popup-current-indicator-mode=dot-left] .entry-current-indicator, -:root[data-popup-current-indicator-mode=dot-right] .entry-current-indicator { - background-color: transparent; -} -:root[data-popup-current-indicator-mode=dot-left] .entry-current-indicator-inner, -:root[data-popup-current-indicator-mode=dot-right] .entry-current-indicator-inner { - display: block; - position: sticky; - transition: height var(--entry-current-indicator-transition-duration) linear; -} -:root[data-popup-current-indicator-mode=none] .entry-current-indicator, -:root[data-popup-current-indicator-mode=asterisk] .entry-current-indicator, -:root[data-popup-current-indicator-mode=triangle] .entry-current-indicator { - display: none; - transition: none; -} - - -/* Triangle entry indicator */ -.headword-current-indicator { - pointer-events: none; - position: absolute; - left: calc(-1 * var(--main-content-horizontal-padding)); - top: 0; - bottom: 0; - opacity: 0; - visibility: hidden; - transition: - opacity var(--entry-current-indicator-transition-duration) linear, - visibility 0s linear var(--entry-current-indicator-transition-duration); -} -.headword-term .headword-current-indicator { - font-size: calc(1em / var(--headword-font-size-no-units)); -} -.entry.entry-current .headword-current-indicator { - opacity: 1; - visibility: visible; - transition: - opacity var(--entry-current-indicator-transition-duration) linear, - visibility 0s linear 0s; -} -.headword-current-indicator::after { - content: ''; - display: block; - position: absolute; - width: var(--entry-current-indicator-triangle-size); - height: calc(2 * var(--entry-current-indicator-triangle-size)); - left: calc(-1 * var(--entry-horizontal-padding)); - top: calc(50% - var(--entry-current-indicator-triangle-size)); - background-color: var(--entry-current-indicator-color); - mask-repeat: no-repeat; - mask-position: center center; - mask-mode: alpha; - mask-size: contain; - mask-image: url(/images/material-right-arrow.svg); - -webkit-mask-repeat: no-repeat; - -webkit-mask-position: center center; - -webkit-mask-mode: alpha; - -webkit-mask-size: contain; - -webkit-mask-image: url(/images/material-right-arrow.svg); -} -.headword-list>.headword:not(:first-of-type) .headword-current-indicator, -:root:not([data-popup-current-indicator-mode=triangle]) .headword-current-indicator { - display: none; - transition: none; -} - - -/* Old entry indicator */ -.entry-current-indicator-icon { - display: block; - padding: var(--action-button-padding); -} -.entry-current-indicator-icon[hidden], -.entry:not(.entry-current) .entry-current-indicator-icon, -:root:not([data-popup-current-indicator-mode=asterisk]) .entry-current-indicator-icon { - display: none; -} -.entry-current-indicator-icon>.icon { - width: var(--action-button-size); - height: var(--action-button-size); - display: block; - background-image: url('/images/entry-current.svg'); -} - - -/* Merged term styles */ -:root[data-result-output-mode=merge] .headword-list .headword-details { - display: inline-block; - position: relative; - width: 0; - height: 0; - visibility: hidden; - z-index: 1; -} -:root[data-result-output-mode=merge] .headword-list>.headword:not(:last-of-type) .headword-details { - left: calc(-1 * var(--headword-font-size)); -} -:root[data-result-output-mode=merge] .headword:hover .headword-details { - visibility: visible; -} -:root[data-result-output-mode=merge] .headword-list .headword-details>.action-button[data-action=play-audio] { - position: absolute; - left: 0; - bottom: 0.5em; -} -:root:not([data-result-output-mode=merge]) .headword-list .headword-details>.action-button[data-action=play-audio] { - display: none; -} - - -/* Definitions */ -.definition-list { - margin: 0; - padding: 0 0 0 var(--list-padding1); - list-style-type: decimal; -} -.definition-list[data-count='0'], -.definition-list[data-count='1'] { - padding-left: 0; - list-style-type: none; -} -.gloss-list { - margin: 0; - padding: 0 0 0 var(--list-padding2); - list-style-type: circle; -} -.gloss-list[data-count='0'], -.gloss-list[data-count='1'] { - padding-left: 0; - list-style-type: none; -} -.definition-item::marker, -.gloss-item::marker { - color: var(--text-color-light3); -} -.gloss-content { - display: block; - white-space: pre-line; -} -.definition-disambiguation-list { - color: var(--text-color-light3); - padding-right: var(--disambiguation-space); -} -.definition-disambiguation-list[data-count='0'] { - display: none; -} -.definition-disambiguation+.definition-disambiguation::before { - content: var(--disambiguation-separator); -} -.gloss-separator, -.inflection-separator { - display: inline; - font-size: 0; - opacity: 0; - white-space: pre-wrap; -} -.gloss-separator { - display: none; -} -.definition-item { - display: list-item; - position: relative; -} -.definition-item-inner.collapsible.collapsed { - max-height: calc(1em * var(--collapsible-definition-line-count) * var(--line-height)); - overflow: hidden; -} -.definition-item-inner.collapse-test { - max-height: calc(1em * var(--collapsible-definition-line-count) * var(--line-height) + var(--collapsible-definition-test-offset)); - overflow: hidden; -} -.definition-item-inner { - display: flex; - flex-flow: row nowrap; -} -.definition-item-content { - width: 100%; - flex: 1 1 auto; - background-color: transparent; - transition: background-color var(--animation-duration) ease-in-out; -} -button.definition-item-expansion-button { - --button-content-color: var(--text-color-light4); - --button-border-color: transparent; - --button-background-color: transparent; - - --button-hover-content-color: var(--text-color-light1); - --button-hover-border-color: var(--accent-color-lighter); - --button-hover-background-color: var(--accent-color-lighter); - - --button-active-content-color: var(--text-color); - --button-active-border-color: var(--accent-color-light); - --button-active-background-color: var(--accent-color-light); - - --button-padding-vertical: 0; - --button-padding-horizontal: 0.125em; - - flex: 0 0 auto; - order: 1; - border-radius: 0; - border: 0; -} -.definition-item-inner:not(.collapsible)>button.definition-item-expansion-button { - display: none; -} -button.definition-item-expansion-button:hover+.definition-item-content, -button.definition-item-expansion-button:active+.definition-item-content, -button.definition-item-expansion-button:focus+.definition-item-content { - background-color: var(--accent-color-transparent25); -} -button.definition-item-expansion-button:focus:not(:focus-visible)+.definition-item-content { - background-color: transparent; -} -button.definition-item-expansion-button:focus:hover+.definition-item-content, -button.definition-item-expansion-button:focus:active+.definition-item-content, -button.definition-item-expansion-button:focus:focus-visible+.definition-item-content { - background-color: var(--accent-color-transparent25); -} -.definition-item-expansion-button-icon { - transform: rotate(0deg); - width: calc(16em / var(--font-size-no-units)); - height: calc(16em / var(--font-size-no-units)); - background-color: var(--button-current-content-color); - transition: background-color var(--animation-duration) ease-in-out; -} -.definition-item-inner.collapsible:not(.collapsed)>button.definition-item-expansion-button>.definition-item-expansion-button-icon { - transform: rotate(180deg); -} - - -/* Frequencies */ -.frequency-group-item { - display: inline; -} -.frequency-item { - display: inline; -} -.frequency-disambiguation { - color: var(--text-color-light3); - padding-right: var(--disambiguation-space); -} -.frequency-disambiguation-separator::before { - content: var(--disambiguation-reading-separator); -} -.frequency-disambiguation-reading { - display: inline; - font-size: 1em; -} -.frequency-body::after { - white-space: pre-wrap; - display: inline; - color: var(--text-color-light3); -} -.entry[data-unique-term-count='1'] .frequency-item[data-has-reading=false] .frequency-disambiguation, -.entry[data-unique-reading-count='1'][data-unique-term-count='1'] .frequency-disambiguation, -.frequency-item[data-reading-is-same=true] .frequency-disambiguation-separator, -.frequency-item[data-reading-is-same=true] .frequency-disambiguation-reading, -.frequency-item[data-has-reading=false] .frequency-disambiguation-separator, -.frequency-item[data-has-reading=false] .frequency-disambiguation-reading, -.entry[data-unique-term-count='1'] .frequency-disambiguation-separator, -.entry[data-unique-term-count='1'] .frequency-disambiguation-term, -.entry[data-unique-reading-count='1'] .frequency-disambiguation-separator, -.entry[data-unique-reading-count='1'] .frequency-disambiguation-reading { - display: none; -} -:root[data-frequency-display-mode=tags] .frequency-group-tag, -:root[data-frequency-display-mode=split-tags] .frequency-group-tag { - margin: 0; - display: inline; - min-height: auto; -} -:root[data-frequency-display-mode=tags] .frequency-group-tag>.tag-label, -:root[data-frequency-display-mode=split-tags] .frequency-group-tag>.tag-label { - display: none; -} -:root[data-frequency-display-mode=tags] .frequency-group-tag>.tag-body, -:root[data-frequency-display-mode=split-tags] .frequency-group-tag>.tag-body { - display: inline; - padding: 0; -} -:root[data-frequency-display-mode=tags] .frequency-group-tag>.tag-body::before, -:root[data-frequency-display-mode=split-tags] .frequency-group-tag>.tag-body::before { - display: none; -} -:root[data-frequency-display-mode=tags] .frequency-list, -:root[data-frequency-display-mode=split-tags] .frequency-list { - display: inline; -} -:root[data-frequency-display-mode=list] .frequency-tag, -:root[data-frequency-display-mode=inline-list] .frequency-tag, -:root[data-frequency-display-mode=tags-grouped] .frequency-tag, -:root[data-frequency-display-mode=split-tags-grouped] .frequency-tag { - margin: 0; - display: inline; - min-height: auto; -} -:root[data-frequency-display-mode=list] .frequency-tag>.tag-label, -:root[data-frequency-display-mode=inline-list] .frequency-tag>.tag-label, -:root[data-frequency-display-mode=tags-grouped] .frequency-tag>.tag-label, -:root[data-frequency-display-mode=split-tags-grouped] .frequency-tag>.tag-label { - display: none; -} -:root[data-frequency-display-mode=list] .frequency-tag>.tag-body, -:root[data-frequency-display-mode=inline-list] .frequency-tag>.tag-body, -:root[data-frequency-display-mode=tags-grouped] .frequency-tag>.tag-body, -:root[data-frequency-display-mode=split-tags-grouped] .frequency-tag>.tag-body { - display: inline; - padding: 0; -} -:root[data-frequency-display-mode=list] .frequency-tag>.tag-body::before, -:root[data-frequency-display-mode=inline-list] .frequency-tag>.tag-body::before, -:root[data-frequency-display-mode=tags-grouped] .frequency-tag>.tag-body::before, -:root[data-frequency-display-mode=split-tags-grouped] .frequency-tag>.tag-body::before { - display: none; -} -:root[data-frequency-display-mode=list] .frequency-body, -:root[data-frequency-display-mode=inline-list] .frequency-body, -:root[data-frequency-display-mode=tags-grouped] .frequency-body, -:root[data-frequency-display-mode=split-tags-grouped] .frequency-body { - display: inline-block; -} -:root[data-frequency-display-mode=inline-list] .frequency-item:not(:last-child)>.frequency-tag>.tag-body>.frequency-body::after, -:root[data-frequency-display-mode=tags-grouped] .frequency-item:not(:last-child)>.frequency-tag>.tag-body>.frequency-body::after, -:root[data-frequency-display-mode=split-tags-grouped] .frequency-item:not(:last-child)>.frequency-tag>.tag-body>.frequency-body::after { - content: var(--compact-list-separator); -} -:root[data-frequency-display-mode=list] .frequency-group-tag>.tag-body::before, -:root[data-frequency-display-mode=inline-list] .frequency-group-tag>.tag-body::before { - display: none; -} -:root[data-frequency-display-mode=list] .frequency-group-tag.tag.tag-has-body>.tag-label, -:root[data-frequency-display-mode=inline-list] .frequency-group-tag.tag.tag-has-body>.tag-label { - border-radius: var(--tag-border-radius); -} -:root[data-frequency-display-mode=tags] .frequency-tag>.tag-body::before { - display: none; -} -:root[data-frequency-display-mode=tags] .frequency-tag>.tag-body { - background-color: var(--tag-color); - padding-left: 0; -} -:root[data-frequency-display-mode=tags] .frequency-body { - font-size: var(--tag-font-size); - font-weight: var(--tag-font-weight); - color: var(--tag-text-color); -} -:root[data-frequency-display-mode=tags] .frequency-tag>.tag-label>.tag-label-content::after { - content: ':'; -} -:root[data-frequency-display-mode=tags-grouped] .frequency-group-tag>.tag-body::before { - display: none; -} -:root[data-frequency-display-mode=tags-grouped] .frequency-group-tag>.tag-body { - background-color: var(--tag-color); - padding-left: 0; -} -:root[data-frequency-display-mode=tags-grouped] .frequency-list { - font-size: var(--tag-font-size); - font-weight: var(--tag-font-weight); - color: var(--tag-text-color); -} -:root[data-frequency-display-mode=tags-grouped] .frequency-group-tag>.tag-label>.tag-label-content::after { - content: ':'; -} -:root[data-frequency-display-mode=tags] .frequency-disambiguation, -:root[data-frequency-display-mode=tags-grouped] .frequency-disambiguation, -:root[data-frequency-display-mode=tags] .frequency-body::after, -:root[data-frequency-display-mode=tags-grouped] .frequency-body::after { - color: inherit; - font-weight: normal; - opacity: 0.75; -} -:root[data-frequency-display-mode=list] .frequency-group-list { - list-style-type: decimal; - padding: 0 0 0 var(--list-padding1); -} -:root[data-frequency-display-mode=list] .frequency-group-item { - display: list-item; -} -:root[data-frequency-display-mode=list] .frequency-group-item::marker { - color: var(--text-color-light3); -} -:root[data-frequency-display-mode=list] .frequency-group-tag { - display: block; - min-height: auto; -} -:root[data-frequency-display-mode=list] .frequency-group-tag>.tag-label { - display: inline-flex; -} -:root[data-frequency-display-mode=list] .frequency-list { - list-style-type: circle; - padding: 0 0 0 var(--list-padding2); -} -:root[data-frequency-display-mode=list] .frequency-item { - display: list-item; -} -:root[data-frequency-display-mode=list] .frequency-item::marker { - color: var(--text-color-light3); -} -:root[data-frequency-display-mode=list] .frequency-group-list[data-count='1'] { - list-style-type: none; - padding-left: 0; -} -:root[data-frequency-display-mode=list] .frequency-group-list[data-count='1']>.frequency-group-item { - display: inline; -} -:root[data-frequency-display-mode=list] .frequency-group-item[data-count='1']>.frequency-group-tag>.tag-body { - display: inline-flex; -} -:root[data-frequency-display-mode=list] .frequency-group-item[data-count='1']>.frequency-group-tag>.tag-body>.frequency-body { - display: inline; -} -:root[data-frequency-display-mode=list] .frequency-group-item[data-count='1'] .frequency-list { - list-style-type: none; - padding-left: 0; -} -:root[data-frequency-display-mode=list] .frequency-group-item[data-count='1'] .frequency-item { - display: inline; -} - - -/* Pitch accent styles */ -.pronunciation-group-list { - margin: 0; - padding: 0 0 0 var(--list-padding1); - list-style-type: decimal; -} -.pronunciation-group-list[data-count='0'], -.pronunciation-group-list[data-count='1'] { - padding-left: 0; - list-style-type: none; -} -.pronunciation-list { - margin: 0; - padding: 0 0 0 var(--list-padding2); - list-style-type: circle; - display: block; -} -.pronunciation-list[data-count='0'], -.pronunciation-list[data-count='1'] { - padding-left: 0; - list-style-type: none; - display: inline; -} -.pronunciation-group::marker, -.pronunciation::marker { - color: var(--text-color-light3); -} -.pronunciation { - display: list-item; - line-height: 1.5; -} -.pronunciation-list[data-count='0'] .pronunciation, -.pronunciation-list[data-count='1'] .pronunciation { - display: inline; -} -.pronunciation-group-tag-list { - margin-right: 0.375em; -} -.pronunciation-disambiguation-list { - color: var(--text-color-light3); - padding-right: var(--disambiguation-space); -} -.pronunciation-disambiguation+.pronunciation-disambiguation::before { - content: var(--disambiguation-separator); -} -.pronunciation-disambiguation-list[data-count='0'] { - display: none; -} -.pronunciation-tag-list:not([data-count='0']) { - margin-right: 0.375em; -} -.pronunciation-downstep-notation-container { - margin-left: 0.25em; -} -.pronunciation-graph-container { - margin-left: 0.25em; -} - - -/* Kanji */ -.kanji-glyph-container { - display: block; - position: relative; -} -.kanji-glyph { - font-family: sans-serif; - font-size: 8.5em; - line-height: 1; - padding: 0.01em; - vertical-align: top; -} -.kanji-glyph-data { - margin-top: 0.75em; - border-spacing: 0; - border-collapse: collapse; -} -.kanji-glyph-data>tbody>tr>* { - border-top: var(--thin-border-size) solid var(--medium-border-color); - text-align: left; - vertical-align: top; - padding: 0.36em; - margin: 0; -} -.kanji-info-table { - width: 100%; -} -.kanji-info-table>tbody>tr>th, -.kanji-info-table>tbody>tr>td { - text-align: left; - vertical-align: top; - padding: 0; - margin: 0; -} -.kanji-info-table>tbody>tr>td { - text-align: right; -} -.kanji-glyph-data dl { - margin-top: 0; - margin-bottom: 1.4em; -} -.kanji-glyph-data dd { - margin-left: 0; -} -.kanji-gloss-list { - margin: 0; - padding: 0 0 0 var(--list-padding1); - list-style-type: decimal; -} -.kanji-gloss-list[data-count='0'], -.kanji-gloss-list[data-count='1'] { - padding-left: 0; - list-style-type: none; -} -.kanji-gloss-item::marker { - color: var(--text-color-light3); -} -.kanji-gloss-content { - white-space: pre-line; -} -.kanji-tag-list { - position: relative; -} -.entry[data-type=kanji] .entry-body-section[data-section-type=frequencies] { - position: relative; -} - - -/* Progress bar */ -@keyframes progress-bar-indeterminant1a { - 0% { left: 0; } - 25% { left: 0; } - 75% { left: 100%; } - 100% { left: 100%; } -} -@keyframes progress-bar-indeterminant1b { - 0% { right: 100%; } - 50% { right: 0; } - 100% { right: 0; } -} -@keyframes progress-bar-indeterminant2a { - 0% { left: 0; } - 25% { left: 0; } - 100% { left: 100%; } -} -@keyframes progress-bar-indeterminant2b { - 0% { right: 100%; } - 75% { right: 0; } - 100% { right: 0; } -} -.progress-bar-indeterminant { - display: block; - width: 100%; - height: 0; - background-color: var(--progress-bar-indicator-color); - position: relative; - transition: - height var(--progress-bar-active-transition-duration) linear var(--progress-bar-active-transition-duration), - background-color var(--progress-bar-active-transition-duration) linear; -} -.progress-bar-indeterminant[data-active=true] { - height: var(--progress-bar-height); - background-color: var(--progress-bar-track-color); - transition: - height var(--progress-bar-active-transition-duration) linear var(--progress-bar-active-transition-start-delay), - background-color 0s linear; -} -.progress-bar-indeterminant[hidden]:not([data-active=true]) { - display: none; -} -.progress-bar-indeterminant::before, -.progress-bar-indeterminant::after { - content: ''; - display: block; - position: absolute; - left: 0; - top: 0; - bottom: 0; - right: 100%; - background-color: var(--progress-bar-indicator-color); - animation: none; -} -.progress-bar-indeterminant:not([hidden])::before { - animation: - progress-bar-indeterminant1a var(--progress-bar-animation-duration) infinite ease-in-out var(--progress-bar-active-transition-start-delay), - progress-bar-indeterminant1b var(--progress-bar-animation-duration) infinite ease-in-out var(--progress-bar-active-transition-start-delay); -} -.progress-bar-indeterminant:not([hidden])::after { - animation: - progress-bar-indeterminant2a var(--progress-bar-animation-duration) infinite ease-in-out calc(var(--progress-bar-active-transition-start-delay) + 0.375 * var(--progress-bar-animation-duration)), - progress-bar-indeterminant2b var(--progress-bar-animation-duration) infinite ease-in-out calc(var(--progress-bar-active-transition-start-delay) + 0.375 * var(--progress-bar-animation-duration)); -} -.top-progress-bar-container { - position: sticky; - top: 0; - height: 0; - pointer-events: none; - z-index: 10; -} - - -/* Frame resizer */ -.frame-resizer-container { - position: fixed; - bottom: 0; - right: 0; - z-index: 100; - background: transparent; - pointer-events: none; - user-select: none; -} -.frame-resizer-sizer1 { - padding-top: 100%; - line-height: 0; -} -.frame-resizer-sizer2 { - display: inline-block; - overflow-x: hidden; - overflow-y: scroll; - vertical-align: bottom; -} -.frame-resizer-sizer2.frame-resizer-sizer2-with-min-size { - min-width: 1em; -} -.frame-resizer-svg { - display: block; - position: absolute; - bottom: 0; - right: 0; - width: 75%; - height: 75%; -} -.frame-resizer-handle { - fill: var(--text-color); - opacity: 0.125; - cursor: se-resize; - pointer-events: auto; - transition: - fill var(--animation-duration) linear, - opacity var(--animation-duration) linear; -} -.frame-resizer-handle:hover, -:root[data-is-resizing=true] .frame-resizer-handle { - fill: var(--accent-color); - opacity: 1; -} - - -/* Footer notifications */ -.footer-notification { - display: flex; - flex-flow: row nowrap; - align-items: flex-start; - pointer-events: auto; - border-radius: 0.25em; - background-color: var(--notification-background-color); - box-shadow: 0 0.125em 0.25em 0 var(--notification-shadow-color); - color: var(--notification-text-color); - margin: 0.5em; - padding: 0; - transition: opacity var(--animation-duration) ease-out; - position: relative; - overflow: auto; - max-height: calc(0.5em * 2 + var(--line-height) * 4 * 1em); -} -.footer-notification[hidden] { - display: flex; - opacity: 0; - transition: opacity var(--animation-duration) ease-in; -} -.footer-notification-body { - flex: 1 1 auto; - padding: 0.5em 0.75em; - white-space: pre-line; -} -.footer-notification-close-button-container { - align-self: stretch; - display: flex; - flex-flow: column nowrap; - align-items: center; - justify-content: center; - padding: 0.25em 0.75em 0.25em 0; - position: sticky; - top: 0; - right: 0; -} -button.footer-notification-close-button { - --button-content-color: var(--notification-text-color); - --button-border-color: transparent; - --button-background-color: transparent; - --button-shadow: none; - - --button-hover-border-color: transparent; - --button-hover-background-color: transparent; - --button-hover-shadow: none; - - --button-active-border-color: transparent; - --button-active-background-color: transparent; - --button-active-shadow: none; - - --button-focus-visible-border-color: transparent; - --button-focus-visible-background-color: var(--notification-background-color-light); - --button-focus-visible-shadow: none; - - flex: 0 0 auto; - margin: -0.25em; - padding: 0.5em; - border-style: none; - border-width: 0; - cursor: pointer; - font-size: inherit; -} -.footer-notification-close-button-icon { - display: block; - width: calc(16em / var(--font-size-no-units)); - height: calc(16em / var(--font-size-no-units)); - background-color: var(--button-content-color); -} -.tag-details-disambiguation-list>.tag-details-disambiguation:not(:last-child)::after { - content: var(--disambiguation-separator); -} -.footer-notification a { - color: var(--notification-text-color); -} - - -/* Overlays */ -.overlay-panel-container { - pointer-events: none; - position: absolute; - left: 0; - top: 0; - bottom: 0; - right: 0; - z-index: 6; -} -.overlay-panel { - pointer-events: auto; - background-color: var(--background-color); - display: block; - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: var(--content-width); - max-width: 100%; - box-sizing: border-box; - margin: 0 auto; - padding: var(--main-content-vertical-padding) var(--main-content-horizontal-padding); - overflow-y: scroll; - transform: none; - opacity: 1; - visibility: visible; - transition: - opacity var(--animation-duration2) ease-out, - visibility 0s linear, - transform var(--animation-duration2) ease-out; -} -.overlay-panel[hidden] { - transform: translate(var(--overlay-panel-translate-distance), 0); - opacity: 0; - visibility: hidden; - transition: - opacity var(--animation-duration2) ease-in, - visibility 0s linear var(--animation-duration2), - transform var(--animation-duration2) ease-in; -} -.overlay-panel[hidden]:not(.hidden-animating) { - display: none; -} -:root[data-popup-action-bar-location=left] .overlay-panel[hidden] { - transform: translate(calc(-1 * var(--overlay-panel-translate-distance)), 0); -} -:root[data-popup-action-bar-location=top] .overlay-panel[hidden] { - transform: translate(0, calc(-1 * var(--overlay-panel-translate-distance))); -} -:root[data-popup-action-bar-location=bottom] .overlay-panel[hidden] { - transform: translate(0, var(--overlay-panel-translate-distance)); -} -.overlay-panel-inner { - padding: var(--entry-vertical-padding) var(--entry-horizontal-padding); -} - - -/* Profile panel */ -.profile-list { - display: flex; - flex-flow: column nowrap; - align-items: stretch; -} -.profile-list-item { - display: flex; - flex-flow: row nowrap; - align-items: center; - cursor: pointer; -} -.profile-list-item-selection { - flex: 0 0 auto; - text-align: center; - padding: 0.25em 0.5em 0.25em 0; -} -.profile-list-item-name { - flex: 1 1 auto; - padding: 0.25em 0; -} - - -/* Audio menu */ -.audio-button-popup-menu[data-show-icons=false] .popup-menu-item-audio-button .popup-menu-item-icon { - display: none; -} -.audio-button-popup-menu .popup-menu-item-icon[data-icon=checkmark] { - background-color: var(--success-color); -} -.audio-button-popup-menu .popup-menu-item-icon[data-icon=cross] { - background-color: var(--danger-color); -} -.audio-button-popup-menu .popup-menu-item-group[data-source-in-options=false][data-valid=null] .popup-menu-item { - color: var(--text-color-light1); -} -.popup-menu-item-audio-button .popup-menu-item-label { - padding-right: 2.5em; -} -.popup-menu-item-set-primary-audio-button { - flex-flow: row nowrap; - align-items: center; - justify-content: center; - position: absolute; - right: 0; - top: 0; - bottom: 0; - width: 2.5em; -} -.popup-menu-item-set-primary-audio-button:not([hidden]) { - display: flex; -} -.popup-menu-item-set-primary-audio-button .popup-menu-item-icon { - opacity: 0; - transition: opacity var(--animation-duration) linear; -} -.popup-menu-item-audio-button:hover~.popup-menu-item-set-primary-audio-button .popup-menu-item-icon, -.popup-menu-item-audio-button:active~.popup-menu-item-set-primary-audio-button .popup-menu-item-icon, -.popup-menu-item-audio-button:focus~.popup-menu-item-set-primary-audio-button .popup-menu-item-icon { - opacity: 0.25; -} -.popup-menu-item-set-primary-audio-button:hover .popup-menu-item-icon, -.popup-menu-item-set-primary-audio-button:active .popup-menu-item-icon, -.popup-menu-item-set-primary-audio-button:focus .popup-menu-item-icon { - opacity: 0.375; -} -.popup-menu-item-set-primary-audio-button:focus:not(:focus-visible) .popup-menu-item-icon { - opacity: 0; -} -.popup-menu-item-audio-button:hover~.popup-menu-item-set-primary-audio-button:not(:focus-visible) .popup-menu-item-icon, -.popup-menu-item-audio-button:active~.popup-menu-item-set-primary-audio-button:not(:focus-visible) .popup-menu-item-icon, -.popup-menu-item-audio-button:focus~.popup-menu-item-set-primary-audio-button:not(:focus-visible) .popup-menu-item-icon { - opacity: 0.25; -} -.popup-menu-item-set-primary-audio-button:hover:not(:focus-visible) .popup-menu-item-icon, -.popup-menu-item-set-primary-audio-button:active:not(:focus-visible) .popup-menu-item-icon { - opacity: 0.375; -} -.popup-menu-item-group[data-is-primary-card-audio=true]>.popup-menu-item-audio-button~.popup-menu-item-set-primary-audio-button .popup-menu-item-icon, -.popup-menu-item-group[data-is-primary-card-audio=true]>.popup-menu-item-audio-button~.popup-menu-item-set-primary-audio-button:hover .popup-menu-item-icon, -.popup-menu-item-group[data-is-primary-card-audio=true]>.popup-menu-item-audio-button~.popup-menu-item-set-primary-audio-button:active .popup-menu-item-icon, -.popup-menu-item-group[data-is-primary-card-audio=true]>.popup-menu-item-audio-button~.popup-menu-item-set-primary-audio-button:focus .popup-menu-item-icon { - opacity: 1; -} - - -/* Anki errors */ -.anki-note-error-list { - margin: 0; - padding-left: 1.5em; - list-style: disc; -} - - -/* Conditional styles */ -:root:not([data-enable-search-tags=true]) .tag[data-category=search] { - display: none; -} -:root[data-compact-tags=true] .tag[data-redundant=true] { - display: none; -} - -:root:not([data-debug=true]) .action-button[data-action=menu] { - display: none; -} -:root[data-anki-enabled=false] .action-button[data-action=view-note], -:root[data-anki-enabled=false] .action-button[data-action=save-note] { - display: none; -} -:root[data-audio-enabled=false] .action-button[data-action=play-audio] { - display: none; -} -:root[data-glossary-layout-mode=compact] .definition-tag-list, -:root[data-glossary-layout-mode=compact] .definition-disambiguation-list:not([data-count='0']) { - display: inline; -} -:root[data-glossary-layout-mode=compact] .gloss-list { - display: inline; - list-style: none; - padding-left: 0; -} -:root[data-glossary-layout-mode=compact] .gloss-item { - display: inline; -} -:root[data-glossary-layout-mode=compact] .gloss-item:not(:first-child)::before { - white-space: pre-wrap; - content: var(--compact-list-separator); - display: inline; - color: var(--text-color-light3); -} -:root[data-glossary-layout-mode=compact] .gloss-content { - display: inline; -} -:root[data-glossary-layout-mode=compact] .gloss-separator { - display: inline; -} - -:root[data-show-pronunciation-text=true] .pronunciation-disambiguation-list[data-term-count='0'], -:root[data-show-pronunciation-text=true] .pronunciation-disambiguation[data-type=reading] { - display: none; -} -:root[data-show-pronunciation-text=false] .pronunciation[data-pronunciation-type=pitch-accent]>.pronunciation-representation-list>.pronunciation-text-container { - display: none; -} -:root[data-show-pronunciation-downstep-position=false] .pronunciation-downstep-notation-container { - display: none; -} -:root[data-show-pronunciation-graph=false] .pronunciation-graph-container { - display: none; -} - -:root[data-glossary-layout-mode=compact][data-show-pronunciation-graph=false] .pronunciation-list:not([data-has-tags=true]) { - display: inline; - list-style: none; - padding-left: 0; -} -:root[data-glossary-layout-mode=compact][data-show-pronunciation-graph=false] .pronunciation-list:not([data-has-tags=true]) .pronunciation { - display: inline; -} -:root[data-glossary-layout-mode=compact][data-show-pronunciation-graph=false] .pronunciation-list:not([data-has-tags=true]) .pronunciation:not(:first-child)::before { - white-space: pre-wrap; - content: var(--compact-list-separator); - display: inline; - color: var(--text-color-light3); -} - -:root[data-popup-display-mode=full-width] .frame-resizer-container { - display: none; -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/material.css b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/material.css deleted file mode 100644 index 9013365..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/material.css +++ /dev/null @@ -1,1343 +0,0 @@ -/* - * Copyright (C) 2023-2024 Yomitan Authors - * Copyright (C) 2020-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 this program. If not, see . - */ - -/* Variables */ -:root { - --font-size-no-units: 14; - --font-size: calc(1px * var(--font-size-no-units)); - - --font-size-small-no-units: 12; - --font-size-small: calc(1em * var(--font-size-small-no-units) / var(--font-size-no-units)); - - --line-height-no-units: 20; - --line-height: calc(var(--line-height-no-units) / var(--font-size-no-units)); - - --animation-duration: 0.125s; - --animation-duration2: calc(var(--animation-duration) * 2); - - --checkbox-size: calc(16em / var(--font-size-no-units)); - --icon-button-size: calc(36em / var(--font-size-no-units)); - --radio-size: calc(20em / var(--font-size-no-units)); - --toggle-size: calc(16em / var(--font-size-no-units)); - - --input-font-size-no-units: 1; - --input-font-size: calc(1em * var(--input-font-size-no-units)); - --input-spacing: calc(10em / var(--font-size-no-units)); - --input-width: calc(100em / (var(--font-size-no-units) * var(--input-font-size-no-units)) - var(--input-spacing) / 2); - --input-width-large: calc(200em / (var(--font-size-no-units) * var(--input-font-size-no-units))); - --input-height: calc(32em / (var(--font-size-no-units) * var(--input-font-size-no-units))); - --input-border-radius: 0.25em; - --textarea-line-height: 1.25em; - --textarea-padding: 0.5em; - - --material-arrow-dimension1: calc(5em / var(--font-size-no-units)); - --material-arrow-dimension2: calc(10em / var(--font-size-no-units)); - - --button-border-radius: 0.3em; - --button-default-shadow-params: 0 0.0625em 0.125em 0; - - --thin-border-size: calc(1em / var(--font-size-no-units)); - - --menu-border-radius: 0.3em; - --menu-shadow: 0 1px 3px 1px var(--shadow-color), 0 2px 4px 3px var(--shadow-color); - - --selectable-indicator-transition1: - transform 0s ease-in-out var(--animation-duration2), - background-color var(--animation-duration2) ease-in-out, - opacity var(--animation-duration2) ease-in-out, - visibility 0s ease-in-out var(--animation-duration2); - --selectable-indicator-transition2: - transform var(--animation-duration2) ease-in-out, - background-color var(--animation-duration2) ease-in-out, - opacity var(--animation-duration2) ease-in-out, - visibility var(--animation-duration2) ease-in-out; - - --text-color: #222222; - --text-color-light1: #555555; - --text-color-light2: #666666; - --text-color-light3: #777777; - --text-color-light4: #888888; - --background-color: #f8f9fa; - --background-color-light: #ffffff; - --background-color-dark1: #eeeeee; - - --shadow-color: rgba(0, 0, 0, 0.185); - --shadow-color-off: rgba(0, 0, 0, 0); - --shadow-color-light: rgba(0, 0, 0, 0.085); - - --accent-color: #1a73e8; - --accent-color-light: #4a91ed; - --accent-color-lighter: #8db9f4; - --accent-color-lightest: #a7c9f6; - --accent-color-dark: #1060c0; - --accent-color-transparent0: rgba(28, 116, 233, 0); - --accent-color-transparent5: rgba(28, 116, 233, 0.05); - --accent-color-transparent25: rgba(28, 116, 233, 0.25); - - --danger-color: #c83c28; - --danger-color-light: #dd6755; - --danger-color-lighter: #e68d7f; - --danger-color-lightest: #eeb3aa; - --danger-color-transparent0: rgba(200, 60, 40, 0); - --danger-color-transparent5: rgba(200, 60, 40, 0.05); - --danger-color-transparent25: rgba(200, 60, 40, 0.25); - - --success-color: #51ab30; - - --disabled-color: #aaaaaa; - --disabled-color-light: #dddddd; - --disabled-color-lighter: #eeeeee; - - --input-background-color: #f2f2f2; - --input-background-color-dark: #dddddd; - --input-background-color-darker: #cccccc; - --input-outline-color: var(--text-color); - - --button-default-text-color: #ffffff; - --button-default-border-color: #cccccc; - --button-default-icon-color: #333333; - --button-default-icon-color-light: #666666; - - --checkbox-checked-color: var(--accent-color); - --checkbox-unchecked-color: #666666; - --checkbox-check-color: var(--background-color-light); - --checkbox-disabled-color: var(--disabled-color); - - --toggle-track-color: #cccccc; - --toggle-knob-color: var(--background-color-light); - - --selectable-indicator-color: rgba(160, 160, 160, 0.25); - - --menu-item-hover-color: #bbbbbb; - --menu-item-active-color: #aaaaaa; -} -:root[data-theme=dark] { - --text-color: #d4d4d4; - --text-color-light1: #aaaaaa; - --text-color-light2: #999999; - --text-color-light3: #888888; - --text-color-light4: #777777; - --background-color: #1e1e1e; - --background-color-light: #0a0a0a; - --background-color-dark1: #333333; - - --shadow-color: rgba(105, 105, 105, 0.185); - --shadow-color-off: rgba(255, 255, 255, 0); - --shadow-color-light: rgba(255, 255, 255, 0.085); - - --accent-color: #4a91ed; - --accent-color-light: #1a73e8; - --accent-color-lighter: #135dbe; - --accent-color-lightest: #0e4690; - --accent-color-transparent0: rgb(78, 172, 253, 0); - --accent-color-transparent5: rgb(78, 172, 253, 0.05); - --accent-color-transparent25: rgb(78, 172, 253, 0.25); - - --danger-color: #dd6755; - --danger-color-light: #c83c28; - --danger-color-lighter: #9e301f; - --danger-color-lightest: #732317; - --danger-color-transparent0: rgba(221, 103, 85, 0); - --danger-color-transparent5: rgba(221, 103, 85, 0.05); - --danger-color-transparent25: rgba(221, 103, 85, 0.25); - - --success-color: #75cf54; - - --disabled-color: #444444; - --disabled-color-light: #585858; - --disabled-color-lighter: #777777; - - --input-background-color: #2f2f2f; - --input-background-color-dark: #383838; - --input-background-color-darker: #484848; - --input-outline-color: var(--text-color); - - --button-default-text-color: #000000; - --button-default-border-color: #333333; - --button-default-icon-color: #cccccc; - --button-default-icon-color-light: #999999; - - --checkbox-unchecked-color: #999999; - - --toggle-track-color: #cccccc; - --toggle-knob-color: #ffffff; - - --selectable-indicator-color: rgba(100, 100, 100, 0.25); - - --menu-item-hover-color: #333333; - --menu-item-active-color: #444444; -} - - -/* Root styles */ -:root { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: var(--font-size); - line-height: var(--line-height); - height: 100%; -} -body { - margin: 0; - border: 0; - padding: 0; - height: 100%; - font-family: inherit; - font-size: inherit; - line-height: inherit; - background-color: var(--background-color); - color: var(--text-color); -} - - -/* Text styles */ -.light { - color: var(--text-color-light2); -} -.danger-text { - color: var(--danger-color); -} -.success-text { - color: var(--success-color); -} - -/* Icons */ -.icon { - --icon-image: none; - --icon-size: contain; - - -webkit-mask-repeat: no-repeat; - -webkit-mask-position: center center; - -webkit-mask-mode: alpha; - -webkit-mask-size: var(--icon-size); - -webkit-mask-image: var(--icon-image); - mask-repeat: no-repeat; - mask-position: center center; - mask-mode: alpha; - mask-size: var(--icon-size); - mask-image: var(--icon-image); -} -.icon.color-icon { - -webkit-mask-image: none; - mask-image: none; - background-repeat: no-repeat; - background-position: center center; - background-size: var(--icon-size); - background-image: var(--icon-image); -} -.icon[data-icon=none] { --icon-image: linear-gradient(transparent, transparent); } -.icon[data-icon=profile] { --icon-image: url(/images/profile.svg); } -.icon[data-icon=cog] { --icon-image: url(/images/cog.svg); } -.icon[data-icon=palette] { --icon-image: url(/images/palette.svg); } -.icon[data-icon=popup] { --icon-image: url(/images/popup.svg); } -.icon[data-icon=speaker] { --icon-image: url(/images/speaker.svg); } -.icon[data-icon=scanning] { --icon-image: url(/images/scanning.svg); } -.icon[data-icon=text-parsing] { --icon-image: url(/images/text-parsing.svg); } -.icon[data-icon=translation] { --icon-image: url(/images/translation.svg); } -.icon[data-icon=book] { --icon-image: url(/images/book.svg); } -.icon[data-icon=note-card] { --icon-image: url(/images/note-card.svg); } -.icon[data-icon=keyboard] { --icon-image: url(/images/keyboard.svg); } -.icon[data-icon=backup] { --icon-image: url(/images/backup.svg); } -.icon[data-icon=lock] { --icon-image: url(/images/lock.svg); } -.icon[data-icon=question-mark] { --icon-image: url(/images/question-mark.svg); } -.icon[data-icon=popup-size] { --icon-image: url(/images/popup-size.svg); } -.icon[data-icon=hamburger-menu] { --icon-image: url(/images/hamburger-menu.svg); } -.icon[data-icon=kebab-menu] { --icon-image: url(/images/kebab-menu.svg); } -.icon[data-icon=mouse] { --icon-image: url(/images/mouse.svg); } -.icon[data-icon=exclamation-point-short] { --icon-image: url(/images/exclamation-point-short.svg); } -.icon[data-icon=magnifying-glass] { --icon-image: url(/images/magnifying-glass.svg); } -.icon[data-icon=collapse] { --icon-image: url(/images/collapse.svg); } -.icon[data-icon=expand] { --icon-image: url(/images/expand.svg); } -.icon[data-icon=window] { --icon-image: url(/images/window.svg); } -.icon[data-icon=cross] { --icon-image: url(/images/cross.svg); } -.icon[data-icon=checkmark] { --icon-image: url(/images/checkmark.svg); } -.icon[data-icon=sentence-parsing] { --icon-image: url(/images/sentence-parsing.svg); } -.icon[data-icon=question-mark] { --icon-image: url(/images/question-mark.svg); } -.icon[data-icon=question-mark-circle] { --icon-image: url(/images/question-mark-circle.svg); } -.icon[data-icon=question-mark-thick] { --icon-image: url(/images/question-mark-thick.svg); } -.icon[data-icon=left-chevron] { --icon-image: url(/images/left-chevron.svg); } -.icon[data-icon=right-chevron] { --icon-image: url(/images/right-chevron.svg); } -.icon[data-icon=up-chevron] { --icon-image: url(/images/up-chevron.svg); } -.icon[data-icon=down-chevron] { --icon-image: url(/images/down-chevron.svg); } -.icon[data-icon=double-down-chevron] { --icon-image: url(/images/double-down-chevron.svg); } -.icon[data-icon=plus-thick] { --icon-image: url(/images/plus-thick.svg); } -.icon[data-icon=clipboard] { --icon-image: url(/images/clipboard.svg); } -.icon[data-icon=key] { --icon-image: url(/images/key.svg); } -.icon[data-icon=tag] { --icon-image: url(/images/tag.svg); } -.icon[data-icon=accessibility] { --icon-image: url(/images/accessibility.svg); } -.icon[data-icon=connection] { --icon-image: url(/images/connection.svg); } -.icon[data-icon=external-link] { --icon-image: url(/images/external-link.svg); } -.icon[data-icon=monitor] { --icon-image: url(/images/monitor.svg); } -.icon[data-icon=material-down-arrow] { - --icon-image: url(/images/material-down-arrow.svg); - --icon-size: var(--material-arrow-dimension2) var(--material-arrow-dimension1); -} -.icon[data-icon=material-right-arrow] { - --icon-image: url(/images/material-right-arrow.svg); - --icon-size: var(--material-arrow-dimension1) var(--material-arrow-dimension2); -} - - -/* Checkbox */ -label.checkbox { - cursor: default; -} -.checkbox { - font-size: var(--checkbox-size); - display: inline-block; -} -.checkbox>input[type=checkbox] { - opacity: 0; - width: 0; - height: 0; - display: block; - margin: 0; - padding: 0; - border: none; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; -} -.checkbox-body { - display: block; - cursor: pointer; - width: 1em; - height: 1em; - position: relative; -} -.checkbox>input[type=checkbox]:disabled+.checkbox-body { - cursor: default; -} -.checkbox-fill, -.checkbox-border, -.checkbox-check { - display: block; - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - mask-repeat: no-repeat; - mask-position: center center; - mask-mode: alpha; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - -webkit-mask-position: center center; - -webkit-mask-mode: alpha; - -webkit-mask-size: contain; - transition: opacity var(--animation-duration) linear, background-color var(--animation-duration) linear; -} -.checkbox-fill { - mask-image: url(/images/checkbox-fill.svg); - -webkit-mask-image: url(/images/checkbox-fill.svg); - background-color: var(--checkbox-unchecked-color); - opacity: 0; -} -.checkbox-border { - mask-image: url(/images/checkbox-border.svg); - -webkit-mask-image: url(/images/checkbox-border.svg); - background-color: var(--checkbox-unchecked-color); - opacity: 1; -} -.checkbox-check { - mask-image: url(/images/checkbox-check.svg); - -webkit-mask-image: url(/images/checkbox-check.svg); - background-color: var(--checkbox-check-color); - opacity: 0; -} -.checkbox>input[type=checkbox]:checked+.checkbox-body>.checkbox-fill { - background-color: var(--checkbox-checked-color); - opacity: 1; -} -.checkbox>input[type=checkbox]:checked+.checkbox-body>.checkbox-border { - background-color: var(--checkbox-checked-color); - opacity: 1; -} -.checkbox>input[type=checkbox]:checked+.checkbox-body>.checkbox-check { - background-color: var(--checkbox-check-color); - opacity: 1; -} -.checkbox>input[type=checkbox]:disabled+.checkbox-body>.checkbox-fill { - opacity: 0; -} -.checkbox>input[type=checkbox]:disabled+.checkbox-body>.checkbox-border { - background-color: var(--checkbox-disabled-color); - opacity: 1; -} -.checkbox>input[type=checkbox]:disabled+.checkbox-body>.checkbox-check { - background-color: var(--checkbox-disabled-color); -} -.checkbox-body::after { - position: absolute; - display: block; - content: ''; - left: -0.75em; - top: -0.75em; - right: -0.75em; - bottom: -0.75em; - border-radius: 2.5em; - background-color: var(--selectable-indicator-color); - pointer-events: none; - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} -.checkbox>input[type=checkbox]:focus+.checkbox-body::after, -.checkbox>input[type=checkbox]:active+.checkbox-body::after, -.checkbox:active>input[type=checkbox]+.checkbox-body::after { - transform: scale(1); - opacity: 1; - visibility: visible; - transition: var(--selectable-indicator-transition2); -} -.checkbox>input[type=checkbox]:focus:not(:focus-visible)+.checkbox-body::after { - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} -.checkbox>input[type=checkbox]:focus-visible+.checkbox-body::after, -.checkbox>input[type=checkbox]:focus-visible:focus+.checkbox-body::after, -.checkbox>input[type=checkbox]:focus-visible:active+.checkbox-body::after, -.checkbox:active>input[type=checkbox]:focus-visible+.checkbox-body::after { - transform: scale(1); - opacity: 1; - visibility: visible; - transition: var(--selectable-indicator-transition2); -} -.checkbox>input[type=checkbox]:focus+.checkbox-body::after { - opacity: 0.5; -} -.checkbox>input[type=checkbox]:active:focus+.checkbox-body::after, -.checkbox:active>input[type=checkbox]:focus+.checkbox-body::after { - opacity: 1; -} -.checkbox>input[type=checkbox]:disabled+.checkbox-body::after { - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} - - -/* Toggle switch */ -label.toggle { - cursor: default; -} -.toggle { - font-size: var(--toggle-size); - display: inline-block; -} -.toggle>input[type=checkbox] { - opacity: 0; - width: 0; - height: 0; - display: block; - margin: 0; - padding: 0; - border: none; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; -} -.toggle-body { - display: block; - cursor: pointer; - width: 2em; - height: 1em; - position: relative; -} -.toggle-track { - display: block; - position: absolute; - left: 0.125em; - right: 0.125em; - top: 0.125em; - bottom: 0.125em; - background-color: var(--toggle-track-color); - border-radius: 0.4375em; - transition: background-color var(--animation-duration) ease-in-out; -} -.toggle-knob { - display: block; - position: absolute; - left: 0; - top: 0; - width: 1em; - height: 1em; - background-color: var(--toggle-knob-color); - border-radius: 0.5em; - box-shadow: - 0 0.0625em 0.25em 0 var(--shadow-color), - 0 0.125em 0.125em 0 var(--shadow-color); - transition: - transform var(--animation-duration) ease-in-out, - background-color var(--animation-duration) ease-in-out; -} -.toggle-body>.toggle-knob::after { - position: absolute; - display: block; - content: ''; - left: -0.75em; - top: -0.75em; - right: -0.75em; - bottom: -0.75em; - border-radius: 2.5em; - background-color: var(--selectable-indicator-color); - pointer-events: none; - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} -.toggle>input[type=checkbox]:focus+.toggle-body>.toggle-knob::after, -.toggle>input[type=checkbox]:active+.toggle-body>.toggle-knob::after, -.toggle:active>input[type=checkbox]+.toggle-body>.toggle-knob::after { - transform: scale(1); - opacity: 1; - visibility: visible; - transition: var(--selectable-indicator-transition2); -} -.toggle>input[type=checkbox]+.toggle-body>.toggle-knob::after { - opacity: 0.5; -} -.toggle>input[type=checkbox]:active+.toggle-body>.toggle-knob::after, -.toggle:active>input[type=checkbox]+.toggle-body>.toggle-knob::after { - opacity: 1; -} -.toggle>input[type=checkbox]:focus:not(:focus-visible)+.toggle-body>.toggle-knob::after { - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} -.toggle>input[type=checkbox]:focus-visible+.toggle-body>.toggle-knob::after { - transform: scale(1); - opacity: 1; - visibility: visible; - transition: var(--selectable-indicator-transition2); -} -.toggle>input[type=checkbox]:checked+.toggle-body>.toggle-knob { - transform: translateX(1em); -} -.toggle>input[type=checkbox]:checked+.toggle-body>.toggle-track { - background-color: var(--accent-color-lighter); -} -.toggle>input[type=checkbox]:checked+.toggle-body>.toggle-knob { - background-color: var(--accent-color); -} -.toggle>input[type=checkbox]:focus:checked+.toggle-body>.toggle-knob::after, -.toggle>input[type=checkbox]:active:checked+.toggle-body>.toggle-knob::after, -.toggle:active>input[type=checkbox]:checked+.toggle-body>.toggle-knob::after { - background-color: var(--accent-color-transparent25); -} -.toggle>input[type=checkbox]:disabled+.toggle-body { - cursor: default; -} -.toggle>input[type=checkbox]:disabled+.toggle-body>.toggle-track { - background-color: var(--disabled-color-light); -} -.toggle>input[type=checkbox]:disabled+.toggle-body>.toggle-knob { - background-color: var(--disabled-color-lighter); -} -.toggle>input[type=checkbox]:disabled+.toggle-body>.toggle-knob::after { - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} - - -/* Radio button */ -label.radio { - cursor: default; -} -.radio { - display: inline-block; - vertical-align: middle; -} -.radio>input[type=radio] { - opacity: 0; - width: 0; - height: 0; - display: block; - margin: 0; - padding: 0; - border: none; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; -} -.radio-body { - cursor: pointer; - display: block; - position: relative; - width: var(--radio-size); - height: var(--radio-size); -} -.radio>input[type=radio]:disabled+.radio-body { - cursor: default; -} -.radio-border, -.radio-dot { - display: block; - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - background-color: var(--accent-color); - mask-repeat: no-repeat; - mask-position: center center; - mask-mode: alpha; - mask-size: var(--radio-size) var(--radio-size); - -webkit-mask-repeat: no-repeat; - -webkit-mask-position: center center; - -webkit-mask-mode: alpha; - -webkit-mask-size: var(--radio-size) var(--radio-size); -} -.radio-border { - mask-image: url(/images/radio-button.svg); - -webkit-mask-image: url(/images/radio-button.svg); -} -.radio-dot { - mask-image: url(/images/radio-button-dot.svg); - -webkit-mask-image: url(/images/radio-button-dot.svg); - opacity: 1; - transform: none; - transition: - transform var(--animation-duration2) ease-in-out, - opacity var(--animation-duration2) ease-in-out, - visibility var(--animation-duration2) ease-in-out; -} -.radio>input[type=radio]:disabled+.radio-body>.radio-border, -.radio>input[type=radio]:disabled+.radio-body>.radio-dot { - background-color: var(--disabled-color); -} -.radio>input[type=radio]:not(:checked)+.radio-body>.radio-dot { - opacity: 0; - transform: scale(0); - transition: - transform 0s ease-in-out var(--animation-duration2), - opacity var(--animation-duration2) ease-in-out, - visibility 0s ease-in-out var(--animation-duration2); -} -.radio-body::after { - position: absolute; - display: block; - content: ''; - left: -0.75em; - top: -0.75em; - right: -0.75em; - bottom: -0.75em; - border-radius: 2.5em; - background-color: var(--selectable-indicator-color); - pointer-events: none; - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} -.radio>input[type=radio]:focus+.radio-body::after, -.radio>input[type=radio]:active+.radio-body::after, -.radio:active>input[type=radio]+.radio-body::after { - transform: scale(1); - opacity: 1; - visibility: visible; - transition: var(--selectable-indicator-transition2); -} -.radio>input[type=radio]:focus:not(:focus-visible)+.radio-body::after { - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} -.radio>input[type=radio]:focus-visible+.radio-body::after { - transform: scale(1); - opacity: 1; - visibility: visible; - transition: var(--selectable-indicator-transition2); -} -.radio>input[type=radio]:focus+.radio-body::after { - opacity: 0.5; -} -.radio>input[type=radio]:active:focus+.radio-body::after, -.radio:active>input[type=radio]:focus+.radio-body::after { - opacity: 1; -} -.radio>input[type=radio]:disabled+.radio-body::after { - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} -.radio-label { - cursor: pointer; - white-space: nowrap; -} -.radio-label>.radio { - vertical-align: middle; -} -.radio-label>.radio-label-text { - display: inline-block; - margin-left: 0.5em; - vertical-align: middle; - white-space: normal; -} - - -/* Material design select */ -select { - width: var(--input-width-large); - height: var(--input-height); - line-height: var(--line-height); - border: 0; - border-radius: var(--input-border-radius); - box-sizing: border-box; - padding: 0 0.5em; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; - background-image: url(/images/material-down-arrow.svg); - background-repeat: no-repeat; - background-position: right calc(10em / var(--font-size-no-units)) center; - background-color: var(--input-background-color); - background-size: var(--material-arrow-dimension2) var(--material-arrow-dimension1); - cursor: pointer; - color: var(--text-color); - font-size: var(--input-font-size); -} -select::-ms-expand { - display: none; -} - - -/* Material design inputs */ -input[type=text], -input[type=number], -input[type=password] { - width: var(--input-width); - height: var(--input-height); - line-height: var(--line-height); - color: var(--text-color); - font-size: var(--input-font-size); - background-color: var(--input-background-color); - border: none; - border-radius: var(--input-border-radius); - box-sizing: border-box; - padding: 0 0.5em; - appearance: textfield; - -moz-appearance: textfield; - -webkit-appearance: textfield; -} -input[type=number]::-webkit-inner-spin-button, -input[type=number]::-webkit-outer-spin-button { - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; - margin: 0; -} -input[type=text], -input[type=password] { - width: var(--input-width-large); -} -textarea { - box-sizing: border-box; - padding: var(--textarea-padding); - font-family: 'Courier New', Courier, monospace; - color: var(--text-color); - font-size: var(--input-font-size); - background-color: var(--input-background-color); - border-radius: var(--input-border-radius); - line-height: var(--textarea-line-height); - border: var(--thin-border-size) solid var(--input-background-color); -} -select:invalid, -textarea:invalid, -input[type=text]:invalid, -input[type=number]:invalid, -input[type=password]:invalid, -select[data-invalid=true], -textarea[data-invalid=true], -input[type=text][data-invalid=true], -input[type=number][data-invalid=true], -input[type=password][data-invalid=true] { - border: var(--thin-border-size) solid var(--danger-color); -} -select, -textarea, -input[type=text], -input[type=number], -input[type=password] { - box-shadow: none; - transition: box-shadow calc(var(--animation-duration) / 2) linear; -} -select:focus, -textarea:focus, -input[type=text]:focus, -input[type=number]:focus, -input[type=password]:focus { - box-shadow: 0 0 0 calc(2em / var(--font-size-no-units)) var(--input-outline-color); - outline: none; -} -select:invalid:focus, -textarea:invalid:focus, -input[type=text]:invalid:focus, -input[type=number]:invalid:focus, -input[type=password]:invalid:focus, -select[data-invalid=true]:focus, -textarea[data-invalid=true]:focus, -input[type=text][data-invalid=true]:focus, -input[type=number][data-invalid=true]:focus, -input[type=password][data-invalid=true]:focus { - box-shadow: 0 0 0 calc(2em / var(--font-size-no-units)) var(--danger-color); - outline: none; -} -input[type=text].code, -input[type=number].code, -input[type=password].code { - font-family: 'Courier New', Courier, monospace; -} -textarea.no-wrap { - white-space: pre; - overflow-wrap: normal; -} - -/* Input groups */ -.input-group { - display: flex; - flex-flow: row nowrap; - align-items: stretch; -} -.input-group>input[type=text], -.input-group>input[type=number], -.input-group>input[type=password], -.input-group>button.input-button { - flex: 1 1 auto; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-right-style: none; - z-index: 1; -} -.input-suffix, -.button.input-suffix, -button.input-suffix { - display: flex; - flex-flow: row nowrap; - align-items: center; - border-radius: var(--input-border-radius); - border-style: none; - border-width: 0; - height: var(--input-height); - box-sizing: border-box; - padding: 0 0.5em; - position: relative; -} -.input-suffix:not(:first-child), -.button.input-suffix:not(:first-child), -button.input-suffix:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.input-suffix:not(:last-child), -.button.input-suffix:not(:last-child), -button.input-suffix:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-suffix:not(button) { - background-color: var(--input-background-color); -} -input[type=text]:invalid~.input-suffix:not(button), -input[type=number]:invalid~.input-suffix:not(button), -input[type=password]:invalid~.input-suffix:not(button), -input[type=text][data-invalid=true]~.input-suffix:not(button), -input[type=number][data-invalid=true]~.input-suffix:not(button), -input[type=password][data-invalid=true]~.input-suffix:not(button) { - border-color: var(--danger-color); - border-width: var(--thin-border-size); - border-style: solid; - border-left-style: none; - border-right-style: none; -} - - -/* Material design button */ -button, -.button { - --button-content-color: var(--button-default-text-color); - --button-border-color: var(--accent-color); - --button-background-color: var(--accent-color); - --button-shadow: none; - - --button-hover-content-color: var(--button-content-color); - --button-hover-border-color: var(--button-hover-background-color); - --button-hover-background-color: var(--accent-color-light); - --button-hover-shadow: var(--button-default-shadow-params) var(--shadow-color-light); - - --button-focus-content-color: var(--button-hover-content-color); - --button-focus-border-color: var(--button-hover-border-color); - --button-focus-background-color: var(--button-hover-background-color); - --button-focus-shadow: var(--button-hover-shadow); - - --button-focus-visible-content-color: var(--button-focus-content-color); - --button-focus-visible-border-color: var(--button-focus-border-color); - --button-focus-visible-background-color: var(--button-focus-background-color); - --button-focus-visible-shadow: var(--button-focus-shadow); - - --button-active-content-color: var(--button-content-color); - --button-active-border-color: var(--button-active-background-color); - --button-active-background-color: var(--accent-color-lighter); - --button-active-shadow: var(--button-default-shadow-params) var(--shadow-color); - - --button-disabled-content-color: var(--button-default-text-color); - --button-disabled-border-color: var(--disabled-color); - --button-disabled-background-color: var(--disabled-color); - --button-disabled-shadow: none; - - --button-current-content-color: var(--button-content-color); - --button-current-border-color: var(--button-border-color); - --button-current-background-color: var(--button-background-color); - --button-current-shadow: var(--button-shadow); - - --button-padding-vertical: 0.5em; - --button-padding-horizontal: 1em; - - border-width: var(--thin-border-size); - border-style: solid; - border-radius: var(--button-border-radius); - padding: var(--button-padding-vertical) var(--button-padding-horizontal); - font-weight: bold; - font-size: inherit; - font-family: inherit; - cursor: pointer; - transition: - background-color var(--animation-duration) ease-in-out, - box-shadow var(--animation-duration) ease-in-out, - border-color var(--animation-duration) ease-in-out; - -webkit-tap-highlight-color: transparent; - - color: var(--button-current-content-color); - border-color: var(--button-current-border-color); - background-color: var(--button-current-background-color); - box-shadow: var(--button-current-shadow); -} -button:hover, -.button:hover { - --button-current-content-color: var(--button-hover-content-color); - --button-current-border-color: var(--button-hover-border-color); - --button-current-background-color: var(--button-hover-background-color); - --button-current-shadow: var(--button-hover-shadow); -} -button:focus, -.button:focus { - --button-current-content-color: var(--button-focus-content-color); - --button-current-border-color: var(--button-focus-border-color); - --button-current-background-color: var(--button-focus-background-color); - --button-current-shadow: var(--button-focus-shadow); - - outline: none; -} -button:active, -.button:active { - --button-current-content-color: var(--button-active-content-color); - --button-current-border-color: var(--button-active-border-color); - --button-current-background-color: var(--button-active-background-color); - --button-current-shadow: var(--button-active-shadow); -} -button:focus:not(:focus-visible), -.button:focus:not(:focus-visible) { - --button-current-content-color: var(--button-content-color); - --button-current-border-color: var(--button-border-color); - --button-current-background-color: var(--button-background-color); - --button-current-shadow: var(--button-shadow); -} -button:focus-visible, -.button:focus-visible { - --button-current-content-color: var(--button-focus-visible-content-color); - --button-current-border-color: var(--button-focus-visible-border-color); - --button-current-background-color: var(--button-focus-visible-background-color); - --button-current-shadow: var(--button-focus-visible-shadow); -} -button:hover:focus-visible, -button:hover:not(:focus-visible), -.button:hover:focus-visible, -.button:hover:not(:focus-visible) { - --button-current-content-color: var(--button-hover-content-color); - --button-current-border-color: var(--button-hover-border-color); - --button-current-background-color: var(--button-hover-background-color); - --button-current-shadow: var(--button-hover-shadow); -} -button:focus:focus-visible, -.button:focus:focus-visible { - --button-current-content-color: var(--button-focus-visible-content-color); - --button-current-border-color: var(--button-focus-visible-border-color); - --button-current-background-color: var(--button-focus-visible-background-color); - --button-current-shadow: var(--button-focus-visible-shadow); -} -button:active:focus-visible, -button:active:not(:focus-visible), -.button:active:focus-visible, -.button:active:not(:focus-visible) { - --button-current-content-color: var(--button-active-content-color); - --button-current-border-color: var(--button-active-border-color); - --button-current-background-color: var(--button-active-background-color); - --button-current-shadow: var(--button-active-shadow); -} -button:disabled, -.button:disabled { - cursor: default; -} -button:disabled, -button:disabled:focus, -button:disabled:hover, -button:disabled:active, -.button:disabled, -.button:disabled:focus, -.button:disabled:hover, -.button:disabled:active { - --button-current-content-color: var(--button-disabled-content-color); - --button-current-border-color: var(--button-disabled-border-color); - --button-current-background-color: var(--button-disabled-background-color); - --button-current-shadow: var(--button-disabled-shadow); -} -button:disabled:focus-visible, -.button:disabled:focus-visible { - --button-current-content-color: var(--button-disabled-content-color); - --button-current-border-color: var(--button-disabled-border-color); - --button-current-background-color: var(--button-disabled-background-color); - --button-current-shadow: var(--button-disabled-shadow); -} - -/* Standard danger button */ -button.danger { - --button-border-color: var(--danger-color); - --button-background-color: var(--danger-color); - --button-hover-background-color: var(--danger-color-light); - --button-active-background-color: var(--danger-color-lighter); -} - -/* Low emphasis button */ -button.low-emphasis { - --button-content-color: var(--accent-color); - --button-border-color: var(--button-default-border-color); - --button-background-color: var(--accent-color-transparent0); - --button-hover-border-color: var(--accent-color); - --button-hover-background-color: var(--accent-color-transparent5); - --button-active-border-color: var(--accent-color); - --button-active-background-color: var(--accent-color-transparent25); - --button-disabled-content-color: var(--disabled-color); - --button-disabled-border-color: var(--disabled-color); - --button-disabled-background-color: var(--accent-color-transparent0); -} - -/* Low emphasis danger button */ -button.low-emphasis.danger { - --button-content-color: var(--danger-color); - --button-border-color: var(--button-default-border-color); - --button-background-color: var(--danger-color-transparent0); - --button-hover-border-color: var(--danger-color); - --button-hover-background-color: var(--danger-color-transparent5); - --button-active-border-color: var(--danger-color); - --button-active-background-color: var(--danger-color-transparent25); - --button-disabled-content-color: var(--disabled-color); - --button-disabled-border-color: var(--disabled-color); - --button-disabled-background-color: var(--danger-color-transparent0); -} - -/* Input button */ -button.input-button { - --button-content-color: var(--button-default-icon-color); - --button-border-color: var(--input-background-color); - --button-background-color: var(--input-background-color); - --button-hover-background-color: var(--input-background-color-dark); - --button-active-background-color: var(--input-background-color-darker); - - --button-padding-vertical: 0; - --button-padding-horizontal: 0.5em; - - text-align: left; - font-weight: normal; - border-style: none; - border-width: 0; - width: var(--input-width-large); - height: var(--input-height); - line-height: var(--input-height); - box-sizing: border-box; - position: relative; -} - -/* Input suffix button */ -button.input-suffix { - --button-content-color: var(--button-default-icon-color); - --button-border-color: var(--input-background-color); - --button-background-color: var(--input-background-color); - --button-hover-background-color: var(--input-background-color-dark); - --button-active-background-color: var(--input-background-color-darker); -} -button.input-suffix.light-icon { - --button-content-color: var(--button-default-icon-color-light); -} -button.input-suffix.input-suffix-icon-button { - width: 2.125em; -} -button.input-suffix.input-suffix-icon-button>.icon { - display: block; - width: 100%; - height: 100%; - background-color: var(--button-current-content-color); -} -input[type=text]:invalid~button.input-suffix, -input[type=number]:invalid~button.input-suffix, -input[type=password]:invalid~button.input-suffix, -input[type=text][data-invalid=true]~button.input-suffix, -input[type=number][data-invalid=true]~button.input-suffix, -input[type=password][data-invalid=true]~button.input-suffix { - --button-border-color: var(--danger-color); - --button-hover-border-color: var(--danger-color); - --button-active-border-color: var(--danger-color); - --button-disabled-border-color: var(--danger-color); - - border-width: var(--thin-border-size); - border-style: solid; - border-left-style: none; -} - - -/* Button inner label */ -.button-inner-label { - margin-top: calc(-1 * var(--button-padding-vertical)); - margin-bottom: calc(-1 * var(--button-padding-vertical)); - margin-left: calc(-1 * var(--button-padding-horizontal)); - margin-right: calc(-1 * var(--button-padding-horizontal)); - padding: var(--button-padding-vertical) var(--button-padding-horizontal); -} - - -/* Material design icon button */ -button.icon-button { - --button-content-color: var(--button-default-icon-color); - --button-border-color: transparent; - --button-background-color: transparent; - --button-shadow: none; - - --button-hover-border-color: transparent; - --button-hover-background-color: transparent; - --button-hover-shadow: none; - - --button-active-border-color: transparent; - --button-active-background-color: transparent; - --button-active-shadow: none; - - --button-disabled-content-color: var(--button-default-icon-color); - --button-disabled-border-color: transparent; - --button-disabled-background-color: transparent; - --button-disabled-shadow: none; - - vertical-align: middle; - border: none; - margin: 0; - padding: 0; - box-sizing: content-box; - font-size: inherit; - cursor: pointer; -} -button.icon-button.light-icon { - --button-content-color: var(--button-default-icon-color-light); - --button-disabled-content-color: var(--button-default-icon-color-light); -} -button.icon-button:not([hidden]) { - display: inline-block; -} -button.icon-button>.icon-button-inner { - display: block; - width: var(--icon-button-size); - height: var(--icon-button-size); - position: relative; -} -.icon-button>.icon-button-inner::after { - position: absolute; - display: block; - content: ''; - left: 0; - top: 0; - right: 0; - bottom: 0; - border-radius: 50%; - background-color: var(--selectable-indicator-color); - pointer-events: none; - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} -.icon-button:focus>.icon-button-inner::after, -.icon-button:active>.icon-button-inner::after { - transform: scale(1); - opacity: 1; - visibility: visible; - transition: var(--selectable-indicator-transition2); -} -.icon-button:focus:not(:focus-visible)>.icon-button-inner::after { - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} -.icon-button:focus-visible>.icon-button-inner::after, -.icon-button:focus-visible:active>.icon-button-inner::after, -.icon-button:focus>.icon-button-inner::after, -.icon-button:focus:active>.icon-button-inner::after { - transform: scale(1); - opacity: 1; - visibility: visible; - transition: var(--selectable-indicator-transition2); -} -.icon-button>.icon-button-inner>.icon { - display: block; - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - background-color: var(--button-current-content-color); - --icon-size: calc(16em / var(--font-size-no-units)) calc(16em / var(--font-size-no-units)); -} -.icon-button>.icon-button-inner>.icon[data-icon=material-right-arrow] { --icon-size: var(--material-arrow-dimension1) var(--material-arrow-dimension2); } -.icon-button>.icon-button-inner>.icon[data-icon=material-down-arrow] { --icon-size: var(--material-arrow-dimension2) var(--material-arrow-dimension1); } - -.input-height-icon-button-container { - height: var(--input-height); - box-sizing: border-box; -} -.input-height-icon-button-container>.icon-button { - position: relative; - top: calc((var(--input-height) - var(--icon-button-size)) * 0.5); -} - - -/* Popup menu */ -#popup-menus { - position: absolute; -} -.popup-menu-container { - position: fixed; - left: 0; - top: 0; - right: 0; - bottom: 0; - z-index: 1001; - outline: none; - overflow: hidden; -} -.popup-menu { - position: absolute; - left: 0; - top: 0; - max-width: 100%; - max-height: 100%; - box-sizing: border-box; - box-shadow: var(--menu-shadow); - border-radius: var(--menu-border-radius); - background-color: var(--background-color-light); - padding: 0.5em 0; - min-width: 8em; - overflow: auto; -} -.popup-menu-body { - display: flex; - flex-flow: column nowrap; - align-items: stretch; - white-space: nowrap; -} -button.popup-menu-item { - --button-content-color: var(--text-color); - --button-border-color: transparent; - --button-background-color: transparent; - --button-shadow: none; - - --button-hover-border-color: transparent; - --button-hover-background-color: var(--menu-item-hover-color); - --button-hover-shadow: none; - - --button-active-border-color: transparent; - --button-active-background-color: var(--menu-item-active-color); - --button-active-shadow: none; - - --button-disabled-content-color: var(--text-color-light2); - --button-disabled-border-color: transparent; - --button-disabled-background-color: transparent; - --button-disabled-shadow: none; - - --button-padding-vertical: 0.625em; - --button-padding-horizontal: 1.5em; - - flex: 1 1 auto; - border-radius: 0; - border-style: none; - border-width: 0; - text-align: left; - font-size: 1em; - font-weight: normal; - font-family: inherit; - align-items: center; -} -button.popup-menu-item.popup-menu-item-bold { - font-weight: bold; -} -button.popup-menu-item:not([hidden]) { - display: flex; -} -button.popup-menu-item.popup-menu-item-thin { - --button-padding-vertical: 0.375em; -} -.popup-menu-item-icon { - width: calc(16em / var(--font-size-no-units)); - height: calc(16em / var(--font-size-no-units)); - background-color: var(--button-current-content-color); - flex: 0 0 auto; -} -.popup-menu-item-icon:not([hidden]) { - display: block; -} -.popup-menu-item-icon+.popup-menu-item-label { - margin-left: 0.5em; -} -:root[data-page-type=popup] .popup-menu.popup-menu-auto-size, -.popup-menu.popup-menu-small { - border-radius: calc(var(--menu-border-radius) * 0.75); - padding: 0.25em 0; - min-width: 6em; -} -:root[data-page-type=popup] .popup-menu.popup-menu-auto-size button.popup-menu-item, -.popup-menu.popup-menu-small button.popup-menu-item { - --button-padding-vertical: 0.5em; - --button-padding-horizontal: 0.75em; - - font-size: var(--font-size-small); -} -:root[data-page-type=popup] .popup-menu.popup-menu-auto-size button.popup-menu-item.popup-menu-item-thin, -.popup-menu.popup-menu-small button.popup-menu-item.popup-menu-item-thin { - --button-padding-vertical: 0.25em; -} -.popup-menu-item-group { - position: relative; - display: flex; - flex-flow: row nowrap; - align-items: stretch; -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/permissions.css b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/permissions.css deleted file mode 100644 index b72ad90..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/permissions.css +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2023-2024 Yomitan Authors - * Copyright (C) 2021-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 this program. If not, see . - */ - -#permissions-origin-list { - display: grid; - grid-template-columns: auto 1fr auto; - grid-template-rows: auto; - align-items: center; - justify-content: center; -} -.permissions-origin-index { - margin: 0 0.5em; -} -input[type=text].permissions-origin-input { - width: auto; - justify-self: stretch; -} -.permissions-origin-button { - justify-self: center; - margin-left: 0.5em; -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/popup-outer.css b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/popup-outer.css deleted file mode 100644 index b27e81b..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/popup-outer.css +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (C) 2023-2024 Yomitan Authors - * Copyright (C) 2016-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 this program. If not, see . - */ - -iframe.yomitan-popup { - all: initial; - font-size: 1px; - background-color: #ffffff; - border: 1em solid #999999; - box-shadow: 0 0 10em rgba(0, 0, 0, 0.5); - position: fixed; - resize: none; - visibility: hidden; - z-index: 2147483647; - box-sizing: border-box; -} -iframe.yomitan-popup[data-theme=dark] { - background-color: #1e1e1e; - border-color: #666666; -} -iframe.yomitan-popup[data-outer-theme=dark] { - box-shadow: 0 0 10em rgba(255, 255, 255, 0.5); -} -iframe.yomitan-popup[data-popup-display-mode=full-width] { - border-left: none; - border-right: none; -} -iframe.yomitan-popup[data-popup-display-mode=full-width][data-below=true] { - border-bottom: none; -} -iframe.yomitan-popup[data-popup-display-mode=full-width]:not([data-below=true]) { - border-top: none; -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/popup-preview.css b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/popup-preview.css deleted file mode 100644 index 0186e9b..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/popup-preview.css +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright (C) 2023-2024 Yomitan Authors - * Copyright (C) 2020-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 this program. If not, see . - */ - -:root { - --font-size-no-units: 14; - --font-size: calc(1px * var(--font-size-no-units)); - - --line-height-no-units: 20; - --line-height: calc(var(--line-height-no-units) / var(--font-size-no-units)); - - --animation-duration: 0s; - - --example-text-color: #333333; - --background-color: rgba(0, 0, 0, 0); -} -:root[data-loaded=true] { - --animation-duration: 0.25s; -} - -:root[data-theme=dark] { - --example-text-color: #d4d4d4; - --background-color: rgba(0, 0, 0, 0); -} - - -html { - background-color: var(--background-color); -} -html.dark { - background-color: var(--background-color); -} -html, -body { - margin: 0; - padding: 0; - border: 0; - overflow: hidden; - width: 100%; - height: 100%; - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: var(--font-size); - line-height: var(--line-height); -} - -.content { - display: flex; - min-width: 100%; - min-height: 100%; - box-sizing: border-box; - padding: 1em; - flex-flow: column nowrap; - align-items: center; - justify-content: center; -} -.content-body { - max-width: 100%; - width: 400px; -} -.top-options { - max-width: 100%; - display: flex; - flex-flow: row nowrap; - align-items: center; -} -.top-options-left { - flex: 1 1 auto; -} -.top-options-right { - flex: 0 0 auto; -} - -.example-text-container { - position: relative; -} -.example-text { - display: block; - width: 100%; - font-size: 24px; - line-height: 1.25em; - height: 1.25em; - box-sizing: border-box; - border: 1px solid rgba(221, 221, 221, 0); - margin: 0; - padding: 0; - outline: none; - color: var(--example-text-color); - background-color: transparent; - white-space: pre; - transition: background-color var(--animation-duration) linear 0s, border-color var(--animation-duration) linear 0s; -} -.example-text:hover, -.example-text-input { - border-color: #dddddd; -} -.example-text[hidden] { - display: none; -} -.example-text-input { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; -} -.example-text-input:not([hidden])+.example-text { - visibility: hidden; -} - -.popup-placeholder { - display: flex; - width: 100%; - height: 250px; - padding-top: 10px; - border: 1px solid rgba(0, 0, 0, 0); - flex-flow: column nowrap; - justify-content: center; -} -.placeholder-info { - flex: 0 1 auto; - visibility: hidden; - opacity: 0; - transition: opacity var(--animation-duration) linear 0s, visibility 0s linear var(--animation-duration); -} -.placeholder-info.placeholder-info-visible { - color: var(--example-text-color); - visibility: visible; - opacity: 1; - transition: opacity var(--animation-duration) linear 0s, visibility 0s linear 0s; -} - -.theme-button { - display: inline-block; - margin-left: 0.5em; - text-decoration: none; - cursor: pointer; - white-space: nowrap; - line-height: 0; -} -.theme-button>input { - vertical-align: middle; - margin: 0 0.25em 0 0; - padding: 0; -} -.theme-button>span { - vertical-align: middle; -} -.theme-button:hover>span { - text-decoration: underline; -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/search-settings.css b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/search-settings.css deleted file mode 100644 index b145745..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/search-settings.css +++ /dev/null @@ -1,495 +0,0 @@ -:root { - --padding: 10px; - --padding-negative: calc(var(--padding) * -1); - --content-width: 700px; - --shadow-vertical: 0 1px 4px 0 var(--shadow-color), 0 2px 2px 0 var(--shadow-color); - --shadow-left: -1px 0 4px 0 var(--shadow-color), -2px 0 2px 0 var(--shadow-color); - --settings-group-horizontal-margin: 0; - --settings-group-inner-vertical-padding: 0.85em; - --settings-group-inner-horizontal-padding: 1.5em; - --settings-group-inner-horizontal-padding-half: calc(var(--settings-group-inner-horizontal-padding) * 0.5); - --settings-group-inner-horizontal-padding-half-wrappable: var(--settings-group-inner-horizontal-padding-half); - --settings-group-inner-horizontal-padding-fourth: calc(var(--settings-group-inner-horizontal-padding) * 0.25); - --settings-group-border-radius: 0.3em; - --settings-group-right-max-height: 40px; - --settings-group-wrap: nowrap; - --show-preview-label-height: 40px; - - --font-size-no-units: 14; - --font-size: calc(1px * var(--font-size-no-units)); - --font-size-small: 12px; - --outline-item-height: 40px; - --outline-item-icon-size: 32px; - --input-short-width: calc(var(--input-width-large) / 2 - var(--padding) / 2); - --input-short-height: 24px; - --input-medium-width: calc(var(--input-width-large) * 0.75); - --fab-button-size: 56px; - --fab-button-padding: 16px; - --modal-width: 600px; - --modal-height: 400px; - --modal-width-small: 400px; - --modal-height-small: 200px; - --modal-width-medium: 600px; - --modal-height-medium: 400px; - --modal-transition-offset: -64px; - --badge-size: 16px; - - --link-color: var(--accent-color); - --link-color-hover: var(--accent-color-dark); - --separator-color1: #cccccc; - --separator-color2: #eeeeee; - --outline-item-background-color: rgba(13, 13, 13, 0); - --outline-item-background-color-hover: rgba(13, 13, 13, 0.15); - --warning-color: #96751c; - --warning-color-light: #edc75e; - --dim-background-color: rgba(0, 0, 0, 0.5); - --content-dimmer-color: rgba(0, 0, 0, 0.1); - --advanced-color: #6640be; - --advanced-color-lighter: hsl(258, 50%, 75%); - --advanced-color-transparent25: rgba(102, 64, 190, 0.5); - - --modal-padding-horizontal: 1em; - --modal-padding-vertical: 0.625em; - --modal-padding-vertical-half: calc(var(--modal-padding-vertical) * 0.5); - --modal-button-spacing: 0.625em; -} -:root:not([data-loaded=true]) { - --animation-duration: 0s; -} -:root[data-theme=dark] { - --separator-color1: #333333; - --separator-color2: #222222; -} - -/* Modal */ -.modal { - position: fixed; - left: 0; - top: 0; - bottom: 0; - right: 0; - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; - overscroll-behavior: contain; - background-color: var(--dim-background-color); - outline: none; - z-index: 10000; - opacity: 1; - visibility: visible; - transition: - opacity var(--animation-duration2) ease-out, - visibility 0s linear; -} -.modal[hidden] { - opacity: 0; - visibility: hidden; - transition: - opacity var(--animation-duration2) ease-in, - visibility 0s linear var(--animation-duration2); -} -.modal[hidden]:not(.hidden-animating) { - display: none; -} -.modal-content { - max-width: 100%; - max-height: 100%; - width: var(--modal-width); - height: var(--modal-height); - background-color: var(--background-color-light); - flex: 0 1 auto; - border-radius: 0.5em; - transform: translate(0, 0); - transition: - transform var(--animation-duration2) ease-out, - width var(--animation-duration2) ease-in-out, - height var(--animation-duration2) ease-in-out, - border-radius var(--animation-duration2) ease-in-out; - box-shadow: var(--shadow-vertical); - display: flex; - flex-flow: column nowrap; - overflow: hidden; -} -.modal[hidden] .modal-content { - pointer-events: none; -} -.modal-content.modal-content-small { - width: var(--modal-width-small); - min-height: var(--modal-height-small); - height: auto; - max-height: 100%; -} -.modal-content.modal-content-medium { - width: var(--modal-width-medium); - min-height: var(--modal-height-medium); - height: auto; - max-height: 100%; -} -.modal-content.modal-content-full { - width: var(--content-width); - height: 100%; - transform: translate(0, 0); - border-radius: 0; -} -.modal[hidden] .modal-content { - transform: translate(0, var(--modal-transition-offset)); - transition: - transform 0s linear var(--animation-duration2), - width var(--animation-duration2) ease-in-out, - height var(--animation-duration2) ease-in-out, - border-radius var(--animation-duration2) ease-in-out; -} -.modal-header { - flex: 0 0 auto; - padding: var(--modal-padding-vertical) var(--modal-padding-horizontal) var(--modal-padding-vertical-half); - display: flex; - width: 100%; - align-items: center; - box-sizing: border-box; -} -.modal-title { - font-size: 1.125em; - flex: 1 1 auto; -} -.modal-footer { - flex: 0 0 auto; - padding: var(--modal-padding-vertical-half) var(--modal-padding-horizontal) var(--modal-padding-vertical); - margin-right: calc(var(--modal-button-spacing) * -1); - margin-top: calc(var(--modal-button-spacing) * -1); - display: flex; - flex-flow: row wrap; - align-items: flex-end; - justify-items: flex-end; - justify-content: flex-end; -} -.modal-footer>* { - margin-right: var(--modal-button-spacing); - margin-top: var(--modal-button-spacing); -} -.modal-body { - flex: 1 1 auto; - overflow: auto; - padding: var(--modal-padding-vertical-half) var(--modal-padding-horizontal); -} -.modal-body-addon { - flex: 0 0 auto; - padding: var(--modal-padding-vertical-half) var(--modal-padding-horizontal); -} -.modal-body>.settings-item, -.modal-settings-group>.settings-item { - margin-left: calc(var(--modal-padding-horizontal) * -1); -} -.modal-body .settings-item { - margin-right: calc(var(--modal-padding-horizontal) * -1); -} -.modal-body .settings-item+.settings-item { - border-top: none; -} -.modal-body .settings-item-left { - padding-left: var(--modal-padding-horizontal); - padding-top: var(--settings-group-inner-horizontal-padding-fourth); - padding-bottom: var(--settings-group-inner-horizontal-padding-fourth); -} -.modal-body .settings-item-right { - padding-right: var(--modal-padding-horizontal); - padding-top: var(--settings-group-inner-horizontal-padding-fourth); - padding-bottom: var(--settings-group-inner-horizontal-padding-fourth); -} -.modal-body .settings-item-children { - padding-left: var(--modal-padding-horizontal); - padding-right: var(--modal-padding-horizontal); - padding-bottom: var(--settings-group-inner-horizontal-padding-fourth); -} - -.modal.modal-left { - display: flex; - flex-flow: row nowrap; - width: 100%; - height: 100%; - background-color: transparent; - pointer-events: none; -} -.modal-content-container { - pointer-events: none; - width: 100%; - height: 100%; - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; -} - -.modal-content-container>.modal-content, -.modal-content-container>.modal-content-dimmer { - pointer-events: auto; -} - -.modal-content-container>.modal-content-dimmer { - background: var(--custom-css-modal-background); - width: var(--custom-css-dim-size); - height: 100%; - margin-right: calc(100% - var(--custom-css-dim-size)); - position: absolute; -} - -.modal-header-button-container { - margin-top: calc(-1 * var(--modal-padding-vertical-half)); - margin-bottom: calc(-1 * var(--modal-padding-vertical-half)); -} -.modal-header-button-group { - display: block; - position: relative; - width: var(--icon-button-size); - height: var(--icon-button-size); -} -.modal-header-button { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; -} -button.icon-button.modal-header-button { - --button-content-color: var(--button-default-icon-color-light); - --button-hover-content-color: var(--button-default-icon-color); - --button-active-content-color: var(--button-default-icon-color); -} -button.icon-button.modal-header-button>.icon-button-inner>.icon { - transition: background-color var(--animation-duration) ease-in-out; -} -.modal-header-button[data-modal-action=expand], -.modal-header-button[data-modal-action=collapse] { - visibility: visible; - opacity: 1; - z-index: 1; - transition: - opacity var(--animation-duration2) ease-in-out 0s, - visibility 0s ease-in-out 0s; -} -.modal-content.modal-content-full .modal-header-button[data-modal-action=expand], -.modal-content:not(.modal-content-full) .modal-header-button[data-modal-action=collapse] { - visibility: hidden; - opacity: 0; - pointer-events: none; - z-index: 0; - transition: - opacity var(--animation-duration2) ease-in-out 0s, - visibility 0s ease-in-out var(--animation-duration2); -} - -.modal-separator-line { - border-top: var(--thin-border-size) solid var(--separator-color1); - margin: 0 calc(var(--modal-padding-horizontal) * -1); -} -.modal-separator-line-light { - border-top: var(--thin-border-size) solid var(--separator-color2); - margin: 0 calc(var(--modal-padding-horizontal) * -1); -} - -/* Settings styles */ -.settings-group { - margin: 0 var(--settings-group-horizontal-margin); - padding: 0; - box-sizing: border-box; - background-color: var(--background-color-light); - box-shadow: var(--shadow-vertical); - border-radius: var(--settings-group-border-radius); - overflow-x: hidden; -} -.settings-group.settings-group-top-margin { - margin-top: 1.0125em; -} -.settings-item { - position: relative; -} -.settings-item:not([hidden]) { - display: block; -} -.settings-item-outer { - display: block; - width: 100%; -} -.settings-item-inner { - display: flex; - flex-flow: row nowrap; - justify-content: flex-end; - align-content: stretch; - width: 100%; -} -.settings-item-inner.settings-item-inner-wrappable { - flex-wrap: var(--settings-group-wrap); -} -.settings-item-left { - padding: var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding-half) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding); - flex: 1 1 auto; - align-self: center; - position: relative; -} -.settings-item-left:last-child { - padding-right: var(--settings-group-inner-horizontal-padding); -} -.settings-item-right { - padding: var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding-half); - flex: 0 1 auto; - align-self: stretch; - max-height: var(--settings-group-right-max-height); - display: flex; - flex-flow: row nowrap; - align-items: center; - align-content: center; - justify-content: flex-end; -} -.settings-item-inner.settings-item-inner-wrappable>.settings-item-left { - padding-right: var(--settings-group-inner-horizontal-padding-half-wrappable); -} -.settings-item-inner.settings-item-inner-wrappable>.settings-item-right { - padding-left: var(--settings-group-inner-horizontal-padding-half-wrappable); -} -.settings-item-center { - padding: var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding); - flex: 0 1 100%; - align-self: flex-start; - text-align: center; -} -.settings-item+.settings-item { - border-top: var(--thin-border-size) solid var(--separator-color2); -} -.settings-item-description { - color: var(--text-color-light2); -} -.settings-item-right.open-panel-button-container { - padding: 0.25em 1em 0.25em 0.75em; - max-height: calc(var(--settings-group-right-max-height) + var(--settings-group-inner-vertical-padding) * 2); -} -.settings-item-children { - padding: 0em var(--settings-group-inner-horizontal-padding-half) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding); - margin-top: 0; -} -.settings-item-children.settings-item-children-group { - padding: 0 0 0 calc(var(--settings-group-inner-horizontal-padding) + var(--settings-group-inner-horizontal-padding)); -} -.settings-item-children.settings-item-children-group .settings-item { - border-top: var(--thin-border-size) solid var(--separator-color2); -} -.settings-item-children.settings-item-children-group .settings-item-left { - padding-left: 0; -} -.settings-item-children.settings-item-children-group .settings-item-inner.settings-item-inner-wrappable>.settings-item-left:not(:last-child) { - padding-right: calc(var(--settings-group-inner-horizontal-padding-half-wrappable) * 2); -} -.settings-item-children.settings-item-children-group .settings-item-inner.settings-item-inner-wrappable>.settings-item-right { - padding-left: 0; -} -.settings-item-children.settings-item-children-group .settings-item-children { - padding-left: 0; -} -:root:not([data-advanced=true]) .advanced-only { - display: none; -} -:root:not([data-advanced=false]) .basic-only { - display: none; -} -.settings-item.settings-item-button, -a.settings-item.settings-item-button { - cursor: pointer; - color: var(--text-color); - text-decoration: none; - background-color: transparent; - transition: background-color var(--animation-duration) ease-in-out; -} -.settings-item.settings-item-button>.settings-item-inner, -.settings-item.settings-item-button>.settings-item-inner>.settings-item-left, -.settings-item.settings-item-button>.settings-item-inner>.settings-item-right { - margin-top: 0; -} -.settings-item.settings-item-button:hover, -.settings-item.settings-item-button:active { - background-color: var(--background-color); -} -.settings-item.settings-item-button .icon-button>.icon-button-inner>.icon { - transition: background-color var(--animation-duration) ease-in-out; -} -.settings-item.settings-item-button:hover .icon-button>.icon-button-inner>.icon, -.settings-item.settings-item-button:active .icon-button>.icon-button-inner>.icon { - background-color: var(--accent-color); -} -.settings-item-invalid-indicator { - display: none; - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: 0.5em; - background-color: var(--danger-color); -} -.settings-item[data-invalid=true] .settings-item-invalid-indicator { - display: block; -} - - -/* Settings item groups */ -.settings-item-group { - margin-right: var(--padding-negative); - display: flex; - flex-flow: row nowrap; - align-items: center; - align-content: center; - justify-content: flex-end; -} -.settings-item-group.settings-item-group-wrap { - flex-wrap: wrap; -} -.settings-item-group-item { - flex: 0 1 auto; - padding-right: var(--padding); -} -.settings-item-group-item-label { - font-size: var(--font-size-small); - line-height: 1; -} -input[type=text].short-width, -input[type=number].short-width, -select.short-width { - width: var(--input-short-width); -} -input[type=text].medium-width, -input[type=number].medium-width, -select.medium-width { - width: var(--input-medium-width); -} -input[type=text].short-height, -input[type=number].short-height, -select.short-height { - height: var(--input-short-height); - margin-top: calc(var(--settings-group-right-max-height) - var(--input-short-height) - var(--font-size-small)); - line-height: var(--line-height); -} -.settings-item-button-group-container { - max-height: none; - width: 100%; -} -.settings-item-button-group { - display: flex; - width: 100%; - flex-flow: row wrap; - max-height: none; - justify-content: flex-start; - margin-top: var(--padding-negative); - margin-right: var(--padding-negative); -} -.settings-item-button-group-item { - flex: 0 1 auto; - padding-top: var(--padding); - padding-right: var(--padding); -} -.settings-item-progress-report { - display: none; - font-weight: bold; - color: #4169e1; -} -.settings-item-error-report { - display: none; - font-weight: bold; - color: #8b0000; -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/search.css b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/search.css deleted file mode 100644 index 81e4a74..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/search.css +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright (C) 2023-2024 Yomitan Authors - * Copyright (C) 2020-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 this program. If not, see . - */ - -/* Variables */ -:root { - --main-content-horizontal-padding: 0.72em; - --entry-horizontal-padding: 0; - - --padding: calc(10em / var(--font-size-no-units)); - --content-width-search: 700; - --content-width: calc(1em * var(--content-width-search) / var(--font-size-no-units)); - - --background-color: #ffffff; - --separator-color1: #cccccc; - - --search-textbox-height: calc(var(--textarea-line-height) + var(--textarea-padding) * 2); - --search-textbox-min-height: calc(var(--textarea-line-height) + var(--textarea-padding) * 2); - --search-textbox-max-height: calc(var(--textarea-line-height) * 5 + var(--textarea-padding) * 2); - - --cog-icon-size: 26px; -} -:root:not([data-loaded=true]) { - --animation-duration: 0s; -} -:root[data-theme=dark] { - --separator-color1: #333333; -} - -/* Common styles */ -:root { - height: 100%; -} -body { - background-color: var(--background-color); - margin: 0; - padding: 0; - color: var(--text-color); - height: 100%; - overflow: hidden; -} -h1 { - font-size: 2em; - line-height: 1.5em; - margin: 0; - padding: 0.25em 0 0; - font-weight: normal; - box-sizing: border-box; - border-bottom: calc(1em / (var(--font-size-no-units) * 2)) solid var(--separator-color1); -} - -/* Search bar */ -.search-textbox-container { - display: flex; - flex-flow: row nowrap; - width: 100%; - align-items: center; - margin: 0; - padding: 0; - border: 0; -} -#search-textbox { - color: var(--text-color); - flex: 1 1 auto; - box-sizing: border-box; - padding: var(--textarea-padding); - background-color: var(--input-background-color); - border-radius: 0; - line-height: var(--textarea-line-height); - border: 0; - outline: none; - width: 100%; - height: var(--search-textbox-height); - min-height: var(--search-textbox-min-height); - max-height: var(--search-textbox-max-height); - resize: none; - font-size: var(--font-size); - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - white-space: pre-wrap; - z-index: 1; -} -.search-button { - flex: 0 0 auto; - position: relative; - width: 2.5em; - height: var(--search-textbox-height); - min-height: var(--search-textbox-min-height); - max-height: var(--search-textbox-max-height); - background-color: var(--input-background-color); - border: 0; - padding: 0; - margin: 0; - cursor: pointer; - outline: none; - transition: background-color var(--animation-duration) ease-in-out; - border-radius: 0; -} -.search-button:hover, -.search-button:focus { - background-color: var(--input-background-color-dark); -} -.search-button:focus:not(:focus-visible):not(:hover) { - background-color: var(--input-background-color); -} -.search-button:focus-visible { - background-color: var(--input-background-color-dark); -} -.search-button:active, -.search-button:active:focus { - background-color: var(--input-background-color-darker); -} - -.search-button>.icon { - display: block; - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - background-color: var(--button-default-icon-color); - --icon-size: 16px 16px; -} - -/* Search options */ -#search-settings-button>.icon { - display: block; - background-color: var(--button-default-icon-color); - width: var(--cog-icon-size); - height: var(--cog-icon-size); - transition: var(--animation-duration) filter ease-in-out; -} -#search-settings-button>.icon:hover, -#search-settings-button>.icon:focus { - filter: invert(0.5); -} -#search-settings-button { - margin-right: 0; -} -.search-options-left { - display: flex; - flex-flow: row wrap; - align-items: center; -} -.search-options { - display: flex; - flex-flow: row wrap; - margin: 0.5em 0 0 0; - align-items: center; - justify-content: space-between; -} -.search-option { - flex: 0 1 auto; - margin: 0.5em 2em 0.5em 0; - align-items: center; - cursor: pointer; -} -.search-option:not([hidden]) { - display: flex; -} -.search-option-label { - padding-left: 0.5em; -} - -/* Search styles */ -#intro { - overflow: hidden; -} -#intro>p { - margin: 0; -} -:root[data-search-mode=action-popup] #intro, -:root[data-search-mode=action-popup] #search-option-clipboard-monitor-container { - display: none; -} -:root[data-search-mode=action-popup], -:root[data-search-mode=action-popup] body { - width: 640px; - height: 480px; -} - -/* Dark mode before themes are applied - DO NOT use this for normal theming */ -@media (prefers-color-scheme: dark) { - :root:not([data-loaded=true]) { - background-color: #1e1e1e; - } -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/settings.css b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/settings.css deleted file mode 100644 index 7e6c4bc..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/settings.css +++ /dev/null @@ -1,2680 +0,0 @@ -/* - * Copyright (C) 2023-2024 Yomitan Authors - * Copyright (C) 2020-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 this program. If not, see . - */ - -/* Variables */ -:root { - --padding: 10px; - --padding-negative: calc(var(--padding) * -1); - --content-width: 700px; - --main-content-padding: 10px; - --sidebar-size: 200px; - --preview-sidebar-expanded-width: 400px; - --shadow-vertical: 0 1px 4px 0 var(--shadow-color), 0 2px 2px 0 var(--shadow-color); - --shadow-vertical-top: 0 -1px 4px 0 var(--shadow-color), 0 -2px 2px 0 var(--shadow-color); - --shadow-left: -1px 0 4px 0 var(--shadow-color), -2px 0 2px 0 var(--shadow-color); - --shadow-right: 1px 0 4px 0 var(--shadow-color), 2px 0 2px 0 var(--shadow-color); - --settings-group-horizontal-margin: 0; - --settings-group-inner-vertical-padding: 0.85em; - --settings-group-inner-horizontal-padding: 1.5em; - --settings-group-inner-horizontal-padding-half: calc(var(--settings-group-inner-horizontal-padding) * 0.5); - --settings-group-inner-horizontal-padding-half-wrappable: var(--settings-group-inner-horizontal-padding-half); - --settings-group-inner-horizontal-padding-fourth: calc(var(--settings-group-inner-horizontal-padding) * 0.25); - --settings-group-border-radius: 0.3em; - --settings-group-right-max-height: 40px; - --settings-group-wrap: nowrap; - --show-preview-label-height: 40px; - - --font-size-no-units: 14; - --font-size: calc(1px * var(--font-size-no-units)); - --font-size-small: 12px; - --outline-item-height: 40px; - --outline-item-icon-size: 32px; - --input-short-width: calc(var(--input-width-large) / 2 - var(--padding) / 2); - --input-short-height: 24px; - --input-medium-width: calc(var(--input-width-large) * 0.75); - --fab-button-size: 56px; - --fab-button-padding: 16px; - --modal-width: 600px; - --modal-height: 400px; - --modal-width-small: 400px; - --modal-height-small: 200px; - --modal-width-medium: 600px; - --modal-height-medium: 400px; - --modal-transition-offset: -64px; - --badge-size: 16px; - - --link-color: var(--accent-color); - --link-color-hover: var(--accent-color-dark); - --separator-color1: #cccccc; - --separator-color2: #eeeeee; - --outline-item-background-color: rgba(13, 13, 13, 0); - --outline-item-background-color-hover: rgba(13, 13, 13, 0.15); - --warning-color: #96751c; - --warning-color-light: #edc75e; - --dim-background-color: rgba(0, 0, 0, 0.5); - --content-dimmer-color: rgba(0, 0, 0, 0.1); - --advanced-color: #6640be; - --advanced-color-lighter: hsl(258, 50%, 75%); - --advanced-color-transparent25: rgba(102, 64, 190, 0.5); - - --modal-padding-horizontal: 1em; - --modal-padding-vertical: 0.625em; - --modal-padding-vertical-half: calc(var(--modal-padding-vertical) * 0.5); - --modal-button-spacing: 0.625em; - - --scrollbar-thumb-color: #c1c1c1; - --scrollbar-track-color: #f1f1f1; - --scrollbar-inverse-thumb-color: #444444; - --scrollbar-inverse-track-color: #2f2f2f; - - --dictionary-import-border-color: #cccccc; - --dictionary-import-border-color-hover: #bfd1ff; - --dictionary-import-hover-background-color: rgba(28, 116, 233, 0.05); - - --custom-css-dim-size: 73.5%; - --custom-css-dim-fade-length: 3.5%; - --custom-css-modal-background: linear-gradient(90deg, var(--dim-background-color) calc(100% - var(--custom-css-dim-fade-length)), rgba(0, 0, 0, 0)); -} -:root:not([data-loaded=true]) { - --animation-duration: 0s; -} -:root[data-theme=dark] { - --separator-color1: #333333; - --separator-color2: #222222; - - --scrollbar-thumb-color: #444444; - --scrollbar-track-color: #2f2f2f; - --scrollbar-inverse-thumb-color: #c1c1c1; - --scrollbar-inverse-track-color: #f1f1f1; - - --dictionary-import-border-color: #333333; - --dictionary-import-border-color-hover: #1c74e9; - --dictionary-import-hover-background-color: rgba(191, 209, 255, 0.05); -} - -/* Scrollbars */ -:root:not([data-theme=light]) .scrollbar, -:root:not([data-theme=light]) .modal-body { - scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-track-color); -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar, -:root:not([data-theme=light]) .modal-body::-webkit-scrollbar { - width: auto; -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-button, -:root:not([data-theme=light]) .modal-body::-webkit-scrollbar-button { - height: 0; -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-thumb, -:root:not([data-theme=light]) .modal-body::-webkit-scrollbar-thumb { - background-color: var(--scrollbar-thumb-color); -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-track, -:root:not([data-theme=light]) .modal-body::-webkit-scrollbar-track { - background-color: var(--scrollbar-thumb-color); -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-track-piece, -:root:not([data-theme=light]) .modal-::-webkit-scrollbar-track-piece { - background-color: var(--scrollbar-track-color); -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-corner, -:root:not([data-theme=light]) .modal-body::-webkit-scrollbar-corner { - background-color: var(--scrollbar-track-color); -} - - -@media (max-width: 700px) { - :root { - --settings-group-horizontal-margin: calc(var(--main-content-padding) * -1); - --settings-group-inner-horizontal-padding: var(--main-content-padding); - --settings-group-border-radius: 0; - } -} - -@media (max-width: 400px) { - :root { - --settings-group-horizontal-margin: calc(var(--main-content-padding) * -1); - --settings-group-inner-horizontal-padding: var(--main-content-padding); - --settings-group-inner-horizontal-padding-half-wrappable: var(--settings-group-inner-horizontal-padding); - --settings-group-wrap: wrap; - } -} - - -/* Common styles */ -body { - overflow: hidden; -} -p { - margin: 0; -} -ol, -ul { - margin: 0; - padding: 0 0 0 1.5em; -} -p+p, -p+ol, -p+ul, -ol+p, -ol+ol, -ol+ul, -ul+p, -ul+ol, -ul+ul, -li { - margin: 0.425em 0 0; -} -a { - color: var(--link-color); - text-decoration: none; - cursor: pointer; -} -a:hover { - color: var(--link-color-hover); - text-decoration: underline; -} -code { - font-family: 'Courier New', Courier, monospace; - background-color: var(--input-background-color); -} -label { - cursor: pointer; -} -pre { - white-space: pre-wrap; - margin: 0; -} - - -/* Text styles */ -.warning-text { - color: var(--warning-color); -} - - -/* Headings */ -h1 { - font-size: 2em; - line-height: 1.5em; - margin: 0; - padding: 0.25em 0 0; - font-weight: normal; - box-sizing: border-box; - border-bottom: var(--thin-border-size) solid var(--separator-color1); -} -h2 { - font-size: 1.125em; - font-weight: normal; - line-height: 1.5; - padding: 0.9em 0; - margin: 0.85em 0 0; -} -h3 { - font-size: 1em; - font-weight: bold; - line-height: 1.5; - margin: 1.5em 0 0.85em; -} -.heading-container { - display: flex; - flex-flow: row nowrap; - width: 100%; - align-items: baseline; -} -.heading-container a { - color: inherit; - transition: background-color var(--animation-duration) ease-in-out; -} -.heading-container a:hover { - color: var(--link-color-hover); - text-decoration: none; -} -.heading-container-icon { - flex: 0 0 auto; - align-self: center; - margin: 0.85em 0.75em 0 0; -} -.heading-container-icon>.icon { - display: block; - background-color: var(--button-default-icon-color); - width: var(--outline-item-icon-size); - height: var(--outline-item-icon-size); -} -.heading-container-left { - flex: 1 1 auto; -} -.heading-container-right { - flex: 0 0 auto; -} -.heading-sub-text { - font-size: calc(1em / 1.125); - color: var(--text-color-light2); -} -a.heading-link-light { - color: var(--text-color-light2); -} -.heading-description, -.heading-description.more { - padding: 0; - margin: 0 0 1.0125em; -} - - -/* Content layout */ -.content-outer { - display: flex; - flex-flow: column nowrap; - width: 100%; - height: 100%; -} -.content { - flex: 1 0 auto; - width: 100%; - height: 100%; - display: flex; - overflow-x: auto; - overflow-y: scroll; - position: relative; - align-items: stretch; - justify-content: flex-start; -} -.content-left { - flex: 1 1 0; - position: sticky; - top: 0; - z-index: 5; -} -.content-center { - flex: 0 1 auto; - width: var(--content-width); - padding: 0 var(--main-content-padding); - max-width: var(--content-width); - box-sizing: border-box; -} -.content-right { - flex: 1 1 0; - position: sticky; - top: 0; - z-index: 2; -} -#content-scroll-focus { - opacity: 0; - margin: 0; - padding: 0; - outline: none; - background-color: transparent; - display: inline; - width: 0; - height: 0; - line-height: 0; - user-select: none; -} -#content-scroll-focus::-moz-focus-inner { - border: 0; -} -.content-dimmer { - display: block; - visibility: hidden; - position: fixed; - left: 0; - top: 0; - bottom: 0; - right: 0; - z-index: 3; - opacity: 0; - background-color: var(--content-dimmer-color); - pointer-events: none; - transition: opacity var(--animation-duration) ease-in-out, visibility var(--animation-duration) ease-in-out; -} - - -/* More details toggle */ -.more-toggle { - cursor: pointer; -} -.more-toggle.more-only[data-expanded=true], -.more-toggle.no-more-only:not([data-expanded=true]) { - display: none; -} -.more { - margin-top: 0.85em; -} - - -/* Footer */ -.footer-padding { - height: 4.5em; -} - - -/* Left sidebar */ -.sidebar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: var(--sidebar-size); - max-width: 100%; - background-color: var(--background-color); - transition: max-width var(--animation-duration) ease-in; -} -.sidebar:hover { - max-width: var(--sidebar-size); - transition: - max-width var(--animation-duration) ease-out 0.5s, - box-shadow var(--animation-duration) ease-out; -} -.sidebar-inner { - width: 100%; - height: 100%; - display: flex; - justify-content: space-between; - flex-flow: column nowrap; - overflow-x: hidden; - overflow-y: auto; - overscroll-behavior: contain; - transition: box-shadow var(--animation-duration) ease-out; -} -.sidebar-top { - position: sticky; - top: 0; - height: 2em; - z-index: 1; -} -.sidebar-top-link { - display: block; - background-color: var(--background-color); - height: 100%; - line-height: 2em; - padding: 0 1.5em; - opacity: 1; - visibility: visible; - transition: opacity var(--animation-duration2) ease-in-out, visibility var(--animation-duration2); -} -.sidebar-top-link[hidden] { - display: block; - opacity: 0; - visibility: hidden; -} -.sidebar-top-link:not(:hover) { - color: var(--text-color); -} -.sidebar-top-icon { - display: inline-block; - background-repeat: no-repeat; - background-size: 12px 12px; - width: 12px; - height: 12px; - background-image: url(/images/up-arrow.svg); - margin-right: calc(var(--padding) * 0.5); -} -.sidebar-body { - padding: 2em 0; -} -.sidebar-bottom { - padding-bottom: 2em; -} -.outline-item { - --button-content-color: var(--text-color); - --button-border-color: transparent; - --button-background-color: var(--outline-item-background-color); - --button-shadow: none; - - --button-hover-border-color: transparent; - --button-hover-background-color: var(--outline-item-background-color-hover); - --button-hover-shadow: none; - - --button-active-border-color: transparent; - --button-active-background-color: var(--outline-item-background-color-hover); - --button-active-shadow: none; - - font-weight: normal; - border-style: none; - border-width: 0; - border-radius: 0; - display: flex; - align-items: center; - width: 100%; - height: var(--outline-item-height); - padding: 0 1.5em; - cursor: pointer; - transition: background-color var(--animation-duration) ease-in-out; - box-sizing: border-box; -} -.outline-item, -.outline-item:hover { - text-decoration: none; -} -.outline-item-left { - display: inline-block; - width: var(--outline-item-icon-size); - height: var(--outline-item-icon-size); - min-width: var(--outline-item-icon-size); - min-height: var(--outline-item-icon-size); - position: relative; - line-height: var(--outline-item-height); -} -.outline-item-left-warning-badge { - position: absolute; - right: calc(var(--outline-item-icon-size) * -0.125); - top: calc(var(--outline-item-icon-size) * -0.125); -} -.outline-item-left-warning-badge:not([hidden]) { - display: block; -} -.outline-item-label { - white-space: nowrap; - padding-left: var(--padding); -} -.outline-item-icon { - display: block; - background-color: var(--button-default-icon-color); - width: 100%; - height: 100%; -} - - -/* Preview sidebar */ -.preview-sidebar { - display: flex; - flex-flow: column nowrap; - align-content: center; - justify-content: center; - position: absolute; - right: 0; - top: 0; - bottom: 0; - width: 100%; - min-width: 100%; - max-width: 100%; - transition: - width var(--animation-duration) ease-in-out, - max-width var(--animation-duration) ease-in-out, - box-shadow var(--animation-duration) ease-in-out; -} -.preview-sidebar-inner { - width: 100%; - height: 100%; - display: flex; - flex-flow: column nowrap; - align-content: center; - justify-content: center; - overflow: hidden; - background-color: var(--background-color); -} -.preview-sidebar-setting { - text-align: center; - flex: 0 0 auto; -} -.preview-frame-container { - position: relative; - align-self: stretch; - flex: 1 1 auto; - visibility: visible; -} -.preview-frame { - border: none; - margin: 0; - padding: 0; - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - user-select: none; -} - - -/* Settings styles */ -.settings-group { - margin: 0 var(--settings-group-horizontal-margin); - padding: 0; - box-sizing: border-box; - background-color: var(--background-color-light); - box-shadow: var(--shadow-vertical); - border-radius: var(--settings-group-border-radius); - overflow-x: hidden; -} -.settings-group.settings-group-top-margin { - margin-top: 1.0125em; -} -.settings-item { - position: relative; -} -.settings-item:not([hidden]) { - display: block; -} -.settings-item-outer { - display: block; - width: 100%; -} -.settings-item-inner { - display: flex; - flex-flow: row nowrap; - justify-content: flex-end; - align-content: stretch; - width: 100%; -} -.settings-item-inner.settings-item-inner-wrappable { - flex-wrap: var(--settings-group-wrap); -} -.settings-item-left { - padding: var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding-half) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding); - flex: 1 1 auto; - align-self: center; - position: relative; -} -.settings-item-left:last-child { - padding-right: var(--settings-group-inner-horizontal-padding); -} -.settings-item-right { - padding: var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding-half); - flex: 0 1 auto; - align-self: stretch; - max-height: var(--settings-group-right-max-height); - display: flex; - flex-flow: row nowrap; - align-items: center; - align-content: center; - justify-content: flex-end; -} -.settings-item-inner.settings-item-inner-wrappable>.settings-item-left { - padding-right: var(--settings-group-inner-horizontal-padding-half-wrappable); -} -.settings-item-inner.settings-item-inner-wrappable>.settings-item-right { - padding-left: var(--settings-group-inner-horizontal-padding-half-wrappable); -} -.settings-item-center { - padding: var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding); - flex: 0 1 100%; - align-self: flex-start; - text-align: center; -} -.settings-item+.settings-item { - border-top: var(--thin-border-size) solid var(--separator-color2); -} -.settings-item-description { - color: var(--text-color-light2); -} -.settings-item-right.open-panel-button-container { - padding: 0.25em 1em 0.25em 0.75em; - max-height: calc(var(--settings-group-right-max-height) + var(--settings-group-inner-vertical-padding) * 2); -} -.settings-item-children { - padding: 0em var(--settings-group-inner-horizontal-padding-half) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding); - margin-top: 0; -} -.settings-item-children.settings-item-children-group { - padding: 0 0 0 calc(var(--settings-group-inner-horizontal-padding) + var(--settings-group-inner-horizontal-padding)); -} -.settings-item-children.settings-item-children-group .settings-item { - border-top: var(--thin-border-size) solid var(--separator-color2); -} -.settings-item-children.settings-item-children-group .settings-item-left { - padding-left: 0; -} -.settings-item-children.settings-item-children-group .settings-item-inner.settings-item-inner-wrappable>.settings-item-left:not(:last-child) { - padding-right: calc(var(--settings-group-inner-horizontal-padding-half-wrappable) * 2); -} -.settings-item-children.settings-item-children-group .settings-item-inner.settings-item-inner-wrappable>.settings-item-right { - padding-left: 0; -} -.settings-item-children.settings-item-children-group .settings-item-children { - padding-left: 0; -} -:root:not([data-debug=true]) .debug-only { - display: none; -} -:root:not([data-advanced=true]) .advanced-only { - display: none; -} -:root:not([data-advanced=false]) .basic-only { - display: none; -} -:root:not([data-language=ja]):not([data-language=zh]):not([data-language=yue]) .jpzhyue-only { - display: none; -} -.settings-item.settings-item-button, -a.settings-item.settings-item-button { - cursor: pointer; - color: var(--text-color); - text-decoration: none; - background-color: transparent; - transition: background-color var(--animation-duration) ease-in-out; -} -.settings-item.settings-item-button>.settings-item-inner, -.settings-item.settings-item-button>.settings-item-inner>.settings-item-left, -.settings-item.settings-item-button>.settings-item-inner>.settings-item-right { - margin-top: 0; -} -.settings-item.settings-item-button:hover, -.settings-item.settings-item-button:active { - background-color: var(--background-color); -} -.settings-item.settings-item-button .icon-button>.icon-button-inner>.icon { - transition: background-color var(--animation-duration) ease-in-out; -} -.settings-item.settings-item-button:hover .icon-button>.icon-button-inner>.icon, -.settings-item.settings-item-button:active .icon-button>.icon-button-inner>.icon { - background-color: var(--accent-color); -} -.settings-item-invalid-indicator { - display: none; - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: 0.5em; - background-color: var(--danger-color); -} -.settings-item[data-invalid=true] .settings-item-invalid-indicator { - display: block; -} - - -/* Settings item groups */ -.settings-item-group { - margin-right: var(--padding-negative); - display: flex; - flex-flow: row nowrap; - align-items: center; - align-content: center; - justify-content: flex-end; -} -.settings-item-group.settings-item-group-wrap { - flex-wrap: wrap; -} -.settings-item-group-item { - flex: 0 1 auto; - padding-right: var(--padding); -} -.settings-item-group-item-label { - font-size: var(--font-size-small); - line-height: 1; -} -input[type=text].short-width, -input[type=number].short-width, -select.short-width { - width: var(--input-short-width); -} -input[type=text].medium-width, -input[type=number].medium-width, -select.medium-width { - width: var(--input-medium-width); -} -input[type=text].short-height, -input[type=number].short-height, -select.short-height { - height: var(--input-short-height); - margin-top: calc(var(--settings-group-right-max-height) - var(--input-short-height) - var(--font-size-small)); - line-height: var(--line-height); -} -.settings-item-button-group-container { - max-height: none; - width: 100%; -} -.settings-item-button-group { - display: flex; - width: 100%; - flex-flow: row wrap; - max-height: none; - justify-content: flex-start; - margin-top: var(--padding-negative); - margin-right: var(--padding-negative); -} -.settings-item-button-group-item { - flex: 0 1 auto; - padding-top: var(--padding); - padding-right: var(--padding); -} -.settings-item-progress-report { - display: none; - font-weight: bold; - color: #4169e1; -} -.settings-item-error-report { - display: none; - font-weight: bold; - color: #8b0000; -} - - -/* Advanced settings */ -.settings-group.advanced-only>.settings-item::after, -.settings-item.advanced-only::after { - content: ''; - background-color: var(--advanced-color-lighter); - position: absolute; - right: 0; - top: 0; - height: 100%; - width: 0.25em; -} -.advanced-toggle { - --accent-color: var(--advanced-color); - --accent-color-lighter: var(--advanced-color-lighter); - --accent-color-transparent25: var(--advanced-color-transparent25); -} - -/* Debug settings */ -.settings-group.debug-only>.settings-item::after, -.settings-item.debug-only::after { - content: ''; - background-color: var(--danger-color-lighter); - position: absolute; - right: 0; - top: 0; - height: 100%; - width: 0.25em; -} -.debug-toggle { - --accent-color: var(--danger-color); - --accent-color-lighter: var(--danger-color-lighter); - --accent-color-transparent25: var(--danger-color-transparent25); -} - -/* Modal */ -.modal { - position: fixed; - left: 0; - top: 0; - bottom: 0; - right: 0; - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; - overscroll-behavior: contain; - background-color: var(--dim-background-color); - outline: none; - z-index: 100; - opacity: 1; - visibility: visible; - transition: - opacity var(--animation-duration2) ease-out, - visibility 0s linear; -} -.modal[hidden] { - opacity: 0; - visibility: hidden; - transition: - opacity var(--animation-duration2) ease-in, - visibility 0s linear var(--animation-duration2); -} -.modal[hidden]:not(.hidden-animating) { - display: none; -} -.modal-content { - max-width: 100%; - max-height: 100%; - width: var(--modal-width); - height: var(--modal-height); - background-color: var(--background-color-light); - flex: 0 1 auto; - border-radius: 0.5em; - transform: translate(0, 0); - transition: - transform var(--animation-duration2) ease-out, - width var(--animation-duration2) ease-in-out, - height var(--animation-duration2) ease-in-out, - border-radius var(--animation-duration2) ease-in-out; - box-shadow: var(--shadow-vertical); - display: flex; - flex-flow: column nowrap; - overflow: hidden; -} -.modal[hidden] .modal-content { - pointer-events: none; -} -.modal-content.modal-content-small { - width: var(--modal-width-small); - min-height: var(--modal-height-small); - height: auto; - max-height: 100%; -} -.modal-content.modal-content-medium { - width: var(--modal-width-medium); - min-height: var(--modal-height-medium); - height: auto; - max-height: 100%; -} -.modal-content.modal-content-full { - width: var(--content-width); - height: 100%; - transform: translate(0, 0); - border-radius: 0; -} -.modal[hidden] .modal-content { - transform: translate(0, var(--modal-transition-offset)); - transition: - transform 0s linear var(--animation-duration2), - width var(--animation-duration2) ease-in-out, - height var(--animation-duration2) ease-in-out, - border-radius var(--animation-duration2) ease-in-out; -} -.modal-header { - flex: 0 0 auto; - padding: var(--modal-padding-vertical) var(--modal-padding-horizontal) var(--modal-padding-vertical-half); - display: flex; - width: 100%; - align-items: center; - box-sizing: border-box; -} -.modal-title { - font-size: 1.125em; - flex: 1 1 auto; -} -.modal-footer { - flex: 0 0 auto; - padding: var(--modal-padding-vertical-half) var(--modal-padding-horizontal) var(--modal-padding-vertical); - margin-right: calc(var(--modal-button-spacing) * -1); - margin-top: calc(var(--modal-button-spacing) * -1); - display: flex; - flex-flow: row wrap; - align-items: flex-end; - justify-items: flex-end; - justify-content: flex-end; -} -.modal-footer>* { - margin-right: var(--modal-button-spacing); - margin-top: var(--modal-button-spacing); -} -.modal-body { - flex: 1 1 auto; - overflow: auto; - padding: var(--modal-padding-vertical-half) var(--modal-padding-horizontal); -} -.modal-body-addon { - flex: 0 0 auto; - padding: var(--modal-padding-vertical-half) var(--modal-padding-horizontal); -} -.modal-body>.settings-item, -.modal-settings-group>.settings-item { - margin-left: calc(var(--modal-padding-horizontal) * -1); -} -.modal-body .settings-item { - margin-right: calc(var(--modal-padding-horizontal) * -1); -} -.modal-body .settings-item+.settings-item { - border-top: none; -} -.modal-body .settings-item-left { - padding-left: var(--modal-padding-horizontal); - padding-top: var(--settings-group-inner-horizontal-padding-fourth); - padding-bottom: var(--settings-group-inner-horizontal-padding-fourth); -} -.modal-body .settings-item-right { - padding-right: var(--modal-padding-horizontal); - padding-top: var(--settings-group-inner-horizontal-padding-fourth); - padding-bottom: var(--settings-group-inner-horizontal-padding-fourth); -} -.modal-body .settings-item-children { - padding-left: var(--modal-padding-horizontal); - padding-right: var(--modal-padding-horizontal); - padding-bottom: var(--settings-group-inner-horizontal-padding-fourth); -} - -.modal.modal-left { - display: flex; - flex-flow: row nowrap; - width: 100%; - height: 100%; - background-color: transparent; - pointer-events: none; -} -.modal-content-container { - pointer-events: none; - width: 100%; - height: 100%; - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; -} - -.modal-content-container>.modal-content, -.modal-content-container>.modal-content-dimmer { - pointer-events: auto; -} - -.modal-content-container>.modal-content-dimmer { - background: var(--custom-css-modal-background); - width: var(--custom-css-dim-size); - height: 100%; - margin-right: calc(100% - var(--custom-css-dim-size)); - position: absolute; -} - -.modal-header-button-container { - margin-top: calc(-1 * var(--modal-padding-vertical-half)); - margin-bottom: calc(-1 * var(--modal-padding-vertical-half)); -} -.modal-header-button-group { - display: block; - position: relative; - width: var(--icon-button-size); - height: var(--icon-button-size); -} -.modal-header-button { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; -} -button.icon-button.modal-header-button { - --button-content-color: var(--button-default-icon-color-light); - --button-hover-content-color: var(--button-default-icon-color); - --button-active-content-color: var(--button-default-icon-color); -} -button.icon-button.modal-header-button>.icon-button-inner>.icon { - transition: background-color var(--animation-duration) ease-in-out; -} -.modal-header-button[data-modal-action=expand], -.modal-header-button[data-modal-action=collapse] { - visibility: visible; - opacity: 1; - z-index: 1; - transition: - opacity var(--animation-duration2) ease-in-out 0s, - visibility 0s ease-in-out 0s; -} -.modal-content.modal-content-full .modal-header-button[data-modal-action=expand], -.modal-content:not(.modal-content-full) .modal-header-button[data-modal-action=collapse] { - visibility: hidden; - opacity: 0; - pointer-events: none; - z-index: 0; - transition: - opacity var(--animation-duration2) ease-in-out 0s, - visibility 0s ease-in-out var(--animation-duration2); -} - -.modal-separator-line { - border-top: var(--thin-border-size) solid var(--separator-color1); - margin: 0 calc(var(--modal-padding-horizontal) * -1); -} -.modal-separator-line-light { - border-top: var(--thin-border-size) solid var(--separator-color2); - margin: 0 calc(var(--modal-padding-horizontal) * -1); -} - - -/* Status footer */ -.status-footer-container { - position: fixed; - left: 0; - top: 0; - right: 0; - bottom: 0; - display: flex; - flex-flow: row nowrap; - justify-content: flex-end; - align-items: stretch; - pointer-events: none; - z-index: 2; -} -.status-footer-container2 { - display: flex; - flex-flow: column nowrap; - justify-content: flex-end; - align-items: center; - width: 100%; - height: 100%; - box-sizing: border-box; -} -.status-footer-container::after { - /* Used to add scrollbar width to get better alignment with the main content container */ - content: ''; - display: block; - flex: 0 0 auto; - overflow-y: scroll; - visibility: hidden; -} -.status-footer { - max-width: var(--content-width); - max-height: 100%; - width: 100%; - pointer-events: auto; - overflow: auto; - flex: 0 1 auto; - padding: 0.375em 0; - box-sizing: border-box; - box-shadow: var(--shadow-vertical-top); - background-color: var(--background-color-light); - border-radius: var(--settings-group-border-radius) var(--settings-group-border-radius) 0 0; - transform: none; - opacity: 1; - transition: - transform var(--animation-duration) ease-out, - opacity var(--animation-duration) ease-out; -} -.status-footer-container[hidden] .status-footer { - transform: translate(0, 100%); - opacity: 0; - transition: - transform var(--animation-duration) ease-in, - opacity var(--animation-duration) ease-in; -} -.status-footer-container[hidden]:not(.hidden-animating) { - display: none; -} -.status-footer-header { - display: flex; - width: 100%; - flex-flow: row nowrap; - align-items: center; - padding: 0.375em 0.75em; - box-sizing: border-box; -} -.status-footer-header-label { - font-weight: bold; - flex: 1 1 auto; -} -.status-footer-item { - padding: 0.375em 0.75em; -} - - -/* Floating action button container */ -.fab-container { - display: flex; - visibility: hidden; - align-items: stretch; - position: fixed; - left: 0; - bottom: 0; - top: 0; - right: 0; - pointer-events: none; - z-index: 10; -} -.fab-container::after { - content: ''; - display: block; - overflow-y: scroll; - overflow-x: hidden; - visibility: hidden; -} -.fab-container-left { - flex: 1 1 0; -} -.fab-container-center { - flex: 1 1 auto; - width: var(--content-width); - padding: 0 var(--main-content-padding); - max-width: var(--content-width); - box-sizing: border-box; - display: flex; - justify-content: flex-end; -} -.fab-container-right { - flex: 1 1 0; - position: relative; -} -.fab-container-right-inner1 { - position: absolute; - right: 0; - top: 0; - bottom: 0; - width: 100%; - min-width: 100%; - max-width: 100%; - transition: - width var(--animation-duration) ease-in-out, - max-width var(--animation-duration) ease-in-out; -} -.fab-container-right-inner2 { - display: flex; - flex-flow: column nowrap; - position: absolute; - right: 100%; - bottom: 0; - padding: 0 var(--fab-button-padding) 0 0; -} -.fab-container-item { - padding-bottom: var(--fab-button-padding); -} -button.fab-button { - --button-content-color: var(--button-default-text-color); - --button-border-color: transparent; - --button-background-color: transparent; - --button-shadow: none; - - --button-hover-border-color: transparent; - --button-hover-background-color: transparent; - --button-hover-shadow: none; - - --button-active-border-color: transparent; - --button-active-background-color: transparent; - --button-active-shadow: none; - - display: block; - padding: 0; - margin: 0; - pointer-events: all; -} -button.fab-button>.icon-button-inner { - width: var(--fab-button-size); - height: var(--fab-button-size); -} -.fab-button-background { - position: absolute; - display: block; - content: ''; - left: 0; - top: 0; - right: 0; - bottom: 0; - border-radius: 50%; - background-color: var(--accent-color); - box-shadow: var(--shadow-vertical); -} -button.fab-button>.icon-button-inner>.icon { - background-color: var(--button-content-color); -} -.fab-container-item.fab-container-item-popup-preview { - display: none; -} - - -/* Progress */ -.progress-labels { - display: flex; - flex-flow: row nowrap; - width: 100%; -} -.progress-info { - flex: 1 0 auto; -} -.progress-status { - text-align: right; - flex: 1 0 auto; - white-space: nowrap; -} -.progress-bar-track { - width: 100%; - height: 4px; - background-color: var(--input-background-color); -} -.progress-bar { - width: 0; - height: 100%; - background-color: var(--accent-color); -} -.progress-bar.danger { - background-color: var(--danger-color); -} - - -/* Tabs */ -.tabs-container { - display: flex; - flex-flow: row nowrap; - align-items: stretch; - margin-left: calc(-1 * var(--modal-padding-horizontal)); - margin-right: calc(-1 * var(--modal-padding-horizontal)); - position: relative; -} -.tabs { - flex: 1 1 auto; - display: flex; - flex-flow: row wrap; - align-items: stretch; - height: 2.75em; - overflow: hidden; -} -.tab { - cursor: pointer; - flex: 1 1 auto; -} -.tab>input[type='radio'] { - opacity: 0; - width: 0; - height: 0; - display: block; - margin: 0; - padding: 0; - border: none; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; -} -.tab-inner { - display: flex; - flex-flow: row nowrap; - align-items: center; - justify-content: center; - position: relative; - height: 100%; - padding: 0 1em; -} -.tab-inner::before { - content: ''; - display: block; - position: absolute; - pointer-events: none; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: var(--text-color-light3); - opacity: 0; - transition: - background-color var(--animation-duration) ease-in-out, - opacity var(--animation-duration) ease-in-out; -} -.tab>input[type='radio']:checked~.tab-inner::before { - background-color: var(--accent-color); -} -.tab>input[type='radio']:hover~.tab-inner::before, -.tab>input[type='radio']:focus~.tab-inner::before { - opacity: 0.125; -} -.tab>input[type='radio']:active~.tab-inner::before { - opacity: 0.25; -} -.tab>input[type='radio']:focus:not(:focus-visible)~.tab-inner::before { - opacity: 0; -} -.tab>input[type='radio']:focus-visible~.tab-inner::before, -.tab>input[type='radio']:hover:focus-visible~.tab-inner::before, -.tab>input[type='radio']:hover:not(:focus-visible)~.tab-inner::before { - opacity: 0.125; -} -.tab>input[type='radio']:active:focus-visible~.tab-inner::before, -.tab>input[type='radio']:active:not(:focus-visible)~.tab-inner::before { - opacity: 0.25; -} -.tab-inner::after { - content: ''; - display: block; - position: absolute; - pointer-events: none; - left: 0; - right: 0; - bottom: 0; - height: 0em; - background-color: var(--accent-color); - transition: height var(--animation-duration) ease-in-out; -} -.tab>input[type='radio']:checked~.tab-inner::after { - height: 0.2em; -} -.tab-label { - position: relative; - display: block; - font-weight: bold; - font-size: calc(12em / var(--font-size-no-units)); - color: var(--text-color-light3); - transition: color var(--animation-duration) ease-in-out; -} -.tab>input[type='radio']:checked~.tab-inner>.tab-label { - color: var(--accent-color); -} -.tabs-right { - flex: 0 0 auto; - flex-flow: row nowrap; - align-items: center; - justify-content: center; - padding: 0 var(--modal-padding-horizontal); - height: 2.75em; -} -.tabs-right:not([hidden]) { - display: flex; -} - - -/* Conditional styles */ -body.sidebar-visible .content-dimmer { - visibility: visible; - opacity: 1; -} -body.sidebar-visible .sidebar, -body.sidebar-visible .sidebar:hover { - max-width: var(--sidebar-size); - transition: max-width var(--animation-duration) ease-out; -} -body.sidebar-visible .sidebar-inner { - box-shadow: var(--shadow-right); -} -body.sidebar-visible .fab-container { - visibility: visible; -} -body.sidebar-visible .content-left { - z-index: 4; -} - -body.preview-sidebar-visible .content-dimmer { - visibility: visible; - opacity: 1; -} -body.preview-sidebar-visible .preview-sidebar { - width: 70vw; - max-width: var(--preview-sidebar-expanded-width); - box-shadow: var(--shadow-left); -} -body.preview-sidebar-visible .content-right { - z-index: 5; -} -body.preview-sidebar-visible .fab-container-right-inner1 { - width: 70vw; - max-width: var(--preview-sidebar-expanded-width); -} -body.preview-sidebar-visible .fab-container { - visibility: visible; -} -body.sidebar-visible .fab-container-item.fab-container-item-popup-preview, -body.preview-sidebar-visible .fab-container-item.fab-container-item-popup-preview { - display: block; -} - - -/* Specialized settings styles */ -#audio-source-list>div+div { - margin-top: 0.375em; -} -#audio-source-list .generic-list-index-prefix { - width: 2em; - text-align: center; -} -#audio-source-list-empty { - display: none; -} -.audio-source { - display: flex; - flex-flow: row nowrap; - align-items: center; - align-content: flex-start; - justify-content: flex-start; -} -.audio-source-inner { - margin: 0 0.375em; - flex: 1 1 auto; - display: flex; - flex-flow: row wrap; - align-items: center; - align-content: flex-start; - justify-content: flex-start; -} -.audio-source-type-select { - flex: 1 0 auto; - width: calc(var(--input-width-large) + 2em); - margin: 0.125em 0; -} -.audio-source-parameter-container { - margin: 0.125em 0; - flex: 1e8 1 auto; - flex-flow: row nowrap; - align-items: center; - align-content: flex-start; - justify-content: flex-start; -} -.audio-source-parameter-container:not([hidden]) { - display: flex; -} -.audio-source-parameter-label { - flex: 0 0 auto; - margin: 0 0.375em; -} -.audio-source-parameter { - flex: 1 1 auto; -} - -.profile-add-button-container { - display: flex; - flex-flow: row nowrap; - justify-content: flex-end; -} -.profile-entry-header { - display: flex; - flex-flow: row nowrap; - align-items: center; -} -.profile-entry-header-text { - font-size: var(--font-size-small); - line-height: 1; - text-align: left; -} -.profile-entry { - width: 100%; - display: flex; - flex-flow: row nowrap; - align-items: center; - margin-bottom: 0.25em; -} -.profile-entry-cell:nth-child(1) { - flex: 0 0 auto; - min-width: 2em; - text-align: center; -} -.profile-entry-cell:nth-child(2) { - flex: 0 0 auto; - text-align: center; - width: 3.5em; -} -.profile-entry-cell:nth-child(3) { - flex: 1 1 auto; -} -.profile-entry-cell:nth-child(4) { - flex: 0 0 auto; - min-width: 4em; - text-align: center; - align-self: stretch; -} -.profile-entry-cell:nth-child(5) { - flex: 0 0 auto; - width: 2.75em; - text-align: right; -} -input[type=text].profile-entry-name-input { - width: 100%; -} -.profile-entry-condition-count-link { - display: flex; - flex-flow: row nowrap; - width: 100%; - height: 100%; - align-items: center; - justify-content: center; -} - -.profile-condition-groups { - margin-left: calc(var(--modal-padding-horizontal) * -1); - margin-right: calc(var(--modal-padding-horizontal) * -1); - padding-left: var(--modal-padding-horizontal); - padding-right: var(--modal-padding-horizontal); - border-top: var(--thin-border-size) solid var(--separator-color2); -} -.profile-condition-group-list-info { - display: flex; - flex-flow: row nowrap; - width: 100%; - align-items: center; - margin-top: 0.5em; -} -.profile-condition-group-list-info-space { - flex: 1 1 auto; -} -.profile-condition-groups-empty-info { - flex: 1 1 auto; -} -.profile-condition-groups:not(:empty)+.profile-condition-group-list-info>.profile-condition-groups-empty-info { - display: none; -} -.profile-condition-group { - margin-top: 0.5em; - margin-bottom: 0.5em; -} -.profile-condition-list-info { - width: 100%; - display: flex; - align-items: center; - margin-bottom: 1em; -} -.profile-condition-list-info-space { - flex: 1 1 auto; -} -.profile-condition-group-separator-label { - width: 2.5em; - text-align: center; - margin-right: 0.25em; -} -.profile-condition-group:last-child>.profile-condition-list-info>.profile-condition-group-separator-label { - display: none; -} - -.profile-condition { - display: flex; - width: 100%; - flex-flow: row nowrap; - align-items: flex-start; - margin-bottom: 0.25em; -} -.profile-condition-inner { - display: flex; - width: 100%; - flex-flow: row wrap; - align-items: center; - margin-top: -0.25em; - margin-left: -0.25em; -} -.profile-condition-inner>* { - margin-left: 0.25em; - margin-top: 0.25em; -} -.profile-condition-prefix { - width: 2.5em; - text-align: center; - flex: 0 0 auto; - height: var(--input-height); - display: flex; - align-items: center; - justify-content: center; - margin-right: 0.25em; -} -.profile-condition-prefix::after { - content: 'if'; -} -.profile-condition:nth-child(n+2)>.profile-condition-prefix::after { - content: 'and'; -} -select.profile-condition-type, -select.profile-condition-operator { - width: auto; - padding-left: 1em; - padding-right: 1em; - flex: 1 0 auto; -} -.profile-condition-input-container { - flex: 1000000 1 auto; - display: flex; - flex-flow: row nowrap; - align-items: center; -} -.profile-condition-input { - width: 100%; - flex: 1 1 auto; -} -.profile-condition-menu-button-container { - margin-left: 0.25em; -} - -.anki-card-fields { - display: grid; - grid-template-columns: auto 1fr; - grid-template-rows: auto; - align-items: center; - width: 100%; - margin-top: 0.5em; -} -.anki-card-field-name-header { - font-weight: bold; - margin-right: 1em; -} -.anki-card-field-input-header { - font-weight: bold; -} -.anki-card-field-name-container { - display: flex; - flex-flow: row nowrap; - align-self: stretch; - align-items: center; - margin-top: 0.25em; - margin-right: 0.25em; - padding: 0 0.25em; -} -.anki-card-field-name-container[data-invalid=true], -.anki-card-field-name-container[data-order-matches=false][data-index='0'] { - background-color: var(--danger-color-lightest); - border-radius: var(--input-border-radius); -} -.anki-card-field-name { - flex: 1 1 auto; -} -.anki-card-field-value-container { - width: 100%; - margin-top: 0.25em; -} -input.anki-card-field-value { - flex: 1 1 auto; - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -#anki-error-message-details { - margin-top: 0.25em; - font-family: 'Courier New', Courier, monospace; - white-space: pre; - overflow-x: auto; -} - -.anki-field-marker-info-table { - width: 100%; - border-collapse: collapse; - border-spacing: 0; -} -.anki-field-marker-info-table tr.anki-field-marker-info-table-heading { - font-weight: bold; - background-color: var(--input-background-color); -} -.anki-field-marker-info-table td { - vertical-align: top; - border: 1px solid var(--separator-color1); - margin: 0; - padding: 0.25em; -} -.anki-field-marker-info-table td:nth-child(n+2) { - border-left: none; -} -.anki-field-marker-info-table td:nth-last-child(n+2) { - border-right: none; -} -code.anki-field-marker { - white-space: nowrap; - font-size: 0.85em; - font-weight: bold; -} - -.anki-card-templates-layout { - display: flex; - flex-flow: column nowrap; -} -.anki-card-templates-info { - flex: 0 1 auto; -} -.anki-card-templates-test-input-container { - width: 100%; -} -.anki-card-templates-test-container { - flex: 0 1 auto; -} -.anki-card-templates-test-table { - display: grid; - grid-template-columns: auto 1fr auto; - grid-template-rows: auto; - align-items: center; - width: 100%; - box-sizing: border-box; - column-gap: 0.85em; -} -.anki-card-templates-test-table-header { - font-size: var(--font-size-small); -} -#anki-card-templates-textarea { - flex: 1 1 auto; - width: 100%; - max-width: 100%; - box-sizing: border-box; - resize: none; - min-height: calc(var(--textarea-line-height) * 5 + var(--textarea-padding) * 2); -} - -.generate-anki-notes-layout { - display: flex; - flex-flow: column nowrap; -} -.generate-anki-notes-info { - flex: 0 1 auto; -} -.generate-anki-notes-test-container { - flex: 0 1 auto; -} -.generate-anki-notes-test-table { - display: grid; - grid-template-columns: 1fr auto; - grid-template-rows: auto; - align-items: center; - width: 100%; - box-sizing: border-box; - column-gap: 0.85em; -} -.generate-anki-notes-test-table-header { - font-size: var(--font-size-small); -} -#generate-anki-notes-textarea { - flex: 1 1 auto; - width: 100%; - max-width: 100%; - box-sizing: border-box; - resize: none; - min-height: calc(var(--textarea-line-height) * 5 + var(--textarea-padding) * 2); -} -#generate-anki-notes-test-text-input { - width: 100%; -} - -.code { - flex: 0 0 auto; - width: 100%; - max-width: 100%; - min-height: calc(var(--textarea-line-height) + var(--textarea-padding) * 2); - box-sizing: border-box; - padding: var(--textarea-padding); - font-family: 'Courier New', Courier, monospace; - background-color: var(--input-background-color); - border: none; - border-radius: var(--input-border-radius); - line-height: var(--textarea-line-height); - overflow: auto; - white-space: pre; -} - -.custom-popup-css-container { - display: flex; - flex-flow: column nowrap; -} -.custom-popup-css-header { - font-size: var(--font-size-small); -} -#custom-popup-css, -#custom-popup-outer-css { - flex: 1 1 auto; - width: 100%; - max-width: 100%; - box-sizing: border-box; - resize: none; - min-height: calc(var(--textarea-line-height) * 5 + var(--textarea-padding) * 2); -} - -.scan-input-list { - margin: 0 calc(var(--modal-padding-horizontal) * -1); -} -.scan-input { - margin: 0.5em 0; -} -.scan-input+.scan-input { - border-top: var(--thin-border-size) solid var(--separator-color2); -} -.scan-input-grid { - display: grid; - grid-template-columns: auto auto 1fr auto; - grid-template-rows: auto; - width: 100%; - column-gap: 0.25em; - row-gap: 0.25em; - margin: 0.5em 0; - padding: 0 var(--modal-padding-horizontal); - box-sizing: border-box; -} -.scan-input-menu-button-cell { - grid-area: 1/4/2/5; -} -.scan-input-index-cell { - grid-area: 1/1/2/2; - align-self: center; - width: 2em; - text-align: center; -} -.scan-input-prefix-cell { - align-self: center; - padding-right: 0.5em; - display: flex; - flex-flow: row nowrap; - align-items: center; - white-space: nowrap; -} -.scan-input-content-cell { - width: 100%; -} -.scan-input-prefix-cell[data-property=include] { - grid-area: 1/2/2/3; -} -.scan-input-prefix-cell[data-property=exclude] { - grid-area: 2/2/3/3; -} -.scan-input-prefix-cell[data-property=types] { - grid-area: 3/2/4/3; -} -.scan-input-prefix-cell[data-property=search-options] { - grid-area: 4/2/5/3; -} -.scan-input-prefix-cell[data-property=touch-options] { - grid-area: 5/2/6/3; -} -.scan-input-prefix-cell[data-property=pen-options] { - grid-area: 6/2/7/3; -} -.scan-input-content-cell[data-property=include] { - grid-area: 1/3/2/4; -} -.scan-input-content-cell[data-property=exclude] { - grid-area: 2/3/3/4; -} -.scan-input-content-cell[data-property=types] { - grid-area: 3/3/4/4; - display: flex; - flex-flow: row wrap; - align-items: center; -} -.scan-input-content-cell[data-property=search-options] { - grid-area: 4/3/5/4; - display: flex; - flex-flow: row wrap; - align-items: center; -} -.scan-input-content-cell[data-property=touch-options] { - grid-area: 5/3/6/4; - display: flex; - flex-flow: column nowrap; - align-items: flex-start; -} -.scan-input-content-cell[data-property=pen-options] { - grid-area: 6/3/7/4; - display: flex; - flex-flow: column nowrap; - align-items: flex-start; -} -.scan-input-options-cell { - padding: 0.25em 0; - align-self: start; -} -.scan-input:not([data-show-advanced=true]) .scan-input-advanced-only { - display: none; -} -.scan-input-checkbox-item { - display: flex; - flex-flow: row nowrap; - align-items: center; - margin-right: 0.75em; - cursor: pointer; -} -.scan-input-checkbox-item>span { - padding-left: 0.375em; -} -.scan-input-option-heading { - font-weight: bold; -} -.scan-input-option-group { - display: flex; - flex-flow: column nowrap; - padding-left: 1.5em; - align-items: flex-start; -} - -.translation-text-replacement-entry { - display: grid; - grid-template-columns: auto auto 1fr auto; - grid-template-rows: auto; - grid-template-areas: - 'index pattern-label pattern button' - '. replacement-label replacement button' - '. test-label test .'; - column-gap: 0.25em; - row-gap: 0.25em; - align-items: stretch; - justify-items: stretch; -} -.translation-text-replacement-entry+.translation-text-replacement-entry { - margin-top: 0.5em; -} -.translation-text-replacement-index { - grid-area: index; - align-self: center; - justify-self: start; - padding-right: 0.5em; -} -.translation-text-replacement-pattern-label { - grid-area: pattern-label; - align-self: center; - justify-self: start; - padding-right: 0.5em; -} -.translation-text-replacement-replacement-label { - grid-area: replacement-label; - align-self: center; - justify-self: start; - padding-right: 0.5em; -} -.translation-text-replacement-pattern-container { - grid-area: pattern; - align-self: stretch; - justify-self: stretch; - display: flex; - flex-flow: row nowrap; - align-items: stretch; -} -.translation-text-replacement-replacement-container { - grid-area: replacement; - align-self: stretch; - justify-self: stretch; - display: flex; - flex-flow: row nowrap; - align-items: stretch; -} -input.translation-text-replacement-pattern, -input.translation-text-replacement-replacement { - flex: 1 1 auto; - width: auto; -} -.translation-text-replacement-checkbox-container { - white-space: nowrap; - display: flex; - flex-flow: row nowrap; - align-items: center; - padding-left: 0.5em; -} -.translation-text-replacement-checkbox-label { - padding-left: 0.5em; -} -.translation-text-replacement-button { - grid-area: button; - align-self: center; - justify-self: start; -} -.translation-text-replacement-test-label { - grid-area: test-label; - align-self: center; - justify-self: start; - padding-right: 0.5em; -} -.translation-text-replacement-test-container { - grid-area: test; - align-self: stretch; - justify-self: stretch; - display: flex; - flex-flow: row nowrap; - align-items: stretch; -} -input.translation-text-replacement-test-input, -input.translation-text-replacement-test-output { - flex: 1 1 auto; - width: auto; -} -.translation-text-replacement-test-label-inner { - grid-area: button; - align-self: center; - justify-self: start; - flex: 0 0 auto; - padding: 0 0.5em; - white-space: nowrap; -} -.translation-text-replacement-entry:not([data-test-visible=true]) .translation-text-replacement-test-node { - display: none; -} - -.sentence-termination-character-list-table { - width: 100%; - table-layout: fixed; - border-spacing: 0.25em; - margin-top: 0.5em; - min-width: 400px; -} -.sentence-termination-character-list-table thead td { - white-space: nowrap; - font-size: var(--font-size-small); - line-height: 1; - text-align: left; - vertical-align: bottom; - font-weight: normal; -} -.sentence-termination-character-list-table td { - vertical-align: middle; - padding: 0; -} -.sentence-termination-character-list-table td:nth-child(1) { - width: 2em; -} -.sentence-termination-character-list-table td:nth-child(2) { - width: 4em; -} -.sentence-termination-character-list-table td:nth-child(3) { - width: 25%; -} -.sentence-termination-character-list-table td:nth-child(4) { - width: 18.5%; -} -.sentence-termination-character-list-table td:nth-child(5) { - width: 18.5%; -} -.sentence-termination-character-list-table td:nth-child(6) { - width: 40%; -} -.sentence-termination-character-list-table td:nth-child(7) { - width: 3em; -} -select.sentence-termination-character-type, -input.sentence-termination-character-input1, -input.sentence-termination-character-input2 { - width: 100%; -} -.sentence-termination-character-input2-alt { - text-align: center; -} -.sentence-termination-character-entry:not([data-type=quote]) .sentence-termination-character-input2 { - display: none; -} -.sentence-termination-character-entry[data-type=quote] .sentence-termination-character-input2-alt { - display: none; -} -.sentence-termination-character-include-list { - display: flex; - flex-flow: row nowrap; -} -.sentence-termination-character-include { - display: flex; - flex-flow: row nowrap; - white-space: nowrap; - align-items: center; -} -.sentence-termination-character-include>:first-child { - margin-right: 0.375em; -} -.sentence-termination-character-include+.sentence-termination-character-include { - margin-left: 1em; -} -#sentence-termination-character-list-empty { - flex: 0 1 auto; - margin-top: 0.5em; -} - -.hotkey-list { - margin: 0 calc(var(--modal-padding-horizontal) * -1); -} -.hotkey-list-item { - margin: 0.5em 0; -} -.hotkey-list-item+.hotkey-list-item { - border-top: var(--thin-border-size) solid var(--separator-color2); -} -.hotkey-list-item-grid { - display: grid; - grid-template-columns: auto auto 1fr auto; - grid-template-rows: auto; - grid-template-areas: - 'index input-label input button' - '. action-label action .'; - width: 100%; - column-gap: 0.25em; - row-gap: 0.25em; - margin: 0.5em 0; - padding: 0 var(--modal-padding-horizontal); - box-sizing: border-box; -} -.hotkey-list-item-index-cell { - grid-area: index; - align-self: center; - text-align: center; - width: 2em; -} -.hotkey-list-item-button-cell { - grid-area: button; - align-self: center; -} -.hotkey-list-item-input-label-cell { - grid-area: input-label; - align-self: center; -} -.hotkey-list-item-input-cell { - grid-area: input; - display: flex; - flex-flow: row nowrap; - width: 100%; - align-items: stretch; - align-self: center; -} -.hotkey-list-item-input { - flex: 1 1 auto; -} -.hotkey-list-item-action-label-cell { - grid-area: action-label; - align-self: center; -} -.hotkey-list-item-action-cell { - grid-area: action; - align-self: center; - display: flex; - flex-flow: row nowrap; - width: 100%; - align-items: center; -} -.hotkey-list-item-action { - flex: 1 1 auto; -} -.hotkey-list-item-enabled-button-container { - margin-left: 0.375em; -} -button.hotkey-list-item-enabled-button { - display: flex; - flex-flow: row nowrap; - align-items: stretch; - width: auto; -} -button.hotkey-list-item-enabled-button[data-scope-count='0'] { - text-decoration: line-through; -} -.hotkey-list-item-enabled-button-label { - flex: 1 1 auto; - display: flex; - flex-flow: row nowrap; - align-items: center; -} -.hotkey-list-item-enabled-button-label>.checkbox { - margin-right: 0.5em; -} -.hotkey-list-item-action-argument-container { - margin-left: 0.375em; - flex: 1 1 auto; - display: flex; - flex-flow: row nowrap; - align-items: stretch; - width: var(--input-width-large); -} -.hotkey-argument-label { - margin-right: 0.25em; -} -.hotkey-list-item-flex-row { - display: flex; - flex-flow: row nowrap; - align-items: center; -} -.hotkey-list-item-flex-row-label { - margin: 0 0.5em 0 1em; -} - -.hotkey-scope-popup-menu-item-label { - flex: 1 1 auto; - display: flex; - flex-flow: row nowrap; - align-items: center; -} -.hotkey-scope-popup-menu-item-label>.checkbox { - margin-right: 0.5em; -} - -.inline-icon { - position: relative; - width: calc(1em * (16 / var(--font-size-no-units))); - height: calc(1em * (16 / var(--font-size-no-units))); - top: calc(1em * (3 / var(--font-size-no-units))); -} - -.badge { - position: relative; - width: var(--badge-size); - height: var(--badge-size); - margin: 0; - padding: 0; - border-radius: 50%; - box-shadow: var(--shadow-vertical); -} -.badge:not([hidden]) { - display: block; -} -.badge>.icon { - display: block; - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; -} -.badge.badge-small-icon>.icon { - margin: calc(1em / var(--font-size-no-units)); -} -.badge.info-badge { - background-color: var(--accent-color-lighter); -} -.badge.info-badge>.icon { - background-color: var(--accent-color); -} -.badge.warning-badge { - background-color: var(--warning-color-light); -} -.badge.warning-badge>.icon { - background-color: var(--warning-color); -} -.badge.danger-badge { - background-color: var(--danger-color-lighter); -} -.badge.danger-badge>.icon { - background-color: var(--danger-color); -} - -.collapsible-dictionary-list { - width: 100%; - display: flex; - flex-flow: column nowrap; - align-items: stretch; -} -.collapsible-dictionary-item { - display: flex; - flex-flow: row nowrap; - align-items: center; - margin-left: calc(var(--modal-padding-horizontal) * -1); - margin-right: calc(var(--modal-padding-horizontal) * -1); - padding: var(--settings-group-inner-horizontal-padding-fourth) var(--modal-padding-horizontal); -} -.collapsible-dictionary-item:not(:first-child) { - border-top: var(--thin-border-size) solid var(--separator-color2); -} -.collapsible-dictionary-cell { - display: flex; - flex-flow: row nowrap; - align-items: center; -} -.collapsible-dictionary-cell:first-of-type { - flex: 1 1 auto; -} -.collapsible-dictionary-cell:not(:first-of-type) { - flex: 0 0 auto; - margin-left: 1em; -} -.collapsible-dictionary-cell-label { - margin-left: 0.375em; -} - -.page-loading-stalled-notification { - border: 1px solid var(--danger-color); -} -:root:not([data-loading-stalled=true]) .page-loading-stalled-notification { - display: none; -} - -.warn-custom-templates-notification { - border: 1px solid var(--danger-color); -} -:root:not([data-warn-custom-templates=true]) .warn-custom-templates-notification { - display: none; -} - -.test-anki-note-viewer-container { - margin-top: 0.85em; - display: flex; - flex-flow: row wrap; - align-items: flex-start; -} -.test-anki-note-viewer-container>:nth-child(n+2) { - margin-left: 0.5em; -} -.test-anki-note-viewer-button { - flex: 0 0 auto; -} -.test-anki-note-viewer-results { - align-self: center; -} -.test-anki-note-viewer-results[data-success=true] { - color: var(--success-color); -} -.test-anki-note-viewer-results[data-success=false] { - color: var(--danger-color); -} - - -/* Dictionary settings */ -.dictionary-list { - width: 100%; - display: grid; - grid-template-columns: auto auto 1fr auto auto auto auto; - grid-template-rows: auto; - place-items: center start; - margin-top: 0.5em; -} -:root:not([data-advanced=true]) .dictionary-list { - grid-template-columns: auto auto 1fr auto auto auto; -} -.dictionary-list-index { - margin-right: 0.5em; -} -.dictionary-list[data-count='0']>.dictionary-item-top { - display: none; -} -.dictionary-item-button-height { - height: var(--icon-button-size); -} -.dictionary-item { - display: flex; - flex-flow: row nowrap; - align-items: center; - border-top: var(--thin-border-size) solid var(--separator-color2); -} -.dictionary-item-enabled-toggle-container { - margin-right: 0.5em; -} -.dictionary-item-title-container { - flex: 1 1 auto; - display: flex; - flex-flow: row nowrap; - align-items: center; - margin-right: 0.5em; - overflow-wrap: anywhere; -} -.dictionary-title { - color: inherit; - transition: color var(--animation-duration) ease-in-out; -} -.dictionary-item[data-enabled=false] .dictionary-title { - color: var(--text-color-light2); -} -input[type=number].dictionary-priority { - margin-top: 0; - margin-right: 0.5em; -} -.dictionary-outdated-button, -.dictionary-update-available, -.dictionary-integrity-button { - --button-content-color: transparent; - --button-border-color: transparent; - --button-background-color: transparent; - --button-shadow: none; - - --button-hover-content-color: transparent; - --button-hover-border-color: transparent; - --button-hover-background-color: transparent; - --button-hover-shadow: none; - - --button-active-content-color: transparent; - --button-active-border-color: transparent; - --button-active-background-color: transparent; - --button-active-shadow: none; - - --button-disabled-content-color: transparent; - --button-disabled-border-color: transparent; - --button-disabled-background-color: transparent; - --button-disabled-shadow: none; - - --button-padding-vertical: 0; - --button-padding-horizontal: 0; - - margin-left: 0.375em; -} -.dictionary-details-table { - display: table; - width: 100%; -} -.dictionary-details-entry { - display: table-row; -} -.dictionary-details-entry+.dictionary-details-entry>* { - padding-top: 0.25em; -} -.dictionary-details-entry-label { - display: table-cell; - font-weight: bold; - white-space: nowrap; - padding-right: 0.5em; -} -.dictionary-details-entry-info { - display: table-cell; - white-space: pre-line; -} -.dictionary-counts { - width: 100%; - box-sizing: border-box; - font-size: inherit; - max-height: 10em; - line-height: 1.25; - font-family: 'Courier New', Courier, monospace; - white-space: pre; - overflow: auto; -} - -#dictionary-alias-input { - width: 100%; -} - -#dictionary-move-up>span.icon-button-inner, -#dictionary-move-down>span.icon-button-inner { - width: 26px; -} - -/* Secondary search dictionary settings */ -.secondary-search-dictionary-list { - margin-top: 0.5em; -} -.secondary-search-dictionary-item { - padding: 0.375em 0; -} - - -/* Dictionary Import */ -#dictionary-import-url-text { - width: 100%; - height: 4em; - white-space: nowrap; - resize: none; -} - -#dictionary-import-url-button { - flex: auto; -} - -#dictionary-drop-file-zone { - transition: background-color var(--animation-duration) ease-in-out, border var(--animation-duration) ease-in-out; - border: 2px dashed var(--dictionary-import-border-color); - border-radius: 5px; - flex: auto; - min-height: 20em; - user-select: none; - text-align: center; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; -} - -#dictionary-drop-file-zone:hover { - background-color: var(--dictionary-import-hover-background-color); - border: 2px dashed var(--accent-color); -} - -#dictionary-drop-file-zone.drag-over { - border: 2px solid var(--accent-color); - background-color: var(--dictionary-import-border-color-hover); -} - -#dictionary-drag-drop-text { - pointer-events: none; -} - -#dictionary-drag-drop-text>.icon { - display: block; - margin: auto; - background-color: var(--button-default-icon-color); - width: var(--outline-item-icon-size); - height: var(--outline-item-icon-size); -} - -#dictionary-drag-drop-text h1, -#dictionary-drag-drop-text h5 { - margin: 0; - padding: 0; - font-weight: normal; - border-bottom: none; -} - -#dictionary-import-modal .modal-body:has(#dictionary-drop-file-zone) { - display: flex; -} - - -/* Generic layouts */ -.margin-above { - margin-top: 0.85em; -} -.margin-left { - margin-left: 0.85em; -} - -.horizontal-flex { - display: flex; - flex-flow: row wrap; - margin-left: -0.375em; - align-items: center; - align-content: flex-start; - justify-content: flex-start; -} -.horizontal-flex.horizontal-flex-nowrap { - flex-wrap: nowrap; - margin-left: 0; -} -.horizontal-flex>* { - margin-left: 0.375em; -} -.horizontal-flex.horizontal-flex-nowrap>*:first-child { - margin-left: 0; -} -.horizontal-flex-fill { - flex-grow: 1; -} - -.generic-list { - counter-reset: generic-list-index; -} -.generic-list-index-prefix::after { - counter-increment: generic-list-index; - content: counter(generic-list-index); -} -.generic-list:not(:empty)~.generic-list-empty-indicator { - display: none; -} - -.flex-row-nowrap { - display: flex; - flex-flow: row nowrap; - align-items: center; - width: 100%; -} -.flex-row-nowrap.right { - justify-content: flex-end; -} -.flex-row-wrap { - display: flex; - flex-flow: row wrap; - align-items: center; -} -.flex-margin-left { - margin-left: 0.5em; -} - -.flex-column-nowrap { - display: flex; - flex-flow: column nowrap; - align-items: flex-start; - width: 100%; -} -.flex-column-nowrap-spaced>* { - margin-top: 0.25em; -} - -.flex-label { - display: flex; - flex-flow: row nowrap; - align-items: center; -} -.flex-label>span { - margin-left: 0.375em; -} -.flex-label.no-wrap>span { - white-space: nowrap; -} - -.no-wrap { - white-space: nowrap; -} -.overflow-wrap { - word-break: break-all; -} - -.input-prevention-option-list { - margin-top: 0.375em; - display: flex; - flex-flow: column nowrap; - align-items: flex-start; - width: 100%; - padding-left: 0.5em; - box-sizing: border-box; -} -.input-prevention-option-list-item { - display: flex; - flex-flow: row nowrap; - align-items: center; - width: 100%; -} -.input-prevention-option-list-item>:first-child { - flex: 0 0 auto; -} -.input-prevention-option-list-item>:not(:first-child) { - margin-left: 0.375em; - flex: 1 1 auto; -} - -.legal-npm { - flex-grow: 1; - height: 250px; - padding: 0.5em 1em; - border: 0; -} - -/* Environment-specific display */ -:root[data-browser=unknown] [data-show-for-browser], -:root[data-browser=unknown] [data-hide-for-browser], -:root[data-browser=edge] [data-show-for-browser]:not([data-show-for-browser~=edge]), -:root[data-browser=edge-legacy] [data-show-for-browser]:not([data-show-for-browser~=edge-legacy]), -:root[data-browser=chrome] [data-show-for-browser]:not([data-show-for-browser~=chrome]), -:root[data-browser=safari] [data-show-for-browser]:not([data-show-for-browser~=safari]), -:root[data-browser=firefox] [data-show-for-browser]:not([data-show-for-browser~=firefox]), -:root[data-browser=firefox-mobile] [data-show-for-browser]:not([data-show-for-browser~=firefox-mobile]), -:root[data-browser=edge] [data-hide-for-browser~=edge], -:root[data-browser=edge-legacy] [data-hide-for-browser~=edge-legacy], -:root[data-browser=chrome] [data-hide-for-browser~=chrome], -:root[data-browser=safari] [data-hide-for-browser~=safari], -:root[data-browser=firefox] [data-hide-for-browser~=firefox], -:root[data-browser=firefox-mobile] [data-hide-for-browser~=firefox-mobile] { - display: none; -} - -:root[data-os=unknown] [data-show-for-os], -:root[data-os=unknown] [data-hide-for-os], -:root[data-os=mac] [data-show-for-os]:not([data-show-for-os~=mac]), -:root[data-os=win] [data-show-for-os]:not([data-show-for-os~=win]), -:root[data-os=android] [data-show-for-os]:not([data-show-for-os~=android]), -:root[data-os=cros] [data-show-for-os]:not([data-show-for-os~=cros]), -:root[data-os=linux] [data-show-for-os]:not([data-show-for-os~=linux]), -:root[data-os=openbsd] [data-show-for-os]:not([data-show-for-os~=openbsd]), -:root[data-os=mac] [data-hide-for-os~=mac], -:root[data-os=win] [data-hide-for-os~=win], -:root[data-os=android] [data-hide-for-os~=android], -:root[data-os=cros] [data-hide-for-os~=cros], -:root[data-os=linux] [data-hide-for-os~=linux], -:root[data-os=openbsd] [data-hide-for-os~=openbsd] { - display: none; -} - -:root[data-manifest-version=unknown] [data-show-for-manifest-version], -:root[data-manifest-version=unknown] [data-hide-for-manifest-version], -:root[data-manifest-version='2'] [data-show-for-manifest-version]:not([data-show-for-manifest-version~='2']), -:root[data-manifest-version='3'] [data-show-for-manifest-version]:not([data-show-for-manifest-version~='3']), -:root[data-manifest-version='2'] [data-hide-for-manifest-version~='2'], -:root[data-manifest-version='3'] [data-hide-for-manifest-version~='3'] { - display: none; -} - -/* Media-specific styles */ -@media (max-width: 800px), (hover: none) and (max-width: 1100px) { - .fab-container { - visibility: visible; - } -} -@media (max-width: 700px) { - .sidebar-inner { - box-shadow: var(--shadow-right); - } - :root { - --custom-css-dim-size: 100%; - --custom-css-modal-background: var(--dim-background-color); - } -} - -/* Mobile overrides */ - -/* Treat devices that can't hover as mobile devices */ -@media (hover: none) { - #dictionary-move-up>span.icon-button-inner, - #dictionary-move-down>span.icon-button-inner { - width: 36px; - } -} - -/* Dark mode before themes are applied - DO NOT use this for normal theming */ -@media (prefers-color-scheme: dark) { - :root:not([data-loaded=true]) { - background-color: #1e1e1e; - } -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/structured-content.css b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/structured-content.css deleted file mode 100644 index 05bce01..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/css/structured-content.css +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Copyright (C) 2023-2024 Yomitan Authors - * Copyright (C) 2021-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the entrys of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 this program. If not, see . - */ - -/* Glossary images */ -.gloss-image-container { - display: inline-block; - white-space: nowrap; - max-width: 100%; - max-height: 100vh; - position: relative; - vertical-align: top; - line-height: 0; - font-size: calc(1em / var(--font-size-no-units)); - overflow: hidden; -} -.gloss-image-link[data-background=true]>.gloss-image-container { - background-color: var(--gloss-image-background-color); -} -.gloss-image-link { - cursor: inherit; - color: var(--accent-color); - display: inline-block; - position: relative; - line-height: 1; - max-width: 100%; -} -.gloss-image-link:hover { - color: var(--accent-color-dark); -} -.gloss-image-link[href]:hover { - cursor: pointer; -} -.gloss-image-container-overlay { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - font-size: calc(1em * var(--font-size-no-units)); - line-height: var(--line-height); - display: table; - table-layout: fixed; - white-space: normal; - color: var(--text-color-light3); -} -.gloss-image-link[data-has-image=true][data-image-load-state=load-error] .gloss-image-container-overlay::after { - content: 'Image failed to load'; - display: table-cell; - width: 100%; - height: 100%; - vertical-align: middle; - text-align: center; - padding: 0.25em; -} -.gloss-image-background { - --image: none; - - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - background-color: var(--text-color); - -webkit-mask-repeat: no-repeat; - -webkit-mask-position: center center; - -webkit-mask-mode: alpha; - -webkit-mask-size: contain; - -webkit-mask-image: var(--image); - mask-repeat: no-repeat; - mask-position: center center; - mask-mode: alpha; - mask-size: contain; - mask-image: var(--image); -} -.gloss-image { - display: inline-block; - vertical-align: top; - object-fit: contain; - border: none; - outline: none; -} -.gloss-image-link[data-has-aspect-ratio=true] .gloss-image { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; -} -.gloss-image:not([src]) { - display: none; -} -.gloss-image-link[data-image-rendering=pixelated] .gloss-image, -.gloss-image-link[data-image-rendering=pixelated] .gloss-image-background { - image-rendering: auto; - image-rendering: -moz-crisp-edges; - image-rendering: -webkit-optimize-contrast; - image-rendering: pixelated; - image-rendering: crisp-edges; -} -.gloss-image-link[data-image-rendering=crisp-edges] .gloss-image, -.gloss-image-link[data-image-rendering=crisp-edges] .gloss-image-background { - image-rendering: auto; - image-rendering: -moz-crisp-edges; - image-rendering: -webkit-optimize-contrast; - image-rendering: crisp-edges; -} -:root[data-browser=firefox] .gloss-image-link[data-image-rendering=crisp-edges] .gloss-image, -:root[data-browser=firefox] .gloss-image-link[data-image-rendering=crisp-edges] .gloss-image-background, -:root[data-browser=firefox-mobile] .gloss-image-link[data-image-rendering=crisp-edges] .gloss-image, -:root[data-browser=firefox-mobile] .gloss-image-link[data-image-rendering=crisp-edges] .gloss-image-background { - image-rendering: auto; -} -.gloss-image-link[data-has-aspect-ratio=true] .gloss-image-sizer { - display: inline-block; - width: 0; - vertical-align: top; - font-size: 0; -} -.gloss-image-link-text { - display: none; - line-height: var(--line-height); -} -.gloss-image-link-text::before { - content: '['; -} -.gloss-image-link-text::after { - content: ']'; -} -.gloss-image-description { - display: block; - white-space: pre-line; -} - -.gloss-image-link[data-appearance=monochrome] .gloss-image { - opacity: 0; -} -.gloss-image-link:not([data-appearance=monochrome]) .gloss-image-background { - display: none; -} - -.gloss-image-link[data-size-units=em] .gloss-image-container { - font-size: 1em; -} - -.gloss-image-link[data-vertical-align=baseline] { vertical-align: baseline; } -.gloss-image-link[data-vertical-align=sub] { vertical-align: sub; } -.gloss-image-link[data-vertical-align=super] { vertical-align: super; } -.gloss-image-link[data-vertical-align=text-top] { vertical-align: top; } -.gloss-image-link[data-vertical-align=text-bottom] { vertical-align: bottom; } -.gloss-image-link[data-vertical-align=middle] { vertical-align: middle; } -.gloss-image-link[data-vertical-align=top] { vertical-align: top; } -.gloss-image-link[data-vertical-align=bottom] { vertical-align: bottom; } -.gloss-image-link[data-collapsed=true], -:root[data-glossary-layout-mode=compact] .gloss-image-link[data-collapsible=true] { - vertical-align: baseline; -} - -.gloss-image-link[data-collapsed=true] .gloss-image-container, -:root[data-glossary-layout-mode=compact] .gloss-image-link[data-collapsible=true] .gloss-image-container { - display: none; - position: absolute; - left: 0; - top: 100%; - z-index: 1; -} -.entry:nth-last-of-type(1):not(:nth-of-type(1)) .gloss-image-link[data-collapsed=true] .gloss-image-container, -:root[data-glossary-layout-mode=compact] .entry:nth-last-of-type(1):not(:nth-of-type(1)) .gloss-image-link[data-collapsible=true] .gloss-image-container { - bottom: 100%; - top: auto; -} -.gloss-image-link[data-collapsed=true]:hover .gloss-image-container, -.gloss-image-link[data-collapsed=true]:focus .gloss-image-container, -:root[data-glossary-layout-mode=compact] .gloss-image-link[data-collapsible=true]:hover .gloss-image-container, -:root[data-glossary-layout-mode=compact] .gloss-image-link[data-collapsible=true]:focus .gloss-image-container { - display: block; -} -.gloss-image-link[data-collapsed=true] .gloss-image-link-text, -:root[data-glossary-layout-mode=compact] .gloss-image-link[data-collapsible=true] .gloss-image-link-text { - display: inline; -} -.gloss-image-link[data-collapsed=true]~.gloss-image-description, -:root[data-glossary-layout-mode=compact] .gloss-image-description { - display: inline; -} - - -/* Links */ -.gloss-link-text { - vertical-align: baseline; -} -.gloss-link-external-icon { - display: inline-block; - vertical-align: middle; - width: calc(16em / var(--font-size-no-units)); - height: calc(16em / var(--font-size-no-units)); - margin-left: 0.25em; - background-color: var(--link-color); - position: relative; -} - - -/* Structured content glossary styles */ -.gloss-sc-table-container { - display: block; -} -.gloss-sc-table { - table-layout: auto; - border-collapse: collapse; -} -.gloss-sc-thead, -.gloss-sc-tfoot, -.gloss-sc-th { - font-weight: bold; - background-color: var(--background-color-dark1); -} -.gloss-sc-th, -.gloss-sc-td { - border-width: calc(1em / var(--font-size-no-units)); - border-style: solid; - border-color: var(--text-color-light2); - padding: 0.25em; - vertical-align: top; -} -.gloss-sc-ol, -.gloss-sc-ul { - padding-left: var(--list-padding2); -} -:root[data-glossary-layout-mode=compact] .gloss-sc-ul[data-sc-content=glossary] { - display: inline; - list-style: none; - padding-left: 0; -} -:root[data-glossary-layout-mode=compact] .gloss-sc-ul[data-sc-content=glossary] .gloss-sc-li { - display: inline; -} -:root[data-glossary-layout-mode=compact] .gloss-sc-ul[data-sc-content=glossary] .gloss-sc-li:not(:first-child)::before { - white-space: pre-wrap; - content: var(--compact-list-separator); - display: inline; - color: var(--text-color-light3); -} -.gloss-sc-details { - padding-left: var(--list-padding1); -} -.gloss-sc-summary { - list-style-position: outside; -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/audio/button.mp3 b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/audio/button.mp3 deleted file mode 100644 index 7a9728d..0000000 Binary files a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/audio/button.mp3 and /dev/null differ diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/fonts/kanji-stroke-orders.ttf b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/fonts/kanji-stroke-orders.ttf deleted file mode 100644 index 154fa47..0000000 Binary files a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/fonts/kanji-stroke-orders.ttf and /dev/null differ diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/pronunciation-style.json b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/pronunciation-style.json deleted file mode 100644 index 3a69c56..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/pronunciation-style.json +++ /dev/null @@ -1,166 +0,0 @@ -[ - { - "selectors": [".pronunciation-downstep-notation"], - "styles": [ - ["display", "inline"] - ] - }, - { - "selectors": [".pronunciation-text"], - "styles": [ - ["display", "inline"] - ] - }, - { - "selectors": [".pronunciation-mora"], - "styles": [ - ["display", "inline-block"], - ["position", "relative"] - ] - }, - { - "selectors": [".pronunciation-mora-line"], - "styles": [ - ["border-color", "currentColor"] - ] - }, - { - "selectors": [".pronunciation-mora[data-pitch=high]>.pronunciation-mora-line"], - "styles": [ - ["display", "block"], - ["user-select", "none"], - ["pointer-events", "none"], - ["position", "absolute"], - ["top", "0.1em"], - ["left", "0"], - ["right", "0"], - ["height", "0"], - ["border-top-width", "0.1em"], - ["border-top-style", "solid"] - ] - }, - { - "selectors": [".pronunciation-mora[data-pitch=high][data-pitch-next=low]>.pronunciation-mora-line"], - "styles": [ - ["right", "-0.1em"], - ["height", "0.4em"], - ["border-right-width", "0.1em"], - ["border-right-style", "solid"] - ] - }, - { - "selectors": [".pronunciation-mora[data-pitch=high][data-pitch-next=low]"], - "styles": [ - ["padding-right", "0.1em"], - ["margin-right", "0.1em"] - ] - }, - { - "selectors": [".pronunciation-devoice-indicator"], - "styles": [ - ["display", "block"], - ["position", "absolute"], - ["left", "50%"], - ["top", "50%"], - ["width", "1.125em"], - ["height", "1.125em"], - ["border-radius", "50%"], - ["box-sizing", "border-box"], - ["z-index", "1"], - ["transform", "translate(-50%, -50%)"], - ["border", "1.5px dotted #c83c28"] - ] - }, - { - "selectors": [".pronunciation-nasal-indicator"], - "styles": [ - ["display", "block"], - ["position", "absolute"], - ["right", "-0.125em"], - ["top", "0.125em"], - ["width", "0.375em"], - ["height", "0.375em"], - ["border-radius", "50%"], - ["box-sizing", "border-box"], - ["z-index", "1"], - ["border", "1.5px solid #c83c28"] - ] - }, - { - "selectors": [".pronunciation-nasal-diacritic"], - "styles": [ - ["position", "absolute"], - ["width", "0"], - ["height", "0"], - ["opacity", "0"] - ] - }, - { - "selectors": [".pronunciation-character"], - "styles": [ - ["display", "inline"] - ] - }, - { - "selectors": [".pronunciation-character-group"], - "styles": [ - ["display", "inline-block"], - ["position", "relative"] - ] - }, - { - "selectors": [".pronunciation-graph"], - "styles": [ - ["display", "inline-block"], - ["vertical-align", "middle"], - ["height", "1.5em"] - ] - }, - { - "selectors": [ - ".pronunciation-graph-line", - ".pronunciation-graph-line-tail" - ], - "styles": [ - ["fill", "none"], - ["stroke-width", "5"], - ["stroke", "currentColor"] - ] - }, - { - "selectors": [".pronunciation-graph-line-tail"], - "styles": [ - ["stroke-dasharray", "5 5"] - ] - }, - { - "selectors": [".pronunciation-graph-dot"], - "styles": [ - ["stroke-width", "5"], - ["fill", "currentColor"], - ["stroke", "currentColor"] - ] - }, - { - "selectors": [".pronunciation-graph-dot-downstep1"], - "styles": [ - ["fill", "none"], - ["stroke-width", "5"], - ["stroke", "currentColor"] - ] - }, - { - "selectors": [".pronunciation-graph-dot-downstep2"], - "styles": [ - ["fill", "currentColor"] - ] - }, - { - "selectors": [".pronunciation-graph-triangle"], - "styles": [ - ["fill", "none"], - ["stroke-width", "5"], - ["stroke", "currentColor"] - ] - } -] diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/recommended-dictionaries.json b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/recommended-dictionaries.json deleted file mode 100644 index da27b7d..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/recommended-dictionaries.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "ja": { - "terms": [ - { - "name": "Jitendex", - "downloadUrl": "https://github.com/stephenmk/stephenmk.github.io/releases/latest/download/jitendex-yomitan.zip", - "description": "A free and openly licensed Japanese-to-English dictionary with example sentences, usage notes, etymology notes, cross references, antonyms, definition notes.", - "homepage": "https://jitendex.org" - } - ], - "kanji": [ - { - "name": "KANJIDIC", - "downloadUrl": "https://github.com/themoeway/jmdict-yomitan/releases/latest/download/KANJIDIC_english.zip", - "description": "An English dictionary with readings, meanings, stroke order diagrams, frequency, grade level, JLPT level and frequency of kanji characters.", - "homepage": "https://github.com/themoeway/jmdict-yomitan?tab=readme-ov-file#kanjidic-for-yomitan" - } - ], - "frequency": [ - { - "name": "BCCWJ", - "downloadUrl": "https://github.com/Kuuuube/yomitan-dictionaries/releases/download/yomitan-permalink/BCCWJ_SUW_LUW_combined.zip", - "description": "Based on the Balanced Corpus of Contemporary Written Japanese covering books, magazines, newspapers, blogs, forums, textbooks, and legal documents among others.", - "homepage": "https://github.com/Kuuuube/yomitan-dictionaries?tab=readme-ov-file#bccwj-suw-luw-combined" - } - ], - "grammar": [], - "pronunciation": [] - } -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/custom-audio-list-schema.json b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/custom-audio-list-schema.json deleted file mode 100644 index 885ad08..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/custom-audio-list-schema.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "$id": "customAudioList", - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "required": [ - "type", - "audioSources" - ], - "additionalProperties": false, - "properties": { - "type": { - "type": "string", - "const": "audioSourceList" - }, - "audioSources": { - "type": "array", - "items": { - "type": "object", - "required": [ - "url" - ], - "additionalProperties": false, - "properties": { - "name": { - "type": "string" - }, - "url": { - "type": "string" - } - } - } - } - } -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-index-schema.json b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-index-schema.json deleted file mode 100644 index ec8b73b..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-index-schema.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "$id": "dictionaryIndex", - "$schema": "http://json-schema.org/draft-07/schema#", - "definitions": { - "isoLanguageCode": { - "type": "string", - "description": "ISO language code (ISO 639-1 where possible, ISO 639-3 otherwise).", - "pattern": "^[a-z]{2,3}$" - } - }, - "type": "object", - "description": "Index file containing information about the data contained in the dictionary.", - "required": [ - "title", - "revision" - ], - "properties": { - "title": { - "type": "string", - "description": "Title of the dictionary." - }, - "revision": { - "type": "string", - "description": "Revision of the dictionary. This value is displayed, and used to check for dictionary updates." - }, - "sequenced": { - "type": "boolean", - "default": false, - "description": "Whether or not this dictionary contains sequencing information for related terms." - }, - "format": { - "type": "integer", - "description": "Format of data found in the JSON data files.", - "enum": [1, 2, 3] - }, - "version": { - "type": "integer", - "description": "Alias for format.", - "enum": [1, 2, 3] - }, - "author": { - "type": "string", - "description": "Creator of the dictionary." - }, - "isUpdatable": { - "type": "boolean", - "const": true, - "description": "Whether this dictionary contains links to its latest version." - }, - "indexUrl": { - "type": "string", - "description": "URL for the index file of the latest revision of the dictionary, used to check for updates." - }, - "downloadUrl": { - "type": "string", - "description": "URL for the download of the latest revision of the dictionary." - }, - "url": { - "type": "string", - "description": "URL for the source of the dictionary, displayed in the dictionary details." - }, - "description": { - "type": "string", - "description": "Description of the dictionary data." - }, - "attribution": { - "type": "string", - "description": "Attribution information for the dictionary data." - }, - "sourceLanguage": { - "$ref": "#/definitions/isoLanguageCode", - "description": "Language of the terms in the dictionary." - }, - "targetLanguage": { - "$ref": "#/definitions/isoLanguageCode", - "description": "Main language of the definitions in the dictionary." - }, - "frequencyMode": { - "type": "string", - "enum": ["occurrence-based", "rank-based"] - }, - "tagMeta": { - "type": "object", - "description": "Tag information for terms and kanji. This object is obsolete and individual tag files should be used instead.", - "additionalProperties": { - "type": "object", - "description": "Information about a single tag. The object key is the name of the tag.", - "properties": { - "category": { - "type": "string", - "description": "Category for the tag." - }, - "order": { - "type": "number", - "description": "Sorting order for the tag." - }, - "notes": { - "type": "string", - "description": "Notes for the tag." - }, - "score": { - "type": "number", - "description": "Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results." - } - }, - "additionalProperties": false - } - } - }, - "anyOf": [ - { - "required": ["format"] - }, - { - "required": ["version"] - } - ], - "dependencies": { - "isUpdatable": ["indexUrl", "downloadUrl"] - } -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-kanji-bank-v1-schema.json b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-kanji-bank-v1-schema.json deleted file mode 100644 index d13e143..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-kanji-bank-v1-schema.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "$id": "dictionaryKanjiBankV1", - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "array", - "description": "Data file containing kanji information.", - "items": { - "type": "array", - "description": "Information about a single kanji character.", - "minItems": 4, - "maxItems": 4, - "items": [ - { - "type": "string", - "description": "Kanji character.", - "minLength": 1 - }, - { - "type": "string", - "description": "String of space-separated onyomi readings for the kanji character. An empty string is treated as no readings." - }, - { - "type": "string", - "description": "String of space-separated kunyomi readings for the kanji character. An empty string is treated as no readings." - }, - { - "type": "string", - "description": "String of space-separated tags for the kanji character. An empty string is treated as no tags." - } - ], - "additionalItems": { - "type": "string", - "description": "A meaning for the kanji character." - } - } -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-kanji-bank-v3-schema.json b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-kanji-bank-v3-schema.json deleted file mode 100644 index 7927298..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-kanji-bank-v3-schema.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "$id": "dictionaryKanjiBankV3", - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "array", - "description": "Data file containing kanji information.", - "items": { - "type": "array", - "description": "Information about a single kanji character.", - "minItems": 6, - "maxItems": 6, - "additionalItems": false, - "items": [ - { - "type": "string", - "description": "Kanji character.", - "minLength": 1 - }, - { - "type": "string", - "description": "String of space-separated onyomi readings for the kanji character. An empty string is treated as no readings." - }, - { - "type": "string", - "description": "String of space-separated kunyomi readings for the kanji character. An empty string is treated as no readings." - }, - { - "type": "string", - "description": "String of space-separated tags for the kanji character. An empty string is treated as no tags." - }, - { - "type": "array", - "description": "Array of meanings for the kanji character.", - "items": { - "type": "string", - "description": "A meaning for the kanji character." - } - }, - { - "type": "object", - "description": "Various stats for the kanji character.", - "additionalProperties": { - "type": "string" - } - } - ] - } -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-kanji-meta-bank-v3-schema.json b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-kanji-meta-bank-v3-schema.json deleted file mode 100644 index bdbddf9..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-kanji-meta-bank-v3-schema.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "$id": "dictionaryKanjiMetaBankV3", - "$schema": "http://json-schema.org/draft-07/schema#", - "definitions": { - "frequency": { - "oneOf": [ - { - "type": ["string", "number"] - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "value" - ], - "properties": { - "value": { - "type": "number" - }, - "displayValue": { - "type": "string" - } - } - } - ] - } - }, - "type": "array", - "description": "Custom metadata for kanji characters.", - "items": { - "type": "array", - "description": "Metadata about a single kanji character.", - "minItems": 3, - "maxItems": 3, - "additionalItems": false, - "items": [ - { - "type": "string", - "minLength": 1 - }, - { - "type": "string", - "const": "freq", - "description": "Type of data. \"freq\" corresponds to frequency information." - }, - { - "$ref": "#/definitions/frequency", - "description": "Data for the character." - } - ] - } -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-tag-bank-v3-schema.json b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-tag-bank-v3-schema.json deleted file mode 100644 index f3a2f89..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-tag-bank-v3-schema.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "$id": "dictionaryTagBankV3", - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "array", - "description": "Data file containing tag information for terms and kanji.", - "items": { - "type": "array", - "description": "Information about a single tag.", - "minItems": 5, - "maxItems": 5, - "additionalItems": false, - "items": [ - { - "type": "string", - "description": "Tag name." - }, - { - "type": "string", - "description": "Category for the tag." - }, - { - "type": "number", - "description": "Sorting order for the tag." - }, - { - "type": "string", - "description": "Notes for the tag." - }, - { - "type": "number", - "description": "Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results." - } - ] - } -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-term-bank-v1-schema.json b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-term-bank-v1-schema.json deleted file mode 100644 index 4dd6e18..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-term-bank-v1-schema.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "$id": "dictionaryTermBankV1", - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "array", - "description": "Data file containing term information.", - "items": { - "type": "array", - "description": "Information about a single term.", - "minItems": 5, - "maxItems": 5, - "items": [ - { - "type": "string", - "description": "The text for the term." - }, - { - "type": "string", - "description": "Reading of the term, or an empty string if the reading is the same as the term." - }, - { - "type": ["string", "null"], - "description": "String of space-separated tags for the definition. An empty string is treated as no tags." - }, - { - "type": "string", - "description": "String of space-separated rule identifiers for the definition which is used to validate delinflection. Valid rule identifiers are: v1: ichidan verb; v5: godan verb; vs: suru verb; vz: zuru verb; vk: kuru verb; adj-i: i-adjective. An empty string corresponds to words which aren't inflected, such as nouns." - }, - { - "type": "number", - "description": "Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results." - } - ], - "additionalItems": { - "type": "string", - "description": "Single definition for the term." - } - } -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-term-bank-v3-schema.json b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-term-bank-v3-schema.json deleted file mode 100644 index 4730517..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-term-bank-v3-schema.json +++ /dev/null @@ -1,589 +0,0 @@ -{ - "$id": "dictionaryTermBankV3", - "$schema": "http://json-schema.org/draft-07/schema#", - "definitions": { - "structuredContent": { - "oneOf": [ - { - "type": "string", - "description": "Represents a text node." - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/structuredContent", - "description": "An array of child content." - } - }, - { - "type": "object", - "oneOf": [ - { - "type": "object", - "description": "Empty tags.", - "required": [ - "tag" - ], - "additionalProperties": false, - "properties": { - "tag": { - "type": "string", - "const": "br" - }, - "data": { - "$ref": "#/definitions/structuredContentData" - } - } - }, - { - "type": "object", - "description": "Generic container tags.", - "required": [ - "tag" - ], - "additionalProperties": false, - "properties": { - "tag": { - "type": "string", - "enum": ["ruby", "rt", "rp", "table", "thead", "tbody", "tfoot", "tr"] - }, - "content": { - "$ref": "#/definitions/structuredContent" - }, - "data": { - "$ref": "#/definitions/structuredContentData" - }, - "lang": { - "type": "string", - "description": "Defines the language of an element in the format defined by RFC 5646." - } - } - }, - { - "type": "object", - "description": "Table tags.", - "required": [ - "tag" - ], - "additionalProperties": false, - "properties": { - "tag": { - "type": "string", - "enum": ["td", "th"] - }, - "content": { - "$ref": "#/definitions/structuredContent" - }, - "data": { - "$ref": "#/definitions/structuredContentData" - }, - "colSpan": { - "type": "integer", - "minimum": 1 - }, - "rowSpan": { - "type": "integer", - "minimum": 1 - }, - "style": { - "$ref": "#/definitions/structuredContentStyle" - }, - "lang": { - "type": "string", - "description": "Defines the language of an element in the format defined by RFC 5646." - } - } - }, - { - "type": "object", - "description": "Container tags supporting configurable styles.", - "required": [ - "tag" - ], - "additionalProperties": false, - "properties": { - "tag": { - "type": "string", - "enum": ["span", "div", "ol", "ul", "li", "details", "summary"] - }, - "content": { - "$ref": "#/definitions/structuredContent" - }, - "data": { - "$ref": "#/definitions/structuredContentData" - }, - "style": { - "$ref": "#/definitions/structuredContentStyle" - }, - "title": { - "type": "string", - "description": "Hover text for the element." - }, - "lang": { - "type": "string", - "description": "Defines the language of an element in the format defined by RFC 5646." - } - } - }, - { - "type": "object", - "description": "Image tag.", - "required": [ - "tag", - "path" - ], - "additionalProperties": false, - "properties": { - "tag": { - "type": "string", - "const": "img" - }, - "data": { - "$ref": "#/definitions/structuredContentData" - }, - "path": { - "type": "string", - "description": "Path to the image file in the archive." - }, - "width": { - "type": "number", - "description": "Preferred width of the image.", - "minimum": 0 - }, - "height": { - "type": "number", - "description": "Preferred height of the image.", - "minimum": 0 - }, - "title": { - "type": "string", - "description": "Hover text for the image." - }, - "alt": { - "type": "string", - "description": "Alt text for the image." - }, - "description": { - "type": "string", - "description": "Description of the image." - }, - "pixelated": { - "type": "boolean", - "description": "Whether or not the image should appear pixelated at sizes larger than the image's native resolution.", - "default": false - }, - "imageRendering": { - "type": "string", - "description": "Controls how the image is rendered. The value of this field supersedes the pixelated field.", - "enum": ["auto", "pixelated", "crisp-edges"], - "default": "auto" - }, - "appearance": { - "type": "string", - "description": "Controls the appearance of the image. The \"monochrome\" value will mask the opaque parts of the image using the current text color.", - "enum": ["auto", "monochrome"], - "default": "auto" - }, - "background": { - "type": "boolean", - "description": "Whether or not a background color is displayed behind the image.", - "default": true - }, - "collapsed": { - "type": "boolean", - "description": "Whether or not the image is collapsed by default.", - "default": false - }, - "collapsible": { - "type": "boolean", - "description": "Whether or not the image can be collapsed.", - "default": false - }, - "verticalAlign": { - "type": "string", - "description": "The vertical alignment of the image.", - "enum": ["baseline", "sub", "super", "text-top", "text-bottom", "middle", "top", "bottom"] - }, - "border": { - "type": "string", - "description": "Shorthand for border width, style, and color." - }, - "borderRadius": { - "type": "string", - "description": "Roundness of the corners of the image's outer border edge." - }, - "sizeUnits": { - "type": "string", - "description": "The units for the width and height.", - "enum": ["px", "em"] - } - } - }, - { - "type": "object", - "description": "Link tag.", - "required": [ - "tag", - "href" - ], - "additionalProperties": false, - "properties": { - "tag": { - "type": "string", - "const": "a" - }, - "content": { - "$ref": "#/definitions/structuredContent" - }, - "href": { - "type": "string", - "description": "The URL for the link. URLs starting with a ? are treated as internal links to other dictionary content.", - "pattern": "^(?:https?:|\\?)[\\w\\W]*" - }, - "lang": { - "type": "string", - "description": "Defines the language of an element in the format defined by RFC 5646." - } - } - } - ] - } - ] - }, - "structuredContentData": { - "type": "object", - "description": "Generic data attributes that should be added to the element.", - "additionalProperties": { - "type": "string" - } - }, - "structuredContentStyle": { - "type": "object", - "additionalProperties": false, - "properties": { - "fontStyle": { - "type": "string", - "enum": ["normal", "italic"], - "default": "normal" - }, - "fontWeight": { - "type": "string", - "enum": ["normal", "bold"], - "default": "normal" - }, - "fontSize": { - "type": "string", - "default": "medium" - }, - "color": { - "type": "string" - }, - "background": { - "type": "string" - }, - "backgroundColor": { - "type": "string" - }, - "textDecorationLine": { - "oneOf": [ - { - "type": "string", - "enum": ["none", "underline", "overline", "line-through"], - "default": "none" - }, - { - "type": "array", - "items": { - "type": "string", - "enum": ["underline", "overline", "line-through"], - "default": "none" - } - } - ] - }, - "textDecorationStyle": { - "type": "string", - "enum": ["solid", "double", "dotted", "dashed", "wavy"], - "default": "solid" - }, - "textDecorationColor": { - "type": "string" - }, - "borderColor": { - "type": "string" - }, - "borderStyle": { - "type": "string" - }, - "borderRadius": { - "type": "string" - }, - "borderWidth": { - "type": "string" - }, - "clipPath": { - "type": "string" - }, - "verticalAlign": { - "type": "string", - "enum": ["baseline", "sub", "super", "text-top", "text-bottom", "middle", "top", "bottom"], - "default": "baseline" - }, - "textAlign": { - "type": "string", - "enum": ["start", "end", "left", "right", "center", "justify", "justify-all", "match-parent"], - "default": "start" - }, - "textEmphasis": { - "type": "string" - }, - "textShadow": { - "type": "string" - }, - "margin": { - "type": "string" - }, - "marginTop": { - "type": ["number", "string"], - "default": 0 - }, - "marginLeft": { - "type": ["number", "string"], - "default": 0 - }, - "marginRight": { - "type": ["number", "string"], - "default": 0 - }, - "marginBottom": { - "type": ["number", "string"], - "default": 0 - }, - "padding": { - "type": "string" - }, - "paddingTop": { - "type": "string" - }, - "paddingLeft": { - "type": "string" - }, - "paddingRight": { - "type": "string" - }, - "paddingBottom": { - "type": "string" - }, - "wordBreak": { - "type": "string", - "enum": ["normal", "break-all", "keep-all"], - "default": "normal" - }, - "whiteSpace": { - "type": "string", - "default": "normal" - }, - "cursor": { - "type": "string", - "default": "auto" - }, - "listStyleType": { - "type": "string", - "default": "disc" - } - } - } - }, - "type": "array", - "description": "Data file containing term information.", - "items": { - "type": "array", - "description": "Information about a single term.", - "minItems": 8, - "maxItems": 8, - "additionalItems": false, - "items": [ - { - "type": "string", - "description": "The text for the term." - }, - { - "type": "string", - "description": "Reading of the term, or an empty string if the reading is the same as the term." - }, - { - "type": ["string", "null"], - "description": "String of space-separated tags for the definition. An empty string is treated as no tags." - }, - { - "type": "string", - "description": "String of space-separated rule identifiers for the definition which is used to validate deinflection. An empty string should be used for words which aren't inflected." - }, - { - "type": "number", - "description": "Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results." - }, - { - "type": "array", - "description": "Array of definitions for the term.", - "items": { - "oneOf": [ - { - "type": "string", - "description": "Single definition for the term." - }, - { - "type": "object", - "description": "Single detailed definition for the term.", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "description": "The type of the data for this definition.", - "enum": ["text", "image", "structured-content"] - } - }, - "oneOf": [ - { - "required": [ - "type", - "text" - ], - "additionalProperties": false, - "properties": { - "type": { - "type": "string", - "const": "text" - }, - "text": { - "type": "string", - "description": "Single definition for the term." - } - } - }, - { - "required": [ - "type", - "content" - ], - "additionalProperties": false, - "properties": { - "type": { - "type": "string", - "const": "structured-content" - }, - "content": { - "$ref": "#/definitions/structuredContent", - "description": "Single definition for the term using a structured content object." - } - } - }, - { - "required": [ - "type", - "path" - ], - "additionalProperties": false, - "properties": { - "type": { - "type": "string", - "const": "image" - }, - "path": { - "type": "string", - "description": "Path to the image file in the archive." - }, - "width": { - "type": "integer", - "description": "Preferred width of the image.", - "minimum": 1 - }, - "height": { - "type": "integer", - "description": "Preferred height of the image.", - "minimum": 1 - }, - "title": { - "type": "string", - "description": "Hover text for the image." - }, - "alt": { - "type": "string", - "description": "Alt text for the image." - }, - "description": { - "type": "string", - "description": "Description of the image." - }, - "pixelated": { - "type": "boolean", - "description": "Whether or not the image should appear pixelated at sizes larger than the image's native resolution.", - "default": false - }, - "imageRendering": { - "type": "string", - "description": "Controls how the image is rendered. The value of this field supersedes the pixelated field.", - "enum": ["auto", "pixelated", "crisp-edges"], - "default": "auto" - }, - "appearance": { - "type": "string", - "description": "Controls the appearance of the image. The \"monochrome\" value will mask the opaque parts of the image using the current text color.", - "enum": ["auto", "monochrome"], - "default": "auto" - }, - "background": { - "type": "boolean", - "description": "Whether or not a background color is displayed behind the image.", - "default": true - }, - "collapsed": { - "type": "boolean", - "description": "Whether or not the image is collapsed by default.", - "default": false - }, - "collapsible": { - "type": "boolean", - "description": "Whether or not the image can be collapsed.", - "default": true - } - } - } - ] - }, - { - "type": "array", - "description": "Deinflection of the term to an uninflected term.", - "minItems": 2, - "maxItems": 2, - "items": [ - { - "type": "string", - "description": "The uninflected term." - }, - { - "type": "array", - "description": "A chain of inflection rules that produced the inflected term", - "items": { - "type": "string", - "description": "A single inflection rule." - } - } - ] - } - ] - } - }, - { - "type": "integer", - "description": "Sequence number for the term. Terms with the same sequence number can be shown together when the \"resultOutputMode\" option is set to \"merge\"." - }, - { - "type": "string", - "description": "String of space-separated tags for the term. An empty string is treated as no tags." - } - ] - } -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-term-meta-bank-v3-schema.json b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-term-meta-bank-v3-schema.json deleted file mode 100644 index 2dfbdb7..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/dictionary-term-meta-bank-v3-schema.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "$id": "dictionaryTermMetaBankV3", - "$schema": "http://json-schema.org/draft-07/schema#", - "definitions": { - "frequency": { - "oneOf": [ - { - "type": ["string", "number"] - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "value" - ], - "properties": { - "value": { - "type": "number" - }, - "displayValue": { - "type": "string" - } - } - } - ] - } - }, - "type": "array", - "description": "Custom metadata for terms.", - "items": { - "type": "array", - "description": "Metadata about a single term.", - "minItems": 3, - "maxItems": 3, - "additionalItems": false, - "items": [ - { - "type": "string", - "description": "The text for the term." - }, - { - "type": "string", - "enum": ["freq", "pitch", "ipa"], - "description": "Type of data. \"freq\" corresponds to frequency information; \"pitch\" corresponds to pitch information. \"ipa\" corresponds to IPA transcription." - }, - { - "description": "Data for the term." - } - ], - "oneOf": [ - { - "minItems": 3, - "maxItems": 3, - "items": [ - {}, - {"const": "freq"}, - { - "oneOf": [ - { - "$ref": "#/definitions/frequency", - "description": "Frequency information for the term." - }, - { - "type": "object", - "required": [ - "reading", - "frequency" - ], - "additionalProperties": false, - "properties": { - "reading": { - "type": "string", - "description": "Reading for the term." - }, - "frequency": { - "$ref": "#/definitions/frequency", - "description": "Frequency information for the term." - } - } - } - ] - } - ] - }, - { - "minItems": 3, - "maxItems": 3, - "items": [ - {}, - {"const": "pitch"}, - { - "type": "object", - "description": "Pitch accent information for the term.", - "required": [ - "reading", - "pitches" - ], - "additionalProperties": false, - "properties": { - "reading": { - "type": "string", - "description": "Reading for the term." - }, - "pitches": { - "type": "array", - "description": "List of different pitch accent information for the term and reading combination.", - "items": { - "type": "object", - "required": [ - "position" - ], - "additionalProperties": false, - "properties": { - "position": { - "type": "integer", - "description": "Mora position of the pitch accent downstep. A value of 0 indicates that the word does not have a downstep (heiban).", - "minimum": 0 - }, - "nasal": { - "oneOf": [ - { - "type": "integer", - "description": "Position of a mora with nasal sound.", - "minimum": 0 - }, - { - "type": "array", - "description": "Positions of morae with nasal sound.", - "items": { - "type": "integer", - "minimum": 0 - } - } - ] - }, - "devoice": { - "oneOf": [ - { - "type": "integer", - "description": "Position of a mora with devoiced sound.", - "minimum": 0 - }, - { - "type": "array", - "description": "Positions of morae with devoiced sound.", - "items": { - "type": "integer", - "minimum": 0 - } - } - ] - }, - "tags": { - "type": "array", - "description": "List of tags for this pitch accent.", - "items": { - "type": "string", - "description": "Tag for this pitch accent. This typically corresponds to a certain type of part of speech." - } - } - } - } - } - } - } - ] - }, - { - "minItems": 3, - "maxItems": 3, - "items": [ - {}, - {"const": "ipa"}, - { - "type": ["object"], - "description": "IPA transcription information for the term.", - "required": [ - "reading", - "transcriptions" - ], - "additionalProperties": false, - "properties": { - "reading": { - "type": "string", - "description": "Reading for the term." - }, - "transcriptions": { - "type": "array", - "description": "List of different IPA transcription information for the term and reading combination.", - "items": { - "type": "object", - "required": [ - "ipa" - ], - "additionalProperties": false, - "properties": { - "ipa": { - "type": "string", - "description": "IPA transcription for the term." - }, - "tags": { - "type": "array", - "description": "List of tags for this IPA transcription.", - "items": { - "type": "string", - "description": "Tag for this IPA transcription." - } - } - } - } - } - } - } - ] - } - ] - } -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/options-schema.json b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/options-schema.json deleted file mode 100644 index 561ca60..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/options-schema.json +++ /dev/null @@ -1,1300 +0,0 @@ -{ - "$id": "options", - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "required": [ - "version", - "profiles", - "profileCurrent", - "global" - ], - "properties": { - "version": { - "type": "integer", - "minimum": 0, - "default": 0 - }, - "profiles": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": [ - "name", - "conditionGroups", - "options" - ], - "properties": { - "name": { - "type": "string", - "default": "Default" - }, - "conditionGroups": { - "type": "array", - "items": { - "type": "object", - "required": [ - "conditions" - ], - "properties": { - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "operator", - "value" - ], - "properties": { - "type": { - "type": "string" - }, - "operator": { - "type": "string" - }, - "value": {} - } - } - } - } - } - }, - "options": { - "type": "object", - "required": [ - "general", - "popupWindow", - "audio", - "scanning", - "translation", - "dictionaries", - "parsing", - "anki", - "sentenceParsing", - "inputs", - "clipboard", - "accessibility" - ], - "properties": { - "general": { - "type": "object", - "required": [ - "enable", - "language", - "resultOutputMode", - "debugInfo", - "maxResults", - "showAdvanced", - "showDebug", - "popupDisplayMode", - "popupWidth", - "popupHeight", - "popupHorizontalOffset", - "popupVerticalOffset", - "popupHorizontalOffset2", - "popupVerticalOffset2", - "popupHorizontalTextPosition", - "popupVerticalTextPosition", - "popupScalingFactor", - "popupScaleRelativeToPageZoom", - "popupScaleRelativeToVisualViewport", - "showGuide", - "enableContextMenuScanSelected", - "compactTags", - "glossaryLayoutMode", - "mainDictionary", - "popupTheme", - "popupOuterTheme", - "customPopupCss", - "customPopupOuterCss", - "enableWanakana", - "showPitchAccentDownstepNotation", - "showPitchAccentPositionNotation", - "showPitchAccentGraph", - "showIframePopupsInRootFrame", - "useSecurePopupFrameUrl", - "usePopupShadowDom", - "usePopupWindow", - "popupCurrentIndicatorMode", - "popupActionBarVisibility", - "popupActionBarLocation", - "frequencyDisplayMode", - "termDisplayMode", - "sortFrequencyDictionary", - "sortFrequencyDictionaryOrder", - "stickySearchHeader", - "fontFamily", - "fontSize", - "lineHeight" - ], - "properties": { - "enable": { - "type": "boolean", - "default": true - }, - "language": { - "type": "string", - "default": "ja" - }, - "resultOutputMode": { - "type": "string", - "enum": ["group", "merge", "split"], - "default": "group" - }, - "fontFamily": { - "type": "string", - "default": "" - }, - "fontSize": { - "type": "number", - "default": 14 - }, - "lineHeight": { - "type": "string", - "default": "1.5" - }, - "debugInfo": { - "type": "boolean", - "default": false - }, - "maxResults": { - "type": "integer", - "minimum": 1, - "default": 32 - }, - "showAdvanced": { - "type": "boolean", - "default": false - }, - "showDebug": { - "type": "boolean", - "default": false - }, - "popupDisplayMode": { - "type": "string", - "enum": ["default", "full-width"], - "default": "default" - }, - "popupWidth": { - "type": "number", - "minimum": 0, - "default": 400 - }, - "popupHeight": { - "type": "number", - "minimum": 0, - "default": 250 - }, - "popupHorizontalOffset": { - "type": "number", - "default": 0 - }, - "popupVerticalOffset": { - "type": "number", - "default": 10 - }, - "popupHorizontalOffset2": { - "type": "number", - "default": 10 - }, - "popupVerticalOffset2": { - "type": "number", - "default": 0 - }, - "popupHorizontalTextPosition": { - "type": "string", - "enum": ["below", "above"], - "default": "below" - }, - "popupVerticalTextPosition": { - "type": "string", - "enum": ["default", "before", "after", "left", "right"], - "default": "before" - }, - "popupScalingFactor": { - "type": "number", - "default": 1 - }, - "popupScaleRelativeToPageZoom": { - "type": "boolean", - "default": false - }, - "popupScaleRelativeToVisualViewport": { - "type": "boolean", - "default": true - }, - "showGuide": { - "type": "boolean", - "default": true - }, - "enableContextMenuScanSelected": { - "type": "boolean", - "default": true - }, - "compactTags": { - "type": "boolean", - "default": false - }, - "glossaryLayoutMode": { - "type": "string", - "enum": ["default", "compact"], - "default": "default" - }, - "mainDictionary": { - "type": "string" - }, - "popupTheme": { - "type": "string", - "enum": ["light", "dark", "browser", "site"], - "default": "site" - }, - "popupOuterTheme": { - "type": "string", - "enum": ["light", "dark", "browser", "site"], - "default": "site" - }, - "customPopupCss": { - "type": "string", - "default": "" - }, - "customPopupOuterCss": { - "type": "string", - "default": "" - }, - "enableWanakana": { - "type": "boolean", - "default": true - }, - "showPitchAccentDownstepNotation": { - "type": "boolean", - "default": true - }, - "showPitchAccentPositionNotation": { - "type": "boolean", - "default": true - }, - "showPitchAccentGraph": { - "type": "boolean", - "default": false - }, - "showIframePopupsInRootFrame": { - "type": "boolean", - "default": true - }, - "useSecurePopupFrameUrl": { - "type": "boolean", - "default": true - }, - "usePopupShadowDom": { - "type": "boolean", - "default": true - }, - "usePopupWindow": { - "type": "boolean", - "default": false - }, - "popupCurrentIndicatorMode": { - "type": "string", - "enum": ["none", "asterisk", "triangle", "bar-left", "bar-right", "dot-left", "dot-right"], - "default": "triangle" - }, - "popupActionBarVisibility": { - "type": "string", - "enum": ["auto", "always"], - "default": "auto" - }, - "popupActionBarLocation": { - "type": "string", - "enum": ["left", "right", "top", "bottom"], - "default": "top" - }, - "frequencyDisplayMode": { - "type": "string", - "enum": ["tags", "tags-grouped", "split-tags", "split-tags-grouped", "inline-list", "list"], - "default": "split-tags-grouped" - }, - "termDisplayMode": { - "type": "string", - "enum": ["ruby", "ruby-and-reading", "term-and-reading", "term-only"], - "default": "ruby" - }, - "sortFrequencyDictionary": { - "type": ["string", "null"], - "default": null - }, - "sortFrequencyDictionaryOrder": { - "type": "string", - "enum": ["ascending", "descending"], - "default": "descending" - }, - "stickySearchHeader": { - "type": "boolean", - "default": false - } - } - }, - "popupWindow": { - "type": "object", - "required": [ - "width", - "height", - "left", - "top", - "useLeft", - "useTop", - "windowType", - "windowState" - ], - "properties": { - "width": { - "type": "integer", - "minimum": 0, - "default": 400 - }, - "height": { - "type": "integer", - "minimum": 0, - "default": 250 - }, - "left": { - "type": "integer", - "default": 0 - }, - "top": { - "type": "integer", - "default": 0 - }, - "useLeft": { - "type": "boolean", - "default": false - }, - "useTop": { - "type": "boolean", - "default": false - }, - "windowType": { - "type": "string", - "enum": ["normal", "popup"], - "default": "popup" - }, - "windowState": { - "type": "string", - "enum": ["normal", "maximized", "fullscreen"], - "default": "normal" - } - } - }, - "audio": { - "type": "object", - "required": [ - "enabled", - "volume", - "autoPlay", - "sources" - ], - "properties": { - "enabled": { - "type": "boolean", - "default": true - }, - "volume": { - "type": "number", - "minimum": 0, - "maximum": 100, - "default": 100 - }, - "autoPlay": { - "type": "boolean", - "default": false - }, - "sources": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "type", - "url", - "voice" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "jpod101", - "language-pod-101", - "jisho", - "lingua-libre", - "wiktionary", - "text-to-speech", - "text-to-speech-reading", - "custom", - "custom-json" - ], - "default": "jpod101" - }, - "url": { - "type": "string", - "default": "" - }, - "voice": { - "type": "string", - "default": "" - } - } - }, - "default": [] - } - } - }, - "scanning": { - "type": "object", - "required": [ - "inputs", - "preventMiddleMouse", - "touchInputEnabled", - "pointerEventsEnabled", - "selectText", - "alphanumeric", - "autoHideResults", - "delay", - "hideDelay", - "length", - "deepDomScan", - "scanAltText", - "popupNestingMaxDepth", - "enablePopupSearch", - "enableOnPopupExpressions", - "enableOnSearchPage", - "enableSearchTags", - "layoutAwareScan", - "matchTypePrefix", - "hidePopupOnCursorExit", - "hidePopupOnCursorExitDelay", - "normalizeCssZoom", - "scanWithoutMousemove", - "scanResolution" - ], - "properties": { - "inputs": { - "type": "array", - "default": [ - { - "include": "shift", - "exclude": "mouse0", - "types": { - "mouse": true, - "touch": false, - "pen": false - }, - "options": { - "showAdvanced": false, - "searchTerms": true, - "searchKanji": true, - "scanOnTouchTap": true, - "scanOnTouchMove": false, - "scanOnTouchPress": false, - "scanOnTouchRelease": false, - "scanOnPenMove": true, - "scanOnPenHover": true, - "scanOnPenReleaseHover": false, - "scanOnPenPress": true, - "scanOnPenRelease": false, - "preventTouchScrolling": false, - "preventPenScrolling": false - } - }, - { - "include": "", - "exclude": "", - "types": { - "mouse": false, - "touch": true, - "pen": true - }, - "options": { - "showAdvanced": false, - "searchTerms": true, - "searchKanji": true, - "scanOnTouchTap": true, - "scanOnTouchMove": false, - "scanOnTouchPress": false, - "scanOnTouchRelease": false, - "scanOnPenMove": true, - "scanOnPenHover": true, - "scanOnPenReleaseHover": false, - "scanOnPenPress": true, - "scanOnPenRelease": false, - "preventTouchScrolling": true, - "preventPenScrolling": true - } - } - ], - "items": { - "type": "object", - "required": [ - "include", - "exclude", - "types", - "options" - ], - "properties": { - "include": { - "type": "string", - "default": "shift" - }, - "exclude": { - "type": "string", - "default": "" - }, - "types": { - "type": "object", - "required": [ - "mouse", - "touch", - "pen" - ], - "properties": { - "mouse": { - "type": "boolean", - "default": true - }, - "touch": { - "type": "boolean", - "default": true - }, - "pen": { - "type": "boolean", - "default": true - } - } - }, - "options": { - "type": "object", - "required": [ - "showAdvanced", - "searchTerms", - "searchKanji", - "scanOnTouchTap", - "scanOnTouchMove", - "scanOnTouchPress", - "scanOnTouchRelease", - "scanOnPenMove", - "scanOnPenHover", - "scanOnPenReleaseHover", - "scanOnPenPress", - "scanOnPenRelease", - "preventTouchScrolling", - "preventPenScrolling" - ], - "properties": { - "showAdvanced": { - "type": "boolean", - "default": false - }, - "searchTerms": { - "type": "boolean", - "default": true - }, - "searchKanji": { - "type": "boolean", - "default": true - }, - "scanOnTouchTap": { - "type": "boolean", - "default": true - }, - "scanOnTouchMove": { - "type": "boolean", - "default": false - }, - "scanOnTouchPress": { - "type": "boolean", - "default": false - }, - "scanOnTouchRelease": { - "type": "boolean", - "default": false - }, - "scanOnPenMove": { - "type": "boolean", - "default": true - }, - "scanOnPenHover": { - "type": "boolean", - "default": true - }, - "scanOnPenReleaseHover": { - "type": "boolean", - "default": false - }, - "scanOnPenPress": { - "type": "boolean", - "default": true - }, - "scanOnPenRelease": { - "type": "boolean", - "default": false - }, - "preventTouchScrolling": { - "type": "boolean", - "default": true - }, - "preventPenScrolling": { - "type": "boolean", - "default": true - } - } - } - } - } - }, - "preventMiddleMouse": { - "type": "object", - "required": [ - "onWebPages", - "onPopupPages", - "onSearchPages", - "onSearchQuery" - ], - "properties": { - "onWebPages": { - "type": "boolean", - "default": false - }, - "onPopupPages": { - "type": "boolean", - "default": false - }, - "onSearchPages": { - "type": "boolean", - "default": false - }, - "onSearchQuery": { - "type": "boolean", - "default": false - } - } - }, - "touchInputEnabled": { - "type": "boolean", - "default": true - }, - "pointerEventsEnabled": { - "type": "boolean", - "default": false - }, - "selectText": { - "type": "boolean", - "default": true - }, - "alphanumeric": { - "type": "boolean", - "default": true - }, - "autoHideResults": { - "type": "boolean", - "default": false - }, - "delay": { - "type": "number", - "minimum": 0, - "default": 20 - }, - "hideDelay": { - "type": "number", - "minimum": 0, - "default": 0 - }, - "length": { - "type": "integer", - "minimum": 1, - "default": 16 - }, - "deepDomScan": { - "type": "boolean", - "default": false - }, - "scanAltText": { - "type": "boolean", - "default": true - }, - "popupNestingMaxDepth": { - "type": "integer", - "minimum": 0, - "default": 0 - }, - "enablePopupSearch": { - "type": "boolean", - "default": false - }, - "enableOnPopupExpressions": { - "type": "boolean", - "default": false - }, - "enableOnSearchPage": { - "type": "boolean", - "default": true - }, - "enableSearchTags": { - "type": "boolean", - "default": false - }, - "layoutAwareScan": { - "type": "boolean", - "default": false - }, - "matchTypePrefix": { - "type": "boolean", - "default": false - }, - "hidePopupOnCursorExit": { - "type": "boolean", - "default": false - }, - "hidePopupOnCursorExitDelay": { - "type": "number", - "minimum": 0, - "default": 0 - }, - "normalizeCssZoom": { - "type": "boolean", - "default": true - }, - "scanWithoutMousemove": { - "type": "boolean", - "default": true - }, - "scanResolution": { - "type": "string", - "enum": [ - "character", - "word" - ], - "default": "character" - } - } - }, - "translation": { - "type": "object", - "required": [ - "textReplacements", - "searchResolution" - ], - "properties": { - "searchResolution": { - "type": "string", - "enum": [ - "letter", - "word" - ], - "default": "letter" - }, - "textReplacements": { - "type": "object", - "required": [ - "searchOriginal", - "groups" - ], - "properties": { - "searchOriginal": { - "type": "boolean", - "default": true - }, - "groups": { - "type": "array", - "items": { - "type": "array", - "items": { - "type": "object", - "required": [ - "pattern", - "ignoreCase", - "replacement" - ], - "properties": { - "pattern": { - "type": "string", - "default": "" - }, - "ignoreCase": { - "type": "boolean", - "default": false - }, - "replacement": { - "type": "string", - "default": "" - } - } - } - } - } - } - } - } - }, - "dictionaries": { - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "alias", - "priority", - "enabled", - "allowSecondarySearches", - "definitionsCollapsible", - "partsOfSpeechFilter", - "useDeinflections" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "alias": { - "type": "string", - "default": "" - }, - "priority": { - "type": "number", - "default": 0 - }, - "enabled": { - "type": "boolean", - "default": true - }, - "allowSecondarySearches": { - "type": "boolean", - "default": false - }, - "definitionsCollapsible": { - "type": "string", - "enum": ["not-collapsible", "expanded", "collapsed", "force-collapsed", "force-expanded"], - "default": "not-collapsible" - }, - "partsOfSpeechFilter": { - "type": "boolean", - "default": true - }, - "useDeinflections": { - "type": "boolean", - "default": true - } - } - } - }, - "parsing": { - "type": "object", - "required": [ - "enableScanningParser", - "enableMecabParser", - "selectedParser", - "termSpacing", - "readingMode" - ], - "properties": { - "enableScanningParser": { - "type": "boolean", - "default": true - }, - "enableMecabParser": { - "type": "boolean", - "default": false - }, - "selectedParser": { - "type": ["string", "null"], - "default": null - }, - "termSpacing": { - "type": "boolean", - "default": true - }, - "readingMode": { - "type": "string", - "enum": ["hiragana", "katakana", "romaji", "dictionary-reading", "none"], - "default": "hiragana" - } - } - }, - "anki": { - "type": "object", - "required": [ - "enable", - "server", - "tags", - "screenshot", - "terms", - "kanji", - "duplicateScope", - "duplicateScopeCheckAllModels", - "checkForDuplicates", - "fieldTemplates", - "suspendNewCards", - "displayTags", - "noteGuiMode", - "apiKey", - "downloadTimeout" - ], - "properties": { - "enable": { - "type": "boolean", - "default": false - }, - "server": { - "type": "string", - "default": "http://127.0.0.1:8765" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - }, - "default": [ - "yomitan" - ] - }, - "screenshot": { - "type": "object", - "required": [ - "format", - "quality" - ], - "properties": { - "format": { - "type": "string", - "enum": ["png", "jpeg"], - "default": "png" - }, - "quality": { - "type": "integer", - "minimum": 0, - "maximum": 100, - "default": 92 - } - } - }, - "terms": { - "type": "object", - "required": [ - "deck", - "model", - "fields" - ], - "properties": { - "deck": { - "type": "string", - "default": "" - }, - "model": { - "type": "string", - "default": "" - }, - "fields": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - } - } - }, - "kanji": { - "type": "object", - "required": [ - "deck", - "model", - "fields" - ], - "properties": { - "deck": { - "type": "string", - "default": "" - }, - "model": { - "type": "string", - "default": "" - }, - "fields": { - "type": "object", - "additionalProperties": { - "type": "string", - "default": "" - } - } - } - }, - "duplicateScope": { - "type": "string", - "default": "collection", - "enum": ["collection", "deck", "deck-root"] - }, - "duplicateScopeCheckAllModels": { - "type": "boolean", - "default": false - }, - "checkForDuplicates": { - "type": "boolean", - "default": true - }, - "duplicateBehavior": { - "type": "string", - "enum": ["prevent", "overwrite", "new"], - "default": "prevent" - }, - "fieldTemplates": { - "type": ["string", "null"], - "default": null - }, - "suspendNewCards": { - "type": "boolean", - "default": false - }, - "displayTags": { - "type": "string", - "enum": ["never", "always", "non-standard"], - "default": "never" - }, - "noteGuiMode": { - "type": "string", - "enum": ["browse", "edit"], - "default": "browse" - }, - "apiKey": { - "type": "string", - "default": "" - }, - "downloadTimeout": { - "type": "number", - "default": 0, - "minimum": 0 - } - } - }, - "sentenceParsing": { - "type": "object", - "required": [ - "scanExtent", - "terminationCharacterMode", - "terminationCharacters" - ], - "properties": { - "scanExtent": { - "type": "integer", - "minimum": 0, - "default": 200 - }, - "terminationCharacterMode": { - "type": "string", - "enum": ["custom", "custom-no-newlines", "newlines", "none"], - "default": "custom" - }, - "terminationCharacters": { - "type": "array", - "items": { - "type": "object", - "required": [ - "enabled", - "character1", - "character2", - "includeCharacterAtStart", - "includeCharacterAtEnd" - ], - "properties": { - "enabled": { - "type": "boolean", - "default": true - }, - "character1": { - "type": "string", - "default": "\"", - "minLength": 1, - "maxLength": 1 - }, - "character2": { - "type": ["string", "null"], - "default": "\"", - "minLength": 1, - "maxLength": 1 - }, - "includeCharacterAtStart": { - "type": "boolean", - "default": false - }, - "includeCharacterAtEnd": { - "type": "boolean", - "default": false - } - } - }, - "default": [ - {"enabled": true, "character1": "「", "character2": "」", "includeCharacterAtStart": false, "includeCharacterAtEnd": false}, - {"enabled": true, "character1": "『", "character2": "』", "includeCharacterAtStart": false, "includeCharacterAtEnd": false}, - {"enabled": true, "character1": "\"", "character2": "\"", "includeCharacterAtStart": false, "includeCharacterAtEnd": false}, - {"enabled": true, "character1": "'", "character2": "'", "includeCharacterAtStart": false, "includeCharacterAtEnd": false}, - {"enabled": true, "character1": ".", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "!", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "?", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": ".", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "。", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "!", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "?", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "…", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "︒", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "︕", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "︖", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "︙", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true} - ] - } - } - }, - "inputs": { - "type": "object", - "required": [ - "hotkeys" - ], - "properties": { - "hotkeys": { - "type": "array", - "items": { - "type": "object", - "required": [ - "action", - "argument", - "key", - "modifiers", - "scopes", - "enabled" - ], - "properties": { - "action": { - "type": "string", - "default": "" - }, - "argument": { - "type": "string", - "default": "" - }, - "key": { - "type": ["string", "null"], - "default": null - }, - "modifiers": { - "type": "array", - "items": { - "type": "string", - "enum": ["alt", "ctrl", "shift", "meta"], - "default": "alt" - } - }, - "scopes": { - "type": "array", - "items": { - "type": "string", - "enum": ["popup", "search", "web"], - "default": "popup" - }, - "default": ["popup", "search"] - }, - "enabled": { - "type": "boolean", - "default": true - } - } - }, - "default": [ - {"action": "close", "argument": "", "key": "Escape", "modifiers": [], "scopes": ["popup"], "enabled": true}, - {"action": "focusSearchBox", "argument": "", "key": "Escape", "modifiers": [], "scopes": ["search"], "enabled": true}, - {"action": "previousEntry", "argument": "3", "key": "PageUp", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "nextEntry", "argument": "3", "key": "PageDown", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "lastEntry", "argument": "", "key": "End", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "firstEntry", "argument": "", "key": "Home", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "previousEntry", "argument": "1", "key": "ArrowUp", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "nextEntry", "argument": "1", "key": "ArrowDown", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "historyBackward", "argument": "", "key": "KeyB", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "historyForward", "argument": "", "key": "KeyF", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "profilePrevious", "argument": "", "key": "Minus", "modifiers": ["alt"], "scopes": ["popup", "search", "web"], "enabled": true}, - {"action": "profileNext", "argument": "", "key": "Equal", "modifiers": ["alt"], "scopes": ["popup", "search", "web"], "enabled": true}, - {"action": "addNoteKanji", "argument": "", "key": "KeyK", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "addNoteTermKanji", "argument": "", "key": "KeyE", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "addNoteTermKana", "argument": "", "key": "KeyR", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "playAudio", "argument": "", "key": "KeyP", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "viewNotes", "argument": "", "key": "KeyV", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "copyHostSelection", "argument": "", "key": "KeyC", "modifiers": ["ctrl"], "scopes": ["popup"], "enabled": true} - ] - } - } - }, - "clipboard": { - "type": "object", - "required": [ - "enableBackgroundMonitor", - "enableSearchPageMonitor", - "autoSearchContent", - "maximumSearchLength" - ], - "properties": { - "enableBackgroundMonitor": { - "type": "boolean", - "default": false - }, - "enableSearchPageMonitor": { - "type": "boolean", - "default": false - }, - "autoSearchContent": { - "type": "boolean", - "default": true - }, - "maximumSearchLength": { - "type": "integer", - "default": 1000, - "minimum": 0 - } - } - }, - "accessibility": { - "type": "object", - "required": [ - "forceGoogleDocsHtmlRendering" - ], - "properties": { - "forceGoogleDocsHtmlRendering": { - "type": "boolean", - "default": false - } - } - } - } - } - } - } - }, - "profileCurrent": { - "type": "integer", - "minimum": 0, - "default": 0 - }, - "global": { - "type": "object", - "required": [ - "database" - ], - "properties": { - "database": { - "type": "object", - "required": [ - "prefixWildcardsSupported" - ], - "properties": { - "prefixWildcardsSupported": { - "type": "boolean", - "default": false - } - } - } - } - } - } -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/recommended-dictionaries-schema.json b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/recommended-dictionaries-schema.json deleted file mode 100644 index 5a2540f..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/schemas/recommended-dictionaries-schema.json +++ /dev/null @@ -1,165 +0,0 @@ -{ - "$id": "recommendedDictionaries", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Contains data for recommended dictionaries on welcome page.", - "type": "object", - "patternProperties": { - "^.{2,}$": { - "type": "object", - "properties": { - "terms": { - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "downloadUrl", - "description" - ], - "properties": { - "name": { - "type": "string", - "minLength": 2 - }, - "downloadUrl": { - "type": "string", - "minLength": 2 - }, - "description": { - "type": "string", - "minLength": 2 - }, - "homepage": { - "type": "string", - "minLength": 2 - } - } - } - }, - "kanji": { - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "downloadUrl", - "description" - ], - "properties": { - "name": { - "type": "string", - "minLength": 2 - }, - "downloadUrl": { - "type": "string", - "minLength": 2 - }, - "description": { - "type": "string", - "minLength": 2 - }, - "homepage": { - "type": "string", - "minLength": 2 - } - } - } - }, - "frequency": { - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "downloadUrl", - "description" - ], - "properties": { - "name": { - "type": "string", - "minLength": 2 - }, - "downloadUrl": { - "type": "string", - "minLength": 2 - }, - "description": { - "type": "string", - "minLength": 2 - }, - "homepage": { - "type": "string", - "minLength": 2 - } - } - } - }, - "grammar": { - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "downloadUrl", - "description" - ], - "properties": { - "name": { - "type": "string", - "minLength": 2 - }, - "downloadUrl": { - "type": "string", - "minLength": 2 - }, - "description": { - "type": "string", - "minLength": 2 - }, - "homepage": { - "type": "string", - "minLength": 2 - } - } - } - }, - "pronunciation": { - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "downloadUrl", - "description" - ], - "properties": { - "name": { - "type": "string", - "minLength": 2 - }, - "downloadUrl": { - "type": "string", - "minLength": 2 - }, - "description": { - "type": "string", - "minLength": 2 - }, - "homepage": { - "type": "string", - "minLength": 2 - } - } - } - } - }, - "required": [ - "terms", - "kanji", - "frequency", - "grammar" - ], - "additionalProperties": false - } - } -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/structured-content-style.json b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/structured-content-style.json deleted file mode 100644 index a1110dc..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/structured-content-style.json +++ /dev/null @@ -1,338 +0,0 @@ -[ - { - "selectors": [".gloss-image-container"], - "styles": [ - ["display", "inline-block"], - ["white-space", "nowrap"], - ["max-width", "100%"], - ["max-height", "100vh"], - ["position", "relative"], - ["vertical-align", "top"], - ["line-height", "0"], - ["overflow", "hidden"], - ["font-size", "1px"] - ] - }, - { - "selectors": [".gloss-image-link"], - "styles": [ - ["cursor", "inherit"], - ["display", "inline-block"], - ["position", "relative"], - ["line-height", "1"], - ["max-width", "100%"], - ["color", "inherit"] - ] - }, - { - "selectors": [".gloss-image-link[href]:hover"], - "styles": [ - ["cursor", "pointer"] - ] - }, - { - "selectors": [".gloss-image-container-overlay"], - "styles": [ - ["position", "absolute"], - ["left", "0"], - ["top", "0"], - ["width", "100%"], - ["height", "100%"], - ["display", "table"], - ["table-layout", "fixed"], - ["white-space", "normal"], - ["font-size", "initial"], - ["line-height", "initial"], - ["color", "initial"] - ] - }, - { - "selectors": [".gloss-image-link[data-has-image=true][data-image-load-state=load-error] .gloss-image-container-overlay::after"], - "styles": [ - ["content", "'Image failed to load'"], - ["display", "table-cell"], - ["width", "100%"], - ["height", "100%"], - ["vertical-align", "middle"], - ["text-align", "center"], - ["padding", "0.25em"] - ] - }, - { - "selectors": [".gloss-image-background"], - "styles": [ - ["--image", "none"], - ["position", "absolute"], - ["left", "0"], - ["top", "0"], - ["width", "100%"], - ["height", "100%"], - ["-webkit-mask-repeat", "no-repeat"], - ["-webkit-mask-position", "center center"], - ["-webkit-mask-mode", "alpha"], - ["-webkit-mask-size", "contain"], - ["-webkit-mask-image", "var(--image)"], - ["mask-repeat", "no-repeat"], - ["mask-position", "center center"], - ["mask-mode", "alpha"], - ["mask-size", "contain"], - ["mask-image", "var(--image)"], - ["background-color", "currentColor"] - ] - }, - { - "selectors": [".gloss-image"], - "styles": [ - ["display", "inline-block"], - ["vertical-align", "top"], - ["object-fit", "contain"], - ["border", "none"], - ["outline", "none"] - ] - }, - { - "selectors": [".gloss-image-link[data-has-aspect-ratio=true] .gloss-image"], - "styles": [ - ["position", "absolute"], - ["left", "0"], - ["top", "0"], - ["width", "100%"], - ["height", "100%"] - ] - }, - { - "selectors": [".gloss-image:not([src])"], - "styles": [ - ["display", "none"] - ] - }, - { - "selectors": [ - ".gloss-image-link[data-image-rendering=pixelated] .gloss-image", - ".gloss-image-link[data-image-rendering=pixelated] .gloss-image-background" - ], - "styles": [ - ["image-rendering", "auto"], - ["image-rendering", "-moz-crisp-edges"], - ["image-rendering", "-webkit-optimize-contrast"], - ["image-rendering", "pixelated"], - ["image-rendering", "crisp-edges"] - ] - }, - { - "selectors": [ - ".gloss-image-link[data-image-rendering=crisp-edges] .gloss-image", - ".gloss-image-link[data-image-rendering=crisp-edges] .gloss-image-background" - ], - "styles": [ - ["image-rendering", "auto"], - ["image-rendering", "-moz-crisp-edges"], - ["image-rendering", "-webkit-optimize-contrast"], - ["image-rendering", "crisp-edges"] - ] - }, - { - "selectors": [".gloss-image-link[data-has-aspect-ratio=true] .gloss-image-sizer"], - "styles": [ - ["display", "inline-block"], - ["width", "0"], - ["vertical-align", "top"], - ["font-size", "0"] - ] - }, - { - "selectors": [".gloss-image-link-text"], - "styles": [ - ["display", "none"], - ["line-height", "initial"] - ] - }, - { - "selectors": [".gloss-image-link-text::before"], - "styles": [ - ["content", "'['"] - ] - }, - { - "selectors": [".gloss-image-link-text::after"], - "styles": [ - ["content", "']'"] - ] - }, - { - "selectors": [".gloss-image-description"], - "styles": [ - ["display", "block"], - ["white-space", "pre-line"] - ] - }, - { - "selectors": [".gloss-image-link[data-appearance=monochrome] .gloss-image"], - "styles": [ - ["opacity", "0"] - ] - }, - { - "selectors": [".gloss-image-link:not([data-appearance=monochrome]) .gloss-image-background"], - "styles": [ - ["display", "none"] - ] - }, - { - "selectors": [".gloss-image-link[data-size-units=em] .gloss-image-container"], - "styles": [ - ["font-size", "1em"] - ] - }, - { - "selectors": [".gloss-image-link[data-vertical-align=baseline]"], - "styles": [ - ["vertical-align", "baseline"] - ] - }, - { - "selectors": [".gloss-image-link[data-vertical-align=sub]"], - "styles": [ - ["vertical-align", "sub"] - ] - }, - { - "selectors": [".gloss-image-link[data-vertical-align=super]"], - "styles": [ - ["vertical-align", "super"] - ] - }, - { - "selectors": [".gloss-image-link[data-vertical-align=text-top]"], - "styles": [ - ["vertical-align", "top"] - ] - }, - { - "selectors": [".gloss-image-link[data-vertical-align=text-bottom]"], - "styles": [ - ["vertical-align", "bottom"] - ] - }, - { - "selectors": [".gloss-image-link[data-vertical-align=middle]"], - "styles": [ - ["vertical-align", "middle"] - ] - }, - { - "selectors": [".gloss-image-link[data-vertical-align=top]"], - "styles": [ - ["vertical-align", "top"] - ] - }, - { - "selectors": [".gloss-image-link[data-vertical-align=bottom]"], - "styles": [ - ["vertical-align", "bottom"] - ] - }, - { - "selectors": [ - ".gloss-image-link[data-collapsed=true]", - ":root[data-glossary-layout-mode=compact] .gloss-image-link[data-collapsible=true]" - ], - "styles": [ - ["vertical-align", "baseline"] - ] - }, - { - "selectors": [ - ".gloss-image-link[data-collapsed=true] .gloss-image-container", - ":root[data-glossary-layout-mode=compact] .gloss-image-link[data-collapsible=true] .gloss-image-container" - ], - "styles": [ - ["display", "none"], - ["position", "absolute"], - ["left", "0"], - ["top", "100%"], - ["z-index", "1"] - ] - }, - { - "selectors": [ - ".entry:nth-last-of-type(1):not(:nth-of-type(1)) .gloss-image-link[data-collapsed=true] .gloss-image-container", - ":root[data-glossary-layout-mode=compact] .entry:nth-last-of-type(1):not(:nth-of-type(1)) .gloss-image-link[data-collapsible=true] .gloss-image-container" - ], - "styles": [ - ["bottom", "100%"], - ["top", "auto"] - ] - }, - { - "selectors": [ - ".gloss-image-link[data-collapsed=true]:hover .gloss-image-container", - ".gloss-image-link[data-collapsed=true]:focus .gloss-image-container", - ":root[data-glossary-layout-mode=compact] .gloss-image-link[data-collapsible=true]:hover .gloss-image-container", - ":root[data-glossary-layout-mode=compact] .gloss-image-link[data-collapsible=true]:focus .gloss-image-container" - ], - "styles": [ - ["display", "block"] - ] - }, - { - "selectors": [ - ".gloss-image-link[data-collapsed=true] .gloss-image-link-text", - ":root[data-glossary-layout-mode=compact] .gloss-image-link[data-collapsible=true] .gloss-image-link-text" - ], - "styles": [ - ["display", "inline"] - ] - }, - { - "selectors": [ - ".gloss-image-link[data-collapsed=true]~.gloss-image-description", - ":root[data-glossary-layout-mode=compact] .gloss-image-description" - ], - "styles": [ - ["display", "inline"] - ] - }, - { - "selectors": [".gloss-link-external-icon"], - "styles": [ - ["display", "none"] - ] - }, - { - "selectors": [".gloss-sc-table-container"], - "styles": [ - ["display", "block"] - ] - }, - { - "selectors": [".gloss-sc-table"], - "styles": [ - ["table-layout", "auto"], - ["border-collapse", "collapse"] - ] - }, - { - "selectors": [ - ".gloss-sc-thead", - ".gloss-sc-tfoot", - ".gloss-sc-th" - ], - "styles": [ - ["font-weight", "bold"] - ] - }, - { - "selectors": [ - ".gloss-sc-th", - ".gloss-sc-td" - ], - "styles": [ - ["border-style", "solid"], - ["padding", "0.25em"], - ["vertical-align", "top"], - ["border-width", "1px"], - ["border-color", "currentColor"] - ] - } -] diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v10.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v10.handlebars deleted file mode 100644 index 8442a93..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v10.handlebars +++ /dev/null @@ -1,30 +0,0 @@ -{{#*inline "part-of-speech-pretty"}} - {{~#if (op "===" . "v1")~}}Ichidan verb - {{~else if (op "===" . "v5")~}}Godan verb - {{~else if (op "===" . "vk")~}}Kuru verb - {{~else if (op "===" . "vs")~}}Suru verb - {{~else if (op "===" . "vz")~}}Zuru verb - {{~else if (op "===" . "adj-i")~}}I-adjective - {{~else if (op "===" . "n")~}}Noun - {{~else~}}{{.}} - {{~/if~}} -{{/inline}} - -{{#*inline "part-of-speech"}} - {{~#scope~}} - {{~#if (op "!==" definition.type "kanji")~}} - {{~#set "first" true}}{{/set~}} - {{~#each definition.expressions~}} - {{~#each wordClasses~}} - {{~#unless (get (concat "used_" .))~}} - {{~> part-of-speech-pretty . ~}} - {{~#unless (get "first")}}, {{/unless~}} - {{~#set (concat "used_" .) true~}}{{~/set~}} - {{~#set "first" false~}}{{~/set~}} - {{~/unless~}} - {{~/each~}} - {{~/each~}} - {{~#if (get "first")~}}Unknown{{~/if~}} - {{~/if~}} - {{~/scope~}} -{{/inline}} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v12.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v12.handlebars deleted file mode 100644 index 9fe3c9d..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v12.handlebars +++ /dev/null @@ -1,3 +0,0 @@ -{{#*inline "search-query"}} - {{~#multiLine}}{{context.fullQuery}}{{/multiLine~}} -{{/inline}} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v13.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v13.handlebars deleted file mode 100644 index afa5a2c..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v13.handlebars +++ /dev/null @@ -1,148 +0,0 @@ -{{#*inline "selection-text"}} - {{~#if (hasMedia "selectionText")}}{{#getMedia "selectionText"}}{{/getMedia}}{{/if~}} -{{/inline}} - -{{#*inline "sentence-furigana"}} - {{~#if definition.cloze~}} - {{~#if (hasMedia "textFurigana" definition.cloze.sentence)~}} - {{#getMedia "textFurigana" definition.cloze.sentence escape=false}}{{/getMedia}} - {{~else~}} - {{definition.cloze.sentence}} - {{~/if~}} - {{~/if~}} -{{/inline}} - -{{<<<<<<<}} -{{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{/each}} -{{=======}} -{{#each glossary}}{{#formatGlossary ../dictionary}}{{{.}}}{{/formatGlossary}}{{/each}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{#unless @last}} | {{/unless}}{{/each}} -{{=======}} -{{#each glossary}}{{#formatGlossary ../dictionary}}{{{.}}}{{/formatGlossary}}{{#unless @last}} | {{/unless}}{{/each}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#each glossary}}
  • {{#multiLine}}{{.}}{{/multiLine}}
  • {{/each}} -{{=======}} -{{#each glossary}}
  • {{#formatGlossary ../dictionary}}{{{.}}}{{/formatGlossary}}
  • {{/each}} -{{>>>>>>>}} - -{{<<<<<<<}} - {{~#if definition.audioFileName~}} - [sound:{{definition.audioFileName}}] - {{~/if~}} -{{=======}} - {{~#if (hasMedia "audio")~}} - [sound:{{#getMedia "audio"}}{{/getMedia}}] - {{~/if~}} -{{>>>>>>>}} - -{{<<<<<<<}} - -{{=======}} - {{~#if (hasMedia "screenshot")~}} - - {{~/if~}} -{{>>>>>>>}} - -{{<<<<<<<}} - {{~#if definition.clipboardImageFileName~}} - - {{~/if~}} -{{=======}} - {{~#if (hasMedia "clipboardImage")~}} - - {{~/if~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#if definition.clipboardText~}}{{definition.clipboardText}}{{~/if~}} -{{=======}} -{{~#if (hasMedia "clipboardText")}}{{#getMedia "clipboardText"}}{{/getMedia}}{{/if~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "pitch-accent-item-downstep-notation"}} - {{~#scope~}} - - {{~#set "style1a"~}}display:inline-block;position:relative;{{~/set~}} - {{~#set "style1b"~}}padding-right:0.1em;margin-right:0.1em;{{~/set~}} - {{~#set "style2a"~}}display:block;user-select:none;pointer-events:none;position:absolute;top:0.1em;left:0;right:0;height:0;border-top:0.1em solid;{{~/set~}} - {{~#set "style2b"~}}right:-0.1em;height:0.4em;border-right:0.1em solid;{{~/set~}} - {{~#each (getKanaMorae reading)~}} - {{~#set "style1"}}{{#get "style1a"}}{{/get}}{{/set~}} - {{~#set "style2"}}{{/set~}} - {{~#if (isMoraPitchHigh @index ../position)}} - {{~#set "style2"}}{{#get "style2a"}}{{/get}}{{/set~}} - {{~#if (op "!" (isMoraPitchHigh (op "+" @index 1) ../position))~}} - {{~#set "style1" (op "+" (get "style1") (get "style1b"))}}{{/set~}} - {{~#set "style2" (op "+" (get "style2") (get "style2b"))}}{{/set~}} - {{~/if~}} - {{~/if~}} - {{{.}}} - {{~/each~}} - - {{~/scope~}} -{{/inline}} - -{{#*inline "pitch-accent-item-graph-position-x"}}{{#op "+" 25 (op "*" index 50)}}{{/op}}{{/inline}} -{{#*inline "pitch-accent-item-graph-position-y"}}{{#op "+" 25 (op "?:" (isMoraPitchHigh index position) 0 50)}}{{/op}}{{/inline}} -{{#*inline "pitch-accent-item-graph-position"}}{{> pitch-accent-item-graph-position-x index=index position=position}} {{> pitch-accent-item-graph-position-y index=index position=position}}{{/inline}} -{{#*inline "pitch-accent-item-graph"}} - {{~#scope~}} - {{~#set "morae" (getKanaMorae reading)}}{{/set~}} - {{~#set "morae-count" (property (get "morae") "length")}}{{/set~}} - - - - - - - pitch-accent-item-graph-position index=@index position=../position~}} - {{~#set "cmd" "L"}}{{/set~}} - {{~/each~}} - "> - pitch-accent-item-graph-position index=(get "morae-count") position=position}}"> - {{#each (get "morae")}} - - {{/each}} - - - {{~/scope~}} -{{/inline}} - -{{#*inline "pitch-accent-item-position"~}} - [{{position}}] -{{~/inline}} - -{{#*inline "pitch-accent-item"}} - {{~#if (op "==" format "downstep-notation")~}} - {{~> pitch-accent-item-downstep-notation~}} - {{~else if (op "==" format "graph")~}} - {{~> pitch-accent-item-graph~}} - {{~else if (op "==" format "position")~}} - {{~> pitch-accent-item-position~}} - {{~/if~}} -{{/inline}} -{{=======}} -{{#*inline "pitch-accent-item"}} - {{~#pronunciation format=format reading=reading downstepPosition=position nasalPositions=nasalPositions devoicePositions=devoicePositions~}}{{~/pronunciation~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "pitch-accents"}} - {{~> pitch-accent-list format='downstep-notation'~}} -{{/inline}} -{{=======}} -{{#*inline "pitch-accents"}} - {{~> pitch-accent-list format='text'~}} -{{/inline}} -{{>>>>>>>}} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v2.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v2.handlebars deleted file mode 100644 index c018094..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v2.handlebars +++ /dev/null @@ -1,109 +0,0 @@ -{{! Pitch Accents }} -{{#*inline "pitch-accent-item-downstep-notation"}} - {{~#scope~}} - - {{~#set "style1a"~}}display:inline-block;position:relative;{{~/set~}} - {{~#set "style1b"~}}padding-right:0.1em;margin-right:0.1em;{{~/set~}} - {{~#set "style2a"~}}display:block;user-select:none;pointer-events:none;position:absolute;top:0.1em;left:0;right:0;height:0;border-top:0.1em solid;{{~/set~}} - {{~#set "style2b"~}}right:-0.1em;height:0.4em;border-right:0.1em solid;{{~/set~}} - {{~#each (getKanaMorae reading)~}} - {{~#set "style1"}}{{#get "style1a"}}{{/get}}{{/set~}} - {{~#set "style2"}}{{/set~}} - {{~#if (isMoraPitchHigh @index ../position)}} - {{~#set "style2"}}{{#get "style2a"}}{{/get}}{{/set~}} - {{~#if (op "!" (isMoraPitchHigh (op "+" @index 1) ../position))~}} - {{~#set "style1" (op "+" (get "style1") (get "style1b"))}}{{/set~}} - {{~#set "style2" (op "+" (get "style2") (get "style2b"))}}{{/set~}} - {{~/if~}} - {{~/if~}} - {{{.}}} - {{~/each~}} - - {{~/scope~}} -{{/inline}} - -{{#*inline "pitch-accent-item-graph-position-x"}}{{#op "+" 25 (op "*" index 50)}}{{/op}}{{/inline}} -{{#*inline "pitch-accent-item-graph-position-y"}}{{#op "+" 25 (op "?:" (isMoraPitchHigh index position) 0 50)}}{{/op}}{{/inline}} -{{#*inline "pitch-accent-item-graph-position"}}{{> pitch-accent-item-graph-position-x index=index position=position}} {{> pitch-accent-item-graph-position-y index=index position=position}}{{/inline}} -{{#*inline "pitch-accent-item-graph"}} - {{~#scope~}} - {{~#set "morae" (getKanaMorae reading)}}{{/set~}} - {{~#set "morae-count" (property (get "morae") "length")}}{{/set~}} - - - - - - - pitch-accent-item-graph-position index=@index position=../position~}} - {{~#set "cmd" "L"}}{{/set~}} - {{~/each~}} - "> - pitch-accent-item-graph-position index=(get "morae-count") position=position}}"> - {{#each (get "morae")}} - - {{/each}} - - - {{~/scope~}} -{{/inline}} - -{{#*inline "pitch-accent-item-position"~}} - [{{position}}] -{{~/inline}} - -{{#*inline "pitch-accent-item"}} - {{~#if (op "==" format "downstep-notation")~}} - {{~> pitch-accent-item-downstep-notation~}} - {{~else if (op "==" format "graph")~}} - {{~> pitch-accent-item-graph~}} - {{~else if (op "==" format "position")~}} - {{~> pitch-accent-item-position~}} - {{~/if~}} -{{/inline}} - -{{#*inline "pitch-accent-item-disambiguation"}} - {{~#scope~}} - {{~#set "exclusive" (spread exclusiveExpressions exclusiveReadings)}}{{/set~}} - {{~#if (op ">" (property (get "exclusive") "length") 0)~}} - {{~#set "separator" ""~}}{{/set~}} - ({{#each (get "exclusive")~}} - {{~#get "separator"}}{{/get~}}{{{.}}} - {{~/each}} only) - {{~/if~}} - {{~/scope~}} -{{/inline}} - -{{#*inline "pitch-accent-list"}} - {{~#if (op ">" pitchCount 0)~}} - {{~#if (op ">" pitchCount 1)~}}
      {{~/if~}} - {{~#each pitches~}} - {{~#each pitches~}} - {{~#if (op ">" ../../pitchCount 1)~}}
    1. {{~/if~}} - {{~> pitch-accent-item-disambiguation~}} - {{~> pitch-accent-item format=../../format~}} - {{~#if (op ">" ../../pitchCount 1)~}}
    2. {{~/if~}} - {{~/each~}} - {{~/each~}} - {{~#if (op ">" pitchCount 1)~}}
    {{~/if~}} - {{~else~}} - No pitch accent data - {{~/if~}} -{{/inline}} - -{{#*inline "pitch-accents"}} - {{~> pitch-accent-list format='downstep-notation'~}} -{{/inline}} - -{{#*inline "pitch-accent-graphs"}} - {{~> pitch-accent-list format='graph'~}} -{{/inline}} - -{{#*inline "pitch-accent-positions"}} - {{~> pitch-accent-list format='position'~}} -{{/inline}} -{{! End Pitch Accents }} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v21.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v21.handlebars deleted file mode 100644 index 33c4dc6..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v21.handlebars +++ /dev/null @@ -1,161 +0,0 @@ -{{<<<<<<<}} -{{#formatGlossary ../dictionary}}{{{.}}}{{/formatGlossary}} -{{=======}} -{{formatGlossary ../dictionary .}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#furigana}}{{{.}}}{{/furigana~}} -{{=======}} -{{~furigana .~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#furigana}}{{{definition}}}{{/furigana}} -{{=======}} -{{furigana definition}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#furigana expression reading~}}{{~/furigana~}} -{{=======}} -{{~furigana expression reading~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#furigana expression reading}}{{/furigana~}} -{{=======}} -{{~furigana expression reading~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#furiganaPlain}}{{{.}}}{{/furiganaPlain~}} -{{=======}} -{{~furiganaPlain .~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#furiganaPlain}}{{{definition}}}{{/furiganaPlain}} -{{=======}} -{{furiganaPlain definition}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#furiganaPlain expression reading~}}{{~/furiganaPlain~}} -{{=======}} -{{~furiganaPlain expression reading~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#furiganaPlain expression reading}}{{/furiganaPlain~}} -{{=======}} -{{~furiganaPlain expression reading~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#getMedia "audio"}}{{/getMedia}} -{{=======}} -{{getMedia "audio"}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#getMedia "screenshot"}}{{/getMedia}} -{{=======}} -{{getMedia "screenshot"}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#getMedia "clipboardImage"}}{{/getMedia}} -{{=======}} -{{getMedia "clipboardImage"}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#getMedia "clipboardText"}}{{/getMedia}} -{{=======}} -{{getMedia "clipboardText"}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#getMedia "selectionText"}}{{/getMedia}} -{{=======}} -{{getMedia "selectionText"}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#getMedia "textFurigana" definition.cloze.sentence escape=false}}{{/getMedia}} -{{=======}} -{{getMedia "textFurigana" definition.cloze.sentence escape=false}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#pronunciation format=format reading=reading downstepPosition=position nasalPositions=nasalPositions devoicePositions=devoicePositions~}}{{~/pronunciation~}} -{{=======}} -{{~pronunciation format=format reading=reading downstepPosition=position nasalPositions=nasalPositions devoicePositions=devoicePositions~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set "any" false}}{{/set~}} -{{=======}} -{{~set "any" false~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set "any" true}}{{/set~}} -{{=======}} -{{~set "any" true~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set "previousDictionary" dictionary~}}{{~/set~}} -{{=======}} -{{~set "previousDictionary" dictionary~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set "exclusive" (spread exclusiveExpressions exclusiveReadings)}}{{/set~}} -{{=======}} -{{~set "exclusive" (spread exclusiveExpressions exclusiveReadings)~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set "separator" ""~}}{{/set~}} -{{=======}} -{{~set "separator" ""~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#get "separator"}}{{/get~}} -{{=======}} -{{~get "separator"~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set "found" false}}{{/set~}} -{{=======}} -{{~set "found" false~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set "found" true}}{{/set~}} -{{=======}} -{{~set "found" true~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set "first" true}}{{/set~}} -{{=======}} -{{~set "first" true~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set "first" false~}}{{~/set~}} -{{=======}} -{{~set "first" false~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set (concat "used_" .) true~}}{{~/set~}} -{{=======}} -{{~set (concat "used_" .) true~}} -{{>>>>>>>}} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v24.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v24.handlebars deleted file mode 100644 index 1459fd4..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v24.handlebars +++ /dev/null @@ -1,92 +0,0 @@ -{{#*inline "cloze-body-kana"}} - {{~#if definition.cloze}}{{definition.cloze.bodyKana}}{{/if~}} -{{/inline}} - -{{#*inline "phonetic-transcriptions"}} - {{~#if (op ">" definition.phoneticTranscriptions.length 0)~}} -
      - {{~#each definition.phoneticTranscriptions~}} - {{~#each phoneticTranscriptions~}} -
    • - {{~set "any" false~}} - {{~#each tags~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{name}} - {{~set "any" true~}} - {{~/each~}} - {{~#if (get "any")}}) {{/if~}} - {{ipa~}} -
    • - {{~/each~}} - {{~/each~}} -
    - {{~/if~}} -{{/inline}} - -{{<<<<<<<}} -{{#*inline "conjugation"}} - {{~#if definition.reasons~}} - {{~#each definition.reasons~}} - {{~#if (op ">" @index 0)}} « {{/if~}} - {{.}} - {{~/each~}} - {{~/if~}} -{{/inline}} -{{=======}} -{{#*inline "conjugation"}} - {{~#if (op ">" definition.inflectionRuleChainCandidates.length 0)~}} - {{~set "multiple" false~}} - {{~#if (op ">" definition.inflectionRuleChainCandidates.length 1)~}} - {{~set "multiple" true~}} - {{~/if~}} - {{~#if (get "multiple")~}}
      {{/if~}} - {{~#each definition.inflectionRuleChainCandidates~}} - {{~#if (op ">" inflectionRules.length 0)~}} - {{~#if (get "multiple")~}}
    • {{/if~}} - {{~#each inflectionRules~}} - {{~#if (op ">" @index 0)}} « {{/if~}} - {{.}} - {{~/each~}} - {{~#if (get "multiple")~}}
    • {{/if~}} - {{~/if~}} - {{~/each~}} - {{~#if (get "multiple")~}}
    {{/if~}} - {{~/if~}} -{{/inline}} -{{>>>>>>>}} - -{{#*inline "frequency-harmonic-rank"}} - {{~#if (op "===" definition.frequencyHarmonic -1) ~}} - 9999999 - {{~else ~}} - {{definition.frequencyHarmonic}} - {{~/if~}} -{{/inline}} - -{{#*inline "frequency-harmonic-occurrence"}} - {{~#if (op "===" definition.frequencyHarmonic -1) ~}} - 0 - {{~else ~}} - {{definition.frequencyHarmonic}} - {{~/if~}} -{{/inline}} - -{{#*inline "frequency-average-rank"}} - {{~#if (op "===" definition.frequencyAverage -1) ~}} - 9999999 - {{~else ~}} - {{definition.frequencyAverage}} - {{~/if~}} -{{/inline}} - -{{#*inline "frequency-average-occurrence"}} - {{~#if (op "===" definition.frequencyAverage -1) ~}} - 0 - {{~else ~}} - {{definition.frequencyAverage}} - {{~/if~}} -{{/inline}} - -{{~#*inline "pitch-accent-categories"~}} - {{~#each (pitchCategories @root)~}}{{~.~}}{{~#unless @last~}},{{~/unless~}}{{~/each~}} -{{~/inline~}} \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v27.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v27.handlebars deleted file mode 100644 index 4806041..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v27.handlebars +++ /dev/null @@ -1,21 +0,0 @@ -{{<<<<<<<}} -{{#*inline "sentence-furigana"}} - {{~#if definition.cloze~}} - {{~#if (hasMedia "textFurigana" definition.cloze.sentence)~}} - {{getMedia "textFurigana" definition.cloze.sentence escape=false}} - {{~else~}} - {{definition.cloze.sentence}} - {{~/if~}} - {{~/if~}} -{{/inline}} -{{=======}} -{{#*inline "sentence-furigana"}} - {{~#if definition.cloze~}} - {{~#if (hasMedia "textFurigana" definition.cloze.sentence)~}} - {{{getMedia "textFurigana" definition.cloze.sentence escape=false}}} - {{~else~}} - {{{definition.cloze.sentence}}} - {{~/if~}} - {{~/if~}} -{{/inline}} -{{>>>>>>>}} \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v28.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v28.handlebars deleted file mode 100644 index 8279e5e..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v28.handlebars +++ /dev/null @@ -1,9 +0,0 @@ -{{<<<<<<<}} -{{#*inline "url"}} - {{definition.url}} -{{/inline}} -{{=======}} -{{~#*inline "url"~}} - {{definition.url}} -{{~/inline~}} -{{>>>>>>>}} \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v29.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v29.handlebars deleted file mode 100644 index e19d66c..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v29.handlebars +++ /dev/null @@ -1,13 +0,0 @@ -{{<<<<<<<}} -{{#*inline "pitch-accent-graphs"}} - {{~> pitch-accent-list format='graph'~}} -{{/inline}} -{{=======}} -{{#*inline "pitch-accent-graphs"}} - {{~> pitch-accent-list format='graph'~}} -{{/inline}} - -{{#*inline "pitch-accent-graphs-jj"}} - {{~> pitch-accent-list format='graph-jj'~}} -{{/inline}} -{{>>>>>>>}} \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v33.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v33.handlebars deleted file mode 100644 index 6fb967e..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v33.handlebars +++ /dev/null @@ -1,69 +0,0 @@ -{{<<<<<<<}} -{{#*inline "sentence"}} - {{~#if definition.cloze}}{{definition.cloze.sentence}}{{/if~}} -{{/inline}} -{{=======}} -{{#*inline "sentence"}} - {{~#if definition.cloze}}{{{definition.cloze.sentence}}}{{/if~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "cloze-prefix"}} - {{~#if definition.cloze}}{{definition.cloze.prefix}}{{/if~}} -{{/inline}} -{{=======}} -{{#*inline "cloze-prefix"}} - {{~#if definition.cloze}}{{{definition.cloze.prefix}}}{{/if~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "cloze-body"}} - {{~#if definition.cloze}}{{definition.cloze.body}}{{/if~}} -{{/inline}} -{{=======}} -{{#*inline "cloze-body"}} - {{~#if definition.cloze}}{{{definition.cloze.body}}}{{/if~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "cloze-body-kana"}} - {{~#if definition.cloze}}{{definition.cloze.bodyKana}}{{/if~}} -{{/inline}} -{{=======}} -{{#*inline "cloze-body-kana"}} - {{~#if definition.cloze}}{{{definition.cloze.bodyKana}}}{{/if~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "cloze-suffix"}} - {{~#if definition.cloze}}{{definition.cloze.suffix}}{{/if~}} -{{/inline}} -{{=======}} -{{#*inline "cloze-suffix"}} - {{~#if definition.cloze}}{{{definition.cloze.suffix}}}{{/if~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "clipboard-text"}} - {{~#if (hasMedia "clipboardText")}}{{getMedia "clipboardText"}}{{/if~}} -{{/inline}} -{{=======}} -{{#*inline "clipboard-text"}} - {{~#if (hasMedia "clipboardText")}}{{{getMedia "clipboardText"}}}{{/if~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "selection-text"}} - {{~#if (hasMedia "selectionText")}}{{getMedia "selectionText"}}{{/if~}} -{{/inline}} -{{=======}} -{{#*inline "selection-text"}} - {{~#if (hasMedia "selectionText")}}{{{getMedia "selectionText"}}}{{/if~}} -{{/inline}} -{{>>>>>>>}} \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v34.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v34.handlebars deleted file mode 100644 index 5538df8..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v34.handlebars +++ /dev/null @@ -1,59 +0,0 @@ -{{<<<<<<<}} -{{~#*inline "glossary"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} -
      {{~#each definition.definitions~}}
    1. {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}
    2. {{~/each~}}
    - {{~else~}} - {{~#each definition.definitions~}}{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}{{~/each~}} - {{~/if~}} - {{~else if (op "===" definition.type "kanji")~}} - {{~#if (op ">" definition.glossary.length 1)~}} -
      {{#each definition.glossary}}
    1. {{.}}
    2. {{/each}}
    - {{~else~}} - {{~#each definition.glossary~}}{{.}}{{~/each~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} -{{=======}} -{{~#*inline "glossary"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~#unless (op "&&" selectedDictionary (op "!=" selectedDictionary definition.dictionary))~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~/unless~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} -
      - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} -
    1. - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} -
    2. - {{~/unless~}} - {{~/each~}} -
    - {{~else~}} - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} - {{~/unless~}} - {{~/each~}} - {{~/if~}} - {{~else if (op "===" definition.type "kanji")~}} - {{~#if (op ">" definition.glossary.length 1)~}} -
      {{#each definition.glossary}}
    1. {{.}}
    2. {{/each}}
    - {{~else~}} - {{~#each definition.glossary~}}{{.}}{{~/each~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} -{{>>>>>>>}} \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v35.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v35.handlebars deleted file mode 100644 index e71efcf..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v35.handlebars +++ /dev/null @@ -1,33 +0,0 @@ -{{<<<<<<<}} -{{#*inline "glossary-brief"}} - {{~> glossary brief=true ~}} -{{/inline}} -{{=======}} -{{#*inline "glossary-brief"}} - {{~> glossary brief=true ~}} -{{/inline}} - -{{~#*inline "glossary-first"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} - {{~#with definition.definitions.[0]~}}{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}{{~/with~}} - {{~else~}} - {{~#with definition.definitions.[0]~}}{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}{{~/with~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} - -{{#*inline "glossary-first-no-dictionary"}} - {{~> glossary-first noDictionaryTag=true ~}} -{{/inline}} - -{{#*inline "glossary-first-brief"}} - {{~> glossary-first brief=true ~}} -{{/inline}} -{{>>>>>>>}} \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v36.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v36.handlebars deleted file mode 100644 index 0b07e48..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v36.handlebars +++ /dev/null @@ -1,3 +0,0 @@ -{{#*inline "onyomi-hiragana"}} - {{~#each definition.onyomi}}{{hiragana .}}{{#unless @last}}, {{/unless}}{{/each~}} -{{/inline}} \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v37.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v37.handlebars deleted file mode 100644 index b6effdd..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v37.handlebars +++ /dev/null @@ -1,33 +0,0 @@ -{{<<<<<<<}} -{{#*inline "pitch-accent-list"}} - {{~#if (op ">" pitchCount 0)~}} - {{~#if (op ">" pitchCount 1)~}}
      {{~/if~}} - {{~#each pitches~}} - {{~#each pitches~}} - {{~#if (op ">" ../../pitchCount 1)~}}
    1. {{~/if~}} - {{~> pitch-accent-item-disambiguation~}} - {{~> pitch-accent-item format=../../format~}} - {{~#if (op ">" ../../pitchCount 1)~}}
    2. {{~/if~}} - {{~/each~}} - {{~/each~}} - {{~#if (op ">" pitchCount 1)~}}
    {{~/if~}} - {{~else~}} - No pitch accent data - {{~/if~}} -{{/inline}} -{{=======}} -{{#*inline "pitch-accent-list"}} - {{~#if (op ">" pitchCount 0)~}} - {{~#if (op ">" pitchCount 1)~}}
      {{~/if~}} - {{~#each pitches~}} - {{~#each pitches~}} - {{~#if (op ">" ../../pitchCount 1)~}}
    1. {{~/if~}} - {{~> pitch-accent-item-disambiguation~}} - {{~> pitch-accent-item format=../../format~}} - {{~#if (op ">" ../../pitchCount 1)~}}
    2. {{~/if~}} - {{~/each~}} - {{~/each~}} - {{~#if (op ">" pitchCount 1)~}}
    {{~/if~}} - {{~/if~}} -{{/inline}} -{{>>>>>>>}} \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v38.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v38.handlebars deleted file mode 100644 index 83b6e3a..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v38.handlebars +++ /dev/null @@ -1,43 +0,0 @@ -{{<<<<<<<}} -{{#*inline "conjugation"}} - {{~#if (op ">" definition.inflectionRuleChainCandidates.length 0)~}} - {{~set "multiple" false~}} - {{~#if (op ">" definition.inflectionRuleChainCandidates.length 1)~}} - {{~set "multiple" true~}} - {{~/if~}} - {{~#if (get "multiple")~}}
      {{/if~}} - {{~#each definition.inflectionRuleChainCandidates~}} - {{~#if (op ">" inflectionRules.length 0)~}} - {{~#if (get "multiple")~}}
    • {{/if~}} - {{~#each inflectionRules~}} - {{~#if (op ">" @index 0)}} « {{/if~}} - {{.}} - {{~/each~}} - {{~#if (get "multiple")~}}
    • {{/if~}} - {{~/if~}} - {{~/each~}} - {{~#if (get "multiple")~}}
    {{/if~}} - {{~/if~}} -{{/inline}} -{{=======}} -{{#*inline "conjugation"}} - {{~#if (op ">" definition.inflectionRuleChainCandidates.length 0)~}} - {{~set "multiple" false~}} - {{~#if (op ">" definition.inflectionRuleChainCandidates.length 1)~}} - {{~set "multiple" true~}} - {{~/if~}} - {{~#if (get "multiple")~}}
      {{/if~}} - {{~#each definition.inflectionRuleChainCandidates~}} - {{~#if (op ">" inflectionRules.length 0)~}} - {{~#if (get "multiple")~}}
    • {{/if~}} - {{~#each inflectionRules~}} - {{~#if (op ">" @index 0)}} « {{/if~}} - {{name}} - {{~/each~}} - {{~#if (get "multiple")~}}
    • {{/if~}} - {{~/if~}} - {{~/each~}} - {{~#if (get "multiple")~}}
    {{/if~}} - {{~/if~}} -{{/inline}} -{{>>>>>>>}} \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v4.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v4.handlebars deleted file mode 100644 index dc88395..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v4.handlebars +++ /dev/null @@ -1,9 +0,0 @@ -{{#*inline "clipboard-image"}} - {{~#if definition.clipboardImageFileName~}} - - {{~/if~}} -{{/inline}} - -{{#*inline "clipboard-text"}} - {{~#if definition.clipboardText~}}{{definition.clipboardText}}{{~/if~}} -{{/inline}} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v41.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v41.handlebars deleted file mode 100644 index 4da7d1b..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v41.handlebars +++ /dev/null @@ -1,129 +0,0 @@ -{{<<<<<<<}} -{{~#*inline "glossary"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~#unless (op "&&" selectedDictionary (op "!=" selectedDictionary definition.dictionary))~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~/unless~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} -
      - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} -
    1. - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} -
    2. - {{~/unless~}} - {{~/each~}} -
    - {{~else~}} - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} - {{~/unless~}} - {{~/each~}} - {{~/if~}} - {{~else if (op "===" definition.type "kanji")~}} - {{~#if (op ">" definition.glossary.length 1)~}} -
      {{#each definition.glossary}}
    1. {{.}}
    2. {{/each}}
    - {{~else~}} - {{~#each definition.glossary~}}{{.}}{{~/each~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} -{{=======}} -{{~#*inline "glossary"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~#unless (op "&&" selectedDictionary (op "!=" selectedDictionary definition.dictionary))~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~#if definition.glossaryScopedStyles~}} - - {{~/if~}} - {{~/unless~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} -
      - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} -
    1. - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} -
    2. - {{~#if dictScopedStyles~}} - - {{~/if~}} - {{~/unless~}} - {{~/each~}} -
    - {{~else~}} - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} - {{~#if glossaryScopedStyles~}} - - {{~/if~}} - {{~/unless~}} - {{~/each~}} - {{~/if~}} - {{~else if (op "===" definition.type "kanji")~}} - {{~#if (op ">" definition.glossary.length 1)~}} -
      {{#each definition.glossary}}
    1. {{.}}
    2. {{/each}}
    - {{~else~}} - {{~#each definition.glossary~}}{{.}}{{~/each~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#*inline "glossary-first"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} - {{~#with definition.definitions.[0]~}}{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}{{~/with~}} - {{~else~}} - {{~#with definition.definitions.[0]~}}{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}{{~/with~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} -{{=======}} -{{~#*inline "glossary-first"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~#if definition.glossaryScopedStyles~}} - - {{~/if~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} - {{~#with definition.definitions.[0]~}} - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} - {{~#if glossaryScopedStyles~}} - - {{~/if~}} - {{~/with~}} - {{~else~}} - {{~#with definition.definitions.[0]~}} - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} - {{~#if glossaryScopedStyles~}} - - {{~/if~}} - {{~/with~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} -{{>>>>>>>}} \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v45.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v45.handlebars deleted file mode 100644 index 14da7ce..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v45.handlebars +++ /dev/null @@ -1,9 +0,0 @@ -{{<<<<<<<}} -{{#*inline "selection-text"}} - {{~#if (hasMedia "selectionText")}}{{{getMedia "selectionText"}}}{{/if~}} -{{/inline}} -{{=======}} -{{#*inline "popup-selection-text"}} - {{~#if (hasMedia "popupSelectionText")}}{{{getMedia "popupSelectionText"}}}{{/if~}} -{{/inline}} -{{>>>>>>>}} \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v49.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v49.handlebars deleted file mode 100644 index f95cdd4..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v49.handlebars +++ /dev/null @@ -1,115 +0,0 @@ -{{<<<<<<<}} -{{#*inline "glossary-single"}} - {{~#unless brief~}} - {{~#scope~}} - {{~set "any" false~}} - {{~#each definitionTags~}} - {{~#if (op "||" (op "!" @root.compactTags) (op "!" redundant))~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{name}} - {{~set "any" true~}} - {{~/if~}} - {{~/each~}} - {{~#unless noDictionaryTag~}} - {{~#if (op "||" (op "!" @root.compactTags) (op "!==" dictionary (get "previousDictionary")))~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{dictionary}} - {{~set "any" true~}} - {{~/if~}} - {{~/unless~}} - {{~#if (get "any")}}) {{/if~}} - {{~/scope~}} - {{~#if only~}}({{#each only}}{{.}}{{#unless @last}}, {{/unless}}{{/each}} only) {{/if~}} - {{~/unless~}} - {{~#if (op "<=" glossary.length 1)~}} - {{#each glossary}}{{formatGlossary ../dictionary .}}{{/each}} - {{~else if @root.compactGlossaries~}} - {{#each glossary}}{{formatGlossary ../dictionary .}}{{#unless @last}} | {{/unless}}{{/each}} - {{~else~}} -
      {{#each glossary}}
    • {{formatGlossary ../dictionary .}}
    • {{/each}}
    - {{~/if~}} - {{~set "previousDictionary" dictionary~}} -{{/inline}} -{{=======}} -{{#*inline "glossary-single"}} - {{~#unless brief~}} - {{~#scope~}} - {{~set "any" false~}} - {{~#each definitionTags~}} - {{~#if (op "||" (op "!" @root.compactTags) (op "!" redundant))~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{name}} - {{~set "any" true~}} - {{~/if~}} - {{~/each~}} - {{~#unless noDictionaryTag~}} - {{~#if (op "||" (op "!" @root.compactTags) (op "!==" dictionary (get "previousDictionary")))~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{dictionaryAlias}} - {{~set "any" true~}} - {{~/if~}} - {{~/unless~}} - {{~#if (get "any")}}) {{/if~}} - {{~/scope~}} - {{~#if only~}}({{#each only}}{{.}}{{#unless @last}}, {{/unless}}{{/each}} only) {{/if~}} - {{~/unless~}} - {{~#if (op "<=" glossary.length 1)~}} - {{#each glossary}}{{formatGlossary ../dictionary .}}{{/each}} - {{~else if @root.compactGlossaries~}} - {{#each glossary}}{{formatGlossary ../dictionary .}}{{#unless @last}} | {{/unless}}{{/each}} - {{~else~}} -
      {{#each glossary}}
    • {{formatGlossary ../dictionary .}}
    • {{/each}}
    - {{~/if~}} - {{~set "previousDictionary" dictionary~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "dictionary"}} - {{~definition.dictionary~}} -{{/inline}} -{{=======}} -{{#*inline "dictionary"}} - {{~definition.dictionary~}} -{{/inline}} - -{{#*inline "dictionary-alias"}} - {{~definition.dictionaryAlias~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "frequencies"}} - {{~#if (op ">" definition.frequencies.length 0)~}} -
      - {{~#each definition.frequencies~}} -
    • - {{~#if (op "!==" ../definition.type "kanji")~}} - {{~#if (op "||" (op ">" ../uniqueExpressions.length 1) (op ">" ../uniqueReadings.length 1))~}}( - {{~furigana expression reading~}} - ) {{/if~}} - {{~/if~}} - {{~dictionary}}: {{frequency~}} -
    • - {{~/each~}} -
    - {{~/if~}} -{{/inline}} -{{=======}} -{{#*inline "frequencies"}} - {{~#if (op ">" definition.frequencies.length 0)~}} -
      - {{~#each definition.frequencies~}} -
    • - {{~#if (op "!==" ../definition.type "kanji")~}} - {{~#if (op "||" (op ">" ../uniqueExpressions.length 1) (op ">" ../uniqueReadings.length 1))~}}( - {{~furigana expression reading~}} - ) {{/if~}} - {{~/if~}} - {{~dictionaryAlias}}: {{frequency~}} -
    • - {{~/each~}} -
    - {{~/if~}} -{{/inline}} -{{>>>>>>>}} \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v6.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v6.handlebars deleted file mode 100644 index 809423c..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v6.handlebars +++ /dev/null @@ -1,25 +0,0 @@ -{{#*inline "conjugation"}} - {{~#if definition.reasons~}} - {{~#each definition.reasons~}} - {{~#if (op ">" @index 0)}} « {{/if~}} - {{.}} - {{~/each~}} - {{~/if~}} -{{/inline}} - -{{#*inline "frequencies"}} - {{~#if (op ">" definition.frequencies.length 0)~}} -
      - {{~#each definition.frequencies~}} -
    • - {{~#if (op "!==" ../definition.type "kanji")~}} - {{~#if (op "||" (op ">" ../uniqueExpressions.length 1) (op ">" ../uniqueReadings.length 1))~}}( - {{~#furigana expression reading~}}{{~/furigana~}} - ) {{/if~}} - {{~/if~}} - {{~dictionary}}: {{frequency~}} -
    • - {{~/each~}} -
    - {{~/if~}} -{{/inline}} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v8.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v8.handlebars deleted file mode 100644 index b3aed45..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/anki-field-templates-upgrade-v8.handlebars +++ /dev/null @@ -1,131 +0,0 @@ -{{#*inline "stroke-count"}} - {{~#scope~}} - {{~#set "found" false}}{{/set~}} - {{~#each definition.stats.misc~}} - {{~#if (op "===" name "strokes")~}} - {{~#set "found" true}}{{/set~}} - Stroke count: {{value}} - {{~/if~}} - {{~/each~}} - {{~#if (op "!" (get "found"))~}} - Stroke count: Unknown - {{~/if~}} - {{~/scope~}} -{{/inline}} - -{{<<<<<<<}} -{{#*inline "glossary-single"}} - {{~#unless brief~}} - {{~#scope~}} - {{~#set "any" false}}{{/set~}} - {{~#if definitionTags~}}{{#each definitionTags~}} - {{~#if (op "||" (op "!" ../data.compactTags) (op "!" redundant))~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{name}} - {{~#set "any" true}}{{/set~}} - {{~/if~}} - {{~/each~}} - {{~#if (get "any")}}) {{/if~}} - {{~/if~}} - {{~/scope~}} - {{~#if only~}}({{#each only}}{{{.}}}{{#unless @last}}, {{/unless}}{{/each}} only) {{/if~}} - {{~/unless~}} - {{~#if glossary.[1]~}} - {{~#if compactGlossaries~}} - {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{#unless @last}} | {{/unless}}{{/each}} - {{~else~}} -
      {{#each glossary}}
    • {{#multiLine}}{{.}}{{/multiLine}}
    • {{/each}}
    - {{~/if~}} - {{~else~}} - {{~#multiLine}}{{glossary.[0]}}{{/multiLine~}} - {{~/if~}} -{{/inline}} -{{=======}} -{{#*inline "glossary-single"}} - {{~#unless brief~}} - {{~#scope~}} - {{~#set "any" false}}{{/set~}} - {{~#each definitionTags~}} - {{~#if (op "||" (op "!" @root.compactTags) (op "!" redundant))~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{name}} - {{~#set "any" true}}{{/set~}} - {{~/if~}} - {{~/each~}} - {{~#unless noDictionaryTag~}} - {{~#if (op "||" (op "!" @root.compactTags) (op "!==" dictionary (get "previousDictionary")))~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{dictionary}} - {{~#set "any" true}}{{/set~}} - {{~/if~}} - {{~/unless~}} - {{~#if (get "any")}}) {{/if~}} - {{~/scope~}} - {{~#if only~}}({{#each only}}{{.}}{{#unless @last}}, {{/unless}}{{/each}} only) {{/if~}} - {{~/unless~}} - {{~#if (op "<=" glossary.length 1)~}} - {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{/each}} - {{~else if @root.compactGlossaries~}} - {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{#unless @last}} | {{/unless}}{{/each}} - {{~else~}} -
      {{#each glossary}}
    • {{#multiLine}}{{.}}{{/multiLine}}
    • {{/each}}
    - {{~/if~}} - {{~#set "previousDictionary" dictionary~}}{{~/set~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "glossary"}} -
    - {{~#if modeKanji~}} - {{~#if definition.glossary.[1]~}} -
      {{#each definition.glossary}}
    1. {{.}}
    2. {{/each}}
    - {{~else~}} - {{definition.glossary.[0]}} - {{~/if~}} - {{~else~}} - {{~#if group~}} - {{~#if definition.definitions.[1]~}} -
      {{#each definition.definitions}}
    1. {{> glossary-single brief=../brief compactGlossaries=../compactGlossaries data=../.}}
    2. {{/each}}
    - {{~else~}} - {{~> glossary-single definition.definitions.[0] brief=brief compactGlossaries=compactGlossaries data=.~}} - {{~/if~}} - {{~else if merge~}} - {{~#if definition.definitions.[1]~}} -
      {{#each definition.definitions}}
    1. {{> glossary-single brief=../brief compactGlossaries=../compactGlossaries data=../.}}
    2. {{/each}}
    - {{~else~}} - {{~> glossary-single definition.definitions.[0] brief=brief compactGlossaries=compactGlossaries data=.~}} - {{~/if~}} - {{~else~}} - {{~> glossary-single definition brief=brief compactGlossaries=compactGlossaries data=.~}} - {{~/if~}} - {{~/if~}} -
    -{{/inline}} -{{=======}} -{{~#*inline "glossary"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} -
      {{~#each definition.definitions~}}
    1. {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}
    2. {{~/each~}}
    - {{~else~}} - {{~#each definition.definitions~}}{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}{{~/each~}} - {{~/if~}} - {{~else if (op "===" definition.type "kanji")~}} - {{~#if (op ">" definition.glossary.length 1)~}} -
      {{#each definition.glossary}}
    1. {{.}}
    2. {{/each}}
    - {{~else~}} - {{~#each definition.glossary~}}{{.}}{{~/each~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} - -{{#*inline "glossary-no-dictionary"}} - {{~> glossary noDictionaryTag=true ~}} -{{/inline}} -{{>>>>>>>}} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/default-anki-field-templates.handlebars b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/default-anki-field-templates.handlebars deleted file mode 100644 index a065e38..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/data/templates/default-anki-field-templates.handlebars +++ /dev/null @@ -1,475 +0,0 @@ -{{#*inline "glossary-single"}} - {{~#unless brief~}} - {{~#scope~}} - {{~set "any" false~}} - {{~#each definitionTags~}} - {{~#if (op "||" (op "!" @root.compactTags) (op "!" redundant))~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{name}} - {{~set "any" true~}} - {{~/if~}} - {{~/each~}} - {{~#unless noDictionaryTag~}} - {{~#if (op "||" (op "!" @root.compactTags) (op "!==" dictionary (get "previousDictionary")))~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{dictionaryAlias}} - {{~set "any" true~}} - {{~/if~}} - {{~/unless~}} - {{~#if (get "any")}}) {{/if~}} - {{~/scope~}} - {{~#if only~}}({{#each only}}{{.}}{{#unless @last}}, {{/unless}}{{/each}} only) {{/if~}} - {{~/unless~}} - {{~#if (op "<=" glossary.length 1)~}} - {{#each glossary}}{{formatGlossary ../dictionary .}}{{/each}} - {{~else if @root.compactGlossaries~}} - {{#each glossary}}{{formatGlossary ../dictionary .}}{{#unless @last}} | {{/unless}}{{/each}} - {{~else~}} -
      {{#each glossary}}
    • {{formatGlossary ../dictionary .}}
    • {{/each}}
    - {{~/if~}} - {{~set "previousDictionary" dictionary~}} -{{/inline}} - -{{#*inline "audio"}} - {{~#if (hasMedia "audio")~}} - [sound:{{getMedia "audio"}}] - {{~/if~}} -{{/inline}} - -{{#*inline "character"}} - {{~definition.character~}} -{{/inline}} - -{{#*inline "dictionary"}} - {{~definition.dictionary~}} -{{/inline}} - -{{#*inline "dictionary-alias"}} - {{~definition.dictionaryAlias~}} -{{/inline}} - -{{#*inline "expression"}} - {{~#if merge~}} - {{~#if modeTermKana~}} - {{~#each definition.reading~}} - {{{.}}} - {{~#unless @last}}、{{/unless~}} - {{~else~}} - {{~#each definition.expression~}} - {{{.}}} - {{~#unless @last}}、{{/unless~}} - {{~/each~}} - {{~/each~}} - {{~else~}} - {{~#each definition.expression~}} - {{{.}}} - {{~#unless @last}}、{{/unless~}} - {{~/each~}} - {{~/if~}} - {{~else~}} - {{~#if modeTermKana~}} - {{~#if definition.reading~}} - {{definition.reading}} - {{~else~}} - {{definition.expression}} - {{~/if~}} - {{~else~}} - {{definition.expression}} - {{~/if~}} - {{~/if~}} -{{/inline}} - -{{#*inline "furigana"}} - {{~#if merge~}} - {{~#each definition.expressions~}} - {{~furigana .~}} - {{~#unless @last}}、{{/unless~}} - {{~/each~}} - {{~else~}} - {{furigana definition}} - {{~/if~}} -{{/inline}} - -{{#*inline "furigana-plain"}} - {{~#if merge~}} - {{~#each definition.expressions~}} - {{~furiganaPlain .~}} - {{~#unless @last}}、{{/unless~}} - {{~/each~}} - {{~else~}} - {{furiganaPlain definition}} - {{~/if~}} -{{/inline}} - -{{~#*inline "glossary"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~#unless (op "&&" selectedDictionary (op "!=" selectedDictionary definition.dictionary))~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~#if definition.glossaryScopedStyles~}} - - {{~/if~}} - {{~/unless~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} -
      - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} -
    1. - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} -
    2. - {{~#if dictScopedStyles~}} - - {{~/if~}} - {{~/unless~}} - {{~/each~}} -
    - {{~else~}} - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} - {{~#if glossaryScopedStyles~}} - - {{~/if~}} - {{~/unless~}} - {{~/each~}} - {{~/if~}} - {{~else if (op "===" definition.type "kanji")~}} - {{~#if (op ">" definition.glossary.length 1)~}} -
      {{#each definition.glossary}}
    1. {{.}}
    2. {{/each}}
    - {{~else~}} - {{~#each definition.glossary~}}{{.}}{{~/each~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} - -{{#*inline "glossary-no-dictionary"}} - {{~> glossary noDictionaryTag=true ~}} -{{/inline}} - -{{#*inline "glossary-brief"}} - {{~> glossary brief=true ~}} -{{/inline}} - -{{~#*inline "glossary-first"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~#if definition.glossaryScopedStyles~}} - - {{~/if~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} - {{~#with definition.definitions.[0]~}} - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} - {{~#if glossaryScopedStyles~}} - - {{~/if~}} - {{~/with~}} - {{~else~}} - {{~#with definition.definitions.[0]~}} - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} - {{~#if glossaryScopedStyles~}} - - {{~/if~}} - {{~/with~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} - -{{#*inline "glossary-first-no-dictionary"}} - {{~> glossary-first noDictionaryTag=true ~}} -{{/inline}} - -{{#*inline "glossary-first-brief"}} - {{~> glossary-first brief=true ~}} -{{/inline}} - -{{#*inline "kunyomi"}} - {{~#each definition.kunyomi}}{{.}}{{#unless @last}}, {{/unless}}{{/each~}} -{{/inline}} - -{{#*inline "onyomi"}} - {{~#each definition.onyomi}}{{.}}{{#unless @last}}, {{/unless}}{{/each~}} -{{/inline}} - -{{#*inline "onyomi-hiragana"}} - {{~#each definition.onyomi}}{{hiragana .}}{{#unless @last}}, {{/unless}}{{/each~}} -{{/inline}} - -{{#*inline "reading"}} - {{~#unless modeTermKana~}} - {{~#if merge~}} - {{~#each definition.reading~}} - {{{.}}} - {{~#unless @last}}、{{/unless~}} - {{~/each~}} - {{~else~}} - {{~definition.reading~}} - {{~/if~}} - {{~/unless~}} -{{/inline}} - -{{#*inline "sentence"}} - {{~#if definition.cloze}}{{{definition.cloze.sentence}}}{{/if~}} -{{/inline}} - -{{#*inline "cloze-prefix"}} - {{~#if definition.cloze}}{{{definition.cloze.prefix}}}{{/if~}} -{{/inline}} - -{{#*inline "cloze-body"}} - {{~#if definition.cloze}}{{{definition.cloze.body}}}{{/if~}} -{{/inline}} - -{{#*inline "cloze-body-kana"}} - {{~#if definition.cloze}}{{{definition.cloze.bodyKana}}}{{/if~}} -{{/inline}} - -{{#*inline "cloze-suffix"}} - {{~#if definition.cloze}}{{{definition.cloze.suffix}}}{{/if~}} -{{/inline}} - -{{#*inline "tags"}} - {{~#mergeTags definition group merge}}{{this}}{{/mergeTags~}} -{{/inline}} - -{{~#*inline "url"~}} - {{definition.url}} -{{~/inline~}} - -{{#*inline "screenshot"}} - {{~#if (hasMedia "screenshot")~}} - - {{~/if~}} -{{/inline}} - -{{#*inline "document-title"}} - {{~context.document.title~}} -{{/inline}} - -{{! Pitch Accents }} -{{#*inline "pitch-accent-item"}} - {{~pronunciation format=format reading=reading downstepPosition=position nasalPositions=nasalPositions devoicePositions=devoicePositions~}} -{{/inline}} - -{{#*inline "pitch-accent-item-disambiguation"}} - {{~#scope~}} - {{~set "exclusive" (spread exclusiveExpressions exclusiveReadings)~}} - {{~#if (op ">" (property (get "exclusive") "length") 0)~}} - {{~set "separator" ""~}} - ({{#each (get "exclusive")~}} - {{~get "separator"~}}{{{.}}} - {{~/each}} only) - {{~/if~}} - {{~/scope~}} -{{/inline}} - -{{#*inline "pitch-accent-list"}} - {{~#if (op ">" pitchCount 0)~}} - {{~#if (op ">" pitchCount 1)~}}
      {{~/if~}} - {{~#each pitches~}} - {{~#each pitches~}} - {{~#if (op ">" ../../pitchCount 1)~}}
    1. {{~/if~}} - {{~> pitch-accent-item-disambiguation~}} - {{~> pitch-accent-item format=../../format~}} - {{~#if (op ">" ../../pitchCount 1)~}}
    2. {{~/if~}} - {{~/each~}} - {{~/each~}} - {{~#if (op ">" pitchCount 1)~}}
    {{~/if~}} - {{~/if~}} -{{/inline}} - -{{#*inline "pitch-accents"}} - {{~> pitch-accent-list format='text'~}} -{{/inline}} - -{{#*inline "pitch-accent-graphs"}} - {{~> pitch-accent-list format='graph'~}} -{{/inline}} - -{{#*inline "pitch-accent-graphs-jj"}} - {{~> pitch-accent-list format='graph-jj'~}} -{{/inline}} - -{{#*inline "pitch-accent-positions"}} - {{~> pitch-accent-list format='position'~}} -{{/inline}} - -{{~#*inline "pitch-accent-categories"~}} - {{~#each (pitchCategories @root)~}}{{~.~}}{{~#unless @last~}},{{~/unless~}}{{~/each~}} -{{~/inline~}} -{{! End Pitch Accents }} - -{{#*inline "phonetic-transcriptions"}} - {{~#if (op ">" definition.phoneticTranscriptions.length 0)~}} -
      - {{~#each definition.phoneticTranscriptions~}} - {{~#each phoneticTranscriptions~}} -
    • - {{~set "any" false~}} - {{~#each tags~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{name}} - {{~set "any" true~}} - {{~/each~}} - {{~#if (get "any")}}) {{/if~}} - {{ipa~}} -
    • - {{~/each~}} - {{~/each~}} -
    - {{~/if~}} -{{/inline}} - -{{#*inline "clipboard-image"}} - {{~#if (hasMedia "clipboardImage")~}} - - {{~/if~}} -{{/inline}} - -{{#*inline "clipboard-text"}} - {{~#if (hasMedia "clipboardText")}}{{{getMedia "clipboardText"}}}{{/if~}} -{{/inline}} - -{{#*inline "conjugation"}} - {{~#if (op ">" definition.inflectionRuleChainCandidates.length 0)~}} - {{~set "multiple" false~}} - {{~#if (op ">" definition.inflectionRuleChainCandidates.length 1)~}} - {{~set "multiple" true~}} - {{~/if~}} - {{~#if (get "multiple")~}}
      {{/if~}} - {{~#each definition.inflectionRuleChainCandidates~}} - {{~#if (op ">" inflectionRules.length 0)~}} - {{~#if (get "multiple")~}}
    • {{/if~}} - {{~#each inflectionRules~}} - {{~#if (op ">" @index 0)}} « {{/if~}} - {{name}} - {{~/each~}} - {{~#if (get "multiple")~}}
    • {{/if~}} - {{~/if~}} - {{~/each~}} - {{~#if (get "multiple")~}}
    {{/if~}} - {{~/if~}} -{{/inline}} - -{{#*inline "frequencies"}} - {{~#if (op ">" definition.frequencies.length 0)~}} -
      - {{~#each definition.frequencies~}} -
    • - {{~#if (op "!==" ../definition.type "kanji")~}} - {{~#if (op "||" (op ">" ../uniqueExpressions.length 1) (op ">" ../uniqueReadings.length 1))~}}( - {{~furigana expression reading~}} - ) {{/if~}} - {{~/if~}} - {{~dictionaryAlias}}: {{frequency~}} -
    • - {{~/each~}} -
    - {{~/if~}} -{{/inline}} - -{{#*inline "frequency-harmonic-rank"}} - {{~#if (op "===" definition.frequencyHarmonic -1) ~}} - 9999999 - {{~else ~}} - {{definition.frequencyHarmonic}} - {{~/if~}} -{{/inline}} - -{{#*inline "frequency-harmonic-occurrence"}} - {{~#if (op "===" definition.frequencyHarmonic -1) ~}} - 0 - {{~else ~}} - {{definition.frequencyHarmonic}} - {{~/if~}} -{{/inline}} - -{{#*inline "frequency-average-rank"}} - {{~#if (op "===" definition.frequencyAverage -1) ~}} - 9999999 - {{~else ~}} - {{definition.frequencyAverage}} - {{~/if~}} -{{/inline}} - -{{#*inline "frequency-average-occurrence"}} - {{~#if (op "===" definition.frequencyAverage -1) ~}} - 0 - {{~else ~}} - {{definition.frequencyAverage}} - {{~/if~}} -{{/inline}} - -{{#*inline "stroke-count"}} - {{~#scope~}} - {{~set "found" false~}} - {{~#each definition.stats.misc~}} - {{~#if (op "===" name "strokes")~}} - {{~set "found" true~}} - Stroke count: {{value}} - {{~/if~}} - {{~/each~}} - {{~#if (op "!" (get "found"))~}} - Stroke count: Unknown - {{~/if~}} - {{~/scope~}} -{{/inline}} - -{{#*inline "part-of-speech-pretty"}} - {{~#if (op "===" . "v1")~}}Ichidan verb - {{~else if (op "===" . "v5")~}}Godan verb - {{~else if (op "===" . "vk")~}}Kuru verb - {{~else if (op "===" . "vs")~}}Suru verb - {{~else if (op "===" . "vz")~}}Zuru verb - {{~else if (op "===" . "adj-i")~}}I-adjective - {{~else if (op "===" . "n")~}}Noun - {{~else~}}{{.}} - {{~/if~}} -{{/inline}} - -{{#*inline "part-of-speech"}} - {{~#scope~}} - {{~#if (op "!==" definition.type "kanji")~}} - {{~set "first" true~}} - {{~#each definition.expressions~}} - {{~#each wordClasses~}} - {{~#unless (get (concat "used_" .))~}} - {{~> part-of-speech-pretty . ~}} - {{~#unless (get "first")}}, {{/unless~}} - {{~set (concat "used_" .) true~}} - {{~set "first" false~}} - {{~/unless~}} - {{~/each~}} - {{~/each~}} - {{~#if (get "first")~}}Unknown{{~/if~}} - {{~/if~}} - {{~/scope~}} -{{/inline}} - -{{#*inline "search-query"}} - {{~#multiLine}}{{context.fullQuery}}{{/multiLine~}} -{{/inline}} - -{{#*inline "popup-selection-text"}} - {{~#if (hasMedia "popupSelectionText")}}{{{getMedia "popupSelectionText"}}}{{/if~}} -{{/inline}} - -{{#*inline "sentence-furigana"}} - {{~#if definition.cloze~}} - {{~#if (hasMedia "textFurigana" definition.cloze.sentence)~}} - {{{getMedia "textFurigana" definition.cloze.sentence escape=false}}} - {{~else~}} - {{{definition.cloze.sentence}}} - {{~/if~}} - {{~/if~}} -{{/inline}} - -{{~> (lookup . "marker") ~}} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/accessibility.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/accessibility.svg deleted file mode 100644 index d07890c..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/accessibility.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/add-duplicate-term-kana-blue.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/add-duplicate-term-kana-blue.svg deleted file mode 100644 index efbfc62..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/add-duplicate-term-kana-blue.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/add-duplicate-term-kana.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/add-duplicate-term-kana.svg deleted file mode 100644 index 6bc430e..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/add-duplicate-term-kana.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/add-duplicate-term-kanji-blue.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/add-duplicate-term-kanji-blue.svg deleted file mode 100644 index 5a74ae5..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/add-duplicate-term-kanji-blue.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/add-duplicate-term-kanji.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/add-duplicate-term-kanji.svg deleted file mode 100644 index da39eb1..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/add-duplicate-term-kanji.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/add-term-kana.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/add-term-kana.svg deleted file mode 100644 index 3578c5e..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/add-term-kana.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/add-term-kanji.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/add-term-kanji.svg deleted file mode 100644 index 102b9aa..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/add-term-kanji.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/backup.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/backup.svg deleted file mode 100644 index 54f9e01..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/backup.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/book.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/book.svg deleted file mode 100644 index 1b78529..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/book.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/checkbox-border.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/checkbox-border.svg deleted file mode 100644 index cd117bb..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/checkbox-border.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/checkbox-check.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/checkbox-check.svg deleted file mode 100644 index 7e2c8f5..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/checkbox-check.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/checkbox-fill.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/checkbox-fill.svg deleted file mode 100644 index 1905677..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/checkbox-fill.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/checkmark.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/checkmark.svg deleted file mode 100644 index 1450416..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/checkmark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/clipboard.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/clipboard.svg deleted file mode 100644 index 7554513..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/clipboard.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/cog.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/cog.svg deleted file mode 100644 index 7232d25..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/cog.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/collapse.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/collapse.svg deleted file mode 100644 index 1efed70..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/collapse.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/connection.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/connection.svg deleted file mode 100644 index 9a639f0..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/connection.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/cross.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/cross.svg deleted file mode 100644 index 9ea89e5..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/cross.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/double-down-chevron.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/double-down-chevron.svg deleted file mode 100644 index 9068405..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/double-down-chevron.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/down-chevron.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/down-chevron.svg deleted file mode 100644 index ad2414c..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/down-chevron.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/entry-current.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/entry-current.svg deleted file mode 100644 index abf3f76..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/entry-current.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/exclamation-point-short.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/exclamation-point-short.svg deleted file mode 100644 index 6e92c46..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/exclamation-point-short.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/expand.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/expand.svg deleted file mode 100644 index 57a2bd9..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/expand.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/external-link.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/external-link.svg deleted file mode 100644 index f8bbba5..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/external-link.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/hamburger-menu.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/hamburger-menu.svg deleted file mode 100644 index 9048d20..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/hamburger-menu.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/hiragana-a.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/hiragana-a.svg deleted file mode 100644 index 1a7d6a7..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/hiragana-a.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon128.png b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon128.png deleted file mode 100644 index 91531f3..0000000 Binary files a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon128.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon16.png b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon16.png deleted file mode 100644 index 8347dae..0000000 Binary files a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon16.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon19.png b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon19.png deleted file mode 100644 index 05dc9f0..0000000 Binary files a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon19.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon32.png b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon32.png deleted file mode 100644 index 58f56dd..0000000 Binary files a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon32.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon38.png b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon38.png deleted file mode 100644 index c774d61..0000000 Binary files a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon38.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon48.png b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon48.png deleted file mode 100644 index 371b19f..0000000 Binary files a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon48.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon64.png b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon64.png deleted file mode 100644 index d12a9b7..0000000 Binary files a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/icon64.png and /dev/null differ diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/kebab-menu.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/kebab-menu.svg deleted file mode 100644 index 6df6a17..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/kebab-menu.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/key.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/key.svg deleted file mode 100644 index 738e07a..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/key.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/keyboard.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/keyboard.svg deleted file mode 100644 index aac85b1..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/keyboard.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/left-chevron.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/left-chevron.svg deleted file mode 100644 index 9dd012d..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/left-chevron.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/lock.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/lock.svg deleted file mode 100644 index ec42789..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/lock.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/magnifying-glass.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/magnifying-glass.svg deleted file mode 100644 index a8367d8..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/magnifying-glass.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/material-down-arrow.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/material-down-arrow.svg deleted file mode 100644 index dd60c48..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/material-down-arrow.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/material-right-arrow.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/material-right-arrow.svg deleted file mode 100644 index 15be03c..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/material-right-arrow.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/monitor.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/monitor.svg deleted file mode 100644 index b2fd82d..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/monitor.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/mouse.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/mouse.svg deleted file mode 100644 index 80c400e..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/mouse.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/note-card.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/note-card.svg deleted file mode 100644 index fb00b07..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/note-card.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/overwrite-term-kana.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/overwrite-term-kana.svg deleted file mode 100644 index 7bcb192..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/overwrite-term-kana.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/overwrite-term-kanji.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/overwrite-term-kanji.svg deleted file mode 100644 index d7d48ad..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/overwrite-term-kanji.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/palette.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/palette.svg deleted file mode 100644 index 4a615ef..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/palette.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/play-audio.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/play-audio.svg deleted file mode 100644 index 1d5e2d9..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/play-audio.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/plus-circle-large.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/plus-circle-large.svg deleted file mode 100644 index b034a72..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/plus-circle-large.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/plus-circle-small.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/plus-circle-small.svg deleted file mode 100644 index 1ddc2b7..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/plus-circle-small.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/plus-thick.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/plus-thick.svg deleted file mode 100644 index 6b1b5c5..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/plus-thick.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/popup-size.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/popup-size.svg deleted file mode 100644 index 220409d..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/popup-size.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/popup.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/popup.svg deleted file mode 100644 index 77217cd..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/popup.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/profile.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/profile.svg deleted file mode 100644 index 52a1363..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/profile.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/question-mark-circle.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/question-mark-circle.svg deleted file mode 100644 index 0076f7c..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/question-mark-circle.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/question-mark-thick.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/question-mark-thick.svg deleted file mode 100644 index 7f2214a..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/question-mark-thick.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/question-mark.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/question-mark.svg deleted file mode 100644 index bc3b9a1..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/question-mark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/radio-button-dot.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/radio-button-dot.svg deleted file mode 100644 index b1aebe2..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/radio-button-dot.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/radio-button.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/radio-button.svg deleted file mode 100644 index 8c65506..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/radio-button.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/right-chevron.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/right-chevron.svg deleted file mode 100644 index e210057..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/right-chevron.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/scanning.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/scanning.svg deleted file mode 100644 index 9ac16c8..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/scanning.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/sentence-parsing.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/sentence-parsing.svg deleted file mode 100644 index 7c88317..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/sentence-parsing.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/source-term.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/source-term.svg deleted file mode 100644 index a70938f..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/source-term.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/speaker.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/speaker.svg deleted file mode 100644 index e0a4e79..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/speaker.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/spinner.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/spinner.svg deleted file mode 100644 index ec19ba8..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/spinner.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/tag.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/tag.svg deleted file mode 100644 index edbdcfb..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/tag.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/text-parsing.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/text-parsing.svg deleted file mode 100644 index dfa88af..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/text-parsing.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/translation.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/translation.svg deleted file mode 100644 index fdb98b1..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/translation.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/up-arrow.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/up-arrow.svg deleted file mode 100644 index d5dea78..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/up-arrow.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/up-chevron.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/up-chevron.svg deleted file mode 100644 index fa1bb7b..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/up-chevron.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/view-note.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/view-note.svg deleted file mode 100644 index 3e6f1dc..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/view-note.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/window.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/window.svg deleted file mode 100644 index d0d3b0f..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/window.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/yomitan-icon.svg b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/yomitan-icon.svg deleted file mode 100644 index 3756901..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/images/yomitan-icon.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/info.html b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/info.html deleted file mode 100644 index 91658ba..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/info.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - Yomitan Info - - - - - - - - - - - - - - -
    -
    -
    - - - -

    Yomitan Info

    - -

    General

    -
    -
    -
      -
    • Extension version:
    • -
    • Platform:
    • -
    • Browser:
    • -
    • Language:
    • -
    • User agent:
    • -
    • AnkiConnect version:
    • -
    • Installed dictionaries:
    • -
    • Export settings
    • -
    -
    -
    - - -
    -
    - -
    -
    - - - -
    -
    -
    - - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/issues.html b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/issues.html deleted file mode 100644 index bd9c8d5..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/issues.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - Yomitan Issues - - - - - - - - - - - - - - -
    -
    -
    - - - -

    Yomitan Issues

    - -

    Audio download failed due to possible extension permissions error (Chrome)

    -
    -
    -

    - Depending on the extension's configuration, Yomitan can sometimes run into issues with - downloading audio files while creating Anki cards. - This may be due to a permissions issue where Yomitan hasn't been granted access to - the sites hosting the audio files. -

    -

    - Check the Site access section of the - extension settings pages - and grant the extension access to all sites or add the specific audio host URLs. -

    -

    - From your browser's address bar, go to about:addons and navigate to the settings for Yomitan. - Check the Site access section of the extension settings pages - and grant the extension access to all sites or add the specific audio host URLs. -

    -
    -
    - -

    Audio download failed due to an expired server certificate

    -
    -
    -

    - If a website failes to keep its HTTPS certificate up to date, - downloads can fail because the browser flags the connection as insecure. - This has happened occasionally for some websites that Yomitan interacts with, - and the issue is usually resolved within a day. -

    -

    - This issue is a server-side issue that Yomitan doesn't have control over. -

    -
    -
    - -

    Audio download was cancelled due to an idle timeout

    -
    -
    -

    - Audio files can be downloaded from remote servers when creating Anki cards, - and sometimes these downloads can stall due to server or internet connectivity issues. - The Idle download timeout setting on the settings page - specifies a time limit for stalled downloads. -

    -
    -
    - - - -
    -
    -
    - - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/js/accessibility/accessibility-controller.js b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/js/accessibility/accessibility-controller.js deleted file mode 100644 index 8ba998d..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/js/accessibility/accessibility-controller.js +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright (C) 2023-2024 Yomitan Authors - * Copyright (C) 2021-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 this program. If not, see . - */ - -import {isContentScriptRegistered, registerContentScript, unregisterContentScript} from '../background/script-manager.js'; -import {log} from '../core/log.js'; - -/** - * This class controls the registration of accessibility handlers. - */ -export class AccessibilityController { - constructor() { - /** @type {?import('core').TokenObject} */ - this._updateGoogleDocsAccessibilityToken = null; - /** @type {?Promise} */ - this._updateGoogleDocsAccessibilityPromise = null; - /** @type {boolean} */ - this._forceGoogleDocsHtmlRenderingAny = false; - } - - /** - * Updates the accessibility handlers. - * @param {import('settings').Options} fullOptions The full options object from the `Backend` instance. - * The value is treated as read-only and is not modified. - */ - async update(fullOptions) { - let forceGoogleDocsHtmlRenderingAny = false; - for (const {options} of fullOptions.profiles) { - if (options.accessibility.forceGoogleDocsHtmlRendering) { - forceGoogleDocsHtmlRenderingAny = true; - break; - } - } - - await this._updateGoogleDocsAccessibility(forceGoogleDocsHtmlRenderingAny); - } - - // Private - - /** - * @param {boolean} forceGoogleDocsHtmlRenderingAny - */ - async _updateGoogleDocsAccessibility(forceGoogleDocsHtmlRenderingAny) { - // Reentrant token - /** @type {?import('core').TokenObject} */ - const token = {}; - this._updateGoogleDocsAccessibilityToken = token; - - // Wait for previous - let promise = this._updateGoogleDocsAccessibilityPromise; - if (promise !== null) { await promise; } - - // Reentrant check - if (this._updateGoogleDocsAccessibilityToken !== token) { return; } - - // Update - promise = this._updateGoogleDocsAccessibilityInner(forceGoogleDocsHtmlRenderingAny); - this._updateGoogleDocsAccessibilityPromise = promise; - await promise; - this._updateGoogleDocsAccessibilityPromise = null; - } - - /** - * @param {boolean} forceGoogleDocsHtmlRenderingAny - */ - async _updateGoogleDocsAccessibilityInner(forceGoogleDocsHtmlRenderingAny) { - if (this._forceGoogleDocsHtmlRenderingAny === forceGoogleDocsHtmlRenderingAny) { return; } - - this._forceGoogleDocsHtmlRenderingAny = forceGoogleDocsHtmlRenderingAny; - - const id = 'googleDocsAccessibility'; - try { - if (forceGoogleDocsHtmlRenderingAny) { - if (await isContentScriptRegistered(id)) { return; } - try { - await this._registerGoogleDocsContentScript(id, false); - } catch (e) { - // Firefox doesn't support `world` field and will throw an error. - // In this case, use the xray vision version. - await this._registerGoogleDocsContentScript(id, true); - } - } else { - await unregisterContentScript(id); - } - } catch (e) { - log.error(e); - } - } - - /** - * @param {string} id - * @param {boolean} xray - * @returns {Promise} - */ - _registerGoogleDocsContentScript(id, xray) { - /** @type {import('script-manager').RegistrationDetails} */ - const details = { - allFrames: true, - matches: ['*://docs.google.com/*'], - runAt: 'document_start', - js: [ - xray ? - 'js/accessibility/google-docs-xray.js' : - 'js/accessibility/google-docs.js', - ], - }; - if (!xray) { details.world = 'MAIN'; } - return registerContentScript(id, details); - } -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/js/accessibility/google-docs-util.js b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/js/accessibility/google-docs-util.js deleted file mode 100644 index 3d52236..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/js/accessibility/google-docs-util.js +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (C) 2023-2024 Yomitan Authors - * Copyright (C) 2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program 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 this program. If not, see . - */ - -import {computeZoomScale, isPointInAnyRect} from '../dom/document-util.js'; -import {TextSourceRange} from '../dom/text-source-range.js'; - -/** - * This class is a helper for handling Google Docs content in content scripts. - */ -export class GoogleDocsUtil { - constructor() { - /** @type {?HTMLStyleElement} */ - this._styleNode = null; - } - - /** - * Scans the document for text or elements with text information at the given coordinate. - * Coordinates are provided in [client space](https://developer.mozilla.org/en-US/docs/Web/CSS/CSSOM_View/Coordinate_systems). - * @param {number} x The x coordinate to search at. - * @param {number} y The y coordinate to search at. - * @param {import('document-util').GetRangeFromPointOptions} options Options to configure how element detection is performed. - * @returns {?TextSourceRange} A range for the hovered text or element, or `null` if no applicable content was found. - */ - getRangeFromPoint(x, y, {normalizeCssZoom}) { - const styleNode = this._getStyleNode(); - styleNode.disabled = false; - const element = document.elementFromPoint(x, y); - styleNode.disabled = true; - if (element !== null && element.matches('.kix-canvas-tile-content svg>g>rect')) { - const ariaLabel = element.getAttribute('aria-label'); - if (typeof ariaLabel === 'string' && ariaLabel.length > 0) { - return this._createRange(element, ariaLabel, x, y, normalizeCssZoom); - } - } - return null; - } - - /** - * Gets this -
    nameinstalled versionlicense typelink
    @zip.js/zip.js2.7.45BSD-3-Clausegit+https://github.com/gildas-lormeau/zip.js.git
    dexie3.2.5Apache-2.0git+https://github.com/dfahlander/Dexie.js.git
    dexie-export-import4.1.2Apache-2.0git+https://github.com/dexie/Dexie.js.git
    hangul-js0.2.6MITgit://github.com/e-/Hangul.js.git
    parse57.1.2MITgit://github.com/inikulin/parse5.git
    wanakana5.3.1MITgit+ssh://git@github.com/WaniKani/WanaKana.git
    yomitan-handlebars1.0.0MITn/a
    - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/legal.html b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/legal.html deleted file mode 100644 index 1f75b13..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/legal.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - Yomitan Legal - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - -

    Yomitan Legal

    - -

    Yomitan License

    -
    -
    -
    -
    -
    -
    -Copyright (C) 2023-2024  Yomitan Authors
    -Copyright (C) 2016-2022  Yomichan Authors
    -
    -This program is free software: you can redistribute it and/or modify
    -it under the terms of the GNU General Public License as published by
    -the Free Software Foundation, either version 3 of the License, or
    -(at your option) any later version.
    -
    -This program 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 this program.  If not, see <https://www.gnu.org/licenses/>.
    -
    -
    -
    -
    -
    -
    - -

    EDRDG License

    -
    -
    -
    -
    -
    -
    -This package uses the EDICT and KANJIDIC dictionary files. These files are
    -the property of the Electronic Dictionary Research and Development Group,
    -and are used in conformance with the Group's licence.
    -
    -
    -
    -
    -
    -
    - -

    Javascript Dependency Licenses

    -
    -
    -
    - -
    -
    -
    - - - -
    -
    -
    -
    - - - - diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/dexie.js b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/dexie.js deleted file mode 100644 index 9c78077..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/dexie.js +++ /dev/null @@ -1,8347 +0,0 @@ -// @ts-nocheck - -// node_modules/dexie/dist/modern/dexie.mjs -var _global = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : global; -var keys = Object.keys; -var isArray = Array.isArray; -if (typeof Promise !== "undefined" && !_global.Promise) { - _global.Promise = Promise; -} -function extend(obj, extension) { - if (typeof extension !== "object") - return obj; - keys(extension).forEach(function(key) { - obj[key] = extension[key]; - }); - return obj; -} -var getProto = Object.getPrototypeOf; -var _hasOwn = {}.hasOwnProperty; -function hasOwn(obj, prop) { - return _hasOwn.call(obj, prop); -} -function props(proto, extension) { - if (typeof extension === "function") - extension = extension(getProto(proto)); - (typeof Reflect === "undefined" ? keys : Reflect.ownKeys)(extension).forEach((key) => { - setProp(proto, key, extension[key]); - }); -} -var defineProperty = Object.defineProperty; -function setProp(obj, prop, functionOrGetSet, options) { - defineProperty(obj, prop, extend(functionOrGetSet && hasOwn(functionOrGetSet, "get") && typeof functionOrGetSet.get === "function" ? { get: functionOrGetSet.get, set: functionOrGetSet.set, configurable: true } : { value: functionOrGetSet, configurable: true, writable: true }, options)); -} -function derive(Child) { - return { - from: function(Parent) { - Child.prototype = Object.create(Parent.prototype); - setProp(Child.prototype, "constructor", Child); - return { - extend: props.bind(null, Child.prototype) - }; - } - }; -} -var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; -function getPropertyDescriptor(obj, prop) { - const pd = getOwnPropertyDescriptor(obj, prop); - let proto; - return pd || (proto = getProto(obj)) && getPropertyDescriptor(proto, prop); -} -var _slice = [].slice; -function slice(args, start, end) { - return _slice.call(args, start, end); -} -function override(origFunc, overridedFactory) { - return overridedFactory(origFunc); -} -function assert(b) { - if (!b) - throw new Error("Assertion Failed"); -} -function asap$1(fn) { - if (_global.setImmediate) - setImmediate(fn); - else - setTimeout(fn, 0); -} -function arrayToObject(array, extractor) { - return array.reduce((result, item, i) => { - var nameAndValue = extractor(item, i); - if (nameAndValue) - result[nameAndValue[0]] = nameAndValue[1]; - return result; - }, {}); -} -function tryCatch(fn, onerror, args) { - try { - fn.apply(null, args); - } catch (ex) { - onerror && onerror(ex); - } -} -function getByKeyPath(obj, keyPath) { - if (typeof keyPath === "string" && hasOwn(obj, keyPath)) - return obj[keyPath]; - if (!keyPath) - return obj; - if (typeof keyPath !== "string") { - var rv = []; - for (var i = 0, l = keyPath.length; i < l; ++i) { - var val = getByKeyPath(obj, keyPath[i]); - rv.push(val); - } - return rv; - } - var period = keyPath.indexOf("."); - if (period !== -1) { - var innerObj = obj[keyPath.substr(0, period)]; - return innerObj === void 0 ? void 0 : getByKeyPath(innerObj, keyPath.substr(period + 1)); - } - return void 0; -} -function setByKeyPath(obj, keyPath, value) { - if (!obj || keyPath === void 0) - return; - if ("isFrozen" in Object && Object.isFrozen(obj)) - return; - if (typeof keyPath !== "string" && "length" in keyPath) { - assert(typeof value !== "string" && "length" in value); - for (var i = 0, l = keyPath.length; i < l; ++i) { - setByKeyPath(obj, keyPath[i], value[i]); - } - } else { - var period = keyPath.indexOf("."); - if (period !== -1) { - var currentKeyPath = keyPath.substr(0, period); - var remainingKeyPath = keyPath.substr(period + 1); - if (remainingKeyPath === "") - if (value === void 0) { - if (isArray(obj) && !isNaN(parseInt(currentKeyPath))) - obj.splice(currentKeyPath, 1); - else - delete obj[currentKeyPath]; - } else - obj[currentKeyPath] = value; - else { - var innerObj = obj[currentKeyPath]; - if (!innerObj || !hasOwn(obj, currentKeyPath)) - innerObj = obj[currentKeyPath] = {}; - setByKeyPath(innerObj, remainingKeyPath, value); - } - } else { - if (value === void 0) { - if (isArray(obj) && !isNaN(parseInt(keyPath))) - obj.splice(keyPath, 1); - else - delete obj[keyPath]; - } else - obj[keyPath] = value; - } - } -} -function delByKeyPath(obj, keyPath) { - if (typeof keyPath === "string") - setByKeyPath(obj, keyPath, void 0); - else if ("length" in keyPath) - [].map.call(keyPath, function(kp) { - setByKeyPath(obj, kp, void 0); - }); -} -function shallowClone(obj) { - var rv = {}; - for (var m in obj) { - if (hasOwn(obj, m)) - rv[m] = obj[m]; - } - return rv; -} -var concat = [].concat; -function flatten(a) { - return concat.apply([], a); -} -var intrinsicTypeNames = "BigUint64Array,BigInt64Array,Array,Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,FileSystemDirectoryHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey".split(",").concat(flatten([8, 16, 32, 64].map((num) => ["Int", "Uint", "Float"].map((t) => t + num + "Array")))).filter((t) => _global[t]); -var intrinsicTypes = intrinsicTypeNames.map((t) => _global[t]); -arrayToObject(intrinsicTypeNames, (x) => [x, true]); -var circularRefs = null; -function deepClone(any) { - circularRefs = typeof WeakMap !== "undefined" && /* @__PURE__ */ new WeakMap(); - const rv = innerDeepClone(any); - circularRefs = null; - return rv; -} -function innerDeepClone(any) { - if (!any || typeof any !== "object") - return any; - let rv = circularRefs && circularRefs.get(any); - if (rv) - return rv; - if (isArray(any)) { - rv = []; - circularRefs && circularRefs.set(any, rv); - for (var i = 0, l = any.length; i < l; ++i) { - rv.push(innerDeepClone(any[i])); - } - } else if (intrinsicTypes.indexOf(any.constructor) >= 0) { - rv = any; - } else { - const proto = getProto(any); - rv = proto === Object.prototype ? {} : Object.create(proto); - circularRefs && circularRefs.set(any, rv); - for (var prop in any) { - if (hasOwn(any, prop)) { - rv[prop] = innerDeepClone(any[prop]); - } - } - } - return rv; -} -var { toString } = {}; -function toStringTag(o) { - return toString.call(o).slice(8, -1); -} -var iteratorSymbol = typeof Symbol !== "undefined" ? Symbol.iterator : "@@iterator"; -var getIteratorOf = typeof iteratorSymbol === "symbol" ? function(x) { - var i; - return x != null && (i = x[iteratorSymbol]) && i.apply(x); -} : function() { - return null; -}; -var NO_CHAR_ARRAY = {}; -function getArrayOf(arrayLike) { - var i, a, x, it; - if (arguments.length === 1) { - if (isArray(arrayLike)) - return arrayLike.slice(); - if (this === NO_CHAR_ARRAY && typeof arrayLike === "string") - return [arrayLike]; - if (it = getIteratorOf(arrayLike)) { - a = []; - while (x = it.next(), !x.done) - a.push(x.value); - return a; - } - if (arrayLike == null) - return [arrayLike]; - i = arrayLike.length; - if (typeof i === "number") { - a = new Array(i); - while (i--) - a[i] = arrayLike[i]; - return a; - } - return [arrayLike]; - } - i = arguments.length; - a = new Array(i); - while (i--) - a[i] = arguments[i]; - return a; -} -var isAsyncFunction = typeof Symbol !== "undefined" ? (fn) => fn[Symbol.toStringTag] === "AsyncFunction" : () => false; -var debug = typeof location !== "undefined" && /^(http|https):\/\/(localhost|127\.0\.0\.1)/.test(location.href); -function setDebug(value, filter) { - debug = value; - libraryFilter = filter; -} -var libraryFilter = () => true; -var NEEDS_THROW_FOR_STACK = !new Error("").stack; -function getErrorWithStack() { - if (NEEDS_THROW_FOR_STACK) - try { - getErrorWithStack.arguments; - throw new Error(); - } catch (e) { - return e; - } - return new Error(); -} -function prettyStack(exception, numIgnoredFrames) { - var stack = exception.stack; - if (!stack) - return ""; - numIgnoredFrames = numIgnoredFrames || 0; - if (stack.indexOf(exception.name) === 0) - numIgnoredFrames += (exception.name + exception.message).split("\n").length; - return stack.split("\n").slice(numIgnoredFrames).filter(libraryFilter).map((frame) => "\n" + frame).join(""); -} -var dexieErrorNames = [ - "Modify", - "Bulk", - "OpenFailed", - "VersionChange", - "Schema", - "Upgrade", - "InvalidTable", - "MissingAPI", - "NoSuchDatabase", - "InvalidArgument", - "SubTransaction", - "Unsupported", - "Internal", - "DatabaseClosed", - "PrematureCommit", - "ForeignAwait" -]; -var idbDomErrorNames = [ - "Unknown", - "Constraint", - "Data", - "TransactionInactive", - "ReadOnly", - "Version", - "NotFound", - "InvalidState", - "InvalidAccess", - "Abort", - "Timeout", - "QuotaExceeded", - "Syntax", - "DataClone" -]; -var errorList = dexieErrorNames.concat(idbDomErrorNames); -var defaultTexts = { - VersionChanged: "Database version changed by other database connection", - DatabaseClosed: "Database has been closed", - Abort: "Transaction aborted", - TransactionInactive: "Transaction has already completed or failed", - MissingAPI: "IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb" -}; -function DexieError(name, msg) { - this._e = getErrorWithStack(); - this.name = name; - this.message = msg; -} -derive(DexieError).from(Error).extend({ - stack: { - get: function() { - return this._stack || (this._stack = this.name + ": " + this.message + prettyStack(this._e, 2)); - } - }, - toString: function() { - return this.name + ": " + this.message; - } -}); -function getMultiErrorMessage(msg, failures) { - return msg + ". Errors: " + Object.keys(failures).map((key) => failures[key].toString()).filter((v, i, s) => s.indexOf(v) === i).join("\n"); -} -function ModifyError(msg, failures, successCount, failedKeys) { - this._e = getErrorWithStack(); - this.failures = failures; - this.failedKeys = failedKeys; - this.successCount = successCount; - this.message = getMultiErrorMessage(msg, failures); -} -derive(ModifyError).from(DexieError); -function BulkError(msg, failures) { - this._e = getErrorWithStack(); - this.name = "BulkError"; - this.failures = Object.keys(failures).map((pos) => failures[pos]); - this.failuresByPos = failures; - this.message = getMultiErrorMessage(msg, failures); -} -derive(BulkError).from(DexieError); -var errnames = errorList.reduce((obj, name) => (obj[name] = name + "Error", obj), {}); -var BaseException = DexieError; -var exceptions = errorList.reduce((obj, name) => { - var fullName = name + "Error"; - function DexieError2(msgOrInner, inner) { - this._e = getErrorWithStack(); - this.name = fullName; - if (!msgOrInner) { - this.message = defaultTexts[name] || fullName; - this.inner = null; - } else if (typeof msgOrInner === "string") { - this.message = `${msgOrInner}${!inner ? "" : "\n " + inner}`; - this.inner = inner || null; - } else if (typeof msgOrInner === "object") { - this.message = `${msgOrInner.name} ${msgOrInner.message}`; - this.inner = msgOrInner; - } - } - derive(DexieError2).from(BaseException); - obj[name] = DexieError2; - return obj; -}, {}); -exceptions.Syntax = SyntaxError; -exceptions.Type = TypeError; -exceptions.Range = RangeError; -var exceptionMap = idbDomErrorNames.reduce((obj, name) => { - obj[name + "Error"] = exceptions[name]; - return obj; -}, {}); -function mapError(domError, message) { - if (!domError || domError instanceof DexieError || domError instanceof TypeError || domError instanceof SyntaxError || !domError.name || !exceptionMap[domError.name]) - return domError; - var rv = new exceptionMap[domError.name](message || domError.message, domError); - if ("stack" in domError) { - setProp(rv, "stack", { get: function() { - return this.inner.stack; - } }); - } - return rv; -} -var fullNameExceptions = errorList.reduce((obj, name) => { - if (["Syntax", "Type", "Range"].indexOf(name) === -1) - obj[name + "Error"] = exceptions[name]; - return obj; -}, {}); -fullNameExceptions.ModifyError = ModifyError; -fullNameExceptions.DexieError = DexieError; -fullNameExceptions.BulkError = BulkError; -function nop() { -} -function mirror(val) { - return val; -} -function pureFunctionChain(f1, f2) { - if (f1 == null || f1 === mirror) - return f2; - return function(val) { - return f2(f1(val)); - }; -} -function callBoth(on1, on2) { - return function() { - on1.apply(this, arguments); - on2.apply(this, arguments); - }; -} -function hookCreatingChain(f1, f2) { - if (f1 === nop) - return f2; - return function() { - var res = f1.apply(this, arguments); - if (res !== void 0) - arguments[0] = res; - var onsuccess = this.onsuccess, onerror = this.onerror; - this.onsuccess = null; - this.onerror = null; - var res2 = f2.apply(this, arguments); - if (onsuccess) - this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess; - if (onerror) - this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror; - return res2 !== void 0 ? res2 : res; - }; -} -function hookDeletingChain(f1, f2) { - if (f1 === nop) - return f2; - return function() { - f1.apply(this, arguments); - var onsuccess = this.onsuccess, onerror = this.onerror; - this.onsuccess = this.onerror = null; - f2.apply(this, arguments); - if (onsuccess) - this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess; - if (onerror) - this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror; - }; -} -function hookUpdatingChain(f1, f2) { - if (f1 === nop) - return f2; - return function(modifications) { - var res = f1.apply(this, arguments); - extend(modifications, res); - var onsuccess = this.onsuccess, onerror = this.onerror; - this.onsuccess = null; - this.onerror = null; - var res2 = f2.apply(this, arguments); - if (onsuccess) - this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess; - if (onerror) - this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror; - return res === void 0 ? res2 === void 0 ? void 0 : res2 : extend(res, res2); - }; -} -function reverseStoppableEventChain(f1, f2) { - if (f1 === nop) - return f2; - return function() { - if (f2.apply(this, arguments) === false) - return false; - return f1.apply(this, arguments); - }; -} -function promisableChain(f1, f2) { - if (f1 === nop) - return f2; - return function() { - var res = f1.apply(this, arguments); - if (res && typeof res.then === "function") { - var thiz = this, i = arguments.length, args = new Array(i); - while (i--) - args[i] = arguments[i]; - return res.then(function() { - return f2.apply(thiz, args); - }); - } - return f2.apply(this, arguments); - }; -} -var INTERNAL = {}; -var LONG_STACKS_CLIP_LIMIT = 100; -var MAX_LONG_STACKS = 20; -var ZONE_ECHO_LIMIT = 100; -var [resolvedNativePromise, nativePromiseProto, resolvedGlobalPromise] = typeof Promise === "undefined" ? [] : (() => { - let globalP = Promise.resolve(); - if (typeof crypto === "undefined" || !crypto.subtle) - return [globalP, getProto(globalP), globalP]; - const nativeP = crypto.subtle.digest("SHA-512", new Uint8Array([0])); - return [ - nativeP, - getProto(nativeP), - globalP - ]; -})(); -var nativePromiseThen = nativePromiseProto && nativePromiseProto.then; -var NativePromise = resolvedNativePromise && resolvedNativePromise.constructor; -var patchGlobalPromise = !!resolvedGlobalPromise; -var stack_being_generated = false; -var schedulePhysicalTick = resolvedGlobalPromise ? () => { - resolvedGlobalPromise.then(physicalTick); -} : _global.setImmediate ? setImmediate.bind(null, physicalTick) : _global.MutationObserver ? () => { - var hiddenDiv = document.createElement("div"); - new MutationObserver(() => { - physicalTick(); - hiddenDiv = null; - }).observe(hiddenDiv, { attributes: true }); - hiddenDiv.setAttribute("i", "1"); -} : () => { - setTimeout(physicalTick, 0); -}; -var asap = function(callback, args) { - microtickQueue.push([callback, args]); - if (needsNewPhysicalTick) { - schedulePhysicalTick(); - needsNewPhysicalTick = false; - } -}; -var isOutsideMicroTick = true; -var needsNewPhysicalTick = true; -var unhandledErrors = []; -var rejectingErrors = []; -var currentFulfiller = null; -var rejectionMapper = mirror; -var globalPSD = { - id: "global", - global: true, - ref: 0, - unhandleds: [], - onunhandled: globalError, - pgp: false, - env: {}, - finalize: function() { - this.unhandleds.forEach((uh) => { - try { - globalError(uh[0], uh[1]); - } catch (e) { - } - }); - } -}; -var PSD = globalPSD; -var microtickQueue = []; -var numScheduledCalls = 0; -var tickFinalizers = []; -function DexiePromise(fn) { - if (typeof this !== "object") - throw new TypeError("Promises must be constructed via new"); - this._listeners = []; - this.onuncatched = nop; - this._lib = false; - var psd = this._PSD = PSD; - if (debug) { - this._stackHolder = getErrorWithStack(); - this._prev = null; - this._numPrev = 0; - } - if (typeof fn !== "function") { - if (fn !== INTERNAL) - throw new TypeError("Not a function"); - this._state = arguments[1]; - this._value = arguments[2]; - if (this._state === false) - handleRejection(this, this._value); - return; - } - this._state = null; - this._value = null; - ++psd.ref; - executePromiseTask(this, fn); -} -var thenProp = { - get: function() { - var psd = PSD, microTaskId = totalEchoes; - function then(onFulfilled, onRejected) { - var possibleAwait = !psd.global && (psd !== PSD || microTaskId !== totalEchoes); - const cleanup = possibleAwait && !decrementExpectedAwaits(); - var rv = new DexiePromise((resolve, reject) => { - propagateToListener(this, new Listener(nativeAwaitCompatibleWrap(onFulfilled, psd, possibleAwait, cleanup), nativeAwaitCompatibleWrap(onRejected, psd, possibleAwait, cleanup), resolve, reject, psd)); - }); - debug && linkToPreviousPromise(rv, this); - return rv; - } - then.prototype = INTERNAL; - return then; - }, - set: function(value) { - setProp(this, "then", value && value.prototype === INTERNAL ? thenProp : { - get: function() { - return value; - }, - set: thenProp.set - }); - } -}; -props(DexiePromise.prototype, { - then: thenProp, - _then: function(onFulfilled, onRejected) { - propagateToListener(this, new Listener(null, null, onFulfilled, onRejected, PSD)); - }, - catch: function(onRejected) { - if (arguments.length === 1) - return this.then(null, onRejected); - var type2 = arguments[0], handler = arguments[1]; - return typeof type2 === "function" ? this.then(null, (err) => err instanceof type2 ? handler(err) : PromiseReject(err)) : this.then(null, (err) => err && err.name === type2 ? handler(err) : PromiseReject(err)); - }, - finally: function(onFinally) { - return this.then((value) => { - onFinally(); - return value; - }, (err) => { - onFinally(); - return PromiseReject(err); - }); - }, - stack: { - get: function() { - if (this._stack) - return this._stack; - try { - stack_being_generated = true; - var stacks = getStack(this, [], MAX_LONG_STACKS); - var stack = stacks.join("\nFrom previous: "); - if (this._state !== null) - this._stack = stack; - return stack; - } finally { - stack_being_generated = false; - } - } - }, - timeout: function(ms, msg) { - return ms < Infinity ? new DexiePromise((resolve, reject) => { - var handle = setTimeout(() => reject(new exceptions.Timeout(msg)), ms); - this.then(resolve, reject).finally(clearTimeout.bind(null, handle)); - }) : this; - } -}); -if (typeof Symbol !== "undefined" && Symbol.toStringTag) - setProp(DexiePromise.prototype, Symbol.toStringTag, "Dexie.Promise"); -globalPSD.env = snapShot(); -function Listener(onFulfilled, onRejected, resolve, reject, zone) { - this.onFulfilled = typeof onFulfilled === "function" ? onFulfilled : null; - this.onRejected = typeof onRejected === "function" ? onRejected : null; - this.resolve = resolve; - this.reject = reject; - this.psd = zone; -} -props(DexiePromise, { - all: function() { - var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync); - return new DexiePromise(function(resolve, reject) { - if (values.length === 0) - resolve([]); - var remaining = values.length; - values.forEach((a, i) => DexiePromise.resolve(a).then((x) => { - values[i] = x; - if (!--remaining) - resolve(values); - }, reject)); - }); - }, - resolve: (value) => { - if (value instanceof DexiePromise) - return value; - if (value && typeof value.then === "function") - return new DexiePromise((resolve, reject) => { - value.then(resolve, reject); - }); - var rv = new DexiePromise(INTERNAL, true, value); - linkToPreviousPromise(rv, currentFulfiller); - return rv; - }, - reject: PromiseReject, - race: function() { - var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync); - return new DexiePromise((resolve, reject) => { - values.map((value) => DexiePromise.resolve(value).then(resolve, reject)); - }); - }, - PSD: { - get: () => PSD, - set: (value) => PSD = value - }, - totalEchoes: { get: () => totalEchoes }, - newPSD: newScope, - usePSD, - scheduler: { - get: () => asap, - set: (value) => { - asap = value; - } - }, - rejectionMapper: { - get: () => rejectionMapper, - set: (value) => { - rejectionMapper = value; - } - }, - follow: (fn, zoneProps) => { - return new DexiePromise((resolve, reject) => { - return newScope((resolve2, reject2) => { - var psd = PSD; - psd.unhandleds = []; - psd.onunhandled = reject2; - psd.finalize = callBoth(function() { - run_at_end_of_this_or_next_physical_tick(() => { - this.unhandleds.length === 0 ? resolve2() : reject2(this.unhandleds[0]); - }); - }, psd.finalize); - fn(); - }, zoneProps, resolve, reject); - }); - } -}); -if (NativePromise) { - if (NativePromise.allSettled) - setProp(DexiePromise, "allSettled", function() { - const possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync); - return new DexiePromise((resolve) => { - if (possiblePromises.length === 0) - resolve([]); - let remaining = possiblePromises.length; - const results = new Array(remaining); - possiblePromises.forEach((p, i) => DexiePromise.resolve(p).then((value) => results[i] = { status: "fulfilled", value }, (reason) => results[i] = { status: "rejected", reason }).then(() => --remaining || resolve(results))); - }); - }); - if (NativePromise.any && typeof AggregateError !== "undefined") - setProp(DexiePromise, "any", function() { - const possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync); - return new DexiePromise((resolve, reject) => { - if (possiblePromises.length === 0) - reject(new AggregateError([])); - let remaining = possiblePromises.length; - const failures = new Array(remaining); - possiblePromises.forEach((p, i) => DexiePromise.resolve(p).then((value) => resolve(value), (failure) => { - failures[i] = failure; - if (!--remaining) - reject(new AggregateError(failures)); - })); - }); - }); -} -function executePromiseTask(promise, fn) { - try { - fn((value) => { - if (promise._state !== null) - return; - if (value === promise) - throw new TypeError("A promise cannot be resolved with itself."); - var shouldExecuteTick = promise._lib && beginMicroTickScope(); - if (value && typeof value.then === "function") { - executePromiseTask(promise, (resolve, reject) => { - value instanceof DexiePromise ? value._then(resolve, reject) : value.then(resolve, reject); - }); - } else { - promise._state = true; - promise._value = value; - propagateAllListeners(promise); - } - if (shouldExecuteTick) - endMicroTickScope(); - }, handleRejection.bind(null, promise)); - } catch (ex) { - handleRejection(promise, ex); - } -} -function handleRejection(promise, reason) { - rejectingErrors.push(reason); - if (promise._state !== null) - return; - var shouldExecuteTick = promise._lib && beginMicroTickScope(); - reason = rejectionMapper(reason); - promise._state = false; - promise._value = reason; - debug && reason !== null && typeof reason === "object" && !reason._promise && tryCatch(() => { - var origProp = getPropertyDescriptor(reason, "stack"); - reason._promise = promise; - setProp(reason, "stack", { - get: () => stack_being_generated ? origProp && (origProp.get ? origProp.get.apply(reason) : origProp.value) : promise.stack - }); - }); - addPossiblyUnhandledError(promise); - propagateAllListeners(promise); - if (shouldExecuteTick) - endMicroTickScope(); -} -function propagateAllListeners(promise) { - var listeners = promise._listeners; - promise._listeners = []; - for (var i = 0, len = listeners.length; i < len; ++i) { - propagateToListener(promise, listeners[i]); - } - var psd = promise._PSD; - --psd.ref || psd.finalize(); - if (numScheduledCalls === 0) { - ++numScheduledCalls; - asap(() => { - if (--numScheduledCalls === 0) - finalizePhysicalTick(); - }, []); - } -} -function propagateToListener(promise, listener) { - if (promise._state === null) { - promise._listeners.push(listener); - return; - } - var cb = promise._state ? listener.onFulfilled : listener.onRejected; - if (cb === null) { - return (promise._state ? listener.resolve : listener.reject)(promise._value); - } - ++listener.psd.ref; - ++numScheduledCalls; - asap(callListener, [cb, promise, listener]); -} -function callListener(cb, promise, listener) { - try { - currentFulfiller = promise; - var ret, value = promise._value; - if (promise._state) { - ret = cb(value); - } else { - if (rejectingErrors.length) - rejectingErrors = []; - ret = cb(value); - if (rejectingErrors.indexOf(value) === -1) - markErrorAsHandled(promise); - } - listener.resolve(ret); - } catch (e) { - listener.reject(e); - } finally { - currentFulfiller = null; - if (--numScheduledCalls === 0) - finalizePhysicalTick(); - --listener.psd.ref || listener.psd.finalize(); - } -} -function getStack(promise, stacks, limit) { - if (stacks.length === limit) - return stacks; - var stack = ""; - if (promise._state === false) { - var failure = promise._value, errorName, message; - if (failure != null) { - errorName = failure.name || "Error"; - message = failure.message || failure; - stack = prettyStack(failure, 0); - } else { - errorName = failure; - message = ""; - } - stacks.push(errorName + (message ? ": " + message : "") + stack); - } - if (debug) { - stack = prettyStack(promise._stackHolder, 2); - if (stack && stacks.indexOf(stack) === -1) - stacks.push(stack); - if (promise._prev) - getStack(promise._prev, stacks, limit); - } - return stacks; -} -function linkToPreviousPromise(promise, prev) { - var numPrev = prev ? prev._numPrev + 1 : 0; - if (numPrev < LONG_STACKS_CLIP_LIMIT) { - promise._prev = prev; - promise._numPrev = numPrev; - } -} -function physicalTick() { - beginMicroTickScope() && endMicroTickScope(); -} -function beginMicroTickScope() { - var wasRootExec = isOutsideMicroTick; - isOutsideMicroTick = false; - needsNewPhysicalTick = false; - return wasRootExec; -} -function endMicroTickScope() { - var callbacks, i, l; - do { - while (microtickQueue.length > 0) { - callbacks = microtickQueue; - microtickQueue = []; - l = callbacks.length; - for (i = 0; i < l; ++i) { - var item = callbacks[i]; - item[0].apply(null, item[1]); - } - } - } while (microtickQueue.length > 0); - isOutsideMicroTick = true; - needsNewPhysicalTick = true; -} -function finalizePhysicalTick() { - var unhandledErrs = unhandledErrors; - unhandledErrors = []; - unhandledErrs.forEach((p) => { - p._PSD.onunhandled.call(null, p._value, p); - }); - var finalizers = tickFinalizers.slice(0); - var i = finalizers.length; - while (i) - finalizers[--i](); -} -function run_at_end_of_this_or_next_physical_tick(fn) { - function finalizer() { - fn(); - tickFinalizers.splice(tickFinalizers.indexOf(finalizer), 1); - } - tickFinalizers.push(finalizer); - ++numScheduledCalls; - asap(() => { - if (--numScheduledCalls === 0) - finalizePhysicalTick(); - }, []); -} -function addPossiblyUnhandledError(promise) { - if (!unhandledErrors.some((p) => p._value === promise._value)) - unhandledErrors.push(promise); -} -function markErrorAsHandled(promise) { - var i = unhandledErrors.length; - while (i) - if (unhandledErrors[--i]._value === promise._value) { - unhandledErrors.splice(i, 1); - return; - } -} -function PromiseReject(reason) { - return new DexiePromise(INTERNAL, false, reason); -} -function wrap(fn, errorCatcher) { - var psd = PSD; - return function() { - var wasRootExec = beginMicroTickScope(), outerScope = PSD; - try { - switchToZone(psd, true); - return fn.apply(this, arguments); - } catch (e) { - errorCatcher && errorCatcher(e); - } finally { - switchToZone(outerScope, false); - if (wasRootExec) - endMicroTickScope(); - } - }; -} -var task = { awaits: 0, echoes: 0, id: 0 }; -var taskCounter = 0; -var zoneStack = []; -var zoneEchoes = 0; -var totalEchoes = 0; -var zone_id_counter = 0; -function newScope(fn, props2, a1, a2) { - var parent = PSD, psd = Object.create(parent); - psd.parent = parent; - psd.ref = 0; - psd.global = false; - psd.id = ++zone_id_counter; - var globalEnv = globalPSD.env; - psd.env = patchGlobalPromise ? { - Promise: DexiePromise, - PromiseProp: { value: DexiePromise, configurable: true, writable: true }, - all: DexiePromise.all, - race: DexiePromise.race, - allSettled: DexiePromise.allSettled, - any: DexiePromise.any, - resolve: DexiePromise.resolve, - reject: DexiePromise.reject, - nthen: getPatchedPromiseThen(globalEnv.nthen, psd), - gthen: getPatchedPromiseThen(globalEnv.gthen, psd) - } : {}; - if (props2) - extend(psd, props2); - ++parent.ref; - psd.finalize = function() { - --this.parent.ref || this.parent.finalize(); - }; - var rv = usePSD(psd, fn, a1, a2); - if (psd.ref === 0) - psd.finalize(); - return rv; -} -function incrementExpectedAwaits() { - if (!task.id) - task.id = ++taskCounter; - ++task.awaits; - task.echoes += ZONE_ECHO_LIMIT; - return task.id; -} -function decrementExpectedAwaits() { - if (!task.awaits) - return false; - if (--task.awaits === 0) - task.id = 0; - task.echoes = task.awaits * ZONE_ECHO_LIMIT; - return true; -} -if (("" + nativePromiseThen).indexOf("[native code]") === -1) { - incrementExpectedAwaits = decrementExpectedAwaits = nop; -} -function onPossibleParallellAsync(possiblePromise) { - if (task.echoes && possiblePromise && possiblePromise.constructor === NativePromise) { - incrementExpectedAwaits(); - return possiblePromise.then((x) => { - decrementExpectedAwaits(); - return x; - }, (e) => { - decrementExpectedAwaits(); - return rejection(e); - }); - } - return possiblePromise; -} -function zoneEnterEcho(targetZone) { - ++totalEchoes; - if (!task.echoes || --task.echoes === 0) { - task.echoes = task.id = 0; - } - zoneStack.push(PSD); - switchToZone(targetZone, true); -} -function zoneLeaveEcho() { - var zone = zoneStack[zoneStack.length - 1]; - zoneStack.pop(); - switchToZone(zone, false); -} -function switchToZone(targetZone, bEnteringZone) { - var currentZone = PSD; - if (bEnteringZone ? task.echoes && (!zoneEchoes++ || targetZone !== PSD) : zoneEchoes && (!--zoneEchoes || targetZone !== PSD)) { - enqueueNativeMicroTask(bEnteringZone ? zoneEnterEcho.bind(null, targetZone) : zoneLeaveEcho); - } - if (targetZone === PSD) - return; - PSD = targetZone; - if (currentZone === globalPSD) - globalPSD.env = snapShot(); - if (patchGlobalPromise) { - var GlobalPromise = globalPSD.env.Promise; - var targetEnv = targetZone.env; - nativePromiseProto.then = targetEnv.nthen; - GlobalPromise.prototype.then = targetEnv.gthen; - if (currentZone.global || targetZone.global) { - Object.defineProperty(_global, "Promise", targetEnv.PromiseProp); - GlobalPromise.all = targetEnv.all; - GlobalPromise.race = targetEnv.race; - GlobalPromise.resolve = targetEnv.resolve; - GlobalPromise.reject = targetEnv.reject; - if (targetEnv.allSettled) - GlobalPromise.allSettled = targetEnv.allSettled; - if (targetEnv.any) - GlobalPromise.any = targetEnv.any; - } - } -} -function snapShot() { - var GlobalPromise = _global.Promise; - return patchGlobalPromise ? { - Promise: GlobalPromise, - PromiseProp: Object.getOwnPropertyDescriptor(_global, "Promise"), - all: GlobalPromise.all, - race: GlobalPromise.race, - allSettled: GlobalPromise.allSettled, - any: GlobalPromise.any, - resolve: GlobalPromise.resolve, - reject: GlobalPromise.reject, - nthen: nativePromiseProto.then, - gthen: GlobalPromise.prototype.then - } : {}; -} -function usePSD(psd, fn, a1, a2, a3) { - var outerScope = PSD; - try { - switchToZone(psd, true); - return fn(a1, a2, a3); - } finally { - switchToZone(outerScope, false); - } -} -function enqueueNativeMicroTask(job) { - nativePromiseThen.call(resolvedNativePromise, job); -} -function nativeAwaitCompatibleWrap(fn, zone, possibleAwait, cleanup) { - return typeof fn !== "function" ? fn : function() { - var outerZone = PSD; - if (possibleAwait) - incrementExpectedAwaits(); - switchToZone(zone, true); - try { - return fn.apply(this, arguments); - } finally { - switchToZone(outerZone, false); - if (cleanup) - enqueueNativeMicroTask(decrementExpectedAwaits); - } - }; -} -function getPatchedPromiseThen(origThen, zone) { - return function(onResolved, onRejected) { - return origThen.call(this, nativeAwaitCompatibleWrap(onResolved, zone), nativeAwaitCompatibleWrap(onRejected, zone)); - }; -} -var UNHANDLEDREJECTION = "unhandledrejection"; -function globalError(err, promise) { - var rv; - try { - rv = promise.onuncatched(err); - } catch (e) { - } - if (rv !== false) - try { - var event, eventData = { promise, reason: err }; - if (_global.document && document.createEvent) { - event = document.createEvent("Event"); - event.initEvent(UNHANDLEDREJECTION, true, true); - extend(event, eventData); - } else if (_global.CustomEvent) { - event = new CustomEvent(UNHANDLEDREJECTION, { detail: eventData }); - extend(event, eventData); - } - if (event && _global.dispatchEvent) { - dispatchEvent(event); - if (!_global.PromiseRejectionEvent && _global.onunhandledrejection) - try { - _global.onunhandledrejection(event); - } catch (_) { - } - } - if (debug && event && !event.defaultPrevented) { - console.warn(`Unhandled rejection: ${err.stack || err}`); - } - } catch (e) { - } -} -var rejection = DexiePromise.reject; -function tempTransaction(db, mode, storeNames, fn) { - if (!db.idbdb || !db._state.openComplete && (!PSD.letThrough && !db._vip)) { - if (db._state.openComplete) { - return rejection(new exceptions.DatabaseClosed(db._state.dbOpenError)); - } - if (!db._state.isBeingOpened) { - if (!db._options.autoOpen) - return rejection(new exceptions.DatabaseClosed()); - db.open().catch(nop); - } - return db._state.dbReadyPromise.then(() => tempTransaction(db, mode, storeNames, fn)); - } else { - var trans = db._createTransaction(mode, storeNames, db._dbSchema); - try { - trans.create(); - db._state.PR1398_maxLoop = 3; - } catch (ex) { - if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) { - console.warn("Dexie: Need to reopen db"); - db._close(); - return db.open().then(() => tempTransaction(db, mode, storeNames, fn)); - } - return rejection(ex); - } - return trans._promise(mode, (resolve, reject) => { - return newScope(() => { - PSD.trans = trans; - return fn(resolve, reject, trans); - }); - }).then((result) => { - return trans._completion.then(() => result); - }); - } -} -var DEXIE_VERSION = "3.2.5"; -var maxString = String.fromCharCode(65535); -var minKey = -Infinity; -var INVALID_KEY_ARGUMENT = "Invalid key provided. Keys must be of type string, number, Date or Array."; -var STRING_EXPECTED = "String expected."; -var connections = []; -var isIEOrEdge = typeof navigator !== "undefined" && /(MSIE|Trident|Edge)/.test(navigator.userAgent); -var hasIEDeleteObjectStoreBug = isIEOrEdge; -var hangsOnDeleteLargeKeyRange = isIEOrEdge; -var dexieStackFrameFilter = (frame) => !/(dexie\.js|dexie\.min\.js)/.test(frame); -var DBNAMES_DB = "__dbnames"; -var READONLY = "readonly"; -var READWRITE = "readwrite"; -function combine(filter1, filter2) { - return filter1 ? filter2 ? function() { - return filter1.apply(this, arguments) && filter2.apply(this, arguments); - } : filter1 : filter2; -} -var AnyRange = { - type: 3, - lower: -Infinity, - lowerOpen: false, - upper: [[]], - upperOpen: false -}; -function workaroundForUndefinedPrimKey(keyPath) { - return typeof keyPath === "string" && !/\./.test(keyPath) ? (obj) => { - if (obj[keyPath] === void 0 && keyPath in obj) { - obj = deepClone(obj); - delete obj[keyPath]; - } - return obj; - } : (obj) => obj; -} -var Table = class { - _trans(mode, fn, writeLocked) { - const trans = this._tx || PSD.trans; - const tableName = this.name; - function checkTableInTransaction(resolve, reject, trans2) { - if (!trans2.schema[tableName]) - throw new exceptions.NotFound("Table " + tableName + " not part of transaction"); - return fn(trans2.idbtrans, trans2); - } - const wasRootExec = beginMicroTickScope(); - try { - return trans && trans.db === this.db ? trans === PSD.trans ? trans._promise(mode, checkTableInTransaction, writeLocked) : newScope(() => trans._promise(mode, checkTableInTransaction, writeLocked), { trans, transless: PSD.transless || PSD }) : tempTransaction(this.db, mode, [this.name], checkTableInTransaction); - } finally { - if (wasRootExec) - endMicroTickScope(); - } - } - get(keyOrCrit, cb) { - if (keyOrCrit && keyOrCrit.constructor === Object) - return this.where(keyOrCrit).first(cb); - return this._trans("readonly", (trans) => { - return this.core.get({ trans, key: keyOrCrit }).then((res) => this.hook.reading.fire(res)); - }).then(cb); - } - where(indexOrCrit) { - if (typeof indexOrCrit === "string") - return new this.db.WhereClause(this, indexOrCrit); - if (isArray(indexOrCrit)) - return new this.db.WhereClause(this, `[${indexOrCrit.join("+")}]`); - const keyPaths = keys(indexOrCrit); - if (keyPaths.length === 1) - return this.where(keyPaths[0]).equals(indexOrCrit[keyPaths[0]]); - const compoundIndex = this.schema.indexes.concat(this.schema.primKey).filter((ix) => { - if (ix.compound && keyPaths.every((keyPath) => ix.keyPath.indexOf(keyPath) >= 0)) { - for (let i = 0; i < keyPaths.length; ++i) { - if (keyPaths.indexOf(ix.keyPath[i]) === -1) - return false; - } - return true; - } - return false; - }).sort((a, b) => a.keyPath.length - b.keyPath.length)[0]; - if (compoundIndex && this.db._maxKey !== maxString) { - const keyPathsInValidOrder = compoundIndex.keyPath.slice(0, keyPaths.length); - return this.where(keyPathsInValidOrder).equals(keyPathsInValidOrder.map((kp) => indexOrCrit[kp])); - } - if (!compoundIndex && debug) - console.warn(`The query ${JSON.stringify(indexOrCrit)} on ${this.name} would benefit of a compound index [${keyPaths.join("+")}]`); - const { idxByName } = this.schema; - const idb = this.db._deps.indexedDB; - function equals(a, b) { - try { - return idb.cmp(a, b) === 0; - } catch (e) { - return false; - } - } - const [idx, filterFunction] = keyPaths.reduce(([prevIndex, prevFilterFn], keyPath) => { - const index = idxByName[keyPath]; - const value = indexOrCrit[keyPath]; - return [ - prevIndex || index, - prevIndex || !index ? combine(prevFilterFn, index && index.multi ? (x) => { - const prop = getByKeyPath(x, keyPath); - return isArray(prop) && prop.some((item) => equals(value, item)); - } : (x) => equals(value, getByKeyPath(x, keyPath))) : prevFilterFn - ]; - }, [null, null]); - return idx ? this.where(idx.name).equals(indexOrCrit[idx.keyPath]).filter(filterFunction) : compoundIndex ? this.filter(filterFunction) : this.where(keyPaths).equals(""); - } - filter(filterFunction) { - return this.toCollection().and(filterFunction); - } - count(thenShortcut) { - return this.toCollection().count(thenShortcut); - } - offset(offset) { - return this.toCollection().offset(offset); - } - limit(numRows) { - return this.toCollection().limit(numRows); - } - each(callback) { - return this.toCollection().each(callback); - } - toArray(thenShortcut) { - return this.toCollection().toArray(thenShortcut); - } - toCollection() { - return new this.db.Collection(new this.db.WhereClause(this)); - } - orderBy(index) { - return new this.db.Collection(new this.db.WhereClause(this, isArray(index) ? `[${index.join("+")}]` : index)); - } - reverse() { - return this.toCollection().reverse(); - } - mapToClass(constructor) { - this.schema.mappedClass = constructor; - const readHook = (obj) => { - if (!obj) - return obj; - const res = Object.create(constructor.prototype); - for (var m in obj) - if (hasOwn(obj, m)) - try { - res[m] = obj[m]; - } catch (_) { - } - return res; - }; - if (this.schema.readHook) { - this.hook.reading.unsubscribe(this.schema.readHook); - } - this.schema.readHook = readHook; - this.hook("reading", readHook); - return constructor; - } - defineClass() { - function Class(content) { - extend(this, content); - } - return this.mapToClass(Class); - } - add(obj, key) { - const { auto, keyPath } = this.schema.primKey; - let objToAdd = obj; - if (keyPath && auto) { - objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj); - } - return this._trans("readwrite", (trans) => { - return this.core.mutate({ trans, type: "add", keys: key != null ? [key] : null, values: [objToAdd] }); - }).then((res) => res.numFailures ? DexiePromise.reject(res.failures[0]) : res.lastResult).then((lastResult) => { - if (keyPath) { - try { - setByKeyPath(obj, keyPath, lastResult); - } catch (_) { - } - } - return lastResult; - }); - } - update(keyOrObject, modifications) { - if (typeof keyOrObject === "object" && !isArray(keyOrObject)) { - const key = getByKeyPath(keyOrObject, this.schema.primKey.keyPath); - if (key === void 0) - return rejection(new exceptions.InvalidArgument("Given object does not contain its primary key")); - try { - if (typeof modifications !== "function") { - keys(modifications).forEach((keyPath) => { - setByKeyPath(keyOrObject, keyPath, modifications[keyPath]); - }); - } else { - modifications(keyOrObject, { value: keyOrObject, primKey: key }); - } - } catch (_a) { - } - return this.where(":id").equals(key).modify(modifications); - } else { - return this.where(":id").equals(keyOrObject).modify(modifications); - } - } - put(obj, key) { - const { auto, keyPath } = this.schema.primKey; - let objToAdd = obj; - if (keyPath && auto) { - objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj); - } - return this._trans("readwrite", (trans) => this.core.mutate({ trans, type: "put", values: [objToAdd], keys: key != null ? [key] : null })).then((res) => res.numFailures ? DexiePromise.reject(res.failures[0]) : res.lastResult).then((lastResult) => { - if (keyPath) { - try { - setByKeyPath(obj, keyPath, lastResult); - } catch (_) { - } - } - return lastResult; - }); - } - delete(key) { - return this._trans("readwrite", (trans) => this.core.mutate({ trans, type: "delete", keys: [key] })).then((res) => res.numFailures ? DexiePromise.reject(res.failures[0]) : void 0); - } - clear() { - return this._trans("readwrite", (trans) => this.core.mutate({ trans, type: "deleteRange", range: AnyRange })).then((res) => res.numFailures ? DexiePromise.reject(res.failures[0]) : void 0); - } - bulkGet(keys2) { - return this._trans("readonly", (trans) => { - return this.core.getMany({ - keys: keys2, - trans - }).then((result) => result.map((res) => this.hook.reading.fire(res))); - }); - } - bulkAdd(objects, keysOrOptions, options) { - const keys2 = Array.isArray(keysOrOptions) ? keysOrOptions : void 0; - options = options || (keys2 ? void 0 : keysOrOptions); - const wantResults = options ? options.allKeys : void 0; - return this._trans("readwrite", (trans) => { - const { auto, keyPath } = this.schema.primKey; - if (keyPath && keys2) - throw new exceptions.InvalidArgument("bulkAdd(): keys argument invalid on tables with inbound keys"); - if (keys2 && keys2.length !== objects.length) - throw new exceptions.InvalidArgument("Arguments objects and keys must have the same length"); - const numObjects = objects.length; - let objectsToAdd = keyPath && auto ? objects.map(workaroundForUndefinedPrimKey(keyPath)) : objects; - return this.core.mutate({ trans, type: "add", keys: keys2, values: objectsToAdd, wantResults }).then(({ numFailures, results, lastResult, failures }) => { - const result = wantResults ? results : lastResult; - if (numFailures === 0) - return result; - throw new BulkError(`${this.name}.bulkAdd(): ${numFailures} of ${numObjects} operations failed`, failures); - }); - }); - } - bulkPut(objects, keysOrOptions, options) { - const keys2 = Array.isArray(keysOrOptions) ? keysOrOptions : void 0; - options = options || (keys2 ? void 0 : keysOrOptions); - const wantResults = options ? options.allKeys : void 0; - return this._trans("readwrite", (trans) => { - const { auto, keyPath } = this.schema.primKey; - if (keyPath && keys2) - throw new exceptions.InvalidArgument("bulkPut(): keys argument invalid on tables with inbound keys"); - if (keys2 && keys2.length !== objects.length) - throw new exceptions.InvalidArgument("Arguments objects and keys must have the same length"); - const numObjects = objects.length; - let objectsToPut = keyPath && auto ? objects.map(workaroundForUndefinedPrimKey(keyPath)) : objects; - return this.core.mutate({ trans, type: "put", keys: keys2, values: objectsToPut, wantResults }).then(({ numFailures, results, lastResult, failures }) => { - const result = wantResults ? results : lastResult; - if (numFailures === 0) - return result; - throw new BulkError(`${this.name}.bulkPut(): ${numFailures} of ${numObjects} operations failed`, failures); - }); - }); - } - bulkDelete(keys2) { - const numKeys = keys2.length; - return this._trans("readwrite", (trans) => { - return this.core.mutate({ trans, type: "delete", keys: keys2 }); - }).then(({ numFailures, lastResult, failures }) => { - if (numFailures === 0) - return lastResult; - throw new BulkError(`${this.name}.bulkDelete(): ${numFailures} of ${numKeys} operations failed`, failures); - }); - } -}; -function Events(ctx) { - var evs = {}; - var rv = function(eventName, subscriber) { - if (subscriber) { - var i2 = arguments.length, args = new Array(i2 - 1); - while (--i2) - args[i2 - 1] = arguments[i2]; - evs[eventName].subscribe.apply(null, args); - return ctx; - } else if (typeof eventName === "string") { - return evs[eventName]; - } - }; - rv.addEventType = add; - for (var i = 1, l = arguments.length; i < l; ++i) { - add(arguments[i]); - } - return rv; - function add(eventName, chainFunction, defaultFunction) { - if (typeof eventName === "object") - return addConfiguredEvents(eventName); - if (!chainFunction) - chainFunction = reverseStoppableEventChain; - if (!defaultFunction) - defaultFunction = nop; - var context = { - subscribers: [], - fire: defaultFunction, - subscribe: function(cb) { - if (context.subscribers.indexOf(cb) === -1) { - context.subscribers.push(cb); - context.fire = chainFunction(context.fire, cb); - } - }, - unsubscribe: function(cb) { - context.subscribers = context.subscribers.filter(function(fn) { - return fn !== cb; - }); - context.fire = context.subscribers.reduce(chainFunction, defaultFunction); - } - }; - evs[eventName] = rv[eventName] = context; - return context; - } - function addConfiguredEvents(cfg) { - keys(cfg).forEach(function(eventName) { - var args = cfg[eventName]; - if (isArray(args)) { - add(eventName, cfg[eventName][0], cfg[eventName][1]); - } else if (args === "asap") { - var context = add(eventName, mirror, function fire() { - var i2 = arguments.length, args2 = new Array(i2); - while (i2--) - args2[i2] = arguments[i2]; - context.subscribers.forEach(function(fn) { - asap$1(function fireEvent() { - fn.apply(null, args2); - }); - }); - }); - } else - throw new exceptions.InvalidArgument("Invalid event config"); - }); - } -} -function makeClassConstructor(prototype, constructor) { - derive(constructor).from({ prototype }); - return constructor; -} -function createTableConstructor(db) { - return makeClassConstructor(Table.prototype, function Table2(name, tableSchema, trans) { - this.db = db; - this._tx = trans; - this.name = name; - this.schema = tableSchema; - this.hook = db._allTables[name] ? db._allTables[name].hook : Events(null, { - "creating": [hookCreatingChain, nop], - "reading": [pureFunctionChain, mirror], - "updating": [hookUpdatingChain, nop], - "deleting": [hookDeletingChain, nop] - }); - }); -} -function isPlainKeyRange(ctx, ignoreLimitFilter) { - return !(ctx.filter || ctx.algorithm || ctx.or) && (ignoreLimitFilter ? ctx.justLimit : !ctx.replayFilter); -} -function addFilter(ctx, fn) { - ctx.filter = combine(ctx.filter, fn); -} -function addReplayFilter(ctx, factory, isLimitFilter) { - var curr = ctx.replayFilter; - ctx.replayFilter = curr ? () => combine(curr(), factory()) : factory; - ctx.justLimit = isLimitFilter && !curr; -} -function addMatchFilter(ctx, fn) { - ctx.isMatch = combine(ctx.isMatch, fn); -} -function getIndexOrStore(ctx, coreSchema) { - if (ctx.isPrimKey) - return coreSchema.primaryKey; - const index = coreSchema.getIndexByKeyPath(ctx.index); - if (!index) - throw new exceptions.Schema("KeyPath " + ctx.index + " on object store " + coreSchema.name + " is not indexed"); - return index; -} -function openCursor(ctx, coreTable, trans) { - const index = getIndexOrStore(ctx, coreTable.schema); - return coreTable.openCursor({ - trans, - values: !ctx.keysOnly, - reverse: ctx.dir === "prev", - unique: !!ctx.unique, - query: { - index, - range: ctx.range - } - }); -} -function iter(ctx, fn, coreTrans, coreTable) { - const filter = ctx.replayFilter ? combine(ctx.filter, ctx.replayFilter()) : ctx.filter; - if (!ctx.or) { - return iterate(openCursor(ctx, coreTable, coreTrans), combine(ctx.algorithm, filter), fn, !ctx.keysOnly && ctx.valueMapper); - } else { - const set = {}; - const union = (item, cursor, advance) => { - if (!filter || filter(cursor, advance, (result) => cursor.stop(result), (err) => cursor.fail(err))) { - var primaryKey = cursor.primaryKey; - var key = "" + primaryKey; - if (key === "[object ArrayBuffer]") - key = "" + new Uint8Array(primaryKey); - if (!hasOwn(set, key)) { - set[key] = true; - fn(item, cursor, advance); - } - } - }; - return Promise.all([ - ctx.or._iterate(union, coreTrans), - iterate(openCursor(ctx, coreTable, coreTrans), ctx.algorithm, union, !ctx.keysOnly && ctx.valueMapper) - ]); - } -} -function iterate(cursorPromise, filter, fn, valueMapper) { - var mappedFn = valueMapper ? (x, c, a) => fn(valueMapper(x), c, a) : fn; - var wrappedFn = wrap(mappedFn); - return cursorPromise.then((cursor) => { - if (cursor) { - return cursor.start(() => { - var c = () => cursor.continue(); - if (!filter || filter(cursor, (advancer) => c = advancer, (val) => { - cursor.stop(val); - c = nop; - }, (e) => { - cursor.fail(e); - c = nop; - })) - wrappedFn(cursor.value, cursor, (advancer) => c = advancer); - c(); - }); - } - }); -} -function cmp(a, b) { - try { - const ta = type(a); - const tb = type(b); - if (ta !== tb) { - if (ta === "Array") - return 1; - if (tb === "Array") - return -1; - if (ta === "binary") - return 1; - if (tb === "binary") - return -1; - if (ta === "string") - return 1; - if (tb === "string") - return -1; - if (ta === "Date") - return 1; - if (tb !== "Date") - return NaN; - return -1; - } - switch (ta) { - case "number": - case "Date": - case "string": - return a > b ? 1 : a < b ? -1 : 0; - case "binary": { - return compareUint8Arrays(getUint8Array(a), getUint8Array(b)); - } - case "Array": - return compareArrays(a, b); - } - } catch (_a) { - } - return NaN; -} -function compareArrays(a, b) { - const al = a.length; - const bl = b.length; - const l = al < bl ? al : bl; - for (let i = 0; i < l; ++i) { - const res = cmp(a[i], b[i]); - if (res !== 0) - return res; - } - return al === bl ? 0 : al < bl ? -1 : 1; -} -function compareUint8Arrays(a, b) { - const al = a.length; - const bl = b.length; - const l = al < bl ? al : bl; - for (let i = 0; i < l; ++i) { - if (a[i] !== b[i]) - return a[i] < b[i] ? -1 : 1; - } - return al === bl ? 0 : al < bl ? -1 : 1; -} -function type(x) { - const t = typeof x; - if (t !== "object") - return t; - if (ArrayBuffer.isView(x)) - return "binary"; - const tsTag = toStringTag(x); - return tsTag === "ArrayBuffer" ? "binary" : tsTag; -} -function getUint8Array(a) { - if (a instanceof Uint8Array) - return a; - if (ArrayBuffer.isView(a)) - return new Uint8Array(a.buffer, a.byteOffset, a.byteLength); - return new Uint8Array(a); -} -var Collection = class { - _read(fn, cb) { - var ctx = this._ctx; - return ctx.error ? ctx.table._trans(null, rejection.bind(null, ctx.error)) : ctx.table._trans("readonly", fn).then(cb); - } - _write(fn) { - var ctx = this._ctx; - return ctx.error ? ctx.table._trans(null, rejection.bind(null, ctx.error)) : ctx.table._trans("readwrite", fn, "locked"); - } - _addAlgorithm(fn) { - var ctx = this._ctx; - ctx.algorithm = combine(ctx.algorithm, fn); - } - _iterate(fn, coreTrans) { - return iter(this._ctx, fn, coreTrans, this._ctx.table.core); - } - clone(props2) { - var rv = Object.create(this.constructor.prototype), ctx = Object.create(this._ctx); - if (props2) - extend(ctx, props2); - rv._ctx = ctx; - return rv; - } - raw() { - this._ctx.valueMapper = null; - return this; - } - each(fn) { - var ctx = this._ctx; - return this._read((trans) => iter(ctx, fn, trans, ctx.table.core)); - } - count(cb) { - return this._read((trans) => { - const ctx = this._ctx; - const coreTable = ctx.table.core; - if (isPlainKeyRange(ctx, true)) { - return coreTable.count({ - trans, - query: { - index: getIndexOrStore(ctx, coreTable.schema), - range: ctx.range - } - }).then((count2) => Math.min(count2, ctx.limit)); - } else { - var count = 0; - return iter(ctx, () => { - ++count; - return false; - }, trans, coreTable).then(() => count); - } - }).then(cb); - } - sortBy(keyPath, cb) { - const parts = keyPath.split(".").reverse(), lastPart = parts[0], lastIndex = parts.length - 1; - function getval(obj, i) { - if (i) - return getval(obj[parts[i]], i - 1); - return obj[lastPart]; - } - var order = this._ctx.dir === "next" ? 1 : -1; - function sorter(a, b) { - var aVal = getval(a, lastIndex), bVal = getval(b, lastIndex); - return aVal < bVal ? -order : aVal > bVal ? order : 0; - } - return this.toArray(function(a) { - return a.sort(sorter); - }).then(cb); - } - toArray(cb) { - return this._read((trans) => { - var ctx = this._ctx; - if (ctx.dir === "next" && isPlainKeyRange(ctx, true) && ctx.limit > 0) { - const { valueMapper } = ctx; - const index = getIndexOrStore(ctx, ctx.table.core.schema); - return ctx.table.core.query({ - trans, - limit: ctx.limit, - values: true, - query: { - index, - range: ctx.range - } - }).then(({ result }) => valueMapper ? result.map(valueMapper) : result); - } else { - const a = []; - return iter(ctx, (item) => a.push(item), trans, ctx.table.core).then(() => a); - } - }, cb); - } - offset(offset) { - var ctx = this._ctx; - if (offset <= 0) - return this; - ctx.offset += offset; - if (isPlainKeyRange(ctx)) { - addReplayFilter(ctx, () => { - var offsetLeft = offset; - return (cursor, advance) => { - if (offsetLeft === 0) - return true; - if (offsetLeft === 1) { - --offsetLeft; - return false; - } - advance(() => { - cursor.advance(offsetLeft); - offsetLeft = 0; - }); - return false; - }; - }); - } else { - addReplayFilter(ctx, () => { - var offsetLeft = offset; - return () => --offsetLeft < 0; - }); - } - return this; - } - limit(numRows) { - this._ctx.limit = Math.min(this._ctx.limit, numRows); - addReplayFilter(this._ctx, () => { - var rowsLeft = numRows; - return function(cursor, advance, resolve) { - if (--rowsLeft <= 0) - advance(resolve); - return rowsLeft >= 0; - }; - }, true); - return this; - } - until(filterFunction, bIncludeStopEntry) { - addFilter(this._ctx, function(cursor, advance, resolve) { - if (filterFunction(cursor.value)) { - advance(resolve); - return bIncludeStopEntry; - } else { - return true; - } - }); - return this; - } - first(cb) { - return this.limit(1).toArray(function(a) { - return a[0]; - }).then(cb); - } - last(cb) { - return this.reverse().first(cb); - } - filter(filterFunction) { - addFilter(this._ctx, function(cursor) { - return filterFunction(cursor.value); - }); - addMatchFilter(this._ctx, filterFunction); - return this; - } - and(filter) { - return this.filter(filter); - } - or(indexName) { - return new this.db.WhereClause(this._ctx.table, indexName, this); - } - reverse() { - this._ctx.dir = this._ctx.dir === "prev" ? "next" : "prev"; - if (this._ondirectionchange) - this._ondirectionchange(this._ctx.dir); - return this; - } - desc() { - return this.reverse(); - } - eachKey(cb) { - var ctx = this._ctx; - ctx.keysOnly = !ctx.isMatch; - return this.each(function(val, cursor) { - cb(cursor.key, cursor); - }); - } - eachUniqueKey(cb) { - this._ctx.unique = "unique"; - return this.eachKey(cb); - } - eachPrimaryKey(cb) { - var ctx = this._ctx; - ctx.keysOnly = !ctx.isMatch; - return this.each(function(val, cursor) { - cb(cursor.primaryKey, cursor); - }); - } - keys(cb) { - var ctx = this._ctx; - ctx.keysOnly = !ctx.isMatch; - var a = []; - return this.each(function(item, cursor) { - a.push(cursor.key); - }).then(function() { - return a; - }).then(cb); - } - primaryKeys(cb) { - var ctx = this._ctx; - if (ctx.dir === "next" && isPlainKeyRange(ctx, true) && ctx.limit > 0) { - return this._read((trans) => { - var index = getIndexOrStore(ctx, ctx.table.core.schema); - return ctx.table.core.query({ - trans, - values: false, - limit: ctx.limit, - query: { - index, - range: ctx.range - } - }); - }).then(({ result }) => result).then(cb); - } - ctx.keysOnly = !ctx.isMatch; - var a = []; - return this.each(function(item, cursor) { - a.push(cursor.primaryKey); - }).then(function() { - return a; - }).then(cb); - } - uniqueKeys(cb) { - this._ctx.unique = "unique"; - return this.keys(cb); - } - firstKey(cb) { - return this.limit(1).keys(function(a) { - return a[0]; - }).then(cb); - } - lastKey(cb) { - return this.reverse().firstKey(cb); - } - distinct() { - var ctx = this._ctx, idx = ctx.index && ctx.table.schema.idxByName[ctx.index]; - if (!idx || !idx.multi) - return this; - var set = {}; - addFilter(this._ctx, function(cursor) { - var strKey = cursor.primaryKey.toString(); - var found = hasOwn(set, strKey); - set[strKey] = true; - return !found; - }); - return this; - } - modify(changes) { - var ctx = this._ctx; - return this._write((trans) => { - var modifyer; - if (typeof changes === "function") { - modifyer = changes; - } else { - var keyPaths = keys(changes); - var numKeys = keyPaths.length; - modifyer = function(item) { - var anythingModified = false; - for (var i = 0; i < numKeys; ++i) { - var keyPath = keyPaths[i], val = changes[keyPath]; - if (getByKeyPath(item, keyPath) !== val) { - setByKeyPath(item, keyPath, val); - anythingModified = true; - } - } - return anythingModified; - }; - } - const coreTable = ctx.table.core; - const { outbound, extractKey } = coreTable.schema.primaryKey; - const limit = this.db._options.modifyChunkSize || 200; - const totalFailures = []; - let successCount = 0; - const failedKeys = []; - const applyMutateResult = (expectedCount, res) => { - const { failures, numFailures } = res; - successCount += expectedCount - numFailures; - for (let pos of keys(failures)) { - totalFailures.push(failures[pos]); - } - }; - return this.clone().primaryKeys().then((keys2) => { - const nextChunk = (offset) => { - const count = Math.min(limit, keys2.length - offset); - return coreTable.getMany({ - trans, - keys: keys2.slice(offset, offset + count), - cache: "immutable" - }).then((values) => { - const addValues = []; - const putValues = []; - const putKeys = outbound ? [] : null; - const deleteKeys = []; - for (let i = 0; i < count; ++i) { - const origValue = values[i]; - const ctx2 = { - value: deepClone(origValue), - primKey: keys2[offset + i] - }; - if (modifyer.call(ctx2, ctx2.value, ctx2) !== false) { - if (ctx2.value == null) { - deleteKeys.push(keys2[offset + i]); - } else if (!outbound && cmp(extractKey(origValue), extractKey(ctx2.value)) !== 0) { - deleteKeys.push(keys2[offset + i]); - addValues.push(ctx2.value); - } else { - putValues.push(ctx2.value); - if (outbound) - putKeys.push(keys2[offset + i]); - } - } - } - const criteria = isPlainKeyRange(ctx) && ctx.limit === Infinity && (typeof changes !== "function" || changes === deleteCallback) && { - index: ctx.index, - range: ctx.range - }; - return Promise.resolve(addValues.length > 0 && coreTable.mutate({ trans, type: "add", values: addValues }).then((res) => { - for (let pos in res.failures) { - deleteKeys.splice(parseInt(pos), 1); - } - applyMutateResult(addValues.length, res); - })).then(() => (putValues.length > 0 || criteria && typeof changes === "object") && coreTable.mutate({ - trans, - type: "put", - keys: putKeys, - values: putValues, - criteria, - changeSpec: typeof changes !== "function" && changes - }).then((res) => applyMutateResult(putValues.length, res))).then(() => (deleteKeys.length > 0 || criteria && changes === deleteCallback) && coreTable.mutate({ - trans, - type: "delete", - keys: deleteKeys, - criteria - }).then((res) => applyMutateResult(deleteKeys.length, res))).then(() => { - return keys2.length > offset + count && nextChunk(offset + limit); - }); - }); - }; - return nextChunk(0).then(() => { - if (totalFailures.length > 0) - throw new ModifyError("Error modifying one or more objects", totalFailures, successCount, failedKeys); - return keys2.length; - }); - }); - }); - } - delete() { - var ctx = this._ctx, range = ctx.range; - if (isPlainKeyRange(ctx) && (ctx.isPrimKey && !hangsOnDeleteLargeKeyRange || range.type === 3)) { - return this._write((trans) => { - const { primaryKey } = ctx.table.core.schema; - const coreRange = range; - return ctx.table.core.count({ trans, query: { index: primaryKey, range: coreRange } }).then((count) => { - return ctx.table.core.mutate({ trans, type: "deleteRange", range: coreRange }).then(({ failures, lastResult, results, numFailures }) => { - if (numFailures) - throw new ModifyError("Could not delete some values", Object.keys(failures).map((pos) => failures[pos]), count - numFailures); - return count - numFailures; - }); - }); - }); - } - return this.modify(deleteCallback); - } -}; -var deleteCallback = (value, ctx) => ctx.value = null; -function createCollectionConstructor(db) { - return makeClassConstructor(Collection.prototype, function Collection2(whereClause, keyRangeGenerator) { - this.db = db; - let keyRange = AnyRange, error = null; - if (keyRangeGenerator) - try { - keyRange = keyRangeGenerator(); - } catch (ex) { - error = ex; - } - const whereCtx = whereClause._ctx; - const table = whereCtx.table; - const readingHook = table.hook.reading.fire; - this._ctx = { - table, - index: whereCtx.index, - isPrimKey: !whereCtx.index || table.schema.primKey.keyPath && whereCtx.index === table.schema.primKey.name, - range: keyRange, - keysOnly: false, - dir: "next", - unique: "", - algorithm: null, - filter: null, - replayFilter: null, - justLimit: true, - isMatch: null, - offset: 0, - limit: Infinity, - error, - or: whereCtx.or, - valueMapper: readingHook !== mirror ? readingHook : null - }; - }); -} -function simpleCompare(a, b) { - return a < b ? -1 : a === b ? 0 : 1; -} -function simpleCompareReverse(a, b) { - return a > b ? -1 : a === b ? 0 : 1; -} -function fail(collectionOrWhereClause, err, T) { - var collection = collectionOrWhereClause instanceof WhereClause ? new collectionOrWhereClause.Collection(collectionOrWhereClause) : collectionOrWhereClause; - collection._ctx.error = T ? new T(err) : new TypeError(err); - return collection; -} -function emptyCollection(whereClause) { - return new whereClause.Collection(whereClause, () => rangeEqual("")).limit(0); -} -function upperFactory(dir) { - return dir === "next" ? (s) => s.toUpperCase() : (s) => s.toLowerCase(); -} -function lowerFactory(dir) { - return dir === "next" ? (s) => s.toLowerCase() : (s) => s.toUpperCase(); -} -function nextCasing(key, lowerKey, upperNeedle, lowerNeedle, cmp2, dir) { - var length = Math.min(key.length, lowerNeedle.length); - var llp = -1; - for (var i = 0; i < length; ++i) { - var lwrKeyChar = lowerKey[i]; - if (lwrKeyChar !== lowerNeedle[i]) { - if (cmp2(key[i], upperNeedle[i]) < 0) - return key.substr(0, i) + upperNeedle[i] + upperNeedle.substr(i + 1); - if (cmp2(key[i], lowerNeedle[i]) < 0) - return key.substr(0, i) + lowerNeedle[i] + upperNeedle.substr(i + 1); - if (llp >= 0) - return key.substr(0, llp) + lowerKey[llp] + upperNeedle.substr(llp + 1); - return null; - } - if (cmp2(key[i], lwrKeyChar) < 0) - llp = i; - } - if (length < lowerNeedle.length && dir === "next") - return key + upperNeedle.substr(key.length); - if (length < key.length && dir === "prev") - return key.substr(0, upperNeedle.length); - return llp < 0 ? null : key.substr(0, llp) + lowerNeedle[llp] + upperNeedle.substr(llp + 1); -} -function addIgnoreCaseAlgorithm(whereClause, match, needles, suffix) { - var upper, lower, compare, upperNeedles, lowerNeedles, direction, nextKeySuffix, needlesLen = needles.length; - if (!needles.every((s) => typeof s === "string")) { - return fail(whereClause, STRING_EXPECTED); - } - function initDirection(dir) { - upper = upperFactory(dir); - lower = lowerFactory(dir); - compare = dir === "next" ? simpleCompare : simpleCompareReverse; - var needleBounds = needles.map(function(needle) { - return { lower: lower(needle), upper: upper(needle) }; - }).sort(function(a, b) { - return compare(a.lower, b.lower); - }); - upperNeedles = needleBounds.map(function(nb) { - return nb.upper; - }); - lowerNeedles = needleBounds.map(function(nb) { - return nb.lower; - }); - direction = dir; - nextKeySuffix = dir === "next" ? "" : suffix; - } - initDirection("next"); - var c = new whereClause.Collection(whereClause, () => createRange(upperNeedles[0], lowerNeedles[needlesLen - 1] + suffix)); - c._ondirectionchange = function(direction2) { - initDirection(direction2); - }; - var firstPossibleNeedle = 0; - c._addAlgorithm(function(cursor, advance, resolve) { - var key = cursor.key; - if (typeof key !== "string") - return false; - var lowerKey = lower(key); - if (match(lowerKey, lowerNeedles, firstPossibleNeedle)) { - return true; - } else { - var lowestPossibleCasing = null; - for (var i = firstPossibleNeedle; i < needlesLen; ++i) { - var casing = nextCasing(key, lowerKey, upperNeedles[i], lowerNeedles[i], compare, direction); - if (casing === null && lowestPossibleCasing === null) - firstPossibleNeedle = i + 1; - else if (lowestPossibleCasing === null || compare(lowestPossibleCasing, casing) > 0) { - lowestPossibleCasing = casing; - } - } - if (lowestPossibleCasing !== null) { - advance(function() { - cursor.continue(lowestPossibleCasing + nextKeySuffix); - }); - } else { - advance(resolve); - } - return false; - } - }); - return c; -} -function createRange(lower, upper, lowerOpen, upperOpen) { - return { - type: 2, - lower, - upper, - lowerOpen, - upperOpen - }; -} -function rangeEqual(value) { - return { - type: 1, - lower: value, - upper: value - }; -} -var WhereClause = class { - get Collection() { - return this._ctx.table.db.Collection; - } - between(lower, upper, includeLower, includeUpper) { - includeLower = includeLower !== false; - includeUpper = includeUpper === true; - try { - if (this._cmp(lower, upper) > 0 || this._cmp(lower, upper) === 0 && (includeLower || includeUpper) && !(includeLower && includeUpper)) - return emptyCollection(this); - return new this.Collection(this, () => createRange(lower, upper, !includeLower, !includeUpper)); - } catch (e) { - return fail(this, INVALID_KEY_ARGUMENT); - } - } - equals(value) { - if (value == null) - return fail(this, INVALID_KEY_ARGUMENT); - return new this.Collection(this, () => rangeEqual(value)); - } - above(value) { - if (value == null) - return fail(this, INVALID_KEY_ARGUMENT); - return new this.Collection(this, () => createRange(value, void 0, true)); - } - aboveOrEqual(value) { - if (value == null) - return fail(this, INVALID_KEY_ARGUMENT); - return new this.Collection(this, () => createRange(value, void 0, false)); - } - below(value) { - if (value == null) - return fail(this, INVALID_KEY_ARGUMENT); - return new this.Collection(this, () => createRange(void 0, value, false, true)); - } - belowOrEqual(value) { - if (value == null) - return fail(this, INVALID_KEY_ARGUMENT); - return new this.Collection(this, () => createRange(void 0, value)); - } - startsWith(str) { - if (typeof str !== "string") - return fail(this, STRING_EXPECTED); - return this.between(str, str + maxString, true, true); - } - startsWithIgnoreCase(str) { - if (str === "") - return this.startsWith(str); - return addIgnoreCaseAlgorithm(this, (x, a) => x.indexOf(a[0]) === 0, [str], maxString); - } - equalsIgnoreCase(str) { - return addIgnoreCaseAlgorithm(this, (x, a) => x === a[0], [str], ""); - } - anyOfIgnoreCase() { - var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments); - if (set.length === 0) - return emptyCollection(this); - return addIgnoreCaseAlgorithm(this, (x, a) => a.indexOf(x) !== -1, set, ""); - } - startsWithAnyOfIgnoreCase() { - var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments); - if (set.length === 0) - return emptyCollection(this); - return addIgnoreCaseAlgorithm(this, (x, a) => a.some((n) => x.indexOf(n) === 0), set, maxString); - } - anyOf() { - const set = getArrayOf.apply(NO_CHAR_ARRAY, arguments); - let compare = this._cmp; - try { - set.sort(compare); - } catch (e) { - return fail(this, INVALID_KEY_ARGUMENT); - } - if (set.length === 0) - return emptyCollection(this); - const c = new this.Collection(this, () => createRange(set[0], set[set.length - 1])); - c._ondirectionchange = (direction) => { - compare = direction === "next" ? this._ascending : this._descending; - set.sort(compare); - }; - let i = 0; - c._addAlgorithm((cursor, advance, resolve) => { - const key = cursor.key; - while (compare(key, set[i]) > 0) { - ++i; - if (i === set.length) { - advance(resolve); - return false; - } - } - if (compare(key, set[i]) === 0) { - return true; - } else { - advance(() => { - cursor.continue(set[i]); - }); - return false; - } - }); - return c; - } - notEqual(value) { - return this.inAnyRange([[minKey, value], [value, this.db._maxKey]], { includeLowers: false, includeUppers: false }); - } - noneOf() { - const set = getArrayOf.apply(NO_CHAR_ARRAY, arguments); - if (set.length === 0) - return new this.Collection(this); - try { - set.sort(this._ascending); - } catch (e) { - return fail(this, INVALID_KEY_ARGUMENT); - } - const ranges = set.reduce((res, val) => res ? res.concat([[res[res.length - 1][1], val]]) : [[minKey, val]], null); - ranges.push([set[set.length - 1], this.db._maxKey]); - return this.inAnyRange(ranges, { includeLowers: false, includeUppers: false }); - } - inAnyRange(ranges, options) { - const cmp2 = this._cmp, ascending = this._ascending, descending = this._descending, min = this._min, max = this._max; - if (ranges.length === 0) - return emptyCollection(this); - if (!ranges.every((range) => range[0] !== void 0 && range[1] !== void 0 && ascending(range[0], range[1]) <= 0)) { - return fail(this, "First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower", exceptions.InvalidArgument); - } - const includeLowers = !options || options.includeLowers !== false; - const includeUppers = options && options.includeUppers === true; - function addRange2(ranges2, newRange) { - let i = 0, l = ranges2.length; - for (; i < l; ++i) { - const range = ranges2[i]; - if (cmp2(newRange[0], range[1]) < 0 && cmp2(newRange[1], range[0]) > 0) { - range[0] = min(range[0], newRange[0]); - range[1] = max(range[1], newRange[1]); - break; - } - } - if (i === l) - ranges2.push(newRange); - return ranges2; - } - let sortDirection = ascending; - function rangeSorter(a, b) { - return sortDirection(a[0], b[0]); - } - let set; - try { - set = ranges.reduce(addRange2, []); - set.sort(rangeSorter); - } catch (ex) { - return fail(this, INVALID_KEY_ARGUMENT); - } - let rangePos = 0; - const keyIsBeyondCurrentEntry = includeUppers ? (key) => ascending(key, set[rangePos][1]) > 0 : (key) => ascending(key, set[rangePos][1]) >= 0; - const keyIsBeforeCurrentEntry = includeLowers ? (key) => descending(key, set[rangePos][0]) > 0 : (key) => descending(key, set[rangePos][0]) >= 0; - function keyWithinCurrentRange(key) { - return !keyIsBeyondCurrentEntry(key) && !keyIsBeforeCurrentEntry(key); - } - let checkKey = keyIsBeyondCurrentEntry; - const c = new this.Collection(this, () => createRange(set[0][0], set[set.length - 1][1], !includeLowers, !includeUppers)); - c._ondirectionchange = (direction) => { - if (direction === "next") { - checkKey = keyIsBeyondCurrentEntry; - sortDirection = ascending; - } else { - checkKey = keyIsBeforeCurrentEntry; - sortDirection = descending; - } - set.sort(rangeSorter); - }; - c._addAlgorithm((cursor, advance, resolve) => { - var key = cursor.key; - while (checkKey(key)) { - ++rangePos; - if (rangePos === set.length) { - advance(resolve); - return false; - } - } - if (keyWithinCurrentRange(key)) { - return true; - } else if (this._cmp(key, set[rangePos][1]) === 0 || this._cmp(key, set[rangePos][0]) === 0) { - return false; - } else { - advance(() => { - if (sortDirection === ascending) - cursor.continue(set[rangePos][0]); - else - cursor.continue(set[rangePos][1]); - }); - return false; - } - }); - return c; - } - startsWithAnyOf() { - const set = getArrayOf.apply(NO_CHAR_ARRAY, arguments); - if (!set.every((s) => typeof s === "string")) { - return fail(this, "startsWithAnyOf() only works with strings"); - } - if (set.length === 0) - return emptyCollection(this); - return this.inAnyRange(set.map((str) => [str, str + maxString])); - } -}; -function createWhereClauseConstructor(db) { - return makeClassConstructor(WhereClause.prototype, function WhereClause2(table, index, orCollection) { - this.db = db; - this._ctx = { - table, - index: index === ":id" ? null : index, - or: orCollection - }; - const indexedDB2 = db._deps.indexedDB; - if (!indexedDB2) - throw new exceptions.MissingAPI(); - this._cmp = this._ascending = indexedDB2.cmp.bind(indexedDB2); - this._descending = (a, b) => indexedDB2.cmp(b, a); - this._max = (a, b) => indexedDB2.cmp(a, b) > 0 ? a : b; - this._min = (a, b) => indexedDB2.cmp(a, b) < 0 ? a : b; - this._IDBKeyRange = db._deps.IDBKeyRange; - }); -} -function eventRejectHandler(reject) { - return wrap(function(event) { - preventDefault(event); - reject(event.target.error); - return false; - }); -} -function preventDefault(event) { - if (event.stopPropagation) - event.stopPropagation(); - if (event.preventDefault) - event.preventDefault(); -} -var DEXIE_STORAGE_MUTATED_EVENT_NAME = "storagemutated"; -var STORAGE_MUTATED_DOM_EVENT_NAME = "x-storagemutated-1"; -var globalEvents = Events(null, DEXIE_STORAGE_MUTATED_EVENT_NAME); -var Transaction = class { - _lock() { - assert(!PSD.global); - ++this._reculock; - if (this._reculock === 1 && !PSD.global) - PSD.lockOwnerFor = this; - return this; - } - _unlock() { - assert(!PSD.global); - if (--this._reculock === 0) { - if (!PSD.global) - PSD.lockOwnerFor = null; - while (this._blockedFuncs.length > 0 && !this._locked()) { - var fnAndPSD = this._blockedFuncs.shift(); - try { - usePSD(fnAndPSD[1], fnAndPSD[0]); - } catch (e) { - } - } - } - return this; - } - _locked() { - return this._reculock && PSD.lockOwnerFor !== this; - } - create(idbtrans) { - if (!this.mode) - return this; - const idbdb = this.db.idbdb; - const dbOpenError = this.db._state.dbOpenError; - assert(!this.idbtrans); - if (!idbtrans && !idbdb) { - switch (dbOpenError && dbOpenError.name) { - case "DatabaseClosedError": - throw new exceptions.DatabaseClosed(dbOpenError); - case "MissingAPIError": - throw new exceptions.MissingAPI(dbOpenError.message, dbOpenError); - default: - throw new exceptions.OpenFailed(dbOpenError); - } - } - if (!this.active) - throw new exceptions.TransactionInactive(); - assert(this._completion._state === null); - idbtrans = this.idbtrans = idbtrans || (this.db.core ? this.db.core.transaction(this.storeNames, this.mode, { durability: this.chromeTransactionDurability }) : idbdb.transaction(this.storeNames, this.mode, { durability: this.chromeTransactionDurability })); - idbtrans.onerror = wrap((ev) => { - preventDefault(ev); - this._reject(idbtrans.error); - }); - idbtrans.onabort = wrap((ev) => { - preventDefault(ev); - this.active && this._reject(new exceptions.Abort(idbtrans.error)); - this.active = false; - this.on("abort").fire(ev); - }); - idbtrans.oncomplete = wrap(() => { - this.active = false; - this._resolve(); - if ("mutatedParts" in idbtrans) { - globalEvents.storagemutated.fire(idbtrans["mutatedParts"]); - } - }); - return this; - } - _promise(mode, fn, bWriteLock) { - if (mode === "readwrite" && this.mode !== "readwrite") - return rejection(new exceptions.ReadOnly("Transaction is readonly")); - if (!this.active) - return rejection(new exceptions.TransactionInactive()); - if (this._locked()) { - return new DexiePromise((resolve, reject) => { - this._blockedFuncs.push([() => { - this._promise(mode, fn, bWriteLock).then(resolve, reject); - }, PSD]); - }); - } else if (bWriteLock) { - return newScope(() => { - var p2 = new DexiePromise((resolve, reject) => { - this._lock(); - const rv = fn(resolve, reject, this); - if (rv && rv.then) - rv.then(resolve, reject); - }); - p2.finally(() => this._unlock()); - p2._lib = true; - return p2; - }); - } else { - var p = new DexiePromise((resolve, reject) => { - var rv = fn(resolve, reject, this); - if (rv && rv.then) - rv.then(resolve, reject); - }); - p._lib = true; - return p; - } - } - _root() { - return this.parent ? this.parent._root() : this; - } - waitFor(promiseLike) { - var root = this._root(); - const promise = DexiePromise.resolve(promiseLike); - if (root._waitingFor) { - root._waitingFor = root._waitingFor.then(() => promise); - } else { - root._waitingFor = promise; - root._waitingQueue = []; - var store = root.idbtrans.objectStore(root.storeNames[0]); - (function spin() { - ++root._spinCount; - while (root._waitingQueue.length) - root._waitingQueue.shift()(); - if (root._waitingFor) - store.get(-Infinity).onsuccess = spin; - })(); - } - var currentWaitPromise = root._waitingFor; - return new DexiePromise((resolve, reject) => { - promise.then((res) => root._waitingQueue.push(wrap(resolve.bind(null, res))), (err) => root._waitingQueue.push(wrap(reject.bind(null, err)))).finally(() => { - if (root._waitingFor === currentWaitPromise) { - root._waitingFor = null; - } - }); - }); - } - abort() { - if (this.active) { - this.active = false; - if (this.idbtrans) - this.idbtrans.abort(); - this._reject(new exceptions.Abort()); - } - } - table(tableName) { - const memoizedTables = this._memoizedTables || (this._memoizedTables = {}); - if (hasOwn(memoizedTables, tableName)) - return memoizedTables[tableName]; - const tableSchema = this.schema[tableName]; - if (!tableSchema) { - throw new exceptions.NotFound("Table " + tableName + " not part of transaction"); - } - const transactionBoundTable = new this.db.Table(tableName, tableSchema, this); - transactionBoundTable.core = this.db.core.table(tableName); - memoizedTables[tableName] = transactionBoundTable; - return transactionBoundTable; - } -}; -function createTransactionConstructor(db) { - return makeClassConstructor(Transaction.prototype, function Transaction2(mode, storeNames, dbschema, chromeTransactionDurability, parent) { - this.db = db; - this.mode = mode; - this.storeNames = storeNames; - this.schema = dbschema; - this.chromeTransactionDurability = chromeTransactionDurability; - this.idbtrans = null; - this.on = Events(this, "complete", "error", "abort"); - this.parent = parent || null; - this.active = true; - this._reculock = 0; - this._blockedFuncs = []; - this._resolve = null; - this._reject = null; - this._waitingFor = null; - this._waitingQueue = null; - this._spinCount = 0; - this._completion = new DexiePromise((resolve, reject) => { - this._resolve = resolve; - this._reject = reject; - }); - this._completion.then(() => { - this.active = false; - this.on.complete.fire(); - }, (e) => { - var wasActive = this.active; - this.active = false; - this.on.error.fire(e); - this.parent ? this.parent._reject(e) : wasActive && this.idbtrans && this.idbtrans.abort(); - return rejection(e); - }); - }); -} -function createIndexSpec(name, keyPath, unique, multi, auto, compound, isPrimKey) { - return { - name, - keyPath, - unique, - multi, - auto, - compound, - src: (unique && !isPrimKey ? "&" : "") + (multi ? "*" : "") + (auto ? "++" : "") + nameFromKeyPath(keyPath) - }; -} -function nameFromKeyPath(keyPath) { - return typeof keyPath === "string" ? keyPath : keyPath ? "[" + [].join.call(keyPath, "+") + "]" : ""; -} -function createTableSchema(name, primKey, indexes) { - return { - name, - primKey, - indexes, - mappedClass: null, - idxByName: arrayToObject(indexes, (index) => [index.name, index]) - }; -} -function safariMultiStoreFix(storeNames) { - return storeNames.length === 1 ? storeNames[0] : storeNames; -} -var getMaxKey = (IdbKeyRange) => { - try { - IdbKeyRange.only([[]]); - getMaxKey = () => [[]]; - return [[]]; - } catch (e) { - getMaxKey = () => maxString; - return maxString; - } -}; -function getKeyExtractor(keyPath) { - if (keyPath == null) { - return () => void 0; - } else if (typeof keyPath === "string") { - return getSinglePathKeyExtractor(keyPath); - } else { - return (obj) => getByKeyPath(obj, keyPath); - } -} -function getSinglePathKeyExtractor(keyPath) { - const split = keyPath.split("."); - if (split.length === 1) { - return (obj) => obj[keyPath]; - } else { - return (obj) => getByKeyPath(obj, keyPath); - } -} -function arrayify(arrayLike) { - return [].slice.call(arrayLike); -} -var _id_counter = 0; -function getKeyPathAlias(keyPath) { - return keyPath == null ? ":id" : typeof keyPath === "string" ? keyPath : `[${keyPath.join("+")}]`; -} -function createDBCore(db, IdbKeyRange, tmpTrans) { - function extractSchema(db2, trans) { - const tables2 = arrayify(db2.objectStoreNames); - return { - schema: { - name: db2.name, - tables: tables2.map((table) => trans.objectStore(table)).map((store) => { - const { keyPath, autoIncrement } = store; - const compound = isArray(keyPath); - const outbound = keyPath == null; - const indexByKeyPath = {}; - const result = { - name: store.name, - primaryKey: { - name: null, - isPrimaryKey: true, - outbound, - compound, - keyPath, - autoIncrement, - unique: true, - extractKey: getKeyExtractor(keyPath) - }, - indexes: arrayify(store.indexNames).map((indexName) => store.index(indexName)).map((index) => { - const { name, unique, multiEntry, keyPath: keyPath2 } = index; - const compound2 = isArray(keyPath2); - const result2 = { - name, - compound: compound2, - keyPath: keyPath2, - unique, - multiEntry, - extractKey: getKeyExtractor(keyPath2) - }; - indexByKeyPath[getKeyPathAlias(keyPath2)] = result2; - return result2; - }), - getIndexByKeyPath: (keyPath2) => indexByKeyPath[getKeyPathAlias(keyPath2)] - }; - indexByKeyPath[":id"] = result.primaryKey; - if (keyPath != null) { - indexByKeyPath[getKeyPathAlias(keyPath)] = result.primaryKey; - } - return result; - }) - }, - hasGetAll: tables2.length > 0 && "getAll" in trans.objectStore(tables2[0]) && !(typeof navigator !== "undefined" && /Safari/.test(navigator.userAgent) && !/(Chrome\/|Edge\/)/.test(navigator.userAgent) && [].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1] < 604) - }; - } - function makeIDBKeyRange(range) { - if (range.type === 3) - return null; - if (range.type === 4) - throw new Error("Cannot convert never type to IDBKeyRange"); - const { lower, upper, lowerOpen, upperOpen } = range; - const idbRange = lower === void 0 ? upper === void 0 ? null : IdbKeyRange.upperBound(upper, !!upperOpen) : upper === void 0 ? IdbKeyRange.lowerBound(lower, !!lowerOpen) : IdbKeyRange.bound(lower, upper, !!lowerOpen, !!upperOpen); - return idbRange; - } - function createDbCoreTable(tableSchema) { - const tableName = tableSchema.name; - function mutate({ trans, type: type2, keys: keys2, values, range }) { - return new Promise((resolve, reject) => { - resolve = wrap(resolve); - const store = trans.objectStore(tableName); - const outbound = store.keyPath == null; - const isAddOrPut = type2 === "put" || type2 === "add"; - if (!isAddOrPut && type2 !== "delete" && type2 !== "deleteRange") - throw new Error("Invalid operation type: " + type2); - const { length } = keys2 || values || { length: 1 }; - if (keys2 && values && keys2.length !== values.length) { - throw new Error("Given keys array must have same length as given values array."); - } - if (length === 0) - return resolve({ numFailures: 0, failures: {}, results: [], lastResult: void 0 }); - let req; - const reqs = []; - const failures = []; - let numFailures = 0; - const errorHandler = (event) => { - ++numFailures; - preventDefault(event); - }; - if (type2 === "deleteRange") { - if (range.type === 4) - return resolve({ numFailures, failures, results: [], lastResult: void 0 }); - if (range.type === 3) - reqs.push(req = store.clear()); - else - reqs.push(req = store.delete(makeIDBKeyRange(range))); - } else { - const [args1, args2] = isAddOrPut ? outbound ? [values, keys2] : [values, null] : [keys2, null]; - if (isAddOrPut) { - for (let i = 0; i < length; ++i) { - reqs.push(req = args2 && args2[i] !== void 0 ? store[type2](args1[i], args2[i]) : store[type2](args1[i])); - req.onerror = errorHandler; - } - } else { - for (let i = 0; i < length; ++i) { - reqs.push(req = store[type2](args1[i])); - req.onerror = errorHandler; - } - } - } - const done = (event) => { - const lastResult = event.target.result; - reqs.forEach((req2, i) => req2.error != null && (failures[i] = req2.error)); - resolve({ - numFailures, - failures, - results: type2 === "delete" ? keys2 : reqs.map((req2) => req2.result), - lastResult - }); - }; - req.onerror = (event) => { - errorHandler(event); - done(event); - }; - req.onsuccess = done; - }); - } - function openCursor2({ trans, values, query: query2, reverse, unique }) { - return new Promise((resolve, reject) => { - resolve = wrap(resolve); - const { index, range } = query2; - const store = trans.objectStore(tableName); - const source = index.isPrimaryKey ? store : store.index(index.name); - const direction = reverse ? unique ? "prevunique" : "prev" : unique ? "nextunique" : "next"; - const req = values || !("openKeyCursor" in source) ? source.openCursor(makeIDBKeyRange(range), direction) : source.openKeyCursor(makeIDBKeyRange(range), direction); - req.onerror = eventRejectHandler(reject); - req.onsuccess = wrap((ev) => { - const cursor = req.result; - if (!cursor) { - resolve(null); - return; - } - cursor.___id = ++_id_counter; - cursor.done = false; - const _cursorContinue = cursor.continue.bind(cursor); - let _cursorContinuePrimaryKey = cursor.continuePrimaryKey; - if (_cursorContinuePrimaryKey) - _cursorContinuePrimaryKey = _cursorContinuePrimaryKey.bind(cursor); - const _cursorAdvance = cursor.advance.bind(cursor); - const doThrowCursorIsNotStarted = () => { - throw new Error("Cursor not started"); - }; - const doThrowCursorIsStopped = () => { - throw new Error("Cursor not stopped"); - }; - cursor.trans = trans; - cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsNotStarted; - cursor.fail = wrap(reject); - cursor.next = function() { - let gotOne = 1; - return this.start(() => gotOne-- ? this.continue() : this.stop()).then(() => this); - }; - cursor.start = (callback) => { - const iterationPromise = new Promise((resolveIteration, rejectIteration) => { - resolveIteration = wrap(resolveIteration); - req.onerror = eventRejectHandler(rejectIteration); - cursor.fail = rejectIteration; - cursor.stop = (value) => { - cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsStopped; - resolveIteration(value); - }; - }); - const guardedCallback = () => { - if (req.result) { - try { - callback(); - } catch (err) { - cursor.fail(err); - } - } else { - cursor.done = true; - cursor.start = () => { - throw new Error("Cursor behind last entry"); - }; - cursor.stop(); - } - }; - req.onsuccess = wrap((ev2) => { - req.onsuccess = guardedCallback; - guardedCallback(); - }); - cursor.continue = _cursorContinue; - cursor.continuePrimaryKey = _cursorContinuePrimaryKey; - cursor.advance = _cursorAdvance; - guardedCallback(); - return iterationPromise; - }; - resolve(cursor); - }, reject); - }); - } - function query(hasGetAll2) { - return (request) => { - return new Promise((resolve, reject) => { - resolve = wrap(resolve); - const { trans, values, limit, query: query2 } = request; - const nonInfinitLimit = limit === Infinity ? void 0 : limit; - const { index, range } = query2; - const store = trans.objectStore(tableName); - const source = index.isPrimaryKey ? store : store.index(index.name); - const idbKeyRange = makeIDBKeyRange(range); - if (limit === 0) - return resolve({ result: [] }); - if (hasGetAll2) { - const req = values ? source.getAll(idbKeyRange, nonInfinitLimit) : source.getAllKeys(idbKeyRange, nonInfinitLimit); - req.onsuccess = (event) => resolve({ result: event.target.result }); - req.onerror = eventRejectHandler(reject); - } else { - let count = 0; - const req = values || !("openKeyCursor" in source) ? source.openCursor(idbKeyRange) : source.openKeyCursor(idbKeyRange); - const result = []; - req.onsuccess = (event) => { - const cursor = req.result; - if (!cursor) - return resolve({ result }); - result.push(values ? cursor.value : cursor.primaryKey); - if (++count === limit) - return resolve({ result }); - cursor.continue(); - }; - req.onerror = eventRejectHandler(reject); - } - }); - }; - } - return { - name: tableName, - schema: tableSchema, - mutate, - getMany({ trans, keys: keys2 }) { - return new Promise((resolve, reject) => { - resolve = wrap(resolve); - const store = trans.objectStore(tableName); - const length = keys2.length; - const result = new Array(length); - let keyCount = 0; - let callbackCount = 0; - let req; - const successHandler = (event) => { - const req2 = event.target; - if ((result[req2._pos] = req2.result) != null) - ; - if (++callbackCount === keyCount) - resolve(result); - }; - const errorHandler = eventRejectHandler(reject); - for (let i = 0; i < length; ++i) { - const key = keys2[i]; - if (key != null) { - req = store.get(keys2[i]); - req._pos = i; - req.onsuccess = successHandler; - req.onerror = errorHandler; - ++keyCount; - } - } - if (keyCount === 0) - resolve(result); - }); - }, - get({ trans, key }) { - return new Promise((resolve, reject) => { - resolve = wrap(resolve); - const store = trans.objectStore(tableName); - const req = store.get(key); - req.onsuccess = (event) => resolve(event.target.result); - req.onerror = eventRejectHandler(reject); - }); - }, - query: query(hasGetAll), - openCursor: openCursor2, - count({ query: query2, trans }) { - const { index, range } = query2; - return new Promise((resolve, reject) => { - const store = trans.objectStore(tableName); - const source = index.isPrimaryKey ? store : store.index(index.name); - const idbKeyRange = makeIDBKeyRange(range); - const req = idbKeyRange ? source.count(idbKeyRange) : source.count(); - req.onsuccess = wrap((ev) => resolve(ev.target.result)); - req.onerror = eventRejectHandler(reject); - }); - } - }; - } - const { schema, hasGetAll } = extractSchema(db, tmpTrans); - const tables = schema.tables.map((tableSchema) => createDbCoreTable(tableSchema)); - const tableMap = {}; - tables.forEach((table) => tableMap[table.name] = table); - return { - stack: "dbcore", - transaction: db.transaction.bind(db), - table(name) { - const result = tableMap[name]; - if (!result) - throw new Error(`Table '${name}' not found`); - return tableMap[name]; - }, - MIN_KEY: -Infinity, - MAX_KEY: getMaxKey(IdbKeyRange), - schema - }; -} -function createMiddlewareStack(stackImpl, middlewares) { - return middlewares.reduce((down, { create }) => ({ ...down, ...create(down) }), stackImpl); -} -function createMiddlewareStacks(middlewares, idbdb, { IDBKeyRange, indexedDB: indexedDB2 }, tmpTrans) { - const dbcore = createMiddlewareStack(createDBCore(idbdb, IDBKeyRange, tmpTrans), middlewares.dbcore); - return { - dbcore - }; -} -function generateMiddlewareStacks({ _novip: db }, tmpTrans) { - const idbdb = tmpTrans.db; - const stacks = createMiddlewareStacks(db._middlewares, idbdb, db._deps, tmpTrans); - db.core = stacks.dbcore; - db.tables.forEach((table) => { - const tableName = table.name; - if (db.core.schema.tables.some((tbl) => tbl.name === tableName)) { - table.core = db.core.table(tableName); - if (db[tableName] instanceof db.Table) { - db[tableName].core = table.core; - } - } - }); -} -function setApiOnPlace({ _novip: db }, objs, tableNames, dbschema) { - tableNames.forEach((tableName) => { - const schema = dbschema[tableName]; - objs.forEach((obj) => { - const propDesc = getPropertyDescriptor(obj, tableName); - if (!propDesc || "value" in propDesc && propDesc.value === void 0) { - if (obj === db.Transaction.prototype || obj instanceof db.Transaction) { - setProp(obj, tableName, { - get() { - return this.table(tableName); - }, - set(value) { - defineProperty(this, tableName, { value, writable: true, configurable: true, enumerable: true }); - } - }); - } else { - obj[tableName] = new db.Table(tableName, schema); - } - } - }); - }); -} -function removeTablesApi({ _novip: db }, objs) { - objs.forEach((obj) => { - for (let key in obj) { - if (obj[key] instanceof db.Table) - delete obj[key]; - } - }); -} -function lowerVersionFirst(a, b) { - return a._cfg.version - b._cfg.version; -} -function runUpgraders(db, oldVersion, idbUpgradeTrans, reject) { - const globalSchema = db._dbSchema; - const trans = db._createTransaction("readwrite", db._storeNames, globalSchema); - trans.create(idbUpgradeTrans); - trans._completion.catch(reject); - const rejectTransaction = trans._reject.bind(trans); - const transless = PSD.transless || PSD; - newScope(() => { - PSD.trans = trans; - PSD.transless = transless; - if (oldVersion === 0) { - keys(globalSchema).forEach((tableName) => { - createTable(idbUpgradeTrans, tableName, globalSchema[tableName].primKey, globalSchema[tableName].indexes); - }); - generateMiddlewareStacks(db, idbUpgradeTrans); - DexiePromise.follow(() => db.on.populate.fire(trans)).catch(rejectTransaction); - } else - updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans).catch(rejectTransaction); - }); -} -function updateTablesAndIndexes({ _novip: db }, oldVersion, trans, idbUpgradeTrans) { - const queue = []; - const versions = db._versions; - let globalSchema = db._dbSchema = buildGlobalSchema(db, db.idbdb, idbUpgradeTrans); - let anyContentUpgraderHasRun = false; - const versToRun = versions.filter((v) => v._cfg.version >= oldVersion); - versToRun.forEach((version) => { - queue.push(() => { - const oldSchema = globalSchema; - const newSchema = version._cfg.dbschema; - adjustToExistingIndexNames(db, oldSchema, idbUpgradeTrans); - adjustToExistingIndexNames(db, newSchema, idbUpgradeTrans); - globalSchema = db._dbSchema = newSchema; - const diff = getSchemaDiff(oldSchema, newSchema); - diff.add.forEach((tuple) => { - createTable(idbUpgradeTrans, tuple[0], tuple[1].primKey, tuple[1].indexes); - }); - diff.change.forEach((change) => { - if (change.recreate) { - throw new exceptions.Upgrade("Not yet support for changing primary key"); - } else { - const store = idbUpgradeTrans.objectStore(change.name); - change.add.forEach((idx) => addIndex(store, idx)); - change.change.forEach((idx) => { - store.deleteIndex(idx.name); - addIndex(store, idx); - }); - change.del.forEach((idxName) => store.deleteIndex(idxName)); - } - }); - const contentUpgrade = version._cfg.contentUpgrade; - if (contentUpgrade && version._cfg.version > oldVersion) { - generateMiddlewareStacks(db, idbUpgradeTrans); - trans._memoizedTables = {}; - anyContentUpgraderHasRun = true; - let upgradeSchema = shallowClone(newSchema); - diff.del.forEach((table) => { - upgradeSchema[table] = oldSchema[table]; - }); - removeTablesApi(db, [db.Transaction.prototype]); - setApiOnPlace(db, [db.Transaction.prototype], keys(upgradeSchema), upgradeSchema); - trans.schema = upgradeSchema; - const contentUpgradeIsAsync = isAsyncFunction(contentUpgrade); - if (contentUpgradeIsAsync) { - incrementExpectedAwaits(); - } - let returnValue; - const promiseFollowed = DexiePromise.follow(() => { - returnValue = contentUpgrade(trans); - if (returnValue) { - if (contentUpgradeIsAsync) { - var decrementor = decrementExpectedAwaits.bind(null, null); - returnValue.then(decrementor, decrementor); - } - } - }); - return returnValue && typeof returnValue.then === "function" ? DexiePromise.resolve(returnValue) : promiseFollowed.then(() => returnValue); - } - }); - queue.push((idbtrans) => { - if (!anyContentUpgraderHasRun || !hasIEDeleteObjectStoreBug) { - const newSchema = version._cfg.dbschema; - deleteRemovedTables(newSchema, idbtrans); - } - removeTablesApi(db, [db.Transaction.prototype]); - setApiOnPlace(db, [db.Transaction.prototype], db._storeNames, db._dbSchema); - trans.schema = db._dbSchema; - }); - }); - function runQueue() { - return queue.length ? DexiePromise.resolve(queue.shift()(trans.idbtrans)).then(runQueue) : DexiePromise.resolve(); - } - return runQueue().then(() => { - createMissingTables(globalSchema, idbUpgradeTrans); - }); -} -function getSchemaDiff(oldSchema, newSchema) { - const diff = { - del: [], - add: [], - change: [] - }; - let table; - for (table in oldSchema) { - if (!newSchema[table]) - diff.del.push(table); - } - for (table in newSchema) { - const oldDef = oldSchema[table], newDef = newSchema[table]; - if (!oldDef) { - diff.add.push([table, newDef]); - } else { - const change = { - name: table, - def: newDef, - recreate: false, - del: [], - add: [], - change: [] - }; - if ("" + (oldDef.primKey.keyPath || "") !== "" + (newDef.primKey.keyPath || "") || oldDef.primKey.auto !== newDef.primKey.auto && !isIEOrEdge) { - change.recreate = true; - diff.change.push(change); - } else { - const oldIndexes = oldDef.idxByName; - const newIndexes = newDef.idxByName; - let idxName; - for (idxName in oldIndexes) { - if (!newIndexes[idxName]) - change.del.push(idxName); - } - for (idxName in newIndexes) { - const oldIdx = oldIndexes[idxName], newIdx = newIndexes[idxName]; - if (!oldIdx) - change.add.push(newIdx); - else if (oldIdx.src !== newIdx.src) - change.change.push(newIdx); - } - if (change.del.length > 0 || change.add.length > 0 || change.change.length > 0) { - diff.change.push(change); - } - } - } - } - return diff; -} -function createTable(idbtrans, tableName, primKey, indexes) { - const store = idbtrans.db.createObjectStore(tableName, primKey.keyPath ? { keyPath: primKey.keyPath, autoIncrement: primKey.auto } : { autoIncrement: primKey.auto }); - indexes.forEach((idx) => addIndex(store, idx)); - return store; -} -function createMissingTables(newSchema, idbtrans) { - keys(newSchema).forEach((tableName) => { - if (!idbtrans.db.objectStoreNames.contains(tableName)) { - createTable(idbtrans, tableName, newSchema[tableName].primKey, newSchema[tableName].indexes); - } - }); -} -function deleteRemovedTables(newSchema, idbtrans) { - [].slice.call(idbtrans.db.objectStoreNames).forEach((storeName) => newSchema[storeName] == null && idbtrans.db.deleteObjectStore(storeName)); -} -function addIndex(store, idx) { - store.createIndex(idx.name, idx.keyPath, { unique: idx.unique, multiEntry: idx.multi }); -} -function buildGlobalSchema(db, idbdb, tmpTrans) { - const globalSchema = {}; - const dbStoreNames = slice(idbdb.objectStoreNames, 0); - dbStoreNames.forEach((storeName) => { - const store = tmpTrans.objectStore(storeName); - let keyPath = store.keyPath; - const primKey = createIndexSpec(nameFromKeyPath(keyPath), keyPath || "", false, false, !!store.autoIncrement, keyPath && typeof keyPath !== "string", true); - const indexes = []; - for (let j = 0; j < store.indexNames.length; ++j) { - const idbindex = store.index(store.indexNames[j]); - keyPath = idbindex.keyPath; - var index = createIndexSpec(idbindex.name, keyPath, !!idbindex.unique, !!idbindex.multiEntry, false, keyPath && typeof keyPath !== "string", false); - indexes.push(index); - } - globalSchema[storeName] = createTableSchema(storeName, primKey, indexes); - }); - return globalSchema; -} -function readGlobalSchema({ _novip: db }, idbdb, tmpTrans) { - db.verno = idbdb.version / 10; - const globalSchema = db._dbSchema = buildGlobalSchema(db, idbdb, tmpTrans); - db._storeNames = slice(idbdb.objectStoreNames, 0); - setApiOnPlace(db, [db._allTables], keys(globalSchema), globalSchema); -} -function verifyInstalledSchema(db, tmpTrans) { - const installedSchema = buildGlobalSchema(db, db.idbdb, tmpTrans); - const diff = getSchemaDiff(installedSchema, db._dbSchema); - return !(diff.add.length || diff.change.some((ch) => ch.add.length || ch.change.length)); -} -function adjustToExistingIndexNames({ _novip: db }, schema, idbtrans) { - const storeNames = idbtrans.db.objectStoreNames; - for (let i = 0; i < storeNames.length; ++i) { - const storeName = storeNames[i]; - const store = idbtrans.objectStore(storeName); - db._hasGetAll = "getAll" in store; - for (let j = 0; j < store.indexNames.length; ++j) { - const indexName = store.indexNames[j]; - const keyPath = store.index(indexName).keyPath; - const dexieName = typeof keyPath === "string" ? keyPath : "[" + slice(keyPath).join("+") + "]"; - if (schema[storeName]) { - const indexSpec = schema[storeName].idxByName[dexieName]; - if (indexSpec) { - indexSpec.name = indexName; - delete schema[storeName].idxByName[dexieName]; - schema[storeName].idxByName[indexName] = indexSpec; - } - } - } - } - if (typeof navigator !== "undefined" && /Safari/.test(navigator.userAgent) && !/(Chrome\/|Edge\/)/.test(navigator.userAgent) && _global.WorkerGlobalScope && _global instanceof _global.WorkerGlobalScope && [].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1] < 604) { - db._hasGetAll = false; - } -} -function parseIndexSyntax(primKeyAndIndexes) { - return primKeyAndIndexes.split(",").map((index, indexNum) => { - index = index.trim(); - const name = index.replace(/([&*]|\+\+)/g, ""); - const keyPath = /^\[/.test(name) ? name.match(/^\[(.*)\]$/)[1].split("+") : name; - return createIndexSpec(name, keyPath || null, /\&/.test(index), /\*/.test(index), /\+\+/.test(index), isArray(keyPath), indexNum === 0); - }); -} -var Version = class { - _parseStoresSpec(stores, outSchema) { - keys(stores).forEach((tableName) => { - if (stores[tableName] !== null) { - var indexes = parseIndexSyntax(stores[tableName]); - var primKey = indexes.shift(); - if (primKey.multi) - throw new exceptions.Schema("Primary key cannot be multi-valued"); - indexes.forEach((idx) => { - if (idx.auto) - throw new exceptions.Schema("Only primary key can be marked as autoIncrement (++)"); - if (!idx.keyPath) - throw new exceptions.Schema("Index must have a name and cannot be an empty string"); - }); - outSchema[tableName] = createTableSchema(tableName, primKey, indexes); - } - }); - } - stores(stores) { - const db = this.db; - this._cfg.storesSource = this._cfg.storesSource ? extend(this._cfg.storesSource, stores) : stores; - const versions = db._versions; - const storesSpec = {}; - let dbschema = {}; - versions.forEach((version) => { - extend(storesSpec, version._cfg.storesSource); - dbschema = version._cfg.dbschema = {}; - version._parseStoresSpec(storesSpec, dbschema); - }); - db._dbSchema = dbschema; - removeTablesApi(db, [db._allTables, db, db.Transaction.prototype]); - setApiOnPlace(db, [db._allTables, db, db.Transaction.prototype, this._cfg.tables], keys(dbschema), dbschema); - db._storeNames = keys(dbschema); - return this; - } - upgrade(upgradeFunction) { - this._cfg.contentUpgrade = promisableChain(this._cfg.contentUpgrade || nop, upgradeFunction); - return this; - } -}; -function createVersionConstructor(db) { - return makeClassConstructor(Version.prototype, function Version2(versionNumber) { - this.db = db; - this._cfg = { - version: versionNumber, - storesSource: null, - dbschema: {}, - tables: {}, - contentUpgrade: null - }; - }); -} -function getDbNamesTable(indexedDB2, IDBKeyRange) { - let dbNamesDB = indexedDB2["_dbNamesDB"]; - if (!dbNamesDB) { - dbNamesDB = indexedDB2["_dbNamesDB"] = new Dexie$1(DBNAMES_DB, { - addons: [], - indexedDB: indexedDB2, - IDBKeyRange - }); - dbNamesDB.version(1).stores({ dbnames: "name" }); - } - return dbNamesDB.table("dbnames"); -} -function hasDatabasesNative(indexedDB2) { - return indexedDB2 && typeof indexedDB2.databases === "function"; -} -function getDatabaseNames({ indexedDB: indexedDB2, IDBKeyRange }) { - return hasDatabasesNative(indexedDB2) ? Promise.resolve(indexedDB2.databases()).then((infos) => infos.map((info) => info.name).filter((name) => name !== DBNAMES_DB)) : getDbNamesTable(indexedDB2, IDBKeyRange).toCollection().primaryKeys(); -} -function _onDatabaseCreated({ indexedDB: indexedDB2, IDBKeyRange }, name) { - !hasDatabasesNative(indexedDB2) && name !== DBNAMES_DB && getDbNamesTable(indexedDB2, IDBKeyRange).put({ name }).catch(nop); -} -function _onDatabaseDeleted({ indexedDB: indexedDB2, IDBKeyRange }, name) { - !hasDatabasesNative(indexedDB2) && name !== DBNAMES_DB && getDbNamesTable(indexedDB2, IDBKeyRange).delete(name).catch(nop); -} -function vip(fn) { - return newScope(function() { - PSD.letThrough = true; - return fn(); - }); -} -function idbReady() { - var isSafari = !navigator.userAgentData && /Safari\//.test(navigator.userAgent) && !/Chrom(e|ium)\//.test(navigator.userAgent); - if (!isSafari || !indexedDB.databases) - return Promise.resolve(); - var intervalId; - return new Promise(function(resolve) { - var tryIdb = function() { - return indexedDB.databases().finally(resolve); - }; - intervalId = setInterval(tryIdb, 100); - tryIdb(); - }).finally(function() { - return clearInterval(intervalId); - }); -} -function dexieOpen(db) { - const state = db._state; - const { indexedDB: indexedDB2 } = db._deps; - if (state.isBeingOpened || db.idbdb) - return state.dbReadyPromise.then(() => state.dbOpenError ? rejection(state.dbOpenError) : db); - debug && (state.openCanceller._stackHolder = getErrorWithStack()); - state.isBeingOpened = true; - state.dbOpenError = null; - state.openComplete = false; - const openCanceller = state.openCanceller; - function throwIfCancelled() { - if (state.openCanceller !== openCanceller) - throw new exceptions.DatabaseClosed("db.open() was cancelled"); - } - let resolveDbReady = state.dbReadyResolve, upgradeTransaction = null, wasCreated = false; - const tryOpenDB = () => new DexiePromise((resolve, reject) => { - throwIfCancelled(); - if (!indexedDB2) - throw new exceptions.MissingAPI(); - const dbName = db.name; - const req = state.autoSchema ? indexedDB2.open(dbName) : indexedDB2.open(dbName, Math.round(db.verno * 10)); - if (!req) - throw new exceptions.MissingAPI(); - req.onerror = eventRejectHandler(reject); - req.onblocked = wrap(db._fireOnBlocked); - req.onupgradeneeded = wrap((e) => { - upgradeTransaction = req.transaction; - if (state.autoSchema && !db._options.allowEmptyDB) { - req.onerror = preventDefault; - upgradeTransaction.abort(); - req.result.close(); - const delreq = indexedDB2.deleteDatabase(dbName); - delreq.onsuccess = delreq.onerror = wrap(() => { - reject(new exceptions.NoSuchDatabase(`Database ${dbName} doesnt exist`)); - }); - } else { - upgradeTransaction.onerror = eventRejectHandler(reject); - var oldVer = e.oldVersion > Math.pow(2, 62) ? 0 : e.oldVersion; - wasCreated = oldVer < 1; - db._novip.idbdb = req.result; - runUpgraders(db, oldVer / 10, upgradeTransaction, reject); - } - }, reject); - req.onsuccess = wrap(() => { - upgradeTransaction = null; - const idbdb = db._novip.idbdb = req.result; - const objectStoreNames = slice(idbdb.objectStoreNames); - if (objectStoreNames.length > 0) - try { - const tmpTrans = idbdb.transaction(safariMultiStoreFix(objectStoreNames), "readonly"); - if (state.autoSchema) - readGlobalSchema(db, idbdb, tmpTrans); - else { - adjustToExistingIndexNames(db, db._dbSchema, tmpTrans); - if (!verifyInstalledSchema(db, tmpTrans)) { - console.warn(`Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Some queries may fail.`); - } - } - generateMiddlewareStacks(db, tmpTrans); - } catch (e) { - } - connections.push(db); - idbdb.onversionchange = wrap((ev) => { - state.vcFired = true; - db.on("versionchange").fire(ev); - }); - idbdb.onclose = wrap((ev) => { - db.on("close").fire(ev); - }); - if (wasCreated) - _onDatabaseCreated(db._deps, dbName); - resolve(); - }, reject); - }).catch((err) => { - if (err && err.name === "UnknownError" && state.PR1398_maxLoop > 0) { - state.PR1398_maxLoop--; - console.warn("Dexie: Workaround for Chrome UnknownError on open()"); - return tryOpenDB(); - } else { - return DexiePromise.reject(err); - } - }); - return DexiePromise.race([ - openCanceller, - (typeof navigator === "undefined" ? DexiePromise.resolve() : idbReady()).then(tryOpenDB) - ]).then(() => { - throwIfCancelled(); - state.onReadyBeingFired = []; - return DexiePromise.resolve(vip(() => db.on.ready.fire(db.vip))).then(function fireRemainders() { - if (state.onReadyBeingFired.length > 0) { - let remainders = state.onReadyBeingFired.reduce(promisableChain, nop); - state.onReadyBeingFired = []; - return DexiePromise.resolve(vip(() => remainders(db.vip))).then(fireRemainders); - } - }); - }).finally(() => { - state.onReadyBeingFired = null; - state.isBeingOpened = false; - }).then(() => { - return db; - }).catch((err) => { - state.dbOpenError = err; - try { - upgradeTransaction && upgradeTransaction.abort(); - } catch (_a) { - } - if (openCanceller === state.openCanceller) { - db._close(); - } - return rejection(err); - }).finally(() => { - state.openComplete = true; - resolveDbReady(); - }); -} -function awaitIterator(iterator) { - var callNext = (result) => iterator.next(result), doThrow = (error) => iterator.throw(error), onSuccess = step(callNext), onError = step(doThrow); - function step(getNext) { - return (val) => { - var next = getNext(val), value = next.value; - return next.done ? value : !value || typeof value.then !== "function" ? isArray(value) ? Promise.all(value).then(onSuccess, onError) : onSuccess(value) : value.then(onSuccess, onError); - }; - } - return step(callNext)(); -} -function extractTransactionArgs(mode, _tableArgs_, scopeFunc) { - var i = arguments.length; - if (i < 2) - throw new exceptions.InvalidArgument("Too few arguments"); - var args = new Array(i - 1); - while (--i) - args[i - 1] = arguments[i]; - scopeFunc = args.pop(); - var tables = flatten(args); - return [mode, tables, scopeFunc]; -} -function enterTransactionScope(db, mode, storeNames, parentTransaction, scopeFunc) { - return DexiePromise.resolve().then(() => { - const transless = PSD.transless || PSD; - const trans = db._createTransaction(mode, storeNames, db._dbSchema, parentTransaction); - const zoneProps = { - trans, - transless - }; - if (parentTransaction) { - trans.idbtrans = parentTransaction.idbtrans; - } else { - try { - trans.create(); - db._state.PR1398_maxLoop = 3; - } catch (ex) { - if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) { - console.warn("Dexie: Need to reopen db"); - db._close(); - return db.open().then(() => enterTransactionScope(db, mode, storeNames, null, scopeFunc)); - } - return rejection(ex); - } - } - const scopeFuncIsAsync = isAsyncFunction(scopeFunc); - if (scopeFuncIsAsync) { - incrementExpectedAwaits(); - } - let returnValue; - const promiseFollowed = DexiePromise.follow(() => { - returnValue = scopeFunc.call(trans, trans); - if (returnValue) { - if (scopeFuncIsAsync) { - var decrementor = decrementExpectedAwaits.bind(null, null); - returnValue.then(decrementor, decrementor); - } else if (typeof returnValue.next === "function" && typeof returnValue.throw === "function") { - returnValue = awaitIterator(returnValue); - } - } - }, zoneProps); - return (returnValue && typeof returnValue.then === "function" ? DexiePromise.resolve(returnValue).then((x) => trans.active ? x : rejection(new exceptions.PrematureCommit("Transaction committed too early. See http://bit.ly/2kdckMn"))) : promiseFollowed.then(() => returnValue)).then((x) => { - if (parentTransaction) - trans._resolve(); - return trans._completion.then(() => x); - }).catch((e) => { - trans._reject(e); - return rejection(e); - }); - }); -} -function pad(a, value, count) { - const result = isArray(a) ? a.slice() : [a]; - for (let i = 0; i < count; ++i) - result.push(value); - return result; -} -function createVirtualIndexMiddleware(down) { - return { - ...down, - table(tableName) { - const table = down.table(tableName); - const { schema } = table; - const indexLookup = {}; - const allVirtualIndexes = []; - function addVirtualIndexes(keyPath, keyTail, lowLevelIndex) { - const keyPathAlias = getKeyPathAlias(keyPath); - const indexList = indexLookup[keyPathAlias] = indexLookup[keyPathAlias] || []; - const keyLength = keyPath == null ? 0 : typeof keyPath === "string" ? 1 : keyPath.length; - const isVirtual = keyTail > 0; - const virtualIndex = { - ...lowLevelIndex, - isVirtual, - keyTail, - keyLength, - extractKey: getKeyExtractor(keyPath), - unique: !isVirtual && lowLevelIndex.unique - }; - indexList.push(virtualIndex); - if (!virtualIndex.isPrimaryKey) { - allVirtualIndexes.push(virtualIndex); - } - if (keyLength > 1) { - const virtualKeyPath = keyLength === 2 ? keyPath[0] : keyPath.slice(0, keyLength - 1); - addVirtualIndexes(virtualKeyPath, keyTail + 1, lowLevelIndex); - } - indexList.sort((a, b) => a.keyTail - b.keyTail); - return virtualIndex; - } - const primaryKey = addVirtualIndexes(schema.primaryKey.keyPath, 0, schema.primaryKey); - indexLookup[":id"] = [primaryKey]; - for (const index of schema.indexes) { - addVirtualIndexes(index.keyPath, 0, index); - } - function findBestIndex(keyPath) { - const result2 = indexLookup[getKeyPathAlias(keyPath)]; - return result2 && result2[0]; - } - function translateRange(range, keyTail) { - return { - type: range.type === 1 ? 2 : range.type, - lower: pad(range.lower, range.lowerOpen ? down.MAX_KEY : down.MIN_KEY, keyTail), - lowerOpen: true, - upper: pad(range.upper, range.upperOpen ? down.MIN_KEY : down.MAX_KEY, keyTail), - upperOpen: true - }; - } - function translateRequest(req) { - const index = req.query.index; - return index.isVirtual ? { - ...req, - query: { - index, - range: translateRange(req.query.range, index.keyTail) - } - } : req; - } - const result = { - ...table, - schema: { - ...schema, - primaryKey, - indexes: allVirtualIndexes, - getIndexByKeyPath: findBestIndex - }, - count(req) { - return table.count(translateRequest(req)); - }, - query(req) { - return table.query(translateRequest(req)); - }, - openCursor(req) { - const { keyTail, isVirtual, keyLength } = req.query.index; - if (!isVirtual) - return table.openCursor(req); - function createVirtualCursor(cursor) { - function _continue(key) { - key != null ? cursor.continue(pad(key, req.reverse ? down.MAX_KEY : down.MIN_KEY, keyTail)) : req.unique ? cursor.continue(cursor.key.slice(0, keyLength).concat(req.reverse ? down.MIN_KEY : down.MAX_KEY, keyTail)) : cursor.continue(); - } - const virtualCursor = Object.create(cursor, { - continue: { value: _continue }, - continuePrimaryKey: { - value(key, primaryKey2) { - cursor.continuePrimaryKey(pad(key, down.MAX_KEY, keyTail), primaryKey2); - } - }, - primaryKey: { - get() { - return cursor.primaryKey; - } - }, - key: { - get() { - const key = cursor.key; - return keyLength === 1 ? key[0] : key.slice(0, keyLength); - } - }, - value: { - get() { - return cursor.value; - } - } - }); - return virtualCursor; - } - return table.openCursor(translateRequest(req)).then((cursor) => cursor && createVirtualCursor(cursor)); - } - }; - return result; - } - }; -} -var virtualIndexMiddleware = { - stack: "dbcore", - name: "VirtualIndexMiddleware", - level: 1, - create: createVirtualIndexMiddleware -}; -function getObjectDiff(a, b, rv, prfx) { - rv = rv || {}; - prfx = prfx || ""; - keys(a).forEach((prop) => { - if (!hasOwn(b, prop)) { - rv[prfx + prop] = void 0; - } else { - var ap = a[prop], bp = b[prop]; - if (typeof ap === "object" && typeof bp === "object" && ap && bp) { - const apTypeName = toStringTag(ap); - const bpTypeName = toStringTag(bp); - if (apTypeName !== bpTypeName) { - rv[prfx + prop] = b[prop]; - } else if (apTypeName === "Object") { - getObjectDiff(ap, bp, rv, prfx + prop + "."); - } else if (ap !== bp) { - rv[prfx + prop] = b[prop]; - } - } else if (ap !== bp) - rv[prfx + prop] = b[prop]; - } - }); - keys(b).forEach((prop) => { - if (!hasOwn(a, prop)) { - rv[prfx + prop] = b[prop]; - } - }); - return rv; -} -function getEffectiveKeys(primaryKey, req) { - if (req.type === "delete") - return req.keys; - return req.keys || req.values.map(primaryKey.extractKey); -} -var hooksMiddleware = { - stack: "dbcore", - name: "HooksMiddleware", - level: 2, - create: (downCore) => ({ - ...downCore, - table(tableName) { - const downTable = downCore.table(tableName); - const { primaryKey } = downTable.schema; - const tableMiddleware = { - ...downTable, - mutate(req) { - const dxTrans = PSD.trans; - const { deleting, creating, updating } = dxTrans.table(tableName).hook; - switch (req.type) { - case "add": - if (creating.fire === nop) - break; - return dxTrans._promise("readwrite", () => addPutOrDelete(req), true); - case "put": - if (creating.fire === nop && updating.fire === nop) - break; - return dxTrans._promise("readwrite", () => addPutOrDelete(req), true); - case "delete": - if (deleting.fire === nop) - break; - return dxTrans._promise("readwrite", () => addPutOrDelete(req), true); - case "deleteRange": - if (deleting.fire === nop) - break; - return dxTrans._promise("readwrite", () => deleteRange(req), true); - } - return downTable.mutate(req); - function addPutOrDelete(req2) { - const dxTrans2 = PSD.trans; - const keys2 = req2.keys || getEffectiveKeys(primaryKey, req2); - if (!keys2) - throw new Error("Keys missing"); - req2 = req2.type === "add" || req2.type === "put" ? { ...req2, keys: keys2 } : { ...req2 }; - if (req2.type !== "delete") - req2.values = [...req2.values]; - if (req2.keys) - req2.keys = [...req2.keys]; - return getExistingValues(downTable, req2, keys2).then((existingValues) => { - const contexts = keys2.map((key, i) => { - const existingValue = existingValues[i]; - const ctx = { onerror: null, onsuccess: null }; - if (req2.type === "delete") { - deleting.fire.call(ctx, key, existingValue, dxTrans2); - } else if (req2.type === "add" || existingValue === void 0) { - const generatedPrimaryKey = creating.fire.call(ctx, key, req2.values[i], dxTrans2); - if (key == null && generatedPrimaryKey != null) { - key = generatedPrimaryKey; - req2.keys[i] = key; - if (!primaryKey.outbound) { - setByKeyPath(req2.values[i], primaryKey.keyPath, key); - } - } - } else { - const objectDiff = getObjectDiff(existingValue, req2.values[i]); - const additionalChanges = updating.fire.call(ctx, objectDiff, key, existingValue, dxTrans2); - if (additionalChanges) { - const requestedValue = req2.values[i]; - Object.keys(additionalChanges).forEach((keyPath) => { - if (hasOwn(requestedValue, keyPath)) { - requestedValue[keyPath] = additionalChanges[keyPath]; - } else { - setByKeyPath(requestedValue, keyPath, additionalChanges[keyPath]); - } - }); - } - } - return ctx; - }); - return downTable.mutate(req2).then(({ failures, results, numFailures, lastResult }) => { - for (let i = 0; i < keys2.length; ++i) { - const primKey = results ? results[i] : keys2[i]; - const ctx = contexts[i]; - if (primKey == null) { - ctx.onerror && ctx.onerror(failures[i]); - } else { - ctx.onsuccess && ctx.onsuccess( - req2.type === "put" && existingValues[i] ? req2.values[i] : primKey - ); - } - } - return { failures, results, numFailures, lastResult }; - }).catch((error) => { - contexts.forEach((ctx) => ctx.onerror && ctx.onerror(error)); - return Promise.reject(error); - }); - }); - } - function deleteRange(req2) { - return deleteNextChunk(req2.trans, req2.range, 1e4); - } - function deleteNextChunk(trans, range, limit) { - return downTable.query({ trans, values: false, query: { index: primaryKey, range }, limit }).then(({ result }) => { - return addPutOrDelete({ type: "delete", keys: result, trans }).then((res) => { - if (res.numFailures > 0) - return Promise.reject(res.failures[0]); - if (result.length < limit) { - return { failures: [], numFailures: 0, lastResult: void 0 }; - } else { - return deleteNextChunk(trans, { ...range, lower: result[result.length - 1], lowerOpen: true }, limit); - } - }); - }); - } - } - }; - return tableMiddleware; - } - }) -}; -function getExistingValues(table, req, effectiveKeys) { - return req.type === "add" ? Promise.resolve([]) : table.getMany({ trans: req.trans, keys: effectiveKeys, cache: "immutable" }); -} -function getFromTransactionCache(keys2, cache, clone) { - try { - if (!cache) - return null; - if (cache.keys.length < keys2.length) - return null; - const result = []; - for (let i = 0, j = 0; i < cache.keys.length && j < keys2.length; ++i) { - if (cmp(cache.keys[i], keys2[j]) !== 0) - continue; - result.push(clone ? deepClone(cache.values[i]) : cache.values[i]); - ++j; - } - return result.length === keys2.length ? result : null; - } catch (_a) { - return null; - } -} -var cacheExistingValuesMiddleware = { - stack: "dbcore", - level: -1, - create: (core) => { - return { - table: (tableName) => { - const table = core.table(tableName); - return { - ...table, - getMany: (req) => { - if (!req.cache) { - return table.getMany(req); - } - const cachedResult = getFromTransactionCache(req.keys, req.trans["_cache"], req.cache === "clone"); - if (cachedResult) { - return DexiePromise.resolve(cachedResult); - } - return table.getMany(req).then((res) => { - req.trans["_cache"] = { - keys: req.keys, - values: req.cache === "clone" ? deepClone(res) : res - }; - return res; - }); - }, - mutate: (req) => { - if (req.type !== "add") - req.trans["_cache"] = null; - return table.mutate(req); - } - }; - } - }; - } -}; -function isEmptyRange(node) { - return !("from" in node); -} -var RangeSet = function(fromOrTree, to) { - if (this) { - extend(this, arguments.length ? { d: 1, from: fromOrTree, to: arguments.length > 1 ? to : fromOrTree } : { d: 0 }); - } else { - const rv = new RangeSet(); - if (fromOrTree && "d" in fromOrTree) { - extend(rv, fromOrTree); - } - return rv; - } -}; -props(RangeSet.prototype, { - add(rangeSet) { - mergeRanges(this, rangeSet); - return this; - }, - addKey(key) { - addRange(this, key, key); - return this; - }, - addKeys(keys2) { - keys2.forEach((key) => addRange(this, key, key)); - return this; - }, - [iteratorSymbol]() { - return getRangeSetIterator(this); - } -}); -function addRange(target, from, to) { - const diff = cmp(from, to); - if (isNaN(diff)) - return; - if (diff > 0) - throw RangeError(); - if (isEmptyRange(target)) - return extend(target, { from, to, d: 1 }); - const left = target.l; - const right = target.r; - if (cmp(to, target.from) < 0) { - left ? addRange(left, from, to) : target.l = { from, to, d: 1, l: null, r: null }; - return rebalance(target); - } - if (cmp(from, target.to) > 0) { - right ? addRange(right, from, to) : target.r = { from, to, d: 1, l: null, r: null }; - return rebalance(target); - } - if (cmp(from, target.from) < 0) { - target.from = from; - target.l = null; - target.d = right ? right.d + 1 : 1; - } - if (cmp(to, target.to) > 0) { - target.to = to; - target.r = null; - target.d = target.l ? target.l.d + 1 : 1; - } - const rightWasCutOff = !target.r; - if (left && !target.l) { - mergeRanges(target, left); - } - if (right && rightWasCutOff) { - mergeRanges(target, right); - } -} -function mergeRanges(target, newSet) { - function _addRangeSet(target2, { from, to, l, r }) { - addRange(target2, from, to); - if (l) - _addRangeSet(target2, l); - if (r) - _addRangeSet(target2, r); - } - if (!isEmptyRange(newSet)) - _addRangeSet(target, newSet); -} -function rangesOverlap(rangeSet1, rangeSet2) { - const i1 = getRangeSetIterator(rangeSet2); - let nextResult1 = i1.next(); - if (nextResult1.done) - return false; - let a = nextResult1.value; - const i2 = getRangeSetIterator(rangeSet1); - let nextResult2 = i2.next(a.from); - let b = nextResult2.value; - while (!nextResult1.done && !nextResult2.done) { - if (cmp(b.from, a.to) <= 0 && cmp(b.to, a.from) >= 0) - return true; - cmp(a.from, b.from) < 0 ? a = (nextResult1 = i1.next(b.from)).value : b = (nextResult2 = i2.next(a.from)).value; - } - return false; -} -function getRangeSetIterator(node) { - let state = isEmptyRange(node) ? null : { s: 0, n: node }; - return { - next(key) { - const keyProvided = arguments.length > 0; - while (state) { - switch (state.s) { - case 0: - state.s = 1; - if (keyProvided) { - while (state.n.l && cmp(key, state.n.from) < 0) - state = { up: state, n: state.n.l, s: 1 }; - } else { - while (state.n.l) - state = { up: state, n: state.n.l, s: 1 }; - } - case 1: - state.s = 2; - if (!keyProvided || cmp(key, state.n.to) <= 0) - return { value: state.n, done: false }; - case 2: - if (state.n.r) { - state.s = 3; - state = { up: state, n: state.n.r, s: 0 }; - continue; - } - case 3: - state = state.up; - } - } - return { done: true }; - } - }; -} -function rebalance(target) { - var _a, _b; - const diff = (((_a = target.r) === null || _a === void 0 ? void 0 : _a.d) || 0) - (((_b = target.l) === null || _b === void 0 ? void 0 : _b.d) || 0); - const r = diff > 1 ? "r" : diff < -1 ? "l" : ""; - if (r) { - const l = r === "r" ? "l" : "r"; - const rootClone = { ...target }; - const oldRootRight = target[r]; - target.from = oldRootRight.from; - target.to = oldRootRight.to; - target[r] = oldRootRight[r]; - rootClone[r] = oldRootRight[l]; - target[l] = rootClone; - rootClone.d = computeDepth(rootClone); - } - target.d = computeDepth(target); -} -function computeDepth({ r, l }) { - return (r ? l ? Math.max(r.d, l.d) : r.d : l ? l.d : 0) + 1; -} -var observabilityMiddleware = { - stack: "dbcore", - level: 0, - create: (core) => { - const dbName = core.schema.name; - const FULL_RANGE = new RangeSet(core.MIN_KEY, core.MAX_KEY); - return { - ...core, - table: (tableName) => { - const table = core.table(tableName); - const { schema } = table; - const { primaryKey } = schema; - const { extractKey, outbound } = primaryKey; - const tableClone = { - ...table, - mutate: (req) => { - const trans = req.trans; - const mutatedParts = trans.mutatedParts || (trans.mutatedParts = {}); - const getRangeSet = (indexName) => { - const part = `idb://${dbName}/${tableName}/${indexName}`; - return mutatedParts[part] || (mutatedParts[part] = new RangeSet()); - }; - const pkRangeSet = getRangeSet(""); - const delsRangeSet = getRangeSet(":dels"); - const { type: type2 } = req; - let [keys2, newObjs] = req.type === "deleteRange" ? [req.range] : req.type === "delete" ? [req.keys] : req.values.length < 50 ? [[], req.values] : []; - const oldCache = req.trans["_cache"]; - return table.mutate(req).then((res) => { - if (isArray(keys2)) { - if (type2 !== "delete") - keys2 = res.results; - pkRangeSet.addKeys(keys2); - const oldObjs = getFromTransactionCache(keys2, oldCache); - if (!oldObjs && type2 !== "add") { - delsRangeSet.addKeys(keys2); - } - if (oldObjs || newObjs) { - trackAffectedIndexes(getRangeSet, schema, oldObjs, newObjs); - } - } else if (keys2) { - const range = { from: keys2.lower, to: keys2.upper }; - delsRangeSet.add(range); - pkRangeSet.add(range); - } else { - pkRangeSet.add(FULL_RANGE); - delsRangeSet.add(FULL_RANGE); - schema.indexes.forEach((idx) => getRangeSet(idx.name).add(FULL_RANGE)); - } - return res; - }); - } - }; - const getRange = ({ query: { index, range } }) => { - var _a, _b; - return [ - index, - new RangeSet((_a = range.lower) !== null && _a !== void 0 ? _a : core.MIN_KEY, (_b = range.upper) !== null && _b !== void 0 ? _b : core.MAX_KEY) - ]; - }; - const readSubscribers = { - get: (req) => [primaryKey, new RangeSet(req.key)], - getMany: (req) => [primaryKey, new RangeSet().addKeys(req.keys)], - count: getRange, - query: getRange, - openCursor: getRange - }; - keys(readSubscribers).forEach((method) => { - tableClone[method] = function(req) { - const { subscr } = PSD; - if (subscr) { - const getRangeSet = (indexName) => { - const part = `idb://${dbName}/${tableName}/${indexName}`; - return subscr[part] || (subscr[part] = new RangeSet()); - }; - const pkRangeSet = getRangeSet(""); - const delsRangeSet = getRangeSet(":dels"); - const [queriedIndex, queriedRanges] = readSubscribers[method](req); - getRangeSet(queriedIndex.name || "").add(queriedRanges); - if (!queriedIndex.isPrimaryKey) { - if (method === "count") { - delsRangeSet.add(FULL_RANGE); - } else { - const keysPromise = method === "query" && outbound && req.values && table.query({ - ...req, - values: false - }); - return table[method].apply(this, arguments).then((res) => { - if (method === "query") { - if (outbound && req.values) { - return keysPromise.then(({ result: resultingKeys }) => { - pkRangeSet.addKeys(resultingKeys); - return res; - }); - } - const pKeys = req.values ? res.result.map(extractKey) : res.result; - if (req.values) { - pkRangeSet.addKeys(pKeys); - } else { - delsRangeSet.addKeys(pKeys); - } - } else if (method === "openCursor") { - const cursor = res; - const wantValues = req.values; - return cursor && Object.create(cursor, { - key: { - get() { - delsRangeSet.addKey(cursor.primaryKey); - return cursor.key; - } - }, - primaryKey: { - get() { - const pkey = cursor.primaryKey; - delsRangeSet.addKey(pkey); - return pkey; - } - }, - value: { - get() { - wantValues && pkRangeSet.addKey(cursor.primaryKey); - return cursor.value; - } - } - }); - } - return res; - }); - } - } - } - return table[method].apply(this, arguments); - }; - }); - return tableClone; - } - }; - } -}; -function trackAffectedIndexes(getRangeSet, schema, oldObjs, newObjs) { - function addAffectedIndex(ix) { - const rangeSet = getRangeSet(ix.name || ""); - function extractKey(obj) { - return obj != null ? ix.extractKey(obj) : null; - } - const addKeyOrKeys = (key) => ix.multiEntry && isArray(key) ? key.forEach((key2) => rangeSet.addKey(key2)) : rangeSet.addKey(key); - (oldObjs || newObjs).forEach((_, i) => { - const oldKey = oldObjs && extractKey(oldObjs[i]); - const newKey = newObjs && extractKey(newObjs[i]); - if (cmp(oldKey, newKey) !== 0) { - if (oldKey != null) - addKeyOrKeys(oldKey); - if (newKey != null) - addKeyOrKeys(newKey); - } - }); - } - schema.indexes.forEach(addAffectedIndex); -} -var Dexie$1 = class _Dexie$1 { - constructor(name, options) { - this._middlewares = {}; - this.verno = 0; - const deps = _Dexie$1.dependencies; - this._options = options = { - addons: _Dexie$1.addons, - autoOpen: true, - indexedDB: deps.indexedDB, - IDBKeyRange: deps.IDBKeyRange, - ...options - }; - this._deps = { - indexedDB: options.indexedDB, - IDBKeyRange: options.IDBKeyRange - }; - const { addons } = options; - this._dbSchema = {}; - this._versions = []; - this._storeNames = []; - this._allTables = {}; - this.idbdb = null; - this._novip = this; - const state = { - dbOpenError: null, - isBeingOpened: false, - onReadyBeingFired: null, - openComplete: false, - dbReadyResolve: nop, - dbReadyPromise: null, - cancelOpen: nop, - openCanceller: null, - autoSchema: true, - PR1398_maxLoop: 3 - }; - state.dbReadyPromise = new DexiePromise((resolve) => { - state.dbReadyResolve = resolve; - }); - state.openCanceller = new DexiePromise((_, reject) => { - state.cancelOpen = reject; - }); - this._state = state; - this.name = name; - this.on = Events(this, "populate", "blocked", "versionchange", "close", { ready: [promisableChain, nop] }); - this.on.ready.subscribe = override(this.on.ready.subscribe, (subscribe) => { - return (subscriber, bSticky) => { - _Dexie$1.vip(() => { - const state2 = this._state; - if (state2.openComplete) { - if (!state2.dbOpenError) - DexiePromise.resolve().then(subscriber); - if (bSticky) - subscribe(subscriber); - } else if (state2.onReadyBeingFired) { - state2.onReadyBeingFired.push(subscriber); - if (bSticky) - subscribe(subscriber); - } else { - subscribe(subscriber); - const db = this; - if (!bSticky) - subscribe(function unsubscribe() { - db.on.ready.unsubscribe(subscriber); - db.on.ready.unsubscribe(unsubscribe); - }); - } - }); - }; - }); - this.Collection = createCollectionConstructor(this); - this.Table = createTableConstructor(this); - this.Transaction = createTransactionConstructor(this); - this.Version = createVersionConstructor(this); - this.WhereClause = createWhereClauseConstructor(this); - this.on("versionchange", (ev) => { - if (ev.newVersion > 0) - console.warn(`Another connection wants to upgrade database '${this.name}'. Closing db now to resume the upgrade.`); - else - console.warn(`Another connection wants to delete database '${this.name}'. Closing db now to resume the delete request.`); - this.close(); - }); - this.on("blocked", (ev) => { - if (!ev.newVersion || ev.newVersion < ev.oldVersion) - console.warn(`Dexie.delete('${this.name}') was blocked`); - else - console.warn(`Upgrade '${this.name}' blocked by other connection holding version ${ev.oldVersion / 10}`); - }); - this._maxKey = getMaxKey(options.IDBKeyRange); - this._createTransaction = (mode, storeNames, dbschema, parentTransaction) => new this.Transaction(mode, storeNames, dbschema, this._options.chromeTransactionDurability, parentTransaction); - this._fireOnBlocked = (ev) => { - this.on("blocked").fire(ev); - connections.filter((c) => c.name === this.name && c !== this && !c._state.vcFired).map((c) => c.on("versionchange").fire(ev)); - }; - this.use(virtualIndexMiddleware); - this.use(hooksMiddleware); - this.use(observabilityMiddleware); - this.use(cacheExistingValuesMiddleware); - this.vip = Object.create(this, { _vip: { value: true } }); - addons.forEach((addon) => addon(this)); - } - version(versionNumber) { - if (isNaN(versionNumber) || versionNumber < 0.1) - throw new exceptions.Type(`Given version is not a positive number`); - versionNumber = Math.round(versionNumber * 10) / 10; - if (this.idbdb || this._state.isBeingOpened) - throw new exceptions.Schema("Cannot add version when database is open"); - this.verno = Math.max(this.verno, versionNumber); - const versions = this._versions; - var versionInstance = versions.filter((v) => v._cfg.version === versionNumber)[0]; - if (versionInstance) - return versionInstance; - versionInstance = new this.Version(versionNumber); - versions.push(versionInstance); - versions.sort(lowerVersionFirst); - versionInstance.stores({}); - this._state.autoSchema = false; - return versionInstance; - } - _whenReady(fn) { - return this.idbdb && (this._state.openComplete || PSD.letThrough || this._vip) ? fn() : new DexiePromise((resolve, reject) => { - if (this._state.openComplete) { - return reject(new exceptions.DatabaseClosed(this._state.dbOpenError)); - } - if (!this._state.isBeingOpened) { - if (!this._options.autoOpen) { - reject(new exceptions.DatabaseClosed()); - return; - } - this.open().catch(nop); - } - this._state.dbReadyPromise.then(resolve, reject); - }).then(fn); - } - use({ stack, create, level, name }) { - if (name) - this.unuse({ stack, name }); - const middlewares = this._middlewares[stack] || (this._middlewares[stack] = []); - middlewares.push({ stack, create, level: level == null ? 10 : level, name }); - middlewares.sort((a, b) => a.level - b.level); - return this; - } - unuse({ stack, name, create }) { - if (stack && this._middlewares[stack]) { - this._middlewares[stack] = this._middlewares[stack].filter((mw) => create ? mw.create !== create : name ? mw.name !== name : false); - } - return this; - } - open() { - return dexieOpen(this); - } - _close() { - const state = this._state; - const idx = connections.indexOf(this); - if (idx >= 0) - connections.splice(idx, 1); - if (this.idbdb) { - try { - this.idbdb.close(); - } catch (e) { - } - this._novip.idbdb = null; - } - state.dbReadyPromise = new DexiePromise((resolve) => { - state.dbReadyResolve = resolve; - }); - state.openCanceller = new DexiePromise((_, reject) => { - state.cancelOpen = reject; - }); - } - close() { - this._close(); - const state = this._state; - this._options.autoOpen = false; - state.dbOpenError = new exceptions.DatabaseClosed(); - if (state.isBeingOpened) - state.cancelOpen(state.dbOpenError); - } - delete() { - const hasArguments = arguments.length > 0; - const state = this._state; - return new DexiePromise((resolve, reject) => { - const doDelete = () => { - this.close(); - var req = this._deps.indexedDB.deleteDatabase(this.name); - req.onsuccess = wrap(() => { - _onDatabaseDeleted(this._deps, this.name); - resolve(); - }); - req.onerror = eventRejectHandler(reject); - req.onblocked = this._fireOnBlocked; - }; - if (hasArguments) - throw new exceptions.InvalidArgument("Arguments not allowed in db.delete()"); - if (state.isBeingOpened) { - state.dbReadyPromise.then(doDelete); - } else { - doDelete(); - } - }); - } - backendDB() { - return this.idbdb; - } - isOpen() { - return this.idbdb !== null; - } - hasBeenClosed() { - const dbOpenError = this._state.dbOpenError; - return dbOpenError && dbOpenError.name === "DatabaseClosed"; - } - hasFailed() { - return this._state.dbOpenError !== null; - } - dynamicallyOpened() { - return this._state.autoSchema; - } - get tables() { - return keys(this._allTables).map((name) => this._allTables[name]); - } - transaction() { - const args = extractTransactionArgs.apply(this, arguments); - return this._transaction.apply(this, args); - } - _transaction(mode, tables, scopeFunc) { - let parentTransaction = PSD.trans; - if (!parentTransaction || parentTransaction.db !== this || mode.indexOf("!") !== -1) - parentTransaction = null; - const onlyIfCompatible = mode.indexOf("?") !== -1; - mode = mode.replace("!", "").replace("?", ""); - let idbMode, storeNames; - try { - storeNames = tables.map((table) => { - var storeName = table instanceof this.Table ? table.name : table; - if (typeof storeName !== "string") - throw new TypeError("Invalid table argument to Dexie.transaction(). Only Table or String are allowed"); - return storeName; - }); - if (mode == "r" || mode === READONLY) - idbMode = READONLY; - else if (mode == "rw" || mode == READWRITE) - idbMode = READWRITE; - else - throw new exceptions.InvalidArgument("Invalid transaction mode: " + mode); - if (parentTransaction) { - if (parentTransaction.mode === READONLY && idbMode === READWRITE) { - if (onlyIfCompatible) { - parentTransaction = null; - } else - throw new exceptions.SubTransaction("Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY"); - } - if (parentTransaction) { - storeNames.forEach((storeName) => { - if (parentTransaction && parentTransaction.storeNames.indexOf(storeName) === -1) { - if (onlyIfCompatible) { - parentTransaction = null; - } else - throw new exceptions.SubTransaction("Table " + storeName + " not included in parent transaction."); - } - }); - } - if (onlyIfCompatible && parentTransaction && !parentTransaction.active) { - parentTransaction = null; - } - } - } catch (e) { - return parentTransaction ? parentTransaction._promise(null, (_, reject) => { - reject(e); - }) : rejection(e); - } - const enterTransaction = enterTransactionScope.bind(null, this, idbMode, storeNames, parentTransaction, scopeFunc); - return parentTransaction ? parentTransaction._promise(idbMode, enterTransaction, "lock") : PSD.trans ? usePSD(PSD.transless, () => this._whenReady(enterTransaction)) : this._whenReady(enterTransaction); - } - table(tableName) { - if (!hasOwn(this._allTables, tableName)) { - throw new exceptions.InvalidTable(`Table ${tableName} does not exist`); - } - return this._allTables[tableName]; - } -}; -var symbolObservable = typeof Symbol !== "undefined" && "observable" in Symbol ? Symbol.observable : "@@observable"; -var Observable = class { - constructor(subscribe) { - this._subscribe = subscribe; - } - subscribe(x, error, complete) { - return this._subscribe(!x || typeof x === "function" ? { next: x, error, complete } : x); - } - [symbolObservable]() { - return this; - } -}; -function extendObservabilitySet(target, newSet) { - keys(newSet).forEach((part) => { - const rangeSet = target[part] || (target[part] = new RangeSet()); - mergeRanges(rangeSet, newSet[part]); - }); - return target; -} -function liveQuery(querier) { - let hasValue = false; - let currentValue = void 0; - const observable = new Observable((observer) => { - const scopeFuncIsAsync = isAsyncFunction(querier); - function execute(subscr) { - if (scopeFuncIsAsync) { - incrementExpectedAwaits(); - } - const exec = () => newScope(querier, { subscr, trans: null }); - const rv = PSD.trans ? usePSD(PSD.transless, exec) : exec(); - if (scopeFuncIsAsync) { - rv.then(decrementExpectedAwaits, decrementExpectedAwaits); - } - return rv; - } - let closed = false; - let accumMuts = {}; - let currentObs = {}; - const subscription = { - get closed() { - return closed; - }, - unsubscribe: () => { - closed = true; - globalEvents.storagemutated.unsubscribe(mutationListener); - } - }; - observer.start && observer.start(subscription); - let querying = false, startedListening = false; - function shouldNotify() { - return keys(currentObs).some((key) => accumMuts[key] && rangesOverlap(accumMuts[key], currentObs[key])); - } - const mutationListener = (parts) => { - extendObservabilitySet(accumMuts, parts); - if (shouldNotify()) { - doQuery(); - } - }; - const doQuery = () => { - if (querying || closed) - return; - accumMuts = {}; - const subscr = {}; - const ret = execute(subscr); - if (!startedListening) { - globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, mutationListener); - startedListening = true; - } - querying = true; - Promise.resolve(ret).then((result) => { - hasValue = true; - currentValue = result; - querying = false; - if (closed) - return; - if (shouldNotify()) { - doQuery(); - } else { - accumMuts = {}; - currentObs = subscr; - observer.next && observer.next(result); - } - }, (err) => { - querying = false; - hasValue = false; - observer.error && observer.error(err); - subscription.unsubscribe(); - }); - }; - doQuery(); - return subscription; - }); - observable.hasValue = () => hasValue; - observable.getValue = () => currentValue; - return observable; -} -var domDeps; -try { - domDeps = { - indexedDB: _global.indexedDB || _global.mozIndexedDB || _global.webkitIndexedDB || _global.msIndexedDB, - IDBKeyRange: _global.IDBKeyRange || _global.webkitIDBKeyRange - }; -} catch (e) { - domDeps = { indexedDB: null, IDBKeyRange: null }; -} -var Dexie = Dexie$1; -props(Dexie, { - ...fullNameExceptions, - delete(databaseName) { - const db = new Dexie(databaseName, { addons: [] }); - return db.delete(); - }, - exists(name) { - return new Dexie(name, { addons: [] }).open().then((db) => { - db.close(); - return true; - }).catch("NoSuchDatabaseError", () => false); - }, - getDatabaseNames(cb) { - try { - return getDatabaseNames(Dexie.dependencies).then(cb); - } catch (_a) { - return rejection(new exceptions.MissingAPI()); - } - }, - defineClass() { - function Class(content) { - extend(this, content); - } - return Class; - }, - ignoreTransaction(scopeFunc) { - return PSD.trans ? usePSD(PSD.transless, scopeFunc) : scopeFunc(); - }, - vip, - async: function(generatorFn) { - return function() { - try { - var rv = awaitIterator(generatorFn.apply(this, arguments)); - if (!rv || typeof rv.then !== "function") - return DexiePromise.resolve(rv); - return rv; - } catch (e) { - return rejection(e); - } - }; - }, - spawn: function(generatorFn, args, thiz) { - try { - var rv = awaitIterator(generatorFn.apply(thiz, args || [])); - if (!rv || typeof rv.then !== "function") - return DexiePromise.resolve(rv); - return rv; - } catch (e) { - return rejection(e); - } - }, - currentTransaction: { - get: () => PSD.trans || null - }, - waitFor: function(promiseOrFunction, optionalTimeout) { - const promise = DexiePromise.resolve(typeof promiseOrFunction === "function" ? Dexie.ignoreTransaction(promiseOrFunction) : promiseOrFunction).timeout(optionalTimeout || 6e4); - return PSD.trans ? PSD.trans.waitFor(promise) : promise; - }, - Promise: DexiePromise, - debug: { - get: () => debug, - set: (value) => { - setDebug(value, value === "dexie" ? () => true : dexieStackFrameFilter); - } - }, - derive, - extend, - props, - override, - Events, - on: globalEvents, - liveQuery, - extendObservabilitySet, - getByKeyPath, - setByKeyPath, - delByKeyPath, - shallowClone, - deepClone, - getObjectDiff, - cmp, - asap: asap$1, - minKey, - addons: [], - connections, - errnames, - dependencies: domDeps, - semVer: DEXIE_VERSION, - version: DEXIE_VERSION.split(".").map((n) => parseInt(n)).reduce((p, c, i) => p + c / Math.pow(10, i * 2)) -}); -Dexie.maxKey = getMaxKey(Dexie.dependencies.IDBKeyRange); -if (typeof dispatchEvent !== "undefined" && typeof addEventListener !== "undefined") { - globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, (updatedParts) => { - if (!propagatingLocally) { - let event; - if (isIEOrEdge) { - event = document.createEvent("CustomEvent"); - event.initCustomEvent(STORAGE_MUTATED_DOM_EVENT_NAME, true, true, updatedParts); - } else { - event = new CustomEvent(STORAGE_MUTATED_DOM_EVENT_NAME, { - detail: updatedParts - }); - } - propagatingLocally = true; - dispatchEvent(event); - propagatingLocally = false; - } - }); - addEventListener(STORAGE_MUTATED_DOM_EVENT_NAME, ({ detail }) => { - if (!propagatingLocally) { - propagateLocally(detail); - } - }); -} -function propagateLocally(updateParts) { - let wasMe = propagatingLocally; - try { - propagatingLocally = true; - globalEvents.storagemutated.fire(updateParts); - } finally { - propagatingLocally = wasMe; - } -} -var propagatingLocally = false; -if (typeof BroadcastChannel !== "undefined") { - const bc = new BroadcastChannel(STORAGE_MUTATED_DOM_EVENT_NAME); - if (typeof bc.unref === "function") { - bc.unref(); - } - globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, (changedParts) => { - if (!propagatingLocally) { - bc.postMessage(changedParts); - } - }); - bc.onmessage = (ev) => { - if (ev.data) - propagateLocally(ev.data); - }; -} else if (typeof self !== "undefined" && typeof navigator !== "undefined") { - globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, (changedParts) => { - try { - if (!propagatingLocally) { - if (typeof localStorage !== "undefined") { - localStorage.setItem(STORAGE_MUTATED_DOM_EVENT_NAME, JSON.stringify({ - trig: Math.random(), - changedParts - })); - } - if (typeof self["clients"] === "object") { - [...self["clients"].matchAll({ includeUncontrolled: true })].forEach((client) => client.postMessage({ - type: STORAGE_MUTATED_DOM_EVENT_NAME, - changedParts - })); - } - } - } catch (_a) { - } - }); - if (typeof addEventListener !== "undefined") { - addEventListener("storage", (ev) => { - if (ev.key === STORAGE_MUTATED_DOM_EVENT_NAME) { - const data = JSON.parse(ev.newValue); - if (data) - propagateLocally(data.changedParts); - } - }); - } - const swContainer = self.document && navigator.serviceWorker; - if (swContainer) { - swContainer.addEventListener("message", propagateMessageLocally); - } -} -function propagateMessageLocally({ data }) { - if (data && data.type === STORAGE_MUTATED_DOM_EVENT_NAME) { - propagateLocally(data.changedParts); - } -} -DexiePromise.rejectionMapper = mapError; -setDebug(debug, dexieStackFrameFilter); - -// node_modules/dexie-export-import/dist/dexie-export-import.mjs -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} -function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { - if (t[0] & 1) throw t[1]; - return t[1]; - }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { - return this; - }), g; - function verb(n) { - return function(v) { - return step([n, v]); - }; - } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: - case 1: - t = op; - break; - case 4: - _.label++; - return { value: op[1], done: false }; - case 5: - _.label++; - y = op[1]; - op = [0]; - continue; - case 7: - op = _.ops.pop(); - _.trys.pop(); - continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { - _ = 0; - continue; - } - if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { - _.label = op[1]; - break; - } - if (op[0] === 6 && _.label < t[1]) { - _.label = t[1]; - t = op; - break; - } - if (t && _.label < t[2]) { - _.label = t[2]; - _.ops.push(op); - break; - } - if (t[2]) _.ops.pop(); - _.trys.pop(); - continue; - } - op = body.call(thisArg, _); - } catch (e) { - op = [6, e]; - y = 0; - } finally { - f = t = 0; - } - if (op[0] & 5) throw op[1]; - return { value: op[0] ? op[1] : void 0, done: true }; - } -} -function getSchemaString(table) { - var primKeyAndIndexes = [table.schema.primKey].concat(table.schema.indexes); - return primKeyAndIndexes.map(function(index) { - return index.src; - }).join(","); -} -function extractDbSchema(exportedDb) { - var schema = {}; - for (var _i = 0, _a = exportedDb.tables; _i < _a.length; _i++) { - var table = _a[_i]; - schema[table.name] = table.schema; - } - return schema; -} -function readBlobAsync(blob, type2) { - return new Promise(function(resolve, reject) { - var reader = new FileReader(); - reader.onabort = function(ev) { - return reject(new Error("file read aborted")); - }; - reader.onerror = function(ev) { - return reject(ev.target.error); - }; - reader.onload = function(ev) { - return resolve(ev.target.result); - }; - if (type2 === "binary") - reader.readAsArrayBuffer(blob); - else - reader.readAsText(blob); - }); -} -function readBlobSync(blob, type2) { - if (typeof FileReaderSync === "undefined") { - throw new Error("FileReaderSync missing. Reading blobs synchronously requires code to run from within a web worker. Use TSON.encapsulateAsync() to do it from the main thread."); - } - var reader = new FileReaderSync(); - var data = type2 === "binary" ? reader.readAsArrayBuffer(blob) : reader.readAsText(blob); - return data; -} -var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; -function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; -} -var typeson = createCommonjsModule(function(module, exports) { - (function(global2, factory) { - module.exports = factory(); - })(commonjsGlobal, function() { - function _typeof(obj) { - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function(obj2) { - return typeof obj2; - }; - } else { - _typeof = function(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - function _asyncToGenerator(fn) { - return function() { - var self2 = this, args = arguments; - return new Promise(function(resolve, reject) { - var gen = fn.apply(self2, args); - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - _next(void 0); - }); - }; - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props2) { - for (var i = 0; i < props2.length; i++) { - var descriptor = props2[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - return obj; - } - function ownKeys(object, enumerableOnly) { - var keys3 = Object.keys(object); - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(object); - if (enumerableOnly) symbols = symbols.filter(function(sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - }); - keys3.push.apply(keys3, symbols); - } - return keys3; - } - function _objectSpread2(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - if (i % 2) { - ownKeys(Object(source), true).forEach(function(key) { - _defineProperty(target, key, source[key]); - }); - } else if (Object.getOwnPropertyDescriptors) { - Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); - } else { - ownKeys(Object(source)).forEach(function(key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); - } - } - return target; - } - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) { - for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; - return arr2; - } - } - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - function _iterableToArray(iter2) { - if (Symbol.iterator in Object(iter2) || Object.prototype.toString.call(iter2) === "[object Arguments]") return Array.from(iter2); - } - function _iterableToArrayLimit(arr, i) { - if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { - return; - } - var _arr = []; - var _n = true; - var _d = false; - var _e = void 0; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance"); - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); - } - var TypesonPromise = function TypesonPromise2(f) { - _classCallCheck(this, TypesonPromise2); - this.p = new Promise(f); - }; - TypesonPromise.__typeson__type__ = "TypesonPromise"; - if (typeof Symbol !== "undefined") { - TypesonPromise.prototype[Symbol.toStringTag] = "TypesonPromise"; - } - TypesonPromise.prototype.then = function(onFulfilled, onRejected) { - var _this = this; - return new TypesonPromise(function(typesonResolve, typesonReject) { - _this.p.then(function(res) { - typesonResolve(onFulfilled ? onFulfilled(res) : res); - })["catch"](function(res) { - return onRejected ? onRejected(res) : Promise.reject(res); - }).then(typesonResolve, typesonReject); - }); - }; - TypesonPromise.prototype["catch"] = function(onRejected) { - return this.then(null, onRejected); - }; - TypesonPromise.resolve = function(v) { - return new TypesonPromise(function(typesonResolve) { - typesonResolve(v); - }); - }; - TypesonPromise.reject = function(v) { - return new TypesonPromise(function(typesonResolve, typesonReject) { - typesonReject(v); - }); - }; - ["all", "race"].forEach(function(meth) { - TypesonPromise[meth] = function(promArr) { - return new TypesonPromise(function(typesonResolve, typesonReject) { - Promise[meth](promArr.map(function(prom) { - return prom && prom.constructor && prom.constructor.__typeson__type__ === "TypesonPromise" ? prom.p : prom; - })).then(typesonResolve, typesonReject); - }); - }; - }); - var _ref = {}, toStr = _ref.toString, hasOwn2 = {}.hasOwnProperty, getProto2 = Object.getPrototypeOf, fnToString = hasOwn2.toString; - function isThenable(v, catchCheck) { - return isObject(v) && typeof v.then === "function" && (!catchCheck || typeof v["catch"] === "function"); - } - function toStringTag2(val) { - return toStr.call(val).slice(8, -1); - } - function hasConstructorOf(a, b) { - if (!a || _typeof(a) !== "object") { - return false; - } - var proto = getProto2(a); - if (!proto) { - return b === null; - } - var Ctor = hasOwn2.call(proto, "constructor") && proto.constructor; - if (typeof Ctor !== "function") { - return b === null; - } - if (b === Ctor) { - return true; - } - if (b !== null && fnToString.call(Ctor) === fnToString.call(b)) { - return true; - } - if (typeof b === "function" && typeof Ctor.__typeson__type__ === "string" && Ctor.__typeson__type__ === b.__typeson__type__) { - return true; - } - return false; - } - function isPlainObject(val) { - if (!val || toStringTag2(val) !== "Object") { - return false; - } - var proto = getProto2(val); - if (!proto) { - return true; - } - return hasConstructorOf(val, Object); - } - function isUserObject(val) { - if (!val || toStringTag2(val) !== "Object") { - return false; - } - var proto = getProto2(val); - if (!proto) { - return true; - } - return hasConstructorOf(val, Object) || isUserObject(proto); - } - function isObject(v) { - return v && _typeof(v) === "object"; - } - function escapeKeyPathComponent(keyPathComponent) { - return keyPathComponent.replace(/~/g, "~0").replace(/\./g, "~1"); - } - function unescapeKeyPathComponent(keyPathComponent) { - return keyPathComponent.replace(/~1/g, ".").replace(/~0/g, "~"); - } - function getByKeyPath2(obj, keyPath) { - if (keyPath === "") { - return obj; - } - var period = keyPath.indexOf("."); - if (period > -1) { - var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))]; - return innerObj === void 0 ? void 0 : getByKeyPath2(innerObj, keyPath.slice(period + 1)); - } - return obj[unescapeKeyPathComponent(keyPath)]; - } - function setAtKeyPath(obj, keyPath, value) { - if (keyPath === "") { - return value; - } - var period = keyPath.indexOf("."); - if (period > -1) { - var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))]; - return setAtKeyPath(innerObj, keyPath.slice(period + 1), value); - } - obj[unescapeKeyPathComponent(keyPath)] = value; - return obj; - } - function getJSONType(value) { - return value === null ? "null" : Array.isArray(value) ? "array" : _typeof(value); - } - var keys2 = Object.keys, isArray2 = Array.isArray, hasOwn$1 = {}.hasOwnProperty, internalStateObjPropsToIgnore = ["type", "replaced", "iterateIn", "iterateUnsetNumeric"]; - function nestedPathsFirst(a, b) { - if (a.keypath === "") { - return -1; - } - var as = a.keypath.match(/\./g) || 0; - var bs = b.keypath.match(/\./g) || 0; - if (as) { - as = as.length; - } - if (bs) { - bs = bs.length; - } - return as > bs ? -1 : as < bs ? 1 : a.keypath < b.keypath ? -1 : a.keypath > b.keypath; - } - var Typeson = /* @__PURE__ */ function() { - function Typeson2(options) { - _classCallCheck(this, Typeson2); - this.options = options; - this.plainObjectReplacers = []; - this.nonplainObjectReplacers = []; - this.revivers = {}; - this.types = {}; - } - _createClass(Typeson2, [{ - key: "stringify", - value: function stringify(obj, replacer, space, opts) { - opts = _objectSpread2({}, this.options, {}, opts, { - stringification: true - }); - var encapsulated = this.encapsulate(obj, null, opts); - if (isArray2(encapsulated)) { - return JSON.stringify(encapsulated[0], replacer, space); - } - return encapsulated.then(function(res) { - return JSON.stringify(res, replacer, space); - }); - } - /** - * Also sync but throws on non-sync result. - * @param {Any} obj - * @param {JSONReplacer|string[]} replacer - * @param {number|string} space - * @param {object} opts - * @returns {string} - */ - }, { - key: "stringifySync", - value: function stringifySync(obj, replacer, space, opts) { - return this.stringify(obj, replacer, space, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: true - })); - } - /** - * - * @param {Any} obj - * @param {JSONReplacer|string[]} replacer - * @param {number|string} space - * @param {object} opts - * @returns {Promise} - */ - }, { - key: "stringifyAsync", - value: function stringifyAsync(obj, replacer, space, opts) { - return this.stringify(obj, replacer, space, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: false - })); - } - /** - * Parse Typeson back into an obejct. - * Initial arguments works identical to those of `JSON.parse()`. - * @param {string} text - * @param {function} reviver This JSON reviver has nothing to do with - * our revivers. - * @param {object} opts - * @returns {external:JSON} - */ - }, { - key: "parse", - value: function parse(text, reviver, opts) { - opts = _objectSpread2({}, this.options, {}, opts, { - parse: true - }); - return this.revive(JSON.parse(text, reviver), opts); - } - /** - * Also sync but throws on non-sync result. - * @param {string} text - * @param {function} reviver This JSON reviver has nothing to do with - * our revivers. - * @param {object} opts - * @returns {external:JSON} - */ - }, { - key: "parseSync", - value: function parseSync(text, reviver, opts) { - return this.parse(text, reviver, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: true - })); - } - /** - * @param {string} text - * @param {function} reviver This JSON reviver has nothing to do with - * our revivers. - * @param {object} opts - * @returns {Promise} Resolves to `external:JSON` - */ - }, { - key: "parseAsync", - value: function parseAsync(text, reviver, opts) { - return this.parse(text, reviver, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: false - })); - } - /** - * - * @param {Any} obj - * @param {object} stateObj - * @param {object} [opts={}] - * @returns {string[]|false} - */ - }, { - key: "specialTypeNames", - value: function specialTypeNames(obj, stateObj) { - var opts = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; - opts.returnTypeNames = true; - return this.encapsulate(obj, stateObj, opts); - } - /** - * - * @param {Any} obj - * @param {PlainObject} stateObj - * @param {PlainObject} [opts={}] - * @returns {Promise|GenericArray|PlainObject|string|false} - */ - }, { - key: "rootTypeName", - value: function rootTypeName(obj, stateObj) { - var opts = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; - opts.iterateNone = true; - return this.encapsulate(obj, stateObj, opts); - } - /** - * Encapsulate a complex object into a plain Object by replacing - * registered types with plain objects representing the types data. - * - * This method is used internally by `Typeson.stringify()`. - * @param {Any} obj - Object to encapsulate. - * @param {PlainObject} stateObj - * @param {PlainObject} opts - * @returns {Promise|GenericArray|PlainObject|string|false} - */ - }, { - key: "encapsulate", - value: function encapsulate(obj, stateObj, opts) { - opts = _objectSpread2({ - sync: true - }, this.options, {}, opts); - var _opts = opts, sync = _opts.sync; - var that = this, types = {}, refObjs = [], refKeys = [], promisesDataRoot = []; - var cyclic = "cyclic" in opts ? opts.cyclic : true; - var _opts2 = opts, encapsulateObserver = _opts2.encapsulateObserver; - var ret = _encapsulate("", obj, cyclic, stateObj || {}, promisesDataRoot); - function finish(ret2) { - var typeNames = Object.values(types); - if (opts.iterateNone) { - if (typeNames.length) { - return typeNames[0]; - } - return Typeson2.getJSONType(ret2); - } - if (typeNames.length) { - if (opts.returnTypeNames) { - return _toConsumableArray(new Set(typeNames)); - } - if (!ret2 || !isPlainObject(ret2) || // Also need to handle if this is an object with its - // own `$types` property (to avoid ambiguity) - hasOwn$1.call(ret2, "$types")) { - ret2 = { - $: ret2, - $types: { - $: types - } - }; - } else { - ret2.$types = types; - } - } else if (isObject(ret2) && hasOwn$1.call(ret2, "$types")) { - ret2 = { - $: ret2, - $types: true - }; - } - if (opts.returnTypeNames) { - return false; - } - return ret2; - } - function checkPromises(_x, _x2) { - return _checkPromises.apply(this, arguments); - } - function _checkPromises() { - _checkPromises = _asyncToGenerator( - /* @__PURE__ */ regeneratorRuntime.mark(function _callee2(ret2, promisesData) { - var promResults; - return regeneratorRuntime.wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - _context2.next = 2; - return Promise.all(promisesData.map(function(pd) { - return pd[1].p; - })); - case 2: - promResults = _context2.sent; - _context2.next = 5; - return Promise.all(promResults.map( - /* @__PURE__ */ function() { - var _ref2 = _asyncToGenerator( - /* @__PURE__ */ regeneratorRuntime.mark(function _callee(promResult) { - var newPromisesData, _promisesData$splice, _promisesData$splice2, prData, _prData, keyPath, cyclic2, stateObj2, parentObj, key, detectedType, encaps, isTypesonPromise, encaps2; - return regeneratorRuntime.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - newPromisesData = []; - _promisesData$splice = promisesData.splice(0, 1), _promisesData$splice2 = _slicedToArray(_promisesData$splice, 1), prData = _promisesData$splice2[0]; - _prData = _slicedToArray(prData, 7), keyPath = _prData[0], cyclic2 = _prData[2], stateObj2 = _prData[3], parentObj = _prData[4], key = _prData[5], detectedType = _prData[6]; - encaps = _encapsulate(keyPath, promResult, cyclic2, stateObj2, newPromisesData, true, detectedType); - isTypesonPromise = hasConstructorOf(encaps, TypesonPromise); - if (!(keyPath && isTypesonPromise)) { - _context.next = 11; - break; - } - _context.next = 8; - return encaps.p; - case 8: - encaps2 = _context.sent; - parentObj[key] = encaps2; - return _context.abrupt("return", checkPromises(ret2, newPromisesData)); - case 11: - if (keyPath) { - parentObj[key] = encaps; - } else if (isTypesonPromise) { - ret2 = encaps.p; - } else { - ret2 = encaps; - } - return _context.abrupt("return", checkPromises(ret2, newPromisesData)); - case 13: - case "end": - return _context.stop(); - } - } - }, _callee); - }) - ); - return function(_x3) { - return _ref2.apply(this, arguments); - }; - }() - )); - case 5: - return _context2.abrupt("return", ret2); - case 6: - case "end": - return _context2.stop(); - } - } - }, _callee2); - }) - ); - return _checkPromises.apply(this, arguments); - } - function _adaptBuiltinStateObjectProperties(stateObj2, ownKeysObj, cb) { - Object.assign(stateObj2, ownKeysObj); - var vals = internalStateObjPropsToIgnore.map(function(prop) { - var tmp = stateObj2[prop]; - delete stateObj2[prop]; - return tmp; - }); - cb(); - internalStateObjPropsToIgnore.forEach(function(prop, i) { - stateObj2[prop] = vals[i]; - }); - } - function _encapsulate(keypath, value, cyclic2, stateObj2, promisesData, resolvingTypesonPromise, detectedType) { - var ret2; - var observerData = {}; - var $typeof = _typeof(value); - var runObserver = encapsulateObserver ? function(obj2) { - var type2 = detectedType || stateObj2.type || Typeson2.getJSONType(value); - encapsulateObserver(Object.assign(obj2 || observerData, { - keypath, - value, - cyclic: cyclic2, - stateObj: stateObj2, - promisesData, - resolvingTypesonPromise, - awaitingTypesonPromise: hasConstructorOf(value, TypesonPromise) - }, { - type: type2 - })); - } : null; - if (["string", "boolean", "number", "undefined"].includes($typeof)) { - if (value === void 0 || $typeof === "number" && (isNaN(value) || value === -Infinity || value === Infinity)) { - if (stateObj2.replaced) { - ret2 = value; - } else { - ret2 = replace(keypath, value, stateObj2, promisesData, false, resolvingTypesonPromise, runObserver); - } - if (ret2 !== value) { - observerData = { - replaced: ret2 - }; - } - } else { - ret2 = value; - } - if (runObserver) { - runObserver(); - } - return ret2; - } - if (value === null) { - if (runObserver) { - runObserver(); - } - return value; - } - if (cyclic2 && !stateObj2.iterateIn && !stateObj2.iterateUnsetNumeric && value && _typeof(value) === "object") { - var refIndex = refObjs.indexOf(value); - if (refIndex < 0) { - if (cyclic2 === true) { - refObjs.push(value); - refKeys.push(keypath); - } - } else { - types[keypath] = "#"; - if (runObserver) { - runObserver({ - cyclicKeypath: refKeys[refIndex] - }); - } - return "#" + refKeys[refIndex]; - } - } - var isPlainObj = isPlainObject(value); - var isArr = isArray2(value); - var replaced = ( - // Running replace will cause infinite loop as will test - // positive again - (isPlainObj || isArr) && (!that.plainObjectReplacers.length || stateObj2.replaced) || stateObj2.iterateIn ? ( - // Optimization: if plain object and no plain-object - // replacers, don't try finding a replacer - value - ) : replace(keypath, value, stateObj2, promisesData, isPlainObj || isArr, null, runObserver) - ); - var clone; - if (replaced !== value) { - ret2 = replaced; - observerData = { - replaced - }; - } else { - if (keypath === "" && hasConstructorOf(value, TypesonPromise)) { - promisesData.push([keypath, value, cyclic2, stateObj2, void 0, void 0, stateObj2.type]); - ret2 = value; - } else if (isArr && stateObj2.iterateIn !== "object" || stateObj2.iterateIn === "array") { - clone = new Array(value.length); - observerData = { - clone - }; - } else if (!["function", "symbol"].includes(_typeof(value)) && !("toJSON" in value) && !hasConstructorOf(value, TypesonPromise) && !hasConstructorOf(value, Promise) && !hasConstructorOf(value, ArrayBuffer) || isPlainObj || stateObj2.iterateIn === "object") { - clone = {}; - if (stateObj2.addLength) { - clone.length = value.length; - } - observerData = { - clone - }; - } else { - ret2 = value; - } - } - if (runObserver) { - runObserver(); - } - if (opts.iterateNone) { - return clone || ret2; - } - if (!clone) { - return ret2; - } - if (stateObj2.iterateIn) { - var _loop = function _loop3(key2) { - var ownKeysObj = { - ownKeys: hasOwn$1.call(value, key2) - }; - _adaptBuiltinStateObjectProperties(stateObj2, ownKeysObj, function() { - var kp = keypath + (keypath ? "." : "") + escapeKeyPathComponent(key2); - var val = _encapsulate(kp, value[key2], Boolean(cyclic2), stateObj2, promisesData, resolvingTypesonPromise); - if (hasConstructorOf(val, TypesonPromise)) { - promisesData.push([kp, val, Boolean(cyclic2), stateObj2, clone, key2, stateObj2.type]); - } else if (val !== void 0) { - clone[key2] = val; - } - }); - }; - for (var key in value) { - _loop(key); - } - if (runObserver) { - runObserver({ - endIterateIn: true, - end: true - }); - } - } else { - keys2(value).forEach(function(key2) { - var kp = keypath + (keypath ? "." : "") + escapeKeyPathComponent(key2); - var ownKeysObj = { - ownKeys: true - }; - _adaptBuiltinStateObjectProperties(stateObj2, ownKeysObj, function() { - var val = _encapsulate(kp, value[key2], Boolean(cyclic2), stateObj2, promisesData, resolvingTypesonPromise); - if (hasConstructorOf(val, TypesonPromise)) { - promisesData.push([kp, val, Boolean(cyclic2), stateObj2, clone, key2, stateObj2.type]); - } else if (val !== void 0) { - clone[key2] = val; - } - }); - }); - if (runObserver) { - runObserver({ - endIterateOwn: true, - end: true - }); - } - } - if (stateObj2.iterateUnsetNumeric) { - var vl = value.length; - var _loop2 = function _loop22(i2) { - if (!(i2 in value)) { - var kp = keypath + (keypath ? "." : "") + i2; - var ownKeysObj = { - ownKeys: false - }; - _adaptBuiltinStateObjectProperties(stateObj2, ownKeysObj, function() { - var val = _encapsulate(kp, void 0, Boolean(cyclic2), stateObj2, promisesData, resolvingTypesonPromise); - if (hasConstructorOf(val, TypesonPromise)) { - promisesData.push([kp, val, Boolean(cyclic2), stateObj2, clone, i2, stateObj2.type]); - } else if (val !== void 0) { - clone[i2] = val; - } - }); - } - }; - for (var i = 0; i < vl; i++) { - _loop2(i); - } - if (runObserver) { - runObserver({ - endIterateUnsetNumeric: true, - end: true - }); - } - } - return clone; - } - function replace(keypath, value, stateObj2, promisesData, plainObject, resolvingTypesonPromise, runObserver) { - var replacers = plainObject ? that.plainObjectReplacers : that.nonplainObjectReplacers; - var i = replacers.length; - while (i--) { - var replacer = replacers[i]; - if (replacer.test(value, stateObj2)) { - var type2 = replacer.type; - if (that.revivers[type2]) { - var existing = types[keypath]; - types[keypath] = existing ? [type2].concat(existing) : type2; - } - Object.assign(stateObj2, { - type: type2, - replaced: true - }); - if ((sync || !replacer.replaceAsync) && !replacer.replace) { - if (runObserver) { - runObserver({ - typeDetected: true - }); - } - return _encapsulate(keypath, value, cyclic && "readonly", stateObj2, promisesData, resolvingTypesonPromise, type2); - } - if (runObserver) { - runObserver({ - replacing: true - }); - } - var replaceMethod = sync || !replacer.replaceAsync ? "replace" : "replaceAsync"; - return _encapsulate(keypath, replacer[replaceMethod](value, stateObj2), cyclic && "readonly", stateObj2, promisesData, resolvingTypesonPromise, type2); - } - } - return value; - } - return promisesDataRoot.length ? sync && opts.throwOnBadSyncType ? function() { - throw new TypeError("Sync method requested but async result obtained"); - }() : Promise.resolve(checkPromises(ret, promisesDataRoot)).then(finish) : !sync && opts.throwOnBadSyncType ? function() { - throw new TypeError("Async method requested but sync result obtained"); - }() : opts.stringification && sync ? [finish(ret)] : sync ? finish(ret) : Promise.resolve(finish(ret)); - } - /** - * Also sync but throws on non-sync result. - * @param {*} obj - * @param {object} stateObj - * @param {object} opts - * @returns {*} - */ - }, { - key: "encapsulateSync", - value: function encapsulateSync(obj, stateObj, opts) { - return this.encapsulate(obj, stateObj, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: true - })); - } - /** - * @param {*} obj - * @param {object} stateObj - * @param {object} opts - * @returns {*} - */ - }, { - key: "encapsulateAsync", - value: function encapsulateAsync(obj, stateObj, opts) { - return this.encapsulate(obj, stateObj, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: false - })); - } - /** - * Revive an encapsulated object. - * This method is used internally by `Typeson.parse()`. - * @param {object} obj - Object to revive. If it has `$types` member, the - * properties that are listed there will be replaced with its true type - * instead of just plain objects. - * @param {object} opts - * @throws TypeError If mismatch between sync/async type and result - * @returns {Promise|*} If async, returns a Promise that resolves to `*` - */ - }, { - key: "revive", - value: function revive(obj, opts) { - var types = obj && obj.$types; - if (!types) { - return obj; - } - if (types === true) { - return obj.$; - } - opts = _objectSpread2({ - sync: true - }, this.options, {}, opts); - var _opts3 = opts, sync = _opts3.sync; - var keyPathResolutions = []; - var stateObj = {}; - var ignore$Types = true; - if (types.$ && isPlainObject(types.$)) { - obj = obj.$; - types = types.$; - ignore$Types = false; - } - var that = this; - function executeReviver(type2, val) { - var _ref2 = that.revivers[type2] || [], _ref3 = _slicedToArray(_ref2, 1), reviver = _ref3[0]; - if (!reviver) { - throw new Error("Unregistered type: " + type2); - } - if (sync && !("revive" in reviver)) { - return val; - } - return reviver[sync && reviver.revive ? "revive" : !sync && reviver.reviveAsync ? "reviveAsync" : "revive"](val, stateObj); - } - function revivePlainObjects() { - var plainObjectTypes = []; - Object.entries(types).forEach(function(_ref4) { - var _ref5 = _slicedToArray(_ref4, 2), keypath = _ref5[0], type2 = _ref5[1]; - if (type2 === "#") { - return; - } - [].concat(type2).forEach(function(type3) { - var _ref6 = that.revivers[type3] || [null, {}], _ref7 = _slicedToArray(_ref6, 2), plain = _ref7[1].plain; - if (!plain) { - return; - } - plainObjectTypes.push({ - keypath, - type: type3 - }); - delete types[keypath]; - }); - }); - if (!plainObjectTypes.length) { - return void 0; - } - return plainObjectTypes.sort(nestedPathsFirst).reduce( - function reducer(possibleTypesonPromise2, _ref8) { - var keypath = _ref8.keypath, type2 = _ref8.type; - if (isThenable(possibleTypesonPromise2)) { - return possibleTypesonPromise2.then(function(val2) { - return reducer(val2, { - keypath, - type: type2 - }); - }); - } - var val = getByKeyPath2(obj, keypath); - val = executeReviver(type2, val); - if (hasConstructorOf(val, TypesonPromise)) { - return val.then(function(v) { - var newVal2 = setAtKeyPath(obj, keypath, v); - if (newVal2 === v) { - obj = newVal2; - } - return void 0; - }); - } - var newVal = setAtKeyPath(obj, keypath, val); - if (newVal === val) { - obj = newVal; - } - return void 0; - }, - void 0 - // This argument must be explicit - ); - } - var revivalPromises = []; - function _revive(keypath, value, target, clone, key) { - if (ignore$Types && keypath === "$types") { - return void 0; - } - var type2 = types[keypath]; - var isArr = isArray2(value); - if (isArr || isPlainObject(value)) { - var _clone = isArr ? new Array(value.length) : {}; - keys2(value).forEach(function(k2) { - var val2 = _revive(keypath + (keypath ? "." : "") + escapeKeyPathComponent(k2), value[k2], target || _clone, _clone, k2); - var set = function set2(v) { - if (hasConstructorOf(v, Undefined)) { - _clone[k2] = void 0; - } else if (v !== void 0) { - _clone[k2] = v; - } - return v; - }; - if (hasConstructorOf(val2, TypesonPromise)) { - revivalPromises.push(val2.then(function(ret2) { - return set(ret2); - })); - } else { - set(val2); - } - }); - value = _clone; - while (keyPathResolutions.length) { - var _keyPathResolutions$ = _slicedToArray(keyPathResolutions[0], 4), _target = _keyPathResolutions$[0], keyPath = _keyPathResolutions$[1], _clone2 = _keyPathResolutions$[2], k = _keyPathResolutions$[3]; - var val = getByKeyPath2(_target, keyPath); - if (val !== void 0) { - _clone2[k] = val; - } else { - break; - } - keyPathResolutions.splice(0, 1); - } - } - if (!type2) { - return value; - } - if (type2 === "#") { - var _ret = getByKeyPath2(target, value.slice(1)); - if (_ret === void 0) { - keyPathResolutions.push([target, value.slice(1), clone, key]); - } - return _ret; - } - return [].concat(type2).reduce(function reducer(val2, typ) { - if (hasConstructorOf(val2, TypesonPromise)) { - return val2.then(function(v) { - return reducer(v, typ); - }); - } - return executeReviver(typ, val2); - }, value); - } - function checkUndefined(retrn) { - return hasConstructorOf(retrn, Undefined) ? void 0 : retrn; - } - var possibleTypesonPromise = revivePlainObjects(); - var ret; - if (hasConstructorOf(possibleTypesonPromise, TypesonPromise)) { - ret = possibleTypesonPromise.then(function() { - return obj; - }); - } else { - ret = _revive("", obj, null); - if (revivalPromises.length) { - ret = TypesonPromise.resolve(ret).then(function(r) { - return TypesonPromise.all([ - // May be a TypesonPromise or not - r - ].concat(revivalPromises)); - }).then(function(_ref9) { - var _ref10 = _slicedToArray(_ref9, 1), r = _ref10[0]; - return r; - }); - } - } - return isThenable(ret) ? sync && opts.throwOnBadSyncType ? function() { - throw new TypeError("Sync method requested but async result obtained"); - }() : hasConstructorOf(ret, TypesonPromise) ? ret.p.then(checkUndefined) : ret : !sync && opts.throwOnBadSyncType ? function() { - throw new TypeError("Async method requested but sync result obtained"); - }() : sync ? checkUndefined(ret) : Promise.resolve(checkUndefined(ret)); - } - /** - * Also sync but throws on non-sync result. - * @param {Any} obj - * @param {object} opts - * @returns {Any} - */ - }, { - key: "reviveSync", - value: function reviveSync(obj, opts) { - return this.revive(obj, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: true - })); - } - /** - * @param {Any} obj - * @param {object} opts - * @returns {Promise} Resolves to `*` - */ - }, { - key: "reviveAsync", - value: function reviveAsync(obj, opts) { - return this.revive(obj, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: false - })); - } - /** - * Register types. - * For examples on how to use this method, see - * {@link https://github.com/dfahlander/typeson-registry/tree/master/types}. - * @param {object.[]} typeSpecSets - Types and - * their functions [test, encapsulate, revive]; - * @param {object} opts - * @returns {Typeson} - */ - }, { - key: "register", - value: function register(typeSpecSets, opts) { - opts = opts || {}; - [].concat(typeSpecSets).forEach(function R(typeSpec) { - var _this = this; - if (isArray2(typeSpec)) { - return typeSpec.map(function(typSpec) { - return R.call(_this, typSpec); - }); - } - typeSpec && keys2(typeSpec).forEach(function(typeId) { - if (typeId === "#") { - throw new TypeError("# cannot be used as a type name as it is reserved for cyclic objects"); - } else if (Typeson2.JSON_TYPES.includes(typeId)) { - throw new TypeError("Plain JSON object types are reserved as type names"); - } - var spec = typeSpec[typeId]; - var replacers = spec && spec.testPlainObjects ? this.plainObjectReplacers : this.nonplainObjectReplacers; - var existingReplacer = replacers.filter(function(r) { - return r.type === typeId; - }); - if (existingReplacer.length) { - replacers.splice(replacers.indexOf(existingReplacer[0]), 1); - delete this.revivers[typeId]; - delete this.types[typeId]; - } - if (typeof spec === "function") { - var Class = spec; - spec = { - test: function test2(x) { - return x && x.constructor === Class; - }, - replace: function replace2(x) { - return _objectSpread2({}, x); - }, - revive: function revive2(x) { - return Object.assign(Object.create(Class.prototype), x); - } - }; - } else if (isArray2(spec)) { - var _spec = spec, _spec2 = _slicedToArray(_spec, 3), test = _spec2[0], replace = _spec2[1], revive = _spec2[2]; - spec = { - test, - replace, - revive - }; - } - if (!spec || !spec.test) { - return; - } - var replacerObj = { - type: typeId, - test: spec.test.bind(spec) - }; - if (spec.replace) { - replacerObj.replace = spec.replace.bind(spec); - } - if (spec.replaceAsync) { - replacerObj.replaceAsync = spec.replaceAsync.bind(spec); - } - var start = typeof opts.fallback === "number" ? opts.fallback : opts.fallback ? 0 : Infinity; - if (spec.testPlainObjects) { - this.plainObjectReplacers.splice(start, 0, replacerObj); - } else { - this.nonplainObjectReplacers.splice(start, 0, replacerObj); - } - if (spec.revive || spec.reviveAsync) { - var reviverObj = {}; - if (spec.revive) { - reviverObj.revive = spec.revive.bind(spec); - } - if (spec.reviveAsync) { - reviverObj.reviveAsync = spec.reviveAsync.bind(spec); - } - this.revivers[typeId] = [reviverObj, { - plain: spec.testPlainObjects - }]; - } - this.types[typeId] = spec; - }, this); - }, this); - return this; - } - }]); - return Typeson2; - }(); - var Undefined = function Undefined2() { - _classCallCheck(this, Undefined2); - }; - Undefined.__typeson__type__ = "TypesonUndefined"; - Typeson.Undefined = Undefined; - Typeson.Promise = TypesonPromise; - Typeson.isThenable = isThenable; - Typeson.toStringTag = toStringTag2; - Typeson.hasConstructorOf = hasConstructorOf; - Typeson.isObject = isObject; - Typeson.isPlainObject = isPlainObject; - Typeson.isUserObject = isUserObject; - Typeson.escapeKeyPathComponent = escapeKeyPathComponent; - Typeson.unescapeKeyPathComponent = unescapeKeyPathComponent; - Typeson.getByKeyPath = getByKeyPath2; - Typeson.getJSONType = getJSONType; - Typeson.JSON_TYPES = ["null", "boolean", "number", "string", "array", "object"]; - return Typeson; - }); -}); -var structuredCloning = createCommonjsModule(function(module, exports) { - !function(e, t) { - module.exports = t(); - }(commonjsGlobal, function() { - function _typeof$1(e2) { - return (_typeof$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e3) { - return typeof e3; - } : function(e3) { - return e3 && "function" == typeof Symbol && e3.constructor === Symbol && e3 !== Symbol.prototype ? "symbol" : typeof e3; - })(e2); - } - function _classCallCheck$1(e2, t2) { - if (!(e2 instanceof t2)) throw new TypeError("Cannot call a class as a function"); - } - function _defineProperties$1(e2, t2) { - for (var r2 = 0; r2 < t2.length; r2++) { - var n2 = t2[r2]; - n2.enumerable = n2.enumerable || false, n2.configurable = true, "value" in n2 && (n2.writable = true), Object.defineProperty(e2, n2.key, n2); - } - } - function _defineProperty$1(e2, t2, r2) { - return t2 in e2 ? Object.defineProperty(e2, t2, { value: r2, enumerable: true, configurable: true, writable: true }) : e2[t2] = r2, e2; - } - function ownKeys$1(e2, t2) { - var r2 = Object.keys(e2); - if (Object.getOwnPropertySymbols) { - var n2 = Object.getOwnPropertySymbols(e2); - t2 && (n2 = n2.filter(function(t3) { - return Object.getOwnPropertyDescriptor(e2, t3).enumerable; - })), r2.push.apply(r2, n2); - } - return r2; - } - function _toConsumableArray$1(e2) { - return function _arrayWithoutHoles$1(e3) { - if (Array.isArray(e3)) return _arrayLikeToArray$1(e3); - }(e2) || function _iterableToArray$1(e3) { - if ("undefined" != typeof Symbol && Symbol.iterator in Object(e3)) return Array.from(e3); - }(e2) || function _unsupportedIterableToArray$1(e3, t2) { - if (!e3) return; - if ("string" == typeof e3) return _arrayLikeToArray$1(e3, t2); - var r2 = Object.prototype.toString.call(e3).slice(8, -1); - "Object" === r2 && e3.constructor && (r2 = e3.constructor.name); - if ("Map" === r2 || "Set" === r2) return Array.from(e3); - if ("Arguments" === r2 || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r2)) return _arrayLikeToArray$1(e3, t2); - }(e2) || function _nonIterableSpread$1() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - }(); - } - function _arrayLikeToArray$1(e2, t2) { - (null == t2 || t2 > e2.length) && (t2 = e2.length); - for (var r2 = 0, n2 = new Array(t2); r2 < t2; r2++) n2[r2] = e2[r2]; - return n2; - } - function _typeof(e2) { - return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function _typeof2(e3) { - return typeof e3; - } : function _typeof2(e3) { - return e3 && "function" == typeof Symbol && e3.constructor === Symbol && e3 !== Symbol.prototype ? "symbol" : typeof e3; - })(e2); - } - function _classCallCheck(e2, t2) { - if (!(e2 instanceof t2)) throw new TypeError("Cannot call a class as a function"); - } - function _defineProperties(e2, t2) { - for (var r2 = 0; r2 < t2.length; r2++) { - var n2 = t2[r2]; - n2.enumerable = n2.enumerable || false, n2.configurable = true, "value" in n2 && (n2.writable = true), Object.defineProperty(e2, n2.key, n2); - } - } - function _defineProperty(e2, t2, r2) { - return t2 in e2 ? Object.defineProperty(e2, t2, { value: r2, enumerable: true, configurable: true, writable: true }) : e2[t2] = r2, e2; - } - function ownKeys(e2, t2) { - var r2 = Object.keys(e2); - if (Object.getOwnPropertySymbols) { - var n2 = Object.getOwnPropertySymbols(e2); - t2 && (n2 = n2.filter(function(t3) { - return Object.getOwnPropertyDescriptor(e2, t3).enumerable; - })), r2.push.apply(r2, n2); - } - return r2; - } - function _objectSpread2(e2) { - for (var t2 = 1; t2 < arguments.length; t2++) { - var r2 = null != arguments[t2] ? arguments[t2] : {}; - t2 % 2 ? ownKeys(Object(r2), true).forEach(function(t3) { - _defineProperty(e2, t3, r2[t3]); - }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(r2)) : ownKeys(Object(r2)).forEach(function(t3) { - Object.defineProperty(e2, t3, Object.getOwnPropertyDescriptor(r2, t3)); - }); - } - return e2; - } - function _slicedToArray(e2, t2) { - return function _arrayWithHoles(e3) { - if (Array.isArray(e3)) return e3; - }(e2) || function _iterableToArrayLimit(e3, t3) { - if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e3))) return; - var r2 = [], n2 = true, i2 = false, o2 = void 0; - try { - for (var a2, c2 = e3[Symbol.iterator](); !(n2 = (a2 = c2.next()).done) && (r2.push(a2.value), !t3 || r2.length !== t3); n2 = true) ; - } catch (e4) { - i2 = true, o2 = e4; - } finally { - try { - n2 || null == c2.return || c2.return(); - } finally { - if (i2) throw o2; - } - } - return r2; - }(e2, t2) || _unsupportedIterableToArray(e2, t2) || function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - }(); - } - function _toConsumableArray(e2) { - return function _arrayWithoutHoles(e3) { - if (Array.isArray(e3)) return _arrayLikeToArray(e3); - }(e2) || function _iterableToArray(e3) { - if ("undefined" != typeof Symbol && Symbol.iterator in Object(e3)) return Array.from(e3); - }(e2) || _unsupportedIterableToArray(e2) || function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - }(); - } - function _unsupportedIterableToArray(e2, t2) { - if (e2) { - if ("string" == typeof e2) return _arrayLikeToArray(e2, t2); - var r2 = Object.prototype.toString.call(e2).slice(8, -1); - return "Object" === r2 && e2.constructor && (r2 = e2.constructor.name), "Map" === r2 || "Set" === r2 ? Array.from(e2) : "Arguments" === r2 || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r2) ? _arrayLikeToArray(e2, t2) : void 0; - } - } - function _arrayLikeToArray(e2, t2) { - (null == t2 || t2 > e2.length) && (t2 = e2.length); - for (var r2 = 0, n2 = new Array(t2); r2 < t2; r2++) n2[r2] = e2[r2]; - return n2; - } - var e = function TypesonPromise(e2) { - _classCallCheck(this, TypesonPromise), this.p = new Promise(e2); - }; - e.__typeson__type__ = "TypesonPromise", "undefined" != typeof Symbol && (e.prototype[Symbol.toStringTag] = "TypesonPromise"), e.prototype.then = function(t2, r2) { - var n2 = this; - return new e(function(e2, i2) { - n2.p.then(function(r3) { - e2(t2 ? t2(r3) : r3); - }).catch(function(e3) { - return r2 ? r2(e3) : Promise.reject(e3); - }).then(e2, i2); - }); - }, e.prototype.catch = function(e2) { - return this.then(null, e2); - }, e.resolve = function(t2) { - return new e(function(e2) { - e2(t2); - }); - }, e.reject = function(t2) { - return new e(function(e2, r2) { - r2(t2); - }); - }, ["all", "race"].forEach(function(t2) { - e[t2] = function(r2) { - return new e(function(e2, n2) { - Promise[t2](r2.map(function(e3) { - return e3 && e3.constructor && "TypesonPromise" === e3.constructor.__typeson__type__ ? e3.p : e3; - })).then(e2, n2); - }); - }; - }); - var t = {}.toString, r = {}.hasOwnProperty, n = Object.getPrototypeOf, i = r.toString; - function isThenable(e2, t2) { - return isObject(e2) && "function" == typeof e2.then && (!t2 || "function" == typeof e2.catch); - } - function toStringTag2(e2) { - return t.call(e2).slice(8, -1); - } - function hasConstructorOf(e2, t2) { - if (!e2 || "object" !== _typeof(e2)) return false; - var o2 = n(e2); - if (!o2) return null === t2; - var a2 = r.call(o2, "constructor") && o2.constructor; - return "function" != typeof a2 ? null === t2 : t2 === a2 || (null !== t2 && i.call(a2) === i.call(t2) || "function" == typeof t2 && "string" == typeof a2.__typeson__type__ && a2.__typeson__type__ === t2.__typeson__type__); - } - function isPlainObject(e2) { - return !(!e2 || "Object" !== toStringTag2(e2)) && (!n(e2) || hasConstructorOf(e2, Object)); - } - function isObject(e2) { - return e2 && "object" === _typeof(e2); - } - function escapeKeyPathComponent(e2) { - return e2.replace(/~/g, "~0").replace(/\./g, "~1"); - } - function unescapeKeyPathComponent(e2) { - return e2.replace(/~1/g, ".").replace(/~0/g, "~"); - } - function getByKeyPath2(e2, t2) { - if ("" === t2) return e2; - var r2 = t2.indexOf("."); - if (r2 > -1) { - var n2 = e2[unescapeKeyPathComponent(t2.slice(0, r2))]; - return void 0 === n2 ? void 0 : getByKeyPath2(n2, t2.slice(r2 + 1)); - } - return e2[unescapeKeyPathComponent(t2)]; - } - function setAtKeyPath(e2, t2, r2) { - if ("" === t2) return r2; - var n2 = t2.indexOf("."); - return n2 > -1 ? setAtKeyPath(e2[unescapeKeyPathComponent(t2.slice(0, n2))], t2.slice(n2 + 1), r2) : (e2[unescapeKeyPathComponent(t2)] = r2, e2); - } - function _await(e2, t2, r2) { - return r2 ? t2 ? t2(e2) : e2 : (e2 && e2.then || (e2 = Promise.resolve(e2)), t2 ? e2.then(t2) : e2); - } - var o = Object.keys, a = Array.isArray, c = {}.hasOwnProperty, u = ["type", "replaced", "iterateIn", "iterateUnsetNumeric"]; - function _async(e2) { - return function() { - for (var t2 = [], r2 = 0; r2 < arguments.length; r2++) t2[r2] = arguments[r2]; - try { - return Promise.resolve(e2.apply(this, t2)); - } catch (e3) { - return Promise.reject(e3); - } - }; - } - function nestedPathsFirst(e2, t2) { - if ("" === e2.keypath) return -1; - var r2 = e2.keypath.match(/\./g) || 0, n2 = t2.keypath.match(/\./g) || 0; - return r2 && (r2 = r2.length), n2 && (n2 = n2.length), r2 > n2 ? -1 : r2 < n2 ? 1 : e2.keypath < t2.keypath ? -1 : e2.keypath > t2.keypath; - } - var s = function() { - function Typeson(e2) { - _classCallCheck(this, Typeson), this.options = e2, this.plainObjectReplacers = [], this.nonplainObjectReplacers = [], this.revivers = {}, this.types = {}; - } - return function _createClass(e2, t2, r2) { - return t2 && _defineProperties(e2.prototype, t2), r2 && _defineProperties(e2, r2), e2; - }(Typeson, [{ key: "stringify", value: function stringify(e2, t2, r2, n2) { - n2 = _objectSpread2(_objectSpread2(_objectSpread2({}, this.options), n2), {}, { stringification: true }); - var i2 = this.encapsulate(e2, null, n2); - return a(i2) ? JSON.stringify(i2[0], t2, r2) : i2.then(function(e3) { - return JSON.stringify(e3, t2, r2); - }); - } }, { key: "stringifySync", value: function stringifySync(e2, t2, r2, n2) { - return this.stringify(e2, t2, r2, _objectSpread2(_objectSpread2({ throwOnBadSyncType: true }, n2), {}, { sync: true })); - } }, { key: "stringifyAsync", value: function stringifyAsync(e2, t2, r2, n2) { - return this.stringify(e2, t2, r2, _objectSpread2(_objectSpread2({ throwOnBadSyncType: true }, n2), {}, { sync: false })); - } }, { key: "parse", value: function parse(e2, t2, r2) { - return r2 = _objectSpread2(_objectSpread2(_objectSpread2({}, this.options), r2), {}, { parse: true }), this.revive(JSON.parse(e2, t2), r2); - } }, { key: "parseSync", value: function parseSync(e2, t2, r2) { - return this.parse(e2, t2, _objectSpread2(_objectSpread2({ throwOnBadSyncType: true }, r2), {}, { sync: true })); - } }, { key: "parseAsync", value: function parseAsync(e2, t2, r2) { - return this.parse(e2, t2, _objectSpread2(_objectSpread2({ throwOnBadSyncType: true }, r2), {}, { sync: false })); - } }, { key: "specialTypeNames", value: function specialTypeNames(e2, t2) { - var r2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; - return r2.returnTypeNames = true, this.encapsulate(e2, t2, r2); - } }, { key: "rootTypeName", value: function rootTypeName(e2, t2) { - var r2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; - return r2.iterateNone = true, this.encapsulate(e2, t2, r2); - } }, { key: "encapsulate", value: function encapsulate(t2, r2, n2) { - var i2 = _async(function(t3, r3) { - return _await(Promise.all(r3.map(function(e2) { - return e2[1].p; - })), function(n3) { - return _await(Promise.all(n3.map(_async(function(n4) { - var o2 = false, a2 = [], c2 = _slicedToArray(r3.splice(0, 1), 1), u2 = _slicedToArray(c2[0], 7), s3 = u2[0], f3 = u2[2], l3 = u2[3], p3 = u2[4], y3 = u2[5], v3 = u2[6], b3 = _encapsulate(s3, n4, f3, l3, a2, true, v3), d3 = hasConstructorOf(b3, e); - return function _invoke(e2, t4) { - var r4 = e2(); - return r4 && r4.then ? r4.then(t4) : t4(r4); - }(function() { - if (s3 && d3) return _await(b3.p, function(e2) { - return p3[y3] = e2, o2 = true, i2(t3, a2); - }); - }, function(e2) { - return o2 ? e2 : (s3 ? p3[y3] = b3 : t3 = d3 ? b3.p : b3, i2(t3, a2)); - }); - }))), function() { - return t3; - }); - }); - }), s2 = (n2 = _objectSpread2(_objectSpread2({ sync: true }, this.options), n2)).sync, f2 = this, l2 = {}, p2 = [], y2 = [], v2 = [], b2 = !("cyclic" in n2) || n2.cyclic, d2 = n2.encapsulateObserver, h2 = _encapsulate("", t2, b2, r2 || {}, v2); - function finish(e2) { - var t3 = Object.values(l2); - if (n2.iterateNone) return t3.length ? t3[0] : Typeson.getJSONType(e2); - if (t3.length) { - if (n2.returnTypeNames) return _toConsumableArray(new Set(t3)); - e2 && isPlainObject(e2) && !c.call(e2, "$types") ? e2.$types = l2 : e2 = { $: e2, $types: { $: l2 } }; - } else isObject(e2) && c.call(e2, "$types") && (e2 = { $: e2, $types: true }); - return !n2.returnTypeNames && e2; - } - function _adaptBuiltinStateObjectProperties(e2, t3, r3) { - Object.assign(e2, t3); - var n3 = u.map(function(t4) { - var r4 = e2[t4]; - return delete e2[t4], r4; - }); - r3(), u.forEach(function(t4, r4) { - e2[t4] = n3[r4]; - }); - } - function _encapsulate(t3, r3, i3, u2, s3, v3, b3) { - var h3, g2 = {}, m2 = _typeof(r3), O2 = d2 ? function(n3) { - var o2 = b3 || u2.type || Typeson.getJSONType(r3); - d2(Object.assign(n3 || g2, { keypath: t3, value: r3, cyclic: i3, stateObj: u2, promisesData: s3, resolvingTypesonPromise: v3, awaitingTypesonPromise: hasConstructorOf(r3, e) }, { type: o2 })); - } : null; - if (["string", "boolean", "number", "undefined"].includes(m2)) return void 0 === r3 || Number.isNaN(r3) || r3 === Number.NEGATIVE_INFINITY || r3 === Number.POSITIVE_INFINITY ? (h3 = u2.replaced ? r3 : replace(t3, r3, u2, s3, false, v3, O2)) !== r3 && (g2 = { replaced: h3 }) : h3 = r3, O2 && O2(), h3; - if (null === r3) return O2 && O2(), r3; - if (i3 && !u2.iterateIn && !u2.iterateUnsetNumeric && r3 && "object" === _typeof(r3)) { - var _2 = p2.indexOf(r3); - if (!(_2 < 0)) return l2[t3] = "#", O2 && O2({ cyclicKeypath: y2[_2] }), "#" + y2[_2]; - true === i3 && (p2.push(r3), y2.push(t3)); - } - var j2, S2 = isPlainObject(r3), T2 = a(r3), w2 = (S2 || T2) && (!f2.plainObjectReplacers.length || u2.replaced) || u2.iterateIn ? r3 : replace(t3, r3, u2, s3, S2 || T2, null, O2); - if (w2 !== r3 ? (h3 = w2, g2 = { replaced: w2 }) : "" === t3 && hasConstructorOf(r3, e) ? (s3.push([t3, r3, i3, u2, void 0, void 0, u2.type]), h3 = r3) : T2 && "object" !== u2.iterateIn || "array" === u2.iterateIn ? (j2 = new Array(r3.length), g2 = { clone: j2 }) : (["function", "symbol"].includes(_typeof(r3)) || "toJSON" in r3 || hasConstructorOf(r3, e) || hasConstructorOf(r3, Promise) || hasConstructorOf(r3, ArrayBuffer)) && !S2 && "object" !== u2.iterateIn ? h3 = r3 : (j2 = {}, u2.addLength && (j2.length = r3.length), g2 = { clone: j2 }), O2 && O2(), n2.iterateNone) return j2 || h3; - if (!j2) return h3; - if (u2.iterateIn) { - var A2 = function _loop(n3) { - var o2 = { ownKeys: c.call(r3, n3) }; - _adaptBuiltinStateObjectProperties(u2, o2, function() { - var o3 = t3 + (t3 ? "." : "") + escapeKeyPathComponent(n3), a2 = _encapsulate(o3, r3[n3], Boolean(i3), u2, s3, v3); - hasConstructorOf(a2, e) ? s3.push([o3, a2, Boolean(i3), u2, j2, n3, u2.type]) : void 0 !== a2 && (j2[n3] = a2); - }); - }; - for (var P2 in r3) A2(P2); - O2 && O2({ endIterateIn: true, end: true }); - } else o(r3).forEach(function(n3) { - var o2 = t3 + (t3 ? "." : "") + escapeKeyPathComponent(n3); - _adaptBuiltinStateObjectProperties(u2, { ownKeys: true }, function() { - var t4 = _encapsulate(o2, r3[n3], Boolean(i3), u2, s3, v3); - hasConstructorOf(t4, e) ? s3.push([o2, t4, Boolean(i3), u2, j2, n3, u2.type]) : void 0 !== t4 && (j2[n3] = t4); - }); - }), O2 && O2({ endIterateOwn: true, end: true }); - if (u2.iterateUnsetNumeric) { - for (var I2 = r3.length, C2 = function _loop2(n3) { - if (!(n3 in r3)) { - var o2 = t3 + (t3 ? "." : "") + n3; - _adaptBuiltinStateObjectProperties(u2, { ownKeys: false }, function() { - var t4 = _encapsulate(o2, void 0, Boolean(i3), u2, s3, v3); - hasConstructorOf(t4, e) ? s3.push([o2, t4, Boolean(i3), u2, j2, n3, u2.type]) : void 0 !== t4 && (j2[n3] = t4); - }); - } - }, N2 = 0; N2 < I2; N2++) C2(N2); - O2 && O2({ endIterateUnsetNumeric: true, end: true }); - } - return j2; - } - function replace(e2, t3, r3, n3, i3, o2, a2) { - for (var c2 = i3 ? f2.plainObjectReplacers : f2.nonplainObjectReplacers, u2 = c2.length; u2--; ) { - var p3 = c2[u2]; - if (p3.test(t3, r3)) { - var y3 = p3.type; - if (f2.revivers[y3]) { - var v3 = l2[e2]; - l2[e2] = v3 ? [y3].concat(v3) : y3; - } - return Object.assign(r3, { type: y3, replaced: true }), !s2 && p3.replaceAsync || p3.replace ? (a2 && a2({ replacing: true }), _encapsulate(e2, p3[s2 || !p3.replaceAsync ? "replace" : "replaceAsync"](t3, r3), b2 && "readonly", r3, n3, o2, y3)) : (a2 && a2({ typeDetected: true }), _encapsulate(e2, t3, b2 && "readonly", r3, n3, o2, y3)); - } - } - return t3; - } - return v2.length ? s2 && n2.throwOnBadSyncType ? function() { - throw new TypeError("Sync method requested but async result obtained"); - }() : Promise.resolve(i2(h2, v2)).then(finish) : !s2 && n2.throwOnBadSyncType ? function() { - throw new TypeError("Async method requested but sync result obtained"); - }() : n2.stringification && s2 ? [finish(h2)] : s2 ? finish(h2) : Promise.resolve(finish(h2)); - } }, { key: "encapsulateSync", value: function encapsulateSync(e2, t2, r2) { - return this.encapsulate(e2, t2, _objectSpread2(_objectSpread2({ throwOnBadSyncType: true }, r2), {}, { sync: true })); - } }, { key: "encapsulateAsync", value: function encapsulateAsync(e2, t2, r2) { - return this.encapsulate(e2, t2, _objectSpread2(_objectSpread2({ throwOnBadSyncType: true }, r2), {}, { sync: false })); - } }, { key: "revive", value: function revive(t2, r2) { - var n2 = t2 && t2.$types; - if (!n2) return t2; - if (true === n2) return t2.$; - var i2 = (r2 = _objectSpread2(_objectSpread2({ sync: true }, this.options), r2)).sync, c2 = [], u2 = {}, s2 = true; - n2.$ && isPlainObject(n2.$) && (t2 = t2.$, n2 = n2.$, s2 = false); - var l2 = this; - function executeReviver(e2, t3) { - var r3 = _slicedToArray(l2.revivers[e2] || [], 1)[0]; - if (!r3) throw new Error("Unregistered type: " + e2); - return i2 && !("revive" in r3) ? t3 : r3[i2 && r3.revive ? "revive" : !i2 && r3.reviveAsync ? "reviveAsync" : "revive"](t3, u2); - } - var p2 = []; - function checkUndefined(e2) { - return hasConstructorOf(e2, f) ? void 0 : e2; - } - var y2, v2 = function revivePlainObjects() { - var r3 = []; - if (Object.entries(n2).forEach(function(e2) { - var t3 = _slicedToArray(e2, 2), i3 = t3[0], o2 = t3[1]; - "#" !== o2 && [].concat(o2).forEach(function(e3) { - _slicedToArray(l2.revivers[e3] || [null, {}], 2)[1].plain && (r3.push({ keypath: i3, type: e3 }), delete n2[i3]); - }); - }), r3.length) return r3.sort(nestedPathsFirst).reduce(function reducer(r4, n3) { - var i3 = n3.keypath, o2 = n3.type; - if (isThenable(r4)) return r4.then(function(e2) { - return reducer(e2, { keypath: i3, type: o2 }); - }); - var a2 = getByKeyPath2(t2, i3); - if (hasConstructorOf(a2 = executeReviver(o2, a2), e)) return a2.then(function(e2) { - var r5 = setAtKeyPath(t2, i3, e2); - r5 === e2 && (t2 = r5); - }); - var c3 = setAtKeyPath(t2, i3, a2); - c3 === a2 && (t2 = c3); - }, void 0); - }(); - return hasConstructorOf(v2, e) ? y2 = v2.then(function() { - return t2; - }) : (y2 = function _revive(t3, r3, i3, u3, l3) { - if (!s2 || "$types" !== t3) { - var y3 = n2[t3], v3 = a(r3); - if (v3 || isPlainObject(r3)) { - var b2 = v3 ? new Array(r3.length) : {}; - for (o(r3).forEach(function(n3) { - var o2 = _revive(t3 + (t3 ? "." : "") + escapeKeyPathComponent(n3), r3[n3], i3 || b2, b2, n3), a2 = function set(e2) { - return hasConstructorOf(e2, f) ? b2[n3] = void 0 : void 0 !== e2 && (b2[n3] = e2), e2; - }; - hasConstructorOf(o2, e) ? p2.push(o2.then(function(e2) { - return a2(e2); - })) : a2(o2); - }), r3 = b2; c2.length; ) { - var d2 = _slicedToArray(c2[0], 4), h2 = d2[0], g2 = d2[1], m2 = d2[2], O2 = d2[3], _2 = getByKeyPath2(h2, g2); - if (void 0 === _2) break; - m2[O2] = _2, c2.splice(0, 1); - } - } - if (!y3) return r3; - if ("#" === y3) { - var j2 = getByKeyPath2(i3, r3.slice(1)); - return void 0 === j2 && c2.push([i3, r3.slice(1), u3, l3]), j2; - } - return [].concat(y3).reduce(function reducer(t4, r4) { - return hasConstructorOf(t4, e) ? t4.then(function(e2) { - return reducer(e2, r4); - }) : executeReviver(r4, t4); - }, r3); - } - }("", t2, null), p2.length && (y2 = e.resolve(y2).then(function(t3) { - return e.all([t3].concat(p2)); - }).then(function(e2) { - return _slicedToArray(e2, 1)[0]; - }))), isThenable(y2) ? i2 && r2.throwOnBadSyncType ? function() { - throw new TypeError("Sync method requested but async result obtained"); - }() : hasConstructorOf(y2, e) ? y2.p.then(checkUndefined) : y2 : !i2 && r2.throwOnBadSyncType ? function() { - throw new TypeError("Async method requested but sync result obtained"); - }() : i2 ? checkUndefined(y2) : Promise.resolve(checkUndefined(y2)); - } }, { key: "reviveSync", value: function reviveSync(e2, t2) { - return this.revive(e2, _objectSpread2(_objectSpread2({ throwOnBadSyncType: true }, t2), {}, { sync: true })); - } }, { key: "reviveAsync", value: function reviveAsync(e2, t2) { - return this.revive(e2, _objectSpread2(_objectSpread2({ throwOnBadSyncType: true }, t2), {}, { sync: false })); - } }, { key: "register", value: function register(e2, t2) { - return t2 = t2 || {}, [].concat(e2).forEach(function R(e3) { - var r2 = this; - if (a(e3)) return e3.map(function(e4) { - return R.call(r2, e4); - }); - e3 && o(e3).forEach(function(r3) { - if ("#" === r3) throw new TypeError("# cannot be used as a type name as it is reserved for cyclic objects"); - if (Typeson.JSON_TYPES.includes(r3)) throw new TypeError("Plain JSON object types are reserved as type names"); - var n2 = e3[r3], i2 = n2 && n2.testPlainObjects ? this.plainObjectReplacers : this.nonplainObjectReplacers, o2 = i2.filter(function(e4) { - return e4.type === r3; - }); - if (o2.length && (i2.splice(i2.indexOf(o2[0]), 1), delete this.revivers[r3], delete this.types[r3]), "function" == typeof n2) { - var c2 = n2; - n2 = { test: function test(e4) { - return e4 && e4.constructor === c2; - }, replace: function replace(e4) { - return _objectSpread2({}, e4); - }, revive: function revive(e4) { - return Object.assign(Object.create(c2.prototype), e4); - } }; - } else if (a(n2)) { - var u2 = _slicedToArray(n2, 3); - n2 = { test: u2[0], replace: u2[1], revive: u2[2] }; - } - if (n2 && n2.test) { - var s2 = { type: r3, test: n2.test.bind(n2) }; - n2.replace && (s2.replace = n2.replace.bind(n2)), n2.replaceAsync && (s2.replaceAsync = n2.replaceAsync.bind(n2)); - var f2 = "number" == typeof t2.fallback ? t2.fallback : t2.fallback ? 0 : Number.POSITIVE_INFINITY; - if (n2.testPlainObjects ? this.plainObjectReplacers.splice(f2, 0, s2) : this.nonplainObjectReplacers.splice(f2, 0, s2), n2.revive || n2.reviveAsync) { - var l2 = {}; - n2.revive && (l2.revive = n2.revive.bind(n2)), n2.reviveAsync && (l2.reviveAsync = n2.reviveAsync.bind(n2)), this.revivers[r3] = [l2, { plain: n2.testPlainObjects }]; - } - this.types[r3] = n2; - } - }, this); - }, this), this; - } }]), Typeson; - }(), f = function Undefined() { - _classCallCheck(this, Undefined); - }; - f.__typeson__type__ = "TypesonUndefined", s.Undefined = f, s.Promise = e, s.isThenable = isThenable, s.toStringTag = toStringTag2, s.hasConstructorOf = hasConstructorOf, s.isObject = isObject, s.isPlainObject = isPlainObject, s.isUserObject = function isUserObject(e2) { - if (!e2 || "Object" !== toStringTag2(e2)) return false; - var t2 = n(e2); - return !t2 || (hasConstructorOf(e2, Object) || isUserObject(t2)); - }, s.escapeKeyPathComponent = escapeKeyPathComponent, s.unescapeKeyPathComponent = unescapeKeyPathComponent, s.getByKeyPath = getByKeyPath2, s.getJSONType = function getJSONType(e2) { - return null === e2 ? "null" : Array.isArray(e2) ? "array" : _typeof(e2); - }, s.JSON_TYPES = ["null", "boolean", "number", "string", "array", "object"]; - for (var l = { userObject: { test: function test(e2, t2) { - return s.isUserObject(e2); - }, replace: function replace(e2) { - return function _objectSpread2$1(e3) { - for (var t2 = 1; t2 < arguments.length; t2++) { - var r2 = null != arguments[t2] ? arguments[t2] : {}; - t2 % 2 ? ownKeys$1(Object(r2), true).forEach(function(t3) { - _defineProperty$1(e3, t3, r2[t3]); - }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e3, Object.getOwnPropertyDescriptors(r2)) : ownKeys$1(Object(r2)).forEach(function(t3) { - Object.defineProperty(e3, t3, Object.getOwnPropertyDescriptor(r2, t3)); - }); - } - return e3; - }({}, e2); - }, revive: function revive(e2) { - return e2; - } } }, p = [{ arrayNonindexKeys: { testPlainObjects: true, test: function test(e2, t2) { - return !!Array.isArray(e2) && (Object.keys(e2).some(function(e3) { - return String(Number.parseInt(e3)) !== e3; - }) && (t2.iterateIn = "object", t2.addLength = true), true); - }, replace: function replace(e2, t2) { - return t2.iterateUnsetNumeric = true, e2; - }, revive: function revive(e2) { - if (Array.isArray(e2)) return e2; - var t2 = []; - return Object.keys(e2).forEach(function(r2) { - var n2 = e2[r2]; - t2[r2] = n2; - }), t2; - } } }, { sparseUndefined: { test: function test(e2, t2) { - return void 0 === e2 && false === t2.ownKeys; - }, replace: function replace(e2) { - return 0; - }, revive: function revive(e2) { - } } }], y = { undef: { test: function test(e2, t2) { - return void 0 === e2 && (t2.ownKeys || !("ownKeys" in t2)); - }, replace: function replace(e2) { - return 0; - }, revive: function revive(e2) { - return new s.Undefined(); - } } }, v = { StringObject: { test: function test(e2) { - return "String" === s.toStringTag(e2) && "object" === _typeof$1(e2); - }, replace: function replace(e2) { - return String(e2); - }, revive: function revive(e2) { - return new String(e2); - } }, BooleanObject: { test: function test(e2) { - return "Boolean" === s.toStringTag(e2) && "object" === _typeof$1(e2); - }, replace: function replace(e2) { - return Boolean(e2); - }, revive: function revive(e2) { - return new Boolean(e2); - } }, NumberObject: { test: function test(e2) { - return "Number" === s.toStringTag(e2) && "object" === _typeof$1(e2); - }, replace: function replace(e2) { - return Number(e2); - }, revive: function revive(e2) { - return new Number(e2); - } } }, b = [{ nan: { test: function test(e2) { - return Number.isNaN(e2); - }, replace: function replace(e2) { - return "NaN"; - }, revive: function revive(e2) { - return Number.NaN; - } } }, { infinity: { test: function test(e2) { - return e2 === Number.POSITIVE_INFINITY; - }, replace: function replace(e2) { - return "Infinity"; - }, revive: function revive(e2) { - return Number.POSITIVE_INFINITY; - } } }, { negativeInfinity: { test: function test(e2) { - return e2 === Number.NEGATIVE_INFINITY; - }, replace: function replace(e2) { - return "-Infinity"; - }, revive: function revive(e2) { - return Number.NEGATIVE_INFINITY; - } } }], d = { date: { test: function test(e2) { - return "Date" === s.toStringTag(e2); - }, replace: function replace(e2) { - var t2 = e2.getTime(); - return Number.isNaN(t2) ? "NaN" : t2; - }, revive: function revive(e2) { - return "NaN" === e2 ? new Date(Number.NaN) : new Date(e2); - } } }, h = { regexp: { test: function test(e2) { - return "RegExp" === s.toStringTag(e2); - }, replace: function replace(e2) { - return { source: e2.source, flags: (e2.global ? "g" : "") + (e2.ignoreCase ? "i" : "") + (e2.multiline ? "m" : "") + (e2.sticky ? "y" : "") + (e2.unicode ? "u" : "") }; - }, revive: function revive(e2) { - var t2 = e2.source, r2 = e2.flags; - return new RegExp(t2, r2); - } } }, g = { map: { test: function test(e2) { - return "Map" === s.toStringTag(e2); - }, replace: function replace(e2) { - return _toConsumableArray$1(e2.entries()); - }, revive: function revive(e2) { - return new Map(e2); - } } }, m = { set: { test: function test(e2) { - return "Set" === s.toStringTag(e2); - }, replace: function replace(e2) { - return _toConsumableArray$1(e2.values()); - }, revive: function revive(e2) { - return new Set(e2); - } } }, O = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", _ = new Uint8Array(256), j = 0; j < O.length; j++) _[O.charCodeAt(j)] = j; - var S = function encode3(e2, t2, r2) { - null == r2 && (r2 = e2.byteLength); - for (var n2 = new Uint8Array(e2, t2 || 0, r2), i2 = n2.length, o2 = "", a2 = 0; a2 < i2; a2 += 3) o2 += O[n2[a2] >> 2], o2 += O[(3 & n2[a2]) << 4 | n2[a2 + 1] >> 4], o2 += O[(15 & n2[a2 + 1]) << 2 | n2[a2 + 2] >> 6], o2 += O[63 & n2[a2 + 2]]; - return i2 % 3 == 2 ? o2 = o2.slice(0, -1) + "=" : i2 % 3 == 1 && (o2 = o2.slice(0, -2) + "=="), o2; - }, T = function decode3(e2) { - var t2, r2, n2, i2, o2 = e2.length, a2 = 0.75 * e2.length, c2 = 0; - "=" === e2[e2.length - 1] && (a2--, "=" === e2[e2.length - 2] && a2--); - for (var u2 = new ArrayBuffer(a2), s2 = new Uint8Array(u2), f2 = 0; f2 < o2; f2 += 4) t2 = _[e2.charCodeAt(f2)], r2 = _[e2.charCodeAt(f2 + 1)], n2 = _[e2.charCodeAt(f2 + 2)], i2 = _[e2.charCodeAt(f2 + 3)], s2[c2++] = t2 << 2 | r2 >> 4, s2[c2++] = (15 & r2) << 4 | n2 >> 2, s2[c2++] = (3 & n2) << 6 | 63 & i2; - return u2; - }, w = { arraybuffer: { test: function test(e2) { - return "ArrayBuffer" === s.toStringTag(e2); - }, replace: function replace(e2, t2) { - t2.buffers || (t2.buffers = []); - var r2 = t2.buffers.indexOf(e2); - return r2 > -1 ? { index: r2 } : (t2.buffers.push(e2), S(e2)); - }, revive: function revive(e2, t2) { - if (t2.buffers || (t2.buffers = []), "object" === _typeof$1(e2)) return t2.buffers[e2.index]; - var r2 = T(e2); - return t2.buffers.push(r2), r2; - } } }, A = "undefined" == typeof self ? commonjsGlobal : self, P = {}; - ["Int8Array", "Uint8Array", "Uint8ClampedArray", "Int16Array", "Uint16Array", "Int32Array", "Uint32Array", "Float32Array", "Float64Array"].forEach(function(e2) { - var t2 = e2, r2 = A[t2]; - r2 && (P[e2.toLowerCase()] = { test: function test(e3) { - return s.toStringTag(e3) === t2; - }, replace: function replace(e3, t3) { - var r3 = e3.buffer, n2 = e3.byteOffset, i2 = e3.length; - t3.buffers || (t3.buffers = []); - var o2 = t3.buffers.indexOf(r3); - return o2 > -1 ? { index: o2, byteOffset: n2, length: i2 } : (t3.buffers.push(r3), { encoded: S(r3), byteOffset: n2, length: i2 }); - }, revive: function revive(e3, t3) { - t3.buffers || (t3.buffers = []); - var n2, i2 = e3.byteOffset, o2 = e3.length, a2 = e3.encoded, c2 = e3.index; - return "index" in e3 ? n2 = t3.buffers[c2] : (n2 = T(a2), t3.buffers.push(n2)), new r2(n2, i2, o2); - } }); - }); - var I = { dataview: { test: function test(e2) { - return "DataView" === s.toStringTag(e2); - }, replace: function replace(e2, t2) { - var r2 = e2.buffer, n2 = e2.byteOffset, i2 = e2.byteLength; - t2.buffers || (t2.buffers = []); - var o2 = t2.buffers.indexOf(r2); - return o2 > -1 ? { index: o2, byteOffset: n2, byteLength: i2 } : (t2.buffers.push(r2), { encoded: S(r2), byteOffset: n2, byteLength: i2 }); - }, revive: function revive(e2, t2) { - t2.buffers || (t2.buffers = []); - var r2, n2 = e2.byteOffset, i2 = e2.byteLength, o2 = e2.encoded, a2 = e2.index; - return "index" in e2 ? r2 = t2.buffers[a2] : (r2 = T(o2), t2.buffers.push(r2)), new DataView(r2, n2, i2); - } } }, C = { IntlCollator: { test: function test(e2) { - return s.hasConstructorOf(e2, Intl.Collator); - }, replace: function replace(e2) { - return e2.resolvedOptions(); - }, revive: function revive(e2) { - return new Intl.Collator(e2.locale, e2); - } }, IntlDateTimeFormat: { test: function test(e2) { - return s.hasConstructorOf(e2, Intl.DateTimeFormat); - }, replace: function replace(e2) { - return e2.resolvedOptions(); - }, revive: function revive(e2) { - return new Intl.DateTimeFormat(e2.locale, e2); - } }, IntlNumberFormat: { test: function test(e2) { - return s.hasConstructorOf(e2, Intl.NumberFormat); - }, replace: function replace(e2) { - return e2.resolvedOptions(); - }, revive: function revive(e2) { - return new Intl.NumberFormat(e2.locale, e2); - } } }; - function string2arraybuffer(e2) { - for (var t2 = new Uint8Array(e2.length), r2 = 0; r2 < e2.length; r2++) t2[r2] = e2.charCodeAt(r2); - return t2.buffer; - } - var N = { file: { test: function test(e2) { - return "File" === s.toStringTag(e2); - }, replace: function replace(e2) { - var t2 = new XMLHttpRequest(); - if (t2.overrideMimeType("text/plain; charset=x-user-defined"), t2.open("GET", URL.createObjectURL(e2), false), t2.send(), 200 !== t2.status && 0 !== t2.status) throw new Error("Bad File access: " + t2.status); - return { type: e2.type, stringContents: t2.responseText, name: e2.name, lastModified: e2.lastModified }; - }, revive: function revive(e2) { - var t2 = e2.name, r2 = e2.type, n2 = e2.stringContents, i2 = e2.lastModified; - return new File([string2arraybuffer(n2)], t2, { type: r2, lastModified: i2 }); - }, replaceAsync: function replaceAsync(e2) { - return new s.Promise(function(t2, r2) { - var n2 = new FileReader(); - n2.addEventListener("load", function() { - t2({ type: e2.type, stringContents: n2.result, name: e2.name, lastModified: e2.lastModified }); - }), n2.addEventListener("error", function() { - r2(n2.error); - }), n2.readAsBinaryString(e2); - }); - } } }, k = { bigint: { test: function test(e2) { - return "bigint" == typeof e2; - }, replace: function replace(e2) { - return String(e2); - }, revive: function revive(e2) { - return BigInt(e2); - } } }, E = { bigintObject: { test: function test(e2) { - return "object" === _typeof$1(e2) && s.hasConstructorOf(e2, BigInt); - }, replace: function replace(e2) { - return String(e2); - }, revive: function revive(e2) { - return new Object(BigInt(e2)); - } } }, B = { cryptokey: { test: function test(e2) { - return "CryptoKey" === s.toStringTag(e2) && e2.extractable; - }, replaceAsync: function replaceAsync(e2) { - return new s.Promise(function(t2, r2) { - crypto.subtle.exportKey("jwk", e2).catch(function(e3) { - r2(e3); - }).then(function(r3) { - t2({ jwk: r3, algorithm: e2.algorithm, usages: e2.usages }); - }); - }); - }, revive: function revive(e2) { - var t2 = e2.jwk, r2 = e2.algorithm, n2 = e2.usages; - return crypto.subtle.importKey("jwk", t2, r2, true, n2); - } } }; - return [l, y, p, v, b, d, h, { imagedata: { test: function test(e2) { - return "ImageData" === s.toStringTag(e2); - }, replace: function replace(e2) { - return { array: _toConsumableArray$1(e2.data), width: e2.width, height: e2.height }; - }, revive: function revive(e2) { - return new ImageData(new Uint8ClampedArray(e2.array), e2.width, e2.height); - } } }, { imagebitmap: { test: function test(e2) { - return "ImageBitmap" === s.toStringTag(e2) || e2 && e2.dataset && "ImageBitmap" === e2.dataset.toStringTag; - }, replace: function replace(e2) { - var t2 = document.createElement("canvas"); - return t2.getContext("2d").drawImage(e2, 0, 0), t2.toDataURL(); - }, revive: function revive(e2) { - var t2 = document.createElement("canvas"), r2 = t2.getContext("2d"), n2 = document.createElement("img"); - return n2.addEventListener("load", function() { - r2.drawImage(n2, 0, 0); - }), n2.src = e2, t2; - }, reviveAsync: function reviveAsync(e2) { - var t2 = document.createElement("canvas"), r2 = t2.getContext("2d"), n2 = document.createElement("img"); - return n2.addEventListener("load", function() { - r2.drawImage(n2, 0, 0); - }), n2.src = e2, createImageBitmap(t2); - } } }, N, { file: N.file, filelist: { test: function test(e2) { - return "FileList" === s.toStringTag(e2); - }, replace: function replace(e2) { - for (var t2 = [], r2 = 0; r2 < e2.length; r2++) t2[r2] = e2.item(r2); - return t2; - }, revive: function revive(e2) { - return new (function() { - function FileList() { - _classCallCheck$1(this, FileList), this._files = arguments[0], this.length = this._files.length; - } - return function _createClass$1(e3, t2, r2) { - return t2 && _defineProperties$1(e3.prototype, t2), r2 && _defineProperties$1(e3, r2), e3; - }(FileList, [{ key: "item", value: function item(e3) { - return this._files[e3]; - } }, { key: Symbol.toStringTag, get: function get() { - return "FileList"; - } }]), FileList; - }())(e2); - } } }, { blob: { test: function test(e2) { - return "Blob" === s.toStringTag(e2); - }, replace: function replace(e2) { - var t2 = new XMLHttpRequest(); - if (t2.overrideMimeType("text/plain; charset=x-user-defined"), t2.open("GET", URL.createObjectURL(e2), false), t2.send(), 200 !== t2.status && 0 !== t2.status) throw new Error("Bad Blob access: " + t2.status); - return { type: e2.type, stringContents: t2.responseText }; - }, revive: function revive(e2) { - var t2 = e2.type, r2 = e2.stringContents; - return new Blob([string2arraybuffer(r2)], { type: t2 }); - }, replaceAsync: function replaceAsync(e2) { - return new s.Promise(function(t2, r2) { - var n2 = new FileReader(); - n2.addEventListener("load", function() { - t2({ type: e2.type, stringContents: n2.result }); - }), n2.addEventListener("error", function() { - r2(n2.error); - }), n2.readAsBinaryString(e2); - }); - } } }].concat("function" == typeof Map ? g : [], "function" == typeof Set ? m : [], "function" == typeof ArrayBuffer ? w : [], "function" == typeof Uint8Array ? P : [], "function" == typeof DataView ? I : [], "undefined" != typeof Intl ? C : [], "undefined" != typeof crypto ? B : [], "undefined" != typeof BigInt ? [k, E] : []); - }); -}); -var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -var lookup = new Uint8Array(256); -for (i = 0; i < chars.length; i++) { - lookup[chars.codePointAt(i)] = i; -} -var i; -var encode = function encode2(arraybuffer, byteOffset, lngth) { - if (lngth === null || lngth === void 0) { - lngth = arraybuffer.byteLength; - } - var bytes = new Uint8Array( - arraybuffer, - byteOffset || 0, - // Default needed for Safari - lngth - ); - var len = bytes.length; - var base64 = ""; - for (var _i = 0; _i < len; _i += 3) { - base64 += chars[bytes[_i] >> 2]; - base64 += chars[(bytes[_i] & 3) << 4 | bytes[_i + 1] >> 4]; - base64 += chars[(bytes[_i + 1] & 15) << 2 | bytes[_i + 2] >> 6]; - base64 += chars[bytes[_i + 2] & 63]; - } - if (len % 3 === 2) { - base64 = base64.slice(0, -1) + "="; - } else if (len % 3 === 1) { - base64 = base64.slice(0, -2) + "=="; - } - return base64; -}; -var decode = function decode2(base64) { - var len = base64.length; - var bufferLength = base64.length * 0.75; - var p = 0; - var encoded1, encoded2, encoded3, encoded4; - if (base64[base64.length - 1] === "=") { - bufferLength--; - if (base64[base64.length - 2] === "=") { - bufferLength--; - } - } - var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer); - for (var _i2 = 0; _i2 < len; _i2 += 4) { - encoded1 = lookup[base64.codePointAt(_i2)]; - encoded2 = lookup[base64.codePointAt(_i2 + 1)]; - encoded3 = lookup[base64.codePointAt(_i2 + 2)]; - encoded4 = lookup[base64.codePointAt(_i2 + 3)]; - bytes[p++] = encoded1 << 2 | encoded2 >> 4; - bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2; - bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63; - } - return arraybuffer; -}; -var _global2 = typeof self === "undefined" ? global : self; -var exportObj = {}; -[ - "Int8Array", - "Uint8Array", - "Uint8ClampedArray", - "Int16Array", - "Uint16Array", - "Int32Array", - "Uint32Array", - "Float32Array", - "Float64Array" -].forEach(function(typeName) { - var arrType = typeName; - var TypedArray = _global2[arrType]; - if (TypedArray) { - exportObj[typeName.toLowerCase() + "2"] = { - test: function(x) { - return typeson.toStringTag(x) === arrType; - }, - replace: function(_a) { - var buffer = _a.buffer, byteOffset = _a.byteOffset, length = _a.length; - return { - buffer, - byteOffset, - length - }; - }, - revive: function(b64Obj) { - var buffer = b64Obj.buffer, byteOffset = b64Obj.byteOffset, length = b64Obj.length; - return new TypedArray(buffer, byteOffset, length); - } - }; - } -}); -var arrayBuffer = { - arraybuffer: { - test: function(x) { - return typeson.toStringTag(x) === "ArrayBuffer"; - }, - replace: function(b) { - return encode(b, 0, b.byteLength); - }, - revive: function(b64) { - var buffer = decode(b64); - return buffer; - } - } -}; -var TSON = new typeson().register(structuredCloning); -var readBlobsSynchronously = "FileReaderSync" in self; -var blobsToAwait = []; -var blobsToAwaitPos = 0; -TSON.register([ - arrayBuffer, - exportObj, - { - blob2: { - test: function(x) { - return typeson.toStringTag(x) === "Blob"; - }, - replace: function(b) { - if (b.isClosed) { - throw new Error("The Blob is closed"); - } - if (readBlobsSynchronously) { - var data = readBlobSync(b, "binary"); - var base64 = encode(data, 0, data.byteLength); - return { - type: b.type, - data: base64 - }; - } else { - blobsToAwait.push(b); - var result = { - type: b.type, - data: { start: blobsToAwaitPos, end: blobsToAwaitPos + b.size } - }; - blobsToAwaitPos += b.size; - return result; - } - }, - finalize: function(b, ba) { - b.data = encode(ba, 0, ba.byteLength); - }, - revive: function(_a) { - var type2 = _a.type, data = _a.data; - return new Blob([decode(data)], { type: type2 }); - } - } - } -]); -TSON.mustFinalize = function() { - return blobsToAwait.length > 0; -}; -TSON.finalize = function(items) { - return __awaiter(void 0, void 0, void 0, function() { - var allChunks, _i, items_1, item, types, arrayType, keyPath, typeName, typeSpec, b; - return __generator(this, function(_a) { - switch (_a.label) { - case 0: - return [4, readBlobAsync(new Blob(blobsToAwait), "binary")]; - case 1: - allChunks = _a.sent(); - if (items) { - for (_i = 0, items_1 = items; _i < items_1.length; _i++) { - item = items_1[_i]; - if (item.$types) { - types = item.$types; - arrayType = types.$; - if (arrayType) - types = types.$; - for (keyPath in types) { - typeName = types[keyPath]; - typeSpec = TSON.types[typeName]; - if (typeSpec && typeSpec.finalize) { - b = Dexie$1.getByKeyPath(item, arrayType ? "$." + keyPath : keyPath); - typeSpec.finalize(b, allChunks.slice(b.start, b.end)); - } - } - } - } - } - blobsToAwait = []; - return [ - 2 - /*return*/ - ]; - } - }); - }); -}; -var DEFAULT_ROWS_PER_CHUNK = 2e3; -function exportDB(db, options) { - return __awaiter(this, void 0, void 0, function() { - function exportAll() { - return __awaiter(this, void 0, void 0, function() { - var tablesRowCounts, emptyExportJson, posEndDataArray, firstJsonSlice, filter, transform, _loop_1, _i, tables_1, tableName; - return __generator(this, function(_a) { - switch (_a.label) { - case 0: - return [4, Promise.all(targetTables.map(function(table) { - return table.count(); - }))]; - case 1: - tablesRowCounts = _a.sent(); - tablesRowCounts.forEach(function(rowCount, i) { - return tables[i].rowCount = rowCount; - }); - progress.totalRows = tablesRowCounts.reduce(function(p, c) { - return p + c; - }); - emptyExportJson = JSON.stringify(emptyExport, void 0, prettyJson ? 2 : void 0); - posEndDataArray = emptyExportJson.lastIndexOf("]"); - firstJsonSlice = emptyExportJson.substring(0, posEndDataArray); - slices.push(firstJsonSlice); - filter = options.filter; - transform = options.transform; - _loop_1 = function(tableName2) { - var table, primKey, inbound, LIMIT, emptyTableExport, emptyTableExportJson, posEndRowsArray, lastKey, lastNumRows, mayHaveMoreRows, _loop_2, state_1; - return __generator(this, function(_b) { - switch (_b.label) { - case 0: - table = db.table(tableName2); - primKey = table.schema.primKey; - inbound = !!primKey.keyPath; - LIMIT = options.numRowsPerChunk || DEFAULT_ROWS_PER_CHUNK; - emptyTableExport = inbound ? { - tableName: table.name, - inbound: true, - rows: [] - } : { - tableName: table.name, - inbound: false, - rows: [] - }; - emptyTableExportJson = JSON.stringify(emptyTableExport, void 0, prettyJson ? 2 : void 0); - if (prettyJson) { - emptyTableExportJson = emptyTableExportJson.split("\n").join("\n "); - } - posEndRowsArray = emptyTableExportJson.lastIndexOf("]"); - slices.push(emptyTableExportJson.substring(0, posEndRowsArray)); - lastKey = null; - lastNumRows = 0; - mayHaveMoreRows = true; - _loop_2 = function() { - var chunkedCollection, values, filteredValues, transformedValues, tsonValues, json, keys2, keyvals, tsonTuples, json; - return __generator(this, function(_c) { - switch (_c.label) { - case 0: - if (progressCallback) { - Dexie$1.ignoreTransaction(function() { - return progressCallback(progress); - }); - } - chunkedCollection = lastKey == null ? table.limit(LIMIT) : table.where(":id").above(lastKey).limit(LIMIT); - return [4, chunkedCollection.toArray()]; - case 1: - values = _c.sent(); - if (values.length === 0) - return [2, "break"]; - if (lastKey != null && lastNumRows > 0) { - slices.push(","); - if (prettyJson) { - slices.push("\n "); - } - } - mayHaveMoreRows = values.length === LIMIT; - if (!inbound) return [3, 4]; - filteredValues = filter ? values.filter(function(value) { - return filter(tableName2, value); - }) : values; - transformedValues = transform ? filteredValues.map(function(value) { - return transform(tableName2, value).value; - }) : filteredValues; - tsonValues = transformedValues.map(function(value) { - return TSON.encapsulate(value); - }); - if (!TSON.mustFinalize()) return [3, 3]; - return [4, Dexie$1.waitFor(TSON.finalize(tsonValues))]; - case 2: - _c.sent(); - _c.label = 3; - case 3: - json = JSON.stringify(tsonValues, void 0, prettyJson ? 2 : void 0); - if (prettyJson) - json = json.split("\n").join("\n "); - slices.push(new Blob([json.substring(1, json.length - 1)])); - lastNumRows = transformedValues.length; - lastKey = values.length > 0 ? Dexie$1.getByKeyPath(values[values.length - 1], primKey.keyPath) : null; - return [3, 8]; - case 4: - return [4, chunkedCollection.primaryKeys()]; - case 5: - keys2 = _c.sent(); - keyvals = keys2.map(function(key, i) { - return [key, values[i]]; - }); - if (filter) - keyvals = keyvals.filter(function(_a2) { - var key = _a2[0], value = _a2[1]; - return filter(tableName2, value, key); - }); - if (transform) - keyvals = keyvals.map(function(_a2) { - var key = _a2[0], value = _a2[1]; - var transformResult = transform(tableName2, value, key); - return [transformResult.key, transformResult.value]; - }); - tsonTuples = keyvals.map(function(tuple) { - return TSON.encapsulate(tuple); - }); - if (!TSON.mustFinalize()) return [3, 7]; - return [4, Dexie$1.waitFor(TSON.finalize(tsonTuples))]; - case 6: - _c.sent(); - _c.label = 7; - case 7: - json = JSON.stringify(tsonTuples, void 0, prettyJson ? 2 : void 0); - if (prettyJson) - json = json.split("\n").join("\n "); - slices.push(new Blob([json.substring(1, json.length - 1)])); - lastNumRows = keyvals.length; - lastKey = keys2.length > 0 ? keys2[keys2.length - 1] : null; - _c.label = 8; - case 8: - progress.completedRows += values.length; - return [ - 2 - /*return*/ - ]; - } - }); - }; - _b.label = 1; - case 1: - if (!mayHaveMoreRows) return [3, 3]; - return [5, _loop_2()]; - case 2: - state_1 = _b.sent(); - if (state_1 === "break") - return [3, 3]; - return [3, 1]; - case 3: - slices.push(emptyTableExportJson.substr(posEndRowsArray)); - progress.completedTables += 1; - if (progress.completedTables < progress.totalTables) { - slices.push(","); - } - return [ - 2 - /*return*/ - ]; - } - }); - }; - _i = 0, tables_1 = tables; - _a.label = 2; - case 2: - if (!(_i < tables_1.length)) return [3, 5]; - tableName = tables_1[_i].name; - return [5, _loop_1(tableName)]; - case 3: - _a.sent(); - _a.label = 4; - case 4: - _i++; - return [3, 2]; - case 5: - slices.push(emptyExportJson.substr(posEndDataArray)); - progress.done = true; - if (progressCallback) { - Dexie$1.ignoreTransaction(function() { - return progressCallback(progress); - }); - } - return [ - 2 - /*return*/ - ]; - } - }); - }); - } - var skipTables, targetTables, slices, tables, prettyJson, emptyExport, progressCallback, progress; - return __generator(this, function(_a) { - switch (_a.label) { - case 0: - options = options || {}; - skipTables = options.skipTables ? options.skipTables : []; - targetTables = db.tables.filter(function(x) { - return !skipTables.includes(x.name); - }); - slices = []; - tables = targetTables.map(function(table) { - return { - name: table.name, - schema: getSchemaString(table), - rowCount: 0 - }; - }); - prettyJson = options.prettyJson; - emptyExport = { - formatName: "dexie", - formatVersion: 1, - data: { - databaseName: db.name, - databaseVersion: db.verno, - tables, - data: [] - } - }; - progressCallback = options.progressCallback; - progress = { - done: false, - completedRows: 0, - completedTables: 0, - totalRows: NaN, - totalTables: tables.length - }; - _a.label = 1; - case 1: - _a.trys.push([1, , 6, 7]); - if (!options.noTransaction) return [3, 3]; - return [4, exportAll()]; - case 2: - _a.sent(); - return [3, 5]; - case 3: - return [4, db.transaction("r", db.tables, exportAll)]; - case 4: - _a.sent(); - _a.label = 5; - case 5: - return [3, 7]; - case 6: - TSON.finalize(); - return [ - 7 - /*endfinally*/ - ]; - case 7: - return [2, new Blob(slices, { type: "text/json" })]; - } - }); - }); -} -var VERSION = 1; -var fakeStream = { Stream: function() { -} }; -var clarinet_1 = createCommonjsModule(function(module, exports) { - (function(clarinet) { - var env = typeof process === "object" && process.env ? process.env : self; - clarinet.parser = function(opt) { - return new CParser(opt); - }; - clarinet.CParser = CParser; - clarinet.CStream = CStream; - clarinet.createStream = createStream; - clarinet.MAX_BUFFER_LENGTH = 10 * 1024 * 1024; - clarinet.DEBUG = env.CDEBUG === "debug"; - clarinet.INFO = env.CDEBUG === "debug" || env.CDEBUG === "info"; - clarinet.EVENTS = [ - "value", - "string", - "key", - "openobject", - "closeobject", - "openarray", - "closearray", - "error", - "end", - "ready" - ]; - var buffers = { - textNode: void 0, - numberNode: "" - }, streamWraps = clarinet.EVENTS.filter(function(ev) { - return ev !== "error" && ev !== "end"; - }), S = 0, Stream; - clarinet.STATE = { - BEGIN: S++, - VALUE: S++, - OPEN_OBJECT: S++, - CLOSE_OBJECT: S++, - OPEN_ARRAY: S++, - CLOSE_ARRAY: S++, - TEXT_ESCAPE: S++, - STRING: S++, - BACKSLASH: S++, - END: S++, - OPEN_KEY: S++, - CLOSE_KEY: S++, - TRUE: S++, - TRUE2: S++, - TRUE3: S++, - FALSE: S++, - FALSE2: S++, - FALSE3: S++, - FALSE4: S++, - NULL: S++, - NULL2: S++, - NULL3: S++, - NUMBER_DECIMAL_POINT: S++, - NUMBER_DIGIT: S++ - // [0-9] - }; - for (var s_ in clarinet.STATE) clarinet.STATE[clarinet.STATE[s_]] = s_; - S = clarinet.STATE; - const Char = { - tab: 9, - // \t - lineFeed: 10, - // \n - carriageReturn: 13, - // \r - space: 32, - // " " - doubleQuote: 34, - // " - plus: 43, - // + - comma: 44, - // , - minus: 45, - // - - period: 46, - // . - _0: 48, - // 0 - _9: 57, - // 9 - colon: 58, - // : - E: 69, - // E - openBracket: 91, - // [ - backslash: 92, - // \ - closeBracket: 93, - // ] - a: 97, - // a - b: 98, - // b - e: 101, - // e - f: 102, - // f - l: 108, - // l - n: 110, - // n - r: 114, - // r - s: 115, - // s - t: 116, - // t - u: 117, - // u - openBrace: 123, - // { - closeBrace: 125 - // } - }; - if (!Object.create) { - Object.create = function(o) { - function f() { - this["__proto__"] = o; - } - f.prototype = o; - return new f(); - }; - } - if (!Object.getPrototypeOf) { - Object.getPrototypeOf = function(o) { - return o["__proto__"]; - }; - } - if (!Object.keys) { - Object.keys = function(o) { - var a = []; - for (var i in o) if (o.hasOwnProperty(i)) a.push(i); - return a; - }; - } - function checkBufferLength(parser) { - var maxAllowed = Math.max(clarinet.MAX_BUFFER_LENGTH, 10), maxActual = 0; - for (var buffer in buffers) { - var len = parser[buffer] === void 0 ? 0 : parser[buffer].length; - if (len > maxAllowed) { - switch (buffer) { - case "text": - closeText(parser); - break; - default: - error(parser, "Max buffer length exceeded: " + buffer); - } - } - maxActual = Math.max(maxActual, len); - } - parser.bufferCheckPosition = clarinet.MAX_BUFFER_LENGTH - maxActual + parser.position; - } - function clearBuffers(parser) { - for (var buffer in buffers) { - parser[buffer] = buffers[buffer]; - } - } - var stringTokenPattern = /[\\"\n]/g; - function CParser(opt) { - if (!(this instanceof CParser)) return new CParser(opt); - var parser = this; - clearBuffers(parser); - parser.bufferCheckPosition = clarinet.MAX_BUFFER_LENGTH; - parser.q = parser.c = parser.p = ""; - parser.opt = opt || {}; - parser.closed = parser.closedRoot = parser.sawRoot = false; - parser.tag = parser.error = null; - parser.state = S.BEGIN; - parser.stack = new Array(); - parser.position = parser.column = 0; - parser.line = 1; - parser.slashed = false; - parser.unicodeI = 0; - parser.unicodeS = null; - parser.depth = 0; - emit(parser, "onready"); - } - CParser.prototype = { - end: function() { - end(this); - }, - write, - resume: function() { - this.error = null; - return this; - }, - close: function() { - return this.write(null); - } - }; - try { - Stream = fakeStream.Stream; - } catch (ex) { - Stream = function() { - }; - } - function createStream(opt) { - return new CStream(opt); - } - function CStream(opt) { - if (!(this instanceof CStream)) return new CStream(opt); - this._parser = new CParser(opt); - this.writable = true; - this.readable = true; - this.bytes_remaining = 0; - this.bytes_in_sequence = 0; - this.temp_buffs = { "2": new Buffer(2), "3": new Buffer(3), "4": new Buffer(4) }; - this.string = ""; - var me = this; - Stream.apply(me); - this._parser.onend = function() { - me.emit("end"); - }; - this._parser.onerror = function(er) { - me.emit("error", er); - me._parser.error = null; - }; - streamWraps.forEach(function(ev) { - Object.defineProperty( - me, - "on" + ev, - { - get: function() { - return me._parser["on" + ev]; - }, - set: function(h) { - if (!h) { - me.removeAllListeners(ev); - me._parser["on" + ev] = h; - return h; - } - me.on(ev, h); - }, - enumerable: true, - configurable: false - } - ); - }); - } - CStream.prototype = Object.create( - Stream.prototype, - { constructor: { value: CStream } } - ); - CStream.prototype.write = function(data) { - data = new Buffer(data); - for (var i = 0; i < data.length; i++) { - var n = data[i]; - if (this.bytes_remaining > 0) { - for (var j = 0; j < this.bytes_remaining; j++) { - this.temp_buffs[this.bytes_in_sequence][this.bytes_in_sequence - this.bytes_remaining + j] = data[j]; - } - this.string = this.temp_buffs[this.bytes_in_sequence].toString(); - this.bytes_in_sequence = this.bytes_remaining = 0; - i = i + j - 1; - this._parser.write(this.string); - this.emit("data", this.string); - continue; - } - if (this.bytes_remaining === 0 && n >= 128) { - if (n >= 194 && n <= 223) this.bytes_in_sequence = 2; - if (n >= 224 && n <= 239) this.bytes_in_sequence = 3; - if (n >= 240 && n <= 244) this.bytes_in_sequence = 4; - if (this.bytes_in_sequence + i > data.length) { - for (var k = 0; k <= data.length - 1 - i; k++) { - this.temp_buffs[this.bytes_in_sequence][k] = data[i + k]; - } - this.bytes_remaining = i + this.bytes_in_sequence - data.length; - return true; - } else { - this.string = data.slice(i, i + this.bytes_in_sequence).toString(); - i = i + this.bytes_in_sequence - 1; - this._parser.write(this.string); - this.emit("data", this.string); - continue; - } - } - for (var p = i; p < data.length; p++) { - if (data[p] >= 128) break; - } - this.string = data.slice(i, p).toString(); - this._parser.write(this.string); - this.emit("data", this.string); - i = p - 1; - continue; - } - }; - CStream.prototype.end = function(chunk) { - if (chunk && chunk.length) this._parser.write(chunk.toString()); - this._parser.end(); - return true; - }; - CStream.prototype.on = function(ev, handler) { - var me = this; - if (!me._parser["on" + ev] && streamWraps.indexOf(ev) !== -1) { - me._parser["on" + ev] = function() { - var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments); - args.splice(0, 0, ev); - me.emit.apply(me, args); - }; - } - return Stream.prototype.on.call(me, ev, handler); - }; - CStream.prototype.destroy = function() { - clearBuffers(this._parser); - this.emit("close"); - }; - function emit(parser, event, data) { - if (clarinet.INFO) console.log("-- emit", event, data); - if (parser[event]) parser[event](data); - } - function emitNode(parser, event, data) { - closeValue(parser); - emit(parser, event, data); - } - function closeValue(parser, event) { - parser.textNode = textopts(parser.opt, parser.textNode); - if (parser.textNode !== void 0) { - emit(parser, event ? event : "onvalue", parser.textNode); - } - parser.textNode = void 0; - } - function closeNumber(parser) { - if (parser.numberNode) - emit(parser, "onvalue", parseFloat(parser.numberNode)); - parser.numberNode = ""; - } - function textopts(opt, text) { - if (text === void 0) { - return text; - } - if (opt.trim) text = text.trim(); - if (opt.normalize) text = text.replace(/\s+/g, " "); - return text; - } - function error(parser, er) { - closeValue(parser); - er += "\nLine: " + parser.line + "\nColumn: " + parser.column + "\nChar: " + parser.c; - er = new Error(er); - parser.error = er; - emit(parser, "onerror", er); - return parser; - } - function end(parser) { - if (parser.state !== S.VALUE || parser.depth !== 0) - error(parser, "Unexpected end"); - closeValue(parser); - parser.c = ""; - parser.closed = true; - emit(parser, "onend"); - CParser.call(parser, parser.opt); - return parser; - } - function isWhitespace(c) { - return c === Char.carriageReturn || c === Char.lineFeed || c === Char.space || c === Char.tab; - } - function write(chunk) { - var parser = this; - if (this.error) throw this.error; - if (parser.closed) return error( - parser, - "Cannot write after close. Assign an onready handler." - ); - if (chunk === null) return end(parser); - var i = 0, c = chunk.charCodeAt(0), p = parser.p; - if (clarinet.DEBUG) console.log("write -> [" + chunk + "]"); - while (c) { - p = c; - parser.c = c = chunk.charCodeAt(i++); - if (p !== c) parser.p = p; - else p = parser.p; - if (!c) break; - if (clarinet.DEBUG) console.log(i, c, clarinet.STATE[parser.state]); - parser.position++; - if (c === Char.lineFeed) { - parser.line++; - parser.column = 0; - } else parser.column++; - switch (parser.state) { - case S.BEGIN: - if (c === Char.openBrace) parser.state = S.OPEN_OBJECT; - else if (c === Char.openBracket) parser.state = S.OPEN_ARRAY; - else if (!isWhitespace(c)) - error(parser, "Non-whitespace before {[."); - continue; - case S.OPEN_KEY: - case S.OPEN_OBJECT: - if (isWhitespace(c)) continue; - if (parser.state === S.OPEN_KEY) parser.stack.push(S.CLOSE_KEY); - else { - if (c === Char.closeBrace) { - emit(parser, "onopenobject"); - this.depth++; - emit(parser, "oncloseobject"); - this.depth--; - parser.state = parser.stack.pop() || S.VALUE; - continue; - } else parser.stack.push(S.CLOSE_OBJECT); - } - if (c === Char.doubleQuote) parser.state = S.STRING; - else error(parser, 'Malformed object key should start with "'); - continue; - case S.CLOSE_KEY: - case S.CLOSE_OBJECT: - if (isWhitespace(c)) continue; - parser.state === S.CLOSE_KEY ? "key" : "object"; - if (c === Char.colon) { - if (parser.state === S.CLOSE_OBJECT) { - parser.stack.push(S.CLOSE_OBJECT); - closeValue(parser, "onopenobject"); - this.depth++; - } else closeValue(parser, "onkey"); - parser.state = S.VALUE; - } else if (c === Char.closeBrace) { - emitNode(parser, "oncloseobject"); - this.depth--; - parser.state = parser.stack.pop() || S.VALUE; - } else if (c === Char.comma) { - if (parser.state === S.CLOSE_OBJECT) - parser.stack.push(S.CLOSE_OBJECT); - closeValue(parser); - parser.state = S.OPEN_KEY; - } else error(parser, "Bad object"); - continue; - case S.OPEN_ARRAY: - case S.VALUE: - if (isWhitespace(c)) continue; - if (parser.state === S.OPEN_ARRAY) { - emit(parser, "onopenarray"); - this.depth++; - parser.state = S.VALUE; - if (c === Char.closeBracket) { - emit(parser, "onclosearray"); - this.depth--; - parser.state = parser.stack.pop() || S.VALUE; - continue; - } else { - parser.stack.push(S.CLOSE_ARRAY); - } - } - if (c === Char.doubleQuote) parser.state = S.STRING; - else if (c === Char.openBrace) parser.state = S.OPEN_OBJECT; - else if (c === Char.openBracket) parser.state = S.OPEN_ARRAY; - else if (c === Char.t) parser.state = S.TRUE; - else if (c === Char.f) parser.state = S.FALSE; - else if (c === Char.n) parser.state = S.NULL; - else if (c === Char.minus) { - parser.numberNode += "-"; - } else if (Char._0 <= c && c <= Char._9) { - parser.numberNode += String.fromCharCode(c); - parser.state = S.NUMBER_DIGIT; - } else error(parser, "Bad value"); - continue; - case S.CLOSE_ARRAY: - if (c === Char.comma) { - parser.stack.push(S.CLOSE_ARRAY); - closeValue(parser, "onvalue"); - parser.state = S.VALUE; - } else if (c === Char.closeBracket) { - emitNode(parser, "onclosearray"); - this.depth--; - parser.state = parser.stack.pop() || S.VALUE; - } else if (isWhitespace(c)) - continue; - else error(parser, "Bad array"); - continue; - case S.STRING: - if (parser.textNode === void 0) { - parser.textNode = ""; - } - var starti = i - 1, slashed = parser.slashed, unicodeI = parser.unicodeI; - STRING_BIGLOOP: while (true) { - if (clarinet.DEBUG) - console.log( - i, - c, - clarinet.STATE[parser.state], - slashed - ); - while (unicodeI > 0) { - parser.unicodeS += String.fromCharCode(c); - c = chunk.charCodeAt(i++); - parser.position++; - if (unicodeI === 4) { - parser.textNode += String.fromCharCode(parseInt(parser.unicodeS, 16)); - unicodeI = 0; - starti = i - 1; - } else { - unicodeI++; - } - if (!c) break STRING_BIGLOOP; - } - if (c === Char.doubleQuote && !slashed) { - parser.state = parser.stack.pop() || S.VALUE; - parser.textNode += chunk.substring(starti, i - 1); - parser.position += i - 1 - starti; - break; - } - if (c === Char.backslash && !slashed) { - slashed = true; - parser.textNode += chunk.substring(starti, i - 1); - parser.position += i - 1 - starti; - c = chunk.charCodeAt(i++); - parser.position++; - if (!c) break; - } - if (slashed) { - slashed = false; - if (c === Char.n) { - parser.textNode += "\n"; - } else if (c === Char.r) { - parser.textNode += "\r"; - } else if (c === Char.t) { - parser.textNode += " "; - } else if (c === Char.f) { - parser.textNode += "\f"; - } else if (c === Char.b) { - parser.textNode += "\b"; - } else if (c === Char.u) { - unicodeI = 1; - parser.unicodeS = ""; - } else { - parser.textNode += String.fromCharCode(c); - } - c = chunk.charCodeAt(i++); - parser.position++; - starti = i - 1; - if (!c) break; - else continue; - } - stringTokenPattern.lastIndex = i; - var reResult = stringTokenPattern.exec(chunk); - if (reResult === null) { - i = chunk.length + 1; - parser.textNode += chunk.substring(starti, i - 1); - parser.position += i - 1 - starti; - break; - } - i = reResult.index + 1; - c = chunk.charCodeAt(reResult.index); - if (!c) { - parser.textNode += chunk.substring(starti, i - 1); - parser.position += i - 1 - starti; - break; - } - } - parser.slashed = slashed; - parser.unicodeI = unicodeI; - continue; - case S.TRUE: - if (c === Char.r) parser.state = S.TRUE2; - else error(parser, "Invalid true started with t" + c); - continue; - case S.TRUE2: - if (c === Char.u) parser.state = S.TRUE3; - else error(parser, "Invalid true started with tr" + c); - continue; - case S.TRUE3: - if (c === Char.e) { - emit(parser, "onvalue", true); - parser.state = parser.stack.pop() || S.VALUE; - } else error(parser, "Invalid true started with tru" + c); - continue; - case S.FALSE: - if (c === Char.a) parser.state = S.FALSE2; - else error(parser, "Invalid false started with f" + c); - continue; - case S.FALSE2: - if (c === Char.l) parser.state = S.FALSE3; - else error(parser, "Invalid false started with fa" + c); - continue; - case S.FALSE3: - if (c === Char.s) parser.state = S.FALSE4; - else error(parser, "Invalid false started with fal" + c); - continue; - case S.FALSE4: - if (c === Char.e) { - emit(parser, "onvalue", false); - parser.state = parser.stack.pop() || S.VALUE; - } else error(parser, "Invalid false started with fals" + c); - continue; - case S.NULL: - if (c === Char.u) parser.state = S.NULL2; - else error(parser, "Invalid null started with n" + c); - continue; - case S.NULL2: - if (c === Char.l) parser.state = S.NULL3; - else error(parser, "Invalid null started with nu" + c); - continue; - case S.NULL3: - if (c === Char.l) { - emit(parser, "onvalue", null); - parser.state = parser.stack.pop() || S.VALUE; - } else error(parser, "Invalid null started with nul" + c); - continue; - case S.NUMBER_DECIMAL_POINT: - if (c === Char.period) { - parser.numberNode += "."; - parser.state = S.NUMBER_DIGIT; - } else error(parser, "Leading zero not followed by ."); - continue; - case S.NUMBER_DIGIT: - if (Char._0 <= c && c <= Char._9) parser.numberNode += String.fromCharCode(c); - else if (c === Char.period) { - if (parser.numberNode.indexOf(".") !== -1) - error(parser, "Invalid number has two dots"); - parser.numberNode += "."; - } else if (c === Char.e || c === Char.E) { - if (parser.numberNode.indexOf("e") !== -1 || parser.numberNode.indexOf("E") !== -1) - error(parser, "Invalid number has two exponential"); - parser.numberNode += "e"; - } else if (c === Char.plus || c === Char.minus) { - if (!(p === Char.e || p === Char.E)) - error(parser, "Invalid symbol in number"); - parser.numberNode += String.fromCharCode(c); - } else { - closeNumber(parser); - i--; - parser.state = parser.stack.pop() || S.VALUE; - } - continue; - default: - error(parser, "Unknown state: " + parser.state); - } - } - if (parser.position >= parser.bufferCheckPosition) - checkBufferLength(parser); - return parser; - } - })(exports); -}); -function JsonStream(blob) { - var pos = 0; - var parser = JsonParser(true); - var rv = { - pullAsync: function(numBytes) { - return __awaiter(this, void 0, void 0, function() { - var slize, jsonPart, result; - return __generator(this, function(_a) { - switch (_a.label) { - case 0: - slize = blob.slice(pos, pos + numBytes); - pos += numBytes; - return [4, readBlobAsync(slize, "text")]; - case 1: - jsonPart = _a.sent(); - result = parser.write(jsonPart); - rv.result = result || {}; - return [2, result]; - } - }); - }); - }, - pullSync: function(numBytes) { - var slize = blob.slice(pos, pos + numBytes); - pos += numBytes; - var jsonPart = readBlobSync(slize, "text"); - var result = parser.write(jsonPart); - rv.result = result || {}; - return result; - }, - done: function() { - return parser.done(); - }, - eof: function() { - return pos >= blob.size; - }, - result: {} - }; - return rv; -} -function JsonParser(allowPartial) { - var parser = clarinet_1.parser(); - var level = 0; - var result; - var stack = []; - var obj; - var key; - var done = false; - var array = false; - parser.onopenobject = function(newKey) { - var newObj = {}; - newObj.incomplete = true; - if (!result) - result = newObj; - if (obj) { - stack.push([key, obj, array]); - if (allowPartial) { - if (array) { - obj.push(newObj); - } else { - obj[key] = newObj; - } - } - } - obj = newObj; - key = newKey; - array = false; - ++level; - }; - parser.onkey = function(newKey) { - return key = newKey; - }; - parser.onvalue = function(value) { - return array ? obj.push(value) : obj[key] = value; - }; - parser.oncloseobject = function() { - var _a; - delete obj.incomplete; - key = null; - if (--level === 0) { - done = true; - } else { - var completedObj = obj; - _a = stack.pop(), key = _a[0], obj = _a[1], array = _a[2]; - if (!allowPartial) { - if (array) { - obj.push(completedObj); - } else { - obj[key] = completedObj; - } - } - } - }; - parser.onopenarray = function() { - var newObj = []; - newObj.incomplete = true; - if (!result) - result = newObj; - if (obj) { - stack.push([key, obj, array]); - if (allowPartial) { - if (array) { - obj.push(newObj); - } else { - obj[key] = newObj; - } - } - } - obj = newObj; - array = true; - key = null; - ++level; - }; - parser.onclosearray = function() { - var _a; - delete obj.incomplete; - key = null; - if (--level === 0) { - done = true; - } else { - var completedObj = obj; - _a = stack.pop(), key = _a[0], obj = _a[1], array = _a[2]; - if (!allowPartial) { - if (array) { - obj.push(completedObj); - } else { - obj[key] = completedObj; - } - } - } - }; - return { - write: function(jsonPart) { - parser.write(jsonPart); - return result; - }, - done: function() { - return done; - } - }; -} -var DEFAULT_KILOBYTES_PER_CHUNK = 1024; -function importDB(exportedData, options) { - return __awaiter(this, void 0, void 0, function() { - var CHUNK_SIZE, stream, dbExport, db; - return __generator(this, function(_a) { - switch (_a.label) { - case 0: - options = options || {}; - CHUNK_SIZE = options.chunkSizeBytes || DEFAULT_KILOBYTES_PER_CHUNK * 1024; - return [4, loadUntilWeGotEnoughData(exportedData, CHUNK_SIZE)]; - case 1: - stream = _a.sent(); - dbExport = stream.result.data; - db = new Dexie$1(dbExport.databaseName); - db.version(dbExport.databaseVersion).stores(extractDbSchema(dbExport)); - return [4, importInto(db, stream, options)]; - case 2: - _a.sent(); - return [2, db]; - } - }); - }); -} -function importInto(db, exportedData, options) { - return __awaiter(this, void 0, void 0, function() { - function importAll() { - return __awaiter(this, void 0, void 0, function() { - var _loop_1, _i2, _a2, tableExport, state_1; - return __generator(this, function(_b) { - switch (_b.label) { - case 0: - _loop_1 = function(tableExport2) { - var tableName, table2, tableSchemaStr, sourceRows, rows, i, obj, filter, transform, filteredRows, _c, keys2, values; - return __generator(this, function(_d) { - switch (_d.label) { - case 0: - if (skipTables.includes(tableExport2.tableName)) - return [2, "continue"]; - if (!tableExport2.rows) - return [2, "break"]; - if (!tableExport2.rows.incomplete && tableExport2.rows.length === 0) - return [2, "continue"]; - if (progressCallback) { - Dexie$1.ignoreTransaction(function() { - return progressCallback(progress); - }); - } - tableName = tableExport2.tableName; - table2 = db.table(tableName); - tableSchemaStr = dbExport.tables.filter(function(t) { - return t.name === tableName; - })[0].schema; - if (!table2) { - if (!options.acceptMissingTables) - throw new Error("Exported table ".concat(tableExport2.tableName, " is missing in installed database")); - else - return [2, "continue"]; - } - if (!options.acceptChangedPrimaryKey && tableSchemaStr.split(",")[0] != table2.schema.primKey.src) { - throw new Error("Primary key differs for table ".concat(tableExport2.tableName, ". ")); - } - sourceRows = tableExport2.rows; - rows = []; - for (i = 0; i < sourceRows.length; i++) { - obj = sourceRows[i]; - if (!obj.incomplete) { - rows.push(TSON.revive(obj)); - } else { - break; - } - } - filter = options.filter; - transform = options.transform; - filteredRows = filter ? tableExport2.inbound ? rows.filter(function(value) { - return filter(tableName, value); - }) : rows.filter(function(_a3) { - var key = _a3[0], value = _a3[1]; - return filter(tableName, value, key); - }) : rows; - if (transform) { - filteredRows = filteredRows.map(tableExport2.inbound ? function(value) { - return transform(tableName, value).value; - } : function(_a3) { - var key = _a3[0], value = _a3[1]; - var res = transform(tableName, value, key); - return [res.key, res.value]; - }); - } - _c = tableExport2.inbound ? [void 0, filteredRows] : [filteredRows.map(function(row) { - return row[0]; - }), rows.map(function(row) { - return row[1]; - })], keys2 = _c[0], values = _c[1]; - if (!options.overwriteValues) return [3, 2]; - return [4, table2.bulkPut(values, keys2)]; - case 1: - _d.sent(); - return [3, 4]; - case 2: - return [4, table2.bulkAdd(values, keys2)]; - case 3: - _d.sent(); - _d.label = 4; - case 4: - progress.completedRows += rows.length; - if (!rows.incomplete) { - progress.completedTables += 1; - } - sourceRows.splice(0, rows.length); - return [ - 2 - /*return*/ - ]; - } - }); - }; - _i2 = 0, _a2 = dbExport.data; - _b.label = 1; - case 1: - if (!(_i2 < _a2.length)) return [3, 4]; - tableExport = _a2[_i2]; - return [5, _loop_1(tableExport)]; - case 2: - state_1 = _b.sent(); - if (state_1 === "break") - return [3, 4]; - _b.label = 3; - case 3: - _i2++; - return [3, 1]; - case 4: - while (dbExport.data.length > 0 && dbExport.data[0].rows && !dbExport.data[0].rows.incomplete) { - dbExport.data.splice(0, 1); - } - if (!(!jsonStream.done() && !jsonStream.eof())) return [3, 8]; - if (!readBlobsSynchronously2) return [3, 5]; - jsonStream.pullSync(CHUNK_SIZE); - return [3, 7]; - case 5: - return [4, Dexie$1.waitFor(jsonStream.pullAsync(CHUNK_SIZE))]; - case 6: - _b.sent(); - _b.label = 7; - case 7: - return [3, 9]; - case 8: - return [3, 10]; - case 9: - return [3, 0]; - case 10: - return [ - 2 - /*return*/ - ]; - } - }); - }); - } - var CHUNK_SIZE, jsonStream, dbExportFile, readBlobsSynchronously2, dbExport, skipTables, progressCallback, progress, _i, _a, table; - return __generator(this, function(_b) { - switch (_b.label) { - case 0: - options = options || {}; - CHUNK_SIZE = options.chunkSizeBytes || DEFAULT_KILOBYTES_PER_CHUNK * 1024; - return [4, loadUntilWeGotEnoughData(exportedData, CHUNK_SIZE)]; - case 1: - jsonStream = _b.sent(); - dbExportFile = jsonStream.result; - readBlobsSynchronously2 = "FileReaderSync" in self; - dbExport = dbExportFile.data; - skipTables = options.skipTables ? options.skipTables : []; - if (!options.acceptNameDiff && db.name !== dbExport.databaseName) - throw new Error("Name differs. Current database name is ".concat(db.name, " but export is ").concat(dbExport.databaseName)); - if (!options.acceptVersionDiff && db.verno !== dbExport.databaseVersion) { - throw new Error("Database version differs. Current database is in version ".concat(db.verno, " but export is ").concat(dbExport.databaseVersion)); - } - progressCallback = options.progressCallback; - progress = { - done: false, - completedRows: 0, - completedTables: 0, - totalRows: dbExport.tables.reduce(function(p, c) { - return p + c.rowCount; - }, 0), - totalTables: dbExport.tables.length - }; - if (progressCallback) { - Dexie$1.ignoreTransaction(function() { - return progressCallback(progress); - }); - } - if (!options.clearTablesBeforeImport) return [3, 5]; - _i = 0, _a = db.tables; - _b.label = 2; - case 2: - if (!(_i < _a.length)) return [3, 5]; - table = _a[_i]; - if (skipTables.includes(table.name)) - return [3, 4]; - return [4, table.clear()]; - case 3: - _b.sent(); - _b.label = 4; - case 4: - _i++; - return [3, 2]; - case 5: - if (!options.noTransaction) return [3, 7]; - return [4, importAll()]; - case 6: - _b.sent(); - return [3, 9]; - case 7: - return [4, db.transaction("rw", db.tables, importAll)]; - case 8: - _b.sent(); - _b.label = 9; - case 9: - progress.done = true; - if (progressCallback) { - Dexie$1.ignoreTransaction(function() { - return progressCallback(progress); - }); - } - return [ - 2 - /*return*/ - ]; - } - }); - }); -} -function loadUntilWeGotEnoughData(exportedData, CHUNK_SIZE) { - return __awaiter(this, void 0, void 0, function() { - var stream, dbExportFile; - return __generator(this, function(_a) { - switch (_a.label) { - case 0: - stream = "slice" in exportedData ? JsonStream(exportedData) : exportedData; - _a.label = 1; - case 1: - if (!!stream.eof()) return [3, 3]; - return [4, stream.pullAsync(CHUNK_SIZE)]; - case 2: - _a.sent(); - if (stream.result.data && stream.result.data.data) - return [3, 3]; - return [3, 1]; - case 3: - dbExportFile = stream.result; - if (!dbExportFile || dbExportFile.formatName != "dexie") - throw new Error("Given file is not a dexie export"); - if (dbExportFile.formatVersion > VERSION) { - throw new Error("Format version ".concat(dbExportFile.formatVersion, " not supported")); - } - if (!dbExportFile.data) { - throw new Error("No data in export file"); - } - if (!dbExportFile.data.databaseName) { - throw new Error("Missing databaseName in export file"); - } - if (!dbExportFile.data.databaseVersion) { - throw new Error("Missing databaseVersion in export file"); - } - if (!dbExportFile.data.tables) { - throw new Error("Missing tables in export file"); - } - return [2, stream]; - } - }); - }); -} -Dexie$1.prototype.export = function(options) { - return exportDB(this, options); -}; -Dexie$1.prototype.import = function(blob, options) { - return importInto(this, blob, options); -}; -Dexie$1.import = function(blob, options) { - return importDB(blob, options); -}; -export { - Dexie$1 as Dexie -}; -/*! Bundled license information: - -dexie-export-import/dist/dexie-export-import.mjs: - (*! ***************************************************************************** - Copyright (c) Microsoft Corporation. - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. - ***************************************************************************** *) -*/ -//# sourceMappingURL=dexie.js.map diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/dexie.js.map b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/dexie.js.map deleted file mode 100644 index 906b748..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/dexie.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../node_modules/dexie/src/globals/global.ts", "../../node_modules/dexie/src/functions/utils.ts", "../../node_modules/dexie/src/helpers/debug.ts", "../../node_modules/dexie/src/errors/errors.js", "../../node_modules/dexie/src/functions/chaining-functions.js", "../../node_modules/dexie/src/helpers/promise.js", "../../node_modules/dexie/src/functions/temp-transaction.ts", "../../node_modules/dexie/src/globals/constants.ts", "../../node_modules/dexie/src/functions/combine.ts", "../../node_modules/dexie/src/dbcore/keyrange.ts", "../../node_modules/dexie/src/functions/workaround-undefined-primkey.ts", "../../node_modules/dexie/src/classes/table/table.ts", "../../node_modules/dexie/src/helpers/Events.js", "../../node_modules/dexie/src/functions/make-class-constructor.ts", "../../node_modules/dexie/src/classes/table/table-constructor.ts", "../../node_modules/dexie/src/classes/collection/collection-helpers.ts", "../../node_modules/dexie/src/functions/cmp.ts", "../../node_modules/dexie/src/classes/collection/collection.ts", "../../node_modules/dexie/src/classes/collection/collection-constructor.ts", "../../node_modules/dexie/src/functions/compare-functions.ts", "../../node_modules/dexie/src/classes/where-clause/where-clause-helpers.ts", "../../node_modules/dexie/src/classes/where-clause/where-clause.ts", "../../node_modules/dexie/src/classes/where-clause/where-clause-constructor.ts", "../../node_modules/dexie/src/functions/event-wrappers.ts", "../../node_modules/dexie/src/globals/global-events.ts", "../../node_modules/dexie/src/classes/transaction/transaction.ts", "../../node_modules/dexie/src/classes/transaction/transaction-constructor.ts", "../../node_modules/dexie/src/helpers/index-spec.ts", "../../node_modules/dexie/src/helpers/table-schema.ts", "../../node_modules/dexie/src/functions/quirks.ts", "../../node_modules/dexie/src/dbcore/get-key-extractor.ts", "../../node_modules/dexie/src/dbcore/dbcore-indexeddb.ts", "../../node_modules/dexie/src/classes/dexie/generate-middleware-stacks.ts", "../../node_modules/dexie/src/classes/version/schema-helpers.ts", "../../node_modules/dexie/src/classes/version/version.ts", "../../node_modules/dexie/src/classes/version/version-constructor.ts", "../../node_modules/dexie/src/helpers/database-enumerator.ts", "../../node_modules/dexie/src/classes/dexie/vip.ts", "../../node_modules/dexie/node_modules/safari-14-idb-fix/dist/index.js", "../../node_modules/dexie/src/classes/dexie/dexie-open.ts", "../../node_modules/dexie/src/helpers/yield-support.ts", "../../node_modules/dexie/src/classes/dexie/transaction-helpers.ts", "../../node_modules/dexie/src/dbcore/virtual-index-middleware.ts", "../../node_modules/dexie/src/functions/get-object-diff.ts", "../../node_modules/dexie/src/dbcore/get-effective-keys.ts", "../../node_modules/dexie/src/hooks/hooks-middleware.ts", "../../node_modules/dexie/src/dbcore/cache-existing-values-middleware.ts", "../../node_modules/dexie/src/helpers/rangeset.ts", "../../node_modules/dexie/src/live-query/observability-middleware.ts", "../../node_modules/dexie/src/classes/dexie/dexie.ts", "../../node_modules/dexie/src/classes/observable/observable.ts", "../../node_modules/dexie/src/live-query/extend-observability-set.ts", "../../node_modules/dexie/src/live-query/live-query.ts", "../../node_modules/dexie/src/classes/dexie/dexie-dom-dependencies.ts", "../../node_modules/dexie/src/classes/dexie/dexie-static-props.ts", "../../node_modules/dexie/src/live-query/propagate-locally.ts", "../../node_modules/dexie/src/live-query/enable-broadcast.ts", "../../node_modules/dexie/src/index.ts", "../../node_modules/.pnpm/tslib@2.3.1/node_modules/tslib/tslib.es6.js", "../../node_modules/dexie-export-import/src/helpers.ts", "../../node_modules/.pnpm/typeson@5.18.2_core-js-bundle@3.34.0_regenerator-runtime@0.13.11/node_modules/typeson/dist/typeson.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/node_modules/typeson/dist/typeson-esm.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/node_modules/base64-arraybuffer-es6/dist/base64-arraybuffer-es.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/user-object.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/presets/array-nonindex-keys.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/undef.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/primitive-objects.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/presets/special-numbers.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/nan.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/infinity.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/negative-infinity.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/date.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/regexp.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/map.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/set.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/arraybuffer.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/typed-arrays.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/dataview.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/intl-types.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/utils/stringArrayBuffer.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/file.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/bigint.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/bigint-object.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/cryptokey.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/presets/structured-cloning.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/imagedata.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/imagebitmap.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/filelist.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/blob.js", "../../node_modules/.pnpm/base64-arraybuffer-es6@1.0.0/node_modules/base64-arraybuffer-es6/dist/base64-arraybuffer-es.js", "../../node_modules/dexie-export-import/src/tson-typed-array.ts", "../../node_modules/dexie-export-import/src/tson-arraybuffer.ts", "../../node_modules/dexie-export-import/src/tson.ts", "../../node_modules/dexie-export-import/src/export.ts", "../../node_modules/dexie-export-import/src/json-structure.ts", "../../node_modules/dexie-export-import/tools/build-configs/fake-stream.js", "../../node_modules/.pnpm/github.com+dfahlander+clarinet@d1dc89f7e67488b16ad98b2464d29a9b3bc6f5ef/node_modules/clarinet/clarinet.js", "../../node_modules/dexie-export-import/src/json-stream.ts", "../../node_modules/dexie-export-import/src/import.ts", "../../node_modules/dexie-export-import/src/dexie-export-import.ts"], - "sourcesContent": ["declare var global;\nexport const _global: any =\n typeof globalThis !== 'undefined' ? globalThis :\n typeof self !== 'undefined' ? self :\n typeof window !== 'undefined' ? window :\n global;\n", "import { _global } from \"../globals/global\";\nexport const keys = Object.keys;\nexport const isArray = Array.isArray;\nif (typeof Promise !== 'undefined' && !_global.Promise){\n // In jsdom, this it can be the case that Promise is not put on the global object.\n // If so, we need to patch the global object for the rest of the code to work as expected.\n // Other dexie code expects Promise to be on the global object (like normal browser environments)\n _global.Promise = Promise;\n}\nexport { _global }\n\nexport function extend(obj: T, extension: X): T & X {\n if (typeof extension !== 'object') return obj as T & X;\n keys(extension).forEach(function (key) {\n obj[key] = extension[key];\n });\n return obj as T & X;\n}\n\nexport const getProto = Object.getPrototypeOf;\nexport const _hasOwn = {}.hasOwnProperty;\nexport function hasOwn(obj, prop) {\n return _hasOwn.call(obj, prop);\n}\n\nexport function props (proto, extension) {\n if (typeof extension === 'function') extension = extension(getProto(proto));\n (typeof Reflect === \"undefined\" ? keys : Reflect.ownKeys)(extension).forEach(key => {\n setProp(proto, key, extension[key]);\n });\n}\n\nexport const defineProperty = Object.defineProperty;\n\nexport function setProp(obj, prop, functionOrGetSet, options?) {\n defineProperty(obj, prop, extend(functionOrGetSet && hasOwn(functionOrGetSet, \"get\") && typeof functionOrGetSet.get === 'function' ?\n {get: functionOrGetSet.get, set: functionOrGetSet.set, configurable: true} :\n {value: functionOrGetSet, configurable: true, writable: true}, options));\n}\n\nexport function derive(Child) {\n return {\n from: function (Parent) {\n Child.prototype = Object.create(Parent.prototype);\n setProp(Child.prototype, \"constructor\", Child);\n return {\n extend: props.bind(null, Child.prototype)\n };\n }\n };\n}\n\nexport const getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\nexport function getPropertyDescriptor(obj, prop) {\n const pd = getOwnPropertyDescriptor(obj, prop);\n let proto;\n return pd || (proto = getProto(obj)) && getPropertyDescriptor (proto, prop);\n}\n\nconst _slice = [].slice;\nexport function slice(args, start?, end?) {\n return _slice.call(args, start, end);\n}\n\nexport function override(origFunc, overridedFactory) {\n return overridedFactory(origFunc);\n}\n\nexport function assert (b) {\n if (!b) throw new Error(\"Assertion Failed\");\n}\n\nexport function asap(fn) {\n // @ts-ignore\n if (_global.setImmediate) setImmediate(fn); else setTimeout(fn, 0);\n}\n\nexport function getUniqueArray(a) {\n return a.filter((value, index, self) => self.indexOf(value) === index);\n}\n\n/** Generate an object (hash map) based on given array.\n * @param extractor Function taking an array item and its index and returning an array of 2 items ([key, value]) to\n * instert on the resulting object for each item in the array. If this function returns a falsy value, the\n * current item wont affect the resulting object.\n */\nexport function arrayToObject (array: T[], extractor: (x:T, idx: number)=>[string, R]): {[name: string]: R} {\n return array.reduce((result, item, i) => {\n var nameAndValue = extractor(item, i);\n if (nameAndValue) result[nameAndValue[0]] = nameAndValue[1];\n return result;\n }, {});\n}\n\nexport function trycatcher(fn, reject) {\n return function () {\n try {\n fn.apply(this, arguments);\n } catch (e) {\n reject(e);\n }\n };\n}\n\nexport function tryCatch(fn: (...args: any[])=>void, onerror, args?) : void {\n try {\n fn.apply(null, args);\n } catch (ex) {\n onerror && onerror(ex);\n }\n}\n\nexport function getByKeyPath(obj, keyPath) {\n // http://www.w3.org/TR/IndexedDB/#steps-for-extracting-a-key-from-a-value-using-a-key-path\n if (typeof keyPath === 'string' && hasOwn(obj, keyPath)) return obj[keyPath]; // This line is moved from last to first for optimization purpose.\n if (!keyPath) return obj;\n if (typeof keyPath !== 'string') {\n var rv = [];\n for (var i = 0, l = keyPath.length; i < l; ++i) {\n var val = getByKeyPath(obj, keyPath[i]);\n rv.push(val);\n }\n return rv;\n }\n var period = keyPath.indexOf('.');\n if (period !== -1) {\n var innerObj = obj[keyPath.substr(0, period)];\n return innerObj === undefined ? undefined : getByKeyPath(innerObj, keyPath.substr(period + 1));\n }\n return undefined;\n}\n\nexport function setByKeyPath(obj, keyPath, value) {\n if (!obj || keyPath === undefined) return;\n if ('isFrozen' in Object && Object.isFrozen(obj)) return;\n if (typeof keyPath !== 'string' && 'length' in keyPath) {\n assert(typeof value !== 'string' && 'length' in value);\n for (var i = 0, l = keyPath.length; i < l; ++i) {\n setByKeyPath(obj, keyPath[i], value[i]);\n }\n } else {\n var period = keyPath.indexOf('.');\n if (period !== -1) {\n var currentKeyPath = keyPath.substr(0, period);\n var remainingKeyPath = keyPath.substr(period + 1);\n if (remainingKeyPath === \"\")\n if (value === undefined) {\n if (isArray(obj) && !isNaN(parseInt(currentKeyPath))) obj.splice(currentKeyPath, 1);\n else delete obj[currentKeyPath];\n } else obj[currentKeyPath] = value;\n else {\n var innerObj = obj[currentKeyPath];\n if (!innerObj || !hasOwn(obj, currentKeyPath)) innerObj = (obj[currentKeyPath] = {});\n setByKeyPath(innerObj, remainingKeyPath, value);\n }\n } else {\n if (value === undefined) {\n if (isArray(obj) && !isNaN(parseInt(keyPath))) obj.splice(keyPath, 1);\n else delete obj[keyPath];\n } else obj[keyPath] = value;\n }\n }\n}\n\nexport function delByKeyPath(obj, keyPath) {\n if (typeof keyPath === 'string')\n setByKeyPath(obj, keyPath, undefined);\n else if ('length' in keyPath)\n [].map.call(keyPath, function(kp) {\n setByKeyPath(obj, kp, undefined);\n });\n}\n\nexport function shallowClone(obj) {\n var rv = {};\n for (var m in obj) {\n if (hasOwn(obj, m)) rv[m] = obj[m];\n }\n return rv;\n}\n\nconst concat = [].concat;\nexport function flatten (a: (T | T[])[]) : T[] {\n return concat.apply([], a);\n}\n\n//https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm\nconst intrinsicTypeNames =\n \"BigUint64Array,BigInt64Array,Array,Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,FileSystemDirectoryHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey\"\n .split(',').concat(\n flatten([8,16,32,64].map(num=>[\"Int\",\"Uint\",\"Float\"].map(t=>t+num+\"Array\")))\n ).filter(t=>_global[t]);\nconst intrinsicTypes = intrinsicTypeNames.map(t=>_global[t]);\nexport const intrinsicTypeNameSet = arrayToObject(intrinsicTypeNames, x=>[x,true]);\n\nlet circularRefs: null | WeakMap = null;\nexport function deepClone(any: T): T {\n circularRefs = typeof WeakMap !== 'undefined' && new WeakMap();\n const rv = innerDeepClone(any);\n circularRefs = null;\n return rv;\n}\n\nfunction innerDeepClone(any: T): T {\n if (!any || typeof any !== 'object') return any;\n let rv = circularRefs && circularRefs.get(any); // Resolve circular references\n if (rv) return rv;\n if (isArray(any)) {\n rv = [];\n circularRefs && circularRefs.set(any, rv);\n for (var i = 0, l = any.length; i < l; ++i) {\n rv.push(innerDeepClone(any[i]));\n }\n } else if (intrinsicTypes.indexOf(any.constructor) >= 0) {\n rv = any;\n } else {\n const proto = getProto(any);\n rv = proto === Object.prototype ? {} : Object.create(proto);\n circularRefs && circularRefs.set(any, rv);\n for (var prop in any) {\n if (hasOwn(any, prop)) {\n rv[prop] = innerDeepClone(any[prop]);\n }\n }\n }\n return rv;\n}\n\nconst {toString} = {};\nexport function toStringTag(o: Object) {\n return toString.call(o).slice(8, -1);\n}\n\n// If first argument is iterable or array-like, return it as an array\nexport const iteratorSymbol = typeof Symbol !== 'undefined' ?\n Symbol.iterator :\n '@@iterator';\nexport const getIteratorOf = typeof iteratorSymbol === \"symbol\" ? function(x) {\n var i;\n return x != null && (i = x[iteratorSymbol]) && i.apply(x);\n} : function () { return null; };\nexport const asyncIteratorSymbol = typeof Symbol !== 'undefined'\n ? Symbol.asyncIterator || Symbol.for(\"Symbol.asyncIterator\")\n : '@asyncIterator';\n\nexport const NO_CHAR_ARRAY = {};\n// Takes one or several arguments and returns an array based on the following criteras:\n// * If several arguments provided, return arguments converted to an array in a way that\n// still allows javascript engine to optimize the code.\n// * If single argument is an array, return a clone of it.\n// * If this-pointer equals NO_CHAR_ARRAY, don't accept strings as valid iterables as a special\n// case to the two bullets below.\n// * If single argument is an iterable, convert it to an array and return the resulting array.\n// * If single argument is array-like (has length of type number), convert it to an array.\nexport function getArrayOf (arrayLike) {\n var i, a, x, it;\n if (arguments.length === 1) {\n if (isArray(arrayLike)) return arrayLike.slice();\n if (this === NO_CHAR_ARRAY && typeof arrayLike === 'string') return [arrayLike];\n if ((it = getIteratorOf(arrayLike))) {\n a = [];\n while ((x = it.next()), !x.done) a.push(x.value);\n return a;\n }\n if (arrayLike == null) return [arrayLike];\n i = arrayLike.length;\n if (typeof i === 'number') {\n a = new Array(i);\n while (i--) a[i] = arrayLike[i];\n return a;\n }\n return [arrayLike];\n }\n i = arguments.length;\n a = new Array(i);\n while (i--) a[i] = arguments[i];\n return a;\n}\nexport const isAsyncFunction = typeof Symbol !== 'undefined'\n ? (fn: Function) => fn[Symbol.toStringTag] === 'AsyncFunction'\n : ()=>false;\n", "// By default, debug will be true only if platform is a web platform and its page is served from localhost.\n// When debug = true, error's stacks will contain asyncronic long stacks.\nexport var debug = typeof location !== 'undefined' &&\n // By default, use debug mode if served from localhost.\n /^(http|https):\\/\\/(localhost|127\\.0\\.0\\.1)/.test(location.href);\n\nexport function setDebug(value, filter) {\n debug = value;\n libraryFilter = filter;\n}\n\nexport var libraryFilter = () => true;\n\nexport const NEEDS_THROW_FOR_STACK = !new Error(\"\").stack;\n\nexport function getErrorWithStack() {\n \"use strict\";\n if (NEEDS_THROW_FOR_STACK) try {\n // Doing something naughty in strict mode here to trigger a specific error\n // that can be explicitely ignored in debugger's exception settings.\n // If we'd just throw new Error() here, IE's debugger's exception settings\n // will just consider it as \"exception thrown by javascript code\" which is\n // something you wouldn't want it to ignore.\n getErrorWithStack.arguments;\n throw new Error(); // Fallback if above line don't throw.\n } catch(e) {\n return e;\n }\n return new Error();\n}\n\nexport function prettyStack(exception, numIgnoredFrames) {\n var stack = exception.stack;\n if (!stack) return \"\";\n numIgnoredFrames = (numIgnoredFrames || 0);\n if (stack.indexOf(exception.name) === 0)\n numIgnoredFrames += (exception.name + exception.message).split('\\n').length;\n return stack.split('\\n')\n .slice(numIgnoredFrames)\n .filter(libraryFilter)\n .map(frame => \"\\n\" + frame)\n .join('');\n}\n\n// TODO: Replace this in favor of a decorator instead.\nexport function deprecated (what: string, fn: (...args)=>T) {\n return function () {\n console.warn(`${what} is deprecated. See https://dexie.org/docs/Deprecations. ${prettyStack(getErrorWithStack(), 1)}`);\n return fn.apply(this, arguments);\n } as (...args)=>T\n}\n", "import { derive, setProp } from '../functions/utils';\nimport { getErrorWithStack, prettyStack } from '../helpers/debug';\n\nvar dexieErrorNames = [\n 'Modify',\n 'Bulk',\n 'OpenFailed',\n 'VersionChange',\n 'Schema',\n 'Upgrade',\n 'InvalidTable',\n 'MissingAPI',\n 'NoSuchDatabase',\n 'InvalidArgument',\n 'SubTransaction',\n 'Unsupported',\n 'Internal',\n 'DatabaseClosed',\n 'PrematureCommit',\n 'ForeignAwait'\n];\n\nvar idbDomErrorNames = [\n 'Unknown',\n 'Constraint',\n 'Data',\n 'TransactionInactive',\n 'ReadOnly',\n 'Version',\n 'NotFound',\n 'InvalidState',\n 'InvalidAccess',\n 'Abort',\n 'Timeout',\n 'QuotaExceeded',\n 'Syntax',\n 'DataClone'\n];\n\nvar errorList = dexieErrorNames.concat(idbDomErrorNames);\n\nvar defaultTexts = {\n VersionChanged: \"Database version changed by other database connection\",\n DatabaseClosed: \"Database has been closed\",\n Abort: \"Transaction aborted\",\n TransactionInactive: \"Transaction has already completed or failed\",\n MissingAPI: \"IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb\"\n};\n\n//\n// DexieError - base class of all out exceptions.\n//\nexport function DexieError (name, msg) {\n // Reason we don't use ES6 classes is because:\n // 1. It bloats transpiled code and increases size of minified code.\n // 2. It doesn't give us much in this case.\n // 3. It would require sub classes to call super(), which\n // is not needed when deriving from Error.\n this._e = getErrorWithStack();\n this.name = name;\n this.message = msg;\n}\n\nderive(DexieError).from(Error).extend({\n stack: {\n get: function() {\n return this._stack ||\n (this._stack = this.name + \": \" + this.message + prettyStack(this._e, 2));\n }\n },\n toString: function(){ return this.name + \": \" + this.message; }\n});\n\nfunction getMultiErrorMessage (msg, failures) {\n return msg + \". Errors: \" + Object.keys(failures)\n .map(key=>failures[key].toString())\n .filter((v,i,s)=>s.indexOf(v) === i) // Only unique error strings\n .join('\\n');\n}\n\n//\n// ModifyError - thrown in Collection.modify()\n// Specific constructor because it contains members failures and failedKeys.\n//\nexport function ModifyError (msg, failures, successCount, failedKeys) {\n this._e = getErrorWithStack();\n this.failures = failures;\n this.failedKeys = failedKeys;\n this.successCount = successCount;\n this.message = getMultiErrorMessage(msg, failures);\n}\nderive(ModifyError).from(DexieError);\n\nexport function BulkError (msg, failures) {\n this._e = getErrorWithStack();\n this.name = \"BulkError\";\n this.failures = Object.keys(failures).map(pos => failures[pos]);\n this.failuresByPos = failures;\n this.message = getMultiErrorMessage(msg, failures);\n}\nderive(BulkError).from(DexieError);\n\n//\n//\n// Dynamically generate error names and exception classes based\n// on the names in errorList.\n//\n//\n\n// Map of {ErrorName -> ErrorName + \"Error\"}\nexport var errnames = errorList.reduce((obj,name)=>(obj[name]=name+\"Error\",obj),{});\n\n// Need an alias for DexieError because we're gonna create subclasses with the same name.\nconst BaseException = DexieError;\n// Map of {ErrorName -> exception constructor}\nexport var exceptions = errorList.reduce((obj,name)=>{\n // Let the name be \"DexieError\" because this name may\n // be shown in call stack and when debugging. DexieError is\n // the most true name because it derives from DexieError,\n // and we cannot change Function.name programatically without\n // dynamically create a Function object, which would be considered\n // 'eval-evil'.\n var fullName = name + \"Error\";\n function DexieError (msgOrInner, inner){\n this._e = getErrorWithStack();\n this.name = fullName;\n if (!msgOrInner) {\n this.message = defaultTexts[name] || fullName;\n this.inner = null;\n } else if (typeof msgOrInner === 'string') {\n this.message = `${msgOrInner}${!inner ? '' : '\\n ' + inner}`;\n this.inner = inner || null;\n } else if (typeof msgOrInner === 'object') {\n this.message = `${msgOrInner.name} ${msgOrInner.message}`;\n this.inner = msgOrInner;\n }\n }\n derive(DexieError).from(BaseException);\n obj[name]=DexieError;\n return obj;\n},{});\n\n// Use ECMASCRIPT standard exceptions where applicable:\nexceptions.Syntax = SyntaxError;\nexceptions.Type = TypeError;\nexceptions.Range = RangeError;\n\nexport var exceptionMap = idbDomErrorNames.reduce((obj, name)=>{\n obj[name + \"Error\"] = exceptions[name];\n return obj;\n}, {});\n\nexport function mapError (domError, message) {\n if (!domError || domError instanceof DexieError || domError instanceof TypeError || domError instanceof SyntaxError || !domError.name || !exceptionMap[domError.name])\n return domError;\n var rv = new exceptionMap[domError.name](message || domError.message, domError);\n if (\"stack\" in domError) {\n // Derive stack from inner exception if it has a stack\n setProp(rv, \"stack\", {get: function(){\n return this.inner.stack;\n }});\n }\n return rv;\n}\n\nexport var fullNameExceptions = errorList.reduce((obj, name)=>{\n if ([\"Syntax\",\"Type\",\"Range\"].indexOf(name) === -1)\n obj[name + \"Error\"] = exceptions[name];\n return obj;\n}, {});\n\nfullNameExceptions.ModifyError = ModifyError;\nfullNameExceptions.DexieError = DexieError;\nfullNameExceptions.BulkError = BulkError;\n", "import {extend} from './utils';\n\nexport function nop() { }\nexport function mirror(val) { return val; }\nexport function pureFunctionChain(f1, f2) {\n // Enables chained events that takes ONE argument and returns it to the next function in chain.\n // This pattern is used in the hook(\"reading\") event.\n if (f1 == null || f1 === mirror) return f2;\n return function (val) {\n return f2(f1(val));\n };\n}\n\nexport function callBoth(on1, on2) {\n return function () {\n on1.apply(this, arguments);\n on2.apply(this, arguments);\n };\n}\n\nexport function hookCreatingChain(f1, f2) {\n // Enables chained events that takes several arguments and may modify first argument by making a modification and then returning the same instance.\n // This pattern is used in the hook(\"creating\") event.\n if (f1 === nop) return f2;\n return function () {\n var res = f1.apply(this, arguments);\n if (res !== undefined) arguments[0] = res;\n var onsuccess = this.onsuccess, // In case event listener has set this.onsuccess\n onerror = this.onerror; // In case event listener has set this.onerror\n this.onsuccess = null;\n this.onerror = null;\n var res2 = f2.apply(this, arguments);\n if (onsuccess) this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror) this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n return res2 !== undefined ? res2 : res;\n };\n}\n\nexport function hookDeletingChain(f1, f2) {\n if (f1 === nop) return f2;\n return function () {\n f1.apply(this, arguments);\n var onsuccess = this.onsuccess, // In case event listener has set this.onsuccess\n onerror = this.onerror; // In case event listener has set this.onerror\n this.onsuccess = this.onerror = null;\n f2.apply(this, arguments);\n if (onsuccess) this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror) this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n };\n}\n\nexport function hookUpdatingChain(f1, f2) {\n if (f1 === nop) return f2;\n return function (modifications) {\n var res = f1.apply(this, arguments);\n extend(modifications, res); // If f1 returns new modifications, extend caller's modifications with the result before calling next in chain.\n var onsuccess = this.onsuccess, // In case event listener has set this.onsuccess\n onerror = this.onerror; // In case event listener has set this.onerror\n this.onsuccess = null;\n this.onerror = null;\n var res2 = f2.apply(this, arguments);\n if (onsuccess) this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror) this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n return res === undefined ?\n (res2 === undefined ? undefined : res2) :\n (extend(res, res2));\n };\n}\n\nexport function reverseStoppableEventChain(f1, f2) {\n if (f1 === nop) return f2;\n return function () {\n if (f2.apply(this, arguments) === false) return false;\n return f1.apply(this, arguments);\n };\n}\n\nexport function nonStoppableEventChain(f1, f2) {\n if (f1 === nop) return f2;\n return function () {\n f1.apply(this, arguments);\n f2.apply(this, arguments);\n };\n}\n\nexport function promisableChain(f1, f2) {\n if (f1 === nop) return f2;\n return function () {\n var res = f1.apply(this, arguments);\n if (res && typeof res.then === 'function') {\n var thiz = this,\n i = arguments.length,\n args = new Array(i);\n while (i--) args[i] = arguments[i];\n return res.then(function () {\n return f2.apply(thiz, args);\n });\n }\n return f2.apply(this, arguments);\n };\n}\n", "/*\n * Copyright (c) 2014-2017 David Fahlander\n * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/LICENSE-2.0\n */\nimport { _global } from '../globals/global';\nimport {tryCatch, props, setProp, _global,\n getPropertyDescriptor, getArrayOf, extend, getProto} from '../functions/utils';\nimport {nop, callBoth, mirror} from '../functions/chaining-functions';\nimport {debug, prettyStack, getErrorWithStack} from './debug';\nimport {exceptions} from '../errors';\n\n//\n// Promise and Zone (PSD) for Dexie library\n//\n// I started out writing this Promise class by copying promise-light (https://github.com/taylorhakes/promise-light) by\n// https://github.com/taylorhakes - an A+ and ECMASCRIPT 6 compliant Promise implementation.\n//\n// In previous versions this was fixed by not calling setTimeout when knowing that the resolve() or reject() came from another\n// tick. In Dexie v1.4.0, I've rewritten the Promise class entirely. Just some fragments of promise-light is left. I use\n// another strategy now that simplifies everything a lot: to always execute callbacks in a new micro-task, but have an own micro-task\n// engine that is indexedDB compliant across all browsers.\n// Promise class has also been optimized a lot with inspiration from bluebird - to avoid closures as much as possible.\n// Also with inspiration from bluebird, asyncronic stacks in debug mode.\n//\n// Specific non-standard features of this Promise class:\n// * Custom zone support (a.k.a. PSD) with ability to keep zones also when using native promises as well as\n// native async / await.\n// * Promise.follow() method built upon the custom zone engine, that allows user to track all promises created from current stack frame\n// and below + all promises that those promises creates or awaits.\n// * Detect any unhandled promise in a PSD-scope (PSD.onunhandled). \n//\n// David Fahlander, https://github.com/dfahlander\n//\n\n// Just a pointer that only this module knows about.\n// Used in Promise constructor to emulate a private constructor.\nvar INTERNAL = {};\n\n// Async stacks (long stacks) must not grow infinitely.\nconst\n LONG_STACKS_CLIP_LIMIT = 100,\n // When calling error.stack or promise.stack, limit the number of asyncronic stacks to print out. \n MAX_LONG_STACKS = 20,\n ZONE_ECHO_LIMIT = 100,\n [resolvedNativePromise, nativePromiseProto, resolvedGlobalPromise] = typeof Promise === 'undefined' ?\n [] :\n (()=>{\n let globalP = Promise.resolve();\n if (typeof crypto === 'undefined' || !crypto.subtle)\n return [globalP, getProto(globalP), globalP];\n // Generate a native promise (as window.Promise may have been patched)\n const nativeP = crypto.subtle.digest(\"SHA-512\", new Uint8Array([0]));\n return [\n nativeP,\n getProto(nativeP),\n globalP\n ];\n })(),\n nativePromiseThen = nativePromiseProto && nativePromiseProto.then;\n\nexport const NativePromise = resolvedNativePromise && resolvedNativePromise.constructor;\nconst patchGlobalPromise = !!resolvedGlobalPromise;\n\nvar stack_being_generated = false;\n\n/* The default function used only for the very first promise in a promise chain.\n As soon as then promise is resolved or rejected, all next tasks will be executed in micro ticks\n emulated in this module. For indexedDB compatibility, this means that every method needs to \n execute at least one promise before doing an indexedDB operation. Dexie will always call \n db.ready().then() for every operation to make sure the indexedDB event is started in an\n indexedDB-compatible emulated micro task loop.\n*/\nvar schedulePhysicalTick = resolvedGlobalPromise ?\n () => {resolvedGlobalPromise.then(physicalTick);}\n :\n _global.setImmediate ? \n // setImmediate supported. Those modern platforms also supports Function.bind().\n setImmediate.bind(null, physicalTick) :\n _global.MutationObserver ?\n // MutationObserver supported\n () => {\n var hiddenDiv = document.createElement(\"div\");\n (new MutationObserver(() => {\n physicalTick();\n hiddenDiv = null;\n })).observe(hiddenDiv, { attributes: true });\n hiddenDiv.setAttribute('i', '1');\n } :\n // No support for setImmediate or MutationObserver. No worry, setTimeout is only called\n // once time. Every tick that follows will be our emulated micro tick.\n // Could have uses setTimeout.bind(null, 0, physicalTick) if it wasnt for that FF13 and below has a bug \n ()=>{setTimeout(physicalTick,0);};\n\n// Configurable through Promise.scheduler.\n// Don't export because it would be unsafe to let unknown\n// code call it unless they do try..catch within their callback.\n// This function can be retrieved through getter of Promise.scheduler though,\n// but users must not do Promise.scheduler = myFuncThatThrowsException\nvar asap = function (callback, args) {\n microtickQueue.push([callback, args]);\n if (needsNewPhysicalTick) {\n schedulePhysicalTick();\n needsNewPhysicalTick = false;\n }\n};\n\nvar isOutsideMicroTick = true, // True when NOT in a virtual microTick.\n needsNewPhysicalTick = true, // True when a push to microtickQueue must also schedulePhysicalTick()\n unhandledErrors = [], // Rejected promises that has occured. Used for triggering 'unhandledrejection'.\n rejectingErrors = [], // Tracks if errors are being re-rejected during onRejected callback.\n currentFulfiller = null,\n rejectionMapper = mirror; // Remove in next major when removing error mapping of DOMErrors and DOMExceptions\n \nexport var globalPSD = {\n id: 'global',\n global: true,\n ref: 0,\n unhandleds: [],\n onunhandled: globalError,\n pgp: false,\n env: {},\n finalize: function () {\n this.unhandleds.forEach(uh => {\n try {\n globalError(uh[0], uh[1]);\n } catch (e) {}\n });\n }\n};\n\nexport var PSD = globalPSD;\n\nexport var microtickQueue = []; // Callbacks to call in this or next physical tick.\nexport var numScheduledCalls = 0; // Number of listener-calls left to do in this physical tick.\nexport var tickFinalizers = []; // Finalizers to call when there are no more async calls scheduled within current physical tick.\n\nexport default function DexiePromise(fn) {\n if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new'); \n this._listeners = [];\n this.onuncatched = nop; // Deprecate in next major. Not needed. Better to use global error handler.\n \n // A library may set `promise._lib = true;` after promise is created to make resolve() or reject()\n // execute the microtask engine implicitely within the call to resolve() or reject().\n // To remain A+ compliant, a library must only set `_lib=true` if it can guarantee that the stack\n // only contains library code when calling resolve() or reject().\n // RULE OF THUMB: ONLY set _lib = true for promises explicitely resolving/rejecting directly from\n // global scope (event handler, timer etc)!\n this._lib = false;\n // Current async scope\n var psd = (this._PSD = PSD);\n\n if (debug) {\n this._stackHolder = getErrorWithStack();\n this._prev = null;\n this._numPrev = 0; // Number of previous promises (for long stacks)\n }\n \n if (typeof fn !== 'function') {\n if (fn !== INTERNAL) throw new TypeError('Not a function');\n // Private constructor (INTERNAL, state, value).\n // Used internally by Promise.resolve() and Promise.reject().\n this._state = arguments[1];\n this._value = arguments[2];\n if (this._state === false)\n handleRejection(this, this._value); // Map error, set stack and addPossiblyUnhandledError().\n return;\n }\n \n this._state = null; // null (=pending), false (=rejected) or true (=resolved)\n this._value = null; // error or result\n ++psd.ref; // Refcounting current scope\n executePromiseTask(this, fn);\n}\n\n// Prepare a property descriptor to put onto Promise.prototype.then\nconst thenProp = {\n get: function() {\n var psd = PSD, microTaskId = totalEchoes;\n\n function then (onFulfilled, onRejected) {\n var possibleAwait = !psd.global && (psd !== PSD || microTaskId !== totalEchoes);\n const cleanup = possibleAwait && !decrementExpectedAwaits();\n var rv = new DexiePromise((resolve, reject) => {\n propagateToListener(this, new Listener(\n nativeAwaitCompatibleWrap(onFulfilled, psd, possibleAwait, cleanup),\n nativeAwaitCompatibleWrap(onRejected, psd, possibleAwait, cleanup),\n resolve,\n reject,\n psd));\n });\n debug && linkToPreviousPromise(rv, this);\n return rv;\n }\n\n then.prototype = INTERNAL; // For idempotense, see setter below.\n\n return then;\n },\n // Be idempotent and allow another framework (such as zone.js or another instance of a Dexie.Promise module) to replace Promise.prototype.then\n // and when that framework wants to restore the original property, we must identify that and restore the original property descriptor.\n set: function (value) {\n setProp (this, 'then', value && value.prototype === INTERNAL ?\n thenProp : // Restore to original property descriptor.\n {\n get: function(){\n return value; // Getter returning provided value (behaves like value is just changed)\n },\n set: thenProp.set // Keep a setter that is prepared to restore original.\n }\n );\n }\n};\n\nprops(DexiePromise.prototype, {\n then: thenProp, // Defined above.\n _then: function (onFulfilled, onRejected) {\n // A little tinier version of then() that don't have to create a resulting promise.\n propagateToListener(this, new Listener(null, null, onFulfilled, onRejected, PSD)); \n },\n\n catch: function (onRejected) {\n if (arguments.length === 1) return this.then(null, onRejected);\n // First argument is the Error type to catch\n var type = arguments[0],\n handler = arguments[1];\n return typeof type === 'function' ? this.then(null, err =>\n // Catching errors by its constructor type (similar to java / c++ / c#)\n // Sample: promise.catch(TypeError, function (e) { ... });\n err instanceof type ? handler(err) : PromiseReject(err))\n : this.then(null, err =>\n // Catching errors by the error.name property. Makes sense for indexedDB where error type\n // is always DOMError but where e.name tells the actual error type.\n // Sample: promise.catch('ConstraintError', function (e) { ... });\n err && err.name === type ? handler(err) : PromiseReject(err));\n },\n\n finally: function (onFinally) {\n return this.then(value => {\n onFinally();\n return value;\n }, err => {\n onFinally();\n return PromiseReject(err);\n });\n },\n \n stack: {\n get: function() {\n if (this._stack) return this._stack;\n try {\n stack_being_generated = true;\n var stacks = getStack (this, [], MAX_LONG_STACKS);\n var stack = stacks.join(\"\\nFrom previous: \");\n if (this._state !== null) this._stack = stack; // Stack may be updated on reject.\n return stack;\n } finally {\n stack_being_generated = false;\n }\n }\n },\n\n timeout: function (ms, msg) {\n return ms < Infinity ?\n new DexiePromise((resolve, reject) => {\n var handle = setTimeout(() => reject(new exceptions.Timeout(msg)), ms);\n this.then(resolve, reject).finally(clearTimeout.bind(null, handle));\n }) : this;\n }\n});\n\nif (typeof Symbol !== 'undefined' && Symbol.toStringTag)\n setProp(DexiePromise.prototype, Symbol.toStringTag, 'Dexie.Promise');\n\n// Now that Promise.prototype is defined, we have all it takes to set globalPSD.env.\n// Environment globals snapshotted on leaving global zone\nglobalPSD.env = snapShot();\n\nfunction Listener(onFulfilled, onRejected, resolve, reject, zone) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.resolve = resolve;\n this.reject = reject;\n this.psd = zone;\n}\n\n// Promise Static Properties\nprops (DexiePromise, {\n all: function () {\n var values = getArrayOf.apply(null, arguments) // Supports iterables, implicit arguments and array-like.\n .map(onPossibleParallellAsync); // Handle parallell async/awaits \n return new DexiePromise(function (resolve, reject) {\n if (values.length === 0) resolve([]);\n var remaining = values.length;\n values.forEach((a,i) => DexiePromise.resolve(a).then(x => {\n values[i] = x;\n if (!--remaining) resolve(values);\n }, reject));\n });\n },\n \n resolve: value => {\n if (value instanceof DexiePromise) return value;\n if (value && typeof value.then === 'function') return new DexiePromise((resolve, reject)=>{\n value.then(resolve, reject);\n });\n var rv = new DexiePromise(INTERNAL, true, value);\n linkToPreviousPromise(rv, currentFulfiller);\n return rv;\n },\n \n reject: PromiseReject,\n \n race: function () {\n var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise((resolve, reject) => {\n values.map(value => DexiePromise.resolve(value).then(resolve, reject));\n });\n },\n\n PSD: {\n get: ()=>PSD,\n set: value => PSD = value\n },\n\n totalEchoes: {get: ()=>totalEchoes},\n\n //task: {get: ()=>task},\n \n newPSD: newScope,\n \n usePSD: usePSD,\n \n scheduler: {\n get: () => asap,\n set: value => {asap = value}\n },\n \n rejectionMapper: {\n get: () => rejectionMapper,\n set: value => {rejectionMapper = value;} // Map reject failures\n },\n \n follow: (fn, zoneProps) => {\n return new DexiePromise((resolve, reject) => {\n return newScope((resolve, reject) => {\n var psd = PSD;\n psd.unhandleds = []; // For unhandled standard- or 3rd party Promises. Checked at psd.finalize()\n psd.onunhandled = reject; // Triggered directly on unhandled promises of this library.\n psd.finalize = callBoth(function () {\n // Unhandled standard or 3rd part promises are put in PSD.unhandleds and\n // examined upon scope completion while unhandled rejections in this Promise\n // will trigger directly through psd.onunhandled\n run_at_end_of_this_or_next_physical_tick(()=>{\n this.unhandleds.length === 0 ? resolve() : reject(this.unhandleds[0]);\n });\n }, psd.finalize);\n fn();\n }, zoneProps, resolve, reject);\n });\n }\n});\n\nif (NativePromise) {\n if (NativePromise.allSettled) setProp (DexiePromise, \"allSettled\", function() {\n const possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise(resolve => {\n if (possiblePromises.length === 0) resolve([]);\n let remaining = possiblePromises.length;\n const results = new Array(remaining);\n possiblePromises.forEach((p, i) => DexiePromise.resolve(p).then(\n value => results[i] = {status: \"fulfilled\", value},\n reason => results[i] = {status: \"rejected\", reason})\n .then(()=>--remaining || resolve(results)));\n });\n });\n if (NativePromise.any && typeof AggregateError !== 'undefined') setProp(DexiePromise, \"any\", function() {\n const possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise((resolve, reject) => {\n if (possiblePromises.length === 0) reject(new AggregateError([]));\n let remaining = possiblePromises.length;\n const failures = new Array(remaining);\n possiblePromises.forEach((p, i) => DexiePromise.resolve(p).then(\n value => resolve(value),\n failure => {\n failures[i] = failure;\n if (!--remaining) reject(new AggregateError(failures));\n }));\n });\n });\n}\n\n/**\n* Take a potentially misbehaving resolver function and make sure\n* onFulfilled and onRejected are only called once.\n*\n* Makes no guarantees about asynchrony.\n*/\nfunction executePromiseTask (promise, fn) {\n // Promise Resolution Procedure:\n // https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n try {\n fn(value => {\n if (promise._state !== null) return; // Already settled\n if (value === promise) throw new TypeError('A promise cannot be resolved with itself.');\n var shouldExecuteTick = promise._lib && beginMicroTickScope();\n if (value && typeof value.then === 'function') {\n executePromiseTask(promise, (resolve, reject) => {\n value instanceof DexiePromise ?\n value._then(resolve, reject) :\n value.then(resolve, reject);\n });\n } else {\n promise._state = true;\n promise._value = value;\n propagateAllListeners(promise);\n }\n if (shouldExecuteTick) endMicroTickScope();\n }, handleRejection.bind(null, promise)); // If Function.bind is not supported. Exception is handled in catch below\n } catch (ex) {\n handleRejection(promise, ex);\n }\n}\n\nfunction handleRejection (promise, reason) {\n rejectingErrors.push(reason);\n if (promise._state !== null) return;\n var shouldExecuteTick = promise._lib && beginMicroTickScope();\n reason = rejectionMapper(reason);\n promise._state = false;\n promise._value = reason;\n debug && reason !== null && typeof reason === 'object' && !reason._promise && tryCatch(()=>{\n var origProp = getPropertyDescriptor(reason, \"stack\"); \n reason._promise = promise; \n setProp(reason, \"stack\", {\n get: () =>\n stack_being_generated ?\n origProp && (origProp.get ?\n origProp.get.apply(reason) :\n origProp.value) :\n promise.stack\n });\n });\n // Add the failure to a list of possibly uncaught errors\n addPossiblyUnhandledError(promise);\n propagateAllListeners(promise);\n if (shouldExecuteTick) endMicroTickScope();\n}\n\nfunction propagateAllListeners (promise) {\n //debug && linkToPreviousPromise(promise);\n var listeners = promise._listeners;\n promise._listeners = [];\n for (var i = 0, len = listeners.length; i < len; ++i) {\n propagateToListener(promise, listeners[i]);\n }\n var psd = promise._PSD;\n --psd.ref || psd.finalize(); // if psd.ref reaches zero, call psd.finalize();\n if (numScheduledCalls === 0) {\n // If numScheduledCalls is 0, it means that our stack is not in a callback of a scheduled call,\n // and that no deferreds where listening to this rejection or success.\n // Since there is a risk that our stack can contain application code that may\n // do stuff after this code is finished that may generate new calls, we cannot\n // call finalizers here.\n ++numScheduledCalls;\n asap(()=>{\n if (--numScheduledCalls === 0) finalizePhysicalTick(); // Will detect unhandled errors\n }, []);\n }\n}\n\nfunction propagateToListener(promise, listener) {\n if (promise._state === null) {\n promise._listeners.push(listener);\n return;\n }\n\n var cb = promise._state ? listener.onFulfilled : listener.onRejected;\n if (cb === null) {\n // This Listener doesnt have a listener for the event being triggered (onFulfilled or onReject) so lets forward the event to any eventual listeners on the Promise instance returned by then() or catch()\n return (promise._state ? listener.resolve : listener.reject) (promise._value);\n }\n ++listener.psd.ref;\n ++numScheduledCalls;\n asap (callListener, [cb, promise, listener]);\n}\n\nfunction callListener (cb, promise, listener) {\n try {\n // Set static variable currentFulfiller to the promise that is being fullfilled,\n // so that we connect the chain of promises (for long stacks support)\n currentFulfiller = promise;\n \n // Call callback and resolve our listener with it's return value.\n var ret, value = promise._value;\n \n if (promise._state) {\n // cb is onResolved\n ret = cb (value);\n } else {\n // cb is onRejected\n if (rejectingErrors.length) rejectingErrors = [];\n ret = cb(value);\n if (rejectingErrors.indexOf(value) === -1)\n markErrorAsHandled(promise); // Callback didnt do Promise.reject(err) nor reject(err) onto another promise.\n }\n listener.resolve(ret);\n } catch (e) {\n // Exception thrown in callback. Reject our listener.\n listener.reject(e);\n } finally {\n // Restore env and currentFulfiller.\n currentFulfiller = null;\n if (--numScheduledCalls === 0) finalizePhysicalTick();\n --listener.psd.ref || listener.psd.finalize();\n }\n}\n\nfunction getStack (promise, stacks, limit) {\n if (stacks.length === limit) return stacks;\n var stack = \"\";\n if (promise._state === false) {\n var failure = promise._value,\n errorName,\n message;\n \n if (failure != null) {\n errorName = failure.name || \"Error\";\n message = failure.message || failure;\n stack = prettyStack(failure, 0);\n } else {\n errorName = failure; // If error is undefined or null, show that.\n message = \"\";\n }\n stacks.push(errorName + (message ? \": \" + message : \"\") + stack);\n }\n if (debug) {\n stack = prettyStack(promise._stackHolder, 2);\n if (stack && stacks.indexOf(stack) === -1) stacks.push(stack);\n if (promise._prev) getStack(promise._prev, stacks, limit);\n }\n return stacks;\n}\n\nfunction linkToPreviousPromise(promise, prev) {\n // Support long stacks by linking to previous completed promise.\n var numPrev = prev ? prev._numPrev + 1 : 0;\n if (numPrev < LONG_STACKS_CLIP_LIMIT) { // Prohibit infinite Promise loops to get an infinite long memory consuming \"tail\".\n promise._prev = prev;\n promise._numPrev = numPrev;\n }\n}\n\n/* The callback to schedule with setImmediate() or setTimeout().\n It runs a virtual microtick and executes any callback registered in microtickQueue.\n */\nfunction physicalTick() {\n beginMicroTickScope() && endMicroTickScope();\n}\n\nexport function beginMicroTickScope() {\n var wasRootExec = isOutsideMicroTick;\n isOutsideMicroTick = false;\n needsNewPhysicalTick = false;\n return wasRootExec;\n}\n\n/* Executes micro-ticks without doing try..catch.\n This can be possible because we only use this internally and\n the registered functions are exception-safe (they do try..catch\n internally before calling any external method). If registering\n functions in the microtickQueue that are not exception-safe, this\n would destroy the framework and make it instable. So we don't export\n our asap method.\n*/\nexport function endMicroTickScope() {\n var callbacks, i, l;\n do {\n while (microtickQueue.length > 0) {\n callbacks = microtickQueue;\n microtickQueue = [];\n l = callbacks.length;\n for (i = 0; i < l; ++i) {\n var item = callbacks[i];\n item[0].apply(null, item[1]);\n }\n }\n } while (microtickQueue.length > 0);\n isOutsideMicroTick = true;\n needsNewPhysicalTick = true;\n}\n\nfunction finalizePhysicalTick() {\n var unhandledErrs = unhandledErrors;\n unhandledErrors = [];\n unhandledErrs.forEach(p => {\n p._PSD.onunhandled.call(null, p._value, p);\n });\n var finalizers = tickFinalizers.slice(0); // Clone first because finalizer may remove itself from list.\n var i = finalizers.length;\n while (i) finalizers[--i](); \n}\n\nfunction run_at_end_of_this_or_next_physical_tick (fn) {\n function finalizer() {\n fn();\n tickFinalizers.splice(tickFinalizers.indexOf(finalizer), 1);\n }\n tickFinalizers.push(finalizer);\n ++numScheduledCalls;\n asap(()=>{\n if (--numScheduledCalls === 0) finalizePhysicalTick();\n }, []);\n}\n\nfunction addPossiblyUnhandledError(promise) {\n // Only add to unhandledErrors if not already there. The first one to add to this list\n // will be upon the first rejection so that the root cause (first promise in the\n // rejection chain) is the one listed.\n if (!unhandledErrors.some(p => p._value === promise._value))\n unhandledErrors.push(promise);\n}\n\nfunction markErrorAsHandled(promise) {\n // Called when a reject handled is actually being called.\n // Search in unhandledErrors for any promise whos _value is this promise_value (list\n // contains only rejected promises, and only one item per error)\n var i = unhandledErrors.length;\n while (i) if (unhandledErrors[--i]._value === promise._value) {\n // Found a promise that failed with this same error object pointer,\n // Remove that since there is a listener that actually takes care of it.\n unhandledErrors.splice(i, 1);\n return;\n }\n}\n\nfunction PromiseReject (reason) {\n return new DexiePromise(INTERNAL, false, reason);\n}\n\nexport function wrap (fn, errorCatcher) {\n var psd = PSD;\n return function() {\n var wasRootExec = beginMicroTickScope(),\n outerScope = PSD;\n\n try {\n switchToZone(psd, true);\n return fn.apply(this, arguments);\n } catch (e) {\n errorCatcher && errorCatcher(e);\n } finally {\n switchToZone(outerScope, false);\n if (wasRootExec) endMicroTickScope();\n }\n };\n}\n\n\n//\n// variables used for native await support\n//\nconst task = { awaits: 0, echoes: 0, id: 0}; // The ongoing macro-task when using zone-echoing.\nvar taskCounter = 0; // ID counter for macro tasks.\nvar zoneStack = []; // Stack of left zones to restore asynchronically.\nvar zoneEchoes = 0; // zoneEchoes is a must in order to persist zones between native await expressions.\nvar totalEchoes = 0; // ID counter for micro-tasks. Used to detect possible native await in our Promise.prototype.then.\n\n\nvar zone_id_counter = 0;\nexport function newScope (fn, props, a1, a2) {\n var parent = PSD,\n psd = Object.create(parent);\n psd.parent = parent;\n psd.ref = 0;\n psd.global = false;\n psd.id = ++zone_id_counter;\n // Prepare for promise patching (done in usePSD):\n var globalEnv = globalPSD.env;\n psd.env = patchGlobalPromise ? {\n Promise: DexiePromise, // Changing window.Promise could be omitted for Chrome and Edge, where IDB+Promise plays well!\n PromiseProp: {value: DexiePromise, configurable: true, writable: true},\n all: DexiePromise.all,\n race: DexiePromise.race,\n allSettled: DexiePromise.allSettled,\n any: DexiePromise.any,\n resolve: DexiePromise.resolve,\n reject: DexiePromise.reject,\n nthen: getPatchedPromiseThen (globalEnv.nthen, psd), // native then\n gthen: getPatchedPromiseThen (globalEnv.gthen, psd) // global then\n } : {};\n if (props) extend(psd, props);\n \n // unhandleds and onunhandled should not be specifically set here.\n // Leave them on parent prototype.\n // unhandleds.push(err) will push to parent's prototype\n // onunhandled() will call parents onunhandled (with this scope's this-pointer though!)\n ++parent.ref;\n psd.finalize = function () {\n --this.parent.ref || this.parent.finalize();\n }\n var rv = usePSD (psd, fn, a1, a2);\n if (psd.ref === 0) psd.finalize();\n return rv;\n}\n\n// Function to call if scopeFunc returns NativePromise\n// Also for each NativePromise in the arguments to Promise.all()\nexport function incrementExpectedAwaits() {\n if (!task.id) task.id = ++taskCounter;\n ++task.awaits;\n task.echoes += ZONE_ECHO_LIMIT;\n return task.id;\n}\n\n// Function to call when 'then' calls back on a native promise where onAwaitExpected() had been called.\n// Also call this when a native await calls then method on a promise. In that case, don't supply\n// sourceTaskId because we already know it refers to current task.\nexport function decrementExpectedAwaits() {\n if (!task.awaits) return false;\n if (--task.awaits === 0) task.id = 0;\n task.echoes = task.awaits * ZONE_ECHO_LIMIT; // Will reset echoes to 0 if awaits is 0.\n return true;\n}\n\nif ((''+nativePromiseThen).indexOf('[native code]') === -1) {\n // If the native promise' prototype is patched, we cannot rely on zone echoing.\n // Disable that here:\n incrementExpectedAwaits = decrementExpectedAwaits = nop;\n}\n\n// Call from Promise.all() and Promise.race()\nexport function onPossibleParallellAsync (possiblePromise) {\n if (task.echoes && possiblePromise && possiblePromise.constructor === NativePromise) {\n incrementExpectedAwaits(); \n return possiblePromise.then(x => {\n decrementExpectedAwaits();\n return x;\n }, e => {\n decrementExpectedAwaits();\n return rejection(e);\n });\n }\n return possiblePromise;\n}\n\nfunction zoneEnterEcho(targetZone) {\n ++totalEchoes;\n //console.log(\"Total echoes \", totalEchoes);\n if (!task.echoes || --task.echoes === 0) {\n task.echoes = task.id = 0; // Cancel zone echoing.\n }\n\n zoneStack.push(PSD);\n switchToZone(targetZone, true);\n}\n\nfunction zoneLeaveEcho() {\n var zone = zoneStack[zoneStack.length-1];\n zoneStack.pop();\n switchToZone(zone, false);\n}\n\nfunction switchToZone (targetZone, bEnteringZone) {\n var currentZone = PSD;\n if (bEnteringZone ? task.echoes && (!zoneEchoes++ || targetZone !== PSD) : zoneEchoes && (!--zoneEchoes || targetZone !== PSD)) {\n // Enter or leave zone asynchronically as well, so that tasks initiated during current tick\n // will be surrounded by the zone when they are invoked.\n enqueueNativeMicroTask(bEnteringZone ? zoneEnterEcho.bind(null, targetZone) : zoneLeaveEcho);\n }\n if (targetZone === PSD) return;\n\n PSD = targetZone; // The actual zone switch occurs at this line.\n\n // Snapshot on every leave from global zone.\n if (currentZone === globalPSD) globalPSD.env = snapShot();\n\n if (patchGlobalPromise) {\n // Let's patch the global and native Promises (may be same or may be different)\n var GlobalPromise = globalPSD.env.Promise;\n // Swich environments (may be PSD-zone or the global zone. Both apply.)\n var targetEnv = targetZone.env;\n\n // Change Promise.prototype.then for native and global Promise (they MAY differ on polyfilled environments, but both can be accessed)\n // Must be done on each zone change because the patched method contains targetZone in its closure.\n nativePromiseProto.then = targetEnv.nthen;\n GlobalPromise.prototype.then = targetEnv.gthen;\n\n if (currentZone.global || targetZone.global) {\n // Leaving or entering global zone. It's time to patch / restore global Promise.\n\n // Set this Promise to window.Promise so that transiled async functions will work on Firefox, Safari and IE, as well as with Zonejs and angular.\n Object.defineProperty(_global, 'Promise', targetEnv.PromiseProp);\n\n // Support Promise.all() etc to work indexedDB-safe also when people are including es6-promise as a module (they might\n // not be accessing global.Promise but a local reference to it)\n GlobalPromise.all = targetEnv.all;\n GlobalPromise.race = targetEnv.race;\n GlobalPromise.resolve = targetEnv.resolve;\n GlobalPromise.reject = targetEnv.reject;\n if (targetEnv.allSettled) GlobalPromise.allSettled = targetEnv.allSettled;\n if (targetEnv.any) GlobalPromise.any = targetEnv.any;\n }\n }\n}\n\nfunction snapShot () {\n var GlobalPromise = _global.Promise;\n return patchGlobalPromise ? {\n Promise: GlobalPromise,\n PromiseProp: Object.getOwnPropertyDescriptor(_global, \"Promise\"),\n all: GlobalPromise.all,\n race: GlobalPromise.race,\n allSettled: GlobalPromise.allSettled,\n any: GlobalPromise.any,\n resolve: GlobalPromise.resolve,\n reject: GlobalPromise.reject,\n nthen: nativePromiseProto.then,\n gthen: GlobalPromise.prototype.then\n } : {};\n}\n\nexport function usePSD (psd, fn, a1, a2, a3) {\n var outerScope = PSD;\n try {\n switchToZone(psd, true);\n return fn(a1, a2, a3);\n } finally {\n switchToZone(outerScope, false);\n }\n}\n\nfunction enqueueNativeMicroTask (job) {\n //\n // Precondition: nativePromiseThen !== undefined\n //\n nativePromiseThen.call(resolvedNativePromise, job);\n}\n\nfunction nativeAwaitCompatibleWrap(fn, zone, possibleAwait, cleanup) {\n return typeof fn !== 'function' ? fn : function () {\n var outerZone = PSD;\n if (possibleAwait) incrementExpectedAwaits();\n switchToZone(zone, true);\n try {\n return fn.apply(this, arguments);\n } finally {\n switchToZone(outerZone, false);\n if (cleanup) enqueueNativeMicroTask(decrementExpectedAwaits);\n }\n };\n}\n\nfunction getPatchedPromiseThen (origThen, zone) {\n return function (onResolved, onRejected) {\n return origThen.call(this,\n nativeAwaitCompatibleWrap(onResolved, zone),\n nativeAwaitCompatibleWrap(onRejected, zone));\n };\n}\n\nconst UNHANDLEDREJECTION = \"unhandledrejection\";\n\nfunction globalError(err, promise) {\n var rv;\n try {\n rv = promise.onuncatched(err);\n } catch (e) {}\n if (rv !== false) try {\n var event, eventData = {promise: promise, reason: err};\n if (_global.document && document.createEvent) {\n event = document.createEvent('Event');\n event.initEvent(UNHANDLEDREJECTION, true, true);\n extend(event, eventData);\n } else if (_global.CustomEvent) {\n event = new CustomEvent(UNHANDLEDREJECTION, {detail: eventData});\n extend(event, eventData);\n }\n if (event && _global.dispatchEvent) {\n dispatchEvent(event);\n if (!_global.PromiseRejectionEvent && _global.onunhandledrejection)\n // No native support for PromiseRejectionEvent but user has set window.onunhandledrejection. Manually call it.\n try {_global.onunhandledrejection(event);} catch (_) {}\n }\n if (debug && event && !event.defaultPrevented) {\n console.warn(`Unhandled rejection: ${err.stack || err}`);\n }\n } catch (e) {}\n}\n\nexport var rejection = DexiePromise.reject;\n\nexport {DexiePromise};\n", "import { PSD, rejection, newScope } from \"../helpers/promise\";\nimport { DexieOptions } from \"../public/types/dexie-constructor\";\nimport { errnames, exceptions } from \"../errors\";\nimport { nop } from \"./chaining-functions\";\nimport { Transaction } from \"../classes/transaction\";\nimport { Dexie } from '../classes/dexie';\n\n/* Generate a temporary transaction when db operations are done outside a transaction scope.\n*/\nexport function tempTransaction (\n db: Dexie,\n mode: IDBTransactionMode,\n storeNames: string[],\n fn: (resolve, reject, trans: Transaction) => any)\n // Last argument is \"writeLocked\". But this doesnt apply to oneshot direct db operations, so we ignore it.\n{\n if (!db.idbdb || (!db._state.openComplete && (!PSD.letThrough && !db._vip))) {\n if (db._state.openComplete) {\n // db.idbdb is falsy but openComplete is true. Must have been an exception durin open.\n // Don't wait for openComplete as it would lead to infinite loop.\n return rejection(new exceptions.DatabaseClosed(db._state.dbOpenError));\n }\n if (!db._state.isBeingOpened) {\n if (!db._options.autoOpen)\n return rejection(new exceptions.DatabaseClosed());\n db.open().catch(nop); // Open in background. If if fails, it will be catched by the final promise anyway.\n }\n return db._state.dbReadyPromise.then(() => tempTransaction(db, mode, storeNames, fn));\n } else {\n var trans = db._createTransaction(mode, storeNames, db._dbSchema);\n try {\n trans.create();\n db._state.PR1398_maxLoop = 3;\n } catch (ex) {\n if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) {\n console.warn('Dexie: Need to reopen db');\n db._close();\n return db.open().then(()=>tempTransaction(db, mode, storeNames, fn));\n }\n return rejection(ex);\n }\n return trans._promise(mode, (resolve, reject) => {\n return newScope(() => { // OPTIMIZATION POSSIBLE? newScope() not needed because it's already done in _promise.\n PSD.trans = trans;\n return fn(resolve, reject, trans);\n });\n }).then(result => {\n // Instead of resolving value directly, wait with resolving it until transaction has completed.\n // Otherwise the data would not be in the DB if requesting it in the then() operation.\n // Specifically, to ensure that the following expression will work:\n //\n // db.friends.put({name: \"Arne\"}).then(function () {\n // db.friends.where(\"name\").equals(\"Arne\").count(function(count) {\n // assert (count === 1);\n // });\n // });\n //\n return trans._completion.then(() => result);\n });/*.catch(err => { // Don't do this as of now. If would affect bulk- and modify methods in a way that could be more intuitive. But wait! Maybe change in next major.\n trans._reject(err);\n return rejection(err);\n });*/\n }\n}\n", "import { Dexie } from \"../classes/dexie\";\n\nexport const DEXIE_VERSION = '{version}'; // Replaced by build-script.\nexport const maxString = String.fromCharCode(65535);\nexport const minKey = -Infinity; // minKey can be constant. maxKey must be a prop of Dexie (_maxKey)\nexport const INVALID_KEY_ARGUMENT =\n \"Invalid key provided. Keys must be of type string, number, Date or Array.\";\nexport const STRING_EXPECTED = \"String expected.\";\nexport const connections: Dexie[] = [];\nexport const isIEOrEdge =\n typeof navigator !== 'undefined' && /(MSIE|Trident|Edge)/.test(navigator.userAgent);\nexport const hasIEDeleteObjectStoreBug = isIEOrEdge;\nexport const hangsOnDeleteLargeKeyRange = isIEOrEdge;\nexport const dexieStackFrameFilter = frame => !/(dexie\\.js|dexie\\.min\\.js)/.test(frame);\nexport const DBNAMES_DB = '__dbnames';\nexport const READONLY = 'readonly';\nexport const READWRITE = 'readwrite';\n", "export function combine(filter1, filter2) {\n return filter1 ?\n filter2 ?\n function () { return filter1.apply(this, arguments) && filter2.apply(this, arguments); } :\n filter1 :\n filter2;\n}\n", "import { DBCoreKeyRange, DBCoreRangeType } from '../public/types/dbcore';\n\nexport const AnyRange: DBCoreKeyRange = {\n type: DBCoreRangeType.Any,\n lower: -Infinity,\n lowerOpen: false,\n upper: [[]],\n upperOpen: false\n}\n\nexport const NeverRange: DBCoreKeyRange = {\n type: DBCoreRangeType.Never,\n lower: -Infinity,\n lowerOpen: true,\n upper: -Infinity,\n upperOpen: true\n}\n", "import { deepClone, delByKeyPath, getByKeyPath } from './utils';\n\n// This workaround is needed since obj could be a custom-class instance with an\n// uninitialized keyPath. See the following comment for more context:\n// https://github.com/dfahlander/Dexie.js/issues/1280#issuecomment-823557881\nexport function workaroundForUndefinedPrimKey(keyPath: string | ArrayLike) {\n // Workaround only needed for plain non-dotted keyPaths\n return typeof keyPath === \"string\" && !/\\./.test(keyPath) \n ? (obj: object) => {\n if (obj[keyPath] === undefined && (keyPath in obj)) {\n // property exists but is undefined. This will not be liked by Indexeddb.\n // Need to remove the property before adding it but we need to clone it before\n // doing that to not be intrusive.\n obj = deepClone(obj);\n delete obj[keyPath];\n }\n return obj;\n }\n : (obj: object) => obj;\n}", "import { BulkError, exceptions } from '../../errors';\nimport { Table as ITable } from '../../public/types/table';\nimport { TableSchema } from '../../public/types/table-schema';\nimport { TableHooks } from '../../public/types/table-hooks';\nimport { DexiePromise as Promise, PSD, newScope, wrap, rejection, beginMicroTickScope, endMicroTickScope } from '../../helpers/promise';\nimport { Transaction } from '../transaction';\nimport { Dexie } from '../dexie';\nimport { tempTransaction } from '../../functions/temp-transaction';\nimport { Collection } from '../collection';\nimport { isArray, keys, getByKeyPath, hasOwn, setByKeyPath, deepClone, tryCatch, arrayToObject, extend } from '../../functions/utils';\nimport { maxString } from '../../globals/constants';\nimport { combine } from '../../functions/combine';\nimport { PromiseExtended } from \"../../public/types/promise-extended\";\nimport { IndexableType } from '../../public/types/indexable-type';\nimport { debug } from '../../helpers/debug';\nimport { DBCoreTable } from '../../public/types/dbcore';\nimport { AnyRange } from '../../dbcore/keyrange';\nimport { workaroundForUndefinedPrimKey } from '../../functions/workaround-undefined-primkey';\n\n/** class Table\n * \n * https://dexie.org/docs/Table/Table\n */\nexport class Table implements ITable {\n db: Dexie;\n _tx?: Transaction;\n name: string;\n schema: TableSchema;\n hook: TableHooks;\n core: DBCoreTable;\n\n _trans(\n mode: IDBTransactionMode,\n fn: (idbtrans: IDBTransaction, dxTrans: Transaction) => PromiseLike | void,\n writeLocked?: boolean | string) : PromiseExtended\n {\n const trans: Transaction = this._tx || PSD.trans;\n const tableName = this.name;\n \n function checkTableInTransaction(resolve, reject, trans: Transaction) {\n if (!trans.schema[tableName])\n throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\");\n return fn(trans.idbtrans, trans);\n }\n // Surround all in a microtick scope.\n // Reason: Browsers (modern Safari + older others)\n // still as of 2018-10-10 has problems keeping a transaction\n // alive between micro ticks. Safari because if transaction\n // is created but not used in same microtick, it will go\n // away. That specific issue could be solved in DBCore\n // by opening the transaction just before using it instead.\n // But older Firefoxes and IE11 (with Promise polyfills)\n // will still have probs.\n // The beginMicrotickScope()/endMicrotickScope() works\n // in cooperation with Dexie.Promise to orchestrate\n // the micro-ticks in endMicrotickScope() rather than\n // in native engine.\n const wasRootExec = beginMicroTickScope();\n try {\n return trans && trans.db === this.db ?\n trans === PSD.trans ?\n trans._promise(mode, checkTableInTransaction, writeLocked) :\n newScope(() => trans._promise(mode, checkTableInTransaction, writeLocked), { trans: trans, transless: PSD.transless || PSD }) :\n tempTransaction(this.db, mode, [this.name], checkTableInTransaction);\n } finally {\n if (wasRootExec) endMicroTickScope();\n }\n }\n\n /** Table.get()\n * \n * https://dexie.org/docs/Table/Table.get()\n * \n **/\n get(keyOrCrit, cb?) {\n if (keyOrCrit && keyOrCrit.constructor === Object)\n return this.where(keyOrCrit as { [key: string]: IndexableType }).first(cb);\n\n return this._trans('readonly', (trans) => {\n return this.core.get({trans, key: keyOrCrit})\n .then(res => this.hook.reading.fire(res));\n }).then(cb);\n }\n\n /** Table.where()\n * \n * https://dexie.org/docs/Table/Table.where()\n * \n **/\n where(indexOrCrit: string | string[] | { [key: string]: IndexableType }) {\n if (typeof indexOrCrit === 'string')\n return new this.db.WhereClause(this, indexOrCrit);\n if (isArray(indexOrCrit))\n return new this.db.WhereClause(this, `[${indexOrCrit.join('+')}]`);\n // indexOrCrit is an object map of {[keyPath]:value} \n const keyPaths = keys(indexOrCrit);\n if (keyPaths.length === 1)\n // Only one critera. This was the easy case:\n return this\n .where(keyPaths[0])\n .equals(indexOrCrit[keyPaths[0]]);\n\n // Multiple criterias.\n // Let's try finding a compound index that matches all keyPaths in\n // arbritary order:\n const compoundIndex = this.schema.indexes.concat(this.schema.primKey).filter(ix => {\n if (\n ix.compound &&\n keyPaths.every(keyPath => ix.keyPath.indexOf(keyPath) >= 0)) {\n for (let i=0; i a.keyPath.length - b.keyPath.length)[0];\n \n if (compoundIndex && this.db._maxKey !== maxString) {\n // Cool! We found such compound index\n // and this browser supports compound indexes (maxKey !== maxString)!\n const keyPathsInValidOrder = (compoundIndex.keyPath as string[]).slice(0, keyPaths.length);\n return this\n .where(keyPathsInValidOrder)\n .equals(keyPathsInValidOrder.map(kp => indexOrCrit[kp]));\n }\n\n if (!compoundIndex && debug) console.warn(\n `The query ${JSON.stringify(indexOrCrit)} on ${this.name} would benefit of a ` +\n `compound index [${keyPaths.join('+')}]`);\n\n // Ok, now let's fallback to finding at least one matching index\n // and filter the rest.\n const { idxByName } = this.schema;\n const idb = this.db._deps.indexedDB;\n\n function equals (a, b) {\n try {\n return idb.cmp(a,b) === 0; // Works with all indexable types including binary keys.\n } catch (e) {\n return false;\n }\n }\n\n const [idx, filterFunction] = keyPaths.reduce(([prevIndex, prevFilterFn], keyPath) => {\n const index = idxByName[keyPath];\n const value = indexOrCrit[keyPath];\n return [\n prevIndex || index, // idx::=Pick index of first matching keypath\n prevIndex || !index ? // filter::=null if not needed, otherwise combine function filter\n combine(\n prevFilterFn,\n index && index.multi ?\n x => {\n const prop = getByKeyPath(x, keyPath);\n return isArray(prop) && prop.some(item => equals(value, item));\n } : x => equals(value, getByKeyPath(x, keyPath)))\n : prevFilterFn\n ];\n }, [null, null]);\n\n return idx ?\n this.where(idx.name).equals(indexOrCrit[idx.keyPath])\n .filter(filterFunction) :\n compoundIndex ?\n this.filter(filterFunction) : // Has compound but browser bad. Allow filter.\n this.where(keyPaths).equals(''); // No index at all. Fail lazily with \"[a+b+c] is not indexed\"\n }\n\n /** Table.filter()\n * \n * https://dexie.org/docs/Table/Table.filter()\n * \n **/\n filter(filterFunction: (obj: any) => boolean) {\n return this.toCollection().and(filterFunction);\n }\n\n /** Table.count()\n * \n * https://dexie.org/docs/Table/Table.count()\n * \n **/\n count(thenShortcut?: any) {\n return this.toCollection().count(thenShortcut);\n }\n\n /** Table.offset()\n * \n * https://dexie.org/docs/Table/Table.offset()\n * \n **/\n offset(offset: number) {\n return this.toCollection().offset(offset);\n }\n\n /** Table.limit()\n * \n * https://dexie.org/docs/Table/Table.limit()\n * \n **/\n limit(numRows: number) {\n return this.toCollection().limit(numRows);\n }\n\n /** Table.each()\n * \n * https://dexie.org/docs/Table/Table.each()\n * \n **/\n each(callback: (obj: any, cursor: { key: IndexableType, primaryKey: IndexableType }) => any) {\n return this.toCollection().each(callback);\n }\n\n /** Table.toArray()\n * \n * https://dexie.org/docs/Table/Table.toArray()\n * \n **/\n toArray(thenShortcut?: any) {\n return this.toCollection().toArray(thenShortcut);\n }\n\n /** Table.toCollection()\n * \n * https://dexie.org/docs/Table/Table.toCollection()\n * \n **/\n toCollection() {\n return new this.db.Collection(new this.db.WhereClause(this));\n }\n\n /** Table.orderBy()\n * \n * https://dexie.org/docs/Table/Table.orderBy()\n * \n **/\n orderBy(index: string | string[]) {\n return new this.db.Collection(\n new this.db.WhereClause(this, isArray(index) ?\n `[${index.join('+')}]` :\n index));\n }\n\n /** Table.reverse()\n * \n * https://dexie.org/docs/Table/Table.reverse()\n * \n **/\n reverse(): Collection {\n return this.toCollection().reverse();\n }\n\n /** Table.mapToClass()\n * \n * https://dexie.org/docs/Table/Table.mapToClass()\n * \n **/\n mapToClass(constructor: Function) {\n this.schema.mappedClass = constructor;\n // Now, subscribe to the when(\"reading\") event to make all objects that come out from this table inherit from given class\n // no matter which method to use for reading (Table.get() or Table.where(...)... )\n const readHook = obj => {\n if (!obj) return obj; // No valid object. (Value is null). Return as is.\n // Create a new object that derives from constructor:\n const res = Object.create(constructor.prototype);\n // Clone members:\n for (var m in obj) if (hasOwn(obj, m)) try { res[m] = obj[m]; } catch (_) { }\n return res;\n };\n\n if (this.schema.readHook) {\n this.hook.reading.unsubscribe(this.schema.readHook);\n }\n this.schema.readHook = readHook;\n this.hook(\"reading\", readHook);\n return constructor;\n }\n\n /** @deprecated */\n defineClass() {\n function Class (content){\n extend(this, content);\n };\n return this.mapToClass(Class);\n }\n\n /** Table.add()\n * \n * https://dexie.org/docs/Table/Table.add()\n * \n **/\n add(obj, key?: IndexableType): PromiseExtended {\n const {auto, keyPath} = this.schema.primKey;\n let objToAdd = obj;\n if (keyPath && auto) {\n objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj);\n }\n return this._trans('readwrite', trans => {\n return this.core.mutate({trans, type: 'add', keys: key != null ? [key] : null, values: [objToAdd]});\n }).then(res => res.numFailures ? Promise.reject(res.failures[0]) : res.lastResult)\n .then(lastResult => {\n if (keyPath) {\n // This part should be here for backward compatibility.\n // If ever feeling too bad about this, please wait to a new major before removing it,\n // and document the change thoroughly.\n try{setByKeyPath(obj, keyPath, lastResult);}catch(_){};\n }\n return lastResult;\n });\n }\n\n /** Table.update()\n * \n * https://dexie.org/docs/Table/Table.update()\n * \n **/\n update(keyOrObject, modifications: { [keyPath: string]: any; } | ((obj: any, ctx:{value: any, primKey: IndexableType}) => void | boolean)): PromiseExtended {\n if (typeof keyOrObject === 'object' && !isArray(keyOrObject)) {\n const key = getByKeyPath(keyOrObject, this.schema.primKey.keyPath);\n if (key === undefined) return rejection(new exceptions.InvalidArgument(\n \"Given object does not contain its primary key\"));\n // object to modify. Also modify given object with the modifications:\n // This part should be here for backward compatibility.\n // If ever feeling too bad about mutating given object, please wait to a new major before removing it,\n // and document the change thoroughly.\n try {\n if (typeof modifications !== \"function\") {\n keys(modifications).forEach(keyPath => {\n setByKeyPath(keyOrObject, keyPath, modifications[keyPath]);\n });\n } else {\n // Now since we support function argument, we should have a similar behavior here as well\n // (as long as we do this mutability stuff on the given object)\n modifications(keyOrObject, {value: keyOrObject, primKey: key});\n }\n } catch {\n // Maybe given object was frozen.\n // This part is not essential. Just move on as nothing happened...\n }\n return this.where(\":id\").equals(key).modify(modifications);\n } else {\n // key to modify\n return this.where(\":id\").equals(keyOrObject).modify(modifications);\n }\n }\n\n /** Table.put()\n * \n * https://dexie.org/docs/Table/Table.put()\n * \n **/\n put(obj, key?: IndexableType): PromiseExtended {\n const {auto, keyPath} = this.schema.primKey;\n let objToAdd = obj;\n if (keyPath && auto) {\n objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj);\n }\n return this._trans(\n 'readwrite',\n trans => this.core.mutate({trans, type: 'put', values: [objToAdd], keys: key != null ? [key] : null}))\n .then(res => res.numFailures ? Promise.reject(res.failures[0]) : res.lastResult)\n .then(lastResult => {\n if (keyPath) {\n // This part should be here for backward compatibility.\n // If ever feeling too bad about this, please wait to a new major before removing it,\n // and document the change thoroughly.\n try{setByKeyPath(obj, keyPath, lastResult);}catch(_){};\n }\n return lastResult;\n });\n }\n\n /** Table.delete()\n * \n * https://dexie.org/docs/Table/Table.delete()\n * \n **/\n delete(key: IndexableType): PromiseExtended {\n return this._trans('readwrite',\n trans => this.core.mutate({trans, type: 'delete', keys: [key]}))\n .then(res => res.numFailures ? Promise.reject(res.failures[0]) : undefined);\n }\n\n /** Table.clear()\n * \n * https://dexie.org/docs/Table/Table.clear()\n * \n **/\n clear() {\n return this._trans('readwrite',\n trans => this.core.mutate({trans, type: 'deleteRange', range: AnyRange}))\n .then(res => res.numFailures ? Promise.reject(res.failures[0]) : undefined);\n }\n\n /** Table.bulkGet()\n * \n * https://dexie.org/docs/Table/Table.bulkGet()\n * \n * @param keys \n */\n bulkGet(keys: IndexableType[]) {\n return this._trans('readonly', trans => {\n return this.core.getMany({\n keys,\n trans\n }).then(result => result.map(res => this.hook.reading.fire(res)));\n });\n }\n\n /** Table.bulkAdd()\n * \n * https://dexie.org/docs/Table/Table.bulkAdd()\n * \n **/\n bulkAdd(\n objects: any[],\n keysOrOptions?: ReadonlyArray | { allKeys?: boolean },\n options?: { allKeys?: boolean }\n ) { \n const keys = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n options = options || (keys ? undefined : keysOrOptions as { allKeys?: boolean });\n const wantResults = options ? options.allKeys : undefined;\n\n return this._trans('readwrite', trans => {\n const {auto, keyPath} = this.schema.primKey;\n if (keyPath && keys)\n throw new exceptions.InvalidArgument(\"bulkAdd(): keys argument invalid on tables with inbound keys\");\n if (keys && keys.length !== objects.length)\n throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n\n const numObjects = objects.length; // Pick length here to allow garbage collection of objects later\n let objectsToAdd = keyPath && auto ?\n objects.map(workaroundForUndefinedPrimKey(keyPath)) :\n objects;\n return this.core.mutate(\n {trans, type: 'add', keys: keys as IndexableType[], values: objectsToAdd, wantResults}\n )\n .then(({numFailures, results,lastResult, failures}) => {\n const result = wantResults ? results : lastResult;\n if (numFailures === 0) return result;\n throw new BulkError(\n `${this.name}.bulkAdd(): ${numFailures} of ${numObjects} operations failed`, failures);\n });\n });\n }\n\n /** Table.bulkPut()\n * \n * https://dexie.org/docs/Table/Table.bulkPut()\n * \n **/\n bulkPut(\n objects: any[],\n keysOrOptions?: ReadonlyArray | { allKeys?: boolean },\n options?: { allKeys?: boolean }\n ) { \n const keys = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n options = options || (keys ? undefined : keysOrOptions as { allKeys?: boolean });\n const wantResults = options ? options.allKeys : undefined;\n\n return this._trans('readwrite', trans => {\n const {auto, keyPath} = this.schema.primKey;\n if (keyPath && keys)\n throw new exceptions.InvalidArgument(\"bulkPut(): keys argument invalid on tables with inbound keys\");\n if (keys && keys.length !== objects.length)\n throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n\n const numObjects = objects.length; // Pick length here to allow garbage collection of objects later\n let objectsToPut = keyPath && auto ?\n objects.map(workaroundForUndefinedPrimKey(keyPath)) :\n objects;\n\n return this.core.mutate(\n {trans, type: 'put', keys: keys as IndexableType[], values: objectsToPut, wantResults}\n )\n .then(({numFailures, results, lastResult, failures}) => {\n const result = wantResults ? results : lastResult;\n if (numFailures === 0) return result;\n throw new BulkError(\n `${this.name}.bulkPut(): ${numFailures} of ${numObjects} operations failed`, failures);\n });\n });\n }\n\n /** Table.bulkDelete()\n * \n * https://dexie.org/docs/Table/Table.bulkDelete()\n * \n **/\n bulkDelete(keys: ReadonlyArray): PromiseExtended {\n const numKeys = keys.length;\n return this._trans('readwrite', trans => {\n return this.core.mutate({trans, type: 'delete', keys: keys as IndexableType[]});\n }).then(({numFailures, lastResult, failures}) => {\n if (numFailures === 0) return lastResult;\n throw new BulkError(\n `${this.name}.bulkDelete(): ${numFailures} of ${numKeys} operations failed`, failures);\n });\n }\n}\n", "import {keys, isArray, asap} from '../functions/utils';\nimport {nop, mirror, reverseStoppableEventChain} from '../functions/chaining-functions';\nimport {exceptions} from '../errors';\n\nexport default function Events(ctx) {\n var evs = {};\n var rv = function (eventName, subscriber) {\n if (subscriber) {\n // Subscribe. If additional arguments than just the subscriber was provided, forward them as well.\n var i = arguments.length, args = new Array(i - 1);\n while (--i) args[i - 1] = arguments[i];\n evs[eventName].subscribe.apply(null, args);\n return ctx;\n } else if (typeof (eventName) === 'string') {\n // Return interface allowing to fire or unsubscribe from event\n return evs[eventName];\n }\n };\n rv.addEventType = add;\n \n for (var i = 1, l = arguments.length; i < l; ++i) {\n add(arguments[i]);\n }\n \n return rv;\n\n function add(eventName, chainFunction, defaultFunction) {\n if (typeof eventName === 'object') return addConfiguredEvents(eventName);\n if (!chainFunction) chainFunction = reverseStoppableEventChain;\n if (!defaultFunction) defaultFunction = nop;\n\n var context = {\n subscribers: [],\n fire: defaultFunction,\n subscribe: function (cb) {\n if (context.subscribers.indexOf(cb) === -1) {\n context.subscribers.push(cb);\n context.fire = chainFunction(context.fire, cb);\n }\n },\n unsubscribe: function (cb) {\n context.subscribers = context.subscribers.filter(function (fn) { return fn !== cb; });\n context.fire = context.subscribers.reduce(chainFunction, defaultFunction);\n }\n };\n evs[eventName] = rv[eventName] = context;\n return context;\n }\n\n function addConfiguredEvents(cfg) {\n // events(this, {reading: [functionChain, nop]});\n keys(cfg).forEach(function (eventName) {\n var args = cfg[eventName];\n if (isArray(args)) {\n add(eventName, cfg[eventName][0], cfg[eventName][1]);\n } else if (args === 'asap') {\n // Rather than approaching event subscription using a functional approach, we here do it in a for-loop where subscriber is executed in its own stack\n // enabling that any exception that occur wont disturb the initiator and also not nescessary be catched and forgotten.\n var context = add(eventName, mirror, function fire() {\n // Optimazation-safe cloning of arguments into args.\n var i = arguments.length, args = new Array(i);\n while (i--) args[i] = arguments[i];\n // All each subscriber:\n context.subscribers.forEach(function (fn) {\n asap(function fireEvent() {\n fn.apply(null, args);\n });\n });\n });\n } else throw new exceptions.InvalidArgument(\"Invalid event config\");\n });\n }\n}\n", "import { arrayToObject, derive } from './utils';\n\n\nexport function makeClassConstructor (prototype: Object, constructor: Function) {\n /*const propertyDescriptorMap = arrayToObject(\n Object.getOwnPropertyNames(prototype),\n propKey => [propKey, Object.getOwnPropertyDescriptor(prototype, propKey)]);\n\n // Both derive and clone the prototype.\n // derive: So that x instanceof T returns true when T is the class template.\n // clone: Optimizes method access a bit (but actually not nescessary)\n const derivedPrototypeClone = Object.create(prototype, propertyDescriptorMap);\n derivedPrototypeClone.constructor = constructor;\n constructor.prototype = derivedPrototypeClone;\n return constructor as any as TConstructor;*/\n\n // Keep the above code in case we want to clone AND derive the parent prototype.\n // Reason would be optimization of property access.\n // The code below will only create a prototypal inheritance from given constructor function\n // to given prototype.\n derive(constructor).from({prototype});\n return constructor as any as TConstructor; \n}\n", "import { Dexie } from '../dexie';\nimport { TableSchema } from '../../public/types/table-schema';\nimport { Transaction } from '../transaction/transaction';\nimport { hookCreatingChain, pureFunctionChain, nop, mirror, hookUpdatingChain, hookDeletingChain } from '../../functions/chaining-functions';\nimport { TableHooks } from '../../public/types/table-hooks';\nimport { Table } from './table';\nimport Events from '../../helpers/Events';\nimport { makeClassConstructor } from '../../functions/make-class-constructor';\n\nexport interface TableConstructor {\n new (name: string, tableSchema: TableSchema, optionalTrans?: Transaction) : Table;\n prototype: Table;\n}\n\n/** Generates a Table constructor bound to given Dexie instance.\n * \n * The purpose of having dynamically created constructors, is to allow\n * addons to extend classes for a certain Dexie instance without affecting\n * other db instances.\n */\nexport function createTableConstructor (db: Dexie) {\n return makeClassConstructor(\n Table.prototype,\n\n function Table (this: Table, name: string, tableSchema: TableSchema, trans?: Transaction) {\n this.db = db;\n this._tx = trans;\n this.name = name;\n this.schema = tableSchema;\n this.hook = db._allTables[name] ? db._allTables[name].hook : Events(null, {\n \"creating\": [hookCreatingChain, nop],\n \"reading\": [pureFunctionChain, mirror],\n \"updating\": [hookUpdatingChain, nop],\n \"deleting\": [hookDeletingChain, nop]\n }) as TableHooks;\n }\n\n );\n}\n", "import { combine } from \"../../functions/combine\";\nimport { exceptions } from \"../../errors\";\nimport { hasOwn } from \"../../functions/utils\";\nimport { wrap } from \"../../helpers/promise\";\nimport { Collection } from './';\nimport { DBCoreCursor, DBCoreTable, DBCoreTransaction, DBCoreTableSchema, DBCoreRangeType } from '../../public/types/dbcore';\nimport { nop } from '../../functions/chaining-functions';\n\ntype CollectionContext = Collection[\"_ctx\"];\n\nexport function isPlainKeyRange (ctx: CollectionContext, ignoreLimitFilter?: boolean) {\n return !(ctx.filter || ctx.algorithm || ctx.or) &&\n (ignoreLimitFilter ? ctx.justLimit : !ctx.replayFilter);\n} \n\nexport function addFilter(ctx: CollectionContext, fn: Function) {\n ctx.filter = combine(ctx.filter, fn);\n}\n\nexport function addReplayFilter (ctx: CollectionContext, factory, isLimitFilter?) {\n var curr = ctx.replayFilter;\n ctx.replayFilter = curr ? ()=>combine(curr(), factory()) : factory;\n ctx.justLimit = isLimitFilter && !curr;\n}\n\nexport function addMatchFilter(ctx: CollectionContext, fn) {\n ctx.isMatch = combine(ctx.isMatch, fn);\n}\n\nexport function getIndexOrStore(ctx: CollectionContext, coreSchema: DBCoreTableSchema) {\n // TODO: Rewrite this. No need to know ctx.isPrimKey. ctx.index should hold the keypath.\n // Still, throw if not found!\n if (ctx.isPrimKey) return coreSchema.primaryKey;\n const index = coreSchema.getIndexByKeyPath(ctx.index);\n if (!index) throw new exceptions.Schema(\"KeyPath \" + ctx.index + \" on object store \" + coreSchema.name + \" is not indexed\");\n return index;\n}\n\nexport function openCursor(ctx: CollectionContext, coreTable: DBCoreTable, trans: DBCoreTransaction) {\n const index = getIndexOrStore(ctx, coreTable.schema);\n return coreTable.openCursor({\n trans,\n values: !ctx.keysOnly,\n reverse: ctx.dir === 'prev',\n unique: !!ctx.unique,\n query: {\n index, \n range: ctx.range\n }\n });\n}\n\nexport function iter (\n ctx: CollectionContext, \n fn: (item, cursor: DBCoreCursor, advance: Function)=>void,\n coreTrans: DBCoreTransaction,\n coreTable: DBCoreTable): Promise\n{\n const filter = ctx.replayFilter ? combine(ctx.filter, ctx.replayFilter()) : ctx.filter;\n if (!ctx.or) {\n return iterate(\n openCursor(ctx, coreTable, coreTrans),\n combine(ctx.algorithm, filter), fn, !ctx.keysOnly && ctx.valueMapper);\n } else {\n const set = {};\n\n const union = (item: any, cursor: DBCoreCursor, advance) => {\n if (!filter || filter(cursor, advance, result=>cursor.stop(result), err => cursor.fail(err))) {\n var primaryKey = cursor.primaryKey;\n var key = '' + primaryKey;\n if (key === '[object ArrayBuffer]') key = '' + new Uint8Array(primaryKey);\n if (!hasOwn(set, key)) {\n set[key] = true;\n fn(item, cursor, advance);\n }\n }\n }\n\n return Promise.all([\n ctx.or._iterate(union, coreTrans),\n iterate(openCursor(ctx, coreTable, coreTrans), ctx.algorithm, union, !ctx.keysOnly && ctx.valueMapper)\n ]);\n }\n}\n\nfunction iterate(cursorPromise: Promise, filter, fn, valueMapper): Promise {\n \n // Apply valueMapper (hook('reading') or mappped class)\n var mappedFn = valueMapper ? (x,c,a) => fn(valueMapper(x),c,a) : fn;\n // Wrap fn with PSD and microtick stuff from Promise.\n var wrappedFn = wrap(mappedFn);\n \n return cursorPromise.then(cursor => {\n if (cursor) {\n return cursor.start(()=>{\n var c = ()=>cursor.continue();\n if (!filter || filter(cursor, advancer => c = advancer, val=>{cursor.stop(val);c=nop}, e => {cursor.fail(e);c = nop;}))\n wrappedFn(cursor.value, cursor, advancer => c = advancer);\n c();\n });\n }\n });\n}\n", "// Implementation of https://www.w3.org/TR/IndexedDB-3/#compare-two-keys\n\nimport { toStringTag } from './utils';\n\n// ... with the adjustment to return NaN instead of throwing.\nexport function cmp(a: any, b: any): number {\n try {\n const ta = type(a);\n const tb = type(b);\n if (ta !== tb) {\n if (ta === 'Array') return 1;\n if (tb === 'Array') return -1;\n if (ta === 'binary') return 1;\n if (tb === 'binary') return -1;\n if (ta === 'string') return 1;\n if (tb === 'string') return -1;\n if (ta === 'Date') return 1;\n if (tb !== 'Date') return NaN;\n return -1;\n }\n switch (ta) {\n case 'number':\n case 'Date':\n case 'string':\n return a > b ? 1 : a < b ? -1 : 0;\n case 'binary': {\n return compareUint8Arrays(getUint8Array(a), getUint8Array(b));\n }\n case 'Array':\n return compareArrays(a, b);\n }\n } catch {}\n return NaN; // Return value if any given args are valid keys.\n}\n\nexport function compareArrays(a: any[], b: any[]): number {\n const al = a.length;\n const bl = b.length;\n const l = al < bl ? al : bl;\n for (let i = 0; i < l; ++i) {\n const res = cmp(a[i], b[i]);\n if (res !== 0) return res;\n }\n return al === bl ? 0 : al < bl ? -1 : 1;\n}\n\nexport function compareUint8Arrays(\n a: Uint8Array,\n b: Uint8Array\n) {\n const al = a.length;\n const bl = b.length;\n const l = al < bl ? al : bl;\n for (let i = 0; i < l; ++i) {\n if (a[i] !== b[i]) return a[i] < b[i] ? -1 : 1;\n }\n return al === bl ? 0 : al < bl ? -1 : 1;\n}\n\n// Implementation of https://www.w3.org/TR/IndexedDB-3/#key-type\nfunction type(x: any) {\n const t = typeof x;\n if (t !== 'object') return t;\n if (ArrayBuffer.isView(x)) return 'binary';\n const tsTag = toStringTag(x); // Cannot use instanceof in Safari\n return tsTag === 'ArrayBuffer' ? 'binary' : (tsTag as 'Array' | 'Date');\n}\n\ntype BinaryType =\n | ArrayBuffer\n | DataView\n | Uint8ClampedArray\n | ArrayBufferView\n | Uint8Array\n | Int8Array\n | Uint16Array\n | Int16Array\n | Uint32Array\n | Int32Array\n | Float32Array\n | Float64Array;\n\nfunction getUint8Array(a: BinaryType): Uint8Array {\n if (a instanceof Uint8Array) return a;\n if (ArrayBuffer.isView(a))\n // TypedArray or DataView\n return new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n return new Uint8Array(a); // ArrayBuffer\n}\n", "import { Collection as ICollection } from \"../../public/types/collection\";\nimport { Dexie } from \"../dexie\";\nimport { Table } from \"../table\";\nimport { IndexableType, IndexableTypeArrayReadonly } from \"../../public/types/indexable-type\";\nimport { PromiseExtended } from \"../../public/types/promise-extended\";\nimport { iter, isPlainKeyRange, getIndexOrStore, addReplayFilter, addFilter, addMatchFilter } from \"./collection-helpers\";\nimport { rejection } from \"../../helpers/promise\";\nimport { combine } from \"../../functions/combine\";\nimport { extend, hasOwn, deepClone, keys, setByKeyPath, getByKeyPath } from \"../../functions/utils\";\nimport { ModifyError } from \"../../errors\";\nimport { hangsOnDeleteLargeKeyRange } from \"../../globals/constants\";\nimport { ThenShortcut } from \"../../public/types/then-shortcut\";\nimport { Transaction } from '../transaction';\nimport { DBCoreCursor, DBCoreTransaction, DBCoreRangeType, DBCoreMutateResponse, DBCoreKeyRange } from '../../public/types/dbcore';\nimport { cmp } from \"../../functions/cmp\";\n\n/** class Collection\n * \n * https://dexie.org/docs/Collection/Collection\n */\nexport class Collection implements ICollection {\n db: Dexie;\n _ctx: {\n table: Table;\n index?: string | null;\n isPrimKey?: boolean;\n range: DBCoreKeyRange;\n keysOnly: boolean;\n dir: \"next\" | \"prev\";\n unique: \"\" | \"unique\";\n algorithm?: Function | null;\n filter?: Function | null;\n replayFilter: Function | null;\n justLimit: boolean; // True if a replayFilter is just a filter that performs a \"limit\" operation (or none at all)\n isMatch: Function | null;\n offset: number,\n limit: number,\n error: any, // If set, any promise must be rejected with this error\n or: Collection,\n valueMapper: (any) => any\n }\n \n _ondirectionchange?: Function;\n\n _read(fn: (idbtrans: IDBTransaction, dxTrans: Transaction) => PromiseLike, cb?): PromiseExtended {\n var ctx = this._ctx;\n return ctx.error ?\n ctx.table._trans(null, rejection.bind(null, ctx.error)) :\n ctx.table._trans('readonly', fn).then(cb);\n }\n\n _write(fn: (idbtrans: IDBTransaction, dxTrans: Transaction) => PromiseLike): PromiseExtended {\n var ctx = this._ctx;\n return ctx.error ?\n ctx.table._trans(null, rejection.bind(null, ctx.error)) :\n ctx.table._trans('readwrite', fn, \"locked\"); // When doing write operations on collections, always lock the operation so that upcoming operations gets queued.\n }\n\n _addAlgorithm(fn) {\n var ctx = this._ctx;\n ctx.algorithm = combine(ctx.algorithm, fn);\n }\n\n _iterate(\n fn: (item, cursor: DBCoreCursor, advance: Function) => void,\n coreTrans: DBCoreTransaction) : Promise\n {\n return iter(this._ctx, fn, coreTrans, this._ctx.table.core);\n }\n\n /** Collection.clone()\n * \n * https://dexie.org/docs/Collection/Collection.clone()\n * \n **/\n clone(props?) {\n var rv = Object.create(this.constructor.prototype),\n ctx = Object.create(this._ctx);\n if (props) extend(ctx, props);\n rv._ctx = ctx;\n return rv;\n }\n\n /** Collection.raw()\n * \n * https://dexie.org/docs/Collection/Collection.raw()\n * \n **/\n raw() {\n this._ctx.valueMapper = null;\n return this;\n }\n\n /** Collection.each()\n * \n * https://dexie.org/docs/Collection/Collection.each()\n * \n **/\n each(fn: (obj, cursor: DBCoreCursor) => any): PromiseExtended {\n var ctx = this._ctx;\n\n return this._read(trans => iter(ctx, fn, trans, ctx.table.core));\n }\n\n /** Collection.count()\n * \n * https://dexie.org/docs/Collection/Collection.count()\n * \n **/\n count(cb?) {\n return this._read(trans => {\n const ctx = this._ctx;\n const coreTable = ctx.table.core;\n if (isPlainKeyRange(ctx, true)) {\n // This is a plain key range. We can use the count() method if the index.\n return coreTable.count({\n trans,\n query: {\n index: getIndexOrStore(ctx, coreTable.schema),\n range: ctx.range\n }\n }).then(count => Math.min(count, ctx.limit));\n } else {\n // Algorithms, filters or expressions are applied. Need to count manually.\n var count = 0;\n return iter(ctx, () => { ++count; return false; }, trans, coreTable)\n .then(()=>count);\n }\n }).then(cb);\n }\n\n /** Collection.sortBy()\n * \n * https://dexie.org/docs/Collection/Collection.sortBy()\n * \n **/\n sortBy(keyPath: string): PromiseExtended;\n sortBy(keyPath: string, thenShortcut: ThenShortcut) : PromiseExtended;\n sortBy(keyPath: string, cb?: ThenShortcut) {\n const parts = keyPath.split('.').reverse(),\n lastPart = parts[0],\n lastIndex = parts.length - 1;\n function getval(obj, i) {\n if (i) return getval(obj[parts[i]], i - 1);\n return obj[lastPart];\n }\n var order = this._ctx.dir === \"next\" ? 1 : -1;\n\n function sorter(a, b) {\n var aVal = getval(a, lastIndex),\n bVal = getval(b, lastIndex);\n return aVal < bVal ? -order : aVal > bVal ? order : 0;\n }\n return this.toArray(function (a) {\n return a.sort(sorter);\n }).then(cb);\n }\n\n /** Collection.toArray()\n * \n * https://dexie.org/docs/Collection/Collection.toArray()\n * \n **/\n toArray(cb?): PromiseExtended {\n return this._read(trans => {\n var ctx = this._ctx;\n if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n // Special optimation if we could use IDBObjectStore.getAll() or\n // IDBKeyRange.getAll():\n const {valueMapper} = ctx;\n const index = getIndexOrStore(ctx, ctx.table.core.schema);\n return ctx.table.core.query({\n trans,\n limit: ctx.limit,\n values: true,\n query: {\n index,\n range: ctx.range\n }\n }).then(({result}) => valueMapper ? result.map(valueMapper) : result);\n } else {\n // Getting array through a cursor.\n const a = [];\n return iter(ctx, item => a.push(item), trans, ctx.table.core).then(()=>a);\n }\n }, cb);\n }\n\n /** Collection.offset()\n * \n * https://dexie.org/docs/Collection/Collection.offset()\n * \n **/\n offset(offset: number) : Collection{\n var ctx = this._ctx;\n if (offset <= 0) return this;\n ctx.offset += offset; // For count()\n if (isPlainKeyRange(ctx)) {\n addReplayFilter(ctx, () => {\n var offsetLeft = offset;\n return (cursor, advance) => {\n if (offsetLeft === 0) return true;\n if (offsetLeft === 1) { --offsetLeft; return false; }\n advance(() => {\n cursor.advance(offsetLeft);\n offsetLeft = 0;\n });\n return false;\n };\n });\n } else {\n addReplayFilter(ctx, () => {\n var offsetLeft = offset;\n return () => (--offsetLeft < 0);\n });\n }\n return this;\n }\n\n /** Collection.limit()\n * \n * https://dexie.org/docs/Collection/Collection.limit()\n * \n **/\n limit(numRows: number) : Collection {\n this._ctx.limit = Math.min(this._ctx.limit, numRows); // For count()\n addReplayFilter(this._ctx, () => {\n var rowsLeft = numRows;\n return function (cursor, advance, resolve) {\n if (--rowsLeft <= 0) advance(resolve); // Stop after this item has been included\n return rowsLeft >= 0; // If numRows is already below 0, return false because then 0 was passed to numRows initially. Otherwise we wouldnt come here.\n };\n }, true);\n return this;\n }\n\n /** Collection.until()\n * \n * https://dexie.org/docs/Collection/Collection.until()\n * \n **/\n until(filterFunction: (x) => boolean, bIncludeStopEntry?) {\n addFilter(this._ctx, function (cursor, advance, resolve) {\n if (filterFunction(cursor.value)) {\n advance(resolve);\n return bIncludeStopEntry;\n } else {\n return true;\n }\n });\n return this;\n }\n\n /** Collection.first()\n * \n * https://dexie.org/docs/Collection/Collection.first()\n * \n **/\n first(cb?) {\n return this.limit(1).toArray(function (a) { return a[0]; }).then(cb);\n }\n\n /** Collection.last()\n * \n * https://dexie.org/docs/Collection/Collection.last()\n * \n **/\n last(cb?) {\n return this.reverse().first(cb);\n }\n\n /** Collection.filter()\n * \n * https://dexie.org/docs/Collection/Collection.filter()\n * \n **/\n filter(filterFunction: (x) => boolean): Collection {\n /// function(val){return true/false}\n addFilter(this._ctx, function (cursor) {\n return filterFunction(cursor.value);\n });\n // match filters not used in Dexie.js but can be used by 3rd part libraries to test a\n // collection for a match without querying DB. Used by Dexie.Observable.\n addMatchFilter(this._ctx, filterFunction);\n return this;\n }\n\n /** Collection.and()\n * \n * https://dexie.org/docs/Collection/Collection.and()\n * \n **/\n and(filter: (x) => boolean) {\n return this.filter(filter);\n }\n\n /** Collection.or()\n * \n * https://dexie.org/docs/Collection/Collection.or()\n * \n **/\n or(indexName: string) {\n return new this.db.WhereClause(this._ctx.table, indexName, this);\n }\n\n /** Collection.reverse()\n * \n * https://dexie.org/docs/Collection/Collection.reverse()\n * \n **/\n reverse() {\n this._ctx.dir = (this._ctx.dir === \"prev\" ? \"next\" : \"prev\");\n if (this._ondirectionchange) this._ondirectionchange(this._ctx.dir);\n return this;\n }\n\n /** Collection.desc()\n * \n * https://dexie.org/docs/Collection/Collection.desc()\n * \n **/\n desc() {\n return this.reverse();\n }\n\n /** Collection.eachKey()\n * \n * https://dexie.org/docs/Collection/Collection.eachKey()\n * \n **/\n eachKey(cb?) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n return this.each(function (val, cursor) { cb(cursor.key, cursor); });\n }\n\n /** Collection.eachUniqueKey()\n * \n * https://dexie.org/docs/Collection/Collection.eachUniqueKey()\n * \n **/\n eachUniqueKey(cb?) {\n this._ctx.unique = \"unique\";\n return this.eachKey(cb);\n }\n\n /** Collection.eachPrimaryKey()\n * \n * https://dexie.org/docs/Collection/Collection.eachPrimaryKey()\n * \n **/\n eachPrimaryKey(cb?) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n return this.each(function (val, cursor) { cb(cursor.primaryKey, cursor); });\n }\n\n /** Collection.keys()\n * \n * https://dexie.org/docs/Collection/Collection.keys()\n * \n **/\n keys(cb?) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n var a = [];\n return this.each(function (item, cursor) {\n a.push(cursor.key);\n }).then(function () {\n return a;\n }).then(cb);\n }\n\n /** Collection.primaryKeys()\n * \n * https://dexie.org/docs/Collection/Collection.primaryKeys()\n * \n **/\n primaryKeys(cb?) : PromiseExtended {\n var ctx = this._ctx;\n if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n // Special optimation if we could use IDBObjectStore.getAllKeys() or\n // IDBKeyRange.getAllKeys():\n return this._read(trans => {\n var index = getIndexOrStore(ctx, ctx.table.core.schema);\n return ctx.table.core.query({\n trans,\n values: false,\n limit: ctx.limit,\n query: {\n index,\n range: ctx.range\n }});\n }).then(({result})=>result).then(cb);\n }\n ctx.keysOnly = !ctx.isMatch;\n var a = [];\n return this.each(function (item, cursor) {\n a.push(cursor.primaryKey);\n }).then(function () {\n return a;\n }).then(cb);\n }\n\n /** Collection.uniqueKeys()\n * \n * https://dexie.org/docs/Collection/Collection.uniqueKeys()\n * \n **/\n uniqueKeys(cb?) {\n this._ctx.unique = \"unique\";\n return this.keys(cb);\n }\n\n /** Collection.firstKey()\n * \n * https://dexie.org/docs/Collection/Collection.firstKey()\n * \n **/\n firstKey(cb?) {\n return this.limit(1).keys(function (a) { return a[0]; }).then(cb);\n }\n\n /** Collection.lastKey()\n * \n * https://dexie.org/docs/Collection/Collection.lastKey()\n * \n **/\n lastKey(cb?) {\n return this.reverse().firstKey(cb);\n }\n\n /** Collection.distinct()\n * \n * https://dexie.org/docs/Collection/Collection.distinct()\n * \n **/\n distinct() {\n var ctx = this._ctx,\n idx = ctx.index && ctx.table.schema.idxByName[ctx.index];\n if (!idx || !idx.multi) return this; // distinct() only makes differencies on multiEntry indexes.\n var set = {};\n addFilter(this._ctx, function (cursor: DBCoreCursor) {\n var strKey = cursor.primaryKey.toString(); // Converts any Date to String, String to String, Number to String and Array to comma-separated string\n var found = hasOwn(set, strKey);\n set[strKey] = true;\n return !found;\n });\n return this;\n }\n\n //\n // Methods that mutate storage\n //\n\n /** Collection.modify()\n * \n * https://dexie.org/docs/Collection/Collection.modify()\n * \n **/\n modify(changes: { [keyPath: string]: any }) : PromiseExtended\n modify(changes: (obj: any, ctx:{value: any, primKey: IndexableType}) => void | boolean): PromiseExtended {\n var ctx = this._ctx;\n return this._write(trans => {\n var modifyer: (obj: any, ctx:{value: any, primKey: IndexableType}) => void | boolean\n if (typeof changes === 'function') {\n // Changes is a function that may update, add or delete propterties or even require a deletion the object itself (delete this.item)\n modifyer = changes;\n } else {\n // changes is a set of {keyPath: value} and no one is listening to the updating hook.\n var keyPaths = keys(changes);\n var numKeys = keyPaths.length;\n modifyer = function (item) {\n var anythingModified = false;\n for (var i = 0; i < numKeys; ++i) {\n var keyPath = keyPaths[i], val = changes[keyPath];\n if (getByKeyPath(item, keyPath) !== val) {\n setByKeyPath(item, keyPath, val); // Adding {keyPath: undefined} means that the keyPath should be deleted. Handled by setByKeyPath\n anythingModified = true;\n }\n }\n return anythingModified;\n };\n }\n\n const coreTable = ctx.table.core;\n const {outbound, extractKey} = coreTable.schema.primaryKey;\n const limit = this.db._options.modifyChunkSize || 200;\n const totalFailures = [];\n let successCount = 0;\n const failedKeys: IndexableType[] = [];\n const applyMutateResult = (expectedCount: number, res: DBCoreMutateResponse) => {\n const {failures, numFailures} = res;\n successCount += expectedCount - numFailures;\n for (let pos of keys(failures)) {\n totalFailures.push(failures[pos]);\n }\n }\n return this.clone().primaryKeys().then(keys => {\n\n const nextChunk = (offset: number) => {\n const count = Math.min(limit, keys.length - offset);\n return coreTable.getMany({\n trans,\n keys: keys.slice(offset, offset + count),\n cache: \"immutable\" // Optimize for 2 things:\n // 1) observability-middleware can track changes better.\n // 2) hooks middleware don't have to query the existing values again when tracking changes.\n // We can use \"immutable\" because we promise to not touch the values we retrieve here!\n }).then(values => {\n const addValues = [];\n const putValues = [];\n const putKeys = outbound ? [] : null;\n const deleteKeys = [];\n for (let i=0; i 0 &&\n coreTable.mutate({trans, type: 'add', values: addValues})\n .then(res => {\n for (let pos in res.failures) {\n // Remove from deleteKeys the key of the object that failed to change its primary key\n deleteKeys.splice(parseInt(pos), 1);\n }\n applyMutateResult(addValues.length, res);\n })\n ).then(()=>(putValues.length > 0 || (criteria && typeof changes === 'object')) &&\n coreTable.mutate({\n trans,\n type: 'put',\n keys: putKeys,\n values: putValues,\n criteria,\n changeSpec: typeof changes !== 'function'\n && changes\n }).then(res=>applyMutateResult(putValues.length, res))\n ).then(()=>(deleteKeys.length > 0 || (criteria && changes === deleteCallback)) &&\n coreTable.mutate({\n trans,\n type: 'delete',\n keys: deleteKeys,\n criteria\n }).then(res=>applyMutateResult(deleteKeys.length, res))\n ).then(()=>{\n return keys.length > offset + count && nextChunk(offset + limit);\n });\n });\n }\n\n return nextChunk(0).then(()=>{\n if (totalFailures.length > 0)\n throw new ModifyError(\"Error modifying one or more objects\", totalFailures, successCount, failedKeys as IndexableTypeArrayReadonly);\n\n return keys.length;\n });\n });\n\n });\n }\n\n /** Collection.delete()\n * \n * https://dexie.org/docs/Collection/Collection.delete()\n * \n **/\n delete() : PromiseExtended {\n var ctx = this._ctx,\n range = ctx.range;\n //deletingHook = ctx.table.hook.deleting.fire,\n //hasDeleteHook = deletingHook !== nop;\n if (isPlainKeyRange(ctx) &&\n ((ctx.isPrimKey && !hangsOnDeleteLargeKeyRange) || range.type === DBCoreRangeType.Any)) // if no range, we'll use clear().\n {\n // May use IDBObjectStore.delete(IDBKeyRange) in this case (Issue #208)\n // For chromium, this is the way most optimized version.\n // For IE/Edge, this could hang the indexedDB engine and make operating system instable\n // (https://gist.github.com/dfahlander/5a39328f029de18222cf2125d56c38f7)\n return this._write(trans => {\n // Our API contract is to return a count of deleted items, so we have to count() before delete().\n const {primaryKey} = ctx.table.core.schema;\n const coreRange = range;\n return ctx.table.core.count({trans, query: {index: primaryKey, range: coreRange}}).then(count => {\n return ctx.table.core.mutate({trans, type: 'deleteRange', range: coreRange})\n .then(({failures, lastResult, results, numFailures}) => {\n if (numFailures) throw new ModifyError(\"Could not delete some values\",\n Object.keys(failures).map(pos => failures[pos]),\n count - numFailures);\n return count - numFailures;\n });\n });\n });\n }\n\n return this.modify(deleteCallback);\n }\n}\n\nconst deleteCallback = (value, ctx) => ctx.value = null;\n", "import { Dexie } from '../../classes/dexie';\nimport { makeClassConstructor } from '../../functions/make-class-constructor';\nimport { Collection } from './collection';\nimport { WhereClause } from '../where-clause/where-clause';\nimport { AnyRange } from '../../dbcore/keyrange';\nimport { DBCoreKeyRange } from '../../public/types/dbcore';\nimport { mirror } from '../../functions/chaining-functions';\n\n/** Constructs a Collection instance. */\nexport interface CollectionConstructor {\n new(whereClause?: WhereClause | null, keyRangeGenerator?: () => DBCoreKeyRange): Collection;\n prototype: Collection;\n}\n\n/** Generates a Collection constructor bound to given Dexie instance.\n * \n * The purpose of having dynamically created constructors, is to allow\n * addons to extend classes for a certain Dexie instance without affecting\n * other db instances.\n */\nexport function createCollectionConstructor(db: Dexie) {\n return makeClassConstructor(\n Collection.prototype,\n\n function Collection(\n this: Collection,\n whereClause?: WhereClause | null,\n keyRangeGenerator?: () => DBCoreKeyRange)\n {\n this.db = db;\n let keyRange = AnyRange, error = null;\n if (keyRangeGenerator) try {\n keyRange = keyRangeGenerator();\n } catch (ex) {\n error = ex;\n }\n\n const whereCtx = whereClause._ctx;\n const table = whereCtx.table;\n const readingHook = table.hook.reading.fire;\n this._ctx = {\n table: table,\n index: whereCtx.index,\n isPrimKey: (!whereCtx.index || (table.schema.primKey.keyPath && whereCtx.index === table.schema.primKey.name)),\n range: keyRange,\n keysOnly: false,\n dir: \"next\",\n unique: \"\",\n algorithm: null,\n filter: null,\n replayFilter: null,\n justLimit: true, // True if a replayFilter is just a filter that performs a \"limit\" operation (or none at all)\n isMatch: null,\n offset: 0,\n limit: Infinity,\n error: error, // If set, any promise must be rejected with this error\n or: whereCtx.or,\n valueMapper: readingHook !== mirror ? readingHook : null\n };\n }\n );\n}\n", "import { IndexableType } from '../public/types/indexable-type';\n\nexport function simpleCompare(a, b) {\n return a < b ? -1 : a === b ? 0 : 1;\n}\n\nexport function simpleCompareReverse(a, b) {\n return a > b ? -1 : a === b ? 0 : 1;\n}\n", "import { WhereClause } from './where-clause';\nimport { Collection } from '../collection';\nimport { STRING_EXPECTED } from '../../globals/constants';\nimport { simpleCompare, simpleCompareReverse } from '../../functions/compare-functions';\nimport { IndexableType } from '../../public';\nimport { DBCoreKeyRange, DBCoreRangeType } from '../../public/types/dbcore';\n\nexport function fail(collectionOrWhereClause: Collection | WhereClause, err, T?) {\n var collection = collectionOrWhereClause instanceof WhereClause ?\n new collectionOrWhereClause.Collection (collectionOrWhereClause) :\n collectionOrWhereClause;\n \n collection._ctx.error = T ? new T(err) : new TypeError(err);\n return collection;\n}\n\nexport function emptyCollection(whereClause: WhereClause) {\n return new whereClause.Collection (whereClause, () => rangeEqual(\"\")).limit(0);\n}\n\nexport function upperFactory(dir: 'next' | 'prev') {\n return dir === \"next\" ?\n (s: string) => s.toUpperCase() :\n (s: string) => s.toLowerCase();\n}\n\nexport function lowerFactory(dir: 'next' | 'prev') {\n return dir === \"next\" ?\n (s: string) => s.toLowerCase() :\n (s: string) => s.toUpperCase();\n}\n\nexport function nextCasing(key, lowerKey, upperNeedle, lowerNeedle, cmp, dir) {\n var length = Math.min(key.length, lowerNeedle.length);\n var llp = -1;\n for (var i = 0; i < length; ++i) {\n var lwrKeyChar = lowerKey[i];\n if (lwrKeyChar !== lowerNeedle[i]) {\n if (cmp(key[i], upperNeedle[i]) < 0) return key.substr(0, i) + upperNeedle[i] + upperNeedle.substr(i + 1);\n if (cmp(key[i], lowerNeedle[i]) < 0) return key.substr(0, i) + lowerNeedle[i] + upperNeedle.substr(i + 1);\n if (llp >= 0) return key.substr(0, llp) + lowerKey[llp] + upperNeedle.substr(llp + 1);\n return null;\n }\n if (cmp(key[i], lwrKeyChar) < 0) llp = i;\n }\n if (length < lowerNeedle.length && dir === \"next\") return key + upperNeedle.substr(key.length);\n if (length < key.length && dir === \"prev\") return key.substr(0, upperNeedle.length);\n return (llp < 0 ? null : key.substr(0, llp) + lowerNeedle[llp] + upperNeedle.substr(llp + 1));\n}\n\nexport function addIgnoreCaseAlgorithm(whereClause: WhereClause, match, needles, suffix) {\n /// \n var upper, lower, compare, upperNeedles, lowerNeedles, direction, nextKeySuffix,\n needlesLen = needles.length;\n if (!needles.every(s => typeof s === 'string')) {\n return fail(whereClause, STRING_EXPECTED);\n }\n function initDirection(dir) {\n upper = upperFactory(dir);\n lower = lowerFactory(dir);\n compare = (dir === \"next\" ? simpleCompare : simpleCompareReverse);\n var needleBounds = needles.map(function (needle){\n return {lower: lower(needle), upper: upper(needle)};\n }).sort(function(a,b) {\n return compare(a.lower, b.lower);\n });\n upperNeedles = needleBounds.map(function (nb){ return nb.upper; });\n lowerNeedles = needleBounds.map(function (nb){ return nb.lower; });\n direction = dir;\n nextKeySuffix = (dir === \"next\" ? \"\" : suffix);\n }\n initDirection(\"next\");\n\n var c = new whereClause.Collection (\n whereClause,\n ()=>createRange(upperNeedles[0], lowerNeedles[needlesLen-1] + suffix)\n );\n\n c._ondirectionchange = function (direction) {\n // This event onlys occur before filter is called the first time.\n initDirection(direction);\n };\n\n var firstPossibleNeedle = 0;\n\n c._addAlgorithm(function (cursor, advance, resolve) {\n /// \n /// \n /// \n var key = cursor.key;\n if (typeof key !== 'string') return false;\n var lowerKey = lower(key);\n if (match(lowerKey, lowerNeedles, firstPossibleNeedle)) {\n return true;\n } else {\n var lowestPossibleCasing = null;\n for (var i=firstPossibleNeedle; i 0) {\n lowestPossibleCasing = casing;\n }\n }\n if (lowestPossibleCasing !== null) {\n advance(function () { cursor.continue(lowestPossibleCasing + nextKeySuffix); });\n } else {\n advance(resolve);\n }\n return false;\n }\n });\n return c;\n}\n\nexport function createRange (lower: IndexableType, upper: IndexableType, lowerOpen?: boolean, upperOpen?: boolean): DBCoreKeyRange {\n return {\n type: DBCoreRangeType.Range,\n lower,\n upper,\n lowerOpen,\n upperOpen\n };\n}\n\nexport function rangeEqual (value: IndexableType) : DBCoreKeyRange {\n return {\n type: DBCoreRangeType.Equal,\n lower: value,\n upper: value\n };\n}\n", "import { WhereClause as IWhereClause } from \"../../public/types/where-clause\";\nimport { Collection } from \"../collection\";\nimport { Table } from \"../table\";\nimport { IndexableType } from \"../../public/types/indexable-type\";\nimport { emptyCollection, fail, addIgnoreCaseAlgorithm, createRange, rangeEqual } from './where-clause-helpers';\nimport { INVALID_KEY_ARGUMENT, STRING_EXPECTED, maxString, minKey } from '../../globals/constants';\nimport { getArrayOf, NO_CHAR_ARRAY } from '../../functions/utils';\nimport { exceptions } from '../../errors';\nimport { Dexie } from '../dexie';\nimport { Collection as ICollection} from \"../../public/types/collection\";\n\n/** class WhereClause\n * \n * https://dexie.org/docs/WhereClause/WhereClause\n */\nexport class WhereClause implements IWhereClause {\n db: Dexie;\n _IDBKeyRange: typeof IDBKeyRange;\n _ctx: {\n table: Table;\n index: string;\n or: Collection;\n }\n _cmp: (a: IndexableType, b: IndexableType) => number;\n _ascending: (a: IndexableType, b: IndexableType) => number;\n _descending: (a: IndexableType, b: IndexableType) => number;\n _min: (a: IndexableType, b: IndexableType) => IndexableType;\n _max: (a: IndexableType, b: IndexableType) => IndexableType;\n\n get Collection() {\n return this._ctx.table.db.Collection;\n }\n\n /** WhereClause.between()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.between()\n * \n **/\n between(lower: IndexableType, upper: IndexableType, includeLower?: boolean, includeUpper?: boolean) {\n includeLower = includeLower !== false; // Default to true\n includeUpper = includeUpper === true; // Default to false\n try {\n if ((this._cmp(lower, upper) > 0) ||\n (this._cmp(lower, upper) === 0 && (includeLower || includeUpper) && !(includeLower && includeUpper)))\n return emptyCollection(this); // Workaround for idiotic W3C Specification that DataError must be thrown if lower > upper. The natural result would be to return an empty collection.\n return new this.Collection(this, ()=>createRange(lower, upper, !includeLower, !includeUpper));\n } catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n }\n\n /** WhereClause.equals()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.equals()\n * \n **/\n equals(value: IndexableType) {\n if (value == null) return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, () => rangeEqual(value)) as ICollection;\n }\n\n /** WhereClause.above()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.above()\n * \n **/\n above(value: IndexableType) {\n if (value == null) return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, () => createRange(value, undefined, true));\n }\n\n /** WhereClause.aboveOrEqual()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.aboveOrEqual()\n * \n **/\n aboveOrEqual(value: IndexableType) {\n if (value == null) return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, () => createRange(value, undefined, false));\n }\n\n /** WhereClause.below()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.below()\n * \n **/\n below(value: IndexableType) {\n if (value == null) return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, () => createRange(undefined, value, false, true));\n }\n\n /** WhereClause.belowOrEqual()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.belowOrEqual()\n * \n **/\n belowOrEqual(value: IndexableType) {\n if (value == null) return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, () => createRange(undefined, value));\n }\n\n /** WhereClause.startsWith()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.startsWith()\n * \n **/\n startsWith(str: string) {\n if (typeof str !== 'string') return fail(this, STRING_EXPECTED);\n return this.between(str, str + maxString, true, true);\n }\n\n /** WhereClause.startsWithIgnoreCase()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.startsWithIgnoreCase()\n * \n **/\n startsWithIgnoreCase(str: string) {\n if (str === \"\") return this.startsWith(str);\n return addIgnoreCaseAlgorithm(this, (x, a) => x.indexOf(a[0]) === 0, [str], maxString);\n }\n\n /** WhereClause.equalsIgnoreCase()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.equalsIgnoreCase()\n * \n **/\n equalsIgnoreCase(str: string) {\n return addIgnoreCaseAlgorithm(this, (x, a) => x === a[0], [str], \"\");\n }\n\n /** WhereClause.anyOfIgnoreCase()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.anyOfIgnoreCase()\n * \n **/\n anyOfIgnoreCase(...values: string[]): Collection;\n anyOfIgnoreCase(values: string[]): Collection;\n anyOfIgnoreCase() {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0) return emptyCollection(this);\n return addIgnoreCaseAlgorithm(this, (x, a) => a.indexOf(x) !== -1, set, \"\");\n }\n\n /** WhereClause.startsWithAnyOfIgnoreCase()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.startsWithAnyOfIgnoreCase()\n * \n **/\n startsWithAnyOfIgnoreCase(...values: string[]): Collection;\n startsWithAnyOfIgnoreCase(values: string[]): Collection;\n startsWithAnyOfIgnoreCase() {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0) return emptyCollection(this);\n return addIgnoreCaseAlgorithm(this, (x, a) => a.some(n => x.indexOf(n) === 0), set, maxString);\n }\n\n /** WhereClause.anyOf()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.anyOf()\n * \n **/\n anyOf(...values: string[]): Collection;\n anyOf(values: string[]): Collection;\n anyOf() {\n const set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n let compare = this._cmp;\n try { set.sort(compare); } catch (e) { return fail(this, INVALID_KEY_ARGUMENT); }\n if (set.length === 0) return emptyCollection(this);\n const c = new this.Collection(this, () => createRange(set[0], set[set.length - 1]));\n\n c._ondirectionchange = direction => {\n compare = (direction === \"next\" ?\n this._ascending :\n this._descending);\n set.sort(compare);\n };\n\n let i = 0;\n c._addAlgorithm((cursor, advance, resolve) => {\n const key = cursor.key;\n while (compare(key, set[i]) > 0) {\n // The cursor has passed beyond this key. Check next.\n ++i;\n if (i === set.length) {\n // There is no next. Stop searching.\n advance(resolve);\n return false;\n }\n }\n if (compare(key, set[i]) === 0) {\n // The current cursor value should be included and we should continue a single step in case next item has the same key or possibly our next key in set.\n return true;\n } else {\n // cursor.key not yet at set[i]. Forward cursor to the next key to hunt for.\n advance(() => { cursor.continue(set[i]); });\n return false;\n }\n });\n return c;\n }\n\n /** WhereClause.notEqual()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.notEqual()\n * \n **/\n notEqual(value: IndexableType) {\n return this.inAnyRange([[minKey, value], [value, this.db._maxKey]], { includeLowers: false, includeUppers: false });\n }\n\n /** WhereClause.noneOf()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.noneOf()\n * \n **/\n noneOf(...values: string[]): Collection;\n noneOf(values: string[]): Collection;\n noneOf() {\n const set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0) return new this.Collection(this); // Return entire collection.\n try { set.sort(this._ascending); } catch (e) { return fail(this, INVALID_KEY_ARGUMENT); }\n // Transform [\"a\",\"b\",\"c\"] to a set of ranges for between/above/below: [[minKey,\"a\"], [\"a\",\"b\"], [\"b\",\"c\"], [\"c\",maxKey]]\n const ranges = set.reduce(\n (res, val) => res ?\n res.concat([[res[res.length - 1][1], val]]) :\n [[minKey, val]],\n null);\n ranges.push([set[set.length - 1], this.db._maxKey]);\n return this.inAnyRange(ranges, { includeLowers: false, includeUppers: false });\n }\n\n /** WhereClause.inAnyRange()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.inAnyRange()\n * \n **/\n inAnyRange(\n ranges: ReadonlyArray<{ 0: IndexableType, 1: IndexableType }>,\n options?: { includeLowers?: boolean, includeUppers?: boolean })\n {\n const cmp = this._cmp,\n ascending = this._ascending,\n descending = this._descending,\n min = this._min,\n max = this._max;\n\n if (ranges.length === 0) return emptyCollection(this);\n if (!ranges.every(range =>\n range[0] !== undefined &&\n range[1] !== undefined &&\n ascending(range[0], range[1]) <= 0)) {\n return fail(\n this,\n \"First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower\",\n exceptions.InvalidArgument);\n }\n const includeLowers = !options || options.includeLowers !== false; // Default to true\n const includeUppers = options && options.includeUppers === true; // Default to false\n\n function addRange(ranges, newRange) {\n let i = 0, l = ranges.length;\n for (; i < l; ++i) {\n const range = ranges[i];\n if (cmp(newRange[0], range[1]) < 0 && cmp(newRange[1], range[0]) > 0) {\n range[0] = min(range[0], newRange[0]);\n range[1] = max(range[1], newRange[1]);\n break;\n }\n }\n if (i === l)\n ranges.push(newRange);\n return ranges;\n }\n\n let sortDirection = ascending;\n function rangeSorter(a, b) { return sortDirection(a[0], b[0]); }\n\n // Join overlapping ranges\n let set;\n try {\n set = ranges.reduce(addRange, []);\n set.sort(rangeSorter);\n } catch (ex) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n\n let rangePos = 0;\n const keyIsBeyondCurrentEntry = includeUppers ?\n key => ascending(key, set[rangePos][1]) > 0 :\n key => ascending(key, set[rangePos][1]) >= 0;\n\n const keyIsBeforeCurrentEntry = includeLowers ?\n key => descending(key, set[rangePos][0]) > 0 :\n key => descending(key, set[rangePos][0]) >= 0;\n\n function keyWithinCurrentRange(key) {\n return !keyIsBeyondCurrentEntry(key) && !keyIsBeforeCurrentEntry(key);\n }\n\n let checkKey = keyIsBeyondCurrentEntry;\n\n const c = new this.Collection(\n this,\n () => createRange(set[0][0], set[set.length - 1][1], !includeLowers, !includeUppers));\n\n c._ondirectionchange = direction => {\n if (direction === \"next\") {\n checkKey = keyIsBeyondCurrentEntry;\n sortDirection = ascending;\n } else {\n checkKey = keyIsBeforeCurrentEntry;\n sortDirection = descending;\n }\n set.sort(rangeSorter);\n };\n\n c._addAlgorithm((cursor, advance, resolve) => {\n var key = cursor.key;\n while (checkKey(key)) {\n // The cursor has passed beyond this key. Check next.\n ++rangePos;\n if (rangePos === set.length) {\n // There is no next. Stop searching.\n advance(resolve);\n return false;\n }\n }\n if (keyWithinCurrentRange(key)) {\n // The current cursor value should be included and we should continue a single step in case next item has the same key or possibly our next key in set.\n return true;\n } else if (this._cmp(key, set[rangePos][1]) === 0 || this._cmp(key, set[rangePos][0]) === 0) {\n // includeUpper or includeLower is false so keyWithinCurrentRange() returns false even though we are at range border.\n // Continue to next key but don't include this one.\n return false;\n } else {\n // cursor.key not yet at set[i]. Forward cursor to the next key to hunt for.\n advance(() => {\n if (sortDirection === ascending) cursor.continue(set[rangePos][0]);\n else cursor.continue(set[rangePos][1]);\n });\n return false;\n }\n });\n return c;\n }\n\n /** WhereClause.startsWithAnyOf()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.startsWithAnyOf()\n * \n **/\n startsWithAnyOf(...prefixes: string[]): Collection;\n startsWithAnyOf(prefixes: string[]): Collection;\n startsWithAnyOf() {\n const set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n\n if (!set.every(s => typeof s === 'string')) {\n return fail(this, \"startsWithAnyOf() only works with strings\");\n }\n if (set.length === 0) return emptyCollection(this);\n\n return this.inAnyRange(set.map((str: string) => [str, str + maxString]));\n }\n\n}\n", "import { Dexie } from '../dexie';\nimport { makeClassConstructor } from '../../functions/make-class-constructor';\nimport { WhereClause } from './where-clause';\nimport { Table } from '../table';\nimport { Collection } from '../collection';\nimport { exceptions } from '../../errors';\n\nexport interface WhereClauseConstructor {\n new(table: Table, index?: string, orCollection?: Collection): WhereClause;\n prototype: WhereClause;\n}\n\n/** Generates a WhereClause constructor.\n * \n * The purpose of having dynamically created constructors, is to allow\n * addons to extend classes for a certain Dexie instance without affecting\n * other db instances.\n */\nexport function createWhereClauseConstructor(db: Dexie) {\n return makeClassConstructor(\n WhereClause.prototype,\n\n function WhereClause(this: WhereClause, table: Table, index?: string, orCollection?: Collection) {\n this.db = db;\n this._ctx = {\n table: table,\n index: index === \":id\" ? null : index,\n or: orCollection\n };\n const indexedDB = db._deps.indexedDB;\n if (!indexedDB) throw new exceptions.MissingAPI();\n this._cmp = this._ascending = indexedDB.cmp.bind(indexedDB);\n this._descending = (a, b) => indexedDB.cmp(b, a);\n this._max = (a, b) => indexedDB.cmp(a,b) > 0 ? a : b;\n this._min = (a, b) => indexedDB.cmp(a,b) < 0 ? a : b;\n this._IDBKeyRange = db._deps.IDBKeyRange;\n }\n );\n}\n", "import { wrap } from \"../helpers/promise\";\n\nexport function eventRejectHandler(reject) {\n return wrap(function (event) {\n preventDefault(event);\n reject (event.target.error);\n return false;\n });\n}\n\nexport function eventSuccessHandler (resolve) {\n return wrap(function (event){\n resolve(event.target.result);\n });\n}\n\nexport function hookedEventRejectHandler (reject) {\n return wrap(function (event) {\n // See comment on hookedEventSuccessHandler() why wrap() is needed only when supporting hooks.\n \n var req = event.target,\n err = req.error,\n ctx = req._hookCtx,// Contains the hook error handler. Put here instead of closure to boost performance.\n hookErrorHandler = ctx && ctx.onerror;\n hookErrorHandler && hookErrorHandler(err);\n preventDefault(event);\n reject (err);\n return false;\n });\n}\n\nexport function hookedEventSuccessHandler(resolve) {\n // wrap() is needed when calling hooks because the rare scenario of:\n // * hook does a db operation that fails immediately (IDB throws exception)\n // For calling db operations on correct transaction, wrap makes sure to set PSD correctly.\n // wrap() will also execute in a virtual tick.\n // * If not wrapped in a virtual tick, direct exception will launch a new physical tick.\n // * If this was the last event in the bulk, the promise will resolve after a physical tick\n // and the transaction will have committed already.\n // If no hook, the virtual tick will be executed in the reject()/resolve of the final promise,\n // because it is always marked with _lib = true when created using Transaction._promise().\n return wrap(function(event) {\n var req = event.target,\n ctx = req._hookCtx,// Contains the hook error handler. Put here instead of closure to boost performance.\n result = ctx.value || req.result, // Pass the object value on updates. The result from IDB is the primary key.\n hookSuccessHandler = ctx && ctx.onsuccess;\n hookSuccessHandler && hookSuccessHandler(result);\n resolve && resolve(result);\n }, resolve);\n}\n\n\nexport function preventDefault(event) {\n if (event.stopPropagation) // IndexedDBShim doesnt support this on Safari 8 and below.\n event.stopPropagation();\n if (event.preventDefault) // IndexedDBShim doesnt support this on Safari 8 and below.\n event.preventDefault();\n}\n\nexport function BulkErrorHandlerCatchAll(errorList, done?, supportHooks?) {\n return (supportHooks ? hookedEventRejectHandler : eventRejectHandler)(e => {\n errorList.push(e);\n done && done();\n });\n}\n\n", "import Events from '../helpers/Events';\nimport { GlobalDexieEvents } from '../public/types/db-events';\n\nexport const DEXIE_STORAGE_MUTATED_EVENT_NAME = 'storagemutated' as 'storagemutated';\n\n// Name of the global event fired using DOM dispatchEvent (if not in node).\n// Reason for propagating this as a DOM event is for getting reactivity across\n// multiple versions of Dexie within the same app (as long as they are\n// compatible with regards to the event data).\n// If the ObservabilitySet protocol change in a way that would not be backward\n// compatible, make sure also update the event name to a new number at the end\n// so that two Dexie instances of different versions continue to work together\n// - maybe not able to communicate but won't fail due to unexpected data in\n// the detail property of the CustomEvent. If so, also make sure to udpate\n// docs and explain at which Dexie version the new name and format of the event\n// is being used.\nexport const STORAGE_MUTATED_DOM_EVENT_NAME = 'x-storagemutated-1';\n\nexport const globalEvents = Events(null, DEXIE_STORAGE_MUTATED_EVENT_NAME) as GlobalDexieEvents;\n", "import { Transaction as ITransaction } from '../../public/types/transaction';\nimport { DexiePromise, wrap, rejection } from \"../../helpers/promise\";\nimport { DbSchema } from '../../public/types/db-schema';\nimport { assert, hasOwn } from '../../functions/utils';\nimport { PSD, usePSD } from '../../helpers/promise';\nimport { Dexie } from '../dexie';\nimport { exceptions } from '../../errors';\nimport { safariMultiStoreFix } from '../../functions/quirks';\nimport { preventDefault } from '../../functions/event-wrappers';\nimport { newScope } from '../../helpers/promise';\nimport * as Debug from '../../helpers/debug';\nimport { Table } from '../table';\nimport { globalEvents } from '../../globals/global-events';\n\n/** Transaction\n * \n * https://dexie.org/docs/Transaction/Transaction\n * \n **/\nexport class Transaction implements ITransaction {\n db: Dexie;\n active: boolean;\n mode: IDBTransactionMode;\n chromeTransactionDurability: ChromeTransactionDurability;\n idbtrans: IDBTransaction;\n storeNames: string[];\n on: any;\n parent?: Transaction;\n schema: DbSchema;\n _memoizedTables: {[tableName: string]: Table};\n\n _reculock: number;\n _blockedFuncs: { 0: () => any, 1: any }[];\n _resolve: () => void;\n _reject: (Error) => void;\n _waitingFor: DexiePromise; // for waitFor()\n _waitingQueue: Function[]; // for waitFor()\n _spinCount: number; // Just for debugging waitFor()\n _completion: DexiePromise;\n\n //\n // Transaction internal methods (not required by API users, but needed internally and eventually by dexie extensions)\n //\n\n /** Transaction._lock()\n * \n * Internal method.\n */\n _lock() {\n assert(!PSD.global); // Locking and unlocking reuires to be within a PSD scope.\n // Temporary set all requests into a pending queue if they are called before database is ready.\n ++this._reculock; // Recursive read/write lock pattern using PSD (Promise Specific Data) instead of TLS (Thread Local Storage)\n if (this._reculock === 1 && !PSD.global) PSD.lockOwnerFor = this;\n return this;\n }\n\n /** Transaction._unlock()\n * \n * Internal method.\n */\n _unlock() {\n assert(!PSD.global); // Locking and unlocking reuires to be within a PSD scope.\n if (--this._reculock === 0) {\n if (!PSD.global) PSD.lockOwnerFor = null;\n while (this._blockedFuncs.length > 0 && !this._locked()) {\n var fnAndPSD = this._blockedFuncs.shift();\n try { usePSD(fnAndPSD[1], fnAndPSD[0]); } catch (e) { }\n }\n }\n return this;\n }\n\n /** Transaction._lock()\n * \n * Internal method.\n */\n _locked() {\n // Checks if any write-lock is applied on this transaction.\n // To simplify the Dexie API for extension implementations, we support recursive locks.\n // This is accomplished by using \"Promise Specific Data\" (PSD).\n // PSD data is bound to a Promise and any child Promise emitted through then() or resolve( new Promise() ).\n // PSD is local to code executing on top of the call stacks of any of any code executed by Promise():\n // * callback given to the Promise() constructor (function (resolve, reject){...})\n // * callbacks given to then()/catch()/finally() methods (function (value){...})\n // If creating a new independant Promise instance from within a Promise call stack, the new Promise will derive the PSD from the call stack of the parent Promise.\n // Derivation is done so that the inner PSD __proto__ points to the outer PSD.\n // PSD.lockOwnerFor will point to current transaction object if the currently executing PSD scope owns the lock.\n return this._reculock && PSD.lockOwnerFor !== this;\n }\n\n /** Transaction.create()\n * \n * Internal method.\n * \n */\n create(idbtrans?: IDBTransaction) {\n if (!this.mode) return this;\n const idbdb = this.db.idbdb;\n const dbOpenError = this.db._state.dbOpenError;\n assert(!this.idbtrans);\n if (!idbtrans && !idbdb) {\n switch (dbOpenError && dbOpenError.name) {\n case \"DatabaseClosedError\":\n // Errors where it is no difference whether it was caused by the user operation or an earlier call to db.open()\n throw new exceptions.DatabaseClosed(dbOpenError);\n case \"MissingAPIError\":\n // Errors where it is no difference whether it was caused by the user operation or an earlier call to db.open()\n throw new exceptions.MissingAPI(dbOpenError.message, dbOpenError);\n default:\n // Make it clear that the user operation was not what caused the error - the error had occurred earlier on db.open()!\n throw new exceptions.OpenFailed(dbOpenError);\n }\n }\n if (!this.active) throw new exceptions.TransactionInactive();\n assert(this._completion._state === null); // Completion Promise must still be pending.\n\n idbtrans = this.idbtrans = idbtrans ||\n (this.db.core \n ? this.db.core.transaction(this.storeNames, this.mode as 'readwrite' | 'readonly', { durability: this.chromeTransactionDurability })\n : idbdb.transaction(this.storeNames, this.mode, { durability: this.chromeTransactionDurability })\n ) as IDBTransaction;\n\n idbtrans.onerror = wrap(ev => {\n preventDefault(ev);// Prohibit default bubbling to window.error\n this._reject(idbtrans.error);\n });\n idbtrans.onabort = wrap(ev => {\n preventDefault(ev);\n this.active && this._reject(new exceptions.Abort(idbtrans.error));\n this.active = false;\n this.on(\"abort\").fire(ev);\n });\n idbtrans.oncomplete = wrap(() => {\n this.active = false;\n this._resolve();\n if ('mutatedParts' in idbtrans) {\n globalEvents.storagemutated.fire(idbtrans[\"mutatedParts\"]);\n }\n });\n return this;\n }\n\n /** Transaction._promise()\n * \n * Internal method.\n */\n _promise(\n mode: IDBTransactionMode,\n fn: (resolve, reject, trans: Transaction) => PromiseLike | void,\n bWriteLock?: string | boolean): DexiePromise\n {\n if (mode === 'readwrite' && this.mode !== 'readwrite')\n return rejection(new exceptions.ReadOnly(\"Transaction is readonly\"));\n\n if (!this.active)\n return rejection(new exceptions.TransactionInactive());\n\n if (this._locked()) {\n return new DexiePromise((resolve, reject) => {\n this._blockedFuncs.push([() => {\n this._promise(mode, fn, bWriteLock).then(resolve, reject);\n }, PSD]);\n });\n\n } else if (bWriteLock) {\n return newScope(() => {\n var p = new DexiePromise((resolve, reject) => {\n this._lock();\n const rv = fn(resolve, reject, this);\n if (rv && rv.then) rv.then(resolve, reject);\n });\n p.finally(() => this._unlock());\n p._lib = true;\n return p;\n });\n\n } else {\n var p = new DexiePromise((resolve, reject) => {\n var rv = fn(resolve, reject, this);\n if (rv && rv.then) rv.then(resolve, reject);\n });\n p._lib = true;\n return p;\n }\n }\n\n /** Transaction._root()\n * \n * Internal method. Retrieves the root transaction in the tree of sub transactions.\n */\n _root() {\n return this.parent ? this.parent._root() : this;\n }\n\n /** Transaction.waitFor()\n * \n * Internal method. Can be accessed from the public API through\n * Dexie.waitFor(): https://dexie.org/docs/Dexie/Dexie.waitFor()\n * \n **/\n waitFor(promiseLike: PromiseLike) {\n // Always operate on the root transaction (in case this is a sub stransaction)\n var root = this._root();\n // For stability reasons, convert parameter to promise no matter what type is passed to waitFor().\n // (We must be able to call .then() on it.)\n const promise = DexiePromise.resolve(promiseLike);\n if (root._waitingFor) {\n // Already called waitFor(). Wait for both to complete.\n root._waitingFor = root._waitingFor.then(() => promise);\n } else {\n // We're not in waiting state. Start waiting state.\n root._waitingFor = promise;\n root._waitingQueue = [];\n // Start interacting with indexedDB until promise completes:\n var store = root.idbtrans.objectStore(root.storeNames[0]);\n (function spin() {\n ++root._spinCount; // For debugging only\n while (root._waitingQueue.length) (root._waitingQueue.shift())();\n if (root._waitingFor) store.get(-Infinity).onsuccess = spin;\n }());\n }\n var currentWaitPromise = root._waitingFor;\n return new DexiePromise((resolve, reject) => {\n promise.then(\n res => root._waitingQueue.push(wrap(resolve.bind(null, res))),\n err => root._waitingQueue.push(wrap(reject.bind(null, err)))\n ).finally(() => {\n if (root._waitingFor === currentWaitPromise) {\n // No one added a wait after us. Safe to stop the spinning.\n root._waitingFor = null;\n }\n });\n });\n } \n\n /** Transaction.abort()\n * \n * https://dexie.org/docs/Transaction/Transaction.abort()\n */\n abort() {\n if (this.active) {\n this.active = false;\n if (this.idbtrans) this.idbtrans.abort();\n this._reject(new exceptions.Abort());\n }\n }\n\n /** Transaction.table()\n * \n * https://dexie.org/docs/Transaction/Transaction.table()\n */\n table(tableName: string) {\n const memoizedTables = (this._memoizedTables || (this._memoizedTables = {}));\n if (hasOwn(memoizedTables, tableName))\n return memoizedTables[tableName];\n const tableSchema = this.schema[tableName];\n if (!tableSchema) {\n throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\"); \n }\n\n const transactionBoundTable = new this.db.Table(tableName, tableSchema, this);\n transactionBoundTable.core = this.db.core.table(tableName);\n memoizedTables[tableName] = transactionBoundTable;\n return transactionBoundTable;\n }\n}\n", "import { Dexie } from '../dexie';\nimport { makeClassConstructor } from '../../functions/make-class-constructor';\nimport { Transaction } from './transaction';\nimport { DbSchema } from '../../public/types/db-schema';\nimport Events from '../../helpers/Events';\nimport Promise, { rejection } from '../../helpers/promise';\n\nexport interface TransactionConstructor {\n new (\n mode: IDBTransactionMode,\n storeNames: string[],\n dbschema: DbSchema,\n chromeTransactionDurability: ChromeTransactionDurability,\n parent?: Transaction) : T;\n prototype: T;\n}\n\n/** Generates a Transaction constructor bound to given Dexie instance.\n * \n * The purpose of having dynamically created constructors, is to allow\n * addons to extend classes for a certain Dexie instance without affecting\n * other db instances.\n */\nexport function createTransactionConstructor(db: Dexie) {\n return makeClassConstructor>(\n Transaction.prototype,\n function Transaction (\n this: Transaction,\n mode: IDBTransactionMode,\n storeNames: string[],\n dbschema: DbSchema,\n chromeTransactionDurability: ChromeTransactionDurability,\n parent?: Transaction)\n {\n this.db = db;\n this.mode = mode;\n this.storeNames = storeNames;\n this.schema = dbschema;\n this.chromeTransactionDurability = chromeTransactionDurability;\n this.idbtrans = null;\n this.on = Events(this, \"complete\", \"error\", \"abort\");\n this.parent = parent || null;\n this.active = true;\n this._reculock = 0;\n this._blockedFuncs = [];\n this._resolve = null;\n this._reject = null;\n this._waitingFor = null;\n this._waitingQueue = null;\n this._spinCount = 0; // Just for debugging waitFor()\n this._completion = new Promise ((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n \n this._completion.then(\n ()=> {\n this.active = false;\n this.on.complete.fire();\n },\n e => {\n var wasActive = this.active;\n this.active = false;\n this.on.error.fire(e);\n this.parent ?\n this.parent._reject(e) :\n wasActive && this.idbtrans && this.idbtrans.abort();\n return rejection(e); // Indicate we actually DO NOT catch this error.\n });\n \n });\n}\n", "import { IndexSpec } from '../public/types/index-spec';\n\nexport function createIndexSpec(\n name: string,\n keyPath: string | string[],\n unique: boolean,\n multi: boolean,\n auto: boolean,\n compound: boolean,\n isPrimKey: boolean\n): IndexSpec {\n return {\n name,\n keyPath,\n unique,\n multi,\n auto,\n compound,\n src: (unique && !isPrimKey ? '&' : '') + (multi ? '*' : '') + (auto ? \"++\" : \"\") + nameFromKeyPath(keyPath)\n }\n}\n\nexport function nameFromKeyPath (keyPath?: string | string[]): string {\n return typeof keyPath === 'string' ?\n keyPath :\n keyPath ? ('[' + [].join.call(keyPath, '+') + ']') : \"\";\n}\n", "import { IndexSpec } from '../public/types/index-spec';\nimport { TableSchema } from '../public/types/table-schema';\nimport { createIndexSpec } from './index-spec';\nimport { arrayToObject } from '../functions/utils';\n\nexport function createTableSchema (\n name: string,\n primKey: IndexSpec,\n indexes: IndexSpec[]\n): TableSchema {\n return {\n name,\n primKey,\n indexes,\n mappedClass: null,\n idxByName: arrayToObject(indexes, index => [index.name, index])\n };\n}\n", "import { maxString } from '../globals/constants';\n\nexport function safariMultiStoreFix(storeNames: string[]) {\n return storeNames.length === 1 ? storeNames[0] : storeNames;\n}\n\nexport function getNativeGetDatabaseNamesFn(indexedDB) {\n var fn = indexedDB && (indexedDB.getDatabaseNames || indexedDB.webkitGetDatabaseNames);\n return fn && fn.bind(indexedDB);\n}\n\nexport let getMaxKey = (IdbKeyRange: typeof IDBKeyRange) => {\n try {\n IdbKeyRange.only([[]]);\n getMaxKey = () => [[]];\n return [[]];\n } catch (e) {\n getMaxKey = () => maxString;\n return maxString;\n }\n}\n", "import { getByKeyPath } from '../functions/utils';\n\nexport function getKeyExtractor (keyPath: null | string | string[]) : (a: any) => any {\n if (keyPath == null) {\n return () => undefined;\n } else if (typeof keyPath === 'string') {\n return getSinglePathKeyExtractor(keyPath);\n } else {\n return obj => getByKeyPath(obj, keyPath);\n }\n}\n\nexport function getSinglePathKeyExtractor(keyPath: string) {\n const split = keyPath.split('.');\n if (split.length === 1) {\n return obj => obj[keyPath];\n } else {\n return obj => getByKeyPath(obj, keyPath);\n }\n}\n", "import {\n DBCore,\n DBCoreCursor,\n DBCoreOpenCursorRequest,\n DBCoreQueryRequest,\n DBCoreIndex,\n DBCoreKeyRange,\n DBCoreQueryResponse,\n DBCoreRangeType,\n DBCoreSchema,\n DBCoreTableSchema,\n DBCoreTable,\n DBCoreMutateResponse,\n} from \"../public/types/dbcore\";\nimport { isArray } from '../functions/utils';\nimport { eventRejectHandler, preventDefault } from '../functions/event-wrappers';\nimport { wrap } from '../helpers/promise';\nimport { getMaxKey } from '../functions/quirks';\nimport { getKeyExtractor } from './get-key-extractor';\n\nexport function arrayify(arrayLike: {length: number, [index: number]: T}): T[] {\n return [].slice.call(arrayLike);\n}\nexport function pick(obj: T, props: Prop[]): Pick {\n const result = {} as Pick;\n props.forEach(prop => result[prop] = obj[prop]);\n return result;\n}\n\nlet _id_counter = 0;\n\nexport function getKeyPathAlias(keyPath: null | string | string[]) {\n return keyPath == null ?\n \":id\" :\n typeof keyPath === 'string' ?\n keyPath :\n `[${keyPath.join('+')}]`;\n}\n\nexport function createDBCore (\n db: IDBDatabase,\n IdbKeyRange: typeof IDBKeyRange,\n tmpTrans: IDBTransaction) : DBCore\n{\n function extractSchema(db: IDBDatabase, trans: IDBTransaction) : {schema: DBCoreSchema, hasGetAll: boolean} {\n const tables = arrayify(db.objectStoreNames);\n return {\n schema: {\n name: db.name,\n tables: tables.map(table => trans.objectStore(table)).map(store => {\n const {keyPath, autoIncrement} = store;\n const compound = isArray(keyPath);\n const outbound = keyPath == null;\n const indexByKeyPath: {[keyPathAlias: string]: DBCoreIndex} = {};\n const result = {\n name: store.name,\n primaryKey: {\n name: null,\n isPrimaryKey: true,\n outbound,\n compound,\n keyPath,\n autoIncrement,\n unique: true,\n extractKey: getKeyExtractor(keyPath)\n } as DBCoreIndex,\n indexes: arrayify(store.indexNames).map(indexName => store.index(indexName))\n .map(index => {\n const {name, unique, multiEntry, keyPath} = index;\n const compound = isArray(keyPath);\n const result: DBCoreIndex = {\n name,\n compound,\n keyPath,\n unique,\n multiEntry,\n extractKey: getKeyExtractor(keyPath)\n };\n indexByKeyPath[getKeyPathAlias(keyPath)] = result;\n return result;\n }),\n getIndexByKeyPath: (keyPath: null | string | string[]) => indexByKeyPath[getKeyPathAlias(keyPath)]\n };\n indexByKeyPath[\":id\"] = result.primaryKey;\n if (keyPath != null) {\n indexByKeyPath[getKeyPathAlias(keyPath)] = result.primaryKey;\n }\n return result;\n })\n },\n hasGetAll: tables.length > 0 && ('getAll' in trans.objectStore(tables[0])) &&\n !(typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) &&\n !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) &&\n [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604) // Bug with getAll() on Safari ver<604. See discussion following PR #579\n };\n }\n\n function makeIDBKeyRange (range: DBCoreKeyRange) : IDBKeyRange | null {\n if (range.type === DBCoreRangeType.Any) return null;\n if (range.type === DBCoreRangeType.Never) throw new Error(\"Cannot convert never type to IDBKeyRange\");\n const {lower, upper, lowerOpen, upperOpen} = range;\n const idbRange = lower === undefined ?\n upper === undefined ?\n null : //IDBKeyRange.lowerBound(-Infinity, false) : // Any range (TODO: Should we return null instead?)\n IdbKeyRange.upperBound(upper, !!upperOpen) : // below\n upper === undefined ?\n IdbKeyRange.lowerBound(lower, !!lowerOpen) : // above\n IdbKeyRange.bound(lower, upper, !!lowerOpen, !!upperOpen);\n return idbRange;\n }\n\n function createDbCoreTable(tableSchema: DBCoreTableSchema): DBCoreTable {\n const tableName = tableSchema.name;\n\n function mutate ({trans, type, keys, values, range}) {\n return new Promise((resolve, reject) => {\n resolve = wrap(resolve);\n const store = (trans as IDBTransaction).objectStore(tableName);\n const outbound = store.keyPath == null;\n const isAddOrPut = type === \"put\" || type === \"add\";\n if (!isAddOrPut && type !== 'delete' && type !== 'deleteRange')\n throw new Error (\"Invalid operation type: \" + type);\n\n const {length} = keys || values || {length: 1}; // keys.length if keys. values.length if values. 1 if range.\n if (keys && values && keys.length !== values.length) {\n throw new Error(\"Given keys array must have same length as given values array.\");\n }\n if (length === 0)\n // No items to write. Don't even bother!\n return resolve({numFailures: 0, failures: {}, results: [], lastResult: undefined});\n\n let req: IDBRequest;\n const reqs: IDBRequest[] = [];\n \n const failures: {[operationNumber: number]: Error} = [];\n let numFailures = 0;\n const errorHandler = \n event => {\n ++numFailures;\n preventDefault(event);\n };\n \n if (type === 'deleteRange') {\n // Here the argument is the range\n if (range.type === DBCoreRangeType.Never)\n return resolve({numFailures, failures, results: [], lastResult: undefined}); // Deleting the Never range shoulnt do anything.\n if (range.type === DBCoreRangeType.Any)\n reqs.push(req = store.clear()); // Deleting the Any range is equivalent to store.clear()\n else\n reqs.push(req = store.delete(makeIDBKeyRange(range)));\n } else {\n // No matter add, put or delete - find out arrays of first and second arguments to it.\n const [args1, args2] = isAddOrPut ?\n outbound ?\n [values, keys] :\n [values, null] :\n [keys, null];\n\n if (isAddOrPut) {\n for (let i=0; i {\n const lastResult = event.target.result;\n reqs.forEach((req, i) => req.error != null && (failures[i] = req.error));\n resolve({\n numFailures,\n failures,\n results: type === \"delete\" ? keys : reqs.map(req => req.result),\n lastResult\n });\n };\n \n req.onerror = event => { // wrap() not needed. All paths calling outside will wrap!\n errorHandler(event);\n done(event);\n };\n \n req.onsuccess = done;\n });\n }\n \n function openCursor ({trans, values, query, reverse, unique}: DBCoreOpenCursorRequest): Promise\n {\n return new Promise((resolve, reject) => {\n resolve = wrap(resolve);\n const {index, range} = query;\n const store = (trans as IDBTransaction).objectStore(tableName);\n // source\n const source = index.isPrimaryKey ?\n store :\n store.index(index.name);\n // direction\n const direction = reverse ?\n unique ?\n \"prevunique\" :\n \"prev\" :\n unique ?\n \"nextunique\" :\n \"next\";\n // request\n const req = values || !('openKeyCursor' in source) ?\n source.openCursor(makeIDBKeyRange(range), direction) :\n source.openKeyCursor(makeIDBKeyRange(range), direction);\n \n // iteration\n req.onerror = eventRejectHandler(reject);\n req.onsuccess = wrap(ev => {\n\n const cursor = req.result as unknown as DBCoreCursor;\n if (!cursor) {\n resolve(null);\n return;\n }\n (cursor as any).___id = ++_id_counter;\n (cursor as any).done = false;\n const _cursorContinue = cursor.continue.bind(cursor);\n let _cursorContinuePrimaryKey = cursor.continuePrimaryKey;\n if (_cursorContinuePrimaryKey) _cursorContinuePrimaryKey = _cursorContinuePrimaryKey.bind(cursor);\n const _cursorAdvance = cursor.advance.bind(cursor);\n const doThrowCursorIsNotStarted = ()=>{throw new Error(\"Cursor not started\");}\n const doThrowCursorIsStopped = ()=>{throw new Error(\"Cursor not stopped\");}\n (cursor as any).trans = trans;\n cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsNotStarted;\n cursor.fail = wrap(reject);\n cursor.next = function (this: DBCoreCursor) {\n // next() must work with \"this\" pointer in order to function correctly for ProxyCursors (derived objects)\n // without having to re-define next() on each child.\n let gotOne = 1;\n return this.start(() => gotOne-- ? this.continue() : this.stop()).then(() => this);\n };\n cursor.start = (callback) => {\n //console.log(\"Starting cursor\", (cursor as any).___id);\n const iterationPromise = new Promise((resolveIteration, rejectIteration) =>{\n resolveIteration = wrap(resolveIteration);\n req.onerror = eventRejectHandler(rejectIteration);\n cursor.fail = rejectIteration;\n cursor.stop = value => {\n //console.log(\"Cursor stop\", cursor);\n cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsStopped;\n resolveIteration(value);\n };\n });\n // Now change req.onsuccess to a callback that doesn't call initCursor but just observer.next()\n const guardedCallback = () => {\n if (req.result) {\n //console.log(\"Next result\", cursor);\n try {\n callback();\n } catch (err) {\n cursor.fail(err);\n }\n } else {\n (cursor as any).done = true;\n cursor.start = ()=>{throw new Error(\"Cursor behind last entry\");}\n cursor.stop();\n }\n }\n req.onsuccess = wrap(ev => {\n //cursor.continue = _cursorContinue;\n //cursor.continuePrimaryKey = _cursorContinuePrimaryKey;\n //cursor.advance = _cursorAdvance;\n req.onsuccess = guardedCallback;\n guardedCallback();\n });\n cursor.continue = _cursorContinue;\n cursor.continuePrimaryKey = _cursorContinuePrimaryKey;\n cursor.advance = _cursorAdvance;\n guardedCallback();\n return iterationPromise;\n };\n resolve(cursor);\n }, reject); \n });\n }\n \n function query (hasGetAll: boolean) {\n return (request: DBCoreQueryRequest) => {\n return new Promise((resolve, reject) => {\n resolve = wrap(resolve);\n const {trans, values, limit, query} = request;\n const nonInfinitLimit = limit === Infinity ? undefined : limit;\n const {index, range} = query;\n const store = (trans as IDBTransaction).objectStore(tableName);\n const source = index.isPrimaryKey ? store : store.index(index.name);\n const idbKeyRange = makeIDBKeyRange(range);\n if (limit === 0) return resolve({result: []});\n if (hasGetAll) {\n const req = values ?\n (source as any).getAll(idbKeyRange, nonInfinitLimit) :\n (source as any).getAllKeys(idbKeyRange, nonInfinitLimit);\n req.onsuccess = event => resolve({result: event.target.result});\n req.onerror = eventRejectHandler(reject);\n } else {\n let count = 0;\n const req = values || !('openKeyCursor' in source) ?\n source.openCursor(idbKeyRange) :\n source.openKeyCursor(idbKeyRange)\n const result = [];\n req.onsuccess = event => {\n const cursor = req.result as IDBCursorWithValue;\n if (!cursor) return resolve({result});\n result.push(values ? cursor.value : cursor.primaryKey);\n if (++count === limit) return resolve({result});\n cursor.continue();\n };\n req.onerror = eventRejectHandler(reject);\n }\n });\n };\n }\n \n return {\n name: tableName,\n schema: tableSchema,\n \n mutate,\n\n getMany ({trans, keys}) {\n return new Promise((resolve, reject) => {\n resolve = wrap(resolve);\n const store = (trans as IDBTransaction).objectStore(tableName);\n const length = keys.length;\n const result = new Array(length);\n let keyCount = 0;\n let callbackCount = 0;\n let valueCount = 0;\n let req: IDBRequest & {_pos?: number};\n \n const successHandler = event => {\n const req = event.target;\n if ((result[req._pos] = req.result) != null) ++valueCount;\n if (++callbackCount === keyCount) resolve(result);\n };\n const errorHandler = eventRejectHandler(reject);\n \n for (let i=0; i((resolve, reject) => {\n resolve = wrap (resolve);\n const store = (trans as IDBTransaction).objectStore(tableName);\n const req = store.get(key);\n req.onsuccess = event => resolve((event.target as any).result);\n req.onerror = eventRejectHandler(reject);\n });\n },\n\n query: query(hasGetAll),\n \n openCursor,\n\n count ({query, trans}) {\n const {index, range} = query;\n return new Promise((resolve, reject) => {\n const store = (trans as IDBTransaction).objectStore(tableName);\n const source = index.isPrimaryKey ? store : store.index(index.name);\n const idbKeyRange = makeIDBKeyRange(range);\n const req = idbKeyRange ? source.count(idbKeyRange) : source.count();\n req.onsuccess = wrap(ev => resolve((ev.target as IDBRequest).result));\n req.onerror = eventRejectHandler(reject);\n });\n }\n };\n }\n\n const {schema, hasGetAll} = extractSchema(db, tmpTrans);\n const tables = schema.tables.map(tableSchema => createDbCoreTable(tableSchema));\n const tableMap: {[name: string]: DBCoreTable} = {};\n tables.forEach(table => tableMap[table.name] = table);\n return {\n stack: \"dbcore\",\n \n transaction: db.transaction.bind(db),\n\n table(name: string) {\n const result = tableMap[name];\n if (!result) throw new Error(`Table '${name}' not found`);\n return tableMap[name];\n },\n\n MIN_KEY: -Infinity,\n\n MAX_KEY: getMaxKey(IdbKeyRange),\n\n schema\n\n };\n}\n", "import { Dexie } from './';\nimport { createDBCore } from '../../dbcore/dbcore-indexeddb';\nimport { DBCore } from '../../public/types/dbcore';\nimport { DexieDOMDependencies } from '../../public/types/dexie-dom-dependencies';\nimport { DexieStacks, Middleware } from '../../public/types/middleware';\nimport { exceptions } from '../../errors';\n\nfunction createMiddlewareStack(\n stackImpl: {stack: string},\n middlewares: Middleware<{stack: string}>[]): TStack {\n return middlewares.reduce((down, {create}) => ({...down, ...create(down)}), stackImpl) as TStack;\n} \n\nfunction createMiddlewareStacks(\n middlewares: {[StackName in keyof DexieStacks]?: Middleware[]},\n idbdb: IDBDatabase,\n {IDBKeyRange, indexedDB}: DexieDOMDependencies,\n tmpTrans: IDBTransaction): {[StackName in keyof DexieStacks]?: DexieStacks[StackName]}\n{\n const dbcore = createMiddlewareStack(\n createDBCore(idbdb, IDBKeyRange, tmpTrans),\n middlewares.dbcore);\n \n // TODO: Create other stacks the same way as above. They might be dependant on the result\n // of creating dbcore stack.\n\n return {\n dbcore\n };\n}\n\nexport function generateMiddlewareStacks({_novip: db}: Dexie, tmpTrans: IDBTransaction) {\n const idbdb = tmpTrans.db;\n const stacks = createMiddlewareStacks(db._middlewares, idbdb, db._deps, tmpTrans);\n db.core = stacks.dbcore!;\n db.tables.forEach(table => {\n const tableName = table.name;\n if (db.core.schema.tables.some(tbl => tbl.name === tableName)) {\n table.core = db.core.table(tableName);\n if (db[tableName] instanceof db.Table) {\n db[tableName].core = table.core;\n }\n }\n });\n}\n", "import { Dexie } from '../dexie';\nimport { DbSchema } from '../../public/types/db-schema';\nimport { _global } from \"../../globals/global\";\nimport { setProp, keys, slice, isArray, shallowClone, isAsyncFunction, defineProperty, getPropertyDescriptor } from '../../functions/utils';\nimport { Transaction } from '../transaction';\nimport { Version } from './version';\nimport Promise, { PSD, newScope, NativePromise, decrementExpectedAwaits, incrementExpectedAwaits } from '../../helpers/promise';\nimport { exceptions } from '../../errors';\nimport { TableSchema } from '../../public/types/table-schema';\nimport { IndexSpec } from '../../public/types/index-spec';\nimport { hasIEDeleteObjectStoreBug, isIEOrEdge } from '../../globals/constants';\nimport { safariMultiStoreFix } from '../../functions/quirks';\nimport { createIndexSpec, nameFromKeyPath } from '../../helpers/index-spec';\nimport { createTableSchema } from '../../helpers/table-schema';\nimport { generateMiddlewareStacks } from '../dexie/generate-middleware-stacks';\n\nexport function setApiOnPlace({_novip: db}: Dexie, objs: Object[], tableNames: string[], dbschema: DbSchema) {\n tableNames.forEach(tableName => {\n const schema = dbschema[tableName];\n objs.forEach(obj => {\n const propDesc = getPropertyDescriptor(obj, tableName);\n if (!propDesc || (\"value\" in propDesc && propDesc.value === undefined)) {\n // Either the prop is not declared, or it is initialized to undefined.\n if (obj === db.Transaction.prototype || obj instanceof db.Transaction) {\n // obj is a Transaction prototype (or prototype of a subclass to Transaction)\n // Make the API a getter that returns this.table(tableName)\n setProp(obj, tableName, {\n get(this: Transaction) { return this.table(tableName); },\n set(value: any) {\n // Issue #1039\n // Let \"this.schema = dbschema;\" and other props in transaction constructor work even if there's a name collision with the table name.\n defineProperty(this, tableName, {value, writable: true, configurable: true, enumerable: true});\n }\n });\n } else {\n // Table will not be bound to a transaction (will use Dexie.currentTransaction)\n obj[tableName] = new db.Table(tableName, schema);\n }\n }\n });\n });\n}\n\nexport function removeTablesApi({_novip: db}: Dexie, objs: Object[]) {\n objs.forEach(obj => {\n for (let key in obj) {\n if (obj[key] instanceof db.Table) delete obj[key];\n }\n });\n}\n\nexport function lowerVersionFirst(a: Version, b: Version) {\n return a._cfg.version - b._cfg.version;\n}\n\nexport function runUpgraders(db: Dexie, oldVersion: number, idbUpgradeTrans: IDBTransaction, reject) {\n const globalSchema = db._dbSchema;\n const trans = db._createTransaction('readwrite', db._storeNames, globalSchema);\n trans.create(idbUpgradeTrans);\n trans._completion.catch(reject);\n const rejectTransaction = trans._reject.bind(trans);\n const transless = PSD.transless || PSD;\n newScope(() => {\n PSD.trans = trans;\n PSD.transless = transless;\n if (oldVersion === 0) {\n // Create tables:\n keys(globalSchema).forEach(tableName => {\n createTable(idbUpgradeTrans, tableName, globalSchema[tableName].primKey, globalSchema[tableName].indexes);\n });\n generateMiddlewareStacks(db, idbUpgradeTrans);\n Promise.follow(() => db.on.populate.fire(trans)).catch(rejectTransaction);\n } else\n updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans).catch(rejectTransaction);\n });\n}\n\nexport type UpgradeQueueItem = (idbtrans: IDBTransaction) => PromiseLike | void;\n\nexport function updateTablesAndIndexes(\n {_novip: db}: Dexie,\n oldVersion: number,\n trans: Transaction,\n idbUpgradeTrans: IDBTransaction)\n{\n // Upgrade version to version, step-by-step from oldest to newest version.\n // Each transaction object will contain the table set that was current in that version (but also not-yet-deleted tables from its previous version)\n const queue: UpgradeQueueItem[] = [];\n const versions = db._versions;\n let globalSchema = db._dbSchema = buildGlobalSchema(db, db.idbdb, idbUpgradeTrans);\n let anyContentUpgraderHasRun = false;\n\n const versToRun = versions.filter(v => v._cfg.version >= oldVersion);\n versToRun.forEach(version => {\n queue.push(() => {\n const oldSchema = globalSchema;\n const newSchema = version._cfg.dbschema;\n adjustToExistingIndexNames(db, oldSchema, idbUpgradeTrans);\n adjustToExistingIndexNames(db, newSchema, idbUpgradeTrans);\n\n globalSchema = db._dbSchema = newSchema;\n\n const diff = getSchemaDiff(oldSchema, newSchema);\n // Add tables \n diff.add.forEach(tuple => {\n createTable(idbUpgradeTrans, tuple[0], tuple[1].primKey, tuple[1].indexes);\n });\n // Change tables\n diff.change.forEach(change => {\n if (change.recreate) {\n throw new exceptions.Upgrade(\"Not yet support for changing primary key\");\n } else {\n const store = idbUpgradeTrans.objectStore(change.name);\n // Add indexes\n change.add.forEach(idx => addIndex(store, idx));\n // Update indexes\n change.change.forEach(idx => {\n store.deleteIndex(idx.name);\n addIndex(store, idx);\n });\n // Delete indexes\n change.del.forEach(idxName => store.deleteIndex(idxName));\n }\n });\n\n const contentUpgrade = version._cfg.contentUpgrade;\n\n if (contentUpgrade && version._cfg.version > oldVersion) {\n // Update db.core with new tables and indexes:\n generateMiddlewareStacks(db, idbUpgradeTrans);\n trans._memoizedTables = {}; // Invalidate memoization as transaction shape may change between versions.\n\n anyContentUpgraderHasRun = true;\n\n // Add to-be-deleted tables to contentUpgrade transaction\n let upgradeSchema = shallowClone(newSchema);\n diff.del.forEach(table => {\n upgradeSchema[table] = oldSchema[table];\n });\n\n // Safe to affect Transaction.prototype globally in this moment,\n // because when this code runs, there may not be any other code\n // that can access any transaction instance, else than this particular\n // upgrader function.\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], keys(upgradeSchema), upgradeSchema);\n trans.schema = upgradeSchema;\n\n // Support for native async await.\n const contentUpgradeIsAsync = isAsyncFunction(contentUpgrade);\n if (contentUpgradeIsAsync) {\n incrementExpectedAwaits();\n }\n \n let returnValue: any;\n const promiseFollowed = Promise.follow(() => {\n // Finally, call the scope function with our table and transaction arguments.\n returnValue = contentUpgrade(trans);\n if (returnValue) {\n if (contentUpgradeIsAsync) {\n // contentUpgrade is a native async function - we know for sure returnValue is native promise.\n var decrementor = decrementExpectedAwaits.bind(null, null);\n returnValue.then(decrementor, decrementor);\n }\n }\n });\n return (returnValue && typeof returnValue.then === 'function' ?\n Promise.resolve(returnValue) : promiseFollowed.then(()=>returnValue));\n }\n });\n queue.push(idbtrans => {\n if (!anyContentUpgraderHasRun || !hasIEDeleteObjectStoreBug) { // Dont delete old tables if ieBug is present and a content upgrader has run. Let tables be left in DB so far. This needs to be taken care of.\n const newSchema = version._cfg.dbschema;\n // Delete old tables\n deleteRemovedTables(newSchema, idbtrans);\n }\n // Restore the final API\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], db._storeNames, db._dbSchema);\n trans.schema = db._dbSchema;\n });\n });\n\n // Now, create a queue execution engine\n function runQueue() {\n return queue.length ? Promise.resolve(queue.shift()(trans.idbtrans)).then(runQueue) :\n Promise.resolve();\n }\n\n return runQueue().then(() => {\n createMissingTables(globalSchema, idbUpgradeTrans); // At last, make sure to create any missing tables. (Needed by addons that add stores to DB without specifying version)\n });\n}\n\nexport interface SchemaDiff {\n del: string[],\n add: [string, TableSchema][];\n change: TableSchemaDiff[];\n}\n\nexport interface TableSchemaDiff {\n name: string,\n recreate: boolean,\n del: string[],\n add: IndexSpec[],\n change: IndexSpec[]\n}\n\nexport function getSchemaDiff(oldSchema: DbSchema, newSchema: DbSchema): SchemaDiff {\n const diff: SchemaDiff = {\n del: [], // Array of table names\n add: [], // Array of [tableName, newDefinition]\n change: [] // Array of {name: tableName, recreate: newDefinition, del: delIndexNames, add: newIndexDefs, change: changedIndexDefs}\n };\n let table: string;\n for (table in oldSchema) {\n if (!newSchema[table]) diff.del.push(table);\n }\n for (table in newSchema) {\n const oldDef = oldSchema[table],\n newDef = newSchema[table];\n if (!oldDef) {\n diff.add.push([table, newDef]);\n } else {\n const change = {\n name: table,\n def: newDef,\n recreate: false,\n del: [],\n add: [],\n change: []\n };\n if (\n (\n // compare keyPaths no matter if string or string[]\n // compare falsy keypaths same no matter if they are null or empty string.\n ''+(oldDef.primKey.keyPath||'')\n ) !== (\n ''+(newDef.primKey.keyPath||'')\n ) ||\n // Compare the autoIncrement flag also\n (oldDef.primKey.auto !== newDef.primKey.auto && !isIEOrEdge)) // IE has bug reading autoIncrement prop.\n {\n // Primary key has changed. Remove and re-add table.\n change.recreate = true;\n diff.change.push(change);\n } else {\n // Same primary key. Just find out what differs:\n const oldIndexes = oldDef.idxByName;\n const newIndexes = newDef.idxByName;\n let idxName: string;\n for (idxName in oldIndexes) {\n if (!newIndexes[idxName]) change.del.push(idxName);\n }\n for (idxName in newIndexes) {\n const oldIdx = oldIndexes[idxName],\n newIdx = newIndexes[idxName];\n if (!oldIdx) change.add.push(newIdx);\n else if (oldIdx.src !== newIdx.src) change.change.push(newIdx);\n }\n if (change.del.length > 0 || change.add.length > 0 || change.change.length > 0) {\n diff.change.push(change);\n }\n }\n }\n }\n return diff;\n}\n\nexport function createTable(\n idbtrans: IDBTransaction,\n tableName: string,\n primKey: IndexSpec,\n indexes: IndexSpec[]\n) {\n const store = idbtrans.db.createObjectStore(\n tableName,\n primKey.keyPath ?\n { keyPath: primKey.keyPath, autoIncrement: primKey.auto } :\n { autoIncrement: primKey.auto }\n );\n indexes.forEach(idx => addIndex(store, idx));\n return store;\n}\n\nexport function createMissingTables(newSchema: DbSchema, idbtrans: IDBTransaction) {\n keys(newSchema).forEach(tableName => {\n if (!idbtrans.db.objectStoreNames.contains(tableName)) {\n createTable(idbtrans, tableName, newSchema[tableName].primKey, newSchema[tableName].indexes);\n }\n });\n}\n\nexport function deleteRemovedTables(newSchema: DbSchema, idbtrans: IDBTransaction) {\n [].slice.call(idbtrans.db.objectStoreNames).forEach(storeName =>\n newSchema[storeName] == null && idbtrans.db.deleteObjectStore(storeName));\n}\n\nexport function addIndex(store: IDBObjectStore, idx: IndexSpec) {\n store.createIndex(idx.name, idx.keyPath, { unique: idx.unique, multiEntry: idx.multi });\n}\n\nfunction buildGlobalSchema(\n db: Dexie,\n idbdb: IDBDatabase,\n tmpTrans: IDBTransaction\n) {\n const globalSchema = {};\n const dbStoreNames = slice(idbdb.objectStoreNames, 0);\n dbStoreNames.forEach(storeName => {\n const store = tmpTrans.objectStore(storeName);\n let keyPath = store.keyPath;\n const primKey = createIndexSpec(\n nameFromKeyPath(keyPath),\n keyPath || \"\",\n false,\n false,\n !!store.autoIncrement,\n keyPath && typeof keyPath !== \"string\",\n true\n );\n const indexes: IndexSpec[] = [];\n for (let j = 0; j < store.indexNames.length; ++j) {\n const idbindex = store.index(store.indexNames[j]);\n keyPath = idbindex.keyPath;\n var index = createIndexSpec(\n idbindex.name,\n keyPath,\n !!idbindex.unique,\n !!idbindex.multiEntry,\n false,\n keyPath && typeof keyPath !== \"string\",\n false\n );\n indexes.push(index);\n }\n globalSchema[storeName] = createTableSchema(storeName, primKey, indexes);\n });\n return globalSchema;\n}\n\nexport function readGlobalSchema({_novip: db}: Dexie, idbdb: IDBDatabase, tmpTrans: IDBTransaction) {\n db.verno = idbdb.version / 10;\n const globalSchema = db._dbSchema = buildGlobalSchema(db, idbdb, tmpTrans);\n db._storeNames = slice(idbdb.objectStoreNames, 0);\n setApiOnPlace(db, [db._allTables], keys(globalSchema), globalSchema);\n}\n\nexport function verifyInstalledSchema(db: Dexie, tmpTrans: IDBTransaction): boolean {\n const installedSchema = buildGlobalSchema(db, db.idbdb, tmpTrans);\n const diff = getSchemaDiff(installedSchema, db._dbSchema);\n return !(diff.add.length || diff.change.some(ch => ch.add.length || ch.change.length));\n}\n\nexport function adjustToExistingIndexNames({_novip: db}: Dexie, schema: DbSchema, idbtrans: IDBTransaction) {\n // Issue #30 Problem with existing db - adjust to existing index names when migrating from non-dexie db\n const storeNames = idbtrans.db.objectStoreNames;\n\n for (let i = 0; i < storeNames.length; ++i) {\n const storeName = storeNames[i];\n const store = idbtrans.objectStore(storeName);\n db._hasGetAll = 'getAll' in store;\n\n for (let j = 0; j < store.indexNames.length; ++j) {\n const indexName = store.indexNames[j];\n const keyPath = store.index(indexName).keyPath;\n const dexieName = typeof keyPath === 'string' ? keyPath : \"[\" + slice(keyPath).join('+') + \"]\";\n if (schema[storeName]) {\n const indexSpec = schema[storeName].idxByName[dexieName];\n if (indexSpec) {\n indexSpec.name = indexName;\n delete schema[storeName].idxByName[dexieName];\n schema[storeName].idxByName[indexName] = indexSpec;\n }\n }\n }\n }\n\n // Bug with getAll() on Safari ver<604 on Workers only, see discussion following PR #579\n if (typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) &&\n !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) &&\n _global.WorkerGlobalScope && _global instanceof _global.WorkerGlobalScope &&\n [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604)\n {\n db._hasGetAll = false;\n }\n}\n\nexport function parseIndexSyntax(primKeyAndIndexes: string): IndexSpec[] {\n return primKeyAndIndexes.split(',').map((index, indexNum) => {\n index = index.trim();\n const name = index.replace(/([&*]|\\+\\+)/g, \"\"); // Remove \"&\", \"++\" and \"*\"\n // Let keyPath of \"[a+b]\" be [\"a\",\"b\"]:\n const keyPath = /^\\[/.test(name) ? name.match(/^\\[(.*)\\]$/)[1].split('+') : name;\n\n return createIndexSpec(\n name,\n keyPath || null,\n /\\&/.test(index),\n /\\*/.test(index),\n /\\+\\+/.test(index),\n isArray(keyPath),\n indexNum === 0\n );\n });\n}\n", "import { Version as IVersion } from '../../public/types/version';\nimport { DbSchema } from '../../public/types/db-schema';\nimport { extend, keys } from '../../functions/utils';\nimport { Dexie } from '../dexie';\nimport { Transaction } from '../transaction';\nimport { removeTablesApi, setApiOnPlace, parseIndexSyntax } from './schema-helpers';\nimport { exceptions } from '../../errors';\nimport { createTableSchema } from '../../helpers/table-schema';\nimport { nop, promisableChain } from '../../functions/chaining-functions';\n\n/** class Version\n *\n * https://dexie.org/docs/Version/Version\n */\nexport class Version implements IVersion {\n db: Dexie;\n _cfg: {\n version: number,\n storesSource: { [tableName: string]: string | null },\n dbschema: DbSchema,\n tables: {},\n contentUpgrade: Function | null\n }\n\n _parseStoresSpec(stores: { [tableName: string]: string | null }, outSchema: DbSchema): any {\n keys(stores).forEach(tableName => {\n if (stores[tableName] !== null) {\n var indexes = parseIndexSyntax(stores[tableName]);\n var primKey = indexes.shift();\n if (primKey.multi) throw new exceptions.Schema(\"Primary key cannot be multi-valued\");\n indexes.forEach(idx => {\n if (idx.auto) throw new exceptions.Schema(\"Only primary key can be marked as autoIncrement (++)\");\n if (!idx.keyPath) throw new exceptions.Schema(\"Index must have a name and cannot be an empty string\");\n });\n outSchema[tableName] = createTableSchema(tableName, primKey, indexes);\n }\n });\n }\n\n stores(stores: { [key: string]: string | null; }): IVersion {\n const db = this.db;\n this._cfg.storesSource = this._cfg.storesSource ?\n extend(this._cfg.storesSource, stores) :\n stores;\n const versions = db._versions;\n\n // Derive stores from earlier versions if they are not explicitely specified as null or a new syntax.\n const storesSpec: { [key: string]: string; } = {};\n let dbschema = {};\n versions.forEach(version => { // 'versions' is always sorted by lowest version first.\n extend(storesSpec, version._cfg.storesSource);\n dbschema = (version._cfg.dbschema = {});\n version._parseStoresSpec(storesSpec, dbschema);\n });\n // Update the latest schema to this version\n db._dbSchema = dbschema;\n // Update APIs\n removeTablesApi(db, [db._allTables, db, db.Transaction.prototype]);\n setApiOnPlace(db, [db._allTables, db, db.Transaction.prototype, this._cfg.tables], keys(dbschema), dbschema);\n db._storeNames = keys(dbschema);\n return this;\n }\n\n upgrade(upgradeFunction: (trans: Transaction) => PromiseLike | void): Version {\n this._cfg.contentUpgrade = promisableChain(this._cfg.contentUpgrade || nop, upgradeFunction);\n return this;\n }\n}\n", "import { Dexie } from '../dexie';\nimport { makeClassConstructor } from '../../functions/make-class-constructor';\nimport { Version } from './version';\n\nexport interface VersionConstructor {\n new(versionNumber: number): Version;\n prototype: Version;\n}\n\n/** Generates a Version constructor bound to given Dexie instance.\n * \n * The purpose of having dynamically created constructors, is to allow\n * addons to extend classes for a certain Dexie instance without affecting\n * other db instances.\n */\nexport function createVersionConstructor(db: Dexie) {\n return makeClassConstructor(\n Version.prototype,\n\n function Version(this: Version, versionNumber: number) {\n this.db = db;\n this._cfg = {\n version: versionNumber,\n storesSource: null,\n dbschema: {},\n tables: {},\n contentUpgrade: null\n };\n });\n\n}\n", "import { Dexie } from \"../classes/dexie/dexie\";\nimport { Table } from \"../public/types/table\";\nimport { DBNAMES_DB } from \"../globals/constants\";\nimport { DexieDOMDependencies } from \"../public/types/dexie-dom-dependencies\";\nimport { nop } from \"../functions/chaining-functions\";\n\ntype IDBKeyNamesVar = typeof IDBKeyRange;\n\nfunction getDbNamesTable(indexedDB: IDBFactory, IDBKeyRange: IDBKeyNamesVar) {\n let dbNamesDB = indexedDB[\"_dbNamesDB\"];\n if (!dbNamesDB) {\n dbNamesDB = indexedDB[\"_dbNamesDB\"] = new Dexie(DBNAMES_DB, {\n addons: [],\n indexedDB,\n IDBKeyRange,\n });\n dbNamesDB.version(1).stores({ dbnames: \"name\" });\n }\n return dbNamesDB.table(\"dbnames\") as Table<{ name: string }, string>;\n}\n\nfunction hasDatabasesNative(indexedDB: IDBFactory) {\n return indexedDB && typeof indexedDB.databases === \"function\";\n}\n\nexport function getDatabaseNames({\n indexedDB,\n IDBKeyRange,\n}: DexieDOMDependencies) {\n return hasDatabasesNative(indexedDB)\n ? Promise.resolve(indexedDB.databases()).then((infos) =>\n infos\n // Select name prop of infos:\n .map((info) => info.name)\n // Filter out DBNAMES_DB as previous Dexie or browser version would not have included it in the result.\n .filter((name) => name !== DBNAMES_DB)\n )\n : getDbNamesTable(indexedDB, IDBKeyRange).toCollection().primaryKeys();\n}\n\nexport function _onDatabaseCreated(\n { indexedDB, IDBKeyRange }: DexieDOMDependencies,\n name: string\n) {\n !hasDatabasesNative(indexedDB) &&\n name !== DBNAMES_DB &&\n getDbNamesTable(indexedDB, IDBKeyRange).put({name}).catch(nop);\n}\n\nexport function _onDatabaseDeleted(\n { indexedDB, IDBKeyRange }: DexieDOMDependencies,\n name: string\n) {\n !hasDatabasesNative(indexedDB) &&\n name !== DBNAMES_DB &&\n getDbNamesTable(indexedDB, IDBKeyRange).delete(name).catch(nop);\n}\n", "import { newScope } from '../../helpers/promise';\nimport { PSD } from '../../helpers/promise';\n\nexport function vip (fn) {\n // To be used by subscribers to the on('ready') event.\n // This will let caller through to access DB even when it is blocked while the db.ready() subscribers are firing.\n // This would have worked automatically if we were certain that the Provider was using Dexie.Promise for all asyncronic operations. The promise PSD\n // from the provider.connect() call would then be derived all the way to when provider would call localDatabase.applyChanges(). But since\n // the provider more likely is using non-promise async APIs or other thenable implementations, we cannot assume that.\n // Note that this method is only useful for on('ready') subscribers that is returning a Promise from the event. If not using vip()\n // the database could deadlock since it wont open until the returned Promise is resolved, and any non-VIPed operation started by\n // the caller will not resolve until database is opened.\n return newScope(function () {\n PSD.letThrough = true; // Make sure we are let through if still blocking db due to onready is firing.\n return fn();\n });\n}\n\n", "/**\n * Work around Safari 14 IndexedDB open bug.\n *\n * Safari has a horrible bug where IDB requests can hang while the browser is starting up. https://bugs.webkit.org/show_bug.cgi?id=226547\n * The only solution is to keep nudging it until it's awake.\n */\nfunction idbReady() {\n var isSafari = !navigator.userAgentData &&\n /Safari\\//.test(navigator.userAgent) &&\n !/Chrom(e|ium)\\//.test(navigator.userAgent);\n // No point putting other browsers or older versions of Safari through this mess.\n if (!isSafari || !indexedDB.databases)\n return Promise.resolve();\n var intervalId;\n return new Promise(function (resolve) {\n var tryIdb = function () { return indexedDB.databases().finally(resolve); };\n intervalId = setInterval(tryIdb, 100);\n tryIdb();\n }).finally(function () { return clearInterval(intervalId); });\n}\n\nexport default idbReady;\n", "import { Dexie } from './dexie';\nimport * as Debug from '../../helpers/debug';\nimport { rejection } from '../../helpers/promise';\nimport { exceptions } from '../../errors';\nimport { eventRejectHandler, preventDefault } from '../../functions/event-wrappers';\nimport Promise, { wrap } from '../../helpers/promise';\nimport { connections } from '../../globals/constants';\nimport { runUpgraders, readGlobalSchema, adjustToExistingIndexNames, verifyInstalledSchema } from '../version/schema-helpers';\nimport { safariMultiStoreFix } from '../../functions/quirks';\nimport { _onDatabaseCreated } from '../../helpers/database-enumerator';\nimport { vip } from './vip';\nimport { promisableChain, nop } from '../../functions/chaining-functions';\nimport { generateMiddlewareStacks } from './generate-middleware-stacks';\nimport { slice } from '../../functions/utils';\nimport safari14Workaround from 'safari-14-idb-fix';\n\nexport function dexieOpen (db: Dexie) {\n const state = db._state;\n const {indexedDB} = db._deps;\n if (state.isBeingOpened || db.idbdb)\n return state.dbReadyPromise.then(() => state.dbOpenError ?\n rejection (state.dbOpenError) :\n db);\n Debug.debug && (state.openCanceller._stackHolder = Debug.getErrorWithStack()); // Let stacks point to when open() was called rather than where new Dexie() was called.\n state.isBeingOpened = true;\n state.dbOpenError = null;\n state.openComplete = false;\n const openCanceller = state.openCanceller;\n\n function throwIfCancelled() {\n // If state.openCanceller object reference is replaced, it means db.close() has been called,\n // meaning this open flow should be cancelled.\n if (state.openCanceller !== openCanceller) throw new exceptions.DatabaseClosed('db.open() was cancelled');\n }\n \n // Function pointers to call when the core opening process completes.\n let resolveDbReady = state.dbReadyResolve,\n // upgradeTransaction to abort on failure.\n upgradeTransaction: (IDBTransaction | null) = null,\n wasCreated = false;\n\n const tryOpenDB = () => new Promise((resolve, reject) => {\n // Multiply db.verno with 10 will be needed to workaround upgrading bug in IE:\n // IE fails when deleting objectStore after reading from it.\n // A future version of Dexie.js will stopover an intermediate version to workaround this.\n // At that point, we want to be backward compatible. Could have been multiplied with 2, but by using 10, it is easier to map the number to the real version number.\n \n throwIfCancelled();\n // If no API, throw!\n if (!indexedDB) throw new exceptions.MissingAPI();\n const dbName = db.name;\n \n const req = state.autoSchema ?\n indexedDB.open(dbName) :\n indexedDB.open(dbName, Math.round(db.verno * 10));\n if (!req) throw new exceptions.MissingAPI(); // May happen in Safari private mode, see https://github.com/dfahlander/Dexie.js/issues/134\n req.onerror = eventRejectHandler(reject);\n req.onblocked = wrap(db._fireOnBlocked);\n req.onupgradeneeded = wrap (e => {\n upgradeTransaction = req.transaction;\n if (state.autoSchema && !db._options.allowEmptyDB) { // Unless an addon has specified db._allowEmptyDB, lets make the call fail.\n // Caller did not specify a version or schema. Doing that is only acceptable for opening alread existing databases.\n // If onupgradeneeded is called it means database did not exist. Reject the open() promise and make sure that we\n // do not create a new database by accident here.\n req.onerror = preventDefault; // Prohibit onabort error from firing before we're done!\n upgradeTransaction.abort(); // Abort transaction (would hope that this would make DB disappear but it doesnt.)\n // Close database and delete it.\n req.result.close();\n const delreq = indexedDB.deleteDatabase(dbName); // The upgrade transaction is atomic, and javascript is single threaded - meaning that there is no risk that we delete someone elses database here!\n delreq.onsuccess = delreq.onerror = wrap(() => {\n reject (new exceptions.NoSuchDatabase(`Database ${dbName} doesnt exist`));\n });\n } else {\n upgradeTransaction.onerror = eventRejectHandler(reject);\n var oldVer = e.oldVersion > Math.pow(2, 62) ? 0 : e.oldVersion; // Safari 8 fix.\n wasCreated = oldVer < 1;\n db._novip.idbdb = req.result;// db._novip is because db can be an Object.create(origDb).\n runUpgraders(db, oldVer / 10, upgradeTransaction, reject);\n }\n }, reject);\n \n req.onsuccess = wrap (() => {\n // Core opening procedure complete. Now let's just record some stuff.\n upgradeTransaction = null;\n const idbdb = db._novip.idbdb = req.result; // db._novip is because db can be an Object.create(origDb).\n\n const objectStoreNames = slice(idbdb.objectStoreNames);\n if (objectStoreNames.length > 0) try {\n const tmpTrans = idbdb.transaction(safariMultiStoreFix(objectStoreNames), 'readonly');\n if (state.autoSchema) readGlobalSchema(db, idbdb, tmpTrans);\n else {\n adjustToExistingIndexNames(db, db._dbSchema, tmpTrans);\n if (!verifyInstalledSchema(db, tmpTrans)) {\n console.warn(`Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Some queries may fail.`);\n }\n }\n generateMiddlewareStacks(db, tmpTrans);\n } catch (e) {\n // Safari 8 may bail out if > 1 store names. However, this shouldnt be a showstopper. Issue #120.\n // BUGBUG: It will bail out anyway as of Dexie 3.\n // Should we support Safari 8 anymore? Believe all\n // Dexie users use the shim for that platform anyway?!\n // If removing Safari 8 support, go ahead and remove the safariMultiStoreFix() function\n // as well as absurd upgrade version quirk for Safari.\n }\n \n connections.push(db); // Used for emulating versionchange event on IE/Edge/Safari.\n \n idbdb.onversionchange = wrap(ev => {\n state.vcFired = true; // detect implementations that not support versionchange (IE/Edge/Safari)\n db.on(\"versionchange\").fire(ev);\n });\n \n idbdb.onclose = wrap(ev => {\n db.on(\"close\").fire(ev);\n });\n\n if (wasCreated) _onDatabaseCreated(db._deps, dbName);\n\n resolve();\n\n }, reject);\n }).catch(err => {\n if (err && err.name === 'UnknownError' && state.PR1398_maxLoop > 0) {\n // Bug in Chrome after clearing site data\n // https://github.com/dexie/Dexie.js/issues/543#issuecomment-1795736695\n state.PR1398_maxLoop--;\n console.warn('Dexie: Workaround for Chrome UnknownError on open()');\n return tryOpenDB();\n } else {\n return Promise.reject(err);\n }\n });\n \n // safari14Workaround = Workaround by jakearchibald for new nasty bug in safari 14.\n return Promise.race([\n openCanceller,\n (typeof navigator === 'undefined' ? Promise.resolve() : safari14Workaround()).then(tryOpenDB)\n ]).then(() => {\n // Before finally resolving the dbReadyPromise and this promise,\n // call and await all on('ready') subscribers:\n // Dexie.vip() makes subscribers able to use the database while being opened.\n // This is a must since these subscribers take part of the opening procedure.\n throwIfCancelled();\n state.onReadyBeingFired = [];\n return Promise.resolve(vip(()=>db.on.ready.fire(db.vip))).then(function fireRemainders() {\n if (state.onReadyBeingFired.length > 0) {\n // In case additional subscribers to db.on('ready') were added during the time db.on.ready.fire was executed.\n let remainders = state.onReadyBeingFired.reduce(promisableChain, nop);\n state.onReadyBeingFired = [];\n return Promise.resolve(vip(()=>remainders(db.vip))).then(fireRemainders)\n }\n });\n }).finally(()=>{\n state.onReadyBeingFired = null;\n state.isBeingOpened = false;\n }).then(()=>{\n // Resolve the db.open() with the db instance.\n return db;\n }).catch(err => {\n state.dbOpenError = err; // Record the error. It will be used to reject further promises of db operations.\n try {\n // Did we fail within onupgradeneeded? Make sure to abort the upgrade transaction so it doesnt commit.\n upgradeTransaction && upgradeTransaction.abort();\n } catch { }\n if (openCanceller === state.openCanceller) {\n // Still in the same open flow - The error reason was not due to external call to db.close().\n // Make sure to call db.close() to finalize resources.\n db._close(); // Closes and resets idbdb, removes connections, resets dbReadyPromise and openCanceller so that a later db.open() is fresh.\n }\n return rejection (err);\n }).finally(()=>{\n state.openComplete = true;\n resolveDbReady(); // dbReadyPromise is resolved no matter if open() rejects or resolved. It's just to wake up waiters.\n });\n}\n", "import { isArray } from '../functions/utils';\n\nexport function awaitIterator (iterator: Iterator) {\n var callNext = result => iterator.next(result),\n doThrow = error => iterator.throw(error),\n onSuccess = step(callNext),\n onError = step(doThrow);\n\n function step(getNext: (any)=>any) {\n return (val?) => {\n var next = getNext(val),\n value = next.value;\n\n return next.done ? value :\n (!value || typeof value.then !== 'function' ?\n isArray(value) ? Promise.all(value).then(onSuccess, onError) : onSuccess(value) :\n value.then(onSuccess, onError));\n };\n }\n\n return step(callNext)();\n}\n", "import { TransactionMode } from '../../public/types/transaction-mode';\nimport { errnames, exceptions } from '../../errors';\nimport { flatten, isAsyncFunction } from '../../functions/utils';\nimport { Dexie } from './dexie';\nimport { Transaction } from '../transaction';\nimport { awaitIterator } from '../../helpers/yield-support';\nimport Promise, {\n PSD,\n NativePromise,\n decrementExpectedAwaits,\n rejection,\n incrementExpectedAwaits\n} from '../../helpers/promise';\n\nexport function extractTransactionArgs(mode: TransactionMode, _tableArgs_, scopeFunc) {\n // Let table arguments be all arguments between mode and last argument.\n var i = arguments.length;\n if (i < 2) throw new exceptions.InvalidArgument(\"Too few arguments\");\n // Prevent optimzation killer (https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments)\n // and clone arguments except the first one into local var 'args'.\n var args = new Array(i - 1);\n while (--i) args[i - 1] = arguments[i];\n // Let scopeFunc be the last argument and pop it so that args now only contain the table arguments.\n scopeFunc = args.pop();\n var tables = flatten(args); // Support using array as middle argument, or a mix of arrays and non-arrays.\n return [mode, tables, scopeFunc];\n}\n\nexport function enterTransactionScope(\n db: Dexie,\n mode: IDBTransactionMode,\n storeNames: string[],\n parentTransaction: Transaction | undefined,\n scopeFunc: ()=>PromiseLike | any\n) {\n return Promise.resolve().then(() => {\n // Keep a pointer to last non-transactional PSD to use if someone calls Dexie.ignoreTransaction().\n const transless = PSD.transless || PSD;\n // Our transaction.\n //return new Promise((resolve, reject) => {\n const trans = db._createTransaction(mode, storeNames, db._dbSchema, parentTransaction);\n // Let the transaction instance be part of a Promise-specific data (PSD) value.\n const zoneProps = {\n trans: trans,\n transless: transless\n };\n\n if (parentTransaction) {\n // Emulate transaction commit awareness for inner transaction (must 'commit' when the inner transaction has no more operations ongoing)\n trans.idbtrans = parentTransaction.idbtrans;\n } else {\n try {\n trans.create(); // Create the native transaction so that complete() or error() will trigger even if no operation is made upon it.\n db._state.PR1398_maxLoop = 3;\n } catch (ex) {\n if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) {\n console.warn('Dexie: Need to reopen db');\n db._close();\n return db.open().then(() => enterTransactionScope(\n db,\n mode,\n storeNames,\n null,\n scopeFunc\n ));\n }\n return rejection(ex);\n }\n }\n\n // Support for native async await.\n const scopeFuncIsAsync = isAsyncFunction(scopeFunc);\n if (scopeFuncIsAsync) {\n incrementExpectedAwaits();\n }\n\n let returnValue;\n const promiseFollowed = Promise.follow(() => {\n // Finally, call the scope function with our table and transaction arguments.\n returnValue = scopeFunc.call(trans, trans);\n if (returnValue) {\n if (scopeFuncIsAsync) {\n // scopeFunc is a native async function - we know for sure returnValue is native promise.\n var decrementor = decrementExpectedAwaits.bind(null, null);\n returnValue.then(decrementor, decrementor);\n } else if (typeof returnValue.next === 'function' && typeof returnValue.throw === 'function') {\n // scopeFunc returned an iterator with throw-support. Handle yield as await.\n returnValue = awaitIterator(returnValue);\n }\n }\n }, zoneProps);\n return (returnValue && typeof returnValue.then === 'function' ?\n // Promise returned. User uses promise-style transactions.\n Promise.resolve(returnValue).then(x => trans.active ?\n x // Transaction still active. Continue.\n : rejection(new exceptions.PrematureCommit(\n \"Transaction committed too early. See http://bit.ly/2kdckMn\")))\n // No promise returned. Wait for all outstanding promises before continuing. \n : promiseFollowed.then(() => returnValue)\n ).then(x => {\n // sub transactions don't react to idbtrans.oncomplete. We must trigger a completion:\n if (parentTransaction) trans._resolve();\n // wait for trans._completion\n // (if root transaction, this means 'complete' event. If sub-transaction, we've just fired it ourselves)\n return trans._completion.then(() => x);\n }).catch(e => {\n trans._reject(e); // Yes, above then-handler were maybe not called because of an unhandled rejection in scopeFunc!\n return rejection(e);\n });\n });\n}\n", "import {\n DBCore,\n DBCoreIndex,\n DBCoreKeyRange,\n DBCoreQueryRequest,\n DBCoreRangeType,\n DBCoreOpenCursorRequest,\n DBCoreCountRequest,\n DBCoreCursor,\n DBCoreTable,\n} from \"../public/types/dbcore\";\nimport { isArray } from '../functions/utils';\nimport { getKeyExtractor } from './get-key-extractor';\nimport { getKeyPathAlias } from './dbcore-indexeddb';\nimport { Middleware } from '../public/types/middleware';\n\ninterface VirtualIndex extends DBCoreIndex {\n /** True if this index is virtual, i.e. represents a compound index internally,\n * but makes it act as as having a subset of its keyPaths.\n */\n isVirtual: boolean;\n\n /** Number of keypaths that this index comprises. Can be 0..N.\n * Note: This is the length of the *virtual index*, not the real index.\n */\n keyLength: number;\n\n /** Number of popped keypaths from the real index.\n */\n keyTail: number;\n}\n\n// Move into some util:\nexport function pad (a: any | any[], value: any, count: number) {\n const result = isArray(a) ? a.slice() : [a];\n for (let i=0; i 0;\n const virtualIndex = {\n ...lowLevelIndex,\n isVirtual,\n keyTail,\n keyLength,\n extractKey: getKeyExtractor(keyPath),\n unique: !isVirtual && lowLevelIndex.unique\n };\n indexList.push(virtualIndex);\n if (!virtualIndex.isPrimaryKey) {\n allVirtualIndexes.push(virtualIndex);\n }\n if (keyLength > 1) {\n const virtualKeyPath = keyLength === 2 ?\n keyPath[0] : // This is a compound [a, b]. Add a virtual normal index a.\n keyPath.slice(0, keyLength - 1); // This is compound [a,b,c]. Add virtual compound [a,b].\n addVirtualIndexes(virtualKeyPath, keyTail + 1, lowLevelIndex);\n }\n indexList.sort((a,b) => a.keyTail - b.keyTail); // Shortest keyTail is the best one (represents real index)\n return virtualIndex;\n }\n \n const primaryKey = addVirtualIndexes(schema.primaryKey.keyPath, 0, schema.primaryKey);\n indexLookup[\":id\"] = [primaryKey];\n for (const index of schema.indexes) {\n addVirtualIndexes(index.keyPath, 0, index);\n }\n \n function findBestIndex(keyPath: null | string | string[]): VirtualIndex {\n const result = indexLookup[getKeyPathAlias(keyPath)];\n return result && result[0];\n }\n \n function translateRange (range: DBCoreKeyRange, keyTail: number): DBCoreKeyRange {\n return {\n type: range.type === DBCoreRangeType.Equal ?\n DBCoreRangeType.Range :\n range.type,\n lower: pad(range.lower, range.lowerOpen ? down.MAX_KEY : down.MIN_KEY, keyTail),\n lowerOpen: true, // doesn't matter true or false\n upper: pad(range.upper, range.upperOpen ? down.MIN_KEY : down.MAX_KEY, keyTail),\n upperOpen: true // doesn't matter true or false\n };\n }\n \n function translateRequest (req: DBCoreQueryRequest): DBCoreQueryRequest;\n function translateRequest (req: DBCoreOpenCursorRequest): DBCoreOpenCursorRequest;\n function translateRequest (req: DBCoreCountRequest): DBCoreCountRequest {\n const index = req.query.index as VirtualIndex;\n return index.isVirtual ? {\n ...req,\n query: {\n index,\n range: translateRange(req.query.range, index.keyTail)\n }\n } : req;\n }\n \n const result: DBCoreTable = {\n ...table,\n schema: {\n ...schema,\n primaryKey,\n indexes: allVirtualIndexes,\n getIndexByKeyPath: findBestIndex\n },\n\n count(req) {\n return table.count(translateRequest(req));\n }, \n \n query(req) {\n return table.query(translateRequest(req));\n },\n \n openCursor(req) {\n const {keyTail, isVirtual, keyLength} = (req.query.index as VirtualIndex);\n if (!isVirtual) return table.openCursor(req);\n \n function createVirtualCursor(cursor: DBCoreCursor) : DBCoreCursor {\n function _continue (key?: any) {\n key != null ?\n cursor.continue(pad(key, req.reverse ? down.MAX_KEY : down.MIN_KEY, keyTail)) :\n req.unique ?\n cursor.continue(\n cursor.key.slice(0, keyLength)\n .concat(req.reverse\n ? down.MIN_KEY\n : down.MAX_KEY, keyTail)\n ) :\n cursor.continue()\n }\n const virtualCursor = Object.create(cursor, {\n continue: {value: _continue},\n continuePrimaryKey: {\n value(key: any, primaryKey: any) {\n cursor.continuePrimaryKey(pad(key, down.MAX_KEY, keyTail), primaryKey);\n }\n },\n primaryKey: {\n get() {\n return cursor.primaryKey;\n }\n },\n key: {\n get() {\n const key = cursor.key as any[]; // A virtual cursor always operates on compound key\n return keyLength === 1 ?\n key[0] : // Cursor.key should not be an array.\n key.slice(0, keyLength); // Cursor.key should be first part of array.\n }\n },\n value: {\n get() {\n return cursor.value;\n }\n }\n });\n return virtualCursor;\n }\n \n return table.openCursor(translateRequest(req))\n .then(cursor => cursor && createVirtualCursor(cursor));\n }\n };\n return result;\n }\n }\n}\n\nexport const virtualIndexMiddleware : Middleware = {\n stack: \"dbcore\",\n name: \"VirtualIndexMiddleware\",\n level: 1,\n create: createVirtualIndexMiddleware\n};\n\n", "import { keys, hasOwn, toStringTag } from './utils';\n\nexport function getObjectDiff(a: any, b: any, rv?: any, prfx?: string) {\n // Compares objects a and b and produces a diff object.\n rv = rv || {};\n prfx = prfx || '';\n keys(a).forEach((prop) => {\n if (!hasOwn(b, prop)) {\n // Property removed\n rv[prfx + prop] = undefined;\n } else {\n var ap = a[prop],\n bp = b[prop];\n if (typeof ap === 'object' && typeof bp === 'object' && ap && bp) {\n const apTypeName = toStringTag(ap);\n const bpTypeName = toStringTag(bp);\n\n if (apTypeName !== bpTypeName) {\n rv[prfx + prop] = b[prop]; // Property changed to other type\n } else if (apTypeName === 'Object') {\n // Pojo objects (not Date, ArrayBuffer, Array etc). Go deep.\n getObjectDiff(ap, bp, rv, prfx + prop + '.');\n } else if (ap !== bp) {\n // Values differ.\n // Could have checked if Date, arrays or binary types have same\n // content here but I think that would be a suboptimation.\n // Prefer simplicity.\n rv[prfx + prop] = b[prop];\n }\n } else if (ap !== bp) rv[prfx + prop] = b[prop]; // Primitive value changed\n }\n });\n keys(b).forEach((prop) => {\n if (!hasOwn(a, prop)) {\n rv[prfx + prop] = b[prop]; // Property added\n }\n });\n return rv;\n}\n", "import {\n DBCoreAddRequest,\n DBCorePutRequest,\n DBCoreDeleteRequest,\n DBCoreIndex,\n DBCoreTable,\n} from \"../public/types/dbcore\";\n\nexport function getEffectiveKeys (\n primaryKey: DBCoreIndex,\n req: (Pick & {keys?: any[]}) | Pick)\n{\n //const {outbound} = primaryKey;\n if (req.type === 'delete') return req.keys;\n return req.keys || req.values.map(primaryKey.extractKey)\n}\n", "import {\n DBCore,\n DBCoreTable,\n DBCoreMutateResponse,\n DBCoreDeleteRangeRequest,\n DBCoreAddRequest,\n DBCorePutRequest,\n DBCoreDeleteRequest,\n DBCoreTransaction,\n DBCoreKeyRange\n} from \"../public/types/dbcore\";\nimport { nop } from '../functions/chaining-functions';\nimport { hasOwn, setByKeyPath } from '../functions/utils';\nimport { getObjectDiff } from \"../functions/get-object-diff\";\nimport { PSD } from '../helpers/promise';\n//import { LockableTableMiddleware } from '../dbcore/lockable-table-middleware';\nimport { getEffectiveKeys } from '../dbcore/get-effective-keys';\nimport { Middleware } from '../public/types/middleware';\nimport { Transaction } from '../classes/transaction';\n\nexport const hooksMiddleware: Middleware = {\n stack: \"dbcore\",\n name: \"HooksMiddleware\",\n level: 2,\n create: (downCore: DBCore) => ({\n ...downCore,\n table(tableName: string) {\n const downTable = downCore.table(tableName);\n const {primaryKey} = downTable.schema;\n \n const tableMiddleware: DBCoreTable = {\n ...downTable,\n mutate(req):Promise {\n const dxTrans = PSD.trans as Transaction;\n // Hooks can be transaction-bound. Need to grab them from transaction.table and not\n // db.table!\n const {deleting, creating, updating} = dxTrans.table(tableName).hook;\n switch (req.type) {\n case 'add':\n if (creating.fire === nop) break;\n return dxTrans._promise('readwrite', ()=>addPutOrDelete(req), true);\n case 'put':\n if (creating.fire === nop && updating.fire === nop) break;\n return dxTrans._promise('readwrite', ()=>addPutOrDelete(req), true);\n case 'delete':\n if (deleting.fire === nop) break;\n return dxTrans._promise('readwrite', ()=>addPutOrDelete(req), true);\n case 'deleteRange':\n if (deleting.fire === nop) break;\n return dxTrans._promise('readwrite', ()=>deleteRange(req), true);\n }\n // Any of the breaks above happened (no hooks) - do the default:\n return downTable.mutate(req);\n\n\n function addPutOrDelete(req: DBCoreAddRequest | DBCorePutRequest | DBCoreDeleteRequest): Promise {\n const dxTrans = PSD.trans;\n const keys = req.keys || getEffectiveKeys(primaryKey, req);\n if (!keys) throw new Error(\"Keys missing\");\n // Clone Request and set keys arg\n req = req.type === 'add' || req.type === 'put' ?\n {...req, keys} :\n {...req};\n if (req.type !== 'delete') req.values = [...req.values];\n if (req.keys) req.keys = [...req.keys];\n \n return getExistingValues(downTable, req, keys).then (existingValues => {\n const contexts = keys.map((key, i) => {\n const existingValue = existingValues[i];\n const ctx = { onerror: null, onsuccess: null };\n if (req.type === 'delete') {\n // delete operation\n deleting.fire.call(ctx, key, existingValue, dxTrans);\n } else if (req.type === 'add' || existingValue === undefined) {\n // The add() or put() resulted in a create\n const generatedPrimaryKey = creating.fire.call(ctx, key, req.values[i], dxTrans);\n if (key == null && generatedPrimaryKey != null) {\n key = generatedPrimaryKey;\n req.keys[i] = key;\n if (!primaryKey.outbound) {\n setByKeyPath(req.values[i], primaryKey.keyPath, key);\n }\n }\n } else {\n // The put() operation resulted in an update\n const objectDiff = getObjectDiff(existingValue, req.values[i]);\n const additionalChanges = updating.fire.call(ctx, objectDiff, key, existingValue, dxTrans);\n if (additionalChanges) {\n const requestedValue = req.values[i];\n Object.keys(additionalChanges).forEach(keyPath => {\n if (hasOwn(requestedValue, keyPath)) {\n // keyPath is already present as a literal property of the object\n requestedValue[keyPath] = additionalChanges[keyPath];\n } else {\n // keyPath represents a new or existing path into the object\n setByKeyPath(requestedValue, keyPath, additionalChanges[keyPath]);\n }\n });\n }\n }\n return ctx;\n });\n return downTable.mutate(req).then(({failures, results, numFailures, lastResult}) => {\n for (let i=0; i {\n contexts.forEach(ctx => ctx.onerror && ctx.onerror(error));\n return Promise.reject(error);\n });\n });\n }\n \n function deleteRange(req: DBCoreDeleteRangeRequest): Promise {\n return deleteNextChunk(req.trans, req.range, 10000);\n }\n \n function deleteNextChunk(trans: DBCoreTransaction, range: DBCoreKeyRange, limit: number) {\n // Query what keys in the DB within the given range\n return downTable.query({trans, values: false, query: {index: primaryKey, range}, limit})\n .then(({result}) => {\n // Given a set of keys, bulk delete those using the same procedure as in addPutOrDelete().\n // This will make sure that deleting hook is called.\n return addPutOrDelete({type: 'delete', keys: result, trans}).then(res => {\n if (res.numFailures > 0) return Promise.reject(res.failures[0]);\n if (result.length < limit) {\n return {failures: [], numFailures: 0, lastResult: undefined} as DBCoreMutateResponse;\n } else {\n return deleteNextChunk(trans, {...range, lower: result[result.length - 1], lowerOpen: true}, limit);\n }\n });\n })\n }\n }\n };\n //const {lock, lockableMiddleware} = LockableTableMiddleware(tableMiddleware);\n\n return tableMiddleware;\n },\n }) as DBCore\n};\n\nfunction getExistingValues(\n table: DBCoreTable,\n req: DBCoreAddRequest | DBCorePutRequest | DBCoreDeleteRequest,\n effectiveKeys: any[]\n) {\n return req.type === \"add\"\n ? Promise.resolve([])\n : table.getMany({ trans: req.trans, keys: effectiveKeys, cache: \"immutable\" });\n}\n", "import { deepClone } from \"../functions/utils\";\nimport { DBCore } from \"../public/types/dbcore\";\nimport { Middleware } from \"../public/types/middleware\";\nimport Promise from \"../helpers/promise\";\nimport { cmp } from '../functions/cmp';\n\nexport function getFromTransactionCache(\n keys: any[],\n cache: { keys: any[]; values: any[] } | undefined | null,\n clone?: boolean\n) {\n try {\n if (!cache) return null;\n if (cache.keys.length < keys.length) return null;\n const result: any[] = [];\n // Compare if the exact same order of keys was retrieved in same transaction:\n // Allow some cached keys to be omitted from provided set of keys\n // Use case: 1. getMany(keys) 2. update a subset of those 3. call put with the updated ones ==> middlewares should be able to find old values\n for (let i = 0, j = 0; i < cache.keys.length && j < keys.length; ++i) {\n if (cmp(cache.keys[i], keys[j]) !== 0) continue;\n result.push(clone ? deepClone(cache.values[i]) : cache.values[i]);\n ++j;\n }\n // If got all keys caller was looking for, return result.\n return result.length === keys.length ? result : null;\n } catch {\n return null;\n }\n}\n\nexport const cacheExistingValuesMiddleware: Middleware = {\n stack: \"dbcore\",\n level: -1,\n create: (core) => {\n return {\n table: (tableName) => {\n const table = core.table(tableName);\n return {\n ...table,\n getMany: (req) => {\n if (!req.cache) {\n return table.getMany(req);\n }\n const cachedResult = getFromTransactionCache(\n req.keys,\n req.trans[\"_cache\"],\n req.cache === \"clone\"\n );\n if (cachedResult) {\n return Promise.resolve(cachedResult);\n }\n return table.getMany(req).then((res) => {\n req.trans[\"_cache\"] = {\n keys: req.keys,\n values: req.cache === \"clone\" ? deepClone(res) : res,\n };\n return res;\n });\n },\n mutate: (req) => {\n // Invalidate cache on any mutate except \"add\" which can't change existing values:\n if (req.type !== \"add\") req.trans[\"_cache\"] = null;\n return table.mutate(req);\n },\n };\n },\n };\n },\n};\n", "import { cmp } from \"../functions/cmp\";\nimport { extend, iteratorSymbol, props } from '../functions/utils';\nimport { IndexableType } from '../public';\nimport {\n EmptyRange,\n IntervalTree,\n IntervalTreeNode,\n RangeSetConstructor,\n RangeSetPrototype,\n} from \"../public/types/rangeset\";\n\n/* An interval tree implementation to efficiently detect overlapping ranges of queried indexes.\n *\n * https://en.wikipedia.org/wiki/Interval_tree\n * \n */\n\nfunction isEmptyRange(node: IntervalTree | {from: IndexableType, to: IndexableType}): node is EmptyRange {\n return !(\"from\" in node);\n}\n\nexport type RangeSet = RangeSetPrototype & IntervalTree;\n\nexport const RangeSet = function(fromOrTree: any, to?: any) {\n if (this) {\n // Called with new()\n extend(this, arguments.length ? {d:1, from: fromOrTree, to: arguments.length > 1 ? to : fromOrTree} : {d:0});\n } else {\n // Called without new()\n const rv = new RangeSet();\n if (fromOrTree && (\"d\" in fromOrTree)) {\n extend(rv, fromOrTree);\n }\n return rv;\n }\n} as RangeSetConstructor;\n\nprops(RangeSet.prototype, {\n add(rangeSet: IntervalTree | {from: IndexableType, to: IndexableType}) {\n mergeRanges(this, rangeSet);\n return this;\n },\n addKey(key: IndexableType) {\n addRange(this, key, key);\n return this;\n },\n addKeys(keys: IndexableType[]) {\n keys.forEach(key => addRange(this, key, key));\n return this;\n },\n\n [iteratorSymbol](): Iterator {\n return getRangeSetIterator(this);\n }\n});\n\nfunction addRange(target: IntervalTree, from: IndexableType, to: IndexableType) {\n const diff = cmp(from, to);\n // cmp() returns NaN if one of the args are IDB-invalid keys.\n // Avoid storing invalid keys in rangeset:\n if (isNaN(diff)) return;\n\n // Caller is trying to add a range where from is greater than to:\n if (diff > 0) throw RangeError();\n \n if (isEmptyRange(target)) return extend(target, { from, to, d: 1 });\n const left = target.l;\n const right = target.r;\n if (cmp(to, target.from) < 0) {\n left\n ? addRange(left, from, to)\n : (target.l = { from, to, d: 1, l: null, r: null });\n return rebalance(target);\n }\n if (cmp(from, target.to) > 0) {\n right\n ? addRange(right, from, to)\n : (target.r = { from, to, d: 1, l: null, r: null });\n return rebalance(target);\n }\n // Now we have some kind of overlap. We will be able to merge the new range into the node or let it be swallowed.\n\n // Grow left?\n if (cmp(from, target.from) < 0) {\n target.from = from;\n target.l = null; // Cut off for now. Re-add later.\n target.d = right ? right.d + 1 : 1;\n }\n // Grow right?\n if (cmp(to, target.to) > 0) {\n target.to = to;\n target.r = null; // Cut off for now. Re-add later.\n target.d = target.l ? target.l.d + 1 : 1;\n }\n const rightWasCutOff = !target.r;\n // Re-add left?\n if (left && !target.l) {\n //Ranges to the left may be swallowed. Cut it of and re-add all.\n //Could probably be done more efficiently!\n mergeRanges(target, left);\n }\n // Re-add right?\n if (right && rightWasCutOff) {\n //Ranges to the right may be swallowed. Cut it of and re-add all.\n //Could probably be done more efficiently!\n mergeRanges(target, right);\n }\n}\n\nexport function mergeRanges(target: IntervalTree, newSet: IntervalTree | {from: IndexableType, to: IndexableType}) {\n function _addRangeSet(\n target: IntervalTree,\n { from, to, l, r }: IntervalTreeNode | {from: IndexableType, to: IndexableType, l?: undefined, r?: undefined}\n ) {\n addRange(target, from, to);\n if (l) _addRangeSet(target, l);\n if (r) _addRangeSet(target, r);\n }\n\n if(!isEmptyRange(newSet)) _addRangeSet(target, newSet);\n}\n\nexport function rangesOverlap(\n rangeSet1: IntervalTree,\n rangeSet2: IntervalTree\n): boolean {\n // Start iterating other from scratch.\n const i1 = getRangeSetIterator(rangeSet2);\n let nextResult1 = i1.next();\n if (nextResult1.done) return false;\n let a = nextResult1.value;\n\n // Start iterating this from start of other\n const i2 = getRangeSetIterator(rangeSet1);\n let nextResult2 = i2.next(a.from); // Start from beginning of other range\n let b = nextResult2.value;\n\n while (!nextResult1.done && !nextResult2.done) {\n if (cmp(b!.from, a.to) <= 0 && cmp(b!.to, a.from) >= 0) return true;\n cmp(a.from, b!.from) < 0\n ? (a = (nextResult1 = i1.next(b!.from)).value!) // a is behind. forward it to beginning of next b-range\n : (b = (nextResult2 = i2.next(a.from)).value); // b is behind. forward it to beginning of next a-range\n }\n return false;\n}\n\ntype RangeSetIteratorState =\n | {\n up?: RangeSetIteratorState;\n n: IntervalTreeNode;\n s: 0 | 1 | 2 | 3;\n }\n | undefined\n | null;\nexport function getRangeSetIterator(\n node: EmptyRange | IntervalTreeNode\n): Generator {\n let state: RangeSetIteratorState = isEmptyRange(node) ? null : { s: 0, n: node };\n\n return {\n next(key?) {\n const keyProvided = arguments.length > 0;\n while (state) {\n switch (state.s) {\n case 0:\n // Initial state for node.\n // Fast forward to leftmost node.\n state.s = 1;\n if (keyProvided) {\n while (state.n.l && cmp(key, state.n.from) < 0)\n state = { up: state, n: state.n.l, s: 1 };\n } else {\n while (state.n.l) state = { up: state, n: state.n.l, s: 1 };\n }\n // intentionally fall into case 1:\n case 1:\n // We're on a node where it's left part is already handled or does not exist.\n state.s = 2;\n if (!keyProvided || cmp(key, state.n.to) <= 0)\n return { value: state.n, done: false };\n case 2:\n // We've emitted our node and should continue with the right part or let parent take over from it's state 1\n if (state.n.r) {\n state.s = 3; // So when child is done, we know we're done.\n state = { up: state, n: state.n.r, s: 0 };\n continue; // Will fall in to case 0 with fast forward to left leaf of this subtree.\n }\n // intentionally fall into case 3:\n case 3:\n state = state.up;\n }\n }\n return { done: true };\n },\n } as Generator;\n}\n\nfunction rebalance(target: IntervalTreeNode) {\n const diff = (target.r?.d || 0) - (target.l?.d || 0);\n const r = diff > 1 ? \"r\" : diff < -1 ? \"l\" : \"\";\n if (r) {\n\n // Rotate (https://en.wikipedia.org/wiki/Tree_rotation)\n //\n // \n // [OLDROOT]\n // [OLDROOT.L] [NEWROOT]\n // [NEWROOT.L] [NEWROOT.R]\n //\n // Is going to become:\n //\n // \n // [NEWROOT]\n // [OLDROOT] [NEWROOT.R]\n // [OLDROOT.L] [NEWROOT.L] \n\n // * clone now has the props of OLDROOT\n // Plan:\n // * target must be given the props of NEWROOT\n // * target[l] must point to a new OLDROOT\n // * target[r] must point to NEWROOT.R\n // * OLDROOT[r] must point to NEWROOT.L\n const l = r === \"r\" ? \"l\" : \"r\"; // Support both left/right rotation\n const rootClone = { ...target };\n // We're gonna copy props from target's right node into target so that target will\n // have same range as old target[r] (instead of changing pointers, we copy values.\n // that way we do not need to adjust pointers in parents).\n const oldRootRight = target[r]; \n target.from = oldRootRight.from;\n target.to = oldRootRight.to;\n target[r] = oldRootRight[r];\n rootClone[r] = oldRootRight[l];\n target[l] = rootClone;\n rootClone.d = computeDepth(rootClone);\n }\n target.d = computeDepth(target);\n}\n\nfunction computeDepth({ r, l }: Pick) {\n return (r ? (l ? Math.max(r.d, l.d) : r.d) : l ? l.d : 0) + 1;\n}\n", "import { getFromTransactionCache } from \"../dbcore/cache-existing-values-middleware\";\nimport { cmp } from \"../functions/cmp\";\nimport { isArray, keys } from \"../functions/utils\";\nimport { PSD } from \"../helpers/promise\";\nimport { RangeSet } from \"../helpers/rangeset\";\nimport { ObservabilitySet } from \"../public/types/db-events\";\nimport {\n DBCore,\n DBCoreCountRequest,\n DBCoreCursor,\n DBCoreGetManyRequest,\n DBCoreGetRequest,\n DBCoreIndex,\n DBCoreOpenCursorRequest,\n DBCoreQueryRequest,\n DBCoreQueryResponse,\n DBCoreTable,\n DBCoreTableSchema,\n DBCoreTransaction,\n} from \"../public/types/dbcore\";\nimport { Middleware } from \"../public/types/middleware\";\n\nexport const observabilityMiddleware: Middleware = {\n stack: \"dbcore\",\n level: 0,\n create: (core) => {\n const dbName = core.schema.name;\n const FULL_RANGE = new RangeSet(core.MIN_KEY, core.MAX_KEY);\n\n return {\n ...core,\n table: (tableName) => {\n const table = core.table(tableName);\n const { schema } = table;\n const { primaryKey } = schema;\n const { extractKey, outbound } = primaryKey;\n const tableClone: DBCoreTable = {\n ...table,\n mutate: (req) => {\n const trans = req.trans as DBCoreTransaction & {\n mutatedParts?: ObservabilitySet;\n };\n const mutatedParts =\n trans.mutatedParts || (trans.mutatedParts = {});\n const getRangeSet = (indexName: string) => {\n const part = `idb://${dbName}/${tableName}/${indexName}`;\n return (mutatedParts[part] ||\n (mutatedParts[part] = new RangeSet())) as RangeSet;\n };\n const pkRangeSet = getRangeSet(\"\");\n const delsRangeSet = getRangeSet(\":dels\");\n\n const { type } = req;\n let [keys, newObjs] =\n req.type === \"deleteRange\"\n ? [req.range] // keys will be an DBCoreKeyRange object - transformed later on to a [from,to]-style range.\n : req.type === \"delete\"\n ? [req.keys] // keys known already here. newObjs will be undefined.\n : req.values.length < 50\n ? [[], req.values] // keys = empty array - will be resolved in mutate().then(...).\n : []; // keys and newObjs will both be undefined - changeSpec will become true (changed for entire table)\n const oldCache = req.trans[\"_cache\"];\n return table.mutate(req).then((res) => {\n // Add the mutated table and optionally keys to the mutatedTables set on the transaction.\n // Used by subscribers to txcommit event and for Collection.prototype.subscribe().\n if (isArray(keys)) {\n // keys is an array - delete, add or put of less than 50 rows.\n if (type !== \"delete\") keys = res.results;\n // individual keys (add put or delete)\n pkRangeSet.addKeys(keys);\n // Only get oldObjs if they have been cached recently\n // (This applies to Collection.modify() only, but also if updating/deleting hooks have subscribers)\n const oldObjs = getFromTransactionCache(keys, oldCache);\n\n // Supply detailed values per index for both old and new objects:\n if (!oldObjs && type !== \"add\") {\n // delete or put and we don't know old values.\n // Indicate this in the \":dels\" part, for the sake of count() queries only!\n delsRangeSet.addKeys(keys);\n }\n if (oldObjs || newObjs) {\n // No matter if knowning oldObjs or not, track the indices if it's a put, add or delete.\n trackAffectedIndexes(getRangeSet, schema, oldObjs, newObjs);\n }\n } else if (keys) {\n // As we can't know deleted index ranges, mark index-based subscriptions must trigger.\n const range = { from: keys.lower, to: keys.upper };\n delsRangeSet.add(range);\n // deleteRange. keys is a DBCoreKeyRange objects. Transform it to [from,to]-style range.\n pkRangeSet.add(range);\n } else {\n // Too many requests to record the details without slowing down write performance.\n // Let's just record a generic large range on primary key, the virtual :dels index and\n // all secondary indices:\n pkRangeSet.add(FULL_RANGE);\n delsRangeSet.add(FULL_RANGE);\n schema.indexes.forEach(idx => getRangeSet(idx.name).add(FULL_RANGE));\n }\n return res;\n });\n },\n };\n\n const getRange: (req: any) => [DBCoreIndex, RangeSet] = ({\n query: { index, range },\n }:\n | DBCoreQueryRequest\n | DBCoreCountRequest\n | DBCoreOpenCursorRequest) => [\n index,\n new RangeSet(range.lower ?? core.MIN_KEY, range.upper ?? core.MAX_KEY),\n ];\n\n const readSubscribers: {[method in\n Exclude]: \n (req: any) => [DBCoreIndex, RangeSet]\n } = {\n get: (req) => [primaryKey, new RangeSet(req.key)],\n getMany: (req) => [primaryKey, new RangeSet().addKeys(req.keys)],\n count: getRange,\n query: getRange,\n openCursor: getRange,\n }\n\n keys(readSubscribers).forEach(method => {\n tableClone[method] = function (\n req:\n | DBCoreGetRequest\n | DBCoreGetManyRequest\n | DBCoreQueryRequest\n | DBCoreCountRequest\n | DBCoreOpenCursorRequest\n ) {\n const { subscr } = PSD;\n if (subscr) {\n // Current zone want's to track all queries so they can be subscribed to.\n // (The query is executed within a \"liveQuery\" zone)\n // Check whether the query applies to a certain set of ranges:\n // Track what we should be observing:\n const getRangeSet = (indexName: string) => {\n const part = `idb://${dbName}/${tableName}/${indexName}`;\n return (subscr[part] ||\n (subscr[part] = new RangeSet())) as RangeSet;\n };\n const pkRangeSet = getRangeSet(\"\");\n const delsRangeSet = getRangeSet(\":dels\");\n const [queriedIndex, queriedRanges] = readSubscribers[method](req);\n // A generic rule here: queried ranges should always be subscribed to.\n getRangeSet(queriedIndex.name || \"\").add(queriedRanges);\n if (!queriedIndex.isPrimaryKey) {\n // Only count(), query() and openCursor() operates on secondary indices.\n // Since put(), delete() and deleteRange() mutations may happen without knowing oldObjs,\n // the mutate() method will be missing what secondary indices that are being deleted from\n // the subscribed range. We are working around this issue by recording all the resulting\n // primary keys from the queries. This only works for those kinds of queries where we can\n // derive the primary key from the result.\n // In this block we are accomplishing this using various strategies depending on the properties\n // of the query result.\n\n if (method === \"count\") {\n // We've got a problem! Delete and put mutations happen without known the oldObjs.\n // Those mutation could change the count.\n // Solution: Dedicated \":dels\" url represends a subscription to all mutations without oldObjs\n // (specially triggered in the mutators put(), delete() and deleteRange() when they don't know oldObject)\n delsRangeSet.add(FULL_RANGE);\n } else {\n // openCursor() or query()\n\n // Prepare a keysPromise in case the we're doing an IDBIndex.getAll() on a store with outbound keys.\n const keysPromise =\n method === \"query\" &&\n outbound &&\n (req as DBCoreQueryRequest).values &&\n table.query({\n ...(req as DBCoreQueryRequest),\n values: false,\n });\n\n return table[method].apply(this, arguments).then((res) => {\n if (method === \"query\") {\n if (outbound && (req as DBCoreQueryRequest).values) {\n // If keys are outbound, we can't use extractKey to map what keys to observe.\n // We've queried an index (like 'dateTime') on an outbound table\n // and retrieve a list of objects\n // from who we cannot know their primary keys.\n // \"Luckily\" though, we've prepared the keysPromise to assist us in exact this condition.\n return keysPromise.then(\n ({ result: resultingKeys }: DBCoreQueryResponse) => {\n pkRangeSet.addKeys(resultingKeys);\n return res;\n }\n );\n }\n // query() inbound values, keys or outbound keys. Secondary indexes only since\n // for primary keys we would only add results within the already registered range.\n const pKeys = (req as DBCoreQueryRequest).values\n ? (res as DBCoreQueryResponse).result.map(extractKey)\n : (res as DBCoreQueryResponse).result;\n if ((req as DBCoreQueryRequest).values) {\n // Subscribe to any mutation made on the returned keys,\n // so that we detect both deletions and updated properties.\n pkRangeSet.addKeys(pKeys);\n } else {\n // Subscribe only to mutations on the returned keys\n // in case the mutator was unable to know oldObjs.\n // If it has oldObj, the mutator won't put anything in \":dels\" because\n // it can more fine-grained put the exact removed and added index value in the correct\n // index range that we subscribe to in the queried range sets.\n // We don't load values so a change on a property outside our index will not\n // require us to re-execute the query.\n delsRangeSet.addKeys(pKeys);\n }\n } else if (method === \"openCursor\") {\n // Caller requests a cursor.\n // For the same reason as when method===\"query\", we only need to observe\n // those keys whose values are possibly used or rendered - which could\n // only happen on keys where they get the cursor's key, primaryKey or value.\n const cursor: DBCoreCursor | null = res;\n const wantValues = (req as DBCoreOpenCursorRequest).values;\n return (\n cursor &&\n Object.create(cursor, {\n key: {\n get() {\n delsRangeSet.addKey(cursor.primaryKey);\n return cursor.key;\n },\n },\n primaryKey: {\n get() {\n const pkey = cursor.primaryKey;\n delsRangeSet.addKey(pkey);\n return pkey;\n },\n },\n value: {\n get() {\n wantValues && pkRangeSet.addKey(cursor.primaryKey);\n return cursor.value;\n },\n },\n })\n );\n }\n return res;\n });\n }\n }\n }\n return table[method].apply(this, arguments);\n };\n });\n return tableClone;\n },\n };\n },\n};\n\nfunction trackAffectedIndexes(\n getRangeSet: (index: string) => RangeSet,\n schema: DBCoreTableSchema,\n oldObjs: any[] | undefined,\n newObjs: any[] | undefined\n) {\n function addAffectedIndex(ix: DBCoreIndex) {\n const rangeSet = getRangeSet(ix.name || \"\");\n function extractKey(obj: any) {\n return obj != null ? ix.extractKey(obj) : null;\n }\n const addKeyOrKeys = (key: any) => ix.multiEntry && isArray(key)\n // multiEntry and the old property was an array - add each array entry to the rangeSet:\n ? key.forEach(key => rangeSet.addKey(key))\n // Not multiEntry or the old property was not an array - add each array entry to the rangeSet:\n : rangeSet.addKey(key);\n\n (oldObjs || newObjs).forEach((_, i) => {\n const oldKey = oldObjs && extractKey(oldObjs[i]);\n const newKey = newObjs && extractKey(newObjs[i]);\n if (cmp(oldKey, newKey) !== 0) {\n // The index has changed. Add both old and new value of the index.\n if (oldKey != null) addKeyOrKeys(oldKey); // If oldKey is invalid key, addKey() will be a noop.\n if (newKey != null) addKeyOrKeys(newKey); // If newKey is invalid key, addKey() will be a noop.\n }\n });\n }\n schema.indexes.forEach(addAffectedIndex);\n}\n", "// Import types from the public API\nimport { Dexie as IDexie } from \"../../public/types/dexie\";\nimport { DexieOptions, DexieConstructor } from \"../../public/types/dexie-constructor\";\nimport { DbEvents } from \"../../public/types/db-events\";\n//import { PromiseExtended, PromiseExtendedConstructor } from '../../public/types/promise-extended';\nimport { Table as ITable } from '../../public/types/table';\nimport { TableSchema } from \"../../public/types/table-schema\";\nimport { DbSchema } from '../../public/types/db-schema';\n\n// Internal imports\nimport { Table, TableConstructor, createTableConstructor } from \"../table\";\nimport { Collection, CollectionConstructor, createCollectionConstructor } from '../collection';\nimport { WhereClause } from '../where-clause/where-clause';\nimport { WhereClauseConstructor, createWhereClauseConstructor } from '../where-clause/where-clause-constructor';\nimport { Transaction } from '../transaction';\nimport { TransactionConstructor, createTransactionConstructor } from '../transaction/transaction-constructor';\nimport { Version } from \"../version/version\";\nimport { VersionConstructor, createVersionConstructor } from '../version/version-constructor';\n\n// Other imports...\nimport { DexieEventSet } from '../../public/types/dexie-event-set';\nimport { DexieExceptionClasses } from '../../public/types/errors';\nimport { DexieDOMDependencies } from '../../public/types/dexie-dom-dependencies';\nimport { nop, promisableChain } from '../../functions/chaining-functions';\nimport Promise, { PSD } from '../../helpers/promise';\nimport { extend, override, keys, hasOwn } from '../../functions/utils';\nimport Events from '../../helpers/Events';\nimport { maxString, connections, READONLY, READWRITE } from '../../globals/constants';\nimport { getMaxKey } from '../../functions/quirks';\nimport { exceptions } from '../../errors';\nimport { lowerVersionFirst } from '../version/schema-helpers';\nimport { dexieOpen } from './dexie-open';\nimport { wrap } from '../../helpers/promise';\nimport { _onDatabaseDeleted } from '../../helpers/database-enumerator';\nimport { eventRejectHandler } from '../../functions/event-wrappers';\nimport { extractTransactionArgs, enterTransactionScope } from './transaction-helpers';\nimport { TransactionMode } from '../../public/types/transaction-mode';\nimport { rejection } from '../../helpers/promise';\nimport { usePSD } from '../../helpers/promise';\nimport { DBCore } from '../../public/types/dbcore';\nimport { Middleware, DexieStacks } from '../../public/types/middleware';\nimport { virtualIndexMiddleware } from '../../dbcore/virtual-index-middleware';\nimport { hooksMiddleware } from '../../hooks/hooks-middleware';\nimport { IndexableType } from '../../public';\nimport { observabilityMiddleware } from '../../live-query/observability-middleware';\nimport { cacheExistingValuesMiddleware } from '../../dbcore/cache-existing-values-middleware';\n\nexport interface DbReadyState {\n dbOpenError: any;\n isBeingOpened: boolean;\n onReadyBeingFired: undefined | Function[];\n openComplete: boolean;\n dbReadyResolve: () => void;\n dbReadyPromise: Promise;\n cancelOpen: (reason?: Error) => void;\n openCanceller: Promise & { _stackHolder?: Error };\n autoSchema: boolean;\n vcFired?: boolean;\n PR1398_maxLoop?: number;\n}\n\nexport class Dexie implements IDexie {\n _options: DexieOptions;\n _state: DbReadyState;\n _versions: Version[];\n _storeNames: string[];\n _deps: DexieDOMDependencies;\n _allTables: { [name: string]: Table; };\n _createTransaction: (this: Dexie, mode: IDBTransactionMode, storeNames: ArrayLike, dbschema: { [tableName: string]: TableSchema; }, parentTransaction?: Transaction) => Transaction;\n _dbSchema: { [tableName: string]: TableSchema; };\n _hasGetAll?: boolean;\n _maxKey: IndexableType;\n _fireOnBlocked: (ev: Event) => void;\n _middlewares: {[StackName in keyof DexieStacks]?: Middleware[]} = {};\n _vip?: boolean;\n _novip?: Dexie;// db._novip is to escape to orig db from db.vip.\n core: DBCore;\n\n name: string;\n verno: number = 0;\n idbdb: IDBDatabase | null;\n vip: Dexie;\n on: DbEvents;\n\n Table: TableConstructor;\n WhereClause: WhereClauseConstructor;\n Collection: CollectionConstructor;\n Version: VersionConstructor;\n Transaction: TransactionConstructor;\n\n constructor(name: string, options?: DexieOptions) {\n const deps = (Dexie as any as DexieConstructor).dependencies;\n this._options = options = {\n // Default Options\n addons: (Dexie as any as DexieConstructor).addons, // Pick statically registered addons by default\n autoOpen: true, // Don't require db.open() explicitely.\n // Default DOM dependency implementations from static prop.\n indexedDB: deps.indexedDB, // Backend IndexedDB api. Default to browser env.\n IDBKeyRange: deps.IDBKeyRange, // Backend IDBKeyRange api. Default to browser env.\n ...options\n };\n this._deps = {\n indexedDB: options.indexedDB as IDBFactory,\n IDBKeyRange: options.IDBKeyRange as typeof IDBKeyRange\n };\n const {\n addons,\n } = options;\n this._dbSchema = {};\n this._versions = [];\n this._storeNames = [];\n this._allTables = {};\n this.idbdb = null;\n this._novip = this;\n const state: DbReadyState = {\n dbOpenError: null,\n isBeingOpened: false,\n onReadyBeingFired: null,\n openComplete: false,\n dbReadyResolve: nop,\n dbReadyPromise: null as Promise,\n cancelOpen: nop,\n openCanceller: null as Promise,\n autoSchema: true,\n PR1398_maxLoop: 3\n };\n state.dbReadyPromise = new Promise(resolve => {\n state.dbReadyResolve = resolve;\n });\n state.openCanceller = new Promise((_, reject) => {\n state.cancelOpen = reject;\n });\n this._state = state;\n this.name = name;\n this.on = Events(this, \"populate\", \"blocked\", \"versionchange\", \"close\", { ready: [promisableChain, nop] }) as DbEvents;\n this.on.ready.subscribe = override(this.on.ready.subscribe, subscribe => {\n return (subscriber, bSticky) => {\n (Dexie as any as DexieConstructor).vip(() => {\n const state = this._state;\n if (state.openComplete) {\n // Database already open. Call subscriber asap.\n if (!state.dbOpenError) Promise.resolve().then(subscriber);\n // bSticky: Also subscribe to future open sucesses (after close / reopen) \n if (bSticky) subscribe(subscriber);\n } else if (state.onReadyBeingFired) {\n // db.on('ready') subscribers are currently being executed and have not yet resolved or rejected\n state.onReadyBeingFired.push(subscriber);\n if (bSticky) subscribe(subscriber);\n } else {\n // Database not yet open. Subscribe to it.\n subscribe(subscriber);\n // If bSticky is falsy, make sure to unsubscribe subscriber when fired once.\n const db = this;\n if (!bSticky) subscribe(function unsubscribe() {\n db.on.ready.unsubscribe(subscriber);\n db.on.ready.unsubscribe(unsubscribe);\n });\n }\n });\n }\n });\n\n // Create derived classes bound to this instance of Dexie:\n this.Collection = createCollectionConstructor(this);\n this.Table = createTableConstructor(this);\n this.Transaction = createTransactionConstructor(this);\n this.Version = createVersionConstructor(this);\n this.WhereClause = createWhereClauseConstructor(this);\n\n // Default subscribers to \"versionchange\" and \"blocked\".\n // Can be overridden by custom handlers. If custom handlers return false, these default\n // behaviours will be prevented.\n this.on(\"versionchange\", ev => {\n // Default behavior for versionchange event is to close database connection.\n // Caller can override this behavior by doing db.on(\"versionchange\", function(){ return false; });\n // Let's not block the other window from making it's delete() or open() call.\n // NOTE! This event is never fired in IE,Edge or Safari.\n if (ev.newVersion > 0)\n console.warn(`Another connection wants to upgrade database '${this.name}'. Closing db now to resume the upgrade.`);\n else\n console.warn(`Another connection wants to delete database '${this.name}'. Closing db now to resume the delete request.`);\n this.close();\n // In many web applications, it would be recommended to force window.reload()\n // when this event occurs. To do that, subscribe to the versionchange event\n // and call window.location.reload(true) if ev.newVersion > 0 (not a deletion)\n // The reason for this is that your current web app obviously has old schema code that needs\n // to be updated. Another window got a newer version of the app and needs to upgrade DB but\n // your window is blocking it unless we close it here.\n });\n this.on(\"blocked\", ev => {\n if (!ev.newVersion || ev.newVersion < ev.oldVersion)\n console.warn(`Dexie.delete('${this.name}') was blocked`);\n else\n console.warn(`Upgrade '${this.name}' blocked by other connection holding version ${ev.oldVersion / 10}`);\n });\n\n this._maxKey = getMaxKey(options.IDBKeyRange as typeof IDBKeyRange);\n\n this._createTransaction = (\n mode: IDBTransactionMode,\n storeNames: string[],\n dbschema: DbSchema,\n parentTransaction?: Transaction) => new this.Transaction(mode, storeNames, dbschema, this._options.chromeTransactionDurability, parentTransaction);\n\n this._fireOnBlocked = ev => {\n this.on(\"blocked\").fire(ev);\n // Workaround (not fully*) for missing \"versionchange\" event in IE,Edge and Safari:\n connections\n .filter(c => c.name === this.name && c !== this && !c._state.vcFired)\n .map(c => c.on(\"versionchange\").fire(ev));\n }\n\n // Default middlewares:\n this.use(virtualIndexMiddleware);\n this.use(hooksMiddleware);\n this.use(observabilityMiddleware);\n this.use(cacheExistingValuesMiddleware);\n\n this.vip = Object.create(this, {_vip: {value: true}}) as Dexie;\n\n // Call each addon:\n addons.forEach(addon => addon(this));\n }\n\n version(versionNumber: number): Version {\n if (isNaN(versionNumber) || versionNumber < 0.1) throw new exceptions.Type(`Given version is not a positive number`);\n versionNumber = Math.round(versionNumber * 10) / 10;\n if (this.idbdb || this._state.isBeingOpened)\n throw new exceptions.Schema(\"Cannot add version when database is open\");\n this.verno = Math.max(this.verno, versionNumber);\n const versions = this._versions;\n var versionInstance = versions.filter(\n v => v._cfg.version === versionNumber)[0];\n if (versionInstance) return versionInstance;\n versionInstance = new this.Version(versionNumber);\n versions.push(versionInstance);\n versions.sort(lowerVersionFirst);\n versionInstance.stores({}); // Derive earlier schemas by default.\n // Disable autoschema mode, as at least one version is specified.\n this._state.autoSchema = false;\n return versionInstance;\n }\n\n _whenReady(fn: () => Promise): Promise {\n return (this.idbdb && (this._state.openComplete || PSD.letThrough || this._vip)) ? fn() : new Promise((resolve, reject) => {\n if (this._state.openComplete) {\n // idbdb is falsy but openComplete is true. Must have been an exception durin open.\n // Don't wait for openComplete as it would lead to infinite loop.\n return reject(new exceptions.DatabaseClosed(this._state.dbOpenError));\n }\n if (!this._state.isBeingOpened) {\n if (!this._options.autoOpen) {\n reject(new exceptions.DatabaseClosed());\n return;\n }\n this.open().catch(nop); // Open in background. If if fails, it will be catched by the final promise anyway.\n }\n this._state.dbReadyPromise.then(resolve, reject);\n }).then(fn);\n }\n\n use({stack, create, level, name}: Middleware): this {\n if (name) this.unuse({stack, name}); // Be able to replace existing middleware.\n const middlewares = this._middlewares[stack] || (this._middlewares[stack] = []);\n middlewares.push({stack, create, level: level == null ? 10 : level, name});\n middlewares.sort((a, b) => a.level - b.level);\n // Todo update db.core and db.tables...core ? Or should be expect this to have effect\n // only after next open()?\n return this;\n }\n\n unuse({stack, create}: Middleware<{stack: keyof DexieStacks}>): this;\n unuse({stack, name}: {stack: keyof DexieStacks, name: string}): this;\n unuse({stack, name, create}: {stack: keyof DexieStacks, name?: string, create?: Function}) {\n if (stack && this._middlewares[stack]) {\n this._middlewares[stack] = this._middlewares[stack].filter(mw =>\n create ? mw.create !== create : // Given middleware has a create method. Match that exactly.\n name ? mw.name !== name : // Given middleware spec \n false);\n }\n return this;\n }\n\n open() {\n return dexieOpen(this);\n }\n\n _close(): void {\n const state = this._state;\n const idx = connections.indexOf(this);\n if (idx >= 0) connections.splice(idx, 1);\n if (this.idbdb) {\n try { this.idbdb.close(); } catch (e) { }\n this._novip.idbdb = null; // db._novip is because db can be an Object.create(origDb).\n } \n // Reset dbReadyPromise promise:\n state.dbReadyPromise = new Promise(resolve => {\n state.dbReadyResolve = resolve;\n });\n state.openCanceller = new Promise((_, reject) => {\n state.cancelOpen = reject;\n });\n }\n\n close(): void {\n this._close();\n const state = this._state;\n this._options.autoOpen = false;\n state.dbOpenError = new exceptions.DatabaseClosed();\n if (state.isBeingOpened)\n state.cancelOpen(state.dbOpenError);\n }\n\n delete(): Promise {\n const hasArguments = arguments.length > 0;\n const state = this._state;\n return new Promise((resolve, reject) => {\n const doDelete = () => {\n this.close();\n var req = this._deps.indexedDB.deleteDatabase(this.name);\n req.onsuccess = wrap(() => {\n _onDatabaseDeleted(this._deps, this.name);\n resolve();\n });\n req.onerror = eventRejectHandler(reject);\n req.onblocked = this._fireOnBlocked;\n }\n\n if (hasArguments) throw new exceptions.InvalidArgument(\"Arguments not allowed in db.delete()\");\n if (state.isBeingOpened) {\n state.dbReadyPromise.then(doDelete);\n } else {\n doDelete();\n }\n });\n }\n\n backendDB() {\n return this.idbdb;\n }\n\n isOpen() {\n return this.idbdb !== null;\n }\n\n hasBeenClosed() {\n const dbOpenError = this._state.dbOpenError;\n return dbOpenError && (dbOpenError.name === 'DatabaseClosed');\n }\n\n hasFailed() {\n return this._state.dbOpenError !== null;\n }\n\n dynamicallyOpened() {\n return this._state.autoSchema;\n }\n\n get tables () {\n return keys(this._allTables).map(name => this._allTables[name]);\n }\n\n transaction(): Promise {\n const args = extractTransactionArgs.apply(this, arguments);\n return this._transaction.apply(this, args);\n }\n\n _transaction(mode: TransactionMode, tables: Array, scopeFunc: Function) {\n let parentTransaction = PSD.trans as Transaction | undefined;\n // Check if parent transactions is bound to this db instance, and if caller wants to reuse it\n if (!parentTransaction || parentTransaction.db !== this || mode.indexOf('!') !== -1) parentTransaction = null;\n const onlyIfCompatible = mode.indexOf('?') !== -1;\n mode = mode.replace('!', '').replace('?', '') as TransactionMode; // Ok. Will change arguments[0] as well but we wont touch arguments henceforth.\n let idbMode: IDBTransactionMode,\n storeNames;\n\n try {\n //\n // Get storeNames from arguments. Either through given table instances, or through given table names.\n //\n storeNames = tables.map(table => {\n var storeName = table instanceof this.Table ? table.name : table;\n if (typeof storeName !== 'string') throw new TypeError(\"Invalid table argument to Dexie.transaction(). Only Table or String are allowed\");\n return storeName;\n });\n\n //\n // Resolve mode. Allow shortcuts \"r\" and \"rw\".\n //\n if (mode == \"r\" || mode === READONLY)\n idbMode = READONLY;\n else if (mode == \"rw\" || mode == READWRITE)\n idbMode = READWRITE;\n else\n throw new exceptions.InvalidArgument(\"Invalid transaction mode: \" + mode);\n\n if (parentTransaction) {\n // Basic checks\n if (parentTransaction.mode === READONLY && idbMode === READWRITE) {\n if (onlyIfCompatible) {\n // Spawn new transaction instead.\n parentTransaction = null; \n }\n else throw new exceptions.SubTransaction(\"Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY\");\n }\n if (parentTransaction) {\n storeNames.forEach(storeName => {\n if (parentTransaction && parentTransaction.storeNames.indexOf(storeName) === -1) {\n if (onlyIfCompatible) {\n // Spawn new transaction instead.\n parentTransaction = null; \n }\n else throw new exceptions.SubTransaction(\"Table \" + storeName +\n \" not included in parent transaction.\");\n }\n });\n }\n if (onlyIfCompatible && parentTransaction && !parentTransaction.active) {\n // '?' mode should not keep using an inactive transaction.\n parentTransaction = null;\n }\n }\n } catch (e) {\n return parentTransaction ?\n parentTransaction._promise(null, (_, reject) => {reject(e);}) :\n rejection (e);\n }\n // If this is a sub-transaction, lock the parent and then launch the sub-transaction.\n const enterTransaction = enterTransactionScope.bind(null, this, idbMode, storeNames, parentTransaction, scopeFunc);\n return (parentTransaction ?\n parentTransaction._promise(idbMode, enterTransaction, \"lock\") :\n PSD.trans ?\n // no parent transaction despite PSD.trans exists. Make sure also\n // that the zone we create is not a sub-zone of current, because\n // Promise.follow() should not wait for it if so.\n usePSD(PSD.transless, ()=>this._whenReady(enterTransaction)) :\n this._whenReady (enterTransaction));\n }\n\n table(tableName: string): Table;\n table(tableName: string): ITable;\n table(tableName: string): Table {\n if (!hasOwn(this._allTables, tableName)) {\n throw new exceptions.InvalidTable(`Table ${tableName} does not exist`); }\n return this._allTables[tableName];\n }\n}\n", "import {\n Observable as IObservable,\n Observer,\n Subscription,\n} from \"../../public/types/observable\";\n\nconst symbolObservable: typeof Symbol.observable =\n typeof Symbol !== \"undefined\" && \"observable\" in Symbol\n ? Symbol.observable\n : \"@@observable\" as any;\n\nexport class Observable implements IObservable {\n private _subscribe: (observer: Observer) => Subscription;\n hasValue?: ()=>boolean;\n getValue?: ()=>T;\n\n constructor(subscribe: (observer: Observer) => Subscription) {\n this._subscribe = subscribe;\n }\n\n subscribe(\n onNext?: ((value: T) => void) | null,\n onError?: ((error: any) => void) | null,\n onComplete?: (() => void) | null\n ): Subscription;\n subscribe(observer?: Observer | null): Subscription;\n subscribe(x?: any, error?: any, complete?: any): Subscription {\n return this._subscribe(\n !x || typeof x === \"function\" ? { next: x, error, complete } : x\n );\n }\n\n [symbolObservable]() {\n return this;\n }\n}\n", "import { deepClone, keys } from \"../functions/utils\";\nimport { mergeRanges, RangeSet } from \"../helpers/rangeset\";\nimport { ObservabilitySet } from \"../public/types/db-events\";\n\nexport function extendObservabilitySet(\n target: ObservabilitySet,\n newSet: ObservabilitySet\n): ObservabilitySet {\n keys(newSet).forEach(part => {\n const rangeSet = target[part] || (target[part] = new RangeSet());\n mergeRanges(rangeSet, newSet[part]);\n });\n return target;\n}\n", "import { isAsyncFunction, keys } from \"../functions/utils\";\nimport { globalEvents, DEXIE_STORAGE_MUTATED_EVENT_NAME } from \"../globals/global-events\";\nimport {\n decrementExpectedAwaits,\n incrementExpectedAwaits,\n newScope,\n PSD,\n usePSD,\n} from \"../helpers/promise\";\nimport { ObservabilitySet } from \"../public/types/db-events\";\nimport {\n Observable as IObservable,\n Subscription,\n} from \"../public/types/observable\";\nimport { Observable } from \"../classes/observable/observable\";\nimport { extendObservabilitySet } from \"./extend-observability-set\";\nimport { rangesOverlap } from \"../helpers/rangeset\";\n\nexport function liveQuery(querier: () => T | Promise): IObservable {\n let hasValue = false;\n let currentValue: T = undefined as any;\n const observable = new Observable((observer) => {\n const scopeFuncIsAsync = isAsyncFunction(querier);\n function execute(subscr: ObservabilitySet) {\n if (scopeFuncIsAsync) {\n incrementExpectedAwaits();\n }\n const exec = () => newScope(querier, { subscr, trans: null });\n const rv = PSD.trans\n ? // Ignore current transaction if active when calling subscribe().\n usePSD(PSD.transless, exec)\n : exec();\n if (scopeFuncIsAsync) {\n (rv as Promise).then(\n decrementExpectedAwaits,\n decrementExpectedAwaits\n );\n }\n return rv;\n }\n\n let closed = false;\n\n let accumMuts: ObservabilitySet = {};\n let currentObs: ObservabilitySet = {};\n\n const subscription: Subscription = {\n get closed() {\n return closed;\n },\n unsubscribe: () => {\n closed = true;\n globalEvents.storagemutated.unsubscribe(mutationListener);\n },\n };\n\n observer.start && observer.start(subscription); // https://github.com/tc39/proposal-observable\n\n let querying = false,\n startedListening = false;\n\n function shouldNotify() {\n return keys(currentObs).some(\n (key) =>\n accumMuts[key] && rangesOverlap(accumMuts[key], currentObs[key])\n );\n }\n\n const mutationListener = (parts: ObservabilitySet) => {\n extendObservabilitySet(accumMuts, parts);\n if (shouldNotify()) {\n doQuery();\n }\n };\n\n const doQuery = () => {\n if (querying || closed) return;\n accumMuts = {};\n const subscr: ObservabilitySet = {};\n const ret = execute(subscr);\n if (!startedListening) {\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, mutationListener);\n startedListening = true;\n }\n querying = true;\n Promise.resolve(ret).then(\n (result) => {\n hasValue = true;\n currentValue = result;\n querying = false;\n if (closed) return;\n if (shouldNotify()) {\n // Mutations has happened while we were querying. Redo query.\n doQuery();\n } else {\n accumMuts = {};\n // Update what we are subscribing for based on this last run:\n currentObs = subscr;\n observer.next && observer.next(result);\n }\n },\n (err) => {\n querying = false;\n hasValue = false;\n observer.error && observer.error(err);\n subscription.unsubscribe();\n }\n );\n };\n\n doQuery();\n return subscription;\n });\n observable.hasValue = () => hasValue;\n observable.getValue = () => currentValue;\n return observable;\n}\n", "import { _global } from '../../globals/global';\nimport { DexieDOMDependencies } from '../../public/types/dexie-dom-dependencies';\n\nexport let domDeps: DexieDOMDependencies\n\ntry {\n domDeps = {\n // Required:\n indexedDB: _global.indexedDB || _global.mozIndexedDB || _global.webkitIndexedDB || _global.msIndexedDB,\n IDBKeyRange: _global.IDBKeyRange || _global.webkitIDBKeyRange\n };\n} catch (e) {\n domDeps = { indexedDB: null, IDBKeyRange: null };\n}\n", "import { Dexie as _Dexie } from './dexie';\nimport { _global } from '../../globals/global';\nimport { props, derive, extend, override, getByKeyPath, setByKeyPath, delByKeyPath, shallowClone, deepClone, asap } from '../../functions/utils';\nimport { getObjectDiff } from \"../../functions/get-object-diff\";\nimport { fullNameExceptions } from '../../errors';\nimport { DexieConstructor } from '../../public/types/dexie-constructor';\nimport { getDatabaseNames } from '../../helpers/database-enumerator';\nimport { PSD } from '../../helpers/promise';\nimport { usePSD } from '../../helpers/promise';\nimport { newScope } from '../../helpers/promise';\nimport { rejection } from '../../helpers/promise';\nimport { awaitIterator } from '../../helpers/yield-support';\nimport Promise from '../../helpers/promise';\nimport * as Debug from '../../helpers/debug';\nimport { dexieStackFrameFilter, minKey, connections, DEXIE_VERSION } from '../../globals/constants';\nimport Events from '../../helpers/Events';\nimport { exceptions } from '../../errors';\nimport { errnames } from '../../errors';\nimport { getMaxKey } from '../../functions/quirks';\nimport { vip } from './vip';\nimport { globalEvents } from '../../globals/global-events';\nimport { liveQuery } from '../../live-query/live-query';\nimport { extendObservabilitySet } from '../../live-query/extend-observability-set';\nimport { domDeps } from './dexie-dom-dependencies';\nimport { cmp } from '../../functions/cmp';\n\n/* (Dexie) is an instance of DexieConstructor, as defined in public/types/dexie-constructor.d.ts\n* (new Dexie()) is an instance of Dexie, as defined in public/types/dexie.d.ts\n* \n* Why we're doing this?\n\n* Because we've choosen to define the public Dexie API using a DexieConstructor interface\n* rather than declaring a class. On that interface, all static props are defined.\n* In practice, class Dexie's constructor implements DexieConstructor and all member props\n* are defined in interface Dexie. We could say, it's a typescript limitation of not being\n* able to define a static interface that forces us to do the cast below.\n*/\nconst Dexie = _Dexie as any as DexieConstructor;\n\n//\n// Set all static methods and properties onto Dexie:\n// \nprops(Dexie, {\n\n // Dexie.BulkError = class BulkError {...};\n // Dexie.XXXError = class XXXError {...};\n ...fullNameExceptions,\n\n //\n // Static delete() method.\n //\n delete(databaseName: string) {\n const db = new Dexie(databaseName, {addons: []});\n return db.delete();\n },\n\n //\n // Static exists() method.\n //\n exists(name: string) {\n return new Dexie(name, { addons: [] }).open().then(db => {\n db.close();\n return true;\n }).catch('NoSuchDatabaseError', () => false);\n },\n\n //\n // Static method for retrieving a list of all existing databases at current host.\n //\n getDatabaseNames(cb) {\n try {\n return getDatabaseNames(Dexie.dependencies).then(cb);\n } catch {\n return rejection(new exceptions.MissingAPI());\n }\n },\n\n /** @deprecated */\n defineClass() {\n function Class(content) {\n extend(this, content);\n }\n return Class;\n },\n\n ignoreTransaction(scopeFunc) {\n // In case caller is within a transaction but needs to create a separate transaction.\n // Example of usage:\n //\n // Let's say we have a logger function in our app. Other application-logic should be unaware of the\n // logger function and not need to include the 'logentries' table in all transaction it performs.\n // The logging should always be done in a separate transaction and not be dependant on the current\n // running transaction context. Then you could use Dexie.ignoreTransaction() to run code that starts a new transaction.\n //\n // Dexie.ignoreTransaction(function() {\n // db.logentries.add(newLogEntry);\n // });\n //\n // Unless using Dexie.ignoreTransaction(), the above example would try to reuse the current transaction\n // in current Promise-scope.\n //\n // An alternative to Dexie.ignoreTransaction() would be setImmediate() or setTimeout(). The reason we still provide an\n // API for this because\n // 1) The intention of writing the statement could be unclear if using setImmediate() or setTimeout().\n // 2) setTimeout() would wait unnescessary until firing. This is however not the case with setImmediate().\n // 3) setImmediate() is not supported in the ES standard.\n // 4) You might want to keep other PSD state that was set in a parent PSD, such as PSD.letThrough.\n return PSD.trans ?\n usePSD(PSD.transless, scopeFunc) : // Use the closest parent that was non-transactional.\n scopeFunc(); // No need to change scope because there is no ongoing transaction.\n },\n\n vip,\n\n async: function (generatorFn: Function) {\n return function () {\n try {\n var rv = awaitIterator(generatorFn.apply(this, arguments));\n if (!rv || typeof rv.then !== 'function')\n return Promise.resolve(rv);\n return rv;\n } catch (e) {\n return rejection(e);\n }\n };\n },\n\n spawn: function (generatorFn, args, thiz) {\n try {\n var rv = awaitIterator(generatorFn.apply(thiz, args || []));\n if (!rv || typeof rv.then !== 'function')\n return Promise.resolve(rv);\n return rv;\n } catch (e) {\n return rejection(e);\n }\n },\n\n // Dexie.currentTransaction property\n currentTransaction: {\n get: () => PSD.trans || null\n },\n\n waitFor: function (promiseOrFunction, optionalTimeout) {\n // If a function is provided, invoke it and pass the returning value to Transaction.waitFor()\n const promise = Promise.resolve(\n typeof promiseOrFunction === 'function' ?\n Dexie.ignoreTransaction(promiseOrFunction) :\n promiseOrFunction)\n .timeout(optionalTimeout || 60000); // Default the timeout to one minute. Caller may specify Infinity if required. \n\n // Run given promise on current transaction. If no current transaction, just return a Dexie promise based\n // on given value.\n return PSD.trans ?\n PSD.trans.waitFor(promise) :\n promise;\n },\n\n // Export our Promise implementation since it can be handy as a standalone Promise implementation\n Promise: Promise,\n\n // Dexie.debug proptery:\n // Dexie.debug = false\n // Dexie.debug = true\n // Dexie.debug = \"dexie\" - don't hide dexie's stack frames.\n debug: {\n get: () => Debug.debug,\n set: value => {\n Debug.setDebug(value, value === 'dexie' ? () => true : dexieStackFrameFilter);\n }\n },\n\n // Export our derive/extend/override methodology\n derive: derive, // Deprecate?\n extend: extend, // Deprecate?\n props: props,\n override: override, // Deprecate?\n // Export our Events() function - can be handy as a toolkit\n Events: Events,\n on: globalEvents,\n liveQuery,\n extendObservabilitySet,\n // Utilities\n getByKeyPath: getByKeyPath,\n setByKeyPath: setByKeyPath,\n delByKeyPath: delByKeyPath,\n shallowClone: shallowClone,\n deepClone: deepClone,\n getObjectDiff: getObjectDiff,\n cmp,\n asap: asap,\n //maxKey: new Dexie('',{addons:[]})._maxKey,\n minKey: minKey,\n // Addon registry\n addons: [],\n // Global DB connection list\n connections: connections,\n\n //MultiModifyError: exceptions.Modify, // Obsolete!\n errnames: errnames,\n\n // Export other static classes\n //IndexSpec: IndexSpec, Obsolete!\n //TableSchema: TableSchema, Obsolete!\n\n //\n // Dependencies\n //\n // These will automatically work in browsers with indexedDB support, or where an indexedDB polyfill has been included.\n //\n // In node.js, however, these properties must be set \"manually\" before instansiating a new Dexie().\n // For node.js, you need to require indexeddb-js or similar and then set these deps.\n //\n dependencies: domDeps,\n\n // API Version Number: Type Number, make sure to always set a version number that can be comparable correctly. Example: 0.9, 0.91, 0.92, 1.0, 1.01, 1.1, 1.2, 1.21, etc.\n semVer: DEXIE_VERSION,\n version: DEXIE_VERSION.split('.')\n .map(n => parseInt(n))\n .reduce((p, c, i) => p + (c / Math.pow(10, i * 2))),\n\n // https://github.com/dfahlander/Dexie.js/issues/186\n // typescript compiler tsc in mode ts-->es5 & commonJS, will expect require() to return\n // x.default. Workaround: Set Dexie.default = Dexie.\n // default: Dexie, // Commented because solved in index-umd.ts instead.\n // Make it possible to import {Dexie} (non-default import)\n // Reason 1: May switch to that in future.\n // Reason 2: We declare it both default and named exported in d.ts to make it possible\n // to let addons extend the Dexie interface with Typescript 2.1 (works only when explicitely\n // exporting the symbol, not just default exporting)\n // Dexie: Dexie // Commented because solved in index-umd.ts instead.\n});\n\nDexie.maxKey = getMaxKey(Dexie.dependencies.IDBKeyRange);\n", "import { isIEOrEdge } from '../globals/constants';\nimport { globalEvents, DEXIE_STORAGE_MUTATED_EVENT_NAME, STORAGE_MUTATED_DOM_EVENT_NAME } from '../globals/global-events';\nimport { ObservabilitySet } from \"../public/types/db-events\";\n\nif (typeof dispatchEvent !== 'undefined' && typeof addEventListener !== 'undefined') {\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, updatedParts => {\n if (!propagatingLocally) {\n let event: CustomEvent;\n if (isIEOrEdge) {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(STORAGE_MUTATED_DOM_EVENT_NAME, true, true, updatedParts);\n } else {\n event = new CustomEvent(STORAGE_MUTATED_DOM_EVENT_NAME, {\n detail: updatedParts\n });\n }\n propagatingLocally = true;\n dispatchEvent(event);\n propagatingLocally = false;\n }\n });\n addEventListener(STORAGE_MUTATED_DOM_EVENT_NAME, ({detail}: CustomEvent) => {\n if (!propagatingLocally) {\n propagateLocally(detail);\n }\n });\n}\n\nexport function propagateLocally(updateParts: ObservabilitySet) {\n let wasMe = propagatingLocally;\n try {\n propagatingLocally = true;\n globalEvents.storagemutated.fire(updateParts);\n } finally {\n propagatingLocally = wasMe;\n }\n}\n\nexport let propagatingLocally = false;\n", "import {\n globalEvents,\n STORAGE_MUTATED_DOM_EVENT_NAME,\n DEXIE_STORAGE_MUTATED_EVENT_NAME,\n} from '../globals/global-events';\nimport { propagateLocally, propagatingLocally } from './propagate-locally';\n\nif (typeof BroadcastChannel !== 'undefined') {\n const bc = new BroadcastChannel(STORAGE_MUTATED_DOM_EVENT_NAME);\n\n /**\n * The Node.js BroadcastChannel will prevent the node process from exiting\n * if the BroadcastChannel is not closed.\n * Therefore we have to call unref() which allows the process to finish\n * properly even when the BroadcastChannel is never closed.\n * @link https://nodejs.org/api/worker_threads.html#broadcastchannelunref\n * @link https://github.com/dexie/Dexie.js/pull/1576\n */\n if (typeof (bc as any).unref === 'function') {\n (bc as any).unref();\n } \n \n //\n // Propagate local changes to remote tabs, windows and workers via BroadcastChannel\n //\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, (changedParts) => {\n if (!propagatingLocally) {\n bc.postMessage(changedParts);\n }\n });\n\n //\n // Propagate remote changes locally via storage event:\n //\n bc.onmessage = (ev) => {\n if (ev.data) propagateLocally(ev.data);\n };\n} else if (typeof self !== 'undefined' && typeof navigator !== 'undefined') {\n // DOM verified - when typeof self !== \"undefined\", we are a window or worker. Not a Node process.\n\n //\n // Propagate local changes to remote tabs/windows via storage event and service worker\n // via messages. We have this code here because of https://bugs.webkit.org/show_bug.cgi?id=161472.\n //\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, (changedParts) => {\n try {\n if (!propagatingLocally) {\n if (typeof localStorage !== 'undefined') {\n // We're a browsing window or tab. Propagate to other windows/tabs via storage event:\n localStorage.setItem(\n STORAGE_MUTATED_DOM_EVENT_NAME,\n JSON.stringify({\n trig: Math.random(),\n changedParts,\n })\n );\n }\n if (typeof self['clients'] === 'object') {\n // We're a service worker. Propagate to our browser clients.\n [...self['clients'].matchAll({ includeUncontrolled: true })].forEach(\n (client) =>\n client.postMessage({\n type: STORAGE_MUTATED_DOM_EVENT_NAME,\n changedParts,\n })\n );\n }\n }\n } catch {}\n });\n\n //\n // Propagate remote changes locally via storage event:\n //\n if (typeof addEventListener !== 'undefined') {\n addEventListener('storage', (ev: StorageEvent) => {\n if (ev.key === STORAGE_MUTATED_DOM_EVENT_NAME) {\n const data = JSON.parse(ev.newValue);\n if (data) propagateLocally(data.changedParts);\n }\n });\n }\n\n //\n // Propagate messages from service worker\n //\n const swContainer = self.document && navigator.serviceWorker; // self.document is to verify we're not the SW ourself\n if (swContainer) {\n // We're a browser window and want to propagate message from the SW:\n swContainer.addEventListener('message', propagateMessageLocally);\n }\n}\n\nfunction propagateMessageLocally({ data }: MessageEvent) {\n if (data && data.type === STORAGE_MUTATED_DOM_EVENT_NAME) {\n propagateLocally(data.changedParts);\n }\n}\n", "import { Dexie } from './classes/dexie';\nimport { DexieConstructor } from './public/types/dexie-constructor';\nimport { DexiePromise } from './helpers/promise';\nimport { mapError } from './errors';\nimport * as Debug from './helpers/debug';\nimport { dexieStackFrameFilter } from './globals/constants';\n\n// Generate all static properties such as Dexie.maxKey etc\n// (implement interface DexieConstructor):\nimport './classes/dexie/dexie-static-props';\nimport './live-query/enable-broadcast';\nimport { liveQuery } from './live-query/live-query';\n\n// Set rejectionMapper of DexiePromise so that it generally tries to map\n// DOMErrors and DOMExceptions to a DexieError instance with same name but with\n// async stack support and with a prototypal inheritance from DexieError and Error.\n// of Map DOMErrors and DOMExceptions to corresponding Dexie errors.\nDexiePromise.rejectionMapper = mapError;\n\n// Let the async stack filter focus on app code and filter away frames from dexie.min.js:\nDebug.setDebug(Debug.debug, dexieStackFrameFilter);\n\nexport { RangeSet, mergeRanges, rangesOverlap } from \"./helpers/rangeset\";\nexport { Dexie, liveQuery }; // Comply with public/index.d.ts.\nexport default Dexie;\n", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n", "import Dexie from 'dexie';\nimport { DexieExportedDatabase } from './json-structure';\n\nexport function getSchemaString(table: Dexie.Table) {\n const primKeyAndIndexes = [table.schema.primKey].concat(table.schema.indexes);\n return primKeyAndIndexes.map(index => index.src).join(',');\n}\n\nexport function extractDbSchema(exportedDb: DexieExportedDatabase) {\n const schema: {\n [tableName: string]: string;\n } = {};\n for (const table of exportedDb.tables) {\n schema[table.name] = table.schema;\n }\n return schema;\n}\n\n\n// Missing FileReaderSync type in standard typescript libs:\ninterface FileReaderSync {\n readAsArrayBuffer(blob: Blob): ArrayBuffer;\n readAsBinaryString(blob: Blob): string;\n readAsDataURL(blob: Blob): string;\n readAsText(blob: Blob, encoding?: string): string;\n}\ndeclare var FileReaderSync: {\n prototype: FileReaderSync;\n new(): FileReaderSync;\n};\n// -----------------------------------------------\n\nexport interface TypeMapper {\n binary: ArrayBuffer;\n text: string;\n}\n\nexport function readBlobAsync(blob: Blob, type: T): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onabort = ev => reject(new Error(\"file read aborted\"));\n reader.onerror = ev => reject((ev.target as any).error);\n reader.onload = ev => resolve((ev.target as any).result);\n if (type === 'binary')\n reader.readAsArrayBuffer(blob);\n else\n reader.readAsText(blob);\n });\n}\n\nexport function readBlobSync(blob: Blob, type: T): TypeMapper[T] {\n if (typeof FileReaderSync === 'undefined') {\n throw new Error('FileReaderSync missing. Reading blobs synchronously requires code to run from within a web worker. Use TSON.encapsulateAsync() to do it from the main thread.');\n }\n const reader = new FileReaderSync(); // Requires worker environment\n const data = type === 'binary' ?\n reader.readAsArrayBuffer(blob) :\n reader.readAsText(blob);\n\n return data as TypeMapper[T];\n}\n", "(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Typeson = factory());\n}(this, (function () { 'use strict';\n\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n }\n\n function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n }\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n }\n\n function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n }\n\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n\n /**\n * We keep this function minimized so if using two instances of this\n * library, where one is minimized and one is not, it will still work\n * with `hasConstructorOf`.\n * With ES6 classes, we may be able to simply use `class TypesonPromise\n * extends Promise` and add a string tag for detection.\n * @param {function} f\n */\n // eslint-disable-next-line max-len\n // eslint-disable-next-line block-spacing, space-before-function-paren, space-before-blocks, space-infix-ops, semi, promise/avoid-new\n var TypesonPromise = function TypesonPromise(f) {\n _classCallCheck(this, TypesonPromise);\n\n this.p = new Promise(f);\n }; // eslint-disable-next-line max-len\n // class TypesonPromise extends Promise {get[Symbol.toStringTag](){return 'TypesonPromise'};} // eslint-disable-line keyword-spacing, space-before-function-paren, space-before-blocks, block-spacing, semi\n\n\n TypesonPromise.__typeson__type__ = 'TypesonPromise'; // Note: core-js-bundle provides a `Symbol` polyfill\n\n /* istanbul ignore else */\n\n if (typeof Symbol !== 'undefined') {\n // Ensure `isUserObject` will return `false` for `TypesonPromise`\n TypesonPromise.prototype[Symbol.toStringTag] = 'TypesonPromise';\n }\n /**\n *\n * @param {function} [onFulfilled]\n * @param {function} [onRejected]\n * @returns {TypesonPromise}\n */\n\n\n TypesonPromise.prototype.then = function (onFulfilled, onRejected) {\n var _this = this;\n\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n // eslint-disable-next-line promise/catch-or-return\n _this.p.then(function (res) {\n // eslint-disable-next-line promise/always-return\n typesonResolve(onFulfilled ? onFulfilled(res) : res);\n })[\"catch\"](function (res) {\n return onRejected ? onRejected(res) : Promise.reject(res);\n }).then(typesonResolve, typesonReject);\n });\n };\n /**\n *\n * @param {function} onRejected\n * @returns {TypesonPromise}\n */\n\n\n TypesonPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n };\n /**\n *\n * @param {Any} v\n * @returns {TypesonPromise}\n */\n\n\n TypesonPromise.resolve = function (v) {\n return new TypesonPromise(function (typesonResolve) {\n typesonResolve(v);\n });\n };\n /**\n *\n * @param {Any} v\n * @returns {TypesonPromise}\n */\n\n\n TypesonPromise.reject = function (v) {\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n typesonReject(v);\n });\n };\n\n ['all', 'race'].forEach(function (meth) {\n /**\n *\n * @param {Promise[]} promArr\n * @returns {TypesonPromise}\n */\n TypesonPromise[meth] = function (promArr) {\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n // eslint-disable-next-line promise/catch-or-return\n Promise[meth](promArr.map(function (prom) {\n return prom && prom.constructor && prom.constructor.__typeson__type__ === 'TypesonPromise' ? prom.p : prom;\n })).then(typesonResolve, typesonReject);\n });\n };\n });\n\n var _ref = {},\n toStr = _ref.toString,\n hasOwn = {}.hasOwnProperty,\n getProto = Object.getPrototypeOf,\n fnToString = hasOwn.toString;\n /**\n * Second argument not in use internally, but provided for utility.\n * @param {Any} v\n * @param {boolean} catchCheck\n * @returns {boolean}\n */\n\n function isThenable(v, catchCheck) {\n return isObject(v) && typeof v.then === 'function' && (!catchCheck || typeof v[\"catch\"] === 'function');\n }\n /**\n *\n * @param {Any} val\n * @returns {string}\n */\n\n\n function toStringTag(val) {\n return toStr.call(val).slice(8, -1);\n }\n /**\n * This function is dependent on both constructors\n * being identical so any minimization is expected of both.\n * @param {Any} a\n * @param {function} b\n * @returns {boolean}\n */\n\n\n function hasConstructorOf(a, b) {\n if (!a || _typeof(a) !== 'object') {\n return false;\n }\n\n var proto = getProto(a);\n\n if (!proto) {\n return b === null;\n }\n\n var Ctor = hasOwn.call(proto, 'constructor') && proto.constructor;\n\n if (typeof Ctor !== 'function') {\n return b === null;\n }\n\n if (b === Ctor) {\n return true;\n }\n\n if (b !== null && fnToString.call(Ctor) === fnToString.call(b)) {\n return true;\n }\n\n if (typeof b === 'function' && typeof Ctor.__typeson__type__ === 'string' && Ctor.__typeson__type__ === b.__typeson__type__) {\n return true;\n }\n\n return false;\n }\n /**\n *\n * @param {Any} val\n * @returns {boolean}\n */\n\n\n function isPlainObject(val) {\n // Mirrors jQuery's\n if (!val || toStringTag(val) !== 'Object') {\n return false;\n }\n\n var proto = getProto(val);\n\n if (!proto) {\n // `Object.create(null)`\n return true;\n }\n\n return hasConstructorOf(val, Object);\n }\n /**\n *\n * @param {Any} val\n * @returns {boolean}\n */\n\n\n function isUserObject(val) {\n if (!val || toStringTag(val) !== 'Object') {\n return false;\n }\n\n var proto = getProto(val);\n\n if (!proto) {\n // `Object.create(null)`\n return true;\n }\n\n return hasConstructorOf(val, Object) || isUserObject(proto);\n }\n /**\n *\n * @param {Any} v\n * @returns {boolean}\n */\n\n\n function isObject(v) {\n return v && _typeof(v) === 'object';\n }\n /**\n *\n * @param {string} keyPathComponent\n * @returns {string}\n */\n\n\n function escapeKeyPathComponent(keyPathComponent) {\n return keyPathComponent.replace(/~/g, '~0').replace(/\\./g, '~1');\n }\n /**\n *\n * @param {string} keyPathComponent\n * @returns {string}\n */\n\n\n function unescapeKeyPathComponent(keyPathComponent) {\n return keyPathComponent.replace(/~1/g, '.').replace(/~0/g, '~');\n }\n /**\n * @param {PlainObject|GenericArray} obj\n * @param {string} keyPath\n * @returns {Any}\n */\n\n\n function getByKeyPath(obj, keyPath) {\n if (keyPath === '') {\n return obj;\n }\n\n var period = keyPath.indexOf('.');\n\n if (period > -1) {\n var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))];\n return innerObj === undefined ? undefined : getByKeyPath(innerObj, keyPath.slice(period + 1));\n }\n\n return obj[unescapeKeyPathComponent(keyPath)];\n }\n /**\n *\n * @param {PlainObject} obj\n * @param {string} keyPath\n * @param {Any} value\n * @returns {Any}\n */\n\n\n function setAtKeyPath(obj, keyPath, value) {\n if (keyPath === '') {\n return value;\n }\n\n var period = keyPath.indexOf('.');\n\n if (period > -1) {\n var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))];\n return setAtKeyPath(innerObj, keyPath.slice(period + 1), value);\n }\n\n obj[unescapeKeyPathComponent(keyPath)] = value;\n return obj;\n }\n /**\n *\n * @param {external:JSON} value\n * @returns {\"null\"|\"array\"|\"undefined\"|\"boolean\"|\"number\"|\"string\"|\n * \"object\"|\"symbol\"}\n */\n\n\n function getJSONType(value) {\n return value === null ? 'null' : Array.isArray(value) ? 'array' : _typeof(value);\n }\n\n var keys = Object.keys,\n isArray = Array.isArray,\n hasOwn$1 = {}.hasOwnProperty,\n internalStateObjPropsToIgnore = ['type', 'replaced', 'iterateIn', 'iterateUnsetNumeric'];\n /**\n * Handle plain object revivers first so reference setting can use\n * revived type (e.g., array instead of object); assumes revived\n * has same structure or will otherwise break subsequent references.\n * @param {PlainObjectType} a\n * @param {PlainObjectType} b\n * @returns {1|-1|boolean}\n */\n\n function nestedPathsFirst(a, b) {\n if (a.keypath === '') {\n return -1;\n }\n\n var as = a.keypath.match(/\\./g) || 0;\n var bs = b.keypath.match(/\\./g) || 0;\n\n if (as) {\n as = as.length;\n }\n\n if (bs) {\n bs = bs.length;\n }\n\n return as > bs ? -1 : as < bs ? 1 : a.keypath < b.keypath ? -1 : a.keypath > b.keypath;\n }\n /**\n * An instance of this class can be used to call `stringify()` and `parse()`.\n * Typeson resolves cyclic references by default. Can also be extended to\n * support custom types using the register() method.\n *\n * @class\n * @param {{cyclic: boolean}} [options] - if cyclic (default true),\n * cyclic references will be handled gracefully.\n */\n\n\n var Typeson =\n /*#__PURE__*/\n function () {\n function Typeson(options) {\n _classCallCheck(this, Typeson);\n\n this.options = options; // Replacers signature: replace (value). Returns falsy if not\n // replacing. Otherwise ['Date', value.getTime()]\n\n this.plainObjectReplacers = [];\n this.nonplainObjectReplacers = []; // Revivers: [{type => reviver}, {plain: boolean}].\n // Sample: [{'Date': value => new Date(value)}, {plain: false}]\n\n this.revivers = {};\n /** Types registered via `register()`. */\n\n this.types = {};\n }\n /**\n * @typedef {null|boolean|number|string|GenericArray|PlainObject} JSON\n */\n\n /**\n * @callback JSONReplacer\n * @param {\"\"|string} key\n * @param {JSON} value\n * @returns {number|string|boolean|null|PlainObject|undefined}\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The%20replacer%20parameter\n */\n\n /**\n * Serialize given object to Typeson.\n * Initial arguments work identical to those of `JSON.stringify`.\n * The `replacer` argument has nothing to do with our replacers.\n * @param {Any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {object} opts\n * @returns {string|Promise} Promise resolves to a string\n */\n\n\n _createClass(Typeson, [{\n key: \"stringify\",\n value: function stringify(obj, replacer, space, opts) {\n opts = _objectSpread2({}, this.options, {}, opts, {\n stringification: true\n });\n var encapsulated = this.encapsulate(obj, null, opts);\n\n if (isArray(encapsulated)) {\n return JSON.stringify(encapsulated[0], replacer, space);\n }\n\n return encapsulated.then(function (res) {\n return JSON.stringify(res, replacer, space);\n });\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {Any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {object} opts\n * @returns {string}\n */\n\n }, {\n key: \"stringifySync\",\n value: function stringifySync(obj, replacer, space, opts) {\n return this.stringify(obj, replacer, space, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: true\n }));\n }\n /**\n *\n * @param {Any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {object} opts\n * @returns {Promise}\n */\n\n }, {\n key: \"stringifyAsync\",\n value: function stringifyAsync(obj, replacer, space, opts) {\n return this.stringify(obj, replacer, space, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: false\n }));\n }\n /**\n * Parse Typeson back into an obejct.\n * Initial arguments works identical to those of `JSON.parse()`.\n * @param {string} text\n * @param {function} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {object} opts\n * @returns {external:JSON}\n */\n\n }, {\n key: \"parse\",\n value: function parse(text, reviver, opts) {\n opts = _objectSpread2({}, this.options, {}, opts, {\n parse: true\n });\n return this.revive(JSON.parse(text, reviver), opts);\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {string} text\n * @param {function} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {object} opts\n * @returns {external:JSON}\n */\n\n }, {\n key: \"parseSync\",\n value: function parseSync(text, reviver, opts) {\n return this.parse(text, reviver, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: true\n }));\n }\n /**\n * @param {string} text\n * @param {function} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {object} opts\n * @returns {Promise} Resolves to `external:JSON`\n */\n\n }, {\n key: \"parseAsync\",\n value: function parseAsync(text, reviver, opts) {\n return this.parse(text, reviver, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: false\n }));\n }\n /**\n *\n * @param {Any} obj\n * @param {object} stateObj\n * @param {object} [opts={}]\n * @returns {string[]|false}\n */\n\n }, {\n key: \"specialTypeNames\",\n value: function specialTypeNames(obj, stateObj) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts.returnTypeNames = true;\n return this.encapsulate(obj, stateObj, opts);\n }\n /**\n *\n * @param {Any} obj\n * @param {PlainObject} stateObj\n * @param {PlainObject} [opts={}]\n * @returns {Promise|GenericArray|PlainObject|string|false}\n */\n\n }, {\n key: \"rootTypeName\",\n value: function rootTypeName(obj, stateObj) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts.iterateNone = true;\n return this.encapsulate(obj, stateObj, opts);\n }\n /**\n * Encapsulate a complex object into a plain Object by replacing\n * registered types with plain objects representing the types data.\n *\n * This method is used internally by `Typeson.stringify()`.\n * @param {Any} obj - Object to encapsulate.\n * @param {PlainObject} stateObj\n * @param {PlainObject} opts\n * @returns {Promise|GenericArray|PlainObject|string|false}\n */\n\n }, {\n key: \"encapsulate\",\n value: function encapsulate(obj, stateObj, opts) {\n opts = _objectSpread2({\n sync: true\n }, this.options, {}, opts);\n var _opts = opts,\n sync = _opts.sync;\n var that = this,\n types = {},\n refObjs = [],\n // For checking cyclic references\n refKeys = [],\n // For checking cyclic references\n promisesDataRoot = []; // Clone the object deeply while at the same time replacing any\n // special types or cyclic reference:\n\n var cyclic = 'cyclic' in opts ? opts.cyclic : true;\n var _opts2 = opts,\n encapsulateObserver = _opts2.encapsulateObserver;\n\n var ret = _encapsulate('', obj, cyclic, stateObj || {}, promisesDataRoot);\n /**\n *\n * @param {Any} ret\n * @returns {GenericArray|PlainObject|string|false}\n */\n\n\n function finish(ret) {\n // Add `$types` to result only if we ever bumped into a\n // special type (or special case where object has own `$types`)\n var typeNames = Object.values(types);\n\n if (opts.iterateNone) {\n if (typeNames.length) {\n return typeNames[0];\n }\n\n return Typeson.getJSONType(ret);\n }\n\n if (typeNames.length) {\n if (opts.returnTypeNames) {\n return _toConsumableArray(new Set(typeNames));\n } // Special if array (or a primitive) was serialized\n // because JSON would ignore custom `$types` prop on it\n\n\n if (!ret || !isPlainObject(ret) || // Also need to handle if this is an object with its\n // own `$types` property (to avoid ambiguity)\n hasOwn$1.call(ret, '$types')) {\n ret = {\n $: ret,\n $types: {\n $: types\n }\n };\n } else {\n ret.$types = types;\n } // No special types\n\n } else if (isObject(ret) && hasOwn$1.call(ret, '$types')) {\n ret = {\n $: ret,\n $types: true\n };\n }\n\n if (opts.returnTypeNames) {\n return false;\n }\n\n return ret;\n }\n /**\n *\n * @param {Any} ret\n * @param {GenericArray} promisesData\n * @returns {Promise}\n */\n\n\n function checkPromises(_x, _x2) {\n return _checkPromises.apply(this, arguments);\n }\n /**\n *\n * @param {object} stateObj\n * @param {object} ownKeysObj\n * @param {function} cb\n * @returns {undefined}\n */\n\n\n function _checkPromises() {\n _checkPromises = _asyncToGenerator(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee2(ret, promisesData) {\n var promResults;\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return Promise.all(promisesData.map(function (pd) {\n return pd[1].p;\n }));\n\n case 2:\n promResults = _context2.sent;\n _context2.next = 5;\n return Promise.all(promResults.map(\n /*#__PURE__*/\n function () {\n var _ref = _asyncToGenerator(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee(promResult) {\n var newPromisesData, _promisesData$splice, _promisesData$splice2, prData, _prData, keyPath, cyclic, stateObj, parentObj, key, detectedType, encaps, isTypesonPromise, encaps2;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n newPromisesData = [];\n _promisesData$splice = promisesData.splice(0, 1), _promisesData$splice2 = _slicedToArray(_promisesData$splice, 1), prData = _promisesData$splice2[0];\n _prData = _slicedToArray(prData, 7), keyPath = _prData[0], cyclic = _prData[2], stateObj = _prData[3], parentObj = _prData[4], key = _prData[5], detectedType = _prData[6];\n encaps = _encapsulate(keyPath, promResult, cyclic, stateObj, newPromisesData, true, detectedType);\n isTypesonPromise = hasConstructorOf(encaps, TypesonPromise); // Handle case where an embedded custom type itself\n // returns a `Typeson.Promise`\n\n if (!(keyPath && isTypesonPromise)) {\n _context.next = 11;\n break;\n }\n\n _context.next = 8;\n return encaps.p;\n\n case 8:\n encaps2 = _context.sent;\n parentObj[key] = encaps2;\n return _context.abrupt(\"return\", checkPromises(ret, newPromisesData));\n\n case 11:\n if (keyPath) {\n parentObj[key] = encaps;\n } else if (isTypesonPromise) {\n ret = encaps.p;\n } else {\n // If this is itself a `Typeson.Promise` (because the\n // original value supplied was a `Promise` or\n // because the supplied custom type value resolved\n // to one), returning it below will be fine since\n // a `Promise` is expected anyways given current\n // config (and if not a `Promise`, it will be ready\n // as the resolve value)\n ret = encaps;\n }\n\n return _context.abrupt(\"return\", checkPromises(ret, newPromisesData));\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x3) {\n return _ref.apply(this, arguments);\n };\n }()));\n\n case 5:\n return _context2.abrupt(\"return\", ret);\n\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n return _checkPromises.apply(this, arguments);\n }\n\n function _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, cb) {\n Object.assign(stateObj, ownKeysObj);\n var vals = internalStateObjPropsToIgnore.map(function (prop) {\n var tmp = stateObj[prop];\n delete stateObj[prop];\n return tmp;\n }); // eslint-disable-next-line callback-return\n\n cb();\n internalStateObjPropsToIgnore.forEach(function (prop, i) {\n stateObj[prop] = vals[i];\n });\n }\n /**\n *\n * @param {string} keypath\n * @param {Any} value\n * @param {boolean} cyclic\n * @param {PlainObject} stateObj\n * @param {boolean} promisesData\n * @param {boolean} resolvingTypesonPromise\n * @param {string} detectedType\n * @returns {Any}\n */\n\n\n function _encapsulate(keypath, value, cyclic, stateObj, promisesData, resolvingTypesonPromise, detectedType) {\n var ret;\n var observerData = {};\n\n var $typeof = _typeof(value);\n\n var runObserver = encapsulateObserver ? function (obj) {\n var type = detectedType || stateObj.type || Typeson.getJSONType(value);\n encapsulateObserver(Object.assign(obj || observerData, {\n keypath: keypath,\n value: value,\n cyclic: cyclic,\n stateObj: stateObj,\n promisesData: promisesData,\n resolvingTypesonPromise: resolvingTypesonPromise,\n awaitingTypesonPromise: hasConstructorOf(value, TypesonPromise)\n }, {\n type: type\n }));\n } : null;\n\n if (['string', 'boolean', 'number', 'undefined'].includes($typeof)) {\n if (value === undefined || $typeof === 'number' && (isNaN(value) || value === -Infinity || value === Infinity)) {\n if (stateObj.replaced) {\n ret = value;\n } else {\n ret = replace(keypath, value, stateObj, promisesData, false, resolvingTypesonPromise, runObserver);\n }\n\n if (ret !== value) {\n observerData = {\n replaced: ret\n };\n }\n } else {\n ret = value;\n }\n\n if (runObserver) {\n runObserver();\n }\n\n return ret;\n }\n\n if (value === null) {\n if (runObserver) {\n runObserver();\n }\n\n return value;\n }\n\n if (cyclic && !stateObj.iterateIn && !stateObj.iterateUnsetNumeric && value && _typeof(value) === 'object') {\n // Options set to detect cyclic references and be able\n // to rewrite them.\n var refIndex = refObjs.indexOf(value);\n\n if (refIndex < 0) {\n if (cyclic === true) {\n refObjs.push(value);\n refKeys.push(keypath);\n }\n } else {\n types[keypath] = '#';\n\n if (runObserver) {\n runObserver({\n cyclicKeypath: refKeys[refIndex]\n });\n }\n\n return '#' + refKeys[refIndex];\n }\n }\n\n var isPlainObj = isPlainObject(value);\n var isArr = isArray(value);\n var replaced = // Running replace will cause infinite loop as will test\n // positive again\n (isPlainObj || isArr) && (!that.plainObjectReplacers.length || stateObj.replaced) || stateObj.iterateIn ? // Optimization: if plain object and no plain-object\n // replacers, don't try finding a replacer\n value : replace(keypath, value, stateObj, promisesData, isPlainObj || isArr, null, runObserver);\n var clone;\n\n if (replaced !== value) {\n ret = replaced;\n observerData = {\n replaced: replaced\n };\n } else {\n // eslint-disable-next-line no-lonely-if\n if (keypath === '' && hasConstructorOf(value, TypesonPromise)) {\n promisesData.push([keypath, value, cyclic, stateObj, undefined, undefined, stateObj.type]);\n ret = value;\n } else if (isArr && stateObj.iterateIn !== 'object' || stateObj.iterateIn === 'array') {\n clone = new Array(value.length);\n observerData = {\n clone: clone\n };\n } else if (!['function', 'symbol'].includes(_typeof(value)) && !('toJSON' in value) && !hasConstructorOf(value, TypesonPromise) && !hasConstructorOf(value, Promise) && !hasConstructorOf(value, ArrayBuffer) || isPlainObj || stateObj.iterateIn === 'object') {\n clone = {};\n\n if (stateObj.addLength) {\n clone.length = value.length;\n }\n\n observerData = {\n clone: clone\n };\n } else {\n ret = value; // Only clone vanilla objects and arrays\n }\n }\n\n if (runObserver) {\n runObserver();\n }\n\n if (opts.iterateNone) {\n return clone || ret;\n }\n\n if (!clone) {\n return ret;\n } // Iterate object or array\n\n\n if (stateObj.iterateIn) {\n var _loop = function _loop(key) {\n var ownKeysObj = {\n ownKeys: hasOwn$1.call(value, key)\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var kp = keypath + (keypath ? '.' : '') + escapeKeyPathComponent(key);\n\n var val = _encapsulate(kp, value[key], Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, key, stateObj.type]);\n } else if (val !== undefined) {\n clone[key] = val;\n }\n });\n };\n\n // eslint-disable-next-line guard-for-in\n for (var key in value) {\n _loop(key);\n }\n\n if (runObserver) {\n runObserver({\n endIterateIn: true,\n end: true\n });\n }\n } else {\n // Note: Non-indexes on arrays won't survive stringify so\n // somewhat wasteful for arrays, but so too is iterating\n // all numeric indexes on sparse arrays when not wanted\n // or filtering own keys for positive integers\n keys(value).forEach(function (key) {\n var kp = keypath + (keypath ? '.' : '') + escapeKeyPathComponent(key);\n var ownKeysObj = {\n ownKeys: true\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var val = _encapsulate(kp, value[key], Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, key, stateObj.type]);\n } else if (val !== undefined) {\n clone[key] = val;\n }\n });\n });\n\n if (runObserver) {\n runObserver({\n endIterateOwn: true,\n end: true\n });\n }\n } // Iterate array for non-own numeric properties (we can't\n // replace the prior loop though as it iterates non-integer\n // keys)\n\n\n if (stateObj.iterateUnsetNumeric) {\n var vl = value.length;\n\n var _loop2 = function _loop2(i) {\n if (!(i in value)) {\n // No need to escape numeric\n var kp = keypath + (keypath ? '.' : '') + i;\n var ownKeysObj = {\n ownKeys: false\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var val = _encapsulate(kp, undefined, Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, i, stateObj.type]);\n } else if (val !== undefined) {\n clone[i] = val;\n }\n });\n }\n };\n\n for (var i = 0; i < vl; i++) {\n _loop2(i);\n }\n\n if (runObserver) {\n runObserver({\n endIterateUnsetNumeric: true,\n end: true\n });\n }\n }\n\n return clone;\n }\n /**\n *\n * @param {string} keypath\n * @param {Any} value\n * @param {PlainObject} stateObj\n * @param {GenericArray} promisesData\n * @param {boolean} plainObject\n * @param {boolean} resolvingTypesonPromise\n * @param {function} [runObserver]\n * @returns {*}\n */\n\n\n function replace(keypath, value, stateObj, promisesData, plainObject, resolvingTypesonPromise, runObserver) {\n // Encapsulate registered types\n var replacers = plainObject ? that.plainObjectReplacers : that.nonplainObjectReplacers;\n var i = replacers.length;\n\n while (i--) {\n var replacer = replacers[i];\n\n if (replacer.test(value, stateObj)) {\n var type = replacer.type;\n\n if (that.revivers[type]) {\n // Record the type only if a corresponding reviver\n // exists. This is to support specs where only\n // replacement is done.\n // For example, ensuring deep cloning of the object,\n // or replacing a type to its equivalent without\n // the need to revive it.\n var existing = types[keypath]; // type can comprise an array of types (see test\n // \"should support intermediate types\")\n\n types[keypath] = existing ? [type].concat(existing) : type;\n }\n\n Object.assign(stateObj, {\n type: type,\n replaced: true\n });\n\n if ((sync || !replacer.replaceAsync) && !replacer.replace) {\n if (runObserver) {\n runObserver({\n typeDetected: true\n });\n }\n\n return _encapsulate(keypath, value, cyclic && 'readonly', stateObj, promisesData, resolvingTypesonPromise, type);\n }\n\n if (runObserver) {\n runObserver({\n replacing: true\n });\n } // Now, also traverse the result in case it contains its\n // own types to replace\n\n\n var replaceMethod = sync || !replacer.replaceAsync ? 'replace' : 'replaceAsync';\n return _encapsulate(keypath, replacer[replaceMethod](value, stateObj), cyclic && 'readonly', stateObj, promisesData, resolvingTypesonPromise, type);\n }\n }\n\n return value;\n }\n\n return promisesDataRoot.length ? sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Sync method requested but async result obtained');\n }() : Promise.resolve(checkPromises(ret, promisesDataRoot)).then(finish) : !sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Async method requested but sync result obtained');\n }() // If this is a synchronous request for stringification, yet\n // a promise is the result, we don't want to resolve leading\n // to an async result, so we return an array to avoid\n // ambiguity\n : opts.stringification && sync ? [finish(ret)] : sync ? finish(ret) : Promise.resolve(finish(ret));\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {*} obj\n * @param {object} stateObj\n * @param {object} opts\n * @returns {*}\n */\n\n }, {\n key: \"encapsulateSync\",\n value: function encapsulateSync(obj, stateObj, opts) {\n return this.encapsulate(obj, stateObj, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: true\n }));\n }\n /**\n * @param {*} obj\n * @param {object} stateObj\n * @param {object} opts\n * @returns {*}\n */\n\n }, {\n key: \"encapsulateAsync\",\n value: function encapsulateAsync(obj, stateObj, opts) {\n return this.encapsulate(obj, stateObj, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: false\n }));\n }\n /**\n * Revive an encapsulated object.\n * This method is used internally by `Typeson.parse()`.\n * @param {object} obj - Object to revive. If it has `$types` member, the\n * properties that are listed there will be replaced with its true type\n * instead of just plain objects.\n * @param {object} opts\n * @throws TypeError If mismatch between sync/async type and result\n * @returns {Promise|*} If async, returns a Promise that resolves to `*`\n */\n\n }, {\n key: \"revive\",\n value: function revive(obj, opts) {\n var types = obj && obj.$types; // No type info added. Revival not needed.\n\n if (!types) {\n return obj;\n } // Object happened to have own `$types` property but with\n // no actual types, so we unescape and return that object\n\n\n if (types === true) {\n return obj.$;\n }\n\n opts = _objectSpread2({\n sync: true\n }, this.options, {}, opts);\n var _opts3 = opts,\n sync = _opts3.sync;\n var keyPathResolutions = [];\n var stateObj = {};\n var ignore$Types = true; // Special when root object is not a trivial Object, it will\n // be encapsulated in `$`. It will also be encapsulated in\n // `$` if it has its own `$` property to avoid ambiguity\n\n if (types.$ && isPlainObject(types.$)) {\n obj = obj.$;\n types = types.$;\n ignore$Types = false;\n }\n\n var that = this;\n /**\n * @callback RevivalReducer\n * @param {Any} value\n * @param {string} type\n * @returns {Any}\n */\n\n /**\n *\n * @param {string} type\n * @param {Any} val\n * @returns {[type]} [description]\n */\n\n function executeReviver(type, val) {\n var _ref2 = that.revivers[type] || [],\n _ref3 = _slicedToArray(_ref2, 1),\n reviver = _ref3[0];\n\n if (!reviver) {\n throw new Error('Unregistered type: ' + type);\n } // Only `sync` expected here, as problematic async would\n // be missing both `reviver` and `reviverAsync`, and\n // encapsulation shouldn't have added types, so\n // should have made an early exit\n\n\n if (sync && !('revive' in reviver)) {\n // Just return value as is\n return val;\n }\n\n return reviver[sync && reviver.revive ? 'revive' : !sync && reviver.reviveAsync ? 'reviveAsync' : 'revive'](val, stateObj);\n }\n /**\n *\n * @returns {void|TypesonPromise}\n */\n\n\n function revivePlainObjects() {\n // const references = [];\n // const reviveTypes = [];\n var plainObjectTypes = [];\n Object.entries(types).forEach(function (_ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n keypath = _ref5[0],\n type = _ref5[1];\n\n if (type === '#') {\n /*\n references.push({\n keypath,\n reference: getByKeyPath(obj, keypath)\n });\n */\n return;\n }\n\n [].concat(type).forEach(function (type) {\n var _ref6 = that.revivers[type] || [null, {}],\n _ref7 = _slicedToArray(_ref6, 2),\n plain = _ref7[1].plain;\n\n if (!plain) {\n // reviveTypes.push({keypath, type});\n return;\n }\n\n plainObjectTypes.push({\n keypath: keypath,\n type: type\n });\n delete types[keypath]; // Avoid repeating\n });\n });\n\n if (!plainObjectTypes.length) {\n return undefined;\n } // console.log(plainObjectTypes.sort(nestedPathsFirst));\n\n /**\n * @typedef {PlainObject} PlainObjectType\n * @property {string} keypath\n * @property {string} type\n */\n\n\n return plainObjectTypes.sort(nestedPathsFirst).reduce(function reducer(possibleTypesonPromise, _ref8) {\n var keypath = _ref8.keypath,\n type = _ref8.type;\n\n if (isThenable(possibleTypesonPromise)) {\n return possibleTypesonPromise.then(function (val) {\n return reducer(val, {\n keypath: keypath,\n type: type\n });\n });\n } // console.log('obj', JSON.stringify(keypath), obj);\n\n\n var val = getByKeyPath(obj, keypath);\n val = executeReviver(type, val);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n return val.then(function (v) {\n var newVal = setAtKeyPath(obj, keypath, v);\n\n if (newVal === v) {\n obj = newVal;\n }\n\n return undefined;\n });\n }\n\n var newVal = setAtKeyPath(obj, keypath, val);\n\n if (newVal === val) {\n obj = newVal;\n }\n\n return undefined;\n }, undefined // This argument must be explicit\n ); // references.forEach(({keypath, reference}) => {});\n // reviveTypes.sort(nestedPathsFirst).forEach(() => {});\n }\n\n var revivalPromises = [];\n /**\n *\n * @param {string} keypath\n * @param {Any} value\n * @param {?(Array|object)} target\n * @param {Array|object} [clone]\n * @param {string} [key]\n * @returns {Any}\n */\n\n function _revive(keypath, value, target, clone, key) {\n if (ignore$Types && keypath === '$types') {\n return undefined;\n }\n\n var type = types[keypath];\n var isArr = isArray(value);\n\n if (isArr || isPlainObject(value)) {\n var _clone = isArr ? new Array(value.length) : {}; // Iterate object or array\n\n\n keys(value).forEach(function (k) {\n var val = _revive(keypath + (keypath ? '.' : '') + escapeKeyPathComponent(k), value[k], target || _clone, _clone, k);\n\n var set = function set(v) {\n if (hasConstructorOf(v, Undefined)) {\n _clone[k] = undefined;\n } else if (v !== undefined) {\n _clone[k] = v;\n }\n\n return v;\n };\n\n if (hasConstructorOf(val, TypesonPromise)) {\n revivalPromises.push(val.then(function (ret) {\n return set(ret);\n }));\n } else {\n set(val);\n }\n });\n value = _clone; // Try to resolve cyclic reference as soon as available\n\n while (keyPathResolutions.length) {\n var _keyPathResolutions$ = _slicedToArray(keyPathResolutions[0], 4),\n _target = _keyPathResolutions$[0],\n keyPath = _keyPathResolutions$[1],\n _clone2 = _keyPathResolutions$[2],\n k = _keyPathResolutions$[3];\n\n var val = getByKeyPath(_target, keyPath); // Typeson.Undefined not expected here as not cyclic or\n // `undefined`\n\n if (val !== undefined) {\n _clone2[k] = val;\n } else {\n break;\n }\n\n keyPathResolutions.splice(0, 1);\n }\n }\n\n if (!type) {\n return value;\n }\n\n if (type === '#') {\n var _ret = getByKeyPath(target, value.slice(1));\n\n if (_ret === undefined) {\n // Cyclic reference not yet available\n keyPathResolutions.push([target, value.slice(1), clone, key]);\n }\n\n return _ret;\n } // `type` can be an array here\n\n\n return [].concat(type).reduce(function reducer(val, typ) {\n if (hasConstructorOf(val, TypesonPromise)) {\n return val.then(function (v) {\n // TypesonPromise here too\n return reducer(v, typ);\n });\n }\n\n return executeReviver(typ, val);\n }, value);\n }\n /**\n *\n * @param {Any} retrn\n * @returns {undefined|Any}\n */\n\n\n function checkUndefined(retrn) {\n return hasConstructorOf(retrn, Undefined) ? undefined : retrn;\n }\n\n var possibleTypesonPromise = revivePlainObjects();\n var ret;\n\n if (hasConstructorOf(possibleTypesonPromise, TypesonPromise)) {\n ret = possibleTypesonPromise.then(function () {\n return obj;\n });\n } else {\n ret = _revive('', obj, null);\n\n if (revivalPromises.length) {\n // Ensure children resolved\n ret = TypesonPromise.resolve(ret).then(function (r) {\n return TypesonPromise.all([// May be a TypesonPromise or not\n r].concat(revivalPromises));\n }).then(function (_ref9) {\n var _ref10 = _slicedToArray(_ref9, 1),\n r = _ref10[0];\n\n return r;\n });\n }\n }\n\n return isThenable(ret) ? sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Sync method requested but async result obtained');\n }() : hasConstructorOf(ret, TypesonPromise) ? ret.p.then(checkUndefined) : ret : !sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Async method requested but sync result obtained');\n }() : sync ? checkUndefined(ret) : Promise.resolve(checkUndefined(ret));\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {Any} obj\n * @param {object} opts\n * @returns {Any}\n */\n\n }, {\n key: \"reviveSync\",\n value: function reviveSync(obj, opts) {\n return this.revive(obj, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: true\n }));\n }\n /**\n * @param {Any} obj\n * @param {object} opts\n * @returns {Promise} Resolves to `*`\n */\n\n }, {\n key: \"reviveAsync\",\n value: function reviveAsync(obj, opts) {\n return this.revive(obj, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: false\n }));\n }\n /**\n * Register types.\n * For examples on how to use this method, see\n * {@link https://github.com/dfahlander/typeson-registry/tree/master/types}.\n * @param {object.[]} typeSpecSets - Types and\n * their functions [test, encapsulate, revive];\n * @param {object} opts\n * @returns {Typeson}\n */\n\n }, {\n key: \"register\",\n value: function register(typeSpecSets, opts) {\n opts = opts || {};\n [].concat(typeSpecSets).forEach(function R(typeSpec) {\n var _this = this;\n\n // Allow arrays of arrays of arrays...\n if (isArray(typeSpec)) {\n return typeSpec.map(function (typSpec) {\n return R.call(_this, typSpec);\n });\n }\n\n typeSpec && keys(typeSpec).forEach(function (typeId) {\n if (typeId === '#') {\n throw new TypeError('# cannot be used as a type name as it is reserved ' + 'for cyclic objects');\n } else if (Typeson.JSON_TYPES.includes(typeId)) {\n throw new TypeError('Plain JSON object types are reserved as type names');\n }\n\n var spec = typeSpec[typeId];\n var replacers = spec && spec.testPlainObjects ? this.plainObjectReplacers : this.nonplainObjectReplacers;\n var existingReplacer = replacers.filter(function (r) {\n return r.type === typeId;\n });\n\n if (existingReplacer.length) {\n // Remove existing spec and replace with this one.\n replacers.splice(replacers.indexOf(existingReplacer[0]), 1);\n delete this.revivers[typeId];\n delete this.types[typeId];\n }\n\n if (typeof spec === 'function') {\n // Support registering just a class without replacer/reviver\n var Class = spec;\n spec = {\n test: function test(x) {\n return x && x.constructor === Class;\n },\n replace: function replace(x) {\n return _objectSpread2({}, x);\n },\n revive: function revive(x) {\n return Object.assign(Object.create(Class.prototype), x);\n }\n };\n } else if (isArray(spec)) {\n var _spec = spec,\n _spec2 = _slicedToArray(_spec, 3),\n test = _spec2[0],\n replace = _spec2[1],\n revive = _spec2[2];\n\n spec = {\n test: test,\n replace: replace,\n revive: revive\n };\n }\n\n if (!spec || !spec.test) {\n return;\n }\n\n var replacerObj = {\n type: typeId,\n test: spec.test.bind(spec)\n };\n\n if (spec.replace) {\n replacerObj.replace = spec.replace.bind(spec);\n }\n\n if (spec.replaceAsync) {\n replacerObj.replaceAsync = spec.replaceAsync.bind(spec);\n }\n\n var start = typeof opts.fallback === 'number' ? opts.fallback : opts.fallback ? 0 : Infinity;\n\n if (spec.testPlainObjects) {\n this.plainObjectReplacers.splice(start, 0, replacerObj);\n } else {\n this.nonplainObjectReplacers.splice(start, 0, replacerObj);\n } // Todo: We might consider a testAsync type\n\n\n if (spec.revive || spec.reviveAsync) {\n var reviverObj = {};\n\n if (spec.revive) {\n reviverObj.revive = spec.revive.bind(spec);\n }\n\n if (spec.reviveAsync) {\n reviverObj.reviveAsync = spec.reviveAsync.bind(spec);\n }\n\n this.revivers[typeId] = [reviverObj, {\n plain: spec.testPlainObjects\n }];\n } // Record to be retrieved via public types property.\n\n\n this.types[typeId] = spec;\n }, this);\n }, this);\n return this;\n }\n }]);\n\n return Typeson;\n }();\n /**\n * We keep this function minimized so if using two instances of this\n * library, where one is minimized and one is not, it will still work\n * with `hasConstructorOf`.\n * @class\n */\n\n\n var Undefined = function Undefined() {\n _classCallCheck(this, Undefined);\n }; // eslint-disable-line space-before-blocks\n\n\n Undefined.__typeson__type__ = 'TypesonUndefined'; // The following provide classes meant to avoid clashes with other values\n // To insist `undefined` should be added\n\n Typeson.Undefined = Undefined; // To support async encapsulation/stringification\n\n Typeson.Promise = TypesonPromise; // Some fundamental type-checking utilities\n\n Typeson.isThenable = isThenable;\n Typeson.toStringTag = toStringTag;\n Typeson.hasConstructorOf = hasConstructorOf;\n Typeson.isObject = isObject;\n Typeson.isPlainObject = isPlainObject;\n Typeson.isUserObject = isUserObject;\n Typeson.escapeKeyPathComponent = escapeKeyPathComponent;\n Typeson.unescapeKeyPathComponent = unescapeKeyPathComponent;\n Typeson.getByKeyPath = getByKeyPath;\n Typeson.getJSONType = getJSONType;\n Typeson.JSON_TYPES = ['null', 'boolean', 'number', 'string', 'array', 'object'];\n\n return Typeson;\n\n})));\n", "function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n/**\n* @callback TypesonFulfilled\n* @returns {Promise|any}\n*/\n\n/**\n* @callback TypesonRejected\n* @returns {Promise|any}\n*/\n\n/**\n * @callback TypesonResolve\n * @param {any} value\n * @returns {Promise}\n */\n\n/**\n * @callback TypesonReject\n * @param {Error|any} error\n * @returns {Promise}\n */\n\n/**\n * @callback TypesonResolveReject\n * @param {TypesonResolve} typesonResolve\n * @param {TypesonReject} typesonReject\n * @returns {Promise}\n */\n\n/* eslint-disable block-spacing, space-before-function-paren,\n space-before-blocks, space-infix-ops, semi, promise/avoid-new,\n jsdoc/require-jsdoc */\n\n/**\n * We keep this function minimized so if using two instances of this\n * library, where one is minimized and one is not, it will still work\n * with `hasConstructorOf`.\n * With ES6 classes, we may be able to simply use `class TypesonPromise\n * extends Promise` and add a string tag for detection.\n * @param {TypesonResolveReject} f\n */\nvar TypesonPromise = function TypesonPromise(f) {\n _classCallCheck(this, TypesonPromise);\n\n this.p = new Promise(f);\n};\n/* eslint-enable block-spacing, space-before-function-paren,\n space-before-blocks, space-infix-ops, semi, promise/avoid-new,\n jsdoc/require-jsdoc */\n// eslint-disable-next-line max-len\n// class TypesonPromise extends Promise {get[Symbol.toStringTag](){return 'TypesonPromise'};} // eslint-disable-line keyword-spacing, space-before-function-paren, space-before-blocks, block-spacing, semi\n\n\nTypesonPromise.__typeson__type__ = 'TypesonPromise'; // Note: core-js-bundle provides a `Symbol` polyfill\n\n/* istanbul ignore else */\n\nif (typeof Symbol !== 'undefined') {\n // Ensure `isUserObject` will return `false` for `TypesonPromise`\n TypesonPromise.prototype[Symbol.toStringTag] = 'TypesonPromise';\n}\n/**\n *\n * @param {TypesonFulfilled} [onFulfilled]\n * @param {TypesonRejected} [onRejected]\n * @returns {TypesonPromise}\n */\n\n\nTypesonPromise.prototype.then = function (onFulfilled, onRejected) {\n var _this = this;\n\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n // eslint-disable-next-line promise/catch-or-return\n _this.p.then(function (res) {\n // eslint-disable-next-line promise/always-return\n typesonResolve(onFulfilled ? onFulfilled(res) : res);\n })[\"catch\"](function (res) {\n return onRejected ? onRejected(res) : Promise.reject(res);\n }).then(typesonResolve, typesonReject);\n });\n};\n/**\n *\n * @param {TypesonRejected} onRejected\n * @returns {TypesonPromise}\n */\n\n\nTypesonPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\n/**\n *\n * @param {any} v\n * @returns {TypesonPromise}\n */\n\n\nTypesonPromise.resolve = function (v) {\n return new TypesonPromise(function (typesonResolve) {\n typesonResolve(v);\n });\n};\n/**\n *\n * @param {any} v\n * @returns {TypesonPromise}\n */\n\n\nTypesonPromise.reject = function (v) {\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n typesonReject(v);\n });\n};\n\n['all', 'race'].forEach(function (meth) {\n /**\n *\n * @param {Promise[]} promArr\n * @returns {TypesonPromise}\n */\n TypesonPromise[meth] = function (promArr) {\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n // eslint-disable-next-line promise/catch-or-return\n Promise[meth](promArr.map(function (prom) {\n return prom && prom.constructor && prom.constructor.__typeson__type__ === 'TypesonPromise' ? prom.p : prom;\n })).then(typesonResolve, typesonReject);\n });\n };\n});\n\nvar _ref = {},\n toStr = _ref.toString,\n hasOwn$1 = {}.hasOwnProperty,\n getProto = Object.getPrototypeOf,\n fnToString = hasOwn$1.toString;\n/**\n * Second argument not in use internally, but provided for utility.\n * @param {any} v\n * @param {boolean} catchCheck\n * @returns {boolean}\n */\n\nfunction isThenable(v, catchCheck) {\n return isObject(v) && typeof v.then === 'function' && (!catchCheck || typeof v[\"catch\"] === 'function');\n}\n/**\n *\n * @param {any} val\n * @returns {string}\n */\n\n\nfunction toStringTag(val) {\n return toStr.call(val).slice(8, -1);\n}\n/**\n * This function is dependent on both constructors\n * being identical so any minimization is expected of both.\n * @param {any} a\n * @param {GenericFunction} b\n * @returns {boolean}\n */\n\n\nfunction hasConstructorOf(a, b) {\n if (!a || _typeof(a) !== 'object') {\n return false;\n }\n\n var proto = getProto(a);\n\n if (!proto) {\n return b === null;\n }\n\n var Ctor = hasOwn$1.call(proto, 'constructor') && proto.constructor;\n\n if (typeof Ctor !== 'function') {\n return b === null;\n }\n\n if (b === Ctor) {\n return true;\n }\n\n if (b !== null && fnToString.call(Ctor) === fnToString.call(b)) {\n return true;\n }\n\n if (typeof b === 'function' && typeof Ctor.__typeson__type__ === 'string' && Ctor.__typeson__type__ === b.__typeson__type__) {\n return true;\n }\n\n return false;\n}\n/**\n *\n * @param {any} val\n * @returns {boolean}\n */\n\n\nfunction isPlainObject(val) {\n // Mirrors jQuery's\n if (!val || toStringTag(val) !== 'Object') {\n return false;\n }\n\n var proto = getProto(val);\n\n if (!proto) {\n // `Object.create(null)`\n return true;\n }\n\n return hasConstructorOf(val, Object);\n}\n/**\n *\n * @param {any} val\n * @returns {boolean}\n */\n\n\nfunction isUserObject(val) {\n if (!val || toStringTag(val) !== 'Object') {\n return false;\n }\n\n var proto = getProto(val);\n\n if (!proto) {\n // `Object.create(null)`\n return true;\n }\n\n return hasConstructorOf(val, Object) || isUserObject(proto);\n}\n/**\n *\n * @param {any} v\n * @returns {boolean}\n */\n\n\nfunction isObject(v) {\n return v && _typeof(v) === 'object';\n}\n/**\n *\n * @param {string} keyPathComponent\n * @returns {string}\n */\n\n\nfunction escapeKeyPathComponent(keyPathComponent) {\n return keyPathComponent.replace(/~/g, '~0').replace(/\\./g, '~1');\n}\n/**\n *\n * @param {string} keyPathComponent\n * @returns {string}\n */\n\n\nfunction unescapeKeyPathComponent(keyPathComponent) {\n return keyPathComponent.replace(/~1/g, '.').replace(/~0/g, '~');\n}\n/**\n * @param {PlainObject|GenericArray} obj\n * @param {string} keyPath\n * @returns {any}\n */\n\n\nfunction getByKeyPath(obj, keyPath) {\n if (keyPath === '') {\n return obj;\n }\n\n var period = keyPath.indexOf('.');\n\n if (period > -1) {\n var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))];\n return innerObj === undefined ? undefined : getByKeyPath(innerObj, keyPath.slice(period + 1));\n }\n\n return obj[unescapeKeyPathComponent(keyPath)];\n}\n/**\n *\n * @param {PlainObject} obj\n * @param {string} keyPath\n * @param {any} value\n * @returns {any}\n */\n\n\nfunction setAtKeyPath(obj, keyPath, value) {\n if (keyPath === '') {\n return value;\n }\n\n var period = keyPath.indexOf('.');\n\n if (period > -1) {\n var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))];\n return setAtKeyPath(innerObj, keyPath.slice(period + 1), value);\n }\n\n obj[unescapeKeyPathComponent(keyPath)] = value;\n return obj;\n}\n/**\n *\n * @param {external:JSON} value\n * @returns {\"null\"|\"array\"|\"undefined\"|\"boolean\"|\"number\"|\"string\"|\n * \"object\"|\"symbol\"}\n */\n\n\nfunction getJSONType(value) {\n return value === null ? 'null' : Array.isArray(value) ? 'array' : _typeof(value);\n}\n\nfunction _await(value, then, direct) {\n if (direct) {\n return then ? then(value) : value;\n }\n\n if (!value || !value.then) {\n value = Promise.resolve(value);\n }\n\n return then ? value.then(then) : value;\n}\n\nvar keys = Object.keys,\n isArray = Array.isArray,\n hasOwn = {}.hasOwnProperty,\n internalStateObjPropsToIgnore = ['type', 'replaced', 'iterateIn', 'iterateUnsetNumeric'];\n/**\n * Handle plain object revivers first so reference setting can use\n * revived type (e.g., array instead of object); assumes revived\n * has same structure or will otherwise break subsequent references.\n * @param {PlainObjectType} a\n * @param {PlainObjectType} b\n * @returns {1|-1|boolean}\n */\n\nfunction _async(f) {\n return function () {\n for (var args = [], i = 0; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n\n try {\n return Promise.resolve(f.apply(this, args));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n/**\n * @callback Tester\n * @param {any} value\n * @param {StateObject} stateobj\n * @returns {boolean}\n */\n\n/**\n* @callback Replacer\n* @param {any} value\n* @param {StateObject} stateObj\n* @returns {any} Should be JSON-stringifiable\n*/\n\n/**\n* @callback Reviver\n* @param {JSON} value\n* @param {StateObject} stateObj\n* @returns {any}\n*/\n\n/**\n* @typedef {PlainObject} TypesonOptions\n* @property {boolean} stringification Auto-set by `stringify`\n*/\n\n/**\n * An instance of this class can be used to call `stringify()` and `parse()`.\n * Typeson resolves cyclic references by default. Can also be extended to\n * support custom types using the register() method.\n *\n * @class\n * @param {{cyclic: boolean}} [options] - if cyclic (default true),\n * cyclic references will be handled gracefully.\n */\n\n\nfunction _invoke(body, then) {\n var result = body();\n\n if (result && result.then) {\n return result.then(then);\n }\n\n return then(result);\n}\n\nfunction nestedPathsFirst(a, b) {\n if (a.keypath === '') {\n return -1;\n }\n\n var as = a.keypath.match(/\\./g) || 0;\n var bs = b.keypath.match(/\\./g) || 0;\n\n if (as) {\n as = as.length;\n }\n\n if (bs) {\n bs = bs.length;\n }\n\n return as > bs ? -1 : as < bs ? 1 : a.keypath < b.keypath ? -1 : a.keypath > b.keypath;\n}\n\nvar Typeson = /*#__PURE__*/function () {\n /**\n * @param {TypesonOptions} options\n */\n function Typeson(options) {\n _classCallCheck(this, Typeson);\n\n this.options = options; // Replacers signature: replace (value). Returns falsy if not\n // replacing. Otherwise ['Date', value.getTime()]\n\n this.plainObjectReplacers = [];\n this.nonplainObjectReplacers = []; // Revivers: [{type => reviver}, {plain: boolean}].\n // Sample: [{'Date': value => new Date(value)}, {plain: false}]\n\n this.revivers = {};\n /** Types registered via `register()`. */\n\n this.types = {};\n }\n /**\n * @typedef {null|boolean|number|string|GenericArray|PlainObject} JSON\n */\n\n /**\n * @callback JSONReplacer\n * @param {\"\"|string} key\n * @param {JSON} value\n * @returns {number|string|boolean|null|PlainObject|undefined}\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The%20replacer%20parameter\n */\n\n /**\n * Serialize given object to Typeson.\n * Initial arguments work identical to those of `JSON.stringify`.\n * The `replacer` argument has nothing to do with our replacers.\n * @param {any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {TypesonOptions} opts\n * @returns {string|Promise} Promise resolves to a string\n */\n\n\n _createClass(Typeson, [{\n key: \"stringify\",\n value: function stringify(obj, replacer, space, opts) {\n opts = _objectSpread2(_objectSpread2(_objectSpread2({}, this.options), opts), {}, {\n stringification: true\n });\n var encapsulated = this.encapsulate(obj, null, opts);\n\n if (isArray(encapsulated)) {\n return JSON.stringify(encapsulated[0], replacer, space);\n }\n\n return encapsulated.then(function (res) {\n return JSON.stringify(res, replacer, space);\n });\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {TypesonOptions} opts\n * @returns {string}\n */\n\n }, {\n key: \"stringifySync\",\n value: function stringifySync(obj, replacer, space, opts) {\n return this.stringify(obj, replacer, space, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: true\n }));\n }\n /**\n *\n * @param {any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {TypesonOptions} opts\n * @returns {Promise}\n */\n\n }, {\n key: \"stringifyAsync\",\n value: function stringifyAsync(obj, replacer, space, opts) {\n return this.stringify(obj, replacer, space, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: false\n }));\n }\n /**\n * @callback JSONReviver\n * @param {string} key\n * @param {JSON} value\n * @returns {JSON}\n */\n\n /**\n * Parse Typeson back into an obejct.\n * Initial arguments works identical to those of `JSON.parse()`.\n * @param {string} text\n * @param {JSONReviver} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {TypesonOptions} opts\n * @returns {external:JSON}\n */\n\n }, {\n key: \"parse\",\n value: function parse(text, reviver, opts) {\n opts = _objectSpread2(_objectSpread2(_objectSpread2({}, this.options), opts), {}, {\n parse: true\n });\n return this.revive(JSON.parse(text, reviver), opts);\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {string} text\n * @param {JSONReviver} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {TypesonOptions} opts\n * @returns {external:JSON}\n */\n\n }, {\n key: \"parseSync\",\n value: function parseSync(text, reviver, opts) {\n return this.parse(text, reviver, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: true\n }));\n }\n /**\n * @param {string} text\n * @param {JSONReviver} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {TypesonOptions} opts\n * @returns {Promise} Resolves to `external:JSON`\n */\n\n }, {\n key: \"parseAsync\",\n value: function parseAsync(text, reviver, opts) {\n return this.parse(text, reviver, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: false\n }));\n }\n /**\n * @typedef {} StateObject\n */\n\n /**\n *\n * @param {any} obj\n * @param {StateObject} stateObj\n * @param {TypesonOptions} [opts={}]\n * @returns {string[]|false}\n */\n\n }, {\n key: \"specialTypeNames\",\n value: function specialTypeNames(obj, stateObj) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts.returnTypeNames = true;\n return this.encapsulate(obj, stateObj, opts);\n }\n /**\n *\n * @param {any} obj\n * @param {PlainObject} stateObj\n * @param {PlainObject} [opts={}]\n * @returns {Promise|GenericArray|PlainObject|string|false}\n */\n\n }, {\n key: \"rootTypeName\",\n value: function rootTypeName(obj, stateObj) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts.iterateNone = true;\n return this.encapsulate(obj, stateObj, opts);\n }\n /**\n * Encapsulate a complex object into a plain Object by replacing\n * registered types with plain objects representing the types data.\n *\n * This method is used internally by `Typeson.stringify()`.\n * @param {any} obj - Object to encapsulate.\n * @param {PlainObject} stateObj\n * @param {PlainObject} opts\n * @returns {Promise|GenericArray|PlainObject|string|false}\n */\n\n }, {\n key: \"encapsulate\",\n value: function encapsulate(obj, stateObj, opts) {\n /**\n *\n * @param {any} ret\n * @param {GenericArray} promisesData\n * @returns {Promise}\n */\n var checkPromises = _async(function (ret, promisesData) {\n return _await(Promise.all(promisesData.map(function (pd) {\n return pd[1].p;\n })), function (promResults) {\n return _await(Promise.all(promResults.map(_async(function (promResult) {\n var _exit = false;\n var newPromisesData = [];\n\n var _promisesData$splice = promisesData.splice(0, 1),\n _promisesData$splice2 = _slicedToArray(_promisesData$splice, 1),\n prData = _promisesData$splice2[0];\n\n var _prData = _slicedToArray(prData, 7),\n keyPath = _prData[0],\n cyclic = _prData[2],\n stateObj = _prData[3],\n parentObj = _prData[4],\n key = _prData[5],\n detectedType = _prData[6];\n\n var encaps = _encapsulate(keyPath, promResult, cyclic, stateObj, newPromisesData, true, detectedType);\n\n var isTypesonPromise = hasConstructorOf(encaps, TypesonPromise); // Handle case where an embedded custom type itself\n // returns a `Typeson.Promise`\n\n return _invoke(function () {\n if (keyPath && isTypesonPromise) {\n return _await(encaps.p, function (encaps2) {\n parentObj[key] = encaps2;\n _exit = true;\n return checkPromises(ret, newPromisesData);\n });\n }\n }, function (_result) {\n if (_exit) return _result;\n\n if (keyPath) {\n parentObj[key] = encaps;\n } else if (isTypesonPromise) {\n ret = encaps.p;\n } else {\n // If this is itself a `Typeson.Promise` (because the\n // original value supplied was a `Promise` or\n // because the supplied custom type value resolved\n // to one), returning it below will be fine since\n // a `Promise` is expected anyways given current\n // config (and if not a `Promise`, it will be ready\n // as the resolve value)\n ret = encaps;\n }\n\n return checkPromises(ret, newPromisesData);\n });\n }))), function () {\n return ret;\n });\n });\n });\n /**\n * @typedef {PlainObject} OwnKeysObject\n * @property {boolean} ownKeys\n */\n\n /**\n * @callback BuiltinStateObjectPropertiesCallback\n * @returns {void}\n */\n\n /**\n *\n * @param {StateObject} stateObj\n * @param {OwnKeysObject} ownKeysObj\n * @param {BuiltinStateObjectPropertiesCallback} cb\n * @returns {undefined}\n */\n\n\n opts = _objectSpread2(_objectSpread2({\n sync: true\n }, this.options), opts);\n var _opts = opts,\n sync = _opts.sync;\n var that = this,\n types = {},\n refObjs = [],\n // For checking cyclic references\n refKeys = [],\n // For checking cyclic references\n promisesDataRoot = []; // Clone the object deeply while at the same time replacing any\n // special types or cyclic reference:\n\n var cyclic = 'cyclic' in opts ? opts.cyclic : true;\n var _opts2 = opts,\n encapsulateObserver = _opts2.encapsulateObserver;\n\n var ret = _encapsulate('', obj, cyclic, stateObj || {}, promisesDataRoot);\n /**\n *\n * @param {any} ret\n * @returns {GenericArray|PlainObject|string|false}\n */\n\n\n function finish(ret) {\n // Add `$types` to result only if we ever bumped into a\n // special type (or special case where object has own `$types`)\n var typeNames = Object.values(types);\n\n if (opts.iterateNone) {\n if (typeNames.length) {\n return typeNames[0];\n }\n\n return Typeson.getJSONType(ret);\n }\n\n if (typeNames.length) {\n if (opts.returnTypeNames) {\n return _toConsumableArray(new Set(typeNames));\n } // Special if array (or a primitive) was serialized\n // because JSON would ignore custom `$types` prop on it\n\n\n if (!ret || !isPlainObject(ret) || // Also need to handle if this is an object with its\n // own `$types` property (to avoid ambiguity)\n hasOwn.call(ret, '$types')) {\n ret = {\n $: ret,\n $types: {\n $: types\n }\n };\n } else {\n ret.$types = types;\n } // No special types\n\n } else if (isObject(ret) && hasOwn.call(ret, '$types')) {\n ret = {\n $: ret,\n $types: true\n };\n }\n\n if (opts.returnTypeNames) {\n return false;\n }\n\n return ret;\n }\n\n function _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, cb) {\n Object.assign(stateObj, ownKeysObj);\n var vals = internalStateObjPropsToIgnore.map(function (prop) {\n var tmp = stateObj[prop];\n delete stateObj[prop];\n return tmp;\n }); // eslint-disable-next-line node/callback-return\n\n cb();\n internalStateObjPropsToIgnore.forEach(function (prop, i) {\n stateObj[prop] = vals[i];\n });\n }\n /**\n *\n * @param {string} keypath\n * @param {any} value\n * @param {boolean} cyclic\n * @param {PlainObject} stateObj\n * @param {boolean} promisesData\n * @param {boolean} resolvingTypesonPromise\n * @param {string} detectedType\n * @returns {any}\n */\n\n\n function _encapsulate(keypath, value, cyclic, stateObj, promisesData, resolvingTypesonPromise, detectedType) {\n var ret;\n var observerData = {};\n\n var $typeof = _typeof(value);\n\n var runObserver = encapsulateObserver ? function (obj) {\n var type = detectedType || stateObj.type || Typeson.getJSONType(value);\n encapsulateObserver(Object.assign(obj || observerData, {\n keypath: keypath,\n value: value,\n cyclic: cyclic,\n stateObj: stateObj,\n promisesData: promisesData,\n resolvingTypesonPromise: resolvingTypesonPromise,\n awaitingTypesonPromise: hasConstructorOf(value, TypesonPromise)\n }, {\n type: type\n }));\n } : null;\n\n if (['string', 'boolean', 'number', 'undefined'].includes($typeof)) {\n if (value === undefined || Number.isNaN(value) || value === Number.NEGATIVE_INFINITY || value === Number.POSITIVE_INFINITY) {\n ret = stateObj.replaced ? value : replace(keypath, value, stateObj, promisesData, false, resolvingTypesonPromise, runObserver);\n\n if (ret !== value) {\n observerData = {\n replaced: ret\n };\n }\n } else {\n ret = value;\n }\n\n if (runObserver) {\n runObserver();\n }\n\n return ret;\n }\n\n if (value === null) {\n if (runObserver) {\n runObserver();\n }\n\n return value;\n }\n\n if (cyclic && !stateObj.iterateIn && !stateObj.iterateUnsetNumeric && value && _typeof(value) === 'object') {\n // Options set to detect cyclic references and be able\n // to rewrite them.\n var refIndex = refObjs.indexOf(value);\n\n if (refIndex < 0) {\n if (cyclic === true) {\n refObjs.push(value);\n refKeys.push(keypath);\n }\n } else {\n types[keypath] = '#';\n\n if (runObserver) {\n runObserver({\n cyclicKeypath: refKeys[refIndex]\n });\n }\n\n return '#' + refKeys[refIndex];\n }\n }\n\n var isPlainObj = isPlainObject(value);\n var isArr = isArray(value);\n var replaced = // Running replace will cause infinite loop as will test\n // positive again\n (isPlainObj || isArr) && (!that.plainObjectReplacers.length || stateObj.replaced) || stateObj.iterateIn ? // Optimization: if plain object and no plain-object\n // replacers, don't try finding a replacer\n value : replace(keypath, value, stateObj, promisesData, isPlainObj || isArr, null, runObserver);\n var clone;\n\n if (replaced !== value) {\n ret = replaced;\n observerData = {\n replaced: replaced\n };\n } else {\n // eslint-disable-next-line no-lonely-if\n if (keypath === '' && hasConstructorOf(value, TypesonPromise)) {\n promisesData.push([keypath, value, cyclic, stateObj, undefined, undefined, stateObj.type]);\n ret = value;\n } else if (isArr && stateObj.iterateIn !== 'object' || stateObj.iterateIn === 'array') {\n // eslint-disable-next-line unicorn/no-new-array -- Sparse\n clone = new Array(value.length);\n observerData = {\n clone: clone\n };\n } else if (!['function', 'symbol'].includes(_typeof(value)) && !('toJSON' in value) && !hasConstructorOf(value, TypesonPromise) && !hasConstructorOf(value, Promise) && !hasConstructorOf(value, ArrayBuffer) || isPlainObj || stateObj.iterateIn === 'object') {\n clone = {};\n\n if (stateObj.addLength) {\n clone.length = value.length;\n }\n\n observerData = {\n clone: clone\n };\n } else {\n ret = value; // Only clone vanilla objects and arrays\n }\n }\n\n if (runObserver) {\n runObserver();\n }\n\n if (opts.iterateNone) {\n return clone || ret;\n }\n\n if (!clone) {\n return ret;\n } // Iterate object or array\n\n\n if (stateObj.iterateIn) {\n var _loop = function _loop(key) {\n var ownKeysObj = {\n ownKeys: hasOwn.call(value, key)\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var kp = keypath + (keypath ? '.' : '') + escapeKeyPathComponent(key);\n\n var val = _encapsulate(kp, value[key], Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, key, stateObj.type]);\n } else if (val !== undefined) {\n clone[key] = val;\n }\n });\n };\n\n // eslint-disable-next-line guard-for-in\n for (var key in value) {\n _loop(key);\n }\n\n if (runObserver) {\n runObserver({\n endIterateIn: true,\n end: true\n });\n }\n } else {\n // Note: Non-indexes on arrays won't survive stringify so\n // somewhat wasteful for arrays, but so too is iterating\n // all numeric indexes on sparse arrays when not wanted\n // or filtering own keys for positive integers\n keys(value).forEach(function (key) {\n var kp = keypath + (keypath ? '.' : '') + escapeKeyPathComponent(key);\n var ownKeysObj = {\n ownKeys: true\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var val = _encapsulate(kp, value[key], Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, key, stateObj.type]);\n } else if (val !== undefined) {\n clone[key] = val;\n }\n });\n });\n\n if (runObserver) {\n runObserver({\n endIterateOwn: true,\n end: true\n });\n }\n } // Iterate array for non-own numeric properties (we can't\n // replace the prior loop though as it iterates non-integer\n // keys)\n\n\n if (stateObj.iterateUnsetNumeric) {\n var vl = value.length;\n\n var _loop2 = function _loop2(i) {\n if (!(i in value)) {\n // No need to escape numeric\n var kp = keypath + (keypath ? '.' : '') + i;\n var ownKeysObj = {\n ownKeys: false\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var val = _encapsulate(kp, undefined, Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, i, stateObj.type]);\n } else if (val !== undefined) {\n clone[i] = val;\n }\n });\n }\n };\n\n for (var i = 0; i < vl; i++) {\n _loop2(i);\n }\n\n if (runObserver) {\n runObserver({\n endIterateUnsetNumeric: true,\n end: true\n });\n }\n }\n\n return clone;\n }\n /**\n * @typedef {PlainObject} KeyPathEvent\n * @property {string} cyclicKeypath\n */\n\n /**\n * @typedef {PlainObject} EndIterateInEvent\n * @property {boolean} endIterateIn\n * @property {boolean} end\n */\n\n /**\n * @typedef {PlainObject} EndIterateUnsetNumericEvent\n * @property {boolean} endIterateUnsetNumeric\n * @property {boolean} end\n */\n\n /**\n * @typedef {PlainObject} TypeDetectedEvent\n * @property {boolean} typeDetected\n */\n\n /**\n * @typedef {PlainObject} ReplacingEvent\n * @property {boolean} replacing\n */\n\n /**\n * @callback Observer\n * @param {KeyPathEvent|EndIterateInEvent|EndIterateUnsetNumericEvent|\n * TypeDetectedEvent|ReplacingEvent} [event]\n * @returns {void}\n */\n\n /**\n *\n * @param {string} keypath\n * @param {any} value\n * @param {PlainObject} stateObj\n * @param {GenericArray} promisesData\n * @param {boolean} plainObject\n * @param {boolean} resolvingTypesonPromise\n * @param {Observer} [runObserver]\n * @returns {any}\n */\n\n\n function replace(keypath, value, stateObj, promisesData, plainObject, resolvingTypesonPromise, runObserver) {\n // Encapsulate registered types\n var replacers = plainObject ? that.plainObjectReplacers : that.nonplainObjectReplacers;\n var i = replacers.length;\n\n while (i--) {\n var replacer = replacers[i];\n\n if (replacer.test(value, stateObj)) {\n var type = replacer.type;\n\n if (that.revivers[type]) {\n // Record the type only if a corresponding reviver\n // exists. This is to support specs where only\n // replacement is done.\n // For example, ensuring deep cloning of the object,\n // or replacing a type to its equivalent without\n // the need to revive it.\n var existing = types[keypath]; // type can comprise an array of types (see test\n // \"should support intermediate types\")\n\n types[keypath] = existing ? [type].concat(existing) : type;\n }\n\n Object.assign(stateObj, {\n type: type,\n replaced: true\n });\n\n if ((sync || !replacer.replaceAsync) && !replacer.replace) {\n if (runObserver) {\n runObserver({\n typeDetected: true\n });\n }\n\n return _encapsulate(keypath, value, cyclic && 'readonly', stateObj, promisesData, resolvingTypesonPromise, type);\n }\n\n if (runObserver) {\n runObserver({\n replacing: true\n });\n } // Now, also traverse the result in case it contains its\n // own types to replace\n\n\n var replaceMethod = sync || !replacer.replaceAsync ? 'replace' : 'replaceAsync';\n return _encapsulate(keypath, replacer[replaceMethod](value, stateObj), cyclic && 'readonly', stateObj, promisesData, resolvingTypesonPromise, type);\n }\n }\n\n return value;\n }\n\n return promisesDataRoot.length ? sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Sync method requested but async result obtained');\n }() : Promise.resolve(checkPromises(ret, promisesDataRoot)).then(finish) : !sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Async method requested but sync result obtained');\n }() // If this is a synchronous request for stringification, yet\n // a promise is the result, we don't want to resolve leading\n // to an async result, so we return an array to avoid\n // ambiguity\n : opts.stringification && sync ? [finish(ret)] : sync ? finish(ret) : Promise.resolve(finish(ret));\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {any} obj\n * @param {StateObject} stateObj\n * @param {TypesonOptions} opts\n * @returns {any}\n */\n\n }, {\n key: \"encapsulateSync\",\n value: function encapsulateSync(obj, stateObj, opts) {\n return this.encapsulate(obj, stateObj, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: true\n }));\n }\n /**\n * @param {any} obj\n * @param {StateObject} stateObj\n * @param {TypesonOptions} opts\n * @returns {any}\n */\n\n }, {\n key: \"encapsulateAsync\",\n value: function encapsulateAsync(obj, stateObj, opts) {\n return this.encapsulate(obj, stateObj, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: false\n }));\n }\n /**\n * Revive an encapsulated object.\n * This method is used internally by `Typeson.parse()`.\n * @param {PlainObject} obj - Object to revive. If it has `$types` member,\n * the properties that are listed there will be replaced with its true\n * type instead of just plain objects.\n * @param {TypesonOptions} opts\n * @throws TypeError If mismatch between sync/async type and result\n * @returns {Promise|any} If async, returns a Promise that resolves\n * to `any`.\n */\n\n }, {\n key: \"revive\",\n value: function revive(obj, opts) {\n var types = obj && obj.$types; // No type info added. Revival not needed.\n\n if (!types) {\n return obj;\n } // Object happened to have own `$types` property but with\n // no actual types, so we unescape and return that object\n\n\n if (types === true) {\n return obj.$;\n }\n\n opts = _objectSpread2(_objectSpread2({\n sync: true\n }, this.options), opts);\n var _opts3 = opts,\n sync = _opts3.sync;\n var keyPathResolutions = [];\n var stateObj = {};\n var ignore$Types = true; // Special when root object is not a trivial Object, it will\n // be encapsulated in `$`. It will also be encapsulated in\n // `$` if it has its own `$` property to avoid ambiguity\n\n if (types.$ && isPlainObject(types.$)) {\n obj = obj.$;\n types = types.$;\n ignore$Types = false;\n }\n\n var that = this;\n /**\n * @callback RevivalReducer\n * @param {any} value\n * @param {string} type\n * @returns {any}\n */\n\n /**\n *\n * @param {string} type\n * @param {any} val\n * @throws {Error}\n * @returns {any}\n */\n\n function executeReviver(type, val) {\n var _ref = that.revivers[type] || [],\n _ref2 = _slicedToArray(_ref, 1),\n reviver = _ref2[0];\n\n if (!reviver) {\n throw new Error('Unregistered type: ' + type);\n } // Only `sync` expected here, as problematic async would\n // be missing both `reviver` and `reviverAsync`, and\n // encapsulation shouldn't have added types, so\n // should have made an early exit\n\n\n if (sync && !('revive' in reviver)) {\n // Just return value as is\n return val;\n }\n\n return reviver[sync && reviver.revive ? 'revive' : !sync && reviver.reviveAsync ? 'reviveAsync' : 'revive'](val, stateObj);\n }\n /**\n *\n * @returns {void|TypesonPromise}\n */\n\n\n function revivePlainObjects() {\n // const references = [];\n // const reviveTypes = [];\n var plainObjectTypes = [];\n Object.entries(types).forEach(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n keypath = _ref4[0],\n type = _ref4[1];\n\n if (type === '#') {\n /*\n references.push({\n keypath,\n reference: getByKeyPath(obj, keypath)\n });\n */\n return;\n }\n\n [].concat(type).forEach(function (type) {\n var _ref5 = that.revivers[type] || [null, {}],\n _ref6 = _slicedToArray(_ref5, 2),\n plain = _ref6[1].plain;\n\n if (!plain) {\n // reviveTypes.push({keypath, type});\n return;\n }\n\n plainObjectTypes.push({\n keypath: keypath,\n type: type\n });\n delete types[keypath]; // Avoid repeating\n });\n });\n\n if (!plainObjectTypes.length) {\n return undefined;\n } // console.log(plainObjectTypes.sort(nestedPathsFirst));\n\n /**\n * @typedef {PlainObject} PlainObjectType\n * @property {string} keypath\n * @property {string} type\n */\n\n\n return plainObjectTypes.sort(nestedPathsFirst).reduce(function reducer(possibleTypesonPromise, _ref7) {\n var keypath = _ref7.keypath,\n type = _ref7.type;\n\n if (isThenable(possibleTypesonPromise)) {\n return possibleTypesonPromise.then(function (val) {\n return reducer(val, {\n keypath: keypath,\n type: type\n });\n });\n } // console.log('obj', JSON.stringify(keypath), obj);\n\n\n var val = getByKeyPath(obj, keypath);\n val = executeReviver(type, val);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n return val.then(function (v) {\n var newVal = setAtKeyPath(obj, keypath, v);\n\n if (newVal === v) {\n obj = newVal;\n }\n\n return undefined;\n });\n }\n\n var newVal = setAtKeyPath(obj, keypath, val);\n\n if (newVal === val) {\n obj = newVal;\n }\n\n return undefined;\n }, undefined // This argument must be explicit\n ); // references.forEach(({keypath, reference}) => {});\n // reviveTypes.sort(nestedPathsFirst).forEach(() => {});\n }\n\n var revivalPromises = [];\n /**\n *\n * @param {string} keypath\n * @param {any} value\n * @param {?(GenericArray|PlainObject)} target\n * @param {GenericArray|PlainObject} [clone]\n * @param {string} [key]\n * @returns {any}\n */\n\n function _revive(keypath, value, target, clone, key) {\n if (ignore$Types && keypath === '$types') {\n return undefined;\n }\n\n var type = types[keypath];\n var isArr = isArray(value);\n\n if (isArr || isPlainObject(value)) {\n // eslint-disable-next-line unicorn/no-new-array -- Sparse\n var _clone = isArr ? new Array(value.length) : {}; // Iterate object or array\n\n\n keys(value).forEach(function (k) {\n var val = _revive(keypath + (keypath ? '.' : '') + escapeKeyPathComponent(k), value[k], target || _clone, _clone, k);\n\n var set = function set(v) {\n if (hasConstructorOf(v, Undefined)) {\n _clone[k] = undefined;\n } else if (v !== undefined) {\n _clone[k] = v;\n }\n\n return v;\n };\n\n if (hasConstructorOf(val, TypesonPromise)) {\n revivalPromises.push(val.then(function (ret) {\n return set(ret);\n }));\n } else {\n set(val);\n }\n });\n value = _clone; // Try to resolve cyclic reference as soon as available\n\n while (keyPathResolutions.length) {\n var _keyPathResolutions$ = _slicedToArray(keyPathResolutions[0], 4),\n _target = _keyPathResolutions$[0],\n keyPath = _keyPathResolutions$[1],\n _clone2 = _keyPathResolutions$[2],\n k = _keyPathResolutions$[3];\n\n var val = getByKeyPath(_target, keyPath); // Typeson.Undefined not expected here as not cyclic or\n // `undefined`\n\n if (val !== undefined) {\n _clone2[k] = val;\n } else {\n break;\n }\n\n keyPathResolutions.splice(0, 1);\n }\n }\n\n if (!type) {\n return value;\n }\n\n if (type === '#') {\n var _ret = getByKeyPath(target, value.slice(1));\n\n if (_ret === undefined) {\n // Cyclic reference not yet available\n keyPathResolutions.push([target, value.slice(1), clone, key]);\n }\n\n return _ret;\n } // `type` can be an array here\n\n\n return [].concat(type).reduce(function reducer(val, typ) {\n if (hasConstructorOf(val, TypesonPromise)) {\n return val.then(function (v) {\n // TypesonPromise here too\n return reducer(v, typ);\n });\n }\n\n return executeReviver(typ, val);\n }, value);\n }\n /**\n *\n * @param {any} retrn\n * @returns {undefined|any}\n */\n\n\n function checkUndefined(retrn) {\n return hasConstructorOf(retrn, Undefined) ? undefined : retrn;\n }\n\n var possibleTypesonPromise = revivePlainObjects();\n var ret;\n\n if (hasConstructorOf(possibleTypesonPromise, TypesonPromise)) {\n ret = possibleTypesonPromise.then(function () {\n return obj;\n });\n } else {\n ret = _revive('', obj, null);\n\n if (revivalPromises.length) {\n // Ensure children resolved\n ret = TypesonPromise.resolve(ret).then(function (r) {\n return TypesonPromise.all([// May be a TypesonPromise or not\n r].concat(revivalPromises));\n }).then(function (_ref8) {\n var _ref9 = _slicedToArray(_ref8, 1),\n r = _ref9[0];\n\n return r;\n });\n }\n }\n\n return isThenable(ret) ? sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Sync method requested but async result obtained');\n }() : hasConstructorOf(ret, TypesonPromise) ? ret.p.then(checkUndefined) : ret : !sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Async method requested but sync result obtained');\n }() : sync ? checkUndefined(ret) : Promise.resolve(checkUndefined(ret));\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {any} obj\n * @param {TypesonOptions} opts\n * @returns {any}\n */\n\n }, {\n key: \"reviveSync\",\n value: function reviveSync(obj, opts) {\n return this.revive(obj, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: true\n }));\n }\n /**\n * @param {any} obj\n * @param {TypesonOptions} opts\n * @returns {Promise}\n */\n\n }, {\n key: \"reviveAsync\",\n value: function reviveAsync(obj, opts) {\n return this.revive(obj, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: false\n }));\n }\n /**\n * @typedef {Tester|Replacer|Reviver} Spec\n */\n\n /**\n * Register types.\n * For examples on how to use this method, see\n * {@link https://github.com/dfahlander/typeson-registry/tree/master/types}.\n * @param {object[]} typeSpecSets -\n * Types and their functions [test, encapsulate, revive];\n * @param {TypesonOptions} opts\n * @returns {Typeson}\n */\n\n }, {\n key: \"register\",\n value: function register(typeSpecSets, opts) {\n opts = opts || {};\n [].concat(typeSpecSets).forEach(function R(typeSpec) {\n var _this = this;\n\n // Allow arrays of arrays of arrays...\n if (isArray(typeSpec)) {\n return typeSpec.map(function (typSpec) {\n return R.call(_this, typSpec);\n });\n }\n\n typeSpec && keys(typeSpec).forEach(function (typeId) {\n if (typeId === '#') {\n throw new TypeError('# cannot be used as a type name as it is reserved ' + 'for cyclic objects');\n } else if (Typeson.JSON_TYPES.includes(typeId)) {\n throw new TypeError('Plain JSON object types are reserved as type names');\n }\n\n var spec = typeSpec[typeId];\n var replacers = spec && spec.testPlainObjects ? this.plainObjectReplacers : this.nonplainObjectReplacers;\n var existingReplacer = replacers.filter(function (r) {\n return r.type === typeId;\n });\n\n if (existingReplacer.length) {\n // Remove existing spec and replace with this one.\n replacers.splice(replacers.indexOf(existingReplacer[0]), 1);\n delete this.revivers[typeId];\n delete this.types[typeId];\n }\n\n if (typeof spec === 'function') {\n // Support registering just a class without replacer/reviver\n var Class = spec;\n spec = {\n test: function test(x) {\n return x && x.constructor === Class;\n },\n replace: function replace(x) {\n return _objectSpread2({}, x);\n },\n revive: function revive(x) {\n return Object.assign(Object.create(Class.prototype), x);\n }\n };\n } else if (isArray(spec)) {\n var _spec = spec,\n _spec2 = _slicedToArray(_spec, 3),\n test = _spec2[0],\n replace = _spec2[1],\n revive = _spec2[2];\n\n spec = {\n test: test,\n replace: replace,\n revive: revive\n };\n }\n\n if (!spec || !spec.test) {\n return;\n }\n\n var replacerObj = {\n type: typeId,\n test: spec.test.bind(spec)\n };\n\n if (spec.replace) {\n replacerObj.replace = spec.replace.bind(spec);\n }\n\n if (spec.replaceAsync) {\n replacerObj.replaceAsync = spec.replaceAsync.bind(spec);\n }\n\n var start = typeof opts.fallback === 'number' ? opts.fallback : opts.fallback ? 0 : Number.POSITIVE_INFINITY;\n\n if (spec.testPlainObjects) {\n this.plainObjectReplacers.splice(start, 0, replacerObj);\n } else {\n this.nonplainObjectReplacers.splice(start, 0, replacerObj);\n } // Todo: We might consider a testAsync type\n\n\n if (spec.revive || spec.reviveAsync) {\n var reviverObj = {};\n\n if (spec.revive) {\n reviverObj.revive = spec.revive.bind(spec);\n }\n\n if (spec.reviveAsync) {\n reviverObj.reviveAsync = spec.reviveAsync.bind(spec);\n }\n\n this.revivers[typeId] = [reviverObj, {\n plain: spec.testPlainObjects\n }];\n } // Record to be retrieved via public types property.\n\n\n this.types[typeId] = spec;\n }, this);\n }, this);\n return this;\n }\n }]);\n\n return Typeson;\n}();\n/**\n * We keep this function minimized so if using two instances of this\n * library, where one is minimized and one is not, it will still work\n * with `hasConstructorOf`.\n * @class\n */\n\n\nvar Undefined = function Undefined() {\n _classCallCheck(this, Undefined);\n}; // eslint-disable-line space-before-blocks\n\n\nUndefined.__typeson__type__ = 'TypesonUndefined'; // The following provide classes meant to avoid clashes with other values\n// To insist `undefined` should be added\n\nTypeson.Undefined = Undefined; // To support async encapsulation/stringification\n\nTypeson.Promise = TypesonPromise; // Some fundamental type-checking utilities\n\nTypeson.isThenable = isThenable;\nTypeson.toStringTag = toStringTag;\nTypeson.hasConstructorOf = hasConstructorOf;\nTypeson.isObject = isObject;\nTypeson.isPlainObject = isPlainObject;\nTypeson.isUserObject = isUserObject;\nTypeson.escapeKeyPathComponent = escapeKeyPathComponent;\nTypeson.unescapeKeyPathComponent = unescapeKeyPathComponent;\nTypeson.getByKeyPath = getByKeyPath;\nTypeson.getJSONType = getJSONType;\nTypeson.JSON_TYPES = ['null', 'boolean', 'number', 'string', 'array', 'object'];\n\nexport default Typeson;\n", "/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2017 Brett Zamir, 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index.\n\nvar lookup = new Uint8Array(256);\n\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n/**\n * @param {ArrayBuffer} arraybuffer\n * @param {Integer} byteOffset\n * @param {Integer} lngth\n * @returns {string}\n */\n\n\nvar encode = function encode(arraybuffer, byteOffset, lngth) {\n if (lngth === null || lngth === undefined) {\n lngth = arraybuffer.byteLength; // Needed for Safari\n }\n\n var bytes = new Uint8Array(arraybuffer, byteOffset || 0, // Default needed for Safari\n lngth);\n var len = bytes.length;\n var base64 = '';\n\n for (var _i = 0; _i < len; _i += 3) {\n base64 += chars[bytes[_i] >> 2];\n base64 += chars[(bytes[_i] & 3) << 4 | bytes[_i + 1] >> 4];\n base64 += chars[(bytes[_i + 1] & 15) << 2 | bytes[_i + 2] >> 6];\n base64 += chars[bytes[_i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.slice(0, -1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.slice(0, -2) + '==';\n }\n\n return base64;\n};\n/**\n * @param {string} base64\n * @returns {ArrayBuffer}\n */\n\nvar decode = function decode(base64) {\n var len = base64.length;\n var bufferLength = base64.length * 0.75;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (var _i2 = 0; _i2 < len; _i2 += 4) {\n encoded1 = lookup[base64.charCodeAt(_i2)];\n encoded2 = lookup[base64.charCodeAt(_i2 + 1)];\n encoded3 = lookup[base64.charCodeAt(_i2 + 2)];\n encoded4 = lookup[base64.charCodeAt(_i2 + 3)];\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n\n return arraybuffer;\n};\n\nexport { decode, encode };\n", "import Typeson from 'typeson';\n\nconst userObject = {\n userObject: {\n test (x, stateObj) { return Typeson.isUserObject(x); },\n replace (n) { return {...n}; },\n revive (s) { return s; }\n }\n};\n\nexport default userObject;\n", "const arrayNonindexKeys = [\n {\n arrayNonindexKeys: {\n testPlainObjects: true,\n test (x, stateObj) {\n if (Array.isArray(x)) {\n if (\n // By avoiding serializing arrays into objects which\n // have only positive-integer keys, we reduce\n // size and improve revival performance; arrays with\n // non-index keys will be larger however\n Object.keys(x).some((k) => {\n // No need to check for `isNaN` or\n // `isNaN(Number.parseInt())` as `NaN` will be\n // treated as a string.\n // No need to do check as\n // `Number.parseInt(Number())` since scientific\n // notation will be pre-resolved if a number\n // was given, and it will otherwise be a string\n return String(Number.parseInt(k)) !== k;\n })\n ) {\n stateObj.iterateIn = 'object';\n stateObj.addLength = true;\n }\n return true;\n }\n return false;\n },\n replace (a, stateObj) {\n // Catch sparse undefined\n stateObj.iterateUnsetNumeric = true;\n return a;\n },\n revive (o) {\n if (Array.isArray(o)) {\n return o;\n }\n const arr = [];\n // No map here as may be a sparse array (including\n // with `length` set)\n // Todo: Reenable when Node `engines` >= 7\n // Object.entries(o).forEach(([key, val]) => {\n Object.keys(o).forEach((key) => {\n const val = o[key];\n arr[key] = val;\n });\n return arr;\n }\n }\n },\n {\n sparseUndefined: {\n test (x, stateObj) {\n return typeof x === 'undefined' && stateObj.ownKeys === false;\n },\n replace (n) { return 0; },\n revive (s) { return undefined; } // Will avoid adding anything\n }\n }\n];\n\nexport default arrayNonindexKeys;\n", "// This does not preserve `undefined` in sparse arrays; see the `undefined`\n// or `sparse-undefined` preset\nimport Typeson from 'typeson';\n\nconst undef = {\n undef: {\n test (x, stateObj) {\n return typeof x === 'undefined' &&\n (stateObj.ownKeys || !('ownKeys' in stateObj));\n },\n replace (n) { return 0; },\n revive (s) {\n // Will add `undefined` (returning `undefined` would instead\n // avoid explicitly setting)\n return new Typeson.Undefined();\n }\n }\n};\n\nexport default undef;\n", "// This module is for objectified primitives (such as `new Number(3)` or\n// `new String(\"foo\")`)\n/* eslint-disable no-new-wrappers, unicorn/new-for-builtins */\nimport Typeson from 'typeson';\n\nconst primitiveObjects = {\n // String Object (not primitive string which need no type spec)\n StringObject: {\n test (x) {\n return Typeson.toStringTag(x) === 'String' && typeof x === 'object';\n },\n replace (s) { return String(s); }, // convert to primitive string\n revive (s) { return new String(s); } // Revive to an objectified string\n },\n // Boolean Object (not primitive boolean which need no type spec)\n BooleanObject: {\n test (x) {\n return Typeson.toStringTag(x) === 'Boolean' &&\n typeof x === 'object';\n },\n replace (b) { return Boolean(b); }, // convert to primitive boolean\n revive (b) {\n // Revive to an objectified Boolean\n return new Boolean(b);\n }\n },\n // Number Object (not primitive number which need no type spec)\n NumberObject: {\n test (x) {\n return Typeson.toStringTag(x) === 'Number' && typeof x === 'object';\n },\n replace (n) { return Number(n); }, // convert to primitive number\n revive (n) { return new Number(n); } // Revive to an objectified number\n }\n};\n/* eslint-enable no-new-wrappers, unicorn/new-for-builtins */\n\nexport default primitiveObjects;\n", "import nan from '../types/nan.js';\nimport infinity from '../types/infinity.js';\nimport NegativeInfinity from '../types/negative-infinity.js';\n\nconst specialNumbers = [\n nan,\n infinity,\n NegativeInfinity\n];\n\nexport default specialNumbers;\n", "const nan = {\n nan: {\n test (x) { return Number.isNaN(x); },\n replace (n) { return 'NaN'; },\n revive (s) { return Number.NaN; }\n }\n};\n\nexport default nan;\n", "const infinity = {\n infinity: {\n test (x) { return x === Number.POSITIVE_INFINITY; },\n replace (n) { return 'Infinity'; },\n revive (s) { return Number.POSITIVE_INFINITY; }\n }\n};\n\nexport default infinity;\n", "const negativeInfinity = {\n negativeInfinity: {\n test (x) { return x === Number.NEGATIVE_INFINITY; },\n replace (n) { return '-Infinity'; },\n revive (s) { return Number.NEGATIVE_INFINITY; }\n }\n};\n\nexport default negativeInfinity;\n", "import Typeson from 'typeson';\n\nconst date = {\n date: {\n test (x) { return Typeson.toStringTag(x) === 'Date'; },\n replace (dt) {\n const time = dt.getTime();\n if (Number.isNaN(time)) {\n return 'NaN';\n }\n return time;\n },\n revive (time) {\n if (time === 'NaN') {\n return new Date(Number.NaN);\n }\n return new Date(time);\n }\n }\n};\n\nexport default date;\n", "import Typeson from 'typeson';\n\nconst regexp = {\n regexp: {\n test (x) { return Typeson.toStringTag(x) === 'RegExp'; },\n replace (rexp) {\n return {\n source: rexp.source,\n flags: (rexp.global ? 'g' : '') +\n (rexp.ignoreCase ? 'i' : '') +\n (rexp.multiline ? 'm' : '') +\n (rexp.sticky ? 'y' : '') +\n (rexp.unicode ? 'u' : '')\n };\n },\n revive ({source, flags}) { return new RegExp(source, flags); }\n }\n};\n\nexport default regexp;\n", "import Typeson from 'typeson';\n\nconst map = {\n map: {\n test (x) { return Typeson.toStringTag(x) === 'Map'; },\n replace (mp) { return [...mp.entries()]; },\n revive (entries) { return new Map(entries); }\n }\n};\n\nexport default map;\n", "import Typeson from 'typeson';\n\nconst set = {\n set: {\n test (x) { return Typeson.toStringTag(x) === 'Set'; },\n replace (st) {\n return [...st.values()];\n },\n revive (values) { return new Set(values); }\n }\n};\n\nexport default set;\n", "import Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\nconst arraybuffer = {\n arraybuffer: {\n test (x) { return Typeson.toStringTag(x) === 'ArrayBuffer'; },\n replace (b, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const index = stateObj.buffers.indexOf(b);\n if (index > -1) {\n return {index};\n }\n stateObj.buffers.push(b);\n return encode(b);\n },\n revive (b64, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n if (typeof b64 === 'object') {\n return stateObj.buffers[b64.index];\n }\n const buffer = decode(b64);\n stateObj.buffers.push(buffer);\n return buffer;\n }\n }\n};\n\nexport default arraybuffer;\n\n// See also typed-arrays!\n", "/* eslint-env browser, node */\nimport Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\n/* istanbul ignore next */\nconst _global = typeof self === 'undefined' ? global : self;\n\nconst typedArrays = {};\n[\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array'\n].forEach(function (typeName) {\n const arrType = typeName;\n const TypedArray = _global[arrType];\n /* istanbul ignore if */\n if (!TypedArray) {\n return;\n }\n typedArrays[typeName.toLowerCase()] = {\n test (x) { return Typeson.toStringTag(x) === arrType; },\n replace ({buffer, byteOffset, length: l}, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const index = stateObj.buffers.indexOf(buffer);\n if (index > -1) {\n return {index, byteOffset, length: l};\n }\n stateObj.buffers.push(buffer);\n return {\n encoded: encode(buffer),\n byteOffset,\n length: l\n };\n },\n revive (b64Obj, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const {byteOffset, length: len, encoded, index} = b64Obj;\n let buffer;\n if ('index' in b64Obj) {\n buffer = stateObj.buffers[index];\n } else {\n buffer = decode(encoded);\n stateObj.buffers.push(buffer);\n }\n return new TypedArray(buffer, byteOffset, len);\n }\n };\n});\n\nexport default typedArrays;\n", "import Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\nconst dataview = {\n dataview: {\n test (x) { return Typeson.toStringTag(x) === 'DataView'; },\n replace ({buffer, byteOffset, byteLength}, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const index = stateObj.buffers.indexOf(buffer);\n if (index > -1) {\n return {index, byteOffset, byteLength};\n }\n stateObj.buffers.push(buffer);\n return {\n encoded: encode(buffer),\n byteOffset,\n byteLength\n };\n },\n revive (b64Obj, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const {byteOffset, byteLength, encoded, index} = b64Obj;\n let buffer;\n if ('index' in b64Obj) {\n buffer = stateObj.buffers[index];\n } else {\n buffer = decode(encoded);\n stateObj.buffers.push(buffer);\n }\n return new DataView(buffer, byteOffset, byteLength);\n }\n }\n};\n\nexport default dataview;\n", "import Typeson from 'typeson';\n\nconst IntlCollator = {\n test (x) { return Typeson.hasConstructorOf(x, Intl.Collator); },\n replace (c) { return c.resolvedOptions(); },\n revive (options) { return new Intl.Collator(options.locale, options); }\n};\n\nconst IntlDateTimeFormat = {\n test (x) { return Typeson.hasConstructorOf(x, Intl.DateTimeFormat); },\n replace (dtf) { return dtf.resolvedOptions(); },\n revive (options) {\n return new Intl.DateTimeFormat(options.locale, options);\n }\n};\n\nconst IntlNumberFormat = {\n test (x) { return Typeson.hasConstructorOf(x, Intl.NumberFormat); },\n replace (nf) { return nf.resolvedOptions(); },\n revive (options) { return new Intl.NumberFormat(options.locale, options); }\n};\n\nconst intlTypes = {\n IntlCollator,\n IntlDateTimeFormat,\n IntlNumberFormat\n};\n\nexport default intlTypes;\n", "/**\n * Not currently in use internally, but provided for parity.\n * @param {ArrayBuffer} buf\n * @returns {Uint8Array}\n */\nfunction arraybuffer2string (buf) {\n return new Uint8Array(buf).reduce(\n (s, byte) => s + String.fromCharCode(byte), ''\n );\n}\n\n/**\n *\n * @param {string} str\n * @returns {ArrayBuffer}\n */\nfunction string2arraybuffer (str) {\n /*\n // UTF-8 approaches\n const utf8 = unescape(encodeURIComponent(str));\n const arr = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n arr[i] = utf8.charCodeAt(i);\n }\n return arr.buffer;\n\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n } else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode >> 6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n // surrogate pair\n } else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff) << 10) |\n (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >> 18),\n 0x80 | ((charcode >> 12) & 0x3f),\n 0x80 | ((charcode >> 6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n */\n /*\n // Working UTF-16 options (equivalents)\n const buf = new ArrayBuffer(str.length * 2); // 2 bytes for each char\n const bufView = new Uint16Array(buf);\n for (let i = 0, strLen = str.length; i < strLen; i++) {\n bufView[i] = str.charCodeAt(i);\n }\n return buf;\n */\n\n const array = new Uint8Array(str.length);\n for (let i = 0; i < str.length; i++) {\n array[i] = str.charCodeAt(i); // & 0xff;\n }\n return array.buffer;\n}\nexport {arraybuffer2string, string2arraybuffer};\n", "/* globals XMLHttpRequest, File, FileReader */\nimport Typeson from 'typeson';\nimport {string2arraybuffer} from '../utils/stringArrayBuffer.js';\n\nconst file = {\n file: {\n test (x) { return Typeson.toStringTag(x) === 'File'; },\n replace (f) { // Sync\n const req = new XMLHttpRequest();\n req.overrideMimeType('text/plain; charset=x-user-defined');\n req.open('GET', URL.createObjectURL(f), false); // Sync\n req.send();\n\n // Seems not feasible to accurately simulate\n /* istanbul ignore next */\n if (req.status !== 200 && req.status !== 0) {\n throw new Error('Bad File access: ' + req.status);\n }\n return {\n type: f.type,\n stringContents: req.responseText,\n name: f.name,\n lastModified: f.lastModified\n };\n },\n revive ({name, type, stringContents, lastModified}) {\n return new File([string2arraybuffer(stringContents)], name, {\n type,\n lastModified\n });\n },\n replaceAsync (f) {\n return new Typeson.Promise(function (resolve, reject) {\n /*\n if (f.isClosed) { // On MDN, but not in https://w3c.github.io/FileAPI/#dfn-Blob\n reject(new Error('The File is closed'));\n return;\n }\n */\n const reader = new FileReader();\n reader.addEventListener('load', function () {\n resolve({\n type: f.type,\n stringContents: reader.result,\n name: f.name,\n lastModified: f.lastModified\n });\n });\n // Seems not feasible to accurately simulate\n /* istanbul ignore next */\n reader.addEventListener('error', function () {\n reject(reader.error);\n });\n reader.readAsBinaryString(f);\n });\n }\n }\n};\n\nexport default file;\n", "/* globals BigInt */\n\nconst bigint = {\n bigint: {\n test (x) {\n return typeof x === 'bigint';\n },\n replace (n) { return String(n); },\n revive (s) { return BigInt(s); }\n }\n};\n\nexport default bigint;\n", "/* globals BigInt */\nimport Typeson from 'typeson';\n\nconst bigintObject = {\n bigintObject: {\n test (x) {\n return typeof x === 'object' && Typeson.hasConstructorOf(x, BigInt);\n },\n replace (n) { return String(n); },\n revive (s) {\n // Filed this to avoid error: https://github.com/eslint/eslint/issues/11810\n // eslint-disable-next-line no-new-object\n return new Object(BigInt(s));\n }\n }\n};\n\nexport default bigintObject;\n", "/* globals crypto */\nimport Typeson from 'typeson';\n\nconst cryptokey = {\n cryptokey: {\n test (x) {\n return Typeson.toStringTag(x) === 'CryptoKey' && x.extractable;\n },\n replaceAsync (key) {\n return new Typeson.Promise((resolve, reject) => {\n // eslint-disable-next-line promise/catch-or-return\n crypto.subtle.exportKey('jwk', key).catch(\n /* eslint-disable promise/prefer-await-to-callbacks */\n // istanbul ignore next\n (err) => {\n /* eslint-enable promise/prefer-await-to-callbacks */\n // eslint-disable-next-line max-len\n // istanbul ignore next -- Our format should be valid and our key extractable\n reject(err);\n }\n // eslint-disable-next-line max-len\n // eslint-disable-next-line promise/always-return, promise/prefer-await-to-then\n ).then((jwk) => {\n resolve({\n jwk,\n algorithm: key.algorithm,\n usages: key.usages\n });\n });\n });\n },\n revive ({jwk, algorithm, usages}) {\n return crypto.subtle.importKey('jwk', jwk, algorithm, true, usages);\n }\n }\n};\n\nexport default cryptokey;\n", "/* This preset includes types for the Structured Cloning Algorithm. */\n\nimport userObject from '../types/user-object.js';\nimport arrayNonindexKeys from './array-nonindex-keys.js';\nimport undef from '../types/undef.js';\nimport primitiveObjects from '../types/primitive-objects.js';\nimport specialNumbers from './special-numbers.js';\nimport date from '../types/date.js';\nimport regexp from '../types/regexp.js';\nimport map from '../types/map.js';\nimport set from '../types/set.js';\nimport arraybuffer from '../types/arraybuffer.js';\nimport typedArrays from '../types/typed-arrays.js';\nimport dataview from '../types/dataview.js';\nimport intlTypes from '../types/intl-types.js';\n\nimport imagedata from '../types/imagedata.js';\nimport imagebitmap from '../types/imagebitmap.js'; // Async return\nimport file from '../types/file.js';\nimport filelist from '../types/filelist.js';\nimport blob from '../types/blob.js';\nimport bigint from '../types/bigint.js';\nimport bigintObject from '../types/bigint-object.js';\n\nimport cryptokey from '../types/cryptokey.js';\n\nconst expObj = [\n // Todo: Might also register synchronous `ImageBitmap` and\n // `Blob`/`File`/`FileList`?\n // ES5\n userObject, // Processed last (non-builtin)\n\n undef,\n arrayNonindexKeys, primitiveObjects, specialNumbers,\n date, regexp,\n\n // Non-built-ins\n imagedata,\n imagebitmap, // Async return\n file,\n filelist,\n blob\n].concat(\n // ES2015 (ES6)\n /* istanbul ignore next */\n typeof Map === 'function' ? map : [],\n /* istanbul ignore next */\n typeof Set === 'function' ? set : [],\n /* istanbul ignore next */\n typeof ArrayBuffer === 'function' ? arraybuffer : [],\n /* istanbul ignore next */\n typeof Uint8Array === 'function' ? typedArrays : [],\n /* istanbul ignore next */\n typeof DataView === 'function' ? dataview : [],\n /* istanbul ignore next */\n typeof Intl !== 'undefined' ? intlTypes : [],\n /* istanbul ignore next */\n typeof crypto !== 'undefined' ? cryptokey : [],\n /* istanbul ignore next */\n typeof BigInt !== 'undefined' ? [bigint, bigintObject] : []\n);\nexport default expObj;\n", "/* globals ImageData */\n// `ImageData` is browser / DOM specific (though `node-canvas` has it\n// available on `Canvas`).\n\nimport Typeson from 'typeson';\n\nconst imagedata = {\n imagedata: {\n test (x) { return Typeson.toStringTag(x) === 'ImageData'; },\n replace (d) {\n return {\n // Ensure `length` gets preserved for revival\n array: [...d.data],\n width: d.width,\n height: d.height\n };\n },\n revive (o) {\n return new ImageData(\n new Uint8ClampedArray(o.array), o.width, o.height\n );\n }\n }\n};\n\nexport default imagedata;\n", "/* globals createImageBitmap */\n// `ImageBitmap` is browser / DOM specific. It also can only work\n// same-domain (or CORS)\n\nimport Typeson from 'typeson';\n\nconst imagebitmap = {\n imagebitmap: {\n test (x) {\n return Typeson.toStringTag(x) === 'ImageBitmap' ||\n // In Node, our polyfill sets the dataset on a canvas\n // element as JSDom no longer allows overriding toStringTag\n (x && x.dataset && x.dataset.toStringTag === 'ImageBitmap');\n },\n replace (bm) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n ctx.drawImage(bm, 0, 0);\n // Although `width` and `height` are part of `ImageBitMap`,\n // these will be auto-created for us when reviving with the\n // data URL (and they are not settable even if they weren't)\n // return {\n // width: bm.width, height: bm.height, dataURL: canvas.toDataURL()\n // };\n return canvas.toDataURL();\n },\n revive (o) {\n /*\n var req = new XMLHttpRequest();\n req.open('GET', o, false); // Sync\n if (req.status !== 200 && req.status !== 0) {\n throw new Error('Bad ImageBitmap access: ' + req.status);\n }\n req.send();\n return req.responseText;\n */\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n const img = document.createElement('img');\n // The onload is needed by some browsers per http://stackoverflow.com/a/4776378/271577\n img.addEventListener('load', function () {\n ctx.drawImage(img, 0, 0);\n });\n img.src = o;\n // Works in contexts allowing an `ImageBitmap` (We might use\n // `OffscreenCanvas.transferToBitmap` when supported)\n return canvas;\n },\n reviveAsync (o) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n const img = document.createElement('img');\n // The onload is needed by some browsers per http://stackoverflow.com/a/4776378/271577\n img.addEventListener('load', function () {\n ctx.drawImage(img, 0, 0);\n });\n img.src = o; // o.dataURL;\n return createImageBitmap(canvas); // Returns a promise\n }\n }\n};\n\nexport default imagebitmap;\n", "import Typeson from 'typeson';\nimport file from './file.js';\n\nconst filelist = {\n file: file.file,\n filelist: {\n test (x) { return Typeson.toStringTag(x) === 'FileList'; },\n replace (fl) {\n const arr = [];\n for (let i = 0; i < fl.length; i++) {\n arr[i] = fl.item(i);\n }\n return arr;\n },\n revive (o) {\n /**\n * `FileList` polyfill.\n */\n class FileList {\n /**\n * Set private properties and length.\n */\n constructor () {\n // eslint-disable-next-line prefer-rest-params\n this._files = arguments[0];\n this.length = this._files.length;\n }\n /**\n * @param {Integer} index\n * @returns {File}\n */\n item (index) {\n return this._files[index];\n }\n /* eslint-disable class-methods-use-this */\n /**\n * @returns {\"FileList\"}\n */\n get [Symbol.toStringTag] () {\n /* eslint-enable class-methods-use-this */\n return 'FileList';\n }\n }\n return new FileList(o);\n }\n }\n};\n\nexport default filelist;\n", "/* globals XMLHttpRequest, Blob, FileReader */\nimport Typeson from 'typeson';\nimport {string2arraybuffer} from '../utils/stringArrayBuffer.js';\n\nconst blob = {\n blob: {\n test (x) { return Typeson.toStringTag(x) === 'Blob'; },\n replace (b) { // Sync\n const req = new XMLHttpRequest();\n req.overrideMimeType('text/plain; charset=x-user-defined');\n req.open('GET', URL.createObjectURL(b), false); // Sync\n req.send();\n\n // Seems not feasible to accurately simulate\n /* istanbul ignore next */\n if (req.status !== 200 && req.status !== 0) {\n throw new Error('Bad Blob access: ' + req.status);\n }\n return {\n type: b.type,\n stringContents: req.responseText\n };\n },\n revive ({type, stringContents}) {\n return new Blob([string2arraybuffer(stringContents)], {type});\n },\n replaceAsync (b) {\n return new Typeson.Promise((resolve, reject) => {\n /*\n if (b.isClosed) { // On MDN, but not in https://w3c.github.io/FileAPI/#dfn-Blob\n reject(new Error('The Blob is closed'));\n return;\n }\n */\n const reader = new FileReader();\n reader.addEventListener('load', () => {\n resolve({\n type: b.type,\n stringContents: reader.result\n });\n });\n // Seems not feasible to accurately simulate\n /* istanbul ignore next */\n reader.addEventListener('error', () => {\n reject(reader.error);\n });\n reader.readAsBinaryString(b);\n });\n }\n }\n};\n\nexport default blob;\n", "/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2017 Brett Zamir, 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index.\n\nvar lookup = new Uint8Array(256);\n\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.codePointAt(i)] = i;\n}\n/**\n * @param {ArrayBuffer} arraybuffer\n * @param {Integer} byteOffset\n * @param {Integer} lngth\n * @returns {string}\n */\n\n\nvar encode = function encode(arraybuffer, byteOffset, lngth) {\n if (lngth === null || lngth === undefined) {\n lngth = arraybuffer.byteLength; // Needed for Safari\n }\n\n var bytes = new Uint8Array(arraybuffer, byteOffset || 0, // Default needed for Safari\n lngth);\n var len = bytes.length;\n var base64 = '';\n\n for (var _i = 0; _i < len; _i += 3) {\n base64 += chars[bytes[_i] >> 2];\n base64 += chars[(bytes[_i] & 3) << 4 | bytes[_i + 1] >> 4];\n base64 += chars[(bytes[_i + 1] & 15) << 2 | bytes[_i + 2] >> 6];\n base64 += chars[bytes[_i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.slice(0, -1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.slice(0, -2) + '==';\n }\n\n return base64;\n};\n/**\n * @param {string} base64\n * @returns {ArrayBuffer}\n */\n\nvar decode = function decode(base64) {\n var len = base64.length;\n var bufferLength = base64.length * 0.75;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (var _i2 = 0; _i2 < len; _i2 += 4) {\n encoded1 = lookup[base64.codePointAt(_i2)];\n encoded2 = lookup[base64.codePointAt(_i2 + 1)];\n encoded3 = lookup[base64.codePointAt(_i2 + 2)];\n encoded4 = lookup[base64.codePointAt(_i2 + 3)];\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n\n return arraybuffer;\n};\n\nexport { decode, encode };\n", "declare var global;\n\n/* eslint-env browser, node */\nimport Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\nconst _global = typeof self === 'undefined' ? global : self;\n\nconst exportObj = {};\n[\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array'\n].forEach(function (typeName) {\n const arrType = typeName;\n const TypedArray = _global[arrType];\n if (TypedArray) {\n exportObj[typeName.toLowerCase()+\"2\"] = {\n test (x) { return Typeson.toStringTag(x) === arrType; },\n replace ({buffer, byteOffset, length}) {\n return {\n buffer,\n byteOffset,\n length\n };\n },\n revive (b64Obj) {\n const {buffer, byteOffset, length} = b64Obj;\n return new TypedArray(buffer, byteOffset, length);\n }\n };\n }\n});\n\nexport default exportObj;\n", "import Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\nexport default {\n arraybuffer: {\n test (x) { return Typeson.toStringTag(x) === 'ArrayBuffer'; },\n replace (b) {\n return encode(b, 0, b.byteLength);\n },\n revive (b64) {\n const buffer = decode(b64);\n return buffer;\n }\n }\n};\n\n// See also typed-arrays!\n", "import Typeson from 'typeson';\nimport StructuredCloning from 'typeson-registry/dist/presets/structured-cloning';\nimport { encode as encodeB64, decode as decodeB64 } from 'base64-arraybuffer-es6';\nimport Dexie from 'dexie';\nimport { readBlobSync, readBlobAsync } from './helpers';\nimport typedArray from './tson-typed-array';\nimport arrayBuffer from './tson-arraybuffer';\n\nexport const TSON = new Typeson().register(StructuredCloning);\n\nconst readBlobsSynchronously = 'FileReaderSync' in self; // true in workers only.\n\nlet blobsToAwait: any[] = [];\nlet blobsToAwaitPos = 0;\n\n// Need to patch encapsulateAsync as it does not work as of typeson 5.8.2\n// Also, current version of typespn-registry-1.0.0-alpha.21 does not\n// encapsulate/revive Blobs correctly (fails one of the unit tests in\n// this library (test 'export-format'))\nTSON.register([\n arrayBuffer,\n typedArray, {\n blob2: {\n test(x) { return Typeson.toStringTag(x) === 'Blob'; },\n replace(b) {\n if (b.isClosed) { // On MDN, but not in https://w3c.github.io/FileAPI/#dfn-Blob\n throw new Error('The Blob is closed');\n }\n if (readBlobsSynchronously) {\n const data = readBlobSync(b, 'binary');\n const base64 = encodeB64(data, 0, data.byteLength);\n return {\n type: b.type,\n data: base64\n }\n } else {\n blobsToAwait.push(b); // This will also make TSON.mustFinalize() return true.\n const result = {\n type: b.type,\n data: {start: blobsToAwaitPos, end: blobsToAwaitPos + b.size}\n }\n blobsToAwaitPos += b.size;\n return result;\n }\n },\n finalize(b, ba: ArrayBuffer) {\n b.data = encodeB64(ba, 0, ba.byteLength);\n },\n revive ({type, data}) {\n return new Blob([decodeB64(data)], {type});\n }\n }\n }\n]);\n\nTSON.mustFinalize = ()=>blobsToAwait.length > 0;\n\nTSON.finalize = async (items?: any[]) => {\n const allChunks = await readBlobAsync(new Blob(blobsToAwait), 'binary');\n if (items) {\n for (const item of items) {\n // Manually go through all \"blob\" types in the result\n // and lookup the data slice they point at.\n if (item.$types) {\n let types = item.$types;\n const arrayType = types.$;\n if (arrayType) types = types.$;\n for (let keyPath in types) {\n const typeName = types[keyPath];\n const typeSpec = TSON.types[typeName];\n if (typeSpec && typeSpec.finalize) {\n const b = Dexie.getByKeyPath(item, arrayType ? \"$.\" + keyPath : keyPath);\n typeSpec.finalize(b, allChunks.slice(b.start, b.end));\n }\n }\n }\n }\n }\n // Free up memory\n blobsToAwait = [];\n}\n", "\nimport Dexie from 'dexie';\nimport { getSchemaString, extractDbSchema } from './helpers';\nimport { DexieExportedTable, DexieExportJsonStructure } from './json-structure';\nimport { TSON } from './tson';\n\nexport interface ExportOptions {\n skipTables?: string[],\n noTransaction?: boolean;\n numRowsPerChunk?: number;\n prettyJson?: boolean;\n filter?: (table: string, value: any, key?: any) => boolean;\n transform?: (table: string, value: any, key?: any) => ({value: any, key?: any});\n progressCallback?: (progress: ExportProgress) => boolean;\n}\n\nexport interface ExportProgress {\n totalTables: number;\n completedTables: number;\n totalRows: number | undefined;\n completedRows: number;\n done: boolean;\n}\n\nconst DEFAULT_ROWS_PER_CHUNK = 2000;\n\nexport async function exportDB(db: Dexie, options?: ExportOptions): Promise {\n options = options || {};\n const skipTables = options.skipTables? options.skipTables: []\n const targetTables = db.tables.filter((x)=> !skipTables.includes(x.name))\n const slices: (string | Blob)[] = [];\n const tables = targetTables.map(table => ({\n name: table.name,\n schema: getSchemaString(table),\n rowCount: 0\n }));\n const {prettyJson} = options!;\n const emptyExport: DexieExportJsonStructure = {\n formatName: \"dexie\",\n formatVersion: 1,\n data: {\n databaseName: db.name,\n databaseVersion: db.verno,\n tables: tables,\n data: []\n }\n };\n \n const {progressCallback} = options!;\n const progress: ExportProgress = {\n done: false,\n completedRows: 0,\n completedTables: 0,\n totalRows: NaN,\n totalTables: tables.length\n };\n\n try {\n if (options!.noTransaction) {\n await exportAll();\n } else {\n await db.transaction('r', db.tables, exportAll);\n }\n } finally {\n TSON.finalize(); // Free up mem if error has occurred\n }\n\n return new Blob(slices,{type: \"text/json\"});\n\n async function exportAll() {\n // Count rows:\n const tablesRowCounts = await Promise.all(targetTables.map(table => table.count()));\n tablesRowCounts.forEach((rowCount, i) => tables[i].rowCount = rowCount);\n progress.totalRows = tablesRowCounts.reduce((p,c)=>p+c);\n\n // Write first JSON slice\n const emptyExportJson = JSON.stringify(emptyExport, undefined, prettyJson ? 2 : undefined);\n const posEndDataArray = emptyExportJson.lastIndexOf(']');\n const firstJsonSlice = emptyExportJson.substring(0, posEndDataArray);\n slices.push(firstJsonSlice);\n\n const filter = options!.filter;\n const transform = options!.transform;\n\n for (const {name: tableName} of tables) {\n const table = db.table(tableName);\n const {primKey} = table.schema;\n const inbound = !!primKey.keyPath;\n const LIMIT = options!.numRowsPerChunk || DEFAULT_ROWS_PER_CHUNK;\n const emptyTableExport: DexieExportedTable = inbound ? {\n tableName: table.name,\n inbound: true,\n rows: []\n } : {\n tableName: table.name,\n inbound: false,\n rows: []\n };\n let emptyTableExportJson = JSON.stringify(emptyTableExport, undefined, prettyJson ? 2 : undefined);\n if (prettyJson) {\n // Increase indentation according to this:\n // {\n // ...\n // data: [\n // ...\n // data: [\n // 123456<---- here\n // ] \n // ]\n // }\n emptyTableExportJson = emptyTableExportJson.split('\\n').join('\\n ');\n }\n const posEndRowsArray = emptyTableExportJson.lastIndexOf(']');\n slices.push(emptyTableExportJson.substring(0, posEndRowsArray));\n let lastKey: any = null;\n let lastNumRows = 0;\n let mayHaveMoreRows = true;\n while (mayHaveMoreRows) {\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n const chunkedCollection = lastKey == null ?\n table.limit(LIMIT) :\n table.where(':id').above(lastKey).limit(LIMIT);\n\n const values = await chunkedCollection.toArray();\n\n if (values.length === 0) break;\n\n if (lastKey != null && lastNumRows > 0) {\n // Not initial chunk. Must add a comma:\n slices.push(\",\");\n if (prettyJson) {\n slices.push(\"\\n \");\n }\n }\n\n mayHaveMoreRows = values.length === LIMIT;\n \n if (inbound) {\n const filteredValues = filter ?\n values.filter(value => filter(tableName, value)) :\n values;\n\n const transformedValues = transform ?\n filteredValues.map(value => transform(tableName, value).value) :\n filteredValues;\n\n const tsonValues = transformedValues.map(value => TSON.encapsulate(value));\n if (TSON.mustFinalize()) {\n await Dexie.waitFor(TSON.finalize(tsonValues));\n }\n\n let json = JSON.stringify(tsonValues, undefined, prettyJson ? 2 : undefined);\n if (prettyJson) json = json.split('\\n').join('\\n ');\n\n // By generating a blob here, we give web platform the opportunity to store the contents\n // on disk and release RAM.\n slices.push(new Blob([json.substring(1, json.length - 1)]));\n lastNumRows = transformedValues.length;\n lastKey = values.length > 0 ?\n Dexie.getByKeyPath(values[values.length -1], primKey.keyPath as string) :\n null;\n } else {\n const keys = await chunkedCollection.primaryKeys();\n let keyvals = keys.map((key, i) => [key, values[i]]);\n if (filter) keyvals = keyvals.filter(([key, value]) => filter(tableName, value, key));\n if (transform) keyvals = keyvals.map(([key, value]) => {\n const transformResult = transform(tableName, value, key);\n return [transformResult.key, transformResult.value];\n });\n\n const tsonTuples = keyvals.map(tuple => TSON.encapsulate(tuple));\n if (TSON.mustFinalize()) {\n await Dexie.waitFor(TSON.finalize(tsonTuples));\n }\n\n let json = JSON.stringify(tsonTuples, undefined, prettyJson ? 2 : undefined);\n if (prettyJson) json = json.split('\\n').join('\\n ');\n\n // By generating a blob here, we give web platform the opportunity to store the contents\n // on disk and release RAM.\n slices.push(new Blob([json.substring(1, json.length - 1)]));\n lastNumRows = keyvals.length;\n lastKey = keys.length > 0 ?\n keys[keys.length - 1] :\n null;\n }\n progress.completedRows += values.length;\n }\n slices.push(emptyTableExportJson.substr(posEndRowsArray)); // \"]}\"\n progress.completedTables += 1;\n if (progress.completedTables < progress.totalTables) {\n slices.push(\",\");\n }\n }\n slices.push(emptyExportJson.substr(posEndDataArray));\n progress.done = true;\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n }\n}\n", "export const VERSION = 1;\n\n/** Same as DexieExportJsonStructure but without the data.data array */\nexport interface DexieExportJsonMeta {\n formatName: 'dexie';\n formatVersion: typeof VERSION;\n data: {\n databaseName: string;\n databaseVersion: number;\n tables: Array<{\n name: string;\n schema: string;\n rowCount: number;\n }>;\n }\n}\n\nexport interface DexieExportJsonStructure extends DexieExportJsonMeta {\n formatName: 'dexie';\n formatVersion: typeof VERSION;\n data: {\n databaseName: string;\n databaseVersion: number;\n tables: Array<{\n name: string;\n schema: string;\n rowCount: number;\n }>;\n data: Array<{\n tableName: string;\n inbound: boolean;\n rows: any[];\n }>;\n }\n}\n\nexport type DexieExportedDatabase = DexieExportJsonStructure[\"data\"];\nexport type DexieExportedTable = DexieExportedDatabase[\"data\"][number];\n", "module.exports = {Stream: function(){}};\n\n", ";(function (clarinet) {\n \"use strict\";\n\n // non node-js needs to set clarinet debug on root\n var env =(typeof process === 'object' && process.env)\n ? process.env\n : self;\n\n clarinet.parser = function (opt) { return new CParser(opt);};\n clarinet.CParser = CParser;\n clarinet.CStream = CStream;\n clarinet.createStream = createStream;\n clarinet.MAX_BUFFER_LENGTH = 10 * 1024 * 1024;\n clarinet.DEBUG = (env.CDEBUG==='debug');\n clarinet.INFO = (env.CDEBUG==='debug' || env.CDEBUG==='info');\n clarinet.EVENTS =\n [ \"value\"\n , \"string\"\n , \"key\"\n , \"openobject\"\n , \"closeobject\"\n , \"openarray\"\n , \"closearray\"\n , \"error\"\n , \"end\"\n , \"ready\"\n ];\n\n var buffers = {\n textNode: undefined,\n numberNode: \"\"\n }\n , streamWraps = clarinet.EVENTS.filter(function (ev) {\n return ev !== \"error\" && ev !== \"end\";\n })\n , S = 0\n , Stream\n ;\n\n clarinet.STATE =\n { BEGIN : S++\n , VALUE : S++ // general stuff\n , OPEN_OBJECT : S++ // {\n , CLOSE_OBJECT : S++ // }\n , OPEN_ARRAY : S++ // [\n , CLOSE_ARRAY : S++ // ]\n , TEXT_ESCAPE : S++ // \\ stuff\n , STRING : S++ // \"\"\n , BACKSLASH : S++\n , END : S++ // No more stack\n , OPEN_KEY : S++ // , \"a\"\n , CLOSE_KEY : S++ // :\n , TRUE : S++ // r\n , TRUE2 : S++ // u\n , TRUE3 : S++ // e\n , FALSE : S++ // a\n , FALSE2 : S++ // l\n , FALSE3 : S++ // s\n , FALSE4 : S++ // e\n , NULL : S++ // u\n , NULL2 : S++ // l\n , NULL3 : S++ // l\n , NUMBER_DECIMAL_POINT : S++ // .\n , NUMBER_DIGIT : S++ // [0-9]\n };\n\n for (var s_ in clarinet.STATE) clarinet.STATE[clarinet.STATE[s_]] = s_;\n\n // switcharoo\n S = clarinet.STATE;\n\n const Char = {\n tab : 0x09, // \\t\n lineFeed : 0x0A, // \\n\n carriageReturn : 0x0D, // \\r\n space : 0x20, // \" \"\n\n doubleQuote : 0x22, // \"\n plus : 0x2B, // +\n comma : 0x2C, // ,\n minus : 0x2D, // -\n period : 0x2E, // .\n\n _0 : 0x30, // 0\n _9 : 0x39, // 9\n\n colon : 0x3A, // :\n\n E : 0x45, // E\n\n openBracket : 0x5B, // [\n backslash : 0x5C, // \\\n closeBracket : 0x5D, // ]\n\n a : 0x61, // a\n b : 0x62, // b\n e : 0x65, // e \n f : 0x66, // f\n l : 0x6C, // l\n n : 0x6E, // n\n r : 0x72, // r\n s : 0x73, // s\n t : 0x74, // t\n u : 0x75, // u\n\n openBrace : 0x7B, // {\n closeBrace : 0x7D, // }\n }\n\n if (!Object.create) {\n Object.create = function (o) {\n function f () { this[\"__proto__\"] = o; }\n f.prototype = o;\n return new f;\n };\n }\n\n if (!Object.getPrototypeOf) {\n Object.getPrototypeOf = function (o) {\n return o[\"__proto__\"];\n };\n }\n\n if (!Object.keys) {\n Object.keys = function (o) {\n var a = [];\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i);\n return a;\n };\n }\n\n function checkBufferLength (parser) {\n var maxAllowed = Math.max(clarinet.MAX_BUFFER_LENGTH, 10)\n , maxActual = 0\n ;\n for (var buffer in buffers) {\n var len = parser[buffer] === undefined ? 0 : parser[buffer].length;\n if (len > maxAllowed) {\n switch (buffer) {\n case \"text\":\n closeText(parser);\n break;\n\n default:\n error(parser, \"Max buffer length exceeded: \"+ buffer);\n }\n }\n maxActual = Math.max(maxActual, len);\n }\n parser.bufferCheckPosition = (clarinet.MAX_BUFFER_LENGTH - maxActual)\n + parser.position;\n }\n\n function clearBuffers (parser) {\n for (var buffer in buffers) {\n parser[buffer] = buffers[buffer];\n }\n }\n\n var stringTokenPattern = /[\\\\\"\\n]/g;\n\n function CParser (opt) {\n if (!(this instanceof CParser)) return new CParser (opt);\n\n var parser = this;\n clearBuffers(parser);\n parser.bufferCheckPosition = clarinet.MAX_BUFFER_LENGTH;\n parser.q = parser.c = parser.p = \"\";\n parser.opt = opt || {};\n parser.closed = parser.closedRoot = parser.sawRoot = false;\n parser.tag = parser.error = null;\n parser.state = S.BEGIN;\n parser.stack = new Array();\n // mostly just for error reporting\n parser.position = parser.column = 0;\n parser.line = 1;\n parser.slashed = false;\n parser.unicodeI = 0;\n parser.unicodeS = null;\n parser.depth = 0;\n emit(parser, \"onready\");\n }\n\n CParser.prototype =\n { end : function () { end(this); }\n , write : write\n , resume : function () { this.error = null; return this; }\n , close : function () { return this.write(null); }\n };\n\n try { Stream = require(\"stream\").Stream; }\n catch (ex) { Stream = function () {}; }\n\n function createStream (opt) { return new CStream(opt); }\n\n function CStream (opt) {\n if (!(this instanceof CStream)) return new CStream(opt);\n\n this._parser = new CParser(opt);\n this.writable = true;\n this.readable = true;\n\n //var Buffer = this.Buffer || function Buffer () {}; // if we don't have Buffers, fake it so we can do `var instanceof Buffer` and not throw an error\n this.bytes_remaining = 0; // number of bytes remaining in multi byte utf8 char to read after split boundary\n this.bytes_in_sequence = 0; // bytes in multi byte utf8 char to read\n this.temp_buffs = { \"2\": new Buffer(2), \"3\": new Buffer(3), \"4\": new Buffer(4) }; // for rebuilding chars split before boundary is reached\n this.string = '';\n\n var me = this;\n Stream.apply(me);\n\n this._parser.onend = function () { me.emit(\"end\"); };\n this._parser.onerror = function (er) {\n me.emit(\"error\", er);\n me._parser.error = null;\n };\n\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, \"on\" + ev,\n { get : function () { return me._parser[\"on\" + ev]; }\n , set : function (h) {\n if (!h) {\n me.removeAllListeners(ev);\n me._parser[\"on\"+ev] = h;\n return h;\n }\n me.on(ev, h);\n }\n , enumerable : true\n , configurable : false\n });\n });\n }\n\n CStream.prototype = Object.create(Stream.prototype,\n { constructor: { value: CStream } });\n\n CStream.prototype.write = function (data) {\n data = new Buffer(data);\n for (var i = 0; i < data.length; i++) {\n var n = data[i];\n\n // check for carry over of a multi byte char split between data chunks\n // & fill temp buffer it with start of this data chunk up to the boundary limit set in the last iteration\n if (this.bytes_remaining > 0) {\n for (var j = 0; j < this.bytes_remaining; j++) {\n this.temp_buffs[this.bytes_in_sequence][this.bytes_in_sequence - this.bytes_remaining + j] = data[j];\n }\n this.string = this.temp_buffs[this.bytes_in_sequence].toString();\n this.bytes_in_sequence = this.bytes_remaining = 0;\n\n // move iterator forward by number of byte read during sequencing\n i = i + j - 1;\n\n // pass data to parser and move forward to parse rest of data\n this._parser.write(this.string);\n this.emit(\"data\", this.string);\n continue;\n }\n\n // if no remainder bytes carried over, parse multi byte (>=128) chars one at a time\n if (this.bytes_remaining === 0 && n >= 128) {\n if ((n >= 194) && (n <= 223)) this.bytes_in_sequence = 2;\n if ((n >= 224) && (n <= 239)) this.bytes_in_sequence = 3;\n if ((n >= 240) && (n <= 244)) this.bytes_in_sequence = 4;\n if ((this.bytes_in_sequence + i) > data.length) { // if bytes needed to complete char fall outside data length, we have a boundary split\n\n for (var k = 0; k <= (data.length - 1 - i); k++) {\n this.temp_buffs[this.bytes_in_sequence][k] = data[i + k]; // fill temp data of correct size with bytes available in this chunk\n }\n this.bytes_remaining = (i + this.bytes_in_sequence) - data.length;\n\n // immediately return as we need another chunk to sequence the character\n return true;\n } else {\n this.string = data.slice(i, (i + this.bytes_in_sequence)).toString();\n i = i + this.bytes_in_sequence - 1;\n\n this._parser.write(this.string);\n this.emit(\"data\", this.string);\n continue;\n }\n }\n\n // is there a range of characters that are immediately parsable?\n for (var p = i; p < data.length; p++) {\n if (data[p] >= 128) break;\n }\n this.string = data.slice(i, p).toString();\n this._parser.write(this.string);\n this.emit(\"data\", this.string);\n i = p - 1;\n\n // handle any remaining characters using multibyte logic\n continue;\n }\n };\n\n CStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) this._parser.write(chunk.toString());\n this._parser.end();\n return true;\n };\n\n CStream.prototype.on = function (ev, handler) {\n var me = this;\n if (!me._parser[\"on\"+ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser[\"on\"+ev] = function () {\n var args = arguments.length === 1 ? [arguments[0]]\n : Array.apply(null, arguments);\n args.splice(0, 0, ev);\n me.emit.apply(me, args);\n };\n }\n return Stream.prototype.on.call(me, ev, handler);\n };\n\n CStream.prototype.destroy = function () {\n clearBuffers(this._parser);\n this.emit(\"close\");\n };\n\n function emit(parser, event, data) {\n if(clarinet.INFO) console.log('-- emit', event, data);\n if (parser[event]) parser[event](data);\n }\n\n function emitNode(parser, event, data) {\n closeValue(parser);\n emit(parser, event, data);\n }\n\n function closeValue(parser, event) {\n parser.textNode = textopts(parser.opt, parser.textNode);\n if (parser.textNode !== undefined) {\n emit(parser, (event ? event : \"onvalue\"), parser.textNode);\n }\n parser.textNode = undefined;\n }\n\n function closeNumber(parser) {\n if (parser.numberNode)\n emit(parser, \"onvalue\", parseFloat(parser.numberNode));\n parser.numberNode = \"\";\n }\n\n function textopts (opt, text) {\n if (text === undefined) {\n return text;\n }\n if (opt.trim) text = text.trim();\n if (opt.normalize) text = text.replace(/\\s+/g, \" \");\n return text;\n }\n\n function error (parser, er) {\n closeValue(parser);\n er += \"\\nLine: \"+parser.line+\n \"\\nColumn: \"+parser.column+\n \"\\nChar: \"+parser.c;\n er = new Error(er);\n parser.error = er;\n emit(parser, \"onerror\", er);\n return parser;\n }\n\n function end(parser) {\n if (parser.state !== S.VALUE || parser.depth !== 0)\n error(parser, \"Unexpected end\");\n\n closeValue(parser);\n parser.c = \"\";\n parser.closed = true;\n emit(parser, \"onend\");\n CParser.call(parser, parser.opt);\n return parser;\n }\n\n function isWhitespace(c) {\n return c === Char.carriageReturn || c === Char.lineFeed || c === Char.space || c === Char.tab;\n }\n\n function write (chunk) {\n var parser = this;\n if (this.error) throw this.error;\n if (parser.closed) return error(parser,\n \"Cannot write after close. Assign an onready handler.\");\n if (chunk === null) return end(parser);\n var i = 0, c = chunk.charCodeAt(0), p = parser.p;\n if (clarinet.DEBUG) console.log('write -> [' + chunk + ']');\n while (c) {\n p = c;\n parser.c = c = chunk.charCodeAt(i++);\n // if chunk doesnt have next, like streaming char by char\n // this way we need to check if previous is really previous\n // if not we need to reset to what the parser says is the previous\n // from buffer\n if(p !== c ) parser.p = p;\n else p = parser.p;\n\n if(!c) break;\n\n if (clarinet.DEBUG) console.log(i,c,clarinet.STATE[parser.state]);\n parser.position ++;\n if (c === Char.lineFeed) {\n parser.line ++;\n parser.column = 0;\n } else parser.column ++;\n switch (parser.state) {\n\n case S.BEGIN:\n if (c === Char.openBrace) parser.state = S.OPEN_OBJECT;\n else if (c === Char.openBracket) parser.state = S.OPEN_ARRAY;\n else if (!isWhitespace(c))\n error(parser, \"Non-whitespace before {[.\");\n continue;\n\n case S.OPEN_KEY:\n case S.OPEN_OBJECT:\n if (isWhitespace(c)) continue;\n if(parser.state === S.OPEN_KEY) parser.stack.push(S.CLOSE_KEY);\n else {\n if(c === Char.closeBrace) {\n emit(parser, 'onopenobject');\n this.depth++;\n emit(parser, 'oncloseobject');\n this.depth--;\n parser.state = parser.stack.pop() || S.VALUE;\n continue;\n } else parser.stack.push(S.CLOSE_OBJECT);\n }\n if(c === Char.doubleQuote) parser.state = S.STRING;\n else error(parser, \"Malformed object key should start with \\\"\");\n continue;\n\n case S.CLOSE_KEY:\n case S.CLOSE_OBJECT:\n if (isWhitespace(c)) continue;\n var event = (parser.state === S.CLOSE_KEY) ? 'key' : 'object';\n if(c === Char.colon) {\n if(parser.state === S.CLOSE_OBJECT) {\n parser.stack.push(S.CLOSE_OBJECT);\n closeValue(parser, 'onopenobject');\n this.depth++;\n } else closeValue(parser, 'onkey');\n parser.state = S.VALUE;\n } else if (c === Char.closeBrace) {\n emitNode(parser, 'oncloseobject');\n this.depth--;\n parser.state = parser.stack.pop() || S.VALUE;\n } else if(c === Char.comma) {\n if(parser.state === S.CLOSE_OBJECT)\n parser.stack.push(S.CLOSE_OBJECT);\n closeValue(parser);\n parser.state = S.OPEN_KEY;\n } else error(parser, 'Bad object');\n continue;\n\n case S.OPEN_ARRAY: // after an array there always a value\n case S.VALUE:\n if (isWhitespace(c)) continue;\n if(parser.state===S.OPEN_ARRAY) {\n emit(parser, 'onopenarray');\n this.depth++;\n parser.state = S.VALUE;\n if(c === Char.closeBracket) {\n emit(parser, 'onclosearray');\n this.depth--;\n parser.state = parser.stack.pop() || S.VALUE;\n continue;\n } else {\n parser.stack.push(S.CLOSE_ARRAY);\n }\n }\n if(c === Char.doubleQuote) parser.state = S.STRING;\n else if(c === Char.openBrace) parser.state = S.OPEN_OBJECT;\n else if(c === Char.openBracket) parser.state = S.OPEN_ARRAY;\n else if(c === Char.t) parser.state = S.TRUE;\n else if(c === Char.f) parser.state = S.FALSE;\n else if(c === Char.n) parser.state = S.NULL;\n else if(c === Char.minus) { // keep and continue\n parser.numberNode += \"-\";\n } else if(Char._0 <= c && c <= Char._9) {\n parser.numberNode += String.fromCharCode(c);\n parser.state = S.NUMBER_DIGIT;\n } else error(parser, \"Bad value\");\n continue;\n\n case S.CLOSE_ARRAY:\n if(c === Char.comma) {\n parser.stack.push(S.CLOSE_ARRAY);\n closeValue(parser, 'onvalue');\n parser.state = S.VALUE;\n } else if (c === Char.closeBracket) {\n emitNode(parser, 'onclosearray');\n this.depth--;\n parser.state = parser.stack.pop() || S.VALUE;\n } else if (isWhitespace(c))\n continue;\n else error(parser, 'Bad array');\n continue;\n\n case S.STRING:\n if (parser.textNode === undefined) {\n parser.textNode = \"\";\n }\n\n // thanks thejh, this is an about 50% performance improvement.\n var starti = i-1\n , slashed = parser.slashed\n , unicodeI = parser.unicodeI\n ;\n STRING_BIGLOOP: while (true) {\n if (clarinet.DEBUG)\n console.log(i,c,clarinet.STATE[parser.state]\n ,slashed);\n // zero means \"no unicode active\". 1-4 mean \"parse some more\". end after 4.\n while (unicodeI > 0) {\n parser.unicodeS += String.fromCharCode(c);\n c = chunk.charCodeAt(i++);\n parser.position++;\n if (unicodeI === 4) {\n // TODO this might be slow? well, probably not used too often anyway\n parser.textNode += String.fromCharCode(parseInt(parser.unicodeS, 16));\n unicodeI = 0;\n starti = i-1;\n } else {\n unicodeI++;\n }\n // we can just break here: no stuff we skipped that still has to be sliced out or so\n if (!c) break STRING_BIGLOOP;\n }\n if (c === Char.doubleQuote && !slashed) {\n parser.state = parser.stack.pop() || S.VALUE;\n parser.textNode += chunk.substring(starti, i-1);\n parser.position += i - 1 - starti;\n break;\n }\n if (c === Char.backslash && !slashed) {\n slashed = true;\n parser.textNode += chunk.substring(starti, i-1);\n parser.position += i - 1 - starti;\n c = chunk.charCodeAt(i++);\n parser.position++;\n if (!c) break;\n }\n if (slashed) {\n slashed = false;\n if (c === Char.n) { parser.textNode += '\\n'; }\n else if (c === Char.r) { parser.textNode += '\\r'; }\n else if (c === Char.t) { parser.textNode += '\\t'; }\n else if (c === Char.f) { parser.textNode += '\\f'; }\n else if (c === Char.b) { parser.textNode += '\\b'; }\n else if (c === Char.u) {\n // \\uxxxx. meh!\n unicodeI = 1;\n parser.unicodeS = '';\n } else {\n parser.textNode += String.fromCharCode(c);\n }\n c = chunk.charCodeAt(i++);\n parser.position++;\n starti = i-1;\n if (!c) break;\n else continue;\n }\n\n stringTokenPattern.lastIndex = i;\n var reResult = stringTokenPattern.exec(chunk);\n if (reResult === null) {\n i = chunk.length+1;\n parser.textNode += chunk.substring(starti, i-1);\n parser.position += i - 1 - starti;\n break;\n }\n i = reResult.index+1;\n c = chunk.charCodeAt(reResult.index);\n if (!c) {\n parser.textNode += chunk.substring(starti, i-1);\n parser.position += i - 1 - starti;\n break;\n }\n }\n parser.slashed = slashed;\n parser.unicodeI = unicodeI;\n continue;\n\n case S.TRUE:\n if (c === Char.r) parser.state = S.TRUE2;\n else error(parser, 'Invalid true started with t'+ c);\n continue;\n\n case S.TRUE2:\n if (c === Char.u) parser.state = S.TRUE3;\n else error(parser, 'Invalid true started with tr'+ c);\n continue;\n\n case S.TRUE3:\n if(c === Char.e) {\n emit(parser, \"onvalue\", true);\n parser.state = parser.stack.pop() || S.VALUE;\n } else error(parser, 'Invalid true started with tru'+ c);\n continue;\n\n case S.FALSE:\n if (c === Char.a) parser.state = S.FALSE2;\n else error(parser, 'Invalid false started with f'+ c);\n continue;\n\n case S.FALSE2:\n if (c === Char.l) parser.state = S.FALSE3;\n else error(parser, 'Invalid false started with fa'+ c);\n continue;\n\n case S.FALSE3:\n if (c === Char.s) parser.state = S.FALSE4;\n else error(parser, 'Invalid false started with fal'+ c);\n continue;\n\n case S.FALSE4:\n if (c === Char.e) {\n emit(parser, \"onvalue\", false);\n parser.state = parser.stack.pop() || S.VALUE;\n } else error(parser, 'Invalid false started with fals'+ c);\n continue;\n\n case S.NULL:\n if (c === Char.u) parser.state = S.NULL2;\n else error(parser, 'Invalid null started with n'+ c);\n continue;\n\n case S.NULL2:\n if (c === Char.l) parser.state = S.NULL3;\n else error(parser, 'Invalid null started with nu'+ c);\n continue;\n\n case S.NULL3:\n if(c === Char.l) {\n emit(parser, \"onvalue\", null);\n parser.state = parser.stack.pop() || S.VALUE;\n } else error(parser, 'Invalid null started with nul'+ c);\n continue;\n\n case S.NUMBER_DECIMAL_POINT:\n if(c === Char.period) {\n parser.numberNode += \".\";\n parser.state = S.NUMBER_DIGIT;\n } else error(parser, 'Leading zero not followed by .');\n continue;\n\n case S.NUMBER_DIGIT:\n if(Char._0 <= c && c <= Char._9) parser.numberNode += String.fromCharCode(c);\n else if (c === Char.period) {\n if(parser.numberNode.indexOf('.')!==-1)\n error(parser, 'Invalid number has two dots');\n parser.numberNode += \".\";\n } else if (c === Char.e || c === Char.E) {\n if(parser.numberNode.indexOf('e')!==-1 ||\n parser.numberNode.indexOf('E')!==-1 )\n error(parser, 'Invalid number has two exponential');\n parser.numberNode += \"e\";\n } else if (c === Char.plus || c === Char.minus) {\n if(!(p === Char.e || p === Char.E))\n error(parser, 'Invalid symbol in number');\n parser.numberNode += String.fromCharCode(c);\n } else {\n closeNumber(parser);\n i--; // go back one\n parser.state = parser.stack.pop() || S.VALUE;\n }\n continue;\n\n default:\n error(parser, \"Unknown state: \" + parser.state);\n }\n }\n if (parser.position >= parser.bufferCheckPosition)\n checkBufferLength(parser);\n return parser;\n }\n\n})(typeof exports === \"undefined\" ? clarinet = {} : exports);\n", "import clarinet from 'clarinet';\nimport { readBlobAsync, readBlobSync } from './helpers';\n\nexport interface JsonStream {\n pullAsync(numBytes: number): Promise>;\n pullSync(numBytes: number): Partial;\n done(): boolean;\n eof(): boolean;\n result: Partial;\n}\n\nexport function JsonStream(blob: Blob): JsonStream {\n let pos = 0;\n const parser = JsonParser(true);\n\n const rv = {\n async pullAsync(numBytes: number): Promise> {\n const slize = blob.slice(pos, pos + numBytes);\n pos += numBytes;\n const jsonPart = await readBlobAsync(slize, 'text');\n const result = parser.write(jsonPart);\n rv.result = result || {};\n return result;\n },\n pullSync(numBytes: number): Partial {\n const slize = blob.slice(pos, pos + numBytes);\n pos += numBytes;\n const jsonPart = readBlobSync(slize, 'text');\n const result = parser.write(jsonPart);\n rv.result = result || {};\n return result;\n },\n done() {\n return parser.done();\n },\n eof() {\n return pos >= blob.size;\n },\n result: {}\n }\n\n return rv;\n}\n\n\nexport function JsonParser (allowPartial: boolean) {\n const parser = (clarinet as any).parser();\n let level = 0;\n let result: any;\n const stack: any[][] = [];\n let obj: any;\n let key: string | null;\n let done = false;\n let array = false;\n\n parser.onopenobject = newKey => {\n const newObj = {};\n (newObj as any).incomplete = true;\n if (!result) result = newObj;\n if (obj) {\n stack.push([key,obj,array])\n if (allowPartial) {\n if (array) {\n obj.push(newObj);\n } else {\n obj[key!] = newObj;\n }\n }\n }\n obj = newObj;\n key = newKey;\n array = false;\n ++level;\n }\n parser.onkey = newKey => key = newKey;\n parser.onvalue = value => array ? obj.push(value) : obj[key!] = value;\n parser.oncloseobject = ()=>{\n delete obj.incomplete;\n key = null;\n if (--level === 0) {\n done = true;\n } else {\n const completedObj = obj;\n [key, obj, array] = stack.pop()!;\n if (!allowPartial) {\n if (array) {\n obj.push(completedObj);\n } else {\n obj[key!] = completedObj;\n }\n }\n }\n }\n parser.onopenarray = () => {\n const newObj = [];\n (newObj as any).incomplete = true;\n if (!result) result = newObj;\n if (obj) {\n stack.push([key,obj,array])\n if (allowPartial) {\n if (array) {\n obj.push(newObj);\n } else {\n obj[key!] = newObj;\n }\n }\n }\n obj = newObj;\n array = true;\n key = null;\n ++level;\n }\n parser.onclosearray = () => {\n delete obj.incomplete;\n key = null;\n if (--level === 0) {\n done = true;\n } else {\n const completedObj = obj;\n [key, obj, array] = stack.pop()!;\n if (!allowPartial) {\n if (array) {\n obj.push(completedObj);\n } else {\n obj[key!] = completedObj;\n }\n }\n }\n }\n\n return {\n write(jsonPart: string) {\n parser.write(jsonPart);\n return result;\n },\n done() {\n return done;\n }\n }\n}\n", "import Dexie from 'dexie';\nimport { extractDbSchema } from './helpers';\nimport { DexieExportJsonMeta, DexieExportJsonStructure, VERSION } from './json-structure';\nimport { TSON } from './tson';\nimport { JsonStream } from './json-stream';\n\nexport interface StaticImportOptions {\n noTransaction?: boolean;\n chunkSizeBytes?: number; // Default: DEFAULT_KILOBYTES_PER_CHUNK ( 1MB )\n filter?: (table: string, value: any, key?: any) => boolean;\n transform?: (table: string, value: any, key?: any) => ({value: any, key?: any});\n progressCallback?: (progress: ImportProgress) => boolean;\n}\n\nexport interface ImportOptions extends StaticImportOptions {\n acceptMissingTables?: boolean;\n acceptVersionDiff?: boolean;\n acceptNameDiff?: boolean;\n acceptChangedPrimaryKey?: boolean;\n overwriteValues?: boolean;\n clearTablesBeforeImport?: boolean;\n skipTables?: string[],\n noTransaction?: boolean;\n chunkSizeBytes?: number; // Default: DEFAULT_KILOBYTES_PER_CHUNK ( 1MB )\n filter?: (table: string, value: any, key?: any) => boolean;\n transform?: (table: string, value: any, key?: any) => ({value: any, key?: any});\n progressCallback?: (progress: ImportProgress) => boolean;\n}\n\nconst DEFAULT_KILOBYTES_PER_CHUNK = 1024;\n\nexport interface ImportProgress {\n totalTables: number;\n completedTables: number;\n totalRows: number | undefined;\n completedRows: number;\n done: boolean;\n}\n\nexport async function importDB(exportedData: Blob | JsonStream, options?: StaticImportOptions): Promise {\n options = options || {}; // All booleans defaults to false.\n const CHUNK_SIZE = options!.chunkSizeBytes || (DEFAULT_KILOBYTES_PER_CHUNK * 1024);\n const stream = await loadUntilWeGotEnoughData(exportedData, CHUNK_SIZE);\n const dbExport = stream.result.data!;\n const db = new Dexie(dbExport.databaseName);\n db.version(dbExport.databaseVersion).stores(extractDbSchema(dbExport));\n await importInto(db, stream, options);\n return db;\n}\n\nexport async function peakImportFile(exportedData: Blob): Promise {\n const stream = JsonStream(exportedData);\n while (!stream.eof()) {\n await stream.pullAsync(5 * 1024); // 5 k is normally enough for the headers. If not, it will just do another go.\n if (stream.result.data && stream.result.data!.data) {\n // @ts-ignore - TS won't allow us to delete a required property - but we are going to cast it.\n delete stream.result.data.data; // Don't return half-baked data array.\n break;\n }\n }\n return stream.result as DexieExportJsonMeta;\n}\n\nexport async function importInto(db: Dexie, exportedData: Blob | JsonStream, options?: ImportOptions): Promise {\n options = options || {}; // All booleans defaults to false.\n const CHUNK_SIZE = options!.chunkSizeBytes || (DEFAULT_KILOBYTES_PER_CHUNK * 1024);\n const jsonStream = await loadUntilWeGotEnoughData(exportedData, CHUNK_SIZE);\n let dbExportFile = jsonStream.result;\n const readBlobsSynchronously = 'FileReaderSync' in self; // true in workers only.\n\n const dbExport = dbExportFile.data!;\n const skipTables = options.skipTables? options.skipTables: []\n\n if (!options!.acceptNameDiff && db.name !== dbExport.databaseName)\n throw new Error(`Name differs. Current database name is ${db.name} but export is ${dbExport.databaseName}`);\n if (!options!.acceptVersionDiff && db.verno !== dbExport.databaseVersion) {\n // Possible feature: Call upgraders in some isolated way if this happens... ?\n throw new Error(`Database version differs. Current database is in version ${db.verno} but export is ${dbExport.databaseVersion}`);\n }\n \n const { progressCallback } = options;\n const progress: ImportProgress = {\n done: false,\n completedRows: 0,\n completedTables: 0,\n totalRows: dbExport.tables.reduce((p, c) => p + c.rowCount, 0),\n totalTables: dbExport.tables.length\n };\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n\n if (options!.clearTablesBeforeImport) {\n for (const table of db.tables) {\n if(skipTables.includes(table.name) ) continue;\n await table.clear();\n }\n }\n\n if (options.noTransaction) {\n await importAll();\n } else {\n await db.transaction('rw', db.tables, importAll);\n } \n\n async function importAll () {\n do {\n for (const tableExport of dbExport.data) {\n if(skipTables.includes(tableExport.tableName)) continue;\n if (!tableExport.rows) break; // Need to pull more!\n if (!(tableExport.rows as any).incomplete && tableExport.rows.length === 0)\n continue;\n\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n const tableName = tableExport.tableName;\n const table = db.table(tableName);\n const tableSchemaStr = dbExport.tables.filter(t => t.name === tableName)[0].schema;\n if (!table) {\n if (!options!.acceptMissingTables)\n throw new Error(`Exported table ${tableExport.tableName} is missing in installed database`);\n else\n continue;\n }\n if (!options!.acceptChangedPrimaryKey &&\n tableSchemaStr.split(',')[0] != table.schema.primKey.src) {\n throw new Error(`Primary key differs for table ${tableExport.tableName}. `);\n }\n\n const sourceRows = tableExport.rows\n \n // Our rows may be partial, so we need to ensure each one is completed before using it\n const rows: any[] = [];\n for(let i = 0; i < sourceRows.length; i++) {\n const obj = sourceRows[i];\n if (!obj.incomplete) {\n rows.push(TSON.revive(obj));\n } else {\n break;\n }\n }\n\n const filter = options!.filter;\n const transform = options!.transform;\n\n let filteredRows = filter ?\n tableExport.inbound ?\n rows.filter(value => filter(tableName, value)) :\n rows.filter(([key, value]) => filter(tableName, value, key)) :\n rows;\n if (transform) {\n filteredRows = filteredRows.map(tableExport.inbound ?\n value => transform(tableName, value).value :\n ([key, value]) => {\n const res = transform(tableName, value, key)\n return [res.key, res.value];\n });\n }\n const [keys, values] = tableExport.inbound ?\n [undefined, filteredRows] :\n [filteredRows.map(row=>row[0]), rows.map(row=>row[1])];\n\n if (options!.overwriteValues)\n await table.bulkPut(values, keys);\n else\n await table.bulkAdd(values, keys);\n \n progress.completedRows += rows.length;\n if (!(rows as any).incomplete) {\n progress.completedTables += 1;\n }\n sourceRows.splice(0, rows.length); // Free up RAM, keep existing array instance.\n }\n\n // Avoid unnescessary loops in \"for (const tableExport of dbExport.data)\" \n while (dbExport.data.length > 0 && dbExport.data[0].rows && !(dbExport.data[0].rows as any).incomplete) {\n // We've already imported all rows from the first table. Delete its occurrence\n dbExport.data.splice(0, 1); \n }\n if (!jsonStream.done() && !jsonStream.eof()) {\n // Pull some more (keeping transaction alive)\n if (readBlobsSynchronously) {\n // If we can pull from blob synchronically, we don't have to\n // keep transaction alive using Dexie.waitFor().\n // This will only be possible in workers.\n jsonStream.pullSync(CHUNK_SIZE);\n } else {\n await Dexie.waitFor(jsonStream.pullAsync(CHUNK_SIZE));\n }\n } else break;\n } while (true)\n }\n progress.done = true;\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n}\n\nasync function loadUntilWeGotEnoughData(exportedData: Blob | JsonStream, CHUNK_SIZE: number): Promise> {\n const stream = ('slice' in exportedData ?\n JsonStream(exportedData) :\n exportedData);\n\n while (!stream.eof()) {\n await stream.pullAsync(CHUNK_SIZE);\n\n if (stream.result.data && stream.result.data!.data)\n break;\n }\n const dbExportFile = stream.result;\n if (!dbExportFile || dbExportFile.formatName != \"dexie\")\n throw new Error(`Given file is not a dexie export`);\n if (dbExportFile.formatVersion! > VERSION) {\n throw new Error(`Format version ${dbExportFile.formatVersion} not supported`);\n }\n if (!dbExportFile.data!) {\n throw new Error(`No data in export file`);\n }\n if (!dbExportFile.data!.databaseName) {\n throw new Error(`Missing databaseName in export file`);\n }\n if (!dbExportFile.data!.databaseVersion) {\n throw new Error(`Missing databaseVersion in export file`);\n }\n if (!dbExportFile.data!.tables) {\n throw new Error(`Missing tables in export file`);\n }\n return stream; \n}\n", "import Dexie from 'dexie';\nimport { ExportOptions, ExportProgress, exportDB } from './export';\nimport { importDB, peakImportFile, ImportOptions, importInto, StaticImportOptions } from './import';\nimport { DexieExportJsonMeta } from './json-structure';\n\nexport { exportDB, ExportOptions, ExportProgress};\nexport { importDB, importInto, peakImportFile, ImportOptions, DexieExportJsonMeta};\n\n//\n// Extend Dexie interface (typescript-wise)\n//\ndeclare module 'dexie' {\n // Extend methods on db\n interface Dexie {\n export(options?: ExportOptions): Promise;\n import(blob: Blob, options?: ImportOptions): Promise;\n }\n interface DexieConstructor {\n import(blob: Blob, options?: StaticImportOptions): Promise;\n }\n}\n\n//\n// Extend Dexie interface (runtime wise)\n//\n\nDexie.prototype.export = function (this: Dexie, options?: ExportOptions) {\n return exportDB(this, options);\n};\nDexie.prototype.import = function (this: Dexie, blob: Blob, options?: ImportOptions) {\n return importInto(this, blob, options);\n};\nDexie.import = (blob: Blob, options?: StaticImportOptions) => importDB(blob, options);\n\nexport default ()=>{\n throw new Error(\"This addon extends Dexie.prototype globally and does not have be included in Dexie constructor's addons options.\")\n};\n"], - "mappings": ";;;AACO,IAAM,UACT,OAAO,eAAe,cAAc,aACpC,OAAO,SAAS,cAAc,OAC9B,OAAO,WAAW,cAAc,SAChC;ACJG,IAAM,OAAO,OAAO;AACpB,IAAM,UAAU,MAAM;AAC7B,IAAI,OAAO,YAAY,eAAe,CAAC,QAAQ,SAAQ;AAInD,UAAQ,UAAU;;SAIN,OAA0C,KAAQ,WAAY;AAC1E,MAAI,OAAO,cAAc;AAAU,WAAO;AAC1C,OAAK,SAAS,EAAE,QAAQ,SAAU,KAAG;AACjC,QAAI,GAAG,IAAI,UAAU,GAAG;GAC3B;AACD,SAAO;AACX;AAEO,IAAM,WAAW,OAAO;AACxB,IAAM,UAAU,CAAA,EAAG;SACV,OAAO,KAAK,MAAI;AAC5B,SAAO,QAAQ,KAAK,KAAK,IAAI;AACjC;SAEgB,MAAO,OAAO,WAAS;AACnC,MAAI,OAAO,cAAc;AAAY,gBAAY,UAAU,SAAS,KAAK,CAAC;AAC1E,GAAC,OAAO,YAAY,cAAc,OAAO,QAAQ,SAAS,SAAS,EAAE,QAAQ,SAAG;AAC5E,YAAQ,OAAO,KAAK,UAAU,GAAG,CAAC;GACrC;AACL;AAEO,IAAM,iBAAiB,OAAO;SAErB,QAAQ,KAAK,MAAM,kBAAkB,SAAQ;AACzD,iBAAe,KAAK,MAAM,OAAO,oBAAoB,OAAO,kBAAkB,KAAK,KAAK,OAAO,iBAAiB,QAAQ,aACpH,EAAC,KAAK,iBAAiB,KAAK,KAAK,iBAAiB,KAAK,cAAc,KAAI,IACzE,EAAC,OAAO,kBAAkB,cAAc,MAAM,UAAU,KAAI,GAAG,OAAO,CAAC;AAC/E;SAEgB,OAAO,OAAK;AACxB,SAAO;IACH,MAAM,SAAU,QAAM;AAClB,YAAM,YAAY,OAAO,OAAO,OAAO,SAAS;AAChD,cAAQ,MAAM,WAAW,eAAe,KAAK;AAC7C,aAAO;QACH,QAAQ,MAAM,KAAK,MAAM,MAAM,SAAS;;;;AAIxD;AAEO,IAAM,2BAA2B,OAAO;SAE/B,sBAAsB,KAAK,MAAI;AAC3C,QAAM,KAAK,yBAAyB,KAAK,IAAI;AAC7C,MAAI;AACJ,SAAO,OAAO,QAAQ,SAAS,GAAG,MAAM,sBAAuB,OAAO,IAAI;AAC9E;AAEA,IAAM,SAAS,CAAA,EAAG;SACF,MAAM,MAAM,OAAQ,KAAI;AACpC,SAAO,OAAO,KAAK,MAAM,OAAO,GAAG;AACvC;SAEgB,SAAS,UAAU,kBAAgB;AAC/C,SAAO,iBAAiB,QAAQ;AACpC;SAEgB,OAAQ,GAAC;AACrB,MAAI,CAAC;AAAG,UAAM,IAAI,MAAM,kBAAkB;AAC9C;SAEgBA,OAAK,IAAE;AAEnB,MAAI,QAAQ;AAAc,iBAAa,EAAE;;AAAQ,eAAW,IAAI,CAAC;AACrE;SAWgB,cAAoB,OAAY,WAA0C;AACtF,SAAO,MAAM,OAAO,CAAC,QAAQ,MAAM,MAAC;AAChC,QAAI,eAAe,UAAU,MAAM,CAAC;AACpC,QAAI;AAAc,aAAO,aAAa,CAAC,CAAC,IAAI,aAAa,CAAC;AAC1D,WAAO;KACR,CAAA,CAAE;AACT;SAYgB,SAAS,IAA4B,SAAS,MAAK;AAC/D,MAAI;AACA,OAAG,MAAM,MAAM,IAAI;WACd,IAAI;AACT,eAAW,QAAQ,EAAE;;AAE7B;SAEgB,aAAa,KAAK,SAAO;AAErC,MAAI,OAAO,YAAY,YAAY,OAAO,KAAK,OAAO;AAAG,WAAO,IAAI,OAAO;AAC3E,MAAI,CAAC;AAAS,WAAO;AACrB,MAAI,OAAO,YAAY,UAAU;AAC7B,QAAI,KAAK,CAAA;AACT,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,IAAI,GAAG,EAAE,GAAG;AAC5C,UAAI,MAAM,aAAa,KAAK,QAAQ,CAAC,CAAC;AACtC,SAAG,KAAK,GAAG;;AAEf,WAAO;;AAEX,MAAI,SAAS,QAAQ,QAAQ,GAAG;AAChC,MAAI,WAAW,IAAI;AACf,QAAI,WAAW,IAAI,QAAQ,OAAO,GAAG,MAAM,CAAC;AAC5C,WAAO,aAAa,SAAY,SAAY,aAAa,UAAU,QAAQ,OAAO,SAAS,CAAC,CAAC;;AAEjG,SAAO;AACX;SAEgB,aAAa,KAAK,SAAS,OAAK;AAC5C,MAAI,CAAC,OAAO,YAAY;AAAW;AACnC,MAAI,cAAc,UAAU,OAAO,SAAS,GAAG;AAAG;AAClD,MAAI,OAAO,YAAY,YAAY,YAAY,SAAS;AACpD,WAAO,OAAO,UAAU,YAAY,YAAY,KAAK;AACrD,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,IAAI,GAAG,EAAE,GAAG;AAC5C,mBAAa,KAAK,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC;;SAEvC;AACH,QAAI,SAAS,QAAQ,QAAQ,GAAG;AAChC,QAAI,WAAW,IAAI;AACf,UAAI,iBAAiB,QAAQ,OAAO,GAAG,MAAM;AAC7C,UAAI,mBAAmB,QAAQ,OAAO,SAAS,CAAC;AAChD,UAAI,qBAAqB;AACrB,YAAI,UAAU,QAAW;AACrB,cAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,SAAS,cAAc,CAAC;AAAG,gBAAI,OAAO,gBAAgB,CAAC;;AAC7E,mBAAO,IAAI,cAAc;;AAC3B,cAAI,cAAc,IAAI;WAC5B;AACD,YAAI,WAAW,IAAI,cAAc;AACjC,YAAI,CAAC,YAAY,CAAC,OAAO,KAAK,cAAc;AAAG,qBAAY,IAAI,cAAc,IAAI,CAAA;AACjF,qBAAa,UAAU,kBAAkB,KAAK;;WAE/C;AACH,UAAI,UAAU,QAAW;AACrB,YAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,SAAS,OAAO,CAAC;AAAG,cAAI,OAAO,SAAS,CAAC;;AAC/D,iBAAO,IAAI,OAAO;;AACpB,YAAI,OAAO,IAAI;;;AAGlC;SAEgB,aAAa,KAAK,SAAO;AACrC,MAAI,OAAO,YAAY;AACnB,iBAAa,KAAK,SAAS,MAAS;WAC/B,YAAY;AACjB,KAAA,EAAG,IAAI,KAAK,SAAS,SAAS,IAAE;AAC5B,mBAAa,KAAK,IAAI,MAAS;KAClC;AACT;SAEgB,aAAa,KAAG;AAC5B,MAAI,KAAK,CAAA;AACT,WAAS,KAAK,KAAK;AACf,QAAI,OAAO,KAAK,CAAC;AAAG,SAAG,CAAC,IAAI,IAAI,CAAC;;AAErC,SAAO;AACX;AAEA,IAAM,SAAS,CAAA,EAAG;SACF,QAAY,GAAc;AACtC,SAAO,OAAO,MAAM,CAAA,GAAI,CAAC;AAC7B;AAGA,IAAM,qBACF,iNACC,MAAM,GAAG,EAAE,OACR,QAAQ,CAAC,GAAE,IAAG,IAAG,EAAE,EAAE,IAAI,SAAK,CAAC,OAAM,QAAO,OAAO,EAAE,IAAI,OAAG,IAAE,MAAI,OAAO,CAAC,CAAC,CAAC,EAC9E,OAAO,OAAG,QAAQ,CAAC,CAAC;AAC1B,IAAM,iBAAiB,mBAAmB,IAAI,OAAG,QAAQ,CAAC,CAAC;AACvB,cAAc,oBAAoB,OAAG,CAAC,GAAE,IAAI,CAAC;AAEjF,IAAI,eAAwC;SAC5B,UAAa,KAAM;AAC/B,iBAAe,OAAO,YAAY,eAAe,oBAAI,QAAO;AAC5D,QAAM,KAAK,eAAe,GAAG;AAC7B,iBAAe;AACf,SAAO;AACX;AAEA,SAAS,eAAkB,KAAM;AAC7B,MAAI,CAAC,OAAO,OAAO,QAAQ;AAAU,WAAO;AAC5C,MAAI,KAAK,gBAAgB,aAAa,IAAI,GAAG;AAC7C,MAAI;AAAI,WAAO;AACf,MAAI,QAAQ,GAAG,GAAG;AACd,SAAK,CAAA;AACL,oBAAgB,aAAa,IAAI,KAAK,EAAE;AACxC,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,IAAI,GAAG,EAAE,GAAG;AACxC,SAAG,KAAK,eAAe,IAAI,CAAC,CAAC,CAAC;;aAE3B,eAAe,QAAQ,IAAI,WAAW,KAAK,GAAG;AACrD,SAAK;SACF;AACH,UAAM,QAAQ,SAAS,GAAG;AAC1B,SAAK,UAAU,OAAO,YAAY,CAAA,IAAK,OAAO,OAAO,KAAK;AAC1D,oBAAgB,aAAa,IAAI,KAAK,EAAE;AACxC,aAAS,QAAQ,KAAK;AAClB,UAAI,OAAO,KAAK,IAAI,GAAG;AACnB,WAAG,IAAI,IAAI,eAAe,IAAI,IAAI,CAAC;;;;AAI/C,SAAO;AACX;AAEA,IAAM,EAAC,SAAQ,IAAI,CAAA;SACH,YAAY,GAAS;AACjC,SAAO,SAAS,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE;AACvC;AAGO,IAAM,iBAAiB,OAAO,WAAW,cAC5C,OAAO,WACP;AACG,IAAM,gBAAgB,OAAO,mBAAmB,WAAW,SAAS,GAAC;AACxE,MAAI;AACJ,SAAO,KAAK,SAAS,IAAI,EAAE,cAAc,MAAM,EAAE,MAAM,CAAC;AAC5D,IAAI,WAAA;AAAc,SAAO;AAAK;AAKvB,IAAM,gBAAgB,CAAA;SASb,WAAY,WAAS;AACjC,MAAI,GAAG,GAAG,GAAG;AACb,MAAI,UAAU,WAAW,GAAG;AACxB,QAAI,QAAQ,SAAS;AAAG,aAAO,UAAU,MAAK;AAC9C,QAAI,SAAS,iBAAiB,OAAO,cAAc;AAAU,aAAO,CAAC,SAAS;AAC9E,QAAK,KAAK,cAAc,SAAS,GAAI;AACjC,UAAI,CAAA;AACJ,aAAQ,IAAI,GAAG,KAAI,GAAK,CAAC,EAAE;AAAM,UAAE,KAAK,EAAE,KAAK;AAC/C,aAAO;;AAEX,QAAI,aAAa;AAAM,aAAO,CAAC,SAAS;AACxC,QAAI,UAAU;AACd,QAAI,OAAO,MAAM,UAAU;AACvB,UAAI,IAAI,MAAM,CAAC;AACf,aAAO;AAAK,UAAE,CAAC,IAAI,UAAU,CAAC;AAC9B,aAAO;;AAEX,WAAO,CAAC,SAAS;;AAErB,MAAI,UAAU;AACd,MAAI,IAAI,MAAM,CAAC;AACf,SAAO;AAAK,MAAE,CAAC,IAAI,UAAU,CAAC;AAC9B,SAAO;AACX;AACO,IAAM,kBAAkB,OAAO,WAAW,cAC3C,CAAC,OAAiB,GAAG,OAAO,WAAW,MAAM,kBAC7C,MAAI;ACvRH,IAAI,QAAQ,OAAO,aAAa,eAE/B,6CAA6C,KAAK,SAAS,IAAI;SAEvD,SAAS,OAAO,QAAM;AAClC,UAAQ;AACR,kBAAgB;AACpB;AAEO,IAAI,gBAAgB,MAAM;AAE1B,IAAM,wBAAwB,CAAC,IAAI,MAAM,EAAE,EAAE;SAEpC,oBAAiB;AAE7B,MAAI;AAAuB,QAAI;AAM3B,wBAAkB;AAClB,YAAM,IAAI,MAAK;aACX,GAAG;AACP,aAAO;;AAEX,SAAO,IAAI,MAAK;AACpB;SAEgB,YAAY,WAAW,kBAAgB;AACnD,MAAI,QAAQ,UAAU;AACtB,MAAI,CAAC;AAAO,WAAO;AACnB,qBAAoB,oBAAoB;AACxC,MAAI,MAAM,QAAQ,UAAU,IAAI,MAAM;AAClC,yBAAqB,UAAU,OAAO,UAAU,SAAS,MAAM,IAAI,EAAE;AACzE,SAAO,MAAM,MAAM,IAAI,EAClB,MAAM,gBAAgB,EACtB,OAAO,aAAa,EACpB,IAAI,WAAS,OAAO,KAAK,EACzB,KAAK,EAAE;AAChB;ACvCA,IAAI,kBAAkB;EAClB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ,IAAI,mBAAmB;EACnB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ,IAAI,YAAY,gBAAgB,OAAO,gBAAgB;AAEvD,IAAI,eAAe;EACf,gBAAgB;EAChB,gBAAgB;EAChB,OAAO;EACP,qBAAqB;EACrB,YAAY;;SAMA,WAAY,MAAM,KAAG;AAMjC,OAAK,KAAK,kBAAiB;AAC3B,OAAK,OAAO;AACZ,OAAK,UAAU;AACnB;AAEA,OAAO,UAAU,EAAE,KAAK,KAAK,EAAE,OAAO;EAClC,OAAO;IACH,KAAK,WAAA;AACD,aAAO,KAAK,WACP,KAAK,SAAS,KAAK,OAAO,OAAO,KAAK,UAAU,YAAY,KAAK,IAAI,CAAC;;;EAGnF,UAAU,WAAA;AAAY,WAAO,KAAK,OAAO,OAAO,KAAK;EAAQ;CAChE;AAED,SAAS,qBAAsB,KAAK,UAAQ;AACxC,SAAO,MAAM,eAAe,OAAO,KAAK,QAAQ,EAC3C,IAAI,SAAK,SAAS,GAAG,EAAE,SAAQ,CAAE,EACjC,OAAO,CAAC,GAAE,GAAE,MAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EAClC,KAAK,IAAI;AAClB;SAMgB,YAAa,KAAK,UAAU,cAAc,YAAU;AAChE,OAAK,KAAK,kBAAiB;AAC3B,OAAK,WAAW;AAChB,OAAK,aAAa;AAClB,OAAK,eAAe;AACpB,OAAK,UAAU,qBAAqB,KAAK,QAAQ;AACrD;AACA,OAAO,WAAW,EAAE,KAAK,UAAU;SAEnB,UAAW,KAAK,UAAQ;AACpC,OAAK,KAAK,kBAAiB;AAC3B,OAAK,OAAO;AACZ,OAAK,WAAW,OAAO,KAAK,QAAQ,EAAE,IAAI,SAAO,SAAS,GAAG,CAAC;AAC9D,OAAK,gBAAgB;AACrB,OAAK,UAAU,qBAAqB,KAAK,QAAQ;AACrD;AACA,OAAO,SAAS,EAAE,KAAK,UAAU;AAU1B,IAAI,WAAW,UAAU,OAAO,CAAC,KAAI,UAAQ,IAAI,IAAI,IAAE,OAAK,SAAQ,MAAK,CAAA,CAAE;AAGlF,IAAM,gBAAgB;AAEf,IAAI,aAAa,UAAU,OAAO,CAAC,KAAI,SAAI;AAO9C,MAAI,WAAW,OAAO;AACtB,WAASC,YAAY,YAAY,OAAK;AAClC,SAAK,KAAK,kBAAiB;AAC3B,SAAK,OAAO;AACZ,QAAI,CAAC,YAAY;AACb,WAAK,UAAU,aAAa,IAAI,KAAK;AACrC,WAAK,QAAQ;eACN,OAAO,eAAe,UAAU;AACvC,WAAK,UAAU,GAAG,UAAU,GAAG,CAAC,QAAQ,KAAK,QAAQ,KAAK;AAC1D,WAAK,QAAQ,SAAS;eACf,OAAO,eAAe,UAAU;AACvC,WAAK,UAAU,GAAG,WAAW,IAAI,IAAI,WAAW,OAAO;AACvD,WAAK,QAAQ;;;AAGrB,SAAOA,WAAU,EAAE,KAAK,aAAa;AACrC,MAAI,IAAI,IAAEA;AACV,SAAO;AACX,GAAE,CAAA,CAAE;AAGJ,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AAEZ,IAAI,eAAe,iBAAiB,OAAO,CAAC,KAAK,SAAI;AACxD,MAAI,OAAO,OAAO,IAAI,WAAW,IAAI;AACrC,SAAO;AACX,GAAG,CAAA,CAAE;SAEW,SAAU,UAAU,SAAO;AACvC,MAAI,CAAC,YAAY,oBAAoB,cAAc,oBAAoB,aAAa,oBAAoB,eAAe,CAAC,SAAS,QAAQ,CAAC,aAAa,SAAS,IAAI;AAChK,WAAO;AACX,MAAI,KAAK,IAAI,aAAa,SAAS,IAAI,EAAE,WAAW,SAAS,SAAS,QAAQ;AAC9E,MAAI,WAAW,UAAU;AAErB,YAAQ,IAAI,SAAS,EAAC,KAAK,WAAA;AACvB,aAAO,KAAK,MAAM;MACrB,CAAC;;AAEN,SAAO;AACX;AAEO,IAAI,qBAAqB,UAAU,OAAO,CAAC,KAAK,SAAI;AACvD,MAAI,CAAC,UAAS,QAAO,OAAO,EAAE,QAAQ,IAAI,MAAM;AAC5C,QAAI,OAAO,OAAO,IAAI,WAAW,IAAI;AACzC,SAAO;AACX,GAAG,CAAA,CAAE;AAEL,mBAAmB,cAAc;AACjC,mBAAmB,aAAa;AAChC,mBAAmB,YAAY;SC3Kf,MAAG;AAAA;SACH,OAAO,KAAG;AAAI,SAAO;AAAI;SACzB,kBAAkB,IAAI,IAAE;AAGpC,MAAI,MAAM,QAAQ,OAAO;AAAQ,WAAO;AACxC,SAAO,SAAU,KAAG;AAChB,WAAO,GAAG,GAAG,GAAG,CAAC;;AAEzB;SAEgB,SAAS,KAAK,KAAG;AAC7B,SAAO,WAAA;AACH,QAAI,MAAM,MAAM,SAAS;AACzB,QAAI,MAAM,MAAM,SAAS;;AAEjC;SAEgB,kBAAkB,IAAI,IAAE;AAGpC,MAAI,OAAO;AAAK,WAAO;AACvB,SAAO,WAAA;AACH,QAAI,MAAM,GAAG,MAAM,MAAM,SAAS;AAClC,QAAI,QAAQ;AAAW,gBAAU,CAAC,IAAI;AACtC,QAAI,YAAY,KAAK,WACjB,UAAU,KAAK;AACnB,SAAK,YAAY;AACjB,SAAK,UAAU;AACf,QAAI,OAAO,GAAG,MAAM,MAAM,SAAS;AACnC,QAAI;AAAW,WAAK,YAAY,KAAK,YAAY,SAAS,WAAW,KAAK,SAAS,IAAI;AACvF,QAAI;AAAS,WAAK,UAAU,KAAK,UAAU,SAAS,SAAS,KAAK,OAAO,IAAI;AAC7E,WAAO,SAAS,SAAY,OAAO;;AAE3C;SAEgB,kBAAkB,IAAI,IAAE;AACpC,MAAI,OAAO;AAAK,WAAO;AACvB,SAAO,WAAA;AACH,OAAG,MAAM,MAAM,SAAS;AACxB,QAAI,YAAY,KAAK,WACjB,UAAU,KAAK;AACnB,SAAK,YAAY,KAAK,UAAU;AAChC,OAAG,MAAM,MAAM,SAAS;AACxB,QAAI;AAAW,WAAK,YAAY,KAAK,YAAY,SAAS,WAAW,KAAK,SAAS,IAAI;AACvF,QAAI;AAAS,WAAK,UAAU,KAAK,UAAU,SAAS,SAAS,KAAK,OAAO,IAAI;;AAErF;SAEgB,kBAAkB,IAAI,IAAE;AACpC,MAAI,OAAO;AAAK,WAAO;AACvB,SAAO,SAAU,eAAa;AAC1B,QAAI,MAAM,GAAG,MAAM,MAAM,SAAS;AAClC,WAAO,eAAe,GAAG;AACzB,QAAI,YAAY,KAAK,WACjB,UAAU,KAAK;AACnB,SAAK,YAAY;AACjB,SAAK,UAAU;AACf,QAAI,OAAO,GAAG,MAAM,MAAM,SAAS;AACnC,QAAI;AAAW,WAAK,YAAY,KAAK,YAAY,SAAS,WAAW,KAAK,SAAS,IAAI;AACvF,QAAI;AAAS,WAAK,UAAU,KAAK,UAAU,SAAS,SAAS,KAAK,OAAO,IAAI;AAC7E,WAAO,QAAQ,SACV,SAAS,SAAY,SAAY,OACjC,OAAO,KAAK,IAAI;;AAE7B;SAEgB,2BAA2B,IAAI,IAAE;AAC7C,MAAI,OAAO;AAAK,WAAO;AACvB,SAAO,WAAA;AACH,QAAI,GAAG,MAAM,MAAM,SAAS,MAAM;AAAO,aAAO;AAChD,WAAO,GAAG,MAAM,MAAM,SAAS;;AAEvC;SAUgB,gBAAgB,IAAI,IAAE;AAClC,MAAI,OAAO;AAAK,WAAO;AACvB,SAAO,WAAA;AACH,QAAI,MAAM,GAAG,MAAM,MAAM,SAAS;AAClC,QAAI,OAAO,OAAO,IAAI,SAAS,YAAY;AACvC,UAAI,OAAO,MACP,IAAI,UAAU,QACd,OAAO,IAAI,MAAM,CAAC;AACtB,aAAO;AAAK,aAAK,CAAC,IAAI,UAAU,CAAC;AACjC,aAAO,IAAI,KAAK,WAAA;AACZ,eAAO,GAAG,MAAM,MAAM,IAAI;OAC7B;;AAEL,WAAO,GAAG,MAAM,MAAM,SAAS;;AAEvC;AChEA,IAAI,WAAW,CAAA;AAGf,IACI,yBAAyB;AAD7B,IAGI,kBAAkB;AAHtB,IAII,kBAAkB;AAJtB,IAKI,CAAC,uBAAuB,oBAAoB,qBAAqB,IAAI,OAAO,YAAY,cACpF,CAAA,KACC,MAAA;AACG,MAAI,UAAU,QAAQ,QAAO;AAC7B,MAAI,OAAO,WAAW,eAAe,CAAC,OAAO;AACzC,WAAO,CAAC,SAAS,SAAS,OAAO,GAAG,OAAO;AAE/C,QAAM,UAAU,OAAO,OAAO,OAAO,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AACnE,SAAO;IACH;IACA,SAAS,OAAO;IAChB;;GAEP;AAlBT,IAmBI,oBAAoB,sBAAsB,mBAAmB;AAE1D,IAAM,gBAAgB,yBAAyB,sBAAsB;AAC5E,IAAM,qBAAqB,CAAC,CAAC;AAE7B,IAAI,wBAAwB;AAS5B,IAAI,uBAAuB,wBACvB,MAAA;AAAO,wBAAsB,KAAK,YAAY;AAAE,IAEhD,QAAQ,eAEJ,aAAa,KAAK,MAAM,YAAY,IACpC,QAAQ,mBAEJ,MAAA;AACI,MAAI,YAAY,SAAS,cAAc,KAAK;AAC5C,EAAC,IAAI,iBAAiB,MAAA;AAClB,iBAAY;AACZ,gBAAY;GACf,EAAG,QAAQ,WAAW,EAAE,YAAY,KAAI,CAAE;AAC3C,YAAU,aAAa,KAAK,GAAG;IAKnC,MAAA;AAAK,aAAW,cAAa,CAAC;AAAE;AAO5C,IAAI,OAAO,SAAU,UAAU,MAAI;AAC/B,iBAAe,KAAK,CAAC,UAAU,IAAI,CAAC;AACpC,MAAI,sBAAsB;AACtB,yBAAoB;AACpB,2BAAuB;;AAE/B;AAEA,IAAI,qBAAqB;AAAzB,IACI,uBAAuB;AAD3B,IAEI,kBAAkB,CAAA;AAFtB,IAGI,kBAAkB,CAAA;AAHtB,IAII,mBAAmB;AAJvB,IAKI,kBAAkB;AAEf,IAAI,YAAY;EACnB,IAAI;EACJ,QAAQ;EACR,KAAK;EACL,YAAY,CAAA;EACZ,aAAa;EACb,KAAK;EACL,KAAK,CAAA;EACL,UAAU,WAAA;AACN,SAAK,WAAW,QAAQ,QAAE;AACtB,UAAI;AACA,oBAAY,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;eACnB,GAAG;MAAA;KACf;;;AAIF,IAAI,MAAM;AAEV,IAAI,iBAAiB,CAAA;AACrB,IAAI,oBAAoB;AACxB,IAAI,iBAAiB,CAAA;SAEJ,aAAa,IAAE;AACnC,MAAI,OAAO,SAAS;AAAU,UAAM,IAAI,UAAU,sCAAsC;AACxF,OAAK,aAAa,CAAA;AAClB,OAAK,cAAc;AAQnB,OAAK,OAAO;AAEZ,MAAI,MAAO,KAAK,OAAO;AAEvB,MAAI,OAAO;AACP,SAAK,eAAe,kBAAiB;AACrC,SAAK,QAAQ;AACb,SAAK,WAAW;;AAGpB,MAAI,OAAO,OAAO,YAAY;AAC1B,QAAI,OAAO;AAAU,YAAM,IAAI,UAAU,gBAAgB;AAGzD,SAAK,SAAS,UAAU,CAAC;AACzB,SAAK,SAAS,UAAU,CAAC;AACzB,QAAI,KAAK,WAAW;AAChB,sBAAgB,MAAM,KAAK,MAAM;AACrC;;AAGJ,OAAK,SAAS;AACd,OAAK,SAAS;AACd,IAAE,IAAI;AACN,qBAAmB,MAAM,EAAE;AAC/B;AAGA,IAAM,WAAW;EACb,KAAK,WAAA;AACD,QAAI,MAAM,KAAK,cAAc;AAE7B,aAAS,KAAM,aAAa,YAAU;AAClC,UAAI,gBAAgB,CAAC,IAAI,WAAW,QAAQ,OAAO,gBAAgB;AACnE,YAAM,UAAU,iBAAiB,CAAC,wBAAuB;AACzD,UAAI,KAAK,IAAI,aAAa,CAAC,SAAS,WAAM;AACtC,4BAAoB,MAAM,IAAI,SAC1B,0BAA0B,aAAa,KAAK,eAAe,OAAO,GAClE,0BAA0B,YAAY,KAAK,eAAe,OAAO,GACjE,SACA,QACA,GAAG,CAAC;OACX;AACD,eAAS,sBAAsB,IAAI,IAAI;AACvC,aAAO;;AAGX,SAAK,YAAY;AAEjB,WAAO;;EAIX,KAAK,SAAU,OAAK;AAChB,YAAS,MAAM,QAAQ,SAAS,MAAM,cAAc,WAChD,WACA;MACI,KAAK,WAAA;AACD,eAAO;;MAEX,KAAK,SAAS;KACjB;;;AAKb,MAAM,aAAa,WAAW;EAC1B,MAAM;EACN,OAAO,SAAU,aAAa,YAAU;AAEpC,wBAAoB,MAAM,IAAI,SAAS,MAAM,MAAM,aAAa,YAAY,GAAG,CAAC;;EAGpF,OAAO,SAAU,YAAU;AACvB,QAAI,UAAU,WAAW;AAAG,aAAO,KAAK,KAAK,MAAM,UAAU;AAE7D,QAAIC,QAAO,UAAU,CAAC,GAClB,UAAU,UAAU,CAAC;AACzB,WAAO,OAAOA,UAAS,aAAa,KAAK,KAAK,MAAM,SAGhD,eAAeA,QAAO,QAAQ,GAAG,IAAI,cAAc,GAAG,CAAC,IACzD,KAAK,KAAK,MAAM,SAId,OAAO,IAAI,SAASA,QAAO,QAAQ,GAAG,IAAI,cAAc,GAAG,CAAC;;EAGpE,SAAS,SAAU,WAAS;AACxB,WAAO,KAAK,KAAK,WAAK;AAClB,gBAAS;AACT,aAAO;OACR,SAAG;AACF,gBAAS;AACT,aAAO,cAAc,GAAG;KAC3B;;EAGL,OAAO;IACH,KAAK,WAAA;AACD,UAAI,KAAK;AAAQ,eAAO,KAAK;AAC7B,UAAI;AACA,gCAAwB;AACxB,YAAI,SAAS,SAAU,MAAM,CAAA,GAAI,eAAe;AAChD,YAAI,QAAQ,OAAO,KAAK,mBAAmB;AAC3C,YAAI,KAAK,WAAW;AAAM,eAAK,SAAS;AACxC,eAAO;;AAEP,gCAAwB;;;;EAKpC,SAAS,SAAU,IAAI,KAAG;AACtB,WAAO,KAAK,WACR,IAAI,aAAa,CAAC,SAAS,WAAM;AAC7B,UAAI,SAAS,WAAW,MAAM,OAAO,IAAI,WAAW,QAAQ,GAAG,CAAC,GAAG,EAAE;AACrE,WAAK,KAAK,SAAS,MAAM,EAAE,QAAQ,aAAa,KAAK,MAAM,MAAM,CAAC;KACrE,IAAI;;CAEhB;AAED,IAAI,OAAO,WAAW,eAAe,OAAO;AACxC,UAAQ,aAAa,WAAW,OAAO,aAAa,eAAe;AAIvE,UAAU,MAAM,SAAQ;AAExB,SAAS,SAAS,aAAa,YAAY,SAAS,QAAQ,MAAI;AAC5D,OAAK,cAAc,OAAO,gBAAgB,aAAa,cAAc;AACrE,OAAK,aAAa,OAAO,eAAe,aAAa,aAAa;AAClE,OAAK,UAAU;AACf,OAAK,SAAS;AACd,OAAK,MAAM;AACf;AAGA,MAAO,cAAc;EACjB,KAAK,WAAA;AACD,QAAI,SAAS,WAAW,MAAM,MAAM,SAAS,EACxC,IAAI,wBAAwB;AACjC,WAAO,IAAI,aAAa,SAAU,SAAS,QAAM;AAC7C,UAAI,OAAO,WAAW;AAAG,gBAAQ,CAAA,CAAE;AACnC,UAAI,YAAY,OAAO;AACvB,aAAO,QAAQ,CAAC,GAAE,MAAM,aAAa,QAAQ,CAAC,EAAE,KAAK,OAAC;AAClD,eAAO,CAAC,IAAI;AACZ,YAAI,CAAC,EAAE;AAAW,kBAAQ,MAAM;SACjC,MAAM,CAAC;KACb;;EAGL,SAAS,WAAK;AACV,QAAI,iBAAiB;AAAc,aAAO;AAC1C,QAAI,SAAS,OAAO,MAAM,SAAS;AAAY,aAAO,IAAI,aAAa,CAAC,SAAS,WAAM;AACnF,cAAM,KAAK,SAAS,MAAM;OAC7B;AACD,QAAI,KAAK,IAAI,aAAa,UAAU,MAAM,KAAK;AAC/C,0BAAsB,IAAI,gBAAgB;AAC1C,WAAO;;EAGX,QAAQ;EAER,MAAM,WAAA;AACF,QAAI,SAAS,WAAW,MAAM,MAAM,SAAS,EAAE,IAAI,wBAAwB;AAC3E,WAAO,IAAI,aAAa,CAAC,SAAS,WAAM;AACpC,aAAO,IAAI,WAAS,aAAa,QAAQ,KAAK,EAAE,KAAK,SAAS,MAAM,CAAC;KACxE;;EAGL,KAAK;IACD,KAAK,MAAI;IACT,KAAK,WAAS,MAAM;;EAGxB,aAAa,EAAC,KAAK,MAAI,YAAW;EAIlC,QAAQ;EAER;EAEA,WAAW;IACP,KAAK,MAAM;IACX,KAAK,WAAK;AAAK,aAAO;IAAK;;EAG/B,iBAAiB;IACb,KAAK,MAAM;IACX,KAAK,WAAK;AAAK,wBAAkB;IAAM;;EAG3C,QAAQ,CAAC,IAAI,cAAS;AAClB,WAAO,IAAI,aAAa,CAAC,SAAS,WAAM;AACpC,aAAO,SAAS,CAACC,UAASC,YAAM;AAC5B,YAAI,MAAM;AACV,YAAI,aAAa,CAAA;AACjB,YAAI,cAAcA;AAClB,YAAI,WAAW,SAAS,WAAA;AAIpB,mDAAyC,MAAA;AACrC,iBAAK,WAAW,WAAW,IAAID,SAAO,IAAKC,QAAO,KAAK,WAAW,CAAC,CAAC;WACvE;WACF,IAAI,QAAQ;AACf,WAAE;SACH,WAAW,SAAS,MAAM;KAChC;;CAER;AAED,IAAI,eAAe;AACf,MAAI,cAAc;AAAY,YAAS,cAAc,cAAc,WAAA;AAC/D,YAAM,mBAAmB,WAAW,MAAM,MAAM,SAAS,EAAE,IAAI,wBAAwB;AACvF,aAAO,IAAI,aAAa,aAAO;AAC3B,YAAI,iBAAiB,WAAW;AAAG,kBAAQ,CAAA,CAAE;AAC7C,YAAI,YAAY,iBAAiB;AACjC,cAAM,UAAU,IAAI,MAAM,SAAS;AACnC,yBAAiB,QAAQ,CAAC,GAAG,MAAM,aAAa,QAAQ,CAAC,EAAE,KACvD,WAAS,QAAQ,CAAC,IAAI,EAAC,QAAQ,aAAa,MAAK,GACjD,YAAU,QAAQ,CAAC,IAAI,EAAC,QAAQ,YAAY,OAAM,CAAC,EAClD,KAAK,MAAI,EAAE,aAAa,QAAQ,OAAO,CAAC,CAAC;OACjD;KACJ;AACD,MAAI,cAAc,OAAO,OAAO,mBAAmB;AAAa,YAAQ,cAAc,OAAO,WAAA;AACzF,YAAM,mBAAmB,WAAW,MAAM,MAAM,SAAS,EAAE,IAAI,wBAAwB;AACvF,aAAO,IAAI,aAAa,CAAC,SAAS,WAAM;AACpC,YAAI,iBAAiB,WAAW;AAAG,iBAAO,IAAI,eAAe,CAAA,CAAE,CAAC;AAChE,YAAI,YAAY,iBAAiB;AACjC,cAAM,WAAW,IAAI,MAAM,SAAS;AACpC,yBAAiB,QAAQ,CAAC,GAAG,MAAM,aAAa,QAAQ,CAAC,EAAE,KACvD,WAAS,QAAQ,KAAK,GACtB,aAAO;AACH,mBAAS,CAAC,IAAI;AACd,cAAI,CAAC,EAAE;AAAW,mBAAO,IAAI,eAAe,QAAQ,CAAC;SACxD,CAAC;OACT;KACJ;;AASL,SAAS,mBAAoB,SAAS,IAAE;AAGpC,MAAI;AACA,OAAG,WAAK;AACJ,UAAI,QAAQ,WAAW;AAAM;AAC7B,UAAI,UAAU;AAAS,cAAM,IAAI,UAAU,2CAA2C;AACtF,UAAI,oBAAoB,QAAQ,QAAQ,oBAAmB;AAC3D,UAAI,SAAS,OAAO,MAAM,SAAS,YAAY;AAC3C,2BAAmB,SAAS,CAAC,SAAS,WAAM;AACxC,2BAAiB,eACb,MAAM,MAAM,SAAS,MAAM,IAC3B,MAAM,KAAK,SAAS,MAAM;SACjC;aACE;AACH,gBAAQ,SAAS;AACjB,gBAAQ,SAAS;AACjB,8BAAsB,OAAO;;AAEjC,UAAI;AAAmB,0BAAiB;OACzC,gBAAgB,KAAK,MAAM,OAAO,CAAC;WACjC,IAAI;AACT,oBAAgB,SAAS,EAAE;;AAEnC;AAEA,SAAS,gBAAiB,SAAS,QAAM;AACrC,kBAAgB,KAAK,MAAM;AAC3B,MAAI,QAAQ,WAAW;AAAM;AAC7B,MAAI,oBAAoB,QAAQ,QAAQ,oBAAmB;AAC3D,WAAS,gBAAgB,MAAM;AAC/B,UAAQ,SAAS;AACjB,UAAQ,SAAS;AACjB,WAAS,WAAW,QAAQ,OAAO,WAAW,YAAY,CAAC,OAAO,YAAY,SAAS,MAAA;AACnF,QAAI,WAAW,sBAAsB,QAAQ,OAAO;AACpD,WAAO,WAAW;AAClB,YAAQ,QAAQ,SAAS;MACrB,KAAK,MACD,wBACI,aAAa,SAAS,MACV,SAAS,IAAI,MAAM,MAAM,IACzB,SAAS,SACrB,QAAQ;KACnB;GACJ;AAED,4BAA0B,OAAO;AACjC,wBAAsB,OAAO;AAC7B,MAAI;AAAmB,sBAAiB;AAC5C;AAEA,SAAS,sBAAuB,SAAO;AAEnC,MAAI,YAAY,QAAQ;AACxB,UAAQ,aAAa,CAAA;AACrB,WAAS,IAAI,GAAG,MAAM,UAAU,QAAQ,IAAI,KAAK,EAAE,GAAG;AAClD,wBAAoB,SAAS,UAAU,CAAC,CAAC;;AAE7C,MAAI,MAAM,QAAQ;AAClB,IAAE,IAAI,OAAO,IAAI,SAAQ;AACzB,MAAI,sBAAsB,GAAG;AAMzB,MAAE;AACF,SAAK,MAAA;AACD,UAAI,EAAE,sBAAsB;AAAG,6BAAoB;OACpD,CAAA,CAAE;;AAEb;AAEA,SAAS,oBAAoB,SAAS,UAAQ;AAC1C,MAAI,QAAQ,WAAW,MAAM;AACzB,YAAQ,WAAW,KAAK,QAAQ;AAChC;;AAGJ,MAAI,KAAK,QAAQ,SAAS,SAAS,cAAc,SAAS;AAC1D,MAAI,OAAO,MAAM;AAEb,YAAQ,QAAQ,SAAS,SAAS,UAAU,SAAS,QAAS,QAAQ,MAAM;;AAEhF,IAAE,SAAS,IAAI;AACf,IAAE;AACF,OAAM,cAAc,CAAC,IAAI,SAAS,QAAQ,CAAC;AAC/C;AAEA,SAAS,aAAc,IAAI,SAAS,UAAQ;AACxC,MAAI;AAGA,uBAAmB;AAGnB,QAAI,KAAK,QAAQ,QAAQ;AAEzB,QAAI,QAAQ,QAAQ;AAEhB,YAAM,GAAI,KAAK;WACZ;AAEH,UAAI,gBAAgB;AAAQ,0BAAkB,CAAA;AAC9C,YAAM,GAAG,KAAK;AACd,UAAI,gBAAgB,QAAQ,KAAK,MAAM;AACnC,2BAAmB,OAAO;;AAElC,aAAS,QAAQ,GAAG;WACf,GAAG;AAER,aAAS,OAAO,CAAC;;AAGjB,uBAAmB;AACnB,QAAI,EAAE,sBAAsB;AAAG,2BAAoB;AACnD,MAAE,SAAS,IAAI,OAAO,SAAS,IAAI,SAAQ;;AAEnD;AAEA,SAAS,SAAU,SAAS,QAAQ,OAAK;AACrC,MAAI,OAAO,WAAW;AAAO,WAAO;AACpC,MAAI,QAAQ;AACZ,MAAI,QAAQ,WAAW,OAAO;AAC1B,QAAI,UAAU,QAAQ,QAClB,WACA;AAEJ,QAAI,WAAW,MAAM;AACjB,kBAAY,QAAQ,QAAQ;AAC5B,gBAAU,QAAQ,WAAW;AAC7B,cAAQ,YAAY,SAAS,CAAC;WAC3B;AACH,kBAAY;AACZ,gBAAU;;AAEd,WAAO,KAAK,aAAa,UAAU,OAAO,UAAU,MAAM,KAAK;;AAEnE,MAAI,OAAO;AACP,YAAQ,YAAY,QAAQ,cAAc,CAAC;AAC3C,QAAI,SAAS,OAAO,QAAQ,KAAK,MAAM;AAAI,aAAO,KAAK,KAAK;AAC5D,QAAI,QAAQ;AAAO,eAAS,QAAQ,OAAO,QAAQ,KAAK;;AAE5D,SAAO;AACX;AAEA,SAAS,sBAAsB,SAAS,MAAI;AAExC,MAAI,UAAU,OAAO,KAAK,WAAW,IAAI;AACzC,MAAI,UAAU,wBAAwB;AAClC,YAAQ,QAAQ;AAChB,YAAQ,WAAW;;AAE3B;AAKA,SAAS,eAAY;AACjB,sBAAmB,KAAM,kBAAiB;AAC9C;SAEgB,sBAAmB;AAC/B,MAAI,cAAc;AAClB,uBAAqB;AACrB,yBAAuB;AACvB,SAAO;AACX;SAUgB,oBAAiB;AAC7B,MAAI,WAAW,GAAG;AAClB,KAAG;AACC,WAAO,eAAe,SAAS,GAAG;AAC9B,kBAAY;AACZ,uBAAiB,CAAA;AACjB,UAAI,UAAU;AACd,WAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACpB,YAAI,OAAO,UAAU,CAAC;AACtB,aAAK,CAAC,EAAE,MAAM,MAAM,KAAK,CAAC,CAAC;;;WAG9B,eAAe,SAAS;AACjC,uBAAqB;AACrB,yBAAuB;AAC3B;AAEA,SAAS,uBAAoB;AACzB,MAAI,gBAAgB;AACpB,oBAAkB,CAAA;AAClB,gBAAc,QAAQ,OAAC;AACnB,MAAE,KAAK,YAAY,KAAK,MAAM,EAAE,QAAQ,CAAC;GAC5C;AACD,MAAI,aAAa,eAAe,MAAM,CAAC;AACvC,MAAI,IAAI,WAAW;AACnB,SAAO;AAAG,eAAW,EAAE,CAAC,EAAC;AAC7B;AAEA,SAAS,yCAA0C,IAAE;AACjD,WAAS,YAAS;AACd,OAAE;AACF,mBAAe,OAAO,eAAe,QAAQ,SAAS,GAAG,CAAC;;AAE9D,iBAAe,KAAK,SAAS;AAC7B,IAAE;AACF,OAAK,MAAA;AACD,QAAI,EAAE,sBAAsB;AAAG,2BAAoB;KACpD,CAAA,CAAE;AACT;AAEA,SAAS,0BAA0B,SAAO;AAItC,MAAI,CAAC,gBAAgB,KAAK,OAAK,EAAE,WAAW,QAAQ,MAAM;AACtD,oBAAgB,KAAK,OAAO;AACpC;AAEA,SAAS,mBAAmB,SAAO;AAI/B,MAAI,IAAI,gBAAgB;AACxB,SAAO;AAAG,QAAI,gBAAgB,EAAE,CAAC,EAAE,WAAW,QAAQ,QAAQ;AAG1D,sBAAgB,OAAO,GAAG,CAAC;AAC3B;;AAER;AAEA,SAAS,cAAe,QAAM;AAC1B,SAAO,IAAI,aAAa,UAAU,OAAO,MAAM;AACnD;SAEgB,KAAM,IAAI,cAAY;AAClC,MAAI,MAAM;AACV,SAAO,WAAA;AACH,QAAI,cAAc,oBAAmB,GACjC,aAAa;AAEjB,QAAI;AACA,mBAAa,KAAK,IAAI;AACtB,aAAO,GAAG,MAAM,MAAM,SAAS;aAC1B,GAAG;AACR,sBAAgB,aAAa,CAAC;;AAE9B,mBAAa,YAAY,KAAK;AAC9B,UAAI;AAAa,0BAAiB;;;AAG9C;AAMA,IAAM,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI,EAAC;AAC1C,IAAI,cAAc;AAClB,IAAI,YAAY,CAAA;AAChB,IAAI,aAAa;AACjB,IAAI,cAAc;AAGlB,IAAI,kBAAkB;SACN,SAAU,IAAIC,QAAO,IAAI,IAAE;AACvC,MAAI,SAAS,KACT,MAAM,OAAO,OAAO,MAAM;AAC9B,MAAI,SAAS;AACb,MAAI,MAAM;AACV,MAAI,SAAS;AACb,MAAI,KAAK,EAAE;AAEX,MAAI,YAAY,UAAU;AAC1B,MAAI,MAAM,qBAAqB;IAC3B,SAAS;IACT,aAAa,EAAC,OAAO,cAAc,cAAc,MAAM,UAAU,KAAI;IACrE,KAAK,aAAa;IAClB,MAAM,aAAa;IACnB,YAAY,aAAa;IACzB,KAAK,aAAa;IAClB,SAAS,aAAa;IACtB,QAAQ,aAAa;IACrB,OAAO,sBAAuB,UAAU,OAAO,GAAG;IAClD,OAAO,sBAAuB,UAAU,OAAO,GAAG;MAClD,CAAA;AACJ,MAAIA;AAAO,WAAO,KAAKA,MAAK;AAM5B,IAAE,OAAO;AACT,MAAI,WAAW,WAAA;AACX,MAAE,KAAK,OAAO,OAAO,KAAK,OAAO,SAAQ;;AAE7C,MAAI,KAAK,OAAQ,KAAK,IAAI,IAAI,EAAE;AAChC,MAAI,IAAI,QAAQ;AAAG,QAAI,SAAQ;AAC/B,SAAO;AACX;SAIgB,0BAAuB;AACnC,MAAI,CAAC,KAAK;AAAI,SAAK,KAAK,EAAE;AAC1B,IAAE,KAAK;AACP,OAAK,UAAU;AACf,SAAO,KAAK;AAChB;SAKgB,0BAAuB;AACnC,MAAI,CAAC,KAAK;AAAQ,WAAO;AACzB,MAAI,EAAE,KAAK,WAAW;AAAG,SAAK,KAAK;AACnC,OAAK,SAAS,KAAK,SAAS;AAC5B,SAAO;AACX;AAEA,KAAK,KAAG,mBAAmB,QAAQ,eAAe,MAAM,IAAI;AAGxD,4BAA0B,0BAA0B;;SAIxC,yBAA0B,iBAAe;AACrD,MAAI,KAAK,UAAU,mBAAmB,gBAAgB,gBAAgB,eAAe;AACjF,4BAAuB;AACvB,WAAO,gBAAgB,KAAK,OAAC;AACzB,8BAAuB;AACvB,aAAO;OACR,OAAC;AACA,8BAAuB;AACvB,aAAO,UAAU,CAAC;KACrB;;AAEL,SAAO;AACX;AAEA,SAAS,cAAc,YAAU;AAC7B,IAAE;AAEF,MAAI,CAAC,KAAK,UAAU,EAAE,KAAK,WAAW,GAAG;AACrC,SAAK,SAAS,KAAK,KAAK;;AAG5B,YAAU,KAAK,GAAG;AAClB,eAAa,YAAY,IAAI;AACjC;AAEA,SAAS,gBAAa;AAClB,MAAI,OAAO,UAAU,UAAU,SAAO,CAAC;AACvC,YAAU,IAAG;AACb,eAAa,MAAM,KAAK;AAC5B;AAEA,SAAS,aAAc,YAAY,eAAa;AAC5C,MAAI,cAAc;AAClB,MAAI,gBAAgB,KAAK,WAAW,CAAC,gBAAgB,eAAe,OAAO,eAAe,CAAC,EAAE,cAAc,eAAe,MAAM;AAG5H,2BAAuB,gBAAgB,cAAc,KAAK,MAAM,UAAU,IAAI,aAAa;;AAE/F,MAAI,eAAe;AAAK;AAExB,QAAM;AAGN,MAAI,gBAAgB;AAAW,cAAU,MAAM,SAAQ;AAEvD,MAAI,oBAAoB;AAEpB,QAAI,gBAAgB,UAAU,IAAI;AAElC,QAAI,YAAY,WAAW;AAI3B,uBAAmB,OAAO,UAAU;AACpC,kBAAc,UAAU,OAAO,UAAU;AAEzC,QAAI,YAAY,UAAU,WAAW,QAAQ;AAIzC,aAAO,eAAe,SAAS,WAAW,UAAU,WAAW;AAI/D,oBAAc,MAAM,UAAU;AAC9B,oBAAc,OAAO,UAAU;AAC/B,oBAAc,UAAU,UAAU;AAClC,oBAAc,SAAS,UAAU;AACjC,UAAI,UAAU;AAAY,sBAAc,aAAa,UAAU;AAC/D,UAAI,UAAU;AAAK,sBAAc,MAAM,UAAU;;;AAG7D;AAEA,SAAS,WAAQ;AACb,MAAI,gBAAgB,QAAQ;AAC5B,SAAO,qBAAqB;IACxB,SAAS;IACT,aAAa,OAAO,yBAAyB,SAAS,SAAS;IAC/D,KAAK,cAAc;IACnB,MAAM,cAAc;IACpB,YAAY,cAAc;IAC1B,KAAK,cAAc;IACnB,SAAS,cAAc;IACvB,QAAQ,cAAc;IACtB,OAAO,mBAAmB;IAC1B,OAAO,cAAc,UAAU;MAC/B,CAAA;AACR;SAEgB,OAAQ,KAAK,IAAI,IAAI,IAAI,IAAE;AACvC,MAAI,aAAa;AACjB,MAAI;AACA,iBAAa,KAAK,IAAI;AACtB,WAAO,GAAG,IAAI,IAAI,EAAE;;AAEpB,iBAAa,YAAY,KAAK;;AAEtC;AAEA,SAAS,uBAAwB,KAAG;AAIhC,oBAAkB,KAAK,uBAAuB,GAAG;AACrD;AAEA,SAAS,0BAA0B,IAAI,MAAM,eAAe,SAAO;AAC/D,SAAO,OAAO,OAAO,aAAa,KAAK,WAAA;AACnC,QAAI,YAAY;AAChB,QAAI;AAAe,8BAAuB;AAC1C,iBAAa,MAAM,IAAI;AACvB,QAAI;AACA,aAAO,GAAG,MAAM,MAAM,SAAS;;AAE/B,mBAAa,WAAW,KAAK;AAC7B,UAAI;AAAS,+BAAuB,uBAAuB;;;AAGvE;AAEA,SAAS,sBAAuB,UAAU,MAAI;AAC1C,SAAO,SAAU,YAAY,YAAU;AACnC,WAAO,SAAS,KAAK,MACjB,0BAA0B,YAAY,IAAI,GAC1C,0BAA0B,YAAY,IAAI,CAAC;;AAEvD;AAEA,IAAM,qBAAqB;AAE3B,SAAS,YAAY,KAAK,SAAO;AAC7B,MAAI;AACJ,MAAI;AACA,SAAK,QAAQ,YAAY,GAAG;WACvB,GAAG;EAAA;AACZ,MAAI,OAAO;AAAO,QAAI;AAClB,UAAI,OAAO,YAAY,EAAC,SAAkB,QAAQ,IAAG;AACrD,UAAI,QAAQ,YAAY,SAAS,aAAa;AAC1C,gBAAQ,SAAS,YAAY,OAAO;AACpC,cAAM,UAAU,oBAAoB,MAAM,IAAI;AAC9C,eAAO,OAAO,SAAS;iBAChB,QAAQ,aAAa;AAC5B,gBAAQ,IAAI,YAAY,oBAAoB,EAAC,QAAQ,UAAS,CAAC;AAC/D,eAAO,OAAO,SAAS;;AAE3B,UAAI,SAAS,QAAQ,eAAe;AAChC,sBAAc,KAAK;AACnB,YAAI,CAAC,QAAQ,yBAAyB,QAAQ;AAE1C,cAAI;AAAC,oBAAQ,qBAAqB,KAAK;mBAAW,GAAG;UAAA;;AAE7D,UAAI,SAAS,SAAS,CAAC,MAAM,kBAAkB;AAC3C,gBAAQ,KAAK,wBAAwB,IAAI,SAAS,GAAG,EAAE;;aAEtD,GAAG;IAAA;AAChB;AAEO,IAAI,YAAY,aAAa;SCh3BpB,gBACd,IACA,MACA,YACA,IAAgD;AAGhD,MAAI,CAAC,GAAG,SAAU,CAAC,GAAG,OAAO,iBAAiB,CAAC,IAAI,cAAc,CAAC,GAAG,OAAQ;AAC3E,QAAI,GAAG,OAAO,cAAc;AAG1B,aAAO,UAAU,IAAI,WAAW,eAAe,GAAG,OAAO,WAAW,CAAC;;AAEvE,QAAI,CAAC,GAAG,OAAO,eAAe;AAC5B,UAAI,CAAC,GAAG,SAAS;AACf,eAAO,UAAU,IAAI,WAAW,eAAc,CAAE;AAClD,SAAG,KAAI,EAAG,MAAM,GAAG;;AAErB,WAAO,GAAG,OAAO,eAAe,KAAK,MAAM,gBAAgB,IAAI,MAAM,YAAY,EAAE,CAAC;SAC/E;AACL,QAAI,QAAQ,GAAG,mBAAmB,MAAM,YAAY,GAAG,SAAS;AAChE,QAAI;AACF,YAAM,OAAM;AACZ,SAAG,OAAO,iBAAiB;aACpB,IAAI;AACX,UAAI,GAAG,SAAS,SAAS,gBAAgB,GAAG,OAAM,KAAM,EAAE,GAAG,OAAO,iBAAiB,GAAG;AACtF,gBAAQ,KAAK,0BAA0B;AACvC,WAAG,OAAM;AACT,eAAO,GAAG,KAAI,EAAG,KAAK,MAAI,gBAAgB,IAAI,MAAM,YAAY,EAAE,CAAC;;AAErE,aAAO,UAAU,EAAE;;AAErB,WAAO,MAAM,SAAS,MAAM,CAAC,SAAS,WAAM;AAC1C,aAAO,SAAS,MAAA;AACd,YAAI,QAAQ;AACZ,eAAO,GAAG,SAAS,QAAQ,KAAK;OACjC;KACF,EAAE,KAAK,YAAM;AAWZ,aAAO,MAAM,YAAY,KAAK,MAAM,MAAM;KAC3C;;AAKL;AC7DO,IAAM,gBAAgB;AACtB,IAAM,YAAY,OAAO,aAAa,KAAK;AAC3C,IAAM,SAAS;AACf,IAAM,uBACX;AACK,IAAM,kBAAkB;AACxB,IAAM,cAAuB,CAAA;AAC7B,IAAM,aACX,OAAO,cAAc,eAAe,sBAAsB,KAAK,UAAU,SAAS;AAC7E,IAAM,4BAA4B;AAClC,IAAM,6BAA6B;AACnC,IAAM,wBAAwB,WAAS,CAAC,6BAA6B,KAAK,KAAK;AAC/E,IAAM,aAAa;AACnB,IAAM,WAAW;AACjB,IAAM,YAAY;SChBT,QAAQ,SAAS,SAAO;AACtC,SAAO,UACH,UACI,WAAA;AAAc,WAAO,QAAQ,MAAM,MAAM,SAAS,KAAK,QAAQ,MAAM,MAAM,SAAS;EAAE,IACtF,UACJ;AACN;ACJO,IAAM,WAA2B;EACtC,MAAI;EACJ,OAAO;EACP,WAAW;EACX,OAAO,CAAC,CAAA,CAAE;EACV,WAAW;;SCFG,8BAA8B,SAAmC;AAE/E,SAAO,OAAO,YAAY,YAAY,CAAC,KAAK,KAAK,OAAO,IACtD,CAAC,QAAW;AACZ,QAAI,IAAI,OAAO,MAAM,UAAc,WAAW,KAAM;AAIlD,YAAM,UAAU,GAAG;AACnB,aAAO,IAAI,OAAO;;AAEpB,WAAO;MAEP,CAAC,QAAgB;AACrB;ICIa,cAAK;EAQhB,OACE,MACA,IACA,aAA8B;AAE9B,UAAM,QAAqB,KAAK,OAAO,IAAI;AAC3C,UAAM,YAAY,KAAK;AAEvB,aAAS,wBAAwB,SAAS,QAAQC,QAAkB;AAClE,UAAI,CAACA,OAAM,OAAO,SAAS;AACzB,cAAM,IAAI,WAAW,SAAS,WAAW,YAAY,0BAA0B;AACjF,aAAO,GAAGA,OAAM,UAAUA,MAAK;;AAejC,UAAM,cAAc,oBAAmB;AACvC,QAAI;AACF,aAAO,SAAS,MAAM,OAAO,KAAK,KAChC,UAAU,IAAI,QACZ,MAAM,SAAS,MAAM,yBAAyB,WAAW,IACzD,SAAS,MAAM,MAAM,SAAS,MAAM,yBAAyB,WAAW,GAAG,EAAE,OAAc,WAAW,IAAI,aAAa,IAAG,CAAE,IAC9H,gBAAgB,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,GAAG,uBAAuB;;AAErE,UAAI;AAAa,0BAAiB;;;EAStC,IAAI,WAAW,IAAG;AAChB,QAAI,aAAa,UAAU,gBAAgB;AACzC,aAAO,KAAK,MAAM,SAA6C,EAAE,MAAM,EAAE;AAE3E,WAAO,KAAK,OAAO,YAAY,CAAC,UAAK;AACnC,aAAO,KAAK,KAAK,IAAI,EAAC,OAAO,KAAK,UAAS,CAAC,EACzC,KAAK,SAAO,KAAK,KAAK,QAAQ,KAAK,GAAG,CAAC;KAC3C,EAAE,KAAK,EAAE;;EAQZ,MAAM,aAAiE;AACrE,QAAI,OAAO,gBAAgB;AACzB,aAAO,IAAI,KAAK,GAAG,YAAY,MAAM,WAAW;AAClD,QAAI,QAAQ,WAAW;AACrB,aAAO,IAAI,KAAK,GAAG,YAAY,MAAM,IAAI,YAAY,KAAK,GAAG,CAAC,GAAG;AAEnE,UAAM,WAAW,KAAK,WAAW;AACjC,QAAI,SAAS,WAAW;AAEtB,aAAO,KACJ,MAAM,SAAS,CAAC,CAAC,EACjB,OAAO,YAAY,SAAS,CAAC,CAAC,CAAC;AAKpC,UAAM,gBAAgB,KAAK,OAAO,QAAQ,OAAO,KAAK,OAAO,OAAO,EAAE,OAAO,QAAE;AAC7E,UACE,GAAG,YACH,SAAS,MAAM,aAAW,GAAG,QAAQ,QAAQ,OAAO,KAAK,CAAC,GAAG;AAC3D,iBAAS,IAAE,GAAG,IAAE,SAAS,QAAQ,EAAE,GAAG;AACpC,cAAI,SAAS,QAAQ,GAAG,QAAQ,CAAC,CAAC,MAAM;AAAI,mBAAO;;AAErD,eAAO;;AAET,aAAO;KACR,EAAE,KAAK,CAAC,GAAE,MAAM,EAAE,QAAQ,SAAS,EAAE,QAAQ,MAAM,EAAE,CAAC;AAEzD,QAAI,iBAAiB,KAAK,GAAG,YAAY,WAAW;AAGlD,YAAM,uBAAwB,cAAc,QAAqB,MAAM,GAAG,SAAS,MAAM;AACzF,aAAO,KACJ,MAAM,oBAAoB,EAC1B,OAAO,qBAAqB,IAAI,QAAM,YAAY,EAAE,CAAC,CAAC;;AAG3D,QAAI,CAAC,iBAAiB;AAAO,cAAQ,KACnC,aAAa,KAAK,UAAU,WAAW,CAAC,OAAO,KAAK,IAAI,uCACrC,SAAS,KAAK,GAAG,CAAC,GAAG;AAI1C,UAAM,EAAE,UAAS,IAAK,KAAK;AAC3B,UAAM,MAAM,KAAK,GAAG,MAAM;AAE1B,aAAS,OAAQ,GAAG,GAAC;AACnB,UAAI;AACF,eAAO,IAAI,IAAI,GAAE,CAAC,MAAM;eACjB,GAAG;AACV,eAAO;;;AAIX,UAAM,CAAC,KAAK,cAAc,IAAI,SAAS,OAAO,CAAC,CAAC,WAAW,YAAY,GAAG,YAAO;AAC/E,YAAM,QAAQ,UAAU,OAAO;AAC/B,YAAM,QAAQ,YAAY,OAAO;AACjC,aAAO;QACL,aAAa;QACb,aAAa,CAAC,QACZ,QACE,cACA,SAAS,MAAM,QACb,OAAC;AACC,gBAAM,OAAO,aAAa,GAAG,OAAO;AACpC,iBAAO,QAAQ,IAAI,KAAK,KAAK,KAAK,UAAQ,OAAO,OAAO,IAAI,CAAC;YAC3D,OAAK,OAAO,OAAO,aAAa,GAAG,OAAO,CAAC,CAAC,IAClD;;OAEL,CAAC,MAAM,IAAI,CAAC;AAEf,WAAO,MACL,KAAK,MAAM,IAAI,IAAI,EAAE,OAAO,YAAY,IAAI,OAAO,CAAC,EACjD,OAAO,cAAc,IACxB,gBACE,KAAK,OAAO,cAAc,IAC1B,KAAK,MAAM,QAAQ,EAAE,OAAO,EAAE;;EAQpC,OAAO,gBAAqC;AAC1C,WAAO,KAAK,aAAY,EAAG,IAAI,cAAc;;EAQ/C,MAAM,cAAkB;AACtB,WAAO,KAAK,aAAY,EAAG,MAAM,YAAY;;EAQ/C,OAAO,QAAc;AACnB,WAAO,KAAK,aAAY,EAAG,OAAO,MAAM;;EAQ1C,MAAM,SAAe;AACnB,WAAO,KAAK,aAAY,EAAG,MAAM,OAAO;;EAQ1C,KAAK,UAAsF;AACzF,WAAO,KAAK,aAAY,EAAG,KAAK,QAAQ;;EAQ1C,QAAQ,cAAkB;AACxB,WAAO,KAAK,aAAY,EAAG,QAAQ,YAAY;;EAQjD,eAAY;AACV,WAAO,IAAI,KAAK,GAAG,WAAW,IAAI,KAAK,GAAG,YAAY,IAAI,CAAC;;EAQ7D,QAAQ,OAAwB;AAC9B,WAAO,IAAI,KAAK,GAAG,WACjB,IAAI,KAAK,GAAG,YAAY,MAAM,QAAQ,KAAK,IACzC,IAAI,MAAM,KAAK,GAAG,CAAC,MACnB,KAAK,CAAC;;EAQZ,UAAO;AACL,WAAO,KAAK,aAAY,EAAG,QAAO;;EAQpC,WAAW,aAAqB;AAC9B,SAAK,OAAO,cAAc;AAG1B,UAAM,WAAW,SAAG;AAClB,UAAI,CAAC;AAAK,eAAO;AAEjB,YAAM,MAAM,OAAO,OAAO,YAAY,SAAS;AAE/C,eAAS,KAAK;AAAK,YAAI,OAAO,KAAK,CAAC;AAAG,cAAI;AAAE,gBAAI,CAAC,IAAI,IAAI,CAAC;mBAAY,GAAG;UAAA;AAC1E,aAAO;;AAGT,QAAI,KAAK,OAAO,UAAU;AACxB,WAAK,KAAK,QAAQ,YAAY,KAAK,OAAO,QAAQ;;AAEpD,SAAK,OAAO,WAAW;AACvB,SAAK,KAAK,WAAW,QAAQ;AAC7B,WAAO;;EAIT,cAAW;AACT,aAAS,MAAO,SAAO;AACrB,aAAO,MAAM,OAAO;;AAEtB,WAAO,KAAK,WAAW,KAAK;;EAQ9B,IAAI,KAAK,KAAmB;AAC1B,UAAM,EAAC,MAAM,QAAO,IAAI,KAAK,OAAO;AACpC,QAAI,WAAW;AACf,QAAI,WAAW,MAAM;AACnB,iBAAW,8BAA8B,OAAO,EAAE,GAAG;;AAEvD,WAAO,KAAK,OAAO,aAAa,WAAK;AACnC,aAAO,KAAK,KAAK,OAAO,EAAC,OAAO,MAAM,OAAO,MAAM,OAAO,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,CAAC,QAAQ,EAAC,CAAC;KACnG,EAAE,KAAK,SAAO,IAAI,cAAcC,aAAQ,OAAO,IAAI,SAAS,CAAC,CAAC,IAAI,IAAI,UAAU,EAChF,KAAK,gBAAU;AACd,UAAI,SAAS;AAIX,YAAG;AAAC,uBAAa,KAAK,SAAS,UAAU;iBAAS,GAAE;QAAA;;AAEtD,aAAO;KACR;;EAQH,OAAO,aAAa,eAAqH;AACvI,QAAI,OAAO,gBAAgB,YAAY,CAAC,QAAQ,WAAW,GAAG;AAC5D,YAAM,MAAM,aAAa,aAAa,KAAK,OAAO,QAAQ,OAAO;AACjE,UAAI,QAAQ;AAAW,eAAO,UAAU,IAAI,WAAW,gBACrD,+CAA+C,CAAC;AAKlD,UAAI;AACF,YAAI,OAAO,kBAAkB,YAAY;AACvC,eAAK,aAAa,EAAE,QAAQ,aAAO;AACjC,yBAAa,aAAa,SAAS,cAAc,OAAO,CAAC;WAC1D;eACI;AAGL,wBAAc,aAAa,EAAC,OAAO,aAAa,SAAS,IAAG,CAAC;;eAE/D,IAAM;;AAIR,aAAO,KAAK,MAAM,KAAK,EAAE,OAAO,GAAG,EAAE,OAAO,aAAa;WACpD;AAEL,aAAO,KAAK,MAAM,KAAK,EAAE,OAAO,WAAW,EAAE,OAAO,aAAa;;;EASrE,IAAI,KAAK,KAAmB;AAC1B,UAAM,EAAC,MAAM,QAAO,IAAI,KAAK,OAAO;AACpC,QAAI,WAAW;AACf,QAAI,WAAW,MAAM;AACnB,iBAAW,8BAA8B,OAAO,EAAE,GAAG;;AAEvD,WAAO,KAAK,OACV,aACA,WAAS,KAAK,KAAK,OAAO,EAAC,OAAO,MAAM,OAAO,QAAQ,CAAC,QAAQ,GAAG,MAAM,OAAO,OAAO,CAAC,GAAG,IAAI,KAAI,CAAC,CAAC,EACtG,KAAK,SAAO,IAAI,cAAcA,aAAQ,OAAO,IAAI,SAAS,CAAC,CAAC,IAAI,IAAI,UAAU,EAC9E,KAAK,gBAAU;AACd,UAAI,SAAS;AAIX,YAAG;AAAC,uBAAa,KAAK,SAAS,UAAU;iBAAS,GAAE;QAAA;;AAEtD,aAAO;KACR;;EAQH,OAAO,KAAkB;AACvB,WAAO,KAAK,OAAO,aACjB,WAAS,KAAK,KAAK,OAAO,EAAC,OAAO,MAAM,UAAU,MAAM,CAAC,GAAG,EAAC,CAAC,CAAC,EAChE,KAAK,SAAO,IAAI,cAAcA,aAAQ,OAAO,IAAI,SAAS,CAAC,CAAC,IAAI,MAAS;;EAQ5E,QAAK;AACH,WAAO,KAAK,OAAO,aACjB,WAAS,KAAK,KAAK,OAAO,EAAC,OAAO,MAAM,eAAe,OAAO,SAAQ,CAAC,CAAC,EACrE,KAAK,SAAO,IAAI,cAAcA,aAAQ,OAAO,IAAI,SAAS,CAAC,CAAC,IAAI,MAAS;;EAShF,QAAQC,OAAqB;AAC3B,WAAO,KAAK,OAAO,YAAY,WAAK;AAClC,aAAO,KAAK,KAAK,QAAQ;QACvB,MAAAA;QACA;OACD,EAAE,KAAK,YAAU,OAAO,IAAI,SAAO,KAAK,KAAK,QAAQ,KAAK,GAAG,CAAC,CAAC;KACjE;;EAQH,QACE,SACA,eACA,SAA+B;AAE/B,UAAMA,QAAO,MAAM,QAAQ,aAAa,IAAI,gBAAgB;AAC5D,cAAU,YAAYA,QAAO,SAAY;AACzC,UAAM,cAAc,UAAU,QAAQ,UAAU;AAEhD,WAAO,KAAK,OAAO,aAAa,WAAK;AACnC,YAAM,EAAC,MAAM,QAAO,IAAI,KAAK,OAAO;AACpC,UAAI,WAAWA;AACb,cAAM,IAAI,WAAW,gBAAgB,8DAA8D;AACrG,UAAIA,SAAQA,MAAK,WAAW,QAAQ;AAClC,cAAM,IAAI,WAAW,gBAAgB,sDAAsD;AAE7F,YAAM,aAAa,QAAQ;AAC3B,UAAI,eAAe,WAAW,OAC5B,QAAQ,IAAI,8BAA8B,OAAO,CAAC,IAClD;AACF,aAAO,KAAK,KAAK,OACf,EAAC,OAAO,MAAM,OAAO,MAAMA,OAAyB,QAAQ,cAAc,YAAW,CAAC,EAErF,KAAK,CAAC,EAAC,aAAa,SAAQ,YAAY,SAAQ,MAAC;AAChD,cAAM,SAAS,cAAc,UAAU;AACvC,YAAI,gBAAgB;AAAG,iBAAO;AAC9B,cAAM,IAAI,UACR,GAAG,KAAK,IAAI,eAAe,WAAW,OAAO,UAAU,sBAAsB,QAAQ;OACxF;KACJ;;EAQH,QACE,SACA,eACA,SAA+B;AAE/B,UAAMA,QAAO,MAAM,QAAQ,aAAa,IAAI,gBAAgB;AAC5D,cAAU,YAAYA,QAAO,SAAY;AACzC,UAAM,cAAc,UAAU,QAAQ,UAAU;AAEhD,WAAO,KAAK,OAAO,aAAa,WAAK;AACnC,YAAM,EAAC,MAAM,QAAO,IAAI,KAAK,OAAO;AACpC,UAAI,WAAWA;AACb,cAAM,IAAI,WAAW,gBAAgB,8DAA8D;AACrG,UAAIA,SAAQA,MAAK,WAAW,QAAQ;AAClC,cAAM,IAAI,WAAW,gBAAgB,sDAAsD;AAE7F,YAAM,aAAa,QAAQ;AAC3B,UAAI,eAAe,WAAW,OAC5B,QAAQ,IAAI,8BAA8B,OAAO,CAAC,IAClD;AAEF,aAAO,KAAK,KAAK,OACf,EAAC,OAAO,MAAM,OAAO,MAAMA,OAAyB,QAAQ,cAAc,YAAW,CAAC,EAErF,KAAK,CAAC,EAAC,aAAa,SAAS,YAAY,SAAQ,MAAC;AACjD,cAAM,SAAS,cAAc,UAAU;AACvC,YAAI,gBAAgB;AAAG,iBAAO;AAC9B,cAAM,IAAI,UACR,GAAG,KAAK,IAAI,eAAe,WAAW,OAAO,UAAU,sBAAsB,QAAQ;OACxF;KACJ;;EAQH,WAAWA,OAAkC;AAC3C,UAAM,UAAUA,MAAK;AACrB,WAAO,KAAK,OAAO,aAAa,WAAK;AACnC,aAAO,KAAK,KAAK,OAAO,EAAC,OAAO,MAAM,UAAU,MAAMA,MAAuB,CAAC;KAC/E,EAAE,KAAK,CAAC,EAAC,aAAa,YAAY,SAAQ,MAAC;AAC1C,UAAI,gBAAgB;AAAG,eAAO;AAC9B,YAAM,IAAI,UACR,GAAG,KAAK,IAAI,kBAAkB,WAAW,OAAO,OAAO,sBAAsB,QAAQ;KACxF;;;SC7emB,OAAO,KAAG;AAC9B,MAAI,MAAM,CAAA;AACV,MAAI,KAAK,SAAU,WAAW,YAAU;AACpC,QAAI,YAAY;AAEZ,UAAIC,KAAI,UAAU,QAAQ,OAAO,IAAI,MAAMA,KAAI,CAAC;AAChD,aAAO,EAAEA;AAAG,aAAKA,KAAI,CAAC,IAAI,UAAUA,EAAC;AACrC,UAAI,SAAS,EAAE,UAAU,MAAM,MAAM,IAAI;AACzC,aAAO;eACA,OAAQ,cAAe,UAAU;AAExC,aAAO,IAAI,SAAS;;;AAG5B,KAAG,eAAe;AAElB,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,EAAE,GAAG;AAC9C,QAAI,UAAU,CAAC,CAAC;;AAGpB,SAAO;AAEP,WAAS,IAAI,WAAW,eAAe,iBAAe;AAClD,QAAI,OAAO,cAAc;AAAU,aAAO,oBAAoB,SAAS;AACvE,QAAI,CAAC;AAAe,sBAAgB;AACpC,QAAI,CAAC;AAAiB,wBAAkB;AAExC,QAAI,UAAU;MACV,aAAa,CAAA;MACb,MAAM;MACN,WAAW,SAAU,IAAE;AACnB,YAAI,QAAQ,YAAY,QAAQ,EAAE,MAAM,IAAI;AACxC,kBAAQ,YAAY,KAAK,EAAE;AAC3B,kBAAQ,OAAO,cAAc,QAAQ,MAAM,EAAE;;;MAGrD,aAAa,SAAU,IAAE;AACrB,gBAAQ,cAAc,QAAQ,YAAY,OAAO,SAAU,IAAE;AAAI,iBAAO,OAAO;QAAG,CAAE;AACpF,gBAAQ,OAAO,QAAQ,YAAY,OAAO,eAAe,eAAe;;;AAGhF,QAAI,SAAS,IAAI,GAAG,SAAS,IAAI;AACjC,WAAO;;AAGX,WAAS,oBAAoB,KAAG;AAE5B,SAAK,GAAG,EAAE,QAAQ,SAAU,WAAS;AACjC,UAAI,OAAO,IAAI,SAAS;AACxB,UAAI,QAAQ,IAAI,GAAG;AACf,YAAI,WAAW,IAAI,SAAS,EAAE,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC,CAAC;iBAC5C,SAAS,QAAQ;AAGxB,YAAI,UAAU,IAAI,WAAW,QAAQ,SAAS,OAAI;AAE9C,cAAIA,KAAI,UAAU,QAAQC,QAAO,IAAI,MAAMD,EAAC;AAC5C,iBAAOA;AAAK,YAAAC,MAAKD,EAAC,IAAI,UAAUA,EAAC;AAEjC,kBAAQ,YAAY,QAAQ,SAAU,IAAE;AACpCT,mBAAK,SAAS,YAAS;AACnB,iBAAG,MAAM,MAAMU,KAAI;aACtB;WACJ;SACJ;;AACE,cAAM,IAAI,WAAW,gBAAgB,sBAAsB;KACrE;;AAET;SCrEgB,qBAAoC,WAAmB,aAAqB;AAiB1F,SAAO,WAAW,EAAE,KAAK,EAAC,UAAS,CAAC;AACpC,SAAO;AACT;SCFgB,uBAAwB,IAAS;AAC/C,SAAO,qBACL,MAAM,WAEN,SAASC,OAAoB,MAAc,aAA0B,OAAmB;AACtF,SAAK,KAAK;AACV,SAAK,MAAM;AACX,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,OAAO,GAAG,WAAW,IAAI,IAAI,GAAG,WAAW,IAAI,EAAE,OAAO,OAAO,MAAM;MACxE,YAAY,CAAC,mBAAmB,GAAG;MACnC,WAAW,CAAC,mBAAmB,MAAM;MACrC,YAAY,CAAC,mBAAmB,GAAG;MACnC,YAAY,CAAC,mBAAmB,GAAG;KACpC;GACF;AAGL;SC5BgB,gBAAiB,KAAwB,mBAA2B;AAClF,SAAO,EAAE,IAAI,UAAU,IAAI,aAAa,IAAI,QACvC,oBAAoB,IAAI,YAAY,CAAC,IAAI;AAChD;SAEgB,UAAU,KAAwB,IAAY;AAC5D,MAAI,SAAS,QAAQ,IAAI,QAAQ,EAAE;AACrC;SAEgB,gBAAiB,KAAwB,SAAS,eAAc;AAC9E,MAAI,OAAO,IAAI;AACf,MAAI,eAAe,OAAO,MAAI,QAAQ,KAAI,GAAI,QAAO,CAAE,IAAI;AAC3D,MAAI,YAAY,iBAAiB,CAAC;AACpC;SAEgB,eAAe,KAAwB,IAAE;AACvD,MAAI,UAAU,QAAQ,IAAI,SAAS,EAAE;AACvC;SAEgB,gBAAgB,KAAwB,YAA6B;AAGnF,MAAI,IAAI;AAAW,WAAO,WAAW;AACrC,QAAM,QAAQ,WAAW,kBAAkB,IAAI,KAAK;AACpD,MAAI,CAAC;AAAO,UAAM,IAAI,WAAW,OAAO,aAAa,IAAI,QAAQ,sBAAsB,WAAW,OAAO,iBAAiB;AAC1H,SAAO;AACT;SAEgB,WAAW,KAAwB,WAAwB,OAAwB;AACjG,QAAM,QAAQ,gBAAgB,KAAK,UAAU,MAAM;AACnD,SAAO,UAAU,WAAW;IAC1B;IACA,QAAQ,CAAC,IAAI;IACb,SAAS,IAAI,QAAQ;IACrB,QAAQ,CAAC,CAAC,IAAI;IACd,OAAO;MACL;MACA,OAAO,IAAI;;GAEd;AACH;SAEgB,KACd,KACA,IACA,WACA,WAAsB;AAEtB,QAAM,SAAS,IAAI,eAAe,QAAQ,IAAI,QAAQ,IAAI,aAAY,CAAE,IAAI,IAAI;AAChF,MAAI,CAAC,IAAI,IAAI;AACT,WAAO,QACL,WAAW,KAAK,WAAW,SAAS,GACpC,QAAQ,IAAI,WAAW,MAAM,GAAG,IAAI,CAAC,IAAI,YAAY,IAAI,WAAW;SACnE;AACH,UAAM,MAAM,CAAA;AAEZ,UAAM,QAAQ,CAAC,MAAW,QAAsB,YAAO;AACnD,UAAI,CAAC,UAAU,OAAO,QAAQ,SAAS,YAAQ,OAAO,KAAK,MAAM,GAAG,SAAO,OAAO,KAAK,GAAG,CAAC,GAAG;AAC1F,YAAI,aAAa,OAAO;AACxB,YAAI,MAAM,KAAK;AACf,YAAI,QAAQ;AAAwB,gBAAM,KAAK,IAAI,WAAW,UAAU;AACxE,YAAI,CAAC,OAAO,KAAK,GAAG,GAAG;AACnB,cAAI,GAAG,IAAI;AACX,aAAG,MAAM,QAAQ,OAAO;;;;AAKpC,WAAO,QAAQ,IAAI;MACjB,IAAI,GAAG,SAAS,OAAO,SAAS;MAChC,QAAQ,WAAW,KAAK,WAAW,SAAS,GAAG,IAAI,WAAW,OAAO,CAAC,IAAI,YAAY,IAAI,WAAW;KACtG;;AAEP;AAEA,SAAS,QAAQ,eAAsC,QAAQ,IAAI,aAAW;AAG5E,MAAI,WAAW,cAAc,CAAC,GAAE,GAAE,MAAM,GAAG,YAAY,CAAC,GAAE,GAAE,CAAC,IAAI;AAEjE,MAAI,YAAY,KAAK,QAAQ;AAE7B,SAAO,cAAc,KAAK,YAAM;AAC9B,QAAI,QAAQ;AACV,aAAO,OAAO,MAAM,MAAA;AAClB,YAAI,IAAI,MAAI,OAAO,SAAQ;AAC3B,YAAI,CAAC,UAAU,OAAO,QAAQ,cAAY,IAAI,UAAU,SAAG;AAAG,iBAAO,KAAK,GAAG;AAAE,cAAE;QAAG,GAAG,OAAC;AAAK,iBAAO,KAAK,CAAC;AAAE,cAAI;QAAI,CAAC;AACnH,oBAAU,OAAO,OAAO,QAAQ,cAAY,IAAI,QAAQ;AAC1D,UAAC;OACF;;GAEJ;AACH;SCjGgB,IAAI,GAAQ,GAAM;AAChC,MAAI;AACF,UAAM,KAAK,KAAK,CAAC;AACjB,UAAM,KAAK,KAAK,CAAC;AACjB,QAAI,OAAO,IAAI;AACb,UAAI,OAAO;AAAS,eAAO;AAC3B,UAAI,OAAO;AAAS,eAAO;AAC3B,UAAI,OAAO;AAAU,eAAO;AAC5B,UAAI,OAAO;AAAU,eAAO;AAC5B,UAAI,OAAO;AAAU,eAAO;AAC5B,UAAI,OAAO;AAAU,eAAO;AAC5B,UAAI,OAAO;AAAQ,eAAO;AAC1B,UAAI,OAAO;AAAQ,eAAO;AAC1B,aAAO;;AAET,YAAQ,IAAE;MACR,KAAK;MACL,KAAK;MACL,KAAK;AACH,eAAO,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK;MAClC,KAAK,UAAU;AACb,eAAO,mBAAmB,cAAc,CAAC,GAAG,cAAc,CAAC,CAAC;;MAE9D,KAAK;AACH,eAAO,cAAc,GAAG,CAAC;;WAE7B,IAAM;EAAA;AACR,SAAO;AACT;SAEgB,cAAc,GAAU,GAAQ;AAC9C,QAAM,KAAK,EAAE;AACb,QAAM,KAAK,EAAE;AACb,QAAM,IAAI,KAAK,KAAK,KAAK;AACzB,WAAS,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC1B,UAAM,MAAM,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B,QAAI,QAAQ;AAAG,aAAO;;AAExB,SAAO,OAAO,KAAK,IAAI,KAAK,KAAK,KAAK;AACxC;SAEgB,mBACd,GACA,GAAa;AAEb,QAAM,KAAK,EAAE;AACb,QAAM,KAAK,EAAE;AACb,QAAM,IAAI,KAAK,KAAK,KAAK;AACzB,WAAS,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC1B,QAAI,EAAE,CAAC,MAAM,EAAE,CAAC;AAAG,aAAO,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK;;AAE/C,SAAO,OAAO,KAAK,IAAI,KAAK,KAAK,KAAK;AACxC;AAGA,SAAS,KAAK,GAAM;AAClB,QAAM,IAAI,OAAO;AACjB,MAAI,MAAM;AAAU,WAAO;AAC3B,MAAI,YAAY,OAAO,CAAC;AAAG,WAAO;AAClC,QAAM,QAAQ,YAAY,CAAC;AAC3B,SAAO,UAAU,gBAAgB,WAAY;AAC/C;AAgBA,SAAS,cAAc,GAAa;AAClC,MAAI,aAAa;AAAY,WAAO;AACpC,MAAI,YAAY,OAAO,CAAC;AAEtB,WAAO,IAAI,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU;AAC5D,SAAO,IAAI,WAAW,CAAC;AACzB;ICpEa,mBAAU;EAwBrB,MAAS,IAAwE,IAAG;AAClF,QAAI,MAAM,KAAK;AACf,WAAO,IAAI,QACT,IAAI,MAAM,OAAO,MAAM,UAAU,KAAK,MAAM,IAAI,KAAK,CAAC,IACtD,IAAI,MAAM,OAAO,YAAY,EAAE,EAAE,KAAK,EAAE;;EAG5C,OAAU,IAAsE;AAC9E,QAAI,MAAM,KAAK;AACf,WAAO,IAAI,QACT,IAAI,MAAM,OAAO,MAAM,UAAU,KAAK,MAAM,IAAI,KAAK,CAAC,IACtD,IAAI,MAAM,OAAO,aAAa,IAAI,QAAQ;;EAG9C,cAAc,IAAE;AACd,QAAI,MAAM,KAAK;AACf,QAAI,YAAY,QAAQ,IAAI,WAAW,EAAE;;EAG3C,SACE,IACA,WAA4B;AAE5B,WAAO,KAAK,KAAK,MAAM,IAAI,WAAW,KAAK,KAAK,MAAM,IAAI;;EAQ5D,MAAMN,QAAM;AACV,QAAI,KAAK,OAAO,OAAO,KAAK,YAAY,SAAS,GAC/C,MAAM,OAAO,OAAO,KAAK,IAAI;AAC/B,QAAIA;AAAO,aAAO,KAAKA,MAAK;AAC5B,OAAG,OAAO;AACV,WAAO;;EAQT,MAAG;AACD,SAAK,KAAK,cAAc;AACxB,WAAO;;EAQT,KAAK,IAAsC;AACzC,QAAI,MAAM,KAAK;AAEf,WAAO,KAAK,MAAM,WAAS,KAAK,KAAK,IAAI,OAAO,IAAI,MAAM,IAAI,CAAC;;EAQjE,MAAM,IAAG;AACP,WAAO,KAAK,MAAM,WAAK;AACrB,YAAM,MAAM,KAAK;AACjB,YAAM,YAAY,IAAI,MAAM;AAC5B,UAAI,gBAAgB,KAAK,IAAI,GAAG;AAE9B,eAAO,UAAU,MAAM;UACrB;UACA,OAAO;YACL,OAAO,gBAAgB,KAAK,UAAU,MAAM;YAC5C,OAAO,IAAI;;SAEd,EAAE,KAAK,CAAAO,WAAS,KAAK,IAAIA,QAAO,IAAI,KAAK,CAAC;aACtC;AAEL,YAAI,QAAQ;AACZ,eAAO,KAAK,KAAK,MAAA;AAAQ,YAAE;AAAO,iBAAO;QAAM,GAAI,OAAO,SAAS,EAClE,KAAK,MAAI,KAAK;;KAElB,EAAE,KAAK,EAAE;;EAUZ,OAAO,SAAiB,IAA6B;AACnD,UAAM,QAAQ,QAAQ,MAAM,GAAG,EAAE,QAAO,GACtC,WAAW,MAAM,CAAC,GAClB,YAAY,MAAM,SAAS;AAC7B,aAAS,OAAO,KAAK,GAAC;AACpB,UAAI;AAAG,eAAO,OAAO,IAAI,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;AACzC,aAAO,IAAI,QAAQ;;AAErB,QAAI,QAAQ,KAAK,KAAK,QAAQ,SAAS,IAAI;AAE3C,aAAS,OAAO,GAAG,GAAC;AAClB,UAAI,OAAO,OAAO,GAAG,SAAS,GAC5B,OAAO,OAAO,GAAG,SAAS;AAC5B,aAAO,OAAO,OAAO,CAAC,QAAQ,OAAO,OAAO,QAAQ;;AAEtD,WAAO,KAAK,QAAQ,SAAU,GAAC;AAC7B,aAAO,EAAE,KAAK,MAAM;KACrB,EAAE,KAAK,EAAE;;EAQZ,QAAQ,IAAG;AACT,WAAO,KAAK,MAAM,WAAK;AACrB,UAAI,MAAM,KAAK;AACf,UAAI,IAAI,QAAQ,UAAU,gBAAgB,KAAK,IAAI,KAAK,IAAI,QAAQ,GAAG;AAGrE,cAAM,EAAC,YAAW,IAAI;AACtB,cAAM,QAAQ,gBAAgB,KAAK,IAAI,MAAM,KAAK,MAAM;AACxD,eAAO,IAAI,MAAM,KAAK,MAAM;UAC1B;UACA,OAAO,IAAI;UACX,QAAQ;UACR,OAAO;YACL;YACA,OAAO,IAAI;;SAEd,EAAE,KAAK,CAAC,EAAC,OAAM,MAAM,cAAc,OAAO,IAAI,WAAW,IAAI,MAAM;aAC/D;AAEL,cAAM,IAAI,CAAA;AACV,eAAO,KAAK,KAAK,UAAQ,EAAE,KAAK,IAAI,GAAG,OAAO,IAAI,MAAM,IAAI,EAAE,KAAK,MAAI,CAAC;;OAEzE,EAAE;;EAQP,OAAO,QAAc;AACnB,QAAI,MAAM,KAAK;AACf,QAAI,UAAU;AAAG,aAAO;AACxB,QAAI,UAAU;AACd,QAAI,gBAAgB,GAAG,GAAG;AACxB,sBAAgB,KAAK,MAAA;AACnB,YAAI,aAAa;AACjB,eAAO,CAAC,QAAQ,YAAO;AACrB,cAAI,eAAe;AAAG,mBAAO;AAC7B,cAAI,eAAe,GAAG;AAAE,cAAE;AAAY,mBAAO;;AAC7C,kBAAQ,MAAA;AACN,mBAAO,QAAQ,UAAU;AACzB,yBAAa;WACd;AACD,iBAAO;;OAEV;WACI;AACL,sBAAgB,KAAK,MAAA;AACnB,YAAI,aAAa;AACjB,eAAO,MAAO,EAAE,aAAa;OAC9B;;AAEH,WAAO;;EAQT,MAAM,SAAe;AACnB,SAAK,KAAK,QAAQ,KAAK,IAAI,KAAK,KAAK,OAAO,OAAO;AACnD,oBAAgB,KAAK,MAAM,MAAA;AACzB,UAAI,WAAW;AACf,aAAO,SAAU,QAAQ,SAAS,SAAO;AACvC,YAAI,EAAE,YAAY;AAAG,kBAAQ,OAAO;AACpC,eAAO,YAAY;;OAEpB,IAAI;AACP,WAAO;;EAQT,MAAM,gBAAgC,mBAAkB;AACtD,cAAU,KAAK,MAAM,SAAU,QAAQ,SAAS,SAAO;AACrD,UAAI,eAAe,OAAO,KAAK,GAAG;AAChC,gBAAQ,OAAO;AACf,eAAO;aACF;AACL,eAAO;;KAEV;AACD,WAAO;;EAQT,MAAM,IAAG;AACP,WAAO,KAAK,MAAM,CAAC,EAAE,QAAQ,SAAU,GAAC;AAAI,aAAO,EAAE,CAAC;IAAE,CAAE,EAAE,KAAK,EAAE;;EAQrE,KAAK,IAAG;AACN,WAAO,KAAK,QAAO,EAAG,MAAM,EAAE;;EAQhC,OAAO,gBAA8B;AAEnC,cAAU,KAAK,MAAM,SAAU,QAAM;AACnC,aAAO,eAAe,OAAO,KAAK;KACnC;AAGD,mBAAe,KAAK,MAAM,cAAc;AACxC,WAAO;;EAQT,IAAI,QAAsB;AACxB,WAAO,KAAK,OAAO,MAAM;;EAQ3B,GAAG,WAAiB;AAClB,WAAO,IAAI,KAAK,GAAG,YAAY,KAAK,KAAK,OAAO,WAAW,IAAI;;EAQjE,UAAO;AACL,SAAK,KAAK,MAAO,KAAK,KAAK,QAAQ,SAAS,SAAS;AACrD,QAAI,KAAK;AAAoB,WAAK,mBAAmB,KAAK,KAAK,GAAG;AAClE,WAAO;;EAQT,OAAI;AACF,WAAO,KAAK,QAAO;;EAQrB,QAAQ,IAAG;AACT,QAAI,MAAM,KAAK;AACf,QAAI,WAAW,CAAC,IAAI;AACpB,WAAO,KAAK,KAAK,SAAU,KAAK,QAAM;AAAI,SAAG,OAAO,KAAK,MAAM;IAAE,CAAE;;EAQrE,cAAc,IAAG;AACf,SAAK,KAAK,SAAS;AACnB,WAAO,KAAK,QAAQ,EAAE;;EAQxB,eAAe,IAAG;AAChB,QAAI,MAAM,KAAK;AACf,QAAI,WAAW,CAAC,IAAI;AACpB,WAAO,KAAK,KAAK,SAAU,KAAK,QAAM;AAAI,SAAG,OAAO,YAAY,MAAM;IAAE,CAAE;;EAQ5E,KAAK,IAAG;AACN,QAAI,MAAM,KAAK;AACf,QAAI,WAAW,CAAC,IAAI;AACpB,QAAI,IAAI,CAAA;AACR,WAAO,KAAK,KAAK,SAAU,MAAM,QAAM;AACrC,QAAE,KAAK,OAAO,GAAG;KAClB,EAAE,KAAK,WAAA;AACN,aAAO;KACR,EAAE,KAAK,EAAE;;EAQZ,YAAY,IAAG;AACb,QAAI,MAAM,KAAK;AACf,QAAI,IAAI,QAAQ,UAAU,gBAAgB,KAAK,IAAI,KAAK,IAAI,QAAQ,GAAG;AAGrE,aAAO,KAAK,MAAM,WAAK;AACrB,YAAI,QAAQ,gBAAgB,KAAK,IAAI,MAAM,KAAK,MAAM;AACtD,eAAO,IAAI,MAAM,KAAK,MAAM;UAC1B;UACA,QAAQ;UACR,OAAO,IAAI;UACX,OAAO;YACL;YACA,OAAO,IAAI;;SACX;OACL,EAAE,KAAK,CAAC,EAAC,OAAM,MAAI,MAAM,EAAE,KAAK,EAAE;;AAErC,QAAI,WAAW,CAAC,IAAI;AACpB,QAAI,IAAI,CAAA;AACR,WAAO,KAAK,KAAK,SAAU,MAAM,QAAM;AACrC,QAAE,KAAK,OAAO,UAAU;KACzB,EAAE,KAAK,WAAA;AACN,aAAO;KACR,EAAE,KAAK,EAAE;;EAQZ,WAAW,IAAG;AACZ,SAAK,KAAK,SAAS;AACnB,WAAO,KAAK,KAAK,EAAE;;EAQrB,SAAS,IAAG;AACV,WAAO,KAAK,MAAM,CAAC,EAAE,KAAK,SAAU,GAAC;AAAI,aAAO,EAAE,CAAC;IAAE,CAAE,EAAE,KAAK,EAAE;;EAQlE,QAAQ,IAAG;AACT,WAAO,KAAK,QAAO,EAAG,SAAS,EAAE;;EAQnC,WAAQ;AACN,QAAI,MAAM,KAAK,MACb,MAAM,IAAI,SAAS,IAAI,MAAM,OAAO,UAAU,IAAI,KAAK;AACzD,QAAI,CAAC,OAAO,CAAC,IAAI;AAAO,aAAO;AAC/B,QAAI,MAAM,CAAA;AACV,cAAU,KAAK,MAAM,SAAU,QAAoB;AACjD,UAAI,SAAS,OAAO,WAAW,SAAQ;AACvC,UAAI,QAAQ,OAAO,KAAK,MAAM;AAC9B,UAAI,MAAM,IAAI;AACd,aAAO,CAAC;KACT;AACD,WAAO;;EAaT,OAAO,SAA+E;AACpF,QAAI,MAAM,KAAK;AACf,WAAO,KAAK,OAAO,WAAK;AACtB,UAAI;AACJ,UAAI,OAAO,YAAY,YAAY;AAEjC,mBAAW;aACN;AAEL,YAAI,WAAW,KAAK,OAAO;AAC3B,YAAI,UAAU,SAAS;AACvB,mBAAW,SAAU,MAAI;AACvB,cAAI,mBAAmB;AACvB,mBAAS,IAAI,GAAG,IAAI,SAAS,EAAE,GAAG;AAChC,gBAAI,UAAU,SAAS,CAAC,GAAG,MAAM,QAAQ,OAAO;AAChD,gBAAI,aAAa,MAAM,OAAO,MAAM,KAAK;AACvC,2BAAa,MAAM,SAAS,GAAG;AAC/B,iCAAmB;;;AAGvB,iBAAO;;;AAIX,YAAM,YAAY,IAAI,MAAM;AAC5B,YAAM,EAAC,UAAU,WAAU,IAAI,UAAU,OAAO;AAChD,YAAM,QAAQ,KAAK,GAAG,SAAS,mBAAmB;AAClD,YAAM,gBAAgB,CAAA;AACtB,UAAI,eAAe;AACnB,YAAM,aAA8B,CAAA;AACpC,YAAM,oBAAoB,CAAC,eAAuB,QAAyB;AACzE,cAAM,EAAC,UAAU,YAAW,IAAI;AAChC,wBAAgB,gBAAgB;AAChC,iBAAS,OAAO,KAAK,QAAQ,GAAG;AAC9B,wBAAc,KAAK,SAAS,GAAG,CAAC;;;AAGpC,aAAO,KAAK,MAAK,EAAG,YAAW,EAAG,KAAK,CAAAJ,UAAI;AAEzC,cAAM,YAAY,CAAC,WAAc;AAC/B,gBAAM,QAAQ,KAAK,IAAI,OAAOA,MAAK,SAAS,MAAM;AAClD,iBAAO,UAAU,QAAQ;YACvB;YACA,MAAMA,MAAK,MAAM,QAAQ,SAAS,KAAK;YACvC,OAAO;WAIR,EAAE,KAAK,YAAM;AACZ,kBAAM,YAAY,CAAA;AAClB,kBAAM,YAAY,CAAA;AAClB,kBAAM,UAAU,WAAW,CAAA,IAAK;AAChC,kBAAM,aAAa,CAAA;AACnB,qBAAS,IAAE,GAAG,IAAE,OAAO,EAAE,GAAG;AAC1B,oBAAM,YAAY,OAAO,CAAC;AAC1B,oBAAMK,OAAM;gBACV,OAAO,UAAU,SAAS;gBAC1B,SAASL,MAAK,SAAO,CAAC;;AAExB,kBAAI,SAAS,KAAKK,MAAKA,KAAI,OAAOA,IAAG,MAAM,OAAO;AAChD,oBAAIA,KAAI,SAAS,MAAM;AAErB,6BAAW,KAAKL,MAAK,SAAO,CAAC,CAAC;2BACrB,CAAC,YAAY,IAAI,WAAW,SAAS,GAAG,WAAWK,KAAI,KAAK,CAAC,MAAM,GAAG;AAE/E,6BAAW,KAAKL,MAAK,SAAO,CAAC,CAAC;AAC9B,4BAAU,KAAKK,KAAI,KAAK;uBACnB;AAEL,4BAAU,KAAKA,KAAI,KAAK;AACxB,sBAAI;AAAU,4BAAQ,KAAKL,MAAK,SAAO,CAAC,CAAC;;;;AAI/C,kBAAM,WAAW,gBAAgB,GAAG,KAClC,IAAI,UAAU,aACb,OAAO,YAAY,cAAc,YAAY,mBAAmB;cAC/D,OAAO,IAAI;cACX,OAAO,IAAI;;AAGf,mBAAO,QAAQ,QAAQ,UAAU,SAAS,KACxC,UAAU,OAAO,EAAC,OAAO,MAAM,OAAO,QAAQ,UAAS,CAAC,EACrD,KAAK,SAAG;AACP,uBAAS,OAAO,IAAI,UAAU;AAE5B,2BAAW,OAAO,SAAS,GAAG,GAAG,CAAC;;AAEpC,gCAAkB,UAAU,QAAQ,GAAG;aACxC,CAAC,EACJ,KAAK,OAAK,UAAU,SAAS,KAAM,YAAY,OAAO,YAAY,aAChE,UAAU,OAAO;cACf;cACA,MAAM;cACN,MAAM;cACN,QAAQ;cACR;cACA,YAAY,OAAO,YAAY,cAC1B;aACN,EAAE,KAAK,SAAK,kBAAkB,UAAU,QAAQ,GAAG,CAAC,CAAC,EACxD,KAAK,OAAK,WAAW,SAAS,KAAM,YAAY,YAAY,mBAC1D,UAAU,OAAO;cACf;cACA,MAAM;cACN,MAAM;cACN;aACD,EAAE,KAAK,SAAK,kBAAkB,WAAW,QAAQ,GAAG,CAAC,CAAC,EACzD,KAAK,MAAA;AACL,qBAAOA,MAAK,SAAS,SAAS,SAAS,UAAU,SAAS,KAAK;aAChE;WACF;;AAGH,eAAO,UAAU,CAAC,EAAE,KAAK,MAAA;AACvB,cAAI,cAAc,SAAS;AACzB,kBAAM,IAAI,YAAY,uCAAuC,eAAe,cAAc,UAAwC;AAEpI,iBAAOA,MAAK;SACb;OACF;KAEF;;EAQH,SAAM;AACJ,QAAI,MAAM,KAAK,MACb,QAAQ,IAAI;AAGd,QAAI,gBAAgB,GAAG,MACnB,IAAI,aAAa,CAAC,8BAA+B,MAAM,SAAI,IAC/D;AAKE,aAAO,KAAK,OAAO,WAAK;AAEtB,cAAM,EAAC,WAAU,IAAI,IAAI,MAAM,KAAK;AACpC,cAAM,YAAY;AAClB,eAAO,IAAI,MAAM,KAAK,MAAM,EAAC,OAAO,OAAO,EAAC,OAAO,YAAY,OAAO,UAAS,EAAC,CAAC,EAAE,KAAK,WAAK;AAC3F,iBAAO,IAAI,MAAM,KAAK,OAAO,EAAC,OAAO,MAAM,eAAe,OAAO,UAAS,CAAC,EAC1E,KAAK,CAAC,EAAC,UAAU,YAAY,SAAS,YAAW,MAAC;AACjD,gBAAI;AAAa,oBAAM,IAAI,YAAY,gCACrC,OAAO,KAAK,QAAQ,EAAE,IAAI,SAAO,SAAS,GAAG,CAAC,GAC9C,QAAQ,WAAW;AACrB,mBAAO,QAAQ;WAChB;SACF;OACF;;AAGH,WAAO,KAAK,OAAO,cAAc;;;AAIrC,IAAM,iBAAiB,CAAC,OAAO,QAAQ,IAAI,QAAQ;SC1lBnC,4BAA4B,IAAS;AACnD,SAAO,qBACL,WAAW,WAEX,SAASM,YAEP,aACA,mBAAwC;AAExC,SAAK,KAAK;AACV,QAAI,WAAW,UAAU,QAAQ;AACjC,QAAI;AAAmB,UAAI;AACzB,mBAAW,kBAAiB;eACrB,IAAI;AACX,gBAAQ;;AAGV,UAAM,WAAW,YAAY;AAC7B,UAAM,QAAQ,SAAS;AACvB,UAAM,cAAc,MAAM,KAAK,QAAQ;AACvC,SAAK,OAAO;MACV;MACA,OAAO,SAAS;MAChB,WAAY,CAAC,SAAS,SAAU,MAAM,OAAO,QAAQ,WAAW,SAAS,UAAU,MAAM,OAAO,QAAQ;MACxG,OAAO;MACP,UAAU;MACV,KAAK;MACL,QAAQ;MACR,WAAW;MACX,QAAQ;MACR,cAAc;MACd,WAAW;MACX,SAAS;MACT,QAAQ;MACR,OAAO;MACP;MACA,IAAI,SAAS;MACb,aAAa,gBAAgB,SAAS,cAAc;;GAEvD;AAEL;SC3DgB,cAAc,GAAG,GAAC;AAChC,SAAO,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI;AACpC;SAEgB,qBAAqB,GAAG,GAAC;AACvC,SAAO,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI;AACpC;SCDgB,KAAK,yBAAmD,KAAK,GAAE;AAC7E,MAAI,aAAa,mCAAmC,cAChD,IAAI,wBAAwB,WAAY,uBAAuB,IAC/D;AAEJ,aAAW,KAAK,QAAQ,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,UAAU,GAAG;AAC1D,SAAO;AACT;SAEgB,gBAAgB,aAAwB;AACtD,SAAO,IAAI,YAAY,WAAY,aAAa,MAAM,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC;AAC/E;SAEgB,aAAa,KAAoB;AAC/C,SAAO,QAAQ,SACb,CAAC,MAAc,EAAE,YAAW,IAC5B,CAAC,MAAc,EAAE,YAAW;AAChC;SAEgB,aAAa,KAAoB;AAC/C,SAAO,QAAQ,SACb,CAAC,MAAc,EAAE,YAAW,IAC5B,CAAC,MAAc,EAAE,YAAW;AAChC;SAEgB,WAAW,KAAK,UAAU,aAAa,aAAaC,MAAK,KAAG;AAC1E,MAAI,SAAS,KAAK,IAAI,IAAI,QAAQ,YAAY,MAAM;AACpD,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,IAAI,QAAQ,EAAE,GAAG;AAC7B,QAAI,aAAa,SAAS,CAAC;AAC3B,QAAI,eAAe,YAAY,CAAC,GAAG;AAC/B,UAAIA,KAAI,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI;AAAG,eAAO,IAAI,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,YAAY,OAAO,IAAI,CAAC;AACxG,UAAIA,KAAI,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI;AAAG,eAAO,IAAI,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,YAAY,OAAO,IAAI,CAAC;AACxG,UAAI,OAAO;AAAG,eAAO,IAAI,OAAO,GAAG,GAAG,IAAI,SAAS,GAAG,IAAI,YAAY,OAAO,MAAM,CAAC;AACpF,aAAO;;AAEX,QAAIA,KAAI,IAAI,CAAC,GAAG,UAAU,IAAI;AAAG,YAAM;;AAE3C,MAAI,SAAS,YAAY,UAAU,QAAQ;AAAQ,WAAO,MAAM,YAAY,OAAO,IAAI,MAAM;AAC7F,MAAI,SAAS,IAAI,UAAU,QAAQ;AAAQ,WAAO,IAAI,OAAO,GAAG,YAAY,MAAM;AAClF,SAAQ,MAAM,IAAI,OAAO,IAAI,OAAO,GAAG,GAAG,IAAI,YAAY,GAAG,IAAI,YAAY,OAAO,MAAM,CAAC;AAC7F;SAEgB,uBAAuB,aAA0B,OAAO,SAAS,QAAM;AAErF,MAAI,OAAO,OAAO,SAAS,cAAc,cAAc,WAAW,eAC9D,aAAa,QAAQ;AACzB,MAAI,CAAC,QAAQ,MAAM,OAAK,OAAO,MAAM,QAAQ,GAAG;AAC5C,WAAO,KAAK,aAAa,eAAe;;AAE5C,WAAS,cAAc,KAAG;AACtB,YAAQ,aAAa,GAAG;AACxB,YAAQ,aAAa,GAAG;AACxB,cAAW,QAAQ,SAAS,gBAAgB;AAC5C,QAAI,eAAe,QAAQ,IAAI,SAAU,QAAM;AAC3C,aAAO,EAAC,OAAO,MAAM,MAAM,GAAG,OAAO,MAAM,MAAM,EAAC;KACrD,EAAE,KAAK,SAAS,GAAE,GAAC;AAChB,aAAO,QAAQ,EAAE,OAAO,EAAE,KAAK;KAClC;AACD,mBAAe,aAAa,IAAI,SAAU,IAAE;AAAG,aAAO,GAAG;IAAM,CAAE;AACjE,mBAAe,aAAa,IAAI,SAAU,IAAE;AAAG,aAAO,GAAG;IAAM,CAAE;AACjE,gBAAY;AACZ,oBAAiB,QAAQ,SAAS,KAAK;;AAE3C,gBAAc,MAAM;AAEpB,MAAI,IAAI,IAAI,YAAY,WACpB,aACA,MAAI,YAAY,aAAa,CAAC,GAAG,aAAa,aAAW,CAAC,IAAI,MAAM,CAAC;AAGzE,IAAE,qBAAqB,SAAUC,YAAS;AAEtC,kBAAcA,UAAS;;AAG3B,MAAI,sBAAsB;AAE1B,IAAE,cAAc,SAAU,QAAQ,SAAS,SAAO;AAI9C,QAAI,MAAM,OAAO;AACjB,QAAI,OAAO,QAAQ;AAAU,aAAO;AACpC,QAAI,WAAW,MAAM,GAAG;AACxB,QAAI,MAAM,UAAU,cAAc,mBAAmB,GAAG;AACpD,aAAO;WACJ;AACH,UAAI,uBAAuB;AAC3B,eAAS,IAAE,qBAAqB,IAAE,YAAY,EAAE,GAAG;AAC/C,YAAI,SAAS,WAAW,KAAK,UAAU,aAAa,CAAC,GAAG,aAAa,CAAC,GAAG,SAAS,SAAS;AAC3F,YAAI,WAAW,QAAQ,yBAAyB;AAC5C,gCAAsB,IAAI;iBACrB,yBAAyB,QAAQ,QAAQ,sBAAsB,MAAM,IAAI,GAAG;AACjF,iCAAuB;;;AAG/B,UAAI,yBAAyB,MAAM;AAC/B,gBAAQ,WAAA;AAAc,iBAAO,SAAS,uBAAuB,aAAa;QAAE,CAAE;aAC3E;AACH,gBAAQ,OAAO;;AAEnB,aAAO;;GAEd;AACD,SAAO;AACT;SAEgB,YAAa,OAAsB,OAAsB,WAAqB,WAAmB;AAC7G,SAAO;IACH,MAAI;IACJ;IACA;IACA;IACA;;AAER;SAEgB,WAAY,OAAoB;AAC5C,SAAO;IACH,MAAI;IACJ,OAAO;IACP,OAAO;;AAEf;ICpHa,oBAAW;EActB,IAAI,aAAU;AACZ,WAAO,KAAK,KAAK,MAAM,GAAG;;EAQ5B,QAAQ,OAAsB,OAAsB,cAAwB,cAAsB;AAChG,mBAAe,iBAAiB;AAChC,mBAAe,iBAAiB;AAChC,QAAI;AACF,UAAK,KAAK,KAAK,OAAO,KAAK,IAAI,KAC5B,KAAK,KAAK,OAAO,KAAK,MAAM,MAAM,gBAAgB,iBAAiB,EAAE,gBAAgB;AACtF,eAAO,gBAAgB,IAAI;AAC7B,aAAO,IAAI,KAAK,WAAW,MAAM,MAAI,YAAY,OAAO,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC;aACrF,GAAG;AACV,aAAO,KAAK,MAAM,oBAAoB;;;EAS1C,OAAO,OAAoB;AACzB,QAAI,SAAS;AAAM,aAAO,KAAK,MAAM,oBAAoB;AACzD,WAAO,IAAI,KAAK,WAAW,MAAM,MAAM,WAAW,KAAK,CAAC;;EAQ1D,MAAM,OAAoB;AACxB,QAAI,SAAS;AAAM,aAAO,KAAK,MAAM,oBAAoB;AACzD,WAAO,IAAI,KAAK,WAAW,MAAM,MAAM,YAAY,OAAO,QAAW,IAAI,CAAC;;EAQ5E,aAAa,OAAoB;AAC/B,QAAI,SAAS;AAAM,aAAO,KAAK,MAAM,oBAAoB;AACzD,WAAO,IAAI,KAAK,WAAW,MAAM,MAAM,YAAY,OAAO,QAAW,KAAK,CAAC;;EAQ7E,MAAM,OAAoB;AACxB,QAAI,SAAS;AAAM,aAAO,KAAK,MAAM,oBAAoB;AACzD,WAAO,IAAI,KAAK,WAAW,MAAM,MAAM,YAAY,QAAW,OAAO,OAAO,IAAI,CAAC;;EAQnF,aAAa,OAAoB;AAC/B,QAAI,SAAS;AAAM,aAAO,KAAK,MAAM,oBAAoB;AACzD,WAAO,IAAI,KAAK,WAAW,MAAM,MAAM,YAAY,QAAW,KAAK,CAAC;;EAQtE,WAAW,KAAW;AACpB,QAAI,OAAO,QAAQ;AAAU,aAAO,KAAK,MAAM,eAAe;AAC9D,WAAO,KAAK,QAAQ,KAAK,MAAM,WAAW,MAAM,IAAI;;EAQtD,qBAAqB,KAAW;AAC9B,QAAI,QAAQ;AAAI,aAAO,KAAK,WAAW,GAAG;AAC1C,WAAO,uBAAuB,MAAM,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,SAAS;;EAQvF,iBAAiB,KAAW;AAC1B,WAAO,uBAAuB,MAAM,CAAC,GAAG,MAAM,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE;;EAUrE,kBAAe;AACb,QAAI,MAAM,WAAW,MAAM,eAAe,SAAS;AACnD,QAAI,IAAI,WAAW;AAAG,aAAO,gBAAgB,IAAI;AACjD,WAAO,uBAAuB,MAAM,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,KAAK,EAAE;;EAU5E,4BAAyB;AACvB,QAAI,MAAM,WAAW,MAAM,eAAe,SAAS;AACnD,QAAI,IAAI,WAAW;AAAG,aAAO,gBAAgB,IAAI;AACjD,WAAO,uBAAuB,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,OAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS;;EAU/F,QAAK;AACH,UAAM,MAAM,WAAW,MAAM,eAAe,SAAS;AACrD,QAAI,UAAU,KAAK;AACnB,QAAI;AAAE,UAAI,KAAK,OAAO;aAAY,GAAG;AAAE,aAAO,KAAK,MAAM,oBAAoB;;AAC7E,QAAI,IAAI,WAAW;AAAG,aAAO,gBAAgB,IAAI;AACjD,UAAM,IAAI,IAAI,KAAK,WAAW,MAAM,MAAM,YAAY,IAAI,CAAC,GAAG,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC;AAElF,MAAE,qBAAqB,eAAS;AAC9B,gBAAW,cAAc,SACvB,KAAK,aACL,KAAK;AACP,UAAI,KAAK,OAAO;;AAGlB,QAAI,IAAI;AACR,MAAE,cAAc,CAAC,QAAQ,SAAS,YAAO;AACvC,YAAM,MAAM,OAAO;AACnB,aAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,IAAI,GAAG;AAE/B,UAAE;AACF,YAAI,MAAM,IAAI,QAAQ;AAEpB,kBAAQ,OAAO;AACf,iBAAO;;;AAGX,UAAI,QAAQ,KAAK,IAAI,CAAC,CAAC,MAAM,GAAG;AAE9B,eAAO;aACF;AAEL,gBAAQ,MAAA;AAAQ,iBAAO,SAAS,IAAI,CAAC,CAAC;QAAE,CAAE;AAC1C,eAAO;;KAEV;AACD,WAAO;;EAQT,SAAS,OAAoB;AAC3B,WAAO,KAAK,WAAW,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,OAAO,eAAe,MAAK,CAAE;;EAUpH,SAAM;AACJ,UAAM,MAAM,WAAW,MAAM,eAAe,SAAS;AACrD,QAAI,IAAI,WAAW;AAAG,aAAO,IAAI,KAAK,WAAW,IAAI;AACrD,QAAI;AAAE,UAAI,KAAK,KAAK,UAAU;aAAY,GAAG;AAAE,aAAO,KAAK,MAAM,oBAAoB;;AAErF,UAAM,SAAS,IAAI,OACjB,CAAC,KAAK,QAAQ,MACZ,IAAI,OAAO,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,IAC1C,CAAC,CAAC,QAAQ,GAAG,CAAC,GAChB,IAAI;AACN,WAAO,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC;AAClD,WAAO,KAAK,WAAW,QAAQ,EAAE,eAAe,OAAO,eAAe,MAAK,CAAE;;EAQ/E,WACE,QACA,SAA8D;AAE9D,UAAMD,OAAM,KAAK,MACX,YAAY,KAAK,YACjB,aAAa,KAAK,aAClB,MAAM,KAAK,MACX,MAAM,KAAK;AAEjB,QAAI,OAAO,WAAW;AAAG,aAAO,gBAAgB,IAAI;AACpD,QAAI,CAAC,OAAO,MAAM,WAChB,MAAM,CAAC,MAAM,UACb,MAAM,CAAC,MAAM,UACb,UAAU,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG;AACrC,aAAO,KACL,MACA,8HACA,WAAW,eAAe;;AAE9B,UAAM,gBAAgB,CAAC,WAAW,QAAQ,kBAAkB;AAC5D,UAAM,gBAAgB,WAAW,QAAQ,kBAAkB;AAE3D,aAASE,UAASC,SAAQ,UAAQ;AAChC,UAAI,IAAI,GAAG,IAAIA,QAAO;AACtB,aAAO,IAAI,GAAG,EAAE,GAAG;AACjB,cAAM,QAAQA,QAAO,CAAC;AACtB,YAAIH,KAAI,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,KAAKA,KAAI,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,GAAG;AACpE,gBAAM,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC;AACpC,gBAAM,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC;AACpC;;;AAGJ,UAAI,MAAM;AACR,QAAAG,QAAO,KAAK,QAAQ;AACtB,aAAOA;;AAGT,QAAI,gBAAgB;AACpB,aAAS,YAAY,GAAG,GAAC;AAAI,aAAO,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IAAE;AAG9D,QAAI;AACJ,QAAI;AACF,YAAM,OAAO,OAAOD,WAAU,CAAA,CAAE;AAChC,UAAI,KAAK,WAAW;aACb,IAAI;AACX,aAAO,KAAK,MAAM,oBAAoB;;AAGxC,QAAI,WAAW;AACf,UAAM,0BAA0B,gBAC9B,SAAO,UAAU,KAAK,IAAI,QAAQ,EAAE,CAAC,CAAC,IAAI,IAC1C,SAAO,UAAU,KAAK,IAAI,QAAQ,EAAE,CAAC,CAAC,KAAK;AAE7C,UAAM,0BAA0B,gBAC9B,SAAO,WAAW,KAAK,IAAI,QAAQ,EAAE,CAAC,CAAC,IAAI,IAC3C,SAAO,WAAW,KAAK,IAAI,QAAQ,EAAE,CAAC,CAAC,KAAK;AAE9C,aAAS,sBAAsB,KAAG;AAChC,aAAO,CAAC,wBAAwB,GAAG,KAAK,CAAC,wBAAwB,GAAG;;AAGtE,QAAI,WAAW;AAEf,UAAM,IAAI,IAAI,KAAK,WACjB,MACA,MAAM,YAAY,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC;AAEtF,MAAE,qBAAqB,eAAS;AAC9B,UAAI,cAAc,QAAQ;AACxB,mBAAW;AACX,wBAAgB;aACX;AACL,mBAAW;AACX,wBAAgB;;AAElB,UAAI,KAAK,WAAW;;AAGtB,MAAE,cAAc,CAAC,QAAQ,SAAS,YAAO;AACvC,UAAI,MAAM,OAAO;AACjB,aAAO,SAAS,GAAG,GAAG;AAEpB,UAAE;AACF,YAAI,aAAa,IAAI,QAAQ;AAE3B,kBAAQ,OAAO;AACf,iBAAO;;;AAGX,UAAI,sBAAsB,GAAG,GAAG;AAE9B,eAAO;iBACE,KAAK,KAAK,KAAK,IAAI,QAAQ,EAAE,CAAC,CAAC,MAAM,KAAK,KAAK,KAAK,KAAK,IAAI,QAAQ,EAAE,CAAC,CAAC,MAAM,GAAG;AAG3F,eAAO;aACF;AAEL,gBAAQ,MAAA;AACN,cAAI,kBAAkB;AAAW,mBAAO,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC;;AAC5D,mBAAO,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC;SACtC;AACD,eAAO;;KAEV;AACD,WAAO;;EAUT,kBAAe;AACb,UAAM,MAAM,WAAW,MAAM,eAAe,SAAS;AAErD,QAAI,CAAC,IAAI,MAAM,OAAK,OAAO,MAAM,QAAQ,GAAG;AACxC,aAAO,KAAK,MAAM,2CAA2C;;AAEjE,QAAI,IAAI,WAAW;AAAG,aAAO,gBAAgB,IAAI;AAEjD,WAAO,KAAK,WAAW,IAAI,IAAI,CAAC,QAAgB,CAAC,KAAK,MAAM,SAAS,CAAC,CAAC;;;SCvV3D,6BAA6B,IAAS;AACpD,SAAO,qBACL,YAAY,WAEZ,SAASE,aAA+B,OAAc,OAAgB,cAAyB;AAC7F,SAAK,KAAK;AACV,SAAK,OAAO;MACV;MACA,OAAO,UAAU,QAAQ,OAAO;MAChC,IAAI;;AAEN,UAAMC,aAAY,GAAG,MAAM;AAC3B,QAAI,CAACA;AAAW,YAAM,IAAI,WAAW,WAAU;AAC/C,SAAK,OAAO,KAAK,aAAaA,WAAU,IAAI,KAAKA,UAAS;AAC1D,SAAK,cAAc,CAAC,GAAG,MAAMA,WAAU,IAAI,GAAG,CAAC;AAC/C,SAAK,OAAO,CAAC,GAAG,MAAMA,WAAU,IAAI,GAAE,CAAC,IAAI,IAAI,IAAI;AACnD,SAAK,OAAO,CAAC,GAAG,MAAMA,WAAU,IAAI,GAAE,CAAC,IAAI,IAAI,IAAI;AACnD,SAAK,eAAe,GAAG,MAAM;GAC9B;AAEL;SCpCgB,mBAAmB,QAAM;AACvC,SAAO,KAAK,SAAU,OAAK;AACvB,mBAAe,KAAK;AACpB,WAAQ,MAAM,OAAO,KAAK;AAC1B,WAAO;GACV;AACH;SA4CgB,eAAe,OAAK;AAClC,MAAI,MAAM;AACN,UAAM,gBAAe;AACzB,MAAI,MAAM;AACN,UAAM,eAAc;AAC1B;ACtDO,IAAM,mCAAmC;AAazC,IAAM,iCAAiC;AAEvC,IAAM,eAAe,OAAO,MAAM,gCAAgC;ICC5D,oBAAW;EA6BtB,QAAK;AACH,WAAO,CAAC,IAAI,MAAM;AAElB,MAAE,KAAK;AACP,QAAI,KAAK,cAAc,KAAK,CAAC,IAAI;AAAQ,UAAI,eAAe;AAC5D,WAAO;;EAOT,UAAO;AACL,WAAO,CAAC,IAAI,MAAM;AAClB,QAAI,EAAE,KAAK,cAAc,GAAG;AAC1B,UAAI,CAAC,IAAI;AAAQ,YAAI,eAAe;AACpC,aAAO,KAAK,cAAc,SAAS,KAAK,CAAC,KAAK,QAAO,GAAI;AACvD,YAAI,WAAW,KAAK,cAAc,MAAK;AACvC,YAAI;AAAE,iBAAO,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;iBAAY,GAAG;QAAA;;;AAGxD,WAAO;;EAOT,UAAO;AAWL,WAAO,KAAK,aAAa,IAAI,iBAAiB;;EAQhD,OAAO,UAAyB;AAC9B,QAAI,CAAC,KAAK;AAAM,aAAO;AACvB,UAAM,QAAQ,KAAK,GAAG;AACtB,UAAM,cAAc,KAAK,GAAG,OAAO;AACnC,WAAO,CAAC,KAAK,QAAQ;AACrB,QAAI,CAAC,YAAY,CAAC,OAAO;AACvB,cAAQ,eAAe,YAAY,MAAI;QACrC,KAAK;AAEH,gBAAM,IAAI,WAAW,eAAe,WAAW;QACjD,KAAK;AAEH,gBAAM,IAAI,WAAW,WAAW,YAAY,SAAS,WAAW;QAClE;AAEE,gBAAM,IAAI,WAAW,WAAW,WAAW;;;AAGjD,QAAI,CAAC,KAAK;AAAQ,YAAM,IAAI,WAAW,oBAAmB;AAC1D,WAAO,KAAK,YAAY,WAAW,IAAI;AAEvC,eAAW,KAAK,WAAW,aACxB,KAAK,GAAG,OACL,KAAK,GAAG,KAAK,YAAY,KAAK,YAAY,KAAK,MAAkC,EAAE,YAAY,KAAK,4BAA2B,CAAE,IACjI,MAAM,YAAY,KAAK,YAAY,KAAK,MAAM,EAAE,YAAY,KAAK,4BAA2B,CAAE;AAGpG,aAAS,UAAU,KAAK,QAAE;AACxB,qBAAe,EAAE;AACjB,WAAK,QAAQ,SAAS,KAAK;KAC5B;AACD,aAAS,UAAU,KAAK,QAAE;AACxB,qBAAe,EAAE;AACjB,WAAK,UAAU,KAAK,QAAQ,IAAI,WAAW,MAAM,SAAS,KAAK,CAAC;AAChE,WAAK,SAAS;AACd,WAAK,GAAG,OAAO,EAAE,KAAK,EAAE;KACzB;AACD,aAAS,aAAa,KAAK,MAAA;AACzB,WAAK,SAAS;AACd,WAAK,SAAQ;AACb,UAAI,kBAAkB,UAAU;AAC9B,qBAAa,eAAe,KAAK,SAAS,cAAc,CAAC;;KAE5D;AACD,WAAO;;EAOT,SACE,MACA,IACA,YAA6B;AAE7B,QAAI,SAAS,eAAe,KAAK,SAAS;AACxC,aAAO,UAAU,IAAI,WAAW,SAAS,yBAAyB,CAAC;AAErE,QAAI,CAAC,KAAK;AACR,aAAO,UAAU,IAAI,WAAW,oBAAmB,CAAE;AAEvD,QAAI,KAAK,QAAO,GAAI;AAClB,aAAO,IAAI,aAAa,CAAC,SAAS,WAAM;AACtC,aAAK,cAAc,KAAK,CAAC,MAAA;AACvB,eAAK,SAAS,MAAM,IAAI,UAAU,EAAE,KAAK,SAAS,MAAM;WACvD,GAAG,CAAC;OACR;eAEQ,YAAY;AACrB,aAAO,SAAS,MAAA;AACd,YAAIC,KAAI,IAAI,aAAa,CAAC,SAAS,WAAM;AACvC,eAAK,MAAK;AACV,gBAAM,KAAK,GAAG,SAAS,QAAQ,IAAI;AACnC,cAAI,MAAM,GAAG;AAAM,eAAG,KAAK,SAAS,MAAM;SAC3C;AACD,QAAAA,GAAE,QAAQ,MAAM,KAAK,QAAO,CAAE;AAC9B,QAAAA,GAAE,OAAO;AACT,eAAOA;OACR;WAEI;AACL,UAAI,IAAI,IAAI,aAAa,CAAC,SAAS,WAAM;AACvC,YAAI,KAAK,GAAG,SAAS,QAAQ,IAAI;AACjC,YAAI,MAAM,GAAG;AAAM,aAAG,KAAK,SAAS,MAAM;OAC3C;AACD,QAAE,OAAO;AACT,aAAO;;;EAQX,QAAK;AACH,WAAO,KAAK,SAAS,KAAK,OAAO,MAAK,IAAK;;EAS7C,QAAQ,aAA6B;AAEnC,QAAI,OAAO,KAAK,MAAK;AAGrB,UAAM,UAAU,aAAa,QAAQ,WAAW;AAChD,QAAI,KAAK,aAAa;AAEpB,WAAK,cAAc,KAAK,YAAY,KAAK,MAAM,OAAO;WACjD;AAEL,WAAK,cAAc;AACnB,WAAK,gBAAgB,CAAA;AAErB,UAAI,QAAQ,KAAK,SAAS,YAAY,KAAK,WAAW,CAAC,CAAC;AACxD,OAAC,SAAS,OAAI;AACZ,UAAE,KAAK;AACP,eAAO,KAAK,cAAc;AAAQ,UAAC,KAAK,cAAc,MAAK,EAAE;AAC7D,YAAI,KAAK;AAAa,gBAAM,IAAI,SAAS,EAAE,YAAY;SACxD;;AAEH,QAAI,qBAAqB,KAAK;AAC9B,WAAO,IAAI,aAAa,CAAC,SAAS,WAAM;AACtC,cAAQ,KACN,SAAO,KAAK,cAAc,KAAK,KAAK,QAAQ,KAAK,MAAM,GAAG,CAAC,CAAC,GAC5D,SAAO,KAAK,cAAc,KAAK,KAAK,OAAO,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAC5D,QAAQ,MAAA;AACR,YAAI,KAAK,gBAAgB,oBAAoB;AAE3C,eAAK,cAAc;;OAEtB;KACF;;EAOH,QAAK;AACH,QAAI,KAAK,QAAQ;AACf,WAAK,SAAS;AACd,UAAI,KAAK;AAAU,aAAK,SAAS,MAAK;AACtC,WAAK,QAAQ,IAAI,WAAW,MAAK,CAAE;;;EAQvC,MAAM,WAAiB;AACrB,UAAM,iBAAkB,KAAK,oBAAoB,KAAK,kBAAkB,CAAA;AACxE,QAAI,OAAO,gBAAgB,SAAS;AAClC,aAAO,eAAe,SAAS;AACjC,UAAM,cAAc,KAAK,OAAO,SAAS;AACzC,QAAI,CAAC,aAAa;AAChB,YAAM,IAAI,WAAW,SAAS,WAAW,YAAY,0BAA0B;;AAGjF,UAAM,wBAAwB,IAAI,KAAK,GAAG,MAAM,WAAW,aAAa,IAAI;AAC5E,0BAAsB,OAAO,KAAK,GAAG,KAAK,MAAM,SAAS;AACzD,mBAAe,SAAS,IAAI;AAC5B,WAAO;;;SChPK,6BAA6B,IAAS;AACpD,SAAO,qBACL,YAAY,WACZ,SAASC,aAEP,MACA,YACA,UACA,6BACA,QAAoB;AAEpB,SAAK,KAAK;AACV,SAAK,OAAO;AACZ,SAAK,aAAa;AAClB,SAAK,SAAS;AACd,SAAK,8BAA8B;AACnC,SAAK,WAAW;AAChB,SAAK,KAAK,OAAO,MAAM,YAAY,SAAS,OAAO;AACnD,SAAK,SAAS,UAAU;AACxB,SAAK,SAAS;AACd,SAAK,YAAY;AACjB,SAAK,gBAAgB,CAAA;AACrB,SAAK,WAAW;AAChB,SAAK,UAAU;AACf,SAAK,cAAc;AACnB,SAAK,gBAAgB;AACrB,SAAK,aAAa;AAClB,SAAK,cAAc,IAAIf,aAAS,CAAC,SAAS,WAAM;AAC5C,WAAK,WAAW;AAChB,WAAK,UAAU;KAClB;AAED,SAAK,YAAY,KACb,MAAA;AACI,WAAK,SAAS;AACd,WAAK,GAAG,SAAS,KAAI;OAEzB,OAAC;AACG,UAAI,YAAY,KAAK;AACrB,WAAK,SAAS;AACd,WAAK,GAAG,MAAM,KAAK,CAAC;AACpB,WAAK,SACD,KAAK,OAAO,QAAQ,CAAC,IACrB,aAAa,KAAK,YAAY,KAAK,SAAS,MAAK;AACrD,aAAO,UAAU,CAAC;KACrB;GAEN;AACL;SCrEgB,gBACd,MACA,SACA,QACA,OACA,MACA,UACA,WAAkB;AAElB,SAAO;IACL;IACA;IACA;IACA;IACA;IACA;IACA,MAAM,UAAU,CAAC,YAAY,MAAM,OAAO,QAAQ,MAAM,OAAO,OAAO,OAAO,MAAM,gBAAgB,OAAO;;AAE9G;SAEgB,gBAAiB,SAA2B;AAC1D,SAAO,OAAO,YAAY,WACxB,UACA,UAAW,MAAM,CAAA,EAAG,KAAK,KAAK,SAAS,GAAG,IAAI,MAAO;AACzD;SCrBgB,kBACd,MACA,SACA,SAAoB;AAEpB,SAAO;IACL;IACA;IACA;IACA,aAAa;IACb,WAAW,cAAc,SAAS,WAAS,CAAC,MAAM,MAAM,KAAK,CAAC;;AAElE;SCfgB,oBAAoB,YAAoB;AACtD,SAAO,WAAW,WAAW,IAAI,WAAW,CAAC,IAAI;AACnD;AAOO,IAAI,YAAY,CAAC,gBAA+B;AACrD,MAAI;AACF,gBAAY,KAAK,CAAC,CAAA,CAAE,CAAC;AACrB,gBAAY,MAAM,CAAC,CAAA,CAAE;AACrB,WAAO,CAAC,CAAA,CAAE;WACH,GAAG;AACV,gBAAY,MAAM;AAClB,WAAO;;AAEX;SClBgB,gBAAiB,SAAiC;AAChE,MAAI,WAAW,MAAM;AACnB,WAAO,MAAM;aACJ,OAAO,YAAY,UAAU;AACtC,WAAO,0BAA0B,OAAO;SACnC;AACL,WAAO,SAAO,aAAa,KAAK,OAAO;;AAE3C;SAEgB,0BAA0B,SAAe;AACvD,QAAM,QAAQ,QAAQ,MAAM,GAAG;AAC/B,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,SAAO,IAAI,OAAO;SACpB;AACL,WAAO,SAAO,aAAa,KAAK,OAAO;;AAE3C;SCCgB,SAAY,WAA+C;AACzE,SAAO,CAAA,EAAG,MAAM,KAAK,SAAS;AAChC;AAOA,IAAI,cAAc;SAEF,gBAAgB,SAAiC;AAC/D,SAAO,WAAW,OAChB,QACA,OAAO,YAAY,WACjB,UACA,IAAI,QAAQ,KAAK,GAAG,CAAC;AAC3B;SAEgB,aACd,IACA,aACA,UAAwB;AAExB,WAAS,cAAcgB,KAAiB,OAAqB;AAC3D,UAAMC,UAAS,SAASD,IAAG,gBAAgB;AAC3C,WAAO;MACL,QAAQ;QACN,MAAMA,IAAG;QACT,QAAQC,QAAO,IAAI,WAAS,MAAM,YAAY,KAAK,CAAC,EAAE,IAAI,WAAK;AAC7D,gBAAM,EAAC,SAAS,cAAa,IAAI;AACjC,gBAAM,WAAW,QAAQ,OAAO;AAChC,gBAAM,WAAW,WAAW;AAC5B,gBAAM,iBAAwD,CAAA;AAC9D,gBAAM,SAAS;YACb,MAAM,MAAM;YACZ,YAAY;cACV,MAAM;cACN,cAAc;cACd;cACA;cACA;cACA;cACA,QAAQ;cACR,YAAY,gBAAgB,OAAO;;YAErC,SAAS,SAAS,MAAM,UAAU,EAAE,IAAI,eAAa,MAAM,MAAM,SAAS,CAAC,EACxE,IAAI,WAAK;AACR,oBAAM,EAAC,MAAM,QAAQ,YAAY,SAAAC,SAAO,IAAI;AAC5C,oBAAMC,YAAW,QAAQD,QAAO;AAChC,oBAAME,UAAsB;gBAC1B;gBACA,UAAAD;gBACA,SAAAD;gBACA;gBACA;gBACA,YAAY,gBAAgBA,QAAO;;AAErC,6BAAe,gBAAgBA,QAAO,CAAC,IAAIE;AAC3C,qBAAOA;aACR;YACH,mBAAmB,CAACF,aAAsC,eAAe,gBAAgBA,QAAO,CAAC;;AAEnG,yBAAe,KAAK,IAAI,OAAO;AAC/B,cAAI,WAAW,MAAM;AACnB,2BAAe,gBAAgB,OAAO,CAAC,IAAI,OAAO;;AAEpD,iBAAO;SACR;;MAEH,WAAWD,QAAO,SAAS,KAAM,YAAY,MAAM,YAAYA,QAAO,CAAC,CAAC,KACtE,EAAE,OAAO,cAAc,eAAe,SAAS,KAAK,UAAU,SAAS,KACvE,CAAC,oBAAoB,KAAK,UAAU,SAAS,KAC7C,CAAA,EAAG,OAAO,UAAU,UAAU,MAAM,eAAe,CAAC,EAAE,CAAC,IAAI;;;AAIjE,WAAS,gBAAiB,OAAqB;AAC7C,QAAI,MAAM,SAAI;AAA0B,aAAO;AAC/C,QAAI,MAAM,SAAI;AAA4B,YAAM,IAAI,MAAM,0CAA0C;AACpG,UAAM,EAAC,OAAO,OAAO,WAAW,UAAS,IAAI;AAC7C,UAAM,WAAW,UAAU,SACzB,UAAU,SACR,OACA,YAAY,WAAW,OAAO,CAAC,CAAC,SAAS,IAC3C,UAAU,SACR,YAAY,WAAW,OAAO,CAAC,CAAC,SAAS,IACzC,YAAY,MAAM,OAAO,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS;AAC5D,WAAO;;AAGT,WAAS,kBAAkB,aAA8B;AACvD,UAAM,YAAY,YAAY;AAE9B,aAAS,OAAQ,EAAC,OAAO,MAAAtB,OAAM,MAAAM,OAAM,QAAQ,MAAK,GAAC;AACjD,aAAO,IAAI,QAA8B,CAAC,SAAS,WAAM;AACvD,kBAAU,KAAK,OAAO;AACtB,cAAM,QAAS,MAAyB,YAAY,SAAS;AAC7D,cAAM,WAAW,MAAM,WAAW;AAClC,cAAM,aAAaN,UAAS,SAASA,UAAS;AAC9C,YAAI,CAAC,cAAcA,UAAS,YAAYA,UAAS;AAC/C,gBAAM,IAAI,MAAO,6BAA6BA,KAAI;AAEpD,cAAM,EAAC,OAAM,IAAIM,SAAQ,UAAU,EAAC,QAAQ,EAAC;AAC7C,YAAIA,SAAQ,UAAUA,MAAK,WAAW,OAAO,QAAQ;AACnD,gBAAM,IAAI,MAAM,+DAA+D;;AAEjF,YAAI,WAAW;AAEb,iBAAO,QAAQ,EAAC,aAAa,GAAG,UAAU,CAAA,GAAI,SAAS,CAAA,GAAI,YAAY,OAAS,CAAC;AAEnF,YAAI;AACJ,cAAM,OAAqB,CAAA;AAE3B,cAAM,WAA+C,CAAA;AACrD,YAAI,cAAc;AAClB,cAAM,eACJ,WAAK;AACH,YAAE;AACF,yBAAe,KAAK;;AAGxB,YAAIN,UAAS,eAAe;AAE1B,cAAI,MAAM,SAAI;AACZ,mBAAO,QAAQ,EAAC,aAAa,UAAU,SAAS,CAAA,GAAI,YAAY,OAAS,CAAC;AAC5E,cAAI,MAAM,SAAI;AACZ,iBAAK,KAAK,MAAM,MAAM,MAAK,CAAE;;AAE7B,iBAAK,KAAK,MAAM,MAAM,OAAO,gBAAgB,KAAK,CAAC,CAAC;eACjD;AAEL,gBAAM,CAAC,OAAO,KAAK,IAAI,aACrB,WACE,CAAC,QAAQM,KAAI,IACb,CAAC,QAAQ,IAAI,IACf,CAACA,OAAM,IAAI;AAEb,cAAI,YAAY;AACd,qBAAS,IAAE,GAAG,IAAE,QAAQ,EAAE,GAAG;AAC3B,mBAAK,KAAK,MAAO,SAAS,MAAM,CAAC,MAAM,SACrC,MAAMN,KAAI,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAC9B,MAAMA,KAAI,EAAE,MAAM,CAAC,CAAC,CAAgB;AACtC,kBAAI,UAAU;;iBAEX;AACL,qBAAS,IAAE,GAAG,IAAE,QAAQ,EAAE,GAAG;AAC3B,mBAAK,KAAK,MAAM,MAAMA,KAAI,EAAE,MAAM,CAAC,CAAC,CAAe;AACnD,kBAAI,UAAU;;;;AAIpB,cAAM,OAAO,WAAK;AAChB,gBAAM,aAAa,MAAM,OAAO;AAChC,eAAK,QAAQ,CAAC0B,MAAK,MAAMA,KAAI,SAAS,SAAS,SAAS,CAAC,IAAIA,KAAI,MAAM;AACvE,kBAAQ;YACN;YACA;YACA,SAAS1B,UAAS,WAAWM,QAAO,KAAK,IAAI,CAAAoB,SAAOA,KAAI,MAAM;YAC9D;WACD;;AAGH,YAAI,UAAU,WAAK;AACjB,uBAAa,KAAK;AAClB,eAAK,KAAK;;AAGZ,YAAI,YAAY;OACjB;;AAGH,aAASC,YAAY,EAAC,OAAO,QAAQ,OAAAC,QAAO,SAAS,OAAM,GAA0B;AAEnF,aAAO,IAAI,QAAQ,CAAC,SAAS,WAAM;AACjC,kBAAU,KAAK,OAAO;AACtB,cAAM,EAAC,OAAO,MAAK,IAAIA;AACvB,cAAM,QAAS,MAAyB,YAAY,SAAS;AAE7D,cAAM,SAAS,MAAM,eACnB,QACA,MAAM,MAAM,MAAM,IAAI;AAExB,cAAM,YAAY,UAChB,SACE,eACA,SACF,SACE,eACA;AAEJ,cAAM,MAAM,UAAU,EAAE,mBAAmB,UACzC,OAAO,WAAW,gBAAgB,KAAK,GAAG,SAAS,IACnD,OAAO,cAAc,gBAAgB,KAAK,GAAG,SAAS;AAGxD,YAAI,UAAU,mBAAmB,MAAM;AACvC,YAAI,YAAY,KAAK,QAAE;AAErB,gBAAM,SAAS,IAAI;AACnB,cAAI,CAAC,QAAQ;AACX,oBAAQ,IAAI;AACZ;;AAED,iBAAe,QAAQ,EAAE;AACzB,iBAAe,OAAO;AACvB,gBAAM,kBAAkB,OAAO,SAAS,KAAK,MAAM;AACnD,cAAI,4BAA4B,OAAO;AACvC,cAAI;AAA2B,wCAA4B,0BAA0B,KAAK,MAAM;AAChG,gBAAM,iBAAiB,OAAO,QAAQ,KAAK,MAAM;AACjD,gBAAM,4BAA4B,MAAA;AAAK,kBAAM,IAAI,MAAM,oBAAoB;UAAE;AAC7E,gBAAM,yBAAyB,MAAA;AAAK,kBAAM,IAAI,MAAM,oBAAoB;UAAE;AACzE,iBAAe,QAAQ;AACxB,iBAAO,OAAO,OAAO,WAAW,OAAO,qBAAqB,OAAO,UAAU;AAC7E,iBAAO,OAAO,KAAK,MAAM;AACzB,iBAAO,OAAO,WAAA;AAGZ,gBAAI,SAAS;AACb,mBAAO,KAAK,MAAM,MAAM,WAAW,KAAK,SAAQ,IAAK,KAAK,KAAI,CAAE,EAAE,KAAK,MAAM,IAAI;;AAEnF,iBAAO,QAAQ,CAAC,aAAQ;AAEtB,kBAAM,mBAAmB,IAAI,QAAc,CAAC,kBAAkB,oBAAe;AAC3E,iCAAmB,KAAK,gBAAgB;AACxC,kBAAI,UAAU,mBAAmB,eAAe;AAChD,qBAAO,OAAO;AACd,qBAAO,OAAO,WAAK;AAEjB,uBAAO,OAAO,OAAO,WAAW,OAAO,qBAAqB,OAAO,UAAU;AAC7E,iCAAiB,KAAK;;aAEzB;AAED,kBAAM,kBAAkB,MAAA;AACtB,kBAAI,IAAI,QAAQ;AAEd,oBAAI;AACF,2BAAQ;yBACD,KAAK;AACZ,yBAAO,KAAK,GAAG;;qBAEZ;AACJ,uBAAe,OAAO;AACvB,uBAAO,QAAQ,MAAA;AAAK,wBAAM,IAAI,MAAM,0BAA0B;gBAAE;AAChE,uBAAO,KAAI;;;AAGf,gBAAI,YAAY,KAAK,CAAAC,QAAE;AAIrB,kBAAI,YAAY;AAChB,8BAAe;aAChB;AACD,mBAAO,WAAW;AAClB,mBAAO,qBAAqB;AAC5B,mBAAO,UAAU;AACjB,4BAAe;AACf,mBAAO;;AAET,kBAAQ,MAAM;WACb,MAAM;OACV;;AAGH,aAAS,MAAOC,YAAkB;AAChC,aAAO,CAAC,YAA2B;AACjC,eAAO,IAAI,QAA6B,CAAC,SAAS,WAAM;AACtD,oBAAU,KAAK,OAAO;AACtB,gBAAM,EAAC,OAAO,QAAQ,OAAO,OAAAF,OAAK,IAAI;AACtC,gBAAM,kBAAkB,UAAU,WAAW,SAAY;AACzD,gBAAM,EAAC,OAAO,MAAK,IAAIA;AACvB,gBAAM,QAAS,MAAyB,YAAY,SAAS;AAC7D,gBAAM,SAAS,MAAM,eAAe,QAAQ,MAAM,MAAM,MAAM,IAAI;AAClE,gBAAM,cAAc,gBAAgB,KAAK;AACzC,cAAI,UAAU;AAAG,mBAAO,QAAQ,EAAC,QAAQ,CAAA,EAAE,CAAC;AAC5C,cAAIE,YAAW;AACb,kBAAM,MAAM,SACP,OAAe,OAAO,aAAa,eAAe,IAClD,OAAe,WAAW,aAAa,eAAe;AAC3D,gBAAI,YAAY,WAAS,QAAQ,EAAC,QAAQ,MAAM,OAAO,OAAM,CAAC;AAC9D,gBAAI,UAAU,mBAAmB,MAAM;iBAClC;AACL,gBAAI,QAAQ;AACZ,kBAAM,MAAM,UAAU,EAAE,mBAAmB,UACzC,OAAO,WAAW,WAAW,IAC7B,OAAO,cAAc,WAAW;AAClC,kBAAM,SAAS,CAAA;AACf,gBAAI,YAAY,WAAK;AACnB,oBAAM,SAAS,IAAI;AACnB,kBAAI,CAAC;AAAQ,uBAAO,QAAQ,EAAC,OAAM,CAAC;AACpC,qBAAO,KAAK,SAAS,OAAO,QAAQ,OAAO,UAAU;AACrD,kBAAI,EAAE,UAAU;AAAO,uBAAO,QAAQ,EAAC,OAAM,CAAC;AAC9C,qBAAO,SAAQ;;AAEjB,gBAAI,UAAU,mBAAmB,MAAM;;SAE1C;;;AAIL,WAAO;MACL,MAAM;MACN,QAAQ;MAER;MAEA,QAAS,EAAC,OAAO,MAAAxB,MAAI,GAAC;AACpB,eAAO,IAAI,QAAe,CAAC,SAAS,WAAM;AACxC,oBAAU,KAAK,OAAO;AACtB,gBAAM,QAAS,MAAyB,YAAY,SAAS;AAC7D,gBAAM,SAASA,MAAK;AACpB,gBAAM,SAAS,IAAI,MAAM,MAAM;AAC/B,cAAI,WAAW;AACf,cAAI,gBAAgB;AAEpB,cAAI;AAEJ,gBAAM,iBAAiB,WAAK;AAC1B,kBAAMoB,OAAM,MAAM;AAClB,iBAAK,OAAOA,KAAI,IAAI,IAAIA,KAAI,WAAW;AAAM;AAC7C,gBAAI,EAAE,kBAAkB;AAAU,sBAAQ,MAAM;;AAElD,gBAAM,eAAe,mBAAmB,MAAM;AAE9C,mBAAS,IAAE,GAAG,IAAE,QAAQ,EAAE,GAAG;AAC3B,kBAAM,MAAMpB,MAAK,CAAC;AAClB,gBAAI,OAAO,MAAM;AACf,oBAAM,MAAM,IAAIA,MAAK,CAAC,CAAC;AACvB,kBAAI,OAAO;AACX,kBAAI,YAAY;AAChB,kBAAI,UAAU;AACd,gBAAE;;;AAGN,cAAI,aAAa;AAAG,oBAAQ,MAAM;SACnC;;MAGH,IAAK,EAAC,OAAO,IAAG,GAAC;AACf,eAAO,IAAI,QAAa,CAAC,SAAS,WAAM;AACtC,oBAAU,KAAM,OAAO;AACvB,gBAAM,QAAS,MAAyB,YAAY,SAAS;AAC7D,gBAAM,MAAM,MAAM,IAAI,GAAG;AACzB,cAAI,YAAY,WAAS,QAAS,MAAM,OAAe,MAAM;AAC7D,cAAI,UAAU,mBAAmB,MAAM;SACxC;;MAGH,OAAO,MAAM,SAAS;MAEtB,YAAAqB;MAEA,MAAO,EAAC,OAAAC,QAAO,MAAK,GAAC;AACnB,cAAM,EAAC,OAAO,MAAK,IAAIA;AACvB,eAAO,IAAI,QAAgB,CAAC,SAAS,WAAM;AACzC,gBAAM,QAAS,MAAyB,YAAY,SAAS;AAC7D,gBAAM,SAAS,MAAM,eAAe,QAAQ,MAAM,MAAM,MAAM,IAAI;AAClE,gBAAM,cAAc,gBAAgB,KAAK;AACzC,gBAAM,MAAM,cAAc,OAAO,MAAM,WAAW,IAAI,OAAO,MAAK;AAClE,cAAI,YAAY,KAAK,QAAM,QAAS,GAAG,OAAsB,MAAM,CAAC;AACpE,cAAI,UAAU,mBAAmB,MAAM;SACxC;;;;AAKP,QAAM,EAAC,QAAQ,UAAS,IAAI,cAAc,IAAI,QAAQ;AACtD,QAAM,SAAS,OAAO,OAAO,IAAI,iBAAe,kBAAkB,WAAW,CAAC;AAC9E,QAAM,WAA0C,CAAA;AAChD,SAAO,QAAQ,WAAS,SAAS,MAAM,IAAI,IAAI,KAAK;AACpD,SAAO;IACL,OAAO;IAEP,aAAa,GAAG,YAAY,KAAK,EAAE;IAEnC,MAAM,MAAY;AAChB,YAAM,SAAS,SAAS,IAAI;AAC5B,UAAI,CAAC;AAAQ,cAAM,IAAI,MAAM,UAAU,IAAI,aAAa;AACxD,aAAO,SAAS,IAAI;;IAGtB,SAAS;IAET,SAAS,UAAU,WAAW;IAE9B;;AAGJ;ACnZA,SAAS,sBACP,WACA,aAA0C;AAC1C,SAAO,YAAY,OAAO,CAAC,MAAM,EAAC,OAAM,OAAO,EAAC,GAAG,MAAM,GAAG,OAAO,IAAI,EAAC,IAAI,SAAS;AACvF;AAEA,SAAS,uBACP,aACA,OACA,EAAC,aAAa,WAAAV,WAAS,GACvB,UAAwB;AAExB,QAAM,SAAS,sBACb,aAAa,OAAO,aAAa,QAAQ,GACzC,YAAY,MAAM;AAKpB,SAAO;IACL;;AAEJ;SAEgB,yBAAyB,EAAC,QAAQ,GAAE,GAAU,UAAwB;AACpF,QAAM,QAAQ,SAAS;AACvB,QAAM,SAAS,uBAAuB,GAAG,cAAc,OAAO,GAAG,OAAO,QAAQ;AAChF,KAAG,OAAO,OAAO;AACjB,KAAG,OAAO,QAAQ,WAAK;AACrB,UAAM,YAAY,MAAM;AACxB,QAAI,GAAG,KAAK,OAAO,OAAO,KAAK,SAAO,IAAI,SAAS,SAAS,GAAG;AAC7D,YAAM,OAAO,GAAG,KAAK,MAAM,SAAS;AACpC,UAAI,GAAG,SAAS,aAAa,GAAG,OAAO;AACnC,WAAG,SAAS,EAAE,OAAO,MAAM;;;GAGlC;AACH;SC5BgB,cAAc,EAAC,QAAQ,GAAE,GAAU,MAAgB,YAAsB,UAAkB;AACzG,aAAW,QAAQ,eAAS;AAC1B,UAAM,SAAS,SAAS,SAAS;AACjC,SAAK,QAAQ,SAAG;AACd,YAAM,WAAW,sBAAsB,KAAK,SAAS;AACrD,UAAI,CAAC,YAAa,WAAW,YAAY,SAAS,UAAU,QAAY;AAEtE,YAAI,QAAQ,GAAG,YAAY,aAAa,eAAe,GAAG,aAAa;AAGrE,kBAAQ,KAAK,WAAW;YACtB,MAAG;AAAsB,qBAAO,KAAK,MAAM,SAAS;YAAE;YACtD,IAAI,OAAU;AAGZ,6BAAe,MAAM,WAAW,EAAC,OAAO,UAAU,MAAM,cAAc,MAAM,YAAY,KAAI,CAAC;;WAEhG;eACI;AAEL,cAAI,SAAS,IAAI,IAAI,GAAG,MAAM,WAAW,MAAM;;;KAGpD;GACF;AACH;SAEgB,gBAAgB,EAAC,QAAQ,GAAE,GAAU,MAAc;AACjE,OAAK,QAAQ,SAAG;AACd,aAAS,OAAO,KAAK;AACnB,UAAI,IAAI,GAAG,aAAa,GAAG;AAAO,eAAO,IAAI,GAAG;;GAEnD;AACH;SAEgB,kBAAkB,GAAY,GAAU;AACtD,SAAO,EAAE,KAAK,UAAU,EAAE,KAAK;AACjC;SAEgB,aAAa,IAAW,YAAoB,iBAAiC,QAAM;AACjG,QAAM,eAAe,GAAG;AACxB,QAAM,QAAQ,GAAG,mBAAmB,aAAa,GAAG,aAAa,YAAY;AAC7E,QAAM,OAAO,eAAe;AAC5B,QAAM,YAAY,MAAM,MAAM;AAC9B,QAAM,oBAAoB,MAAM,QAAQ,KAAK,KAAK;AAClD,QAAM,YAAY,IAAI,aAAa;AACnC,WAAS,MAAA;AACP,QAAI,QAAQ;AACZ,QAAI,YAAY;AAChB,QAAI,eAAe,GAAG;AAEpB,WAAK,YAAY,EAAE,QAAQ,eAAS;AAClC,oBAAY,iBAAiB,WAAW,aAAa,SAAS,EAAE,SAAS,aAAa,SAAS,EAAE,OAAO;OACzG;AACD,+BAAyB,IAAI,eAAe;AAC5Cb,mBAAQ,OAAO,MAAM,GAAG,GAAG,SAAS,KAAK,KAAK,CAAC,EAAE,MAAM,iBAAiB;;AAExE,6BAAuB,IAAI,YAAY,OAAO,eAAe,EAAE,MAAM,iBAAiB;GACzF;AACH;SAIgB,uBACd,EAAC,QAAQ,GAAE,GACX,YACA,OACA,iBAA+B;AAI/B,QAAM,QAA4B,CAAA;AAClC,QAAM,WAAW,GAAG;AACpB,MAAI,eAAe,GAAG,YAAY,kBAAkB,IAAI,GAAG,OAAO,eAAe;AACjF,MAAI,2BAA2B;AAE/B,QAAM,YAAY,SAAS,OAAO,OAAK,EAAE,KAAK,WAAW,UAAU;AACnE,YAAU,QAAQ,aAAO;AACvB,UAAM,KAAK,MAAA;AACT,YAAM,YAAY;AAClB,YAAM,YAAY,QAAQ,KAAK;AAC/B,iCAA2B,IAAI,WAAW,eAAe;AACzD,iCAA2B,IAAI,WAAW,eAAe;AAEzD,qBAAe,GAAG,YAAY;AAE9B,YAAM,OAAO,cAAc,WAAW,SAAS;AAE/C,WAAK,IAAI,QAAQ,WAAK;AACpB,oBAAY,iBAAiB,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,SAAS,MAAM,CAAC,EAAE,OAAO;OAC1E;AAED,WAAK,OAAO,QAAQ,YAAM;AACxB,YAAI,OAAO,UAAU;AACnB,gBAAM,IAAI,WAAW,QAAQ,0CAA0C;eAClE;AACL,gBAAM,QAAQ,gBAAgB,YAAY,OAAO,IAAI;AAErD,iBAAO,IAAI,QAAQ,SAAO,SAAS,OAAO,GAAG,CAAC;AAE9C,iBAAO,OAAO,QAAQ,SAAG;AACvB,kBAAM,YAAY,IAAI,IAAI;AAC1B,qBAAS,OAAO,GAAG;WACpB;AAED,iBAAO,IAAI,QAAQ,aAAW,MAAM,YAAY,OAAO,CAAC;;OAE3D;AAED,YAAM,iBAAiB,QAAQ,KAAK;AAEpC,UAAI,kBAAkB,QAAQ,KAAK,UAAU,YAAY;AAEvD,iCAAyB,IAAI,eAAe;AAC5C,cAAM,kBAAkB,CAAA;AAExB,mCAA2B;AAG3B,YAAI,gBAAgB,aAAa,SAAS;AAC1C,aAAK,IAAI,QAAQ,WAAK;AACpB,wBAAc,KAAK,IAAI,UAAU,KAAK;SACvC;AAMD,wBAAgB,IAAI,CAAC,GAAG,YAAY,SAAS,CAAC;AAC9C,sBAAc,IAAI,CAAC,GAAG,YAAY,SAAS,GAAG,KAAK,aAAa,GAAG,aAAa;AAChF,cAAM,SAAS;AAGf,cAAM,wBAAwB,gBAAgB,cAAc;AAC5D,YAAI,uBAAuB;AACzB,kCAAuB;;AAGzB,YAAI;AACJ,cAAM,kBAAkBA,aAAQ,OAAO,MAAA;AAErC,wBAAc,eAAe,KAAK;AAClC,cAAI,aAAa;AACf,gBAAI,uBAAuB;AAEzB,kBAAI,cAAc,wBAAwB,KAAK,MAAM,IAAI;AACzD,0BAAY,KAAK,aAAa,WAAW;;;SAG9C;AACD,eAAQ,eAAe,OAAO,YAAY,SAAS,aACjDA,aAAQ,QAAQ,WAAW,IAAI,gBAAgB,KAAK,MAAI,WAAW;;KAExE;AACD,UAAM,KAAK,cAAQ;AACjB,UAAI,CAAC,4BAA4B,CAAC,2BAA2B;AAC3D,cAAM,YAAY,QAAQ,KAAK;AAE/B,4BAAoB,WAAW,QAAQ;;AAGzC,sBAAgB,IAAI,CAAC,GAAG,YAAY,SAAS,CAAC;AAC9C,oBAAc,IAAI,CAAC,GAAG,YAAY,SAAS,GAAG,GAAG,aAAa,GAAG,SAAS;AAC1E,YAAM,SAAS,GAAG;KACnB;GACF;AAGD,WAAS,WAAQ;AACf,WAAO,MAAM,SAASA,aAAQ,QAAQ,MAAM,MAAK,EAAG,MAAM,QAAQ,CAAC,EAAE,KAAK,QAAQ,IAChFA,aAAQ,QAAO;;AAGnB,SAAO,SAAQ,EAAG,KAAK,MAAA;AACrB,wBAAoB,cAAc,eAAe;GAClD;AACH;SAgBgB,cAAc,WAAqB,WAAmB;AACpE,QAAM,OAAmB;IACvB,KAAK,CAAA;IACL,KAAK,CAAA;IACL,QAAQ,CAAA;;AAEV,MAAI;AACJ,OAAK,SAAS,WAAW;AACvB,QAAI,CAAC,UAAU,KAAK;AAAG,WAAK,IAAI,KAAK,KAAK;;AAE5C,OAAK,SAAS,WAAW;AACvB,UAAM,SAAS,UAAU,KAAK,GAC5B,SAAS,UAAU,KAAK;AAC1B,QAAI,CAAC,QAAQ;AACX,WAAK,IAAI,KAAK,CAAC,OAAO,MAAM,CAAC;WACxB;AACL,YAAM,SAAS;QACb,MAAM;QACN,KAAK;QACL,UAAU;QACV,KAAK,CAAA;QACL,KAAK,CAAA;QACL,QAAQ,CAAA;;AAEV,UAIM,MAAI,OAAO,QAAQ,WAAS,QAE5B,MAAI,OAAO,QAAQ,WAAS,OAG7B,OAAO,QAAQ,SAAS,OAAO,QAAQ,QAAQ,CAAC,YACrD;AAEE,eAAO,WAAW;AAClB,aAAK,OAAO,KAAK,MAAM;aAClB;AAEL,cAAM,aAAa,OAAO;AAC1B,cAAM,aAAa,OAAO;AAC1B,YAAI;AACJ,aAAK,WAAW,YAAY;AAC1B,cAAI,CAAC,WAAW,OAAO;AAAG,mBAAO,IAAI,KAAK,OAAO;;AAEnD,aAAK,WAAW,YAAY;AAC1B,gBAAM,SAAS,WAAW,OAAO,GAC/B,SAAS,WAAW,OAAO;AAC7B,cAAI,CAAC;AAAQ,mBAAO,IAAI,KAAK,MAAM;mBAC1B,OAAO,QAAQ,OAAO;AAAK,mBAAO,OAAO,KAAK,MAAM;;AAE/D,YAAI,OAAO,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,OAAO,OAAO,SAAS,GAAG;AAC9E,eAAK,OAAO,KAAK,MAAM;;;;;AAK/B,SAAO;AACT;SAEgB,YACd,UACA,WACA,SACA,SAAoB;AAEpB,QAAM,QAAQ,SAAS,GAAG,kBACxB,WACA,QAAQ,UACN,EAAE,SAAS,QAAQ,SAAS,eAAe,QAAQ,KAAI,IACvD,EAAE,eAAe,QAAQ,KAAI,CAAE;AAEnC,UAAQ,QAAQ,SAAO,SAAS,OAAO,GAAG,CAAC;AAC3C,SAAO;AACT;SAEgB,oBAAoB,WAAqB,UAAwB;AAC/E,OAAK,SAAS,EAAE,QAAQ,eAAS;AAC/B,QAAI,CAAC,SAAS,GAAG,iBAAiB,SAAS,SAAS,GAAG;AACrD,kBAAY,UAAU,WAAW,UAAU,SAAS,EAAE,SAAS,UAAU,SAAS,EAAE,OAAO;;GAE9F;AACH;SAEgB,oBAAoB,WAAqB,UAAwB;AAC/E,GAAA,EAAG,MAAM,KAAK,SAAS,GAAG,gBAAgB,EAAE,QAAQ,eAClD,UAAU,SAAS,KAAK,QAAQ,SAAS,GAAG,kBAAkB,SAAS,CAAC;AAC5E;SAEgB,SAAS,OAAuB,KAAc;AAC5D,QAAM,YAAY,IAAI,MAAM,IAAI,SAAS,EAAE,QAAQ,IAAI,QAAQ,YAAY,IAAI,MAAK,CAAE;AACxF;AAEA,SAAS,kBACP,IACA,OACA,UAAwB;AAExB,QAAM,eAAe,CAAA;AACrB,QAAM,eAAe,MAAM,MAAM,kBAAkB,CAAC;AACpD,eAAa,QAAQ,eAAS;AAC5B,UAAM,QAAQ,SAAS,YAAY,SAAS;AAC5C,QAAI,UAAU,MAAM;AACpB,UAAM,UAAU,gBACd,gBAAgB,OAAO,GACvB,WAAW,IACX,OACA,OACA,CAAC,CAAC,MAAM,eACR,WAAW,OAAO,YAAY,UAC9B,IAAI;AAEN,UAAM,UAAuB,CAAA;AAC7B,aAAS,IAAI,GAAG,IAAI,MAAM,WAAW,QAAQ,EAAE,GAAG;AAChD,YAAM,WAAW,MAAM,MAAM,MAAM,WAAW,CAAC,CAAC;AAChD,gBAAU,SAAS;AACnB,UAAI,QAAQ,gBACV,SAAS,MACT,SACA,CAAC,CAAC,SAAS,QACX,CAAC,CAAC,SAAS,YACX,OACA,WAAW,OAAO,YAAY,UAC9B,KAAK;AAEP,cAAQ,KAAK,KAAK;;AAEpB,iBAAa,SAAS,IAAI,kBAAkB,WAAW,SAAS,OAAO;GACxE;AACD,SAAO;AACT;SAEgB,iBAAiB,EAAC,QAAQ,GAAE,GAAU,OAAoB,UAAwB;AAChG,KAAG,QAAQ,MAAM,UAAU;AAC3B,QAAM,eAAe,GAAG,YAAY,kBAAkB,IAAI,OAAO,QAAQ;AACzE,KAAG,cAAc,MAAM,MAAM,kBAAkB,CAAC;AAChD,gBAAc,IAAI,CAAC,GAAG,UAAU,GAAG,KAAK,YAAY,GAAG,YAAY;AACrE;SAEgB,sBAAsB,IAAW,UAAwB;AACvE,QAAM,kBAAkB,kBAAkB,IAAI,GAAG,OAAO,QAAQ;AAChE,QAAM,OAAO,cAAc,iBAAiB,GAAG,SAAS;AACxD,SAAO,EAAE,KAAK,IAAI,UAAU,KAAK,OAAO,KAAK,QAAM,GAAG,IAAI,UAAU,GAAG,OAAO,MAAM;AACtF;SAEgB,2BAA2B,EAAC,QAAQ,GAAE,GAAU,QAAkB,UAAwB;AAExG,QAAM,aAAa,SAAS,GAAG;AAE/B,WAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,EAAE,GAAG;AAC1C,UAAM,YAAY,WAAW,CAAC;AAC9B,UAAM,QAAQ,SAAS,YAAY,SAAS;AAC5C,OAAG,aAAa,YAAY;AAE5B,aAAS,IAAI,GAAG,IAAI,MAAM,WAAW,QAAQ,EAAE,GAAG;AAChD,YAAM,YAAY,MAAM,WAAW,CAAC;AACpC,YAAM,UAAU,MAAM,MAAM,SAAS,EAAE;AACvC,YAAM,YAAY,OAAO,YAAY,WAAW,UAAU,MAAM,MAAM,OAAO,EAAE,KAAK,GAAG,IAAI;AAC3F,UAAI,OAAO,SAAS,GAAG;AACrB,cAAM,YAAY,OAAO,SAAS,EAAE,UAAU,SAAS;AACvD,YAAI,WAAW;AACb,oBAAU,OAAO;AACjB,iBAAO,OAAO,SAAS,EAAE,UAAU,SAAS;AAC5C,iBAAO,SAAS,EAAE,UAAU,SAAS,IAAI;;;;;AAOjD,MAAI,OAAO,cAAc,eAAe,SAAS,KAAK,UAAU,SAAS,KACvE,CAAC,oBAAoB,KAAK,UAAU,SAAS,KAC7C,QAAQ,qBAAqB,mBAAmB,QAAQ,qBACxD,CAAA,EAAG,OAAO,UAAU,UAAU,MAAM,eAAe,CAAC,EAAE,CAAC,IAAI,KAC7D;AACE,OAAG,aAAa;;AAEpB;SAEgB,iBAAiB,mBAAyB;AACxD,SAAO,kBAAkB,MAAM,GAAG,EAAE,IAAI,CAAC,OAAO,aAAQ;AACtD,YAAQ,MAAM,KAAI;AAClB,UAAM,OAAO,MAAM,QAAQ,gBAAgB,EAAE;AAE7C,UAAM,UAAU,MAAM,KAAK,IAAI,IAAI,KAAK,MAAM,YAAY,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;AAE5E,WAAO,gBACL,MACA,WAAW,MACX,KAAK,KAAK,KAAK,GACf,KAAK,KAAK,KAAK,GACf,OAAO,KAAK,KAAK,GACjB,QAAQ,OAAO,GACf,aAAa,CAAC;GAEjB;AACH;ICvYa,gBAAO;EAUlB,iBAAiB,QAAgD,WAAmB;AAClF,SAAK,MAAM,EAAE,QAAQ,eAAS;AAC5B,UAAI,OAAO,SAAS,MAAM,MAAM;AAC5B,YAAI,UAAU,iBAAiB,OAAO,SAAS,CAAC;AAChD,YAAI,UAAU,QAAQ,MAAK;AAC3B,YAAI,QAAQ;AAAO,gBAAM,IAAI,WAAW,OAAO,oCAAoC;AACnF,gBAAQ,QAAQ,SAAG;AACf,cAAI,IAAI;AAAM,kBAAM,IAAI,WAAW,OAAO,sDAAsD;AAChG,cAAI,CAAC,IAAI;AAAS,kBAAM,IAAI,WAAW,OAAO,sDAAsD;SACvG;AACD,kBAAU,SAAS,IAAI,kBAAkB,WAAW,SAAS,OAAO;;KAEzE;;EAGH,OAAO,QAAyC;AAC9C,UAAM,KAAK,KAAK;AAChB,SAAK,KAAK,eAAe,KAAK,KAAK,eACjC,OAAO,KAAK,KAAK,cAAc,MAAM,IACrC;AACF,UAAM,WAAW,GAAG;AAGpB,UAAM,aAAyC,CAAA;AAC/C,QAAI,WAAW,CAAA;AACf,aAAS,QAAQ,aAAO;AACtB,aAAO,YAAY,QAAQ,KAAK,YAAY;AAC5C,iBAAY,QAAQ,KAAK,WAAW,CAAA;AACpC,cAAQ,iBAAiB,YAAY,QAAQ;KAC9C;AAED,OAAG,YAAY;AAEf,oBAAgB,IAAI,CAAC,GAAG,YAAY,IAAI,GAAG,YAAY,SAAS,CAAC;AACjE,kBAAc,IAAI,CAAC,GAAG,YAAY,IAAI,GAAG,YAAY,WAAW,KAAK,KAAK,MAAM,GAAG,KAAK,QAAQ,GAAG,QAAQ;AAC3G,OAAG,cAAc,KAAK,QAAQ;AAC9B,WAAO;;EAGT,QAAQ,iBAAgE;AACtE,SAAK,KAAK,iBAAiB,gBAAgB,KAAK,KAAK,kBAAkB,KAAK,eAAe;AAC3F,WAAO;;;SClDK,yBAAyB,IAAS;AAChD,SAAO,qBACL,QAAQ,WAER,SAAS0B,SAAuB,eAAqB;AACnD,SAAK,KAAK;AACV,SAAK,OAAO;MACV,SAAS;MACT,cAAc;MACd,UAAU,CAAA;MACV,QAAQ,CAAA;MACR,gBAAgB;;GAEnB;AAEL;ACtBA,SAAS,gBAAgBb,YAAuB,aAA2B;AACzE,MAAI,YAAYA,WAAU,YAAY;AACtC,MAAI,CAAC,WAAW;AACd,gBAAYA,WAAU,YAAY,IAAI,IAAIc,QAAM,YAAY;MAC1D,QAAQ,CAAA;MACR,WAAAd;MACA;KACD;AACD,cAAU,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,OAAM,CAAE;;AAEjD,SAAO,UAAU,MAAM,SAAS;AAClC;AAEA,SAAS,mBAAmBA,YAAqB;AAC/C,SAAOA,cAAa,OAAOA,WAAU,cAAc;AACrD;SAEgB,iBAAiB,EAC/B,WAAAA,YACA,YAAW,GACU;AACrB,SAAO,mBAAmBA,UAAS,IAC/B,QAAQ,QAAQA,WAAU,UAAS,CAAE,EAAE,KAAK,CAAC,UAC3C,MAEG,IAAI,CAAC,SAAS,KAAK,IAAI,EAEvB,OAAO,CAAC,SAAS,SAAS,UAAU,CAAC,IAE1C,gBAAgBA,YAAW,WAAW,EAAE,aAAY,EAAG,YAAW;AACxE;SAEgB,mBACd,EAAE,WAAAA,YAAW,YAAW,GACxB,MAAY;AAEZ,GAAC,mBAAmBA,UAAS,KAC3B,SAAS,cACT,gBAAgBA,YAAW,WAAW,EAAE,IAAI,EAAC,KAAI,CAAC,EAAE,MAAM,GAAG;AACjE;SAEgB,mBACd,EAAE,WAAAA,YAAW,YAAW,GACxB,MAAY;AAEZ,GAAC,mBAAmBA,UAAS,KAC3B,SAAS,cACT,gBAAgBA,YAAW,WAAW,EAAE,OAAO,IAAI,EAAE,MAAM,GAAG;AAClE;SCrDgB,IAAK,IAAE;AASrB,SAAO,SAAS,WAAA;AACd,QAAI,aAAa;AACjB,WAAO,GAAE;GACV;AACH;ACVA,SAAS,WAAW;AAChB,MAAI,WAAW,CAAC,UAAU,iBACtB,WAAW,KAAK,UAAU,SAAS,KACnC,CAAC,iBAAiB,KAAK,UAAU,SAAS;AAE9C,MAAI,CAAC,YAAY,CAAC,UAAU;AACxB,WAAO,QAAQ,QAAO;AAC1B,MAAI;AACJ,SAAO,IAAI,QAAQ,SAAU,SAAS;AAClC,QAAI,SAAS,WAAY;AAAE,aAAO,UAAU,UAAS,EAAG,QAAQ,OAAO;IAAE;AACzE,iBAAa,YAAY,QAAQ,GAAG;AACpC,WAAM;EACd,CAAK,EAAE,QAAQ,WAAY;AAAE,WAAO,cAAc,UAAU;EAAE,CAAE;AAChE;SCHgB,UAAW,IAAS;AAClC,QAAM,QAAQ,GAAG;AACjB,QAAM,EAAC,WAAAA,WAAS,IAAI,GAAG;AACvB,MAAI,MAAM,iBAAiB,GAAG;AAC1B,WAAO,MAAM,eAAe,KAAY,MAAM,MAAM,cAClD,UAAW,MAAM,WAAW,IAC5B,EAAE;AACRe,YAAgB,MAAM,cAAc,eAAeC,kBAAuB;AAC1E,QAAM,gBAAgB;AACtB,QAAM,cAAc;AACpB,QAAM,eAAe;AACrB,QAAM,gBAAgB,MAAM;AAE5B,WAAS,mBAAgB;AAGvB,QAAI,MAAM,kBAAkB;AAAe,YAAM,IAAI,WAAW,eAAe,yBAAyB;;AAI1G,MAAI,iBAAiB,MAAM,gBAEvB,qBAA8C,MAC9C,aAAa;AAEjB,QAAM,YAAY,MAAM,IAAI7B,aAAQ,CAAC,SAAS,WAAM;AAMlD,qBAAgB;AAEhB,QAAI,CAACa;AAAW,YAAM,IAAI,WAAW,WAAU;AAC/C,UAAM,SAAS,GAAG;AAElB,UAAM,MAAM,MAAM,aAChBA,WAAU,KAAK,MAAM,IACrBA,WAAU,KAAK,QAAQ,KAAK,MAAM,GAAG,QAAQ,EAAE,CAAC;AAClD,QAAI,CAAC;AAAK,YAAM,IAAI,WAAW,WAAU;AACzC,QAAI,UAAU,mBAAmB,MAAM;AACvC,QAAI,YAAY,KAAK,GAAG,cAAc;AACtC,QAAI,kBAAkB,KAAM,OAAC;AACzB,2BAAqB,IAAI;AACzB,UAAI,MAAM,cAAc,CAAC,GAAG,SAAS,cAAc;AAI/C,YAAI,UAAU;AACd,2BAAmB,MAAK;AAExB,YAAI,OAAO,MAAK;AAChB,cAAM,SAASA,WAAU,eAAe,MAAM;AAC9C,eAAO,YAAY,OAAO,UAAU,KAAK,MAAA;AACrC,iBAAQ,IAAI,WAAW,eAAe,YAAY,MAAM,eAAe,CAAC;SAC3E;aACE;AACH,2BAAmB,UAAU,mBAAmB,MAAM;AACtD,YAAI,SAAS,EAAE,aAAa,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE;AACpD,qBAAa,SAAS;AACtB,WAAG,OAAO,QAAQ,IAAI;AACtB,qBAAa,IAAI,SAAS,IAAI,oBAAoB,MAAM;;OAE7D,MAAM;AAET,QAAI,YAAY,KAAM,MAAA;AAElB,2BAAqB;AACrB,YAAM,QAAQ,GAAG,OAAO,QAAQ,IAAI;AAEpC,YAAM,mBAAmB,MAAM,MAAM,gBAAgB;AACrD,UAAI,iBAAiB,SAAS;AAAG,YAAI;AACnC,gBAAM,WAAW,MAAM,YAAY,oBAAoB,gBAAgB,GAAG,UAAU;AACpF,cAAI,MAAM;AAAY,6BAAiB,IAAI,OAAO,QAAQ;eACrD;AACD,uCAA2B,IAAI,GAAG,WAAW,QAAQ;AACrD,gBAAI,CAAC,sBAAsB,IAAI,QAAQ,GAAG;AACtC,sBAAQ,KAAK,oHAAoH;;;AAGzI,mCAAyB,IAAI,QAAQ;iBAC9B,GAAG;;AASZ,kBAAY,KAAK,EAAE;AAEnB,YAAM,kBAAkB,KAAK,QAAE;AAC3B,cAAM,UAAU;AAChB,WAAG,GAAG,eAAe,EAAE,KAAK,EAAE;OACjC;AAED,YAAM,UAAU,KAAK,QAAE;AACnB,WAAG,GAAG,OAAO,EAAE,KAAK,EAAE;OACzB;AAED,UAAI;AAAY,2BAAmB,GAAG,OAAO,MAAM;AAEnD,cAAO;OAER,MAAM;GACV,EAAE,MAAM,SAAG;AACV,QAAI,OAAO,IAAI,SAAS,kBAAkB,MAAM,iBAAiB,GAAG;AAGlE,YAAM;AACN,cAAQ,KAAK,qDAAqD;AAClE,aAAO,UAAS;WACX;AACL,aAAOb,aAAQ,OAAO,GAAG;;GAE5B;AAGD,SAAOA,aAAQ,KAAK;IAClB;KACC,OAAO,cAAc,cAAcA,aAAQ,QAAO,IAAK8B,SAAkB,GAAI,KAAK,SAAS;GAC7F,EAAE,KAAK,MAAA;AAKJ,qBAAgB;AAChB,UAAM,oBAAoB,CAAA;AAC1B,WAAO9B,aAAQ,QAAQ,IAAI,MAAI,GAAG,GAAG,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,EAAE,KAAK,SAAS,iBAAc;AAClF,UAAI,MAAM,kBAAkB,SAAS,GAAG;AAEpC,YAAI,aAAa,MAAM,kBAAkB,OAAO,iBAAiB,GAAG;AACpE,cAAM,oBAAoB,CAAA;AAC1B,eAAOA,aAAQ,QAAQ,IAAI,MAAI,WAAW,GAAG,GAAG,CAAC,CAAC,EAAE,KAAK,cAAc;;KAE9E;GACJ,EAAE,QAAQ,MAAA;AACP,UAAM,oBAAoB;AAC1B,UAAM,gBAAgB;GACzB,EAAE,KAAK,MAAA;AAEJ,WAAO;GACV,EAAE,MAAM,SAAG;AACR,UAAM,cAAc;AACpB,QAAI;AAEF,4BAAsB,mBAAmB,MAAK;aAC9C,IAAM;IAAA;AACR,QAAI,kBAAkB,MAAM,eAAe;AAGzC,SAAG,OAAM;;AAEX,WAAO,UAAW,GAAG;GACxB,EAAE,QAAQ,MAAA;AACP,UAAM,eAAe;AACrB,mBAAc;GACjB;AACH;SC7KgB,cAAe,UAAuB;AACpD,MAAI,WAAW,YAAU,SAAS,KAAK,MAAM,GACzC,UAAU,WAAS,SAAS,MAAM,KAAK,GACvC,YAAY,KAAK,QAAQ,GACzB,UAAU,KAAK,OAAO;AAE1B,WAAS,KAAK,SAAmB;AAC7B,WAAO,CAAC,QAAI;AACR,UAAI,OAAO,QAAQ,GAAG,GAClB,QAAQ,KAAK;AAEjB,aAAO,KAAK,OAAO,QACd,CAAC,SAAS,OAAO,MAAM,SAAS,aAC7B,QAAQ,KAAK,IAAI,QAAQ,IAAI,KAAK,EAAE,KAAK,WAAW,OAAO,IAAI,UAAU,KAAK,IAC9E,MAAM,KAAK,WAAW,OAAO;;;AAI7C,SAAO,KAAK,QAAQ,EAAC;AACvB;SCPgB,uBAAuB,MAAuB,aAAa,WAAS;AAElF,MAAI,IAAI,UAAU;AAClB,MAAI,IAAI;AAAG,UAAM,IAAI,WAAW,gBAAgB,mBAAmB;AAGnE,MAAI,OAAO,IAAI,MAAM,IAAI,CAAC;AAC1B,SAAO,EAAE;AAAG,SAAK,IAAI,CAAC,IAAI,UAAU,CAAC;AAErC,cAAY,KAAK,IAAG;AACpB,MAAI,SAAS,QAAQ,IAAI;AACzB,SAAO,CAAC,MAAM,QAAQ,SAAS;AACjC;SAEgB,sBACd,IACA,MACA,YACA,mBACA,WAAqC;AAErC,SAAOA,aAAQ,QAAO,EAAG,KAAK,MAAA;AAE5B,UAAM,YAAY,IAAI,aAAa;AAGnC,UAAM,QAAQ,GAAG,mBAAmB,MAAM,YAAY,GAAG,WAAW,iBAAiB;AAErF,UAAM,YAAY;MAChB;MACA;;AAGF,QAAI,mBAAmB;AAErB,YAAM,WAAW,kBAAkB;WAC9B;AACL,UAAI;AACF,cAAM,OAAM;AACZ,WAAG,OAAO,iBAAiB;eACpB,IAAI;AACX,YAAI,GAAG,SAAS,SAAS,gBAAgB,GAAG,OAAM,KAAM,EAAE,GAAG,OAAO,iBAAiB,GAAG;AACtF,kBAAQ,KAAK,0BAA0B;AACvC,aAAG,OAAM;AACT,iBAAO,GAAG,KAAI,EAAG,KAAK,MAAM,sBAC1B,IACA,MACA,YACA,MACA,SAAS,CACV;;AAEH,eAAO,UAAU,EAAE;;;AAKvB,UAAM,mBAAmB,gBAAgB,SAAS;AAClD,QAAI,kBAAkB;AACpB,8BAAuB;;AAGzB,QAAI;AACJ,UAAM,kBAAkBA,aAAQ,OAAO,MAAA;AAErC,oBAAc,UAAU,KAAK,OAAO,KAAK;AACzC,UAAI,aAAa;AACf,YAAI,kBAAkB;AAEpB,cAAI,cAAc,wBAAwB,KAAK,MAAM,IAAI;AACzD,sBAAY,KAAK,aAAa,WAAW;mBAChC,OAAO,YAAY,SAAS,cAAc,OAAO,YAAY,UAAU,YAAY;AAE5F,wBAAc,cAAc,WAAW;;;OAG1C,SAAS;AACZ,YAAQ,eAAe,OAAO,YAAY,SAAS,aAEjDA,aAAQ,QAAQ,WAAW,EAAE,KAAK,OAAK,MAAM,SAC3C,IACE,UAAU,IAAI,WAAW,gBACzB,4DAA4D,CAAC,CAAC,IAEhE,gBAAgB,KAAK,MAAM,WAAW,GACxC,KAAK,OAAC;AAEN,UAAI;AAAmB,cAAM,SAAQ;AAGrC,aAAO,MAAM,YAAY,KAAK,MAAM,CAAC;KACtC,EAAE,MAAM,OAAC;AACR,YAAM,QAAQ,CAAC;AACf,aAAO,UAAU,CAAC;KACnB;GACF;AACH;SC7EgB,IAAK,GAAgB,OAAY,OAAa;AAC5D,QAAM,SAAS,QAAQ,CAAC,IAAI,EAAE,MAAK,IAAK,CAAC,CAAC;AAC1C,WAAS,IAAE,GAAG,IAAE,OAAO,EAAE;AAAG,WAAO,KAAK,KAAK;AAC7C,SAAO;AACT;SAGgB,6BAA8B,MAAY;AACxD,SAAO;IACL,GAAG;IACH,MAAM,WAAiB;AACrB,YAAM,QAAQ,KAAK,MAAM,SAAS;AAClC,YAAM,EAAC,OAAM,IAAI;AACjB,YAAM,cAAsD,CAAA;AAC5D,YAAM,oBAAoC,CAAA;AAE1C,eAAS,kBAAmB,SAAmC,SAAiB,eAA0B;AACxG,cAAM,eAAe,gBAAgB,OAAO;AAC5C,cAAM,YAAa,YAAY,YAAY,IAAI,YAAY,YAAY,KAAK,CAAA;AAC5E,cAAM,YAAY,WAAW,OAAO,IAAG,OAAO,YAAY,WAAW,IAAI,QAAQ;AACjF,cAAM,YAAY,UAAU;AAC5B,cAAM,eAAe;UACnB,GAAG;UACH;UACA;UACA;UACA,YAAY,gBAAgB,OAAO;UACnC,QAAQ,CAAC,aAAa,cAAc;;AAEtC,kBAAU,KAAK,YAAY;AAC3B,YAAI,CAAC,aAAa,cAAc;AAC9B,4BAAkB,KAAK,YAAY;;AAErC,YAAI,YAAY,GAAG;AACjB,gBAAM,iBAAiB,cAAc,IACnC,QAAQ,CAAC,IACT,QAAQ,MAAM,GAAG,YAAY,CAAC;AAChC,4BAAkB,gBAAgB,UAAU,GAAG,aAAa;;AAE9D,kBAAU,KAAK,CAAC,GAAE,MAAM,EAAE,UAAU,EAAE,OAAO;AAC7C,eAAO;;AAGT,YAAM,aAAa,kBAAkB,OAAO,WAAW,SAAS,GAAG,OAAO,UAAU;AACpF,kBAAY,KAAK,IAAI,CAAC,UAAU;AAChC,iBAAW,SAAS,OAAO,SAAS;AAClC,0BAAkB,MAAM,SAAS,GAAG,KAAK;;AAG3C,eAAS,cAAc,SAAiC;AACtD,cAAMoB,UAAS,YAAY,gBAAgB,OAAO,CAAC;AACnD,eAAOA,WAAUA,QAAO,CAAC;;AAG3B,eAAS,eAAgB,OAAuB,SAAe;AAC7D,eAAO;UACL,MAAM,MAAM,SAAI,QAEd,MAAM;UACR,OAAO,IAAI,MAAM,OAAO,MAAM,YAAY,KAAK,UAAU,KAAK,SAAS,OAAO;UAC9E,WAAW;UACX,OAAO,IAAI,MAAM,OAAO,MAAM,YAAY,KAAK,UAAU,KAAK,SAAS,OAAO;UAC9E,WAAW;;;AAMf,eAAS,iBAAkB,KAAuB;AAChD,cAAM,QAAQ,IAAI,MAAM;AACxB,eAAO,MAAM,YAAY;UACvB,GAAG;UACH,OAAO;YACL;YACA,OAAO,eAAe,IAAI,MAAM,OAAO,MAAM,OAAO;;YAEpD;;AAGN,YAAM,SAAsB;QAC1B,GAAG;QACH,QAAQ;UACN,GAAG;UACH;UACA,SAAS;UACT,mBAAmB;;QAGrB,MAAM,KAAG;AACP,iBAAO,MAAM,MAAM,iBAAiB,GAAG,CAAC;;QAG1C,MAAM,KAAG;AACP,iBAAO,MAAM,MAAM,iBAAiB,GAAG,CAAC;;QAG1C,WAAW,KAAG;AACZ,gBAAM,EAAC,SAAS,WAAW,UAAS,IAAK,IAAI,MAAM;AACnD,cAAI,CAAC;AAAW,mBAAO,MAAM,WAAW,GAAG;AAE3C,mBAAS,oBAAoB,QAAoB;AAC/C,qBAAS,UAAW,KAAS;AAC3B,qBAAO,OACL,OAAO,SAAS,IAAI,KAAK,IAAI,UAAU,KAAK,UAAU,KAAK,SAAS,OAAO,CAAC,IAC5E,IAAI,SACF,OAAO,SACL,OAAO,IAAI,MAAM,GAAG,SAAS,EAC1B,OAAO,IAAI,UACR,KAAK,UACL,KAAK,SAAS,OAAO,CAAC,IAE9B,OAAO,SAAQ;;AAErB,kBAAM,gBAAgB,OAAO,OAAO,QAAQ;cAC1C,UAAU,EAAC,OAAO,UAAS;cAC3B,oBAAoB;gBAClB,MAAM,KAAUW,aAAe;AAC7B,yBAAO,mBAAmB,IAAI,KAAK,KAAK,SAAS,OAAO,GAAGA,WAAU;;;cAGzE,YAAY;gBACV,MAAG;AACD,yBAAO,OAAO;;;cAGlB,KAAK;gBACH,MAAG;AACD,wBAAM,MAAM,OAAO;AACnB,yBAAO,cAAc,IACnB,IAAI,CAAC,IACL,IAAI,MAAM,GAAG,SAAS;;;cAG5B,OAAO;gBACL,MAAG;AACD,yBAAO,OAAO;;;aAGnB;AACD,mBAAO;;AAGT,iBAAO,MAAM,WAAW,iBAAiB,GAAG,CAAC,EAC1C,KAAK,YAAU,UAAU,oBAAoB,MAAM,CAAC;;;AAG3D,aAAO;;;AAGb;AAEO,IAAM,yBAA8C;EACzD,OAAO;EACP,MAAM;EACN,OAAO;EACP,QAAQ;;SC1LM,cAAc,GAAQ,GAAQ,IAAU,MAAa;AAEnE,OAAK,MAAM,CAAA;AACX,SAAO,QAAQ;AACf,OAAK,CAAC,EAAE,QAAQ,CAAC,SAAI;AACnB,QAAI,CAAC,OAAO,GAAG,IAAI,GAAG;AAEpB,SAAG,OAAO,IAAI,IAAI;WACb;AACL,UAAI,KAAK,EAAE,IAAI,GACb,KAAK,EAAE,IAAI;AACb,UAAI,OAAO,OAAO,YAAY,OAAO,OAAO,YAAY,MAAM,IAAI;AAChE,cAAM,aAAa,YAAY,EAAE;AACjC,cAAM,aAAa,YAAY,EAAE;AAEjC,YAAI,eAAe,YAAY;AAC7B,aAAG,OAAO,IAAI,IAAI,EAAE,IAAI;mBACf,eAAe,UAAU;AAElC,wBAAc,IAAI,IAAI,IAAI,OAAO,OAAO,GAAG;mBAClC,OAAO,IAAI;AAKpB,aAAG,OAAO,IAAI,IAAI,EAAE,IAAI;;iBAEjB,OAAO;AAAI,WAAG,OAAO,IAAI,IAAI,EAAE,IAAI;;GAEjD;AACD,OAAK,CAAC,EAAE,QAAQ,CAAC,SAAI;AACnB,QAAI,CAAC,OAAO,GAAG,IAAI,GAAG;AACpB,SAAG,OAAO,IAAI,IAAI,EAAE,IAAI;;GAE3B;AACD,SAAO;AACT;SC9BgB,iBACd,YACA,KAAiI;AAGjI,MAAI,IAAI,SAAS;AAAU,WAAO,IAAI;AACtC,SAAO,IAAI,QAAQ,IAAI,OAAO,IAAI,WAAW,UAAU;AACzD;ACKO,IAAM,kBAAuC;EAClD,OAAO;EACP,MAAM;EACN,OAAO;EACP,QAAQ,CAAC,cAAsB;IAC7B,GAAG;IACH,MAAM,WAAiB;AACrB,YAAM,YAAY,SAAS,MAAM,SAAS;AAC1C,YAAM,EAAC,WAAU,IAAI,UAAU;AAE/B,YAAM,kBAA+B;QACnC,GAAG;QACH,OAAO,KAAG;AACR,gBAAM,UAAU,IAAI;AAGpB,gBAAM,EAAC,UAAU,UAAU,SAAQ,IAAI,QAAQ,MAAM,SAAS,EAAE;AAChE,kBAAQ,IAAI,MAAI;YACd,KAAK;AACH,kBAAI,SAAS,SAAS;AAAK;AAC3B,qBAAO,QAAQ,SAAS,aAAa,MAAI,eAAe,GAAG,GAAG,IAAI;YACpE,KAAK;AACH,kBAAI,SAAS,SAAS,OAAO,SAAS,SAAS;AAAK;AACpD,qBAAO,QAAQ,SAAS,aAAa,MAAI,eAAe,GAAG,GAAG,IAAI;YACpE,KAAK;AACH,kBAAI,SAAS,SAAS;AAAK;AAC3B,qBAAO,QAAQ,SAAS,aAAa,MAAI,eAAe,GAAG,GAAG,IAAI;YACpE,KAAK;AACH,kBAAI,SAAS,SAAS;AAAK;AAC3B,qBAAO,QAAQ,SAAS,aAAa,MAAI,YAAY,GAAG,GAAG,IAAI;;AAGnE,iBAAO,UAAU,OAAO,GAAG;AAG3B,mBAAS,eAAeV,MAA8D;AACpF,kBAAMW,WAAU,IAAI;AACpB,kBAAM/B,QAAOoB,KAAI,QAAQ,iBAAiB,YAAYA,IAAG;AACzD,gBAAI,CAACpB;AAAM,oBAAM,IAAI,MAAM,cAAc;AAEzC,YAAAoB,OAAMA,KAAI,SAAS,SAASA,KAAI,SAAS,QACvC,EAAC,GAAGA,MAAK,MAAApB,MAAI,IACb,EAAC,GAAGoB,KAAG;AACT,gBAAIA,KAAI,SAAS;AAAU,cAAAA,KAAI,SAAS,CAAC,GAAGA,KAAI,MAAM;AACtD,gBAAIA,KAAI;AAAM,cAAAA,KAAI,OAAO,CAAC,GAAGA,KAAI,IAAI;AAErC,mBAAO,kBAAkB,WAAWA,MAAKpB,KAAI,EAAE,KAAM,oBAAc;AACjE,oBAAM,WAAWA,MAAK,IAAI,CAAC,KAAK,MAAC;AAC/B,sBAAM,gBAAgB,eAAe,CAAC;AACtC,sBAAM,MAAM,EAAE,SAAS,MAAM,WAAW,KAAI;AAC5C,oBAAIoB,KAAI,SAAS,UAAU;AAEzB,2BAAS,KAAK,KAAK,KAAK,KAAK,eAAeW,QAAO;2BAC1CX,KAAI,SAAS,SAAS,kBAAkB,QAAW;AAE5D,wBAAM,sBAAsB,SAAS,KAAK,KAAK,KAAK,KAAKA,KAAI,OAAO,CAAC,GAAGW,QAAO;AAC/E,sBAAI,OAAO,QAAQ,uBAAuB,MAAM;AAC9C,0BAAM;AACN,oBAAAX,KAAI,KAAK,CAAC,IAAI;AACd,wBAAI,CAAC,WAAW,UAAU;AACxB,mCAAaA,KAAI,OAAO,CAAC,GAAG,WAAW,SAAS,GAAG;;;uBAGlD;AAEL,wBAAM,aAAa,cAAc,eAAeA,KAAI,OAAO,CAAC,CAAC;AAC7D,wBAAM,oBAAoB,SAAS,KAAK,KAAK,KAAK,YAAY,KAAK,eAAeW,QAAO;AACzF,sBAAI,mBAAmB;AACrB,0BAAM,iBAAiBX,KAAI,OAAO,CAAC;AACnC,2BAAO,KAAK,iBAAiB,EAAE,QAAQ,aAAO;AAC5C,0BAAI,OAAO,gBAAgB,OAAO,GAAG;AAEnC,uCAAe,OAAO,IAAI,kBAAkB,OAAO;6BAC9C;AAEL,qCAAa,gBAAgB,SAAS,kBAAkB,OAAO,CAAC;;qBAEnE;;;AAGL,uBAAO;eACR;AACD,qBAAO,UAAU,OAAOA,IAAG,EAAE,KAAK,CAAC,EAAC,UAAU,SAAS,aAAa,WAAU,MAAC;AAC7E,yBAAS,IAAE,GAAG,IAAEpB,MAAK,QAAQ,EAAE,GAAG;AAChC,wBAAM,UAAU,UAAU,QAAQ,CAAC,IAAIA,MAAK,CAAC;AAC7C,wBAAM,MAAM,SAAS,CAAC;AACtB,sBAAI,WAAW,MAAM;AACnB,wBAAI,WAAW,IAAI,QAAQ,SAAS,CAAC,CAAC;yBACjC;AACL,wBAAI,aAAa,IAAI;sBACnBoB,KAAI,SAAS,SAAS,eAAe,CAAC,IACpCA,KAAI,OAAO,CAAC,IACZ;;;;AAIR,uBAAO,EAAC,UAAU,SAAS,aAAa,WAAU;eACnD,EAAE,MAAM,WAAK;AACZ,yBAAS,QAAQ,SAAO,IAAI,WAAW,IAAI,QAAQ,KAAK,CAAC;AACzD,uBAAO,QAAQ,OAAO,KAAK;eAC5B;aACF;;AAGH,mBAAS,YAAYA,MAA6B;AAChD,mBAAO,gBAAgBA,KAAI,OAAOA,KAAI,OAAO,GAAK;;AAGpD,mBAAS,gBAAgB,OAA0B,OAAuB,OAAa;AAErF,mBAAO,UAAU,MAAM,EAAC,OAAO,QAAQ,OAAO,OAAO,EAAC,OAAO,YAAY,MAAK,GAAG,MAAK,CAAC,EACtF,KAAK,CAAC,EAAC,OAAM,MAAC;AAGb,qBAAO,eAAe,EAAC,MAAM,UAAU,MAAM,QAAQ,MAAK,CAAC,EAAE,KAAK,SAAG;AACnE,oBAAI,IAAI,cAAc;AAAG,yBAAO,QAAQ,OAAO,IAAI,SAAS,CAAC,CAAC;AAC9D,oBAAI,OAAO,SAAS,OAAO;AACzB,yBAAO,EAAC,UAAU,CAAA,GAAI,aAAa,GAAG,YAAY,OAAS;uBACtD;AACL,yBAAO,gBAAgB,OAAO,EAAC,GAAG,OAAO,OAAO,OAAO,OAAO,SAAS,CAAC,GAAG,WAAW,KAAI,GAAG,KAAK;;eAErG;aACF;;;;AAMP,aAAO;;;;AAKb,SAAS,kBACP,OACA,KACA,eAAoB;AAEpB,SAAO,IAAI,SAAS,QAChB,QAAQ,QAAQ,CAAA,CAAE,IAClB,MAAM,QAAQ,EAAE,OAAO,IAAI,OAAO,MAAM,eAAe,OAAO,YAAW,CAAE;AACjF;SC3JgB,wBACdpB,OACA,OACA,OAAe;AAEf,MAAI;AACF,QAAI,CAAC;AAAO,aAAO;AACnB,QAAI,MAAM,KAAK,SAASA,MAAK;AAAQ,aAAO;AAC5C,UAAM,SAAgB,CAAA;AAItB,aAAS,IAAI,GAAG,IAAI,GAAG,IAAI,MAAM,KAAK,UAAU,IAAIA,MAAK,QAAQ,EAAE,GAAG;AACpE,UAAI,IAAI,MAAM,KAAK,CAAC,GAAGA,MAAK,CAAC,CAAC,MAAM;AAAG;AACvC,aAAO,KAAK,QAAQ,UAAU,MAAM,OAAO,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC;AAChE,QAAE;;AAGJ,WAAO,OAAO,WAAWA,MAAK,SAAS,SAAS;WAChD,IAAM;AACN,WAAO;;AAEX;AAEO,IAAM,gCAAoD;EAC/D,OAAO;EACP,OAAO;EACP,QAAQ,CAAC,SAAI;AACX,WAAO;MACL,OAAO,CAAC,cAAS;AACf,cAAM,QAAQ,KAAK,MAAM,SAAS;AAClC,eAAO;UACL,GAAG;UACH,SAAS,CAAC,QAAG;AACX,gBAAI,CAAC,IAAI,OAAO;AACd,qBAAO,MAAM,QAAQ,GAAG;;AAE1B,kBAAM,eAAe,wBACnB,IAAI,MACJ,IAAI,MAAM,QAAQ,GAClB,IAAI,UAAU,OAAO;AAEvB,gBAAI,cAAc;AAChB,qBAAOD,aAAQ,QAAQ,YAAY;;AAErC,mBAAO,MAAM,QAAQ,GAAG,EAAE,KAAK,CAAC,QAAG;AACjC,kBAAI,MAAM,QAAQ,IAAI;gBACpB,MAAM,IAAI;gBACV,QAAQ,IAAI,UAAU,UAAU,UAAU,GAAG,IAAI;;AAEnD,qBAAO;aACR;;UAEH,QAAQ,CAAC,QAAG;AAEV,gBAAI,IAAI,SAAS;AAAO,kBAAI,MAAM,QAAQ,IAAI;AAC9C,mBAAO,MAAM,OAAO,GAAG;;;;;;;AC7CnC,SAAS,aAAa,MAA6D;AACjF,SAAO,EAAE,UAAU;AACrB;IAIa,WAAW,SAAS,YAAiB,IAAQ;AACxD,MAAI,MAAM;AAER,WAAO,MAAM,UAAU,SAAS,EAAC,GAAE,GAAG,MAAM,YAAY,IAAI,UAAU,SAAS,IAAI,KAAK,WAAU,IAAI,EAAC,GAAE,EAAC,CAAC;SACtG;AAEL,UAAM,KAAK,IAAI,SAAQ;AACvB,QAAI,cAAe,OAAO,YAAa;AACrC,aAAO,IAAI,UAAU;;AAEvB,WAAO;;AAEX;AAEA,MAAM,SAAS,WAAW;EACxB,IAAI,UAAiE;AACnE,gBAAY,MAAM,QAAQ;AAC1B,WAAO;;EAET,OAAO,KAAkB;AACvB,aAAS,MAAM,KAAK,GAAG;AACvB,WAAO;;EAET,QAAQC,OAAqB;AAC3B,IAAAA,MAAK,QAAQ,SAAO,SAAS,MAAM,KAAK,GAAG,CAAC;AAC5C,WAAO;;EAGT,CAAC,cAAc,IAAC;AACd,WAAO,oBAAoB,IAAI;;CAElC;AAED,SAAS,SAAS,QAAsB,MAAqB,IAAiB;AAC5E,QAAM,OAAO,IAAI,MAAM,EAAE;AAGzB,MAAI,MAAM,IAAI;AAAG;AAGjB,MAAI,OAAO;AAAG,UAAM,WAAU;AAE9B,MAAI,aAAa,MAAM;AAAG,WAAO,OAAO,QAAQ,EAAE,MAAM,IAAI,GAAG,EAAC,CAAE;AAClE,QAAM,OAAO,OAAO;AACpB,QAAM,QAAQ,OAAO;AACrB,MAAI,IAAI,IAAI,OAAO,IAAI,IAAI,GAAG;AAC5B,WACI,SAAS,MAAM,MAAM,EAAE,IACtB,OAAO,IAAI,EAAE,MAAM,IAAI,GAAG,GAAG,GAAG,MAAM,GAAG,KAAI;AAClD,WAAO,UAAU,MAAM;;AAEzB,MAAI,IAAI,MAAM,OAAO,EAAE,IAAI,GAAG;AAC5B,YACI,SAAS,OAAO,MAAM,EAAE,IACvB,OAAO,IAAI,EAAE,MAAM,IAAI,GAAG,GAAG,GAAG,MAAM,GAAG,KAAI;AAClD,WAAO,UAAU,MAAM;;AAKzB,MAAI,IAAI,MAAM,OAAO,IAAI,IAAI,GAAG;AAC9B,WAAO,OAAO;AACd,WAAO,IAAI;AACX,WAAO,IAAI,QAAQ,MAAM,IAAI,IAAI;;AAGnC,MAAI,IAAI,IAAI,OAAO,EAAE,IAAI,GAAG;AAC1B,WAAO,KAAK;AACZ,WAAO,IAAI;AACX,WAAO,IAAI,OAAO,IAAI,OAAO,EAAE,IAAI,IAAI;;AAEzC,QAAM,iBAAiB,CAAC,OAAO;AAE/B,MAAI,QAAQ,CAAC,OAAO,GAAG;AAGrB,gBAAY,QAAQ,IAAI;;AAG1B,MAAI,SAAS,gBAAgB;AAG3B,gBAAY,QAAQ,KAAK;;AAE7B;SAEgB,YAAY,QAAsB,QAA+D;AAC/G,WAAS,aACPgC,SACA,EAAE,MAAM,IAAI,GAAG,EAAC,GAA6F;AAE7G,aAASA,SAAQ,MAAM,EAAE;AACzB,QAAI;AAAG,mBAAaA,SAAQ,CAAC;AAC7B,QAAI;AAAG,mBAAaA,SAAQ,CAAC;;AAG/B,MAAG,CAAC,aAAa,MAAM;AAAG,iBAAa,QAAQ,MAAM;AACvD;SAEgB,cACd,WACA,WAAuB;AAGrB,QAAM,KAAK,oBAAoB,SAAS;AACxC,MAAI,cAAc,GAAG,KAAI;AACzB,MAAI,YAAY;AAAM,WAAO;AAC7B,MAAI,IAAI,YAAY;AAGpB,QAAM,KAAK,oBAAoB,SAAS;AACxC,MAAI,cAAc,GAAG,KAAK,EAAE,IAAI;AAChC,MAAI,IAAI,YAAY;AAEpB,SAAO,CAAC,YAAY,QAAQ,CAAC,YAAY,MAAM;AAC7C,QAAI,IAAI,EAAG,MAAM,EAAE,EAAE,KAAK,KAAK,IAAI,EAAG,IAAI,EAAE,IAAI,KAAK;AAAG,aAAO;AAC/D,QAAI,EAAE,MAAM,EAAG,IAAI,IAAI,IAClB,KAAK,cAAc,GAAG,KAAK,EAAG,IAAI,GAAG,QACrC,KAAK,cAAc,GAAG,KAAK,EAAE,IAAI,GAAG;;AAE7C,SAAO;AACT;SAUgB,oBACd,MAAmC;AAEnC,MAAI,QAA+B,aAAa,IAAI,IAAI,OAAO,EAAE,GAAG,GAAG,GAAG,KAAI;AAE9E,SAAO;IACL,KAAK,KAAI;AACP,YAAM,cAAc,UAAU,SAAS;AACvC,aAAO,OAAO;AACZ,gBAAQ,MAAM,GAAC;UACb,KAAK;AAGH,kBAAM,IAAI;AACV,gBAAI,aAAa;AACf,qBAAO,MAAM,EAAE,KAAK,IAAI,KAAK,MAAM,EAAE,IAAI,IAAI;AAC3C,wBAAQ,EAAE,IAAI,OAAO,GAAG,MAAM,EAAE,GAAG,GAAG,EAAC;mBACpC;AACL,qBAAO,MAAM,EAAE;AAAG,wBAAQ,EAAE,IAAI,OAAO,GAAG,MAAM,EAAE,GAAG,GAAG,EAAC;;UAG7D,KAAK;AAEH,kBAAM,IAAI;AACV,gBAAI,CAAC,eAAe,IAAI,KAAK,MAAM,EAAE,EAAE,KAAK;AAC1C,qBAAO,EAAE,OAAO,MAAM,GAAG,MAAM,MAAK;UACxC,KAAK;AAEH,gBAAI,MAAM,EAAE,GAAG;AACb,oBAAM,IAAI;AACV,sBAAQ,EAAE,IAAI,OAAO,GAAG,MAAM,EAAE,GAAG,GAAG,EAAC;AACvC;;UAGJ,KAAK;AACH,oBAAQ,MAAM;;;AAGpB,aAAO,EAAE,MAAM,KAAI;;;AAGzB;AAEA,SAAS,UAAU,QAAwB;;AACzC,QAAM,UAAQ,KAAA,OAAO,OAAC,QAAA,OAAA,SAAA,SAAA,GAAE,MAAK,QAAM,KAAA,OAAO,OAAC,QAAA,OAAA,SAAA,SAAA,GAAE,MAAK;AAClD,QAAM,IAAI,OAAO,IAAI,MAAM,OAAO,KAAK,MAAM;AAC7C,MAAI,GAAG;AAsBL,UAAM,IAAI,MAAM,MAAM,MAAM;AAC5B,UAAM,YAAY,EAAE,GAAG,OAAM;AAI7B,UAAM,eAAe,OAAO,CAAC;AAC7B,WAAO,OAAO,aAAa;AAC3B,WAAO,KAAK,aAAa;AACzB,WAAO,CAAC,IAAI,aAAa,CAAC;AAC1B,cAAU,CAAC,IAAI,aAAa,CAAC;AAC7B,WAAO,CAAC,IAAI;AACZ,cAAU,IAAI,aAAa,SAAS;;AAEtC,SAAO,IAAI,aAAa,MAAM;AAChC;AAEA,SAAS,aAAa,EAAE,GAAG,EAAC,GAAqC;AAC/D,UAAQ,IAAK,IAAI,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,IAAK,IAAI,EAAE,IAAI,KAAK;AAC9D;AC1NO,IAAM,0BAA8C;EACzD,OAAO;EACP,OAAO;EACP,QAAQ,CAAC,SAAI;AACX,UAAM,SAAS,KAAK,OAAO;AAC3B,UAAM,aAAa,IAAI,SAAS,KAAK,SAAS,KAAK,OAAO;AAE1D,WAAO;MACL,GAAG;MACH,OAAO,CAAC,cAAS;AACf,cAAM,QAAQ,KAAK,MAAM,SAAS;AAClC,cAAM,EAAE,OAAM,IAAK;AACnB,cAAM,EAAE,WAAU,IAAK;AACvB,cAAM,EAAE,YAAY,SAAQ,IAAK;AACjC,cAAM,aAA0B;UAC9B,GAAG;UACH,QAAQ,CAAC,QAAG;AACV,kBAAM,QAAQ,IAAI;AAGlB,kBAAM,eACJ,MAAM,iBAAiB,MAAM,eAAe,CAAA;AAC9C,kBAAM,cAAc,CAAC,cAAiB;AACpC,oBAAM,OAAO,SAAS,MAAM,IAAI,SAAS,IAAI,SAAS;AACtD,qBAAQ,aAAa,IAAI,MACtB,aAAa,IAAI,IAAI,IAAI,SAAQ;;AAEtC,kBAAM,aAAa,YAAY,EAAE;AACjC,kBAAM,eAAe,YAAY,OAAO;AAExC,kBAAM,EAAE,MAAAtC,MAAI,IAAK;AACjB,gBAAI,CAACM,OAAM,OAAO,IAChB,IAAI,SAAS,gBACT,CAAC,IAAI,KAAK,IACV,IAAI,SAAS,WACb,CAAC,IAAI,IAAI,IACT,IAAI,OAAO,SAAS,KACpB,CAAC,CAAA,GAAI,IAAI,MAAM,IACf,CAAA;AACN,kBAAM,WAAW,IAAI,MAAM,QAAQ;AACnC,mBAAO,MAAM,OAAO,GAAG,EAAE,KAAK,CAAC,QAAG;AAGhC,kBAAI,QAAQA,KAAI,GAAG;AAEjB,oBAAIN,UAAS;AAAU,kBAAAM,QAAO,IAAI;AAElC,2BAAW,QAAQA,KAAI;AAGvB,sBAAM,UAAU,wBAAwBA,OAAM,QAAQ;AAGtD,oBAAI,CAAC,WAAWN,UAAS,OAAO;AAG9B,+BAAa,QAAQM,KAAI;;AAE3B,oBAAI,WAAW,SAAS;AAEtB,uCAAqB,aAAa,QAAQ,SAAS,OAAO;;yBAEnDA,OAAM;AAEf,sBAAM,QAAQ,EAAE,MAAMA,MAAK,OAAO,IAAIA,MAAK,MAAK;AAChD,6BAAa,IAAI,KAAK;AAEtB,2BAAW,IAAI,KAAK;qBACf;AAIL,2BAAW,IAAI,UAAU;AACzB,6BAAa,IAAI,UAAU;AAC3B,uBAAO,QAAQ,QAAQ,SAAO,YAAY,IAAI,IAAI,EAAE,IAAI,UAAU,CAAC;;AAErE,qBAAO;aACR;;;AAIL,cAAM,WAAkD,CAAC,EACvD,OAAO,EAAE,OAAO,MAAK,EAAE,MAIE;;AAAK,iBAAA;YAC9B;YACA,IAAI,UAAS,KAAA,MAAM,WAAK,QAAA,OAAA,SAAA,KAAI,KAAK,UAAS,KAAA,MAAM,WAAK,QAAA,OAAA,SAAA,KAAI,KAAK,OAAO;;;AAGvE,cAAM,kBAGF;UACF,KAAK,CAAC,QAAQ,CAAC,YAAY,IAAI,SAAS,IAAI,GAAG,CAAC;UAChD,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,SAAQ,EAAG,QAAQ,IAAI,IAAI,CAAC;UAC/D,OAAO;UACP,OAAO;UACP,YAAY;;AAGd,aAAK,eAAe,EAAE,QAAQ,YAAM;AAClC,qBAAW,MAAM,IAAI,SACnB,KAK2B;AAE3B,kBAAM,EAAE,OAAM,IAAK;AACnB,gBAAI,QAAQ;AAKV,oBAAM,cAAc,CAAC,cAAiB;AACpC,sBAAM,OAAO,SAAS,MAAM,IAAI,SAAS,IAAI,SAAS;AACtD,uBAAQ,OAAO,IAAI,MAChB,OAAO,IAAI,IAAI,IAAI,SAAQ;;AAEhC,oBAAM,aAAa,YAAY,EAAE;AACjC,oBAAM,eAAe,YAAY,OAAO;AACxC,oBAAM,CAAC,cAAc,aAAa,IAAI,gBAAgB,MAAM,EAAE,GAAG;AAEjE,0BAAY,aAAa,QAAQ,EAAE,EAAE,IAAI,aAAa;AACtD,kBAAI,CAAC,aAAa,cAAc;AAU9B,oBAAI,WAAW,SAAS;AAKtB,+BAAa,IAAI,UAAU;uBACtB;AAIL,wBAAM,cACJ,WAAW,WACX,YACC,IAA2B,UAC5B,MAAM,MAAM;oBACV,GAAI;oBACJ,QAAQ;mBACT;AAEH,yBAAO,MAAM,MAAM,EAAE,MAAM,MAAM,SAAS,EAAE,KAAK,CAAC,QAAG;AACnD,wBAAI,WAAW,SAAS;AACtB,0BAAI,YAAa,IAA2B,QAAQ;AAMlD,+BAAO,YAAY,KACjB,CAAC,EAAE,QAAQ,cAAa,MAAuB;AAC7C,qCAAW,QAAQ,aAAa;AAChC,iCAAO;yBACR;;AAKL,4BAAM,QAAS,IAA2B,SACrC,IAA4B,OAAO,IAAI,UAAU,IACjD,IAA4B;AACjC,0BAAK,IAA2B,QAAQ;AAGtC,mCAAW,QAAQ,KAAK;6BACnB;AAQL,qCAAa,QAAQ,KAAK;;+BAEnB,WAAW,cAAc;AAKlC,4BAAM,SAA8B;AACpC,4BAAM,aAAc,IAAgC;AACpD,6BACE,UACA,OAAO,OAAO,QAAQ;wBACpB,KAAK;0BACH,MAAG;AACD,yCAAa,OAAO,OAAO,UAAU;AACrC,mCAAO,OAAO;;;wBAGlB,YAAY;0BACV,MAAG;AACD,kCAAM,OAAO,OAAO;AACpB,yCAAa,OAAO,IAAI;AACxB,mCAAO;;;wBAGX,OAAO;0BACL,MAAG;AACD,0CAAc,WAAW,OAAO,OAAO,UAAU;AACjD,mCAAO,OAAO;;;uBAGnB;;AAGL,2BAAO;mBACR;;;;AAIP,mBAAO,MAAM,MAAM,EAAE,MAAM,MAAM,SAAS;;SAE7C;AACD,eAAO;;;;;AAMf,SAAS,qBACP,aACA,QACA,SACA,SAA0B;AAE1B,WAAS,iBAAiB,IAAe;AACvC,UAAM,WAAW,YAAY,GAAG,QAAQ,EAAE;AAC1C,aAAS,WAAW,KAAQ;AAC1B,aAAO,OAAO,OAAO,GAAG,WAAW,GAAG,IAAI;;AAE5C,UAAM,eAAe,CAAC,QAAa,GAAG,cAAc,QAAQ,GAAG,IAE3D,IAAI,QAAQ,CAAAiC,SAAO,SAAS,OAAOA,IAAG,CAAC,IAEvC,SAAS,OAAO,GAAG;AAEvB,KAAC,WAAW,SAAS,QAAQ,CAAC,GAAG,MAAC;AAChC,YAAM,SAAS,WAAW,WAAW,QAAQ,CAAC,CAAC;AAC/C,YAAM,SAAS,WAAW,WAAW,QAAQ,CAAC,CAAC;AAC/C,UAAI,IAAI,QAAQ,MAAM,MAAM,GAAG;AAE7B,YAAI,UAAU;AAAM,uBAAa,MAAM;AACvC,YAAI,UAAU;AAAM,uBAAa,MAAM;;KAE1C;;AAEH,SAAO,QAAQ,QAAQ,gBAAgB;AACzC;ICjOaP,gBAAAA,SAAK;EA6BhB,YAAY,MAAc,SAAsB;AAjBhD,SAAA,eAA0F,CAAA;AAM1F,SAAA,QAAgB;AAYd,UAAM,OAAQA,SAAkC;AAChD,SAAK,WAAW,UAAU;MAExB,QAASA,SAAkC;MAC3C,UAAU;MAEV,WAAW,KAAK;MAChB,aAAa,KAAK;MAClB,GAAG;;AAEL,SAAK,QAAQ;MACX,WAAW,QAAQ;MACnB,aAAa,QAAQ;;AAEvB,UAAM,EACJ,OAAM,IACJ;AACJ,SAAK,YAAY,CAAA;AACjB,SAAK,YAAY,CAAA;AACjB,SAAK,cAAc,CAAA;AACnB,SAAK,aAAa,CAAA;AAClB,SAAK,QAAQ;AACb,SAAK,SAAS;AACd,UAAM,QAAsB;MAC1B,aAAa;MACb,eAAe;MACf,mBAAmB;MACnB,cAAc;MACd,gBAAgB;MAChB,gBAAgB;MAChB,YAAY;MACZ,eAAe;MACf,YAAY;MACZ,gBAAgB;;AAElB,UAAM,iBAAiB,IAAI3B,aAAQ,aAAO;AACxC,YAAM,iBAAiB;KACxB;AACD,UAAM,gBAAgB,IAAIA,aAAQ,CAAC,GAAG,WAAM;AAC1C,YAAM,aAAa;KACpB;AACD,SAAK,SAAS;AACd,SAAK,OAAO;AACZ,SAAK,KAAK,OAAO,MAAM,YAAY,WAAW,iBAAiB,SAAS,EAAE,OAAO,CAAC,iBAAiB,GAAG,EAAC,CAAE;AACzG,SAAK,GAAG,MAAM,YAAY,SAAS,KAAK,GAAG,MAAM,WAAW,eAAS;AACnE,aAAO,CAAC,YAAY,YAAO;AACxB2B,iBAAkC,IAAI,MAAA;AACrC,gBAAMQ,SAAQ,KAAK;AACnB,cAAIA,OAAM,cAAc;AAEtB,gBAAI,CAACA,OAAM;AAAanC,2BAAQ,QAAO,EAAG,KAAK,UAAU;AAEzD,gBAAI;AAAS,wBAAU,UAAU;qBACxBmC,OAAM,mBAAmB;AAElC,YAAAA,OAAM,kBAAkB,KAAK,UAAU;AACvC,gBAAI;AAAS,wBAAU,UAAU;iBAC5B;AAEL,sBAAU,UAAU;AAEpB,kBAAM,KAAK;AACX,gBAAI,CAAC;AAAS,wBAAU,SAAS,cAAW;AAC1C,mBAAG,GAAG,MAAM,YAAY,UAAU;AAClC,mBAAG,GAAG,MAAM,YAAY,WAAW;eACpC;;SAEJ;;KAEJ;AAGD,SAAK,aAAa,4BAA4B,IAAI;AAClD,SAAK,QAAQ,uBAAuB,IAAI;AACxC,SAAK,cAAc,6BAA6B,IAAI;AACpD,SAAK,UAAU,yBAAyB,IAAI;AAC5C,SAAK,cAAc,6BAA6B,IAAI;AAKpD,SAAK,GAAG,iBAAiB,QAAE;AAKzB,UAAI,GAAG,aAAa;AAClB,gBAAQ,KAAK,iDAAiD,KAAK,IAAI,0CAA0C;;AAEjH,gBAAQ,KAAK,gDAAgD,KAAK,IAAI,iDAAiD;AACzH,WAAK,MAAK;KAOX;AACD,SAAK,GAAG,WAAW,QAAE;AACnB,UAAI,CAAC,GAAG,cAAc,GAAG,aAAa,GAAG;AACvC,gBAAQ,KAAK,iBAAiB,KAAK,IAAI,gBAAgB;;AAEvD,gBAAQ,KAAK,YAAY,KAAK,IAAI,iDAAiD,GAAG,aAAa,EAAE,EAAE;KAC1G;AAED,SAAK,UAAU,UAAU,QAAQ,WAAiC;AAElE,SAAK,qBAAqB,CACxB,MACA,YACA,UACA,sBAAoC,IAAI,KAAK,YAAY,MAAM,YAAY,UAAU,KAAK,SAAS,6BAA6B,iBAAiB;AAEnJ,SAAK,iBAAiB,QAAE;AACtB,WAAK,GAAG,SAAS,EAAE,KAAK,EAAE;AAE1B,kBACG,OAAO,OAAK,EAAE,SAAS,KAAK,QAAQ,MAAM,QAAQ,CAAC,EAAE,OAAO,OAAO,EACnE,IAAI,OAAK,EAAE,GAAG,eAAe,EAAE,KAAK,EAAE,CAAC;;AAI5C,SAAK,IAAI,sBAAsB;AAC/B,SAAK,IAAI,eAAe;AACxB,SAAK,IAAI,uBAAuB;AAChC,SAAK,IAAI,6BAA6B;AAEtC,SAAK,MAAM,OAAO,OAAO,MAAM,EAAC,MAAM,EAAC,OAAO,KAAI,EAAC,CAAC;AAGpD,WAAO,QAAQ,WAAS,MAAM,IAAI,CAAC;;EAGrC,QAAQ,eAAqB;AAC3B,QAAI,MAAM,aAAa,KAAK,gBAAgB;AAAK,YAAM,IAAI,WAAW,KAAK,wCAAwC;AACnH,oBAAgB,KAAK,MAAM,gBAAgB,EAAE,IAAI;AACjD,QAAI,KAAK,SAAS,KAAK,OAAO;AAC5B,YAAM,IAAI,WAAW,OAAO,0CAA0C;AACxE,SAAK,QAAQ,KAAK,IAAI,KAAK,OAAO,aAAa;AAC/C,UAAM,WAAW,KAAK;AACtB,QAAI,kBAAkB,SAAS,OAC7B,OAAK,EAAE,KAAK,YAAY,aAAa,EAAE,CAAC;AAC1C,QAAI;AAAiB,aAAO;AAC5B,sBAAkB,IAAI,KAAK,QAAQ,aAAa;AAChD,aAAS,KAAK,eAAe;AAC7B,aAAS,KAAK,iBAAiB;AAC/B,oBAAgB,OAAO,CAAA,CAAE;AAEzB,SAAK,OAAO,aAAa;AACzB,WAAO;;EAGT,WAAc,IAAoB;AAChC,WAAQ,KAAK,UAAU,KAAK,OAAO,gBAAgB,IAAI,cAAc,KAAK,QAAS,GAAE,IAAK,IAAInC,aAAW,CAAC,SAAS,WAAM;AACvH,UAAI,KAAK,OAAO,cAAc;AAG5B,eAAO,OAAO,IAAI,WAAW,eAAe,KAAK,OAAO,WAAW,CAAC;;AAEtE,UAAI,CAAC,KAAK,OAAO,eAAe;AAC9B,YAAI,CAAC,KAAK,SAAS,UAAU;AAC3B,iBAAO,IAAI,WAAW,eAAc,CAAE;AACtC;;AAEF,aAAK,KAAI,EAAG,MAAM,GAAG;;AAEvB,WAAK,OAAO,eAAe,KAAK,SAAS,MAAM;KAChD,EAAE,KAAK,EAAE;;EAGZ,IAAI,EAAC,OAAO,QAAQ,OAAO,KAAI,GAAqB;AAClD,QAAI;AAAM,WAAK,MAAM,EAAC,OAAO,KAAI,CAAC;AAClC,UAAM,cAAc,KAAK,aAAa,KAAK,MAAM,KAAK,aAAa,KAAK,IAAI,CAAA;AAC5E,gBAAY,KAAK,EAAC,OAAO,QAAQ,OAAO,SAAS,OAAO,KAAK,OAAO,KAAI,CAAC;AACzE,gBAAY,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAG5C,WAAO;;EAKT,MAAM,EAAC,OAAO,MAAM,OAAM,GAA+D;AACvF,QAAI,SAAS,KAAK,aAAa,KAAK,GAAG;AACrC,WAAK,aAAa,KAAK,IAAI,KAAK,aAAa,KAAK,EAAE,OAAO,QACzD,SAAS,GAAG,WAAW,SACvB,OAAO,GAAG,SAAS,OACnB,KAAK;;AAET,WAAO;;EAGT,OAAI;AACF,WAAO,UAAU,IAAI;;EAGvB,SAAM;AACJ,UAAM,QAAQ,KAAK;AACnB,UAAM,MAAM,YAAY,QAAQ,IAAI;AACpC,QAAI,OAAO;AAAG,kBAAY,OAAO,KAAK,CAAC;AACvC,QAAI,KAAK,OAAO;AACd,UAAI;AAAE,aAAK,MAAM,MAAK;eAAa,GAAG;MAAA;AACtC,WAAK,OAAO,QAAQ;;AAGtB,UAAM,iBAAiB,IAAIA,aAAQ,aAAO;AACxC,YAAM,iBAAiB;KACxB;AACD,UAAM,gBAAgB,IAAIA,aAAQ,CAAC,GAAG,WAAM;AAC1C,YAAM,aAAa;KACpB;;EAGH,QAAK;AACH,SAAK,OAAM;AACX,UAAM,QAAQ,KAAK;AACnB,SAAK,SAAS,WAAW;AACzB,UAAM,cAAc,IAAI,WAAW,eAAc;AACjD,QAAI,MAAM;AACR,YAAM,WAAW,MAAM,WAAW;;EAGtC,SAAM;AACJ,UAAM,eAAe,UAAU,SAAS;AACxC,UAAM,QAAQ,KAAK;AACnB,WAAO,IAAIA,aAAQ,CAAC,SAAS,WAAM;AACjC,YAAM,WAAW,MAAA;AACf,aAAK,MAAK;AACV,YAAI,MAAM,KAAK,MAAM,UAAU,eAAe,KAAK,IAAI;AACvD,YAAI,YAAY,KAAK,MAAA;AACnB,6BAAmB,KAAK,OAAO,KAAK,IAAI;AACxC,kBAAO;SACR;AACD,YAAI,UAAU,mBAAmB,MAAM;AACvC,YAAI,YAAY,KAAK;;AAGvB,UAAI;AAAc,cAAM,IAAI,WAAW,gBAAgB,sCAAsC;AAC7F,UAAI,MAAM,eAAe;AACvB,cAAM,eAAe,KAAK,QAAQ;aAC7B;AACL,iBAAQ;;KAEX;;EAGH,YAAS;AACP,WAAO,KAAK;;EAGd,SAAM;AACJ,WAAO,KAAK,UAAU;;EAGxB,gBAAa;AACX,UAAM,cAAc,KAAK,OAAO;AAChC,WAAO,eAAgB,YAAY,SAAS;;EAG9C,YAAS;AACP,WAAO,KAAK,OAAO,gBAAgB;;EAGrC,oBAAiB;AACf,WAAO,KAAK,OAAO;;EAGrB,IAAI,SAAM;AACR,WAAO,KAAK,KAAK,UAAU,EAAE,IAAI,UAAQ,KAAK,WAAW,IAAI,CAAC;;EAGhE,cAAW;AACT,UAAM,OAAO,uBAAuB,MAAM,MAAM,SAAS;AACzD,WAAO,KAAK,aAAa,MAAM,MAAM,IAAI;;EAG3C,aAAa,MAAuB,QAAgC,WAAmB;AACrF,QAAI,oBAAoB,IAAI;AAE5B,QAAI,CAAC,qBAAqB,kBAAkB,OAAO,QAAQ,KAAK,QAAQ,GAAG,MAAM;AAAI,0BAAoB;AACzG,UAAM,mBAAmB,KAAK,QAAQ,GAAG,MAAM;AAC/C,WAAO,KAAK,QAAQ,KAAK,EAAE,EAAE,QAAQ,KAAK,EAAE;AAC5C,QAAI,SACA;AAEJ,QAAI;AAIA,mBAAa,OAAO,IAAI,WAAK;AACzB,YAAI,YAAY,iBAAiB,KAAK,QAAQ,MAAM,OAAO;AAC3D,YAAI,OAAO,cAAc;AAAU,gBAAM,IAAI,UAAU,iFAAiF;AACxI,eAAO;OACV;AAKD,UAAI,QAAQ,OAAO,SAAS;AAC1B,kBAAU;eACH,QAAQ,QAAQ,QAAQ;AAC/B,kBAAU;;AAER,cAAM,IAAI,WAAW,gBAAgB,+BAA+B,IAAI;AAE5E,UAAI,mBAAmB;AAEnB,YAAI,kBAAkB,SAAS,YAAY,YAAY,WAAW;AAC9D,cAAI,kBAAkB;AAElB,gCAAoB;;AAEnB,kBAAM,IAAI,WAAW,eAAe,wFAAwF;;AAErI,YAAI,mBAAmB;AACnB,qBAAW,QAAQ,eAAS;AACxB,gBAAI,qBAAqB,kBAAkB,WAAW,QAAQ,SAAS,MAAM,IAAI;AAC7E,kBAAI,kBAAkB;AAElB,oCAAoB;;AAEnB,sBAAM,IAAI,WAAW,eAAe,WAAW,YAChD,sCAAsC;;WAEjD;;AAEL,YAAI,oBAAoB,qBAAqB,CAAC,kBAAkB,QAAQ;AAEpE,8BAAoB;;;aAGvB,GAAG;AACR,aAAO,oBACH,kBAAkB,SAAS,MAAM,CAAC,GAAG,WAAM;AAAM,eAAO,CAAC;MAAE,CAAC,IAC5D,UAAW,CAAC;;AAGpB,UAAM,mBAAmB,sBAAsB,KAAK,MAAM,MAAM,SAAS,YAAY,mBAAmB,SAAS;AACjH,WAAQ,oBACJ,kBAAkB,SAAS,SAAS,kBAAkB,MAAM,IAC5D,IAAI,QAIA,OAAO,IAAI,WAAW,MAAI,KAAK,WAAW,gBAAgB,CAAC,IAC3D,KAAK,WAAY,gBAAgB;;EAK3C,MAAM,WAAiB;AACrB,QAAI,CAAC,OAAO,KAAK,YAAY,SAAS,GAAG;AACvC,YAAM,IAAI,WAAW,aAAa,SAAS,SAAS,iBAAiB;;AACvE,WAAO,KAAK,WAAW,SAAS;;;ACtbpC,IAAM,mBACJ,OAAO,WAAW,eAAe,gBAAgB,SAC7C,OAAO,aACP;IAEO,mBAAU;EAKrB,YAAY,WAAkD;AAC5D,SAAK,aAAa;;EASpB,UAAU,GAAS,OAAa,UAAc;AAC5C,WAAO,KAAK,WACV,CAAC,KAAK,OAAO,MAAM,aAAa,EAAE,MAAM,GAAG,OAAO,SAAQ,IAAK,CAAC;;EAIpE,CAAC,gBAAgB,IAAC;AAChB,WAAO;;;SC7BK,uBACd,QACA,QAAwB;AAExB,OAAK,MAAM,EAAE,QAAQ,UAAI;AACvB,UAAM,WAAW,OAAO,IAAI,MAAM,OAAO,IAAI,IAAI,IAAI,SAAQ;AAC7D,gBAAY,UAAU,OAAO,IAAI,CAAC;GACnC;AACD,SAAO;AACT;SCKgB,UAAa,SAA6B;AACxD,MAAI,WAAW;AACf,MAAI,eAAkB;AACtB,QAAM,aAAa,IAAI,WAAc,CAAC,aAAQ;AAC5C,UAAM,mBAAmB,gBAAgB,OAAO;AAChD,aAAS,QAAQ,QAAwB;AACvC,UAAI,kBAAkB;AACpB,gCAAuB;;AAEzB,YAAM,OAAO,MAAM,SAAS,SAAS,EAAE,QAAQ,OAAO,KAAI,CAAE;AAC5D,YAAM,KAAK,IAAI,QAEX,OAAO,IAAI,WAAW,IAAI,IAC1B,KAAI;AACR,UAAI,kBAAkB;AACnB,WAAoB,KACnB,yBACA,uBAAuB;;AAG3B,aAAO;;AAGT,QAAI,SAAS;AAEb,QAAI,YAA8B,CAAA;AAClC,QAAI,aAA+B,CAAA;AAEnC,UAAM,eAA6B;MACjC,IAAI,SAAM;AACR,eAAO;;MAET,aAAa,MAAA;AACX,iBAAS;AACT,qBAAa,eAAe,YAAY,gBAAgB;;;AAI5D,aAAS,SAAS,SAAS,MAAM,YAAY;AAE7C,QAAI,WAAW,OACb,mBAAmB;AAErB,aAAS,eAAY;AACnB,aAAO,KAAK,UAAU,EAAE,KACtB,CAAC,QACC,UAAU,GAAG,KAAK,cAAc,UAAU,GAAG,GAAG,WAAW,GAAG,CAAC,CAAC;;AAItE,UAAM,mBAAmB,CAAC,UAAuB;AAC/C,6BAAuB,WAAW,KAAK;AACvC,UAAI,aAAY,GAAI;AAClB,gBAAO;;;AAIX,UAAM,UAAU,MAAA;AACd,UAAI,YAAY;AAAQ;AACxB,kBAAY,CAAA;AACZ,YAAM,SAA2B,CAAA;AACjC,YAAM,MAAM,QAAQ,MAAM;AAC1B,UAAI,CAAC,kBAAkB;AACrB,qBAAa,kCAAkC,gBAAgB;AAC/D,2BAAmB;;AAErB,iBAAW;AACX,cAAQ,QAAQ,GAAG,EAAE,KACnB,CAAC,WAAM;AACL,mBAAW;AACX,uBAAe;AACf,mBAAW;AACX,YAAI;AAAQ;AACZ,YAAI,aAAY,GAAI;AAElB,kBAAO;eACF;AACL,sBAAY,CAAA;AAEZ,uBAAa;AACb,mBAAS,QAAQ,SAAS,KAAK,MAAM;;SAGzC,CAAC,QAAG;AACF,mBAAW;AACX,mBAAW;AACX,iBAAS,SAAS,SAAS,MAAM,GAAG;AACpC,qBAAa,YAAW;OACzB;;AAIL,YAAO;AACP,WAAO;GACR;AACD,aAAW,WAAW,MAAM;AAC5B,aAAW,WAAW,MAAM;AAC5B,SAAO;AACT;ACjHO,IAAI;AAEX,IAAI;AACF,YAAU;IAER,WAAW,QAAQ,aAAa,QAAQ,gBAAgB,QAAQ,mBAAmB,QAAQ;IAC3F,aAAa,QAAQ,eAAe,QAAQ;;SAEvC,GAAG;AACV,YAAU,EAAE,WAAW,MAAM,aAAa,KAAI;;ACyBhD,IAAM,QAAQoC;AAKd,MAAM,OAAO;EAIX,GAAG;EAKH,OAAO,cAAoB;AACzB,UAAM,KAAK,IAAI,MAAM,cAAc,EAAC,QAAQ,CAAA,EAAE,CAAC;AAC/C,WAAO,GAAG,OAAM;;EAMlB,OAAO,MAAY;AACjB,WAAO,IAAI,MAAM,MAAM,EAAE,QAAQ,CAAA,EAAE,CAAE,EAAE,KAAI,EAAG,KAAK,QAAE;AACnD,SAAG,MAAK;AACR,aAAO;KACR,EAAE,MAAM,uBAAuB,MAAM,KAAK;;EAM7C,iBAAiB,IAAE;AACjB,QAAI;AACF,aAAO,iBAAiB,MAAM,YAAY,EAAE,KAAK,EAAE;aACnD,IAAM;AACN,aAAO,UAAU,IAAI,WAAW,WAAU,CAAE;;;EAKhD,cAAW;AACT,aAAS,MAAM,SAAO;AACpB,aAAO,MAAM,OAAO;;AAEtB,WAAO;;EAGT,kBAAkB,WAAS;AAsBzB,WAAO,IAAI,QACT,OAAO,IAAI,WAAW,SAAS,IAC/B,UAAS;;EAGb;EAEA,OAAO,SAAU,aAAqB;AACpC,WAAO,WAAA;AACL,UAAI;AACF,YAAI,KAAK,cAAc,YAAY,MAAM,MAAM,SAAS,CAAC;AACzD,YAAI,CAAC,MAAM,OAAO,GAAG,SAAS;AAC5B,iBAAOpC,aAAQ,QAAQ,EAAE;AAC3B,eAAO;eACA,GAAG;AACV,eAAO,UAAU,CAAC;;;;EAKxB,OAAO,SAAU,aAAa,MAAM,MAAI;AACtC,QAAI;AACF,UAAI,KAAK,cAAc,YAAY,MAAM,MAAM,QAAQ,CAAA,CAAE,CAAC;AAC1D,UAAI,CAAC,MAAM,OAAO,GAAG,SAAS;AAC5B,eAAOA,aAAQ,QAAQ,EAAE;AAC3B,aAAO;aACA,GAAG;AACV,aAAO,UAAU,CAAC;;;EAKtB,oBAAoB;IAClB,KAAK,MAAM,IAAI,SAAS;;EAG1B,SAAS,SAAU,mBAAmB,iBAAe;AAEnD,UAAM,UAAUA,aAAQ,QACtB,OAAO,sBAAsB,aAC3B,MAAM,kBAAkB,iBAAiB,IACzC,iBAAiB,EAClB,QAAQ,mBAAmB,GAAK;AAInC,WAAO,IAAI,QACT,IAAI,MAAM,QAAQ,OAAO,IACzB;;EAIJ,SAASA;EAMT,OAAO;IACL,KAAK,MAAM4B;IACX,KAAK,WAAK;AACRS,eAAe,OAAO,UAAU,UAAU,MAAM,OAAO,qBAAqB;;;EAKhF;EACA;EACA;EACA;EAEA;EACA,IAAI;EACJ;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM5C;EAEN;EAEA,QAAQ,CAAA;EAER;EAGA;EAcA,cAAc;EAGd,QAAQ;EACR,SAAS,cAAc,MAAM,GAAG,EAC7B,IAAI,OAAK,SAAS,CAAC,CAAC,EACpB,OAAO,CAAC,GAAG,GAAG,MAAM,IAAK,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,CAAE;CAYrD;AAED,MAAM,SAAS,UAAU,MAAM,aAAa,WAAW;ACrOvD,IAAI,OAAO,kBAAkB,eAAe,OAAO,qBAAqB,aAAa;AACnF,eAAa,kCAAkC,kBAAY;AACzD,QAAI,CAAC,oBAAoB;AACvB,UAAI;AACJ,UAAI,YAAY;AACd,gBAAQ,SAAS,YAAY,aAAa;AAC1C,cAAM,gBAAgB,gCAAgC,MAAM,MAAM,YAAY;aACzE;AACL,gBAAQ,IAAI,YAAY,gCAAgC;UACtD,QAAQ;SACT;;AAEH,2BAAqB;AACrB,oBAAc,KAAK;AACnB,2BAAqB;;GAExB;AACD,mBAAiB,gCAAgC,CAAC,EAAC,OAAM,MAAgC;AACvF,QAAI,CAAC,oBAAoB;AACvB,uBAAiB,MAAM;;GAE1B;;SAGa,iBAAiB,aAA6B;AAC5D,MAAI,QAAQ;AACZ,MAAI;AACF,yBAAqB;AACrB,iBAAa,eAAe,KAAK,WAAW;;AAE5C,yBAAqB;;AAEzB;AAEO,IAAI,qBAAqB;AC/BhC,IAAI,OAAO,qBAAqB,aAAa;AAC3C,QAAM,KAAK,IAAI,iBAAiB,8BAA8B;AAU9D,MAAI,OAAQ,GAAW,UAAU,YAAY;AAC1C,OAAW,MAAK;;AAMnB,eAAa,kCAAkC,CAAC,iBAAY;AAC1D,QAAI,CAAC,oBAAoB;AACvB,SAAG,YAAY,YAAY;;GAE9B;AAKD,KAAG,YAAY,CAAC,OAAE;AAChB,QAAI,GAAG;AAAM,uBAAiB,GAAG,IAAI;;WAE9B,OAAO,SAAS,eAAe,OAAO,cAAc,aAAa;AAO1E,eAAa,kCAAkC,CAAC,iBAAY;AAC1D,QAAI;AACF,UAAI,CAAC,oBAAoB;AACvB,YAAI,OAAO,iBAAiB,aAAa;AAEvC,uBAAa,QACX,gCACA,KAAK,UAAU;YACb,MAAM,KAAK,OAAM;YACjB;WACD,CAAC;;AAGN,YAAI,OAAO,KAAK,SAAS,MAAM,UAAU;AAEvC,WAAC,GAAG,KAAK,SAAS,EAAE,SAAS,EAAE,qBAAqB,KAAI,CAAE,CAAC,EAAE,QAC3D,CAAC,WACC,OAAO,YAAY;YACjB,MAAM;YACN;WACD,CAAC;;;aAIV,IAAM;IAAA;GACT;AAKD,MAAI,OAAO,qBAAqB,aAAa;AACzC,qBAAiB,WAAW,CAAC,OAAgB;AAC7C,UAAI,GAAG,QAAQ,gCAAgC;AAC7C,cAAM,OAAO,KAAK,MAAM,GAAG,QAAQ;AACnC,YAAI;AAAM,2BAAiB,KAAK,YAAY;;KAE/C;;AAMH,QAAM,cAAc,KAAK,YAAY,UAAU;AAC/C,MAAI,aAAa;AAEf,gBAAY,iBAAiB,WAAW,uBAAuB;;;AAInE,SAAS,wBAAwB,EAAE,KAAI,GAAgB;AACrD,MAAI,QAAQ,KAAK,SAAS,gCAAgC;AACxD,qBAAiB,KAAK,YAAY;;AAEtC;AChFA,aAAa,kBAAkB;AAG/B4C,SAAeT,OAAa,qBAAqB;;;ACiD1C,SAAS,UAAU,SAAS,YAAY,GAAG,WAAW;AACzD,WAAS,MAAM,OAAO;AAAE,WAAO,iBAAiB,IAAI,QAAQ,IAAI,EAAE,SAAU,SAAS;AAAE,cAAQ,KAAK;IAAE,CAAE;EAAE;AAC1G,SAAO,KAAK,MAAM,IAAI,UAAU,SAAU,SAAS,QAAQ;AACvD,aAAS,UAAU,OAAO;AAAE,UAAI;AAAE,aAAK,UAAU,KAAK,KAAK,CAAC;MAAE,SAAU,GAAG;AAAE,eAAO,CAAC;MAAE;IAAE;AACzF,aAAS,SAAS,OAAO;AAAE,UAAI;AAAE,aAAK,UAAU,OAAO,EAAE,KAAK,CAAC;MAAE,SAAU,GAAG;AAAE,eAAO,CAAC;MAAE;IAAE;AAC5F,aAAS,KAAK,QAAQ;AAAE,aAAO,OAAO,QAAQ,OAAO,KAAK,IAAI,MAAM,OAAO,KAAK,EAAE,KAAK,WAAW,QAAQ;IAAE;AAC5G,UAAM,YAAY,UAAU,MAAM,SAAS,cAAc,CAAA,CAAE,GAAG,KAAI,CAAE;EAC5E,CAAK;AACL;AAEO,SAAS,YAAY,SAAS,MAAM;AACvC,MAAI,IAAI,EAAE,OAAO,GAAG,MAAM,WAAW;AAAE,QAAI,EAAE,CAAC,IAAI,EAAG,OAAM,EAAE,CAAC;AAAG,WAAO,EAAE,CAAC;EAAE,GAAI,MAAM,CAAA,GAAI,KAAK,CAAA,EAAE,GAAI,GAAG,GAAG,GAAG;AAC/G,SAAO,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,KAAK,CAAC,GAAG,UAAU,KAAK,CAAC,EAAC,GAAI,OAAO,WAAW,eAAe,EAAE,OAAO,QAAQ,IAAI,WAAW;AAAE,WAAO;EAAK,IAAK;AACvJ,WAAS,KAAK,GAAG;AAAE,WAAO,SAAU,GAAG;AAAE,aAAO,KAAK,CAAC,GAAG,CAAC,CAAC;IAAE;EAAG;AAChE,WAAS,KAAK,IAAI;AACd,QAAI,EAAG,OAAM,IAAI,UAAU,iCAAiC;AAC5D,WAAO,EAAG,KAAI;AACV,UAAI,IAAI,GAAG,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,OAAO,IAAI,EAAE,QAAQ,MAAM,EAAE,KAAK,CAAC,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,KAAM,QAAO;AAC3J,UAAI,IAAI,GAAG,EAAG,MAAK,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK;AACtC,cAAQ,GAAG,CAAC,GAAC;QACT,KAAK;QAAG,KAAK;AAAG,cAAI;AAAI;QACxB,KAAK;AAAG,YAAE;AAAS,iBAAO,EAAE,OAAO,GAAG,CAAC,GAAG,MAAM,MAAK;QACrD,KAAK;AAAG,YAAE;AAAS,cAAI,GAAG,CAAC;AAAG,eAAK,CAAC,CAAC;AAAG;QACxC,KAAK;AAAG,eAAK,EAAE,IAAI,IAAG;AAAI,YAAE,KAAK,IAAG;AAAI;QACxC;AACI,cAAI,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE,SAAS,KAAK,EAAE,EAAE,SAAS,CAAC,OAAO,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI;AAAE,gBAAI;AAAG;UAAS;AAC1G,cAAI,GAAG,CAAC,MAAM,MAAM,CAAC,KAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,IAAK;AAAE,cAAE,QAAQ,GAAG,CAAC;AAAG;UAAM;AACpF,cAAI,GAAG,CAAC,MAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG;AAAE,cAAE,QAAQ,EAAE,CAAC;AAAG,gBAAI;AAAI;UAAM;AACnE,cAAI,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG;AAAE,cAAE,QAAQ,EAAE,CAAC;AAAG,cAAE,IAAI,KAAK,EAAE;AAAG;UAAM;AACjE,cAAI,EAAE,CAAC,EAAG,GAAE,IAAI,IAAG;AACnB,YAAE,KAAK,IAAG;AAAI;MAClC;AACY,WAAK,KAAK,KAAK,SAAS,CAAC;IACrC,SAAiB,GAAG;AAAE,WAAK,CAAC,GAAG,CAAC;AAAG,UAAI;IAAE,UAAE;AAAW,UAAI,IAAI;IAAE;AACxD,QAAI,GAAG,CAAC,IAAI,EAAG,OAAM,GAAG,CAAC;AAAG,WAAO,EAAE,OAAO,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,QAAQ,MAAM,KAAI;EACtF;AACA;ACtGM,SAAU,gBAAgB,OAA4B;AAC1D,MAAM,oBAAoB,CAAC,MAAM,OAAO,OAAO,EAAE,OAAO,MAAM,OAAO,OAAO;AAC5E,SAAO,kBAAkB,IAAI,SAAA,OAAK;AAAI,WAAA,MAAM;EAAG,CAAA,EAAE,KAAK,GAAG;AAC3D;AAEM,SAAU,gBAAgB,YAAiC;AAC/D,MAAM,SAEF,CAAA;AACJ,WAAoB,KAAA,GAAA,KAAA,WAAW,QAAX,KAAiB,GAAA,QAAjB,MAAmB;AAAlC,QAAM,QAAK,GAAA,EAAA;AACd,WAAO,MAAM,IAAI,IAAI,MAAM;;AAE7B,SAAO;AACT;AAqBgB,SAAA,cAA0C,MAAYU,OAAO;AAC3E,SAAO,IAAI,QAAuB,SAAC,SAAS,QAAM;AAChD,QAAM,SAAS,IAAI,WAAU;AAC7B,WAAO,UAAU,SAAA,IAAE;AAAI,aAAA,OAAO,IAAI,MAAM,mBAAmB,CAAC;IAAC;AAC7D,WAAO,UAAU,SAAA,IAAE;AAAI,aAAA,OAAQ,GAAG,OAAe,KAAK;IAAC;AACvD,WAAO,SAAS,SAAA,IAAE;AAAI,aAAA,QAAS,GAAG,OAAe,MAAM;IAAC;AACxD,QAAIA,UAAS;AACX,aAAO,kBAAkB,IAAI;;AAE7B,aAAO,WAAW,IAAI;EAC1B,CAAC;AACH;AAEgB,SAAA,aAAyC,MAAYA,OAAO;AAC1E,MAAI,OAAO,mBAAmB,aAAa;AACzC,UAAM,IAAI,MAAM,+JAA+J;;AAEjL,MAAM,SAAS,IAAI,eAAc;AACjC,MAAM,OAAOA,UAAS,WACpB,OAAO,kBAAkB,IAAI,IAC7B,OAAO,WAAW,IAAI;AAExB,SAAO;AACT;;;;;;AC5DA,GAAC,SAAUC,SAAQ,SAAS;AACqC,WAAA,UAAiB,QAAO;EAGzF,GAAEC,gBAAO,WAAY;AAEnB,aAAS,QAAQ,KAAK;AACpB,UAAI,OAAO,WAAW,cAAc,OAAO,OAAO,aAAa,UAAU;AACvE,kBAAU,SAAUC,MAAK;AACvB,iBAAO,OAAOA;QACtB;MACA,OAAW;AACL,kBAAU,SAAUA,MAAK;AACvB,iBAAOA,QAAO,OAAO,WAAW,cAAcA,KAAI,gBAAgB,UAAUA,SAAQ,OAAO,YAAY,WAAW,OAAOA;QACjI;MACA;AAEI,aAAO,QAAQ,GAAG;IACtB;AAEE,aAAS,mBAAmB,KAAK,SAAS,QAAQ,OAAO,QAAQ,KAAK,KAAK;AACzE,UAAI;AACF,YAAI,OAAO,IAAI,GAAG,EAAE,GAAG;AACvB,YAAI,QAAQ,KAAK;MACvB,SAAa,OAAO;AACd,eAAO,KAAK;AACZ;MACN;AAEI,UAAI,KAAK,MAAM;AACb,gBAAQ,KAAK;MACnB,OAAW;AACL,gBAAQ,QAAQ,KAAK,EAAE,KAAK,OAAO,MAAM;MAC/C;IACA;AAEE,aAAS,kBAAkB,IAAI;AAC7B,aAAO,WAAY;AACjB,YAAIC,QAAO,MACP,OAAO;AACX,eAAO,IAAI,QAAQ,SAAU,SAAS,QAAQ;AAC5C,cAAI,MAAM,GAAG,MAAMA,OAAM,IAAI;AAE7B,mBAAS,MAAM,OAAO;AACpB,+BAAmB,KAAK,SAAS,QAAQ,OAAO,QAAQ,QAAQ,KAAK;UAC/E;AAEQ,mBAAS,OAAO,KAAK;AACnB,+BAAmB,KAAK,SAAS,QAAQ,OAAO,QAAQ,SAAS,GAAG;UAC9E;AAEQ,gBAAM,MAAS;QACvB,CAAO;MACP;IACA;AAEE,aAAS,gBAAgB,UAAU,aAAa;AAC9C,UAAI,EAAE,oBAAoB,cAAc;AACtC,cAAM,IAAI,UAAU,mCAAmC;MAC7D;IACA;AAEE,aAAS,kBAAkB,QAAQC,QAAO;AACxC,eAAS,IAAI,GAAG,IAAIA,OAAM,QAAQ,KAAK;AACrC,YAAI,aAAaA,OAAM,CAAC;AACxB,mBAAW,aAAa,WAAW,cAAc;AACjD,mBAAW,eAAe;AAC1B,YAAI,WAAW,WAAY,YAAW,WAAW;AACjD,eAAO,eAAe,QAAQ,WAAW,KAAK,UAAU;MAC9D;IACA;AAEE,aAAS,aAAa,aAAa,YAAY,aAAa;AAC1D,UAAI,WAAY,mBAAkB,YAAY,WAAW,UAAU;AACnE,UAAI,YAAa,mBAAkB,aAAa,WAAW;AAC3D,aAAO;IACX;AAEE,aAAS,gBAAgB,KAAK,KAAK,OAAO;AACxC,UAAI,OAAO,KAAK;AACd,eAAO,eAAe,KAAK,KAAK;UAC9B;UACA,YAAY;UACZ,cAAc;UACd,UAAU;QAClB,CAAO;MACP,OAAW;AACL,YAAI,GAAG,IAAI;MACjB;AAEI,aAAO;IACX;AAEE,aAAS,QAAQ,QAAQ,gBAAgB;AACvC,UAAIC,QAAO,OAAO,KAAK,MAAM;AAE7B,UAAI,OAAO,uBAAuB;AAChC,YAAI,UAAU,OAAO,sBAAsB,MAAM;AACjD,YAAI,eAAgB,WAAU,QAAQ,OAAO,SAAU,KAAK;AAC1D,iBAAO,OAAO,yBAAyB,QAAQ,GAAG,EAAE;QAC5D,CAAO;AACD,QAAAA,MAAK,KAAK,MAAMA,OAAM,OAAO;MACnC;AAEI,aAAOA;IACX;AAEE,aAAS,eAAe,QAAQ;AAC9B,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,YAAI,SAAS,UAAU,CAAC,KAAK,OAAO,UAAU,CAAC,IAAI,CAAA;AAEnD,YAAI,IAAI,GAAG;AACT,kBAAQ,OAAO,MAAM,GAAG,IAAI,EAAE,QAAQ,SAAU,KAAK;AACnD,4BAAgB,QAAQ,KAAK,OAAO,GAAG,CAAC;UAClD,CAAS;QACT,WAAiB,OAAO,2BAA2B;AAC3C,iBAAO,iBAAiB,QAAQ,OAAO,0BAA0B,MAAM,CAAC;QAChF,OAAa;AACL,kBAAQ,OAAO,MAAM,CAAC,EAAE,QAAQ,SAAU,KAAK;AAC7C,mBAAO,eAAe,QAAQ,KAAK,OAAO,yBAAyB,QAAQ,GAAG,CAAC;UACzF,CAAS;QACT;MACA;AAEI,aAAO;IACX;AAEE,aAAS,eAAe,KAAK,GAAG;AAC9B,aAAO,gBAAgB,GAAG,KAAK,sBAAsB,KAAK,CAAC,KAAK,iBAAgB;IACpF;AAEE,aAAS,mBAAmB,KAAK;AAC/B,aAAO,mBAAmB,GAAG,KAAK,iBAAiB,GAAG,KAAK,mBAAkB;IACjF;AAEE,aAAS,mBAAmB,KAAK;AAC/B,UAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,iBAAS,IAAI,GAAG,OAAO,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,IAAI,QAAQ,IAAK,MAAK,CAAC,IAAI,IAAI,CAAC;AAElF,eAAO;MACb;IACA;AAEE,aAAS,gBAAgB,KAAK;AAC5B,UAAI,MAAM,QAAQ,GAAG,EAAG,QAAO;IACnC;AAEE,aAAS,iBAAiBC,OAAM;AAC9B,UAAI,OAAO,YAAY,OAAOA,KAAI,KAAK,OAAO,UAAU,SAAS,KAAKA,KAAI,MAAM,qBAAsB,QAAO,MAAM,KAAKA,KAAI;IAChI;AAEE,aAAS,sBAAsB,KAAK,GAAG;AACrC,UAAI,EAAE,OAAO,YAAY,OAAO,GAAG,KAAK,OAAO,UAAU,SAAS,KAAK,GAAG,MAAM,uBAAuB;AACrG;MACN;AAEI,UAAI,OAAO,CAAA;AACX,UAAI,KAAK;AACT,UAAI,KAAK;AACT,UAAI,KAAK;AAET,UAAI;AACF,iBAAS,KAAK,IAAI,OAAO,QAAQ,EAAC,GAAI,IAAI,EAAE,MAAM,KAAK,GAAG,KAAI,GAAI,OAAO,KAAK,MAAM;AAClF,eAAK,KAAK,GAAG,KAAK;AAElB,cAAI,KAAK,KAAK,WAAW,EAAG;QACpC;MACA,SAAa,KAAK;AACZ,aAAK;AACL,aAAK;MACX,UAAK;AACC,YAAI;AACF,cAAI,CAAC,MAAM,GAAG,QAAQ,KAAK,KAAM,IAAG,QAAQ,EAAC;QACrD,UAAO;AACC,cAAI,GAAI,OAAM;QACtB;MACA;AAEI,aAAO;IACX;AAEE,aAAS,qBAAqB;AAC5B,YAAM,IAAI,UAAU,iDAAiD;IACzE;AAEE,aAAS,mBAAmB;AAC1B,YAAM,IAAI,UAAU,sDAAsD;IAC9E;AAYE,QAAI,iBAAiB,SAASC,gBAAe,GAAG;AAC9C,sBAAgB,MAAMA,eAAc;AAEpC,WAAK,IAAI,IAAI,QAAQ,CAAC;IAC1B;AAIE,mBAAe,oBAAoB;AAInC,QAAI,OAAO,WAAW,aAAa;AAEjC,qBAAe,UAAU,OAAO,WAAW,IAAI;IACnD;AASE,mBAAe,UAAU,OAAO,SAAU,aAAa,YAAY;AACjE,UAAI,QAAQ;AAEZ,aAAO,IAAI,eAAe,SAAU,gBAAgB,eAAe;AAEjE,cAAM,EAAE,KAAK,SAAU,KAAK;AAE1B,yBAAe,cAAc,YAAY,GAAG,IAAI,GAAG;QAC3D,CAAO,EAAE,OAAO,EAAE,SAAU,KAAK;AACzB,iBAAO,aAAa,WAAW,GAAG,IAAI,QAAQ,OAAO,GAAG;QAChE,CAAO,EAAE,KAAK,gBAAgB,aAAa;MAC3C,CAAK;IACL;AAQE,mBAAe,UAAU,OAAO,IAAI,SAAU,YAAY;AACxD,aAAO,KAAK,KAAK,MAAM,UAAU;IACrC;AAQE,mBAAe,UAAU,SAAU,GAAG;AACpC,aAAO,IAAI,eAAe,SAAU,gBAAgB;AAClD,uBAAe,CAAC;MACtB,CAAK;IACL;AAQE,mBAAe,SAAS,SAAU,GAAG;AACnC,aAAO,IAAI,eAAe,SAAU,gBAAgB,eAAe;AACjE,sBAAc,CAAC;MACrB,CAAK;IACL;AAEE,KAAC,OAAO,MAAM,EAAE,QAAQ,SAAU,MAAM;AAMtC,qBAAe,IAAI,IAAI,SAAU,SAAS;AACxC,eAAO,IAAI,eAAe,SAAU,gBAAgB,eAAe;AAEjE,kBAAQ,IAAI,EAAE,QAAQ,IAAI,SAAU,MAAM;AACxC,mBAAO,QAAQ,KAAK,eAAe,KAAK,YAAY,sBAAsB,mBAAmB,KAAK,IAAI;UAChH,CAAS,CAAC,EAAE,KAAK,gBAAgB,aAAa;QAC9C,CAAO;MACP;IACA,CAAG;AAED,QAAI,OAAO,CAAA,GACP,QAAQ,KAAK,UACbC,UAAS,CAAA,EAAG,gBACZC,YAAW,OAAO,gBAClB,aAAaD,QAAO;AAQxB,aAAS,WAAW,GAAG,YAAY;AACjC,aAAO,SAAS,CAAC,KAAK,OAAO,EAAE,SAAS,eAAe,CAAC,cAAc,OAAO,EAAE,OAAO,MAAM;IAChG;AAQE,aAASE,aAAY,KAAK;AACxB,aAAO,MAAM,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE;IACtC;AAUE,aAAS,iBAAiB,GAAG,GAAG;AAC9B,UAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,UAAU;AACjC,eAAO;MACb;AAEI,UAAI,QAAQD,UAAS,CAAC;AAEtB,UAAI,CAAC,OAAO;AACV,eAAO,MAAM;MACnB;AAEI,UAAI,OAAOD,QAAO,KAAK,OAAO,aAAa,KAAK,MAAM;AAEtD,UAAI,OAAO,SAAS,YAAY;AAC9B,eAAO,MAAM;MACnB;AAEI,UAAI,MAAM,MAAM;AACd,eAAO;MACb;AAEI,UAAI,MAAM,QAAQ,WAAW,KAAK,IAAI,MAAM,WAAW,KAAK,CAAC,GAAG;AAC9D,eAAO;MACb;AAEI,UAAI,OAAO,MAAM,cAAc,OAAO,KAAK,sBAAsB,YAAY,KAAK,sBAAsB,EAAE,mBAAmB;AAC3H,eAAO;MACb;AAEI,aAAO;IACX;AAQE,aAAS,cAAc,KAAK;AAE1B,UAAI,CAAC,OAAOE,aAAY,GAAG,MAAM,UAAU;AACzC,eAAO;MACb;AAEI,UAAI,QAAQD,UAAS,GAAG;AAExB,UAAI,CAAC,OAAO;AAEV,eAAO;MACb;AAEI,aAAO,iBAAiB,KAAK,MAAM;IACvC;AAQE,aAAS,aAAa,KAAK;AACzB,UAAI,CAAC,OAAOC,aAAY,GAAG,MAAM,UAAU;AACzC,eAAO;MACb;AAEI,UAAI,QAAQD,UAAS,GAAG;AAExB,UAAI,CAAC,OAAO;AAEV,eAAO;MACb;AAEI,aAAO,iBAAiB,KAAK,MAAM,KAAK,aAAa,KAAK;IAC9D;AAQE,aAAS,SAAS,GAAG;AACnB,aAAO,KAAK,QAAQ,CAAC,MAAM;IAC/B;AAQE,aAAS,uBAAuB,kBAAkB;AAChD,aAAO,iBAAiB,QAAQ,MAAM,IAAI,EAAE,QAAQ,OAAO,IAAI;IACnE;AAQE,aAAS,yBAAyB,kBAAkB;AAClD,aAAO,iBAAiB,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,GAAG;IAClE;AAQE,aAASE,cAAa,KAAK,SAAS;AAClC,UAAI,YAAY,IAAI;AAClB,eAAO;MACb;AAEI,UAAI,SAAS,QAAQ,QAAQ,GAAG;AAEhC,UAAI,SAAS,IAAI;AACf,YAAI,WAAW,IAAI,yBAAyB,QAAQ,MAAM,GAAG,MAAM,CAAC,CAAC;AACrE,eAAO,aAAa,SAAY,SAAYA,cAAa,UAAU,QAAQ,MAAM,SAAS,CAAC,CAAC;MAClG;AAEI,aAAO,IAAI,yBAAyB,OAAO,CAAC;IAChD;AAUE,aAAS,aAAa,KAAK,SAAS,OAAO;AACzC,UAAI,YAAY,IAAI;AAClB,eAAO;MACb;AAEI,UAAI,SAAS,QAAQ,QAAQ,GAAG;AAEhC,UAAI,SAAS,IAAI;AACf,YAAI,WAAW,IAAI,yBAAyB,QAAQ,MAAM,GAAG,MAAM,CAAC,CAAC;AACrE,eAAO,aAAa,UAAU,QAAQ,MAAM,SAAS,CAAC,GAAG,KAAK;MACpE;AAEI,UAAI,yBAAyB,OAAO,CAAC,IAAI;AACzC,aAAO;IACX;AASE,aAAS,YAAY,OAAO;AAC1B,aAAO,UAAU,OAAO,SAAS,MAAM,QAAQ,KAAK,IAAI,UAAU,QAAQ,KAAK;IACnF;AAEE,QAAIN,QAAO,OAAO,MACdO,WAAU,MAAM,SAChB,WAAW,CAAA,EAAG,gBACd,gCAAgC,CAAC,QAAQ,YAAY,aAAa,qBAAqB;AAU3F,aAAS,iBAAiB,GAAG,GAAG;AAC9B,UAAI,EAAE,YAAY,IAAI;AACpB,eAAO;MACb;AAEI,UAAI,KAAK,EAAE,QAAQ,MAAM,KAAK,KAAK;AACnC,UAAI,KAAK,EAAE,QAAQ,MAAM,KAAK,KAAK;AAEnC,UAAI,IAAI;AACN,aAAK,GAAG;MACd;AAEI,UAAI,IAAI;AACN,aAAK,GAAG;MACd;AAEI,aAAO,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,UAAU,EAAE,UAAU,KAAK,EAAE,UAAU,EAAE;IACnF;AAYE,QAAI,UAEJ,2BAAY;AACV,eAASC,SAAQ,SAAS;AACxB,wBAAgB,MAAMA,QAAO;AAE7B,aAAK,UAAU;AAGf,aAAK,uBAAuB,CAAA;AAC5B,aAAK,0BAA0B,CAAA;AAG/B,aAAK,WAAW,CAAA;AAGhB,aAAK,QAAQ,CAAA;MACnB;AAyBI,mBAAaA,UAAS,CAAC;QACrB,KAAK;QACL,OAAO,SAAS,UAAU,KAAK,UAAU,OAAO,MAAM;AACpD,iBAAO,eAAe,CAAA,GAAI,KAAK,SAAS,CAAA,GAAI,MAAM;YAChD,iBAAiB;UAC3B,CAAS;AACD,cAAI,eAAe,KAAK,YAAY,KAAK,MAAM,IAAI;AAEnD,cAAID,SAAQ,YAAY,GAAG;AACzB,mBAAO,KAAK,UAAU,aAAa,CAAC,GAAG,UAAU,KAAK;UAChE;AAEQ,iBAAO,aAAa,KAAK,SAAU,KAAK;AACtC,mBAAO,KAAK,UAAU,KAAK,UAAU,KAAK;UACpD,CAAS;QACT;;;;;;;;;MAUA,GAAO;QACD,KAAK;QACL,OAAO,SAAS,cAAc,KAAK,UAAU,OAAO,MAAM;AACxD,iBAAO,KAAK,UAAU,KAAK,UAAU,OAAO,eAAe;YACzD,oBAAoB;UAC9B,GAAW,MAAM;YACP,MAAM;UAChB,CAAS,CAAC;QACV;;;;;;;;;MAUA,GAAO;QACD,KAAK;QACL,OAAO,SAAS,eAAe,KAAK,UAAU,OAAO,MAAM;AACzD,iBAAO,KAAK,UAAU,KAAK,UAAU,OAAO,eAAe;YACzD,oBAAoB;UAC9B,GAAW,MAAM;YACP,MAAM;UAChB,CAAS,CAAC;QACV;;;;;;;;;;MAWA,GAAO;QACD,KAAK;QACL,OAAO,SAAS,MAAM,MAAM,SAAS,MAAM;AACzC,iBAAO,eAAe,CAAA,GAAI,KAAK,SAAS,CAAA,GAAI,MAAM;YAChD,OAAO;UACjB,CAAS;AACD,iBAAO,KAAK,OAAO,KAAK,MAAM,MAAM,OAAO,GAAG,IAAI;QAC1D;;;;;;;;;MAUA,GAAO;QACD,KAAK;QACL,OAAO,SAAS,UAAU,MAAM,SAAS,MAAM;AAC7C,iBAAO,KAAK,MAAM,MAAM,SAAS,eAAe;YAC9C,oBAAoB;UAC9B,GAAW,MAAM;YACP,MAAM;UAChB,CAAS,CAAC;QACV;;;;;;;;MASA,GAAO;QACD,KAAK;QACL,OAAO,SAAS,WAAW,MAAM,SAAS,MAAM;AAC9C,iBAAO,KAAK,MAAM,MAAM,SAAS,eAAe;YAC9C,oBAAoB;UAC9B,GAAW,MAAM;YACP,MAAM;UAChB,CAAS,CAAC;QACV;;;;;;;;MASA,GAAO;QACD,KAAK;QACL,OAAO,SAAS,iBAAiB,KAAK,UAAU;AAC9C,cAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAC/E,eAAK,kBAAkB;AACvB,iBAAO,KAAK,YAAY,KAAK,UAAU,IAAI;QACnD;;;;;;;;MASA,GAAO;QACD,KAAK;QACL,OAAO,SAAS,aAAa,KAAK,UAAU;AAC1C,cAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAC/E,eAAK,cAAc;AACnB,iBAAO,KAAK,YAAY,KAAK,UAAU,IAAI;QACnD;;;;;;;;;;;MAYA,GAAO;QACD,KAAK;QACL,OAAO,SAAS,YAAY,KAAK,UAAU,MAAM;AAC/C,iBAAO,eAAe;YACpB,MAAM;UAChB,GAAW,KAAK,SAAS,CAAA,GAAI,IAAI;AACzB,cAAI,QAAQ,MACR,OAAO,MAAM;AACjB,cAAI,OAAO,MACP,QAAQ,CAAA,GACR,UAAU,CAAA,GAEd,UAAU,CAAA,GAEV,mBAAmB,CAAA;AAGnB,cAAI,SAAS,YAAY,OAAO,KAAK,SAAS;AAC9C,cAAI,SAAS,MACT,sBAAsB,OAAO;AAEjC,cAAI,MAAM,aAAa,IAAI,KAAK,QAAQ,YAAY,CAAA,GAAI,gBAAgB;AAQxE,mBAAS,OAAOE,MAAK;AAGnB,gBAAI,YAAY,OAAO,OAAO,KAAK;AAEnC,gBAAI,KAAK,aAAa;AACpB,kBAAI,UAAU,QAAQ;AACpB,uBAAO,UAAU,CAAC;cAChC;AAEY,qBAAOD,SAAQ,YAAYC,IAAG;YAC1C;AAEU,gBAAI,UAAU,QAAQ;AACpB,kBAAI,KAAK,iBAAiB;AACxB,uBAAO,mBAAmB,IAAI,IAAI,SAAS,CAAC;cAC1D;AAIY,kBAAI,CAACA,QAAO,CAAC,cAAcA,IAAG;;cAE9B,SAAS,KAAKA,MAAK,QAAQ,GAAG;AAC5B,gBAAAA,OAAM;kBACJ,GAAGA;kBACH,QAAQ;oBACN,GAAG;kBACrB;gBACA;cACA,OAAmB;AACL,gBAAAA,KAAI,SAAS;cAC3B;YAEA,WAAqB,SAASA,IAAG,KAAK,SAAS,KAAKA,MAAK,QAAQ,GAAG;AACxD,cAAAA,OAAM;gBACJ,GAAGA;gBACH,QAAQ;cACtB;YACA;AAEU,gBAAI,KAAK,iBAAiB;AACxB,qBAAO;YACnB;AAEU,mBAAOA;UACjB;AASQ,mBAAS,cAAc,IAAI,KAAK;AAC9B,mBAAO,eAAe,MAAM,MAAM,SAAS;UACrD;AAUQ,mBAAS,iBAAiB;AACxB,6BAAiB;cAEjB,mCAAmB,KAAK,SAAS,SAASA,MAAK,cAAc;AAC3D,oBAAI;AACJ,uBAAO,mBAAmB,KAAK,SAAS,UAAU,WAAW;AAC3D,yBAAO,GAAG;AACR,4BAAQ,UAAU,OAAO,UAAU,MAAI;sBACrC,KAAK;AACH,kCAAU,OAAO;AACjB,+BAAO,QAAQ,IAAI,aAAa,IAAI,SAAU,IAAI;AAChD,iCAAO,GAAG,CAAC,EAAE;wBACnC,CAAqB,CAAC;sBAEJ,KAAK;AACH,sCAAc,UAAU;AACxB,kCAAU,OAAO;AACjB,+BAAO,QAAQ,IAAI,YAAY;0BAE/B,2BAAY;AACV,gCAAIC,QAAO;8BAEX,mCAAmB,KAAK,SAAS,QAAQ,YAAY;AACnD,oCAAI,iBAAiB,sBAAsB,uBAAuB,QAAQ,SAAS,SAASC,SAAQC,WAAU,WAAW,KAAK,cAAc,QAAQ,kBAAkB;AAEtK,uCAAO,mBAAmB,KAAK,SAAS,SAAS,UAAU;AACzD,yCAAO,GAAG;AACR,4CAAQ,SAAS,OAAO,SAAS,MAAI;sCACnC,KAAK;AACH,0DAAkB,CAAA;AAClB,+DAAuB,aAAa,OAAO,GAAG,CAAC,GAAG,wBAAwB,eAAe,sBAAsB,CAAC,GAAG,SAAS,sBAAsB,CAAC;AACnJ,kDAAU,eAAe,QAAQ,CAAC,GAAG,UAAU,QAAQ,CAAC,GAAGD,UAAS,QAAQ,CAAC,GAAGC,YAAW,QAAQ,CAAC,GAAG,YAAY,QAAQ,CAAC,GAAG,MAAM,QAAQ,CAAC,GAAG,eAAe,QAAQ,CAAC;AACzK,iDAAS,aAAa,SAAS,YAAYD,SAAQC,WAAU,iBAAiB,MAAM,YAAY;AAChG,2DAAmB,iBAAiB,QAAQ,cAAc;AAG1D,4CAAI,EAAE,WAAW,mBAAmB;AAClC,mDAAS,OAAO;AAChB;wCAClC;AAEgC,iDAAS,OAAO;AAChB,+CAAO,OAAO;sCAEhB,KAAK;AACH,kDAAU,SAAS;AACnB,kDAAU,GAAG,IAAI;AACjB,+CAAO,SAAS,OAAO,UAAU,cAAcH,MAAK,eAAe,CAAC;sCAEtE,KAAK;AACH,4CAAI,SAAS;AACX,oDAAU,GAAG,IAAI;wCACnD,WAA2C,kBAAkB;AAC3B,0CAAAA,OAAM,OAAO;wCAC/C,OAAuC;AAQL,0CAAAA,OAAM;wCACxC;AAEgC,+CAAO,SAAS,OAAO,UAAU,cAAcA,MAAK,eAAe,CAAC;sCAEtE,KAAK;sCACL,KAAK;AACH,+CAAO,SAAS,KAAI;oCACpD;kCACA;gCACA,GAA2B,OAAO;8BAClC,CAAuB;4BAAC;AAEF,mCAAO,SAAU,KAAK;AACpB,qCAAOC,MAAK,MAAM,MAAM,SAAS;4BACzD;0BACA,EAAqB;wBAAE,CAAC;sBAEN,KAAK;AACH,+BAAO,UAAU,OAAO,UAAUD,IAAG;sBAEvC,KAAK;sBACL,KAAK;AACH,+BAAO,UAAU,KAAI;oBACzC;kBACA;gBACA,GAAe,QAAQ;cACvB,CAAW;YAAC;AACF,mBAAO,eAAe,MAAM,MAAM,SAAS;UACrD;AAEQ,mBAAS,mCAAmCG,WAAU,YAAY,IAAI;AACpE,mBAAO,OAAOA,WAAU,UAAU;AAClC,gBAAI,OAAO,8BAA8B,IAAI,SAAU,MAAM;AAC3D,kBAAI,MAAMA,UAAS,IAAI;AACvB,qBAAOA,UAAS,IAAI;AACpB,qBAAO;YACnB,CAAW;AAED,eAAE;AACF,0CAA8B,QAAQ,SAAU,MAAM,GAAG;AACvD,cAAAA,UAAS,IAAI,IAAI,KAAK,CAAC;YACnC,CAAW;UACX;AAcQ,mBAAS,aAAa,SAAS,OAAOD,SAAQC,WAAU,cAAc,yBAAyB,cAAc;AAC3G,gBAAIH;AACJ,gBAAI,eAAe,CAAA;AAEnB,gBAAI,UAAU,QAAQ,KAAK;AAE3B,gBAAI,cAAc,sBAAsB,SAAUZ,MAAK;AACrD,kBAAIH,QAAO,gBAAgBkB,UAAS,QAAQJ,SAAQ,YAAY,KAAK;AACrE,kCAAoB,OAAO,OAAOX,QAAO,cAAc;gBACrD;gBACA;gBACA,QAAQc;gBACR,UAAUC;gBACV;gBACA;gBACA,wBAAwB,iBAAiB,OAAO,cAAc;cAC5E,GAAe;gBACD,MAAMlB;cACpB,CAAa,CAAC;YACd,IAAc;AAEJ,gBAAI,CAAC,UAAU,WAAW,UAAU,WAAW,EAAE,SAAS,OAAO,GAAG;AAClE,kBAAI,UAAU,UAAa,YAAY,aAAa,MAAM,KAAK,KAAK,UAAU,aAAa,UAAU,WAAW;AAC9G,oBAAIkB,UAAS,UAAU;AACrB,kBAAAH,OAAM;gBACtB,OAAqB;AACL,kBAAAA,OAAM,QAAQ,SAAS,OAAOG,WAAU,cAAc,OAAO,yBAAyB,WAAW;gBACjH;AAEc,oBAAIH,SAAQ,OAAO;AACjB,iCAAe;oBACb,UAAUA;kBAC5B;gBACA;cACA,OAAmB;AACL,gBAAAA,OAAM;cACpB;AAEY,kBAAI,aAAa;AACf,4BAAW;cACzB;AAEY,qBAAOA;YACnB;AAEU,gBAAI,UAAU,MAAM;AAClB,kBAAI,aAAa;AACf,4BAAW;cACzB;AAEY,qBAAO;YACnB;AAEU,gBAAIE,WAAU,CAACC,UAAS,aAAa,CAACA,UAAS,uBAAuB,SAAS,QAAQ,KAAK,MAAM,UAAU;AAG1G,kBAAI,WAAW,QAAQ,QAAQ,KAAK;AAEpC,kBAAI,WAAW,GAAG;AAChB,oBAAID,YAAW,MAAM;AACnB,0BAAQ,KAAK,KAAK;AAClB,0BAAQ,KAAK,OAAO;gBACpC;cACA,OAAmB;AACL,sBAAM,OAAO,IAAI;AAEjB,oBAAI,aAAa;AACf,8BAAY;oBACV,eAAe,QAAQ,QAAQ;kBACjD,CAAiB;gBACjB;AAEc,uBAAO,MAAM,QAAQ,QAAQ;cAC3C;YACA;AAEU,gBAAI,aAAa,cAAc,KAAK;AACpC,gBAAI,QAAQJ,SAAQ,KAAK;AACzB,gBAAI;;;eAEH,cAAc,WAAW,CAAC,KAAK,qBAAqB,UAAUK,UAAS,aAAaA,UAAS;;;gBAE9F;kBAAQ,QAAQ,SAAS,OAAOA,WAAU,cAAc,cAAc,OAAO,MAAM,WAAW;;AAC9F,gBAAI;AAEJ,gBAAI,aAAa,OAAO;AACtB,cAAAH,OAAM;AACN,6BAAe;gBACb;cACd;YACA,OAAiB;AAEL,kBAAI,YAAY,MAAM,iBAAiB,OAAO,cAAc,GAAG;AAC7D,6BAAa,KAAK,CAAC,SAAS,OAAOE,SAAQC,WAAU,QAAW,QAAWA,UAAS,IAAI,CAAC;AACzF,gBAAAH,OAAM;cACpB,WAAuB,SAASG,UAAS,cAAc,YAAYA,UAAS,cAAc,SAAS;AACrF,wBAAQ,IAAI,MAAM,MAAM,MAAM;AAC9B,+BAAe;kBACb;gBAChB;cACA,WAAuB,CAAC,CAAC,YAAY,QAAQ,EAAE,SAAS,QAAQ,KAAK,CAAC,KAAK,EAAE,YAAY,UAAU,CAAC,iBAAiB,OAAO,cAAc,KAAK,CAAC,iBAAiB,OAAO,OAAO,KAAK,CAAC,iBAAiB,OAAO,WAAW,KAAK,cAAcA,UAAS,cAAc,UAAU;AAC9P,wBAAQ,CAAA;AAER,oBAAIA,UAAS,WAAW;AACtB,wBAAM,SAAS,MAAM;gBACrC;AAEc,+BAAe;kBACb;gBAChB;cACA,OAAmB;AACL,gBAAAH,OAAM;cACpB;YACA;AAEU,gBAAI,aAAa;AACf,0BAAW;YACvB;AAEU,gBAAI,KAAK,aAAa;AACpB,qBAAO,SAASA;YAC5B;AAEU,gBAAI,CAAC,OAAO;AACV,qBAAOA;YACnB;AAGU,gBAAIG,UAAS,WAAW;AACtB,kBAAI,QAAQ,SAASC,OAAMC,MAAK;AAC9B,oBAAI,aAAa;kBACf,SAAS,SAAS,KAAK,OAAOA,IAAG;gBACjD;AAEc,mDAAmCF,WAAU,YAAY,WAAY;AACnE,sBAAI,KAAK,WAAW,UAAU,MAAM,MAAM,uBAAuBE,IAAG;AAEpE,sBAAI,MAAM,aAAa,IAAI,MAAMA,IAAG,GAAG,QAAQH,OAAM,GAAGC,WAAU,cAAc,uBAAuB;AAEvG,sBAAI,iBAAiB,KAAK,cAAc,GAAG;AACzC,iCAAa,KAAK,CAAC,IAAI,KAAK,QAAQD,OAAM,GAAGC,WAAU,OAAOE,MAAKF,UAAS,IAAI,CAAC;kBACnG,WAA2B,QAAQ,QAAW;AAC5B,0BAAME,IAAG,IAAI;kBAC/B;gBACA,CAAe;cACf;AAGY,uBAAS,OAAO,OAAO;AACrB,sBAAM,GAAG;cACvB;AAEY,kBAAI,aAAa;AACf,4BAAY;kBACV,cAAc;kBACd,KAAK;gBACrB,CAAe;cACf;YACA,OAAiB;AAKL,cAAAd,MAAK,KAAK,EAAE,QAAQ,SAAUc,MAAK;AACjC,oBAAI,KAAK,WAAW,UAAU,MAAM,MAAM,uBAAuBA,IAAG;AACpE,oBAAI,aAAa;kBACf,SAAS;gBACzB;AAEc,mDAAmCF,WAAU,YAAY,WAAY;AACnE,sBAAI,MAAM,aAAa,IAAI,MAAME,IAAG,GAAG,QAAQH,OAAM,GAAGC,WAAU,cAAc,uBAAuB;AAEvG,sBAAI,iBAAiB,KAAK,cAAc,GAAG;AACzC,iCAAa,KAAK,CAAC,IAAI,KAAK,QAAQD,OAAM,GAAGC,WAAU,OAAOE,MAAKF,UAAS,IAAI,CAAC;kBACnG,WAA2B,QAAQ,QAAW;AAC5B,0BAAME,IAAG,IAAI;kBAC/B;gBACA,CAAe;cACf,CAAa;AAED,kBAAI,aAAa;AACf,4BAAY;kBACV,eAAe;kBACf,KAAK;gBACrB,CAAe;cACf;YACA;AAKU,gBAAIF,UAAS,qBAAqB;AAChC,kBAAI,KAAK,MAAM;AAEf,kBAAI,SAAS,SAASG,QAAOC,IAAG;AAC9B,oBAAI,EAAEA,MAAK,QAAQ;AAEjB,sBAAI,KAAK,WAAW,UAAU,MAAM,MAAMA;AAC1C,sBAAI,aAAa;oBACf,SAAS;kBAC3B;AAEgB,qDAAmCJ,WAAU,YAAY,WAAY;AACnE,wBAAI,MAAM,aAAa,IAAI,QAAW,QAAQD,OAAM,GAAGC,WAAU,cAAc,uBAAuB;AAEtG,wBAAI,iBAAiB,KAAK,cAAc,GAAG;AACzC,mCAAa,KAAK,CAAC,IAAI,KAAK,QAAQD,OAAM,GAAGC,WAAU,OAAOI,IAAGJ,UAAS,IAAI,CAAC;oBACnG,WAA6B,QAAQ,QAAW;AAC5B,4BAAMI,EAAC,IAAI;oBAC/B;kBACA,CAAiB;gBACjB;cACA;AAEY,uBAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,uBAAO,CAAC;cACtB;AAEY,kBAAI,aAAa;AACf,4BAAY;kBACV,wBAAwB;kBACxB,KAAK;gBACrB,CAAe;cACf;YACA;AAEU,mBAAO;UACjB;AAcQ,mBAAS,QAAQ,SAAS,OAAOJ,WAAU,cAAc,aAAa,yBAAyB,aAAa;AAE1G,gBAAI,YAAY,cAAc,KAAK,uBAAuB,KAAK;AAC/D,gBAAI,IAAI,UAAU;AAElB,mBAAO,KAAK;AACV,kBAAI,WAAW,UAAU,CAAC;AAE1B,kBAAI,SAAS,KAAK,OAAOA,SAAQ,GAAG;AAClC,oBAAIlB,QAAO,SAAS;AAEpB,oBAAI,KAAK,SAASA,KAAI,GAAG;AAOvB,sBAAI,WAAW,MAAM,OAAO;AAG5B,wBAAM,OAAO,IAAI,WAAW,CAACA,KAAI,EAAE,OAAO,QAAQ,IAAIA;gBACtE;AAEc,uBAAO,OAAOkB,WAAU;kBACtB,MAAMlB;kBACN,UAAU;gBAC1B,CAAe;AAED,qBAAK,QAAQ,CAAC,SAAS,iBAAiB,CAAC,SAAS,SAAS;AACzD,sBAAI,aAAa;AACf,gCAAY;sBACV,cAAc;oBAClC,CAAmB;kBACnB;AAEgB,yBAAO,aAAa,SAAS,OAAO,UAAU,YAAYkB,WAAU,cAAc,yBAAyBlB,KAAI;gBAC/H;AAEc,oBAAI,aAAa;AACf,8BAAY;oBACV,WAAW;kBAC7B,CAAiB;gBACjB;AAIc,oBAAI,gBAAgB,QAAQ,CAAC,SAAS,eAAe,YAAY;AACjE,uBAAO,aAAa,SAAS,SAAS,aAAa,EAAE,OAAOkB,SAAQ,GAAG,UAAU,YAAYA,WAAU,cAAc,yBAAyBlB,KAAI;cAChK;YACA;AAEU,mBAAO;UACjB;AAEQ,iBAAO,iBAAiB,SAAS,QAAQ,KAAK,qBAAqB,WAAY;AAC7E,kBAAM,IAAI,UAAU,iDAAiD;UAC/E,EAAS,IAAK,QAAQ,QAAQ,cAAc,KAAK,gBAAgB,CAAC,EAAE,KAAK,MAAM,IAAI,CAAC,QAAQ,KAAK,qBAAqB,WAAY;AACxH,kBAAM,IAAI,UAAU,iDAAiD;UAC/E,EAAS,IAIC,KAAK,mBAAmB,OAAO,CAAC,OAAO,GAAG,CAAC,IAAI,OAAO,OAAO,GAAG,IAAI,QAAQ,QAAQ,OAAO,GAAG,CAAC;QACzG;;;;;;;;MASA,GAAO;QACD,KAAK;QACL,OAAO,SAAS,gBAAgB,KAAK,UAAU,MAAM;AACnD,iBAAO,KAAK,YAAY,KAAK,UAAU,eAAe;YACpD,oBAAoB;UAC9B,GAAW,MAAM;YACP,MAAM;UAChB,CAAS,CAAC;QACV;;;;;;;MAQA,GAAO;QACD,KAAK;QACL,OAAO,SAAS,iBAAiB,KAAK,UAAU,MAAM;AACpD,iBAAO,KAAK,YAAY,KAAK,UAAU,eAAe;YACpD,oBAAoB;UAC9B,GAAW,MAAM;YACP,MAAM;UAChB,CAAS,CAAC;QACV;;;;;;;;;;;MAYA,GAAO;QACD,KAAK;QACL,OAAO,SAAS,OAAO,KAAK,MAAM;AAChC,cAAI,QAAQ,OAAO,IAAI;AAEvB,cAAI,CAAC,OAAO;AACV,mBAAO;UACjB;AAIQ,cAAI,UAAU,MAAM;AAClB,mBAAO,IAAI;UACrB;AAEQ,iBAAO,eAAe;YACpB,MAAM;UAChB,GAAW,KAAK,SAAS,CAAA,GAAI,IAAI;AACzB,cAAI,SAAS,MACT,OAAO,OAAO;AAClB,cAAI,qBAAqB,CAAA;AACzB,cAAI,WAAW,CAAA;AACf,cAAI,eAAe;AAInB,cAAI,MAAM,KAAK,cAAc,MAAM,CAAC,GAAG;AACrC,kBAAM,IAAI;AACV,oBAAQ,MAAM;AACd,2BAAe;UACzB;AAEQ,cAAI,OAAO;AAeX,mBAAS,eAAeA,OAAM,KAAK;AACjC,gBAAI,QAAQ,KAAK,SAASA,KAAI,KAAK,CAAA,GAC/B,QAAQ,eAAe,OAAO,CAAC,GAC/B,UAAU,MAAM,CAAC;AAErB,gBAAI,CAAC,SAAS;AACZ,oBAAM,IAAI,MAAM,wBAAwBA,KAAI;YACxD;AAMU,gBAAI,QAAQ,EAAE,YAAY,UAAU;AAElC,qBAAO;YACnB;AAEU,mBAAO,QAAQ,QAAQ,QAAQ,SAAS,WAAW,CAAC,QAAQ,QAAQ,cAAc,gBAAgB,QAAQ,EAAE,KAAK,QAAQ;UACnI;AAOQ,mBAAS,qBAAqB;AAG5B,gBAAI,mBAAmB,CAAA;AACvB,mBAAO,QAAQ,KAAK,EAAE,QAAQ,SAAU,OAAO;AAC7C,kBAAI,QAAQ,eAAe,OAAO,CAAC,GAC/B,UAAU,MAAM,CAAC,GACjBA,QAAO,MAAM,CAAC;AAElB,kBAAIA,UAAS,KAAK;AAOhB;cACd;AAEY,eAAA,EAAG,OAAOA,KAAI,EAAE,QAAQ,SAAUA,OAAM;AACtC,oBAAI,QAAQ,KAAK,SAASA,KAAI,KAAK,CAAC,MAAM,CAAA,CAAE,GACxC,QAAQ,eAAe,OAAO,CAAC,GAC/B,QAAQ,MAAM,CAAC,EAAE;AAErB,oBAAI,CAAC,OAAO;AAEV;gBAChB;AAEc,iCAAiB,KAAK;kBACpB;kBACA,MAAMA;gBACtB,CAAe;AACD,uBAAO,MAAM,OAAO;cAClC,CAAa;YACb,CAAW;AAED,gBAAI,CAAC,iBAAiB,QAAQ;AAC5B,qBAAO;YACnB;AASU,mBAAO,iBAAiB,KAAK,gBAAgB,EAAE;cAAO,SAAS,QAAQuB,yBAAwB,OAAO;AACpG,oBAAI,UAAU,MAAM,SAChBvB,QAAO,MAAM;AAEjB,oBAAI,WAAWuB,uBAAsB,GAAG;AACtC,yBAAOA,wBAAuB,KAAK,SAAUC,MAAK;AAChD,2BAAO,QAAQA,MAAK;sBAClB;sBACA,MAAMxB;oBACxB,CAAiB;kBACjB,CAAe;gBACf;AAGY,oBAAI,MAAMY,cAAa,KAAK,OAAO;AACnC,sBAAM,eAAeZ,OAAM,GAAG;AAE9B,oBAAI,iBAAiB,KAAK,cAAc,GAAG;AACzC,yBAAO,IAAI,KAAK,SAAU,GAAG;AAC3B,wBAAIyB,UAAS,aAAa,KAAK,SAAS,CAAC;AAEzC,wBAAIA,YAAW,GAAG;AAChB,4BAAMA;oBACxB;AAEgB,2BAAO;kBACvB,CAAe;gBACf;AAEY,oBAAI,SAAS,aAAa,KAAK,SAAS,GAAG;AAE3C,oBAAI,WAAW,KAAK;AAClB,wBAAM;gBACpB;AAEY,uBAAO;cACnB;cAAa;;YACb;UAEA;AAEQ,cAAI,kBAAkB,CAAA;AAWtB,mBAAS,QAAQ,SAAS,OAAO,QAAQ,OAAO,KAAK;AACnD,gBAAI,gBAAgB,YAAY,UAAU;AACxC,qBAAO;YACnB;AAEU,gBAAIzB,QAAO,MAAM,OAAO;AACxB,gBAAI,QAAQa,SAAQ,KAAK;AAEzB,gBAAI,SAAS,cAAc,KAAK,GAAG;AACjC,kBAAI,SAAS,QAAQ,IAAI,MAAM,MAAM,MAAM,IAAI,CAAA;AAG/C,cAAAP,MAAK,KAAK,EAAE,QAAQ,SAAUoB,IAAG;AAC/B,oBAAIF,OAAM,QAAQ,WAAW,UAAU,MAAM,MAAM,uBAAuBE,EAAC,GAAG,MAAMA,EAAC,GAAG,UAAU,QAAQ,QAAQA,EAAC;AAEnH,oBAAI,MAAM,SAASC,KAAI,GAAG;AACxB,sBAAI,iBAAiB,GAAG,SAAS,GAAG;AAClC,2BAAOD,EAAC,IAAI;kBAC9B,WAA2B,MAAM,QAAW;AAC1B,2BAAOA,EAAC,IAAI;kBAC9B;AAEgB,yBAAO;gBACvB;AAEc,oBAAI,iBAAiBF,MAAK,cAAc,GAAG;AACzC,kCAAgB,KAAKA,KAAI,KAAK,SAAUT,MAAK;AAC3C,2BAAO,IAAIA,IAAG;kBAChC,CAAiB,CAAC;gBAClB,OAAqB;AACL,sBAAIS,IAAG;gBACvB;cACA,CAAa;AACD,sBAAQ;AAER,qBAAO,mBAAmB,QAAQ;AAChC,oBAAI,uBAAuB,eAAe,mBAAmB,CAAC,GAAG,CAAC,GAC9D,UAAU,qBAAqB,CAAC,GAChC,UAAU,qBAAqB,CAAC,GAChC,UAAU,qBAAqB,CAAC,GAChC,IAAI,qBAAqB,CAAC;AAE9B,oBAAI,MAAMZ,cAAa,SAAS,OAAO;AAGvC,oBAAI,QAAQ,QAAW;AACrB,0BAAQ,CAAC,IAAI;gBAC7B,OAAqB;AACL;gBAChB;AAEc,mCAAmB,OAAO,GAAG,CAAC;cAC5C;YACA;AAEU,gBAAI,CAACZ,OAAM;AACT,qBAAO;YACnB;AAEU,gBAAIA,UAAS,KAAK;AAChB,kBAAI,OAAOY,cAAa,QAAQ,MAAM,MAAM,CAAC,CAAC;AAE9C,kBAAI,SAAS,QAAW;AAEtB,mCAAmB,KAAK,CAAC,QAAQ,MAAM,MAAM,CAAC,GAAG,OAAO,GAAG,CAAC;cAC1E;AAEY,qBAAO;YACnB;AAGU,mBAAO,CAAA,EAAG,OAAOZ,KAAI,EAAE,OAAO,SAAS,QAAQwB,MAAK,KAAK;AACvD,kBAAI,iBAAiBA,MAAK,cAAc,GAAG;AACzC,uBAAOA,KAAI,KAAK,SAAU,GAAG;AAE3B,yBAAO,QAAQ,GAAG,GAAG;gBACrC,CAAe;cACf;AAEY,qBAAO,eAAe,KAAKA,IAAG;YAC1C,GAAa,KAAK;UAClB;AAQQ,mBAAS,eAAe,OAAO;AAC7B,mBAAO,iBAAiB,OAAO,SAAS,IAAI,SAAY;UAClE;AAEQ,cAAI,yBAAyB,mBAAkB;AAC/C,cAAI;AAEJ,cAAI,iBAAiB,wBAAwB,cAAc,GAAG;AAC5D,kBAAM,uBAAuB,KAAK,WAAY;AAC5C,qBAAO;YACnB,CAAW;UACX,OAAe;AACL,kBAAM,QAAQ,IAAI,KAAK,IAAI;AAE3B,gBAAI,gBAAgB,QAAQ;AAE1B,oBAAM,eAAe,QAAQ,GAAG,EAAE,KAAK,SAAU,GAAG;AAClD,uBAAO,eAAe,IAAI;;kBAC1B;gBAAC,EAAE,OAAO,eAAe,CAAC;cACxC,CAAa,EAAE,KAAK,SAAU,OAAO;AACvB,oBAAI,SAAS,eAAe,OAAO,CAAC,GAChC,IAAI,OAAO,CAAC;AAEhB,uBAAO;cACrB,CAAa;YACb;UACA;AAEQ,iBAAO,WAAW,GAAG,IAAI,QAAQ,KAAK,qBAAqB,WAAY;AACrE,kBAAM,IAAI,UAAU,iDAAiD;UAC/E,EAAS,IAAK,iBAAiB,KAAK,cAAc,IAAI,IAAI,EAAE,KAAK,cAAc,IAAI,MAAM,CAAC,QAAQ,KAAK,qBAAqB,WAAY;AAC9H,kBAAM,IAAI,UAAU,iDAAiD;UAC/E,EAAS,IAAK,OAAO,eAAe,GAAG,IAAI,QAAQ,QAAQ,eAAe,GAAG,CAAC;QAC9E;;;;;;;MAQA,GAAO;QACD,KAAK;QACL,OAAO,SAAS,WAAW,KAAK,MAAM;AACpC,iBAAO,KAAK,OAAO,KAAK,eAAe;YACrC,oBAAoB;UAC9B,GAAW,MAAM;YACP,MAAM;UAChB,CAAS,CAAC;QACV;;;;;;MAOA,GAAO;QACD,KAAK;QACL,OAAO,SAAS,YAAY,KAAK,MAAM;AACrC,iBAAO,KAAK,OAAO,KAAK,eAAe;YACrC,oBAAoB;UAC9B,GAAW,MAAM;YACP,MAAM;UAChB,CAAS,CAAC;QACV;;;;;;;;;;MAWA,GAAO;QACD,KAAK;QACL,OAAO,SAAS,SAAS,cAAc,MAAM;AAC3C,iBAAO,QAAQ,CAAA;AACf,WAAA,EAAG,OAAO,YAAY,EAAE,QAAQ,SAAS,EAAE,UAAU;AACnD,gBAAI,QAAQ;AAGZ,gBAAIX,SAAQ,QAAQ,GAAG;AACrB,qBAAO,SAAS,IAAI,SAAU,SAAS;AACrC,uBAAO,EAAE,KAAK,OAAO,OAAO;cAC1C,CAAa;YACb;AAEU,wBAAYP,MAAK,QAAQ,EAAE,QAAQ,SAAU,QAAQ;AACnD,kBAAI,WAAW,KAAK;AAClB,sBAAM,IAAI,UAAU,sEAA2E;cAC7G,WAAuBQ,SAAQ,WAAW,SAAS,MAAM,GAAG;AAC9C,sBAAM,IAAI,UAAU,oDAAoD;cACtF;AAEY,kBAAI,OAAO,SAAS,MAAM;AAC1B,kBAAI,YAAY,QAAQ,KAAK,mBAAmB,KAAK,uBAAuB,KAAK;AACjF,kBAAI,mBAAmB,UAAU,OAAO,SAAU,GAAG;AACnD,uBAAO,EAAE,SAAS;cAChC,CAAa;AAED,kBAAI,iBAAiB,QAAQ;AAE3B,0BAAU,OAAO,UAAU,QAAQ,iBAAiB,CAAC,CAAC,GAAG,CAAC;AAC1D,uBAAO,KAAK,SAAS,MAAM;AAC3B,uBAAO,KAAK,MAAM,MAAM;cACtC;AAEY,kBAAI,OAAO,SAAS,YAAY;AAE9B,oBAAI,QAAQ;AACZ,uBAAO;kBACL,MAAM,SAASc,MAAK,GAAG;AACrB,2BAAO,KAAK,EAAE,gBAAgB;kBAChD;kBACgB,SAAS,SAASC,SAAQ,GAAG;AAC3B,2BAAO,eAAe,CAAA,GAAI,CAAC;kBAC7C;kBACgB,QAAQ,SAASC,QAAO,GAAG;AACzB,2BAAO,OAAO,OAAO,OAAO,OAAO,MAAM,SAAS,GAAG,CAAC;kBACxE;gBACA;cACA,WAAuBjB,SAAQ,IAAI,GAAG;AACxB,oBAAI,QAAQ,MACR,SAAS,eAAe,OAAO,CAAC,GAChC,OAAO,OAAO,CAAC,GACf,UAAU,OAAO,CAAC,GAClB,SAAS,OAAO,CAAC;AAErB,uBAAO;kBACL;kBACA;kBACA;gBAChB;cACA;AAEY,kBAAI,CAAC,QAAQ,CAAC,KAAK,MAAM;AACvB;cACd;AAEY,kBAAI,cAAc;gBAChB,MAAM;gBACN,MAAM,KAAK,KAAK,KAAK,IAAI;cACvC;AAEY,kBAAI,KAAK,SAAS;AAChB,4BAAY,UAAU,KAAK,QAAQ,KAAK,IAAI;cAC1D;AAEY,kBAAI,KAAK,cAAc;AACrB,4BAAY,eAAe,KAAK,aAAa,KAAK,IAAI;cACpE;AAEY,kBAAI,QAAQ,OAAO,KAAK,aAAa,WAAW,KAAK,WAAW,KAAK,WAAW,IAAI;AAEpF,kBAAI,KAAK,kBAAkB;AACzB,qBAAK,qBAAqB,OAAO,OAAO,GAAG,WAAW;cACpE,OAAmB;AACL,qBAAK,wBAAwB,OAAO,OAAO,GAAG,WAAW;cACvE;AAGY,kBAAI,KAAK,UAAU,KAAK,aAAa;AACnC,oBAAI,aAAa,CAAA;AAEjB,oBAAI,KAAK,QAAQ;AACf,6BAAW,SAAS,KAAK,OAAO,KAAK,IAAI;gBACzD;AAEc,oBAAI,KAAK,aAAa;AACpB,6BAAW,cAAc,KAAK,YAAY,KAAK,IAAI;gBACnE;AAEc,qBAAK,SAAS,MAAM,IAAI,CAAC,YAAY;kBACnC,OAAO,KAAK;gBAC5B,CAAe;cACf;AAGY,mBAAK,MAAM,MAAM,IAAI;YACjC,GAAa,IAAI;UACjB,GAAW,IAAI;AACP,iBAAO;QACf;MACA,CAAK,CAAC;AAEF,aAAOC;IACX,EAAG;AASD,QAAI,YAAY,SAASiB,aAAY;AACnC,sBAAgB,MAAMA,UAAS;IACnC;AAGE,cAAU,oBAAoB;AAG9B,YAAQ,YAAY;AAEpB,YAAQ,UAAU;AAElB,YAAQ,aAAa;AACrB,YAAQ,cAAcpB;AACtB,YAAQ,mBAAmB;AAC3B,YAAQ,WAAW;AACnB,YAAQ,gBAAgB;AACxB,YAAQ,eAAe;AACvB,YAAQ,yBAAyB;AACjC,YAAQ,2BAA2B;AACnC,YAAQ,eAAeC;AACvB,YAAQ,cAAc;AACtB,YAAQ,aAAa,CAAC,QAAQ,WAAW,UAAU,UAAU,SAAS,QAAQ;AAE9E,WAAO;EAET,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjuDD,aAASoB,QAAQ7B,IAIb6B;AAAAA,cAAAA,UADoB,cAAXC,OAAAA,UAAoD,YAApBA,OAAAA,OAAOC,WACtC,SAAAF,SAAU7B,IACJA;AAAAA,eAAAA,OAAAA;MAAAA,IAGN,SAAUA,SAAAA,IAAAA;AAAAA,eACXA,MAAyB,cAAA,OAAX8B,UAAyB9B,GAAIgC,gBAAgBF,UAAU9B,OAAQ8B,OAAOG,YAAY,WAAA,OAAkBjC;MAI9GA,GAAAA,EAAAA;IAAAA;AAGjB,aAASkC,gBAAgBC,IAAUC,IAAAA;AAAAA,UAAAA,EAC3BD,cAAoBC,IAAAA,OAClB,IAAIC,UAAU,mCAIxB;IAAA;AAAA,aAASC,kBAAkBC,IAAQrC,IAC5B;AAAA,eAAIiB,KAAI,GAAGA,KAAIjB,GAAMsC,QAAQrB,MAAK;AACjCsB,YAAAA,KAAavC,GAAMiB,EAAAA;AACvBsB,QAAAA,GAAWC,aAAaD,GAAWC,cAAAA,OACnCD,GAAWE,eAAe,MACtB,WAAWF,OAAYA,GAAWG,WAAAA,OACtCC,OAAOC,eAAeP,IAAQE,GAAWxB,KAAKwB,EAAAA;MAAAA;IAAAA;AAUlD,aAASM,gBAAgB/C,IAAKiB,IAAK+B,IAC7B/B;AAAAA,aAAAA,MAAOjB,KACT6C,OAAOC,eAAe9C,IAAKiB,IAAK,EAC9B+B,OAAOA,IACPN,YAAY,MACZC,cAAc,MACdC,UAAU,KAAA,CAAA,IAGZ5C,GAAIiB,EAAAA,IAAO+B,IAGNhD;IAAAA;AAGT,aAASiD,QAAQC,IAAQC,IAAAA;AAAAA,UACnBhD,KAAO0C,OAAO1C,KAAK+C,EAAAA;AAAAA,UAEnBL,OAAOO,uBAAuB;AAC5BC,YAAAA,KAAUR,OAAOO,sBAAsBF,EACvCC;AAAAA,QAAAA,OAAgBE,KAAUA,GAAQC,OAAO,SAAUC,IAC9CV;AAAAA,iBAAAA,OAAOW,yBAAyBN,IAAQK,EAAKb,EAAAA;QAAAA,CAAAA,IAEtDvC,GAAKsD,KAAKC,MAAMvD,IAAMkD,EAGjBlD;MAAAA;AAAAA,aAAAA;IAAAA;AAGT,aAASwD,eAAepB,IAAAA;AAAAA,eACbpB,KAAI,GAAGA,KAAIyC,UAAUpB,QAAQrB,MAAK;AAAA,YACrC0C,KAAyB,QAAhBD,UAAUzC,EAAAA,IAAayC,UAAUzC,EAAAA,IAAK,CAAA;AAE/CA,QAAAA,KAAI,IACN8B,QAAQJ,OAAOgB,EAAAA,GAAAA,IAAeC,EAAAA,QAAQ,SAAU7C,IAAAA;AAC9C8B,0BAAgBR,IAAQtB,IAAK4C,GAAO5C,EAE7B4B,CAAAA;QAAAA,CAAAA,IAAAA,OAAOkB,4BAChBlB,OAAOmB,iBAAiBzB,IAAQM,OAAOkB,0BAA0BF,EAEjEZ,CAAAA,IAAAA,QAAQJ,OAAOgB,EAAAA,CAAAA,EAASC,QAAQ,SAAU7C,IACxC4B;AAAAA,iBAAOC,eAAeP,IAAQtB,IAAK4B,OAAOW,yBAAyBK,IAAQ5C,EAK1EsB,CAAAA;QAAAA,CAAAA;MAAAA;AAAAA,aAAAA;IAAAA;AAGT,aAAS0B,eAAeC,IAAK/C,IAAAA;AAAAA,aAY7B,SAASgD,gBAAgBD,IACnBE;AAAAA,YAAAA,MAAM1D,QAAQwD,EAAAA,EAAM,QAAOA;MAAAA,EAZRA,EAAAA,KAmBzB,SAASG,sBAAsBH,IAAK/C,IAAAA;AAAAA,YACZ,eAAXW,OAAAA,UAAAA,EAA4BA,OAAOC,YAAYc,OAAOqB,EAAAA,GAAO;AACpEI,YAAAA,KAAO,CAAA,GACPC,KAAAA,MACAC,KAAAA,OACAC,KAAAA;AAGG,YAAA;AAAA,mBAAiCC,IAA7BC,KAAKT,GAAIpC,OAAOC,QAAmBwC,EAAAA,GAAAA,EAAAA,MAAMG,KAAKC,GAAGC,KAAQC,GAAAA,UAChEP,GAAKb,KAAKiB,GAAG1B,KAAAA,GAAAA,CAET7B,MAAKmD,GAAK9B,WAAWrB,KAH8CoD,KAAK,KAAA;QAAA,SAKvEO,IAAAA;AACPN,UAAAA,KAAK,MACLC,KAAKK;QAAAA,UAAAA;AAAAA,cAAAA;AAGEP,YAAAA,MAAsB,QAAhBI,GAAE,UAAoBA,GAAE,OAAA;UAAA,UAAA;AAAA,gBAE/BH,GAAI,OAAMC;UAIXH;QAAAA;AAAAA,eAAAA;MAAAA,EA3C8CJ,IAAK/C,EAAAA,KAAM4D,4BAA4Bb,IAAK/C,EAmEnG,KAAA,SAAS6D,mBACD;AAAA,cAAA,IAAI3C,UAAU,2IAAA;MAAA,EApEmF2C;IAGzG;AAAA,aAASC,mBAAmBf,IAAAA;AAAAA,aAI5B,SAASgB,mBAAmBhB,IACtBE;AAAAA,YAAAA,MAAM1D,QAAQwD,EAAAA,EAAM,QAAOiB,kBAAkBjB,EAJ1CgB;MAAAA,EAAmBhB,EAW5B,KAAA,SAASkB,iBAAiBhF,IAAAA;AAAAA,YACF,eAAX0B,OAAAA,UAA0BA,OAAOC,YAAYc,OAAOzC,EAAAA,EAAO,QAAOgE,MAAMiB,KAAKjF,EAAAA;MAAAA,EAZrC8D,EAAAA,KAAQa,4BAA4Bb,EAAAA,KA2DzF,SAASoB,qBAAAA;AAAAA,cACD,IAAIjD,UAAU,sIA5D2EiD;MAAAA,EAAAA;IAAAA;AA0CjG,aAASP,4BAA4BQ,IAAGC,IAAAA;AAAAA,UACjCD,IACY;AAAA,YAAA,YAAA,OAANA,GAAgB,QAAOJ,kBAAkBI,IAAGC,EACnDC;AAAAA,YAAAA,KAAI5C,OAAOZ,UAAUyD,SAASC,KAAKJ,EAAAA,EAAGK,MAAM,GAAA,EACtC;AAAA,eAAA,aAANH,MAAkBF,GAAEvD,gBAAayD,KAAIF,GAAEvD,YAAY6D,OAC7C,UAANJ,MAAqB,UAANA,KAAoBrB,MAAMiB,KAAKE,EAAAA,IACxC,gBAANE,MAAqB,2CAA2ChE,KAAKgE,EAAWN,IAAAA,kBAAkBI,IAAGC,EAAAA,IAAAA;MAAAA;IAAAA;AAG3G,aAASL,kBAAkBjB,IAAK4B,IAAAA;AAAAA,OACnB,QAAPA,MAAeA,KAAM5B,GAAI1B,YAAQsD,KAAM5B,GAAI1B;AAAAA,eAEtCrB,KAAI,GAAG4E,KAAO,IAAI3B,MAAM0B,EAAM3E,GAAAA,KAAI2E,IAAK3E,KAAK4E,CAAAA,GAAK5E,EAAAA,IAAK+C,GAAI/C,EAAAA;AAAAA,aAE5D4E;IAoDT;AAAA,QAAI1F,IAAiB,SAASA,eAAe2F,IAAAA;AAC3C9D,sBAAgBnC,MAAMM,cAEjB4F,GAAAA,KAAAA,IAAI,IAAIC,QAAQF,EAAAA;IAAAA;AASvB3F,MAAe8F,oBAAoB,kBAIb,eAAA,OAAXrE,WAETzB,EAAe4B,UAAUH,OAAOtB,WAAe,IAAA,mBAUjDH,EAAe4B,UAAUmE,OAAO,SAAUC,IAAaC,IAAAA;AAAAA,UACjDC,KAAQxG;AAAAA,aAEL,IAAIM,EAAe,SAAUmG,IAAgBC,IAElDF;AAAAA,QAAAA,GAAMN,EAAEG,KAAK,SAAUM,IAAAA;AAErBF,UAAAA,GAAeH,KAAcA,GAAYK,EAAAA,IAAOA,EAFlD;QAAA,CAAA,EAAA,MAGY,SAAUA,IAAAA;AAAAA,iBACbJ,KAAaA,GAAWI,EAAOR,IAAAA,QAAQS,OAAOD,EAAAA;QAAAA,CAAAA,EACpDN,KAAKI,IAAgBC,EAU5BpG;MAAAA,CAAAA;IAAAA,GAAAA,EAAe4B,UAAf,QAAoC,SAAUqE,IAAAA;AAAAA,aACrCvG,KAAKqG,KAAK,MAAME,EAAAA;IAAAA,GASzBjG,EAAeuG,UAAU,SAAUC,IAAAA;AAAAA,aAC1B,IAAIxG,EAAe,SAAUmG,IAAAA;AAClCA,QAAAA,GAAeK,EAAAA;MAAAA,CAAAA;IAAAA,GAUnBxG,EAAesG,SAAS,SAAUE,IAAAA;AAAAA,aACzB,IAAIxG,EAAe,SAAUmG,IAAgBC,IAClDA;AAAAA,QAAAA,GAAcI,EAIlB;MAAA,CAAA;IAAA,GAAA,CAAC,OAAO,MAAA,EAAQ/C,QAAQ,SAAUgD,IAMhCzG;AAAAA,QAAeyG,EAAQ,IAAA,SAAUC,IACxB;AAAA,eAAA,IAAI1G,EAAe,SAAUmG,IAAgBC,IAAAA;AAElDP,kBAAQY,EAAAA,EAAMC,GAAQC,IAAI,SAAUC,IAAAA;AAAAA,mBAC3BA,MAAQA,GAAKjF,eAAsD,qBAAvCiF,GAAKjF,YAAYmE,oBAAyCc,GAAKhB,IAAIgB;UAAAA,CAAAA,CAAAA,EACpGb,KAAKI,IAAgBC,EAK/B;QAAA,CAAA;MAAA;IAAA,CAAA;AAAA,QACIS,IADO,CAAA,EACMxB,UACbyB,IAAW,CAAA,EAAGC,gBACd7G,IAAWsC,OAAOwE,gBAClBC,IAAaH,EAASzB;AAQ1B,aAAS6B,WAAWV,IAAGW,IACdC;AAAAA,aAAAA,SAASZ,EAAwB,KAAA,cAAA,OAAXA,GAAET,SAAAA,CAAyBoB,MAAoC,cAAA,OAAfX,GAAC;IAAA;AAShF,aAASrG,aAAYa,IACZ6F;AAAAA,aAAAA,EAAMvB,KAAKtE,EAAAA,EAAKuE,MAAM,GAAA,EAW/B;IAAA;AAAA,aAAS8B,iBAAiBC,IAAGC,IACtBD;AAAAA,UAAAA,CAAAA,MAAoB,aAAf9F,QAAQ8F,EACT,EAAA,QAAA;AAAA,UAGLE,KAAQtH,EAASoH,EAEhBE;AAAAA,UAAAA,CAAAA,GAAAA,QACU,SAAND;AAAAA,UAGLE,KAAOX,EAASxB,KAAKkC,IAAO,aAAkBA,KAAAA,GAAM7F;AAEpC,aAAA,cAAA,OAAT8F,KACI,SAANF,KAGLA,OAAME,OAIA,SAANF,MAAcN,EAAW3B,KAAKmC,EAAAA,MAAUR,EAAW3B,KAAKiC,EAI3C,KAAA,cAAA,OAANA,MAAsD,YAAA,OAA3BE,GAAK3B,qBAAkC2B,GAAK3B,sBAAsByB,GAAEzB;IAa5G;AAAA,aAAS4B,cAAc1G,IAAAA;AAAAA,aAAAA,EAAAA,CAEhBA,MAA4B,aAArBb,aAAYa,EAAAA,OAAAA,CAIZd,EAASc,EAAAA,KAOdqG,iBAAiBrG,IAAKwB,MA8B/B;IAAA;AAAA,aAAS4E,SAASZ,IAAAA;AAAAA,aACTA,MAAoB,aAAfhF,QAAQgF,EAAAA;IAAAA;AAStB,aAASmB,uBAAuBC,IACvBA;AAAAA,aAAAA,GAAiBvG,QAAQ,MAAM,IAAMA,EAAAA,QAAQ,OAAO,IAAA;IAAA;AAS7D,aAASwG,yBAAyBD,IACzBA;AAAAA,aAAAA,GAAiBvG,QAAQ,OAAO,GAAKA,EAAAA,QAAQ,OAAO,GAAA;IAAA;AAS7D,aAASjB,cAAaT,IAAKmI,IAAAA;AAAAA,UACT,OAAZA,GAAAA,QACKnI;AAGLoI,UAAAA,KAASD,GAAQE,QAAQ,GAEzBD;AAAAA,UAAAA,KAAAA,IAAa;AAAA,YACXE,KAAWtI,GAAIkI,yBAAyBC,GAAQvC,MAAM,GAAGwC,EACzCG,CAAAA,CAAAA;AAAAA,eAAAA,WAAbD,KAAAA,SAAqC7H,cAAa6H,IAAUH,GAAQvC,MAAMwC,KAAS,CAGrFpI,CAAAA;MAAAA;AAAAA,aAAAA,GAAIkI,yBAAyBC,EAAAA,CAAAA;IAAAA;AAWtC,aAASK,aAAaxI,IAAKmI,IAASnF,IAClB;AAAA,UAAA,OAAZmF,GACKnF,QAAAA;AAAAA,UAGLoF,KAASD,GAAQE,QAAQ,GAAA;AAAA,aAEzBD,KAAU,KAELI,aADQxI,GAAIkI,yBAAyBC,GAAQvC,MAAM,GAAGwC,EAC/BD,CAAAA,CAAAA,GAAAA,GAAQvC,MAAMwC,KAAS,CAAIpF,GAAAA,EAAAA,KAG3DhD,GAAIkI,yBAAyBC,EAAYnF,CAAAA,IAAAA,IAClChD;IAcT;AAAA,aAASyI,OAAOzF,IAAOoD,IAAMsC,IAAAA;AAAAA,aACvBA,KACKtC,KAAOA,GAAKpD,EAAAA,IAASA,MAGzBA,MAAUA,GAAMoD,SACnBpD,KAAQkD,QAAQU,QAAQ5D,EAAAA,IAGnBoD,KAAOpD,GAAMoD,KAAKA,EAAAA,IAAQpD;IAGnC;AAAA,QAAI7C,IAAO0C,OAAO1C,MACdO,IAAU0D,MAAM1D,SAChBJ,IAAS,CAAA,EAAG8G,gBACZuB,IAAgC,CAAC,QAAQ,YAAY,aAAa,qBAUtE;AAAA,aAASC,OAAO5C,IAAAA;AAAAA,aACP,WACA;AAAA,iBAAI6C,KAAO,CAAA,GAAI1H,KAAI,GAAGA,KAAIyC,UAAUpB,QAAQrB,KAC/C0H,CAAAA,GAAK1H,EAAAA,IAAKyC,UAAUzC,EAAAA;AAAAA,YAAAA;AAAAA,iBAIb+E,QAAQU,QAAQZ,GAAEtC,MAAM3D,MAAM8I,EAAAA,CAAAA;QAAAA,SAC9BC,IAAAA;AAAAA,iBACA5C,QAAQS,OAAOmC,EAmD5B;QAAA;MAAA;IAAA;AAAA,aAASC,iBAAiBpB,IAAGC,IACT;AAAA,UAAA,OAAdD,GAAEqB,QAAAA,QAAAA;AAIFC,UAAAA,KAAKtB,GAAEqB,QAAQE,MAAM,KAAA,KAAU,GAC/BC,KAAKvB,GAAEoB,QAAQE,MAAM,KAAA,KAAU;AAAA,aAE/BD,OACFA,KAAKA,GAAGzG,SAGN2G,OACFA,KAAKA,GAAG3G,SAGHyG,KAAKE,KAAAA,KAAUF,KAAKE,KAAK,IAAIxB,GAAEqB,UAAUpB,GAAEoB,UAAAA,KAAerB,GAAEqB,UAAUpB,GAAEoB;IAGjF;AAAA,QAAIrI,IAAuB,WAAA;AAAA,eAIhBA,QAAQyI,IAAAA;AACflH,wBAAgBnC,MAAMY,OAEjByI,GAAAA,KAAAA,UAAUA,IAGVC,KAAAA,uBAAuB,CAAA,GACvBC,KAAAA,0BAA0B,CAAA,GAG1BC,KAAAA,WAAW,CAAA,GAGXC,KAAAA,QAAQ,CAAA;MAhkBjB;AAAA,aAAA,SAASC,aAAarH,IAAasH,IAAYC,IAAAA;AAAAA,eACzCD,MAAYpH,kBAAkBF,GAAYH,WAAWyH,EACrDC,GAAAA,MAAarH,kBAAkBF,IAAauH,EACzCvH,GAAAA;MAAAA,EAulBMzB,SAAS,CAAC,EACrBM,KAAK,aACL+B,OAAO,SAAS4G,UAAU5J,IAAK6J,IAAUC,IAAOC,IAC9CA;AAAAA,QAAAA,KAAOpG,eAAeA,eAAeA,eAAe,CAAA,GAAI5D,KAAKqJ,OAAAA,GAAUW,EAAO,GAAA,CAAA,GAAI,EAChFC,iBAAAA,KAEEC,CAAAA;AAAAA,YAAAA,KAAelK,KAAKmK,YAAYlK,IAAK,MAAM+J,EAE3CrJ;AAAAA,eAAAA,EAAQuJ,EACHE,IAAAA,KAAKP,UAAUK,GAAa,CAAIJ,GAAAA,IAAUC,EAG5CG,IAAAA,GAAa7D,KAAK,SAAUM,IAC1ByD;AAAAA,iBAAAA,KAAKP,UAAUlD,IAAKmD,IAAUC,EAAAA;QAAAA,CAAAA;MAAAA,EAAAA,GAYxC,EACD7I,KAAK,iBACL+B,OAAO,SAASoH,cAAcpK,IAAK6J,IAAUC,IAAOC,IAAAA;AAAAA,eAC3ChK,KAAK6J,UAAU5J,IAAK6J,IAAUC,IAAOnG,eAAeA,eAAe,EACxE0G,oBAAoB,KAAA,GACnBN,EAAO,GAAA,CAAA,GAAI,EACZO,MAAM,KAAA,CAAA,CAAA;MAAA,EAAA,GAYT,EACDrJ,KAAK,kBACL+B,OAAO,SAASuH,eAAevK,IAAK6J,IAAUC,IAAOC,IAAAA;AAAAA,eAC5ChK,KAAK6J,UAAU5J,IAAK6J,IAAUC,IAAOnG,eAAeA,eAAe,EACxE0G,oBAAoB,KAAA,GACnBN,EAAO,GAAA,CAAA,GAAI,EACZO,MAAAA,MAoBH,CAAA,CAAA;MAAA,EAAA,GAAA,EACDrJ,KAAK,SACL+B,OAAO,SAASwH,MAAMC,IAAMC,IAASX,IAAAA;AAAAA,eACnCA,KAAOpG,eAAeA,eAAeA,eAAe,CAAA,GAAI5D,KAAKqJ,OAAUW,GAAAA,EAAAA,GAAO,CAAA,GAAI,EAChFS,OAAO,KAAA,CAAA,GAEFzK,KAAK4B,OAAOwI,KAAKK,MAAMC,IAAMC,EAAAA,GAAUX,EAW/C;MAAA,EAAA,GAAA,EACD9I,KAAK,aACL+B,OAAO,SAAS2H,UAAUF,IAAMC,IAASX,IAAAA;AAAAA,eAChChK,KAAKyK,MAAMC,IAAMC,IAAS/G,eAAeA,eAAe,EAC7D0G,oBAAAA,KACCN,GAAAA,EAAAA,GAAO,CAAA,GAAI,EACZO,MAAM,KAAA,CAAA,CAAA;MAAA,EAAA,GAWT,EACDrJ,KAAK,cACL+B,OAAO,SAAS4H,WAAWH,IAAMC,IAASX,IACjChK;AAAAA,eAAAA,KAAKyK,MAAMC,IAAMC,IAAS/G,eAAeA,eAAe,EAC7D0G,oBAAoB,KAAA,GACnBN,EAAO,GAAA,CAAA,GAAI,EACZO,MAAAA,MAeH,CAAA,CAAA;MAAA,EAAA,GAAA,EACDrJ,KAAK,oBACL+B,OAAO,SAAS6H,iBAAiB7K,IAAKe,IAChCgJ;AAAAA,YAAAA,KAAOnG,UAAUpB,SAAS,KAAsB+F,WAAjB3E,UAAU,CAAA,IAAmBA,UAAU,CAAA,IAAK,CAAA;AAC/EmG,eAAAA,GAAKe,kBAAkB,MAChB/K,KAAKmK,YAAYlK,IAAKe,IAAUgJ,EAAAA;MAAAA,EAAAA,GAUxC,EACD9I,KAAK,gBACL+B,OAAO,SAAS+H,aAAa/K,IAAKe,IAAAA;AAAAA,YAC5BgJ,KAAOnG,UAAUpB,SAAS,KAAA,WAAKoB,UAAU,CAAmBA,IAAAA,UAAU,CAAK,IAAA,CAAA;AAAA,eAC/EmG,GAAKiB,cAAAA,MACEjL,KAAKmK,YAAYlK,IAAKe,IAAUgJ,EAAAA;MAAAA,EAAAA,GAaxC,EACD9I,KAAK,eACL+B,OAAO,SAASkH,YAAYlK,IAAKe,IAAUgJ,IAOrCkB;AAAAA,YAAAA,KAAgBrC,OAAO,SAAUhI,IAAKsK,IAAAA;AAAAA,iBACjCzC,OAAOvC,QAAQiF,IAAID,GAAalE,IAAI,SAAUoE,IAC5CA;AAAAA,mBAAAA,GAAG,CAAGnF,EAAAA;UAAAA,CAAAA,CAAAA,GACV,SAAUoF,IAAAA;AAAAA,mBACN5C,OAAOvC,QAAQiF,IAAIE,GAAYrE,IAAI4B,OAAO,SAAU0C,IAAAA;AAAAA,kBACrDC,KAAQ,OACRC,KAAkB,CAAA,GAGlBC,KAAwBxH,eADDiH,GAAaQ,OAAO,GAAG,CACe,GAAA,CAAA,GAG7DC,KAAU1H,eAFDwH,GAAsB,CAAA,GAEE,CACjCtD,GAAAA,KAAUwD,GAAQ,CAAA,GAClB7K,KAAS6K,GAAQ,CACjB5K,GAAAA,KAAW4K,GAAQ,CAAA,GACnBC,KAAYD,GAAQ,CACpB1K,GAAAA,KAAM0K,GAAQ,CAAA,GACdE,KAAeF,GAAQ,CAEvBG,GAAAA,KAASC,aAAa5D,IAASmD,IAAYxK,IAAQC,IAAUyK,IAAAA,MAAuBK,EAAAA,GAEpFG,KAAmBtE,iBAAiBoE,IAAQzL,CAAAA;AAAAA,qBApQ5D,SAAS4L,QAAQC,IAAM9F,IAAAA;AAAAA,oBACjB+F,KAASD,GAAAA;AAAAA,uBAETC,MAAUA,GAAO/F,OACZ+F,GAAO/F,KAAKA,EAAAA,IAGdA,GAAK+F,EAAAA;cAAAA,EAgQa,WAAA;AAAA,oBACThE,MAAW6D,GAAAA,QACNvD,OAAOqD,GAAO7F,GAAG,SAAUmG,IAAAA;AAAAA,yBAChCR,GAAU3K,EAAAA,IAAOmL,IACjBb,KAAAA,MACON,GAAcrK,IAAK4K,EAAAA;gBAAAA,CAAAA;cAAAA,GAG7B,SAAUa,IAAAA;AAAAA,uBACPd,KAAcc,MAEdlE,KACFyD,GAAU3K,EAAO6K,IAAAA,KAEjBlL,KADSoL,KACHF,GAAO7F,IASP6F,IAGDb,GAAcrK,IAAK4K,EAAAA;cAAAA,CAAAA;YAAAA,CAAAA,CAAAA,CAAAA,GAExB,WACG5K;AAAAA,qBAAAA;YAAAA,CAAAA;UAAAA,CAAAA;QAAAA,CAAAA,GA2BT0J,MAJJP,KAAOpG,eAAeA,eAAe,EACnC2G,MAAAA,KACCvK,GAAAA,KAAKqJ,OAAUW,GAAAA,EAAAA,GAEDO,MACbgC,KAAOvM,MACPyJ,KAAQ,CAAA,GACR+C,KAAU,CAAA,GAEdC,KAAU,CAAA,GAEVC,KAAmB,CAAA,GAGf3L,KAAAA,EAAS,YAAYiJ,OAAOA,GAAKjJ,QAEjC4L,KADS3C,GACoB2C,qBAE7B9L,KAAMmL,aAAa,IAAI/L,IAAKc,IAAQC,MAAY,CAAA,GAAI0L,EAQ/CE;AAAAA,iBAAAA,OAAO/L,IAGVgM;AAAAA,cAAAA,KAAY/J,OAAOgK,OAAOrD,EAE1BO;AAAAA,cAAAA,GAAKiB,YACH4B,QAAAA,GAAUpK,SACLoK,GAAU,CAGZjM,IAAAA,QAAQmM,YAAYlM,EAAAA;AAAAA,cAGzBgM,GAAUpK,QAAQ;AAChBuH,gBAAAA,GAAKe,gBACA7F,QAAAA,mBAAmB,IAAI8H,IAAIH,EAK/BhM,CAAAA;AAAAA,YAAAA,MAAQmH,cAAcnH,EAAAA,KAAAA,CAE3BN,EAAOqF,KAAK/E,IAAK,QAAA,IAQfA,GAAIoM,SAASxD,KAPb5I,KAAM,EACJqM,GAAGrM,IACHoM,QAAQ,EACNC,GAAGzD,GAOA/B,EAAAA;UAAAA,MAAAA,UAAS7G,EAAQN,KAAAA,EAAOqF,KAAK/E,IAAK,QAC3CA,MAAAA,KAAM,EACJqM,GAAGrM,IACHoM,QAAAA,KAIAjD;AAAAA,iBAAAA,CAAAA,GAAKe,mBAIFlK;QAAAA;AAAAA,iBAGAsM,mCAAmCnM,IAAUoM,IAAYC,IAChEvK;AAAAA,iBAAOwK,OAAOtM,IAAUoM,EACpBG;AAAAA,cAAAA,KAAO3E,EAA8B3B,IAAI,SAAUuG,IAAAA;AAAAA,gBACjDC,KAAMzM,GAASwM,EACZxM;AAAAA,mBAAAA,OAAAA,GAASwM,EACTC,GAAAA;UAAAA,CAAAA;AAGTJ,UAAAA,GACAzE,GAAAA,EAA8B7E,QAAQ,SAAUyJ,IAAMpM,IAAAA;AACpDJ,YAAAA,GAASwM,EAAAA,IAAQD,GAAKnM,EAAAA;UAAAA,CAAAA;QAAAA;AAAAA,iBAgBjB4K,aAAa/C,IAAShG,IAAOlC,IAAQC,IAAUmK,IAAcuC,IAAyB5B,IAAAA;AAAAA,cACzFjL,IACA8M,KAAe,CAAA,GAEfC,KAAU9L,QAAQmB,EAAAA,GAElB4K,KAAclB,KAAsB,SAAU1M,IAAAA;AAAAA,gBAC5CH,KAAOgM,MAAgB9K,GAASlB,QAAQc,QAAQmM,YAAY9J,EAChE0J;AAAAA,YAAAA,GAAoB7J,OAAOwK,OAAOrN,MAAO0N,IAAc,EACrD1E,SAASA,IACThG,OAAOA,IACPlC,QAAQA,IACRC,UAAUA,IACVmK,cAAcA,IACduC,yBAAyBA,IACzBI,wBAAwBnG,iBAAiB1E,IAAO3C,CAAAA,EAAAA,GAC/C,EACDR,MAAMA,GAEN,CAAA,CAAA;UAAA,IAAA;AAAA,cAEA,CAAC,UAAU,WAAW,UAAU,WAAaiO,EAAAA,SAASH,EAC1CpF,EAAAA,QAAAA,WAAVvF,MAAuB+K,OAAOC,MAAMhL,EAAAA,KAAUA,OAAU+K,OAAOE,qBAAqBjL,OAAU+K,OAAOG,qBACvGtN,KAAMG,GAASoN,WAAWnL,KAAQtB,QAAQsH,IAAShG,IAAOjC,IAAUmK,IAAc,OAAOuC,IAAyBG,EAAAA,OAEtG5K,OACV0K,KAAe,EACbS,UAAUvN,GAIdA,KAAAA,KAAMoC,IAGJ4K,MACFA,GAGKhN,GAAAA;AAAAA,cAGK,SAAVoC,GAAAA,QACE4K,MACFA,GAAAA,GAGK5K;AAGLlC,cAAAA,MAAAA,CAAWC,GAASqN,aAAAA,CAAcrN,GAASsN,uBAAuBrL,MAA4B,aAAnBnB,QAAQmB,EAAqB,GAAA;AAAA,gBAGtGsL,KAAW/B,GAAQlE,QAAQrF,EAAAA;AAAAA,gBAAAA,EAE3BsL,KAAW,GAAA,QAMb9E,GAAMR,EAAAA,IAAW,KAEb4E,MACFA,GAAY,EACVW,eAAe/B,GAAQ8B,EAIpB,EAAA,CAAA,GAAA,MAAM9B,GAAQ8B,EAAAA;AAAAA,qBAbjBxN,OACFyL,GAAQ9I,KAAKT,EACbwJ,GAAAA,GAAQ/I,KAAKuF,EAAAA;UAAAA;AAAAA,cAsBfwF,IAPAC,KAAa1G,cAAc/E,EAAAA,GAC3B0L,KAAQhO,EAAQsC,EAChBmL,GAAAA,MAEHM,MAAcC,QAAAA,CAAYpC,GAAKjD,qBAAqB7G,UAAUzB,GAASoN,aAAapN,GAASqN,YAE9FpL,KAAQtB,QAAQsH,IAAShG,IAAOjC,IAAUmK,IAAcuD,MAAcC,IAAO,MAAMd,EAG/EO;AAAAA,cAAAA,OAAanL,MACfpC,KAAMuN,IACNT,KAAe,EACbS,UAAUA,GAII,KAAA,OAAZnF,MAAkBtB,iBAAiB1E,IAAO3C,CAAAA,KAC5C6K,GAAazH,KAAK,CAACuF,IAAShG,IAAOlC,IAAQC,IAAUwH,QAAAA,QAAsBxH,GAASlB,IACpFe,CAAAA,GAAAA,KAAMoC,MACG0L,MAAgC,aAAvB3N,GAASqN,aAAiD,YAAvBrN,GAASqN,aAE9DI,KAAQ,IAAIpK,MAAMpB,GAAMR,MACxBkL,GAAAA,KAAe,EACbc,OAAOA,GAEC,MAAA,CAAC,YAAY,QAAA,EAAUV,SAASjM,QAAQmB,EAAa,CAAA,KAAA,YAAYA,MAAW0E,iBAAiB1E,IAAO3C,CAAAA,KAAoBqH,iBAAiB1E,IAAOkD,OAAawB,KAAAA,iBAAiB1E,IAAO2L,WAAAA,MAAAA,CAAgBF,MAAqC,aAAvB1N,GAASqN,YAWtOxN,KAAMoC,MAVNwL,KAAQ,CAAA,GAEJzN,GAAS6N,cACXJ,GAAMhM,SAASQ,GAAMR,SAGvBkL,KAAe,EACbc,OAAOA,GAOTZ,IAAAA,MACFA,GAGE7D,GAAAA,GAAKiB,YACAwD,QAAAA,MAAS5N;AAGb4N,cAAAA,CAAAA,GAAAA,QACI5N;AAILG,cAAAA,GAASqN,WAAW;AAAA,gBAClBpN,KAAQ,SAASA,MAAMC,IAAAA;AAAAA,kBACrBkM,KAAa,EACflK,SAAS3C,EAAOqF,KAAK3C,IAAO/B,EAG9BiM,EAAAA;AAAAA,iDAAmCnM,IAAUoM,IAAY,WACnD0B;AAAAA,oBAAAA,KAAK7F,MAAWA,KAAU,MAAM,MAAMhB,uBAAuB/G,EAAAA,GAE7DI,KAAM0K,aAAa8C,IAAI7L,GAAM/B,EAAM6N,GAAAA,QAAQhO,EAASC,GAAAA,IAAUmK,IAAcuC,EAAAA;AAE5E/F,iCAAiBrG,IAAKhB,CACxB6K,IAAAA,GAAazH,KAAK,CAACoL,IAAIxN,IAAKyN,QAAQhO,EAAAA,GAASC,IAAUyN,IAAOvN,IAAKF,GAASlB,IAAAA,CAAAA,IAAAA,WACnEwB,OACTmN,GAAMvN,EAAAA,IAAOI;cAMd,CAAA;YAAA;AAAA,qBAAIJ,MAAO+B,GACdhC,CAAAA,GAAMC,EAAAA;AAGJ2M,YAAAA,MACFA,GAAY,EACVmB,cAAAA,MACAC,KAAAA,KAQJ7O,CAAAA;UAAAA,MAAAA,GAAK6C,EAAOc,EAAAA,QAAQ,SAAU7C,IAAAA;AAAAA,gBACxB4N,KAAK7F,MAAWA,KAAU,MAAM,MAAMhB,uBAAuB/G,EAKjEiM;AAAAA,+CAAmCnM,IAJlB,EACfkC,SAAS,KAAA,GAG8C,WACnD5B;AAAAA,kBAAAA,KAAM0K,aAAa8C,IAAI7L,GAAM/B,EAAAA,GAAM6N,QAAQhO,EAAAA,GAASC,IAAUmK,IAAcuC,EAE5E/F;AAAAA,+BAAiBrG,IAAKhB,CAAAA,IACxB6K,GAAazH,KAAK,CAACoL,IAAIxN,IAAKyN,QAAQhO,EAASC,GAAAA,IAAUyN,IAAOvN,IAAKF,GAASlB,IAC3D0I,CAAAA,IAAAA,WAARlH,OACTmN,GAAMvN,EAAOI,IAAAA;YAAAA,CAAAA;UAAAA,CAAAA,GAKfuM,MACFA,GAAY,EACVqB,eAAAA,MACAD,KAAAA,KAQFjO,CAAAA;AAAAA,cAAAA,GAASsN,qBAAqB;AAAA,qBAC5Ba,KAAKlM,GAAMR,QAEXtB,KAAS,SAASA,OAAOC,IACrBA;AAAAA,kBAAAA,EAAAA,MAAK6B,KAAQ;AAAA,oBAEb6L,KAAK7F,MAAWA,KAAU,MAAM,MAAM7H;AAK1C+L,mDAAmCnM,IAJlB,EACfkC,SAAAA,MAGuD,GAAA,WAAA;AAAA,sBACnD5B,KAAM0K,aAAa8C,IAAItG,QAAWuG,QAAQhO,EAAAA,GAASC,IAAUmK,IAAcuC,EAE3E/F;AAAAA,mCAAiBrG,IAAKhB,CAAAA,IACxB6K,GAAazH,KAAK,CAACoL,IAAIxN,IAAKyN,QAAQhO,EAASC,GAAAA,IAAUyN,IAAOrN,IAAGJ,GAASlB,IAAAA,CAAAA,IAAAA,WACjEwB,OACTmN,GAAMrN,EAAAA,IAAKE;gBAMVF,CAAAA;cAAAA;YAAAA,GAAAA,KAAI,GAAGA,KAAI+N,IAAI/N,KACtBD,CAAAA,GAAOC,EAAAA;AAGLyM,YAAAA,MACFA,GAAY,EACVuB,wBAAAA,MACAH,KAAAA,KAKCR,CAAAA;UAAAA;AAAAA,iBAAAA;QAAAA;AAAAA,iBAiDA9M,QAAQsH,IAAShG,IAAOjC,IAAUmK,IAAckE,IAAa3B,IAAyBG,IAAAA;AAAAA,mBAEzFyB,KAAYD,KAAc9C,GAAKjD,uBAAuBiD,GAAKhD,yBAC3DnI,KAAIkO,GAAU7M,QAEXrB,QAAK;AACN0I,gBAAAA,KAAWwF,GAAUlO,EAAAA;AAAAA,gBAErB0I,GAASpI,KAAKuB,IAAOjC,EAAAA,GAAW;AAC9BlB,kBAAAA,KAAOgK,GAAShK;AAAAA,kBAEhByM,GAAK/C,SAAS1J,EAAO,GAAA;AAAA,oBAOnByP,KAAW9F,GAAMR,EAGrBQ;AAAAA,gBAAAA,GAAMR,EAAWsG,IAAAA,KAAW,CAACzP,EAAAA,EAAM0P,OAAOD,EAAAA,IAAYzP;cAAAA;AAAAA,qBAGxDgD,OAAOwK,OAAOtM,IAAU,EACtBlB,MAAMA,IACNsO,UAAU,KAAA,CAAA,GAAA,CAGP7D,MAAST,GAAS2F,gBAAkB3F,GAASnI,WAU9CkM,MACFA,GAAY,EACV6B,WAAW,KAAA,CAAA,GAOR1D,aAAa/C,IAASa,GADTS,MAAAA,CAAST,GAAS2F,eAAe,YAAY,cAAA,EACZxM,IAAOjC,EAAAA,GAAWD,MAAU,YAAYC,IAAUmK,IAAcuC,IAAyB5N,EAAAA,MAlBxI+N,MACFA,GAAY,EACV8B,cAAAA,KAIG3D,CAAAA,GAAAA,aAAa/C,IAAShG,IAAOlC,MAAU,YAAYC,IAAUmK,IAAcuC,IAAyB5N,EAAAA;YAAAA;UAAAA;AAAAA,iBAgB1GmD;QAGFyJ;AAAAA,eAAAA,GAAiBjK,SAAS8H,MAAQP,GAAKM,qBAAqB,WAC3D;AAAA,gBAAA,IAAIhI,UAAU,iDAAA;QAAA,EAD6C,IAE7D6D,QAAQU,QAAQqE,GAAcrK,IAAK6L,EAAAA,CAAAA,EAAmBrG,KAAKuG,MAAAA,IAAAA,CAAWrC,MAAQP,GAAKM,qBAAqB,WAAA;AAAA,gBACtG,IAAIhI,UAAU,iDADwF;QAAA,EAAA,IAM5G0H,GAAKC,mBAAmBM,KAAO,CAACqC,OAAO/L,EAAAA,CAAAA,IAAQ0J,KAAOqC,OAAO/L,EAAOsF,IAAAA,QAAQU,QAAQ+F,OAAO/L,EAU9F,CAAA;MAAA,EAAA,GAAA,EACDK,KAAK,mBACL+B,OAAO,SAAS2M,gBAAgB3P,IAAKe,IAAUgJ,IAAAA;AAAAA,eACtChK,KAAKmK,YAAYlK,IAAKe,IAAU4C,eAAeA,eAAe,EACnE0G,oBAAAA,KACCN,GAAAA,EAAAA,GAAO,CAAA,GAAI,EACZO,MAAM,KAAA,CAAA,CAAA;MAAA,EAAA,GAUT,EACDrJ,KAAK,oBACL+B,OAAO,SAAS4M,iBAAiB5P,IAAKe,IAAUgJ,IACvChK;AAAAA,eAAAA,KAAKmK,YAAYlK,IAAKe,IAAU4C,eAAeA,eAAe,EACnE0G,oBAAAA,KACCN,GAAAA,EAAAA,GAAO,CAAA,GAAI,EACZO,MAAM,MAAA,CAAA,CAAA;MAAA,EAAA,GAeT,EACDrJ,KAAK,UACL+B,OAAO,SAASrB,OAAO3B,IAAK+J,IAAAA;AAAAA,YACtBP,KAAQxJ,MAAOA,GAAIgN;AAAAA,YAAAA,CAElBxD,GACIxJ,QAAAA;AAAAA,YAAAA,SAKLwJ,GAAAA,QACKxJ,GAAIiN;AAAAA,YAOT3C,MAJJP,KAAOpG,eAAeA,eAAe,EACnC2G,MAAAA,KACCvK,GAAAA,KAAKqJ,OAAUW,GAAAA,EAAAA,GAEAO,MACduF,KAAqB,CAAA,GACrB9O,KAAW,CAAA,GACX+O,KAAAA;AAIAtG,QAAAA,GAAMyD,KAAKlF,cAAcyB,GAAMyD,CAAAA,MACjCjN,KAAMA,GAAIiN,GACVzD,KAAQA,GAAMyD,GACd6C,KAAe;AAAA,YAGbxD,KAAOvM;AAAAA,iBAgBFgQ,eAAelQ,IAAMwB,IAGxBqJ;AAAAA,cAAAA,KADQzG,eADDqI,GAAK/C,SAAS1J,EAAAA,KAAS,CAAA,GACD,CAAA,EACb,CAEf6K;AAAAA,cAAAA,CAAAA,GAAAA,OACG,IAAIsF,MAAM,wBAAwBnQ,EAAAA;AAAAA,iBAOtCyK,MAAU,EAAA,YAAYI,MAEjBrJ,KAGFqJ,GAAQJ,MAAQI,GAAQ/I,SAAS,WAAY2I,CAAAA,MAAQI,GAAQuF,cAAc,gBAAgB,QAAA,EAAU5O,IAAKN,EAAAA;QAAAA;AAAAA,YAiG/GmP,KAAkB,CAAA;AAAA,iBAqGbC,eAAeC,IAAAA;AAAAA,iBACf1I,iBAAiB0I,IAAOxO,CAAa2G,IAAAA,SAAY6H;QAItDxP;AAAAA,YAAAA,IADAQ,KAlMKiP,SAAAA,qBAAAA;AAAAA,cAGHC,KAAmB,CAAA;AAAA,cACvBzN,OAAO0N,QAAQ/G,EAAO1F,EAAAA,QAAQ,SAAU0M,IAAAA;AAAAA,gBAClCC,KAAQxM,eAAeuM,IAAO,CAAA,GAC9BxH,KAAUyH,GAAM,CAChB5Q,GAAAA,KAAO4Q,GAAM,CAAA;AAEJ,oBAAT5Q,MAAAA,CAAAA,EAUD0P,OAAO1P,EAAAA,EAAMiE,QAAQ,SAAUjE,IAEpBoE;AAAAA,6BADAqI,GAAK/C,SAAS1J,EAAAA,KAAS,CAAC,MAAM,CAAA,CACR,GAAA,CAAA,EAChB,CAAG6Q,EAAAA,UAOrBJ,GAAiB7M,KAAK,EACpBuF,SAASA,IACTnJ,MAAMA,GAED2J,CAAAA,GAAAA,OAAAA,GAAMR,EAIZsH;YAAAA,CAAAA;UAAAA,CAAAA,GAAAA,GAAiB9N,OAWf8N,QAAAA,GAAiBK,KAAK5H,gBAAAA,EAAkB6H,OAAO,SAASC,QAAQzP,IAAwB0P,IACzF9H;AAAAA,gBAAAA,KAAU8H,GAAM9H,SAChBnJ,KAAOiR,GAAMjR;AAEb0H,gBAAAA,WAAWnG,EACNA,EAAAA,QAAAA,GAAuBgF,KAAK,SAAU/E,IACpCwP;AAAAA,qBAAAA,QAAQxP,IAAK,EAClB2H,SAASA,IACTnJ,MAAMA,GAAAA,CAAAA;YAAAA,CAAAA;AAAAA,gBAMRwB,KAAMZ,cAAaT,IAAKgJ,EAAAA;AAAAA,gBAGxBtB,iBAFJrG,KAAM0O,eAAelQ,IAAMwB,EAEDhB,GAAAA,CAAAA,EAAAA,QACjBgB,GAAI+E,KAAK,SAAUS,IAAAA;AAAAA,kBACpBvF,KAASkH,aAAaxI,IAAKgJ,IAASnC,EAAAA;AAEpCvF,cAAAA,OAAWuF,OACb7G,KAAMsB;YAAAA,CAAAA;AAAAA,gBAORA,KAASkH,aAAaxI,IAAKgJ,IAAS3H,EAEpCC;AAAAA,YAAAA,OAAWD,OACbrB,KAAMsB;UAIPiH,GAAAA,MAAAA;QAAAA,EA8GwB8H;AAGzB3I,eAAAA,iBAAiBtG,IAAwBf,CAAAA,IAC3CO,KAAMQ,GAAuBgF,KAAK,WAAA;AAAA,iBACzBpG;QAGTY,CAAAA,KAAAA,KAAAA,SAtGOmQ,QAAQ/H,IAAShG,IAAOT,IAAQiM,IAAOvN,IAAAA;AAAAA,cAAAA,CAC1C6O,MAA4B,aAAZ9G,IAIhBnJ;AAAAA,gBAAAA,KAAO2J,GAAMR,EAAAA,GACb0F,KAAQhO,EAAQsC,EAEhB0L;AAAAA,gBAAAA,MAAS3G,cAAc/E,EAAAA,GAAQ;AAE7BgO,kBAAAA,KAAStC,KAAQ,IAAItK,MAAMpB,GAAMR,MAAU,IAAA,CAAA;AAAA,mBAG/CrC,EAAK6C,EAAAA,EAAOc,QAAQ,SAAUvC,IACxBF;AAAAA,oBAAAA,KAAM0P,QAAQ/H,MAAWA,KAAU,MAAM,MAAMhB,uBAAuBzG,EAAAA,GAAIyB,GAAMzB,EAAAA,GAAIgB,MAAUyO,IAAQA,IAAQzP,EAAAA,GAE9GC,KAAM,SAASA,IAAIqF,IAAAA;AAAAA,yBACjBa,iBAAiBb,IAAGjF,CACtBoP,IAAAA,GAAOzP,EAAKgH,IAAAA,SAAAA,WACH1B,OACTmK,GAAOzP,EAAAA,IAAKsF,KAGPA;gBAAAA;AAGLa,iCAAiBrG,IAAKhB,CACxB6P,IAAAA,GAAgBzM,KAAKpC,GAAI+E,KAAK,SAAUxF,IAC/BY;AAAAA,yBAAAA,GAAIZ,EAGbY;gBAAAA,CAAAA,CAAAA,IAAAA,GAAIH,EAGR2B;cAAAA,CAAAA,GAAAA,KAAQgO,IAEDnB,GAAmBrN,UAAQ;AAAA,oBAC5ByO,KAAuBhN,eAAe4L,GAAmB,CAAA,GAAI,CAC7DqB,GAAAA,KAAUD,GAAqB,CAAA,GAC/B9I,KAAU8I,GAAqB,CAC/BE,GAAAA,KAAUF,GAAqB,CAAA,GAC/B1P,KAAI0P,GAAqB,CAEzB5P,GAAAA,KAAMZ,cAAayQ,IAAS/I,EAGpBI;AAAAA,oBAAAA,WAARlH,GACF8P;AAAAA,gBAAAA,GAAQ5P,EAAKF,IAAAA,IAKfwO,GAAmBnE,OAAO,GAAG,CAAA;cAAA;YAAA;AAAA,gBAAA,CAI5B7L,GACImD,QAAAA;AAAAA,gBAGI,QAATnD,IAAc;AACZuR,kBAAAA,KAAO3Q,cAAa8B,IAAQS,GAAM4C,MAAM,CAE/B2C,CAAAA;AAAAA,qBAAAA,WAAT6I,MAEFvB,GAAmBpM,KAAK,CAAClB,IAAQS,GAAM4C,MAAM,CAAA,GAAI4I,IAAOvN,EAAAA,CAAAA,GAGnDmQ;YAIF;AAAA,mBAAA,CAAA,EAAG7B,OAAO1P,EAAAA,EAAM+Q,OAAO,SAASC,QAAQxP,IAAKgQ,IAC9C3J;AAAAA,qBAAAA,iBAAiBrG,IAAKhB,CAAAA,IACjBgB,GAAI+E,KAAK,SAAUS,IAAAA;AAAAA,uBAEjBgK,QAAQhK,IAAGwK,EAIftB;cAAAA,CAAAA,IAAAA,eAAesB,IAAKhQ,EAAAA;YAAAA,GAC1B2B,EAqBG+N;UAAAA;QAAAA,EAAQ,IAAI/Q,IAAK,IAEnBkQ,GAAAA,GAAgB1N,WAElB5B,KAAMP,EAAeuG,QAAQhG,EAAAA,EAAKwF,KAAK,SAAUkL,IACxCjR;AAAAA,iBAAAA,EAAe8K,IAAI,CAC1BmG,EAAG/B,EAAAA,OAAOW,EACT9J,CAAAA;QAAAA,CAAAA,EAAAA,KAAK,SAAUmL,IAAAA;AAAAA,iBACJtN,eAAesN,IAAO,CACpB,EAAA,CAAA;QAAA,CAAA,KAObhK,WAAW3G,EAAAA,IAAO0J,MAAQP,GAAKM,qBAAqB,WAAA;AAAA,gBACnD,IAAIhI,UAAU,iDADqC;QAAA,EAAA,IAErDqF,iBAAiB9G,IAAKP,CAAkBO,IAAAA,GAAIqF,EAAEG,KAAK+J,cAAkBvP,IAAAA,KAAAA,CAAO0J,MAAQP,GAAKM,qBAAqB,WAAA;AAAA,gBAC5G,IAAIhI,UAAU,iDAD8F;QAAA,EAAA,IAE9GiI,KAAO6F,eAAevP,EAAOsF,IAAAA,QAAQU,QAAQuJ,eAAevP,EASnE,CAAA;MAAA,EAAA,GAAA,EACDK,KAAK,cACL+B,OAAO,SAASwO,WAAWxR,IAAK+J,IACvBhK;AAAAA,eAAAA,KAAK4B,OAAO3B,IAAK2D,eAAeA,eAAe,EACpD0G,oBAAoB,KAAA,GACnBN,EAAO,GAAA,CAAA,GAAI,EACZO,MAAAA,KASH,CAAA,CAAA;MAAA,EAAA,GAAA,EACDrJ,KAAK,eACL+B,OAAO,SAASiN,YAAYjQ,IAAK+J,IACxBhK;AAAAA,eAAAA,KAAK4B,OAAO3B,IAAK2D,eAAeA,eAAe,EACpD0G,oBAAAA,KACCN,GAAAA,EAAAA,GAAO,CAAA,GAAI,EACZO,MAAM,MAAA,CAAA,CAAA;MAAA,EAAA,GAiBT,EACDrJ,KAAK,YACL+B,OAAO,SAASyO,SAASC,IAAc3H,IAAAA;AAAAA,eACrCA,KAAOA,MAAQ,CAAA,GACZwF,CAAAA,EAAAA,OAAOmC,EAAc5N,EAAAA,QAAQ,SAAS6N,EAAEC,IACrCrL;AAAAA,cAAAA,KAAQxG;AAGRW,cAAAA,EAAQkR,EACHA,EAAAA,QAAAA,GAAS5K,IAAI,SAAU6K,IACrBF;AAAAA,mBAAAA,EAAEhM,KAAKY,IAAOsL,EAIzBD;UAAAA,CAAAA;AAAAA,UAAAA,MAAYzR,EAAKyR,EAAAA,EAAU9N,QAAQ,SAAUgO,IAAAA;AAAAA,gBAC5B,QAAXA,GAAAA,OACI,IAAIzP,UAAU,sEACf;AAAA,gBAAI1B,QAAQoR,WAAWjE,SAASgE,EAAAA,EAAAA,OAC/B,IAAIzP,UAAU,oDAGlB2P;AAAAA,gBAAAA,KAAOJ,GAASE,EAAAA,GAChBzC,KAAY2C,MAAQA,GAAKC,mBAAmBlS,KAAKsJ,uBAAuBtJ,KAAKuJ,yBAC7E4I,KAAmB7C,GAAU/L,OAAO,SAAUgO,IACzCA;AAAAA,qBAAAA,GAAEzR,SAASiS;YAAAA,CAAAA;AAAAA,gBAGhBI,GAAiB1P,WAEnB6M,GAAU3D,OAAO2D,GAAUhH,QAAQ6J,GAAiB,CAAA,CAAA,GAAK,CAClDnS,GAAAA,OAAAA,KAAKwJ,SAASuI,EAAAA,GAAAA,OACd/R,KAAKyJ,MAAMsI,EAGA,IAAA,cAAA,OAATE,IAAqB;AAAA,kBAE1BG,KAAQH;AACZA,cAAAA,KAAO,EACLvQ,MAAM,SAASA,KAAK2Q,IAAAA;AAAAA,uBACXA,MAAKA,GAAEpQ,gBAAgBmQ;cAAAA,GAEhCzQ,SAAS,SAASA,QAAQ0Q,IAAAA;AAAAA,uBACjBzO,eAAe,CAAA,GAAIyO,EAE5BzQ;cAAAA,GAAAA,QAAQ,SAASA,OAAOyQ,IACfvP;AAAAA,uBAAAA,OAAOwK,OAAOxK,OAAOwP,OAAOF,GAAMlQ,SAAYmQ,GAAAA,EAAAA;cAAAA,EAAAA;YAAAA,WAGhD1R,EAAQsR,EAAO,GAAA;AAAA,kBAEpBM,KAASrO,eADD+N,IACuB,CAAA;AAKnCA,cAAAA,KAAO,EACLvQ,MALS6Q,GAAO,CAMhB5Q,GAAAA,SALY4Q,GAAO,CAAA,GAMnB3Q,QALW2Q,GAAO,CASjBN,EAAAA;YAAAA;AAAAA,gBAAAA,MAASA,GAAKvQ,MAAAA;AAAAA,kBAIf8Q,KAAc,EAChB1S,MAAMiS,IACNrQ,MAAMuQ,GAAKvQ,KAAK+Q,KAAKR,EAGnBA,EAAAA;AAAAA,cAAAA,GAAKtQ,YACP6Q,GAAY7Q,UAAUsQ,GAAKtQ,QAAQ8Q,KAAKR,EAGtCA,IAAAA,GAAKxC,iBACP+C,GAAY/C,eAAewC,GAAKxC,aAAagD,KAAKR,EAAAA;AAAAA,kBAGhDS,KAAiC,YAAA,OAAlB1I,GAAK2I,WAAwB3I,GAAK2I,WAAW3I,GAAK2I,WAAW,IAAI3E,OAAOG;AAEvF8D,kBAAAA,GAAKC,mBACF5I,KAAAA,qBAAqBqC,OAAO+G,IAAO,GAAGF,EAAAA,IAAAA,KAEtCjJ,wBAAwBoC,OAAO+G,IAAO,GAAGF,EAI5CP,GAAAA,GAAKrQ,UAAUqQ,GAAK/B,aAAa;AAAA,oBAC/B0C,KAAa,CAAA;AAEbX,gBAAAA,GAAKrQ,WACPgR,GAAWhR,SAASqQ,GAAKrQ,OAAO6Q,KAAKR,EAAAA,IAGnCA,GAAK/B,gBACP0C,GAAW1C,cAAc+B,GAAK/B,YAAYuC,KAAKR,EAAAA,IAAAA,KAG5CzI,SAASuI,EAAAA,IAAU,CAACa,IAAY,EACnCjC,OAAOsB,GAAKC,iBAAAA,CAAAA;cAAAA;AAAAA,mBAKXzI,MAAMsI,EAAAA,IAAUE;YACpBjS;UAAAA,GAAAA,IAAAA;QAAAA,GACFA,IACIA,GAAAA;MAAAA,EAAAA,CAAAA,CAAAA,GAIJY;IAtsCkB,EAAA,GAgtCvBiB,IAAY,SAASA,YAAAA;AACvBM,sBAAgBnC,MAAM6B,SAIxBA;IAAAA;AAAAA,MAAUuE,oBAAoB,oBAG9BxF,EAAQiB,YAAYA,GAEpBjB,EAAQuF,UAAU7F,GAElBM,EAAQ4G,aAAaA,YACrB5G,EAAQH,cAAcA,cACtBG,EAAQ+G,mBAAmBA,kBAC3B/G,EAAQ8G,WAAWA,UACnB9G,EAAQoH,gBAAgBA,eACxBpH,EAAQiS,eA96CR,SAASA,aAAavR,IAAAA;AAAAA,UAAAA,CACfA,MAA4B,aAArBb,aAAYa,EAAAA,EAAAA,QAAAA;AAIpBwG,UAAAA,KAAQtH,EAASc,EAAAA;AAAAA,aAAAA,CAEhBwG,OAKEH,iBAAiBrG,IAAKwB,MAAAA,KAAW+P,aAAa/K,EAAAA;IAAAA,GAm6CvDlH,EAAQqH,yBAAyBA,wBACjCrH,EAAQuH,2BAA2BA,0BACnCvH,EAAQF,eAAeA,eACvBE,EAAQmM,cAj1CR,SAASA,YAAY9J,IAAAA;AAAAA,aACF,SAAVA,KAAiB,SAASoB,MAAM1D,QAAQsC,EAAS,IAAA,UAAUnB,QAAQmB,EAAAA;IAAAA,GAi1C5ErC,EAAQoR,aAAa,CAAC,QAAQ,WAAW,UAAU,UAAU,SAAS,QC1yDtE;AAAA,aCTMc,IAAa,EACfA,YAAY,EACRpR,MAAAA,SAAAA,KAAM2Q,IAAGrR,IAAAA;AAAAA,aAAmBJ,EAAQiS,aAAaR,EACjD1Q;IAAAA,GAAAA,SAAAA,SAAAA,QAAS+D,IAAgBA;AAAAA,aAAAA,SAAAA,iBAAAA,IAAAA;AAAAA,iBAAAA,KAAAA,GAAAA,KAAAA,UAAAA,QAAAA,MAAAA;AAAAA,cAAAA,KAAAA,QAAAA,UAAAA,EAAAA,IAAAA,UAAAA,EAAAA,IAAAA,CAAAA;AAAAA,UAAAA,KAAAA,IAAAA,UAAAA,OAAAA,EAAAA,GAAAA,IAAAA,EAAAA,QAAAA,SAAAA,IAAAA;AAAAA,8BAAAA,IAAAA,IAAAA,GAAAA,EAAAA,CAAAA;UAAAA,CAAAA,IAAAA,OAAAA,4BAAAA,OAAAA,iBAAAA,IAAAA,OAAAA,0BAAAA,EAAAA,CAAAA,IAAAA,UAAAA,OAAAA,EAAAA,CAAAA,EAAAA,QAAAA,SAAAA,IAAAA;AAAAA,mBAAAA,eAAAA,IAAAA,IAAAA,OAAAA,yBAAAA,IAAAA,EAAAA,CAAAA;UAAAA,CAAAA;QAAAA;AAAAA,eAAAA;MAAAA,EAAAA,CAAAA,GAAAA,EAAAA;IAAAA,GACzB9D,QAAQmR,SAAAA,OAAAA,IAAAA;AAAAA,aAAYA;ICNtBC,EAAAA,EAAAA,GAAAA,IAAoB,CACtB,EACIA,mBAAmB,EACfd,kBAAkB,MAClBxQ,MAAM2Q,SAAAA,KAAAA,IAAGrR,IACDqD;AAAAA,aAAAA,CAAAA,CAAAA,MAAM1D,QAAQ0R,EAAAA,MAMVvP,OAAO1C,KAAKiS,EAAGY,EAAAA,KAAK,SAACzR,IAAAA;AAAAA,eAQV0R,OAAOlF,OAAOmF,SAAS3R,EAAAA,CAAAA,MAAQA;MAG1CR,CAAAA,MAAAA,GAASqN,YAAY,UACrBrN,GAAS6N,YAAAA,OAEN;IAAA,GAIflN,SAASiG,SAAAA,QAAAA,IAAG5G,IAERA;AAAAA,aAAAA,GAASsN,sBAAsB,MACxB1G;IAEXhG,GAAAA,QAAAA,SAAAA,OAAQ4D,IACAnB;AAAAA,UAAAA,MAAM1D,QAAQ6E,EAAAA,EAAAA,QACPA;AAELrB,UAAAA,KAAM,CAAA;AAKZrB,aAAAA,OAAO1C,KAAKoF,EAAAA,EAAGzB,QAAQ,SAAC7C,IACdI;AAAAA,YAAAA,KAAMkE,GAAEtE,EAAAA;AACdiD,QAAAA,GAAIjD,EAAAA,IAAOI;MAER6C,CAAAA,GAAAA;IAAAA,EAAAA,EAAAA,GAInB,EACIiP,iBAAiB,EACb1R,MAAAA,SAAAA,KAAM2Q,IAAGrR,IAAAA;AAAAA,aAAAA,WACSqR,MAAAA,UAAqBrR,GAASkC;IAEhDvB,GAAAA,SAAAA,SAAAA,QAAS+D,IAAY;AAAA,aAAA;IAAA,GACrB9D,QAAQmR,SAAAA,OAAAA,IAAAA;IAAAA,EAAAA,EAAAA,CAAAA,GCrDdM,IAAQ,EACVA,OAAO,EACH3R,MAAM2Q,SAAAA,KAAAA,IAAGrR,IACe;AAAA,aAAA,WAANqR,OACTrR,GAASkC,WAAa,EAAA,aAAalC;IAE5CW,GAAAA,SAAAA,SAAAA,QAAS+D,IAAY;AAAA,aAAA;IAAA,GACrB9D,QAAAA,SAAAA,OAAQmR,IAGG;AAAA,aAAA,IAAInS,EAAQiB;IAAAA,EAAAA,EAAAA,GCTzByR,IAAmB,EAErBC,cAAc,EACV7R,MAAM2Q,SAAAA,KAAAA,IAAAA;AAAAA,aACgC,aAA3BzR,EAAQH,YAAY4R,EAAAA,KAAgC,aAAbvQ,UAAOuQ,EAEzD1Q;IAAAA,GAAAA,SAAAA,SAAAA,QAASoR,IAAYG;AAAAA,aAAAA,OAAOH,EAC5BnR;IAAAA,GAAAA,QAAAA,SAAAA,OAAQmR,IAAY;AAAA,aAAA,IAAIG,OAAOH,EAAAA;IAAAA,EAAAA,GAGnCS,eAAe,EACX9R,MAAM2Q,SAAAA,KAAAA,IAAAA;AAAAA,aACgC,cAA3BzR,EAAQH,YAAY4R,EAAAA,KACV,aAAbvQ,UAAOuQ,EAEf1Q;IAAAA,GAAAA,SAAAA,SAAAA,QAASkG,IAAYkH;AAAAA,aAAAA,QAAQlH,EAC7BjG;IAAAA,GAAAA,QAAAA,SAAAA,OAAQiG,IAEG;AAAA,aAAA,IAAIkH,QAAQlH,EAAAA;IAAAA,EAAAA,GAI3B4L,cAAc,EACV/R,MAAM2Q,SAAAA,KAAAA,IAAAA;AAAAA,aACgC,aAA3BzR,EAAQH,YAAY4R,EAAAA,KAAgC,aAAbvQ,UAAOuQ,EAEzD1Q;IAAAA,GAAAA,SAAAA,SAAAA,QAAS+D,IAAYsI;AAAAA,aAAAA,OAAOtI,EAC5B9D;IAAAA,GAAAA,QAAAA,SAAAA,OAAQ8D,IAAY;AAAA,aAAA,IAAIsI,OAAOtI,EAAAA;IAAAA,EAAAA,EAAAA,GC5BjCgO,IAAiB,CCJX,EACRC,KAAK,EACDjS,MAAAA,SAAAA,KAAM2Q,IAAYrE;AAAAA,aAAAA,OAAOC,MAAMoE,EAAAA;IAAAA,GAC/B1Q,SAAS+D,SAAAA,QAAAA,IAAAA;AAAAA,aAAY;IACrB9D,GAAAA,QAAAA,SAAAA,OAAQmR,IAAY/E;AAAAA,aAAAA,OAAO4F;ICJlB,EAAA,EAAA,GAAA,EACbC,UAAU,EACNnS,MAAM2Q,SAAAA,KAAAA,IAAAA;AAAAA,aAAYA,OAAMrE,OAAOG;IAC/BxM,GAAAA,SAAAA,SAAAA,QAAS+D,IAAY;AAAA,aAAA;IAAA,GACrB9D,QAAQmR,SAAAA,OAAAA,IAAAA;AAAAA,aAAY/E,OAAOG;IAAAA,EAAAA,EAAAA,GCJV,EACrB2F,kBAAkB,EACdpS,MAAAA,SAAAA,KAAM2Q,IAAYA;AAAAA,aAAAA,OAAMrE,OAAOE;IAAAA,GAC/BvM,SAAS+D,SAAAA,QAAAA,IAAAA;AAAAA,aAAY;IACrB9D,GAAAA,QAAAA,SAAAA,OAAQmR,IAAY/E;AAAAA,aAAAA,OAAOE;ICF7B6F,EAAAA,EAAAA,CAAAA,GAAAA,IAAO,EACTA,MAAM,EACFrS,MAAAA,SAAAA,KAAM2Q,IAAuC;AAAA,aAAA,WAA3BzR,EAAQH,YAAY4R,EACtC1Q;IAAAA,GAAAA,SAAAA,SAAAA,QAASqS,IACCC;AAAAA,UAAAA,KAAOD,GAAGE,QACZlG;AAAAA,aAAAA,OAAOC,MAAMgG,EAAAA,IACN,QAEJA;IAAAA,GAEXrS,QAAQqS,SAAAA,OAAAA,IAAAA;AAAAA,aACS,UAATA,KACO,IAAIE,KAAKnG,OAAO4F,GAAAA,IAEpB,IAAIO,KAAKF,ECdtBG;IAAAA,EAAAA,EAAAA,GAAAA,IAAS,EACXA,QAAQ,EACJ1S,MAAAA,SAAAA,KAAM2Q,IAAuC;AAAA,aAAA,aAA3BzR,EAAQH,YAAY4R,EACtC1Q;IAAAA,GAAAA,SAAAA,SAAAA,QAAS0S,IACE;AAAA,aAAA,EACHvQ,QAAQuQ,GAAKvQ,QACbwQ,QAAQD,GAAKtU,SAAS,MAAM,OACvBsU,GAAKE,aAAa,MAAM,OACxBF,GAAKG,YAAY,MAAM,OACvBH,GAAKI,SAAS,MAAM,OACpBJ,GAAKK,UAAU,MAAM,IAAA;IAAA,GAGlC9S,QAASkC,SAAAA,OAAAA,IAAAA;AAAAA,UAAAA,KAAAA,GAAAA,QAAQwQ,KAAAA,GAAAA;AAAiB,aAAA,IAAIK,OAAO7Q,IAAQwQ,ECbvDrN;IAAAA,EAAAA,EAAAA,GAAAA,IAAM,EACRA,KAAK,EACDvF,MAAAA,SAAAA,KAAM2Q,IAAuC;AAAA,aAAA,UAA3BzR,EAAQH,YAAY4R,EACtC1Q;IAAAA,GAAAA,SAAAA,SAAAA,QAASiT,IAAiBA;AAAAA,aAAAA,qBAAAA,GAAGpE,QAC7B5O,CAAAA;IAAAA,GAAAA,QAAAA,SAAAA,OAAQ4O,IAAkB;AAAA,aAAA,IAAIqE,IAAIrE,EAAAA;IAAAA,EAAAA,EAAAA,GCJpC/O,IAAM,EACRA,KAAK,EACDC,MAAM2Q,SAAAA,KAAAA,IAAAA;AAAAA,aAAuC,UAA3BzR,EAAQH,YAAY4R,EAAAA;IAAAA,GACtC1Q,SAASmT,SAAAA,QAAAA,IAAAA;AAAAA,aAAAA,qBACMA,GAAGhI,OAAAA,CAAAA;IAAAA,GAElBlL,QAAQkL,SAAAA,OAAAA,IAAAA;AAAAA,aAAiB,IAAIE,IAAIF,EZDrCiI;IAAAA,EAAAA,EAAAA,GAAAA,IAAQ,oEAERC,IAAS,IAAIC,WAAW,GAEnB7T,GAAAA,IAAI,GAAGA,IAAI2T,EAAMtS,QAAQrB,IAChC4T,GAAOD,EAAMG,WAAW9T,CAAMA,CAAAA,IAAAA;AAUhC,QAAI+T,IAAS,SAASA,QAAOC,IAAaC,IAAYC,IAChDA;AAAAA,cAAAA,OACFA,KAAQF,GAAYG;AAGlBC,eAAAA,KAAQ,IAAIP,WAAWG,IAAaC,MAAc,GACtDC,EAAAA,GACIvP,KAAMyP,GAAM/S,QACZgT,KAAS,IAEJ7Q,KAAK,GAAGA,KAAKmB,IAAKnB,MAAM,EAC/B6Q,CAAAA,MAAUV,EAAMS,GAAM5Q,EAAO,KAAA,CAAA,GAC7B6Q,MAAUV,GAAmB,IAAZS,GAAM5Q,EAAY,MAAA,IAAI4Q,GAAM5Q,KAAK,CAAM,KAAA,CAAA,GACxD6Q,MAAUV,GAAuB,KAAhBS,GAAM5Q,KAAK,CAAA,MAAY,IAAI4Q,GAAM5Q,KAAK,CAAA,KAAM,CAC7D6Q,GAAAA,MAAUV,EAAsB,KAAhBS,GAAM5Q,KAAK,CAGzBmB,CAAAA;AAAAA,aAAAA,KAAM,KAAM,IACd0P,KAASA,GAAO5P,MAAM,GAAA,EAAS,IAAA,MACtBE,KAAM,KAAM,MACrB0P,KAASA,GAAO5P,MAAM,GAAA,EAAS,IAAA,OAG1B4P;IAOLC,GAAAA,IAAS,SAASA,QAAOD,IAIvBE;AAAAA,UAAAA,IAAUC,IAAUC,IAAUC,IAH9B/P,KAAM0P,GAAOhT,QACbsT,KAA+B,OAAhBN,GAAOhT,QACtByD,KAAI;AAG0B,cAA9BuP,GAAOA,GAAOhT,SAAS,CACzBsT,MAAAA,MAEkC,QAA9BN,GAAOA,GAAOhT,SAAS,CACzBsT,KAAAA;AAAAA,eAIAX,KAAc,IAAIxG,YAAYmH,EAAAA,GAC9BP,KAAQ,IAAIP,WAAWG,EAAAA,GAElBY,KAAM,GAAGA,KAAMjQ,IAAKiQ,MAAO,EAClCL,CAAAA,KAAWX,EAAOS,GAAOP,WAAWc,EACpCJ,CAAAA,GAAAA,KAAWZ,EAAOS,GAAOP,WAAWc,KAAM,CAAA,CAAA,GAC1CH,KAAWb,EAAOS,GAAOP,WAAWc,KAAM,CAAA,CAAA,GAC1CF,KAAWd,EAAOS,GAAOP,WAAWc,KAAM,CAAA,CAAA,GAC1CR,GAAMtP,IAAAA,IAAOyP,MAAY,IAAIC,MAAY,GACzCJ,GAAMtP,IAAAA,KAAmB,KAAX0P,OAAkB,IAAIC,MAAY,GAChDL,GAAMtP,IAAmB,KAAA,IAAX2P,OAAiB,IAAe,KAAXC;AAAAA,aAG9BV;Ia5EHA,GAAAA,IAAc,EAChBA,aAAa,EACT1T,MAAAA,SAAAA,KAAM2Q,IAAuC;AAAA,aAAA,kBAA3BzR,EAAQH,YAAY4R,EACtC1Q;IAAAA,GAAAA,SAAAA,SAAAA,QAASkG,IAAG7G,IAAAA;AACHA,MAAAA,GAASiV,YACVjV,GAASiV,UAAU,CAAA;AAEjBC,UAAAA,KAAQlV,GAASiV,QAAQ3N,QAAQT,EAAAA;AAAAA,aACnCqO,KAAS,KACF,EAACA,OAAAA,GAEZlV,KAAAA,GAASiV,QAAQvS,KAAKmE,EACfsN,GAAAA,EAAOtN,EAElBjG;IAAAA,GAAAA,QAAAA,SAAAA,OAAQuU,IAAKnV,IAAAA;AAAAA,UACJA,GAASiV,YACVjV,GAASiV,UAAU,CAAA,IAEJ,aAAfnU,UAAOqU,EAAAA,EAAAA,QACAnV,GAASiV,QAAQE,GAAID,KAAAA;AAAAA,UAE1BE,KAASV,EAAOS,EACtBnV;AAAAA,aAAAA,GAASiV,QAAQvS,KAAK0S,EACfA,GAAAA;IAAAA,EAAAA,EAAAA,GCrBbC,IAA0B,eAAA,OAATnW,OAAuBH,iBAASG,MAEjDoW,IAAc,CAAA;AACpB,KACI,aACA,cACA,qBACA,cACA,eACA,cACA,eACA,gBACA,cACFvS,EAAAA,QAAQ,SAAUwS,IAAAA;AAAAA,UACVC,KAAUD,IACVE,KAAaJ,EAAQG,EAEtBC;AAAAA,MAAAA,OAGLH,EAAYC,GAASG,YAAiB,CAAA,IAAA,EAClChV,MAAM2Q,SAAAA,KAAAA,IAAAA;AAAAA,eAAYzR,EAAQH,YAAY4R,EAAOmE,MAAAA;MAAAA,GAC7C7U,SAAAA,SAAAA,QAAAA,IAA0CX,IAAhCoV;AAAAA,YAAAA,KAAAA,GAAAA,QAAQf,KAAAA,GAAAA,YAAoBsB,KAAAA,GAARlU;AACrBzB,QAAAA,GAASiV,YACVjV,GAASiV,UAAU,CAAA;AAAA,YAEjBC,KAAQlV,GAASiV,QAAQ3N,QAAQ8N,EACnCF;AAAAA,eAAAA,KAAAA,KACO,EAACA,OAAAA,IAAOb,YAAAA,IAAY5S,QAAQkU,GAAAA,KAEvC3V,GAASiV,QAAQvS,KAAK0S,EAAAA,GACf,EACHQ,SAASzB,EAAOiB,EAAAA,GAChBf,YAAAA,IACA5S,QAAQkU,GAAAA;MAAAA,GAGhB/U,QAAQiV,SAAAA,OAAAA,IAAQ7V,IACPA;AAAAA,QAAAA,GAASiV,YACVjV,GAASiV,UAAU,CAAA;AAAA,YAGnBG,IADGf,KAA2CwB,GAA3CxB,YAAoBtP,KAAuB8Q,GAA/BpU,QAAamU,KAAkBC,GAAlBD,SAASV,KAASW,GAATX;AAErC,eAAA,WAAWW,KACXT,KAASpV,GAASiV,QAAQC,EAE1BE,KAAAA,KAASV,EAAOkB,EAAAA,GAChB5V,GAASiV,QAAQvS,KAAK0S,EAAAA,IAEnB,IAAIK,GAAWL,IAAQf,IAAYtP,ECnDtD;MAAA,EAAA;IAAA,CAAA;AAAA,QAAM+Q,IAAW,EACbA,UAAU,EACNpV,MAAM2Q,SAAAA,KAAAA,IAAAA;AAAAA,aAAuC,eAA3BzR,EAAQH,YAAY4R,EAAAA;IAAAA,GACtC1Q,SAA2CX,SAAAA,QAAAA,IAAAA,IAAAA;AAAAA,UAAjCoV,KAAAA,GAAAA,QAAQf,KAAAA,GAAAA,YAAYE,KAAAA,GAAAA;AACrBvU,MAAAA,GAASiV,YACVjV,GAASiV,UAAU,CAAA;AAEjBC,UAAAA,KAAQlV,GAASiV,QAAQ3N,QAAQ8N,EAAAA;AAAAA,aACnCF,KAAS,KACF,EAACA,OAAAA,IAAOb,YAAAA,IAAYE,YAAAA,GAE/BvU,KAAAA,GAASiV,QAAQvS,KAAK0S,EACf,GAAA,EACHQ,SAASzB,EAAOiB,EAChBf,GAAAA,YAAAA,IACAE,YAAAA,GAAAA;IAAAA,GAGR3T,QAAQiV,SAAAA,OAAAA,IAAQ7V,IACPA;AAAAA,MAAAA,GAASiV,YACVjV,GAASiV,UAAU,CAAA;AAAA,UAGnBG,IADGf,KAA0CwB,GAA1CxB,YAAYE,KAA8BsB,GAA9BtB,YAAYqB,KAAkBC,GAAlBD,SAASV,KAASW,GAATX;AAEpC,aAAA,WAAWW,KACXT,KAASpV,GAASiV,QAAQC,EAE1BE,KAAAA,KAASV,EAAOkB,EAAAA,GAChB5V,GAASiV,QAAQvS,KAAK0S,EAAAA,IAEnB,IAAIW,SAASX,IAAQf,IAAYE,ECX9CyB;IAAAA,EAAAA,EAAAA,GAAAA,IAAY,EACdC,cArBiB,EACjBvV,MAAAA,SAAAA,KAAM2Q,IAAYzR;AAAAA,aAAAA,EAAQ+G,iBAAiB0K,IAAG6E,KAAKC,QAAAA;IAAAA,GACnDxV,SAASyV,SAAAA,QAAAA,IAAAA;AAAAA,aAAYA,GAAEC,gBAAAA;IAAAA,GACvBzV,QAAQyH,SAAAA,OAAAA,IAAAA;AAAAA,aAAkB,IAAI6N,KAAKC,SAAS9N,GAAQiO,QAAQjO,EAAAA;IAAAA,EAAAA,GAmB5DkO,oBAhBuB,EACvB7V,MAAM2Q,SAAAA,KAAAA,IAAAA;AAAAA,aAAYzR,EAAQ+G,iBAAiB0K,IAAG6E,KAAKM,cACnD7V;IAAAA,GAAAA,SAAAA,SAAAA,QAAS8V,IAAcA;AAAAA,aAAAA,GAAIJ,gBAC3BzV;IAAAA,GAAAA,QAAAA,SAAAA,OAAQyH,IACG;AAAA,aAAA,IAAI6N,KAAKM,eAAenO,GAAQiO,QAAQjO,EAanDqO;IAAAA,EAAAA,GAAAA,kBATqB,EACrBhW,MAAAA,SAAAA,KAAM2Q,IAAYzR;AAAAA,aAAAA,EAAQ+G,iBAAiB0K,IAAG6E,KAAKS,YAAAA;IAAAA,GACnDhW,SAASiW,SAAAA,QAAAA,IAAAA;AAAAA,aAAaA,GAAGP,gBAAAA;IAAAA,GACzBzV,QAAQyH,SAAAA,OAAAA,IAAAA;AAAAA,aAAkB,IAAI6N,KAAKS,aAAatO,GAAQiO,QAAQjO,EAAAA;IAAAA,EAAAA,EAAAA;ACHpE,aAASwO,mBAAoBC,IA+CnBC;AAAAA,eAAAA,KAAQ,IAAI9C,WAAW6C,GAAIrV,MAAAA,GACxBrB,KAAI,GAAGA,KAAI0W,GAAIrV,QAAQrB,KAC5B2W,CAAAA,GAAM3W,EAAAA,IAAK0W,GAAI5C,WAAW9T,EAEvB2W;AAAAA,aAAAA,GAAM3B;IC/DjB;AAAA,QAAM4B,IAAO,EACTA,MAAM,EACFtW,MAAAA,SAAAA,KAAM2Q,IAAuC;AAAA,aAAA,WAA3BzR,EAAQH,YAAY4R,EACtC1Q;IAAAA,GAAAA,SAAAA,SAAAA,QAASsE,IACCgS;AAAAA,UAAAA,KAAM,IAAIC;AAAAA,UAChBD,GAAIE,iBAAiB,oCACrBF,GAAAA,GAAIG,KAAK,OAAOC,IAAIC,gBAAgBrS,EAAI,GAAA,KAAA,GACxCgS,GAAIM,KAAAA,GAIe,QAAfN,GAAIO,UAAiC,MAAfP,GAAIO,OAAAA,OACpB,IAAIvI,MAAM,sBAAsBgI,GAAIO,MAEvC;AAAA,aAAA,EACH1Y,MAAMmG,GAAEnG,MACR2Y,gBAAgBR,GAAIS,cACpB5S,MAAMG,GAAEH,MACR6S,cAAc1S,GAAE0S,aAAAA;IAAAA,GAGxB/W,QAASkE,SAAAA,OAAAA,IAAAA;AAAAA,UAAAA,KAAAA,GAAAA,MAAMhG,KAAAA,GAAAA,MAAM2Y,KAAAA,GAAAA,gBAAgBE,KAAAA,GAAAA;AAC1B,aAAA,IAAIC,KAAK,CAACf,mBAAmBY,EAAkB3S,CAAAA,GAAAA,IAAM,EACxDhG,MAAAA,IACA6Y,cAAAA,GAGRlJ,CAAAA;IAAAA,GAAAA,cAAAA,SAAAA,aAAcxJ,IACH;AAAA,aAAA,IAAIrF,EAAQuF,QAAQ,SAAUU,IAASD,IAOpCiS;AAAAA,YAAAA,KAAS,IAAIC;AACnBD,QAAAA,GAAOE,iBAAiB,QAAQ,WAAA;AAC5BlS,UAAAA,GAAQ,EACJ/G,MAAMmG,GAAEnG,MACR2Y,gBAAgBI,GAAOzM,QACvBtG,MAAMG,GAAEH,MACR6S,cAAc1S,GAAE0S,aAAAA,CAAAA;QAAAA,CAAAA,GAKxBE,GAAOE,iBAAiB,SAAS,WAAA;AAC7BnS,UAAAA,GAAOiS,GAAOG,KAElBH;QAAAA,CAAAA,GAAAA,GAAOI,mBAAmBhT,EAAAA;MAAAA,CAAAA;IAAAA,EAAAA,EAAAA,GCnDpCiT,IAAS,EACXA,QAAQ,EACJxX,MAAM2Q,SAAAA,KAAAA,IAAAA;AAAAA,aACkB,YAANA,OAAAA;IAAAA,GAElB1Q,SAAS+D,SAAAA,QAAAA,IAAAA;AAAAA,aAAYwN,OAAOxN,EAAAA;IAAAA,GAC5B9D,QAAQmR,SAAAA,OAAAA,IAAAA;AAAAA,aAAYoG,OAAOpG,EAAAA;IAAAA,EAAAA,EAAAA,GCL7BqG,IAAe,EACjBA,cAAc,EACV1X,MAAAA,SAAAA,KAAM2Q,IACkB;AAAA,aAAA,aAAbvQ,UAAOuQ,EAAAA,KAAkBzR,EAAQ+G,iBAAiB0K,IAAG8G,MAAAA;IAAAA,GAEhExX,SAAS+D,SAAAA,QAAAA,IAAAA;AAAAA,aAAYwN,OAAOxN,EAAAA;IAAAA,GAC5B9D,QAAQmR,SAAAA,OAAAA,IAAAA;AAAAA,aAGG,IAAIjQ,OAAOqW,OAAOpG,EAAAA,CAAAA;IAAAA,EAAAA,EAAAA,GCT/BsG,IAAY,EACdA,WAAW,EACP3X,MAAM2Q,SAAAA,KAAAA,IAAAA;AAAAA,aACgC,gBAA3BzR,EAAQH,YAAY4R,EAAAA,KAAsBA,GAAEiH;IAAAA,GAEvD7J,cAAcvO,SAAAA,aAAAA,IAAAA;AAAAA,aACH,IAAIN,EAAQuF,QAAQ,SAACU,IAASD,IAAAA;AAEjC2S,eAAOC,OAAOC,UAAU,OAAOvY,EAG1B6D,EAAAA,MAAAA,SAAAA,IAAAA;AAIG6B,UAAAA,GAAO7B,EAAAA;QAAAA,CAAAA,EAIbsB,KAAK,SAACqT,IACJ7S;AAAAA,UAAAA,GAAQ,EACJ6S,KAAAA,IACAC,WAAWzY,GAAIyY,WACfC,QAAQ1Y,GAAI0Y,OAK5BhY,CAAAA;QAAAA,CAAAA;MAAAA,CAAAA;IAAAA,GAAAA,QAAAA,SAAAA,OAAAA,IAAAA;AAAAA,UAAS8X,KAAAA,GAAAA,KAAKC,KAAAA,GAAAA,WAAWC,KAAAA,GAAAA;AAAAA,aACdL,OAAOC,OAAOK,UAAU,OAAOH,IAAKC,IAAAA,MAAiBC,EAAAA;IAAAA,EAAAA,EAAAA;AAAAA,WCNzD,CAIX9G,GAEAO,GACAL,GAAmBM,GAAkBI,GACrCK,GAAMK,GC5BQ,EACd0F,WAAW,EACPpY,MAAAA,SAAAA,KAAM2Q,IAAuC;AAAA,aAAA,gBAA3BzR,EAAQH,YAAY4R,EACtC1Q;IAAAA,GAAAA,SAAAA,SAAAA,QAASoY,IACE;AAAA,aAAA,EAEHhC,OAAWgC,qBAAAA,GAAEC,IACbC,GAAAA,OAAOF,GAAEE,OACTC,QAAQH,GAAEG,OAGlBtY;IAAAA,GAAAA,QAAAA,SAAAA,OAAQ4D,IACG;AAAA,aAAA,IAAI2U,UACP,IAAIC,kBAAkB5U,GAAEuS,KAAQvS,GAAAA,GAAEyU,OAAOzU,GAAE0U,MCbvC;IAAA,EAAA,EAAA,GAAA,EAChBG,aAAa,EACT3Y,MAAM2Q,SAAAA,KAAAA,IAAAA;AAAAA,aACgC,kBAA3BzR,EAAQH,YAAY4R,EAGtBA,KAAAA,MAAKA,GAAEiI,WAAqC,kBAA1BjI,GAAEiI,QAAQ7Z;IAAAA,GAErCkB,SAAS4Y,SAAAA,QAAAA,IAAAA;AAAAA,UACCC,KAASC,SAASC,cAAc,QAAA;AAAA,aAC1BF,GAAOG,WAAW,IAC1BC,EAAAA,UAAUL,IAAI,GAAG,CAOdC,GAAAA,GAAOK,UAElBjZ;IAAAA,GAAAA,QAAAA,SAAAA,OAAQ4D,IAUEgV;AAAAA,UAAAA,KAASC,SAASC,cAAc,QAChCI,GAAAA,KAAMN,GAAOG,WAAW,IACxBI,GAAAA,KAAMN,SAASC,cAAc,KAEnCK;AAAAA,aAAAA,GAAIhC,iBAAiB,QAAQ,WACzB+B;AAAAA,QAAAA,GAAIF,UAAUG,IAAK,GAAG,CAAA;MAAA,CAAA,GAE1BA,GAAIC,MAAMxV,IAGHgV;IAAAA,GAEXtK,aAAa1K,SAAAA,YAAAA,IAAAA;AAAAA,UACHgV,KAASC,SAASC,cAAc,QAAA,GAChCI,KAAMN,GAAOG,WAAW,IAAA,GACxBI,KAAMN,SAASC,cAAc,KAAA;AAAA,aAEnCK,GAAIhC,iBAAiB,QAAQ,WAAA;AACzB+B,QAAAA,GAAIF,UAAUG,IAAK,GAAG,CAE1BA;MAAAA,CAAAA,GAAAA,GAAIC,MAAMxV,IACHyV,kBAAkBT,EAAAA;IAAAA,EAAAA,EAAAA,GFlBjCxC,GGpCa,EACbA,MAAMA,EAAKA,MACXkD,UAAU,EACNxZ,MAAAA,SAAAA,KAAM2Q,IAAuC;AAAA,aAAA,eAA3BzR,EAAQH,YAAY4R,EACtC1Q;IAAAA,GAAAA,SAAAA,SAAAA,QAASwZ,IACChX;AAAAA,eAAAA,KAAM,CAAA,GACH/C,KAAI,GAAGA,KAAI+Z,GAAG1Y,QAAQrB,KAC3B+C,CAAAA,GAAI/C,EAAK+Z,IAAAA,GAAGC,KAAKha,EAAAA;AAAAA,aAEd+C;IAEXvC,GAAAA,QAAAA,SAAAA,OAAQ4D,IA6BG;AAAA,aAAA,KAAA,WAAA;AAAA,iBAAA,WAAA;AAAA,4BAAA,MAAA,QAAA,GAAA,KAnBM6V,SAASxX,UAAU,CACnBpB,GAAAA,KAAAA,SAASzC,KAAKqb,OAAO5Y;QAM9B;AAAA,eAAA,SAAA,eAAAsG,IAAAuS,IAAA/J,IAAA;AAAA,iBAAA+J,MAAA,oBAAAvS,GAAA,WAAAuS,EAAA,GAAA/J,MAAA,oBAAAxI,IAAAwI,EAAA,GAAAxI;QAAA,EAAA,UAAA,CAAA,EAAA,KAAA,QAAA,OAAA,SAAA,KAAMmN,IACKlW;AAAAA,iBAAAA,KAAKqb,OAAOnF,EAAAA;QAAAA,EAAAA,GAAAA,EAAAA,KAMlBnU,OAAOtB,aAAAA,KAAZ,SAEW,MAAA;AAAA,iBAAA;QAAA,EAAA,CAAA,CAAA,GAAA;MAAA,EAAA,GAGK+E,ECvCnB;IAAA,EAAA,EAAA,GAAA,EACT+V,MAAM,EACF7Z,MAAM2Q,SAAAA,KAAAA,IAAAA;AAAAA,aAAuC,WAA3BzR,EAAQH,YAAY4R,EAAAA;IAAAA,GACtC1Q,SAASkG,SAAAA,QAAAA,IAAAA;AAAAA,UACCoQ,KAAM,IAAIC;AAChBD,UAAAA,GAAIE,iBAAiB,oCAAA,GACrBF,GAAIG,KAAK,OAAOC,IAAIC,gBAAgBzQ,EAAAA,GAAAA,KACpCoQ,GAAAA,GAAIM,KAIe,GAAA,QAAfN,GAAIO,UAAiC,MAAfP,GAAIO,OACpB,OAAA,IAAIvI,MAAM,sBAAsBgI,GAAIO,MAAAA;AAAAA,aAEvC,EACH1Y,MAAM+H,GAAE/H,MACR2Y,gBAAgBR,GAAIS,aAG5B9W;IAAAA,GAAAA,QAAAA,SAAAA,OAAAA,IAAAA;AAAAA,UAAS9B,KAAAA,GAAAA,MAAM2Y,KAAAA,GAAAA;AAAAA,aACJ,IAAI+C,KAAK,CAAC3D,mBAAmBY,EAAkB,CAAA,GAAA,EAAC3Y,MAAAA,GAAAA,CAAAA;IAAAA,GAE3D2P,cAAc5H,SAAAA,aAAAA,IAAAA;AAAAA,aACH,IAAIjH,EAAQuF,QAAQ,SAACU,IAASD,IAAAA;AAAAA,YAO3BiS,KAAS,IAAIC;AACnBD,QAAAA,GAAOE,iBAAiB,QAAQ,WAC5BlS;AAAAA,UAAAA,GAAQ,EACJ/G,MAAM+H,GAAE/H,MACR2Y,gBAAgBI,GAAOzM,OAK/ByM,CAAAA;QAAAA,CAAAA,GAAAA,GAAOE,iBAAiB,SAAS,WAC7BnS;AAAAA,UAAAA,GAAOiS,GAAOG,KAAAA;QAAAA,CAAAA,GAElBH,GAAOI,mBAAmBpR,EJJxC2H;MAAAA,CAAAA;IAAAA,EAAAA,EAAAA,CAAAA,EAAAA,OAGiB,cAARqF,OAAAA,MAAqB5N,IAAM,CAAA,GAEnB,cAAR+F,OAAAA,MAAqBvL,IAAM,CAAA,GAEX,cAAhBmN,OAAAA,cAA6BwG,IAAc,CAAA,GAE5B,cAAfH,OAAAA,aAA4BqB,IAAc,CAAA,GAE7B,cAAbS,OAAAA,WAA0BD,IAAW,CAAA,GAE5B,eAATI,OAAAA,OAAuBF,IAAY,CAAA,GAExB,eAAXuC,OAAAA,SAAyBF,IAAY,CAAA,GAE1B,eAAXF,OAAAA,SAAyB,CAACD,GAAQE,CAAgB,IAAA,CAAA,CAAA;EAAA,CAAA;;AKpD7D,IAAI,QAAQ;AAEZ,IAAI,SAAS,IAAI,WAAW,GAAG;AAE/B,KAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,SAAO,MAAM,YAAY,CAAC,CAAC,IAAI;AACjC;AAFS;AAWT,IAAI,SAAS,SAASjE,QAAO,aAAa,YAAY,OAAO;AAC3D,MAAI,UAAU,QAAQ,UAAU,QAAW;AACzC,YAAQ,YAAY;EACxB;AAEE,MAAI,QAAQ,IAAI;IAAW;IAAa,cAAc;;IACtD;EAAK;AACL,MAAI,MAAM,MAAM;AAChB,MAAI,SAAS;AAEb,WAAS,KAAK,GAAG,KAAK,KAAK,MAAM,GAAG;AAClC,cAAU,MAAM,MAAM,EAAE,KAAK,CAAC;AAC9B,cAAU,OAAO,MAAM,EAAE,IAAI,MAAM,IAAI,MAAM,KAAK,CAAC,KAAK,CAAC;AACzD,cAAU,OAAO,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,MAAM,KAAK,CAAC,KAAK,CAAC;AAC9D,cAAU,MAAM,MAAM,KAAK,CAAC,IAAI,EAAE;EACtC;AAEE,MAAI,MAAM,MAAM,GAAG;AACjB,aAAS,OAAO,MAAM,GAAG,EAAE,IAAI;EACnC,WAAa,MAAM,MAAM,GAAG;AACxB,aAAS,OAAO,MAAM,GAAG,EAAE,IAAI;EACnC;AAEE,SAAO;AACT;AAMA,IAAI,SAAS,SAASO,QAAO,QAAQ;AACnC,MAAI,MAAM,OAAO;AACjB,MAAI,eAAe,OAAO,SAAS;AACnC,MAAI,IAAI;AACR,MAAI,UAAU,UAAU,UAAU;AAElC,MAAI,OAAO,OAAO,SAAS,CAAC,MAAM,KAAK;AACrC;AAEA,QAAI,OAAO,OAAO,SAAS,CAAC,MAAM,KAAK;AACrC;IACN;EACA;AAEE,MAAI,cAAc,IAAI,YAAY,YAAY,GAC1C,QAAQ,IAAI,WAAW,WAAW;AAEtC,WAAS,MAAM,GAAG,MAAM,KAAK,OAAO,GAAG;AACrC,eAAW,OAAO,OAAO,YAAY,GAAG,CAAC;AACzC,eAAW,OAAO,OAAO,YAAY,MAAM,CAAC,CAAC;AAC7C,eAAW,OAAO,OAAO,YAAY,MAAM,CAAC,CAAC;AAC7C,eAAW,OAAO,OAAO,YAAY,MAAM,CAAC,CAAC;AAC7C,UAAM,GAAG,IAAI,YAAY,IAAI,YAAY;AACzC,UAAM,GAAG,KAAK,WAAW,OAAO,IAAI,YAAY;AAChD,UAAM,GAAG,KAAK,WAAW,MAAM,IAAI,WAAW;EAClD;AAEE,SAAO;AACT;AC1EA,IAAMW,WAAU,OAAO,SAAS,cAAc,SAAS;AAEvD,IAAM,YAAY,CAAA;AAClB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACF,QAAQ,SAAU,UAAQ;AACxB,MAAM,UAAU;AAChB,MAAM,aAAaA,SAAQ,OAAO;AAClC,MAAI,YAAY;AACZ,cAAU,SAAS,YAAW,IAAG,GAAG,IAAI;MACpC,MAAM,SAAA,GAAK;AAAA,eAAOzV,QAAQ,YAAY,CAAC,MAAM;MAAQ;MACrD,SAAO,SAAE,IAA4B;AAA3B,YAAA,SAAM,GAAA,QAAE,aAAU,GAAA,YAAE,SAAM,GAAA;AAChC,eAAO;UACH;UACA;UACA;;;MAGR,QAAM,SAAE,QAAM;AACH,YAAA,SAA8B,OAAM,QAA5B,aAAsB,OAAM,YAAhB,SAAU,OAAM;AAC3C,eAAO,IAAI,WAAW,QAAQ,YAAY,MAAM;;;;AAIhE,CAAC;ACnCD,IAAA,cAAe;EACX,aAAa;IACT,MAAM,SAAA,GAAK;AAAA,aAAOA,QAAQ,YAAY,CAAC,MAAM;IAAc;IAC3D,SAAO,SAAE,GAAC;AACN,aAAO,OAAO,GAAG,GAAG,EAAE,UAAU;;IAEpC,QAAM,SAAE,KAAG;AACP,UAAM,SAAS,OAAO,GAAG;AACzB,aAAO;;EAEd;;ACLE,IAAM,OAAO,IAAIA,QAAO,EAAG,SAAS6a,iBAAiB;AAE5D,IAAM,yBAAyB,oBAAoB;AAEnD,IAAI,eAAsB,CAAA;AAC1B,IAAI,kBAAkB;AAMtB,KAAK,SAAS;EACZ;EACAC;EAAY;IACV,OAAO;MACL,MAAK,SAAA,GAAK;AAAA,eAAO9a,QAAQ,YAAY,CAAC,MAAM;MAAO;MACnD,SAAO,SAAC,GAAC;AACL,YAAI,EAAE,UAAU;AACd,gBAAM,IAAI,MAAM,oBAAoB;;AAEtC,YAAI,wBAAwB;AAC1B,cAAM,OAAO,aAAa,GAAG,QAAQ;AACrC,cAAM,SAAS+a,OAAU,MAAM,GAAG,KAAK,UAAU;AACjD,iBAAO;YACL,MAAM,EAAE;YACR,MAAM;;eAEH;AACL,uBAAa,KAAK,CAAC;AACnB,cAAM,SAAS;YACb,MAAM,EAAE;YACR,MAAM,EAAC,OAAO,iBAAiB,KAAK,kBAAkB,EAAE,KAAI;;AAE9D,6BAAmB,EAAE;AACrB,iBAAO;;;MAGb,UAAQ,SAAC,GAAG,IAAe;AACzB,UAAE,OAAOA,OAAU,IAAI,GAAG,GAAG,UAAU;;MAEzC,QAAM,SAAE,IAAY;YAAX7b,QAAI,GAAA,MAAE,OAAI,GAAA;AACjB,eAAO,IAAI,KAAK,CAAC8b,OAAU,IAAI,CAAC,GAAG,EAAC,MAAI9b,MAAA,CAAC;;IAE5C;EACF;AACF,CAAA;AAED,KAAK,eAAe,WAAA;AAAI,SAAA,aAAa,SAAS;AAAtB;AAExB,KAAK,WAAW,SAAO,OAAa;AAAA,SAAA,UAAA,QAAA,QAAA,QAAA,WAAA;;;;;AAChB,iBAAM,CAAA,GAAA,cAAc,IAAI,KAAK,YAAY,GAAG,QAAQ,CAAC;;AAAjE,sBAAY,GAAqD,KAAA;AACvE,cAAI,OAAO;AACT,iBAAA,KAAA,GAAmB,UAAK,OAAL,KAAA,QAAA,QAAA,MAAO;AAAf,qBAAI,QAAA,EAAA;AAGb,kBAAI,KAAK,QAAQ;AACX,wBAAQ,KAAK;AACX,4BAAY,MAAM;AACxB,oBAAI;AAAW,0BAAQ,MAAM;AAC7B,qBAAS,WAAW,OAAO;AACnB,6BAAW,MAAM,OAAO;AACxB,6BAAW,KAAK,MAAM,QAAQ;AACpC,sBAAI,YAAY,SAAS,UAAU;AAC3B,wBAAI,QAAM,aAAa,MAAM,YAAY,OAAO,UAAU,OAAO;AACvE,6BAAS,SAAS,GAAG,UAAU,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC;;;;;;AAO9D,yBAAe,CAAA;;;;;;;;;ACvDjB,IAAM,yBAAyB;AAET,SAAA,SAAS,IAAW,SAAuB;;AA2C/D,aAAe,YAAS;;;;;;AAEE,qBAAM,CAAA,GAAA,QAAQ,IAAI,aAAa,IAAI,SAAA,OAAK;AAAI,uBAAA,MAAM,MAAK;cAAE,CAAA,CAAC,CAAC;;AAA7E,gCAAkB,GAA2D,KAAA;AACnF,8BAAgB,QAAQ,SAAC,UAAU,GAAC;AAAK,uBAAA,OAAO,CAAC,EAAE,WAAW;cAArB,CAA6B;AACtE,uBAAS,YAAY,gBAAgB,OAAO,SAAC,GAAE,GAAC;AAAG,uBAAA,IAAE;cAAF,CAAG;AAGhD,gCAAkB,KAAK,UAAU,aAAa,QAAW,aAAa,IAAI,MAAS;AACnF,gCAAkB,gBAAgB,YAAY,GAAG;AACjD,+BAAiB,gBAAgB,UAAU,GAAG,eAAe;AACnE,qBAAO,KAAK,cAAc;AAEpB,uBAAS,QAAS;AAClB,0BAAY,QAAS;iCAET+b,YAAS;;;;;AACnB,8BAAQ,GAAG,MAAMA,UAAS;AACzB,gCAAW,MAAM,OAAM;AACxB,gCAAU,CAAC,CAAC,QAAQ;AACpB,8BAAQ,QAAS,mBAAmB;AACpC,yCAAuC,UAAU;wBACrD,WAAW,MAAM;wBACjB,SAAS;wBACT,MAAM,CAAA;sBACP,IAAG;wBACF,WAAW,MAAM;wBACjB,SAAS;wBACT,MAAM,CAAA;;AAEJ,6CAAuB,KAAK,UAAU,kBAAkB,QAAW,aAAa,IAAI,MAAS;AACjG,0BAAI,YAAY;AAWd,+CAAuB,qBAAqB,MAAM,IAAI,EAAE,KAAK,QAAQ;;AAEjE,wCAAkB,qBAAqB,YAAY,GAAG;AAC5D,6BAAO,KAAK,qBAAqB,UAAU,GAAG,eAAe,CAAC;AAC1D,gCAAe;AACf,oCAAc;AACd,wCAAkB;;;;;;AAEpB,kCAAI,kBAAkB;AAEpB,wCAAM,kBAAkB,WAAA;AAAI,yCAAA,iBAAiB,QAAQ;gCAAC,CAAA;;AAElD,kDAAoB,WAAW,OACnC,MAAM,MAAM,KAAK,IACjB,MAAM,MAAM,KAAK,EAAE,MAAM,OAAO,EAAE,MAAM,KAAK;AAEhC,qCAAA,CAAA,GAAM,kBAAkB,QAAO,CAAE;;AAA1C,uCAAS,GAAiC,KAAA;AAEhD,kCAAI,OAAO,WAAW;AAAS,uCAAA,CAAA,GAAA,OAAA;AAE/B,kCAAI,WAAW,QAAQ,cAAc,GAAG;AAEtC,uCAAO,KAAK,GAAG;AACf,oCAAI,YAAY;AACd,yCAAO,KAAK,UAAU;;;AAI1B,gDAAkB,OAAO,WAAW;AAEhC,kCAAA,CAAA,QAAA,QAAO,CAAA,GAAA,CAAA;AACH,+CAAiB,SACrB,OAAO,OAAO,SAAA,OAAK;AAAI,uCAAA,OAAOA,YAAW,KAAK;8BAAC,CAAA,IAC/C;AAEI,kDAAoB,YACxB,eAAe,IAAI,SAAA,OAAK;AAAI,uCAAA,UAAUA,YAAW,KAAK,EAAE;8BAAK,CAAA,IAC7D;AAEI,2CAAa,kBAAkB,IAAI,SAAA,OAAS;AAAA,uCAAA,KAAK,YAAY,KAAK;8BAAtB,CAAuB;AACrE,kCAAA,CAAA,KAAK,aAAY,EAAjB,QAAmB,CAAA,GAAA,CAAA;AACrB,qCAAM,CAAA,GAAA,QAAM,QAAQ,KAAK,SAAS,UAAU,CAAC,CAAC;;AAA9C,iCAAA,KAAA;;;AAGE,qCAAO,KAAK,UAAU,YAAY,QAAW,aAAa,IAAI,MAAS;AAC3E,kCAAI;AAAY,uCAAO,KAAK,MAAM,IAAI,EAAE,KAAK,UAAU;AAIvD,qCAAO,KAAK,IAAI,KAAK,CAAC,KAAK,UAAU,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1D,4CAAc,kBAAkB;AAChC,wCAAU,OAAO,SAAS,IACxB,QAAM,aAAa,OAAO,OAAO,SAAQ,CAAC,GAAG,QAAQ,OAAiB,IACtE;;4BAEW,KAAA;AAAA,qCAAA,CAAA,GAAM,kBAAkB,YAAW,CAAE;;AAA5C,8BAAAzb,QAAO,GAAqC,KAAA;AAC9C,wCAAUA,MAAK,IAAI,SAAC,KAAK,GAAM;AAAA,uCAAA,CAAC,KAAK,OAAO,CAAC,CAAC;8BAAC,CAAA;AACnD,kCAAI;AAAQ,0CAAU,QAAQ,OAAO,SAAC0b,KAAY;sCAAX,MAAGA,IAAA,CAAA,GAAE,QAAKA,IAAA,CAAA;AAAM,yCAAA,OAAOD,YAAW,OAAO,GAAG;gCAA5B,CAA6B;AACpF,kCAAI;AAAW,0CAAU,QAAQ,IAAI,SAACC,KAAY;sCAAX,MAAGA,IAAA,CAAA,GAAE,QAAKA,IAAA,CAAA;AAC/C,sCAAM,kBAAkB,UAAUD,YAAW,OAAO,GAAG;AACvD,yCAAO,CAAC,gBAAgB,KAAK,gBAAgB,KAAK;gCACpD,CAAC;AAEK,2CAAa,QAAQ,IAAI,SAAA,OAAS;AAAA,uCAAA,KAAK,YAAY,KAAK;8BAAtB,CAAuB;AAC3D,kCAAA,CAAA,KAAK,aAAY,EAAjB,QAAmB,CAAA,GAAA,CAAA;AACrB,qCAAM,CAAA,GAAA,QAAM,QAAQ,KAAK,SAAS,UAAU,CAAC,CAAC;;AAA9C,iCAAA,KAAA;;;AAGE,qCAAO,KAAK,UAAU,YAAY,QAAW,aAAa,IAAI,MAAS;AAC3E,kCAAI;AAAY,uCAAO,KAAK,MAAM,IAAI,EAAE,KAAK,UAAU;AAIvD,qCAAO,KAAK,IAAI,KAAK,CAAC,KAAK,UAAU,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1D,4CAAc,QAAQ;AACtB,wCAAUzb,MAAK,SAAS,IACtBA,MAAKA,MAAK,SAAS,CAAC,IACpB;;;AAEJ,uCAAS,iBAAiB,OAAO;;;;;;;;;;2BAxE5B,gBAAe,QAAA,CAAA,GAAA,CAAA;;;;;;;;AA0EtB,6BAAO,KAAK,qBAAqB,OAAO,eAAe,CAAC;AACxD,+BAAS,mBAAmB;AAC5B,0BAAI,SAAS,kBAAkB,SAAS,aAAa;AACnD,+BAAO,KAAK,GAAG;;;;;;;;;AA9GmB,mBAAA,GAAN,WAAM;;;AAAN,kBAAA,EAAA,KAAA,SAAA,QAAM,QAAA,CAAA,GAAA,CAAA;AAApB,0BAAS,SAAA,EAAA,EAAA;iCAAT,SAAS,CAAA;;;;;AAAK;;;AAiHhC,qBAAO,KAAK,gBAAgB,OAAO,eAAe,CAAC;AACnD,uBAAS,OAAO;AAChB,kBAAI,kBAAkB;AAEpB,wBAAM,kBAAkB,WAAA;AAAI,yBAAA,iBAAiB,QAAQ;gBAAC,CAAA;;;;;;;;;IAEzD;;;;;AAhLD,oBAAU,WAAW,CAAA;AACf,uBAAa,QAAQ,aAAY,QAAQ,aAAY,CAAA;AACrD,yBAAe,GAAG,OAAO,OAAO,SAAC,GAAK;AAAA,mBAAA,CAAC,WAAW,SAAS,EAAE,IAAI;UAAC,CAAA;AAClE,mBAA4B,CAAA;AAC5B,mBAAS,aAAa,IAAI,SAAA,OAAS;AAAA,mBAAC;cACxC,MAAM,MAAM;cACZ,QAAQ,gBAAgB,KAAK;cAC7B,UAAU;;UACV,CAAA;AACK,uBAAc,QAAQ;AACvB,wBAAwC;YAC5C,YAAY;YACZ,eAAe;YACf,MAAM;cACJ,cAAc,GAAG;cACjB,iBAAiB,GAAG;cACpB;cACA,MAAM,CAAA;YACP;;AAGI,6BAAoB,QAAQ;AAC7B,qBAA2B;YAC/B,MAAM;YACN,eAAe;YACf,iBAAiB;YACjB,WAAW;YACX,aAAa,OAAO;;;;;eAIhB,QAAS,cAAT,QAAsB,CAAA,GAAA,CAAA;AACxB,iBAAM,CAAA,GAAA,UAAS,CAAE;;AAAjB,aAAA,KAAA;;QAEA,KAAA;AAAA,iBAAA,CAAA,GAAM,GAAG,YAAY,KAAK,GAAG,QAAQ,SAAS,CAAC;;AAA/C,aAAA,KAAA;;;;;AAGF,eAAK,SAAQ;;;;;;AAGf,iBAAO,CAAA,GAAA,IAAI,KAAK,QAAO,EAAC,MAAM,YAAW,CAAC,CAAC;;;;AAyI5C;AC5MM,IAAM,UAAU;ACAvB,IAAA,aAAiB,EAAC,QAAQ,WAAU;AAAA,EAAE;;ACArC,GAAC,SAAU,UAAU;AAIpB,QAAI,MAAM,OAAO,YAAY,YAAY,QAAQ,MAC7C,QAAQ,MACR;AAEJ,aAAS,SAAoB,SAAU,KAAK;AAAE,aAAO,IAAI,QAAQ,GAAG;IAAE;AACtE,aAAS,UAAoB;AAC7B,aAAS,UAAoB;AAC7B,aAAS,eAAoB;AAC7B,aAAS,oBAAoB,KAAK,OAAO;AACzC,aAAS,QAAqB,IAAI,WAAS;AAC3C,aAAS,OAAqB,IAAI,WAAS,WAAW,IAAI,WAAS;AACnE,aAAS,SACP;MAAE;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACN;AAEE,QAAI,UAAc;MACZ,UAAU;MACV,YAAY;IACpB,GACM,cAAc,SAAS,OAAO,OAAO,SAAU,IAAI;AAC/C,aAAO,OAAO,WAAW,OAAO;IAC1C,CAAS,GACH,IAAc,GACd;AAGJ,aAAS,QACP;MAAE,OAAoC;MACpC,OAAoC;MACpC,aAAoC;MACpC,cAAoC;MACpC,YAAoC;MACpC,aAAoC;MACpC,aAAoC;MACpC,QAAoC;MACpC,WAAoC;MACpC,KAAoC;MACpC,UAAoC;MACpC,WAAoC;MACpC,MAAoC;MACpC,OAAoC;MACpC,OAAoC;MACpC,OAAoC;MACpC,QAAoC;MACpC,QAAoC;MACpC,QAAoC;MACpC,MAAoC;MACpC,OAAoC;MACpC,OAAoC;MACpC,sBAAoC;MACpC,cAAoC;;IAC1C;AAEE,aAAS,MAAM,SAAS,MAAO,UAAS,MAAM,SAAS,MAAM,EAAE,CAAC,IAAI;AAGpE,QAAI,SAAS;AAEb,UAAM,OAAO;MACX,KAAsB;;MACtB,UAAsB;;MACtB,gBAAsB;;MACtB,OAAsB;;MAEtB,aAAsB;;MACtB,MAAsB;;MACtB,OAAsB;;MACtB,OAAsB;;MACtB,QAAsB;;MAEtB,IAAsB;;MACtB,IAAsB;;MAEtB,OAAsB;;MAEtB,GAAsB;;MAEtB,aAAsB;;MACtB,WAAsB;;MACtB,cAAsB;;MAEtB,GAAsB;;MACtB,GAAsB;;MACtB,GAAsB;;MACtB,GAAsB;;MACtB,GAAsB;;MACtB,GAAsB;;MACtB,GAAsB;;MACtB,GAAsB;;MACtB,GAAsB;;MACtB,GAAsB;;MAEtB,WAAsB;;MACtB,YAAsB;;IAC1B;AAEE,QAAI,CAAC,OAAO,QAAQ;AAClB,aAAO,SAAS,SAAU,GAAG;AAC3B,iBAAS,IAAK;AAAE,eAAK,WAAW,IAAI;QAAE;AACtC,UAAE,YAAY;AACd,eAAO,IAAI;MACjB;IACA;AAEE,QAAI,CAAC,OAAO,gBAAgB;AAC1B,aAAO,iBAAiB,SAAU,GAAG;AACnC,eAAO,EAAE,WAAW;MAC1B;IACA;AAEE,QAAI,CAAC,OAAO,MAAM;AAChB,aAAO,OAAO,SAAU,GAAG;AACzB,YAAI,IAAI,CAAA;AACR,iBAAS,KAAK,EAAG,KAAI,EAAE,eAAe,CAAC,EAAG,GAAE,KAAK,CAAC;AAClD,eAAO;MACb;IACA;AAEE,aAAS,kBAAmB,QAAQ;AAClC,UAAI,aAAa,KAAK,IAAI,SAAS,mBAAmB,EAAE,GACpD,YAAY;AAEhB,eAAS,UAAU,SAAS;AAC1B,YAAI,MAAM,OAAO,MAAM,MAAM,SAAY,IAAI,OAAO,MAAM,EAAE;AAC5D,YAAI,MAAM,YAAY;AACpB,kBAAQ,QAAM;YACZ,KAAK;AACH,wBAAU,MAAM;AAClB;YAEA;AACE,oBAAM,QAAQ,iCAAgC,MAAM;UAChE;QACA;AACM,oBAAY,KAAK,IAAI,WAAW,GAAG;MACzC;AACI,aAAO,sBAAuB,SAAS,oBAAoB,YAC9B,OAAO;IACxC;AAEE,aAAS,aAAc,QAAQ;AAC7B,eAAS,UAAU,SAAS;AAC1B,eAAO,MAAM,IAAI,QAAQ,MAAM;MACrC;IACA;AAEE,QAAI,qBAAqB;AAEzB,aAAS,QAAS,KAAK;AACrB,UAAI,EAAE,gBAAgB,SAAU,QAAO,IAAI,QAAS,GAAG;AAEvD,UAAI,SAAS;AACb,mBAAa,MAAM;AACnB,aAAO,sBAAsB,SAAS;AACtC,aAAO,IAAW,OAAO,IAAI,OAAO,IAAI;AACxC,aAAO,MAAW,OAAO,CAAA;AACzB,aAAO,SAAW,OAAO,aAAa,OAAO,UAAU;AACvD,aAAO,MAAW,OAAO,QAAQ;AACjC,aAAO,QAAW,EAAE;AACpB,aAAO,QAAW,IAAI,MAAK;AAE3B,aAAO,WAAW,OAAO,SAAS;AAClC,aAAO,OAAW;AAClB,aAAO,UAAW;AAClB,aAAO,WAAW;AAClB,aAAO,WAAW;AAClB,aAAO,QAAW;AAClB,WAAK,QAAQ,SAAS;IAC1B;AAEE,YAAQ,YACN;MAAE,KAAS,WAAY;AAAE,YAAI,IAAI;MAAE;MACjC;MACA,QAAS,WAAY;AAAE,aAAK,QAAQ;AAAM,eAAO;MAAK;MACtD,OAAS,WAAY;AAAE,eAAO,KAAK,MAAM,IAAI;MAAE;IACrD;AAEE,QAAW;AAAE,eAAS2b,WAAkB;IAAO,SACxC,IAAI;AAAE,eAAS,WAAY;MAAA;IAAG;AAErC,aAAS,aAAc,KAAK;AAAE,aAAO,IAAI,QAAQ,GAAG;IAAE;AAEtD,aAAS,QAAS,KAAK;AACrB,UAAI,EAAE,gBAAgB,SAAU,QAAO,IAAI,QAAQ,GAAG;AAEtD,WAAK,UAAU,IAAI,QAAQ,GAAG;AAC9B,WAAK,WAAW;AAChB,WAAK,WAAW;AAGhB,WAAK,kBAAkB;AACvB,WAAK,oBAAoB;AACzB,WAAK,aAAa,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,EAAC;AAC9E,WAAK,SAAS;AAEd,UAAI,KAAK;AACT,aAAO,MAAM,EAAE;AAEf,WAAK,QAAQ,QAAQ,WAAY;AAAE,WAAG,KAAK,KAAK;MAAE;AAClD,WAAK,QAAQ,UAAU,SAAU,IAAI;AACnC,WAAG,KAAK,SAAS,EAAE;AACnB,WAAG,QAAQ,QAAQ;MACzB;AAEI,kBAAY,QAAQ,SAAU,IAAI;AAChC,eAAO;UAAe;UAAI,OAAO;UAC/B;YAAE,KAAe,WAAY;AAAE,qBAAO,GAAG,QAAQ,OAAO,EAAE;YAAE;YAC1D,KAAe,SAAU,GAAG;AAC1B,kBAAI,CAAC,GAAG;AACN,mBAAG,mBAAmB,EAAE;AACxB,mBAAG,QAAQ,OAAK,EAAE,IAAI;AACtB,uBAAO;cACrB;AACY,iBAAG,GAAG,IAAI,CAAC;YACvB;YACU,YAAe;YACf,cAAe;UACzB;QAAS;MACT,CAAK;IACL;AAEE,YAAQ,YAAY,OAAO;MAAO,OAAO;MACvC,EAAE,aAAa,EAAE,OAAO,QAAO,EAAE;IAAE;AAErC,YAAQ,UAAU,QAAQ,SAAU,MAAM;AACxC,aAAO,IAAI,OAAO,IAAI;AACtB,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAI,IAAI,KAAK,CAAC;AAId,YAAI,KAAK,kBAAkB,GAAG;AAC5B,mBAAS,IAAI,GAAG,IAAI,KAAK,iBAAiB,KAAK;AAC7C,iBAAK,WAAW,KAAK,iBAAiB,EAAE,KAAK,oBAAoB,KAAK,kBAAkB,CAAC,IAAI,KAAK,CAAC;UAC7G;AACQ,eAAK,SAAS,KAAK,WAAW,KAAK,iBAAiB,EAAE,SAAQ;AAC9D,eAAK,oBAAoB,KAAK,kBAAkB;AAGhD,cAAI,IAAI,IAAI;AAGZ,eAAK,QAAQ,MAAM,KAAK,MAAM;AAC9B,eAAK,KAAK,QAAQ,KAAK,MAAM;AAC7B;QACR;AAGM,YAAI,KAAK,oBAAoB,KAAK,KAAK,KAAK;AAC1C,cAAK,KAAK,OAAS,KAAK,IAAM,MAAK,oBAAoB;AACvD,cAAK,KAAK,OAAS,KAAK,IAAM,MAAK,oBAAoB;AACvD,cAAK,KAAK,OAAS,KAAK,IAAM,MAAK,oBAAoB;AACvD,cAAK,KAAK,oBAAoB,IAAK,KAAK,QAAQ;AAE9C,qBAAS,IAAI,GAAG,KAAM,KAAK,SAAS,IAAI,GAAI,KAAK;AAC/C,mBAAK,WAAW,KAAK,iBAAiB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC;YACnE;AACU,iBAAK,kBAAmB,IAAI,KAAK,oBAAqB,KAAK;AAG3D,mBAAO;UACjB,OAAe;AACL,iBAAK,SAAS,KAAK,MAAM,GAAI,IAAI,KAAK,iBAAiB,EAAG,SAAQ;AAClE,gBAAI,IAAI,KAAK,oBAAoB;AAEjC,iBAAK,QAAQ,MAAM,KAAK,MAAM;AAC9B,iBAAK,KAAK,QAAQ,KAAK,MAAM;AAC7B;UACV;QACA;AAGM,iBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,cAAI,KAAK,CAAC,KAAK,IAAK;QAC5B;AACM,aAAK,SAAS,KAAK,MAAM,GAAG,CAAC,EAAE,SAAQ;AACvC,aAAK,QAAQ,MAAM,KAAK,MAAM;AAC9B,aAAK,KAAK,QAAQ,KAAK,MAAM;AAC7B,YAAI,IAAI;AAGR;MACN;IACA;AAEE,YAAQ,UAAU,MAAM,SAAU,OAAO;AACvC,UAAI,SAAS,MAAM,OAAQ,MAAK,QAAQ,MAAM,MAAM,SAAQ,CAAE;AAC9D,WAAK,QAAQ,IAAG;AAChB,aAAO;IACX;AAEE,YAAQ,UAAU,KAAK,SAAU,IAAI,SAAS;AAC5C,UAAI,KAAK;AACT,UAAI,CAAC,GAAG,QAAQ,OAAK,EAAE,KAAK,YAAY,QAAQ,EAAE,MAAM,IAAI;AAC1D,WAAG,QAAQ,OAAK,EAAE,IAAI,WAAY;AAChC,cAAI,OAAO,UAAU,WAAW,IAAI,CAAC,UAAU,CAAC,CAAC,IACtC,MAAM,MAAM,MAAM,SAAS;AACtC,eAAK,OAAO,GAAG,GAAG,EAAE;AACpB,aAAG,KAAK,MAAM,IAAI,IAAI;QAC9B;MACA;AACI,aAAO,OAAO,UAAU,GAAG,KAAK,IAAI,IAAI,OAAO;IACnD;AAEE,YAAQ,UAAU,UAAU,WAAY;AACtC,mBAAa,KAAK,OAAO;AACzB,WAAK,KAAK,OAAO;IACrB;AAEE,aAAS,KAAK,QAAQ,OAAO,MAAM;AACjC,UAAG,SAAS,KAAM,SAAQ,IAAI,WAAW,OAAO,IAAI;AACpD,UAAI,OAAO,KAAK,EAAG,QAAO,KAAK,EAAE,IAAI;IACzC;AAEE,aAAS,SAAS,QAAQ,OAAO,MAAM;AACrC,iBAAW,MAAM;AACjB,WAAK,QAAQ,OAAO,IAAI;IAC5B;AAEE,aAAS,WAAW,QAAQ,OAAO;AACjC,aAAO,WAAW,SAAS,OAAO,KAAK,OAAO,QAAQ;AACtD,UAAI,OAAO,aAAa,QAAW;AACjC,aAAK,QAAS,QAAQ,QAAQ,WAAY,OAAO,QAAQ;MAC/D;AACI,aAAO,WAAW;IACtB;AAEE,aAAS,YAAY,QAAQ;AAC3B,UAAI,OAAO;AACT,aAAK,QAAQ,WAAW,WAAW,OAAO,UAAU,CAAC;AACvD,aAAO,aAAa;IACxB;AAEE,aAAS,SAAU,KAAK,MAAM;AAC5B,UAAI,SAAS,QAAW;AACtB,eAAO;MACb;AACI,UAAI,IAAI,KAAM,QAAO,KAAK,KAAI;AAC9B,UAAI,IAAI,UAAW,QAAO,KAAK,QAAQ,QAAQ,GAAG;AAClD,aAAO;IACX;AAEE,aAAS,MAAO,QAAQ,IAAI;AAC1B,iBAAW,MAAM;AACjB,YAAM,aAAW,OAAO,OAClB,eAAa,OAAO,SACpB,aAAW,OAAO;AACxB,WAAK,IAAI,MAAM,EAAE;AACjB,aAAO,QAAQ;AACf,WAAK,QAAQ,WAAW,EAAE;AAC1B,aAAO;IACX;AAEE,aAAS,IAAI,QAAQ;AACnB,UAAI,OAAO,UAAU,EAAE,SAAS,OAAO,UAAU;AAC/C,cAAM,QAAQ,gBAAgB;AAEhC,iBAAW,MAAM;AACjB,aAAO,IAAS;AAChB,aAAO,SAAS;AAChB,WAAK,QAAQ,OAAO;AACpB,cAAQ,KAAK,QAAQ,OAAO,GAAG;AAC/B,aAAO;IACX;AAEE,aAAS,aAAa,GAAG;AACvB,aAAO,MAAM,KAAK,kBAAkB,MAAM,KAAK,YAAY,MAAM,KAAK,SAAS,MAAM,KAAK;IAC9F;AAEE,aAAS,MAAO,OAAO;AACrB,UAAI,SAAS;AACb,UAAI,KAAK,MAAO,OAAM,KAAK;AAC3B,UAAI,OAAO,OAAQ,QAAO;QAAM;QAC9B;MAAsD;AACxD,UAAI,UAAU,KAAM,QAAO,IAAI,MAAM;AACrC,UAAI,IAAI,GAAG,IAAI,MAAM,WAAW,CAAC,GAAG,IAAI,OAAO;AAC/C,UAAI,SAAS,MAAO,SAAQ,IAAI,eAAe,QAAQ,GAAG;AAC1D,aAAO,GAAG;AACR,YAAI;AACJ,eAAO,IAAI,IAAI,MAAM,WAAW,GAAG;AAKnC,YAAG,MAAM,EAAI,QAAO,IAAI;YACnB,KAAI,OAAO;AAEhB,YAAG,CAAC,EAAG;AAEP,YAAI,SAAS,MAAO,SAAQ,IAAI,GAAE,GAAE,SAAS,MAAM,OAAO,KAAK,CAAC;AAChE,eAAO;AACP,YAAI,MAAM,KAAK,UAAU;AACvB,iBAAO;AACP,iBAAO,SAAS;QACxB,MAAa,QAAO;AACd,gBAAQ,OAAO,OAAK;UAElB,KAAK,EAAE;AACL,gBAAI,MAAM,KAAK,UAAW,QAAO,QAAQ,EAAE;qBAClC,MAAM,KAAK,YAAa,QAAO,QAAQ,EAAE;qBACzC,CAAC,aAAa,CAAC;AACtB,oBAAM,QAAQ,2BAA2B;AAC7C;UAEA,KAAK,EAAE;UACP,KAAK,EAAE;AACL,gBAAI,aAAa,CAAC,EAAG;AACrB,gBAAG,OAAO,UAAU,EAAE,SAAU,QAAO,MAAM,KAAK,EAAE,SAAS;iBACxD;AACH,kBAAG,MAAM,KAAK,YAAY;AACxB,qBAAK,QAAQ,cAAc;AAC3B,qBAAK;AACL,qBAAK,QAAQ,eAAe;AAC5B,qBAAK;AACL,uBAAO,QAAQ,OAAO,MAAM,IAAG,KAAM,EAAE;AACvC;cACd,MAAoB,QAAO,MAAM,KAAK,EAAE,YAAY;YACpD;AACU,gBAAG,MAAM,KAAK,YAAa,QAAO,QAAQ,EAAE;gBACvC,OAAM,QAAQ,0CAA2C;AAChE;UAEA,KAAK,EAAE;UACP,KAAK,EAAE;AACL,gBAAI,aAAa,CAAC,EAAG;AACT,YAAC,OAAO,UAAU,EAAE,YAAa,QAAQ;AACrD,gBAAG,MAAM,KAAK,OAAO;AACnB,kBAAG,OAAO,UAAU,EAAE,cAAc;AAClC,uBAAO,MAAM,KAAK,EAAE,YAAY;AAChC,2BAAW,QAAQ,cAAc;AAChC,qBAAK;cACpB,MAAmB,YAAW,QAAQ,OAAO;AACjC,qBAAO,QAAS,EAAE;YAC9B,WAAqB,MAAM,KAAK,YAAY;AAChC,uBAAS,QAAQ,eAAe;AAChC,mBAAK;AACL,qBAAO,QAAQ,OAAO,MAAM,IAAG,KAAM,EAAE;YACnD,WAAoB,MAAM,KAAK,OAAO;AAC1B,kBAAG,OAAO,UAAU,EAAE;AACpB,uBAAO,MAAM,KAAK,EAAE,YAAY;AAClC,yBAAW,MAAM;AACjB,qBAAO,QAAS,EAAE;YAC9B,MAAiB,OAAM,QAAQ,YAAY;AACnC;UAEA,KAAK,EAAE;UACP,KAAK,EAAE;AACL,gBAAI,aAAa,CAAC,EAAG;AACrB,gBAAG,OAAO,UAAQ,EAAE,YAAY;AAC9B,mBAAK,QAAQ,aAAa;AAC1B,mBAAK;AACL,qBAAO,QAAQ,EAAE;AACjB,kBAAG,MAAM,KAAK,cAAc;AAC1B,qBAAK,QAAQ,cAAc;AAC3B,qBAAK;AACL,uBAAO,QAAQ,OAAO,MAAM,IAAG,KAAM,EAAE;AACvC;cACd,OAAmB;AACL,uBAAO,MAAM,KAAK,EAAE,WAAW;cAC7C;YACA;AACe,gBAAG,MAAM,KAAK,YAAa,QAAO,QAAQ,EAAE;qBACzC,MAAM,KAAK,UAAW,QAAO,QAAQ,EAAE;qBACvC,MAAM,KAAK,YAAa,QAAO,QAAQ,EAAE;qBACzC,MAAM,KAAK,EAAG,QAAO,QAAQ,EAAE;qBAC/B,MAAM,KAAK,EAAG,QAAO,QAAQ,EAAE;qBAC/B,MAAM,KAAK,EAAG,QAAO,QAAQ,EAAE;qBAC/B,MAAM,KAAK,OAAO;AACxB,qBAAO,cAAc;YACjC,WAAoB,KAAK,MAAM,KAAK,KAAK,KAAK,IAAI;AACtC,qBAAO,cAAc,OAAO,aAAa,CAAC;AAC1C,qBAAO,QAAQ,EAAE;YAC7B,MAA+B,OAAM,QAAQ,WAAW;AAChD;UAEA,KAAK,EAAE;AACL,gBAAG,MAAM,KAAK,OAAO;AACnB,qBAAO,MAAM,KAAK,EAAE,WAAW;AAC/B,yBAAW,QAAQ,SAAS;AAC5B,qBAAO,QAAS,EAAE;YAC9B,WAAqB,MAAM,KAAK,cAAc;AAClC,uBAAS,QAAQ,cAAc;AAC/B,mBAAK;AACL,qBAAO,QAAQ,OAAO,MAAM,IAAG,KAAM,EAAE;YACnD,WAAqB,aAAa,CAAC;AACrB;gBACC,OAAM,QAAQ,WAAW;AAChC;UAEA,KAAK,EAAE;AACL,gBAAI,OAAO,aAAa,QAAW;AACjC,qBAAO,WAAW;YAC9B;AAGU,gBAAI,SAAsB,IAAE,GACxB,UAAU,OAAO,SACjB,WAAW,OAAO;AAEtB,2BAAgB,QAAO,MAAM;AAC3B,kBAAI,SAAS;AACX,wBAAQ;kBAAI;kBAAE;kBAAE,SAAS,MAAM,OAAO,KAAK;kBAC/B;gBAAO;AAErB,qBAAO,WAAW,GAAG;AACnB,uBAAO,YAAY,OAAO,aAAa,CAAC;AACxC,oBAAI,MAAM,WAAW,GAAG;AACxB,uBAAO;AACP,oBAAI,aAAa,GAAG;AAElB,yBAAO,YAAY,OAAO,aAAa,SAAS,OAAO,UAAU,EAAE,CAAC;AACpE,6BAAW;AACX,2BAAS,IAAE;gBAC3B,OAAqB;AACL;gBAChB;AAEc,oBAAI,CAAC,EAAG,OAAM;cAC5B;AACY,kBAAI,MAAM,KAAK,eAAe,CAAC,SAAS;AACtC,uBAAO,QAAQ,OAAO,MAAM,IAAG,KAAM,EAAE;AACvC,uBAAO,YAAY,MAAM,UAAU,QAAQ,IAAE,CAAC;AAC9C,uBAAO,YAAY,IAAI,IAAI;AAC3B;cACd;AACY,kBAAI,MAAM,KAAK,aAAa,CAAC,SAAS;AACpC,0BAAU;AACV,uBAAO,YAAY,MAAM,UAAU,QAAQ,IAAE,CAAC;AAC9C,uBAAO,YAAY,IAAI,IAAI;AAC3B,oBAAI,MAAM,WAAW,GAAG;AACxB,uBAAO;AACP,oBAAI,CAAC,EAAG;cACtB;AACY,kBAAI,SAAS;AACX,0BAAU;AACL,oBAAI,MAAM,KAAK,GAAG;AAAE,yBAAO,YAAY;gBAAK,WACxC,MAAM,KAAK,GAAG;AAAE,yBAAO,YAAY;gBAAK,WACxC,MAAM,KAAK,GAAG;AAAE,yBAAO,YAAY;gBAAK,WACxC,MAAM,KAAK,GAAG;AAAE,yBAAO,YAAY;gBAAK,WACxC,MAAM,KAAK,GAAG;AAAE,yBAAO,YAAY;gBAAK,WACxC,MAAM,KAAK,GAAG;AAErB,6BAAW;AACX,yBAAO,WAAW;gBAClC,OAAqB;AACL,yBAAO,YAAY,OAAO,aAAa,CAAC;gBACxD;AACc,oBAAI,MAAM,WAAW,GAAG;AACxB,uBAAO;AACP,yBAAS,IAAE;AACX,oBAAI,CAAC,EAAG;oBACH;cACnB;AAEY,iCAAmB,YAAY;AAC/B,kBAAI,WAAW,mBAAmB,KAAK,KAAK;AAC5C,kBAAI,aAAa,MAAM;AACrB,oBAAI,MAAM,SAAO;AACjB,uBAAO,YAAY,MAAM,UAAU,QAAQ,IAAE,CAAC;AAC9C,uBAAO,YAAY,IAAI,IAAI;AAC3B;cACd;AACY,kBAAI,SAAS,QAAM;AACnB,kBAAI,MAAM,WAAW,SAAS,KAAK;AACnC,kBAAI,CAAC,GAAG;AACN,uBAAO,YAAY,MAAM,UAAU,QAAQ,IAAE,CAAC;AAC9C,uBAAO,YAAY,IAAI,IAAI;AAC3B;cACd;YACA;AACU,mBAAO,UAAU;AACjB,mBAAO,WAAW;AACpB;UAEA,KAAK,EAAE;AACL,gBAAI,MAAM,KAAK,EAAG,QAAO,QAAQ,EAAE;gBAC9B,OAAM,QAAQ,gCAA+B,CAAC;AACrD;UAEA,KAAK,EAAE;AACL,gBAAI,MAAM,KAAK,EAAG,QAAO,QAAQ,EAAE;gBAC9B,OAAM,QAAQ,iCAAgC,CAAC;AACtD;UAEA,KAAK,EAAE;AACL,gBAAG,MAAM,KAAK,GAAG;AACf,mBAAK,QAAQ,WAAW,IAAI;AAC5B,qBAAO,QAAQ,OAAO,MAAM,IAAG,KAAM,EAAE;YACnD,MAAiB,OAAM,QAAQ,kCAAiC,CAAC;AACzD;UAEA,KAAK,EAAE;AACL,gBAAI,MAAM,KAAK,EAAG,QAAO,QAAQ,EAAE;gBAC9B,OAAM,QAAQ,iCAAgC,CAAC;AACtD;UAEA,KAAK,EAAE;AACL,gBAAI,MAAM,KAAK,EAAG,QAAO,QAAQ,EAAE;gBAC9B,OAAM,QAAQ,kCAAiC,CAAC;AACvD;UAEA,KAAK,EAAE;AACL,gBAAI,MAAM,KAAK,EAAG,QAAO,QAAQ,EAAE;gBAC9B,OAAM,QAAQ,mCAAkC,CAAC;AACxD;UAEA,KAAK,EAAE;AACL,gBAAI,MAAM,KAAK,GAAG;AAChB,mBAAK,QAAQ,WAAW,KAAK;AAC7B,qBAAO,QAAQ,OAAO,MAAM,IAAG,KAAM,EAAE;YACnD,MAAiB,OAAM,QAAQ,oCAAmC,CAAC;AAC3D;UAEA,KAAK,EAAE;AACL,gBAAI,MAAM,KAAK,EAAG,QAAO,QAAQ,EAAE;gBAC9B,OAAM,QAAQ,gCAA+B,CAAC;AACrD;UAEA,KAAK,EAAE;AACL,gBAAI,MAAM,KAAK,EAAG,QAAO,QAAQ,EAAE;gBAC9B,OAAM,QAAQ,iCAAgC,CAAC;AACtD;UAEA,KAAK,EAAE;AACL,gBAAG,MAAM,KAAK,GAAG;AACf,mBAAK,QAAQ,WAAW,IAAI;AAC5B,qBAAO,QAAQ,OAAO,MAAM,IAAG,KAAM,EAAE;YACnD,MAAiB,OAAM,QAAQ,kCAAiC,CAAC;AACzD;UAEA,KAAK,EAAE;AACL,gBAAG,MAAM,KAAK,QAAQ;AACpB,qBAAO,cAAc;AACrB,qBAAO,QAAc,EAAE;YACnC,MAAiB,OAAM,QAAQ,gCAAgC;AACvD;UAEA,KAAK,EAAE;AACL,gBAAG,KAAK,MAAM,KAAK,KAAK,KAAK,GAAI,QAAO,cAAc,OAAO,aAAa,CAAC;qBAClE,MAAM,KAAK,QAAQ;AAC1B,kBAAG,OAAO,WAAW,QAAQ,GAAG,MAAI;AAClC,sBAAM,QAAQ,6BAA6B;AAC7C,qBAAO,cAAc;YACjC,WAAqB,MAAM,KAAK,KAAK,MAAM,KAAK,GAAG;AACvC,kBAAG,OAAO,WAAW,QAAQ,GAAG,MAAI,MACjC,OAAO,WAAW,QAAQ,GAAG,MAAI;AACjC,sBAAM,QAAQ,oCAAoC;AACrD,qBAAO,cAAc;YACjC,WAAqB,MAAM,KAAK,QAAQ,MAAM,KAAK,OAAO;AAC9C,kBAAG,EAAE,MAAM,KAAK,KAAK,MAAM,KAAK;AAC9B,sBAAM,QAAQ,0BAA0B;AAC1C,qBAAO,cAAc,OAAO,aAAa,CAAC;YACtD,OAAiB;AACL,0BAAY,MAAM;AAClB;AACA,qBAAO,QAAQ,OAAO,MAAM,IAAG,KAAM,EAAE;YACnD;AACQ;UAEA;AACE,kBAAM,QAAQ,oBAAoB,OAAO,KAAK;QACxD;MACA;AACI,UAAI,OAAO,YAAY,OAAO;AAC5B,0BAAkB,MAAM;AAC1B,aAAO;IACX;EAEA,GAAoD,OAAO;;AC9pBrD,SAAU,WAAc,MAAU;AACtC,MAAI,MAAM;AACV,MAAM,SAAS,WAAW,IAAI;AAE9B,MAAM,KAAK;IACH,WAAS,SAAC,UAAgB;;;;;;AACxB,sBAAQ,KAAK,MAAM,KAAK,MAAM,QAAQ;AAC5C,qBAAO;AACU,qBAAA,CAAA,GAAM,cAAc,OAAO,MAAM,CAAC;;AAA7C,yBAAW,GAAkC,KAAA;AAC7C,uBAAS,OAAO,MAAM,QAAQ;AACpC,iBAAG,SAAS,UAAU,CAAA;AACtB,qBAAA,CAAA,GAAO,MAAM;;;;IACd;IACD,UAAQ,SAAC,UAAgB;AACvB,UAAM,QAAQ,KAAK,MAAM,KAAK,MAAM,QAAQ;AAC5C,aAAO;AACP,UAAM,WAAW,aAAa,OAAO,MAAM;AAC3C,UAAM,SAAS,OAAO,MAAM,QAAQ;AACpC,SAAG,SAAS,UAAU,CAAA;AACtB,aAAO;;IAET,MAAI,WAAA;AACF,aAAO,OAAO,KAAI;;IAEpB,KAAG,WAAA;AACD,aAAO,OAAO,KAAK;;IAErB,QAAQ,CAAA;;AAGV,SAAO;AACT;AAGM,SAAU,WAAY,cAAqB;AAC/C,MAAM,SAAUC,WAAiB,OAAM;AACvC,MAAI,QAAQ;AACZ,MAAI;AACJ,MAAM,QAAiB,CAAA;AACvB,MAAI;AACJ,MAAI;AACJ,MAAI,OAAO;AACX,MAAI,QAAQ;AAEZ,SAAO,eAAe,SAAA,QAAM;AAC1B,QAAM,SAAS,CAAA;AACd,WAAe,aAAa;AAC7B,QAAI,CAAC;AAAQ,eAAS;AACtB,QAAI,KAAK;AACP,YAAM,KAAK,CAAC,KAAI,KAAI,KAAK,CAAC;AAC1B,UAAI,cAAc;AAChB,YAAI,OAAO;AACT,cAAI,KAAK,MAAM;eACV;AACL,cAAI,GAAI,IAAI;;;;AAIlB,UAAM;AACN,UAAM;AACN,YAAQ;AACR,MAAE;EACJ;AACA,SAAO,QAAQ,SAAA,QAAM;AAAI,WAAA,MAAM;EAAN;AACzB,SAAO,UAAU,SAAA,OAAK;AAAI,WAAA,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,GAAI,IAAI;EAAtC;AAC1B,SAAO,gBAAgB,WAAA;;AACrB,WAAO,IAAI;AACX,UAAM;AACN,QAAI,EAAE,UAAU,GAAG;AACjB,aAAO;WACF;AACL,UAAM,eAAe;AACrB,WAAoB,MAAM,IAAG,GAA5B,MAAG,GAAA,CAAA,GAAE,MAAG,GAAA,CAAA,GAAE,QAAK,GAAA,CAAA;AAChB,UAAI,CAAC,cAAc;AACjB,YAAI,OAAO;AACT,cAAI,KAAK,YAAY;eAChB;AACL,cAAI,GAAI,IAAI;;;;EAIpB;AACA,SAAO,cAAc,WAAA;AACnB,QAAM,SAAS,CAAA;AACd,WAAe,aAAa;AAC7B,QAAI,CAAC;AAAQ,eAAS;AACtB,QAAI,KAAK;AACP,YAAM,KAAK,CAAC,KAAI,KAAI,KAAK,CAAC;AAC1B,UAAI,cAAc;AAChB,YAAI,OAAO;AACT,cAAI,KAAK,MAAM;eACV;AACL,cAAI,GAAI,IAAI;;;;AAIlB,UAAM;AACN,YAAQ;AACR,UAAM;AACN,MAAE;EACJ;AACA,SAAO,eAAe,WAAA;;AACpB,WAAO,IAAI;AACX,UAAM;AACN,QAAI,EAAE,UAAU,GAAG;AACjB,aAAO;WACF;AACL,UAAM,eAAe;AACrB,WAAoB,MAAM,IAAG,GAA5B,MAAG,GAAA,CAAA,GAAE,MAAG,GAAA,CAAA,GAAE,QAAK,GAAA,CAAA;AAChB,UAAI,CAAC,cAAc;AACjB,YAAI,OAAO;AACT,cAAI,KAAK,YAAY;eAChB;AACL,cAAI,GAAI,IAAI;;;;EAIpB;AAEA,SAAO;IACL,OAAK,SAAC,UAAgB;AACpB,aAAO,MAAM,QAAQ;AACrB,aAAO;;IAET,MAAI,WAAA;AACF,aAAO;;;AAGb;AC9GA,IAAM,8BAA8B;AAUd,SAAA,SAAS,cAA2D,SAA6B;;;;;;AACrH,oBAAU,WAAW,CAAA;AACf,uBAAa,QAAS,kBAAmB,8BAA8B;AAC9D,iBAAA,CAAA,GAAM,yBAAyB,cAAc,UAAU,CAAC;;AAAjE,mBAAS,GAAwD,KAAA;AACjE,qBAAW,OAAO,OAAO;AACzB,eAAK,IAAI,QAAM,SAAS,YAAY;AAC1C,aAAG,QAAQ,SAAS,eAAe,EAAE,OAAO,gBAAgB,QAAQ,CAAC;AACrE,iBAAM,CAAA,GAAA,WAAW,IAAI,QAAQ,OAAO,CAAC;;AAArC,aAAA,KAAA;AACA,iBAAA,CAAA,GAAO,EAAE;;;;AACV;SAeqB,WAAW,IAAW,cAA2D,SAAuB;;AA2C5H,aAAe,YAAS;;;;;;iCAETC,cAAW;;;;;AACpB,0BAAG,WAAW,SAASA,aAAY,SAAS;AAAY,+BAAA,CAAA,GAAA,UAAA;AACxD,0BAAI,CAACA,aAAY;AAAY,+BAAA,CAAA,GAAA,OAAA;AAC7B,0BAAI,CAAEA,aAAY,KAAa,cAAcA,aAAY,KAAK,WAAW;AAC9D,+BAAA,CAAA,GAAA,UAAA;AAEX,0BAAI,kBAAkB;AAEpB,gCAAM,kBAAkB,WAAA;AAAI,iCAAA,iBAAiB,QAAQ;wBAAC,CAAA;;AAElD,kCAAYA,aAAY;AACxB,sBAAAC,SAAQ,GAAG,MAAM,SAAS;AAC1B,uCAAiB,SAAS,OAAO,OAAO,SAAA,GAAC;AAAI,+BAAA,EAAE,SAAS;sBAAS,CAAA,EAAE,CAAC,EAAE;AAC5E,0BAAI,CAACA,QAAO;AACV,4BAAI,CAAC,QAAS;AACZ,gCAAM,IAAI,MAAM,kBAAA,OAAkBD,aAAY,WAA4C,mCAAA,CAAA;;AAEjF,iCAAA,CAAA,GAAA,UAAA;;AAEb,0BAAI,CAAC,QAAS,2BACZ,eAAe,MAAM,GAAG,EAAE,CAAC,KAAKC,OAAM,OAAO,QAAQ,KAAK;AAC1D,8BAAM,IAAI,MAAM,iCAAA,OAAiCD,aAAY,WAAa,IAAA,CAAA;;AAGtE,mCAAaA,aAAY;AAGzB,6BAAc,CAAA;AACpB,2BAAQ,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AACnC,8BAAM,WAAW,CAAC;AACxB,4BAAI,CAAC,IAAI,YAAY;AACnB,+BAAK,KAAK,KAAK,OAAO,GAAG,CAAC;+BACrB;AACL;;;AAIE,+BAAS,QAAS;AAClB,kCAAY,QAAS;AAEvB,qCAAe,SACjBA,aAAY,UACV,KAAK,OAAO,SAAA,OAAK;AAAI,+BAAA,OAAO,WAAW,KAAK;sBAAC,CAAA,IAC7C,KAAK,OAAO,SAACE,KAAY;4BAAX,MAAGA,IAAA,CAAA,GAAE,QAAKA,IAAA,CAAA;AAAM,+BAAA,OAAO,WAAW,OAAO,GAAG;uBAAC,IAC7D;AACF,0BAAI,WAAW;AACb,uCAAe,aAAa,IAAIF,aAAY,UAC1C,SAAA,OAAK;AAAI,iCAAA,UAAU,WAAW,KAAK,EAAE;wBAA5B,IACT,SAACE,KAAY;8BAAX,MAAGA,IAAA,CAAA,GAAE,QAAKA,IAAA,CAAA;AACV,8BAAM,MAAM,UAAU,WAAW,OAAO,GAAG;AAC3C,iCAAO,CAAC,IAAI,KAAK,IAAI,KAAK;wBAC5B,CAAC;;AAEC,2BAAiBF,aAAY,UACjC,CAAC,QAAW,YAAY,IACxB,CAAC,aAAa,IAAI,SAAA,KAAK;AAAA,+BAAA,IAAI,CAAC;sBAAC,CAAA,GAAG,KAAK,IAAI,SAAA,KAAK;AAAA,+BAAA,IAAI,CAAC;sBAAC,CAAA,CAAC,GAFhDG,QAAI,GAAA,CAAA,GAAE,SAAM,GAAA,CAAA;2BAIf,QAAS,gBAAT,QAAwB,CAAA,GAAA,CAAA;AAC1B,6BAAM,CAAA,GAAAF,OAAM,QAAQ,QAAQE,KAAI,CAAC;;AAAjC,yBAAA,KAAA;;;AAEA,6BAAM,CAAA,GAAAF,OAAM,QAAQ,QAAQE,KAAI,CAAC;;AAAjC,yBAAA,KAAA;;;AAEF,+BAAS,iBAAiB,KAAK;AAC/B,0BAAI,CAAE,KAAa,YAAY;AAC7B,iCAAS,mBAAmB;;AAE9B,iCAAW,OAAO,GAAG,KAAK,MAAM;;;;;;;;uBAlERD,MAAA,SAAS;;;AAAT,kBAAA,EAAAE,MAAAF,IAAA,QAAa,QAAA,CAAA,GAAA,CAAA;AAA5B,4BAAWA,IAAAE,GAAA;iCAAX,WAAW,CAAA;;;;;;;AAAI,cAAAA;;;AAsE1B,qBAAO,SAAS,KAAK,SAAS,KAAK,SAAS,KAAK,CAAC,EAAE,QAAQ,CAAE,SAAS,KAAK,CAAC,EAAE,KAAa,YAAY;AAEtG,yBAAS,KAAK,OAAO,GAAG,CAAC;;AAEvB,kBAAA,EAAA,CAAC,WAAW,KAAI,KAAM,CAAC,WAAW,IAAG,GAArC,QAAuC,CAAA,GAAA,CAAA;AAErC,kBAAA,CAAAC,wBAAA,QAAsB,CAAA,GAAA,CAAA;AAIxB,yBAAW,SAAS,UAAU;;;AAE9B,qBAAM,CAAA,GAAA,QAAM,QAAQ,WAAW,UAAU,UAAU,CAAC,CAAC;;AAArD,iBAAA,KAAA;;;;;AAEG,qBAAM,CAAA,GAAA,EAAA;;AACF,qBAAA,CAAA,GAAA,CAAA;;;;;;;;;IACd;;;;;AAlID,oBAAU,WAAW,CAAA;AACf,uBAAa,QAAS,kBAAmB,8BAA8B;AAC1D,iBAAA,CAAA,GAAM,yBAAyB,cAAc,UAAU,CAAC;;AAArE,uBAAa,GAAwD,KAAA;AACvE,yBAAe,WAAW;AACxB,UAAAA,0BAAyB,oBAAoB;AAE7C,qBAAW,aAAa;AACxB,uBAAa,QAAQ,aAAY,QAAQ,aAAY,CAAA;AAE3D,cAAI,CAAC,QAAS,kBAAkB,GAAG,SAAS,SAAS;AACnD,kBAAM,IAAI,MAAM,0CAAA,OAA0C,GAAG,MAAI,iBAAA,EAAA,OAAkB,SAAS,YAAY,CAAE;AAC5G,cAAI,CAAC,QAAS,qBAAqB,GAAG,UAAU,SAAS,iBAAiB;AAExE,kBAAM,IAAI,MAAM,4DAAA,OAA4D,GAAG,OAAK,iBAAA,EAAA,OAAkB,SAAS,eAAe,CAAE;;AAG1H,6BAAqB,QAAO;AAC9B,qBAA2B;YAC/B,MAAM;YACN,eAAe;YACf,iBAAiB;YACjB,WAAW,SAAS,OAAO,OAAO,SAAC,GAAG,GAAC;AAAK,qBAAA,IAAI,EAAE;YAAN,GAAgB,CAAC;YAC7D,aAAa,SAAS,OAAO;;AAE/B,cAAI,kBAAkB;AAEpB,oBAAM,kBAAkB,WAAA;AAAI,qBAAA,iBAAiB,QAAQ;YAAC,CAAA;;eAGpD,QAAS,wBAAT,QAAgC,CAAA,GAAA,CAAA;kBACd,KAAA,GAAG;;;AAAH,cAAA,EAAA,KAAA,GAAA,QAAS,QAAA,CAAA,GAAA,CAAA;AAAlB,kBAAK,GAAA,EAAA;AACd,cAAG,WAAW,SAAS,MAAM,IAAI;AAAI,mBAAS,CAAA,GAAA,CAAA;AAC9C,iBAAA,CAAA,GAAM,MAAM,MAAK,CAAE;;AAAnB,aAAA,KAAA;;;AAFkB;;;eAMlB,QAAQ,cAAR,QAAqB,CAAA,GAAA,CAAA;AACvB,iBAAM,CAAA,GAAA,UAAS,CAAE;;AAAjB,aAAA,KAAA;;QAEA,KAAA;AAAA,iBAAA,CAAA,GAAM,GAAG,YAAY,MAAM,GAAG,QAAQ,SAAS,CAAC;;AAAhD,aAAA,KAAA;;;AA4FF,mBAAS,OAAO;AAChB,cAAI,kBAAkB;AAEpB,oBAAM,kBAAkB,WAAA;AAAI,qBAAA,iBAAiB,QAAQ;YAAC,CAAA;;;;;;;;;AAEzD;AAED,SAAe,yBAAyB,cAA2D,YAAkB;;;;;;AAC7G,mBAAU,WAAW,eACzB,WAAqC,YAAY,IACjD;;;eAEK,CAAC,OAAO,IAAG,EAAE,QAAA,CAAA,GAAA,CAAA;AAClB,iBAAA,CAAA,GAAM,OAAO,UAAU,UAAU,CAAC;;AAAlC,aAAA,KAAA;AAEA,cAAI,OAAO,OAAO,QAAQ,OAAO,OAAO,KAAM;AAC5C,mBAAM,CAAA,GAAA,CAAA;;;AAEJ,yBAAe,OAAO;AAC5B,cAAI,CAAC,gBAAgB,aAAa,cAAc;AAC9C,kBAAM,IAAI,MAAM,kCAAkC;AACpD,cAAI,aAAa,gBAAiB,SAAS;AACzC,kBAAM,IAAI,MAAM,kBAAA,OAAkB,aAAa,eAA6B,gBAAA,CAAA;;AAE9E,cAAI,CAAC,aAAa,MAAO;AACvB,kBAAM,IAAI,MAAM,wBAAwB;;AAE1C,cAAI,CAAC,aAAa,KAAM,cAAc;AACpC,kBAAM,IAAI,MAAM,qCAAqC;;AAEvD,cAAI,CAAC,aAAa,KAAM,iBAAiB;AACvC,kBAAM,IAAI,MAAM,wCAAwC;;AAE1D,cAAI,CAAC,aAAa,KAAM,QAAQ;AAC9B,kBAAM,IAAI,MAAM,+BAA+B;;AAEjD,iBAAA,CAAA,GAAO,MAAM;;;;AACd;AC9MD,QAAM,UAAU,SAAS,SAAuB,SAAuB;AACrE,SAAO,SAAS,MAAM,OAAO;AAC/B;AACA,QAAM,UAAU,SAAS,SAAuB,MAAY,SAAuB;AACjF,SAAO,WAAW,MAAM,MAAM,OAAO;AACvC;AACA,QAAM,SAAS,SAAC,MAAY,SAA6B;AAAK,SAAA,SAAS,MAAM,OAAO;AAAC;", - "names": ["asap", "DexieError", "type", "resolve", "reject", "props", "trans", "Promise", "keys", "i", "args", "Table", "count", "ctx", "Collection", "cmp", "direction", "addRange", "ranges", "WhereClause", "indexedDB", "p", "Transaction", "db", "tables", "keyPath", "compound", "result", "req", "openCursor", "query", "ev", "hasGetAll", "Version", "Dexie", "Debug.debug", "Debug.getErrorWithStack", "safari14Workaround", "primaryKey", "dxTrans", "target", "key", "state", "_Dexie", "Debug.setDebug", "type", "global", "this", "obj", "self", "props", "keys", "iter", "TypesonPromise", "hasOwn", "getProto", "toStringTag", "getByKeyPath", "isArray", "Typeson", "ret", "_ref", "cyclic", "stateObj", "_loop", "key", "_loop2", "i", "possibleTypesonPromise", "val", "newVal", "k", "set", "test", "replace", "revive", "Undefined", "_typeof", "Symbol", "iterator", "constructor", "prototype", "_classCallCheck", "instance", "Constructor", "TypeError", "_defineProperties", "target", "length", "descriptor", "enumerable", "configurable", "writable", "Object", "defineProperty", "_defineProperty", "value", "ownKeys", "object", "enumerableOnly", "getOwnPropertySymbols", "symbols", "filter", "sym", "getOwnPropertyDescriptor", "push", "apply", "_objectSpread2", "arguments", "source", "forEach", "getOwnPropertyDescriptors", "defineProperties", "_slicedToArray", "arr", "_arrayWithHoles", "Array", "_iterableToArrayLimit", "_arr", "_n", "_d", "_e", "_s", "_i", "next", "done", "err", "_unsupportedIterableToArray", "_nonIterableRest", "_toConsumableArray", "_arrayWithoutHoles", "_arrayLikeToArray", "_iterableToArray", "from", "_nonIterableSpread", "o", "minLen", "n", "toString", "call", "slice", "name", "len", "arr2", "f", "p", "Promise", "__typeson__type__", "then", "onFulfilled", "onRejected", "_this", "typesonResolve", "typesonReject", "res", "reject", "resolve", "v", "meth", "promArr", "map", "prom", "toStr", "hasOwn$1", "hasOwnProperty", "getPrototypeOf", "fnToString", "isThenable", "catchCheck", "isObject", "hasConstructorOf", "a", "b", "proto", "Ctor", "isPlainObject", "escapeKeyPathComponent", "keyPathComponent", "unescapeKeyPathComponent", "keyPath", "period", "indexOf", "innerObj", "undefined", "setAtKeyPath", "_await", "direct", "internalStateObjPropsToIgnore", "_async", "args", "e", "nestedPathsFirst", "keypath", "as", "match", "bs", "options", "plainObjectReplacers", "nonplainObjectReplacers", "revivers", "types", "_createClass", "protoProps", "staticProps", "stringify", "replacer", "space", "opts", "stringification", "encapsulated", "encapsulate", "JSON", "stringifySync", "throwOnBadSyncType", "sync", "stringifyAsync", "parse", "text", "reviver", "parseSync", "parseAsync", "specialTypeNames", "returnTypeNames", "rootTypeName", "iterateNone", "checkPromises", "promisesData", "all", "pd", "promResults", "promResult", "_exit", "newPromisesData", "_promisesData$splice2", "splice", "_prData", "parentObj", "detectedType", "encaps", "_encapsulate", "isTypesonPromise", "_invoke", "body", "result", "encaps2", "_result", "that", "refObjs", "refKeys", "promisesDataRoot", "encapsulateObserver", "finish", "typeNames", "values", "getJSONType", "Set", "$types", "$", "_adaptBuiltinStateObjectProperties", "ownKeysObj", "cb", "assign", "vals", "prop", "tmp", "resolvingTypesonPromise", "observerData", "$typeof", "runObserver", "awaitingTypesonPromise", "includes", "Number", "isNaN", "NEGATIVE_INFINITY", "POSITIVE_INFINITY", "replaced", "iterateIn", "iterateUnsetNumeric", "refIndex", "cyclicKeypath", "clone", "isPlainObj", "isArr", "ArrayBuffer", "addLength", "kp", "Boolean", "endIterateIn", "end", "endIterateOwn", "vl", "endIterateUnsetNumeric", "plainObject", "replacers", "existing", "concat", "replaceAsync", "replacing", "typeDetected", "encapsulateSync", "encapsulateAsync", "keyPathResolutions", "ignore$Types", "executeReviver", "Error", "reviveAsync", "revivalPromises", "checkUndefined", "retrn", "revivePlainObjects", "plainObjectTypes", "entries", "_ref3", "_ref4", "plain", "sort", "reduce", "reducer", "_ref7", "_revive", "_clone", "_keyPathResolutions$", "_target", "_clone2", "_ret", "typ", "r", "_ref8", "reviveSync", "register", "typeSpecSets", "R", "typeSpec", "typSpec", "typeId", "JSON_TYPES", "spec", "testPlainObjects", "existingReplacer", "Class", "x", "create", "_spec2", "replacerObj", "bind", "start", "fallback", "reviverObj", "isUserObject", "userObject", "s", "arrayNonindexKeys", "some", "String", "parseInt", "sparseUndefined", "undef", "primitiveObjects", "StringObject", "BooleanObject", "NumberObject", "specialNumbers", "nan", "NaN", "infinity", "negativeInfinity", "date", "dt", "time", "getTime", "Date", "regexp", "rexp", "flags", "ignoreCase", "multiline", "sticky", "unicode", "RegExp", "mp", "Map", "st", "chars", "lookup", "Uint8Array", "charCodeAt", "encode", "arraybuffer", "byteOffset", "lngth", "byteLength", "bytes", "base64", "decode", "encoded1", "encoded2", "encoded3", "encoded4", "bufferLength", "_i2", "buffers", "index", "b64", "buffer", "_global", "typedArrays", "typeName", "arrType", "TypedArray", "toLowerCase", "l", "encoded", "b64Obj", "dataview", "DataView", "intlTypes", "IntlCollator", "Intl", "Collator", "c", "resolvedOptions", "locale", "IntlDateTimeFormat", "DateTimeFormat", "dtf", "IntlNumberFormat", "NumberFormat", "nf", "string2arraybuffer", "str", "array", "file", "req", "XMLHttpRequest", "overrideMimeType", "open", "URL", "createObjectURL", "send", "status", "stringContents", "responseText", "lastModified", "File", "reader", "FileReader", "addEventListener", "error", "readAsBinaryString", "bigint", "BigInt", "bigintObject", "cryptokey", "extractable", "crypto", "subtle", "exportKey", "jwk", "algorithm", "usages", "importKey", "imagedata", "d", "data", "width", "height", "ImageData", "Uint8ClampedArray", "imagebitmap", "dataset", "bm", "canvas", "document", "createElement", "getContext", "drawImage", "toDataURL", "ctx", "img", "src", "createImageBitmap", "filelist", "fl", "item", "_files", "t", "blob", "Blob", "StructuredCloning", "typedArray", "encodeB64", "decodeB64", "tableName", "_a", "require$$0", "clarinet", "tableExport", "table", "_a", "keys", "_i", "readBlobsSynchronously"] -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/handlebars.js b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/handlebars.js deleted file mode 100644 index e58077d..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/handlebars.js +++ /dev/null @@ -1,6316 +0,0 @@ -// @ts-nocheck -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - -// node_modules/handlebars/dist/cjs/handlebars/utils.js -var require_utils = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/utils.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.extend = extend; - exports.indexOf = indexOf2; - exports.escapeExpression = escapeExpression; - exports.isEmpty = isEmpty; - exports.createFrame = createFrame3; - exports.blockParams = blockParams; - exports.appendContextPath = appendContextPath; - var escape = { - "&": "&", - "<": "<", - ">": ">", - '"': """, - "'": "'", - "`": "`", - "=": "=" - }; - var badChars = /[&<>"'`=]/g; - var possible = /[&<>"'`=]/; - function escapeChar(chr) { - return escape[chr]; - } - function extend(obj) { - for (var i = 1; i < arguments.length; i++) { - for (var key in arguments[i]) { - if (Object.prototype.hasOwnProperty.call(arguments[i], key)) { - obj[key] = arguments[i][key]; - } - } - } - return obj; - } - var toString = Object.prototype.toString; - exports.toString = toString; - var isFunction = function isFunction2(value) { - return typeof value === "function"; - }; - if (isFunction(/x/)) { - exports.isFunction = isFunction = function(value) { - return typeof value === "function" && toString.call(value) === "[object Function]"; - }; - } - exports.isFunction = isFunction; - var isArray = Array.isArray || function(value) { - return value && typeof value === "object" ? toString.call(value) === "[object Array]" : false; - }; - exports.isArray = isArray; - function indexOf2(array, value) { - for (var i = 0, len = array.length; i < len; i++) { - if (array[i] === value) { - return i; - } - } - return -1; - } - function escapeExpression(string) { - if (typeof string !== "string") { - if (string && string.toHTML) { - return string.toHTML(); - } else if (string == null) { - return ""; - } else if (!string) { - return string + ""; - } - string = "" + string; - } - if (!possible.test(string)) { - return string; - } - return string.replace(badChars, escapeChar); - } - function isEmpty(value) { - if (!value && value !== 0) { - return true; - } else if (isArray(value) && value.length === 0) { - return true; - } else { - return false; - } - } - function createFrame3(object) { - var frame = extend({}, object); - frame._parent = object; - return frame; - } - function blockParams(params, ids) { - params.path = ids; - return params; - } - function appendContextPath(contextPath, id) { - return (contextPath ? contextPath + "." : "") + id; - } - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/exception.js -var require_exception = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/exception.js"(exports, module) { - "use strict"; - exports.__esModule = true; - var errorProps = ["description", "fileName", "lineNumber", "endLineNumber", "message", "name", "number", "stack"]; - function Exception(message, node) { - var loc = node && node.loc, line = void 0, endLineNumber = void 0, column = void 0, endColumn = void 0; - if (loc) { - line = loc.start.line; - endLineNumber = loc.end.line; - column = loc.start.column; - endColumn = loc.end.column; - message += " - " + line + ":" + column; - } - var tmp = Error.prototype.constructor.call(this, message); - for (var idx = 0; idx < errorProps.length; idx++) { - this[errorProps[idx]] = tmp[errorProps[idx]]; - } - if (Error.captureStackTrace) { - Error.captureStackTrace(this, Exception); - } - try { - if (loc) { - this.lineNumber = line; - this.endLineNumber = endLineNumber; - if (Object.defineProperty) { - Object.defineProperty(this, "column", { - value: column, - enumerable: true - }); - Object.defineProperty(this, "endColumn", { - value: endColumn, - enumerable: true - }); - } else { - this.column = column; - this.endColumn = endColumn; - } - } - } catch (nop) { - } - } - Exception.prototype = new Error(); - exports["default"] = Exception; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js -var require_block_helper_missing = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js"(exports, module) { - "use strict"; - exports.__esModule = true; - var _utils = require_utils(); - exports["default"] = function(instance) { - instance.registerHelper("blockHelperMissing", function(context, options) { - var inverse = options.inverse, fn = options.fn; - if (context === true) { - return fn(this); - } else if (context === false || context == null) { - return inverse(this); - } else if (_utils.isArray(context)) { - if (context.length > 0) { - if (options.ids) { - options.ids = [options.name]; - } - return instance.helpers.each(context, options); - } else { - return inverse(this); - } - } else { - if (options.data && options.ids) { - var data = _utils.createFrame(options.data); - data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name); - options = { data }; - } - return fn(context, options); - } - }); - }; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/helpers/each.js -var require_each = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/helpers/each.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _utils = require_utils(); - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - exports["default"] = function(instance) { - instance.registerHelper("each", function(context, options) { - if (!options) { - throw new _exception2["default"]("Must pass iterator to #each"); - } - var fn = options.fn, inverse = options.inverse, i = 0, ret = "", data = void 0, contextPath = void 0; - if (options.data && options.ids) { - contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + "."; - } - if (_utils.isFunction(context)) { - context = context.call(this); - } - if (options.data) { - data = _utils.createFrame(options.data); - } - function execIteration(field, index, last) { - if (data) { - data.key = field; - data.index = index; - data.first = index === 0; - data.last = !!last; - if (contextPath) { - data.contextPath = contextPath + field; - } - } - ret = ret + fn(context[field], { - data, - blockParams: _utils.blockParams([context[field], field], [contextPath + field, null]) - }); - } - if (context && typeof context === "object") { - if (_utils.isArray(context)) { - for (var j = context.length; i < j; i++) { - if (i in context) { - execIteration(i, i, i === context.length - 1); - } - } - } else if (typeof Symbol === "function" && context[Symbol.iterator]) { - var newContext = []; - var iterator = context[Symbol.iterator](); - for (var it = iterator.next(); !it.done; it = iterator.next()) { - newContext.push(it.value); - } - context = newContext; - for (var j = context.length; i < j; i++) { - execIteration(i, i, i === context.length - 1); - } - } else { - (function() { - var priorKey = void 0; - Object.keys(context).forEach(function(key) { - if (priorKey !== void 0) { - execIteration(priorKey, i - 1); - } - priorKey = key; - i++; - }); - if (priorKey !== void 0) { - execIteration(priorKey, i - 1, true); - } - })(); - } - } - if (i === 0) { - ret = inverse(this); - } - return ret; - }); - }; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js -var require_helper_missing = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - exports["default"] = function(instance) { - instance.registerHelper("helperMissing", function() { - if (arguments.length === 1) { - return void 0; - } else { - throw new _exception2["default"]('Missing helper: "' + arguments[arguments.length - 1].name + '"'); - } - }); - }; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/helpers/if.js -var require_if = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/helpers/if.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _utils = require_utils(); - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - exports["default"] = function(instance) { - instance.registerHelper("if", function(conditional, options) { - if (arguments.length != 2) { - throw new _exception2["default"]("#if requires exactly one argument"); - } - if (_utils.isFunction(conditional)) { - conditional = conditional.call(this); - } - if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) { - return options.inverse(this); - } else { - return options.fn(this); - } - }); - instance.registerHelper("unless", function(conditional, options) { - if (arguments.length != 2) { - throw new _exception2["default"]("#unless requires exactly one argument"); - } - return instance.helpers["if"].call(this, conditional, { - fn: options.inverse, - inverse: options.fn, - hash: options.hash - }); - }); - }; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/helpers/log.js -var require_log = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/helpers/log.js"(exports, module) { - "use strict"; - exports.__esModule = true; - exports["default"] = function(instance) { - instance.registerHelper("log", function() { - var args = [void 0], options = arguments[arguments.length - 1]; - for (var i = 0; i < arguments.length - 1; i++) { - args.push(arguments[i]); - } - var level = 1; - if (options.hash.level != null) { - level = options.hash.level; - } else if (options.data && options.data.level != null) { - level = options.data.level; - } - args[0] = level; - instance.log.apply(instance, args); - }); - }; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js -var require_lookup = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js"(exports, module) { - "use strict"; - exports.__esModule = true; - exports["default"] = function(instance) { - instance.registerHelper("lookup", function(obj, field, options) { - if (!obj) { - return obj; - } - return options.lookupProperty(obj, field); - }); - }; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/helpers/with.js -var require_with = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/helpers/with.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _utils = require_utils(); - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - exports["default"] = function(instance) { - instance.registerHelper("with", function(context, options) { - if (arguments.length != 2) { - throw new _exception2["default"]("#with requires exactly one argument"); - } - if (_utils.isFunction(context)) { - context = context.call(this); - } - var fn = options.fn; - if (!_utils.isEmpty(context)) { - var data = options.data; - if (options.data && options.ids) { - data = _utils.createFrame(options.data); - data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]); - } - return fn(context, { - data, - blockParams: _utils.blockParams([context], [data && data.contextPath]) - }); - } else { - return options.inverse(this); - } - }); - }; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/helpers.js -var require_helpers = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/helpers.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.registerDefaultHelpers = registerDefaultHelpers; - exports.moveHelperToHooks = moveHelperToHooks2; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _helpersBlockHelperMissing = require_block_helper_missing(); - var _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing); - var _helpersEach = require_each(); - var _helpersEach2 = _interopRequireDefault(_helpersEach); - var _helpersHelperMissing = require_helper_missing(); - var _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing); - var _helpersIf = require_if(); - var _helpersIf2 = _interopRequireDefault(_helpersIf); - var _helpersLog = require_log(); - var _helpersLog2 = _interopRequireDefault(_helpersLog); - var _helpersLookup = require_lookup(); - var _helpersLookup2 = _interopRequireDefault(_helpersLookup); - var _helpersWith = require_with(); - var _helpersWith2 = _interopRequireDefault(_helpersWith); - function registerDefaultHelpers(instance) { - _helpersBlockHelperMissing2["default"](instance); - _helpersEach2["default"](instance); - _helpersHelperMissing2["default"](instance); - _helpersIf2["default"](instance); - _helpersLog2["default"](instance); - _helpersLookup2["default"](instance); - _helpersWith2["default"](instance); - } - function moveHelperToHooks2(instance, helperName, keepHelper) { - if (instance.helpers[helperName]) { - instance.hooks[helperName] = instance.helpers[helperName]; - if (!keepHelper) { - delete instance.helpers[helperName]; - } - } - } - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js -var require_inline = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js"(exports, module) { - "use strict"; - exports.__esModule = true; - var _utils = require_utils(); - exports["default"] = function(instance) { - instance.registerDecorator("inline", function(fn, props, container, options) { - var ret = fn; - if (!props.partials) { - props.partials = {}; - ret = function(context, options2) { - var original = container.partials; - container.partials = _utils.extend({}, original, props.partials); - var ret2 = fn(context, options2); - container.partials = original; - return ret2; - }; - } - props.partials[options.args[0]] = options.fn; - return ret; - }); - }; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/decorators.js -var require_decorators = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/decorators.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.registerDefaultDecorators = registerDefaultDecorators; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _decoratorsInline = require_inline(); - var _decoratorsInline2 = _interopRequireDefault(_decoratorsInline); - function registerDefaultDecorators(instance) { - _decoratorsInline2["default"](instance); - } - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/logger.js -var require_logger = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/logger.js"(exports, module) { - "use strict"; - exports.__esModule = true; - var _utils = require_utils(); - var logger = { - methodMap: ["debug", "info", "warn", "error"], - level: "info", - // Maps a given level value to the `methodMap` indexes above. - lookupLevel: function lookupLevel(level) { - if (typeof level === "string") { - var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase()); - if (levelMap >= 0) { - level = levelMap; - } else { - level = parseInt(level, 10); - } - } - return level; - }, - // Can be overridden in the host environment - log: function log(level) { - level = logger.lookupLevel(level); - if (typeof console !== "undefined" && logger.lookupLevel(logger.level) <= level) { - var method = logger.methodMap[level]; - if (!console[method]) { - method = "log"; - } - for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - message[_key - 1] = arguments[_key]; - } - console[method].apply(console, message); - } - } - }; - exports["default"] = logger; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js -var require_create_new_lookup_object = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.createNewLookupObject = createNewLookupObject; - var _utils = require_utils(); - function createNewLookupObject() { - for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) { - sources[_key] = arguments[_key]; - } - return _utils.extend.apply(void 0, [/* @__PURE__ */ Object.create(null)].concat(sources)); - } - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js -var require_proto_access = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.createProtoAccessControl = createProtoAccessControl2; - exports.resultIsAllowed = resultIsAllowed2; - exports.resetLoggedProperties = resetLoggedProperties; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _createNewLookupObject = require_create_new_lookup_object(); - var _logger = require_logger(); - var _logger2 = _interopRequireDefault(_logger); - var loggedProperties = /* @__PURE__ */ Object.create(null); - function createProtoAccessControl2(runtimeOptions) { - var defaultMethodWhiteList = /* @__PURE__ */ Object.create(null); - defaultMethodWhiteList["constructor"] = false; - defaultMethodWhiteList["__defineGetter__"] = false; - defaultMethodWhiteList["__defineSetter__"] = false; - defaultMethodWhiteList["__lookupGetter__"] = false; - var defaultPropertyWhiteList = /* @__PURE__ */ Object.create(null); - defaultPropertyWhiteList["__proto__"] = false; - return { - properties: { - whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties), - defaultValue: runtimeOptions.allowProtoPropertiesByDefault - }, - methods: { - whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods), - defaultValue: runtimeOptions.allowProtoMethodsByDefault - } - }; - } - function resultIsAllowed2(result, protoAccessControl, propertyName) { - if (typeof result === "function") { - return checkWhiteList(protoAccessControl.methods, propertyName); - } else { - return checkWhiteList(protoAccessControl.properties, propertyName); - } - } - function checkWhiteList(protoAccessControlForType, propertyName) { - if (protoAccessControlForType.whitelist[propertyName] !== void 0) { - return protoAccessControlForType.whitelist[propertyName] === true; - } - if (protoAccessControlForType.defaultValue !== void 0) { - return protoAccessControlForType.defaultValue; - } - logUnexpecedPropertyAccessOnce(propertyName); - return false; - } - function logUnexpecedPropertyAccessOnce(propertyName) { - if (loggedProperties[propertyName] !== true) { - loggedProperties[propertyName] = true; - _logger2["default"].log("error", 'Handlebars: Access has been denied to resolve the property "' + propertyName + '" because it is not an "own property" of its parent.\nYou can add a runtime option to disable the check or this warning:\nSee https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details'); - } - } - function resetLoggedProperties() { - Object.keys(loggedProperties).forEach(function(propertyName) { - delete loggedProperties[propertyName]; - }); - } - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/base.js -var require_base = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/base.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.HandlebarsEnvironment = HandlebarsEnvironment; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _utils = require_utils(); - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - var _helpers = require_helpers(); - var _decorators = require_decorators(); - var _logger = require_logger(); - var _logger2 = _interopRequireDefault(_logger); - var _internalProtoAccess = require_proto_access(); - var VERSION = "4.7.8"; - exports.VERSION = VERSION; - var COMPILER_REVISION = 8; - exports.COMPILER_REVISION = COMPILER_REVISION; - var LAST_COMPATIBLE_COMPILER_REVISION = 7; - exports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION; - var REVISION_CHANGES = { - 1: "<= 1.0.rc.2", - // 1.0.rc.2 is actually rev2 but doesn't report it - 2: "== 1.0.0-rc.3", - 3: "== 1.0.0-rc.4", - 4: "== 1.x.x", - 5: "== 2.0.0-alpha.x", - 6: ">= 2.0.0-beta.1", - 7: ">= 4.0.0 <4.3.0", - 8: ">= 4.3.0" - }; - exports.REVISION_CHANGES = REVISION_CHANGES; - var objectType = "[object Object]"; - function HandlebarsEnvironment(helpers, partials, decorators) { - this.helpers = helpers || {}; - this.partials = partials || {}; - this.decorators = decorators || {}; - _helpers.registerDefaultHelpers(this); - _decorators.registerDefaultDecorators(this); - } - HandlebarsEnvironment.prototype = { - constructor: HandlebarsEnvironment, - logger: _logger2["default"], - log: _logger2["default"].log, - registerHelper: function registerHelper(name, fn) { - if (_utils.toString.call(name) === objectType) { - if (fn) { - throw new _exception2["default"]("Arg not supported with multiple helpers"); - } - _utils.extend(this.helpers, name); - } else { - this.helpers[name] = fn; - } - }, - unregisterHelper: function unregisterHelper(name) { - delete this.helpers[name]; - }, - registerPartial: function registerPartial(name, partial) { - if (_utils.toString.call(name) === objectType) { - _utils.extend(this.partials, name); - } else { - if (typeof partial === "undefined") { - throw new _exception2["default"]('Attempting to register a partial called "' + name + '" as undefined'); - } - this.partials[name] = partial; - } - }, - unregisterPartial: function unregisterPartial(name) { - delete this.partials[name]; - }, - registerDecorator: function registerDecorator(name, fn) { - if (_utils.toString.call(name) === objectType) { - if (fn) { - throw new _exception2["default"]("Arg not supported with multiple decorators"); - } - _utils.extend(this.decorators, name); - } else { - this.decorators[name] = fn; - } - }, - unregisterDecorator: function unregisterDecorator(name) { - delete this.decorators[name]; - }, - /** - * Reset the memory of illegal property accesses that have already been logged. - * @deprecated should only be used in handlebars test-cases - */ - resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() { - _internalProtoAccess.resetLoggedProperties(); - } - }; - var log = _logger2["default"].log; - exports.log = log; - exports.createFrame = _utils.createFrame; - exports.logger = _logger2["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/safe-string.js -var require_safe_string = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/safe-string.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function SafeString(string) { - this.string = string; - } - SafeString.prototype.toString = SafeString.prototype.toHTML = function() { - return "" + this.string; - }; - exports["default"] = SafeString; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js -var require_wrapHelper = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.wrapHelper = wrapHelper; - function wrapHelper(helper, transformOptionsFn) { - if (typeof helper !== "function") { - return helper; - } - var wrapper = function wrapper2() { - var options = arguments[arguments.length - 1]; - arguments[arguments.length - 1] = transformOptionsFn(options); - return helper.apply(this, arguments); - }; - return wrapper; - } - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/runtime.js -var require_runtime = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/runtime.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.checkRevision = checkRevision; - exports.template = template; - exports.wrapProgram = wrapProgram; - exports.resolvePartial = resolvePartial; - exports.invokePartial = invokePartial; - exports.noop = noop2; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - function _interopRequireWildcard(obj) { - if (obj && obj.__esModule) { - return obj; - } else { - var newObj = {}; - if (obj != null) { - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; - } - } - newObj["default"] = obj; - return newObj; - } - } - var _utils = require_utils(); - var Utils = _interopRequireWildcard(_utils); - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - var _base = require_base(); - var _helpers = require_helpers(); - var _internalWrapHelper = require_wrapHelper(); - var _internalProtoAccess = require_proto_access(); - function checkRevision(compilerInfo) { - var compilerRevision = compilerInfo && compilerInfo[0] || 1, currentRevision = _base.COMPILER_REVISION; - if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) { - return; - } - if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) { - var runtimeVersions = _base.REVISION_CHANGES[currentRevision], compilerVersions = _base.REVISION_CHANGES[compilerRevision]; - throw new _exception2["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version (" + runtimeVersions + ") or downgrade your runtime to an older version (" + compilerVersions + ")."); - } else { - throw new _exception2["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version (" + compilerInfo[1] + ")."); - } - } - function template(templateSpec, env) { - if (!env) { - throw new _exception2["default"]("No environment passed to template"); - } - if (!templateSpec || !templateSpec.main) { - throw new _exception2["default"]("Unknown template object: " + typeof templateSpec); - } - templateSpec.main.decorator = templateSpec.main_d; - env.VM.checkRevision(templateSpec.compiler); - var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7; - function invokePartialWrapper(partial, context, options) { - if (options.hash) { - context = Utils.extend({}, context, options.hash); - if (options.ids) { - options.ids[0] = true; - } - } - partial = env.VM.resolvePartial.call(this, partial, context, options); - var extendedOptions = Utils.extend({}, options, { - hooks: this.hooks, - protoAccessControl: this.protoAccessControl - }); - var result = env.VM.invokePartial.call(this, partial, context, extendedOptions); - if (result == null && env.compile) { - options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env); - result = options.partials[options.name](context, extendedOptions); - } - if (result != null) { - if (options.indent) { - var lines = result.split("\n"); - for (var i = 0, l = lines.length; i < l; i++) { - if (!lines[i] && i + 1 === l) { - break; - } - lines[i] = options.indent + lines[i]; - } - result = lines.join("\n"); - } - return result; - } else { - throw new _exception2["default"]("The partial " + options.name + " could not be compiled when running in runtime-only mode"); - } - } - var container = { - strict: function strict(obj, name, loc) { - if (!obj || !(name in obj)) { - throw new _exception2["default"]('"' + name + '" not defined in ' + obj, { - loc - }); - } - return container.lookupProperty(obj, name); - }, - lookupProperty: function lookupProperty(parent, propertyName) { - var result = parent[propertyName]; - if (result == null) { - return result; - } - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return result; - } - if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) { - return result; - } - return void 0; - }, - lookup: function lookup(depths, name) { - var len = depths.length; - for (var i = 0; i < len; i++) { - var result = depths[i] && container.lookupProperty(depths[i], name); - if (result != null) { - return depths[i][name]; - } - } - }, - lambda: function lambda(current, context) { - return typeof current === "function" ? current.call(context) : current; - }, - escapeExpression: Utils.escapeExpression, - invokePartial: invokePartialWrapper, - fn: function fn(i) { - var ret2 = templateSpec[i]; - ret2.decorator = templateSpec[i + "_d"]; - return ret2; - }, - programs: [], - program: function program(i, data, declaredBlockParams, blockParams, depths) { - var programWrapper = this.programs[i], fn = this.fn(i); - if (data || depths || blockParams || declaredBlockParams) { - programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths); - } else if (!programWrapper) { - programWrapper = this.programs[i] = wrapProgram(this, i, fn); - } - return programWrapper; - }, - data: function data(value, depth) { - while (value && depth--) { - value = value._parent; - } - return value; - }, - mergeIfNeeded: function mergeIfNeeded(param, common) { - var obj = param || common; - if (param && common && param !== common) { - obj = Utils.extend({}, common, param); - } - return obj; - }, - // An empty object to use as replacement for null-contexts - nullContext: Object.seal({}), - noop: env.VM.noop, - compilerInfo: templateSpec.compiler - }; - function ret(context) { - var options = arguments.length <= 1 || arguments[1] === void 0 ? {} : arguments[1]; - var data = options.data; - ret._setup(options); - if (!options.partial && templateSpec.useData) { - data = initData2(context, data); - } - var depths = void 0, blockParams = templateSpec.useBlockParams ? [] : void 0; - if (templateSpec.useDepths) { - if (options.depths) { - depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths; - } else { - depths = [context]; - } - } - function main(context2) { - return "" + templateSpec.main(container, context2, container.helpers, container.partials, data, blockParams, depths); - } - main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams); - return main(context, options); - } - ret.isTop = true; - ret._setup = function(options) { - if (!options.partial) { - var mergedHelpers = Utils.extend({}, env.helpers, options.helpers); - wrapHelpersToPassLookupProperty(mergedHelpers, container); - container.helpers = mergedHelpers; - if (templateSpec.usePartial) { - container.partials = container.mergeIfNeeded(options.partials, env.partials); - } - if (templateSpec.usePartial || templateSpec.useDecorators) { - container.decorators = Utils.extend({}, env.decorators, options.decorators); - } - container.hooks = {}; - container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options); - var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7; - _helpers.moveHelperToHooks(container, "helperMissing", keepHelperInHelpers); - _helpers.moveHelperToHooks(container, "blockHelperMissing", keepHelperInHelpers); - } else { - container.protoAccessControl = options.protoAccessControl; - container.helpers = options.helpers; - container.partials = options.partials; - container.decorators = options.decorators; - container.hooks = options.hooks; - } - }; - ret._child = function(i, data, blockParams, depths) { - if (templateSpec.useBlockParams && !blockParams) { - throw new _exception2["default"]("must pass block params"); - } - if (templateSpec.useDepths && !depths) { - throw new _exception2["default"]("must pass parent depths"); - } - return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths); - }; - return ret; - } - function wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) { - function prog(context) { - var options = arguments.length <= 1 || arguments[1] === void 0 ? {} : arguments[1]; - var currentDepths = depths; - if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) { - currentDepths = [context].concat(depths); - } - return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths); - } - prog = executeDecorators(fn, prog, container, depths, data, blockParams); - prog.program = i; - prog.depth = depths ? depths.length : 0; - prog.blockParams = declaredBlockParams || 0; - return prog; - } - function resolvePartial(partial, context, options) { - if (!partial) { - if (options.name === "@partial-block") { - partial = options.data["partial-block"]; - } else { - partial = options.partials[options.name]; - } - } else if (!partial.call && !options.name) { - options.name = partial; - partial = options.partials[partial]; - } - return partial; - } - function invokePartial(partial, context, options) { - var currentPartialBlock = options.data && options.data["partial-block"]; - options.partial = true; - if (options.ids) { - options.data.contextPath = options.ids[0] || options.data.contextPath; - } - var partialBlock = void 0; - if (options.fn && options.fn !== noop2) { - (function() { - options.data = _base.createFrame(options.data); - var fn = options.fn; - partialBlock = options.data["partial-block"] = function partialBlockWrapper(context2) { - var options2 = arguments.length <= 1 || arguments[1] === void 0 ? {} : arguments[1]; - options2.data = _base.createFrame(options2.data); - options2.data["partial-block"] = currentPartialBlock; - return fn(context2, options2); - }; - if (fn.partials) { - options.partials = Utils.extend({}, options.partials, fn.partials); - } - })(); - } - if (partial === void 0 && partialBlock) { - partial = partialBlock; - } - if (partial === void 0) { - throw new _exception2["default"]("The partial " + options.name + " could not be found"); - } else if (partial instanceof Function) { - return partial(context, options); - } - } - function noop2() { - return ""; - } - function initData2(context, data) { - if (!data || !("root" in data)) { - data = data ? _base.createFrame(data) : {}; - data.root = context; - } - return data; - } - function executeDecorators(fn, prog, container, depths, data, blockParams) { - if (fn.decorator) { - var props = {}; - prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths); - Utils.extend(prog, props); - } - return prog; - } - function wrapHelpersToPassLookupProperty(mergedHelpers, container) { - Object.keys(mergedHelpers).forEach(function(helperName) { - var helper = mergedHelpers[helperName]; - mergedHelpers[helperName] = passLookupPropertyOption(helper, container); - }); - } - function passLookupPropertyOption(helper, container) { - var lookupProperty = container.lookupProperty; - return _internalWrapHelper.wrapHelper(helper, function(options) { - return Utils.extend({ lookupProperty }, options); - }); - } - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/no-conflict.js -var require_no_conflict = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/no-conflict.js"(exports, module) { - "use strict"; - exports.__esModule = true; - exports["default"] = function(Handlebars3) { - (function() { - if (typeof globalThis === "object") return; - Object.prototype.__defineGetter__("__magic__", function() { - return this; - }); - __magic__.globalThis = __magic__; - delete Object.prototype.__magic__; - })(); - var $Handlebars = globalThis.Handlebars; - Handlebars3.noConflict = function() { - if (globalThis.Handlebars === Handlebars3) { - globalThis.Handlebars = $Handlebars; - } - return Handlebars3; - }; - }; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars.runtime.js -var require_handlebars_runtime = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars.runtime.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - function _interopRequireWildcard(obj) { - if (obj && obj.__esModule) { - return obj; - } else { - var newObj = {}; - if (obj != null) { - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; - } - } - newObj["default"] = obj; - return newObj; - } - } - var _handlebarsBase = require_base(); - var base = _interopRequireWildcard(_handlebarsBase); - var _handlebarsSafeString = require_safe_string(); - var _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString); - var _handlebarsException = require_exception(); - var _handlebarsException2 = _interopRequireDefault(_handlebarsException); - var _handlebarsUtils = require_utils(); - var Utils = _interopRequireWildcard(_handlebarsUtils); - var _handlebarsRuntime = require_runtime(); - var runtime = _interopRequireWildcard(_handlebarsRuntime); - var _handlebarsNoConflict = require_no_conflict(); - var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict); - function create() { - var hb = new base.HandlebarsEnvironment(); - Utils.extend(hb, base); - hb.SafeString = _handlebarsSafeString2["default"]; - hb.Exception = _handlebarsException2["default"]; - hb.Utils = Utils; - hb.escapeExpression = Utils.escapeExpression; - hb.VM = runtime; - hb.template = function(spec) { - return runtime.template(spec, hb); - }; - return hb; - } - var inst = create(); - inst.create = create; - _handlebarsNoConflict2["default"](inst); - inst["default"] = inst; - exports["default"] = inst; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/compiler/ast.js -var require_ast = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/compiler/ast.js"(exports, module) { - "use strict"; - exports.__esModule = true; - var AST2 = { - // Public API used to evaluate derived attributes regarding AST nodes - helpers: { - // a mustache is definitely a helper if: - // * it is an eligible helper, and - // * it has at least one parameter or hash segment - helperExpression: function helperExpression(node) { - return node.type === "SubExpression" || (node.type === "MustacheStatement" || node.type === "BlockStatement") && !!(node.params && node.params.length || node.hash); - }, - scopedId: function scopedId(path) { - return /^\.|this\b/.test(path.original); - }, - // an ID is simple if it only has one part, and that part is not - // `..` or `this`. - simpleId: function simpleId(path) { - return path.parts.length === 1 && !AST2.helpers.scopedId(path) && !path.depth; - } - } - }; - exports["default"] = AST2; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js -var require_parser = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js"(exports, module) { - "use strict"; - exports.__esModule = true; - var handlebars = function() { - var parser = { - trace: function trace() { - }, - yy: {}, - symbols_: { "error": 2, "root": 3, "program": 4, "EOF": 5, "program_repetition0": 6, "statement": 7, "mustache": 8, "block": 9, "rawBlock": 10, "partial": 11, "partialBlock": 12, "content": 13, "COMMENT": 14, "CONTENT": 15, "openRawBlock": 16, "rawBlock_repetition0": 17, "END_RAW_BLOCK": 18, "OPEN_RAW_BLOCK": 19, "helperName": 20, "openRawBlock_repetition0": 21, "openRawBlock_option0": 22, "CLOSE_RAW_BLOCK": 23, "openBlock": 24, "block_option0": 25, "closeBlock": 26, "openInverse": 27, "block_option1": 28, "OPEN_BLOCK": 29, "openBlock_repetition0": 30, "openBlock_option0": 31, "openBlock_option1": 32, "CLOSE": 33, "OPEN_INVERSE": 34, "openInverse_repetition0": 35, "openInverse_option0": 36, "openInverse_option1": 37, "openInverseChain": 38, "OPEN_INVERSE_CHAIN": 39, "openInverseChain_repetition0": 40, "openInverseChain_option0": 41, "openInverseChain_option1": 42, "inverseAndProgram": 43, "INVERSE": 44, "inverseChain": 45, "inverseChain_option0": 46, "OPEN_ENDBLOCK": 47, "OPEN": 48, "mustache_repetition0": 49, "mustache_option0": 50, "OPEN_UNESCAPED": 51, "mustache_repetition1": 52, "mustache_option1": 53, "CLOSE_UNESCAPED": 54, "OPEN_PARTIAL": 55, "partialName": 56, "partial_repetition0": 57, "partial_option0": 58, "openPartialBlock": 59, "OPEN_PARTIAL_BLOCK": 60, "openPartialBlock_repetition0": 61, "openPartialBlock_option0": 62, "param": 63, "sexpr": 64, "OPEN_SEXPR": 65, "sexpr_repetition0": 66, "sexpr_option0": 67, "CLOSE_SEXPR": 68, "hash": 69, "hash_repetition_plus0": 70, "hashSegment": 71, "ID": 72, "EQUALS": 73, "blockParams": 74, "OPEN_BLOCK_PARAMS": 75, "blockParams_repetition_plus0": 76, "CLOSE_BLOCK_PARAMS": 77, "path": 78, "dataName": 79, "STRING": 80, "NUMBER": 81, "BOOLEAN": 82, "UNDEFINED": 83, "NULL": 84, "DATA": 85, "pathSegments": 86, "SEP": 87, "$accept": 0, "$end": 1 }, - terminals_: { 2: "error", 5: "EOF", 14: "COMMENT", 15: "CONTENT", 18: "END_RAW_BLOCK", 19: "OPEN_RAW_BLOCK", 23: "CLOSE_RAW_BLOCK", 29: "OPEN_BLOCK", 33: "CLOSE", 34: "OPEN_INVERSE", 39: "OPEN_INVERSE_CHAIN", 44: "INVERSE", 47: "OPEN_ENDBLOCK", 48: "OPEN", 51: "OPEN_UNESCAPED", 54: "CLOSE_UNESCAPED", 55: "OPEN_PARTIAL", 60: "OPEN_PARTIAL_BLOCK", 65: "OPEN_SEXPR", 68: "CLOSE_SEXPR", 72: "ID", 73: "EQUALS", 75: "OPEN_BLOCK_PARAMS", 77: "CLOSE_BLOCK_PARAMS", 80: "STRING", 81: "NUMBER", 82: "BOOLEAN", 83: "UNDEFINED", 84: "NULL", 85: "DATA", 87: "SEP" }, - productions_: [0, [3, 2], [4, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [13, 1], [10, 3], [16, 5], [9, 4], [9, 4], [24, 6], [27, 6], [38, 6], [43, 2], [45, 3], [45, 1], [26, 3], [8, 5], [8, 5], [11, 5], [12, 3], [59, 5], [63, 1], [63, 1], [64, 5], [69, 1], [71, 3], [74, 3], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [56, 1], [56, 1], [79, 2], [78, 1], [86, 3], [86, 1], [6, 0], [6, 2], [17, 0], [17, 2], [21, 0], [21, 2], [22, 0], [22, 1], [25, 0], [25, 1], [28, 0], [28, 1], [30, 0], [30, 2], [31, 0], [31, 1], [32, 0], [32, 1], [35, 0], [35, 2], [36, 0], [36, 1], [37, 0], [37, 1], [40, 0], [40, 2], [41, 0], [41, 1], [42, 0], [42, 1], [46, 0], [46, 1], [49, 0], [49, 2], [50, 0], [50, 1], [52, 0], [52, 2], [53, 0], [53, 1], [57, 0], [57, 2], [58, 0], [58, 1], [61, 0], [61, 2], [62, 0], [62, 1], [66, 0], [66, 2], [67, 0], [67, 1], [70, 1], [70, 2], [76, 1], [76, 2]], - performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { - var $0 = $$.length - 1; - switch (yystate) { - case 1: - return $$[$0 - 1]; - break; - case 2: - this.$ = yy.prepareProgram($$[$0]); - break; - case 3: - this.$ = $$[$0]; - break; - case 4: - this.$ = $$[$0]; - break; - case 5: - this.$ = $$[$0]; - break; - case 6: - this.$ = $$[$0]; - break; - case 7: - this.$ = $$[$0]; - break; - case 8: - this.$ = $$[$0]; - break; - case 9: - this.$ = { - type: "CommentStatement", - value: yy.stripComment($$[$0]), - strip: yy.stripFlags($$[$0], $$[$0]), - loc: yy.locInfo(this._$) - }; - break; - case 10: - this.$ = { - type: "ContentStatement", - original: $$[$0], - value: $$[$0], - loc: yy.locInfo(this._$) - }; - break; - case 11: - this.$ = yy.prepareRawBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$); - break; - case 12: - this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1] }; - break; - case 13: - this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], false, this._$); - break; - case 14: - this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], true, this._$); - break; - case 15: - this.$ = { open: $$[$0 - 5], path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) }; - break; - case 16: - this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) }; - break; - case 17: - this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) }; - break; - case 18: - this.$ = { strip: yy.stripFlags($$[$0 - 1], $$[$0 - 1]), program: $$[$0] }; - break; - case 19: - var inverse = yy.prepareBlock($$[$0 - 2], $$[$0 - 1], $$[$0], $$[$0], false, this._$), program = yy.prepareProgram([inverse], $$[$0 - 1].loc); - program.chained = true; - this.$ = { strip: $$[$0 - 2].strip, program, chain: true }; - break; - case 20: - this.$ = $$[$0]; - break; - case 21: - this.$ = { path: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 2], $$[$0]) }; - break; - case 22: - this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$); - break; - case 23: - this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$); - break; - case 24: - this.$ = { - type: "PartialStatement", - name: $$[$0 - 3], - params: $$[$0 - 2], - hash: $$[$0 - 1], - indent: "", - strip: yy.stripFlags($$[$0 - 4], $$[$0]), - loc: yy.locInfo(this._$) - }; - break; - case 25: - this.$ = yy.preparePartialBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$); - break; - case 26: - this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 4], $$[$0]) }; - break; - case 27: - this.$ = $$[$0]; - break; - case 28: - this.$ = $$[$0]; - break; - case 29: - this.$ = { - type: "SubExpression", - path: $$[$0 - 3], - params: $$[$0 - 2], - hash: $$[$0 - 1], - loc: yy.locInfo(this._$) - }; - break; - case 30: - this.$ = { type: "Hash", pairs: $$[$0], loc: yy.locInfo(this._$) }; - break; - case 31: - this.$ = { type: "HashPair", key: yy.id($$[$0 - 2]), value: $$[$0], loc: yy.locInfo(this._$) }; - break; - case 32: - this.$ = yy.id($$[$0 - 1]); - break; - case 33: - this.$ = $$[$0]; - break; - case 34: - this.$ = $$[$0]; - break; - case 35: - this.$ = { type: "StringLiteral", value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$) }; - break; - case 36: - this.$ = { type: "NumberLiteral", value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$) }; - break; - case 37: - this.$ = { type: "BooleanLiteral", value: $$[$0] === "true", original: $$[$0] === "true", loc: yy.locInfo(this._$) }; - break; - case 38: - this.$ = { type: "UndefinedLiteral", original: void 0, value: void 0, loc: yy.locInfo(this._$) }; - break; - case 39: - this.$ = { type: "NullLiteral", original: null, value: null, loc: yy.locInfo(this._$) }; - break; - case 40: - this.$ = $$[$0]; - break; - case 41: - this.$ = $$[$0]; - break; - case 42: - this.$ = yy.preparePath(true, $$[$0], this._$); - break; - case 43: - this.$ = yy.preparePath(false, $$[$0], this._$); - break; - case 44: - $$[$0 - 2].push({ part: yy.id($$[$0]), original: $$[$0], separator: $$[$0 - 1] }); - this.$ = $$[$0 - 2]; - break; - case 45: - this.$ = [{ part: yy.id($$[$0]), original: $$[$0] }]; - break; - case 46: - this.$ = []; - break; - case 47: - $$[$0 - 1].push($$[$0]); - break; - case 48: - this.$ = []; - break; - case 49: - $$[$0 - 1].push($$[$0]); - break; - case 50: - this.$ = []; - break; - case 51: - $$[$0 - 1].push($$[$0]); - break; - case 58: - this.$ = []; - break; - case 59: - $$[$0 - 1].push($$[$0]); - break; - case 64: - this.$ = []; - break; - case 65: - $$[$0 - 1].push($$[$0]); - break; - case 70: - this.$ = []; - break; - case 71: - $$[$0 - 1].push($$[$0]); - break; - case 78: - this.$ = []; - break; - case 79: - $$[$0 - 1].push($$[$0]); - break; - case 82: - this.$ = []; - break; - case 83: - $$[$0 - 1].push($$[$0]); - break; - case 86: - this.$ = []; - break; - case 87: - $$[$0 - 1].push($$[$0]); - break; - case 90: - this.$ = []; - break; - case 91: - $$[$0 - 1].push($$[$0]); - break; - case 94: - this.$ = []; - break; - case 95: - $$[$0 - 1].push($$[$0]); - break; - case 98: - this.$ = [$$[$0]]; - break; - case 99: - $$[$0 - 1].push($$[$0]); - break; - case 100: - this.$ = [$$[$0]]; - break; - case 101: - $$[$0 - 1].push($$[$0]); - break; - } - }, - table: [{ 3: 1, 4: 2, 5: [2, 46], 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 1: [3] }, { 5: [1, 4] }, { 5: [2, 2], 7: 5, 8: 6, 9: 7, 10: 8, 11: 9, 12: 10, 13: 11, 14: [1, 12], 15: [1, 20], 16: 17, 19: [1, 23], 24: 15, 27: 16, 29: [1, 21], 34: [1, 22], 39: [2, 2], 44: [2, 2], 47: [2, 2], 48: [1, 13], 51: [1, 14], 55: [1, 18], 59: 19, 60: [1, 24] }, { 1: [2, 1] }, { 5: [2, 47], 14: [2, 47], 15: [2, 47], 19: [2, 47], 29: [2, 47], 34: [2, 47], 39: [2, 47], 44: [2, 47], 47: [2, 47], 48: [2, 47], 51: [2, 47], 55: [2, 47], 60: [2, 47] }, { 5: [2, 3], 14: [2, 3], 15: [2, 3], 19: [2, 3], 29: [2, 3], 34: [2, 3], 39: [2, 3], 44: [2, 3], 47: [2, 3], 48: [2, 3], 51: [2, 3], 55: [2, 3], 60: [2, 3] }, { 5: [2, 4], 14: [2, 4], 15: [2, 4], 19: [2, 4], 29: [2, 4], 34: [2, 4], 39: [2, 4], 44: [2, 4], 47: [2, 4], 48: [2, 4], 51: [2, 4], 55: [2, 4], 60: [2, 4] }, { 5: [2, 5], 14: [2, 5], 15: [2, 5], 19: [2, 5], 29: [2, 5], 34: [2, 5], 39: [2, 5], 44: [2, 5], 47: [2, 5], 48: [2, 5], 51: [2, 5], 55: [2, 5], 60: [2, 5] }, { 5: [2, 6], 14: [2, 6], 15: [2, 6], 19: [2, 6], 29: [2, 6], 34: [2, 6], 39: [2, 6], 44: [2, 6], 47: [2, 6], 48: [2, 6], 51: [2, 6], 55: [2, 6], 60: [2, 6] }, { 5: [2, 7], 14: [2, 7], 15: [2, 7], 19: [2, 7], 29: [2, 7], 34: [2, 7], 39: [2, 7], 44: [2, 7], 47: [2, 7], 48: [2, 7], 51: [2, 7], 55: [2, 7], 60: [2, 7] }, { 5: [2, 8], 14: [2, 8], 15: [2, 8], 19: [2, 8], 29: [2, 8], 34: [2, 8], 39: [2, 8], 44: [2, 8], 47: [2, 8], 48: [2, 8], 51: [2, 8], 55: [2, 8], 60: [2, 8] }, { 5: [2, 9], 14: [2, 9], 15: [2, 9], 19: [2, 9], 29: [2, 9], 34: [2, 9], 39: [2, 9], 44: [2, 9], 47: [2, 9], 48: [2, 9], 51: [2, 9], 55: [2, 9], 60: [2, 9] }, { 20: 25, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 36, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 37, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 4: 38, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 15: [2, 48], 17: 39, 18: [2, 48] }, { 20: 41, 56: 40, 64: 42, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 44, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 5: [2, 10], 14: [2, 10], 15: [2, 10], 18: [2, 10], 19: [2, 10], 29: [2, 10], 34: [2, 10], 39: [2, 10], 44: [2, 10], 47: [2, 10], 48: [2, 10], 51: [2, 10], 55: [2, 10], 60: [2, 10] }, { 20: 45, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 46, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 47, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 41, 56: 48, 64: 42, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [2, 78], 49: 49, 65: [2, 78], 72: [2, 78], 80: [2, 78], 81: [2, 78], 82: [2, 78], 83: [2, 78], 84: [2, 78], 85: [2, 78] }, { 23: [2, 33], 33: [2, 33], 54: [2, 33], 65: [2, 33], 68: [2, 33], 72: [2, 33], 75: [2, 33], 80: [2, 33], 81: [2, 33], 82: [2, 33], 83: [2, 33], 84: [2, 33], 85: [2, 33] }, { 23: [2, 34], 33: [2, 34], 54: [2, 34], 65: [2, 34], 68: [2, 34], 72: [2, 34], 75: [2, 34], 80: [2, 34], 81: [2, 34], 82: [2, 34], 83: [2, 34], 84: [2, 34], 85: [2, 34] }, { 23: [2, 35], 33: [2, 35], 54: [2, 35], 65: [2, 35], 68: [2, 35], 72: [2, 35], 75: [2, 35], 80: [2, 35], 81: [2, 35], 82: [2, 35], 83: [2, 35], 84: [2, 35], 85: [2, 35] }, { 23: [2, 36], 33: [2, 36], 54: [2, 36], 65: [2, 36], 68: [2, 36], 72: [2, 36], 75: [2, 36], 80: [2, 36], 81: [2, 36], 82: [2, 36], 83: [2, 36], 84: [2, 36], 85: [2, 36] }, { 23: [2, 37], 33: [2, 37], 54: [2, 37], 65: [2, 37], 68: [2, 37], 72: [2, 37], 75: [2, 37], 80: [2, 37], 81: [2, 37], 82: [2, 37], 83: [2, 37], 84: [2, 37], 85: [2, 37] }, { 23: [2, 38], 33: [2, 38], 54: [2, 38], 65: [2, 38], 68: [2, 38], 72: [2, 38], 75: [2, 38], 80: [2, 38], 81: [2, 38], 82: [2, 38], 83: [2, 38], 84: [2, 38], 85: [2, 38] }, { 23: [2, 39], 33: [2, 39], 54: [2, 39], 65: [2, 39], 68: [2, 39], 72: [2, 39], 75: [2, 39], 80: [2, 39], 81: [2, 39], 82: [2, 39], 83: [2, 39], 84: [2, 39], 85: [2, 39] }, { 23: [2, 43], 33: [2, 43], 54: [2, 43], 65: [2, 43], 68: [2, 43], 72: [2, 43], 75: [2, 43], 80: [2, 43], 81: [2, 43], 82: [2, 43], 83: [2, 43], 84: [2, 43], 85: [2, 43], 87: [1, 50] }, { 72: [1, 35], 86: 51 }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 52: 52, 54: [2, 82], 65: [2, 82], 72: [2, 82], 80: [2, 82], 81: [2, 82], 82: [2, 82], 83: [2, 82], 84: [2, 82], 85: [2, 82] }, { 25: 53, 38: 55, 39: [1, 57], 43: 56, 44: [1, 58], 45: 54, 47: [2, 54] }, { 28: 59, 43: 60, 44: [1, 58], 47: [2, 56] }, { 13: 62, 15: [1, 20], 18: [1, 61] }, { 33: [2, 86], 57: 63, 65: [2, 86], 72: [2, 86], 80: [2, 86], 81: [2, 86], 82: [2, 86], 83: [2, 86], 84: [2, 86], 85: [2, 86] }, { 33: [2, 40], 65: [2, 40], 72: [2, 40], 80: [2, 40], 81: [2, 40], 82: [2, 40], 83: [2, 40], 84: [2, 40], 85: [2, 40] }, { 33: [2, 41], 65: [2, 41], 72: [2, 41], 80: [2, 41], 81: [2, 41], 82: [2, 41], 83: [2, 41], 84: [2, 41], 85: [2, 41] }, { 20: 64, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 65, 47: [1, 66] }, { 30: 67, 33: [2, 58], 65: [2, 58], 72: [2, 58], 75: [2, 58], 80: [2, 58], 81: [2, 58], 82: [2, 58], 83: [2, 58], 84: [2, 58], 85: [2, 58] }, { 33: [2, 64], 35: 68, 65: [2, 64], 72: [2, 64], 75: [2, 64], 80: [2, 64], 81: [2, 64], 82: [2, 64], 83: [2, 64], 84: [2, 64], 85: [2, 64] }, { 21: 69, 23: [2, 50], 65: [2, 50], 72: [2, 50], 80: [2, 50], 81: [2, 50], 82: [2, 50], 83: [2, 50], 84: [2, 50], 85: [2, 50] }, { 33: [2, 90], 61: 70, 65: [2, 90], 72: [2, 90], 80: [2, 90], 81: [2, 90], 82: [2, 90], 83: [2, 90], 84: [2, 90], 85: [2, 90] }, { 20: 74, 33: [2, 80], 50: 71, 63: 72, 64: 75, 65: [1, 43], 69: 73, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 72: [1, 79] }, { 23: [2, 42], 33: [2, 42], 54: [2, 42], 65: [2, 42], 68: [2, 42], 72: [2, 42], 75: [2, 42], 80: [2, 42], 81: [2, 42], 82: [2, 42], 83: [2, 42], 84: [2, 42], 85: [2, 42], 87: [1, 50] }, { 20: 74, 53: 80, 54: [2, 84], 63: 81, 64: 75, 65: [1, 43], 69: 82, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 83, 47: [1, 66] }, { 47: [2, 55] }, { 4: 84, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 47: [2, 20] }, { 20: 85, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 86, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 26: 87, 47: [1, 66] }, { 47: [2, 57] }, { 5: [2, 11], 14: [2, 11], 15: [2, 11], 19: [2, 11], 29: [2, 11], 34: [2, 11], 39: [2, 11], 44: [2, 11], 47: [2, 11], 48: [2, 11], 51: [2, 11], 55: [2, 11], 60: [2, 11] }, { 15: [2, 49], 18: [2, 49] }, { 20: 74, 33: [2, 88], 58: 88, 63: 89, 64: 75, 65: [1, 43], 69: 90, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 65: [2, 94], 66: 91, 68: [2, 94], 72: [2, 94], 80: [2, 94], 81: [2, 94], 82: [2, 94], 83: [2, 94], 84: [2, 94], 85: [2, 94] }, { 5: [2, 25], 14: [2, 25], 15: [2, 25], 19: [2, 25], 29: [2, 25], 34: [2, 25], 39: [2, 25], 44: [2, 25], 47: [2, 25], 48: [2, 25], 51: [2, 25], 55: [2, 25], 60: [2, 25] }, { 20: 92, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 31: 93, 33: [2, 60], 63: 94, 64: 75, 65: [1, 43], 69: 95, 70: 76, 71: 77, 72: [1, 78], 75: [2, 60], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 33: [2, 66], 36: 96, 63: 97, 64: 75, 65: [1, 43], 69: 98, 70: 76, 71: 77, 72: [1, 78], 75: [2, 66], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 22: 99, 23: [2, 52], 63: 100, 64: 75, 65: [1, 43], 69: 101, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 33: [2, 92], 62: 102, 63: 103, 64: 75, 65: [1, 43], 69: 104, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 105] }, { 33: [2, 79], 65: [2, 79], 72: [2, 79], 80: [2, 79], 81: [2, 79], 82: [2, 79], 83: [2, 79], 84: [2, 79], 85: [2, 79] }, { 33: [2, 81] }, { 23: [2, 27], 33: [2, 27], 54: [2, 27], 65: [2, 27], 68: [2, 27], 72: [2, 27], 75: [2, 27], 80: [2, 27], 81: [2, 27], 82: [2, 27], 83: [2, 27], 84: [2, 27], 85: [2, 27] }, { 23: [2, 28], 33: [2, 28], 54: [2, 28], 65: [2, 28], 68: [2, 28], 72: [2, 28], 75: [2, 28], 80: [2, 28], 81: [2, 28], 82: [2, 28], 83: [2, 28], 84: [2, 28], 85: [2, 28] }, { 23: [2, 30], 33: [2, 30], 54: [2, 30], 68: [2, 30], 71: 106, 72: [1, 107], 75: [2, 30] }, { 23: [2, 98], 33: [2, 98], 54: [2, 98], 68: [2, 98], 72: [2, 98], 75: [2, 98] }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 73: [1, 108], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 23: [2, 44], 33: [2, 44], 54: [2, 44], 65: [2, 44], 68: [2, 44], 72: [2, 44], 75: [2, 44], 80: [2, 44], 81: [2, 44], 82: [2, 44], 83: [2, 44], 84: [2, 44], 85: [2, 44], 87: [2, 44] }, { 54: [1, 109] }, { 54: [2, 83], 65: [2, 83], 72: [2, 83], 80: [2, 83], 81: [2, 83], 82: [2, 83], 83: [2, 83], 84: [2, 83], 85: [2, 83] }, { 54: [2, 85] }, { 5: [2, 13], 14: [2, 13], 15: [2, 13], 19: [2, 13], 29: [2, 13], 34: [2, 13], 39: [2, 13], 44: [2, 13], 47: [2, 13], 48: [2, 13], 51: [2, 13], 55: [2, 13], 60: [2, 13] }, { 38: 55, 39: [1, 57], 43: 56, 44: [1, 58], 45: 111, 46: 110, 47: [2, 76] }, { 33: [2, 70], 40: 112, 65: [2, 70], 72: [2, 70], 75: [2, 70], 80: [2, 70], 81: [2, 70], 82: [2, 70], 83: [2, 70], 84: [2, 70], 85: [2, 70] }, { 47: [2, 18] }, { 5: [2, 14], 14: [2, 14], 15: [2, 14], 19: [2, 14], 29: [2, 14], 34: [2, 14], 39: [2, 14], 44: [2, 14], 47: [2, 14], 48: [2, 14], 51: [2, 14], 55: [2, 14], 60: [2, 14] }, { 33: [1, 113] }, { 33: [2, 87], 65: [2, 87], 72: [2, 87], 80: [2, 87], 81: [2, 87], 82: [2, 87], 83: [2, 87], 84: [2, 87], 85: [2, 87] }, { 33: [2, 89] }, { 20: 74, 63: 115, 64: 75, 65: [1, 43], 67: 114, 68: [2, 96], 69: 116, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 117] }, { 32: 118, 33: [2, 62], 74: 119, 75: [1, 120] }, { 33: [2, 59], 65: [2, 59], 72: [2, 59], 75: [2, 59], 80: [2, 59], 81: [2, 59], 82: [2, 59], 83: [2, 59], 84: [2, 59], 85: [2, 59] }, { 33: [2, 61], 75: [2, 61] }, { 33: [2, 68], 37: 121, 74: 122, 75: [1, 120] }, { 33: [2, 65], 65: [2, 65], 72: [2, 65], 75: [2, 65], 80: [2, 65], 81: [2, 65], 82: [2, 65], 83: [2, 65], 84: [2, 65], 85: [2, 65] }, { 33: [2, 67], 75: [2, 67] }, { 23: [1, 123] }, { 23: [2, 51], 65: [2, 51], 72: [2, 51], 80: [2, 51], 81: [2, 51], 82: [2, 51], 83: [2, 51], 84: [2, 51], 85: [2, 51] }, { 23: [2, 53] }, { 33: [1, 124] }, { 33: [2, 91], 65: [2, 91], 72: [2, 91], 80: [2, 91], 81: [2, 91], 82: [2, 91], 83: [2, 91], 84: [2, 91], 85: [2, 91] }, { 33: [2, 93] }, { 5: [2, 22], 14: [2, 22], 15: [2, 22], 19: [2, 22], 29: [2, 22], 34: [2, 22], 39: [2, 22], 44: [2, 22], 47: [2, 22], 48: [2, 22], 51: [2, 22], 55: [2, 22], 60: [2, 22] }, { 23: [2, 99], 33: [2, 99], 54: [2, 99], 68: [2, 99], 72: [2, 99], 75: [2, 99] }, { 73: [1, 108] }, { 20: 74, 63: 125, 64: 75, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 23], 14: [2, 23], 15: [2, 23], 19: [2, 23], 29: [2, 23], 34: [2, 23], 39: [2, 23], 44: [2, 23], 47: [2, 23], 48: [2, 23], 51: [2, 23], 55: [2, 23], 60: [2, 23] }, { 47: [2, 19] }, { 47: [2, 77] }, { 20: 74, 33: [2, 72], 41: 126, 63: 127, 64: 75, 65: [1, 43], 69: 128, 70: 76, 71: 77, 72: [1, 78], 75: [2, 72], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 24], 14: [2, 24], 15: [2, 24], 19: [2, 24], 29: [2, 24], 34: [2, 24], 39: [2, 24], 44: [2, 24], 47: [2, 24], 48: [2, 24], 51: [2, 24], 55: [2, 24], 60: [2, 24] }, { 68: [1, 129] }, { 65: [2, 95], 68: [2, 95], 72: [2, 95], 80: [2, 95], 81: [2, 95], 82: [2, 95], 83: [2, 95], 84: [2, 95], 85: [2, 95] }, { 68: [2, 97] }, { 5: [2, 21], 14: [2, 21], 15: [2, 21], 19: [2, 21], 29: [2, 21], 34: [2, 21], 39: [2, 21], 44: [2, 21], 47: [2, 21], 48: [2, 21], 51: [2, 21], 55: [2, 21], 60: [2, 21] }, { 33: [1, 130] }, { 33: [2, 63] }, { 72: [1, 132], 76: 131 }, { 33: [1, 133] }, { 33: [2, 69] }, { 15: [2, 12], 18: [2, 12] }, { 14: [2, 26], 15: [2, 26], 19: [2, 26], 29: [2, 26], 34: [2, 26], 47: [2, 26], 48: [2, 26], 51: [2, 26], 55: [2, 26], 60: [2, 26] }, { 23: [2, 31], 33: [2, 31], 54: [2, 31], 68: [2, 31], 72: [2, 31], 75: [2, 31] }, { 33: [2, 74], 42: 134, 74: 135, 75: [1, 120] }, { 33: [2, 71], 65: [2, 71], 72: [2, 71], 75: [2, 71], 80: [2, 71], 81: [2, 71], 82: [2, 71], 83: [2, 71], 84: [2, 71], 85: [2, 71] }, { 33: [2, 73], 75: [2, 73] }, { 23: [2, 29], 33: [2, 29], 54: [2, 29], 65: [2, 29], 68: [2, 29], 72: [2, 29], 75: [2, 29], 80: [2, 29], 81: [2, 29], 82: [2, 29], 83: [2, 29], 84: [2, 29], 85: [2, 29] }, { 14: [2, 15], 15: [2, 15], 19: [2, 15], 29: [2, 15], 34: [2, 15], 39: [2, 15], 44: [2, 15], 47: [2, 15], 48: [2, 15], 51: [2, 15], 55: [2, 15], 60: [2, 15] }, { 72: [1, 137], 77: [1, 136] }, { 72: [2, 100], 77: [2, 100] }, { 14: [2, 16], 15: [2, 16], 19: [2, 16], 29: [2, 16], 34: [2, 16], 44: [2, 16], 47: [2, 16], 48: [2, 16], 51: [2, 16], 55: [2, 16], 60: [2, 16] }, { 33: [1, 138] }, { 33: [2, 75] }, { 33: [2, 32] }, { 72: [2, 101], 77: [2, 101] }, { 14: [2, 17], 15: [2, 17], 19: [2, 17], 29: [2, 17], 34: [2, 17], 39: [2, 17], 44: [2, 17], 47: [2, 17], 48: [2, 17], 51: [2, 17], 55: [2, 17], 60: [2, 17] }], - defaultActions: { 4: [2, 1], 54: [2, 55], 56: [2, 20], 60: [2, 57], 73: [2, 81], 82: [2, 85], 86: [2, 18], 90: [2, 89], 101: [2, 53], 104: [2, 93], 110: [2, 19], 111: [2, 77], 116: [2, 97], 119: [2, 63], 122: [2, 69], 135: [2, 75], 136: [2, 32] }, - parseError: function parseError(str, hash) { - throw new Error(str); - }, - parse: function parse(input) { - var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1; - this.lexer.setInput(input); - this.lexer.yy = this.yy; - this.yy.lexer = this.lexer; - this.yy.parser = this; - if (typeof this.lexer.yylloc == "undefined") this.lexer.yylloc = {}; - var yyloc = this.lexer.yylloc; - lstack.push(yyloc); - var ranges = this.lexer.options && this.lexer.options.ranges; - if (typeof this.yy.parseError === "function") this.parseError = this.yy.parseError; - function popStack(n) { - stack.length = stack.length - 2 * n; - vstack.length = vstack.length - n; - lstack.length = lstack.length - n; - } - function lex() { - var token; - token = self.lexer.lex() || 1; - if (typeof token !== "number") { - token = self.symbols_[token] || token; - } - return token; - } - var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; - while (true) { - state = stack[stack.length - 1]; - if (this.defaultActions[state]) { - action = this.defaultActions[state]; - } else { - if (symbol === null || typeof symbol == "undefined") { - symbol = lex(); - } - action = table[state] && table[state][symbol]; - } - if (typeof action === "undefined" || !action.length || !action[0]) { - var errStr = ""; - if (!recovering) { - expected = []; - for (p in table[state]) if (this.terminals_[p] && p > 2) { - expected.push("'" + this.terminals_[p] + "'"); - } - if (this.lexer.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; - } else { - errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); - } - this.parseError(errStr, { text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected }); - } - } - if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol); - } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(this.lexer.yytext); - lstack.push(this.lexer.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - if (recovering > 0) recovering--; - } else { - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column }; - if (ranges) { - yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]]; - } - r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack); - if (typeof r !== "undefined") { - return r; - } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); - } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState); - break; - case 3: - return true; - } - } - return true; - } - }; - var lexer = function() { - var lexer2 = { - EOF: 1, - parseError: function parseError(str, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str, hash); - } else { - throw new Error(str); - } - }, - setInput: function setInput(input) { - this._input = input; - this._more = this._less = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ""; - this.conditionStack = ["INITIAL"]; - this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }; - if (this.options.ranges) this.yylloc.range = [0, 0]; - this.offset = 0; - return this; - }, - input: function input() { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; - } else { - this.yylloc.last_column++; - } - if (this.options.ranges) this.yylloc.range[1]++; - this._input = this._input.slice(1); - return ch; - }, - unput: function unput(ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len - 1); - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); - if (lines.length - 1) this.yylineno -= lines.length - 1; - var r = this.yylloc.range; - this.yylloc = { - first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len - }; - if (this.options.ranges) { - this.yylloc.range = [r[0], r[0] + this.yyleng - len]; - } - return this; - }, - more: function more() { - this._more = true; - return this; - }, - less: function less(n) { - this.unput(this.match.slice(n)); - }, - pastInput: function pastInput() { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); - }, - upcomingInput: function upcomingInput() { - var next = this.match; - if (next.length < 20) { - next += this._input.substr(0, 20 - next.length); - } - return (next.substr(0, 20) + (next.length > 20 ? "..." : "")).replace(/\n/g, ""); - }, - showPosition: function showPosition() { - var pre = this.pastInput(); - var c = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c + "^"; - }, - next: function next() { - if (this.done) { - return this.EOF; - } - if (!this._input) this.done = true; - var token, match, tempMatch, index, col, lines; - if (!this._more) { - this.yytext = ""; - this.match = ""; - } - var rules = this._currentRules(); - for (var i = 0; i < rules.length; i++) { - tempMatch = this._input.match(this.rules[rules[i]]); - if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { - match = tempMatch; - index = i; - if (!this.options.flex) break; - } - } - if (match) { - lines = match[0].match(/(?:\r\n?|\n).*/g); - if (lines) this.yylineno += lines.length; - this.yylloc = { - first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length - }; - this.yytext += match[0]; - this.match += match[0]; - this.matches = match; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; - } - this._more = false; - this._input = this._input.slice(match[0].length); - this.matched += match[0]; - token = this.performAction.call(this, this.yy, this, rules[index], this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) this.done = false; - if (token) return token; - else return; - } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { text: "", token: null, line: this.yylineno }); - } - }, - lex: function lex() { - var r = this.next(); - if (typeof r !== "undefined") { - return r; - } else { - return this.lex(); - } - }, - begin: function begin(condition) { - this.conditionStack.push(condition); - }, - popState: function popState() { - return this.conditionStack.pop(); - }, - _currentRules: function _currentRules() { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; - }, - topState: function topState() { - return this.conditionStack[this.conditionStack.length - 2]; - }, - pushState: function begin(condition) { - this.begin(condition); - } - }; - lexer2.options = {}; - lexer2.performAction = function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { - function strip(start, end) { - return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start); - } - var YYSTATE = YY_START; - switch ($avoiding_name_collisions) { - case 0: - if (yy_.yytext.slice(-2) === "\\\\") { - strip(0, 1); - this.begin("mu"); - } else if (yy_.yytext.slice(-1) === "\\") { - strip(0, 1); - this.begin("emu"); - } else { - this.begin("mu"); - } - if (yy_.yytext) return 15; - break; - case 1: - return 15; - break; - case 2: - this.popState(); - return 15; - break; - case 3: - this.begin("raw"); - return 15; - break; - case 4: - this.popState(); - if (this.conditionStack[this.conditionStack.length - 1] === "raw") { - return 15; - } else { - strip(5, 9); - return "END_RAW_BLOCK"; - } - break; - case 5: - return 15; - break; - case 6: - this.popState(); - return 14; - break; - case 7: - return 65; - break; - case 8: - return 68; - break; - case 9: - return 19; - break; - case 10: - this.popState(); - this.begin("raw"); - return 23; - break; - case 11: - return 55; - break; - case 12: - return 60; - break; - case 13: - return 29; - break; - case 14: - return 47; - break; - case 15: - this.popState(); - return 44; - break; - case 16: - this.popState(); - return 44; - break; - case 17: - return 34; - break; - case 18: - return 39; - break; - case 19: - return 51; - break; - case 20: - return 48; - break; - case 21: - this.unput(yy_.yytext); - this.popState(); - this.begin("com"); - break; - case 22: - this.popState(); - return 14; - break; - case 23: - return 48; - break; - case 24: - return 73; - break; - case 25: - return 72; - break; - case 26: - return 72; - break; - case 27: - return 87; - break; - case 28: - break; - case 29: - this.popState(); - return 54; - break; - case 30: - this.popState(); - return 33; - break; - case 31: - yy_.yytext = strip(1, 2).replace(/\\"/g, '"'); - return 80; - break; - case 32: - yy_.yytext = strip(1, 2).replace(/\\'/g, "'"); - return 80; - break; - case 33: - return 85; - break; - case 34: - return 82; - break; - case 35: - return 82; - break; - case 36: - return 83; - break; - case 37: - return 84; - break; - case 38: - return 81; - break; - case 39: - return 75; - break; - case 40: - return 77; - break; - case 41: - return 72; - break; - case 42: - yy_.yytext = yy_.yytext.replace(/\\([\\\]])/g, "$1"); - return 72; - break; - case 43: - return "INVALID"; - break; - case 44: - return 5; - break; - } - }; - lexer2.rules = [/^(?:[^\x00]*?(?=(\{\{)))/, /^(?:[^\x00]+)/, /^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/, /^(?:\{\{\{\{(?=[^/]))/, /^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/, /^(?:[^\x00]+?(?=(\{\{\{\{)))/, /^(?:[\s\S]*?--(~)?\}\})/, /^(?:\()/, /^(?:\))/, /^(?:\{\{\{\{)/, /^(?:\}\}\}\})/, /^(?:\{\{(~)?>)/, /^(?:\{\{(~)?#>)/, /^(?:\{\{(~)?#\*?)/, /^(?:\{\{(~)?\/)/, /^(?:\{\{(~)?\^\s*(~)?\}\})/, /^(?:\{\{(~)?\s*else\s*(~)?\}\})/, /^(?:\{\{(~)?\^)/, /^(?:\{\{(~)?\s*else\b)/, /^(?:\{\{(~)?\{)/, /^(?:\{\{(~)?&)/, /^(?:\{\{(~)?!--)/, /^(?:\{\{(~)?![\s\S]*?\}\})/, /^(?:\{\{(~)?\*?)/, /^(?:=)/, /^(?:\.\.)/, /^(?:\.(?=([=~}\s\/.)|])))/, /^(?:[\/.])/, /^(?:\s+)/, /^(?:\}(~)?\}\})/, /^(?:(~)?\}\})/, /^(?:"(\\["]|[^"])*")/, /^(?:'(\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=([~}\s)])))/, /^(?:false(?=([~}\s)])))/, /^(?:undefined(?=([~}\s)])))/, /^(?:null(?=([~}\s)])))/, /^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/, /^(?:as\s+\|)/, /^(?:\|)/, /^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/, /^(?:\[(\\\]|[^\]])*\])/, /^(?:.)/, /^(?:$)/]; - lexer2.conditions = { "mu": { "rules": [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44], "inclusive": false }, "emu": { "rules": [2], "inclusive": false }, "com": { "rules": [6], "inclusive": false }, "raw": { "rules": [3, 4, 5], "inclusive": false }, "INITIAL": { "rules": [0, 1, 44], "inclusive": true } }; - return lexer2; - }(); - parser.lexer = lexer; - function Parser() { - this.yy = {}; - } - Parser.prototype = parser; - parser.Parser = Parser; - return new Parser(); - }(); - exports["default"] = handlebars; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js -var require_visitor = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - function Visitor() { - this.parents = []; - } - Visitor.prototype = { - constructor: Visitor, - mutating: false, - // Visits a given value. If mutating, will replace the value if necessary. - acceptKey: function acceptKey(node, name) { - var value = this.accept(node[name]); - if (this.mutating) { - if (value && !Visitor.prototype[value.type]) { - throw new _exception2["default"]('Unexpected node type "' + value.type + '" found when accepting ' + name + " on " + node.type); - } - node[name] = value; - } - }, - // Performs an accept operation with added sanity check to ensure - // required keys are not removed. - acceptRequired: function acceptRequired(node, name) { - this.acceptKey(node, name); - if (!node[name]) { - throw new _exception2["default"](node.type + " requires " + name); - } - }, - // Traverses a given array. If mutating, empty respnses will be removed - // for child elements. - acceptArray: function acceptArray(array) { - for (var i = 0, l = array.length; i < l; i++) { - this.acceptKey(array, i); - if (!array[i]) { - array.splice(i, 1); - i--; - l--; - } - } - }, - accept: function accept(object) { - if (!object) { - return; - } - if (!this[object.type]) { - throw new _exception2["default"]("Unknown type: " + object.type, object); - } - if (this.current) { - this.parents.unshift(this.current); - } - this.current = object; - var ret = this[object.type](object); - this.current = this.parents.shift(); - if (!this.mutating || ret) { - return ret; - } else if (ret !== false) { - return object; - } - }, - Program: function Program(program) { - this.acceptArray(program.body); - }, - MustacheStatement: visitSubExpression, - Decorator: visitSubExpression, - BlockStatement: visitBlock, - DecoratorBlock: visitBlock, - PartialStatement: visitPartial, - PartialBlockStatement: function PartialBlockStatement(partial) { - visitPartial.call(this, partial); - this.acceptKey(partial, "program"); - }, - ContentStatement: function ContentStatement() { - }, - CommentStatement: function CommentStatement() { - }, - SubExpression: visitSubExpression, - PathExpression: function PathExpression() { - }, - StringLiteral: function StringLiteral() { - }, - NumberLiteral: function NumberLiteral() { - }, - BooleanLiteral: function BooleanLiteral() { - }, - UndefinedLiteral: function UndefinedLiteral() { - }, - NullLiteral: function NullLiteral() { - }, - Hash: function Hash(hash) { - this.acceptArray(hash.pairs); - }, - HashPair: function HashPair(pair) { - this.acceptRequired(pair, "value"); - } - }; - function visitSubExpression(mustache) { - this.acceptRequired(mustache, "path"); - this.acceptArray(mustache.params); - this.acceptKey(mustache, "hash"); - } - function visitBlock(block) { - visitSubExpression.call(this, block); - this.acceptKey(block, "program"); - this.acceptKey(block, "inverse"); - } - function visitPartial(partial) { - this.acceptRequired(partial, "name"); - this.acceptArray(partial.params); - this.acceptKey(partial, "hash"); - } - exports["default"] = Visitor; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js -var require_whitespace_control = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _visitor = require_visitor(); - var _visitor2 = _interopRequireDefault(_visitor); - function WhitespaceControl() { - var options = arguments.length <= 0 || arguments[0] === void 0 ? {} : arguments[0]; - this.options = options; - } - WhitespaceControl.prototype = new _visitor2["default"](); - WhitespaceControl.prototype.Program = function(program) { - var doStandalone = !this.options.ignoreStandalone; - var isRoot = !this.isRootSeen; - this.isRootSeen = true; - var body = program.body; - for (var i = 0, l = body.length; i < l; i++) { - var current = body[i], strip = this.accept(current); - if (!strip) { - continue; - } - var _isPrevWhitespace = isPrevWhitespace(body, i, isRoot), _isNextWhitespace = isNextWhitespace(body, i, isRoot), openStandalone = strip.openStandalone && _isPrevWhitespace, closeStandalone = strip.closeStandalone && _isNextWhitespace, inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace; - if (strip.close) { - omitRight(body, i, true); - } - if (strip.open) { - omitLeft(body, i, true); - } - if (doStandalone && inlineStandalone) { - omitRight(body, i); - if (omitLeft(body, i)) { - if (current.type === "PartialStatement") { - current.indent = /([ \t]+$)/.exec(body[i - 1].original)[1]; - } - } - } - if (doStandalone && openStandalone) { - omitRight((current.program || current.inverse).body); - omitLeft(body, i); - } - if (doStandalone && closeStandalone) { - omitRight(body, i); - omitLeft((current.inverse || current.program).body); - } - } - return program; - }; - WhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function(block) { - this.accept(block.program); - this.accept(block.inverse); - var program = block.program || block.inverse, inverse = block.program && block.inverse, firstInverse = inverse, lastInverse = inverse; - if (inverse && inverse.chained) { - firstInverse = inverse.body[0].program; - while (lastInverse.chained) { - lastInverse = lastInverse.body[lastInverse.body.length - 1].program; - } - } - var strip = { - open: block.openStrip.open, - close: block.closeStrip.close, - // Determine the standalone candiacy. Basically flag our content as being possibly standalone - // so our parent can determine if we actually are standalone - openStandalone: isNextWhitespace(program.body), - closeStandalone: isPrevWhitespace((firstInverse || program).body) - }; - if (block.openStrip.close) { - omitRight(program.body, null, true); - } - if (inverse) { - var inverseStrip = block.inverseStrip; - if (inverseStrip.open) { - omitLeft(program.body, null, true); - } - if (inverseStrip.close) { - omitRight(firstInverse.body, null, true); - } - if (block.closeStrip.open) { - omitLeft(lastInverse.body, null, true); - } - if (!this.options.ignoreStandalone && isPrevWhitespace(program.body) && isNextWhitespace(firstInverse.body)) { - omitLeft(program.body); - omitRight(firstInverse.body); - } - } else if (block.closeStrip.open) { - omitLeft(program.body, null, true); - } - return strip; - }; - WhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function(mustache) { - return mustache.strip; - }; - WhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function(node) { - var strip = node.strip || {}; - return { - inlineStandalone: true, - open: strip.open, - close: strip.close - }; - }; - function isPrevWhitespace(body, i, isRoot) { - if (i === void 0) { - i = body.length; - } - var prev = body[i - 1], sibling = body[i - 2]; - if (!prev) { - return isRoot; - } - if (prev.type === "ContentStatement") { - return (sibling || !isRoot ? /\r?\n\s*?$/ : /(^|\r?\n)\s*?$/).test(prev.original); - } - } - function isNextWhitespace(body, i, isRoot) { - if (i === void 0) { - i = -1; - } - var next = body[i + 1], sibling = body[i + 2]; - if (!next) { - return isRoot; - } - if (next.type === "ContentStatement") { - return (sibling || !isRoot ? /^\s*?\r?\n/ : /^\s*?(\r?\n|$)/).test(next.original); - } - } - function omitRight(body, i, multiple) { - var current = body[i == null ? 0 : i + 1]; - if (!current || current.type !== "ContentStatement" || !multiple && current.rightStripped) { - return; - } - var original = current.value; - current.value = current.value.replace(multiple ? /^\s+/ : /^[ \t]*\r?\n?/, ""); - current.rightStripped = current.value !== original; - } - function omitLeft(body, i, multiple) { - var current = body[i == null ? body.length - 1 : i - 1]; - if (!current || current.type !== "ContentStatement" || !multiple && current.leftStripped) { - return; - } - var original = current.value; - current.value = current.value.replace(multiple ? /\s+$/ : /[ \t]+$/, ""); - current.leftStripped = current.value !== original; - return current.leftStripped; - } - exports["default"] = WhitespaceControl; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/compiler/helpers.js -var require_helpers2 = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/compiler/helpers.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.SourceLocation = SourceLocation; - exports.id = id; - exports.stripFlags = stripFlags; - exports.stripComment = stripComment; - exports.preparePath = preparePath; - exports.prepareMustache = prepareMustache; - exports.prepareRawBlock = prepareRawBlock; - exports.prepareBlock = prepareBlock; - exports.prepareProgram = prepareProgram; - exports.preparePartialBlock = preparePartialBlock; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - function validateClose(open, close) { - close = close.path ? close.path.original : close; - if (open.path.original !== close) { - var errorNode = { loc: open.path.loc }; - throw new _exception2["default"](open.path.original + " doesn't match " + close, errorNode); - } - } - function SourceLocation(source, locInfo) { - this.source = source; - this.start = { - line: locInfo.first_line, - column: locInfo.first_column - }; - this.end = { - line: locInfo.last_line, - column: locInfo.last_column - }; - } - function id(token) { - if (/^\[.*\]$/.test(token)) { - return token.substring(1, token.length - 1); - } else { - return token; - } - } - function stripFlags(open, close) { - return { - open: open.charAt(2) === "~", - close: close.charAt(close.length - 3) === "~" - }; - } - function stripComment(comment) { - return comment.replace(/^\{\{~?!-?-?/, "").replace(/-?-?~?\}\}$/, ""); - } - function preparePath(data, parts, loc) { - loc = this.locInfo(loc); - var original = data ? "@" : "", dig = [], depth = 0; - for (var i = 0, l = parts.length; i < l; i++) { - var part = parts[i].part, isLiteral = parts[i].original !== part; - original += (parts[i].separator || "") + part; - if (!isLiteral && (part === ".." || part === "." || part === "this")) { - if (dig.length > 0) { - throw new _exception2["default"]("Invalid path: " + original, { loc }); - } else if (part === "..") { - depth++; - } - } else { - dig.push(part); - } - } - return { - type: "PathExpression", - data, - depth, - parts: dig, - original, - loc - }; - } - function prepareMustache(path, params, hash, open, strip, locInfo) { - var escapeFlag = open.charAt(3) || open.charAt(2), escaped = escapeFlag !== "{" && escapeFlag !== "&"; - var decorator = /\*/.test(open); - return { - type: decorator ? "Decorator" : "MustacheStatement", - path, - params, - hash, - escaped, - strip, - loc: this.locInfo(locInfo) - }; - } - function prepareRawBlock(openRawBlock, contents, close, locInfo) { - validateClose(openRawBlock, close); - locInfo = this.locInfo(locInfo); - var program = { - type: "Program", - body: contents, - strip: {}, - loc: locInfo - }; - return { - type: "BlockStatement", - path: openRawBlock.path, - params: openRawBlock.params, - hash: openRawBlock.hash, - program, - openStrip: {}, - inverseStrip: {}, - closeStrip: {}, - loc: locInfo - }; - } - function prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) { - if (close && close.path) { - validateClose(openBlock, close); - } - var decorator = /\*/.test(openBlock.open); - program.blockParams = openBlock.blockParams; - var inverse = void 0, inverseStrip = void 0; - if (inverseAndProgram) { - if (decorator) { - throw new _exception2["default"]("Unexpected inverse block on decorator", inverseAndProgram); - } - if (inverseAndProgram.chain) { - inverseAndProgram.program.body[0].closeStrip = close.strip; - } - inverseStrip = inverseAndProgram.strip; - inverse = inverseAndProgram.program; - } - if (inverted) { - inverted = inverse; - inverse = program; - program = inverted; - } - return { - type: decorator ? "DecoratorBlock" : "BlockStatement", - path: openBlock.path, - params: openBlock.params, - hash: openBlock.hash, - program, - inverse, - openStrip: openBlock.strip, - inverseStrip, - closeStrip: close && close.strip, - loc: this.locInfo(locInfo) - }; - } - function prepareProgram(statements, loc) { - if (!loc && statements.length) { - var firstLoc = statements[0].loc, lastLoc = statements[statements.length - 1].loc; - if (firstLoc && lastLoc) { - loc = { - source: firstLoc.source, - start: { - line: firstLoc.start.line, - column: firstLoc.start.column - }, - end: { - line: lastLoc.end.line, - column: lastLoc.end.column - } - }; - } - } - return { - type: "Program", - body: statements, - strip: {}, - loc - }; - } - function preparePartialBlock(open, program, close, locInfo) { - validateClose(open, close); - return { - type: "PartialBlockStatement", - name: open.path, - params: open.params, - hash: open.hash, - program, - openStrip: open.strip, - closeStrip: close && close.strip, - loc: this.locInfo(locInfo) - }; - } - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/compiler/base.js -var require_base2 = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/compiler/base.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.parseWithoutProcessing = parseWithoutProcessing; - exports.parse = parse; - function _interopRequireWildcard(obj) { - if (obj && obj.__esModule) { - return obj; - } else { - var newObj = {}; - if (obj != null) { - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; - } - } - newObj["default"] = obj; - return newObj; - } - } - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _parser = require_parser(); - var _parser2 = _interopRequireDefault(_parser); - var _whitespaceControl = require_whitespace_control(); - var _whitespaceControl2 = _interopRequireDefault(_whitespaceControl); - var _helpers = require_helpers2(); - var Helpers = _interopRequireWildcard(_helpers); - var _utils = require_utils(); - exports.parser = _parser2["default"]; - var yy = {}; - _utils.extend(yy, Helpers); - function parseWithoutProcessing(input, options) { - if (input.type === "Program") { - return input; - } - _parser2["default"].yy = yy; - yy.locInfo = function(locInfo) { - return new yy.SourceLocation(options && options.srcName, locInfo); - }; - var ast = _parser2["default"].parse(input); - return ast; - } - function parse(input, options) { - var ast = parseWithoutProcessing(input, options); - var strip = new _whitespaceControl2["default"](options); - return strip.accept(ast); - } - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js -var require_compiler = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.Compiler = Compiler; - exports.precompile = precompile; - exports.compile = compile; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - var _utils = require_utils(); - var _ast = require_ast(); - var _ast2 = _interopRequireDefault(_ast); - var slice = [].slice; - function Compiler() { - } - Compiler.prototype = { - compiler: Compiler, - equals: function equals(other) { - var len = this.opcodes.length; - if (other.opcodes.length !== len) { - return false; - } - for (var i = 0; i < len; i++) { - var opcode = this.opcodes[i], otherOpcode = other.opcodes[i]; - if (opcode.opcode !== otherOpcode.opcode || !argEquals(opcode.args, otherOpcode.args)) { - return false; - } - } - len = this.children.length; - for (var i = 0; i < len; i++) { - if (!this.children[i].equals(other.children[i])) { - return false; - } - } - return true; - }, - guid: 0, - compile: function compile2(program, options) { - this.sourceNode = []; - this.opcodes = []; - this.children = []; - this.options = options; - this.stringParams = options.stringParams; - this.trackIds = options.trackIds; - options.blockParams = options.blockParams || []; - options.knownHelpers = _utils.extend(/* @__PURE__ */ Object.create(null), { - helperMissing: true, - blockHelperMissing: true, - each: true, - "if": true, - unless: true, - "with": true, - log: true, - lookup: true - }, options.knownHelpers); - return this.accept(program); - }, - compileProgram: function compileProgram(program) { - var childCompiler = new this.compiler(), result = childCompiler.compile(program, this.options), guid = this.guid++; - this.usePartial = this.usePartial || result.usePartial; - this.children[guid] = result; - this.useDepths = this.useDepths || result.useDepths; - return guid; - }, - accept: function accept(node) { - if (!this[node.type]) { - throw new _exception2["default"]("Unknown type: " + node.type, node); - } - this.sourceNode.unshift(node); - var ret = this[node.type](node); - this.sourceNode.shift(); - return ret; - }, - Program: function Program(program) { - this.options.blockParams.unshift(program.blockParams); - var body = program.body, bodyLength = body.length; - for (var i = 0; i < bodyLength; i++) { - this.accept(body[i]); - } - this.options.blockParams.shift(); - this.isSimple = bodyLength === 1; - this.blockParams = program.blockParams ? program.blockParams.length : 0; - return this; - }, - BlockStatement: function BlockStatement(block) { - transformLiteralToPath2(block); - var program = block.program, inverse = block.inverse; - program = program && this.compileProgram(program); - inverse = inverse && this.compileProgram(inverse); - var type = this.classifySexpr(block); - if (type === "helper") { - this.helperSexpr(block, program, inverse); - } else if (type === "simple") { - this.simpleSexpr(block); - this.opcode("pushProgram", program); - this.opcode("pushProgram", inverse); - this.opcode("emptyHash"); - this.opcode("blockValue", block.path.original); - } else { - this.ambiguousSexpr(block, program, inverse); - this.opcode("pushProgram", program); - this.opcode("pushProgram", inverse); - this.opcode("emptyHash"); - this.opcode("ambiguousBlockValue"); - } - this.opcode("append"); - }, - DecoratorBlock: function DecoratorBlock(decorator) { - var program = decorator.program && this.compileProgram(decorator.program); - var params = this.setupFullMustacheParams(decorator, program, void 0), path = decorator.path; - this.useDecorators = true; - this.opcode("registerDecorator", params.length, path.original); - }, - PartialStatement: function PartialStatement(partial) { - this.usePartial = true; - var program = partial.program; - if (program) { - program = this.compileProgram(partial.program); - } - var params = partial.params; - if (params.length > 1) { - throw new _exception2["default"]("Unsupported number of partial arguments: " + params.length, partial); - } else if (!params.length) { - if (this.options.explicitPartialContext) { - this.opcode("pushLiteral", "undefined"); - } else { - params.push({ type: "PathExpression", parts: [], depth: 0 }); - } - } - var partialName = partial.name.original, isDynamic = partial.name.type === "SubExpression"; - if (isDynamic) { - this.accept(partial.name); - } - this.setupFullMustacheParams(partial, program, void 0, true); - var indent = partial.indent || ""; - if (this.options.preventIndent && indent) { - this.opcode("appendContent", indent); - indent = ""; - } - this.opcode("invokePartial", isDynamic, partialName, indent); - this.opcode("append"); - }, - PartialBlockStatement: function PartialBlockStatement(partialBlock) { - this.PartialStatement(partialBlock); - }, - MustacheStatement: function MustacheStatement(mustache) { - this.SubExpression(mustache); - if (mustache.escaped && !this.options.noEscape) { - this.opcode("appendEscaped"); - } else { - this.opcode("append"); - } - }, - Decorator: function Decorator(decorator) { - this.DecoratorBlock(decorator); - }, - ContentStatement: function ContentStatement(content) { - if (content.value) { - this.opcode("appendContent", content.value); - } - }, - CommentStatement: function CommentStatement() { - }, - SubExpression: function SubExpression(sexpr) { - transformLiteralToPath2(sexpr); - var type = this.classifySexpr(sexpr); - if (type === "simple") { - this.simpleSexpr(sexpr); - } else if (type === "helper") { - this.helperSexpr(sexpr); - } else { - this.ambiguousSexpr(sexpr); - } - }, - ambiguousSexpr: function ambiguousSexpr(sexpr, program, inverse) { - var path = sexpr.path, name = path.parts[0], isBlock2 = program != null || inverse != null; - this.opcode("getContext", path.depth); - this.opcode("pushProgram", program); - this.opcode("pushProgram", inverse); - path.strict = true; - this.accept(path); - this.opcode("invokeAmbiguous", name, isBlock2); - }, - simpleSexpr: function simpleSexpr(sexpr) { - var path = sexpr.path; - path.strict = true; - this.accept(path); - this.opcode("resolvePossibleLambda"); - }, - helperSexpr: function helperSexpr(sexpr, program, inverse) { - var params = this.setupFullMustacheParams(sexpr, program, inverse), path = sexpr.path, name = path.parts[0]; - if (this.options.knownHelpers[name]) { - this.opcode("invokeKnownHelper", params.length, name); - } else if (this.options.knownHelpersOnly) { - throw new _exception2["default"]("You specified knownHelpersOnly, but used the unknown helper " + name, sexpr); - } else { - path.strict = true; - path.falsy = true; - this.accept(path); - this.opcode("invokeHelper", params.length, path.original, _ast2["default"].helpers.simpleId(path)); - } - }, - PathExpression: function PathExpression(path) { - this.addDepth(path.depth); - this.opcode("getContext", path.depth); - var name = path.parts[0], scoped = _ast2["default"].helpers.scopedId(path), blockParamId = !path.depth && !scoped && this.blockParamIndex(name); - if (blockParamId) { - this.opcode("lookupBlockParam", blockParamId, path.parts); - } else if (!name) { - this.opcode("pushContext"); - } else if (path.data) { - this.options.data = true; - this.opcode("lookupData", path.depth, path.parts, path.strict); - } else { - this.opcode("lookupOnContext", path.parts, path.falsy, path.strict, scoped); - } - }, - StringLiteral: function StringLiteral(string) { - this.opcode("pushString", string.value); - }, - NumberLiteral: function NumberLiteral(number) { - this.opcode("pushLiteral", number.value); - }, - BooleanLiteral: function BooleanLiteral(bool) { - this.opcode("pushLiteral", bool.value); - }, - UndefinedLiteral: function UndefinedLiteral() { - this.opcode("pushLiteral", "undefined"); - }, - NullLiteral: function NullLiteral() { - this.opcode("pushLiteral", "null"); - }, - Hash: function Hash(hash) { - var pairs = hash.pairs, i = 0, l = pairs.length; - this.opcode("pushHash"); - for (; i < l; i++) { - this.pushParam(pairs[i].value); - } - while (i--) { - this.opcode("assignToHash", pairs[i].key); - } - this.opcode("popHash"); - }, - // HELPERS - opcode: function opcode(name) { - this.opcodes.push({ - opcode: name, - args: slice.call(arguments, 1), - loc: this.sourceNode[0].loc - }); - }, - addDepth: function addDepth(depth) { - if (!depth) { - return; - } - this.useDepths = true; - }, - classifySexpr: function classifySexpr(sexpr) { - var isSimple = _ast2["default"].helpers.simpleId(sexpr.path); - var isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]); - var isHelper = !isBlockParam && _ast2["default"].helpers.helperExpression(sexpr); - var isEligible = !isBlockParam && (isHelper || isSimple); - if (isEligible && !isHelper) { - var _name = sexpr.path.parts[0], options = this.options; - if (options.knownHelpers[_name]) { - isHelper = true; - } else if (options.knownHelpersOnly) { - isEligible = false; - } - } - if (isHelper) { - return "helper"; - } else if (isEligible) { - return "ambiguous"; - } else { - return "simple"; - } - }, - pushParams: function pushParams(params) { - for (var i = 0, l = params.length; i < l; i++) { - this.pushParam(params[i]); - } - }, - pushParam: function pushParam(val) { - var value = val.value != null ? val.value : val.original || ""; - if (this.stringParams) { - if (value.replace) { - value = value.replace(/^(\.?\.\/)*/g, "").replace(/\//g, "."); - } - if (val.depth) { - this.addDepth(val.depth); - } - this.opcode("getContext", val.depth || 0); - this.opcode("pushStringParam", value, val.type); - if (val.type === "SubExpression") { - this.accept(val); - } - } else { - if (this.trackIds) { - var blockParamIndex = void 0; - if (val.parts && !_ast2["default"].helpers.scopedId(val) && !val.depth) { - blockParamIndex = this.blockParamIndex(val.parts[0]); - } - if (blockParamIndex) { - var blockParamChild = val.parts.slice(1).join("."); - this.opcode("pushId", "BlockParam", blockParamIndex, blockParamChild); - } else { - value = val.original || value; - if (value.replace) { - value = value.replace(/^this(?:\.|$)/, "").replace(/^\.\//, "").replace(/^\.$/, ""); - } - this.opcode("pushId", val.type, value); - } - } - this.accept(val); - } - }, - setupFullMustacheParams: function setupFullMustacheParams(sexpr, program, inverse, omitEmpty) { - var params = sexpr.params; - this.pushParams(params); - this.opcode("pushProgram", program); - this.opcode("pushProgram", inverse); - if (sexpr.hash) { - this.accept(sexpr.hash); - } else { - this.opcode("emptyHash", omitEmpty); - } - return params; - }, - blockParamIndex: function blockParamIndex(name) { - for (var depth = 0, len = this.options.blockParams.length; depth < len; depth++) { - var blockParams = this.options.blockParams[depth], param = blockParams && _utils.indexOf(blockParams, name); - if (blockParams && param >= 0) { - return [depth, param]; - } - } - } - }; - function precompile(input, options, env) { - if (input == null || typeof input !== "string" && input.type !== "Program") { - throw new _exception2["default"]("You must pass a string or Handlebars AST to Handlebars.precompile. You passed " + input); - } - options = options || {}; - if (!("data" in options)) { - options.data = true; - } - if (options.compat) { - options.useDepths = true; - } - var ast = env.parse(input, options), environment = new env.Compiler().compile(ast, options); - return new env.JavaScriptCompiler().compile(environment, options); - } - function compile(input, options, env) { - if (options === void 0) options = {}; - if (input == null || typeof input !== "string" && input.type !== "Program") { - throw new _exception2["default"]("You must pass a string or Handlebars AST to Handlebars.compile. You passed " + input); - } - options = _utils.extend({}, options); - if (!("data" in options)) { - options.data = true; - } - if (options.compat) { - options.useDepths = true; - } - var compiled = void 0; - function compileInput() { - var ast = env.parse(input, options), environment = new env.Compiler().compile(ast, options), templateSpec = new env.JavaScriptCompiler().compile(environment, options, void 0, true); - return env.template(templateSpec); - } - function ret(context, execOptions) { - if (!compiled) { - compiled = compileInput(); - } - return compiled.call(this, context, execOptions); - } - ret._setup = function(setupOptions) { - if (!compiled) { - compiled = compileInput(); - } - return compiled._setup(setupOptions); - }; - ret._child = function(i, data, blockParams, depths) { - if (!compiled) { - compiled = compileInput(); - } - return compiled._child(i, data, blockParams, depths); - }; - return ret; - } - function argEquals(a, b) { - if (a === b) { - return true; - } - if (_utils.isArray(a) && _utils.isArray(b) && a.length === b.length) { - for (var i = 0; i < a.length; i++) { - if (!argEquals(a[i], b[i])) { - return false; - } - } - return true; - } - } - function transformLiteralToPath2(sexpr) { - if (!sexpr.path.parts) { - var literal = sexpr.path; - sexpr.path = { - type: "PathExpression", - data: false, - depth: 0, - parts: [literal.original + ""], - original: literal.original + "", - loc: literal.loc - }; - } - } - } -}); - -// node_modules/source-map/lib/base64.js -var require_base64 = __commonJS({ - "node_modules/source-map/lib/base64.js"(exports) { - var intToCharMap = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""); - exports.encode = function(number) { - if (0 <= number && number < intToCharMap.length) { - return intToCharMap[number]; - } - throw new TypeError("Must be between 0 and 63: " + number); - }; - exports.decode = function(charCode) { - var bigA = 65; - var bigZ = 90; - var littleA = 97; - var littleZ = 122; - var zero = 48; - var nine = 57; - var plus = 43; - var slash = 47; - var littleOffset = 26; - var numberOffset = 52; - if (bigA <= charCode && charCode <= bigZ) { - return charCode - bigA; - } - if (littleA <= charCode && charCode <= littleZ) { - return charCode - littleA + littleOffset; - } - if (zero <= charCode && charCode <= nine) { - return charCode - zero + numberOffset; - } - if (charCode == plus) { - return 62; - } - if (charCode == slash) { - return 63; - } - return -1; - }; - } -}); - -// node_modules/source-map/lib/base64-vlq.js -var require_base64_vlq = __commonJS({ - "node_modules/source-map/lib/base64-vlq.js"(exports) { - var base64 = require_base64(); - var VLQ_BASE_SHIFT = 5; - var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - var VLQ_BASE_MASK = VLQ_BASE - 1; - var VLQ_CONTINUATION_BIT = VLQ_BASE; - function toVLQSigned(aValue) { - return aValue < 0 ? (-aValue << 1) + 1 : (aValue << 1) + 0; - } - function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative ? -shifted : shifted; - } - exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - var vlq = toVLQSigned(aValue); - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - return encoded; - }; - exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - do { - if (aIndex >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - digit = base64.decode(aStr.charCodeAt(aIndex++)); - if (digit === -1) { - throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); - } - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aIndex; - }; - } -}); - -// node_modules/source-map/lib/util.js -var require_util = __commonJS({ - "node_modules/source-map/lib/util.js"(exports) { - function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } - } - exports.getArg = getArg; - var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; - var dataUrlRegexp = /^data:.+\,.+$/; - function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; - } - exports.urlParse = urlParse; - function urlGenerate(aParsedUrl) { - var url = ""; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ":"; - } - url += "//"; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + "@"; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port; - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; - } - exports.urlGenerate = urlGenerate; - function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = exports.isAbsolute(path); - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === ".") { - parts.splice(i, 1); - } else if (part === "..") { - up++; - } else if (up > 0) { - if (part === "") { - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join("/"); - if (path === "") { - path = isAbsolute ? "/" : "."; - } - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; - } - exports.normalize = normalize; - function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || "/"; - } - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - var joined = aPath.charAt(0) === "/" ? aPath : normalize(aRoot.replace(/\/+$/, "") + "/" + aPath); - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; - } - exports.join = join; - exports.isAbsolute = function(aPath) { - return aPath.charAt(0) === "/" || urlRegexp.test(aPath); - }; - function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - aRoot = aRoot.replace(/\/$/, ""); - var level = 0; - while (aPath.indexOf(aRoot + "/") !== 0) { - var index = aRoot.lastIndexOf("/"); - if (index < 0) { - return aPath; - } - aRoot = aRoot.slice(0, index); - if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { - return aPath; - } - ++level; - } - return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); - } - exports.relative = relative; - var supportsNullProto = function() { - var obj = /* @__PURE__ */ Object.create(null); - return !("__proto__" in obj); - }(); - function identity(s) { - return s; - } - function toSetString(aStr) { - if (isProtoString(aStr)) { - return "$" + aStr; - } - return aStr; - } - exports.toSetString = supportsNullProto ? identity : toSetString; - function fromSetString(aStr) { - if (isProtoString(aStr)) { - return aStr.slice(1); - } - return aStr; - } - exports.fromSetString = supportsNullProto ? identity : fromSetString; - function isProtoString(s) { - if (!s) { - return false; - } - var length = s.length; - if (length < 9) { - return false; - } - if (s.charCodeAt(length - 1) !== 95 || s.charCodeAt(length - 2) !== 95 || s.charCodeAt(length - 3) !== 111 || s.charCodeAt(length - 4) !== 116 || s.charCodeAt(length - 5) !== 111 || s.charCodeAt(length - 6) !== 114 || s.charCodeAt(length - 7) !== 112 || s.charCodeAt(length - 8) !== 95 || s.charCodeAt(length - 9) !== 95) { - return false; - } - for (var i = length - 10; i >= 0; i--) { - if (s.charCodeAt(i) !== 36) { - return false; - } - } - return true; - } - function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByOriginalPositions = compareByOriginalPositions; - function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; - function strcmp(aStr1, aStr2) { - if (aStr1 === aStr2) { - return 0; - } - if (aStr1 === null) { - return 1; - } - if (aStr2 === null) { - return -1; - } - if (aStr1 > aStr2) { - return 1; - } - return -1; - } - function compareByGeneratedPositionsInflated(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; - function parseSourceMapInput(str) { - return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, "")); - } - exports.parseSourceMapInput = parseSourceMapInput; - function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { - sourceURL = sourceURL || ""; - if (sourceRoot) { - if (sourceRoot[sourceRoot.length - 1] !== "/" && sourceURL[0] !== "/") { - sourceRoot += "/"; - } - sourceURL = sourceRoot + sourceURL; - } - if (sourceMapURL) { - var parsed = urlParse(sourceMapURL); - if (!parsed) { - throw new Error("sourceMapURL could not be parsed"); - } - if (parsed.path) { - var index = parsed.path.lastIndexOf("/"); - if (index >= 0) { - parsed.path = parsed.path.substring(0, index + 1); - } - } - sourceURL = join(urlGenerate(parsed), sourceURL); - } - return normalize(sourceURL); - } - exports.computeSourceURL = computeSourceURL; - } -}); - -// node_modules/source-map/lib/array-set.js -var require_array_set = __commonJS({ - "node_modules/source-map/lib/array-set.js"(exports) { - var util = require_util(); - var has = Object.prototype.hasOwnProperty; - var hasNativeMap = typeof Map !== "undefined"; - function ArraySet() { - this._array = []; - this._set = hasNativeMap ? /* @__PURE__ */ new Map() : /* @__PURE__ */ Object.create(null); - } - ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; - }; - ArraySet.prototype.size = function ArraySet_size() { - return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; - }; - ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var sStr = hasNativeMap ? aStr : util.toSetString(aStr); - var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - if (hasNativeMap) { - this._set.set(aStr, idx); - } else { - this._set[sStr] = idx; - } - } - }; - ArraySet.prototype.has = function ArraySet_has(aStr) { - if (hasNativeMap) { - return this._set.has(aStr); - } else { - var sStr = util.toSetString(aStr); - return has.call(this._set, sStr); - } - }; - ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (hasNativeMap) { - var idx = this._set.get(aStr); - if (idx >= 0) { - return idx; - } - } else { - var sStr = util.toSetString(aStr); - if (has.call(this._set, sStr)) { - return this._set[sStr]; - } - } - throw new Error('"' + aStr + '" is not in the set.'); - }; - ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error("No element indexed by " + aIdx); - }; - ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); - }; - exports.ArraySet = ArraySet; - } -}); - -// node_modules/source-map/lib/mapping-list.js -var require_mapping_list = __commonJS({ - "node_modules/source-map/lib/mapping-list.js"(exports) { - var util = require_util(); - function generatedPositionAfter(mappingA, mappingB) { - var lineA = mappingA.generatedLine; - var lineB = mappingB.generatedLine; - var columnA = mappingA.generatedColumn; - var columnB = mappingB.generatedColumn; - return lineB > lineA || lineB == lineA && columnB >= columnA || util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; - } - function MappingList() { - this._array = []; - this._sorted = true; - this._last = { generatedLine: -1, generatedColumn: 0 }; - } - MappingList.prototype.unsortedForEach = function MappingList_forEach(aCallback, aThisArg) { - this._array.forEach(aCallback, aThisArg); - }; - MappingList.prototype.add = function MappingList_add(aMapping) { - if (generatedPositionAfter(this._last, aMapping)) { - this._last = aMapping; - this._array.push(aMapping); - } else { - this._sorted = false; - this._array.push(aMapping); - } - }; - MappingList.prototype.toArray = function MappingList_toArray() { - if (!this._sorted) { - this._array.sort(util.compareByGeneratedPositionsInflated); - this._sorted = true; - } - return this._array; - }; - exports.MappingList = MappingList; - } -}); - -// node_modules/source-map/lib/source-map-generator.js -var require_source_map_generator = __commonJS({ - "node_modules/source-map/lib/source-map-generator.js"(exports) { - var base64VLQ = require_base64_vlq(); - var util = require_util(); - var ArraySet = require_array_set().ArraySet; - var MappingList = require_mapping_list().MappingList; - function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, "file", null); - this._sourceRoot = util.getArg(aArgs, "sourceRoot", null); - this._skipValidation = util.getArg(aArgs, "skipValidation", false); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = new MappingList(); - this._sourcesContents = null; - } - SourceMapGenerator.prototype._version = 3; - SourceMapGenerator.fromSourceMap = function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot - }); - aSourceMapConsumer.eachMapping(function(mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function(sourceFile) { - var sourceRelative = sourceFile; - if (sourceRoot !== null) { - sourceRelative = util.relative(sourceRoot, sourceFile); - } - if (!generator._sources.has(sourceRelative)) { - generator._sources.add(sourceRelative); - } - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - SourceMapGenerator.prototype.addMapping = function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, "generated"); - var original = util.getArg(aArgs, "original", null); - var source = util.getArg(aArgs, "source", null); - var name = util.getArg(aArgs, "name", null); - if (!this._skipValidation) { - this._validateMapping(generated, original, source, name); - } - if (source != null) { - source = String(source); - if (!this._sources.has(source)) { - this._sources.add(source); - } - } - if (name != null) { - name = String(name); - if (!this._names.has(name)) { - this._names.add(name); - } - } - this._mappings.add({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source, - name - }); - }; - SourceMapGenerator.prototype.setSourceContent = function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - if (aSourceContent != null) { - if (!this._sourcesContents) { - this._sourcesContents = /* @__PURE__ */ Object.create(null); - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - SourceMapGenerator.prototype.applySourceMap = function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - `SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.` - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - var newSources = new ArraySet(); - var newNames = new ArraySet(); - this._mappings.unsortedForEach(function(mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source); - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - }, this); - this._sources = newSources; - this._names = newNames; - aSourceMapConsumer.sources.forEach(function(sourceFile2) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile2); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile2 = util.join(aSourceMapPath, sourceFile2); - } - if (sourceRoot != null) { - sourceFile2 = util.relative(sourceRoot, sourceFile2); - } - this.setSourceContent(sourceFile2, content); - } - }, this); - }; - SourceMapGenerator.prototype._validateMapping = function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, aName) { - if (aOriginal && typeof aOriginal.line !== "number" && typeof aOriginal.column !== "number") { - throw new Error( - "original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values." - ); - } - if (aGenerated && "line" in aGenerated && "column" in aGenerated && aGenerated.line > 0 && aGenerated.column >= 0 && !aOriginal && !aSource && !aName) { - return; - } else if (aGenerated && "line" in aGenerated && "column" in aGenerated && aOriginal && "line" in aOriginal && "column" in aOriginal && aGenerated.line > 0 && aGenerated.column >= 0 && aOriginal.line > 0 && aOriginal.column >= 0 && aSource) { - return; - } else { - throw new Error("Invalid mapping: " + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - SourceMapGenerator.prototype._serializeMappings = function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ""; - var next; - var mapping; - var nameIdx; - var sourceIdx; - var mappings = this._mappings.toArray(); - for (var i = 0, len = mappings.length; i < len; i++) { - mapping = mappings[i]; - next = ""; - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - next += ";"; - previousGeneratedLine++; - } - } else { - if (i > 0) { - if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { - continue; - } - next += ","; - } - } - next += base64VLQ.encode(mapping.generatedColumn - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - if (mapping.source != null) { - sourceIdx = this._sources.indexOf(mapping.source); - next += base64VLQ.encode(sourceIdx - previousSource); - previousSource = sourceIdx; - next += base64VLQ.encode(mapping.originalLine - 1 - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - next += base64VLQ.encode(mapping.originalColumn - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - if (mapping.name != null) { - nameIdx = this._names.indexOf(mapping.name); - next += base64VLQ.encode(nameIdx - previousName); - previousName = nameIdx; - } - } - result += next; - } - return result; - }; - SourceMapGenerator.prototype._generateSourcesContent = function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function(source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) ? this._sourcesContents[key] : null; - }, this); - }; - SourceMapGenerator.prototype.toJSON = function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - return map; - }; - SourceMapGenerator.prototype.toString = function SourceMapGenerator_toString() { - return JSON.stringify(this.toJSON()); - }; - exports.SourceMapGenerator = SourceMapGenerator; - } -}); - -// node_modules/source-map/lib/binary-search.js -var require_binary_search = __commonJS({ - "node_modules/source-map/lib/binary-search.js"(exports) { - exports.GREATEST_LOWER_BOUND = 1; - exports.LEAST_UPPER_BOUND = 2; - function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - return mid; - } else if (cmp > 0) { - if (aHigh - mid > 1) { - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); - } - if (aBias == exports.LEAST_UPPER_BOUND) { - return aHigh < aHaystack.length ? aHigh : -1; - } else { - return mid; - } - } else { - if (mid - aLow > 1) { - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); - } - if (aBias == exports.LEAST_UPPER_BOUND) { - return mid; - } else { - return aLow < 0 ? -1 : aLow; - } - } - } - exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { - if (aHaystack.length === 0) { - return -1; - } - var index = recursiveSearch( - -1, - aHaystack.length, - aNeedle, - aHaystack, - aCompare, - aBias || exports.GREATEST_LOWER_BOUND - ); - if (index < 0) { - return -1; - } - while (index - 1 >= 0) { - if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { - break; - } - --index; - } - return index; - }; - } -}); - -// node_modules/source-map/lib/quick-sort.js -var require_quick_sort = __commonJS({ - "node_modules/source-map/lib/quick-sort.js"(exports) { - function swap(ary, x, y) { - var temp = ary[x]; - ary[x] = ary[y]; - ary[y] = temp; - } - function randomIntInRange(low, high) { - return Math.round(low + Math.random() * (high - low)); - } - function doQuickSort(ary, comparator, p, r) { - if (p < r) { - var pivotIndex = randomIntInRange(p, r); - var i = p - 1; - swap(ary, pivotIndex, r); - var pivot = ary[r]; - for (var j = p; j < r; j++) { - if (comparator(ary[j], pivot) <= 0) { - i += 1; - swap(ary, i, j); - } - } - swap(ary, i + 1, j); - var q = i + 1; - doQuickSort(ary, comparator, p, q - 1); - doQuickSort(ary, comparator, q + 1, r); - } - } - exports.quickSort = function(ary, comparator) { - doQuickSort(ary, comparator, 0, ary.length - 1); - }; - } -}); - -// node_modules/source-map/lib/source-map-consumer.js -var require_source_map_consumer = __commonJS({ - "node_modules/source-map/lib/source-map-consumer.js"(exports) { - var util = require_util(); - var binarySearch = require_binary_search(); - var ArraySet = require_array_set().ArraySet; - var base64VLQ = require_base64_vlq(); - var quickSort = require_quick_sort().quickSort; - function SourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === "string") { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - return sourceMap.sections != null ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); - } - SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); - }; - SourceMapConsumer.prototype._version = 3; - SourceMapConsumer.prototype.__generatedMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, "_generatedMappings", { - configurable: true, - enumerable: true, - get: function() { - if (!this.__generatedMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - return this.__generatedMappings; - } - }); - SourceMapConsumer.prototype.__originalMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, "_originalMappings", { - configurable: true, - enumerable: true, - get: function() { - if (!this.__originalMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - return this.__originalMappings; - } - }); - SourceMapConsumer.prototype._charIsMappingSeparator = function SourceMapConsumer_charIsMappingSeparator(aStr, index) { - var c = aStr.charAt(index); - return c === ";" || c === ","; - }; - SourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - throw new Error("Subclasses must implement _parseMappings"); - }; - SourceMapConsumer.GENERATED_ORDER = 1; - SourceMapConsumer.ORIGINAL_ORDER = 2; - SourceMapConsumer.GREATEST_LOWER_BOUND = 1; - SourceMapConsumer.LEAST_UPPER_BOUND = 2; - SourceMapConsumer.prototype.eachMapping = function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - var sourceRoot = this.sourceRoot; - mappings.map(function(mapping) { - var source = mapping.source === null ? null : this._sources.at(mapping.source); - source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); - return { - source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name === null ? null : this._names.at(mapping.name) - }; - }, this).forEach(aCallback, context); - }; - SourceMapConsumer.prototype.allGeneratedPositionsFor = function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { - var line = util.getArg(aArgs, "line"); - var needle = { - source: util.getArg(aArgs, "source"), - originalLine: line, - originalColumn: util.getArg(aArgs, "column", 0) - }; - needle.source = this._findSourceIndex(needle.source); - if (needle.source < 0) { - return []; - } - var mappings = []; - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - binarySearch.LEAST_UPPER_BOUND - ); - if (index >= 0) { - var mapping = this._originalMappings[index]; - if (aArgs.column === void 0) { - var originalLine = mapping.originalLine; - while (mapping && mapping.originalLine === originalLine) { - mappings.push({ - line: util.getArg(mapping, "generatedLine", null), - column: util.getArg(mapping, "generatedColumn", null), - lastColumn: util.getArg(mapping, "lastGeneratedColumn", null) - }); - mapping = this._originalMappings[++index]; - } - } else { - var originalColumn = mapping.originalColumn; - while (mapping && mapping.originalLine === line && mapping.originalColumn == originalColumn) { - mappings.push({ - line: util.getArg(mapping, "generatedLine", null), - column: util.getArg(mapping, "generatedColumn", null), - lastColumn: util.getArg(mapping, "lastGeneratedColumn", null) - }); - mapping = this._originalMappings[++index]; - } - } - } - return mappings; - }; - exports.SourceMapConsumer = SourceMapConsumer; - function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === "string") { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - var version = util.getArg(sourceMap, "version"); - var sources = util.getArg(sourceMap, "sources"); - var names = util.getArg(sourceMap, "names", []); - var sourceRoot = util.getArg(sourceMap, "sourceRoot", null); - var sourcesContent = util.getArg(sourceMap, "sourcesContent", null); - var mappings = util.getArg(sourceMap, "mappings"); - var file = util.getArg(sourceMap, "file", null); - if (version != this._version) { - throw new Error("Unsupported version: " + version); - } - if (sourceRoot) { - sourceRoot = util.normalize(sourceRoot); - } - sources = sources.map(String).map(util.normalize).map(function(source) { - return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) ? util.relative(sourceRoot, source) : source; - }); - this._names = ArraySet.fromArray(names.map(String), true); - this._sources = ArraySet.fromArray(sources, true); - this._absoluteSources = this._sources.toArray().map(function(s) { - return util.computeSourceURL(sourceRoot, s, aSourceMapURL); - }); - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this._sourceMapURL = aSourceMapURL; - this.file = file; - } - BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; - BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - if (this._sources.has(relativeSource)) { - return this._sources.indexOf(relativeSource); - } - var i; - for (i = 0; i < this._absoluteSources.length; ++i) { - if (this._absoluteSources[i] == aSource) { - return i; - } - } - return -1; - }; - BasicSourceMapConsumer.fromSourceMap = function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { - var smc = Object.create(BasicSourceMapConsumer.prototype); - var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent( - smc._sources.toArray(), - smc.sourceRoot - ); - smc.file = aSourceMap._file; - smc._sourceMapURL = aSourceMapURL; - smc._absoluteSources = smc._sources.toArray().map(function(s) { - return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); - }); - var generatedMappings = aSourceMap._mappings.toArray().slice(); - var destGeneratedMappings = smc.__generatedMappings = []; - var destOriginalMappings = smc.__originalMappings = []; - for (var i = 0, length = generatedMappings.length; i < length; i++) { - var srcMapping = generatedMappings[i]; - var destMapping = new Mapping(); - destMapping.generatedLine = srcMapping.generatedLine; - destMapping.generatedColumn = srcMapping.generatedColumn; - if (srcMapping.source) { - destMapping.source = sources.indexOf(srcMapping.source); - destMapping.originalLine = srcMapping.originalLine; - destMapping.originalColumn = srcMapping.originalColumn; - if (srcMapping.name) { - destMapping.name = names.indexOf(srcMapping.name); - } - destOriginalMappings.push(destMapping); - } - destGeneratedMappings.push(destMapping); - } - quickSort(smc.__originalMappings, util.compareByOriginalPositions); - return smc; - }; - BasicSourceMapConsumer.prototype._version = 3; - Object.defineProperty(BasicSourceMapConsumer.prototype, "sources", { - get: function() { - return this._absoluteSources.slice(); - } - }); - function Mapping() { - this.generatedLine = 0; - this.generatedColumn = 0; - this.source = null; - this.originalLine = null; - this.originalColumn = null; - this.name = null; - } - BasicSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var length = aStr.length; - var index = 0; - var cachedSegments = {}; - var temp = {}; - var originalMappings = []; - var generatedMappings = []; - var mapping, str, segment, end, value; - while (index < length) { - if (aStr.charAt(index) === ";") { - generatedLine++; - index++; - previousGeneratedColumn = 0; - } else if (aStr.charAt(index) === ",") { - index++; - } else { - mapping = new Mapping(); - mapping.generatedLine = generatedLine; - for (end = index; end < length; end++) { - if (this._charIsMappingSeparator(aStr, end)) { - break; - } - } - str = aStr.slice(index, end); - segment = cachedSegments[str]; - if (segment) { - index += str.length; - } else { - segment = []; - while (index < end) { - base64VLQ.decode(aStr, index, temp); - value = temp.value; - index = temp.rest; - segment.push(value); - } - if (segment.length === 2) { - throw new Error("Found a source, but no line and column"); - } - if (segment.length === 3) { - throw new Error("Found a source and line, but no column"); - } - cachedSegments[str] = segment; - } - mapping.generatedColumn = previousGeneratedColumn + segment[0]; - previousGeneratedColumn = mapping.generatedColumn; - if (segment.length > 1) { - mapping.source = previousSource + segment[1]; - previousSource += segment[1]; - mapping.originalLine = previousOriginalLine + segment[2]; - previousOriginalLine = mapping.originalLine; - mapping.originalLine += 1; - mapping.originalColumn = previousOriginalColumn + segment[3]; - previousOriginalColumn = mapping.originalColumn; - if (segment.length > 4) { - mapping.name = previousName + segment[4]; - previousName += segment[4]; - } - } - generatedMappings.push(mapping); - if (typeof mapping.originalLine === "number") { - originalMappings.push(mapping); - } - } - } - quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); - this.__generatedMappings = generatedMappings; - quickSort(originalMappings, util.compareByOriginalPositions); - this.__originalMappings = originalMappings; - }; - BasicSourceMapConsumer.prototype._findMapping = function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, aColumnName, aComparator, aBias) { - if (aNeedle[aLineName] <= 0) { - throw new TypeError("Line must be greater than or equal to 1, got " + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError("Column must be greater than or equal to 0, got " + aNeedle[aColumnName]); - } - return binarySearch.search(aNeedle, aMappings, aComparator, aBias); - }; - BasicSourceMapConsumer.prototype.computeColumnSpans = function SourceMapConsumer_computeColumnSpans() { - for (var index = 0; index < this._generatedMappings.length; ++index) { - var mapping = this._generatedMappings[index]; - if (index + 1 < this._generatedMappings.length) { - var nextMapping = this._generatedMappings[index + 1]; - if (mapping.generatedLine === nextMapping.generatedLine) { - mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; - continue; - } - } - mapping.lastGeneratedColumn = Infinity; - } - }; - BasicSourceMapConsumer.prototype.originalPositionFor = function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, "line"), - generatedColumn: util.getArg(aArgs, "column") - }; - var index = this._findMapping( - needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositionsDeflated, - util.getArg(aArgs, "bias", SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - if (index >= 0) { - var mapping = this._generatedMappings[index]; - if (mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, "source", null); - if (source !== null) { - source = this._sources.at(source); - source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); - } - var name = util.getArg(mapping, "name", null); - if (name !== null) { - name = this._names.at(name); - } - return { - source, - line: util.getArg(mapping, "originalLine", null), - column: util.getArg(mapping, "originalColumn", null), - name - }; - } - } - return { - source: null, - line: null, - column: null, - name: null - }; - }; - BasicSourceMapConsumer.prototype.hasContentsOfAllSources = function BasicSourceMapConsumer_hasContentsOfAllSources() { - if (!this.sourcesContent) { - return false; - } - return this.sourcesContent.length >= this._sources.size() && !this.sourcesContent.some(function(sc) { - return sc == null; - }); - }; - BasicSourceMapConsumer.prototype.sourceContentFor = function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - if (!this.sourcesContent) { - return null; - } - var index = this._findSourceIndex(aSource); - if (index >= 0) { - return this.sourcesContent[index]; - } - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - var url; - if (this.sourceRoot != null && (url = util.urlParse(this.sourceRoot))) { - var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]; - } - if ((!url.path || url.path == "/") && this._sources.has("/" + relativeSource)) { - return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; - } - } - if (nullOnMissing) { - return null; - } else { - throw new Error('"' + relativeSource + '" is not in the SourceMap.'); - } - }; - BasicSourceMapConsumer.prototype.generatedPositionFor = function SourceMapConsumer_generatedPositionFor(aArgs) { - var source = util.getArg(aArgs, "source"); - source = this._findSourceIndex(source); - if (source < 0) { - return { - line: null, - column: null, - lastColumn: null - }; - } - var needle = { - source, - originalLine: util.getArg(aArgs, "line"), - originalColumn: util.getArg(aArgs, "column") - }; - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - util.getArg(aArgs, "bias", SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - if (index >= 0) { - var mapping = this._originalMappings[index]; - if (mapping.source === needle.source) { - return { - line: util.getArg(mapping, "generatedLine", null), - column: util.getArg(mapping, "generatedColumn", null), - lastColumn: util.getArg(mapping, "lastGeneratedColumn", null) - }; - } - } - return { - line: null, - column: null, - lastColumn: null - }; - }; - exports.BasicSourceMapConsumer = BasicSourceMapConsumer; - function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === "string") { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - var version = util.getArg(sourceMap, "version"); - var sections = util.getArg(sourceMap, "sections"); - if (version != this._version) { - throw new Error("Unsupported version: " + version); - } - this._sources = new ArraySet(); - this._names = new ArraySet(); - var lastOffset = { - line: -1, - column: 0 - }; - this._sections = sections.map(function(s) { - if (s.url) { - throw new Error("Support for url field in sections not implemented."); - } - var offset = util.getArg(s, "offset"); - var offsetLine = util.getArg(offset, "line"); - var offsetColumn = util.getArg(offset, "column"); - if (offsetLine < lastOffset.line || offsetLine === lastOffset.line && offsetColumn < lastOffset.column) { - throw new Error("Section offsets must be ordered and non-overlapping."); - } - lastOffset = offset; - return { - generatedOffset: { - // The offset fields are 0-based, but we use 1-based indices when - // encoding/decoding from VLQ. - generatedLine: offsetLine + 1, - generatedColumn: offsetColumn + 1 - }, - consumer: new SourceMapConsumer(util.getArg(s, "map"), aSourceMapURL) - }; - }); - } - IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - IndexedSourceMapConsumer.prototype._version = 3; - Object.defineProperty(IndexedSourceMapConsumer.prototype, "sources", { - get: function() { - var sources = []; - for (var i = 0; i < this._sections.length; i++) { - for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { - sources.push(this._sections[i].consumer.sources[j]); - } - } - return sources; - } - }); - IndexedSourceMapConsumer.prototype.originalPositionFor = function IndexedSourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, "line"), - generatedColumn: util.getArg(aArgs, "column") - }; - var sectionIndex = binarySearch.search( - needle, - this._sections, - function(needle2, section2) { - var cmp = needle2.generatedLine - section2.generatedOffset.generatedLine; - if (cmp) { - return cmp; - } - return needle2.generatedColumn - section2.generatedOffset.generatedColumn; - } - ); - var section = this._sections[sectionIndex]; - if (!section) { - return { - source: null, - line: null, - column: null, - name: null - }; - } - return section.consumer.originalPositionFor({ - line: needle.generatedLine - (section.generatedOffset.generatedLine - 1), - column: needle.generatedColumn - (section.generatedOffset.generatedLine === needle.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0), - bias: aArgs.bias - }); - }; - IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = function IndexedSourceMapConsumer_hasContentsOfAllSources() { - return this._sections.every(function(s) { - return s.consumer.hasContentsOfAllSources(); - }); - }; - IndexedSourceMapConsumer.prototype.sourceContentFor = function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var content = section.consumer.sourceContentFor(aSource, true); - if (content) { - return content; - } - } - if (nullOnMissing) { - return null; - } else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - IndexedSourceMapConsumer.prototype.generatedPositionFor = function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - if (section.consumer._findSourceIndex(util.getArg(aArgs, "source")) === -1) { - continue; - } - var generatedPosition = section.consumer.generatedPositionFor(aArgs); - if (generatedPosition) { - var ret = { - line: generatedPosition.line + (section.generatedOffset.generatedLine - 1), - column: generatedPosition.column + (section.generatedOffset.generatedLine === generatedPosition.line ? section.generatedOffset.generatedColumn - 1 : 0) - }; - return ret; - } - } - return { - line: null, - column: null - }; - }; - IndexedSourceMapConsumer.prototype._parseMappings = function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { - this.__generatedMappings = []; - this.__originalMappings = []; - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var sectionMappings = section.consumer._generatedMappings; - for (var j = 0; j < sectionMappings.length; j++) { - var mapping = sectionMappings[j]; - var source = section.consumer._sources.at(mapping.source); - source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); - this._sources.add(source); - source = this._sources.indexOf(source); - var name = null; - if (mapping.name) { - name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - } - var adjustedMapping = { - source, - generatedLine: mapping.generatedLine + (section.generatedOffset.generatedLine - 1), - generatedColumn: mapping.generatedColumn + (section.generatedOffset.generatedLine === mapping.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0), - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name - }; - this.__generatedMappings.push(adjustedMapping); - if (typeof adjustedMapping.originalLine === "number") { - this.__originalMappings.push(adjustedMapping); - } - } - } - quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); - quickSort(this.__originalMappings, util.compareByOriginalPositions); - }; - exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; - } -}); - -// node_modules/source-map/lib/source-node.js -var require_source_node = __commonJS({ - "node_modules/source-map/lib/source-node.js"(exports) { - var SourceMapGenerator = require_source_map_generator().SourceMapGenerator; - var util = require_util(); - var REGEX_NEWLINE = /(\r?\n)/; - var NEWLINE_CODE = 10; - var isSourceNode = "$$$isSourceNode$$$"; - function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - this[isSourceNode] = true; - if (aChunks != null) this.add(aChunks); - } - SourceNode.fromStringWithSourceMap = function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - var node = new SourceNode(); - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var remainingLinesIndex = 0; - var shiftNextLine = function() { - var lineContents = getNextLine(); - var newLine = getNextLine() || ""; - return lineContents + newLine; - function getNextLine() { - return remainingLinesIndex < remainingLines.length ? remainingLines[remainingLinesIndex++] : void 0; - } - }; - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - var lastMapping = null; - aSourceMapConsumer.eachMapping(function(mapping) { - if (lastMapping !== null) { - if (lastGeneratedLine < mapping.generatedLine) { - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - } else { - var nextLine = remainingLines[remainingLinesIndex] || ""; - var code = nextLine.substr(0, mapping.generatedColumn - lastGeneratedColumn); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - lastMapping = mapping; - return; - } - } - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[remainingLinesIndex] || ""; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - if (remainingLinesIndex < remainingLines.length) { - if (lastMapping) { - addMappingWithCode(lastMapping, shiftNextLine()); - } - node.add(remainingLines.splice(remainingLinesIndex).join("")); - } - aSourceMapConsumer.sources.forEach(function(sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - return node; - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === void 0) { - node.add(code); - } else { - var source = aRelativePath ? util.join(aRelativePath, mapping.source) : mapping.source; - node.add(new SourceNode( - mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name - )); - } - } - }; - SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function(chunk) { - this.add(chunk); - }, this); - } else if (aChunk[isSourceNode] || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length - 1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } else if (aChunk[isSourceNode] || typeof aChunk === "string") { - this.children.unshift(aChunk); - } else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk[isSourceNode]) { - chunk.walk(aFn); - } else { - if (chunk !== "") { - aFn(chunk, { - source: this.source, - line: this.line, - column: this.column, - name: this.name - }); - } - } - } - }; - SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len - 1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; - }; - SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild[isSourceNode]) { - lastChild.replaceRight(aPattern, aReplacement); - } else if (typeof lastChild === "string") { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } else { - this.children.push("".replace(aPattern, aReplacement)); - } - return this; - }; - SourceNode.prototype.setSourceContent = function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - SourceNode.prototype.walkSourceContents = function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i][isSourceNode]) { - this.children[i].walkSourceContents(aFn); - } - } - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function(chunk) { - str += chunk; - }); - return str; - }; - SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function(chunk, original) { - generated.code += chunk; - if (original.source !== null && original.line !== null && original.column !== null) { - if (lastOriginalSource !== original.source || lastOriginalLine !== original.line || lastOriginalColumn !== original.column || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - for (var idx = 0, length = chunk.length; idx < length; idx++) { - if (chunk.charCodeAt(idx) === NEWLINE_CODE) { - generated.line++; - generated.column = 0; - if (idx + 1 === length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column++; - } - } - }); - this.walkSourceContents(function(sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - return { code: generated.code, map }; - }; - exports.SourceNode = SourceNode; - } -}); - -// node_modules/source-map/source-map.js -var require_source_map = __commonJS({ - "node_modules/source-map/source-map.js"(exports) { - exports.SourceMapGenerator = require_source_map_generator().SourceMapGenerator; - exports.SourceMapConsumer = require_source_map_consumer().SourceMapConsumer; - exports.SourceNode = require_source_node().SourceNode; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/compiler/code-gen.js -var require_code_gen = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/compiler/code-gen.js"(exports, module) { - "use strict"; - exports.__esModule = true; - var _utils = require_utils(); - var SourceNode = void 0; - try { - if (typeof define !== "function" || !define.amd) { - SourceMap = require_source_map(); - SourceNode = SourceMap.SourceNode; - } - } catch (err) { - } - var SourceMap; - if (!SourceNode) { - SourceNode = function(line, column, srcFile, chunks) { - this.src = ""; - if (chunks) { - this.add(chunks); - } - }; - SourceNode.prototype = { - add: function add(chunks) { - if (_utils.isArray(chunks)) { - chunks = chunks.join(""); - } - this.src += chunks; - }, - prepend: function prepend(chunks) { - if (_utils.isArray(chunks)) { - chunks = chunks.join(""); - } - this.src = chunks + this.src; - }, - toStringWithSourceMap: function toStringWithSourceMap() { - return { code: this.toString() }; - }, - toString: function toString() { - return this.src; - } - }; - } - function castChunk(chunk, codeGen, loc) { - if (_utils.isArray(chunk)) { - var ret = []; - for (var i = 0, len = chunk.length; i < len; i++) { - ret.push(codeGen.wrap(chunk[i], loc)); - } - return ret; - } else if (typeof chunk === "boolean" || typeof chunk === "number") { - return chunk + ""; - } - return chunk; - } - function CodeGen(srcFile) { - this.srcFile = srcFile; - this.source = []; - } - CodeGen.prototype = { - isEmpty: function isEmpty() { - return !this.source.length; - }, - prepend: function prepend(source, loc) { - this.source.unshift(this.wrap(source, loc)); - }, - push: function push(source, loc) { - this.source.push(this.wrap(source, loc)); - }, - merge: function merge() { - var source = this.empty(); - this.each(function(line) { - source.add([" ", line, "\n"]); - }); - return source; - }, - each: function each(iter) { - for (var i = 0, len = this.source.length; i < len; i++) { - iter(this.source[i]); - } - }, - empty: function empty() { - var loc = this.currentLocation || { start: {} }; - return new SourceNode(loc.start.line, loc.start.column, this.srcFile); - }, - wrap: function wrap(chunk) { - var loc = arguments.length <= 1 || arguments[1] === void 0 ? this.currentLocation || { start: {} } : arguments[1]; - if (chunk instanceof SourceNode) { - return chunk; - } - chunk = castChunk(chunk, this, loc); - return new SourceNode(loc.start.line, loc.start.column, this.srcFile, chunk); - }, - functionCall: function functionCall(fn, type, params) { - params = this.generateList(params); - return this.wrap([fn, type ? "." + type + "(" : "(", params, ")"]); - }, - quotedString: function quotedString(str) { - return '"' + (str + "").replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029") + '"'; - }, - objectLiteral: function objectLiteral(obj) { - var _this = this; - var pairs = []; - Object.keys(obj).forEach(function(key) { - var value = castChunk(obj[key], _this); - if (value !== "undefined") { - pairs.push([_this.quotedString(key), ":", value]); - } - }); - var ret = this.generateList(pairs); - ret.prepend("{"); - ret.add("}"); - return ret; - }, - generateList: function generateList(entries) { - var ret = this.empty(); - for (var i = 0, len = entries.length; i < len; i++) { - if (i) { - ret.add(","); - } - ret.add(castChunk(entries[i], this)); - } - return ret; - }, - generateArray: function generateArray(entries) { - var ret = this.generateList(entries); - ret.prepend("["); - ret.add("]"); - return ret; - } - }; - exports["default"] = CodeGen; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js -var require_javascript_compiler = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _base = require_base(); - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - var _utils = require_utils(); - var _codeGen = require_code_gen(); - var _codeGen2 = _interopRequireDefault(_codeGen); - function Literal(value) { - this.value = value; - } - function JavaScriptCompiler() { - } - JavaScriptCompiler.prototype = { - // PUBLIC API: You can override these methods in a subclass to provide - // alternative compiled forms for name lookup and buffering semantics - nameLookup: function nameLookup(parent, name) { - return this.internalNameLookup(parent, name); - }, - depthedLookup: function depthedLookup(name) { - return [this.aliasable("container.lookup"), "(depths, ", JSON.stringify(name), ")"]; - }, - compilerInfo: function compilerInfo() { - var revision = _base.COMPILER_REVISION, versions = _base.REVISION_CHANGES[revision]; - return [revision, versions]; - }, - appendToBuffer: function appendToBuffer(source, location, explicit) { - if (!_utils.isArray(source)) { - source = [source]; - } - source = this.source.wrap(source, location); - if (this.environment.isSimple) { - return ["return ", source, ";"]; - } else if (explicit) { - return ["buffer += ", source, ";"]; - } else { - source.appendToBuffer = true; - return source; - } - }, - initializeBuffer: function initializeBuffer() { - return this.quotedString(""); - }, - // END PUBLIC API - internalNameLookup: function internalNameLookup(parent, name) { - this.lookupPropertyFunctionIsUsed = true; - return ["lookupProperty(", parent, ",", JSON.stringify(name), ")"]; - }, - lookupPropertyFunctionIsUsed: false, - compile: function compile(environment, options, context, asObject) { - this.environment = environment; - this.options = options; - this.stringParams = this.options.stringParams; - this.trackIds = this.options.trackIds; - this.precompile = !asObject; - this.name = this.environment.name; - this.isChild = !!context; - this.context = context || { - decorators: [], - programs: [], - environments: [] - }; - this.preamble(); - this.stackSlot = 0; - this.stackVars = []; - this.aliases = {}; - this.registers = { list: [] }; - this.hashes = []; - this.compileStack = []; - this.inlineStack = []; - this.blockParams = []; - this.compileChildren(environment, options); - this.useDepths = this.useDepths || environment.useDepths || environment.useDecorators || this.options.compat; - this.useBlockParams = this.useBlockParams || environment.useBlockParams; - var opcodes = environment.opcodes, opcode = void 0, firstLoc = void 0, i = void 0, l = void 0; - for (i = 0, l = opcodes.length; i < l; i++) { - opcode = opcodes[i]; - this.source.currentLocation = opcode.loc; - firstLoc = firstLoc || opcode.loc; - this[opcode.opcode].apply(this, opcode.args); - } - this.source.currentLocation = firstLoc; - this.pushSource(""); - if (this.stackSlot || this.inlineStack.length || this.compileStack.length) { - throw new _exception2["default"]("Compile completed with content left on stack"); - } - if (!this.decorators.isEmpty()) { - this.useDecorators = true; - this.decorators.prepend(["var decorators = container.decorators, ", this.lookupPropertyFunctionVarDeclaration(), ";\n"]); - this.decorators.push("return fn;"); - if (asObject) { - this.decorators = Function.apply(this, ["fn", "props", "container", "depth0", "data", "blockParams", "depths", this.decorators.merge()]); - } else { - this.decorators.prepend("function(fn, props, container, depth0, data, blockParams, depths) {\n"); - this.decorators.push("}\n"); - this.decorators = this.decorators.merge(); - } - } else { - this.decorators = void 0; - } - var fn = this.createFunctionContext(asObject); - if (!this.isChild) { - var ret = { - compiler: this.compilerInfo(), - main: fn - }; - if (this.decorators) { - ret.main_d = this.decorators; - ret.useDecorators = true; - } - var _context = this.context; - var programs = _context.programs; - var decorators = _context.decorators; - for (i = 0, l = programs.length; i < l; i++) { - if (programs[i]) { - ret[i] = programs[i]; - if (decorators[i]) { - ret[i + "_d"] = decorators[i]; - ret.useDecorators = true; - } - } - } - if (this.environment.usePartial) { - ret.usePartial = true; - } - if (this.options.data) { - ret.useData = true; - } - if (this.useDepths) { - ret.useDepths = true; - } - if (this.useBlockParams) { - ret.useBlockParams = true; - } - if (this.options.compat) { - ret.compat = true; - } - if (!asObject) { - ret.compiler = JSON.stringify(ret.compiler); - this.source.currentLocation = { start: { line: 1, column: 0 } }; - ret = this.objectLiteral(ret); - if (options.srcName) { - ret = ret.toStringWithSourceMap({ file: options.destName }); - ret.map = ret.map && ret.map.toString(); - } else { - ret = ret.toString(); - } - } else { - ret.compilerOptions = this.options; - } - return ret; - } else { - return fn; - } - }, - preamble: function preamble() { - this.lastContext = 0; - this.source = new _codeGen2["default"](this.options.srcName); - this.decorators = new _codeGen2["default"](this.options.srcName); - }, - createFunctionContext: function createFunctionContext(asObject) { - var _this = this; - var varDeclarations = ""; - var locals = this.stackVars.concat(this.registers.list); - if (locals.length > 0) { - varDeclarations += ", " + locals.join(", "); - } - var aliasCount = 0; - Object.keys(this.aliases).forEach(function(alias) { - var node = _this.aliases[alias]; - if (node.children && node.referenceCount > 1) { - varDeclarations += ", alias" + ++aliasCount + "=" + alias; - node.children[0] = "alias" + aliasCount; - } - }); - if (this.lookupPropertyFunctionIsUsed) { - varDeclarations += ", " + this.lookupPropertyFunctionVarDeclaration(); - } - var params = ["container", "depth0", "helpers", "partials", "data"]; - if (this.useBlockParams || this.useDepths) { - params.push("blockParams"); - } - if (this.useDepths) { - params.push("depths"); - } - var source = this.mergeSource(varDeclarations); - if (asObject) { - params.push(source); - return Function.apply(this, params); - } else { - return this.source.wrap(["function(", params.join(","), ") {\n ", source, "}"]); - } - }, - mergeSource: function mergeSource(varDeclarations) { - var isSimple = this.environment.isSimple, appendOnly = !this.forceBuffer, appendFirst = void 0, sourceSeen = void 0, bufferStart = void 0, bufferEnd = void 0; - this.source.each(function(line) { - if (line.appendToBuffer) { - if (bufferStart) { - line.prepend(" + "); - } else { - bufferStart = line; - } - bufferEnd = line; - } else { - if (bufferStart) { - if (!sourceSeen) { - appendFirst = true; - } else { - bufferStart.prepend("buffer += "); - } - bufferEnd.add(";"); - bufferStart = bufferEnd = void 0; - } - sourceSeen = true; - if (!isSimple) { - appendOnly = false; - } - } - }); - if (appendOnly) { - if (bufferStart) { - bufferStart.prepend("return "); - bufferEnd.add(";"); - } else if (!sourceSeen) { - this.source.push('return "";'); - } - } else { - varDeclarations += ", buffer = " + (appendFirst ? "" : this.initializeBuffer()); - if (bufferStart) { - bufferStart.prepend("return buffer + "); - bufferEnd.add(";"); - } else { - this.source.push("return buffer;"); - } - } - if (varDeclarations) { - this.source.prepend("var " + varDeclarations.substring(2) + (appendFirst ? "" : ";\n")); - } - return this.source.merge(); - }, - lookupPropertyFunctionVarDeclaration: function lookupPropertyFunctionVarDeclaration() { - return "\n lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }\n ".trim(); - }, - // [blockValue] - // - // On stack, before: hash, inverse, program, value - // On stack, after: return value of blockHelperMissing - // - // The purpose of this opcode is to take a block of the form - // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and - // replace it on the stack with the result of properly - // invoking blockHelperMissing. - blockValue: function blockValue(name) { - var blockHelperMissing = this.aliasable("container.hooks.blockHelperMissing"), params = [this.contextName(0)]; - this.setupHelperArgs(name, 0, params); - var blockName = this.popStack(); - params.splice(1, 0, blockName); - this.push(this.source.functionCall(blockHelperMissing, "call", params)); - }, - // [ambiguousBlockValue] - // - // On stack, before: hash, inverse, program, value - // Compiler value, before: lastHelper=value of last found helper, if any - // On stack, after, if no lastHelper: same as [blockValue] - // On stack, after, if lastHelper: value - ambiguousBlockValue: function ambiguousBlockValue() { - var blockHelperMissing = this.aliasable("container.hooks.blockHelperMissing"), params = [this.contextName(0)]; - this.setupHelperArgs("", 0, params, true); - this.flushInline(); - var current = this.topStack(); - params.splice(1, 0, current); - this.pushSource(["if (!", this.lastHelper, ") { ", current, " = ", this.source.functionCall(blockHelperMissing, "call", params), "}"]); - }, - // [appendContent] - // - // On stack, before: ... - // On stack, after: ... - // - // Appends the string value of `content` to the current buffer - appendContent: function appendContent(content) { - if (this.pendingContent) { - content = this.pendingContent + content; - } else { - this.pendingLocation = this.source.currentLocation; - } - this.pendingContent = content; - }, - // [append] - // - // On stack, before: value, ... - // On stack, after: ... - // - // Coerces `value` to a String and appends it to the current buffer. - // - // If `value` is truthy, or 0, it is coerced into a string and appended - // Otherwise, the empty string is appended - append: function append() { - if (this.isInline()) { - this.replaceStack(function(current) { - return [" != null ? ", current, ' : ""']; - }); - this.pushSource(this.appendToBuffer(this.popStack())); - } else { - var local = this.popStack(); - this.pushSource(["if (", local, " != null) { ", this.appendToBuffer(local, void 0, true), " }"]); - if (this.environment.isSimple) { - this.pushSource(["else { ", this.appendToBuffer("''", void 0, true), " }"]); - } - } - }, - // [appendEscaped] - // - // On stack, before: value, ... - // On stack, after: ... - // - // Escape `value` and append it to the buffer - appendEscaped: function appendEscaped() { - this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"), "(", this.popStack(), ")"])); - }, - // [getContext] - // - // On stack, before: ... - // On stack, after: ... - // Compiler value, after: lastContext=depth - // - // Set the value of the `lastContext` compiler value to the depth - getContext: function getContext(depth) { - this.lastContext = depth; - }, - // [pushContext] - // - // On stack, before: ... - // On stack, after: currentContext, ... - // - // Pushes the value of the current context onto the stack. - pushContext: function pushContext() { - this.pushStackLiteral(this.contextName(this.lastContext)); - }, - // [lookupOnContext] - // - // On stack, before: ... - // On stack, after: currentContext[name], ... - // - // Looks up the value of `name` on the current context and pushes - // it onto the stack. - lookupOnContext: function lookupOnContext(parts, falsy, strict, scoped) { - var i = 0; - if (!scoped && this.options.compat && !this.lastContext) { - this.push(this.depthedLookup(parts[i++])); - } else { - this.pushContext(); - } - this.resolvePath("context", parts, i, falsy, strict); - }, - // [lookupBlockParam] - // - // On stack, before: ... - // On stack, after: blockParam[name], ... - // - // Looks up the value of `parts` on the given block param and pushes - // it onto the stack. - lookupBlockParam: function lookupBlockParam(blockParamId, parts) { - this.useBlockParams = true; - this.push(["blockParams[", blockParamId[0], "][", blockParamId[1], "]"]); - this.resolvePath("context", parts, 1); - }, - // [lookupData] - // - // On stack, before: ... - // On stack, after: data, ... - // - // Push the data lookup operator - lookupData: function lookupData(depth, parts, strict) { - if (!depth) { - this.pushStackLiteral("data"); - } else { - this.pushStackLiteral("container.data(data, " + depth + ")"); - } - this.resolvePath("data", parts, 0, true, strict); - }, - resolvePath: function resolvePath(type, parts, i, falsy, strict) { - var _this2 = this; - if (this.options.strict || this.options.assumeObjects) { - this.push(strictLookup(this.options.strict && strict, this, parts, i, type)); - return; - } - var len = parts.length; - for (; i < len; i++) { - this.replaceStack(function(current) { - var lookup = _this2.nameLookup(current, parts[i], type); - if (!falsy) { - return [" != null ? ", lookup, " : ", current]; - } else { - return [" && ", lookup]; - } - }); - } - }, - // [resolvePossibleLambda] - // - // On stack, before: value, ... - // On stack, after: resolved value, ... - // - // If the `value` is a lambda, replace it on the stack by - // the return value of the lambda - resolvePossibleLambda: function resolvePossibleLambda() { - this.push([this.aliasable("container.lambda"), "(", this.popStack(), ", ", this.contextName(0), ")"]); - }, - // [pushStringParam] - // - // On stack, before: ... - // On stack, after: string, currentContext, ... - // - // This opcode is designed for use in string mode, which - // provides the string value of a parameter along with its - // depth rather than resolving it immediately. - pushStringParam: function pushStringParam(string, type) { - this.pushContext(); - this.pushString(type); - if (type !== "SubExpression") { - if (typeof string === "string") { - this.pushString(string); - } else { - this.pushStackLiteral(string); - } - } - }, - emptyHash: function emptyHash(omitEmpty) { - if (this.trackIds) { - this.push("{}"); - } - if (this.stringParams) { - this.push("{}"); - this.push("{}"); - } - this.pushStackLiteral(omitEmpty ? "undefined" : "{}"); - }, - pushHash: function pushHash() { - if (this.hash) { - this.hashes.push(this.hash); - } - this.hash = { values: {}, types: [], contexts: [], ids: [] }; - }, - popHash: function popHash() { - var hash = this.hash; - this.hash = this.hashes.pop(); - if (this.trackIds) { - this.push(this.objectLiteral(hash.ids)); - } - if (this.stringParams) { - this.push(this.objectLiteral(hash.contexts)); - this.push(this.objectLiteral(hash.types)); - } - this.push(this.objectLiteral(hash.values)); - }, - // [pushString] - // - // On stack, before: ... - // On stack, after: quotedString(string), ... - // - // Push a quoted version of `string` onto the stack - pushString: function pushString(string) { - this.pushStackLiteral(this.quotedString(string)); - }, - // [pushLiteral] - // - // On stack, before: ... - // On stack, after: value, ... - // - // Pushes a value onto the stack. This operation prevents - // the compiler from creating a temporary variable to hold - // it. - pushLiteral: function pushLiteral(value) { - this.pushStackLiteral(value); - }, - // [pushProgram] - // - // On stack, before: ... - // On stack, after: program(guid), ... - // - // Push a program expression onto the stack. This takes - // a compile-time guid and converts it into a runtime-accessible - // expression. - pushProgram: function pushProgram(guid) { - if (guid != null) { - this.pushStackLiteral(this.programExpression(guid)); - } else { - this.pushStackLiteral(null); - } - }, - // [registerDecorator] - // - // On stack, before: hash, program, params..., ... - // On stack, after: ... - // - // Pops off the decorator's parameters, invokes the decorator, - // and inserts the decorator into the decorators list. - registerDecorator: function registerDecorator(paramSize, name) { - var foundDecorator = this.nameLookup("decorators", name, "decorator"), options = this.setupHelperArgs(name, paramSize); - this.decorators.push(["fn = ", this.decorators.functionCall(foundDecorator, "", ["fn", "props", "container", options]), " || fn;"]); - }, - // [invokeHelper] - // - // On stack, before: hash, inverse, program, params..., ... - // On stack, after: result of helper invocation - // - // Pops off the helper's parameters, invokes the helper, - // and pushes the helper's return value onto the stack. - // - // If the helper is not found, `helperMissing` is called. - invokeHelper: function invokeHelper(paramSize, name, isSimple) { - var nonHelper = this.popStack(), helper = this.setupHelper(paramSize, name); - var possibleFunctionCalls = []; - if (isSimple) { - possibleFunctionCalls.push(helper.name); - } - possibleFunctionCalls.push(nonHelper); - if (!this.options.strict) { - possibleFunctionCalls.push(this.aliasable("container.hooks.helperMissing")); - } - var functionLookupCode = ["(", this.itemsSeparatedBy(possibleFunctionCalls, "||"), ")"]; - var functionCall = this.source.functionCall(functionLookupCode, "call", helper.callParams); - this.push(functionCall); - }, - itemsSeparatedBy: function itemsSeparatedBy(items, separator) { - var result = []; - result.push(items[0]); - for (var i = 1; i < items.length; i++) { - result.push(separator, items[i]); - } - return result; - }, - // [invokeKnownHelper] - // - // On stack, before: hash, inverse, program, params..., ... - // On stack, after: result of helper invocation - // - // This operation is used when the helper is known to exist, - // so a `helperMissing` fallback is not required. - invokeKnownHelper: function invokeKnownHelper(paramSize, name) { - var helper = this.setupHelper(paramSize, name); - this.push(this.source.functionCall(helper.name, "call", helper.callParams)); - }, - // [invokeAmbiguous] - // - // On stack, before: hash, inverse, program, params..., ... - // On stack, after: result of disambiguation - // - // This operation is used when an expression like `{{foo}}` - // is provided, but we don't know at compile-time whether it - // is a helper or a path. - // - // This operation emits more code than the other options, - // and can be avoided by passing the `knownHelpers` and - // `knownHelpersOnly` flags at compile-time. - invokeAmbiguous: function invokeAmbiguous(name, helperCall) { - this.useRegister("helper"); - var nonHelper = this.popStack(); - this.emptyHash(); - var helper = this.setupHelper(0, name, helperCall); - var helperName = this.lastHelper = this.nameLookup("helpers", name, "helper"); - var lookup = ["(", "(helper = ", helperName, " || ", nonHelper, ")"]; - if (!this.options.strict) { - lookup[0] = "(helper = "; - lookup.push(" != null ? helper : ", this.aliasable("container.hooks.helperMissing")); - } - this.push(["(", lookup, helper.paramsInit ? ["),(", helper.paramsInit] : [], "),", "(typeof helper === ", this.aliasable('"function"'), " ? ", this.source.functionCall("helper", "call", helper.callParams), " : helper))"]); - }, - // [invokePartial] - // - // On stack, before: context, ... - // On stack after: result of partial invocation - // - // This operation pops off a context, invokes a partial with that context, - // and pushes the result of the invocation back. - invokePartial: function invokePartial(isDynamic, name, indent) { - var params = [], options = this.setupParams(name, 1, params); - if (isDynamic) { - name = this.popStack(); - delete options.name; - } - if (indent) { - options.indent = JSON.stringify(indent); - } - options.helpers = "helpers"; - options.partials = "partials"; - options.decorators = "container.decorators"; - if (!isDynamic) { - params.unshift(this.nameLookup("partials", name, "partial")); - } else { - params.unshift(name); - } - if (this.options.compat) { - options.depths = "depths"; - } - options = this.objectLiteral(options); - params.push(options); - this.push(this.source.functionCall("container.invokePartial", "", params)); - }, - // [assignToHash] - // - // On stack, before: value, ..., hash, ... - // On stack, after: ..., hash, ... - // - // Pops a value off the stack and assigns it to the current hash - assignToHash: function assignToHash(key) { - var value = this.popStack(), context = void 0, type = void 0, id = void 0; - if (this.trackIds) { - id = this.popStack(); - } - if (this.stringParams) { - type = this.popStack(); - context = this.popStack(); - } - var hash = this.hash; - if (context) { - hash.contexts[key] = context; - } - if (type) { - hash.types[key] = type; - } - if (id) { - hash.ids[key] = id; - } - hash.values[key] = value; - }, - pushId: function pushId(type, name, child) { - if (type === "BlockParam") { - this.pushStackLiteral("blockParams[" + name[0] + "].path[" + name[1] + "]" + (child ? " + " + JSON.stringify("." + child) : "")); - } else if (type === "PathExpression") { - this.pushString(name); - } else if (type === "SubExpression") { - this.pushStackLiteral("true"); - } else { - this.pushStackLiteral("null"); - } - }, - // HELPERS - compiler: JavaScriptCompiler, - compileChildren: function compileChildren(environment, options) { - var children = environment.children, child = void 0, compiler = void 0; - for (var i = 0, l = children.length; i < l; i++) { - child = children[i]; - compiler = new this.compiler(); - var existing = this.matchExistingProgram(child); - if (existing == null) { - this.context.programs.push(""); - var index = this.context.programs.length; - child.index = index; - child.name = "program" + index; - this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile); - this.context.decorators[index] = compiler.decorators; - this.context.environments[index] = child; - this.useDepths = this.useDepths || compiler.useDepths; - this.useBlockParams = this.useBlockParams || compiler.useBlockParams; - child.useDepths = this.useDepths; - child.useBlockParams = this.useBlockParams; - } else { - child.index = existing.index; - child.name = "program" + existing.index; - this.useDepths = this.useDepths || existing.useDepths; - this.useBlockParams = this.useBlockParams || existing.useBlockParams; - } - } - }, - matchExistingProgram: function matchExistingProgram(child) { - for (var i = 0, len = this.context.environments.length; i < len; i++) { - var environment = this.context.environments[i]; - if (environment && environment.equals(child)) { - return environment; - } - } - }, - programExpression: function programExpression(guid) { - var child = this.environment.children[guid], programParams = [child.index, "data", child.blockParams]; - if (this.useBlockParams || this.useDepths) { - programParams.push("blockParams"); - } - if (this.useDepths) { - programParams.push("depths"); - } - return "container.program(" + programParams.join(", ") + ")"; - }, - useRegister: function useRegister(name) { - if (!this.registers[name]) { - this.registers[name] = true; - this.registers.list.push(name); - } - }, - push: function push(expr) { - if (!(expr instanceof Literal)) { - expr = this.source.wrap(expr); - } - this.inlineStack.push(expr); - return expr; - }, - pushStackLiteral: function pushStackLiteral(item) { - this.push(new Literal(item)); - }, - pushSource: function pushSource(source) { - if (this.pendingContent) { - this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent), this.pendingLocation)); - this.pendingContent = void 0; - } - if (source) { - this.source.push(source); - } - }, - replaceStack: function replaceStack(callback) { - var prefix = ["("], stack = void 0, createdStack = void 0, usedLiteral = void 0; - if (!this.isInline()) { - throw new _exception2["default"]("replaceStack on non-inline"); - } - var top = this.popStack(true); - if (top instanceof Literal) { - stack = [top.value]; - prefix = ["(", stack]; - usedLiteral = true; - } else { - createdStack = true; - var _name = this.incrStack(); - prefix = ["((", this.push(_name), " = ", top, ")"]; - stack = this.topStack(); - } - var item = callback.call(this, stack); - if (!usedLiteral) { - this.popStack(); - } - if (createdStack) { - this.stackSlot--; - } - this.push(prefix.concat(item, ")")); - }, - incrStack: function incrStack() { - this.stackSlot++; - if (this.stackSlot > this.stackVars.length) { - this.stackVars.push("stack" + this.stackSlot); - } - return this.topStackName(); - }, - topStackName: function topStackName() { - return "stack" + this.stackSlot; - }, - flushInline: function flushInline() { - var inlineStack = this.inlineStack; - this.inlineStack = []; - for (var i = 0, len = inlineStack.length; i < len; i++) { - var entry = inlineStack[i]; - if (entry instanceof Literal) { - this.compileStack.push(entry); - } else { - var stack = this.incrStack(); - this.pushSource([stack, " = ", entry, ";"]); - this.compileStack.push(stack); - } - } - }, - isInline: function isInline() { - return this.inlineStack.length; - }, - popStack: function popStack(wrapped) { - var inline = this.isInline(), item = (inline ? this.inlineStack : this.compileStack).pop(); - if (!wrapped && item instanceof Literal) { - return item.value; - } else { - if (!inline) { - if (!this.stackSlot) { - throw new _exception2["default"]("Invalid stack pop"); - } - this.stackSlot--; - } - return item; - } - }, - topStack: function topStack() { - var stack = this.isInline() ? this.inlineStack : this.compileStack, item = stack[stack.length - 1]; - if (item instanceof Literal) { - return item.value; - } else { - return item; - } - }, - contextName: function contextName(context) { - if (this.useDepths && context) { - return "depths[" + context + "]"; - } else { - return "depth" + context; - } - }, - quotedString: function quotedString(str) { - return this.source.quotedString(str); - }, - objectLiteral: function objectLiteral(obj) { - return this.source.objectLiteral(obj); - }, - aliasable: function aliasable(name) { - var ret = this.aliases[name]; - if (ret) { - ret.referenceCount++; - return ret; - } - ret = this.aliases[name] = this.source.wrap(name); - ret.aliasable = true; - ret.referenceCount = 1; - return ret; - }, - setupHelper: function setupHelper(paramSize, name, blockHelper) { - var params = [], paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper); - var foundHelper = this.nameLookup("helpers", name, "helper"), callContext = this.aliasable(this.contextName(0) + " != null ? " + this.contextName(0) + " : (container.nullContext || {})"); - return { - params, - paramsInit, - name: foundHelper, - callParams: [callContext].concat(params) - }; - }, - setupParams: function setupParams(helper, paramSize, params) { - var options = {}, contexts = [], types = [], ids = [], objectArgs = !params, param = void 0; - if (objectArgs) { - params = []; - } - options.name = this.quotedString(helper); - options.hash = this.popStack(); - if (this.trackIds) { - options.hashIds = this.popStack(); - } - if (this.stringParams) { - options.hashTypes = this.popStack(); - options.hashContexts = this.popStack(); - } - var inverse = this.popStack(), program = this.popStack(); - if (program || inverse) { - options.fn = program || "container.noop"; - options.inverse = inverse || "container.noop"; - } - var i = paramSize; - while (i--) { - param = this.popStack(); - params[i] = param; - if (this.trackIds) { - ids[i] = this.popStack(); - } - if (this.stringParams) { - types[i] = this.popStack(); - contexts[i] = this.popStack(); - } - } - if (objectArgs) { - options.args = this.source.generateArray(params); - } - if (this.trackIds) { - options.ids = this.source.generateArray(ids); - } - if (this.stringParams) { - options.types = this.source.generateArray(types); - options.contexts = this.source.generateArray(contexts); - } - if (this.options.data) { - options.data = "data"; - } - if (this.useBlockParams) { - options.blockParams = "blockParams"; - } - return options; - }, - setupHelperArgs: function setupHelperArgs(helper, paramSize, params, useRegister) { - var options = this.setupParams(helper, paramSize, params); - options.loc = JSON.stringify(this.source.currentLocation); - options = this.objectLiteral(options); - if (useRegister) { - this.useRegister("options"); - params.push("options"); - return ["options=", options]; - } else if (params) { - params.push(options); - return ""; - } else { - return options; - } - } - }; - (function() { - var reservedWords = "break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "); - var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {}; - for (var i = 0, l = reservedWords.length; i < l; i++) { - compilerWords[reservedWords[i]] = true; - } - })(); - JavaScriptCompiler.isValidJavaScriptVariableName = function(name) { - return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name); - }; - function strictLookup(requireTerminal, compiler, parts, i, type) { - var stack = compiler.popStack(), len = parts.length; - if (requireTerminal) { - len--; - } - for (; i < len; i++) { - stack = compiler.nameLookup(stack, parts[i], type); - } - if (requireTerminal) { - return [compiler.aliasable("container.strict"), "(", stack, ", ", compiler.quotedString(parts[i]), ", ", JSON.stringify(compiler.source.currentLocation), " )"]; - } else { - return stack; - } - } - exports["default"] = JavaScriptCompiler; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars.js -var require_handlebars = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _handlebarsRuntime = require_handlebars_runtime(); - var _handlebarsRuntime2 = _interopRequireDefault(_handlebarsRuntime); - var _handlebarsCompilerAst = require_ast(); - var _handlebarsCompilerAst2 = _interopRequireDefault(_handlebarsCompilerAst); - var _handlebarsCompilerBase = require_base2(); - var _handlebarsCompilerCompiler = require_compiler(); - var _handlebarsCompilerJavascriptCompiler = require_javascript_compiler(); - var _handlebarsCompilerJavascriptCompiler2 = _interopRequireDefault(_handlebarsCompilerJavascriptCompiler); - var _handlebarsCompilerVisitor = require_visitor(); - var _handlebarsCompilerVisitor2 = _interopRequireDefault(_handlebarsCompilerVisitor); - var _handlebarsNoConflict = require_no_conflict(); - var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict); - var _create = _handlebarsRuntime2["default"].create; - function create() { - var hb = _create(); - hb.compile = function(input, options) { - return _handlebarsCompilerCompiler.compile(input, options, hb); - }; - hb.precompile = function(input, options) { - return _handlebarsCompilerCompiler.precompile(input, options, hb); - }; - hb.AST = _handlebarsCompilerAst2["default"]; - hb.Compiler = _handlebarsCompilerCompiler.Compiler; - hb.JavaScriptCompiler = _handlebarsCompilerJavascriptCompiler2["default"]; - hb.Parser = _handlebarsCompilerBase.parser; - hb.parse = _handlebarsCompilerBase.parse; - hb.parseWithoutProcessing = _handlebarsCompilerBase.parseWithoutProcessing; - return hb; - } - var inst = create(); - inst.create = create; - _handlebarsNoConflict2["default"](inst); - inst.Visitor = _handlebarsCompilerVisitor2["default"]; - inst["default"] = inst; - exports["default"] = inst; - module.exports = exports["default"]; - } -}); - -// node_modules/yomitan-handlebars/src/handlebars.ts -var import_handlebars2 = __toESM(require_handlebars()); - -// node_modules/yomitan-handlebars/src/visitor.ts -var import_handlebars = __toESM(require_handlebars()); -var import_proto_access = __toESM(require_proto_access()); -var import_ast = __toESM(require_ast()); -var import_utils2 = __toESM(require_utils()); -var import_helpers = __toESM(require_helpers()); - -// node_modules/yomitan-handlebars/src/symbols.ts -var kHelper = Symbol("helper"); -var kAmbiguous = Symbol("ambiguous"); -var kSimple = Symbol("simple"); - -// node_modules/yomitan-handlebars/src/utils.ts -var import_utils = __toESM(require_utils()); -function isBlock(node) { - return "program" in node || "inverse" in node; -} -function isDecorator(node) { - return node.type === "Decorator" || node.type === "DecoratorBlock"; -} -function toDecoratorOptions(options) { - delete options.lookupProperty; - return options; -} -function noop() { - return ""; -} -function initData(context, data) { - if (!data || !("root" in data)) { - data = data ? (0, import_utils.createFrame)(data) : {}; - data.root = context; - } - return data; -} -function transformLiteralToPath(node) { - const pathIsLiteral = "parts" in node.path === false; - if (pathIsLiteral) { - const literal = node.path; - const original = literal.original; - node.path = { - type: "PathExpression", - data: false, - depth: 0, - parts: [original + ""], - original: original + "", - loc: literal.loc - }; - } -} - -// node_modules/yomitan-handlebars/src/visitor.ts -var ElasticHandlebarsVisitor = class extends import_handlebars.default.Visitor { - // It's important that a given program node only has its decorators run once, we use this Map to keep track of them - constructor(env, input, options = {}) { - super(); - __publicField(this, "env"); - __publicField(this, "contexts", []); - __publicField(this, "output", []); - __publicField(this, "template"); - __publicField(this, "compileOptions"); - __publicField(this, "runtimeOptions"); - __publicField(this, "blockParamNames", []); - __publicField(this, "blockParamValues", []); - __publicField(this, "ast"); - __publicField(this, "container"); - __publicField(this, "defaultHelperOptions"); - __publicField(this, "processedRootDecorators", false); - // Root decorators should not have access to input arguments. This flag helps us detect them. - __publicField(this, "processedDecoratorsForProgram", /* @__PURE__ */ new Set()); - this.env = env; - if (typeof input !== "string" && input.type === "Program") { - this.ast = input; - } else { - this.template = input; - } - this.compileOptions = { data: true, ...options }; - this.compileOptions.knownHelpers = Object.assign( - /* @__PURE__ */ Object.create(null), - { - helperMissing: true, - blockHelperMissing: true, - each: true, - if: true, - unless: true, - with: true, - log: true, - lookup: true - }, - this.compileOptions.knownHelpers - ); - const protoAccessControl = (0, import_proto_access.createProtoAccessControl)({}); - const container = this.container = { - helpers: {}, - partials: {}, - decorators: {}, - strict(obj, name, loc) { - if (!obj || !(name in obj)) { - throw new import_handlebars.default.Exception('"' + name + '" not defined in ' + obj, { - loc - }); - } - return container.lookupProperty(obj, name); - }, - // this function is lifted from the handlebars source and slightly modified (lib/handlebars/runtime.js) - lookupProperty(parent, propertyName) { - const result = parent[propertyName]; - if (result == null) { - return result; - } - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return result; - } - if ((0, import_proto_access.resultIsAllowed)(result, protoAccessControl, propertyName)) { - return result; - } - return void 0; - }, - // this function is lifted from the handlebars source and slightly modified (lib/handlebars/runtime.js) - lambda(current, context) { - return typeof current === "function" ? current.call(context) : current; - }, - data(value, depth) { - while (value && depth--) { - value = value._parent; - } - return value; - }, - hooks: {} - }; - this.defaultHelperOptions = { - lookupProperty: container.lookupProperty - }; - } - render(context, options = {}) { - this.contexts = [context]; - this.output = []; - this.runtimeOptions = { ...options }; - this.container.helpers = { ...this.env.helpers, ...options.helpers }; - this.container.partials = { ...this.env.partials, ...options.partials }; - this.container.decorators = { - ...this.env.decorators, - ...options.decorators - }; - this.container.hooks = {}; - this.processedRootDecorators = false; - this.processedDecoratorsForProgram.clear(); - if (this.compileOptions.data) { - this.runtimeOptions.data = initData(context, this.runtimeOptions.data); - } - const keepHelperInHelpers = false; - (0, import_helpers.moveHelperToHooks)(this.container, "helperMissing", keepHelperInHelpers); - (0, import_helpers.moveHelperToHooks)(this.container, "blockHelperMissing", keepHelperInHelpers); - if (!this.ast) { - this.ast = import_handlebars.default.parse(this.template); - } - const defaultMain = (_context) => { - const prog = this.generateProgramFunction(this.ast); - return prog(_context, this.runtimeOptions); - }; - const main = this.processDecorators(this.ast, defaultMain); - this.processedRootDecorators = true; - const result = main(this.context, options); - if (main === defaultMain) { - this.output.push(result); - return this.output.join(""); - } else { - return result; - } - } - // ********************************************** // - // *** Visitor AST Traversal Functions *** // - // ********************************************** // - Program(program) { - this.blockParamNames.unshift(program.blockParams); - super.Program(program); - this.blockParamNames.shift(); - } - MustacheStatement(mustache) { - this.processStatementOrExpression(mustache); - } - BlockStatement(block) { - this.processStatementOrExpression(block); - } - PartialStatement(partial) { - this.invokePartial(partial); - } - PartialBlockStatement(partial) { - this.invokePartial(partial); - } - // This space is intentionally left blank: We want to override the Visitor - // class implementation of this method, but since we handle decorators - // separately before traversing the nodes, we just want to make this a no-op. - DecoratorBlock(decorator) { - } - // This space is intentionally left blank: We want to override the Visitor - // class implementation of this method, but since we handle decorators - // separately before traversing the nodes, we just want to make this a no-op. - Decorator(decorator) { - } - SubExpression(sexpr) { - this.processStatementOrExpression(sexpr); - } - PathExpression(path) { - const blockParamId = !path.depth && !import_ast.default.helpers.scopedId(path) && this.blockParamIndex(path.parts[0]); - let result; - if (blockParamId) { - result = this.lookupBlockParam(blockParamId, path); - } else if (path.data) { - result = this.lookupData(this.runtimeOptions.data, path); - } else { - result = this.resolvePath(this.contexts[path.depth], path); - } - this.output.push(result); - } - ContentStatement(content) { - this.output.push(content.value); - } - StringLiteral(string) { - this.output.push(string.value); - } - NumberLiteral(number) { - this.output.push(number.value); - } - BooleanLiteral(bool) { - this.output.push(bool.value); - } - UndefinedLiteral() { - this.output.push(void 0); - } - NullLiteral() { - this.output.push(null); - } - // ********************************************** // - // *** Visitor AST Helper Functions *** // - // ********************************************** // - /** - * Special code for decorators, since they have to be executed ahead of time (before the wrapping program). - * So we have to look into the program AST body and see if it contains any decorators that we have to process - * before we can finish processing of the wrapping program. - */ - processDecorators(program, prog) { - if (!this.processedDecoratorsForProgram.has(program)) { - this.processedDecoratorsForProgram.add(program); - const props = {}; - for (const node of program.body) { - if (isDecorator(node)) { - prog = this.processDecorator(node, prog, props); - } - } - } - return prog; - } - processDecorator(decorator, prog, props) { - const options = this.setupDecoratorOptions(decorator); - const result = this.container.lookupProperty( - this.container.decorators, - options.name - )(prog, props, this.container, options); - return Object.assign(result || prog, props); - } - processStatementOrExpression(node) { - transformLiteralToPath(node); - switch (this.classifyNode(node)) { - case kSimple: - this.processSimpleNode(node); - break; - case kHelper: - this.processHelperNode(node); - break; - case kAmbiguous: - this.processAmbiguousNode(node); - break; - } - } - // Liftet from lib/handlebars/compiler/compiler.js (original name: classifySexpr) - classifyNode(node) { - const isSimple = import_ast.default.helpers.simpleId(node.path); - const isBlockParam = isSimple && !!this.blockParamIndex(node.path.parts[0]); - let isHelper = !isBlockParam && import_ast.default.helpers.helperExpression(node); - let isEligible = !isBlockParam && (isHelper || isSimple); - if (isEligible && !isHelper) { - const name = node.path.parts[0]; - const options = this.compileOptions; - if (options.knownHelpers && options.knownHelpers[name]) { - isHelper = true; - } else if (options.knownHelpersOnly) { - isEligible = false; - } - } - if (isHelper) { - return kHelper; - } else if (isEligible) { - return kAmbiguous; - } else { - return kSimple; - } - } - // Liftet from lib/handlebars/compiler/compiler.js - blockParamIndex(name) { - for (let depth = 0, len = this.blockParamNames.length; depth < len; depth++) { - const blockParams = this.blockParamNames[depth]; - const param = blockParams && (0, import_utils2.indexOf)(blockParams, name); - if (blockParams && param >= 0) { - return [depth, param]; - } - } - } - // Looks up the value of `parts` on the given block param and pushes - // it onto the stack. - lookupBlockParam(blockParamId, path) { - const value = this.blockParamValues[blockParamId[0]][blockParamId[1]]; - return this.resolvePath(value, path, 1); - } - // Push the data lookup operator - lookupData(data, path) { - if (path.depth) { - data = this.container.data(data, path.depth); - } - return this.resolvePath(data, path); - } - pushToOutputWithEscapeCheck(result, node) { - if (!node.escaped || this.compileOptions.noEscape === true || typeof result !== "string") { - this.output.push(result); - } else { - this.output.push(import_handlebars.default.escapeExpression(result)); - } - } - processSimpleNode(node) { - const path = node.path; - path.strict = true; - const result = this.resolveNodes(path)[0]; - const lambdaResult = this.container.lambda(result, this.context); - if (isBlock(node)) { - this.blockValue(node, lambdaResult); - } else { - this.pushToOutputWithEscapeCheck(lambdaResult, node); - } - } - // The purpose of this opcode is to take a block of the form - // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and - // replace it on the stack with the result of properly - // invoking blockHelperMissing. - blockValue(node, value) { - const name = node.path.original; - const options = this.setupParams(node, name); - const result = this.container.hooks.blockHelperMissing.call(this.context, value, options); - this.output.push(result); - } - processHelperNode(node) { - const path = node.path; - const name = path.parts[0]; - if (this.compileOptions.knownHelpers && this.compileOptions.knownHelpers[name]) { - this.invokeKnownHelper(node); - } else if (this.compileOptions.knownHelpersOnly) { - throw new import_handlebars.default.Exception( - "You specified knownHelpersOnly, but used the unknown helper " + name, - node - ); - } else { - this.invokeHelper(node); - } - } - // This operation is used when the helper is known to exist, - // so a `helperMissing` fallback is not required. - invokeKnownHelper(node) { - const name = node.path.parts[0]; - const helper = this.setupHelper(node, name); - const result = helper.fn.call(helper.context, ...helper.params, helper.options); - this.pushToOutputWithEscapeCheck(result, node); - } - // Pops off the helper's parameters, invokes the helper, - // and pushes the helper's return value onto the stack. - // - // If the helper is not found, `helperMissing` is called. - invokeHelper(node) { - const path = node.path; - const name = path.original; - const isSimple = import_ast.default.helpers.simpleId(path); - const helper = this.setupHelper(node, name); - const loc = isSimple && helper.fn ? node.loc : path.loc; - helper.fn = isSimple && helper.fn || this.resolveNodes(path)[0]; - if (!helper.fn) { - if (this.compileOptions.strict) { - helper.fn = this.container.strict(helper.context, name, loc); - } else { - helper.fn = this.container.hooks.helperMissing; - } - } - const result = helper.fn.call(helper.context, ...helper.params, helper.options); - this.pushToOutputWithEscapeCheck(result, node); - } - invokePartial(partial) { - const { params } = partial; - if (params.length > 1) { - throw new import_handlebars.default.Exception( - `Unsupported number of partial arguments: ${params.length}`, - partial - ); - } - const isDynamic = partial.name.type === "SubExpression"; - const name = isDynamic ? this.resolveNodes(partial.name).join("") : partial.name.original; - const options = this.setupParams(partial, name); - options.helpers = this.container.helpers; - options.partials = this.container.partials; - options.decorators = this.container.decorators; - let partialBlock; - if ("fn" in options && options.fn !== noop) { - const { fn } = options; - const currentPartialBlock = options.data?.["partial-block"]; - options.data = (0, import_utils2.createFrame)(options.data); - partialBlock = options.data["partial-block"] = function partialBlockWrapper(context2, wrapperOptions = {}) { - wrapperOptions.data = (0, import_utils2.createFrame)(wrapperOptions.data); - wrapperOptions.data["partial-block"] = currentPartialBlock; - return fn(context2, wrapperOptions); - }; - if (fn.partials) { - options.partials = { ...options.partials, ...fn.partials }; - } - } - let context = {}; - if (params.length === 0 && !this.compileOptions.explicitPartialContext) { - context = this.context; - } else if (params.length === 1) { - context = this.resolveNodes(params[0])[0]; - } - if (Object.keys(options.hash).length > 0) { - context = Object.assign({}, context, options.hash); - } - const partialTemplate = this.container.partials[name] ?? partialBlock ?? // TypeScript note: We extend ResolvePartialOptions in our types.ts file - // to fix an error in the upstream type. When calling back into the - // upstream code, we just cast back to the non-extended type - import_handlebars.default.VM.resolvePartial( - void 0, - void 0, - options - ); - if (partialTemplate === void 0) { - throw new import_handlebars.default.Exception(`The partial ${name} could not be found`); - } - let render; - if (typeof partialTemplate === "string") { - render = this.env.compileAST(partialTemplate, this.compileOptions); - if (name in this.container.partials) { - this.container.partials[name] = render; - } - } else { - render = partialTemplate; - } - let result = render(context, options); - if ("indent" in partial) { - result = partial.indent + (this.compileOptions.preventIndent ? result : result.replace(/\n(?!$)/g, ` -${partial.indent}`)); - } - this.output.push(result); - } - processAmbiguousNode(node) { - const name = node.path.parts[0]; - const helper = this.setupHelper(node, name); - let { fn: helperFn } = helper; - const loc = helperFn ? node.loc : node.path.loc; - helperFn = helperFn ?? this.resolveNodes(node.path)[0]; - if (helperFn === void 0) { - if (this.compileOptions.strict) { - helperFn = this.container.strict(helper.context, name, loc); - } else { - helperFn = helper.context != null ? this.container.lookupProperty(helper.context, name) : helper.context; - if (helperFn == null) helperFn = this.container.hooks.helperMissing; - } - } - const helperResult = typeof helperFn === "function" ? helperFn.call(helper.context, ...helper.params, helper.options) : helperFn; - if (isBlock(node)) { - const result = helper.fn ? helperResult : this.container.hooks.blockHelperMissing.call(this.context, helperResult, helper.options); - if (result != null) { - this.output.push(result); - } - } else { - if (node.escaped === false || this.compileOptions.noEscape === true || typeof helperResult !== "string") { - this.output.push(helperResult); - } else { - this.output.push(import_handlebars.default.escapeExpression(helperResult)); - } - } - } - setupHelper(node, helperName) { - return { - fn: this.container.lookupProperty(this.container.helpers, helperName), - context: this.context, - params: this.resolveNodes(node.params), - options: this.setupParams(node, helperName) - }; - } - setupDecoratorOptions(decorator) { - const name = decorator.path.original; - const options = toDecoratorOptions(this.setupParams(decorator, name)); - if (decorator.params.length > 0) { - if (!this.processedRootDecorators) { - const context = this.contexts.shift(); - options.args = this.resolveNodes(decorator.params); - this.contexts.unshift(context); - } else { - options.args = this.resolveNodes(decorator.params); - } - } else { - options.args = []; - } - return options; - } - setupParams(node, name) { - const options = { - name, - hash: this.getHash(node), - data: this.runtimeOptions.data, - loc: { start: node.loc.start, end: node.loc.end }, - ...this.defaultHelperOptions - }; - if (isBlock(node)) { - options.fn = node.program ? this.processDecorators(node.program, this.generateProgramFunction(node.program)) : noop; - options.inverse = node.inverse ? this.processDecorators(node.inverse, this.generateProgramFunction(node.inverse)) : noop; - } - return options; - } - generateProgramFunction(program) { - if (!program) return noop; - const prog = (nextContext, runtimeOptions = {}) => { - runtimeOptions = { ...runtimeOptions }; - runtimeOptions.data = runtimeOptions.data || this.runtimeOptions.data; - if (runtimeOptions.blockParams) { - runtimeOptions.blockParams = runtimeOptions.blockParams.concat( - this.runtimeOptions.blockParams - ); - } - runtimeOptions.partials = runtimeOptions.partials || this.runtimeOptions.partials; - const tmpRuntimeOptions = this.runtimeOptions; - this.runtimeOptions = runtimeOptions; - const shiftContext = nextContext !== this.context; - if (shiftContext) this.contexts.unshift(nextContext); - this.blockParamValues.unshift(runtimeOptions.blockParams || []); - const result = this.resolveNodes(program).join(""); - this.blockParamValues.shift(); - if (shiftContext) this.contexts.shift(); - this.runtimeOptions = tmpRuntimeOptions; - return result; - }; - prog.blockParams = program.blockParams?.length ?? 0; - return prog; - } - getHash(statement) { - const result = {}; - if (!statement.hash) return result; - for (const { key, value } of statement.hash.pairs) { - result[key] = this.resolveNodes(value)[0]; - } - return result; - } - resolvePath(obj, path, index = 0) { - if (this.compileOptions.strict || this.compileOptions.assumeObjects) { - return this.strictLookup(obj, path); - } - for (; index < path.parts.length; index++) { - if (obj == null) return; - obj = this.container.lookupProperty(obj, path.parts[index]); - } - return obj; - } - strictLookup(obj, path) { - const requireTerminal = this.compileOptions.strict && path.strict; - const len = path.parts.length - (requireTerminal ? 1 : 0); - for (let i = 0; i < len; i++) { - obj = this.container.lookupProperty(obj, path.parts[i]); - } - if (requireTerminal) { - return this.container.strict(obj, path.parts[len], path.loc); - } else { - return obj; - } - } - resolveNodes(nodes) { - const currentOutput = this.output; - this.output = []; - if (Array.isArray(nodes)) { - this.acceptArray(nodes); - } else { - this.accept(nodes); - } - const result = this.output; - this.output = currentOutput; - return result; - } - get context() { - return this.contexts[0]; - } -}; - -// node_modules/yomitan-handlebars/src/handlebars.ts -var originalCreate = import_handlebars2.default.create; -import_handlebars2.default.create = function() { - const SandboxedHandlebars = originalCreate.call(import_handlebars2.default); - SandboxedHandlebars.compileAST = import_handlebars2.default.compileAST; - return SandboxedHandlebars; -}; -import_handlebars2.default.compileAST = function(input, options) { - if (input == null || typeof input !== "string" && input.type !== "Program") { - throw new import_handlebars2.default.Exception( - `You must pass a string or Handlebars AST to Handlebars.compileAST. You passed ${input}` - ); - } - const visitor = new ElasticHandlebarsVisitor(this ?? import_handlebars2.default, input, options); - return (context, runtimeOptions) => visitor.render(context, runtimeOptions); -}; -var export_Handlebars = import_handlebars2.default; -export { - export_Handlebars as Handlebars -}; -//# sourceMappingURL=handlebars.js.map diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/handlebars.js.map b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/handlebars.js.map deleted file mode 100644 index d0a27e5..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/handlebars.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../node_modules/handlebars/lib/handlebars/utils.js", "../../node_modules/handlebars/lib/handlebars/exception.js", "../../node_modules/handlebars/lib/handlebars/helpers/block-helper-missing.js", "../../node_modules/handlebars/lib/handlebars/helpers/each.js", "../../node_modules/handlebars/lib/handlebars/helpers/helper-missing.js", "../../node_modules/handlebars/lib/handlebars/helpers/if.js", "../../node_modules/handlebars/lib/handlebars/helpers/log.js", "../../node_modules/handlebars/lib/handlebars/helpers/lookup.js", "../../node_modules/handlebars/lib/handlebars/helpers/with.js", "../../node_modules/handlebars/lib/handlebars/helpers.js", "../../node_modules/handlebars/lib/handlebars/decorators/inline.js", "../../node_modules/handlebars/lib/handlebars/decorators.js", "../../node_modules/handlebars/lib/handlebars/logger.js", "../../node_modules/handlebars/lib/handlebars/internal/create-new-lookup-object.js", "../../node_modules/handlebars/lib/handlebars/internal/proto-access.js", "../../node_modules/handlebars/lib/handlebars/base.js", "../../node_modules/handlebars/lib/handlebars/safe-string.js", "../../node_modules/handlebars/lib/handlebars/internal/wrapHelper.js", "../../node_modules/handlebars/lib/handlebars/runtime.js", "../../node_modules/handlebars/lib/handlebars/no-conflict.js", "../../node_modules/handlebars/lib/handlebars.runtime.js", "../../node_modules/handlebars/lib/handlebars/compiler/ast.js", "../../node_modules/handlebars/lib/handlebars/compiler/parser.js", "../../node_modules/handlebars/lib/handlebars/compiler/visitor.js", "../../node_modules/handlebars/lib/handlebars/compiler/whitespace-control.js", "../../node_modules/handlebars/lib/handlebars/compiler/helpers.js", "../../node_modules/handlebars/lib/handlebars/compiler/base.js", "../../node_modules/handlebars/lib/handlebars/compiler/compiler.js", "../../node_modules/source-map/lib/base64.js", "../../node_modules/source-map/lib/base64-vlq.js", "../../node_modules/source-map/lib/util.js", "../../node_modules/source-map/lib/array-set.js", "../../node_modules/source-map/lib/mapping-list.js", "../../node_modules/source-map/lib/source-map-generator.js", "../../node_modules/source-map/lib/binary-search.js", "../../node_modules/source-map/lib/quick-sort.js", "../../node_modules/source-map/lib/source-map-consumer.js", "../../node_modules/source-map/lib/source-node.js", "../../node_modules/source-map/source-map.js", "../../node_modules/handlebars/lib/handlebars/compiler/code-gen.js", "../../node_modules/handlebars/lib/handlebars/compiler/javascript-compiler.js", "../../node_modules/handlebars/lib/handlebars.js", "../../node_modules/yomitan-handlebars/src/handlebars.ts", "../../node_modules/yomitan-handlebars/src/visitor.ts", "../../node_modules/yomitan-handlebars/src/symbols.ts", "../../node_modules/yomitan-handlebars/src/utils.ts"], - "sourcesContent": ["const escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nconst badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nexport function extend(obj /* , ...source */) {\n for (let i = 1; i < arguments.length; i++) {\n for (let key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nexport let toString = Object.prototype.toString;\n\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nlet isFunction = function(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n isFunction = function(value) {\n return (\n typeof value === 'function' &&\n toString.call(value) === '[object Function]'\n );\n };\n}\nexport { isFunction };\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nexport const isArray =\n Array.isArray ||\n function(value) {\n return value && typeof value === 'object'\n ? toString.call(value) === '[object Array]'\n : false;\n };\n\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\nexport function indexOf(array, value) {\n for (let i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nexport function escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nexport function isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nexport function createFrame(object) {\n let frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nexport function blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nexport function appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n", "const errorProps = [\n 'description',\n 'fileName',\n 'lineNumber',\n 'endLineNumber',\n 'message',\n 'name',\n 'number',\n 'stack'\n];\n\nfunction Exception(message, node) {\n let loc = node && node.loc,\n line,\n endLineNumber,\n column,\n endColumn;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n let tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (let idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexport default Exception;\n", "import { appendContextPath, createFrame, isArray } from '../utils';\n\nexport default function(instance) {\n instance.registerHelper('blockHelperMissing', function(context, options) {\n let inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n let data = createFrame(options.data);\n data.contextPath = appendContextPath(\n options.data.contextPath,\n options.name\n );\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n}\n", "import {\n appendContextPath,\n blockParams,\n createFrame,\n isArray,\n isFunction\n} from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('each', function(context, options) {\n if (!options) {\n throw new Exception('Must pass iterator to #each');\n }\n\n let fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data,\n contextPath;\n\n if (options.data && options.ids) {\n contextPath =\n appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret =\n ret +\n fn(context[field], {\n data: data,\n blockParams: blockParams(\n [context[field], field],\n [contextPath + field, null]\n )\n });\n }\n\n if (context && typeof context === 'object') {\n if (isArray(context)) {\n for (let j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (typeof Symbol === 'function' && context[Symbol.iterator]) {\n const newContext = [];\n const iterator = context[Symbol.iterator]();\n for (let it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n context = newContext;\n for (let j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n let priorKey;\n\n Object.keys(context).forEach(key => {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n });\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n}\n", "import Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('helperMissing', function(/* [args, ]options */) {\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new Exception(\n 'Missing helper: \"' + arguments[arguments.length - 1].name + '\"'\n );\n }\n });\n}\n", "import { isEmpty, isFunction } from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('if', function(conditional, options) {\n if (arguments.length != 2) {\n throw new Exception('#if requires exactly one argument');\n }\n if (isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if ((!options.hash.includeZero && !conditional) || isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function(conditional, options) {\n if (arguments.length != 2) {\n throw new Exception('#unless requires exactly one argument');\n }\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n}\n", "export default function(instance) {\n instance.registerHelper('log', function(/* message, options */) {\n let args = [undefined],\n options = arguments[arguments.length - 1];\n for (let i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n let level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log(...args);\n });\n}\n", "export default function(instance) {\n instance.registerHelper('lookup', function(obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n return options.lookupProperty(obj, field);\n });\n}\n", "import {\n appendContextPath,\n blockParams,\n createFrame,\n isEmpty,\n isFunction\n} from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('with', function(context, options) {\n if (arguments.length != 2) {\n throw new Exception('#with requires exactly one argument');\n }\n if (isFunction(context)) {\n context = context.call(this);\n }\n\n let fn = options.fn;\n\n if (!isEmpty(context)) {\n let data = options.data;\n if (options.data && options.ids) {\n data = createFrame(options.data);\n data.contextPath = appendContextPath(\n options.data.contextPath,\n options.ids[0]\n );\n }\n\n return fn(context, {\n data: data,\n blockParams: blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n}\n", "import registerBlockHelperMissing from './helpers/block-helper-missing';\nimport registerEach from './helpers/each';\nimport registerHelperMissing from './helpers/helper-missing';\nimport registerIf from './helpers/if';\nimport registerLog from './helpers/log';\nimport registerLookup from './helpers/lookup';\nimport registerWith from './helpers/with';\n\nexport function registerDefaultHelpers(instance) {\n registerBlockHelperMissing(instance);\n registerEach(instance);\n registerHelperMissing(instance);\n registerIf(instance);\n registerLog(instance);\n registerLookup(instance);\n registerWith(instance);\n}\n\nexport function moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n if (!keepHelper) {\n delete instance.helpers[helperName];\n }\n }\n}\n", "import { extend } from '../utils';\n\nexport default function(instance) {\n instance.registerDecorator('inline', function(fn, props, container, options) {\n let ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function(context, options) {\n // Create a new partials stack frame prior to exec.\n let original = container.partials;\n container.partials = extend({}, original, props.partials);\n let ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n}\n", "import registerInline from './decorators/inline';\n\nexport function registerDefaultDecorators(instance) {\n registerInline(instance);\n}\n", "import { indexOf } from './utils';\n\nlet logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function(level) {\n if (typeof level === 'string') {\n let levelMap = indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function(level, ...message) {\n level = logger.lookupLevel(level);\n\n if (\n typeof console !== 'undefined' &&\n logger.lookupLevel(logger.level) <= level\n ) {\n let method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n console[method](...message); // eslint-disable-line no-console\n }\n }\n};\n\nexport default logger;\n", "import { extend } from '../utils';\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\nexport function createNewLookupObject(...sources) {\n return extend(Object.create(null), ...sources);\n}\n", "import { createNewLookupObject } from './create-new-lookup-object';\nimport logger from '../logger';\n\nconst loggedProperties = Object.create(null);\n\nexport function createProtoAccessControl(runtimeOptions) {\n let defaultMethodWhiteList = Object.create(null);\n defaultMethodWhiteList['constructor'] = false;\n defaultMethodWhiteList['__defineGetter__'] = false;\n defaultMethodWhiteList['__defineSetter__'] = false;\n defaultMethodWhiteList['__lookupGetter__'] = false;\n\n let defaultPropertyWhiteList = Object.create(null);\n // eslint-disable-next-line no-proto\n defaultPropertyWhiteList['__proto__'] = false;\n\n return {\n properties: {\n whitelist: createNewLookupObject(\n defaultPropertyWhiteList,\n runtimeOptions.allowedProtoProperties\n ),\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: createNewLookupObject(\n defaultMethodWhiteList,\n runtimeOptions.allowedProtoMethods\n ),\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nexport function resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n logger.log(\n 'error',\n `Handlebars: Access has been denied to resolve the property \"${propertyName}\" because it is not an \"own property\" of its parent.\\n` +\n `You can add a runtime option to disable the check or this warning:\\n` +\n `See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details`\n );\n }\n}\n\nexport function resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(propertyName => {\n delete loggedProperties[propertyName];\n });\n}\n", "import { createFrame, extend, toString } from './utils';\nimport Exception from './exception';\nimport { registerDefaultHelpers } from './helpers';\nimport { registerDefaultDecorators } from './decorators';\nimport logger from './logger';\nimport { resetLoggedProperties } from './internal/proto-access';\n\nexport const VERSION = '4.7.8';\nexport const COMPILER_REVISION = 8;\nexport const LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexport const REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nconst objectType = '[object Object]';\n\nexport function HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n registerDefaultHelpers(this);\n registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: logger,\n log: logger.log,\n\n registerHelper: function(name, fn) {\n if (toString.call(name) === objectType) {\n if (fn) {\n throw new Exception('Arg not supported with multiple helpers');\n }\n extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function(name, partial) {\n if (toString.call(name) === objectType) {\n extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new Exception(\n `Attempting to register a partial called \"${name}\" as undefined`\n );\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function(name, fn) {\n if (toString.call(name) === objectType) {\n if (fn) {\n throw new Exception('Arg not supported with multiple decorators');\n }\n extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses() {\n resetLoggedProperties();\n }\n};\n\nexport let log = logger.log;\n\nexport { createFrame, logger };\n", "// Build out our basic SafeString type\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function() {\n return '' + this.string;\n};\n\nexport default SafeString;\n", "export function wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n let wrapper = function(/* dynamic arguments */) {\n const options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n return wrapper;\n}\n", "import * as Utils from './utils';\nimport Exception from './exception';\nimport {\n COMPILER_REVISION,\n createFrame,\n LAST_COMPATIBLE_COMPILER_REVISION,\n REVISION_CHANGES\n} from './base';\nimport { moveHelperToHooks } from './helpers';\nimport { wrapHelper } from './internal/wrapHelper';\nimport {\n createProtoAccessControl,\n resultIsAllowed\n} from './internal/proto-access';\n\nexport function checkRevision(compilerInfo) {\n const compilerRevision = (compilerInfo && compilerInfo[0]) || 1,\n currentRevision = COMPILER_REVISION;\n\n if (\n compilerRevision >= LAST_COMPATIBLE_COMPILER_REVISION &&\n compilerRevision <= COMPILER_REVISION\n ) {\n return;\n }\n\n if (compilerRevision < LAST_COMPATIBLE_COMPILER_REVISION) {\n const runtimeVersions = REVISION_CHANGES[currentRevision],\n compilerVersions = REVISION_CHANGES[compilerRevision];\n throw new Exception(\n 'Template was precompiled with an older version of Handlebars than the current runtime. ' +\n 'Please update your precompiler to a newer version (' +\n runtimeVersions +\n ') or downgrade your runtime to an older version (' +\n compilerVersions +\n ').'\n );\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new Exception(\n 'Template was precompiled with a newer version of Handlebars than the current runtime. ' +\n 'Please update your runtime to a newer version (' +\n compilerInfo[1] +\n ').'\n );\n }\n}\n\nexport function template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new Exception('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new Exception('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n const templateWasPrecompiledWithCompilerV7 =\n templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n let extendedOptions = Utils.extend({}, options, {\n hooks: this.hooks,\n protoAccessControl: this.protoAccessControl\n });\n\n let result = env.VM.invokePartial.call(\n this,\n partial,\n context,\n extendedOptions\n );\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(\n partial,\n templateSpec.compilerOptions,\n env\n );\n result = options.partials[options.name](context, extendedOptions);\n }\n if (result != null) {\n if (options.indent) {\n let lines = result.split('\\n');\n for (let i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new Exception(\n 'The partial ' +\n options.name +\n ' could not be compiled when running in runtime-only mode'\n );\n }\n }\n\n // Just add water\n let container = {\n strict: function(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new Exception('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n return container.lookupProperty(obj, name);\n },\n lookupProperty: function(parent, propertyName) {\n let result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n lookup: function(depths, name) {\n const len = depths.length;\n for (let i = 0; i < len; i++) {\n let result = depths[i] && container.lookupProperty(depths[i], name);\n if (result != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function(i) {\n let ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function(i, data, declaredBlockParams, blockParams, depths) {\n let programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(\n this,\n i,\n fn,\n data,\n declaredBlockParams,\n blockParams,\n depths\n );\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n mergeIfNeeded: function(param, common) {\n let obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context, options = {}) {\n let data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n let depths,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths =\n context != options.depths[0]\n ? [context].concat(options.depths)\n : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return (\n '' +\n templateSpec.main(\n container,\n context,\n container.helpers,\n container.partials,\n data,\n blockParams,\n depths\n )\n );\n }\n\n main = executeDecorators(\n templateSpec.main,\n main,\n container,\n options.depths || [],\n data,\n blockParams\n );\n return main(context, options);\n }\n\n ret.isTop = true;\n\n ret._setup = function(options) {\n if (!options.partial) {\n let mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n wrapHelpersToPassLookupProperty(mergedHelpers, container);\n container.helpers = mergedHelpers;\n\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(\n options.partials,\n env.partials\n );\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend(\n {},\n env.decorators,\n options.decorators\n );\n }\n\n container.hooks = {};\n container.protoAccessControl = createProtoAccessControl(options);\n\n let keepHelperInHelpers =\n options.allowCallsToHelperMissing ||\n templateWasPrecompiledWithCompilerV7;\n moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n\n ret._child = function(i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new Exception('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new Exception('must pass parent depths');\n }\n\n return wrapProgram(\n container,\n i,\n templateSpec[i],\n data,\n 0,\n blockParams,\n depths\n );\n };\n return ret;\n}\n\nexport function wrapProgram(\n container,\n i,\n fn,\n data,\n declaredBlockParams,\n blockParams,\n depths\n) {\n function prog(context, options = {}) {\n let currentDepths = depths;\n if (\n depths &&\n context != depths[0] &&\n !(context === container.nullContext && depths[0] === null)\n ) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(\n container,\n context,\n container.helpers,\n container.partials,\n options.data || data,\n blockParams && [options.blockParams].concat(blockParams),\n currentDepths\n );\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\nexport function resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nexport function invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n const currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n let partialBlock;\n if (options.fn && options.fn !== noop) {\n options.data = createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n let fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(\n context,\n options = {}\n ) {\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new Exception('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nexport function noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n let props = {};\n prog = fn.decorator(\n prog,\n props,\n container,\n depths && depths[0],\n data,\n blockParams,\n depths\n );\n Utils.extend(prog, props);\n }\n return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n Object.keys(mergedHelpers).forEach(helperName => {\n let helper = mergedHelpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n const lookupProperty = container.lookupProperty;\n return wrapHelper(helper, options => {\n return Utils.extend({ lookupProperty }, options);\n });\n}\n", "/* global globalThis */\nexport default function(Handlebars) {\n /* istanbul ignore next */\n // https://mathiasbynens.be/notes/globalthis\n (function() {\n if (typeof globalThis === 'object') return;\n Object.prototype.__defineGetter__('__magic__', function() {\n return this;\n });\n __magic__.globalThis = __magic__; // eslint-disable-line no-undef\n delete Object.prototype.__magic__;\n })();\n\n const $Handlebars = globalThis.Handlebars;\n\n /* istanbul ignore next */\n Handlebars.noConflict = function() {\n if (globalThis.Handlebars === Handlebars) {\n globalThis.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n}\n", "import * as base from './handlebars/base';\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\nimport SafeString from './handlebars/safe-string';\nimport Exception from './handlebars/exception';\nimport * as Utils from './handlebars/utils';\nimport * as runtime from './handlebars/runtime';\n\nimport noConflict from './handlebars/no-conflict';\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n let hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = SafeString;\n hb.Exception = Exception;\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function(spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nlet inst = create();\ninst.create = create;\n\nnoConflict(inst);\n\ninst['default'] = inst;\n\nexport default inst;\n", "let AST = {\n // Public API used to evaluate derived attributes regarding AST nodes\n helpers: {\n // a mustache is definitely a helper if:\n // * it is an eligible helper, and\n // * it has at least one parameter or hash segment\n helperExpression: function(node) {\n return (\n node.type === 'SubExpression' ||\n ((node.type === 'MustacheStatement' ||\n node.type === 'BlockStatement') &&\n !!((node.params && node.params.length) || node.hash))\n );\n },\n\n scopedId: function(path) {\n return /^\\.|this\\b/.test(path.original);\n },\n\n // an ID is simple if it only has one part, and that part is not\n // `..` or `this`.\n simpleId: function(path) {\n return (\n path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth\n );\n }\n }\n};\n\n// Must be exported as an object rather than the root of the module as the jison lexer\n// must modify the object to operate properly.\nexport default AST;\n", "// File ignored in coverage tests via setting in .istanbul.yml\n/* Jison generated parser */\nvar handlebars = (function(){\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"root\":3,\"program\":4,\"EOF\":5,\"program_repetition0\":6,\"statement\":7,\"mustache\":8,\"block\":9,\"rawBlock\":10,\"partial\":11,\"partialBlock\":12,\"content\":13,\"COMMENT\":14,\"CONTENT\":15,\"openRawBlock\":16,\"rawBlock_repetition0\":17,\"END_RAW_BLOCK\":18,\"OPEN_RAW_BLOCK\":19,\"helperName\":20,\"openRawBlock_repetition0\":21,\"openRawBlock_option0\":22,\"CLOSE_RAW_BLOCK\":23,\"openBlock\":24,\"block_option0\":25,\"closeBlock\":26,\"openInverse\":27,\"block_option1\":28,\"OPEN_BLOCK\":29,\"openBlock_repetition0\":30,\"openBlock_option0\":31,\"openBlock_option1\":32,\"CLOSE\":33,\"OPEN_INVERSE\":34,\"openInverse_repetition0\":35,\"openInverse_option0\":36,\"openInverse_option1\":37,\"openInverseChain\":38,\"OPEN_INVERSE_CHAIN\":39,\"openInverseChain_repetition0\":40,\"openInverseChain_option0\":41,\"openInverseChain_option1\":42,\"inverseAndProgram\":43,\"INVERSE\":44,\"inverseChain\":45,\"inverseChain_option0\":46,\"OPEN_ENDBLOCK\":47,\"OPEN\":48,\"mustache_repetition0\":49,\"mustache_option0\":50,\"OPEN_UNESCAPED\":51,\"mustache_repetition1\":52,\"mustache_option1\":53,\"CLOSE_UNESCAPED\":54,\"OPEN_PARTIAL\":55,\"partialName\":56,\"partial_repetition0\":57,\"partial_option0\":58,\"openPartialBlock\":59,\"OPEN_PARTIAL_BLOCK\":60,\"openPartialBlock_repetition0\":61,\"openPartialBlock_option0\":62,\"param\":63,\"sexpr\":64,\"OPEN_SEXPR\":65,\"sexpr_repetition0\":66,\"sexpr_option0\":67,\"CLOSE_SEXPR\":68,\"hash\":69,\"hash_repetition_plus0\":70,\"hashSegment\":71,\"ID\":72,\"EQUALS\":73,\"blockParams\":74,\"OPEN_BLOCK_PARAMS\":75,\"blockParams_repetition_plus0\":76,\"CLOSE_BLOCK_PARAMS\":77,\"path\":78,\"dataName\":79,\"STRING\":80,\"NUMBER\":81,\"BOOLEAN\":82,\"UNDEFINED\":83,\"NULL\":84,\"DATA\":85,\"pathSegments\":86,\"SEP\":87,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",14:\"COMMENT\",15:\"CONTENT\",18:\"END_RAW_BLOCK\",19:\"OPEN_RAW_BLOCK\",23:\"CLOSE_RAW_BLOCK\",29:\"OPEN_BLOCK\",33:\"CLOSE\",34:\"OPEN_INVERSE\",39:\"OPEN_INVERSE_CHAIN\",44:\"INVERSE\",47:\"OPEN_ENDBLOCK\",48:\"OPEN\",51:\"OPEN_UNESCAPED\",54:\"CLOSE_UNESCAPED\",55:\"OPEN_PARTIAL\",60:\"OPEN_PARTIAL_BLOCK\",65:\"OPEN_SEXPR\",68:\"CLOSE_SEXPR\",72:\"ID\",73:\"EQUALS\",75:\"OPEN_BLOCK_PARAMS\",77:\"CLOSE_BLOCK_PARAMS\",80:\"STRING\",81:\"NUMBER\",82:\"BOOLEAN\",83:\"UNDEFINED\",84:\"NULL\",85:\"DATA\",87:\"SEP\"},\nproductions_: [0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,0],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],\nperformAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$\n) {\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1: return $$[$0-1]; \nbreak;\ncase 2:this.$ = yy.prepareProgram($$[$0]);\nbreak;\ncase 3:this.$ = $$[$0];\nbreak;\ncase 4:this.$ = $$[$0];\nbreak;\ncase 5:this.$ = $$[$0];\nbreak;\ncase 6:this.$ = $$[$0];\nbreak;\ncase 7:this.$ = $$[$0];\nbreak;\ncase 8:this.$ = $$[$0];\nbreak;\ncase 9:\n this.$ = {\n type: 'CommentStatement',\n value: yy.stripComment($$[$0]),\n strip: yy.stripFlags($$[$0], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 10:\n this.$ = {\n type: 'ContentStatement',\n original: $$[$0],\n value: $$[$0],\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 11:this.$ = yy.prepareRawBlock($$[$0-2], $$[$0-1], $$[$0], this._$);\nbreak;\ncase 12:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1] };\nbreak;\ncase 13:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], false, this._$);\nbreak;\ncase 14:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], true, this._$);\nbreak;\ncase 15:this.$ = { open: $$[$0-5], path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 16:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 17:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 18:this.$ = { strip: yy.stripFlags($$[$0-1], $$[$0-1]), program: $$[$0] };\nbreak;\ncase 19:\n var inverse = yy.prepareBlock($$[$0-2], $$[$0-1], $$[$0], $$[$0], false, this._$),\n program = yy.prepareProgram([inverse], $$[$0-1].loc);\n program.chained = true;\n\n this.$ = { strip: $$[$0-2].strip, program: program, chain: true };\n \nbreak;\ncase 20:this.$ = $$[$0];\nbreak;\ncase 21:this.$ = {path: $$[$0-1], strip: yy.stripFlags($$[$0-2], $$[$0])};\nbreak;\ncase 22:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);\nbreak;\ncase 23:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);\nbreak;\ncase 24:\n this.$ = {\n type: 'PartialStatement',\n name: $$[$0-3],\n params: $$[$0-2],\n hash: $$[$0-1],\n indent: '',\n strip: yy.stripFlags($$[$0-4], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 25:this.$ = yy.preparePartialBlock($$[$0-2], $$[$0-1], $$[$0], this._$);\nbreak;\ncase 26:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1], strip: yy.stripFlags($$[$0-4], $$[$0]) };\nbreak;\ncase 27:this.$ = $$[$0];\nbreak;\ncase 28:this.$ = $$[$0];\nbreak;\ncase 29:\n this.$ = {\n type: 'SubExpression',\n path: $$[$0-3],\n params: $$[$0-2],\n hash: $$[$0-1],\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 30:this.$ = {type: 'Hash', pairs: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 31:this.$ = {type: 'HashPair', key: yy.id($$[$0-2]), value: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 32:this.$ = yy.id($$[$0-1]);\nbreak;\ncase 33:this.$ = $$[$0];\nbreak;\ncase 34:this.$ = $$[$0];\nbreak;\ncase 35:this.$ = {type: 'StringLiteral', value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 36:this.$ = {type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$)};\nbreak;\ncase 37:this.$ = {type: 'BooleanLiteral', value: $$[$0] === 'true', original: $$[$0] === 'true', loc: yy.locInfo(this._$)};\nbreak;\ncase 38:this.$ = {type: 'UndefinedLiteral', original: undefined, value: undefined, loc: yy.locInfo(this._$)};\nbreak;\ncase 39:this.$ = {type: 'NullLiteral', original: null, value: null, loc: yy.locInfo(this._$)};\nbreak;\ncase 40:this.$ = $$[$0];\nbreak;\ncase 41:this.$ = $$[$0];\nbreak;\ncase 42:this.$ = yy.preparePath(true, $$[$0], this._$);\nbreak;\ncase 43:this.$ = yy.preparePath(false, $$[$0], this._$);\nbreak;\ncase 44: $$[$0-2].push({part: yy.id($$[$0]), original: $$[$0], separator: $$[$0-1]}); this.$ = $$[$0-2]; \nbreak;\ncase 45:this.$ = [{part: yy.id($$[$0]), original: $$[$0]}];\nbreak;\ncase 46:this.$ = [];\nbreak;\ncase 47:$$[$0-1].push($$[$0]);\nbreak;\ncase 48:this.$ = [];\nbreak;\ncase 49:$$[$0-1].push($$[$0]);\nbreak;\ncase 50:this.$ = [];\nbreak;\ncase 51:$$[$0-1].push($$[$0]);\nbreak;\ncase 58:this.$ = [];\nbreak;\ncase 59:$$[$0-1].push($$[$0]);\nbreak;\ncase 64:this.$ = [];\nbreak;\ncase 65:$$[$0-1].push($$[$0]);\nbreak;\ncase 70:this.$ = [];\nbreak;\ncase 71:$$[$0-1].push($$[$0]);\nbreak;\ncase 78:this.$ = [];\nbreak;\ncase 79:$$[$0-1].push($$[$0]);\nbreak;\ncase 82:this.$ = [];\nbreak;\ncase 83:$$[$0-1].push($$[$0]);\nbreak;\ncase 86:this.$ = [];\nbreak;\ncase 87:$$[$0-1].push($$[$0]);\nbreak;\ncase 90:this.$ = [];\nbreak;\ncase 91:$$[$0-1].push($$[$0]);\nbreak;\ncase 94:this.$ = [];\nbreak;\ncase 95:$$[$0-1].push($$[$0]);\nbreak;\ncase 98:this.$ = [$$[$0]];\nbreak;\ncase 99:$$[$0-1].push($$[$0]);\nbreak;\ncase 100:this.$ = [$$[$0]];\nbreak;\ncase 101:$$[$0-1].push($$[$0]);\nbreak;\n}\n},\ntable: [{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{15:[2,48],17:39,18:[2,48]},{20:41,56:40,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:44,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:45,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:41,56:48,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:49,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,50]},{72:[1,35],86:51},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:52,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:53,38:55,39:[1,57],43:56,44:[1,58],45:54,47:[2,54]},{28:59,43:60,44:[1,58],47:[2,56]},{13:62,15:[1,20],18:[1,61]},{33:[2,86],57:63,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:64,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:65,47:[1,66]},{30:67,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:68,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:69,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:70,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:74,33:[2,80],50:71,63:72,64:75,65:[1,43],69:73,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,79]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,50]},{20:74,53:80,54:[2,84],63:81,64:75,65:[1,43],69:82,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:83,47:[1,66]},{47:[2,55]},{4:84,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:85,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:86,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:87,47:[1,66]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:74,33:[2,88],58:88,63:89,64:75,65:[1,43],69:90,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:91,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:92,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,31:93,33:[2,60],63:94,64:75,65:[1,43],69:95,70:76,71:77,72:[1,78],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,66],36:96,63:97,64:75,65:[1,43],69:98,70:76,71:77,72:[1,78],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,22:99,23:[2,52],63:100,64:75,65:[1,43],69:101,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,92],62:102,63:103,64:75,65:[1,43],69:104,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,105]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:106,72:[1,107],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,108],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,109]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:55,39:[1,57],43:56,44:[1,58],45:111,46:110,47:[2,76]},{33:[2,70],40:112,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,113]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:74,63:115,64:75,65:[1,43],67:114,68:[2,96],69:116,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,117]},{32:118,33:[2,62],74:119,75:[1,120]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:121,74:122,75:[1,120]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,123]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,124]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,108]},{20:74,63:125,64:75,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:74,33:[2,72],41:126,63:127,64:75,65:[1,43],69:128,70:76,71:77,72:[1,78],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,129]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,130]},{33:[2,63]},{72:[1,132],76:131},{33:[1,133]},{33:[2,69]},{15:[2,12],18:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:134,74:135,75:[1,120]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,137],77:[1,136]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,138]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],\ndefaultActions: {4:[2,1],54:[2,55],56:[2,20],60:[2,57],73:[2,81],82:[2,85],86:[2,18],90:[2,89],101:[2,53],104:[2,93],110:[2,19],111:[2,77],116:[2,97],119:[2,63],122:[2,69],135:[2,75],136:[2,32]},\nparseError: function parseError (str, hash) {\n throw new Error(str);\n},\nparse: function parse(input) {\n var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n this.lexer.setInput(input);\n this.lexer.yy = this.yy;\n this.yy.lexer = this.lexer;\n this.yy.parser = this;\n if (typeof this.lexer.yylloc == \"undefined\")\n this.lexer.yylloc = {};\n var yyloc = this.lexer.yylloc;\n lstack.push(yyloc);\n var ranges = this.lexer.options && this.lexer.options.ranges;\n if (typeof this.yy.parseError === \"function\")\n this.parseError = this.yy.parseError;\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = self.lexer.lex() || 1;\n if (typeof token !== \"number\") {\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n if (!recovering) {\n expected = [];\n for (p in table[state])\n if (this.terminals_[p] && p > 2) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n if (this.lexer.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + this.lexer.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == 1?\"end of input\":\"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});\n }\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(this.lexer.yytext);\n lstack.push(this.lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = this.lexer.yyleng;\n yytext = this.lexer.yytext;\n yylineno = this.lexer.yylineno;\n yyloc = this.lexer.yylloc;\n if (recovering > 0)\n recovering--;\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};\n if (ranges) {\n yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n }\n r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}\n};\n/* Jison generated lexer */\nvar lexer = (function(){\nvar lexer = ({EOF:1,\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\nsetInput:function (input) {\n this._input = input;\n this._more = this._less = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};\n if (this.options.ranges) this.yylloc.range = [0,0];\n this.offset = 0;\n return this;\n },\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) this.yylloc.range[1]++;\n\n this._input = this._input.slice(1);\n return ch;\n },\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length-len-1);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length-1);\n this.matched = this.matched.substr(0, this.matched.length-1);\n\n if (lines.length-1) this.yylineno -= lines.length-1;\n var r = this.yylloc.range;\n\n this.yylloc = {first_line: this.yylloc.first_line,\n last_line: this.yylineno+1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n return this;\n },\nmore:function () {\n this._more = true;\n return this;\n },\nless:function (n) {\n this.unput(this.match.slice(n));\n },\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\\n/g, \"\");\n },\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c+\"^\";\n },\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) this.done = true;\n\n var token,\n match,\n tempMatch,\n index,\n col,\n lines;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i=0;i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (!this.options.flex) break;\n }\n }\n if (match) {\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) this.yylineno += lines.length;\n this.yylloc = {first_line: this.yylloc.last_line,\n last_line: this.yylineno+1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length};\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);\n if (this.done && this._input) this.done = false;\n if (token) return token;\n else return;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\\n'+this.showPosition(),\n {text: \"\", token: null, line: this.yylineno});\n }\n },\nlex:function lex () {\n var r = this.next();\n if (typeof r !== 'undefined') {\n return r;\n } else {\n return this.lex();\n }\n },\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\npopState:function popState () {\n return this.conditionStack.pop();\n },\n_currentRules:function _currentRules () {\n return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;\n },\ntopState:function () {\n return this.conditionStack[this.conditionStack.length-2];\n },\npushState:function begin (condition) {\n this.begin(condition);\n }});\nlexer.options = {};\nlexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START\n) {\n\n\nfunction strip(start, end) {\n return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start);\n}\n\n\nvar YYSTATE=YY_START\nswitch($avoiding_name_collisions) {\ncase 0:\n if(yy_.yytext.slice(-2) === \"\\\\\\\\\") {\n strip(0,1);\n this.begin(\"mu\");\n } else if(yy_.yytext.slice(-1) === \"\\\\\") {\n strip(0,1);\n this.begin(\"emu\");\n } else {\n this.begin(\"mu\");\n }\n if(yy_.yytext) return 15;\n \nbreak;\ncase 1:return 15;\nbreak;\ncase 2:\n this.popState();\n return 15;\n \nbreak;\ncase 3:this.begin('raw'); return 15;\nbreak;\ncase 4:\n this.popState();\n // Should be using `this.topState()` below, but it currently\n // returns the second top instead of the first top. Opened an\n // issue about it at https://github.com/zaach/jison/issues/291\n if (this.conditionStack[this.conditionStack.length-1] === 'raw') {\n return 15;\n } else {\n strip(5, 9);\n return 'END_RAW_BLOCK';\n }\n \nbreak;\ncase 5: return 15; \nbreak;\ncase 6:\n this.popState();\n return 14;\n\nbreak;\ncase 7:return 65;\nbreak;\ncase 8:return 68;\nbreak;\ncase 9: return 19; \nbreak;\ncase 10:\n this.popState();\n this.begin('raw');\n return 23;\n \nbreak;\ncase 11:return 55;\nbreak;\ncase 12:return 60;\nbreak;\ncase 13:return 29;\nbreak;\ncase 14:return 47;\nbreak;\ncase 15:this.popState(); return 44;\nbreak;\ncase 16:this.popState(); return 44;\nbreak;\ncase 17:return 34;\nbreak;\ncase 18:return 39;\nbreak;\ncase 19:return 51;\nbreak;\ncase 20:return 48;\nbreak;\ncase 21:\n this.unput(yy_.yytext);\n this.popState();\n this.begin('com');\n\nbreak;\ncase 22:\n this.popState();\n return 14;\n\nbreak;\ncase 23:return 48;\nbreak;\ncase 24:return 73;\nbreak;\ncase 25:return 72;\nbreak;\ncase 26:return 72;\nbreak;\ncase 27:return 87;\nbreak;\ncase 28:// ignore whitespace\nbreak;\ncase 29:this.popState(); return 54;\nbreak;\ncase 30:this.popState(); return 33;\nbreak;\ncase 31:yy_.yytext = strip(1,2).replace(/\\\\\"/g,'\"'); return 80;\nbreak;\ncase 32:yy_.yytext = strip(1,2).replace(/\\\\'/g,\"'\"); return 80;\nbreak;\ncase 33:return 85;\nbreak;\ncase 34:return 82;\nbreak;\ncase 35:return 82;\nbreak;\ncase 36:return 83;\nbreak;\ncase 37:return 84;\nbreak;\ncase 38:return 81;\nbreak;\ncase 39:return 75;\nbreak;\ncase 40:return 77;\nbreak;\ncase 41:return 72;\nbreak;\ncase 42:yy_.yytext = yy_.yytext.replace(/\\\\([\\\\\\]])/g,'$1'); return 72;\nbreak;\ncase 43:return 'INVALID';\nbreak;\ncase 44:return 5;\nbreak;\n}\n};\nlexer.rules = [/^(?:[^\\x00]*?(?=(\\{\\{)))/,/^(?:[^\\x00]+)/,/^(?:[^\\x00]{2,}?(?=(\\{\\{|\\\\\\{\\{|\\\\\\\\\\{\\{|$)))/,/^(?:\\{\\{\\{\\{(?=[^/]))/,/^(?:\\{\\{\\{\\{\\/[^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=[=}\\s\\/.])\\}\\}\\}\\})/,/^(?:[^\\x00]+?(?=(\\{\\{\\{\\{)))/,/^(?:[\\s\\S]*?--(~)?\\}\\})/,/^(?:\\()/,/^(?:\\))/,/^(?:\\{\\{\\{\\{)/,/^(?:\\}\\}\\}\\})/,/^(?:\\{\\{(~)?>)/,/^(?:\\{\\{(~)?#>)/,/^(?:\\{\\{(~)?#\\*?)/,/^(?:\\{\\{(~)?\\/)/,/^(?:\\{\\{(~)?\\^\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\s*else\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\^)/,/^(?:\\{\\{(~)?\\s*else\\b)/,/^(?:\\{\\{(~)?\\{)/,/^(?:\\{\\{(~)?&)/,/^(?:\\{\\{(~)?!--)/,/^(?:\\{\\{(~)?![\\s\\S]*?\\}\\})/,/^(?:\\{\\{(~)?\\*?)/,/^(?:=)/,/^(?:\\.\\.)/,/^(?:\\.(?=([=~}\\s\\/.)|])))/,/^(?:[\\/.])/,/^(?:\\s+)/,/^(?:\\}(~)?\\}\\})/,/^(?:(~)?\\}\\})/,/^(?:\"(\\\\[\"]|[^\"])*\")/,/^(?:'(\\\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\\s)])))/,/^(?:false(?=([~}\\s)])))/,/^(?:undefined(?=([~}\\s)])))/,/^(?:null(?=([~}\\s)])))/,/^(?:-?[0-9]+(?:\\.[0-9]+)?(?=([~}\\s)])))/,/^(?:as\\s+\\|)/,/^(?:\\|)/,/^(?:([^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=([=~}\\s\\/.)|]))))/,/^(?:\\[(\\\\\\]|[^\\]])*\\])/,/^(?:.)/,/^(?:$)/];\nlexer.conditions = {\"mu\":{\"rules\":[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],\"inclusive\":false},\"emu\":{\"rules\":[2],\"inclusive\":false},\"com\":{\"rules\":[6],\"inclusive\":false},\"raw\":{\"rules\":[3,4,5],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,44],\"inclusive\":true}};\nreturn lexer;})()\nparser.lexer = lexer;\nfunction Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();export default handlebars;\n", "import Exception from '../exception';\n\nfunction Visitor() {\n this.parents = [];\n}\n\nVisitor.prototype = {\n constructor: Visitor,\n mutating: false,\n\n // Visits a given value. If mutating, will replace the value if necessary.\n acceptKey: function(node, name) {\n let value = this.accept(node[name]);\n if (this.mutating) {\n // Hacky sanity check: This may have a few false positives for type for the helper\n // methods but will generally do the right thing without a lot of overhead.\n if (value && !Visitor.prototype[value.type]) {\n throw new Exception(\n 'Unexpected node type \"' +\n value.type +\n '\" found when accepting ' +\n name +\n ' on ' +\n node.type\n );\n }\n node[name] = value;\n }\n },\n\n // Performs an accept operation with added sanity check to ensure\n // required keys are not removed.\n acceptRequired: function(node, name) {\n this.acceptKey(node, name);\n\n if (!node[name]) {\n throw new Exception(node.type + ' requires ' + name);\n }\n },\n\n // Traverses a given array. If mutating, empty respnses will be removed\n // for child elements.\n acceptArray: function(array) {\n for (let i = 0, l = array.length; i < l; i++) {\n this.acceptKey(array, i);\n\n if (!array[i]) {\n array.splice(i, 1);\n i--;\n l--;\n }\n }\n },\n\n accept: function(object) {\n if (!object) {\n return;\n }\n\n /* istanbul ignore next: Sanity code */\n if (!this[object.type]) {\n throw new Exception('Unknown type: ' + object.type, object);\n }\n\n if (this.current) {\n this.parents.unshift(this.current);\n }\n this.current = object;\n\n let ret = this[object.type](object);\n\n this.current = this.parents.shift();\n\n if (!this.mutating || ret) {\n return ret;\n } else if (ret !== false) {\n return object;\n }\n },\n\n Program: function(program) {\n this.acceptArray(program.body);\n },\n\n MustacheStatement: visitSubExpression,\n Decorator: visitSubExpression,\n\n BlockStatement: visitBlock,\n DecoratorBlock: visitBlock,\n\n PartialStatement: visitPartial,\n PartialBlockStatement: function(partial) {\n visitPartial.call(this, partial);\n\n this.acceptKey(partial, 'program');\n },\n\n ContentStatement: function(/* content */) {},\n CommentStatement: function(/* comment */) {},\n\n SubExpression: visitSubExpression,\n\n PathExpression: function(/* path */) {},\n\n StringLiteral: function(/* string */) {},\n NumberLiteral: function(/* number */) {},\n BooleanLiteral: function(/* bool */) {},\n UndefinedLiteral: function(/* literal */) {},\n NullLiteral: function(/* literal */) {},\n\n Hash: function(hash) {\n this.acceptArray(hash.pairs);\n },\n HashPair: function(pair) {\n this.acceptRequired(pair, 'value');\n }\n};\n\nfunction visitSubExpression(mustache) {\n this.acceptRequired(mustache, 'path');\n this.acceptArray(mustache.params);\n this.acceptKey(mustache, 'hash');\n}\nfunction visitBlock(block) {\n visitSubExpression.call(this, block);\n\n this.acceptKey(block, 'program');\n this.acceptKey(block, 'inverse');\n}\nfunction visitPartial(partial) {\n this.acceptRequired(partial, 'name');\n this.acceptArray(partial.params);\n this.acceptKey(partial, 'hash');\n}\n\nexport default Visitor;\n", "import Visitor from './visitor';\n\nfunction WhitespaceControl(options = {}) {\n this.options = options;\n}\nWhitespaceControl.prototype = new Visitor();\n\nWhitespaceControl.prototype.Program = function(program) {\n const doStandalone = !this.options.ignoreStandalone;\n\n let isRoot = !this.isRootSeen;\n this.isRootSeen = true;\n\n let body = program.body;\n for (let i = 0, l = body.length; i < l; i++) {\n let current = body[i],\n strip = this.accept(current);\n\n if (!strip) {\n continue;\n }\n\n let _isPrevWhitespace = isPrevWhitespace(body, i, isRoot),\n _isNextWhitespace = isNextWhitespace(body, i, isRoot),\n openStandalone = strip.openStandalone && _isPrevWhitespace,\n closeStandalone = strip.closeStandalone && _isNextWhitespace,\n inlineStandalone =\n strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;\n\n if (strip.close) {\n omitRight(body, i, true);\n }\n if (strip.open) {\n omitLeft(body, i, true);\n }\n\n if (doStandalone && inlineStandalone) {\n omitRight(body, i);\n\n if (omitLeft(body, i)) {\n // If we are on a standalone node, save the indent info for partials\n if (current.type === 'PartialStatement') {\n // Pull out the whitespace from the final line\n current.indent = /([ \\t]+$)/.exec(body[i - 1].original)[1];\n }\n }\n }\n if (doStandalone && openStandalone) {\n omitRight((current.program || current.inverse).body);\n\n // Strip out the previous content node if it's whitespace only\n omitLeft(body, i);\n }\n if (doStandalone && closeStandalone) {\n // Always strip the next node\n omitRight(body, i);\n\n omitLeft((current.inverse || current.program).body);\n }\n }\n\n return program;\n};\n\nWhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function(\n block\n) {\n this.accept(block.program);\n this.accept(block.inverse);\n\n // Find the inverse program that is involed with whitespace stripping.\n let program = block.program || block.inverse,\n inverse = block.program && block.inverse,\n firstInverse = inverse,\n lastInverse = inverse;\n\n if (inverse && inverse.chained) {\n firstInverse = inverse.body[0].program;\n\n // Walk the inverse chain to find the last inverse that is actually in the chain.\n while (lastInverse.chained) {\n lastInverse = lastInverse.body[lastInverse.body.length - 1].program;\n }\n }\n\n let strip = {\n open: block.openStrip.open,\n close: block.closeStrip.close,\n\n // Determine the standalone candiacy. Basically flag our content as being possibly standalone\n // so our parent can determine if we actually are standalone\n openStandalone: isNextWhitespace(program.body),\n closeStandalone: isPrevWhitespace((firstInverse || program).body)\n };\n\n if (block.openStrip.close) {\n omitRight(program.body, null, true);\n }\n\n if (inverse) {\n let inverseStrip = block.inverseStrip;\n\n if (inverseStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n if (inverseStrip.close) {\n omitRight(firstInverse.body, null, true);\n }\n if (block.closeStrip.open) {\n omitLeft(lastInverse.body, null, true);\n }\n\n // Find standalone else statments\n if (\n !this.options.ignoreStandalone &&\n isPrevWhitespace(program.body) &&\n isNextWhitespace(firstInverse.body)\n ) {\n omitLeft(program.body);\n omitRight(firstInverse.body);\n }\n } else if (block.closeStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n return strip;\n};\n\nWhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function(\n mustache\n) {\n return mustache.strip;\n};\n\nWhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function(\n node\n) {\n /* istanbul ignore next */\n let strip = node.strip || {};\n return {\n inlineStandalone: true,\n open: strip.open,\n close: strip.close\n };\n};\n\nfunction isPrevWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = body.length;\n }\n\n // Nodes that end with newlines are considered whitespace (but are special\n // cased for strip operations)\n let prev = body[i - 1],\n sibling = body[i - 2];\n if (!prev) {\n return isRoot;\n }\n\n if (prev.type === 'ContentStatement') {\n return (sibling || !isRoot ? /\\r?\\n\\s*?$/ : /(^|\\r?\\n)\\s*?$/).test(\n prev.original\n );\n }\n}\nfunction isNextWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = -1;\n }\n\n let next = body[i + 1],\n sibling = body[i + 2];\n if (!next) {\n return isRoot;\n }\n\n if (next.type === 'ContentStatement') {\n return (sibling || !isRoot ? /^\\s*?\\r?\\n/ : /^\\s*?(\\r?\\n|$)/).test(\n next.original\n );\n }\n}\n\n// Marks the node to the right of the position as omitted.\n// I.e. {{foo}}' ' will mark the ' ' node as omitted.\n//\n// If i is undefined, then the first child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitRight(body, i, multiple) {\n let current = body[i == null ? 0 : i + 1];\n if (\n !current ||\n current.type !== 'ContentStatement' ||\n (!multiple && current.rightStripped)\n ) {\n return;\n }\n\n let original = current.value;\n current.value = current.value.replace(\n multiple ? /^\\s+/ : /^[ \\t]*\\r?\\n?/,\n ''\n );\n current.rightStripped = current.value !== original;\n}\n\n// Marks the node to the left of the position as omitted.\n// I.e. ' '{{foo}} will mark the ' ' node as omitted.\n//\n// If i is undefined then the last child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitLeft(body, i, multiple) {\n let current = body[i == null ? body.length - 1 : i - 1];\n if (\n !current ||\n current.type !== 'ContentStatement' ||\n (!multiple && current.leftStripped)\n ) {\n return;\n }\n\n // We omit the last node if it's whitespace only and not preceded by a non-content node.\n let original = current.value;\n current.value = current.value.replace(multiple ? /\\s+$/ : /[ \\t]+$/, '');\n current.leftStripped = current.value !== original;\n return current.leftStripped;\n}\n\nexport default WhitespaceControl;\n", "import Exception from '../exception';\n\nfunction validateClose(open, close) {\n close = close.path ? close.path.original : close;\n\n if (open.path.original !== close) {\n let errorNode = { loc: open.path.loc };\n\n throw new Exception(\n open.path.original + \" doesn't match \" + close,\n errorNode\n );\n }\n}\n\nexport function SourceLocation(source, locInfo) {\n this.source = source;\n this.start = {\n line: locInfo.first_line,\n column: locInfo.first_column\n };\n this.end = {\n line: locInfo.last_line,\n column: locInfo.last_column\n };\n}\n\nexport function id(token) {\n if (/^\\[.*\\]$/.test(token)) {\n return token.substring(1, token.length - 1);\n } else {\n return token;\n }\n}\n\nexport function stripFlags(open, close) {\n return {\n open: open.charAt(2) === '~',\n close: close.charAt(close.length - 3) === '~'\n };\n}\n\nexport function stripComment(comment) {\n return comment.replace(/^\\{\\{~?!-?-?/, '').replace(/-?-?~?\\}\\}$/, '');\n}\n\nexport function preparePath(data, parts, loc) {\n loc = this.locInfo(loc);\n\n let original = data ? '@' : '',\n dig = [],\n depth = 0;\n\n for (let i = 0, l = parts.length; i < l; i++) {\n let part = parts[i].part,\n // If we have [] syntax then we do not treat path references as operators,\n // i.e. foo.[this] resolves to approximately context.foo['this']\n isLiteral = parts[i].original !== part;\n original += (parts[i].separator || '') + part;\n\n if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {\n if (dig.length > 0) {\n throw new Exception('Invalid path: ' + original, { loc });\n } else if (part === '..') {\n depth++;\n }\n } else {\n dig.push(part);\n }\n }\n\n return {\n type: 'PathExpression',\n data,\n depth,\n parts: dig,\n original,\n loc\n };\n}\n\nexport function prepareMustache(path, params, hash, open, strip, locInfo) {\n // Must use charAt to support IE pre-10\n let escapeFlag = open.charAt(3) || open.charAt(2),\n escaped = escapeFlag !== '{' && escapeFlag !== '&';\n\n let decorator = /\\*/.test(open);\n return {\n type: decorator ? 'Decorator' : 'MustacheStatement',\n path,\n params,\n hash,\n escaped,\n strip,\n loc: this.locInfo(locInfo)\n };\n}\n\nexport function prepareRawBlock(openRawBlock, contents, close, locInfo) {\n validateClose(openRawBlock, close);\n\n locInfo = this.locInfo(locInfo);\n let program = {\n type: 'Program',\n body: contents,\n strip: {},\n loc: locInfo\n };\n\n return {\n type: 'BlockStatement',\n path: openRawBlock.path,\n params: openRawBlock.params,\n hash: openRawBlock.hash,\n program,\n openStrip: {},\n inverseStrip: {},\n closeStrip: {},\n loc: locInfo\n };\n}\n\nexport function prepareBlock(\n openBlock,\n program,\n inverseAndProgram,\n close,\n inverted,\n locInfo\n) {\n if (close && close.path) {\n validateClose(openBlock, close);\n }\n\n let decorator = /\\*/.test(openBlock.open);\n\n program.blockParams = openBlock.blockParams;\n\n let inverse, inverseStrip;\n\n if (inverseAndProgram) {\n if (decorator) {\n throw new Exception(\n 'Unexpected inverse block on decorator',\n inverseAndProgram\n );\n }\n\n if (inverseAndProgram.chain) {\n inverseAndProgram.program.body[0].closeStrip = close.strip;\n }\n\n inverseStrip = inverseAndProgram.strip;\n inverse = inverseAndProgram.program;\n }\n\n if (inverted) {\n inverted = inverse;\n inverse = program;\n program = inverted;\n }\n\n return {\n type: decorator ? 'DecoratorBlock' : 'BlockStatement',\n path: openBlock.path,\n params: openBlock.params,\n hash: openBlock.hash,\n program,\n inverse,\n openStrip: openBlock.strip,\n inverseStrip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n}\n\nexport function prepareProgram(statements, loc) {\n if (!loc && statements.length) {\n const firstLoc = statements[0].loc,\n lastLoc = statements[statements.length - 1].loc;\n\n /* istanbul ignore else */\n if (firstLoc && lastLoc) {\n loc = {\n source: firstLoc.source,\n start: {\n line: firstLoc.start.line,\n column: firstLoc.start.column\n },\n end: {\n line: lastLoc.end.line,\n column: lastLoc.end.column\n }\n };\n }\n }\n\n return {\n type: 'Program',\n body: statements,\n strip: {},\n loc: loc\n };\n}\n\nexport function preparePartialBlock(open, program, close, locInfo) {\n validateClose(open, close);\n\n return {\n type: 'PartialBlockStatement',\n name: open.path,\n params: open.params,\n hash: open.hash,\n program,\n openStrip: open.strip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n}\n", "import parser from './parser';\nimport WhitespaceControl from './whitespace-control';\nimport * as Helpers from './helpers';\nimport { extend } from '../utils';\n\nexport { parser };\n\nlet yy = {};\nextend(yy, Helpers);\n\nexport function parseWithoutProcessing(input, options) {\n // Just return if an already-compiled AST was passed in.\n if (input.type === 'Program') {\n return input;\n }\n\n parser.yy = yy;\n\n // Altering the shared object here, but this is ok as parser is a sync operation\n yy.locInfo = function(locInfo) {\n return new yy.SourceLocation(options && options.srcName, locInfo);\n };\n\n let ast = parser.parse(input);\n\n return ast;\n}\n\nexport function parse(input, options) {\n let ast = parseWithoutProcessing(input, options);\n let strip = new WhitespaceControl(options);\n\n return strip.accept(ast);\n}\n", "/* eslint-disable new-cap */\n\nimport Exception from '../exception';\nimport { isArray, indexOf, extend } from '../utils';\nimport AST from './ast';\n\nconst slice = [].slice;\n\nexport function Compiler() {}\n\n// the foundHelper register will disambiguate helper lookup from finding a\n// function in a context. This is necessary for mustache compatibility, which\n// requires that context functions in blocks are evaluated by blockHelperMissing,\n// and then proceed as if the resulting value was provided to blockHelperMissing.\n\nCompiler.prototype = {\n compiler: Compiler,\n\n equals: function(other) {\n let len = this.opcodes.length;\n if (other.opcodes.length !== len) {\n return false;\n }\n\n for (let i = 0; i < len; i++) {\n let opcode = this.opcodes[i],\n otherOpcode = other.opcodes[i];\n if (\n opcode.opcode !== otherOpcode.opcode ||\n !argEquals(opcode.args, otherOpcode.args)\n ) {\n return false;\n }\n }\n\n // We know that length is the same between the two arrays because they are directly tied\n // to the opcode behavior above.\n len = this.children.length;\n for (let i = 0; i < len; i++) {\n if (!this.children[i].equals(other.children[i])) {\n return false;\n }\n }\n\n return true;\n },\n\n guid: 0,\n\n compile: function(program, options) {\n this.sourceNode = [];\n this.opcodes = [];\n this.children = [];\n this.options = options;\n this.stringParams = options.stringParams;\n this.trackIds = options.trackIds;\n\n options.blockParams = options.blockParams || [];\n\n options.knownHelpers = extend(\n Object.create(null),\n {\n helperMissing: true,\n blockHelperMissing: true,\n each: true,\n if: true,\n unless: true,\n with: true,\n log: true,\n lookup: true\n },\n options.knownHelpers\n );\n\n return this.accept(program);\n },\n\n compileProgram: function(program) {\n let childCompiler = new this.compiler(), // eslint-disable-line new-cap\n result = childCompiler.compile(program, this.options),\n guid = this.guid++;\n\n this.usePartial = this.usePartial || result.usePartial;\n\n this.children[guid] = result;\n this.useDepths = this.useDepths || result.useDepths;\n\n return guid;\n },\n\n accept: function(node) {\n /* istanbul ignore next: Sanity code */\n if (!this[node.type]) {\n throw new Exception('Unknown type: ' + node.type, node);\n }\n\n this.sourceNode.unshift(node);\n let ret = this[node.type](node);\n this.sourceNode.shift();\n return ret;\n },\n\n Program: function(program) {\n this.options.blockParams.unshift(program.blockParams);\n\n let body = program.body,\n bodyLength = body.length;\n for (let i = 0; i < bodyLength; i++) {\n this.accept(body[i]);\n }\n\n this.options.blockParams.shift();\n\n this.isSimple = bodyLength === 1;\n this.blockParams = program.blockParams ? program.blockParams.length : 0;\n\n return this;\n },\n\n BlockStatement: function(block) {\n transformLiteralToPath(block);\n\n let program = block.program,\n inverse = block.inverse;\n\n program = program && this.compileProgram(program);\n inverse = inverse && this.compileProgram(inverse);\n\n let type = this.classifySexpr(block);\n\n if (type === 'helper') {\n this.helperSexpr(block, program, inverse);\n } else if (type === 'simple') {\n this.simpleSexpr(block);\n\n // now that the simple mustache is resolved, we need to\n // evaluate it by executing `blockHelperMissing`\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n this.opcode('emptyHash');\n this.opcode('blockValue', block.path.original);\n } else {\n this.ambiguousSexpr(block, program, inverse);\n\n // now that the simple mustache is resolved, we need to\n // evaluate it by executing `blockHelperMissing`\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n this.opcode('emptyHash');\n this.opcode('ambiguousBlockValue');\n }\n\n this.opcode('append');\n },\n\n DecoratorBlock(decorator) {\n let program = decorator.program && this.compileProgram(decorator.program);\n let params = this.setupFullMustacheParams(decorator, program, undefined),\n path = decorator.path;\n\n this.useDecorators = true;\n this.opcode('registerDecorator', params.length, path.original);\n },\n\n PartialStatement: function(partial) {\n this.usePartial = true;\n\n let program = partial.program;\n if (program) {\n program = this.compileProgram(partial.program);\n }\n\n let params = partial.params;\n if (params.length > 1) {\n throw new Exception(\n 'Unsupported number of partial arguments: ' + params.length,\n partial\n );\n } else if (!params.length) {\n if (this.options.explicitPartialContext) {\n this.opcode('pushLiteral', 'undefined');\n } else {\n params.push({ type: 'PathExpression', parts: [], depth: 0 });\n }\n }\n\n let partialName = partial.name.original,\n isDynamic = partial.name.type === 'SubExpression';\n if (isDynamic) {\n this.accept(partial.name);\n }\n\n this.setupFullMustacheParams(partial, program, undefined, true);\n\n let indent = partial.indent || '';\n if (this.options.preventIndent && indent) {\n this.opcode('appendContent', indent);\n indent = '';\n }\n\n this.opcode('invokePartial', isDynamic, partialName, indent);\n this.opcode('append');\n },\n PartialBlockStatement: function(partialBlock) {\n this.PartialStatement(partialBlock);\n },\n\n MustacheStatement: function(mustache) {\n this.SubExpression(mustache);\n\n if (mustache.escaped && !this.options.noEscape) {\n this.opcode('appendEscaped');\n } else {\n this.opcode('append');\n }\n },\n Decorator(decorator) {\n this.DecoratorBlock(decorator);\n },\n\n ContentStatement: function(content) {\n if (content.value) {\n this.opcode('appendContent', content.value);\n }\n },\n\n CommentStatement: function() {},\n\n SubExpression: function(sexpr) {\n transformLiteralToPath(sexpr);\n let type = this.classifySexpr(sexpr);\n\n if (type === 'simple') {\n this.simpleSexpr(sexpr);\n } else if (type === 'helper') {\n this.helperSexpr(sexpr);\n } else {\n this.ambiguousSexpr(sexpr);\n }\n },\n ambiguousSexpr: function(sexpr, program, inverse) {\n let path = sexpr.path,\n name = path.parts[0],\n isBlock = program != null || inverse != null;\n\n this.opcode('getContext', path.depth);\n\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n\n path.strict = true;\n this.accept(path);\n\n this.opcode('invokeAmbiguous', name, isBlock);\n },\n\n simpleSexpr: function(sexpr) {\n let path = sexpr.path;\n path.strict = true;\n this.accept(path);\n this.opcode('resolvePossibleLambda');\n },\n\n helperSexpr: function(sexpr, program, inverse) {\n let params = this.setupFullMustacheParams(sexpr, program, inverse),\n path = sexpr.path,\n name = path.parts[0];\n\n if (this.options.knownHelpers[name]) {\n this.opcode('invokeKnownHelper', params.length, name);\n } else if (this.options.knownHelpersOnly) {\n throw new Exception(\n 'You specified knownHelpersOnly, but used the unknown helper ' + name,\n sexpr\n );\n } else {\n path.strict = true;\n path.falsy = true;\n\n this.accept(path);\n this.opcode(\n 'invokeHelper',\n params.length,\n path.original,\n AST.helpers.simpleId(path)\n );\n }\n },\n\n PathExpression: function(path) {\n this.addDepth(path.depth);\n this.opcode('getContext', path.depth);\n\n let name = path.parts[0],\n scoped = AST.helpers.scopedId(path),\n blockParamId = !path.depth && !scoped && this.blockParamIndex(name);\n\n if (blockParamId) {\n this.opcode('lookupBlockParam', blockParamId, path.parts);\n } else if (!name) {\n // Context reference, i.e. `{{foo .}}` or `{{foo ..}}`\n this.opcode('pushContext');\n } else if (path.data) {\n this.options.data = true;\n this.opcode('lookupData', path.depth, path.parts, path.strict);\n } else {\n this.opcode(\n 'lookupOnContext',\n path.parts,\n path.falsy,\n path.strict,\n scoped\n );\n }\n },\n\n StringLiteral: function(string) {\n this.opcode('pushString', string.value);\n },\n\n NumberLiteral: function(number) {\n this.opcode('pushLiteral', number.value);\n },\n\n BooleanLiteral: function(bool) {\n this.opcode('pushLiteral', bool.value);\n },\n\n UndefinedLiteral: function() {\n this.opcode('pushLiteral', 'undefined');\n },\n\n NullLiteral: function() {\n this.opcode('pushLiteral', 'null');\n },\n\n Hash: function(hash) {\n let pairs = hash.pairs,\n i = 0,\n l = pairs.length;\n\n this.opcode('pushHash');\n\n for (; i < l; i++) {\n this.pushParam(pairs[i].value);\n }\n while (i--) {\n this.opcode('assignToHash', pairs[i].key);\n }\n this.opcode('popHash');\n },\n\n // HELPERS\n opcode: function(name) {\n this.opcodes.push({\n opcode: name,\n args: slice.call(arguments, 1),\n loc: this.sourceNode[0].loc\n });\n },\n\n addDepth: function(depth) {\n if (!depth) {\n return;\n }\n\n this.useDepths = true;\n },\n\n classifySexpr: function(sexpr) {\n let isSimple = AST.helpers.simpleId(sexpr.path);\n\n let isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]);\n\n // a mustache is an eligible helper if:\n // * its id is simple (a single part, not `this` or `..`)\n let isHelper = !isBlockParam && AST.helpers.helperExpression(sexpr);\n\n // if a mustache is an eligible helper but not a definite\n // helper, it is ambiguous, and will be resolved in a later\n // pass or at runtime.\n let isEligible = !isBlockParam && (isHelper || isSimple);\n\n // if ambiguous, we can possibly resolve the ambiguity now\n // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.\n if (isEligible && !isHelper) {\n let name = sexpr.path.parts[0],\n options = this.options;\n if (options.knownHelpers[name]) {\n isHelper = true;\n } else if (options.knownHelpersOnly) {\n isEligible = false;\n }\n }\n\n if (isHelper) {\n return 'helper';\n } else if (isEligible) {\n return 'ambiguous';\n } else {\n return 'simple';\n }\n },\n\n pushParams: function(params) {\n for (let i = 0, l = params.length; i < l; i++) {\n this.pushParam(params[i]);\n }\n },\n\n pushParam: function(val) {\n let value = val.value != null ? val.value : val.original || '';\n\n if (this.stringParams) {\n if (value.replace) {\n value = value.replace(/^(\\.?\\.\\/)*/g, '').replace(/\\//g, '.');\n }\n\n if (val.depth) {\n this.addDepth(val.depth);\n }\n this.opcode('getContext', val.depth || 0);\n this.opcode('pushStringParam', value, val.type);\n\n if (val.type === 'SubExpression') {\n // SubExpressions get evaluated and passed in\n // in string params mode.\n this.accept(val);\n }\n } else {\n if (this.trackIds) {\n let blockParamIndex;\n if (val.parts && !AST.helpers.scopedId(val) && !val.depth) {\n blockParamIndex = this.blockParamIndex(val.parts[0]);\n }\n if (blockParamIndex) {\n let blockParamChild = val.parts.slice(1).join('.');\n this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild);\n } else {\n value = val.original || value;\n if (value.replace) {\n value = value\n .replace(/^this(?:\\.|$)/, '')\n .replace(/^\\.\\//, '')\n .replace(/^\\.$/, '');\n }\n\n this.opcode('pushId', val.type, value);\n }\n }\n this.accept(val);\n }\n },\n\n setupFullMustacheParams: function(sexpr, program, inverse, omitEmpty) {\n let params = sexpr.params;\n this.pushParams(params);\n\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n\n if (sexpr.hash) {\n this.accept(sexpr.hash);\n } else {\n this.opcode('emptyHash', omitEmpty);\n }\n\n return params;\n },\n\n blockParamIndex: function(name) {\n for (\n let depth = 0, len = this.options.blockParams.length;\n depth < len;\n depth++\n ) {\n let blockParams = this.options.blockParams[depth],\n param = blockParams && indexOf(blockParams, name);\n if (blockParams && param >= 0) {\n return [depth, param];\n }\n }\n }\n};\n\nexport function precompile(input, options, env) {\n if (\n input == null ||\n (typeof input !== 'string' && input.type !== 'Program')\n ) {\n throw new Exception(\n 'You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' +\n input\n );\n }\n\n options = options || {};\n if (!('data' in options)) {\n options.data = true;\n }\n if (options.compat) {\n options.useDepths = true;\n }\n\n let ast = env.parse(input, options),\n environment = new env.Compiler().compile(ast, options);\n return new env.JavaScriptCompiler().compile(environment, options);\n}\n\nexport function compile(input, options = {}, env) {\n if (\n input == null ||\n (typeof input !== 'string' && input.type !== 'Program')\n ) {\n throw new Exception(\n 'You must pass a string or Handlebars AST to Handlebars.compile. You passed ' +\n input\n );\n }\n\n options = extend({}, options);\n if (!('data' in options)) {\n options.data = true;\n }\n if (options.compat) {\n options.useDepths = true;\n }\n\n let compiled;\n\n function compileInput() {\n let ast = env.parse(input, options),\n environment = new env.Compiler().compile(ast, options),\n templateSpec = new env.JavaScriptCompiler().compile(\n environment,\n options,\n undefined,\n true\n );\n return env.template(templateSpec);\n }\n\n // Template is only compiled on first use and cached after that point.\n function ret(context, execOptions) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled.call(this, context, execOptions);\n }\n ret._setup = function(setupOptions) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled._setup(setupOptions);\n };\n ret._child = function(i, data, blockParams, depths) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled._child(i, data, blockParams, depths);\n };\n return ret;\n}\n\nfunction argEquals(a, b) {\n if (a === b) {\n return true;\n }\n\n if (isArray(a) && isArray(b) && a.length === b.length) {\n for (let i = 0; i < a.length; i++) {\n if (!argEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n}\n\nfunction transformLiteralToPath(sexpr) {\n if (!sexpr.path.parts) {\n let literal = sexpr.path;\n // Casting to string here to make false and 0 literal values play nicely with the rest\n // of the system.\n sexpr.path = {\n type: 'PathExpression',\n data: false,\n depth: 0,\n parts: [literal.original + ''],\n original: literal.original + '',\n loc: literal.loc\n };\n }\n}\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // \u201Csources\u201D entry. This value is prepended to the individual\n // entries in the \u201Csource\u201D field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // \u201CsourceRoot\u201D, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n", "/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n", "/* global define, require */\nimport { isArray } from '../utils';\n\nlet SourceNode;\n\ntry {\n /* istanbul ignore next */\n if (typeof define !== 'function' || !define.amd) {\n // We don't support this in AMD environments. For these environments, we assume that\n // they are running on the browser and thus have no need for the source-map library.\n let SourceMap = require('source-map');\n SourceNode = SourceMap.SourceNode;\n }\n} catch (err) {\n /* NOP */\n}\n\n/* istanbul ignore if: tested but not covered in istanbul due to dist build */\nif (!SourceNode) {\n SourceNode = function(line, column, srcFile, chunks) {\n this.src = '';\n if (chunks) {\n this.add(chunks);\n }\n };\n /* istanbul ignore next */\n SourceNode.prototype = {\n add: function(chunks) {\n if (isArray(chunks)) {\n chunks = chunks.join('');\n }\n this.src += chunks;\n },\n prepend: function(chunks) {\n if (isArray(chunks)) {\n chunks = chunks.join('');\n }\n this.src = chunks + this.src;\n },\n toStringWithSourceMap: function() {\n return { code: this.toString() };\n },\n toString: function() {\n return this.src;\n }\n };\n}\n\nfunction castChunk(chunk, codeGen, loc) {\n if (isArray(chunk)) {\n let ret = [];\n\n for (let i = 0, len = chunk.length; i < len; i++) {\n ret.push(codeGen.wrap(chunk[i], loc));\n }\n return ret;\n } else if (typeof chunk === 'boolean' || typeof chunk === 'number') {\n // Handle primitives that the SourceNode will throw up on\n return chunk + '';\n }\n return chunk;\n}\n\nfunction CodeGen(srcFile) {\n this.srcFile = srcFile;\n this.source = [];\n}\n\nCodeGen.prototype = {\n isEmpty() {\n return !this.source.length;\n },\n prepend: function(source, loc) {\n this.source.unshift(this.wrap(source, loc));\n },\n push: function(source, loc) {\n this.source.push(this.wrap(source, loc));\n },\n\n merge: function() {\n let source = this.empty();\n this.each(function(line) {\n source.add([' ', line, '\\n']);\n });\n return source;\n },\n\n each: function(iter) {\n for (let i = 0, len = this.source.length; i < len; i++) {\n iter(this.source[i]);\n }\n },\n\n empty: function() {\n let loc = this.currentLocation || { start: {} };\n return new SourceNode(loc.start.line, loc.start.column, this.srcFile);\n },\n wrap: function(chunk, loc = this.currentLocation || { start: {} }) {\n if (chunk instanceof SourceNode) {\n return chunk;\n }\n\n chunk = castChunk(chunk, this, loc);\n\n return new SourceNode(\n loc.start.line,\n loc.start.column,\n this.srcFile,\n chunk\n );\n },\n\n functionCall: function(fn, type, params) {\n params = this.generateList(params);\n return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']);\n },\n\n quotedString: function(str) {\n return (\n '\"' +\n (str + '')\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/\\u2028/g, '\\\\u2028') // Per Ecma-262 7.3 + 7.8.4\n .replace(/\\u2029/g, '\\\\u2029') +\n '\"'\n );\n },\n\n objectLiteral: function(obj) {\n let pairs = [];\n\n Object.keys(obj).forEach(key => {\n let value = castChunk(obj[key], this);\n if (value !== 'undefined') {\n pairs.push([this.quotedString(key), ':', value]);\n }\n });\n\n let ret = this.generateList(pairs);\n ret.prepend('{');\n ret.add('}');\n return ret;\n },\n\n generateList: function(entries) {\n let ret = this.empty();\n\n for (let i = 0, len = entries.length; i < len; i++) {\n if (i) {\n ret.add(',');\n }\n\n ret.add(castChunk(entries[i], this));\n }\n\n return ret;\n },\n\n generateArray: function(entries) {\n let ret = this.generateList(entries);\n ret.prepend('[');\n ret.add(']');\n\n return ret;\n }\n};\n\nexport default CodeGen;\n", "import { COMPILER_REVISION, REVISION_CHANGES } from '../base';\nimport Exception from '../exception';\nimport { isArray } from '../utils';\nimport CodeGen from './code-gen';\n\nfunction Literal(value) {\n this.value = value;\n}\n\nfunction JavaScriptCompiler() {}\n\nJavaScriptCompiler.prototype = {\n // PUBLIC API: You can override these methods in a subclass to provide\n // alternative compiled forms for name lookup and buffering semantics\n nameLookup: function(parent, name /*, type */) {\n return this.internalNameLookup(parent, name);\n },\n depthedLookup: function(name) {\n return [\n this.aliasable('container.lookup'),\n '(depths, ',\n JSON.stringify(name),\n ')'\n ];\n },\n\n compilerInfo: function() {\n const revision = COMPILER_REVISION,\n versions = REVISION_CHANGES[revision];\n return [revision, versions];\n },\n\n appendToBuffer: function(source, location, explicit) {\n // Force a source as this simplifies the merge logic.\n if (!isArray(source)) {\n source = [source];\n }\n source = this.source.wrap(source, location);\n\n if (this.environment.isSimple) {\n return ['return ', source, ';'];\n } else if (explicit) {\n // This is a case where the buffer operation occurs as a child of another\n // construct, generally braces. We have to explicitly output these buffer\n // operations to ensure that the emitted code goes in the correct location.\n return ['buffer += ', source, ';'];\n } else {\n source.appendToBuffer = true;\n return source;\n }\n },\n\n initializeBuffer: function() {\n return this.quotedString('');\n },\n // END PUBLIC API\n internalNameLookup: function(parent, name) {\n this.lookupPropertyFunctionIsUsed = true;\n return ['lookupProperty(', parent, ',', JSON.stringify(name), ')'];\n },\n\n lookupPropertyFunctionIsUsed: false,\n\n compile: function(environment, options, context, asObject) {\n this.environment = environment;\n this.options = options;\n this.stringParams = this.options.stringParams;\n this.trackIds = this.options.trackIds;\n this.precompile = !asObject;\n\n this.name = this.environment.name;\n this.isChild = !!context;\n this.context = context || {\n decorators: [],\n programs: [],\n environments: []\n };\n\n this.preamble();\n\n this.stackSlot = 0;\n this.stackVars = [];\n this.aliases = {};\n this.registers = { list: [] };\n this.hashes = [];\n this.compileStack = [];\n this.inlineStack = [];\n this.blockParams = [];\n\n this.compileChildren(environment, options);\n\n this.useDepths =\n this.useDepths ||\n environment.useDepths ||\n environment.useDecorators ||\n this.options.compat;\n this.useBlockParams = this.useBlockParams || environment.useBlockParams;\n\n let opcodes = environment.opcodes,\n opcode,\n firstLoc,\n i,\n l;\n\n for (i = 0, l = opcodes.length; i < l; i++) {\n opcode = opcodes[i];\n\n this.source.currentLocation = opcode.loc;\n firstLoc = firstLoc || opcode.loc;\n this[opcode.opcode].apply(this, opcode.args);\n }\n\n // Flush any trailing content that might be pending.\n this.source.currentLocation = firstLoc;\n this.pushSource('');\n\n /* istanbul ignore next */\n if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {\n throw new Exception('Compile completed with content left on stack');\n }\n\n if (!this.decorators.isEmpty()) {\n this.useDecorators = true;\n\n this.decorators.prepend([\n 'var decorators = container.decorators, ',\n this.lookupPropertyFunctionVarDeclaration(),\n ';\\n'\n ]);\n this.decorators.push('return fn;');\n\n if (asObject) {\n this.decorators = Function.apply(this, [\n 'fn',\n 'props',\n 'container',\n 'depth0',\n 'data',\n 'blockParams',\n 'depths',\n this.decorators.merge()\n ]);\n } else {\n this.decorators.prepend(\n 'function(fn, props, container, depth0, data, blockParams, depths) {\\n'\n );\n this.decorators.push('}\\n');\n this.decorators = this.decorators.merge();\n }\n } else {\n this.decorators = undefined;\n }\n\n let fn = this.createFunctionContext(asObject);\n if (!this.isChild) {\n let ret = {\n compiler: this.compilerInfo(),\n main: fn\n };\n\n if (this.decorators) {\n ret.main_d = this.decorators; // eslint-disable-line camelcase\n ret.useDecorators = true;\n }\n\n let { programs, decorators } = this.context;\n for (i = 0, l = programs.length; i < l; i++) {\n if (programs[i]) {\n ret[i] = programs[i];\n if (decorators[i]) {\n ret[i + '_d'] = decorators[i];\n ret.useDecorators = true;\n }\n }\n }\n\n if (this.environment.usePartial) {\n ret.usePartial = true;\n }\n if (this.options.data) {\n ret.useData = true;\n }\n if (this.useDepths) {\n ret.useDepths = true;\n }\n if (this.useBlockParams) {\n ret.useBlockParams = true;\n }\n if (this.options.compat) {\n ret.compat = true;\n }\n\n if (!asObject) {\n ret.compiler = JSON.stringify(ret.compiler);\n\n this.source.currentLocation = { start: { line: 1, column: 0 } };\n ret = this.objectLiteral(ret);\n\n if (options.srcName) {\n ret = ret.toStringWithSourceMap({ file: options.destName });\n ret.map = ret.map && ret.map.toString();\n } else {\n ret = ret.toString();\n }\n } else {\n ret.compilerOptions = this.options;\n }\n\n return ret;\n } else {\n return fn;\n }\n },\n\n preamble: function() {\n // track the last context pushed into place to allow skipping the\n // getContext opcode when it would be a noop\n this.lastContext = 0;\n this.source = new CodeGen(this.options.srcName);\n this.decorators = new CodeGen(this.options.srcName);\n },\n\n createFunctionContext: function(asObject) {\n let varDeclarations = '';\n\n let locals = this.stackVars.concat(this.registers.list);\n if (locals.length > 0) {\n varDeclarations += ', ' + locals.join(', ');\n }\n\n // Generate minimizer alias mappings\n //\n // When using true SourceNodes, this will update all references to the given alias\n // as the source nodes are reused in situ. For the non-source node compilation mode,\n // aliases will not be used, but this case is already being run on the client and\n // we aren't concern about minimizing the template size.\n let aliasCount = 0;\n Object.keys(this.aliases).forEach(alias => {\n let node = this.aliases[alias];\n if (node.children && node.referenceCount > 1) {\n varDeclarations += ', alias' + ++aliasCount + '=' + alias;\n node.children[0] = 'alias' + aliasCount;\n }\n });\n\n if (this.lookupPropertyFunctionIsUsed) {\n varDeclarations += ', ' + this.lookupPropertyFunctionVarDeclaration();\n }\n\n let params = ['container', 'depth0', 'helpers', 'partials', 'data'];\n\n if (this.useBlockParams || this.useDepths) {\n params.push('blockParams');\n }\n if (this.useDepths) {\n params.push('depths');\n }\n\n // Perform a second pass over the output to merge content when possible\n let source = this.mergeSource(varDeclarations);\n\n if (asObject) {\n params.push(source);\n\n return Function.apply(this, params);\n } else {\n return this.source.wrap([\n 'function(',\n params.join(','),\n ') {\\n ',\n source,\n '}'\n ]);\n }\n },\n mergeSource: function(varDeclarations) {\n let isSimple = this.environment.isSimple,\n appendOnly = !this.forceBuffer,\n appendFirst,\n sourceSeen,\n bufferStart,\n bufferEnd;\n this.source.each(line => {\n if (line.appendToBuffer) {\n if (bufferStart) {\n line.prepend(' + ');\n } else {\n bufferStart = line;\n }\n bufferEnd = line;\n } else {\n if (bufferStart) {\n if (!sourceSeen) {\n appendFirst = true;\n } else {\n bufferStart.prepend('buffer += ');\n }\n bufferEnd.add(';');\n bufferStart = bufferEnd = undefined;\n }\n\n sourceSeen = true;\n if (!isSimple) {\n appendOnly = false;\n }\n }\n });\n\n if (appendOnly) {\n if (bufferStart) {\n bufferStart.prepend('return ');\n bufferEnd.add(';');\n } else if (!sourceSeen) {\n this.source.push('return \"\";');\n }\n } else {\n varDeclarations +=\n ', buffer = ' + (appendFirst ? '' : this.initializeBuffer());\n\n if (bufferStart) {\n bufferStart.prepend('return buffer + ');\n bufferEnd.add(';');\n } else {\n this.source.push('return buffer;');\n }\n }\n\n if (varDeclarations) {\n this.source.prepend(\n 'var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\\n')\n );\n }\n\n return this.source.merge();\n },\n\n lookupPropertyFunctionVarDeclaration: function() {\n return `\n lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }\n `.trim();\n },\n\n // [blockValue]\n //\n // On stack, before: hash, inverse, program, value\n // On stack, after: return value of blockHelperMissing\n //\n // The purpose of this opcode is to take a block of the form\n // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and\n // replace it on the stack with the result of properly\n // invoking blockHelperMissing.\n blockValue: function(name) {\n let blockHelperMissing = this.aliasable(\n 'container.hooks.blockHelperMissing'\n ),\n params = [this.contextName(0)];\n this.setupHelperArgs(name, 0, params);\n\n let blockName = this.popStack();\n params.splice(1, 0, blockName);\n\n this.push(this.source.functionCall(blockHelperMissing, 'call', params));\n },\n\n // [ambiguousBlockValue]\n //\n // On stack, before: hash, inverse, program, value\n // Compiler value, before: lastHelper=value of last found helper, if any\n // On stack, after, if no lastHelper: same as [blockValue]\n // On stack, after, if lastHelper: value\n ambiguousBlockValue: function() {\n // We're being a bit cheeky and reusing the options value from the prior exec\n let blockHelperMissing = this.aliasable(\n 'container.hooks.blockHelperMissing'\n ),\n params = [this.contextName(0)];\n this.setupHelperArgs('', 0, params, true);\n\n this.flushInline();\n\n let current = this.topStack();\n params.splice(1, 0, current);\n\n this.pushSource([\n 'if (!',\n this.lastHelper,\n ') { ',\n current,\n ' = ',\n this.source.functionCall(blockHelperMissing, 'call', params),\n '}'\n ]);\n },\n\n // [appendContent]\n //\n // On stack, before: ...\n // On stack, after: ...\n //\n // Appends the string value of `content` to the current buffer\n appendContent: function(content) {\n if (this.pendingContent) {\n content = this.pendingContent + content;\n } else {\n this.pendingLocation = this.source.currentLocation;\n }\n\n this.pendingContent = content;\n },\n\n // [append]\n //\n // On stack, before: value, ...\n // On stack, after: ...\n //\n // Coerces `value` to a String and appends it to the current buffer.\n //\n // If `value` is truthy, or 0, it is coerced into a string and appended\n // Otherwise, the empty string is appended\n append: function() {\n if (this.isInline()) {\n this.replaceStack(current => [' != null ? ', current, ' : \"\"']);\n\n this.pushSource(this.appendToBuffer(this.popStack()));\n } else {\n let local = this.popStack();\n this.pushSource([\n 'if (',\n local,\n ' != null) { ',\n this.appendToBuffer(local, undefined, true),\n ' }'\n ]);\n if (this.environment.isSimple) {\n this.pushSource([\n 'else { ',\n this.appendToBuffer(\"''\", undefined, true),\n ' }'\n ]);\n }\n }\n },\n\n // [appendEscaped]\n //\n // On stack, before: value, ...\n // On stack, after: ...\n //\n // Escape `value` and append it to the buffer\n appendEscaped: function() {\n this.pushSource(\n this.appendToBuffer([\n this.aliasable('container.escapeExpression'),\n '(',\n this.popStack(),\n ')'\n ])\n );\n },\n\n // [getContext]\n //\n // On stack, before: ...\n // On stack, after: ...\n // Compiler value, after: lastContext=depth\n //\n // Set the value of the `lastContext` compiler value to the depth\n getContext: function(depth) {\n this.lastContext = depth;\n },\n\n // [pushContext]\n //\n // On stack, before: ...\n // On stack, after: currentContext, ...\n //\n // Pushes the value of the current context onto the stack.\n pushContext: function() {\n this.pushStackLiteral(this.contextName(this.lastContext));\n },\n\n // [lookupOnContext]\n //\n // On stack, before: ...\n // On stack, after: currentContext[name], ...\n //\n // Looks up the value of `name` on the current context and pushes\n // it onto the stack.\n lookupOnContext: function(parts, falsy, strict, scoped) {\n let i = 0;\n\n if (!scoped && this.options.compat && !this.lastContext) {\n // The depthed query is expected to handle the undefined logic for the root level that\n // is implemented below, so we evaluate that directly in compat mode\n this.push(this.depthedLookup(parts[i++]));\n } else {\n this.pushContext();\n }\n\n this.resolvePath('context', parts, i, falsy, strict);\n },\n\n // [lookupBlockParam]\n //\n // On stack, before: ...\n // On stack, after: blockParam[name], ...\n //\n // Looks up the value of `parts` on the given block param and pushes\n // it onto the stack.\n lookupBlockParam: function(blockParamId, parts) {\n this.useBlockParams = true;\n\n this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']);\n this.resolvePath('context', parts, 1);\n },\n\n // [lookupData]\n //\n // On stack, before: ...\n // On stack, after: data, ...\n //\n // Push the data lookup operator\n lookupData: function(depth, parts, strict) {\n if (!depth) {\n this.pushStackLiteral('data');\n } else {\n this.pushStackLiteral('container.data(data, ' + depth + ')');\n }\n\n this.resolvePath('data', parts, 0, true, strict);\n },\n\n resolvePath: function(type, parts, i, falsy, strict) {\n if (this.options.strict || this.options.assumeObjects) {\n this.push(\n strictLookup(this.options.strict && strict, this, parts, i, type)\n );\n return;\n }\n\n let len = parts.length;\n for (; i < len; i++) {\n /* eslint-disable no-loop-func */\n this.replaceStack(current => {\n let lookup = this.nameLookup(current, parts[i], type);\n // We want to ensure that zero and false are handled properly if the context (falsy flag)\n // needs to have the special handling for these values.\n if (!falsy) {\n return [' != null ? ', lookup, ' : ', current];\n } else {\n // Otherwise we can use generic falsy handling\n return [' && ', lookup];\n }\n });\n /* eslint-enable no-loop-func */\n }\n },\n\n // [resolvePossibleLambda]\n //\n // On stack, before: value, ...\n // On stack, after: resolved value, ...\n //\n // If the `value` is a lambda, replace it on the stack by\n // the return value of the lambda\n resolvePossibleLambda: function() {\n this.push([\n this.aliasable('container.lambda'),\n '(',\n this.popStack(),\n ', ',\n this.contextName(0),\n ')'\n ]);\n },\n\n // [pushStringParam]\n //\n // On stack, before: ...\n // On stack, after: string, currentContext, ...\n //\n // This opcode is designed for use in string mode, which\n // provides the string value of a parameter along with its\n // depth rather than resolving it immediately.\n pushStringParam: function(string, type) {\n this.pushContext();\n this.pushString(type);\n\n // If it's a subexpression, the string result\n // will be pushed after this opcode.\n if (type !== 'SubExpression') {\n if (typeof string === 'string') {\n this.pushString(string);\n } else {\n this.pushStackLiteral(string);\n }\n }\n },\n\n emptyHash: function(omitEmpty) {\n if (this.trackIds) {\n this.push('{}'); // hashIds\n }\n if (this.stringParams) {\n this.push('{}'); // hashContexts\n this.push('{}'); // hashTypes\n }\n this.pushStackLiteral(omitEmpty ? 'undefined' : '{}');\n },\n pushHash: function() {\n if (this.hash) {\n this.hashes.push(this.hash);\n }\n this.hash = { values: {}, types: [], contexts: [], ids: [] };\n },\n popHash: function() {\n let hash = this.hash;\n this.hash = this.hashes.pop();\n\n if (this.trackIds) {\n this.push(this.objectLiteral(hash.ids));\n }\n if (this.stringParams) {\n this.push(this.objectLiteral(hash.contexts));\n this.push(this.objectLiteral(hash.types));\n }\n\n this.push(this.objectLiteral(hash.values));\n },\n\n // [pushString]\n //\n // On stack, before: ...\n // On stack, after: quotedString(string), ...\n //\n // Push a quoted version of `string` onto the stack\n pushString: function(string) {\n this.pushStackLiteral(this.quotedString(string));\n },\n\n // [pushLiteral]\n //\n // On stack, before: ...\n // On stack, after: value, ...\n //\n // Pushes a value onto the stack. This operation prevents\n // the compiler from creating a temporary variable to hold\n // it.\n pushLiteral: function(value) {\n this.pushStackLiteral(value);\n },\n\n // [pushProgram]\n //\n // On stack, before: ...\n // On stack, after: program(guid), ...\n //\n // Push a program expression onto the stack. This takes\n // a compile-time guid and converts it into a runtime-accessible\n // expression.\n pushProgram: function(guid) {\n if (guid != null) {\n this.pushStackLiteral(this.programExpression(guid));\n } else {\n this.pushStackLiteral(null);\n }\n },\n\n // [registerDecorator]\n //\n // On stack, before: hash, program, params..., ...\n // On stack, after: ...\n //\n // Pops off the decorator's parameters, invokes the decorator,\n // and inserts the decorator into the decorators list.\n registerDecorator(paramSize, name) {\n let foundDecorator = this.nameLookup('decorators', name, 'decorator'),\n options = this.setupHelperArgs(name, paramSize);\n\n this.decorators.push([\n 'fn = ',\n this.decorators.functionCall(foundDecorator, '', [\n 'fn',\n 'props',\n 'container',\n options\n ]),\n ' || fn;'\n ]);\n },\n\n // [invokeHelper]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of helper invocation\n //\n // Pops off the helper's parameters, invokes the helper,\n // and pushes the helper's return value onto the stack.\n //\n // If the helper is not found, `helperMissing` is called.\n invokeHelper: function(paramSize, name, isSimple) {\n let nonHelper = this.popStack(),\n helper = this.setupHelper(paramSize, name);\n\n let possibleFunctionCalls = [];\n\n if (isSimple) {\n // direct call to helper\n possibleFunctionCalls.push(helper.name);\n }\n // call a function from the input object\n possibleFunctionCalls.push(nonHelper);\n if (!this.options.strict) {\n possibleFunctionCalls.push(\n this.aliasable('container.hooks.helperMissing')\n );\n }\n\n let functionLookupCode = [\n '(',\n this.itemsSeparatedBy(possibleFunctionCalls, '||'),\n ')'\n ];\n let functionCall = this.source.functionCall(\n functionLookupCode,\n 'call',\n helper.callParams\n );\n this.push(functionCall);\n },\n\n itemsSeparatedBy: function(items, separator) {\n let result = [];\n result.push(items[0]);\n for (let i = 1; i < items.length; i++) {\n result.push(separator, items[i]);\n }\n return result;\n },\n // [invokeKnownHelper]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of helper invocation\n //\n // This operation is used when the helper is known to exist,\n // so a `helperMissing` fallback is not required.\n invokeKnownHelper: function(paramSize, name) {\n let helper = this.setupHelper(paramSize, name);\n this.push(this.source.functionCall(helper.name, 'call', helper.callParams));\n },\n\n // [invokeAmbiguous]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of disambiguation\n //\n // This operation is used when an expression like `{{foo}}`\n // is provided, but we don't know at compile-time whether it\n // is a helper or a path.\n //\n // This operation emits more code than the other options,\n // and can be avoided by passing the `knownHelpers` and\n // `knownHelpersOnly` flags at compile-time.\n invokeAmbiguous: function(name, helperCall) {\n this.useRegister('helper');\n\n let nonHelper = this.popStack();\n\n this.emptyHash();\n let helper = this.setupHelper(0, name, helperCall);\n\n let helperName = (this.lastHelper = this.nameLookup(\n 'helpers',\n name,\n 'helper'\n ));\n\n let lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];\n if (!this.options.strict) {\n lookup[0] = '(helper = ';\n lookup.push(\n ' != null ? helper : ',\n this.aliasable('container.hooks.helperMissing')\n );\n }\n\n this.push([\n '(',\n lookup,\n helper.paramsInit ? ['),(', helper.paramsInit] : [],\n '),',\n '(typeof helper === ',\n this.aliasable('\"function\"'),\n ' ? ',\n this.source.functionCall('helper', 'call', helper.callParams),\n ' : helper))'\n ]);\n },\n\n // [invokePartial]\n //\n // On stack, before: context, ...\n // On stack after: result of partial invocation\n //\n // This operation pops off a context, invokes a partial with that context,\n // and pushes the result of the invocation back.\n invokePartial: function(isDynamic, name, indent) {\n let params = [],\n options = this.setupParams(name, 1, params);\n\n if (isDynamic) {\n name = this.popStack();\n delete options.name;\n }\n\n if (indent) {\n options.indent = JSON.stringify(indent);\n }\n options.helpers = 'helpers';\n options.partials = 'partials';\n options.decorators = 'container.decorators';\n\n if (!isDynamic) {\n params.unshift(this.nameLookup('partials', name, 'partial'));\n } else {\n params.unshift(name);\n }\n\n if (this.options.compat) {\n options.depths = 'depths';\n }\n options = this.objectLiteral(options);\n params.push(options);\n\n this.push(this.source.functionCall('container.invokePartial', '', params));\n },\n\n // [assignToHash]\n //\n // On stack, before: value, ..., hash, ...\n // On stack, after: ..., hash, ...\n //\n // Pops a value off the stack and assigns it to the current hash\n assignToHash: function(key) {\n let value = this.popStack(),\n context,\n type,\n id;\n\n if (this.trackIds) {\n id = this.popStack();\n }\n if (this.stringParams) {\n type = this.popStack();\n context = this.popStack();\n }\n\n let hash = this.hash;\n if (context) {\n hash.contexts[key] = context;\n }\n if (type) {\n hash.types[key] = type;\n }\n if (id) {\n hash.ids[key] = id;\n }\n hash.values[key] = value;\n },\n\n pushId: function(type, name, child) {\n if (type === 'BlockParam') {\n this.pushStackLiteral(\n 'blockParams[' +\n name[0] +\n '].path[' +\n name[1] +\n ']' +\n (child ? ' + ' + JSON.stringify('.' + child) : '')\n );\n } else if (type === 'PathExpression') {\n this.pushString(name);\n } else if (type === 'SubExpression') {\n this.pushStackLiteral('true');\n } else {\n this.pushStackLiteral('null');\n }\n },\n\n // HELPERS\n\n compiler: JavaScriptCompiler,\n\n compileChildren: function(environment, options) {\n let children = environment.children,\n child,\n compiler;\n\n for (let i = 0, l = children.length; i < l; i++) {\n child = children[i];\n compiler = new this.compiler(); // eslint-disable-line new-cap\n\n let existing = this.matchExistingProgram(child);\n\n if (existing == null) {\n this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children\n let index = this.context.programs.length;\n child.index = index;\n child.name = 'program' + index;\n this.context.programs[index] = compiler.compile(\n child,\n options,\n this.context,\n !this.precompile\n );\n this.context.decorators[index] = compiler.decorators;\n this.context.environments[index] = child;\n\n this.useDepths = this.useDepths || compiler.useDepths;\n this.useBlockParams = this.useBlockParams || compiler.useBlockParams;\n child.useDepths = this.useDepths;\n child.useBlockParams = this.useBlockParams;\n } else {\n child.index = existing.index;\n child.name = 'program' + existing.index;\n\n this.useDepths = this.useDepths || existing.useDepths;\n this.useBlockParams = this.useBlockParams || existing.useBlockParams;\n }\n }\n },\n matchExistingProgram: function(child) {\n for (let i = 0, len = this.context.environments.length; i < len; i++) {\n let environment = this.context.environments[i];\n if (environment && environment.equals(child)) {\n return environment;\n }\n }\n },\n\n programExpression: function(guid) {\n let child = this.environment.children[guid],\n programParams = [child.index, 'data', child.blockParams];\n\n if (this.useBlockParams || this.useDepths) {\n programParams.push('blockParams');\n }\n if (this.useDepths) {\n programParams.push('depths');\n }\n\n return 'container.program(' + programParams.join(', ') + ')';\n },\n\n useRegister: function(name) {\n if (!this.registers[name]) {\n this.registers[name] = true;\n this.registers.list.push(name);\n }\n },\n\n push: function(expr) {\n if (!(expr instanceof Literal)) {\n expr = this.source.wrap(expr);\n }\n\n this.inlineStack.push(expr);\n return expr;\n },\n\n pushStackLiteral: function(item) {\n this.push(new Literal(item));\n },\n\n pushSource: function(source) {\n if (this.pendingContent) {\n this.source.push(\n this.appendToBuffer(\n this.source.quotedString(this.pendingContent),\n this.pendingLocation\n )\n );\n this.pendingContent = undefined;\n }\n\n if (source) {\n this.source.push(source);\n }\n },\n\n replaceStack: function(callback) {\n let prefix = ['('],\n stack,\n createdStack,\n usedLiteral;\n\n /* istanbul ignore next */\n if (!this.isInline()) {\n throw new Exception('replaceStack on non-inline');\n }\n\n // We want to merge the inline statement into the replacement statement via ','\n let top = this.popStack(true);\n\n if (top instanceof Literal) {\n // Literals do not need to be inlined\n stack = [top.value];\n prefix = ['(', stack];\n usedLiteral = true;\n } else {\n // Get or create the current stack name for use by the inline\n createdStack = true;\n let name = this.incrStack();\n\n prefix = ['((', this.push(name), ' = ', top, ')'];\n stack = this.topStack();\n }\n\n let item = callback.call(this, stack);\n\n if (!usedLiteral) {\n this.popStack();\n }\n if (createdStack) {\n this.stackSlot--;\n }\n this.push(prefix.concat(item, ')'));\n },\n\n incrStack: function() {\n this.stackSlot++;\n if (this.stackSlot > this.stackVars.length) {\n this.stackVars.push('stack' + this.stackSlot);\n }\n return this.topStackName();\n },\n topStackName: function() {\n return 'stack' + this.stackSlot;\n },\n flushInline: function() {\n let inlineStack = this.inlineStack;\n this.inlineStack = [];\n for (let i = 0, len = inlineStack.length; i < len; i++) {\n let entry = inlineStack[i];\n /* istanbul ignore if */\n if (entry instanceof Literal) {\n this.compileStack.push(entry);\n } else {\n let stack = this.incrStack();\n this.pushSource([stack, ' = ', entry, ';']);\n this.compileStack.push(stack);\n }\n }\n },\n isInline: function() {\n return this.inlineStack.length;\n },\n\n popStack: function(wrapped) {\n let inline = this.isInline(),\n item = (inline ? this.inlineStack : this.compileStack).pop();\n\n if (!wrapped && item instanceof Literal) {\n return item.value;\n } else {\n if (!inline) {\n /* istanbul ignore next */\n if (!this.stackSlot) {\n throw new Exception('Invalid stack pop');\n }\n this.stackSlot--;\n }\n return item;\n }\n },\n\n topStack: function() {\n let stack = this.isInline() ? this.inlineStack : this.compileStack,\n item = stack[stack.length - 1];\n\n /* istanbul ignore if */\n if (item instanceof Literal) {\n return item.value;\n } else {\n return item;\n }\n },\n\n contextName: function(context) {\n if (this.useDepths && context) {\n return 'depths[' + context + ']';\n } else {\n return 'depth' + context;\n }\n },\n\n quotedString: function(str) {\n return this.source.quotedString(str);\n },\n\n objectLiteral: function(obj) {\n return this.source.objectLiteral(obj);\n },\n\n aliasable: function(name) {\n let ret = this.aliases[name];\n if (ret) {\n ret.referenceCount++;\n return ret;\n }\n\n ret = this.aliases[name] = this.source.wrap(name);\n ret.aliasable = true;\n ret.referenceCount = 1;\n\n return ret;\n },\n\n setupHelper: function(paramSize, name, blockHelper) {\n let params = [],\n paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper);\n let foundHelper = this.nameLookup('helpers', name, 'helper'),\n callContext = this.aliasable(\n `${this.contextName(0)} != null ? ${this.contextName(\n 0\n )} : (container.nullContext || {})`\n );\n\n return {\n params: params,\n paramsInit: paramsInit,\n name: foundHelper,\n callParams: [callContext].concat(params)\n };\n },\n\n setupParams: function(helper, paramSize, params) {\n let options = {},\n contexts = [],\n types = [],\n ids = [],\n objectArgs = !params,\n param;\n\n if (objectArgs) {\n params = [];\n }\n\n options.name = this.quotedString(helper);\n options.hash = this.popStack();\n\n if (this.trackIds) {\n options.hashIds = this.popStack();\n }\n if (this.stringParams) {\n options.hashTypes = this.popStack();\n options.hashContexts = this.popStack();\n }\n\n let inverse = this.popStack(),\n program = this.popStack();\n\n // Avoid setting fn and inverse if neither are set. This allows\n // helpers to do a check for `if (options.fn)`\n if (program || inverse) {\n options.fn = program || 'container.noop';\n options.inverse = inverse || 'container.noop';\n }\n\n // The parameters go on to the stack in order (making sure that they are evaluated in order)\n // so we need to pop them off the stack in reverse order\n let i = paramSize;\n while (i--) {\n param = this.popStack();\n params[i] = param;\n\n if (this.trackIds) {\n ids[i] = this.popStack();\n }\n if (this.stringParams) {\n types[i] = this.popStack();\n contexts[i] = this.popStack();\n }\n }\n\n if (objectArgs) {\n options.args = this.source.generateArray(params);\n }\n\n if (this.trackIds) {\n options.ids = this.source.generateArray(ids);\n }\n if (this.stringParams) {\n options.types = this.source.generateArray(types);\n options.contexts = this.source.generateArray(contexts);\n }\n\n if (this.options.data) {\n options.data = 'data';\n }\n if (this.useBlockParams) {\n options.blockParams = 'blockParams';\n }\n return options;\n },\n\n setupHelperArgs: function(helper, paramSize, params, useRegister) {\n let options = this.setupParams(helper, paramSize, params);\n options.loc = JSON.stringify(this.source.currentLocation);\n options = this.objectLiteral(options);\n if (useRegister) {\n this.useRegister('options');\n params.push('options');\n return ['options=', options];\n } else if (params) {\n params.push(options);\n return '';\n } else {\n return options;\n }\n }\n};\n\n(function() {\n const reservedWords = (\n 'break else new var' +\n ' case finally return void' +\n ' catch for switch while' +\n ' continue function this with' +\n ' default if throw' +\n ' delete in try' +\n ' do instanceof typeof' +\n ' abstract enum int short' +\n ' boolean export interface static' +\n ' byte extends long super' +\n ' char final native synchronized' +\n ' class float package throws' +\n ' const goto private transient' +\n ' debugger implements protected volatile' +\n ' double import public let yield await' +\n ' null true false'\n ).split(' ');\n\n const compilerWords = (JavaScriptCompiler.RESERVED_WORDS = {});\n\n for (let i = 0, l = reservedWords.length; i < l; i++) {\n compilerWords[reservedWords[i]] = true;\n }\n})();\n\n/**\n * @deprecated May be removed in the next major version\n */\nJavaScriptCompiler.isValidJavaScriptVariableName = function(name) {\n return (\n !JavaScriptCompiler.RESERVED_WORDS[name] &&\n /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name)\n );\n};\n\nfunction strictLookup(requireTerminal, compiler, parts, i, type) {\n let stack = compiler.popStack(),\n len = parts.length;\n if (requireTerminal) {\n len--;\n }\n\n for (; i < len; i++) {\n stack = compiler.nameLookup(stack, parts[i], type);\n }\n\n if (requireTerminal) {\n return [\n compiler.aliasable('container.strict'),\n '(',\n stack,\n ', ',\n compiler.quotedString(parts[i]),\n ', ',\n JSON.stringify(compiler.source.currentLocation),\n ' )'\n ];\n } else {\n return stack;\n }\n}\n\nexport default JavaScriptCompiler;\n", "import runtime from './handlebars.runtime';\n\n// Compiler imports\nimport AST from './handlebars/compiler/ast';\nimport {\n parser as Parser,\n parse,\n parseWithoutProcessing\n} from './handlebars/compiler/base';\nimport { Compiler, compile, precompile } from './handlebars/compiler/compiler';\nimport JavaScriptCompiler from './handlebars/compiler/javascript-compiler';\nimport Visitor from './handlebars/compiler/visitor';\n\nimport noConflict from './handlebars/no-conflict';\n\nlet _create = runtime.create;\nfunction create() {\n let hb = _create();\n\n hb.compile = function(input, options) {\n return compile(input, options, hb);\n };\n hb.precompile = function(input, options) {\n return precompile(input, options, hb);\n };\n\n hb.AST = AST;\n hb.Compiler = Compiler;\n hb.JavaScriptCompiler = JavaScriptCompiler;\n hb.Parser = Parser;\n hb.parse = parse;\n hb.parseWithoutProcessing = parseWithoutProcessing;\n\n return hb;\n}\n\nlet inst = create();\ninst.create = create;\n\nnoConflict(inst);\n\ninst.Visitor = Visitor;\n\ninst['default'] = inst;\n\nexport default inst;\n", "/*\n * Elasticsearch B.V licenses this file to you under the MIT License.\n * See `packages/kbn-handlebars/LICENSE` for more information.\n */\n\n// The handlebars module uses `export =`, so we should technically use `import Handlebars = require('handlebars')`, but Babel will not allow this:\n// https://www.typescriptlang.org/docs/handbook/modules.html#export--and-import--require\nimport Handlebars from 'handlebars';\n\nimport type { CompileOptions, RuntimeOptions, TemplateDelegate } from './types';\nimport { ElasticHandlebarsVisitor } from './visitor';\n\nconst originalCreate = Handlebars.create;\n\nexport { Handlebars };\n\n/**\n * Creates an isolated Handlebars environment.\n *\n * Each environment has its own helpers.\n * This is only necessary for use cases that demand distinct helpers.\n * Most use cases can use the root Handlebars environment directly.\n *\n * @returns A sandboxed/scoped version of the @kbn/handlebars module\n */\nHandlebars.create = function (): typeof Handlebars {\n const SandboxedHandlebars = originalCreate.call(Handlebars) as typeof Handlebars;\n // When creating new Handlebars environments, ensure the custom compileAST function is present in the new environment as well\n SandboxedHandlebars.compileAST = Handlebars.compileAST;\n return SandboxedHandlebars;\n};\n\nHandlebars.compileAST = function (\n input: string | hbs.AST.Program,\n options?: CompileOptions\n): TemplateDelegate {\n if (input == null || (typeof input !== 'string' && input.type !== 'Program')) {\n throw new Handlebars.Exception(\n `You must pass a string or Handlebars AST to Handlebars.compileAST. You passed ${input}`\n );\n }\n\n // If `Handlebars.compileAST` is reassigned, `this` will be undefined.\n const visitor = new ElasticHandlebarsVisitor(this ?? Handlebars, input, options);\n\n return (context: any, runtimeOptions?: RuntimeOptions) => visitor.render(context, runtimeOptions);\n};\n", "/*\n * Elasticsearch B.V licenses this file to you under the MIT License.\n * See `packages/kbn-handlebars/LICENSE` for more information.\n */\n\nimport Handlebars from 'handlebars';\nimport {\n createProtoAccessControl,\n resultIsAllowed,\n // @ts-expect-error: Could not find a declaration file for module\n} from 'handlebars/dist/cjs/handlebars/internal/proto-access';\n// @ts-expect-error: Could not find a declaration file for module\nimport AST from 'handlebars/dist/cjs/handlebars/compiler/ast';\n// @ts-expect-error: Could not find a declaration file for module\nimport { indexOf, createFrame } from 'handlebars/dist/cjs/handlebars/utils';\n// @ts-expect-error: Could not find a declaration file for module\nimport { moveHelperToHooks } from 'handlebars/dist/cjs/handlebars/helpers';\n\nimport type {\n AmbiguousHelperOptions,\n CompileOptions,\n Container,\n DecoratorDelegate,\n DecoratorsHash,\n HelperOptions,\n NodeType,\n NonBlockHelperOptions,\n ProcessableBlockStatementNode,\n ProcessableNode,\n ProcessableNodeWithPathParts,\n ProcessableNodeWithPathPartsOrLiteral,\n ProcessableStatementNode,\n ResolvePartialOptions,\n RuntimeOptions,\n Template,\n TemplateDelegate,\n VisitorHelper,\n} from './types';\nimport { kAmbiguous, kHelper, kSimple } from './symbols';\nimport {\n initData,\n isBlock,\n isDecorator,\n noop,\n toDecoratorOptions,\n transformLiteralToPath,\n} from './utils';\n\nexport class ElasticHandlebarsVisitor extends Handlebars.Visitor {\n private env: typeof Handlebars;\n private contexts: any[] = [];\n private output: any[] = [];\n private template?: string;\n private compileOptions: CompileOptions;\n private runtimeOptions?: RuntimeOptions;\n private blockParamNames: any[][] = [];\n private blockParamValues: any[][] = [];\n private ast?: hbs.AST.Program;\n private container: Container;\n private defaultHelperOptions: Pick;\n private processedRootDecorators = false; // Root decorators should not have access to input arguments. This flag helps us detect them.\n private processedDecoratorsForProgram = new Set(); // It's important that a given program node only has its decorators run once, we use this Map to keep track of them\n\n constructor(\n env: typeof Handlebars,\n input: string | hbs.AST.Program,\n options: CompileOptions = {}\n ) {\n super();\n\n this.env = env;\n\n if (typeof input !== 'string' && input.type === 'Program') {\n this.ast = input;\n } else {\n this.template = input as string;\n }\n\n this.compileOptions = { data: true, ...options };\n this.compileOptions.knownHelpers = Object.assign(\n Object.create(null),\n {\n helperMissing: true,\n blockHelperMissing: true,\n each: true,\n if: true,\n unless: true,\n with: true,\n log: true,\n lookup: true,\n },\n this.compileOptions.knownHelpers\n );\n\n const protoAccessControl = createProtoAccessControl({});\n\n const container: Container = (this.container = {\n helpers: {},\n partials: {},\n decorators: {},\n strict(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new Handlebars.Exception('\"' + name + '\" not defined in ' + obj, {\n loc,\n } as hbs.AST.Node);\n }\n return container.lookupProperty(obj, name);\n },\n // this function is lifted from the handlebars source and slightly modified (lib/handlebars/runtime.js)\n lookupProperty(parent, propertyName) {\n const result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (resultIsAllowed(result, protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n // this function is lifted from the handlebars source and slightly modified (lib/handlebars/runtime.js)\n lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n data(value: any, depth: number) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n hooks: {},\n });\n\n this.defaultHelperOptions = {\n lookupProperty: container.lookupProperty,\n };\n }\n\n render(context: any, options: RuntimeOptions = {}): string {\n this.contexts = [context];\n this.output = [];\n this.runtimeOptions = { ...options };\n this.container.helpers = { ...this.env.helpers, ...options.helpers };\n this.container.partials = { ...this.env.partials, ...options.partials };\n this.container.decorators = {\n ...(this.env.decorators as DecoratorsHash),\n ...options.decorators,\n };\n this.container.hooks = {};\n this.processedRootDecorators = false;\n this.processedDecoratorsForProgram.clear();\n\n if (this.compileOptions.data) {\n this.runtimeOptions.data = initData(context, this.runtimeOptions.data);\n }\n\n const keepHelperInHelpers = false;\n moveHelperToHooks(this.container, 'helperMissing', keepHelperInHelpers);\n moveHelperToHooks(this.container, 'blockHelperMissing', keepHelperInHelpers);\n\n if (!this.ast) {\n this.ast = Handlebars.parse(this.template!);\n }\n\n // The `defaultMain` function contains the default behavior:\n //\n // Generate a \"program\" function based on the root `Program` in the AST and\n // call it. This will start the processing of all the child nodes in the\n // AST.\n const defaultMain: TemplateDelegate = (_context) => {\n const prog = this.generateProgramFunction(this.ast!);\n return prog(_context, this.runtimeOptions);\n };\n\n // Run any decorators that might exist on the root:\n //\n // The `defaultMain` function is passed in, and if there are no root\n // decorators, or if the decorators chooses to do so, the same function is\n // returned from `processDecorators` and the default behavior is retained.\n //\n // Alternatively any of the root decorators might call the `defaultMain`\n // function themselves, process its return value, and return a completely\n // different `main` function.\n const main = this.processDecorators(this.ast, defaultMain);\n this.processedRootDecorators = true;\n\n // Call the `main` function and add the result to the final output.\n const result = main(this.context, options);\n\n if (main === defaultMain) {\n this.output.push(result);\n return this.output.join('');\n } else {\n // We normally expect the return value of `main` to be a string. However,\n // if a decorator is used to override the `defaultMain` function, the\n // return value can be any type. To match the upstream handlebars project\n // behavior, we want the result of rendering the template to be the\n // literal value returned by the decorator.\n //\n // Since the output array in this case always will be empty, we just\n // return that single value instead of attempting to join all the array\n // elements as strings.\n return result;\n }\n }\n\n // ********************************************** //\n // *** Visitor AST Traversal Functions *** //\n // ********************************************** //\n\n Program(program: hbs.AST.Program) {\n this.blockParamNames.unshift(program.blockParams);\n super.Program(program);\n this.blockParamNames.shift();\n }\n\n MustacheStatement(mustache: hbs.AST.MustacheStatement) {\n this.processStatementOrExpression(mustache);\n }\n\n BlockStatement(block: hbs.AST.BlockStatement) {\n this.processStatementOrExpression(block);\n }\n\n PartialStatement(partial: hbs.AST.PartialStatement) {\n this.invokePartial(partial);\n }\n\n PartialBlockStatement(partial: hbs.AST.PartialBlockStatement) {\n this.invokePartial(partial);\n }\n\n // This space is intentionally left blank: We want to override the Visitor\n // class implementation of this method, but since we handle decorators\n // separately before traversing the nodes, we just want to make this a no-op.\n DecoratorBlock(decorator: hbs.AST.DecoratorBlock) {}\n\n // This space is intentionally left blank: We want to override the Visitor\n // class implementation of this method, but since we handle decorators\n // separately before traversing the nodes, we just want to make this a no-op.\n Decorator(decorator: hbs.AST.Decorator) {}\n\n SubExpression(sexpr: hbs.AST.SubExpression) {\n this.processStatementOrExpression(sexpr);\n }\n\n PathExpression(path: hbs.AST.PathExpression) {\n const blockParamId =\n !path.depth && !AST.helpers.scopedId(path) && this.blockParamIndex(path.parts[0]);\n\n let result;\n if (blockParamId) {\n result = this.lookupBlockParam(blockParamId, path);\n } else if (path.data) {\n result = this.lookupData(this.runtimeOptions!.data, path);\n } else {\n result = this.resolvePath(this.contexts[path.depth], path);\n }\n\n this.output.push(result);\n }\n\n ContentStatement(content: hbs.AST.ContentStatement) {\n this.output.push(content.value);\n }\n\n StringLiteral(string: hbs.AST.StringLiteral) {\n this.output.push(string.value);\n }\n\n NumberLiteral(number: hbs.AST.NumberLiteral) {\n this.output.push(number.value);\n }\n\n BooleanLiteral(bool: hbs.AST.BooleanLiteral) {\n this.output.push(bool.value);\n }\n\n UndefinedLiteral() {\n this.output.push(undefined);\n }\n\n NullLiteral() {\n this.output.push(null);\n }\n\n // ********************************************** //\n // *** Visitor AST Helper Functions *** //\n // ********************************************** //\n\n /**\n * Special code for decorators, since they have to be executed ahead of time (before the wrapping program).\n * So we have to look into the program AST body and see if it contains any decorators that we have to process\n * before we can finish processing of the wrapping program.\n */\n private processDecorators(program: hbs.AST.Program, prog: TemplateDelegate) {\n if (!this.processedDecoratorsForProgram.has(program)) {\n this.processedDecoratorsForProgram.add(program);\n const props = {};\n for (const node of program.body) {\n if (isDecorator(node)) {\n prog = this.processDecorator(node, prog, props);\n }\n }\n }\n\n return prog;\n }\n\n private processDecorator(\n decorator: hbs.AST.DecoratorBlock | hbs.AST.Decorator,\n prog: TemplateDelegate,\n props: Record\n ) {\n const options = this.setupDecoratorOptions(decorator);\n\n const result = this.container.lookupProperty(\n this.container.decorators,\n options.name\n )(prog, props, this.container, options);\n\n return Object.assign(result || prog, props);\n }\n\n private processStatementOrExpression(node: ProcessableNodeWithPathPartsOrLiteral) {\n // Calling `transformLiteralToPath` has side-effects!\n // It converts a node from type `ProcessableNodeWithPathPartsOrLiteral` to `ProcessableNodeWithPathParts`\n transformLiteralToPath(node);\n\n switch (this.classifyNode(node as ProcessableNodeWithPathParts)) {\n case kSimple:\n this.processSimpleNode(node as ProcessableNodeWithPathParts);\n break;\n case kHelper:\n this.processHelperNode(node as ProcessableNodeWithPathParts);\n break;\n case kAmbiguous:\n this.processAmbiguousNode(node as ProcessableNodeWithPathParts);\n break;\n }\n }\n\n // Liftet from lib/handlebars/compiler/compiler.js (original name: classifySexpr)\n private classifyNode(node: { path: hbs.AST.PathExpression }): NodeType {\n const isSimple = AST.helpers.simpleId(node.path);\n const isBlockParam = isSimple && !!this.blockParamIndex(node.path.parts[0]);\n\n // a mustache is an eligible helper if:\n // * its id is simple (a single part, not `this` or `..`)\n let isHelper = !isBlockParam && AST.helpers.helperExpression(node);\n\n // if a mustache is an eligible helper but not a definite\n // helper, it is ambiguous, and will be resolved in a later\n // pass or at runtime.\n let isEligible = !isBlockParam && (isHelper || isSimple);\n\n // if ambiguous, we can possibly resolve the ambiguity now\n // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.\n if (isEligible && !isHelper) {\n const name = node.path.parts[0];\n const options = this.compileOptions;\n if (options.knownHelpers && options.knownHelpers[name]) {\n isHelper = true;\n } else if (options.knownHelpersOnly) {\n isEligible = false;\n }\n }\n\n if (isHelper) {\n return kHelper;\n } else if (isEligible) {\n return kAmbiguous;\n } else {\n return kSimple;\n }\n }\n\n // Liftet from lib/handlebars/compiler/compiler.js\n private blockParamIndex(name: string): [number, any] | undefined {\n for (let depth = 0, len = this.blockParamNames.length; depth < len; depth++) {\n const blockParams = this.blockParamNames[depth];\n const param = blockParams && indexOf(blockParams, name);\n if (blockParams && param >= 0) {\n return [depth, param];\n }\n }\n }\n\n // Looks up the value of `parts` on the given block param and pushes\n // it onto the stack.\n private lookupBlockParam(blockParamId: [number, any], path: hbs.AST.PathExpression) {\n const value = this.blockParamValues[blockParamId[0]][blockParamId[1]];\n return this.resolvePath(value, path, 1);\n }\n\n // Push the data lookup operator\n private lookupData(data: any, path: hbs.AST.PathExpression) {\n if (path.depth) {\n data = this.container.data(data, path.depth);\n }\n\n return this.resolvePath(data, path);\n }\n\n private pushToOutputWithEscapeCheck(result: any, node: ProcessableNodeWithPathParts) {\n if (\n !(node as hbs.AST.MustacheStatement).escaped ||\n this.compileOptions.noEscape === true ||\n typeof result !== 'string'\n ) {\n this.output.push(result);\n } else {\n this.output.push(Handlebars.escapeExpression(result));\n }\n }\n\n private processSimpleNode(node: ProcessableNodeWithPathParts) {\n const path = node.path;\n // @ts-expect-error strict is not a valid property on PathExpression, but we used in the same way it's also used in the original handlebars\n path.strict = true;\n const result = this.resolveNodes(path)[0];\n const lambdaResult = this.container.lambda(result, this.context);\n\n if (isBlock(node)) {\n this.blockValue(node, lambdaResult);\n } else {\n this.pushToOutputWithEscapeCheck(lambdaResult, node);\n }\n }\n\n // The purpose of this opcode is to take a block of the form\n // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and\n // replace it on the stack with the result of properly\n // invoking blockHelperMissing.\n private blockValue(node: hbs.AST.BlockStatement, value: any) {\n const name = node.path.original;\n const options = this.setupParams(node, name);\n\n const result = this.container.hooks.blockHelperMissing!.call(this.context, value, options);\n\n this.output.push(result);\n }\n\n private processHelperNode(node: ProcessableNodeWithPathParts) {\n const path = node.path;\n const name = path.parts[0];\n if (this.compileOptions.knownHelpers && this.compileOptions.knownHelpers[name]) {\n this.invokeKnownHelper(node);\n } else if (this.compileOptions.knownHelpersOnly) {\n throw new Handlebars.Exception(\n 'You specified knownHelpersOnly, but used the unknown helper ' + name,\n node\n );\n } else {\n this.invokeHelper(node);\n }\n }\n\n // This operation is used when the helper is known to exist,\n // so a `helperMissing` fallback is not required.\n private invokeKnownHelper(node: ProcessableNodeWithPathParts) {\n const name = node.path.parts[0];\n const helper = this.setupHelper(node, name);\n // TypeScript: `helper.fn` might be `undefined` at this point, but to match the upstream behavior we call it without any guards\n const result = helper.fn!.call(helper.context, ...helper.params, helper.options);\n\n this.pushToOutputWithEscapeCheck(result, node);\n }\n\n // Pops off the helper's parameters, invokes the helper,\n // and pushes the helper's return value onto the stack.\n //\n // If the helper is not found, `helperMissing` is called.\n private invokeHelper(node: ProcessableNodeWithPathParts) {\n const path = node.path;\n const name = path.original;\n const isSimple = AST.helpers.simpleId(path);\n const helper = this.setupHelper(node, name);\n\n const loc = isSimple && helper.fn ? node.loc : path.loc;\n helper.fn = (isSimple && helper.fn) || this.resolveNodes(path)[0];\n\n if (!helper.fn) {\n if (this.compileOptions.strict) {\n helper.fn = this.container.strict(helper.context, name, loc);\n } else {\n helper.fn = this.container.hooks.helperMissing;\n }\n }\n\n // TypeScript: `helper.fn` might be `undefined` at this point, but to match the upstream behavior we call it without any guards\n const result = helper.fn!.call(helper.context, ...helper.params, helper.options);\n\n this.pushToOutputWithEscapeCheck(result, node);\n }\n\n private invokePartial(partial: hbs.AST.PartialStatement | hbs.AST.PartialBlockStatement) {\n const { params } = partial;\n if (params.length > 1) {\n throw new Handlebars.Exception(\n `Unsupported number of partial arguments: ${params.length}`,\n partial\n );\n }\n\n const isDynamic = partial.name.type === 'SubExpression';\n const name = isDynamic\n ? this.resolveNodes(partial.name).join('')\n : (partial.name as hbs.AST.PathExpression).original;\n\n const options: AmbiguousHelperOptions & ResolvePartialOptions = this.setupParams(partial, name);\n options.helpers = this.container.helpers;\n options.partials = this.container.partials;\n options.decorators = this.container.decorators;\n\n let partialBlock;\n if ('fn' in options && options.fn !== noop) {\n const { fn } = options;\n const currentPartialBlock = options.data?.['partial-block'];\n options.data = createFrame(options.data);\n\n // Wrapper function to get access to currentPartialBlock from the closure\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(\n context: any,\n wrapperOptions: { data?: HelperOptions['data'] } = {}\n ) {\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n wrapperOptions.data = createFrame(wrapperOptions.data);\n wrapperOptions.data['partial-block'] = currentPartialBlock;\n return fn(context, wrapperOptions);\n };\n\n if (fn.partials) {\n options.partials = { ...options.partials, ...fn.partials };\n }\n }\n\n let context = {};\n if (params.length === 0 && !this.compileOptions.explicitPartialContext) {\n context = this.context;\n } else if (params.length === 1) {\n context = this.resolveNodes(params[0])[0];\n }\n\n if (Object.keys(options.hash).length > 0) {\n // TODO: context can be an array, but maybe never when we have a hash???\n context = Object.assign({}, context, options.hash);\n }\n\n const partialTemplate: Template | undefined =\n this.container.partials[name] ??\n partialBlock ??\n // TypeScript note: We extend ResolvePartialOptions in our types.ts file\n // to fix an error in the upstream type. When calling back into the\n // upstream code, we just cast back to the non-extended type\n Handlebars.VM.resolvePartial(\n undefined,\n undefined,\n options as Handlebars.ResolvePartialOptions\n );\n\n if (partialTemplate === undefined) {\n throw new Handlebars.Exception(`The partial ${name} could not be found`);\n }\n\n let render;\n if (typeof partialTemplate === 'string') {\n render = this.env.compileAST(partialTemplate, this.compileOptions);\n if (name in this.container.partials) {\n this.container.partials[name] = render;\n }\n } else {\n render = partialTemplate;\n }\n\n let result = render(context, options);\n\n if ('indent' in partial) {\n result =\n partial.indent +\n (this.compileOptions.preventIndent\n ? result\n : result.replace(/\\n(?!$)/g, `\\n${partial.indent}`)); // indent each line, ignoring any trailing linebreak\n }\n\n this.output.push(result);\n }\n\n private processAmbiguousNode(node: ProcessableNodeWithPathParts) {\n const name = node.path.parts[0];\n const helper = this.setupHelper(node, name);\n let { fn: helperFn } = helper;\n\n const loc = helperFn ? node.loc : node.path.loc;\n helperFn = helperFn ?? this.resolveNodes(node.path)[0];\n\n if (helperFn === undefined) {\n if (this.compileOptions.strict) {\n helperFn = this.container.strict(helper.context, name, loc);\n } else {\n helperFn =\n helper.context != null\n ? this.container.lookupProperty(helper.context, name)\n : helper.context;\n if (helperFn == null) helperFn = this.container.hooks.helperMissing;\n }\n }\n\n const helperResult =\n typeof helperFn === 'function'\n ? helperFn.call(helper.context, ...helper.params, helper.options)\n : helperFn;\n\n if (isBlock(node)) {\n const result = helper.fn\n ? helperResult\n : this.container.hooks.blockHelperMissing!.call(this.context, helperResult, helper.options);\n if (result != null) {\n this.output.push(result);\n }\n } else {\n if (\n (node as hbs.AST.MustacheStatement).escaped === false ||\n this.compileOptions.noEscape === true ||\n typeof helperResult !== 'string'\n ) {\n this.output.push(helperResult);\n } else {\n this.output.push(Handlebars.escapeExpression(helperResult));\n }\n }\n }\n\n private setupHelper(node: ProcessableNode, helperName: string): VisitorHelper {\n return {\n fn: this.container.lookupProperty(this.container.helpers, helperName),\n context: this.context,\n params: this.resolveNodes(node.params),\n options: this.setupParams(node, helperName),\n };\n }\n\n private setupDecoratorOptions(decorator: hbs.AST.Decorator | hbs.AST.DecoratorBlock) {\n // TypeScript: The types indicate that `decorator.path` technically can be an `hbs.AST.Literal`. However, the upstream codebase always treats it as an `hbs.AST.PathExpression`, so we do too.\n const name = (decorator.path as hbs.AST.PathExpression).original;\n const options = toDecoratorOptions(this.setupParams(decorator, name));\n\n if (decorator.params.length > 0) {\n if (!this.processedRootDecorators) {\n // When processing the root decorators, temporarily remove the root context so it's not accessible to the decorator\n const context = this.contexts.shift();\n options.args = this.resolveNodes(decorator.params);\n this.contexts.unshift(context);\n } else {\n options.args = this.resolveNodes(decorator.params);\n }\n } else {\n options.args = [];\n }\n\n return options;\n }\n\n private setupParams(node: ProcessableBlockStatementNode, name: string): HelperOptions;\n private setupParams(node: ProcessableStatementNode, name: string): NonBlockHelperOptions;\n private setupParams(node: ProcessableNode, name: string): AmbiguousHelperOptions;\n private setupParams(node: ProcessableNode, name: string) {\n const options: AmbiguousHelperOptions = {\n name,\n hash: this.getHash(node),\n data: this.runtimeOptions!.data,\n loc: { start: node.loc.start, end: node.loc.end },\n ...this.defaultHelperOptions,\n };\n\n if (isBlock(node)) {\n (options as HelperOptions).fn = node.program\n ? this.processDecorators(node.program, this.generateProgramFunction(node.program))\n : noop;\n (options as HelperOptions).inverse = node.inverse\n ? this.processDecorators(node.inverse, this.generateProgramFunction(node.inverse))\n : noop;\n }\n\n return options;\n }\n\n private generateProgramFunction(program: hbs.AST.Program) {\n if (!program) return noop;\n\n const prog: TemplateDelegate = (nextContext: any, runtimeOptions: RuntimeOptions = {}) => {\n runtimeOptions = { ...runtimeOptions };\n\n // inherit data in blockParams from parent program\n runtimeOptions.data = runtimeOptions.data || this.runtimeOptions!.data;\n if (runtimeOptions.blockParams) {\n runtimeOptions.blockParams = runtimeOptions.blockParams.concat(\n this.runtimeOptions!.blockParams\n );\n }\n\n // inherit partials from parent program\n runtimeOptions.partials = runtimeOptions.partials || this.runtimeOptions!.partials;\n\n // stash parent program data\n const tmpRuntimeOptions = this.runtimeOptions;\n this.runtimeOptions = runtimeOptions;\n const shiftContext = nextContext !== this.context;\n if (shiftContext) this.contexts.unshift(nextContext);\n this.blockParamValues.unshift(runtimeOptions.blockParams || []);\n\n // execute child program\n const result = this.resolveNodes(program).join('');\n\n // unstash parent program data\n this.blockParamValues.shift();\n if (shiftContext) this.contexts.shift();\n this.runtimeOptions = tmpRuntimeOptions;\n\n // return result of child program\n return result;\n };\n\n prog.blockParams = program.blockParams?.length ?? 0;\n return prog;\n }\n\n private getHash(statement: { hash?: hbs.AST.Hash }) {\n const result: { [key: string]: any } = {};\n if (!statement.hash) return result;\n for (const { key, value } of statement.hash.pairs) {\n result[key] = this.resolveNodes(value)[0];\n }\n return result;\n }\n\n private resolvePath(obj: any, path: hbs.AST.PathExpression, index = 0) {\n if (this.compileOptions.strict || this.compileOptions.assumeObjects) {\n return this.strictLookup(obj, path);\n }\n\n for (; index < path.parts.length; index++) {\n if (obj == null) return;\n obj = this.container.lookupProperty(obj, path.parts[index]);\n }\n\n return obj;\n }\n\n private strictLookup(obj: any, path: hbs.AST.PathExpression) {\n // @ts-expect-error strict is not a valid property on PathExpression, but we used in the same way it's also used in the original handlebars\n const requireTerminal = this.compileOptions.strict && path.strict;\n const len = path.parts.length - (requireTerminal ? 1 : 0);\n\n for (let i = 0; i < len; i++) {\n obj = this.container.lookupProperty(obj, path.parts[i]);\n }\n\n if (requireTerminal) {\n return this.container.strict(obj, path.parts[len], path.loc);\n } else {\n return obj;\n }\n }\n\n private resolveNodes(nodes: hbs.AST.Node | hbs.AST.Node[]): any[] {\n const currentOutput = this.output;\n this.output = [];\n\n if (Array.isArray(nodes)) {\n this.acceptArray(nodes);\n } else {\n this.accept(nodes);\n }\n\n const result = this.output;\n\n this.output = currentOutput;\n\n return result;\n }\n\n private get context() {\n return this.contexts[0];\n }\n}\n", "/*\n * Elasticsearch B.V licenses this file to you under the MIT License.\n * See `packages/kbn-handlebars/LICENSE` for more information.\n */\n\nexport const kHelper = Symbol('helper');\nexport const kAmbiguous = Symbol('ambiguous');\nexport const kSimple = Symbol('simple');\n", "/*\n * Elasticsearch B.V licenses this file to you under the MIT License.\n * See `packages/kbn-handlebars/LICENSE` for more information.\n */\n\n// @ts-expect-error: Could not find a declaration file for module\nimport { createFrame } from 'handlebars/dist/cjs/handlebars/utils';\n\nimport type { AmbiguousHelperOptions, DecoratorOptions } from './types';\n\nexport function isBlock(node: hbs.AST.Node): node is hbs.AST.BlockStatement {\n return 'program' in node || 'inverse' in node;\n}\n\nexport function isDecorator(\n node: hbs.AST.Node\n): node is hbs.AST.Decorator | hbs.AST.DecoratorBlock {\n return node.type === 'Decorator' || node.type === 'DecoratorBlock';\n}\n\nexport function toDecoratorOptions(options: AmbiguousHelperOptions) {\n // There's really no tests/documentation on this, but to match the upstream codebase we'll remove `lookupProperty` from the decorator context\n delete (options as any).lookupProperty;\n\n return options as DecoratorOptions;\n}\n\nexport function noop() {\n return '';\n}\n\n// liftet from handlebars lib/handlebars/runtime.js\nexport function initData(context: any, data: any) {\n if (!data || !('root' in data)) {\n data = data ? createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\n// liftet from handlebars lib/handlebars/compiler/compiler.js\nexport function transformLiteralToPath(node: { path: hbs.AST.PathExpression | hbs.AST.Literal }) {\n const pathIsLiteral = 'parts' in node.path === false;\n\n if (pathIsLiteral) {\n const literal = node.path;\n // @ts-expect-error: Not all `hbs.AST.Literal` sub-types has an `original` property, but that's ok, in that case we just want `undefined`\n const original = literal.original;\n // Casting to string here to make false and 0 literal values play nicely with the rest\n // of the system.\n node.path = {\n type: 'PathExpression',\n data: false,\n depth: 0,\n parts: [original + ''],\n original: original + '',\n loc: literal.loc,\n };\n }\n}\n\nexport function allowUnsafeEval() {\n try {\n new Function();\n return true;\n } catch (e) {\n return false;\n }\n}\n"], - "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,QAAM,SAAS;MACb,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;;AAGP,QAAM,WAAW;AAAjB,QACE,WAAW;AAEb,aAAS,WAAW,KAAK;AACvB,aAAO,OAAO,GAAG;;AAGZ,aAAS,OAAO,KAAuB;AAC5C,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,iBAAS,OAAO,UAAU,CAAC,GAAG;AAC5B,cAAI,OAAO,UAAU,eAAe,KAAK,UAAU,CAAC,GAAG,GAAG,GAAG;AAC3D,gBAAI,GAAG,IAAI,UAAU,CAAC,EAAE,GAAG;;;;AAKjC,aAAO;;AAGF,QAAI,WAAW,OAAO,UAAU;;AAKvC,QAAI,aAAa,SAAAA,YAAS,OAAO;AAC/B,aAAO,OAAO,UAAU;;AAI1B,QAAI,WAAW,GAAG,GAAG;AACnB,cAOO,aAPP,aAAa,SAAS,OAAO;AAC3B,eACE,OAAO,UAAU,cACjB,SAAS,KAAK,KAAK,MAAM;;;YAItB,aAAA;AAIF,QAAM,UACX,MAAM,WACN,SAAS,OAAO;AACd,aAAO,SAAS,OAAO,UAAU,WAC7B,SAAS,KAAK,KAAK,MAAM,mBACzB;;;AAID,aAASC,SAAQ,OAAO,OAAO;AACpC,eAAS,IAAI,GAAG,MAAM,MAAM,QAAQ,IAAI,KAAK,KAAK;AAChD,YAAI,MAAM,CAAC,MAAM,OAAO;AACtB,iBAAO;;;AAGX,aAAO;;AAGF,aAAS,iBAAiB,QAAQ;AACvC,UAAI,OAAO,WAAW,UAAU;AAE9B,YAAI,UAAU,OAAO,QAAQ;AAC3B,iBAAO,OAAO,OAAM;mBACX,UAAU,MAAM;AACzB,iBAAO;mBACE,CAAC,QAAQ;AAClB,iBAAO,SAAS;;AAMlB,iBAAS,KAAK;;AAGhB,UAAI,CAAC,SAAS,KAAK,MAAM,GAAG;AAC1B,eAAO;;AAET,aAAO,OAAO,QAAQ,UAAU,UAAU;;AAGrC,aAAS,QAAQ,OAAO;AAC7B,UAAI,CAAC,SAAS,UAAU,GAAG;AACzB,eAAO;iBACE,QAAQ,KAAK,KAAK,MAAM,WAAW,GAAG;AAC/C,eAAO;aACF;AACL,eAAO;;;AAIJ,aAASC,aAAY,QAAQ;AAClC,UAAI,QAAQ,OAAO,CAAA,GAAI,MAAM;AAC7B,YAAM,UAAU;AAChB,aAAO;;AAGF,aAAS,YAAY,QAAQ,KAAK;AACvC,aAAO,OAAO;AACd,aAAO;;AAGF,aAAS,kBAAkB,aAAa,IAAI;AACjD,cAAQ,cAAc,cAAc,MAAM,MAAM;;;;;;;;;;AClHlD,QAAM,aAAa,CACjB,eACA,YACA,cACA,iBACA,WACA,QACA,UACA,OAAO;AAGT,aAAS,UAAU,SAAS,MAAM;AAChC,UAAI,MAAM,QAAQ,KAAK,KACrB,OAAI,QACJ,gBAAa,QACb,SAAM,QACN,YAAS;AAEX,UAAI,KAAK;AACP,eAAO,IAAI,MAAM;AACjB,wBAAgB,IAAI,IAAI;AACxB,iBAAS,IAAI,MAAM;AACnB,oBAAY,IAAI,IAAI;AAEpB,mBAAW,QAAQ,OAAO,MAAM;;AAGlC,UAAI,MAAM,MAAM,UAAU,YAAY,KAAK,MAAM,OAAO;AAGxD,eAAS,MAAM,GAAG,MAAM,WAAW,QAAQ,OAAO;AAChD,aAAK,WAAW,GAAG,CAAC,IAAI,IAAI,WAAW,GAAG,CAAC;;AAI7C,UAAI,MAAM,mBAAmB;AAC3B,cAAM,kBAAkB,MAAM,SAAS;;AAGzC,UAAI;AACF,YAAI,KAAK;AACP,eAAK,aAAa;AAClB,eAAK,gBAAgB;AAIrB,cAAI,OAAO,gBAAgB;AACzB,mBAAO,eAAe,MAAM,UAAU;cACpC,OAAO;cACP,YAAY;aACb;AACD,mBAAO,eAAe,MAAM,aAAa;cACvC,OAAO;cACP,YAAY;aACb;iBACI;AACL,iBAAK,SAAS;AACd,iBAAK,YAAY;;;eAGd,KAAK;;;AAKhB,cAAU,YAAY,IAAI,MAAK;yBAEhB;;;;;;;;;;;yBCjEA,SAAS,UAAU;AAChC,eAAS,eAAe,sBAAsB,SAAS,SAAS,SAAS;AACvE,YAAI,UAAU,QAAQ,SACpB,KAAK,QAAQ;AAEf,YAAI,YAAY,MAAM;AACpB,iBAAO,GAAG,IAAI;mBACL,YAAY,SAAS,WAAW,MAAM;AAC/C,iBAAO,QAAQ,IAAI;mBACV,OAAA,QAAQ,OAAO,GAAG;AAC3B,cAAI,QAAQ,SAAS,GAAG;AACtB,gBAAI,QAAQ,KAAK;AACf,sBAAQ,MAAM,CAAC,QAAQ,IAAI;;AAG7B,mBAAO,SAAS,QAAQ,KAAK,SAAS,OAAO;iBACxC;AACL,mBAAO,QAAQ,IAAI;;eAEhB;AACL,cAAI,QAAQ,QAAQ,QAAQ,KAAK;AAC/B,gBAAI,OAAO,OAAA,YAAY,QAAQ,IAAI;AACnC,iBAAK,cAAc,OAAA,kBACjB,QAAQ,KAAK,aACb,QAAQ,IAAI;AAEd,sBAAU,EAAE,KAAU;;AAGxB,iBAAO,GAAG,SAAS,OAAO;;OAE7B;;;;;;;;;;;;;;;;;yBCxBY,SAAS,UAAU;AAChC,eAAS,eAAe,QAAQ,SAAS,SAAS,SAAS;AACzD,YAAI,CAAC,SAAS;AACZ,gBAAM,IAAA,YAAA,SAAA,EAAc,6BAA6B;;AAGnD,YAAI,KAAK,QAAQ,IACf,UAAU,QAAQ,SAClB,IAAI,GACJ,MAAM,IACN,OAAI,QACJ,cAAW;AAEb,YAAI,QAAQ,QAAQ,QAAQ,KAAK;AAC/B,wBACE,OAAA,kBAAkB,QAAQ,KAAK,aAAa,QAAQ,IAAI,CAAC,CAAC,IAAI;;AAGlE,YAAI,OAAA,WAAW,OAAO,GAAG;AACvB,oBAAU,QAAQ,KAAK,IAAI;;AAG7B,YAAI,QAAQ,MAAM;AAChB,iBAAO,OAAA,YAAY,QAAQ,IAAI;;AAGjC,iBAAS,cAAc,OAAO,OAAO,MAAM;AACzC,cAAI,MAAM;AACR,iBAAK,MAAM;AACX,iBAAK,QAAQ;AACb,iBAAK,QAAQ,UAAU;AACvB,iBAAK,OAAO,CAAC,CAAC;AAEd,gBAAI,aAAa;AACf,mBAAK,cAAc,cAAc;;;AAIrC,gBACE,MACA,GAAG,QAAQ,KAAK,GAAG;YACjB;YACA,aAAa,OAAA,YACX,CAAC,QAAQ,KAAK,GAAG,KAAK,GACtB,CAAC,cAAc,OAAO,IAAI,CAAC;WAE9B;;AAGL,YAAI,WAAW,OAAO,YAAY,UAAU;AAC1C,cAAI,OAAA,QAAQ,OAAO,GAAG;AACpB,qBAAS,IAAI,QAAQ,QAAQ,IAAI,GAAG,KAAK;AACvC,kBAAI,KAAK,SAAS;AAChB,8BAAc,GAAG,GAAG,MAAM,QAAQ,SAAS,CAAC;;;qBAGvC,OAAO,WAAW,cAAc,QAAQ,OAAO,QAAQ,GAAG;AACnE,gBAAM,aAAa,CAAA;AACnB,gBAAM,WAAW,QAAQ,OAAO,QAAQ,EAAC;AACzC,qBAAS,KAAK,SAAS,KAAI,GAAI,CAAC,GAAG,MAAM,KAAK,SAAS,KAAI,GAAI;AAC7D,yBAAW,KAAK,GAAG,KAAK;;AAE1B,sBAAU;AACV,qBAAS,IAAI,QAAQ,QAAQ,IAAI,GAAG,KAAK;AACvC,4BAAc,GAAG,GAAG,MAAM,QAAQ,SAAS,CAAC;;iBAEzC;;AACL,kBAAI,WAAQ;AAEZ,qBAAO,KAAK,OAAO,EAAE,QAAQ,SAAA,KAAO;AAIlC,oBAAI,aAAa,QAAW;AAC1B,gCAAc,UAAU,IAAI,CAAC;;AAE/B,2BAAW;AACX;eACD;AACD,kBAAI,aAAa,QAAW;AAC1B,8BAAc,UAAU,IAAI,GAAG,IAAI;;;;;AAKzC,YAAI,MAAM,GAAG;AACX,gBAAM,QAAQ,IAAI;;AAGpB,eAAO;OACR;;;;;;;;;;;;;;;;yBCjGY,SAAS,UAAU;AAChC,eAAS,eAAe,iBAAiB,WAAgC;AACvE,YAAI,UAAU,WAAW,GAAG;AAE1B,iBAAO;eACF;AAEL,gBAAM,IAAA,YAAA,SAAA,EACJ,sBAAsB,UAAU,UAAU,SAAS,CAAC,EAAE,OAAO,GAAG;;OAGrE;;;;;;;;;;;;;;;;;yBCVY,SAAS,UAAU;AAChC,eAAS,eAAe,MAAM,SAAS,aAAa,SAAS;AAC3D,YAAI,UAAU,UAAU,GAAG;AACzB,gBAAM,IAAA,YAAA,SAAA,EAAc,mCAAmC;;AAEzD,YAAI,OAAA,WAAW,WAAW,GAAG;AAC3B,wBAAc,YAAY,KAAK,IAAI;;AAMrC,YAAK,CAAC,QAAQ,KAAK,eAAe,CAAC,eAAgB,OAAA,QAAQ,WAAW,GAAG;AACvE,iBAAO,QAAQ,QAAQ,IAAI;eACtB;AACL,iBAAO,QAAQ,GAAG,IAAI;;OAEzB;AAED,eAAS,eAAe,UAAU,SAAS,aAAa,SAAS;AAC/D,YAAI,UAAU,UAAU,GAAG;AACzB,gBAAM,IAAA,YAAA,SAAA,EAAc,uCAAuC;;AAE7D,eAAO,SAAS,QAAQ,IAAI,EAAE,KAAK,MAAM,aAAa;UACpD,IAAI,QAAQ;UACZ,SAAS,QAAQ;UACjB,MAAM,QAAQ;SACf;OACF;;;;;;;;;;;yBC/BY,SAAS,UAAU;AAChC,eAAS,eAAe,OAAO,WAAiC;AAC9D,YAAI,OAAO,CAAC,MAAS,GACnB,UAAU,UAAU,UAAU,SAAS,CAAC;AAC1C,iBAAS,IAAI,GAAG,IAAI,UAAU,SAAS,GAAG,KAAK;AAC7C,eAAK,KAAK,UAAU,CAAC,CAAC;;AAGxB,YAAI,QAAQ;AACZ,YAAI,QAAQ,KAAK,SAAS,MAAM;AAC9B,kBAAQ,QAAQ,KAAK;mBACZ,QAAQ,QAAQ,QAAQ,KAAK,SAAS,MAAM;AACrD,kBAAQ,QAAQ,KAAK;;AAEvB,aAAK,CAAC,IAAI;AAEV,iBAAS,IAAG,MAAZ,UAAgB,IAAI;OACrB;;;;;;;;;;;yBCjBY,SAAS,UAAU;AAChC,eAAS,eAAe,UAAU,SAAS,KAAK,OAAO,SAAS;AAC9D,YAAI,CAAC,KAAK;AAER,iBAAO;;AAET,eAAO,QAAQ,eAAe,KAAK,KAAK;OACzC;;;;;;;;;;;;;;;;;yBCEY,SAAS,UAAU;AAChC,eAAS,eAAe,QAAQ,SAAS,SAAS,SAAS;AACzD,YAAI,UAAU,UAAU,GAAG;AACzB,gBAAM,IAAA,YAAA,SAAA,EAAc,qCAAqC;;AAE3D,YAAI,OAAA,WAAW,OAAO,GAAG;AACvB,oBAAU,QAAQ,KAAK,IAAI;;AAG7B,YAAI,KAAK,QAAQ;AAEjB,YAAI,CAAC,OAAA,QAAQ,OAAO,GAAG;AACrB,cAAI,OAAO,QAAQ;AACnB,cAAI,QAAQ,QAAQ,QAAQ,KAAK;AAC/B,mBAAO,OAAA,YAAY,QAAQ,IAAI;AAC/B,iBAAK,cAAc,OAAA,kBACjB,QAAQ,KAAK,aACb,QAAQ,IAAI,CAAC,CAAC;;AAIlB,iBAAO,GAAG,SAAS;YACjB;YACA,aAAa,OAAA,YAAY,CAAC,OAAO,GAAG,CAAC,QAAQ,KAAK,WAAW,CAAC;WAC/D;eACI;AACL,iBAAO,QAAQ,QAAQ,IAAI;;OAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7BI,aAAS,uBAAuB,UAAU;AAC/C,kCAAA,SAAA,EAA2B,QAAQ;AACnC,oBAAA,SAAA,EAAa,QAAQ;AACrB,6BAAA,SAAA,EAAsB,QAAQ;AAC9B,kBAAA,SAAA,EAAW,QAAQ;AACnB,mBAAA,SAAA,EAAY,QAAQ;AACpB,sBAAA,SAAA,EAAe,QAAQ;AACvB,oBAAA,SAAA,EAAa,QAAQ;;AAGhB,aAASC,mBAAkB,UAAU,YAAY,YAAY;AAClE,UAAI,SAAS,QAAQ,UAAU,GAAG;AAChC,iBAAS,MAAM,UAAU,IAAI,SAAS,QAAQ,UAAU;AACxD,YAAI,CAAC,YAAY;AACf,iBAAO,SAAS,QAAQ,UAAU;;;;;;;;;;;;;yBCpBzB,SAAS,UAAU;AAChC,eAAS,kBAAkB,UAAU,SAAS,IAAI,OAAO,WAAW,SAAS;AAC3E,YAAI,MAAM;AACV,YAAI,CAAC,MAAM,UAAU;AACnB,gBAAM,WAAW,CAAA;AACjB,gBAAM,SAAS,SAASC,UAAS;AAE/B,gBAAI,WAAW,UAAU;AACzB,sBAAU,WAAW,OAAA,OAAO,CAAA,GAAI,UAAU,MAAM,QAAQ;AACxD,gBAAIC,OAAM,GAAG,SAASD,QAAO;AAC7B,sBAAU,WAAW;AACrB,mBAAOC;;;AAIX,cAAM,SAAS,QAAQ,KAAK,CAAC,CAAC,IAAI,QAAQ;AAE1C,eAAO;OACR;;;;;;;;;;;;;;;;;AClBI,aAAS,0BAA0B,UAAU;AAClD,yBAAA,SAAA,EAAe,QAAQ;;;;;;;;;;;ACDzB,QAAI,SAAS;MACX,WAAW,CAAC,SAAS,QAAQ,QAAQ,OAAO;MAC5C,OAAO;;MAGP,aAAa,SAAA,YAAS,OAAO;AAC3B,YAAI,OAAO,UAAU,UAAU;AAC7B,cAAI,WAAW,OAAA,QAAQ,OAAO,WAAW,MAAM,YAAW,CAAE;AAC5D,cAAI,YAAY,GAAG;AACjB,oBAAQ;iBACH;AACL,oBAAQ,SAAS,OAAO,EAAE;;;AAI9B,eAAO;;;MAIT,KAAK,SAAA,IAAS,OAAmB;AAC/B,gBAAQ,OAAO,YAAY,KAAK;AAEhC,YACE,OAAO,YAAY,eACnB,OAAO,YAAY,OAAO,KAAK,KAAK,OACpC;AACA,cAAI,SAAS,OAAO,UAAU,KAAK;AAEnC,cAAI,CAAC,QAAQ,MAAM,GAAG;AACpB,qBAAS;;4CAVS,UAAO,MAAA,OAAA,IAAA,OAAA,IAAA,CAAA,GAAA,OAAA,GAAA,OAAA,MAAA,QAAA;AAAP,oBAAO,OAAA,CAAA,IAAA,UAAA,IAAA;;AAY3B,kBAAQ,MAAM,EAAA,MAAd,SAAmB,OAAO;;;;yBAKjB;;;;;;;;;;;;AC9BR,aAAS,wBAAkC;wCAAT,UAAO,MAAA,IAAA,GAAA,OAAA,GAAA,OAAA,MAAA,QAAA;AAAP,gBAAO,IAAA,IAAA,UAAA,IAAA;;AAC9C,aAAO,OAAA,OAAA,MAAA,QAAA,CAAO,uBAAO,OAAO,IAAI,CAAC,EAAA,OAAK,OAAO,CAAA;;;;;;;;;;;;;;;;;;;ACN/C,QAAM,mBAAmB,uBAAO,OAAO,IAAI;AAEpC,aAASC,0BAAyB,gBAAgB;AACvD,UAAI,yBAAyB,uBAAO,OAAO,IAAI;AAC/C,6BAAuB,aAAa,IAAI;AACxC,6BAAuB,kBAAkB,IAAI;AAC7C,6BAAuB,kBAAkB,IAAI;AAC7C,6BAAuB,kBAAkB,IAAI;AAE7C,UAAI,2BAA2B,uBAAO,OAAO,IAAI;AAEjD,+BAAyB,WAAW,IAAI;AAExC,aAAO;QACL,YAAY;UACV,WAAW,uBAAA,sBACT,0BACA,eAAe,sBAAsB;UAEvC,cAAc,eAAe;;QAE/B,SAAS;UACP,WAAW,uBAAA,sBACT,wBACA,eAAe,mBAAmB;UAEpC,cAAc,eAAe;;;;AAK5B,aAASC,iBAAgB,QAAQ,oBAAoB,cAAc;AACxE,UAAI,OAAO,WAAW,YAAY;AAChC,eAAO,eAAe,mBAAmB,SAAS,YAAY;aACzD;AACL,eAAO,eAAe,mBAAmB,YAAY,YAAY;;;AAIrE,aAAS,eAAe,2BAA2B,cAAc;AAC/D,UAAI,0BAA0B,UAAU,YAAY,MAAM,QAAW;AACnE,eAAO,0BAA0B,UAAU,YAAY,MAAM;;AAE/D,UAAI,0BAA0B,iBAAiB,QAAW;AACxD,eAAO,0BAA0B;;AAEnC,qCAA+B,YAAY;AAC3C,aAAO;;AAGT,aAAS,+BAA+B,cAAc;AACpD,UAAI,iBAAiB,YAAY,MAAM,MAAM;AAC3C,yBAAiB,YAAY,IAAI;AACjC,iBAAA,SAAA,EAAO,IACL,SACA,iEAA+D,eAAY,2OAEwC;;;AAKlH,aAAS,wBAAwB;AACtC,aAAO,KAAK,gBAAgB,EAAE,QAAQ,SAAA,cAAgB;AACpD,eAAO,iBAAiB,YAAY;OACrC;;;;;;;;;;;;;;;;;;;;;;AC7DI,QAAM,UAAU;;AAChB,QAAM,oBAAoB;;AAC1B,QAAM,oCAAoC;;AAE1C,QAAM,mBAAmB;MAC9B,GAAG;;MACH,GAAG;MACH,GAAG;MACH,GAAG;MACH,GAAG;MACH,GAAG;MACH,GAAG;MACH,GAAG;;;AAGL,QAAM,aAAa;AAEZ,aAAS,sBAAsB,SAAS,UAAU,YAAY;AACnE,WAAK,UAAU,WAAW,CAAA;AAC1B,WAAK,WAAW,YAAY,CAAA;AAC5B,WAAK,aAAa,cAAc,CAAA;AAEhC,eAAA,uBAAuB,IAAI;AAC3B,kBAAA,0BAA0B,IAAI;;AAGhC,0BAAsB,YAAY;MAChC,aAAa;MAEb,QAAM,SAAA,SAAA;MACN,KAAK,SAAA,SAAA,EAAO;MAEZ,gBAAgB,SAAA,eAAS,MAAM,IAAI;AACjC,YAAI,OAAA,SAAS,KAAK,IAAI,MAAM,YAAY;AACtC,cAAI,IAAI;AACN,kBAAM,IAAA,YAAA,SAAA,EAAc,yCAAyC;;AAE/D,iBAAA,OAAO,KAAK,SAAS,IAAI;eACpB;AACL,eAAK,QAAQ,IAAI,IAAI;;;MAGzB,kBAAkB,SAAA,iBAAS,MAAM;AAC/B,eAAO,KAAK,QAAQ,IAAI;;MAG1B,iBAAiB,SAAA,gBAAS,MAAM,SAAS;AACvC,YAAI,OAAA,SAAS,KAAK,IAAI,MAAM,YAAY;AACtC,iBAAA,OAAO,KAAK,UAAU,IAAI;eACrB;AACL,cAAI,OAAO,YAAY,aAAa;AAClC,kBAAM,IAAA,YAAA,SAAA,EAAA,8CACwC,OAAI,gBAAA;;AAGpD,eAAK,SAAS,IAAI,IAAI;;;MAG1B,mBAAmB,SAAA,kBAAS,MAAM;AAChC,eAAO,KAAK,SAAS,IAAI;;MAG3B,mBAAmB,SAAA,kBAAS,MAAM,IAAI;AACpC,YAAI,OAAA,SAAS,KAAK,IAAI,MAAM,YAAY;AACtC,cAAI,IAAI;AACN,kBAAM,IAAA,YAAA,SAAA,EAAc,4CAA4C;;AAElE,iBAAA,OAAO,KAAK,YAAY,IAAI;eACvB;AACL,eAAK,WAAW,IAAI,IAAI;;;MAG5B,qBAAqB,SAAA,oBAAS,MAAM;AAClC,eAAO,KAAK,WAAW,IAAI;;;;;;MAM7B,6BAA2B,SAAA,8BAAG;AAC5B,6BAAA,sBAAA;;;AAIG,QAAI,MAAM,SAAA,SAAA,EAAO;;YAEf,cAAW,OAAA;YAAE,SAAM,SAAA,SAAA;;;;;;;;;AC5F5B,aAAS,WAAW,QAAQ;AAC1B,WAAK,SAAS;;AAGhB,eAAW,UAAU,WAAW,WAAW,UAAU,SAAS,WAAW;AACvE,aAAO,KAAK,KAAK;;yBAGJ;;;;;;;;;;;ACTR,aAAS,WAAW,QAAQ,oBAAoB;AACrD,UAAI,OAAO,WAAW,YAAY;AAGhC,eAAO;;AAET,UAAI,UAAU,SAAVC,WAA4C;AAC9C,YAAM,UAAU,UAAU,UAAU,SAAS,CAAC;AAC9C,kBAAU,UAAU,SAAS,CAAC,IAAI,mBAAmB,OAAO;AAC5D,eAAO,OAAO,MAAM,MAAM,SAAS;;AAErC,aAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCXG,QAAK,wBAAA,MAAA;;;;;;;AAeV,aAAS,cAAc,cAAc;AAC1C,UAAM,mBAAoB,gBAAgB,aAAa,CAAC,KAAM,GAC5D,kBAAe,MAAA;AAEjB,UACE,oBAAgB,MAAA,qCAChB,oBAAgB,MAAA,mBAChB;AACA;;AAGF,UAAI,mBAAgB,MAAA,mCAAsC;AACxD,YAAM,kBAAkB,MAAA,iBAAiB,eAAe,GACtD,mBAAmB,MAAA,iBAAiB,gBAAgB;AACtD,cAAM,IAAA,YAAA,SAAA,EACJ,+IAEE,kBACA,sDACA,mBACA,IAAI;aAEH;AAEL,cAAM,IAAA,YAAA,SAAA,EACJ,0IAEE,aAAa,CAAC,IACd,IAAI;;;AAKL,aAAS,SAAS,cAAc,KAAK;AAE1C,UAAI,CAAC,KAAK;AACR,cAAM,IAAA,YAAA,SAAA,EAAc,mCAAmC;;AAEzD,UAAI,CAAC,gBAAgB,CAAC,aAAa,MAAM;AACvC,cAAM,IAAA,YAAA,SAAA,EAAc,8BAA8B,OAAO,YAAY;;AAGvE,mBAAa,KAAK,YAAY,aAAa;AAI3C,UAAI,GAAG,cAAc,aAAa,QAAQ;AAG1C,UAAM,uCACJ,aAAa,YAAY,aAAa,SAAS,CAAC,MAAM;AAExD,eAAS,qBAAqB,SAAS,SAAS,SAAS;AACvD,YAAI,QAAQ,MAAM;AAChB,oBAAU,MAAM,OAAO,CAAA,GAAI,SAAS,QAAQ,IAAI;AAChD,cAAI,QAAQ,KAAK;AACf,oBAAQ,IAAI,CAAC,IAAI;;;AAGrB,kBAAU,IAAI,GAAG,eAAe,KAAK,MAAM,SAAS,SAAS,OAAO;AAEpE,YAAI,kBAAkB,MAAM,OAAO,CAAA,GAAI,SAAS;UAC9C,OAAO,KAAK;UACZ,oBAAoB,KAAK;SAC1B;AAED,YAAI,SAAS,IAAI,GAAG,cAAc,KAChC,MACA,SACA,SACA,eAAe;AAGjB,YAAI,UAAU,QAAQ,IAAI,SAAS;AACjC,kBAAQ,SAAS,QAAQ,IAAI,IAAI,IAAI,QACnC,SACA,aAAa,iBACb,GAAG;AAEL,mBAAS,QAAQ,SAAS,QAAQ,IAAI,EAAE,SAAS,eAAe;;AAElE,YAAI,UAAU,MAAM;AAClB,cAAI,QAAQ,QAAQ;AAClB,gBAAI,QAAQ,OAAO,MAAM,IAAI;AAC7B,qBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAI,GAAG,KAAK;AAC5C,kBAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,GAAG;AAC5B;;AAGF,oBAAM,CAAC,IAAI,QAAQ,SAAS,MAAM,CAAC;;AAErC,qBAAS,MAAM,KAAK,IAAI;;AAE1B,iBAAO;eACF;AACL,gBAAM,IAAA,YAAA,SAAA,EACJ,iBACE,QAAQ,OACR,0DAA0D;;;AAMlE,UAAI,YAAY;QACd,QAAQ,SAAA,OAAS,KAAK,MAAM,KAAK;AAC/B,cAAI,CAAC,OAAO,EAAE,QAAQ,MAAM;AAC1B,kBAAM,IAAA,YAAA,SAAA,EAAc,MAAM,OAAO,sBAAsB,KAAK;cAC1D;aACD;;AAEH,iBAAO,UAAU,eAAe,KAAK,IAAI;;QAE3C,gBAAgB,SAAA,eAAS,QAAQ,cAAc;AAC7C,cAAI,SAAS,OAAO,YAAY;AAChC,cAAI,UAAU,MAAM;AAClB,mBAAO;;AAET,cAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,YAAY,GAAG;AAC9D,mBAAO;;AAGT,cAAI,qBAAA,gBAAgB,QAAQ,UAAU,oBAAoB,YAAY,GAAG;AACvE,mBAAO;;AAET,iBAAO;;QAET,QAAQ,SAAA,OAAS,QAAQ,MAAM;AAC7B,cAAM,MAAM,OAAO;AACnB,mBAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,gBAAI,SAAS,OAAO,CAAC,KAAK,UAAU,eAAe,OAAO,CAAC,GAAG,IAAI;AAClE,gBAAI,UAAU,MAAM;AAClB,qBAAO,OAAO,CAAC,EAAE,IAAI;;;;QAI3B,QAAQ,SAAA,OAAS,SAAS,SAAS;AACjC,iBAAO,OAAO,YAAY,aAAa,QAAQ,KAAK,OAAO,IAAI;;QAGjE,kBAAkB,MAAM;QACxB,eAAe;QAEf,IAAI,SAAA,GAAS,GAAG;AACd,cAAIC,OAAM,aAAa,CAAC;AACxB,UAAAA,KAAI,YAAY,aAAa,IAAI,IAAI;AACrC,iBAAOA;;QAGT,UAAU,CAAA;QACV,SAAS,SAAA,QAAS,GAAG,MAAM,qBAAqB,aAAa,QAAQ;AACnE,cAAI,iBAAiB,KAAK,SAAS,CAAC,GAClC,KAAK,KAAK,GAAG,CAAC;AAChB,cAAI,QAAQ,UAAU,eAAe,qBAAqB;AACxD,6BAAiB,YACf,MACA,GACA,IACA,MACA,qBACA,aACA,MAAM;qBAEC,CAAC,gBAAgB;AAC1B,6BAAiB,KAAK,SAAS,CAAC,IAAI,YAAY,MAAM,GAAG,EAAE;;AAE7D,iBAAO;;QAGT,MAAM,SAAA,KAAS,OAAO,OAAO;AAC3B,iBAAO,SAAS,SAAS;AACvB,oBAAQ,MAAM;;AAEhB,iBAAO;;QAET,eAAe,SAAA,cAAS,OAAO,QAAQ;AACrC,cAAI,MAAM,SAAS;AAEnB,cAAI,SAAS,UAAU,UAAU,QAAQ;AACvC,kBAAM,MAAM,OAAO,CAAA,GAAI,QAAQ,KAAK;;AAGtC,iBAAO;;;QAGT,aAAa,OAAO,KAAK,CAAA,CAAE;QAE3B,MAAM,IAAI,GAAG;QACb,cAAc,aAAa;;AAG7B,eAAS,IAAI,SAAuB;YAAd,UAAO,UAAA,UAAA,KAAA,UAAA,CAAA,MAAA,SAAG,CAAA,IAAE,UAAA,CAAA;AAChC,YAAI,OAAO,QAAQ;AAEnB,YAAI,OAAO,OAAO;AAClB,YAAI,CAAC,QAAQ,WAAW,aAAa,SAAS;AAC5C,iBAAOC,UAAS,SAAS,IAAI;;AAE/B,YAAI,SAAM,QACR,cAAc,aAAa,iBAAiB,CAAA,IAAK;AACnD,YAAI,aAAa,WAAW;AAC1B,cAAI,QAAQ,QAAQ;AAClB,qBACE,WAAW,QAAQ,OAAO,CAAC,IACvB,CAAC,OAAO,EAAE,OAAO,QAAQ,MAAM,IAC/B,QAAQ;iBACT;AACL,qBAAS,CAAC,OAAO;;;AAIrB,iBAAS,KAAKC,UAAuB;AACnC,iBACE,KACA,aAAa,KACX,WACAA,UACA,UAAU,SACV,UAAU,UACV,MACA,aACA,MAAM;;AAKZ,eAAO,kBACL,aAAa,MACb,MACA,WACA,QAAQ,UAAU,CAAA,GAClB,MACA,WAAW;AAEb,eAAO,KAAK,SAAS,OAAO;;AAG9B,UAAI,QAAQ;AAEZ,UAAI,SAAS,SAAS,SAAS;AAC7B,YAAI,CAAC,QAAQ,SAAS;AACpB,cAAI,gBAAgB,MAAM,OAAO,CAAA,GAAI,IAAI,SAAS,QAAQ,OAAO;AACjE,0CAAgC,eAAe,SAAS;AACxD,oBAAU,UAAU;AAEpB,cAAI,aAAa,YAAY;AAE3B,sBAAU,WAAW,UAAU,cAC7B,QAAQ,UACR,IAAI,QAAQ;;AAGhB,cAAI,aAAa,cAAc,aAAa,eAAe;AACzD,sBAAU,aAAa,MAAM,OAC3B,CAAA,GACA,IAAI,YACJ,QAAQ,UAAU;;AAItB,oBAAU,QAAQ,CAAA;AAClB,oBAAU,qBAAqB,qBAAA,yBAAyB,OAAO;AAE/D,cAAI,sBACF,QAAQ,6BACR;AACF,mBAAA,kBAAkB,WAAW,iBAAiB,mBAAmB;AACjE,mBAAA,kBAAkB,WAAW,sBAAsB,mBAAmB;eACjE;AACL,oBAAU,qBAAqB,QAAQ;AACvC,oBAAU,UAAU,QAAQ;AAC5B,oBAAU,WAAW,QAAQ;AAC7B,oBAAU,aAAa,QAAQ;AAC/B,oBAAU,QAAQ,QAAQ;;;AAI9B,UAAI,SAAS,SAAS,GAAG,MAAM,aAAa,QAAQ;AAClD,YAAI,aAAa,kBAAkB,CAAC,aAAa;AAC/C,gBAAM,IAAA,YAAA,SAAA,EAAc,wBAAwB;;AAE9C,YAAI,aAAa,aAAa,CAAC,QAAQ;AACrC,gBAAM,IAAA,YAAA,SAAA,EAAc,yBAAyB;;AAG/C,eAAO,YACL,WACA,GACA,aAAa,CAAC,GACd,MACA,GACA,aACA,MAAM;;AAGV,aAAO;;AAGF,aAAS,YACd,WACA,GACA,IACA,MACA,qBACA,aACA,QACA;AACA,eAAS,KAAK,SAAuB;YAAd,UAAO,UAAA,UAAA,KAAA,UAAA,CAAA,MAAA,SAAG,CAAA,IAAE,UAAA,CAAA;AACjC,YAAI,gBAAgB;AACpB,YACE,UACA,WAAW,OAAO,CAAC,KACnB,EAAE,YAAY,UAAU,eAAe,OAAO,CAAC,MAAM,OACrD;AACA,0BAAgB,CAAC,OAAO,EAAE,OAAO,MAAM;;AAGzC,eAAO,GACL,WACA,SACA,UAAU,SACV,UAAU,UACV,QAAQ,QAAQ,MAChB,eAAe,CAAC,QAAQ,WAAW,EAAE,OAAO,WAAW,GACvD,aAAa;;AAIjB,aAAO,kBAAkB,IAAI,MAAM,WAAW,QAAQ,MAAM,WAAW;AAEvE,WAAK,UAAU;AACf,WAAK,QAAQ,SAAS,OAAO,SAAS;AACtC,WAAK,cAAc,uBAAuB;AAC1C,aAAO;;AAMF,aAAS,eAAe,SAAS,SAAS,SAAS;AACxD,UAAI,CAAC,SAAS;AACZ,YAAI,QAAQ,SAAS,kBAAkB;AACrC,oBAAU,QAAQ,KAAK,eAAe;eACjC;AACL,oBAAU,QAAQ,SAAS,QAAQ,IAAI;;iBAEhC,CAAC,QAAQ,QAAQ,CAAC,QAAQ,MAAM;AAEzC,gBAAQ,OAAO;AACf,kBAAU,QAAQ,SAAS,OAAO;;AAEpC,aAAO;;AAGF,aAAS,cAAc,SAAS,SAAS,SAAS;AAEvD,UAAM,sBAAsB,QAAQ,QAAQ,QAAQ,KAAK,eAAe;AACxE,cAAQ,UAAU;AAClB,UAAI,QAAQ,KAAK;AACf,gBAAQ,KAAK,cAAc,QAAQ,IAAI,CAAC,KAAK,QAAQ,KAAK;;AAG5D,UAAI,eAAY;AAChB,UAAI,QAAQ,MAAM,QAAQ,OAAOC,OAAM;;AACrC,kBAAQ,OAAO,MAAA,YAAY,QAAQ,IAAI;AAEvC,cAAI,KAAK,QAAQ;AACjB,yBAAe,QAAQ,KAAK,eAAe,IAAI,SAAS,oBACtDD,UAEA;gBADAE,WAAO,UAAA,UAAA,KAAA,UAAA,CAAA,MAAA,SAAG,CAAA,IAAE,UAAA,CAAA;AAIZ,YAAAA,SAAQ,OAAO,MAAA,YAAYA,SAAQ,IAAI;AACvC,YAAAA,SAAQ,KAAK,eAAe,IAAI;AAChC,mBAAO,GAAGF,UAASE,QAAO;;AAE5B,cAAI,GAAG,UAAU;AACf,oBAAQ,WAAW,MAAM,OAAO,CAAA,GAAI,QAAQ,UAAU,GAAG,QAAQ;;;;AAIrE,UAAI,YAAY,UAAa,cAAc;AACzC,kBAAU;;AAGZ,UAAI,YAAY,QAAW;AACzB,cAAM,IAAA,YAAA,SAAA,EAAc,iBAAiB,QAAQ,OAAO,qBAAqB;iBAChE,mBAAmB,UAAU;AACtC,eAAO,QAAQ,SAAS,OAAO;;;AAI5B,aAASD,QAAO;AACrB,aAAO;;AAGT,aAASF,UAAS,SAAS,MAAM;AAC/B,UAAI,CAAC,QAAQ,EAAE,UAAU,OAAO;AAC9B,eAAO,OAAO,MAAA,YAAY,IAAI,IAAI,CAAA;AAClC,aAAK,OAAO;;AAEd,aAAO;;AAGT,aAAS,kBAAkB,IAAI,MAAM,WAAW,QAAQ,MAAM,aAAa;AACzE,UAAI,GAAG,WAAW;AAChB,YAAI,QAAQ,CAAA;AACZ,eAAO,GAAG,UACR,MACA,OACA,WACA,UAAU,OAAO,CAAC,GAClB,MACA,aACA,MAAM;AAER,cAAM,OAAO,MAAM,KAAK;;AAE1B,aAAO;;AAGT,aAAS,gCAAgC,eAAe,WAAW;AACjE,aAAO,KAAK,aAAa,EAAE,QAAQ,SAAA,YAAc;AAC/C,YAAI,SAAS,cAAc,UAAU;AACrC,sBAAc,UAAU,IAAI,yBAAyB,QAAQ,SAAS;OACvE;;AAGH,aAAS,yBAAyB,QAAQ,WAAW;AACnD,UAAM,iBAAiB,UAAU;AACjC,aAAO,oBAAA,WAAW,QAAQ,SAAA,SAAW;AACnC,eAAO,MAAM,OAAO,EAAE,eAAc,GAAI,OAAO;OAChD;;;;;;;;;;yBC/bY,SAASI,aAAY;AAGlC,OAAC,WAAW;AACV,YAAI,OAAO,eAAe,SAAU;AACpC,eAAO,UAAU,iBAAiB,aAAa,WAAW;AACxD,iBAAO;SACR;AACD,kBAAU,aAAa;AACvB,eAAO,OAAO,UAAU;SACzB;AAED,UAAM,cAAc,WAAW;AAG/B,MAAAA,YAAW,aAAa,WAAW;AACjC,YAAI,WAAW,eAAeA,aAAY;AACxC,qBAAW,aAAa;;AAE1B,eAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCpBC,OAAI,wBAAA,eAAA;;;;;;QAMJ,QAAK,wBAAA,gBAAA;;QACL,UAAO,wBAAA,kBAAA;;;AAKnB,aAAS,SAAS;AAChB,UAAI,KAAK,IAAI,KAAK,sBAAqB;AAEvC,YAAM,OAAO,IAAI,IAAI;AACrB,SAAG,aAAU,uBAAA,SAAA;AACb,SAAG,YAAS,sBAAA,SAAA;AACZ,SAAG,QAAQ;AACX,SAAG,mBAAmB,MAAM;AAE5B,SAAG,KAAK;AACR,SAAG,WAAW,SAAS,MAAM;AAC3B,eAAO,QAAQ,SAAS,MAAM,EAAE;;AAGlC,aAAO;;AAGT,QAAI,OAAO,OAAM;AACjB,SAAK,SAAS;AAEd,2BAAA,SAAA,EAAW,IAAI;AAEf,SAAK,SAAS,IAAI;yBAEH;;;;;;;;;;ACpCf,QAAIC,OAAM;;MAER,SAAS;;;;QAIP,kBAAkB,SAAA,iBAAS,MAAM;AAC/B,iBACE,KAAK,SAAS,oBACZ,KAAK,SAAS,uBACd,KAAK,SAAS,qBACd,CAAC,EAAG,KAAK,UAAU,KAAK,OAAO,UAAW,KAAK;;QAIrD,UAAU,SAAA,SAAS,MAAM;AACvB,iBAAO,aAAa,KAAK,KAAK,QAAQ;;;;QAKxC,UAAU,SAAA,SAAS,MAAM;AACvB,iBACE,KAAK,MAAM,WAAW,KAAK,CAACA,KAAI,QAAQ,SAAS,IAAI,KAAK,CAAC,KAAK;;;;yBAQzDA;;;;;;;;;;AC7Bf,QAAI,aAAc,WAAU;AAC5B,UAAI,SAAS;QAAC,OAAO,SAAS,QAAS;QAAA;QACvC,IAAI,CAAA;QACJ,UAAU,EAAC,SAAQ,GAAE,QAAO,GAAE,WAAU,GAAE,OAAM,GAAE,uBAAsB,GAAE,aAAY,GAAE,YAAW,GAAE,SAAQ,GAAE,YAAW,IAAG,WAAU,IAAG,gBAAe,IAAG,WAAU,IAAG,WAAU,IAAG,WAAU,IAAG,gBAAe,IAAG,wBAAuB,IAAG,iBAAgB,IAAG,kBAAiB,IAAG,cAAa,IAAG,4BAA2B,IAAG,wBAAuB,IAAG,mBAAkB,IAAG,aAAY,IAAG,iBAAgB,IAAG,cAAa,IAAG,eAAc,IAAG,iBAAgB,IAAG,cAAa,IAAG,yBAAwB,IAAG,qBAAoB,IAAG,qBAAoB,IAAG,SAAQ,IAAG,gBAAe,IAAG,2BAA0B,IAAG,uBAAsB,IAAG,uBAAsB,IAAG,oBAAmB,IAAG,sBAAqB,IAAG,gCAA+B,IAAG,4BAA2B,IAAG,4BAA2B,IAAG,qBAAoB,IAAG,WAAU,IAAG,gBAAe,IAAG,wBAAuB,IAAG,iBAAgB,IAAG,QAAO,IAAG,wBAAuB,IAAG,oBAAmB,IAAG,kBAAiB,IAAG,wBAAuB,IAAG,oBAAmB,IAAG,mBAAkB,IAAG,gBAAe,IAAG,eAAc,IAAG,uBAAsB,IAAG,mBAAkB,IAAG,oBAAmB,IAAG,sBAAqB,IAAG,gCAA+B,IAAG,4BAA2B,IAAG,SAAQ,IAAG,SAAQ,IAAG,cAAa,IAAG,qBAAoB,IAAG,iBAAgB,IAAG,eAAc,IAAG,QAAO,IAAG,yBAAwB,IAAG,eAAc,IAAG,MAAK,IAAG,UAAS,IAAG,eAAc,IAAG,qBAAoB,IAAG,gCAA+B,IAAG,sBAAqB,IAAG,QAAO,IAAG,YAAW,IAAG,UAAS,IAAG,UAAS,IAAG,WAAU,IAAG,aAAY,IAAG,QAAO,IAAG,QAAO,IAAG,gBAAe,IAAG,OAAM,IAAG,WAAU,GAAE,QAAO,EAAC;QAC3mD,YAAY,EAAC,GAAE,SAAQ,GAAE,OAAM,IAAG,WAAU,IAAG,WAAU,IAAG,iBAAgB,IAAG,kBAAiB,IAAG,mBAAkB,IAAG,cAAa,IAAG,SAAQ,IAAG,gBAAe,IAAG,sBAAqB,IAAG,WAAU,IAAG,iBAAgB,IAAG,QAAO,IAAG,kBAAiB,IAAG,mBAAkB,IAAG,gBAAe,IAAG,sBAAqB,IAAG,cAAa,IAAG,eAAc,IAAG,MAAK,IAAG,UAAS,IAAG,qBAAoB,IAAG,sBAAqB,IAAG,UAAS,IAAG,UAAS,IAAG,WAAU,IAAG,aAAY,IAAG,QAAO,IAAG,QAAO,IAAG,MAAK;QAC3e,cAAc,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,CAAC;QACpsB,eAAe,SAAS,UAAU,QAAO,QAAO,UAAS,IAAG,SAAQ,IAAG,IACrE;AAEF,cAAI,KAAK,GAAG,SAAS;AACrB,kBAAQ,SAAO;YACf,KAAK;AAAG,qBAAO,GAAG,KAAG,CAAC;AACtB;YACA,KAAK;AAAE,mBAAK,IAAI,GAAG,eAAe,GAAG,EAAE,CAAC;AACxC;YACA,KAAK;AAAE,mBAAK,IAAI,GAAG,EAAE;AACrB;YACA,KAAK;AAAE,mBAAK,IAAI,GAAG,EAAE;AACrB;YACA,KAAK;AAAE,mBAAK,IAAI,GAAG,EAAE;AACrB;YACA,KAAK;AAAE,mBAAK,IAAI,GAAG,EAAE;AACrB;YACA,KAAK;AAAE,mBAAK,IAAI,GAAG,EAAE;AACrB;YACA,KAAK;AAAE,mBAAK,IAAI,GAAG,EAAE;AACrB;YACA,KAAK;AACD,mBAAK,IAAI;gBACP,MAAM;gBACN,OAAO,GAAG,aAAa,GAAG,EAAE,CAAC;gBAC7B,OAAO,GAAG,WAAW,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;gBACnC,KAAK,GAAG,QAAQ,KAAK,EAAE;;AAG7B;YACA,KAAK;AACD,mBAAK,IAAI;gBACP,MAAM;gBACN,UAAU,GAAG,EAAE;gBACf,OAAO,GAAG,EAAE;gBACZ,KAAK,GAAG,QAAQ,KAAK,EAAE;;AAG7B;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,gBAAgB,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE;AACvE;YACA,KAAK;AAAG,mBAAK,IAAI,EAAE,MAAM,GAAG,KAAG,CAAC,GAAG,QAAQ,GAAG,KAAG,CAAC,GAAG,MAAM,GAAG,KAAG,CAAC,EAAC;AACnE;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,aAAa,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,GAAG,OAAO,KAAK,EAAE;AACrF;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,aAAa,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,KAAK,EAAE;AACpF;YACA,KAAK;AAAG,mBAAK,IAAI,EAAE,MAAM,GAAG,KAAG,CAAC,GAAG,MAAM,GAAG,KAAG,CAAC,GAAG,QAAQ,GAAG,KAAG,CAAC,GAAG,MAAM,GAAG,KAAG,CAAC,GAAG,aAAa,GAAG,KAAG,CAAC,GAAG,OAAO,GAAG,WAAW,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,CAAC,EAAC;AAClJ;YACA,KAAK;AAAG,mBAAK,IAAI,EAAE,MAAM,GAAG,KAAG,CAAC,GAAG,QAAQ,GAAG,KAAG,CAAC,GAAG,MAAM,GAAG,KAAG,CAAC,GAAG,aAAa,GAAG,KAAG,CAAC,GAAG,OAAO,GAAG,WAAW,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,CAAC,EAAC;AAClI;YACA,KAAK;AAAG,mBAAK,IAAI,EAAE,MAAM,GAAG,KAAG,CAAC,GAAG,QAAQ,GAAG,KAAG,CAAC,GAAG,MAAM,GAAG,KAAG,CAAC,GAAG,aAAa,GAAG,KAAG,CAAC,GAAG,OAAO,GAAG,WAAW,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,CAAC,EAAC;AAClI;YACA,KAAK;AAAG,mBAAK,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,CAAC,GAAG,SAAS,GAAG,EAAE,EAAC;AAC5E;YACA,KAAK;AACD,kBAAI,UAAU,GAAG,aAAa,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO,KAAK,EAAE,GAC5E,UAAU,GAAG,eAAe,CAAC,OAAO,GAAG,GAAG,KAAG,CAAC,EAAE,GAAG;AACvD,sBAAQ,UAAU;AAElB,mBAAK,IAAI,EAAE,OAAO,GAAG,KAAG,CAAC,EAAE,OAAO,SAAkB,OAAO,KAAI;AAEnE;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,EAAE;AACtB;YACA,KAAK;AAAG,mBAAK,IAAI,EAAC,MAAM,GAAG,KAAG,CAAC,GAAG,OAAO,GAAG,WAAW,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,CAAC,EAAC;AACxE;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,gBAAgB,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,WAAW,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE;AACpH;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,gBAAgB,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,WAAW,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE;AACpH;YACA,KAAK;AACD,mBAAK,IAAI;gBACP,MAAM;gBACN,MAAM,GAAG,KAAG,CAAC;gBACb,QAAQ,GAAG,KAAG,CAAC;gBACf,MAAM,GAAG,KAAG,CAAC;gBACb,QAAQ;gBACR,OAAO,GAAG,WAAW,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,CAAC;gBACrC,KAAK,GAAG,QAAQ,KAAK,EAAE;;AAG7B;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,oBAAoB,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE;AAC3E;YACA,KAAK;AAAG,mBAAK,IAAI,EAAE,MAAM,GAAG,KAAG,CAAC,GAAG,QAAQ,GAAG,KAAG,CAAC,GAAG,MAAM,GAAG,KAAG,CAAC,GAAG,OAAO,GAAG,WAAW,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,CAAC,EAAC;AAC3G;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,EAAE;AACtB;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,EAAE;AACtB;YACA,KAAK;AACD,mBAAK,IAAI;gBACP,MAAM;gBACN,MAAM,GAAG,KAAG,CAAC;gBACb,QAAQ,GAAG,KAAG,CAAC;gBACf,MAAM,GAAG,KAAG,CAAC;gBACb,KAAK,GAAG,QAAQ,KAAK,EAAE;;AAG7B;YACA,KAAK;AAAG,mBAAK,IAAI,EAAC,MAAM,QAAQ,OAAO,GAAG,EAAE,GAAG,KAAK,GAAG,QAAQ,KAAK,EAAE,EAAC;AACvE;YACA,KAAK;AAAG,mBAAK,IAAI,EAAC,MAAM,YAAY,KAAK,GAAG,GAAG,GAAG,KAAG,CAAC,CAAC,GAAG,OAAO,GAAG,EAAE,GAAG,KAAK,GAAG,QAAQ,KAAK,EAAE,EAAC;AACjG;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,GAAG,GAAG,KAAG,CAAC,CAAC;AAC/B;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,EAAE;AACtB;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,EAAE;AACtB;YACA,KAAK;AAAG,mBAAK,IAAI,EAAC,MAAM,iBAAiB,OAAO,GAAG,EAAE,GAAG,UAAU,GAAG,EAAE,GAAG,KAAK,GAAG,QAAQ,KAAK,EAAE,EAAC;AAClG;YACA,KAAK;AAAG,mBAAK,IAAI,EAAC,MAAM,iBAAiB,OAAO,OAAO,GAAG,EAAE,CAAC,GAAG,UAAU,OAAO,GAAG,EAAE,CAAC,GAAG,KAAK,GAAG,QAAQ,KAAK,EAAE,EAAC;AAClH;YACA,KAAK;AAAG,mBAAK,IAAI,EAAC,MAAM,kBAAkB,OAAO,GAAG,EAAE,MAAM,QAAQ,UAAU,GAAG,EAAE,MAAM,QAAQ,KAAK,GAAG,QAAQ,KAAK,EAAE,EAAC;AACzH;YACA,KAAK;AAAG,mBAAK,IAAI,EAAC,MAAM,oBAAoB,UAAU,QAAW,OAAO,QAAW,KAAK,GAAG,QAAQ,KAAK,EAAE,EAAC;AAC3G;YACA,KAAK;AAAG,mBAAK,IAAI,EAAC,MAAM,eAAe,UAAU,MAAM,OAAO,MAAM,KAAK,GAAG,QAAQ,KAAK,EAAE,EAAC;AAC5F;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,EAAE;AACtB;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,EAAE;AACtB;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,YAAY,MAAM,GAAG,EAAE,GAAG,KAAK,EAAE;AACrD;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,YAAY,OAAO,GAAG,EAAE,GAAG,KAAK,EAAE;AACtD;YACA,KAAK;AAAI,iBAAG,KAAG,CAAC,EAAE,KAAK,EAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,UAAU,GAAG,EAAE,GAAG,WAAW,GAAG,KAAG,CAAC,EAAC,CAAC;AAAG,mBAAK,IAAI,GAAG,KAAG,CAAC;AACtG;YACA,KAAK;AAAG,mBAAK,IAAI,CAAC,EAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,UAAU,GAAG,EAAE,EAAC,CAAC;AACzD;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAC,GAAG,EAAE,CAAC;AACxB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAI,mBAAK,IAAI,CAAC,GAAG,EAAE,CAAC;AACzB;YACA,KAAK;AAAI,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC7B;UAAM;;QAGN,OAAO,CAAC,EAAC,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC,GAAE,EAAE,GAAE,GAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,GAAE,IAAG,GAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,GAAE,IAAG,GAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,GAAE,IAAG,GAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,IAAG,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,CAAC;QAC9/V,gBAAgB,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,EAAC;QACjM,YAAY,SAAS,WAAY,KAAK,MAAM;AACxC,gBAAM,IAAI,MAAM,GAAG;;QAEvB,OAAO,SAAS,MAAM,OAAO;AACzB,cAAI,OAAO,MAAM,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAA,GAAI,QAAQ,KAAK,OAAO,SAAS,IAAI,WAAW,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM;AACzJ,eAAK,MAAM,SAAS,KAAK;AACzB,eAAK,MAAM,KAAK,KAAK;AACrB,eAAK,GAAG,QAAQ,KAAK;AACrB,eAAK,GAAG,SAAS;AACjB,cAAI,OAAO,KAAK,MAAM,UAAU,YAC5B,MAAK,MAAM,SAAS,CAAA;AACxB,cAAI,QAAQ,KAAK,MAAM;AACvB,iBAAO,KAAK,KAAK;AACjB,cAAI,SAAS,KAAK,MAAM,WAAW,KAAK,MAAM,QAAQ;AACtD,cAAI,OAAO,KAAK,GAAG,eAAe,WAC9B,MAAK,aAAa,KAAK,GAAG;AAC9B,mBAAS,SAAS,GAAG;AACjB,kBAAM,SAAS,MAAM,SAAS,IAAI;AAClC,mBAAO,SAAS,OAAO,SAAS;AAChC,mBAAO,SAAS,OAAO,SAAS;;AAEpC,mBAAS,MAAM;AACX,gBAAI;AACJ,oBAAQ,KAAK,MAAM,IAAG,KAAM;AAC5B,gBAAI,OAAO,UAAU,UAAU;AAC3B,sBAAQ,KAAK,SAAS,KAAK,KAAK;;AAEpC,mBAAO;;AAEX,cAAI,QAAQ,gBAAgB,OAAO,QAAQ,GAAG,GAAG,QAAQ,CAAA,GAAI,GAAG,KAAK,UAAU;AAC/E,iBAAO,MAAM;AACT,oBAAQ,MAAM,MAAM,SAAS,CAAC;AAC9B,gBAAI,KAAK,eAAe,KAAK,GAAG;AAC5B,uBAAS,KAAK,eAAe,KAAK;mBAC/B;AACH,kBAAI,WAAW,QAAQ,OAAO,UAAU,aAAa;AACjD,yBAAS,IAAG;;AAEhB,uBAAS,MAAM,KAAK,KAAK,MAAM,KAAK,EAAE,MAAM;;AAEhD,gBAAI,OAAO,WAAW,eAAe,CAAC,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG;AAC/D,kBAAI,SAAS;AACb,kBAAI,CAAC,YAAY;AACb,2BAAW,CAAA;AACX,qBAAK,KAAK,MAAM,KAAK,EACjB,KAAI,KAAK,WAAW,CAAC,KAAK,IAAI,GAAG;AAC7B,2BAAS,KAAK,MAAM,KAAK,WAAW,CAAC,IAAI,GAAG;;AAEpD,oBAAI,KAAK,MAAM,cAAc;AACzB,2BAAS,0BAA0B,WAAW,KAAK,QAAQ,KAAK,MAAM,aAAY,IAAK,iBAAiB,SAAS,KAAK,IAAI,IAAI,aAAa,KAAK,WAAW,MAAM,KAAK,UAAU;uBAC7K;AACH,2BAAS,0BAA0B,WAAW,KAAK,mBAAmB,UAAU,IAAE,iBAAe,OAAO,KAAK,WAAW,MAAM,KAAK,UAAU;;AAEjJ,qBAAK,WAAW,QAAQ,EAAC,MAAM,KAAK,MAAM,OAAO,OAAO,KAAK,WAAW,MAAM,KAAK,QAAQ,MAAM,KAAK,MAAM,UAAU,KAAK,OAAO,SAAkB,CAAC;;;AAG7J,gBAAI,OAAO,CAAC,aAAa,SAAS,OAAO,SAAS,GAAG;AACjD,oBAAM,IAAI,MAAM,sDAAsD,QAAQ,cAAc,MAAM;;AAEtG,oBAAQ,OAAO,CAAC,GAAC;cACjB,KAAK;AACD,sBAAM,KAAK,MAAM;AACjB,uBAAO,KAAK,KAAK,MAAM,MAAM;AAC7B,uBAAO,KAAK,KAAK,MAAM,MAAM;AAC7B,sBAAM,KAAK,OAAO,CAAC,CAAC;AACpB,yBAAS;AACT,oBAAI,CAAC,gBAAgB;AACjB,2BAAS,KAAK,MAAM;AACpB,2BAAS,KAAK,MAAM;AACpB,6BAAW,KAAK,MAAM;AACtB,0BAAQ,KAAK,MAAM;AACnB,sBAAI,aAAa,EACb;uBACD;AACH,2BAAS;AACT,mCAAiB;;AAErB;cACJ,KAAK;AACD,sBAAM,KAAK,aAAa,OAAO,CAAC,CAAC,EAAE,CAAC;AACpC,sBAAM,IAAI,OAAO,OAAO,SAAS,GAAG;AACpC,sBAAM,KAAK,EAAC,YAAY,OAAO,OAAO,UAAU,OAAO,EAAE,EAAE,YAAY,WAAW,OAAO,OAAO,SAAS,CAAC,EAAE,WAAW,cAAc,OAAO,OAAO,UAAU,OAAO,EAAE,EAAE,cAAc,aAAa,OAAO,OAAO,SAAS,CAAC,EAAE,YAAW;AACxO,oBAAI,QAAQ;AACR,wBAAM,GAAG,QAAQ,CAAC,OAAO,OAAO,UAAU,OAAO,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,OAAO,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;;AAErG,oBAAI,KAAK,cAAc,KAAK,OAAO,QAAQ,QAAQ,UAAU,KAAK,IAAI,OAAO,CAAC,GAAG,QAAQ,MAAM;AAC/F,oBAAI,OAAO,MAAM,aAAa;AAC1B,yBAAO;;AAEX,oBAAI,KAAK;AACL,0BAAQ,MAAM,MAAM,GAAG,KAAK,MAAM,CAAC;AACnC,2BAAS,OAAO,MAAM,GAAG,KAAK,GAAG;AACjC,2BAAS,OAAO,MAAM,GAAG,KAAK,GAAG;;AAErC,sBAAM,KAAK,KAAK,aAAa,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1C,uBAAO,KAAK,MAAM,CAAC;AACnB,uBAAO,KAAK,MAAM,EAAE;AACpB,2BAAW,MAAM,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,MAAM,MAAM,SAAS,CAAC,CAAC;AACjE,sBAAM,KAAK,QAAQ;AACnB;cACJ,KAAK;AACD,uBAAO;YAAK;;AAGpB,iBAAO;;;AAIX,UAAI,QAAS,WAAU;AACvB,YAAIC,SAAS;UAAC,KAAI;UAClB,YAAW,SAAS,WAAW,KAAK,MAAM;AAClC,gBAAI,KAAK,GAAG,QAAQ;AAChB,mBAAK,GAAG,OAAO,WAAW,KAAK,IAAI;mBAChC;AACH,oBAAM,IAAI,MAAM,GAAG;;;UAG/B,UAAS,SAAA,SAAU,OAAO;AAClB,iBAAK,SAAS;AACd,iBAAK,QAAQ,KAAK,QAAQ,KAAK,OAAO;AACtC,iBAAK,WAAW,KAAK,SAAS;AAC9B,iBAAK,SAAS,KAAK,UAAU,KAAK,QAAQ;AAC1C,iBAAK,iBAAiB,CAAC,SAAS;AAChC,iBAAK,SAAS,EAAC,YAAW,GAAE,cAAa,GAAE,WAAU,GAAE,aAAY,EAAC;AACpE,gBAAI,KAAK,QAAQ,OAAQ,MAAK,OAAO,QAAQ,CAAC,GAAE,CAAC;AACjD,iBAAK,SAAS;AACd,mBAAO;;UAEf,OAAM,SAAA,QAAY;AACV,gBAAI,KAAK,KAAK,OAAO,CAAC;AACtB,iBAAK,UAAU;AACf,iBAAK;AACL,iBAAK;AACL,iBAAK,SAAS;AACd,iBAAK,WAAW;AAChB,gBAAI,QAAQ,GAAG,MAAM,iBAAiB;AACtC,gBAAI,OAAO;AACP,mBAAK;AACL,mBAAK,OAAO;mBACT;AACH,mBAAK,OAAO;;AAEhB,gBAAI,KAAK,QAAQ,OAAQ,MAAK,OAAO,MAAM,CAAC;AAE5C,iBAAK,SAAS,KAAK,OAAO,MAAM,CAAC;AACjC,mBAAO;;UAEf,OAAM,SAAA,MAAU,IAAI;AACZ,gBAAI,MAAM,GAAG;AACb,gBAAI,QAAQ,GAAG,MAAM,eAAe;AAEpC,iBAAK,SAAS,KAAK,KAAK;AACxB,iBAAK,SAAS,KAAK,OAAO,OAAO,GAAG,KAAK,OAAO,SAAO,MAAI,CAAC;AAE5D,iBAAK,UAAU;AACf,gBAAI,WAAW,KAAK,MAAM,MAAM,eAAe;AAC/C,iBAAK,QAAQ,KAAK,MAAM,OAAO,GAAG,KAAK,MAAM,SAAO,CAAC;AACrD,iBAAK,UAAU,KAAK,QAAQ,OAAO,GAAG,KAAK,QAAQ,SAAO,CAAC;AAE3D,gBAAI,MAAM,SAAO,EAAG,MAAK,YAAY,MAAM,SAAO;AAClD,gBAAI,IAAI,KAAK,OAAO;AAEpB,iBAAK,SAAS;cAAC,YAAY,KAAK,OAAO;cACrC,WAAW,KAAK,WAAS;cACzB,cAAc,KAAK,OAAO;cAC1B,aAAa,SACR,MAAM,WAAW,SAAS,SAAS,KAAK,OAAO,eAAe,KAAK,SAAS,SAAS,SAAS,MAAM,MAAM,EAAE,SAAS,MAAM,CAAC,EAAE,SAC/H,KAAK,OAAO,eAAe;;AAGjC,gBAAI,KAAK,QAAQ,QAAQ;AACrB,mBAAK,OAAO,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,SAAS,GAAG;;AAEvD,mBAAO;;UAEf,MAAK,SAAA,OAAY;AACT,iBAAK,QAAQ;AACb,mBAAO;;UAEf,MAAK,SAAA,KAAU,GAAG;AACV,iBAAK,MAAM,KAAK,MAAM,MAAM,CAAC,CAAC;;UAEtC,WAAU,SAAA,YAAY;AACd,gBAAI,OAAO,KAAK,QAAQ,OAAO,GAAG,KAAK,QAAQ,SAAS,KAAK,MAAM,MAAM;AACzE,oBAAQ,KAAK,SAAS,KAAK,QAAM,MAAM,KAAK,OAAO,GAAG,EAAE,QAAQ,OAAO,EAAE;;UAEjF,eAAc,SAAA,gBAAY;AAClB,gBAAI,OAAO,KAAK;AAChB,gBAAI,KAAK,SAAS,IAAI;AAClB,sBAAQ,KAAK,OAAO,OAAO,GAAG,KAAG,KAAK,MAAM;;AAEhD,oBAAQ,KAAK,OAAO,GAAE,EAAE,KAAG,KAAK,SAAS,KAAK,QAAM,KAAK,QAAQ,OAAO,EAAE;;UAElF,cAAa,SAAA,eAAY;AACjB,gBAAI,MAAM,KAAK,UAAS;AACxB,gBAAI,IAAI,IAAI,MAAM,IAAI,SAAS,CAAC,EAAE,KAAK,GAAG;AAC1C,mBAAO,MAAM,KAAK,cAAa,IAAK,OAAO,IAAE;;UAErD,MAAK,SAAA,OAAY;AACT,gBAAI,KAAK,MAAM;AACX,qBAAO,KAAK;;AAEhB,gBAAI,CAAC,KAAK,OAAQ,MAAK,OAAO;AAE9B,gBAAI,OACA,OACA,WACA,OACA,KACA;AACJ,gBAAI,CAAC,KAAK,OAAO;AACb,mBAAK,SAAS;AACd,mBAAK,QAAQ;;AAEjB,gBAAI,QAAQ,KAAK,cAAa;AAC9B,qBAAS,IAAE,GAAE,IAAI,MAAM,QAAQ,KAAK;AAChC,0BAAY,KAAK,OAAO,MAAM,KAAK,MAAM,MAAM,CAAC,CAAC,CAAC;AAClD,kBAAI,cAAc,CAAC,SAAS,UAAU,CAAC,EAAE,SAAS,MAAM,CAAC,EAAE,SAAS;AAChE,wBAAQ;AACR,wBAAQ;AACR,oBAAI,CAAC,KAAK,QAAQ,KAAM;;;AAGhC,gBAAI,OAAO;AACP,sBAAQ,MAAM,CAAC,EAAE,MAAM,iBAAiB;AACxC,kBAAI,MAAO,MAAK,YAAY,MAAM;AAClC,mBAAK,SAAS;gBAAC,YAAY,KAAK,OAAO;gBACxB,WAAW,KAAK,WAAS;gBACzB,cAAc,KAAK,OAAO;gBAC1B,aAAa,QAAQ,MAAM,MAAM,SAAO,CAAC,EAAE,SAAO,MAAM,MAAM,SAAO,CAAC,EAAE,MAAM,QAAQ,EAAE,CAAC,EAAE,SAAS,KAAK,OAAO,cAAc,MAAM,CAAC,EAAE;cAAM;AAC5J,mBAAK,UAAU,MAAM,CAAC;AACtB,mBAAK,SAAS,MAAM,CAAC;AACrB,mBAAK,UAAU;AACf,mBAAK,SAAS,KAAK,OAAO;AAC1B,kBAAI,KAAK,QAAQ,QAAQ;AACrB,qBAAK,OAAO,QAAQ,CAAC,KAAK,QAAQ,KAAK,UAAU,KAAK,MAAM;;AAEhE,mBAAK,QAAQ;AACb,mBAAK,SAAS,KAAK,OAAO,MAAM,MAAM,CAAC,EAAE,MAAM;AAC/C,mBAAK,WAAW,MAAM,CAAC;AACvB,sBAAQ,KAAK,cAAc,KAAK,MAAM,KAAK,IAAI,MAAM,MAAM,KAAK,GAAE,KAAK,eAAe,KAAK,eAAe,SAAO,CAAC,CAAC;AACnH,kBAAI,KAAK,QAAQ,KAAK,OAAQ,MAAK,OAAO;AAC1C,kBAAI,MAAO,QAAO;kBACb;;AAET,gBAAI,KAAK,WAAW,IAAI;AACpB,qBAAO,KAAK;mBACT;AACH,qBAAO,KAAK,WAAW,4BAA0B,KAAK,WAAS,KAAG,2BAAyB,KAAK,aAAY,GACpG,EAAC,MAAM,IAAI,OAAO,MAAM,MAAM,KAAK,SAAQ,CAAC;;;UAGhE,KAAI,SAAS,MAAO;AACZ,gBAAI,IAAI,KAAK,KAAI;AACjB,gBAAI,OAAO,MAAM,aAAa;AAC1B,qBAAO;mBACJ;AACH,qBAAO,KAAK,IAAG;;;UAG3B,OAAM,SAAS,MAAO,WAAW;AACzB,iBAAK,eAAe,KAAK,SAAS;;UAE1C,UAAS,SAAS,WAAY;AACtB,mBAAO,KAAK,eAAe,IAAG;;UAEtC,eAAc,SAAS,gBAAiB;AAChC,mBAAO,KAAK,WAAW,KAAK,eAAe,KAAK,eAAe,SAAO,CAAC,CAAC,EAAE;;UAElF,UAAS,SAAA,WAAY;AACb,mBAAO,KAAK,eAAe,KAAK,eAAe,SAAO,CAAC;;UAE/D,WAAU,SAAS,MAAO,WAAW;AAC7B,iBAAK,MAAM,SAAS;;QACvB;AACL,QAAAA,OAAM,UAAU,CAAA;AAChB,QAAAA,OAAM,gBAAgB,SAAS,UAAU,IAAG,KAAI,2BAA0B,UACxE;AAGF,mBAAS,MAAM,OAAO,KAAK;AACzB,mBAAO,IAAI,SAAS,IAAI,OAAO,UAAU,OAAO,IAAI,SAAS,MAAM,KAAK;;AAI1E,cAAI,UAAQ;AACZ,kBAAO,2BAAyB;YAChC,KAAK;AAC8B,kBAAG,IAAI,OAAO,MAAM,EAAE,MAAM,QAAQ;AAClC,sBAAM,GAAE,CAAC;AACT,qBAAK,MAAM,IAAI;yBACP,IAAI,OAAO,MAAM,EAAE,MAAM,MAAM;AACvC,sBAAM,GAAE,CAAC;AACT,qBAAK,MAAM,KAAK;qBACX;AACL,qBAAK,MAAM,IAAI;;AAEjB,kBAAG,IAAI,OAAQ,QAAO;AAEzD;YACA,KAAK;AAAE,qBAAO;AACd;YACA,KAAK;AAC8B,mBAAK,SAAQ;AACb,qBAAO;AAE1C;YACA,KAAK;AAAE,mBAAK,MAAM,KAAK;AAAG,qBAAO;AACjC;YACA,KAAK;AAC6B,mBAAK,SAAQ;AAIb,kBAAI,KAAK,eAAe,KAAK,eAAe,SAAO,CAAC,MAAM,OAAO;AAC/D,uBAAO;qBACF;AACL,sBAAM,GAAG,CAAC;AACV,uBAAO;;AAG3C;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AACH,mBAAK,SAAQ;AACb,qBAAO;AAET;YACA,KAAK;AAAE,qBAAO;AACd;YACA,KAAK;AAAE,qBAAO;AACd;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAC6B,mBAAK,SAAQ;AACb,mBAAK,MAAM,KAAK;AAChB,qBAAO;AAEzC;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,mBAAK,SAAQ;AAAI,qBAAO;AAChC;YACA,KAAK;AAAG,mBAAK,SAAQ;AAAI,qBAAO;AAChC;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AACH,mBAAK,MAAM,IAAI,MAAM;AACrB,mBAAK,SAAQ;AACb,mBAAK,MAAM,KAAK;AAElB;YACA,KAAK;AACH,mBAAK,SAAQ;AACb,qBAAO;AAET;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AACL;YACA,KAAK;AAAG,mBAAK,SAAQ;AAAI,qBAAO;AAChC;YACA,KAAK;AAAG,mBAAK,SAAQ;AAAI,qBAAO;AAChC;YACA,KAAK;AAAG,kBAAI,SAAS,MAAM,GAAE,CAAC,EAAE,QAAQ,QAAO,GAAG;AAAG,qBAAO;AAC5D;YACA,KAAK;AAAG,kBAAI,SAAS,MAAM,GAAE,CAAC,EAAE,QAAQ,QAAO,GAAG;AAAG,qBAAO;AAC5D;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,kBAAI,SAAS,IAAI,OAAO,QAAQ,eAAc,IAAI;AAAG,qBAAO;AACpE;YACA,KAAK;AAAG,qBAAO;AACf;YACA,KAAK;AAAG,qBAAO;AACf;UAAM;;AAGN,QAAAA,OAAM,QAAQ,CAAC,4BAA2B,iBAAgB,iDAAgD,yBAAwB,sEAAqE,gCAA+B,2BAA0B,WAAU,WAAU,iBAAgB,iBAAgB,kBAAiB,mBAAkB,qBAAoB,mBAAkB,8BAA6B,mCAAkC,mBAAkB,0BAAyB,mBAAkB,kBAAiB,oBAAmB,8BAA6B,oBAAmB,UAAS,aAAY,6BAA4B,cAAa,YAAW,mBAAkB,iBAAgB,wBAAuB,wBAAuB,UAAS,0BAAyB,2BAA0B,+BAA8B,0BAAyB,2CAA0C,gBAAe,WAAU,2DAA0D,0BAAyB,UAAS,QAAQ;AAChgC,QAAAA,OAAM,aAAa,EAAC,MAAK,EAAC,SAAQ,CAAC,GAAE,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,EAAE,GAAE,aAAY,MAAK,GAAE,OAAM,EAAC,SAAQ,CAAC,CAAC,GAAE,aAAY,MAAK,GAAE,OAAM,EAAC,SAAQ,CAAC,CAAC,GAAE,aAAY,MAAK,GAAE,OAAM,EAAC,SAAQ,CAAC,GAAE,GAAE,CAAC,GAAE,aAAY,MAAK,GAAE,WAAU,EAAC,SAAQ,CAAC,GAAE,GAAE,EAAE,GAAE,aAAY,KAAI,EAAC;AACzU,eAAOA;QAAO;AACd,aAAO,QAAQ;AACf,eAAS,SAAU;AAAE,aAAK,KAAK,CAAA;;AAAK,aAAO,YAAY;AAAO,aAAO,SAAS;AAC9E,aAAO,IAAI,OAAM;MAChB;AAAI,YAAA,SAAA,IAAe;;;;;;;;;;;;;;;AC3mBpB,aAAS,UAAU;AACjB,WAAK,UAAU,CAAA;;AAGjB,YAAQ,YAAY;MAClB,aAAa;MACb,UAAU;;MAGV,WAAW,SAAA,UAAS,MAAM,MAAM;AAC9B,YAAI,QAAQ,KAAK,OAAO,KAAK,IAAI,CAAC;AAClC,YAAI,KAAK,UAAU;AAGjB,cAAI,SAAS,CAAC,QAAQ,UAAU,MAAM,IAAI,GAAG;AAC3C,kBAAM,IAAA,YAAA,SAAA,EACJ,2BACE,MAAM,OACN,4BACA,OACA,SACA,KAAK,IAAI;;AAGf,eAAK,IAAI,IAAI;;;;;MAMjB,gBAAgB,SAAA,eAAS,MAAM,MAAM;AACnC,aAAK,UAAU,MAAM,IAAI;AAEzB,YAAI,CAAC,KAAK,IAAI,GAAG;AACf,gBAAM,IAAA,YAAA,SAAA,EAAc,KAAK,OAAO,eAAe,IAAI;;;;;MAMvD,aAAa,SAAA,YAAS,OAAO;AAC3B,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAI,GAAG,KAAK;AAC5C,eAAK,UAAU,OAAO,CAAC;AAEvB,cAAI,CAAC,MAAM,CAAC,GAAG;AACb,kBAAM,OAAO,GAAG,CAAC;AACjB;AACA;;;;MAKN,QAAQ,SAAA,OAAS,QAAQ;AACvB,YAAI,CAAC,QAAQ;AACX;;AAIF,YAAI,CAAC,KAAK,OAAO,IAAI,GAAG;AACtB,gBAAM,IAAA,YAAA,SAAA,EAAc,mBAAmB,OAAO,MAAM,MAAM;;AAG5D,YAAI,KAAK,SAAS;AAChB,eAAK,QAAQ,QAAQ,KAAK,OAAO;;AAEnC,aAAK,UAAU;AAEf,YAAI,MAAM,KAAK,OAAO,IAAI,EAAE,MAAM;AAElC,aAAK,UAAU,KAAK,QAAQ,MAAK;AAEjC,YAAI,CAAC,KAAK,YAAY,KAAK;AACzB,iBAAO;mBACE,QAAQ,OAAO;AACxB,iBAAO;;;MAIX,SAAS,SAAA,QAAS,SAAS;AACzB,aAAK,YAAY,QAAQ,IAAI;;MAG/B,mBAAmB;MACnB,WAAW;MAEX,gBAAgB;MAChB,gBAAgB;MAEhB,kBAAkB;MAClB,uBAAuB,SAAA,sBAAS,SAAS;AACvC,qBAAa,KAAK,MAAM,OAAO;AAE/B,aAAK,UAAU,SAAS,SAAS;;MAGnC,kBAAkB,SAAA,mBAAwB;MAAA;MAC1C,kBAAkB,SAAA,mBAAwB;MAAA;MAE1C,eAAe;MAEf,gBAAgB,SAAA,iBAAqB;MAAA;MAErC,eAAe,SAAA,gBAAuB;MAAA;MACtC,eAAe,SAAA,gBAAuB;MAAA;MACtC,gBAAgB,SAAA,iBAAqB;MAAA;MACrC,kBAAkB,SAAA,mBAAwB;MAAA;MAC1C,aAAa,SAAA,cAAwB;MAAA;MAErC,MAAM,SAAA,KAAS,MAAM;AACnB,aAAK,YAAY,KAAK,KAAK;;MAE7B,UAAU,SAAA,SAAS,MAAM;AACvB,aAAK,eAAe,MAAM,OAAO;;;AAIrC,aAAS,mBAAmB,UAAU;AACpC,WAAK,eAAe,UAAU,MAAM;AACpC,WAAK,YAAY,SAAS,MAAM;AAChC,WAAK,UAAU,UAAU,MAAM;;AAEjC,aAAS,WAAW,OAAO;AACzB,yBAAmB,KAAK,MAAM,KAAK;AAEnC,WAAK,UAAU,OAAO,SAAS;AAC/B,WAAK,UAAU,OAAO,SAAS;;AAEjC,aAAS,aAAa,SAAS;AAC7B,WAAK,eAAe,SAAS,MAAM;AACnC,WAAK,YAAY,QAAQ,MAAM;AAC/B,WAAK,UAAU,SAAS,MAAM;;yBAGjB;;;;;;;;;;;;;;;ACrIf,aAAS,oBAAgC;UAAd,UAAO,UAAA,UAAA,KAAA,UAAA,CAAA,MAAA,SAAG,CAAA,IAAE,UAAA,CAAA;AACrC,WAAK,UAAU;;AAEjB,sBAAkB,YAAY,IAAA,UAAA,SAAA,EAAA;AAE9B,sBAAkB,UAAU,UAAU,SAAS,SAAS;AACtD,UAAM,eAAe,CAAC,KAAK,QAAQ;AAEnC,UAAI,SAAS,CAAC,KAAK;AACnB,WAAK,aAAa;AAElB,UAAI,OAAO,QAAQ;AACnB,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,KAAK;AAC3C,YAAI,UAAU,KAAK,CAAC,GAClB,QAAQ,KAAK,OAAO,OAAO;AAE7B,YAAI,CAAC,OAAO;AACV;;AAGF,YAAI,oBAAoB,iBAAiB,MAAM,GAAG,MAAM,GACtD,oBAAoB,iBAAiB,MAAM,GAAG,MAAM,GACpD,iBAAiB,MAAM,kBAAkB,mBACzC,kBAAkB,MAAM,mBAAmB,mBAC3C,mBACE,MAAM,oBAAoB,qBAAqB;AAEnD,YAAI,MAAM,OAAO;AACf,oBAAU,MAAM,GAAG,IAAI;;AAEzB,YAAI,MAAM,MAAM;AACd,mBAAS,MAAM,GAAG,IAAI;;AAGxB,YAAI,gBAAgB,kBAAkB;AACpC,oBAAU,MAAM,CAAC;AAEjB,cAAI,SAAS,MAAM,CAAC,GAAG;AAErB,gBAAI,QAAQ,SAAS,oBAAoB;AAEvC,sBAAQ,SAAS,YAAY,KAAK,KAAK,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;;;;AAI/D,YAAI,gBAAgB,gBAAgB;AAClC,qBAAW,QAAQ,WAAW,QAAQ,SAAS,IAAI;AAGnD,mBAAS,MAAM,CAAC;;AAElB,YAAI,gBAAgB,iBAAiB;AAEnC,oBAAU,MAAM,CAAC;AAEjB,oBAAU,QAAQ,WAAW,QAAQ,SAAS,IAAI;;;AAItD,aAAO;;AAGT,sBAAkB,UAAU,iBAAiB,kBAAkB,UAAU,iBAAiB,kBAAkB,UAAU,wBAAwB,SAC5I,OACA;AACA,WAAK,OAAO,MAAM,OAAO;AACzB,WAAK,OAAO,MAAM,OAAO;AAGzB,UAAI,UAAU,MAAM,WAAW,MAAM,SACnC,UAAU,MAAM,WAAW,MAAM,SACjC,eAAe,SACf,cAAc;AAEhB,UAAI,WAAW,QAAQ,SAAS;AAC9B,uBAAe,QAAQ,KAAK,CAAC,EAAE;AAG/B,eAAO,YAAY,SAAS;AAC1B,wBAAc,YAAY,KAAK,YAAY,KAAK,SAAS,CAAC,EAAE;;;AAIhE,UAAI,QAAQ;QACV,MAAM,MAAM,UAAU;QACtB,OAAO,MAAM,WAAW;;;QAIxB,gBAAgB,iBAAiB,QAAQ,IAAI;QAC7C,iBAAiB,kBAAkB,gBAAgB,SAAS,IAAI;;AAGlE,UAAI,MAAM,UAAU,OAAO;AACzB,kBAAU,QAAQ,MAAM,MAAM,IAAI;;AAGpC,UAAI,SAAS;AACX,YAAI,eAAe,MAAM;AAEzB,YAAI,aAAa,MAAM;AACrB,mBAAS,QAAQ,MAAM,MAAM,IAAI;;AAGnC,YAAI,aAAa,OAAO;AACtB,oBAAU,aAAa,MAAM,MAAM,IAAI;;AAEzC,YAAI,MAAM,WAAW,MAAM;AACzB,mBAAS,YAAY,MAAM,MAAM,IAAI;;AAIvC,YACE,CAAC,KAAK,QAAQ,oBACd,iBAAiB,QAAQ,IAAI,KAC7B,iBAAiB,aAAa,IAAI,GAClC;AACA,mBAAS,QAAQ,IAAI;AACrB,oBAAU,aAAa,IAAI;;iBAEpB,MAAM,WAAW,MAAM;AAChC,iBAAS,QAAQ,MAAM,MAAM,IAAI;;AAGnC,aAAO;;AAGT,sBAAkB,UAAU,YAAY,kBAAkB,UAAU,oBAAoB,SACtF,UACA;AACA,aAAO,SAAS;;AAGlB,sBAAkB,UAAU,mBAAmB,kBAAkB,UAAU,mBAAmB,SAC5F,MACA;AAEA,UAAI,QAAQ,KAAK,SAAS,CAAA;AAC1B,aAAO;QACL,kBAAkB;QAClB,MAAM,MAAM;QACZ,OAAO,MAAM;;;AAIjB,aAAS,iBAAiB,MAAM,GAAG,QAAQ;AACzC,UAAI,MAAM,QAAW;AACnB,YAAI,KAAK;;AAKX,UAAI,OAAO,KAAK,IAAI,CAAC,GACnB,UAAU,KAAK,IAAI,CAAC;AACtB,UAAI,CAAC,MAAM;AACT,eAAO;;AAGT,UAAI,KAAK,SAAS,oBAAoB;AACpC,gBAAQ,WAAW,CAAC,SAAS,eAAe,kBAAkB,KAC5D,KAAK,QAAQ;;;AAInB,aAAS,iBAAiB,MAAM,GAAG,QAAQ;AACzC,UAAI,MAAM,QAAW;AACnB,YAAI;;AAGN,UAAI,OAAO,KAAK,IAAI,CAAC,GACnB,UAAU,KAAK,IAAI,CAAC;AACtB,UAAI,CAAC,MAAM;AACT,eAAO;;AAGT,UAAI,KAAK,SAAS,oBAAoB;AACpC,gBAAQ,WAAW,CAAC,SAAS,eAAe,kBAAkB,KAC5D,KAAK,QAAQ;;;AAYnB,aAAS,UAAU,MAAM,GAAG,UAAU;AACpC,UAAI,UAAU,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC;AACxC,UACE,CAAC,WACD,QAAQ,SAAS,sBAChB,CAAC,YAAY,QAAQ,eACtB;AACA;;AAGF,UAAI,WAAW,QAAQ;AACvB,cAAQ,QAAQ,QAAQ,MAAM,QAC5B,WAAW,SAAS,iBACpB,EAAE;AAEJ,cAAQ,gBAAgB,QAAQ,UAAU;;AAU5C,aAAS,SAAS,MAAM,GAAG,UAAU;AACnC,UAAI,UAAU,KAAK,KAAK,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC;AACtD,UACE,CAAC,WACD,QAAQ,SAAS,sBAChB,CAAC,YAAY,QAAQ,cACtB;AACA;;AAIF,UAAI,WAAW,QAAQ;AACvB,cAAQ,QAAQ,QAAQ,MAAM,QAAQ,WAAW,SAAS,WAAW,EAAE;AACvE,cAAQ,eAAe,QAAQ,UAAU;AACzC,aAAO,QAAQ;;yBAGF;;;;;;;;;;;;;;;;;;;;;;;;;ACvOf,aAAS,cAAc,MAAM,OAAO;AAClC,cAAQ,MAAM,OAAO,MAAM,KAAK,WAAW;AAE3C,UAAI,KAAK,KAAK,aAAa,OAAO;AAChC,YAAI,YAAY,EAAE,KAAK,KAAK,KAAK,IAAG;AAEpC,cAAM,IAAA,YAAA,SAAA,EACJ,KAAK,KAAK,WAAW,oBAAoB,OACzC,SAAS;;;AAKR,aAAS,eAAe,QAAQ,SAAS;AAC9C,WAAK,SAAS;AACd,WAAK,QAAQ;QACX,MAAM,QAAQ;QACd,QAAQ,QAAQ;;AAElB,WAAK,MAAM;QACT,MAAM,QAAQ;QACd,QAAQ,QAAQ;;;AAIb,aAAS,GAAG,OAAO;AACxB,UAAI,WAAW,KAAK,KAAK,GAAG;AAC1B,eAAO,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC;aACrC;AACL,eAAO;;;AAIJ,aAAS,WAAW,MAAM,OAAO;AACtC,aAAO;QACL,MAAM,KAAK,OAAO,CAAC,MAAM;QACzB,OAAO,MAAM,OAAO,MAAM,SAAS,CAAC,MAAM;;;AAIvC,aAAS,aAAa,SAAS;AACpC,aAAO,QAAQ,QAAQ,gBAAgB,EAAE,EAAE,QAAQ,eAAe,EAAE;;AAG/D,aAAS,YAAY,MAAM,OAAO,KAAK;AAC5C,YAAM,KAAK,QAAQ,GAAG;AAEtB,UAAI,WAAW,OAAO,MAAM,IAC1B,MAAM,CAAA,GACN,QAAQ;AAEV,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAI,GAAG,KAAK;AAC5C,YAAI,OAAO,MAAM,CAAC,EAAE,MAGlB,YAAY,MAAM,CAAC,EAAE,aAAa;AACpC,qBAAa,MAAM,CAAC,EAAE,aAAa,MAAM;AAEzC,YAAI,CAAC,cAAc,SAAS,QAAQ,SAAS,OAAO,SAAS,SAAS;AACpE,cAAI,IAAI,SAAS,GAAG;AAClB,kBAAM,IAAA,YAAA,SAAA,EAAc,mBAAmB,UAAU,EAAE,IAAG,CAAE;qBAC/C,SAAS,MAAM;AACxB;;eAEG;AACL,cAAI,KAAK,IAAI;;;AAIjB,aAAO;QACL,MAAM;QACN;QACA;QACA,OAAO;QACP;QACA;;;AAIG,aAAS,gBAAgB,MAAM,QAAQ,MAAM,MAAM,OAAO,SAAS;AAExE,UAAI,aAAa,KAAK,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,GAC9C,UAAU,eAAe,OAAO,eAAe;AAEjD,UAAI,YAAY,KAAK,KAAK,IAAI;AAC9B,aAAO;QACL,MAAM,YAAY,cAAc;QAChC;QACA;QACA;QACA;QACA;QACA,KAAK,KAAK,QAAQ,OAAO;;;AAItB,aAAS,gBAAgB,cAAc,UAAU,OAAO,SAAS;AACtE,oBAAc,cAAc,KAAK;AAEjC,gBAAU,KAAK,QAAQ,OAAO;AAC9B,UAAI,UAAU;QACZ,MAAM;QACN,MAAM;QACN,OAAO,CAAA;QACP,KAAK;;AAGP,aAAO;QACL,MAAM;QACN,MAAM,aAAa;QACnB,QAAQ,aAAa;QACrB,MAAM,aAAa;QACnB;QACA,WAAW,CAAA;QACX,cAAc,CAAA;QACd,YAAY,CAAA;QACZ,KAAK;;;AAIF,aAAS,aACd,WACA,SACA,mBACA,OACA,UACA,SACA;AACA,UAAI,SAAS,MAAM,MAAM;AACvB,sBAAc,WAAW,KAAK;;AAGhC,UAAI,YAAY,KAAK,KAAK,UAAU,IAAI;AAExC,cAAQ,cAAc,UAAU;AAEhC,UAAI,UAAO,QAAE,eAAY;AAEzB,UAAI,mBAAmB;AACrB,YAAI,WAAW;AACb,gBAAM,IAAA,YAAA,SAAA,EACJ,yCACA,iBAAiB;;AAIrB,YAAI,kBAAkB,OAAO;AAC3B,4BAAkB,QAAQ,KAAK,CAAC,EAAE,aAAa,MAAM;;AAGvD,uBAAe,kBAAkB;AACjC,kBAAU,kBAAkB;;AAG9B,UAAI,UAAU;AACZ,mBAAW;AACX,kBAAU;AACV,kBAAU;;AAGZ,aAAO;QACL,MAAM,YAAY,mBAAmB;QACrC,MAAM,UAAU;QAChB,QAAQ,UAAU;QAClB,MAAM,UAAU;QAChB;QACA;QACA,WAAW,UAAU;QACrB;QACA,YAAY,SAAS,MAAM;QAC3B,KAAK,KAAK,QAAQ,OAAO;;;AAItB,aAAS,eAAe,YAAY,KAAK;AAC9C,UAAI,CAAC,OAAO,WAAW,QAAQ;AAC7B,YAAM,WAAW,WAAW,CAAC,EAAE,KAC7B,UAAU,WAAW,WAAW,SAAS,CAAC,EAAE;AAG9C,YAAI,YAAY,SAAS;AACvB,gBAAM;YACJ,QAAQ,SAAS;YACjB,OAAO;cACL,MAAM,SAAS,MAAM;cACrB,QAAQ,SAAS,MAAM;;YAEzB,KAAK;cACH,MAAM,QAAQ,IAAI;cAClB,QAAQ,QAAQ,IAAI;;;;;AAM5B,aAAO;QACL,MAAM;QACN,MAAM;QACN,OAAO,CAAA;QACP;;;AAIG,aAAS,oBAAoB,MAAM,SAAS,OAAO,SAAS;AACjE,oBAAc,MAAM,KAAK;AAEzB,aAAO;QACL,MAAM;QACN,MAAM,KAAK;QACX,QAAQ,KAAK;QACb,MAAM,KAAK;QACX;QACA,WAAW,KAAK;QAChB,YAAY,SAAS,MAAM;QAC3B,KAAK,KAAK,QAAQ,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCtNjB,UAAO,wBAAA,QAAA;;YAGV,SAAM,SAAA,SAAA;AAEf,QAAI,KAAK,CAAA;AACT,WAAA,OAAO,IAAI,OAAO;AAEX,aAAS,uBAAuB,OAAO,SAAS;AAErD,UAAI,MAAM,SAAS,WAAW;AAC5B,eAAO;;AAGT,eAAA,SAAA,EAAO,KAAK;AAGZ,SAAG,UAAU,SAAS,SAAS;AAC7B,eAAO,IAAI,GAAG,eAAe,WAAW,QAAQ,SAAS,OAAO;;AAGlE,UAAI,MAAM,SAAA,SAAA,EAAO,MAAM,KAAK;AAE5B,aAAO;;AAGF,aAAS,MAAM,OAAO,SAAS;AACpC,UAAI,MAAM,uBAAuB,OAAO,OAAO;AAC/C,UAAI,QAAQ,IAAA,oBAAA,SAAA,EAAsB,OAAO;AAEzC,aAAO,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;AC1BzB,QAAM,QAAQ,CAAA,EAAG;AAEV,aAAS,WAAW;IAAA;AAO3B,aAAS,YAAY;MACnB,UAAU;MAEV,QAAQ,SAAA,OAAS,OAAO;AACtB,YAAI,MAAM,KAAK,QAAQ;AACvB,YAAI,MAAM,QAAQ,WAAW,KAAK;AAChC,iBAAO;;AAGT,iBAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,cAAI,SAAS,KAAK,QAAQ,CAAC,GACzB,cAAc,MAAM,QAAQ,CAAC;AAC/B,cACE,OAAO,WAAW,YAAY,UAC9B,CAAC,UAAU,OAAO,MAAM,YAAY,IAAI,GACxC;AACA,mBAAO;;;AAMX,cAAM,KAAK,SAAS;AACpB,iBAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,cAAI,CAAC,KAAK,SAAS,CAAC,EAAE,OAAO,MAAM,SAAS,CAAC,CAAC,GAAG;AAC/C,mBAAO;;;AAIX,eAAO;;MAGT,MAAM;MAEN,SAAS,SAAAC,SAAS,SAAS,SAAS;AAClC,aAAK,aAAa,CAAA;AAClB,aAAK,UAAU,CAAA;AACf,aAAK,WAAW,CAAA;AAChB,aAAK,UAAU;AACf,aAAK,eAAe,QAAQ;AAC5B,aAAK,WAAW,QAAQ;AAExB,gBAAQ,cAAc,QAAQ,eAAe,CAAA;AAE7C,gBAAQ,eAAe,OAAA,OACrB,uBAAO,OAAO,IAAI,GAClB;UACE,eAAe;UACf,oBAAoB;UACpB,MAAM;UACN,MAAI;UACJ,QAAQ;UACR,QAAM;UACN,KAAK;UACL,QAAQ;WAEV,QAAQ,YAAY;AAGtB,eAAO,KAAK,OAAO,OAAO;;MAG5B,gBAAgB,SAAA,eAAS,SAAS;AAChC,YAAI,gBAAgB,IAAI,KAAK,SAAQ,GACnC,SAAS,cAAc,QAAQ,SAAS,KAAK,OAAO,GACpD,OAAO,KAAK;AAEd,aAAK,aAAa,KAAK,cAAc,OAAO;AAE5C,aAAK,SAAS,IAAI,IAAI;AACtB,aAAK,YAAY,KAAK,aAAa,OAAO;AAE1C,eAAO;;MAGT,QAAQ,SAAA,OAAS,MAAM;AAErB,YAAI,CAAC,KAAK,KAAK,IAAI,GAAG;AACpB,gBAAM,IAAA,YAAA,SAAA,EAAc,mBAAmB,KAAK,MAAM,IAAI;;AAGxD,aAAK,WAAW,QAAQ,IAAI;AAC5B,YAAI,MAAM,KAAK,KAAK,IAAI,EAAE,IAAI;AAC9B,aAAK,WAAW,MAAK;AACrB,eAAO;;MAGT,SAAS,SAAA,QAAS,SAAS;AACzB,aAAK,QAAQ,YAAY,QAAQ,QAAQ,WAAW;AAEpD,YAAI,OAAO,QAAQ,MACjB,aAAa,KAAK;AACpB,iBAAS,IAAI,GAAG,IAAI,YAAY,KAAK;AACnC,eAAK,OAAO,KAAK,CAAC,CAAC;;AAGrB,aAAK,QAAQ,YAAY,MAAK;AAE9B,aAAK,WAAW,eAAe;AAC/B,aAAK,cAAc,QAAQ,cAAc,QAAQ,YAAY,SAAS;AAEtE,eAAO;;MAGT,gBAAgB,SAAA,eAAS,OAAO;AAC9B,QAAAC,wBAAuB,KAAK;AAE5B,YAAI,UAAU,MAAM,SAClB,UAAU,MAAM;AAElB,kBAAU,WAAW,KAAK,eAAe,OAAO;AAChD,kBAAU,WAAW,KAAK,eAAe,OAAO;AAEhD,YAAI,OAAO,KAAK,cAAc,KAAK;AAEnC,YAAI,SAAS,UAAU;AACrB,eAAK,YAAY,OAAO,SAAS,OAAO;mBAC/B,SAAS,UAAU;AAC5B,eAAK,YAAY,KAAK;AAItB,eAAK,OAAO,eAAe,OAAO;AAClC,eAAK,OAAO,eAAe,OAAO;AAClC,eAAK,OAAO,WAAW;AACvB,eAAK,OAAO,cAAc,MAAM,KAAK,QAAQ;eACxC;AACL,eAAK,eAAe,OAAO,SAAS,OAAO;AAI3C,eAAK,OAAO,eAAe,OAAO;AAClC,eAAK,OAAO,eAAe,OAAO;AAClC,eAAK,OAAO,WAAW;AACvB,eAAK,OAAO,qBAAqB;;AAGnC,aAAK,OAAO,QAAQ;;MAGtB,gBAAc,SAAA,eAAC,WAAW;AACxB,YAAI,UAAU,UAAU,WAAW,KAAK,eAAe,UAAU,OAAO;AACxE,YAAI,SAAS,KAAK,wBAAwB,WAAW,SAAS,MAAS,GACrE,OAAO,UAAU;AAEnB,aAAK,gBAAgB;AACrB,aAAK,OAAO,qBAAqB,OAAO,QAAQ,KAAK,QAAQ;;MAG/D,kBAAkB,SAAA,iBAAS,SAAS;AAClC,aAAK,aAAa;AAElB,YAAI,UAAU,QAAQ;AACtB,YAAI,SAAS;AACX,oBAAU,KAAK,eAAe,QAAQ,OAAO;;AAG/C,YAAI,SAAS,QAAQ;AACrB,YAAI,OAAO,SAAS,GAAG;AACrB,gBAAM,IAAA,YAAA,SAAA,EACJ,8CAA8C,OAAO,QACrD,OAAO;mBAEA,CAAC,OAAO,QAAQ;AACzB,cAAI,KAAK,QAAQ,wBAAwB;AACvC,iBAAK,OAAO,eAAe,WAAW;iBACjC;AACL,mBAAO,KAAK,EAAE,MAAM,kBAAkB,OAAO,CAAA,GAAI,OAAO,EAAC,CAAE;;;AAI/D,YAAI,cAAc,QAAQ,KAAK,UAC7B,YAAY,QAAQ,KAAK,SAAS;AACpC,YAAI,WAAW;AACb,eAAK,OAAO,QAAQ,IAAI;;AAG1B,aAAK,wBAAwB,SAAS,SAAS,QAAW,IAAI;AAE9D,YAAI,SAAS,QAAQ,UAAU;AAC/B,YAAI,KAAK,QAAQ,iBAAiB,QAAQ;AACxC,eAAK,OAAO,iBAAiB,MAAM;AACnC,mBAAS;;AAGX,aAAK,OAAO,iBAAiB,WAAW,aAAa,MAAM;AAC3D,aAAK,OAAO,QAAQ;;MAEtB,uBAAuB,SAAA,sBAAS,cAAc;AAC5C,aAAK,iBAAiB,YAAY;;MAGpC,mBAAmB,SAAA,kBAAS,UAAU;AACpC,aAAK,cAAc,QAAQ;AAE3B,YAAI,SAAS,WAAW,CAAC,KAAK,QAAQ,UAAU;AAC9C,eAAK,OAAO,eAAe;eACtB;AACL,eAAK,OAAO,QAAQ;;;MAGxB,WAAS,SAAA,UAAC,WAAW;AACnB,aAAK,eAAe,SAAS;;MAG/B,kBAAkB,SAAA,iBAAS,SAAS;AAClC,YAAI,QAAQ,OAAO;AACjB,eAAK,OAAO,iBAAiB,QAAQ,KAAK;;;MAI9C,kBAAkB,SAAA,mBAAW;MAAA;MAE7B,eAAe,SAAA,cAAS,OAAO;AAC7B,QAAAA,wBAAuB,KAAK;AAC5B,YAAI,OAAO,KAAK,cAAc,KAAK;AAEnC,YAAI,SAAS,UAAU;AACrB,eAAK,YAAY,KAAK;mBACb,SAAS,UAAU;AAC5B,eAAK,YAAY,KAAK;eACjB;AACL,eAAK,eAAe,KAAK;;;MAG7B,gBAAgB,SAAA,eAAS,OAAO,SAAS,SAAS;AAChD,YAAI,OAAO,MAAM,MACf,OAAO,KAAK,MAAM,CAAC,GACnBC,WAAU,WAAW,QAAQ,WAAW;AAE1C,aAAK,OAAO,cAAc,KAAK,KAAK;AAEpC,aAAK,OAAO,eAAe,OAAO;AAClC,aAAK,OAAO,eAAe,OAAO;AAElC,aAAK,SAAS;AACd,aAAK,OAAO,IAAI;AAEhB,aAAK,OAAO,mBAAmB,MAAMA,QAAO;;MAG9C,aAAa,SAAA,YAAS,OAAO;AAC3B,YAAI,OAAO,MAAM;AACjB,aAAK,SAAS;AACd,aAAK,OAAO,IAAI;AAChB,aAAK,OAAO,uBAAuB;;MAGrC,aAAa,SAAA,YAAS,OAAO,SAAS,SAAS;AAC7C,YAAI,SAAS,KAAK,wBAAwB,OAAO,SAAS,OAAO,GAC/D,OAAO,MAAM,MACb,OAAO,KAAK,MAAM,CAAC;AAErB,YAAI,KAAK,QAAQ,aAAa,IAAI,GAAG;AACnC,eAAK,OAAO,qBAAqB,OAAO,QAAQ,IAAI;mBAC3C,KAAK,QAAQ,kBAAkB;AACxC,gBAAM,IAAA,YAAA,SAAA,EACJ,iEAAiE,MACjE,KAAK;eAEF;AACL,eAAK,SAAS;AACd,eAAK,QAAQ;AAEb,eAAK,OAAO,IAAI;AAChB,eAAK,OACH,gBACA,OAAO,QACP,KAAK,UACL,MAAA,SAAA,EAAI,QAAQ,SAAS,IAAI,CAAC;;;MAKhC,gBAAgB,SAAA,eAAS,MAAM;AAC7B,aAAK,SAAS,KAAK,KAAK;AACxB,aAAK,OAAO,cAAc,KAAK,KAAK;AAEpC,YAAI,OAAO,KAAK,MAAM,CAAC,GACrB,SAAS,MAAA,SAAA,EAAI,QAAQ,SAAS,IAAI,GAClC,eAAe,CAAC,KAAK,SAAS,CAAC,UAAU,KAAK,gBAAgB,IAAI;AAEpE,YAAI,cAAc;AAChB,eAAK,OAAO,oBAAoB,cAAc,KAAK,KAAK;mBAC/C,CAAC,MAAM;AAEhB,eAAK,OAAO,aAAa;mBAChB,KAAK,MAAM;AACpB,eAAK,QAAQ,OAAO;AACpB,eAAK,OAAO,cAAc,KAAK,OAAO,KAAK,OAAO,KAAK,MAAM;eACxD;AACL,eAAK,OACH,mBACA,KAAK,OACL,KAAK,OACL,KAAK,QACL,MAAM;;;MAKZ,eAAe,SAAA,cAAS,QAAQ;AAC9B,aAAK,OAAO,cAAc,OAAO,KAAK;;MAGxC,eAAe,SAAA,cAAS,QAAQ;AAC9B,aAAK,OAAO,eAAe,OAAO,KAAK;;MAGzC,gBAAgB,SAAA,eAAS,MAAM;AAC7B,aAAK,OAAO,eAAe,KAAK,KAAK;;MAGvC,kBAAkB,SAAA,mBAAW;AAC3B,aAAK,OAAO,eAAe,WAAW;;MAGxC,aAAa,SAAA,cAAW;AACtB,aAAK,OAAO,eAAe,MAAM;;MAGnC,MAAM,SAAA,KAAS,MAAM;AACnB,YAAI,QAAQ,KAAK,OACf,IAAI,GACJ,IAAI,MAAM;AAEZ,aAAK,OAAO,UAAU;AAEtB,eAAO,IAAI,GAAG,KAAK;AACjB,eAAK,UAAU,MAAM,CAAC,EAAE,KAAK;;AAE/B,eAAO,KAAK;AACV,eAAK,OAAO,gBAAgB,MAAM,CAAC,EAAE,GAAG;;AAE1C,aAAK,OAAO,SAAS;;;MAIvB,QAAQ,SAAA,OAAS,MAAM;AACrB,aAAK,QAAQ,KAAK;UAChB,QAAQ;UACR,MAAM,MAAM,KAAK,WAAW,CAAC;UAC7B,KAAK,KAAK,WAAW,CAAC,EAAE;SACzB;;MAGH,UAAU,SAAA,SAAS,OAAO;AACxB,YAAI,CAAC,OAAO;AACV;;AAGF,aAAK,YAAY;;MAGnB,eAAe,SAAA,cAAS,OAAO;AAC7B,YAAI,WAAW,MAAA,SAAA,EAAI,QAAQ,SAAS,MAAM,IAAI;AAE9C,YAAI,eAAe,YAAY,CAAC,CAAC,KAAK,gBAAgB,MAAM,KAAK,MAAM,CAAC,CAAC;AAIzE,YAAI,WAAW,CAAC,gBAAgB,MAAA,SAAA,EAAI,QAAQ,iBAAiB,KAAK;AAKlE,YAAI,aAAa,CAAC,iBAAiB,YAAY;AAI/C,YAAI,cAAc,CAAC,UAAU;AAC3B,cAAI,QAAO,MAAM,KAAK,MAAM,CAAC,GAC3B,UAAU,KAAK;AACjB,cAAI,QAAQ,aAAa,KAAI,GAAG;AAC9B,uBAAW;qBACF,QAAQ,kBAAkB;AACnC,yBAAa;;;AAIjB,YAAI,UAAU;AACZ,iBAAO;mBACE,YAAY;AACrB,iBAAO;eACF;AACL,iBAAO;;;MAIX,YAAY,SAAA,WAAS,QAAQ;AAC3B,iBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,KAAK;AAC7C,eAAK,UAAU,OAAO,CAAC,CAAC;;;MAI5B,WAAW,SAAA,UAAS,KAAK;AACvB,YAAI,QAAQ,IAAI,SAAS,OAAO,IAAI,QAAQ,IAAI,YAAY;AAE5D,YAAI,KAAK,cAAc;AACrB,cAAI,MAAM,SAAS;AACjB,oBAAQ,MAAM,QAAQ,gBAAgB,EAAE,EAAE,QAAQ,OAAO,GAAG;;AAG9D,cAAI,IAAI,OAAO;AACb,iBAAK,SAAS,IAAI,KAAK;;AAEzB,eAAK,OAAO,cAAc,IAAI,SAAS,CAAC;AACxC,eAAK,OAAO,mBAAmB,OAAO,IAAI,IAAI;AAE9C,cAAI,IAAI,SAAS,iBAAiB;AAGhC,iBAAK,OAAO,GAAG;;eAEZ;AACL,cAAI,KAAK,UAAU;AACjB,gBAAI,kBAAe;AACnB,gBAAI,IAAI,SAAS,CAAC,MAAA,SAAA,EAAI,QAAQ,SAAS,GAAG,KAAK,CAAC,IAAI,OAAO;AACzD,gCAAkB,KAAK,gBAAgB,IAAI,MAAM,CAAC,CAAC;;AAErD,gBAAI,iBAAiB;AACnB,kBAAI,kBAAkB,IAAI,MAAM,MAAM,CAAC,EAAE,KAAK,GAAG;AACjD,mBAAK,OAAO,UAAU,cAAc,iBAAiB,eAAe;mBAC/D;AACL,sBAAQ,IAAI,YAAY;AACxB,kBAAI,MAAM,SAAS;AACjB,wBAAQ,MACL,QAAQ,iBAAiB,EAAE,EAC3B,QAAQ,SAAS,EAAE,EACnB,QAAQ,QAAQ,EAAE;;AAGvB,mBAAK,OAAO,UAAU,IAAI,MAAM,KAAK;;;AAGzC,eAAK,OAAO,GAAG;;;MAInB,yBAAyB,SAAA,wBAAS,OAAO,SAAS,SAAS,WAAW;AACpE,YAAI,SAAS,MAAM;AACnB,aAAK,WAAW,MAAM;AAEtB,aAAK,OAAO,eAAe,OAAO;AAClC,aAAK,OAAO,eAAe,OAAO;AAElC,YAAI,MAAM,MAAM;AACd,eAAK,OAAO,MAAM,IAAI;eACjB;AACL,eAAK,OAAO,aAAa,SAAS;;AAGpC,eAAO;;MAGT,iBAAiB,SAAA,gBAAS,MAAM;AAC9B,iBACM,QAAQ,GAAG,MAAM,KAAK,QAAQ,YAAY,QAC9C,QAAQ,KACR,SACA;AACA,cAAI,cAAc,KAAK,QAAQ,YAAY,KAAK,GAC9C,QAAQ,eAAe,OAAA,QAAQ,aAAa,IAAI;AAClD,cAAI,eAAe,SAAS,GAAG;AAC7B,mBAAO,CAAC,OAAO,KAAK;;;;;AAMrB,aAAS,WAAW,OAAO,SAAS,KAAK;AAC9C,UACE,SAAS,QACR,OAAO,UAAU,YAAY,MAAM,SAAS,WAC7C;AACA,cAAM,IAAA,YAAA,SAAA,EACJ,mFACE,KAAK;;AAIX,gBAAU,WAAW,CAAA;AACrB,UAAI,EAAE,UAAU,UAAU;AACxB,gBAAQ,OAAO;;AAEjB,UAAI,QAAQ,QAAQ;AAClB,gBAAQ,YAAY;;AAGtB,UAAI,MAAM,IAAI,MAAM,OAAO,OAAO,GAChC,cAAc,IAAI,IAAI,SAAQ,EAAG,QAAQ,KAAK,OAAO;AACvD,aAAO,IAAI,IAAI,mBAAkB,EAAG,QAAQ,aAAa,OAAO;;AAG3D,aAAS,QAAQ,OAAO,SAAc,KAAK;UAAnB,YAAO,OAAP,WAAU,CAAA;AACvC,UACE,SAAS,QACR,OAAO,UAAU,YAAY,MAAM,SAAS,WAC7C;AACA,cAAM,IAAA,YAAA,SAAA,EACJ,gFACE,KAAK;;AAIX,gBAAU,OAAA,OAAO,CAAA,GAAI,OAAO;AAC5B,UAAI,EAAE,UAAU,UAAU;AACxB,gBAAQ,OAAO;;AAEjB,UAAI,QAAQ,QAAQ;AAClB,gBAAQ,YAAY;;AAGtB,UAAI,WAAQ;AAEZ,eAAS,eAAe;AACtB,YAAI,MAAM,IAAI,MAAM,OAAO,OAAO,GAChC,cAAc,IAAI,IAAI,SAAQ,EAAG,QAAQ,KAAK,OAAO,GACrD,eAAe,IAAI,IAAI,mBAAkB,EAAG,QAC1C,aACA,SACA,QACA,IAAI;AAER,eAAO,IAAI,SAAS,YAAY;;AAIlC,eAAS,IAAI,SAAS,aAAa;AACjC,YAAI,CAAC,UAAU;AACb,qBAAW,aAAY;;AAEzB,eAAO,SAAS,KAAK,MAAM,SAAS,WAAW;;AAEjD,UAAI,SAAS,SAAS,cAAc;AAClC,YAAI,CAAC,UAAU;AACb,qBAAW,aAAY;;AAEzB,eAAO,SAAS,OAAO,YAAY;;AAErC,UAAI,SAAS,SAAS,GAAG,MAAM,aAAa,QAAQ;AAClD,YAAI,CAAC,UAAU;AACb,qBAAW,aAAY;;AAEzB,eAAO,SAAS,OAAO,GAAG,MAAM,aAAa,MAAM;;AAErD,aAAO;;AAGT,aAAS,UAAU,GAAG,GAAG;AACvB,UAAI,MAAM,GAAG;AACX,eAAO;;AAGT,UAAI,OAAA,QAAQ,CAAC,KAAK,OAAA,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ;AACrD,iBAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,cAAI,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG;AAC1B,mBAAO;;;AAGX,eAAO;;;AAIX,aAASD,wBAAuB,OAAO;AACrC,UAAI,CAAC,MAAM,KAAK,OAAO;AACrB,YAAI,UAAU,MAAM;AAGpB,cAAM,OAAO;UACX,MAAM;UACN,MAAM;UACN,OAAO;UACP,OAAO,CAAC,QAAQ,WAAW,EAAE;UAC7B,UAAU,QAAQ,WAAW;UAC7B,KAAK,QAAQ;;;;;;;;AC9kBnB;AAAA;AAOA,QAAI,eAAe,mEAAmE,MAAM,EAAE;AAK9F,YAAQ,SAAS,SAAU,QAAQ;AACjC,UAAI,KAAK,UAAU,SAAS,aAAa,QAAQ;AAC/C,eAAO,aAAa,MAAM;AAAA,MAC5B;AACA,YAAM,IAAI,UAAU,+BAA+B,MAAM;AAAA,IAC3D;AAMA,YAAQ,SAAS,SAAU,UAAU;AACnC,UAAI,OAAO;AACX,UAAI,OAAO;AAEX,UAAI,UAAU;AACd,UAAI,UAAU;AAEd,UAAI,OAAO;AACX,UAAI,OAAO;AAEX,UAAI,OAAO;AACX,UAAI,QAAQ;AAEZ,UAAI,eAAe;AACnB,UAAI,eAAe;AAGnB,UAAI,QAAQ,YAAY,YAAY,MAAM;AACxC,eAAQ,WAAW;AAAA,MACrB;AAGA,UAAI,WAAW,YAAY,YAAY,SAAS;AAC9C,eAAQ,WAAW,UAAU;AAAA,MAC/B;AAGA,UAAI,QAAQ,YAAY,YAAY,MAAM;AACxC,eAAQ,WAAW,OAAO;AAAA,MAC5B;AAGA,UAAI,YAAY,MAAM;AACpB,eAAO;AAAA,MACT;AAGA,UAAI,YAAY,OAAO;AACrB,eAAO;AAAA,MACT;AAGA,aAAO;AAAA,IACT;AAAA;AAAA;;;AClEA;AAAA;AAqCA,QAAI,SAAS;AAcb,QAAI,iBAAiB;AAGrB,QAAI,WAAW,KAAK;AAGpB,QAAI,gBAAgB,WAAW;AAG/B,QAAI,uBAAuB;AAQ3B,aAAS,YAAY,QAAQ;AAC3B,aAAO,SAAS,KACV,CAAC,UAAW,KAAK,KAClB,UAAU,KAAK;AAAA,IACtB;AAQA,aAAS,cAAc,QAAQ;AAC7B,UAAI,cAAc,SAAS,OAAO;AAClC,UAAI,UAAU,UAAU;AACxB,aAAO,aACH,CAAC,UACD;AAAA,IACN;AAKA,YAAQ,SAAS,SAAS,iBAAiB,QAAQ;AACjD,UAAI,UAAU;AACd,UAAI;AAEJ,UAAI,MAAM,YAAY,MAAM;AAE5B,SAAG;AACD,gBAAQ,MAAM;AACd,iBAAS;AACT,YAAI,MAAM,GAAG;AAGX,mBAAS;AAAA,QACX;AACA,mBAAW,OAAO,OAAO,KAAK;AAAA,MAChC,SAAS,MAAM;AAEf,aAAO;AAAA,IACT;AAMA,YAAQ,SAAS,SAAS,iBAAiB,MAAM,QAAQ,WAAW;AAClE,UAAI,SAAS,KAAK;AAClB,UAAI,SAAS;AACb,UAAI,QAAQ;AACZ,UAAI,cAAc;AAElB,SAAG;AACD,YAAI,UAAU,QAAQ;AACpB,gBAAM,IAAI,MAAM,4CAA4C;AAAA,QAC9D;AAEA,gBAAQ,OAAO,OAAO,KAAK,WAAW,QAAQ,CAAC;AAC/C,YAAI,UAAU,IAAI;AAChB,gBAAM,IAAI,MAAM,2BAA2B,KAAK,OAAO,SAAS,CAAC,CAAC;AAAA,QACpE;AAEA,uBAAe,CAAC,EAAE,QAAQ;AAC1B,iBAAS;AACT,iBAAS,UAAU,SAAS;AAC5B,iBAAS;AAAA,MACX,SAAS;AAET,gBAAU,QAAQ,cAAc,MAAM;AACtC,gBAAU,OAAO;AAAA,IACnB;AAAA;AAAA;;;AC3IA;AAAA;AAiBA,aAAS,OAAO,OAAO,OAAO,eAAe;AAC3C,UAAI,SAAS,OAAO;AAClB,eAAO,MAAM,KAAK;AAAA,MACpB,WAAW,UAAU,WAAW,GAAG;AACjC,eAAO;AAAA,MACT,OAAO;AACL,cAAM,IAAI,MAAM,MAAM,QAAQ,2BAA2B;AAAA,MAC3D;AAAA,IACF;AACA,YAAQ,SAAS;AAEjB,QAAI,YAAY;AAChB,QAAI,gBAAgB;AAEpB,aAAS,SAAS,MAAM;AACtB,UAAI,QAAQ,KAAK,MAAM,SAAS;AAChC,UAAI,CAAC,OAAO;AACV,eAAO;AAAA,MACT;AACA,aAAO;AAAA,QACL,QAAQ,MAAM,CAAC;AAAA,QACf,MAAM,MAAM,CAAC;AAAA,QACb,MAAM,MAAM,CAAC;AAAA,QACb,MAAM,MAAM,CAAC;AAAA,QACb,MAAM,MAAM,CAAC;AAAA,MACf;AAAA,IACF;AACA,YAAQ,WAAW;AAEnB,aAAS,YAAY,YAAY;AAC/B,UAAI,MAAM;AACV,UAAI,WAAW,QAAQ;AACrB,eAAO,WAAW,SAAS;AAAA,MAC7B;AACA,aAAO;AACP,UAAI,WAAW,MAAM;AACnB,eAAO,WAAW,OAAO;AAAA,MAC3B;AACA,UAAI,WAAW,MAAM;AACnB,eAAO,WAAW;AAAA,MACpB;AACA,UAAI,WAAW,MAAM;AACnB,eAAO,MAAM,WAAW;AAAA,MAC1B;AACA,UAAI,WAAW,MAAM;AACnB,eAAO,WAAW;AAAA,MACpB;AACA,aAAO;AAAA,IACT;AACA,YAAQ,cAAc;AAatB,aAAS,UAAU,OAAO;AACxB,UAAI,OAAO;AACX,UAAI,MAAM,SAAS,KAAK;AACxB,UAAI,KAAK;AACP,YAAI,CAAC,IAAI,MAAM;AACb,iBAAO;AAAA,QACT;AACA,eAAO,IAAI;AAAA,MACb;AACA,UAAI,aAAa,QAAQ,WAAW,IAAI;AAExC,UAAI,QAAQ,KAAK,MAAM,KAAK;AAC5B,eAAS,MAAM,KAAK,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK;AACxD,eAAO,MAAM,CAAC;AACd,YAAI,SAAS,KAAK;AAChB,gBAAM,OAAO,GAAG,CAAC;AAAA,QACnB,WAAW,SAAS,MAAM;AACxB;AAAA,QACF,WAAW,KAAK,GAAG;AACjB,cAAI,SAAS,IAAI;AAIf,kBAAM,OAAO,IAAI,GAAG,EAAE;AACtB,iBAAK;AAAA,UACP,OAAO;AACL,kBAAM,OAAO,GAAG,CAAC;AACjB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,aAAO,MAAM,KAAK,GAAG;AAErB,UAAI,SAAS,IAAI;AACf,eAAO,aAAa,MAAM;AAAA,MAC5B;AAEA,UAAI,KAAK;AACP,YAAI,OAAO;AACX,eAAO,YAAY,GAAG;AAAA,MACxB;AACA,aAAO;AAAA,IACT;AACA,YAAQ,YAAY;AAkBpB,aAAS,KAAK,OAAO,OAAO;AAC1B,UAAI,UAAU,IAAI;AAChB,gBAAQ;AAAA,MACV;AACA,UAAI,UAAU,IAAI;AAChB,gBAAQ;AAAA,MACV;AACA,UAAI,WAAW,SAAS,KAAK;AAC7B,UAAI,WAAW,SAAS,KAAK;AAC7B,UAAI,UAAU;AACZ,gBAAQ,SAAS,QAAQ;AAAA,MAC3B;AAGA,UAAI,YAAY,CAAC,SAAS,QAAQ;AAChC,YAAI,UAAU;AACZ,mBAAS,SAAS,SAAS;AAAA,QAC7B;AACA,eAAO,YAAY,QAAQ;AAAA,MAC7B;AAEA,UAAI,YAAY,MAAM,MAAM,aAAa,GAAG;AAC1C,eAAO;AAAA,MACT;AAGA,UAAI,YAAY,CAAC,SAAS,QAAQ,CAAC,SAAS,MAAM;AAChD,iBAAS,OAAO;AAChB,eAAO,YAAY,QAAQ;AAAA,MAC7B;AAEA,UAAI,SAAS,MAAM,OAAO,CAAC,MAAM,MAC7B,QACA,UAAU,MAAM,QAAQ,QAAQ,EAAE,IAAI,MAAM,KAAK;AAErD,UAAI,UAAU;AACZ,iBAAS,OAAO;AAChB,eAAO,YAAY,QAAQ;AAAA,MAC7B;AACA,aAAO;AAAA,IACT;AACA,YAAQ,OAAO;AAEf,YAAQ,aAAa,SAAU,OAAO;AACpC,aAAO,MAAM,OAAO,CAAC,MAAM,OAAO,UAAU,KAAK,KAAK;AAAA,IACxD;AAQA,aAAS,SAAS,OAAO,OAAO;AAC9B,UAAI,UAAU,IAAI;AAChB,gBAAQ;AAAA,MACV;AAEA,cAAQ,MAAM,QAAQ,OAAO,EAAE;AAM/B,UAAI,QAAQ;AACZ,aAAO,MAAM,QAAQ,QAAQ,GAAG,MAAM,GAAG;AACvC,YAAI,QAAQ,MAAM,YAAY,GAAG;AACjC,YAAI,QAAQ,GAAG;AACb,iBAAO;AAAA,QACT;AAKA,gBAAQ,MAAM,MAAM,GAAG,KAAK;AAC5B,YAAI,MAAM,MAAM,mBAAmB,GAAG;AACpC,iBAAO;AAAA,QACT;AAEA,UAAE;AAAA,MACJ;AAGA,aAAO,MAAM,QAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,MAAM,OAAO,MAAM,SAAS,CAAC;AAAA,IACrE;AACA,YAAQ,WAAW;AAEnB,QAAI,oBAAqB,WAAY;AACnC,UAAI,MAAM,uBAAO,OAAO,IAAI;AAC5B,aAAO,EAAE,eAAe;AAAA,IAC1B,EAAE;AAEF,aAAS,SAAU,GAAG;AACpB,aAAO;AAAA,IACT;AAWA,aAAS,YAAY,MAAM;AACzB,UAAI,cAAc,IAAI,GAAG;AACvB,eAAO,MAAM;AAAA,MACf;AAEA,aAAO;AAAA,IACT;AACA,YAAQ,cAAc,oBAAoB,WAAW;AAErD,aAAS,cAAc,MAAM;AAC3B,UAAI,cAAc,IAAI,GAAG;AACvB,eAAO,KAAK,MAAM,CAAC;AAAA,MACrB;AAEA,aAAO;AAAA,IACT;AACA,YAAQ,gBAAgB,oBAAoB,WAAW;AAEvD,aAAS,cAAc,GAAG;AACxB,UAAI,CAAC,GAAG;AACN,eAAO;AAAA,MACT;AAEA,UAAI,SAAS,EAAE;AAEf,UAAI,SAAS,GAA4B;AACvC,eAAO;AAAA,MACT;AAEA,UAAI,EAAE,WAAW,SAAS,CAAC,MAAM,MAC7B,EAAE,WAAW,SAAS,CAAC,MAAM,MAC7B,EAAE,WAAW,SAAS,CAAC,MAAM,OAC7B,EAAE,WAAW,SAAS,CAAC,MAAM,OAC7B,EAAE,WAAW,SAAS,CAAC,MAAM,OAC7B,EAAE,WAAW,SAAS,CAAC,MAAM,OAC7B,EAAE,WAAW,SAAS,CAAC,MAAM,OAC7B,EAAE,WAAW,SAAS,CAAC,MAAM,MAC7B,EAAE,WAAW,SAAS,CAAC,MAAM,IAAe;AAC9C,eAAO;AAAA,MACT;AAEA,eAAS,IAAI,SAAS,IAAI,KAAK,GAAG,KAAK;AACrC,YAAI,EAAE,WAAW,CAAC,MAAM,IAAc;AACpC,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAUA,aAAS,2BAA2B,UAAU,UAAU,qBAAqB;AAC3E,UAAI,MAAM,OAAO,SAAS,QAAQ,SAAS,MAAM;AACjD,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACT;AAEA,YAAM,SAAS,eAAe,SAAS;AACvC,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACT;AAEA,YAAM,SAAS,iBAAiB,SAAS;AACzC,UAAI,QAAQ,KAAK,qBAAqB;AACpC,eAAO;AAAA,MACT;AAEA,YAAM,SAAS,kBAAkB,SAAS;AAC1C,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACT;AAEA,YAAM,SAAS,gBAAgB,SAAS;AACxC,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACT;AAEA,aAAO,OAAO,SAAS,MAAM,SAAS,IAAI;AAAA,IAC5C;AACA,YAAQ,6BAA6B;AAWrC,aAAS,oCAAoC,UAAU,UAAU,sBAAsB;AACrF,UAAI,MAAM,SAAS,gBAAgB,SAAS;AAC5C,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACT;AAEA,YAAM,SAAS,kBAAkB,SAAS;AAC1C,UAAI,QAAQ,KAAK,sBAAsB;AACrC,eAAO;AAAA,MACT;AAEA,YAAM,OAAO,SAAS,QAAQ,SAAS,MAAM;AAC7C,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACT;AAEA,YAAM,SAAS,eAAe,SAAS;AACvC,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACT;AAEA,YAAM,SAAS,iBAAiB,SAAS;AACzC,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACT;AAEA,aAAO,OAAO,SAAS,MAAM,SAAS,IAAI;AAAA,IAC5C;AACA,YAAQ,sCAAsC;AAE9C,aAAS,OAAO,OAAO,OAAO;AAC5B,UAAI,UAAU,OAAO;AACnB,eAAO;AAAA,MACT;AAEA,UAAI,UAAU,MAAM;AAClB,eAAO;AAAA,MACT;AAEA,UAAI,UAAU,MAAM;AAClB,eAAO;AAAA,MACT;AAEA,UAAI,QAAQ,OAAO;AACjB,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAMA,aAAS,oCAAoC,UAAU,UAAU;AAC/D,UAAI,MAAM,SAAS,gBAAgB,SAAS;AAC5C,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACT;AAEA,YAAM,SAAS,kBAAkB,SAAS;AAC1C,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACT;AAEA,YAAM,OAAO,SAAS,QAAQ,SAAS,MAAM;AAC7C,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACT;AAEA,YAAM,SAAS,eAAe,SAAS;AACvC,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACT;AAEA,YAAM,SAAS,iBAAiB,SAAS;AACzC,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACT;AAEA,aAAO,OAAO,SAAS,MAAM,SAAS,IAAI;AAAA,IAC5C;AACA,YAAQ,sCAAsC;AAO9C,aAAS,oBAAoB,KAAK;AAChC,aAAO,KAAK,MAAM,IAAI,QAAQ,kBAAkB,EAAE,CAAC;AAAA,IACrD;AACA,YAAQ,sBAAsB;AAM9B,aAAS,iBAAiB,YAAY,WAAW,cAAc;AAC7D,kBAAY,aAAa;AAEzB,UAAI,YAAY;AAEd,YAAI,WAAW,WAAW,SAAS,CAAC,MAAM,OAAO,UAAU,CAAC,MAAM,KAAK;AACrE,wBAAc;AAAA,QAChB;AAMA,oBAAY,aAAa;AAAA,MAC3B;AAgBA,UAAI,cAAc;AAChB,YAAI,SAAS,SAAS,YAAY;AAClC,YAAI,CAAC,QAAQ;AACX,gBAAM,IAAI,MAAM,kCAAkC;AAAA,QACpD;AACA,YAAI,OAAO,MAAM;AAEf,cAAI,QAAQ,OAAO,KAAK,YAAY,GAAG;AACvC,cAAI,SAAS,GAAG;AACd,mBAAO,OAAO,OAAO,KAAK,UAAU,GAAG,QAAQ,CAAC;AAAA,UAClD;AAAA,QACF;AACA,oBAAY,KAAK,YAAY,MAAM,GAAG,SAAS;AAAA,MACjD;AAEA,aAAO,UAAU,SAAS;AAAA,IAC5B;AACA,YAAQ,mBAAmB;AAAA;AAAA;;;ACve3B;AAAA;AAOA,QAAI,OAAO;AACX,QAAI,MAAM,OAAO,UAAU;AAC3B,QAAI,eAAe,OAAO,QAAQ;AAQlC,aAAS,WAAW;AAClB,WAAK,SAAS,CAAC;AACf,WAAK,OAAO,eAAe,oBAAI,IAAI,IAAI,uBAAO,OAAO,IAAI;AAAA,IAC3D;AAKA,aAAS,YAAY,SAAS,mBAAmB,QAAQ,kBAAkB;AACzE,UAAI,MAAM,IAAI,SAAS;AACvB,eAAS,IAAI,GAAG,MAAM,OAAO,QAAQ,IAAI,KAAK,KAAK;AACjD,YAAI,IAAI,OAAO,CAAC,GAAG,gBAAgB;AAAA,MACrC;AACA,aAAO;AAAA,IACT;AAQA,aAAS,UAAU,OAAO,SAAS,gBAAgB;AACjD,aAAO,eAAe,KAAK,KAAK,OAAO,OAAO,oBAAoB,KAAK,IAAI,EAAE;AAAA,IAC/E;AAOA,aAAS,UAAU,MAAM,SAAS,aAAa,MAAM,kBAAkB;AACrE,UAAI,OAAO,eAAe,OAAO,KAAK,YAAY,IAAI;AACtD,UAAI,cAAc,eAAe,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI;AAC1E,UAAI,MAAM,KAAK,OAAO;AACtB,UAAI,CAAC,eAAe,kBAAkB;AACpC,aAAK,OAAO,KAAK,IAAI;AAAA,MACvB;AACA,UAAI,CAAC,aAAa;AAChB,YAAI,cAAc;AAChB,eAAK,KAAK,IAAI,MAAM,GAAG;AAAA,QACzB,OAAO;AACL,eAAK,KAAK,IAAI,IAAI;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AAOA,aAAS,UAAU,MAAM,SAAS,aAAa,MAAM;AACnD,UAAI,cAAc;AAChB,eAAO,KAAK,KAAK,IAAI,IAAI;AAAA,MAC3B,OAAO;AACL,YAAI,OAAO,KAAK,YAAY,IAAI;AAChC,eAAO,IAAI,KAAK,KAAK,MAAM,IAAI;AAAA,MACjC;AAAA,IACF;AAOA,aAAS,UAAU,UAAU,SAAS,iBAAiB,MAAM;AAC3D,UAAI,cAAc;AAChB,YAAI,MAAM,KAAK,KAAK,IAAI,IAAI;AAC5B,YAAI,OAAO,GAAG;AACV,iBAAO;AAAA,QACX;AAAA,MACF,OAAO;AACL,YAAI,OAAO,KAAK,YAAY,IAAI;AAChC,YAAI,IAAI,KAAK,KAAK,MAAM,IAAI,GAAG;AAC7B,iBAAO,KAAK,KAAK,IAAI;AAAA,QACvB;AAAA,MACF;AAEA,YAAM,IAAI,MAAM,MAAM,OAAO,sBAAsB;AAAA,IACrD;AAOA,aAAS,UAAU,KAAK,SAAS,YAAY,MAAM;AACjD,UAAI,QAAQ,KAAK,OAAO,KAAK,OAAO,QAAQ;AAC1C,eAAO,KAAK,OAAO,IAAI;AAAA,MACzB;AACA,YAAM,IAAI,MAAM,2BAA2B,IAAI;AAAA,IACjD;AAOA,aAAS,UAAU,UAAU,SAAS,mBAAmB;AACvD,aAAO,KAAK,OAAO,MAAM;AAAA,IAC3B;AAEA,YAAQ,WAAW;AAAA;AAAA;;;ACxHnB;AAAA;AAOA,QAAI,OAAO;AAMX,aAAS,uBAAuB,UAAU,UAAU;AAElD,UAAI,QAAQ,SAAS;AACrB,UAAI,QAAQ,SAAS;AACrB,UAAI,UAAU,SAAS;AACvB,UAAI,UAAU,SAAS;AACvB,aAAO,QAAQ,SAAS,SAAS,SAAS,WAAW,WAC9C,KAAK,oCAAoC,UAAU,QAAQ,KAAK;AAAA,IACzE;AAOA,aAAS,cAAc;AACrB,WAAK,SAAS,CAAC;AACf,WAAK,UAAU;AAEf,WAAK,QAAQ,EAAC,eAAe,IAAI,iBAAiB,EAAC;AAAA,IACrD;AAQA,gBAAY,UAAU,kBACpB,SAAS,oBAAoB,WAAW,UAAU;AAChD,WAAK,OAAO,QAAQ,WAAW,QAAQ;AAAA,IACzC;AAOF,gBAAY,UAAU,MAAM,SAAS,gBAAgB,UAAU;AAC7D,UAAI,uBAAuB,KAAK,OAAO,QAAQ,GAAG;AAChD,aAAK,QAAQ;AACb,aAAK,OAAO,KAAK,QAAQ;AAAA,MAC3B,OAAO;AACL,aAAK,UAAU;AACf,aAAK,OAAO,KAAK,QAAQ;AAAA,MAC3B;AAAA,IACF;AAWA,gBAAY,UAAU,UAAU,SAAS,sBAAsB;AAC7D,UAAI,CAAC,KAAK,SAAS;AACjB,aAAK,OAAO,KAAK,KAAK,mCAAmC;AACzD,aAAK,UAAU;AAAA,MACjB;AACA,aAAO,KAAK;AAAA,IACd;AAEA,YAAQ,cAAc;AAAA;AAAA;;;AC9EtB;AAAA;AAOA,QAAI,YAAY;AAChB,QAAI,OAAO;AACX,QAAI,WAAW,oBAAuB;AACtC,QAAI,cAAc,uBAA0B;AAU5C,aAAS,mBAAmB,OAAO;AACjC,UAAI,CAAC,OAAO;AACV,gBAAQ,CAAC;AAAA,MACX;AACA,WAAK,QAAQ,KAAK,OAAO,OAAO,QAAQ,IAAI;AAC5C,WAAK,cAAc,KAAK,OAAO,OAAO,cAAc,IAAI;AACxD,WAAK,kBAAkB,KAAK,OAAO,OAAO,kBAAkB,KAAK;AACjE,WAAK,WAAW,IAAI,SAAS;AAC7B,WAAK,SAAS,IAAI,SAAS;AAC3B,WAAK,YAAY,IAAI,YAAY;AACjC,WAAK,mBAAmB;AAAA,IAC1B;AAEA,uBAAmB,UAAU,WAAW;AAOxC,uBAAmB,gBACjB,SAAS,iCAAiC,oBAAoB;AAC5D,UAAI,aAAa,mBAAmB;AACpC,UAAI,YAAY,IAAI,mBAAmB;AAAA,QACrC,MAAM,mBAAmB;AAAA,QACzB;AAAA,MACF,CAAC;AACD,yBAAmB,YAAY,SAAU,SAAS;AAChD,YAAI,aAAa;AAAA,UACf,WAAW;AAAA,YACT,MAAM,QAAQ;AAAA,YACd,QAAQ,QAAQ;AAAA,UAClB;AAAA,QACF;AAEA,YAAI,QAAQ,UAAU,MAAM;AAC1B,qBAAW,SAAS,QAAQ;AAC5B,cAAI,cAAc,MAAM;AACtB,uBAAW,SAAS,KAAK,SAAS,YAAY,WAAW,MAAM;AAAA,UACjE;AAEA,qBAAW,WAAW;AAAA,YACpB,MAAM,QAAQ;AAAA,YACd,QAAQ,QAAQ;AAAA,UAClB;AAEA,cAAI,QAAQ,QAAQ,MAAM;AACxB,uBAAW,OAAO,QAAQ;AAAA,UAC5B;AAAA,QACF;AAEA,kBAAU,WAAW,UAAU;AAAA,MACjC,CAAC;AACD,yBAAmB,QAAQ,QAAQ,SAAU,YAAY;AACvD,YAAI,iBAAiB;AACrB,YAAI,eAAe,MAAM;AACvB,2BAAiB,KAAK,SAAS,YAAY,UAAU;AAAA,QACvD;AAEA,YAAI,CAAC,UAAU,SAAS,IAAI,cAAc,GAAG;AAC3C,oBAAU,SAAS,IAAI,cAAc;AAAA,QACvC;AAEA,YAAI,UAAU,mBAAmB,iBAAiB,UAAU;AAC5D,YAAI,WAAW,MAAM;AACnB,oBAAU,iBAAiB,YAAY,OAAO;AAAA,QAChD;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AAYF,uBAAmB,UAAU,aAC3B,SAAS,8BAA8B,OAAO;AAC5C,UAAI,YAAY,KAAK,OAAO,OAAO,WAAW;AAC9C,UAAI,WAAW,KAAK,OAAO,OAAO,YAAY,IAAI;AAClD,UAAI,SAAS,KAAK,OAAO,OAAO,UAAU,IAAI;AAC9C,UAAI,OAAO,KAAK,OAAO,OAAO,QAAQ,IAAI;AAE1C,UAAI,CAAC,KAAK,iBAAiB;AACzB,aAAK,iBAAiB,WAAW,UAAU,QAAQ,IAAI;AAAA,MACzD;AAEA,UAAI,UAAU,MAAM;AAClB,iBAAS,OAAO,MAAM;AACtB,YAAI,CAAC,KAAK,SAAS,IAAI,MAAM,GAAG;AAC9B,eAAK,SAAS,IAAI,MAAM;AAAA,QAC1B;AAAA,MACF;AAEA,UAAI,QAAQ,MAAM;AAChB,eAAO,OAAO,IAAI;AAClB,YAAI,CAAC,KAAK,OAAO,IAAI,IAAI,GAAG;AAC1B,eAAK,OAAO,IAAI,IAAI;AAAA,QACtB;AAAA,MACF;AAEA,WAAK,UAAU,IAAI;AAAA,QACjB,eAAe,UAAU;AAAA,QACzB,iBAAiB,UAAU;AAAA,QAC3B,cAAc,YAAY,QAAQ,SAAS;AAAA,QAC3C,gBAAgB,YAAY,QAAQ,SAAS;AAAA,QAC7C;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAKF,uBAAmB,UAAU,mBAC3B,SAAS,oCAAoC,aAAa,gBAAgB;AACxE,UAAI,SAAS;AACb,UAAI,KAAK,eAAe,MAAM;AAC5B,iBAAS,KAAK,SAAS,KAAK,aAAa,MAAM;AAAA,MACjD;AAEA,UAAI,kBAAkB,MAAM;AAG1B,YAAI,CAAC,KAAK,kBAAkB;AAC1B,eAAK,mBAAmB,uBAAO,OAAO,IAAI;AAAA,QAC5C;AACA,aAAK,iBAAiB,KAAK,YAAY,MAAM,CAAC,IAAI;AAAA,MACpD,WAAW,KAAK,kBAAkB;AAGhC,eAAO,KAAK,iBAAiB,KAAK,YAAY,MAAM,CAAC;AACrD,YAAI,OAAO,KAAK,KAAK,gBAAgB,EAAE,WAAW,GAAG;AACnD,eAAK,mBAAmB;AAAA,QAC1B;AAAA,MACF;AAAA,IACF;AAkBF,uBAAmB,UAAU,iBAC3B,SAAS,kCAAkC,oBAAoB,aAAa,gBAAgB;AAC1F,UAAI,aAAa;AAEjB,UAAI,eAAe,MAAM;AACvB,YAAI,mBAAmB,QAAQ,MAAM;AACnC,gBAAM,IAAI;AAAA,YACR;AAAA,UAEF;AAAA,QACF;AACA,qBAAa,mBAAmB;AAAA,MAClC;AACA,UAAI,aAAa,KAAK;AAEtB,UAAI,cAAc,MAAM;AACtB,qBAAa,KAAK,SAAS,YAAY,UAAU;AAAA,MACnD;AAGA,UAAI,aAAa,IAAI,SAAS;AAC9B,UAAI,WAAW,IAAI,SAAS;AAG5B,WAAK,UAAU,gBAAgB,SAAU,SAAS;AAChD,YAAI,QAAQ,WAAW,cAAc,QAAQ,gBAAgB,MAAM;AAEjE,cAAI,WAAW,mBAAmB,oBAAoB;AAAA,YACpD,MAAM,QAAQ;AAAA,YACd,QAAQ,QAAQ;AAAA,UAClB,CAAC;AACD,cAAI,SAAS,UAAU,MAAM;AAE3B,oBAAQ,SAAS,SAAS;AAC1B,gBAAI,kBAAkB,MAAM;AAC1B,sBAAQ,SAAS,KAAK,KAAK,gBAAgB,QAAQ,MAAM;AAAA,YAC3D;AACA,gBAAI,cAAc,MAAM;AACtB,sBAAQ,SAAS,KAAK,SAAS,YAAY,QAAQ,MAAM;AAAA,YAC3D;AACA,oBAAQ,eAAe,SAAS;AAChC,oBAAQ,iBAAiB,SAAS;AAClC,gBAAI,SAAS,QAAQ,MAAM;AACzB,sBAAQ,OAAO,SAAS;AAAA,YAC1B;AAAA,UACF;AAAA,QACF;AAEA,YAAI,SAAS,QAAQ;AACrB,YAAI,UAAU,QAAQ,CAAC,WAAW,IAAI,MAAM,GAAG;AAC7C,qBAAW,IAAI,MAAM;AAAA,QACvB;AAEA,YAAI,OAAO,QAAQ;AACnB,YAAI,QAAQ,QAAQ,CAAC,SAAS,IAAI,IAAI,GAAG;AACvC,mBAAS,IAAI,IAAI;AAAA,QACnB;AAAA,MAEF,GAAG,IAAI;AACP,WAAK,WAAW;AAChB,WAAK,SAAS;AAGd,yBAAmB,QAAQ,QAAQ,SAAUE,aAAY;AACvD,YAAI,UAAU,mBAAmB,iBAAiBA,WAAU;AAC5D,YAAI,WAAW,MAAM;AACnB,cAAI,kBAAkB,MAAM;AAC1B,YAAAA,cAAa,KAAK,KAAK,gBAAgBA,WAAU;AAAA,UACnD;AACA,cAAI,cAAc,MAAM;AACtB,YAAAA,cAAa,KAAK,SAAS,YAAYA,WAAU;AAAA,UACnD;AACA,eAAK,iBAAiBA,aAAY,OAAO;AAAA,QAC3C;AAAA,MACF,GAAG,IAAI;AAAA,IACT;AAaF,uBAAmB,UAAU,mBAC3B,SAAS,mCAAmC,YAAY,WAAW,SACvB,OAAO;AAKjD,UAAI,aAAa,OAAO,UAAU,SAAS,YAAY,OAAO,UAAU,WAAW,UAAU;AACzF,cAAM,IAAI;AAAA,UACN;AAAA,QAGJ;AAAA,MACJ;AAEA,UAAI,cAAc,UAAU,cAAc,YAAY,cAC/C,WAAW,OAAO,KAAK,WAAW,UAAU,KAC5C,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO;AAEvC;AAAA,MACF,WACS,cAAc,UAAU,cAAc,YAAY,cAC/C,aAAa,UAAU,aAAa,YAAY,aAChD,WAAW,OAAO,KAAK,WAAW,UAAU,KAC5C,UAAU,OAAO,KAAK,UAAU,UAAU,KAC1C,SAAS;AAEnB;AAAA,MACF,OACK;AACH,cAAM,IAAI,MAAM,sBAAsB,KAAK,UAAU;AAAA,UACnD,WAAW;AAAA,UACX,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,MAAM;AAAA,QACR,CAAC,CAAC;AAAA,MACJ;AAAA,IACF;AAMF,uBAAmB,UAAU,qBAC3B,SAAS,uCAAuC;AAC9C,UAAI,0BAA0B;AAC9B,UAAI,wBAAwB;AAC5B,UAAI,yBAAyB;AAC7B,UAAI,uBAAuB;AAC3B,UAAI,eAAe;AACnB,UAAI,iBAAiB;AACrB,UAAI,SAAS;AACb,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AAEJ,UAAI,WAAW,KAAK,UAAU,QAAQ;AACtC,eAAS,IAAI,GAAG,MAAM,SAAS,QAAQ,IAAI,KAAK,KAAK;AACnD,kBAAU,SAAS,CAAC;AACpB,eAAO;AAEP,YAAI,QAAQ,kBAAkB,uBAAuB;AACnD,oCAA0B;AAC1B,iBAAO,QAAQ,kBAAkB,uBAAuB;AACtD,oBAAQ;AACR;AAAA,UACF;AAAA,QACF,OACK;AACH,cAAI,IAAI,GAAG;AACT,gBAAI,CAAC,KAAK,oCAAoC,SAAS,SAAS,IAAI,CAAC,CAAC,GAAG;AACvE;AAAA,YACF;AACA,oBAAQ;AAAA,UACV;AAAA,QACF;AAEA,gBAAQ,UAAU,OAAO,QAAQ,kBACJ,uBAAuB;AACpD,kCAA0B,QAAQ;AAElC,YAAI,QAAQ,UAAU,MAAM;AAC1B,sBAAY,KAAK,SAAS,QAAQ,QAAQ,MAAM;AAChD,kBAAQ,UAAU,OAAO,YAAY,cAAc;AACnD,2BAAiB;AAGjB,kBAAQ,UAAU,OAAO,QAAQ,eAAe,IACnB,oBAAoB;AACjD,iCAAuB,QAAQ,eAAe;AAE9C,kBAAQ,UAAU,OAAO,QAAQ,iBACJ,sBAAsB;AACnD,mCAAyB,QAAQ;AAEjC,cAAI,QAAQ,QAAQ,MAAM;AACxB,sBAAU,KAAK,OAAO,QAAQ,QAAQ,IAAI;AAC1C,oBAAQ,UAAU,OAAO,UAAU,YAAY;AAC/C,2BAAe;AAAA,UACjB;AAAA,QACF;AAEA,kBAAU;AAAA,MACZ;AAEA,aAAO;AAAA,IACT;AAEF,uBAAmB,UAAU,0BAC3B,SAAS,0CAA0C,UAAU,aAAa;AACxE,aAAO,SAAS,IAAI,SAAU,QAAQ;AACpC,YAAI,CAAC,KAAK,kBAAkB;AAC1B,iBAAO;AAAA,QACT;AACA,YAAI,eAAe,MAAM;AACvB,mBAAS,KAAK,SAAS,aAAa,MAAM;AAAA,QAC5C;AACA,YAAI,MAAM,KAAK,YAAY,MAAM;AACjC,eAAO,OAAO,UAAU,eAAe,KAAK,KAAK,kBAAkB,GAAG,IAClE,KAAK,iBAAiB,GAAG,IACzB;AAAA,MACN,GAAG,IAAI;AAAA,IACT;AAKF,uBAAmB,UAAU,SAC3B,SAAS,4BAA4B;AACnC,UAAI,MAAM;AAAA,QACR,SAAS,KAAK;AAAA,QACd,SAAS,KAAK,SAAS,QAAQ;AAAA,QAC/B,OAAO,KAAK,OAAO,QAAQ;AAAA,QAC3B,UAAU,KAAK,mBAAmB;AAAA,MACpC;AACA,UAAI,KAAK,SAAS,MAAM;AACtB,YAAI,OAAO,KAAK;AAAA,MAClB;AACA,UAAI,KAAK,eAAe,MAAM;AAC5B,YAAI,aAAa,KAAK;AAAA,MACxB;AACA,UAAI,KAAK,kBAAkB;AACzB,YAAI,iBAAiB,KAAK,wBAAwB,IAAI,SAAS,IAAI,UAAU;AAAA,MAC/E;AAEA,aAAO;AAAA,IACT;AAKF,uBAAmB,UAAU,WAC3B,SAAS,8BAA8B;AACrC,aAAO,KAAK,UAAU,KAAK,OAAO,CAAC;AAAA,IACrC;AAEF,YAAQ,qBAAqB;AAAA;AAAA;;;ACxa7B;AAAA;AAOA,YAAQ,uBAAuB;AAC/B,YAAQ,oBAAoB;AAe5B,aAAS,gBAAgB,MAAM,OAAO,SAAS,WAAW,UAAU,OAAO;AAUzE,UAAI,MAAM,KAAK,OAAO,QAAQ,QAAQ,CAAC,IAAI;AAC3C,UAAI,MAAM,SAAS,SAAS,UAAU,GAAG,GAAG,IAAI;AAChD,UAAI,QAAQ,GAAG;AAEb,eAAO;AAAA,MACT,WACS,MAAM,GAAG;AAEhB,YAAI,QAAQ,MAAM,GAAG;AAEnB,iBAAO,gBAAgB,KAAK,OAAO,SAAS,WAAW,UAAU,KAAK;AAAA,QACxE;AAIA,YAAI,SAAS,QAAQ,mBAAmB;AACtC,iBAAO,QAAQ,UAAU,SAAS,QAAQ;AAAA,QAC5C,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF,OACK;AAEH,YAAI,MAAM,OAAO,GAAG;AAElB,iBAAO,gBAAgB,MAAM,KAAK,SAAS,WAAW,UAAU,KAAK;AAAA,QACvE;AAGA,YAAI,SAAS,QAAQ,mBAAmB;AACtC,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO,OAAO,IAAI,KAAK;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAoBA,YAAQ,SAAS,SAAS,OAAO,SAAS,WAAW,UAAU,OAAO;AACpE,UAAI,UAAU,WAAW,GAAG;AAC1B,eAAO;AAAA,MACT;AAEA,UAAI,QAAQ;AAAA,QAAgB;AAAA,QAAI,UAAU;AAAA,QAAQ;AAAA,QAAS;AAAA,QAC/B;AAAA,QAAU,SAAS,QAAQ;AAAA,MAAoB;AAC3E,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACT;AAKA,aAAO,QAAQ,KAAK,GAAG;AACrB,YAAI,SAAS,UAAU,KAAK,GAAG,UAAU,QAAQ,CAAC,GAAG,IAAI,MAAM,GAAG;AAChE;AAAA,QACF;AACA,UAAE;AAAA,MACJ;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;;;AC9GA;AAAA;AA2BA,aAAS,KAAK,KAAK,GAAG,GAAG;AACvB,UAAI,OAAO,IAAI,CAAC;AAChB,UAAI,CAAC,IAAI,IAAI,CAAC;AACd,UAAI,CAAC,IAAI;AAAA,IACX;AAUA,aAAS,iBAAiB,KAAK,MAAM;AACnC,aAAO,KAAK,MAAM,MAAO,KAAK,OAAO,KAAK,OAAO,IAAK;AAAA,IACxD;AAcA,aAAS,YAAY,KAAK,YAAY,GAAG,GAAG;AAK1C,UAAI,IAAI,GAAG;AAYT,YAAI,aAAa,iBAAiB,GAAG,CAAC;AACtC,YAAI,IAAI,IAAI;AAEZ,aAAK,KAAK,YAAY,CAAC;AACvB,YAAI,QAAQ,IAAI,CAAC;AAQjB,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,cAAI,WAAW,IAAI,CAAC,GAAG,KAAK,KAAK,GAAG;AAClC,iBAAK;AACL,iBAAK,KAAK,GAAG,CAAC;AAAA,UAChB;AAAA,QACF;AAEA,aAAK,KAAK,IAAI,GAAG,CAAC;AAClB,YAAI,IAAI,IAAI;AAIZ,oBAAY,KAAK,YAAY,GAAG,IAAI,CAAC;AACrC,oBAAY,KAAK,YAAY,IAAI,GAAG,CAAC;AAAA,MACvC;AAAA,IACF;AAUA,YAAQ,YAAY,SAAU,KAAK,YAAY;AAC7C,kBAAY,KAAK,YAAY,GAAG,IAAI,SAAS,CAAC;AAAA,IAChD;AAAA;AAAA;;;ACjHA;AAAA;AAOA,QAAI,OAAO;AACX,QAAI,eAAe;AACnB,QAAI,WAAW,oBAAuB;AACtC,QAAI,YAAY;AAChB,QAAI,YAAY,qBAAwB;AAExC,aAAS,kBAAkB,YAAY,eAAe;AACpD,UAAI,YAAY;AAChB,UAAI,OAAO,eAAe,UAAU;AAClC,oBAAY,KAAK,oBAAoB,UAAU;AAAA,MACjD;AAEA,aAAO,UAAU,YAAY,OACzB,IAAI,yBAAyB,WAAW,aAAa,IACrD,IAAI,uBAAuB,WAAW,aAAa;AAAA,IACzD;AAEA,sBAAkB,gBAAgB,SAAS,YAAY,eAAe;AACpE,aAAO,uBAAuB,cAAc,YAAY,aAAa;AAAA,IACvE;AAKA,sBAAkB,UAAU,WAAW;AAgCvC,sBAAkB,UAAU,sBAAsB;AAClD,WAAO,eAAe,kBAAkB,WAAW,sBAAsB;AAAA,MACvE,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,KAAK,WAAY;AACf,YAAI,CAAC,KAAK,qBAAqB;AAC7B,eAAK,eAAe,KAAK,WAAW,KAAK,UAAU;AAAA,QACrD;AAEA,eAAO,KAAK;AAAA,MACd;AAAA,IACF,CAAC;AAED,sBAAkB,UAAU,qBAAqB;AACjD,WAAO,eAAe,kBAAkB,WAAW,qBAAqB;AAAA,MACtE,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,KAAK,WAAY;AACf,YAAI,CAAC,KAAK,oBAAoB;AAC5B,eAAK,eAAe,KAAK,WAAW,KAAK,UAAU;AAAA,QACrD;AAEA,eAAO,KAAK;AAAA,MACd;AAAA,IACF,CAAC;AAED,sBAAkB,UAAU,0BAC1B,SAAS,yCAAyC,MAAM,OAAO;AAC7D,UAAI,IAAI,KAAK,OAAO,KAAK;AACzB,aAAO,MAAM,OAAO,MAAM;AAAA,IAC5B;AAOF,sBAAkB,UAAU,iBAC1B,SAAS,gCAAgC,MAAM,aAAa;AAC1D,YAAM,IAAI,MAAM,0CAA0C;AAAA,IAC5D;AAEF,sBAAkB,kBAAkB;AACpC,sBAAkB,iBAAiB;AAEnC,sBAAkB,uBAAuB;AACzC,sBAAkB,oBAAoB;AAkBtC,sBAAkB,UAAU,cAC1B,SAAS,8BAA8B,WAAW,UAAU,QAAQ;AAClE,UAAI,UAAU,YAAY;AAC1B,UAAI,QAAQ,UAAU,kBAAkB;AAExC,UAAI;AACJ,cAAQ,OAAO;AAAA,QACf,KAAK,kBAAkB;AACrB,qBAAW,KAAK;AAChB;AAAA,QACF,KAAK,kBAAkB;AACrB,qBAAW,KAAK;AAChB;AAAA,QACF;AACE,gBAAM,IAAI,MAAM,6BAA6B;AAAA,MAC/C;AAEA,UAAI,aAAa,KAAK;AACtB,eAAS,IAAI,SAAU,SAAS;AAC9B,YAAI,SAAS,QAAQ,WAAW,OAAO,OAAO,KAAK,SAAS,GAAG,QAAQ,MAAM;AAC7E,iBAAS,KAAK,iBAAiB,YAAY,QAAQ,KAAK,aAAa;AACrE,eAAO;AAAA,UACL;AAAA,UACA,eAAe,QAAQ;AAAA,UACvB,iBAAiB,QAAQ;AAAA,UACzB,cAAc,QAAQ;AAAA,UACtB,gBAAgB,QAAQ;AAAA,UACxB,MAAM,QAAQ,SAAS,OAAO,OAAO,KAAK,OAAO,GAAG,QAAQ,IAAI;AAAA,QAClE;AAAA,MACF,GAAG,IAAI,EAAE,QAAQ,WAAW,OAAO;AAAA,IACrC;AAwBF,sBAAkB,UAAU,2BAC1B,SAAS,2CAA2C,OAAO;AACzD,UAAI,OAAO,KAAK,OAAO,OAAO,MAAM;AAMpC,UAAI,SAAS;AAAA,QACX,QAAQ,KAAK,OAAO,OAAO,QAAQ;AAAA,QACnC,cAAc;AAAA,QACd,gBAAgB,KAAK,OAAO,OAAO,UAAU,CAAC;AAAA,MAChD;AAEA,aAAO,SAAS,KAAK,iBAAiB,OAAO,MAAM;AACnD,UAAI,OAAO,SAAS,GAAG;AACrB,eAAO,CAAC;AAAA,MACV;AAEA,UAAI,WAAW,CAAC;AAEhB,UAAI,QAAQ,KAAK;AAAA,QAAa;AAAA,QACA,KAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA,KAAK;AAAA,QACL,aAAa;AAAA,MAAiB;AAC5D,UAAI,SAAS,GAAG;AACd,YAAI,UAAU,KAAK,kBAAkB,KAAK;AAE1C,YAAI,MAAM,WAAW,QAAW;AAC9B,cAAI,eAAe,QAAQ;AAM3B,iBAAO,WAAW,QAAQ,iBAAiB,cAAc;AACvD,qBAAS,KAAK;AAAA,cACZ,MAAM,KAAK,OAAO,SAAS,iBAAiB,IAAI;AAAA,cAChD,QAAQ,KAAK,OAAO,SAAS,mBAAmB,IAAI;AAAA,cACpD,YAAY,KAAK,OAAO,SAAS,uBAAuB,IAAI;AAAA,YAC9D,CAAC;AAED,sBAAU,KAAK,kBAAkB,EAAE,KAAK;AAAA,UAC1C;AAAA,QACF,OAAO;AACL,cAAI,iBAAiB,QAAQ;AAM7B,iBAAO,WACA,QAAQ,iBAAiB,QACzB,QAAQ,kBAAkB,gBAAgB;AAC/C,qBAAS,KAAK;AAAA,cACZ,MAAM,KAAK,OAAO,SAAS,iBAAiB,IAAI;AAAA,cAChD,QAAQ,KAAK,OAAO,SAAS,mBAAmB,IAAI;AAAA,cACpD,YAAY,KAAK,OAAO,SAAS,uBAAuB,IAAI;AAAA,YAC9D,CAAC;AAED,sBAAU,KAAK,kBAAkB,EAAE,KAAK;AAAA,UAC1C;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAEF,YAAQ,oBAAoB;AAoC5B,aAAS,uBAAuB,YAAY,eAAe;AACzD,UAAI,YAAY;AAChB,UAAI,OAAO,eAAe,UAAU;AAClC,oBAAY,KAAK,oBAAoB,UAAU;AAAA,MACjD;AAEA,UAAI,UAAU,KAAK,OAAO,WAAW,SAAS;AAC9C,UAAI,UAAU,KAAK,OAAO,WAAW,SAAS;AAG9C,UAAI,QAAQ,KAAK,OAAO,WAAW,SAAS,CAAC,CAAC;AAC9C,UAAI,aAAa,KAAK,OAAO,WAAW,cAAc,IAAI;AAC1D,UAAI,iBAAiB,KAAK,OAAO,WAAW,kBAAkB,IAAI;AAClE,UAAI,WAAW,KAAK,OAAO,WAAW,UAAU;AAChD,UAAI,OAAO,KAAK,OAAO,WAAW,QAAQ,IAAI;AAI9C,UAAI,WAAW,KAAK,UAAU;AAC5B,cAAM,IAAI,MAAM,0BAA0B,OAAO;AAAA,MACnD;AAEA,UAAI,YAAY;AACd,qBAAa,KAAK,UAAU,UAAU;AAAA,MACxC;AAEA,gBAAU,QACP,IAAI,MAAM,EAIV,IAAI,KAAK,SAAS,EAKlB,IAAI,SAAU,QAAQ;AACrB,eAAO,cAAc,KAAK,WAAW,UAAU,KAAK,KAAK,WAAW,MAAM,IACtE,KAAK,SAAS,YAAY,MAAM,IAChC;AAAA,MACN,CAAC;AAMH,WAAK,SAAS,SAAS,UAAU,MAAM,IAAI,MAAM,GAAG,IAAI;AACxD,WAAK,WAAW,SAAS,UAAU,SAAS,IAAI;AAEhD,WAAK,mBAAmB,KAAK,SAAS,QAAQ,EAAE,IAAI,SAAU,GAAG;AAC/D,eAAO,KAAK,iBAAiB,YAAY,GAAG,aAAa;AAAA,MAC3D,CAAC;AAED,WAAK,aAAa;AAClB,WAAK,iBAAiB;AACtB,WAAK,YAAY;AACjB,WAAK,gBAAgB;AACrB,WAAK,OAAO;AAAA,IACd;AAEA,2BAAuB,YAAY,OAAO,OAAO,kBAAkB,SAAS;AAC5E,2BAAuB,UAAU,WAAW;AAM5C,2BAAuB,UAAU,mBAAmB,SAAS,SAAS;AACpE,UAAI,iBAAiB;AACrB,UAAI,KAAK,cAAc,MAAM;AAC3B,yBAAiB,KAAK,SAAS,KAAK,YAAY,cAAc;AAAA,MAChE;AAEA,UAAI,KAAK,SAAS,IAAI,cAAc,GAAG;AACrC,eAAO,KAAK,SAAS,QAAQ,cAAc;AAAA,MAC7C;AAIA,UAAI;AACJ,WAAK,IAAI,GAAG,IAAI,KAAK,iBAAiB,QAAQ,EAAE,GAAG;AACjD,YAAI,KAAK,iBAAiB,CAAC,KAAK,SAAS;AACvC,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAWA,2BAAuB,gBACrB,SAAS,gCAAgC,YAAY,eAAe;AAClE,UAAI,MAAM,OAAO,OAAO,uBAAuB,SAAS;AAExD,UAAI,QAAQ,IAAI,SAAS,SAAS,UAAU,WAAW,OAAO,QAAQ,GAAG,IAAI;AAC7E,UAAI,UAAU,IAAI,WAAW,SAAS,UAAU,WAAW,SAAS,QAAQ,GAAG,IAAI;AACnF,UAAI,aAAa,WAAW;AAC5B,UAAI,iBAAiB,WAAW;AAAA,QAAwB,IAAI,SAAS,QAAQ;AAAA,QACrB,IAAI;AAAA,MAAU;AACtE,UAAI,OAAO,WAAW;AACtB,UAAI,gBAAgB;AACpB,UAAI,mBAAmB,IAAI,SAAS,QAAQ,EAAE,IAAI,SAAU,GAAG;AAC7D,eAAO,KAAK,iBAAiB,IAAI,YAAY,GAAG,aAAa;AAAA,MAC/D,CAAC;AAOD,UAAI,oBAAoB,WAAW,UAAU,QAAQ,EAAE,MAAM;AAC7D,UAAI,wBAAwB,IAAI,sBAAsB,CAAC;AACvD,UAAI,uBAAuB,IAAI,qBAAqB,CAAC;AAErD,eAAS,IAAI,GAAG,SAAS,kBAAkB,QAAQ,IAAI,QAAQ,KAAK;AAClE,YAAI,aAAa,kBAAkB,CAAC;AACpC,YAAI,cAAc,IAAI;AACtB,oBAAY,gBAAgB,WAAW;AACvC,oBAAY,kBAAkB,WAAW;AAEzC,YAAI,WAAW,QAAQ;AACrB,sBAAY,SAAS,QAAQ,QAAQ,WAAW,MAAM;AACtD,sBAAY,eAAe,WAAW;AACtC,sBAAY,iBAAiB,WAAW;AAExC,cAAI,WAAW,MAAM;AACnB,wBAAY,OAAO,MAAM,QAAQ,WAAW,IAAI;AAAA,UAClD;AAEA,+BAAqB,KAAK,WAAW;AAAA,QACvC;AAEA,8BAAsB,KAAK,WAAW;AAAA,MACxC;AAEA,gBAAU,IAAI,oBAAoB,KAAK,0BAA0B;AAEjE,aAAO;AAAA,IACT;AAKF,2BAAuB,UAAU,WAAW;AAK5C,WAAO,eAAe,uBAAuB,WAAW,WAAW;AAAA,MACjE,KAAK,WAAY;AACf,eAAO,KAAK,iBAAiB,MAAM;AAAA,MACrC;AAAA,IACF,CAAC;AAKD,aAAS,UAAU;AACjB,WAAK,gBAAgB;AACrB,WAAK,kBAAkB;AACvB,WAAK,SAAS;AACd,WAAK,eAAe;AACpB,WAAK,iBAAiB;AACtB,WAAK,OAAO;AAAA,IACd;AAOA,2BAAuB,UAAU,iBAC/B,SAAS,gCAAgC,MAAM,aAAa;AAC1D,UAAI,gBAAgB;AACpB,UAAI,0BAA0B;AAC9B,UAAI,uBAAuB;AAC3B,UAAI,yBAAyB;AAC7B,UAAI,iBAAiB;AACrB,UAAI,eAAe;AACnB,UAAI,SAAS,KAAK;AAClB,UAAI,QAAQ;AACZ,UAAI,iBAAiB,CAAC;AACtB,UAAI,OAAO,CAAC;AACZ,UAAI,mBAAmB,CAAC;AACxB,UAAI,oBAAoB,CAAC;AACzB,UAAI,SAAS,KAAK,SAAS,KAAK;AAEhC,aAAO,QAAQ,QAAQ;AACrB,YAAI,KAAK,OAAO,KAAK,MAAM,KAAK;AAC9B;AACA;AACA,oCAA0B;AAAA,QAC5B,WACS,KAAK,OAAO,KAAK,MAAM,KAAK;AACnC;AAAA,QACF,OACK;AACH,oBAAU,IAAI,QAAQ;AACtB,kBAAQ,gBAAgB;AAOxB,eAAK,MAAM,OAAO,MAAM,QAAQ,OAAO;AACrC,gBAAI,KAAK,wBAAwB,MAAM,GAAG,GAAG;AAC3C;AAAA,YACF;AAAA,UACF;AACA,gBAAM,KAAK,MAAM,OAAO,GAAG;AAE3B,oBAAU,eAAe,GAAG;AAC5B,cAAI,SAAS;AACX,qBAAS,IAAI;AAAA,UACf,OAAO;AACL,sBAAU,CAAC;AACX,mBAAO,QAAQ,KAAK;AAClB,wBAAU,OAAO,MAAM,OAAO,IAAI;AAClC,sBAAQ,KAAK;AACb,sBAAQ,KAAK;AACb,sBAAQ,KAAK,KAAK;AAAA,YACpB;AAEA,gBAAI,QAAQ,WAAW,GAAG;AACxB,oBAAM,IAAI,MAAM,wCAAwC;AAAA,YAC1D;AAEA,gBAAI,QAAQ,WAAW,GAAG;AACxB,oBAAM,IAAI,MAAM,wCAAwC;AAAA,YAC1D;AAEA,2BAAe,GAAG,IAAI;AAAA,UACxB;AAGA,kBAAQ,kBAAkB,0BAA0B,QAAQ,CAAC;AAC7D,oCAA0B,QAAQ;AAElC,cAAI,QAAQ,SAAS,GAAG;AAEtB,oBAAQ,SAAS,iBAAiB,QAAQ,CAAC;AAC3C,8BAAkB,QAAQ,CAAC;AAG3B,oBAAQ,eAAe,uBAAuB,QAAQ,CAAC;AACvD,mCAAuB,QAAQ;AAE/B,oBAAQ,gBAAgB;AAGxB,oBAAQ,iBAAiB,yBAAyB,QAAQ,CAAC;AAC3D,qCAAyB,QAAQ;AAEjC,gBAAI,QAAQ,SAAS,GAAG;AAEtB,sBAAQ,OAAO,eAAe,QAAQ,CAAC;AACvC,8BAAgB,QAAQ,CAAC;AAAA,YAC3B;AAAA,UACF;AAEA,4BAAkB,KAAK,OAAO;AAC9B,cAAI,OAAO,QAAQ,iBAAiB,UAAU;AAC5C,6BAAiB,KAAK,OAAO;AAAA,UAC/B;AAAA,QACF;AAAA,MACF;AAEA,gBAAU,mBAAmB,KAAK,mCAAmC;AACrE,WAAK,sBAAsB;AAE3B,gBAAU,kBAAkB,KAAK,0BAA0B;AAC3D,WAAK,qBAAqB;AAAA,IAC5B;AAMF,2BAAuB,UAAU,eAC/B,SAAS,8BAA8B,SAAS,WAAW,WACpB,aAAa,aAAa,OAAO;AAMtE,UAAI,QAAQ,SAAS,KAAK,GAAG;AAC3B,cAAM,IAAI,UAAU,kDACE,QAAQ,SAAS,CAAC;AAAA,MAC1C;AACA,UAAI,QAAQ,WAAW,IAAI,GAAG;AAC5B,cAAM,IAAI,UAAU,oDACE,QAAQ,WAAW,CAAC;AAAA,MAC5C;AAEA,aAAO,aAAa,OAAO,SAAS,WAAW,aAAa,KAAK;AAAA,IACnE;AAMF,2BAAuB,UAAU,qBAC/B,SAAS,uCAAuC;AAC9C,eAAS,QAAQ,GAAG,QAAQ,KAAK,mBAAmB,QAAQ,EAAE,OAAO;AACnE,YAAI,UAAU,KAAK,mBAAmB,KAAK;AAM3C,YAAI,QAAQ,IAAI,KAAK,mBAAmB,QAAQ;AAC9C,cAAI,cAAc,KAAK,mBAAmB,QAAQ,CAAC;AAEnD,cAAI,QAAQ,kBAAkB,YAAY,eAAe;AACvD,oBAAQ,sBAAsB,YAAY,kBAAkB;AAC5D;AAAA,UACF;AAAA,QACF;AAGA,gBAAQ,sBAAsB;AAAA,MAChC;AAAA,IACF;AA0BF,2BAAuB,UAAU,sBAC/B,SAAS,sCAAsC,OAAO;AACpD,UAAI,SAAS;AAAA,QACX,eAAe,KAAK,OAAO,OAAO,MAAM;AAAA,QACxC,iBAAiB,KAAK,OAAO,OAAO,QAAQ;AAAA,MAC9C;AAEA,UAAI,QAAQ,KAAK;AAAA,QACf;AAAA,QACA,KAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA,KAAK;AAAA,QACL,KAAK,OAAO,OAAO,QAAQ,kBAAkB,oBAAoB;AAAA,MACnE;AAEA,UAAI,SAAS,GAAG;AACd,YAAI,UAAU,KAAK,mBAAmB,KAAK;AAE3C,YAAI,QAAQ,kBAAkB,OAAO,eAAe;AAClD,cAAI,SAAS,KAAK,OAAO,SAAS,UAAU,IAAI;AAChD,cAAI,WAAW,MAAM;AACnB,qBAAS,KAAK,SAAS,GAAG,MAAM;AAChC,qBAAS,KAAK,iBAAiB,KAAK,YAAY,QAAQ,KAAK,aAAa;AAAA,UAC5E;AACA,cAAI,OAAO,KAAK,OAAO,SAAS,QAAQ,IAAI;AAC5C,cAAI,SAAS,MAAM;AACjB,mBAAO,KAAK,OAAO,GAAG,IAAI;AAAA,UAC5B;AACA,iBAAO;AAAA,YACL;AAAA,YACA,MAAM,KAAK,OAAO,SAAS,gBAAgB,IAAI;AAAA,YAC/C,QAAQ,KAAK,OAAO,SAAS,kBAAkB,IAAI;AAAA,YACnD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM;AAAA,MACR;AAAA,IACF;AAMF,2BAAuB,UAAU,0BAC/B,SAAS,iDAAiD;AACxD,UAAI,CAAC,KAAK,gBAAgB;AACxB,eAAO;AAAA,MACT;AACA,aAAO,KAAK,eAAe,UAAU,KAAK,SAAS,KAAK,KACtD,CAAC,KAAK,eAAe,KAAK,SAAU,IAAI;AAAE,eAAO,MAAM;AAAA,MAAM,CAAC;AAAA,IAClE;AAOF,2BAAuB,UAAU,mBAC/B,SAAS,mCAAmC,SAAS,eAAe;AAClE,UAAI,CAAC,KAAK,gBAAgB;AACxB,eAAO;AAAA,MACT;AAEA,UAAI,QAAQ,KAAK,iBAAiB,OAAO;AACzC,UAAI,SAAS,GAAG;AACd,eAAO,KAAK,eAAe,KAAK;AAAA,MAClC;AAEA,UAAI,iBAAiB;AACrB,UAAI,KAAK,cAAc,MAAM;AAC3B,yBAAiB,KAAK,SAAS,KAAK,YAAY,cAAc;AAAA,MAChE;AAEA,UAAI;AACJ,UAAI,KAAK,cAAc,SACf,MAAM,KAAK,SAAS,KAAK,UAAU,IAAI;AAK7C,YAAI,iBAAiB,eAAe,QAAQ,cAAc,EAAE;AAC5D,YAAI,IAAI,UAAU,UACX,KAAK,SAAS,IAAI,cAAc,GAAG;AACxC,iBAAO,KAAK,eAAe,KAAK,SAAS,QAAQ,cAAc,CAAC;AAAA,QAClE;AAEA,aAAK,CAAC,IAAI,QAAQ,IAAI,QAAQ,QACvB,KAAK,SAAS,IAAI,MAAM,cAAc,GAAG;AAC9C,iBAAO,KAAK,eAAe,KAAK,SAAS,QAAQ,MAAM,cAAc,CAAC;AAAA,QACxE;AAAA,MACF;AAMA,UAAI,eAAe;AACjB,eAAO;AAAA,MACT,OACK;AACH,cAAM,IAAI,MAAM,MAAM,iBAAiB,4BAA4B;AAAA,MACrE;AAAA,IACF;AAyBF,2BAAuB,UAAU,uBAC/B,SAAS,uCAAuC,OAAO;AACrD,UAAI,SAAS,KAAK,OAAO,OAAO,QAAQ;AACxC,eAAS,KAAK,iBAAiB,MAAM;AACrC,UAAI,SAAS,GAAG;AACd,eAAO;AAAA,UACL,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,YAAY;AAAA,QACd;AAAA,MACF;AAEA,UAAI,SAAS;AAAA,QACX;AAAA,QACA,cAAc,KAAK,OAAO,OAAO,MAAM;AAAA,QACvC,gBAAgB,KAAK,OAAO,OAAO,QAAQ;AAAA,MAC7C;AAEA,UAAI,QAAQ,KAAK;AAAA,QACf;AAAA,QACA,KAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA,KAAK;AAAA,QACL,KAAK,OAAO,OAAO,QAAQ,kBAAkB,oBAAoB;AAAA,MACnE;AAEA,UAAI,SAAS,GAAG;AACd,YAAI,UAAU,KAAK,kBAAkB,KAAK;AAE1C,YAAI,QAAQ,WAAW,OAAO,QAAQ;AACpC,iBAAO;AAAA,YACL,MAAM,KAAK,OAAO,SAAS,iBAAiB,IAAI;AAAA,YAChD,QAAQ,KAAK,OAAO,SAAS,mBAAmB,IAAI;AAAA,YACpD,YAAY,KAAK,OAAO,SAAS,uBAAuB,IAAI;AAAA,UAC9D;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,YAAY;AAAA,MACd;AAAA,IACF;AAEF,YAAQ,yBAAyB;AAmDjC,aAAS,yBAAyB,YAAY,eAAe;AAC3D,UAAI,YAAY;AAChB,UAAI,OAAO,eAAe,UAAU;AAClC,oBAAY,KAAK,oBAAoB,UAAU;AAAA,MACjD;AAEA,UAAI,UAAU,KAAK,OAAO,WAAW,SAAS;AAC9C,UAAI,WAAW,KAAK,OAAO,WAAW,UAAU;AAEhD,UAAI,WAAW,KAAK,UAAU;AAC5B,cAAM,IAAI,MAAM,0BAA0B,OAAO;AAAA,MACnD;AAEA,WAAK,WAAW,IAAI,SAAS;AAC7B,WAAK,SAAS,IAAI,SAAS;AAE3B,UAAI,aAAa;AAAA,QACf,MAAM;AAAA,QACN,QAAQ;AAAA,MACV;AACA,WAAK,YAAY,SAAS,IAAI,SAAU,GAAG;AACzC,YAAI,EAAE,KAAK;AAGT,gBAAM,IAAI,MAAM,oDAAoD;AAAA,QACtE;AACA,YAAI,SAAS,KAAK,OAAO,GAAG,QAAQ;AACpC,YAAI,aAAa,KAAK,OAAO,QAAQ,MAAM;AAC3C,YAAI,eAAe,KAAK,OAAO,QAAQ,QAAQ;AAE/C,YAAI,aAAa,WAAW,QACvB,eAAe,WAAW,QAAQ,eAAe,WAAW,QAAS;AACxE,gBAAM,IAAI,MAAM,sDAAsD;AAAA,QACxE;AACA,qBAAa;AAEb,eAAO;AAAA,UACL,iBAAiB;AAAA;AAAA;AAAA,YAGf,eAAe,aAAa;AAAA,YAC5B,iBAAiB,eAAe;AAAA,UAClC;AAAA,UACA,UAAU,IAAI,kBAAkB,KAAK,OAAO,GAAG,KAAK,GAAG,aAAa;AAAA,QACtE;AAAA,MACF,CAAC;AAAA,IACH;AAEA,6BAAyB,YAAY,OAAO,OAAO,kBAAkB,SAAS;AAC9E,6BAAyB,UAAU,cAAc;AAKjD,6BAAyB,UAAU,WAAW;AAK9C,WAAO,eAAe,yBAAyB,WAAW,WAAW;AAAA,MACnE,KAAK,WAAY;AACf,YAAI,UAAU,CAAC;AACf,iBAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,mBAAS,IAAI,GAAG,IAAI,KAAK,UAAU,CAAC,EAAE,SAAS,QAAQ,QAAQ,KAAK;AAClE,oBAAQ,KAAK,KAAK,UAAU,CAAC,EAAE,SAAS,QAAQ,CAAC,CAAC;AAAA,UACpD;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAqBD,6BAAyB,UAAU,sBACjC,SAAS,6CAA6C,OAAO;AAC3D,UAAI,SAAS;AAAA,QACX,eAAe,KAAK,OAAO,OAAO,MAAM;AAAA,QACxC,iBAAiB,KAAK,OAAO,OAAO,QAAQ;AAAA,MAC9C;AAIA,UAAI,eAAe,aAAa;AAAA,QAAO;AAAA,QAAQ,KAAK;AAAA,QAClD,SAASC,SAAQC,UAAS;AACxB,cAAI,MAAMD,QAAO,gBAAgBC,SAAQ,gBAAgB;AACzD,cAAI,KAAK;AACP,mBAAO;AAAA,UACT;AAEA,iBAAQD,QAAO,kBACPC,SAAQ,gBAAgB;AAAA,QAClC;AAAA,MAAC;AACH,UAAI,UAAU,KAAK,UAAU,YAAY;AAEzC,UAAI,CAAC,SAAS;AACZ,eAAO;AAAA,UACL,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,MAAM;AAAA,QACR;AAAA,MACF;AAEA,aAAO,QAAQ,SAAS,oBAAoB;AAAA,QAC1C,MAAM,OAAO,iBACV,QAAQ,gBAAgB,gBAAgB;AAAA,QAC3C,QAAQ,OAAO,mBACZ,QAAQ,gBAAgB,kBAAkB,OAAO,gBAC/C,QAAQ,gBAAgB,kBAAkB,IAC1C;AAAA,QACL,MAAM,MAAM;AAAA,MACd,CAAC;AAAA,IACH;AAMF,6BAAyB,UAAU,0BACjC,SAAS,mDAAmD;AAC1D,aAAO,KAAK,UAAU,MAAM,SAAU,GAAG;AACvC,eAAO,EAAE,SAAS,wBAAwB;AAAA,MAC5C,CAAC;AAAA,IACH;AAOF,6BAAyB,UAAU,mBACjC,SAAS,0CAA0C,SAAS,eAAe;AACzE,eAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,YAAI,UAAU,KAAK,UAAU,CAAC;AAE9B,YAAI,UAAU,QAAQ,SAAS,iBAAiB,SAAS,IAAI;AAC7D,YAAI,SAAS;AACX,iBAAO;AAAA,QACT;AAAA,MACF;AACA,UAAI,eAAe;AACjB,eAAO;AAAA,MACT,OACK;AACH,cAAM,IAAI,MAAM,MAAM,UAAU,4BAA4B;AAAA,MAC9D;AAAA,IACF;AAoBF,6BAAyB,UAAU,uBACjC,SAAS,8CAA8C,OAAO;AAC5D,eAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,YAAI,UAAU,KAAK,UAAU,CAAC;AAI9B,YAAI,QAAQ,SAAS,iBAAiB,KAAK,OAAO,OAAO,QAAQ,CAAC,MAAM,IAAI;AAC1E;AAAA,QACF;AACA,YAAI,oBAAoB,QAAQ,SAAS,qBAAqB,KAAK;AACnE,YAAI,mBAAmB;AACrB,cAAI,MAAM;AAAA,YACR,MAAM,kBAAkB,QACrB,QAAQ,gBAAgB,gBAAgB;AAAA,YAC3C,QAAQ,kBAAkB,UACvB,QAAQ,gBAAgB,kBAAkB,kBAAkB,OAC1D,QAAQ,gBAAgB,kBAAkB,IAC1C;AAAA,UACP;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,MACV;AAAA,IACF;AAOF,6BAAyB,UAAU,iBACjC,SAAS,uCAAuC,MAAM,aAAa;AACjE,WAAK,sBAAsB,CAAC;AAC5B,WAAK,qBAAqB,CAAC;AAC3B,eAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,YAAI,UAAU,KAAK,UAAU,CAAC;AAC9B,YAAI,kBAAkB,QAAQ,SAAS;AACvC,iBAAS,IAAI,GAAG,IAAI,gBAAgB,QAAQ,KAAK;AAC/C,cAAI,UAAU,gBAAgB,CAAC;AAE/B,cAAI,SAAS,QAAQ,SAAS,SAAS,GAAG,QAAQ,MAAM;AACxD,mBAAS,KAAK,iBAAiB,QAAQ,SAAS,YAAY,QAAQ,KAAK,aAAa;AACtF,eAAK,SAAS,IAAI,MAAM;AACxB,mBAAS,KAAK,SAAS,QAAQ,MAAM;AAErC,cAAI,OAAO;AACX,cAAI,QAAQ,MAAM;AAChB,mBAAO,QAAQ,SAAS,OAAO,GAAG,QAAQ,IAAI;AAC9C,iBAAK,OAAO,IAAI,IAAI;AACpB,mBAAO,KAAK,OAAO,QAAQ,IAAI;AAAA,UACjC;AAMA,cAAI,kBAAkB;AAAA,YACpB;AAAA,YACA,eAAe,QAAQ,iBACpB,QAAQ,gBAAgB,gBAAgB;AAAA,YAC3C,iBAAiB,QAAQ,mBACtB,QAAQ,gBAAgB,kBAAkB,QAAQ,gBACjD,QAAQ,gBAAgB,kBAAkB,IAC1C;AAAA,YACJ,cAAc,QAAQ;AAAA,YACtB,gBAAgB,QAAQ;AAAA,YACxB;AAAA,UACF;AAEA,eAAK,oBAAoB,KAAK,eAAe;AAC7C,cAAI,OAAO,gBAAgB,iBAAiB,UAAU;AACpD,iBAAK,mBAAmB,KAAK,eAAe;AAAA,UAC9C;AAAA,QACF;AAAA,MACF;AAEA,gBAAU,KAAK,qBAAqB,KAAK,mCAAmC;AAC5E,gBAAU,KAAK,oBAAoB,KAAK,0BAA0B;AAAA,IACpE;AAEF,YAAQ,2BAA2B;AAAA;AAAA;;;ACxnCnC;AAAA;AAOA,QAAI,qBAAqB,+BAAkC;AAC3D,QAAI,OAAO;AAIX,QAAI,gBAAgB;AAGpB,QAAI,eAAe;AAKnB,QAAI,eAAe;AAcnB,aAAS,WAAW,OAAO,SAAS,SAAS,SAAS,OAAO;AAC3D,WAAK,WAAW,CAAC;AACjB,WAAK,iBAAiB,CAAC;AACvB,WAAK,OAAO,SAAS,OAAO,OAAO;AACnC,WAAK,SAAS,WAAW,OAAO,OAAO;AACvC,WAAK,SAAS,WAAW,OAAO,OAAO;AACvC,WAAK,OAAO,SAAS,OAAO,OAAO;AACnC,WAAK,YAAY,IAAI;AACrB,UAAI,WAAW,KAAM,MAAK,IAAI,OAAO;AAAA,IACvC;AAUA,eAAW,0BACT,SAAS,mCAAmC,gBAAgB,oBAAoB,eAAe;AAG7F,UAAI,OAAO,IAAI,WAAW;AAM1B,UAAI,iBAAiB,eAAe,MAAM,aAAa;AACvD,UAAI,sBAAsB;AAC1B,UAAI,gBAAgB,WAAW;AAC7B,YAAI,eAAe,YAAY;AAE/B,YAAI,UAAU,YAAY,KAAK;AAC/B,eAAO,eAAe;AAEtB,iBAAS,cAAc;AACrB,iBAAO,sBAAsB,eAAe,SACxC,eAAe,qBAAqB,IAAI;AAAA,QAC9C;AAAA,MACF;AAGA,UAAI,oBAAoB,GAAG,sBAAsB;AAKjD,UAAI,cAAc;AAElB,yBAAmB,YAAY,SAAU,SAAS;AAChD,YAAI,gBAAgB,MAAM;AAGxB,cAAI,oBAAoB,QAAQ,eAAe;AAE7C,+BAAmB,aAAa,cAAc,CAAC;AAC/C;AACA,kCAAsB;AAAA,UAExB,OAAO;AAIL,gBAAI,WAAW,eAAe,mBAAmB,KAAK;AACtD,gBAAI,OAAO,SAAS,OAAO,GAAG,QAAQ,kBACR,mBAAmB;AACjD,2BAAe,mBAAmB,IAAI,SAAS,OAAO,QAAQ,kBAC1B,mBAAmB;AACvD,kCAAsB,QAAQ;AAC9B,+BAAmB,aAAa,IAAI;AAEpC,0BAAc;AACd;AAAA,UACF;AAAA,QACF;AAIA,eAAO,oBAAoB,QAAQ,eAAe;AAChD,eAAK,IAAI,cAAc,CAAC;AACxB;AAAA,QACF;AACA,YAAI,sBAAsB,QAAQ,iBAAiB;AACjD,cAAI,WAAW,eAAe,mBAAmB,KAAK;AACtD,eAAK,IAAI,SAAS,OAAO,GAAG,QAAQ,eAAe,CAAC;AACpD,yBAAe,mBAAmB,IAAI,SAAS,OAAO,QAAQ,eAAe;AAC7E,gCAAsB,QAAQ;AAAA,QAChC;AACA,sBAAc;AAAA,MAChB,GAAG,IAAI;AAEP,UAAI,sBAAsB,eAAe,QAAQ;AAC/C,YAAI,aAAa;AAEf,6BAAmB,aAAa,cAAc,CAAC;AAAA,QACjD;AAEA,aAAK,IAAI,eAAe,OAAO,mBAAmB,EAAE,KAAK,EAAE,CAAC;AAAA,MAC9D;AAGA,yBAAmB,QAAQ,QAAQ,SAAU,YAAY;AACvD,YAAI,UAAU,mBAAmB,iBAAiB,UAAU;AAC5D,YAAI,WAAW,MAAM;AACnB,cAAI,iBAAiB,MAAM;AACzB,yBAAa,KAAK,KAAK,eAAe,UAAU;AAAA,UAClD;AACA,eAAK,iBAAiB,YAAY,OAAO;AAAA,QAC3C;AAAA,MACF,CAAC;AAED,aAAO;AAEP,eAAS,mBAAmB,SAAS,MAAM;AACzC,YAAI,YAAY,QAAQ,QAAQ,WAAW,QAAW;AACpD,eAAK,IAAI,IAAI;AAAA,QACf,OAAO;AACL,cAAI,SAAS,gBACT,KAAK,KAAK,eAAe,QAAQ,MAAM,IACvC,QAAQ;AACZ,eAAK,IAAI,IAAI;AAAA,YAAW,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR;AAAA,YACA;AAAA,YACA,QAAQ;AAAA,UAAI,CAAC;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAQF,eAAW,UAAU,MAAM,SAAS,eAAe,QAAQ;AACzD,UAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,eAAO,QAAQ,SAAU,OAAO;AAC9B,eAAK,IAAI,KAAK;AAAA,QAChB,GAAG,IAAI;AAAA,MACT,WACS,OAAO,YAAY,KAAK,OAAO,WAAW,UAAU;AAC3D,YAAI,QAAQ;AACV,eAAK,SAAS,KAAK,MAAM;AAAA,QAC3B;AAAA,MACF,OACK;AACH,cAAM,IAAI;AAAA,UACR,gFAAgF;AAAA,QAClF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAQA,eAAW,UAAU,UAAU,SAAS,mBAAmB,QAAQ;AACjE,UAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,iBAAS,IAAI,OAAO,SAAO,GAAG,KAAK,GAAG,KAAK;AACzC,eAAK,QAAQ,OAAO,CAAC,CAAC;AAAA,QACxB;AAAA,MACF,WACS,OAAO,YAAY,KAAK,OAAO,WAAW,UAAU;AAC3D,aAAK,SAAS,QAAQ,MAAM;AAAA,MAC9B,OACK;AACH,cAAM,IAAI;AAAA,UACR,gFAAgF;AAAA,QAClF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AASA,eAAW,UAAU,OAAO,SAAS,gBAAgB,KAAK;AACxD,UAAI;AACJ,eAAS,IAAI,GAAG,MAAM,KAAK,SAAS,QAAQ,IAAI,KAAK,KAAK;AACxD,gBAAQ,KAAK,SAAS,CAAC;AACvB,YAAI,MAAM,YAAY,GAAG;AACvB,gBAAM,KAAK,GAAG;AAAA,QAChB,OACK;AACH,cAAI,UAAU,IAAI;AAChB,gBAAI,OAAO;AAAA,cAAE,QAAQ,KAAK;AAAA,cACb,MAAM,KAAK;AAAA,cACX,QAAQ,KAAK;AAAA,cACb,MAAM,KAAK;AAAA,YAAK,CAAC;AAAA,UAChC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAQA,eAAW,UAAU,OAAO,SAAS,gBAAgB,MAAM;AACzD,UAAI;AACJ,UAAI;AACJ,UAAI,MAAM,KAAK,SAAS;AACxB,UAAI,MAAM,GAAG;AACX,sBAAc,CAAC;AACf,aAAK,IAAI,GAAG,IAAI,MAAI,GAAG,KAAK;AAC1B,sBAAY,KAAK,KAAK,SAAS,CAAC,CAAC;AACjC,sBAAY,KAAK,IAAI;AAAA,QACvB;AACA,oBAAY,KAAK,KAAK,SAAS,CAAC,CAAC;AACjC,aAAK,WAAW;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AASA,eAAW,UAAU,eAAe,SAAS,wBAAwB,UAAU,cAAc;AAC3F,UAAI,YAAY,KAAK,SAAS,KAAK,SAAS,SAAS,CAAC;AACtD,UAAI,UAAU,YAAY,GAAG;AAC3B,kBAAU,aAAa,UAAU,YAAY;AAAA,MAC/C,WACS,OAAO,cAAc,UAAU;AACtC,aAAK,SAAS,KAAK,SAAS,SAAS,CAAC,IAAI,UAAU,QAAQ,UAAU,YAAY;AAAA,MACpF,OACK;AACH,aAAK,SAAS,KAAK,GAAG,QAAQ,UAAU,YAAY,CAAC;AAAA,MACvD;AACA,aAAO;AAAA,IACT;AASA,eAAW,UAAU,mBACnB,SAAS,4BAA4B,aAAa,gBAAgB;AAChE,WAAK,eAAe,KAAK,YAAY,WAAW,CAAC,IAAI;AAAA,IACvD;AAQF,eAAW,UAAU,qBACnB,SAAS,8BAA8B,KAAK;AAC1C,eAAS,IAAI,GAAG,MAAM,KAAK,SAAS,QAAQ,IAAI,KAAK,KAAK;AACxD,YAAI,KAAK,SAAS,CAAC,EAAE,YAAY,GAAG;AAClC,eAAK,SAAS,CAAC,EAAE,mBAAmB,GAAG;AAAA,QACzC;AAAA,MACF;AAEA,UAAI,UAAU,OAAO,KAAK,KAAK,cAAc;AAC7C,eAAS,IAAI,GAAG,MAAM,QAAQ,QAAQ,IAAI,KAAK,KAAK;AAClD,YAAI,KAAK,cAAc,QAAQ,CAAC,CAAC,GAAG,KAAK,eAAe,QAAQ,CAAC,CAAC,CAAC;AAAA,MACrE;AAAA,IACF;AAMF,eAAW,UAAU,WAAW,SAAS,sBAAsB;AAC7D,UAAI,MAAM;AACV,WAAK,KAAK,SAAU,OAAO;AACzB,eAAO;AAAA,MACT,CAAC;AACD,aAAO;AAAA,IACT;AAMA,eAAW,UAAU,wBAAwB,SAAS,iCAAiC,OAAO;AAC5F,UAAI,YAAY;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,MACV;AACA,UAAI,MAAM,IAAI,mBAAmB,KAAK;AACtC,UAAI,sBAAsB;AAC1B,UAAI,qBAAqB;AACzB,UAAI,mBAAmB;AACvB,UAAI,qBAAqB;AACzB,UAAI,mBAAmB;AACvB,WAAK,KAAK,SAAU,OAAO,UAAU;AACnC,kBAAU,QAAQ;AAClB,YAAI,SAAS,WAAW,QACjB,SAAS,SAAS,QAClB,SAAS,WAAW,MAAM;AAC/B,cAAG,uBAAuB,SAAS,UAC7B,qBAAqB,SAAS,QAC9B,uBAAuB,SAAS,UAChC,qBAAqB,SAAS,MAAM;AACxC,gBAAI,WAAW;AAAA,cACb,QAAQ,SAAS;AAAA,cACjB,UAAU;AAAA,gBACR,MAAM,SAAS;AAAA,gBACf,QAAQ,SAAS;AAAA,cACnB;AAAA,cACA,WAAW;AAAA,gBACT,MAAM,UAAU;AAAA,gBAChB,QAAQ,UAAU;AAAA,cACpB;AAAA,cACA,MAAM,SAAS;AAAA,YACjB,CAAC;AAAA,UACH;AACA,+BAAqB,SAAS;AAC9B,6BAAmB,SAAS;AAC5B,+BAAqB,SAAS;AAC9B,6BAAmB,SAAS;AAC5B,gCAAsB;AAAA,QACxB,WAAW,qBAAqB;AAC9B,cAAI,WAAW;AAAA,YACb,WAAW;AAAA,cACT,MAAM,UAAU;AAAA,cAChB,QAAQ,UAAU;AAAA,YACpB;AAAA,UACF,CAAC;AACD,+BAAqB;AACrB,gCAAsB;AAAA,QACxB;AACA,iBAAS,MAAM,GAAG,SAAS,MAAM,QAAQ,MAAM,QAAQ,OAAO;AAC5D,cAAI,MAAM,WAAW,GAAG,MAAM,cAAc;AAC1C,sBAAU;AACV,sBAAU,SAAS;AAEnB,gBAAI,MAAM,MAAM,QAAQ;AACtB,mCAAqB;AACrB,oCAAsB;AAAA,YACxB,WAAW,qBAAqB;AAC9B,kBAAI,WAAW;AAAA,gBACb,QAAQ,SAAS;AAAA,gBACjB,UAAU;AAAA,kBACR,MAAM,SAAS;AAAA,kBACf,QAAQ,SAAS;AAAA,gBACnB;AAAA,gBACA,WAAW;AAAA,kBACT,MAAM,UAAU;AAAA,kBAChB,QAAQ,UAAU;AAAA,gBACpB;AAAA,gBACA,MAAM,SAAS;AAAA,cACjB,CAAC;AAAA,YACH;AAAA,UACF,OAAO;AACL,sBAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF,CAAC;AACD,WAAK,mBAAmB,SAAU,YAAY,eAAe;AAC3D,YAAI,iBAAiB,YAAY,aAAa;AAAA,MAChD,CAAC;AAED,aAAO,EAAE,MAAM,UAAU,MAAM,IAAS;AAAA,IAC1C;AAEA,YAAQ,aAAa;AAAA;AAAA;;;AC5ZrB;AAAA;AAKA,YAAQ,qBAAqB,+BAAsC;AACnE,YAAQ,oBAAoB,8BAAqC;AACjE,YAAQ,aAAa,sBAA6B;AAAA;AAAA;;;;;;;;ACJlD,QAAI,aAAU;AAEd,QAAI;AAEF,UAAI,OAAO,WAAW,cAAc,CAAC,OAAO,KAAK;AAG3C,oBAAY;AAChB,qBAAa,UAAU;;aAElB,KAAK;IAAA;AAHN;AAQR,QAAI,CAAC,YAAY;AACf,mBAAa,SAAS,MAAM,QAAQ,SAAS,QAAQ;AACnD,aAAK,MAAM;AACX,YAAI,QAAQ;AACV,eAAK,IAAI,MAAM;;;AAInB,iBAAW,YAAY;QACrB,KAAK,SAAA,IAAS,QAAQ;AACpB,cAAI,OAAA,QAAQ,MAAM,GAAG;AACnB,qBAAS,OAAO,KAAK,EAAE;;AAEzB,eAAK,OAAO;;QAEd,SAAS,SAAA,QAAS,QAAQ;AACxB,cAAI,OAAA,QAAQ,MAAM,GAAG;AACnB,qBAAS,OAAO,KAAK,EAAE;;AAEzB,eAAK,MAAM,SAAS,KAAK;;QAE3B,uBAAuB,SAAA,wBAAW;AAChC,iBAAO,EAAE,MAAM,KAAK,SAAQ,EAAE;;QAEhC,UAAU,SAAA,WAAW;AACnB,iBAAO,KAAK;;;;AAKlB,aAAS,UAAU,OAAO,SAAS,KAAK;AACtC,UAAI,OAAA,QAAQ,KAAK,GAAG;AAClB,YAAI,MAAM,CAAA;AAEV,iBAAS,IAAI,GAAG,MAAM,MAAM,QAAQ,IAAI,KAAK,KAAK;AAChD,cAAI,KAAK,QAAQ,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC;;AAEtC,eAAO;iBACE,OAAO,UAAU,aAAa,OAAO,UAAU,UAAU;AAElE,eAAO,QAAQ;;AAEjB,aAAO;;AAGT,aAAS,QAAQ,SAAS;AACxB,WAAK,UAAU;AACf,WAAK,SAAS,CAAA;;AAGhB,YAAQ,YAAY;MAClB,SAAO,SAAA,UAAG;AACR,eAAO,CAAC,KAAK,OAAO;;MAEtB,SAAS,SAAA,QAAS,QAAQ,KAAK;AAC7B,aAAK,OAAO,QAAQ,KAAK,KAAK,QAAQ,GAAG,CAAC;;MAE5C,MAAM,SAAA,KAAS,QAAQ,KAAK;AAC1B,aAAK,OAAO,KAAK,KAAK,KAAK,QAAQ,GAAG,CAAC;;MAGzC,OAAO,SAAA,QAAW;AAChB,YAAI,SAAS,KAAK,MAAK;AACvB,aAAK,KAAK,SAAS,MAAM;AACvB,iBAAO,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC;SAC9B;AACD,eAAO;;MAGT,MAAM,SAAA,KAAS,MAAM;AACnB,iBAAS,IAAI,GAAG,MAAM,KAAK,OAAO,QAAQ,IAAI,KAAK,KAAK;AACtD,eAAK,KAAK,OAAO,CAAC,CAAC;;;MAIvB,OAAO,SAAA,QAAW;AAChB,YAAI,MAAM,KAAK,mBAAmB,EAAE,OAAO,CAAA,EAAE;AAC7C,eAAO,IAAI,WAAW,IAAI,MAAM,MAAM,IAAI,MAAM,QAAQ,KAAK,OAAO;;MAEtE,MAAM,SAAA,KAAS,OAAoD;YAA7C,MAAG,UAAA,UAAA,KAAA,UAAA,CAAA,MAAA,SAAG,KAAK,mBAAmB,EAAE,OAAO,CAAA,EAAE,IAAE,UAAA,CAAA;AAC/D,YAAI,iBAAiB,YAAY;AAC/B,iBAAO;;AAGT,gBAAQ,UAAU,OAAO,MAAM,GAAG;AAElC,eAAO,IAAI,WACT,IAAI,MAAM,MACV,IAAI,MAAM,QACV,KAAK,SACL,KAAK;;MAIT,cAAc,SAAA,aAAS,IAAI,MAAM,QAAQ;AACvC,iBAAS,KAAK,aAAa,MAAM;AACjC,eAAO,KAAK,KAAK,CAAC,IAAI,OAAO,MAAM,OAAO,MAAM,KAAK,QAAQ,GAAG,CAAC;;MAGnE,cAAc,SAAA,aAAS,KAAK;AAC1B,eACE,OACC,MAAM,IACJ,QAAQ,OAAO,MAAM,EACrB,QAAQ,MAAM,KAAK,EACnB,QAAQ,OAAO,KAAK,EACpB,QAAQ,OAAO,KAAK,EACpB,QAAQ,WAAW,SAAS,EAC5B,QAAQ,WAAW,SAAS,IAC/B;;MAIJ,eAAe,SAAA,cAAS,KAAK;;AAC3B,YAAI,QAAQ,CAAA;AAEZ,eAAO,KAAK,GAAG,EAAE,QAAQ,SAAA,KAAO;AAC9B,cAAI,QAAQ,UAAU,IAAI,GAAG,GAAC,KAAA;AAC9B,cAAI,UAAU,aAAa;AACzB,kBAAM,KAAK,CAAC,MAAK,aAAa,GAAG,GAAG,KAAK,KAAK,CAAC;;SAElD;AAED,YAAI,MAAM,KAAK,aAAa,KAAK;AACjC,YAAI,QAAQ,GAAG;AACf,YAAI,IAAI,GAAG;AACX,eAAO;;MAGT,cAAc,SAAA,aAAS,SAAS;AAC9B,YAAI,MAAM,KAAK,MAAK;AAEpB,iBAAS,IAAI,GAAG,MAAM,QAAQ,QAAQ,IAAI,KAAK,KAAK;AAClD,cAAI,GAAG;AACL,gBAAI,IAAI,GAAG;;AAGb,cAAI,IAAI,UAAU,QAAQ,CAAC,GAAG,IAAI,CAAC;;AAGrC,eAAO;;MAGT,eAAe,SAAA,cAAS,SAAS;AAC/B,YAAI,MAAM,KAAK,aAAa,OAAO;AACnC,YAAI,QAAQ,GAAG;AACf,YAAI,IAAI,GAAG;AAEX,eAAO;;;yBAII;;;;;;;;;;;;;;;;;;;ACrKf,aAAS,QAAQ,OAAO;AACtB,WAAK,QAAQ;;AAGf,aAAS,qBAAqB;IAAA;AAE9B,uBAAmB,YAAY;;;MAG7B,YAAY,SAAA,WAAS,QAAQ,MAAmB;AAC9C,eAAO,KAAK,mBAAmB,QAAQ,IAAI;;MAE7C,eAAe,SAAA,cAAS,MAAM;AAC5B,eAAO,CACL,KAAK,UAAU,kBAAkB,GACjC,aACA,KAAK,UAAU,IAAI,GACnB,GAAG;;MAIP,cAAc,SAAA,eAAW;AACvB,YAAM,WAAQ,MAAA,mBACZ,WAAW,MAAA,iBAAiB,QAAQ;AACtC,eAAO,CAAC,UAAU,QAAQ;;MAG5B,gBAAgB,SAAA,eAAS,QAAQ,UAAU,UAAU;AAEnD,YAAI,CAAC,OAAA,QAAQ,MAAM,GAAG;AACpB,mBAAS,CAAC,MAAM;;AAElB,iBAAS,KAAK,OAAO,KAAK,QAAQ,QAAQ;AAE1C,YAAI,KAAK,YAAY,UAAU;AAC7B,iBAAO,CAAC,WAAW,QAAQ,GAAG;mBACrB,UAAU;AAInB,iBAAO,CAAC,cAAc,QAAQ,GAAG;eAC5B;AACL,iBAAO,iBAAiB;AACxB,iBAAO;;;MAIX,kBAAkB,SAAA,mBAAW;AAC3B,eAAO,KAAK,aAAa,EAAE;;;MAG7B,oBAAoB,SAAA,mBAAS,QAAQ,MAAM;AACzC,aAAK,+BAA+B;AACpC,eAAO,CAAC,mBAAmB,QAAQ,KAAK,KAAK,UAAU,IAAI,GAAG,GAAG;;MAGnE,8BAA8B;MAE9B,SAAS,SAAA,QAAS,aAAa,SAAS,SAAS,UAAU;AACzD,aAAK,cAAc;AACnB,aAAK,UAAU;AACf,aAAK,eAAe,KAAK,QAAQ;AACjC,aAAK,WAAW,KAAK,QAAQ;AAC7B,aAAK,aAAa,CAAC;AAEnB,aAAK,OAAO,KAAK,YAAY;AAC7B,aAAK,UAAU,CAAC,CAAC;AACjB,aAAK,UAAU,WAAW;UACxB,YAAY,CAAA;UACZ,UAAU,CAAA;UACV,cAAc,CAAA;;AAGhB,aAAK,SAAQ;AAEb,aAAK,YAAY;AACjB,aAAK,YAAY,CAAA;AACjB,aAAK,UAAU,CAAA;AACf,aAAK,YAAY,EAAE,MAAM,CAAA,EAAE;AAC3B,aAAK,SAAS,CAAA;AACd,aAAK,eAAe,CAAA;AACpB,aAAK,cAAc,CAAA;AACnB,aAAK,cAAc,CAAA;AAEnB,aAAK,gBAAgB,aAAa,OAAO;AAEzC,aAAK,YACH,KAAK,aACL,YAAY,aACZ,YAAY,iBACZ,KAAK,QAAQ;AACf,aAAK,iBAAiB,KAAK,kBAAkB,YAAY;AAEzD,YAAI,UAAU,YAAY,SACxB,SAAM,QACN,WAAQ,QACR,IAAC,QACD,IAAC;AAEH,aAAK,IAAI,GAAG,IAAI,QAAQ,QAAQ,IAAI,GAAG,KAAK;AAC1C,mBAAS,QAAQ,CAAC;AAElB,eAAK,OAAO,kBAAkB,OAAO;AACrC,qBAAW,YAAY,OAAO;AAC9B,eAAK,OAAO,MAAM,EAAE,MAAM,MAAM,OAAO,IAAI;;AAI7C,aAAK,OAAO,kBAAkB;AAC9B,aAAK,WAAW,EAAE;AAGlB,YAAI,KAAK,aAAa,KAAK,YAAY,UAAU,KAAK,aAAa,QAAQ;AACzE,gBAAM,IAAA,YAAA,SAAA,EAAc,8CAA8C;;AAGpE,YAAI,CAAC,KAAK,WAAW,QAAO,GAAI;AAC9B,eAAK,gBAAgB;AAErB,eAAK,WAAW,QAAQ,CACtB,2CACA,KAAK,qCAAoC,GACzC,KAAK,CACN;AACD,eAAK,WAAW,KAAK,YAAY;AAEjC,cAAI,UAAU;AACZ,iBAAK,aAAa,SAAS,MAAM,MAAM,CACrC,MACA,SACA,aACA,UACA,QACA,eACA,UACA,KAAK,WAAW,MAAK,CAAE,CACxB;iBACI;AACL,iBAAK,WAAW,QACd,uEAAuE;AAEzE,iBAAK,WAAW,KAAK,KAAK;AAC1B,iBAAK,aAAa,KAAK,WAAW,MAAK;;eAEpC;AACL,eAAK,aAAa;;AAGpB,YAAI,KAAK,KAAK,sBAAsB,QAAQ;AAC5C,YAAI,CAAC,KAAK,SAAS;AACjB,cAAI,MAAM;YACR,UAAU,KAAK,aAAY;YAC3B,MAAM;;AAGR,cAAI,KAAK,YAAY;AACnB,gBAAI,SAAS,KAAK;AAClB,gBAAI,gBAAgB;;yBAGS,KAAK;cAA9B,WAAQ,SAAR;cAAU,aAAU,SAAV;AAChB,eAAK,IAAI,GAAG,IAAI,SAAS,QAAQ,IAAI,GAAG,KAAK;AAC3C,gBAAI,SAAS,CAAC,GAAG;AACf,kBAAI,CAAC,IAAI,SAAS,CAAC;AACnB,kBAAI,WAAW,CAAC,GAAG;AACjB,oBAAI,IAAI,IAAI,IAAI,WAAW,CAAC;AAC5B,oBAAI,gBAAgB;;;;AAK1B,cAAI,KAAK,YAAY,YAAY;AAC/B,gBAAI,aAAa;;AAEnB,cAAI,KAAK,QAAQ,MAAM;AACrB,gBAAI,UAAU;;AAEhB,cAAI,KAAK,WAAW;AAClB,gBAAI,YAAY;;AAElB,cAAI,KAAK,gBAAgB;AACvB,gBAAI,iBAAiB;;AAEvB,cAAI,KAAK,QAAQ,QAAQ;AACvB,gBAAI,SAAS;;AAGf,cAAI,CAAC,UAAU;AACb,gBAAI,WAAW,KAAK,UAAU,IAAI,QAAQ;AAE1C,iBAAK,OAAO,kBAAkB,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAC,EAAE;AAC7D,kBAAM,KAAK,cAAc,GAAG;AAE5B,gBAAI,QAAQ,SAAS;AACnB,oBAAM,IAAI,sBAAsB,EAAE,MAAM,QAAQ,SAAQ,CAAE;AAC1D,kBAAI,MAAM,IAAI,OAAO,IAAI,IAAI,SAAQ;mBAChC;AACL,oBAAM,IAAI,SAAQ;;iBAEf;AACL,gBAAI,kBAAkB,KAAK;;AAG7B,iBAAO;eACF;AACL,iBAAO;;;MAIX,UAAU,SAAA,WAAW;AAGnB,aAAK,cAAc;AACnB,aAAK,SAAS,IAAA,UAAA,SAAA,EAAY,KAAK,QAAQ,OAAO;AAC9C,aAAK,aAAa,IAAA,UAAA,SAAA,EAAY,KAAK,QAAQ,OAAO;;MAGpD,uBAAuB,SAAA,sBAAS,UAAU;;AACxC,YAAI,kBAAkB;AAEtB,YAAI,SAAS,KAAK,UAAU,OAAO,KAAK,UAAU,IAAI;AACtD,YAAI,OAAO,SAAS,GAAG;AACrB,6BAAmB,OAAO,OAAO,KAAK,IAAI;;AAS5C,YAAI,aAAa;AACjB,eAAO,KAAK,KAAK,OAAO,EAAE,QAAQ,SAAA,OAAS;AACzC,cAAI,OAAO,MAAK,QAAQ,KAAK;AAC7B,cAAI,KAAK,YAAY,KAAK,iBAAiB,GAAG;AAC5C,+BAAmB,YAAY,EAAE,aAAa,MAAM;AACpD,iBAAK,SAAS,CAAC,IAAI,UAAU;;SAEhC;AAED,YAAI,KAAK,8BAA8B;AACrC,6BAAmB,OAAO,KAAK,qCAAoC;;AAGrE,YAAI,SAAS,CAAC,aAAa,UAAU,WAAW,YAAY,MAAM;AAElE,YAAI,KAAK,kBAAkB,KAAK,WAAW;AACzC,iBAAO,KAAK,aAAa;;AAE3B,YAAI,KAAK,WAAW;AAClB,iBAAO,KAAK,QAAQ;;AAItB,YAAI,SAAS,KAAK,YAAY,eAAe;AAE7C,YAAI,UAAU;AACZ,iBAAO,KAAK,MAAM;AAElB,iBAAO,SAAS,MAAM,MAAM,MAAM;eAC7B;AACL,iBAAO,KAAK,OAAO,KAAK,CACtB,aACA,OAAO,KAAK,GAAG,GACf,WACA,QACA,GAAG,CACJ;;;MAGL,aAAa,SAAA,YAAS,iBAAiB;AACrC,YAAI,WAAW,KAAK,YAAY,UAC9B,aAAa,CAAC,KAAK,aACnB,cAAW,QACX,aAAU,QACV,cAAW,QACX,YAAS;AACX,aAAK,OAAO,KAAK,SAAA,MAAQ;AACvB,cAAI,KAAK,gBAAgB;AACvB,gBAAI,aAAa;AACf,mBAAK,QAAQ,MAAM;mBACd;AACL,4BAAc;;AAEhB,wBAAY;iBACP;AACL,gBAAI,aAAa;AACf,kBAAI,CAAC,YAAY;AACf,8BAAc;qBACT;AACL,4BAAY,QAAQ,YAAY;;AAElC,wBAAU,IAAI,GAAG;AACjB,4BAAc,YAAY;;AAG5B,yBAAa;AACb,gBAAI,CAAC,UAAU;AACb,2BAAa;;;SAGlB;AAED,YAAI,YAAY;AACd,cAAI,aAAa;AACf,wBAAY,QAAQ,SAAS;AAC7B,sBAAU,IAAI,GAAG;qBACR,CAAC,YAAY;AACtB,iBAAK,OAAO,KAAK,YAAY;;eAE1B;AACL,6BACE,iBAAiB,cAAc,KAAK,KAAK,iBAAgB;AAE3D,cAAI,aAAa;AACf,wBAAY,QAAQ,kBAAkB;AACtC,sBAAU,IAAI,GAAG;iBACZ;AACL,iBAAK,OAAO,KAAK,gBAAgB;;;AAIrC,YAAI,iBAAiB;AACnB,eAAK,OAAO,QACV,SAAS,gBAAgB,UAAU,CAAC,KAAK,cAAc,KAAK,MAAM;;AAItE,eAAO,KAAK,OAAO,MAAK;;MAG1B,sCAAsC,SAAA,uCAAW;AAC/C,eAAO,6PAOL,KAAI;;;;;;;;;;;MAYR,YAAY,SAAA,WAAS,MAAM;AACzB,YAAI,qBAAqB,KAAK,UAC1B,oCAAoC,GAEtC,SAAS,CAAC,KAAK,YAAY,CAAC,CAAC;AAC/B,aAAK,gBAAgB,MAAM,GAAG,MAAM;AAEpC,YAAI,YAAY,KAAK,SAAQ;AAC7B,eAAO,OAAO,GAAG,GAAG,SAAS;AAE7B,aAAK,KAAK,KAAK,OAAO,aAAa,oBAAoB,QAAQ,MAAM,CAAC;;;;;;;;MASxE,qBAAqB,SAAA,sBAAW;AAE9B,YAAI,qBAAqB,KAAK,UAC1B,oCAAoC,GAEtC,SAAS,CAAC,KAAK,YAAY,CAAC,CAAC;AAC/B,aAAK,gBAAgB,IAAI,GAAG,QAAQ,IAAI;AAExC,aAAK,YAAW;AAEhB,YAAI,UAAU,KAAK,SAAQ;AAC3B,eAAO,OAAO,GAAG,GAAG,OAAO;AAE3B,aAAK,WAAW,CACd,SACA,KAAK,YACL,QACA,SACA,OACA,KAAK,OAAO,aAAa,oBAAoB,QAAQ,MAAM,GAC3D,GAAG,CACJ;;;;;;;;MASH,eAAe,SAAA,cAAS,SAAS;AAC/B,YAAI,KAAK,gBAAgB;AACvB,oBAAU,KAAK,iBAAiB;eAC3B;AACL,eAAK,kBAAkB,KAAK,OAAO;;AAGrC,aAAK,iBAAiB;;;;;;;;;;;MAYxB,QAAQ,SAAA,SAAW;AACjB,YAAI,KAAK,SAAQ,GAAI;AACnB,eAAK,aAAa,SAAA,SAAO;mBAAI,CAAC,eAAe,SAAS,OAAO;WAAC;AAE9D,eAAK,WAAW,KAAK,eAAe,KAAK,SAAQ,CAAE,CAAC;eAC/C;AACL,cAAI,QAAQ,KAAK,SAAQ;AACzB,eAAK,WAAW,CACd,QACA,OACA,gBACA,KAAK,eAAe,OAAO,QAAW,IAAI,GAC1C,IAAI,CACL;AACD,cAAI,KAAK,YAAY,UAAU;AAC7B,iBAAK,WAAW,CACd,WACA,KAAK,eAAe,MAAM,QAAW,IAAI,GACzC,IAAI,CACL;;;;;;;;;;MAWP,eAAe,SAAA,gBAAW;AACxB,aAAK,WACH,KAAK,eAAe,CAClB,KAAK,UAAU,4BAA4B,GAC3C,KACA,KAAK,SAAQ,GACb,GAAG,CACJ,CAAC;;;;;;;;;MAWN,YAAY,SAAA,WAAS,OAAO;AAC1B,aAAK,cAAc;;;;;;;;MASrB,aAAa,SAAA,cAAW;AACtB,aAAK,iBAAiB,KAAK,YAAY,KAAK,WAAW,CAAC;;;;;;;;;MAU1D,iBAAiB,SAAA,gBAAS,OAAO,OAAO,QAAQ,QAAQ;AACtD,YAAI,IAAI;AAER,YAAI,CAAC,UAAU,KAAK,QAAQ,UAAU,CAAC,KAAK,aAAa;AAGvD,eAAK,KAAK,KAAK,cAAc,MAAM,GAAG,CAAC,CAAC;eACnC;AACL,eAAK,YAAW;;AAGlB,aAAK,YAAY,WAAW,OAAO,GAAG,OAAO,MAAM;;;;;;;;;MAUrD,kBAAkB,SAAA,iBAAS,cAAc,OAAO;AAC9C,aAAK,iBAAiB;AAEtB,aAAK,KAAK,CAAC,gBAAgB,aAAa,CAAC,GAAG,MAAM,aAAa,CAAC,GAAG,GAAG,CAAC;AACvE,aAAK,YAAY,WAAW,OAAO,CAAC;;;;;;;;MAStC,YAAY,SAAA,WAAS,OAAO,OAAO,QAAQ;AACzC,YAAI,CAAC,OAAO;AACV,eAAK,iBAAiB,MAAM;eACvB;AACL,eAAK,iBAAiB,0BAA0B,QAAQ,GAAG;;AAG7D,aAAK,YAAY,QAAQ,OAAO,GAAG,MAAM,MAAM;;MAGjD,aAAa,SAAA,YAAS,MAAM,OAAO,GAAG,OAAO,QAAQ;;AACnD,YAAI,KAAK,QAAQ,UAAU,KAAK,QAAQ,eAAe;AACrD,eAAK,KACH,aAAa,KAAK,QAAQ,UAAU,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC;AAEnE;;AAGF,YAAI,MAAM,MAAM;AAChB,eAAO,IAAI,KAAK,KAAK;AAEnB,eAAK,aAAa,SAAA,SAAW;AAC3B,gBAAI,SAAS,OAAK,WAAW,SAAS,MAAM,CAAC,GAAG,IAAI;AAGpD,gBAAI,CAAC,OAAO;AACV,qBAAO,CAAC,eAAe,QAAQ,OAAO,OAAO;mBACxC;AAEL,qBAAO,CAAC,QAAQ,MAAM;;WAEzB;;;;;;;;;;MAYL,uBAAuB,SAAA,wBAAW;AAChC,aAAK,KAAK,CACR,KAAK,UAAU,kBAAkB,GACjC,KACA,KAAK,SAAQ,GACb,MACA,KAAK,YAAY,CAAC,GAClB,GAAG,CACJ;;;;;;;;;;MAWH,iBAAiB,SAAA,gBAAS,QAAQ,MAAM;AACtC,aAAK,YAAW;AAChB,aAAK,WAAW,IAAI;AAIpB,YAAI,SAAS,iBAAiB;AAC5B,cAAI,OAAO,WAAW,UAAU;AAC9B,iBAAK,WAAW,MAAM;iBACjB;AACL,iBAAK,iBAAiB,MAAM;;;;MAKlC,WAAW,SAAA,UAAS,WAAW;AAC7B,YAAI,KAAK,UAAU;AACjB,eAAK,KAAK,IAAI;;AAEhB,YAAI,KAAK,cAAc;AACrB,eAAK,KAAK,IAAI;AACd,eAAK,KAAK,IAAI;;AAEhB,aAAK,iBAAiB,YAAY,cAAc,IAAI;;MAEtD,UAAU,SAAA,WAAW;AACnB,YAAI,KAAK,MAAM;AACb,eAAK,OAAO,KAAK,KAAK,IAAI;;AAE5B,aAAK,OAAO,EAAE,QAAQ,CAAA,GAAI,OAAO,CAAA,GAAI,UAAU,CAAA,GAAI,KAAK,CAAA,EAAE;;MAE5D,SAAS,SAAA,UAAW;AAClB,YAAI,OAAO,KAAK;AAChB,aAAK,OAAO,KAAK,OAAO,IAAG;AAE3B,YAAI,KAAK,UAAU;AACjB,eAAK,KAAK,KAAK,cAAc,KAAK,GAAG,CAAC;;AAExC,YAAI,KAAK,cAAc;AACrB,eAAK,KAAK,KAAK,cAAc,KAAK,QAAQ,CAAC;AAC3C,eAAK,KAAK,KAAK,cAAc,KAAK,KAAK,CAAC;;AAG1C,aAAK,KAAK,KAAK,cAAc,KAAK,MAAM,CAAC;;;;;;;;MAS3C,YAAY,SAAA,WAAS,QAAQ;AAC3B,aAAK,iBAAiB,KAAK,aAAa,MAAM,CAAC;;;;;;;;;;MAWjD,aAAa,SAAA,YAAS,OAAO;AAC3B,aAAK,iBAAiB,KAAK;;;;;;;;;;MAW7B,aAAa,SAAA,YAAS,MAAM;AAC1B,YAAI,QAAQ,MAAM;AAChB,eAAK,iBAAiB,KAAK,kBAAkB,IAAI,CAAC;eAC7C;AACL,eAAK,iBAAiB,IAAI;;;;;;;;;;MAW9B,mBAAiB,SAAA,kBAAC,WAAW,MAAM;AACjC,YAAI,iBAAiB,KAAK,WAAW,cAAc,MAAM,WAAW,GAClE,UAAU,KAAK,gBAAgB,MAAM,SAAS;AAEhD,aAAK,WAAW,KAAK,CACnB,SACA,KAAK,WAAW,aAAa,gBAAgB,IAAI,CAC/C,MACA,SACA,aACA,OAAO,CACR,GACD,SAAS,CACV;;;;;;;;;;;MAYH,cAAc,SAAA,aAAS,WAAW,MAAM,UAAU;AAChD,YAAI,YAAY,KAAK,SAAQ,GAC3B,SAAS,KAAK,YAAY,WAAW,IAAI;AAE3C,YAAI,wBAAwB,CAAA;AAE5B,YAAI,UAAU;AAEZ,gCAAsB,KAAK,OAAO,IAAI;;AAGxC,8BAAsB,KAAK,SAAS;AACpC,YAAI,CAAC,KAAK,QAAQ,QAAQ;AACxB,gCAAsB,KACpB,KAAK,UAAU,+BAA+B,CAAC;;AAInD,YAAI,qBAAqB,CACvB,KACA,KAAK,iBAAiB,uBAAuB,IAAI,GACjD,GAAG;AAEL,YAAI,eAAe,KAAK,OAAO,aAC7B,oBACA,QACA,OAAO,UAAU;AAEnB,aAAK,KAAK,YAAY;;MAGxB,kBAAkB,SAAA,iBAAS,OAAO,WAAW;AAC3C,YAAI,SAAS,CAAA;AACb,eAAO,KAAK,MAAM,CAAC,CAAC;AACpB,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,iBAAO,KAAK,WAAW,MAAM,CAAC,CAAC;;AAEjC,eAAO;;;;;;;;;MAST,mBAAmB,SAAA,kBAAS,WAAW,MAAM;AAC3C,YAAI,SAAS,KAAK,YAAY,WAAW,IAAI;AAC7C,aAAK,KAAK,KAAK,OAAO,aAAa,OAAO,MAAM,QAAQ,OAAO,UAAU,CAAC;;;;;;;;;;;;;;MAe5E,iBAAiB,SAAA,gBAAS,MAAM,YAAY;AAC1C,aAAK,YAAY,QAAQ;AAEzB,YAAI,YAAY,KAAK,SAAQ;AAE7B,aAAK,UAAS;AACd,YAAI,SAAS,KAAK,YAAY,GAAG,MAAM,UAAU;AAEjD,YAAI,aAAc,KAAK,aAAa,KAAK,WACvC,WACA,MACA,QAAQ;AAGV,YAAI,SAAS,CAAC,KAAK,cAAc,YAAY,QAAQ,WAAW,GAAG;AACnE,YAAI,CAAC,KAAK,QAAQ,QAAQ;AACxB,iBAAO,CAAC,IAAI;AACZ,iBAAO,KACL,wBACA,KAAK,UAAU,+BAA+B,CAAC;;AAInD,aAAK,KAAK,CACR,KACA,QACA,OAAO,aAAa,CAAC,OAAO,OAAO,UAAU,IAAI,CAAA,GACjD,MACA,uBACA,KAAK,UAAU,YAAY,GAC3B,OACA,KAAK,OAAO,aAAa,UAAU,QAAQ,OAAO,UAAU,GAC5D,aAAa,CACd;;;;;;;;;MAUH,eAAe,SAAA,cAAS,WAAW,MAAM,QAAQ;AAC/C,YAAI,SAAS,CAAA,GACX,UAAU,KAAK,YAAY,MAAM,GAAG,MAAM;AAE5C,YAAI,WAAW;AACb,iBAAO,KAAK,SAAQ;AACpB,iBAAO,QAAQ;;AAGjB,YAAI,QAAQ;AACV,kBAAQ,SAAS,KAAK,UAAU,MAAM;;AAExC,gBAAQ,UAAU;AAClB,gBAAQ,WAAW;AACnB,gBAAQ,aAAa;AAErB,YAAI,CAAC,WAAW;AACd,iBAAO,QAAQ,KAAK,WAAW,YAAY,MAAM,SAAS,CAAC;eACtD;AACL,iBAAO,QAAQ,IAAI;;AAGrB,YAAI,KAAK,QAAQ,QAAQ;AACvB,kBAAQ,SAAS;;AAEnB,kBAAU,KAAK,cAAc,OAAO;AACpC,eAAO,KAAK,OAAO;AAEnB,aAAK,KAAK,KAAK,OAAO,aAAa,2BAA2B,IAAI,MAAM,CAAC;;;;;;;;MAS3E,cAAc,SAAA,aAAS,KAAK;AAC1B,YAAI,QAAQ,KAAK,SAAQ,GACvB,UAAO,QACP,OAAI,QACJ,KAAE;AAEJ,YAAI,KAAK,UAAU;AACjB,eAAK,KAAK,SAAQ;;AAEpB,YAAI,KAAK,cAAc;AACrB,iBAAO,KAAK,SAAQ;AACpB,oBAAU,KAAK,SAAQ;;AAGzB,YAAI,OAAO,KAAK;AAChB,YAAI,SAAS;AACX,eAAK,SAAS,GAAG,IAAI;;AAEvB,YAAI,MAAM;AACR,eAAK,MAAM,GAAG,IAAI;;AAEpB,YAAI,IAAI;AACN,eAAK,IAAI,GAAG,IAAI;;AAElB,aAAK,OAAO,GAAG,IAAI;;MAGrB,QAAQ,SAAA,OAAS,MAAM,MAAM,OAAO;AAClC,YAAI,SAAS,cAAc;AACzB,eAAK,iBACH,iBACE,KAAK,CAAC,IACN,YACA,KAAK,CAAC,IACN,OACC,QAAQ,QAAQ,KAAK,UAAU,MAAM,KAAK,IAAI,GAAG;mBAE7C,SAAS,kBAAkB;AACpC,eAAK,WAAW,IAAI;mBACX,SAAS,iBAAiB;AACnC,eAAK,iBAAiB,MAAM;eACvB;AACL,eAAK,iBAAiB,MAAM;;;;MAMhC,UAAU;MAEV,iBAAiB,SAAA,gBAAS,aAAa,SAAS;AAC9C,YAAI,WAAW,YAAY,UACzB,QAAK,QACL,WAAQ;AAEV,iBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,IAAI,GAAG,KAAK;AAC/C,kBAAQ,SAAS,CAAC;AAClB,qBAAW,IAAI,KAAK,SAAQ;AAE5B,cAAI,WAAW,KAAK,qBAAqB,KAAK;AAE9C,cAAI,YAAY,MAAM;AACpB,iBAAK,QAAQ,SAAS,KAAK,EAAE;AAC7B,gBAAI,QAAQ,KAAK,QAAQ,SAAS;AAClC,kBAAM,QAAQ;AACd,kBAAM,OAAO,YAAY;AACzB,iBAAK,QAAQ,SAAS,KAAK,IAAI,SAAS,QACtC,OACA,SACA,KAAK,SACL,CAAC,KAAK,UAAU;AAElB,iBAAK,QAAQ,WAAW,KAAK,IAAI,SAAS;AAC1C,iBAAK,QAAQ,aAAa,KAAK,IAAI;AAEnC,iBAAK,YAAY,KAAK,aAAa,SAAS;AAC5C,iBAAK,iBAAiB,KAAK,kBAAkB,SAAS;AACtD,kBAAM,YAAY,KAAK;AACvB,kBAAM,iBAAiB,KAAK;iBACvB;AACL,kBAAM,QAAQ,SAAS;AACvB,kBAAM,OAAO,YAAY,SAAS;AAElC,iBAAK,YAAY,KAAK,aAAa,SAAS;AAC5C,iBAAK,iBAAiB,KAAK,kBAAkB,SAAS;;;;MAI5D,sBAAsB,SAAA,qBAAS,OAAO;AACpC,iBAAS,IAAI,GAAG,MAAM,KAAK,QAAQ,aAAa,QAAQ,IAAI,KAAK,KAAK;AACpE,cAAI,cAAc,KAAK,QAAQ,aAAa,CAAC;AAC7C,cAAI,eAAe,YAAY,OAAO,KAAK,GAAG;AAC5C,mBAAO;;;;MAKb,mBAAmB,SAAA,kBAAS,MAAM;AAChC,YAAI,QAAQ,KAAK,YAAY,SAAS,IAAI,GACxC,gBAAgB,CAAC,MAAM,OAAO,QAAQ,MAAM,WAAW;AAEzD,YAAI,KAAK,kBAAkB,KAAK,WAAW;AACzC,wBAAc,KAAK,aAAa;;AAElC,YAAI,KAAK,WAAW;AAClB,wBAAc,KAAK,QAAQ;;AAG7B,eAAO,uBAAuB,cAAc,KAAK,IAAI,IAAI;;MAG3D,aAAa,SAAA,YAAS,MAAM;AAC1B,YAAI,CAAC,KAAK,UAAU,IAAI,GAAG;AACzB,eAAK,UAAU,IAAI,IAAI;AACvB,eAAK,UAAU,KAAK,KAAK,IAAI;;;MAIjC,MAAM,SAAA,KAAS,MAAM;AACnB,YAAI,EAAE,gBAAgB,UAAU;AAC9B,iBAAO,KAAK,OAAO,KAAK,IAAI;;AAG9B,aAAK,YAAY,KAAK,IAAI;AAC1B,eAAO;;MAGT,kBAAkB,SAAA,iBAAS,MAAM;AAC/B,aAAK,KAAK,IAAI,QAAQ,IAAI,CAAC;;MAG7B,YAAY,SAAA,WAAS,QAAQ;AAC3B,YAAI,KAAK,gBAAgB;AACvB,eAAK,OAAO,KACV,KAAK,eACH,KAAK,OAAO,aAAa,KAAK,cAAc,GAC5C,KAAK,eAAe,CACrB;AAEH,eAAK,iBAAiB;;AAGxB,YAAI,QAAQ;AACV,eAAK,OAAO,KAAK,MAAM;;;MAI3B,cAAc,SAAA,aAAS,UAAU;AAC/B,YAAI,SAAS,CAAC,GAAG,GACf,QAAK,QACL,eAAY,QACZ,cAAW;AAGb,YAAI,CAAC,KAAK,SAAQ,GAAI;AACpB,gBAAM,IAAA,YAAA,SAAA,EAAc,4BAA4B;;AAIlD,YAAI,MAAM,KAAK,SAAS,IAAI;AAE5B,YAAI,eAAe,SAAS;AAE1B,kBAAQ,CAAC,IAAI,KAAK;AAClB,mBAAS,CAAC,KAAK,KAAK;AACpB,wBAAc;eACT;AAEL,yBAAe;AACf,cAAI,QAAO,KAAK,UAAS;AAEzB,mBAAS,CAAC,MAAM,KAAK,KAAK,KAAI,GAAG,OAAO,KAAK,GAAG;AAChD,kBAAQ,KAAK,SAAQ;;AAGvB,YAAI,OAAO,SAAS,KAAK,MAAM,KAAK;AAEpC,YAAI,CAAC,aAAa;AAChB,eAAK,SAAQ;;AAEf,YAAI,cAAc;AAChB,eAAK;;AAEP,aAAK,KAAK,OAAO,OAAO,MAAM,GAAG,CAAC;;MAGpC,WAAW,SAAA,YAAW;AACpB,aAAK;AACL,YAAI,KAAK,YAAY,KAAK,UAAU,QAAQ;AAC1C,eAAK,UAAU,KAAK,UAAU,KAAK,SAAS;;AAE9C,eAAO,KAAK,aAAY;;MAE1B,cAAc,SAAA,eAAW;AACvB,eAAO,UAAU,KAAK;;MAExB,aAAa,SAAA,cAAW;AACtB,YAAI,cAAc,KAAK;AACvB,aAAK,cAAc,CAAA;AACnB,iBAAS,IAAI,GAAG,MAAM,YAAY,QAAQ,IAAI,KAAK,KAAK;AACtD,cAAI,QAAQ,YAAY,CAAC;AAEzB,cAAI,iBAAiB,SAAS;AAC5B,iBAAK,aAAa,KAAK,KAAK;iBACvB;AACL,gBAAI,QAAQ,KAAK,UAAS;AAC1B,iBAAK,WAAW,CAAC,OAAO,OAAO,OAAO,GAAG,CAAC;AAC1C,iBAAK,aAAa,KAAK,KAAK;;;;MAIlC,UAAU,SAAA,WAAW;AACnB,eAAO,KAAK,YAAY;;MAG1B,UAAU,SAAA,SAAS,SAAS;AAC1B,YAAI,SAAS,KAAK,SAAQ,GACxB,QAAQ,SAAS,KAAK,cAAc,KAAK,cAAc,IAAG;AAE5D,YAAI,CAAC,WAAW,gBAAgB,SAAS;AACvC,iBAAO,KAAK;eACP;AACL,cAAI,CAAC,QAAQ;AAEX,gBAAI,CAAC,KAAK,WAAW;AACnB,oBAAM,IAAA,YAAA,SAAA,EAAc,mBAAmB;;AAEzC,iBAAK;;AAEP,iBAAO;;;MAIX,UAAU,SAAA,WAAW;AACnB,YAAI,QAAQ,KAAK,SAAQ,IAAK,KAAK,cAAc,KAAK,cACpD,OAAO,MAAM,MAAM,SAAS,CAAC;AAG/B,YAAI,gBAAgB,SAAS;AAC3B,iBAAO,KAAK;eACP;AACL,iBAAO;;;MAIX,aAAa,SAAA,YAAS,SAAS;AAC7B,YAAI,KAAK,aAAa,SAAS;AAC7B,iBAAO,YAAY,UAAU;eACxB;AACL,iBAAO,UAAU;;;MAIrB,cAAc,SAAA,aAAS,KAAK;AAC1B,eAAO,KAAK,OAAO,aAAa,GAAG;;MAGrC,eAAe,SAAA,cAAS,KAAK;AAC3B,eAAO,KAAK,OAAO,cAAc,GAAG;;MAGtC,WAAW,SAAA,UAAS,MAAM;AACxB,YAAI,MAAM,KAAK,QAAQ,IAAI;AAC3B,YAAI,KAAK;AACP,cAAI;AACJ,iBAAO;;AAGT,cAAM,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,KAAK,IAAI;AAChD,YAAI,YAAY;AAChB,YAAI,iBAAiB;AAErB,eAAO;;MAGT,aAAa,SAAA,YAAS,WAAW,MAAM,aAAa;AAClD,YAAI,SAAS,CAAA,GACX,aAAa,KAAK,gBAAgB,MAAM,WAAW,QAAQ,WAAW;AACxE,YAAI,cAAc,KAAK,WAAW,WAAW,MAAM,QAAQ,GACzD,cAAc,KAAK,UACd,KAAK,YAAY,CAAC,IAAC,gBAAc,KAAK,YACvC,CAAC,IACF,kCAAA;AAGL,eAAO;UACL;UACA;UACA,MAAM;UACN,YAAY,CAAC,WAAW,EAAE,OAAO,MAAM;;;MAI3C,aAAa,SAAA,YAAS,QAAQ,WAAW,QAAQ;AAC/C,YAAI,UAAU,CAAA,GACZ,WAAW,CAAA,GACX,QAAQ,CAAA,GACR,MAAM,CAAA,GACN,aAAa,CAAC,QACd,QAAK;AAEP,YAAI,YAAY;AACd,mBAAS,CAAA;;AAGX,gBAAQ,OAAO,KAAK,aAAa,MAAM;AACvC,gBAAQ,OAAO,KAAK,SAAQ;AAE5B,YAAI,KAAK,UAAU;AACjB,kBAAQ,UAAU,KAAK,SAAQ;;AAEjC,YAAI,KAAK,cAAc;AACrB,kBAAQ,YAAY,KAAK,SAAQ;AACjC,kBAAQ,eAAe,KAAK,SAAQ;;AAGtC,YAAI,UAAU,KAAK,SAAQ,GACzB,UAAU,KAAK,SAAQ;AAIzB,YAAI,WAAW,SAAS;AACtB,kBAAQ,KAAK,WAAW;AACxB,kBAAQ,UAAU,WAAW;;AAK/B,YAAI,IAAI;AACR,eAAO,KAAK;AACV,kBAAQ,KAAK,SAAQ;AACrB,iBAAO,CAAC,IAAI;AAEZ,cAAI,KAAK,UAAU;AACjB,gBAAI,CAAC,IAAI,KAAK,SAAQ;;AAExB,cAAI,KAAK,cAAc;AACrB,kBAAM,CAAC,IAAI,KAAK,SAAQ;AACxB,qBAAS,CAAC,IAAI,KAAK,SAAQ;;;AAI/B,YAAI,YAAY;AACd,kBAAQ,OAAO,KAAK,OAAO,cAAc,MAAM;;AAGjD,YAAI,KAAK,UAAU;AACjB,kBAAQ,MAAM,KAAK,OAAO,cAAc,GAAG;;AAE7C,YAAI,KAAK,cAAc;AACrB,kBAAQ,QAAQ,KAAK,OAAO,cAAc,KAAK;AAC/C,kBAAQ,WAAW,KAAK,OAAO,cAAc,QAAQ;;AAGvD,YAAI,KAAK,QAAQ,MAAM;AACrB,kBAAQ,OAAO;;AAEjB,YAAI,KAAK,gBAAgB;AACvB,kBAAQ,cAAc;;AAExB,eAAO;;MAGT,iBAAiB,SAAA,gBAAS,QAAQ,WAAW,QAAQ,aAAa;AAChE,YAAI,UAAU,KAAK,YAAY,QAAQ,WAAW,MAAM;AACxD,gBAAQ,MAAM,KAAK,UAAU,KAAK,OAAO,eAAe;AACxD,kBAAU,KAAK,cAAc,OAAO;AACpC,YAAI,aAAa;AACf,eAAK,YAAY,SAAS;AAC1B,iBAAO,KAAK,SAAS;AACrB,iBAAO,CAAC,YAAY,OAAO;mBAClB,QAAQ;AACjB,iBAAO,KAAK,OAAO;AACnB,iBAAO;eACF;AACL,iBAAO;;;;AAKb,KAAC,WAAW;AACV,UAAM,gBACJ,wZAgBA,MAAM,GAAG;AAEX,UAAM,gBAAiB,mBAAmB,iBAAiB,CAAA;AAE3D,eAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,IAAI,GAAG,KAAK;AACpD,sBAAc,cAAc,CAAC,CAAC,IAAI;;OAErC;AAKD,uBAAmB,gCAAgC,SAAS,MAAM;AAChE,aACE,CAAC,mBAAmB,eAAe,IAAI,KACvC,6BAA6B,KAAK,IAAI;;AAI1C,aAAS,aAAa,iBAAiB,UAAU,OAAO,GAAG,MAAM;AAC/D,UAAI,QAAQ,SAAS,SAAQ,GAC3B,MAAM,MAAM;AACd,UAAI,iBAAiB;AACnB;;AAGF,aAAO,IAAI,KAAK,KAAK;AACnB,gBAAQ,SAAS,WAAW,OAAO,MAAM,CAAC,GAAG,IAAI;;AAGnD,UAAI,iBAAiB;AACnB,eAAO,CACL,SAAS,UAAU,kBAAkB,GACrC,KACA,OACA,MACA,SAAS,aAAa,MAAM,CAAC,CAAC,GAC9B,MACA,KAAK,UAAU,SAAS,OAAO,eAAe,GAC9C,IAAI;aAED;AACL,eAAO;;;yBAII;;;;;;;;;;;;;;;;;;;;;;;;;AC7vCf,QAAI,UAAU,oBAAA,SAAA,EAAQ;AACtB,aAAS,SAAS;AAChB,UAAI,KAAK,QAAO;AAEhB,SAAG,UAAU,SAAS,OAAO,SAAS;AACpC,eAAO,4BAAA,QAAQ,OAAO,SAAS,EAAE;;AAEnC,SAAG,aAAa,SAAS,OAAO,SAAS;AACvC,eAAO,4BAAA,WAAW,OAAO,SAAS,EAAE;;AAGtC,SAAG,MAAG,wBAAA,SAAA;AACN,SAAG,WAAQ,4BAAA;AACX,SAAG,qBAAkB,uCAAA,SAAA;AACrB,SAAG,SAAM,wBAAA;AACT,SAAG,QAAK,wBAAA;AACR,SAAG,yBAAsB,wBAAA;AAEzB,aAAO;;AAGT,QAAI,OAAO,OAAM;AACjB,SAAK,SAAS;AAEd,2BAAA,SAAA,EAAW,IAAI;AAEf,SAAK,UAAO,4BAAA,SAAA;AAEZ,SAAK,SAAS,IAAI;yBAEH;;;;;;ACtCf,IAAAC,qBAAuB;;;ACFvB,wBAAuB;AACvB,0BAIO;AAEP,iBAAgB;AAEhB,IAAAC,gBAAqC;AAErC,qBAAkC;;;ACX3B,IAAM,UAAU,OAAO,QAAQ;AAC/B,IAAM,aAAa,OAAO,WAAW;AACrC,IAAM,UAAU,OAAO,QAAQ;;;ACDtC,mBAA4B;AAIrB,SAAS,QAAQ,MAAoD;AAC1E,SAAO,aAAa,QAAQ,aAAa;AAC3C;AAEO,SAAS,YACd,MACoD;AACpD,SAAO,KAAK,SAAS,eAAe,KAAK,SAAS;AACpD;AAEO,SAAS,mBAAmB,SAAiC;AAElE,SAAQ,QAAgB;AAExB,SAAO;AACT;AAEO,SAAS,OAAO;AACrB,SAAO;AACT;AAGO,SAAS,SAAS,SAAc,MAAW;AAChD,MAAI,CAAC,QAAQ,EAAE,UAAU,OAAO;AAC9B,WAAO,WAAO,0BAAY,IAAI,IAAI,CAAC;AACnC,SAAK,OAAO;AAAA,EACd;AACA,SAAO;AACT;AAGO,SAAS,uBAAuB,MAA0D;AAC/F,QAAM,gBAAgB,WAAW,KAAK,SAAS;AAE/C,MAAI,eAAe;AACjB,UAAM,UAAU,KAAK;AAErB,UAAM,WAAW,QAAQ;AAGzB,SAAK,OAAO;AAAA,MACV,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO,CAAC,WAAW,EAAE;AAAA,MACrB,UAAU,WAAW;AAAA,MACrB,KAAK,QAAQ;AAAA,IACf;AAAA,EACF;AACF;;;AFXO,IAAM,2BAAN,cAAuC,kBAAAC,QAAW,QAAQ;AAAA;AAAA,EAe/D,YACE,KACA,OACA,UAA0B,CAAC,GAC3B;AACA,UAAM;AAnBR,wBAAQ;AACR,wBAAQ,YAAkB,CAAC;AAC3B,wBAAQ,UAAgB,CAAC;AACzB,wBAAQ;AACR,wBAAQ;AACR,wBAAQ;AACR,wBAAQ,mBAA2B,CAAC;AACpC,wBAAQ,oBAA4B,CAAC;AACrC,wBAAQ;AACR,wBAAQ;AACR,wBAAQ;AACR,wBAAQ,2BAA0B;AAClC;AAAA,wBAAQ,iCAAgC,oBAAI,IAAI;AAS9C,SAAK,MAAM;AAEX,QAAI,OAAO,UAAU,YAAY,MAAM,SAAS,WAAW;AACzD,WAAK,MAAM;AAAA,IACb,OAAO;AACL,WAAK,WAAW;AAAA,IAClB;AAEA,SAAK,iBAAiB,EAAE,MAAM,MAAM,GAAG,QAAQ;AAC/C,SAAK,eAAe,eAAe,OAAO;AAAA,MACxC,uBAAO,OAAO,IAAI;AAAA,MAClB;AAAA,QACE,eAAe;AAAA,QACf,oBAAoB;AAAA,QACpB,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,KAAK;AAAA,QACL,QAAQ;AAAA,MACV;AAAA,MACA,KAAK,eAAe;AAAA,IACtB;AAEA,UAAM,yBAAqB,8CAAyB,CAAC,CAAC;AAEtD,UAAM,YAAwB,KAAK,YAAY;AAAA,MAC7C,SAAS,CAAC;AAAA,MACV,UAAU,CAAC;AAAA,MACX,YAAY,CAAC;AAAA,MACb,OAAO,KAAK,MAAM,KAAK;AACrB,YAAI,CAAC,OAAO,EAAE,QAAQ,MAAM;AAC1B,gBAAM,IAAI,kBAAAA,QAAW,UAAU,MAAM,OAAO,sBAAsB,KAAK;AAAA,YACrE;AAAA,UACF,CAAiB;AAAA,QACnB;AACA,eAAO,UAAU,eAAe,KAAK,IAAI;AAAA,MAC3C;AAAA;AAAA,MAEA,eAAe,QAAQ,cAAc;AACnC,cAAM,SAAS,OAAO,YAAY;AAClC,YAAI,UAAU,MAAM;AAClB,iBAAO;AAAA,QACT;AACA,YAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,YAAY,GAAG;AAC9D,iBAAO;AAAA,QACT;AAEA,gBAAI,qCAAgB,QAAQ,oBAAoB,YAAY,GAAG;AAC7D,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA;AAAA,MAEA,OAAO,SAAS,SAAS;AACvB,eAAO,OAAO,YAAY,aAAa,QAAQ,KAAK,OAAO,IAAI;AAAA,MACjE;AAAA,MACA,KAAK,OAAY,OAAe;AAC9B,eAAO,SAAS,SAAS;AACvB,kBAAQ,MAAM;AAAA,QAChB;AACA,eAAO;AAAA,MACT;AAAA,MACA,OAAO,CAAC;AAAA,IACV;AAEA,SAAK,uBAAuB;AAAA,MAC1B,gBAAgB,UAAU;AAAA,IAC5B;AAAA,EACF;AAAA,EAEA,OAAO,SAAc,UAA0B,CAAC,GAAW;AACzD,SAAK,WAAW,CAAC,OAAO;AACxB,SAAK,SAAS,CAAC;AACf,SAAK,iBAAiB,EAAE,GAAG,QAAQ;AACnC,SAAK,UAAU,UAAU,EAAE,GAAG,KAAK,IAAI,SAAS,GAAG,QAAQ,QAAQ;AACnE,SAAK,UAAU,WAAW,EAAE,GAAG,KAAK,IAAI,UAAU,GAAG,QAAQ,SAAS;AACtE,SAAK,UAAU,aAAa;AAAA,MAC1B,GAAI,KAAK,IAAI;AAAA,MACb,GAAG,QAAQ;AAAA,IACb;AACA,SAAK,UAAU,QAAQ,CAAC;AACxB,SAAK,0BAA0B;AAC/B,SAAK,8BAA8B,MAAM;AAEzC,QAAI,KAAK,eAAe,MAAM;AAC5B,WAAK,eAAe,OAAO,SAAS,SAAS,KAAK,eAAe,IAAI;AAAA,IACvE;AAEA,UAAM,sBAAsB;AAC5B,0CAAkB,KAAK,WAAW,iBAAiB,mBAAmB;AACtE,0CAAkB,KAAK,WAAW,sBAAsB,mBAAmB;AAE3E,QAAI,CAAC,KAAK,KAAK;AACb,WAAK,MAAM,kBAAAA,QAAW,MAAM,KAAK,QAAS;AAAA,IAC5C;AAOA,UAAM,cAAgC,CAAC,aAAa;AAClD,YAAM,OAAO,KAAK,wBAAwB,KAAK,GAAI;AACnD,aAAO,KAAK,UAAU,KAAK,cAAc;AAAA,IAC3C;AAWA,UAAM,OAAO,KAAK,kBAAkB,KAAK,KAAK,WAAW;AACzD,SAAK,0BAA0B;AAG/B,UAAM,SAAS,KAAK,KAAK,SAAS,OAAO;AAEzC,QAAI,SAAS,aAAa;AACxB,WAAK,OAAO,KAAK,MAAM;AACvB,aAAO,KAAK,OAAO,KAAK,EAAE;AAAA,IAC5B,OAAO;AAUL,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAMA,QAAQ,SAA0B;AAChC,SAAK,gBAAgB,QAAQ,QAAQ,WAAW;AAChD,UAAM,QAAQ,OAAO;AACrB,SAAK,gBAAgB,MAAM;AAAA,EAC7B;AAAA,EAEA,kBAAkB,UAAqC;AACrD,SAAK,6BAA6B,QAAQ;AAAA,EAC5C;AAAA,EAEA,eAAe,OAA+B;AAC5C,SAAK,6BAA6B,KAAK;AAAA,EACzC;AAAA,EAEA,iBAAiB,SAAmC;AAClD,SAAK,cAAc,OAAO;AAAA,EAC5B;AAAA,EAEA,sBAAsB,SAAwC;AAC5D,SAAK,cAAc,OAAO;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe,WAAmC;AAAA,EAAC;AAAA;AAAA;AAAA;AAAA,EAKnD,UAAU,WAA8B;AAAA,EAAC;AAAA,EAEzC,cAAc,OAA8B;AAC1C,SAAK,6BAA6B,KAAK;AAAA,EACzC;AAAA,EAEA,eAAe,MAA8B;AAC3C,UAAM,eACJ,CAAC,KAAK,SAAS,CAAC,WAAAC,QAAI,QAAQ,SAAS,IAAI,KAAK,KAAK,gBAAgB,KAAK,MAAM,CAAC,CAAC;AAElF,QAAI;AACJ,QAAI,cAAc;AAChB,eAAS,KAAK,iBAAiB,cAAc,IAAI;AAAA,IACnD,WAAW,KAAK,MAAM;AACpB,eAAS,KAAK,WAAW,KAAK,eAAgB,MAAM,IAAI;AAAA,IAC1D,OAAO;AACL,eAAS,KAAK,YAAY,KAAK,SAAS,KAAK,KAAK,GAAG,IAAI;AAAA,IAC3D;AAEA,SAAK,OAAO,KAAK,MAAM;AAAA,EACzB;AAAA,EAEA,iBAAiB,SAAmC;AAClD,SAAK,OAAO,KAAK,QAAQ,KAAK;AAAA,EAChC;AAAA,EAEA,cAAc,QAA+B;AAC3C,SAAK,OAAO,KAAK,OAAO,KAAK;AAAA,EAC/B;AAAA,EAEA,cAAc,QAA+B;AAC3C,SAAK,OAAO,KAAK,OAAO,KAAK;AAAA,EAC/B;AAAA,EAEA,eAAe,MAA8B;AAC3C,SAAK,OAAO,KAAK,KAAK,KAAK;AAAA,EAC7B;AAAA,EAEA,mBAAmB;AACjB,SAAK,OAAO,KAAK,MAAS;AAAA,EAC5B;AAAA,EAEA,cAAc;AACZ,SAAK,OAAO,KAAK,IAAI;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWQ,kBAAkB,SAA0B,MAAwB;AAC1E,QAAI,CAAC,KAAK,8BAA8B,IAAI,OAAO,GAAG;AACpD,WAAK,8BAA8B,IAAI,OAAO;AAC9C,YAAM,QAAQ,CAAC;AACf,iBAAW,QAAQ,QAAQ,MAAM;AAC/B,YAAI,YAAY,IAAI,GAAG;AACrB,iBAAO,KAAK,iBAAiB,MAAM,MAAM,KAAK;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,iBACN,WACA,MACA,OACA;AACA,UAAM,UAAU,KAAK,sBAAsB,SAAS;AAEpD,UAAM,SAAS,KAAK,UAAU;AAAA,MAC5B,KAAK,UAAU;AAAA,MACf,QAAQ;AAAA,IACV,EAAE,MAAM,OAAO,KAAK,WAAW,OAAO;AAEtC,WAAO,OAAO,OAAO,UAAU,MAAM,KAAK;AAAA,EAC5C;AAAA,EAEQ,6BAA6B,MAA6C;AAGhF,2BAAuB,IAAI;AAE3B,YAAQ,KAAK,aAAa,IAAoC,GAAG;AAAA,MAC/D,KAAK;AACH,aAAK,kBAAkB,IAAoC;AAC3D;AAAA,MACF,KAAK;AACH,aAAK,kBAAkB,IAAoC;AAC3D;AAAA,MACF,KAAK;AACH,aAAK,qBAAqB,IAAoC;AAC9D;AAAA,IACJ;AAAA,EACF;AAAA;AAAA,EAGQ,aAAa,MAAkD;AACrE,UAAM,WAAW,WAAAA,QAAI,QAAQ,SAAS,KAAK,IAAI;AAC/C,UAAM,eAAe,YAAY,CAAC,CAAC,KAAK,gBAAgB,KAAK,KAAK,MAAM,CAAC,CAAC;AAI1E,QAAI,WAAW,CAAC,gBAAgB,WAAAA,QAAI,QAAQ,iBAAiB,IAAI;AAKjE,QAAI,aAAa,CAAC,iBAAiB,YAAY;AAI/C,QAAI,cAAc,CAAC,UAAU;AAC3B,YAAM,OAAO,KAAK,KAAK,MAAM,CAAC;AAC9B,YAAM,UAAU,KAAK;AACrB,UAAI,QAAQ,gBAAgB,QAAQ,aAAa,IAAI,GAAG;AACtD,mBAAW;AAAA,MACb,WAAW,QAAQ,kBAAkB;AACnC,qBAAa;AAAA,MACf;AAAA,IACF;AAEA,QAAI,UAAU;AACZ,aAAO;AAAA,IACT,WAAW,YAAY;AACrB,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA,EAGQ,gBAAgB,MAAyC;AAC/D,aAAS,QAAQ,GAAG,MAAM,KAAK,gBAAgB,QAAQ,QAAQ,KAAK,SAAS;AAC3E,YAAM,cAAc,KAAK,gBAAgB,KAAK;AAC9C,YAAM,QAAQ,mBAAe,uBAAQ,aAAa,IAAI;AACtD,UAAI,eAAe,SAAS,GAAG;AAC7B,eAAO,CAAC,OAAO,KAAK;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA,EAIQ,iBAAiB,cAA6B,MAA8B;AAClF,UAAM,QAAQ,KAAK,iBAAiB,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AACpE,WAAO,KAAK,YAAY,OAAO,MAAM,CAAC;AAAA,EACxC;AAAA;AAAA,EAGQ,WAAW,MAAW,MAA8B;AAC1D,QAAI,KAAK,OAAO;AACd,aAAO,KAAK,UAAU,KAAK,MAAM,KAAK,KAAK;AAAA,IAC7C;AAEA,WAAO,KAAK,YAAY,MAAM,IAAI;AAAA,EACpC;AAAA,EAEQ,4BAA4B,QAAa,MAAoC;AACnF,QACE,CAAE,KAAmC,WACrC,KAAK,eAAe,aAAa,QACjC,OAAO,WAAW,UAClB;AACA,WAAK,OAAO,KAAK,MAAM;AAAA,IACzB,OAAO;AACL,WAAK,OAAO,KAAK,kBAAAD,QAAW,iBAAiB,MAAM,CAAC;AAAA,IACtD;AAAA,EACF;AAAA,EAEQ,kBAAkB,MAAoC;AAC5D,UAAM,OAAO,KAAK;AAElB,SAAK,SAAS;AACd,UAAM,SAAS,KAAK,aAAa,IAAI,EAAE,CAAC;AACxC,UAAM,eAAe,KAAK,UAAU,OAAO,QAAQ,KAAK,OAAO;AAE/D,QAAI,QAAQ,IAAI,GAAG;AACjB,WAAK,WAAW,MAAM,YAAY;AAAA,IACpC,OAAO;AACL,WAAK,4BAA4B,cAAc,IAAI;AAAA,IACrD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,WAAW,MAA8B,OAAY;AAC3D,UAAM,OAAO,KAAK,KAAK;AACvB,UAAM,UAAU,KAAK,YAAY,MAAM,IAAI;AAE3C,UAAM,SAAS,KAAK,UAAU,MAAM,mBAAoB,KAAK,KAAK,SAAS,OAAO,OAAO;AAEzF,SAAK,OAAO,KAAK,MAAM;AAAA,EACzB;AAAA,EAEQ,kBAAkB,MAAoC;AAC5D,UAAM,OAAO,KAAK;AAClB,UAAM,OAAO,KAAK,MAAM,CAAC;AACzB,QAAI,KAAK,eAAe,gBAAgB,KAAK,eAAe,aAAa,IAAI,GAAG;AAC9E,WAAK,kBAAkB,IAAI;AAAA,IAC7B,WAAW,KAAK,eAAe,kBAAkB;AAC/C,YAAM,IAAI,kBAAAA,QAAW;AAAA,QACnB,iEAAiE;AAAA,QACjE;AAAA,MACF;AAAA,IACF,OAAO;AACL,WAAK,aAAa,IAAI;AAAA,IACxB;AAAA,EACF;AAAA;AAAA;AAAA,EAIQ,kBAAkB,MAAoC;AAC5D,UAAM,OAAO,KAAK,KAAK,MAAM,CAAC;AAC9B,UAAM,SAAS,KAAK,YAAY,MAAM,IAAI;AAE1C,UAAM,SAAS,OAAO,GAAI,KAAK,OAAO,SAAS,GAAG,OAAO,QAAQ,OAAO,OAAO;AAE/E,SAAK,4BAA4B,QAAQ,IAAI;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,aAAa,MAAoC;AACvD,UAAM,OAAO,KAAK;AAClB,UAAM,OAAO,KAAK;AAClB,UAAM,WAAW,WAAAC,QAAI,QAAQ,SAAS,IAAI;AAC1C,UAAM,SAAS,KAAK,YAAY,MAAM,IAAI;AAE1C,UAAM,MAAM,YAAY,OAAO,KAAK,KAAK,MAAM,KAAK;AACpD,WAAO,KAAM,YAAY,OAAO,MAAO,KAAK,aAAa,IAAI,EAAE,CAAC;AAEhE,QAAI,CAAC,OAAO,IAAI;AACd,UAAI,KAAK,eAAe,QAAQ;AAC9B,eAAO,KAAK,KAAK,UAAU,OAAO,OAAO,SAAS,MAAM,GAAG;AAAA,MAC7D,OAAO;AACL,eAAO,KAAK,KAAK,UAAU,MAAM;AAAA,MACnC;AAAA,IACF;AAGA,UAAM,SAAS,OAAO,GAAI,KAAK,OAAO,SAAS,GAAG,OAAO,QAAQ,OAAO,OAAO;AAE/E,SAAK,4BAA4B,QAAQ,IAAI;AAAA,EAC/C;AAAA,EAEQ,cAAc,SAAmE;AACvF,UAAM,EAAE,OAAO,IAAI;AACnB,QAAI,OAAO,SAAS,GAAG;AACrB,YAAM,IAAI,kBAAAD,QAAW;AAAA,QACnB,4CAA4C,OAAO,MAAM;AAAA,QACzD;AAAA,MACF;AAAA,IACF;AAEA,UAAM,YAAY,QAAQ,KAAK,SAAS;AACxC,UAAM,OAAO,YACT,KAAK,aAAa,QAAQ,IAAI,EAAE,KAAK,EAAE,IACtC,QAAQ,KAAgC;AAE7C,UAAM,UAA0D,KAAK,YAAY,SAAS,IAAI;AAC9F,YAAQ,UAAU,KAAK,UAAU;AACjC,YAAQ,WAAW,KAAK,UAAU;AAClC,YAAQ,aAAa,KAAK,UAAU;AAEpC,QAAI;AACJ,QAAI,QAAQ,WAAW,QAAQ,OAAO,MAAM;AAC1C,YAAM,EAAE,GAAG,IAAI;AACf,YAAM,sBAAsB,QAAQ,OAAO,eAAe;AAC1D,cAAQ,WAAO,2BAAY,QAAQ,IAAI;AAGvC,qBAAe,QAAQ,KAAK,eAAe,IAAI,SAAS,oBACtDE,UACA,iBAAmD,CAAC,GACpD;AAGA,uBAAe,WAAO,2BAAY,eAAe,IAAI;AACrD,uBAAe,KAAK,eAAe,IAAI;AACvC,eAAO,GAAGA,UAAS,cAAc;AAAA,MACnC;AAEA,UAAI,GAAG,UAAU;AACf,gBAAQ,WAAW,EAAE,GAAG,QAAQ,UAAU,GAAG,GAAG,SAAS;AAAA,MAC3D;AAAA,IACF;AAEA,QAAI,UAAU,CAAC;AACf,QAAI,OAAO,WAAW,KAAK,CAAC,KAAK,eAAe,wBAAwB;AACtE,gBAAU,KAAK;AAAA,IACjB,WAAW,OAAO,WAAW,GAAG;AAC9B,gBAAU,KAAK,aAAa,OAAO,CAAC,CAAC,EAAE,CAAC;AAAA,IAC1C;AAEA,QAAI,OAAO,KAAK,QAAQ,IAAI,EAAE,SAAS,GAAG;AAExC,gBAAU,OAAO,OAAO,CAAC,GAAG,SAAS,QAAQ,IAAI;AAAA,IACnD;AAEA,UAAM,kBACJ,KAAK,UAAU,SAAS,IAAI,KAC5B;AAAA;AAAA;AAAA,IAIA,kBAAAF,QAAW,GAAG;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEF,QAAI,oBAAoB,QAAW;AACjC,YAAM,IAAI,kBAAAA,QAAW,UAAU,eAAe,IAAI,qBAAqB;AAAA,IACzE;AAEA,QAAI;AACJ,QAAI,OAAO,oBAAoB,UAAU;AACvC,eAAS,KAAK,IAAI,WAAW,iBAAiB,KAAK,cAAc;AACjE,UAAI,QAAQ,KAAK,UAAU,UAAU;AACnC,aAAK,UAAU,SAAS,IAAI,IAAI;AAAA,MAClC;AAAA,IACF,OAAO;AACL,eAAS;AAAA,IACX;AAEA,QAAI,SAAS,OAAO,SAAS,OAAO;AAEpC,QAAI,YAAY,SAAS;AACvB,eACE,QAAQ,UACP,KAAK,eAAe,gBACjB,SACA,OAAO,QAAQ,YAAY;AAAA,EAAK,QAAQ,MAAM,EAAE;AAAA,IACxD;AAEA,SAAK,OAAO,KAAK,MAAM;AAAA,EACzB;AAAA,EAEQ,qBAAqB,MAAoC;AAC/D,UAAM,OAAO,KAAK,KAAK,MAAM,CAAC;AAC9B,UAAM,SAAS,KAAK,YAAY,MAAM,IAAI;AAC1C,QAAI,EAAE,IAAI,SAAS,IAAI;AAEvB,UAAM,MAAM,WAAW,KAAK,MAAM,KAAK,KAAK;AAC5C,eAAW,YAAY,KAAK,aAAa,KAAK,IAAI,EAAE,CAAC;AAErD,QAAI,aAAa,QAAW;AAC1B,UAAI,KAAK,eAAe,QAAQ;AAC9B,mBAAW,KAAK,UAAU,OAAO,OAAO,SAAS,MAAM,GAAG;AAAA,MAC5D,OAAO;AACL,mBACE,OAAO,WAAW,OACd,KAAK,UAAU,eAAe,OAAO,SAAS,IAAI,IAClD,OAAO;AACb,YAAI,YAAY,KAAM,YAAW,KAAK,UAAU,MAAM;AAAA,MACxD;AAAA,IACF;AAEA,UAAM,eACJ,OAAO,aAAa,aAChB,SAAS,KAAK,OAAO,SAAS,GAAG,OAAO,QAAQ,OAAO,OAAO,IAC9D;AAEN,QAAI,QAAQ,IAAI,GAAG;AACjB,YAAM,SAAS,OAAO,KAClB,eACA,KAAK,UAAU,MAAM,mBAAoB,KAAK,KAAK,SAAS,cAAc,OAAO,OAAO;AAC5F,UAAI,UAAU,MAAM;AAClB,aAAK,OAAO,KAAK,MAAM;AAAA,MACzB;AAAA,IACF,OAAO;AACL,UACG,KAAmC,YAAY,SAChD,KAAK,eAAe,aAAa,QACjC,OAAO,iBAAiB,UACxB;AACA,aAAK,OAAO,KAAK,YAAY;AAAA,MAC/B,OAAO;AACL,aAAK,OAAO,KAAK,kBAAAA,QAAW,iBAAiB,YAAY,CAAC;AAAA,MAC5D;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,YAAY,MAAuB,YAAmC;AAC5E,WAAO;AAAA,MACL,IAAI,KAAK,UAAU,eAAe,KAAK,UAAU,SAAS,UAAU;AAAA,MACpE,SAAS,KAAK;AAAA,MACd,QAAQ,KAAK,aAAa,KAAK,MAAM;AAAA,MACrC,SAAS,KAAK,YAAY,MAAM,UAAU;AAAA,IAC5C;AAAA,EACF;AAAA,EAEQ,sBAAsB,WAAuD;AAEnF,UAAM,OAAQ,UAAU,KAAgC;AACxD,UAAM,UAAU,mBAAmB,KAAK,YAAY,WAAW,IAAI,CAAC;AAEpE,QAAI,UAAU,OAAO,SAAS,GAAG;AAC/B,UAAI,CAAC,KAAK,yBAAyB;AAEjC,cAAM,UAAU,KAAK,SAAS,MAAM;AACpC,gBAAQ,OAAO,KAAK,aAAa,UAAU,MAAM;AACjD,aAAK,SAAS,QAAQ,OAAO;AAAA,MAC/B,OAAO;AACL,gBAAQ,OAAO,KAAK,aAAa,UAAU,MAAM;AAAA,MACnD;AAAA,IACF,OAAO;AACL,cAAQ,OAAO,CAAC;AAAA,IAClB;AAEA,WAAO;AAAA,EACT;AAAA,EAKQ,YAAY,MAAuB,MAAc;AACvD,UAAM,UAAkC;AAAA,MACtC;AAAA,MACA,MAAM,KAAK,QAAQ,IAAI;AAAA,MACvB,MAAM,KAAK,eAAgB;AAAA,MAC3B,KAAK,EAAE,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,IAAI,IAAI;AAAA,MAChD,GAAG,KAAK;AAAA,IACV;AAEA,QAAI,QAAQ,IAAI,GAAG;AACjB,MAAC,QAA0B,KAAK,KAAK,UACjC,KAAK,kBAAkB,KAAK,SAAS,KAAK,wBAAwB,KAAK,OAAO,CAAC,IAC/E;AACJ,MAAC,QAA0B,UAAU,KAAK,UACtC,KAAK,kBAAkB,KAAK,SAAS,KAAK,wBAAwB,KAAK,OAAO,CAAC,IAC/E;AAAA,IACN;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,wBAAwB,SAA0B;AACxD,QAAI,CAAC,QAAS,QAAO;AAErB,UAAM,OAAyB,CAAC,aAAkB,iBAAiC,CAAC,MAAM;AACxF,uBAAiB,EAAE,GAAG,eAAe;AAGrC,qBAAe,OAAO,eAAe,QAAQ,KAAK,eAAgB;AAClE,UAAI,eAAe,aAAa;AAC9B,uBAAe,cAAc,eAAe,YAAY;AAAA,UACtD,KAAK,eAAgB;AAAA,QACvB;AAAA,MACF;AAGA,qBAAe,WAAW,eAAe,YAAY,KAAK,eAAgB;AAG1E,YAAM,oBAAoB,KAAK;AAC/B,WAAK,iBAAiB;AACtB,YAAM,eAAe,gBAAgB,KAAK;AAC1C,UAAI,aAAc,MAAK,SAAS,QAAQ,WAAW;AACnD,WAAK,iBAAiB,QAAQ,eAAe,eAAe,CAAC,CAAC;AAG9D,YAAM,SAAS,KAAK,aAAa,OAAO,EAAE,KAAK,EAAE;AAGjD,WAAK,iBAAiB,MAAM;AAC5B,UAAI,aAAc,MAAK,SAAS,MAAM;AACtC,WAAK,iBAAiB;AAGtB,aAAO;AAAA,IACT;AAEA,SAAK,cAAc,QAAQ,aAAa,UAAU;AAClD,WAAO;AAAA,EACT;AAAA,EAEQ,QAAQ,WAAoC;AAClD,UAAM,SAAiC,CAAC;AACxC,QAAI,CAAC,UAAU,KAAM,QAAO;AAC5B,eAAW,EAAE,KAAK,MAAM,KAAK,UAAU,KAAK,OAAO;AACjD,aAAO,GAAG,IAAI,KAAK,aAAa,KAAK,EAAE,CAAC;AAAA,IAC1C;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,YAAY,KAAU,MAA8B,QAAQ,GAAG;AACrE,QAAI,KAAK,eAAe,UAAU,KAAK,eAAe,eAAe;AACnE,aAAO,KAAK,aAAa,KAAK,IAAI;AAAA,IACpC;AAEA,WAAO,QAAQ,KAAK,MAAM,QAAQ,SAAS;AACzC,UAAI,OAAO,KAAM;AACjB,YAAM,KAAK,UAAU,eAAe,KAAK,KAAK,MAAM,KAAK,CAAC;AAAA,IAC5D;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,aAAa,KAAU,MAA8B;AAE3D,UAAM,kBAAkB,KAAK,eAAe,UAAU,KAAK;AAC3D,UAAM,MAAM,KAAK,MAAM,UAAU,kBAAkB,IAAI;AAEvD,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,YAAM,KAAK,UAAU,eAAe,KAAK,KAAK,MAAM,CAAC,CAAC;AAAA,IACxD;AAEA,QAAI,iBAAiB;AACnB,aAAO,KAAK,UAAU,OAAO,KAAK,KAAK,MAAM,GAAG,GAAG,KAAK,GAAG;AAAA,IAC7D,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEQ,aAAa,OAA6C;AAChE,UAAM,gBAAgB,KAAK;AAC3B,SAAK,SAAS,CAAC;AAEf,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAK,YAAY,KAAK;AAAA,IACxB,OAAO;AACL,WAAK,OAAO,KAAK;AAAA,IACnB;AAEA,UAAM,SAAS,KAAK;AAEpB,SAAK,SAAS;AAEd,WAAO;AAAA,EACT;AAAA,EAEA,IAAY,UAAU;AACpB,WAAO,KAAK,SAAS,CAAC;AAAA,EACxB;AACF;;;ADzwBA,IAAM,iBAAiB,mBAAAG,QAAW;AAalC,mBAAAC,QAAW,SAAS,WAA+B;AACjD,QAAM,sBAAsB,eAAe,KAAK,mBAAAA,OAAU;AAE1D,sBAAoB,aAAa,mBAAAA,QAAW;AAC5C,SAAO;AACT;AAEA,mBAAAA,QAAW,aAAa,SACtB,OACA,SACkB;AAClB,MAAI,SAAS,QAAS,OAAO,UAAU,YAAY,MAAM,SAAS,WAAY;AAC5E,UAAM,IAAI,mBAAAA,QAAW;AAAA,MACnB,iFAAiF,KAAK;AAAA,IACxF;AAAA,EACF;AAGA,QAAM,UAAU,IAAI,yBAAyB,QAAQ,mBAAAA,SAAY,OAAO,OAAO;AAE/E,SAAO,CAAC,SAAc,mBAAoC,QAAQ,OAAO,SAAS,cAAc;AAClG;", - "names": ["isFunction", "indexOf", "createFrame", "moveHelperToHooks", "options", "ret", "createProtoAccessControl", "resultIsAllowed", "wrapper", "ret", "initData", "context", "noop", "options", "Handlebars", "AST", "lexer", "compile", "transformLiteralToPath", "isBlock", "sourceFile", "needle", "section", "import_handlebars", "import_utils", "Handlebars", "AST", "context", "Handlebars", "Handlebars"] -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/hangul-js.js b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/hangul-js.js deleted file mode 100644 index 63d1510..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/hangul-js.js +++ /dev/null @@ -1,641 +0,0 @@ -// @ts-nocheck -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); - -// node_modules/hangul-js/hangul.js -var require_hangul = __commonJS({ - "node_modules/hangul-js/hangul.js"(exports, module) { - (function() { - "use strict"; - var CHO = [ - "\u3131", - "\u3132", - "\u3134", - "\u3137", - "\u3138", - "\u3139", - "\u3141", - "\u3142", - "\u3143", - "\u3145", - "\u3146", - "\u3147", - "\u3148", - "\u3149", - "\u314A", - "\u314B", - "\u314C", - "\u314D", - "\u314E" - ], JUNG = [ - "\u314F", - "\u3150", - "\u3151", - "\u3152", - "\u3153", - "\u3154", - "\u3155", - "\u3156", - "\u3157", - ["\u3157", "\u314F"], - ["\u3157", "\u3150"], - ["\u3157", "\u3163"], - "\u315B", - "\u315C", - ["\u315C", "\u3153"], - ["\u315C", "\u3154"], - ["\u315C", "\u3163"], - "\u3160", - "\u3161", - ["\u3161", "\u3163"], - "\u3163" - ], JONG = [ - "", - "\u3131", - "\u3132", - ["\u3131", "\u3145"], - "\u3134", - ["\u3134", "\u3148"], - ["\u3134", "\u314E"], - "\u3137", - "\u3139", - ["\u3139", "\u3131"], - ["\u3139", "\u3141"], - ["\u3139", "\u3142"], - ["\u3139", "\u3145"], - ["\u3139", "\u314C"], - ["\u3139", "\u314D"], - ["\u3139", "\u314E"], - "\u3141", - "\u3142", - ["\u3142", "\u3145"], - "\u3145", - "\u3146", - "\u3147", - "\u3148", - "\u314A", - "\u314B", - "\u314C", - "\u314D", - "\u314E" - ], HANGUL_OFFSET = 44032, CONSONANTS = [ - "\u3131", - "\u3132", - "\u3133", - "\u3134", - "\u3135", - "\u3136", - "\u3137", - "\u3138", - "\u3139", - "\u313A", - "\u313B", - "\u313C", - "\u313D", - "\u313E", - "\u313F", - "\u3140", - "\u3141", - "\u3142", - "\u3143", - "\u3144", - "\u3145", - "\u3146", - "\u3147", - "\u3148", - "\u3149", - "\u314A", - "\u314B", - "\u314C", - "\u314D", - "\u314E" - ], COMPLETE_CHO = [ - "\u3131", - "\u3132", - "\u3134", - "\u3137", - "\u3138", - "\u3139", - "\u3141", - "\u3142", - "\u3143", - "\u3145", - "\u3146", - "\u3147", - "\u3148", - "\u3149", - "\u314A", - "\u314B", - "\u314C", - "\u314D", - "\u314E" - ], COMPLETE_JUNG = [ - "\u314F", - "\u3150", - "\u3151", - "\u3152", - "\u3153", - "\u3154", - "\u3155", - "\u3156", - "\u3157", - "\u3158", - "\u3159", - "\u315A", - "\u315B", - "\u315C", - "\u315D", - "\u315E", - "\u315F", - "\u3160", - "\u3161", - "\u3162", - "\u3163" - ], COMPLETE_JONG = [ - "", - "\u3131", - "\u3132", - "\u3133", - "\u3134", - "\u3135", - "\u3136", - "\u3137", - "\u3139", - "\u313A", - "\u313B", - "\u313C", - "\u313D", - "\u313E", - "\u313F", - "\u3140", - "\u3141", - "\u3142", - "\u3144", - "\u3145", - "\u3146", - "\u3147", - "\u3148", - "\u314A", - "\u314B", - "\u314C", - "\u314D", - "\u314E" - ], COMPLEX_CONSONANTS = [ - ["\u3131", "\u3145", "\u3133"], - ["\u3134", "\u3148", "\u3135"], - ["\u3134", "\u314E", "\u3136"], - ["\u3139", "\u3131", "\u313A"], - ["\u3139", "\u3141", "\u313B"], - ["\u3139", "\u3142", "\u313C"], - ["\u3139", "\u3145", "\u313D"], - ["\u3139", "\u314C", "\u313E"], - ["\u3139", "\u314D", "\u313F"], - ["\u3139", "\u314E", "\u3140"], - ["\u3142", "\u3145", "\u3144"] - ], COMPLEX_VOWELS = [ - ["\u3157", "\u314F", "\u3158"], - ["\u3157", "\u3150", "\u3159"], - ["\u3157", "\u3163", "\u315A"], - ["\u315C", "\u3153", "\u315D"], - ["\u315C", "\u3154", "\u315E"], - ["\u315C", "\u3163", "\u315F"], - ["\u3161", "\u3163", "\u3162"] - ], CONSONANTS_HASH, CHO_HASH, JUNG_HASH, JONG_HASH, COMPLEX_CONSONANTS_HASH, COMPLEX_VOWELS_HASH; - function _makeHash(array) { - var length = array.length, hash = { 0: 0 }; - for (var i = 0; i < length; i++) { - if (array[i]) - hash[array[i].charCodeAt(0)] = i; - } - return hash; - } - CONSONANTS_HASH = _makeHash(CONSONANTS); - CHO_HASH = _makeHash(COMPLETE_CHO); - JUNG_HASH = _makeHash(COMPLETE_JUNG); - JONG_HASH = _makeHash(COMPLETE_JONG); - function _makeComplexHash(array) { - var length = array.length, hash = {}, code1, code2; - for (var i = 0; i < length; i++) { - code1 = array[i][0].charCodeAt(0); - code2 = array[i][1].charCodeAt(0); - if (typeof hash[code1] === "undefined") { - hash[code1] = {}; - } - hash[code1][code2] = array[i][2].charCodeAt(0); - } - return hash; - } - COMPLEX_CONSONANTS_HASH = _makeComplexHash(COMPLEX_CONSONANTS); - COMPLEX_VOWELS_HASH = _makeComplexHash(COMPLEX_VOWELS); - function _isConsonant(c) { - return typeof CONSONANTS_HASH[c] !== "undefined"; - } - function _isCho(c) { - return typeof CHO_HASH[c] !== "undefined"; - } - function _isJung(c) { - return typeof JUNG_HASH[c] !== "undefined"; - } - function _isJong(c) { - return typeof JONG_HASH[c] !== "undefined"; - } - function _isHangul(c) { - return 44032 <= c && c <= 55203; - } - function _isJungJoinable(a, b) { - return COMPLEX_VOWELS_HASH[a] && COMPLEX_VOWELS_HASH[a][b] ? COMPLEX_VOWELS_HASH[a][b] : false; - } - function _isJongJoinable(a, b) { - return COMPLEX_CONSONANTS_HASH[a] && COMPLEX_CONSONANTS_HASH[a][b] ? COMPLEX_CONSONANTS_HASH[a][b] : false; - } - var disassemble = function(string, grouped) { - if (string === null) { - throw new Error("Arguments cannot be null"); - } - if (typeof string === "object") { - string = string.join(""); - } - var result = [], length = string.length, cho, jung, jong, code, r; - for (var i = 0; i < length; i++) { - var temp = []; - code = string.charCodeAt(i); - if (_isHangul(code)) { - code -= HANGUL_OFFSET; - jong = code % 28; - jung = (code - jong) / 28 % 21; - cho = parseInt((code - jong) / 28 / 21); - temp.push(CHO[cho]); - if (typeof JUNG[jung] === "object") { - temp = temp.concat(JUNG[jung]); - } else { - temp.push(JUNG[jung]); - } - if (jong > 0) { - if (typeof JONG[jong] === "object") { - temp = temp.concat(JONG[jong]); - } else { - temp.push(JONG[jong]); - } - } - } else if (_isConsonant(code)) { - if (_isCho(code)) { - r = CHO[CHO_HASH[code]]; - } else { - r = JONG[JONG_HASH[code]]; - } - if (typeof r === "string") { - temp.push(r); - } else { - temp = temp.concat(r); - } - } else if (_isJung(code)) { - r = JUNG[JUNG_HASH[code]]; - if (typeof r === "string") { - temp.push(r); - } else { - temp = temp.concat(r); - } - } else { - temp.push(string.charAt(i)); - } - if (grouped) result.push(temp); - else result = result.concat(temp); - } - return result; - }; - var disassembleToString = function(str) { - if (typeof str !== "string") { - return ""; - } - str = disassemble(str); - return str.join(""); - }; - var assemble = function(array) { - if (typeof array === "string") { - array = disassemble(array); - } - var result = [], length = array.length, code, stage = 0, complete_index = -1, previous_code, jong_joined = false; - function _makeHangul(index) { - var code2, cho, jung1, jung2, jong1 = 0, jong2, hangul2 = ""; - jong_joined = false; - if (complete_index + 1 > index) { - return; - } - for (var step = 1; ; step++) { - if (step === 1) { - cho = array[complete_index + step].charCodeAt(0); - if (_isJung(cho)) { - if (complete_index + step + 1 <= index && _isJung(jung1 = array[complete_index + step + 1].charCodeAt(0))) { - result.push(String.fromCharCode(_isJungJoinable(cho, jung1))); - complete_index = index; - return; - } else { - result.push(array[complete_index + step]); - complete_index = index; - return; - } - } else if (!_isCho(cho)) { - result.push(array[complete_index + step]); - complete_index = index; - return; - } - hangul2 = array[complete_index + step]; - } else if (step === 2) { - jung1 = array[complete_index + step].charCodeAt(0); - if (_isCho(jung1)) { - cho = _isJongJoinable(cho, jung1); - hangul2 = String.fromCharCode(cho); - result.push(hangul2); - complete_index = index; - return; - } else { - hangul2 = String.fromCharCode((CHO_HASH[cho] * 21 + JUNG_HASH[jung1]) * 28 + HANGUL_OFFSET); - } - } else if (step === 3) { - jung2 = array[complete_index + step].charCodeAt(0); - if (_isJungJoinable(jung1, jung2)) { - jung1 = _isJungJoinable(jung1, jung2); - } else { - jong1 = jung2; - } - hangul2 = String.fromCharCode((CHO_HASH[cho] * 21 + JUNG_HASH[jung1]) * 28 + JONG_HASH[jong1] + HANGUL_OFFSET); - } else if (step === 4) { - jong2 = array[complete_index + step].charCodeAt(0); - if (_isJongJoinable(jong1, jong2)) { - jong1 = _isJongJoinable(jong1, jong2); - } else { - jong1 = jong2; - } - hangul2 = String.fromCharCode((CHO_HASH[cho] * 21 + JUNG_HASH[jung1]) * 28 + JONG_HASH[jong1] + HANGUL_OFFSET); - } else if (step === 5) { - jong2 = array[complete_index + step].charCodeAt(0); - jong1 = _isJongJoinable(jong1, jong2); - hangul2 = String.fromCharCode((CHO_HASH[cho] * 21 + JUNG_HASH[jung1]) * 28 + JONG_HASH[jong1] + HANGUL_OFFSET); - } - if (complete_index + step >= index) { - result.push(hangul2); - complete_index = index; - return; - } - } - } - for (var i = 0; i < length; i++) { - code = array[i].charCodeAt(0); - if (!_isCho(code) && !_isJung(code) && !_isJong(code)) { - _makeHangul(i - 1); - _makeHangul(i); - stage = 0; - continue; - } - if (stage === 0) { - if (_isCho(code)) { - stage = 1; - } else if (_isJung(code)) { - stage = 4; - } - } else if (stage == 1) { - if (_isJung(code)) { - stage = 2; - } else { - if (_isJongJoinable(previous_code, code)) { - stage = 5; - } else { - _makeHangul(i - 1); - } - } - } else if (stage == 2) { - if (_isJong(code)) { - stage = 3; - } else if (_isJung(code)) { - if (_isJungJoinable(previous_code, code)) { - } else { - _makeHangul(i - 1); - stage = 4; - } - } else { - _makeHangul(i - 1); - stage = 1; - } - } else if (stage == 3) { - if (_isJong(code)) { - if (!jong_joined && _isJongJoinable(previous_code, code)) { - jong_joined = true; - } else { - _makeHangul(i - 1); - stage = 1; - } - } else if (_isCho(code)) { - _makeHangul(i - 1); - stage = 1; - } else if (_isJung(code)) { - _makeHangul(i - 2); - stage = 2; - } - } else if (stage == 4) { - if (_isJung(code)) { - if (_isJungJoinable(previous_code, code)) { - _makeHangul(i); - stage = 0; - } else { - _makeHangul(i - 1); - } - } else { - _makeHangul(i - 1); - stage = 1; - } - } else if (stage == 5) { - if (_isJung(code)) { - _makeHangul(i - 2); - stage = 2; - } else { - _makeHangul(i - 1); - stage = 1; - } - } - previous_code = code; - } - _makeHangul(i - 1); - return result.join(""); - }; - var search = function(a, b) { - var ad = disassemble(a).join(""), bd = disassemble(b).join(""); - return ad.indexOf(bd); - }; - var rangeSearch = function(haystack, needle) { - var hex = disassemble(haystack).join(""), nex = disassemble(needle).join(""), grouped = disassemble(haystack, true), re = new RegExp(nex, "gi"), indices = [], result; - if (!needle.length) return []; - while (result = re.exec(hex)) { - indices.push(result.index); - } - function findStart(index) { - for (var i = 0, length = 0; i < grouped.length; ++i) { - length += grouped[i].length; - if (index < length) return i; - } - } - function findEnd(index) { - for (var i = 0, length = 0; i < grouped.length; ++i) { - length += grouped[i].length; - if (index + nex.length <= length) return i; - } - } - return indices.map(function(i) { - return [findStart(i), findEnd(i)]; - }); - }; - function Searcher(string) { - this.string = string; - this.disassembled = disassemble(string).join(""); - } - Searcher.prototype.search = function(string) { - return disassemble(string).join("").indexOf(this.disassembled); - }; - var endsWithConsonant = function(string) { - if (typeof string === "object") { - string = string.join(""); - } - var code = string.charCodeAt(string.length - 1); - if (_isHangul(code)) { - code -= HANGUL_OFFSET; - var jong = code % 28; - if (jong > 0) { - return true; - } - } else if (_isConsonant(code)) { - return true; - } - return false; - }; - var endsWith = function(string, target) { - return disassemble(string).pop() === target; - }; - var hangul = { - disassemble, - d: disassemble, - // alias for disassemble - disassembleToString, - ds: disassembleToString, - // alias for disassembleToString - assemble, - a: assemble, - // alias for assemble - search, - rangeSearch, - Searcher, - endsWithConsonant, - endsWith, - isHangul: function(c) { - if (typeof c === "string") - c = c.charCodeAt(0); - return _isHangul(c); - }, - isComplete: function(c) { - if (typeof c === "string") - c = c.charCodeAt(0); - return _isHangul(c); - }, - isConsonant: function(c) { - if (typeof c === "string") - c = c.charCodeAt(0); - return _isConsonant(c); - }, - isVowel: function(c) { - if (typeof c === "string") - c = c.charCodeAt(0); - return _isJung(c); - }, - isCho: function(c) { - if (typeof c === "string") - c = c.charCodeAt(0); - return _isCho(c); - }, - isJong: function(c) { - if (typeof c === "string") - c = c.charCodeAt(0); - return _isJong(c); - }, - isHangulAll: function(str) { - if (typeof str !== "string") return false; - for (var i = 0; i < str.length; i++) { - if (!_isHangul(str.charCodeAt(i))) return false; - } - return true; - }, - isCompleteAll: function(str) { - if (typeof str !== "string") return false; - for (var i = 0; i < str.length; i++) { - if (!_isHangul(str.charCodeAt(i))) return false; - } - return true; - }, - isConsonantAll: function(str) { - if (typeof str !== "string") return false; - for (var i = 0; i < str.length; i++) { - if (!_isConsonant(str.charCodeAt(i))) return false; - } - return true; - }, - isVowelAll: function(str) { - if (typeof str !== "string") return false; - for (var i = 0; i < str.length; i++) { - if (!_isJung(str.charCodeAt(i))) return false; - } - return true; - }, - isChoAll: function(str) { - if (typeof str !== "string") return false; - for (var i = 0; i < str.length; i++) { - if (!_isCho(str.charCodeAt(i))) return false; - } - return true; - }, - isJongAll: function(str) { - if (typeof str !== "string") return false; - for (var i = 0; i < str.length; i++) { - if (!_isJong(str.charCodeAt(i))) return false; - } - return true; - } - }; - if (typeof define == "function" && define.amd) { - define(function() { - return hangul; - }); - } else if (typeof module !== "undefined") { - module.exports = hangul; - } else { - window.Hangul = hangul; - } - })(); - } -}); - -// dev/lib/hangul-js.js -var Hangul = __toESM(require_hangul(), 1); -export { - Hangul -}; -//# sourceMappingURL=hangul-js.js.map diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/hangul-js.js.map b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/hangul-js.js.map deleted file mode 100644 index bcd68a5..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/hangul-js.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../node_modules/hangul-js/hangul.js", "../../dev/lib/hangul-js.js"], - "sourcesContent": ["/**\r\n * Hangul.js\r\n * https://github.com/e-/Hangul.js\r\n *\r\n * Copyright 2017, Jaemin Jo\r\n * under the MIT license.\r\n */\r\n\r\n(function () {\r\n 'use strict';\r\n var CHO = [\r\n '\u3131', '\u3132', '\u3134', '\u3137', '\u3138',\r\n '\u3139', '\u3141', '\u3142', '\u3143', '\u3145', '\u3146',\r\n '\u3147', '\u3148', '\u3149', '\u314A', '\u314B', '\u314C',\r\n '\u314D', '\u314E'\r\n ],\r\n JUNG = [\r\n '\u314F', '\u3150', '\u3151', '\u3152', '\u3153',\r\n '\u3154', '\u3155', '\u3156', '\u3157', ['\u3157', '\u314F'], ['\u3157', '\u3150'],\r\n ['\u3157', '\u3163'], '\u315B', '\u315C', ['\u315C', '\u3153'], ['\u315C', '\u3154'], ['\u315C', '\u3163'],\r\n '\u3160', '\u3161', ['\u3161', '\u3163'], '\u3163'\r\n ],\r\n JONG = [\r\n '', '\u3131', '\u3132', ['\u3131', '\u3145'], '\u3134', ['\u3134', '\u3148'], ['\u3134', '\u314E'], '\u3137', '\u3139',\r\n ['\u3139', '\u3131'], ['\u3139', '\u3141'], ['\u3139', '\u3142'], ['\u3139', '\u3145'], ['\u3139', '\u314C'], ['\u3139', '\u314D'], ['\u3139', '\u314E'], '\u3141',\r\n '\u3142', ['\u3142', '\u3145'], '\u3145', '\u3146', '\u3147', '\u3148', '\u314A', '\u314B', '\u314C', '\u314D', '\u314E'\r\n ],\r\n HANGUL_OFFSET = 0xAC00,\r\n CONSONANTS = [\r\n '\u3131', '\u3132', '\u3133', '\u3134', '\u3135', '\u3136', '\u3137', '\u3138',\r\n '\u3139', '\u313A', '\u313B', '\u313C', '\u313D', '\u313E', '\u313F', '\u3140',\r\n '\u3141', '\u3142', '\u3143', '\u3144', '\u3145', '\u3146', '\u3147', '\u3148',\r\n '\u3149', '\u314A', '\u314B', '\u314C', '\u314D', '\u314E'\r\n ],\r\n COMPLETE_CHO = [\r\n '\u3131', '\u3132', '\u3134', '\u3137', '\u3138',\r\n '\u3139', '\u3141', '\u3142', '\u3143', '\u3145', '\u3146',\r\n '\u3147', '\u3148', '\u3149', '\u314A', '\u314B', '\u314C', '\u314D', '\u314E'\r\n ],\r\n COMPLETE_JUNG = [\r\n '\u314F', '\u3150', '\u3151', '\u3152', '\u3153',\r\n '\u3154', '\u3155', '\u3156', '\u3157', '\u3158', '\u3159',\r\n '\u315A', '\u315B', '\u315C', '\u315D', '\u315E', '\u315F',\r\n '\u3160', '\u3161', '\u3162', '\u3163'\r\n ],\r\n COMPLETE_JONG = [\r\n '', '\u3131', '\u3132', '\u3133', '\u3134', '\u3135', '\u3136', '\u3137', '\u3139',\r\n '\u313A', '\u313B', '\u313C', '\u313D', '\u313E', '\u313F', '\u3140', '\u3141',\r\n '\u3142', '\u3144', '\u3145', '\u3146', '\u3147', '\u3148', '\u314A', '\u314B', '\u314C', '\u314D', '\u314E'\r\n ],\r\n COMPLEX_CONSONANTS = [\r\n ['\u3131', '\u3145', '\u3133'],\r\n ['\u3134', '\u3148', '\u3135'],\r\n ['\u3134', '\u314E', '\u3136'],\r\n ['\u3139', '\u3131', '\u313A'],\r\n ['\u3139', '\u3141', '\u313B'],\r\n ['\u3139', '\u3142', '\u313C'],\r\n ['\u3139', '\u3145', '\u313D'],\r\n ['\u3139', '\u314C', '\u313E'],\r\n ['\u3139', '\u314D', '\u313F'],\r\n ['\u3139', '\u314E', '\u3140'],\r\n ['\u3142', '\u3145', '\u3144']\r\n ],\r\n COMPLEX_VOWELS = [\r\n ['\u3157', '\u314F', '\u3158'],\r\n ['\u3157', '\u3150', '\u3159'],\r\n ['\u3157', '\u3163', '\u315A'],\r\n ['\u315C', '\u3153', '\u315D'],\r\n ['\u315C', '\u3154', '\u315E'],\r\n ['\u315C', '\u3163', '\u315F'],\r\n ['\u3161', '\u3163', '\u3162']\r\n ],\r\n CONSONANTS_HASH,\r\n CHO_HASH,\r\n JUNG_HASH,\r\n JONG_HASH,\r\n COMPLEX_CONSONANTS_HASH,\r\n COMPLEX_VOWELS_HASH\r\n ;\r\n\r\n function _makeHash(array) {\r\n var length = array.length,\r\n hash = { 0: 0 }\r\n ;\r\n for (var i = 0; i < length; i++) {\r\n if (array[i])\r\n hash[array[i].charCodeAt(0)] = i;\r\n }\r\n return hash;\r\n }\r\n\r\n CONSONANTS_HASH = _makeHash(CONSONANTS);\r\n CHO_HASH = _makeHash(COMPLETE_CHO);\r\n JUNG_HASH = _makeHash(COMPLETE_JUNG);\r\n JONG_HASH = _makeHash(COMPLETE_JONG);\r\n\r\n function _makeComplexHash(array) {\r\n var length = array.length,\r\n hash = {},\r\n code1,\r\n code2\r\n ;\r\n for (var i = 0; i < length; i++) {\r\n code1 = array[i][0].charCodeAt(0);\r\n code2 = array[i][1].charCodeAt(0);\r\n if (typeof hash[code1] === 'undefined') {\r\n hash[code1] = {};\r\n }\r\n hash[code1][code2] = array[i][2].charCodeAt(0);\r\n }\r\n return hash;\r\n }\r\n\r\n COMPLEX_CONSONANTS_HASH = _makeComplexHash(COMPLEX_CONSONANTS);\r\n COMPLEX_VOWELS_HASH = _makeComplexHash(COMPLEX_VOWELS);\r\n\r\n function _isConsonant(c) {\r\n return typeof CONSONANTS_HASH[c] !== 'undefined';\r\n }\r\n\r\n function _isCho(c) {\r\n return typeof CHO_HASH[c] !== 'undefined';\r\n }\r\n\r\n function _isJung(c) {\r\n return typeof JUNG_HASH[c] !== 'undefined';\r\n }\r\n\r\n function _isJong(c) {\r\n return typeof JONG_HASH[c] !== 'undefined';\r\n }\r\n\r\n function _isHangul(c /* code number */) {\r\n return 0xAC00 <= c && c <= 0xd7a3;\r\n }\r\n\r\n function _isJungJoinable(a, b) {\r\n return (COMPLEX_VOWELS_HASH[a] && COMPLEX_VOWELS_HASH[a][b]) ? COMPLEX_VOWELS_HASH[a][b] : false;\r\n }\r\n\r\n function _isJongJoinable(a, b) {\r\n return COMPLEX_CONSONANTS_HASH[a] && COMPLEX_CONSONANTS_HASH[a][b] ? COMPLEX_CONSONANTS_HASH[a][b] : false;\r\n }\r\n\r\n var disassemble = function (string, grouped) {\r\n if (string === null) {\r\n throw new Error('Arguments cannot be null');\r\n }\r\n\r\n if (typeof string === 'object') {\r\n string = string.join('');\r\n }\r\n\r\n var result = [],\r\n length = string.length,\r\n cho,\r\n jung,\r\n jong,\r\n code,\r\n r\r\n ;\r\n\r\n for (var i = 0; i < length; i++) {\r\n var temp = [];\r\n\r\n code = string.charCodeAt(i);\r\n if (_isHangul(code)) { // \uC644\uC131\uB41C \uD55C\uAE00\uC774\uBA74\r\n code -= HANGUL_OFFSET;\r\n jong = code % 28;\r\n jung = (code - jong) / 28 % 21;\r\n cho = parseInt((code - jong) / 28 / 21);\r\n temp.push(CHO[cho]);\r\n if (typeof JUNG[jung] === 'object') {\r\n temp = temp.concat(JUNG[jung]);\r\n } else {\r\n temp.push(JUNG[jung]);\r\n }\r\n if (jong > 0) {\r\n if (typeof JONG[jong] === 'object') {\r\n temp = temp.concat(JONG[jong]);\r\n } else {\r\n temp.push(JONG[jong]);\r\n }\r\n }\r\n } else if (_isConsonant(code)) { //\uC790\uC74C\uC774\uBA74\r\n if (_isCho(code)) {\r\n r = CHO[CHO_HASH[code]];\r\n } else {\r\n r = JONG[JONG_HASH[code]];\r\n }\r\n if (typeof r === 'string') {\r\n temp.push(r);\r\n } else {\r\n temp = temp.concat(r);\r\n }\r\n } else if (_isJung(code)) {\r\n r = JUNG[JUNG_HASH[code]];\r\n if (typeof r === 'string') {\r\n temp.push(r);\r\n } else {\r\n temp = temp.concat(r);\r\n }\r\n } else {\r\n temp.push(string.charAt(i));\r\n }\r\n\r\n if (grouped) result.push(temp);\r\n else result = result.concat(temp);\r\n }\r\n\r\n return result;\r\n };\r\n\r\n var disassembleToString = function (str) {\r\n if (typeof str !== 'string') {\r\n return '';\r\n }\r\n str = disassemble(str);\r\n return str.join('');\r\n };\r\n\r\n var assemble = function (array) {\r\n if (typeof array === 'string') {\r\n array = disassemble(array);\r\n }\r\n\r\n var result = [],\r\n length = array.length,\r\n code,\r\n stage = 0,\r\n complete_index = -1, //\uC644\uC131\uB41C \uACF3\uC758 \uC778\uB371\uC2A4\r\n previous_code,\r\n jong_joined = false\r\n ;\r\n\r\n function _makeHangul(index) { // complete_index + 1\uBD80\uD130 index\uAE4C\uC9C0\uB97C greedy\uD558\uAC8C \uD55C\uAE00\uB85C \uB9CC\uB4E0\uB2E4.\r\n var code,\r\n cho,\r\n jung1,\r\n jung2,\r\n jong1 = 0,\r\n jong2,\r\n hangul = ''\r\n ;\r\n\r\n jong_joined = false;\r\n if (complete_index + 1 > index) {\r\n return;\r\n }\r\n for (var step = 1; ; step++) {\r\n if (step === 1) {\r\n cho = array[complete_index + step].charCodeAt(0);\r\n if (_isJung(cho)) { // \uCCAB\uBC88\uC9F8 \uAC83\uC774 \uBAA8\uC74C\uC774\uBA74 1) \u314F\uAC19\uC740 \uACBD\uC6B0\uC774\uAC70\uB098 2) \u3159\uAC19\uC740 \uACBD\uC6B0\uC774\uB2E4\r\n if (complete_index + step + 1 <= index && _isJung(jung1 = array[complete_index + step + 1].charCodeAt(0))) { //\uB2E4\uC74C\uAC83\uC774 \uC788\uACE0 \uBAA8\uC74C\uC774\uBA74\r\n result.push(String.fromCharCode(_isJungJoinable(cho, jung1)));\r\n complete_index = index;\r\n return;\r\n } else {\r\n result.push(array[complete_index + step]);\r\n complete_index = index;\r\n return;\r\n }\r\n } else if (!_isCho(cho)) {\r\n result.push(array[complete_index + step]);\r\n complete_index = index;\r\n return;\r\n }\r\n hangul = array[complete_index + step];\r\n } else if (step === 2) {\r\n jung1 = array[complete_index + step].charCodeAt(0);\r\n if (_isCho(jung1)) { //\uB450\uBC88\uC9F8 \uB610 \uC790\uC74C\uC774 \uC624\uBA74 \u3133 \uC5D0\uC11C \u3145\uAC19\uC740 \uACBD\uC6B0\uC774\uB2E4\r\n cho = _isJongJoinable(cho, jung1);\r\n hangul = String.fromCharCode(cho);\r\n result.push(hangul);\r\n complete_index = index;\r\n return;\r\n } else {\r\n hangul = String.fromCharCode((CHO_HASH[cho] * 21 + JUNG_HASH[jung1]) * 28 + HANGUL_OFFSET);\r\n }\r\n } else if (step === 3) {\r\n jung2 = array[complete_index + step].charCodeAt(0);\r\n if (_isJungJoinable(jung1, jung2)) {\r\n jung1 = _isJungJoinable(jung1, jung2);\r\n } else {\r\n jong1 = jung2;\r\n }\r\n hangul = String.fromCharCode((CHO_HASH[cho] * 21 + JUNG_HASH[jung1]) * 28 + JONG_HASH[jong1] + HANGUL_OFFSET);\r\n \r\n } else if (step === 4) {\r\n jong2 = array[complete_index + step].charCodeAt(0);\r\n if (_isJongJoinable(jong1, jong2)) {\r\n jong1 = _isJongJoinable(jong1, jong2);\r\n } else {\r\n jong1 = jong2;\r\n }\r\n hangul = String.fromCharCode((CHO_HASH[cho] * 21 + JUNG_HASH[jung1]) * 28 + JONG_HASH[jong1] + HANGUL_OFFSET);\r\n } else if (step === 5) {\r\n jong2 = array[complete_index + step].charCodeAt(0);\r\n jong1 = _isJongJoinable(jong1, jong2);\r\n hangul = String.fromCharCode((CHO_HASH[cho] * 21 + JUNG_HASH[jung1]) * 28 + JONG_HASH[jong1] + HANGUL_OFFSET);\r\n }\r\n\r\n if (complete_index + step >= index) {\r\n result.push(hangul);\r\n complete_index = index;\r\n return;\r\n }\r\n }\r\n }\r\n\r\n for (var i = 0; i < length; i++) {\r\n code = array[i].charCodeAt(0);\r\n if (!_isCho(code) && !_isJung(code) && !_isJong(code)) { //\uCD08, \uC911, \uC885\uC131 \uB2E4 \uC544\uB2C8\uBA74\r\n _makeHangul(i - 1);\r\n _makeHangul(i);\r\n stage = 0;\r\n continue;\r\n }\r\n //console.log(stage, array[i]);\r\n if (stage === 0) { // \uCD08\uC131\uC774 \uC62C \uCC28\uB840\r\n if (_isCho(code)) { // \uCD08\uC131\uC774 \uC624\uBA74 \uC544\uBB34 \uBB38\uC81C \uC5C6\uB2E4.\r\n stage = 1;\r\n } else if (_isJung(code)) {\r\n // \uC911\uC131\uC774\uC624\uBA74 \u3150 \uB610\uB294 \u3158 \uC778\uAC83\uC774\uB2E4. \uBC14\uB85C \uAD6C\uBD84\uC744 \uBABB\uD55C\uB2E4. \uB530\uB77C\uC11C \uD2B9\uC218\uD55C stage\uC778 stage4\uB85C \uC774\uB3D9\r\n stage = 4;\r\n }\r\n } else if (stage == 1) { //\uC911\uC131\uC774 \uC62C \uCC28\uB840\r\n if (_isJung(code)) { //\uC911\uC131\uC774 \uC624\uBA74 \uBB38\uC81C\uC5C6\uC74C \uC9C4\uD589.\r\n stage = 2;\r\n } else { //\uC544\uB2C8\uACE0 \uC790\uC74C\uC774\uC624\uBA74 \u313B\uAC19\uC740 \uACBD\uC6B0\uAC00 \uC788\uACE0 \u3139\u314B\uAC19\uC740 \uACBD\uC6B0\uAC00 \uC788\uB2E4.\r\n if (_isJongJoinable(previous_code, code)) {\r\n // \uD569\uCCD0\uC9C8 \uC218 \uC788\uB2E4\uBA74 \u313B \uAC19\uC740 \uACBD\uC6B0\uC778\uB370 \uC774 \uB4A4\uC5D0 \uBAA8\uC74C\uC774 \uC640\uC11C \u3139\uB9C8 \uAC00 \uB420\uC218\uB3C4 \uC788\uACE0 \uCD08\uC131\uC774 \uC62C \uC218\uB3C4 \uC788\uB2E4. \uB530\uB77C\uC11C \uC123\uBD88\uB9AC \uC644\uC131\uD560 \uC218 \uC5C6\uB2E4. \uC774\uB550 stage5\uB85C \uAC04\uB2E4.\r\n stage = 5;\r\n } else { //\uD569\uCCD0\uC9C8 \uC218 \uC5C6\uB2E4\uBA74 \uC55E \uAE00\uC790 \uC644\uC131 \uD6C4 \uC5EC\uC804\uD788 \uC911\uC131\uC774 \uC62C \uCC28\uB840\r\n _makeHangul(i - 1);\r\n }\r\n }\r\n } else if (stage == 2) { //\uC885\uC131\uC774 \uC62C \uCC28\uB840\r\n if (_isJong(code)) { //\uC885\uC131\uC774 \uC624\uBA74 \uB2E4\uC74C\uC5D4 \uC790\uC74C \uB610\uB294 \uBAA8\uC74C\uC774 \uC628\uB2E4.\r\n stage = 3;\r\n } else if (_isJung(code)) { //\uADF8\uB7F0\uB370 \uC911\uC131\uC774 \uC624\uBA74 \uC55E\uC758 \uBAA8\uC74C\uACFC \uD569\uCE60 \uC218 \uC788\uB294\uC9C0 \uBCF8\uB2E4.\r\n if (_isJungJoinable(previous_code, code)) { //\uD569\uCE60 \uC218 \uC788\uC73C\uBA74 \uC5EC\uC804\uD788 \uC885\uC131\uC774 \uC62C \uCC28\uB840\uACE0 \uADF8\uB300\uB85C \uC9C4\uD589\r\n } else { // \uD569\uCE60 \uC218 \uC5C6\uB2E4\uBA74 \uC624\uD0C0\uAC00 \uC0DD\uAE34 \uACBD\uC6B0\r\n _makeHangul(i - 1);\r\n stage = 4;\r\n }\r\n } else { // \uBC1B\uCE68\uC774 \uC548\uB418\uB294 \uC790\uC74C\uC774 \uC624\uBA74 \u3138 \uAC19\uC740 \uC774\uC804\uAE4C\uC9C0 \uC644\uC131\uD558\uACE0 \uB2E4\uC2DC\uC2DC\uC791\r\n _makeHangul(i - 1);\r\n stage = 1;\r\n }\r\n } else if (stage == 3) { // \uC885\uC131\uC774 \uD558\uB098 \uC628 \uC0C1\uD0DC.\r\n if (_isJong(code)) { // \uB610 \uC885\uC131\uC774\uBA74 \uD569\uCE60\uC218 \uC788\uB294\uC9C0 \uBCF8\uB2E4.\r\n if (!jong_joined && _isJongJoinable(previous_code, code)) { //\uD569\uCE60 \uC218 \uC788\uC73C\uBA74 \uACC4\uC18D \uC9C4\uD589. \uC65C\uB0D0\uD558\uBA74 \uC774\uBC88\uC5D0 \uC628 \uC790\uC74C\uC774 \uB2E4\uC74C \uAE00\uC790\uC758 \uCD08\uC131\uC774 \uB420 \uC218\uB3C4 \uC788\uAE30 \uB54C\uBB38. \uB300\uC2E0 \uC774 \uAE30\uD68C\uB294 \uD55C\uBC88\uB9CC\r\n jong_joined = true;\r\n } else { //\uC5C6\uC73C\uBA74 \uD55C\uAE00\uC790 \uC644\uC131\r\n _makeHangul(i - 1);\r\n stage = 1; // \uC774 \uC885\uC131\uC774 \uCD08\uC131\uC774 \uB418\uACE0 \uC911\uC131\uBD80\uD130 \uC2DC\uC791\r\n }\r\n } else if (_isCho(code)) { // \uCD08\uC131\uC774\uBA74 \uD55C\uAE00\uC790 \uC644\uC131.\r\n _makeHangul(i - 1);\r\n stage = 1; //\uC774 \uAE00\uC790\uAC00 \uCD08\uC131\uC774\uB418\uBBC0\uB85C \uC911\uC131\uBD80\uD130 \uC2DC\uC791\r\n } else if (_isJung(code)) { // \uC911\uC131\uC774\uBA74 \uC774\uC804 \uC885\uC131\uC740 \uC774 \uC911\uC131\uACFC \uD569\uCCD0\uC9C0\uACE0 \uC55E \uAE00\uC790\uB294 \uBC1B\uCE68\uC774 \uC5C6\uB2E4.\r\n _makeHangul(i - 2);\r\n stage = 2;\r\n }\r\n } else if (stage == 4) { // \uC911\uC131\uC774 \uD558\uB098 \uC628 \uC0C1\uD0DC\r\n if (_isJung(code)) { //\uC911\uC131\uC774 \uC628 \uACBD\uC6B0\r\n if (_isJungJoinable(previous_code, code)) { //\uC774\uC804 \uC911\uC131\uACFC \uD569\uCCD0\uC9C8 \uC218 \uC788\uB294 \uACBD\uC6B0\r\n _makeHangul(i);\r\n stage = 0;\r\n } else { //\uC911\uC131\uC774 \uC654\uC9C0\uB9CC \uBABB\uD569\uCE58\uB294 \uACBD\uC6B0. \u3152\u3157 \uAC19\uC740\r\n _makeHangul(i - 1);\r\n }\r\n } else { // \uC544\uB2C8\uBA74 \uC790\uC74C\uC774 \uC628 \uACBD\uC6B0.\r\n _makeHangul(i - 1);\r\n stage = 1;\r\n }\r\n } else if (stage == 5) { // \uCD08\uC131\uC774 \uC5F0\uC18D\uD574\uC11C \uB450\uAC1C \uC628 \uC0C1\uD0DC \u313A\r\n if (_isJung(code)) { //\uC774\uBC88\uC5D0 \uC911\uC131\uC774\uBA74 \u3139\uAC00\r\n _makeHangul(i - 2);\r\n stage = 2;\r\n } else {\r\n _makeHangul(i - 1);\r\n stage = 1;\r\n }\r\n }\r\n previous_code = code;\r\n }\r\n _makeHangul(i - 1);\r\n return result.join('');\r\n };\r\n\r\n var search = function (a, b) {\r\n var ad = disassemble(a).join(''),\r\n bd = disassemble(b).join('')\r\n ;\r\n\r\n return ad.indexOf(bd);\r\n };\r\n\r\n var rangeSearch = function (haystack, needle) {\r\n var hex = disassemble(haystack).join(''),\r\n nex = disassemble(needle).join(''),\r\n grouped = disassemble(haystack, true),\r\n re = new RegExp(nex, 'gi'),\r\n indices = [],\r\n result;\r\n\r\n if (!needle.length) return [];\r\n\r\n while ((result = re.exec(hex))) {\r\n indices.push(result.index);\r\n }\r\n\r\n function findStart(index) {\r\n for (var i = 0, length = 0; i < grouped.length; ++i) {\r\n length += grouped[i].length;\r\n if (index < length) return i;\r\n }\r\n }\r\n\r\n function findEnd(index) {\r\n for (var i = 0, length = 0; i < grouped.length; ++i) {\r\n length += grouped[i].length;\r\n if (index + nex.length <= length) return i;\r\n }\r\n }\r\n\r\n return indices.map(function (i) {\r\n return [findStart(i), findEnd(i)];\r\n });\r\n };\r\n\r\n function Searcher(string) {\r\n this.string = string;\r\n this.disassembled = disassemble(string).join('');\r\n }\r\n\r\n Searcher.prototype.search = function (string) {\r\n return disassemble(string).join('').indexOf(this.disassembled);\r\n };\r\n var endsWithConsonant = function (string) {\r\n if (typeof string === 'object') {\r\n string = string.join('');\r\n }\r\n\r\n var code = string.charCodeAt(string.length - 1);\r\n\r\n if (_isHangul(code)) { // \uC644\uC131\uB41C \uD55C\uAE00\uC774\uBA74\r\n code -= HANGUL_OFFSET;\r\n var jong = code % 28;\r\n if (jong > 0) {\r\n return true;\r\n }\r\n } else if (_isConsonant(code)) { //\uC790\uC74C\uC774\uBA74\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n var endsWith = function (string, target) {\r\n return disassemble(string).pop() === target;\r\n };\r\n\r\n\r\n var hangul = {\r\n disassemble: disassemble,\r\n d: disassemble, // alias for disassemble\r\n disassembleToString: disassembleToString,\r\n ds: disassembleToString, // alias for disassembleToString\r\n assemble: assemble,\r\n a: assemble, // alias for assemble\r\n search: search,\r\n rangeSearch: rangeSearch,\r\n Searcher: Searcher,\r\n endsWithConsonant: endsWithConsonant,\r\n endsWith: endsWith,\r\n isHangul: function (c) {\r\n if (typeof c === 'string')\r\n c = c.charCodeAt(0);\r\n return _isHangul(c);\r\n },\r\n isComplete: function (c) {\r\n if (typeof c === 'string')\r\n c = c.charCodeAt(0);\r\n return _isHangul(c);\r\n },\r\n isConsonant: function (c) {\r\n if (typeof c === 'string')\r\n c = c.charCodeAt(0);\r\n return _isConsonant(c);\r\n },\r\n isVowel: function (c) {\r\n if (typeof c === 'string')\r\n c = c.charCodeAt(0);\r\n return _isJung(c);\r\n },\r\n isCho: function (c) {\r\n if (typeof c === 'string')\r\n c = c.charCodeAt(0);\r\n return _isCho(c);\r\n },\r\n isJong: function (c) {\r\n if (typeof c === 'string')\r\n c = c.charCodeAt(0);\r\n return _isJong(c);\r\n },\r\n isHangulAll: function (str) {\r\n if (typeof str !== 'string') return false;\r\n for (var i = 0; i < str.length; i++) {\r\n if (!_isHangul(str.charCodeAt(i))) return false;\r\n }\r\n return true;\r\n },\r\n isCompleteAll: function (str) {\r\n if (typeof str !== 'string') return false;\r\n for (var i = 0; i < str.length; i++) {\r\n if (!_isHangul(str.charCodeAt(i))) return false;\r\n }\r\n return true;\r\n },\r\n isConsonantAll: function (str) {\r\n if (typeof str !== 'string') return false;\r\n for (var i = 0; i < str.length; i++) {\r\n if (!_isConsonant(str.charCodeAt(i))) return false;\r\n }\r\n return true;\r\n },\r\n isVowelAll: function (str) {\r\n if (typeof str !== 'string') return false;\r\n for (var i = 0; i < str.length; i++) {\r\n if (!_isJung(str.charCodeAt(i))) return false;\r\n }\r\n return true;\r\n },\r\n isChoAll: function (str) {\r\n if (typeof str !== 'string') return false;\r\n for (var i = 0; i < str.length; i++) {\r\n if (!_isCho(str.charCodeAt(i))) return false;\r\n }\r\n return true;\r\n },\r\n isJongAll: function (str) {\r\n if (typeof str !== 'string') return false;\r\n for (var i = 0; i < str.length; i++) {\r\n if (!_isJong(str.charCodeAt(i))) return false;\r\n }\r\n return true;\r\n }\r\n };\r\n\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () {\r\n return hangul;\r\n });\r\n } else if (typeof module !== 'undefined') {\r\n module.exports = hangul;\r\n } else {\r\n window.Hangul = hangul;\r\n }\r\n})();\r\n\r\n", "/*\n * Copyright (C) 2024 Yomitan Authors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport * as Hangul from 'hangul-js';\n"], - "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAQA,KAAC,WAAY;AACT;AACA,UAAI,MAAM;AAAA,QACN;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACpB;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACzB;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACzB;AAAA,QAAK;AAAA,MACT,GACI,OAAO;AAAA,QACH;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACpB;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK,CAAC,UAAK,QAAG;AAAA,QAAG,CAAC,UAAK,QAAG;AAAA,QACzC,CAAC,UAAK,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAK,CAAC,UAAK,QAAG;AAAA,QAAG,CAAC,UAAK,QAAG;AAAA,QAAG,CAAC,UAAK,QAAG;AAAA,QACvD;AAAA,QAAK;AAAA,QAAK,CAAC,UAAK,QAAG;AAAA,QAAG;AAAA,MAC1B,GACA,OAAO;AAAA,QACH;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK,CAAC,UAAK,QAAG;AAAA,QAAG;AAAA,QAAK,CAAC,UAAK,QAAG;AAAA,QAAG,CAAC,UAAK,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAC5D,CAAC,UAAK,QAAG;AAAA,QAAG,CAAC,UAAK,QAAG;AAAA,QAAG,CAAC,UAAK,QAAG;AAAA,QAAG,CAAC,UAAK,QAAG;AAAA,QAAG,CAAC,UAAK,QAAG;AAAA,QAAG,CAAC,UAAK,QAAG;AAAA,QAAG,CAAC,UAAK,QAAG;AAAA,QAAG;AAAA,QACpF;AAAA,QAAK,CAAC,UAAK,QAAG;AAAA,QAAG;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,MAC7D,GACA,gBAAgB,OAChB,aAAa;AAAA,QACT;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,MAC7B,GACA,eAAe;AAAA,QACX;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACpB;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACzB;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,MACvC,GACA,gBAAgB;AAAA,QACZ;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACpB;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACzB;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACzB;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,MACnB,GACA,gBAAgB;AAAA,QACZ;AAAA,QAAI;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACvC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QACnC;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,QAAK;AAAA,MACtD,GACA,qBAAqB;AAAA,QACjB,CAAC,UAAK,UAAK,QAAG;AAAA,QACd,CAAC,UAAK,UAAK,QAAG;AAAA,QACd,CAAC,UAAK,UAAK,QAAG;AAAA,QACd,CAAC,UAAK,UAAK,QAAG;AAAA,QACd,CAAC,UAAK,UAAK,QAAG;AAAA,QACd,CAAC,UAAK,UAAK,QAAG;AAAA,QACd,CAAC,UAAK,UAAK,QAAG;AAAA,QACd,CAAC,UAAK,UAAK,QAAG;AAAA,QACd,CAAC,UAAK,UAAK,QAAG;AAAA,QACd,CAAC,UAAK,UAAK,QAAG;AAAA,QACd,CAAC,UAAK,UAAK,QAAG;AAAA,MAClB,GACA,iBAAiB;AAAA,QACb,CAAC,UAAK,UAAK,QAAG;AAAA,QACd,CAAC,UAAK,UAAK,QAAG;AAAA,QACd,CAAC,UAAK,UAAK,QAAG;AAAA,QACd,CAAC,UAAK,UAAK,QAAG;AAAA,QACd,CAAC,UAAK,UAAK,QAAG;AAAA,QACd,CAAC,UAAK,UAAK,QAAG;AAAA,QACd,CAAC,UAAK,UAAK,QAAG;AAAA,MAClB,GACA,iBACA,UACA,WACA,WACA,yBACA;AAGJ,eAAS,UAAU,OAAO;AACtB,YAAI,SAAS,MAAM,QACf,OAAO,EAAE,GAAG,EAAE;AAElB,iBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC7B,cAAI,MAAM,CAAC;AACP,iBAAK,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI;AAAA,QACvC;AACA,eAAO;AAAA,MACX;AAEA,wBAAkB,UAAU,UAAU;AACtC,iBAAW,UAAU,YAAY;AACjC,kBAAY,UAAU,aAAa;AACnC,kBAAY,UAAU,aAAa;AAEnC,eAAS,iBAAiB,OAAO;AAC7B,YAAI,SAAS,MAAM,QACf,OAAO,CAAC,GACR,OACA;AAEJ,iBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC7B,kBAAQ,MAAM,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC;AAChC,kBAAQ,MAAM,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC;AAChC,cAAI,OAAO,KAAK,KAAK,MAAM,aAAa;AACpC,iBAAK,KAAK,IAAI,CAAC;AAAA,UACnB;AACA,eAAK,KAAK,EAAE,KAAK,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC;AAAA,QACjD;AACA,eAAO;AAAA,MACX;AAEA,gCAA0B,iBAAiB,kBAAkB;AAC7D,4BAAsB,iBAAiB,cAAc;AAErD,eAAS,aAAa,GAAG;AACrB,eAAO,OAAO,gBAAgB,CAAC,MAAM;AAAA,MACzC;AAEA,eAAS,OAAO,GAAG;AACf,eAAO,OAAO,SAAS,CAAC,MAAM;AAAA,MAClC;AAEA,eAAS,QAAQ,GAAG;AAChB,eAAO,OAAO,UAAU,CAAC,MAAM;AAAA,MACnC;AAEA,eAAS,QAAQ,GAAG;AAChB,eAAO,OAAO,UAAU,CAAC,MAAM;AAAA,MACnC;AAEA,eAAS,UAAU,GAAqB;AACpC,eAAO,SAAU,KAAK,KAAK;AAAA,MAC/B;AAEA,eAAS,gBAAgB,GAAG,GAAG;AAC3B,eAAQ,oBAAoB,CAAC,KAAK,oBAAoB,CAAC,EAAE,CAAC,IAAK,oBAAoB,CAAC,EAAE,CAAC,IAAI;AAAA,MAC/F;AAEA,eAAS,gBAAgB,GAAG,GAAG;AAC3B,eAAO,wBAAwB,CAAC,KAAK,wBAAwB,CAAC,EAAE,CAAC,IAAI,wBAAwB,CAAC,EAAE,CAAC,IAAI;AAAA,MACzG;AAEA,UAAI,cAAc,SAAU,QAAQ,SAAS;AACzC,YAAI,WAAW,MAAM;AACjB,gBAAM,IAAI,MAAM,0BAA0B;AAAA,QAC9C;AAEA,YAAI,OAAO,WAAW,UAAU;AAC5B,mBAAS,OAAO,KAAK,EAAE;AAAA,QAC3B;AAEA,YAAI,SAAS,CAAC,GACV,SAAS,OAAO,QAChB,KACA,MACA,MACA,MACA;AAGJ,iBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC7B,cAAI,OAAO,CAAC;AAEZ,iBAAO,OAAO,WAAW,CAAC;AAC1B,cAAI,UAAU,IAAI,GAAG;AACjB,oBAAQ;AACR,mBAAO,OAAO;AACd,oBAAQ,OAAO,QAAQ,KAAK;AAC5B,kBAAM,UAAU,OAAO,QAAQ,KAAK,EAAE;AACtC,iBAAK,KAAK,IAAI,GAAG,CAAC;AAClB,gBAAI,OAAO,KAAK,IAAI,MAAM,UAAU;AAChC,qBAAO,KAAK,OAAO,KAAK,IAAI,CAAC;AAAA,YACjC,OAAO;AACH,mBAAK,KAAK,KAAK,IAAI,CAAC;AAAA,YACxB;AACA,gBAAI,OAAO,GAAG;AACV,kBAAI,OAAO,KAAK,IAAI,MAAM,UAAU;AAChC,uBAAO,KAAK,OAAO,KAAK,IAAI,CAAC;AAAA,cACjC,OAAO;AACH,qBAAK,KAAK,KAAK,IAAI,CAAC;AAAA,cACxB;AAAA,YACJ;AAAA,UACJ,WAAW,aAAa,IAAI,GAAG;AAC3B,gBAAI,OAAO,IAAI,GAAG;AACd,kBAAI,IAAI,SAAS,IAAI,CAAC;AAAA,YAC1B,OAAO;AACH,kBAAI,KAAK,UAAU,IAAI,CAAC;AAAA,YAC5B;AACA,gBAAI,OAAO,MAAM,UAAU;AACvB,mBAAK,KAAK,CAAC;AAAA,YACf,OAAO;AACH,qBAAO,KAAK,OAAO,CAAC;AAAA,YACxB;AAAA,UACJ,WAAW,QAAQ,IAAI,GAAG;AACtB,gBAAI,KAAK,UAAU,IAAI,CAAC;AACxB,gBAAI,OAAO,MAAM,UAAU;AACvB,mBAAK,KAAK,CAAC;AAAA,YACf,OAAO;AACH,qBAAO,KAAK,OAAO,CAAC;AAAA,YACxB;AAAA,UACJ,OAAO;AACH,iBAAK,KAAK,OAAO,OAAO,CAAC,CAAC;AAAA,UAC9B;AAEA,cAAI,QAAS,QAAO,KAAK,IAAI;AAAA,cACxB,UAAS,OAAO,OAAO,IAAI;AAAA,QACpC;AAEA,eAAO;AAAA,MACX;AAEA,UAAI,sBAAsB,SAAU,KAAK;AACrC,YAAI,OAAO,QAAQ,UAAU;AACzB,iBAAO;AAAA,QACX;AACA,cAAM,YAAY,GAAG;AACrB,eAAO,IAAI,KAAK,EAAE;AAAA,MACtB;AAEA,UAAI,WAAW,SAAU,OAAO;AAC5B,YAAI,OAAO,UAAU,UAAU;AAC3B,kBAAQ,YAAY,KAAK;AAAA,QAC7B;AAEA,YAAI,SAAS,CAAC,GACV,SAAS,MAAM,QACf,MACA,QAAQ,GACR,iBAAiB,IACjB,eACA,cAAc;AAGlB,iBAAS,YAAY,OAAO;AACxB,cAAIA,OACA,KACA,OACA,OACA,QAAQ,GACR,OACAC,UAAS;AAGb,wBAAc;AACd,cAAI,iBAAiB,IAAI,OAAO;AAC5B;AAAA,UACJ;AACA,mBAAS,OAAO,KAAK,QAAQ;AACzB,gBAAI,SAAS,GAAG;AACZ,oBAAM,MAAM,iBAAiB,IAAI,EAAE,WAAW,CAAC;AAC/C,kBAAI,QAAQ,GAAG,GAAG;AACd,oBAAI,iBAAiB,OAAO,KAAK,SAAS,QAAQ,QAAQ,MAAM,iBAAiB,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG;AACvG,yBAAO,KAAK,OAAO,aAAa,gBAAgB,KAAK,KAAK,CAAC,CAAC;AAC5D,mCAAiB;AACjB;AAAA,gBACJ,OAAO;AACH,yBAAO,KAAK,MAAM,iBAAiB,IAAI,CAAC;AACxC,mCAAiB;AACjB;AAAA,gBACJ;AAAA,cACJ,WAAW,CAAC,OAAO,GAAG,GAAG;AACrB,uBAAO,KAAK,MAAM,iBAAiB,IAAI,CAAC;AACxC,iCAAiB;AACjB;AAAA,cACJ;AACA,cAAAA,UAAS,MAAM,iBAAiB,IAAI;AAAA,YACxC,WAAW,SAAS,GAAG;AACnB,sBAAQ,MAAM,iBAAiB,IAAI,EAAE,WAAW,CAAC;AACjD,kBAAI,OAAO,KAAK,GAAG;AACf,sBAAM,gBAAgB,KAAK,KAAK;AAChC,gBAAAA,UAAS,OAAO,aAAa,GAAG;AAChC,uBAAO,KAAKA,OAAM;AAClB,iCAAiB;AACjB;AAAA,cACJ,OAAO;AACH,gBAAAA,UAAS,OAAO,cAAc,SAAS,GAAG,IAAI,KAAK,UAAU,KAAK,KAAK,KAAK,aAAa;AAAA,cAC7F;AAAA,YACJ,WAAW,SAAS,GAAG;AACnB,sBAAQ,MAAM,iBAAiB,IAAI,EAAE,WAAW,CAAC;AACjD,kBAAI,gBAAgB,OAAO,KAAK,GAAG;AAC/B,wBAAQ,gBAAgB,OAAO,KAAK;AAAA,cACxC,OAAO;AACH,wBAAQ;AAAA,cACZ;AACA,cAAAA,UAAS,OAAO,cAAc,SAAS,GAAG,IAAI,KAAK,UAAU,KAAK,KAAK,KAAK,UAAU,KAAK,IAAI,aAAa;AAAA,YAEhH,WAAW,SAAS,GAAG;AACnB,sBAAQ,MAAM,iBAAiB,IAAI,EAAE,WAAW,CAAC;AACjD,kBAAI,gBAAgB,OAAO,KAAK,GAAG;AAC/B,wBAAQ,gBAAgB,OAAO,KAAK;AAAA,cACxC,OAAO;AACH,wBAAQ;AAAA,cACZ;AACA,cAAAA,UAAS,OAAO,cAAc,SAAS,GAAG,IAAI,KAAK,UAAU,KAAK,KAAK,KAAK,UAAU,KAAK,IAAI,aAAa;AAAA,YAChH,WAAW,SAAS,GAAG;AACnB,sBAAQ,MAAM,iBAAiB,IAAI,EAAE,WAAW,CAAC;AACjD,sBAAQ,gBAAgB,OAAO,KAAK;AACpC,cAAAA,UAAS,OAAO,cAAc,SAAS,GAAG,IAAI,KAAK,UAAU,KAAK,KAAK,KAAK,UAAU,KAAK,IAAI,aAAa;AAAA,YAChH;AAEA,gBAAI,iBAAiB,QAAQ,OAAO;AAChC,qBAAO,KAAKA,OAAM;AAClB,+BAAiB;AACjB;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAEA,iBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC7B,iBAAO,MAAM,CAAC,EAAE,WAAW,CAAC;AAC5B,cAAI,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,GAAG;AACnD,wBAAY,IAAI,CAAC;AACjB,wBAAY,CAAC;AACb,oBAAQ;AACR;AAAA,UACJ;AAEA,cAAI,UAAU,GAAG;AACb,gBAAI,OAAO,IAAI,GAAG;AACd,sBAAQ;AAAA,YACZ,WAAW,QAAQ,IAAI,GAAG;AAEtB,sBAAQ;AAAA,YACZ;AAAA,UACJ,WAAW,SAAS,GAAG;AACnB,gBAAI,QAAQ,IAAI,GAAG;AACf,sBAAQ;AAAA,YACZ,OAAO;AACH,kBAAI,gBAAgB,eAAe,IAAI,GAAG;AAEtC,wBAAQ;AAAA,cACZ,OAAO;AACH,4BAAY,IAAI,CAAC;AAAA,cACrB;AAAA,YACJ;AAAA,UACJ,WAAW,SAAS,GAAG;AACnB,gBAAI,QAAQ,IAAI,GAAG;AACf,sBAAQ;AAAA,YACZ,WAAW,QAAQ,IAAI,GAAG;AACtB,kBAAI,gBAAgB,eAAe,IAAI,GAAG;AAAA,cAC1C,OAAO;AACH,4BAAY,IAAI,CAAC;AACjB,wBAAQ;AAAA,cACZ;AAAA,YACJ,OAAO;AACH,0BAAY,IAAI,CAAC;AACjB,sBAAQ;AAAA,YACZ;AAAA,UACJ,WAAW,SAAS,GAAG;AACnB,gBAAI,QAAQ,IAAI,GAAG;AACf,kBAAI,CAAC,eAAe,gBAAgB,eAAe,IAAI,GAAG;AACtD,8BAAc;AAAA,cAClB,OAAO;AACH,4BAAY,IAAI,CAAC;AACjB,wBAAQ;AAAA,cACZ;AAAA,YACJ,WAAW,OAAO,IAAI,GAAG;AACrB,0BAAY,IAAI,CAAC;AACjB,sBAAQ;AAAA,YACZ,WAAW,QAAQ,IAAI,GAAG;AACtB,0BAAY,IAAI,CAAC;AACjB,sBAAQ;AAAA,YACZ;AAAA,UACJ,WAAW,SAAS,GAAG;AACnB,gBAAI,QAAQ,IAAI,GAAG;AACf,kBAAI,gBAAgB,eAAe,IAAI,GAAG;AACtC,4BAAY,CAAC;AACb,wBAAQ;AAAA,cACZ,OAAO;AACH,4BAAY,IAAI,CAAC;AAAA,cACrB;AAAA,YACJ,OAAO;AACH,0BAAY,IAAI,CAAC;AACjB,sBAAQ;AAAA,YACZ;AAAA,UACJ,WAAW,SAAS,GAAG;AACnB,gBAAI,QAAQ,IAAI,GAAG;AACf,0BAAY,IAAI,CAAC;AACjB,sBAAQ;AAAA,YACZ,OAAO;AACH,0BAAY,IAAI,CAAC;AACjB,sBAAQ;AAAA,YACZ;AAAA,UACJ;AACA,0BAAgB;AAAA,QACpB;AACA,oBAAY,IAAI,CAAC;AACjB,eAAO,OAAO,KAAK,EAAE;AAAA,MACzB;AAEA,UAAI,SAAS,SAAU,GAAG,GAAG;AACzB,YAAI,KAAK,YAAY,CAAC,EAAE,KAAK,EAAE,GAC3B,KAAK,YAAY,CAAC,EAAE,KAAK,EAAE;AAG/B,eAAO,GAAG,QAAQ,EAAE;AAAA,MACxB;AAEA,UAAI,cAAc,SAAU,UAAU,QAAQ;AAC1C,YAAI,MAAM,YAAY,QAAQ,EAAE,KAAK,EAAE,GACnC,MAAM,YAAY,MAAM,EAAE,KAAK,EAAE,GACjC,UAAU,YAAY,UAAU,IAAI,GACpC,KAAK,IAAI,OAAO,KAAK,IAAI,GACzB,UAAU,CAAC,GACX;AAEJ,YAAI,CAAC,OAAO,OAAQ,QAAO,CAAC;AAE5B,eAAQ,SAAS,GAAG,KAAK,GAAG,GAAI;AAC5B,kBAAQ,KAAK,OAAO,KAAK;AAAA,QAC7B;AAEA,iBAAS,UAAU,OAAO;AACtB,mBAAS,IAAI,GAAG,SAAS,GAAG,IAAI,QAAQ,QAAQ,EAAE,GAAG;AACjD,sBAAU,QAAQ,CAAC,EAAE;AACrB,gBAAI,QAAQ,OAAQ,QAAO;AAAA,UAC/B;AAAA,QACJ;AAEA,iBAAS,QAAQ,OAAO;AACpB,mBAAS,IAAI,GAAG,SAAS,GAAG,IAAI,QAAQ,QAAQ,EAAE,GAAG;AACjD,sBAAU,QAAQ,CAAC,EAAE;AACrB,gBAAI,QAAQ,IAAI,UAAU,OAAQ,QAAO;AAAA,UAC7C;AAAA,QACJ;AAEA,eAAO,QAAQ,IAAI,SAAU,GAAG;AAC5B,iBAAO,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC;AAAA,QACpC,CAAC;AAAA,MACL;AAEA,eAAS,SAAS,QAAQ;AACtB,aAAK,SAAS;AACd,aAAK,eAAe,YAAY,MAAM,EAAE,KAAK,EAAE;AAAA,MACnD;AAEA,eAAS,UAAU,SAAS,SAAU,QAAQ;AAC1C,eAAO,YAAY,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,KAAK,YAAY;AAAA,MACjE;AACA,UAAI,oBAAoB,SAAU,QAAQ;AACtC,YAAI,OAAO,WAAW,UAAU;AAC5B,mBAAS,OAAO,KAAK,EAAE;AAAA,QAC3B;AAEA,YAAI,OAAO,OAAO,WAAW,OAAO,SAAS,CAAC;AAE9C,YAAI,UAAU,IAAI,GAAG;AACjB,kBAAQ;AACR,cAAI,OAAO,OAAO;AAClB,cAAI,OAAO,GAAG;AACV,mBAAO;AAAA,UACX;AAAA,QACJ,WAAW,aAAa,IAAI,GAAG;AAC3B,iBAAO;AAAA,QACX;AACA,eAAO;AAAA,MACX;AAEA,UAAI,WAAW,SAAU,QAAQ,QAAQ;AACrC,eAAO,YAAY,MAAM,EAAE,IAAI,MAAM;AAAA,MACzC;AAGA,UAAI,SAAS;AAAA,QACT;AAAA,QACA,GAAG;AAAA;AAAA,QACH;AAAA,QACA,IAAI;AAAA;AAAA,QACJ;AAAA,QACA,GAAG;AAAA;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU,SAAU,GAAG;AACnB,cAAI,OAAO,MAAM;AACb,gBAAI,EAAE,WAAW,CAAC;AACtB,iBAAO,UAAU,CAAC;AAAA,QACtB;AAAA,QACA,YAAY,SAAU,GAAG;AACrB,cAAI,OAAO,MAAM;AACb,gBAAI,EAAE,WAAW,CAAC;AACtB,iBAAO,UAAU,CAAC;AAAA,QACtB;AAAA,QACA,aAAa,SAAU,GAAG;AACtB,cAAI,OAAO,MAAM;AACb,gBAAI,EAAE,WAAW,CAAC;AACtB,iBAAO,aAAa,CAAC;AAAA,QACzB;AAAA,QACA,SAAS,SAAU,GAAG;AAClB,cAAI,OAAO,MAAM;AACb,gBAAI,EAAE,WAAW,CAAC;AACtB,iBAAO,QAAQ,CAAC;AAAA,QACpB;AAAA,QACA,OAAO,SAAU,GAAG;AAChB,cAAI,OAAO,MAAM;AACb,gBAAI,EAAE,WAAW,CAAC;AACtB,iBAAO,OAAO,CAAC;AAAA,QACnB;AAAA,QACA,QAAQ,SAAU,GAAG;AACjB,cAAI,OAAO,MAAM;AACb,gBAAI,EAAE,WAAW,CAAC;AACtB,iBAAO,QAAQ,CAAC;AAAA,QACpB;AAAA,QACA,aAAa,SAAU,KAAK;AACxB,cAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,mBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACjC,gBAAI,CAAC,UAAU,IAAI,WAAW,CAAC,CAAC,EAAG,QAAO;AAAA,UAC9C;AACA,iBAAO;AAAA,QACX;AAAA,QACA,eAAe,SAAU,KAAK;AAC1B,cAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,mBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACjC,gBAAI,CAAC,UAAU,IAAI,WAAW,CAAC,CAAC,EAAG,QAAO;AAAA,UAC9C;AACA,iBAAO;AAAA,QACX;AAAA,QACA,gBAAgB,SAAU,KAAK;AAC3B,cAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,mBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACjC,gBAAI,CAAC,aAAa,IAAI,WAAW,CAAC,CAAC,EAAG,QAAO;AAAA,UACjD;AACA,iBAAO;AAAA,QACX;AAAA,QACA,YAAY,SAAU,KAAK;AACvB,cAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,mBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACjC,gBAAI,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC,EAAG,QAAO;AAAA,UAC5C;AACA,iBAAO;AAAA,QACX;AAAA,QACA,UAAU,SAAU,KAAK;AACrB,cAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,mBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACjC,gBAAI,CAAC,OAAO,IAAI,WAAW,CAAC,CAAC,EAAG,QAAO;AAAA,UAC3C;AACA,iBAAO;AAAA,QACX;AAAA,QACA,WAAW,SAAU,KAAK;AACtB,cAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,mBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACjC,gBAAI,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC,EAAG,QAAO;AAAA,UAC5C;AACA,iBAAO;AAAA,QACX;AAAA,MACJ;AAEA,UAAI,OAAO,UAAU,cAAc,OAAO,KAAK;AAC3C,eAAO,WAAY;AACf,iBAAO;AAAA,QACX,CAAC;AAAA,MACL,WAAW,OAAO,WAAW,aAAa;AACtC,eAAO,UAAU;AAAA,MACrB,OAAO;AACH,eAAO,SAAS;AAAA,MACpB;AAAA,IACJ,GAAG;AAAA;AAAA;;;AC/hBH,aAAwB;", - "names": ["code", "hangul"] -} diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/parse5.js b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/parse5.js deleted file mode 100644 index 99dda93..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/parse5.js +++ /dev/null @@ -1,8173 +0,0 @@ -// @ts-nocheck -var __defProp = Object.defineProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; - -// node_modules/parse5/dist/common/unicode.js -var UNDEFINED_CODE_POINTS = /* @__PURE__ */ new Set([ - 65534, - 65535, - 131070, - 131071, - 196606, - 196607, - 262142, - 262143, - 327678, - 327679, - 393214, - 393215, - 458750, - 458751, - 524286, - 524287, - 589822, - 589823, - 655358, - 655359, - 720894, - 720895, - 786430, - 786431, - 851966, - 851967, - 917502, - 917503, - 983038, - 983039, - 1048574, - 1048575, - 1114110, - 1114111 -]); -var REPLACEMENT_CHARACTER = "\uFFFD"; -var CODE_POINTS; -(function(CODE_POINTS2) { - CODE_POINTS2[CODE_POINTS2["EOF"] = -1] = "EOF"; - CODE_POINTS2[CODE_POINTS2["NULL"] = 0] = "NULL"; - CODE_POINTS2[CODE_POINTS2["TABULATION"] = 9] = "TABULATION"; - CODE_POINTS2[CODE_POINTS2["CARRIAGE_RETURN"] = 13] = "CARRIAGE_RETURN"; - CODE_POINTS2[CODE_POINTS2["LINE_FEED"] = 10] = "LINE_FEED"; - CODE_POINTS2[CODE_POINTS2["FORM_FEED"] = 12] = "FORM_FEED"; - CODE_POINTS2[CODE_POINTS2["SPACE"] = 32] = "SPACE"; - CODE_POINTS2[CODE_POINTS2["EXCLAMATION_MARK"] = 33] = "EXCLAMATION_MARK"; - CODE_POINTS2[CODE_POINTS2["QUOTATION_MARK"] = 34] = "QUOTATION_MARK"; - CODE_POINTS2[CODE_POINTS2["NUMBER_SIGN"] = 35] = "NUMBER_SIGN"; - CODE_POINTS2[CODE_POINTS2["AMPERSAND"] = 38] = "AMPERSAND"; - CODE_POINTS2[CODE_POINTS2["APOSTROPHE"] = 39] = "APOSTROPHE"; - CODE_POINTS2[CODE_POINTS2["HYPHEN_MINUS"] = 45] = "HYPHEN_MINUS"; - CODE_POINTS2[CODE_POINTS2["SOLIDUS"] = 47] = "SOLIDUS"; - CODE_POINTS2[CODE_POINTS2["DIGIT_0"] = 48] = "DIGIT_0"; - CODE_POINTS2[CODE_POINTS2["DIGIT_9"] = 57] = "DIGIT_9"; - CODE_POINTS2[CODE_POINTS2["SEMICOLON"] = 59] = "SEMICOLON"; - CODE_POINTS2[CODE_POINTS2["LESS_THAN_SIGN"] = 60] = "LESS_THAN_SIGN"; - CODE_POINTS2[CODE_POINTS2["EQUALS_SIGN"] = 61] = "EQUALS_SIGN"; - CODE_POINTS2[CODE_POINTS2["GREATER_THAN_SIGN"] = 62] = "GREATER_THAN_SIGN"; - CODE_POINTS2[CODE_POINTS2["QUESTION_MARK"] = 63] = "QUESTION_MARK"; - CODE_POINTS2[CODE_POINTS2["LATIN_CAPITAL_A"] = 65] = "LATIN_CAPITAL_A"; - CODE_POINTS2[CODE_POINTS2["LATIN_CAPITAL_F"] = 70] = "LATIN_CAPITAL_F"; - CODE_POINTS2[CODE_POINTS2["LATIN_CAPITAL_X"] = 88] = "LATIN_CAPITAL_X"; - CODE_POINTS2[CODE_POINTS2["LATIN_CAPITAL_Z"] = 90] = "LATIN_CAPITAL_Z"; - CODE_POINTS2[CODE_POINTS2["RIGHT_SQUARE_BRACKET"] = 93] = "RIGHT_SQUARE_BRACKET"; - CODE_POINTS2[CODE_POINTS2["GRAVE_ACCENT"] = 96] = "GRAVE_ACCENT"; - CODE_POINTS2[CODE_POINTS2["LATIN_SMALL_A"] = 97] = "LATIN_SMALL_A"; - CODE_POINTS2[CODE_POINTS2["LATIN_SMALL_F"] = 102] = "LATIN_SMALL_F"; - CODE_POINTS2[CODE_POINTS2["LATIN_SMALL_X"] = 120] = "LATIN_SMALL_X"; - CODE_POINTS2[CODE_POINTS2["LATIN_SMALL_Z"] = 122] = "LATIN_SMALL_Z"; - CODE_POINTS2[CODE_POINTS2["REPLACEMENT_CHARACTER"] = 65533] = "REPLACEMENT_CHARACTER"; -})(CODE_POINTS = CODE_POINTS || (CODE_POINTS = {})); -var SEQUENCES = { - DASH_DASH: "--", - CDATA_START: "[CDATA[", - DOCTYPE: "doctype", - SCRIPT: "script", - PUBLIC: "public", - SYSTEM: "system" -}; -function isSurrogate(cp) { - return cp >= 55296 && cp <= 57343; -} -function isSurrogatePair(cp) { - return cp >= 56320 && cp <= 57343; -} -function getSurrogatePairCodePoint(cp1, cp2) { - return (cp1 - 55296) * 1024 + 9216 + cp2; -} -function isControlCodePoint(cp) { - return cp !== 32 && cp !== 10 && cp !== 13 && cp !== 9 && cp !== 12 && cp >= 1 && cp <= 31 || cp >= 127 && cp <= 159; -} -function isUndefinedCodePoint(cp) { - return cp >= 64976 && cp <= 65007 || UNDEFINED_CODE_POINTS.has(cp); -} - -// node_modules/parse5/dist/common/error-codes.js -var ERR; -(function(ERR2) { - ERR2["controlCharacterInInputStream"] = "control-character-in-input-stream"; - ERR2["noncharacterInInputStream"] = "noncharacter-in-input-stream"; - ERR2["surrogateInInputStream"] = "surrogate-in-input-stream"; - ERR2["nonVoidHtmlElementStartTagWithTrailingSolidus"] = "non-void-html-element-start-tag-with-trailing-solidus"; - ERR2["endTagWithAttributes"] = "end-tag-with-attributes"; - ERR2["endTagWithTrailingSolidus"] = "end-tag-with-trailing-solidus"; - ERR2["unexpectedSolidusInTag"] = "unexpected-solidus-in-tag"; - ERR2["unexpectedNullCharacter"] = "unexpected-null-character"; - ERR2["unexpectedQuestionMarkInsteadOfTagName"] = "unexpected-question-mark-instead-of-tag-name"; - ERR2["invalidFirstCharacterOfTagName"] = "invalid-first-character-of-tag-name"; - ERR2["unexpectedEqualsSignBeforeAttributeName"] = "unexpected-equals-sign-before-attribute-name"; - ERR2["missingEndTagName"] = "missing-end-tag-name"; - ERR2["unexpectedCharacterInAttributeName"] = "unexpected-character-in-attribute-name"; - ERR2["unknownNamedCharacterReference"] = "unknown-named-character-reference"; - ERR2["missingSemicolonAfterCharacterReference"] = "missing-semicolon-after-character-reference"; - ERR2["unexpectedCharacterAfterDoctypeSystemIdentifier"] = "unexpected-character-after-doctype-system-identifier"; - ERR2["unexpectedCharacterInUnquotedAttributeValue"] = "unexpected-character-in-unquoted-attribute-value"; - ERR2["eofBeforeTagName"] = "eof-before-tag-name"; - ERR2["eofInTag"] = "eof-in-tag"; - ERR2["missingAttributeValue"] = "missing-attribute-value"; - ERR2["missingWhitespaceBetweenAttributes"] = "missing-whitespace-between-attributes"; - ERR2["missingWhitespaceAfterDoctypePublicKeyword"] = "missing-whitespace-after-doctype-public-keyword"; - ERR2["missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers"] = "missing-whitespace-between-doctype-public-and-system-identifiers"; - ERR2["missingWhitespaceAfterDoctypeSystemKeyword"] = "missing-whitespace-after-doctype-system-keyword"; - ERR2["missingQuoteBeforeDoctypePublicIdentifier"] = "missing-quote-before-doctype-public-identifier"; - ERR2["missingQuoteBeforeDoctypeSystemIdentifier"] = "missing-quote-before-doctype-system-identifier"; - ERR2["missingDoctypePublicIdentifier"] = "missing-doctype-public-identifier"; - ERR2["missingDoctypeSystemIdentifier"] = "missing-doctype-system-identifier"; - ERR2["abruptDoctypePublicIdentifier"] = "abrupt-doctype-public-identifier"; - ERR2["abruptDoctypeSystemIdentifier"] = "abrupt-doctype-system-identifier"; - ERR2["cdataInHtmlContent"] = "cdata-in-html-content"; - ERR2["incorrectlyOpenedComment"] = "incorrectly-opened-comment"; - ERR2["eofInScriptHtmlCommentLikeText"] = "eof-in-script-html-comment-like-text"; - ERR2["eofInDoctype"] = "eof-in-doctype"; - ERR2["nestedComment"] = "nested-comment"; - ERR2["abruptClosingOfEmptyComment"] = "abrupt-closing-of-empty-comment"; - ERR2["eofInComment"] = "eof-in-comment"; - ERR2["incorrectlyClosedComment"] = "incorrectly-closed-comment"; - ERR2["eofInCdata"] = "eof-in-cdata"; - ERR2["absenceOfDigitsInNumericCharacterReference"] = "absence-of-digits-in-numeric-character-reference"; - ERR2["nullCharacterReference"] = "null-character-reference"; - ERR2["surrogateCharacterReference"] = "surrogate-character-reference"; - ERR2["characterReferenceOutsideUnicodeRange"] = "character-reference-outside-unicode-range"; - ERR2["controlCharacterReference"] = "control-character-reference"; - ERR2["noncharacterCharacterReference"] = "noncharacter-character-reference"; - ERR2["missingWhitespaceBeforeDoctypeName"] = "missing-whitespace-before-doctype-name"; - ERR2["missingDoctypeName"] = "missing-doctype-name"; - ERR2["invalidCharacterSequenceAfterDoctypeName"] = "invalid-character-sequence-after-doctype-name"; - ERR2["duplicateAttribute"] = "duplicate-attribute"; - ERR2["nonConformingDoctype"] = "non-conforming-doctype"; - ERR2["missingDoctype"] = "missing-doctype"; - ERR2["misplacedDoctype"] = "misplaced-doctype"; - ERR2["endTagWithoutMatchingOpenElement"] = "end-tag-without-matching-open-element"; - ERR2["closingOfElementWithOpenChildElements"] = "closing-of-element-with-open-child-elements"; - ERR2["disallowedContentInNoscriptInHead"] = "disallowed-content-in-noscript-in-head"; - ERR2["openElementsLeftAfterEof"] = "open-elements-left-after-eof"; - ERR2["abandonedHeadElementChild"] = "abandoned-head-element-child"; - ERR2["misplacedStartTagForHeadElement"] = "misplaced-start-tag-for-head-element"; - ERR2["nestedNoscriptInHead"] = "nested-noscript-in-head"; - ERR2["eofInElementThatCanContainOnlyText"] = "eof-in-element-that-can-contain-only-text"; -})(ERR = ERR || (ERR = {})); - -// node_modules/parse5/dist/tokenizer/preprocessor.js -var DEFAULT_BUFFER_WATERLINE = 1 << 16; -var Preprocessor = class { - constructor(handler) { - this.handler = handler; - this.html = ""; - this.pos = -1; - this.lastGapPos = -2; - this.gapStack = []; - this.skipNextNewLine = false; - this.lastChunkWritten = false; - this.endOfChunkHit = false; - this.bufferWaterline = DEFAULT_BUFFER_WATERLINE; - this.isEol = false; - this.lineStartPos = 0; - this.droppedBufferSize = 0; - this.line = 1; - this.lastErrOffset = -1; - } - /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */ - get col() { - return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos); - } - get offset() { - return this.droppedBufferSize + this.pos; - } - getError(code) { - const { line, col, offset } = this; - return { - code, - startLine: line, - endLine: line, - startCol: col, - endCol: col, - startOffset: offset, - endOffset: offset - }; - } - _err(code) { - if (this.handler.onParseError && this.lastErrOffset !== this.offset) { - this.lastErrOffset = this.offset; - this.handler.onParseError(this.getError(code)); - } - } - _addGap() { - this.gapStack.push(this.lastGapPos); - this.lastGapPos = this.pos; - } - _processSurrogate(cp) { - if (this.pos !== this.html.length - 1) { - const nextCp = this.html.charCodeAt(this.pos + 1); - if (isSurrogatePair(nextCp)) { - this.pos++; - this._addGap(); - return getSurrogatePairCodePoint(cp, nextCp); - } - } else if (!this.lastChunkWritten) { - this.endOfChunkHit = true; - return CODE_POINTS.EOF; - } - this._err(ERR.surrogateInInputStream); - return cp; - } - willDropParsedChunk() { - return this.pos > this.bufferWaterline; - } - dropParsedChunk() { - if (this.willDropParsedChunk()) { - this.html = this.html.substring(this.pos); - this.lineStartPos -= this.pos; - this.droppedBufferSize += this.pos; - this.pos = 0; - this.lastGapPos = -2; - this.gapStack.length = 0; - } - } - write(chunk, isLastChunk) { - if (this.html.length > 0) { - this.html += chunk; - } else { - this.html = chunk; - } - this.endOfChunkHit = false; - this.lastChunkWritten = isLastChunk; - } - insertHtmlAtCurrentPos(chunk) { - this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1); - this.endOfChunkHit = false; - } - startsWith(pattern, caseSensitive) { - if (this.pos + pattern.length > this.html.length) { - this.endOfChunkHit = !this.lastChunkWritten; - return false; - } - if (caseSensitive) { - return this.html.startsWith(pattern, this.pos); - } - for (let i = 0; i < pattern.length; i++) { - const cp = this.html.charCodeAt(this.pos + i) | 32; - if (cp !== pattern.charCodeAt(i)) { - return false; - } - } - return true; - } - peek(offset) { - const pos = this.pos + offset; - if (pos >= this.html.length) { - this.endOfChunkHit = !this.lastChunkWritten; - return CODE_POINTS.EOF; - } - const code = this.html.charCodeAt(pos); - return code === CODE_POINTS.CARRIAGE_RETURN ? CODE_POINTS.LINE_FEED : code; - } - advance() { - this.pos++; - if (this.isEol) { - this.isEol = false; - this.line++; - this.lineStartPos = this.pos; - } - if (this.pos >= this.html.length) { - this.endOfChunkHit = !this.lastChunkWritten; - return CODE_POINTS.EOF; - } - let cp = this.html.charCodeAt(this.pos); - if (cp === CODE_POINTS.CARRIAGE_RETURN) { - this.isEol = true; - this.skipNextNewLine = true; - return CODE_POINTS.LINE_FEED; - } - if (cp === CODE_POINTS.LINE_FEED) { - this.isEol = true; - if (this.skipNextNewLine) { - this.line--; - this.skipNextNewLine = false; - this._addGap(); - return this.advance(); - } - } - this.skipNextNewLine = false; - if (isSurrogate(cp)) { - cp = this._processSurrogate(cp); - } - const isCommonValidRange = this.handler.onParseError === null || cp > 31 && cp < 127 || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.CARRIAGE_RETURN || cp > 159 && cp < 64976; - if (!isCommonValidRange) { - this._checkForProblematicCharacters(cp); - } - return cp; - } - _checkForProblematicCharacters(cp) { - if (isControlCodePoint(cp)) { - this._err(ERR.controlCharacterInInputStream); - } else if (isUndefinedCodePoint(cp)) { - this._err(ERR.noncharacterInInputStream); - } - } - retreat(count) { - this.pos -= count; - while (this.pos < this.lastGapPos) { - this.lastGapPos = this.gapStack.pop(); - this.pos--; - } - this.isEol = false; - } -}; - -// node_modules/parse5/dist/common/token.js -var token_exports = {}; -__export(token_exports, { - TokenType: () => TokenType, - getTokenAttr: () => getTokenAttr -}); -var TokenType; -(function(TokenType2) { - TokenType2[TokenType2["CHARACTER"] = 0] = "CHARACTER"; - TokenType2[TokenType2["NULL_CHARACTER"] = 1] = "NULL_CHARACTER"; - TokenType2[TokenType2["WHITESPACE_CHARACTER"] = 2] = "WHITESPACE_CHARACTER"; - TokenType2[TokenType2["START_TAG"] = 3] = "START_TAG"; - TokenType2[TokenType2["END_TAG"] = 4] = "END_TAG"; - TokenType2[TokenType2["COMMENT"] = 5] = "COMMENT"; - TokenType2[TokenType2["DOCTYPE"] = 6] = "DOCTYPE"; - TokenType2[TokenType2["EOF"] = 7] = "EOF"; - TokenType2[TokenType2["HIBERNATION"] = 8] = "HIBERNATION"; -})(TokenType = TokenType || (TokenType = {})); -function getTokenAttr(token, attrName) { - for (let i = token.attrs.length - 1; i >= 0; i--) { - if (token.attrs[i].name === attrName) { - return token.attrs[i].value; - } - } - return null; -} - -// node_modules/entities/lib/esm/generated/decode-data-html.js -var decode_data_html_default = new Uint16Array( - // prettier-ignore - '\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map((c) => c.charCodeAt(0)) -); - -// node_modules/entities/lib/esm/generated/decode-data-xml.js -var decode_data_xml_default = new Uint16Array( - // prettier-ignore - "\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map((c) => c.charCodeAt(0)) -); - -// node_modules/entities/lib/esm/decode_codepoint.js -var _a; -var decodeMap = /* @__PURE__ */ new Map([ - [0, 65533], - // C1 Unicode control character reference replacements - [128, 8364], - [130, 8218], - [131, 402], - [132, 8222], - [133, 8230], - [134, 8224], - [135, 8225], - [136, 710], - [137, 8240], - [138, 352], - [139, 8249], - [140, 338], - [142, 381], - [145, 8216], - [146, 8217], - [147, 8220], - [148, 8221], - [149, 8226], - [150, 8211], - [151, 8212], - [152, 732], - [153, 8482], - [154, 353], - [155, 8250], - [156, 339], - [158, 382], - [159, 376] -]); -var fromCodePoint = ( - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins - (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function(codePoint) { - let output = ""; - if (codePoint > 65535) { - codePoint -= 65536; - output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296); - codePoint = 56320 | codePoint & 1023; - } - output += String.fromCharCode(codePoint); - return output; - } -); -function replaceCodePoint(codePoint) { - var _a2; - if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) { - return 65533; - } - return (_a2 = decodeMap.get(codePoint)) !== null && _a2 !== void 0 ? _a2 : codePoint; -} - -// node_modules/entities/lib/esm/decode.js -var CharCodes; -(function(CharCodes2) { - CharCodes2[CharCodes2["NUM"] = 35] = "NUM"; - CharCodes2[CharCodes2["SEMI"] = 59] = "SEMI"; - CharCodes2[CharCodes2["EQUALS"] = 61] = "EQUALS"; - CharCodes2[CharCodes2["ZERO"] = 48] = "ZERO"; - CharCodes2[CharCodes2["NINE"] = 57] = "NINE"; - CharCodes2[CharCodes2["LOWER_A"] = 97] = "LOWER_A"; - CharCodes2[CharCodes2["LOWER_F"] = 102] = "LOWER_F"; - CharCodes2[CharCodes2["LOWER_X"] = 120] = "LOWER_X"; - CharCodes2[CharCodes2["LOWER_Z"] = 122] = "LOWER_Z"; - CharCodes2[CharCodes2["UPPER_A"] = 65] = "UPPER_A"; - CharCodes2[CharCodes2["UPPER_F"] = 70] = "UPPER_F"; - CharCodes2[CharCodes2["UPPER_Z"] = 90] = "UPPER_Z"; -})(CharCodes || (CharCodes = {})); -var TO_LOWER_BIT = 32; -var BinTrieFlags; -(function(BinTrieFlags2) { - BinTrieFlags2[BinTrieFlags2["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; - BinTrieFlags2[BinTrieFlags2["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH"; - BinTrieFlags2[BinTrieFlags2["JUMP_TABLE"] = 127] = "JUMP_TABLE"; -})(BinTrieFlags || (BinTrieFlags = {})); -function isNumber(code) { - return code >= CharCodes.ZERO && code <= CharCodes.NINE; -} -function isHexadecimalCharacter(code) { - return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F; -} -function isAsciiAlphaNumeric(code) { - return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z || isNumber(code); -} -function isEntityInAttributeInvalidEnd(code) { - return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code); -} -var EntityDecoderState; -(function(EntityDecoderState2) { - EntityDecoderState2[EntityDecoderState2["EntityStart"] = 0] = "EntityStart"; - EntityDecoderState2[EntityDecoderState2["NumericStart"] = 1] = "NumericStart"; - EntityDecoderState2[EntityDecoderState2["NumericDecimal"] = 2] = "NumericDecimal"; - EntityDecoderState2[EntityDecoderState2["NumericHex"] = 3] = "NumericHex"; - EntityDecoderState2[EntityDecoderState2["NamedEntity"] = 4] = "NamedEntity"; -})(EntityDecoderState || (EntityDecoderState = {})); -var DecodingMode; -(function(DecodingMode2) { - DecodingMode2[DecodingMode2["Legacy"] = 0] = "Legacy"; - DecodingMode2[DecodingMode2["Strict"] = 1] = "Strict"; - DecodingMode2[DecodingMode2["Attribute"] = 2] = "Attribute"; -})(DecodingMode || (DecodingMode = {})); -var EntityDecoder = class { - constructor(decodeTree, emitCodePoint, errors) { - this.decodeTree = decodeTree; - this.emitCodePoint = emitCodePoint; - this.errors = errors; - this.state = EntityDecoderState.EntityStart; - this.consumed = 1; - this.result = 0; - this.treeIndex = 0; - this.excess = 1; - this.decodeMode = DecodingMode.Strict; - } - /** Resets the instance to make it reusable. */ - startEntity(decodeMode) { - this.decodeMode = decodeMode; - this.state = EntityDecoderState.EntityStart; - this.result = 0; - this.treeIndex = 0; - this.excess = 1; - this.consumed = 1; - } - /** - * Write an entity to the decoder. This can be called multiple times with partial entities. - * If the entity is incomplete, the decoder will return -1. - * - * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the - * entity is incomplete, and resume when the next string is written. - * - * @param string The string containing the entity (or a continuation of the entity). - * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - write(str, offset) { - switch (this.state) { - case EntityDecoderState.EntityStart: { - if (str.charCodeAt(offset) === CharCodes.NUM) { - this.state = EntityDecoderState.NumericStart; - this.consumed += 1; - return this.stateNumericStart(str, offset + 1); - } - this.state = EntityDecoderState.NamedEntity; - return this.stateNamedEntity(str, offset); - } - case EntityDecoderState.NumericStart: { - return this.stateNumericStart(str, offset); - } - case EntityDecoderState.NumericDecimal: { - return this.stateNumericDecimal(str, offset); - } - case EntityDecoderState.NumericHex: { - return this.stateNumericHex(str, offset); - } - case EntityDecoderState.NamedEntity: { - return this.stateNamedEntity(str, offset); - } - } - } - /** - * Switches between the numeric decimal and hexadecimal states. - * - * Equivalent to the `Numeric character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericStart(str, offset) { - if (offset >= str.length) { - return -1; - } - if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) { - this.state = EntityDecoderState.NumericHex; - this.consumed += 1; - return this.stateNumericHex(str, offset + 1); - } - this.state = EntityDecoderState.NumericDecimal; - return this.stateNumericDecimal(str, offset); - } - addToNumericResult(str, start, end, base) { - if (start !== end) { - const digitCount = end - start; - this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base); - this.consumed += digitCount; - } - } - /** - * Parses a hexadecimal numeric entity. - * - * Equivalent to the `Hexademical character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericHex(str, offset) { - const startIdx = offset; - while (offset < str.length) { - const char = str.charCodeAt(offset); - if (isNumber(char) || isHexadecimalCharacter(char)) { - offset += 1; - } else { - this.addToNumericResult(str, startIdx, offset, 16); - return this.emitNumericEntity(char, 3); - } - } - this.addToNumericResult(str, startIdx, offset, 16); - return -1; - } - /** - * Parses a decimal numeric entity. - * - * Equivalent to the `Decimal character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericDecimal(str, offset) { - const startIdx = offset; - while (offset < str.length) { - const char = str.charCodeAt(offset); - if (isNumber(char)) { - offset += 1; - } else { - this.addToNumericResult(str, startIdx, offset, 10); - return this.emitNumericEntity(char, 2); - } - } - this.addToNumericResult(str, startIdx, offset, 10); - return -1; - } - /** - * Validate and emit a numeric entity. - * - * Implements the logic from the `Hexademical character reference start - * state` and `Numeric character reference end state` in the HTML spec. - * - * @param lastCp The last code point of the entity. Used to see if the - * entity was terminated with a semicolon. - * @param expectedLength The minimum number of characters that should be - * consumed. Used to validate that at least one digit - * was consumed. - * @returns The number of characters that were consumed. - */ - emitNumericEntity(lastCp, expectedLength) { - var _a2; - if (this.consumed <= expectedLength) { - (_a2 = this.errors) === null || _a2 === void 0 ? void 0 : _a2.absenceOfDigitsInNumericCharacterReference(this.consumed); - return 0; - } - if (lastCp === CharCodes.SEMI) { - this.consumed += 1; - } else if (this.decodeMode === DecodingMode.Strict) { - return 0; - } - this.emitCodePoint(replaceCodePoint(this.result), this.consumed); - if (this.errors) { - if (lastCp !== CharCodes.SEMI) { - this.errors.missingSemicolonAfterCharacterReference(); - } - this.errors.validateNumericCharacterReference(this.result); - } - return this.consumed; - } - /** - * Parses a named entity. - * - * Equivalent to the `Named character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNamedEntity(str, offset) { - const { decodeTree } = this; - let current = decodeTree[this.treeIndex]; - let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; - for (; offset < str.length; offset++, this.excess++) { - const char = str.charCodeAt(offset); - this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); - if (this.treeIndex < 0) { - return this.result === 0 || // If we are parsing an attribute - this.decodeMode === DecodingMode.Attribute && // We shouldn't have consumed any characters after the entity, - (valueLength === 0 || // And there should be no invalid characters. - isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity(); - } - current = decodeTree[this.treeIndex]; - valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; - if (valueLength !== 0) { - if (char === CharCodes.SEMI) { - return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); - } - if (this.decodeMode !== DecodingMode.Strict) { - this.result = this.treeIndex; - this.consumed += this.excess; - this.excess = 0; - } - } - } - return -1; - } - /** - * Emit a named entity that was not terminated with a semicolon. - * - * @returns The number of characters consumed. - */ - emitNotTerminatedNamedEntity() { - var _a2; - const { result, decodeTree } = this; - const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14; - this.emitNamedEntityData(result, valueLength, this.consumed); - (_a2 = this.errors) === null || _a2 === void 0 ? void 0 : _a2.missingSemicolonAfterCharacterReference(); - return this.consumed; - } - /** - * Emit a named entity. - * - * @param result The index of the entity in the decode tree. - * @param valueLength The number of bytes in the entity. - * @param consumed The number of characters consumed. - * - * @returns The number of characters consumed. - */ - emitNamedEntityData(result, valueLength, consumed) { - const { decodeTree } = this; - this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH : decodeTree[result + 1], consumed); - if (valueLength === 3) { - this.emitCodePoint(decodeTree[result + 2], consumed); - } - return consumed; - } - /** - * Signal to the parser that the end of the input was reached. - * - * Remaining data will be emitted and relevant errors will be produced. - * - * @returns The number of characters consumed. - */ - end() { - var _a2; - switch (this.state) { - case EntityDecoderState.NamedEntity: { - return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0; - } - case EntityDecoderState.NumericDecimal: { - return this.emitNumericEntity(0, 2); - } - case EntityDecoderState.NumericHex: { - return this.emitNumericEntity(0, 3); - } - case EntityDecoderState.NumericStart: { - (_a2 = this.errors) === null || _a2 === void 0 ? void 0 : _a2.absenceOfDigitsInNumericCharacterReference(this.consumed); - return 0; - } - case EntityDecoderState.EntityStart: { - return 0; - } - } - } -}; -function getDecoder(decodeTree) { - let ret = ""; - const decoder = new EntityDecoder(decodeTree, (str) => ret += fromCodePoint(str)); - return function decodeWithTrie(str, decodeMode) { - let lastIndex = 0; - let offset = 0; - while ((offset = str.indexOf("&", offset)) >= 0) { - ret += str.slice(lastIndex, offset); - decoder.startEntity(decodeMode); - const len = decoder.write( - str, - // Skip the "&" - offset + 1 - ); - if (len < 0) { - lastIndex = offset + decoder.end(); - break; - } - lastIndex = offset + len; - offset = len === 0 ? lastIndex + 1 : lastIndex; - } - const result = ret + str.slice(lastIndex); - ret = ""; - return result; - }; -} -function determineBranch(decodeTree, current, nodeIdx, char) { - const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; - const jumpOffset = current & BinTrieFlags.JUMP_TABLE; - if (branchCount === 0) { - return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1; - } - if (jumpOffset) { - const value = char - jumpOffset; - return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1; - } - let lo = nodeIdx; - let hi = lo + branchCount - 1; - while (lo <= hi) { - const mid = lo + hi >>> 1; - const midVal = decodeTree[mid]; - if (midVal < char) { - lo = mid + 1; - } else if (midVal > char) { - hi = mid - 1; - } else { - return decodeTree[mid + branchCount]; - } - } - return -1; -} -var htmlDecoder = getDecoder(decode_data_html_default); -var xmlDecoder = getDecoder(decode_data_xml_default); - -// node_modules/parse5/dist/common/html.js -var html_exports = {}; -__export(html_exports, { - ATTRS: () => ATTRS, - DOCUMENT_MODE: () => DOCUMENT_MODE, - NS: () => NS, - SPECIAL_ELEMENTS: () => SPECIAL_ELEMENTS, - TAG_ID: () => TAG_ID, - TAG_NAMES: () => TAG_NAMES, - getTagID: () => getTagID, - hasUnescapedText: () => hasUnescapedText, - isNumberedHeader: () => isNumberedHeader -}); -var NS; -(function(NS2) { - NS2["HTML"] = "http://www.w3.org/1999/xhtml"; - NS2["MATHML"] = "http://www.w3.org/1998/Math/MathML"; - NS2["SVG"] = "http://www.w3.org/2000/svg"; - NS2["XLINK"] = "http://www.w3.org/1999/xlink"; - NS2["XML"] = "http://www.w3.org/XML/1998/namespace"; - NS2["XMLNS"] = "http://www.w3.org/2000/xmlns/"; -})(NS = NS || (NS = {})); -var ATTRS; -(function(ATTRS2) { - ATTRS2["TYPE"] = "type"; - ATTRS2["ACTION"] = "action"; - ATTRS2["ENCODING"] = "encoding"; - ATTRS2["PROMPT"] = "prompt"; - ATTRS2["NAME"] = "name"; - ATTRS2["COLOR"] = "color"; - ATTRS2["FACE"] = "face"; - ATTRS2["SIZE"] = "size"; -})(ATTRS = ATTRS || (ATTRS = {})); -var DOCUMENT_MODE; -(function(DOCUMENT_MODE2) { - DOCUMENT_MODE2["NO_QUIRKS"] = "no-quirks"; - DOCUMENT_MODE2["QUIRKS"] = "quirks"; - DOCUMENT_MODE2["LIMITED_QUIRKS"] = "limited-quirks"; -})(DOCUMENT_MODE = DOCUMENT_MODE || (DOCUMENT_MODE = {})); -var TAG_NAMES; -(function(TAG_NAMES2) { - TAG_NAMES2["A"] = "a"; - TAG_NAMES2["ADDRESS"] = "address"; - TAG_NAMES2["ANNOTATION_XML"] = "annotation-xml"; - TAG_NAMES2["APPLET"] = "applet"; - TAG_NAMES2["AREA"] = "area"; - TAG_NAMES2["ARTICLE"] = "article"; - TAG_NAMES2["ASIDE"] = "aside"; - TAG_NAMES2["B"] = "b"; - TAG_NAMES2["BASE"] = "base"; - TAG_NAMES2["BASEFONT"] = "basefont"; - TAG_NAMES2["BGSOUND"] = "bgsound"; - TAG_NAMES2["BIG"] = "big"; - TAG_NAMES2["BLOCKQUOTE"] = "blockquote"; - TAG_NAMES2["BODY"] = "body"; - TAG_NAMES2["BR"] = "br"; - TAG_NAMES2["BUTTON"] = "button"; - TAG_NAMES2["CAPTION"] = "caption"; - TAG_NAMES2["CENTER"] = "center"; - TAG_NAMES2["CODE"] = "code"; - TAG_NAMES2["COL"] = "col"; - TAG_NAMES2["COLGROUP"] = "colgroup"; - TAG_NAMES2["DD"] = "dd"; - TAG_NAMES2["DESC"] = "desc"; - TAG_NAMES2["DETAILS"] = "details"; - TAG_NAMES2["DIALOG"] = "dialog"; - TAG_NAMES2["DIR"] = "dir"; - TAG_NAMES2["DIV"] = "div"; - TAG_NAMES2["DL"] = "dl"; - TAG_NAMES2["DT"] = "dt"; - TAG_NAMES2["EM"] = "em"; - TAG_NAMES2["EMBED"] = "embed"; - TAG_NAMES2["FIELDSET"] = "fieldset"; - TAG_NAMES2["FIGCAPTION"] = "figcaption"; - TAG_NAMES2["FIGURE"] = "figure"; - TAG_NAMES2["FONT"] = "font"; - TAG_NAMES2["FOOTER"] = "footer"; - TAG_NAMES2["FOREIGN_OBJECT"] = "foreignObject"; - TAG_NAMES2["FORM"] = "form"; - TAG_NAMES2["FRAME"] = "frame"; - TAG_NAMES2["FRAMESET"] = "frameset"; - TAG_NAMES2["H1"] = "h1"; - TAG_NAMES2["H2"] = "h2"; - TAG_NAMES2["H3"] = "h3"; - TAG_NAMES2["H4"] = "h4"; - TAG_NAMES2["H5"] = "h5"; - TAG_NAMES2["H6"] = "h6"; - TAG_NAMES2["HEAD"] = "head"; - TAG_NAMES2["HEADER"] = "header"; - TAG_NAMES2["HGROUP"] = "hgroup"; - TAG_NAMES2["HR"] = "hr"; - TAG_NAMES2["HTML"] = "html"; - TAG_NAMES2["I"] = "i"; - TAG_NAMES2["IMG"] = "img"; - TAG_NAMES2["IMAGE"] = "image"; - TAG_NAMES2["INPUT"] = "input"; - TAG_NAMES2["IFRAME"] = "iframe"; - TAG_NAMES2["KEYGEN"] = "keygen"; - TAG_NAMES2["LABEL"] = "label"; - TAG_NAMES2["LI"] = "li"; - TAG_NAMES2["LINK"] = "link"; - TAG_NAMES2["LISTING"] = "listing"; - TAG_NAMES2["MAIN"] = "main"; - TAG_NAMES2["MALIGNMARK"] = "malignmark"; - TAG_NAMES2["MARQUEE"] = "marquee"; - TAG_NAMES2["MATH"] = "math"; - TAG_NAMES2["MENU"] = "menu"; - TAG_NAMES2["META"] = "meta"; - TAG_NAMES2["MGLYPH"] = "mglyph"; - TAG_NAMES2["MI"] = "mi"; - TAG_NAMES2["MO"] = "mo"; - TAG_NAMES2["MN"] = "mn"; - TAG_NAMES2["MS"] = "ms"; - TAG_NAMES2["MTEXT"] = "mtext"; - TAG_NAMES2["NAV"] = "nav"; - TAG_NAMES2["NOBR"] = "nobr"; - TAG_NAMES2["NOFRAMES"] = "noframes"; - TAG_NAMES2["NOEMBED"] = "noembed"; - TAG_NAMES2["NOSCRIPT"] = "noscript"; - TAG_NAMES2["OBJECT"] = "object"; - TAG_NAMES2["OL"] = "ol"; - TAG_NAMES2["OPTGROUP"] = "optgroup"; - TAG_NAMES2["OPTION"] = "option"; - TAG_NAMES2["P"] = "p"; - TAG_NAMES2["PARAM"] = "param"; - TAG_NAMES2["PLAINTEXT"] = "plaintext"; - TAG_NAMES2["PRE"] = "pre"; - TAG_NAMES2["RB"] = "rb"; - TAG_NAMES2["RP"] = "rp"; - TAG_NAMES2["RT"] = "rt"; - TAG_NAMES2["RTC"] = "rtc"; - TAG_NAMES2["RUBY"] = "ruby"; - TAG_NAMES2["S"] = "s"; - TAG_NAMES2["SCRIPT"] = "script"; - TAG_NAMES2["SECTION"] = "section"; - TAG_NAMES2["SELECT"] = "select"; - TAG_NAMES2["SOURCE"] = "source"; - TAG_NAMES2["SMALL"] = "small"; - TAG_NAMES2["SPAN"] = "span"; - TAG_NAMES2["STRIKE"] = "strike"; - TAG_NAMES2["STRONG"] = "strong"; - TAG_NAMES2["STYLE"] = "style"; - TAG_NAMES2["SUB"] = "sub"; - TAG_NAMES2["SUMMARY"] = "summary"; - TAG_NAMES2["SUP"] = "sup"; - TAG_NAMES2["TABLE"] = "table"; - TAG_NAMES2["TBODY"] = "tbody"; - TAG_NAMES2["TEMPLATE"] = "template"; - TAG_NAMES2["TEXTAREA"] = "textarea"; - TAG_NAMES2["TFOOT"] = "tfoot"; - TAG_NAMES2["TD"] = "td"; - TAG_NAMES2["TH"] = "th"; - TAG_NAMES2["THEAD"] = "thead"; - TAG_NAMES2["TITLE"] = "title"; - TAG_NAMES2["TR"] = "tr"; - TAG_NAMES2["TRACK"] = "track"; - TAG_NAMES2["TT"] = "tt"; - TAG_NAMES2["U"] = "u"; - TAG_NAMES2["UL"] = "ul"; - TAG_NAMES2["SVG"] = "svg"; - TAG_NAMES2["VAR"] = "var"; - TAG_NAMES2["WBR"] = "wbr"; - TAG_NAMES2["XMP"] = "xmp"; -})(TAG_NAMES = TAG_NAMES || (TAG_NAMES = {})); -var TAG_ID; -(function(TAG_ID2) { - TAG_ID2[TAG_ID2["UNKNOWN"] = 0] = "UNKNOWN"; - TAG_ID2[TAG_ID2["A"] = 1] = "A"; - TAG_ID2[TAG_ID2["ADDRESS"] = 2] = "ADDRESS"; - TAG_ID2[TAG_ID2["ANNOTATION_XML"] = 3] = "ANNOTATION_XML"; - TAG_ID2[TAG_ID2["APPLET"] = 4] = "APPLET"; - TAG_ID2[TAG_ID2["AREA"] = 5] = "AREA"; - TAG_ID2[TAG_ID2["ARTICLE"] = 6] = "ARTICLE"; - TAG_ID2[TAG_ID2["ASIDE"] = 7] = "ASIDE"; - TAG_ID2[TAG_ID2["B"] = 8] = "B"; - TAG_ID2[TAG_ID2["BASE"] = 9] = "BASE"; - TAG_ID2[TAG_ID2["BASEFONT"] = 10] = "BASEFONT"; - TAG_ID2[TAG_ID2["BGSOUND"] = 11] = "BGSOUND"; - TAG_ID2[TAG_ID2["BIG"] = 12] = "BIG"; - TAG_ID2[TAG_ID2["BLOCKQUOTE"] = 13] = "BLOCKQUOTE"; - TAG_ID2[TAG_ID2["BODY"] = 14] = "BODY"; - TAG_ID2[TAG_ID2["BR"] = 15] = "BR"; - TAG_ID2[TAG_ID2["BUTTON"] = 16] = "BUTTON"; - TAG_ID2[TAG_ID2["CAPTION"] = 17] = "CAPTION"; - TAG_ID2[TAG_ID2["CENTER"] = 18] = "CENTER"; - TAG_ID2[TAG_ID2["CODE"] = 19] = "CODE"; - TAG_ID2[TAG_ID2["COL"] = 20] = "COL"; - TAG_ID2[TAG_ID2["COLGROUP"] = 21] = "COLGROUP"; - TAG_ID2[TAG_ID2["DD"] = 22] = "DD"; - TAG_ID2[TAG_ID2["DESC"] = 23] = "DESC"; - TAG_ID2[TAG_ID2["DETAILS"] = 24] = "DETAILS"; - TAG_ID2[TAG_ID2["DIALOG"] = 25] = "DIALOG"; - TAG_ID2[TAG_ID2["DIR"] = 26] = "DIR"; - TAG_ID2[TAG_ID2["DIV"] = 27] = "DIV"; - TAG_ID2[TAG_ID2["DL"] = 28] = "DL"; - TAG_ID2[TAG_ID2["DT"] = 29] = "DT"; - TAG_ID2[TAG_ID2["EM"] = 30] = "EM"; - TAG_ID2[TAG_ID2["EMBED"] = 31] = "EMBED"; - TAG_ID2[TAG_ID2["FIELDSET"] = 32] = "FIELDSET"; - TAG_ID2[TAG_ID2["FIGCAPTION"] = 33] = "FIGCAPTION"; - TAG_ID2[TAG_ID2["FIGURE"] = 34] = "FIGURE"; - TAG_ID2[TAG_ID2["FONT"] = 35] = "FONT"; - TAG_ID2[TAG_ID2["FOOTER"] = 36] = "FOOTER"; - TAG_ID2[TAG_ID2["FOREIGN_OBJECT"] = 37] = "FOREIGN_OBJECT"; - TAG_ID2[TAG_ID2["FORM"] = 38] = "FORM"; - TAG_ID2[TAG_ID2["FRAME"] = 39] = "FRAME"; - TAG_ID2[TAG_ID2["FRAMESET"] = 40] = "FRAMESET"; - TAG_ID2[TAG_ID2["H1"] = 41] = "H1"; - TAG_ID2[TAG_ID2["H2"] = 42] = "H2"; - TAG_ID2[TAG_ID2["H3"] = 43] = "H3"; - TAG_ID2[TAG_ID2["H4"] = 44] = "H4"; - TAG_ID2[TAG_ID2["H5"] = 45] = "H5"; - TAG_ID2[TAG_ID2["H6"] = 46] = "H6"; - TAG_ID2[TAG_ID2["HEAD"] = 47] = "HEAD"; - TAG_ID2[TAG_ID2["HEADER"] = 48] = "HEADER"; - TAG_ID2[TAG_ID2["HGROUP"] = 49] = "HGROUP"; - TAG_ID2[TAG_ID2["HR"] = 50] = "HR"; - TAG_ID2[TAG_ID2["HTML"] = 51] = "HTML"; - TAG_ID2[TAG_ID2["I"] = 52] = "I"; - TAG_ID2[TAG_ID2["IMG"] = 53] = "IMG"; - TAG_ID2[TAG_ID2["IMAGE"] = 54] = "IMAGE"; - TAG_ID2[TAG_ID2["INPUT"] = 55] = "INPUT"; - TAG_ID2[TAG_ID2["IFRAME"] = 56] = "IFRAME"; - TAG_ID2[TAG_ID2["KEYGEN"] = 57] = "KEYGEN"; - TAG_ID2[TAG_ID2["LABEL"] = 58] = "LABEL"; - TAG_ID2[TAG_ID2["LI"] = 59] = "LI"; - TAG_ID2[TAG_ID2["LINK"] = 60] = "LINK"; - TAG_ID2[TAG_ID2["LISTING"] = 61] = "LISTING"; - TAG_ID2[TAG_ID2["MAIN"] = 62] = "MAIN"; - TAG_ID2[TAG_ID2["MALIGNMARK"] = 63] = "MALIGNMARK"; - TAG_ID2[TAG_ID2["MARQUEE"] = 64] = "MARQUEE"; - TAG_ID2[TAG_ID2["MATH"] = 65] = "MATH"; - TAG_ID2[TAG_ID2["MENU"] = 66] = "MENU"; - TAG_ID2[TAG_ID2["META"] = 67] = "META"; - TAG_ID2[TAG_ID2["MGLYPH"] = 68] = "MGLYPH"; - TAG_ID2[TAG_ID2["MI"] = 69] = "MI"; - TAG_ID2[TAG_ID2["MO"] = 70] = "MO"; - TAG_ID2[TAG_ID2["MN"] = 71] = "MN"; - TAG_ID2[TAG_ID2["MS"] = 72] = "MS"; - TAG_ID2[TAG_ID2["MTEXT"] = 73] = "MTEXT"; - TAG_ID2[TAG_ID2["NAV"] = 74] = "NAV"; - TAG_ID2[TAG_ID2["NOBR"] = 75] = "NOBR"; - TAG_ID2[TAG_ID2["NOFRAMES"] = 76] = "NOFRAMES"; - TAG_ID2[TAG_ID2["NOEMBED"] = 77] = "NOEMBED"; - TAG_ID2[TAG_ID2["NOSCRIPT"] = 78] = "NOSCRIPT"; - TAG_ID2[TAG_ID2["OBJECT"] = 79] = "OBJECT"; - TAG_ID2[TAG_ID2["OL"] = 80] = "OL"; - TAG_ID2[TAG_ID2["OPTGROUP"] = 81] = "OPTGROUP"; - TAG_ID2[TAG_ID2["OPTION"] = 82] = "OPTION"; - TAG_ID2[TAG_ID2["P"] = 83] = "P"; - TAG_ID2[TAG_ID2["PARAM"] = 84] = "PARAM"; - TAG_ID2[TAG_ID2["PLAINTEXT"] = 85] = "PLAINTEXT"; - TAG_ID2[TAG_ID2["PRE"] = 86] = "PRE"; - TAG_ID2[TAG_ID2["RB"] = 87] = "RB"; - TAG_ID2[TAG_ID2["RP"] = 88] = "RP"; - TAG_ID2[TAG_ID2["RT"] = 89] = "RT"; - TAG_ID2[TAG_ID2["RTC"] = 90] = "RTC"; - TAG_ID2[TAG_ID2["RUBY"] = 91] = "RUBY"; - TAG_ID2[TAG_ID2["S"] = 92] = "S"; - TAG_ID2[TAG_ID2["SCRIPT"] = 93] = "SCRIPT"; - TAG_ID2[TAG_ID2["SECTION"] = 94] = "SECTION"; - TAG_ID2[TAG_ID2["SELECT"] = 95] = "SELECT"; - TAG_ID2[TAG_ID2["SOURCE"] = 96] = "SOURCE"; - TAG_ID2[TAG_ID2["SMALL"] = 97] = "SMALL"; - TAG_ID2[TAG_ID2["SPAN"] = 98] = "SPAN"; - TAG_ID2[TAG_ID2["STRIKE"] = 99] = "STRIKE"; - TAG_ID2[TAG_ID2["STRONG"] = 100] = "STRONG"; - TAG_ID2[TAG_ID2["STYLE"] = 101] = "STYLE"; - TAG_ID2[TAG_ID2["SUB"] = 102] = "SUB"; - TAG_ID2[TAG_ID2["SUMMARY"] = 103] = "SUMMARY"; - TAG_ID2[TAG_ID2["SUP"] = 104] = "SUP"; - TAG_ID2[TAG_ID2["TABLE"] = 105] = "TABLE"; - TAG_ID2[TAG_ID2["TBODY"] = 106] = "TBODY"; - TAG_ID2[TAG_ID2["TEMPLATE"] = 107] = "TEMPLATE"; - TAG_ID2[TAG_ID2["TEXTAREA"] = 108] = "TEXTAREA"; - TAG_ID2[TAG_ID2["TFOOT"] = 109] = "TFOOT"; - TAG_ID2[TAG_ID2["TD"] = 110] = "TD"; - TAG_ID2[TAG_ID2["TH"] = 111] = "TH"; - TAG_ID2[TAG_ID2["THEAD"] = 112] = "THEAD"; - TAG_ID2[TAG_ID2["TITLE"] = 113] = "TITLE"; - TAG_ID2[TAG_ID2["TR"] = 114] = "TR"; - TAG_ID2[TAG_ID2["TRACK"] = 115] = "TRACK"; - TAG_ID2[TAG_ID2["TT"] = 116] = "TT"; - TAG_ID2[TAG_ID2["U"] = 117] = "U"; - TAG_ID2[TAG_ID2["UL"] = 118] = "UL"; - TAG_ID2[TAG_ID2["SVG"] = 119] = "SVG"; - TAG_ID2[TAG_ID2["VAR"] = 120] = "VAR"; - TAG_ID2[TAG_ID2["WBR"] = 121] = "WBR"; - TAG_ID2[TAG_ID2["XMP"] = 122] = "XMP"; -})(TAG_ID = TAG_ID || (TAG_ID = {})); -var TAG_NAME_TO_ID = /* @__PURE__ */ new Map([ - [TAG_NAMES.A, TAG_ID.A], - [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS], - [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML], - [TAG_NAMES.APPLET, TAG_ID.APPLET], - [TAG_NAMES.AREA, TAG_ID.AREA], - [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE], - [TAG_NAMES.ASIDE, TAG_ID.ASIDE], - [TAG_NAMES.B, TAG_ID.B], - [TAG_NAMES.BASE, TAG_ID.BASE], - [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT], - [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND], - [TAG_NAMES.BIG, TAG_ID.BIG], - [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE], - [TAG_NAMES.BODY, TAG_ID.BODY], - [TAG_NAMES.BR, TAG_ID.BR], - [TAG_NAMES.BUTTON, TAG_ID.BUTTON], - [TAG_NAMES.CAPTION, TAG_ID.CAPTION], - [TAG_NAMES.CENTER, TAG_ID.CENTER], - [TAG_NAMES.CODE, TAG_ID.CODE], - [TAG_NAMES.COL, TAG_ID.COL], - [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP], - [TAG_NAMES.DD, TAG_ID.DD], - [TAG_NAMES.DESC, TAG_ID.DESC], - [TAG_NAMES.DETAILS, TAG_ID.DETAILS], - [TAG_NAMES.DIALOG, TAG_ID.DIALOG], - [TAG_NAMES.DIR, TAG_ID.DIR], - [TAG_NAMES.DIV, TAG_ID.DIV], - [TAG_NAMES.DL, TAG_ID.DL], - [TAG_NAMES.DT, TAG_ID.DT], - [TAG_NAMES.EM, TAG_ID.EM], - [TAG_NAMES.EMBED, TAG_ID.EMBED], - [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET], - [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION], - [TAG_NAMES.FIGURE, TAG_ID.FIGURE], - [TAG_NAMES.FONT, TAG_ID.FONT], - [TAG_NAMES.FOOTER, TAG_ID.FOOTER], - [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT], - [TAG_NAMES.FORM, TAG_ID.FORM], - [TAG_NAMES.FRAME, TAG_ID.FRAME], - [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET], - [TAG_NAMES.H1, TAG_ID.H1], - [TAG_NAMES.H2, TAG_ID.H2], - [TAG_NAMES.H3, TAG_ID.H3], - [TAG_NAMES.H4, TAG_ID.H4], - [TAG_NAMES.H5, TAG_ID.H5], - [TAG_NAMES.H6, TAG_ID.H6], - [TAG_NAMES.HEAD, TAG_ID.HEAD], - [TAG_NAMES.HEADER, TAG_ID.HEADER], - [TAG_NAMES.HGROUP, TAG_ID.HGROUP], - [TAG_NAMES.HR, TAG_ID.HR], - [TAG_NAMES.HTML, TAG_ID.HTML], - [TAG_NAMES.I, TAG_ID.I], - [TAG_NAMES.IMG, TAG_ID.IMG], - [TAG_NAMES.IMAGE, TAG_ID.IMAGE], - [TAG_NAMES.INPUT, TAG_ID.INPUT], - [TAG_NAMES.IFRAME, TAG_ID.IFRAME], - [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN], - [TAG_NAMES.LABEL, TAG_ID.LABEL], - [TAG_NAMES.LI, TAG_ID.LI], - [TAG_NAMES.LINK, TAG_ID.LINK], - [TAG_NAMES.LISTING, TAG_ID.LISTING], - [TAG_NAMES.MAIN, TAG_ID.MAIN], - [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK], - [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE], - [TAG_NAMES.MATH, TAG_ID.MATH], - [TAG_NAMES.MENU, TAG_ID.MENU], - [TAG_NAMES.META, TAG_ID.META], - [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH], - [TAG_NAMES.MI, TAG_ID.MI], - [TAG_NAMES.MO, TAG_ID.MO], - [TAG_NAMES.MN, TAG_ID.MN], - [TAG_NAMES.MS, TAG_ID.MS], - [TAG_NAMES.MTEXT, TAG_ID.MTEXT], - [TAG_NAMES.NAV, TAG_ID.NAV], - [TAG_NAMES.NOBR, TAG_ID.NOBR], - [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES], - [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED], - [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT], - [TAG_NAMES.OBJECT, TAG_ID.OBJECT], - [TAG_NAMES.OL, TAG_ID.OL], - [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP], - [TAG_NAMES.OPTION, TAG_ID.OPTION], - [TAG_NAMES.P, TAG_ID.P], - [TAG_NAMES.PARAM, TAG_ID.PARAM], - [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT], - [TAG_NAMES.PRE, TAG_ID.PRE], - [TAG_NAMES.RB, TAG_ID.RB], - [TAG_NAMES.RP, TAG_ID.RP], - [TAG_NAMES.RT, TAG_ID.RT], - [TAG_NAMES.RTC, TAG_ID.RTC], - [TAG_NAMES.RUBY, TAG_ID.RUBY], - [TAG_NAMES.S, TAG_ID.S], - [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT], - [TAG_NAMES.SECTION, TAG_ID.SECTION], - [TAG_NAMES.SELECT, TAG_ID.SELECT], - [TAG_NAMES.SOURCE, TAG_ID.SOURCE], - [TAG_NAMES.SMALL, TAG_ID.SMALL], - [TAG_NAMES.SPAN, TAG_ID.SPAN], - [TAG_NAMES.STRIKE, TAG_ID.STRIKE], - [TAG_NAMES.STRONG, TAG_ID.STRONG], - [TAG_NAMES.STYLE, TAG_ID.STYLE], - [TAG_NAMES.SUB, TAG_ID.SUB], - [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY], - [TAG_NAMES.SUP, TAG_ID.SUP], - [TAG_NAMES.TABLE, TAG_ID.TABLE], - [TAG_NAMES.TBODY, TAG_ID.TBODY], - [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE], - [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA], - [TAG_NAMES.TFOOT, TAG_ID.TFOOT], - [TAG_NAMES.TD, TAG_ID.TD], - [TAG_NAMES.TH, TAG_ID.TH], - [TAG_NAMES.THEAD, TAG_ID.THEAD], - [TAG_NAMES.TITLE, TAG_ID.TITLE], - [TAG_NAMES.TR, TAG_ID.TR], - [TAG_NAMES.TRACK, TAG_ID.TRACK], - [TAG_NAMES.TT, TAG_ID.TT], - [TAG_NAMES.U, TAG_ID.U], - [TAG_NAMES.UL, TAG_ID.UL], - [TAG_NAMES.SVG, TAG_ID.SVG], - [TAG_NAMES.VAR, TAG_ID.VAR], - [TAG_NAMES.WBR, TAG_ID.WBR], - [TAG_NAMES.XMP, TAG_ID.XMP] -]); -function getTagID(tagName) { - var _a2; - return (_a2 = TAG_NAME_TO_ID.get(tagName)) !== null && _a2 !== void 0 ? _a2 : TAG_ID.UNKNOWN; -} -var $ = TAG_ID; -var SPECIAL_ELEMENTS = { - [NS.HTML]: /* @__PURE__ */ new Set([ - $.ADDRESS, - $.APPLET, - $.AREA, - $.ARTICLE, - $.ASIDE, - $.BASE, - $.BASEFONT, - $.BGSOUND, - $.BLOCKQUOTE, - $.BODY, - $.BR, - $.BUTTON, - $.CAPTION, - $.CENTER, - $.COL, - $.COLGROUP, - $.DD, - $.DETAILS, - $.DIR, - $.DIV, - $.DL, - $.DT, - $.EMBED, - $.FIELDSET, - $.FIGCAPTION, - $.FIGURE, - $.FOOTER, - $.FORM, - $.FRAME, - $.FRAMESET, - $.H1, - $.H2, - $.H3, - $.H4, - $.H5, - $.H6, - $.HEAD, - $.HEADER, - $.HGROUP, - $.HR, - $.HTML, - $.IFRAME, - $.IMG, - $.INPUT, - $.LI, - $.LINK, - $.LISTING, - $.MAIN, - $.MARQUEE, - $.MENU, - $.META, - $.NAV, - $.NOEMBED, - $.NOFRAMES, - $.NOSCRIPT, - $.OBJECT, - $.OL, - $.P, - $.PARAM, - $.PLAINTEXT, - $.PRE, - $.SCRIPT, - $.SECTION, - $.SELECT, - $.SOURCE, - $.STYLE, - $.SUMMARY, - $.TABLE, - $.TBODY, - $.TD, - $.TEMPLATE, - $.TEXTAREA, - $.TFOOT, - $.TH, - $.THEAD, - $.TITLE, - $.TR, - $.TRACK, - $.UL, - $.WBR, - $.XMP - ]), - [NS.MATHML]: /* @__PURE__ */ new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]), - [NS.SVG]: /* @__PURE__ */ new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]), - [NS.XLINK]: /* @__PURE__ */ new Set(), - [NS.XML]: /* @__PURE__ */ new Set(), - [NS.XMLNS]: /* @__PURE__ */ new Set() -}; -function isNumberedHeader(tn) { - return tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6; -} -var UNESCAPED_TEXT = /* @__PURE__ */ new Set([ - TAG_NAMES.STYLE, - TAG_NAMES.SCRIPT, - TAG_NAMES.XMP, - TAG_NAMES.IFRAME, - TAG_NAMES.NOEMBED, - TAG_NAMES.NOFRAMES, - TAG_NAMES.PLAINTEXT -]); -function hasUnescapedText(tn, scriptingEnabled) { - return UNESCAPED_TEXT.has(tn) || scriptingEnabled && tn === TAG_NAMES.NOSCRIPT; -} - -// node_modules/parse5/dist/tokenizer/index.js -var C1_CONTROLS_REFERENCE_REPLACEMENTS = /* @__PURE__ */ new Map([ - [128, 8364], - [130, 8218], - [131, 402], - [132, 8222], - [133, 8230], - [134, 8224], - [135, 8225], - [136, 710], - [137, 8240], - [138, 352], - [139, 8249], - [140, 338], - [142, 381], - [145, 8216], - [146, 8217], - [147, 8220], - [148, 8221], - [149, 8226], - [150, 8211], - [151, 8212], - [152, 732], - [153, 8482], - [154, 353], - [155, 8250], - [156, 339], - [158, 382], - [159, 376] -]); -var State; -(function(State2) { - State2[State2["DATA"] = 0] = "DATA"; - State2[State2["RCDATA"] = 1] = "RCDATA"; - State2[State2["RAWTEXT"] = 2] = "RAWTEXT"; - State2[State2["SCRIPT_DATA"] = 3] = "SCRIPT_DATA"; - State2[State2["PLAINTEXT"] = 4] = "PLAINTEXT"; - State2[State2["TAG_OPEN"] = 5] = "TAG_OPEN"; - State2[State2["END_TAG_OPEN"] = 6] = "END_TAG_OPEN"; - State2[State2["TAG_NAME"] = 7] = "TAG_NAME"; - State2[State2["RCDATA_LESS_THAN_SIGN"] = 8] = "RCDATA_LESS_THAN_SIGN"; - State2[State2["RCDATA_END_TAG_OPEN"] = 9] = "RCDATA_END_TAG_OPEN"; - State2[State2["RCDATA_END_TAG_NAME"] = 10] = "RCDATA_END_TAG_NAME"; - State2[State2["RAWTEXT_LESS_THAN_SIGN"] = 11] = "RAWTEXT_LESS_THAN_SIGN"; - State2[State2["RAWTEXT_END_TAG_OPEN"] = 12] = "RAWTEXT_END_TAG_OPEN"; - State2[State2["RAWTEXT_END_TAG_NAME"] = 13] = "RAWTEXT_END_TAG_NAME"; - State2[State2["SCRIPT_DATA_LESS_THAN_SIGN"] = 14] = "SCRIPT_DATA_LESS_THAN_SIGN"; - State2[State2["SCRIPT_DATA_END_TAG_OPEN"] = 15] = "SCRIPT_DATA_END_TAG_OPEN"; - State2[State2["SCRIPT_DATA_END_TAG_NAME"] = 16] = "SCRIPT_DATA_END_TAG_NAME"; - State2[State2["SCRIPT_DATA_ESCAPE_START"] = 17] = "SCRIPT_DATA_ESCAPE_START"; - State2[State2["SCRIPT_DATA_ESCAPE_START_DASH"] = 18] = "SCRIPT_DATA_ESCAPE_START_DASH"; - State2[State2["SCRIPT_DATA_ESCAPED"] = 19] = "SCRIPT_DATA_ESCAPED"; - State2[State2["SCRIPT_DATA_ESCAPED_DASH"] = 20] = "SCRIPT_DATA_ESCAPED_DASH"; - State2[State2["SCRIPT_DATA_ESCAPED_DASH_DASH"] = 21] = "SCRIPT_DATA_ESCAPED_DASH_DASH"; - State2[State2["SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN"] = 22] = "SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN"; - State2[State2["SCRIPT_DATA_ESCAPED_END_TAG_OPEN"] = 23] = "SCRIPT_DATA_ESCAPED_END_TAG_OPEN"; - State2[State2["SCRIPT_DATA_ESCAPED_END_TAG_NAME"] = 24] = "SCRIPT_DATA_ESCAPED_END_TAG_NAME"; - State2[State2["SCRIPT_DATA_DOUBLE_ESCAPE_START"] = 25] = "SCRIPT_DATA_DOUBLE_ESCAPE_START"; - State2[State2["SCRIPT_DATA_DOUBLE_ESCAPED"] = 26] = "SCRIPT_DATA_DOUBLE_ESCAPED"; - State2[State2["SCRIPT_DATA_DOUBLE_ESCAPED_DASH"] = 27] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH"; - State2[State2["SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH"] = 28] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH"; - State2[State2["SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN"] = 29] = "SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN"; - State2[State2["SCRIPT_DATA_DOUBLE_ESCAPE_END"] = 30] = "SCRIPT_DATA_DOUBLE_ESCAPE_END"; - State2[State2["BEFORE_ATTRIBUTE_NAME"] = 31] = "BEFORE_ATTRIBUTE_NAME"; - State2[State2["ATTRIBUTE_NAME"] = 32] = "ATTRIBUTE_NAME"; - State2[State2["AFTER_ATTRIBUTE_NAME"] = 33] = "AFTER_ATTRIBUTE_NAME"; - State2[State2["BEFORE_ATTRIBUTE_VALUE"] = 34] = "BEFORE_ATTRIBUTE_VALUE"; - State2[State2["ATTRIBUTE_VALUE_DOUBLE_QUOTED"] = 35] = "ATTRIBUTE_VALUE_DOUBLE_QUOTED"; - State2[State2["ATTRIBUTE_VALUE_SINGLE_QUOTED"] = 36] = "ATTRIBUTE_VALUE_SINGLE_QUOTED"; - State2[State2["ATTRIBUTE_VALUE_UNQUOTED"] = 37] = "ATTRIBUTE_VALUE_UNQUOTED"; - State2[State2["AFTER_ATTRIBUTE_VALUE_QUOTED"] = 38] = "AFTER_ATTRIBUTE_VALUE_QUOTED"; - State2[State2["SELF_CLOSING_START_TAG"] = 39] = "SELF_CLOSING_START_TAG"; - State2[State2["BOGUS_COMMENT"] = 40] = "BOGUS_COMMENT"; - State2[State2["MARKUP_DECLARATION_OPEN"] = 41] = "MARKUP_DECLARATION_OPEN"; - State2[State2["COMMENT_START"] = 42] = "COMMENT_START"; - State2[State2["COMMENT_START_DASH"] = 43] = "COMMENT_START_DASH"; - State2[State2["COMMENT"] = 44] = "COMMENT"; - State2[State2["COMMENT_LESS_THAN_SIGN"] = 45] = "COMMENT_LESS_THAN_SIGN"; - State2[State2["COMMENT_LESS_THAN_SIGN_BANG"] = 46] = "COMMENT_LESS_THAN_SIGN_BANG"; - State2[State2["COMMENT_LESS_THAN_SIGN_BANG_DASH"] = 47] = "COMMENT_LESS_THAN_SIGN_BANG_DASH"; - State2[State2["COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH"] = 48] = "COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH"; - State2[State2["COMMENT_END_DASH"] = 49] = "COMMENT_END_DASH"; - State2[State2["COMMENT_END"] = 50] = "COMMENT_END"; - State2[State2["COMMENT_END_BANG"] = 51] = "COMMENT_END_BANG"; - State2[State2["DOCTYPE"] = 52] = "DOCTYPE"; - State2[State2["BEFORE_DOCTYPE_NAME"] = 53] = "BEFORE_DOCTYPE_NAME"; - State2[State2["DOCTYPE_NAME"] = 54] = "DOCTYPE_NAME"; - State2[State2["AFTER_DOCTYPE_NAME"] = 55] = "AFTER_DOCTYPE_NAME"; - State2[State2["AFTER_DOCTYPE_PUBLIC_KEYWORD"] = 56] = "AFTER_DOCTYPE_PUBLIC_KEYWORD"; - State2[State2["BEFORE_DOCTYPE_PUBLIC_IDENTIFIER"] = 57] = "BEFORE_DOCTYPE_PUBLIC_IDENTIFIER"; - State2[State2["DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED"] = 58] = "DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED"; - State2[State2["DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED"] = 59] = "DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED"; - State2[State2["AFTER_DOCTYPE_PUBLIC_IDENTIFIER"] = 60] = "AFTER_DOCTYPE_PUBLIC_IDENTIFIER"; - State2[State2["BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS"] = 61] = "BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS"; - State2[State2["AFTER_DOCTYPE_SYSTEM_KEYWORD"] = 62] = "AFTER_DOCTYPE_SYSTEM_KEYWORD"; - State2[State2["BEFORE_DOCTYPE_SYSTEM_IDENTIFIER"] = 63] = "BEFORE_DOCTYPE_SYSTEM_IDENTIFIER"; - State2[State2["DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED"] = 64] = "DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED"; - State2[State2["DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED"] = 65] = "DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED"; - State2[State2["AFTER_DOCTYPE_SYSTEM_IDENTIFIER"] = 66] = "AFTER_DOCTYPE_SYSTEM_IDENTIFIER"; - State2[State2["BOGUS_DOCTYPE"] = 67] = "BOGUS_DOCTYPE"; - State2[State2["CDATA_SECTION"] = 68] = "CDATA_SECTION"; - State2[State2["CDATA_SECTION_BRACKET"] = 69] = "CDATA_SECTION_BRACKET"; - State2[State2["CDATA_SECTION_END"] = 70] = "CDATA_SECTION_END"; - State2[State2["CHARACTER_REFERENCE"] = 71] = "CHARACTER_REFERENCE"; - State2[State2["NAMED_CHARACTER_REFERENCE"] = 72] = "NAMED_CHARACTER_REFERENCE"; - State2[State2["AMBIGUOUS_AMPERSAND"] = 73] = "AMBIGUOUS_AMPERSAND"; - State2[State2["NUMERIC_CHARACTER_REFERENCE"] = 74] = "NUMERIC_CHARACTER_REFERENCE"; - State2[State2["HEXADEMICAL_CHARACTER_REFERENCE_START"] = 75] = "HEXADEMICAL_CHARACTER_REFERENCE_START"; - State2[State2["HEXADEMICAL_CHARACTER_REFERENCE"] = 76] = "HEXADEMICAL_CHARACTER_REFERENCE"; - State2[State2["DECIMAL_CHARACTER_REFERENCE"] = 77] = "DECIMAL_CHARACTER_REFERENCE"; - State2[State2["NUMERIC_CHARACTER_REFERENCE_END"] = 78] = "NUMERIC_CHARACTER_REFERENCE_END"; -})(State || (State = {})); -var TokenizerMode = { - DATA: State.DATA, - RCDATA: State.RCDATA, - RAWTEXT: State.RAWTEXT, - SCRIPT_DATA: State.SCRIPT_DATA, - PLAINTEXT: State.PLAINTEXT, - CDATA_SECTION: State.CDATA_SECTION -}; -function isAsciiDigit(cp) { - return cp >= CODE_POINTS.DIGIT_0 && cp <= CODE_POINTS.DIGIT_9; -} -function isAsciiUpper(cp) { - return cp >= CODE_POINTS.LATIN_CAPITAL_A && cp <= CODE_POINTS.LATIN_CAPITAL_Z; -} -function isAsciiLower(cp) { - return cp >= CODE_POINTS.LATIN_SMALL_A && cp <= CODE_POINTS.LATIN_SMALL_Z; -} -function isAsciiLetter(cp) { - return isAsciiLower(cp) || isAsciiUpper(cp); -} -function isAsciiAlphaNumeric2(cp) { - return isAsciiLetter(cp) || isAsciiDigit(cp); -} -function isAsciiUpperHexDigit(cp) { - return cp >= CODE_POINTS.LATIN_CAPITAL_A && cp <= CODE_POINTS.LATIN_CAPITAL_F; -} -function isAsciiLowerHexDigit(cp) { - return cp >= CODE_POINTS.LATIN_SMALL_A && cp <= CODE_POINTS.LATIN_SMALL_F; -} -function isAsciiHexDigit(cp) { - return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp); -} -function toAsciiLower(cp) { - return cp + 32; -} -function isWhitespace(cp) { - return cp === CODE_POINTS.SPACE || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.TABULATION || cp === CODE_POINTS.FORM_FEED; -} -function isEntityInAttributeInvalidEnd2(nextCp) { - return nextCp === CODE_POINTS.EQUALS_SIGN || isAsciiAlphaNumeric2(nextCp); -} -function isScriptDataDoubleEscapeSequenceEnd(cp) { - return isWhitespace(cp) || cp === CODE_POINTS.SOLIDUS || cp === CODE_POINTS.GREATER_THAN_SIGN; -} -var Tokenizer = class { - constructor(options, handler) { - this.options = options; - this.handler = handler; - this.paused = false; - this.inLoop = false; - this.inForeignNode = false; - this.lastStartTagName = ""; - this.active = false; - this.state = State.DATA; - this.returnState = State.DATA; - this.charRefCode = -1; - this.consumedAfterSnapshot = -1; - this.currentCharacterToken = null; - this.currentToken = null; - this.currentAttr = { name: "", value: "" }; - this.preprocessor = new Preprocessor(handler); - this.currentLocation = this.getCurrentLocation(-1); - } - //Errors - _err(code) { - var _a2, _b; - (_b = (_a2 = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a2, this.preprocessor.getError(code)); - } - // NOTE: `offset` may never run across line boundaries. - getCurrentLocation(offset) { - if (!this.options.sourceCodeLocationInfo) { - return null; - } - return { - startLine: this.preprocessor.line, - startCol: this.preprocessor.col - offset, - startOffset: this.preprocessor.offset - offset, - endLine: -1, - endCol: -1, - endOffset: -1 - }; - } - _runParsingLoop() { - if (this.inLoop) - return; - this.inLoop = true; - while (this.active && !this.paused) { - this.consumedAfterSnapshot = 0; - const cp = this._consume(); - if (!this._ensureHibernation()) { - this._callState(cp); - } - } - this.inLoop = false; - } - //API - pause() { - this.paused = true; - } - resume(writeCallback) { - if (!this.paused) { - throw new Error("Parser was already resumed"); - } - this.paused = false; - if (this.inLoop) - return; - this._runParsingLoop(); - if (!this.paused) { - writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback(); - } - } - write(chunk, isLastChunk, writeCallback) { - this.active = true; - this.preprocessor.write(chunk, isLastChunk); - this._runParsingLoop(); - if (!this.paused) { - writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback(); - } - } - insertHtmlAtCurrentPos(chunk) { - this.active = true; - this.preprocessor.insertHtmlAtCurrentPos(chunk); - this._runParsingLoop(); - } - //Hibernation - _ensureHibernation() { - if (this.preprocessor.endOfChunkHit) { - this._unconsume(this.consumedAfterSnapshot); - this.active = false; - return true; - } - return false; - } - //Consumption - _consume() { - this.consumedAfterSnapshot++; - return this.preprocessor.advance(); - } - _unconsume(count) { - this.consumedAfterSnapshot -= count; - this.preprocessor.retreat(count); - } - _reconsumeInState(state, cp) { - this.state = state; - this._callState(cp); - } - _advanceBy(count) { - this.consumedAfterSnapshot += count; - for (let i = 0; i < count; i++) { - this.preprocessor.advance(); - } - } - _consumeSequenceIfMatch(pattern, caseSensitive) { - if (this.preprocessor.startsWith(pattern, caseSensitive)) { - this._advanceBy(pattern.length - 1); - return true; - } - return false; - } - //Token creation - _createStartTagToken() { - this.currentToken = { - type: TokenType.START_TAG, - tagName: "", - tagID: TAG_ID.UNKNOWN, - selfClosing: false, - ackSelfClosing: false, - attrs: [], - location: this.getCurrentLocation(1) - }; - } - _createEndTagToken() { - this.currentToken = { - type: TokenType.END_TAG, - tagName: "", - tagID: TAG_ID.UNKNOWN, - selfClosing: false, - ackSelfClosing: false, - attrs: [], - location: this.getCurrentLocation(2) - }; - } - _createCommentToken(offset) { - this.currentToken = { - type: TokenType.COMMENT, - data: "", - location: this.getCurrentLocation(offset) - }; - } - _createDoctypeToken(initialName) { - this.currentToken = { - type: TokenType.DOCTYPE, - name: initialName, - forceQuirks: false, - publicId: null, - systemId: null, - location: this.currentLocation - }; - } - _createCharacterToken(type, chars) { - this.currentCharacterToken = { - type, - chars, - location: this.currentLocation - }; - } - //Tag attributes - _createAttr(attrNameFirstCh) { - this.currentAttr = { - name: attrNameFirstCh, - value: "" - }; - this.currentLocation = this.getCurrentLocation(0); - } - _leaveAttrName() { - var _a2; - var _b; - const token = this.currentToken; - if (getTokenAttr(token, this.currentAttr.name) === null) { - token.attrs.push(this.currentAttr); - if (token.location && this.currentLocation) { - const attrLocations = (_a2 = (_b = token.location).attrs) !== null && _a2 !== void 0 ? _a2 : _b.attrs = /* @__PURE__ */ Object.create(null); - attrLocations[this.currentAttr.name] = this.currentLocation; - this._leaveAttrValue(); - } - } else { - this._err(ERR.duplicateAttribute); - } - } - _leaveAttrValue() { - if (this.currentLocation) { - this.currentLocation.endLine = this.preprocessor.line; - this.currentLocation.endCol = this.preprocessor.col; - this.currentLocation.endOffset = this.preprocessor.offset; - } - } - //Token emission - prepareToken(ct) { - this._emitCurrentCharacterToken(ct.location); - this.currentToken = null; - if (ct.location) { - ct.location.endLine = this.preprocessor.line; - ct.location.endCol = this.preprocessor.col + 1; - ct.location.endOffset = this.preprocessor.offset + 1; - } - this.currentLocation = this.getCurrentLocation(-1); - } - emitCurrentTagToken() { - const ct = this.currentToken; - this.prepareToken(ct); - ct.tagID = getTagID(ct.tagName); - if (ct.type === TokenType.START_TAG) { - this.lastStartTagName = ct.tagName; - this.handler.onStartTag(ct); - } else { - if (ct.attrs.length > 0) { - this._err(ERR.endTagWithAttributes); - } - if (ct.selfClosing) { - this._err(ERR.endTagWithTrailingSolidus); - } - this.handler.onEndTag(ct); - } - this.preprocessor.dropParsedChunk(); - } - emitCurrentComment(ct) { - this.prepareToken(ct); - this.handler.onComment(ct); - this.preprocessor.dropParsedChunk(); - } - emitCurrentDoctype(ct) { - this.prepareToken(ct); - this.handler.onDoctype(ct); - this.preprocessor.dropParsedChunk(); - } - _emitCurrentCharacterToken(nextLocation) { - if (this.currentCharacterToken) { - if (nextLocation && this.currentCharacterToken.location) { - this.currentCharacterToken.location.endLine = nextLocation.startLine; - this.currentCharacterToken.location.endCol = nextLocation.startCol; - this.currentCharacterToken.location.endOffset = nextLocation.startOffset; - } - switch (this.currentCharacterToken.type) { - case TokenType.CHARACTER: { - this.handler.onCharacter(this.currentCharacterToken); - break; - } - case TokenType.NULL_CHARACTER: { - this.handler.onNullCharacter(this.currentCharacterToken); - break; - } - case TokenType.WHITESPACE_CHARACTER: { - this.handler.onWhitespaceCharacter(this.currentCharacterToken); - break; - } - } - this.currentCharacterToken = null; - } - } - _emitEOFToken() { - const location = this.getCurrentLocation(0); - if (location) { - location.endLine = location.startLine; - location.endCol = location.startCol; - location.endOffset = location.startOffset; - } - this._emitCurrentCharacterToken(location); - this.handler.onEof({ type: TokenType.EOF, location }); - this.active = false; - } - //Characters emission - //OPTIMIZATION: specification uses only one type of character tokens (one token per character). - //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters. - //If we have a sequence of characters that belong to the same group, the parser can process it - //as a single solid character token. - //So, there are 3 types of character tokens in parse5: - //1)TokenType.NULL_CHARACTER - \u0000-character sequences (e.g. '\u0000\u0000\u0000') - //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\n \r\t \f') - //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^') - _appendCharToCurrentCharacterToken(type, ch) { - if (this.currentCharacterToken) { - if (this.currentCharacterToken.type !== type) { - this.currentLocation = this.getCurrentLocation(0); - this._emitCurrentCharacterToken(this.currentLocation); - this.preprocessor.dropParsedChunk(); - } else { - this.currentCharacterToken.chars += ch; - return; - } - } - this._createCharacterToken(type, ch); - } - _emitCodePoint(cp) { - const type = isWhitespace(cp) ? TokenType.WHITESPACE_CHARACTER : cp === CODE_POINTS.NULL ? TokenType.NULL_CHARACTER : TokenType.CHARACTER; - this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp)); - } - //NOTE: used when we emit characters explicitly. - //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks. - _emitChars(ch) { - this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch); - } - // Character reference helpers - _matchNamedCharacterReference(cp) { - let result = null; - let excess = 0; - let withoutSemicolon = false; - for (let i = 0, current = decode_data_html_default[0]; i >= 0; cp = this._consume()) { - i = determineBranch(decode_data_html_default, current, i + 1, cp); - if (i < 0) - break; - excess += 1; - current = decode_data_html_default[i]; - const masked = current & BinTrieFlags.VALUE_LENGTH; - if (masked) { - const valueLength = (masked >> 14) - 1; - if (cp !== CODE_POINTS.SEMICOLON && this._isCharacterReferenceInAttribute() && isEntityInAttributeInvalidEnd2(this.preprocessor.peek(1))) { - result = [CODE_POINTS.AMPERSAND]; - i += valueLength; - } else { - result = valueLength === 0 ? [decode_data_html_default[i] & ~BinTrieFlags.VALUE_LENGTH] : valueLength === 1 ? [decode_data_html_default[++i]] : [decode_data_html_default[++i], decode_data_html_default[++i]]; - excess = 0; - withoutSemicolon = cp !== CODE_POINTS.SEMICOLON; - } - if (valueLength === 0) { - this._consume(); - break; - } - } - } - this._unconsume(excess); - if (withoutSemicolon && !this.preprocessor.endOfChunkHit) { - this._err(ERR.missingSemicolonAfterCharacterReference); - } - this._unconsume(1); - return result; - } - _isCharacterReferenceInAttribute() { - return this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED || this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED || this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED; - } - _flushCodePointConsumedAsCharacterReference(cp) { - if (this._isCharacterReferenceInAttribute()) { - this.currentAttr.value += String.fromCodePoint(cp); - } else { - this._emitCodePoint(cp); - } - } - // Calling states this way turns out to be much faster than any other approach. - _callState(cp) { - switch (this.state) { - case State.DATA: { - this._stateData(cp); - break; - } - case State.RCDATA: { - this._stateRcdata(cp); - break; - } - case State.RAWTEXT: { - this._stateRawtext(cp); - break; - } - case State.SCRIPT_DATA: { - this._stateScriptData(cp); - break; - } - case State.PLAINTEXT: { - this._statePlaintext(cp); - break; - } - case State.TAG_OPEN: { - this._stateTagOpen(cp); - break; - } - case State.END_TAG_OPEN: { - this._stateEndTagOpen(cp); - break; - } - case State.TAG_NAME: { - this._stateTagName(cp); - break; - } - case State.RCDATA_LESS_THAN_SIGN: { - this._stateRcdataLessThanSign(cp); - break; - } - case State.RCDATA_END_TAG_OPEN: { - this._stateRcdataEndTagOpen(cp); - break; - } - case State.RCDATA_END_TAG_NAME: { - this._stateRcdataEndTagName(cp); - break; - } - case State.RAWTEXT_LESS_THAN_SIGN: { - this._stateRawtextLessThanSign(cp); - break; - } - case State.RAWTEXT_END_TAG_OPEN: { - this._stateRawtextEndTagOpen(cp); - break; - } - case State.RAWTEXT_END_TAG_NAME: { - this._stateRawtextEndTagName(cp); - break; - } - case State.SCRIPT_DATA_LESS_THAN_SIGN: { - this._stateScriptDataLessThanSign(cp); - break; - } - case State.SCRIPT_DATA_END_TAG_OPEN: { - this._stateScriptDataEndTagOpen(cp); - break; - } - case State.SCRIPT_DATA_END_TAG_NAME: { - this._stateScriptDataEndTagName(cp); - break; - } - case State.SCRIPT_DATA_ESCAPE_START: { - this._stateScriptDataEscapeStart(cp); - break; - } - case State.SCRIPT_DATA_ESCAPE_START_DASH: { - this._stateScriptDataEscapeStartDash(cp); - break; - } - case State.SCRIPT_DATA_ESCAPED: { - this._stateScriptDataEscaped(cp); - break; - } - case State.SCRIPT_DATA_ESCAPED_DASH: { - this._stateScriptDataEscapedDash(cp); - break; - } - case State.SCRIPT_DATA_ESCAPED_DASH_DASH: { - this._stateScriptDataEscapedDashDash(cp); - break; - } - case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: { - this._stateScriptDataEscapedLessThanSign(cp); - break; - } - case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: { - this._stateScriptDataEscapedEndTagOpen(cp); - break; - } - case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: { - this._stateScriptDataEscapedEndTagName(cp); - break; - } - case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: { - this._stateScriptDataDoubleEscapeStart(cp); - break; - } - case State.SCRIPT_DATA_DOUBLE_ESCAPED: { - this._stateScriptDataDoubleEscaped(cp); - break; - } - case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: { - this._stateScriptDataDoubleEscapedDash(cp); - break; - } - case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: { - this._stateScriptDataDoubleEscapedDashDash(cp); - break; - } - case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: { - this._stateScriptDataDoubleEscapedLessThanSign(cp); - break; - } - case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: { - this._stateScriptDataDoubleEscapeEnd(cp); - break; - } - case State.BEFORE_ATTRIBUTE_NAME: { - this._stateBeforeAttributeName(cp); - break; - } - case State.ATTRIBUTE_NAME: { - this._stateAttributeName(cp); - break; - } - case State.AFTER_ATTRIBUTE_NAME: { - this._stateAfterAttributeName(cp); - break; - } - case State.BEFORE_ATTRIBUTE_VALUE: { - this._stateBeforeAttributeValue(cp); - break; - } - case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: { - this._stateAttributeValueDoubleQuoted(cp); - break; - } - case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: { - this._stateAttributeValueSingleQuoted(cp); - break; - } - case State.ATTRIBUTE_VALUE_UNQUOTED: { - this._stateAttributeValueUnquoted(cp); - break; - } - case State.AFTER_ATTRIBUTE_VALUE_QUOTED: { - this._stateAfterAttributeValueQuoted(cp); - break; - } - case State.SELF_CLOSING_START_TAG: { - this._stateSelfClosingStartTag(cp); - break; - } - case State.BOGUS_COMMENT: { - this._stateBogusComment(cp); - break; - } - case State.MARKUP_DECLARATION_OPEN: { - this._stateMarkupDeclarationOpen(cp); - break; - } - case State.COMMENT_START: { - this._stateCommentStart(cp); - break; - } - case State.COMMENT_START_DASH: { - this._stateCommentStartDash(cp); - break; - } - case State.COMMENT: { - this._stateComment(cp); - break; - } - case State.COMMENT_LESS_THAN_SIGN: { - this._stateCommentLessThanSign(cp); - break; - } - case State.COMMENT_LESS_THAN_SIGN_BANG: { - this._stateCommentLessThanSignBang(cp); - break; - } - case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: { - this._stateCommentLessThanSignBangDash(cp); - break; - } - case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: { - this._stateCommentLessThanSignBangDashDash(cp); - break; - } - case State.COMMENT_END_DASH: { - this._stateCommentEndDash(cp); - break; - } - case State.COMMENT_END: { - this._stateCommentEnd(cp); - break; - } - case State.COMMENT_END_BANG: { - this._stateCommentEndBang(cp); - break; - } - case State.DOCTYPE: { - this._stateDoctype(cp); - break; - } - case State.BEFORE_DOCTYPE_NAME: { - this._stateBeforeDoctypeName(cp); - break; - } - case State.DOCTYPE_NAME: { - this._stateDoctypeName(cp); - break; - } - case State.AFTER_DOCTYPE_NAME: { - this._stateAfterDoctypeName(cp); - break; - } - case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: { - this._stateAfterDoctypePublicKeyword(cp); - break; - } - case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: { - this._stateBeforeDoctypePublicIdentifier(cp); - break; - } - case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: { - this._stateDoctypePublicIdentifierDoubleQuoted(cp); - break; - } - case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: { - this._stateDoctypePublicIdentifierSingleQuoted(cp); - break; - } - case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: { - this._stateAfterDoctypePublicIdentifier(cp); - break; - } - case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: { - this._stateBetweenDoctypePublicAndSystemIdentifiers(cp); - break; - } - case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: { - this._stateAfterDoctypeSystemKeyword(cp); - break; - } - case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: { - this._stateBeforeDoctypeSystemIdentifier(cp); - break; - } - case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: { - this._stateDoctypeSystemIdentifierDoubleQuoted(cp); - break; - } - case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: { - this._stateDoctypeSystemIdentifierSingleQuoted(cp); - break; - } - case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: { - this._stateAfterDoctypeSystemIdentifier(cp); - break; - } - case State.BOGUS_DOCTYPE: { - this._stateBogusDoctype(cp); - break; - } - case State.CDATA_SECTION: { - this._stateCdataSection(cp); - break; - } - case State.CDATA_SECTION_BRACKET: { - this._stateCdataSectionBracket(cp); - break; - } - case State.CDATA_SECTION_END: { - this._stateCdataSectionEnd(cp); - break; - } - case State.CHARACTER_REFERENCE: { - this._stateCharacterReference(cp); - break; - } - case State.NAMED_CHARACTER_REFERENCE: { - this._stateNamedCharacterReference(cp); - break; - } - case State.AMBIGUOUS_AMPERSAND: { - this._stateAmbiguousAmpersand(cp); - break; - } - case State.NUMERIC_CHARACTER_REFERENCE: { - this._stateNumericCharacterReference(cp); - break; - } - case State.HEXADEMICAL_CHARACTER_REFERENCE_START: { - this._stateHexademicalCharacterReferenceStart(cp); - break; - } - case State.HEXADEMICAL_CHARACTER_REFERENCE: { - this._stateHexademicalCharacterReference(cp); - break; - } - case State.DECIMAL_CHARACTER_REFERENCE: { - this._stateDecimalCharacterReference(cp); - break; - } - case State.NUMERIC_CHARACTER_REFERENCE_END: { - this._stateNumericCharacterReferenceEnd(cp); - break; - } - default: { - throw new Error("Unknown state"); - } - } - } - // State machine - // Data state - //------------------------------------------------------------------ - _stateData(cp) { - switch (cp) { - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.TAG_OPEN; - break; - } - case CODE_POINTS.AMPERSAND: { - this.returnState = State.DATA; - this.state = State.CHARACTER_REFERENCE; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitCodePoint(cp); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // RCDATA state - //------------------------------------------------------------------ - _stateRcdata(cp) { - switch (cp) { - case CODE_POINTS.AMPERSAND: { - this.returnState = State.RCDATA; - this.state = State.CHARACTER_REFERENCE; - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.RCDATA_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // RAWTEXT state - //------------------------------------------------------------------ - _stateRawtext(cp) { - switch (cp) { - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.RAWTEXT_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // Script data state - //------------------------------------------------------------------ - _stateScriptData(cp) { - switch (cp) { - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.SCRIPT_DATA_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // PLAINTEXT state - //------------------------------------------------------------------ - _statePlaintext(cp) { - switch (cp) { - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // Tag open state - //------------------------------------------------------------------ - _stateTagOpen(cp) { - if (isAsciiLetter(cp)) { - this._createStartTagToken(); - this.state = State.TAG_NAME; - this._stateTagName(cp); - } else - switch (cp) { - case CODE_POINTS.EXCLAMATION_MARK: { - this.state = State.MARKUP_DECLARATION_OPEN; - break; - } - case CODE_POINTS.SOLIDUS: { - this.state = State.END_TAG_OPEN; - break; - } - case CODE_POINTS.QUESTION_MARK: { - this._err(ERR.unexpectedQuestionMarkInsteadOfTagName); - this._createCommentToken(1); - this.state = State.BOGUS_COMMENT; - this._stateBogusComment(cp); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofBeforeTagName); - this._emitChars("<"); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.invalidFirstCharacterOfTagName); - this._emitChars("<"); - this.state = State.DATA; - this._stateData(cp); - } - } - } - // End tag open state - //------------------------------------------------------------------ - _stateEndTagOpen(cp) { - if (isAsciiLetter(cp)) { - this._createEndTagToken(); - this.state = State.TAG_NAME; - this._stateTagName(cp); - } else - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingEndTagName); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofBeforeTagName); - this._emitChars(""); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.state = State.SCRIPT_DATA_ESCAPED; - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this.state = State.SCRIPT_DATA_ESCAPED; - this._emitCodePoint(cp); - } - } - } - // Script data escaped less-than sign state - //------------------------------------------------------------------ - _stateScriptDataEscapedLessThanSign(cp) { - if (cp === CODE_POINTS.SOLIDUS) { - this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN; - } else if (isAsciiLetter(cp)) { - this._emitChars("<"); - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START; - this._stateScriptDataDoubleEscapeStart(cp); - } else { - this._emitChars("<"); - this.state = State.SCRIPT_DATA_ESCAPED; - this._stateScriptDataEscaped(cp); - } - } - // Script data escaped end tag open state - //------------------------------------------------------------------ - _stateScriptDataEscapedEndTagOpen(cp) { - if (isAsciiLetter(cp)) { - this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME; - this._stateScriptDataEscapedEndTagName(cp); - } else { - this._emitChars(""); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; - this._emitCodePoint(cp); - } - } - } - // Script data double escaped less-than sign state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscapedLessThanSign(cp) { - if (cp === CODE_POINTS.SOLIDUS) { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END; - this._emitChars("/"); - } else { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; - this._stateScriptDataDoubleEscaped(cp); - } - } - // Script data double escape end state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscapeEnd(cp) { - if (this.preprocessor.startsWith(SEQUENCES.SCRIPT, false) && isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(SEQUENCES.SCRIPT.length))) { - this._emitCodePoint(cp); - for (let i = 0; i < SEQUENCES.SCRIPT.length; i++) { - this._emitCodePoint(this._consume()); - } - this.state = State.SCRIPT_DATA_ESCAPED; - } else if (!this._ensureHibernation()) { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; - this._stateScriptDataDoubleEscaped(cp); - } - } - // Before attribute name state - //------------------------------------------------------------------ - _stateBeforeAttributeName(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.SOLIDUS: - case CODE_POINTS.GREATER_THAN_SIGN: - case CODE_POINTS.EOF: { - this.state = State.AFTER_ATTRIBUTE_NAME; - this._stateAfterAttributeName(cp); - break; - } - case CODE_POINTS.EQUALS_SIGN: { - this._err(ERR.unexpectedEqualsSignBeforeAttributeName); - this._createAttr("="); - this.state = State.ATTRIBUTE_NAME; - break; - } - default: { - this._createAttr(""); - this.state = State.ATTRIBUTE_NAME; - this._stateAttributeName(cp); - } - } - } - // Attribute name state - //------------------------------------------------------------------ - _stateAttributeName(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: - case CODE_POINTS.SOLIDUS: - case CODE_POINTS.GREATER_THAN_SIGN: - case CODE_POINTS.EOF: { - this._leaveAttrName(); - this.state = State.AFTER_ATTRIBUTE_NAME; - this._stateAfterAttributeName(cp); - break; - } - case CODE_POINTS.EQUALS_SIGN: { - this._leaveAttrName(); - this.state = State.BEFORE_ATTRIBUTE_VALUE; - break; - } - case CODE_POINTS.QUOTATION_MARK: - case CODE_POINTS.APOSTROPHE: - case CODE_POINTS.LESS_THAN_SIGN: { - this._err(ERR.unexpectedCharacterInAttributeName); - this.currentAttr.name += String.fromCodePoint(cp); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.currentAttr.name += REPLACEMENT_CHARACTER; - break; - } - default: { - this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); - } - } - } - // After attribute name state - //------------------------------------------------------------------ - _stateAfterAttributeName(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.SOLIDUS: { - this.state = State.SELF_CLOSING_START_TAG; - break; - } - case CODE_POINTS.EQUALS_SIGN: { - this.state = State.BEFORE_ATTRIBUTE_VALUE; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this._createAttr(""); - this.state = State.ATTRIBUTE_NAME; - this._stateAttributeName(cp); - } - } - } - // Before attribute value state - //------------------------------------------------------------------ - _stateBeforeAttributeValue(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.QUOTATION_MARK: { - this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingAttributeValue); - this.state = State.DATA; - this.emitCurrentTagToken(); - break; - } - default: { - this.state = State.ATTRIBUTE_VALUE_UNQUOTED; - this._stateAttributeValueUnquoted(cp); - } - } - } - // Attribute value (double-quoted) state - //------------------------------------------------------------------ - _stateAttributeValueDoubleQuoted(cp) { - switch (cp) { - case CODE_POINTS.QUOTATION_MARK: { - this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED; - break; - } - case CODE_POINTS.AMPERSAND: { - this.returnState = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED; - this.state = State.CHARACTER_REFERENCE; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.currentAttr.value += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this.currentAttr.value += String.fromCodePoint(cp); - } - } - } - // Attribute value (single-quoted) state - //------------------------------------------------------------------ - _stateAttributeValueSingleQuoted(cp) { - switch (cp) { - case CODE_POINTS.APOSTROPHE: { - this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED; - break; - } - case CODE_POINTS.AMPERSAND: { - this.returnState = State.ATTRIBUTE_VALUE_SINGLE_QUOTED; - this.state = State.CHARACTER_REFERENCE; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.currentAttr.value += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this.currentAttr.value += String.fromCodePoint(cp); - } - } - } - // Attribute value (unquoted) state - //------------------------------------------------------------------ - _stateAttributeValueUnquoted(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this._leaveAttrValue(); - this.state = State.BEFORE_ATTRIBUTE_NAME; - break; - } - case CODE_POINTS.AMPERSAND: { - this.returnState = State.ATTRIBUTE_VALUE_UNQUOTED; - this.state = State.CHARACTER_REFERENCE; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._leaveAttrValue(); - this.state = State.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.currentAttr.value += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.QUOTATION_MARK: - case CODE_POINTS.APOSTROPHE: - case CODE_POINTS.LESS_THAN_SIGN: - case CODE_POINTS.EQUALS_SIGN: - case CODE_POINTS.GRAVE_ACCENT: { - this._err(ERR.unexpectedCharacterInUnquotedAttributeValue); - this.currentAttr.value += String.fromCodePoint(cp); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this.currentAttr.value += String.fromCodePoint(cp); - } - } - } - // After attribute value (quoted) state - //------------------------------------------------------------------ - _stateAfterAttributeValueQuoted(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this._leaveAttrValue(); - this.state = State.BEFORE_ATTRIBUTE_NAME; - break; - } - case CODE_POINTS.SOLIDUS: { - this._leaveAttrValue(); - this.state = State.SELF_CLOSING_START_TAG; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._leaveAttrValue(); - this.state = State.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingWhitespaceBetweenAttributes); - this.state = State.BEFORE_ATTRIBUTE_NAME; - this._stateBeforeAttributeName(cp); - } - } - } - // Self-closing start tag state - //------------------------------------------------------------------ - _stateSelfClosingStartTag(cp) { - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - const token = this.currentToken; - token.selfClosing = true; - this.state = State.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.unexpectedSolidusInTag); - this.state = State.BEFORE_ATTRIBUTE_NAME; - this._stateBeforeAttributeName(cp); - } - } - } - // Bogus comment state - //------------------------------------------------------------------ - _stateBogusComment(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentComment(token); - break; - } - case CODE_POINTS.EOF: { - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.data += REPLACEMENT_CHARACTER; - break; - } - default: { - token.data += String.fromCodePoint(cp); - } - } - } - // Markup declaration open state - //------------------------------------------------------------------ - _stateMarkupDeclarationOpen(cp) { - if (this._consumeSequenceIfMatch(SEQUENCES.DASH_DASH, true)) { - this._createCommentToken(SEQUENCES.DASH_DASH.length + 1); - this.state = State.COMMENT_START; - } else if (this._consumeSequenceIfMatch(SEQUENCES.DOCTYPE, false)) { - this.currentLocation = this.getCurrentLocation(SEQUENCES.DOCTYPE.length + 1); - this.state = State.DOCTYPE; - } else if (this._consumeSequenceIfMatch(SEQUENCES.CDATA_START, true)) { - if (this.inForeignNode) { - this.state = State.CDATA_SECTION; - } else { - this._err(ERR.cdataInHtmlContent); - this._createCommentToken(SEQUENCES.CDATA_START.length + 1); - this.currentToken.data = "[CDATA["; - this.state = State.BOGUS_COMMENT; - } - } else if (!this._ensureHibernation()) { - this._err(ERR.incorrectlyOpenedComment); - this._createCommentToken(2); - this.state = State.BOGUS_COMMENT; - this._stateBogusComment(cp); - } - } - // Comment start state - //------------------------------------------------------------------ - _stateCommentStart(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.COMMENT_START_DASH; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptClosingOfEmptyComment); - this.state = State.DATA; - const token = this.currentToken; - this.emitCurrentComment(token); - break; - } - default: { - this.state = State.COMMENT; - this._stateComment(cp); - } - } - } - // Comment start dash state - //------------------------------------------------------------------ - _stateCommentStartDash(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.COMMENT_END; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptClosingOfEmptyComment); - this.state = State.DATA; - this.emitCurrentComment(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += "-"; - this.state = State.COMMENT; - this._stateComment(cp); - } - } - } - // Comment state - //------------------------------------------------------------------ - _stateComment(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.COMMENT_END_DASH; - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - token.data += "<"; - this.state = State.COMMENT_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.data += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += String.fromCodePoint(cp); - } - } - } - // Comment less-than sign state - //------------------------------------------------------------------ - _stateCommentLessThanSign(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.EXCLAMATION_MARK: { - token.data += "!"; - this.state = State.COMMENT_LESS_THAN_SIGN_BANG; - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - token.data += "<"; - break; - } - default: { - this.state = State.COMMENT; - this._stateComment(cp); - } - } - } - // Comment less-than sign bang state - //------------------------------------------------------------------ - _stateCommentLessThanSignBang(cp) { - if (cp === CODE_POINTS.HYPHEN_MINUS) { - this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH; - } else { - this.state = State.COMMENT; - this._stateComment(cp); - } - } - // Comment less-than sign bang dash state - //------------------------------------------------------------------ - _stateCommentLessThanSignBangDash(cp) { - if (cp === CODE_POINTS.HYPHEN_MINUS) { - this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH; - } else { - this.state = State.COMMENT_END_DASH; - this._stateCommentEndDash(cp); - } - } - // Comment less-than sign bang dash dash state - //------------------------------------------------------------------ - _stateCommentLessThanSignBangDashDash(cp) { - if (cp !== CODE_POINTS.GREATER_THAN_SIGN && cp !== CODE_POINTS.EOF) { - this._err(ERR.nestedComment); - } - this.state = State.COMMENT_END; - this._stateCommentEnd(cp); - } - // Comment end dash state - //------------------------------------------------------------------ - _stateCommentEndDash(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.COMMENT_END; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += "-"; - this.state = State.COMMENT; - this._stateComment(cp); - } - } - } - // Comment end state - //------------------------------------------------------------------ - _stateCommentEnd(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentComment(token); - break; - } - case CODE_POINTS.EXCLAMATION_MARK: { - this.state = State.COMMENT_END_BANG; - break; - } - case CODE_POINTS.HYPHEN_MINUS: { - token.data += "-"; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += "--"; - this.state = State.COMMENT; - this._stateComment(cp); - } - } - } - // Comment end bang state - //------------------------------------------------------------------ - _stateCommentEndBang(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - token.data += "--!"; - this.state = State.COMMENT_END_DASH; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.incorrectlyClosedComment); - this.state = State.DATA; - this.emitCurrentComment(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += "--!"; - this.state = State.COMMENT; - this._stateComment(cp); - } - } - } - // DOCTYPE state - //------------------------------------------------------------------ - _stateDoctype(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State.BEFORE_DOCTYPE_NAME; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.BEFORE_DOCTYPE_NAME; - this._stateBeforeDoctypeName(cp); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - this._createDoctypeToken(null); - const token = this.currentToken; - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingWhitespaceBeforeDoctypeName); - this.state = State.BEFORE_DOCTYPE_NAME; - this._stateBeforeDoctypeName(cp); - } - } - } - // Before DOCTYPE name state - //------------------------------------------------------------------ - _stateBeforeDoctypeName(cp) { - if (isAsciiUpper(cp)) { - this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp))); - this.state = State.DOCTYPE_NAME; - } else - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._createDoctypeToken(REPLACEMENT_CHARACTER); - this.state = State.DOCTYPE_NAME; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypeName); - this._createDoctypeToken(null); - const token = this.currentToken; - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - this._createDoctypeToken(null); - const token = this.currentToken; - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._createDoctypeToken(String.fromCodePoint(cp)); - this.state = State.DOCTYPE_NAME; - } - } - } - // DOCTYPE name state - //------------------------------------------------------------------ - _stateDoctypeName(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State.AFTER_DOCTYPE_NAME; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.name += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); - } - } - } - // After DOCTYPE name state - //------------------------------------------------------------------ - _stateAfterDoctypeName(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - if (this._consumeSequenceIfMatch(SEQUENCES.PUBLIC, false)) { - this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD; - } else if (this._consumeSequenceIfMatch(SEQUENCES.SYSTEM, false)) { - this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD; - } else if (!this._ensureHibernation()) { - this._err(ERR.invalidCharacterSequenceAfterDoctypeName); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - } - // After DOCTYPE public keyword state - //------------------------------------------------------------------ - _stateAfterDoctypePublicKeyword(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER; - break; - } - case CODE_POINTS.QUOTATION_MARK: { - this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword); - token.publicId = ""; - this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword); - token.publicId = ""; - this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypePublicIdentifier); - token.forceQuirks = true; - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // Before DOCTYPE public identifier state - //------------------------------------------------------------------ - _stateBeforeDoctypePublicIdentifier(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.QUOTATION_MARK: { - token.publicId = ""; - this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - token.publicId = ""; - this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypePublicIdentifier); - token.forceQuirks = true; - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // DOCTYPE public identifier (double-quoted) state - //------------------------------------------------------------------ - _stateDoctypePublicIdentifierDoubleQuoted(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.QUOTATION_MARK: { - this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.publicId += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptDoctypePublicIdentifier); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.publicId += String.fromCodePoint(cp); - } - } - } - // DOCTYPE public identifier (single-quoted) state - //------------------------------------------------------------------ - _stateDoctypePublicIdentifierSingleQuoted(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.APOSTROPHE: { - this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.publicId += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptDoctypePublicIdentifier); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.publicId += String.fromCodePoint(cp); - } - } - } - // After DOCTYPE public identifier state - //------------------------------------------------------------------ - _stateAfterDoctypePublicIdentifier(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.QUOTATION_MARK: { - this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers); - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers); - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // Between DOCTYPE public and system identifiers state - //------------------------------------------------------------------ - _stateBetweenDoctypePublicAndSystemIdentifiers(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.QUOTATION_MARK: { - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // After DOCTYPE system keyword state - //------------------------------------------------------------------ - _stateAfterDoctypeSystemKeyword(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER; - break; - } - case CODE_POINTS.QUOTATION_MARK: { - this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword); - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword); - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // Before DOCTYPE system identifier state - //------------------------------------------------------------------ - _stateBeforeDoctypeSystemIdentifier(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.QUOTATION_MARK: { - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // DOCTYPE system identifier (double-quoted) state - //------------------------------------------------------------------ - _stateDoctypeSystemIdentifierDoubleQuoted(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.QUOTATION_MARK: { - this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.systemId += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptDoctypeSystemIdentifier); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.systemId += String.fromCodePoint(cp); - } - } - } - // DOCTYPE system identifier (single-quoted) state - //------------------------------------------------------------------ - _stateDoctypeSystemIdentifierSingleQuoted(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.APOSTROPHE: { - this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.systemId += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptDoctypeSystemIdentifier); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.systemId += String.fromCodePoint(cp); - } - } - } - // After DOCTYPE system identifier state - //------------------------------------------------------------------ - _stateAfterDoctypeSystemIdentifier(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier); - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // Bogus DOCTYPE state - //------------------------------------------------------------------ - _stateBogusDoctype(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - break; - } - case CODE_POINTS.EOF: { - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: - } - } - // CDATA section state - //------------------------------------------------------------------ - _stateCdataSection(cp) { - switch (cp) { - case CODE_POINTS.RIGHT_SQUARE_BRACKET: { - this.state = State.CDATA_SECTION_BRACKET; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInCdata); - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // CDATA section bracket state - //------------------------------------------------------------------ - _stateCdataSectionBracket(cp) { - if (cp === CODE_POINTS.RIGHT_SQUARE_BRACKET) { - this.state = State.CDATA_SECTION_END; - } else { - this._emitChars("]"); - this.state = State.CDATA_SECTION; - this._stateCdataSection(cp); - } - } - // CDATA section end state - //------------------------------------------------------------------ - _stateCdataSectionEnd(cp) { - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - break; - } - case CODE_POINTS.RIGHT_SQUARE_BRACKET: { - this._emitChars("]"); - break; - } - default: { - this._emitChars("]]"); - this.state = State.CDATA_SECTION; - this._stateCdataSection(cp); - } - } - } - // Character reference state - //------------------------------------------------------------------ - _stateCharacterReference(cp) { - if (cp === CODE_POINTS.NUMBER_SIGN) { - this.state = State.NUMERIC_CHARACTER_REFERENCE; - } else if (isAsciiAlphaNumeric2(cp)) { - this.state = State.NAMED_CHARACTER_REFERENCE; - this._stateNamedCharacterReference(cp); - } else { - this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND); - this._reconsumeInState(this.returnState, cp); - } - } - // Named character reference state - //------------------------------------------------------------------ - _stateNamedCharacterReference(cp) { - const matchResult = this._matchNamedCharacterReference(cp); - if (this._ensureHibernation()) { - } else if (matchResult) { - for (let i = 0; i < matchResult.length; i++) { - this._flushCodePointConsumedAsCharacterReference(matchResult[i]); - } - this.state = this.returnState; - } else { - this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND); - this.state = State.AMBIGUOUS_AMPERSAND; - } - } - // Ambiguos ampersand state - //------------------------------------------------------------------ - _stateAmbiguousAmpersand(cp) { - if (isAsciiAlphaNumeric2(cp)) { - this._flushCodePointConsumedAsCharacterReference(cp); - } else { - if (cp === CODE_POINTS.SEMICOLON) { - this._err(ERR.unknownNamedCharacterReference); - } - this._reconsumeInState(this.returnState, cp); - } - } - // Numeric character reference state - //------------------------------------------------------------------ - _stateNumericCharacterReference(cp) { - this.charRefCode = 0; - if (cp === CODE_POINTS.LATIN_SMALL_X || cp === CODE_POINTS.LATIN_CAPITAL_X) { - this.state = State.HEXADEMICAL_CHARACTER_REFERENCE_START; - } else if (isAsciiDigit(cp)) { - this.state = State.DECIMAL_CHARACTER_REFERENCE; - this._stateDecimalCharacterReference(cp); - } else { - this._err(ERR.absenceOfDigitsInNumericCharacterReference); - this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND); - this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.NUMBER_SIGN); - this._reconsumeInState(this.returnState, cp); - } - } - // Hexademical character reference start state - //------------------------------------------------------------------ - _stateHexademicalCharacterReferenceStart(cp) { - if (isAsciiHexDigit(cp)) { - this.state = State.HEXADEMICAL_CHARACTER_REFERENCE; - this._stateHexademicalCharacterReference(cp); - } else { - this._err(ERR.absenceOfDigitsInNumericCharacterReference); - this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND); - this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.NUMBER_SIGN); - this._unconsume(2); - this.state = this.returnState; - } - } - // Hexademical character reference state - //------------------------------------------------------------------ - _stateHexademicalCharacterReference(cp) { - if (isAsciiUpperHexDigit(cp)) { - this.charRefCode = this.charRefCode * 16 + cp - 55; - } else if (isAsciiLowerHexDigit(cp)) { - this.charRefCode = this.charRefCode * 16 + cp - 87; - } else if (isAsciiDigit(cp)) { - this.charRefCode = this.charRefCode * 16 + cp - 48; - } else if (cp === CODE_POINTS.SEMICOLON) { - this.state = State.NUMERIC_CHARACTER_REFERENCE_END; - } else { - this._err(ERR.missingSemicolonAfterCharacterReference); - this.state = State.NUMERIC_CHARACTER_REFERENCE_END; - this._stateNumericCharacterReferenceEnd(cp); - } - } - // Decimal character reference state - //------------------------------------------------------------------ - _stateDecimalCharacterReference(cp) { - if (isAsciiDigit(cp)) { - this.charRefCode = this.charRefCode * 10 + cp - 48; - } else if (cp === CODE_POINTS.SEMICOLON) { - this.state = State.NUMERIC_CHARACTER_REFERENCE_END; - } else { - this._err(ERR.missingSemicolonAfterCharacterReference); - this.state = State.NUMERIC_CHARACTER_REFERENCE_END; - this._stateNumericCharacterReferenceEnd(cp); - } - } - // Numeric character reference end state - //------------------------------------------------------------------ - _stateNumericCharacterReferenceEnd(cp) { - if (this.charRefCode === CODE_POINTS.NULL) { - this._err(ERR.nullCharacterReference); - this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER; - } else if (this.charRefCode > 1114111) { - this._err(ERR.characterReferenceOutsideUnicodeRange); - this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER; - } else if (isSurrogate(this.charRefCode)) { - this._err(ERR.surrogateCharacterReference); - this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER; - } else if (isUndefinedCodePoint(this.charRefCode)) { - this._err(ERR.noncharacterCharacterReference); - } else if (isControlCodePoint(this.charRefCode) || this.charRefCode === CODE_POINTS.CARRIAGE_RETURN) { - this._err(ERR.controlCharacterReference); - const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS.get(this.charRefCode); - if (replacement !== void 0) { - this.charRefCode = replacement; - } - } - this._flushCodePointConsumedAsCharacterReference(this.charRefCode); - this._reconsumeInState(this.returnState, cp); - } -}; - -// node_modules/parse5/dist/parser/open-element-stack.js -var IMPLICIT_END_TAG_REQUIRED = /* @__PURE__ */ new Set([TAG_ID.DD, TAG_ID.DT, TAG_ID.LI, TAG_ID.OPTGROUP, TAG_ID.OPTION, TAG_ID.P, TAG_ID.RB, TAG_ID.RP, TAG_ID.RT, TAG_ID.RTC]); -var IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = /* @__PURE__ */ new Set([ - ...IMPLICIT_END_TAG_REQUIRED, - TAG_ID.CAPTION, - TAG_ID.COLGROUP, - TAG_ID.TBODY, - TAG_ID.TD, - TAG_ID.TFOOT, - TAG_ID.TH, - TAG_ID.THEAD, - TAG_ID.TR -]); -var SCOPING_ELEMENT_NS = /* @__PURE__ */ new Map([ - [TAG_ID.APPLET, NS.HTML], - [TAG_ID.CAPTION, NS.HTML], - [TAG_ID.HTML, NS.HTML], - [TAG_ID.MARQUEE, NS.HTML], - [TAG_ID.OBJECT, NS.HTML], - [TAG_ID.TABLE, NS.HTML], - [TAG_ID.TD, NS.HTML], - [TAG_ID.TEMPLATE, NS.HTML], - [TAG_ID.TH, NS.HTML], - [TAG_ID.ANNOTATION_XML, NS.MATHML], - [TAG_ID.MI, NS.MATHML], - [TAG_ID.MN, NS.MATHML], - [TAG_ID.MO, NS.MATHML], - [TAG_ID.MS, NS.MATHML], - [TAG_ID.MTEXT, NS.MATHML], - [TAG_ID.DESC, NS.SVG], - [TAG_ID.FOREIGN_OBJECT, NS.SVG], - [TAG_ID.TITLE, NS.SVG] -]); -var NAMED_HEADERS = [TAG_ID.H1, TAG_ID.H2, TAG_ID.H3, TAG_ID.H4, TAG_ID.H5, TAG_ID.H6]; -var TABLE_ROW_CONTEXT = [TAG_ID.TR, TAG_ID.TEMPLATE, TAG_ID.HTML]; -var TABLE_BODY_CONTEXT = [TAG_ID.TBODY, TAG_ID.TFOOT, TAG_ID.THEAD, TAG_ID.TEMPLATE, TAG_ID.HTML]; -var TABLE_CONTEXT = [TAG_ID.TABLE, TAG_ID.TEMPLATE, TAG_ID.HTML]; -var TABLE_CELLS = [TAG_ID.TD, TAG_ID.TH]; -var OpenElementStack = class { - get currentTmplContentOrNode() { - return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current; - } - constructor(document, treeAdapter, handler) { - this.treeAdapter = treeAdapter; - this.handler = handler; - this.items = []; - this.tagIDs = []; - this.stackTop = -1; - this.tmplCount = 0; - this.currentTagId = TAG_ID.UNKNOWN; - this.current = document; - } - //Index of element - _indexOf(element) { - return this.items.lastIndexOf(element, this.stackTop); - } - //Update current element - _isInTemplate() { - return this.currentTagId === TAG_ID.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML; - } - _updateCurrentElement() { - this.current = this.items[this.stackTop]; - this.currentTagId = this.tagIDs[this.stackTop]; - } - //Mutations - push(element, tagID) { - this.stackTop++; - this.items[this.stackTop] = element; - this.current = element; - this.tagIDs[this.stackTop] = tagID; - this.currentTagId = tagID; - if (this._isInTemplate()) { - this.tmplCount++; - } - this.handler.onItemPush(element, tagID, true); - } - pop() { - const popped = this.current; - if (this.tmplCount > 0 && this._isInTemplate()) { - this.tmplCount--; - } - this.stackTop--; - this._updateCurrentElement(); - this.handler.onItemPop(popped, true); - } - replace(oldElement, newElement) { - const idx = this._indexOf(oldElement); - this.items[idx] = newElement; - if (idx === this.stackTop) { - this.current = newElement; - } - } - insertAfter(referenceElement, newElement, newElementID) { - const insertionIdx = this._indexOf(referenceElement) + 1; - this.items.splice(insertionIdx, 0, newElement); - this.tagIDs.splice(insertionIdx, 0, newElementID); - this.stackTop++; - if (insertionIdx === this.stackTop) { - this._updateCurrentElement(); - } - this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop); - } - popUntilTagNamePopped(tagName) { - let targetIdx = this.stackTop + 1; - do { - targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1); - } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML); - this.shortenToLength(targetIdx < 0 ? 0 : targetIdx); - } - shortenToLength(idx) { - while (this.stackTop >= idx) { - const popped = this.current; - if (this.tmplCount > 0 && this._isInTemplate()) { - this.tmplCount -= 1; - } - this.stackTop--; - this._updateCurrentElement(); - this.handler.onItemPop(popped, this.stackTop < idx); - } - } - popUntilElementPopped(element) { - const idx = this._indexOf(element); - this.shortenToLength(idx < 0 ? 0 : idx); - } - popUntilPopped(tagNames, targetNS) { - const idx = this._indexOfTagNames(tagNames, targetNS); - this.shortenToLength(idx < 0 ? 0 : idx); - } - popUntilNumberedHeaderPopped() { - this.popUntilPopped(NAMED_HEADERS, NS.HTML); - } - popUntilTableCellPopped() { - this.popUntilPopped(TABLE_CELLS, NS.HTML); - } - popAllUpToHtmlElement() { - this.tmplCount = 0; - this.shortenToLength(1); - } - _indexOfTagNames(tagNames, namespace) { - for (let i = this.stackTop; i >= 0; i--) { - if (tagNames.includes(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) { - return i; - } - } - return -1; - } - clearBackTo(tagNames, targetNS) { - const idx = this._indexOfTagNames(tagNames, targetNS); - this.shortenToLength(idx + 1); - } - clearBackToTableContext() { - this.clearBackTo(TABLE_CONTEXT, NS.HTML); - } - clearBackToTableBodyContext() { - this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML); - } - clearBackToTableRowContext() { - this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML); - } - remove(element) { - const idx = this._indexOf(element); - if (idx >= 0) { - if (idx === this.stackTop) { - this.pop(); - } else { - this.items.splice(idx, 1); - this.tagIDs.splice(idx, 1); - this.stackTop--; - this._updateCurrentElement(); - this.handler.onItemPop(element, false); - } - } - } - //Search - tryPeekProperlyNestedBodyElement() { - return this.stackTop >= 1 && this.tagIDs[1] === TAG_ID.BODY ? this.items[1] : null; - } - contains(element) { - return this._indexOf(element) > -1; - } - getCommonAncestor(element) { - const elementIdx = this._indexOf(element) - 1; - return elementIdx >= 0 ? this.items[elementIdx] : null; - } - isRootHtmlElementCurrent() { - return this.stackTop === 0 && this.tagIDs[0] === TAG_ID.HTML; - } - //Element in scope - hasInScope(tagName) { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - const ns = this.treeAdapter.getNamespaceURI(this.items[i]); - if (tn === tagName && ns === NS.HTML) { - return true; - } - if (SCOPING_ELEMENT_NS.get(tn) === ns) { - return false; - } - } - return true; - } - hasNumberedHeaderInScope() { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - const ns = this.treeAdapter.getNamespaceURI(this.items[i]); - if (isNumberedHeader(tn) && ns === NS.HTML) { - return true; - } - if (SCOPING_ELEMENT_NS.get(tn) === ns) { - return false; - } - } - return true; - } - hasInListItemScope(tagName) { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - const ns = this.treeAdapter.getNamespaceURI(this.items[i]); - if (tn === tagName && ns === NS.HTML) { - return true; - } - if ((tn === TAG_ID.UL || tn === TAG_ID.OL) && ns === NS.HTML || SCOPING_ELEMENT_NS.get(tn) === ns) { - return false; - } - } - return true; - } - hasInButtonScope(tagName) { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - const ns = this.treeAdapter.getNamespaceURI(this.items[i]); - if (tn === tagName && ns === NS.HTML) { - return true; - } - if (tn === TAG_ID.BUTTON && ns === NS.HTML || SCOPING_ELEMENT_NS.get(tn) === ns) { - return false; - } - } - return true; - } - hasInTableScope(tagName) { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - const ns = this.treeAdapter.getNamespaceURI(this.items[i]); - if (ns !== NS.HTML) { - continue; - } - if (tn === tagName) { - return true; - } - if (tn === TAG_ID.TABLE || tn === TAG_ID.TEMPLATE || tn === TAG_ID.HTML) { - return false; - } - } - return true; - } - hasTableBodyContextInTableScope() { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - const ns = this.treeAdapter.getNamespaceURI(this.items[i]); - if (ns !== NS.HTML) { - continue; - } - if (tn === TAG_ID.TBODY || tn === TAG_ID.THEAD || tn === TAG_ID.TFOOT) { - return true; - } - if (tn === TAG_ID.TABLE || tn === TAG_ID.HTML) { - return false; - } - } - return true; - } - hasInSelectScope(tagName) { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - const ns = this.treeAdapter.getNamespaceURI(this.items[i]); - if (ns !== NS.HTML) { - continue; - } - if (tn === tagName) { - return true; - } - if (tn !== TAG_ID.OPTION && tn !== TAG_ID.OPTGROUP) { - return false; - } - } - return true; - } - //Implied end tags - generateImpliedEndTags() { - while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) { - this.pop(); - } - } - generateImpliedEndTagsThoroughly() { - while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) { - this.pop(); - } - } - generateImpliedEndTagsWithExclusion(exclusionId) { - while (this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) { - this.pop(); - } - } -}; - -// node_modules/parse5/dist/parser/formatting-element-list.js -var NOAH_ARK_CAPACITY = 3; -var EntryType; -(function(EntryType2) { - EntryType2[EntryType2["Marker"] = 0] = "Marker"; - EntryType2[EntryType2["Element"] = 1] = "Element"; -})(EntryType = EntryType || (EntryType = {})); -var MARKER = { type: EntryType.Marker }; -var FormattingElementList = class { - constructor(treeAdapter) { - this.treeAdapter = treeAdapter; - this.entries = []; - this.bookmark = null; - } - //Noah Ark's condition - //OPTIMIZATION: at first we try to find possible candidates for exclusion using - //lightweight heuristics without thorough attributes check. - _getNoahArkConditionCandidates(newElement, neAttrs) { - const candidates = []; - const neAttrsLength = neAttrs.length; - const neTagName = this.treeAdapter.getTagName(newElement); - const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement); - for (let i = 0; i < this.entries.length; i++) { - const entry = this.entries[i]; - if (entry.type === EntryType.Marker) { - break; - } - const { element } = entry; - if (this.treeAdapter.getTagName(element) === neTagName && this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) { - const elementAttrs = this.treeAdapter.getAttrList(element); - if (elementAttrs.length === neAttrsLength) { - candidates.push({ idx: i, attrs: elementAttrs }); - } - } - } - return candidates; - } - _ensureNoahArkCondition(newElement) { - if (this.entries.length < NOAH_ARK_CAPACITY) - return; - const neAttrs = this.treeAdapter.getAttrList(newElement); - const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs); - if (candidates.length < NOAH_ARK_CAPACITY) - return; - const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value])); - let validCandidates = 0; - for (let i = 0; i < candidates.length; i++) { - const candidate = candidates[i]; - if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) { - validCandidates += 1; - if (validCandidates >= NOAH_ARK_CAPACITY) { - this.entries.splice(candidate.idx, 1); - } - } - } - } - //Mutations - insertMarker() { - this.entries.unshift(MARKER); - } - pushElement(element, token) { - this._ensureNoahArkCondition(element); - this.entries.unshift({ - type: EntryType.Element, - element, - token - }); - } - insertElementAfterBookmark(element, token) { - const bookmarkIdx = this.entries.indexOf(this.bookmark); - this.entries.splice(bookmarkIdx, 0, { - type: EntryType.Element, - element, - token - }); - } - removeEntry(entry) { - const entryIndex = this.entries.indexOf(entry); - if (entryIndex >= 0) { - this.entries.splice(entryIndex, 1); - } - } - /** - * Clears the list of formatting elements up to the last marker. - * - * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker - */ - clearToLastMarker() { - const markerIdx = this.entries.indexOf(MARKER); - if (markerIdx >= 0) { - this.entries.splice(0, markerIdx + 1); - } else { - this.entries.length = 0; - } - } - //Search - getElementEntryInScopeWithTagName(tagName) { - const entry = this.entries.find((entry2) => entry2.type === EntryType.Marker || this.treeAdapter.getTagName(entry2.element) === tagName); - return entry && entry.type === EntryType.Element ? entry : null; - } - getElementEntry(element) { - return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element); - } -}; - -// node_modules/parse5/dist/tree-adapters/default.js -function createTextNode(value) { - return { - nodeName: "#text", - value, - parentNode: null - }; -} -var defaultTreeAdapter = { - //Node construction - createDocument() { - return { - nodeName: "#document", - mode: DOCUMENT_MODE.NO_QUIRKS, - childNodes: [] - }; - }, - createDocumentFragment() { - return { - nodeName: "#document-fragment", - childNodes: [] - }; - }, - createElement(tagName, namespaceURI, attrs) { - return { - nodeName: tagName, - tagName, - attrs, - namespaceURI, - childNodes: [], - parentNode: null - }; - }, - createCommentNode(data) { - return { - nodeName: "#comment", - data, - parentNode: null - }; - }, - //Tree mutation - appendChild(parentNode, newNode) { - parentNode.childNodes.push(newNode); - newNode.parentNode = parentNode; - }, - insertBefore(parentNode, newNode, referenceNode) { - const insertionIdx = parentNode.childNodes.indexOf(referenceNode); - parentNode.childNodes.splice(insertionIdx, 0, newNode); - newNode.parentNode = parentNode; - }, - setTemplateContent(templateElement, contentElement) { - templateElement.content = contentElement; - }, - getTemplateContent(templateElement) { - return templateElement.content; - }, - setDocumentType(document, name, publicId, systemId) { - const doctypeNode = document.childNodes.find((node) => node.nodeName === "#documentType"); - if (doctypeNode) { - doctypeNode.name = name; - doctypeNode.publicId = publicId; - doctypeNode.systemId = systemId; - } else { - const node = { - nodeName: "#documentType", - name, - publicId, - systemId, - parentNode: null - }; - defaultTreeAdapter.appendChild(document, node); - } - }, - setDocumentMode(document, mode) { - document.mode = mode; - }, - getDocumentMode(document) { - return document.mode; - }, - detachNode(node) { - if (node.parentNode) { - const idx = node.parentNode.childNodes.indexOf(node); - node.parentNode.childNodes.splice(idx, 1); - node.parentNode = null; - } - }, - insertText(parentNode, text) { - if (parentNode.childNodes.length > 0) { - const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1]; - if (defaultTreeAdapter.isTextNode(prevNode)) { - prevNode.value += text; - return; - } - } - defaultTreeAdapter.appendChild(parentNode, createTextNode(text)); - }, - insertTextBefore(parentNode, text, referenceNode) { - const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1]; - if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) { - prevNode.value += text; - } else { - defaultTreeAdapter.insertBefore(parentNode, createTextNode(text), referenceNode); - } - }, - adoptAttributes(recipient, attrs) { - const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name)); - for (let j = 0; j < attrs.length; j++) { - if (!recipientAttrsMap.has(attrs[j].name)) { - recipient.attrs.push(attrs[j]); - } - } - }, - //Tree traversing - getFirstChild(node) { - return node.childNodes[0]; - }, - getChildNodes(node) { - return node.childNodes; - }, - getParentNode(node) { - return node.parentNode; - }, - getAttrList(element) { - return element.attrs; - }, - //Node data - getTagName(element) { - return element.tagName; - }, - getNamespaceURI(element) { - return element.namespaceURI; - }, - getTextNodeContent(textNode) { - return textNode.value; - }, - getCommentNodeContent(commentNode) { - return commentNode.data; - }, - getDocumentTypeNodeName(doctypeNode) { - return doctypeNode.name; - }, - getDocumentTypeNodePublicId(doctypeNode) { - return doctypeNode.publicId; - }, - getDocumentTypeNodeSystemId(doctypeNode) { - return doctypeNode.systemId; - }, - //Node types - isTextNode(node) { - return node.nodeName === "#text"; - }, - isCommentNode(node) { - return node.nodeName === "#comment"; - }, - isDocumentTypeNode(node) { - return node.nodeName === "#documentType"; - }, - isElementNode(node) { - return Object.prototype.hasOwnProperty.call(node, "tagName"); - }, - // Source code location - setNodeSourceCodeLocation(node, location) { - node.sourceCodeLocation = location; - }, - getNodeSourceCodeLocation(node) { - return node.sourceCodeLocation; - }, - updateNodeSourceCodeLocation(node, endLocation) { - node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation }; - } -}; - -// node_modules/parse5/dist/common/doctype.js -var VALID_DOCTYPE_NAME = "html"; -var VALID_SYSTEM_ID = "about:legacy-compat"; -var QUIRKS_MODE_SYSTEM_ID = "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"; -var QUIRKS_MODE_PUBLIC_ID_PREFIXES = [ - "+//silmaril//dtd html pro v0r11 19970101//", - "-//as//dtd html 3.0 aswedit + extensions//", - "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", - "-//ietf//dtd html 2.0 level 1//", - "-//ietf//dtd html 2.0 level 2//", - "-//ietf//dtd html 2.0 strict level 1//", - "-//ietf//dtd html 2.0 strict level 2//", - "-//ietf//dtd html 2.0 strict//", - "-//ietf//dtd html 2.0//", - "-//ietf//dtd html 2.1e//", - "-//ietf//dtd html 3.0//", - "-//ietf//dtd html 3.2 final//", - "-//ietf//dtd html 3.2//", - "-//ietf//dtd html 3//", - "-//ietf//dtd html level 0//", - "-//ietf//dtd html level 1//", - "-//ietf//dtd html level 2//", - "-//ietf//dtd html level 3//", - "-//ietf//dtd html strict level 0//", - "-//ietf//dtd html strict level 1//", - "-//ietf//dtd html strict level 2//", - "-//ietf//dtd html strict level 3//", - "-//ietf//dtd html strict//", - "-//ietf//dtd html//", - "-//metrius//dtd metrius presentational//", - "-//microsoft//dtd internet explorer 2.0 html strict//", - "-//microsoft//dtd internet explorer 2.0 html//", - "-//microsoft//dtd internet explorer 2.0 tables//", - "-//microsoft//dtd internet explorer 3.0 html strict//", - "-//microsoft//dtd internet explorer 3.0 html//", - "-//microsoft//dtd internet explorer 3.0 tables//", - "-//netscape comm. corp.//dtd html//", - "-//netscape comm. corp.//dtd strict html//", - "-//o'reilly and associates//dtd html 2.0//", - "-//o'reilly and associates//dtd html extended 1.0//", - "-//o'reilly and associates//dtd html extended relaxed 1.0//", - "-//sq//dtd html 2.0 hotmetal + extensions//", - "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//", - "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//", - "-//spyglass//dtd html 2.0 extended//", - "-//sun microsystems corp.//dtd hotjava html//", - "-//sun microsystems corp.//dtd hotjava strict html//", - "-//w3c//dtd html 3 1995-03-24//", - "-//w3c//dtd html 3.2 draft//", - "-//w3c//dtd html 3.2 final//", - "-//w3c//dtd html 3.2//", - "-//w3c//dtd html 3.2s draft//", - "-//w3c//dtd html 4.0 frameset//", - "-//w3c//dtd html 4.0 transitional//", - "-//w3c//dtd html experimental 19960712//", - "-//w3c//dtd html experimental 970421//", - "-//w3c//dtd w3 html//", - "-//w3o//dtd w3 html 3.0//", - "-//webtechs//dtd mozilla html 2.0//", - "-//webtechs//dtd mozilla html//" -]; -var QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [ - ...QUIRKS_MODE_PUBLIC_ID_PREFIXES, - "-//w3c//dtd html 4.01 frameset//", - "-//w3c//dtd html 4.01 transitional//" -]; -var QUIRKS_MODE_PUBLIC_IDS = /* @__PURE__ */ new Set([ - "-//w3o//dtd w3 html strict 3.0//en//", - "-/w3c/dtd html 4.0 transitional/en", - "html" -]); -var LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ["-//w3c//dtd xhtml 1.0 frameset//", "-//w3c//dtd xhtml 1.0 transitional//"]; -var LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [ - ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES, - "-//w3c//dtd html 4.01 frameset//", - "-//w3c//dtd html 4.01 transitional//" -]; -function hasPrefix(publicId, prefixes) { - return prefixes.some((prefix) => publicId.startsWith(prefix)); -} -function isConforming(token) { - return token.name === VALID_DOCTYPE_NAME && token.publicId === null && (token.systemId === null || token.systemId === VALID_SYSTEM_ID); -} -function getDocumentMode(token) { - if (token.name !== VALID_DOCTYPE_NAME) { - return DOCUMENT_MODE.QUIRKS; - } - const { systemId } = token; - if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) { - return DOCUMENT_MODE.QUIRKS; - } - let { publicId } = token; - if (publicId !== null) { - publicId = publicId.toLowerCase(); - if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) { - return DOCUMENT_MODE.QUIRKS; - } - let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES; - if (hasPrefix(publicId, prefixes)) { - return DOCUMENT_MODE.QUIRKS; - } - prefixes = systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES; - if (hasPrefix(publicId, prefixes)) { - return DOCUMENT_MODE.LIMITED_QUIRKS; - } - } - return DOCUMENT_MODE.NO_QUIRKS; -} - -// node_modules/parse5/dist/common/foreign-content.js -var foreign_content_exports = {}; -__export(foreign_content_exports, { - SVG_TAG_NAMES_ADJUSTMENT_MAP: () => SVG_TAG_NAMES_ADJUSTMENT_MAP, - adjustTokenMathMLAttrs: () => adjustTokenMathMLAttrs, - adjustTokenSVGAttrs: () => adjustTokenSVGAttrs, - adjustTokenSVGTagName: () => adjustTokenSVGTagName, - adjustTokenXMLAttrs: () => adjustTokenXMLAttrs, - causesExit: () => causesExit, - isIntegrationPoint: () => isIntegrationPoint -}); -var MIME_TYPES = { - TEXT_HTML: "text/html", - APPLICATION_XML: "application/xhtml+xml" -}; -var DEFINITION_URL_ATTR = "definitionurl"; -var ADJUSTED_DEFINITION_URL_ATTR = "definitionURL"; -var SVG_ATTRS_ADJUSTMENT_MAP = new Map([ - "attributeName", - "attributeType", - "baseFrequency", - "baseProfile", - "calcMode", - "clipPathUnits", - "diffuseConstant", - "edgeMode", - "filterUnits", - "glyphRef", - "gradientTransform", - "gradientUnits", - "kernelMatrix", - "kernelUnitLength", - "keyPoints", - "keySplines", - "keyTimes", - "lengthAdjust", - "limitingConeAngle", - "markerHeight", - "markerUnits", - "markerWidth", - "maskContentUnits", - "maskUnits", - "numOctaves", - "pathLength", - "patternContentUnits", - "patternTransform", - "patternUnits", - "pointsAtX", - "pointsAtY", - "pointsAtZ", - "preserveAlpha", - "preserveAspectRatio", - "primitiveUnits", - "refX", - "refY", - "repeatCount", - "repeatDur", - "requiredExtensions", - "requiredFeatures", - "specularConstant", - "specularExponent", - "spreadMethod", - "startOffset", - "stdDeviation", - "stitchTiles", - "surfaceScale", - "systemLanguage", - "tableValues", - "targetX", - "targetY", - "textLength", - "viewBox", - "viewTarget", - "xChannelSelector", - "yChannelSelector", - "zoomAndPan" -].map((attr) => [attr.toLowerCase(), attr])); -var XML_ATTRS_ADJUSTMENT_MAP = /* @__PURE__ */ new Map([ - ["xlink:actuate", { prefix: "xlink", name: "actuate", namespace: NS.XLINK }], - ["xlink:arcrole", { prefix: "xlink", name: "arcrole", namespace: NS.XLINK }], - ["xlink:href", { prefix: "xlink", name: "href", namespace: NS.XLINK }], - ["xlink:role", { prefix: "xlink", name: "role", namespace: NS.XLINK }], - ["xlink:show", { prefix: "xlink", name: "show", namespace: NS.XLINK }], - ["xlink:title", { prefix: "xlink", name: "title", namespace: NS.XLINK }], - ["xlink:type", { prefix: "xlink", name: "type", namespace: NS.XLINK }], - ["xml:base", { prefix: "xml", name: "base", namespace: NS.XML }], - ["xml:lang", { prefix: "xml", name: "lang", namespace: NS.XML }], - ["xml:space", { prefix: "xml", name: "space", namespace: NS.XML }], - ["xmlns", { prefix: "", name: "xmlns", namespace: NS.XMLNS }], - ["xmlns:xlink", { prefix: "xmlns", name: "xlink", namespace: NS.XMLNS }] -]); -var SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([ - "altGlyph", - "altGlyphDef", - "altGlyphItem", - "animateColor", - "animateMotion", - "animateTransform", - "clipPath", - "feBlend", - "feColorMatrix", - "feComponentTransfer", - "feComposite", - "feConvolveMatrix", - "feDiffuseLighting", - "feDisplacementMap", - "feDistantLight", - "feFlood", - "feFuncA", - "feFuncB", - "feFuncG", - "feFuncR", - "feGaussianBlur", - "feImage", - "feMerge", - "feMergeNode", - "feMorphology", - "feOffset", - "fePointLight", - "feSpecularLighting", - "feSpotLight", - "feTile", - "feTurbulence", - "foreignObject", - "glyphRef", - "linearGradient", - "radialGradient", - "textPath" -].map((tn) => [tn.toLowerCase(), tn])); -var EXITS_FOREIGN_CONTENT = /* @__PURE__ */ new Set([ - TAG_ID.B, - TAG_ID.BIG, - TAG_ID.BLOCKQUOTE, - TAG_ID.BODY, - TAG_ID.BR, - TAG_ID.CENTER, - TAG_ID.CODE, - TAG_ID.DD, - TAG_ID.DIV, - TAG_ID.DL, - TAG_ID.DT, - TAG_ID.EM, - TAG_ID.EMBED, - TAG_ID.H1, - TAG_ID.H2, - TAG_ID.H3, - TAG_ID.H4, - TAG_ID.H5, - TAG_ID.H6, - TAG_ID.HEAD, - TAG_ID.HR, - TAG_ID.I, - TAG_ID.IMG, - TAG_ID.LI, - TAG_ID.LISTING, - TAG_ID.MENU, - TAG_ID.META, - TAG_ID.NOBR, - TAG_ID.OL, - TAG_ID.P, - TAG_ID.PRE, - TAG_ID.RUBY, - TAG_ID.S, - TAG_ID.SMALL, - TAG_ID.SPAN, - TAG_ID.STRONG, - TAG_ID.STRIKE, - TAG_ID.SUB, - TAG_ID.SUP, - TAG_ID.TABLE, - TAG_ID.TT, - TAG_ID.U, - TAG_ID.UL, - TAG_ID.VAR -]); -function causesExit(startTagToken) { - const tn = startTagToken.tagID; - const isFontWithAttrs = tn === TAG_ID.FONT && startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE); - return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn); -} -function adjustTokenMathMLAttrs(token) { - for (let i = 0; i < token.attrs.length; i++) { - if (token.attrs[i].name === DEFINITION_URL_ATTR) { - token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR; - break; - } - } -} -function adjustTokenSVGAttrs(token) { - for (let i = 0; i < token.attrs.length; i++) { - const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name); - if (adjustedAttrName != null) { - token.attrs[i].name = adjustedAttrName; - } - } -} -function adjustTokenXMLAttrs(token) { - for (let i = 0; i < token.attrs.length; i++) { - const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name); - if (adjustedAttrEntry) { - token.attrs[i].prefix = adjustedAttrEntry.prefix; - token.attrs[i].name = adjustedAttrEntry.name; - token.attrs[i].namespace = adjustedAttrEntry.namespace; - } - } -} -function adjustTokenSVGTagName(token) { - const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName); - if (adjustedTagName != null) { - token.tagName = adjustedTagName; - token.tagID = getTagID(token.tagName); - } -} -function isMathMLTextIntegrationPoint(tn, ns) { - return ns === NS.MATHML && (tn === TAG_ID.MI || tn === TAG_ID.MO || tn === TAG_ID.MN || tn === TAG_ID.MS || tn === TAG_ID.MTEXT); -} -function isHtmlIntegrationPoint(tn, ns, attrs) { - if (ns === NS.MATHML && tn === TAG_ID.ANNOTATION_XML) { - for (let i = 0; i < attrs.length; i++) { - if (attrs[i].name === ATTRS.ENCODING) { - const value = attrs[i].value.toLowerCase(); - return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML; - } - } - } - return ns === NS.SVG && (tn === TAG_ID.FOREIGN_OBJECT || tn === TAG_ID.DESC || tn === TAG_ID.TITLE); -} -function isIntegrationPoint(tn, ns, attrs, foreignNS) { - return (!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs) || (!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns); -} - -// node_modules/parse5/dist/parser/index.js -var HIDDEN_INPUT_TYPE = "hidden"; -var AA_OUTER_LOOP_ITER = 8; -var AA_INNER_LOOP_ITER = 3; -var InsertionMode; -(function(InsertionMode2) { - InsertionMode2[InsertionMode2["INITIAL"] = 0] = "INITIAL"; - InsertionMode2[InsertionMode2["BEFORE_HTML"] = 1] = "BEFORE_HTML"; - InsertionMode2[InsertionMode2["BEFORE_HEAD"] = 2] = "BEFORE_HEAD"; - InsertionMode2[InsertionMode2["IN_HEAD"] = 3] = "IN_HEAD"; - InsertionMode2[InsertionMode2["IN_HEAD_NO_SCRIPT"] = 4] = "IN_HEAD_NO_SCRIPT"; - InsertionMode2[InsertionMode2["AFTER_HEAD"] = 5] = "AFTER_HEAD"; - InsertionMode2[InsertionMode2["IN_BODY"] = 6] = "IN_BODY"; - InsertionMode2[InsertionMode2["TEXT"] = 7] = "TEXT"; - InsertionMode2[InsertionMode2["IN_TABLE"] = 8] = "IN_TABLE"; - InsertionMode2[InsertionMode2["IN_TABLE_TEXT"] = 9] = "IN_TABLE_TEXT"; - InsertionMode2[InsertionMode2["IN_CAPTION"] = 10] = "IN_CAPTION"; - InsertionMode2[InsertionMode2["IN_COLUMN_GROUP"] = 11] = "IN_COLUMN_GROUP"; - InsertionMode2[InsertionMode2["IN_TABLE_BODY"] = 12] = "IN_TABLE_BODY"; - InsertionMode2[InsertionMode2["IN_ROW"] = 13] = "IN_ROW"; - InsertionMode2[InsertionMode2["IN_CELL"] = 14] = "IN_CELL"; - InsertionMode2[InsertionMode2["IN_SELECT"] = 15] = "IN_SELECT"; - InsertionMode2[InsertionMode2["IN_SELECT_IN_TABLE"] = 16] = "IN_SELECT_IN_TABLE"; - InsertionMode2[InsertionMode2["IN_TEMPLATE"] = 17] = "IN_TEMPLATE"; - InsertionMode2[InsertionMode2["AFTER_BODY"] = 18] = "AFTER_BODY"; - InsertionMode2[InsertionMode2["IN_FRAMESET"] = 19] = "IN_FRAMESET"; - InsertionMode2[InsertionMode2["AFTER_FRAMESET"] = 20] = "AFTER_FRAMESET"; - InsertionMode2[InsertionMode2["AFTER_AFTER_BODY"] = 21] = "AFTER_AFTER_BODY"; - InsertionMode2[InsertionMode2["AFTER_AFTER_FRAMESET"] = 22] = "AFTER_AFTER_FRAMESET"; -})(InsertionMode || (InsertionMode = {})); -var BASE_LOC = { - startLine: -1, - startCol: -1, - startOffset: -1, - endLine: -1, - endCol: -1, - endOffset: -1 -}; -var TABLE_STRUCTURE_TAGS = /* @__PURE__ */ new Set([TAG_ID.TABLE, TAG_ID.TBODY, TAG_ID.TFOOT, TAG_ID.THEAD, TAG_ID.TR]); -var defaultParserOptions = { - scriptingEnabled: true, - sourceCodeLocationInfo: false, - treeAdapter: defaultTreeAdapter, - onParseError: null -}; -var Parser = class { - constructor(options, document, fragmentContext = null, scriptHandler = null) { - this.fragmentContext = fragmentContext; - this.scriptHandler = scriptHandler; - this.currentToken = null; - this.stopped = false; - this.insertionMode = InsertionMode.INITIAL; - this.originalInsertionMode = InsertionMode.INITIAL; - this.headElement = null; - this.formElement = null; - this.currentNotInHTML = false; - this.tmplInsertionModeStack = []; - this.pendingCharacterTokens = []; - this.hasNonWhitespacePendingCharacterToken = false; - this.framesetOk = true; - this.skipNextNewLine = false; - this.fosterParentingEnabled = false; - this.options = { - ...defaultParserOptions, - ...options - }; - this.treeAdapter = this.options.treeAdapter; - this.onParseError = this.options.onParseError; - if (this.onParseError) { - this.options.sourceCodeLocationInfo = true; - } - this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument(); - this.tokenizer = new Tokenizer(this.options, this); - this.activeFormattingElements = new FormattingElementList(this.treeAdapter); - this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : TAG_ID.UNKNOWN; - this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID); - this.openElements = new OpenElementStack(this.document, this.treeAdapter, this); - } - // API - static parse(html, options) { - const parser = new this(options); - parser.tokenizer.write(html, true); - return parser.document; - } - static getFragmentParser(fragmentContext, options) { - const opts = { - ...defaultParserOptions, - ...options - }; - fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : fragmentContext = opts.treeAdapter.createElement(TAG_NAMES.TEMPLATE, NS.HTML, []); - const documentMock = opts.treeAdapter.createElement("documentmock", NS.HTML, []); - const parser = new this(opts, documentMock, fragmentContext); - if (parser.fragmentContextID === TAG_ID.TEMPLATE) { - parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE); - } - parser._initTokenizerForFragmentParsing(); - parser._insertFakeRootElement(); - parser._resetInsertionMode(); - parser._findFormInFragmentContext(); - return parser; - } - getFragment() { - const rootElement = this.treeAdapter.getFirstChild(this.document); - const fragment = this.treeAdapter.createDocumentFragment(); - this._adoptNodes(rootElement, fragment); - return fragment; - } - //Errors - _err(token, code, beforeToken) { - var _a2; - if (!this.onParseError) - return; - const loc = (_a2 = token.location) !== null && _a2 !== void 0 ? _a2 : BASE_LOC; - const err = { - code, - startLine: loc.startLine, - startCol: loc.startCol, - startOffset: loc.startOffset, - endLine: beforeToken ? loc.startLine : loc.endLine, - endCol: beforeToken ? loc.startCol : loc.endCol, - endOffset: beforeToken ? loc.startOffset : loc.endOffset - }; - this.onParseError(err); - } - //Stack events - onItemPush(node, tid, isTop) { - var _a2, _b; - (_b = (_a2 = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a2, node); - if (isTop && this.openElements.stackTop > 0) - this._setContextModes(node, tid); - } - onItemPop(node, isTop) { - var _a2, _b; - if (this.options.sourceCodeLocationInfo) { - this._setEndLocation(node, this.currentToken); - } - (_b = (_a2 = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a2, node, this.openElements.current); - if (isTop) { - let current; - let currentTagId; - if (this.openElements.stackTop === 0 && this.fragmentContext) { - current = this.fragmentContext; - currentTagId = this.fragmentContextID; - } else { - ({ current, currentTagId } = this.openElements); - } - this._setContextModes(current, currentTagId); - } - } - _setContextModes(current, tid) { - const isHTML = current === this.document || this.treeAdapter.getNamespaceURI(current) === NS.HTML; - this.currentNotInHTML = !isHTML; - this.tokenizer.inForeignNode = !isHTML && !this._isIntegrationPoint(tid, current); - } - _switchToTextParsing(currentToken, nextTokenizerState) { - this._insertElement(currentToken, NS.HTML); - this.tokenizer.state = nextTokenizerState; - this.originalInsertionMode = this.insertionMode; - this.insertionMode = InsertionMode.TEXT; - } - switchToPlaintextParsing() { - this.insertionMode = InsertionMode.TEXT; - this.originalInsertionMode = InsertionMode.IN_BODY; - this.tokenizer.state = TokenizerMode.PLAINTEXT; - } - //Fragment parsing - _getAdjustedCurrentElement() { - return this.openElements.stackTop === 0 && this.fragmentContext ? this.fragmentContext : this.openElements.current; - } - _findFormInFragmentContext() { - let node = this.fragmentContext; - while (node) { - if (this.treeAdapter.getTagName(node) === TAG_NAMES.FORM) { - this.formElement = node; - break; - } - node = this.treeAdapter.getParentNode(node); - } - } - _initTokenizerForFragmentParsing() { - if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) { - return; - } - switch (this.fragmentContextID) { - case TAG_ID.TITLE: - case TAG_ID.TEXTAREA: { - this.tokenizer.state = TokenizerMode.RCDATA; - break; - } - case TAG_ID.STYLE: - case TAG_ID.XMP: - case TAG_ID.IFRAME: - case TAG_ID.NOEMBED: - case TAG_ID.NOFRAMES: - case TAG_ID.NOSCRIPT: { - this.tokenizer.state = TokenizerMode.RAWTEXT; - break; - } - case TAG_ID.SCRIPT: { - this.tokenizer.state = TokenizerMode.SCRIPT_DATA; - break; - } - case TAG_ID.PLAINTEXT: { - this.tokenizer.state = TokenizerMode.PLAINTEXT; - break; - } - default: - } - } - //Tree mutation - _setDocumentType(token) { - const name = token.name || ""; - const publicId = token.publicId || ""; - const systemId = token.systemId || ""; - this.treeAdapter.setDocumentType(this.document, name, publicId, systemId); - if (token.location) { - const documentChildren = this.treeAdapter.getChildNodes(this.document); - const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node)); - if (docTypeNode) { - this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location); - } - } - } - _attachElementToTree(element, location) { - if (this.options.sourceCodeLocationInfo) { - const loc = location && { - ...location, - startTag: location - }; - this.treeAdapter.setNodeSourceCodeLocation(element, loc); - } - if (this._shouldFosterParentOnInsertion()) { - this._fosterParentElement(element); - } else { - const parent = this.openElements.currentTmplContentOrNode; - this.treeAdapter.appendChild(parent, element); - } - } - _appendElement(token, namespaceURI) { - const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs); - this._attachElementToTree(element, token.location); - } - _insertElement(token, namespaceURI) { - const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs); - this._attachElementToTree(element, token.location); - this.openElements.push(element, token.tagID); - } - _insertFakeElement(tagName, tagID) { - const element = this.treeAdapter.createElement(tagName, NS.HTML, []); - this._attachElementToTree(element, null); - this.openElements.push(element, tagID); - } - _insertTemplate(token) { - const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs); - const content = this.treeAdapter.createDocumentFragment(); - this.treeAdapter.setTemplateContent(tmpl, content); - this._attachElementToTree(tmpl, token.location); - this.openElements.push(tmpl, token.tagID); - if (this.options.sourceCodeLocationInfo) - this.treeAdapter.setNodeSourceCodeLocation(content, null); - } - _insertFakeRootElement() { - const element = this.treeAdapter.createElement(TAG_NAMES.HTML, NS.HTML, []); - if (this.options.sourceCodeLocationInfo) - this.treeAdapter.setNodeSourceCodeLocation(element, null); - this.treeAdapter.appendChild(this.openElements.current, element); - this.openElements.push(element, TAG_ID.HTML); - } - _appendCommentNode(token, parent) { - const commentNode = this.treeAdapter.createCommentNode(token.data); - this.treeAdapter.appendChild(parent, commentNode); - if (this.options.sourceCodeLocationInfo) { - this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location); - } - } - _insertCharacters(token) { - let parent; - let beforeElement; - if (this._shouldFosterParentOnInsertion()) { - ({ parent, beforeElement } = this._findFosterParentingLocation()); - if (beforeElement) { - this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement); - } else { - this.treeAdapter.insertText(parent, token.chars); - } - } else { - parent = this.openElements.currentTmplContentOrNode; - this.treeAdapter.insertText(parent, token.chars); - } - if (!token.location) - return; - const siblings = this.treeAdapter.getChildNodes(parent); - const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length; - const textNode = siblings[textNodeIdx - 1]; - const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode); - if (tnLoc) { - const { endLine, endCol, endOffset } = token.location; - this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset }); - } else if (this.options.sourceCodeLocationInfo) { - this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location); - } - } - _adoptNodes(donor, recipient) { - for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) { - this.treeAdapter.detachNode(child); - this.treeAdapter.appendChild(recipient, child); - } - } - _setEndLocation(element, closingToken) { - if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) { - const ctLoc = closingToken.location; - const tn = this.treeAdapter.getTagName(element); - const endLoc = ( - // NOTE: For cases like

    - First 'p' closes without a closing - // tag and for cases like

    - 'p' closes without a closing tag. - closingToken.type === TokenType.END_TAG && tn === closingToken.tagName ? { - endTag: { ...ctLoc }, - endLine: ctLoc.endLine, - endCol: ctLoc.endCol, - endOffset: ctLoc.endOffset - } : { - endLine: ctLoc.startLine, - endCol: ctLoc.startCol, - endOffset: ctLoc.startOffset - } - ); - this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc); - } - } - //Token processing - shouldProcessStartTagTokenInForeignContent(token) { - if (!this.currentNotInHTML) - return false; - let current; - let currentTagId; - if (this.openElements.stackTop === 0 && this.fragmentContext) { - current = this.fragmentContext; - currentTagId = this.fragmentContextID; - } else { - ({ current, currentTagId } = this.openElements); - } - if (token.tagID === TAG_ID.SVG && this.treeAdapter.getTagName(current) === TAG_NAMES.ANNOTATION_XML && this.treeAdapter.getNamespaceURI(current) === NS.MATHML) { - return false; - } - return ( - // Check that `current` is not an integration point for HTML or MathML elements. - this.tokenizer.inForeignNode || // If it _is_ an integration point, then we might have to check that it is not an HTML - // integration point. - (token.tagID === TAG_ID.MGLYPH || token.tagID === TAG_ID.MALIGNMARK) && !this._isIntegrationPoint(currentTagId, current, NS.HTML) - ); - } - _processToken(token) { - switch (token.type) { - case TokenType.CHARACTER: { - this.onCharacter(token); - break; - } - case TokenType.NULL_CHARACTER: { - this.onNullCharacter(token); - break; - } - case TokenType.COMMENT: { - this.onComment(token); - break; - } - case TokenType.DOCTYPE: { - this.onDoctype(token); - break; - } - case TokenType.START_TAG: { - this._processStartTag(token); - break; - } - case TokenType.END_TAG: { - this.onEndTag(token); - break; - } - case TokenType.EOF: { - this.onEof(token); - break; - } - case TokenType.WHITESPACE_CHARACTER: { - this.onWhitespaceCharacter(token); - break; - } - } - } - //Integration points - _isIntegrationPoint(tid, element, foreignNS) { - const ns = this.treeAdapter.getNamespaceURI(element); - const attrs = this.treeAdapter.getAttrList(element); - return isIntegrationPoint(tid, ns, attrs, foreignNS); - } - //Active formatting elements reconstruction - _reconstructActiveFormattingElements() { - const listLength = this.activeFormattingElements.entries.length; - if (listLength) { - const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element)); - const unopenIdx = endIndex < 0 ? listLength - 1 : endIndex - 1; - for (let i = unopenIdx; i >= 0; i--) { - const entry = this.activeFormattingElements.entries[i]; - this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element)); - entry.element = this.openElements.current; - } - } - } - //Close elements - _closeTableCell() { - this.openElements.generateImpliedEndTags(); - this.openElements.popUntilTableCellPopped(); - this.activeFormattingElements.clearToLastMarker(); - this.insertionMode = InsertionMode.IN_ROW; - } - _closePElement() { - this.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.P); - this.openElements.popUntilTagNamePopped(TAG_ID.P); - } - //Insertion modes - _resetInsertionMode() { - for (let i = this.openElements.stackTop; i >= 0; i--) { - switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) { - case TAG_ID.TR: { - this.insertionMode = InsertionMode.IN_ROW; - return; - } - case TAG_ID.TBODY: - case TAG_ID.THEAD: - case TAG_ID.TFOOT: { - this.insertionMode = InsertionMode.IN_TABLE_BODY; - return; - } - case TAG_ID.CAPTION: { - this.insertionMode = InsertionMode.IN_CAPTION; - return; - } - case TAG_ID.COLGROUP: { - this.insertionMode = InsertionMode.IN_COLUMN_GROUP; - return; - } - case TAG_ID.TABLE: { - this.insertionMode = InsertionMode.IN_TABLE; - return; - } - case TAG_ID.BODY: { - this.insertionMode = InsertionMode.IN_BODY; - return; - } - case TAG_ID.FRAMESET: { - this.insertionMode = InsertionMode.IN_FRAMESET; - return; - } - case TAG_ID.SELECT: { - this._resetInsertionModeForSelect(i); - return; - } - case TAG_ID.TEMPLATE: { - this.insertionMode = this.tmplInsertionModeStack[0]; - return; - } - case TAG_ID.HTML: { - this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD; - return; - } - case TAG_ID.TD: - case TAG_ID.TH: { - if (i > 0) { - this.insertionMode = InsertionMode.IN_CELL; - return; - } - break; - } - case TAG_ID.HEAD: { - if (i > 0) { - this.insertionMode = InsertionMode.IN_HEAD; - return; - } - break; - } - } - } - this.insertionMode = InsertionMode.IN_BODY; - } - _resetInsertionModeForSelect(selectIdx) { - if (selectIdx > 0) { - for (let i = selectIdx - 1; i > 0; i--) { - const tn = this.openElements.tagIDs[i]; - if (tn === TAG_ID.TEMPLATE) { - break; - } else if (tn === TAG_ID.TABLE) { - this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE; - return; - } - } - } - this.insertionMode = InsertionMode.IN_SELECT; - } - //Foster parenting - _isElementCausesFosterParenting(tn) { - return TABLE_STRUCTURE_TAGS.has(tn); - } - _shouldFosterParentOnInsertion() { - return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId); - } - _findFosterParentingLocation() { - for (let i = this.openElements.stackTop; i >= 0; i--) { - const openElement = this.openElements.items[i]; - switch (this.openElements.tagIDs[i]) { - case TAG_ID.TEMPLATE: { - if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) { - return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null }; - } - break; - } - case TAG_ID.TABLE: { - const parent = this.treeAdapter.getParentNode(openElement); - if (parent) { - return { parent, beforeElement: openElement }; - } - return { parent: this.openElements.items[i - 1], beforeElement: null }; - } - default: - } - } - return { parent: this.openElements.items[0], beforeElement: null }; - } - _fosterParentElement(element) { - const location = this._findFosterParentingLocation(); - if (location.beforeElement) { - this.treeAdapter.insertBefore(location.parent, element, location.beforeElement); - } else { - this.treeAdapter.appendChild(location.parent, element); - } - } - //Special elements - _isSpecialElement(element, id) { - const ns = this.treeAdapter.getNamespaceURI(element); - return SPECIAL_ELEMENTS[ns].has(id); - } - onCharacter(token) { - this.skipNextNewLine = false; - if (this.tokenizer.inForeignNode) { - characterInForeignContent(this, token); - return; - } - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - tokenBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - tokenBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - tokenInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - tokenInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - tokenAfterHead(this, token); - break; - } - case InsertionMode.IN_BODY: - case InsertionMode.IN_CAPTION: - case InsertionMode.IN_CELL: - case InsertionMode.IN_TEMPLATE: { - characterInBody(this, token); - break; - } - case InsertionMode.TEXT: - case InsertionMode.IN_SELECT: - case InsertionMode.IN_SELECT_IN_TABLE: { - this._insertCharacters(token); - break; - } - case InsertionMode.IN_TABLE: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: { - characterInTable(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - characterInTableText(this, token); - break; - } - case InsertionMode.IN_COLUMN_GROUP: { - tokenInColumnGroup(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - tokenAfterBody(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: { - tokenAfterAfterBody(this, token); - break; - } - default: - } - } - onNullCharacter(token) { - this.skipNextNewLine = false; - if (this.tokenizer.inForeignNode) { - nullCharacterInForeignContent(this, token); - return; - } - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - tokenBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - tokenBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - tokenInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - tokenInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - tokenAfterHead(this, token); - break; - } - case InsertionMode.TEXT: { - this._insertCharacters(token); - break; - } - case InsertionMode.IN_TABLE: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: { - characterInTable(this, token); - break; - } - case InsertionMode.IN_COLUMN_GROUP: { - tokenInColumnGroup(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - tokenAfterBody(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: { - tokenAfterAfterBody(this, token); - break; - } - default: - } - } - onComment(token) { - this.skipNextNewLine = false; - if (this.currentNotInHTML) { - appendComment(this, token); - return; - } - switch (this.insertionMode) { - case InsertionMode.INITIAL: - case InsertionMode.BEFORE_HTML: - case InsertionMode.BEFORE_HEAD: - case InsertionMode.IN_HEAD: - case InsertionMode.IN_HEAD_NO_SCRIPT: - case InsertionMode.AFTER_HEAD: - case InsertionMode.IN_BODY: - case InsertionMode.IN_TABLE: - case InsertionMode.IN_CAPTION: - case InsertionMode.IN_COLUMN_GROUP: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: - case InsertionMode.IN_CELL: - case InsertionMode.IN_SELECT: - case InsertionMode.IN_SELECT_IN_TABLE: - case InsertionMode.IN_TEMPLATE: - case InsertionMode.IN_FRAMESET: - case InsertionMode.AFTER_FRAMESET: { - appendComment(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - appendCommentToRootHtmlElement(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: - case InsertionMode.AFTER_AFTER_FRAMESET: { - appendCommentToDocument(this, token); - break; - } - default: - } - } - onDoctype(token) { - this.skipNextNewLine = false; - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - doctypeInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: - case InsertionMode.IN_HEAD: - case InsertionMode.IN_HEAD_NO_SCRIPT: - case InsertionMode.AFTER_HEAD: { - this._err(token, ERR.misplacedDoctype); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - default: - } - } - onStartTag(token) { - this.skipNextNewLine = false; - this.currentToken = token; - this._processStartTag(token); - if (token.selfClosing && !token.ackSelfClosing) { - this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus); - } - } - /** - * Processes a given start tag. - * - * `onStartTag` checks if a self-closing tag was recognized. When a token - * is moved inbetween multiple insertion modes, this check for self-closing - * could lead to false positives. To avoid this, `_processStartTag` is used - * for nested calls. - * - * @param token The token to process. - */ - _processStartTag(token) { - if (this.shouldProcessStartTagTokenInForeignContent(token)) { - startTagInForeignContent(this, token); - } else { - this._startTagOutsideForeignContent(token); - } - } - _startTagOutsideForeignContent(token) { - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - startTagBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - startTagBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - startTagInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - startTagInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - startTagAfterHead(this, token); - break; - } - case InsertionMode.IN_BODY: { - startTagInBody(this, token); - break; - } - case InsertionMode.IN_TABLE: { - startTagInTable(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - case InsertionMode.IN_CAPTION: { - startTagInCaption(this, token); - break; - } - case InsertionMode.IN_COLUMN_GROUP: { - startTagInColumnGroup(this, token); - break; - } - case InsertionMode.IN_TABLE_BODY: { - startTagInTableBody(this, token); - break; - } - case InsertionMode.IN_ROW: { - startTagInRow(this, token); - break; - } - case InsertionMode.IN_CELL: { - startTagInCell(this, token); - break; - } - case InsertionMode.IN_SELECT: { - startTagInSelect(this, token); - break; - } - case InsertionMode.IN_SELECT_IN_TABLE: { - startTagInSelectInTable(this, token); - break; - } - case InsertionMode.IN_TEMPLATE: { - startTagInTemplate(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - startTagAfterBody(this, token); - break; - } - case InsertionMode.IN_FRAMESET: { - startTagInFrameset(this, token); - break; - } - case InsertionMode.AFTER_FRAMESET: { - startTagAfterFrameset(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: { - startTagAfterAfterBody(this, token); - break; - } - case InsertionMode.AFTER_AFTER_FRAMESET: { - startTagAfterAfterFrameset(this, token); - break; - } - default: - } - } - onEndTag(token) { - this.skipNextNewLine = false; - this.currentToken = token; - if (this.currentNotInHTML) { - endTagInForeignContent(this, token); - } else { - this._endTagOutsideForeignContent(token); - } - } - _endTagOutsideForeignContent(token) { - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - endTagBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - endTagBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - endTagInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - endTagInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - endTagAfterHead(this, token); - break; - } - case InsertionMode.IN_BODY: { - endTagInBody(this, token); - break; - } - case InsertionMode.TEXT: { - endTagInText(this, token); - break; - } - case InsertionMode.IN_TABLE: { - endTagInTable(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - case InsertionMode.IN_CAPTION: { - endTagInCaption(this, token); - break; - } - case InsertionMode.IN_COLUMN_GROUP: { - endTagInColumnGroup(this, token); - break; - } - case InsertionMode.IN_TABLE_BODY: { - endTagInTableBody(this, token); - break; - } - case InsertionMode.IN_ROW: { - endTagInRow(this, token); - break; - } - case InsertionMode.IN_CELL: { - endTagInCell(this, token); - break; - } - case InsertionMode.IN_SELECT: { - endTagInSelect(this, token); - break; - } - case InsertionMode.IN_SELECT_IN_TABLE: { - endTagInSelectInTable(this, token); - break; - } - case InsertionMode.IN_TEMPLATE: { - endTagInTemplate(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - endTagAfterBody(this, token); - break; - } - case InsertionMode.IN_FRAMESET: { - endTagInFrameset(this, token); - break; - } - case InsertionMode.AFTER_FRAMESET: { - endTagAfterFrameset(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: { - tokenAfterAfterBody(this, token); - break; - } - default: - } - } - onEof(token) { - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - tokenBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - tokenBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - tokenInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - tokenInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - tokenAfterHead(this, token); - break; - } - case InsertionMode.IN_BODY: - case InsertionMode.IN_TABLE: - case InsertionMode.IN_CAPTION: - case InsertionMode.IN_COLUMN_GROUP: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: - case InsertionMode.IN_CELL: - case InsertionMode.IN_SELECT: - case InsertionMode.IN_SELECT_IN_TABLE: { - eofInBody(this, token); - break; - } - case InsertionMode.TEXT: { - eofInText(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - case InsertionMode.IN_TEMPLATE: { - eofInTemplate(this, token); - break; - } - case InsertionMode.AFTER_BODY: - case InsertionMode.IN_FRAMESET: - case InsertionMode.AFTER_FRAMESET: - case InsertionMode.AFTER_AFTER_BODY: - case InsertionMode.AFTER_AFTER_FRAMESET: { - stopParsing(this, token); - break; - } - default: - } - } - onWhitespaceCharacter(token) { - if (this.skipNextNewLine) { - this.skipNextNewLine = false; - if (token.chars.charCodeAt(0) === CODE_POINTS.LINE_FEED) { - if (token.chars.length === 1) { - return; - } - token.chars = token.chars.substr(1); - } - } - if (this.tokenizer.inForeignNode) { - this._insertCharacters(token); - return; - } - switch (this.insertionMode) { - case InsertionMode.IN_HEAD: - case InsertionMode.IN_HEAD_NO_SCRIPT: - case InsertionMode.AFTER_HEAD: - case InsertionMode.TEXT: - case InsertionMode.IN_COLUMN_GROUP: - case InsertionMode.IN_SELECT: - case InsertionMode.IN_SELECT_IN_TABLE: - case InsertionMode.IN_FRAMESET: - case InsertionMode.AFTER_FRAMESET: { - this._insertCharacters(token); - break; - } - case InsertionMode.IN_BODY: - case InsertionMode.IN_CAPTION: - case InsertionMode.IN_CELL: - case InsertionMode.IN_TEMPLATE: - case InsertionMode.AFTER_BODY: - case InsertionMode.AFTER_AFTER_BODY: - case InsertionMode.AFTER_AFTER_FRAMESET: { - whitespaceCharacterInBody(this, token); - break; - } - case InsertionMode.IN_TABLE: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: { - characterInTable(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - whitespaceCharacterInTableText(this, token); - break; - } - default: - } - } -}; -function aaObtainFormattingElementEntry(p, token) { - let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName); - if (formattingElementEntry) { - if (!p.openElements.contains(formattingElementEntry.element)) { - p.activeFormattingElements.removeEntry(formattingElementEntry); - formattingElementEntry = null; - } else if (!p.openElements.hasInScope(token.tagID)) { - formattingElementEntry = null; - } - } else { - genericEndTagInBody(p, token); - } - return formattingElementEntry; -} -function aaObtainFurthestBlock(p, formattingElementEntry) { - let furthestBlock = null; - let idx = p.openElements.stackTop; - for (; idx >= 0; idx--) { - const element = p.openElements.items[idx]; - if (element === formattingElementEntry.element) { - break; - } - if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) { - furthestBlock = element; - } - } - if (!furthestBlock) { - p.openElements.shortenToLength(idx < 0 ? 0 : idx); - p.activeFormattingElements.removeEntry(formattingElementEntry); - } - return furthestBlock; -} -function aaInnerLoop(p, furthestBlock, formattingElement) { - let lastElement = furthestBlock; - let nextElement = p.openElements.getCommonAncestor(furthestBlock); - for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) { - nextElement = p.openElements.getCommonAncestor(element); - const elementEntry = p.activeFormattingElements.getElementEntry(element); - const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER; - const shouldRemoveFromOpenElements = !elementEntry || counterOverflow; - if (shouldRemoveFromOpenElements) { - if (counterOverflow) { - p.activeFormattingElements.removeEntry(elementEntry); - } - p.openElements.remove(element); - } else { - element = aaRecreateElementFromEntry(p, elementEntry); - if (lastElement === furthestBlock) { - p.activeFormattingElements.bookmark = elementEntry; - } - p.treeAdapter.detachNode(lastElement); - p.treeAdapter.appendChild(element, lastElement); - lastElement = element; - } - } - return lastElement; -} -function aaRecreateElementFromEntry(p, elementEntry) { - const ns = p.treeAdapter.getNamespaceURI(elementEntry.element); - const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs); - p.openElements.replace(elementEntry.element, newElement); - elementEntry.element = newElement; - return newElement; -} -function aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) { - const tn = p.treeAdapter.getTagName(commonAncestor); - const tid = getTagID(tn); - if (p._isElementCausesFosterParenting(tid)) { - p._fosterParentElement(lastElement); - } else { - const ns = p.treeAdapter.getNamespaceURI(commonAncestor); - if (tid === TAG_ID.TEMPLATE && ns === NS.HTML) { - commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor); - } - p.treeAdapter.appendChild(commonAncestor, lastElement); - } -} -function aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) { - const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element); - const { token } = formattingElementEntry; - const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs); - p._adoptNodes(furthestBlock, newElement); - p.treeAdapter.appendChild(furthestBlock, newElement); - p.activeFormattingElements.insertElementAfterBookmark(newElement, token); - p.activeFormattingElements.removeEntry(formattingElementEntry); - p.openElements.remove(formattingElementEntry.element); - p.openElements.insertAfter(furthestBlock, newElement, token.tagID); -} -function callAdoptionAgency(p, token) { - for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) { - const formattingElementEntry = aaObtainFormattingElementEntry(p, token); - if (!formattingElementEntry) { - break; - } - const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry); - if (!furthestBlock) { - break; - } - p.activeFormattingElements.bookmark = formattingElementEntry; - const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element); - const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element); - p.treeAdapter.detachNode(lastElement); - if (commonAncestor) - aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement); - aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry); - } -} -function appendComment(p, token) { - p._appendCommentNode(token, p.openElements.currentTmplContentOrNode); -} -function appendCommentToRootHtmlElement(p, token) { - p._appendCommentNode(token, p.openElements.items[0]); -} -function appendCommentToDocument(p, token) { - p._appendCommentNode(token, p.document); -} -function stopParsing(p, token) { - p.stopped = true; - if (token.location) { - const target = p.fragmentContext ? 0 : 2; - for (let i = p.openElements.stackTop; i >= target; i--) { - p._setEndLocation(p.openElements.items[i], token); - } - if (!p.fragmentContext && p.openElements.stackTop >= 0) { - const htmlElement = p.openElements.items[0]; - const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement); - if (htmlLocation && !htmlLocation.endTag) { - p._setEndLocation(htmlElement, token); - if (p.openElements.stackTop >= 1) { - const bodyElement = p.openElements.items[1]; - const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement); - if (bodyLocation && !bodyLocation.endTag) { - p._setEndLocation(bodyElement, token); - } - } - } - } - } -} -function doctypeInInitialMode(p, token) { - p._setDocumentType(token); - const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : getDocumentMode(token); - if (!isConforming(token)) { - p._err(token, ERR.nonConformingDoctype); - } - p.treeAdapter.setDocumentMode(p.document, mode); - p.insertionMode = InsertionMode.BEFORE_HTML; -} -function tokenInInitialMode(p, token) { - p._err(token, ERR.missingDoctype, true); - p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS); - p.insertionMode = InsertionMode.BEFORE_HTML; - p._processToken(token); -} -function startTagBeforeHtml(p, token) { - if (token.tagID === TAG_ID.HTML) { - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.BEFORE_HEAD; - } else { - tokenBeforeHtml(p, token); - } -} -function endTagBeforeHtml(p, token) { - const tn = token.tagID; - if (tn === TAG_ID.HTML || tn === TAG_ID.HEAD || tn === TAG_ID.BODY || tn === TAG_ID.BR) { - tokenBeforeHtml(p, token); - } -} -function tokenBeforeHtml(p, token) { - p._insertFakeRootElement(); - p.insertionMode = InsertionMode.BEFORE_HEAD; - p._processToken(token); -} -function startTagBeforeHead(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.HEAD: { - p._insertElement(token, NS.HTML); - p.headElement = p.openElements.current; - p.insertionMode = InsertionMode.IN_HEAD; - break; - } - default: { - tokenBeforeHead(p, token); - } - } -} -function endTagBeforeHead(p, token) { - const tn = token.tagID; - if (tn === TAG_ID.HEAD || tn === TAG_ID.BODY || tn === TAG_ID.HTML || tn === TAG_ID.BR) { - tokenBeforeHead(p, token); - } else { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } -} -function tokenBeforeHead(p, token) { - p._insertFakeElement(TAG_NAMES.HEAD, TAG_ID.HEAD); - p.headElement = p.openElements.current; - p.insertionMode = InsertionMode.IN_HEAD; - p._processToken(token); -} -function startTagInHead(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.BASE: - case TAG_ID.BASEFONT: - case TAG_ID.BGSOUND: - case TAG_ID.LINK: - case TAG_ID.META: { - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; - break; - } - case TAG_ID.TITLE: { - p._switchToTextParsing(token, TokenizerMode.RCDATA); - break; - } - case TAG_ID.NOSCRIPT: { - if (p.options.scriptingEnabled) { - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); - } else { - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT; - } - break; - } - case TAG_ID.NOFRAMES: - case TAG_ID.STYLE: { - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); - break; - } - case TAG_ID.SCRIPT: { - p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA); - break; - } - case TAG_ID.TEMPLATE: { - p._insertTemplate(token); - p.activeFormattingElements.insertMarker(); - p.framesetOk = false; - p.insertionMode = InsertionMode.IN_TEMPLATE; - p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE); - break; - } - case TAG_ID.HEAD: { - p._err(token, ERR.misplacedStartTagForHeadElement); - break; - } - default: { - tokenInHead(p, token); - } - } -} -function endTagInHead(p, token) { - switch (token.tagID) { - case TAG_ID.HEAD: { - p.openElements.pop(); - p.insertionMode = InsertionMode.AFTER_HEAD; - break; - } - case TAG_ID.BODY: - case TAG_ID.BR: - case TAG_ID.HTML: { - tokenInHead(p, token); - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - default: { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } - } -} -function templateEndTagInHead(p, token) { - if (p.openElements.tmplCount > 0) { - p.openElements.generateImpliedEndTagsThoroughly(); - if (p.openElements.currentTagId !== TAG_ID.TEMPLATE) { - p._err(token, ERR.closingOfElementWithOpenChildElements); - } - p.openElements.popUntilTagNamePopped(TAG_ID.TEMPLATE); - p.activeFormattingElements.clearToLastMarker(); - p.tmplInsertionModeStack.shift(); - p._resetInsertionMode(); - } else { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } -} -function tokenInHead(p, token) { - p.openElements.pop(); - p.insertionMode = InsertionMode.AFTER_HEAD; - p._processToken(token); -} -function startTagInHeadNoScript(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.BASEFONT: - case TAG_ID.BGSOUND: - case TAG_ID.HEAD: - case TAG_ID.LINK: - case TAG_ID.META: - case TAG_ID.NOFRAMES: - case TAG_ID.STYLE: { - startTagInHead(p, token); - break; - } - case TAG_ID.NOSCRIPT: { - p._err(token, ERR.nestedNoscriptInHead); - break; - } - default: { - tokenInHeadNoScript(p, token); - } - } -} -function endTagInHeadNoScript(p, token) { - switch (token.tagID) { - case TAG_ID.NOSCRIPT: { - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_HEAD; - break; - } - case TAG_ID.BR: { - tokenInHeadNoScript(p, token); - break; - } - default: { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } - } -} -function tokenInHeadNoScript(p, token) { - const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead; - p._err(token, errCode); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_HEAD; - p._processToken(token); -} -function startTagAfterHead(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.BODY: { - p._insertElement(token, NS.HTML); - p.framesetOk = false; - p.insertionMode = InsertionMode.IN_BODY; - break; - } - case TAG_ID.FRAMESET: { - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_FRAMESET; - break; - } - case TAG_ID.BASE: - case TAG_ID.BASEFONT: - case TAG_ID.BGSOUND: - case TAG_ID.LINK: - case TAG_ID.META: - case TAG_ID.NOFRAMES: - case TAG_ID.SCRIPT: - case TAG_ID.STYLE: - case TAG_ID.TEMPLATE: - case TAG_ID.TITLE: { - p._err(token, ERR.abandonedHeadElementChild); - p.openElements.push(p.headElement, TAG_ID.HEAD); - startTagInHead(p, token); - p.openElements.remove(p.headElement); - break; - } - case TAG_ID.HEAD: { - p._err(token, ERR.misplacedStartTagForHeadElement); - break; - } - default: { - tokenAfterHead(p, token); - } - } -} -function endTagAfterHead(p, token) { - switch (token.tagID) { - case TAG_ID.BODY: - case TAG_ID.HTML: - case TAG_ID.BR: { - tokenAfterHead(p, token); - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - default: { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } - } -} -function tokenAfterHead(p, token) { - p._insertFakeElement(TAG_NAMES.BODY, TAG_ID.BODY); - p.insertionMode = InsertionMode.IN_BODY; - modeInBody(p, token); -} -function modeInBody(p, token) { - switch (token.type) { - case TokenType.CHARACTER: { - characterInBody(p, token); - break; - } - case TokenType.WHITESPACE_CHARACTER: { - whitespaceCharacterInBody(p, token); - break; - } - case TokenType.COMMENT: { - appendComment(p, token); - break; - } - case TokenType.START_TAG: { - startTagInBody(p, token); - break; - } - case TokenType.END_TAG: { - endTagInBody(p, token); - break; - } - case TokenType.EOF: { - eofInBody(p, token); - break; - } - default: - } -} -function whitespaceCharacterInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertCharacters(token); -} -function characterInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertCharacters(token); - p.framesetOk = false; -} -function htmlStartTagInBody(p, token) { - if (p.openElements.tmplCount === 0) { - p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs); - } -} -function bodyStartTagInBody(p, token) { - const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); - if (bodyElement && p.openElements.tmplCount === 0) { - p.framesetOk = false; - p.treeAdapter.adoptAttributes(bodyElement, token.attrs); - } -} -function framesetStartTagInBody(p, token) { - const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); - if (p.framesetOk && bodyElement) { - p.treeAdapter.detachNode(bodyElement); - p.openElements.popAllUpToHtmlElement(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_FRAMESET; - } -} -function addressStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); -} -function numberedHeaderStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - if (isNumberedHeader(p.openElements.currentTagId)) { - p.openElements.pop(); - } - p._insertElement(token, NS.HTML); -} -function preStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); - p.skipNextNewLine = true; - p.framesetOk = false; -} -function formStartTagInBody(p, token) { - const inTemplate = p.openElements.tmplCount > 0; - if (!p.formElement || inTemplate) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); - if (!inTemplate) { - p.formElement = p.openElements.current; - } - } -} -function listItemStartTagInBody(p, token) { - p.framesetOk = false; - const tn = token.tagID; - for (let i = p.openElements.stackTop; i >= 0; i--) { - const elementId = p.openElements.tagIDs[i]; - if (tn === TAG_ID.LI && elementId === TAG_ID.LI || (tn === TAG_ID.DD || tn === TAG_ID.DT) && (elementId === TAG_ID.DD || elementId === TAG_ID.DT)) { - p.openElements.generateImpliedEndTagsWithExclusion(elementId); - p.openElements.popUntilTagNamePopped(elementId); - break; - } - if (elementId !== TAG_ID.ADDRESS && elementId !== TAG_ID.DIV && elementId !== TAG_ID.P && p._isSpecialElement(p.openElements.items[i], elementId)) { - break; - } - } - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); -} -function plaintextStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); - p.tokenizer.state = TokenizerMode.PLAINTEXT; -} -function buttonStartTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.BUTTON)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(TAG_ID.BUTTON); - } - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.framesetOk = false; -} -function aStartTagInBody(p, token) { - const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TAG_NAMES.A); - if (activeElementEntry) { - callAdoptionAgency(p, token); - p.openElements.remove(activeElementEntry.element); - p.activeFormattingElements.removeEntry(activeElementEntry); - } - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.activeFormattingElements.pushElement(p.openElements.current, token); -} -function bStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.activeFormattingElements.pushElement(p.openElements.current, token); -} -function nobrStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - if (p.openElements.hasInScope(TAG_ID.NOBR)) { - callAdoptionAgency(p, token); - p._reconstructActiveFormattingElements(); - } - p._insertElement(token, NS.HTML); - p.activeFormattingElements.pushElement(p.openElements.current, token); -} -function appletStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.activeFormattingElements.insertMarker(); - p.framesetOk = false; -} -function tableStartTagInBody(p, token) { - if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); - p.framesetOk = false; - p.insertionMode = InsertionMode.IN_TABLE; -} -function areaStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._appendElement(token, NS.HTML); - p.framesetOk = false; - token.ackSelfClosing = true; -} -function isHiddenInput(token) { - const inputType = getTokenAttr(token, ATTRS.TYPE); - return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE; -} -function inputStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._appendElement(token, NS.HTML); - if (!isHiddenInput(token)) { - p.framesetOk = false; - } - token.ackSelfClosing = true; -} -function paramStartTagInBody(p, token) { - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; -} -function hrStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._appendElement(token, NS.HTML); - p.framesetOk = false; - token.ackSelfClosing = true; -} -function imageStartTagInBody(p, token) { - token.tagName = TAG_NAMES.IMG; - token.tagID = TAG_ID.IMG; - areaStartTagInBody(p, token); -} -function textareaStartTagInBody(p, token) { - p._insertElement(token, NS.HTML); - p.skipNextNewLine = true; - p.tokenizer.state = TokenizerMode.RCDATA; - p.originalInsertionMode = p.insertionMode; - p.framesetOk = false; - p.insertionMode = InsertionMode.TEXT; -} -function xmpStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._reconstructActiveFormattingElements(); - p.framesetOk = false; - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); -} -function iframeStartTagInBody(p, token) { - p.framesetOk = false; - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); -} -function noembedStartTagInBody(p, token) { - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); -} -function selectStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.framesetOk = false; - p.insertionMode = p.insertionMode === InsertionMode.IN_TABLE || p.insertionMode === InsertionMode.IN_CAPTION || p.insertionMode === InsertionMode.IN_TABLE_BODY || p.insertionMode === InsertionMode.IN_ROW || p.insertionMode === InsertionMode.IN_CELL ? InsertionMode.IN_SELECT_IN_TABLE : InsertionMode.IN_SELECT; -} -function optgroupStartTagInBody(p, token) { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); -} -function rbStartTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.RUBY)) { - p.openElements.generateImpliedEndTags(); - } - p._insertElement(token, NS.HTML); -} -function rtStartTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.RUBY)) { - p.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.RTC); - } - p._insertElement(token, NS.HTML); -} -function mathStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - adjustTokenMathMLAttrs(token); - adjustTokenXMLAttrs(token); - if (token.selfClosing) { - p._appendElement(token, NS.MATHML); - } else { - p._insertElement(token, NS.MATHML); - } - token.ackSelfClosing = true; -} -function svgStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - adjustTokenSVGAttrs(token); - adjustTokenXMLAttrs(token); - if (token.selfClosing) { - p._appendElement(token, NS.SVG); - } else { - p._insertElement(token, NS.SVG); - } - token.ackSelfClosing = true; -} -function genericStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); -} -function startTagInBody(p, token) { - switch (token.tagID) { - case TAG_ID.I: - case TAG_ID.S: - case TAG_ID.B: - case TAG_ID.U: - case TAG_ID.EM: - case TAG_ID.TT: - case TAG_ID.BIG: - case TAG_ID.CODE: - case TAG_ID.FONT: - case TAG_ID.SMALL: - case TAG_ID.STRIKE: - case TAG_ID.STRONG: { - bStartTagInBody(p, token); - break; - } - case TAG_ID.A: { - aStartTagInBody(p, token); - break; - } - case TAG_ID.H1: - case TAG_ID.H2: - case TAG_ID.H3: - case TAG_ID.H4: - case TAG_ID.H5: - case TAG_ID.H6: { - numberedHeaderStartTagInBody(p, token); - break; - } - case TAG_ID.P: - case TAG_ID.DL: - case TAG_ID.OL: - case TAG_ID.UL: - case TAG_ID.DIV: - case TAG_ID.DIR: - case TAG_ID.NAV: - case TAG_ID.MAIN: - case TAG_ID.MENU: - case TAG_ID.ASIDE: - case TAG_ID.CENTER: - case TAG_ID.FIGURE: - case TAG_ID.FOOTER: - case TAG_ID.HEADER: - case TAG_ID.HGROUP: - case TAG_ID.DIALOG: - case TAG_ID.DETAILS: - case TAG_ID.ADDRESS: - case TAG_ID.ARTICLE: - case TAG_ID.SECTION: - case TAG_ID.SUMMARY: - case TAG_ID.FIELDSET: - case TAG_ID.BLOCKQUOTE: - case TAG_ID.FIGCAPTION: { - addressStartTagInBody(p, token); - break; - } - case TAG_ID.LI: - case TAG_ID.DD: - case TAG_ID.DT: { - listItemStartTagInBody(p, token); - break; - } - case TAG_ID.BR: - case TAG_ID.IMG: - case TAG_ID.WBR: - case TAG_ID.AREA: - case TAG_ID.EMBED: - case TAG_ID.KEYGEN: { - areaStartTagInBody(p, token); - break; - } - case TAG_ID.HR: { - hrStartTagInBody(p, token); - break; - } - case TAG_ID.RB: - case TAG_ID.RTC: { - rbStartTagInBody(p, token); - break; - } - case TAG_ID.RT: - case TAG_ID.RP: { - rtStartTagInBody(p, token); - break; - } - case TAG_ID.PRE: - case TAG_ID.LISTING: { - preStartTagInBody(p, token); - break; - } - case TAG_ID.XMP: { - xmpStartTagInBody(p, token); - break; - } - case TAG_ID.SVG: { - svgStartTagInBody(p, token); - break; - } - case TAG_ID.HTML: { - htmlStartTagInBody(p, token); - break; - } - case TAG_ID.BASE: - case TAG_ID.LINK: - case TAG_ID.META: - case TAG_ID.STYLE: - case TAG_ID.TITLE: - case TAG_ID.SCRIPT: - case TAG_ID.BGSOUND: - case TAG_ID.BASEFONT: - case TAG_ID.TEMPLATE: { - startTagInHead(p, token); - break; - } - case TAG_ID.BODY: { - bodyStartTagInBody(p, token); - break; - } - case TAG_ID.FORM: { - formStartTagInBody(p, token); - break; - } - case TAG_ID.NOBR: { - nobrStartTagInBody(p, token); - break; - } - case TAG_ID.MATH: { - mathStartTagInBody(p, token); - break; - } - case TAG_ID.TABLE: { - tableStartTagInBody(p, token); - break; - } - case TAG_ID.INPUT: { - inputStartTagInBody(p, token); - break; - } - case TAG_ID.PARAM: - case TAG_ID.TRACK: - case TAG_ID.SOURCE: { - paramStartTagInBody(p, token); - break; - } - case TAG_ID.IMAGE: { - imageStartTagInBody(p, token); - break; - } - case TAG_ID.BUTTON: { - buttonStartTagInBody(p, token); - break; - } - case TAG_ID.APPLET: - case TAG_ID.OBJECT: - case TAG_ID.MARQUEE: { - appletStartTagInBody(p, token); - break; - } - case TAG_ID.IFRAME: { - iframeStartTagInBody(p, token); - break; - } - case TAG_ID.SELECT: { - selectStartTagInBody(p, token); - break; - } - case TAG_ID.OPTION: - case TAG_ID.OPTGROUP: { - optgroupStartTagInBody(p, token); - break; - } - case TAG_ID.NOEMBED: { - noembedStartTagInBody(p, token); - break; - } - case TAG_ID.FRAMESET: { - framesetStartTagInBody(p, token); - break; - } - case TAG_ID.TEXTAREA: { - textareaStartTagInBody(p, token); - break; - } - case TAG_ID.NOSCRIPT: { - if (p.options.scriptingEnabled) { - noembedStartTagInBody(p, token); - } else { - genericStartTagInBody(p, token); - } - break; - } - case TAG_ID.PLAINTEXT: { - plaintextStartTagInBody(p, token); - break; - } - case TAG_ID.COL: - case TAG_ID.TH: - case TAG_ID.TD: - case TAG_ID.TR: - case TAG_ID.HEAD: - case TAG_ID.FRAME: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: - case TAG_ID.CAPTION: - case TAG_ID.COLGROUP: { - break; - } - default: { - genericStartTagInBody(p, token); - } - } -} -function bodyEndTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.BODY)) { - p.insertionMode = InsertionMode.AFTER_BODY; - if (p.options.sourceCodeLocationInfo) { - const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); - if (bodyElement) { - p._setEndLocation(bodyElement, token); - } - } - } -} -function htmlEndTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.BODY)) { - p.insertionMode = InsertionMode.AFTER_BODY; - endTagAfterBody(p, token); - } -} -function addressEndTagInBody(p, token) { - const tn = token.tagID; - if (p.openElements.hasInScope(tn)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(tn); - } -} -function formEndTagInBody(p) { - const inTemplate = p.openElements.tmplCount > 0; - const { formElement } = p; - if (!inTemplate) { - p.formElement = null; - } - if ((formElement || inTemplate) && p.openElements.hasInScope(TAG_ID.FORM)) { - p.openElements.generateImpliedEndTags(); - if (inTemplate) { - p.openElements.popUntilTagNamePopped(TAG_ID.FORM); - } else if (formElement) { - p.openElements.remove(formElement); - } - } -} -function pEndTagInBody(p) { - if (!p.openElements.hasInButtonScope(TAG_ID.P)) { - p._insertFakeElement(TAG_NAMES.P, TAG_ID.P); - } - p._closePElement(); -} -function liEndTagInBody(p) { - if (p.openElements.hasInListItemScope(TAG_ID.LI)) { - p.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.LI); - p.openElements.popUntilTagNamePopped(TAG_ID.LI); - } -} -function ddEndTagInBody(p, token) { - const tn = token.tagID; - if (p.openElements.hasInScope(tn)) { - p.openElements.generateImpliedEndTagsWithExclusion(tn); - p.openElements.popUntilTagNamePopped(tn); - } -} -function numberedHeaderEndTagInBody(p) { - if (p.openElements.hasNumberedHeaderInScope()) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilNumberedHeaderPopped(); - } -} -function appletEndTagInBody(p, token) { - const tn = token.tagID; - if (p.openElements.hasInScope(tn)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(tn); - p.activeFormattingElements.clearToLastMarker(); - } -} -function brEndTagInBody(p) { - p._reconstructActiveFormattingElements(); - p._insertFakeElement(TAG_NAMES.BR, TAG_ID.BR); - p.openElements.pop(); - p.framesetOk = false; -} -function genericEndTagInBody(p, token) { - const tn = token.tagName; - const tid = token.tagID; - for (let i = p.openElements.stackTop; i > 0; i--) { - const element = p.openElements.items[i]; - const elementId = p.openElements.tagIDs[i]; - if (tid === elementId && (tid !== TAG_ID.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) { - p.openElements.generateImpliedEndTagsWithExclusion(tid); - if (p.openElements.stackTop >= i) - p.openElements.shortenToLength(i); - break; - } - if (p._isSpecialElement(element, elementId)) { - break; - } - } -} -function endTagInBody(p, token) { - switch (token.tagID) { - case TAG_ID.A: - case TAG_ID.B: - case TAG_ID.I: - case TAG_ID.S: - case TAG_ID.U: - case TAG_ID.EM: - case TAG_ID.TT: - case TAG_ID.BIG: - case TAG_ID.CODE: - case TAG_ID.FONT: - case TAG_ID.NOBR: - case TAG_ID.SMALL: - case TAG_ID.STRIKE: - case TAG_ID.STRONG: { - callAdoptionAgency(p, token); - break; - } - case TAG_ID.P: { - pEndTagInBody(p); - break; - } - case TAG_ID.DL: - case TAG_ID.UL: - case TAG_ID.OL: - case TAG_ID.DIR: - case TAG_ID.DIV: - case TAG_ID.NAV: - case TAG_ID.PRE: - case TAG_ID.MAIN: - case TAG_ID.MENU: - case TAG_ID.ASIDE: - case TAG_ID.BUTTON: - case TAG_ID.CENTER: - case TAG_ID.FIGURE: - case TAG_ID.FOOTER: - case TAG_ID.HEADER: - case TAG_ID.HGROUP: - case TAG_ID.DIALOG: - case TAG_ID.ADDRESS: - case TAG_ID.ARTICLE: - case TAG_ID.DETAILS: - case TAG_ID.SECTION: - case TAG_ID.SUMMARY: - case TAG_ID.LISTING: - case TAG_ID.FIELDSET: - case TAG_ID.BLOCKQUOTE: - case TAG_ID.FIGCAPTION: { - addressEndTagInBody(p, token); - break; - } - case TAG_ID.LI: { - liEndTagInBody(p); - break; - } - case TAG_ID.DD: - case TAG_ID.DT: { - ddEndTagInBody(p, token); - break; - } - case TAG_ID.H1: - case TAG_ID.H2: - case TAG_ID.H3: - case TAG_ID.H4: - case TAG_ID.H5: - case TAG_ID.H6: { - numberedHeaderEndTagInBody(p); - break; - } - case TAG_ID.BR: { - brEndTagInBody(p); - break; - } - case TAG_ID.BODY: { - bodyEndTagInBody(p, token); - break; - } - case TAG_ID.HTML: { - htmlEndTagInBody(p, token); - break; - } - case TAG_ID.FORM: { - formEndTagInBody(p); - break; - } - case TAG_ID.APPLET: - case TAG_ID.OBJECT: - case TAG_ID.MARQUEE: { - appletEndTagInBody(p, token); - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - default: { - genericEndTagInBody(p, token); - } - } -} -function eofInBody(p, token) { - if (p.tmplInsertionModeStack.length > 0) { - eofInTemplate(p, token); - } else { - stopParsing(p, token); - } -} -function endTagInText(p, token) { - var _a2; - if (token.tagID === TAG_ID.SCRIPT) { - (_a2 = p.scriptHandler) === null || _a2 === void 0 ? void 0 : _a2.call(p, p.openElements.current); - } - p.openElements.pop(); - p.insertionMode = p.originalInsertionMode; -} -function eofInText(p, token) { - p._err(token, ERR.eofInElementThatCanContainOnlyText); - p.openElements.pop(); - p.insertionMode = p.originalInsertionMode; - p.onEof(token); -} -function characterInTable(p, token) { - if (TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) { - p.pendingCharacterTokens.length = 0; - p.hasNonWhitespacePendingCharacterToken = false; - p.originalInsertionMode = p.insertionMode; - p.insertionMode = InsertionMode.IN_TABLE_TEXT; - switch (token.type) { - case TokenType.CHARACTER: { - characterInTableText(p, token); - break; - } - case TokenType.WHITESPACE_CHARACTER: { - whitespaceCharacterInTableText(p, token); - break; - } - } - } else { - tokenInTable(p, token); - } -} -function captionStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p.activeFormattingElements.insertMarker(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_CAPTION; -} -function colgroupStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_COLUMN_GROUP; -} -function colStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p._insertFakeElement(TAG_NAMES.COLGROUP, TAG_ID.COLGROUP); - p.insertionMode = InsertionMode.IN_COLUMN_GROUP; - startTagInColumnGroup(p, token); -} -function tbodyStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_TABLE_BODY; -} -function tdStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p._insertFakeElement(TAG_NAMES.TBODY, TAG_ID.TBODY); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - startTagInTableBody(p, token); -} -function tableStartTagInTable(p, token) { - if (p.openElements.hasInTableScope(TAG_ID.TABLE)) { - p.openElements.popUntilTagNamePopped(TAG_ID.TABLE); - p._resetInsertionMode(); - p._processStartTag(token); - } -} -function inputStartTagInTable(p, token) { - if (isHiddenInput(token)) { - p._appendElement(token, NS.HTML); - } else { - tokenInTable(p, token); - } - token.ackSelfClosing = true; -} -function formStartTagInTable(p, token) { - if (!p.formElement && p.openElements.tmplCount === 0) { - p._insertElement(token, NS.HTML); - p.formElement = p.openElements.current; - p.openElements.pop(); - } -} -function startTagInTable(p, token) { - switch (token.tagID) { - case TAG_ID.TD: - case TAG_ID.TH: - case TAG_ID.TR: { - tdStartTagInTable(p, token); - break; - } - case TAG_ID.STYLE: - case TAG_ID.SCRIPT: - case TAG_ID.TEMPLATE: { - startTagInHead(p, token); - break; - } - case TAG_ID.COL: { - colStartTagInTable(p, token); - break; - } - case TAG_ID.FORM: { - formStartTagInTable(p, token); - break; - } - case TAG_ID.TABLE: { - tableStartTagInTable(p, token); - break; - } - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - tbodyStartTagInTable(p, token); - break; - } - case TAG_ID.INPUT: { - inputStartTagInTable(p, token); - break; - } - case TAG_ID.CAPTION: { - captionStartTagInTable(p, token); - break; - } - case TAG_ID.COLGROUP: { - colgroupStartTagInTable(p, token); - break; - } - default: { - tokenInTable(p, token); - } - } -} -function endTagInTable(p, token) { - switch (token.tagID) { - case TAG_ID.TABLE: { - if (p.openElements.hasInTableScope(TAG_ID.TABLE)) { - p.openElements.popUntilTagNamePopped(TAG_ID.TABLE); - p._resetInsertionMode(); - } - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - case TAG_ID.BODY: - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: - case TAG_ID.TBODY: - case TAG_ID.TD: - case TAG_ID.TFOOT: - case TAG_ID.TH: - case TAG_ID.THEAD: - case TAG_ID.TR: { - break; - } - default: { - tokenInTable(p, token); - } - } -} -function tokenInTable(p, token) { - const savedFosterParentingState = p.fosterParentingEnabled; - p.fosterParentingEnabled = true; - modeInBody(p, token); - p.fosterParentingEnabled = savedFosterParentingState; -} -function whitespaceCharacterInTableText(p, token) { - p.pendingCharacterTokens.push(token); -} -function characterInTableText(p, token) { - p.pendingCharacterTokens.push(token); - p.hasNonWhitespacePendingCharacterToken = true; -} -function tokenInTableText(p, token) { - let i = 0; - if (p.hasNonWhitespacePendingCharacterToken) { - for (; i < p.pendingCharacterTokens.length; i++) { - tokenInTable(p, p.pendingCharacterTokens[i]); - } - } else { - for (; i < p.pendingCharacterTokens.length; i++) { - p._insertCharacters(p.pendingCharacterTokens[i]); - } - } - p.insertionMode = p.originalInsertionMode; - p._processToken(token); -} -var TABLE_VOID_ELEMENTS = /* @__PURE__ */ new Set([TAG_ID.CAPTION, TAG_ID.COL, TAG_ID.COLGROUP, TAG_ID.TBODY, TAG_ID.TD, TAG_ID.TFOOT, TAG_ID.TH, TAG_ID.THEAD, TAG_ID.TR]); -function startTagInCaption(p, token) { - const tn = token.tagID; - if (TABLE_VOID_ELEMENTS.has(tn)) { - if (p.openElements.hasInTableScope(TAG_ID.CAPTION)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(TAG_ID.CAPTION); - p.activeFormattingElements.clearToLastMarker(); - p.insertionMode = InsertionMode.IN_TABLE; - startTagInTable(p, token); - } - } else { - startTagInBody(p, token); - } -} -function endTagInCaption(p, token) { - const tn = token.tagID; - switch (tn) { - case TAG_ID.CAPTION: - case TAG_ID.TABLE: { - if (p.openElements.hasInTableScope(TAG_ID.CAPTION)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(TAG_ID.CAPTION); - p.activeFormattingElements.clearToLastMarker(); - p.insertionMode = InsertionMode.IN_TABLE; - if (tn === TAG_ID.TABLE) { - endTagInTable(p, token); - } - } - break; - } - case TAG_ID.BODY: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: - case TAG_ID.TBODY: - case TAG_ID.TD: - case TAG_ID.TFOOT: - case TAG_ID.TH: - case TAG_ID.THEAD: - case TAG_ID.TR: { - break; - } - default: { - endTagInBody(p, token); - } - } -} -function startTagInColumnGroup(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.COL: { - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; - break; - } - case TAG_ID.TEMPLATE: { - startTagInHead(p, token); - break; - } - default: { - tokenInColumnGroup(p, token); - } - } -} -function endTagInColumnGroup(p, token) { - switch (token.tagID) { - case TAG_ID.COLGROUP: { - if (p.openElements.currentTagId === TAG_ID.COLGROUP) { - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - } - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - case TAG_ID.COL: { - break; - } - default: { - tokenInColumnGroup(p, token); - } - } -} -function tokenInColumnGroup(p, token) { - if (p.openElements.currentTagId === TAG_ID.COLGROUP) { - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - p._processToken(token); - } -} -function startTagInTableBody(p, token) { - switch (token.tagID) { - case TAG_ID.TR: { - p.openElements.clearBackToTableBodyContext(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_ROW; - break; - } - case TAG_ID.TH: - case TAG_ID.TD: { - p.openElements.clearBackToTableBodyContext(); - p._insertFakeElement(TAG_NAMES.TR, TAG_ID.TR); - p.insertionMode = InsertionMode.IN_ROW; - startTagInRow(p, token); - break; - } - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - if (p.openElements.hasTableBodyContextInTableScope()) { - p.openElements.clearBackToTableBodyContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - startTagInTable(p, token); - } - break; - } - default: { - startTagInTable(p, token); - } - } -} -function endTagInTableBody(p, token) { - const tn = token.tagID; - switch (token.tagID) { - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - if (p.openElements.hasInTableScope(tn)) { - p.openElements.clearBackToTableBodyContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - } - break; - } - case TAG_ID.TABLE: { - if (p.openElements.hasTableBodyContextInTableScope()) { - p.openElements.clearBackToTableBodyContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - endTagInTable(p, token); - } - break; - } - case TAG_ID.BODY: - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: - case TAG_ID.TD: - case TAG_ID.TH: - case TAG_ID.TR: { - break; - } - default: { - endTagInTable(p, token); - } - } -} -function startTagInRow(p, token) { - switch (token.tagID) { - case TAG_ID.TH: - case TAG_ID.TD: { - p.openElements.clearBackToTableRowContext(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_CELL; - p.activeFormattingElements.insertMarker(); - break; - } - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: - case TAG_ID.TR: { - if (p.openElements.hasInTableScope(TAG_ID.TR)) { - p.openElements.clearBackToTableRowContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - startTagInTableBody(p, token); - } - break; - } - default: { - startTagInTable(p, token); - } - } -} -function endTagInRow(p, token) { - switch (token.tagID) { - case TAG_ID.TR: { - if (p.openElements.hasInTableScope(TAG_ID.TR)) { - p.openElements.clearBackToTableRowContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - } - break; - } - case TAG_ID.TABLE: { - if (p.openElements.hasInTableScope(TAG_ID.TR)) { - p.openElements.clearBackToTableRowContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - endTagInTableBody(p, token); - } - break; - } - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope(TAG_ID.TR)) { - p.openElements.clearBackToTableRowContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - endTagInTableBody(p, token); - } - break; - } - case TAG_ID.BODY: - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: - case TAG_ID.TD: - case TAG_ID.TH: { - break; - } - default: { - endTagInTable(p, token); - } - } -} -function startTagInCell(p, token) { - const tn = token.tagID; - if (TABLE_VOID_ELEMENTS.has(tn)) { - if (p.openElements.hasInTableScope(TAG_ID.TD) || p.openElements.hasInTableScope(TAG_ID.TH)) { - p._closeTableCell(); - startTagInRow(p, token); - } - } else { - startTagInBody(p, token); - } -} -function endTagInCell(p, token) { - const tn = token.tagID; - switch (tn) { - case TAG_ID.TD: - case TAG_ID.TH: { - if (p.openElements.hasInTableScope(tn)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(tn); - p.activeFormattingElements.clearToLastMarker(); - p.insertionMode = InsertionMode.IN_ROW; - } - break; - } - case TAG_ID.TABLE: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: - case TAG_ID.TR: { - if (p.openElements.hasInTableScope(tn)) { - p._closeTableCell(); - endTagInRow(p, token); - } - break; - } - case TAG_ID.BODY: - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: { - break; - } - default: { - endTagInBody(p, token); - } - } -} -function startTagInSelect(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.OPTION: { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - p._insertElement(token, NS.HTML); - break; - } - case TAG_ID.OPTGROUP: { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - if (p.openElements.currentTagId === TAG_ID.OPTGROUP) { - p.openElements.pop(); - } - p._insertElement(token, NS.HTML); - break; - } - case TAG_ID.INPUT: - case TAG_ID.KEYGEN: - case TAG_ID.TEXTAREA: - case TAG_ID.SELECT: { - if (p.openElements.hasInSelectScope(TAG_ID.SELECT)) { - p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); - p._resetInsertionMode(); - if (token.tagID !== TAG_ID.SELECT) { - p._processStartTag(token); - } - } - break; - } - case TAG_ID.SCRIPT: - case TAG_ID.TEMPLATE: { - startTagInHead(p, token); - break; - } - default: - } -} -function endTagInSelect(p, token) { - switch (token.tagID) { - case TAG_ID.OPTGROUP: { - if (p.openElements.stackTop > 0 && p.openElements.currentTagId === TAG_ID.OPTION && p.openElements.tagIDs[p.openElements.stackTop - 1] === TAG_ID.OPTGROUP) { - p.openElements.pop(); - } - if (p.openElements.currentTagId === TAG_ID.OPTGROUP) { - p.openElements.pop(); - } - break; - } - case TAG_ID.OPTION: { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - break; - } - case TAG_ID.SELECT: { - if (p.openElements.hasInSelectScope(TAG_ID.SELECT)) { - p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); - p._resetInsertionMode(); - } - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - default: - } -} -function startTagInSelectInTable(p, token) { - const tn = token.tagID; - if (tn === TAG_ID.CAPTION || tn === TAG_ID.TABLE || tn === TAG_ID.TBODY || tn === TAG_ID.TFOOT || tn === TAG_ID.THEAD || tn === TAG_ID.TR || tn === TAG_ID.TD || tn === TAG_ID.TH) { - p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); - p._resetInsertionMode(); - p._processStartTag(token); - } else { - startTagInSelect(p, token); - } -} -function endTagInSelectInTable(p, token) { - const tn = token.tagID; - if (tn === TAG_ID.CAPTION || tn === TAG_ID.TABLE || tn === TAG_ID.TBODY || tn === TAG_ID.TFOOT || tn === TAG_ID.THEAD || tn === TAG_ID.TR || tn === TAG_ID.TD || tn === TAG_ID.TH) { - if (p.openElements.hasInTableScope(tn)) { - p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); - p._resetInsertionMode(); - p.onEndTag(token); - } - } else { - endTagInSelect(p, token); - } -} -function startTagInTemplate(p, token) { - switch (token.tagID) { - case TAG_ID.BASE: - case TAG_ID.BASEFONT: - case TAG_ID.BGSOUND: - case TAG_ID.LINK: - case TAG_ID.META: - case TAG_ID.NOFRAMES: - case TAG_ID.SCRIPT: - case TAG_ID.STYLE: - case TAG_ID.TEMPLATE: - case TAG_ID.TITLE: { - startTagInHead(p, token); - break; - } - case TAG_ID.CAPTION: - case TAG_ID.COLGROUP: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE; - p.insertionMode = InsertionMode.IN_TABLE; - startTagInTable(p, token); - break; - } - case TAG_ID.COL: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP; - p.insertionMode = InsertionMode.IN_COLUMN_GROUP; - startTagInColumnGroup(p, token); - break; - } - case TAG_ID.TR: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY; - p.insertionMode = InsertionMode.IN_TABLE_BODY; - startTagInTableBody(p, token); - break; - } - case TAG_ID.TD: - case TAG_ID.TH: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW; - p.insertionMode = InsertionMode.IN_ROW; - startTagInRow(p, token); - break; - } - default: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY; - p.insertionMode = InsertionMode.IN_BODY; - startTagInBody(p, token); - } - } -} -function endTagInTemplate(p, token) { - if (token.tagID === TAG_ID.TEMPLATE) { - templateEndTagInHead(p, token); - } -} -function eofInTemplate(p, token) { - if (p.openElements.tmplCount > 0) { - p.openElements.popUntilTagNamePopped(TAG_ID.TEMPLATE); - p.activeFormattingElements.clearToLastMarker(); - p.tmplInsertionModeStack.shift(); - p._resetInsertionMode(); - p.onEof(token); - } else { - stopParsing(p, token); - } -} -function startTagAfterBody(p, token) { - if (token.tagID === TAG_ID.HTML) { - startTagInBody(p, token); - } else { - tokenAfterBody(p, token); - } -} -function endTagAfterBody(p, token) { - var _a2; - if (token.tagID === TAG_ID.HTML) { - if (!p.fragmentContext) { - p.insertionMode = InsertionMode.AFTER_AFTER_BODY; - } - if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === TAG_ID.HTML) { - p._setEndLocation(p.openElements.items[0], token); - const bodyElement = p.openElements.items[1]; - if (bodyElement && !((_a2 = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a2 === void 0 ? void 0 : _a2.endTag)) { - p._setEndLocation(bodyElement, token); - } - } - } else { - tokenAfterBody(p, token); - } -} -function tokenAfterBody(p, token) { - p.insertionMode = InsertionMode.IN_BODY; - modeInBody(p, token); -} -function startTagInFrameset(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.FRAMESET: { - p._insertElement(token, NS.HTML); - break; - } - case TAG_ID.FRAME: { - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; - break; - } - case TAG_ID.NOFRAMES: { - startTagInHead(p, token); - break; - } - default: - } -} -function endTagInFrameset(p, token) { - if (token.tagID === TAG_ID.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) { - p.openElements.pop(); - if (!p.fragmentContext && p.openElements.currentTagId !== TAG_ID.FRAMESET) { - p.insertionMode = InsertionMode.AFTER_FRAMESET; - } - } -} -function startTagAfterFrameset(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.NOFRAMES: { - startTagInHead(p, token); - break; - } - default: - } -} -function endTagAfterFrameset(p, token) { - if (token.tagID === TAG_ID.HTML) { - p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET; - } -} -function startTagAfterAfterBody(p, token) { - if (token.tagID === TAG_ID.HTML) { - startTagInBody(p, token); - } else { - tokenAfterAfterBody(p, token); - } -} -function tokenAfterAfterBody(p, token) { - p.insertionMode = InsertionMode.IN_BODY; - modeInBody(p, token); -} -function startTagAfterAfterFrameset(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.NOFRAMES: { - startTagInHead(p, token); - break; - } - default: - } -} -function nullCharacterInForeignContent(p, token) { - token.chars = REPLACEMENT_CHARACTER; - p._insertCharacters(token); -} -function characterInForeignContent(p, token) { - p._insertCharacters(token); - p.framesetOk = false; -} -function popUntilHtmlOrIntegrationPoint(p) { - while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML && !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) { - p.openElements.pop(); - } -} -function startTagInForeignContent(p, token) { - if (causesExit(token)) { - popUntilHtmlOrIntegrationPoint(p); - p._startTagOutsideForeignContent(token); - } else { - const current = p._getAdjustedCurrentElement(); - const currentNs = p.treeAdapter.getNamespaceURI(current); - if (currentNs === NS.MATHML) { - adjustTokenMathMLAttrs(token); - } else if (currentNs === NS.SVG) { - adjustTokenSVGTagName(token); - adjustTokenSVGAttrs(token); - } - adjustTokenXMLAttrs(token); - if (token.selfClosing) { - p._appendElement(token, currentNs); - } else { - p._insertElement(token, currentNs); - } - token.ackSelfClosing = true; - } -} -function endTagInForeignContent(p, token) { - if (token.tagID === TAG_ID.P || token.tagID === TAG_ID.BR) { - popUntilHtmlOrIntegrationPoint(p); - p._endTagOutsideForeignContent(token); - return; - } - for (let i = p.openElements.stackTop; i > 0; i--) { - const element = p.openElements.items[i]; - if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) { - p._endTagOutsideForeignContent(token); - break; - } - const tagName = p.treeAdapter.getTagName(element); - if (tagName.toLowerCase() === token.tagName) { - token.tagName = tagName; - p.openElements.shortenToLength(i); - break; - } - } -} - -// node_modules/entities/lib/esm/escape.js -var xmlCodeMap = /* @__PURE__ */ new Map([ - [34, """], - [38, "&"], - [39, "'"], - [60, "<"], - [62, ">"] -]); -var getCodePoint = ( - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - String.prototype.codePointAt != null ? (str, index) => str.codePointAt(index) : ( - // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - (c, index) => (c.charCodeAt(index) & 64512) === 55296 ? (c.charCodeAt(index) - 55296) * 1024 + c.charCodeAt(index + 1) - 56320 + 65536 : c.charCodeAt(index) - ) -); -function getEscaper(regex, map) { - return function escape(data) { - let match; - let lastIdx = 0; - let result = ""; - while (match = regex.exec(data)) { - if (lastIdx !== match.index) { - result += data.substring(lastIdx, match.index); - } - result += map.get(match[0].charCodeAt(0)); - lastIdx = match.index + 1; - } - return result + data.substring(lastIdx); - }; -} -var escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap); -var escapeAttribute = getEscaper(/["&\u00A0]/g, /* @__PURE__ */ new Map([ - [34, """], - [38, "&"], - [160, " "] -])); -var escapeText = getEscaper(/[&<>\u00A0]/g, /* @__PURE__ */ new Map([ - [38, "&"], - [60, "<"], - [62, ">"], - [160, " "] -])); - -// node_modules/parse5/dist/serializer/index.js -var VOID_ELEMENTS = /* @__PURE__ */ new Set([ - TAG_NAMES.AREA, - TAG_NAMES.BASE, - TAG_NAMES.BASEFONT, - TAG_NAMES.BGSOUND, - TAG_NAMES.BR, - TAG_NAMES.COL, - TAG_NAMES.EMBED, - TAG_NAMES.FRAME, - TAG_NAMES.HR, - TAG_NAMES.IMG, - TAG_NAMES.INPUT, - TAG_NAMES.KEYGEN, - TAG_NAMES.LINK, - TAG_NAMES.META, - TAG_NAMES.PARAM, - TAG_NAMES.SOURCE, - TAG_NAMES.TRACK, - TAG_NAMES.WBR -]); -function isVoidElement(node, options) { - return options.treeAdapter.isElementNode(node) && options.treeAdapter.getNamespaceURI(node) === NS.HTML && VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)); -} -var defaultOpts = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true }; -function serialize(node, options) { - const opts = { ...defaultOpts, ...options }; - if (isVoidElement(node, opts)) { - return ""; - } - return serializeChildNodes(node, opts); -} -function serializeOuter(node, options) { - const opts = { ...defaultOpts, ...options }; - return serializeNode(node, opts); -} -function serializeChildNodes(parentNode, options) { - let html = ""; - const container = options.treeAdapter.isElementNode(parentNode) && options.treeAdapter.getTagName(parentNode) === TAG_NAMES.TEMPLATE && options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML ? options.treeAdapter.getTemplateContent(parentNode) : parentNode; - const childNodes = options.treeAdapter.getChildNodes(container); - if (childNodes) { - for (const currentNode of childNodes) { - html += serializeNode(currentNode, options); - } - } - return html; -} -function serializeNode(node, options) { - if (options.treeAdapter.isElementNode(node)) { - return serializeElement(node, options); - } - if (options.treeAdapter.isTextNode(node)) { - return serializeTextNode(node, options); - } - if (options.treeAdapter.isCommentNode(node)) { - return serializeCommentNode(node, options); - } - if (options.treeAdapter.isDocumentTypeNode(node)) { - return serializeDocumentTypeNode(node, options); - } - return ""; -} -function serializeElement(node, options) { - const tn = options.treeAdapter.getTagName(node); - return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? "" : `${serializeChildNodes(node, options)}`}`; -} -function serializeAttributes(node, { treeAdapter }) { - let html = ""; - for (const attr of treeAdapter.getAttrList(node)) { - html += " "; - if (!attr.namespace) { - html += attr.name; - } else - switch (attr.namespace) { - case NS.XML: { - html += `xml:${attr.name}`; - break; - } - case NS.XMLNS: { - if (attr.name !== "xmlns") { - html += "xmlns:"; - } - html += attr.name; - break; - } - case NS.XLINK: { - html += `xlink:${attr.name}`; - break; - } - default: { - html += `${attr.prefix}:${attr.name}`; - } - } - html += `="${escapeAttribute(attr.value)}"`; - } - return html; -} -function serializeTextNode(node, options) { - const { treeAdapter } = options; - const content = treeAdapter.getTextNodeContent(node); - const parent = treeAdapter.getParentNode(node); - const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent); - return parentTn && treeAdapter.getNamespaceURI(parent) === NS.HTML && hasUnescapedText(parentTn, options.scriptingEnabled) ? content : escapeText(content); -} -function serializeCommentNode(node, { treeAdapter }) { - return ``; -} -function serializeDocumentTypeNode(node, { treeAdapter }) { - return ``; -} - -// node_modules/parse5/dist/index.js -function parse(html, options) { - return Parser.parse(html, options); -} -function parseFragment(fragmentContext, html, options) { - if (typeof fragmentContext === "string") { - options = html; - html = fragmentContext; - fragmentContext = null; - } - const parser = Parser.getFragmentParser(fragmentContext, options); - parser.tokenizer.write(html, true); - return parser.getFragment(); -} -export { - ERR as ErrorCodes, - Parser, - token_exports as Token, - Tokenizer, - TokenizerMode, - defaultTreeAdapter, - foreign_content_exports as foreignContent, - html_exports as html, - parse, - parseFragment, - serialize, - serializeOuter -}; -//# sourceMappingURL=parse5.js.map diff --git a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/parse5.js.map b/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/parse5.js.map deleted file mode 100644 index dd6a82a..0000000 --- a/.config/chromium/Default/Extensions/likgccmbimhjbgkjambclfkhldnlhbnn/24.9.9.0_0/lib/parse5.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../node_modules/parse5/dist/common/unicode.js", "../../node_modules/parse5/dist/common/error-codes.js", "../../node_modules/parse5/dist/tokenizer/preprocessor.js", "../../node_modules/parse5/dist/common/token.js", "../../node_modules/entities/lib/esm/generated/generated/decode-data-html.ts", "../../node_modules/entities/lib/esm/generated/generated/decode-data-xml.ts", "../../node_modules/entities/lib/esm/decode_codepoint.ts", "../../node_modules/entities/lib/esm/decode.ts", "../../node_modules/parse5/dist/common/html.js", "../../node_modules/parse5/dist/tokenizer/index.js", "../../node_modules/parse5/dist/parser/open-element-stack.js", "../../node_modules/parse5/dist/parser/formatting-element-list.js", "../../node_modules/parse5/dist/tree-adapters/default.js", "../../node_modules/parse5/dist/common/doctype.js", "../../node_modules/parse5/dist/common/foreign-content.js", "../../node_modules/parse5/dist/parser/index.js", "../../node_modules/entities/lib/esm/escape.ts", "../../node_modules/parse5/dist/serializer/index.js", "../../node_modules/parse5/dist/index.js"], - "sourcesContent": ["const UNDEFINED_CODE_POINTS = new Set([\n 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214,\n 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894,\n 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574,\n 1048575, 1114110, 1114111,\n]);\nexport const REPLACEMENT_CHARACTER = '\\uFFFD';\nexport var CODE_POINTS;\n(function (CODE_POINTS) {\n CODE_POINTS[CODE_POINTS[\"EOF\"] = -1] = \"EOF\";\n CODE_POINTS[CODE_POINTS[\"NULL\"] = 0] = \"NULL\";\n CODE_POINTS[CODE_POINTS[\"TABULATION\"] = 9] = \"TABULATION\";\n CODE_POINTS[CODE_POINTS[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n CODE_POINTS[CODE_POINTS[\"LINE_FEED\"] = 10] = \"LINE_FEED\";\n CODE_POINTS[CODE_POINTS[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n CODE_POINTS[CODE_POINTS[\"SPACE\"] = 32] = \"SPACE\";\n CODE_POINTS[CODE_POINTS[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"NUMBER_SIGN\"] = 35] = \"NUMBER_SIGN\";\n CODE_POINTS[CODE_POINTS[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n CODE_POINTS[CODE_POINTS[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n CODE_POINTS[CODE_POINTS[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n CODE_POINTS[CODE_POINTS[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_0\"] = 48] = \"DIGIT_0\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_9\"] = 57] = \"DIGIT_9\";\n CODE_POINTS[CODE_POINTS[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n CODE_POINTS[CODE_POINTS[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n CODE_POINTS[CODE_POINTS[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_A\"] = 65] = \"LATIN_CAPITAL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_F\"] = 70] = \"LATIN_CAPITAL_F\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_X\"] = 88] = \"LATIN_CAPITAL_X\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_Z\"] = 90] = \"LATIN_CAPITAL_Z\";\n CODE_POINTS[CODE_POINTS[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n CODE_POINTS[CODE_POINTS[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_A\"] = 97] = \"LATIN_SMALL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_F\"] = 102] = \"LATIN_SMALL_F\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_X\"] = 120] = \"LATIN_SMALL_X\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_Z\"] = 122] = \"LATIN_SMALL_Z\";\n CODE_POINTS[CODE_POINTS[\"REPLACEMENT_CHARACTER\"] = 65533] = \"REPLACEMENT_CHARACTER\";\n})(CODE_POINTS = CODE_POINTS || (CODE_POINTS = {}));\nexport const SEQUENCES = {\n DASH_DASH: '--',\n CDATA_START: '[CDATA[',\n DOCTYPE: 'doctype',\n SCRIPT: 'script',\n PUBLIC: 'public',\n SYSTEM: 'system',\n};\n//Surrogates\nexport function isSurrogate(cp) {\n return cp >= 55296 && cp <= 57343;\n}\nexport function isSurrogatePair(cp) {\n return cp >= 56320 && cp <= 57343;\n}\nexport function getSurrogatePairCodePoint(cp1, cp2) {\n return (cp1 - 55296) * 1024 + 9216 + cp2;\n}\n//NOTE: excluding NULL and ASCII whitespace\nexport function isControlCodePoint(cp) {\n return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n (cp >= 0x7f && cp <= 0x9f));\n}\nexport function isUndefinedCodePoint(cp) {\n return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);\n}\n//# sourceMappingURL=unicode.js.map", "export var ERR;\n(function (ERR) {\n ERR[\"controlCharacterInInputStream\"] = \"control-character-in-input-stream\";\n ERR[\"noncharacterInInputStream\"] = \"noncharacter-in-input-stream\";\n ERR[\"surrogateInInputStream\"] = \"surrogate-in-input-stream\";\n ERR[\"nonVoidHtmlElementStartTagWithTrailingSolidus\"] = \"non-void-html-element-start-tag-with-trailing-solidus\";\n ERR[\"endTagWithAttributes\"] = \"end-tag-with-attributes\";\n ERR[\"endTagWithTrailingSolidus\"] = \"end-tag-with-trailing-solidus\";\n ERR[\"unexpectedSolidusInTag\"] = \"unexpected-solidus-in-tag\";\n ERR[\"unexpectedNullCharacter\"] = \"unexpected-null-character\";\n ERR[\"unexpectedQuestionMarkInsteadOfTagName\"] = \"unexpected-question-mark-instead-of-tag-name\";\n ERR[\"invalidFirstCharacterOfTagName\"] = \"invalid-first-character-of-tag-name\";\n ERR[\"unexpectedEqualsSignBeforeAttributeName\"] = \"unexpected-equals-sign-before-attribute-name\";\n ERR[\"missingEndTagName\"] = \"missing-end-tag-name\";\n ERR[\"unexpectedCharacterInAttributeName\"] = \"unexpected-character-in-attribute-name\";\n ERR[\"unknownNamedCharacterReference\"] = \"unknown-named-character-reference\";\n ERR[\"missingSemicolonAfterCharacterReference\"] = \"missing-semicolon-after-character-reference\";\n ERR[\"unexpectedCharacterAfterDoctypeSystemIdentifier\"] = \"unexpected-character-after-doctype-system-identifier\";\n ERR[\"unexpectedCharacterInUnquotedAttributeValue\"] = \"unexpected-character-in-unquoted-attribute-value\";\n ERR[\"eofBeforeTagName\"] = \"eof-before-tag-name\";\n ERR[\"eofInTag\"] = \"eof-in-tag\";\n ERR[\"missingAttributeValue\"] = \"missing-attribute-value\";\n ERR[\"missingWhitespaceBetweenAttributes\"] = \"missing-whitespace-between-attributes\";\n ERR[\"missingWhitespaceAfterDoctypePublicKeyword\"] = \"missing-whitespace-after-doctype-public-keyword\";\n ERR[\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"] = \"missing-whitespace-between-doctype-public-and-system-identifiers\";\n ERR[\"missingWhitespaceAfterDoctypeSystemKeyword\"] = \"missing-whitespace-after-doctype-system-keyword\";\n ERR[\"missingQuoteBeforeDoctypePublicIdentifier\"] = \"missing-quote-before-doctype-public-identifier\";\n ERR[\"missingQuoteBeforeDoctypeSystemIdentifier\"] = \"missing-quote-before-doctype-system-identifier\";\n ERR[\"missingDoctypePublicIdentifier\"] = \"missing-doctype-public-identifier\";\n ERR[\"missingDoctypeSystemIdentifier\"] = \"missing-doctype-system-identifier\";\n ERR[\"abruptDoctypePublicIdentifier\"] = \"abrupt-doctype-public-identifier\";\n ERR[\"abruptDoctypeSystemIdentifier\"] = \"abrupt-doctype-system-identifier\";\n ERR[\"cdataInHtmlContent\"] = \"cdata-in-html-content\";\n ERR[\"incorrectlyOpenedComment\"] = \"incorrectly-opened-comment\";\n ERR[\"eofInScriptHtmlCommentLikeText\"] = \"eof-in-script-html-comment-like-text\";\n ERR[\"eofInDoctype\"] = \"eof-in-doctype\";\n ERR[\"nestedComment\"] = \"nested-comment\";\n ERR[\"abruptClosingOfEmptyComment\"] = \"abrupt-closing-of-empty-comment\";\n ERR[\"eofInComment\"] = \"eof-in-comment\";\n ERR[\"incorrectlyClosedComment\"] = \"incorrectly-closed-comment\";\n ERR[\"eofInCdata\"] = \"eof-in-cdata\";\n ERR[\"absenceOfDigitsInNumericCharacterReference\"] = \"absence-of-digits-in-numeric-character-reference\";\n ERR[\"nullCharacterReference\"] = \"null-character-reference\";\n ERR[\"surrogateCharacterReference\"] = \"surrogate-character-reference\";\n ERR[\"characterReferenceOutsideUnicodeRange\"] = \"character-reference-outside-unicode-range\";\n ERR[\"controlCharacterReference\"] = \"control-character-reference\";\n ERR[\"noncharacterCharacterReference\"] = \"noncharacter-character-reference\";\n ERR[\"missingWhitespaceBeforeDoctypeName\"] = \"missing-whitespace-before-doctype-name\";\n ERR[\"missingDoctypeName\"] = \"missing-doctype-name\";\n ERR[\"invalidCharacterSequenceAfterDoctypeName\"] = \"invalid-character-sequence-after-doctype-name\";\n ERR[\"duplicateAttribute\"] = \"duplicate-attribute\";\n ERR[\"nonConformingDoctype\"] = \"non-conforming-doctype\";\n ERR[\"missingDoctype\"] = \"missing-doctype\";\n ERR[\"misplacedDoctype\"] = \"misplaced-doctype\";\n ERR[\"endTagWithoutMatchingOpenElement\"] = \"end-tag-without-matching-open-element\";\n ERR[\"closingOfElementWithOpenChildElements\"] = \"closing-of-element-with-open-child-elements\";\n ERR[\"disallowedContentInNoscriptInHead\"] = \"disallowed-content-in-noscript-in-head\";\n ERR[\"openElementsLeftAfterEof\"] = \"open-elements-left-after-eof\";\n ERR[\"abandonedHeadElementChild\"] = \"abandoned-head-element-child\";\n ERR[\"misplacedStartTagForHeadElement\"] = \"misplaced-start-tag-for-head-element\";\n ERR[\"nestedNoscriptInHead\"] = \"nested-noscript-in-head\";\n ERR[\"eofInElementThatCanContainOnlyText\"] = \"eof-in-element-that-can-contain-only-text\";\n})(ERR = ERR || (ERR = {}));\n//# sourceMappingURL=error-codes.js.map", "import { CODE_POINTS as $, getSurrogatePairCodePoint, isControlCodePoint, isSurrogate, isSurrogatePair, isUndefinedCodePoint, } from '../common/unicode.js';\nimport { ERR } from '../common/error-codes.js';\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nexport class Preprocessor {\n constructor(handler) {\n this.handler = handler;\n this.html = '';\n this.pos = -1;\n // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0\n this.lastGapPos = -2;\n this.gapStack = [];\n this.skipNextNewLine = false;\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n this.line = 1;\n //NOTE: avoid reporting errors twice on advance/retreat\n this.lastErrOffset = -1;\n }\n /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */\n get col() {\n return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);\n }\n get offset() {\n return this.droppedBufferSize + this.pos;\n }\n getError(code) {\n const { line, col, offset } = this;\n return {\n code,\n startLine: line,\n endLine: line,\n startCol: col,\n endCol: col,\n startOffset: offset,\n endOffset: offset,\n };\n }\n _err(code) {\n if (this.handler.onParseError && this.lastErrOffset !== this.offset) {\n this.lastErrOffset = this.offset;\n this.handler.onParseError(this.getError(code));\n }\n }\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n _processSurrogate(cp) {\n //NOTE: try to peek a surrogate pair\n if (this.pos !== this.html.length - 1) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n if (isSurrogatePair(nextCp)) {\n //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n this.pos++;\n //NOTE: add a gap that should be avoided during retreat\n this._addGap();\n return getSurrogatePairCodePoint(cp, nextCp);\n }\n }\n //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet.\n else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return $.EOF;\n }\n //NOTE: isolated surrogate\n this._err(ERR.surrogateInInputStream);\n return cp;\n }\n willDropParsedChunk() {\n return this.pos > this.bufferWaterline;\n }\n dropParsedChunk() {\n if (this.willDropParsedChunk()) {\n this.html = this.html.substring(this.pos);\n this.lineStartPos -= this.pos;\n this.droppedBufferSize += this.pos;\n this.pos = 0;\n this.lastGapPos = -2;\n this.gapStack.length = 0;\n }\n }\n write(chunk, isLastChunk) {\n if (this.html.length > 0) {\n this.html += chunk;\n }\n else {\n this.html = chunk;\n }\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);\n this.endOfChunkHit = false;\n }\n startsWith(pattern, caseSensitive) {\n // Check if our buffer has enough characters\n if (this.pos + pattern.length > this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return false;\n }\n if (caseSensitive) {\n return this.html.startsWith(pattern, this.pos);\n }\n for (let i = 0; i < pattern.length; i++) {\n const cp = this.html.charCodeAt(this.pos + i) | 0x20;\n if (cp !== pattern.charCodeAt(i)) {\n return false;\n }\n }\n return true;\n }\n peek(offset) {\n const pos = this.pos + offset;\n if (pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n const code = this.html.charCodeAt(pos);\n return code === $.CARRIAGE_RETURN ? $.LINE_FEED : code;\n }\n advance() {\n this.pos++;\n //NOTE: LF should be in the last column of the line\n if (this.isEol) {\n this.isEol = false;\n this.line++;\n this.lineStartPos = this.pos;\n }\n if (this.pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n let cp = this.html.charCodeAt(this.pos);\n //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n if (cp === $.CARRIAGE_RETURN) {\n this.isEol = true;\n this.skipNextNewLine = true;\n return $.LINE_FEED;\n }\n //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n //must be ignored.\n if (cp === $.LINE_FEED) {\n this.isEol = true;\n if (this.skipNextNewLine) {\n // `line` will be bumped again in the recursive call.\n this.line--;\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n }\n this.skipNextNewLine = false;\n if (isSurrogate(cp)) {\n cp = this._processSurrogate(cp);\n }\n //OPTIMIZATION: first check if code point is in the common allowed\n //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n //before going into detailed performance cost validation.\n const isCommonValidRange = this.handler.onParseError === null ||\n (cp > 0x1f && cp < 0x7f) ||\n cp === $.LINE_FEED ||\n cp === $.CARRIAGE_RETURN ||\n (cp > 0x9f && cp < 64976);\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n return cp;\n }\n _checkForProblematicCharacters(cp) {\n if (isControlCodePoint(cp)) {\n this._err(ERR.controlCharacterInInputStream);\n }\n else if (isUndefinedCodePoint(cp)) {\n this._err(ERR.noncharacterInInputStream);\n }\n }\n retreat(count) {\n this.pos -= count;\n while (this.pos < this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n this.isEol = false;\n }\n}\n//# sourceMappingURL=preprocessor.js.map", "export var TokenType;\n(function (TokenType) {\n TokenType[TokenType[\"CHARACTER\"] = 0] = \"CHARACTER\";\n TokenType[TokenType[\"NULL_CHARACTER\"] = 1] = \"NULL_CHARACTER\";\n TokenType[TokenType[\"WHITESPACE_CHARACTER\"] = 2] = \"WHITESPACE_CHARACTER\";\n TokenType[TokenType[\"START_TAG\"] = 3] = \"START_TAG\";\n TokenType[TokenType[\"END_TAG\"] = 4] = \"END_TAG\";\n TokenType[TokenType[\"COMMENT\"] = 5] = \"COMMENT\";\n TokenType[TokenType[\"DOCTYPE\"] = 6] = \"DOCTYPE\";\n TokenType[TokenType[\"EOF\"] = 7] = \"EOF\";\n TokenType[TokenType[\"HIBERNATION\"] = 8] = \"HIBERNATION\";\n})(TokenType = TokenType || (TokenType = {}));\nexport function getTokenAttr(token, attrName) {\n for (let i = token.attrs.length - 1; i >= 0; i--) {\n if (token.attrs[i].name === attrName) {\n return token.attrs[i].value;\n }\n }\n return null;\n}\n//# sourceMappingURL=token.js.map", null, null, null, null, "/** All valid namespaces in HTML. */\nexport var NS;\n(function (NS) {\n NS[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n NS[\"MATHML\"] = \"http://www.w3.org/1998/Math/MathML\";\n NS[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n NS[\"XLINK\"] = \"http://www.w3.org/1999/xlink\";\n NS[\"XML\"] = \"http://www.w3.org/XML/1998/namespace\";\n NS[\"XMLNS\"] = \"http://www.w3.org/2000/xmlns/\";\n})(NS = NS || (NS = {}));\nexport var ATTRS;\n(function (ATTRS) {\n ATTRS[\"TYPE\"] = \"type\";\n ATTRS[\"ACTION\"] = \"action\";\n ATTRS[\"ENCODING\"] = \"encoding\";\n ATTRS[\"PROMPT\"] = \"prompt\";\n ATTRS[\"NAME\"] = \"name\";\n ATTRS[\"COLOR\"] = \"color\";\n ATTRS[\"FACE\"] = \"face\";\n ATTRS[\"SIZE\"] = \"size\";\n})(ATTRS = ATTRS || (ATTRS = {}));\n/**\n * The mode of the document.\n *\n * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks}\n */\nexport var DOCUMENT_MODE;\n(function (DOCUMENT_MODE) {\n DOCUMENT_MODE[\"NO_QUIRKS\"] = \"no-quirks\";\n DOCUMENT_MODE[\"QUIRKS\"] = \"quirks\";\n DOCUMENT_MODE[\"LIMITED_QUIRKS\"] = \"limited-quirks\";\n})(DOCUMENT_MODE = DOCUMENT_MODE || (DOCUMENT_MODE = {}));\nexport var TAG_NAMES;\n(function (TAG_NAMES) {\n TAG_NAMES[\"A\"] = \"a\";\n TAG_NAMES[\"ADDRESS\"] = \"address\";\n TAG_NAMES[\"ANNOTATION_XML\"] = \"annotation-xml\";\n TAG_NAMES[\"APPLET\"] = \"applet\";\n TAG_NAMES[\"AREA\"] = \"area\";\n TAG_NAMES[\"ARTICLE\"] = \"article\";\n TAG_NAMES[\"ASIDE\"] = \"aside\";\n TAG_NAMES[\"B\"] = \"b\";\n TAG_NAMES[\"BASE\"] = \"base\";\n TAG_NAMES[\"BASEFONT\"] = \"basefont\";\n TAG_NAMES[\"BGSOUND\"] = \"bgsound\";\n TAG_NAMES[\"BIG\"] = \"big\";\n TAG_NAMES[\"BLOCKQUOTE\"] = \"blockquote\";\n TAG_NAMES[\"BODY\"] = \"body\";\n TAG_NAMES[\"BR\"] = \"br\";\n TAG_NAMES[\"BUTTON\"] = \"button\";\n TAG_NAMES[\"CAPTION\"] = \"caption\";\n TAG_NAMES[\"CENTER\"] = \"center\";\n TAG_NAMES[\"CODE\"] = \"code\";\n TAG_NAMES[\"COL\"] = \"col\";\n TAG_NAMES[\"COLGROUP\"] = \"colgroup\";\n TAG_NAMES[\"DD\"] = \"dd\";\n TAG_NAMES[\"DESC\"] = \"desc\";\n TAG_NAMES[\"DETAILS\"] = \"details\";\n TAG_NAMES[\"DIALOG\"] = \"dialog\";\n TAG_NAMES[\"DIR\"] = \"dir\";\n TAG_NAMES[\"DIV\"] = \"div\";\n TAG_NAMES[\"DL\"] = \"dl\";\n TAG_NAMES[\"DT\"] = \"dt\";\n TAG_NAMES[\"EM\"] = \"em\";\n TAG_NAMES[\"EMBED\"] = \"embed\";\n TAG_NAMES[\"FIELDSET\"] = \"fieldset\";\n TAG_NAMES[\"FIGCAPTION\"] = \"figcaption\";\n TAG_NAMES[\"FIGURE\"] = \"figure\";\n TAG_NAMES[\"FONT\"] = \"font\";\n TAG_NAMES[\"FOOTER\"] = \"footer\";\n TAG_NAMES[\"FOREIGN_OBJECT\"] = \"foreignObject\";\n TAG_NAMES[\"FORM\"] = \"form\";\n TAG_NAMES[\"FRAME\"] = \"frame\";\n TAG_NAMES[\"FRAMESET\"] = \"frameset\";\n TAG_NAMES[\"H1\"] = \"h1\";\n TAG_NAMES[\"H2\"] = \"h2\";\n TAG_NAMES[\"H3\"] = \"h3\";\n TAG_NAMES[\"H4\"] = \"h4\";\n TAG_NAMES[\"H5\"] = \"h5\";\n TAG_NAMES[\"H6\"] = \"h6\";\n TAG_NAMES[\"HEAD\"] = \"head\";\n TAG_NAMES[\"HEADER\"] = \"header\";\n TAG_NAMES[\"HGROUP\"] = \"hgroup\";\n TAG_NAMES[\"HR\"] = \"hr\";\n TAG_NAMES[\"HTML\"] = \"html\";\n TAG_NAMES[\"I\"] = \"i\";\n TAG_NAMES[\"IMG\"] = \"img\";\n TAG_NAMES[\"IMAGE\"] = \"image\";\n TAG_NAMES[\"INPUT\"] = \"input\";\n TAG_NAMES[\"IFRAME\"] = \"iframe\";\n TAG_NAMES[\"KEYGEN\"] = \"keygen\";\n TAG_NAMES[\"LABEL\"] = \"label\";\n TAG_NAMES[\"LI\"] = \"li\";\n TAG_NAMES[\"LINK\"] = \"link\";\n TAG_NAMES[\"LISTING\"] = \"listing\";\n TAG_NAMES[\"MAIN\"] = \"main\";\n TAG_NAMES[\"MALIGNMARK\"] = \"malignmark\";\n TAG_NAMES[\"MARQUEE\"] = \"marquee\";\n TAG_NAMES[\"MATH\"] = \"math\";\n TAG_NAMES[\"MENU\"] = \"menu\";\n TAG_NAMES[\"META\"] = \"meta\";\n TAG_NAMES[\"MGLYPH\"] = \"mglyph\";\n TAG_NAMES[\"MI\"] = \"mi\";\n TAG_NAMES[\"MO\"] = \"mo\";\n TAG_NAMES[\"MN\"] = \"mn\";\n TAG_NAMES[\"MS\"] = \"ms\";\n TAG_NAMES[\"MTEXT\"] = \"mtext\";\n TAG_NAMES[\"NAV\"] = \"nav\";\n TAG_NAMES[\"NOBR\"] = \"nobr\";\n TAG_NAMES[\"NOFRAMES\"] = \"noframes\";\n TAG_NAMES[\"NOEMBED\"] = \"noembed\";\n TAG_NAMES[\"NOSCRIPT\"] = \"noscript\";\n TAG_NAMES[\"OBJECT\"] = \"object\";\n TAG_NAMES[\"OL\"] = \"ol\";\n TAG_NAMES[\"OPTGROUP\"] = \"optgroup\";\n TAG_NAMES[\"OPTION\"] = \"option\";\n TAG_NAMES[\"P\"] = \"p\";\n TAG_NAMES[\"PARAM\"] = \"param\";\n TAG_NAMES[\"PLAINTEXT\"] = \"plaintext\";\n TAG_NAMES[\"PRE\"] = \"pre\";\n TAG_NAMES[\"RB\"] = \"rb\";\n TAG_NAMES[\"RP\"] = \"rp\";\n TAG_NAMES[\"RT\"] = \"rt\";\n TAG_NAMES[\"RTC\"] = \"rtc\";\n TAG_NAMES[\"RUBY\"] = \"ruby\";\n TAG_NAMES[\"S\"] = \"s\";\n TAG_NAMES[\"SCRIPT\"] = \"script\";\n TAG_NAMES[\"SECTION\"] = \"section\";\n TAG_NAMES[\"SELECT\"] = \"select\";\n TAG_NAMES[\"SOURCE\"] = \"source\";\n TAG_NAMES[\"SMALL\"] = \"small\";\n TAG_NAMES[\"SPAN\"] = \"span\";\n TAG_NAMES[\"STRIKE\"] = \"strike\";\n TAG_NAMES[\"STRONG\"] = \"strong\";\n TAG_NAMES[\"STYLE\"] = \"style\";\n TAG_NAMES[\"SUB\"] = \"sub\";\n TAG_NAMES[\"SUMMARY\"] = \"summary\";\n TAG_NAMES[\"SUP\"] = \"sup\";\n TAG_NAMES[\"TABLE\"] = \"table\";\n TAG_NAMES[\"TBODY\"] = \"tbody\";\n TAG_NAMES[\"TEMPLATE\"] = \"template\";\n TAG_NAMES[\"TEXTAREA\"] = \"textarea\";\n TAG_NAMES[\"TFOOT\"] = \"tfoot\";\n TAG_NAMES[\"TD\"] = \"td\";\n TAG_NAMES[\"TH\"] = \"th\";\n TAG_NAMES[\"THEAD\"] = \"thead\";\n TAG_NAMES[\"TITLE\"] = \"title\";\n TAG_NAMES[\"TR\"] = \"tr\";\n TAG_NAMES[\"TRACK\"] = \"track\";\n TAG_NAMES[\"TT\"] = \"tt\";\n TAG_NAMES[\"U\"] = \"u\";\n TAG_NAMES[\"UL\"] = \"ul\";\n TAG_NAMES[\"SVG\"] = \"svg\";\n TAG_NAMES[\"VAR\"] = \"var\";\n TAG_NAMES[\"WBR\"] = \"wbr\";\n TAG_NAMES[\"XMP\"] = \"xmp\";\n})(TAG_NAMES = TAG_NAMES || (TAG_NAMES = {}));\n/**\n * Tag IDs are numeric IDs for known tag names.\n *\n * We use tag IDs to improve the performance of tag name comparisons.\n */\nexport var TAG_ID;\n(function (TAG_ID) {\n TAG_ID[TAG_ID[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n TAG_ID[TAG_ID[\"A\"] = 1] = \"A\";\n TAG_ID[TAG_ID[\"ADDRESS\"] = 2] = \"ADDRESS\";\n TAG_ID[TAG_ID[\"ANNOTATION_XML\"] = 3] = \"ANNOTATION_XML\";\n TAG_ID[TAG_ID[\"APPLET\"] = 4] = \"APPLET\";\n TAG_ID[TAG_ID[\"AREA\"] = 5] = \"AREA\";\n TAG_ID[TAG_ID[\"ARTICLE\"] = 6] = \"ARTICLE\";\n TAG_ID[TAG_ID[\"ASIDE\"] = 7] = \"ASIDE\";\n TAG_ID[TAG_ID[\"B\"] = 8] = \"B\";\n TAG_ID[TAG_ID[\"BASE\"] = 9] = \"BASE\";\n TAG_ID[TAG_ID[\"BASEFONT\"] = 10] = \"BASEFONT\";\n TAG_ID[TAG_ID[\"BGSOUND\"] = 11] = \"BGSOUND\";\n TAG_ID[TAG_ID[\"BIG\"] = 12] = \"BIG\";\n TAG_ID[TAG_ID[\"BLOCKQUOTE\"] = 13] = \"BLOCKQUOTE\";\n TAG_ID[TAG_ID[\"BODY\"] = 14] = \"BODY\";\n TAG_ID[TAG_ID[\"BR\"] = 15] = \"BR\";\n TAG_ID[TAG_ID[\"BUTTON\"] = 16] = \"BUTTON\";\n TAG_ID[TAG_ID[\"CAPTION\"] = 17] = \"CAPTION\";\n TAG_ID[TAG_ID[\"CENTER\"] = 18] = \"CENTER\";\n TAG_ID[TAG_ID[\"CODE\"] = 19] = \"CODE\";\n TAG_ID[TAG_ID[\"COL\"] = 20] = \"COL\";\n TAG_ID[TAG_ID[\"COLGROUP\"] = 21] = \"COLGROUP\";\n TAG_ID[TAG_ID[\"DD\"] = 22] = \"DD\";\n TAG_ID[TAG_ID[\"DESC\"] = 23] = \"DESC\";\n TAG_ID[TAG_ID[\"DETAILS\"] = 24] = \"DETAILS\";\n TAG_ID[TAG_ID[\"DIALOG\"] = 25] = \"DIALOG\";\n TAG_ID[TAG_ID[\"DIR\"] = 26] = \"DIR\";\n TAG_ID[TAG_ID[\"DIV\"] = 27] = \"DIV\";\n TAG_ID[TAG_ID[\"DL\"] = 28] = \"DL\";\n TAG_ID[TAG_ID[\"DT\"] = 29] = \"DT\";\n TAG_ID[TAG_ID[\"EM\"] = 30] = \"EM\";\n TAG_ID[TAG_ID[\"EMBED\"] = 31] = \"EMBED\";\n TAG_ID[TAG_ID[\"FIELDSET\"] = 32] = \"FIELDSET\";\n TAG_ID[TAG_ID[\"FIGCAPTION\"] = 33] = \"FIGCAPTION\";\n TAG_ID[TAG_ID[\"FIGURE\"] = 34] = \"FIGURE\";\n TAG_ID[TAG_ID[\"FONT\"] = 35] = \"FONT\";\n TAG_ID[TAG_ID[\"FOOTER\"] = 36] = \"FOOTER\";\n TAG_ID[TAG_ID[\"FOREIGN_OBJECT\"] = 37] = \"FOREIGN_OBJECT\";\n TAG_ID[TAG_ID[\"FORM\"] = 38] = \"FORM\";\n TAG_ID[TAG_ID[\"FRAME\"] = 39] = \"FRAME\";\n TAG_ID[TAG_ID[\"FRAMESET\"] = 40] = \"FRAMESET\";\n TAG_ID[TAG_ID[\"H1\"] = 41] = \"H1\";\n TAG_ID[TAG_ID[\"H2\"] = 42] = \"H2\";\n TAG_ID[TAG_ID[\"H3\"] = 43] = \"H3\";\n TAG_ID[TAG_ID[\"H4\"] = 44] = \"H4\";\n TAG_ID[TAG_ID[\"H5\"] = 45] = \"H5\";\n TAG_ID[TAG_ID[\"H6\"] = 46] = \"H6\";\n TAG_ID[TAG_ID[\"HEAD\"] = 47] = \"HEAD\";\n TAG_ID[TAG_ID[\"HEADER\"] = 48] = \"HEADER\";\n TAG_ID[TAG_ID[\"HGROUP\"] = 49] = \"HGROUP\";\n TAG_ID[TAG_ID[\"HR\"] = 50] = \"HR\";\n TAG_ID[TAG_ID[\"HTML\"] = 51] = \"HTML\";\n TAG_ID[TAG_ID[\"I\"] = 52] = \"I\";\n TAG_ID[TAG_ID[\"IMG\"] = 53] = \"IMG\";\n TAG_ID[TAG_ID[\"IMAGE\"] = 54] = \"IMAGE\";\n TAG_ID[TAG_ID[\"INPUT\"] = 55] = \"INPUT\";\n TAG_ID[TAG_ID[\"IFRAME\"] = 56] = \"IFRAME\";\n TAG_ID[TAG_ID[\"KEYGEN\"] = 57] = \"KEYGEN\";\n TAG_ID[TAG_ID[\"LABEL\"] = 58] = \"LABEL\";\n TAG_ID[TAG_ID[\"LI\"] = 59] = \"LI\";\n TAG_ID[TAG_ID[\"LINK\"] = 60] = \"LINK\";\n TAG_ID[TAG_ID[\"LISTING\"] = 61] = \"LISTING\";\n TAG_ID[TAG_ID[\"MAIN\"] = 62] = \"MAIN\";\n TAG_ID[TAG_ID[\"MALIGNMARK\"] = 63] = \"MALIGNMARK\";\n TAG_ID[TAG_ID[\"MARQUEE\"] = 64] = \"MARQUEE\";\n TAG_ID[TAG_ID[\"MATH\"] = 65] = \"MATH\";\n TAG_ID[TAG_ID[\"MENU\"] = 66] = \"MENU\";\n TAG_ID[TAG_ID[\"META\"] = 67] = \"META\";\n TAG_ID[TAG_ID[\"MGLYPH\"] = 68] = \"MGLYPH\";\n TAG_ID[TAG_ID[\"MI\"] = 69] = \"MI\";\n TAG_ID[TAG_ID[\"MO\"] = 70] = \"MO\";\n TAG_ID[TAG_ID[\"MN\"] = 71] = \"MN\";\n TAG_ID[TAG_ID[\"MS\"] = 72] = \"MS\";\n TAG_ID[TAG_ID[\"MTEXT\"] = 73] = \"MTEXT\";\n TAG_ID[TAG_ID[\"NAV\"] = 74] = \"NAV\";\n TAG_ID[TAG_ID[\"NOBR\"] = 75] = \"NOBR\";\n TAG_ID[TAG_ID[\"NOFRAMES\"] = 76] = \"NOFRAMES\";\n TAG_ID[TAG_ID[\"NOEMBED\"] = 77] = \"NOEMBED\";\n TAG_ID[TAG_ID[\"NOSCRIPT\"] = 78] = \"NOSCRIPT\";\n TAG_ID[TAG_ID[\"OBJECT\"] = 79] = \"OBJECT\";\n TAG_ID[TAG_ID[\"OL\"] = 80] = \"OL\";\n TAG_ID[TAG_ID[\"OPTGROUP\"] = 81] = \"OPTGROUP\";\n TAG_ID[TAG_ID[\"OPTION\"] = 82] = \"OPTION\";\n TAG_ID[TAG_ID[\"P\"] = 83] = \"P\";\n TAG_ID[TAG_ID[\"PARAM\"] = 84] = \"PARAM\";\n TAG_ID[TAG_ID[\"PLAINTEXT\"] = 85] = \"PLAINTEXT\";\n TAG_ID[TAG_ID[\"PRE\"] = 86] = \"PRE\";\n TAG_ID[TAG_ID[\"RB\"] = 87] = \"RB\";\n TAG_ID[TAG_ID[\"RP\"] = 88] = \"RP\";\n TAG_ID[TAG_ID[\"RT\"] = 89] = \"RT\";\n TAG_ID[TAG_ID[\"RTC\"] = 90] = \"RTC\";\n TAG_ID[TAG_ID[\"RUBY\"] = 91] = \"RUBY\";\n TAG_ID[TAG_ID[\"S\"] = 92] = \"S\";\n TAG_ID[TAG_ID[\"SCRIPT\"] = 93] = \"SCRIPT\";\n TAG_ID[TAG_ID[\"SECTION\"] = 94] = \"SECTION\";\n TAG_ID[TAG_ID[\"SELECT\"] = 95] = \"SELECT\";\n TAG_ID[TAG_ID[\"SOURCE\"] = 96] = \"SOURCE\";\n TAG_ID[TAG_ID[\"SMALL\"] = 97] = \"SMALL\";\n TAG_ID[TAG_ID[\"SPAN\"] = 98] = \"SPAN\";\n TAG_ID[TAG_ID[\"STRIKE\"] = 99] = \"STRIKE\";\n TAG_ID[TAG_ID[\"STRONG\"] = 100] = \"STRONG\";\n TAG_ID[TAG_ID[\"STYLE\"] = 101] = \"STYLE\";\n TAG_ID[TAG_ID[\"SUB\"] = 102] = \"SUB\";\n TAG_ID[TAG_ID[\"SUMMARY\"] = 103] = \"SUMMARY\";\n TAG_ID[TAG_ID[\"SUP\"] = 104] = \"SUP\";\n TAG_ID[TAG_ID[\"TABLE\"] = 105] = \"TABLE\";\n TAG_ID[TAG_ID[\"TBODY\"] = 106] = \"TBODY\";\n TAG_ID[TAG_ID[\"TEMPLATE\"] = 107] = \"TEMPLATE\";\n TAG_ID[TAG_ID[\"TEXTAREA\"] = 108] = \"TEXTAREA\";\n TAG_ID[TAG_ID[\"TFOOT\"] = 109] = \"TFOOT\";\n TAG_ID[TAG_ID[\"TD\"] = 110] = \"TD\";\n TAG_ID[TAG_ID[\"TH\"] = 111] = \"TH\";\n TAG_ID[TAG_ID[\"THEAD\"] = 112] = \"THEAD\";\n TAG_ID[TAG_ID[\"TITLE\"] = 113] = \"TITLE\";\n TAG_ID[TAG_ID[\"TR\"] = 114] = \"TR\";\n TAG_ID[TAG_ID[\"TRACK\"] = 115] = \"TRACK\";\n TAG_ID[TAG_ID[\"TT\"] = 116] = \"TT\";\n TAG_ID[TAG_ID[\"U\"] = 117] = \"U\";\n TAG_ID[TAG_ID[\"UL\"] = 118] = \"UL\";\n TAG_ID[TAG_ID[\"SVG\"] = 119] = \"SVG\";\n TAG_ID[TAG_ID[\"VAR\"] = 120] = \"VAR\";\n TAG_ID[TAG_ID[\"WBR\"] = 121] = \"WBR\";\n TAG_ID[TAG_ID[\"XMP\"] = 122] = \"XMP\";\n})(TAG_ID = TAG_ID || (TAG_ID = {}));\nconst TAG_NAME_TO_ID = new Map([\n [TAG_NAMES.A, TAG_ID.A],\n [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],\n [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],\n [TAG_NAMES.APPLET, TAG_ID.APPLET],\n [TAG_NAMES.AREA, TAG_ID.AREA],\n [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],\n [TAG_NAMES.ASIDE, TAG_ID.ASIDE],\n [TAG_NAMES.B, TAG_ID.B],\n [TAG_NAMES.BASE, TAG_ID.BASE],\n [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],\n [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],\n [TAG_NAMES.BIG, TAG_ID.BIG],\n [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],\n [TAG_NAMES.BODY, TAG_ID.BODY],\n [TAG_NAMES.BR, TAG_ID.BR],\n [TAG_NAMES.BUTTON, TAG_ID.BUTTON],\n [TAG_NAMES.CAPTION, TAG_ID.CAPTION],\n [TAG_NAMES.CENTER, TAG_ID.CENTER],\n [TAG_NAMES.CODE, TAG_ID.CODE],\n [TAG_NAMES.COL, TAG_ID.COL],\n [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],\n [TAG_NAMES.DD, TAG_ID.DD],\n [TAG_NAMES.DESC, TAG_ID.DESC],\n [TAG_NAMES.DETAILS, TAG_ID.DETAILS],\n [TAG_NAMES.DIALOG, TAG_ID.DIALOG],\n [TAG_NAMES.DIR, TAG_ID.DIR],\n [TAG_NAMES.DIV, TAG_ID.DIV],\n [TAG_NAMES.DL, TAG_ID.DL],\n [TAG_NAMES.DT, TAG_ID.DT],\n [TAG_NAMES.EM, TAG_ID.EM],\n [TAG_NAMES.EMBED, TAG_ID.EMBED],\n [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],\n [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],\n [TAG_NAMES.FIGURE, TAG_ID.FIGURE],\n [TAG_NAMES.FONT, TAG_ID.FONT],\n [TAG_NAMES.FOOTER, TAG_ID.FOOTER],\n [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],\n [TAG_NAMES.FORM, TAG_ID.FORM],\n [TAG_NAMES.FRAME, TAG_ID.FRAME],\n [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],\n [TAG_NAMES.H1, TAG_ID.H1],\n [TAG_NAMES.H2, TAG_ID.H2],\n [TAG_NAMES.H3, TAG_ID.H3],\n [TAG_NAMES.H4, TAG_ID.H4],\n [TAG_NAMES.H5, TAG_ID.H5],\n [TAG_NAMES.H6, TAG_ID.H6],\n [TAG_NAMES.HEAD, TAG_ID.HEAD],\n [TAG_NAMES.HEADER, TAG_ID.HEADER],\n [TAG_NAMES.HGROUP, TAG_ID.HGROUP],\n [TAG_NAMES.HR, TAG_ID.HR],\n [TAG_NAMES.HTML, TAG_ID.HTML],\n [TAG_NAMES.I, TAG_ID.I],\n [TAG_NAMES.IMG, TAG_ID.IMG],\n [TAG_NAMES.IMAGE, TAG_ID.IMAGE],\n [TAG_NAMES.INPUT, TAG_ID.INPUT],\n [TAG_NAMES.IFRAME, TAG_ID.IFRAME],\n [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],\n [TAG_NAMES.LABEL, TAG_ID.LABEL],\n [TAG_NAMES.LI, TAG_ID.LI],\n [TAG_NAMES.LINK, TAG_ID.LINK],\n [TAG_NAMES.LISTING, TAG_ID.LISTING],\n [TAG_NAMES.MAIN, TAG_ID.MAIN],\n [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],\n [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],\n [TAG_NAMES.MATH, TAG_ID.MATH],\n [TAG_NAMES.MENU, TAG_ID.MENU],\n [TAG_NAMES.META, TAG_ID.META],\n [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],\n [TAG_NAMES.MI, TAG_ID.MI],\n [TAG_NAMES.MO, TAG_ID.MO],\n [TAG_NAMES.MN, TAG_ID.MN],\n [TAG_NAMES.MS, TAG_ID.MS],\n [TAG_NAMES.MTEXT, TAG_ID.MTEXT],\n [TAG_NAMES.NAV, TAG_ID.NAV],\n [TAG_NAMES.NOBR, TAG_ID.NOBR],\n [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],\n [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],\n [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],\n [TAG_NAMES.OBJECT, TAG_ID.OBJECT],\n [TAG_NAMES.OL, TAG_ID.OL],\n [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],\n [TAG_NAMES.OPTION, TAG_ID.OPTION],\n [TAG_NAMES.P, TAG_ID.P],\n [TAG_NAMES.PARAM, TAG_ID.PARAM],\n [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],\n [TAG_NAMES.PRE, TAG_ID.PRE],\n [TAG_NAMES.RB, TAG_ID.RB],\n [TAG_NAMES.RP, TAG_ID.RP],\n [TAG_NAMES.RT, TAG_ID.RT],\n [TAG_NAMES.RTC, TAG_ID.RTC],\n [TAG_NAMES.RUBY, TAG_ID.RUBY],\n [TAG_NAMES.S, TAG_ID.S],\n [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],\n [TAG_NAMES.SECTION, TAG_ID.SECTION],\n [TAG_NAMES.SELECT, TAG_ID.SELECT],\n [TAG_NAMES.SOURCE, TAG_ID.SOURCE],\n [TAG_NAMES.SMALL, TAG_ID.SMALL],\n [TAG_NAMES.SPAN, TAG_ID.SPAN],\n [TAG_NAMES.STRIKE, TAG_ID.STRIKE],\n [TAG_NAMES.STRONG, TAG_ID.STRONG],\n [TAG_NAMES.STYLE, TAG_ID.STYLE],\n [TAG_NAMES.SUB, TAG_ID.SUB],\n [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],\n [TAG_NAMES.SUP, TAG_ID.SUP],\n [TAG_NAMES.TABLE, TAG_ID.TABLE],\n [TAG_NAMES.TBODY, TAG_ID.TBODY],\n [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],\n [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],\n [TAG_NAMES.TFOOT, TAG_ID.TFOOT],\n [TAG_NAMES.TD, TAG_ID.TD],\n [TAG_NAMES.TH, TAG_ID.TH],\n [TAG_NAMES.THEAD, TAG_ID.THEAD],\n [TAG_NAMES.TITLE, TAG_ID.TITLE],\n [TAG_NAMES.TR, TAG_ID.TR],\n [TAG_NAMES.TRACK, TAG_ID.TRACK],\n [TAG_NAMES.TT, TAG_ID.TT],\n [TAG_NAMES.U, TAG_ID.U],\n [TAG_NAMES.UL, TAG_ID.UL],\n [TAG_NAMES.SVG, TAG_ID.SVG],\n [TAG_NAMES.VAR, TAG_ID.VAR],\n [TAG_NAMES.WBR, TAG_ID.WBR],\n [TAG_NAMES.XMP, TAG_ID.XMP],\n]);\nexport function getTagID(tagName) {\n var _a;\n return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;\n}\nconst $ = TAG_ID;\nexport const SPECIAL_ELEMENTS = {\n [NS.HTML]: new Set([\n $.ADDRESS,\n $.APPLET,\n $.AREA,\n $.ARTICLE,\n $.ASIDE,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.BUTTON,\n $.CAPTION,\n $.CENTER,\n $.COL,\n $.COLGROUP,\n $.DD,\n $.DETAILS,\n $.DIR,\n $.DIV,\n $.DL,\n $.DT,\n $.EMBED,\n $.FIELDSET,\n $.FIGCAPTION,\n $.FIGURE,\n $.FOOTER,\n $.FORM,\n $.FRAME,\n $.FRAMESET,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HEADER,\n $.HGROUP,\n $.HR,\n $.HTML,\n $.IFRAME,\n $.IMG,\n $.INPUT,\n $.LI,\n $.LINK,\n $.LISTING,\n $.MAIN,\n $.MARQUEE,\n $.MENU,\n $.META,\n $.NAV,\n $.NOEMBED,\n $.NOFRAMES,\n $.NOSCRIPT,\n $.OBJECT,\n $.OL,\n $.P,\n $.PARAM,\n $.PLAINTEXT,\n $.PRE,\n $.SCRIPT,\n $.SECTION,\n $.SELECT,\n $.SOURCE,\n $.STYLE,\n $.SUMMARY,\n $.TABLE,\n $.TBODY,\n $.TD,\n $.TEMPLATE,\n $.TEXTAREA,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TITLE,\n $.TR,\n $.TRACK,\n $.UL,\n $.WBR,\n $.XMP,\n ]),\n [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]),\n [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]),\n [NS.XLINK]: new Set(),\n [NS.XML]: new Set(),\n [NS.XMLNS]: new Set(),\n};\nexport function isNumberedHeader(tn) {\n return tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6;\n}\nconst UNESCAPED_TEXT = new Set([\n TAG_NAMES.STYLE,\n TAG_NAMES.SCRIPT,\n TAG_NAMES.XMP,\n TAG_NAMES.IFRAME,\n TAG_NAMES.NOEMBED,\n TAG_NAMES.NOFRAMES,\n TAG_NAMES.PLAINTEXT,\n]);\nexport function hasUnescapedText(tn, scriptingEnabled) {\n return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);\n}\n//# sourceMappingURL=html.js.map", "import { Preprocessor } from './preprocessor.js';\nimport { CODE_POINTS as $, SEQUENCES as $$, REPLACEMENT_CHARACTER, isSurrogate, isUndefinedCodePoint, isControlCodePoint, } from '../common/unicode.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\nimport { htmlDecodeTree, BinTrieFlags, determineBranch } from 'entities/lib/decode.js';\nimport { ERR } from '../common/error-codes.js';\nimport { TAG_ID, getTagID } from '../common/html.js';\n//C1 Unicode control character reference replacements\nconst C1_CONTROLS_REFERENCE_REPLACEMENTS = new Map([\n [0x80, 8364],\n [0x82, 8218],\n [0x83, 402],\n [0x84, 8222],\n [0x85, 8230],\n [0x86, 8224],\n [0x87, 8225],\n [0x88, 710],\n [0x89, 8240],\n [0x8a, 352],\n [0x8b, 8249],\n [0x8c, 338],\n [0x8e, 381],\n [0x91, 8216],\n [0x92, 8217],\n [0x93, 8220],\n [0x94, 8221],\n [0x95, 8226],\n [0x96, 8211],\n [0x97, 8212],\n [0x98, 732],\n [0x99, 8482],\n [0x9a, 353],\n [0x9b, 8250],\n [0x9c, 339],\n [0x9e, 382],\n [0x9f, 376],\n]);\n//States\nvar State;\n(function (State) {\n State[State[\"DATA\"] = 0] = \"DATA\";\n State[State[\"RCDATA\"] = 1] = \"RCDATA\";\n State[State[\"RAWTEXT\"] = 2] = \"RAWTEXT\";\n State[State[\"SCRIPT_DATA\"] = 3] = \"SCRIPT_DATA\";\n State[State[\"PLAINTEXT\"] = 4] = \"PLAINTEXT\";\n State[State[\"TAG_OPEN\"] = 5] = \"TAG_OPEN\";\n State[State[\"END_TAG_OPEN\"] = 6] = \"END_TAG_OPEN\";\n State[State[\"TAG_NAME\"] = 7] = \"TAG_NAME\";\n State[State[\"RCDATA_LESS_THAN_SIGN\"] = 8] = \"RCDATA_LESS_THAN_SIGN\";\n State[State[\"RCDATA_END_TAG_OPEN\"] = 9] = \"RCDATA_END_TAG_OPEN\";\n State[State[\"RCDATA_END_TAG_NAME\"] = 10] = \"RCDATA_END_TAG_NAME\";\n State[State[\"RAWTEXT_LESS_THAN_SIGN\"] = 11] = \"RAWTEXT_LESS_THAN_SIGN\";\n State[State[\"RAWTEXT_END_TAG_OPEN\"] = 12] = \"RAWTEXT_END_TAG_OPEN\";\n State[State[\"RAWTEXT_END_TAG_NAME\"] = 13] = \"RAWTEXT_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_LESS_THAN_SIGN\"] = 14] = \"SCRIPT_DATA_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_END_TAG_OPEN\"] = 15] = \"SCRIPT_DATA_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_END_TAG_NAME\"] = 16] = \"SCRIPT_DATA_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_ESCAPE_START\"] = 17] = \"SCRIPT_DATA_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_ESCAPE_START_DASH\"] = 18] = \"SCRIPT_DATA_ESCAPE_START_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED\"] = 19] = \"SCRIPT_DATA_ESCAPED\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH\"] = 20] = \"SCRIPT_DATA_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH_DASH\"] = 21] = \"SCRIPT_DATA_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"] = 22] = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"] = 23] = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"] = 24] = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"] = 25] = \"SCRIPT_DATA_DOUBLE_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED\"] = 26] = \"SCRIPT_DATA_DOUBLE_ESCAPED\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"] = 27] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"] = 28] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"] = 29] = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"] = 30] = \"SCRIPT_DATA_DOUBLE_ESCAPE_END\";\n State[State[\"BEFORE_ATTRIBUTE_NAME\"] = 31] = \"BEFORE_ATTRIBUTE_NAME\";\n State[State[\"ATTRIBUTE_NAME\"] = 32] = \"ATTRIBUTE_NAME\";\n State[State[\"AFTER_ATTRIBUTE_NAME\"] = 33] = \"AFTER_ATTRIBUTE_NAME\";\n State[State[\"BEFORE_ATTRIBUTE_VALUE\"] = 34] = \"BEFORE_ATTRIBUTE_VALUE\";\n State[State[\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"] = 35] = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"] = 36] = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_UNQUOTED\"] = 37] = \"ATTRIBUTE_VALUE_UNQUOTED\";\n State[State[\"AFTER_ATTRIBUTE_VALUE_QUOTED\"] = 38] = \"AFTER_ATTRIBUTE_VALUE_QUOTED\";\n State[State[\"SELF_CLOSING_START_TAG\"] = 39] = \"SELF_CLOSING_START_TAG\";\n State[State[\"BOGUS_COMMENT\"] = 40] = \"BOGUS_COMMENT\";\n State[State[\"MARKUP_DECLARATION_OPEN\"] = 41] = \"MARKUP_DECLARATION_OPEN\";\n State[State[\"COMMENT_START\"] = 42] = \"COMMENT_START\";\n State[State[\"COMMENT_START_DASH\"] = 43] = \"COMMENT_START_DASH\";\n State[State[\"COMMENT\"] = 44] = \"COMMENT\";\n State[State[\"COMMENT_LESS_THAN_SIGN\"] = 45] = \"COMMENT_LESS_THAN_SIGN\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG\"] = 46] = \"COMMENT_LESS_THAN_SIGN_BANG\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"] = 47] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"] = 48] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\";\n State[State[\"COMMENT_END_DASH\"] = 49] = \"COMMENT_END_DASH\";\n State[State[\"COMMENT_END\"] = 50] = \"COMMENT_END\";\n State[State[\"COMMENT_END_BANG\"] = 51] = \"COMMENT_END_BANG\";\n State[State[\"DOCTYPE\"] = 52] = \"DOCTYPE\";\n State[State[\"BEFORE_DOCTYPE_NAME\"] = 53] = \"BEFORE_DOCTYPE_NAME\";\n State[State[\"DOCTYPE_NAME\"] = 54] = \"DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_NAME\"] = 55] = \"AFTER_DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"] = 56] = \"AFTER_DOCTYPE_PUBLIC_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"] = 57] = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"] = 58] = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"] = 59] = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"] = 60] = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"] = 61] = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"] = 62] = \"AFTER_DOCTYPE_SYSTEM_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"] = 63] = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"] = 64] = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"] = 65] = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"] = 66] = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"BOGUS_DOCTYPE\"] = 67] = \"BOGUS_DOCTYPE\";\n State[State[\"CDATA_SECTION\"] = 68] = \"CDATA_SECTION\";\n State[State[\"CDATA_SECTION_BRACKET\"] = 69] = \"CDATA_SECTION_BRACKET\";\n State[State[\"CDATA_SECTION_END\"] = 70] = \"CDATA_SECTION_END\";\n State[State[\"CHARACTER_REFERENCE\"] = 71] = \"CHARACTER_REFERENCE\";\n State[State[\"NAMED_CHARACTER_REFERENCE\"] = 72] = \"NAMED_CHARACTER_REFERENCE\";\n State[State[\"AMBIGUOUS_AMPERSAND\"] = 73] = \"AMBIGUOUS_AMPERSAND\";\n State[State[\"NUMERIC_CHARACTER_REFERENCE\"] = 74] = \"NUMERIC_CHARACTER_REFERENCE\";\n State[State[\"HEXADEMICAL_CHARACTER_REFERENCE_START\"] = 75] = \"HEXADEMICAL_CHARACTER_REFERENCE_START\";\n State[State[\"HEXADEMICAL_CHARACTER_REFERENCE\"] = 76] = \"HEXADEMICAL_CHARACTER_REFERENCE\";\n State[State[\"DECIMAL_CHARACTER_REFERENCE\"] = 77] = \"DECIMAL_CHARACTER_REFERENCE\";\n State[State[\"NUMERIC_CHARACTER_REFERENCE_END\"] = 78] = \"NUMERIC_CHARACTER_REFERENCE_END\";\n})(State || (State = {}));\n//Tokenizer initial states for different modes\nexport const TokenizerMode = {\n DATA: State.DATA,\n RCDATA: State.RCDATA,\n RAWTEXT: State.RAWTEXT,\n SCRIPT_DATA: State.SCRIPT_DATA,\n PLAINTEXT: State.PLAINTEXT,\n CDATA_SECTION: State.CDATA_SECTION,\n};\n//Utils\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isAsciiDigit(cp) {\n return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\nfunction isAsciiUpperHexDigit(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_F;\n}\nfunction isAsciiLowerHexDigit(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_F;\n}\nfunction isAsciiHexDigit(cp) {\n return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);\n}\nfunction toAsciiLower(cp) {\n return cp + 32;\n}\nfunction isWhitespace(cp) {\n return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\nfunction isEntityInAttributeInvalidEnd(nextCp) {\n return nextCp === $.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp);\n}\nfunction isScriptDataDoubleEscapeSequenceEnd(cp) {\n return isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN;\n}\n//Tokenizer\nexport class Tokenizer {\n constructor(options, handler) {\n this.options = options;\n this.handler = handler;\n this.paused = false;\n /** Ensures that the parsing loop isn't run multiple times at once. */\n this.inLoop = false;\n /**\n * Indicates that the current adjusted node exists, is not an element in the HTML namespace,\n * and that it is not an integration point for either MathML or HTML.\n *\n * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction}\n */\n this.inForeignNode = false;\n this.lastStartTagName = '';\n this.active = false;\n this.state = State.DATA;\n this.returnState = State.DATA;\n this.charRefCode = -1;\n this.consumedAfterSnapshot = -1;\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = { name: '', value: '' };\n this.preprocessor = new Preprocessor(handler);\n this.currentLocation = this.getCurrentLocation(-1);\n }\n //Errors\n _err(code) {\n var _a, _b;\n (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code));\n }\n // NOTE: `offset` may never run across line boundaries.\n getCurrentLocation(offset) {\n if (!this.options.sourceCodeLocationInfo) {\n return null;\n }\n return {\n startLine: this.preprocessor.line,\n startCol: this.preprocessor.col - offset,\n startOffset: this.preprocessor.offset - offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n };\n }\n _runParsingLoop() {\n if (this.inLoop)\n return;\n this.inLoop = true;\n while (this.active && !this.paused) {\n this.consumedAfterSnapshot = 0;\n const cp = this._consume();\n if (!this._ensureHibernation()) {\n this._callState(cp);\n }\n }\n this.inLoop = false;\n }\n //API\n pause() {\n this.paused = true;\n }\n resume(writeCallback) {\n if (!this.paused) {\n throw new Error('Parser was already resumed');\n }\n this.paused = false;\n // Necessary for synchronous resume.\n if (this.inLoop)\n return;\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n write(chunk, isLastChunk, writeCallback) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n this._runParsingLoop();\n }\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n this._unconsume(this.consumedAfterSnapshot);\n this.active = false;\n return true;\n }\n return false;\n }\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n _unconsume(count) {\n this.consumedAfterSnapshot -= count;\n this.preprocessor.retreat(count);\n }\n _reconsumeInState(state, cp) {\n this.state = state;\n this._callState(cp);\n }\n _advanceBy(count) {\n this.consumedAfterSnapshot += count;\n for (let i = 0; i < count; i++) {\n this.preprocessor.advance();\n }\n }\n _consumeSequenceIfMatch(pattern, caseSensitive) {\n if (this.preprocessor.startsWith(pattern, caseSensitive)) {\n // We will already have consumed one character before calling this method.\n this._advanceBy(pattern.length - 1);\n return true;\n }\n return false;\n }\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: TokenType.START_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(1),\n };\n }\n _createEndTagToken() {\n this.currentToken = {\n type: TokenType.END_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(2),\n };\n }\n _createCommentToken(offset) {\n this.currentToken = {\n type: TokenType.COMMENT,\n data: '',\n location: this.getCurrentLocation(offset),\n };\n }\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: TokenType.DOCTYPE,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null,\n location: this.currentLocation,\n };\n }\n _createCharacterToken(type, chars) {\n this.currentCharacterToken = {\n type,\n chars,\n location: this.currentLocation,\n };\n }\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: '',\n };\n this.currentLocation = this.getCurrentLocation(0);\n }\n _leaveAttrName() {\n var _a;\n var _b;\n const token = this.currentToken;\n if (getTokenAttr(token, this.currentAttr.name) === null) {\n token.attrs.push(this.currentAttr);\n if (token.location && this.currentLocation) {\n const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null)));\n attrLocations[this.currentAttr.name] = this.currentLocation;\n // Set end location\n this._leaveAttrValue();\n }\n }\n else {\n this._err(ERR.duplicateAttribute);\n }\n }\n _leaveAttrValue() {\n if (this.currentLocation) {\n this.currentLocation.endLine = this.preprocessor.line;\n this.currentLocation.endCol = this.preprocessor.col;\n this.currentLocation.endOffset = this.preprocessor.offset;\n }\n }\n //Token emission\n prepareToken(ct) {\n this._emitCurrentCharacterToken(ct.location);\n this.currentToken = null;\n if (ct.location) {\n ct.location.endLine = this.preprocessor.line;\n ct.location.endCol = this.preprocessor.col + 1;\n ct.location.endOffset = this.preprocessor.offset + 1;\n }\n this.currentLocation = this.getCurrentLocation(-1);\n }\n emitCurrentTagToken() {\n const ct = this.currentToken;\n this.prepareToken(ct);\n ct.tagID = getTagID(ct.tagName);\n if (ct.type === TokenType.START_TAG) {\n this.lastStartTagName = ct.tagName;\n this.handler.onStartTag(ct);\n }\n else {\n if (ct.attrs.length > 0) {\n this._err(ERR.endTagWithAttributes);\n }\n if (ct.selfClosing) {\n this._err(ERR.endTagWithTrailingSolidus);\n }\n this.handler.onEndTag(ct);\n }\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentComment(ct) {\n this.prepareToken(ct);\n this.handler.onComment(ct);\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentDoctype(ct) {\n this.prepareToken(ct);\n this.handler.onDoctype(ct);\n this.preprocessor.dropParsedChunk();\n }\n _emitCurrentCharacterToken(nextLocation) {\n if (this.currentCharacterToken) {\n //NOTE: if we have a pending character token, make it's end location equal to the\n //current token's start location.\n if (nextLocation && this.currentCharacterToken.location) {\n this.currentCharacterToken.location.endLine = nextLocation.startLine;\n this.currentCharacterToken.location.endCol = nextLocation.startCol;\n this.currentCharacterToken.location.endOffset = nextLocation.startOffset;\n }\n switch (this.currentCharacterToken.type) {\n case TokenType.CHARACTER: {\n this.handler.onCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.handler.onNullCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.handler.onWhitespaceCharacter(this.currentCharacterToken);\n break;\n }\n }\n this.currentCharacterToken = null;\n }\n }\n _emitEOFToken() {\n const location = this.getCurrentLocation(0);\n if (location) {\n location.endLine = location.startLine;\n location.endCol = location.startCol;\n location.endOffset = location.startOffset;\n }\n this._emitCurrentCharacterToken(location);\n this.handler.onEof({ type: TokenType.EOF, location });\n this.active = false;\n }\n //Characters emission\n //OPTIMIZATION: specification uses only one type of character tokens (one token per character).\n //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n //If we have a sequence of characters that belong to the same group, the parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)TokenType.NULL_CHARACTER - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken) {\n if (this.currentCharacterToken.type !== type) {\n this.currentLocation = this.getCurrentLocation(0);\n this._emitCurrentCharacterToken(this.currentLocation);\n this.preprocessor.dropParsedChunk();\n }\n else {\n this.currentCharacterToken.chars += ch;\n return;\n }\n }\n this._createCharacterToken(type, ch);\n }\n _emitCodePoint(cp) {\n const type = isWhitespace(cp)\n ? TokenType.WHITESPACE_CHARACTER\n : cp === $.NULL\n ? TokenType.NULL_CHARACTER\n : TokenType.CHARACTER;\n this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp));\n }\n //NOTE: used when we emit characters explicitly.\n //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);\n }\n // Character reference helpers\n _matchNamedCharacterReference(cp) {\n let result = null;\n let excess = 0;\n let withoutSemicolon = false;\n for (let i = 0, current = htmlDecodeTree[0]; i >= 0; cp = this._consume()) {\n i = determineBranch(htmlDecodeTree, current, i + 1, cp);\n if (i < 0)\n break;\n excess += 1;\n current = htmlDecodeTree[i];\n const masked = current & BinTrieFlags.VALUE_LENGTH;\n // If the branch is a value, store it and continue\n if (masked) {\n // The mask is the number of bytes of the value, including the current byte.\n const valueLength = (masked >> 14) - 1;\n // Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n // See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n if (cp !== $.SEMICOLON &&\n this._isCharacterReferenceInAttribute() &&\n isEntityInAttributeInvalidEnd(this.preprocessor.peek(1))) {\n //NOTE: we don't flush all consumed code points here, and instead switch back to the original state after\n //emitting an ampersand. This is fine, as alphanumeric characters won't be parsed differently in attributes.\n result = [$.AMPERSAND];\n // Skip over the value.\n i += valueLength;\n }\n else {\n // If this is a surrogate pair, consume the next two bytes.\n result =\n valueLength === 0\n ? [htmlDecodeTree[i] & ~BinTrieFlags.VALUE_LENGTH]\n : valueLength === 1\n ? [htmlDecodeTree[++i]]\n : [htmlDecodeTree[++i], htmlDecodeTree[++i]];\n excess = 0;\n withoutSemicolon = cp !== $.SEMICOLON;\n }\n if (valueLength === 0) {\n // If the value is zero-length, we're done.\n this._consume();\n break;\n }\n }\n }\n this._unconsume(excess);\n if (withoutSemicolon && !this.preprocessor.endOfChunkHit) {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n }\n // We want to emit the error above on the code point after the entity.\n // We always consume one code point too many in the loop, and we wait to\n // unconsume it until after the error is emitted.\n this._unconsume(1);\n return result;\n }\n _isCharacterReferenceInAttribute() {\n return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED);\n }\n _flushCodePointConsumedAsCharacterReference(cp) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n else {\n this._emitCodePoint(cp);\n }\n }\n // Calling states this way turns out to be much faster than any other approach.\n _callState(cp) {\n switch (this.state) {\n case State.DATA: {\n this._stateData(cp);\n break;\n }\n case State.RCDATA: {\n this._stateRcdata(cp);\n break;\n }\n case State.RAWTEXT: {\n this._stateRawtext(cp);\n break;\n }\n case State.SCRIPT_DATA: {\n this._stateScriptData(cp);\n break;\n }\n case State.PLAINTEXT: {\n this._statePlaintext(cp);\n break;\n }\n case State.TAG_OPEN: {\n this._stateTagOpen(cp);\n break;\n }\n case State.END_TAG_OPEN: {\n this._stateEndTagOpen(cp);\n break;\n }\n case State.TAG_NAME: {\n this._stateTagName(cp);\n break;\n }\n case State.RCDATA_LESS_THAN_SIGN: {\n this._stateRcdataLessThanSign(cp);\n break;\n }\n case State.RCDATA_END_TAG_OPEN: {\n this._stateRcdataEndTagOpen(cp);\n break;\n }\n case State.RCDATA_END_TAG_NAME: {\n this._stateRcdataEndTagName(cp);\n break;\n }\n case State.RAWTEXT_LESS_THAN_SIGN: {\n this._stateRawtextLessThanSign(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_OPEN: {\n this._stateRawtextEndTagOpen(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_NAME: {\n this._stateRawtextEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_LESS_THAN_SIGN: {\n this._stateScriptDataLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_OPEN: {\n this._stateScriptDataEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_NAME: {\n this._stateScriptDataEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START: {\n this._stateScriptDataEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START_DASH: {\n this._stateScriptDataEscapeStartDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED: {\n this._stateScriptDataEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH: {\n this._stateScriptDataEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH_DASH: {\n this._stateScriptDataEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {\n this._stateScriptDataEscapedEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {\n this._stateScriptDataEscapedEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: {\n this._stateScriptDataDoubleEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED: {\n this._stateScriptDataDoubleEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {\n this._stateScriptDataDoubleEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {\n this._stateScriptDataDoubleEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataDoubleEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: {\n this._stateScriptDataDoubleEscapeEnd(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_NAME: {\n this._stateBeforeAttributeName(cp);\n break;\n }\n case State.ATTRIBUTE_NAME: {\n this._stateAttributeName(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_NAME: {\n this._stateAfterAttributeName(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_VALUE: {\n this._stateBeforeAttributeValue(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {\n this._stateAttributeValueDoubleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: {\n this._stateAttributeValueSingleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_UNQUOTED: {\n this._stateAttributeValueUnquoted(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_VALUE_QUOTED: {\n this._stateAfterAttributeValueQuoted(cp);\n break;\n }\n case State.SELF_CLOSING_START_TAG: {\n this._stateSelfClosingStartTag(cp);\n break;\n }\n case State.BOGUS_COMMENT: {\n this._stateBogusComment(cp);\n break;\n }\n case State.MARKUP_DECLARATION_OPEN: {\n this._stateMarkupDeclarationOpen(cp);\n break;\n }\n case State.COMMENT_START: {\n this._stateCommentStart(cp);\n break;\n }\n case State.COMMENT_START_DASH: {\n this._stateCommentStartDash(cp);\n break;\n }\n case State.COMMENT: {\n this._stateComment(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN: {\n this._stateCommentLessThanSign(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG: {\n this._stateCommentLessThanSignBang(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: {\n this._stateCommentLessThanSignBangDash(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {\n this._stateCommentLessThanSignBangDashDash(cp);\n break;\n }\n case State.COMMENT_END_DASH: {\n this._stateCommentEndDash(cp);\n break;\n }\n case State.COMMENT_END: {\n this._stateCommentEnd(cp);\n break;\n }\n case State.COMMENT_END_BANG: {\n this._stateCommentEndBang(cp);\n break;\n }\n case State.DOCTYPE: {\n this._stateDoctype(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_NAME: {\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case State.DOCTYPE_NAME: {\n this._stateDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_NAME: {\n this._stateAfterDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: {\n this._stateAfterDoctypePublicKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateBeforeDoctypePublicIdentifier(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypePublicIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypePublicIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateAfterDoctypePublicIdentifier(cp);\n break;\n }\n case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {\n this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: {\n this._stateAfterDoctypeSystemKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateBeforeDoctypeSystemIdentifier(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypeSystemIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypeSystemIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateAfterDoctypeSystemIdentifier(cp);\n break;\n }\n case State.BOGUS_DOCTYPE: {\n this._stateBogusDoctype(cp);\n break;\n }\n case State.CDATA_SECTION: {\n this._stateCdataSection(cp);\n break;\n }\n case State.CDATA_SECTION_BRACKET: {\n this._stateCdataSectionBracket(cp);\n break;\n }\n case State.CDATA_SECTION_END: {\n this._stateCdataSectionEnd(cp);\n break;\n }\n case State.CHARACTER_REFERENCE: {\n this._stateCharacterReference(cp);\n break;\n }\n case State.NAMED_CHARACTER_REFERENCE: {\n this._stateNamedCharacterReference(cp);\n break;\n }\n case State.AMBIGUOUS_AMPERSAND: {\n this._stateAmbiguousAmpersand(cp);\n break;\n }\n case State.NUMERIC_CHARACTER_REFERENCE: {\n this._stateNumericCharacterReference(cp);\n break;\n }\n case State.HEXADEMICAL_CHARACTER_REFERENCE_START: {\n this._stateHexademicalCharacterReferenceStart(cp);\n break;\n }\n case State.HEXADEMICAL_CHARACTER_REFERENCE: {\n this._stateHexademicalCharacterReference(cp);\n break;\n }\n case State.DECIMAL_CHARACTER_REFERENCE: {\n this._stateDecimalCharacterReference(cp);\n break;\n }\n case State.NUMERIC_CHARACTER_REFERENCE_END: {\n this._stateNumericCharacterReferenceEnd(cp);\n break;\n }\n default: {\n throw new Error('Unknown state');\n }\n }\n }\n // State machine\n // Data state\n //------------------------------------------------------------------\n _stateData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.TAG_OPEN;\n break;\n }\n case $.AMPERSAND: {\n this.returnState = State.DATA;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RCDATA state\n //------------------------------------------------------------------\n _stateRcdata(cp) {\n switch (cp) {\n case $.AMPERSAND: {\n this.returnState = State.RCDATA;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.RCDATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RAWTEXT state\n //------------------------------------------------------------------\n _stateRawtext(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.RAWTEXT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data state\n //------------------------------------------------------------------\n _stateScriptData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // PLAINTEXT state\n //------------------------------------------------------------------\n _statePlaintext(cp) {\n switch (cp) {\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Tag open state\n //------------------------------------------------------------------\n _stateTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n this.state = State.MARKUP_DECLARATION_OPEN;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.END_TAG_OPEN;\n break;\n }\n case $.QUESTION_MARK: {\n this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken(1);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('<');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._emitChars('<');\n this.state = State.DATA;\n this._stateData(cp);\n }\n }\n }\n // End tag open state\n //------------------------------------------------------------------\n _stateEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingEndTagName);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;\n }\n else if (isAsciiLetter(cp)) {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;\n this._stateScriptDataDoubleEscapeStart(cp);\n }\n else {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;\n this._stateScriptDataEscapedEndTagName(cp);\n }\n else {\n this._emitChars('');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;\n this._emitChars('/');\n }\n else {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Script data double escape end state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeEnd(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Before attribute name state\n //------------------------------------------------------------------\n _stateBeforeAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr('=');\n this.state = State.ATTRIBUTE_NAME;\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Attribute name state\n //------------------------------------------------------------------\n _stateAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED:\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this._leaveAttrName();\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._leaveAttrName();\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN: {\n this._err(ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += String.fromCodePoint(cp);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.name += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After attribute name state\n //------------------------------------------------------------------\n _stateAfterAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.EQUALS_SIGN: {\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Before attribute value state\n //------------------------------------------------------------------\n _stateBeforeAttributeValue(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingAttributeValue);\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n default: {\n this.state = State.ATTRIBUTE_VALUE_UNQUOTED;\n this._stateAttributeValueUnquoted(cp);\n }\n }\n }\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueDoubleQuoted(cp) {\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this.returnState = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueSingleQuoted(cp) {\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this.returnState = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n _stateAttributeValueUnquoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.AMPERSAND: {\n this.returnState = State.ATTRIBUTE_VALUE_UNQUOTED;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN:\n case $.EQUALS_SIGN:\n case $.GRAVE_ACCENT: {\n this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += String.fromCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n _stateAfterAttributeValueQuoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this._leaveAttrValue();\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBetweenAttributes);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Self-closing start tag state\n //------------------------------------------------------------------\n _stateSelfClosingStartTag(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n const token = this.currentToken;\n token.selfClosing = true;\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedSolidusInTag);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Bogus comment state\n //------------------------------------------------------------------\n _stateBogusComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Markup declaration open state\n //------------------------------------------------------------------\n _stateMarkupDeclarationOpen(cp) {\n if (this._consumeSequenceIfMatch($$.DASH_DASH, true)) {\n this._createCommentToken($$.DASH_DASH.length + 1);\n this.state = State.COMMENT_START;\n }\n else if (this._consumeSequenceIfMatch($$.DOCTYPE, false)) {\n // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here.\n this.currentLocation = this.getCurrentLocation($$.DOCTYPE.length + 1);\n this.state = State.DOCTYPE;\n }\n else if (this._consumeSequenceIfMatch($$.CDATA_START, true)) {\n if (this.inForeignNode) {\n this.state = State.CDATA_SECTION;\n }\n else {\n this._err(ERR.cdataInHtmlContent);\n this._createCommentToken($$.CDATA_START.length + 1);\n this.currentToken.data = '[CDATA[';\n this.state = State.BOGUS_COMMENT;\n }\n }\n //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.incorrectlyOpenedComment);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n // Comment start state\n //------------------------------------------------------------------\n _stateCommentStart(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_START_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n const token = this.currentToken;\n this.emitCurrentComment(token);\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment start dash state\n //------------------------------------------------------------------\n _stateCommentStartDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment state\n //------------------------------------------------------------------\n _stateComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n this.state = State.COMMENT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Comment less-than sign state\n //------------------------------------------------------------------\n _stateCommentLessThanSign(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n token.data += '!';\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBang(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;\n }\n else {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;\n }\n else {\n this.state = State.COMMENT_END_DASH;\n this._stateCommentEndDash(cp);\n }\n }\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDashDash(cp) {\n if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n this._err(ERR.nestedComment);\n }\n this.state = State.COMMENT_END;\n this._stateCommentEnd(cp);\n }\n // Comment end dash state\n //------------------------------------------------------------------\n _stateCommentEndDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end state\n //------------------------------------------------------------------\n _stateCommentEnd(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.COMMENT_END_BANG;\n break;\n }\n case $.HYPHEN_MINUS: {\n token.data += '-';\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end bang state\n //------------------------------------------------------------------\n _stateCommentEndBang(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n token.data += '--!';\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.incorrectlyClosedComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--!';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // DOCTYPE state\n //------------------------------------------------------------------\n _stateDoctype(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBeforeDoctypeName);\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n }\n }\n }\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n _stateBeforeDoctypeName(cp) {\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));\n this.state = State.DOCTYPE_NAME;\n }\n else\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._createDoctypeToken(REPLACEMENT_CHARACTER);\n this.state = State.DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createDoctypeToken(String.fromCodePoint(cp));\n this.state = State.DOCTYPE_NAME;\n }\n }\n }\n // DOCTYPE name state\n //------------------------------------------------------------------\n _stateDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.AFTER_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.name += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After DOCTYPE name state\n //------------------------------------------------------------------\n _stateAfterDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n if (this._consumeSequenceIfMatch($$.PUBLIC, false)) {\n this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;\n }\n else if (this._consumeSequenceIfMatch($$.SYSTEM, false)) {\n this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;\n }\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n }\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n _stateBogusDoctype(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n break;\n }\n case $.EOF: {\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n // Do nothing\n }\n }\n // CDATA section state\n //------------------------------------------------------------------\n _stateCdataSection(cp) {\n switch (cp) {\n case $.RIGHT_SQUARE_BRACKET: {\n this.state = State.CDATA_SECTION_BRACKET;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInCdata);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // CDATA section bracket state\n //------------------------------------------------------------------\n _stateCdataSectionBracket(cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = State.CDATA_SECTION_END;\n }\n else {\n this._emitChars(']');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n // CDATA section end state\n //------------------------------------------------------------------\n _stateCdataSectionEnd(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n break;\n }\n case $.RIGHT_SQUARE_BRACKET: {\n this._emitChars(']');\n break;\n }\n default: {\n this._emitChars(']]');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n }\n // Character reference state\n //------------------------------------------------------------------\n _stateCharacterReference(cp) {\n if (cp === $.NUMBER_SIGN) {\n this.state = State.NUMERIC_CHARACTER_REFERENCE;\n }\n else if (isAsciiAlphaNumeric(cp)) {\n this.state = State.NAMED_CHARACTER_REFERENCE;\n this._stateNamedCharacterReference(cp);\n }\n else {\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this._reconsumeInState(this.returnState, cp);\n }\n }\n // Named character reference state\n //------------------------------------------------------------------\n _stateNamedCharacterReference(cp) {\n const matchResult = this._matchNamedCharacterReference(cp);\n //NOTE: Matching can be abrupted by hibernation. In that case, match\n //results are no longer valid and we will need to start over.\n if (this._ensureHibernation()) {\n // Stay in the state, try again.\n }\n else if (matchResult) {\n for (let i = 0; i < matchResult.length; i++) {\n this._flushCodePointConsumedAsCharacterReference(matchResult[i]);\n }\n this.state = this.returnState;\n }\n else {\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this.state = State.AMBIGUOUS_AMPERSAND;\n }\n }\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n _stateAmbiguousAmpersand(cp) {\n if (isAsciiAlphaNumeric(cp)) {\n this._flushCodePointConsumedAsCharacterReference(cp);\n }\n else {\n if (cp === $.SEMICOLON) {\n this._err(ERR.unknownNamedCharacterReference);\n }\n this._reconsumeInState(this.returnState, cp);\n }\n }\n // Numeric character reference state\n //------------------------------------------------------------------\n _stateNumericCharacterReference(cp) {\n this.charRefCode = 0;\n if (cp === $.LATIN_SMALL_X || cp === $.LATIN_CAPITAL_X) {\n this.state = State.HEXADEMICAL_CHARACTER_REFERENCE_START;\n }\n // Inlined decimal character reference start state\n else if (isAsciiDigit(cp)) {\n this.state = State.DECIMAL_CHARACTER_REFERENCE;\n this._stateDecimalCharacterReference(cp);\n }\n else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this._flushCodePointConsumedAsCharacterReference($.NUMBER_SIGN);\n this._reconsumeInState(this.returnState, cp);\n }\n }\n // Hexademical character reference start state\n //------------------------------------------------------------------\n _stateHexademicalCharacterReferenceStart(cp) {\n if (isAsciiHexDigit(cp)) {\n this.state = State.HEXADEMICAL_CHARACTER_REFERENCE;\n this._stateHexademicalCharacterReference(cp);\n }\n else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this._flushCodePointConsumedAsCharacterReference($.NUMBER_SIGN);\n this._unconsume(2);\n this.state = this.returnState;\n }\n }\n // Hexademical character reference state\n //------------------------------------------------------------------\n _stateHexademicalCharacterReference(cp) {\n if (isAsciiUpperHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x37;\n }\n else if (isAsciiLowerHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x57;\n }\n else if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x30;\n }\n else if (cp === $.SEMICOLON) {\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n }\n else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n this._stateNumericCharacterReferenceEnd(cp);\n }\n }\n // Decimal character reference state\n //------------------------------------------------------------------\n _stateDecimalCharacterReference(cp) {\n if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 10 + cp - 0x30;\n }\n else if (cp === $.SEMICOLON) {\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n }\n else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n this._stateNumericCharacterReferenceEnd(cp);\n }\n }\n // Numeric character reference end state\n //------------------------------------------------------------------\n _stateNumericCharacterReferenceEnd(cp) {\n if (this.charRefCode === $.NULL) {\n this._err(ERR.nullCharacterReference);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n }\n else if (this.charRefCode > 1114111) {\n this._err(ERR.characterReferenceOutsideUnicodeRange);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n }\n else if (isSurrogate(this.charRefCode)) {\n this._err(ERR.surrogateCharacterReference);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n }\n else if (isUndefinedCodePoint(this.charRefCode)) {\n this._err(ERR.noncharacterCharacterReference);\n }\n else if (isControlCodePoint(this.charRefCode) || this.charRefCode === $.CARRIAGE_RETURN) {\n this._err(ERR.controlCharacterReference);\n const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS.get(this.charRefCode);\n if (replacement !== undefined) {\n this.charRefCode = replacement;\n }\n }\n this._flushCodePointConsumedAsCharacterReference(this.charRefCode);\n this._reconsumeInState(this.returnState, cp);\n }\n}\n//# sourceMappingURL=index.js.map", "import { TAG_ID as $, NS, isNumberedHeader } from '../common/html.js';\n//Element utils\nconst IMPLICIT_END_TAG_REQUIRED = new Set([$.DD, $.DT, $.LI, $.OPTGROUP, $.OPTION, $.P, $.RB, $.RP, $.RT, $.RTC]);\nconst IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([\n ...IMPLICIT_END_TAG_REQUIRED,\n $.CAPTION,\n $.COLGROUP,\n $.TBODY,\n $.TD,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TR,\n]);\nconst SCOPING_ELEMENT_NS = new Map([\n [$.APPLET, NS.HTML],\n [$.CAPTION, NS.HTML],\n [$.HTML, NS.HTML],\n [$.MARQUEE, NS.HTML],\n [$.OBJECT, NS.HTML],\n [$.TABLE, NS.HTML],\n [$.TD, NS.HTML],\n [$.TEMPLATE, NS.HTML],\n [$.TH, NS.HTML],\n [$.ANNOTATION_XML, NS.MATHML],\n [$.MI, NS.MATHML],\n [$.MN, NS.MATHML],\n [$.MO, NS.MATHML],\n [$.MS, NS.MATHML],\n [$.MTEXT, NS.MATHML],\n [$.DESC, NS.SVG],\n [$.FOREIGN_OBJECT, NS.SVG],\n [$.TITLE, NS.SVG],\n]);\nconst NAMED_HEADERS = [$.H1, $.H2, $.H3, $.H4, $.H5, $.H6];\nconst TABLE_ROW_CONTEXT = [$.TR, $.TEMPLATE, $.HTML];\nconst TABLE_BODY_CONTEXT = [$.TBODY, $.TFOOT, $.THEAD, $.TEMPLATE, $.HTML];\nconst TABLE_CONTEXT = [$.TABLE, $.TEMPLATE, $.HTML];\nconst TABLE_CELLS = [$.TD, $.TH];\n//Stack of open elements\nexport class OpenElementStack {\n get currentTmplContentOrNode() {\n return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;\n }\n constructor(document, treeAdapter, handler) {\n this.treeAdapter = treeAdapter;\n this.handler = handler;\n this.items = [];\n this.tagIDs = [];\n this.stackTop = -1;\n this.tmplCount = 0;\n this.currentTagId = $.UNKNOWN;\n this.current = document;\n }\n //Index of element\n _indexOf(element) {\n return this.items.lastIndexOf(element, this.stackTop);\n }\n //Update current element\n _isInTemplate() {\n return this.currentTagId === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n }\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagId = this.tagIDs[this.stackTop];\n }\n //Mutations\n push(element, tagID) {\n this.stackTop++;\n this.items[this.stackTop] = element;\n this.current = element;\n this.tagIDs[this.stackTop] = tagID;\n this.currentTagId = tagID;\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n this.handler.onItemPush(element, tagID, true);\n }\n pop() {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, true);\n }\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n this.items[idx] = newElement;\n if (idx === this.stackTop) {\n this.current = newElement;\n }\n }\n insertAfter(referenceElement, newElement, newElementID) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n this.items.splice(insertionIdx, 0, newElement);\n this.tagIDs.splice(insertionIdx, 0, newElementID);\n this.stackTop++;\n if (insertionIdx === this.stackTop) {\n this._updateCurrentElement();\n }\n this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);\n }\n popUntilTagNamePopped(tagName) {\n let targetIdx = this.stackTop + 1;\n do {\n targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);\n } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML);\n this.shortenToLength(targetIdx < 0 ? 0 : targetIdx);\n }\n shortenToLength(idx) {\n while (this.stackTop >= idx) {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount -= 1;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, this.stackTop < idx);\n }\n }\n popUntilElementPopped(element) {\n const idx = this._indexOf(element);\n this.shortenToLength(idx < 0 ? 0 : idx);\n }\n popUntilPopped(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx < 0 ? 0 : idx);\n }\n popUntilNumberedHeaderPopped() {\n this.popUntilPopped(NAMED_HEADERS, NS.HTML);\n }\n popUntilTableCellPopped() {\n this.popUntilPopped(TABLE_CELLS, NS.HTML);\n }\n popAllUpToHtmlElement() {\n //NOTE: here we assume that the root element is always first in the open element stack, so\n //we perform this fast stack clean up.\n this.tmplCount = 0;\n this.shortenToLength(1);\n }\n _indexOfTagNames(tagNames, namespace) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (tagNames.includes(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {\n return i;\n }\n }\n return -1;\n }\n clearBackTo(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx + 1);\n }\n clearBackToTableContext() {\n this.clearBackTo(TABLE_CONTEXT, NS.HTML);\n }\n clearBackToTableBodyContext() {\n this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML);\n }\n clearBackToTableRowContext() {\n this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML);\n }\n remove(element) {\n const idx = this._indexOf(element);\n if (idx >= 0) {\n if (idx === this.stackTop) {\n this.pop();\n }\n else {\n this.items.splice(idx, 1);\n this.tagIDs.splice(idx, 1);\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(element, false);\n }\n }\n }\n //Search\n tryPeekProperlyNestedBodyElement() {\n //Properly nested element (should be second element in stack).\n return this.stackTop >= 1 && this.tagIDs[1] === $.BODY ? this.items[1] : null;\n }\n contains(element) {\n return this._indexOf(element) > -1;\n }\n getCommonAncestor(element) {\n const elementIdx = this._indexOf(element) - 1;\n return elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.tagIDs[0] === $.HTML;\n }\n //Element in scope\n hasInScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n if (SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasNumberedHeaderInScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (isNumberedHeader(tn) && ns === NS.HTML) {\n return true;\n }\n if (SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasInListItemScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n if (((tn === $.UL || tn === $.OL) && ns === NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasInButtonScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n if ((tn === $.BUTTON && ns === NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasInTableScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (ns !== NS.HTML) {\n continue;\n }\n if (tn === tagName) {\n return true;\n }\n if (tn === $.TABLE || tn === $.TEMPLATE || tn === $.HTML) {\n return false;\n }\n }\n return true;\n }\n hasTableBodyContextInTableScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (ns !== NS.HTML) {\n continue;\n }\n if (tn === $.TBODY || tn === $.THEAD || tn === $.TFOOT) {\n return true;\n }\n if (tn === $.TABLE || tn === $.HTML) {\n return false;\n }\n }\n return true;\n }\n hasInSelectScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (ns !== NS.HTML) {\n continue;\n }\n if (tn === tagName) {\n return true;\n }\n if (tn !== $.OPTION && tn !== $.OPTGROUP) {\n return false;\n }\n }\n return true;\n }\n //Implied end tags\n generateImpliedEndTags() {\n while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsThoroughly() {\n while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsWithExclusion(exclusionId) {\n while (this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n}\n//# sourceMappingURL=open-element-stack.js.map", "//Const\nconst NOAH_ARK_CAPACITY = 3;\nexport var EntryType;\n(function (EntryType) {\n EntryType[EntryType[\"Marker\"] = 0] = \"Marker\";\n EntryType[EntryType[\"Element\"] = 1] = \"Element\";\n})(EntryType = EntryType || (EntryType = {}));\nconst MARKER = { type: EntryType.Marker };\n//List of formatting elements\nexport class FormattingElementList {\n constructor(treeAdapter) {\n this.treeAdapter = treeAdapter;\n this.entries = [];\n this.bookmark = null;\n }\n //Noah Ark's condition\n //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n //lightweight heuristics without thorough attributes check.\n _getNoahArkConditionCandidates(newElement, neAttrs) {\n const candidates = [];\n const neAttrsLength = neAttrs.length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n for (let i = 0; i < this.entries.length; i++) {\n const entry = this.entries[i];\n if (entry.type === EntryType.Marker) {\n break;\n }\n const { element } = entry;\n if (this.treeAdapter.getTagName(element) === neTagName &&\n this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) {\n const elementAttrs = this.treeAdapter.getAttrList(element);\n if (elementAttrs.length === neAttrsLength) {\n candidates.push({ idx: i, attrs: elementAttrs });\n }\n }\n }\n return candidates;\n }\n _ensureNoahArkCondition(newElement) {\n if (this.entries.length < NOAH_ARK_CAPACITY)\n return;\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);\n if (candidates.length < NOAH_ARK_CAPACITY)\n return;\n //NOTE: build attrs map for the new element, so we can perform fast lookups\n const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value]));\n let validCandidates = 0;\n //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met\n for (let i = 0; i < candidates.length; i++) {\n const candidate = candidates[i];\n // We know that `candidate.attrs.length === neAttrs.length`\n if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) {\n validCandidates += 1;\n if (validCandidates >= NOAH_ARK_CAPACITY) {\n this.entries.splice(candidate.idx, 1);\n }\n }\n }\n }\n //Mutations\n insertMarker() {\n this.entries.unshift(MARKER);\n }\n pushElement(element, token) {\n this._ensureNoahArkCondition(element);\n this.entries.unshift({\n type: EntryType.Element,\n element,\n token,\n });\n }\n insertElementAfterBookmark(element, token) {\n const bookmarkIdx = this.entries.indexOf(this.bookmark);\n this.entries.splice(bookmarkIdx, 0, {\n type: EntryType.Element,\n element,\n token,\n });\n }\n removeEntry(entry) {\n const entryIndex = this.entries.indexOf(entry);\n if (entryIndex >= 0) {\n this.entries.splice(entryIndex, 1);\n }\n }\n /**\n * Clears the list of formatting elements up to the last marker.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker\n */\n clearToLastMarker() {\n const markerIdx = this.entries.indexOf(MARKER);\n if (markerIdx >= 0) {\n this.entries.splice(0, markerIdx + 1);\n }\n else {\n this.entries.length = 0;\n }\n }\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName);\n return entry && entry.type === EntryType.Element ? entry : null;\n }\n getElementEntry(element) {\n return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);\n }\n}\n//# sourceMappingURL=formatting-element-list.js.map", "import { DOCUMENT_MODE } from '../common/html.js';\nfunction createTextNode(value) {\n return {\n nodeName: '#text',\n value,\n parentNode: null,\n };\n}\nexport const defaultTreeAdapter = {\n //Node construction\n createDocument() {\n return {\n nodeName: '#document',\n mode: DOCUMENT_MODE.NO_QUIRKS,\n childNodes: [],\n };\n },\n createDocumentFragment() {\n return {\n nodeName: '#document-fragment',\n childNodes: [],\n };\n },\n createElement(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName,\n attrs,\n namespaceURI,\n childNodes: [],\n parentNode: null,\n };\n },\n createCommentNode(data) {\n return {\n nodeName: '#comment',\n data,\n parentNode: null,\n };\n },\n //Tree mutation\n appendChild(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n },\n insertBefore(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n },\n setTemplateContent(templateElement, contentElement) {\n templateElement.content = contentElement;\n },\n getTemplateContent(templateElement) {\n return templateElement.content;\n },\n setDocumentType(document, name, publicId, systemId) {\n const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType');\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n }\n else {\n const node = {\n nodeName: '#documentType',\n name,\n publicId,\n systemId,\n parentNode: null,\n };\n defaultTreeAdapter.appendChild(document, node);\n }\n },\n setDocumentMode(document, mode) {\n document.mode = mode;\n },\n getDocumentMode(document) {\n return document.mode;\n },\n detachNode(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n },\n insertText(parentNode, text) {\n if (parentNode.childNodes.length > 0) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n if (defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n return;\n }\n }\n defaultTreeAdapter.appendChild(parentNode, createTextNode(text));\n },\n insertTextBefore(parentNode, text, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n }\n else {\n defaultTreeAdapter.insertBefore(parentNode, createTextNode(text), referenceNode);\n }\n },\n adoptAttributes(recipient, attrs) {\n const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name));\n for (let j = 0; j < attrs.length; j++) {\n if (!recipientAttrsMap.has(attrs[j].name)) {\n recipient.attrs.push(attrs[j]);\n }\n }\n },\n //Tree traversing\n getFirstChild(node) {\n return node.childNodes[0];\n },\n getChildNodes(node) {\n return node.childNodes;\n },\n getParentNode(node) {\n return node.parentNode;\n },\n getAttrList(element) {\n return element.attrs;\n },\n //Node data\n getTagName(element) {\n return element.tagName;\n },\n getNamespaceURI(element) {\n return element.namespaceURI;\n },\n getTextNodeContent(textNode) {\n return textNode.value;\n },\n getCommentNodeContent(commentNode) {\n return commentNode.data;\n },\n getDocumentTypeNodeName(doctypeNode) {\n return doctypeNode.name;\n },\n getDocumentTypeNodePublicId(doctypeNode) {\n return doctypeNode.publicId;\n },\n getDocumentTypeNodeSystemId(doctypeNode) {\n return doctypeNode.systemId;\n },\n //Node types\n isTextNode(node) {\n return node.nodeName === '#text';\n },\n isCommentNode(node) {\n return node.nodeName === '#comment';\n },\n isDocumentTypeNode(node) {\n return node.nodeName === '#documentType';\n },\n isElementNode(node) {\n return Object.prototype.hasOwnProperty.call(node, 'tagName');\n },\n // Source code location\n setNodeSourceCodeLocation(node, location) {\n node.sourceCodeLocation = location;\n },\n getNodeSourceCodeLocation(node) {\n return node.sourceCodeLocation;\n },\n updateNodeSourceCodeLocation(node, endLocation) {\n node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };\n },\n};\n//# sourceMappingURL=default.js.map", "import { DOCUMENT_MODE } from './html.js';\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n '+//silmaril//dtd html pro v0r11 19970101//',\n '-//as//dtd html 3.0 aswedit + extensions//',\n '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n '-//ietf//dtd html 2.0 level 1//',\n '-//ietf//dtd html 2.0 level 2//',\n '-//ietf//dtd html 2.0 strict level 1//',\n '-//ietf//dtd html 2.0 strict level 2//',\n '-//ietf//dtd html 2.0 strict//',\n '-//ietf//dtd html 2.0//',\n '-//ietf//dtd html 2.1e//',\n '-//ietf//dtd html 3.0//',\n '-//ietf//dtd html 3.2 final//',\n '-//ietf//dtd html 3.2//',\n '-//ietf//dtd html 3//',\n '-//ietf//dtd html level 0//',\n '-//ietf//dtd html level 1//',\n '-//ietf//dtd html level 2//',\n '-//ietf//dtd html level 3//',\n '-//ietf//dtd html strict level 0//',\n '-//ietf//dtd html strict level 1//',\n '-//ietf//dtd html strict level 2//',\n '-//ietf//dtd html strict level 3//',\n '-//ietf//dtd html strict//',\n '-//ietf//dtd html//',\n '-//metrius//dtd metrius presentational//',\n '-//microsoft//dtd internet explorer 2.0 html strict//',\n '-//microsoft//dtd internet explorer 2.0 html//',\n '-//microsoft//dtd internet explorer 2.0 tables//',\n '-//microsoft//dtd internet explorer 3.0 html strict//',\n '-//microsoft//dtd internet explorer 3.0 html//',\n '-//microsoft//dtd internet explorer 3.0 tables//',\n '-//netscape comm. corp.//dtd html//',\n '-//netscape comm. corp.//dtd strict html//',\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n '-//sq//dtd html 2.0 hotmetal + extensions//',\n '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n '-//spyglass//dtd html 2.0 extended//',\n '-//sun microsystems corp.//dtd hotjava html//',\n '-//sun microsystems corp.//dtd hotjava strict html//',\n '-//w3c//dtd html 3 1995-03-24//',\n '-//w3c//dtd html 3.2 draft//',\n '-//w3c//dtd html 3.2 final//',\n '-//w3c//dtd html 3.2//',\n '-//w3c//dtd html 3.2s draft//',\n '-//w3c//dtd html 4.0 frameset//',\n '-//w3c//dtd html 4.0 transitional//',\n '-//w3c//dtd html experimental 19960712//',\n '-//w3c//dtd html experimental 970421//',\n '-//w3c//dtd w3 html//',\n '-//w3o//dtd w3 html 3.0//',\n '-//webtechs//dtd mozilla html 2.0//',\n '-//webtechs//dtd mozilla html//',\n];\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\nconst QUIRKS_MODE_PUBLIC_IDS = new Set([\n '-//w3o//dtd w3 html strict 3.0//en//',\n '-/w3c/dtd html 4.0 transitional/en',\n 'html',\n]);\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\n//Utils\nfunction hasPrefix(publicId, prefixes) {\n return prefixes.some((prefix) => publicId.startsWith(prefix));\n}\n//API\nexport function isConforming(token) {\n return (token.name === VALID_DOCTYPE_NAME &&\n token.publicId === null &&\n (token.systemId === null || token.systemId === VALID_SYSTEM_ID));\n}\nexport function getDocumentMode(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return DOCUMENT_MODE.QUIRKS;\n }\n const { systemId } = token;\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let { publicId } = token;\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n prefixes =\n systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n return DOCUMENT_MODE.NO_QUIRKS;\n}\n//# sourceMappingURL=doctype.js.map", "import { TAG_ID as $, NS, ATTRS, getTagID } from './html.js';\n//MIME types\nconst MIME_TYPES = {\n TEXT_HTML: 'text/html',\n APPLICATION_XML: 'application/xhtml+xml',\n};\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = new Map([\n 'attributeName',\n 'attributeType',\n 'baseFrequency',\n 'baseProfile',\n 'calcMode',\n 'clipPathUnits',\n 'diffuseConstant',\n 'edgeMode',\n 'filterUnits',\n 'glyphRef',\n 'gradientTransform',\n 'gradientUnits',\n 'kernelMatrix',\n 'kernelUnitLength',\n 'keyPoints',\n 'keySplines',\n 'keyTimes',\n 'lengthAdjust',\n 'limitingConeAngle',\n 'markerHeight',\n 'markerUnits',\n 'markerWidth',\n 'maskContentUnits',\n 'maskUnits',\n 'numOctaves',\n 'pathLength',\n 'patternContentUnits',\n 'patternTransform',\n 'patternUnits',\n 'pointsAtX',\n 'pointsAtY',\n 'pointsAtZ',\n 'preserveAlpha',\n 'preserveAspectRatio',\n 'primitiveUnits',\n 'refX',\n 'refY',\n 'repeatCount',\n 'repeatDur',\n 'requiredExtensions',\n 'requiredFeatures',\n 'specularConstant',\n 'specularExponent',\n 'spreadMethod',\n 'startOffset',\n 'stdDeviation',\n 'stitchTiles',\n 'surfaceScale',\n 'systemLanguage',\n 'tableValues',\n 'targetX',\n 'targetY',\n 'textLength',\n 'viewBox',\n 'viewTarget',\n 'xChannelSelector',\n 'yChannelSelector',\n 'zoomAndPan',\n].map((attr) => [attr.toLowerCase(), attr]));\nconst XML_ATTRS_ADJUSTMENT_MAP = new Map([\n ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK }],\n ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK }],\n ['xlink:href', { prefix: 'xlink', name: 'href', namespace: NS.XLINK }],\n ['xlink:role', { prefix: 'xlink', name: 'role', namespace: NS.XLINK }],\n ['xlink:show', { prefix: 'xlink', name: 'show', namespace: NS.XLINK }],\n ['xlink:title', { prefix: 'xlink', name: 'title', namespace: NS.XLINK }],\n ['xlink:type', { prefix: 'xlink', name: 'type', namespace: NS.XLINK }],\n ['xml:base', { prefix: 'xml', name: 'base', namespace: NS.XML }],\n ['xml:lang', { prefix: 'xml', name: 'lang', namespace: NS.XML }],\n ['xml:space', { prefix: 'xml', name: 'space', namespace: NS.XML }],\n ['xmlns', { prefix: '', name: 'xmlns', namespace: NS.XMLNS }],\n ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }],\n]);\n//SVG tag names adjustment map\nexport const SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'glyphRef',\n 'linearGradient',\n 'radialGradient',\n 'textPath',\n].map((tn) => [tn.toLowerCase(), tn]));\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = new Set([\n $.B,\n $.BIG,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.CENTER,\n $.CODE,\n $.DD,\n $.DIV,\n $.DL,\n $.DT,\n $.EM,\n $.EMBED,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HR,\n $.I,\n $.IMG,\n $.LI,\n $.LISTING,\n $.MENU,\n $.META,\n $.NOBR,\n $.OL,\n $.P,\n $.PRE,\n $.RUBY,\n $.S,\n $.SMALL,\n $.SPAN,\n $.STRONG,\n $.STRIKE,\n $.SUB,\n $.SUP,\n $.TABLE,\n $.TT,\n $.U,\n $.UL,\n $.VAR,\n]);\n//Check exit from foreign content\nexport function causesExit(startTagToken) {\n const tn = startTagToken.tagID;\n const isFontWithAttrs = tn === $.FONT &&\n startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE);\n return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);\n}\n//Token adjustments\nexport function adjustTokenMathMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n}\nexport function adjustTokenSVGAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrName != null) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n}\nexport function adjustTokenXMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrEntry) {\n token.attrs[i].prefix = adjustedAttrEntry.prefix;\n token.attrs[i].name = adjustedAttrEntry.name;\n token.attrs[i].namespace = adjustedAttrEntry.namespace;\n }\n }\n}\nexport function adjustTokenSVGTagName(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);\n if (adjustedTagName != null) {\n token.tagName = adjustedTagName;\n token.tagID = getTagID(token.tagName);\n }\n}\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n for (let i = 0; i < attrs.length; i++) {\n if (attrs[i].name === ATTRS.ENCODING) {\n const value = attrs[i].value.toLowerCase();\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\nexport function isIntegrationPoint(tn, ns, attrs, foreignNS) {\n return (((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||\n ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));\n}\n//# sourceMappingURL=foreign-content.js.map", "import { Tokenizer, TokenizerMode } from '../tokenizer/index.js';\nimport { OpenElementStack } from './open-element-stack.js';\nimport { FormattingElementList, EntryType } from './formatting-element-list.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\nimport * as doctype from '../common/doctype.js';\nimport * as foreignContent from '../common/foreign-content.js';\nimport { ERR } from '../common/error-codes.js';\nimport * as unicode from '../common/unicode.js';\nimport { TAG_ID as $, TAG_NAMES as TN, NS, ATTRS, SPECIAL_ELEMENTS, DOCUMENT_MODE, isNumberedHeader, getTagID, } from '../common/html.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n//Insertion modes\nvar InsertionMode;\n(function (InsertionMode) {\n InsertionMode[InsertionMode[\"INITIAL\"] = 0] = \"INITIAL\";\n InsertionMode[InsertionMode[\"BEFORE_HTML\"] = 1] = \"BEFORE_HTML\";\n InsertionMode[InsertionMode[\"BEFORE_HEAD\"] = 2] = \"BEFORE_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD\"] = 3] = \"IN_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD_NO_SCRIPT\"] = 4] = \"IN_HEAD_NO_SCRIPT\";\n InsertionMode[InsertionMode[\"AFTER_HEAD\"] = 5] = \"AFTER_HEAD\";\n InsertionMode[InsertionMode[\"IN_BODY\"] = 6] = \"IN_BODY\";\n InsertionMode[InsertionMode[\"TEXT\"] = 7] = \"TEXT\";\n InsertionMode[InsertionMode[\"IN_TABLE\"] = 8] = \"IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TABLE_TEXT\"] = 9] = \"IN_TABLE_TEXT\";\n InsertionMode[InsertionMode[\"IN_CAPTION\"] = 10] = \"IN_CAPTION\";\n InsertionMode[InsertionMode[\"IN_COLUMN_GROUP\"] = 11] = \"IN_COLUMN_GROUP\";\n InsertionMode[InsertionMode[\"IN_TABLE_BODY\"] = 12] = \"IN_TABLE_BODY\";\n InsertionMode[InsertionMode[\"IN_ROW\"] = 13] = \"IN_ROW\";\n InsertionMode[InsertionMode[\"IN_CELL\"] = 14] = \"IN_CELL\";\n InsertionMode[InsertionMode[\"IN_SELECT\"] = 15] = \"IN_SELECT\";\n InsertionMode[InsertionMode[\"IN_SELECT_IN_TABLE\"] = 16] = \"IN_SELECT_IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TEMPLATE\"] = 17] = \"IN_TEMPLATE\";\n InsertionMode[InsertionMode[\"AFTER_BODY\"] = 18] = \"AFTER_BODY\";\n InsertionMode[InsertionMode[\"IN_FRAMESET\"] = 19] = \"IN_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_FRAMESET\"] = 20] = \"AFTER_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_BODY\"] = 21] = \"AFTER_AFTER_BODY\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_FRAMESET\"] = 22] = \"AFTER_AFTER_FRAMESET\";\n})(InsertionMode || (InsertionMode = {}));\nconst BASE_LOC = {\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n};\nconst TABLE_STRUCTURE_TAGS = new Set([$.TABLE, $.TBODY, $.TFOOT, $.THEAD, $.TR]);\nconst defaultParserOptions = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n treeAdapter: defaultTreeAdapter,\n onParseError: null,\n};\n//Parser\nexport class Parser {\n constructor(options, document, fragmentContext = null, scriptHandler = null) {\n this.fragmentContext = fragmentContext;\n this.scriptHandler = scriptHandler;\n this.currentToken = null;\n this.stopped = false;\n this.insertionMode = InsertionMode.INITIAL;\n this.originalInsertionMode = InsertionMode.INITIAL;\n this.headElement = null;\n this.formElement = null;\n /** Indicates that the current node is not an element in the HTML namespace */\n this.currentNotInHTML = false;\n /**\n * The template insertion mode stack is maintained from the left.\n * Ie. the topmost element will always have index 0.\n */\n this.tmplInsertionModeStack = [];\n this.pendingCharacterTokens = [];\n this.hasNonWhitespacePendingCharacterToken = false;\n this.framesetOk = true;\n this.skipNextNewLine = false;\n this.fosterParentingEnabled = false;\n this.options = {\n ...defaultParserOptions,\n ...options,\n };\n this.treeAdapter = this.options.treeAdapter;\n this.onParseError = this.options.onParseError;\n // Always enable location info if we report parse errors.\n if (this.onParseError) {\n this.options.sourceCodeLocationInfo = true;\n }\n this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument();\n this.tokenizer = new Tokenizer(this.options, this);\n this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : $.UNKNOWN;\n this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);\n this.openElements = new OpenElementStack(this.document, this.treeAdapter, this);\n }\n // API\n static parse(html, options) {\n const parser = new this(options);\n parser.tokenizer.write(html, true);\n return parser.document;\n }\n static getFragmentParser(fragmentContext, options) {\n const opts = {\n ...defaultParserOptions,\n ...options,\n };\n //NOTE: use a